From b05bce73eb77e1cf8cd38336c09b0909e12030ea Mon Sep 17 00:00:00 2001
From: Caleb Crane <ccrane@suse.de>
Date: Tue, 26 Aug 2025 15:02:20 -0400
Subject: [PATCH] Update crate idna to v1.1.0

Signed-off-by: Caleb Crane <ccrane@suse.de>
---
 Cargo.lock                                    |   278 +-
 Cargo.toml                                    |     4 +
 vendor/displaydoc/.cargo-checksum.json        |     1 +
 vendor/displaydoc/CHANGELOG.md                |    58 +
 vendor/displaydoc/Cargo.lock                  |   404 +
 vendor/displaydoc/Cargo.toml                  |   115 +
 .../LICENSE-APACHE                            |     0
 vendor/displaydoc/LICENSE-MIT                 |    23 +
 vendor/displaydoc/README.md                   |   115 +
 vendor/displaydoc/README.tpl                  |    23 +
 vendor/displaydoc/examples/simple.rs          |    36 +
 vendor/displaydoc/src/attr.rs                 |   137 +
 vendor/displaydoc/src/expand.rs               |   409 +
 vendor/displaydoc/src/fmt.rs                  |   159 +
 vendor/displaydoc/src/lib.rs                  |   186 +
 vendor/displaydoc/tests/compile_tests.rs      |    29 +
 vendor/displaydoc/tests/happy.rs              |   152 +
 vendor/displaydoc/tests/no_std/enum_prefix.rs |    36 +
 .../tests/no_std/enum_prefix_missing.rs       |    35 +
 .../tests/no_std/enum_prefix_missing.stderr   |    22 +
 vendor/displaydoc/tests/no_std/multi_line.rs  |    37 +
 .../displaydoc/tests/no_std/multi_line.stderr |    22 +
 .../tests/no_std/multi_line_allow.rs          |    38 +
 vendor/displaydoc/tests/no_std/with.rs        |    32 +
 vendor/displaydoc/tests/no_std/without.rs     |    28 +
 vendor/displaydoc/tests/no_std/without.stderr |    22 +
 vendor/displaydoc/tests/num_in_field.rs       |    22 +
 vendor/displaydoc/tests/std/enum_prefix.rs    |    36 +
 .../tests/std/enum_prefix_missing.rs          |    35 +
 .../tests/std/enum_prefix_missing.stderr      |    22 +
 vendor/displaydoc/tests/std/multi_line.rs     |    37 +
 vendor/displaydoc/tests/std/multi_line.stderr |    22 +
 .../displaydoc/tests/std/multi_line_allow.rs  |    38 +
 vendor/displaydoc/tests/std/multiple.rs       |    38 +
 vendor/displaydoc/tests/std/without.rs        |    28 +
 vendor/displaydoc/tests/std/without.stderr    |    22 +
 vendor/displaydoc/tests/variantless.rs        |     6 +
 vendor/displaydoc/update-readme.sh            |     5 +
 vendor/icu_collections/.cargo-checksum.json   |     1 +
 vendor/icu_collections/Cargo.lock             |   856 +
 vendor/icu_collections/Cargo.toml             |   154 +
 vendor/icu_collections/LICENSE                |    46 +
 vendor/icu_collections/README.md              |    27 +
 .../icu_collections/benches/codepointtrie.rs  |   104 +
 vendor/icu_collections/benches/iai_cpt.rs     |    77 +
 vendor/icu_collections/benches/inv_list.rs    |    66 +
 .../icu_collections/benches/tries/gc_fast.rs  |  1128 +
 .../icu_collections/benches/tries/gc_small.rs |   865 +
 vendor/icu_collections/benches/tries/mod.rs   |     6 +
 .../examples/unicode_bmp_blocks_selector.rs   |    71 +
 vendor/icu_collections/src/char16trie/mod.rs  |    44 +
 vendor/icu_collections/src/char16trie/trie.rs |   490 +
 .../src/codepointinvlist/builder.rs           |   986 +
 .../src/codepointinvlist/conversions.rs       |   180 +
 .../src/codepointinvlist/cpinvlist.rs         |  1064 +
 .../src/codepointinvlist/mod.rs               |    82 +
 .../src/codepointinvlist/utils.rs             |   118 +
 .../src/codepointinvliststringlist/mod.rs     |   384 +
 .../src/codepointtrie/cptrie.rs               |  1345 +
 .../src/codepointtrie/error.rs                |    24 +
 .../src/codepointtrie/impl_const.rs           |    76 +
 .../icu_collections/src/codepointtrie/mod.rs  |    51 +
 .../src/codepointtrie/planes.rs               |   296 +
 .../src/codepointtrie/serde.rs                |    52 +
 .../icu_collections/src/codepointtrie/toml.rs |   124 +
 vendor/icu_collections/src/iterator_utils.rs  |   188 +
 vendor/icu_collections/src/lib.rs             |    44 +
 vendor/icu_collections/tests/char16trie.rs    |   304 +
 vendor/icu_collections/tests/cpt.rs           |   489 +
 .../tests/data/char16trie/empty.toml          |    11 +
 .../tests/data/char16trie/months.toml         |    19 +
 .../tests/data/char16trie/test_a.toml         |    11 +
 .../tests/data/char16trie/test_a_ab.toml      |    11 +
 .../tests/data/char16trie/test_branches.toml  |    15 +
 .../tests/data/char16trie/test_compact.toml   |    16 +
 .../data/char16trie/test_long_branch.toml     |    28 +
 .../data/char16trie/test_long_sequence.toml   |    32 +
 .../data/char16trie/test_shortest_branch.toml |    11 +
 .../tests/data/cpt/free-blocks.16.toml        |   113 +
 .../tests/data/cpt/free-blocks.32.toml        |   113 +
 .../tests/data/cpt/free-blocks.8.toml         |   113 +
 .../tests/data/cpt/free-blocks.small16.toml   |    53 +
 .../tests/data/cpt/grow-data.16.toml          |   117 +
 .../tests/data/cpt/grow-data.32.toml          |   113 +
 .../tests/data/cpt/grow-data.8.toml           |   113 +
 .../tests/data/cpt/grow-data.small16.toml     |    53 +
 .../tests/data/cpt/planes.toml                |   140 +
 .../tests/data/cpt/set-empty.16.toml          |   101 +
 .../tests/data/cpt/set-empty.32.toml          |   101 +
 .../tests/data/cpt/set-empty.8.toml           |   101 +
 .../tests/data/cpt/set-empty.small16.toml     |    41 +
 .../tests/data/cpt/set-single-value.16.toml   |   101 +
 .../tests/data/cpt/set-single-value.32.toml   |   101 +
 .../tests/data/cpt/set-single-value.8.toml    |   101 +
 .../data/cpt/set-single-value.small16.toml    |    41 +
 .../tests/data/cpt/set1.16.toml               |   138 +
 .../tests/data/cpt/set1.32.toml               |   138 +
 .../tests/data/cpt/set1.8.toml                |   138 +
 .../tests/data/cpt/set1.small16.toml          |    81 +
 .../tests/data/cpt/set2-overlap.16.toml       |   128 +
 .../tests/data/cpt/set2-overlap.32.toml       |   128 +
 .../tests/data/cpt/set2-overlap.small16.toml  |    73 +
 .../tests/data/cpt/set3-initial-9.16.toml     |   128 +
 .../tests/data/cpt/set3-initial-9.32.toml     |   128 +
 .../tests/data/cpt/set3-initial-9.8.toml      |   128 +
 .../data/cpt/set3-initial-9.small16.toml      |    72 +
 .../tests/data/cpt/short-all-same.16.toml     |   321 +
 .../tests/data/cpt/short-all-same.8.toml      |   385 +
 .../data/cpt/short-all-same.small16.toml      |   321 +
 .../tests/data/cpt/small0-in-fast.16.toml     |   116 +
 .../tests/data/cpt/small0-in-fast.32.toml     |   116 +
 .../tests/data/cpt/small0-in-fast.8.toml      |   116 +
 .../data/cpt/small0-in-fast.small16.toml      |    63 +
 vendor/icu_locale_core/.cargo-checksum.json   |     1 +
 vendor/icu_locale_core/Cargo.lock             |   742 +
 vendor/icu_locale_core/Cargo.toml             |   163 +
 vendor/icu_locale_core/LICENSE                |    46 +
 vendor/icu_locale_core/README.md              |    55 +
 .../benches/fixtures/langid.json              |    48 +
 .../benches/fixtures/locale.json              |    26 +
 .../icu_locale_core/benches/fixtures/mod.rs   |    28 +
 .../benches/fixtures/subtags.json             |    18 +
 .../icu_locale_core/benches/helpers/macros.rs |   110 +
 vendor/icu_locale_core/benches/helpers/mod.rs |     5 +
 vendor/icu_locale_core/benches/iai_langid.rs  |   125 +
 vendor/icu_locale_core/benches/langid.rs      |    92 +
 vendor/icu_locale_core/benches/locale.rs      |    86 +
 vendor/icu_locale_core/benches/subtags.rs     |    39 +
 .../examples/filter_langids.rs                |    42 +
 .../syntatically_canonicalize_locales.rs      |    29 +
 vendor/icu_locale_core/src/data.rs            |   440 +
 vendor/icu_locale_core/src/databake.rs        |    22 +
 vendor/icu_locale_core/src/extensions/mod.rs  |   397 +
 .../src/extensions/other/mod.rs               |   264 +
 .../src/extensions/private/mod.rs             |   250 +
 .../src/extensions/private/other.rs           |    47 +
 .../src/extensions/transform/fields.rs        |   220 +
 .../src/extensions/transform/key.rs           |    32 +
 .../src/extensions/transform/mod.rs           |   331 +
 .../src/extensions/transform/value.rs         |   160 +
 .../src/extensions/unicode/attribute.rs       |    34 +
 .../src/extensions/unicode/attributes.rs      |   177 +
 .../src/extensions/unicode/key.rs             |    32 +
 .../src/extensions/unicode/keywords.rs        |   418 +
 .../src/extensions/unicode/mod.rs             |   269 +
 .../src/extensions/unicode/subdivision.rs     |   181 +
 .../src/extensions/unicode/value.rs           |   354 +
 vendor/icu_locale_core/src/helpers.rs         |   425 +
 vendor/icu_locale_core/src/langid.rs          |   662 +
 vendor/icu_locale_core/src/lib.rs             |    96 +
 vendor/icu_locale_core/src/locale.rs          |   605 +
 vendor/icu_locale_core/src/macros.rs          |   187 +
 vendor/icu_locale_core/src/parser/errors.rs   |    69 +
 vendor/icu_locale_core/src/parser/langid.rs   |   273 +
 vendor/icu_locale_core/src/parser/locale.rs   |    42 +
 vendor/icu_locale_core/src/parser/mod.rs      |   185 +
 .../src/preferences/extensions/mod.rs         |    23 +
 .../preferences/extensions/unicode/errors.rs  |    15 +
 .../extensions/unicode/keywords/calendar.rs   |    69 +
 .../extensions/unicode/keywords/collation.rs  |    79 +
 .../extensions/unicode/keywords/currency.rs   |    31 +
 .../unicode/keywords/currency_format.rs       |    20 +
 .../unicode/keywords/dictionary_break.rs      |    39 +
 .../extensions/unicode/keywords/emoji.rs      |    25 +
 .../extensions/unicode/keywords/first_day.rs  |    31 +
 .../extensions/unicode/keywords/hour_cycle.rs |    20 +
 .../extensions/unicode/keywords/line_break.rs |    23 +
 .../unicode/keywords/line_break_word.rs       |    25 +
 .../unicode/keywords/measurement_system.rs    |    22 +
 .../keywords/measurement_unit_override.rs     |    20 +
 .../extensions/unicode/keywords/mod.rs        |    44 +
 .../unicode/keywords/numbering_system.rs      |    26 +
 .../unicode/keywords/region_override.rs       |    63 +
 .../unicode/keywords/regional_subdivision.rs  |    52 +
 .../unicode/keywords/sentence_supression.rs   |    21 +
 .../extensions/unicode/keywords/timezone.rs   |    26 +
 .../extensions/unicode/keywords/variant.rs    |    16 +
 .../extensions/unicode/macros/enum_keyword.rs |   320 +
 .../extensions/unicode/macros/mod.rs          |    13 +
 .../unicode/macros/struct_keyword.rs          |   124 +
 .../src/preferences/extensions/unicode/mod.rs |    17 +
 .../icu_locale_core/src/preferences/locale.rs |   180 +
 vendor/icu_locale_core/src/preferences/mod.rs |   612 +
 vendor/icu_locale_core/src/serde.rs           |   134 +
 .../icu_locale_core/src/shortvec/litemap.rs   |   198 +
 vendor/icu_locale_core/src/shortvec/mod.rs    |   370 +
 .../icu_locale_core/src/subtags/language.rs   |    59 +
 vendor/icu_locale_core/src/subtags/mod.rs     |   163 +
 vendor/icu_locale_core/src/subtags/region.rs  |    60 +
 vendor/icu_locale_core/src/subtags/script.rs  |    41 +
 vendor/icu_locale_core/src/subtags/variant.rs |    35 +
 .../icu_locale_core/src/subtags/variants.rs   |   136 +
 vendor/icu_locale_core/src/zerovec.rs         |   131 +
 .../tests/fixtures/canonicalize.json          |    68 +
 .../tests/fixtures/invalid-extensions.json    |   162 +
 .../tests/fixtures/invalid.json               |   142 +
 .../tests/fixtures/langid.json                |   167 +
 .../tests/fixtures/locale.json                |   298 +
 vendor/icu_locale_core/tests/fixtures/mod.rs  |   254 +
 vendor/icu_locale_core/tests/langid.rs        |   156 +
 vendor/icu_locale_core/tests/locale.rs        |   119 +
 vendor/icu_normalizer/.cargo-checksum.json    |     1 +
 vendor/icu_normalizer/Cargo.toml              |   201 +
 vendor/icu_normalizer/LICENSE                 |    46 +
 vendor/icu_normalizer/README.md               |    48 +
 vendor/icu_normalizer/benches/bench.rs        |    24 +
 .../benches/canonical_composition.rs          |   188 +
 .../benches/canonical_decomposition.rs        |   162 +
 .../benches/composing_normalizer_nfc.rs       |   230 +
 .../benches/composing_normalizer_nfkc.rs      |   211 +
 vendor/icu_normalizer/benches/data/README.md  |    25 +
 .../benches/data/TestNames_Japanese_h.txt     |    54 +
 .../benches/data/TestNames_Japanese_k.txt     |    54 +
 .../benches/data/TestNames_Korean.txt         |    54 +
 .../benches/data/TestNames_Latin.txt          |    54 +
 .../benches/data/TestNames_Thai.txt           |    54 +
 .../benches/data/TestRandomWordsUDHR_ar.txt   |    54 +
 .../benches/data/TestRandomWordsUDHR_de.txt   |    54 +
 .../benches/data/TestRandomWordsUDHR_el.txt   |    54 +
 .../benches/data/TestRandomWordsUDHR_es.txt   |    54 +
 .../benches/data/TestRandomWordsUDHR_fr.txt   |    54 +
 .../benches/data/TestRandomWordsUDHR_he.txt   |    54 +
 .../benches/data/TestRandomWordsUDHR_pl.txt   |    54 +
 .../benches/data/TestRandomWordsUDHR_ru.txt   |    54 +
 .../benches/data/TestRandomWordsUDHR_th.txt   |    54 +
 .../benches/data/TestRandomWordsUDHR_tr.txt   |    54 +
 vendor/icu_normalizer/benches/data/wotw.txt   |    58 +
 .../benches/decomposing_normalizer_nfd.rs     |   213 +
 .../benches/decomposing_normalizer_nfkd.rs    |   211 +
 vendor/icu_normalizer/src/lib.rs              |  2854 ++
 vendor/icu_normalizer/src/properties.rs       |   663 +
 vendor/icu_normalizer/src/provider.rs         |   216 +
 vendor/icu_normalizer/src/uts46.rs            |   177 +
 .../tests/data/NormalizationTest.txt          |     4 +
 vendor/icu_normalizer/tests/data/README.md    |     2 +
 vendor/icu_normalizer/tests/tests.rs          |  2083 +
 .../icu_normalizer_data/.cargo-checksum.json  |     1 +
 vendor/icu_normalizer_data/Cargo.toml         |    60 +
 vendor/icu_normalizer_data/LICENSE            |    46 +
 vendor/icu_normalizer_data/README.md          |    14 +
 vendor/icu_normalizer_data/build.rs           |    11 +
 vendor/icu_normalizer_data/data/mod.rs        |    46 +
 .../data/normalizer_nfc_v1.rs.data            |    75 +
 .../data/normalizer_nfd_data_v1.rs.data       |    75 +
 .../data/normalizer_nfd_supplement_v1.rs.data |    75 +
 .../data/normalizer_nfd_tables_v1.rs.data     |    75 +
 .../data/normalizer_nfkd_data_v1.rs.data      |    75 +
 .../data/normalizer_nfkd_tables_v1.rs.data    |    75 +
 .../data/normalizer_uts46_data_v1.rs.data     |    75 +
 vendor/icu_normalizer_data/src/lib.rs         |    17 +
 vendor/icu_properties/.cargo-checksum.json    |     1 +
 vendor/icu_properties/Cargo.toml              |   143 +
 vendor/icu_properties/LICENSE                 |    46 +
 vendor/icu_properties/README.md               |    56 +
 vendor/icu_properties/src/bidi.rs             |   153 +
 vendor/icu_properties/src/code_point_map.rs   |   389 +
 vendor/icu_properties/src/code_point_set.rs   |   390 +
 vendor/icu_properties/src/emoji.rs            |   171 +
 vendor/icu_properties/src/lib.rs              |   100 +
 vendor/icu_properties/src/names.rs            |   907 +
 vendor/icu_properties/src/props.rs            |  3277 ++
 vendor/icu_properties/src/provider.rs         |  1113 +
 vendor/icu_properties/src/provider/names.rs   |   357 +
 vendor/icu_properties/src/runtime.rs          |   572 +
 vendor/icu_properties/src/script.rs           |   713 +
 vendor/icu_properties/src/trievalue.rs        |   313 +
 .../icu_properties_data/.cargo-checksum.json  |     1 +
 vendor/icu_properties_data/Cargo.toml         |    60 +
 vendor/icu_properties_data/LICENSE            |    46 +
 vendor/icu_properties_data/README.md          |    14 +
 vendor/icu_properties_data/build.rs           |    11 +
 vendor/icu_properties_data/data/mod.rs        |   281 +
 .../data/property_binary_alnum_v1.rs.data     |    83 +
 .../property_binary_alphabetic_v1.rs.data     |    83 +
 ...property_binary_ascii_hex_digit_v1.rs.data |    83 +
 .../property_binary_basic_emoji_v1.rs.data    |    86 +
 .../property_binary_bidi_control_v1.rs.data   |    83 +
 .../property_binary_bidi_mirrored_v1.rs.data  |    83 +
 .../data/property_binary_blank_v1.rs.data     |    83 +
 .../property_binary_case_ignorable_v1.rs.data |    83 +
 .../property_binary_case_sensitive_v1.rs.data |    83 +
 .../data/property_binary_cased_v1.rs.data     |    83 +
 ..._binary_changes_when_casefolded_v1.rs.data |    83 +
 ..._binary_changes_when_casemapped_v1.rs.data |    83 +
 ..._binary_changes_when_lowercased_v1.rs.data |    83 +
 ...ry_changes_when_nfkc_casefolded_v1.rs.data |    83 +
 ..._binary_changes_when_titlecased_v1.rs.data |    83 +
 ..._binary_changes_when_uppercased_v1.rs.data |    83 +
 .../data/property_binary_dash_v1.rs.data      |    83 +
 ...ry_default_ignorable_code_point_v1.rs.data |    83 +
 .../property_binary_deprecated_v1.rs.data     |    83 +
 .../data/property_binary_diacritic_v1.rs.data |    83 +
 ...property_binary_emoji_component_v1.rs.data |    83 +
 ...erty_binary_emoji_modifier_base_v1.rs.data |    83 +
 .../property_binary_emoji_modifier_v1.rs.data |    83 +
 ...perty_binary_emoji_presentation_v1.rs.data |    83 +
 .../data/property_binary_emoji_v1.rs.data     |    83 +
 ...ty_binary_extended_pictographic_v1.rs.data |    83 +
 .../data/property_binary_extender_v1.rs.data  |    83 +
 ...nary_full_composition_exclusion_v1.rs.data |    83 +
 .../data/property_binary_graph_v1.rs.data     |    83 +
 .../property_binary_grapheme_base_v1.rs.data  |    83 +
 ...property_binary_grapheme_extend_v1.rs.data |    83 +
 .../property_binary_grapheme_link_v1.rs.data  |    83 +
 .../data/property_binary_hex_digit_v1.rs.data |    83 +
 .../data/property_binary_hyphen_v1.rs.data    |    83 +
 .../property_binary_id_continue_v1.rs.data    |    83 +
 .../data/property_binary_id_start_v1.rs.data  |    83 +
 .../property_binary_ideographic_v1.rs.data    |    83 +
 ...erty_binary_ids_binary_operator_v1.rs.data |    83 +
 ...rty_binary_ids_trinary_operator_v1.rs.data |    83 +
 .../property_binary_join_control_v1.rs.data   |    83 +
 ..._binary_logical_order_exception_v1.rs.data |    83 +
 .../data/property_binary_lowercase_v1.rs.data |    83 +
 .../data/property_binary_math_v1.rs.data      |    83 +
 .../data/property_binary_nfc_inert_v1.rs.data |    83 +
 .../data/property_binary_nfd_inert_v1.rs.data |    83 +
 .../property_binary_nfkc_inert_v1.rs.data     |    83 +
 .../property_binary_nfkd_inert_v1.rs.data     |    83 +
 ..._binary_noncharacter_code_point_v1.rs.data |    83 +
 .../property_binary_pattern_syntax_v1.rs.data |    83 +
 ...erty_binary_pattern_white_space_v1.rs.data |    83 +
 ...ry_prepended_concatenation_mark_v1.rs.data |    83 +
 .../data/property_binary_print_v1.rs.data     |    83 +
 .../property_binary_quotation_mark_v1.rs.data |    83 +
 .../data/property_binary_radical_v1.rs.data   |    83 +
 ...perty_binary_regional_indicator_v1.rs.data |    83 +
 ...property_binary_segment_starter_v1.rs.data |    83 +
 ...operty_binary_sentence_terminal_v1.rs.data |    83 +
 .../property_binary_soft_dotted_v1.rs.data    |    83 +
 ...rty_binary_terminal_punctuation_v1.rs.data |    83 +
 ...operty_binary_unified_ideograph_v1.rs.data |    83 +
 .../data/property_binary_uppercase_v1.rs.data |    83 +
 ...perty_binary_variation_selector_v1.rs.data |    83 +
 .../property_binary_white_space_v1.rs.data    |    83 +
 .../data/property_binary_xdigit_v1.rs.data    |    83 +
 .../property_binary_xid_continue_v1.rs.data   |    83 +
 .../data/property_binary_xid_start_v1.rs.data |    83 +
 .../data/property_enum_bidi_class_v1.rs.data  |    80 +
 ...perty_enum_bidi_mirroring_glyph_v1.rs.data |    80 +
 ..._enum_canonical_combining_class_v1.rs.data |    80 +
 .../property_enum_east_asian_width_v1.rs.data |    80 +
 .../property_enum_general_category_v1.rs.data |    80 +
 ...rty_enum_grapheme_cluster_break_v1.rs.data |    80 +
 ...perty_enum_hangul_syllable_type_v1.rs.data |    80 +
 ...perty_enum_indic_conjunct_break_v1.rs.data |    80 +
 ...ty_enum_indic_syllabic_category_v1.rs.data |    80 +
 .../property_enum_joining_type_v1.rs.data     |    80 +
 .../data/property_enum_line_break_v1.rs.data  |    80 +
 .../data/property_enum_script_v1.rs.data      |    80 +
 .../property_enum_sentence_break_v1.rs.data   |    80 +
 ...perty_enum_vertical_orientation_v1.rs.data |    80 +
 .../data/property_enum_word_break_v1.rs.data  |    80 +
 .../property_name_long_bidi_class_v1.rs.data  |    80 +
 ..._long_canonical_combining_class_v1.rs.data |    85 +
 ...erty_name_long_east_asian_width_v1.rs.data |    80 +
 ...erty_name_long_general_category_v1.rs.data |    80 +
 ...ame_long_grapheme_cluster_break_v1.rs.data |    80 +
 ..._name_long_hangul_syllable_type_v1.rs.data |    80 +
 ...me_long_indic_syllabic_category_v1.rs.data |    80 +
 ...property_name_long_joining_type_v1.rs.data |    80 +
 .../property_name_long_line_break_v1.rs.data  |    80 +
 .../data/property_name_long_script_v1.rs.data |    80 +
 ...operty_name_long_sentence_break_v1.rs.data |    80 +
 ..._name_long_vertical_orientation_v1.rs.data |    80 +
 .../property_name_long_word_break_v1.rs.data  |    80 +
 .../property_name_parse_bidi_class_v1.rs.data |    81 +
 ...parse_canonical_combining_class_v1.rs.data |    81 +
 ...rty_name_parse_east_asian_width_v1.rs.data |    81 +
 ...ame_parse_general_category_mask_v1.rs.data |    81 +
 ...rty_name_parse_general_category_v1.rs.data |    81 +
 ...me_parse_grapheme_cluster_break_v1.rs.data |    81 +
 ...name_parse_hangul_syllable_type_v1.rs.data |    81 +
 ...e_parse_indic_syllabic_category_v1.rs.data |    81 +
 ...roperty_name_parse_joining_type_v1.rs.data |    81 +
 .../property_name_parse_line_break_v1.rs.data |    81 +
 .../property_name_parse_script_v1.rs.data     |    81 +
 ...perty_name_parse_sentence_break_v1.rs.data |    81 +
 ...name_parse_vertical_orientation_v1.rs.data |    81 +
 .../property_name_parse_word_break_v1.rs.data |    81 +
 .../property_name_short_bidi_class_v1.rs.data |    80 +
 ...short_canonical_combining_class_v1.rs.data |    85 +
 ...rty_name_short_east_asian_width_v1.rs.data |    80 +
 ...rty_name_short_general_category_v1.rs.data |    80 +
 ...me_short_grapheme_cluster_break_v1.rs.data |    80 +
 ...name_short_hangul_syllable_type_v1.rs.data |    80 +
 ...e_short_indic_syllabic_category_v1.rs.data |    80 +
 ...roperty_name_short_joining_type_v1.rs.data |    80 +
 .../property_name_short_line_break_v1.rs.data |    80 +
 .../property_name_short_script_v1.rs.data     |    80 +
 ...perty_name_short_sentence_break_v1.rs.data |    80 +
 ...name_short_vertical_orientation_v1.rs.data |    80 +
 .../property_name_short_word_break_v1.rs.data |    80 +
 ...property_script_with_extensions_v1.rs.data |    80 +
 vendor/icu_properties_data/src/lib.rs         |    17 +
 vendor/icu_provider/.cargo-checksum.json      |     1 +
 vendor/icu_provider/Cargo.toml                |   184 +
 vendor/icu_provider/LICENSE                   |    46 +
 vendor/icu_provider/README.md                 |    84 +
 .../icu_provider/benches/data_locale_bench.rs |    69 +
 vendor/icu_provider/src/baked.rs              |    34 +
 vendor/icu_provider/src/baked/zerotrie.rs     |   172 +
 vendor/icu_provider/src/buf.rs                |   133 +
 vendor/icu_provider/src/buf/serde.rs          |   246 +
 vendor/icu_provider/src/constructors.rs       |   226 +
 vendor/icu_provider/src/data_provider.rs      |   635 +
 vendor/icu_provider/src/dynutil.rs            |   184 +
 vendor/icu_provider/src/error.rs              |   281 +
 vendor/icu_provider/src/export/mod.rs         |   213 +
 vendor/icu_provider/src/export/payload.rs     |   335 +
 vendor/icu_provider/src/fallback.rs           |   123 +
 vendor/icu_provider/src/hello_world.rs        |   402 +
 vendor/icu_provider/src/lib.rs                |   228 +
 vendor/icu_provider/src/marker.rs             |   661 +
 vendor/icu_provider/src/request.rs            |   368 +
 vendor/icu_provider/src/response.rs           |  1108 +
 .../icu_provider/src/serde_borrow_de_utils.rs |    82 +
 vendor/icu_provider/src/varule_traits.rs      |   123 +
 vendor/idna/.cargo-checksum.json              |     2 +-
 vendor/idna/Cargo.toml                        |    58 +-
 vendor/idna/LICENSE-MIT                       |     2 +-
 vendor/idna/README.md                         |    46 +
 vendor/idna/benches/all.rs                    |    63 +
 vendor/idna/src/IdnaMappingTable.txt          |  8727 ----
 vendor/idna/src/deprecated.rs                 |   248 +
 vendor/idna/src/lib.rs                        |   148 +-
 vendor/idna/src/make_uts46_mapping_table.py   |   185 -
 vendor/idna/src/punycode.rs                   |   269 +-
 vendor/idna/src/uts46.rs                      |  2212 +-
 vendor/idna/src/uts46_mapping_table.rs        | 15256 -------
 vendor/idna/tests/IdnaTestV2.txt              | 12090 ++---
 vendor/idna/tests/deprecated.rs               |   197 +
 vendor/idna/tests/punycode.rs                 |    13 +-
 vendor/idna/tests/punycode_tests.json         |     2 +-
 vendor/idna/tests/tests.rs                    |     2 +
 vendor/idna/tests/unit.rs                     |    41 +-
 vendor/idna/tests/unitbis.rs                  |   374 +
 vendor/idna/tests/uts46.rs                    |   101 +-
 vendor/idna_adapter/.cargo-checksum.json      |     1 +
 vendor/idna_adapter/Cargo.toml                |    56 +
 .../LICENSE-APACHE                            |     0
 .../LICENSE-MIT                               |     2 +-
 vendor/idna_adapter/README.md                 |    35 +
 vendor/idna_adapter/src/lib.rs                |   282 +
 vendor/litemap/.cargo-checksum.json           |     1 +
 vendor/litemap/Cargo.lock                     |  1036 +
 vendor/litemap/Cargo.toml                     |   148 +
 vendor/litemap/LICENSE                        |    46 +
 vendor/litemap/README.md                      |    51 +
 vendor/litemap/benches/litemap.rs             |   218 +
 .../examples/language_names_hash_map.rs       |    36 +
 .../examples/language_names_lite_map.rs       |    36 +
 vendor/litemap/examples/litemap_bincode.rs    |    60 +
 vendor/litemap/examples/litemap_postcard.rs   |    54 +
 vendor/litemap/src/databake.rs                |    81 +
 vendor/litemap/src/lib.rs                     |    83 +
 vendor/litemap/src/map.rs                     |  1661 +
 vendor/litemap/src/serde.rs                   |   245 +
 vendor/litemap/src/serde_helpers.rs           |   168 +
 vendor/litemap/src/store/mod.rs               |   176 +
 vendor/litemap/src/store/slice_impl.rs        |    63 +
 vendor/litemap/src/store/vec_impl.rs          |   306 +
 vendor/litemap/src/testing.rs                 |   301 +
 vendor/litemap/tests/rkyv.rs                  |    98 +
 vendor/litemap/tests/serde.rs                 |    22 +
 vendor/litemap/tests/store.rs                 |   158 +
 vendor/potential_utf/.cargo-checksum.json     |     1 +
 vendor/potential_utf/Cargo.toml               |    82 +
 vendor/potential_utf/LICENSE                  |    46 +
 vendor/potential_utf/README.md                |    11 +
 vendor/potential_utf/src/lib.rs               |    33 +
 vendor/potential_utf/src/uchar.rs             |   375 +
 vendor/potential_utf/src/ustr.rs              |   270 +
 vendor/potential_utf/src/writeable.rs         |   159 +
 vendor/smallvec/.cargo-checksum.json          |     1 +
 vendor/smallvec/Cargo.toml                    |   110 +
 vendor/smallvec/LICENSE-APACHE                |   201 +
 vendor/smallvec/LICENSE-MIT                   |    25 +
 vendor/smallvec/README.md                     |    26 +
 vendor/smallvec/benches/bench.rs              |   312 +
 .../debug_metadata/README.md                  |     8 +-
 .../smallvec/debug_metadata/smallvec.natvis   |    35 +
 vendor/smallvec/scripts/run_miri.sh           |    24 +
 vendor/smallvec/src/arbitrary.rs              |    19 +
 vendor/smallvec/src/lib.rs                    |  2605 ++
 vendor/smallvec/src/specialization.rs         |    19 +
 vendor/smallvec/src/tests.rs                  |  1136 +
 vendor/smallvec/tests/debugger_visualizer.rs  |    68 +
 vendor/smallvec/tests/macro.rs                |    24 +
 .../stable_deref_trait/.cargo-checksum.json   |     1 +
 vendor/stable_deref_trait/Cargo.toml          |    27 +
 vendor/stable_deref_trait/LICENSE-APACHE      |   201 +
 vendor/stable_deref_trait/LICENSE-MIT         |    25 +
 vendor/stable_deref_trait/README.md           |    23 +
 vendor/stable_deref_trait/src/lib.rs          |   189 +
 vendor/synstructure/.cargo-checksum.json      |     1 +
 vendor/synstructure/Cargo.toml                |    75 +
 .../LICENSE-MIT.md => synstructure/LICENSE}   |     2 +
 vendor/synstructure/README.md                 |   157 +
 vendor/synstructure/src/lib.rs                |  2559 ++
 vendor/synstructure/src/macros.rs             |   262 +
 vendor/tinystr/.cargo-checksum.json           |     1 +
 vendor/tinystr/Cargo.toml                     |   129 +
 vendor/tinystr/LICENSE                        |    46 +
 vendor/tinystr/README.md                      |    57 +
 vendor/tinystr/benches/common/mod.rs          |    55 +
 vendor/tinystr/benches/construct.rs           |    65 +
 vendor/tinystr/benches/overview.rs            |   129 +
 vendor/tinystr/benches/read.rs                |    34 +
 vendor/tinystr/benches/serde.rs               |    37 +
 vendor/tinystr/src/ascii.rs                   |  1175 +
 vendor/tinystr/src/asciibyte.rs               |   145 +
 vendor/tinystr/src/databake.rs                |    75 +
 vendor/tinystr/src/error.rs                   |    18 +
 vendor/tinystr/src/int_ops.rs                 |   315 +
 vendor/tinystr/src/lib.rs                     |   114 +
 vendor/tinystr/src/macros.rs                  |    32 +
 vendor/tinystr/src/serde.rs                   |    91 +
 vendor/tinystr/src/ule.rs                     |   125 +
 vendor/tinystr/src/unvalidated.rs             |   122 +
 vendor/tinystr/tests/serde.rs                 |    39 +
 vendor/tinyvec/.cargo-checksum.json           |     1 -
 vendor/tinyvec/CHANGELOG.md                   |    89 -
 vendor/tinyvec/Cargo.toml                     |   144 -
 vendor/tinyvec/LICENSE-ZLIB.md                |    11 -
 vendor/tinyvec/README.md                      |    34 -
 vendor/tinyvec/benches/macros.rs              |    52 -
 vendor/tinyvec/benches/smallvec.rs            |   500 -
 vendor/tinyvec/debug_metadata/tinyvec.natvis  |    24 -
 vendor/tinyvec/rustfmt.toml                   |    14 -
 vendor/tinyvec/src/array.rs                   |    48 -
 .../tinyvec/src/array/const_generic_impl.rs   |    23 -
 vendor/tinyvec/src/array/generated_impl.rs    |  9616 ----
 vendor/tinyvec/src/arrayvec.rs                |  2006 -
 vendor/tinyvec/src/arrayvec_drain.rs          |    99 -
 vendor/tinyvec/src/lib.rs                     |   108 -
 vendor/tinyvec/src/slicevec.rs                |  1082 -
 vendor/tinyvec/src/tinyvec.rs                 |  1748 -
 vendor/tinyvec/tests/arrayvec.rs              |   478 -
 vendor/tinyvec/tests/debugger_visualizer.rs   |    91 -
 vendor/tinyvec/tests/tinyvec.rs               |   468 -
 vendor/tinyvec_macros/.cargo-checksum.json    |     1 -
 vendor/tinyvec_macros/Cargo.toml              |    19 -
 vendor/tinyvec_macros/LICENSE-APACHE.md       |   202 -
 vendor/tinyvec_macros/LICENSE-MIT.md          |    21 -
 vendor/tinyvec_macros/LICENSE-ZLIB.md         |    20 -
 vendor/tinyvec_macros/src/lib.rs              |    25 -
 vendor/unicode-bidi/.cargo-checksum.json      |     1 -
 vendor/unicode-bidi/AUTHORS                   |     4 -
 vendor/unicode-bidi/COPYRIGHT                 |     8 -
 vendor/unicode-bidi/Cargo.toml                |    83 -
 vendor/unicode-bidi/README.md                 |    12 -
 vendor/unicode-bidi/src/char_data/mod.rs      |   173 -
 vendor/unicode-bidi/src/char_data/tables.rs   |   543 -
 vendor/unicode-bidi/src/data_source.rs        |    46 -
 vendor/unicode-bidi/src/deprecated.rs         |    92 -
 vendor/unicode-bidi/src/explicit.rs           |   210 -
 vendor/unicode-bidi/src/format_chars.rs       |    42 -
 vendor/unicode-bidi/src/implicit.rs           |   585 -
 vendor/unicode-bidi/src/level.rs              |   400 -
 vendor/unicode-bidi/src/lib.rs                |  2242 -
 vendor/unicode-bidi/src/prepare.rs            |   451 -
 vendor/unicode-bidi/src/utf16.rs              |   791 -
 .../.cargo-checksum.json                      |     1 -
 vendor/unicode-normalization/COPYRIGHT        |     7 -
 vendor/unicode-normalization/Cargo.toml       |    52 -
 vendor/unicode-normalization/README.md        |    39 -
 vendor/unicode-normalization/benches/bench.rs |   127 -
 .../unicode-normalization/scripts/unicode.py  |   621 -
 .../unicode-normalization/src/__test_api.rs   |    18 -
 vendor/unicode-normalization/src/decompose.rs |   161 -
 vendor/unicode-normalization/src/lib.rs       |   235 -
 vendor/unicode-normalization/src/lookups.rs   |   138 -
 .../src/no_std_prelude.rs                     |     6 -
 vendor/unicode-normalization/src/normalize.rs |   201 -
 .../unicode-normalization/src/perfect_hash.rs |    50 -
 .../unicode-normalization/src/quick_check.rs  |   187 -
 vendor/unicode-normalization/src/recompose.rs |   154 -
 vendor/unicode-normalization/src/replace.rs   |    61 -
 .../unicode-normalization/src/stream_safe.rs  |   170 -
 vendor/unicode-normalization/src/tables.rs    | 37863 ----------------
 vendor/unicode-normalization/src/test.rs      |   130 -
 vendor/url/Cargo.toml                         |     2 +-
 vendor/utf8_iter/.cargo-checksum.json         |     1 +
 vendor/utf8_iter/COPYRIGHT                    |    42 +
 vendor/utf8_iter/Cargo.toml                   |    33 +
 .../LICENSE-APACHE}                           |     0
 .../LICENSE-MIT                               |     2 +-
 vendor/utf8_iter/README.md                    |    56 +
 vendor/utf8_iter/src/indices.rs               |   120 +
 vendor/utf8_iter/src/lib.rs                   |   282 +
 vendor/utf8_iter/src/report.rs                |   234 +
 vendor/writeable/.cargo-checksum.json         |     1 +
 vendor/writeable/Cargo.lock                   |   691 +
 vendor/writeable/Cargo.toml                   |    76 +
 vendor/writeable/LICENSE                      |    46 +
 vendor/writeable/README.md                    |    57 +
 vendor/writeable/benches/writeable.rs         |   239 +
 .../writeable/examples/writeable_message.rs   |    61 +
 vendor/writeable/src/cmp.rs                   |   156 +
 vendor/writeable/src/either.rs                |    41 +
 vendor/writeable/src/impls.rs                 |   262 +
 vendor/writeable/src/lib.rs                   |   455 +
 vendor/writeable/src/ops.rs                   |   294 +
 vendor/writeable/src/parts_write_adapter.rs   |   115 +
 vendor/writeable/src/testing.rs               |    78 +
 vendor/writeable/src/to_string_or_borrow.rs   |   210 +
 vendor/writeable/src/try_writeable.rs         |   439 +
 vendor/writeable/tests/data/data.rs           |    26 +
 vendor/writeable/tests/writeable.rs           |    34 +
 vendor/yoke-derive/.cargo-checksum.json       |     1 +
 vendor/yoke-derive/Cargo.lock                 |    59 +
 vendor/yoke-derive/Cargo.toml                 |    66 +
 vendor/yoke-derive/LICENSE                    |    46 +
 vendor/yoke-derive/README.md                  |    11 +
 vendor/yoke-derive/examples/yoke_derive.rs    |   108 +
 vendor/yoke-derive/src/lib.rs                 |   273 +
 vendor/yoke-derive/src/visitor.rs             |   113 +
 vendor/yoke/.cargo-checksum.json              |     1 +
 vendor/yoke/Cargo.toml                        |   118 +
 vendor/yoke/LICENSE                           |    46 +
 vendor/yoke/README.md                         |    31 +
 vendor/yoke/src/cartable_ptr.rs               |   445 +
 vendor/yoke/src/either.rs                     |    88 +
 vendor/yoke/src/erased.rs                     |    41 +
 vendor/yoke/src/kinda_sorta_dangling.rs       |    95 +
 vendor/yoke/src/lib.rs                        |    67 +
 vendor/yoke/src/macro_impls.rs                |   128 +
 vendor/yoke/src/yoke.rs                       |  1540 +
 vendor/yoke/src/yokeable.rs                   |   369 +
 vendor/yoke/src/zero_from.rs                  |    44 +
 vendor/yoke/tests/bincode.rs                  |    83 +
 vendor/yoke/tests/miri.rs                     |    15 +
 vendor/zerofrom-derive/.cargo-checksum.json   |     1 +
 vendor/zerofrom-derive/Cargo.lock             |    59 +
 vendor/zerofrom-derive/Cargo.toml             |    65 +
 vendor/zerofrom-derive/LICENSE                |    46 +
 vendor/zerofrom-derive/README.md              |    11 +
 vendor/zerofrom-derive/examples/zf_derive.rs  |   115 +
 vendor/zerofrom-derive/src/lib.rs             |   309 +
 vendor/zerofrom-derive/src/visitor.rs         |   120 +
 vendor/zerofrom/.cargo-checksum.json          |     1 +
 vendor/zerofrom/Cargo.toml                    |    68 +
 vendor/zerofrom/LICENSE                       |    46 +
 vendor/zerofrom/README.md                     |    13 +
 vendor/zerofrom/src/lib.rs                    |    37 +
 vendor/zerofrom/src/macro_impls.rs            |   145 +
 vendor/zerofrom/src/zero_from.rs              |   136 +
 vendor/zerotrie/.cargo-checksum.json          |     1 +
 vendor/zerotrie/Cargo.lock                    |   945 +
 vendor/zerotrie/Cargo.toml                    |   183 +
 vendor/zerotrie/LICENSE                       |    46 +
 vendor/zerotrie/README.md                     |    41 +
 vendor/zerotrie/benches/overview.rs           |   198 +
 .../examples/first_weekday_for_region.rs      |   219 +
 vendor/zerotrie/src/builder/branch_meta.rs    |    29 +
 vendor/zerotrie/src/builder/bytestr.rs        |   121 +
 vendor/zerotrie/src/builder/konst/builder.rs  |   330 +
 vendor/zerotrie/src/builder/konst/mod.rs      |     9 +
 vendor/zerotrie/src/builder/konst/store.rs    |   341 +
 vendor/zerotrie/src/builder/litemap.rs        |    54 +
 vendor/zerotrie/src/builder/mod.rs            |   298 +
 .../zerotrie/src/builder/nonconst/builder.rs  |   418 +
 vendor/zerotrie/src/builder/nonconst/mod.rs   |     9 +
 vendor/zerotrie/src/builder/nonconst/store.rs |   185 +
 vendor/zerotrie/src/byte_phf/builder.rs       |   208 +
 vendor/zerotrie/src/byte_phf/cached_owned.rs  |    39 +
 vendor/zerotrie/src/byte_phf/mod.rs           |   485 +
 vendor/zerotrie/src/cursor.rs                 |   491 +
 vendor/zerotrie/src/error.rs                  |    25 +
 vendor/zerotrie/src/helpers.rs                |   119 +
 vendor/zerotrie/src/lib.rs                    |    87 +
 vendor/zerotrie/src/options.rs                |   153 +
 vendor/zerotrie/src/reader.rs                 |   727 +
 vendor/zerotrie/src/serde.rs                  |   642 +
 vendor/zerotrie/src/varint.rs                 |   497 +
 vendor/zerotrie/src/zerotrie.rs               |   886 +
 vendor/zerotrie/tests/asciitrie_test.rs       |    73 +
 vendor/zerotrie/tests/builder_test.rs         |   855 +
 vendor/zerotrie/tests/data/data.rs            |  2210 +
 vendor/zerotrie/tests/derive_test.rs          |   138 +
 vendor/zerotrie/tests/ignorecase_test.rs      |    46 +
 vendor/zerotrie/tests/locale_aux_test.rs      |   168 +
 vendor/zerovec-derive/.cargo-checksum.json    |     1 +
 vendor/zerovec-derive/Cargo.lock              |   109 +
 vendor/zerovec-derive/Cargo.toml              |    86 +
 vendor/zerovec-derive/LICENSE                 |    46 +
 vendor/zerovec-derive/README.md               |    11 +
 vendor/zerovec-derive/examples/derives.rs     |   157 +
 vendor/zerovec-derive/examples/make.rs        |   125 +
 vendor/zerovec-derive/examples/make_var.rs    |   261 +
 vendor/zerovec-derive/src/lib.rs              |    43 +
 vendor/zerovec-derive/src/make_ule.rs         |   373 +
 vendor/zerovec-derive/src/make_varule.rs      |   887 +
 vendor/zerovec-derive/src/ule.rs              |   110 +
 vendor/zerovec-derive/src/utils.rs            |   403 +
 vendor/zerovec-derive/src/varule.rs           |   129 +
 vendor/zerovec/.cargo-checksum.json           |     1 +
 vendor/zerovec/Cargo.lock                     |   929 +
 vendor/zerovec/Cargo.toml                     |   194 +
 vendor/zerovec/LICENSE                        |    46 +
 vendor/zerovec/README.md                      |   197 +
 vendor/zerovec/benches/vzv.rs                 |   204 +
 vendor/zerovec/benches/zeromap.rs             |   381 +
 vendor/zerovec/benches/zerovec.rs             |   164 +
 vendor/zerovec/benches/zerovec_iai.rs         |    64 +
 vendor/zerovec/benches/zerovec_serde.rs       |   139 +
 vendor/zerovec/examples/zv_serde.rs           |    45 +
 vendor/zerovec/src/cow.rs                     |   438 +
 vendor/zerovec/src/hashmap/algorithms.rs      |   164 +
 vendor/zerovec/src/hashmap/mod.rs             |   239 +
 vendor/zerovec/src/hashmap/serde.rs           |   151 +
 vendor/zerovec/src/lib.rs                     |   576 +
 vendor/zerovec/src/map/borrowed.rs            |   317 +
 vendor/zerovec/src/map/databake.rs            |   108 +
 vendor/zerovec/src/map/kv.rs                  |   137 +
 vendor/zerovec/src/map/map.rs                 |   646 +
 vendor/zerovec/src/map/mod.rs                 |    23 +
 vendor/zerovec/src/map/serde.rs               |   313 +
 vendor/zerovec/src/map/serde_helpers.rs       |   168 +
 vendor/zerovec/src/map/vecs.rs                |   572 +
 vendor/zerovec/src/map2d/borrowed.rs          |   335 +
 vendor/zerovec/src/map2d/cursor.rs            |   394 +
 vendor/zerovec/src/map2d/databake.rs          |   146 +
 vendor/zerovec/src/map2d/map.rs               |   874 +
 vendor/zerovec/src/map2d/mod.rs               |    18 +
 vendor/zerovec/src/map2d/serde.rs             |   437 +
 vendor/zerovec/src/samples.rs                 |    74 +
 vendor/zerovec/src/ule/chars.rs               |   193 +
 vendor/zerovec/src/ule/custom.rs              |   145 +
 vendor/zerovec/src/ule/encode.rs              |   438 +
 vendor/zerovec/src/ule/macros.rs              |    29 +
 vendor/zerovec/src/ule/mod.rs                 |   450 +
 vendor/zerovec/src/ule/multi.rs               |   159 +
 vendor/zerovec/src/ule/niche.rs               |   206 +
 vendor/zerovec/src/ule/option.rs              |   264 +
 vendor/zerovec/src/ule/plain.rs               |   399 +
 vendor/zerovec/src/ule/slices.rs              |   102 +
 vendor/zerovec/src/ule/test_utils.rs          |    30 +
 vendor/zerovec/src/ule/tuple.rs               |   180 +
 vendor/zerovec/src/ule/tuplevar.rs            |   307 +
 vendor/zerovec/src/ule/vartuple.rs            |   312 +
 vendor/zerovec/src/varzerovec/components.rs   |   815 +
 vendor/zerovec/src/varzerovec/databake.rs     |   132 +
 vendor/zerovec/src/varzerovec/error.rs        |    24 +
 vendor/zerovec/src/varzerovec/lengthless.rs   |   116 +
 vendor/zerovec/src/varzerovec/mod.rs          |    31 +
 vendor/zerovec/src/varzerovec/owned.rs        |   696 +
 vendor/zerovec/src/varzerovec/serde.rs        |   257 +
 vendor/zerovec/src/varzerovec/slice.rs        |   524 +
 vendor/zerovec/src/varzerovec/vec.rs          |   513 +
 vendor/zerovec/src/yoke_impls.rs              |   525 +
 vendor/zerovec/src/zerofrom_impls.rs          |   108 +
 vendor/zerovec/src/zerovec/databake.rs        |    74 +
 vendor/zerovec/src/zerovec/mod.rs             |  1280 +
 vendor/zerovec/src/zerovec/serde.rs           |   234 +
 vendor/zerovec/src/zerovec/slice.rs           |   625 +
 757 files changed, 130755 insertions(+), 93760 deletions(-)
 create mode 100644 vendor/displaydoc/.cargo-checksum.json
 create mode 100644 vendor/displaydoc/CHANGELOG.md
 create mode 100644 vendor/displaydoc/Cargo.lock
 create mode 100644 vendor/displaydoc/Cargo.toml
 rename vendor/{unicode-bidi => displaydoc}/LICENSE-APACHE (100%)
 create mode 100644 vendor/displaydoc/LICENSE-MIT
 create mode 100644 vendor/displaydoc/README.md
 create mode 100644 vendor/displaydoc/README.tpl
 create mode 100644 vendor/displaydoc/examples/simple.rs
 create mode 100644 vendor/displaydoc/src/attr.rs
 create mode 100644 vendor/displaydoc/src/expand.rs
 create mode 100644 vendor/displaydoc/src/fmt.rs
 create mode 100644 vendor/displaydoc/src/lib.rs
 create mode 100644 vendor/displaydoc/tests/compile_tests.rs
 create mode 100644 vendor/displaydoc/tests/happy.rs
 create mode 100644 vendor/displaydoc/tests/no_std/enum_prefix.rs
 create mode 100644 vendor/displaydoc/tests/no_std/enum_prefix_missing.rs
 create mode 100644 vendor/displaydoc/tests/no_std/enum_prefix_missing.stderr
 create mode 100644 vendor/displaydoc/tests/no_std/multi_line.rs
 create mode 100644 vendor/displaydoc/tests/no_std/multi_line.stderr
 create mode 100644 vendor/displaydoc/tests/no_std/multi_line_allow.rs
 create mode 100644 vendor/displaydoc/tests/no_std/with.rs
 create mode 100644 vendor/displaydoc/tests/no_std/without.rs
 create mode 100644 vendor/displaydoc/tests/no_std/without.stderr
 create mode 100644 vendor/displaydoc/tests/num_in_field.rs
 create mode 100644 vendor/displaydoc/tests/std/enum_prefix.rs
 create mode 100644 vendor/displaydoc/tests/std/enum_prefix_missing.rs
 create mode 100644 vendor/displaydoc/tests/std/enum_prefix_missing.stderr
 create mode 100644 vendor/displaydoc/tests/std/multi_line.rs
 create mode 100644 vendor/displaydoc/tests/std/multi_line.stderr
 create mode 100644 vendor/displaydoc/tests/std/multi_line_allow.rs
 create mode 100644 vendor/displaydoc/tests/std/multiple.rs
 create mode 100644 vendor/displaydoc/tests/std/without.rs
 create mode 100644 vendor/displaydoc/tests/std/without.stderr
 create mode 100644 vendor/displaydoc/tests/variantless.rs
 create mode 100755 vendor/displaydoc/update-readme.sh
 create mode 100644 vendor/icu_collections/.cargo-checksum.json
 create mode 100644 vendor/icu_collections/Cargo.lock
 create mode 100644 vendor/icu_collections/Cargo.toml
 create mode 100644 vendor/icu_collections/LICENSE
 create mode 100644 vendor/icu_collections/README.md
 create mode 100644 vendor/icu_collections/benches/codepointtrie.rs
 create mode 100644 vendor/icu_collections/benches/iai_cpt.rs
 create mode 100644 vendor/icu_collections/benches/inv_list.rs
 create mode 100644 vendor/icu_collections/benches/tries/gc_fast.rs
 create mode 100644 vendor/icu_collections/benches/tries/gc_small.rs
 create mode 100644 vendor/icu_collections/benches/tries/mod.rs
 create mode 100644 vendor/icu_collections/examples/unicode_bmp_blocks_selector.rs
 create mode 100644 vendor/icu_collections/src/char16trie/mod.rs
 create mode 100644 vendor/icu_collections/src/char16trie/trie.rs
 create mode 100644 vendor/icu_collections/src/codepointinvlist/builder.rs
 create mode 100644 vendor/icu_collections/src/codepointinvlist/conversions.rs
 create mode 100644 vendor/icu_collections/src/codepointinvlist/cpinvlist.rs
 create mode 100644 vendor/icu_collections/src/codepointinvlist/mod.rs
 create mode 100644 vendor/icu_collections/src/codepointinvlist/utils.rs
 create mode 100644 vendor/icu_collections/src/codepointinvliststringlist/mod.rs
 create mode 100644 vendor/icu_collections/src/codepointtrie/cptrie.rs
 create mode 100644 vendor/icu_collections/src/codepointtrie/error.rs
 create mode 100644 vendor/icu_collections/src/codepointtrie/impl_const.rs
 create mode 100644 vendor/icu_collections/src/codepointtrie/mod.rs
 create mode 100644 vendor/icu_collections/src/codepointtrie/planes.rs
 create mode 100644 vendor/icu_collections/src/codepointtrie/serde.rs
 create mode 100644 vendor/icu_collections/src/codepointtrie/toml.rs
 create mode 100644 vendor/icu_collections/src/iterator_utils.rs
 create mode 100644 vendor/icu_collections/src/lib.rs
 create mode 100644 vendor/icu_collections/tests/char16trie.rs
 create mode 100644 vendor/icu_collections/tests/cpt.rs
 create mode 100644 vendor/icu_collections/tests/data/char16trie/empty.toml
 create mode 100644 vendor/icu_collections/tests/data/char16trie/months.toml
 create mode 100644 vendor/icu_collections/tests/data/char16trie/test_a.toml
 create mode 100644 vendor/icu_collections/tests/data/char16trie/test_a_ab.toml
 create mode 100644 vendor/icu_collections/tests/data/char16trie/test_branches.toml
 create mode 100644 vendor/icu_collections/tests/data/char16trie/test_compact.toml
 create mode 100644 vendor/icu_collections/tests/data/char16trie/test_long_branch.toml
 create mode 100644 vendor/icu_collections/tests/data/char16trie/test_long_sequence.toml
 create mode 100644 vendor/icu_collections/tests/data/char16trie/test_shortest_branch.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/free-blocks.16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/free-blocks.32.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/free-blocks.8.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/free-blocks.small16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/grow-data.16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/grow-data.32.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/grow-data.8.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/grow-data.small16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/planes.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set-empty.16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set-empty.32.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set-empty.8.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set-empty.small16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set-single-value.16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set-single-value.32.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set-single-value.8.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set-single-value.small16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set1.16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set1.32.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set1.8.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set1.small16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set2-overlap.16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set2-overlap.32.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set2-overlap.small16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set3-initial-9.16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set3-initial-9.32.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set3-initial-9.8.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/set3-initial-9.small16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/short-all-same.16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/short-all-same.8.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/short-all-same.small16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/small0-in-fast.16.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/small0-in-fast.32.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/small0-in-fast.8.toml
 create mode 100644 vendor/icu_collections/tests/data/cpt/small0-in-fast.small16.toml
 create mode 100644 vendor/icu_locale_core/.cargo-checksum.json
 create mode 100644 vendor/icu_locale_core/Cargo.lock
 create mode 100644 vendor/icu_locale_core/Cargo.toml
 create mode 100644 vendor/icu_locale_core/LICENSE
 create mode 100644 vendor/icu_locale_core/README.md
 create mode 100644 vendor/icu_locale_core/benches/fixtures/langid.json
 create mode 100644 vendor/icu_locale_core/benches/fixtures/locale.json
 create mode 100644 vendor/icu_locale_core/benches/fixtures/mod.rs
 create mode 100644 vendor/icu_locale_core/benches/fixtures/subtags.json
 create mode 100644 vendor/icu_locale_core/benches/helpers/macros.rs
 create mode 100644 vendor/icu_locale_core/benches/helpers/mod.rs
 create mode 100644 vendor/icu_locale_core/benches/iai_langid.rs
 create mode 100644 vendor/icu_locale_core/benches/langid.rs
 create mode 100644 vendor/icu_locale_core/benches/locale.rs
 create mode 100644 vendor/icu_locale_core/benches/subtags.rs
 create mode 100644 vendor/icu_locale_core/examples/filter_langids.rs
 create mode 100644 vendor/icu_locale_core/examples/syntatically_canonicalize_locales.rs
 create mode 100644 vendor/icu_locale_core/src/data.rs
 create mode 100644 vendor/icu_locale_core/src/databake.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/mod.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/other/mod.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/private/mod.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/private/other.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/transform/fields.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/transform/key.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/transform/mod.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/transform/value.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/unicode/attribute.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/unicode/attributes.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/unicode/key.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/unicode/keywords.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/unicode/mod.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/unicode/subdivision.rs
 create mode 100644 vendor/icu_locale_core/src/extensions/unicode/value.rs
 create mode 100644 vendor/icu_locale_core/src/helpers.rs
 create mode 100644 vendor/icu_locale_core/src/langid.rs
 create mode 100644 vendor/icu_locale_core/src/lib.rs
 create mode 100644 vendor/icu_locale_core/src/locale.rs
 create mode 100644 vendor/icu_locale_core/src/macros.rs
 create mode 100644 vendor/icu_locale_core/src/parser/errors.rs
 create mode 100644 vendor/icu_locale_core/src/parser/langid.rs
 create mode 100644 vendor/icu_locale_core/src/parser/locale.rs
 create mode 100644 vendor/icu_locale_core/src/parser/mod.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/mod.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/errors.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/calendar.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/collation.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/currency.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/currency_format.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/dictionary_break.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/emoji.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/first_day.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/hour_cycle.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/line_break.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/line_break_word.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/measurement_system.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/measurement_unit_override.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/mod.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/numbering_system.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/region_override.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/regional_subdivision.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/sentence_supression.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/timezone.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/variant.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/macros/enum_keyword.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/macros/mod.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/macros/struct_keyword.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/extensions/unicode/mod.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/locale.rs
 create mode 100644 vendor/icu_locale_core/src/preferences/mod.rs
 create mode 100644 vendor/icu_locale_core/src/serde.rs
 create mode 100644 vendor/icu_locale_core/src/shortvec/litemap.rs
 create mode 100644 vendor/icu_locale_core/src/shortvec/mod.rs
 create mode 100644 vendor/icu_locale_core/src/subtags/language.rs
 create mode 100644 vendor/icu_locale_core/src/subtags/mod.rs
 create mode 100644 vendor/icu_locale_core/src/subtags/region.rs
 create mode 100644 vendor/icu_locale_core/src/subtags/script.rs
 create mode 100644 vendor/icu_locale_core/src/subtags/variant.rs
 create mode 100644 vendor/icu_locale_core/src/subtags/variants.rs
 create mode 100644 vendor/icu_locale_core/src/zerovec.rs
 create mode 100644 vendor/icu_locale_core/tests/fixtures/canonicalize.json
 create mode 100644 vendor/icu_locale_core/tests/fixtures/invalid-extensions.json
 create mode 100644 vendor/icu_locale_core/tests/fixtures/invalid.json
 create mode 100644 vendor/icu_locale_core/tests/fixtures/langid.json
 create mode 100644 vendor/icu_locale_core/tests/fixtures/locale.json
 create mode 100644 vendor/icu_locale_core/tests/fixtures/mod.rs
 create mode 100644 vendor/icu_locale_core/tests/langid.rs
 create mode 100644 vendor/icu_locale_core/tests/locale.rs
 create mode 100644 vendor/icu_normalizer/.cargo-checksum.json
 create mode 100644 vendor/icu_normalizer/Cargo.toml
 create mode 100644 vendor/icu_normalizer/LICENSE
 create mode 100644 vendor/icu_normalizer/README.md
 create mode 100644 vendor/icu_normalizer/benches/bench.rs
 create mode 100644 vendor/icu_normalizer/benches/canonical_composition.rs
 create mode 100644 vendor/icu_normalizer/benches/canonical_decomposition.rs
 create mode 100644 vendor/icu_normalizer/benches/composing_normalizer_nfc.rs
 create mode 100644 vendor/icu_normalizer/benches/composing_normalizer_nfkc.rs
 create mode 100644 vendor/icu_normalizer/benches/data/README.md
 create mode 100644 vendor/icu_normalizer/benches/data/TestNames_Japanese_h.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestNames_Japanese_k.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestNames_Korean.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestNames_Latin.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestNames_Thai.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_ar.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_de.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_el.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_es.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_fr.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_he.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_pl.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_ru.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_th.txt
 create mode 100644 vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_tr.txt
 create mode 100644 vendor/icu_normalizer/benches/data/wotw.txt
 create mode 100644 vendor/icu_normalizer/benches/decomposing_normalizer_nfd.rs
 create mode 100644 vendor/icu_normalizer/benches/decomposing_normalizer_nfkd.rs
 create mode 100644 vendor/icu_normalizer/src/lib.rs
 create mode 100644 vendor/icu_normalizer/src/properties.rs
 create mode 100644 vendor/icu_normalizer/src/provider.rs
 create mode 100644 vendor/icu_normalizer/src/uts46.rs
 create mode 100644 vendor/icu_normalizer/tests/data/NormalizationTest.txt
 create mode 100644 vendor/icu_normalizer/tests/data/README.md
 create mode 100644 vendor/icu_normalizer/tests/tests.rs
 create mode 100644 vendor/icu_normalizer_data/.cargo-checksum.json
 create mode 100644 vendor/icu_normalizer_data/Cargo.toml
 create mode 100644 vendor/icu_normalizer_data/LICENSE
 create mode 100644 vendor/icu_normalizer_data/README.md
 create mode 100644 vendor/icu_normalizer_data/build.rs
 create mode 100644 vendor/icu_normalizer_data/data/mod.rs
 create mode 100644 vendor/icu_normalizer_data/data/normalizer_nfc_v1.rs.data
 create mode 100644 vendor/icu_normalizer_data/data/normalizer_nfd_data_v1.rs.data
 create mode 100644 vendor/icu_normalizer_data/data/normalizer_nfd_supplement_v1.rs.data
 create mode 100644 vendor/icu_normalizer_data/data/normalizer_nfd_tables_v1.rs.data
 create mode 100644 vendor/icu_normalizer_data/data/normalizer_nfkd_data_v1.rs.data
 create mode 100644 vendor/icu_normalizer_data/data/normalizer_nfkd_tables_v1.rs.data
 create mode 100644 vendor/icu_normalizer_data/data/normalizer_uts46_data_v1.rs.data
 create mode 100644 vendor/icu_normalizer_data/src/lib.rs
 create mode 100644 vendor/icu_properties/.cargo-checksum.json
 create mode 100644 vendor/icu_properties/Cargo.toml
 create mode 100644 vendor/icu_properties/LICENSE
 create mode 100644 vendor/icu_properties/README.md
 create mode 100644 vendor/icu_properties/src/bidi.rs
 create mode 100644 vendor/icu_properties/src/code_point_map.rs
 create mode 100644 vendor/icu_properties/src/code_point_set.rs
 create mode 100644 vendor/icu_properties/src/emoji.rs
 create mode 100644 vendor/icu_properties/src/lib.rs
 create mode 100644 vendor/icu_properties/src/names.rs
 create mode 100644 vendor/icu_properties/src/props.rs
 create mode 100644 vendor/icu_properties/src/provider.rs
 create mode 100644 vendor/icu_properties/src/provider/names.rs
 create mode 100644 vendor/icu_properties/src/runtime.rs
 create mode 100644 vendor/icu_properties/src/script.rs
 create mode 100644 vendor/icu_properties/src/trievalue.rs
 create mode 100644 vendor/icu_properties_data/.cargo-checksum.json
 create mode 100644 vendor/icu_properties_data/Cargo.toml
 create mode 100644 vendor/icu_properties_data/LICENSE
 create mode 100644 vendor/icu_properties_data/README.md
 create mode 100644 vendor/icu_properties_data/build.rs
 create mode 100644 vendor/icu_properties_data/data/mod.rs
 create mode 100644 vendor/icu_properties_data/data/property_binary_alnum_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_alphabetic_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_ascii_hex_digit_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_basic_emoji_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_bidi_control_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_bidi_mirrored_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_blank_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_case_ignorable_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_case_sensitive_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_cased_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_changes_when_casefolded_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_changes_when_casemapped_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_changes_when_lowercased_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_changes_when_nfkc_casefolded_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_changes_when_titlecased_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_changes_when_uppercased_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_dash_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_default_ignorable_code_point_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_deprecated_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_diacritic_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_emoji_component_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_emoji_modifier_base_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_emoji_modifier_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_emoji_presentation_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_emoji_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_extended_pictographic_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_extender_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_full_composition_exclusion_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_graph_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_grapheme_base_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_grapheme_extend_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_grapheme_link_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_hex_digit_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_hyphen_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_id_continue_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_id_start_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_ideographic_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_ids_binary_operator_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_ids_trinary_operator_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_join_control_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_logical_order_exception_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_lowercase_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_math_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_nfc_inert_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_nfd_inert_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_nfkc_inert_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_nfkd_inert_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_noncharacter_code_point_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_pattern_syntax_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_pattern_white_space_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_prepended_concatenation_mark_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_print_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_quotation_mark_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_radical_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_regional_indicator_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_segment_starter_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_sentence_terminal_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_soft_dotted_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_terminal_punctuation_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_unified_ideograph_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_uppercase_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_variation_selector_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_white_space_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_xdigit_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_xid_continue_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_binary_xid_start_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_bidi_class_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_bidi_mirroring_glyph_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_canonical_combining_class_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_east_asian_width_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_general_category_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_grapheme_cluster_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_hangul_syllable_type_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_indic_conjunct_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_indic_syllabic_category_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_joining_type_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_line_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_script_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_sentence_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_vertical_orientation_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_enum_word_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_bidi_class_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_canonical_combining_class_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_east_asian_width_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_general_category_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_grapheme_cluster_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_hangul_syllable_type_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_indic_syllabic_category_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_joining_type_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_line_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_script_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_sentence_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_vertical_orientation_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_long_word_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_bidi_class_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_canonical_combining_class_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_east_asian_width_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_general_category_mask_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_general_category_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_grapheme_cluster_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_hangul_syllable_type_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_indic_syllabic_category_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_joining_type_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_line_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_script_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_sentence_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_vertical_orientation_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_parse_word_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_bidi_class_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_canonical_combining_class_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_east_asian_width_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_general_category_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_grapheme_cluster_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_hangul_syllable_type_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_indic_syllabic_category_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_joining_type_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_line_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_script_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_sentence_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_vertical_orientation_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_name_short_word_break_v1.rs.data
 create mode 100644 vendor/icu_properties_data/data/property_script_with_extensions_v1.rs.data
 create mode 100644 vendor/icu_properties_data/src/lib.rs
 create mode 100644 vendor/icu_provider/.cargo-checksum.json
 create mode 100644 vendor/icu_provider/Cargo.toml
 create mode 100644 vendor/icu_provider/LICENSE
 create mode 100644 vendor/icu_provider/README.md
 create mode 100644 vendor/icu_provider/benches/data_locale_bench.rs
 create mode 100644 vendor/icu_provider/src/baked.rs
 create mode 100644 vendor/icu_provider/src/baked/zerotrie.rs
 create mode 100644 vendor/icu_provider/src/buf.rs
 create mode 100644 vendor/icu_provider/src/buf/serde.rs
 create mode 100644 vendor/icu_provider/src/constructors.rs
 create mode 100644 vendor/icu_provider/src/data_provider.rs
 create mode 100644 vendor/icu_provider/src/dynutil.rs
 create mode 100644 vendor/icu_provider/src/error.rs
 create mode 100644 vendor/icu_provider/src/export/mod.rs
 create mode 100644 vendor/icu_provider/src/export/payload.rs
 create mode 100644 vendor/icu_provider/src/fallback.rs
 create mode 100644 vendor/icu_provider/src/hello_world.rs
 create mode 100644 vendor/icu_provider/src/lib.rs
 create mode 100644 vendor/icu_provider/src/marker.rs
 create mode 100644 vendor/icu_provider/src/request.rs
 create mode 100644 vendor/icu_provider/src/response.rs
 create mode 100644 vendor/icu_provider/src/serde_borrow_de_utils.rs
 create mode 100644 vendor/icu_provider/src/varule_traits.rs
 create mode 100644 vendor/idna/README.md
 delete mode 100644 vendor/idna/src/IdnaMappingTable.txt
 create mode 100644 vendor/idna/src/deprecated.rs
 delete mode 100644 vendor/idna/src/make_uts46_mapping_table.py
 delete mode 100644 vendor/idna/src/uts46_mapping_table.rs
 create mode 100644 vendor/idna/tests/deprecated.rs
 create mode 100644 vendor/idna/tests/unitbis.rs
 create mode 100644 vendor/idna_adapter/.cargo-checksum.json
 create mode 100644 vendor/idna_adapter/Cargo.toml
 rename vendor/{unicode-normalization => idna_adapter}/LICENSE-APACHE (100%)
 rename vendor/{unicode-bidi => idna_adapter}/LICENSE-MIT (95%)
 create mode 100644 vendor/idna_adapter/README.md
 create mode 100644 vendor/idna_adapter/src/lib.rs
 create mode 100644 vendor/litemap/.cargo-checksum.json
 create mode 100644 vendor/litemap/Cargo.lock
 create mode 100644 vendor/litemap/Cargo.toml
 create mode 100644 vendor/litemap/LICENSE
 create mode 100644 vendor/litemap/README.md
 create mode 100644 vendor/litemap/benches/litemap.rs
 create mode 100644 vendor/litemap/examples/language_names_hash_map.rs
 create mode 100644 vendor/litemap/examples/language_names_lite_map.rs
 create mode 100644 vendor/litemap/examples/litemap_bincode.rs
 create mode 100644 vendor/litemap/examples/litemap_postcard.rs
 create mode 100644 vendor/litemap/src/databake.rs
 create mode 100644 vendor/litemap/src/lib.rs
 create mode 100644 vendor/litemap/src/map.rs
 create mode 100644 vendor/litemap/src/serde.rs
 create mode 100644 vendor/litemap/src/serde_helpers.rs
 create mode 100644 vendor/litemap/src/store/mod.rs
 create mode 100644 vendor/litemap/src/store/slice_impl.rs
 create mode 100644 vendor/litemap/src/store/vec_impl.rs
 create mode 100644 vendor/litemap/src/testing.rs
 create mode 100644 vendor/litemap/tests/rkyv.rs
 create mode 100644 vendor/litemap/tests/serde.rs
 create mode 100644 vendor/litemap/tests/store.rs
 create mode 100644 vendor/potential_utf/.cargo-checksum.json
 create mode 100644 vendor/potential_utf/Cargo.toml
 create mode 100644 vendor/potential_utf/LICENSE
 create mode 100644 vendor/potential_utf/README.md
 create mode 100644 vendor/potential_utf/src/lib.rs
 create mode 100644 vendor/potential_utf/src/uchar.rs
 create mode 100644 vendor/potential_utf/src/ustr.rs
 create mode 100644 vendor/potential_utf/src/writeable.rs
 create mode 100644 vendor/smallvec/.cargo-checksum.json
 create mode 100644 vendor/smallvec/Cargo.toml
 create mode 100644 vendor/smallvec/LICENSE-APACHE
 create mode 100644 vendor/smallvec/LICENSE-MIT
 create mode 100644 vendor/smallvec/README.md
 create mode 100644 vendor/smallvec/benches/bench.rs
 rename vendor/{tinyvec => smallvec}/debug_metadata/README.md (95%)
 create mode 100644 vendor/smallvec/debug_metadata/smallvec.natvis
 create mode 100644 vendor/smallvec/scripts/run_miri.sh
 create mode 100644 vendor/smallvec/src/arbitrary.rs
 create mode 100644 vendor/smallvec/src/lib.rs
 create mode 100644 vendor/smallvec/src/specialization.rs
 create mode 100644 vendor/smallvec/src/tests.rs
 create mode 100644 vendor/smallvec/tests/debugger_visualizer.rs
 create mode 100644 vendor/smallvec/tests/macro.rs
 create mode 100644 vendor/stable_deref_trait/.cargo-checksum.json
 create mode 100644 vendor/stable_deref_trait/Cargo.toml
 create mode 100644 vendor/stable_deref_trait/LICENSE-APACHE
 create mode 100644 vendor/stable_deref_trait/LICENSE-MIT
 create mode 100644 vendor/stable_deref_trait/README.md
 create mode 100644 vendor/stable_deref_trait/src/lib.rs
 create mode 100644 vendor/synstructure/.cargo-checksum.json
 create mode 100644 vendor/synstructure/Cargo.toml
 rename vendor/{tinyvec/LICENSE-MIT.md => synstructure/LICENSE} (97%)
 create mode 100644 vendor/synstructure/README.md
 create mode 100644 vendor/synstructure/src/lib.rs
 create mode 100644 vendor/synstructure/src/macros.rs
 create mode 100644 vendor/tinystr/.cargo-checksum.json
 create mode 100644 vendor/tinystr/Cargo.toml
 create mode 100644 vendor/tinystr/LICENSE
 create mode 100644 vendor/tinystr/README.md
 create mode 100644 vendor/tinystr/benches/common/mod.rs
 create mode 100644 vendor/tinystr/benches/construct.rs
 create mode 100644 vendor/tinystr/benches/overview.rs
 create mode 100644 vendor/tinystr/benches/read.rs
 create mode 100644 vendor/tinystr/benches/serde.rs
 create mode 100644 vendor/tinystr/src/ascii.rs
 create mode 100644 vendor/tinystr/src/asciibyte.rs
 create mode 100644 vendor/tinystr/src/databake.rs
 create mode 100644 vendor/tinystr/src/error.rs
 create mode 100644 vendor/tinystr/src/int_ops.rs
 create mode 100644 vendor/tinystr/src/lib.rs
 create mode 100644 vendor/tinystr/src/macros.rs
 create mode 100644 vendor/tinystr/src/serde.rs
 create mode 100644 vendor/tinystr/src/ule.rs
 create mode 100644 vendor/tinystr/src/unvalidated.rs
 create mode 100644 vendor/tinystr/tests/serde.rs
 delete mode 100644 vendor/tinyvec/.cargo-checksum.json
 delete mode 100644 vendor/tinyvec/CHANGELOG.md
 delete mode 100644 vendor/tinyvec/Cargo.toml
 delete mode 100644 vendor/tinyvec/LICENSE-ZLIB.md
 delete mode 100644 vendor/tinyvec/README.md
 delete mode 100644 vendor/tinyvec/benches/macros.rs
 delete mode 100644 vendor/tinyvec/benches/smallvec.rs
 delete mode 100644 vendor/tinyvec/debug_metadata/tinyvec.natvis
 delete mode 100644 vendor/tinyvec/rustfmt.toml
 delete mode 100644 vendor/tinyvec/src/array.rs
 delete mode 100644 vendor/tinyvec/src/array/const_generic_impl.rs
 delete mode 100644 vendor/tinyvec/src/array/generated_impl.rs
 delete mode 100644 vendor/tinyvec/src/arrayvec.rs
 delete mode 100644 vendor/tinyvec/src/arrayvec_drain.rs
 delete mode 100644 vendor/tinyvec/src/lib.rs
 delete mode 100644 vendor/tinyvec/src/slicevec.rs
 delete mode 100644 vendor/tinyvec/src/tinyvec.rs
 delete mode 100644 vendor/tinyvec/tests/arrayvec.rs
 delete mode 100644 vendor/tinyvec/tests/debugger_visualizer.rs
 delete mode 100644 vendor/tinyvec/tests/tinyvec.rs
 delete mode 100644 vendor/tinyvec_macros/.cargo-checksum.json
 delete mode 100644 vendor/tinyvec_macros/Cargo.toml
 delete mode 100644 vendor/tinyvec_macros/LICENSE-APACHE.md
 delete mode 100644 vendor/tinyvec_macros/LICENSE-MIT.md
 delete mode 100644 vendor/tinyvec_macros/LICENSE-ZLIB.md
 delete mode 100644 vendor/tinyvec_macros/src/lib.rs
 delete mode 100644 vendor/unicode-bidi/.cargo-checksum.json
 delete mode 100644 vendor/unicode-bidi/AUTHORS
 delete mode 100644 vendor/unicode-bidi/COPYRIGHT
 delete mode 100644 vendor/unicode-bidi/Cargo.toml
 delete mode 100644 vendor/unicode-bidi/README.md
 delete mode 100644 vendor/unicode-bidi/src/char_data/mod.rs
 delete mode 100644 vendor/unicode-bidi/src/char_data/tables.rs
 delete mode 100644 vendor/unicode-bidi/src/data_source.rs
 delete mode 100644 vendor/unicode-bidi/src/deprecated.rs
 delete mode 100644 vendor/unicode-bidi/src/explicit.rs
 delete mode 100644 vendor/unicode-bidi/src/format_chars.rs
 delete mode 100644 vendor/unicode-bidi/src/implicit.rs
 delete mode 100644 vendor/unicode-bidi/src/level.rs
 delete mode 100644 vendor/unicode-bidi/src/lib.rs
 delete mode 100644 vendor/unicode-bidi/src/prepare.rs
 delete mode 100644 vendor/unicode-bidi/src/utf16.rs
 delete mode 100644 vendor/unicode-normalization/.cargo-checksum.json
 delete mode 100644 vendor/unicode-normalization/COPYRIGHT
 delete mode 100644 vendor/unicode-normalization/Cargo.toml
 delete mode 100644 vendor/unicode-normalization/README.md
 delete mode 100644 vendor/unicode-normalization/benches/bench.rs
 delete mode 100644 vendor/unicode-normalization/scripts/unicode.py
 delete mode 100644 vendor/unicode-normalization/src/__test_api.rs
 delete mode 100644 vendor/unicode-normalization/src/decompose.rs
 delete mode 100644 vendor/unicode-normalization/src/lib.rs
 delete mode 100644 vendor/unicode-normalization/src/lookups.rs
 delete mode 100755 vendor/unicode-normalization/src/no_std_prelude.rs
 delete mode 100644 vendor/unicode-normalization/src/normalize.rs
 delete mode 100644 vendor/unicode-normalization/src/perfect_hash.rs
 delete mode 100644 vendor/unicode-normalization/src/quick_check.rs
 delete mode 100644 vendor/unicode-normalization/src/recompose.rs
 delete mode 100644 vendor/unicode-normalization/src/replace.rs
 delete mode 100644 vendor/unicode-normalization/src/stream_safe.rs
 delete mode 100644 vendor/unicode-normalization/src/tables.rs
 delete mode 100644 vendor/unicode-normalization/src/test.rs
 create mode 100644 vendor/utf8_iter/.cargo-checksum.json
 create mode 100644 vendor/utf8_iter/COPYRIGHT
 create mode 100644 vendor/utf8_iter/Cargo.toml
 rename vendor/{tinyvec/LICENSE-APACHE.md => utf8_iter/LICENSE-APACHE} (100%)
 rename vendor/{unicode-normalization => utf8_iter}/LICENSE-MIT (95%)
 create mode 100644 vendor/utf8_iter/README.md
 create mode 100644 vendor/utf8_iter/src/indices.rs
 create mode 100644 vendor/utf8_iter/src/lib.rs
 create mode 100644 vendor/utf8_iter/src/report.rs
 create mode 100644 vendor/writeable/.cargo-checksum.json
 create mode 100644 vendor/writeable/Cargo.lock
 create mode 100644 vendor/writeable/Cargo.toml
 create mode 100644 vendor/writeable/LICENSE
 create mode 100644 vendor/writeable/README.md
 create mode 100644 vendor/writeable/benches/writeable.rs
 create mode 100644 vendor/writeable/examples/writeable_message.rs
 create mode 100644 vendor/writeable/src/cmp.rs
 create mode 100644 vendor/writeable/src/either.rs
 create mode 100644 vendor/writeable/src/impls.rs
 create mode 100644 vendor/writeable/src/lib.rs
 create mode 100644 vendor/writeable/src/ops.rs
 create mode 100644 vendor/writeable/src/parts_write_adapter.rs
 create mode 100644 vendor/writeable/src/testing.rs
 create mode 100644 vendor/writeable/src/to_string_or_borrow.rs
 create mode 100644 vendor/writeable/src/try_writeable.rs
 create mode 100644 vendor/writeable/tests/data/data.rs
 create mode 100644 vendor/writeable/tests/writeable.rs
 create mode 100644 vendor/yoke-derive/.cargo-checksum.json
 create mode 100644 vendor/yoke-derive/Cargo.lock
 create mode 100644 vendor/yoke-derive/Cargo.toml
 create mode 100644 vendor/yoke-derive/LICENSE
 create mode 100644 vendor/yoke-derive/README.md
 create mode 100644 vendor/yoke-derive/examples/yoke_derive.rs
 create mode 100644 vendor/yoke-derive/src/lib.rs
 create mode 100644 vendor/yoke-derive/src/visitor.rs
 create mode 100644 vendor/yoke/.cargo-checksum.json
 create mode 100644 vendor/yoke/Cargo.toml
 create mode 100644 vendor/yoke/LICENSE
 create mode 100644 vendor/yoke/README.md
 create mode 100644 vendor/yoke/src/cartable_ptr.rs
 create mode 100644 vendor/yoke/src/either.rs
 create mode 100644 vendor/yoke/src/erased.rs
 create mode 100644 vendor/yoke/src/kinda_sorta_dangling.rs
 create mode 100644 vendor/yoke/src/lib.rs
 create mode 100644 vendor/yoke/src/macro_impls.rs
 create mode 100644 vendor/yoke/src/yoke.rs
 create mode 100644 vendor/yoke/src/yokeable.rs
 create mode 100644 vendor/yoke/src/zero_from.rs
 create mode 100644 vendor/yoke/tests/bincode.rs
 create mode 100644 vendor/yoke/tests/miri.rs
 create mode 100644 vendor/zerofrom-derive/.cargo-checksum.json
 create mode 100644 vendor/zerofrom-derive/Cargo.lock
 create mode 100644 vendor/zerofrom-derive/Cargo.toml
 create mode 100644 vendor/zerofrom-derive/LICENSE
 create mode 100644 vendor/zerofrom-derive/README.md
 create mode 100644 vendor/zerofrom-derive/examples/zf_derive.rs
 create mode 100644 vendor/zerofrom-derive/src/lib.rs
 create mode 100644 vendor/zerofrom-derive/src/visitor.rs
 create mode 100644 vendor/zerofrom/.cargo-checksum.json
 create mode 100644 vendor/zerofrom/Cargo.toml
 create mode 100644 vendor/zerofrom/LICENSE
 create mode 100644 vendor/zerofrom/README.md
 create mode 100644 vendor/zerofrom/src/lib.rs
 create mode 100644 vendor/zerofrom/src/macro_impls.rs
 create mode 100644 vendor/zerofrom/src/zero_from.rs
 create mode 100644 vendor/zerotrie/.cargo-checksum.json
 create mode 100644 vendor/zerotrie/Cargo.lock
 create mode 100644 vendor/zerotrie/Cargo.toml
 create mode 100644 vendor/zerotrie/LICENSE
 create mode 100644 vendor/zerotrie/README.md
 create mode 100644 vendor/zerotrie/benches/overview.rs
 create mode 100644 vendor/zerotrie/examples/first_weekday_for_region.rs
 create mode 100644 vendor/zerotrie/src/builder/branch_meta.rs
 create mode 100644 vendor/zerotrie/src/builder/bytestr.rs
 create mode 100644 vendor/zerotrie/src/builder/konst/builder.rs
 create mode 100644 vendor/zerotrie/src/builder/konst/mod.rs
 create mode 100644 vendor/zerotrie/src/builder/konst/store.rs
 create mode 100644 vendor/zerotrie/src/builder/litemap.rs
 create mode 100644 vendor/zerotrie/src/builder/mod.rs
 create mode 100644 vendor/zerotrie/src/builder/nonconst/builder.rs
 create mode 100644 vendor/zerotrie/src/builder/nonconst/mod.rs
 create mode 100644 vendor/zerotrie/src/builder/nonconst/store.rs
 create mode 100644 vendor/zerotrie/src/byte_phf/builder.rs
 create mode 100644 vendor/zerotrie/src/byte_phf/cached_owned.rs
 create mode 100644 vendor/zerotrie/src/byte_phf/mod.rs
 create mode 100644 vendor/zerotrie/src/cursor.rs
 create mode 100644 vendor/zerotrie/src/error.rs
 create mode 100644 vendor/zerotrie/src/helpers.rs
 create mode 100644 vendor/zerotrie/src/lib.rs
 create mode 100644 vendor/zerotrie/src/options.rs
 create mode 100644 vendor/zerotrie/src/reader.rs
 create mode 100644 vendor/zerotrie/src/serde.rs
 create mode 100644 vendor/zerotrie/src/varint.rs
 create mode 100644 vendor/zerotrie/src/zerotrie.rs
 create mode 100644 vendor/zerotrie/tests/asciitrie_test.rs
 create mode 100644 vendor/zerotrie/tests/builder_test.rs
 create mode 100644 vendor/zerotrie/tests/data/data.rs
 create mode 100644 vendor/zerotrie/tests/derive_test.rs
 create mode 100644 vendor/zerotrie/tests/ignorecase_test.rs
 create mode 100644 vendor/zerotrie/tests/locale_aux_test.rs
 create mode 100644 vendor/zerovec-derive/.cargo-checksum.json
 create mode 100644 vendor/zerovec-derive/Cargo.lock
 create mode 100644 vendor/zerovec-derive/Cargo.toml
 create mode 100644 vendor/zerovec-derive/LICENSE
 create mode 100644 vendor/zerovec-derive/README.md
 create mode 100644 vendor/zerovec-derive/examples/derives.rs
 create mode 100644 vendor/zerovec-derive/examples/make.rs
 create mode 100644 vendor/zerovec-derive/examples/make_var.rs
 create mode 100644 vendor/zerovec-derive/src/lib.rs
 create mode 100644 vendor/zerovec-derive/src/make_ule.rs
 create mode 100644 vendor/zerovec-derive/src/make_varule.rs
 create mode 100644 vendor/zerovec-derive/src/ule.rs
 create mode 100644 vendor/zerovec-derive/src/utils.rs
 create mode 100644 vendor/zerovec-derive/src/varule.rs
 create mode 100644 vendor/zerovec/.cargo-checksum.json
 create mode 100644 vendor/zerovec/Cargo.lock
 create mode 100644 vendor/zerovec/Cargo.toml
 create mode 100644 vendor/zerovec/LICENSE
 create mode 100644 vendor/zerovec/README.md
 create mode 100644 vendor/zerovec/benches/vzv.rs
 create mode 100644 vendor/zerovec/benches/zeromap.rs
 create mode 100644 vendor/zerovec/benches/zerovec.rs
 create mode 100644 vendor/zerovec/benches/zerovec_iai.rs
 create mode 100644 vendor/zerovec/benches/zerovec_serde.rs
 create mode 100644 vendor/zerovec/examples/zv_serde.rs
 create mode 100644 vendor/zerovec/src/cow.rs
 create mode 100644 vendor/zerovec/src/hashmap/algorithms.rs
 create mode 100644 vendor/zerovec/src/hashmap/mod.rs
 create mode 100644 vendor/zerovec/src/hashmap/serde.rs
 create mode 100644 vendor/zerovec/src/lib.rs
 create mode 100644 vendor/zerovec/src/map/borrowed.rs
 create mode 100644 vendor/zerovec/src/map/databake.rs
 create mode 100644 vendor/zerovec/src/map/kv.rs
 create mode 100644 vendor/zerovec/src/map/map.rs
 create mode 100644 vendor/zerovec/src/map/mod.rs
 create mode 100644 vendor/zerovec/src/map/serde.rs
 create mode 100644 vendor/zerovec/src/map/serde_helpers.rs
 create mode 100644 vendor/zerovec/src/map/vecs.rs
 create mode 100644 vendor/zerovec/src/map2d/borrowed.rs
 create mode 100644 vendor/zerovec/src/map2d/cursor.rs
 create mode 100644 vendor/zerovec/src/map2d/databake.rs
 create mode 100644 vendor/zerovec/src/map2d/map.rs
 create mode 100644 vendor/zerovec/src/map2d/mod.rs
 create mode 100644 vendor/zerovec/src/map2d/serde.rs
 create mode 100644 vendor/zerovec/src/samples.rs
 create mode 100644 vendor/zerovec/src/ule/chars.rs
 create mode 100644 vendor/zerovec/src/ule/custom.rs
 create mode 100644 vendor/zerovec/src/ule/encode.rs
 create mode 100644 vendor/zerovec/src/ule/macros.rs
 create mode 100644 vendor/zerovec/src/ule/mod.rs
 create mode 100644 vendor/zerovec/src/ule/multi.rs
 create mode 100644 vendor/zerovec/src/ule/niche.rs
 create mode 100644 vendor/zerovec/src/ule/option.rs
 create mode 100644 vendor/zerovec/src/ule/plain.rs
 create mode 100644 vendor/zerovec/src/ule/slices.rs
 create mode 100644 vendor/zerovec/src/ule/test_utils.rs
 create mode 100644 vendor/zerovec/src/ule/tuple.rs
 create mode 100644 vendor/zerovec/src/ule/tuplevar.rs
 create mode 100644 vendor/zerovec/src/ule/vartuple.rs
 create mode 100644 vendor/zerovec/src/varzerovec/components.rs
 create mode 100644 vendor/zerovec/src/varzerovec/databake.rs
 create mode 100644 vendor/zerovec/src/varzerovec/error.rs
 create mode 100644 vendor/zerovec/src/varzerovec/lengthless.rs
 create mode 100644 vendor/zerovec/src/varzerovec/mod.rs
 create mode 100644 vendor/zerovec/src/varzerovec/owned.rs
 create mode 100644 vendor/zerovec/src/varzerovec/serde.rs
 create mode 100644 vendor/zerovec/src/varzerovec/slice.rs
 create mode 100644 vendor/zerovec/src/varzerovec/vec.rs
 create mode 100644 vendor/zerovec/src/yoke_impls.rs
 create mode 100644 vendor/zerovec/src/zerofrom_impls.rs
 create mode 100644 vendor/zerovec/src/zerovec/databake.rs
 create mode 100644 vendor/zerovec/src/zerovec/mod.rs
 create mode 100644 vendor/zerovec/src/zerovec/serde.rs
 create mode 100644 vendor/zerovec/src/zerovec/slice.rs

diff --git a/Cargo.lock b/Cargo.lock
index b019815f..3323c96b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -209,6 +209,17 @@ dependencies = [
  "windows-sys 0.48.0",
 ]
 
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
 [[package]]
 name = "encoding_rs"
 version = "0.8.34"
@@ -471,14 +482,111 @@ dependencies = [
  "tokio-native-tls",
 ]
 
+[[package]]
+name = "icu_collections"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
+dependencies = [
+ "displaydoc",
+ "potential_utf",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_core"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
+
+[[package]]
+name = "icu_properties"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "potential_utf",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
+
+[[package]]
+name = "icu_provider"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
+dependencies = [
+ "displaydoc",
+ "icu_locale_core",
+ "stable_deref_trait",
+ "tinystr",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerotrie",
+ "zerovec",
+]
+
 [[package]]
 name = "idna"
-version = "0.5.0"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
 dependencies = [
- "unicode-bidi",
- "unicode-normalization",
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
 ]
 
 [[package]]
@@ -567,6 +675,12 @@ version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
 
+[[package]]
+name = "litemap"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
+
 [[package]]
 name = "log"
 version = "0.4.22"
@@ -728,6 +842,15 @@ version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
 
+[[package]]
+name = "potential_utf"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
+dependencies = [
+ "zerovec",
+]
+
 [[package]]
 name = "proc-macro-error"
 version = "1.0.4"
@@ -813,8 +936,6 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
 [[package]]
 name = "reqwest"
 version = "0.11.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
 dependencies = [
  "base64 0.21.7",
  "bytes",
@@ -1041,6 +1162,12 @@ dependencies = [
  "autocfg",
 ]
 
+[[package]]
+name = "smallvec"
+version = "1.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+
 [[package]]
 name = "socket2"
 version = "0.5.7"
@@ -1051,6 +1178,12 @@ dependencies = [
  "windows-sys 0.52.0",
 ]
 
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
 [[package]]
 name = "static_assertions"
 version = "1.1.0"
@@ -1115,6 +1248,17 @@ version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
 
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
+
 [[package]]
 name = "system-configuration"
 version = "0.5.1"
@@ -1188,20 +1332,15 @@ dependencies = [
 ]
 
 [[package]]
-name = "tinyvec"
-version = "1.8.0"
+name = "tinystr"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
+checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
 dependencies = [
- "tinyvec_macros",
+ "displaydoc",
+ "zerovec",
 ]
 
-[[package]]
-name = "tinyvec_macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
 [[package]]
 name = "tokio"
 version = "1.40.0"
@@ -1271,27 +1410,12 @@ version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
 
-[[package]]
-name = "unicode-bidi"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
-
 [[package]]
 name = "unicode-ident"
 version = "1.0.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe"
 
-[[package]]
-name = "unicode-normalization"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
-dependencies = [
- "tinyvec",
-]
-
 [[package]]
 name = "unicode-segmentation"
 version = "1.11.0"
@@ -1307,14 +1431,18 @@ checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
 [[package]]
 name = "url"
 version = "2.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
 dependencies = [
  "form_urlencoded",
  "idna",
  "percent-encoding",
 ]
 
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
 [[package]]
 name = "uuid"
 version = "1.10.0"
@@ -1632,3 +1760,87 @@ dependencies = [
  "cfg-if",
  "windows-sys 0.48.0",
 ]
+
+[[package]]
+name = "writeable"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
+
+[[package]]
+name = "yoke"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "synstructure",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+ "synstructure",
+]
+
+[[package]]
+name = "zerotrie"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.77",
+]
diff --git a/Cargo.toml b/Cargo.toml
index 7a8c5682..fd31166d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -45,3 +45,7 @@ tokio = {version = "1.29.1", features = ["rt-multi-thread"] }
 
 [dev-dependencies]
 tempfile = "3.5.0"
+
+[patch.crates-io]
+reqwest = { path="vendor/reqwest" }
+url = { path = "vendor/url" }
diff --git a/vendor/displaydoc/.cargo-checksum.json b/vendor/displaydoc/.cargo-checksum.json
new file mode 100644
index 00000000..ddbf7a38
--- /dev/null
+++ b/vendor/displaydoc/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"9aadbd7c8b22fa4574b2080d0baaa908f43b5ed2c320c64ec88476cbf739871b","Cargo.lock":"53ebb1c438812bf2e049126afd9bb833d02278416d49ed436d67b4c5c03f21b1","Cargo.toml":"c6f12ae2dd031cf599ec131d3b6b89fb5de66edc4416b4a8f2f06b3fda889620","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"4e230c5596f208b8b752edaa1ff3ace5b1508da61f2069129fa5a6fbda6f4834","README.tpl":"974701ae7f6d238bd325dd32104a5265841e79a9b79a595f7fdd964711c0cd19","examples/simple.rs":"bca524b36621ac56044cbe3eebf8892f7a3b398fd8f257fc67b17b26ae34bfbf","src/attr.rs":"10b31136a5d46066066ea3988f8b857b554fa62b3737988967ae7c2aaa97a58b","src/expand.rs":"6d201ddf75b065875131f437d5a911bb4b2d3e9fe385eebbfc61101d790549dd","src/fmt.rs":"9c13cbcd337066614bc26ecfd36ea9730c9b8099083a9a7ffd79f8dc17e414f1","src/lib.rs":"01b770363022045aa8de41548b20764db7278ae90add903642312eaa4408d467","tests/compile_tests.rs":"935609d68eaa52e0ce9f29b3dae649787cd1f540f9b4bbadcbefcb8a0febcfc8","tests/happy.rs":"1b4c119184ca3914684c1cafaa25a8fbb9e60ef45eb257ad7ac86b8b2d7a3856","tests/no_std/enum_prefix.rs":"386e18cd6b6d35df0a864473a820aa05872f2f7f8364793adae784203946eb82","tests/no_std/enum_prefix_missing.rs":"f60100eac4b3a0f86c57b2082ee52e94b3fa0b5029e535fd3fd55cc1aeaf308c","tests/no_std/enum_prefix_missing.stderr":"e0e98f4dfc21f8cb133519ff98f10b08d8c76219b54cfbc6436c46ba9c601ead","tests/no_std/multi_line.rs":"b0c0cdc7631234a9b7a49205bb1d6824821153001ab30ddad1948deaaaa363c3","tests/no_std/multi_line.stderr":"08cba6ace9ac1938ea8fe18ed4a536b861ad48a9f9d646b4a7ebfe4bf5da438c","tests/no_std/multi_line_allow.rs":"7f7b300db1336b5d9487f82e10deee6a22a7d749ae3698e13e45455540ed5742","tests/no_std/with.rs":"ba96ba70da11f7d5afb5b43a23d8f1d7d28b1eceda8c84c1595006145b8e15fd","tests/no_std/without.rs":"fa2d73e9d6b3bff8073bc95296aeef69e4e8c20a8e6666c239041564877cfec9","tests/no_std/without.stderr":"be00cd4dd7396f324c1cb6283d02a38ad55e3b4d2684e7a4b6bbd43ed937c7f2","tests/num_in_field.rs":"d0bc3ba7f9aea17d3abee4ac05afe6d4a0112d3527698791e1eeaa3464e2b1d4","tests/std/enum_prefix.rs":"baab2132d9468ec167423048ba5244394238e488523214b9e50adee46920f700","tests/std/enum_prefix_missing.rs":"58c8f7c9d851689ca59caf475c0e5f12674f5a58ecbb025cac232acc68eec8aa","tests/std/enum_prefix_missing.stderr":"a26fa36de033d2b032a1e6475cb8d89ee1266e15647bcfaf192931188b38445b","tests/std/multi_line.rs":"b0c0cdc7631234a9b7a49205bb1d6824821153001ab30ddad1948deaaaa363c3","tests/std/multi_line.stderr":"02ca7d07ae4f72c726457c918506ed38873b5085af53c5b60090b53cf5ae46b0","tests/std/multi_line_allow.rs":"ecacc0120aa127dc289d6333348ab357c74d6cb49851de43e7cf3984facf0abc","tests/std/multiple.rs":"b8dc9939c41b2655600ba1b698dbdbbef6e907bff533b6f2cbc315134013fc84","tests/std/without.rs":"fa2d73e9d6b3bff8073bc95296aeef69e4e8c20a8e6666c239041564877cfec9","tests/std/without.stderr":"606a9470520b99eb17c1e609e1074b3765ccd3ab4f1d0b3c3cc2bda9811884de","tests/variantless.rs":"af6930daa15f488fcc00fd2a623a2662ddb86d071ffe698bd97c13c65b9b50a3","update-readme.sh":"7885d60cba79c3dc2b779b9805d520960cc7d8b82d7f1d0c59deff4140ac857b"},"package":"97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"}
\ No newline at end of file
diff --git a/vendor/displaydoc/CHANGELOG.md b/vendor/displaydoc/CHANGELOG.md
new file mode 100644
index 00000000..b4d6cad0
--- /dev/null
+++ b/vendor/displaydoc/CHANGELOG.md
@@ -0,0 +1,58 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+<!-- next-header -->
+
+## [Unreleased] - ReleaseDate
+
+# [0.2.5] - 2024-06-20
+
+# Changed
+ - Don't name the output of the const block to work around `non_local_definitions` error (#47)
+ - Reference the `core` crate correctly to avoid clashes with modules named `core` (#45)
+ - Explicitly list MSRV in Cargo.toml (#51)
+ - Bump edition to 2021 (#51)
+
+# [0.2.4] - 2022-05-02
+
+## Added
+- Updated `syn` dependency to 2.0
+- Support for empty enums
+- Implicitly require fmt::Display on all type parameters unless overridden
+
+## Changed
+- Bumped MSRV to 1.56
+
+# [0.2.3] - 2021-07-16
+## Added
+- Added `#[displaydoc("..")]` attribute for overriding a doc comment
+
+# [0.2.2] - 2021-07-01
+## Added
+- Added prefix feature to use the doc comment from an enum and prepend it
+  before the error message from each variant.
+
+# [0.2.1] - 2021-03-26
+## Added
+- Added opt in support for ignoring extra doc attributes
+
+# [0.2.0] - 2021-03-16
+## Changed
+
+- (BREAKING) disallow multiple `doc` attributes in display impl
+  [https://github.com/yaahc/displaydoc/pull/22]. Allowing and ignoring extra
+  doc attributes made it too easy to accidentally create a broken display
+  implementation with missing context without realizing it, this change turns
+  that into a hard error and directs users towards block comments if multiple
+  lines are needed.
+
+<!-- next-url -->
+[Unreleased]: https://github.com/yaahc/displaydoc/compare/v0.2.4...HEAD
+[0.2.4]: https://github.com/yaahc/displaydoc/compare/v0.2.3...v0.2.4
+[0.2.3]: https://github.com/yaahc/displaydoc/compare/v0.2.2...v0.2.3
+[0.2.2]: https://github.com/yaahc/displaydoc/compare/v0.2.1...v0.2.2
+[0.2.1]: https://github.com/yaahc/displaydoc/compare/v0.2.0...v0.2.1
+[0.2.0]: https://github.com/yaahc/displaydoc/releases/tag/v0.2.0
diff --git a/vendor/displaydoc/Cargo.lock b/vendor/displaydoc/Cargo.lock
new file mode 100644
index 00000000..5e313d2e
--- /dev/null
+++ b/vendor/displaydoc/Cargo.lock
@@ -0,0 +1,404 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "ansi_term"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "ctor"
+version = "0.1.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
+dependencies = [
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "difference"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+dependencies = [
+ "libc",
+ "pretty_assertions",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "static_assertions",
+ "syn 2.0.66",
+ "thiserror",
+ "trybuild",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[package]]
+name = "libc"
+version = "0.2.155"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "output_vt100"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "pretty_assertions"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427"
+dependencies = [
+ "ansi_term",
+ "ctor",
+ "difference",
+ "output_vt100",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.85"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
+
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "serde"
+version = "1.0.203"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.203"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.117"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.66"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.61"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "trybuild"
+version = "1.0.96"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33a5f13f11071020bb12de7a16b925d2d58636175c20c11dc5f96cb64bb6c9b3"
+dependencies = [
+ "glob",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "termcolor",
+ "toml",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
+dependencies = [
+ "windows-sys",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
+
+[[package]]
+name = "winnow"
+version = "0.6.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1"
+dependencies = [
+ "memchr",
+]
diff --git a/vendor/displaydoc/Cargo.toml b/vendor/displaydoc/Cargo.toml
new file mode 100644
index 00000000..0202d998
--- /dev/null
+++ b/vendor/displaydoc/Cargo.toml
@@ -0,0 +1,115 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.56.0"
+name = "displaydoc"
+version = "0.2.5"
+authors = ["Jane Lusby <jlusby@yaah.dev>"]
+description = """
+A derive macro for implementing the display Trait via a doc comment and string interpolation
+"""
+homepage = "https://github.com/yaahc/displaydoc"
+documentation = "https://docs.rs/displaydoc"
+readme = "README.md"
+keywords = [
+    "display",
+    "derive",
+]
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/yaahc/displaydoc"
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = [
+    "--cfg",
+    "docsrs",
+]
+
+[package.metadata.release]
+no-dev-version = true
+pre-release-hook = ["./update-readme.sh"]
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+replace = "{{version}}"
+search = "Unreleased"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "src/lib.rs"
+replace = "#![doc(html_root_url = \"https://docs.rs/{{crate_name}}/{{version}}\")]"
+search = '#!\[doc\(html_root_url.*'
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+replace = "{{date}}"
+search = "ReleaseDate"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-header -->
+
+# [Unreleased] - ReleaseDate"""
+search = "<!-- next-header -->"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = "...{{tag_name}}"
+search = '\.\.\.HEAD'
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-url -->
+[Unreleased]: https://github.com/yaahc/{{crate_name}}/compare/{{tag_name}}...HEAD"""
+search = "<!-- next-url -->"
+
+[lib]
+path = "src/lib.rs"
+proc-macro = true
+
+[dependencies.proc-macro2]
+version = "1.0"
+
+[dependencies.quote]
+version = "1.0"
+
+[dependencies.syn]
+version = "2.0"
+
+[dev-dependencies.libc]
+version = "0.2"
+default-features = false
+
+[dev-dependencies.pretty_assertions]
+version = "0.6.1"
+
+[dev-dependencies.rustversion]
+version = "1.0.0"
+
+[dev-dependencies.static_assertions]
+version = "1.1"
+
+[dev-dependencies.thiserror]
+version = "1.0.24"
+
+[dev-dependencies.trybuild]
+version = "1.0"
+
+[features]
+default = ["std"]
+std = []
diff --git a/vendor/unicode-bidi/LICENSE-APACHE b/vendor/displaydoc/LICENSE-APACHE
similarity index 100%
rename from vendor/unicode-bidi/LICENSE-APACHE
rename to vendor/displaydoc/LICENSE-APACHE
diff --git a/vendor/displaydoc/LICENSE-MIT b/vendor/displaydoc/LICENSE-MIT
new file mode 100644
index 00000000..31aa7938
--- /dev/null
+++ b/vendor/displaydoc/LICENSE-MIT
@@ -0,0 +1,23 @@
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/vendor/displaydoc/README.md b/vendor/displaydoc/README.md
new file mode 100644
index 00000000..a609b0f2
--- /dev/null
+++ b/vendor/displaydoc/README.md
@@ -0,0 +1,115 @@
+derive(Display) /// `From<docs>`
+===============
+
+[![Latest Version](https://img.shields.io/crates/v/displaydoc.svg)](https://crates.io/crates/displaydoc)
+[![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/displaydoc)
+
+This library provides a convenient derive macro for the standard library's
+[`core::fmt::Display`] trait.
+
+[`core::fmt::Display`]: https://doc.rust-lang.org/std/fmt/trait.Display.html
+
+```toml
+[dependencies]
+displaydoc = "0.2"
+```
+
+*Compiler support: requires rustc 1.56+*
+
+<br>
+
+### Example
+
+*Demonstration alongside the [`Error`][std::error::Error] derive macro from [`thiserror`](https://docs.rs/thiserror/1.0.25/thiserror/index.html),
+to propagate source locations from [`io::Error`][std::io::Error] with the `#[source]` attribute:*
+```rust
+use std::io;
+use displaydoc::Display;
+use thiserror::Error;
+
+#[derive(Display, Error, Debug)]
+pub enum DataStoreError {
+    /// data store disconnected
+    Disconnect(#[source] io::Error),
+    /// the data for key `{0}` is not available
+    Redaction(String),
+    /// invalid header (expected {expected:?}, found {found:?})
+    InvalidHeader {
+        expected: String,
+        found: String,
+    },
+    /// unknown data store error
+    Unknown,
+}
+
+let error = DataStoreError::Redaction("CLASSIFIED CONTENT".to_string());
+assert!("the data for key `CLASSIFIED CONTENT` is not available" == &format!("{}", error));
+```
+*Note that although [`io::Error`][std::io::Error] implements `Display`, we do not add it to the
+generated message for `DataStoreError::Disconnect`, since it is already made available via
+`#[source]`. See further context on avoiding duplication in error reports at the rust blog
+[here](https://github.com/yaahc/blog.rust-lang.org/blob/master/posts/inside-rust/2021-05-15-What-the-error-handling-project-group-is-working-towards.md#duplicate-information-issue).*
+
+<br>
+
+### Details
+
+- A `fmt::Display` impl is generated for your enum if you provide
+  a docstring comment on each variant as shown above in the example. The
+  `Display` derive macro supports a shorthand for interpolating fields from
+  the error:
+    - `/// {var}` ⟶ `write!("{}", self.var)`
+    - `/// {0}` ⟶ `write!("{}", self.0)`
+    - `/// {var:?}` ⟶ `write!("{:?}", self.var)`
+    - `/// {0:?}` ⟶ `write!("{:?}", self.0)`
+- This also works with structs and [generic types][crate::Display#generic-type-parameters]:
+```rust
+/// oh no, an error: {0}
+#[derive(Display)]
+pub struct Error<E>(pub E);
+
+let error: Error<&str> = Error("muahaha i am an error");
+assert!("oh no, an error: muahaha i am an error" == &format!("{}", error));
+```
+
+- Two optional attributes can be added to your types next to the derive:
+
+    - `#[ignore_extra_doc_attributes]` makes the macro ignore any doc
+      comment attributes (or `///` lines) after the first. Multi-line
+      comments using `///` are otherwise treated as an error, so use this
+      attribute or consider switching to block doc comments (`/** */`).
+
+    - `#[prefix_enum_doc_attributes]` combines the doc comment message on
+      your enum itself with the messages for each variant, in the format
+      “enum: variant”. When added to an enum, the doc comment on the enum
+      becomes mandatory. When added to any other type, it has no effect.
+
+- In case you want to have an independent doc comment, the
+  `#[displaydoc("...")` atrribute may be used on the variant or struct to
+  override it.
+
+<br>
+
+### FAQ
+
+1. **Is this crate `no_std` compatible?**
+    * Yes! This crate implements the [`core::fmt::Display`] trait, not the [`std::fmt::Display`] trait, so it should work in `std` and `no_std` environments. Just add `default-features = false`.
+
+2. **Does this crate work with `Path` and `PathBuf` via the `Display` trait?**
+    * Yuuup. This crate uses @dtolnay's [autoref specialization technique](https://github.com/dtolnay/case-studies/blob/master/autoref-specialization/README.md) to add a special trait for types to get the display impl. It then specializes for `Path` and `PathBuf`, and when either of these types are found, it calls `self.display()` to get a `std::path::Display<'_>` type which can be used with the `Display` format specifier!
+
+
+#### License
+
+<sup>
+Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
+2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
+</sup>
+
+<br>
+
+<sub>
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
+be dual licensed as above, without any additional terms or conditions.
+</sub>
diff --git a/vendor/displaydoc/README.tpl b/vendor/displaydoc/README.tpl
new file mode 100644
index 00000000..6206a9e7
--- /dev/null
+++ b/vendor/displaydoc/README.tpl
@@ -0,0 +1,23 @@
+derive(Display) /// `From<docs>`
+===============
+
+[![Latest Version](https://img.shields.io/crates/v/displaydoc.svg)](https://crates.io/crates/displaydoc)
+[![Rust Documentation](https://img.shields.io/badge/api-rustdoc-blue.svg)](https://docs.rs/displaydoc)
+
+{{readme}}
+
+
+#### License
+
+<sup>
+Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
+2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
+</sup>
+
+<br>
+
+<sub>
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
+be dual licensed as above, without any additional terms or conditions.
+</sub>
diff --git a/vendor/displaydoc/examples/simple.rs b/vendor/displaydoc/examples/simple.rs
new file mode 100644
index 00000000..f4aad213
--- /dev/null
+++ b/vendor/displaydoc/examples/simple.rs
@@ -0,0 +1,36 @@
+use displaydoc::Display;
+
+#[derive(Debug, Display)]
+pub enum DataStoreError {
+    /// data store disconnected
+    Disconnect,
+    /// the data for key `{0}` is not available
+    Redaction(String),
+    /// invalid header (expected {expected:?}, found {found:?})
+    InvalidHeader { expected: String, found: String },
+    /// unknown data store error
+    Unknown,
+}
+
+fn main() {
+    let disconnect = DataStoreError::Disconnect;
+    println!(
+        "Enum value `Disconnect` should be printed as:\n\t{}",
+        disconnect
+    );
+
+    let redaction = DataStoreError::Redaction(String::from("Dummy"));
+    println!(
+        "Enum value `Redaction` should be printed as:\n\t{}",
+        redaction
+    );
+
+    let invalid_header = DataStoreError::InvalidHeader {
+        expected: String::from("https"),
+        found: String::from("http"),
+    };
+    println!(
+        "Enum value `InvalidHeader` should be printed as:\n\t{}",
+        invalid_header
+    );
+}
diff --git a/vendor/displaydoc/src/attr.rs b/vendor/displaydoc/src/attr.rs
new file mode 100644
index 00000000..afda4b90
--- /dev/null
+++ b/vendor/displaydoc/src/attr.rs
@@ -0,0 +1,137 @@
+use proc_macro2::TokenStream;
+use quote::{quote, ToTokens};
+use syn::{Attribute, LitStr, Meta, Result};
+
+#[derive(Clone)]
+pub(crate) struct Display {
+    pub(crate) fmt: LitStr,
+    pub(crate) args: TokenStream,
+}
+
+pub(crate) struct VariantDisplay {
+    pub(crate) r#enum: Option<Display>,
+    pub(crate) variant: Display,
+}
+
+impl ToTokens for Display {
+    fn to_tokens(&self, tokens: &mut TokenStream) {
+        let fmt = &self.fmt;
+        let args = &self.args;
+        tokens.extend(quote! {
+            write!(formatter, #fmt #args)
+        });
+    }
+}
+
+impl ToTokens for VariantDisplay {
+    fn to_tokens(&self, tokens: &mut TokenStream) {
+        if let Some(ref r#enum) = self.r#enum {
+            r#enum.to_tokens(tokens);
+            tokens.extend(quote! { ?; write!(formatter, ": ")?; });
+        }
+        self.variant.to_tokens(tokens);
+    }
+}
+
+pub(crate) struct AttrsHelper {
+    ignore_extra_doc_attributes: bool,
+    prefix_enum_doc_attributes: bool,
+}
+
+impl AttrsHelper {
+    pub(crate) fn new(attrs: &[Attribute]) -> Self {
+        let ignore_extra_doc_attributes = attrs
+            .iter()
+            .any(|attr| attr.path().is_ident("ignore_extra_doc_attributes"));
+        let prefix_enum_doc_attributes = attrs
+            .iter()
+            .any(|attr| attr.path().is_ident("prefix_enum_doc_attributes"));
+
+        Self {
+            ignore_extra_doc_attributes,
+            prefix_enum_doc_attributes,
+        }
+    }
+
+    pub(crate) fn display(&self, attrs: &[Attribute]) -> Result<Option<Display>> {
+        let displaydoc_attr = attrs.iter().find(|attr| attr.path().is_ident("displaydoc"));
+
+        if let Some(displaydoc_attr) = displaydoc_attr {
+            let lit = displaydoc_attr
+                .parse_args()
+                .expect("#[displaydoc(\"foo\")] must contain string arguments");
+            let mut display = Display {
+                fmt: lit,
+                args: TokenStream::new(),
+            };
+
+            display.expand_shorthand();
+            return Ok(Some(display));
+        }
+
+        let num_doc_attrs = attrs
+            .iter()
+            .filter(|attr| attr.path().is_ident("doc"))
+            .count();
+
+        if !self.ignore_extra_doc_attributes && num_doc_attrs > 1 {
+            panic!("Multi-line comments are disabled by default by displaydoc. Please consider using block doc comments (/** */) or adding the #[ignore_extra_doc_attributes] attribute to your type next to the derive.");
+        }
+
+        for attr in attrs {
+            if attr.path().is_ident("doc") {
+                let lit = match &attr.meta {
+                    Meta::NameValue(syn::MetaNameValue {
+                        value:
+                            syn::Expr::Lit(syn::ExprLit {
+                                lit: syn::Lit::Str(lit),
+                                ..
+                            }),
+                        ..
+                    }) => lit,
+                    _ => unimplemented!(),
+                };
+
+                // Make an attempt at cleaning up multiline doc comments.
+                let doc_str = lit
+                    .value()
+                    .lines()
+                    .map(|line| line.trim().trim_start_matches('*').trim())
+                    .collect::<Vec<&str>>()
+                    .join("\n");
+
+                let lit = LitStr::new(doc_str.trim(), lit.span());
+
+                let mut display = Display {
+                    fmt: lit,
+                    args: TokenStream::new(),
+                };
+
+                display.expand_shorthand();
+                return Ok(Some(display));
+            }
+        }
+
+        Ok(None)
+    }
+
+    pub(crate) fn display_with_input(
+        &self,
+        r#enum: &[Attribute],
+        variant: &[Attribute],
+    ) -> Result<Option<VariantDisplay>> {
+        let r#enum = if self.prefix_enum_doc_attributes {
+            let result = self
+                .display(r#enum)?
+                .expect("Missing doc comment on enum with #[prefix_enum_doc_attributes]. Please remove the attribute or add a doc comment to the enum itself.");
+
+            Some(result)
+        } else {
+            None
+        };
+
+        Ok(self
+            .display(variant)?
+            .map(|variant| VariantDisplay { r#enum, variant }))
+    }
+}
diff --git a/vendor/displaydoc/src/expand.rs b/vendor/displaydoc/src/expand.rs
new file mode 100644
index 00000000..3b146f81
--- /dev/null
+++ b/vendor/displaydoc/src/expand.rs
@@ -0,0 +1,409 @@
+use super::attr::AttrsHelper;
+use proc_macro2::{Span, TokenStream};
+use quote::{format_ident, quote};
+use syn::{
+    punctuated::Punctuated,
+    token::{Colon, Comma, PathSep, Plus, Where},
+    Data, DataEnum, DataStruct, DeriveInput, Error, Fields, Generics, Ident, Path, PathArguments,
+    PathSegment, PredicateType, Result, TraitBound, TraitBoundModifier, Type, TypeParam,
+    TypeParamBound, TypePath, WhereClause, WherePredicate,
+};
+
+use std::collections::HashMap;
+
+pub(crate) fn derive(input: &DeriveInput) -> Result<TokenStream> {
+    let impls = match &input.data {
+        Data::Struct(data) => impl_struct(input, data),
+        Data::Enum(data) => impl_enum(input, data),
+        Data::Union(_) => Err(Error::new_spanned(input, "Unions are not supported")),
+    }?;
+
+    let helpers = specialization();
+    Ok(quote! {
+        #[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
+        const _: () = {
+            #helpers
+            #impls
+        };
+    })
+}
+
+#[cfg(feature = "std")]
+fn specialization() -> TokenStream {
+    quote! {
+        trait DisplayToDisplayDoc {
+            fn __displaydoc_display(&self) -> Self;
+        }
+
+        impl<T: ::core::fmt::Display> DisplayToDisplayDoc for &T {
+            fn __displaydoc_display(&self) -> Self {
+                self
+            }
+        }
+
+        // If the `std` feature gets enabled we want to ensure that any crate
+        // using displaydoc can still reference the std crate, which is already
+        // being compiled in by whoever enabled the `std` feature in
+        // `displaydoc`, even if the crates using displaydoc are no_std.
+        extern crate std;
+
+        trait PathToDisplayDoc {
+            fn __displaydoc_display(&self) -> std::path::Display<'_>;
+        }
+
+        impl PathToDisplayDoc for std::path::Path {
+            fn __displaydoc_display(&self) -> std::path::Display<'_> {
+                self.display()
+            }
+        }
+
+        impl PathToDisplayDoc for std::path::PathBuf {
+            fn __displaydoc_display(&self) -> std::path::Display<'_> {
+                self.display()
+            }
+        }
+    }
+}
+
+#[cfg(not(feature = "std"))]
+fn specialization() -> TokenStream {
+    quote! {}
+}
+
+fn impl_struct(input: &DeriveInput, data: &DataStruct) -> Result<TokenStream> {
+    let ty = &input.ident;
+    let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
+    let where_clause = generate_where_clause(&input.generics, where_clause);
+
+    let helper = AttrsHelper::new(&input.attrs);
+
+    let display = helper.display(&input.attrs)?.map(|display| {
+        let pat = match &data.fields {
+            Fields::Named(fields) => {
+                let var = fields.named.iter().map(|field| &field.ident);
+                quote!(Self { #(#var),* })
+            }
+            Fields::Unnamed(fields) => {
+                let var = (0..fields.unnamed.len()).map(|i| format_ident!("_{}", i));
+                quote!(Self(#(#var),*))
+            }
+            Fields::Unit => quote!(_),
+        };
+        quote! {
+            impl #impl_generics ::core::fmt::Display for #ty #ty_generics #where_clause {
+                fn fmt(&self, formatter: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
+                    // NB: This destructures the fields of `self` into named variables (for unnamed
+                    // fields, it uses _0, _1, etc as above). The `#[allow(unused_variables)]`
+                    // section means it doesn't have to parse the individual field references out of
+                    // the docstring.
+                    #[allow(unused_variables)]
+                    let #pat = self;
+                    #display
+                }
+            }
+        }
+    });
+
+    Ok(quote! { #display })
+}
+
+/// Create a `where` predicate for `ident`, without any [bound][TypeParamBound]s yet.
+fn new_empty_where_type_predicate(ident: Ident) -> PredicateType {
+    let mut path_segments = Punctuated::<PathSegment, PathSep>::new();
+    path_segments.push_value(PathSegment {
+        ident,
+        arguments: PathArguments::None,
+    });
+    PredicateType {
+        lifetimes: None,
+        bounded_ty: Type::Path(TypePath {
+            qself: None,
+            path: Path {
+                leading_colon: None,
+                segments: path_segments,
+            },
+        }),
+        colon_token: Colon {
+            spans: [Span::call_site()],
+        },
+        bounds: Punctuated::<TypeParamBound, Plus>::new(),
+    }
+}
+
+/// Create a `where` clause that we can add [WherePredicate]s to.
+fn new_empty_where_clause() -> WhereClause {
+    WhereClause {
+        where_token: Where {
+            span: Span::call_site(),
+        },
+        predicates: Punctuated::<WherePredicate, Comma>::new(),
+    }
+}
+
+enum UseGlobalPrefix {
+    LeadingColon,
+    #[allow(dead_code)]
+    NoLeadingColon,
+}
+
+/// Create a path with segments composed of [Idents] *without* any [PathArguments].
+fn join_paths(name_segments: &[&str], use_global_prefix: UseGlobalPrefix) -> Path {
+    let mut segments = Punctuated::<PathSegment, PathSep>::new();
+    assert!(!name_segments.is_empty());
+    segments.push_value(PathSegment {
+        ident: Ident::new(name_segments[0], Span::call_site()),
+        arguments: PathArguments::None,
+    });
+    for name in name_segments[1..].iter() {
+        segments.push_punct(PathSep {
+            spans: [Span::call_site(), Span::mixed_site()],
+        });
+        segments.push_value(PathSegment {
+            ident: Ident::new(name, Span::call_site()),
+            arguments: PathArguments::None,
+        });
+    }
+    Path {
+        leading_colon: match use_global_prefix {
+            UseGlobalPrefix::LeadingColon => Some(PathSep {
+                spans: [Span::call_site(), Span::mixed_site()],
+            }),
+            UseGlobalPrefix::NoLeadingColon => None,
+        },
+        segments,
+    }
+}
+
+/// Push `new_type_predicate` onto the end of `where_clause`.
+fn append_where_clause_type_predicate(
+    where_clause: &mut WhereClause,
+    new_type_predicate: PredicateType,
+) {
+    // Push a comma at the end if there are already any `where` predicates.
+    if !where_clause.predicates.is_empty() {
+        where_clause.predicates.push_punct(Comma {
+            spans: [Span::call_site()],
+        });
+    }
+    where_clause
+        .predicates
+        .push_value(WherePredicate::Type(new_type_predicate));
+}
+
+/// Add a requirement for [core::fmt::Display] to a `where` predicate for some type.
+fn add_display_constraint_to_type_predicate(
+    predicate_that_needs_a_display_impl: &mut PredicateType,
+) {
+    // Create a `Path` of `::core::fmt::Display`.
+    let display_path = join_paths(&["core", "fmt", "Display"], UseGlobalPrefix::LeadingColon);
+
+    let display_bound = TypeParamBound::Trait(TraitBound {
+        paren_token: None,
+        modifier: TraitBoundModifier::None,
+        lifetimes: None,
+        path: display_path,
+    });
+    if !predicate_that_needs_a_display_impl.bounds.is_empty() {
+        predicate_that_needs_a_display_impl.bounds.push_punct(Plus {
+            spans: [Span::call_site()],
+        });
+    }
+
+    predicate_that_needs_a_display_impl
+        .bounds
+        .push_value(display_bound);
+}
+
+/// Map each declared generic type parameter to the set of all trait boundaries declared on it.
+///
+/// These boundaries may come from the declaration site:
+///     pub enum E<T: MyTrait> { ... }
+/// or a `where` clause after the parameter declarations:
+///     pub enum E<T> where T: MyTrait { ... }
+/// This method will return the boundaries from both of those cases.
+fn extract_trait_constraints_from_source(
+    where_clause: &WhereClause,
+    type_params: &[&TypeParam],
+) -> HashMap<Ident, Vec<TraitBound>> {
+    // Add trait bounds provided at the declaration site of type parameters for the struct/enum.
+    let mut param_constraint_mapping: HashMap<Ident, Vec<TraitBound>> = type_params
+        .iter()
+        .map(|type_param| {
+            let trait_bounds: Vec<TraitBound> = type_param
+                .bounds
+                .iter()
+                .flat_map(|bound| match bound {
+                    TypeParamBound::Trait(trait_bound) => Some(trait_bound),
+                    _ => None,
+                })
+                .cloned()
+                .collect();
+            (type_param.ident.clone(), trait_bounds)
+        })
+        .collect();
+
+    // Add trait bounds from `where` clauses, which may be type parameters or types containing
+    // those parameters.
+    for predicate in where_clause.predicates.iter() {
+        // We only care about type and not lifetime constraints here.
+        if let WherePredicate::Type(ref pred_ty) = predicate {
+            let ident = match &pred_ty.bounded_ty {
+                Type::Path(TypePath { path, qself: None }) => match path.get_ident() {
+                    None => continue,
+                    Some(ident) => ident,
+                },
+                _ => continue,
+            };
+            // We ignore any type constraints that aren't direct references to type
+            // parameters of the current enum of struct definition. No types can be
+            // constrained in a `where` clause unless they are a type parameter or a generic
+            // type instantiated with one of the type parameters, so by only allowing single
+            // identifiers, we can be sure that the constrained type is a type parameter
+            // that is contained in `param_constraint_mapping`.
+            if let Some((_, ref mut known_bounds)) = param_constraint_mapping
+                .iter_mut()
+                .find(|(id, _)| *id == ident)
+            {
+                for bound in pred_ty.bounds.iter() {
+                    // We only care about trait bounds here.
+                    if let TypeParamBound::Trait(ref bound) = bound {
+                        known_bounds.push(bound.clone());
+                    }
+                }
+            }
+        }
+    }
+
+    param_constraint_mapping
+}
+
+/// Hygienically add `where _: Display` to the set of [TypeParamBound]s for `ident`, creating such
+/// a set if necessary.
+fn ensure_display_in_where_clause_for_type(where_clause: &mut WhereClause, ident: Ident) {
+    for pred_ty in where_clause
+        .predicates
+        .iter_mut()
+        // Find the `where` predicate constraining the current type param, if it exists.
+        .flat_map(|predicate| match predicate {
+            WherePredicate::Type(pred_ty) => Some(pred_ty),
+            // We're looking through type constraints, not lifetime constraints.
+            _ => None,
+        })
+    {
+        // Do a complicated destructuring in order to check if the type being constrained in this
+        // `where` clause is the type we're looking for, so we can use the mutable reference to
+        // `pred_ty` if so.
+        let matches_desired_type = matches!(
+            &pred_ty.bounded_ty,
+            Type::Path(TypePath { path, .. }) if Some(&ident) == path.get_ident());
+        if matches_desired_type {
+            add_display_constraint_to_type_predicate(pred_ty);
+            return;
+        }
+    }
+
+    // If there is no `where` predicate for the current type param, we will construct one.
+    let mut new_type_predicate = new_empty_where_type_predicate(ident);
+    add_display_constraint_to_type_predicate(&mut new_type_predicate);
+    append_where_clause_type_predicate(where_clause, new_type_predicate);
+}
+
+/// For all declared type parameters, add a [core::fmt::Display] constraint, unless the type
+/// parameter already has any type constraint.
+fn ensure_where_clause_has_display_for_all_unconstrained_members(
+    where_clause: &mut WhereClause,
+    type_params: &[&TypeParam],
+) {
+    let param_constraint_mapping = extract_trait_constraints_from_source(where_clause, type_params);
+
+    for (ident, known_bounds) in param_constraint_mapping.into_iter() {
+        // If the type parameter has any constraints already, we don't want to touch it, to avoid
+        // breaking use cases where a type parameter only needs to impl `Debug`, for example.
+        if known_bounds.is_empty() {
+            ensure_display_in_where_clause_for_type(where_clause, ident);
+        }
+    }
+}
+
+/// Generate a `where` clause that ensures all generic type parameters `impl`
+/// [core::fmt::Display] unless already constrained.
+///
+/// This approach allows struct/enum definitions deriving [crate::Display] to avoid hardcoding
+/// a [core::fmt::Display] constraint into every type parameter.
+///
+/// If the type parameter isn't already constrained, we add a `where _: Display` clause to our
+/// display implementation to expect to be able to format every enum case or struct member.
+///
+/// In fact, we would preferably only require `where _: Display` or `where _: Debug` where the
+/// format string actually requires it. However, while [`std::fmt` defines a formal syntax for
+/// `format!()`][format syntax], it *doesn't* expose the actual logic to parse the format string,
+/// which appears to live in [`rustc_parse_format`]. While we use the [`syn`] crate to parse rust
+/// syntax, it also doesn't currently provide any method to introspect a `format!()` string. It
+/// would be nice to contribute this upstream in [`syn`].
+///
+/// [format syntax]: std::fmt#syntax
+/// [`rustc_parse_format`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_parse_format/index.html
+fn generate_where_clause(generics: &Generics, where_clause: Option<&WhereClause>) -> WhereClause {
+    let mut where_clause = where_clause.cloned().unwrap_or_else(new_empty_where_clause);
+    let type_params: Vec<&TypeParam> = generics.type_params().collect();
+    ensure_where_clause_has_display_for_all_unconstrained_members(&mut where_clause, &type_params);
+    where_clause
+}
+
+fn impl_enum(input: &DeriveInput, data: &DataEnum) -> Result<TokenStream> {
+    let ty = &input.ident;
+    let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
+    let where_clause = generate_where_clause(&input.generics, where_clause);
+
+    let helper = AttrsHelper::new(&input.attrs);
+
+    let displays = data
+        .variants
+        .iter()
+        .map(|variant| helper.display_with_input(&input.attrs, &variant.attrs))
+        .collect::<Result<Vec<_>>>()?;
+
+    if data.variants.is_empty() {
+        Ok(quote! {
+            impl #impl_generics ::core::fmt::Display for #ty #ty_generics #where_clause {
+                fn fmt(&self, formatter: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
+                    unreachable!("empty enums cannot be instantiated and thus cannot be printed")
+                }
+            }
+        })
+    } else if displays.iter().any(Option::is_some) {
+        let arms = data
+            .variants
+            .iter()
+            .zip(displays)
+            .map(|(variant, display)| {
+                let display =
+                    display.ok_or_else(|| Error::new_spanned(variant, "missing doc comment"))?;
+                let ident = &variant.ident;
+                Ok(match &variant.fields {
+                    Fields::Named(fields) => {
+                        let var = fields.named.iter().map(|field| &field.ident);
+                        quote!(Self::#ident { #(#var),* } => { #display })
+                    }
+                    Fields::Unnamed(fields) => {
+                        let var = (0..fields.unnamed.len()).map(|i| format_ident!("_{}", i));
+                        quote!(Self::#ident(#(#var),*) => { #display })
+                    }
+                    Fields::Unit => quote!(Self::#ident => { #display }),
+                })
+            })
+            .collect::<Result<Vec<_>>>()?;
+        Ok(quote! {
+            impl #impl_generics ::core::fmt::Display for #ty #ty_generics #where_clause {
+                fn fmt(&self, formatter: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
+                    #[allow(unused_variables)]
+                    match self {
+                        #(#arms,)*
+                    }
+                }
+            }
+        })
+    } else {
+        Err(Error::new_spanned(input, "Missing doc comments"))
+    }
+}
diff --git a/vendor/displaydoc/src/fmt.rs b/vendor/displaydoc/src/fmt.rs
new file mode 100644
index 00000000..5848557e
--- /dev/null
+++ b/vendor/displaydoc/src/fmt.rs
@@ -0,0 +1,159 @@
+use crate::attr::Display;
+use proc_macro2::TokenStream;
+use quote::quote_spanned;
+use syn::{Ident, LitStr};
+
+macro_rules! peek_next {
+    ($read:ident) => {
+        match $read.chars().next() {
+            Some(next) => next,
+            None => return,
+        }
+    };
+}
+
+impl Display {
+    // Transform `"error {var}"` to `"error {}", var`.
+    pub(crate) fn expand_shorthand(&mut self) {
+        let span = self.fmt.span();
+        let fmt = self.fmt.value();
+        let mut read = fmt.as_str();
+        let mut out = String::new();
+        let mut args = TokenStream::new();
+
+        while let Some(brace) = read.find('{') {
+            out += &read[..=brace];
+            read = &read[brace + 1..];
+
+            // skip cases where we find a {{
+            if read.starts_with('{') {
+                out.push('{');
+                read = &read[1..];
+                continue;
+            }
+
+            let next = peek_next!(read);
+
+            let var = match next {
+                '0'..='9' => take_int(&mut read),
+                'a'..='z' | 'A'..='Z' | '_' => take_ident(&mut read),
+                _ => return,
+            };
+
+            let ident = Ident::new(&var, span);
+
+            let next = peek_next!(read);
+
+            let arg = if cfg!(feature = "std") && next == '}' {
+                quote_spanned!(span=> , #ident.__displaydoc_display())
+            } else {
+                quote_spanned!(span=> , #ident)
+            };
+
+            args.extend(arg);
+        }
+
+        out += read;
+        self.fmt = LitStr::new(&out, self.fmt.span());
+        self.args = args;
+    }
+}
+
+fn take_int(read: &mut &str) -> String {
+    let mut int = String::new();
+    int.push('_');
+    for (i, ch) in read.char_indices() {
+        match ch {
+            '0'..='9' => int.push(ch),
+            _ => {
+                *read = &read[i..];
+                break;
+            }
+        }
+    }
+    int
+}
+
+fn take_ident(read: &mut &str) -> String {
+    let mut ident = String::new();
+    for (i, ch) in read.char_indices() {
+        match ch {
+            'a'..='z' | 'A'..='Z' | '0'..='9' | '_' => ident.push(ch),
+            _ => {
+                *read = &read[i..];
+                break;
+            }
+        }
+    }
+    ident
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use pretty_assertions::assert_eq;
+    use proc_macro2::Span;
+
+    fn assert(input: &str, fmt: &str, args: &str) {
+        let mut display = Display {
+            fmt: LitStr::new(input, Span::call_site()),
+            args: TokenStream::new(),
+        };
+        display.expand_shorthand();
+        assert_eq!(fmt, display.fmt.value());
+        assert_eq!(args, display.args.to_string());
+    }
+
+    #[test]
+    fn test_expand() {
+        assert("fn main() {{ }}", "fn main() {{ }}", "");
+    }
+
+    #[test]
+    #[cfg_attr(not(feature = "std"), ignore)]
+    fn test_std_expand() {
+        assert(
+            "{v} {v:?} {0} {0:?}",
+            "{} {:?} {} {:?}",
+            ", v . __displaydoc_display () , v , _0 . __displaydoc_display () , _0",
+        );
+        assert("error {var}", "error {}", ", var . __displaydoc_display ()");
+
+        assert(
+            "error {var1}",
+            "error {}",
+            ", var1 . __displaydoc_display ()",
+        );
+
+        assert(
+            "error {var1var}",
+            "error {}",
+            ", var1var . __displaydoc_display ()",
+        );
+
+        assert(
+            "The path {0}",
+            "The path {}",
+            ", _0 . __displaydoc_display ()",
+        );
+        assert("The path {0:?}", "The path {:?}", ", _0");
+    }
+
+    #[test]
+    #[cfg_attr(feature = "std", ignore)]
+    fn test_nostd_expand() {
+        assert(
+            "{v} {v:?} {0} {0:?}",
+            "{} {:?} {} {:?}",
+            ", v , v , _0 , _0",
+        );
+        assert("error {var}", "error {}", ", var");
+
+        assert("The path {0}", "The path {}", ", _0");
+        assert("The path {0:?}", "The path {:?}", ", _0");
+
+        assert("error {var1}", "error {}", ", var1");
+
+        assert("error {var1var}", "error {}", ", var1var");
+    }
+}
diff --git a/vendor/displaydoc/src/lib.rs b/vendor/displaydoc/src/lib.rs
new file mode 100644
index 00000000..8824ff05
--- /dev/null
+++ b/vendor/displaydoc/src/lib.rs
@@ -0,0 +1,186 @@
+//! This library provides a convenient derive macro for the standard library's
+//! [`core::fmt::Display`] trait.
+//!
+//! [`core::fmt::Display`]: https://doc.rust-lang.org/std/fmt/trait.Display.html
+//!
+//! ```toml
+//! [dependencies]
+//! displaydoc = "0.2"
+//! ```
+//!
+//! *Compiler support: requires rustc 1.56+*
+//!
+//! <br>
+//!
+//! ## Example
+//!
+//! *Demonstration alongside the [`Error`][std::error::Error] derive macro from [`thiserror`](https://docs.rs/thiserror/1.0.25/thiserror/index.html),
+//! to propagate source locations from [`io::Error`][std::io::Error] with the `#[source]` attribute:*
+//! ```rust
+//! use std::io;
+//! use displaydoc::Display;
+//! use thiserror::Error;
+//!
+//! #[derive(Display, Error, Debug)]
+//! pub enum DataStoreError {
+//!     /// data store disconnected
+//!     Disconnect(#[source] io::Error),
+//!     /// the data for key `{0}` is not available
+//!     Redaction(String),
+//!     /// invalid header (expected {expected:?}, found {found:?})
+//!     InvalidHeader {
+//!         expected: String,
+//!         found: String,
+//!     },
+//!     /// unknown data store error
+//!     Unknown,
+//! }
+//!
+//! let error = DataStoreError::Redaction("CLASSIFIED CONTENT".to_string());
+//! assert!("the data for key `CLASSIFIED CONTENT` is not available" == &format!("{}", error));
+//! ```
+//! *Note that although [`io::Error`][std::io::Error] implements `Display`, we do not add it to the
+//! generated message for `DataStoreError::Disconnect`, since it is already made available via
+//! `#[source]`. See further context on avoiding duplication in error reports at the rust blog
+//! [here](https://github.com/yaahc/blog.rust-lang.org/blob/master/posts/inside-rust/2021-05-15-What-the-error-handling-project-group-is-working-towards.md#duplicate-information-issue).*
+//!
+//! <br>
+//!
+//! ## Details
+//!
+//! - A `fmt::Display` impl is generated for your enum if you provide
+//!   a docstring comment on each variant as shown above in the example. The
+//!   `Display` derive macro supports a shorthand for interpolating fields from
+//!   the error:
+//!     - `/// {var}` ⟶ `write!("{}", self.var)`
+//!     - `/// {0}` ⟶ `write!("{}", self.0)`
+//!     - `/// {var:?}` ⟶ `write!("{:?}", self.var)`
+//!     - `/// {0:?}` ⟶ `write!("{:?}", self.0)`
+//! - This also works with structs and [generic types][crate::Display#generic-type-parameters]:
+//! ```rust
+//! # use displaydoc::Display;
+//! /// oh no, an error: {0}
+//! #[derive(Display)]
+//! pub struct Error<E>(pub E);
+//!
+//! let error: Error<&str> = Error("muahaha i am an error");
+//! assert!("oh no, an error: muahaha i am an error" == &format!("{}", error));
+//! ```
+//!
+//! - Two optional attributes can be added to your types next to the derive:
+//!
+//!     - `#[ignore_extra_doc_attributes]` makes the macro ignore any doc
+//!       comment attributes (or `///` lines) after the first. Multi-line
+//!       comments using `///` are otherwise treated as an error, so use this
+//!       attribute or consider switching to block doc comments (`/** */`).
+//!
+//!     - `#[prefix_enum_doc_attributes]` combines the doc comment message on
+//!       your enum itself with the messages for each variant, in the format
+//!       “enum: variant”. When added to an enum, the doc comment on the enum
+//!       becomes mandatory. When added to any other type, it has no effect.
+//!
+//! - In case you want to have an independent doc comment, the
+//!   `#[displaydoc("...")` atrribute may be used on the variant or struct to
+//!   override it.
+//!
+//! <br>
+//!
+//! ## FAQ
+//!
+//! 1. **Is this crate `no_std` compatible?**
+//!     * Yes! This crate implements the [`core::fmt::Display`] trait, not the [`std::fmt::Display`] trait, so it should work in `std` and `no_std` environments. Just add `default-features = false`.
+//!
+//! 2. **Does this crate work with `Path` and `PathBuf` via the `Display` trait?**
+//!     * Yuuup. This crate uses @dtolnay's [autoref specialization technique](https://github.com/dtolnay/case-studies/blob/master/autoref-specialization/README.md) to add a special trait for types to get the display impl. It then specializes for `Path` and `PathBuf`, and when either of these types are found, it calls `self.display()` to get a `std::path::Display<'_>` type which can be used with the `Display` format specifier!
+#![doc(html_root_url = "https://docs.rs/displaydoc/0.2.3")]
+#![cfg_attr(docsrs, feature(doc_cfg))]
+#![warn(
+    rust_2018_idioms,
+    unreachable_pub,
+    bad_style,
+    dead_code,
+    improper_ctypes,
+    non_shorthand_field_patterns,
+    no_mangle_generic_items,
+    overflowing_literals,
+    path_statements,
+    patterns_in_fns_without_body,
+    unconditional_recursion,
+    unused,
+    unused_allocation,
+    unused_comparisons,
+    unused_parens,
+    while_true
+)]
+#![allow(clippy::try_err)]
+
+#[allow(unused_extern_crates)]
+extern crate proc_macro;
+
+mod attr;
+mod expand;
+mod fmt;
+
+use proc_macro::TokenStream;
+use syn::{parse_macro_input, DeriveInput};
+
+/// [Custom `#[derive(...)]` macro](https://doc.rust-lang.org/edition-guide/rust-2018/macros/custom-derive.html)
+/// for implementing [`fmt::Display`][core::fmt::Display] via doc comment attributes.
+///
+/// ### Generic Type Parameters
+///
+/// Type parameters to an enum or struct using this macro should *not* need to
+/// have an explicit `Display` constraint at the struct or enum definition
+/// site. A `Display` implementation for the `derive`d struct or enum is
+/// generated assuming each type parameter implements `Display`, but that should
+/// be possible without adding the constraint to the struct definition itself:
+/// ```rust
+/// use displaydoc::Display;
+///
+/// /// oh no, an error: {0}
+/// #[derive(Display)]
+/// pub struct Error<E>(pub E);
+///
+/// // No need to require `E: Display`, since `displaydoc::Display` adds that implicitly.
+/// fn generate_error<E>(e: E) -> Error<E> { Error(e) }
+///
+/// assert!("oh no, an error: muahaha" == &format!("{}", generate_error("muahaha")));
+/// ```
+///
+/// ### Using [`Debug`][core::fmt::Debug] Implementations with Type Parameters
+/// However, if a type parameter must instead be constrained with the
+/// [`Debug`][core::fmt::Debug] trait so that some field may be printed with
+/// `{:?}`, that constraint must currently still also be specified redundantly
+/// at the struct or enum definition site. If a struct or enum field is being
+/// formatted with `{:?}` via [`displaydoc`][crate], and a generic type
+/// parameter must implement `Debug` to do that, then that struct or enum
+/// definition will need to propagate the `Debug` constraint to every type
+/// parameter it's instantiated with:
+/// ```rust
+/// use core::fmt::Debug;
+/// use displaydoc::Display;
+///
+/// /// oh no, an error: {0:?}
+/// #[derive(Display)]
+/// pub struct Error<E: Debug>(pub E);
+///
+/// // `E: Debug` now has to propagate to callers.
+/// fn generate_error<E: Debug>(e: E) -> Error<E> { Error(e) }
+///
+/// assert!("oh no, an error: \"cool\"" == &format!("{}", generate_error("cool")));
+///
+/// // Try this with a struct that doesn't impl `Display` at all, unlike `str`.
+/// #[derive(Debug)]
+/// pub struct Oh;
+/// assert!("oh no, an error: Oh" == &format!("{}", generate_error(Oh)));
+/// ```
+#[proc_macro_derive(
+    Display,
+    attributes(ignore_extra_doc_attributes, prefix_enum_doc_attributes, displaydoc)
+)]
+pub fn derive_error(input: TokenStream) -> TokenStream {
+    let input = parse_macro_input!(input as DeriveInput);
+    expand::derive(&input)
+        .unwrap_or_else(|err| err.to_compile_error())
+        .into()
+}
diff --git a/vendor/displaydoc/tests/compile_tests.rs b/vendor/displaydoc/tests/compile_tests.rs
new file mode 100644
index 00000000..29c72a86
--- /dev/null
+++ b/vendor/displaydoc/tests/compile_tests.rs
@@ -0,0 +1,29 @@
+#[allow(unused_attributes)]
+#[rustversion::attr(not(nightly), ignore)]
+#[test]
+fn no_std() {
+    let t = trybuild::TestCases::new();
+    #[cfg(not(feature = "std"))]
+    t.compile_fail("tests/no_std/without.rs");
+    #[cfg(not(feature = "std"))]
+    t.compile_fail("tests/no_std/multi_line.rs");
+    #[cfg(not(feature = "std"))]
+    t.pass("tests/no_std/multi_line_allow.rs");
+    #[cfg(not(feature = "std"))]
+    t.compile_fail("tests/no_std/enum_prefix_missing.rs");
+    #[cfg(not(feature = "std"))]
+    t.pass("tests/no_std/enum_prefix.rs");
+    #[cfg(feature = "std")]
+    t.compile_fail("tests/std/without.rs");
+    #[cfg(feature = "std")]
+    t.compile_fail("tests/std/multi_line.rs");
+    #[cfg(feature = "std")]
+    t.pass("tests/std/multi_line_allow.rs");
+    #[cfg(feature = "std")]
+    t.compile_fail("tests/std/enum_prefix_missing.rs");
+    #[cfg(feature = "std")]
+    t.pass("tests/std/enum_prefix.rs");
+    #[cfg(feature = "std")]
+    t.pass("tests/std/multiple.rs");
+    t.pass("tests/no_std/with.rs");
+}
diff --git a/vendor/displaydoc/tests/happy.rs b/vendor/displaydoc/tests/happy.rs
new file mode 100644
index 00000000..85aa78f1
--- /dev/null
+++ b/vendor/displaydoc/tests/happy.rs
@@ -0,0 +1,152 @@
+use displaydoc::Display;
+
+#[cfg(feature = "std")]
+use std::path::PathBuf;
+
+#[derive(Display)]
+/// Just a basic struct {thing}
+struct HappyStruct {
+    thing: &'static str,
+}
+
+#[derive(Display)]
+#[ignore_extra_doc_attributes]
+/// Just a basic struct {thing}
+/// and this line should get ignored
+struct HappyStruct2 {
+    thing: &'static str,
+}
+
+#[derive(Display)]
+enum Happy {
+    /// I really like Variant1
+    Variant1,
+    /// Variant2 is pretty swell 2
+    Variant2,
+    /// Variant3 is okay {sometimes}
+    Variant3 { sometimes: &'static str },
+    /**
+     * Variant4 wants to have a lot of lines
+     *
+     * Lets see how this works out for it
+     */
+    Variant4,
+    /// Variant5 has a parameter {0} and some regular comments
+    // A regular comment that won't get picked
+    Variant5(u32),
+
+    /// The path {0}
+    #[cfg(feature = "std")]
+    Variant6(PathBuf),
+
+    /// These docs are ignored
+    #[displaydoc("Variant7 has a parameter {0} and uses #[displaydoc]")]
+    /// These docs are also ignored
+    Variant7(u32),
+}
+
+// Used for testing indented doc comments
+mod inner_mod {
+    use super::Display;
+
+    #[derive(Display)]
+    pub enum InnerHappy {
+        /// I really like Variant1
+        Variant1,
+        /// Variant2 is pretty swell 2
+        Variant2,
+        /// Variant3 is okay {sometimes}
+        Variant3 { sometimes: &'static str },
+        /**
+         * Variant4 wants to have a lot of lines
+         *
+         * Lets see how this works out for it
+         */
+        Variant4,
+        /// Variant5 has a parameter {0} and some regular comments
+        // A regular comment that won't get picked
+        Variant5(u32),
+
+        /** what happens if we
+         * put text on the first line?
+         */
+        Variant6,
+
+        /**
+        what happens if we don't use *?
+        */
+        Variant7,
+
+        /**
+         *
+         * what about extra new lines?
+         */
+        Variant8,
+    }
+}
+
+fn assert_display<T: std::fmt::Display>(input: T, expected: &'static str) {
+    let out = format!("{}", input);
+    assert_eq!(expected, out);
+}
+
+#[test]
+fn does_it_print() {
+    assert_display(Happy::Variant1, "I really like Variant1");
+    assert_display(Happy::Variant2, "Variant2 is pretty swell 2");
+    assert_display(Happy::Variant3 { sometimes: "hi" }, "Variant3 is okay hi");
+    assert_display(
+        Happy::Variant4,
+        "Variant4 wants to have a lot of lines\n\nLets see how this works out for it",
+    );
+    assert_display(
+        Happy::Variant5(2),
+        "Variant5 has a parameter 2 and some regular comments",
+    );
+    assert_display(
+        Happy::Variant7(2),
+        "Variant7 has a parameter 2 and uses #[displaydoc]",
+    );
+    assert_display(HappyStruct { thing: "hi" }, "Just a basic struct hi");
+
+    assert_display(HappyStruct2 { thing: "hi2" }, "Just a basic struct hi2");
+
+    assert_display(inner_mod::InnerHappy::Variant1, "I really like Variant1");
+    assert_display(
+        inner_mod::InnerHappy::Variant2,
+        "Variant2 is pretty swell 2",
+    );
+    assert_display(
+        inner_mod::InnerHappy::Variant3 { sometimes: "hi" },
+        "Variant3 is okay hi",
+    );
+    assert_display(
+        inner_mod::InnerHappy::Variant4,
+        "Variant4 wants to have a lot of lines\n\nLets see how this works out for it",
+    );
+    assert_display(
+        inner_mod::InnerHappy::Variant5(2),
+        "Variant5 has a parameter 2 and some regular comments",
+    );
+    assert_display(
+        inner_mod::InnerHappy::Variant6,
+        "what happens if we\nput text on the first line?",
+    );
+    assert_display(
+        inner_mod::InnerHappy::Variant7,
+        "what happens if we don\'t use *?",
+    );
+    assert_display(
+        inner_mod::InnerHappy::Variant8,
+        "what about extra new lines?",
+    );
+}
+
+#[test]
+#[cfg(feature = "std")]
+fn does_it_print_path() {
+    assert_display(
+        Happy::Variant6(PathBuf::from("/var/log/happy")),
+        "The path /var/log/happy",
+    );
+}
diff --git a/vendor/displaydoc/tests/no_std/enum_prefix.rs b/vendor/displaydoc/tests/no_std/enum_prefix.rs
new file mode 100644
index 00000000..5538e275
--- /dev/null
+++ b/vendor/displaydoc/tests/no_std/enum_prefix.rs
@@ -0,0 +1,36 @@
+#![cfg_attr(not(feature = "std"), allow(internal_features), feature(lang_items, start))]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg_attr(not(feature = "std"), start)]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+use displaydoc::Display;
+
+/// this type is pretty swell
+#[derive(Display)]
+#[prefix_enum_doc_attributes]
+enum TestType {
+    /// this variant is too
+    Variant1,
+
+    /// this variant is two
+    Variant2,
+}
+
+static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+
+#[cfg(feature = "std")]
+fn main() {}
diff --git a/vendor/displaydoc/tests/no_std/enum_prefix_missing.rs b/vendor/displaydoc/tests/no_std/enum_prefix_missing.rs
new file mode 100644
index 00000000..71710726
--- /dev/null
+++ b/vendor/displaydoc/tests/no_std/enum_prefix_missing.rs
@@ -0,0 +1,35 @@
+#![cfg_attr(not(feature = "std"), allow(internal_features), feature(lang_items, start))]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg_attr(not(feature = "std"), start)]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+use displaydoc::Display;
+
+#[derive(Display)]
+#[prefix_enum_doc_attributes]
+enum TestType {
+    /// this variant is too
+    Variant1,
+
+    /// this variant is two
+    Variant2,
+}
+
+static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+
+#[cfg(feature = "std")]
+fn main() {}
diff --git a/vendor/displaydoc/tests/no_std/enum_prefix_missing.stderr b/vendor/displaydoc/tests/no_std/enum_prefix_missing.stderr
new file mode 100644
index 00000000..8cf79932
--- /dev/null
+++ b/vendor/displaydoc/tests/no_std/enum_prefix_missing.stderr
@@ -0,0 +1,22 @@
+error: proc-macro derive panicked
+  --> $DIR/enum_prefix_missing.rs:22:10
+   |
+22 | #[derive(Display)]
+   |          ^^^^^^^
+   |
+   = help: message: Missing doc comment on enum with #[prefix_enum_doc_attributes]. Please remove the attribute or add a doc comment to the enum itself.
+
+error[E0277]: `TestType` doesn't implement `Display`
+  --> $DIR/enum_prefix_missing.rs:32:37
+   |
+32 | static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+   |                                     ^^^^^^^^ `TestType` cannot be formatted with the default formatter
+   |
+   = help: the trait `Display` is not implemented for `TestType`
+   = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
+note: required by a bound in `assert_impl_all`
+  --> $DIR/enum_prefix_missing.rs:32:1
+   |
+32 | static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `assert_impl_all`
+   = note: this error originates in the macro `static_assertions::assert_impl_all` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/displaydoc/tests/no_std/multi_line.rs b/vendor/displaydoc/tests/no_std/multi_line.rs
new file mode 100644
index 00000000..ca4215cd
--- /dev/null
+++ b/vendor/displaydoc/tests/no_std/multi_line.rs
@@ -0,0 +1,37 @@
+#![cfg_attr(not(feature = "std"), allow(internal_features), feature(lang_items, start))]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg_attr(not(feature = "std"), start)]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+use displaydoc::Display;
+
+/// this type is pretty swell
+#[derive(Display)]
+enum TestType {
+    /// This one is okay
+    Variant1,
+
+    /// Multi
+    /// line
+    /// doc.
+    Variant2,
+}
+
+static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+
+#[cfg(feature = "std")]
+fn main() {}
diff --git a/vendor/displaydoc/tests/no_std/multi_line.stderr b/vendor/displaydoc/tests/no_std/multi_line.stderr
new file mode 100644
index 00000000..f3d77b9e
--- /dev/null
+++ b/vendor/displaydoc/tests/no_std/multi_line.stderr
@@ -0,0 +1,22 @@
+error: proc-macro derive panicked
+  --> $DIR/multi_line.rs:23:10
+   |
+23 | #[derive(Display)]
+   |          ^^^^^^^
+   |
+   = help: message: Multi-line comments are disabled by default by displaydoc. Please consider using block doc comments (/** */) or adding the #[ignore_extra_doc_attributes] attribute to your type next to the derive.
+
+error[E0277]: `TestType` doesn't implement `Display`
+  --> $DIR/multi_line.rs:34:37
+   |
+34 | static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+   |                                     ^^^^^^^^ `TestType` cannot be formatted with the default formatter
+   |
+   = help: the trait `Display` is not implemented for `TestType`
+   = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
+note: required by a bound in `assert_impl_all`
+  --> $DIR/multi_line.rs:34:1
+   |
+34 | static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `assert_impl_all`
+   = note: this error originates in the macro `static_assertions::assert_impl_all` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/displaydoc/tests/no_std/multi_line_allow.rs b/vendor/displaydoc/tests/no_std/multi_line_allow.rs
new file mode 100644
index 00000000..84676817
--- /dev/null
+++ b/vendor/displaydoc/tests/no_std/multi_line_allow.rs
@@ -0,0 +1,38 @@
+#![cfg_attr(not(feature = "std"), allow(internal_features), feature(lang_items, start))]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg_attr(not(feature = "std"), start)]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+use displaydoc::Display;
+
+/// this type is pretty swell
+#[derive(Display)]
+#[ignore_extra_doc_attributes]
+enum TestType {
+    /// This one is okay
+    Variant1,
+
+    /// Multi
+    /// line
+    /// doc.
+    Variant2,
+}
+
+static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+
+#[cfg(feature = "std")]
+fn main() {}
diff --git a/vendor/displaydoc/tests/no_std/with.rs b/vendor/displaydoc/tests/no_std/with.rs
new file mode 100644
index 00000000..67aef473
--- /dev/null
+++ b/vendor/displaydoc/tests/no_std/with.rs
@@ -0,0 +1,32 @@
+#![feature(lang_items, start)]
+#![no_std]
+
+#[start]
+#[cfg(not(feature = "std"))]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+#[cfg(feature = "std")]
+fn main() {}
+
+use displaydoc::Display;
+
+/// this type is pretty swell
+#[derive(Display)]
+struct FakeType;
+
+static_assertions::assert_impl_all!(FakeType: core::fmt::Display);
diff --git a/vendor/displaydoc/tests/no_std/without.rs b/vendor/displaydoc/tests/no_std/without.rs
new file mode 100644
index 00000000..04d4b8fa
--- /dev/null
+++ b/vendor/displaydoc/tests/no_std/without.rs
@@ -0,0 +1,28 @@
+#![cfg_attr(not(feature = "std"), allow(internal_features), feature(lang_items, start))]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg_attr(not(feature = "std"), start)]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+use displaydoc::Display;
+
+/// this type is pretty swell
+struct FakeType;
+
+static_assertions::assert_impl_all!(FakeType: core::fmt::Display);
+
+#[cfg(feature = "std")]
+fn main() {}
diff --git a/vendor/displaydoc/tests/no_std/without.stderr b/vendor/displaydoc/tests/no_std/without.stderr
new file mode 100644
index 00000000..a12edc4a
--- /dev/null
+++ b/vendor/displaydoc/tests/no_std/without.stderr
@@ -0,0 +1,22 @@
+warning: unused import: `displaydoc::Display`
+  --> $DIR/without.rs:20:5
+   |
+20 | use displaydoc::Display;
+   |     ^^^^^^^^^^^^^^^^^^^
+   |
+   = note: `#[warn(unused_imports)]` on by default
+
+error[E0277]: `FakeType` doesn't implement `Display`
+  --> $DIR/without.rs:25:37
+   |
+25 | static_assertions::assert_impl_all!(FakeType: core::fmt::Display);
+   |                                     ^^^^^^^^ `FakeType` cannot be formatted with the default formatter
+   |
+   = help: the trait `Display` is not implemented for `FakeType`
+   = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
+note: required by a bound in `assert_impl_all`
+  --> $DIR/without.rs:25:1
+   |
+25 | static_assertions::assert_impl_all!(FakeType: core::fmt::Display);
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `assert_impl_all`
+   = note: this error originates in the macro `static_assertions::assert_impl_all` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/displaydoc/tests/num_in_field.rs b/vendor/displaydoc/tests/num_in_field.rs
new file mode 100644
index 00000000..9510f820
--- /dev/null
+++ b/vendor/displaydoc/tests/num_in_field.rs
@@ -0,0 +1,22 @@
+/// {foo1} {foo2}
+#[derive(displaydoc::Display)]
+pub struct Test {
+    foo1: String,
+    foo2: String,
+}
+
+fn assert_display<T: std::fmt::Display>(input: T, expected: &'static str) {
+    let out = format!("{}", input);
+    assert_eq!(expected, out);
+}
+
+#[test]
+fn does_it_print() {
+    assert_display(
+        Test {
+            foo1: "hi".into(),
+            foo2: "hello".into(),
+        },
+        "hi hello",
+    );
+}
diff --git a/vendor/displaydoc/tests/std/enum_prefix.rs b/vendor/displaydoc/tests/std/enum_prefix.rs
new file mode 100644
index 00000000..7e6abcce
--- /dev/null
+++ b/vendor/displaydoc/tests/std/enum_prefix.rs
@@ -0,0 +1,36 @@
+#![cfg_attr(not(feature = "std"), feature(lang_items, start))]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg_attr(not(feature = "std"), start)]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+use displaydoc::Display;
+
+/// this type is pretty swell
+#[derive(Display)]
+#[prefix_enum_doc_attributes]
+enum TestType {
+    /// this variant is too
+    Variant1,
+
+    /// this variant is two
+    Variant2,
+}
+
+static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+
+#[cfg(feature = "std")]
+fn main() {}
diff --git a/vendor/displaydoc/tests/std/enum_prefix_missing.rs b/vendor/displaydoc/tests/std/enum_prefix_missing.rs
new file mode 100644
index 00000000..45c312b7
--- /dev/null
+++ b/vendor/displaydoc/tests/std/enum_prefix_missing.rs
@@ -0,0 +1,35 @@
+#![cfg_attr(not(feature = "std"), feature(lang_items, start))]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg_attr(not(feature = "std"), start)]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+use displaydoc::Display;
+
+#[derive(Display)]
+#[prefix_enum_doc_attributes]
+enum TestType {
+    /// this variant is too
+    Variant1,
+
+    /// this variant is two
+    Variant2,
+}
+
+static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+
+#[cfg(feature = "std")]
+fn main() {}
diff --git a/vendor/displaydoc/tests/std/enum_prefix_missing.stderr b/vendor/displaydoc/tests/std/enum_prefix_missing.stderr
new file mode 100644
index 00000000..09e1db68
--- /dev/null
+++ b/vendor/displaydoc/tests/std/enum_prefix_missing.stderr
@@ -0,0 +1,22 @@
+error: proc-macro derive panicked
+  --> $DIR/enum_prefix_missing.rs:22:10
+   |
+22 | #[derive(Display)]
+   |          ^^^^^^^
+   |
+   = help: message: Missing doc comment on enum with #[prefix_enum_doc_attributes]. Please remove the attribute or add a doc comment to the enum itself.
+
+error[E0277]: `TestType` doesn't implement `std::fmt::Display`
+  --> $DIR/enum_prefix_missing.rs:32:37
+   |
+32 | static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+   |                                     ^^^^^^^^ `TestType` cannot be formatted with the default formatter
+   |
+   = help: the trait `std::fmt::Display` is not implemented for `TestType`
+   = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
+note: required by a bound in `assert_impl_all`
+  --> $DIR/enum_prefix_missing.rs:32:1
+   |
+32 | static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `assert_impl_all`
+   = note: this error originates in the macro `static_assertions::assert_impl_all` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/displaydoc/tests/std/multi_line.rs b/vendor/displaydoc/tests/std/multi_line.rs
new file mode 100644
index 00000000..ca4215cd
--- /dev/null
+++ b/vendor/displaydoc/tests/std/multi_line.rs
@@ -0,0 +1,37 @@
+#![cfg_attr(not(feature = "std"), allow(internal_features), feature(lang_items, start))]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg_attr(not(feature = "std"), start)]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+use displaydoc::Display;
+
+/// this type is pretty swell
+#[derive(Display)]
+enum TestType {
+    /// This one is okay
+    Variant1,
+
+    /// Multi
+    /// line
+    /// doc.
+    Variant2,
+}
+
+static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+
+#[cfg(feature = "std")]
+fn main() {}
diff --git a/vendor/displaydoc/tests/std/multi_line.stderr b/vendor/displaydoc/tests/std/multi_line.stderr
new file mode 100644
index 00000000..c36a75db
--- /dev/null
+++ b/vendor/displaydoc/tests/std/multi_line.stderr
@@ -0,0 +1,22 @@
+error: proc-macro derive panicked
+  --> $DIR/multi_line.rs:23:10
+   |
+23 | #[derive(Display)]
+   |          ^^^^^^^
+   |
+   = help: message: Multi-line comments are disabled by default by displaydoc. Please consider using block doc comments (/** */) or adding the #[ignore_extra_doc_attributes] attribute to your type next to the derive.
+
+error[E0277]: `TestType` doesn't implement `std::fmt::Display`
+  --> $DIR/multi_line.rs:34:37
+   |
+34 | static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+   |                                     ^^^^^^^^ `TestType` cannot be formatted with the default formatter
+   |
+   = help: the trait `std::fmt::Display` is not implemented for `TestType`
+   = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
+note: required by a bound in `assert_impl_all`
+  --> $DIR/multi_line.rs:34:1
+   |
+34 | static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `assert_impl_all`
+   = note: this error originates in the macro `static_assertions::assert_impl_all` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/displaydoc/tests/std/multi_line_allow.rs b/vendor/displaydoc/tests/std/multi_line_allow.rs
new file mode 100644
index 00000000..e09e8fcf
--- /dev/null
+++ b/vendor/displaydoc/tests/std/multi_line_allow.rs
@@ -0,0 +1,38 @@
+#![cfg_attr(not(feature = "std"), feature(lang_items, start))]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg_attr(not(feature = "std"), start)]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+use displaydoc::Display;
+
+/// this type is pretty swell
+#[derive(Display)]
+#[ignore_extra_doc_attributes]
+enum TestType {
+    /// This one is okay
+    Variant1,
+
+    /// Multi
+    /// line
+    /// doc.
+    Variant2,
+}
+
+static_assertions::assert_impl_all!(TestType: core::fmt::Display);
+
+#[cfg(feature = "std")]
+fn main() {}
diff --git a/vendor/displaydoc/tests/std/multiple.rs b/vendor/displaydoc/tests/std/multiple.rs
new file mode 100644
index 00000000..66d59b76
--- /dev/null
+++ b/vendor/displaydoc/tests/std/multiple.rs
@@ -0,0 +1,38 @@
+#![feature(lang_items, start)]
+#![no_std]
+
+#[start]
+#[cfg(not(feature = "std"))]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+#[cfg(feature = "std")]
+fn main() {}
+
+use displaydoc::Display;
+
+/// this type is pretty swell
+#[derive(Display)]
+struct FakeType;
+
+static_assertions::assert_impl_all!(FakeType: core::fmt::Display);
+
+/// this type is pretty swell2
+#[derive(Display)]
+struct FakeType2;
+
+static_assertions::assert_impl_all!(FakeType2: core::fmt::Display);
diff --git a/vendor/displaydoc/tests/std/without.rs b/vendor/displaydoc/tests/std/without.rs
new file mode 100644
index 00000000..04d4b8fa
--- /dev/null
+++ b/vendor/displaydoc/tests/std/without.rs
@@ -0,0 +1,28 @@
+#![cfg_attr(not(feature = "std"), allow(internal_features), feature(lang_items, start))]
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg_attr(not(feature = "std"), start)]
+fn start(_argc: isize, _argv: *const *const u8) -> isize {
+    0
+}
+#[lang = "eh_personality"]
+#[no_mangle]
+#[cfg(not(feature = "std"))]
+pub extern "C" fn rust_eh_personality() {}
+#[panic_handler]
+#[cfg(not(feature = "std"))]
+fn panic(_info: &core::panic::PanicInfo) -> ! {
+    unsafe {
+        libc::abort();
+    }
+}
+
+use displaydoc::Display;
+
+/// this type is pretty swell
+struct FakeType;
+
+static_assertions::assert_impl_all!(FakeType: core::fmt::Display);
+
+#[cfg(feature = "std")]
+fn main() {}
diff --git a/vendor/displaydoc/tests/std/without.stderr b/vendor/displaydoc/tests/std/without.stderr
new file mode 100644
index 00000000..4f0d7131
--- /dev/null
+++ b/vendor/displaydoc/tests/std/without.stderr
@@ -0,0 +1,22 @@
+warning: unused import: `displaydoc::Display`
+  --> $DIR/without.rs:20:5
+   |
+20 | use displaydoc::Display;
+   |     ^^^^^^^^^^^^^^^^^^^
+   |
+   = note: `#[warn(unused_imports)]` on by default
+
+error[E0277]: `FakeType` doesn't implement `std::fmt::Display`
+  --> $DIR/without.rs:25:37
+   |
+25 | static_assertions::assert_impl_all!(FakeType: core::fmt::Display);
+   |                                     ^^^^^^^^ `FakeType` cannot be formatted with the default formatter
+   |
+   = help: the trait `std::fmt::Display` is not implemented for `FakeType`
+   = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
+note: required by a bound in `assert_impl_all`
+  --> $DIR/without.rs:25:1
+   |
+25 | static_assertions::assert_impl_all!(FakeType: core::fmt::Display);
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `assert_impl_all`
+   = note: this error originates in the macro `static_assertions::assert_impl_all` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/displaydoc/tests/variantless.rs b/vendor/displaydoc/tests/variantless.rs
new file mode 100644
index 00000000..7511bc7f
--- /dev/null
+++ b/vendor/displaydoc/tests/variantless.rs
@@ -0,0 +1,6 @@
+use displaydoc::Display;
+
+#[derive(Display)]
+enum EmptyInside {}
+
+static_assertions::assert_impl_all!(EmptyInside: core::fmt::Display);
diff --git a/vendor/displaydoc/update-readme.sh b/vendor/displaydoc/update-readme.sh
new file mode 100755
index 00000000..f67bfd56
--- /dev/null
+++ b/vendor/displaydoc/update-readme.sh
@@ -0,0 +1,5 @@
+#! /usr/bin/env bash
+
+cargo readme > ./README.md
+git add ./README.md
+git commit -m "Update readme" || true
diff --git a/vendor/icu_collections/.cargo-checksum.json b/vendor/icu_collections/.cargo-checksum.json
new file mode 100644
index 00000000..87873bb5
--- /dev/null
+++ b/vendor/icu_collections/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"5c3e432c15fb18f16c8343adcedc9c1d0f7dc58bc9b3e09438a06c6215545a26","Cargo.toml":"a1bcce20ab29725ab0d9a44d2b09eda57368c56b2b9d12b73b2958f7d7df4d83","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"b1a0b37b61d42026996dda3b7d524d42888181f3e7eaf940c9b2e5f561c449e3","benches/codepointtrie.rs":"4052e9e3a3a744955a5ab3f7089cafaf2920ad5c7566fc8b3b77ee1d39376c20","benches/iai_cpt.rs":"a8ed4e67866d415e6ed0c8c95a9b1887b4198ea409d4cd9efafb50b8c13b3ecc","benches/inv_list.rs":"93a540e1dc30d0d356eef56f044a64b87949d777fa21f35042d53ba1bbcf1fb5","benches/tries/gc_fast.rs":"4761a339f9b266813f4fa7ffa229b3464ced2ed106ce712ae6a96c0e49e5224e","benches/tries/gc_small.rs":"a1a75d2325dbce031e0127de8d84e900ca7c73ec81da1679965ab0127a99c205","benches/tries/mod.rs":"82cfdd1c5870d343613098fdff5a7961cfe5645a33480c6a252efae9a074e022","examples/unicode_bmp_blocks_selector.rs":"a75bc5327fa9df8ab0332dcdf10f72a968924a0698bdba4eb79312a8624cbd44","src/char16trie/mod.rs":"5950a1b427743e956b459956cadd72ff7531fe46bfb871d8e3a848b1e4ab0657","src/char16trie/trie.rs":"18ccf56efa1a2b2af6034b8a7a05310a4078127f496a957ca26ee1e1ae4d1aea","src/codepointinvlist/builder.rs":"dae06a19e6a4275006afcf313d492eabbc74bececa99198de88d29c8facf6415","src/codepointinvlist/conversions.rs":"9d4617631328f5ad668eb5ea6fb100f9881dbebf6f46235ae5a445be2dbb8664","src/codepointinvlist/cpinvlist.rs":"025cd179418d5be9ddf41e97e2ebaa4f9943527fc521a4bb11b93dc02893c33c","src/codepointinvlist/mod.rs":"39f18e0be77508696b80d456f861a1264b902e90298c71a54e00a4585069108f","src/codepointinvlist/utils.rs":"2fcb38b4ce33947e831449ca63e0872b1d90830521144e1089f26842f1b746c8","src/codepointinvliststringlist/mod.rs":"4f0f2ae1ecd9068a0100a48308e08405afcee182eb5c5743990f739d4d7fdc42","src/codepointtrie/cptrie.rs":"dfaaa7271eed2e486bc43f3a36e71579bec19b854f491f6375b97113691c41f6","src/codepointtrie/error.rs":"43d758777ef7ce3f87efe4c8c7fb8fbe7d184b2d40f3f5fb737bce69da5d75a7","src/codepointtrie/impl_const.rs":"ff25fa0d54e174c289b25a6060f50e03c8aa41bad922c9386de3148f8ad95109","src/codepointtrie/mod.rs":"934246b867396119195cce3b4243f1951b76f503f6f455fa73cc6cd66ff792db","src/codepointtrie/planes.rs":"637c63a165397831c8ce8d4c28eff11179467a7d7a6382960acd699d8a087f26","src/codepointtrie/serde.rs":"ada65ec125890ccf86d141a128a1f79dcda5f3a2269605da7a2fa145d3cbd07c","src/codepointtrie/toml.rs":"00d10cb710f69f84dd0fde871c4bd61e8cabe319362a11fc74a0af1f0fda2363","src/iterator_utils.rs":"a6401aa583a2d8a6476f632b24983e91aa000c9dfd075bcddbd8de512b5a06ae","src/lib.rs":"a15ba283ccb32fc9a1cbe67166fa8eac5cd9225e4de022d09b057be4ff8eb688","tests/char16trie.rs":"f8018b90187f3b99a6a835c1c41bced18d98a28c41822abf3536cd1f0f08c44f","tests/cpt.rs":"126c6c671a6aa525dd6fabaf57387c828bae0041b04dffcd7b3a22c674e1dd41","tests/data/char16trie/empty.toml":"b900365b9c786f1b185307f5d8835a901d4860b9b097bce13aa0e592fcb384c4","tests/data/char16trie/months.toml":"439245fc4385fe693f283b7bc179bf5558dd8039a89987314dfc8c4a9e0092b2","tests/data/char16trie/test_a.toml":"34b179dd4e7eef73ce373b74e426ecfa05fb7aa2b0fc15e437bfcf3ea4242a9f","tests/data/char16trie/test_a_ab.toml":"b84452cb9c310203599d3cb8279a3f000c39ff8026728573152026f0d5e2c798","tests/data/char16trie/test_branches.toml":"d787ffc89c62a564b487f3c8fb94588258be0d891044e5b3a79c2ab876cd3e57","tests/data/char16trie/test_compact.toml":"30cb3e794d0989e3e087c12de3db077449d82ce6af57666290166d43bdcd27d3","tests/data/char16trie/test_long_branch.toml":"877d408f7d58063723befd01af6e3b0f01060a9ca1c5611ee1ea88d73383fa5a","tests/data/char16trie/test_long_sequence.toml":"f58645b3f14e47850e2a03733f7e47b69b193067f4cccf96124846b1ad49d970","tests/data/char16trie/test_shortest_branch.toml":"af356553506dbc28a2413b9f0ca1489050cd11a72e90ba4b5020bcb596862e64","tests/data/cpt/free-blocks.16.toml":"e0a66e777c13c0885b6a0f6839cdc9bbbddded2f5fbef4710f8e69a0808791d9","tests/data/cpt/free-blocks.32.toml":"b0bb6068a84d08d3fbcbd54dce7a59385a42b2dcdf0a6fe9d4160754a80a5f9e","tests/data/cpt/free-blocks.8.toml":"2de9950cd4475c3cb9cca9c30cb6793b90f3881ea2dd1353bea0701110c76953","tests/data/cpt/free-blocks.small16.toml":"17cbdef8edec19e8d85802eda775b1095ae2d423a589a4b56064b3b13604af36","tests/data/cpt/grow-data.16.toml":"802c7c61c2bb70dd7c96ce4633584a2ac4d2e6a61ecfb6f5d19c3c419b76f97c","tests/data/cpt/grow-data.32.toml":"3cbf6ad1276eda17f18cbeba4db671340ebec0fe6c0b631ea1f52dab63669881","tests/data/cpt/grow-data.8.toml":"e2d0b066e8a0f0bbf21cffa72393e0fd8c9a7534887886438211600bf7717129","tests/data/cpt/grow-data.small16.toml":"1d4c5d4b47a3da6b392729be3aa7cfa2cfb58d9ae37565cf10dbc10f0b48beca","tests/data/cpt/planes.toml":"a2577942758490bd53f4022b30731cff947fae22f4cbbb03b5ae72c65357aa12","tests/data/cpt/set-empty.16.toml":"6a01c051c5dbbe816097da806b943ca1856312059b0842a1238fe75ad5df220b","tests/data/cpt/set-empty.32.toml":"ec9dec0296b150ccabde07c255e2971ba407f647824a7c37af0272fa2ba89e2d","tests/data/cpt/set-empty.8.toml":"478dd49db8670f447f5aae78bcd3cdbeb6f91f7861dec256d480623b5d00941b","tests/data/cpt/set-empty.small16.toml":"5ff232c9b020bdaaaf762f7c0afe48ccb6f94b40dce08c1ba7dcb66c46ad2423","tests/data/cpt/set-single-value.16.toml":"6720f4a4d8c113ab7085e6308792ea0005cc8fe3c5d8acacb2cf43e74b12f4b3","tests/data/cpt/set-single-value.32.toml":"cb93935dc9ce5ed3cbe0f0acb50b49308b232e2d3fc8e39b08d1c33127c9911d","tests/data/cpt/set-single-value.8.toml":"e5cb6b02341bb8992ec93e49a7b2b059af1fd046ede3021dc207f1833c6a3c95","tests/data/cpt/set-single-value.small16.toml":"3aef34147b20a5c2c2c6e20f6024d38f7c0518313371b05d3cb83ae78a9ef0db","tests/data/cpt/set1.16.toml":"01cc1078f281102bd0c9e854a373b7241f2295bb19caa9488caad1b5350d0beb","tests/data/cpt/set1.32.toml":"cd264d011692df42e9007df87c6500bdde4e098a3a85a89a185f7deeff025a3b","tests/data/cpt/set1.8.toml":"039aa2fca8f140f5a060bcf01a1da3d45618242dfb0a3c437d4263d5166398a3","tests/data/cpt/set1.small16.toml":"b8bf6e216201e0a0c61c4b2456eccd1c3b4f38647d67ba251cd7b08f340df0dc","tests/data/cpt/set2-overlap.16.toml":"49f1d7212cb3f7b10f4a0dbab267b64aeb59380cc28d86c67fd640737da5af0a","tests/data/cpt/set2-overlap.32.toml":"406104b0532ae249c603c03729f4596ab24460ccbb3a244e04fa2b8401795ef0","tests/data/cpt/set2-overlap.small16.toml":"4e8d9c5b25cda2fd80fa72e7e9863e6858548608d3fe2a2d774026eda95c959f","tests/data/cpt/set3-initial-9.16.toml":"f5fdc3d7c6d6813cc527ddffecf35db2d144e2706be0541277bbe4672ea29851","tests/data/cpt/set3-initial-9.32.toml":"da2887d40005fc071eee1bf4e828f40410266c44585deda208e78d369b5ca9a9","tests/data/cpt/set3-initial-9.8.toml":"5974d1961bd8334e6fb1be7431f794dfc87d0fecdee4b832ad1c82e2302a6617","tests/data/cpt/set3-initial-9.small16.toml":"f62d46d2b6492c02944d089885b2ce6b975468e6bceabf986b495ab42a06d595","tests/data/cpt/short-all-same.16.toml":"5c0252591699a35398f75b3bec977d6ed44cfffbf335a87ed7c3cff86ff74391","tests/data/cpt/short-all-same.8.toml":"23f7aa3a8e6c3cc75669b8df55827b03c6791aac1ec9f7c8d7f0bbbdd54f23a9","tests/data/cpt/short-all-same.small16.toml":"5c0252591699a35398f75b3bec977d6ed44cfffbf335a87ed7c3cff86ff74391","tests/data/cpt/small0-in-fast.16.toml":"8d00f5657ee11c3b00c7a3c1e6333632b37dba0762cd4868b2f8ef90c03aab6c","tests/data/cpt/small0-in-fast.32.toml":"4736b4ae18cb0e77adc523382ec44bc517a01e17abdb91522b8859d77fbdc7c6","tests/data/cpt/small0-in-fast.8.toml":"e9214d75c421989eb79b7060817f51fa1d648d55b854fad651ff729962bc49e4","tests/data/cpt/small0-in-fast.small16.toml":"20eb07e89364a1fd6ddf26f3bc302e92c1aaa724be792d9bf8656e4e5a7a6379"},"package":"200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"}
\ No newline at end of file
diff --git a/vendor/icu_collections/Cargo.lock b/vendor/icu_collections/Cargo.lock
new file mode 100644
index 00000000..2cf19f65
--- /dev/null
+++ b/vendor/icu_collections/Cargo.lock
@@ -0,0 +1,856 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anes"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+
+[[package]]
+name = "anstyle"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+
+[[package]]
+name = "autocfg"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+
+[[package]]
+name = "bumpalo"
+version = "3.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "ciborium"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
+dependencies = [
+ "ciborium-io",
+ "ciborium-ll",
+ "serde",
+]
+
+[[package]]
+name = "ciborium-io"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
+
+[[package]]
+name = "ciborium-ll"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
+dependencies = [
+ "ciborium-io",
+ "half",
+]
+
+[[package]]
+name = "clap"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c"
+dependencies = [
+ "clap_builder",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7"
+dependencies = [
+ "anstyle",
+ "clap_lex",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+
+[[package]]
+name = "cobs"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
+
+[[package]]
+name = "criterion"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
+dependencies = [
+ "anes",
+ "cast",
+ "ciborium",
+ "clap",
+ "criterion-plot",
+ "is-terminal",
+ "itertools",
+ "num-traits",
+ "once_cell",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
+dependencies = [
+ "cast",
+ "itertools",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+
+[[package]]
+name = "crunchy"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
+
+[[package]]
+name = "databake"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff6ee9e2d2afb173bcdeee45934c89ec341ab26f91c9933774fc15c2b58f83ef"
+dependencies = [
+ "databake-derive",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "databake-derive"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6834770958c7b84223607e49758ec0dde273c4df915e734aad50f62968a4c134"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "either"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+
+[[package]]
+name = "embedded-io"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
+
+[[package]]
+name = "embedded-io"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.15.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3"
+
+[[package]]
+name = "hermit-abi"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08"
+
+[[package]]
+name = "iai"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71a816c97c42258aa5834d07590b718b4c9a598944cd39a52dc25b351185d678"
+
+[[package]]
+name = "icu_collections"
+version = "2.0.0"
+dependencies = [
+ "criterion",
+ "databake",
+ "displaydoc",
+ "iai",
+ "postcard",
+ "potential_utf",
+ "serde",
+ "serde_json",
+ "toml",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.172"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
+
+[[package]]
+name = "log"
+version = "0.4.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "oorandom"
+version = "11.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
+
+[[package]]
+name = "plotters"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "postcard"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8"
+dependencies = [
+ "cobs",
+ "embedded-io 0.4.0",
+ "embedded-io 0.6.1",
+ "serde",
+]
+
+[[package]]
+name = "potential_utf"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
+dependencies = [
+ "serde",
+ "zerovec",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+
+[[package]]
+name = "rustversion"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.140"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "syn"
+version = "2.0.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "winnow"
+version = "0.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "yoke"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
+dependencies = [
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428"
+dependencies = [
+ "databake",
+ "serde",
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/vendor/icu_collections/Cargo.toml b/vendor/icu_collections/Cargo.toml
new file mode 100644
index 00000000..5fd8b60b
--- /dev/null
+++ b/vendor/icu_collections/Cargo.toml
@@ -0,0 +1,154 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "icu_collections"
+version = "2.0.0"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+    "build.rs",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Collection of API for use in ICU libraries."
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.docs.rs]
+all-features = true
+
+[features]
+alloc = ["zerovec/alloc"]
+databake = [
+    "dep:databake",
+    "zerovec/databake",
+]
+serde = [
+    "dep:serde",
+    "zerovec/serde",
+    "potential_utf/serde",
+    "alloc",
+]
+
+[lib]
+name = "icu_collections"
+path = "src/lib.rs"
+bench = false
+
+[[example]]
+name = "unicode_bmp_blocks_selector"
+path = "examples/unicode_bmp_blocks_selector.rs"
+
+[[test]]
+name = "char16trie"
+path = "tests/char16trie.rs"
+
+[[test]]
+name = "cpt"
+path = "tests/cpt.rs"
+
+[[bench]]
+name = "codepointtrie"
+path = "benches/codepointtrie.rs"
+harness = false
+
+[[bench]]
+name = "iai_cpt"
+path = "benches/iai_cpt.rs"
+harness = false
+
+[[bench]]
+name = "inv_list"
+path = "benches/inv_list.rs"
+harness = false
+
+[dependencies.databake]
+version = "0.2.0"
+features = ["derive"]
+optional = true
+default-features = false
+
+[dependencies.displaydoc]
+version = "0.2.3"
+default-features = false
+
+[dependencies.potential_utf]
+version = "0.1.1"
+features = ["zerovec"]
+default-features = false
+
+[dependencies.serde]
+version = "1.0.110"
+features = [
+    "derive",
+    "alloc",
+]
+optional = true
+default-features = false
+
+[dependencies.yoke]
+version = "0.8.0"
+features = ["derive"]
+default-features = false
+
+[dependencies.zerofrom]
+version = "0.1.3"
+features = ["derive"]
+default-features = false
+
+[dependencies.zerovec]
+version = "0.11.1"
+features = [
+    "derive",
+    "yoke",
+]
+default-features = false
+
+[dev-dependencies.iai]
+version = "0.1.1"
+
+[dev-dependencies.postcard]
+version = "1.0.3"
+features = ["alloc"]
+default-features = false
+
+[dev-dependencies.serde]
+version = "1.0.110"
+features = ["derive"]
+default-features = false
+
+[dev-dependencies.serde_json]
+version = "1.0.45"
+
+[dev-dependencies.toml]
+version = "0.8.0"
+features = ["parse"]
+default-features = false
+
+[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
+version = "0.5.0"
diff --git a/vendor/icu_collections/LICENSE b/vendor/icu_collections/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/icu_collections/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/icu_collections/README.md b/vendor/icu_collections/README.md
new file mode 100644
index 00000000..e90aa210
--- /dev/null
+++ b/vendor/icu_collections/README.md
@@ -0,0 +1,27 @@
+# icu_collections [![crates.io](https://img.shields.io/crates/v/icu_collections)](https://crates.io/crates/icu_collections)
+
+<!-- cargo-rdme start -->
+
+Efficient collections for Unicode data.
+
+This module is published as its own crate ([`icu_collections`](https://docs.rs/icu_collections/latest/icu_collections/))
+and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
+
+ICU4X `CodePointTrie` provides a read-only view of `CodePointTrie` data that is exported
+from ICU4C. Detailed information about the design of the data structure can be found in the documentation
+for the `CodePointTrie` struct.
+
+ICU4X `CodePointInversionList` provides necessary functionality for highly efficient querying of sets of Unicode characters.
+It is an implementation of the existing [ICU4C UnicodeSet API](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UnicodeSet.html).
+
+ICU4X `Char16Trie` provides a data structure for a space-efficient and time-efficient lookup of
+sequences of 16-bit units (commonly but not necessarily UTF-16 code units)
+which map to integer values.
+It is an implementation of the existing [ICU4C UCharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UCharsTrie.html)
+/ [ICU4J CharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/util/CharsTrie.html) API.
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_collections/benches/codepointtrie.rs b/vendor/icu_collections/benches/codepointtrie.rs
new file mode 100644
index 00000000..e4940163
--- /dev/null
+++ b/vendor/icu_collections/benches/codepointtrie.rs
@@ -0,0 +1,104 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+use icu_collections::codepointtrie::CodePointTrie;
+
+#[path = "tries/mod.rs"]
+mod tries;
+
+mod sample_str_lng {
+    // "eng" is all ASCII
+    pub const ENG: &str = "Universal Declaration of Human Rights";
+    // "pcd" has ASCII mixed with low-BMP code points
+    pub const PCD: &str = "Dèclaråcion dès dreûts d' l'ome po tos lès payîs dè monde";
+    // "ukr" uses low-BMP code points (less than U+1000)
+    pub const UKR: &str = "ЗАГАЛЬНА ДЕКЛАРАЦІЯ ПРАВ ЛЮДИНІ";
+    // "yue" uses high-BMP code points (greater than U+1000), so it benefits from fast mode
+    pub const YUE: &str = "世界人权宣言";
+    // "ccp" exercises supplementary code points
+    pub const CCP: &str = "𑄟𑄚𑄬𑄭𑄃𑄇𑄴𑄇𑄥𑄧𑄁𑄢𑄴 𑄝𑄬𑄇𑄴𑄅𑄚𑄮𑄢𑄴 𑄟𑄧𑄚𑄳𑄢𑄧𑄧𑄇𑄉𑄮𑄌𑄴";
+}
+
+const SAMPLE_STRING_MIXED: &str = "Dèclaråcion ЗАГАЛЬНА 世界人权宣言 𑄟𑄚𑄬𑄭𑄃𑄇𑄴𑄇𑄥𑄧𑄁𑄢𑄴";
+
+/// A function that returns 100 code points in the desired language
+fn one_hundred_code_points(sample_str: &str) -> String {
+    sample_str.chars().cycle().take(100).collect()
+}
+
+fn get_trie_small() -> CodePointTrie<'static, u8> {
+    CodePointTrie::try_new(
+        tries::gc_small::HEADER,
+        tries::gc_small::INDEX,
+        tries::gc_small::DATA,
+    )
+    .unwrap()
+}
+
+fn get_trie_fast() -> CodePointTrie<'static, u8> {
+    CodePointTrie::try_new(
+        tries::gc_fast::HEADER,
+        tries::gc_fast::INDEX,
+        tries::gc_fast::DATA,
+    )
+    .unwrap()
+}
+
+fn overview_bench(c: &mut Criterion) {
+    let s = one_hundred_code_points(SAMPLE_STRING_MIXED);
+    let cpt_small = get_trie_small();
+
+    c.bench_function("cpt/overview", |b| {
+        b.iter(|| {
+            black_box(&s)
+                .chars()
+                .map(|c| black_box(&cpt_small).get32(c as u32))
+                .reduce(|a, b| a.wrapping_add(b))
+        });
+    });
+
+    c.bench_function("cpt/get_range", |b| {
+        b.iter(|| {
+            black_box(&s)
+                .chars()
+                .map(|c| black_box(&cpt_small).get_range(c as u32).unwrap())
+                .fold(0u32, |acc, ele| {
+                    acc.wrapping_add(ele.range.end() - ele.range.start() + ele.value as u32)
+                })
+        });
+    });
+
+    {
+        let cpt_fast = get_trie_fast();
+        lang_bench(c, &cpt_small, "small/eng", sample_str_lng::ENG);
+        lang_bench(c, &cpt_small, "small/pcd", sample_str_lng::PCD);
+        lang_bench(c, &cpt_small, "small/ukr", sample_str_lng::UKR);
+        lang_bench(c, &cpt_small, "small/yue", sample_str_lng::YUE);
+        lang_bench(c, &cpt_small, "small/ccp", sample_str_lng::CCP);
+        lang_bench(c, &cpt_fast, "fast/eng", sample_str_lng::ENG);
+        lang_bench(c, &cpt_fast, "fast/pcd", sample_str_lng::PCD);
+        lang_bench(c, &cpt_fast, "fast/ukr", sample_str_lng::UKR);
+        lang_bench(c, &cpt_fast, "fast/yue", sample_str_lng::YUE);
+        lang_bench(c, &cpt_fast, "fast/ccp", sample_str_lng::CCP);
+    }
+}
+
+fn lang_bench(c: &mut Criterion, cpt: &CodePointTrie<u8>, lid: &str, sample_str: &str) {
+    let bench_name = format!("cpt/get/{lid}");
+    let s = one_hundred_code_points(sample_str);
+
+    c.bench_function(&bench_name, |b| {
+        b.iter(|| {
+            black_box(&s)
+                .chars()
+                .map(|c| black_box(&cpt).get32(c as u32))
+                .reduce(|a, b| a.wrapping_add(b))
+        });
+    });
+}
+
+criterion_group!(benches, overview_bench,);
+criterion_main!(benches);
diff --git a/vendor/icu_collections/benches/iai_cpt.rs b/vendor/icu_collections/benches/iai_cpt.rs
new file mode 100644
index 00000000..3d57cbb4
--- /dev/null
+++ b/vendor/icu_collections/benches/iai_cpt.rs
@@ -0,0 +1,77 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use icu_collections::codepointtrie::CodePointTrie;
+
+#[path = "tries/mod.rs"]
+mod tries;
+
+// The string has 41 chars.
+const SAMPLE_STRING_LATIN1: &str = "Declaration loremips umdolo loremipsompi";
+const SAMPLE_STRING_MIXED: &str = "Dèclaråcion ЗАГАЛЬНА 世界人权宣言 𑄟𑄚𑄬𑄭𑄃𑄇𑄴𑄇𑄥𑄧𑄁𑄢𑄴";
+
+fn get_trie_small() -> CodePointTrie<'static, u8> {
+    CodePointTrie::try_new(
+        tries::gc_small::HEADER,
+        tries::gc_small::INDEX,
+        tries::gc_small::DATA,
+    )
+    .unwrap()
+}
+
+fn get_trie_fast() -> CodePointTrie<'static, u8> {
+    CodePointTrie::try_new(
+        tries::gc_fast::HEADER,
+        tries::gc_fast::INDEX,
+        tries::gc_fast::DATA,
+    )
+    .unwrap()
+}
+
+fn bench_iai_cpt_overview(fast: bool, mixed: bool) {
+    // Tests the instructions required to get CPT for 100,000 chars.
+
+    let cpt = if fast {
+        get_trie_fast()
+    } else {
+        get_trie_small()
+    };
+    let sample = if mixed {
+        SAMPLE_STRING_MIXED
+    } else {
+        SAMPLE_STRING_LATIN1
+    };
+
+    let mut i: u8 = 0;
+    for c in sample.chars() {
+        i = i.wrapping_add(cpt.get32(c as u32))
+        //i = i.wrapping_add(1);
+    }
+
+    // Ensure the loop is not DCEd
+    assert!(i < 255);
+}
+
+fn bench_iai_cpt_latin_fast() {
+    bench_iai_cpt_overview(true, false);
+}
+
+fn bench_iai_cpt_latin_small() {
+    bench_iai_cpt_overview(false, false);
+}
+
+fn bench_iai_cpt_mixed_fast() {
+    bench_iai_cpt_overview(true, true);
+}
+
+fn bench_iai_cpt_mixed_small() {
+    bench_iai_cpt_overview(false, true);
+}
+
+iai::main!(
+    bench_iai_cpt_latin_fast,
+    bench_iai_cpt_latin_small,
+    bench_iai_cpt_mixed_fast,
+    bench_iai_cpt_mixed_small,
+);
diff --git a/vendor/icu_collections/benches/inv_list.rs b/vendor/icu_collections/benches/inv_list.rs
new file mode 100644
index 00000000..41a23568
--- /dev/null
+++ b/vendor/icu_collections/benches/inv_list.rs
@@ -0,0 +1,66 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{criterion_group, criterion_main, Criterion};
+use icu_collections::codepointinvlist::CodePointInversionList;
+use std::char;
+
+fn uniset_bench(c: &mut Criterion) {
+    let best_ex = [0x41, 0x46];
+    let best_sample = CodePointInversionList::try_from_u32_inversion_list_slice(&best_ex).unwrap();
+    let worst_ex: Vec<u32> = (0x0..((char::MAX as u32) + 1)).collect();
+    let worst_sample =
+        CodePointInversionList::try_from_u32_inversion_list_slice(&worst_ex).unwrap();
+
+    c.bench_function("uniset/overview", |b| {
+        #[allow(clippy::suspicious_map)]
+        b.iter(|| {
+            best_sample
+                .iter_chars()
+                .map(|ch| best_sample.contains(ch))
+                .count();
+            worst_sample
+                .iter_chars()
+                .map(|ch| worst_sample.contains(ch))
+                .count();
+            best_sample
+                .iter_chars()
+                .map(|ch| best_sample.contains_range('A'..ch))
+                .count();
+            worst_sample
+                .iter_chars()
+                .take(100)
+                .map(|ch| worst_sample.contains_range(char::from_u32(0x0).unwrap()..ch))
+                .count();
+        })
+    });
+
+    {
+        let mut group = c.benchmark_group("uniset/contains");
+        group.bench_with_input("best", &best_sample, |b, sample| {
+            b.iter(|| sample.iter_chars().map(|ch| sample.contains(ch)))
+        });
+        group.bench_with_input("worst", &worst_sample, |b, sample| {
+            b.iter(|| sample.iter_chars().take(100).map(|ch| sample.contains(ch)))
+        });
+        group.finish();
+
+        let mut group = c.benchmark_group("uniset/contains_range");
+        group.bench_with_input("best", &best_sample, |b, sample| {
+            b.iter(|| sample.iter_chars().map(|ch| sample.contains_range('A'..ch)))
+        });
+        group.bench_with_input("worst", &worst_sample, |b, sample| {
+            b.iter(|| {
+                sample
+                    .iter_chars()
+                    .take(100)
+                    .map(|ch| sample.contains_range(char::from_u32(0x0).unwrap()..ch))
+            })
+        });
+        group.finish();
+    }
+}
+
+criterion_group!(benches, uniset_bench);
+criterion_main!(benches);
diff --git a/vendor/icu_collections/benches/tries/gc_fast.rs b/vendor/icu_collections/benches/tries/gc_fast.rs
new file mode 100644
index 00000000..ba98a40f
--- /dev/null
+++ b/vendor/icu_collections/benches/tries/gc_fast.rs
@@ -0,0 +1,1128 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use icu_collections::codepointtrie::{CodePointTrieHeader, TrieType};
+use zerovec::ule::AsULE;
+use zerovec::{zerovec, ZeroVec};
+
+#[rustfmt::skip]
+pub const INDEX: ZeroVec<u16> = zerovec!(u16; <u16 as AsULE>::ULE::from_unsigned;
+    [
+        0,0x40,0x7f,0xbf,0xff,0x12e,0x16d,0x1ad,0x1e5,0x224,0x250,0x28e,0x2ce,0x2de,0x31e,0x34f,
+        0x38c,0x3bc,0x3fa,0x43a,0x44a,0x47b,0x4b2,0x4f2,0x532,0x572,0x5a3,0x5cf,0x60f,0x644,0x65e,0x69e,
+        0x6de,0x71e,0x756,0x78d,0x7ca,0x809,0x848,0x887,0x8c6,0x905,0x944,0x983,0x9c3,0xa01,0xa3f,0xa7f,
+        0xabf,0xafe,0xb3e,0xb7e,0xbbe,0xbfd,0xc3d,0xc7d,0xcbc,0xcfc,0xd3b,0xd7b,0xdbb,0xdfb,0xe3b,0xe79,
+        0xeb9,0xef9,0xf37,0xf71,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xfb1,0xfe8,0x1026,0x1055,0x107a,0x10ba,0x10da,
+        0x111a,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x112d,0x116d,0x118d,0x11cd,0x120d,0x124d,0x128b,
+        0x12cb,0x1308,0x1348,0x1378,0x13b8,0x13f8,0x1438,0x146e,0x14ae,0x14d9,0x1519,0x1558,0x1598,0x15d6,0x1616,0x1650,
+        0x1690,0x16d0,0x1710,0x1750,0x1790,0x17bc,0x17a1,0x2ce,0x17fc,0x17fc,0x1826,0x17fc,0x1865,0x18a5,0x18e5,0x1924,
+        0x1964,0x19a3,0x19e3,0x1a22,0x1a62,0x1aa2,0x1adf,0x1b11,0x1b45,0x1b45,0x1b45,0x1b45,0x1b85,0x1bb0,0x1bed,0x1c21,
+        0x1c43,0x1c83,0x1ca7,0x1cc3,0x1d03,0x1d03,0x1bb5,0x1d42,0x1d03,0x1bbd,0x1d03,0x1d03,0x1d03,0x1d82,0x1cef,0x1dc2,
+        0x1d03,0x1d03,0x1d03,0x1d03,0x1b45,0x1b45,0x1dff,0x1e27,0x1b45,0x1b45,0x1b45,0x1b45,0x1e67,0x1ea2,0x1ed8,0x1d03,
+        0x38c,0x1f18,0x17fc,0x1f57,0x1f97,0x1fc7,0x2007,0x2027,0x2067,0x20a7,0x20e7,0x2102,0x1d03,0x1d03,0x1d03,0x2120,
+        0x2160,0x21a0,0x21c9,0x21ea,0x222a,0x5a3,0x225b,0x229b,0x22db,0x2313,0x2329,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1d03,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x12f6,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x2369,0x23a2,0x5a3,0x5a3,0x5a3,0x5a3,0x23e2,0x2422,0x2462,0x2482,0x24c2,0x24f4,0x2532,0x256e,
+        0x25ac,0x25ec,0x262c,0x2668,0x26a8,0x26e1,0x2721,0x2760,0x27a0,0x27e0,0x281e,0x285e,0x289d,0x28cd,0x28fd,0x293d,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x297d,0x29b6,
+        0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,
+        0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,0x29f6,
+        0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,
+        0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,
+        0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,
+        0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,
+        0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,
+        0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,
+        0x2a36,0x2a36,0x2a36,0x2a36,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x2a76,0x5a3,0x2aa6,0x2ae6,0x2b26,0x2b34,0x2b71,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x2b84,0x2bc4,0x2bf4,0x2c2c,0x2c6c,0x2ca8,0x5a3,0x2cde,0x2d1e,0x2d5e,0x2d8f,0x2dce,
+        0xac0,0xade,0xafb,0xb1a,0xb3a,0xb3a,0xb47,0xb64,0xb84,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,
+        0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,
+        0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,0xb8e,
+        0xb8e,0xb8e,0xb8e,0xb8e,0xbae,0xb8e,0xb8e,0xb8e,0xbce,0xbce,0xbce,0xbcf,0xbce,0xbce,0xbce,0xbcf,
+        0x865,0x5a3,0xae1,0x2e0e,0x50f,0x50f,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x73e,
+        0x2e1e,0x10a3,0x10a3,0x2e2a,0x1ac2,0x1ac2,0x1ac2,0x2e3a,0x2e43,0x1c5d,0x1c69,0xd18,0xd18,0x1d03,0x1d03,0x2e53,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x510,0x5a3,0x5a3,0x5a3,0x993,0x2e63,0x2e67,
+        0x5a3,0x5a3,0x2e6f,0x5a3,0x2e7e,0x5a3,0x5a3,0x2e8e,0x5a3,0x2e9e,0x5a3,0x5a3,0x1460,0x2ead,0xd18,0xd18,
+        0x41,0x41,0x342,0x28fd,0x28fd,0x5a3,0x5a3,0x5a3,0x5a3,0x50f,0xb24,0x41,0x41,0x2ebd,0x28fd,0x2ec5,
+        0x5a3,0x5a3,0x13a6,0x5a3,0x5a3,0x5a3,0x2ed5,0x335,0x335,0x2ee5,0x2ef3,0x2f01,0xd18,0xd18,0xd18,0xd18,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x13a7,0x5a3,0x13a8,0x13a6,0xd18,0x2f11,0x280,0x280,0x2f16,0xd18,0xd18,0xd18,0xd18,
+        0x2f26,0x5a3,0x5a3,0x2f30,0x5a3,0x2f3f,0x5a3,0x2f4f,0x5a3,0x50e,0x1c9c,0xd18,0xd18,0xd18,0x5a3,0x2f5f,
+        0x5a3,0x2f6f,0x5a3,0x2f7f,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x2f8f,0x10a3,0x1ca1,0x10a3,0x10a3,
+        0x2f9e,0x94e,0x5a3,0x2fae,0x2e6a,0x2fbe,0x5a3,0x2fce,0x5a3,0x2fde,0xd18,0xd18,0x2fee,0x5a3,0x2ff9,0x3009,
+        0x5a3,0x5a3,0x5a3,0x3019,0x5a3,0x3029,0x5a3,0x3039,0x5a3,0x3049,0x1c9a,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x1338,0xd18,0xd18,0xd18,0x41,0x41,0x41,0x3059,0x28fd,0x28fd,0x28fd,0x3069,
+        0x5a3,0x5a3,0x3079,0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0x10a3,0x10a8,0x5a3,0x5a3,0x3089,0xd99,0xd18,0xd18,0xd18,0xd18,0x5a3,0x2fde,0x3099,0x5a3,0x577,0x30a9,
+        0xd18,0x5a3,0x30b9,0xd18,0xd18,0x5a3,0x30c9,0xd18,0x5a3,0x13a7,0x281b,0x5a3,0x5a3,0x575,0x30d9,0x1ca1,
+        0x30e9,0x30f9,0x7cb,0x5a3,0x5a3,0x3109,0x3117,0x5a3,0x1338,0xb24,0x773,0x5a3,0x3127,0x3134,0x3144,0x5a3,
+        0x5a3,0x3154,0x7cb,0x5a3,0x5a3,0x3164,0x3173,0x3183,0x1ca2,0x3193,0x5a3,0x954,0x31a3,0x31b2,0xd18,0xd18,
+        0xd18,0xd18,0x31c2,0x863,0x31d1,0x5a3,0x5a3,0x630,0x31e1,0xb24,0x31f1,0x858,0x868,0x3200,0x3210,0x3220,
+        0x322e,0x1562,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x323e,0x324e,0x325e,
+        0xd99,0xd18,0x5a3,0x5a3,0x5a3,0x326e,0x327d,0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0x5a3,0x5a3,0xed5,0x328d,0x329c,0x32a4,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x32b4,0x32c3,0xb24,
+        0x32d3,0xd18,0x5a3,0x5a3,0x32e3,0x32f3,0xb24,0xd18,0xd18,0xd18,0x5a3,0x108a,0x3303,0x3313,0x13a7,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x31a3,0x3323,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0x41,0x41,0x28fd,0x28fd,0xc23,0x3333,0x3342,0x334e,0x5a3,0x335e,0x336e,0xb24,
+        0xd18,0xd18,0xd18,0xd18,0x2a9c,0x5a3,0x5a3,0x337e,0x338e,0xd18,0x339e,0x5a3,0x5a3,0x33ab,0x33ba,0x33ca,
+        0x5a3,0x5a3,0x573,0x33da,0x33e8,0x5a3,0x5a3,0x5a3,0x5a3,0x1338,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x868,0x5a3,0xed5,0x33f8,0x3408,0xc23,
+        0x10aa,0x550,0x5a3,0xe2a,0x3418,0x3427,0xd18,0xd18,0xd18,0xd18,0x96e,0x5a3,0x5a3,0x3437,0x3446,0xb24,
+        0x3456,0x5a3,0x3460,0x3470,0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0x5a3,0x3480,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0x993,0x10a3,0x3490,0x349f,0x34ad,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1337,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x1ac2,0x34bd,0x34cd,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd97,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x34dd,0x5a3,0x5a3,0x50e,0x34ed,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x13a7,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0x5a3,0x5a3,0x5a3,0x1338,0x5a3,0x50e,0x2770,0x5a3,0x5a3,0x5a3,0x5a3,0x50e,0xb24,0x5a3,0x50f,
+        0x34fd,0x5a3,0x5a3,0x5a3,0x350d,0x351d,0x352d,0x353b,0x741,0x5a3,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0x41,0x41,0x28fd,0x28fd,0x10a3,0x354b,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,
+        0x5a3,0xe1d,0x355b,0x355c,0x355c,0x3564,0x3573,0xd18,0xd18,0xd18,0xd18,0x3581,0x3591,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x13a6,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x13a8,0xd18,0xd18,0x1338,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x35a1,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0xd98,0xd18,0xd18,0xd98,0x2ed1,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x511,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x73e,0x510,0x1338,0x35b1,0x35c1,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0x2ce,0x2ce,0x641,0x2ce,0x1560,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,
+        0x1d03,0x1c66,0xd18,0xd18,0xd18,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,
+        0x1d03,0x1d03,0x1d03,0x1d03,0x1c64,0x1d03,0x1d03,0x1ecf,0x1d03,0x1d03,0x1d03,0x35d1,0x35de,0x35eb,0x1d03,0x35f7,
+        0x1d03,0x1d03,0x1d03,0x1c5f,0xd18,0x1d03,0x1d03,0x1d03,0x1d03,0x3605,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0x10a3,0x3615,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1c63,0x10a3,0x2e6a,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0x41,0x3b2,0x28fd,0x3625,0x3ae,0x2ef0,0x1865,0x41,0xdc,0x3635,0x3645,
+        0x3653,0x2ef1,0x41,0x3b2,0x28fd,0x3660,0x366d,0x28fd,0x367b,0x368b,0x369a,0x369e,0x41,0xd8,0x28fd,0x41,
+        0x3b2,0x28fd,0x3625,0x3ae,0x28fd,0x1865,0x41,0xdc,0x369e,0x41,0xd8,0x28fd,0x41,0x3b2,0x28fd,0x36ae,
+        0x41,0x36bd,0xeb,0x38a,0x36cd,0x28fd,0x36d9,0x41,0x36b9,0xe7,0x36c7,0xc7,0x28fd,0xed,0x41,0x36e5,
+        0x28fd,0x36f2,0x3700,0x3700,0x3700,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,
+        0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,
+        0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x2ce,0x2ce,0x2ce,0x3710,0x2ce,0x2ce,0x371b,0x3728,0x3734,0x1a27,0x4c2,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0x25a,0x1fae,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xe4c,0x3744,0x3752,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x510,0x3762,0x3772,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x3782,0xd18,0x5a3,0x5a3,0x633,0x3792,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x37a2,0x50e,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x37b2,0x1560,0xd18,0xd18,0x41,0x41,0xdc,0x28fd,
+        0x37c2,0x2770,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x1ca2,0x10a3,0x10a3,0x37d2,
+        0x37e2,0xd18,0xd18,0xd18,0xd18,0x1ca2,0x10a3,0x37f2,0x10a9,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xae4,0x5a3,0x3802,0x380f,0x381d,0x382d,0x383b,0x3843,0x867,0x511,0x3852,
+        0x511,0xd18,0xd18,0xd18,0x3862,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0x1d03,0x1d03,0x1c5e,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1c66,0x1c5b,
+        0x148b,0x148b,0x148b,0x1d03,0x1c64,0x1cb6,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1c5c,
+        0xd18,0xd18,0xd18,0x1c7d,0x1d03,0x1c67,0x1d03,0x1d03,0x1c5e,0x1c61,0x1c68,0x1c64,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,
+        0x1d03,0x1d03,0x1d03,0x1d03,0x3872,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,
+        0x1d03,0x1d03,0x3882,0x1c5d,0x1c5d,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1c66,0x1d03,0x1d03,0x1d03,
+        0x1d03,0x1d03,0x1c61,0x1c5e,0x1c69,0x1c5e,0x1d03,0x1d03,0x1d03,0x1c62,0x10ca,0x1d03,0x1d03,0x1c62,0x1d03,0x1c5c,
+        0x1c68,0xd18,0xd18,0xd18,0xd18,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,
+        0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1c66,0x1c5c,0x388f,0x1c63,0x1d03,0x1c5d,0x1c5f,0x1c64,0x10ca,0x1c62,0x1c63,
+        0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1d03,0x1eeb,0x1d03,0x1d03,0x1c5f,0xd18,0xd18,0xb24,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd18,0xd18,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x1338,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x50f,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd99,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x993,0xd18,
+        0x5a3,0x50f,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+        0x5a3,0x5a3,0x5a3,0x5a3,0x73e,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0x389e,0xd18,0x38ae,0x38ae,0x38ae,0x38ae,0x38ae,0x38ae,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+        0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0xd18,
+        0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,
+        0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x2a36,0x38be,
+        0x440,0x460,0x480,0x4a0,0x4c0,0x4e0,0x500,0x51a,0x53a,0x55a,0x57a,0x59a,0x5ba,0x5da,0x5fa,0x615,
+        0xd0,0x635,0x655,0x66a,0x66a,0x66a,0x66a,0x671,0xd0,0xd0,0x691,0x66a,0x66a,0x66a,0x66a,0x66a,
+        0xd0,0x6b1,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,
+        0x66a,0x66a,0xd0,0x6d1,0x66a,0x6ed,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x70d,0xd0,
+        0xd0,0x72d,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,
+        0x66a,0x66a,0x73e,0x75e,0x775,0x66a,0x66a,0x66a,0x66a,0x795,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,
+        0x66a,0x7a5,0x7c5,0x7e5,0x805,0x825,0x845,0x865,0x66a,0x875,0x895,0x8ac,0x66a,0x8bc,0x8dc,0x66a,
+        0x8f5,0x915,0x935,0x955,0x845,0x975,0x995,0x9b0,0x66a,0x66a,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+        0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+        0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x9d0,0xd0,0xd0,0xd0,0xd0,0xd0,
+        0xd0,0xd0,0x9e0,0x9ff,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xa15,0xd0,0xd0,0xd0,0xd0,
+        0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xa20,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,
+        0xd0,0xa40,0x66a,0x66a,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xa60,0x66a,0x66a,
+        0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,
+        0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0xa80,0x66a,
+        0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,
+        0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x66a,0x380,0x380,
+        0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,
+        0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0x380,0xaa0
+    ]
+);
+
+#[rustfmt::skip]
+pub const DATA: ZeroVec<u8> = zerovec!(u8; core::convert::identity;
+    [
+        0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+        0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+        0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17,
+        9,9,9,9,9,9,9,9,9,9,0x17,0x17,0x18,0x18,0x18,0x17,
+        0x17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,0x14,0x17,0x15,0x1a,0x16,
+        0x1a,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,0x14,0x18,0x15,0x18,0xf,
+        0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+        0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xc,
+        0x17,0x19,0x19,0x19,0x19,0x1b,0x17,0x1a,0x1b,5,0x1c,0x18,0x10,0x1b,0x1a,0x1b,
+        0x18,0xb,0xb,0x1a,2,0x17,0x17,0x1a,0xb,5,0x1d,0xb,0xb,0xb,0x17,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,0x18,1,1,1,1,1,1,1,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,0x18,2,2,2,2,2,2,2,2,1,
+        2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+        2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+        2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+        2,1,2,1,2,1,2,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,1,2,1,2,1,2,2,1,1,
+        2,1,2,1,1,2,1,1,1,2,2,1,1,1,1,2,
+        1,1,2,1,1,1,2,2,2,1,1,2,1,1,2,1,
+        2,1,2,1,1,2,1,2,2,1,2,1,1,2,1,1,
+        1,2,1,2,1,1,2,2,5,1,2,2,2,5,5,5,
+        5,1,3,2,1,3,2,1,3,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,
+        2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,3,
+        2,1,2,1,1,1,2,1,2,1,2,1,2,1,2,1,
+        2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+        2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+        2,1,2,1,2,1,2,1,2,2,2,2,2,2,2,1,
+        1,2,1,1,2,1,2,1,1,1,1,2,1,2,1,2,
+        1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,5,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+        0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,4,4,4,
+        0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,
+        4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,0x1a,4,0x1a,0x1a,0x1a,
+        0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,2,
+        1,2,4,0x1a,1,2,0,0,4,2,2,2,0x17,1,0,0,
+        0,0,0x1a,0x1a,1,0x17,1,1,1,0,1,0,1,1,2,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,
+        2,1,1,1,2,2,2,1,2,1,2,1,2,1,2,1,
+        2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,2,
+        2,2,2,1,2,0x18,1,2,1,1,2,2,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,0x1b,6,6,6,
+        6,6,7,7,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,1,2,1,2,1,
+        2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,0,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,0,0,4,0x17,0x17,0x17,0x17,0x17,0x17,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,0x17,0x13,0,0,0x1b,
+        0x1b,0x19,0,6,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+        0x13,6,0x17,6,6,0x17,6,6,0x17,6,0,0,0,0,0,0,
+        0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,
+        0,5,5,5,5,0x17,0x17,0,0,0,0,0,0,0,0,0,
+        0,0,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x18,0x18,0x17,0x17,0x19,0x17,0x17,
+        0x1b,0x1b,6,6,6,6,6,6,6,6,6,6,6,0x17,0x10,0x17,
+        0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,4,5,5,5,5,5,5,5,5,5,5,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,6,9,9,9,9,9,9,9,9,9,9,0x17,0x17,0x17,0x17,
+        5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,0x17,5,6,6,6,6,6,6,6,0x10,0x1b,6,6,
+        6,6,6,6,4,4,6,6,0x1b,6,6,6,6,5,5,9,
+        9,9,9,9,9,9,9,9,9,5,5,5,0x1b,0x1b,5,0x17,
+        0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0x10,5,
+        6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,
+        0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,5,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,
+        9,9,9,9,9,9,9,9,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,
+        6,6,4,4,0x1b,0x17,0x17,0x17,4,0,0,6,0x19,0x19,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,6,6,6,6,4,6,6,6,6,6,6,6,
+        6,6,4,6,6,6,4,6,6,6,6,6,0,0,0x17,0x17,
+        0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,6,6,6,0,0,0x17,0,5,5,
+        5,5,5,5,5,5,5,5,5,0,0,0,0,0,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x1a,5,
+        5,5,5,5,5,0,0x10,0x10,0,0,0,0,0,0,6,6,
+        6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0x10,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,8,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,6,8,6,5,8,8,6,6,6,6,6,6,
+        6,6,8,8,8,8,6,8,8,5,6,6,6,6,6,6,
+        6,5,5,5,5,5,5,5,5,5,5,6,6,0x17,0x17,9,
+        9,9,9,9,9,9,9,9,9,0x17,4,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,6,8,8,0,5,5,5,
+        5,5,5,5,5,0,0,5,5,0,0,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,0,5,5,5,5,5,5,5,0,5,0,0,0,5,5,
+        5,5,0,0,6,5,8,8,6,6,6,6,0,0,8,8,
+        0,0,8,8,6,5,0,0,0,0,0,0,0,0,8,0,
+        0,0,0,5,5,0,5,5,5,6,6,0,0,9,9,9,
+        9,9,9,9,9,9,9,5,5,0x19,0x19,0xb,0xb,0xb,0xb,0xb,
+        0xb,0x1b,0x19,5,0x17,6,0,6,6,8,0,5,5,5,5,5,
+        5,0,0,0,0,5,5,0,0,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
+        5,5,5,5,5,5,5,0,5,5,0,5,5,0,5,5,
+        0,0,6,0,8,8,6,6,0,0,0,0,6,6,0,0,
+        6,6,6,0,0,0,6,0,0,0,0,0,0,0,5,5,
+        5,5,0,5,0,0,0,0,0,0,0,9,9,9,9,9,
+        9,9,9,9,9,6,6,5,5,5,6,0x17,0,0,0,0,
+        0,0,0,0,0,6,6,8,0,5,5,5,5,5,5,5,
+        5,5,0,5,5,5,0,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,
+        5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,0,
+        6,5,8,8,6,6,6,6,6,0,6,6,8,0,8,8,
+        6,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,5,5,6,6,0,0,9,9,9,9,9,9,9,
+        9,9,9,0x17,0x19,0,0,0,0,0,0,0,5,6,6,6,
+        6,6,6,0,6,8,8,0,5,5,5,5,5,5,5,5,
+        0,0,5,5,0,0,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,
+        5,5,5,5,0,5,5,0,5,5,5,5,5,0,0,6,
+        5,8,6,6,6,6,0,0,8,8,0,0,8,8,6,0,
+        0,0,0,0,0,0,6,6,8,0,0,0,0,5,5,0,
+        5,5,5,6,6,0,0,9,9,9,9,9,9,9,9,9,
+        9,0x1b,5,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0,
+        0,6,5,0,5,5,5,5,5,5,0,0,0,5,5,5,
+        0,5,5,5,5,0,0,0,5,5,0,5,0,5,5,0,
+        0,0,5,5,0,0,0,5,5,5,0,0,0,5,5,5,
+        5,5,5,5,5,5,5,5,5,0,0,0,0,8,8,6,
+        8,8,0,0,0,8,8,8,0,8,8,8,6,0,0,5,
+        0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,0xb,
+        0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x1b,0,0,0,0,0,6,
+        8,8,8,6,5,5,5,5,5,5,5,5,0,5,5,5,
+        0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,0,0,6,5,6,6,8,
+        8,8,8,0,6,6,6,0,6,6,6,6,0,0,0,0,
+        0,0,0,6,6,0,5,5,5,0,0,5,0,0,5,5,
+        6,6,0,0,9,9,9,9,9,9,9,9,9,9,0,0,
+        0,0,0,0,0,0x17,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,5,6,
+        8,8,0x17,5,5,5,5,5,5,5,5,0,5,5,5,0,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,
+        5,5,0,5,5,5,5,5,0,0,6,5,8,6,8,8,
+        8,8,8,0,6,8,8,0,8,8,6,6,0,0,0,0,
+        0,0,0,8,8,0,0,0,0,0,0,5,5,0,5,5,
+        6,6,0,0,9,9,9,9,9,9,9,9,9,9,0,5,
+        5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,
+        8,8,5,5,5,5,5,5,5,5,5,0,5,5,5,0,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,6,6,5,8,8,6,6,
+        6,6,0,8,8,8,0,8,8,8,6,5,0x1b,0,0,0,
+        0,5,5,5,8,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,6,
+        6,0,0,9,9,9,9,9,9,9,9,9,9,0xb,0xb,0xb,
+        0xb,0xb,0xb,0xb,0xb,0xb,0x1b,5,5,5,5,5,5,0,6,8,
+        8,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
+        5,5,5,5,5,5,5,5,5,0,5,0,0,5,5,5,
+        5,5,5,5,0,0,0,6,0,0,0,0,8,8,8,6,
+        6,6,0,6,0,8,8,8,8,8,8,8,8,0,0,0,
+        0,0,0,9,9,9,9,9,9,9,9,9,9,0,0,8,
+        8,0x17,0,0,0,0,0,0,0,0,0,0,0,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5,
+        6,6,6,6,6,6,6,0,0,0,0,0x19,5,5,5,5,
+        5,5,4,6,6,6,6,6,6,6,6,0x17,9,9,9,9,
+        9,9,9,9,9,9,0x17,0x17,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,5,
+        0,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
+        5,0,5,5,5,5,5,5,5,5,5,5,6,5,5,6,
+        6,6,6,6,6,6,6,6,5,0,0,5,5,5,5,5,
+        0,4,0,6,6,6,6,6,6,0,0,9,9,9,9,9,
+        9,9,9,9,9,0,0,5,5,5,5,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,5,0x1b,0x1b,0x1b,0x17,
+        0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x17,
+        0x1b,0x1b,0x1b,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,9,9,9,9,9,
+        9,9,9,9,9,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,
+        6,0x1b,6,0x1b,6,0x14,0x15,0x14,0x15,8,8,5,5,5,5,5,
+        5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,0,0,0,0,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,8,6,6,6,6,6,
+        0x17,6,6,5,5,5,5,5,6,6,6,6,6,6,6,6,
+        6,6,6,0,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,
+        0x1b,0x1b,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,8,8,6,6,6,6,8,6,6,6,6,6,
+        6,8,6,6,8,8,6,6,5,9,9,9,9,9,9,9,
+        9,9,9,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,5,5,8,
+        8,6,6,5,5,5,5,6,6,6,5,8,8,8,5,5,
+        8,8,8,8,8,8,8,5,5,5,6,6,6,6,5,5,
+        5,5,5,5,5,5,5,5,5,6,8,8,6,6,8,8,
+        8,8,8,8,6,5,8,9,9,9,9,9,9,9,9,9,
+        9,8,8,8,6,0x1b,0x1b,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,0,1,0,0,0,0,0,1,0,
+        0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,0x17,4,2,2,
+        2,5,5,5,5,5,5,5,5,5,0,5,5,5,5,0,
+        0,5,5,5,5,5,5,5,0,5,0,5,5,5,5,0,
+        0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,0,5,5,5,5,0,0,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,0,5,5,5,5,0,0,
+        5,5,5,5,5,5,5,0,5,5,5,5,0,0,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,0,5,5,5,5,0,0,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,0,0,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,
+        0x17,0x17,0x17,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        0,0,2,2,2,2,2,2,0,0,0x13,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,0x1b,0x17,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,0xc,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,0x14,0x15,0,0,0,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,0x17,0x17,0x17,0xa,0xa,0xa,5,5,
+        5,5,5,5,5,5,0,0,0,0,0,0,0,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,
+        6,6,8,0,0,0,0,0,0,0,0,0,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,
+        6,8,0x17,0x17,0,0,0,0,0,0,0,0,0,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,
+        6,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,0,5,5,5,0,6,
+        6,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,6,6,8,6,6,6,6,6,6,6,8,8,8,8,8,
+        8,6,8,8,6,6,6,6,6,6,6,6,6,6,6,0x17,
+        0x17,0x17,4,0x17,0x17,0x17,0x19,5,6,0,0,9,9,9,9,9,
+        9,9,9,9,9,0,0,0,0,0,0,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17,
+        0x17,0x13,0x17,0x17,0x17,0x17,6,6,6,0x10,6,9,9,9,9,9,
+        9,9,9,9,9,0,0,0,0,0,0,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,4,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,0,0,0,0,0,0,0,5,5,5,5,5,6,6,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,6,5,0,0,0,0,0,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,
+        0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,0,6,6,6,8,8,8,8,6,
+        6,8,8,8,0,0,0,0,8,8,6,8,8,8,8,8,
+        8,6,6,6,0,0,0,0,0x1b,0,0,0,0x17,0x17,9,9,
+        9,9,9,9,9,9,9,9,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,0,0,5,5,5,5,5,0,0,0,
+        0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,0,0,0,0,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,0,0,0,0,0,0,9,9,
+        9,9,9,9,9,9,9,9,0xb,0,0,0,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,6,6,8,8,6,0,0,0x17,0x17,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,6,
+        8,6,6,6,6,6,6,6,0,6,8,6,8,8,6,6,
+        6,6,6,6,6,6,8,8,8,8,8,8,6,6,6,6,
+        6,6,6,6,6,6,0,0,6,9,9,9,9,9,9,9,
+        9,9,9,0,0,0,0,0,0,9,9,9,9,9,9,9,
+        9,9,9,0,0,0,0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+        4,0x17,0x17,0x17,0x17,0x17,0x17,0,0,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,7,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,6,6,6,6,8,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,6,8,6,6,
+        6,6,6,8,6,8,8,8,6,8,8,5,5,5,5,5,
+        5,5,5,0,0,0,9,9,9,9,9,9,9,9,9,9,
+        0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,6,6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x17,0x17,0,6,6,8,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,8,6,6,6,6,8,8,6,6,
+        8,6,6,6,5,5,9,9,9,9,9,9,9,9,9,9,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,6,8,6,6,8,8,8,6,8,6,
+        6,6,8,8,0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,8,8,8,8,8,8,8,8,6,6,6,6,
+        6,6,6,6,8,8,6,6,0,0,0,0x17,0x17,0x17,0x17,0x17,
+        9,9,9,9,9,9,9,9,9,9,0,0,0,5,5,5,
+        9,9,9,9,9,9,9,9,9,9,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,4,4,4,4,4,4,0x17,0x17,
+        2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,
+        0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,
+        6,6,6,0x17,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,8,6,6,6,6,6,6,6,5,5,5,5,6,5,5,
+        5,5,5,5,6,5,5,8,6,6,5,0,0,0,0,0,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,
+        4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+        4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+        4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,4,2,2,2,2,2,2,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,2,2,2,2,
+        2,2,2,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,2,2,2,2,2,2,2,1,1,1,
+        1,1,1,1,1,2,2,2,2,2,2,0,0,1,1,1,
+        1,1,1,0,0,2,2,2,2,2,2,2,2,1,1,1,
+        1,1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,
+        1,1,1,1,1,2,2,2,2,2,2,0,0,1,1,1,
+        1,1,1,0,0,2,2,2,2,2,2,2,2,0,1,0,
+        1,0,1,0,1,2,2,2,2,2,2,2,2,1,1,1,
+        1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,0,0,2,2,2,2,2,2,2,2,3,3,3,
+        3,3,3,3,3,2,2,2,2,2,2,2,2,3,3,3,
+        3,3,3,3,3,2,2,2,2,2,2,2,2,3,3,3,
+        3,3,3,3,3,2,2,2,2,2,0,2,2,1,1,1,
+        1,3,0x1a,2,0x1a,0x1a,2,2,2,0,2,2,1,1,1,1,
+        3,0x1a,0x1a,0x1a,2,2,2,2,0,0,2,2,1,1,1,1,
+        0,0x1a,0x1a,0x1a,2,2,2,2,2,2,2,2,1,1,1,1,
+        1,0x1a,0x1a,0x1a,0,0,2,2,2,0,2,2,1,1,1,1,
+        3,0x1a,0x1a,0,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0x10,
+        0x10,0x10,0x10,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x17,0x1c,0x1d,0x14,0x1c,
+        0x1c,0x1d,0x14,0x1c,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xd,0xe,0x10,0x10,
+        0x10,0x10,0x10,0xc,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1c,0x1d,0x17,
+        0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x18,0x14,0x15,0x17,0x17,0x17,0x17,0x17,0x17,
+        0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+        0x17,0x17,0xc,0x10,0x10,0x10,0x10,0x10,0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+        0x10,0x10,0x10,0xb,4,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0x18,0x18,0x18,
+        0x14,0x15,4,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x18,0x18,0x18,
+        0x14,0x15,0,4,4,4,4,4,4,4,4,4,4,4,4,4,
+        0,0,0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+        0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+        0x19,0x19,0x19,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,7,
+        7,7,7,6,7,7,7,6,6,6,6,6,6,6,6,6,
+        6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0x1b,0x1b,1,0x1b,0x1b,0x1b,0x1b,1,0x1b,0x1b,2,1,1,1,
+        2,2,1,1,1,2,0x1b,1,0x1b,0x1b,0x18,1,1,1,1,1,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1,0x1b,1,0x1b,1,0x1b,1,1,1,1,
+        0x1b,2,1,1,1,1,2,5,5,5,5,2,0x1b,0x1b,2,2,
+        1,1,0x18,0x18,0x18,0x18,0x18,1,2,2,2,2,0x1b,0x18,0x1b,0x1b,
+        2,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+        0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+        0xa,0xa,1,2,0xa,0xa,0xa,0xa,0xb,0x1b,0x1b,0,0,0,0,0x18,
+        0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x18,
+        0x1b,0x1b,0x18,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,
+        0x18,0x1b,0x1b,0x18,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,
+        0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0xb,
+        0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,
+        0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,
+        0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,
+        0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,
+        0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x14,0x15,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+        0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,1,2,1,1,1,2,2,1,
+        2,1,2,1,2,1,1,1,1,2,1,2,2,1,2,2,
+        2,2,2,2,4,4,1,1,2,1,2,1,2,1,2,1,
+        2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+        2,1,2,1,2,1,2,1,2,1,2,2,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,1,2,1,2,6,6,6,1,2,0,0,0,0,0,
+        0x17,0x17,0x17,0x17,0xb,0x17,0x17,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,
+        0,0,0,0,2,0,0,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
+        0,0,0,0,0,0,4,0x17,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,6,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,
+        0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,5,
+        5,5,5,5,5,5,0,5,5,5,5,5,5,5,0,5,
+        5,5,5,5,5,5,0,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,0x17,0x17,0x1c,0x1d,0x1c,0x1d,0x17,0x17,0x17,
+        0x1c,0x1d,0x17,0x1c,0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17,
+        0x17,0x13,0x17,0x1c,0x1d,0x17,0x17,0x1c,0x1d,0x14,0x15,0x14,0x15,0x14,0x15,0x14,
+        0x15,0x17,0x17,0x17,0x17,0x17,4,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+        0x17,0x13,0x13,0x17,0x17,0x17,0x17,0x13,0x17,0x14,0x17,0x17,0x17,0x17,0x17,0x17,
+        0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x17,0x17,0x17,0x14,0x15,0x14,0x15,
+        0x14,0x15,0x14,0x15,0x13,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,
+        0xc,0x17,0x17,0x17,0x1b,4,5,0xa,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,
+        0x14,0x15,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x13,0x14,0x15,0x15,
+        0x1b,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,6,6,6,6,8,8,
+        0x13,4,4,4,4,4,0x1b,0x1b,0xa,0xa,0xa,4,5,0x17,0x1b,0x1b,
+        0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        0,0,6,6,0x1a,0x1a,4,4,5,0x13,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,0x17,4,4,4,5,0,0,0,0,0,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,0,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,0,0x1b,0x1b,0xb,0xb,0xb,
+        0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,
+        0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xb,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,
+        0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,
+        0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,4,0x17,
+        0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,9,9,9,9,9,9,9,9,9,9,5,5,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        5,6,7,7,7,0x17,6,6,6,6,6,6,6,6,6,6,
+        0x17,4,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,4,4,
+        6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+        0xa,0xa,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,
+        0,0,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+        0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4,
+        4,4,0x1a,0x1a,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,2,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,4,2,2,2,2,2,2,2,2,1,2,1,
+        2,1,1,2,1,2,1,2,1,2,4,0x1a,0x1a,1,2,1,
+        2,5,1,2,1,2,2,2,1,2,1,2,1,2,1,2,
+        1,2,1,2,1,2,1,2,1,2,1,2,1,1,1,1,
+        1,2,1,1,1,1,1,2,1,2,1,2,1,2,1,2,
+        1,2,1,1,1,1,2,1,2,0,0,0,0,0,1,2,
+        0,2,0,2,1,2,1,2,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        4,4,4,1,2,5,4,4,2,5,5,5,5,5,6,5,
+        5,5,6,5,5,5,5,6,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,8,
+        8,6,6,8,0x1b,0x1b,0x1b,0x1b,6,0,0,0,0xb,0xb,0xb,0xb,
+        0xb,0xb,0x1b,0x1b,0x19,0x1b,0,0,0,0,0,0,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,8,8,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        8,8,8,8,8,8,8,8,8,8,8,8,6,6,0,0,
+        0,0,0,0,0,0,0x17,0x17,9,9,9,9,9,9,9,9,
+        9,9,0,0,0,0,0,0,6,6,6,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,
+        0x17,0x17,0x17,5,0x17,5,5,6,9,9,9,9,9,9,9,9,
+        9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,
+        6,6,6,6,6,6,0x17,0x17,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,
+        6,6,6,8,8,0,0,0,0,0,0,0,0,0,0,0,
+        0x17,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,
+        0,6,6,6,8,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,6,8,8,6,6,6,6,8,8,6,6,8,
+        8,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,4,
+        9,9,9,9,9,9,9,9,9,9,0,0,0,0,0x17,0x17,
+        5,5,5,5,5,6,4,5,5,5,5,5,5,5,5,5,
+        9,9,9,9,9,9,9,9,9,9,5,5,5,5,5,0,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,8,
+        8,6,6,8,8,6,6,0,0,0,0,0,0,0,0,0,
+        5,5,5,6,5,5,5,5,5,5,5,5,6,8,0,0,
+        9,9,9,9,9,9,9,9,9,9,0,0,0x17,0x17,0x17,0x17,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        4,5,5,5,5,5,5,0x1b,0x1b,0x1b,5,8,6,8,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,
+        6,6,6,5,5,6,6,5,5,5,5,5,6,6,5,6,
+        5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,5,5,4,0x17,0x17,5,5,
+        5,5,5,5,5,5,5,5,5,8,6,6,8,8,0x17,0x17,
+        5,4,4,8,6,0,0,0,0,0,0,0,0,0,5,5,
+        5,5,5,5,0,0,5,5,5,5,5,5,0,0,5,5,
+        5,5,5,5,0,0,0,0,0,0,0,0,0,5,5,5,
+        5,5,5,5,0,5,5,5,5,5,5,5,0,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,0x1a,4,4,4,4,2,2,2,
+        2,2,2,2,2,2,4,0x1a,0x1a,0,0,0,0,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        8,8,6,8,8,6,8,8,0x17,8,6,0,0,9,9,9,
+        9,9,9,9,9,9,9,0,0,0,0,0,0,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,
+        0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,0,0,0,0,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+        0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+        0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+        0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+        0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+        0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+        0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+        0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+        0x11,0x11,0x11,0x11,0x11,0x11,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,0,0,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,
+        0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,
+        0,0,0,5,6,5,5,5,5,5,5,5,5,5,5,0x18,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,
+        5,5,5,0,5,0,5,5,0,5,5,0,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+        0x1a,0x1a,0x1a,0x1a,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,0x15,0x14,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,0,0,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,0,0,0,0,0,0,0,0x1b,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,
+        5,5,5,5,5,5,5,5,0x19,0x1b,0x1b,0x1b,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,0x17,0x17,0x17,0x17,
+        0x17,0x17,0x17,0x14,0x15,0x17,0,0,0,0,0,0,6,6,6,6,
+        6,6,6,6,6,6,6,6,6,6,6,6,0x17,0x13,0x13,0x16,
+        0x16,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x14,
+        0x15,0x17,0x17,0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0,0x17,0x17,0x17,0x17,
+        0x13,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x17,0x18,0x13,0x18,0x18,0x18,0,
+        0x17,0x19,0x17,0x17,0,0,0,0,5,5,5,5,5,0,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,0,0,0x10,0,0x17,
+        0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17,9,9,
+        9,9,9,9,9,9,9,9,0x17,0x17,0x18,0x18,0x18,0x17,0x17,1,
+        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+        1,1,1,1,1,1,1,1,1,0x14,0x17,0x15,0x1a,0x16,0x1a,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,0x14,0x18,0x15,0x18,0x14,0x15,0x17,
+        0x14,0x15,0x17,0x17,5,5,5,5,5,5,5,5,5,5,4,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,
+        5,5,5,5,5,5,0,0,5,5,5,5,5,5,0,0,
+        5,5,5,5,5,5,0,0,5,5,5,0,0,0,0x19,0x19,
+        0x18,0x1a,0x1b,0x19,0x19,0,0x1b,0x18,0x18,0x18,0x18,0x1b,0x1b,0,0,0,
+        0,0,0,0,0,0,0,0x10,0x10,0x10,0x1b,0x1b,0,0,5,5,
+        5,5,5,5,5,5,5,5,5,0,5,5,0,5,0x17,0x17,
+        0x17,0,0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0,0,
+        0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xa,0xa,0xa,0xa,0xa,0xb,
+        0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0x1b,
+        0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        6,0,0,6,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0xb,0,0,0,0,0,0,0,0,0,5,5,5,0xa,
+        5,5,5,5,5,5,5,5,0xa,0,0,0,0,0,5,5,
+        5,5,5,5,6,6,6,6,6,0,0,0,0,0,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,5,0,0x17,0xa,0xa,
+        0xa,0xa,0xa,0,0,0,0,0,0,0,0,0,0,1,1,1,
+        1,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,
+        2,0,0,0,0,5,5,5,5,0,0,0,0,0,0,0,
+        0,0,0,0,0x17,1,1,1,0,1,1,0,2,2,2,2,
+        2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,
+        2,2,2,0,2,2,2,2,2,2,2,0,2,2,0,0,
+        0,4,4,4,4,4,4,0,4,4,4,4,4,4,4,4,
+        4,0,0,0,0,0,5,5,5,5,5,5,0,0,5,0,
+        5,5,5,5,5,5,0,5,5,0,0,0,5,0,0,5,
+        5,5,5,5,5,0,0x17,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,
+        5,5,5,5,5,5,0x1b,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,
+        5,5,0,5,5,0,0,0,0,0,0xb,0xb,0xb,0xb,0xb,5,
+        5,5,5,5,5,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0x17,5,
+        5,5,5,5,5,5,5,5,5,0,0,0,0,0,0x17,5,
+        5,5,5,5,5,5,5,0,0,0,0,0xb,0xb,5,5,6,
+        6,6,0,6,6,0,0,0,0,0,6,6,6,6,5,5,
+        5,5,5,5,0,0,6,6,6,0,0,0,0,6,0x17,0x17,
+        0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,0xb,0xb,0x17,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,0xb,0xb,0xb,5,5,
+        5,5,5,5,5,5,0x1b,5,5,5,5,5,5,5,6,6,
+        0,0,0,0,0xb,0xb,0xb,0xb,0xb,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+        0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,
+        0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,5,5,0,
+        0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,0,0,0,0,
+        0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,0,0,0,0,0,
+        0,0,0x17,0x17,0x17,0x17,0,0,0,1,1,1,0,0,0,0,
+        0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,
+        0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,5,6,6,6,
+        6,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,
+        5,5,5,0,6,6,0x13,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        5,0,0,0,0,0,0,0,0,6,0xb,0xb,0xb,0xb,0x17,0x17,
+        0x17,0x17,0x17,0,0,0,0,0,0,5,5,6,6,6,6,0x17,
+        0x17,0x17,0x17,0,0,0,0,0,0,5,5,5,5,5,0xb,0xb,
+        0xb,0xb,0xb,0xb,0xb,0,0,0,0,6,6,6,6,6,6,6,
+        0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0xb,0xb,0xb,0xb,0xb,0xb,9,
+        9,9,9,9,9,9,9,9,9,6,5,5,6,6,5,0,
+        0,0,0,0,0,0,0,0,6,8,8,8,6,6,6,6,
+        8,8,6,6,0x17,0x17,0x10,0x17,0x17,6,0,0,0,0,0,0,
+        0,0,0,0,0x10,0,0,5,5,5,5,5,5,5,6,6,
+        6,6,6,8,6,6,6,6,6,0,9,9,9,9,9,9,
+        9,9,9,9,0x17,0x17,0x17,0x17,5,8,8,5,0,0,0,0,
+        0,0,0,0,5,5,5,6,0x17,0x17,5,0,0,0,0,0,
+        0,0,0,0,5,5,5,8,8,8,6,6,6,6,6,6,
+        6,6,6,8,5,5,5,5,0x17,0x17,0x17,0x17,6,6,6,6,
+        0x17,8,6,9,9,9,9,9,9,9,9,9,9,5,0x17,5,
+        0x17,0x17,0x17,0xb,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0,0,
+        0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,8,
+        8,8,6,6,8,8,6,8,6,6,0x17,0x17,0x17,0x17,0x17,0x17,
+        6,0,5,5,5,5,5,5,5,0,5,0,5,5,5,5,
+        0,5,5,5,5,5,5,5,5,5,0x17,0,0,0,0,0,
+        0,8,8,8,6,6,6,6,6,6,6,6,0,0,0,0,
+        0,6,6,8,8,0,5,5,5,5,5,5,5,5,0,0,
+        5,0,5,5,0,5,5,5,5,5,0,6,6,5,8,8,
+        6,8,8,8,8,0,0,8,8,0,0,8,8,8,0,0,
+        5,0,0,0,0,0,0,8,0,0,0,0,0,5,5,5,
+        8,8,0,0,6,6,6,6,6,6,6,0,0,0,5,5,
+        5,5,5,8,8,8,6,6,6,6,6,6,6,6,8,8,
+        6,6,6,8,6,5,5,5,5,0x17,0x17,0x17,0x17,0x17,9,9,
+        9,9,9,9,9,9,9,9,0x17,0x17,0,0x17,6,5,8,8,
+        8,6,6,6,6,6,6,8,6,8,8,8,8,6,8,6,
+        6,5,5,0x17,5,0,0,0,0,0,0,0,0,8,8,6,
+        6,6,6,0,0,8,8,8,8,6,6,8,6,0x17,0x17,0x17,
+        0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,
+        6,6,0,0,8,8,8,6,6,6,6,6,6,6,6,8,
+        8,6,8,6,0x17,0x17,0x17,5,0,0,0,0,0,0,0,0,
+        0,0,0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+        0,0,0,5,5,5,5,5,5,5,5,5,5,5,6,8,
+        6,8,8,6,6,6,6,6,6,8,6,5,0x17,0,0,0,
+        0,0,0,8,8,6,6,6,6,8,6,6,6,6,6,0,
+        0,0,0,9,9,9,9,9,9,9,9,9,9,0xb,0xb,0x17,
+        0x17,0x17,0x1b,6,6,6,6,6,6,6,6,8,6,6,0x17,0,
+        0,0,0,0xb,0xb,0xb,0,0,0,0,0,0,0,0,0,0,
+        0,0,5,5,5,5,5,5,5,0,0,5,0,0,5,5,
+        5,5,0,5,5,0,5,5,5,5,5,5,5,5,8,8,
+        8,8,8,8,0,8,8,0,0,6,6,8,6,5,8,5,
+        8,6,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,5,8,
+        8,8,6,6,6,6,0,0,6,6,8,8,8,8,6,5,
+        0x17,5,8,0,0,0,0,0,0,0,0,0,0,0,5,6,
+        6,6,6,6,6,6,6,6,6,5,5,5,5,5,6,6,
+        6,6,6,6,8,5,6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,
+        0x17,6,0,0,0,0,0,0,0,0,5,6,6,6,6,6,
+        6,8,8,6,6,6,5,5,5,5,6,6,6,6,6,6,
+        6,8,6,6,0x17,0x17,0x17,5,0x17,0x17,0x17,0,0,0,0,0,
+        0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,0,
+        6,6,6,6,6,6,8,6,5,0x17,0x17,0x17,0x17,0x17,0,0,
+        0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,
+        0,8,6,6,6,6,6,6,8,6,6,8,6,6,0,0,
+        0,0,0,0,0,0,0,5,6,6,6,6,6,6,0,0,
+        0,6,0,6,6,0,6,6,6,6,6,6,5,6,0,0,
+        0,0,0,0,0,0,5,5,5,5,5,5,0,5,5,0,
+        5,5,5,5,5,5,5,5,5,5,8,8,8,8,8,0,
+        6,6,0,8,8,6,8,6,5,0,0,0,0,0,0,0,
+        5,5,5,6,6,8,8,0x17,0x17,0,0,0,0,0,0,0,
+        0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x19,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,
+        0,0,0,0,0,0,0,0,0,0,0,0,0x17,0xa,0xa,0xa,
+        0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0,0x17,0x17,0x17,
+        0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,5,0x17,0x17,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0x10,0x10,0x10,
+        0x10,0x10,0x10,0x10,0x10,0x10,0,0,0,0,0,0,0,6,6,6,
+        6,6,0x17,0,0,0,0,0,0,0,0,0,0,6,6,6,
+        6,6,6,6,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,0x1b,0x1b,4,4,4,
+        4,0x17,0x1b,0,0,0,0,0,0,0,0,0,0,9,9,9,
+        9,9,9,9,9,9,9,0,0xb,0xb,0xb,0xb,0xb,0,5,5,
+        5,5,5,5,5,5,5,5,5,5,5,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,0x17,0x17,0x17,0x17,0,0,0,0,0,5,8,8,8,8,
+        8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,
+        0,0,0,6,6,6,4,4,4,4,4,4,4,4,4,4,
+        4,4,4,0x17,4,6,0,0,0,0,0,0,0,0,0,0,
+        0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,4,4,4,4,0,4,4,4,4,4,4,4,0,4,4,
+        0,5,5,5,5,5,5,5,5,5,5,0,0,0x1b,6,6,
+        0x17,0x10,0x10,0x10,0x10,0,0,0,0,0,0,0,0,0,0,0,
+        0,0x1b,0x1b,0x1b,0x1b,0x1b,8,8,6,6,6,0x1b,0x1b,0x1b,8,8,
+        8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,6,6,6,6,0x1b,0x1b,
+        6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+        0x1b,6,6,6,6,0x1b,0x1b,6,6,6,0x1b,0,0,0,0,0,
+        0,0,0,0,0,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0,
+        0,0,0,0,0,2,2,2,2,1,1,1,1,1,1,1,
+        1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,
+        2,1,0,1,1,0,0,1,0,0,1,1,0,0,1,1,
+        1,1,0,1,1,1,1,1,1,2,2,2,2,0,2,0,
+        2,2,2,2,1,1,0,1,1,1,1,0,0,1,1,1,
+        1,1,0,1,1,1,1,1,1,1,0,2,2,2,2,2,
+        2,2,2,1,1,0,1,1,1,1,0,1,1,1,1,1,
+        0,1,0,0,0,1,1,1,1,1,1,0,2,2,2,2,
+        2,2,2,2,2,2,2,2,2,2,1,1,1,1,2,2,
+        2,2,2,2,0,0,1,1,1,1,1,1,1,1,0x18,2,
+        2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,
+        1,1,1,1,1,1,1,1,0x18,2,2,2,2,2,0x18,2,
+        2,2,2,2,2,1,1,1,1,1,1,1,1,1,0x18,2,
+        2,2,2,2,2,0x18,2,2,2,2,2,2,1,2,0,0,
+        9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+        6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,6,6,6,6,6,
+        6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,
+        0,0,0,0,6,6,6,6,6,6,6,6,6,0,0,6,
+        6,6,6,6,0,6,6,0,6,6,6,6,6,0,0,0,
+        0,0,6,6,6,6,6,6,6,4,4,4,4,4,4,4,
+        0,0,9,9,9,9,9,9,9,9,9,9,0,0,0,0,
+        5,0x1b,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+        6,0,9,9,9,9,9,9,9,9,9,9,0,0,0,0,
+        0,0x19,5,5,5,5,5,5,5,0,5,5,5,5,0,5,
+        5,0,5,5,5,5,5,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        0xb,0xb,2,2,2,2,6,6,6,6,6,6,6,4,0,0,
+        0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,0xb,
+        0xb,0xb,0x19,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0,0,0,
+        0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+        0x1b,0xb,0,5,5,0,5,0,0,5,0,5,5,5,5,5,
+        5,5,0,5,5,5,5,0,5,0,5,0,0,0,0,5,
+        0,0,0,0,5,0,5,0,5,0,5,5,5,0,5,5,
+        0,5,0,0,5,0,5,0,5,0,5,0,5,5,0,5,
+        0,0,5,5,5,5,0,5,5,5,5,0,5,5,5,5,
+        0,5,0,5,5,5,0,5,5,5,5,5,0,5,5,5,
+        5,5,0x18,0x18,0,0,0,0,0,0,0,0,0,0,0,0,
+        0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,
+        0x1a,0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0x1b,
+        0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x10,
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x10,0x10,
+        0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,
+        0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0,0
+    ]
+);
+
+pub static HEADER: CodePointTrieHeader = CodePointTrieHeader {
+    high_start: 0x110000,
+    shifted12_high_start: 0x110,
+    trie_type: TrieType::Fast,
+    index3_null_offset: 0x66a,
+    data_null_offset: 0xd18,
+    null_value: 0x0,
+};
diff --git a/vendor/icu_collections/benches/tries/gc_small.rs b/vendor/icu_collections/benches/tries/gc_small.rs
new file mode 100644
index 00000000..da297a2d
--- /dev/null
+++ b/vendor/icu_collections/benches/tries/gc_small.rs
@@ -0,0 +1,865 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use icu_collections::codepointtrie::{CodePointTrieHeader, TrieType};
+use zerovec::ule::AsULE;
+use zerovec::{zerovec, ZeroVec};
+
+#[rustfmt::skip]
+pub const INDEX: ZeroVec<u16> = zerovec!(u16; <u16 as AsULE>::ULE::from_unsigned;
+  [
+    0,0x40,0x7f,0xbf,0xff,0x12e,0x16d,0x1ad,0x1e5,0x224,0x250,0x28e,0x2ce,0x2de,0x31e,0x34f,
+    0x38c,0x3bc,0x3fa,0x43a,0x44a,0x47b,0x4b2,0x4f2,0x532,0x572,0x5a3,0x5cf,0x60f,0x644,0x65e,0x69e,
+    0x6de,0x71e,0x756,0x78d,0x7ca,0x809,0x848,0x887,0x8c6,0x905,0x944,0x983,0x9c3,0xa01,0xa3f,0xa7f,
+    0xabf,0xafe,0xb3e,0xb7e,0xbbe,0xbfd,0xc3d,0xc7d,0xcbc,0xcfc,0xd3b,0xd7b,0xdbb,0xdfb,0xe3b,0xe79,
+    0xbbd,0xbd7,0xbe7,0xbfd,0xc1d,0xc3b,0xc58,0xc77,0xc97,0xc97,0xca4,0xcc1,0xce1,0xceb,0xceb,0xceb,
+    0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,
+    0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,
+    0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xceb,0xd0b,0xceb,0xceb,0xceb,0xd2b,0xd2b,0xd2b,0xd2c,
+    0xd2b,0xd2b,0xd2b,0xd2c,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x7f,0x8f,0x9f,0xaf,
+    0xbf,0xcf,0xdf,0xef,0xff,0x10f,0x11f,0x12f,0x12e,0x13e,0x14e,0x15e,0x16d,0x17d,0x18d,0x19d,
+    0x1ad,0x1bd,0x1cd,0x1dd,0x1e5,0x1f5,0x205,0x215,0x224,0x234,0x244,0x254,0x250,0x260,0x270,0x280,
+    0x28e,0x29e,0x2ae,0x2be,0x2ce,0x2de,0x2ee,0x2fe,0x2de,0x2ee,0x2fe,0x30e,0x31e,0x32e,0x33e,0x34e,
+    0x34f,0x35f,0x36f,0x37f,0x38c,0x39c,0x3ac,0x3bc,0x3bc,0x3cc,0x3dc,0x3ec,0x3fa,0x40a,0x41a,0x42a,
+    0x43a,0x44a,0x45a,0x46a,0x44a,0x45a,0x46a,0x47a,0x47b,0x48b,0x49b,0x4ab,0x4b2,0x4c2,0x4d2,0x4e2,
+    0x4f2,0x502,0x512,0x522,0x532,0x542,0x552,0x562,0x572,0x582,0x592,0x5a2,0x5a3,0x5b3,0x5c3,0x5d3,
+    0x5cf,0x5df,0x5ef,0x5ff,0x60f,0x61f,0x62f,0x63f,0x644,0x654,0x664,0x674,0x65e,0x66e,0x67e,0x68e,
+    0x69e,0x6ae,0x6be,0x6ce,0x6de,0x6ee,0x6fe,0x70e,0x71e,0x72e,0x73e,0x74e,0x756,0x766,0x776,0x786,
+    0x78d,0x79d,0x7ad,0x7bd,0x7ca,0x7da,0x7ea,0x7fa,0x809,0x819,0x829,0x839,0x848,0x858,0x868,0x878,
+    0x887,0x897,0x8a7,0x8b7,0x8c6,0x8d6,0x8e6,0x8f6,0x905,0x915,0x925,0x935,0x944,0x954,0x964,0x974,
+    0x983,0x993,0x9a3,0x9b3,0x9c3,0x9d3,0x9e3,0x9f3,0xa01,0xa11,0xa21,0xa31,0xa3f,0xa4f,0xa5f,0xa6f,
+    0xa7f,0xa8f,0xa9f,0xaaf,0xabf,0xacf,0xadf,0xaef,0xafe,0xb0e,0xb1e,0xb2e,0xb3e,0xb4e,0xb5e,0xb6e,
+    0xb7e,0xb8e,0xb9e,0xbae,0xbbe,0xbce,0xbde,0xbee,0xbfd,0xc0d,0xc1d,0xc2d,0xc3d,0xc4d,0xc5d,0xc6d,
+    0xc7d,0xc8d,0xc9d,0xcad,0xcbc,0xccc,0xcdc,0xcec,0xcfc,0xd0c,0xd1c,0xd2c,0xd3b,0xd4b,0xd5b,0xd6b,
+    0xd7b,0xd8b,0xd9b,0xdab,0xdbb,0xdcb,0xddb,0xdeb,0xdfb,0xe0b,0xe1b,0xe2b,0xe3b,0xe4b,0xe5b,0xe6b,
+    0xe79,0xe89,0xe99,0xea9,0x5a3,0x5a3,0xeb9,0xec8,0xed8,0xee8,0xef7,0xf06,0xf14,0xf24,0x41,0x41,
+    0xf34,0x61,0x61,0xf44,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0xf54,0xf64,0x5a3,0x5a3,0xf54,0x5a3,0x5a3,0xf5c,0xf6c,0xae1,0x5a3,0x5a3,
+    0x5a3,0xf6c,0x5a3,0x5a3,0x5a3,0xf74,0xf84,0xf8d,0x5a3,0xf9d,0x41,0x41,0x41,0x41,0x41,0xfad,
+    0xfbd,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0xfc0,0x5a3,0xfd0,0xfd5,0x5a3,0x5a3,0x5a3,0x5a3,0xfe5,0xff4,0x5a3,0x1004,0x5a3,0x1013,0x5a3,0x1023,
+    0x864,0x1033,0x5a3,0x5a3,0x5a3,0x1043,0x1051,0x105d,0xb24,0x106d,0x107d,0xb24,0x5a3,0x5a3,0x108d,0x5a3,
+    0x5a3,0x1094,0x10a4,0x5a3,0x10ab,0x5a3,0x5a3,0x5a3,0x5a3,0x10bb,0x5a3,0x50e,0x10cb,0x10db,0x10eb,0x5a3,
+    0x50f,0x10fb,0x5a3,0x5a3,0x511,0x5a3,0x1093,0x110b,0x1119,0x1119,0x5a3,0x1129,0x5a3,0x5a3,0x5a3,0x1139,
+    0x1149,0x1156,0xb24,0xb24,0x1166,0x1176,0x640,0xd18,0xd18,0xd18,0x7c9,0x5a3,0x5a3,0x1186,0x1194,0xed8,
+    0x11a4,0x11b0,0x7cb,0x5a3,0x11c0,0x69e,0x5a3,0x5a3,0x11ce,0x11dd,0x5a3,0x5a3,0x11ed,0x11f9,0x1209,0x69e,
+    0x5a3,0x1216,0x1226,0x41,0x41,0x1236,0x1246,0x1256,0x1265,0x126e,0x61,0x61,0x274,0x280,0x280,0x280,
+    0x127e,0x1289,0x61,0x275,0x280,0x280,0x2ce,0x2ce,0x2ce,0x2ce,0xff,0xff,0xff,0xff,0xff,0xff,
+    0xff,0xff,0xff,0x1299,0xff,0xff,0xff,0xff,0xff,0xff,0x12a8,0x12b8,0x12a8,0x12a8,0x12b8,0x12c8,
+    0x12a8,0x12d8,0x12e8,0x12e8,0x12e8,0x12f8,0x1307,0x1317,0x1327,0x1337,0x1347,0x1357,0x1367,0x1377,0x1386,0x1394,
+    0x13a4,0x13b4,0x13c4,0x13d4,0x13e4,0x13e4,0x13f3,0x1403,0x1412,0x1421,0x1431,0x1441,0x144f,0x145f,0x146f,0x147f,
+    0x148f,0x148f,0x149c,0x14ac,0x14bc,0x1119,0x14cb,0x14db,0x1119,0x14e7,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,
+    0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14fb,0x1119,0x150b,0x1119,0x1119,0x1119,
+    0x1119,0x1516,0x1119,0x14e0,0x14eb,0x1526,0x1119,0x152a,0x1538,0x1119,0x1119,0x1541,0xd18,0x153d,0xd18,0x147f,
+    0x147f,0x147f,0x1551,0x1119,0x1119,0x1119,0x1119,0x155d,0x147f,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
+    0x1119,0x1119,0x1119,0x1119,0x14c3,0x14c9,0x1119,0x1119,0x14e3,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x156d,
+    0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x157d,
+    0x1587,0x147f,0x1569,0x1119,0x1119,0x1597,0x14eb,0x15a1,0x14eb,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
+    0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,
+    0x14eb,0x15a4,0x15ac,0x14eb,0x14eb,0x14eb,0x15b5,0x14eb,0x15c1,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,
+    0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x14eb,0x1119,0x1119,0x1119,0x14eb,0x15cf,0x1119,0x1119,
+    0x15dc,0x1119,0x15e6,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x41,0x41,0x41,0x61,0x61,0x61,0x15f6,
+    0x1605,0xff,0xff,0xff,0xff,0xff,0xff,0x1614,0x1623,0x61,0x61,0x1633,0x5a3,0x5a3,0x5a3,0x1643,
+    0x1653,0x5a3,0x1663,0x86a,0x86a,0x86a,0x86a,0x2ce,0x2ce,0x1673,0x1681,0x1691,0x16a1,0x16b1,0x16c1,0xd18,
+    0xd18,0x1119,0x15e2,0x1119,0x1119,0x1119,0x1119,0x1119,0x16d1,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
+    0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x16e1,0xd18,0x153c,0x16f1,0x16ff,0x170f,0x171f,0x501,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x172f,0xfbd,0x5a3,0x5a3,0x5a3,0x5a3,0x173e,0x4fd,0x5a3,0x5a3,0x501,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x50e,0x174e,0x5a3,0x5a3,0x1119,0x1119,0x16d1,0x5a3,0x1119,0x1754,0x1553,0x1119,0x1764,0x147e,0x1119,
+    0x1119,0x1553,0x1119,0x1119,0x147e,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
+    0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1119,0x1119,0x1119,0x1119,0x5a3,0x56d,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x510,0x1119,0x1119,
+    0x1119,0x1541,0x5a3,0x5a3,0x1216,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1774,0x5a3,0x1784,0xd18,0xff,0xff,0x1794,0x17a4,0xff,0x17b4,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x17c4,0x17d4,0x2bd,0x17e4,0x17f4,0xfd,0xff,0xff,0xff,0x1804,0x1812,0x1822,0x1828,
+    0x1832,0x183e,0x184e,0xd18,0x185c,0x186a,0x5a3,0x1877,0x1887,0x5a3,0x5a3,0x5a3,0x1897,0x18a7,0x5a3,0x5a3,
+    0x18b3,0x18bf,0xb24,0x2ce,0x18cf,0x69e,0x5a3,0x18df,0x5a3,0x576,0x18ef,0x5a3,0x510,0x7ca,0x5a3,0x5a3,
+    0x18ff,0x190e,0x191e,0x192e,0x10f1,0x5a3,0x5a3,0x1935,0x1944,0x1954,0x1964,0x5a3,0x1974,0x5a3,0x5a3,0x5a3,
+    0x1984,0x1994,0x1999,0x19a9,0x19b9,0x19c8,0x10ba,0x86a,0x61,0x61,0x19d8,0x19e8,0x61,0x61,0x61,0x61,
+    0x61,0x5a3,0x5a3,0x19f8,0xb24,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd97,
+    0x5a3,0x1a08,0x5a3,0x5a3,0x511,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,
+    0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,
+    0x1a18,0x1a18,0x1a18,0x1a18,0x1a18,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
+    0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
+    0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x50f,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1093,0xd18,0xd18,0x1a38,
+    0x1a45,0x1a54,0x1a5e,0x1a6e,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1a7c,0x1a89,0x4ff,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x1a99,0x1119,0x5a3,0x5a3,0x5a3,0x5a3,0x500,0x5a3,0x5a3,0x1aa9,0xd18,0xd18,0x1ab9,0x2ce,0x1ac9,0x2ce,
+    0x1ad9,0x1ae5,0x1af5,0x1b04,0xae3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1b14,0x1b24,0x30,0x40,
+    0x50,0x60,0x1b34,0x1b44,0x1b54,0x5a3,0x1b56,0x5a3,0x50e,0x19c7,0x1b66,0x1b76,0x1b85,0x865,0x5a3,0xae1,
+    0x1b95,0x50f,0x50f,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x73e,0x1ba5,0x147f,0x147f,
+    0xf96,0x148f,0x148f,0x148f,0x1bb5,0x1bbe,0x153b,0x1bcc,0xd18,0xd18,0x1119,0x1119,0x1bdc,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x510,0x5a3,0x5a3,0x5a3,0x993,0x1bec,0x1bf0,0x5a3,0x5a3,0x1bf8,
+    0x5a3,0x1c07,0x5a3,0x5a3,0x1c17,0x5a3,0x1c27,0x5a3,0x5a3,0x1c37,0x1c47,0xd18,0xd18,0x41,0x41,0x342,
+    0x61,0x61,0x5a3,0x5a3,0x5a3,0x5a3,0x50f,0xb24,0x41,0x41,0x1c57,0x61,0x1c5f,0x5a3,0x5a3,0x1c6f,
+    0x5a3,0x5a3,0x5a3,0x1c73,0x335,0x335,0x1c83,0x1c91,0x1c9f,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x1663,0x5a3,0x10bb,0x1c6f,0xd18,0x1caf,0x280,0x280,0x1cb4,0xd18,0xd18,0xd18,0xd18,0x1cc4,0x5a3,0x5a3,
+    0x1cce,0x5a3,0x1cdd,0x5a3,0x1ced,0x5a3,0x50e,0x154a,0xd18,0xd18,0xd18,0x5a3,0x1cfd,0x5a3,0x1d0d,0x5a3,
+    0x1d1d,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x1d2d,0x147f,0x1d3d,0x147f,0x147f,0x1d4d,0x94e,0x5a3,
+    0x1d5d,0x1bf3,0x1d6d,0x5a3,0x1d7d,0x5a3,0x1d8d,0xd18,0xd18,0x1d9d,0x5a3,0x1da8,0x1db8,0x5a3,0x5a3,0x5a3,
+    0x1dc8,0x5a3,0x1dd8,0x5a3,0x1de8,0x5a3,0x1df8,0x1548,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x1094,0xd18,0xd18,0xd18,0x41,0x41,0x41,0x1e08,0x61,0x61,0x61,0x1e18,0x5a3,0x5a3,0x1e28,
+    0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x147f,0x1bed,0x5a3,
+    0x5a3,0x1e38,0xd99,0xd18,0xd18,0xd18,0xd18,0x5a3,0x1d8d,0x1e48,0x5a3,0x577,0x1e58,0xd18,0x5a3,0x1e68,
+    0xd18,0xd18,0x5a3,0x1e78,0xd18,0x5a3,0x1663,0x1e88,0x5a3,0x5a3,0x575,0x1e98,0x1d3d,0x1ea8,0x1eb8,0x7cb,
+    0x5a3,0x5a3,0x1ec8,0x1ed6,0x5a3,0x1094,0xb24,0x773,0x5a3,0x1ee6,0x1ef3,0x1f03,0x5a3,0x5a3,0x1f13,0x7cb,
+    0x5a3,0x5a3,0x1f23,0x1f32,0x1f42,0x1f52,0x1f5d,0x5a3,0x954,0x1f6d,0x1f7c,0xd18,0xd18,0xd18,0xd18,0x1f8c,
+    0x863,0x1f9b,0x5a3,0x5a3,0x630,0x1fab,0xb24,0x1fbb,0x858,0x868,0x1fca,0x1fda,0x1fea,0x1ff8,0x141d,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x2008,0x2018,0x2028,0xd99,0xd18,0x5a3,
+    0x5a3,0x5a3,0x2038,0x2047,0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,
+    0x5a3,0x2057,0x2066,0x2075,0x207d,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x208d,0x209c,0xb24,0x20ac,0xd18,0x5a3,
+    0x5a3,0x20bc,0x20cc,0xb24,0xd18,0xd18,0xd18,0x5a3,0xf74,0x20dc,0x20ec,0x1663,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x1f6d,0x20fc,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0x41,0x41,0x61,0x61,0xc23,0x210c,0x211b,0x2127,0x5a3,0x2137,0x2147,0xb24,0xd18,0xd18,0xd18,
+    0xd18,0x2157,0x5a3,0x5a3,0x2166,0x2176,0xd18,0x2186,0x5a3,0x5a3,0x2193,0x21a2,0x21b2,0x5a3,0x5a3,0x573,
+    0x21c2,0x21d0,0x5a3,0x5a3,0x5a3,0x5a3,0x1094,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x868,0x5a3,0x2057,0x21e0,0x21f0,0xc23,0xf8d,0x550,0x5a3,
+    0xe2a,0x2200,0x220f,0xd18,0xd18,0xd18,0xd18,0x96e,0x5a3,0x5a3,0x221f,0x222e,0xb24,0x223e,0x5a3,0x2248,
+    0x2258,0xb24,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0x5a3,0x2268,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x993,0x147f,0x2278,
+    0x2287,0x2295,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1093,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0x148f,0x148f,0x148f,0x148f,0x148f,0x148f,0x22a5,0x22b5,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd97,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x22c5,0x5a3,0x5a3,
+    0x50e,0x22d5,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x1663,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,
+    0x5a3,0x1094,0x5a3,0x50e,0x191e,0x5a3,0x5a3,0x5a3,0x5a3,0x50e,0xb24,0x5a3,0x50f,0x22e5,0x5a3,0x5a3,
+    0x5a3,0x22f5,0x2305,0x2315,0x2323,0x741,0x5a3,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x41,0x41,
+    0x61,0x61,0x147f,0x2333,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0xe1d,0x2343,
+    0x2344,0x2344,0x234c,0x235b,0xd18,0xd18,0xd18,0xd18,0x2369,0x2379,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x1c6f,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x10bb,0xd18,0xd18,0x1094,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x2389,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd98,0xd18,0xd18,
+    0xd98,0x2398,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x511,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x73e,0x510,0x1094,0x23a8,0x23b8,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0x2ce,0x2ce,0x641,0x2ce,0x141b,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x16d1,0xd18,
+    0xd18,0xd18,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
+    0x1119,0x16e1,0x1119,0x1119,0x23c8,0x1119,0x1119,0x1119,0x23d3,0x23e0,0x23ed,0x1119,0x23f9,0x1119,0x1119,0x1119,
+    0x153d,0xd18,0x1119,0x1119,0x1119,0x1119,0x2407,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0x147f,0x2417,0x1119,0x1119,0x1119,0x1119,0x1119,0x1541,0x147f,0x1bf3,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0x41,0x3b2,0x61,0x2427,0x3ae,0x1c8e,0x12a8,0x41,0xdc,0x2437,0x2447,0x2455,0x1c8f,0x41,
+    0x3b2,0x61,0x2462,0x246f,0x61,0x247d,0x248d,0x249c,0x24a0,0x41,0xd8,0x61,0x41,0x3b2,0x61,0x2427,
+    0x3ae,0x61,0x12a8,0x41,0xdc,0x24a0,0x41,0xd8,0x61,0x41,0x3b2,0x61,0x24b0,0x41,0x24bf,0xeb,
+    0x38a,0x24cf,0x61,0x24db,0x41,0x24bb,0xe7,0x24c9,0xc7,0x61,0xed,0x41,0x24e7,0x61,0x24f4,0x2502,
+    0x2502,0x2502,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
+    0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
+    0x1119,0x1119,0x2ce,0x2ce,0x2ce,0x2512,0x2ce,0x2ce,0x251d,0x252a,0x2536,0x13f8,0x4c2,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0x25a,0x2546,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xe4c,0x2556,0x2564,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0x5a3,0x5a3,0x510,0x2574,0x2584,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0x5a3,0x2594,0xd18,0x5a3,0x5a3,0x633,0x25a4,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x25b4,0x50e,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x25c4,0x141b,0xd18,0xd18,0x41,0x41,0xdc,0x61,0x25d4,0x191e,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x1f52,0x147f,0x147f,0x25e4,0x25f4,0xd18,0xd18,
+    0xd18,0xd18,0x1f52,0x147f,0x2604,0x1bee,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xae4,0x5a3,0x2614,0x2621,0x262f,0x263f,0x264d,0x2655,0x867,0x511,0x2664,0x511,0xd18,0xd18,
+    0xd18,0x2674,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0x1119,0x1119,0x153c,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x16d1,0x1754,0x1118,0x1118,0x1118,
+    0x1119,0x16e1,0x2684,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x153a,0xd18,0xd18,0xd18,
+    0x1bd6,0x1119,0x1bca,0x1119,0x1119,0x153c,0x153f,0x1bcb,0x16e1,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
+    0x1119,0x2691,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x26a1,
+    0x153b,0x153b,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x16d1,0x1119,0x1119,0x1119,0x1119,0x1119,0x153f,
+    0x153c,0x1bcc,0x153c,0x1119,0x1119,0x1119,0x1540,0xf9d,0x1119,0x1119,0x1540,0x1119,0x153a,0x1bcb,0xd18,0xd18,
+    0xd18,0xd18,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,
+    0x1119,0x1119,0x16d1,0x153a,0x26ae,0x1541,0x1119,0x153b,0x153d,0x16e1,0xf9d,0x1540,0x1541,0x1119,0x1119,0x1119,
+    0x1119,0x1119,0x1119,0x1119,0x1119,0x1119,0x26be,0x1119,0x1119,0x153d,0xd18,0xd18,0xb24,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd18,0xd18,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x1094,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x50f,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0xd99,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x993,0xd18,0x5a3,0x50f,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,
+    0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,0x5a3,
+    0x5a3,0x73e,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x26ce,0xd18,0x26de,
+    0x26de,0x26de,0x26de,0x26de,0x26de,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0xd18,0x2ce,0x2ce,0x2ce,
+    0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0x2ce,0xd18,0x1a28,0x1a28,0x1a28,
+    0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,
+    0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x1a28,0x26ee,0x84,0xa4,0xc4,
+    0xe4,0x104,0x124,0x144,0x164,0x184,0x1a0,0x1c0,0x1da,0x1fa,0x21a,0x23a,0x25a,0x27a,0x29a,0x2b9,
+    0x2d9,0x2f9,0x319,0x339,0x359,0x379,0x399,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3bd,0x3b9,0x3b9,
+    0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,
+    0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3dd,0x3b9,0x3f5,0x415,0x435,0x455,0x3b9,0x3b9,0x3b9,
+    0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x475,0x495,0x495,0x495,0x495,0x4b5,0x4b5,0x4b5,
+    0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4c5,0x4df,0x4fd,0x51d,0x53d,0x55d,0x57d,
+    0x59d,0x5bd,0x5dd,0x5fd,0x617,0x637,0x657,0x677,0x697,0x6b7,0x6d7,0x6f7,0x712,0x3b9,0x732,0x752,
+    0x767,0x767,0x767,0x767,0x76e,0x3b9,0x3b9,0x78e,0x767,0x767,0x767,0x767,0x767,0x3b9,0x7ae,0x767,
+    0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x3b9,
+    0x7ce,0x767,0x7ea,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x80a,0x3b9,0x3b9,0x82a,0x767,
+    0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x83b,
+    0x85b,0x872,0x767,0x767,0x767,0x767,0x892,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x8a2,0x8c2,
+    0x8e2,0x902,0x922,0x942,0x962,0x767,0x972,0x992,0x9a9,0x767,0x9b9,0x9d9,0x767,0x9f2,0xa12,0xa32,
+    0xa52,0x942,0xa72,0xa92,0xaad,0x767,0x767,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,
+    0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,
+    0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0xacd,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0xadd,
+    0xafc,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0xb12,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,
+    0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0xb1d,0x767,0x767,0x767,0x767,0x767,0x767,0x3b9,0xb3d,0x767,
+    0x767,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0x3b9,0xb5d,0x767,0x767,0x767,0x767,0x767,
+    0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,
+    0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0xb7d,0x767,0x767,0x767,0x767,
+    0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,
+    0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x767,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+    0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,
+    0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0x4b5,0xb9d
+  ]
+);
+
+#[rustfmt::skip]
+pub const DATA: ZeroVec<u8> = zerovec!(u8; core::convert::identity;
+  [
+    0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+    0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+    0xc,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,0x17,0x13,0x17,0x17,
+    9,9,9,9,9,9,9,9,9,9,0x17,0x17,0x18,0x18,0x18,0x17,
+    0x17,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+    1,1,1,1,1,1,1,1,1,1,1,0x14,0x17,0x15,0x1a,0x16,
+    0x1a,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,0x14,0x18,0x15,0x18,0xf,
+    0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+    0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xc,
+    0x17,0x19,0x19,0x19,0x19,0x1b,0x17,0x1a,0x1b,5,0x1c,0x18,0x10,0x1b,0x1a,0x1b,
+    0x18,0xb,0xb,0x1a,2,0x17,0x17,0x1a,0xb,5,0x1d,0xb,0xb,0xb,0x17,1,
+    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+    1,1,1,1,1,1,0x18,1,1,1,1,1,1,1,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+    2,2,2,2,2,2,0x18,2,2,2,2,2,2,2,2,1,
+    2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+    2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+    2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+    2,1,2,1,2,1,2,2,1,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,1,2,1,2,1,2,2,1,1,
+    2,1,2,1,1,2,1,1,1,2,2,1,1,1,1,2,
+    1,1,2,1,1,1,2,2,2,1,1,2,1,1,2,1,
+    2,1,2,1,1,2,1,2,2,1,2,1,1,2,1,1,
+    1,2,1,2,1,1,2,2,5,1,2,2,2,5,5,5,
+    5,1,3,2,1,3,2,1,3,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,
+    2,1,2,1,2,1,2,1,2,1,2,1,2,2,1,3,
+    2,1,2,1,1,1,2,1,2,1,2,1,2,1,2,1,
+    2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+    2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,
+    2,1,2,1,2,1,2,1,2,2,2,2,2,2,2,1,
+    1,2,1,1,2,1,2,1,1,1,1,2,1,2,1,2,
+    1,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+    2,2,2,2,5,2,2,2,2,2,2,2,2,2,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+    4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+    0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,4,4,4,4,4,4,4,
+    0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,
+    4,4,4,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,0x1a,4,0x1a,0x1a,0x1a,
+    0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,6,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,2,
+    1,2,4,0x1a,1,2,0,0,4,2,2,2,0x17,1,0,0,
+    0,0,0x1a,0x1a,1,0x17,1,1,1,0,1,0,1,1,2,1,
+    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+    0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,
+    2,1,1,1,2,2,2,1,2,1,2,1,2,1,2,1,
+    2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,2,
+    2,2,2,1,2,0x18,1,2,1,1,2,2,1,1,1,1,
+    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+    1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,1,2,0x1b,6,6,6,
+    6,6,7,7,1,2,1,2,1,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,1,1,2,1,2,1,
+    2,1,2,1,2,1,2,1,2,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,
+    1,2,1,2,1,2,1,2,1,2,0,1,1,1,1,1,
+    1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+    1,1,0,0,4,0x17,0x17,0x17,0x17,0x17,0x17,2,2,2,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,0x17,0x13,0,0,0x1b,
+    0x1b,0x19,0,6,6,6,6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+    0x13,6,0x17,6,6,0x17,6,6,0x17,6,0,0,0,0,0,0,
+    0,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,
+    0,5,5,5,5,0x17,0x17,0,0,0,0,0,0,0,0,0,
+    0,0,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x18,0x18,0x17,0x17,0x19,0x17,0x17,
+    0x1b,0x1b,6,6,6,6,6,6,6,6,6,6,6,0x17,0x10,0x17,
+    0x17,0x17,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,4,5,5,5,5,5,5,5,5,5,5,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+    6,6,9,9,9,9,9,9,9,9,9,9,0x17,0x17,0x17,0x17,
+    5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,0x17,5,6,6,6,6,6,6,6,0x10,0x1b,6,6,
+    6,6,6,6,4,4,6,6,0x1b,6,6,6,6,5,5,9,
+    9,9,9,9,9,9,9,9,9,5,5,5,0x1b,0x1b,5,0x17,
+    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0x10,5,
+    6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,
+    0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,5,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,
+    9,9,9,9,9,9,9,9,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,
+    6,6,4,4,0x1b,0x17,0x17,0x17,4,0,0,6,0x19,0x19,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,6,6,6,6,4,6,6,6,6,6,6,6,
+    6,6,4,6,6,6,4,6,6,6,6,6,0,0,0x17,0x17,
+    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,6,6,6,0,0,0x17,0,5,5,
+    5,5,5,5,5,5,5,5,5,0,0,0,0,0,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,0x1a,5,
+    5,5,5,5,5,0,0x10,0x10,0,0,0,0,0,0,6,6,
+    6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,4,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0x10,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,8,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,6,8,6,5,8,8,6,6,6,6,6,6,
+    6,6,8,8,8,8,6,8,8,5,6,6,6,6,6,6,
+    6,5,5,5,5,5,5,5,5,5,5,6,6,0x17,0x17,9,
+    9,9,9,9,9,9,9,9,9,0x17,4,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,6,8,8,0,5,5,5,
+    5,5,5,5,5,0,0,5,5,0,0,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,0,5,5,5,5,5,5,5,0,5,0,0,0,5,5,
+    5,5,0,0,6,5,8,8,6,6,6,6,0,0,8,8,
+    0,0,8,8,6,5,0,0,0,0,0,0,0,0,8,0,
+    0,0,0,5,5,0,5,5,5,6,6,0,0,9,9,9,
+    9,9,9,9,9,9,9,5,5,0x19,0x19,0xb,0xb,0xb,0xb,0xb,
+    0xb,0x1b,0x19,5,0x17,6,0,6,6,8,0,5,5,5,5,5,
+    5,0,0,0,0,5,5,0,0,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
+    5,5,5,5,5,5,5,0,5,5,0,5,5,0,5,5,
+    0,0,6,0,8,8,6,6,0,0,0,0,6,6,0,0,
+    6,6,6,0,0,0,6,0,0,0,0,0,0,0,5,5,
+    5,5,0,5,0,0,0,0,0,0,0,9,9,9,9,9,
+    9,9,9,9,9,6,6,5,5,5,6,0x17,0,0,0,0,
+    0,0,0,0,0,6,6,8,0,5,5,5,5,5,5,5,
+    5,5,0,5,5,5,0,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,
+    5,5,5,5,5,0,5,5,0,5,5,5,5,5,0,0,
+    6,5,8,8,6,6,6,6,6,0,6,6,8,0,8,8,
+    6,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,5,5,6,6,0,0,9,9,9,9,9,9,9,
+    9,9,9,0x17,0x19,0,0,0,0,0,0,0,5,6,6,6,
+    6,6,6,0,6,8,8,0,5,5,5,5,5,5,5,5,
+    0,0,5,5,0,0,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,0,5,5,5,
+    5,5,5,5,0,5,5,0,5,5,5,5,5,0,0,6,
+    5,8,6,6,6,6,0,0,8,8,0,0,8,8,6,0,
+    0,0,0,0,0,0,6,6,8,0,0,0,0,5,5,0,
+    5,5,5,6,6,0,0,9,9,9,9,9,9,9,9,9,
+    9,0x1b,5,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0,
+    0,6,5,0,5,5,5,5,5,5,0,0,0,5,5,5,
+    0,5,5,5,5,0,0,0,5,5,0,5,0,5,5,0,
+    0,0,5,5,0,0,0,5,5,5,0,0,0,5,5,5,
+    5,5,5,5,5,5,5,5,5,0,0,0,0,8,8,6,
+    8,8,0,0,0,8,8,8,0,8,8,8,6,0,0,5,
+    0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,0xb,
+    0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x1b,0,0,0,0,0,6,
+    8,8,8,6,5,5,5,5,5,5,5,5,0,5,5,5,
+    0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,0,0,6,5,6,6,8,
+    8,8,8,0,6,6,6,0,6,6,6,6,0,0,0,0,
+    0,0,0,6,6,0,5,5,5,0,0,5,0,0,5,5,
+    6,6,0,0,9,9,9,9,9,9,9,9,9,9,0,0,
+    0,0,0,0,0,0x17,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,5,6,
+    8,8,0x17,5,5,5,5,5,5,5,5,0,5,5,5,0,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,0,5,5,5,5,5,5,5,5,
+    5,5,0,5,5,5,5,5,0,0,6,5,8,6,8,8,
+    8,8,8,0,6,8,8,0,8,8,6,6,0,0,0,0,
+    0,0,0,8,8,0,0,0,0,0,0,5,5,0,5,5,
+    6,6,0,0,9,9,9,9,9,9,9,9,9,9,0,5,
+    5,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,
+    8,8,5,5,5,5,5,5,5,5,5,0,5,5,5,0,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,6,6,5,8,8,6,6,
+    6,6,0,8,8,8,0,8,8,8,6,5,0x1b,0,0,0,
+    0,5,5,5,8,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,6,
+    6,0,0,9,9,9,9,9,9,9,9,9,9,0xb,0xb,0xb,
+    0xb,0xb,0xb,0xb,0xb,0xb,0x1b,5,5,5,5,5,5,0,6,8,
+    8,0,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,0,0,0,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
+    5,5,5,5,5,5,5,5,5,0,5,0,0,5,5,5,
+    5,5,5,5,0,0,0,6,0,0,0,0,8,8,8,6,
+    6,6,0,6,0,8,8,8,8,8,8,8,8,0,0,0,
+    0,0,0,9,9,9,9,9,9,9,9,9,9,0,0,8,
+    8,0x17,0,0,0,0,0,0,0,0,0,0,0,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5,
+    6,6,6,6,6,6,6,0,0,0,0,0x19,5,5,5,5,
+    5,5,4,6,6,6,6,6,6,6,6,0x17,9,9,9,9,
+    9,9,9,9,9,9,0x17,0x17,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,5,
+    0,5,5,5,5,5,0,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,
+    5,0,5,5,5,5,5,5,5,5,5,5,6,5,5,6,
+    6,6,6,6,6,6,6,6,5,0,0,5,5,5,5,5,
+    0,4,0,6,6,6,6,6,6,0,0,9,9,9,9,9,
+    9,9,9,9,9,0,0,5,5,5,5,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,5,0x1b,0x1b,0x1b,0x17,
+    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x1b,0x17,
+    0x1b,0x1b,0x1b,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,9,9,9,9,9,
+    9,9,9,9,9,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,
+    6,0x1b,6,0x1b,6,0x14,0x15,0x14,0x15,8,8,5,5,5,5,5,
+    5,5,5,0,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,0,0,0,0,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,8,6,6,6,6,6,
+    0x17,6,6,5,5,5,5,5,6,6,6,6,6,6,6,6,
+    6,6,6,0,6,6,6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,6,6,6,6,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x1b,0x1b,
+    0x1b,0x1b,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,
+    5,5,5,5,8,8,6,6,6,8,6,6,6,6,6,6,
+    8,6,6,8,8,6,6,5,9,9,9,9,9,9,9,9,
+    9,9,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,5,5,8,8,
+    6,6,5,5,5,5,6,6,5,8,8,8,5,5,8,8,
+    8,8,8,8,8,5,5,6,6,6,6,5,5,5,5,5,
+    5,5,5,5,5,5,6,8,8,6,6,8,8,8,8,8,
+    8,6,5,8,9,9,9,9,9,9,9,9,9,9,8,8,
+    8,6,0x1b,0x1b,1,1,1,1,1,1,0,1,0,0,0,0,
+    0,1,0,0,2,2,2,2,2,2,2,2,2,2,2,0x17,
+    4,2,2,2,5,5,5,5,5,5,5,5,5,0,5,5,
+    5,5,0,0,5,5,5,5,5,5,5,0,5,0,5,5,
+    5,5,0,0,5,5,5,5,5,5,5,5,5,5,5,0,
+    0,6,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xb,0xb,0xb,
+    0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,1,1,1,
+    1,1,1,0,0,2,2,2,2,2,2,0,0,0x13,5,5,
+    5,5,5,5,5,5,5,5,5,5,5,5,5,0x1b,0x17,5,
+    0xc,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+    0x14,0x15,0,0,0,5,5,5,5,5,5,5,5,5,5,5,
+    0x17,0x17,0x17,0xa,0xa,5,5,5,5,5,5,5,5,0,0,0,
+    0,0,0,0,5,5,6,6,6,8,0,0,0,0,0,0,
+    0,0,0,5,5,6,6,8,0x17,0x17,0,0,0,0,0,0,
+    0,0,0,5,5,6,6,0,0,0,0,0,0,0,0,0,
+    0,0,0,5,0,6,6,0,0,0,0,0,0,0,0,0,
+    0,0,0,5,5,5,5,6,6,8,6,6,6,6,6,6,
+    6,8,8,8,8,8,8,6,8,8,6,6,6,6,6,6,
+    6,0x17,0x17,0x17,4,0x17,0x17,0x17,0x19,5,6,0,0,0xb,0xb,0xb,
+    0xb,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0x17,0x17,0x17,
+    0x17,0x17,0x17,0x13,0x17,0x17,0x17,0x17,6,6,6,0x10,6,5,5,5,
+    4,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,
+    0,0,0,0,5,5,5,5,5,6,6,5,5,5,5,5,
+    5,5,5,5,6,5,0,0,0,0,0,5,5,5,5,5,
+    5,0,0,0,0,0,0,0,0,0,0,6,6,6,8,8,
+    8,8,6,6,8,8,8,0,0,0,0,8,8,6,8,8,
+    8,8,8,8,6,6,6,0,0,0,0,0x1b,0,0,0,0x17,
+    0x17,9,9,9,9,9,9,9,9,9,9,5,5,5,5,5,
+    0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,
+    9,9,9,9,9,0xb,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,5,5,5,5,5,5,5,
+    6,6,8,8,6,0,0,0x17,0x17,5,5,5,5,5,8,6,
+    8,6,6,6,6,6,6,6,0,6,8,6,8,8,6,6,
+    6,6,6,6,6,6,8,8,8,6,6,6,6,6,6,6,
+    6,6,6,0,0,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,4,0x17,0x17,
+    0x17,0x17,0x17,0x17,0,0,6,6,6,6,6,6,6,6,6,6,
+    6,6,6,6,7,6,5,5,5,5,6,8,6,6,6,6,
+    6,8,6,8,8,8,6,8,8,5,5,5,5,5,5,5,
+    5,0,0,0,0x17,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,
+    6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x17,0x17,0,
+    5,8,6,6,6,6,8,8,6,6,8,6,6,6,5,5,
+    5,5,5,5,6,8,6,6,8,8,8,6,8,6,6,8,
+    8,0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,5,5,5,
+    5,8,8,8,8,8,8,8,8,6,6,6,6,8,8,6,
+    6,0,0,0,0x17,0x17,0x17,0x17,0x17,9,9,9,9,9,9,9,
+    9,9,9,0,0,0,5,5,5,5,5,5,5,5,4,4,
+    4,4,4,4,0x17,0x17,2,2,2,2,2,2,2,2,2,0,
+    0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,
+    1,0,0,1,1,1,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,
+    0,0,0,0,0,0,6,6,6,0x17,6,6,6,6,6,6,
+    6,6,6,6,6,6,8,6,6,6,6,6,6,6,5,5,
+    5,5,6,5,5,8,6,6,5,0,0,0,0,0,4,4,
+    4,4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,
+    2,4,2,2,2,2,2,2,2,1,2,1,2,1,2,2,
+    2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,
+    1,1,1,1,1,1,1,1,2,2,2,2,2,2,0,0,
+    1,1,1,1,1,1,0,0,2,2,2,2,2,2,2,2,
+    0,1,0,1,0,1,0,1,2,2,2,2,2,2,2,2,
+    2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,
+    3,3,3,3,3,3,3,3,2,2,2,2,2,0,2,2,
+    1,1,1,1,3,0x1a,2,0x1a,0x1a,2,2,2,0,2,2,1,
+    1,1,1,3,0x1a,0x1a,0x1a,2,2,2,2,0,0,2,2,1,
+    1,1,1,0,0x1a,0x1a,0x1a,2,2,2,2,2,2,2,2,1,
+    1,1,1,1,0x1a,0x1a,0x1a,0,0,2,2,2,0,2,2,1,
+    1,1,1,3,0x1a,0x1a,0,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,
+    0xc,0xc,0x10,0x10,0x10,0x10,0x10,0x13,0x13,0x13,0x13,0x13,0x13,0x17,0x17,0x1c,
+    0x1d,0x14,0x1c,0x1c,0x1d,0x14,0x1c,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0xd,
+    0xe,0x10,0x10,0x10,0x10,0x10,0xc,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+    0x1c,0x1d,0x17,0x17,0x17,0x17,0x16,0x17,0x17,0x17,0x18,0x14,0x15,0x17,0x17,0x17,
+    0x17,0x17,0x17,0x17,0x17,0x17,0x18,0x17,0x16,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+    0x17,0x17,0x17,0xc,0x10,0x10,0x10,0x10,0x10,0,0x10,0x10,0x10,0x10,0x10,0x10,
+    0x10,0x10,0x10,0x10,0xb,4,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0x18,0x18,
+    0x18,0x14,0x15,4,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x18,0x18,
+    0x18,0x14,0x15,0,4,4,4,4,4,4,4,4,4,4,4,4,
+    4,0,0,0,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+    0x19,0x19,0x19,0x19,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,
+    7,7,7,6,7,7,7,6,6,6,6,6,6,6,6,6,
+    6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0x1b,0x1b,1,0x1b,0x1b,0x1b,0x1b,1,0x1b,0x1b,2,1,1,1,2,
+    2,1,1,1,2,0x1b,1,0x1b,0x1b,0x18,1,1,1,1,1,0x1b,
+    0x1b,0x1b,0x1b,1,0x1b,1,0x1b,1,0x1b,1,1,1,1,0x1b,2,1,
+    1,1,1,2,5,5,5,5,2,0x1b,0x1b,2,2,1,1,0x18,
+    0x18,0x18,0x18,0x18,1,2,2,2,2,0x1b,0x18,0x1b,0x1b,2,0x1b,0xb,
+    0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xa,
+    0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,1,
+    2,0xa,0xa,0xa,0xa,0xb,0x1b,0x1b,0,0,0,0,0x18,0x18,0x18,0x18,
+    0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x18,
+    0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x18,0x1b,0x18,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,
+    0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x18,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,
+    0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x18,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0xb,0xb,0xb,
+    0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18,0x18,
+    0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,
+    0x15,0x14,0x15,0x14,0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x14,
+    0x15,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x14,0x15,0x18,
+    0x18,0x18,0x18,0x18,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,0x18,0x1b,0x1b,0x1b,0x1b,
+    0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1,2,1,1,1,2,2,1,2,1,
+    2,1,2,1,1,1,2,1,2,2,1,2,2,2,2,2,
+    2,4,4,1,1,2,1,2,2,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,1,
+    2,1,2,6,6,1,2,0,0,0,0,0,0x17,0x17,0x17,0x17,
+    0xb,0x17,0x17,2,2,2,2,2,2,0,2,0,0,0,0,0,
+    2,0,0,5,5,5,5,5,5,5,5,0,0,0,0,0,
+    0,0,4,0x17,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,0,6,5,5,5,5,5,5,5,0,0,0,0,0,0,
+    0,0,0,0x17,0x17,0x1c,0x1d,0x1c,0x1d,0x17,0x17,0x17,0x1c,0x1d,0x17,0x1c,
+    0x1d,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x17,0x17,0x13,0x17,0x1c,0x1d,0x17,
+    0x17,0x1c,0x1d,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x17,0x17,0x17,
+    4,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x13,0x13,0x17,0x17,0x17,
+    0x17,0x13,0x17,0x14,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+    0x17,0x1b,0x1b,0x17,0x17,0x17,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x13,0,
+    0,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0,0,
+    0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,
+    0,0xc,0x17,0x17,0x17,0x1b,4,5,0xa,0x14,0x15,0x14,0x15,0x14,0x15,0x14,
+    0x15,0x1b,0x1b,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x13,0x14,0x15,0x15,0x1b,
+    0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,6,6,6,6,8,8,0x13,
+    4,4,4,4,4,0x1b,0x1b,0xa,0xa,0xa,4,5,0x17,0x1b,0x1b,5,
+    5,5,5,5,5,5,0,0,6,6,0x1a,0x1a,4,4,5,5,
+    5,5,5,5,5,5,5,5,5,0x17,4,4,4,5,0x1b,0x1b,
+    0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0xb,0xb,
+    0xb,0xb,0xb,0xb,5,5,5,5,5,5,5,5,5,5,5,5,
+    4,0x17,0x17,0x17,9,9,9,9,9,9,9,9,9,9,5,5,
+    0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2,
+    1,2,5,6,7,7,7,0x17,6,6,6,6,6,6,6,6,
+    6,6,0x17,4,1,2,1,2,1,2,1,2,1,2,1,2,
+    4,4,6,6,5,5,5,5,5,5,0xa,0xa,0xa,0xa,0xa,0xa,
+    0xa,0xa,0xa,0xa,6,6,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,
+    0,0,0,0,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,4,4,4,4,4,
+    4,4,4,4,0x1a,0x1a,1,2,1,2,1,2,1,2,1,2,
+    1,2,1,2,4,2,2,2,2,2,2,2,2,1,2,1,
+    2,1,1,2,1,2,1,2,1,2,4,0x1a,0x1a,1,2,1,
+    2,5,1,2,1,2,2,2,1,2,1,2,1,2,1,2,
+    1,2,1,1,1,1,1,2,1,2,1,2,1,2,1,2,
+    1,2,1,1,1,1,2,1,2,0,0,0,0,0,1,2,
+    0,2,0,2,1,2,1,2,0,0,0,0,0,0,4,4,
+    4,1,2,5,4,4,2,5,5,5,5,5,6,5,5,5,
+    6,5,5,5,5,6,5,5,5,5,8,8,6,6,8,0x1b,
+    0x1b,0x1b,0x1b,6,0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x19,
+    0x1b,0,0,0,0,0,0,5,5,5,5,0x17,0x17,0x17,0x17,0,
+    0,0,0,0,0,0,0,8,8,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,8,8,8,8,8,8,8,8,8,
+    8,8,8,6,6,0,0,0,0,0,0,0,0,0x17,0x17,6,
+    6,5,5,5,5,5,5,0x17,0x17,0x17,5,0x17,5,5,6,5,
+    5,5,5,5,5,6,6,6,6,6,6,6,6,0x17,0x17,6,
+    6,8,8,0,0,0,0,0,0,0,0,0,0,0,0x17,5,
+    5,5,6,8,8,6,6,6,6,8,8,6,6,8,8,0x17,
+    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,4,9,9,
+    9,9,9,9,9,9,9,9,0,0,0,0,0x17,0x17,5,5,
+    5,5,5,6,4,5,5,5,5,5,5,5,5,5,6,6,
+    6,6,6,6,8,6,6,8,8,6,6,0,0,0,0,0,
+    0,0,0,0,5,5,5,6,5,5,5,5,5,5,5,5,
+    6,8,0,0,9,9,9,9,9,9,9,9,9,9,0,0,
+    0x17,0x17,0x17,0x17,4,5,5,5,5,5,5,0x1b,0x1b,0x1b,5,8,
+    6,8,5,5,6,5,6,6,6,5,5,6,6,5,5,5,
+    5,5,6,6,5,6,5,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,5,5,4,0x17,0x17,5,5,5,5,5,5,5,
+    5,5,5,5,8,6,6,8,8,0x17,0x17,5,4,4,8,6,
+    0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,
+    0,5,5,5,5,5,5,0,2,2,2,2,2,2,2,2,
+    2,2,2,0x1a,4,4,4,4,2,2,2,2,2,2,2,2,
+    2,4,0x1a,0x1a,0,0,0,0,5,5,5,8,8,6,8,8,
+    6,8,8,0x17,8,6,0,0,5,5,5,5,5,5,5,0,
+    0,0,0,5,5,5,5,5,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+    0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+    0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,2,2,2,2,2,2,2,0,
+    0,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,
+    0,0,5,6,5,5,5,5,5,5,5,5,5,0x18,5,5,
+    5,5,5,5,5,0,5,5,5,5,5,0,5,0,5,5,
+    0,5,5,0,5,5,5,5,5,5,5,5,5,5,0x1a,0x1a,
+    0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,5,0x15,0x14,5,5,5,5,5,5,5,
+    5,0,0,0,0,0,0,0,0x1b,5,5,5,5,5,5,5,
+    5,5,5,5,5,0x19,0x1b,0x1b,0x1b,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+    0x14,0x15,0x17,0,0,0,0,0,0,0x17,0x13,0x13,0x16,0x16,0x14,0x15,
+    0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x14,0x15,0x17,0x17,0x14,0x15,0x17,0x17,
+    0x17,0x17,0x16,0x16,0x16,0x17,0x17,0x17,0,0x17,0x17,0x17,0x17,0x13,0x14,0x15,
+    0x14,0x15,0x14,0x15,0x17,0x17,0x18,0x13,0x18,0x18,0x18,0,0x17,0x19,0x17,0x17,
+    0,0,0,0,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,0,0,0x10,0,0x17,0x17,0x17,0x19,0x17,0x17,0x17,0x14,0x15,0x17,0x18,
+    0x17,0x13,0x17,0x17,2,2,2,2,2,2,2,2,2,2,2,0x14,
+    0x18,0x15,0x18,0x14,0x15,0x17,0x14,0x15,0x17,0x17,5,5,5,5,5,5,
+    5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,4,4,0,0,5,5,5,5,5,5,0,0,
+    5,5,5,0,0,0,0x19,0x19,0x18,0x1a,0x1b,0x19,0x19,0,0x1b,0x18,
+    0x18,0x18,0x18,0x1b,0x1b,0,0,0,0,0,0,0,0,0,0x10,0x10,
+    0x10,0x1b,0x1b,0,0,5,5,5,5,5,5,5,5,5,5,5,
+    0,5,5,0,5,0x17,0x17,0x17,0,0,0,0,0xb,0xb,0xb,0xb,
+    0xb,0xb,0xb,0xb,0xb,0xa,0xa,0xa,0xa,0xa,0xb,0xb,0xb,0xb,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0xb,0xb,0x1b,0x1b,0x1b,0,0,0,
+    0,0,0,0,0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0,0,6,0xb,0xb,0xb,
+    0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0,
+    0,0,0,0,0,5,5,5,0xa,5,5,5,5,5,5,5,
+    5,0xa,0,0,0,0,0,5,5,5,5,5,5,6,6,6,
+    6,6,0,0,0,0,0,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,0,0x17,5,5,5,5,0,0,0,0,5,
+    5,5,5,5,5,5,5,0x17,0xa,0xa,0xa,0xa,0xa,0,0,0,
+    0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,2,
+    2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,5,
+    5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,0,
+    0,0,0x17,1,1,1,0,1,1,0,2,2,2,2,2,2,
+    2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,
+    2,0,2,2,2,2,2,2,2,0,2,2,0,0,0,4,
+    4,4,4,4,4,0,4,4,4,4,4,4,4,4,4,0,
+    0,0,0,0,5,5,5,5,5,5,0,0,5,0,5,5,
+    5,5,5,5,0,5,5,0,0,0,5,0,0,5,5,5,
+    5,5,5,0,0x17,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,
+    5,5,5,5,0x1b,0x1b,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,
+    0,5,5,0,0,0,0,0,0xb,0xb,0xb,0xb,0xb,5,5,5,
+    5,5,5,0xb,0xb,0xb,0xb,0xb,0xb,0,0,0,0x17,5,5,5,
+    5,5,5,5,5,5,5,0,0,0,0,0,0x17,5,5,5,
+    5,5,5,5,5,0,0,0,0,0xb,0xb,5,5,0,0,0xb,
+    0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,6,6,
+    6,0,6,6,0,0,0,0,0,6,6,6,6,5,5,5,
+    5,5,5,0,0,6,6,6,0,0,0,0,6,0x17,0x17,0x17,
+    0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,0xb,0xb,0x17,5,5,5,
+    5,5,5,5,5,5,5,5,5,5,0xb,0xb,0xb,5,5,5,
+    5,5,5,5,5,0x1b,5,5,5,5,5,5,5,6,6,0,
+    0,0,0,0xb,0xb,0xb,0xb,0xb,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,
+    0,0,0,0,0,0,0,0,5,5,5,5,5,5,0,0,
+    0,0x17,0x17,0x17,0x17,0x17,0x17,0x17,5,5,5,5,5,5,0,0,
+    0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,0,0,0,0,0,
+    0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,5,0,0,0,0,0,0,
+    0,0x17,0x17,0x17,0x17,0,0,0,1,1,1,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,
+    0,0,0xb,0xb,0xb,0xb,0xb,0xb,5,5,5,5,6,6,6,6,
+    0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+    5,5,0,6,6,0x13,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,5,
+    0,0,0,0,0,0,0,0,6,0xb,0xb,0xb,0xb,0x17,0x17,0x17,
+    0x17,0x17,0,0,0,0,0,0,5,5,6,6,6,6,0x17,0x17,
+    0x17,0x17,0,0,0,0,0,0,5,5,5,5,5,0xb,0xb,0xb,
+    0xb,0xb,0xb,0xb,0,0,0,0,8,6,8,5,5,5,5,5,
+    5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,0x17,
+    0x17,0x17,0x17,0x17,0x17,0x17,0,0,0xb,0xb,0xb,0xb,0xb,0xb,9,9,
+    9,9,9,9,9,9,9,9,6,5,5,6,6,5,0,0,
+    0,0,0,0,0,0,0,6,8,8,8,6,6,6,6,8,
+    8,6,6,0x17,0x17,0x10,0x17,0x17,6,0,0,0,0,0,0,0,
+    0,0,0,0x10,0,0,5,5,5,5,5,5,5,6,6,6,
+    6,6,8,6,6,6,6,6,0,9,9,9,9,9,9,9,
+    9,9,9,0x17,0x17,0x17,0x17,5,8,8,5,0,0,0,0,0,
+    0,0,0,5,5,5,6,0x17,0x17,5,0,0,0,0,0,0,
+    0,0,0,5,5,5,8,8,8,6,6,6,6,6,6,6,
+    6,6,8,5,5,5,5,0x17,0x17,0x17,0x17,6,6,6,6,0x17,
+    8,6,9,9,9,9,9,9,9,9,9,9,5,0x17,5,0x17,
+    0x17,0x17,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+    0xb,0xb,0,0,0,0,0,0,0,0,0,0,0,5,5,5,
+    5,5,5,5,5,5,5,5,5,8,8,8,6,6,8,8,
+    6,8,6,6,0x17,0x17,0x17,0x17,0x17,0x17,6,0,5,5,5,5,
+    5,5,5,0,5,0,5,5,5,5,0,5,5,5,5,5,
+    5,5,5,5,0x17,0,0,0,0,0,0,8,8,8,6,6,
+    6,6,6,6,6,6,0,0,0,0,0,6,6,8,8,0,
+    5,5,5,5,5,5,5,5,0,0,5,0,5,5,0,5,
+    5,5,5,5,0,6,6,5,8,8,6,8,8,8,8,0,
+    0,8,8,0,0,8,8,8,0,0,5,0,0,0,0,0,
+    0,8,0,0,0,0,0,5,5,5,8,8,0,0,6,6,
+    6,6,6,6,6,0,0,0,5,5,5,5,5,8,8,8,
+    6,6,6,6,6,6,6,6,8,8,6,6,6,8,6,5,
+    5,5,5,0x17,0x17,0x17,0x17,0x17,9,9,9,9,9,9,9,9,
+    9,9,0x17,0x17,0,0x17,6,5,8,8,8,6,6,6,6,6,
+    6,8,6,8,8,8,8,6,8,6,6,5,5,0x17,5,0,
+    0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,5,
+    5,5,5,5,5,5,8,8,6,6,6,6,0,0,8,8,
+    8,8,6,6,8,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+    0x17,0x17,0x17,0x17,0x17,5,5,5,5,6,6,0,0,8,8,8,
+    6,6,6,6,6,6,6,6,8,8,6,8,6,0x17,0x17,0x17,
+    5,0,0,0,0,0,0,0,0,0,0,0,0x17,0x17,0x17,0x17,
+    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0,0,0,5,5,5,5,
+    5,5,5,5,5,5,5,6,8,6,8,8,6,6,6,6,
+    6,6,8,6,5,0x17,0,0,0,0,0,0,8,8,6,6,
+    6,6,8,6,6,6,6,6,0,0,0,0,9,9,9,9,
+    9,9,9,9,9,9,0xb,0xb,0x17,0x17,0x17,0x1b,6,6,6,6,
+    6,6,6,6,8,6,6,0x17,0,0,0,0,0xb,0xb,0xb,0,
+    0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,
+    5,5,0,0,5,0,0,5,5,5,5,0,5,5,0,5,
+    5,5,5,5,5,5,5,8,8,8,8,8,8,0,8,8,
+    0,0,6,6,8,6,5,8,5,8,6,0x17,0x17,0x17,0,0,
+    0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0,
+    0,5,5,5,5,5,5,8,8,8,6,6,6,6,0,0,
+    6,6,8,8,8,8,6,5,0x17,5,8,0,0,0,0,0,
+    0,0,0,0,0,0,5,6,6,6,6,6,6,6,6,6,
+    6,5,5,5,5,5,6,6,6,6,6,6,8,5,6,6,
+    6,6,0x17,0x17,0x17,0x17,0x17,0x17,0x17,6,0,0,0,0,0,0,
+    0,0,5,6,6,6,6,6,6,8,8,6,6,6,5,5,
+    5,5,6,6,6,6,6,6,6,8,6,6,0x17,0x17,0x17,5,
+    0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    6,6,6,6,6,6,6,0,6,6,6,6,6,6,8,6,
+    5,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,0,0,0,0,
+    6,6,6,6,6,6,6,6,0,8,6,6,6,6,6,6,
+    8,6,6,8,6,6,0,0,0,0,0,0,0,0,0,5,
+    6,6,6,6,6,6,0,0,0,6,0,6,6,0,6,6,
+    6,6,6,6,5,6,0,0,0,0,0,0,0,0,5,5,
+    5,5,5,5,0,5,5,0,5,5,5,5,5,5,5,5,
+    5,5,8,8,8,8,8,0,6,6,0,8,8,6,8,6,
+    5,0,0,0,0,0,0,0,5,5,5,6,6,8,8,0x17,
+    0x17,0,0,0,0,0,0,0,0xb,0xb,0xb,0xb,0xb,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x19,0x19,0x19,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0x17,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+    0xa,0xa,0xa,0xa,0,0x17,0x17,0x17,0x17,0x17,0,0,0,0,0,0,
+    0,0,0,0,0,5,0x17,0x17,0,0,0,0,0,0,0,0,
+    0,0,0,0,0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0,0,
+    0,0,0,0,0,6,6,6,6,6,0x17,0,0,0,0,0,
+    0,0,0,0,0,6,6,6,6,6,6,6,0x17,0x17,0x17,0x17,
+    0x17,0x1b,0x1b,0x1b,0x1b,4,4,4,4,0x17,0x1b,0,0,0,0,0,
+    0,0,0,0,0,9,9,9,9,9,9,9,9,9,9,0,
+    0xb,0xb,0xb,0xb,0xb,0,5,5,5,5,5,5,5,5,5,5,
+    5,5,5,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x17,0x17,0x17,0x17,0,0,
+    0,0,0,5,8,8,8,8,8,8,8,8,8,8,8,8,
+    8,8,8,8,0,0,0,0,0,0,0,6,6,6,4,4,
+    4,4,4,4,4,4,4,4,4,4,4,0x17,4,6,0,0,
+    0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,
+    0,0,0,0,0,0,0,0,0,4,4,4,4,0,4,4,
+    4,4,4,4,4,0,4,4,0,0,0,0,5,5,5,5,
+    0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,
+    5,5,0,0,0x1b,6,6,0x17,0x10,0x10,0x10,0x10,0,0,0,0,
+    0,0,0,0,0,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,
+    0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,8,8,6,6,6,0x1b,0x1b,0x1b,
+    8,8,8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,6,6,6,6,6,
+    0x1b,0x1b,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+    0x1b,0x1b,0x1b,6,6,6,6,0x1b,0x1b,6,6,6,0x1b,0,0,0,
+    0,0,0,0,0,0,0,0xb,0xb,0xb,0xb,0,0,0,0,0,
+    0,0,0,0,0,0,0,2,2,2,2,1,1,1,1,1,
+    1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,
+    2,2,2,1,0,1,1,0,0,1,0,0,1,1,0,0,
+    1,1,1,1,0,1,1,1,1,1,1,2,2,2,2,0,
+    2,0,2,2,2,2,1,1,0,1,1,1,1,0,0,1,
+    1,1,1,1,0,1,1,1,1,1,1,1,0,2,2,2,
+    2,2,2,2,2,1,1,0,1,1,1,1,0,1,1,1,
+    1,1,0,1,0,0,0,1,1,1,1,1,1,0,2,2,
+    2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,
+    2,2,2,2,2,2,0,0,1,1,1,1,1,1,1,1,
+    0x18,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,
+    1,1,1,1,1,1,1,1,1,1,0x18,2,2,2,2,2,
+    0x18,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,
+    0x18,2,2,2,2,2,2,0x18,2,2,2,2,2,2,1,2,
+    0,0,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+    9,9,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,6,6,6,
+    6,6,6,6,6,6,6,6,6,6,0x1b,0x1b,0x1b,0x1b,0x1b,6,
+    0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,6,0x1b,0x1b,0x17,0x17,0x17,
+    0x17,0x17,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+    2,2,2,2,2,0,6,6,6,6,6,6,6,6,6,0,
+    0,6,6,6,6,6,0,6,6,0,6,6,6,6,6,0,
+    0,0,0,0,6,6,6,6,6,6,6,4,4,4,4,4,
+    4,4,0,0,9,9,9,9,9,9,9,9,9,9,0,0,
+    0,0,5,0x1b,5,5,5,5,5,5,5,5,5,5,5,5,
+    5,5,6,0,9,9,9,9,9,9,9,9,9,9,0,0,
+    0,0,0,0x19,5,5,5,5,5,5,5,0,5,5,5,5,
+    0,5,5,0,5,5,5,5,5,0,0,0xb,0xb,0xb,0xb,0xb,
+    0xb,0xb,0xb,0xb,2,2,2,2,6,6,6,6,6,6,6,4,
+    0,0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+    0x1b,0xb,0xb,0xb,0x19,0xb,0xb,0xb,0xb,0,0,0,0,0,0,0,
+    0,0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+    0xb,0xb,0x1b,0xb,0,5,5,0,5,0,0,5,0,5,5,5,
+    5,5,5,5,0,5,5,5,5,0,5,0,5,0,0,0,
+    0,5,0,0,0,0,5,0,5,0,5,0,5,5,5,0,
+    5,5,0,5,0,0,5,0,5,0,5,0,5,0,5,5,
+    0,5,0,0,5,5,5,5,0,5,5,5,5,0,5,5,
+    5,5,0,5,0,5,5,5,0,5,5,5,5,5,0,5,
+    5,5,5,5,0x18,0x18,0,0,0,0,0,0,0,0,0,0,
+    0,0,0,0,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+    0xb,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1a,0x1a,0x1a,0x1a,
+    0x1a,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0,0,0x1b,0x1b,
+    0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,0x1b,0x1b,0x1b,0,0,0,0x1b,0x1b,
+    0x1b,0,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0,0x10,
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x10,0x10,
+    0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,
+    0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0,0,0,0
+  ]
+);
+
+pub static HEADER: CodePointTrieHeader = CodePointTrieHeader {
+    high_start: 0x110000,
+    shifted12_high_start: 0x110,
+    trie_type: TrieType::Small,
+    index3_null_offset: 0x767,
+    data_null_offset: 0xd18,
+    null_value: 0x0,
+};
diff --git a/vendor/icu_collections/benches/tries/mod.rs b/vendor/icu_collections/benches/tries/mod.rs
new file mode 100644
index 00000000..576516da
--- /dev/null
+++ b/vendor/icu_collections/benches/tries/mod.rs
@@ -0,0 +1,6 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+pub mod gc_fast;
+pub mod gc_small;
diff --git a/vendor/icu_collections/examples/unicode_bmp_blocks_selector.rs b/vendor/icu_collections/examples/unicode_bmp_blocks_selector.rs
new file mode 100644
index 00000000..c29f1d25
--- /dev/null
+++ b/vendor/icu_collections/examples/unicode_bmp_blocks_selector.rs
@@ -0,0 +1,71 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// An example application which uses icu_uniset to test what blocks of
+// Basic Multilingual Plane a character belongs to.
+//
+// In this example we use `CodePointInversionListBuilder` to construct just the first
+// two blocks of the first plane, and use an instance of a `BMPBlockSelector`
+// to retrieve which of those blocks each character of a string belongs to.
+//
+// This is a simple example of the API use and is severely oversimplified
+// compared to real Unicode block selection.
+
+#![no_main] // https://github.com/unicode-org/icu4x/issues/395
+icu_benchmark_macros::instrument!();
+use icu_benchmark_macros::println;
+
+use icu_collections::codepointinvlist::{CodePointInversionList, CodePointInversionListBuilder};
+use std::ops::RangeInclusive;
+
+#[derive(Copy, Clone, Debug)]
+enum BmpBlock {
+    Basic,
+    Latin1Supplement,
+    Unknown,
+}
+
+const BLOCKS: [(BmpBlock, RangeInclusive<char>); 2] = [
+    (BmpBlock::Basic, '\u{0000}'..='\u{007F}'),
+    (BmpBlock::Latin1Supplement, '\u{0080}'..='\u{00FF}'),
+];
+
+struct BmpBlockSelector {
+    blocks: [(BmpBlock, CodePointInversionList<'static>); 2],
+}
+
+impl BmpBlockSelector {
+    pub fn new() -> BmpBlockSelector {
+        BmpBlockSelector {
+            blocks: BLOCKS.map(|(ch, range)| {
+                (ch, {
+                    let mut builder = CodePointInversionListBuilder::new();
+                    builder.add_range(range);
+                    builder.build()
+                })
+            }),
+        }
+    }
+
+    pub fn select(&self, input: char) -> BmpBlock {
+        for (block, set) in &self.blocks {
+            if set.contains(input) {
+                return *block;
+            }
+        }
+        BmpBlock::Unknown
+    }
+}
+
+fn main() {
+    let selector = BmpBlockSelector::new();
+
+    let sample = "Welcome to MyName©®, Алексей!";
+
+    println!("\n====== Unicode BMP Block Selector example ============");
+    for ch in sample.chars() {
+        let block = selector.select(ch);
+        println!("{ch}: {block:#?}");
+    }
+}
diff --git a/vendor/icu_collections/src/char16trie/mod.rs b/vendor/icu_collections/src/char16trie/mod.rs
new file mode 100644
index 00000000..1a4b66b9
--- /dev/null
+++ b/vendor/icu_collections/src/char16trie/mod.rs
@@ -0,0 +1,44 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module provides a data structure for a space-efficient and time-efficient lookup of
+//! sequences of 16-bit units (commonly but not necessarily UTF-16 code units)
+//! which map to integer values.
+//!
+//! It is an implementation of the existing [ICU4C UCharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UCharsTrie.html)
+//! / [ICU4J CharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/util/CharsTrie.html) API.
+//!
+//! ## Architecture
+//!
+//! ICU4X [`Char16Trie`] is designed to provide a read-only view of `UCharsTrie` data that is exported from ICU4C.
+//!
+//! ## Examples
+//!
+//! ### Querying a `Char16Trie`
+//!
+//! ```rust
+//! use icu::collections::char16trie::{Char16Trie, TrieResult};
+//! use zerovec::ZeroVec;
+//!
+//! // A Char16Trie containing the ASCII characters mapping 'a' to 1 and 'ab'
+//! // to 100.
+//! let trie_data = [48, 97, 176, 98, 32868];
+//! let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(&trie_data));
+//!
+//! let mut iter = trie.iter();
+//! let res = iter.next('a');
+//! assert_eq!(res, TrieResult::Intermediate(1));
+//! let res = iter.next('b');
+//! assert_eq!(res, TrieResult::FinalValue(100));
+//! let res = iter.next('c');
+//! assert_eq!(res, TrieResult::NoMatch);
+//! ```
+//!
+//! [`ICU4X`]: ../icu/index.html
+
+mod trie;
+
+pub use trie::Char16Trie;
+pub use trie::Char16TrieIterator;
+pub use trie::TrieResult;
diff --git a/vendor/icu_collections/src/char16trie/trie.rs b/vendor/icu_collections/src/char16trie/trie.rs
new file mode 100644
index 00000000..1d483079
--- /dev/null
+++ b/vendor/icu_collections/src/char16trie/trie.rs
@@ -0,0 +1,490 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use zerofrom::ZeroFrom;
+use zerovec::{ZeroSlice, ZeroVec};
+
+// Match-node lead unit values, after masking off intermediate-value bits:
+
+// 00..0f: Branch node. If node!=0 then the length is node+1, otherwise
+// the length is one more than the next byte.
+
+// For a branch sub-node with at most this many entries, we drop down
+// to a linear search.
+const MAX_BRANCH_LINEAR_SUB_NODE_LENGTH: usize = 5;
+
+// 0030..003f: Linear-match node, match 1..16 units and continue reading the next node.
+const MIN_LINEAR_MATCH: u16 = 0x30;
+const MAX_LINEAR_MATCH_LENGTH: u16 = 0x10;
+
+// Match-node lead unit bits 14..6 for the optional intermediate value.
+// If these bits are 0, then there is no intermediate value.
+// Otherwise, see the *NodeValue* constants below.
+const MIN_VALUE_LEAD: u16 = MIN_LINEAR_MATCH + MAX_LINEAR_MATCH_LENGTH; // 0x40
+const NODE_TYPE_MASK: u16 = MIN_VALUE_LEAD - 1; // 0x003f
+
+// A final-value node has bit 15 set.
+const VALUE_IS_FINAL: u16 = 0x8000;
+
+// Compact value: After testing bit 0, shift right by 15 and then use the following thresholds.
+const MAX_ONE_UNIT_VALUE: u16 = 0x3fff;
+
+const MIN_TWO_UNIT_VALUE_LEAD: u16 = MAX_ONE_UNIT_VALUE + 1; // 0x4000
+
+const MAX_ONE_UNIT_NODE_VALUE: u16 = 0xff;
+
+const MIN_TWO_UNIT_NODE_VALUE_LEAD: u16 = MIN_VALUE_LEAD + ((MAX_ONE_UNIT_NODE_VALUE + 1) << 6); // 0x4040
+
+const THREE_UNIT_NODE_VALUE_LEAD: u16 = 0x7fc0;
+
+const THREE_UNIT_VALUE_LEAD: u16 = 0x7fff;
+
+// Compact delta integers.
+const MAX_ONE_UNIT_DELTA: u16 = 0xfbff;
+const MIN_TWO_UNIT_DELTA_LEAD: u16 = MAX_ONE_UNIT_DELTA + 1; // 0xfc00
+const THREE_UNIT_DELTA_LEAD: u16 = 0xffff;
+
+fn skip_value(pos: usize, lead: u16) -> usize {
+    if lead < MIN_TWO_UNIT_VALUE_LEAD {
+        pos
+    } else if lead < THREE_UNIT_VALUE_LEAD {
+        pos + 1
+    } else {
+        pos + 2
+    }
+}
+
+fn skip_node_value(pos: usize, lead: u16) -> usize {
+    if lead < MIN_TWO_UNIT_NODE_VALUE_LEAD {
+        pos
+    } else if lead < THREE_UNIT_NODE_VALUE_LEAD {
+        pos + 1
+    } else {
+        pos + 2
+    }
+}
+
+/// This struct represents a de-serialized `Char16Trie` that was exported from
+/// ICU binary data.
+///
+/// Light-weight, non-const reader class for a `CharsTrie`. Traverses a
+/// char-serialized data structure with minimal state, for mapping 16-bit-unit
+/// sequences to non-negative integer values.
+///
+/// For more information:
+/// - [ICU4C UCharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UCharsTrie.html)
+/// - [ICU4J CharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/util/CharsTrie.html) API.
+#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = icu_collections::char16trie))]
+#[derive(Clone, Debug, PartialEq, Eq, ZeroFrom)]
+pub struct Char16Trie<'data> {
+    /// An array of u16 containing the trie data.
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    #[doc(hidden)] // #2417
+    pub data: ZeroVec<'data, u16>,
+}
+
+impl<'data> Char16Trie<'data> {
+    /// Returns a new [`Char16Trie`] with ownership of the provided data.
+    pub fn new(data: ZeroVec<'data, u16>) -> Self {
+        Self { data }
+    }
+
+    /// Returns a new [`Char16TrieIterator`] backed by borrowed data from the `trie` data
+    pub fn iter(&self) -> Char16TrieIterator {
+        Char16TrieIterator::new(&self.data)
+    }
+}
+
+/// This struct represents an iterator over a [`Char16Trie`].
+#[derive(Clone)]
+pub struct Char16TrieIterator<'a> {
+    /// A reference to the Char16Trie data to iterate over.
+    trie: &'a ZeroSlice<u16>,
+    /// Index of next trie unit to read, or `None` if there are no more matches.
+    pos: Option<usize>,
+    /// Remaining length of a linear-match node, minus 1, or `None` if not in
+    /// such a node.
+    remaining_match_length: Option<usize>,
+}
+
+/// An enum representing the return value from a lookup in [`Char16Trie`].
+#[derive(Clone, Copy, Debug, PartialEq)]
+pub enum TrieResult {
+    /// The input unit(s) did not continue a matching string.
+    /// Once `next()` returns `TrieResult::NoMatch`, all further calls to `next()`
+    /// will also return `TrieResult::NoMatch`.
+    NoMatch,
+    /// The input unit(s) matched a string but there is no value for the string
+    /// so far.  (It is a prefix of a longer string.)
+    NoValue,
+    /// The input unit(s) continued a matching string and there is a value for
+    /// the string so far. No further input byte/unit can continue a matching
+    /// string.
+    FinalValue(i32),
+    /// The input unit(s) continued a matching string and there is a value for
+    /// the string so far.  Another input byte/unit can continue a matching
+    /// string.
+    Intermediate(i32),
+}
+
+// Get the lead surrogate (0xd800..0xdbff) for a
+// supplementary code point (0x10000..0x10ffff).
+// @param supplementary 32-bit code point (U+10000..U+10ffff)
+// @return lead surrogate (U+d800..U+dbff) for supplementary
+fn u16_lead(supplementary: i32) -> u16 {
+    (((supplementary) >> 10) + 0xd7c0) as u16
+}
+
+// Get the trail surrogate (0xdc00..0xdfff) for a
+// supplementary code point (0x10000..0x10ffff).
+// @param supplementary 32-bit code point (U+10000..U+10ffff)
+// @return trail surrogate (U+dc00..U+dfff) for supplementary
+fn u16_tail(supplementary: i32) -> u16 {
+    (((supplementary) & 0x3ff) | 0xdc00) as u16
+}
+
+/// A macro that takes an `Option` argument and either unwraps it if it has a value or
+/// causes the function to return `TrieResult::NoMatch` if there is no value.
+/// This could perhaps be done with `std::ops::Try` once stabilized.
+macro_rules! trie_unwrap {
+    ($option:expr) => {
+        match $option {
+            Some(x) => x,
+            None => {
+                // Unexpected
+                debug_assert!(false);
+                return TrieResult::NoMatch;
+            }
+        }
+    };
+}
+
+impl<'a> Char16TrieIterator<'a> {
+    /// Returns a new [`Char16TrieIterator`] backed by borrowed data for the `trie` array
+    pub fn new(trie: &'a ZeroSlice<u16>) -> Self {
+        Self {
+            trie,
+            pos: Some(0),
+            remaining_match_length: None,
+        }
+    }
+
+    /// Traverses the trie from the current state for this input char.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::char16trie::{Char16Trie, TrieResult};
+    /// use zerovec::ZeroVec;
+    ///
+    /// // A Char16Trie containing the ASCII characters 'a' and 'b'.
+    /// let trie_data = [48, 97, 176, 98, 32868];
+    /// let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(&trie_data));
+    ///
+    /// let mut iter = trie.iter();
+    /// let res = iter.next('a');
+    /// assert_eq!(res, TrieResult::Intermediate(1));
+    /// let res = iter.next('b');
+    /// assert_eq!(res, TrieResult::FinalValue(100));
+    /// let res = iter.next('c');
+    /// assert_eq!(res, TrieResult::NoMatch);
+    /// ```
+    pub fn next(&mut self, c: char) -> TrieResult {
+        if (c as u32) <= 0xffff {
+            self.next16(c as u16)
+        } else {
+            match self.next16(u16_lead(c as i32)) {
+                TrieResult::NoValue | TrieResult::Intermediate(_) => {
+                    self.next16(u16_tail(c as i32))
+                }
+                _ => TrieResult::NoMatch,
+            }
+        }
+    }
+
+    /// Traverses the trie from the current state for this input char.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::char16trie::{Char16Trie, TrieResult};
+    /// use zerovec::ZeroVec;
+    ///
+    /// // A Char16Trie containing the ASCII characters 'a' and 'b'.
+    /// let trie_data = [48, 97, 176, 98, 32868];
+    /// let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(&trie_data));
+    ///
+    /// let mut iter = trie.iter();
+    /// let res = iter.next('a');
+    /// assert_eq!(res, TrieResult::Intermediate(1));
+    /// let res = iter.next('b');
+    /// assert_eq!(res, TrieResult::FinalValue(100));
+    /// let res = iter.next('c');
+    /// assert_eq!(res, TrieResult::NoMatch);
+    /// ```
+    pub fn next32(&mut self, c: u32) -> TrieResult {
+        if c <= 0xffff {
+            self.next16(c as u16)
+        } else {
+            match self.next16(u16_lead(c as i32)) {
+                TrieResult::NoValue | TrieResult::Intermediate(_) => {
+                    self.next16(u16_tail(c as i32))
+                }
+                _ => TrieResult::NoMatch,
+            }
+        }
+    }
+
+    /// Traverses the trie from the current state for this input char.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::char16trie::{Char16Trie, TrieResult};
+    /// use zerovec::ZeroVec;
+    ///
+    /// // A Char16Trie containing the ASCII characters 'a' and 'b'.
+    /// let trie_data = [48, 97, 176, 98, 32868];
+    /// let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(&trie_data));
+    ///
+    /// let mut iter = trie.iter();
+    /// let res = iter.next16('a' as u16);
+    /// assert_eq!(res, TrieResult::Intermediate(1));
+    /// let res = iter.next16('b' as u16);
+    /// assert_eq!(res, TrieResult::FinalValue(100));
+    /// let res = iter.next16('c' as u16);
+    /// assert_eq!(res, TrieResult::NoMatch);
+    /// ```
+    pub fn next16(&mut self, c: u16) -> TrieResult {
+        let mut pos = match self.pos {
+            Some(p) => p,
+            None => return TrieResult::NoMatch,
+        };
+        if let Some(length) = self.remaining_match_length {
+            // Remaining part of a linear-match node
+            if c == trie_unwrap!(self.trie.get(pos)) {
+                pos += 1;
+                self.pos = Some(pos);
+                if length == 0 {
+                    self.remaining_match_length = None;
+                    let node = trie_unwrap!(self.trie.get(pos));
+                    if node >= MIN_VALUE_LEAD {
+                        return self.value_result(pos);
+                    }
+                } else {
+                    self.remaining_match_length = Some(length - 1);
+                }
+                return TrieResult::NoValue;
+            }
+            self.stop();
+            TrieResult::NoMatch
+        } else {
+            self.next_impl(pos, c)
+        }
+    }
+
+    fn branch_next(&mut self, pos: usize, length: usize, in_unit: u16) -> TrieResult {
+        let mut pos = pos;
+        let mut length = length;
+        if length == 0 {
+            length = trie_unwrap!(self.trie.get(pos)) as usize;
+            pos += 1;
+        }
+        length += 1;
+
+        // The length of the branch is the number of units to select from.
+        // The data structure encodes a binary search.
+        while length > MAX_BRANCH_LINEAR_SUB_NODE_LENGTH {
+            if in_unit < trie_unwrap!(self.trie.get(pos)) {
+                length >>= 1;
+                pos = trie_unwrap!(self.jump_by_delta(pos + 1));
+            } else {
+                length = length - (length >> 1);
+                pos = trie_unwrap!(self.skip_delta(pos + 1));
+            }
+        }
+        // Drop down to linear search for the last few bytes.
+        // length>=2 because the loop body above sees length>kMaxBranchLinearSubNodeLength>=3
+        // and divides length by 2.
+        loop {
+            if in_unit == trie_unwrap!(self.trie.get(pos)) {
+                pos += 1;
+                let mut node = trie_unwrap!(self.trie.get(pos));
+                if node & VALUE_IS_FINAL != 0 {
+                    self.pos = Some(pos);
+                    return self.value_result(pos);
+                }
+                // Use the non-final value as the jump delta.
+                pos += 1;
+
+                if node < MIN_TWO_UNIT_VALUE_LEAD {
+                    pos += node as usize;
+                } else if node < THREE_UNIT_VALUE_LEAD {
+                    pos += (((node - MIN_TWO_UNIT_VALUE_LEAD) as u32) << 16) as usize
+                        | trie_unwrap!(self.trie.get(pos)) as usize;
+                    pos += 1;
+                } else {
+                    pos += ((trie_unwrap!(self.trie.get(pos)) as usize) << 16)
+                        | trie_unwrap!(self.trie.get(pos + 1)) as usize;
+                    pos += 2;
+                }
+                node = trie_unwrap!(self.trie.get(pos));
+                self.pos = Some(pos);
+
+                if node >= MIN_VALUE_LEAD {
+                    return self.value_result(pos);
+                }
+                return TrieResult::NoValue;
+            }
+            length -= 1;
+            pos = trie_unwrap!(self.skip_value(pos + 1));
+            if length <= 1 {
+                break;
+            }
+        }
+
+        if in_unit == trie_unwrap!(self.trie.get(pos)) {
+            pos += 1;
+            self.pos = Some(pos);
+            let node = trie_unwrap!(self.trie.get(pos));
+            if node >= MIN_VALUE_LEAD {
+                return self.value_result(pos);
+            }
+            TrieResult::NoValue
+        } else {
+            self.stop();
+            TrieResult::NoMatch
+        }
+    }
+
+    fn next_impl(&mut self, pos: usize, in_unit: u16) -> TrieResult {
+        let mut node = trie_unwrap!(self.trie.get(pos));
+        let mut pos = pos + 1;
+        loop {
+            if node < MIN_LINEAR_MATCH {
+                return self.branch_next(pos, node as usize, in_unit);
+            } else if node < MIN_VALUE_LEAD {
+                // Match the first of length+1 units.
+                let length = node - MIN_LINEAR_MATCH;
+                if in_unit == trie_unwrap!(self.trie.get(pos)) {
+                    pos += 1;
+                    if length == 0 {
+                        self.remaining_match_length = None;
+                        self.pos = Some(pos);
+                        node = trie_unwrap!(self.trie.get(pos));
+                        if node >= MIN_VALUE_LEAD {
+                            return self.value_result(pos);
+                        }
+                        return TrieResult::NoValue;
+                    }
+                    self.remaining_match_length = Some(length as usize - 1);
+                    self.pos = Some(pos);
+                    return TrieResult::NoValue;
+                }
+                // No match
+                break;
+            } else if (node & VALUE_IS_FINAL) != 0 {
+                // No further matching units.
+                break;
+            } else {
+                // Skip intermediate value.
+                pos = skip_node_value(pos, node);
+                node &= NODE_TYPE_MASK;
+            }
+        }
+        self.stop();
+        TrieResult::NoMatch
+    }
+
+    fn stop(&mut self) {
+        self.pos = None;
+    }
+
+    #[inline(always)] // 1 call site and we want the Option to go away
+    fn jump_by_delta(&self, pos: usize) -> Option<usize> {
+        let delta = self.trie.get(pos)?;
+        let v = if delta < MIN_TWO_UNIT_DELTA_LEAD {
+            // nothing to do
+            pos + 1 + delta as usize
+        } else if delta == THREE_UNIT_DELTA_LEAD {
+            let delta =
+                ((self.trie.get(pos + 1)? as usize) << 16) | (self.trie.get(pos + 2)? as usize);
+            pos + delta + 3
+        } else {
+            let delta = (((delta - MIN_TWO_UNIT_DELTA_LEAD) as usize) << 16)
+                | (self.trie.get(pos + 1)? as usize);
+            pos + delta + 2
+        };
+        Some(v)
+    }
+
+    #[inline(always)] // 1 call site and we want the Option to go away
+    fn skip_value(&self, pos: usize) -> Option<usize> {
+        let lead_unit = self.trie.get(pos)?;
+        Some(skip_value(pos + 1, lead_unit & 0x7fff))
+    }
+
+    #[inline(always)] // 1 call site and we want the Option to go away
+    fn skip_delta(&self, pos: usize) -> Option<usize> {
+        let delta = self.trie.get(pos)?;
+        let v = if delta < MIN_TWO_UNIT_DELTA_LEAD {
+            pos + 1
+        } else if delta == THREE_UNIT_DELTA_LEAD {
+            pos + 3
+        } else {
+            pos + 2
+        };
+        Some(v)
+    }
+
+    fn value_result(&self, pos: usize) -> TrieResult {
+        match self.get_value(pos) {
+            Some(result) => result,
+            None => {
+                // Unexpected
+                debug_assert!(false);
+                TrieResult::NoMatch
+            }
+        }
+    }
+
+    #[inline(always)] // 1 call site and we want the Option to go away
+    fn get_value(&self, pos: usize) -> Option<TrieResult> {
+        let lead_unit = self.trie.get(pos)?;
+        if lead_unit & VALUE_IS_FINAL == VALUE_IS_FINAL {
+            self.read_value(pos + 1, lead_unit & 0x7fff)
+                .map(TrieResult::FinalValue)
+        } else {
+            self.read_node_value(pos + 1, lead_unit)
+                .map(TrieResult::Intermediate)
+        }
+    }
+
+    #[inline(always)] // 1 call site and we want the Option to go away
+    fn read_value(&self, pos: usize, lead_unit: u16) -> Option<i32> {
+        let v = if lead_unit < MIN_TWO_UNIT_VALUE_LEAD {
+            lead_unit.into()
+        } else if lead_unit < THREE_UNIT_VALUE_LEAD {
+            (((lead_unit - MIN_TWO_UNIT_VALUE_LEAD) as i32) << 16) | self.trie.get(pos)? as i32
+        } else {
+            ((self.trie.get(pos)? as i32) << 16) | self.trie.get(pos + 1)? as i32
+        };
+        Some(v)
+    }
+
+    #[inline(always)] // 1 call site and we want the Option to go away
+    fn read_node_value(&self, pos: usize, lead_unit: u16) -> Option<i32> {
+        let v = if lead_unit < (MIN_TWO_UNIT_NODE_VALUE_LEAD) {
+            ((lead_unit >> 6) - 1).into()
+        } else if lead_unit < THREE_UNIT_NODE_VALUE_LEAD {
+            ((((lead_unit & 0x7fc0) - MIN_TWO_UNIT_NODE_VALUE_LEAD) as i32) << 10)
+                | self.trie.get(pos)? as i32
+        } else {
+            ((self.trie.get(pos)? as i32) << 16) | self.trie.get(pos + 1)? as i32
+        };
+        Some(v)
+    }
+}
diff --git a/vendor/icu_collections/src/codepointinvlist/builder.rs b/vendor/icu_collections/src/codepointinvlist/builder.rs
new file mode 100644
index 00000000..f5b019dd
--- /dev/null
+++ b/vendor/icu_collections/src/codepointinvlist/builder.rs
@@ -0,0 +1,986 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use alloc::vec;
+use alloc::vec::Vec;
+use core::{char, cmp::Ordering, ops::RangeBounds};
+use potential_utf::PotentialCodePoint;
+
+use crate::codepointinvlist::{utils::deconstruct_range, CodePointInversionList};
+use zerovec::{ule::AsULE, ZeroVec};
+
+/// A builder for [`CodePointInversionList`].
+///
+/// Provides exposure to builder functions and conversion to [`CodePointInversionList`]
+#[derive(Default)]
+pub struct CodePointInversionListBuilder {
+    // A sorted list of even length, with values <= char::MAX + 1
+    intervals: Vec<u32>,
+}
+
+impl CodePointInversionListBuilder {
+    /// Returns empty [`CodePointInversionListBuilder`]
+    pub const fn new() -> Self {
+        Self { intervals: vec![] }
+    }
+
+    /// Returns a [`CodePointInversionList`] and consumes the [`CodePointInversionListBuilder`]
+    pub fn build(self) -> CodePointInversionList<'static> {
+        let inv_list: ZeroVec<PotentialCodePoint> = self
+            .intervals
+            .into_iter()
+            .map(PotentialCodePoint::from_u24)
+            .collect();
+        #[allow(clippy::unwrap_used)] // by invariant
+        CodePointInversionList::try_from_inversion_list(inv_list).unwrap()
+    }
+
+    /// Abstraction for adding/removing a range from start..end
+    ///
+    /// If add is true add, else remove
+    fn add_remove_middle(&mut self, start: u32, end: u32, add: bool) {
+        if start >= end || end > char::MAX as u32 + 1 {
+            return;
+        }
+        let start_res = self.intervals.binary_search(&start);
+        let end_res = self.intervals.binary_search(&end);
+        let mut start_ind = start_res.unwrap_or_else(|x| x);
+        let mut end_ind = end_res.unwrap_or_else(|x| x);
+        let start_pos_check = (start_ind % 2 == 0) == add;
+        let end_pos_check = (end_ind % 2 == 0) == add;
+        let start_eq_end = start_ind == end_ind;
+
+        #[allow(clippy::indexing_slicing)] // all indices are binary search results
+        if start_eq_end && start_pos_check && end_res.is_err() {
+            self.intervals.splice(start_ind..end_ind, [start, end]);
+        } else {
+            if start_pos_check {
+                self.intervals[start_ind] = start;
+                start_ind += 1;
+            }
+            if end_pos_check {
+                if end_res.is_ok() {
+                    end_ind += 1;
+                } else {
+                    end_ind -= 1;
+                    self.intervals[end_ind] = end;
+                }
+            }
+            if start_ind < end_ind {
+                self.intervals.drain(start_ind..end_ind);
+            }
+        }
+    }
+
+    /// Add the range to the [`CodePointInversionListBuilder`]
+    ///
+    /// Accomplishes this through binary search for the start and end indices and merges intervals
+    /// in between with inplace memory. Performs `O(1)` operation if adding to end of list, and `O(N)` otherwise,
+    /// where `N` is the number of endpoints.
+    fn add(&mut self, start: u32, end: u32) {
+        if start >= end {
+            return;
+        }
+        if self.intervals.is_empty() {
+            self.intervals.extend_from_slice(&[start, end]);
+            return;
+        }
+        self.add_remove_middle(start, end, true);
+    }
+
+    /// Add the character to the [`CodePointInversionListBuilder`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// builder.add_char('a');
+    /// let check = builder.build();
+    /// assert_eq!(check.iter_chars().next(), Some('a'));
+    /// ```
+    pub fn add_char(&mut self, c: char) {
+        let to_add = c as u32;
+        self.add(to_add, to_add + 1);
+    }
+
+    /// Add the code point value to the [`CodePointInversionListBuilder`]
+    ///
+    /// Note: Even though [`u32`] and [`prim@char`] in Rust are non-negative 4-byte
+    /// values, there is an important difference. A [`u32`] can take values up to
+    /// a very large integer value, while a [`prim@char`] in Rust is defined to be in
+    /// the range from 0 to the maximum valid Unicode Scalar Value.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// builder.add32(0x41);
+    /// let check = builder.build();
+    /// assert!(check.contains32(0x41));
+    /// ```
+    pub fn add32(&mut self, c: u32) {
+        if c <= char::MAX as u32 {
+            // we already know 0 <= c  because c: u32
+            self.add(c, c + 1);
+        }
+    }
+
+    /// Add the range of characters to the [`CodePointInversionListBuilder`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// builder.add_range('A'..='Z');
+    /// let check = builder.build();
+    /// assert_eq!(check.iter_chars().next(), Some('A'));
+    /// ```
+    pub fn add_range(&mut self, range: impl RangeBounds<char>) {
+        let (start, end) = deconstruct_range(range);
+        self.add(start, end);
+    }
+
+    /// Add the range of characters, represented as u32, to the [`CodePointInversionListBuilder`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// builder.add_range32(0xd800..=0xdfff);
+    /// let check = builder.build();
+    /// assert!(check.contains32(0xd900));
+    /// ```
+    pub fn add_range32(&mut self, range: impl RangeBounds<u32>) {
+        let (start, end) = deconstruct_range(range);
+        // Sets that include char::MAX need to allow an end value of MAX + 1
+        if start <= end && end <= char::MAX as u32 + 1 {
+            self.add(start, end);
+        }
+    }
+
+    /// Add the [`CodePointInversionList`] reference to the [`CodePointInversionListBuilder`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::{
+    ///     CodePointInversionList, CodePointInversionListBuilder,
+    /// };
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[
+    ///     0x41, 0x4C,
+    /// ])
+    /// .unwrap();
+    /// builder.add_set(&set);
+    /// let check = builder.build();
+    /// assert_eq!(check.iter_chars().next(), Some('A'));
+    /// ```
+    #[allow(unused_assignments)]
+    pub fn add_set(&mut self, set: &CodePointInversionList) {
+        #[allow(clippy::indexing_slicing)] // chunks
+        set.as_inversion_list()
+            .as_ule_slice()
+            .chunks(2)
+            .for_each(|pair| {
+                self.add(
+                    u32::from(PotentialCodePoint::from_unaligned(pair[0])),
+                    u32::from(PotentialCodePoint::from_unaligned(pair[1])),
+                )
+            });
+    }
+
+    /// Removes the range from the [`CodePointInversionListBuilder`]
+    ///
+    /// Performs binary search to find start and end affected intervals, then removes in an `O(N)` fashion
+    /// where `N` is the number of endpoints, with in-place memory.
+    fn remove(&mut self, start: u32, end: u32) {
+        if start >= end || self.intervals.is_empty() {
+            return;
+        }
+        if let Some(&last) = self.intervals.last() {
+            #[allow(clippy::indexing_slicing)]
+            // by invariant, if we have a last we have a (different) first
+            if start <= self.intervals[0] && end >= last {
+                self.intervals.clear();
+            } else {
+                self.add_remove_middle(start, end, false);
+            }
+        }
+    }
+
+    /// Remove the character from the [`CodePointInversionListBuilder`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// builder.add_range('A'..='Z');
+    /// builder.remove_char('A');
+    /// let check = builder.build();
+    /// assert_eq!(check.iter_chars().next(), Some('B'));
+    pub fn remove_char(&mut self, c: char) {
+        self.remove32(c as u32)
+    }
+
+    /// See [`Self::remove_char`]
+    pub fn remove32(&mut self, c: u32) {
+        self.remove(c, c + 1);
+    }
+
+    /// Remove the range of characters from the [`CodePointInversionListBuilder`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// builder.add_range('A'..='Z');
+    /// builder.remove_range('A'..='C');
+    /// let check = builder.build();
+    /// assert_eq!(check.iter_chars().next(), Some('D'));
+    pub fn remove_range(&mut self, range: impl RangeBounds<char>) {
+        let (start, end) = deconstruct_range(range);
+        self.remove(start, end);
+    }
+
+    /// See [`Self::remove_range`]
+    pub fn remove_range32(&mut self, range: impl RangeBounds<u32>) {
+        let (start, end) = deconstruct_range(range);
+        self.remove(start, end);
+    }
+
+    /// Remove the [`CodePointInversionList`] from the [`CodePointInversionListBuilder`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::{CodePointInversionList, CodePointInversionListBuilder};
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[0x41, 0x46]).unwrap();
+    /// builder.add_range('A'..='Z');
+    /// builder.remove_set(&set); // removes 'A'..='E'
+    /// let check = builder.build();
+    /// assert_eq!(check.iter_chars().next(), Some('F'));
+    #[allow(clippy::indexing_slicing)] // chunks
+    pub fn remove_set(&mut self, set: &CodePointInversionList) {
+        set.as_inversion_list()
+            .as_ule_slice()
+            .chunks(2)
+            .for_each(|pair| {
+                self.remove(
+                    u32::from(PotentialCodePoint::from_unaligned(pair[0])),
+                    u32::from(PotentialCodePoint::from_unaligned(pair[1])),
+                )
+            });
+    }
+
+    /// Retain the specified character in the [`CodePointInversionListBuilder`] if it exists
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// builder.add_range('A'..='Z');
+    /// builder.retain_char('A');
+    /// let set = builder.build();
+    /// let mut check = set.iter_chars();
+    /// assert_eq!(check.next(), Some('A'));
+    /// assert_eq!(check.next(), None);
+    /// ```
+    pub fn retain_char(&mut self, c: char) {
+        self.retain32(c as u32)
+    }
+
+    /// See [`Self::retain_char`]
+    pub fn retain32(&mut self, c: u32) {
+        self.remove(0, c);
+        self.remove(c + 1, (char::MAX as u32) + 1);
+    }
+
+    /// Retain the range of characters located within the [`CodePointInversionListBuilder`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// builder.add_range('A'..='Z');
+    /// builder.retain_range('A'..='B');
+    /// let set = builder.build();
+    /// let mut check = set.iter_chars();
+    /// assert_eq!(check.next(), Some('A'));
+    /// assert_eq!(check.next(), Some('B'));
+    /// assert_eq!(check.next(), None);
+    /// ```
+    pub fn retain_range(&mut self, range: impl RangeBounds<char>) {
+        let (start, end) = deconstruct_range(range);
+        self.remove(0, start);
+        self.remove(end, (char::MAX as u32) + 1);
+    }
+
+    /// See [`Self::retain_range`]
+    pub fn retain_range32(&mut self, range: impl RangeBounds<u32>) {
+        let (start, end) = deconstruct_range(range);
+        self.remove(0, start);
+        self.remove(end, (char::MAX as u32) + 1);
+    }
+
+    /// Retain the elements in the specified set within the [`CodePointInversionListBuilder`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::{
+    ///     CodePointInversionList, CodePointInversionListBuilder,
+    /// };
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// let set =
+    ///     CodePointInversionList::try_from_u32_inversion_list_slice(&[65, 70])
+    ///         .unwrap();
+    /// builder.add_range('A'..='Z');
+    /// builder.retain_set(&set); // retains 'A'..='E'
+    /// let check = builder.build();
+    /// assert!(check.contains('A'));
+    /// assert!(!check.contains('G'));
+    /// ```
+    #[allow(clippy::indexing_slicing)] // chunks
+    pub fn retain_set(&mut self, set: &CodePointInversionList) {
+        let mut prev = 0;
+        for pair in set.as_inversion_list().as_ule_slice().chunks(2) {
+            let range_start = u32::from(PotentialCodePoint::from_unaligned(pair[0]));
+            let range_limit = u32::from(PotentialCodePoint::from_unaligned(pair[1]));
+            self.remove(prev, range_start);
+            prev = range_limit;
+        }
+        self.remove(prev, (char::MAX as u32) + 1);
+    }
+
+    /// Computes the complement of the argument, adding any elements that do not yet exist in the builder,
+    /// and removing any elements that already exist in the builder. See public functions for examples.
+    ///
+    /// Performs in `O(B + S)`, where `B` is the number of endpoints in the Builder, and `S` is the number
+    /// of endpoints in the argument.
+    fn complement_list(&mut self, set_iter: impl IntoIterator<Item = u32>) {
+        let mut res: Vec<u32> = vec![]; // not the biggest fan of having to allocate new memory
+        let mut ai = self.intervals.iter();
+        let mut bi = set_iter.into_iter();
+        let mut a = ai.next();
+        let mut b = bi.next();
+        while let (Some(c), Some(d)) = (a, b) {
+            match c.cmp(&d) {
+                Ordering::Less => {
+                    res.push(*c);
+                    a = ai.next();
+                }
+                Ordering::Greater => {
+                    res.push(d);
+                    b = bi.next();
+                }
+                Ordering::Equal => {
+                    a = ai.next();
+                    b = bi.next();
+                }
+            }
+        }
+        if let Some(c) = a {
+            res.push(*c)
+        }
+        if let Some(d) = b {
+            res.push(d)
+        }
+        res.extend(ai);
+        res.extend(bi);
+        self.intervals = res;
+    }
+
+    /// Computes the complement of the builder, inverting the builder (any elements in the builder are removed,
+    /// while any elements not in the builder are added)
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::{
+    ///     CodePointInversionList, CodePointInversionListBuilder,
+    /// };
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[
+    ///     0x0,
+    ///     0x41,
+    ///     0x46,
+    ///     (std::char::MAX as u32) + 1,
+    /// ])
+    /// .unwrap();
+    /// builder.add_set(&set);
+    /// builder.complement();
+    /// let check = builder.build();
+    /// assert_eq!(check.iter_chars().next(), Some('A'));
+    /// ```
+    pub fn complement(&mut self) {
+        if !self.intervals.is_empty() {
+            #[allow(clippy::indexing_slicing)] // by invariant
+            if self.intervals[0] == 0 {
+                self.intervals.drain(0..1);
+            } else {
+                self.intervals.insert(0, 0);
+            }
+            if self.intervals.last() == Some(&(char::MAX as u32 + 1)) {
+                self.intervals.pop();
+            } else {
+                self.intervals.push(char::MAX as u32 + 1);
+            }
+        } else {
+            self.intervals
+                .extend_from_slice(&[0, (char::MAX as u32 + 1)]);
+        }
+    }
+
+    /// Complements the character in the builder, adding it if not in the builder, and removing it otherwise.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// builder.add_range('A'..='D');
+    /// builder.complement_char('A');
+    /// builder.complement_char('E');
+    /// let check = builder.build();
+    /// assert!(check.contains('E'));
+    /// assert!(!check.contains('A'));
+    /// ```
+    pub fn complement_char(&mut self, c: char) {
+        self.complement32(c as u32);
+    }
+
+    /// See [`Self::complement_char`]
+    pub fn complement32(&mut self, c: u32) {
+        self.complement_list([c, c + 1]);
+    }
+
+    /// Complements the range in the builder, adding any elements in the range if not in the builder, and
+    /// removing them otherwise.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// builder.add_range('A'..='D');
+    /// builder.complement_range('C'..='F');
+    /// let check = builder.build();
+    /// assert!(check.contains('F'));
+    /// assert!(!check.contains('C'));
+    /// ```
+    pub fn complement_range(&mut self, range: impl RangeBounds<char>) {
+        let (start, end) = deconstruct_range(range);
+        self.complement_list([start, end]);
+    }
+
+    /// See [`Self::complement_range`]
+    pub fn complement_range32(&mut self, range: impl RangeBounds<u32>) {
+        let (start, end) = deconstruct_range(range);
+        self.complement_list([start, end]);
+    }
+
+    /// Complements the set in the builder, adding any elements in the set if not in the builder, and
+    /// removing them otherwise.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::{
+    ///     CodePointInversionList, CodePointInversionListBuilder,
+    /// };
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// let set = CodePointInversionList::try_from_u32_inversion_list_slice(&[
+    ///     0x41, 0x46, 0x4B, 0x5A,
+    /// ])
+    /// .unwrap();
+    /// builder.add_range('C'..='N'); // 67 - 78
+    /// builder.complement_set(&set);
+    /// let check = builder.build();
+    /// assert!(check.contains('Q')); // 81
+    /// assert!(!check.contains('N')); // 78
+    /// ```
+    pub fn complement_set(&mut self, set: &CodePointInversionList) {
+        let inv_list_iter_owned = set.as_inversion_list().iter().map(u32::from);
+        self.complement_list(inv_list_iter_owned);
+    }
+
+    /// Returns whether the build is empty.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    /// let mut builder = CodePointInversionListBuilder::new();
+    /// let check = builder.build();
+    /// assert!(check.is_empty());
+    /// ```
+    pub fn is_empty(&self) -> bool {
+        self.intervals.is_empty()
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::{CodePointInversionList, CodePointInversionListBuilder};
+    use core::char;
+
+    fn generate_tester(ex: &[u32]) -> CodePointInversionListBuilder {
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(ex).unwrap();
+        let mut builder = CodePointInversionListBuilder::new();
+        builder.add_set(&check);
+        builder
+    }
+
+    #[test]
+    fn test_new() {
+        let ex = CodePointInversionListBuilder::new();
+        assert!(ex.intervals.is_empty());
+    }
+
+    #[test]
+    fn test_build() {
+        let mut builder = CodePointInversionListBuilder::new();
+        builder.add(0x41, 0x42);
+        let check: CodePointInversionList = builder.build();
+        assert_eq!(check.iter_chars().next(), Some('A'));
+    }
+
+    #[test]
+    fn test_empty_build() {
+        let builder = CodePointInversionListBuilder::new();
+        let check: CodePointInversionList = builder.build();
+        assert!(check.is_empty());
+    }
+
+    #[test]
+    fn test_add_to_empty() {
+        let mut builder = CodePointInversionListBuilder::new();
+        builder.add(0x0, 0xA);
+        assert_eq!(builder.intervals, [0x0, 0xA]);
+    }
+
+    #[test]
+    fn test_add_invalid() {
+        let mut builder = CodePointInversionListBuilder::new();
+        builder.add(0x0, 0x0);
+        builder.add(0x5, 0x0);
+        assert!(builder.intervals.is_empty());
+    }
+
+    #[test]
+    fn test_add_to_start() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x0, 0x5);
+        let expected = [0x0, 0x5, 0xA, 0x14, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_to_start_overlap() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x0, 0xE);
+        let expected = [0x0, 0x14, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_to_end() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x3C, 0x46);
+        let expected = [0xA, 0x14, 0x28, 0x32, 60, 70];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_to_end_overlap() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x2B, 0x46);
+        let expected = [0xA, 0x14, 0x28, 0x46];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_to_middle_no_overlap() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x19, 0x1B);
+        let expected = [0xA, 0x14, 0x19, 0x1B, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_to_middle_inside() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0xA, 0x14);
+        let expected = [0xA, 0x14, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_to_middle_left_overlap() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0xF, 0x19);
+        let expected = [0xA, 0x19, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_to_middle_right_overlap() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x1E, 0x28);
+        let expected = [0xA, 0x14, 0x1E, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_to_full_encompass() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x0, 0x3C);
+        let expected = [0x0, 0x3C];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_to_partial_encompass() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x0, 0x23);
+        let expected = [0x0, 0x23, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_aligned_front() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(5, 10);
+        let expected = [5, 0x14, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_aligned_back() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x32, 0x37);
+        let expected = [0xA, 0x14, 0x28, 0x37];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_aligned_start_middle() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x14, 0x19);
+        let expected = [0xA, 0x19, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_aligned_end_middle() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x23, 0x28);
+        let expected = [0xA, 0x14, 0x23, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_aligned_in_between_end() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x1E, 0x28, 0x32, 0x3C]);
+        builder.add(0xF, 0x1E);
+        let expected = [0xA, 0x28, 0x32, 0x3C];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_aligned_in_between_start() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x1E, 0x28, 0x32, 0x3C]);
+        builder.add(20, 35);
+        let expected = [0xA, 0x28, 0x32, 0x3C];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_adjacent_ranges() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.add(0x13, 0x14);
+        builder.add(0x14, 0x15);
+        builder.add(0x15, 0x16);
+        let expected = [0xA, 0x16, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_codepointinversionlist() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&[
+            0x5, 0xA, 0x16, 0x21, 0x2C, 0x33,
+        ])
+        .unwrap();
+        builder.add_set(&check);
+        let expected = [0x5, 0x14, 0x16, 0x21, 0x28, 0x33];
+        assert_eq!(builder.intervals, expected);
+    }
+    #[test]
+    fn test_add_char() {
+        let mut builder = CodePointInversionListBuilder::new();
+        builder.add_char('a');
+        let expected = [0x61, 0x62];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_range() {
+        let mut builder = CodePointInversionListBuilder::new();
+        builder.add_range('A'..='Z');
+        let expected = [0x41, 0x5B];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_range32() {
+        let mut builder = CodePointInversionListBuilder::new();
+        builder.add_range32(0xd800..=0xdfff);
+        let expected = [0xd800, 0xe000];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_add_invalid_range() {
+        let mut builder = CodePointInversionListBuilder::new();
+        builder.add_range('Z'..='A');
+        assert!(builder.intervals.is_empty());
+    }
+
+    #[test]
+    fn test_remove_empty() {
+        let mut builder = CodePointInversionListBuilder::new();
+        builder.remove(0x0, 0xA);
+        assert!(builder.intervals.is_empty());
+    }
+
+    #[test]
+    fn test_remove_entire_builder() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.remove(0xA, 0x32);
+        assert!(builder.intervals.is_empty());
+    }
+
+    #[test]
+    fn test_remove_entire_range() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.remove(0xA, 0x14);
+        let expected = [0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_remove_partial_range_left() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.remove(0xA, 0x2B);
+        let expected = [0x2B, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_remove_ne_range() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.remove(0x14, 0x28);
+        let expected = [0xA, 0x14, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_remove_partial_range_right() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.remove(0xF, 0x37);
+        let expected = [0xA, 0xF];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_remove_middle_range() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.remove(0xC, 0x12);
+        let expected = [0xA, 0xC, 0x12, 0x14, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_remove_ne_middle_range() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.remove(0x19, 0x1B);
+        let expected = [0xA, 0x14, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_remove_encompassed_range() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32, 70, 80]);
+        builder.remove(0x19, 0x37);
+        let expected = [0xA, 0x14, 0x46, 0x50];
+        assert_eq!(builder.intervals, expected);
+    }
+    #[test]
+    fn test_remove_adjacent_ranges() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.remove(0x27, 0x28);
+        builder.remove(0x28, 0x29);
+        builder.remove(0x29, 0x2A);
+        let expected = [0xA, 0x14, 0x2A, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_remove_char() {
+        let mut builder = generate_tester(&[0x41, 0x46]);
+        builder.remove_char('A'); // 65
+        let expected = [0x42, 0x46];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_remove_range() {
+        let mut builder = generate_tester(&[0x41, 0x5A]);
+        builder.remove_range('A'..'L'); // 65 - 76
+        let expected = [0x4C, 0x5A];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_remove_set() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32, 70, 80]);
+        let remove =
+            CodePointInversionList::try_from_u32_inversion_list_slice(&[0xA, 0x14, 0x2D, 0x4B])
+                .unwrap();
+        builder.remove_set(&remove);
+        let expected = [0x28, 0x2D, 0x4B, 0x50];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_retain_char() {
+        let mut builder = generate_tester(&[0x41, 0x5A]);
+        builder.retain_char('A'); // 65
+        let expected = [0x41, 0x42];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_retain_range() {
+        let mut builder = generate_tester(&[0x41, 0x5A]);
+        builder.retain_range('C'..'F'); // 67 - 70
+        let expected = [0x43, 0x46];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_retain_range_empty() {
+        let mut builder = generate_tester(&[0x41, 0x46]);
+        builder.retain_range('F'..'Z');
+        assert!(builder.intervals.is_empty());
+    }
+
+    #[test]
+    fn test_retain_set() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32, 70, 80]);
+        let retain = CodePointInversionList::try_from_u32_inversion_list_slice(&[
+            0xE, 0x14, 0x19, 0x37, 0x4D, 0x51,
+        ])
+        .unwrap();
+        builder.retain_set(&retain);
+        let expected = [0xE, 0x14, 0x28, 0x32, 0x4D, 0x50];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_complement() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.complement();
+        let expected = [0x0, 0xA, 0x14, 0x28, 0x32, (char::MAX as u32) + 1];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_complement_empty() {
+        let mut builder = generate_tester(&[]);
+        builder.complement();
+        let expected = [0x0, (char::MAX as u32) + 1];
+        assert_eq!(builder.intervals, expected);
+
+        builder.complement();
+        let expected: [u32; 0] = [];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_complement_zero_max() {
+        let mut builder = generate_tester(&[0x0, 0xA, 0x5A, (char::MAX as u32) + 1]);
+        builder.complement();
+        let expected = [0xA, 0x5A];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_complement_interior() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.complement_list([0xE, 0x14]);
+        let expected = [0xA, 0xE, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_complement_exterior() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.complement_list([0x19, 0x23]);
+        let expected = [0xA, 0x14, 0x19, 0x23, 0x28, 0x32];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_complement_larger_list() {
+        let mut builder = generate_tester(&[0xA, 0x14, 0x28, 0x32]);
+        builder.complement_list([0x1E, 0x37, 0x3C, 0x46]);
+        let expected = [0xA, 0x14, 0x1E, 0x28, 0x32, 0x37, 0x3C, 0x46];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_complement_char() {
+        let mut builder = generate_tester(&[0x41, 0x4C]); // A - K
+        builder.complement_char('A');
+        builder.complement_char('L');
+        let expected = [0x42, 0x4D];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_complement_range() {
+        let mut builder = generate_tester(&[0x46, 0x4C]); // F - K
+        builder.complement_range('A'..='Z');
+        let expected = [0x41, 0x46, 0x4C, 0x5B];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_complement_set() {
+        let mut builder = generate_tester(&[0x43, 0x4E]);
+        let set =
+            CodePointInversionList::try_from_u32_inversion_list_slice(&[0x41, 0x46, 0x4B, 0x5A])
+                .unwrap();
+        builder.complement_set(&set);
+        let expected = [0x41, 0x43, 0x46, 0x4B, 0x4E, 0x5A];
+        assert_eq!(builder.intervals, expected);
+    }
+
+    #[test]
+    fn test_is_empty() {
+        let builder = CodePointInversionListBuilder::new();
+        assert!(builder.is_empty());
+    }
+}
diff --git a/vendor/icu_collections/src/codepointinvlist/conversions.rs b/vendor/icu_collections/src/codepointinvlist/conversions.rs
new file mode 100644
index 00000000..9e4cb380
--- /dev/null
+++ b/vendor/icu_collections/src/codepointinvlist/conversions.rs
@@ -0,0 +1,180 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::iter::FromIterator;
+use core::{
+    convert::TryFrom,
+    ops::{Range, RangeBounds, RangeFrom, RangeFull, RangeInclusive, RangeTo, RangeToInclusive},
+};
+
+use super::RangeError;
+use crate::codepointinvlist::utils::deconstruct_range;
+use crate::codepointinvlist::CodePointInversionList;
+use crate::codepointinvlist::CodePointInversionListBuilder;
+use potential_utf::PotentialCodePoint;
+use zerovec::ZeroVec;
+
+fn try_from_range<'data>(
+    range: impl RangeBounds<char>,
+) -> Result<CodePointInversionList<'data>, RangeError> {
+    let (from, till) = deconstruct_range(range);
+    if from < till {
+        let set = [
+            PotentialCodePoint::from_u24(from),
+            PotentialCodePoint::from_u24(till),
+        ];
+        let inv_list: ZeroVec<PotentialCodePoint> = ZeroVec::alloc_from_slice(&set);
+        #[allow(clippy::unwrap_used)] // valid
+        Ok(CodePointInversionList::try_from_inversion_list(inv_list).unwrap())
+    } else {
+        Err(RangeError(from, till))
+    }
+}
+
+impl TryFrom<Range<char>> for CodePointInversionList<'_> {
+    type Error = RangeError;
+
+    fn try_from(range: Range<char>) -> Result<Self, Self::Error> {
+        try_from_range(range)
+    }
+}
+
+impl TryFrom<RangeFrom<char>> for CodePointInversionList<'_> {
+    type Error = RangeError;
+
+    fn try_from(range: RangeFrom<char>) -> Result<Self, Self::Error> {
+        try_from_range(range)
+    }
+}
+
+impl TryFrom<RangeFull> for CodePointInversionList<'_> {
+    type Error = RangeError;
+
+    fn try_from(_: RangeFull) -> Result<Self, Self::Error> {
+        Ok(Self::all())
+    }
+}
+
+impl TryFrom<RangeInclusive<char>> for CodePointInversionList<'_> {
+    type Error = RangeError;
+
+    fn try_from(range: RangeInclusive<char>) -> Result<Self, Self::Error> {
+        try_from_range(range)
+    }
+}
+
+impl TryFrom<RangeTo<char>> for CodePointInversionList<'_> {
+    type Error = RangeError;
+
+    fn try_from(range: RangeTo<char>) -> Result<Self, Self::Error> {
+        try_from_range(range)
+    }
+}
+
+impl TryFrom<RangeToInclusive<char>> for CodePointInversionList<'_> {
+    type Error = RangeError;
+
+    fn try_from(range: RangeToInclusive<char>) -> Result<Self, Self::Error> {
+        try_from_range(range)
+    }
+}
+
+impl FromIterator<RangeInclusive<u32>> for CodePointInversionList<'_> {
+    fn from_iter<I: IntoIterator<Item = RangeInclusive<u32>>>(iter: I) -> Self {
+        let mut builder = CodePointInversionListBuilder::new();
+        for range in iter {
+            builder.add_range32(range);
+        }
+        builder.build()
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::codepointinvlist::CodePointInversionList;
+    use core::{char, convert::TryFrom};
+
+    #[test]
+    fn test_try_from_range() {
+        let check: Vec<char> = CodePointInversionList::try_from('A'..'B')
+            .unwrap()
+            .iter_chars()
+            .collect();
+        assert_eq!(vec!['A'], check);
+    }
+
+    #[test]
+    fn test_try_from_range_error() {
+        let check = CodePointInversionList::try_from('A'..'A');
+        assert!(matches!(check, Err(RangeError(65, 65))));
+    }
+
+    #[test]
+    fn test_try_from_range_inclusive() {
+        let check: Vec<char> = CodePointInversionList::try_from('A'..='A')
+            .unwrap()
+            .iter_chars()
+            .collect();
+        assert_eq!(vec!['A'], check);
+    }
+
+    #[test]
+    fn test_try_from_range_inclusive_err() {
+        let check = CodePointInversionList::try_from('B'..'A');
+        assert!(matches!(check, Err(RangeError(66, 65))));
+    }
+
+    #[test]
+    fn test_try_from_range_from() {
+        let uset = CodePointInversionList::try_from('A'..).unwrap();
+        let check: usize = uset.size();
+        let expected: usize = (char::MAX as usize) + 1 - 65;
+        assert_eq!(expected, check);
+    }
+
+    #[test]
+    fn test_try_from_range_to() {
+        let uset = CodePointInversionList::try_from(..'A').unwrap();
+        let check: usize = uset.size();
+        let expected: usize = 65;
+        assert_eq!(expected, check);
+    }
+
+    #[test]
+    fn test_try_from_range_to_err() {
+        let check = CodePointInversionList::try_from(..(0x0 as char));
+        assert!(matches!(check, Err(RangeError(0, 0))));
+    }
+
+    #[test]
+    fn test_try_from_range_to_inclusive() {
+        let uset = CodePointInversionList::try_from(..='A').unwrap();
+        let check: usize = uset.size();
+        let expected: usize = 66;
+        assert_eq!(expected, check);
+    }
+
+    #[test]
+    fn test_try_from_range_full() {
+        let uset = CodePointInversionList::try_from(..).unwrap();
+        let check: usize = uset.size();
+        let expected: usize = (char::MAX as usize) + 1;
+        assert_eq!(expected, check);
+    }
+
+    #[test]
+    fn test_from_range_iterator() {
+        let ranges = [
+            0..=0x3FFF,
+            0x4000..=0x7FFF,
+            0x8000..=0xBFFF,
+            0xC000..=0xFFFF,
+        ];
+        let expected =
+            CodePointInversionList::try_from_u32_inversion_list_slice(&[0x0, 0x1_0000]).unwrap();
+        let actual = CodePointInversionList::from_iter(ranges);
+        assert_eq!(expected, actual);
+    }
+}
diff --git a/vendor/icu_collections/src/codepointinvlist/cpinvlist.rs b/vendor/icu_collections/src/codepointinvlist/cpinvlist.rs
new file mode 100644
index 00000000..3b63ff36
--- /dev/null
+++ b/vendor/icu_collections/src/codepointinvlist/cpinvlist.rs
@@ -0,0 +1,1064 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "serde")]
+use alloc::format;
+#[cfg(feature = "serde")]
+use alloc::string::String;
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+use core::{char, ops::RangeBounds, ops::RangeInclusive};
+use potential_utf::PotentialCodePoint;
+use yoke::Yokeable;
+use zerofrom::ZeroFrom;
+use zerovec::{ule::AsULE, zerovec, ZeroVec};
+
+use super::InvalidSetError;
+use crate::codepointinvlist::utils::{deconstruct_range, is_valid_zv};
+
+/// Represents the end code point of the Basic Multilingual Plane range, starting from code point 0, inclusive
+const BMP_MAX: u32 = 0xFFFF;
+
+/// Represents the inversion list for a set of all code points in the Basic Multilingual Plane.
+const BMP_INV_LIST_VEC: ZeroVec<PotentialCodePoint> = zerovec!(PotentialCodePoint; PotentialCodePoint::to_unaligned; [PotentialCodePoint::from_u24(0x0), PotentialCodePoint::from_u24(BMP_MAX + 1)]);
+
+/// Represents the inversion list for all of the code points in the Unicode range.
+const ALL_VEC: ZeroVec<PotentialCodePoint> = zerovec!(PotentialCodePoint; PotentialCodePoint::to_unaligned; [PotentialCodePoint::from_u24(0x0), PotentialCodePoint::from_u24((char::MAX as u32) + 1)]);
+
+/// A membership wrapper for [`CodePointInversionList`].
+///
+/// Provides exposure to membership functions and constructors from serialized `CodePointSet`s (sets of code points)
+/// and predefined ranges.
+#[zerovec::make_varule(CodePointInversionListULE)]
+#[zerovec::skip_derive(Ord)]
+#[zerovec::derive(Debug)]
+#[derive(Debug, Eq, PartialEq, Clone, Yokeable, ZeroFrom)]
+#[cfg_attr(not(feature = "alloc"), zerovec::skip_derive(ZeroMapKV, ToOwned))]
+pub struct CodePointInversionList<'data> {
+    // If we wanted to use an array to keep the memory on the stack, there is an unsafe nightly feature
+    // https://doc.rust-lang.org/nightly/core/array/trait.FixedSizeArray.html
+    // Allows for traits of fixed size arrays
+
+    // Implements an [inversion list.](https://en.wikipedia.org/wiki/Inversion_list)
+    inv_list: ZeroVec<'data, PotentialCodePoint>,
+    size: u32,
+}
+
+#[cfg(feature = "serde")]
+impl<'de: 'a, 'a> serde::Deserialize<'de> for CodePointInversionList<'a> {
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: serde::Deserializer<'de>,
+    {
+        use serde::de::Error;
+
+        let parsed_inv_list = if deserializer.is_human_readable() {
+            let parsed_strings = Vec::<alloc::borrow::Cow<'de, str>>::deserialize(deserializer)?;
+            let mut inv_list = ZeroVec::new_owned(Vec::with_capacity(parsed_strings.len() * 2));
+            for range in parsed_strings {
+                fn internal(range: &str) -> Option<(u32, u32)> {
+                    let (start, range) = UnicodeCodePoint::parse(range)?;
+                    if range.is_empty() {
+                        return Some((start.0, start.0));
+                    }
+                    let (hyphen, range) = UnicodeCodePoint::parse(range)?;
+                    if hyphen.0 != '-' as u32 {
+                        return None;
+                    }
+                    let (end, range) = UnicodeCodePoint::parse(range)?;
+                    range.is_empty().then_some((start.0, end.0))
+                }
+                let (start, end) = internal(&range).ok_or_else(|| Error::custom(format!(
+                    "Cannot deserialize invalid inversion list for CodePointInversionList: {range:?}"
+                )))?;
+                inv_list.with_mut(|v| {
+                    v.push(PotentialCodePoint::from_u24(start).to_unaligned());
+                    v.push(PotentialCodePoint::from_u24(end + 1).to_unaligned());
+                });
+            }
+            inv_list
+        } else {
+            ZeroVec::<PotentialCodePoint>::deserialize(deserializer)?
+        };
+        CodePointInversionList::try_from_inversion_list(parsed_inv_list).map_err(|e| {
+            Error::custom(format!(
+                "Cannot deserialize invalid inversion list for CodePointInversionList: {e:?}"
+            ))
+        })
+    }
+}
+
+#[cfg(feature = "databake")]
+impl databake::Bake for CodePointInversionList<'_> {
+    fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+        env.insert("icu_collections");
+        let inv_list = self.inv_list.bake(env);
+        let size = self.size.bake(env);
+        // Safe because our parts are safe.
+        databake::quote! { unsafe {
+            #[allow(unused_unsafe)]
+            icu_collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(#inv_list, #size)
+        }}
+    }
+}
+
+#[cfg(feature = "databake")]
+impl databake::BakeSize for CodePointInversionList<'_> {
+    fn borrows_size(&self) -> usize {
+        self.inv_list.borrows_size()
+    }
+}
+
+#[cfg(feature = "serde")]
+#[derive(Debug, Copy, Clone)]
+struct UnicodeCodePoint(u32);
+
+#[cfg(feature = "serde")]
+impl UnicodeCodePoint {
+    fn from_u32(cp: u32) -> Result<Self, String> {
+        if cp <= char::MAX as u32 {
+            Ok(Self(cp))
+        } else {
+            Err(format!("Not a Unicode code point {}", cp))
+        }
+    }
+
+    fn parse(value: &str) -> Option<(Self, &str)> {
+        Some(if let Some(hex) = value.strip_prefix("U+") {
+            let (escape, remainder) = (hex.get(..4)?, hex.get(4..)?);
+            (Self(u32::from_str_radix(escape, 16).ok()?), remainder)
+        } else {
+            let c = value.chars().next()?;
+            (Self(c as u32), value.get(c.len_utf8()..)?)
+        })
+    }
+}
+
+#[cfg(feature = "serde")]
+impl core::fmt::Display for UnicodeCodePoint {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        match self.0 {
+            s @ 0xD800..=0xDFFF => write!(f, "U+{s:X}"),
+            // char should be in range by construction but this code is not so performance-sensitive
+            // so we just use the replacement character
+            c => write!(
+                f,
+                "{}",
+                char::from_u32(c).unwrap_or(char::REPLACEMENT_CHARACTER)
+            ),
+        }
+    }
+}
+
+#[cfg(feature = "serde")]
+impl serde::Serialize for CodePointInversionList<'_> {
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: serde::Serializer,
+    {
+        if serializer.is_human_readable() {
+            use serde::ser::Error;
+            use serde::ser::SerializeSeq;
+            let mut seq = serializer.serialize_seq(Some(self.inv_list.len() / 2))?;
+            for range in self.iter_ranges() {
+                let start = UnicodeCodePoint::from_u32(*range.start()).map_err(S::Error::custom)?;
+                if range.start() == range.end() {
+                    seq.serialize_element(&format!("{start}"))?;
+                } else {
+                    let end = UnicodeCodePoint::from_u32(*range.end()).map_err(S::Error::custom)?;
+                    seq.serialize_element(&format!("{start}-{end}",))?;
+                }
+            }
+            seq.end()
+        } else {
+            // Note: serde(flatten) currently does not promote a struct field of type Vec
+            // to replace the struct when serializing. The error message from the default
+            // serialization is: "can only flatten structs and maps (got a sequence)".
+            self.inv_list.serialize(serializer)
+        }
+    }
+}
+
+impl<'data> CodePointInversionList<'data> {
+    /// Returns a new [`CodePointInversionList`] from an [inversion list](https://en.wikipedia.org/wiki/Inversion_list)
+    /// represented as a [`ZeroVec`]`<`[`PotentialCodePoint`]`>` of code points.
+    ///
+    /// The inversion list must be of even length, sorted ascending non-overlapping,
+    /// and within the bounds of `0x0 -> 0x10FFFF` inclusive, and end points being exclusive.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// use icu::collections::codepointinvlist::InvalidSetError;
+    /// use potential_utf::PotentialCodePoint;
+    /// use zerovec::ZeroVec;
+    ///
+    /// let valid = [0x0, 0x10000];
+    /// let inv_list: ZeroVec<PotentialCodePoint> = valid
+    ///     .into_iter()
+    ///     .map(PotentialCodePoint::from_u24)
+    ///     .collect();
+    /// let result = CodePointInversionList::try_from_inversion_list(inv_list);
+    /// assert!(matches!(result, CodePointInversionList));
+    ///
+    /// let invalid = vec![0x0, 0x80, 0x3];
+    /// let inv_list: ZeroVec<PotentialCodePoint> = invalid
+    ///     .iter()
+    ///     .copied()
+    ///     .map(PotentialCodePoint::from_u24)
+    ///     .collect();
+    /// let result = CodePointInversionList::try_from_inversion_list(inv_list);
+    /// assert!(matches!(result, Err(InvalidSetError(_))));
+    /// if let Err(InvalidSetError(actual)) = result {
+    ///     assert_eq!(
+    ///         &invalid,
+    ///         &actual.into_iter().map(u32::from).collect::<Vec<_>>()
+    ///     );
+    /// }
+    /// ```
+    pub fn try_from_inversion_list(
+        inv_list: ZeroVec<'data, PotentialCodePoint>,
+    ) -> Result<Self, InvalidSetError> {
+        #[allow(clippy::indexing_slicing)] // chunks
+        if is_valid_zv(&inv_list) {
+            let size = inv_list
+                .as_ule_slice()
+                .chunks(2)
+                .map(|end_points| {
+                    u32::from(<PotentialCodePoint as AsULE>::from_unaligned(end_points[1]))
+                        - u32::from(<PotentialCodePoint as AsULE>::from_unaligned(end_points[0]))
+                })
+                .sum::<u32>();
+            Ok(Self { inv_list, size })
+        } else {
+            Err(InvalidSetError(
+                #[cfg(feature = "alloc")]
+                inv_list.to_vec(),
+            ))
+        }
+    }
+
+    /// Safety: no actual safety invariants, however has correctness invariants
+    #[doc(hidden)] // databake internal
+    pub const unsafe fn from_parts_unchecked(
+        inv_list: ZeroVec<'data, PotentialCodePoint>,
+        size: u32,
+    ) -> Self {
+        Self { inv_list, size }
+    }
+
+    /// Returns a new, fully-owned [`CodePointInversionList`] by cloning an [inversion list](https://en.wikipedia.org/wiki/Inversion_list)
+    /// represented as a slice of [`PotentialCodePoint`] code points.
+    ///
+    /// The inversion list must be of even length, sorted ascending non-overlapping,
+    /// and within the bounds of `0x0 -> 0x10FFFF` inclusive, and end points being exclusive.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    ///
+    /// let bmp_list = &[0x0, 0x10000];
+    /// let smp_list = &[0x10000, 0x20000];
+    /// let sip_list = &[0x20000, 0x30000];
+    ///
+    /// let lists: Vec<CodePointInversionList> =
+    ///     [&bmp_list[..], smp_list, sip_list]
+    ///         .into_iter()
+    ///         .map(|l| {
+    ///             CodePointInversionList::try_from_u32_inversion_list_slice(l)
+    ///                 .unwrap()
+    ///         })
+    ///         .collect();
+    ///
+    /// let bmp = &lists[0];
+    /// assert!(bmp.contains32(0xFFFF));
+    /// assert!(!bmp.contains32(0x10000));
+    ///
+    /// assert!(!lists.iter().any(|set| set.contains32(0x40000)));
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn try_from_u32_inversion_list_slice(inv_list: &[u32]) -> Result<Self, InvalidSetError> {
+        let inv_list_zv: ZeroVec<PotentialCodePoint> = inv_list
+            .iter()
+            .copied()
+            .map(PotentialCodePoint::from_u24)
+            .collect();
+        CodePointInversionList::try_from_inversion_list(inv_list_zv)
+    }
+
+    /// Attempts to convert this list into a fully-owned one. No-op if already fully owned
+    #[cfg(feature = "alloc")]
+    pub fn into_owned(self) -> CodePointInversionList<'static> {
+        CodePointInversionList {
+            inv_list: self.inv_list.into_owned(),
+            size: self.size,
+        }
+    }
+
+    /// Returns an owned inversion list representing the current [`CodePointInversionList`]
+    #[cfg(feature = "alloc")]
+    pub fn get_inversion_list_vec(&self) -> Vec<u32> {
+        self.as_inversion_list().iter().map(u32::from).collect()
+    }
+
+    /// Returns [`CodePointInversionList`] spanning entire Unicode range
+    ///
+    /// The range spans from `0x0 -> 0x10FFFF` inclusive.
+    ///  
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    ///
+    /// let expected = [0x0, (char::MAX as u32) + 1];
+    /// assert_eq!(
+    ///     CodePointInversionList::all().get_inversion_list_vec(),
+    ///     expected
+    /// );
+    /// assert_eq!(
+    ///     CodePointInversionList::all().size(),
+    ///     (expected[1] - expected[0]) as usize
+    /// );
+    /// ```
+    pub fn all() -> Self {
+        Self {
+            inv_list: ALL_VEC,
+            size: (char::MAX as u32) + 1,
+        }
+    }
+
+    /// Returns [`CodePointInversionList`] spanning BMP range
+    ///
+    /// The range spans from `0x0 -> 0xFFFF` inclusive.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    ///
+    /// const BMP_MAX: u32 = 0xFFFF;
+    ///
+    /// let expected = [0x0, BMP_MAX + 1];
+    /// assert_eq!(
+    ///     CodePointInversionList::bmp().get_inversion_list_vec(),
+    ///     expected
+    /// );
+    /// assert_eq!(
+    ///     CodePointInversionList::bmp().size(),
+    ///     (expected[1] - expected[0]) as usize
+    /// );
+    /// ```
+    pub fn bmp() -> Self {
+        Self {
+            inv_list: BMP_INV_LIST_VEC,
+            size: BMP_MAX + 1,
+        }
+    }
+
+    /// Returns the inversion list as a slice
+    ///
+    /// Public only to the crate, not exposed to public
+    #[cfg(feature = "alloc")]
+    pub(crate) fn as_inversion_list(&self) -> &ZeroVec<PotentialCodePoint> {
+        &self.inv_list
+    }
+
+    /// Yields an [`Iterator`] going through the character set in the [`CodePointInversionList`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// let example_list = [0x41, 0x44, 0x45, 0x46];
+    /// let example = CodePointInversionList::try_from_u32_inversion_list_slice(
+    ///     &example_list,
+    /// )
+    /// .unwrap();
+    /// let mut ex_iter_chars = example.iter_chars();
+    /// assert_eq!(Some('A'), ex_iter_chars.next());
+    /// assert_eq!(Some('B'), ex_iter_chars.next());
+    /// assert_eq!(Some('C'), ex_iter_chars.next());
+    /// assert_eq!(Some('E'), ex_iter_chars.next());
+    /// assert_eq!(None, ex_iter_chars.next());
+    /// ```
+    pub fn iter_chars(&self) -> impl Iterator<Item = char> + '_ {
+        #[allow(clippy::indexing_slicing)] // chunks
+        self.inv_list
+            .as_ule_slice()
+            .chunks(2)
+            .flat_map(|pair| {
+                u32::from(PotentialCodePoint::from_unaligned(pair[0]))
+                    ..u32::from(PotentialCodePoint::from_unaligned(pair[1]))
+            })
+            .filter_map(char::from_u32)
+    }
+
+    /// Yields an [`Iterator`] returning the ranges of the code points that are
+    /// included in the [`CodePointInversionList`]
+    ///
+    /// Ranges are returned as [`RangeInclusive`], which is inclusive of its
+    /// `end` bound value. An end-inclusive behavior matches the ICU4C/J
+    /// behavior of ranges, ex: `CodePointInversionList::contains(UChar32 start, UChar32 end)`.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// let example_list = [0x41, 0x44, 0x45, 0x46];
+    /// let example = CodePointInversionList::try_from_u32_inversion_list_slice(
+    ///     &example_list,
+    /// )
+    /// .unwrap();
+    /// let mut example_iter_ranges = example.iter_ranges();
+    /// assert_eq!(Some(0x41..=0x43), example_iter_ranges.next());
+    /// assert_eq!(Some(0x45..=0x45), example_iter_ranges.next());
+    /// assert_eq!(None, example_iter_ranges.next());
+    /// ```
+    pub fn iter_ranges(&self) -> impl ExactSizeIterator<Item = RangeInclusive<u32>> + '_ {
+        #[allow(clippy::indexing_slicing)] // chunks
+        self.inv_list.as_ule_slice().chunks(2).map(|pair| {
+            let range_start = u32::from(PotentialCodePoint::from_unaligned(pair[0]));
+            let range_limit = u32::from(PotentialCodePoint::from_unaligned(pair[1]));
+            range_start..=(range_limit - 1)
+        })
+    }
+
+    /// Yields an [`Iterator`] returning the ranges of the code points that are
+    /// *not* included in the [`CodePointInversionList`]
+    ///
+    /// Ranges are returned as [`RangeInclusive`], which is inclusive of its
+    /// `end` bound value. An end-inclusive behavior matches the ICU4C/J
+    /// behavior of ranges, ex: `CodePointInversionList::contains(UChar32 start, UChar32 end)`.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// let example_list = [0x41, 0x44, 0x45, 0x46];
+    /// let example = CodePointInversionList::try_from_u32_inversion_list_slice(
+    ///     &example_list,
+    /// )
+    /// .unwrap();
+    /// let mut example_iter_ranges = example.iter_ranges_complemented();
+    /// assert_eq!(Some(0..=0x40), example_iter_ranges.next());
+    /// assert_eq!(Some(0x44..=0x44), example_iter_ranges.next());
+    /// assert_eq!(Some(0x46..=char::MAX as u32), example_iter_ranges.next());
+    /// assert_eq!(None, example_iter_ranges.next());
+    /// ```
+    pub fn iter_ranges_complemented(&self) -> impl Iterator<Item = RangeInclusive<u32>> + '_ {
+        let inv_ule = self.inv_list.as_ule_slice();
+        let middle = inv_ule.get(1..inv_ule.len() - 1).unwrap_or(&[]);
+        let beginning = if let Some(first) = self.inv_list.first() {
+            let first = u32::from(first);
+            if first == 0 {
+                None
+            } else {
+                Some(0..=first - 1)
+            }
+        } else {
+            None
+        };
+        let end = if let Some(last) = self.inv_list.last() {
+            let last = u32::from(last);
+            if last == char::MAX as u32 {
+                None
+            } else {
+                Some(last..=char::MAX as u32)
+            }
+        } else {
+            None
+        };
+        #[allow(clippy::indexing_slicing)] // chunks
+        let chunks = middle.chunks(2).map(|pair| {
+            let range_start = u32::from(PotentialCodePoint::from_unaligned(pair[0]));
+            let range_limit = u32::from(PotentialCodePoint::from_unaligned(pair[1]));
+            range_start..=(range_limit - 1)
+        });
+        beginning.into_iter().chain(chunks).chain(end)
+    }
+
+    /// Returns the number of ranges contained in this [`CodePointInversionList`]
+    pub fn get_range_count(&self) -> usize {
+        self.inv_list.len() / 2
+    }
+
+    /// Returns a specific range contained in this [`CodePointInversionList`] by index.
+    /// Intended for use in FFI.
+    pub fn get_nth_range(&self, idx: usize) -> Option<RangeInclusive<u32>> {
+        let start_idx = idx * 2;
+        let end_idx = start_idx + 1;
+        let start = u32::from(self.inv_list.get(start_idx)?);
+        let end = u32::from(self.inv_list.get(end_idx)?);
+        Some(start..=(end - 1))
+    }
+
+    /// Returns the number of elements of the [`CodePointInversionList`]
+    pub fn size(&self) -> usize {
+        if self.is_empty() {
+            return 0;
+        }
+        self.size as usize
+    }
+
+    /// Returns whether or not the [`CodePointInversionList`] is empty
+    pub fn is_empty(&self) -> bool {
+        self.inv_list.is_empty()
+    }
+
+    /// Wrapper for contains
+    ///
+    /// Returns an [`Option`] as to whether or not it is possible for the query to be contained.
+    /// The value in the [`Option`] is the start index of the range that contains the query.
+    fn contains_query(&self, query: u32) -> Option<usize> {
+        let query = PotentialCodePoint::try_from(query).ok()?;
+        match self.inv_list.binary_search(&query) {
+            Ok(pos) => {
+                if pos % 2 == 0 {
+                    Some(pos)
+                } else {
+                    None
+                }
+            }
+            Err(pos) => {
+                if pos % 2 != 0 && pos < self.inv_list.len() {
+                    Some(pos - 1)
+                } else {
+                    None
+                }
+            }
+        }
+    }
+
+    /// Checks to see the query is in the [`CodePointInversionList`]
+    ///
+    /// Runs a binary search in `O(log(n))` where `n` is the number of start and end points
+    /// in the set using [`core`] implementation
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// let example_list = [0x41, 0x43, 0x44, 0x45];
+    /// let example = CodePointInversionList::try_from_u32_inversion_list_slice(
+    ///     &example_list,
+    /// )
+    /// .unwrap();
+    /// assert!(example.contains('A'));
+    /// assert!(!example.contains('C'));
+    /// ```
+    pub fn contains(&self, query: char) -> bool {
+        self.contains_query(query as u32).is_some()
+    }
+
+    /// Checks to see the unsigned int is in the [`CodePointInversionList::all()`](CodePointInversionList::all())
+    ///
+    /// Note: Even though [`u32`] and [`prim@char`] in Rust are non-negative 4-byte
+    /// values, there is an important difference. A [`u32`] can take values up to
+    /// a very large integer value, while a [`prim@char`] in Rust is defined to be in
+    /// the range from 0 to the maximum valid Unicode Scalar Value.
+    ///
+    /// Runs a binary search in `O(log(n))` where `n` is the number of start and end points
+    /// in the set using [`core`] implementation
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// let example_list = [0x41, 0x43, 0x44, 0x45];
+    /// let example = CodePointInversionList::try_from_u32_inversion_list_slice(
+    ///     &example_list,
+    /// )
+    /// .unwrap();
+    /// assert!(example.contains32(0x41));
+    /// assert!(!example.contains32(0x43));
+    /// ```
+    pub fn contains32(&self, query: u32) -> bool {
+        self.contains_query(query).is_some()
+    }
+
+    /// Checks to see if the range is in the [`CodePointInversionList`]
+    ///
+    /// Runs a binary search in `O(log(n))` where `n` is the number of start and end points
+    /// in the set using [`Vec`] implementation. Only runs the search once on the `start`
+    /// parameter, while the `end` parameter is checked in a single `O(1)` step.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// let example_list = [0x41, 0x43, 0x44, 0x45];
+    /// let example = CodePointInversionList::try_from_u32_inversion_list_slice(
+    ///     &example_list,
+    /// )
+    /// .unwrap();
+    /// assert!(example.contains_range('A'..'C'));
+    /// assert!(example.contains_range('A'..='B'));
+    /// assert!(!example.contains_range('A'..='C'));
+    /// ```
+    ///
+    /// Surrogate points (`0xD800 -> 0xDFFF`) will return [`false`] if the Range contains them but the
+    /// [`CodePointInversionList`] does not.
+    ///
+    /// Note: when comparing to ICU4C/J, keep in mind that `Range`s in Rust are
+    /// constructed inclusive of start boundary and exclusive of end boundary.
+    /// The ICU4C/J `CodePointInversionList::contains(UChar32 start, UChar32 end)` method
+    /// differs by including the end boundary.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// use std::char;
+    /// let check =
+    ///     char::from_u32(0xD7FE).unwrap()..char::from_u32(0xE001).unwrap();
+    /// let example_list = [0xD7FE, 0xD7FF, 0xE000, 0xE001];
+    /// let example = CodePointInversionList::try_from_u32_inversion_list_slice(
+    ///     &example_list,
+    /// )
+    /// .unwrap();
+    /// assert!(!example.contains_range(check));
+    /// ```
+    pub fn contains_range(&self, range: impl RangeBounds<char>) -> bool {
+        let (from, till) = deconstruct_range(range);
+        if from >= till {
+            return false;
+        }
+        match self.contains_query(from) {
+            Some(pos) => {
+                if let Some(x) = self.inv_list.get(pos + 1) {
+                    (till) <= x.into()
+                } else {
+                    debug_assert!(
+                        false,
+                        "Inversion list query should not return out of bounds index"
+                    );
+                    false
+                }
+            }
+            None => false,
+        }
+    }
+
+    /// Check if the calling [`CodePointInversionList`] contains all the characters of the given [`CodePointInversionList`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// let example_list = [0x41, 0x46, 0x55, 0x5B]; // A - E, U - Z
+    /// let example = CodePointInversionList::try_from_u32_inversion_list_slice(
+    ///     &example_list,
+    /// )
+    /// .unwrap();
+    /// let a_to_d = CodePointInversionList::try_from_u32_inversion_list_slice(&[
+    ///     0x41, 0x45,
+    /// ])
+    /// .unwrap();
+    /// let f_to_t = CodePointInversionList::try_from_u32_inversion_list_slice(&[
+    ///     0x46, 0x55,
+    /// ])
+    /// .unwrap();
+    /// let r_to_x = CodePointInversionList::try_from_u32_inversion_list_slice(&[
+    ///     0x52, 0x58,
+    /// ])
+    /// .unwrap();
+    /// assert!(example.contains_set(&a_to_d)); // contains all
+    /// assert!(!example.contains_set(&f_to_t)); // contains none
+    /// assert!(!example.contains_set(&r_to_x)); // contains some
+    /// ```
+    pub fn contains_set(&self, set: &Self) -> bool {
+        if set.size() > self.size() {
+            return false;
+        }
+
+        let mut set_ranges = set.iter_ranges();
+        let mut check_elem = set_ranges.next();
+
+        let ranges = self.iter_ranges();
+        for range in ranges {
+            match check_elem {
+                Some(ref check_range) => {
+                    if check_range.start() >= range.start()
+                        && check_range.end() <= &(range.end() + 1)
+                    {
+                        check_elem = set_ranges.next();
+                    }
+                }
+                _ => break,
+            }
+        }
+        check_elem.is_none()
+    }
+
+    /// Returns the end of the initial substring where the characters are either contained/not contained
+    /// in the set.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// let example_list = [0x41, 0x44]; // {A, B, C}
+    /// let example = CodePointInversionList::try_from_u32_inversion_list_slice(
+    ///     &example_list,
+    /// )
+    /// .unwrap();
+    /// assert_eq!(example.span("CABXYZ", true), 3);
+    /// assert_eq!(example.span("XYZC", false), 3);
+    /// assert_eq!(example.span("XYZ", true), 0);
+    /// assert_eq!(example.span("ABC", false), 0);
+    /// ```
+    pub fn span(&self, span_str: &str, contained: bool) -> usize {
+        span_str
+            .chars()
+            .take_while(|&x| self.contains(x) == contained)
+            .count()
+    }
+
+    /// Returns the start of the trailing substring (starting from end of string) where the characters are
+    /// either contained/not contained in the set. Returns the length of the string if no valid return.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// let example_list = [0x41, 0x44]; // {A, B, C}
+    /// let example = CodePointInversionList::try_from_u32_inversion_list_slice(
+    ///     &example_list,
+    /// )
+    /// .unwrap();
+    /// assert_eq!(example.span_back("XYZCAB", true), 3);
+    /// assert_eq!(example.span_back("ABCXYZ", true), 6);
+    /// assert_eq!(example.span_back("CABXYZ", false), 3);
+    /// ```
+    pub fn span_back(&self, span_str: &str, contained: bool) -> usize {
+        span_str.len()
+            - span_str
+                .chars()
+                .rev()
+                .take_while(|&x| self.contains(x) == contained)
+                .count()
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::{CodePointInversionList, InvalidSetError};
+    use std::{char, vec::Vec};
+    use zerovec::ZeroVec;
+
+    #[test]
+    fn test_codepointinversionlist_try_from_vec() {
+        let ex = vec![0x2, 0x3, 0x4, 0x5];
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert_eq!(ex, check.get_inversion_list_vec());
+        assert_eq!(2, check.size());
+    }
+
+    #[test]
+    fn test_codepointinversionlist_try_from_vec_error() {
+        let check = vec![0x1, 0x1, 0x2, 0x3, 0x4];
+        let set = CodePointInversionList::try_from_u32_inversion_list_slice(&check);
+        assert!(matches!(set, Err(InvalidSetError(_))));
+        if let Err(InvalidSetError(actual)) = set {
+            assert_eq!(
+                &check,
+                &actual.into_iter().map(u32::from).collect::<Vec<_>>()
+            );
+        }
+    }
+
+    // CodePointInversionList membership functions
+    #[test]
+    fn test_codepointinversionlist_contains_query() {
+        let ex = vec![0x41, 0x46, 0x4B, 0x55];
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert!(check.contains_query(0x40).is_none());
+        assert_eq!(check.contains_query(0x41).unwrap(), 0);
+        assert_eq!(check.contains_query(0x44).unwrap(), 0);
+        assert!(check.contains_query(0x46).is_none());
+        assert_eq!(check.contains_query(0x4C).unwrap(), 2);
+        assert!(check.contains_query(0x56).is_none());
+    }
+
+    #[test]
+    fn test_codepointinversionlist_contains() {
+        let ex = vec![0x2, 0x5, 0xA, 0xF];
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert!(check.contains(0x2 as char));
+        assert!(check.contains(0x4 as char));
+        assert!(check.contains(0xA as char));
+        assert!(check.contains(0xE as char));
+    }
+
+    #[test]
+    fn test_codepointinversionlist_contains_false() {
+        let ex = vec![0x2, 0x5, 0xA, 0xF];
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert!(!check.contains(0x1 as char));
+        assert!(!check.contains(0x5 as char));
+        assert!(!check.contains(0x9 as char));
+        assert!(!check.contains(0xF as char));
+        assert!(!check.contains(0x10 as char));
+    }
+
+    #[test]
+    fn test_codepointinversionlist_contains_range() {
+        let ex = vec![0x41, 0x46, 0x4B, 0x55];
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert!(check.contains_range('A'..='E')); // 65 - 69
+        assert!(check.contains_range('C'..'D')); // 67 - 67
+        assert!(check.contains_range('L'..'P')); // 76 - 80
+        assert!(!check.contains_range('L'..='U')); // 76 - 85
+    }
+
+    #[test]
+    fn test_codepointinversionlist_contains_range_false() {
+        let ex = vec![0x41, 0x46, 0x4B, 0x55];
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert!(!check.contains_range('!'..'A')); // 33 - 65
+        assert!(!check.contains_range('F'..'K')); // 70 - 74
+        assert!(!check.contains_range('U'..)); // 85 - ..
+    }
+
+    #[test]
+    fn test_codepointinversionlist_contains_range_invalid() {
+        let check = CodePointInversionList::all();
+        assert!(!check.contains_range('A'..'!')); // 65 - 33
+        assert!(!check.contains_range('A'..'A')); // 65 - 65
+    }
+
+    #[test]
+    fn test_codepointinversionlist_contains_set_u() {
+        let ex = vec![0xA, 0x14, 0x28, 0x32, 0x46, 0x50, 0x64, 0x6E];
+        let u = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        let inside = vec![0xF, 0x14, 0x2C, 0x31, 0x46, 0x50, 0x64, 0x6D];
+        let s = CodePointInversionList::try_from_u32_inversion_list_slice(&inside).unwrap();
+        assert!(u.contains_set(&s));
+    }
+
+    #[test]
+    fn test_codepointinversionlist_contains_set_u_false() {
+        let ex = vec![0xA, 0x14, 0x28, 0x32, 0x46, 0x50, 0x64, 0x78];
+        let u = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        let outside = vec![0x0, 0xA, 0x16, 0x2C, 0x32, 0x46, 0x4F, 0x51, 0x6D, 0x6F];
+        let s = CodePointInversionList::try_from_u32_inversion_list_slice(&outside).unwrap();
+        assert!(!u.contains_set(&s));
+    }
+
+    #[test]
+    fn test_codepointinversionlist_size() {
+        let ex = vec![0x2, 0x5, 0xA, 0xF];
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert_eq!(8, check.size());
+        let check = CodePointInversionList::all();
+        let expected = (char::MAX as u32) + 1;
+        assert_eq!(expected as usize, check.size());
+        let inv_list_vec = vec![];
+        let check = CodePointInversionList {
+            inv_list: ZeroVec::from_slice_or_alloc(&inv_list_vec),
+            size: 0,
+        };
+        assert_eq!(check.size(), 0);
+    }
+
+    #[test]
+    fn test_codepointinversionlist_is_empty() {
+        let inv_list_vec = vec![];
+        let check = CodePointInversionList {
+            inv_list: ZeroVec::from_slice_or_alloc(&inv_list_vec),
+            size: 0,
+        };
+        assert!(check.is_empty());
+    }
+
+    #[test]
+    fn test_codepointinversionlist_is_not_empty() {
+        let check = CodePointInversionList::all();
+        assert!(!check.is_empty());
+    }
+
+    #[test]
+    fn test_codepointinversionlist_iter_chars() {
+        let ex = vec![0x41, 0x44, 0x45, 0x46, 0xD800, 0xD801];
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        let mut iter = check.iter_chars();
+        assert_eq!(Some('A'), iter.next());
+        assert_eq!(Some('B'), iter.next());
+        assert_eq!(Some('C'), iter.next());
+        assert_eq!(Some('E'), iter.next());
+        assert_eq!(None, iter.next());
+    }
+
+    #[test]
+    fn test_codepointinversionlist_iter_ranges() {
+        let ex = vec![0x41, 0x44, 0x45, 0x46, 0xD800, 0xD801];
+        let set = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        let mut ranges = set.iter_ranges();
+        assert_eq!(Some(0x41..=0x43), ranges.next());
+        assert_eq!(Some(0x45..=0x45), ranges.next());
+        assert_eq!(Some(0xD800..=0xD800), ranges.next());
+        assert_eq!(None, ranges.next());
+    }
+
+    #[test]
+    fn test_codepointinversionlist_iter_ranges_exactsizeiter_trait() {
+        let ex = vec![0x41, 0x44, 0x45, 0x46, 0xD800, 0xD801];
+        let set = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        let ranges = set.iter_ranges();
+        assert_eq!(3, ranges.len());
+    }
+
+    #[test]
+    fn test_codepointinversionlist_range_count() {
+        let ex = vec![0x41, 0x44, 0x45, 0x46, 0xD800, 0xD801];
+        let set = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert_eq!(3, set.get_range_count());
+    }
+
+    #[test]
+    fn test_codepointinversionlist_get_nth_range() {
+        let ex = vec![0x41, 0x44, 0x45, 0x46, 0xD800, 0xD801];
+        let set = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert_eq!(Some(0x41..=0x43), set.get_nth_range(0));
+        assert_eq!(Some(0x45..=0x45), set.get_nth_range(1));
+        assert_eq!(Some(0xD800..=0xD800), set.get_nth_range(2));
+        assert_eq!(None, set.get_nth_range(3));
+    }
+
+    // Range<char> cannot represent the upper bound (non-inclusive) for
+    // char::MAX, whereas Range<u32> can.
+    #[test]
+    fn test_codepointinversionlist_iter_ranges_with_max_code_point() {
+        let ex = vec![0x80, (char::MAX as u32) + 1];
+        let set = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        let mut ranges = set.iter_ranges();
+        assert_eq!(Some(0x80..=(char::MAX as u32)), ranges.next());
+        assert_eq!(None, ranges.next());
+    }
+
+    #[test]
+    fn test_codepointinversionlist_span_contains() {
+        let ex = vec![0x41, 0x44, 0x46, 0x4B]; // A - D, F - K
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert_eq!(check.span("ABCDE", true), 3);
+        assert_eq!(check.span("E", true), 0);
+    }
+
+    #[test]
+    fn test_codepointinversionlist_span_does_not_contain() {
+        let ex = vec![0x41, 0x44, 0x46, 0x4B]; // A - D, F - K
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert_eq!(check.span("DEF", false), 2);
+        assert_eq!(check.span("KLMA", false), 3);
+    }
+
+    #[test]
+    fn test_codepointinversionlist_span_back_contains() {
+        let ex = vec![0x41, 0x44, 0x46, 0x4B]; // A - D, F - K
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert_eq!(check.span_back("XYZABFH", true), 3);
+        assert_eq!(check.span_back("ABCXYZ", true), 6);
+    }
+
+    #[test]
+    fn test_codepointinversionlist_span_back_does_not_contain() {
+        let ex = vec![0x41, 0x44, 0x46, 0x4B]; // A - D, F - K
+        let check = CodePointInversionList::try_from_u32_inversion_list_slice(&ex).unwrap();
+        assert_eq!(check.span_back("ABCXYZ", false), 3);
+        assert_eq!(check.span_back("XYZABC", false), 6);
+    }
+
+    #[test]
+    fn test_uniset_to_inv_list() {
+        let inv_list = [
+            0x9, 0xE, 0x20, 0x21, 0x85, 0x86, 0xA0, 0xA1, 0x1626, 0x1627, 0x2000, 0x2003, 0x2028,
+            0x202A, 0x202F, 0x2030, 0x205F, 0x2060, 0x3000, 0x3001,
+        ];
+        let s: CodePointInversionList =
+            CodePointInversionList::try_from_u32_inversion_list_slice(&inv_list).unwrap();
+        let round_trip_inv_list = s.get_inversion_list_vec();
+        assert_eq!(
+            round_trip_inv_list.into_iter().collect::<ZeroVec<u32>>(),
+            inv_list
+        );
+    }
+
+    #[test]
+    fn test_serde_serialize() {
+        let inv_list = [0x41, 0x46, 0x4B, 0x55];
+        let uniset = CodePointInversionList::try_from_u32_inversion_list_slice(&inv_list).unwrap();
+        let json_str = serde_json::to_string(&uniset).unwrap();
+        assert_eq!(json_str, r#"["A-E","K-T"]"#);
+    }
+
+    #[test]
+    fn test_serde_serialize_surrogates() {
+        let inv_list = [0xDFAB, 0xDFFF];
+        let uniset = CodePointInversionList::try_from_u32_inversion_list_slice(&inv_list).unwrap();
+        let json_str = serde_json::to_string(&uniset).unwrap();
+        assert_eq!(json_str, r#"["U+DFAB-U+DFFE"]"#);
+    }
+
+    #[test]
+    fn test_serde_deserialize() {
+        let inv_list_str = r#"["A-E","K-T"]"#;
+        let exp_inv_list = [0x41, 0x46, 0x4B, 0x55];
+        let exp_uniset =
+            CodePointInversionList::try_from_u32_inversion_list_slice(&exp_inv_list).unwrap();
+        let act_uniset: CodePointInversionList = serde_json::from_str(inv_list_str).unwrap();
+        assert_eq!(act_uniset, exp_uniset);
+    }
+
+    #[test]
+    fn test_serde_deserialize_surrogates() {
+        let inv_list_str = r#"["U+DFAB-U+DFFE"]"#;
+        let exp_inv_list = [0xDFAB, 0xDFFF];
+        let exp_uniset =
+            CodePointInversionList::try_from_u32_inversion_list_slice(&exp_inv_list).unwrap();
+        let act_uniset: CodePointInversionList = serde_json::from_str(inv_list_str).unwrap();
+        assert_eq!(act_uniset, exp_uniset);
+    }
+
+    #[test]
+    fn test_serde_deserialize_invalid() {
+        assert!(serde_json::from_str::<CodePointInversionList>("[65,70,98775,85]").is_err());
+        assert!(serde_json::from_str::<CodePointInversionList>("[65,70,U+FFFFFFFFFF,85]").is_err());
+    }
+
+    #[test]
+    fn test_serde_with_postcard_roundtrip() -> Result<(), postcard::Error> {
+        let set = CodePointInversionList::bmp();
+        let set_serialized: Vec<u8> = postcard::to_allocvec(&set).unwrap();
+        let set_deserialized: CodePointInversionList =
+            postcard::from_bytes::<CodePointInversionList>(&set_serialized)?;
+
+        assert_eq!(&set, &set_deserialized);
+        assert!(!set_deserialized.inv_list.is_owned());
+
+        Ok(())
+    }
+
+    #[test]
+    fn databake() {
+        databake::test_bake!(
+            CodePointInversionList<'static>,
+            const,
+            unsafe {
+                #[allow(unused_unsafe)]
+                crate::codepointinvlist::CodePointInversionList::from_parts_unchecked(
+                    unsafe {
+                        zerovec::ZeroVec::from_bytes_unchecked(
+                            b"0\0\0\0:\0\0\0A\0\0\0G\0\0\0a\0\0\0g\0\0\0",
+                        )
+                    },
+                    22u32,
+                )
+            },
+            icu_collections,
+            [zerovec],
+        );
+    }
+}
diff --git a/vendor/icu_collections/src/codepointinvlist/mod.rs b/vendor/icu_collections/src/codepointinvlist/mod.rs
new file mode 100644
index 00000000..be4986a3
--- /dev/null
+++ b/vendor/icu_collections/src/codepointinvlist/mod.rs
@@ -0,0 +1,82 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module provides necessary functionality for highly efficient querying of sets of Unicode characters.
+//!
+//! It is an implementation of the code point portion of the existing
+//! [ICU4C UnicodeSet API](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UnicodeSet.html).
+//!
+//! # Architecture
+//! ICU4X [`CodePointInversionList`] is split up into independent levels, with [`CodePointInversionList`] representing the membership/query API,
+//! and [`CodePointInversionListBuilder`] representing the builder API.
+//!
+//! # Examples:
+//!
+//! ## Creating a `CodePointInversionList`
+//!
+//! `CodePointSets` are created from either serialized [`CodePointSets`](CodePointInversionList),
+//! represented by [inversion lists](http://userguide.icu-project.org/strings/properties),
+//! the [`CodePointInversionListBuilder`], or from the Properties API.
+//!
+//! ```
+//! use icu::collections::codepointinvlist::{
+//!     CodePointInversionList, CodePointInversionListBuilder,
+//! };
+//!
+//! let mut builder = CodePointInversionListBuilder::new();
+//! builder.add_range('A'..='Z');
+//! let set: CodePointInversionList = builder.build();
+//!
+//! assert!(set.contains('A'));
+//! ```
+//!
+//! ## Querying a `CodePointInversionList`
+//!
+//! Currently, you can check if a character/range of characters exists in the [`CodePointInversionList`], or iterate through the characters.
+//!
+//! ```
+//! use icu::collections::codepointinvlist::{
+//!     CodePointInversionList, CodePointInversionListBuilder,
+//! };
+//!
+//! let mut builder = CodePointInversionListBuilder::new();
+//! builder.add_range('A'..='Z');
+//! let set: CodePointInversionList = builder.build();
+//!
+//! assert!(set.contains('A'));
+//! assert!(set.contains_range('A'..='C'));
+//! assert_eq!(set.iter_chars().next(), Some('A'));
+//! ```
+//!
+//! [`ICU4X`]: ../icu/index.html
+
+#![warn(missing_docs)]
+
+extern crate alloc;
+
+#[cfg(feature = "alloc")]
+#[macro_use]
+mod builder;
+#[cfg(feature = "alloc")]
+mod conversions;
+mod cpinvlist;
+mod utils;
+
+#[cfg(feature = "alloc")]
+pub use builder::CodePointInversionListBuilder;
+pub use cpinvlist::CodePointInversionList;
+pub use cpinvlist::CodePointInversionListULE;
+use displaydoc::Display;
+
+#[derive(Display, Debug)]
+/// A CodePointInversionList was constructed with an invalid inversion list
+#[cfg_attr(feature = "alloc", displaydoc("Invalid set: {0:?}"))]
+pub struct InvalidSetError(
+    #[cfg(feature = "alloc")] pub alloc::vec::Vec<potential_utf::PotentialCodePoint>,
+);
+
+/// A CodePointInversionList was constructed from an invalid range
+#[derive(Display, Debug)]
+#[displaydoc("Invalid range: {0}..{1}")]
+pub struct RangeError(pub u32, pub u32);
diff --git a/vendor/icu_collections/src/codepointinvlist/utils.rs b/vendor/icu_collections/src/codepointinvlist/utils.rs
new file mode 100644
index 00000000..525b02ff
--- /dev/null
+++ b/vendor/icu_collections/src/codepointinvlist/utils.rs
@@ -0,0 +1,118 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::{
+    char,
+    ops::{Bound::*, RangeBounds},
+};
+use potential_utf::PotentialCodePoint;
+use zerovec::ule::AsULE;
+use zerovec::ZeroVec;
+
+/// Returns whether the vector is sorted ascending non inclusive, of even length,
+/// and within the bounds of `0x0 -> 0x10FFFF + 1` inclusive.
+#[allow(clippy::indexing_slicing)] // windows
+#[allow(clippy::unwrap_used)] // by is_empty check
+pub fn is_valid_zv(inv_list_zv: &ZeroVec<'_, PotentialCodePoint>) -> bool {
+    inv_list_zv.is_empty()
+        || (inv_list_zv.len() % 2 == 0
+            && inv_list_zv.as_ule_slice().windows(2).all(|chunk| {
+                <PotentialCodePoint as AsULE>::from_unaligned(chunk[0])
+                    < <PotentialCodePoint as AsULE>::from_unaligned(chunk[1])
+            })
+            && u32::from(inv_list_zv.last().unwrap()) <= char::MAX as u32 + 1)
+}
+
+/// Returns start (inclusive) and end (exclusive) bounds of [`RangeBounds`]
+pub fn deconstruct_range<T>(range: impl RangeBounds<T>) -> (u32, u32)
+where
+    T: Into<u32> + Copy,
+{
+    let from = match range.start_bound() {
+        Included(b) => (*b).into(),
+        Excluded(_) => unreachable!(),
+        Unbounded => 0,
+    };
+    let till = match range.end_bound() {
+        Included(b) => (*b).into() + 1,
+        Excluded(b) => (*b).into(),
+        Unbounded => (char::MAX as u32) + 1,
+    };
+    (from, till)
+}
+
+#[cfg(test)]
+mod tests {
+    use super::{deconstruct_range, is_valid_zv, PotentialCodePoint};
+    use core::char;
+    use zerovec::ZeroVec;
+
+    fn make_zv(slice: &[u32]) -> ZeroVec<PotentialCodePoint> {
+        slice
+            .iter()
+            .copied()
+            .map(PotentialCodePoint::from_u24)
+            .collect()
+    }
+    #[test]
+    fn test_is_valid_zv() {
+        let check = make_zv(&[0x2, 0x3, 0x4, 0x5]);
+        assert!(is_valid_zv(&check));
+    }
+
+    #[test]
+    fn test_is_valid_zv_empty() {
+        let check = make_zv(&[]);
+        assert!(is_valid_zv(&check));
+    }
+
+    #[test]
+    fn test_is_valid_zv_overlapping() {
+        let check = make_zv(&[0x2, 0x5, 0x4, 0x6]);
+        assert!(!is_valid_zv(&check));
+    }
+
+    #[test]
+    fn test_is_valid_zv_out_of_order() {
+        let check = make_zv(&[0x5, 0x4, 0x5, 0x6, 0x7]);
+        assert!(!is_valid_zv(&check));
+    }
+
+    #[test]
+    fn test_is_valid_zv_duplicate() {
+        let check = make_zv(&[0x1, 0x2, 0x3, 0x3, 0x5]);
+        assert!(!is_valid_zv(&check));
+    }
+
+    #[test]
+    fn test_is_valid_zv_odd() {
+        let check = make_zv(&[0x1, 0x2, 0x3, 0x4, 0x5]);
+        assert!(!is_valid_zv(&check));
+    }
+
+    #[test]
+    fn test_is_valid_zv_out_of_range() {
+        let check = make_zv(&[0x1, 0x2, 0x3, 0x4, (char::MAX as u32) + 1]);
+        assert!(!is_valid_zv(&check));
+    }
+
+    // deconstruct_range
+
+    #[test]
+    fn test_deconstruct_range() {
+        let expected = (0x41, 0x45);
+        let check = deconstruct_range('A'..'E'); // Range
+        assert_eq!(check, expected);
+        let check = deconstruct_range('A'..='D'); // Range Inclusive
+        assert_eq!(check, expected);
+        let check = deconstruct_range('A'..); // Range From
+        assert_eq!(check, (0x41, (char::MAX as u32) + 1));
+        let check = deconstruct_range(..'A'); // Range To
+        assert_eq!(check, (0x0, 0x41));
+        let check = deconstruct_range(..='A'); // Range To Inclusive
+        assert_eq!(check, (0x0, 0x42));
+        let check = deconstruct_range::<char>(..); // Range Full
+        assert_eq!(check, (0x0, (char::MAX as u32) + 1));
+    }
+}
diff --git a/vendor/icu_collections/src/codepointinvliststringlist/mod.rs b/vendor/icu_collections/src/codepointinvliststringlist/mod.rs
new file mode 100644
index 00000000..2562cc5b
--- /dev/null
+++ b/vendor/icu_collections/src/codepointinvliststringlist/mod.rs
@@ -0,0 +1,384 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module provides functionality for querying of sets of Unicode code points and strings.
+//!
+//! It depends on [`CodePointInversionList`] to efficiently represent Unicode code points, while
+//! it also maintains a list of strings in the set.
+//!
+//! It is an implementation of the existing [ICU4C UnicodeSet API](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UnicodeSet.html).
+
+#[cfg(feature = "alloc")]
+use crate::codepointinvlist::CodePointInversionListBuilder;
+use crate::codepointinvlist::{CodePointInversionList, CodePointInversionListULE};
+#[cfg(feature = "alloc")]
+use alloc::string::{String, ToString};
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+use displaydoc::Display;
+use yoke::Yokeable;
+use zerofrom::ZeroFrom;
+use zerovec::{VarZeroSlice, VarZeroVec};
+
+/// A data structure providing a concrete implementation of a set of code points and strings,
+/// using an inversion list for the code points.
+///
+/// This is what ICU4C calls a `UnicodeSet`.
+#[zerovec::make_varule(CodePointInversionListAndStringListULE)]
+#[zerovec::skip_derive(Ord)]
+#[zerovec::derive(Debug)]
+#[derive(Debug, Eq, PartialEq, Clone, Yokeable, ZeroFrom)]
+#[cfg_attr(not(feature = "alloc"), zerovec::skip_derive(ZeroMapKV, ToOwned))]
+// Valid to auto-derive Deserialize because the invariants are weakly held
+#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "serde", zerovec::derive(Serialize, Deserialize, Debug))]
+pub struct CodePointInversionListAndStringList<'data> {
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    #[zerovec::varule(CodePointInversionListULE)]
+    cp_inv_list: CodePointInversionList<'data>,
+    // Invariants (weakly held):
+    //   - no input string is length 1 (a length 1 string should be a single code point)
+    //   - the string list is sorted
+    //   - the elements in the string list are unique
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    str_list: VarZeroVec<'data, str>,
+}
+
+#[cfg(feature = "databake")]
+impl databake::Bake for CodePointInversionListAndStringList<'_> {
+    fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+        env.insert("icu_collections");
+        let cp_inv_list = self.cp_inv_list.bake(env);
+        let str_list = self.str_list.bake(env);
+        // Safe because our parts are safe.
+        databake::quote! {
+            icu_collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(#cp_inv_list, #str_list)
+        }
+    }
+}
+
+#[cfg(feature = "databake")]
+impl databake::BakeSize for CodePointInversionListAndStringList<'_> {
+    fn borrows_size(&self) -> usize {
+        self.cp_inv_list.borrows_size() + self.str_list.borrows_size()
+    }
+}
+
+impl<'data> CodePointInversionListAndStringList<'data> {
+    /// Returns a new [`CodePointInversionListAndStringList`] from both a [`CodePointInversionList`] for the
+    /// code points and a [`VarZeroVec`]`<`[`str`]`>` of strings.
+    pub fn try_from(
+        cp_inv_list: CodePointInversionList<'data>,
+        str_list: VarZeroVec<'data, str>,
+    ) -> Result<Self, InvalidStringList> {
+        // Verify invariants:
+        // Do so by using the equivalent of str_list.iter().windows(2) to get
+        // overlapping windows of size 2. The above putative code is not possible
+        // because `.windows()` exists on a slice, but VarZeroVec cannot return a slice
+        // because the non-fixed size elements necessitate at least some type
+        // of allocation.
+        {
+            let mut it = str_list.iter();
+            if let Some(mut x) = it.next() {
+                if x.len() == 1 {
+                    return Err(InvalidStringList::InvalidStringLength(
+                        #[cfg(feature = "alloc")]
+                        x.to_string(),
+                    ));
+                }
+                for y in it {
+                    if x.len() == 1 {
+                        return Err(InvalidStringList::InvalidStringLength(
+                            #[cfg(feature = "alloc")]
+                            x.to_string(),
+                        ));
+                    } else if x == y {
+                        return Err(InvalidStringList::StringListNotUnique(
+                            #[cfg(feature = "alloc")]
+                            x.to_string(),
+                        ));
+                    } else if x > y {
+                        return Err(InvalidStringList::StringListNotSorted(
+                            #[cfg(feature = "alloc")]
+                            x.to_string(),
+                            #[cfg(feature = "alloc")]
+                            y.to_string(),
+                        ));
+                    }
+
+                    // Next window begins. Update `x` here, `y` will be updated in next loop iteration.
+                    x = y;
+                }
+            }
+        }
+
+        Ok(CodePointInversionListAndStringList {
+            cp_inv_list,
+            str_list,
+        })
+    }
+
+    #[doc(hidden)] // databake internal
+    pub const fn from_parts_unchecked(
+        cp_inv_list: CodePointInversionList<'data>,
+        str_list: VarZeroVec<'data, str>,
+    ) -> Self {
+        CodePointInversionListAndStringList {
+            cp_inv_list,
+            str_list,
+        }
+    }
+
+    /// Returns the number of elements in this set (its cardinality).
+    /// Note than the elements of a set may include both individual
+    /// codepoints and strings.
+    pub fn size(&self) -> usize {
+        self.cp_inv_list.size() + self.str_list.len()
+    }
+
+    /// Return true if this set contains multi-code point strings or the empty string.
+    pub fn has_strings(&self) -> bool {
+        !self.str_list.is_empty()
+    }
+
+    ///
+    /// # Examples
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// use icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList;
+    /// use zerovec::VarZeroVec;
+    ///
+    /// let cp_slice = &[0, 0x1_0000, 0x10_FFFF, 0x11_0000];
+    /// let cp_list =
+    ///    CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap();
+    /// let str_slice = &["", "bmp_max", "unicode_max", "zero"];
+    /// let str_list = VarZeroVec::<str>::from(str_slice);
+    ///
+    /// let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list).unwrap();
+    ///
+    /// assert!(cpilsl.contains_str("bmp_max"));
+    /// assert!(cpilsl.contains_str(""));
+    /// assert!(cpilsl.contains_str("A"));
+    /// assert!(cpilsl.contains_str("ቔ"));  // U+1254 ETHIOPIC SYLLABLE QHEE
+    /// assert!(!cpilsl.contains_str("bazinga!"));
+    /// ```
+    pub fn contains_str(&self, s: &str) -> bool {
+        let mut chars = s.chars();
+        if let Some(first_char) = chars.next() {
+            if chars.next().is_none() {
+                return self.contains(first_char);
+            }
+        }
+        self.str_list.binary_search(s).is_ok()
+    }
+
+    ///
+    /// # Examples
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// use icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList;
+    /// use zerovec::VarZeroVec;
+    ///
+    /// let cp_slice = &[0, 0x80, 0xFFFF, 0x1_0000, 0x10_FFFF, 0x11_0000];
+    /// let cp_list =
+    ///     CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap();
+    /// let str_slice = &["", "ascii_max", "bmp_max", "unicode_max", "zero"];
+    /// let str_list = VarZeroVec::<str>::from(str_slice);
+    ///
+    /// let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list).unwrap();
+    ///
+    /// assert!(cpilsl.contains32(0));
+    /// assert!(cpilsl.contains32(0x0042));
+    /// assert!(!cpilsl.contains32(0x0080));
+    /// ```
+    pub fn contains32(&self, cp: u32) -> bool {
+        self.cp_inv_list.contains32(cp)
+    }
+
+    ///
+    /// # Examples
+    /// ```
+    /// use icu::collections::codepointinvlist::CodePointInversionList;
+    /// use icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList;
+    /// use zerovec::VarZeroVec;
+    ///
+    /// let cp_slice = &[0, 0x1_0000, 0x10_FFFF, 0x11_0000];
+    /// let cp_list =
+    ///    CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap();
+    /// let str_slice = &["", "bmp_max", "unicode_max", "zero"];
+    /// let str_list = VarZeroVec::<str>::from(str_slice);
+    ///
+    /// let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list).unwrap();
+    ///
+    /// assert!(cpilsl.contains('A'));
+    /// assert!(cpilsl.contains('ቔ'));  // U+1254 ETHIOPIC SYLLABLE QHEE
+    /// assert!(!cpilsl.contains('\u{1_0000}'));
+    /// assert!(!cpilsl.contains('🨫'));  // U+1FA2B NEUTRAL CHESS TURNED QUEEN
+    pub fn contains(&self, ch: char) -> bool {
+        self.contains32(ch as u32)
+    }
+
+    /// Access the underlying [`CodePointInversionList`].
+    pub fn code_points(&self) -> &CodePointInversionList<'data> {
+        &self.cp_inv_list
+    }
+
+    /// Access the contained strings.
+    pub fn strings(&self) -> &VarZeroSlice<str> {
+        &self.str_list
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'a> FromIterator<&'a str> for CodePointInversionListAndStringList<'_> {
+    fn from_iter<I>(it: I) -> Self
+    where
+        I: IntoIterator<Item = &'a str>,
+    {
+        let mut builder = CodePointInversionListBuilder::new();
+        let mut strings = Vec::<&str>::new();
+        for s in it {
+            let mut chars = s.chars();
+            if let Some(first_char) = chars.next() {
+                if chars.next().is_none() {
+                    builder.add_char(first_char);
+                    continue;
+                }
+            }
+            strings.push(s);
+        }
+
+        // Ensure that the string list is sorted. If not, the binary search that
+        // is used for `.contains(&str)` will return garbage output.
+        strings.sort_unstable();
+        strings.dedup();
+
+        let cp_inv_list = builder.build();
+        let str_list = VarZeroVec::<str>::from(&strings);
+
+        CodePointInversionListAndStringList {
+            cp_inv_list,
+            str_list,
+        }
+    }
+}
+
+/// Custom Errors for [`CodePointInversionListAndStringList`].
+#[derive(Display, Debug)]
+pub enum InvalidStringList {
+    /// A string in the string list had an invalid length
+    #[cfg_attr(feature = "alloc", displaydoc("Invalid string length for string: {0}"))]
+    InvalidStringLength(#[cfg(feature = "alloc")] String),
+    /// A string in the string list appears more than once
+    #[cfg_attr(feature = "alloc", displaydoc("String list has duplicate: {0}"))]
+    StringListNotUnique(#[cfg(feature = "alloc")] String),
+    /// Two strings in the string list compare to each other opposite of sorted order
+    #[cfg_attr(
+        feature = "alloc",
+        displaydoc("Strings in string list not in sorted order: ({0}, {1})")
+    )]
+    StringListNotSorted(
+        #[cfg(feature = "alloc")] String,
+        #[cfg(feature = "alloc")] String,
+    ),
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_size_has_strings() {
+        let cp_slice = &[0, 1, 0x7F, 0x80, 0xFFFF, 0x1_0000, 0x10_FFFF, 0x11_0000];
+        let cp_list = CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap();
+        let str_slice = &["ascii_max", "bmp_max", "unicode_max", "zero"];
+        let str_list = VarZeroVec::<str>::from(str_slice);
+
+        let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list).unwrap();
+
+        assert!(cpilsl.has_strings());
+        assert_eq!(8, cpilsl.size());
+    }
+
+    #[test]
+    fn test_empty_string_allowed() {
+        let cp_slice = &[0, 1, 0x7F, 0x80, 0xFFFF, 0x1_0000, 0x10_FFFF, 0x11_0000];
+        let cp_list = CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap();
+        let str_slice = &["", "ascii_max", "bmp_max", "unicode_max", "zero"];
+        let str_list = VarZeroVec::<str>::from(str_slice);
+
+        let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list).unwrap();
+
+        assert!(cpilsl.has_strings());
+        assert_eq!(9, cpilsl.size());
+    }
+
+    #[test]
+    fn test_invalid_string() {
+        let cp_slice = &[0, 1];
+        let cp_list = CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap();
+        let str_slice = &["a"];
+        let str_list = VarZeroVec::<str>::from(str_slice);
+
+        let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list);
+
+        assert!(matches!(
+            cpilsl,
+            Err(InvalidStringList::InvalidStringLength(_))
+        ));
+    }
+
+    #[test]
+    fn test_invalid_string_list_has_duplicate() {
+        let cp_slice = &[0, 1];
+        let cp_list = CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap();
+        let str_slice = &["abc", "abc"];
+        let str_list = VarZeroVec::<str>::from(str_slice);
+
+        let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list);
+
+        assert!(matches!(
+            cpilsl,
+            Err(InvalidStringList::StringListNotUnique(_))
+        ));
+    }
+
+    #[test]
+    fn test_invalid_string_list_not_sorted() {
+        let cp_slice = &[0, 1];
+        let cp_list = CodePointInversionList::try_from_u32_inversion_list_slice(cp_slice).unwrap();
+        let str_slice = &["xyz", "abc"];
+        let str_list = VarZeroVec::<str>::from(str_slice);
+
+        let cpilsl = CodePointInversionListAndStringList::try_from(cp_list, str_list);
+
+        assert!(matches!(
+            cpilsl,
+            Err(InvalidStringList::StringListNotSorted(_, _))
+        ));
+    }
+
+    #[test]
+    fn test_from_iter_invariants() {
+        let in_strs_1 = ["a", "abc", "xyz", "abc"];
+        let in_strs_2 = ["xyz", "abc", "a", "abc"];
+
+        let cpilsl_1 = CodePointInversionListAndStringList::from_iter(in_strs_1);
+        let cpilsl_2 = CodePointInversionListAndStringList::from_iter(in_strs_2);
+
+        assert_eq!(cpilsl_1, cpilsl_2);
+
+        assert!(cpilsl_1.has_strings());
+        assert!(cpilsl_1.contains_str("abc"));
+        assert!(cpilsl_1.contains_str("xyz"));
+        assert!(!cpilsl_1.contains_str("def"));
+
+        assert_eq!(1, cpilsl_1.cp_inv_list.size());
+        assert!(cpilsl_1.contains('a'));
+        assert!(!cpilsl_1.contains('0'));
+        assert!(!cpilsl_1.contains('q'));
+
+        assert_eq!(3, cpilsl_1.size());
+    }
+}
diff --git a/vendor/icu_collections/src/codepointtrie/cptrie.rs b/vendor/icu_collections/src/codepointtrie/cptrie.rs
new file mode 100644
index 00000000..8a79032a
--- /dev/null
+++ b/vendor/icu_collections/src/codepointtrie/cptrie.rs
@@ -0,0 +1,1345 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::codepointtrie::error::Error;
+use crate::codepointtrie::impl_const::*;
+
+#[cfg(feature = "alloc")]
+use crate::codepointinvlist::CodePointInversionList;
+use core::char::CharTryFromError;
+use core::convert::Infallible;
+use core::convert::TryFrom;
+use core::fmt::Display;
+#[cfg(feature = "alloc")]
+use core::iter::FromIterator;
+use core::num::TryFromIntError;
+use core::ops::RangeInclusive;
+use yoke::Yokeable;
+use zerofrom::ZeroFrom;
+#[cfg(feature = "alloc")]
+use zerovec::ule::UleError;
+use zerovec::ZeroVec;
+
+/// The type of trie represents whether the trie has an optimization that
+/// would make it smaller or faster.
+///
+/// Regarding performance, a trie being a small or fast type affects the number of array lookups
+/// needed for code points in the range `[0x1000, 0x10000)`. In this range, `Small` tries use 4 array lookups,
+/// while `Fast` tries use 2 array lookups.
+/// Code points before the interval (in `[0, 0x1000)`) will always use 2 array lookups.
+/// Code points after the interval (in `[0x10000, 0x10FFFF]`) will always use 4 array lookups.
+///
+/// Regarding size, `Fast` type tries are larger than `Small` type tries because the minimum size of
+/// the index array is larger. The minimum size is the "fast max" limit, which is the limit of the range
+/// of code points with 2 array lookups.
+///
+/// See the document [Unicode Properties and Code Point Tries in ICU4X](https://github.com/unicode-org/icu4x/blob/main/documents/design/properties_code_point_trie.md).
+///
+/// Also see [`UCPTrieType`](https://unicode-org.github.io/icu-docs/apidoc/dev/icu4c/ucptrie_8h.html) in ICU4C.
+#[derive(Clone, Copy, PartialEq, Debug, Eq)]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = icu_collections::codepointtrie))]
+pub enum TrieType {
+    /// Represents the "fast" type code point tries for the
+    /// [`TrieType`] trait. The "fast max" limit is set to `0xffff`.
+    Fast = 0,
+    /// Represents the "small" type code point tries for the
+    /// [`TrieType`] trait. The "fast max" limit is set to `0x0fff`.
+    Small = 1,
+}
+
+// TrieValue trait
+
+// AsULE is AsUnalignedLittleEndian, i.e. "allowed in a zerovec"
+
+/// A trait representing the values stored in the data array of a [`CodePointTrie`].
+/// This trait is used as a type parameter in constructing a `CodePointTrie`.
+///
+/// This trait can be implemented on anything that can be represented as a u32s worth of data.
+pub trait TrieValue: Copy + Eq + PartialEq + zerovec::ule::AsULE + 'static {
+    /// Last-resort fallback value to return if we cannot read data from the trie.
+    ///
+    /// In most cases, the error value is read from the last element of the `data` array,
+    /// this value is used for empty codepointtrie arrays
+    /// Error type when converting from a u32 to this `TrieValue`.
+    type TryFromU32Error: Display;
+    /// A parsing function that is primarily motivated by deserialization contexts.
+    /// When the serialization type width is smaller than 32 bits, then it is expected
+    /// that the call site will widen the value to a `u32` first.
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error>;
+
+    /// A method for converting back to a `u32` that can roundtrip through
+    /// [`Self::try_from_u32()`]. The default implementation of this trait
+    /// method panics in debug mode and returns 0 in release mode.
+    ///
+    /// This method is allowed to have GIGO behavior when fed a value that has
+    /// no corresponding `u32` (since such values cannot be stored in the trie)
+    fn to_u32(self) -> u32;
+}
+
+macro_rules! impl_primitive_trie_value {
+    ($primitive:ty, $error:ty) => {
+        impl TrieValue for $primitive {
+            type TryFromU32Error = $error;
+            fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+                Self::try_from(i)
+            }
+
+            fn to_u32(self) -> u32 {
+                // bitcast when the same size, zero-extend/sign-extend
+                // when not the same size
+                self as u32
+            }
+        }
+    };
+}
+
+impl_primitive_trie_value!(u8, TryFromIntError);
+impl_primitive_trie_value!(u16, TryFromIntError);
+impl_primitive_trie_value!(u32, Infallible);
+impl_primitive_trie_value!(i8, TryFromIntError);
+impl_primitive_trie_value!(i16, TryFromIntError);
+impl_primitive_trie_value!(i32, TryFromIntError);
+impl_primitive_trie_value!(char, CharTryFromError);
+
+/// Helper function used by [`get_range`]. Converts occurrences of trie's null
+/// value into the provided `null_value`.
+///
+/// Note: the ICU version of this helper function uses a `ValueFilter` function
+/// to apply a transform on a non-null value. But currently, this implementation
+/// stops short of that functionality, and instead leaves the non-null trie value
+/// untouched. This is equivalent to having a `ValueFilter` function that is the
+/// identity function.
+fn maybe_filter_value<T: TrieValue>(value: T, trie_null_value: T, null_value: T) -> T {
+    if value == trie_null_value {
+        null_value
+    } else {
+        value
+    }
+}
+
+/// This struct represents a de-serialized [`CodePointTrie`] that was exported from
+/// ICU binary data.
+///
+/// For more information:
+/// - [ICU Site design doc](http://site.icu-project.org/design/struct/utrie)
+/// - [ICU User Guide section on Properties lookup](https://unicode-org.github.io/icu/userguide/strings/properties.html#lookup)
+// serde impls in crate::serde
+#[derive(Debug, Eq, PartialEq, Yokeable, ZeroFrom)]
+pub struct CodePointTrie<'trie, T: TrieValue> {
+    pub(crate) header: CodePointTrieHeader,
+    pub(crate) index: ZeroVec<'trie, u16>,
+    pub(crate) data: ZeroVec<'trie, T>,
+    // serde impl skips this field
+    #[zerofrom(clone)] // TrieValue is Copy, this allows us to avoid
+    // a T: ZeroFrom bound
+    pub(crate) error_value: T,
+}
+
+/// This struct contains the fixed-length header fields of a [`CodePointTrie`].
+#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = icu_collections::codepointtrie))]
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Yokeable, ZeroFrom)]
+pub struct CodePointTrieHeader {
+    /// The code point of the start of the last range of the trie. A
+    /// range is defined as a partition of the code point space such that the
+    /// value in this trie associated with all code points of the same range is
+    /// the same.
+    ///
+    /// For the property value data for many Unicode properties,
+    /// often times, `high_start` is `U+10000` or lower. In such cases, not
+    /// reserving space in the `index` array for duplicate values is a large
+    /// savings. The "highValue" associated with the `high_start` range is
+    /// stored at the second-to-last position of the `data` array.
+    /// (See `impl_const::HIGH_VALUE_NEG_DATA_OFFSET`.)
+    pub high_start: u32,
+    /// A version of the `high_start` value that is right-shifted 12 spaces,
+    /// but is rounded up to a multiple `0x1000` for easy testing from UTF-8
+    /// lead bytes.
+    pub shifted12_high_start: u16,
+    /// Offset for the null block in the "index-3" table of the `index` array.
+    /// Set to an impossibly high value (e.g., `0xffff`) if there is no
+    /// dedicated index-3 null block.
+    pub index3_null_offset: u16,
+    /// Internal data null block offset, not shifted.
+    /// Set to an impossibly high value (e.g., `0xfffff`) if there is no
+    /// dedicated data null block.
+    pub data_null_offset: u32,
+    /// The value stored in the trie that represents a null value being
+    /// associated to a code point.
+    pub null_value: u32,
+    /// The enum value representing the type of trie, where trie type is as it
+    /// is defined in ICU (ex: Fast, Small).
+    pub trie_type: TrieType,
+}
+
+impl TryFrom<u8> for TrieType {
+    type Error = crate::codepointtrie::error::Error;
+
+    fn try_from(trie_type_int: u8) -> Result<TrieType, crate::codepointtrie::error::Error> {
+        match trie_type_int {
+            0 => Ok(TrieType::Fast),
+            1 => Ok(TrieType::Small),
+            _ => Err(crate::codepointtrie::error::Error::FromDeserialized {
+                reason: "Cannot parse value for trie_type",
+            }),
+        }
+    }
+}
+
+// Helper macro that turns arithmetic into wrapping-in-release, checked-in-debug arithmetic
+//
+// This is rustc's default behavior anyway, however some projects like Android deliberately
+// enable overflow checks. CodePointTrie::get() is intended to be used in Android bionic which
+// cares about codesize and we don't want the pile of panicking infrastructure brought in by overflow
+// checks, so we force wrapping in release.
+// See #6052
+macro_rules! w(
+    // Note: these matchers are not perfect since you cannot have an operator after an expr matcher
+    // Use variables if you need complex first operands.
+    ($a:tt + $b:expr) => {
+        {
+            #[allow(unused_parens)]
+            let a = $a;
+            let b = $b;
+            debug_assert!(a.checked_add(b).is_some());
+            $a.wrapping_add($b)
+        }
+    };
+    ($a:tt - $b:expr) => {
+
+        {
+            #[allow(unused_parens)]
+            let a = $a;
+            let b = $b;
+            debug_assert!(a.checked_sub(b).is_some());
+            $a.wrapping_sub($b)
+        }
+    };
+    ($a:tt * $b:expr) => {
+        {
+            #[allow(unused_parens)]
+            let a = $a;
+            let b = $b;
+            debug_assert!(a.checked_mul(b).is_some());
+            $a.wrapping_mul($b)
+        }
+    };
+);
+
+impl<'trie, T: TrieValue> CodePointTrie<'trie, T> {
+    #[doc(hidden)] // databake internal
+    pub const fn from_parts(
+        header: CodePointTrieHeader,
+        index: ZeroVec<'trie, u16>,
+        data: ZeroVec<'trie, T>,
+        error_value: T,
+    ) -> Self {
+        Self {
+            header,
+            index,
+            data,
+            error_value,
+        }
+    }
+
+    /// Returns a new [`CodePointTrie`] backed by borrowed data for the `index`
+    /// array and `data` array, whose data values have width `W`.
+    pub fn try_new(
+        header: CodePointTrieHeader,
+        index: ZeroVec<'trie, u16>,
+        data: ZeroVec<'trie, T>,
+    ) -> Result<CodePointTrie<'trie, T>, Error> {
+        // Validation invariants are not needed here when constructing a new
+        // `CodePointTrie` because:
+        //
+        // - Rust includes the size of a slice (or Vec or similar), which allows it
+        //   to prevent lookups at out-of-bounds indices, whereas in C++, it is the
+        //   programmer's responsibility to keep track of length info.
+        // - For lookups into collections, Rust guarantees that a fallback value will
+        //   be returned in the case of `.get()` encountering a lookup error, via
+        //   the `Option` type.
+        // - The `ZeroVec` serializer stores the length of the array along with the
+        //   ZeroVec data, meaning that a deserializer would also see that length info.
+
+        let error_value = data.last().ok_or(Error::EmptyDataVector)?;
+        let trie: CodePointTrie<'trie, T> = CodePointTrie {
+            header,
+            index,
+            data,
+            error_value,
+        };
+        Ok(trie)
+    }
+
+    /// Returns the position in the data array containing the trie's stored
+    /// error value.
+    #[inline(always)] // `always` based on normalizer benchmarking
+    fn trie_error_val_index(&self) -> u32 {
+        // We use wrapping_sub here to avoid panicky overflow checks.
+        // len should always be > 1, but if it isn't this will just cause GIGO behavior of producing
+        // None on `.get()`
+        debug_assert!(self.data.len() as u32 >= ERROR_VALUE_NEG_DATA_OFFSET);
+        w!((self.data.len() as u32) - ERROR_VALUE_NEG_DATA_OFFSET)
+    }
+
+    fn internal_small_index(&self, code_point: u32) -> u32 {
+        // We use wrapping arithmetic here to avoid overflow checks making their way into binaries
+        // with overflow checks enabled. Ultimately this code ends up as a checked index, so any
+        // bugs here will cause GIGO
+        let mut index1_pos: u32 = code_point >> SHIFT_1;
+        if self.header.trie_type == TrieType::Fast {
+            debug_assert!(
+                FAST_TYPE_FAST_INDEXING_MAX < code_point && code_point < self.header.high_start
+            );
+            index1_pos = w!(index1_pos + BMP_INDEX_LENGTH - OMITTED_BMP_INDEX_1_LENGTH);
+        } else {
+            assert!(code_point < self.header.high_start && self.header.high_start > SMALL_LIMIT);
+            index1_pos = w!(index1_pos + SMALL_INDEX_LENGTH);
+        }
+        let index1_val = if let Some(index1_val) = self.index.get(index1_pos as usize) {
+            index1_val
+        } else {
+            return self.trie_error_val_index();
+        };
+        let index3_block_idx: u32 =
+            w!((index1_val as u32) + (code_point >> SHIFT_2) & INDEX_2_MASK);
+        let mut index3_block: u32 =
+            if let Some(index3_block) = self.index.get(index3_block_idx as usize) {
+                index3_block as u32
+            } else {
+                return self.trie_error_val_index();
+            };
+        let mut index3_pos: u32 = (code_point >> SHIFT_3) & INDEX_3_MASK;
+        let mut data_block: u32;
+        if index3_block & 0x8000 == 0 {
+            // 16-bit indexes
+            data_block =
+                if let Some(data_block) = self.index.get(w!(index3_block + index3_pos) as usize) {
+                    data_block as u32
+                } else {
+                    return self.trie_error_val_index();
+                };
+        } else {
+            // 18-bit indexes stored in groups of 9 entries per 8 indexes.
+            index3_block = w!((index3_block & 0x7fff) + w!((index3_pos & !7) + index3_pos >> 3));
+            index3_pos &= 7;
+            data_block = if let Some(data_block) = self.index.get(index3_block as usize) {
+                data_block as u32
+            } else {
+                return self.trie_error_val_index();
+            };
+            data_block = (data_block << w!(2u32 + w!(2u32 * index3_pos))) & 0x30000;
+            index3_block += 1;
+            data_block =
+                if let Some(index3_val) = self.index.get(w!(index3_block + index3_pos) as usize) {
+                    data_block | (index3_val as u32)
+                } else {
+                    return self.trie_error_val_index();
+                };
+        }
+        // Returns data_pos == data_block (offset) +
+        //     portion of code_point bit field for last (4th) lookup
+        w!(data_block + code_point & SMALL_DATA_MASK)
+    }
+
+    /// Returns the position in the `data` array for the given code point,
+    /// where this code point is at or above the fast limit associated for the
+    /// `trie_type`. We will refer to that limit as "`fastMax`" here.
+    ///
+    /// A lookup of the value in the code point trie for a code point in the
+    /// code point space range [`fastMax`, `high_start`) will be a 4-step
+    /// lookup: 3 lookups in the `index` array and one lookup in the `data`
+    /// array. Lookups for code points in the range [`high_start`,
+    /// `CODE_POINT_MAX`] are short-circuited to be a single lookup, see
+    /// [`CodePointTrieHeader::high_start`].
+    fn small_index(&self, code_point: u32) -> u32 {
+        if code_point >= self.header.high_start {
+            w!((self.data.len() as u32) - HIGH_VALUE_NEG_DATA_OFFSET)
+        } else {
+            self.internal_small_index(code_point) // helper fn
+        }
+    }
+
+    /// Returns the position in the `data` array for the given code point,
+    /// where this code point is below the fast limit associated for the
+    /// `trie type`. We will refer to that limit as "`fastMax`" here.
+    ///
+    /// A lookup of the value in the code point trie for a code point in the
+    /// code point space range [0, `fastMax`) will be a 2-step lookup: 1
+    /// lookup in the `index` array and one lookup in the `data` array. By
+    /// design, for trie type `T`, there is an element allocated in the `index`
+    /// array for each block of code points in [0, `fastMax`), which in
+    /// turn guarantees that those code points are represented and only need 1
+    /// lookup.
+    #[inline(always)] // `always` based on normalizer benchmarking
+    fn fast_index(&self, code_point: u32) -> u32 {
+        let index_array_pos: u32 = code_point >> FAST_TYPE_SHIFT;
+        let index_array_val: u16 =
+            if let Some(index_array_val) = self.index.get(index_array_pos as usize) {
+                index_array_val
+            } else {
+                return self.trie_error_val_index();
+            };
+        let masked_cp = code_point & FAST_TYPE_DATA_MASK;
+        let index_array_val = index_array_val as u32;
+        let fast_index_val: u32 = w!(index_array_val + masked_cp);
+        fast_index_val
+    }
+
+    /// Returns the value that is associated with `code_point` in this [`CodePointTrie`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointtrie::planes;
+    /// let trie = planes::get_planes_trie();
+    ///
+    /// assert_eq!(0, trie.get32(0x41)); // 'A' as u32
+    /// assert_eq!(0, trie.get32(0x13E0)); // 'Ꮰ' as u32
+    /// assert_eq!(1, trie.get32(0x10044)); // '𐁄' as u32
+    /// ```
+    #[inline(always)] // `always` based on normalizer benchmarking
+    pub fn get32(&self, code_point: u32) -> T {
+        // If we cannot read from the data array, then return the sentinel value
+        // self.error_value() for the instance type for T: TrieValue.
+        self.get32_ule(code_point)
+            .map(|t| T::from_unaligned(*t))
+            .unwrap_or(self.error_value)
+    }
+
+    /// Returns the value that is associated with `char` in this [`CodePointTrie`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointtrie::planes;
+    /// let trie = planes::get_planes_trie();
+    ///
+    /// assert_eq!(0, trie.get('A')); // 'A' as u32
+    /// assert_eq!(0, trie.get('Ꮰ')); // 'Ꮰ' as u32
+    /// assert_eq!(1, trie.get('𐁄')); // '𐁄' as u32
+    /// ```
+    #[inline(always)]
+    pub fn get(&self, c: char) -> T {
+        self.get32(u32::from(c))
+    }
+
+    /// Returns a reference to the ULE of the value that is associated with `code_point` in this [`CodePointTrie`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointtrie::planes;
+    /// let trie = planes::get_planes_trie();
+    ///
+    /// assert_eq!(Some(&0), trie.get32_ule(0x41)); // 'A' as u32
+    /// assert_eq!(Some(&0), trie.get32_ule(0x13E0)); // 'Ꮰ' as u32
+    /// assert_eq!(Some(&1), trie.get32_ule(0x10044)); // '𐁄' as u32
+    /// ```
+    #[inline(always)] // `always` based on normalizer benchmarking
+    pub fn get32_ule(&self, code_point: u32) -> Option<&T::ULE> {
+        // All code points up to the fast max limit are represented
+        // individually in the `index` array to hold their `data` array position, and
+        // thus only need 2 lookups for a [CodePointTrie::get()](`crate::codepointtrie::CodePointTrie::get`).
+        // Code points above the "fast max" limit require 4 lookups.
+        let fast_max = match self.header.trie_type {
+            TrieType::Fast => FAST_TYPE_FAST_INDEXING_MAX,
+            TrieType::Small => SMALL_TYPE_FAST_INDEXING_MAX,
+        };
+        let data_pos: u32 = if code_point <= fast_max {
+            Self::fast_index(self, code_point)
+        } else if code_point <= CODE_POINT_MAX {
+            Self::small_index(self, code_point)
+        } else {
+            self.trie_error_val_index()
+        };
+        // Returns the trie value (or trie's error value).
+        self.data.as_ule_slice().get(data_pos as usize)
+    }
+
+    /// Converts the [`CodePointTrie`] into one that returns another type of the same size.
+    ///
+    /// Borrowed data remains borrowed, and owned data remains owned.
+    ///
+    /// If the old and new types are not the same size, use
+    /// [`CodePointTrie::try_alloc_map_value`].
+    ///
+    /// # Panics
+    ///
+    /// Panics if `T` and `P` are different sizes.
+    ///
+    /// More specifically, panics if [`ZeroVec::try_into_converted()`] panics when converting
+    /// `ZeroVec<T>` into `ZeroVec<P>`, which happens if `T::ULE` and `P::ULE` differ in size.
+    ///
+    /// # Examples
+    ///
+    /// ```no_run
+    /// use icu::collections::codepointtrie::planes;
+    /// use icu::collections::codepointtrie::CodePointTrie;
+    ///
+    /// let planes_trie_u8: CodePointTrie<u8> = planes::get_planes_trie();
+    /// let planes_trie_i8: CodePointTrie<i8> =
+    ///     planes_trie_u8.try_into_converted().expect("infallible");
+    ///
+    /// assert_eq!(planes_trie_i8.get32(0x30000), 3);
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn try_into_converted<P>(self) -> Result<CodePointTrie<'trie, P>, UleError>
+    where
+        P: TrieValue,
+    {
+        let converted_data = self.data.try_into_converted()?;
+        let error_ule = self.error_value.to_unaligned();
+        let slice = &[error_ule];
+        let error_vec = ZeroVec::<T>::new_borrowed(slice);
+        let error_converted = error_vec.try_into_converted::<P>()?;
+        #[allow(clippy::expect_used)] // we know this cannot fail
+        Ok(CodePointTrie {
+            header: self.header,
+            index: self.index,
+            data: converted_data,
+            error_value: error_converted
+                .get(0)
+                .expect("vector known to have one element"),
+        })
+    }
+
+    /// Maps the [`CodePointTrie`] into one that returns a different type.
+    ///
+    /// This function returns owned data.
+    ///
+    /// If the old and new types are the same size, use the more efficient
+    /// [`CodePointTrie::try_into_converted`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointtrie::planes;
+    /// use icu::collections::codepointtrie::CodePointTrie;
+    ///
+    /// let planes_trie_u8: CodePointTrie<u8> = planes::get_planes_trie();
+    /// let planes_trie_u16: CodePointTrie<u16> = planes_trie_u8
+    ///     .try_alloc_map_value(TryFrom::try_from)
+    ///     .expect("infallible");
+    ///
+    /// assert_eq!(planes_trie_u16.get32(0x30000), 3);
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn try_alloc_map_value<P, E>(
+        &self,
+        mut f: impl FnMut(T) -> Result<P, E>,
+    ) -> Result<CodePointTrie<'trie, P>, E>
+    where
+        P: TrieValue,
+    {
+        let error_converted = f(self.error_value)?;
+        let converted_data = self.data.iter().map(f).collect::<Result<ZeroVec<P>, E>>()?;
+        Ok(CodePointTrie {
+            header: self.header,
+            index: self.index.clone(),
+            data: converted_data,
+            error_value: error_converted,
+        })
+    }
+
+    /// Returns a [`CodePointMapRange`] struct which represents a range of code
+    /// points associated with the same trie value. The returned range will be
+    /// the longest stretch of consecutive code points starting at `start` that
+    /// share this value.
+    ///
+    /// This method is designed to use the internal details of
+    /// the structure of [`CodePointTrie`] to be optimally efficient. This will
+    /// outperform a naive approach that just uses [`CodePointTrie::get()`].
+    ///
+    /// This method provides lower-level functionality that can be used in the
+    /// implementation of other methods that are more convenient to the user.
+    /// To obtain an optimal partition of the code point space for
+    /// this trie resulting in the fewest number of ranges, see
+    /// [`CodePointTrie::iter_ranges()`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointtrie::planes;
+    ///
+    /// let trie = planes::get_planes_trie();
+    ///
+    /// const CODE_POINT_MAX: u32 = 0x10ffff;
+    /// let start = 0x1_0000;
+    /// let exp_end = 0x1_ffff;
+    ///
+    /// let start_val = trie.get32(start);
+    /// assert_eq!(trie.get32(exp_end), start_val);
+    /// assert_ne!(trie.get32(exp_end + 1), start_val);
+    ///
+    /// use icu::collections::codepointtrie::CodePointMapRange;
+    ///
+    /// let cpm_range: CodePointMapRange<u8> = trie.get_range(start).unwrap();
+    ///
+    /// assert_eq!(cpm_range.range.start(), &start);
+    /// assert_eq!(cpm_range.range.end(), &exp_end);
+    /// assert_eq!(cpm_range.value, start_val);
+    ///
+    /// // `start` can be any code point, whether or not it lies on the boundary
+    /// // of a maximally large range that still contains `start`
+    ///
+    /// let submaximal_1_start = start + 0x1234;
+    /// let submaximal_1 = trie.get_range(submaximal_1_start).unwrap();
+    /// assert_eq!(submaximal_1.range.start(), &0x1_1234);
+    /// assert_eq!(submaximal_1.range.end(), &0x1_ffff);
+    /// assert_eq!(submaximal_1.value, start_val);
+    ///
+    /// let submaximal_2_start = start + 0xffff;
+    /// let submaximal_2 = trie.get_range(submaximal_2_start).unwrap();
+    /// assert_eq!(submaximal_2.range.start(), &0x1_ffff);
+    /// assert_eq!(submaximal_2.range.end(), &0x1_ffff);
+    /// assert_eq!(submaximal_2.value, start_val);
+    /// ```
+    pub fn get_range(&self, start: u32) -> Option<CodePointMapRange<T>> {
+        // Exit early if the start code point is out of range, or if it is
+        // in the last range of code points in high_start..=CODE_POINT_MAX
+        // (start- and end-inclusive) that all share the same trie value.
+        if CODE_POINT_MAX < start {
+            return None;
+        }
+        if start >= self.header.high_start {
+            let di: usize = self.data.len() - (HIGH_VALUE_NEG_DATA_OFFSET as usize);
+            let value: T = self.data.get(di)?;
+            return Some(CodePointMapRange {
+                range: start..=CODE_POINT_MAX,
+                value,
+            });
+        }
+
+        let null_value: T = T::try_from_u32(self.header.null_value).ok()?;
+
+        let mut prev_i3_block: u32 = u32::MAX; // using u32::MAX (instead of -1 as an i32 in ICU)
+        let mut prev_block: u32 = u32::MAX; // using u32::MAX (instead of -1 as an i32 in ICU)
+        let mut c: u32 = start;
+        let mut trie_value: T = self.error_value();
+        let mut value: T = self.error_value();
+        let mut have_value: bool = false;
+
+        loop {
+            let i3_block: u32;
+            let mut i3: u32;
+            let i3_block_length: u32;
+            let data_block_length: u32;
+
+            // Initialize values before beginning the iteration in the subsequent
+            // `loop` block. In particular, use the "i3*" local variables
+            // (representing the `index` array position's offset + increment
+            // for a 3rd-level trie lookup) to help initialize the data block
+            // variable `block` in the loop for the `data` array.
+            //
+            // When a lookup code point is <= the trie's *_FAST_INDEXING_MAX that
+            // corresponds to its `trie_type`, the lookup only takes 2 steps
+            // (once into the `index`, once into the `data` array); otherwise,
+            // takes 4 steps (3 iterative lookups into the `index`, once more
+            // into the `data` array). So for convenience's sake, when we have the
+            // 2-stage lookup, reuse the "i3*" variable names for the first lookup.
+            if c <= 0xffff
+                && (self.header.trie_type == TrieType::Fast || c <= SMALL_TYPE_FAST_INDEXING_MAX)
+            {
+                i3_block = 0;
+                i3 = c >> FAST_TYPE_SHIFT;
+                i3_block_length = if self.header.trie_type == TrieType::Fast {
+                    BMP_INDEX_LENGTH
+                } else {
+                    SMALL_INDEX_LENGTH
+                };
+                data_block_length = FAST_TYPE_DATA_BLOCK_LENGTH;
+            } else {
+                // Use the multi-stage index.
+                let mut i1: u32 = c >> SHIFT_1;
+                if self.header.trie_type == TrieType::Fast {
+                    debug_assert!(0xffff < c && c < self.header.high_start);
+                    i1 = i1 + BMP_INDEX_LENGTH - OMITTED_BMP_INDEX_1_LENGTH;
+                } else {
+                    debug_assert!(
+                        c < self.header.high_start && self.header.high_start > SMALL_LIMIT
+                    );
+                    i1 += SMALL_INDEX_LENGTH;
+                }
+                let i2: u16 = self.index.get(i1 as usize)?;
+                let i3_block_idx: u32 = (i2 as u32) + ((c >> SHIFT_2) & INDEX_2_MASK);
+                i3_block = if let Some(i3b) = self.index.get(i3_block_idx as usize) {
+                    i3b as u32
+                } else {
+                    return None;
+                };
+                if i3_block == prev_i3_block && (c - start) >= CP_PER_INDEX_2_ENTRY {
+                    // The index-3 block is the same as the previous one, and filled with value.
+                    debug_assert!((c & (CP_PER_INDEX_2_ENTRY - 1)) == 0);
+                    c += CP_PER_INDEX_2_ENTRY;
+
+                    if c >= self.header.high_start {
+                        break;
+                    } else {
+                        continue;
+                    }
+                }
+                prev_i3_block = i3_block;
+                if i3_block == self.header.index3_null_offset as u32 {
+                    // This is the index-3 null block.
+                    // All of the `data` array blocks pointed to by the values
+                    // in this block of the `index` 3rd-stage subarray will
+                    // contain this trie's null_value. So if we are in the middle
+                    // of a range, end it and return early, otherwise start a new
+                    // range of null values.
+                    if have_value {
+                        if null_value != value {
+                            return Some(CodePointMapRange {
+                                range: start..=(c - 1),
+                                value,
+                            });
+                        }
+                    } else {
+                        trie_value = T::try_from_u32(self.header.null_value).ok()?;
+                        value = null_value;
+                        have_value = true;
+                    }
+                    prev_block = self.header.data_null_offset;
+                    c = (c + CP_PER_INDEX_2_ENTRY) & !(CP_PER_INDEX_2_ENTRY - 1);
+
+                    if c >= self.header.high_start {
+                        break;
+                    } else {
+                        continue;
+                    }
+                }
+                i3 = (c >> SHIFT_3) & INDEX_3_MASK;
+                i3_block_length = INDEX_3_BLOCK_LENGTH;
+                data_block_length = SMALL_DATA_BLOCK_LENGTH;
+            }
+
+            // Enumerate data blocks for one index-3 block.
+            loop {
+                let mut block: u32;
+                if (i3_block & 0x8000) == 0 {
+                    block = if let Some(b) = self.index.get((i3_block + i3) as usize) {
+                        b as u32
+                    } else {
+                        return None;
+                    };
+                } else {
+                    // 18-bit indexes stored in groups of 9 entries per 8 indexes.
+                    let mut group: u32 = (i3_block & 0x7fff) + (i3 & !7) + (i3 >> 3);
+                    let gi: u32 = i3 & 7;
+                    let gi_val: u32 = if let Some(giv) = self.index.get(group as usize) {
+                        giv.into()
+                    } else {
+                        return None;
+                    };
+                    block = (gi_val << (2 + (2 * gi))) & 0x30000;
+                    group += 1;
+                    let ggi_val: u32 = if let Some(ggiv) = self.index.get((group + gi) as usize) {
+                        ggiv as u32
+                    } else {
+                        return None;
+                    };
+                    block |= ggi_val;
+                }
+
+                // If our previous and current return values of the 3rd-stage `index`
+                // lookup yield the same `data` block offset, and if we already know that
+                // the entire `data` block / subarray starting at that offset stores
+                // `value` and nothing else, then we can extend our range by the length
+                // of a data block and continue.
+                // Otherwise, we have to iterate over the values stored in the
+                // new data block to see if they differ from `value`.
+                if block == prev_block && (c - start) >= data_block_length {
+                    // The block is the same as the previous one, and filled with value.
+                    debug_assert!((c & (data_block_length - 1)) == 0);
+                    c += data_block_length;
+                } else {
+                    let data_mask: u32 = data_block_length - 1;
+                    prev_block = block;
+                    if block == self.header.data_null_offset {
+                        // This is the data null block.
+                        // If we are in the middle of a range, end it and
+                        // return early, otherwise start a new range of null
+                        // values.
+                        if have_value {
+                            if null_value != value {
+                                return Some(CodePointMapRange {
+                                    range: start..=(c - 1),
+                                    value,
+                                });
+                            }
+                        } else {
+                            trie_value = T::try_from_u32(self.header.null_value).ok()?;
+                            value = null_value;
+                            have_value = true;
+                        }
+                        c = (c + data_block_length) & !data_mask;
+                    } else {
+                        let mut di: u32 = block + (c & data_mask);
+                        let mut trie_value_2: T = self.data.get(di as usize)?;
+                        if have_value {
+                            if trie_value_2 != trie_value {
+                                if maybe_filter_value(
+                                    trie_value_2,
+                                    T::try_from_u32(self.header.null_value).ok()?,
+                                    null_value,
+                                ) != value
+                                {
+                                    return Some(CodePointMapRange {
+                                        range: start..=(c - 1),
+                                        value,
+                                    });
+                                }
+                                // `trie_value` stores the previous value that was retrieved
+                                // from the trie.
+                                // `value` stores the value associated for the range (return
+                                // value) that we are currently building, which is computed
+                                // as a transformation by applying maybe_filter_value()
+                                // to the trie value.
+                                // The current trie value `trie_value_2` within this data block
+                                // differs here from the previous value in `trie_value`.
+                                // But both map to `value` after applying `maybe_filter_value`.
+                                // It is not clear whether the previous or the current trie value
+                                // (or neither) is more likely to match potential subsequent trie
+                                // values that would extend the range by mapping to `value`.
+                                // On the assumption of locality -- often times consecutive
+                                // characters map to the same trie values -- remembering the new
+                                // one might make it faster to extend this range further
+                                // (by increasing the chance that the next `trie_value_2 !=
+                                // trie_value` test will be false).
+                                trie_value = trie_value_2; // may or may not help
+                            }
+                        } else {
+                            trie_value = trie_value_2;
+                            value = maybe_filter_value(
+                                trie_value_2,
+                                T::try_from_u32(self.header.null_value).ok()?,
+                                null_value,
+                            );
+                            have_value = true;
+                        }
+
+                        c += 1;
+                        while (c & data_mask) != 0 {
+                            di += 1;
+                            trie_value_2 = self.data.get(di as usize)?;
+                            if trie_value_2 != trie_value {
+                                if maybe_filter_value(
+                                    trie_value_2,
+                                    T::try_from_u32(self.header.null_value).ok()?,
+                                    null_value,
+                                ) != value
+                                {
+                                    return Some(CodePointMapRange {
+                                        range: start..=(c - 1),
+                                        value,
+                                    });
+                                }
+                                // `trie_value` stores the previous value that was retrieved
+                                // from the trie.
+                                // `value` stores the value associated for the range (return
+                                // value) that we are currently building, which is computed
+                                // as a transformation by applying maybe_filter_value()
+                                // to the trie value.
+                                // The current trie value `trie_value_2` within this data block
+                                // differs here from the previous value in `trie_value`.
+                                // But both map to `value` after applying `maybe_filter_value`.
+                                // It is not clear whether the previous or the current trie value
+                                // (or neither) is more likely to match potential subsequent trie
+                                // values that would extend the range by mapping to `value`.
+                                // On the assumption of locality -- often times consecutive
+                                // characters map to the same trie values -- remembering the new
+                                // one might make it faster to extend this range further
+                                // (by increasing the chance that the next `trie_value_2 !=
+                                // trie_value` test will be false).
+                                trie_value = trie_value_2; // may or may not help
+                            }
+
+                            c += 1;
+                        }
+                    }
+                }
+
+                i3 += 1;
+                if i3 >= i3_block_length {
+                    break;
+                }
+            }
+
+            if c >= self.header.high_start {
+                break;
+            }
+        }
+
+        debug_assert!(have_value);
+
+        // Now that c >= high_start, compare `value` to `high_value` to see
+        // if we can merge our current range with the high_value range
+        // high_start..=CODE_POINT_MAX (start- and end-inclusive), otherwise
+        // stop at high_start - 1.
+        let di: u32 = self.data.len() as u32 - HIGH_VALUE_NEG_DATA_OFFSET;
+        let high_value: T = self.data.get(di as usize)?;
+        if maybe_filter_value(
+            high_value,
+            T::try_from_u32(self.header.null_value).ok()?,
+            null_value,
+        ) != value
+        {
+            c -= 1;
+        } else {
+            c = CODE_POINT_MAX;
+        }
+        Some(CodePointMapRange {
+            range: start..=c,
+            value,
+        })
+    }
+
+    /// Yields an [`Iterator`] returning ranges of consecutive code points that
+    /// share the same value in the [`CodePointTrie`], as given by
+    /// [`CodePointTrie::get_range()`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use core::ops::RangeInclusive;
+    /// use icu::collections::codepointtrie::planes;
+    /// use icu::collections::codepointtrie::CodePointMapRange;
+    ///
+    /// let planes_trie = planes::get_planes_trie();
+    ///
+    /// let mut ranges = planes_trie.iter_ranges();
+    ///
+    /// for plane in 0..=16 {
+    ///     let exp_start = plane * 0x1_0000;
+    ///     let exp_end = exp_start + 0xffff;
+    ///     assert_eq!(
+    ///         ranges.next(),
+    ///         Some(CodePointMapRange {
+    ///             range: exp_start..=exp_end,
+    ///             value: plane as u8
+    ///         })
+    ///     );
+    /// }
+    ///
+    /// // Hitting the end of the iterator returns `None`, as will subsequent
+    /// // calls to .next().
+    /// assert_eq!(ranges.next(), None);
+    /// assert_eq!(ranges.next(), None);
+    /// ```
+    pub fn iter_ranges(&self) -> CodePointMapRangeIterator<T> {
+        let init_range = Some(CodePointMapRange {
+            range: u32::MAX..=u32::MAX,
+            value: self.error_value(),
+        });
+        CodePointMapRangeIterator::<T> {
+            cpt: self,
+            cpm_range: init_range,
+        }
+    }
+
+    /// Yields an [`Iterator`] returning the ranges of the code points whose values
+    /// match `value` in the [`CodePointTrie`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointtrie::planes;
+    ///
+    /// let trie = planes::get_planes_trie();
+    ///
+    /// let plane_val = 2;
+    /// let mut sip_range_iter = trie.iter_ranges_for_value(plane_val as u8);
+    ///
+    /// let start = plane_val * 0x1_0000;
+    /// let end = start + 0xffff;
+    ///
+    /// let sip_range = sip_range_iter.next()
+    ///     .expect("Plane 2 (SIP) should exist in planes data");
+    /// assert_eq!(start..=end, sip_range);
+    ///
+    /// assert!(sip_range_iter.next().is_none());
+    pub fn iter_ranges_for_value(
+        &self,
+        value: T,
+    ) -> impl Iterator<Item = RangeInclusive<u32>> + '_ {
+        self.iter_ranges()
+            .filter(move |cpm_range| cpm_range.value == value)
+            .map(|cpm_range| cpm_range.range)
+    }
+
+    /// Yields an [`Iterator`] returning the ranges of the code points after passing
+    /// the value through a mapping function.
+    ///
+    /// This is preferable to calling `.get_ranges().map()` since it will coalesce
+    /// adjacent ranges into one.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointtrie::planes;
+    ///
+    /// let trie = planes::get_planes_trie();
+    ///
+    /// let plane_val = 2;
+    /// let mut sip_range_iter = trie.iter_ranges_mapped(|value| value != plane_val as u8).filter(|range| range.value);
+    ///
+    /// let end = plane_val * 0x1_0000 - 1;
+    ///
+    /// let sip_range = sip_range_iter.next()
+    ///     .expect("Complemented planes data should have at least one entry");
+    /// assert_eq!(0..=end, sip_range.range);
+    pub fn iter_ranges_mapped<'a, U: Eq + 'a>(
+        &'a self,
+        mut map: impl FnMut(T) -> U + Copy + 'a,
+    ) -> impl Iterator<Item = CodePointMapRange<U>> + 'a {
+        crate::iterator_utils::RangeListIteratorCoalescer::new(self.iter_ranges().map(
+            move |range| CodePointMapRange {
+                range: range.range,
+                value: map(range.value),
+            },
+        ))
+    }
+
+    /// Returns a [`CodePointInversionList`] for the code points that have the given
+    /// [`TrieValue`] in the trie.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointtrie::planes;
+    ///
+    /// let trie = planes::get_planes_trie();
+    ///
+    /// let plane_val = 2;
+    /// let sip = trie.get_set_for_value(plane_val as u8);
+    ///
+    /// let start = plane_val * 0x1_0000;
+    /// let end = start + 0xffff;
+    ///
+    /// assert!(!sip.contains32(start - 1));
+    /// assert!(sip.contains32(start));
+    /// assert!(sip.contains32(end));
+    /// assert!(!sip.contains32(end + 1));
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn get_set_for_value(&self, value: T) -> CodePointInversionList<'static> {
+        let value_ranges = self.iter_ranges_for_value(value);
+        CodePointInversionList::from_iter(value_ranges)
+    }
+
+    /// Returns the value used as an error value for this trie
+    #[inline]
+    pub fn error_value(&self) -> T {
+        self.error_value
+    }
+}
+
+#[cfg(feature = "databake")]
+impl<T: TrieValue + databake::Bake> databake::Bake for CodePointTrie<'_, T> {
+    fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+        let header = self.header.bake(env);
+        let index = self.index.bake(env);
+        let data = self.data.bake(env);
+        let error_value = self.error_value.bake(env);
+        databake::quote! { icu_collections::codepointtrie::CodePointTrie::from_parts(#header, #index, #data, #error_value) }
+    }
+}
+
+#[cfg(feature = "databake")]
+impl<T: TrieValue + databake::Bake> databake::BakeSize for CodePointTrie<'_, T> {
+    fn borrows_size(&self) -> usize {
+        self.header.borrows_size() + self.index.borrows_size() + self.data.borrows_size()
+    }
+}
+
+impl<T: TrieValue + Into<u32>> CodePointTrie<'_, T> {
+    /// Returns the value that is associated with `code_point` for this [`CodePointTrie`]
+    /// as a `u32`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::collections::codepointtrie::planes;
+    /// let trie = planes::get_planes_trie();
+    ///
+    /// let cp = '𑖎' as u32;
+    /// assert_eq!(cp, 0x1158E);
+    ///
+    /// let plane_num: u8 = trie.get32(cp);
+    /// assert_eq!(trie.get32_u32(cp), plane_num as u32);
+    /// ```
+    // Note: This API method maintains consistency with the corresponding
+    // original ICU APIs.
+    pub fn get32_u32(&self, code_point: u32) -> u32 {
+        self.get32(code_point).into()
+    }
+}
+
+impl<T: TrieValue> Clone for CodePointTrie<'_, T>
+where
+    <T as zerovec::ule::AsULE>::ULE: Clone,
+{
+    fn clone(&self) -> Self {
+        CodePointTrie {
+            header: self.header,
+            index: self.index.clone(),
+            data: self.data.clone(),
+            error_value: self.error_value,
+        }
+    }
+}
+
+/// Represents a range of consecutive code points sharing the same value in a
+/// code point map.
+///
+/// The start and end of the interval is represented as a
+/// `RangeInclusive<u32>`, and the value is represented as `T`.
+#[derive(PartialEq, Eq, Debug, Clone)]
+pub struct CodePointMapRange<T> {
+    /// Range of code points from start to end (inclusive).
+    pub range: RangeInclusive<u32>,
+    /// Trie value associated with this range.
+    pub value: T,
+}
+
+/// A custom [`Iterator`] type specifically for a code point trie that returns
+/// [`CodePointMapRange`]s.
+pub struct CodePointMapRangeIterator<'a, T: TrieValue> {
+    cpt: &'a CodePointTrie<'a, T>,
+    // Initialize `range` to Some(CodePointMapRange{ start: u32::MAX, end: u32::MAX, value: 0}).
+    // When `range` is Some(...) and has a start value different from u32::MAX, then we have
+    // returned at least one code point range due to a call to `next()`.
+    // When `range` == `None`, it means that we have hit the end of iteration. It would occur
+    // after a call to `next()` returns a None <=> we attempted to call `get_range()`
+    // with a start code point that is > CODE_POINT_MAX.
+    cpm_range: Option<CodePointMapRange<T>>,
+}
+
+impl<T: TrieValue> Iterator for CodePointMapRangeIterator<'_, T> {
+    type Item = CodePointMapRange<T>;
+
+    fn next(&mut self) -> Option<Self::Item> {
+        self.cpm_range = match &self.cpm_range {
+            Some(cpmr) => {
+                if *cpmr.range.start() == u32::MAX {
+                    self.cpt.get_range(0)
+                } else {
+                    self.cpt.get_range(cpmr.range.end() + 1)
+                }
+            }
+            None => None,
+        };
+        // Note: Clone is cheap. We can't Copy because RangeInclusive does not impl Copy.
+        self.cpm_range.clone()
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::codepointtrie::planes;
+    use alloc::vec::Vec;
+
+    #[test]
+    #[cfg(feature = "serde")]
+    fn test_serde_with_postcard_roundtrip() -> Result<(), postcard::Error> {
+        let trie = crate::codepointtrie::planes::get_planes_trie();
+        let trie_serialized: Vec<u8> = postcard::to_allocvec(&trie).unwrap();
+
+        // Assert an expected (golden data) version of the serialized trie.
+        const EXP_TRIE_SERIALIZED: &[u8] = &[
+            128, 128, 64, 128, 2, 2, 0, 0, 1, 160, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136,
+            2, 144, 2, 144, 2, 144, 2, 176, 2, 176, 2, 176, 2, 176, 2, 208, 2, 208, 2, 208, 2, 208,
+            2, 240, 2, 240, 2, 240, 2, 240, 2, 16, 3, 16, 3, 16, 3, 16, 3, 48, 3, 48, 3, 48, 3, 48,
+            3, 80, 3, 80, 3, 80, 3, 80, 3, 112, 3, 112, 3, 112, 3, 112, 3, 144, 3, 144, 3, 144, 3,
+            144, 3, 176, 3, 176, 3, 176, 3, 176, 3, 208, 3, 208, 3, 208, 3, 208, 3, 240, 3, 240, 3,
+            240, 3, 240, 3, 16, 4, 16, 4, 16, 4, 16, 4, 48, 4, 48, 4, 48, 4, 48, 4, 80, 4, 80, 4,
+            80, 4, 80, 4, 112, 4, 112, 4, 112, 4, 112, 4, 0, 0, 16, 0, 32, 0, 48, 0, 64, 0, 80, 0,
+            96, 0, 112, 0, 0, 0, 16, 0, 32, 0, 48, 0, 0, 0, 16, 0, 32, 0, 48, 0, 0, 0, 16, 0, 32,
+            0, 48, 0, 0, 0, 16, 0, 32, 0, 48, 0, 0, 0, 16, 0, 32, 0, 48, 0, 0, 0, 16, 0, 32, 0, 48,
+            0, 0, 0, 16, 0, 32, 0, 48, 0, 0, 0, 16, 0, 32, 0, 48, 0, 128, 0, 128, 0, 128, 0, 128,
+            0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128,
+            0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128,
+            0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 128, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144,
+            0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144,
+            0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 144,
+            0, 144, 0, 144, 0, 144, 0, 144, 0, 144, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160,
+            0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160,
+            0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160, 0, 160,
+            0, 160, 0, 160, 0, 160, 0, 160, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176,
+            0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176,
+            0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176, 0, 176,
+            0, 176, 0, 176, 0, 176, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192,
+            0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192,
+            0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192, 0, 192,
+            0, 192, 0, 192, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208,
+            0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208,
+            0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208, 0, 208,
+            0, 208, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224,
+            0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224,
+            0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224, 0, 224,
+            0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240,
+            0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240,
+            0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 240, 0, 0,
+            1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+            0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
+            1, 0, 1, 0, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1,
+            16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16,
+            1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 32, 1, 32, 1, 32, 1,
+            32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
+            1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
+            32, 1, 32, 1, 32, 1, 32, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48,
+            1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1,
+            48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 64, 1, 64,
+            1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1,
+            64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64,
+            1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1,
+            80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80,
+            1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1,
+            96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96,
+            1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1,
+            96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 128, 0, 136, 0, 136, 0, 136, 0, 136,
+            0, 136, 0, 136, 0, 136, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0,
+            2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2,
+            0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0,
+            168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0,
+            168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 168, 0,
+            168, 0, 168, 0, 168, 0, 168, 0, 168, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0,
+            200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0,
+            200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0, 200, 0,
+            200, 0, 200, 0, 200, 0, 200, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0,
+            232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0,
+            232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0, 232, 0,
+            232, 0, 232, 0, 232, 0, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8,
+            1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1,
+            8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40,
+            1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1,
+            40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40,
+            1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1,
+            72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72,
+            1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 104, 1, 104, 1, 104, 1, 104, 1,
+            104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1,
+            104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1,
+            104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1,
+            136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1,
+            136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1,
+            136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1,
+            168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1,
+            168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1,
+            168, 1, 168, 1, 168, 1, 168, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1,
+            200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1,
+            200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1,
+            200, 1, 200, 1, 200, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1,
+            232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1,
+            232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1,
+            232, 1, 232, 1, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2,
+            8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 8,
+            2, 8, 2, 8, 2, 8, 2, 8, 2, 8, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40,
+            2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2,
+            40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 40, 2, 72,
+            2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2,
+            72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72,
+            2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 72, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2,
+            104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2,
+            104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 104, 2,
+            104, 2, 104, 2, 104, 2, 104, 2, 104, 2, 244, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+            2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+            4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,
+            6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
+            8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10,
+            10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11,
+            11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+            12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14,
+            14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+            15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 0,
+        ];
+        assert_eq!(trie_serialized, EXP_TRIE_SERIALIZED);
+
+        let trie_deserialized = postcard::from_bytes::<CodePointTrie<u8>>(&trie_serialized)?;
+
+        assert_eq!(&trie.index, &trie_deserialized.index);
+        assert_eq!(&trie.data, &trie_deserialized.data);
+
+        assert!(!trie_deserialized.index.is_owned());
+        assert!(!trie_deserialized.data.is_owned());
+
+        Ok(())
+    }
+
+    #[test]
+    fn test_get_range() {
+        let planes_trie = planes::get_planes_trie();
+
+        let first_range: Option<CodePointMapRange<u8>> = planes_trie.get_range(0x0);
+        assert_eq!(
+            first_range,
+            Some(CodePointMapRange {
+                range: 0x0..=0xffff,
+                value: 0
+            })
+        );
+
+        let second_range: Option<CodePointMapRange<u8>> = planes_trie.get_range(0x1_0000);
+        assert_eq!(
+            second_range,
+            Some(CodePointMapRange {
+                range: 0x10000..=0x1ffff,
+                value: 1
+            })
+        );
+
+        let penultimate_range: Option<CodePointMapRange<u8>> = planes_trie.get_range(0xf_0000);
+        assert_eq!(
+            penultimate_range,
+            Some(CodePointMapRange {
+                range: 0xf_0000..=0xf_ffff,
+                value: 15
+            })
+        );
+
+        let last_range: Option<CodePointMapRange<u8>> = planes_trie.get_range(0x10_0000);
+        assert_eq!(
+            last_range,
+            Some(CodePointMapRange {
+                range: 0x10_0000..=0x10_ffff,
+                value: 16
+            })
+        );
+    }
+
+    #[test]
+    fn databake() {
+        databake::test_bake!(
+            CodePointTrie<'static, u32>,
+            const,
+            crate::codepointtrie::CodePointTrie::from_parts(
+                crate::codepointtrie::CodePointTrieHeader {
+                    high_start: 1u32,
+                    shifted12_high_start: 2u16,
+                    index3_null_offset: 3u16,
+                    data_null_offset: 4u32,
+                    null_value: 5u32,
+                    trie_type: crate::codepointtrie::TrieType::Small,
+                },
+                zerovec::ZeroVec::new(),
+                zerovec::ZeroVec::new(),
+                0u32,
+            ),
+            icu_collections,
+            [zerovec],
+        );
+    }
+}
diff --git a/vendor/icu_collections/src/codepointtrie/error.rs b/vendor/icu_collections/src/codepointtrie/error.rs
new file mode 100644
index 00000000..4cd157fc
--- /dev/null
+++ b/vendor/icu_collections/src/codepointtrie/error.rs
@@ -0,0 +1,24 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Custom error type(s) for the parent module.
+
+use displaydoc::Display;
+
+/// A custom error type for [`CodePointTrie`](super::CodePointTrie).
+#[derive(Copy, Clone, Display, Debug, PartialEq)]
+#[non_exhaustive]
+pub enum Error {
+    /// Could not construct [`CodePointTrie`](super::CodePointTrie) from deserialized values
+    #[displaydoc("Could not construct CodePointTrie from deserialized values: {reason}")]
+    FromDeserialized {
+        /// Reason for inability to deserialize values.
+        reason: &'static str,
+    },
+    /// [`CodePointTrie`](super::CodePointTrie) must be constructed from data vector with at least one element
+    #[displaydoc("CodePointTrie must be constructed from data vector with at least one element")]
+    EmptyDataVector,
+}
+
+impl core::error::Error for Error {}
diff --git a/vendor/icu_collections/src/codepointtrie/impl_const.rs b/vendor/icu_collections/src/codepointtrie/impl_const.rs
new file mode 100644
index 00000000..61e4f274
--- /dev/null
+++ b/vendor/icu_collections/src/codepointtrie/impl_const.rs
@@ -0,0 +1,76 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+pub const FAST_TYPE_SHIFT: i32 = 6;
+
+/// Number of entries in a data block for code points below the fast limit. 64=0x40
+pub const FAST_TYPE_DATA_BLOCK_LENGTH: u32 = 1 << FAST_TYPE_SHIFT;
+
+/// Mask for getting the lower bits for the in-fast-data-block offset.
+pub const FAST_TYPE_DATA_MASK: u32 = FAST_TYPE_DATA_BLOCK_LENGTH - 1;
+
+/// Fast indexing limit for "fast"-type trie
+pub const FAST_TYPE_FAST_INDEXING_MAX: u32 = 0xffff;
+
+/// Fast indexing limit for "small"-type trie
+pub const SMALL_TYPE_FAST_INDEXING_MAX: u32 = 0xfff;
+
+/// Offset from dataLength (to be subtracted) for fetching the
+/// value returned for out-of-range code points and ill-formed UTF-8/16.
+pub const ERROR_VALUE_NEG_DATA_OFFSET: u32 = 1;
+
+/// Offset from dataLength (to be subtracted) for fetching the
+/// value returned for code points highStart..U+10FFFF.
+pub const HIGH_VALUE_NEG_DATA_OFFSET: u32 = 2;
+
+/// The length of the BMP index table. 1024=0x400
+pub const BMP_INDEX_LENGTH: u32 = 0x10000 >> FAST_TYPE_SHIFT;
+
+pub const SMALL_LIMIT: u32 = 0x1000;
+
+pub const SMALL_INDEX_LENGTH: u32 = SMALL_LIMIT >> FAST_TYPE_SHIFT;
+
+/// Shift size for getting the index-3 table offset.
+pub const SHIFT_3: u32 = 4;
+
+/// Shift size for getting the index-2 table offset.
+pub const SHIFT_2: u32 = 5 + SHIFT_3;
+
+/// Shift size for getting the index-1 table offset.
+pub const SHIFT_1: u32 = 5 + SHIFT_2;
+
+/// Difference between two shift sizes,
+///  for getting an index-2 offset from an index-3 offset. 5=9-4
+pub const SHIFT_2_3: u32 = SHIFT_2 - SHIFT_3;
+
+/// Difference between two shift sizes,
+/// for getting an index-1 offset from an index-2 offset. 5=14-9
+pub const SHIFT_1_2: u32 = SHIFT_1 - SHIFT_2;
+
+/// Number of index-1 entries for the BMP. (4)
+/// This part of the index-1 table is omitted from the serialized form.
+pub const OMITTED_BMP_INDEX_1_LENGTH: u32 = 0x10000 >> SHIFT_1;
+
+/// Number of entries in an index-2 block. 32=0x20
+pub const INDEX_2_BLOCK_LENGTH: u32 = 1 << SHIFT_1_2;
+
+/// Mask for getting the lower bits for the in-index-2-block offset.
+pub const INDEX_2_MASK: u32 = INDEX_2_BLOCK_LENGTH - 1;
+
+/// Number of code points per index-2 table entry. 512=0x200
+pub const CP_PER_INDEX_2_ENTRY: u32 = 1 << SHIFT_2;
+
+/// Number of entries in an index-3 block. 32=0x20
+pub const INDEX_3_BLOCK_LENGTH: u32 = 1 << SHIFT_2_3;
+
+/// Mask for getting the lower bits for the in-index-3-block offset.
+pub const INDEX_3_MASK: u32 = INDEX_3_BLOCK_LENGTH - 1;
+
+/// Number of entries in a small data block. 16=0x10
+pub const SMALL_DATA_BLOCK_LENGTH: u32 = 1 << SHIFT_3;
+
+/// Mask for getting the lower bits for the in-small-data-block offset.
+pub const SMALL_DATA_MASK: u32 = SMALL_DATA_BLOCK_LENGTH - 1;
+
+pub const CODE_POINT_MAX: u32 = 0x10ffff;
diff --git a/vendor/icu_collections/src/codepointtrie/mod.rs b/vendor/icu_collections/src/codepointtrie/mod.rs
new file mode 100644
index 00000000..970eab4f
--- /dev/null
+++ b/vendor/icu_collections/src/codepointtrie/mod.rs
@@ -0,0 +1,51 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module provides a data structure for an time-efficient lookup of values
+//! associated to code points.
+//!
+//! It is an implementation of the existing [ICU4C UCPTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/ucptrie_8h.html)
+//! / [ICU4J CodePointTrie](https://unicode-org.github.io/icu-docs/apidoc/dev/icu4j/) API.
+//!
+//! # Architecture
+//!
+//! ICU4X [`CodePointTrie`] is designed to provide a read-only view of [`CodePointTrie`] data that is exported
+//! from ICU4C. Detailed information about the design of the data structure can be found in the documentation
+//! for the [`CodePointTrie`] struct.
+//!
+//! # Examples
+//!
+//! ## Querying a `CodePointTrie`
+//!
+//! ```
+//! use icu::collections::codepointtrie::planes;
+//! let trie = planes::get_planes_trie();
+//!
+//! assert_eq!(0, trie.get32(0x41)); // 'A' as u32
+//! assert_eq!(0, trie.get32(0x13E0)); // 'Ꮰ' as u32
+//! assert_eq!(1, trie.get32(0x10044)); // '𐁄' as u32
+//! ```
+//!
+//! [`ICU4X`]: ../icu/index.html
+
+extern crate alloc;
+
+mod cptrie;
+mod error;
+mod impl_const;
+pub mod planes;
+
+#[cfg(feature = "serde")]
+pub mod toml;
+
+#[cfg(feature = "serde")]
+mod serde;
+
+pub use cptrie::CodePointMapRange;
+pub use cptrie::CodePointMapRangeIterator;
+pub use cptrie::CodePointTrie;
+pub use cptrie::CodePointTrieHeader;
+pub use cptrie::TrieType;
+pub use cptrie::TrieValue;
+pub use error::Error as CodePointTrieError;
diff --git a/vendor/icu_collections/src/codepointtrie/planes.rs b/vendor/icu_collections/src/codepointtrie/planes.rs
new file mode 100644
index 00000000..70ab1629
--- /dev/null
+++ b/vendor/icu_collections/src/codepointtrie/planes.rs
@@ -0,0 +1,296 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Sample data for [`CodePointTrie`] that returns the code point's plane number.
+
+use crate::codepointtrie::cptrie::*;
+use zerovec::ZeroVec;
+
+const INDEX_ARRAY_AS_BYTES: &[u8] = &[
+    0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x88, 0x2, 0x90, 0x2,
+    0x90, 0x2, 0x90, 0x2, 0xb0, 0x2, 0xb0, 0x2, 0xb0, 0x2, 0xb0, 0x2, 0xd0, 0x2, 0xd0, 0x2, 0xd0,
+    0x2, 0xd0, 0x2, 0xf0, 0x2, 0xf0, 0x2, 0xf0, 0x2, 0xf0, 0x2, 0x10, 0x3, 0x10, 0x3, 0x10, 0x3,
+    0x10, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x30, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50, 0x3, 0x50,
+    0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x70, 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, 0x3, 0x90, 0x3,
+    0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xb0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xd0, 0x3, 0xf0,
+    0x3, 0xf0, 0x3, 0xf0, 0x3, 0xf0, 0x3, 0x10, 0x4, 0x10, 0x4, 0x10, 0x4, 0x10, 0x4, 0x30, 0x4,
+    0x30, 0x4, 0x30, 0x4, 0x30, 0x4, 0x50, 0x4, 0x50, 0x4, 0x50, 0x4, 0x50, 0x4, 0x70, 0x4, 0x70,
+    0x4, 0x70, 0x4, 0x70, 0x4, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, 0x40, 0x0, 0x50, 0x0,
+    0x60, 0x0, 0x70, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20,
+    0x0, 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0,
+    0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30,
+    0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0, 0x0, 0x0, 0x10, 0x0, 0x20, 0x0, 0x30, 0x0,
+    0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80,
+    0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0,
+    0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80,
+    0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x80, 0x0, 0x90, 0x0, 0x90, 0x0,
+    0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90,
+    0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0,
+    0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90,
+    0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0x90, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0,
+    0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0,
+    0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0,
+    0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0, 0x0, 0xa0,
+    0x0, 0xa0, 0x0, 0xa0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0,
+    0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0,
+    0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0,
+    0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0, 0x0, 0xb0,
+    0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0,
+    0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0,
+    0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0,
+    0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xc0, 0x0, 0xd0, 0x0, 0xd0,
+    0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0,
+    0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0,
+    0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0,
+    0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xd0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0,
+    0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0,
+    0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0,
+    0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0,
+    0xe0, 0x0, 0xe0, 0x0, 0xe0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0,
+    0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0,
+    0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0,
+    0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0, 0xf0, 0x0,
+    0xf0, 0x0, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0,
+    0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1,
+    0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0,
+    0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x0, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10,
+    0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1,
+    0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10,
+    0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1, 0x10, 0x1,
+    0x10, 0x1, 0x10, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20,
+    0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1,
+    0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20,
+    0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1, 0x20, 0x1,
+    0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30,
+    0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1,
+    0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30,
+    0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x30, 0x1, 0x40, 0x1, 0x40, 0x1,
+    0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40,
+    0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1,
+    0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40,
+    0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x40, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1,
+    0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50,
+    0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1,
+    0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50, 0x1, 0x50,
+    0x1, 0x50, 0x1, 0x50, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1,
+    0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60,
+    0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1,
+    0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60, 0x1, 0x60,
+    0x1, 0x80, 0x0, 0x88, 0x0, 0x88, 0x0, 0x88, 0x0, 0x88, 0x0, 0x88, 0x0, 0x88, 0x0, 0x88, 0x0,
+    0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2,
+    0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0,
+    0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0x2,
+    0x0, 0x2, 0x0, 0x2, 0x0, 0x2, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8,
+    0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0,
+    0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8,
+    0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0, 0xa8, 0x0,
+    0xa8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8,
+    0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0,
+    0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8,
+    0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xc8, 0x0, 0xe8, 0x0,
+    0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8,
+    0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0,
+    0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8,
+    0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0xe8, 0x0, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8,
+    0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1,
+    0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8,
+    0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1, 0x8, 0x1,
+    0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28,
+    0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1,
+    0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28,
+    0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x28, 0x1, 0x48, 0x1, 0x48, 0x1,
+    0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48,
+    0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1,
+    0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48,
+    0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x48, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1,
+    0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68,
+    0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1,
+    0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68, 0x1, 0x68,
+    0x1, 0x68, 0x1, 0x68, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1,
+    0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88,
+    0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1,
+    0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88, 0x1, 0x88,
+    0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1,
+    0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8,
+    0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1,
+    0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xa8, 0x1, 0xc8, 0x1, 0xc8,
+    0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1,
+    0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8,
+    0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1,
+    0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xc8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8,
+    0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1,
+    0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8,
+    0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1,
+    0xe8, 0x1, 0xe8, 0x1, 0xe8, 0x1, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2,
+    0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8,
+    0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2,
+    0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x8, 0x2, 0x28, 0x2, 0x28, 0x2,
+    0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28,
+    0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2,
+    0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28,
+    0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x28, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2,
+    0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48,
+    0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2,
+    0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48, 0x2, 0x48,
+    0x2, 0x48, 0x2, 0x48, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2,
+    0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68,
+    0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2,
+    0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68, 0x2, 0x68,
+    0x2,
+];
+
+/// Return a [`CodePointTrie`] that returns the Unicode plane number, an
+/// integer from 0-16 inclusive, for each code point.
+///
+/// This `CodePointTrie`
+/// does not actually represent any Unicode property, but it is provided in
+/// case it is useful to users of `CodePointTrie` for testing or other
+/// purposes. See <https://www.unicode.org/glossary/#plane>.
+pub fn get_planes_trie() -> CodePointTrie<'static, u8> {
+    let index_array_as_bytes: &[u8] = INDEX_ARRAY_AS_BYTES;
+    let data_8_array: &[u8] = &[
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
+        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
+        4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6,
+        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+        8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
+        9, 9, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xb,
+        0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xc, 0xc, 0xc,
+        0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xd, 0xd, 0xd, 0xd, 0xd,
+        0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xd, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe,
+        0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xe, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
+        0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0x10, 0x10, 0x10, 0,
+    ];
+    #[allow(clippy::unwrap_used)] // valid bytes
+    let index: ZeroVec<u16> = ZeroVec::parse_bytes(index_array_as_bytes).unwrap();
+    #[allow(clippy::unwrap_used)] // valid bytes
+    let data: ZeroVec<u8> = ZeroVec::parse_bytes(data_8_array).unwrap();
+    let high_start = 0x100000;
+    let shifted12_high_start = 0x100;
+    let index3_null_offset = 0x2;
+    let data_null_offset = 0x0;
+    let null_value = 0x0;
+    let trie_type = TrieType::Small;
+
+    let trie_header = CodePointTrieHeader {
+        high_start,
+        shifted12_high_start,
+        index3_null_offset,
+        data_null_offset,
+        null_value,
+        trie_type,
+    };
+
+    #[allow(clippy::unwrap_used)] // valid data
+    CodePointTrie::try_new(trie_header, index, data).unwrap()
+}
+
+#[cfg(test)]
+mod tests {
+    use zerovec::ZeroVec;
+
+    const INDEX_ARRAY: &[u16] = &[
+        0, 0x40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0x288, 0x290, 0x290, 0x290, 0x2b0, 0x2b0, 0x2b0, 0x2b0, 0x2d0, 0x2d0, 0x2d0,
+        0x2d0, 0x2f0, 0x2f0, 0x2f0, 0x2f0, 0x310, 0x310, 0x310, 0x310, 0x330, 0x330, 0x330, 0x330,
+        0x350, 0x350, 0x350, 0x350, 0x370, 0x370, 0x370, 0x370, 0x390, 0x390, 0x390, 0x390, 0x3b0,
+        0x3b0, 0x3b0, 0x3b0, 0x3d0, 0x3d0, 0x3d0, 0x3d0, 0x3f0, 0x3f0, 0x3f0, 0x3f0, 0x410, 0x410,
+        0x410, 0x410, 0x430, 0x430, 0x430, 0x430, 0x450, 0x450, 0x450, 0x450, 0x470, 0x470, 0x470,
+        0x470, 0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0, 0x10, 0x20, 0x30, 0, 0x10, 0x20,
+        0x30, 0, 0x10, 0x20, 0x30, 0, 0x10, 0x20, 0x30, 0, 0x10, 0x20, 0x30, 0, 0x10, 0x20, 0x30,
+        0, 0x10, 0x20, 0x30, 0, 0x10, 0x20, 0x30, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+        0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
+        0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
+        0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
+        0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0xa0, 0xa0, 0xa0, 0xa0,
+        0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0,
+        0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xb0, 0xb0,
+        0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0,
+        0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0,
+        0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
+        0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
+        0xc0, 0xc0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
+        0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
+        0xd0, 0xd0, 0xd0, 0xd0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+        0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
+        0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+        0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
+        0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100,
+        0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100,
+        0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100,
+        0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110,
+        0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x110,
+        0x110, 0x110, 0x110, 0x110, 0x110, 0x110, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120,
+        0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120,
+        0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x120, 0x130,
+        0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130,
+        0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130, 0x130,
+        0x130, 0x130, 0x130, 0x130, 0x130, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140,
+        0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140,
+        0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x140, 0x150, 0x150,
+        0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150,
+        0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150, 0x150,
+        0x150, 0x150, 0x150, 0x150, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160,
+        0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160,
+        0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x160, 0x80, 0x88, 0x88,
+        0x88, 0x88, 0x88, 0x88, 0x88, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
+        0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
+        0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
+        0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8,
+        0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
+        0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
+        0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0x108, 0x108,
+        0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108,
+        0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108, 0x108,
+        0x108, 0x108, 0x108, 0x108, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
+        0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128,
+        0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x128, 0x148, 0x148, 0x148,
+        0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148,
+        0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148, 0x148,
+        0x148, 0x148, 0x148, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168,
+        0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168,
+        0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x168, 0x188, 0x188, 0x188, 0x188,
+        0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188,
+        0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188, 0x188,
+        0x188, 0x188, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8,
+        0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8,
+        0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1a8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8,
+        0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8,
+        0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8, 0x1c8,
+        0x1c8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8,
+        0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8,
+        0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x1e8, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208,
+        0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208,
+        0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208, 0x208,
+        0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228,
+        0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x228,
+        0x228, 0x228, 0x228, 0x228, 0x228, 0x228, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248,
+        0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248,
+        0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x248, 0x268,
+        0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268,
+        0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268, 0x268,
+        0x268, 0x268, 0x268, 0x268, 0x268,
+    ];
+
+    #[test]
+    fn test_index_byte_array_literal() {
+        let index_array_as_bytes: &[u8] = super::INDEX_ARRAY_AS_BYTES;
+        let index_zv_bytes: ZeroVec<u16> =
+            ZeroVec::parse_bytes(index_array_as_bytes).expect("infallible");
+        let index_zv_aligned: ZeroVec<u16> = ZeroVec::from_slice_or_alloc(INDEX_ARRAY);
+        assert_eq!(index_zv_bytes, index_zv_aligned);
+    }
+}
diff --git a/vendor/icu_collections/src/codepointtrie/serde.rs b/vendor/icu_collections/src/codepointtrie/serde.rs
new file mode 100644
index 00000000..74b9e7bb
--- /dev/null
+++ b/vendor/icu_collections/src/codepointtrie/serde.rs
@@ -0,0 +1,52 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::codepointtrie::{CodePointTrie, CodePointTrieHeader, TrieValue};
+use serde::{de::Error, Deserialize, Deserializer, Serialize, Serializer};
+use zerofrom::ZeroFrom;
+use zerovec::ZeroVec;
+
+#[derive(Serialize, Deserialize)]
+pub struct CodePointTrieSerde<'trie, T: TrieValue> {
+    header: CodePointTrieHeader,
+    #[serde(borrow)]
+    index: ZeroVec<'trie, u16>,
+    #[serde(borrow)]
+    data: ZeroVec<'trie, T>,
+}
+
+impl<T: TrieValue + Serialize> Serialize for CodePointTrie<'_, T> {
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        let ser = CodePointTrieSerde {
+            header: self.header,
+            index: ZeroFrom::zero_from(&self.index),
+            data: ZeroFrom::zero_from(&self.data),
+        };
+        ser.serialize(serializer)
+    }
+}
+
+impl<'de, 'trie, T: TrieValue + Deserialize<'de>> Deserialize<'de> for CodePointTrie<'trie, T>
+where
+    'de: 'trie,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        let de = CodePointTrieSerde::deserialize(deserializer)?;
+        let error_value = de.data.last().ok_or_else(|| {
+            D::Error::custom("CodePointTrie vector must have at least one element")
+        })?;
+        Ok(CodePointTrie {
+            header: de.header,
+            index: de.index,
+            data: de.data,
+            error_value,
+        })
+    }
+}
diff --git a/vendor/icu_collections/src/codepointtrie/toml.rs b/vendor/icu_collections/src/codepointtrie/toml.rs
new file mode 100644
index 00000000..f8b0f7b4
--- /dev/null
+++ b/vendor/icu_collections/src/codepointtrie/toml.rs
@@ -0,0 +1,124 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Utilities for reading CodePointTrie data from TOML files.
+
+use crate::codepointtrie::error::Error;
+use crate::codepointtrie::CodePointTrie;
+use crate::codepointtrie::CodePointTrieHeader;
+use crate::codepointtrie::TrieType;
+use crate::codepointtrie::TrieValue;
+use alloc::string::String;
+use alloc::vec::Vec;
+use core::convert::TryFrom;
+use zerovec::ZeroVec;
+
+/// A Serde-compatible struct for reading serialized [`CodePointTrie`] TOML files
+/// generated by ICU4C.
+///
+/// Use `TryInto` to convert [`CodePointTrieToml`] to a proper [`CodePointTrie`].
+#[allow(clippy::upper_case_acronyms)]
+#[derive(serde::Deserialize)]
+pub struct CodePointTrieToml {
+    #[serde(skip)]
+    _short_name: String,
+    #[serde(skip)]
+    _long_name: String,
+    #[serde(skip)]
+    _name: String,
+    index: Vec<u16>,
+    data_8: Option<Vec<u8>>,
+    data_16: Option<Vec<u16>>,
+    data_32: Option<Vec<u32>>,
+    #[serde(skip)]
+    _index_length: u32,
+    #[serde(skip)]
+    _data_length: u32,
+    #[serde(rename = "highStart")]
+    high_start: u32,
+    #[serde(rename = "shifted12HighStart")]
+    shifted12_high_start: u16,
+    #[serde(rename = "type")]
+    trie_type_enum_val: u8,
+    #[serde(rename = "valueWidth")]
+    _value_width_enum_val: u8,
+    #[serde(rename = "index3NullOffset")]
+    index3_null_offset: u16,
+    #[serde(rename = "dataNullOffset")]
+    data_null_offset: u32,
+    #[serde(rename = "nullValue")]
+    null_value: u32,
+}
+
+/// Data slice from a [`CodePointTrie`] TOML.
+///
+/// ICU4C exports data as either `u8`, `u16`, or `u32`, which may be converted
+/// to other types as appropriate.
+#[allow(clippy::exhaustive_enums)] // based on a stable serialized form
+pub enum CodePointDataSlice<'a> {
+    /// A serialized [`CodePointTrie`] data array 8-bit values.
+    U8(&'a [u8]),
+    /// A serialized [`CodePointTrie`] data array 16-bit values.
+    U16(&'a [u16]),
+    /// A serialized [`CodePointTrie`] data array 32-bit values.
+    U32(&'a [u32]),
+}
+
+impl CodePointTrieToml {
+    /// Gets the `index` slice.
+    pub fn index_slice(&self) -> &[u16] {
+        self.index.as_slice()
+    }
+
+    /// Gets the `data` slice.
+    pub fn data_slice(&self) -> Result<CodePointDataSlice, Error> {
+        if let Some(data_8) = &self.data_8 {
+            Ok(CodePointDataSlice::U8(data_8.as_slice()))
+        } else if let Some(data_16) = &self.data_16 {
+            Ok(CodePointDataSlice::U16(data_16.as_slice()))
+        } else if let Some(data_32) = &self.data_32 {
+            Ok(CodePointDataSlice::U32(data_32.as_slice()))
+        } else {
+            Err(Error::FromDeserialized {
+                reason: "Did not find data array for CodePointTrie in TOML",
+            })
+        }
+    }
+}
+
+impl TryFrom<&CodePointTrieToml> for CodePointTrieHeader {
+    type Error = Error;
+
+    fn try_from(cpt_data: &CodePointTrieToml) -> Result<Self, Self::Error> {
+        let trie_type_enum: TrieType = TrieType::try_from(cpt_data.trie_type_enum_val)?;
+        Ok(CodePointTrieHeader {
+            high_start: cpt_data.high_start,
+            shifted12_high_start: cpt_data.shifted12_high_start,
+            index3_null_offset: cpt_data.index3_null_offset,
+            data_null_offset: cpt_data.data_null_offset,
+            null_value: cpt_data.null_value,
+            trie_type: trie_type_enum,
+        })
+    }
+}
+
+impl<T: TrieValue> TryFrom<&CodePointTrieToml> for CodePointTrie<'static, T> {
+    type Error = Error;
+
+    fn try_from(cpt_data: &CodePointTrieToml) -> Result<CodePointTrie<'static, T>, Self::Error> {
+        use CodePointDataSlice::*;
+        let header = CodePointTrieHeader::try_from(cpt_data)?;
+        let index: ZeroVec<u16> = ZeroVec::alloc_from_slice(&cpt_data.index);
+        let data: Result<ZeroVec<'static, T>, T::TryFromU32Error> = match cpt_data.data_slice()? {
+            U8(s) => s.iter().map(|i| T::try_from_u32(*i as u32)).collect(),
+            U16(s) => s.iter().map(|i| T::try_from_u32(*i as u32)).collect(),
+            U32(s) => s.iter().map(|i| T::try_from_u32(*i)).collect(),
+        };
+
+        let data = data.map_err(|_| Error::FromDeserialized {
+            reason: "Could not parse data array to typed array",
+        })?;
+        CodePointTrie::<T>::try_new(header, index, data)
+    }
+}
diff --git a/vendor/icu_collections/src/iterator_utils.rs b/vendor/icu_collections/src/iterator_utils.rs
new file mode 100644
index 00000000..701a77ee
--- /dev/null
+++ b/vendor/icu_collections/src/iterator_utils.rs
@@ -0,0 +1,188 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::codepointtrie::CodePointMapRange;
+
+/// This is an iterator that coalesces adjacent ranges in an iterator over code
+/// point ranges
+pub(crate) struct RangeListIteratorCoalescer<I, T> {
+    iter: I,
+    peek: Option<CodePointMapRange<T>>,
+}
+
+impl<I, T: Eq> RangeListIteratorCoalescer<I, T>
+where
+    I: Iterator<Item = CodePointMapRange<T>>,
+{
+    pub fn new(iter: I) -> Self {
+        Self { iter, peek: None }
+    }
+}
+
+impl<I, T: Eq> Iterator for RangeListIteratorCoalescer<I, T>
+where
+    I: Iterator<Item = CodePointMapRange<T>>,
+{
+    type Item = CodePointMapRange<T>;
+
+    fn next(&mut self) -> Option<Self::Item> {
+        // Get the initial range we're working with: either a leftover
+        // range from last time, or the next range
+        let mut ret = if let Some(peek) = self.peek.take() {
+            peek
+        } else if let Some(next) = self.iter.next() {
+            next
+        } else {
+            // No ranges, exit early
+            return None;
+        };
+
+        // Keep pulling ranges
+        #[allow(clippy::while_let_on_iterator)]
+        // can't move the iterator, also we want it to be explicit that we're not draining the iterator
+        while let Some(next) = self.iter.next() {
+            if *next.range.start() == ret.range.end() + 1 && next.value == ret.value {
+                // Range has no gap, coalesce
+                ret.range = *ret.range.start()..=*next.range.end();
+            } else {
+                // Range has a gap, return what we have so far, update
+                // peek
+                self.peek = Some(next);
+                return Some(ret);
+            }
+        }
+
+        // Ran out of elements, exit
+        Some(ret)
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use core::fmt::Debug;
+    use icu::collections::codepointinvlist::CodePointInversionListBuilder;
+    use icu::properties::props::{BinaryProperty, EnumeratedProperty};
+    use icu::properties::{CodePointMapData, CodePointSetData};
+
+    fn test_set<P: BinaryProperty>(name: &str) {
+        let mut builder = CodePointInversionListBuilder::new();
+        let mut builder_complement = CodePointInversionListBuilder::new();
+
+        for range in CodePointSetData::new::<P>().iter_ranges() {
+            builder.add_range32(range)
+        }
+
+        for range in CodePointSetData::new::<P>().iter_ranges_complemented() {
+            builder_complement.add_range32(range)
+        }
+
+        builder.complement();
+        let set1 = builder.build();
+        let set2 = builder_complement.build();
+        assert_eq!(set1, set2, "Set {name} failed to complement correctly");
+    }
+
+    fn test_map<T: EnumeratedProperty + Debug>(value: T, name: &str) {
+        let mut builder = CodePointInversionListBuilder::new();
+        let mut builder_complement = CodePointInversionListBuilder::new();
+
+        for range in CodePointMapData::<T>::new().iter_ranges_for_value(value) {
+            builder.add_range32(range)
+        }
+
+        for range in CodePointMapData::<T>::new().iter_ranges_for_value_complemented(value) {
+            builder_complement.add_range32(range)
+        }
+
+        builder.complement();
+        let set1 = builder.build();
+        let set2 = builder_complement.build();
+        assert_eq!(
+            set1, set2,
+            "Map {name} failed to complement correctly with value {value:?}"
+        );
+    }
+
+    #[test]
+    fn test_complement_sets() {
+        use icu::properties::props::*;
+        // Stress test the RangeListIteratorComplementer logic by ensuring it works for
+        // a whole bunch of binary properties
+        test_set::<AsciiHexDigit>("ASCII_Hex_Digit");
+        test_set::<Alnum>("Alnum");
+        test_set::<Alphabetic>("Alphabetic");
+        test_set::<BidiControl>("Bidi_Control");
+        test_set::<BidiMirrored>("Bidi_Mirrored");
+        test_set::<Blank>("Blank");
+        test_set::<Cased>("Cased");
+        test_set::<CaseIgnorable>("Case_Ignorable");
+        test_set::<FullCompositionExclusion>("Full_Composition_Exclusion");
+        test_set::<ChangesWhenCasefolded>("Changes_When_Casefolded");
+        test_set::<ChangesWhenCasemapped>("Changes_When_Casemapped");
+        test_set::<ChangesWhenNfkcCasefolded>("Changes_When_NFKC_Casefolded");
+        test_set::<ChangesWhenLowercased>("Changes_When_Lowercased");
+        test_set::<ChangesWhenTitlecased>("Changes_When_Titlecased");
+        test_set::<ChangesWhenUppercased>("Changes_When_Uppercased");
+        test_set::<Dash>("Dash");
+        test_set::<Deprecated>("Deprecated");
+        test_set::<DefaultIgnorableCodePoint>("Default_Ignorable_Code_Point");
+        test_set::<Diacritic>("Diacritic");
+        test_set::<EmojiModifierBase>("Emoji_Modifier_Base");
+        test_set::<EmojiComponent>("Emoji_Component");
+        test_set::<EmojiModifier>("Emoji_Modifier");
+        test_set::<Emoji>("Emoji");
+        test_set::<EmojiPresentation>("Emoji_Presentation");
+        test_set::<Extender>("Extender");
+        test_set::<ExtendedPictographic>("Extended_Pictographic");
+        test_set::<Graph>("Graph");
+        test_set::<GraphemeBase>("Grapheme_Base");
+        test_set::<GraphemeExtend>("Grapheme_Extend");
+        test_set::<GraphemeLink>("Grapheme_Link");
+        test_set::<HexDigit>("Hex_Digit");
+        test_set::<Hyphen>("Hyphen");
+        test_set::<IdContinue>("Id_Continue");
+        test_set::<Ideographic>("Ideographic");
+        test_set::<IdStart>("Id_Start");
+        test_set::<IdsBinaryOperator>("Ids_Binary_Operator");
+        test_set::<IdsTrinaryOperator>("Ids_Trinary_Operator");
+        test_set::<JoinControl>("Join_Control");
+        test_set::<LogicalOrderException>("Logical_Order_Exception");
+        test_set::<Lowercase>("Lowercase");
+        test_set::<Math>("Math");
+        test_set::<NoncharacterCodePoint>("Noncharacter_Code_Point");
+        test_set::<NfcInert>("NFC_Inert");
+        test_set::<NfdInert>("NFD_Inert");
+        test_set::<NfkcInert>("NFKC_Inert");
+        test_set::<NfkdInert>("NFKD_Inert");
+        test_set::<PatternSyntax>("Pattern_Syntax");
+        test_set::<PatternWhiteSpace>("Pattern_White_Space");
+        test_set::<PrependedConcatenationMark>("Prepended_Concatenation_Mark");
+        test_set::<Print>("Print");
+        test_set::<QuotationMark>("Quotation_Mark");
+        test_set::<Radical>("Radical");
+        test_set::<RegionalIndicator>("Regional_Indicator");
+        test_set::<SoftDotted>("Soft_Dotted");
+        test_set::<SegmentStarter>("Segment_Starter");
+        test_set::<CaseSensitive>("Case_Sensitive");
+        test_set::<SentenceTerminal>("Sentence_Terminal");
+        test_set::<TerminalPunctuation>("Terminal_Punctuation");
+        test_set::<UnifiedIdeograph>("Unified_Ideograph");
+        test_set::<Uppercase>("Uppercase");
+        test_set::<VariationSelector>("Variation_Selector");
+        test_set::<WhiteSpace>("White_Space");
+        test_set::<Xdigit>("Xdigit");
+        test_set::<XidContinue>("XID_Continue");
+        test_set::<XidStart>("XID_Start");
+    }
+
+    #[test]
+    fn test_complement_maps() {
+        use icu::properties::props::{GeneralCategory, Script};
+        test_map(GeneralCategory::UppercaseLetter, "gc");
+        test_map(GeneralCategory::OtherPunctuation, "gc");
+        test_map(Script::Devanagari, "script");
+        test_map(Script::Latin, "script");
+        test_map(Script::Common, "script");
+    }
+}
diff --git a/vendor/icu_collections/src/lib.rs b/vendor/icu_collections/src/lib.rs
new file mode 100644
index 00000000..a20545d0
--- /dev/null
+++ b/vendor/icu_collections/src/lib.rs
@@ -0,0 +1,44 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Efficient collections for Unicode data.
+//!
+//! This module is published as its own crate ([`icu_collections`](https://docs.rs/icu_collections/latest/icu_collections/))
+//! and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
+//!
+//! ICU4X [`CodePointTrie`](crate::codepointtrie::CodePointTrie) provides a read-only view of `CodePointTrie` data that is exported
+//! from ICU4C. Detailed information about the design of the data structure can be found in the documentation
+//! for the [`CodePointTrie`](crate::codepointtrie::CodePointTrie) struct.
+//!
+//! ICU4X [`CodePointInversionList`](`crate::codepointinvlist::CodePointInversionList`) provides necessary functionality for highly efficient querying of sets of Unicode characters.
+//! It is an implementation of the existing [ICU4C UnicodeSet API](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UnicodeSet.html).
+//!
+//! ICU4X [`Char16Trie`](`crate::char16trie::Char16Trie`) provides a data structure for a space-efficient and time-efficient lookup of
+//! sequences of 16-bit units (commonly but not necessarily UTF-16 code units)
+//! which map to integer values.
+//! It is an implementation of the existing [ICU4C UCharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1UCharsTrie.html)
+//! / [ICU4J CharsTrie](https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/util/CharsTrie.html) API.
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic
+    )
+)]
+#![warn(missing_docs)]
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+pub mod char16trie;
+pub mod codepointinvlist;
+pub mod codepointinvliststringlist;
+pub mod codepointtrie;
+
+pub(crate) mod iterator_utils;
diff --git a/vendor/icu_collections/tests/char16trie.rs b/vendor/icu_collections/tests/char16trie.rs
new file mode 100644
index 00000000..ac030887
--- /dev/null
+++ b/vendor/icu_collections/tests/char16trie.rs
@@ -0,0 +1,304 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use icu_collections::char16trie::{Char16Trie, TrieResult};
+use zerovec::ZeroVec;
+
+#[test]
+fn empty() {
+    let trie_data = toml::from_str::<TestFile>(include_str!("data/char16trie/empty.toml"))
+        .unwrap()
+        .ucharstrie
+        .data;
+    let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice()));
+    let res = trie.iter().next('h');
+    assert_eq!(res, TrieResult::NoMatch);
+}
+
+#[test]
+fn a() {
+    let trie_data = toml::from_str::<TestFile>(include_str!("data/char16trie/test_a.toml"))
+        .unwrap()
+        .ucharstrie
+        .data;
+    let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice()));
+
+    let mut iter = trie.iter();
+    let res = iter.next('h');
+    assert_eq!(res, TrieResult::NoMatch);
+
+    let mut iter = trie.iter();
+    let res = iter.next('a');
+    assert_eq!(res, TrieResult::FinalValue(1));
+    let res = iter.next('a');
+    assert_eq!(res, TrieResult::NoMatch);
+}
+
+#[test]
+fn a_b() {
+    let trie_data = toml::from_str::<TestFile>(include_str!("data/char16trie/test_a_ab.toml"))
+        .unwrap()
+        .ucharstrie
+        .data;
+    let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice()));
+
+    let mut iter = trie.iter();
+    let res = iter.next('a');
+    assert_eq!(res, TrieResult::Intermediate(1));
+    let res = iter.next('a');
+    assert_eq!(res, TrieResult::NoMatch);
+
+    let mut iter = trie.iter();
+    let res = iter.next('a');
+    assert_eq!(res, TrieResult::Intermediate(1));
+    let res = iter.next('b');
+    assert_eq!(res, TrieResult::FinalValue(100));
+    let res = iter.next('b');
+    assert_eq!(res, TrieResult::NoMatch);
+}
+
+#[test]
+fn shortest_branch() {
+    let trie_data =
+        toml::from_str::<TestFile>(include_str!("data/char16trie/test_shortest_branch.toml"))
+            .unwrap()
+            .ucharstrie
+            .data;
+    let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice()));
+
+    let mut iter = trie.iter();
+    let res = iter.next('a');
+    assert_eq!(res, TrieResult::FinalValue(1000));
+    let res = iter.next('b');
+    assert_eq!(res, TrieResult::NoMatch);
+
+    let mut iter = trie.iter();
+    let res = iter.next('b');
+    assert_eq!(res, TrieResult::FinalValue(2000));
+    let res = iter.next('a');
+    assert_eq!(res, TrieResult::NoMatch);
+}
+
+#[test]
+fn branches() {
+    let trie_data = toml::from_str::<TestFile>(include_str!("data/char16trie/test_branches.toml"))
+        .unwrap()
+        .ucharstrie
+        .data;
+    let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice()));
+
+    for (query, expected) in [
+        ("a", TrieResult::FinalValue(0x10)),
+        ("cc", TrieResult::FinalValue(0x40)),
+        ("e", TrieResult::FinalValue(0x100)),
+        ("ggg", TrieResult::FinalValue(0x400)),
+        ("i", TrieResult::FinalValue(0x1000)),
+        ("kkkk", TrieResult::FinalValue(0x4000)),
+        ("n", TrieResult::FinalValue(0x10000)),
+        ("ppppp", TrieResult::FinalValue(0x40000)),
+        ("r", TrieResult::FinalValue(0x100000)),
+        ("sss", TrieResult::FinalValue(0x200000)),
+        ("t", TrieResult::FinalValue(0x400000)),
+        ("uu", TrieResult::FinalValue(0x800000)),
+        ("vv", TrieResult::FinalValue(0x7fffffff)),
+        ("zz", TrieResult::FinalValue(-2147483648)),
+    ] {
+        let mut iter = trie.iter();
+        for (i, chr) in query.chars().enumerate() {
+            let res = iter.next(chr);
+            if i + 1 == query.len() {
+                assert_eq!(res, expected);
+            } else {
+                assert_eq!(res, TrieResult::NoValue);
+            }
+        }
+    }
+}
+
+#[test]
+fn long_sequence() {
+    let trie_data =
+        toml::from_str::<TestFile>(include_str!("data/char16trie/test_long_sequence.toml"))
+            .unwrap()
+            .ucharstrie
+            .data;
+    let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice()));
+
+    for (query, expected) in [
+        ("a", TrieResult::Intermediate(-1)),
+        // sequence of linear-match nodes
+        (
+            "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
+            TrieResult::Intermediate(-2),
+        ),
+        // more than 256 units
+        (
+            concat!(
+                "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
+                "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
+                "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
+                "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
+                "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
+                "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+            ),
+            TrieResult::FinalValue(-3),
+        ),
+    ] {
+        let mut iter = trie.iter();
+        for (i, chr) in query.chars().enumerate() {
+            let res = iter.next(chr);
+            if i + 1 == query.len() {
+                assert_eq!(res, expected);
+            } else if i == 0 {
+                assert_eq!(res, TrieResult::Intermediate(-1));
+            } else if i == 51 {
+                assert_eq!(res, TrieResult::Intermediate(-2));
+            } else {
+                assert_eq!(res, TrieResult::NoValue);
+            }
+        }
+    }
+}
+
+#[test]
+fn long_branch() {
+    let trie_data =
+        toml::from_str::<TestFile>(include_str!("data/char16trie/test_long_branch.toml"))
+            .unwrap()
+            .ucharstrie
+            .data;
+    let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice()));
+
+    for (query, expected) in [
+        ("a", TrieResult::FinalValue(-2)),
+        ("b", TrieResult::FinalValue(-1)),
+        ("c", TrieResult::FinalValue(0)),
+        ("d2", TrieResult::FinalValue(1)),
+        ("f", TrieResult::FinalValue(0x3f)),
+        ("g", TrieResult::FinalValue(0x40)),
+        ("h", TrieResult::FinalValue(0x41)),
+        ("j23", TrieResult::FinalValue(0x1900)),
+        ("j24", TrieResult::FinalValue(0x19ff)),
+        ("j25", TrieResult::FinalValue(0x1a00)),
+        ("k2", TrieResult::FinalValue(0x1a80)),
+        ("k3", TrieResult::FinalValue(0x1aff)),
+        ("l234567890", TrieResult::Intermediate(0x1b00)),
+        ("l234567890123", TrieResult::FinalValue(0x1b01)),
+        (
+            "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
+            TrieResult::FinalValue(0x10ffff),
+        ),
+        (
+            "oooooooooooooooooooooooooooooooooooooooooooooooooooooo",
+            TrieResult::FinalValue(0x110000),
+        ),
+        (
+            "pppppppppppppppppppppppppppppppppppppppppppppppppppppp",
+            TrieResult::FinalValue(0x120000),
+        ),
+        ("r", TrieResult::FinalValue(0x333333)),
+        ("s2345", TrieResult::FinalValue(0x4444444)),
+        ("t234567890", TrieResult::FinalValue(0x77777777)),
+        ("z", TrieResult::FinalValue(-2147483647)),
+    ] {
+        let mut iter = trie.iter();
+        for (i, chr) in query.chars().enumerate() {
+            let res = iter.next(chr);
+            if i + 1 == query.len() {
+                assert_eq!(res, expected);
+            } else if query == "l234567890123" && i == 9 {
+                assert_eq!(res, TrieResult::Intermediate(0x1b00));
+            } else {
+                assert_eq!(res, TrieResult::NoValue);
+            }
+        }
+    }
+}
+
+#[test]
+fn compact() {
+    let trie_data = toml::from_str::<TestFile>(include_str!("data/char16trie/test_compact.toml"))
+        .unwrap()
+        .ucharstrie
+        .data;
+    let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice()));
+
+    for (query, expected) in [
+        ("+", TrieResult::Intermediate(0)),
+        ("+august", TrieResult::FinalValue(8)),
+        ("+december", TrieResult::FinalValue(12)),
+        ("+july", TrieResult::FinalValue(7)),
+        ("+june", TrieResult::FinalValue(6)),
+        ("+november", TrieResult::FinalValue(11)),
+        ("+october", TrieResult::FinalValue(10)),
+        ("+september", TrieResult::FinalValue(9)),
+        ("-", TrieResult::Intermediate(0)),
+        ("-august", TrieResult::FinalValue(8)),
+        ("-december", TrieResult::FinalValue(12)),
+        ("-july", TrieResult::FinalValue(7)),
+        ("-june", TrieResult::FinalValue(6)),
+        ("-november", TrieResult::FinalValue(11)),
+        ("-october", TrieResult::FinalValue(10)),
+        ("-september", TrieResult::FinalValue(9)),
+        ("xjuly", TrieResult::FinalValue(7)),
+        ("xjune", TrieResult::FinalValue(6)),
+    ] {
+        let mut iter = trie.iter();
+        for (i, chr) in query.chars().enumerate() {
+            let res = iter.next(chr);
+            if i + 1 == query.len() {
+                assert_eq!(res, expected);
+            } else if chr == '-' || chr == '+' {
+                assert_eq!(res, TrieResult::Intermediate(0));
+            } else {
+                assert_eq!(res, TrieResult::NoValue);
+            }
+        }
+    }
+}
+
+#[test]
+fn months() {
+    let trie_data = toml::from_str::<TestFile>(include_str!("data/char16trie/months.toml"))
+        .unwrap()
+        .ucharstrie
+        .data;
+    let trie = Char16Trie::new(ZeroVec::from_slice_or_alloc(trie_data.as_slice()));
+
+    let mut iter = trie.iter();
+    for (chr, expected) in [
+        ('j', TrieResult::NoValue),
+        ('u', TrieResult::NoValue),
+        ('n', TrieResult::Intermediate(6)),
+        ('e', TrieResult::FinalValue(6)),
+    ] {
+        let res = iter.next(chr);
+        assert_eq!(res, expected);
+    }
+    let res = iter.next('h');
+    assert_eq!(res, TrieResult::NoMatch);
+
+    let mut iter = trie.iter();
+    for (chr, expected) in [
+        ('j', TrieResult::NoValue),
+        ('u', TrieResult::NoValue),
+        ('l', TrieResult::NoValue),
+        ('y', TrieResult::FinalValue(7)),
+    ] {
+        let res = iter.next(chr);
+        assert_eq!(res, expected);
+    }
+    let res = iter.next('h');
+    assert_eq!(res, TrieResult::NoMatch);
+}
+
+#[derive(serde::Deserialize)]
+pub struct TestFile {
+    ucharstrie: Char16TrieVec,
+}
+
+#[derive(serde::Deserialize)]
+pub struct Char16TrieVec {
+    data: Vec<u16>,
+}
diff --git a/vendor/icu_collections/tests/cpt.rs b/vendor/icu_collections/tests/cpt.rs
new file mode 100644
index 00000000..210277cf
--- /dev/null
+++ b/vendor/icu_collections/tests/cpt.rs
@@ -0,0 +1,489 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use icu_collections::codepointtrie::planes::get_planes_trie;
+use icu_collections::codepointtrie::*;
+use zerovec::ZeroVec;
+
+#[test]
+fn planes_trie_deserialize_check_test() {
+    // Get expected planes trie from crate::planes::get_planes_trie()
+
+    let exp_planes_trie = get_planes_trie();
+
+    // Compute actual planes trie from planes.toml
+
+    let planes_enum_prop =
+        ::toml::from_str::<UnicodeEnumeratedProperty>(include_str!("data/cpt/planes.toml"))
+            .unwrap();
+
+    let code_point_trie_struct = planes_enum_prop.code_point_trie.trie_struct;
+
+    let trie_header = CodePointTrieHeader {
+        high_start: code_point_trie_struct.high_start,
+        shifted12_high_start: code_point_trie_struct.shifted12_high_start,
+        index3_null_offset: code_point_trie_struct.index3_null_offset,
+        data_null_offset: code_point_trie_struct.data_null_offset,
+        null_value: code_point_trie_struct.null_value,
+        trie_type: TrieType::try_from(code_point_trie_struct.trie_type_enum_val).unwrap_or_else(
+            |_| {
+                panic!(
+                    "Could not parse trie_type serialized enum value in test data file: {}",
+                    code_point_trie_struct.name
+                )
+            },
+        ),
+    };
+
+    let data = ZeroVec::from_slice_or_alloc(code_point_trie_struct.data_8.as_ref().unwrap());
+    let index = ZeroVec::from_slice_or_alloc(&code_point_trie_struct.index);
+    let trie_result = CodePointTrie::try_new(trie_header, index, data);
+    let act_planes_trie = trie_result.unwrap();
+
+    // Get check ranges (inversion map-style sequence of range+value) and
+    // apply the trie validation test fn on expected and actual tries
+
+    let serialized_ranges: Vec<(u32, u32, u32)> = planes_enum_prop.code_point_map.data.ranges;
+    let mut check_ranges: Vec<u32> = vec![];
+    for range_tuple in serialized_ranges {
+        let range_end = range_tuple.1 + 1;
+        let value = range_tuple.2;
+        check_ranges.push(range_end);
+        check_ranges.push(value);
+    }
+
+    check_trie(&act_planes_trie, &check_ranges);
+    check_trie(&exp_planes_trie, &check_ranges);
+}
+
+#[test]
+fn free_blocks_16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/free-blocks.16.toml"));
+}
+
+#[test]
+fn free_blocks_32() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/free-blocks.32.toml"));
+}
+
+#[test]
+fn free_blocks_8() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/free-blocks.8.toml"));
+}
+
+#[test]
+fn free_blocks_small16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/free-blocks.small16.toml"));
+}
+
+#[test]
+fn grow_data_16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/grow-data.16.toml"));
+}
+
+#[test]
+fn grow_data_32() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/grow-data.32.toml"));
+}
+
+#[test]
+fn grow_data_8() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/grow-data.8.toml"));
+}
+
+#[test]
+fn grow_data_small16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/grow-data.small16.toml"));
+}
+
+#[test]
+fn set1_16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set1.16.toml"));
+}
+
+#[test]
+fn set1_32() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set1.32.toml"));
+}
+
+#[test]
+fn set1_8() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set1.8.toml"));
+}
+
+#[test]
+fn set1_small16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set1.small16.toml"));
+}
+
+#[test]
+fn set2_overlap_16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set2-overlap.16.toml"));
+}
+
+#[test]
+fn set2_overlap_32() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set2-overlap.32.toml"));
+}
+
+#[test]
+fn set2_overlap_small16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set2-overlap.small16.toml"));
+}
+
+#[test]
+fn set3_initial_9_16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set3-initial-9.16.toml"));
+}
+
+#[test]
+fn set3_initial_9_32() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set3-initial-9.32.toml"));
+}
+
+#[test]
+fn set3_initial_9_8() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set3-initial-9.8.toml"));
+}
+
+#[test]
+fn set3_initial_9_small16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set3-initial-9.small16.toml"));
+}
+
+#[test]
+fn set_empty_16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set-empty.16.toml"));
+}
+
+#[test]
+fn set_empty_32() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set-empty.32.toml"));
+}
+
+#[test]
+fn set_empty_8() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set-empty.8.toml"));
+}
+
+#[test]
+fn set_empty_small16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set-empty.small16.toml"));
+}
+
+#[test]
+fn set_single_value_16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set-single-value.16.toml"));
+}
+
+#[test]
+fn set_single_value_32() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set-single-value.32.toml"));
+}
+
+#[test]
+fn set_single_value_8() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set-single-value.8.toml"));
+}
+
+#[test]
+fn set_single_value_small16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/set-single-value.small16.toml"));
+}
+
+#[test]
+fn short_all_same_16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/short-all-same.16.toml"));
+}
+
+#[test]
+fn short_all_same_8() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/short-all-same.8.toml"));
+}
+
+#[test]
+fn short_all_same_small16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/short-all-same.small16.toml"));
+}
+
+#[test]
+fn small0_in_fast_16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/small0-in-fast.16.toml"));
+}
+
+#[test]
+fn small0_in_fast_32() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/small0-in-fast.32.toml"));
+}
+
+#[test]
+fn small0_in_fast_8() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/small0-in-fast.8.toml"));
+}
+
+#[test]
+fn small0_in_fast_small16() {
+    run_deserialize_test_from_test_data(include_str!("data/cpt/small0-in-fast.small16.toml"));
+}
+
+/// The width of the elements in the data array of a [`CodePointTrie`].
+/// See [`UCPTrieValueWidth`](https://unicode-org.github.io/icu-docs/apidoc/dev/icu4c/ucptrie_8h.html) in ICU4C.
+#[derive(Clone, Copy, PartialEq)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+pub enum ValueWidthEnum {
+    Bits16 = 0,
+    Bits32 = 1,
+    Bits8 = 2,
+}
+
+/// Test .get() on CodePointTrie by iterating through each range in
+/// check_ranges and assert that the associated
+/// value matches the trie value for each code point in the range.
+pub fn check_trie<T: TrieValue + Into<u32>>(trie: &CodePointTrie<T>, check_ranges: &[u32]) {
+    assert_eq!(
+        0,
+        check_ranges.len() % 2,
+        "check_ranges must have an even number of 32-bit values in (limit,value) pairs"
+    );
+
+    let mut i: u32 = 0;
+    let check_range_tuples = check_ranges.chunks(2);
+    // Iterate over each check range
+    for range_tuple in check_range_tuples {
+        let range_limit = range_tuple[0];
+        let range_value = range_tuple[1];
+        // Check all values in this range, one-by-one
+        while i < range_limit {
+            assert_eq!(range_value, trie.get32(i).into(), "trie_get({})", i,);
+            i += 1;
+        }
+    }
+}
+
+/// Test `.get_range()` / `.iter_ranges()` on CodePointTrie by calling
+/// `.iter_ranges()` on the trie.
+///
+/// `.iter_ranges()` returns an iterator that produces values
+/// by calls to .get_range, and this checks if it matches the values in check_ranges.
+pub fn test_check_ranges_get_ranges<T: TrieValue + Into<u32>>(
+    trie: &CodePointTrie<T>,
+    check_ranges: &[u32],
+) {
+    assert_eq!(
+        0,
+        check_ranges.len() % 2,
+        "check_ranges must have an even number of 32-bit values in (limit,value) pairs"
+    );
+
+    let mut trie_ranges = trie.iter_ranges();
+
+    let mut range_start: u32 = 0;
+    let check_range_tuples = check_ranges.chunks(2);
+    // Iterate over each check range
+    for range_tuple in check_range_tuples {
+        let range_limit = range_tuple[0];
+        let range_value = range_tuple[1];
+
+        // The check ranges array seems to start with a trivial range whose
+        // limit is zero. range_start is initialized to 0, so we can skip.
+        if range_limit == 0 {
+            continue;
+        }
+
+        let cpm_range = trie_ranges.next();
+        assert!(cpm_range.is_some(), "CodePointTrie iter_ranges() produces fewer ranges than the check_ranges field in testdata has");
+        let cpm_range = cpm_range.unwrap();
+        let cpmr_start = cpm_range.range.start();
+        let cpmr_end = cpm_range.range.end();
+        let cpmr_value: u32 = cpm_range.value.into();
+
+        assert_eq!(range_start, *cpmr_start);
+        assert_eq!(range_limit, *cpmr_end + 1);
+        assert_eq!(range_value, cpmr_value);
+
+        range_start = range_limit;
+    }
+
+    assert!(trie_ranges.next().is_none(), "CodePointTrie iter_ranges() produces more ranges than the check_ranges field in testdata has");
+}
+
+/// Run above tests that verify the validity of CodePointTrie methods
+pub fn run_trie_tests<T: TrieValue + Into<u32>>(trie: &CodePointTrie<T>, check_ranges: &[u32]) {
+    check_trie(trie, check_ranges);
+    test_check_ranges_get_ranges(trie, check_ranges);
+}
+
+// The following structs might be useful later for de-/serialization of the
+// main `CodePointTrie` struct in the corresponding data provider.
+
+#[cfg_attr(any(feature = "serde", test), derive(serde::Deserialize))]
+pub struct UnicodeEnumeratedProperty {
+    pub code_point_map: EnumPropCodePointMap,
+    pub code_point_trie: EnumPropSerializedCPT,
+}
+
+#[cfg_attr(any(feature = "serde", test), derive(serde::Deserialize))]
+pub struct EnumPropCodePointMap {
+    pub data: EnumPropCodePointMapData,
+}
+
+#[cfg_attr(any(feature = "serde", test), derive(serde::Deserialize))]
+pub struct EnumPropCodePointMapData {
+    pub long_name: String,
+    pub name: String,
+    pub ranges: Vec<(u32, u32, u32)>,
+}
+
+#[allow(clippy::upper_case_acronyms)]
+#[cfg_attr(any(feature = "serde", test), derive(serde::Deserialize))]
+pub struct EnumPropSerializedCPT {
+    #[cfg_attr(any(feature = "serde", test), serde(rename = "struct"))]
+    pub trie_struct: EnumPropSerializedCPTStruct,
+}
+
+// These structs support the test data dumped as TOML files from ICU.
+// Because the properties CodePointMap data will also be dumped from ICU
+// using similar functions, some of these structs may be useful to refactor
+// into main code at a later point.
+
+#[allow(clippy::upper_case_acronyms)]
+#[cfg_attr(any(feature = "serde", test), derive(serde::Deserialize))]
+pub struct EnumPropSerializedCPTStruct {
+    #[cfg_attr(any(feature = "serde", test), serde(skip))]
+    pub long_name: String,
+    pub name: String,
+    pub index: Vec<u16>,
+    pub data_8: Option<Vec<u8>>,
+    pub data_16: Option<Vec<u16>>,
+    pub data_32: Option<Vec<u32>>,
+    #[cfg_attr(any(feature = "serde", test), serde(skip))]
+    pub index_length: u32,
+    #[cfg_attr(any(feature = "serde", test), serde(skip))]
+    pub data_length: u32,
+    #[cfg_attr(any(feature = "serde", test), serde(rename = "highStart"))]
+    pub high_start: u32,
+    #[cfg_attr(any(feature = "serde", test), serde(rename = "shifted12HighStart"))]
+    pub shifted12_high_start: u16,
+    #[cfg_attr(any(feature = "serde", test), serde(rename = "type"))]
+    pub trie_type_enum_val: u8,
+    #[cfg_attr(any(feature = "serde", test), serde(rename = "valueWidth"))]
+    pub value_width_enum_val: u8,
+    #[cfg_attr(any(feature = "serde", test), serde(rename = "index3NullOffset"))]
+    pub index3_null_offset: u16,
+    #[cfg_attr(any(feature = "serde", test), serde(rename = "dataNullOffset"))]
+    pub data_null_offset: u32,
+    #[cfg_attr(any(feature = "serde", test), serde(rename = "nullValue"))]
+    pub null_value: u32,
+}
+
+// Given a .toml file dumped from ICU4C test data for UCPTrie, run the test
+// data file deserialization into the test file struct, convert and construct
+// the `CodePointTrie`, and test the constructed struct against the test file's
+// "check ranges" (inversion map ranges) using `check_trie` to verify the
+// validity of the `CodePointTrie`'s behavior for all code points.
+#[allow(dead_code)]
+pub fn run_deserialize_test_from_test_data(test_file: &str) {
+    // The following structs are specific to the TOML format files for dumped ICU
+    // test data.
+
+    #[derive(serde::Deserialize)]
+    pub struct TestFile {
+        code_point_trie: TestCodePointTrie,
+    }
+
+    #[derive(serde::Deserialize)]
+    pub struct TestCodePointTrie {
+        // The trie_struct field for test data files is dumped from the same source
+        // (ICU4C) using the same function (usrc_writeUCPTrie) as property data
+        // for the provider, so we can reuse the same struct here.
+        #[serde(rename(deserialize = "struct"))]
+        trie_struct: EnumPropSerializedCPTStruct,
+        #[serde(rename(deserialize = "testdata"))]
+        test_data: TestData,
+    }
+
+    #[derive(serde::Deserialize)]
+    pub struct TestData {
+        #[serde(rename(deserialize = "checkRanges"))]
+        check_ranges: Vec<u32>,
+    }
+
+    let test_file = ::toml::from_str::<TestFile>(test_file).unwrap();
+
+    let test_struct = test_file.code_point_trie.trie_struct;
+
+    println!(
+        "Running CodePointTrie reader logic test on test data file: {}",
+        test_struct.name
+    );
+
+    let trie_type_enum = match TrieType::try_from(test_struct.trie_type_enum_val) {
+        Ok(enum_val) => enum_val,
+        _ => {
+            panic!(
+                "Could not parse trie_type serialized enum value in test data file: {}",
+                test_struct.name
+            );
+        }
+    };
+
+    let trie_header = CodePointTrieHeader {
+        high_start: test_struct.high_start,
+        shifted12_high_start: test_struct.shifted12_high_start,
+        index3_null_offset: test_struct.index3_null_offset,
+        data_null_offset: test_struct.data_null_offset,
+        null_value: test_struct.null_value,
+        trie_type: trie_type_enum,
+    };
+
+    let index = ZeroVec::from_slice_or_alloc(&test_struct.index);
+
+    match (test_struct.data_8, test_struct.data_16, test_struct.data_32) {
+        (Some(data_8), _, _) => {
+            let data = ZeroVec::from_slice_or_alloc(&data_8);
+            let trie_result = CodePointTrie::try_new(trie_header, index, data);
+            assert!(trie_result.is_ok(), "Could not construct trie");
+            assert_eq!(
+                test_struct.value_width_enum_val,
+                ValueWidthEnum::Bits8 as u8
+            );
+            run_trie_tests(
+                &trie_result.unwrap(),
+                &test_file.code_point_trie.test_data.check_ranges,
+            );
+        }
+
+        (_, Some(data_16), _) => {
+            let data = ZeroVec::from_slice_or_alloc(&data_16);
+            let trie_result = CodePointTrie::try_new(trie_header, index, data);
+            assert!(trie_result.is_ok(), "Could not construct trie");
+            assert_eq!(
+                test_struct.value_width_enum_val,
+                ValueWidthEnum::Bits16 as u8
+            );
+            run_trie_tests(
+                &trie_result.unwrap(),
+                &test_file.code_point_trie.test_data.check_ranges,
+            );
+        }
+
+        (_, _, Some(data_32)) => {
+            let data = ZeroVec::from_slice_or_alloc(&data_32);
+            let trie_result = CodePointTrie::try_new(trie_header, index, data);
+            assert!(trie_result.is_ok(), "Could not construct trie");
+            assert_eq!(
+                test_struct.value_width_enum_val,
+                ValueWidthEnum::Bits32 as u8
+            );
+            run_trie_tests(
+                &trie_result.unwrap(),
+                &test_file.code_point_trie.test_data.check_ranges,
+            );
+        }
+
+        (_, _, _) => {
+            panic!("Could not match test trie data to a known value width or trie type");
+        }
+    };
+}
diff --git a/vendor/icu_collections/tests/data/char16trie/empty.toml b/vendor/icu_collections/tests/data/char16trie/empty.toml
new file mode 100644
index 00000000..91f04b03
--- /dev/null
+++ b/vendor/icu_collections/tests/data/char16trie/empty.toml
@@ -0,0 +1,11 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: empty.toml
+#
+# machine-generated by: ucharstrietest.c
+
+[ucharstrie]
+data = [
+  32768,
+]
diff --git a/vendor/icu_collections/tests/data/char16trie/months.toml b/vendor/icu_collections/tests/data/char16trie/months.toml
new file mode 100644
index 00000000..79bfd4c9
--- /dev/null
+++ b/vendor/icu_collections/tests/data/char16trie/months.toml
@@ -0,0 +1,19 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: months.toml
+#
+# machine-generated by: ucharstrietest.c
+
+[ucharstrie]
+data = [
+  1,97,134,106,1,97,13,117,1,108,6,110,449,46,32774,101,32774,
+  48,121,32775,48,110,147,106,72,111,22,111,32769,112,11,113,12,
+  114,32769,117,49,97,114,176,121,32769,48,112,32769,49,113,113,32769,
+  106,32769,107,35,108,32769,109,32769,110,58,110,110,110,110,110,110,
+  110,110,110,110,110,63,110,110,110,110,110,110,110,110,110,110,
+  110,110,110,110,110,110,32769,2,107,32769,108,32769,109,48,109,32769,
+  101,22,101,12,102,32769,103,13,104,32769,105,50,105,105,105,32769,
+  1,101,32769,102,32769,48,103,32769,46,32769,97,32769,98,7,99,32769,
+  100,49,100,100,32769,48,98,32769,52,117,103,117,115,116,32776,
+]
diff --git a/vendor/icu_collections/tests/data/char16trie/test_a.toml b/vendor/icu_collections/tests/data/char16trie/test_a.toml
new file mode 100644
index 00000000..48f53aaa
--- /dev/null
+++ b/vendor/icu_collections/tests/data/char16trie/test_a.toml
@@ -0,0 +1,11 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: test_a.toml
+#
+# machine-generated by: ucharstrietest.c
+
+[ucharstrie]
+data = [
+  48,97,32769,
+]
diff --git a/vendor/icu_collections/tests/data/char16trie/test_a_ab.toml b/vendor/icu_collections/tests/data/char16trie/test_a_ab.toml
new file mode 100644
index 00000000..c4633ba5
--- /dev/null
+++ b/vendor/icu_collections/tests/data/char16trie/test_a_ab.toml
@@ -0,0 +1,11 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: test_a_ab.toml
+#
+# machine-generated by: ucharstrietest.c
+
+[ucharstrie]
+data = [
+  48,97,176,98,32868,
+]
diff --git a/vendor/icu_collections/tests/data/char16trie/test_branches.toml b/vendor/icu_collections/tests/data/char16trie/test_branches.toml
new file mode 100644
index 00000000..1c7c6261
--- /dev/null
+++ b/vendor/icu_collections/tests/data/char16trie/test_branches.toml
@@ -0,0 +1,15 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: test_branches.toml
+#
+# machine-generated by: ucharstrietest.c
+
+[ucharstrie]
+data = [
+  13,112,42,116,22,116,49216,0,117,8,118,10,122,48,122,65535,32768,
+  0,48,117,49280,0,48,118,65535,32767,65535,112,9,114,49168,0,115,
+  49,115,115,49184,0,51,112,112,112,112,49156,0,103,19,103,7,
+  105,36864,107,7,110,49153,0,49,103,103,33792,50,107,107,107,49152,
+  16384,97,32784,99,2,101,33024,48,99,32832,
+]
diff --git a/vendor/icu_collections/tests/data/char16trie/test_compact.toml b/vendor/icu_collections/tests/data/char16trie/test_compact.toml
new file mode 100644
index 00000000..780ca949
--- /dev/null
+++ b/vendor/icu_collections/tests/data/char16trie/test_compact.toml
@@ -0,0 +1,16 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: test_compact.toml
+#
+# machine-generated by: ucharstrietest.c
+
+[ucharstrie]
+data = [
+  2,43,13,45,11,120,49,106,117,1,108,53,110,48,101,32774,69,
+  110,32,110,13,111,20,115,55,101,112,116,101,109,98,101,114,
+  32777,54,111,118,101,109,98,101,114,32779,53,99,116,111,98,101,
+  114,32778,97,15,100,20,106,48,117,1,108,4,110,48,101,32774,
+  48,121,32775,52,117,103,117,115,116,32776,54,101,99,101,109,98,
+  101,114,32780,
+]
diff --git a/vendor/icu_collections/tests/data/char16trie/test_long_branch.toml b/vendor/icu_collections/tests/data/char16trie/test_long_branch.toml
new file mode 100644
index 00000000..4c260ce6
--- /dev/null
+++ b/vendor/icu_collections/tests/data/char16trie/test_long_branch.toml
@@ -0,0 +1,28 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: test_long_branch.toml
+#
+# machine-generated by: ucharstrietest.c
+
+[ucharstrie]
+data = [
+  16,107,240,112,92,112,11,114,49203,13107,115,65,116,70,122,65535,32768,
+  1,52,112,112,112,112,112,63,112,112,112,112,112,112,112,112,
+  112,112,112,112,112,112,112,112,63,112,112,112,112,112,112,112,
+  112,112,112,112,112,112,112,112,112,63,112,112,112,112,112,112,
+  112,112,112,112,112,112,112,112,112,112,49170,0,51,50,51,52,
+  53,50244,17476,56,50,51,52,53,54,55,56,57,48,65535,30583,30583,
+  107,64,108,67,110,81,111,52,111,111,111,111,111,63,111,111,
+  111,111,111,111,111,111,111,111,111,111,111,111,111,111,63,111,
+  111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,63,
+  111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,
+  49169,0,1,50,39552,51,39679,56,50,51,52,53,54,55,56,57,
+  48,16498,6912,49,50,51,39681,52,110,110,110,110,110,63,110,110,
+  110,110,110,110,110,110,110,110,110,110,110,110,110,110,63,110,
+  110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,63,
+  110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,110,
+  49168,65535,102,16,102,32831,103,32832,104,32833,106,48,50,2,51,39168,
+  52,39423,53,39424,97,65535,65535,65534,98,65535,65535,65535,99,32768,100,48,
+  50,32769,
+]
diff --git a/vendor/icu_collections/tests/data/char16trie/test_long_sequence.toml b/vendor/icu_collections/tests/data/char16trie/test_long_sequence.toml
new file mode 100644
index 00000000..72722a36
--- /dev/null
+++ b/vendor/icu_collections/tests/data/char16trie/test_long_sequence.toml
@@ -0,0 +1,32 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: test_long_sequence.toml
+#
+# machine-generated by: ucharstrietest.c
+
+[ucharstrie]
+data = [
+  48,97,32754,65535,65535,98,99,100,63,101,102,103,104,105,106,107,108,
+  109,110,111,112,113,114,115,116,63,117,118,119,120,121,122,65,
+  66,67,68,69,70,71,72,73,74,63,75,76,77,78,79,80,
+  81,82,83,84,85,86,87,88,89,90,32755,65535,65534,97,98,99,
+  100,63,101,102,103,104,105,106,107,108,109,110,111,112,113,114,
+  115,116,63,117,118,119,120,121,122,65,66,67,68,69,70,71,
+  72,73,74,63,75,76,77,78,79,80,81,82,83,84,85,86,
+  87,88,89,90,63,97,98,99,100,101,102,103,104,105,106,107,
+  108,109,110,111,112,63,113,114,115,116,117,118,119,120,121,122,
+  65,66,67,68,69,70,63,71,72,73,74,75,76,77,78,79,
+  80,81,82,83,84,85,86,63,87,88,89,90,97,98,99,100,
+  101,102,103,104,105,106,107,108,63,109,110,111,112,113,114,115,
+  116,117,118,119,120,121,122,65,66,63,67,68,69,70,71,72,
+  73,74,75,76,77,78,79,80,81,82,63,83,84,85,86,87,
+  88,89,90,97,98,99,100,101,102,103,104,63,105,106,107,108,
+  109,110,111,112,113,114,115,116,117,118,119,120,63,121,122,65,
+  66,67,68,69,70,71,72,73,74,75,76,77,78,63,79,80,
+  81,82,83,84,85,86,87,88,89,90,97,98,99,100,63,101,
+  102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,63,
+  117,118,119,120,121,122,65,66,67,68,69,70,71,72,73,74,
+  63,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,
+  90,65535,65535,65533,
+]
diff --git a/vendor/icu_collections/tests/data/char16trie/test_shortest_branch.toml b/vendor/icu_collections/tests/data/char16trie/test_shortest_branch.toml
new file mode 100644
index 00000000..639cb031
--- /dev/null
+++ b/vendor/icu_collections/tests/data/char16trie/test_shortest_branch.toml
@@ -0,0 +1,11 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: test_shortest_branch.toml
+#
+# machine-generated by: ucharstrietest.c
+
+[ucharstrie]
+data = [
+  1,97,33768,98,34768,
+]
diff --git a/vendor/icu_collections/tests/data/cpt/free-blocks.16.toml b/vendor/icu_collections/tests/data/cpt/free-blocks.16.toml
new file mode 100644
index 00000000..7febd4c3
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/free-blocks.16.toml
@@ -0,0 +1,113 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: free-blocks.16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "free-blocks.16"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0x80,0xc0,0xc0,
+  0xc0,0xc0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_16 = [
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  1,0xad
+]
+indexLength = 1024
+dataLength = 258
+highStart = 0xa00
+shifted12HighStart = 0x1
+type = 0
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x1
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,1,0x740,1,0x780,2,0x880,3,0x110000,1
+]
diff --git a/vendor/icu_collections/tests/data/cpt/free-blocks.32.toml b/vendor/icu_collections/tests/data/cpt/free-blocks.32.toml
new file mode 100644
index 00000000..002b6f26
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/free-blocks.32.toml
@@ -0,0 +1,113 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: free-blocks.32
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "free-blocks.32"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0x80,0xc0,0xc0,
+  0xc0,0xc0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_32 = [
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  1,0xad
+]
+indexLength = 1024
+dataLength = 258
+highStart = 0xa00
+shifted12HighStart = 0x1
+type = 0
+valueWidth = 1
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x1
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,1,0x740,1,0x780,2,0x880,3,0x110000,1
+]
diff --git a/vendor/icu_collections/tests/data/cpt/free-blocks.8.toml b/vendor/icu_collections/tests/data/cpt/free-blocks.8.toml
new file mode 100644
index 00000000..c8c469ce
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/free-blocks.8.toml
@@ -0,0 +1,113 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: free-blocks.8
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "free-blocks.8"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0x80,0xc0,0xc0,
+  0xc0,0xc0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_8 = [
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  1,1,1,0xad
+]
+indexLength = 1024
+dataLength = 260
+highStart = 0xa00
+shifted12HighStart = 0x1
+type = 0
+valueWidth = 2
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x1
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,1,0x740,1,0x780,2,0x880,3,0x110000,1
+]
diff --git a/vendor/icu_collections/tests/data/cpt/free-blocks.small16.toml b/vendor/icu_collections/tests/data/cpt/free-blocks.small16.toml
new file mode 100644
index 00000000..8a88bcb0
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/free-blocks.small16.toml
@@ -0,0 +1,53 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: free-blocks.small16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "free-blocks.small16"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0x80,0xc0,0xc0,
+  0xc0,0xc0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_16 = [
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  1,0xad
+]
+indexLength = 64
+dataLength = 258
+highStart = 0xa00
+shifted12HighStart = 0x1
+type = 1
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x1
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,1,0x740,1,0x780,2,0x880,3,0x110000,1
+]
diff --git a/vendor/icu_collections/tests/data/cpt/grow-data.16.toml b/vendor/icu_collections/tests/data/cpt/grow-data.16.toml
new file mode 100644
index 00000000..4977ec0d
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/grow-data.16.toml
@@ -0,0 +1,117 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: grow-data.16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "grow-data.16"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0x60,0x80,0xa0,0xc0,
+  0xc0,0xc0,0xe0,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100
+]
+data_16 = [
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,0xad
+]
+indexLength = 1024
+dataLength = 322
+highStart = 0xa00
+shifted12HighStart = 0x1
+type = 0
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0x100
+nullValue = 0x5
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,1,0x720,2,0x7a0,3,0x8a0,4,0x110000,5
+]
diff --git a/vendor/icu_collections/tests/data/cpt/grow-data.32.toml b/vendor/icu_collections/tests/data/cpt/grow-data.32.toml
new file mode 100644
index 00000000..01ea3c3a
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/grow-data.32.toml
@@ -0,0 +1,113 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: grow-data.32
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "grow-data.32"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0x60,0x80,0xa0,0xc0,
+  0xc0,0xc0,0xe0,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100
+]
+data_32 = [
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  0xad
+]
+indexLength = 1024
+dataLength = 321
+highStart = 0xa00
+shifted12HighStart = 0x1
+type = 0
+valueWidth = 1
+index3NullOffset = 0x7fff
+dataNullOffset = 0x100
+nullValue = 0x5
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,1,0x720,2,0x7a0,3,0x8a0,4,0x110000,5
+]
diff --git a/vendor/icu_collections/tests/data/cpt/grow-data.8.toml b/vendor/icu_collections/tests/data/cpt/grow-data.8.toml
new file mode 100644
index 00000000..ef2c0956
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/grow-data.8.toml
@@ -0,0 +1,113 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: grow-data.8
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "grow-data.8"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0x60,0x80,0xa0,0xc0,
+  0xc0,0xc0,0xe0,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100
+]
+data_8 = [
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,0xad
+]
+indexLength = 1024
+dataLength = 324
+highStart = 0xa00
+shifted12HighStart = 0x1
+type = 0
+valueWidth = 2
+index3NullOffset = 0x7fff
+dataNullOffset = 0x100
+nullValue = 0x5
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,1,0x720,2,0x7a0,3,0x8a0,4,0x110000,5
+]
diff --git a/vendor/icu_collections/tests/data/cpt/grow-data.small16.toml b/vendor/icu_collections/tests/data/cpt/grow-data.small16.toml
new file mode 100644
index 00000000..1e761f16
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/grow-data.small16.toml
@@ -0,0 +1,53 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: grow-data.small16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "grow-data.small16"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0x60,0x80,0xa0,0xc0,
+  0xc0,0xc0,0xe0,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100
+]
+data_16 = [
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,0xad
+]
+indexLength = 64
+dataLength = 322
+highStart = 0xa00
+shifted12HighStart = 0x1
+type = 1
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0x100
+nullValue = 0x5
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,1,0x720,2,0x7a0,3,0x8a0,4,0x110000,5
+]
diff --git a/vendor/icu_collections/tests/data/cpt/planes.toml b/vendor/icu_collections/tests/data/cpt/planes.toml
new file mode 100644
index 00000000..d5f5e7d8
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/planes.toml
@@ -0,0 +1,140 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+[code_point_map.data]
+long_name = "planes"
+name = "planes"
+ranges = [
+  [0x0, 0xffff, 0],
+  [0x10000, 0x1ffff, 1],
+  [0x20000, 0x2ffff, 2],
+  [0x30000, 0x3ffff, 3],
+  [0x40000, 0x4ffff, 4],
+  [0x50000, 0x5ffff, 5],
+  [0x60000, 0x6ffff, 6],
+  [0x70000, 0x7ffff, 7],
+  [0x80000, 0x8ffff, 8],
+  [0x90000, 0x9ffff, 9],
+  [0xa0000, 0xaffff, 10],
+  [0xb0000, 0xbffff, 11],
+  [0xc0000, 0xcffff, 12],
+  [0xd0000, 0xdffff, 13],
+  [0xe0000, 0xeffff, 14],
+  [0xf0000, 0xfffff, 15],
+  [0x100000, 0x10ffff, 16],
+]
+
+[code_point_trie.struct]
+long_name = "planes"
+name = "planes"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0x288,0x290,0x290,0x290,0x2b0,0x2b0,0x2b0,0x2b0,0x2d0,0x2d0,0x2d0,0x2d0,0x2f0,0x2f0,0x2f0,0x2f0,
+  0x310,0x310,0x310,0x310,0x330,0x330,0x330,0x330,0x350,0x350,0x350,0x350,0x370,0x370,0x370,0x370,
+  0x390,0x390,0x390,0x390,0x3b0,0x3b0,0x3b0,0x3b0,0x3d0,0x3d0,0x3d0,0x3d0,0x3f0,0x3f0,0x3f0,0x3f0,
+  0x410,0x410,0x410,0x410,0x430,0x430,0x430,0x430,0x450,0x450,0x450,0x450,0x470,0x470,0x470,0x470,
+  0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0,0x10,0x20,0x30,0,0x10,0x20,0x30,
+  0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,
+  0,0x10,0x20,0x30,0,0x10,0x20,0x30,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+  0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+  0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
+  0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
+  0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,
+  0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,
+  0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
+  0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
+  0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,
+  0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x100,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
+  0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
+  0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,
+  0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,
+  0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x120,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,
+  0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,
+  0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x130,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,
+  0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,
+  0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x140,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,
+  0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,
+  0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x150,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,
+  0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,
+  0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x160,0x80,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
+  0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
+  0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+  0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+  0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,
+  0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,
+  0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,
+  0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,0x108,
+  0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,
+  0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,0x128,
+  0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,
+  0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,0x148,
+  0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,
+  0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,0x168,
+  0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,
+  0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,0x188,
+  0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,
+  0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,0x1a8,
+  0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+  0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,0x1c8,
+  0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,
+  0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,0x1e8,
+  0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,
+  0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,0x208,
+  0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
+  0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,0x228,
+  0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,
+  0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,0x248,
+  0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,
+  0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268,0x268
+]
+data_8 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
+  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+  0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+  0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,
+  0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+  0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,
+  0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+  0x10,0x10,0x10,0
+]
+indexLength = 1168
+dataLength = 372
+highStart = 0x100000
+shifted12HighStart = 0x100
+type = 1
+valueWidth = 2
+index3NullOffset = 0x2
+dataNullOffset = 0x0
+nullValue = 0x0
diff --git a/vendor/icu_collections/tests/data/cpt/set-empty.16.toml b/vendor/icu_collections/tests/data/cpt/set-empty.16.toml
new file mode 100644
index 00000000..b9ec8ed1
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set-empty.16.toml
@@ -0,0 +1,101 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set-empty.16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set-empty.16"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_16 = [
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,0xad
+]
+indexLength = 1024
+dataLength = 130
+highStart = 0x0
+shifted12HighStart = 0x0
+type = 0
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x3
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,3,0x110000,3
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set-empty.32.toml b/vendor/icu_collections/tests/data/cpt/set-empty.32.toml
new file mode 100644
index 00000000..cc3e1672
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set-empty.32.toml
@@ -0,0 +1,101 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set-empty.32
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set-empty.32"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_32 = [
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  0xad
+]
+indexLength = 1024
+dataLength = 129
+highStart = 0x0
+shifted12HighStart = 0x0
+type = 0
+valueWidth = 1
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x3
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,3,0x110000,3
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set-empty.8.toml b/vendor/icu_collections/tests/data/cpt/set-empty.8.toml
new file mode 100644
index 00000000..5ce7bba5
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set-empty.8.toml
@@ -0,0 +1,101 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set-empty.8
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set-empty.8"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_8 = [
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,0xad
+]
+indexLength = 1024
+dataLength = 132
+highStart = 0x0
+shifted12HighStart = 0x0
+type = 0
+valueWidth = 2
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x3
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,3,0x110000,3
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set-empty.small16.toml b/vendor/icu_collections/tests/data/cpt/set-empty.small16.toml
new file mode 100644
index 00000000..f61d9fe1
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set-empty.small16.toml
@@ -0,0 +1,41 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set-empty.small16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set-empty.small16"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_16 = [
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,0xad
+]
+indexLength = 64
+dataLength = 130
+highStart = 0x0
+shifted12HighStart = 0x0
+type = 1
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x3
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,3,0x110000,3
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set-single-value.16.toml b/vendor/icu_collections/tests/data/cpt/set-single-value.16.toml
new file mode 100644
index 00000000..6eac4b7b
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set-single-value.16.toml
@@ -0,0 +1,101 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set-single-value.16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set-single-value.16"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_16 = [
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,0xad
+]
+indexLength = 1024
+dataLength = 130
+highStart = 0x0
+shifted12HighStart = 0x0
+type = 0
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x5
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,3,0x110000,5
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set-single-value.32.toml b/vendor/icu_collections/tests/data/cpt/set-single-value.32.toml
new file mode 100644
index 00000000..9db84823
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set-single-value.32.toml
@@ -0,0 +1,101 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set-single-value.32
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set-single-value.32"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_32 = [
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  0xad
+]
+indexLength = 1024
+dataLength = 129
+highStart = 0x0
+shifted12HighStart = 0x0
+type = 0
+valueWidth = 1
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x5
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,3,0x110000,5
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set-single-value.8.toml b/vendor/icu_collections/tests/data/cpt/set-single-value.8.toml
new file mode 100644
index 00000000..c92b7a8e
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set-single-value.8.toml
@@ -0,0 +1,101 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set-single-value.8
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set-single-value.8"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_8 = [
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,0xad
+]
+indexLength = 1024
+dataLength = 132
+highStart = 0x0
+shifted12HighStart = 0x0
+type = 0
+valueWidth = 2
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x5
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,3,0x110000,5
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set-single-value.small16.toml b/vendor/icu_collections/tests/data/cpt/set-single-value.small16.toml
new file mode 100644
index 00000000..568362f5
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set-single-value.small16.toml
@@ -0,0 +1,41 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set-single-value.small16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set-single-value.small16"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+]
+data_16 = [
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,0xad
+]
+indexLength = 64
+dataLength = 130
+highStart = 0x0
+shifted12HighStart = 0x0
+type = 1
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0x0
+nullValue = 0x5
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,3,0x110000,5
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set1.16.toml b/vendor/icu_collections/tests/data/cpt/set1.16.toml
new file mode 100644
index 00000000..e064217a
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set1.16.toml
@@ -0,0 +1,138 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set1.16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set1.16"
+index = [
+  0,0x40,0x40,0x59,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0xb3,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xfb,0x121,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x14d,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x495,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x4bc,0x4bf,0x4bf,
+  0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,
+  0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,
+  0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4df,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x1ba,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x1c6,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0x1d3,0x1da,0x1da,0x1da,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x439,0xd0,0xd0,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x455,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0x475
+]
+data_16 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0,0,0,0,0,0,
+  0,0,0,0,0,0,0xf,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,
+  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0,0xad
+]
+indexLength = 1248
+dataLength = 492
+highStart = 0xf0200
+shifted12HighStart = 0xf1
+type = 0
+valueWidth = 0
+index3NullOffset = 0x4
+dataNullOffset = 0x0
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,0,0x40,0,0xe7,0x34,0x3400,0,0x9fa6,0x61,0xda9e,0x31,0xdada,0,0xeeee,0xff,
+  0x11111,1,0x44444,0x61,0xf0003,0,0xf0004,0xf,0xf0006,0x10,0xf0007,0x11,0xf0040,0x12,0x110000,0
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set1.32.toml b/vendor/icu_collections/tests/data/cpt/set1.32.toml
new file mode 100644
index 00000000..9b7299b3
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set1.32.toml
@@ -0,0 +1,138 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set1.32
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set1.32"
+index = [
+  0,0x40,0x40,0x59,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0xb3,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xfb,0x121,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x14d,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x495,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x4bc,0x4bf,0x4bf,
+  0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,
+  0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,
+  0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4df,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x1ba,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x1c6,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0x1d3,0x1da,0x1da,0x1da,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x439,0xd0,0xd0,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x455,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0x475
+]
+data_32 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0,0,0,0,0,0,
+  0,0,0,0,0,0,0xf,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,
+  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0,0xad
+]
+indexLength = 1248
+dataLength = 492
+highStart = 0xf0200
+shifted12HighStart = 0xf1
+type = 0
+valueWidth = 1
+index3NullOffset = 0x4
+dataNullOffset = 0x0
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,0,0x40,0,0xe7,0x34,0x3400,0,0x9fa6,0x61,0xda9e,0x31,0xdada,0,0xeeee,0xff,
+  0x11111,1,0x44444,0x61,0xf0003,0,0xf0004,0xf,0xf0006,0x10,0xf0007,0x11,0xf0040,0x12,0x110000,0
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set1.8.toml b/vendor/icu_collections/tests/data/cpt/set1.8.toml
new file mode 100644
index 00000000..4d06bf9d
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set1.8.toml
@@ -0,0 +1,138 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set1.8
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set1.8"
+index = [
+  0,0x40,0x40,0x59,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0xb3,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xfb,0x121,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,
+  0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x13b,0x14d,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x495,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x49e,0x4bc,0x4bf,0x4bf,
+  0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,
+  0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,
+  0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4bf,0x4df,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,
+  0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x17b,0x1ba,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x1c6,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0x1d3,0x1da,0x1da,0x1da,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x3bc,0x439,0xd0,0xd0,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x455,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0x475
+]
+data_8 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0,0,0,0,0,0,
+  0,0,0,0,0,0,0xf,0x10,0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,
+  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0,0xad
+]
+indexLength = 1248
+dataLength = 492
+highStart = 0xf0200
+shifted12HighStart = 0xf1
+type = 0
+valueWidth = 2
+index3NullOffset = 0x4
+dataNullOffset = 0x0
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,0,0x40,0,0xe7,0x34,0x3400,0,0x9fa6,0x61,0xda9e,0x31,0xdada,0,0xeeee,0xff,
+  0x11111,1,0x44444,0x61,0xf0003,0,0xf0004,0xf,0xf0006,0x10,0xf0007,0x11,0xf0040,0x12,0x110000,0
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set1.small16.toml b/vendor/icu_collections/tests/data/cpt/set1.small16.toml
new file mode 100644
index 00000000..1a724177
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set1.small16.toml
@@ -0,0 +1,81 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set1.small16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set1.small16"
+index = [
+  0,0x40,0x40,0x59,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0x17f,0x199,0x1aa,0x1bd,0x1d5,0x199,0x199,0x199,0x199,0x199,0x199,0x199,0x199,0x199,0x199,0x199,
+  0x199,0x1f3,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,
+  0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,
+  0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x1f6,0x216,0,0x10,0x20,
+  0x30,0x40,0x50,0x60,0x70,0x40,0x50,0x60,0x70,0x59,0x69,0x79,0x89,0,0x10,0x20,
+  0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,
+  0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0xa3,0xa9,0xa9,
+  0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,
+  0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xab,0,
+  0,0,0xb9,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,
+  0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,
+  0xc3,0xc3,0xc3,0xc5,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,
+  0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,
+  0xd3,0xd3,0xd3,0xd3,0xe2,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x99,0x99,0x99,0xee,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xfb,
+  0x102,0x102,0x102,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x7d,
+  0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,0xad,0xad,0xad,0xad,0xad,0xad,0xad,
+  0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,
+  0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xb3,0xce,0xce,0xce,0xce,0xce,0xce,
+  0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xe5,0xf3,0xf3,0xf3,0xf3,0xf3,
+  0xf3,0xf3,0xf3,0xf3,0x105,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0x114,0x123,0xad,0xad,
+  0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,
+  0xad,0xad,0xad,0xad,0xad,0x13f,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,0x15f
+]
+data_16 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0,0,0,0,0,0,0,
+  0,0,0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0xff,0xff,0xff,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x61,0x61,0,0,0,0,0,0,0,0,0,0,0,0,0xf,0x10,
+  0x10,0x11,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+  0x12,0x12,0xad,0,0xad
+]
+indexLength = 535
+dataLength = 277
+highStart = 0xf0200
+shifted12HighStart = 0xf1
+type = 1
+valueWidth = 0
+index3NullOffset = 0x4
+dataNullOffset = 0x0
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,0,0x40,0,0xe7,0x34,0x3400,0,0x9fa6,0x61,0xda9e,0x31,0xdada,0,0xeeee,0xff,
+  0x11111,1,0x44444,0x61,0xf0003,0,0xf0004,0xf,0xf0006,0x10,0xf0007,0x11,0xf0040,0x12,0x110000,0
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set2-overlap.16.toml b/vendor/icu_collections/tests/data/cpt/set2-overlap.16.toml
new file mode 100644
index 00000000..79bed6ea
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set2-overlap.16.toml
@@ -0,0 +1,128 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set2-overlap.16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set2-overlap.16"
+index = [
+  0,0x40,0x72,0x95,0xb3,0xb3,0xb3,0xb3,0xf2,0xf2,0xf2,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0x45e,0x45e,0x45e,0x45e,0x45e,0x45e,0x45e,0x462,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0x132,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,
+  0x13e,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x14d,0x135,0x135,0x135,0x135,0x135,
+  0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,
+  0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x155,0x161,0x161,0x161,0x161,
+  0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x167,0x172,0xb3,0xb3,0xb3,0xb3,0xb,0xb,
+  0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+  0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x408,0x421,
+  0x42b,0x43e
+]
+data_16 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,0,0,0,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,
+  0x7a,0x7a,0x7a,0x7a,0x7a,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,
+  0x7a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,0,0,0,0,0,0,0,0,0,0,0,7,7,7,
+  7,7,0,0xad
+]
+indexLength = 1154
+dataLength = 388
+highStart = 0x30000
+shifted12HighStart = 0x30
+type = 0
+valueWidth = 0
+index3NullOffset = 0xb
+dataNullOffset = 0xb3
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,0,0x21,0,0x72,0x5555,0xdd,3,0xde,4,0x201,0,0x240,6,0x241,0,
+  0x280,6,0x281,0,0x2c0,6,0x2f883,0,0x2f987,0x7a,0x2fa98,5,0x2fedc,0x7a,0x2ffaa,1,
+  0x2ffab,2,0x2ffbb,0,0x2ffc0,7,0x110000,0
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set2-overlap.32.toml b/vendor/icu_collections/tests/data/cpt/set2-overlap.32.toml
new file mode 100644
index 00000000..7582d960
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set2-overlap.32.toml
@@ -0,0 +1,128 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set2-overlap.32
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set2-overlap.32"
+index = [
+  0,0x40,0x72,0x95,0xb3,0xb3,0xb3,0xb3,0xf2,0xf2,0xf2,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0x45e,0x45e,0x45e,0x45e,0x45e,0x45e,0x45e,0x462,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0x132,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,
+  0x13e,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x14d,0x135,0x135,0x135,0x135,0x135,
+  0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,
+  0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x155,0x161,0x161,0x161,0x161,
+  0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x167,0x172,0xb3,0xb3,0xb3,0xb3,0xb,0xb,
+  0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+  0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x408,0x421,
+  0x42b,0x43e
+]
+data_32 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,0,0,0,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,
+  0x7a,0x7a,0x7a,0x7a,0x7a,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,
+  0x7a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,0,0,0,0,0,0,0,0,0,0,0,7,7,7,
+  7,7,0,0xad
+]
+indexLength = 1154
+dataLength = 388
+highStart = 0x30000
+shifted12HighStart = 0x30
+type = 0
+valueWidth = 1
+index3NullOffset = 0xb
+dataNullOffset = 0xb3
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,0,0x21,0,0x72,0x5555,0xdd,3,0xde,4,0x201,0,0x240,6,0x241,0,
+  0x280,6,0x281,0,0x2c0,6,0x2f883,0,0x2f987,0x7a,0x2fa98,5,0x2fedc,0x7a,0x2ffaa,1,
+  0x2ffab,2,0x2ffbb,0,0x2ffc0,7,0x110000,0
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set2-overlap.small16.toml b/vendor/icu_collections/tests/data/cpt/set2-overlap.small16.toml
new file mode 100644
index 00000000..08741aca
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set2-overlap.small16.toml
@@ -0,0 +1,73 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set2-overlap.small16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set2-overlap.small16"
+index = [
+  0,0x40,0x72,0x95,0xb3,0xb3,0xb3,0xb3,0xf2,0xf2,0xf2,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xee,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xfa,0,0x10,0x20,0x30,
+  0x40,0x50,0x60,0x70,0x72,0x82,0x92,0xa2,0x95,0xa5,0xb5,0xc5,0xb3,0xc3,0xd3,0xe3,
+  0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,0xf2,0x102,0x112,0x122,
+  0xf2,0x102,0x112,0x122,0xf2,0x102,0x112,0x122,0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,
+  0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,
+  0xb3,0xc3,0xd3,0xe3,0xb3,0xc3,0xd3,0xe3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0x132,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,
+  0x13e,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x145,0x14d,0x135,0x135,0x135,0x135,0x135,
+  0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,
+  0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x135,0x155,0x161,0x161,0x161,0x161,
+  0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x161,0x167,0x172,0xb3,0xb3,0xb3,0xb3,0x4c,0x6c,
+  0x78,0x78,0x78,0x78,0x78,0x78,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+  0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+  0xb,0xb,0xb,0xb,0xb,0xb,0x98,0xb1,0xbb,0xce
+]
+data_16 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,0x5555,
+  0x5555,0x5555,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,0,0,0,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,
+  0x7a,0x7a,0x7a,0x7a,0x7a,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,
+  0x7a,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,0,0,0,0,0,0,0,0,0,0,0,7,7,7,
+  7,7,0,0xad
+]
+indexLength = 282
+dataLength = 388
+highStart = 0x30000
+shifted12HighStart = 0x30
+type = 1
+valueWidth = 0
+index3NullOffset = 0xb
+dataNullOffset = 0xb3
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,0,0x21,0,0x72,0x5555,0xdd,3,0xde,4,0x201,0,0x240,6,0x241,0,
+  0x280,6,0x281,0,0x2c0,6,0x2f883,0,0x2f987,0x7a,0x2fa98,5,0x2fedc,0x7a,0x2ffaa,1,
+  0x2ffab,2,0x2ffbb,0,0x2ffc0,7,0x110000,0
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set3-initial-9.16.toml b/vendor/icu_collections/tests/data/cpt/set3-initial-9.16.toml
new file mode 100644
index 00000000..c94365e8
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set3-initial-9.16.toml
@@ -0,0 +1,128 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set3-initial-9.16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set3-initial-9.16"
+index = [
+  0,0x40,0x5c,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf7,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x177,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x1a6,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x1da,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6
+]
+data_16 = [
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,0xad
+]
+indexLength = 1024
+dataLength = 552
+highStart = 0xce00
+shifted12HighStart = 0xd
+type = 0
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0x80
+nullValue = 0x9
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,9,0x31,9,0xa4,1,0x3400,9,0x6789,2,0x9000,9,0xa000,4,0xabcd,9,
+  0xbcde,3,0xcccc,9,0x110000,6
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set3-initial-9.32.toml b/vendor/icu_collections/tests/data/cpt/set3-initial-9.32.toml
new file mode 100644
index 00000000..1a0c9732
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set3-initial-9.32.toml
@@ -0,0 +1,128 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set3-initial-9.32
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set3-initial-9.32"
+index = [
+  0,0x40,0x5c,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf7,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x177,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x1a6,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x1da,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6
+]
+data_32 = [
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,0xad
+]
+indexLength = 1024
+dataLength = 551
+highStart = 0xce00
+shifted12HighStart = 0xd
+type = 0
+valueWidth = 1
+index3NullOffset = 0x7fff
+dataNullOffset = 0x80
+nullValue = 0x9
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,9,0x31,9,0xa4,1,0x3400,9,0x6789,2,0x9000,9,0xa000,4,0xabcd,9,
+  0xbcde,3,0xcccc,9,0x110000,6
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set3-initial-9.8.toml b/vendor/icu_collections/tests/data/cpt/set3-initial-9.8.toml
new file mode 100644
index 00000000..5008268b
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set3-initial-9.8.toml
@@ -0,0 +1,128 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set3-initial-9.8
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set3-initial-9.8"
+index = [
+  0,0x40,0x5c,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xf7,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,0x137,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x177,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,0x184,
+  0x184,0x184,0x184,0x1a6,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x1da,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,
+  0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6,0x1e6
+]
+data_8 = [
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,6,6,6,6,6,6,0xad
+]
+indexLength = 1024
+dataLength = 552
+highStart = 0xce00
+shifted12HighStart = 0xd
+type = 0
+valueWidth = 2
+index3NullOffset = 0x7fff
+dataNullOffset = 0x80
+nullValue = 0x9
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,9,0x31,9,0xa4,1,0x3400,9,0x6789,2,0x9000,9,0xa000,4,0xabcd,9,
+  0xbcde,3,0xcccc,9,0x110000,6
+]
diff --git a/vendor/icu_collections/tests/data/cpt/set3-initial-9.small16.toml b/vendor/icu_collections/tests/data/cpt/set3-initial-9.small16.toml
new file mode 100644
index 00000000..aee15384
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/set3-initial-9.small16.toml
@@ -0,0 +1,72 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: set3-initial-9.small16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "set3-initial-9.small16"
+index = [
+  0,0x40,0x5c,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x11c,0x136,0x14e,0x16d,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x5c,0x6c,0x7c,0x8c,
+  0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0,
+  0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0,0x80,0x90,0xa0,0xb0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc7,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,
+  0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,
+  0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0xe7,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,
+  0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,
+  0xf4,0xf4,0xf4,0xf4,0xf4,0xf6,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x104,0x110,0x110,0x110,0x110,0x110,0x110,0x110,
+  0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x110,0x44,0x50,0x50,0x50,
+  0x50,0x50,0x50,0x50,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+  0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x78,3,3,3,3,3,3,
+  3,3,3,3,3,3,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,3,3,
+  3,3,3,0xb8,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xe8,3,3,3,
+  3,3,3,0xfc
+]
+data_16 = [
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  9,9,9,9,9,9,9,4,4,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  6,0xad
+]
+indexLength = 372
+dataLength = 290
+highStart = 0xce00
+shifted12HighStart = 0xd
+type = 1
+valueWidth = 0
+index3NullOffset = 0x3
+dataNullOffset = 0x80
+nullValue = 0x9
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0,9,0x31,9,0xa4,1,0x3400,9,0x6789,2,0x9000,9,0xa000,4,0xabcd,9,
+  0xbcde,3,0xcccc,9,0x110000,6
+]
diff --git a/vendor/icu_collections/tests/data/cpt/short-all-same.16.toml b/vendor/icu_collections/tests/data/cpt/short-all-same.16.toml
new file mode 100644
index 00000000..c8156e69
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/short-all-same.16.toml
@@ -0,0 +1,321 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: short-all-same.small16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "short-all-same.small16"
+index = [
+  0,0x40,0x80,0xc0,0x100,0x140,0x180,0x1c0,0x200,0x240,0x280,0x2c0,0x300,0x340,0x380,0x3c0,
+  0x400,0x440,0x480,0x4c0,0x500,0x540,0x580,0x5c0,0x600,0x640,0x680,0x6c0,0x700,0x740,0x780,0x7c0,
+  0x800,0x840,0x880,0x8c0,0x900,0x940,0x980,0x9c0,0xa00,0xa40,0xa80,0xac0,0xb00,0xb40,0xb80,0xbc0,
+  0xc00,0xc40,0xc80,0xcc0,0xd00,0xd40,0xd80,0xdc0,0xe00,0xe40,0xe80,0xec0,0xf00,0xf40,0xf80,0xfc0
+]
+data_16 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
+  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+  0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+  0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,
+  0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+  0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,
+  0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+  0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+  0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+  0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+  0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+  0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+  0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+  0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+  0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+  0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+  0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+  0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+  0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+  0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+  0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+  0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+  0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+  0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+  0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+  0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+  0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+  0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+  0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+  0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+  0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+  0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+  0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+  0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+  0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+  0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+  0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+  0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+  0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+  0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+  0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+  0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+  0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+  0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+  0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+  0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+  0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+  0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+  0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+  0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+  0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+  0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+  0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+  0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+  0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+  0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+  0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+  0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+  0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,
+  0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+  0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+  0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,
+  0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+  0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,
+  0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+  0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,
+  0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+  0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+  0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,
+  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+  0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,
+  0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+  0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,
+  0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,
+  0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+  0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,
+  0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,
+  0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
+  0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+  0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,
+  0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+  0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
+  0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,
+  0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+  0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,
+  0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,
+  0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,
+  0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+  0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,
+  0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,
+  0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,
+  0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+  0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,
+  0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,
+  0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+  0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,
+  0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,
+  0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,
+  0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+  0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,
+  0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,
+  0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,
+  0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+  0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,
+  0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,
+  0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+  0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,
+  0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,
+  0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,
+  0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
+  0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,
+  0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,
+  0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,
+  0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,
+  0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+  0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,
+  0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
+  0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,
+  0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+  0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,
+  0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,
+  0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+  0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,
+  0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,
+  0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,
+  0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,
+  0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
+  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,
+  0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+  0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,
+  0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,
+  0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,
+  0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,
+  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+  0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,
+  0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,
+  0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
+  0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+  0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,
+  0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,
+  0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+  0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,
+  0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,
+  0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,
+  0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+  0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
+  0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,
+  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+  0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,
+  0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,
+  0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,
+  0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+  0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,
+  0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
+  0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+  0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,
+  0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,
+  0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,
+  0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,
+  0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,
+  0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,
+  0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,
+  0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,
+  0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,
+  0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
+  0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,
+  0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,
+  0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,
+  0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,
+  0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,
+  0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,
+  0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,
+  0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,
+  0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+  0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
+  0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,
+  0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,
+  0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,
+  0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,
+  0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,
+  0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+  0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,
+  0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,
+  0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,
+  0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,
+  0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,
+  0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,
+  0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,
+  0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,
+  0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,
+  0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,
+  0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
+  0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,
+  0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,
+  0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,
+  0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,
+  0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,
+  0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,
+  0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,
+  0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,
+  0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,
+  0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,
+  0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,
+  0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,
+  0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,
+  0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,
+  0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,
+  0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,
+  0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
+  0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,
+  0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,
+  0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
+  0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,
+  0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,
+  0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
+  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,
+  0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,
+  0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
+  0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,
+  0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,
+  0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
+  0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,
+  0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0,0xad
+]
+indexLength = 64
+dataLength = 4098
+highStart = 0x1000
+shifted12HighStart = 0x1
+type = 1
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0xfffff
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0x10,0,0x20,1,0x30,2,0x40,3,0x50,4,0x60,5,0x70,6,0x80,7,
+  0x90,8,0xa0,9,0xb0,0xa,0xc0,0xb,0xd0,0xc,0xe0,0xd,0xf0,0xe,0x100,0xf,
+  0x110,0x10,0x120,0x11,0x130,0x12,0x140,0x13,0x150,0x14,0x160,0x15,0x170,0x16,0x180,0x17,
+  0x190,0x18,0x1a0,0x19,0x1b0,0x1a,0x1c0,0x1b,0x1d0,0x1c,0x1e0,0x1d,0x1f0,0x1e,0x200,0x1f,
+  0x210,0x20,0x220,0x21,0x230,0x22,0x240,0x23,0x250,0x24,0x260,0x25,0x270,0x26,0x280,0x27,
+  0x290,0x28,0x2a0,0x29,0x2b0,0x2a,0x2c0,0x2b,0x2d0,0x2c,0x2e0,0x2d,0x2f0,0x2e,0x300,0x2f,
+  0x310,0x30,0x320,0x31,0x330,0x32,0x340,0x33,0x350,0x34,0x360,0x35,0x370,0x36,0x380,0x37,
+  0x390,0x38,0x3a0,0x39,0x3b0,0x3a,0x3c0,0x3b,0x3d0,0x3c,0x3e0,0x3d,0x3f0,0x3e,0x400,0x3f,
+  0x410,0x40,0x420,0x41,0x430,0x42,0x440,0x43,0x450,0x44,0x460,0x45,0x470,0x46,0x480,0x47,
+  0x490,0x48,0x4a0,0x49,0x4b0,0x4a,0x4c0,0x4b,0x4d0,0x4c,0x4e0,0x4d,0x4f0,0x4e,0x500,0x4f,
+  0x510,0x50,0x520,0x51,0x530,0x52,0x540,0x53,0x550,0x54,0x560,0x55,0x570,0x56,0x580,0x57,
+  0x590,0x58,0x5a0,0x59,0x5b0,0x5a,0x5c0,0x5b,0x5d0,0x5c,0x5e0,0x5d,0x5f0,0x5e,0x600,0x5f,
+  0x610,0x60,0x620,0x61,0x630,0x62,0x640,0x63,0x650,0x64,0x660,0x65,0x670,0x66,0x680,0x67,
+  0x690,0x68,0x6a0,0x69,0x6b0,0x6a,0x6c0,0x6b,0x6d0,0x6c,0x6e0,0x6d,0x6f0,0x6e,0x700,0x6f,
+  0x710,0x70,0x720,0x71,0x730,0x72,0x740,0x73,0x750,0x74,0x760,0x75,0x770,0x76,0x780,0x77,
+  0x790,0x78,0x7a0,0x79,0x7b0,0x7a,0x7c0,0x7b,0x7d0,0x7c,0x7e0,0x7d,0x7f0,0x7e,0x800,0x7f,
+  0x810,0x80,0x820,0x81,0x830,0x82,0x840,0x83,0x850,0x84,0x860,0x85,0x870,0x86,0x880,0x87,
+  0x890,0x88,0x8a0,0x89,0x8b0,0x8a,0x8c0,0x8b,0x8d0,0x8c,0x8e0,0x8d,0x8f0,0x8e,0x900,0x8f,
+  0x910,0x90,0x920,0x91,0x930,0x92,0x940,0x93,0x950,0x94,0x960,0x95,0x970,0x96,0x980,0x97,
+  0x990,0x98,0x9a0,0x99,0x9b0,0x9a,0x9c0,0x9b,0x9d0,0x9c,0x9e0,0x9d,0x9f0,0x9e,0xa00,0x9f,
+  0xa10,0xa0,0xa20,0xa1,0xa30,0xa2,0xa40,0xa3,0xa50,0xa4,0xa60,0xa5,0xa70,0xa6,0xa80,0xa7,
+  0xa90,0xa8,0xaa0,0xa9,0xab0,0xaa,0xac0,0xab,0xad0,0xac,0xae0,0xad,0xaf0,0xae,0xb00,0xaf,
+  0xb10,0xb0,0xb20,0xb1,0xb30,0xb2,0xb40,0xb3,0xb50,0xb4,0xb60,0xb5,0xb70,0xb6,0xb80,0xb7,
+  0xb90,0xb8,0xba0,0xb9,0xbb0,0xba,0xbc0,0xbb,0xbd0,0xbc,0xbe0,0xbd,0xbf0,0xbe,0xc00,0xbf,
+  0xc10,0xc0,0xc20,0xc1,0xc30,0xc2,0xc40,0xc3,0xc50,0xc4,0xc60,0xc5,0xc70,0xc6,0xc80,0xc7,
+  0xc90,0xc8,0xca0,0xc9,0xcb0,0xca,0xcc0,0xcb,0xcd0,0xcc,0xce0,0xcd,0xcf0,0xce,0xd00,0xcf,
+  0xd10,0xd0,0xd20,0xd1,0xd30,0xd2,0xd40,0xd3,0xd50,0xd4,0xd60,0xd5,0xd70,0xd6,0xd80,0xd7,
+  0xd90,0xd8,0xda0,0xd9,0xdb0,0xda,0xdc0,0xdb,0xdd0,0xdc,0xde0,0xdd,0xdf0,0xde,0xe00,0xdf,
+  0xe10,0xe0,0xe20,0xe1,0xe30,0xe2,0xe40,0xe3,0xe50,0xe4,0xe60,0xe5,0xe70,0xe6,0xe80,0xe7,
+  0xe90,0xe8,0xea0,0xe9,0xeb0,0xea,0xec0,0xeb,0xed0,0xec,0xee0,0xed,0xef0,0xee,0xf00,0xef,
+  0xf10,0xf0,0xf20,0xf1,0xf30,0xf2,0xf40,0xf3,0xf50,0xf4,0xf60,0xf5,0xf70,0xf6,0xf80,0xf7,
+  0xf90,0xf8,0xfa0,0xf9,0xfb0,0xfa,0xfc0,0xfb,0xfd0,0xfc,0xfe0,0xfd,0xff0,0xfe,0x1000,0xff,
+  0x110000,0
+]
diff --git a/vendor/icu_collections/tests/data/cpt/short-all-same.8.toml b/vendor/icu_collections/tests/data/cpt/short-all-same.8.toml
new file mode 100644
index 00000000..e1b26488
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/short-all-same.8.toml
@@ -0,0 +1,385 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: short-all-same.8
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "short-all-same.8"
+index = [
+  0,0x40,0x80,0xc0,0x100,0x140,0x180,0x1c0,0x200,0x240,0x280,0x2c0,0x300,0x340,0x380,0x3c0,
+  0x400,0x440,0x480,0x4c0,0x500,0x540,0x580,0x5c0,0x600,0x640,0x680,0x6c0,0x700,0x740,0x780,0x7c0,
+  0x800,0x840,0x880,0x8c0,0x900,0x940,0x980,0x9c0,0xa00,0xa40,0xa80,0xac0,0xb00,0xb40,0xb80,0xbc0,
+  0xc00,0xc40,0xc80,0xcc0,0xd00,0xd40,0xd80,0xdc0,0xe00,0xe40,0xe80,0xec0,0xf00,0xf40,0xf80,0xfc0,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,
+  0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000
+]
+data_8 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
+  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+  0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+  0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,
+  0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+  0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,
+  0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+  0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+  0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+  0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+  0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+  0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+  0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+  0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+  0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+  0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+  0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+  0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+  0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+  0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+  0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+  0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+  0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+  0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+  0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+  0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+  0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+  0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+  0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+  0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+  0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+  0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+  0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+  0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+  0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+  0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+  0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+  0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+  0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+  0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+  0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+  0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+  0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+  0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+  0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+  0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+  0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+  0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+  0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+  0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+  0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+  0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+  0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+  0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+  0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+  0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+  0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+  0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+  0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,
+  0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+  0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+  0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,
+  0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+  0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,
+  0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+  0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,
+  0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+  0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+  0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,
+  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+  0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,
+  0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+  0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,
+  0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,
+  0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+  0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,
+  0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,
+  0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
+  0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+  0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,
+  0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+  0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
+  0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,
+  0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+  0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,
+  0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,
+  0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,
+  0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+  0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,
+  0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,
+  0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,
+  0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+  0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,
+  0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,
+  0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+  0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,
+  0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,
+  0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,
+  0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+  0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,
+  0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,
+  0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,
+  0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+  0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,
+  0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,
+  0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+  0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,
+  0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,
+  0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,
+  0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
+  0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,
+  0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,
+  0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,
+  0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,
+  0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+  0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,
+  0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
+  0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,
+  0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+  0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,
+  0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,
+  0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+  0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,
+  0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,
+  0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,
+  0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,
+  0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
+  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,
+  0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+  0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,
+  0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,
+  0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,
+  0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,
+  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+  0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,
+  0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,
+  0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
+  0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+  0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,
+  0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,
+  0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+  0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,
+  0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,
+  0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,
+  0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+  0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
+  0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,
+  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+  0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,
+  0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,
+  0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,
+  0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+  0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,
+  0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
+  0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+  0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,
+  0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,
+  0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,
+  0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,
+  0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,
+  0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,
+  0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,
+  0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,
+  0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,
+  0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
+  0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,
+  0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,
+  0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,
+  0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,
+  0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,
+  0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,
+  0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,
+  0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,
+  0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+  0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
+  0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,
+  0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,
+  0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,
+  0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,
+  0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,
+  0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+  0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,
+  0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,
+  0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,
+  0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,
+  0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,
+  0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,
+  0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,
+  0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,
+  0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,
+  0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,
+  0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
+  0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,
+  0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,
+  0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,
+  0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,
+  0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,
+  0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,
+  0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,
+  0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,
+  0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,
+  0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,
+  0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,
+  0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,
+  0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,
+  0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,
+  0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,
+  0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,
+  0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
+  0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,
+  0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,
+  0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
+  0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,
+  0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,
+  0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
+  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,
+  0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,
+  0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
+  0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,
+  0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,
+  0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
+  0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,
+  0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0xad
+]
+indexLength = 1024
+dataLength = 4164
+highStart = 0x1000
+shifted12HighStart = 0x1
+type = 0
+valueWidth = 2
+index3NullOffset = 0x7fff
+dataNullOffset = 0x1000
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0x10,0,0x20,1,0x30,2,0x40,3,0x50,4,0x60,5,0x70,6,0x80,7,
+  0x90,8,0xa0,9,0xb0,0xa,0xc0,0xb,0xd0,0xc,0xe0,0xd,0xf0,0xe,0x100,0xf,
+  0x110,0x10,0x120,0x11,0x130,0x12,0x140,0x13,0x150,0x14,0x160,0x15,0x170,0x16,0x180,0x17,
+  0x190,0x18,0x1a0,0x19,0x1b0,0x1a,0x1c0,0x1b,0x1d0,0x1c,0x1e0,0x1d,0x1f0,0x1e,0x200,0x1f,
+  0x210,0x20,0x220,0x21,0x230,0x22,0x240,0x23,0x250,0x24,0x260,0x25,0x270,0x26,0x280,0x27,
+  0x290,0x28,0x2a0,0x29,0x2b0,0x2a,0x2c0,0x2b,0x2d0,0x2c,0x2e0,0x2d,0x2f0,0x2e,0x300,0x2f,
+  0x310,0x30,0x320,0x31,0x330,0x32,0x340,0x33,0x350,0x34,0x360,0x35,0x370,0x36,0x380,0x37,
+  0x390,0x38,0x3a0,0x39,0x3b0,0x3a,0x3c0,0x3b,0x3d0,0x3c,0x3e0,0x3d,0x3f0,0x3e,0x400,0x3f,
+  0x410,0x40,0x420,0x41,0x430,0x42,0x440,0x43,0x450,0x44,0x460,0x45,0x470,0x46,0x480,0x47,
+  0x490,0x48,0x4a0,0x49,0x4b0,0x4a,0x4c0,0x4b,0x4d0,0x4c,0x4e0,0x4d,0x4f0,0x4e,0x500,0x4f,
+  0x510,0x50,0x520,0x51,0x530,0x52,0x540,0x53,0x550,0x54,0x560,0x55,0x570,0x56,0x580,0x57,
+  0x590,0x58,0x5a0,0x59,0x5b0,0x5a,0x5c0,0x5b,0x5d0,0x5c,0x5e0,0x5d,0x5f0,0x5e,0x600,0x5f,
+  0x610,0x60,0x620,0x61,0x630,0x62,0x640,0x63,0x650,0x64,0x660,0x65,0x670,0x66,0x680,0x67,
+  0x690,0x68,0x6a0,0x69,0x6b0,0x6a,0x6c0,0x6b,0x6d0,0x6c,0x6e0,0x6d,0x6f0,0x6e,0x700,0x6f,
+  0x710,0x70,0x720,0x71,0x730,0x72,0x740,0x73,0x750,0x74,0x760,0x75,0x770,0x76,0x780,0x77,
+  0x790,0x78,0x7a0,0x79,0x7b0,0x7a,0x7c0,0x7b,0x7d0,0x7c,0x7e0,0x7d,0x7f0,0x7e,0x800,0x7f,
+  0x810,0x80,0x820,0x81,0x830,0x82,0x840,0x83,0x850,0x84,0x860,0x85,0x870,0x86,0x880,0x87,
+  0x890,0x88,0x8a0,0x89,0x8b0,0x8a,0x8c0,0x8b,0x8d0,0x8c,0x8e0,0x8d,0x8f0,0x8e,0x900,0x8f,
+  0x910,0x90,0x920,0x91,0x930,0x92,0x940,0x93,0x950,0x94,0x960,0x95,0x970,0x96,0x980,0x97,
+  0x990,0x98,0x9a0,0x99,0x9b0,0x9a,0x9c0,0x9b,0x9d0,0x9c,0x9e0,0x9d,0x9f0,0x9e,0xa00,0x9f,
+  0xa10,0xa0,0xa20,0xa1,0xa30,0xa2,0xa40,0xa3,0xa50,0xa4,0xa60,0xa5,0xa70,0xa6,0xa80,0xa7,
+  0xa90,0xa8,0xaa0,0xa9,0xab0,0xaa,0xac0,0xab,0xad0,0xac,0xae0,0xad,0xaf0,0xae,0xb00,0xaf,
+  0xb10,0xb0,0xb20,0xb1,0xb30,0xb2,0xb40,0xb3,0xb50,0xb4,0xb60,0xb5,0xb70,0xb6,0xb80,0xb7,
+  0xb90,0xb8,0xba0,0xb9,0xbb0,0xba,0xbc0,0xbb,0xbd0,0xbc,0xbe0,0xbd,0xbf0,0xbe,0xc00,0xbf,
+  0xc10,0xc0,0xc20,0xc1,0xc30,0xc2,0xc40,0xc3,0xc50,0xc4,0xc60,0xc5,0xc70,0xc6,0xc80,0xc7,
+  0xc90,0xc8,0xca0,0xc9,0xcb0,0xca,0xcc0,0xcb,0xcd0,0xcc,0xce0,0xcd,0xcf0,0xce,0xd00,0xcf,
+  0xd10,0xd0,0xd20,0xd1,0xd30,0xd2,0xd40,0xd3,0xd50,0xd4,0xd60,0xd5,0xd70,0xd6,0xd80,0xd7,
+  0xd90,0xd8,0xda0,0xd9,0xdb0,0xda,0xdc0,0xdb,0xdd0,0xdc,0xde0,0xdd,0xdf0,0xde,0xe00,0xdf,
+  0xe10,0xe0,0xe20,0xe1,0xe30,0xe2,0xe40,0xe3,0xe50,0xe4,0xe60,0xe5,0xe70,0xe6,0xe80,0xe7,
+  0xe90,0xe8,0xea0,0xe9,0xeb0,0xea,0xec0,0xeb,0xed0,0xec,0xee0,0xed,0xef0,0xee,0xf00,0xef,
+  0xf10,0xf0,0xf20,0xf1,0xf30,0xf2,0xf40,0xf3,0xf50,0xf4,0xf60,0xf5,0xf70,0xf6,0xf80,0xf7,
+  0xf90,0xf8,0xfa0,0xf9,0xfb0,0xfa,0xfc0,0xfb,0xfd0,0xfc,0xfe0,0xfd,0xff0,0xfe,0x1000,0xff,
+  0x110000,0
+]
diff --git a/vendor/icu_collections/tests/data/cpt/short-all-same.small16.toml b/vendor/icu_collections/tests/data/cpt/short-all-same.small16.toml
new file mode 100644
index 00000000..c8156e69
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/short-all-same.small16.toml
@@ -0,0 +1,321 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: short-all-same.small16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "short-all-same.small16"
+index = [
+  0,0x40,0x80,0xc0,0x100,0x140,0x180,0x1c0,0x200,0x240,0x280,0x2c0,0x300,0x340,0x380,0x3c0,
+  0x400,0x440,0x480,0x4c0,0x500,0x540,0x580,0x5c0,0x600,0x640,0x680,0x6c0,0x700,0x740,0x780,0x7c0,
+  0x800,0x840,0x880,0x8c0,0x900,0x940,0x980,0x9c0,0xa00,0xa40,0xa80,0xac0,0xb00,0xb40,0xb80,0xbc0,
+  0xc00,0xc40,0xc80,0xcc0,0xd00,0xd40,0xd80,0xdc0,0xe00,0xe40,0xe80,0xec0,0xf00,0xf40,0xf80,0xfc0
+]
+data_16 = [
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
+  7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
+  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,0xa,
+  0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,
+  0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,0xc,
+  0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,
+  0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,
+  0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,
+  0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
+  0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
+  0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
+  0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
+  0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
+  0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
+  0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
+  0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
+  0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+  0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
+  0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,0x1a,
+  0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,0x1b,
+  0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,
+  0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,0x1d,
+  0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,0x1e,
+  0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
+  0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
+  0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,0x21,
+  0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
+  0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x23,
+  0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,
+  0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,
+  0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,
+  0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,
+  0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
+  0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,0x29,
+  0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,
+  0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,
+  0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,0x2c,
+  0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,
+  0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,
+  0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,
+  0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,
+  0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,0x31,
+  0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,0x32,
+  0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,
+  0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,0x34,
+  0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
+  0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+  0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,
+  0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,
+  0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x39,
+  0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,0x3a,
+  0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,0x3b,
+  0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,0x3c,
+  0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,
+  0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,
+  0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
+  0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
+  0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,
+  0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
+  0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,0x43,
+  0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,
+  0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
+  0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,0x46,
+  0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
+  0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,0x48,
+  0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,
+  0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,0x4a,
+  0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,0x4b,
+  0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,0x4c,
+  0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,
+  0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,0x4e,
+  0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,
+  0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,
+  0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,
+  0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
+  0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,0x53,
+  0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x54,
+  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
+  0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,0x56,
+  0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,0x57,
+  0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x58,
+  0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,0x59,
+  0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,0x5a,
+  0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,
+  0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,
+  0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,
+  0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,0x5e,
+  0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,
+  0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
+  0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,
+  0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,0x62,
+  0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,
+  0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,0x64,
+  0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,0x65,
+  0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,
+  0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,
+  0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,0x68,
+  0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,
+  0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,0x6a,
+  0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,
+  0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,
+  0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,0x6d,
+  0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,0x6e,
+  0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,
+  0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
+  0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,0x71,
+  0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,0x72,
+  0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,0x73,
+  0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,0x74,
+  0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75,
+  0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76,
+  0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,0x77,
+  0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,0x78,
+  0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,
+  0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,
+  0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,0x7b,
+  0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,
+  0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,0x7d,
+  0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,
+  0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,
+  0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
+  0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,
+  0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,
+  0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,0x83,
+  0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,
+  0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,0x85,
+  0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86,
+  0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,0x87,
+  0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
+  0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,0x89,
+  0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,
+  0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,0x8b,
+  0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,0x8c,
+  0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,0x8d,
+  0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,0x8e,
+  0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,0x8f,
+  0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,0x91,
+  0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,
+  0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,
+  0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0x94,
+  0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,0x95,
+  0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,0x96,
+  0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,0x97,
+  0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,0x98,
+  0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,0x99,
+  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,
+  0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,0x9b,
+  0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,0x9c,
+  0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,0x9d,
+  0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,0x9e,
+  0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,0x9f,
+  0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,
+  0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,0xa1,
+  0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,
+  0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,
+  0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,0xa4,
+  0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,0xa5,
+  0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,0xa6,
+  0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,0xa7,
+  0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,
+  0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,0xa9,
+  0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
+  0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,0xab,
+  0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,0xac,
+  0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,0xad,
+  0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,0xae,
+  0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,0xaf,
+  0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,0xb0,
+  0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,0xb1,
+  0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,0xb2,
+  0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,0xb3,
+  0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,0xb4,
+  0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,0xb5,
+  0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,0xb6,
+  0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,0xb7,
+  0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,0xb8,
+  0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,0xb9,
+  0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,
+  0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,0xbb,
+  0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,0xbc,
+  0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,0xbd,
+  0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,0xbe,
+  0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,0xbf,
+  0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,
+  0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,0xc1,
+  0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,0xc2,
+  0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,
+  0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,0xc4,
+  0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,0xc5,
+  0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,0xc6,
+  0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,
+  0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,0xc8,
+  0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,0xc9,
+  0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,0xca,
+  0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,0xcb,
+  0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,
+  0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,0xcd,
+  0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,0xce,
+  0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,0xcf,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+  0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,
+  0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,0xd2,
+  0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,0xd3,
+  0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,0xd4,
+  0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,0xd5,
+  0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,0xd6,
+  0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,0xd7,
+  0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,0xd8,
+  0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,0xd9,
+  0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,0xda,
+  0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,0xdb,
+  0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,0xdc,
+  0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,
+  0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,0xde,
+  0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,
+  0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,0xe2,
+  0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,0xe3,
+  0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,0xe4,
+  0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,0xe5,
+  0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,0xe6,
+  0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,0xe7,
+  0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,0xe8,
+  0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,0xe9,
+  0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,0xea,
+  0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,
+  0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,0xec,
+  0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,
+  0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,0xee,
+  0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,0xef,
+  0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
+  0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,0xf1,
+  0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,0xf2,
+  0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,0xf3,
+  0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,0xf4,
+  0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,0xf5,
+  0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,
+  0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,
+  0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,0xf8,
+  0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,0xf9,
+  0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,0xfa,
+  0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,
+  0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,0xfc,
+  0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,
+  0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,
+  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+  0,0xad
+]
+indexLength = 64
+dataLength = 4098
+highStart = 0x1000
+shifted12HighStart = 0x1
+type = 1
+valueWidth = 0
+index3NullOffset = 0x7fff
+dataNullOffset = 0xfffff
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0x10,0,0x20,1,0x30,2,0x40,3,0x50,4,0x60,5,0x70,6,0x80,7,
+  0x90,8,0xa0,9,0xb0,0xa,0xc0,0xb,0xd0,0xc,0xe0,0xd,0xf0,0xe,0x100,0xf,
+  0x110,0x10,0x120,0x11,0x130,0x12,0x140,0x13,0x150,0x14,0x160,0x15,0x170,0x16,0x180,0x17,
+  0x190,0x18,0x1a0,0x19,0x1b0,0x1a,0x1c0,0x1b,0x1d0,0x1c,0x1e0,0x1d,0x1f0,0x1e,0x200,0x1f,
+  0x210,0x20,0x220,0x21,0x230,0x22,0x240,0x23,0x250,0x24,0x260,0x25,0x270,0x26,0x280,0x27,
+  0x290,0x28,0x2a0,0x29,0x2b0,0x2a,0x2c0,0x2b,0x2d0,0x2c,0x2e0,0x2d,0x2f0,0x2e,0x300,0x2f,
+  0x310,0x30,0x320,0x31,0x330,0x32,0x340,0x33,0x350,0x34,0x360,0x35,0x370,0x36,0x380,0x37,
+  0x390,0x38,0x3a0,0x39,0x3b0,0x3a,0x3c0,0x3b,0x3d0,0x3c,0x3e0,0x3d,0x3f0,0x3e,0x400,0x3f,
+  0x410,0x40,0x420,0x41,0x430,0x42,0x440,0x43,0x450,0x44,0x460,0x45,0x470,0x46,0x480,0x47,
+  0x490,0x48,0x4a0,0x49,0x4b0,0x4a,0x4c0,0x4b,0x4d0,0x4c,0x4e0,0x4d,0x4f0,0x4e,0x500,0x4f,
+  0x510,0x50,0x520,0x51,0x530,0x52,0x540,0x53,0x550,0x54,0x560,0x55,0x570,0x56,0x580,0x57,
+  0x590,0x58,0x5a0,0x59,0x5b0,0x5a,0x5c0,0x5b,0x5d0,0x5c,0x5e0,0x5d,0x5f0,0x5e,0x600,0x5f,
+  0x610,0x60,0x620,0x61,0x630,0x62,0x640,0x63,0x650,0x64,0x660,0x65,0x670,0x66,0x680,0x67,
+  0x690,0x68,0x6a0,0x69,0x6b0,0x6a,0x6c0,0x6b,0x6d0,0x6c,0x6e0,0x6d,0x6f0,0x6e,0x700,0x6f,
+  0x710,0x70,0x720,0x71,0x730,0x72,0x740,0x73,0x750,0x74,0x760,0x75,0x770,0x76,0x780,0x77,
+  0x790,0x78,0x7a0,0x79,0x7b0,0x7a,0x7c0,0x7b,0x7d0,0x7c,0x7e0,0x7d,0x7f0,0x7e,0x800,0x7f,
+  0x810,0x80,0x820,0x81,0x830,0x82,0x840,0x83,0x850,0x84,0x860,0x85,0x870,0x86,0x880,0x87,
+  0x890,0x88,0x8a0,0x89,0x8b0,0x8a,0x8c0,0x8b,0x8d0,0x8c,0x8e0,0x8d,0x8f0,0x8e,0x900,0x8f,
+  0x910,0x90,0x920,0x91,0x930,0x92,0x940,0x93,0x950,0x94,0x960,0x95,0x970,0x96,0x980,0x97,
+  0x990,0x98,0x9a0,0x99,0x9b0,0x9a,0x9c0,0x9b,0x9d0,0x9c,0x9e0,0x9d,0x9f0,0x9e,0xa00,0x9f,
+  0xa10,0xa0,0xa20,0xa1,0xa30,0xa2,0xa40,0xa3,0xa50,0xa4,0xa60,0xa5,0xa70,0xa6,0xa80,0xa7,
+  0xa90,0xa8,0xaa0,0xa9,0xab0,0xaa,0xac0,0xab,0xad0,0xac,0xae0,0xad,0xaf0,0xae,0xb00,0xaf,
+  0xb10,0xb0,0xb20,0xb1,0xb30,0xb2,0xb40,0xb3,0xb50,0xb4,0xb60,0xb5,0xb70,0xb6,0xb80,0xb7,
+  0xb90,0xb8,0xba0,0xb9,0xbb0,0xba,0xbc0,0xbb,0xbd0,0xbc,0xbe0,0xbd,0xbf0,0xbe,0xc00,0xbf,
+  0xc10,0xc0,0xc20,0xc1,0xc30,0xc2,0xc40,0xc3,0xc50,0xc4,0xc60,0xc5,0xc70,0xc6,0xc80,0xc7,
+  0xc90,0xc8,0xca0,0xc9,0xcb0,0xca,0xcc0,0xcb,0xcd0,0xcc,0xce0,0xcd,0xcf0,0xce,0xd00,0xcf,
+  0xd10,0xd0,0xd20,0xd1,0xd30,0xd2,0xd40,0xd3,0xd50,0xd4,0xd60,0xd5,0xd70,0xd6,0xd80,0xd7,
+  0xd90,0xd8,0xda0,0xd9,0xdb0,0xda,0xdc0,0xdb,0xdd0,0xdc,0xde0,0xdd,0xdf0,0xde,0xe00,0xdf,
+  0xe10,0xe0,0xe20,0xe1,0xe30,0xe2,0xe40,0xe3,0xe50,0xe4,0xe60,0xe5,0xe70,0xe6,0xe80,0xe7,
+  0xe90,0xe8,0xea0,0xe9,0xeb0,0xea,0xec0,0xeb,0xed0,0xec,0xee0,0xed,0xef0,0xee,0xf00,0xef,
+  0xf10,0xf0,0xf20,0xf1,0xf30,0xf2,0xf40,0xf3,0xf50,0xf4,0xf60,0xf5,0xf70,0xf6,0xf80,0xf7,
+  0xf90,0xf8,0xfa0,0xf9,0xfb0,0xfa,0xfc0,0xfb,0xfd0,0xfc,0xfe0,0xfd,0xff0,0xfe,0x1000,0xff,
+  0x110000,0
+]
diff --git a/vendor/icu_collections/tests/data/cpt/small0-in-fast.16.toml b/vendor/icu_collections/tests/data/cpt/small0-in-fast.16.toml
new file mode 100644
index 00000000..56163dda
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/small0-in-fast.16.toml
@@ -0,0 +1,116 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: small0-in-fast.16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "small0-in-fast.16"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0x80,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x90,0xd0,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0x424,0x424,0x424,0x424,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,
+  0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,
+  0xd1,0xd1,0xd1,0xd1,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,
+  0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,
+  0x404,0x404,0x404,0x404
+]
+data_16 = [
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,0xad,9,0xad
+]
+indexLength = 1092
+dataLength = 292
+highStart = 0x20000
+shifted12HighStart = 0x20
+type = 0
+valueWidth = 0
+index3NullOffset = 0x404
+dataNullOffset = 0xd1
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0x880,1,0x890,0,0x1040,2,0x1051,0,0x10000,3,0x20000,0,0x110000,9
+]
diff --git a/vendor/icu_collections/tests/data/cpt/small0-in-fast.32.toml b/vendor/icu_collections/tests/data/cpt/small0-in-fast.32.toml
new file mode 100644
index 00000000..9d4685ba
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/small0-in-fast.32.toml
@@ -0,0 +1,116 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: small0-in-fast.32
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "small0-in-fast.32"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0x80,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x90,0xd0,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0x424,0x424,0x424,0x424,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,
+  0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,
+  0xd1,0xd1,0xd1,0xd1,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,
+  0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,
+  0x404,0x404,0x404,0x404
+]
+data_32 = [
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,9,0xad
+]
+indexLength = 1092
+dataLength = 291
+highStart = 0x20000
+shifted12HighStart = 0x20
+type = 0
+valueWidth = 1
+index3NullOffset = 0x404
+dataNullOffset = 0xd1
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0x880,1,0x890,0,0x1040,2,0x1051,0,0x10000,3,0x20000,0,0x110000,9
+]
diff --git a/vendor/icu_collections/tests/data/cpt/small0-in-fast.8.toml b/vendor/icu_collections/tests/data/cpt/small0-in-fast.8.toml
new file mode 100644
index 00000000..8f420070
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/small0-in-fast.8.toml
@@ -0,0 +1,116 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: small0-in-fast.8
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "small0-in-fast.8"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0x80,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x90,0xd0,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,0xe1,
+  0x424,0x424,0x424,0x424,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,
+  0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,0xd1,
+  0xd1,0xd1,0xd1,0xd1,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,
+  0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,0x404,
+  0x404,0x404,0x404,0x404
+]
+data_8 = [
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,9,9,0xad
+]
+indexLength = 1092
+dataLength = 292
+highStart = 0x20000
+shifted12HighStart = 0x20
+type = 0
+valueWidth = 2
+index3NullOffset = 0x404
+dataNullOffset = 0xd1
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0x880,1,0x890,0,0x1040,2,0x1051,0,0x10000,3,0x20000,0,0x110000,9
+]
diff --git a/vendor/icu_collections/tests/data/cpt/small0-in-fast.small16.toml b/vendor/icu_collections/tests/data/cpt/small0-in-fast.small16.toml
new file mode 100644
index 00000000..dd203a39
--- /dev/null
+++ b/vendor/icu_collections/tests/data/cpt/small0-in-fast.small16.toml
@@ -0,0 +1,63 @@
+# Copyright (C) 2021 and later: Unicode, Inc. and others.
+# License & terms of use: http://www.unicode.org/copyright.html
+#
+# file name: small0-in-fast.small16
+#
+# machine-generated by: ucptrietest.c
+
+[code_point_trie.struct]
+name = "small0-in-fast.small16"
+index = [
+  0,0x40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0x80,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x90,
+  0xda,0xe3,0xe3,0xe3,0x103,0x103,0x103,0x103,0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,
+  0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,
+  0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,0,0x10,0x20,0x30,
+  0x80,0x90,0xa0,0xb0,0x90,0xa0,0xb0,0xc0,0x90,0xa0,0xb0,0xc0,0x90,0xa0,0xb0,0xc0,
+  0x90,0xa0,0xb0,0xc0,0x90,0xa0,0xb0,0xc0,0x90,0xa0,0xb0,0xc0,0x90,0xa0,0xb0,0xc0,
+  0x90,0xa0,0xb0,0xc0,0x90,0x90,0x90,0x90,0xd0,0xdf,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,
+  0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,
+  0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xe0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,
+  0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0xd0,0x48,0x50,0x50,0x50,0x68,0x74,
+  0x74,0x74,0x94,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,
+  0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,0x9a,
+  0x9a,0x9a,0x9a,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,
+  0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,0xba,
+  0xba,0xba,0xba
+]
+data_16 = [
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  0xad,9,0xad
+]
+indexLength = 291
+dataLength = 243
+highStart = 0x20000
+shifted12HighStart = 0x20
+type = 1
+valueWidth = 0
+index3NullOffset = 0xba
+dataNullOffset = 0xd0
+nullValue = 0x0
+
+[code_point_trie.testdata]
+# Array of (limit, value) pairs
+checkRanges = [
+  0x880,1,0x890,0,0x1040,2,0x1051,0,0x10000,3,0x20000,0,0x110000,9
+]
diff --git a/vendor/icu_locale_core/.cargo-checksum.json b/vendor/icu_locale_core/.cargo-checksum.json
new file mode 100644
index 00000000..57674e8f
--- /dev/null
+++ b/vendor/icu_locale_core/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"6c79a1f62ddca827e99ec20c7cc6b71fd900a205971f2b2482a6619cd01b5f1d","Cargo.toml":"ebb55df81d0405b2082b744cd000449625d424bd43a89fbbfcf99488bffbad9b","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"3e30d773b84c9682a0f03fbfae067edca276b16a2ed0f0ab99c31f6a53aa68b2","benches/fixtures/langid.json":"373c11527653c63c685c9e229a8de5ae2b557c25b686a9d891c59e1f603232d8","benches/fixtures/locale.json":"669b19db933094290a45bf856559920f4e92401072e364ac82c482119dc9233a","benches/fixtures/mod.rs":"d59ae0ebb4d42c5b9a89376bb20d400145eeb8edcd4e93dcd07adfd55f1db8c0","benches/fixtures/subtags.json":"28be3a639e452d713e807d5779b6819e06277e2dbbf67801ef34964fb9b074b6","benches/helpers/macros.rs":"b9bf068a08156f8421ea39ca2a5b83351f9f9b63336b207706b75d1acb7697ac","benches/helpers/mod.rs":"9118aceb41badd98a6d3e07f79bf6328f3da1f93ae82ef99e6ca7e7229aa4c42","benches/iai_langid.rs":"256aa84228af9fd730a90ffc81b2adafaec131b338d786142b770fa45fc221f1","benches/langid.rs":"0203769d2c5ae9d5269344216b93d43c6cb9f58bf4e3b182247afe00f5bb0287","benches/locale.rs":"172d82598b2924515de72c731837d702ce2ff75fdc3655069288c9015ff30c56","benches/subtags.rs":"6ff85047f04896749dff12ed00060afc882ac2ff27f86a57c3afdcbba13f797a","examples/filter_langids.rs":"870f4cebd92e4cae5310d7d34d9088f3f481334a7510d79fd4ee35bba94c9faf","examples/syntatically_canonicalize_locales.rs":"4cd88906a66a48a9fcd791ace0acd189a7dda3fd712408519d484cd19de9486f","src/data.rs":"bb36f7ed75cdabbfc54c7e108057d85583c712aaf1783b713ef71b5008493032","src/databake.rs":"b0cb3175eb2a919fe9d48d6c85635676a99d2474fc34b2b2ba503fd6d67fec3e","src/extensions/mod.rs":"b5982c55e099b4596371c2d7faed4086009c33d9fc6e10b475f5655bde6727fc","src/extensions/other/mod.rs":"5dc66dcde0263c1b9562f8ef90edcd616c49b118a40059458e314d45a672a337","src/extensions/private/mod.rs":"0a5271741722dbe0495713946c19d257e63dde3b4ab80d7c81c51c251557979d","src/extensions/private/other.rs":"050fba0eeb47b45c539ebda561cabe8f2d6b1cd6ab272bd8d25eb34b33466c96","src/extensions/transform/fields.rs":"88b968c260de0e7ee92efd044bb85392846db22acc19be3b9acfbad410ab1e5f","src/extensions/transform/key.rs":"7b44e1ccd95f3fcc0892a018effa054cd74d64a3667535eed2270d41baef1393","src/extensions/transform/mod.rs":"9072ebdb61afb5427d60855289a686dbf8debbee36feecdc034bdbac8593e97c","src/extensions/transform/value.rs":"5aa653c37cd7c2ae0aec9b37f102986095ec904bdac797c374cabad9059bd9a7","src/extensions/unicode/attribute.rs":"c2a6cfc920532c58023c40a9bd10632a73aedd4670a1562fa7caa15a500018e1","src/extensions/unicode/attributes.rs":"c644d7dcf310e4e24376351e45ec88db08c3d86f1c53d3d163ecc08cfcdda212","src/extensions/unicode/key.rs":"ad3c8844b6b55529d70a7d91889bf53703f92994b316d5c9052fe68b5350e530","src/extensions/unicode/keywords.rs":"73f563d887412ff4bc37947c1df9f361df6e34d1e82f2a4c906cf115844d7dd5","src/extensions/unicode/mod.rs":"a51ce421f1375d8c8108d09094951ccd44eb6488100c1ed57dbd2d2432f0da0f","src/extensions/unicode/subdivision.rs":"a1523c051f55833c94995d95920579a2c30cea98cba9e68cd1f90bc21ce2c9ea","src/extensions/unicode/value.rs":"ac158d119ef833a0b457405ffb792cc4eda7edf2e14906cfc1be737d5f69e444","src/helpers.rs":"20a7de315db2c0b48e343e81a9b45dc5548025facfe880ae81e00f59530259fc","src/langid.rs":"21bc904b0098c42817a271398afd2822b2cd5f87936f8cb676e5c91e05197bac","src/lib.rs":"8128cdc5057eed807e057d241f545b59e76b64e106938c4fc87aa558afcc72b6","src/locale.rs":"a6b2589260704507f6ab1daf40210e13e3b3a22c3ce31ee4d832000e02edb70e","src/macros.rs":"ed064e4a5bec77706d3022d73e24a6d410b2e7cd395447b6bcb5822c4714bd1c","src/parser/errors.rs":"9959d6e1f00f89ce739d18d489cf7733865cb95a26e4a33b9651eda2e310d89d","src/parser/langid.rs":"f60fb31f7dea4d6090a411da15773135283b6ea8564f4f51be702ce3d40bacf6","src/parser/locale.rs":"81068dfdcc1e765d759df7eb964c8441a3e6e17be881b059be49af2cf802b4d4","src/parser/mod.rs":"7202edc3c6cea056d9172c0a18c1fa84ad2b9a1409809974da93ae9ab80080ae","src/preferences/extensions/mod.rs":"8055be6df84eac91b2bb96603e022025ff80b8f6594b5a82c2b0fb95f0367043","src/preferences/extensions/unicode/errors.rs":"9f6e2edfaecd1b8679aa011c1d35250be8d0aac9ea5558b1e0fa58f5f9527ead","src/preferences/extensions/unicode/keywords/calendar.rs":"472defc4a3574b56496c8d2542ef98584cc1f2f33c3b0903131983158e19f768","src/preferences/extensions/unicode/keywords/collation.rs":"9c60a1156c8e20f4a0fdfa6a544f047ca0710fc116a9e8bdcbaa8d8fdc743f87","src/preferences/extensions/unicode/keywords/currency.rs":"92335724649b7ce1f840fe8f0b02f1896a7dab495d36fc45e7858bfa645420bd","src/preferences/extensions/unicode/keywords/currency_format.rs":"03c94e5dd3253c4cb1c8a4d5a2708be3d77cae9c334985649213440b8bac42c0","src/preferences/extensions/unicode/keywords/dictionary_break.rs":"a13ad0985a98dbf7cea96e2c50db1b6f9513d099a5b15f8bd55edc1e922699cc","src/preferences/extensions/unicode/keywords/emoji.rs":"0c79aa3b90cc228580204807d82809587e00204bc3d09783e4dfc2c302bec984","src/preferences/extensions/unicode/keywords/first_day.rs":"16471ad310624f059f1c280f3aa518f379d746feb892b6a8533631557d5ce690","src/preferences/extensions/unicode/keywords/hour_cycle.rs":"531e959c95a8289c56050e8b5e6ae899277c49b4c8a7f04f99cebf436db25fd6","src/preferences/extensions/unicode/keywords/line_break.rs":"5380f187ea22ea24576c15507a1b1275c947f374c9ec05ac4ba6576ba26122e2","src/preferences/extensions/unicode/keywords/line_break_word.rs":"7aae1d07ffaa6c2a44617b99c8bc1ba19df048cc3ec7aac10ccff89a6d84304b","src/preferences/extensions/unicode/keywords/measurement_system.rs":"b41bb9ce40c310e7370b11f211ca22cb07b08e8c7a8f0aab2dc99a766ff2b22e","src/preferences/extensions/unicode/keywords/measurement_unit_override.rs":"6670167cd9942cfc1c6c1b45d954ae3acc8c69f0609eefe1e33532fb02cdb8fd","src/preferences/extensions/unicode/keywords/mod.rs":"1ca967da8529fe3f7d1943da6e853d753ba2dd94ac5a86f496c80b3ff22b7df7","src/preferences/extensions/unicode/keywords/numbering_system.rs":"47105a6613fca0f9306f1db3f0ce9b5b29416218144af5596ed392ab552521f1","src/preferences/extensions/unicode/keywords/region_override.rs":"65590219d58dcf466f48f07f94d6fc0ce1433182e5acd8e926ad01f6a7d245be","src/preferences/extensions/unicode/keywords/regional_subdivision.rs":"0e54659cfc99c416fc108580c34c4710fbf32b9183422635b6c766d6a47e0d05","src/preferences/extensions/unicode/keywords/sentence_supression.rs":"31942a4bedc3e247bbd73740baf32e3b95bb4c91522dbc55f97c3374eee8669e","src/preferences/extensions/unicode/keywords/timezone.rs":"1d7f7ba02728919d57e793fe1d695e7d47bd5c173d72e518b7e35f0e724c77d9","src/preferences/extensions/unicode/keywords/variant.rs":"3d96c4da532d59965d81761fdf7aa78ec3bbd316bf72ec23e7d19d292850bc76","src/preferences/extensions/unicode/macros/enum_keyword.rs":"70c3185eacd51a1698c14ff98f68a49a788729893f6975b83cf6ccc8aae8d0e0","src/preferences/extensions/unicode/macros/mod.rs":"7a62888e12399959469a39c7f353e7b5d00988302f78b44df5e3b7fd22e442c7","src/preferences/extensions/unicode/macros/struct_keyword.rs":"dba324f98c3e108b7add972cbf2a9586486e560350d736a4e7034834177472d6","src/preferences/extensions/unicode/mod.rs":"9ce8a095b63724f124798a0f7e4b7dcc60bd0e7bfb2523d0f9e11883a81f904d","src/preferences/locale.rs":"67ae458b6c8cbaa9fbec2f602fe3b33f6a82f9b5a3968c0b45a80ee9aae4a812","src/preferences/mod.rs":"36940ac6a6476276fff513fef174bc45eda3487507e14adeab2bc1794f763376","src/serde.rs":"0a9c35d10714376621bf15e1f12d00bf05fc30f20c1e53be17d67bc64c03d63a","src/shortvec/litemap.rs":"e3970c8984ff951d613a951bc372a67ec4410bb49e209979181e8aedb2eaebee","src/shortvec/mod.rs":"be860b8574ca081a14e4dcf63344c259f0e31b2f11c4ddd75c7fb21c81b4e7c3","src/subtags/language.rs":"94757472cfb54f2f583c79ea6ad7c7662240868a2bc04e4b938998e32a8de394","src/subtags/mod.rs":"29e68217c2a47aa70db941467631eee7343bec96d823cf79eb70fcb8975abfd9","src/subtags/region.rs":"1157ea7f2defb86233ee86f4522e494d6dfe4776a2b5f853008c75cbbcc312f0","src/subtags/script.rs":"f562cc5607b5acec4ba5fc14dddf5d7eff1d19129535f3a309fd0fb31607b714","src/subtags/variant.rs":"6230b1bb252b0782c9cb015be8f583e8b2d8ab7ffff79789bb6df600e2b0eb5c","src/subtags/variants.rs":"c8caa29a442f527f657bee41fb2179c3eb01f30fde9bf80198bc54bc273732ed","src/zerovec.rs":"89442aa13615cfd3d92d9079249f8432e33b7739401dda3266b4c2a9d4a5ff7b","tests/fixtures/canonicalize.json":"5414bd4972eb80ba46c727b407a8ed48a6e12e3639db034033586813c872f59c","tests/fixtures/invalid-extensions.json":"36eb5966085a1c9e966689af504cfbf8ea9b78b741675fe033ec9b6153e63ea6","tests/fixtures/invalid.json":"109169258632bd23d06827dfae6509f02a8127ffec25f48281ed61d795c67765","tests/fixtures/langid.json":"960fd01722217ef1ea9077e2e0821d7089fe318a241bd7fb7918f50bf8f3f5c3","tests/fixtures/locale.json":"df1b195b18780758a6b1c0264206b9cd9ac8c4741c5d6b0cc2b92f8e17991c17","tests/fixtures/mod.rs":"12e5815ba46229304aa8234eb537faa568f10576815739beaa3f815134d7e7ac","tests/langid.rs":"d79f33c1f536bec7a0eb1c466842afd61e15098f5039ea6a8085cdf31128199c","tests/locale.rs":"a7ffc4e9d1ebc70e9d915994033b3853285764953c6f0416f07e30520852b17f"},"package":"0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"}
\ No newline at end of file
diff --git a/vendor/icu_locale_core/Cargo.lock b/vendor/icu_locale_core/Cargo.lock
new file mode 100644
index 00000000..98dbefd1
--- /dev/null
+++ b/vendor/icu_locale_core/Cargo.lock
@@ -0,0 +1,742 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anes"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+
+[[package]]
+name = "anstyle"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+
+[[package]]
+name = "autocfg"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+
+[[package]]
+name = "bumpalo"
+version = "3.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "ciborium"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
+dependencies = [
+ "ciborium-io",
+ "ciborium-ll",
+ "serde",
+]
+
+[[package]]
+name = "ciborium-io"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
+
+[[package]]
+name = "ciborium-ll"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
+dependencies = [
+ "ciborium-io",
+ "half",
+]
+
+[[package]]
+name = "clap"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c"
+dependencies = [
+ "clap_builder",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7"
+dependencies = [
+ "anstyle",
+ "clap_lex",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+
+[[package]]
+name = "cobs"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
+
+[[package]]
+name = "criterion"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
+dependencies = [
+ "anes",
+ "cast",
+ "ciborium",
+ "clap",
+ "criterion-plot",
+ "is-terminal",
+ "itertools",
+ "num-traits",
+ "once_cell",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
+dependencies = [
+ "cast",
+ "itertools",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+
+[[package]]
+name = "crunchy"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
+
+[[package]]
+name = "databake"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff6ee9e2d2afb173bcdeee45934c89ec341ab26f91c9933774fc15c2b58f83ef"
+dependencies = [
+ "databake-derive",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "databake-derive"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6834770958c7b84223607e49758ec0dde273c4df915e734aad50f62968a4c134"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "either"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+
+[[package]]
+name = "embedded-io"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
+
+[[package]]
+name = "embedded-io"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08"
+
+[[package]]
+name = "iai"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71a816c97c42258aa5834d07590b718b4c9a598944cd39a52dc25b351185d678"
+
+[[package]]
+name = "icu_locale_core"
+version = "2.0.0"
+dependencies = [
+ "criterion",
+ "databake",
+ "displaydoc",
+ "iai",
+ "litemap",
+ "postcard",
+ "potential_utf",
+ "serde",
+ "serde_json",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.172"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
+
+[[package]]
+name = "litemap"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
+
+[[package]]
+name = "log"
+version = "0.4.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "oorandom"
+version = "11.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
+
+[[package]]
+name = "plotters"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "postcard"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8"
+dependencies = [
+ "cobs",
+ "embedded-io 0.4.0",
+ "embedded-io 0.6.1",
+ "serde",
+]
+
+[[package]]
+name = "potential_utf"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+
+[[package]]
+name = "rustversion"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.140"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
+dependencies = [
+ "displaydoc",
+ "serde",
+ "zerovec",
+]
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "writeable"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+
+[[package]]
+name = "zerovec"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428"
+dependencies = [
+ "zerofrom",
+]
diff --git a/vendor/icu_locale_core/Cargo.toml b/vendor/icu_locale_core/Cargo.toml
new file mode 100644
index 00000000..8ffaef87
--- /dev/null
+++ b/vendor/icu_locale_core/Cargo.toml
@@ -0,0 +1,163 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "icu_locale_core"
+version = "2.0.0"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+    "build.rs",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "API for managing Unicode Language and Locale Identifiers"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.docs.rs]
+all-features = true
+
+[features]
+alloc = []
+databake = [
+    "dep:databake",
+    "alloc",
+]
+serde = [
+    "dep:serde",
+    "tinystr/serde",
+    "alloc",
+]
+zerovec = [
+    "dep:zerovec",
+    "tinystr/zerovec",
+]
+
+[lib]
+name = "icu_locale_core"
+path = "src/lib.rs"
+bench = false
+
+[[example]]
+name = "filter_langids"
+path = "examples/filter_langids.rs"
+test = true
+
+[[example]]
+name = "syntatically_canonicalize_locales"
+path = "examples/syntatically_canonicalize_locales.rs"
+test = true
+
+[[test]]
+name = "langid"
+path = "tests/langid.rs"
+
+[[test]]
+name = "locale"
+path = "tests/locale.rs"
+
+[[bench]]
+name = "iai_langid"
+path = "benches/iai_langid.rs"
+harness = false
+
+[[bench]]
+name = "langid"
+path = "benches/langid.rs"
+harness = false
+
+[[bench]]
+name = "locale"
+path = "benches/locale.rs"
+harness = false
+
+[[bench]]
+name = "subtags"
+path = "benches/subtags.rs"
+harness = false
+
+[dependencies.databake]
+version = "0.2.0"
+features = ["derive"]
+optional = true
+default-features = false
+
+[dependencies.displaydoc]
+version = "0.2.3"
+default-features = false
+
+[dependencies.litemap]
+version = "0.8.0"
+features = ["alloc"]
+default-features = false
+
+[dependencies.serde]
+version = "1.0.110"
+features = [
+    "alloc",
+    "derive",
+]
+optional = true
+default-features = false
+
+[dependencies.tinystr]
+version = "0.8.0"
+features = ["alloc"]
+default-features = false
+
+[dependencies.writeable]
+version = "0.6.0"
+default-features = false
+
+[dependencies.zerovec]
+version = "0.11.1"
+optional = true
+default-features = false
+
+[dev-dependencies.iai]
+version = "0.1.1"
+
+[dev-dependencies.postcard]
+version = "1.0.3"
+features = ["use-std"]
+default-features = false
+
+[dev-dependencies.potential_utf]
+version = "0.1.1"
+default-features = false
+
+[dev-dependencies.serde]
+version = "1.0.110"
+features = ["derive"]
+default-features = false
+
+[dev-dependencies.serde_json]
+version = "1.0.45"
+
+[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
+version = "0.5.0"
diff --git a/vendor/icu_locale_core/LICENSE b/vendor/icu_locale_core/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/icu_locale_core/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/icu_locale_core/README.md b/vendor/icu_locale_core/README.md
new file mode 100644
index 00000000..f4501344
--- /dev/null
+++ b/vendor/icu_locale_core/README.md
@@ -0,0 +1,55 @@
+# icu_locale_core [![crates.io](https://img.shields.io/crates/v/icu_locale_core)](https://crates.io/crates/icu_locale_core)
+
+<!-- cargo-rdme start -->
+
+Parsing, manipulating, and serializing Unicode Language and Locale Identifiers.
+
+This module is published as its own crate ([`icu_locale_core`](https://docs.rs/icu_locale_core/latest/icu_locale_core/))
+and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
+
+The module provides algorithms for parsing a string into a well-formed language or locale identifier
+as defined by [`UTS #35: Unicode LDML 3. Unicode Language and Locale Identifiers`]. Additionally
+the module provides [`preferences`] interface for operations on locale preferences and conversions
+from and to locale unicode extensions.
+
+[`Locale`] is the most common structure to use for storing information about a language,
+script, region, variants and extensions. In almost all cases, this struct should be used as the
+base unit for all locale management operations.
+
+[`LanguageIdentifier`] is a strict subset of [`Locale`] which can be useful in a narrow range of
+cases where [`Unicode Extensions`] are not relevant.
+
+If in doubt, use [`Locale`].
+
+## Examples
+
+```rust
+use icu::locale::Locale;
+use icu::locale::{
+    locale,
+    subtags::{language, region},
+};
+
+let mut loc: Locale = locale!("en-US");
+
+assert_eq!(loc.id.language, language!("en"));
+assert_eq!(loc.id.script, None);
+assert_eq!(loc.id.region, Some(region!("US")));
+assert_eq!(loc.id.variants.len(), 0);
+
+loc.id.region = Some(region!("GB"));
+
+assert_eq!(loc, locale!("en-GB"));
+```
+
+For more details, see [`Locale`] and [`LanguageIdentifier`].
+
+[`UTS #35: Unicode LDML 3. Unicode Language and Locale Identifiers`]: https://unicode.org/reports/tr35/tr35.html#Unicode_Language_and_Locale_Identifiers
+[`ICU4X`]: ../icu/index.html
+[`Unicode Extensions`]: extensions
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_locale_core/benches/fixtures/langid.json b/vendor/icu_locale_core/benches/fixtures/langid.json
new file mode 100644
index 00000000..43c56d5a
--- /dev/null
+++ b/vendor/icu_locale_core/benches/fixtures/langid.json
@@ -0,0 +1,48 @@
+{
+  "canonicalized": [
+    "en-US",
+    "en-GB",
+    "es-AR",
+    "it",
+    "zh-Hans-CN",
+    "de-AT",
+    "pl",
+    "fr-FR",
+    "de-AT",
+    "sr-Cyrl-SR",
+    "nb-NO",
+    "fr-FR",
+    "mk",
+    "uk",
+    "en-US",
+    "en-GB",
+    "es-AR",
+    "th",
+    "de",
+    "zh-Cyrl-HN",
+    "en-Latn-US"
+  ],
+  "casing": [
+    "En_uS",
+    "EN-GB",
+    "ES-aR",
+    "iT",
+    "zH_HaNs_cN",
+    "dE-aT",
+    "Pl",
+    "FR-FR",
+    "de_AT",
+    "sR-CyrL_sr",
+    "NB-NO",
+    "fr_fr",
+    "Mk",
+    "uK",
+    "en-us",
+    "en_gb",
+    "ES-AR",
+    "tH",
+    "DE",
+    "ZH_cyrl_hN",
+    "eN-lAtN-uS"
+  ]
+}
diff --git a/vendor/icu_locale_core/benches/fixtures/locale.json b/vendor/icu_locale_core/benches/fixtures/locale.json
new file mode 100644
index 00000000..f974a166
--- /dev/null
+++ b/vendor/icu_locale_core/benches/fixtures/locale.json
@@ -0,0 +1,26 @@
+{
+  "canonicalized": [
+    "en-US-u-hc-h12",
+    "en-GB-u-ca-gregory-hc-h12",
+    "es-AR-x-private",
+    "th-u-ca-buddhist",
+    "de-u-co-phonebk-ka-shifted",
+    "ar-u-nu-native",
+    "ar-u-nu-latn",
+    "ja-t-it",
+    "ja-Kana-t-it",
+    "und-Latn-t-und-cyrl"
+  ],
+  "casing": [
+    "en-US-U-hc-h12",
+    "en-GB-u-CA-gregory-hc-h12",
+    "es-AR-x-Private",
+    "th-u-ca-buDDhist",
+    "de-u-co-phonebk-KA-shifted",
+    "AR_U-NU-native",
+    "ar-u-nu-LaTN",
+    "jA-T-it",
+    "ja-kanA-T-IT",
+    "unD-Latn-T-und-cyrl"
+  ]
+}
diff --git a/vendor/icu_locale_core/benches/fixtures/mod.rs b/vendor/icu_locale_core/benches/fixtures/mod.rs
new file mode 100644
index 00000000..580cddfb
--- /dev/null
+++ b/vendor/icu_locale_core/benches/fixtures/mod.rs
@@ -0,0 +1,28 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use serde::Deserialize;
+
+#[derive(Deserialize)]
+#[allow(dead_code)]
+pub struct SubtagData {
+    pub valid: Vec<String>,
+    pub invalid: Vec<String>,
+}
+
+#[derive(Deserialize)]
+#[allow(dead_code)]
+pub struct Subtags {
+    pub language: SubtagData,
+    pub script: SubtagData,
+    pub region: SubtagData,
+    pub variant: SubtagData,
+}
+
+#[derive(Deserialize)]
+#[allow(dead_code)]
+pub struct LocaleList {
+    pub canonicalized: Vec<String>,
+    pub casing: Vec<String>,
+}
diff --git a/vendor/icu_locale_core/benches/fixtures/subtags.json b/vendor/icu_locale_core/benches/fixtures/subtags.json
new file mode 100644
index 00000000..cf8419cc
--- /dev/null
+++ b/vendor/icu_locale_core/benches/fixtures/subtags.json
@@ -0,0 +1,18 @@
+{
+  "language": {
+    "valid": ["en", "it", "pl", "de", "fr", "cs", "csb", "und", "ru", "nb", "NB", "UK", "pL", "Zh", "ES"],
+    "invalid": ["", "1", "$", "a1", "1211", "as_sa^a", "-0we", "3e3", "kk$$22", "testingaverylongstring"]
+  },
+  "script": {
+    "valid": ["Latn", "latn", "Arab", "xxxx", "Flan", "fAlA", "oOoO", "pPlQ", "esta", "RUSS"],
+    "invalid": ["", "1", "$", "a1", "1211", "assaa", "-0we", "3e3", "kk$$22", "testingaverylongstring"]
+  },
+  "region": {
+    "valid": ["DE", "321", "zh", "IA", "fN", "rU", "ru", "RU", "Ru", "CN", "AR"],
+    "invalid": ["", "1", "$", "a1", "1211", "assaa", "-0we", "3e3", "kk$$22", "testingaverylongstring"]
+  },
+  "variant": {
+    "valid": ["macos", "MaCoS", "windows", "posix", "POSIX", "Posix", "linux", "lINUX", "mAcOs", "testing", "WWWWWW"],
+    "invalid": ["", "1", "$", "a1", "a211", "ass__aa", "-0we", "3e3", "kk$$22", "testingaverylongstring"]
+  }
+}
diff --git a/vendor/icu_locale_core/benches/helpers/macros.rs b/vendor/icu_locale_core/benches/helpers/macros.rs
new file mode 100644
index 00000000..263a4008
--- /dev/null
+++ b/vendor/icu_locale_core/benches/helpers/macros.rs
@@ -0,0 +1,110 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[macro_export]
+macro_rules! overview {
+    ($c:expr, $struct:ident, $data_str:expr, $compare:expr) => {
+        $c.bench_function("overview", |b| {
+            b.iter(|| {
+                let mut values = vec![];
+                for s in $data_str {
+                    let value: Result<$struct, _> = black_box(s).parse();
+                    values.push(value.expect("Parsing failed"));
+                }
+                let _ = values
+                    .iter()
+                    .filter(|&v| v.normalizing_eq($compare))
+                    .count();
+
+                values
+                    .iter()
+                    .map(|v| v.to_string())
+                    .collect::<Vec<String>>()
+            })
+        });
+    };
+}
+
+#[macro_export]
+macro_rules! construct {
+    ($c:expr, $struct:ident, $struct_name:expr, $data_str:expr) => {
+        $c.bench_function($struct_name, |b| {
+            b.iter(|| {
+                for s in $data_str {
+                    let _: Result<$struct, _> = black_box(s).parse();
+                }
+            })
+        });
+    };
+}
+
+#[macro_export]
+macro_rules! to_string {
+    ($c:expr, $struct:ident, $struct_name:expr, $data:expr) => {
+        $c.bench_function($struct_name, |b| {
+            b.iter(|| {
+                for s in $data {
+                    let _ = black_box(s).to_string();
+                }
+            })
+        });
+        $c.bench_function(std::concat!($struct_name, "/writeable"), |b| {
+            use writeable::Writeable;
+            b.iter(|| {
+                for s in $data {
+                    let _ = black_box(s).write_to_string();
+                }
+            })
+        });
+    };
+}
+
+#[macro_export]
+macro_rules! compare_struct {
+    ($c:expr, $struct:ident, $struct_name:expr, $data1:expr, $data2:expr) => {
+        $c.bench_function(BenchmarkId::new("struct", $struct_name), |b| {
+            b.iter(|| {
+                for (lid1, lid2) in $data1.iter().zip($data2.iter()) {
+                    let _ = black_box(lid1) == black_box(lid2);
+                }
+            })
+        });
+    };
+}
+
+#[macro_export]
+macro_rules! compare_str {
+    ($c:expr, $struct:ident, $struct_name:expr, $data1:expr, $data2:expr) => {
+        $c.bench_function(BenchmarkId::new("str", $struct_name), |b| {
+            b.iter(|| {
+                for (lid, s) in $data1.iter().zip($data2.iter()) {
+                    let _ = black_box(lid).normalizing_eq(&black_box(s));
+                }
+            })
+        });
+        $c.bench_function(BenchmarkId::new("strict_cmp", $struct_name), |b| {
+            b.iter(|| {
+                for (lid, s) in $data1.iter().zip($data2.iter()) {
+                    let _ = black_box(lid).strict_cmp(&black_box(s).as_str().as_bytes());
+                }
+            })
+        });
+    };
+}
+
+#[macro_export]
+macro_rules! canonicalize {
+    ($c:expr, $struct:ident, $struct_name:expr, $data:expr) => {
+        $c.bench_function($struct_name, |b| {
+            b.iter(|| {
+                for s in $data {
+                    let _ = black_box(s).to_string();
+                }
+                for s in $data {
+                    let _ = $struct::normalize(black_box(s));
+                }
+            })
+        });
+    };
+}
diff --git a/vendor/icu_locale_core/benches/helpers/mod.rs b/vendor/icu_locale_core/benches/helpers/mod.rs
new file mode 100644
index 00000000..a3fb55ad
--- /dev/null
+++ b/vendor/icu_locale_core/benches/helpers/mod.rs
@@ -0,0 +1,5 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod macros;
diff --git a/vendor/icu_locale_core/benches/iai_langid.rs b/vendor/icu_locale_core/benches/iai_langid.rs
new file mode 100644
index 00000000..22f75acc
--- /dev/null
+++ b/vendor/icu_locale_core/benches/iai_langid.rs
@@ -0,0 +1,125 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use icu_locale_core::{langid, subtags::language, subtags::region, LanguageIdentifier};
+use std::borrow::Cow;
+use writeable::Writeable;
+
+const LIDS: &[LanguageIdentifier] = &[
+    langid!("en"),
+    langid!("pl"),
+    langid!("fr-CA"),
+    langid!("zh-Hans"),
+    langid!("en-US"),
+    langid!("en-Latn-US"),
+    langid!("sr-Cyrl-BA"),
+];
+
+const LIDS_STR: &[&str] = &[
+    "en",
+    "pl",
+    "fr-CA",
+    "zh-Hans",
+    "en-US",
+    "en-Latn-US",
+    "sr-Cyrl-BA",
+];
+
+fn bench_langid_constr() {
+    // Tests the instructions required to construct a LID from an str.
+
+    let _: Vec<LanguageIdentifier> = LIDS_STR
+        .iter()
+        .map(|l| l.parse().expect("Failed to parse"))
+        .collect();
+}
+
+fn bench_langid_compare_components() {
+    // Tests the cost of comparing LID components.
+
+    let result = LIDS
+        .iter()
+        .filter(|l| l.language == language!("en") && l.region == Some(region!("US")))
+        .count();
+
+    assert_eq!(result, 2);
+}
+
+fn bench_langid_compare_components_str() {
+    // Tests the cost of comparing LID components to str.
+
+    let result = LIDS
+        .iter()
+        .filter(|l| {
+            l.language == language!("en") && l.region.map(|r| r == region!("US")).unwrap_or(false)
+        })
+        .count();
+
+    assert_eq!(result, 2);
+}
+
+fn bench_langid_strict_cmp() {
+    // Tests the cost of comparing a langid against byte strings.
+    use core::cmp::Ordering;
+
+    let lid = langid!("en-us");
+
+    let result = LIDS_STR
+        .iter()
+        .filter(|s| lid.strict_cmp(s.as_bytes()) == Ordering::Equal)
+        .count();
+
+    assert_eq!(result, 1);
+}
+
+fn bench_langid_matching() {
+    // Tests matching a LID against other LIDs.
+
+    let lid = langid!("en-us");
+
+    let count = LIDS.iter().filter(|l| lid == **l).count();
+    assert_eq!(count, 1);
+}
+
+fn bench_langid_matching_str() {
+    // Tests matching a LID against list of str.
+
+    let lid = langid!("en-us");
+
+    let count = LIDS_STR.iter().filter(|&l| lid.normalizing_eq(l)).count();
+    assert_eq!(count, 1);
+}
+
+fn bench_langid_serialize() {
+    // Tests serialization of LIDs.
+
+    let _: Vec<String> = LIDS.iter().map(|l| l.to_string()).collect();
+}
+
+fn bench_langid_serialize_writeable() {
+    // Tests serialization of LIDs.
+
+    let _: Vec<_> = LIDS.iter().map(|l| l.write_to_string()).collect();
+}
+
+fn bench_langid_canonicalize() {
+    // Tests canonicalization of strings.
+
+    let _: Vec<Cow<str>> = LIDS_STR
+        .iter()
+        .map(|l| LanguageIdentifier::normalize(l).expect("Normalization failed"))
+        .collect();
+}
+
+iai::main!(
+    bench_langid_constr,
+    bench_langid_compare_components,
+    bench_langid_compare_components_str,
+    bench_langid_strict_cmp,
+    bench_langid_matching,
+    bench_langid_matching_str,
+    bench_langid_serialize,
+    bench_langid_serialize_writeable,
+    bench_langid_canonicalize,
+);
diff --git a/vendor/icu_locale_core/benches/langid.rs b/vendor/icu_locale_core/benches/langid.rs
new file mode 100644
index 00000000..dff5085e
--- /dev/null
+++ b/vendor/icu_locale_core/benches/langid.rs
@@ -0,0 +1,92 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod fixtures;
+mod helpers;
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+use icu_locale_core::LanguageIdentifier;
+
+fn langid_benches(c: &mut Criterion) {
+    let data = serde_json::from_str::<fixtures::LocaleList>(include_str!("fixtures/langid.json"))
+        .expect("Failed to read a fixture");
+
+    // Overview
+    {
+        let mut group = c.benchmark_group("langid");
+
+        overview!(group, LanguageIdentifier, &data.canonicalized, "en-US");
+
+        group.finish();
+    }
+
+    {
+        use criterion::BenchmarkId;
+
+        // Construct
+        {
+            let mut group = c.benchmark_group("langid/construct");
+
+            construct!(group, LanguageIdentifier, "langid", &data.canonicalized);
+
+            group.finish();
+        }
+
+        // Stringify
+        {
+            let mut group = c.benchmark_group("langid/to_string");
+
+            let langids: Vec<LanguageIdentifier> = data
+                .canonicalized
+                .iter()
+                .map(|s| s.parse().unwrap())
+                .collect();
+
+            to_string!(group, LanguageIdentifier, "langid", &langids);
+
+            group.finish();
+        }
+
+        // Compare
+        {
+            let mut group = c.benchmark_group("langid/compare");
+
+            let langids: Vec<LanguageIdentifier> = data
+                .canonicalized
+                .iter()
+                .map(|s| s.parse().unwrap())
+                .collect();
+            let langids2: Vec<LanguageIdentifier> = data
+                .canonicalized
+                .iter()
+                .map(|s| s.parse().unwrap())
+                .collect();
+
+            compare_struct!(group, LanguageIdentifier, "langid", &langids, &langids2);
+
+            compare_str!(
+                group,
+                LanguageIdentifier,
+                "langid",
+                &langids,
+                &data.canonicalized
+            );
+
+            group.finish();
+        }
+
+        // Canonicalize
+        {
+            let mut group = c.benchmark_group("langid/canonicalize");
+
+            canonicalize!(group, LanguageIdentifier, "langid", &data.casing);
+
+            group.finish();
+        }
+    }
+}
+
+criterion_group!(benches, langid_benches,);
+criterion_main!(benches);
diff --git a/vendor/icu_locale_core/benches/locale.rs b/vendor/icu_locale_core/benches/locale.rs
new file mode 100644
index 00000000..49a7a4da
--- /dev/null
+++ b/vendor/icu_locale_core/benches/locale.rs
@@ -0,0 +1,86 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod fixtures;
+mod helpers;
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+use icu_locale_core::Locale;
+
+fn locale_benches(c: &mut Criterion) {
+    let data = serde_json::from_str::<fixtures::LocaleList>(include_str!("fixtures/locale.json"))
+        .expect("Failed to read a fixture");
+
+    // Overview
+    {
+        let mut group = c.benchmark_group("locale");
+
+        overview!(group, Locale, &data.canonicalized, "en-US");
+
+        group.finish();
+    }
+
+    {
+        use criterion::BenchmarkId;
+
+        // Construct
+        {
+            let mut group = c.benchmark_group("locale/construct");
+
+            construct!(group, Locale, "locale", &data.canonicalized);
+
+            group.finish();
+        }
+
+        // Stringify
+        {
+            let mut group = c.benchmark_group("locale/to_string");
+
+            let locales: Vec<Locale> = data
+                .canonicalized
+                .iter()
+                .map(|s| s.parse().unwrap())
+                .collect();
+
+            to_string!(group, Locale, "locale", &locales);
+
+            group.finish();
+        }
+
+        // Compare
+        {
+            let mut group = c.benchmark_group("locale/compare");
+
+            let locales: Vec<Locale> = data
+                .canonicalized
+                .iter()
+                .map(|s| s.parse().unwrap())
+                .collect();
+            let locales2: Vec<Locale> = data
+                .canonicalized
+                .iter()
+                .map(|s| s.parse().unwrap())
+                .collect();
+
+            compare_struct!(group, Locale, "locale", &locales, &locales2);
+
+            compare_str!(group, Locale, "locale", &locales, &data.canonicalized);
+
+            group.finish();
+        }
+
+        // Canonicalize
+        {
+            let mut group = c.benchmark_group("locale/canonicalize");
+
+            canonicalize!(group, Locale, "locale", &data.casing);
+
+            group.finish();
+        }
+    }
+}
+
+criterion_group!(benches, locale_benches,);
+criterion_main!(benches);
diff --git a/vendor/icu_locale_core/benches/subtags.rs b/vendor/icu_locale_core/benches/subtags.rs
new file mode 100644
index 00000000..ef2b3bb2
--- /dev/null
+++ b/vendor/icu_locale_core/benches/subtags.rs
@@ -0,0 +1,39 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod fixtures;
+mod helpers;
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+use icu_locale_core::subtags::{Language, Region, Script, Variant};
+use icu_locale_core::ParseError;
+
+macro_rules! subtag_bench {
+    ($c:expr, $name:expr, $subtag:ident, $data:expr) => {
+        $c.bench_function(&format!("subtags/{}/parse", $name), |b| {
+            b.iter(|| {
+                for s in &$data.valid {
+                    let _: $subtag = black_box(s).parse().unwrap();
+                }
+                for s in &$data.invalid {
+                    let _: ParseError = black_box(s).parse::<$subtag>().unwrap_err();
+                }
+            })
+        });
+    };
+}
+
+fn subtags_bench(c: &mut Criterion) {
+    let data = serde_json::from_str::<fixtures::Subtags>(include_str!("fixtures/subtags.json"))
+        .expect("Failed to read a fixture");
+
+    subtag_bench!(c, "language", Language, data.language);
+    subtag_bench!(c, "script", Script, data.script);
+    subtag_bench!(c, "region", Region, data.region);
+    subtag_bench!(c, "variant", Variant, data.variant);
+}
+
+criterion_group!(benches, subtags_bench,);
+criterion_main!(benches);
diff --git a/vendor/icu_locale_core/examples/filter_langids.rs b/vendor/icu_locale_core/examples/filter_langids.rs
new file mode 100644
index 00000000..f990903f
--- /dev/null
+++ b/vendor/icu_locale_core/examples/filter_langids.rs
@@ -0,0 +1,42 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// A sample application which takes a comma separated list of language identifiers,
+// filters out identifiers with language subtags different than `en` and serializes
+// the list back into a comma separated list in canonical syntax.
+//
+// Note: This is an example of the API use, and is not a good base for language matching.
+// For language matching, please consider algorithms such as Locale Matcher.
+
+#![no_main] // https://github.com/unicode-org/icu4x/issues/395
+icu_benchmark_macros::instrument!();
+use icu_benchmark_macros::println;
+
+use std::env;
+
+use icu_locale_core::{subtags, LanguageIdentifier};
+
+const DEFAULT_INPUT: &str =
+    "de, en-us, zh-hant, sr-cyrl, fr-ca, es-cl, pl, en-latn-us, ca-valencia, und-arab";
+
+fn main() {
+    for input in env::args()
+        .nth(1)
+        .as_deref()
+        .unwrap_or(DEFAULT_INPUT)
+        .split(',')
+        .map(str::trim)
+    {
+        // 1. Parse the input string into a language identifier.
+        let Ok(langid) = LanguageIdentifier::try_from_str(input) else {
+            continue;
+        };
+        // 2. Filter for LanguageIdentifiers with Language subtag `en`.
+        if langid.language == subtags::language!("en") {
+            println!("✅ {}", langid)
+        } else {
+            println!("❌ {}", langid)
+        }
+    }
+}
diff --git a/vendor/icu_locale_core/examples/syntatically_canonicalize_locales.rs b/vendor/icu_locale_core/examples/syntatically_canonicalize_locales.rs
new file mode 100644
index 00000000..2efbfe3b
--- /dev/null
+++ b/vendor/icu_locale_core/examples/syntatically_canonicalize_locales.rs
@@ -0,0 +1,29 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// A sample application which takes a comma separated list of locales,
+// makes them syntactically canonical and serializes the list back into a comma separated list.
+
+#![no_main] // https://github.com/unicode-org/icu4x/issues/395
+icu_benchmark_macros::instrument!();
+use icu_benchmark_macros::println;
+
+use std::env;
+
+use icu_locale_core::Locale;
+
+const DEFAULT_INPUT: &str = "sr-cyrL-rS, es-mx, und-arab-u-ca-Buddhist";
+
+fn main() {
+    for input in env::args()
+        .nth(1)
+        .as_deref()
+        .unwrap_or(DEFAULT_INPUT)
+        .split(',')
+        .map(str::trim)
+    {
+        let output = Locale::normalize(input).unwrap();
+        println!("{input} -> {output}");
+    }
+}
diff --git a/vendor/icu_locale_core/src/data.rs b/vendor/icu_locale_core/src/data.rs
new file mode 100644
index 00000000..5bf0e971
--- /dev/null
+++ b/vendor/icu_locale_core/src/data.rs
@@ -0,0 +1,440 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::extensions::unicode as unicode_ext;
+use crate::subtags::{Language, Region, Script, Subtag, Variant};
+#[cfg(feature = "alloc")]
+use crate::ParseError;
+use crate::{LanguageIdentifier, Locale};
+use core::cmp::Ordering;
+use core::default::Default;
+use core::fmt;
+use core::hash::Hash;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+/// A locale type optimized for use in fallbacking and the ICU4X data pipeline.
+///
+/// [`DataLocale`] contains less functionality than [`Locale`] but more than
+/// [`LanguageIdentifier`] for better size and performance while still meeting
+/// the needs of the ICU4X data pipeline.
+///
+/// You can create a [`DataLocale`] from a borrowed [`Locale`], which is more
+/// efficient than cloning the [`Locale`], but less efficient than converting an owned
+/// [`Locale`]:
+///
+/// ```
+/// use icu_locale_core::locale;
+/// use icu_provider::DataLocale;
+///
+/// let locale1 = locale!("en-u-ca-buddhist");
+/// let data_locale = DataLocale::from(&locale1);
+/// ```
+///
+/// [`DataLocale`] only supports `-u-sd` keywords, to reflect the current state of CLDR data
+/// lookup and fallback. This may change in the future.
+///
+/// ```
+/// use icu_locale_core::{locale, Locale};
+/// use icu_provider::DataLocale;
+///
+/// let locale = "hi-IN-t-en-h0-hybrid-u-attr-ca-buddhist-sd-inas"
+///     .parse::<Locale>()
+///     .unwrap();
+///
+/// assert_eq!(
+///     DataLocale::from(locale),
+///     DataLocale::from(locale!("hi-IN-u-sd-inas"))
+/// );
+/// ```
+#[derive(Clone, Copy, PartialEq, Hash, Eq)]
+#[non_exhaustive]
+pub struct DataLocale {
+    /// Language subtag
+    pub language: Language,
+    /// Script subtag
+    pub script: Option<Script>,
+    /// Region subtag
+    pub region: Option<Region>,
+    /// Variant subtag
+    pub variant: Option<Variant>,
+    /// Subivision (-u-sd-) subtag
+    pub subdivision: Option<Subtag>,
+}
+
+impl Default for DataLocale {
+    fn default() -> Self {
+        Self {
+            language: Language::UNKNOWN,
+            script: None,
+            region: None,
+            variant: None,
+            subdivision: None,
+        }
+    }
+}
+
+impl DataLocale {
+    /// `const` version of `Default::default`
+    pub const fn default() -> Self {
+        DataLocale {
+            language: Language::UNKNOWN,
+            script: None,
+            region: None,
+            variant: None,
+            subdivision: None,
+        }
+    }
+}
+
+impl Default for &DataLocale {
+    fn default() -> Self {
+        static DEFAULT: DataLocale = DataLocale::default();
+        &DEFAULT
+    }
+}
+
+impl fmt::Debug for DataLocale {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "DataLocale{{{self}}}")
+    }
+}
+
+impl_writeable_for_each_subtag_str_no_test!(DataLocale, selff, selff.script.is_none() && selff.region.is_none() && selff.variant.is_none() && selff.subdivision.is_none() => selff.language.write_to_string());
+
+impl From<LanguageIdentifier> for DataLocale {
+    fn from(langid: LanguageIdentifier) -> Self {
+        Self::from(&langid)
+    }
+}
+
+impl From<Locale> for DataLocale {
+    fn from(locale: Locale) -> Self {
+        Self::from(&locale)
+    }
+}
+
+impl From<&LanguageIdentifier> for DataLocale {
+    fn from(langid: &LanguageIdentifier) -> Self {
+        Self {
+            language: langid.language,
+            script: langid.script,
+            region: langid.region,
+            variant: langid.variants.iter().copied().next(),
+            subdivision: None,
+        }
+    }
+}
+
+impl From<&Locale> for DataLocale {
+    fn from(locale: &Locale) -> Self {
+        let mut r = Self::from(&locale.id);
+
+        r.subdivision = locale
+            .extensions
+            .unicode
+            .keywords
+            .get(&unicode_ext::key!("sd"))
+            .and_then(|v| v.as_single_subtag().copied());
+        r
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for DataLocale {
+    type Err = ParseError;
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+impl DataLocale {
+    #[inline]
+    /// Parses a [`DataLocale`].
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// Parses a [`DataLocale`] from a UTF-8 byte slice.
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let locale = Locale::try_from_utf8(code_units)?;
+        if locale.id.variants.len() > 1
+            || !locale.extensions.transform.is_empty()
+            || !locale.extensions.private.is_empty()
+            || !locale.extensions.other.is_empty()
+            || !locale.extensions.unicode.attributes.is_empty()
+        {
+            return Err(ParseError::InvalidExtension);
+        }
+
+        let unicode_extensions_count = locale.extensions.unicode.keywords.iter().count();
+
+        if unicode_extensions_count != 0
+            && (unicode_extensions_count != 1
+                || !locale
+                    .extensions
+                    .unicode
+                    .keywords
+                    .contains_key(&unicode_ext::key!("sd")))
+        {
+            return Err(ParseError::InvalidExtension);
+        }
+
+        Ok(locale.into())
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        f(self.language.as_str())?;
+        if let Some(ref script) = self.script {
+            f(script.as_str())?;
+        }
+        if let Some(ref region) = self.region {
+            f(region.as_str())?;
+        }
+        if let Some(ref single_variant) = self.variant {
+            f(single_variant.as_str())?;
+        }
+        if let Some(ref subdivision) = self.subdivision {
+            f("u")?;
+            f("sd")?;
+            f(subdivision.as_str())?;
+        }
+        Ok(())
+    }
+
+    fn as_tuple(
+        &self,
+    ) -> (
+        Language,
+        Option<Script>,
+        Option<Region>,
+        Option<Variant>,
+        Option<Subtag>,
+    ) {
+        (
+            self.language,
+            self.script,
+            self.region,
+            self.variant,
+            self.subdivision,
+        )
+    }
+
+    /// Returns an ordering suitable for use in [`BTreeSet`].
+    ///
+    /// [`BTreeSet`]: alloc::collections::BTreeSet
+    pub fn total_cmp(&self, other: &Self) -> Ordering {
+        self.as_tuple().cmp(&other.as_tuple())
+    }
+
+    /// Compare this [`DataLocale`] with BCP-47 bytes.
+    ///
+    /// The return value is equivalent to what would happen if you first converted this
+    /// [`DataLocale`] to a BCP-47 string and then performed a byte comparison.
+    ///
+    /// This function is case-sensitive and results in a *total order*, so it is appropriate for
+    /// binary search. The only argument producing [`Ordering::Equal`] is `self.to_string()`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use core::cmp::Ordering;
+    /// use icu_provider::DataLocale;
+    ///
+    /// let bcp47_strings: &[&str] = &[
+    ///     "ca",
+    ///     "ca-ES",
+    ///     "ca-ES-u-sd-esct",
+    ///     "ca-ES-valencia",
+    ///     "cat",
+    ///     "pl-Latn-PL",
+    ///     "und",
+    ///     "und-fonipa",
+    ///     "zh",
+    /// ];
+    ///
+    /// for ab in bcp47_strings.windows(2) {
+    ///     let a = ab[0];
+    ///     let b = ab[1];
+    ///     assert_eq!(a.cmp(b), Ordering::Less, "strings: {} < {}", a, b);
+    ///     let a_loc: DataLocale = a.parse().unwrap();
+    ///     assert_eq!(
+    ///         a_loc.strict_cmp(a.as_bytes()),
+    ///         Ordering::Equal,
+    ///         "strict_cmp: {} == {}",
+    ///         a_loc,
+    ///         a
+    ///     );
+    ///     assert_eq!(
+    ///         a_loc.strict_cmp(b.as_bytes()),
+    ///         Ordering::Less,
+    ///         "strict_cmp: {} < {}",
+    ///         a_loc,
+    ///         b
+    ///     );
+    ///     let b_loc: DataLocale = b.parse().unwrap();
+    ///     assert_eq!(
+    ///         b_loc.strict_cmp(b.as_bytes()),
+    ///         Ordering::Equal,
+    ///         "strict_cmp: {} == {}",
+    ///         b_loc,
+    ///         b
+    ///     );
+    ///     assert_eq!(
+    ///         b_loc.strict_cmp(a.as_bytes()),
+    ///         Ordering::Greater,
+    ///         "strict_cmp: {} > {}",
+    ///         b_loc,
+    ///         a
+    ///     );
+    /// }
+    /// ```
+    ///
+    /// Comparison against invalid strings:
+    ///
+    /// ```
+    /// use icu_provider::DataLocale;
+    ///
+    /// let invalid_strings: &[&str] = &[
+    ///     // Less than "ca-ES"
+    ///     "CA",
+    ///     "ar-x-gbp-FOO",
+    ///     // Greater than "ca-AR"
+    ///     "ca_ES",
+    ///     "ca-ES-x-gbp-FOO",
+    /// ];
+    ///
+    /// let data_locale = "ca-ES".parse::<DataLocale>().unwrap();
+    ///
+    /// for s in invalid_strings.iter() {
+    ///     let expected_ordering = "ca-AR".cmp(s);
+    ///     let actual_ordering = data_locale.strict_cmp(s.as_bytes());
+    ///     assert_eq!(expected_ordering, actual_ordering, "{}", s);
+    /// }
+    /// ```
+    pub fn strict_cmp(&self, other: &[u8]) -> Ordering {
+        writeable::cmp_utf8(self, other)
+    }
+
+    /// Returns whether this [`DataLocale`] is `und` in the locale and extensions portion.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu_provider::DataLocale;
+    ///
+    /// assert!("und".parse::<DataLocale>().unwrap().is_unknown());
+    /// assert!(!"de-u-sd-denw".parse::<DataLocale>().unwrap().is_unknown());
+    /// assert!(!"und-ES".parse::<DataLocale>().unwrap().is_unknown());
+    /// ```
+    pub fn is_unknown(&self) -> bool {
+        self.language.is_unknown()
+            && self.script.is_none()
+            && self.region.is_none()
+            && self.variant.is_none()
+            && self.subdivision.is_none()
+    }
+
+    /// Converts this `DataLocale` into a [`Locale`].
+    pub fn into_locale(self) -> Locale {
+        Locale {
+            id: LanguageIdentifier {
+                language: self.language,
+                script: self.script,
+                region: self.region,
+                variants: self
+                    .variant
+                    .map(crate::subtags::Variants::from_variant)
+                    .unwrap_or_default(),
+            },
+            extensions: {
+                let mut extensions = crate::extensions::Extensions::default();
+                if let Some(sd) = self.subdivision {
+                    extensions.unicode = unicode_ext::Unicode {
+                        keywords: unicode_ext::Keywords::new_single(
+                            unicode_ext::key!("sd"),
+                            unicode_ext::Value::from_subtag(Some(sd)),
+                        ),
+                        ..Default::default()
+                    }
+                }
+                extensions
+            },
+        }
+    }
+}
+
+#[test]
+fn test_data_locale_to_string() {
+    struct TestCase {
+        pub locale: &'static str,
+        pub expected: &'static str,
+    }
+
+    for cas in [
+        TestCase {
+            locale: "und",
+            expected: "und",
+        },
+        TestCase {
+            locale: "und-u-sd-sdd",
+            expected: "und-u-sd-sdd",
+        },
+        TestCase {
+            locale: "en-ZA-u-sd-zaa",
+            expected: "en-ZA-u-sd-zaa",
+        },
+    ] {
+        let locale = cas.locale.parse::<DataLocale>().unwrap();
+        writeable::assert_writeable_eq!(locale, cas.expected);
+    }
+}
+
+#[test]
+fn test_data_locale_from_string() {
+    #[derive(Debug)]
+    struct TestCase {
+        pub input: &'static str,
+        pub success: bool,
+    }
+
+    for cas in [
+        TestCase {
+            input: "und",
+            success: true,
+        },
+        TestCase {
+            input: "und-u-cu-gbp",
+            success: false,
+        },
+        TestCase {
+            input: "en-ZA-u-sd-zaa",
+            success: true,
+        },
+        TestCase {
+            input: "en...",
+            success: false,
+        },
+    ] {
+        let data_locale = match (DataLocale::from_str(cas.input), cas.success) {
+            (Ok(l), true) => l,
+            (Err(_), false) => {
+                continue;
+            }
+            (Ok(_), false) => {
+                panic!("DataLocale parsed but it was supposed to fail: {cas:?}");
+            }
+            (Err(_), true) => {
+                panic!("DataLocale was supposed to parse but it failed: {cas:?}");
+            }
+        };
+        writeable::assert_writeable_eq!(data_locale, cas.input);
+    }
+}
diff --git a/vendor/icu_locale_core/src/databake.rs b/vendor/icu_locale_core/src/databake.rs
new file mode 100644
index 00000000..802e546e
--- /dev/null
+++ b/vendor/icu_locale_core/src/databake.rs
@@ -0,0 +1,22 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::LanguageIdentifier;
+use databake::*;
+
+impl Bake for LanguageIdentifier {
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("icu_locale_core");
+        let repr = self.to_string();
+        if self.variants.len() <= 1 {
+            quote! {
+                icu_locale_core::langid!(#repr)
+            }
+        } else {
+            quote! {
+                icu_locale_core::LanguageIdentifier::try_from_str(#repr).unwrap()
+            }
+        }
+    }
+}
diff --git a/vendor/icu_locale_core/src/extensions/mod.rs b/vendor/icu_locale_core/src/extensions/mod.rs
new file mode 100644
index 00000000..1893ad73
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/mod.rs
@@ -0,0 +1,397 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Unicode Extensions provide a mechanism to extend the [`LanguageIdentifier`] with
+//! additional bits of information - a combination of a [`LanguageIdentifier`] and [`Extensions`]
+//! is called [`Locale`].
+//!
+//! There are four types of extensions:
+//!
+//!  * [`Unicode Extensions`] - marked as `u`.
+//!  * [`Transform Extensions`] - marked as `t`.
+//!  * [`Private Use Extensions`] - marked as `x`.
+//!  * [`Other Extensions`] - marked as any `a-z` except of `u`, `t` and `x`.
+//!
+//! One can think of extensions as a bag of extra information on top of basic 4 [`subtags`].
+//!
+//! Notice: `Other` extension type is currently not supported.
+//!
+//! # Examples
+//!
+//! ```
+//! use icu::locale::extensions::unicode::{Key, Value};
+//! use icu::locale::Locale;
+//!
+//! let loc: Locale = "en-US-u-ca-buddhist-t-en-us-h0-hybrid-x-foo"
+//!     .parse()
+//!     .expect("Failed to parse.");
+//!
+//! assert_eq!(loc.id.language, "en".parse().unwrap());
+//! assert_eq!(loc.id.script, None);
+//! assert_eq!(loc.id.region, Some("US".parse().unwrap()));
+//! assert_eq!(loc.id.variants.len(), 0);
+//!
+//! let key: Key = "ca".parse().expect("Parsing key failed.");
+//! let value: Value = "buddhist".parse().expect("Parsing value failed.");
+//! assert_eq!(loc.extensions.unicode.keywords.get(&key), Some(&value));
+//! ```
+//!
+//! # Syntactic vs Semantic Extension Handling
+//!
+//! This module is useful when you need to work with Locale extensions at a syntactic level,
+//! perhaps for parsing or generating locale identifiers that include any syntactically valid
+//! extensions.
+//! For handling and validating known CLDR values with semantic meaning, see the
+//! [`crate::preferences::extensions`] module.
+//!
+//! [`LanguageIdentifier`]: super::LanguageIdentifier
+//! [`Locale`]: super::Locale
+//! [`subtags`]: super::subtags
+//! [`Other Extensions`]: other
+//! [`Private Use Extensions`]: private
+//! [`Transform Extensions`]: transform
+//! [`Unicode Extensions`]: unicode
+pub mod other;
+pub mod private;
+pub mod transform;
+pub mod unicode;
+
+use core::cmp::Ordering;
+
+use other::Other;
+use private::{Private, PRIVATE_EXT_CHAR};
+use transform::{Transform, TRANSFORM_EXT_CHAR};
+use unicode::{Unicode, UNICODE_EXT_CHAR};
+
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+
+use crate::parser::ParseError;
+#[cfg(feature = "alloc")]
+use crate::parser::SubtagIterator;
+use crate::subtags;
+
+/// Defines the type of extension.
+#[derive(Debug, PartialEq, Eq, Clone, Hash, PartialOrd, Ord, Copy)]
+#[non_exhaustive]
+pub enum ExtensionType {
+    /// Transform Extension Type marked as `t`.
+    Transform,
+    /// Unicode Extension Type marked as `u`.
+    Unicode,
+    /// Private Extension Type marked as `x`.
+    Private,
+    /// All other extension types.
+    Other(u8),
+}
+
+impl ExtensionType {
+    #[allow(dead_code)]
+    pub(crate) const fn try_from_byte_slice(key: &[u8]) -> Result<Self, ParseError> {
+        if let [b] = key {
+            Self::try_from_byte(*b)
+        } else {
+            Err(ParseError::InvalidExtension)
+        }
+    }
+
+    pub(crate) const fn try_from_byte(key: u8) -> Result<Self, ParseError> {
+        let key = key.to_ascii_lowercase();
+        match key as char {
+            UNICODE_EXT_CHAR => Ok(Self::Unicode),
+            TRANSFORM_EXT_CHAR => Ok(Self::Transform),
+            PRIVATE_EXT_CHAR => Ok(Self::Private),
+            'a'..='z' => Ok(Self::Other(key)),
+            _ => Err(ParseError::InvalidExtension),
+        }
+    }
+
+    pub(crate) const fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let &[first] = code_units else {
+            return Err(ParseError::InvalidExtension);
+        };
+
+        Self::try_from_byte(first)
+    }
+}
+
+/// A map of extensions associated with a given [`Locale`](crate::Locale).
+#[derive(Debug, Default, PartialEq, Eq, Clone, Hash)]
+#[non_exhaustive]
+pub struct Extensions {
+    /// A representation of the data for a Unicode extension, when present in the locale identifier.
+    pub unicode: Unicode,
+    /// A representation of the data for a transform extension, when present in the locale identifier.
+    pub transform: Transform,
+    /// A representation of the data for a private-use extension, when present in the locale identifier.
+    pub private: Private,
+    /// A sequence of any other extensions that are present in the locale identifier but are not formally
+    /// [defined](https://unicode.org/reports/tr35/) and represented explicitly as [`Unicode`], [`Transform`],
+    /// and [`Private`] are.
+    #[cfg(feature = "alloc")]
+    pub other: Vec<Other>,
+    /// A sequence of any other extensions that are present in the locale identifier but are not formally
+    /// [defined](https://unicode.org/reports/tr35/) and represented explicitly as [`Unicode`], [`Transform`],
+    /// and [`Private`] are.
+    #[cfg(not(feature = "alloc"))]
+    pub other: &'static [Other],
+}
+
+impl Extensions {
+    /// Returns a new empty map of extensions. Same as [`default()`](Default::default()), but is `const`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::Extensions;
+    ///
+    /// assert_eq!(Extensions::new(), Extensions::default());
+    /// ```
+    #[inline]
+    pub const fn new() -> Self {
+        Self {
+            unicode: Unicode::new(),
+            transform: Transform::new(),
+            private: Private::new(),
+            #[cfg(feature = "alloc")]
+            other: Vec::new(),
+            #[cfg(not(feature = "alloc"))]
+            other: &[],
+        }
+    }
+
+    /// Function to create a new map of extensions containing exactly one unicode extension, callable in `const`
+    /// context.
+    #[inline]
+    pub const fn from_unicode(unicode: Unicode) -> Self {
+        Self {
+            unicode,
+            transform: Transform::new(),
+            private: Private::new(),
+            #[cfg(feature = "alloc")]
+            other: Vec::new(),
+            #[cfg(not(feature = "alloc"))]
+            other: &[],
+        }
+    }
+
+    /// Returns whether there are no extensions present.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// let loc: Locale = "en-US-u-foo".parse().expect("Parsing failed.");
+    ///
+    /// assert!(!loc.extensions.is_empty());
+    /// ```
+    pub fn is_empty(&self) -> bool {
+        self.unicode.is_empty()
+            && self.transform.is_empty()
+            && self.private.is_empty()
+            && self.other.is_empty()
+    }
+
+    #[allow(clippy::type_complexity)]
+    pub(crate) fn as_tuple(
+        &self,
+    ) -> (
+        (&unicode::Attributes, &unicode::Keywords),
+        (
+            Option<(
+                subtags::Language,
+                Option<subtags::Script>,
+                Option<subtags::Region>,
+                &subtags::Variants,
+            )>,
+            &transform::Fields,
+        ),
+        &private::Private,
+        &[other::Other],
+    ) {
+        (
+            self.unicode.as_tuple(),
+            self.transform.as_tuple(),
+            &self.private,
+            &self.other,
+        )
+    }
+
+    /// Returns an ordering suitable for use in [`BTreeSet`].
+    ///
+    /// The ordering may or may not be equivalent to string ordering, and it
+    /// may or may not be stable across ICU4X releases.
+    ///
+    /// [`BTreeSet`]: alloc::collections::BTreeSet
+    pub fn total_cmp(&self, other: &Self) -> Ordering {
+        self.as_tuple().cmp(&other.as_tuple())
+    }
+
+    /// Retains the specified extension types, clearing all others.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::ExtensionType;
+    /// use icu::locale::Locale;
+    ///
+    /// let loc: Locale =
+    ///     "und-a-hello-t-mul-u-world-z-zzz-x-extra".parse().unwrap();
+    ///
+    /// let mut only_unicode = loc.clone();
+    /// only_unicode
+    ///     .extensions
+    ///     .retain_by_type(|t| t == ExtensionType::Unicode);
+    /// assert_eq!(only_unicode, "und-u-world".parse().unwrap());
+    ///
+    /// let mut only_t_z = loc.clone();
+    /// only_t_z.extensions.retain_by_type(|t| {
+    ///     t == ExtensionType::Transform || t == ExtensionType::Other(b'z')
+    /// });
+    /// assert_eq!(only_t_z, "und-t-mul-z-zzz".parse().unwrap());
+    /// ```
+    pub fn retain_by_type<F>(&mut self, mut predicate: F)
+    where
+        F: FnMut(ExtensionType) -> bool,
+    {
+        if !predicate(ExtensionType::Unicode) {
+            self.unicode.clear();
+        }
+        if !predicate(ExtensionType::Transform) {
+            self.transform.clear();
+        }
+        if !predicate(ExtensionType::Private) {
+            self.private.clear();
+        }
+        #[cfg(feature = "alloc")]
+        self.other
+            .retain(|o| predicate(ExtensionType::Other(o.get_ext_byte())));
+    }
+
+    #[cfg(feature = "alloc")]
+    pub(crate) fn try_from_iter(iter: &mut SubtagIterator) -> Result<Self, ParseError> {
+        let mut unicode = None;
+        let mut transform = None;
+        let mut private = None;
+        let mut other = Vec::new();
+
+        while let Some(subtag) = iter.next() {
+            if subtag.is_empty() {
+                return Err(ParseError::InvalidExtension);
+            }
+
+            let &[subtag] = subtag else {
+                return Err(ParseError::InvalidExtension);
+            };
+
+            match ExtensionType::try_from_byte(subtag) {
+                Ok(ExtensionType::Unicode) => {
+                    if unicode.is_some() {
+                        return Err(ParseError::DuplicatedExtension);
+                    }
+                    unicode = Some(Unicode::try_from_iter(iter)?);
+                }
+                Ok(ExtensionType::Transform) => {
+                    if transform.is_some() {
+                        return Err(ParseError::DuplicatedExtension);
+                    }
+                    transform = Some(Transform::try_from_iter(iter)?);
+                }
+                Ok(ExtensionType::Private) => {
+                    if private.is_some() {
+                        return Err(ParseError::DuplicatedExtension);
+                    }
+                    private = Some(Private::try_from_iter(iter)?);
+                }
+                Ok(ExtensionType::Other(ext)) => {
+                    if other.iter().any(|o: &Other| o.get_ext_byte() == ext) {
+                        return Err(ParseError::DuplicatedExtension);
+                    }
+                    let parsed = Other::try_from_iter(ext, iter)?;
+                    if let Err(idx) = other.binary_search(&parsed) {
+                        other.insert(idx, parsed);
+                    } else {
+                        return Err(ParseError::InvalidExtension);
+                    }
+                }
+                _ => return Err(ParseError::InvalidExtension),
+            }
+        }
+
+        Ok(Self {
+            unicode: unicode.unwrap_or_default(),
+            transform: transform.unwrap_or_default(),
+            private: private.unwrap_or_default(),
+            other,
+        })
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        let mut wrote_tu = false;
+        // Alphabetic by singleton
+        self.other.iter().try_for_each(|other| {
+            if other.get_ext() > TRANSFORM_EXT_CHAR && !wrote_tu {
+                // Since 't' and 'u' are next to each other in alphabetical
+                // order, write both now.
+                self.transform.for_each_subtag_str(f, true)?;
+                self.unicode.for_each_subtag_str(f, true)?;
+                wrote_tu = true;
+            }
+            other.for_each_subtag_str(f, true)?;
+            Ok(())
+        })?;
+
+        if !wrote_tu {
+            self.transform.for_each_subtag_str(f, true)?;
+            self.unicode.for_each_subtag_str(f, true)?;
+        }
+
+        // Private must be written last, since it allows single character
+        // keys. Extensions must also be written in alphabetical order,
+        // which would seem to imply that other extensions `y` and `z` are
+        // invalid, but this is not specified.
+        self.private.for_each_subtag_str(f, true)?;
+        Ok(())
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl_writeable_for_each_subtag_str_no_test!(Extensions);
+
+#[test]
+fn test_writeable() {
+    use crate::Locale;
+    use writeable::assert_writeable_eq;
+    assert_writeable_eq!(Extensions::new(), "");
+    assert_writeable_eq!(
+        "my-t-my-d0-zawgyi".parse::<Locale>().unwrap().extensions,
+        "t-my-d0-zawgyi",
+    );
+    assert_writeable_eq!(
+        "ar-SA-u-ca-islamic-civil"
+            .parse::<Locale>()
+            .unwrap()
+            .extensions,
+        "u-ca-islamic-civil",
+    );
+    assert_writeable_eq!(
+        "en-001-x-foo-bar".parse::<Locale>().unwrap().extensions,
+        "x-foo-bar",
+    );
+    assert_writeable_eq!(
+        "und-t-m0-true".parse::<Locale>().unwrap().extensions,
+        "t-m0-true",
+    );
+    assert_writeable_eq!(
+        "und-a-foo-t-foo-u-foo-w-foo-z-foo-x-foo"
+            .parse::<Locale>()
+            .unwrap()
+            .extensions,
+        "a-foo-t-foo-u-foo-w-foo-z-foo-x-foo",
+    );
+}
diff --git a/vendor/icu_locale_core/src/extensions/other/mod.rs b/vendor/icu_locale_core/src/extensions/other/mod.rs
new file mode 100644
index 00000000..050b379c
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/other/mod.rs
@@ -0,0 +1,264 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Other Use Extensions is a list of extensions other than unicode,
+//! transform or private.
+//!
+//! Those extensions are treated as a pass-through, and no Unicode related
+//! behavior depends on them.
+//!
+//! The main struct for this extension is [`Other`] which is a list of [`Subtag`]s.
+//!
+//! # Examples
+//!
+//! ```
+//! use icu::locale::extensions::other::Other;
+//! use icu::locale::Locale;
+//!
+//! let mut loc: Locale = "en-US-a-foo-faa".parse().expect("Parsing failed.");
+//! ```
+
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+#[cfg(feature = "alloc")]
+use super::ExtensionType;
+#[cfg(feature = "alloc")]
+use crate::parser::ParseError;
+#[cfg(feature = "alloc")]
+use crate::parser::SubtagIterator;
+use crate::shortvec::ShortBoxSlice;
+use crate::subtags::Subtag;
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+
+/// A list of [`Other Use Extensions`] as defined in [`Unicode Locale
+/// Identifier`] specification.
+///
+/// Those extensions are treated as a pass-through, and no Unicode related
+/// behavior depends on them.
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::extensions::other::Other;
+/// use icu::locale::subtags::Subtag;
+///
+/// let subtag1: Subtag = "foo".parse().expect("Failed to parse a Subtag.");
+/// let subtag2: Subtag = "bar".parse().expect("Failed to parse a Subtag.");
+///
+/// let other = Other::from_vec_unchecked(b'a', vec![subtag1, subtag2]);
+/// assert_eq!(&other.to_string(), "a-foo-bar");
+/// ```
+///
+/// [`Other Use Extensions`]: https://unicode.org/reports/tr35/#other_extensions
+/// [`Unicode Locale Identifier`]: https://unicode.org/reports/tr35/#Unicode_locale_identifier
+#[derive(Clone, PartialEq, Eq, Debug, Default, Hash, PartialOrd, Ord)]
+pub struct Other {
+    // Safety invariant: must be ASCII
+    ext: u8,
+    keys: ShortBoxSlice<Subtag>,
+}
+
+impl Other {
+    /// A constructor which takes a str slice, parses it and
+    /// produces a well-formed [`Other`].
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let mut iter = SubtagIterator::new(code_units);
+
+        let ext = iter.next().ok_or(ParseError::InvalidExtension)?;
+        if let ExtensionType::Other(b) = ExtensionType::try_from_byte_slice(ext)? {
+            return Self::try_from_iter(b, &mut iter);
+        }
+
+        Err(ParseError::InvalidExtension)
+    }
+
+    /// A constructor which takes a pre-sorted list of [`Subtag`].
+    ///
+    /// # Panics
+    ///
+    /// Panics if `ext` is not ASCII alphabetic.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::other::Other;
+    /// use icu::locale::subtags::Subtag;
+    ///
+    /// let subtag1: Subtag = "foo".parse().expect("Failed to parse a Subtag.");
+    /// let subtag2: Subtag = "bar".parse().expect("Failed to parse a Subtag.");
+    ///
+    /// let other = Other::from_vec_unchecked(b'a', vec![subtag1, subtag2]);
+    /// assert_eq!(&other.to_string(), "a-foo-bar");
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn from_vec_unchecked(ext: u8, keys: Vec<Subtag>) -> Self {
+        Self::from_short_slice_unchecked(ext, keys.into())
+    }
+
+    #[allow(dead_code)]
+    pub(crate) fn from_short_slice_unchecked(ext: u8, keys: ShortBoxSlice<Subtag>) -> Self {
+        assert!(ext.is_ascii_alphabetic());
+        // Safety invariant upheld here: ext checked as ASCII above
+        Self { ext, keys }
+    }
+
+    #[cfg(feature = "alloc")]
+    pub(crate) fn try_from_iter(ext: u8, iter: &mut SubtagIterator) -> Result<Self, ParseError> {
+        debug_assert!(matches!(
+            ExtensionType::try_from_byte(ext),
+            Ok(ExtensionType::Other(_)),
+        ));
+
+        let mut keys = ShortBoxSlice::new();
+        while let Some(subtag) = iter.peek() {
+            if !Subtag::valid_key(subtag) {
+                break;
+            }
+            if let Ok(key) = Subtag::try_from_utf8(subtag) {
+                keys.push(key);
+            }
+            iter.next();
+        }
+
+        if keys.is_empty() {
+            Err(ParseError::InvalidExtension)
+        } else {
+            Ok(Self::from_short_slice_unchecked(ext, keys))
+        }
+    }
+
+    /// Gets the tag character for this extension as a &str.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// let loc: Locale = "und-a-hello-world".parse().unwrap();
+    /// let other_ext = &loc.extensions.other[0];
+    /// assert_eq!(other_ext.get_ext_str(), "a");
+    /// ```
+    pub fn get_ext_str(&self) -> &str {
+        debug_assert!(self.ext.is_ascii_alphabetic());
+        // Safety: from safety invariant on self.ext (that it is ASCII)
+        unsafe { core::str::from_utf8_unchecked(core::slice::from_ref(&self.ext)) }
+    }
+
+    /// Gets the tag character for this extension as a char.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// let loc: Locale = "und-a-hello-world".parse().unwrap();
+    /// let other_ext = &loc.extensions.other[0];
+    /// assert_eq!(other_ext.get_ext(), 'a');
+    /// ```
+    pub fn get_ext(&self) -> char {
+        self.ext as char
+    }
+
+    /// Gets the tag character for this extension as a byte.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// let loc: Locale = "und-a-hello-world".parse().unwrap();
+    /// let other_ext = &loc.extensions.other[0];
+    /// assert_eq!(other_ext.get_ext_byte(), b'a');
+    /// ```
+    pub fn get_ext_byte(&self) -> u8 {
+        self.ext
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F, with_ext: bool) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        if self.keys.is_empty() {
+            return Ok(());
+        }
+
+        if with_ext {
+            f(self.get_ext_str())?;
+        }
+        self.keys.iter().map(|t| t.as_str()).try_for_each(f)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for Other {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+writeable::impl_display_with_writeable!(Other);
+
+impl writeable::Writeable for Other {
+    fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
+        if self.keys.is_empty() {
+            return Ok(());
+        }
+        sink.write_str(self.get_ext_str())?;
+        for key in self.keys.iter() {
+            sink.write_char('-')?;
+            writeable::Writeable::write_to(key, sink)?;
+        }
+
+        Ok(())
+    }
+
+    fn writeable_length_hint(&self) -> writeable::LengthHint {
+        if self.keys.is_empty() {
+            return writeable::LengthHint::exact(0);
+        };
+        let mut result = writeable::LengthHint::exact(1);
+        for key in self.keys.iter() {
+            result += writeable::Writeable::writeable_length_hint(key) + 1;
+        }
+        result
+    }
+
+    #[cfg(feature = "alloc")]
+    fn write_to_string(&self) -> alloc::borrow::Cow<str> {
+        if self.keys.is_empty() {
+            return alloc::borrow::Cow::Borrowed("");
+        }
+        let mut string =
+            alloc::string::String::with_capacity(self.writeable_length_hint().capacity());
+        let _ = self.write_to(&mut string);
+        alloc::borrow::Cow::Owned(string)
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_other_extension_fromstr() {
+        let oe: Other = "o-foo-bar".parse().expect("Failed to parse Other");
+        assert_eq!(oe.to_string(), "o-foo-bar");
+
+        let oe: Result<Other, _> = "o".parse();
+        assert!(oe.is_err());
+    }
+}
diff --git a/vendor/icu_locale_core/src/extensions/private/mod.rs b/vendor/icu_locale_core/src/extensions/private/mod.rs
new file mode 100644
index 00000000..ee985292
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/private/mod.rs
@@ -0,0 +1,250 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Private Use Extensions is a list of extensions intended for
+//! private use.
+//!
+//! Those extensions are treated as a pass-through, and no Unicode related
+//! behavior depends on them.
+//!
+//! The main struct for this extension is [`Private`] which is a list of [`Subtag`]s.
+//!
+//! # Examples
+//!
+//! ```
+//! use icu::locale::extensions::private::subtag;
+//! use icu::locale::{locale, Locale};
+//!
+//! let mut loc: Locale = "en-US-x-foo-faa".parse().expect("Parsing failed.");
+//!
+//! assert!(loc.extensions.private.contains(&subtag!("foo")));
+//! assert_eq!(loc.extensions.private.iter().next(), Some(&subtag!("foo")));
+//!
+//! loc.extensions.private.clear();
+//!
+//! assert!(loc.extensions.private.is_empty());
+//! assert_eq!(loc, locale!("en-US"));
+//! ```
+
+mod other;
+
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+use core::ops::Deref;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+#[doc(inline)]
+pub use other::{subtag, Subtag};
+
+#[cfg(feature = "alloc")]
+use super::ExtensionType;
+#[cfg(feature = "alloc")]
+use crate::parser::ParseError;
+#[cfg(feature = "alloc")]
+use crate::parser::SubtagIterator;
+use crate::shortvec::ShortBoxSlice;
+
+pub(crate) const PRIVATE_EXT_CHAR: char = 'x';
+pub(crate) const PRIVATE_EXT_STR: &str = "x";
+
+/// A list of [`Private Use Extensions`] as defined in [`Unicode Locale
+/// Identifier`] specification.
+///
+/// Those extensions are treated as a pass-through, and no Unicode related
+/// behavior depends on them.
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::extensions::private::{Private, Subtag};
+///
+/// let subtag1: Subtag = "foo".parse().expect("Failed to parse a Subtag.");
+/// let subtag2: Subtag = "bar".parse().expect("Failed to parse a Subtag.");
+///
+/// let private = Private::from_vec_unchecked(vec![subtag1, subtag2]);
+/// assert_eq!(&private.to_string(), "x-foo-bar");
+/// ```
+///
+/// [`Private Use Extensions`]: https://unicode.org/reports/tr35/#pu_extensions
+/// [`Unicode Locale Identifier`]: https://unicode.org/reports/tr35/#Unicode_locale_identifier
+#[derive(Clone, PartialEq, Eq, Debug, Default, Hash, PartialOrd, Ord)]
+pub struct Private(ShortBoxSlice<Subtag>);
+
+impl Private {
+    /// Returns a new empty list of private-use extensions. Same as [`default()`](Default::default()), but is `const`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::private::Private;
+    ///
+    /// assert_eq!(Private::new(), Private::default());
+    /// ```
+    #[inline]
+    pub const fn new() -> Self {
+        Self(ShortBoxSlice::new())
+    }
+
+    /// A constructor which takes a str slice, parses it and
+    /// produces a well-formed [`Private`].
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let mut iter = SubtagIterator::new(code_units);
+
+        let ext = iter.next().ok_or(ParseError::InvalidExtension)?;
+        if let ExtensionType::Private = ExtensionType::try_from_byte_slice(ext)? {
+            return Self::try_from_iter(&mut iter);
+        }
+
+        Err(ParseError::InvalidExtension)
+    }
+
+    /// A constructor which takes a pre-sorted list of [`Subtag`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::private::{Private, Subtag};
+    ///
+    /// let subtag1: Subtag = "foo".parse().expect("Failed to parse a Subtag.");
+    /// let subtag2: Subtag = "bar".parse().expect("Failed to parse a Subtag.");
+    ///
+    /// let private = Private::from_vec_unchecked(vec![subtag1, subtag2]);
+    /// assert_eq!(&private.to_string(), "x-foo-bar");
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn from_vec_unchecked(input: Vec<Subtag>) -> Self {
+        Self(input.into())
+    }
+
+    /// A constructor which takes a single [`Subtag`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::private::{Private, Subtag};
+    ///
+    /// let subtag: Subtag = "foo".parse().expect("Failed to parse a Subtag.");
+    ///
+    /// let private = Private::new_single(subtag);
+    /// assert_eq!(&private.to_string(), "x-foo");
+    /// ```
+    pub const fn new_single(input: Subtag) -> Self {
+        Self(ShortBoxSlice::new_single(input))
+    }
+
+    /// Empties the [`Private`] list.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::private::{Private, Subtag};
+    ///
+    /// let subtag1: Subtag = "foo".parse().expect("Failed to parse a Subtag.");
+    /// let subtag2: Subtag = "bar".parse().expect("Failed to parse a Subtag.");
+    /// let mut private = Private::from_vec_unchecked(vec![subtag1, subtag2]);
+    ///
+    /// assert_eq!(&private.to_string(), "x-foo-bar");
+    ///
+    /// private.clear();
+    ///
+    /// assert_eq!(private, Private::new());
+    /// ```
+    pub fn clear(&mut self) {
+        self.0.clear();
+    }
+
+    #[cfg(feature = "alloc")]
+    pub(crate) fn try_from_iter(iter: &mut SubtagIterator) -> Result<Self, ParseError> {
+        let keys = iter
+            .map(Subtag::try_from_utf8)
+            .collect::<Result<ShortBoxSlice<_>, _>>()?;
+
+        if keys.is_empty() {
+            Err(ParseError::InvalidExtension)
+        } else {
+            Ok(Self(keys))
+        }
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F, with_ext: bool) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        if self.is_empty() {
+            return Ok(());
+        }
+        if with_ext {
+            f(PRIVATE_EXT_STR)?;
+        }
+        self.deref().iter().map(|t| t.as_str()).try_for_each(f)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for Private {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+writeable::impl_display_with_writeable!(Private);
+
+impl writeable::Writeable for Private {
+    fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
+        if self.is_empty() {
+            return Ok(());
+        }
+        sink.write_char(PRIVATE_EXT_CHAR)?;
+        for key in self.iter() {
+            sink.write_char('-')?;
+            writeable::Writeable::write_to(key, sink)?;
+        }
+        Ok(())
+    }
+
+    fn writeable_length_hint(&self) -> writeable::LengthHint {
+        if self.is_empty() {
+            return writeable::LengthHint::exact(0);
+        }
+        let mut result = writeable::LengthHint::exact(1);
+        for key in self.iter() {
+            result += writeable::Writeable::writeable_length_hint(key) + 1;
+        }
+        result
+    }
+}
+
+impl Deref for Private {
+    type Target = [Subtag];
+
+    fn deref(&self) -> &Self::Target {
+        self.0.deref()
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_private_extension_fromstr() {
+        let pe: Private = "x-foo-bar-l-baz".parse().expect("Failed to parse Private");
+        assert_eq!(pe.to_string(), "x-foo-bar-l-baz");
+
+        let pe: Result<Private, _> = "x".parse();
+        assert!(pe.is_err());
+    }
+}
diff --git a/vendor/icu_locale_core/src/extensions/private/other.rs b/vendor/icu_locale_core/src/extensions/private/other.rs
new file mode 100644
index 00000000..b3d8e074
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/private/other.rs
@@ -0,0 +1,47 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+impl_tinystr_subtag!(
+    /// A single item used in a list of [`Private`](super::Private) extensions.
+    ///
+    /// The subtag has to be an ASCII alphanumerical string no shorter than
+    /// one character and no longer than eight.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::private::Subtag;
+    ///
+    /// let subtag1: Subtag = "Foo".parse()
+    ///     .expect("Failed to parse a Subtag.");
+    ///
+    /// assert_eq!(subtag1.as_str(), "foo");
+    /// ```
+    ///
+    /// Notice: This is different from the generic [`Subtag`](crate::subtags::Subtag)
+    /// which is between two and eight characters.
+    ///
+    /// ```
+    /// use icu::locale::extensions::private;
+    /// use icu::locale::subtags;
+    ///
+    /// let subtag: Result<private::Subtag, _> = "f".parse();
+    /// assert!(subtag.is_ok());
+    ///
+    /// let subtag: Result<subtags::Subtag, _> = "f".parse();
+    /// assert!(subtag.is_err());
+    /// ```
+    Subtag,
+    extensions::private,
+    subtag,
+    extensions_private_subtag,
+    1..=8,
+    s,
+    s.is_ascii_alphanumeric(),
+    s.to_ascii_lowercase(),
+    s.is_ascii_alphanumeric() && s.is_ascii_lowercase(),
+    InvalidExtension,
+    ["foo12"],
+    ["toolooong"],
+);
diff --git a/vendor/icu_locale_core/src/extensions/transform/fields.rs b/vendor/icu_locale_core/src/extensions/transform/fields.rs
new file mode 100644
index 00000000..d5d9cf72
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/transform/fields.rs
@@ -0,0 +1,220 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::borrow::Borrow;
+use core::iter::FromIterator;
+use litemap::LiteMap;
+
+use super::Key;
+use super::Value;
+
+/// A list of [`Key`]-[`Value`] pairs representing functional information
+/// about content transformations.
+///
+/// Here are examples of fields used in Unicode:
+/// - `s0`, `d0` - Transform source/destination
+/// - `t0` - Machine Translation
+/// - `h0` - Hybrid Locale Identifiers
+///
+/// You can find the full list in [`Unicode BCP 47 T Extension`] section of LDML.
+///
+/// [`Unicode BCP 47 T Extension`]: https://unicode.org/reports/tr35/tr35.html#BCP47_T_Extension
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::extensions::transform::{key, Fields, Value};
+///
+/// let value = "hybrid".parse::<Value>().expect("Failed to parse a Value.");
+/// let fields = [(key!("h0"), value)].into_iter().collect::<Fields>();
+///
+/// assert_eq!(&fields.to_string(), "h0-hybrid");
+/// ```
+#[derive(Clone, PartialEq, Eq, Debug, Default, Hash, PartialOrd, Ord)]
+pub struct Fields(LiteMap<Key, Value>);
+
+impl Fields {
+    /// Returns a new empty list of key-value pairs. Same as [`default()`](Default::default()), but is `const`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::transform::Fields;
+    ///
+    /// assert_eq!(Fields::new(), Fields::default());
+    /// ```
+    #[inline]
+    pub const fn new() -> Self {
+        Self(LiteMap::new())
+    }
+
+    /// Returns `true` if there are no fields.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::locale;
+    /// use icu::locale::Locale;
+    ///
+    /// let loc1 = Locale::try_from_str("und-t-h0-hybrid").unwrap();
+    /// let loc2 = locale!("und-u-ca-buddhist");
+    ///
+    /// assert!(!loc1.extensions.transform.fields.is_empty());
+    /// assert!(loc2.extensions.transform.fields.is_empty());
+    /// ```
+    pub fn is_empty(&self) -> bool {
+        self.0.is_empty()
+    }
+
+    /// Empties the [`Fields`] list.
+    ///
+    /// Returns the old list.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::transform::{key, Fields, Value};
+    ///
+    /// let value = "hybrid".parse::<Value>().expect("Failed to parse a Value.");
+    /// let mut fields = [(key!("h0"), value)].into_iter().collect::<Fields>();
+    ///
+    /// assert_eq!(&fields.to_string(), "h0-hybrid");
+    ///
+    /// fields.clear();
+    ///
+    /// assert_eq!(fields, Fields::new());
+    /// ```
+    pub fn clear(&mut self) -> Self {
+        core::mem::take(self)
+    }
+
+    /// Returns `true` if the list contains a [`Value`] for the specified [`Key`].
+    ///
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::transform::{Fields, Key, Value};
+    ///
+    /// let key: Key = "h0".parse().expect("Failed to parse a Key.");
+    /// let value: Value = "hybrid".parse().expect("Failed to parse a Value.");
+    /// let mut fields = [(key, value)].into_iter().collect::<Fields>();
+    ///
+    /// let key: Key = "h0".parse().expect("Failed to parse a Key.");
+    /// assert!(&fields.contains_key(&key));
+    /// ```
+    pub fn contains_key<Q>(&self, key: &Q) -> bool
+    where
+        Key: Borrow<Q>,
+        Q: Ord,
+    {
+        self.0.contains_key(key)
+    }
+
+    /// Returns a reference to the [`Value`] corresponding to the [`Key`].
+    ///
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::transform::{key, Fields, Value};
+    ///
+    /// let value = "hybrid".parse::<Value>().unwrap();
+    /// let fields = [(key!("h0"), value.clone())]
+    ///     .into_iter()
+    ///     .collect::<Fields>();
+    ///
+    /// assert_eq!(fields.get(&key!("h0")), Some(&value));
+    /// ```
+    pub fn get<Q>(&self, key: &Q) -> Option<&Value>
+    where
+        Key: Borrow<Q>,
+        Q: Ord,
+    {
+        self.0.get(key)
+    }
+
+    /// Sets the specified keyword, returning the old value if it already existed.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::transform::{key, Value};
+    /// use icu::locale::Locale;
+    ///
+    /// let lower = "lower".parse::<Value>().expect("valid extension subtag");
+    /// let casefold = "casefold".parse::<Value>().expect("valid extension subtag");
+    ///
+    /// let mut loc: Locale = "en-t-hi-d0-casefold"
+    ///     .parse()
+    ///     .expect("valid BCP-47 identifier");
+    /// let old_value = loc.extensions.transform.fields.set(key!("d0"), lower);
+    ///
+    /// assert_eq!(old_value, Some(casefold));
+    /// assert_eq!(loc, "en-t-hi-d0-lower".parse().unwrap());
+    /// ```
+    pub fn set(&mut self, key: Key, value: Value) -> Option<Value> {
+        self.0.insert(key, value)
+    }
+
+    /// Retains a subset of fields as specified by the predicate function.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::transform::key;
+    /// use icu::locale::Locale;
+    ///
+    /// let mut loc: Locale = "und-t-h0-hybrid-d0-hex-m0-xml".parse().unwrap();
+    ///
+    /// loc.extensions
+    ///     .transform
+    ///     .fields
+    ///     .retain_by_key(|&k| k == key!("h0"));
+    /// assert_eq!(loc, "und-t-h0-hybrid".parse().unwrap());
+    ///
+    /// loc.extensions
+    ///     .transform
+    ///     .fields
+    ///     .retain_by_key(|&k| k == key!("d0"));
+    /// assert_eq!(loc, Locale::UNKNOWN);
+    /// ```
+    pub fn retain_by_key<F>(&mut self, mut predicate: F)
+    where
+        F: FnMut(&Key) -> bool,
+    {
+        self.0.retain(|k, _| predicate(k))
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        for (k, v) in self.0.iter() {
+            f(k.as_str())?;
+            v.for_each_subtag_str(f)?;
+        }
+        Ok(())
+    }
+
+    /// This needs to be its own method to help with type inference in helpers.rs
+    #[cfg(test)]
+    pub(crate) fn from_tuple_vec(v: Vec<(Key, Value)>) -> Self {
+        v.into_iter().collect()
+    }
+}
+
+impl From<LiteMap<Key, Value>> for Fields {
+    fn from(map: LiteMap<Key, Value>) -> Self {
+        Self(map)
+    }
+}
+
+impl FromIterator<(Key, Value)> for Fields {
+    fn from_iter<I: IntoIterator<Item = (Key, Value)>>(iter: I) -> Self {
+        LiteMap::from_iter(iter).into()
+    }
+}
+
+impl_writeable_for_key_value!(Fields, "h0", "hybrid", "m0", "m0-true");
diff --git a/vendor/icu_locale_core/src/extensions/transform/key.rs b/vendor/icu_locale_core/src/extensions/transform/key.rs
new file mode 100644
index 00000000..27dc98ce
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/transform/key.rs
@@ -0,0 +1,32 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+impl_tinystr_subtag!(
+    /// A key used in a list of [`Fields`](super::Fields).
+    ///
+    /// The key has to be a two ASCII characters long, with the first
+    /// character being alphabetic, and the second being a number.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::transform::Key;
+    ///
+    /// let key1: Key = "k0".parse().expect("Failed to parse a Key.");
+    ///
+    /// assert_eq!(key1.as_str(), "k0");
+    /// ```
+    Key,
+    extensions::transform,
+    key,
+    extensions_transform_key,
+    2..=2,
+    s,
+    s.all_bytes()[0].is_ascii_alphabetic() && s.all_bytes()[1].is_ascii_digit(),
+    s.to_ascii_lowercase(),
+    s.all_bytes()[0].is_ascii_lowercase() && s.all_bytes()[1].is_ascii_digit(),
+    InvalidExtension,
+    ["k0"],
+    ["", "k", "0k", "k12"],
+);
diff --git a/vendor/icu_locale_core/src/extensions/transform/mod.rs b/vendor/icu_locale_core/src/extensions/transform/mod.rs
new file mode 100644
index 00000000..8f3094f1
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/transform/mod.rs
@@ -0,0 +1,331 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Transform Extensions provide information on content transformations in a given locale.
+//!
+//! The main struct for this extension is [`Transform`] which contains [`Fields`] and an
+//! optional [`LanguageIdentifier`].
+//!
+//! [`LanguageIdentifier`]: super::super::LanguageIdentifier
+//!
+//! # Examples
+//!
+//! ```
+//! use icu::locale::extensions::transform::{Fields, Key, Transform, Value};
+//! use icu::locale::{LanguageIdentifier, Locale};
+//!
+//! let mut loc: Locale =
+//!     "en-US-t-es-ar-h0-hybrid".parse().expect("Parsing failed.");
+//!
+//! let lang: LanguageIdentifier =
+//!     "es-AR".parse().expect("Parsing LanguageIdentifier failed.");
+//!
+//! let key: Key = "h0".parse().expect("Parsing key failed.");
+//! let value: Value = "hybrid".parse().expect("Parsing value failed.");
+//!
+//! assert_eq!(loc.extensions.transform.lang, Some(lang));
+//! assert!(loc.extensions.transform.fields.contains_key(&key));
+//! assert_eq!(loc.extensions.transform.fields.get(&key), Some(&value));
+//!
+//! assert_eq!(&loc.extensions.transform.to_string(), "t-es-ar-h0-hybrid");
+//! ```
+mod fields;
+mod key;
+mod value;
+
+use core::cmp::Ordering;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+pub use fields::Fields;
+#[doc(inline)]
+pub use key::{key, Key};
+pub use value::Value;
+
+#[cfg(feature = "alloc")]
+use super::ExtensionType;
+#[cfg(feature = "alloc")]
+use crate::parser::SubtagIterator;
+#[cfg(feature = "alloc")]
+use crate::parser::{parse_language_identifier_from_iter, ParseError, ParserMode};
+#[cfg(feature = "alloc")]
+use crate::shortvec::ShortBoxSlice;
+use crate::subtags;
+#[cfg(feature = "alloc")]
+use crate::subtags::Language;
+use crate::LanguageIdentifier;
+#[cfg(feature = "alloc")]
+use litemap::LiteMap;
+
+pub(crate) const TRANSFORM_EXT_CHAR: char = 't';
+pub(crate) const TRANSFORM_EXT_STR: &str = "t";
+
+/// A list of [`Unicode BCP47 T Extensions`] as defined in [`Unicode Locale
+/// Identifier`] specification.
+///
+/// Transform extension carries information about source language or script of
+/// transformed content, including content that has been transliterated, transcribed,
+/// or translated, or in some other way influenced by the source (See [`RFC 6497`] for details).
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::extensions::transform::{Key, Value};
+/// use icu::locale::{LanguageIdentifier, Locale};
+///
+/// let mut loc: Locale =
+///     "de-t-en-us-h0-hybrid".parse().expect("Parsing failed.");
+///
+/// let en_us: LanguageIdentifier = "en-US".parse().expect("Parsing failed.");
+///
+/// assert_eq!(loc.extensions.transform.lang, Some(en_us));
+/// let key: Key = "h0".parse().expect("Parsing key failed.");
+/// let value: Value = "hybrid".parse().expect("Parsing value failed.");
+/// assert_eq!(loc.extensions.transform.fields.get(&key), Some(&value));
+/// ```
+/// [`Unicode BCP47 T Extensions`]: https://unicode.org/reports/tr35/#t_Extension
+/// [`RFC 6497`]: https://www.ietf.org/rfc/rfc6497.txt
+/// [`Unicode Locale Identifier`]: https://unicode.org/reports/tr35/#Unicode_locale_identifier
+#[derive(Clone, PartialEq, Eq, Debug, Default, Hash)]
+#[allow(clippy::exhaustive_structs)] // spec-backed stable datastructure
+pub struct Transform {
+    /// The [`LanguageIdentifier`] specified with this locale extension, or `None` if not present.
+    pub lang: Option<LanguageIdentifier>,
+    /// The key-value pairs present in this locale extension, with each extension key subtag
+    /// associated to its provided value subtag.
+    pub fields: Fields,
+}
+
+impl Transform {
+    /// Returns a new empty map of Transform extensions. Same as [`default()`](Default::default()), but is `const`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::transform::Transform;
+    ///
+    /// assert_eq!(Transform::new(), Transform::default());
+    /// ```
+    #[inline]
+    pub const fn new() -> Self {
+        Self {
+            lang: None,
+            fields: Fields::new(),
+        }
+    }
+
+    /// A constructor which takes a str slice, parses it and
+    /// produces a well-formed [`Transform`].
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let mut iter = SubtagIterator::new(code_units);
+
+        let ext = iter.next().ok_or(ParseError::InvalidExtension)?;
+        if let ExtensionType::Transform = ExtensionType::try_from_byte_slice(ext)? {
+            return Self::try_from_iter(&mut iter);
+        }
+
+        Err(ParseError::InvalidExtension)
+    }
+
+    /// Returns `true` if there are no tfields and no tlang in the `TransformExtensionList`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// let mut loc: Locale = "en-US-t-es-ar".parse().expect("Parsing failed.");
+    ///
+    /// assert!(!loc.extensions.transform.is_empty());
+    /// ```
+    pub fn is_empty(&self) -> bool {
+        self.lang.is_none() && self.fields.is_empty()
+    }
+
+    /// Clears the transform extension, effectively removing it from the locale.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// let mut loc: Locale = "en-US-t-es-ar".parse().unwrap();
+    /// loc.extensions.transform.clear();
+    /// assert_eq!(loc, "en-US".parse().unwrap());
+    /// ```
+    pub fn clear(&mut self) {
+        self.lang = None;
+        self.fields.clear();
+    }
+
+    #[allow(clippy::type_complexity)]
+    pub(crate) fn as_tuple(
+        &self,
+    ) -> (
+        Option<(
+            subtags::Language,
+            Option<subtags::Script>,
+            Option<subtags::Region>,
+            &subtags::Variants,
+        )>,
+        &Fields,
+    ) {
+        (self.lang.as_ref().map(|l| l.as_tuple()), &self.fields)
+    }
+
+    /// Returns an ordering suitable for use in [`BTreeSet`].
+    ///
+    /// The ordering may or may not be equivalent to string ordering, and it
+    /// may or may not be stable across ICU4X releases.
+    ///
+    /// [`BTreeSet`]: alloc::collections::BTreeSet
+    pub fn total_cmp(&self, other: &Self) -> Ordering {
+        self.as_tuple().cmp(&other.as_tuple())
+    }
+
+    #[cfg(feature = "alloc")]
+    pub(crate) fn try_from_iter(iter: &mut SubtagIterator) -> Result<Self, ParseError> {
+        let mut tlang = None;
+        let mut tfields = LiteMap::new();
+
+        if let Some(subtag) = iter.peek() {
+            if Language::try_from_utf8(subtag).is_ok() {
+                tlang = Some(parse_language_identifier_from_iter(
+                    iter,
+                    ParserMode::Partial,
+                )?);
+            }
+        }
+
+        let mut current_tkey = None;
+        let mut current_tvalue = ShortBoxSlice::new();
+        let mut has_current_tvalue = false;
+
+        while let Some(subtag) = iter.peek() {
+            if let Some(tkey) = current_tkey {
+                if let Ok(val) = Value::parse_subtag(subtag) {
+                    has_current_tvalue = true;
+                    if let Some(val) = val {
+                        current_tvalue.push(val);
+                    }
+                } else {
+                    if !has_current_tvalue {
+                        return Err(ParseError::InvalidExtension);
+                    }
+                    tfields.try_insert(tkey, Value::from_short_slice_unchecked(current_tvalue));
+                    current_tkey = None;
+                    current_tvalue = ShortBoxSlice::new();
+                    has_current_tvalue = false;
+                    continue;
+                }
+            } else if let Ok(tkey) = Key::try_from_utf8(subtag) {
+                current_tkey = Some(tkey);
+            } else {
+                break;
+            }
+
+            iter.next();
+        }
+
+        if let Some(tkey) = current_tkey {
+            if !has_current_tvalue {
+                return Err(ParseError::InvalidExtension);
+            }
+            tfields.try_insert(tkey, Value::from_short_slice_unchecked(current_tvalue));
+        }
+
+        if tlang.is_none() && tfields.is_empty() {
+            Err(ParseError::InvalidExtension)
+        } else {
+            Ok(Self {
+                lang: tlang,
+                fields: tfields.into(),
+            })
+        }
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F, with_ext: bool) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        if self.is_empty() {
+            return Ok(());
+        }
+        if with_ext {
+            f(TRANSFORM_EXT_STR)?;
+        }
+        if let Some(lang) = &self.lang {
+            lang.for_each_subtag_str_lowercased(f)?;
+        }
+        self.fields.for_each_subtag_str(f)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for Transform {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+writeable::impl_display_with_writeable!(Transform);
+
+impl writeable::Writeable for Transform {
+    fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
+        if self.is_empty() {
+            return Ok(());
+        }
+        sink.write_char(TRANSFORM_EXT_CHAR)?;
+        if let Some(lang) = &self.lang {
+            sink.write_char('-')?;
+            lang.write_lowercased_to(sink)?;
+        }
+        if !self.fields.is_empty() {
+            sink.write_char('-')?;
+            writeable::Writeable::write_to(&self.fields, sink)?;
+        }
+        Ok(())
+    }
+
+    fn writeable_length_hint(&self) -> writeable::LengthHint {
+        if self.is_empty() {
+            return writeable::LengthHint::exact(0);
+        }
+        let mut result = writeable::LengthHint::exact(1);
+        if let Some(lang) = &self.lang {
+            result += writeable::Writeable::writeable_length_hint(lang) + 1;
+        }
+        if !self.fields.is_empty() {
+            result += writeable::Writeable::writeable_length_hint(&self.fields) + 1;
+        }
+        result
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_transform_extension_fromstr() {
+        let te: Transform = "t-en-us-h0-hybrid"
+            .parse()
+            .expect("Failed to parse Transform");
+        assert_eq!(te.to_string(), "t-en-us-h0-hybrid");
+
+        let te: Result<Transform, _> = "t".parse();
+        assert!(te.is_err());
+    }
+}
diff --git a/vendor/icu_locale_core/src/extensions/transform/value.rs b/vendor/icu_locale_core/src/extensions/transform/value.rs
new file mode 100644
index 00000000..3a54f739
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/transform/value.rs
@@ -0,0 +1,160 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::parser::ParseError;
+#[cfg(feature = "alloc")]
+use crate::parser::SubtagIterator;
+use crate::shortvec::ShortBoxSlice;
+use crate::subtags::{subtag, Subtag};
+use core::ops::RangeInclusive;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+/// A value used in a list of [`Fields`](super::Fields).
+///
+/// The value has to be a sequence of one or more alphanumerical strings
+/// separated by `-`.
+/// Each part of the sequence has to be no shorter than three characters and no
+/// longer than 8.
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::extensions::transform::Value;
+///
+/// "hybrid".parse::<Value>().expect("Valid Value.");
+///
+/// "hybrid-foobar".parse::<Value>().expect("Valid Value.");
+///
+/// "no".parse::<Value>().expect_err("Invalid Value.");
+/// ```
+#[derive(Debug, PartialEq, Eq, Clone, Hash, PartialOrd, Ord, Default)]
+pub struct Value(ShortBoxSlice<Subtag>);
+
+#[allow(dead_code)]
+const TYPE_LENGTH: RangeInclusive<usize> = 3..=8;
+const TRUE_TVALUE: Subtag = subtag!("true");
+
+impl Value {
+    /// A constructor which takes a str slice, parses it and
+    /// produces a well-formed [`Value`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::transform::Value;
+    ///
+    /// let value = Value::try_from_str("hybrid").expect("Parsing failed.");
+    /// ```
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let mut v = ShortBoxSlice::default();
+        let mut has_value = false;
+
+        for subtag in SubtagIterator::new(code_units) {
+            if !Self::is_type_subtag(subtag) {
+                return Err(ParseError::InvalidExtension);
+            }
+            has_value = true;
+            let val = Subtag::try_from_utf8(subtag).map_err(|_| ParseError::InvalidExtension)?;
+            if val != TRUE_TVALUE {
+                v.push(val);
+            }
+        }
+
+        if !has_value {
+            return Err(ParseError::InvalidExtension);
+        }
+        Ok(Self(v))
+    }
+
+    #[allow(dead_code)]
+    pub(crate) fn from_short_slice_unchecked(input: ShortBoxSlice<Subtag>) -> Self {
+        Self(input)
+    }
+
+    #[allow(dead_code)]
+    pub(crate) fn is_type_subtag(t: &[u8]) -> bool {
+        TYPE_LENGTH.contains(&t.len()) && t.iter().all(u8::is_ascii_alphanumeric)
+    }
+
+    #[allow(dead_code)]
+    pub(crate) fn parse_subtag(t: &[u8]) -> Result<Option<Subtag>, ParseError> {
+        if !TYPE_LENGTH.contains(&t.len()) {
+            return Err(ParseError::InvalidExtension);
+        }
+        let s = Subtag::try_from_utf8(t).map_err(|_| ParseError::InvalidSubtag)?;
+
+        let s = s.to_ascii_lowercase();
+
+        if s == TRUE_TVALUE {
+            Ok(None)
+        } else {
+            Ok(Some(s))
+        }
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        if self.0.is_empty() {
+            f(TRUE_TVALUE.as_str())?;
+        } else {
+            self.0.iter().map(Subtag::as_str).try_for_each(f)?;
+        }
+        Ok(())
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for Value {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+impl_writeable_for_each_subtag_str_no_test!(Value, selff, selff.0.is_empty() => alloc::borrow::Cow::Borrowed("true"));
+
+#[test]
+fn test_writeable() {
+    use writeable::assert_writeable_eq;
+
+    let hybrid = "hybrid".parse().unwrap();
+    let foobar = "foobar".parse().unwrap();
+
+    assert_writeable_eq!(Value::default(), "true");
+    assert_writeable_eq!(
+        Value::from_short_slice_unchecked(vec![hybrid].into()),
+        "hybrid"
+    );
+    assert_writeable_eq!(
+        Value::from_short_slice_unchecked(vec![hybrid, foobar].into()),
+        "hybrid-foobar"
+    );
+}
+
+#[test]
+fn test_short_tvalue() {
+    let value = Value::try_from_str("foo-longstag");
+    assert!(value.is_ok());
+    let value = value.unwrap();
+    assert_eq!(value.0.len(), 2);
+    for (s, reference) in value.0.iter().zip(&[subtag!("foo"), subtag!("longstag")]) {
+        assert_eq!(s, reference);
+    }
+
+    let value = Value::try_from_str("foo-ba");
+    assert!(value.is_err());
+}
diff --git a/vendor/icu_locale_core/src/extensions/unicode/attribute.rs b/vendor/icu_locale_core/src/extensions/unicode/attribute.rs
new file mode 100644
index 00000000..8430fbbe
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/unicode/attribute.rs
@@ -0,0 +1,34 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+impl_tinystr_subtag!(
+    /// An attribute used in a set of [`Attributes`](super::Attributes).
+    ///
+    /// An attribute has to be a sequence of alphanumerical characters no
+    /// shorter than three and no longer than eight characters.
+    ///
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::{attribute, Attribute};
+    ///
+    /// let attr: Attribute =
+    ///     "buddhist".parse().expect("Failed to parse an Attribute.");
+    ///
+    /// assert_eq!(attr, attribute!("buddhist"));
+    /// ```
+    Attribute,
+    extensions::unicode,
+    attribute,
+    extensions_unicode_attribute,
+    3..=8,
+    s,
+    s.is_ascii_alphanumeric(),
+    s.to_ascii_lowercase(),
+    s.is_ascii_alphanumeric() && s.is_ascii_lowercase(),
+    InvalidExtension,
+    ["foo12"],
+    ["no", "toolooong"],
+);
diff --git a/vendor/icu_locale_core/src/extensions/unicode/attributes.rs b/vendor/icu_locale_core/src/extensions/unicode/attributes.rs
new file mode 100644
index 00000000..7ca0fecf
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/unicode/attributes.rs
@@ -0,0 +1,177 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::Attribute;
+
+#[cfg(feature = "alloc")]
+use crate::parser::SubtagIterator;
+use crate::shortvec::ShortBoxSlice;
+#[cfg(feature = "alloc")]
+use crate::ParseError;
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+use core::ops::Deref;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+/// A set of [`Attribute`] elements as defined in [`Unicode Extension Attributes`].
+///
+/// [`Unicode Extension Attributes`]: https://unicode.org/reports/tr35/tr35.html#u_Extension
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::extensions::unicode::{Attribute, Attributes};
+///
+/// let attribute1: Attribute =
+///     "foobar".parse().expect("Failed to parse a variant subtag.");
+///
+/// let attribute2: Attribute = "testing"
+///     .parse()
+///     .expect("Failed to parse a variant subtag.");
+/// let mut v = vec![attribute1, attribute2];
+/// v.sort();
+/// v.dedup();
+///
+/// let attributes: Attributes = Attributes::from_vec_unchecked(v);
+/// assert_eq!(attributes.to_string(), "foobar-testing");
+/// ```
+#[derive(Default, Debug, PartialEq, Eq, Clone, Hash, PartialOrd, Ord)]
+pub struct Attributes(ShortBoxSlice<Attribute>);
+
+impl Attributes {
+    /// Returns a new empty set of attributes. Same as [`default()`](Default::default()), but is `const`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::Attributes;
+    ///
+    /// assert_eq!(Attributes::new(), Attributes::default());
+    /// ```
+    #[inline]
+    pub const fn new() -> Self {
+        Self(ShortBoxSlice::new())
+    }
+
+    /// A constructor which takes a str slice, parses it and
+    /// produces a well-formed [`Attributes`].
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let mut iter = SubtagIterator::new(code_units);
+        Self::try_from_iter(&mut iter)
+    }
+
+    /// A constructor which takes a pre-sorted list of [`Attribute`] elements.
+    ///
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::{Attribute, Attributes};
+    ///
+    /// let attribute1: Attribute = "foobar".parse().expect("Parsing failed.");
+    /// let attribute2: Attribute = "testing".parse().expect("Parsing failed.");
+    /// let mut v = vec![attribute1, attribute2];
+    /// v.sort();
+    /// v.dedup();
+    ///
+    /// let attributes = Attributes::from_vec_unchecked(v);
+    /// ```
+    ///
+    /// Notice: For performance- and memory-constrained environments, it is recommended
+    /// for the caller to use [`binary_search`](slice::binary_search) instead of [`sort`](slice::sort)
+    /// and [`dedup`](Vec::dedup()).
+    #[cfg(feature = "alloc")]
+    pub fn from_vec_unchecked(input: Vec<Attribute>) -> Self {
+        Self(input.into())
+    }
+
+    /// Empties the [`Attributes`] list.
+    ///
+    /// Returns the old list.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::{attribute, Attributes};
+    /// use writeable::assert_writeable_eq;
+    ///
+    /// let mut attributes = Attributes::from_vec_unchecked(vec![
+    ///     attribute!("foobar"),
+    ///     attribute!("testing"),
+    /// ]);
+    ///
+    /// assert_writeable_eq!(attributes, "foobar-testing");
+    ///
+    /// attributes.clear();
+    ///
+    /// assert_writeable_eq!(attributes, "");
+    /// ```
+    pub fn clear(&mut self) -> Self {
+        core::mem::take(self)
+    }
+
+    #[cfg(feature = "alloc")]
+    pub(crate) fn try_from_iter(iter: &mut SubtagIterator) -> Result<Self, ParseError> {
+        let mut attributes = ShortBoxSlice::new();
+
+        while let Some(subtag) = iter.peek() {
+            if let Ok(attr) = Attribute::try_from_utf8(subtag) {
+                if let Err(idx) = attributes.binary_search(&attr) {
+                    attributes.insert(idx, attr);
+                }
+            } else {
+                break;
+            }
+            iter.next();
+        }
+        Ok(Self(attributes))
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        self.deref().iter().map(|t| t.as_str()).try_for_each(f)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for Attributes {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+impl_writeable_for_subtag_list!(Attributes, "foobar", "testing");
+
+impl Deref for Attributes {
+    type Target = [Attribute];
+
+    fn deref(&self) -> &[Attribute] {
+        self.0.deref()
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_attributes_fromstr() {
+        let attrs: Attributes = "foo-bar".parse().expect("Failed to parse Attributes");
+        assert_eq!(attrs.to_string(), "bar-foo");
+    }
+}
diff --git a/vendor/icu_locale_core/src/extensions/unicode/key.rs b/vendor/icu_locale_core/src/extensions/unicode/key.rs
new file mode 100644
index 00000000..9192a89c
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/unicode/key.rs
@@ -0,0 +1,32 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+impl_tinystr_subtag!(
+    /// A key used in a list of [`Keywords`](super::Keywords).
+    ///
+    /// The key has to be a two ASCII alphanumerical characters long, with the first
+    /// character being alphanumeric, and the second being alphabetic.
+    ///
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::Key;
+    ///
+    /// assert!("ca".parse::<Key>().is_ok());
+    /// ```
+    Key,
+    extensions::unicode,
+    key,
+    extensions_unicode_key,
+    2..=2,
+    s,
+    s.all_bytes()[0].is_ascii_alphanumeric() && s.all_bytes()[1].is_ascii_alphabetic(),
+    s.to_ascii_lowercase(),
+    (s.all_bytes()[0].is_ascii_lowercase() || s.all_bytes()[0].is_ascii_digit())
+        && s.all_bytes()[1].is_ascii_lowercase(),
+    InvalidExtension,
+    ["ca", "8a"],
+    ["a", "a8", "abc"],
+);
diff --git a/vendor/icu_locale_core/src/extensions/unicode/keywords.rs b/vendor/icu_locale_core/src/extensions/unicode/keywords.rs
new file mode 100644
index 00000000..726b5490
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/unicode/keywords.rs
@@ -0,0 +1,418 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::borrow::Borrow;
+use core::cmp::Ordering;
+#[cfg(feature = "alloc")]
+use core::iter::FromIterator;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+use litemap::LiteMap;
+
+use super::Key;
+use super::Value;
+#[cfg(feature = "alloc")]
+use crate::parser::ParseError;
+#[cfg(feature = "alloc")]
+use crate::parser::SubtagIterator;
+use crate::shortvec::ShortBoxSlice;
+
+/// A list of [`Key`]-[`Value`] pairs representing functional information
+/// about locale's internationalization preferences.
+///
+/// Here are examples of fields used in Unicode:
+/// - `hc` - Hour Cycle (`h11`, `h12`, `h23`, `h24`)
+/// - `ca` - Calendar (`buddhist`, `gregory`, ...)
+/// - `fw` - First Day Of the Week (`sun`, `mon`, `sat`, ...)
+///
+/// You can find the full list in [`Unicode BCP 47 U Extension`] section of LDML.
+///
+/// [`Unicode BCP 47 U Extension`]: https://unicode.org/reports/tr35/tr35.html#Key_And_Type_Definitions_
+///
+/// # Examples
+///
+/// Manually build up a [`Keywords`] object:
+///
+/// ```
+/// use icu::locale::extensions::unicode::{key, value, Keywords};
+///
+/// let keywords = [(key!("hc"), value!("h23"))]
+///     .into_iter()
+///     .collect::<Keywords>();
+///
+/// assert_eq!(&keywords.to_string(), "hc-h23");
+/// ```
+///
+/// Access a [`Keywords`] object from a [`Locale`]:
+///
+/// ```
+/// use icu::locale::{
+///     extensions::unicode::{key, value},
+///     Locale,
+/// };
+///
+/// let loc: Locale = "und-u-hc-h23-kc-true".parse().expect("Valid BCP-47");
+///
+/// assert_eq!(loc.extensions.unicode.keywords.get(&key!("ca")), None);
+/// assert_eq!(
+///     loc.extensions.unicode.keywords.get(&key!("hc")),
+///     Some(&value!("h23"))
+/// );
+/// assert_eq!(
+///     loc.extensions.unicode.keywords.get(&key!("kc")),
+///     Some(&value!("true"))
+/// );
+///
+/// assert_eq!(loc.extensions.unicode.keywords.to_string(), "hc-h23-kc");
+/// ```
+///
+/// [`Locale`]: crate::Locale
+#[derive(Clone, PartialEq, Eq, Debug, Default, Hash, PartialOrd, Ord)]
+pub struct Keywords(LiteMap<Key, Value, ShortBoxSlice<(Key, Value)>>);
+
+impl Keywords {
+    /// Returns a new empty list of key-value pairs. Same as [`default()`](Default::default()), but is `const`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::Keywords;
+    ///
+    /// assert_eq!(Keywords::new(), Keywords::default());
+    /// ```
+    #[inline]
+    pub const fn new() -> Self {
+        Self(LiteMap::new())
+    }
+
+    /// Create a new list of key-value pairs having exactly one pair, callable in a `const` context.
+    #[inline]
+    pub const fn new_single(key: Key, value: Value) -> Self {
+        Self(LiteMap::from_sorted_store_unchecked(
+            ShortBoxSlice::new_single((key, value)),
+        ))
+    }
+
+    /// A constructor which takes a str slice, parses it and
+    /// produces a well-formed [`Keywords`].
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let mut iter = SubtagIterator::new(code_units);
+        Self::try_from_iter(&mut iter)
+    }
+
+    /// Returns `true` if there are no keywords.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::locale;
+    /// use icu::locale::Locale;
+    ///
+    /// let loc1 = Locale::try_from_str("und-t-h0-hybrid").unwrap();
+    /// let loc2 = locale!("und-u-ca-buddhist");
+    ///
+    /// assert!(loc1.extensions.unicode.keywords.is_empty());
+    /// assert!(!loc2.extensions.unicode.keywords.is_empty());
+    /// ```
+    pub fn is_empty(&self) -> bool {
+        self.0.is_empty()
+    }
+
+    /// Returns `true` if the list contains a [`Value`] for the specified [`Key`].
+    ///
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::{key, value, Keywords};
+    ///
+    /// let keywords = [(key!("ca"), value!("gregory"))]
+    ///     .into_iter()
+    ///     .collect::<Keywords>();
+    ///
+    /// assert!(&keywords.contains_key(&key!("ca")));
+    /// ```
+    pub fn contains_key<Q>(&self, key: &Q) -> bool
+    where
+        Key: Borrow<Q>,
+        Q: Ord,
+    {
+        self.0.contains_key(key)
+    }
+
+    /// Returns a reference to the [`Value`] corresponding to the [`Key`].
+    ///
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::{key, value, Keywords};
+    ///
+    /// let keywords = [(key!("ca"), value!("buddhist"))]
+    ///     .into_iter()
+    ///     .collect::<Keywords>();
+    ///
+    /// assert_eq!(keywords.get(&key!("ca")), Some(&value!("buddhist")));
+    /// ```
+    pub fn get<Q>(&self, key: &Q) -> Option<&Value>
+    where
+        Key: Borrow<Q>,
+        Q: Ord,
+    {
+        self.0.get(key)
+    }
+
+    /// Returns a mutable reference to the [`Value`] corresponding to the [`Key`].
+    ///
+    /// Returns `None` if the key doesn't exist or if the key has no value.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::{key, value, Keywords};
+    ///
+    /// let mut keywords = [(key!("ca"), value!("buddhist"))]
+    ///     .into_iter()
+    ///     .collect::<Keywords>();
+    ///
+    /// if let Some(value) = keywords.get_mut(&key!("ca")) {
+    ///     *value = value!("gregory");
+    /// }
+    /// assert_eq!(keywords.get(&key!("ca")), Some(&value!("gregory")));
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn get_mut<Q>(&mut self, key: &Q) -> Option<&mut Value>
+    where
+        Key: Borrow<Q>,
+        Q: Ord,
+    {
+        self.0.get_mut(key)
+    }
+
+    /// Sets the specified keyword, returning the old value if it already existed.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::{key, value};
+    /// use icu::locale::Locale;
+    ///
+    /// let mut loc: Locale = "und-u-hello-ca-buddhist-hc-h12"
+    ///     .parse()
+    ///     .expect("valid BCP-47 identifier");
+    /// let old_value = loc
+    ///     .extensions
+    ///     .unicode
+    ///     .keywords
+    ///     .set(key!("ca"), value!("japanese"));
+    ///
+    /// assert_eq!(old_value, Some(value!("buddhist")));
+    /// assert_eq!(loc, "und-u-hello-ca-japanese-hc-h12".parse().unwrap());
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn set(&mut self, key: Key, value: Value) -> Option<Value> {
+        self.0.insert(key, value)
+    }
+
+    /// Removes the specified keyword, returning the old value if it existed.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::key;
+    /// use icu::locale::Locale;
+    ///
+    /// let mut loc: Locale = "und-u-hello-ca-buddhist-hc-h12"
+    ///     .parse()
+    ///     .expect("valid BCP-47 identifier");
+    /// loc.extensions.unicode.keywords.remove(key!("ca"));
+    /// assert_eq!(loc, "und-u-hello-hc-h12".parse().unwrap());
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn remove<Q: Borrow<Key>>(&mut self, key: Q) -> Option<Value> {
+        self.0.remove(key.borrow())
+    }
+
+    /// Clears all Unicode extension keywords, leaving Unicode attributes.
+    ///
+    /// Returns the old Unicode extension keywords.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// let mut loc: Locale = "und-u-hello-ca-buddhist-hc-h12".parse().unwrap();
+    /// loc.extensions.unicode.keywords.clear();
+    /// assert_eq!(loc, "und-u-hello".parse().unwrap());
+    /// ```
+    pub fn clear(&mut self) -> Self {
+        core::mem::take(self)
+    }
+
+    /// Retains a subset of keywords as specified by the predicate function.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::key;
+    /// use icu::locale::Locale;
+    ///
+    /// let mut loc: Locale = "und-u-ca-buddhist-hc-h12-ms-metric".parse().unwrap();
+    ///
+    /// loc.extensions
+    ///     .unicode
+    ///     .keywords
+    ///     .retain_by_key(|&k| k == key!("hc"));
+    /// assert_eq!(loc, "und-u-hc-h12".parse().unwrap());
+    ///
+    /// loc.extensions
+    ///     .unicode
+    ///     .keywords
+    ///     .retain_by_key(|&k| k == key!("ms"));
+    /// assert_eq!(loc, Locale::UNKNOWN);
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn retain_by_key<F>(&mut self, mut predicate: F)
+    where
+        F: FnMut(&Key) -> bool,
+    {
+        self.0.retain(|k, _| predicate(k))
+    }
+
+    /// Compare this [`Keywords`] with BCP-47 bytes.
+    ///
+    /// The return value is equivalent to what would happen if you first converted this
+    /// [`Keywords`] to a BCP-47 string and then performed a byte comparison.
+    ///
+    /// This function is case-sensitive and results in a *total order*, so it is appropriate for
+    /// binary search. The only argument producing [`Ordering::Equal`] is `self.to_string()`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    /// use std::cmp::Ordering;
+    ///
+    /// let bcp47_strings: &[&str] =
+    ///     &["ca-hebrew", "ca-japanese", "ca-japanese-nu-latn", "nu-latn"];
+    ///
+    /// for ab in bcp47_strings.windows(2) {
+    ///     let a = ab[0];
+    ///     let b = ab[1];
+    ///     assert!(a.cmp(b) == Ordering::Less);
+    ///     let a_kwds = format!("und-u-{}", a)
+    ///         .parse::<Locale>()
+    ///         .unwrap()
+    ///         .extensions
+    ///         .unicode
+    ///         .keywords;
+    ///     assert!(a_kwds.strict_cmp(a.as_bytes()) == Ordering::Equal);
+    ///     assert!(a_kwds.strict_cmp(b.as_bytes()) == Ordering::Less);
+    /// }
+    /// ```
+    pub fn strict_cmp(&self, other: &[u8]) -> Ordering {
+        writeable::cmp_utf8(self, other)
+    }
+
+    #[cfg(feature = "alloc")]
+    pub(crate) fn try_from_iter(iter: &mut SubtagIterator) -> Result<Self, ParseError> {
+        let mut keywords = LiteMap::new();
+
+        let mut current_keyword = None;
+        let mut current_value = ShortBoxSlice::new();
+
+        while let Some(subtag) = iter.peek() {
+            let slen = subtag.len();
+            if slen == 2 {
+                if let Some(kw) = current_keyword.take() {
+                    keywords.try_insert(kw, Value::from_short_slice_unchecked(current_value));
+                    current_value = ShortBoxSlice::new();
+                }
+                current_keyword = Some(Key::try_from_utf8(subtag)?);
+            } else if current_keyword.is_some() {
+                match Value::parse_subtag_from_utf8(subtag) {
+                    Ok(Some(t)) => current_value.push(t),
+                    Ok(None) => {}
+                    Err(_) => break,
+                }
+            } else {
+                break;
+            }
+            iter.next();
+        }
+
+        if let Some(kw) = current_keyword.take() {
+            keywords.try_insert(kw, Value::from_short_slice_unchecked(current_value));
+        }
+
+        Ok(keywords.into())
+    }
+
+    /// Produce an ordered iterator over key-value pairs
+    pub fn iter(&self) -> impl Iterator<Item = (&Key, &Value)> {
+        self.0.iter()
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        for (k, v) in self.0.iter() {
+            f(k.as_str())?;
+            v.for_each_subtag_str(f)?;
+        }
+        Ok(())
+    }
+
+    /// This needs to be its own method to help with type inference in helpers.rs
+    #[cfg(test)]
+    pub(crate) fn from_tuple_vec(v: Vec<(Key, Value)>) -> Self {
+        v.into_iter().collect()
+    }
+}
+
+impl From<LiteMap<Key, Value, ShortBoxSlice<(Key, Value)>>> for Keywords {
+    fn from(map: LiteMap<Key, Value, ShortBoxSlice<(Key, Value)>>) -> Self {
+        Self(map)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromIterator<(Key, Value)> for Keywords {
+    fn from_iter<I: IntoIterator<Item = (Key, Value)>>(iter: I) -> Self {
+        LiteMap::from_iter(iter).into()
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for Keywords {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+impl_writeable_for_key_value!(Keywords, "ca", "islamic-civil", "mm", "mm");
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_keywords_fromstr() {
+        let kw: Keywords = "hc-h12".parse().expect("Failed to parse Keywords");
+        assert_eq!(kw.to_string(), "hc-h12");
+    }
+}
diff --git a/vendor/icu_locale_core/src/extensions/unicode/mod.rs b/vendor/icu_locale_core/src/extensions/unicode/mod.rs
new file mode 100644
index 00000000..f5159354
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/unicode/mod.rs
@@ -0,0 +1,269 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Unicode Extensions provide information about user preferences in a given locale.
+//!
+//! The main struct for this extension is [`Unicode`] which contains [`Keywords`] and
+//! [`Attributes`].
+//!
+//!
+//! # Examples
+//!
+//! ```
+//! use icu::locale::extensions::unicode::{attribute, key, value, Unicode};
+//! use icu::locale::Locale;
+//!
+//! let loc: Locale = "en-US-u-foobar-hc-h12".parse().expect("Parsing failed.");
+//!
+//! assert_eq!(
+//!     loc.extensions.unicode.keywords.get(&key!("hc")),
+//!     Some(&value!("h12"))
+//! );
+//! assert!(loc
+//!     .extensions
+//!     .unicode
+//!     .attributes
+//!     .contains(&attribute!("foobar")));
+//! ```
+mod attribute;
+mod attributes;
+mod key;
+mod keywords;
+mod subdivision;
+mod value;
+
+use core::cmp::Ordering;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+#[doc(inline)]
+pub use attribute::{attribute, Attribute};
+pub use attributes::Attributes;
+#[doc(inline)]
+pub use key::{key, Key};
+pub use keywords::Keywords;
+#[doc(inline)]
+pub use subdivision::{subdivision_suffix, SubdivisionId, SubdivisionSuffix};
+#[doc(inline)]
+pub use value::{value, Value};
+
+#[cfg(feature = "alloc")]
+use super::ExtensionType;
+#[cfg(feature = "alloc")]
+use crate::parser::ParseError;
+#[cfg(feature = "alloc")]
+use crate::parser::SubtagIterator;
+
+pub(crate) const UNICODE_EXT_CHAR: char = 'u';
+pub(crate) const UNICODE_EXT_STR: &str = "u";
+
+/// Unicode Extensions provide information about user preferences in a given locale.
+///
+/// A list of [`Unicode BCP47 U Extensions`] as defined in [`Unicode Locale
+/// Identifier`] specification.
+///
+/// Unicode extensions provide subtags that specify language and/or locale-based behavior
+/// or refinements to language tags, according to work done by the Unicode Consortium.
+/// (See [`RFC 6067`] for details).
+///
+/// [`Unicode BCP47 U Extensions`]: https://unicode.org/reports/tr35/#u_Extension
+/// [`RFC 6067`]: https://www.ietf.org/rfc/rfc6067.txt
+/// [`Unicode Locale Identifier`]: https://unicode.org/reports/tr35/#Unicode_locale_identifier
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::extensions::unicode::{key, value};
+/// use icu::locale::Locale;
+///
+/// let loc: Locale =
+///     "de-u-hc-h12-ca-buddhist".parse().expect("Parsing failed.");
+///
+/// assert_eq!(
+///     loc.extensions.unicode.keywords.get(&key!("ca")),
+///     Some(&value!("buddhist"))
+/// );
+/// ```
+#[derive(Clone, PartialEq, Eq, Debug, Default, Hash)]
+#[allow(clippy::exhaustive_structs)] // spec-backed stable datastructure
+pub struct Unicode {
+    /// The key-value pairs present in this locale extension, with each extension key subtag
+    /// associated to its provided value subtag.
+    pub keywords: Keywords,
+    /// A canonically ordered sequence of single standalone subtags for this locale extension.
+    pub attributes: Attributes,
+}
+
+impl Unicode {
+    /// Returns a new empty map of Unicode extensions. Same as [`default()`](Default::default()), but is `const`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::Unicode;
+    ///
+    /// assert_eq!(Unicode::new(), Unicode::default());
+    /// ```
+    #[inline]
+    pub const fn new() -> Self {
+        Self {
+            keywords: Keywords::new(),
+            attributes: Attributes::new(),
+        }
+    }
+
+    /// A constructor which takes a str slice, parses it and
+    /// produces a well-formed [`Unicode`].
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let mut iter = SubtagIterator::new(code_units);
+
+        let ext = iter.next().ok_or(ParseError::InvalidExtension)?;
+        if let ExtensionType::Unicode = ExtensionType::try_from_byte_slice(ext)? {
+            return Self::try_from_iter(&mut iter);
+        }
+
+        Err(ParseError::InvalidExtension)
+    }
+
+    /// Returns [`true`] if there list of keywords and attributes is empty.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// let loc: Locale = "en-US-u-foo".parse().expect("Parsing failed.");
+    ///
+    /// assert!(!loc.extensions.unicode.is_empty());
+    /// ```
+    pub fn is_empty(&self) -> bool {
+        self.keywords.is_empty() && self.attributes.is_empty()
+    }
+
+    /// Clears all Unicode extension keywords and attributes, effectively removing
+    /// the Unicode extension.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// let mut loc: Locale =
+    ///     "und-t-mul-u-hello-ca-buddhist-hc-h12".parse().unwrap();
+    /// loc.extensions.unicode.clear();
+    /// assert_eq!(loc, "und-t-mul".parse().unwrap());
+    /// ```
+    pub fn clear(&mut self) {
+        self.keywords.clear();
+        self.attributes.clear();
+    }
+
+    pub(crate) fn as_tuple(&self) -> (&Attributes, &Keywords) {
+        (&self.attributes, &self.keywords)
+    }
+
+    /// Returns an ordering suitable for use in [`BTreeSet`].
+    ///
+    /// The ordering may or may not be equivalent to string ordering, and it
+    /// may or may not be stable across ICU4X releases.
+    ///
+    /// [`BTreeSet`]: alloc::collections::BTreeSet
+    pub fn total_cmp(&self, other: &Self) -> Ordering {
+        self.as_tuple().cmp(&other.as_tuple())
+    }
+
+    #[cfg(feature = "alloc")]
+    pub(crate) fn try_from_iter(iter: &mut SubtagIterator) -> Result<Self, ParseError> {
+        let attributes = Attributes::try_from_iter(iter)?;
+        let keywords = Keywords::try_from_iter(iter)?;
+
+        // Ensure we've defined at least one attribute or keyword
+        if attributes.is_empty() && keywords.is_empty() {
+            return Err(ParseError::InvalidExtension);
+        }
+
+        Ok(Self {
+            keywords,
+            attributes,
+        })
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F, with_ext: bool) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        if !self.is_empty() {
+            if with_ext {
+                f(UNICODE_EXT_STR)?;
+            }
+            self.attributes.for_each_subtag_str(f)?;
+            self.keywords.for_each_subtag_str(f)?;
+        }
+        Ok(())
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for Unicode {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+writeable::impl_display_with_writeable!(Unicode);
+
+impl writeable::Writeable for Unicode {
+    fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
+        sink.write_char(UNICODE_EXT_CHAR)?;
+
+        if !self.attributes.is_empty() {
+            sink.write_char('-')?;
+            writeable::Writeable::write_to(&self.attributes, sink)?;
+        }
+        if !self.keywords.is_empty() {
+            sink.write_char('-')?;
+            writeable::Writeable::write_to(&self.keywords, sink)?;
+        }
+        Ok(())
+    }
+
+    fn writeable_length_hint(&self) -> writeable::LengthHint {
+        if self.is_empty() {
+            return writeable::LengthHint::exact(0);
+        }
+        let mut result = writeable::LengthHint::exact(1);
+        if !self.attributes.is_empty() {
+            result += writeable::Writeable::writeable_length_hint(&self.attributes) + 1;
+        }
+        if !self.keywords.is_empty() {
+            result += writeable::Writeable::writeable_length_hint(&self.keywords) + 1;
+        }
+        result
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_unicode_extension_fromstr() {
+        let ue: Unicode = "u-foo-hc-h12".parse().expect("Failed to parse Unicode");
+        assert_eq!(ue.to_string(), "u-foo-hc-h12");
+
+        let ue: Result<Unicode, _> = "u".parse();
+        assert!(ue.is_err());
+    }
+}
diff --git a/vendor/icu_locale_core/src/extensions/unicode/subdivision.rs b/vendor/icu_locale_core/src/extensions/unicode/subdivision.rs
new file mode 100644
index 00000000..5855fed7
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/unicode/subdivision.rs
@@ -0,0 +1,181 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::str::FromStr;
+
+use crate::parser::ParseError;
+use crate::subtags::{Region, Subtag};
+
+impl_tinystr_subtag!(
+    /// A subdivision suffix used in [`SubdivisionId`].
+    ///
+    /// This suffix represents a specific subdivision code under a given [`Region`].
+    /// For example the value of [`SubdivisionId`] may be `gbsct`, where the [`SubdivisionSuffix`]
+    /// is `sct` for Scotland.
+    ///
+    /// Such a value associated with a key `rg` means that the locale should use Unit Preferences
+    /// (default calendar, currency, week data, time cycle, measurement system) for Scotland, even if the
+    /// [`LanguageIdentifier`](crate::LanguageIdentifier) is `en-US`.
+    ///
+    /// A subdivision suffix has to be a sequence of alphanumerical characters no
+    /// shorter than one and no longer than four characters.
+    ///
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::{subdivision_suffix, SubdivisionSuffix};
+    ///
+    /// let ss: SubdivisionSuffix =
+    ///     "sct".parse().expect("Failed to parse a SubdivisionSuffix.");
+    ///
+    /// assert_eq!(ss, subdivision_suffix!("sct"));
+    /// ```
+    SubdivisionSuffix,
+    extensions::unicode,
+    subdivision_suffix,
+    extensions_unicode_subdivision_suffix,
+    1..=4,
+    s,
+    s.is_ascii_alphanumeric(),
+    s.to_ascii_lowercase(),
+    s.is_ascii_alphanumeric() && s.is_ascii_lowercase(),
+    InvalidExtension,
+    ["sct"],
+    ["toolooong"],
+);
+
+/// A Subivision Id as defined in [`Unicode Locale Identifier`].
+///
+/// Subdivision Id is used in [`Unicode`] extensions:
+///  * `rg` - Regional Override
+///  * `sd` - Regional Subdivision
+///
+/// In both cases the subdivision is composed of a [`Region`] and a [`SubdivisionSuffix`] which represents
+/// different meaning depending on the key.
+///
+/// [`Unicode Locale Identifier`]: https://unicode.org/reports/tr35/tr35.html#unicode_subdivision_id
+/// [`Unicode`]: crate::extensions::unicode::Unicode
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::{
+///     extensions::unicode::{subdivision_suffix, SubdivisionId},
+///     subtags::region,
+/// };
+///
+/// let ss = subdivision_suffix!("zzzz");
+/// let region = region!("gb");
+///
+/// let si = SubdivisionId::new(region, ss);
+///
+/// assert_eq!(si.to_string(), "gbzzzz");
+/// ```
+#[derive(Debug, PartialEq, Eq, Clone, Hash, PartialOrd, Ord, Copy)]
+#[non_exhaustive]
+pub struct SubdivisionId {
+    /// A region field of a Subdivision Id.
+    pub region: Region,
+    /// A subdivision suffix field of a Subdivision Id.
+    pub suffix: SubdivisionSuffix,
+}
+
+impl SubdivisionId {
+    /// Returns a new [`SubdivisionId`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::{
+    ///     extensions::unicode::{subdivision_suffix, SubdivisionId},
+    ///     subtags::region,
+    /// };
+    ///
+    /// let ss = subdivision_suffix!("zzzz");
+    /// let region = region!("gb");
+    ///
+    /// let si = SubdivisionId::new(region, ss);
+    ///
+    /// assert_eq!(si.to_string(), "gbzzzz");
+    /// ```
+    pub const fn new(region: Region, suffix: SubdivisionSuffix) -> Self {
+        Self { region, suffix }
+    }
+
+    /// A constructor which takes a str slice, parses it and
+    /// produces a well-formed [`SubdivisionId`].
+    #[inline]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let is_alpha = code_units
+            .first()
+            .and_then(|b| {
+                b.is_ascii_alphabetic()
+                    .then_some(true)
+                    .or_else(|| b.is_ascii_digit().then_some(false))
+            })
+            .ok_or(ParseError::InvalidExtension)?;
+        let region_len = if is_alpha { 2 } else { 3 };
+        let (region_code_units, suffix_code_units) = code_units
+            .split_at_checked(region_len)
+            .ok_or(ParseError::InvalidExtension)?;
+        let region =
+            Region::try_from_utf8(region_code_units).map_err(|_| ParseError::InvalidExtension)?;
+        let suffix = SubdivisionSuffix::try_from_utf8(suffix_code_units)?;
+        Ok(Self { region, suffix })
+    }
+
+    /// Convert to [`Subtag`]
+    pub fn into_subtag(self) -> Subtag {
+        let result = self.region.to_tinystr().concat(self.suffix.to_tinystr());
+        Subtag::from_tinystr_unvalidated(result)
+    }
+}
+
+impl writeable::Writeable for SubdivisionId {
+    #[inline]
+    fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
+        sink.write_str(self.region.to_tinystr().to_ascii_lowercase().as_str())?;
+        sink.write_str(self.suffix.as_str())
+    }
+
+    #[inline]
+    fn writeable_length_hint(&self) -> writeable::LengthHint {
+        self.region.writeable_length_hint() + self.suffix.writeable_length_hint()
+    }
+}
+
+writeable::impl_display_with_writeable!(SubdivisionId);
+
+impl FromStr for SubdivisionId {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_subdivisionid_fromstr() {
+        let si: SubdivisionId = "gbzzzz".parse().expect("Failed to parse SubdivisionId");
+        assert_eq!(si.region.to_string(), "GB");
+        assert_eq!(si.suffix.to_string(), "zzzz");
+        assert_eq!(si.to_string(), "gbzzzz");
+
+        for sample in ["", "gb", "o"] {
+            let oe: Result<SubdivisionId, _> = sample.parse();
+            assert!(oe.is_err(), "Should fail: {}", sample);
+        }
+    }
+}
diff --git a/vendor/icu_locale_core/src/extensions/unicode/value.rs b/vendor/icu_locale_core/src/extensions/unicode/value.rs
new file mode 100644
index 00000000..c2f33810
--- /dev/null
+++ b/vendor/icu_locale_core/src/extensions/unicode/value.rs
@@ -0,0 +1,354 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::parser::ParseError;
+#[cfg(feature = "alloc")]
+use crate::parser::SubtagIterator;
+use crate::shortvec::{ShortBoxSlice, ShortBoxSliceIntoIter};
+use crate::subtags::{subtag, Subtag};
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+/// A value used in a list of [`Keywords`](super::Keywords).
+///
+/// The value has to be a sequence of one or more alphanumerical strings
+/// separated by `-`.
+/// Each part of the sequence has to be no shorter than three characters and no
+/// longer than 8.
+///
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::extensions::unicode::{value, Value};
+/// use writeable::assert_writeable_eq;
+///
+/// assert_writeable_eq!(value!("gregory"), "gregory");
+/// assert_writeable_eq!(
+///     "islamic-civil".parse::<Value>().unwrap(),
+///     "islamic-civil"
+/// );
+///
+/// // The value "true" has the special, empty string representation
+/// assert_eq!(value!("true").to_string(), "");
+/// ```
+#[derive(Debug, PartialEq, Eq, Clone, Hash, PartialOrd, Ord, Default)]
+pub struct Value(ShortBoxSlice<Subtag>);
+
+const TRUE_VALUE: Subtag = subtag!("true");
+
+impl Value {
+    /// A constructor which str slice, parses it and
+    /// produces a well-formed [`Value`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::Value;
+    ///
+    /// Value::try_from_str("buddhist").expect("Parsing failed.");
+    /// ```
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        let mut v = ShortBoxSlice::new();
+
+        if !code_units.is_empty() {
+            for chunk in SubtagIterator::new(code_units) {
+                let subtag = Subtag::try_from_utf8(chunk)?;
+                if subtag != TRUE_VALUE {
+                    v.push(subtag);
+                }
+            }
+        }
+        Ok(Self(v))
+    }
+
+    /// Returns a reference to a single [`Subtag`] if the [`Value`] contains exactly one
+    /// subtag, or `None` otherwise.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use core::str::FromStr;
+    /// use icu::locale::extensions::unicode::Value;
+    ///
+    /// let value1 = Value::from_str("foo").expect("failed to parse a Value");
+    /// let value2 = Value::from_str("foo-bar").expect("failed to parse a Value");
+    ///
+    /// assert!(value1.as_single_subtag().is_some());
+    /// assert!(value2.as_single_subtag().is_none());
+    /// ```
+    pub const fn as_single_subtag(&self) -> Option<&Subtag> {
+        self.0.single()
+    }
+
+    /// Destructs into a single [`Subtag`] if the [`Value`] contains exactly one
+    /// subtag, or returns `None` otherwise.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use core::str::FromStr;
+    /// use icu::locale::extensions::unicode::Value;
+    ///
+    /// let value1 = Value::from_str("foo").expect("failed to parse a Value");
+    /// let value2 = Value::from_str("foo-bar").expect("failed to parse a Value");
+    ///
+    /// assert!(value1.into_single_subtag().is_some());
+    /// assert!(value2.into_single_subtag().is_none());
+    /// ```
+    pub fn into_single_subtag(self) -> Option<Subtag> {
+        self.0.into_single()
+    }
+
+    #[doc(hidden)]
+    pub fn as_subtags_slice(&self) -> &[Subtag] {
+        &self.0
+    }
+
+    /// Appends a subtag to the back of a [`Value`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::{extensions::unicode::Value, subtags::subtag};
+    ///
+    /// let mut v = Value::default();
+    /// v.push_subtag(subtag!("foo"));
+    /// v.push_subtag(subtag!("bar"));
+    /// assert_eq!(v, "foo-bar");
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn push_subtag(&mut self, subtag: Subtag) {
+        self.0.push(subtag);
+    }
+
+    /// Returns the number of subtags in the [`Value`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::{extensions::unicode::Value, subtags::subtag};
+    ///
+    /// let mut v = Value::default();
+    /// assert_eq!(v.subtag_count(), 0);
+    /// v.push_subtag(subtag!("foo"));
+    /// assert_eq!(v.subtag_count(), 1);
+    /// ```
+    pub fn subtag_count(&self) -> usize {
+        self.0.len()
+    }
+
+    /// Creates an empty [`Value`], which corresponds to a "true" value.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::{value, Value};
+    ///
+    /// assert_eq!(value!("true"), Value::new_empty());
+    /// ```
+    pub const fn new_empty() -> Self {
+        Self(ShortBoxSlice::new())
+    }
+
+    /// Returns `true` if the Value has no subtags.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::{extensions::unicode::Value, subtags::subtag};
+    ///
+    /// let mut v = Value::default();
+    /// assert_eq!(v.is_empty(), true);
+    /// ```
+    pub fn is_empty(&self) -> bool {
+        self.0.is_empty()
+    }
+
+    /// Removes and returns the subtag at position `index` within the value,
+    /// shifting all subtags after it to the left.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::{extensions::unicode::Value, subtags::subtag};
+    /// let mut v = Value::default();
+    /// v.push_subtag(subtag!("foo"));
+    /// v.push_subtag(subtag!("bar"));
+    /// v.push_subtag(subtag!("baz"));
+    ///
+    /// assert_eq!(v.remove_subtag(1), Some(subtag!("bar")));
+    /// assert_eq!(v, "foo-baz");
+    /// ```
+    pub fn remove_subtag(&mut self, idx: usize) -> Option<Subtag> {
+        if self.0.len() < idx {
+            None
+        } else {
+            let item = self.0.remove(idx);
+            Some(item)
+        }
+    }
+
+    /// Returns a reference to a subtag at index.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::{extensions::unicode::Value, subtags::subtag};
+    /// let mut v = Value::default();
+    /// v.push_subtag(subtag!("foo"));
+    /// v.push_subtag(subtag!("bar"));
+    /// v.push_subtag(subtag!("baz"));
+    ///
+    /// assert_eq!(v.get_subtag(1), Some(&subtag!("bar")));
+    /// assert_eq!(v.get_subtag(3), None);
+    /// ```
+    pub fn get_subtag(&self, idx: usize) -> Option<&Subtag> {
+        self.0.get(idx)
+    }
+
+    #[doc(hidden)]
+    pub const fn from_subtag(subtag: Option<Subtag>) -> Self {
+        match subtag {
+            None | Some(TRUE_VALUE) => Self(ShortBoxSlice::new()),
+            Some(val) => Self(ShortBoxSlice::new_single(val)),
+        }
+    }
+
+    /// A constructor which takes a pre-sorted list of [`Value`] elements.
+    ///
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::Value;
+    /// use icu::locale::subtags::subtag;
+    ///
+    /// let subtag1 = subtag!("foobar");
+    /// let subtag2 = subtag!("testing");
+    /// let mut v = vec![subtag1, subtag2];
+    /// v.sort();
+    /// v.dedup();
+    ///
+    /// let value = Value::from_vec_unchecked(v);
+    /// ```
+    ///
+    /// Notice: For performance- and memory-constrained environments, it is recommended
+    /// for the caller to use [`binary_search`](slice::binary_search) instead of [`sort`](slice::sort)
+    /// and [`dedup`](Vec::dedup()).
+    #[cfg(feature = "alloc")]
+    pub fn from_vec_unchecked(input: Vec<Subtag>) -> Self {
+        Self(input.into())
+    }
+
+    #[allow(dead_code)]
+    pub(crate) fn from_short_slice_unchecked(input: ShortBoxSlice<Subtag>) -> Self {
+        Self(input)
+    }
+
+    pub(crate) const fn parse_subtag_from_utf8(t: &[u8]) -> Result<Option<Subtag>, ParseError> {
+        match Subtag::try_from_utf8(t) {
+            Ok(TRUE_VALUE) => Ok(None),
+            Ok(s) => Ok(Some(s)),
+            Err(_) => Err(ParseError::InvalidSubtag),
+        }
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        self.0.iter().map(Subtag::as_str).try_for_each(f)
+    }
+}
+
+impl IntoIterator for Value {
+    type Item = Subtag;
+
+    type IntoIter = ShortBoxSliceIntoIter<Subtag>;
+
+    fn into_iter(self) -> Self::IntoIter {
+        self.0.into_iter()
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromIterator<Subtag> for Value {
+    fn from_iter<T: IntoIterator<Item = Subtag>>(iter: T) -> Self {
+        Self(ShortBoxSlice::from_iter(iter))
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl Extend<Subtag> for Value {
+    fn extend<T: IntoIterator<Item = Subtag>>(&mut self, iter: T) {
+        for i in iter {
+            self.0.push(i);
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for Value {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+impl PartialEq<&str> for Value {
+    fn eq(&self, other: &&str) -> bool {
+        writeable::cmp_utf8(self, other.as_bytes()).is_eq()
+    }
+}
+
+impl_writeable_for_subtag_list!(Value, "islamic", "civil");
+
+/// A macro allowing for compile-time construction of valid Unicode [`Value`] subtag.
+///
+/// The macro only supports single-subtag values.
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::extensions::unicode::{key, value};
+/// use icu::locale::Locale;
+///
+/// let loc: Locale = "de-u-ca-buddhist".parse().unwrap();
+///
+/// assert_eq!(
+///     loc.extensions.unicode.keywords.get(&key!("ca")),
+///     Some(&value!("buddhist"))
+/// );
+/// ```
+///
+/// [`Value`]: crate::extensions::unicode::Value
+#[macro_export]
+#[doc(hidden)] // macro
+macro_rules! extensions_unicode_value {
+    ($value:literal) => {
+        const {
+            $crate::extensions::unicode::Value::from_subtag(
+                match $crate::subtags::Subtag::try_from_utf8($value.as_bytes()) {
+                    Ok(r) => Some(r),
+                    _ => panic!(concat!("Invalid Unicode extension value: ", $value)),
+                },
+            )
+        }
+    };
+}
+#[doc(inline)]
+pub use extensions_unicode_value as value;
diff --git a/vendor/icu_locale_core/src/helpers.rs b/vendor/icu_locale_core/src/helpers.rs
new file mode 100644
index 00000000..48522f4b
--- /dev/null
+++ b/vendor/icu_locale_core/src/helpers.rs
@@ -0,0 +1,425 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+macro_rules! impl_tinystr_subtag {
+    (
+        $(#[$doc:meta])*
+        $name:ident,
+        $($path:ident)::+,
+        $macro_name:ident,
+        $internal_macro_name:ident,
+        $len_start:literal..=$len_end:literal,
+        $tinystr_ident:ident,
+        $validate:expr,
+        $normalize:expr,
+        $is_normalized:expr,
+        $error:ident,
+        [$good_example:literal $(,$more_good_examples:literal)*],
+        [$bad_example:literal $(, $more_bad_examples:literal)*],
+    ) => {
+        #[derive(Debug, PartialEq, Eq, Clone, Hash, PartialOrd, Ord, Copy)]
+        #[cfg_attr(feature = "serde", derive(serde::Serialize))]
+        #[repr(transparent)]
+        $(#[$doc])*
+        pub struct $name(tinystr::TinyAsciiStr<$len_end>);
+
+        impl $name {
+            /// A constructor which takes a str slice, parses it and
+            #[doc = concat!("produces a well-formed [`", stringify!($name), "`].")]
+            ///
+            /// # Examples
+            ///
+            /// ```
+            #[doc = concat!("use icu_locale_core::", stringify!($($path::)+), stringify!($name), ";")]
+            ///
+            #[doc = concat!("assert!(", stringify!($name), "::try_from_str(", stringify!($good_example), ").is_ok());")]
+            #[doc = concat!("assert!(", stringify!($name), "::try_from_str(", stringify!($bad_example), ").is_err());")]
+            /// ```
+            #[inline]
+            pub const fn try_from_str(s: &str) -> Result<Self, crate::parser::errors::ParseError> {
+                Self::try_from_utf8(s.as_bytes())
+            }
+
+            /// See [`Self::try_from_str`]
+            pub const fn try_from_utf8(
+                code_units: &[u8],
+            ) -> Result<Self, crate::parser::errors::ParseError> {
+                #[allow(clippy::double_comparisons)] // if code_units.len() === 0
+                if code_units.len() < $len_start || code_units.len() > $len_end {
+                    return Err(crate::parser::errors::ParseError::$error);
+                }
+
+                match tinystr::TinyAsciiStr::try_from_utf8(code_units) {
+                    Ok($tinystr_ident) if $validate => Ok(Self($normalize)),
+                    _ => Err(crate::parser::errors::ParseError::$error),
+                }
+            }
+
+            #[doc = concat!("Safely creates a [`", stringify!($name), "`] from its raw format")]
+            /// as returned by [`Self::into_raw`]. Unlike [`Self::try_from_utf8`],
+            /// this constructor only takes normalized values.
+            pub const fn try_from_raw(
+                raw: [u8; $len_end],
+            ) -> Result<Self, crate::parser::errors::ParseError> {
+                if let Ok($tinystr_ident) = tinystr::TinyAsciiStr::<$len_end>::try_from_raw(raw) {
+                    if $tinystr_ident.len() >= $len_start && $is_normalized {
+                        Ok(Self($tinystr_ident))
+                    } else {
+                        Err(crate::parser::errors::ParseError::$error)
+                    }
+                } else {
+                    Err(crate::parser::errors::ParseError::$error)
+                }
+            }
+
+            #[doc = concat!("Unsafely creates a [`", stringify!($name), "`] from its raw format")]
+            /// as returned by [`Self::into_raw`]. Unlike [`Self::try_from_utf8`],
+            /// this constructor only takes normalized values.
+            ///
+            /// # Safety
+            ///
+            /// This function is safe iff [`Self::try_from_raw`] returns an `Ok`. This is the case
+            /// for inputs that are correctly normalized.
+            pub const unsafe fn from_raw_unchecked(v: [u8; $len_end]) -> Self {
+                Self(tinystr::TinyAsciiStr::from_utf8_unchecked(v))
+            }
+
+            /// Deconstructs into a raw format to be consumed by
+            /// [`from_raw_unchecked`](Self::from_raw_unchecked()) or
+            /// [`try_from_raw`](Self::try_from_raw()).
+            pub const fn into_raw(self) -> [u8; $len_end] {
+                *self.0.all_bytes()
+            }
+
+            #[inline]
+            /// A helper function for displaying as a `&str`.
+            pub const fn as_str(&self) -> &str {
+                self.0.as_str()
+            }
+
+            #[doc(hidden)]
+            pub const fn to_tinystr(&self) -> tinystr::TinyAsciiStr<$len_end> {
+                self.0
+            }
+
+            /// Compare with BCP-47 bytes.
+            ///
+            /// The return value is equivalent to what would happen if you first converted
+            /// `self` to a BCP-47 string and then performed a byte comparison.
+            ///
+            /// This function is case-sensitive and results in a *total order*, so it is appropriate for
+            /// binary search. The only argument producing [`Ordering::Equal`](core::cmp::Ordering::Equal)
+            /// is `self.as_str().as_bytes()`.
+            #[inline]
+            pub fn strict_cmp(self, other: &[u8]) -> core::cmp::Ordering {
+                self.as_str().as_bytes().cmp(other)
+            }
+
+            /// Compare with a potentially unnormalized BCP-47 string.
+            ///
+            /// The return value is equivalent to what would happen if you first parsed the
+            /// BCP-47 string and then performed a structural comparison.
+            ///
+            #[inline]
+            pub fn normalizing_eq(self, other: &str) -> bool {
+                self.as_str().eq_ignore_ascii_case(other)
+            }
+        }
+
+        impl core::str::FromStr for $name {
+            type Err = crate::parser::errors::ParseError;
+
+            #[inline]
+            fn from_str(s: &str) -> Result<Self, Self::Err> {
+                Self::try_from_str(s)
+            }
+        }
+
+        impl<'l> From<&'l $name> for &'l str {
+            fn from(input: &'l $name) -> Self {
+                input.as_str()
+            }
+        }
+
+        impl From<$name> for tinystr::TinyAsciiStr<$len_end> {
+            fn from(input: $name) -> Self {
+                input.to_tinystr()
+            }
+        }
+
+        impl writeable::Writeable for $name {
+            #[inline]
+            fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
+                sink.write_str(self.as_str())
+            }
+            #[inline]
+            fn writeable_length_hint(&self) -> writeable::LengthHint {
+                writeable::LengthHint::exact(self.0.len())
+            }
+            #[inline]
+            #[cfg(feature = "alloc")]
+            fn write_to_string(&self) -> alloc::borrow::Cow<str> {
+                alloc::borrow::Cow::Borrowed(self.0.as_str())
+            }
+        }
+
+        writeable::impl_display_with_writeable!($name);
+
+        #[doc = concat!("A macro allowing for compile-time construction of valid [`", stringify!($name), "`] subtags.")]
+        ///
+        /// # Examples
+        ///
+        /// Parsing errors don't have to be handled at runtime:
+        /// ```
+        /// assert_eq!(
+        #[doc = concat!("  icu_locale_core::", $(stringify!($path), "::",)+ stringify!($macro_name), "!(", stringify!($good_example) ,"),")]
+        #[doc = concat!("  ", stringify!($good_example), ".parse::<icu_locale_core::", $(stringify!($path), "::",)+ stringify!($name), ">().unwrap()")]
+        /// );
+        /// ```
+        ///
+        /// Invalid input is a compile failure:
+        /// ```compile_fail,E0080
+        #[doc = concat!("icu_locale_core::", $(stringify!($path), "::",)+ stringify!($macro_name), "!(", stringify!($bad_example) ,");")]
+        /// ```
+        ///
+        #[doc = concat!("[`", stringify!($name), "`]: crate::", $(stringify!($path), "::",)+ stringify!($name))]
+        #[macro_export]
+        #[doc(hidden)] // macro
+        macro_rules! $internal_macro_name {
+            ($string:literal) => { const {
+                use $crate::$($path ::)+ $name;
+                match $name::try_from_utf8($string.as_bytes()) {
+                    Ok(r) => r,
+                    #[allow(clippy::panic)] // const context
+                    _ => panic!(concat!("Invalid ", $(stringify!($path), "::",)+ stringify!($name), ": ", $string)),
+                }
+            }};
+        }
+        #[doc(inline)]
+        pub use $internal_macro_name as $macro_name;
+
+        #[cfg(feature = "databake")]
+        impl databake::Bake for $name {
+            fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+                env.insert("icu_locale_core");
+                let string = self.as_str();
+                databake::quote! { icu_locale_core::$($path::)+ $macro_name!(#string) }
+            }
+        }
+
+        #[cfg(feature = "databake")]
+        impl databake::BakeSize for $name {
+            fn borrows_size(&self) -> usize {
+                0
+            }
+        }
+
+        #[test]
+        fn test_construction() {
+            let maybe = $name::try_from_utf8($good_example.as_bytes());
+            assert!(maybe.is_ok());
+            assert_eq!(maybe, $name::try_from_raw(maybe.unwrap().into_raw()));
+            assert_eq!(maybe.unwrap().as_str(), $good_example);
+            $(
+                let maybe = $name::try_from_utf8($more_good_examples.as_bytes());
+                assert!(maybe.is_ok());
+                assert_eq!(maybe, $name::try_from_raw(maybe.unwrap().into_raw()));
+                assert_eq!(maybe.unwrap().as_str(), $more_good_examples);
+            )*
+            assert!($name::try_from_utf8($bad_example.as_bytes()).is_err());
+            $(
+                assert!($name::try_from_utf8($more_bad_examples.as_bytes()).is_err());
+            )*
+        }
+
+        #[test]
+        fn test_writeable() {
+            writeable::assert_writeable_eq!(&$good_example.parse::<$name>().unwrap(), $good_example);
+            $(
+                writeable::assert_writeable_eq!($more_good_examples.parse::<$name>().unwrap(), $more_good_examples);
+            )*
+        }
+
+        #[cfg(feature = "serde")]
+        impl<'de> serde::Deserialize<'de> for $name {
+            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+            where
+                D: serde::de::Deserializer<'de>,
+            {
+                struct Visitor;
+
+                impl<'de> serde::de::Visitor<'de> for Visitor {
+                    type Value = $name;
+
+                    fn expecting(
+                        &self,
+                        formatter: &mut core::fmt::Formatter<'_>,
+                    ) -> core::fmt::Result {
+                        write!(formatter, "a valid BCP-47 {}", stringify!($name))
+                    }
+
+                    fn visit_str<E: serde::de::Error>(self, s: &str) -> Result<Self::Value, E> {
+                        s.parse().map_err(serde::de::Error::custom)
+                    }
+                }
+
+                if deserializer.is_human_readable() {
+                    deserializer.deserialize_string(Visitor)
+                } else {
+                    Self::try_from_raw(serde::de::Deserialize::deserialize(deserializer)?)
+                        .map_err(serde::de::Error::custom)
+                }
+            }
+        }
+
+        // Safety checklist for ULE:
+        //
+        // 1. Must not include any uninitialized or padding bytes (true since transparent over a ULE).
+        // 2. Must have an alignment of 1 byte (true since transparent over a ULE).
+        // 3. ULE::validate_bytes() checks that the given byte slice represents a valid slice.
+        // 4. ULE::validate_bytes() checks that the given byte slice has a valid length.
+        // 5. All other methods must be left with their default impl.
+        // 6. Byte equality is semantic equality.
+        #[cfg(feature = "zerovec")]
+        unsafe impl zerovec::ule::ULE for $name {
+            fn validate_bytes(bytes: &[u8]) -> Result<(), zerovec::ule::UleError> {
+                let it = bytes.chunks_exact(core::mem::size_of::<Self>());
+                if !it.remainder().is_empty() {
+                    return Err(zerovec::ule::UleError::length::<Self>(bytes.len()));
+                }
+                for v in it {
+                    // The following can be removed once `array_chunks` is stabilized.
+                    let mut a = [0; core::mem::size_of::<Self>()];
+                    a.copy_from_slice(v);
+                    if Self::try_from_raw(a).is_err() {
+                        return Err(zerovec::ule::UleError::parse::<Self>());
+                    }
+                }
+                Ok(())
+            }
+        }
+
+        #[cfg(feature = "zerovec")]
+        impl zerovec::ule::NicheBytes<$len_end> for $name {
+            const NICHE_BIT_PATTERN: [u8; $len_end] = <tinystr::TinyAsciiStr<$len_end>>::NICHE_BIT_PATTERN;
+        }
+
+        #[cfg(feature = "zerovec")]
+        impl zerovec::ule::AsULE for $name {
+            type ULE = Self;
+            fn to_unaligned(self) -> Self::ULE {
+                self
+            }
+            fn from_unaligned(unaligned: Self::ULE) -> Self {
+                unaligned
+            }
+        }
+
+        #[cfg(feature = "zerovec")]
+        impl<'a> zerovec::maps::ZeroMapKV<'a> for $name {
+            type Container = zerovec::ZeroVec<'a, $name>;
+            type Slice = zerovec::ZeroSlice<$name>;
+            type GetType = $name;
+            type OwnedType = $name;
+        }
+    };
+}
+
+#[macro_export]
+#[doc(hidden)]
+macro_rules! impl_writeable_for_each_subtag_str_no_test {
+    ($type:tt $(, $self:ident, $borrow_cond:expr => $borrow:expr)?) => {
+        impl writeable::Writeable for $type {
+            fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
+                let mut initial = true;
+                self.for_each_subtag_str(&mut |subtag| {
+                    if initial {
+                        initial = false;
+                    } else {
+                        sink.write_char('-')?;
+                    }
+                    sink.write_str(subtag)
+                })
+            }
+
+            #[inline]
+            fn writeable_length_hint(&self) -> writeable::LengthHint {
+                let mut result = writeable::LengthHint::exact(0);
+                let mut initial = true;
+                self.for_each_subtag_str::<core::convert::Infallible, _>(&mut |subtag| {
+                    if initial {
+                        initial = false;
+                    } else {
+                        result += 1;
+                    }
+                    result += subtag.len();
+                    Ok(())
+                })
+                .expect("infallible");
+                result
+            }
+
+            $(
+                #[cfg(feature = "alloc")]
+                fn write_to_string(&self) -> alloc::borrow::Cow<str> {
+                    #[allow(clippy::unwrap_used)] // impl_writeable_for_subtag_list's $borrow uses unwrap
+                    let $self = self;
+                    if $borrow_cond {
+                        $borrow
+                    } else {
+                        let mut output = alloc::string::String::with_capacity(self.writeable_length_hint().capacity());
+                        let _ = self.write_to(&mut output);
+                        alloc::borrow::Cow::Owned(output)
+                    }
+                }
+            )?
+        }
+
+        writeable::impl_display_with_writeable!($type);
+    };
+}
+
+macro_rules! impl_writeable_for_subtag_list {
+    ($type:tt, $sample1:literal, $sample2:literal) => {
+        impl_writeable_for_each_subtag_str_no_test!($type, selff, selff.0.len() == 1 => alloc::borrow::Cow::Borrowed(selff.0.get(0).unwrap().as_str()));
+
+        #[test]
+        fn test_writeable() {
+            writeable::assert_writeable_eq!(&$type::default(), "");
+            writeable::assert_writeable_eq!(
+                &$type::from_vec_unchecked(alloc::vec![$sample1.parse().unwrap()]),
+                $sample1,
+            );
+            writeable::assert_writeable_eq!(
+                &$type::from_vec_unchecked(vec![
+                    $sample1.parse().unwrap(),
+                    $sample2.parse().unwrap()
+                ]),
+                core::concat!($sample1, "-", $sample2),
+            );
+        }
+    };
+}
+
+macro_rules! impl_writeable_for_key_value {
+    ($type:tt, $key1:literal, $value1:literal, $key2:literal, $expected2:literal) => {
+        impl_writeable_for_each_subtag_str_no_test!($type);
+
+        #[test]
+        fn test_writeable() {
+            writeable::assert_writeable_eq!(&$type::default(), "");
+            writeable::assert_writeable_eq!(
+                &$type::from_tuple_vec(vec![($key1.parse().unwrap(), $value1.parse().unwrap())]),
+                core::concat!($key1, "-", $value1),
+            );
+            writeable::assert_writeable_eq!(
+                &$type::from_tuple_vec(vec![
+                    ($key1.parse().unwrap(), $value1.parse().unwrap()),
+                    ($key2.parse().unwrap(), "true".parse().unwrap())
+                ]),
+                core::concat!($key1, "-", $value1, "-", $expected2),
+            );
+        }
+    };
+}
diff --git a/vendor/icu_locale_core/src/langid.rs b/vendor/icu_locale_core/src/langid.rs
new file mode 100644
index 00000000..82ef5e0d
--- /dev/null
+++ b/vendor/icu_locale_core/src/langid.rs
@@ -0,0 +1,662 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::cmp::Ordering;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+use crate::parser;
+use crate::subtags;
+use crate::ParseError;
+#[cfg(feature = "alloc")]
+use alloc::borrow::Cow;
+
+/// A core struct representing a [`Unicode BCP47 Language Identifier`].
+///
+/// # Ordering
+///
+/// This type deliberately does not implement `Ord` or `PartialOrd` because there are
+/// multiple possible orderings. Depending on your use case, two orderings are available:
+///
+/// 1. A string ordering, suitable for stable serialization: [`LanguageIdentifier::strict_cmp`]
+/// 2. A struct ordering, suitable for use with a BTreeSet: [`LanguageIdentifier::total_cmp`]
+///
+/// See issue: <https://github.com/unicode-org/icu4x/issues/1215>
+///
+/// # Parsing
+///
+/// Unicode recognizes three levels of standard conformance for any language identifier:
+///
+///  * *well-formed* - syntactically correct
+///  * *valid* - well-formed and only uses registered language, region, script and variant subtags...
+///  * *canonical* - valid and no deprecated codes or structure.
+///
+/// At the moment parsing normalizes a well-formed language identifier converting
+/// `_` separators to `-` and adjusting casing to conform to the Unicode standard.
+///
+/// Any syntactically invalid subtags will cause the parsing to fail with an error.
+///
+/// This operation normalizes syntax to be well-formed. No legacy subtag replacements is performed.
+/// For validation and canonicalization, see `LocaleCanonicalizer`.
+///
+/// # Examples
+///
+/// Simple example:
+///
+/// ```
+/// use icu::locale::{
+///     langid,
+///     subtags::{language, region},
+/// };
+///
+/// let li = langid!("en-US");
+///
+/// assert_eq!(li.language, language!("en"));
+/// assert_eq!(li.script, None);
+/// assert_eq!(li.region, Some(region!("US")));
+/// assert_eq!(li.variants.len(), 0);
+/// ```
+///
+/// More complex example:
+///
+/// ```
+/// use icu::locale::{
+///     langid,
+///     subtags::{language, region, script, variant},
+/// };
+///
+/// let li = langid!("eN-latn-Us-Valencia");
+///
+/// assert_eq!(li.language, language!("en"));
+/// assert_eq!(li.script, Some(script!("Latn")));
+/// assert_eq!(li.region, Some(region!("US")));
+/// assert_eq!(li.variants.get(0), Some(&variant!("valencia")));
+/// ```
+///
+/// [`Unicode BCP47 Language Identifier`]: https://unicode.org/reports/tr35/tr35.html#Unicode_language_identifier
+#[derive(PartialEq, Eq, Clone, Hash)] // no Ord or PartialOrd: see docs
+#[allow(clippy::exhaustive_structs)] // This struct is stable (and invoked by a macro)
+pub struct LanguageIdentifier {
+    /// Language subtag of the language identifier.
+    pub language: subtags::Language,
+    /// Script subtag of the language identifier.
+    pub script: Option<subtags::Script>,
+    /// Region subtag of the language identifier.
+    pub region: Option<subtags::Region>,
+    /// Variant subtags of the language identifier.
+    pub variants: subtags::Variants,
+}
+
+impl LanguageIdentifier {
+    /// The unknown language identifier "und".
+    pub const UNKNOWN: Self = crate::langid!("und");
+
+    /// A constructor which takes a utf8 slice, parses it and
+    /// produces a well-formed [`LanguageIdentifier`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::LanguageIdentifier;
+    ///
+    /// LanguageIdentifier::try_from_str("en-US").expect("Parsing failed");
+    /// ```
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        crate::parser::parse_language_identifier(code_units, parser::ParserMode::LanguageIdentifier)
+    }
+
+    #[doc(hidden)] // macro use
+    #[allow(clippy::type_complexity)]
+    // The return type should be `Result<Self, ParseError>` once the `const_precise_live_drops`
+    // is stabilized ([rust-lang#73255](https://github.com/rust-lang/rust/issues/73255)).
+    pub const fn try_from_utf8_with_single_variant(
+        code_units: &[u8],
+    ) -> Result<
+        (
+            subtags::Language,
+            Option<subtags::Script>,
+            Option<subtags::Region>,
+            Option<subtags::Variant>,
+        ),
+        ParseError,
+    > {
+        crate::parser::parse_language_identifier_with_single_variant(
+            code_units,
+            parser::ParserMode::LanguageIdentifier,
+        )
+    }
+
+    /// A constructor which takes a utf8 slice which may contain extension keys,
+    /// parses it and produces a well-formed [`LanguageIdentifier`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::{langid, LanguageIdentifier};
+    ///
+    /// let li = LanguageIdentifier::try_from_locale_bytes(b"en-US-x-posix")
+    ///     .expect("Parsing failed.");
+    ///
+    /// assert_eq!(li, langid!("en-US"));
+    /// ```
+    ///
+    /// This method should be used for input that may be a locale identifier.
+    /// All extensions will be lost.
+    #[cfg(feature = "alloc")]
+    pub fn try_from_locale_bytes(v: &[u8]) -> Result<Self, ParseError> {
+        parser::parse_language_identifier(v, parser::ParserMode::Locale)
+    }
+
+    /// Whether this [`LanguageIdentifier`] equals [`LanguageIdentifier::UNKNOWN`].
+    pub const fn is_unknown(&self) -> bool {
+        self.language.is_unknown()
+            && self.script.is_none()
+            && self.region.is_none()
+            && self.variants.is_empty()
+    }
+
+    /// Normalize the language identifier (operating on UTF-8 formatted byte slices)
+    ///
+    /// This operation will normalize casing and the separator.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::LanguageIdentifier;
+    ///
+    /// assert_eq!(
+    ///     LanguageIdentifier::normalize("pL-latn-pl").as_deref(),
+    ///     Ok("pl-Latn-PL")
+    /// );
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn normalize_utf8(input: &[u8]) -> Result<Cow<str>, ParseError> {
+        let lang_id = Self::try_from_utf8(input)?;
+        Ok(writeable::to_string_or_borrow(&lang_id, input))
+    }
+
+    /// Normalize the language identifier (operating on strings)
+    ///
+    /// This operation will normalize casing and the separator.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::LanguageIdentifier;
+    ///
+    /// assert_eq!(
+    ///     LanguageIdentifier::normalize("pL-latn-pl").as_deref(),
+    ///     Ok("pl-Latn-PL")
+    /// );
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn normalize(input: &str) -> Result<Cow<str>, ParseError> {
+        Self::normalize_utf8(input.as_bytes())
+    }
+
+    /// Compare this [`LanguageIdentifier`] with BCP-47 bytes.
+    ///
+    /// The return value is equivalent to what would happen if you first converted this
+    /// [`LanguageIdentifier`] to a BCP-47 string and then performed a byte comparison.
+    ///
+    /// This function is case-sensitive and results in a *total order*, so it is appropriate for
+    /// binary search. The only argument producing [`Ordering::Equal`] is `self.to_string()`.
+    ///
+    /// # Examples
+    ///
+    /// Sorting a list of langids with this method requires converting one of them to a string:
+    ///
+    /// ```
+    /// use icu::locale::LanguageIdentifier;
+    /// use std::cmp::Ordering;
+    /// use writeable::Writeable;
+    ///
+    /// // Random input order:
+    /// let bcp47_strings: &[&str] = &[
+    ///     "ar-Latn",
+    ///     "zh-Hant-TW",
+    ///     "zh-TW",
+    ///     "und-fonipa",
+    ///     "zh-Hant",
+    ///     "ar-SA",
+    /// ];
+    ///
+    /// let mut langids = bcp47_strings
+    ///     .iter()
+    ///     .map(|s| s.parse().unwrap())
+    ///     .collect::<Vec<LanguageIdentifier>>();
+    /// langids.sort_by(|a, b| {
+    ///     let b = b.write_to_string();
+    ///     a.strict_cmp(b.as_bytes())
+    /// });
+    /// let strict_cmp_strings = langids
+    ///     .iter()
+    ///     .map(|l| l.to_string())
+    ///     .collect::<Vec<String>>();
+    ///
+    /// // Output ordering, sorted alphabetically
+    /// let expected_ordering: &[&str] = &[
+    ///     "ar-Latn",
+    ///     "ar-SA",
+    ///     "und-fonipa",
+    ///     "zh-Hant",
+    ///     "zh-Hant-TW",
+    ///     "zh-TW",
+    /// ];
+    ///
+    /// assert_eq!(expected_ordering, strict_cmp_strings);
+    /// ```
+    pub fn strict_cmp(&self, other: &[u8]) -> Ordering {
+        writeable::cmp_utf8(self, other)
+    }
+
+    pub(crate) fn as_tuple(
+        &self,
+    ) -> (
+        subtags::Language,
+        Option<subtags::Script>,
+        Option<subtags::Region>,
+        &subtags::Variants,
+    ) {
+        (self.language, self.script, self.region, &self.variants)
+    }
+
+    /// Compare this [`LanguageIdentifier`] with another [`LanguageIdentifier`] field-by-field.
+    /// The result is a total ordering sufficient for use in a [`BTreeSet`].
+    ///
+    /// Unlike [`LanguageIdentifier::strict_cmp`], the ordering may or may not be equivalent
+    /// to string ordering, and it may or may not be stable across ICU4X releases.
+    ///
+    /// # Examples
+    ///
+    /// This method returns a nonsensical ordering derived from the fields of the struct:
+    ///
+    /// ```
+    /// use icu::locale::LanguageIdentifier;
+    /// use std::cmp::Ordering;
+    ///
+    /// // Input strings, sorted alphabetically
+    /// let bcp47_strings: &[&str] = &[
+    ///     "ar-Latn",
+    ///     "ar-SA",
+    ///     "und-fonipa",
+    ///     "zh-Hant",
+    ///     "zh-Hant-TW",
+    ///     "zh-TW",
+    /// ];
+    /// assert!(bcp47_strings.windows(2).all(|w| w[0] < w[1]));
+    ///
+    /// let mut langids = bcp47_strings
+    ///     .iter()
+    ///     .map(|s| s.parse().unwrap())
+    ///     .collect::<Vec<LanguageIdentifier>>();
+    /// langids.sort_by(LanguageIdentifier::total_cmp);
+    /// let total_cmp_strings = langids
+    ///     .iter()
+    ///     .map(|l| l.to_string())
+    ///     .collect::<Vec<String>>();
+    ///
+    /// // Output ordering, sorted arbitrarily
+    /// let expected_ordering: &[&str] = &[
+    ///     "ar-SA",
+    ///     "ar-Latn",
+    ///     "und-fonipa",
+    ///     "zh-TW",
+    ///     "zh-Hant",
+    ///     "zh-Hant-TW",
+    /// ];
+    ///
+    /// assert_eq!(expected_ordering, total_cmp_strings);
+    /// ```
+    ///
+    /// Use a wrapper to add a [`LanguageIdentifier`] to a [`BTreeSet`]:
+    ///
+    /// ```no_run
+    /// use icu::locale::LanguageIdentifier;
+    /// use std::cmp::Ordering;
+    /// use std::collections::BTreeSet;
+    ///
+    /// #[derive(PartialEq, Eq)]
+    /// struct LanguageIdentifierTotalOrd(LanguageIdentifier);
+    ///
+    /// impl Ord for LanguageIdentifierTotalOrd {
+    ///     fn cmp(&self, other: &Self) -> Ordering {
+    ///         self.0.total_cmp(&other.0)
+    ///     }
+    /// }
+    ///
+    /// impl PartialOrd for LanguageIdentifierTotalOrd {
+    ///     fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+    ///         Some(self.cmp(other))
+    ///     }
+    /// }
+    ///
+    /// let _: BTreeSet<LanguageIdentifierTotalOrd> = unimplemented!();
+    /// ```
+    ///
+    /// [`BTreeSet`]: alloc::collections::BTreeSet
+    pub fn total_cmp(&self, other: &Self) -> Ordering {
+        self.as_tuple().cmp(&other.as_tuple())
+    }
+
+    /// Compare this `LanguageIdentifier` with a potentially unnormalized BCP-47 string.
+    ///
+    /// The return value is equivalent to what would happen if you first parsed the
+    /// BCP-47 string to a `LanguageIdentifier` and then performed a structural comparison.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::LanguageIdentifier;
+    ///
+    /// let bcp47_strings: &[&str] = &[
+    ///     "pl-LaTn-pL",
+    ///     "uNd",
+    ///     "UnD-adlm",
+    ///     "uNd-GB",
+    ///     "UND-FONIPA",
+    ///     "ZH",
+    /// ];
+    ///
+    /// for a in bcp47_strings {
+    ///     assert!(a.parse::<LanguageIdentifier>().unwrap().normalizing_eq(a));
+    /// }
+    /// ```
+    pub fn normalizing_eq(&self, other: &str) -> bool {
+        macro_rules! subtag_matches {
+            ($T:ty, $iter:ident, $expected:expr) => {
+                $iter
+                    .next()
+                    .map(|b| <$T>::try_from_utf8(b) == Ok($expected))
+                    .unwrap_or(false)
+            };
+        }
+
+        let mut iter = parser::SubtagIterator::new(other.as_bytes());
+        if !subtag_matches!(subtags::Language, iter, self.language) {
+            return false;
+        }
+        if let Some(ref script) = self.script {
+            if !subtag_matches!(subtags::Script, iter, *script) {
+                return false;
+            }
+        }
+        if let Some(ref region) = self.region {
+            if !subtag_matches!(subtags::Region, iter, *region) {
+                return false;
+            }
+        }
+        for variant in self.variants.iter() {
+            if !subtag_matches!(subtags::Variant, iter, *variant) {
+                return false;
+            }
+        }
+        iter.next().is_none()
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        f(self.language.as_str())?;
+        if let Some(ref script) = self.script {
+            f(script.as_str())?;
+        }
+        if let Some(ref region) = self.region {
+            f(region.as_str())?;
+        }
+        for variant in self.variants.iter() {
+            f(variant.as_str())?;
+        }
+        Ok(())
+    }
+
+    /// Executes `f` on each subtag string of this `LanguageIdentifier`, with every string in
+    /// lowercase ascii form.
+    ///
+    /// The default normalization of language identifiers uses titlecase scripts and uppercase
+    /// regions. However, this differs from [RFC6497 (BCP 47 Extension T)], which specifies:
+    ///
+    /// > _The canonical form for all subtags in the extension is lowercase, with the fields
+    /// > ordered by the separators, alphabetically._
+    ///
+    /// Hence, this method is used inside [`Transform Extensions`] to be able to get the correct
+    /// normalization of the language identifier.
+    ///
+    /// As an example, the canonical form of locale **EN-LATN-CA-T-EN-LATN-CA** is
+    /// **en-Latn-CA-t-en-latn-ca**, with the script and region parts lowercased inside T extensions,
+    /// but titlecased and uppercased outside T extensions respectively.
+    ///
+    /// [RFC6497 (BCP 47 Extension T)]: https://www.ietf.org/rfc/rfc6497.txt
+    /// [`Transform extensions`]: crate::extensions::transform
+    pub(crate) fn for_each_subtag_str_lowercased<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        f(self.language.as_str())?;
+        if let Some(ref script) = self.script {
+            f(script.to_tinystr().to_ascii_lowercase().as_str())?;
+        }
+        if let Some(ref region) = self.region {
+            f(region.to_tinystr().to_ascii_lowercase().as_str())?;
+        }
+        for variant in self.variants.iter() {
+            f(variant.as_str())?;
+        }
+        Ok(())
+    }
+
+    /// Writes this `LanguageIdentifier` to a sink, replacing uppercase ascii chars with
+    /// lowercase ascii chars.
+    ///
+    /// The default normalization of language identifiers uses titlecase scripts and uppercase
+    /// regions. However, this differs from [RFC6497 (BCP 47 Extension T)], which specifies:
+    ///
+    /// > _The canonical form for all subtags in the extension is lowercase, with the fields
+    /// > ordered by the separators, alphabetically._
+    ///
+    /// Hence, this method is used inside [`Transform Extensions`] to be able to get the correct
+    /// normalization of the language identifier.
+    ///
+    /// As an example, the canonical form of locale **EN-LATN-CA-T-EN-LATN-CA** is
+    /// **en-Latn-CA-t-en-latn-ca**, with the script and region parts lowercased inside T extensions,
+    /// but titlecased and uppercased outside T extensions respectively.
+    ///
+    /// [RFC6497 (BCP 47 Extension T)]: https://www.ietf.org/rfc/rfc6497.txt
+    /// [`Transform extensions`]: crate::extensions::transform
+    pub(crate) fn write_lowercased_to<W: core::fmt::Write + ?Sized>(
+        &self,
+        sink: &mut W,
+    ) -> core::fmt::Result {
+        let mut initial = true;
+        self.for_each_subtag_str_lowercased(&mut |subtag| {
+            if initial {
+                initial = false;
+            } else {
+                sink.write_char('-')?;
+            }
+            sink.write_str(subtag)
+        })
+    }
+}
+
+impl core::fmt::Debug for LanguageIdentifier {
+    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
+        core::fmt::Display::fmt(&self, f)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for LanguageIdentifier {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+impl_writeable_for_each_subtag_str_no_test!(LanguageIdentifier, selff, selff.script.is_none() && selff.region.is_none() && selff.variants.is_empty() => selff.language.write_to_string());
+
+#[test]
+fn test_writeable() {
+    use writeable::assert_writeable_eq;
+    assert_writeable_eq!(LanguageIdentifier::UNKNOWN, "und");
+    assert_writeable_eq!("und-001".parse::<LanguageIdentifier>().unwrap(), "und-001");
+    assert_writeable_eq!(
+        "und-Mymr".parse::<LanguageIdentifier>().unwrap(),
+        "und-Mymr",
+    );
+    assert_writeable_eq!(
+        "my-Mymr-MM".parse::<LanguageIdentifier>().unwrap(),
+        "my-Mymr-MM",
+    );
+    assert_writeable_eq!(
+        "my-Mymr-MM-posix".parse::<LanguageIdentifier>().unwrap(),
+        "my-Mymr-MM-posix",
+    );
+    assert_writeable_eq!(
+        "zh-macos-posix".parse::<LanguageIdentifier>().unwrap(),
+        "zh-macos-posix",
+    );
+}
+
+/// # Examples
+///
+/// ```
+/// use icu::locale::{langid, subtags::language, LanguageIdentifier};
+///
+/// assert_eq!(LanguageIdentifier::from(language!("en")), langid!("en"));
+/// ```
+impl From<subtags::Language> for LanguageIdentifier {
+    fn from(language: subtags::Language) -> Self {
+        Self {
+            language,
+            script: None,
+            region: None,
+            variants: subtags::Variants::new(),
+        }
+    }
+}
+
+/// # Examples
+///
+/// ```
+/// use icu::locale::{langid, subtags::script, LanguageIdentifier};
+///
+/// assert_eq!(
+///     LanguageIdentifier::from(Some(script!("latn"))),
+///     langid!("und-Latn")
+/// );
+/// ```
+impl From<Option<subtags::Script>> for LanguageIdentifier {
+    fn from(script: Option<subtags::Script>) -> Self {
+        Self {
+            language: subtags::Language::UNKNOWN,
+            script,
+            region: None,
+            variants: subtags::Variants::new(),
+        }
+    }
+}
+
+/// # Examples
+///
+/// ```
+/// use icu::locale::{langid, subtags::region, LanguageIdentifier};
+///
+/// assert_eq!(
+///     LanguageIdentifier::from(Some(region!("US"))),
+///     langid!("und-US")
+/// );
+/// ```
+impl From<Option<subtags::Region>> for LanguageIdentifier {
+    fn from(region: Option<subtags::Region>) -> Self {
+        Self {
+            language: subtags::Language::UNKNOWN,
+            script: None,
+            region,
+            variants: subtags::Variants::new(),
+        }
+    }
+}
+
+/// Convert from an LSR tuple to a [`LanguageIdentifier`].
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::{
+///     langid,
+///     subtags::{language, region, script},
+///     LanguageIdentifier,
+/// };
+///
+/// let lang = language!("en");
+/// let script = script!("Latn");
+/// let region = region!("US");
+/// assert_eq!(
+///     LanguageIdentifier::from((lang, Some(script), Some(region))),
+///     langid!("en-Latn-US")
+/// );
+/// ```
+impl
+    From<(
+        subtags::Language,
+        Option<subtags::Script>,
+        Option<subtags::Region>,
+    )> for LanguageIdentifier
+{
+    fn from(
+        lsr: (
+            subtags::Language,
+            Option<subtags::Script>,
+            Option<subtags::Region>,
+        ),
+    ) -> Self {
+        Self {
+            language: lsr.0,
+            script: lsr.1,
+            region: lsr.2,
+            variants: subtags::Variants::new(),
+        }
+    }
+}
+
+/// Convert from a [`LanguageIdentifier`] to an LSR tuple.
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::{
+///     langid,
+///     subtags::{language, region, script},
+/// };
+///
+/// let lid = langid!("en-Latn-US");
+/// let (lang, script, region) = (&lid).into();
+///
+/// assert_eq!(lang, language!("en"));
+/// assert_eq!(script, Some(script!("Latn")));
+/// assert_eq!(region, Some(region!("US")));
+/// ```
+impl From<&LanguageIdentifier>
+    for (
+        subtags::Language,
+        Option<subtags::Script>,
+        Option<subtags::Region>,
+    )
+{
+    fn from(langid: &LanguageIdentifier) -> Self {
+        (langid.language, langid.script, langid.region)
+    }
+}
diff --git a/vendor/icu_locale_core/src/lib.rs b/vendor/icu_locale_core/src/lib.rs
new file mode 100644
index 00000000..8e8a1304
--- /dev/null
+++ b/vendor/icu_locale_core/src/lib.rs
@@ -0,0 +1,96 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Parsing, manipulating, and serializing Unicode Language and Locale Identifiers.
+//!
+//! This module is published as its own crate ([`icu_locale_core`](https://docs.rs/icu_locale_core/latest/icu_locale_core/))
+//! and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
+//!
+//! The module provides algorithms for parsing a string into a well-formed language or locale identifier
+//! as defined by [`UTS #35: Unicode LDML 3. Unicode Language and Locale Identifiers`]. Additionally
+//! the module provides [`preferences`] interface for operations on locale preferences and conversions
+//! from and to locale unicode extensions.
+//!
+//! [`Locale`] is the most common structure to use for storing information about a language,
+//! script, region, variants and extensions. In almost all cases, this struct should be used as the
+//! base unit for all locale management operations.
+//!
+//! [`LanguageIdentifier`] is a strict subset of [`Locale`] which can be useful in a narrow range of
+//! cases where [`Unicode Extensions`] are not relevant.
+//!
+//! If in doubt, use [`Locale`].
+//!
+//! # Examples
+//!
+//! ```
+//! use icu::locale::Locale;
+//! use icu::locale::{
+//!     locale,
+//!     subtags::{language, region},
+//! };
+//!
+//! let mut loc: Locale = locale!("en-US");
+//!
+//! assert_eq!(loc.id.language, language!("en"));
+//! assert_eq!(loc.id.script, None);
+//! assert_eq!(loc.id.region, Some(region!("US")));
+//! assert_eq!(loc.id.variants.len(), 0);
+//!
+//! loc.id.region = Some(region!("GB"));
+//!
+//! assert_eq!(loc, locale!("en-GB"));
+//! ```
+//!
+//! For more details, see [`Locale`] and [`LanguageIdentifier`].
+//!
+//! [`UTS #35: Unicode LDML 3. Unicode Language and Locale Identifiers`]: https://unicode.org/reports/tr35/tr35.html#Unicode_Language_and_Locale_Identifiers
+//! [`ICU4X`]: ../icu/index.html
+//! [`Unicode Extensions`]: extensions
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+#![warn(missing_docs)]
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+#[macro_use]
+mod helpers;
+
+mod data;
+mod langid;
+mod locale;
+mod macros;
+mod parser;
+mod shortvec;
+
+pub use data::DataLocale;
+pub use langid::LanguageIdentifier;
+pub use locale::Locale;
+pub use parser::ParseError;
+
+pub mod extensions;
+#[macro_use]
+pub mod subtags;
+pub mod preferences;
+pub mod zerovec;
+
+#[cfg(feature = "serde")]
+mod serde;
+
+#[cfg(feature = "databake")]
+mod databake;
diff --git a/vendor/icu_locale_core/src/locale.rs b/vendor/icu_locale_core/src/locale.rs
new file mode 100644
index 00000000..437b6e60
--- /dev/null
+++ b/vendor/icu_locale_core/src/locale.rs
@@ -0,0 +1,605 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::parser::*;
+use crate::subtags::Subtag;
+use crate::{extensions, subtags, LanguageIdentifier};
+#[cfg(feature = "alloc")]
+use alloc::borrow::Cow;
+use core::cmp::Ordering;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+/// A core struct representing a [`Unicode Locale Identifier`].
+///
+/// A locale is made of two parts:
+///  * Unicode Language Identifier
+///  * A set of Unicode Extensions
+///
+/// [`Locale`] exposes all of the same fields and methods as [`LanguageIdentifier`], and
+/// on top of that is able to parse, manipulate and serialize unicode extension fields.
+///
+/// # Ordering
+///
+/// This type deliberately does not implement `Ord` or `PartialOrd` because there are
+/// multiple possible orderings. Depending on your use case, two orderings are available:
+///
+/// 1. A string ordering, suitable for stable serialization: [`Locale::strict_cmp`]
+/// 2. A struct ordering, suitable for use with a BTreeSet: [`Locale::total_cmp`]
+///
+/// See issue: <https://github.com/unicode-org/icu4x/issues/1215>
+///
+/// # Parsing
+///
+/// Unicode recognizes three levels of standard conformance for a locale:
+///
+///  * *well-formed* - syntactically correct
+///  * *valid* - well-formed and only uses registered language subtags, extensions, keywords, types...
+///  * *canonical* - valid and no deprecated codes or structure.
+///
+/// Any syntactically invalid subtags will cause the parsing to fail with an error.
+///
+/// This operation normalizes syntax to be well-formed. No legacy subtag replacements is performed.
+/// For validation and canonicalization, see `LocaleCanonicalizer`.
+///
+/// ICU4X's Locale parsing does not allow for non-BCP-47-compatible locales [allowed by UTS 35 for backwards compatability][tr35-bcp].
+/// Furthermore, it currently does not allow for language tags to have more than three characters.
+///
+/// # Examples
+///
+/// Simple example:
+///
+/// ```
+/// use icu::locale::{
+///     extensions::unicode::{key, value},
+///     locale,
+///     subtags::{language, region},
+/// };
+///
+/// let loc = locale!("en-US-u-ca-buddhist");
+///
+/// assert_eq!(loc.id.language, language!("en"));
+/// assert_eq!(loc.id.script, None);
+/// assert_eq!(loc.id.region, Some(region!("US")));
+/// assert_eq!(loc.id.variants.len(), 0);
+/// assert_eq!(
+///     loc.extensions.unicode.keywords.get(&key!("ca")),
+///     Some(&value!("buddhist"))
+/// );
+/// ```
+///
+/// More complex example:
+///
+/// ```
+/// use icu::locale::{subtags::*, Locale};
+///
+/// let loc: Locale = "eN-latn-Us-Valencia-u-hC-H12"
+///     .parse()
+///     .expect("Failed to parse.");
+///
+/// assert_eq!(loc.id.language, "en".parse::<Language>().unwrap());
+/// assert_eq!(loc.id.script, "Latn".parse::<Script>().ok());
+/// assert_eq!(loc.id.region, "US".parse::<Region>().ok());
+/// assert_eq!(
+///     loc.id.variants.get(0),
+///     "valencia".parse::<Variant>().ok().as_ref()
+/// );
+/// ```
+///
+/// [`Unicode Locale Identifier`]: https://unicode.org/reports/tr35/tr35.html#Unicode_locale_identifier
+/// [tr35-bcp]: https://unicode.org/reports/tr35/#BCP_47_Conformance
+#[derive(PartialEq, Eq, Clone, Hash)] // no Ord or PartialOrd: see docs
+#[allow(clippy::exhaustive_structs)] // This struct is stable (and invoked by a macro)
+pub struct Locale {
+    /// The basic language/script/region components in the locale identifier along with any variants.
+    pub id: LanguageIdentifier,
+    /// Any extensions present in the locale identifier.
+    pub extensions: extensions::Extensions,
+}
+
+#[test]
+fn test_sizes() {
+    assert_eq!(core::mem::size_of::<subtags::Language>(), 3);
+    assert_eq!(core::mem::size_of::<subtags::Script>(), 4);
+    assert_eq!(core::mem::size_of::<subtags::Region>(), 3);
+    assert_eq!(core::mem::size_of::<subtags::Variant>(), 8);
+    assert_eq!(core::mem::size_of::<subtags::Variants>(), 16);
+    assert_eq!(core::mem::size_of::<LanguageIdentifier>(), 32);
+
+    assert_eq!(core::mem::size_of::<extensions::transform::Transform>(), 56);
+    assert_eq!(core::mem::size_of::<Option<LanguageIdentifier>>(), 32);
+    assert_eq!(core::mem::size_of::<extensions::transform::Fields>(), 24);
+
+    assert_eq!(core::mem::size_of::<extensions::unicode::Attributes>(), 16);
+    assert_eq!(core::mem::size_of::<extensions::unicode::Keywords>(), 24);
+    assert_eq!(core::mem::size_of::<Vec<extensions::other::Other>>(), 24);
+    assert_eq!(core::mem::size_of::<extensions::private::Private>(), 16);
+    assert_eq!(core::mem::size_of::<extensions::Extensions>(), 136);
+
+    assert_eq!(core::mem::size_of::<Locale>(), 168);
+}
+
+impl Locale {
+    /// The unknown locale "und".
+    pub const UNKNOWN: Self = crate::locale!("und");
+
+    /// A constructor which takes a utf8 slice, parses it and
+    /// produces a well-formed [`Locale`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// Locale::try_from_str("en-US-u-hc-h12").unwrap();
+    /// ```
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// See [`Self::try_from_str`]
+    #[cfg(feature = "alloc")]
+    pub fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        parse_locale(code_units)
+    }
+
+    /// Normalize the locale (operating on UTF-8 formatted byte slices)
+    ///
+    /// This operation will normalize casing and the separator.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// assert_eq!(
+    ///     Locale::normalize_utf8(b"pL-latn-pl-U-HC-H12").as_deref(),
+    ///     Ok("pl-Latn-PL-u-hc-h12")
+    /// );
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn normalize_utf8(input: &[u8]) -> Result<Cow<str>, ParseError> {
+        let locale = Self::try_from_utf8(input)?;
+        Ok(writeable::to_string_or_borrow(&locale, input))
+    }
+
+    /// Normalize the locale (operating on strings)
+    ///
+    /// This operation will normalize casing and the separator.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// assert_eq!(
+    ///     Locale::normalize("pL-latn-pl-U-HC-H12").as_deref(),
+    ///     Ok("pl-Latn-PL-u-hc-h12")
+    /// );
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn normalize(input: &str) -> Result<Cow<str>, ParseError> {
+        Self::normalize_utf8(input.as_bytes())
+    }
+
+    /// Compare this [`Locale`] with BCP-47 bytes.
+    ///
+    /// The return value is equivalent to what would happen if you first converted this
+    /// [`Locale`] to a BCP-47 string and then performed a byte comparison.
+    ///
+    /// This function is case-sensitive and results in a *total order*, so it is appropriate for
+    /// binary search. The only argument producing [`Ordering::Equal`] is `self.to_string()`.
+    ///
+    /// # Examples
+    ///
+    /// Sorting a list of locales with this method requires converting one of them to a string:
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    /// use std::cmp::Ordering;
+    /// use writeable::Writeable;
+    ///
+    /// // Random input order:
+    /// let bcp47_strings: &[&str] = &[
+    ///     "und-u-ca-hebrew",
+    ///     "ar-Latn",
+    ///     "zh-Hant-TW",
+    ///     "zh-TW",
+    ///     "und-fonipa",
+    ///     "zh-Hant",
+    ///     "ar-SA",
+    /// ];
+    ///
+    /// let mut locales = bcp47_strings
+    ///     .iter()
+    ///     .map(|s| s.parse().unwrap())
+    ///     .collect::<Vec<Locale>>();
+    /// locales.sort_by(|a, b| {
+    ///     let b = b.write_to_string();
+    ///     a.strict_cmp(b.as_bytes())
+    /// });
+    /// let strict_cmp_strings = locales
+    ///     .iter()
+    ///     .map(|l| l.to_string())
+    ///     .collect::<Vec<String>>();
+    ///
+    /// // Output ordering, sorted alphabetically
+    /// let expected_ordering: &[&str] = &[
+    ///     "ar-Latn",
+    ///     "ar-SA",
+    ///     "und-fonipa",
+    ///     "und-u-ca-hebrew",
+    ///     "zh-Hant",
+    ///     "zh-Hant-TW",
+    ///     "zh-TW",
+    /// ];
+    ///
+    /// assert_eq!(expected_ordering, strict_cmp_strings);
+    /// ```
+    pub fn strict_cmp(&self, other: &[u8]) -> Ordering {
+        writeable::cmp_utf8(self, other)
+    }
+
+    #[allow(clippy::type_complexity)]
+    pub(crate) fn as_tuple(
+        &self,
+    ) -> (
+        (
+            subtags::Language,
+            Option<subtags::Script>,
+            Option<subtags::Region>,
+            &subtags::Variants,
+        ),
+        (
+            (
+                &extensions::unicode::Attributes,
+                &extensions::unicode::Keywords,
+            ),
+            (
+                Option<(
+                    subtags::Language,
+                    Option<subtags::Script>,
+                    Option<subtags::Region>,
+                    &subtags::Variants,
+                )>,
+                &extensions::transform::Fields,
+            ),
+            &extensions::private::Private,
+            &[extensions::other::Other],
+        ),
+    ) {
+        (self.id.as_tuple(), self.extensions.as_tuple())
+    }
+
+    /// Returns an ordering suitable for use in [`BTreeSet`].
+    ///
+    /// Unlike [`Locale::strict_cmp`], the ordering may or may not be equivalent
+    /// to string ordering, and it may or may not be stable across ICU4X releases.
+    ///
+    /// # Examples
+    ///
+    /// This method returns a nonsensical ordering derived from the fields of the struct:
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    /// use std::cmp::Ordering;
+    ///
+    /// // Input strings, sorted alphabetically
+    /// let bcp47_strings: &[&str] = &[
+    ///     "ar-Latn",
+    ///     "ar-SA",
+    ///     "und-fonipa",
+    ///     "und-u-ca-hebrew",
+    ///     "zh-Hant",
+    ///     "zh-Hant-TW",
+    ///     "zh-TW",
+    /// ];
+    /// assert!(bcp47_strings.windows(2).all(|w| w[0] < w[1]));
+    ///
+    /// let mut locales = bcp47_strings
+    ///     .iter()
+    ///     .map(|s| s.parse().unwrap())
+    ///     .collect::<Vec<Locale>>();
+    /// locales.sort_by(Locale::total_cmp);
+    /// let total_cmp_strings = locales
+    ///     .iter()
+    ///     .map(|l| l.to_string())
+    ///     .collect::<Vec<String>>();
+    ///
+    /// // Output ordering, sorted arbitrarily
+    /// let expected_ordering: &[&str] = &[
+    ///     "ar-SA",
+    ///     "ar-Latn",
+    ///     "und-u-ca-hebrew",
+    ///     "und-fonipa",
+    ///     "zh-TW",
+    ///     "zh-Hant",
+    ///     "zh-Hant-TW",
+    /// ];
+    ///
+    /// assert_eq!(expected_ordering, total_cmp_strings);
+    /// ```
+    ///
+    /// Use a wrapper to add a [`Locale`] to a [`BTreeSet`]:
+    ///
+    /// ```no_run
+    /// use icu::locale::Locale;
+    /// use std::cmp::Ordering;
+    /// use std::collections::BTreeSet;
+    ///
+    /// #[derive(PartialEq, Eq)]
+    /// struct LocaleTotalOrd(Locale);
+    ///
+    /// impl Ord for LocaleTotalOrd {
+    ///     fn cmp(&self, other: &Self) -> Ordering {
+    ///         self.0.total_cmp(&other.0)
+    ///     }
+    /// }
+    ///
+    /// impl PartialOrd for LocaleTotalOrd {
+    ///     fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+    ///         Some(self.cmp(other))
+    ///     }
+    /// }
+    ///
+    /// let _: BTreeSet<LocaleTotalOrd> = unimplemented!();
+    /// ```
+    ///
+    /// [`BTreeSet`]: alloc::collections::BTreeSet
+    pub fn total_cmp(&self, other: &Self) -> Ordering {
+        self.as_tuple().cmp(&other.as_tuple())
+    }
+
+    /// Compare this `Locale` with a potentially unnormalized BCP-47 string.
+    ///
+    /// The return value is equivalent to what would happen if you first parsed the
+    /// BCP-47 string to a `Locale` and then performed a structural comparison.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    ///
+    /// let bcp47_strings: &[&str] = &[
+    ///     "pl-LaTn-pL",
+    ///     "uNd",
+    ///     "UND-FONIPA",
+    ///     "UnD-t-m0-TrUe",
+    ///     "uNd-u-CA-Japanese",
+    ///     "ZH",
+    /// ];
+    ///
+    /// for a in bcp47_strings {
+    ///     assert!(a.parse::<Locale>().unwrap().normalizing_eq(a));
+    /// }
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn normalizing_eq(&self, other: &str) -> bool {
+        macro_rules! subtag_matches {
+            ($T:ty, $iter:ident, $expected:expr) => {
+                $iter
+                    .next()
+                    .map(|b| <$T>::try_from_utf8(b) == Ok($expected))
+                    .unwrap_or(false)
+            };
+        }
+
+        let mut iter = SubtagIterator::new(other.as_bytes());
+        if !subtag_matches!(subtags::Language, iter, self.id.language) {
+            return false;
+        }
+        if let Some(ref script) = self.id.script {
+            if !subtag_matches!(subtags::Script, iter, *script) {
+                return false;
+            }
+        }
+        if let Some(ref region) = self.id.region {
+            if !subtag_matches!(subtags::Region, iter, *region) {
+                return false;
+            }
+        }
+        for variant in self.id.variants.iter() {
+            if !subtag_matches!(subtags::Variant, iter, *variant) {
+                return false;
+            }
+        }
+        if !self.extensions.is_empty() {
+            match extensions::Extensions::try_from_iter(&mut iter) {
+                Ok(exts) => {
+                    if self.extensions != exts {
+                        return false;
+                    }
+                }
+                Err(_) => {
+                    return false;
+                }
+            }
+        }
+        iter.next().is_none()
+    }
+
+    #[doc(hidden)] // macro use
+    #[allow(clippy::type_complexity)]
+    pub const fn try_from_utf8_with_single_variant_single_keyword_unicode_extension(
+        code_units: &[u8],
+    ) -> Result<
+        (
+            subtags::Language,
+            Option<subtags::Script>,
+            Option<subtags::Region>,
+            Option<subtags::Variant>,
+            Option<(extensions::unicode::Key, Option<Subtag>)>,
+        ),
+        ParseError,
+    > {
+        parse_locale_with_single_variant_single_keyword_unicode_keyword_extension(
+            code_units,
+            ParserMode::Locale,
+        )
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        self.id.for_each_subtag_str(f)?;
+        self.extensions.for_each_subtag_str(f)?;
+        Ok(())
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl FromStr for Locale {
+    type Err = ParseError;
+
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+impl From<LanguageIdentifier> for Locale {
+    fn from(id: LanguageIdentifier) -> Self {
+        Self {
+            id,
+            extensions: extensions::Extensions::default(),
+        }
+    }
+}
+
+impl From<Locale> for LanguageIdentifier {
+    fn from(loc: Locale) -> Self {
+        loc.id
+    }
+}
+
+impl core::fmt::Debug for Locale {
+    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
+        writeable::Writeable::write_to(self, f)
+    }
+}
+
+impl_writeable_for_each_subtag_str_no_test!(Locale, selff, selff.extensions.is_empty() => selff.id.write_to_string());
+
+#[test]
+fn test_writeable() {
+    use writeable::assert_writeable_eq;
+    assert_writeable_eq!(Locale::UNKNOWN, "und");
+    assert_writeable_eq!("und-001".parse::<Locale>().unwrap(), "und-001");
+    assert_writeable_eq!("und-Mymr".parse::<Locale>().unwrap(), "und-Mymr");
+    assert_writeable_eq!("my-Mymr-MM".parse::<Locale>().unwrap(), "my-Mymr-MM");
+    assert_writeable_eq!(
+        "my-Mymr-MM-posix".parse::<Locale>().unwrap(),
+        "my-Mymr-MM-posix",
+    );
+    assert_writeable_eq!(
+        "zh-macos-posix".parse::<Locale>().unwrap(),
+        "zh-macos-posix",
+    );
+    assert_writeable_eq!(
+        "my-t-my-d0-zawgyi".parse::<Locale>().unwrap(),
+        "my-t-my-d0-zawgyi",
+    );
+    assert_writeable_eq!(
+        "ar-SA-u-ca-islamic-civil".parse::<Locale>().unwrap(),
+        "ar-SA-u-ca-islamic-civil",
+    );
+    assert_writeable_eq!(
+        "en-001-x-foo-bar".parse::<Locale>().unwrap(),
+        "en-001-x-foo-bar",
+    );
+    assert_writeable_eq!("und-t-m0-true".parse::<Locale>().unwrap(), "und-t-m0-true",);
+}
+
+/// # Examples
+///
+/// ```
+/// use icu::locale::Locale;
+/// use icu::locale::{locale, subtags::language};
+///
+/// assert_eq!(Locale::from(language!("en")), locale!("en"));
+/// ```
+impl From<subtags::Language> for Locale {
+    fn from(language: subtags::Language) -> Self {
+        Self {
+            id: language.into(),
+            extensions: extensions::Extensions::new(),
+        }
+    }
+}
+
+/// # Examples
+///
+/// ```
+/// use icu::locale::Locale;
+/// use icu::locale::{locale, subtags::script};
+///
+/// assert_eq!(Locale::from(Some(script!("latn"))), locale!("und-Latn"));
+/// ```
+impl From<Option<subtags::Script>> for Locale {
+    fn from(script: Option<subtags::Script>) -> Self {
+        Self {
+            id: script.into(),
+            extensions: extensions::Extensions::new(),
+        }
+    }
+}
+
+/// # Examples
+///
+/// ```
+/// use icu::locale::Locale;
+/// use icu::locale::{locale, subtags::region};
+///
+/// assert_eq!(Locale::from(Some(region!("US"))), locale!("und-US"));
+/// ```
+impl From<Option<subtags::Region>> for Locale {
+    fn from(region: Option<subtags::Region>) -> Self {
+        Self {
+            id: region.into(),
+            extensions: extensions::Extensions::new(),
+        }
+    }
+}
+
+/// # Examples
+///
+/// ```
+/// use icu::locale::Locale;
+/// use icu::locale::{
+///     locale,
+///     subtags::{language, region, script},
+/// };
+///
+/// assert_eq!(
+///     Locale::from((
+///         language!("en"),
+///         Some(script!("Latn")),
+///         Some(region!("US"))
+///     )),
+///     locale!("en-Latn-US")
+/// );
+/// ```
+impl
+    From<(
+        subtags::Language,
+        Option<subtags::Script>,
+        Option<subtags::Region>,
+    )> for Locale
+{
+    fn from(
+        lsr: (
+            subtags::Language,
+            Option<subtags::Script>,
+            Option<subtags::Region>,
+        ),
+    ) -> Self {
+        Self {
+            id: lsr.into(),
+            extensions: extensions::Extensions::new(),
+        }
+    }
+}
diff --git a/vendor/icu_locale_core/src/macros.rs b/vendor/icu_locale_core/src/macros.rs
new file mode 100644
index 00000000..42c6704b
--- /dev/null
+++ b/vendor/icu_locale_core/src/macros.rs
@@ -0,0 +1,187 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+/// A macro allowing for compile-time construction of valid [`LanguageIdentifier`]s.
+///
+/// The macro will perform syntax normalization of the tag.
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::{langid, LanguageIdentifier};
+///
+/// const DE_AT: LanguageIdentifier = langid!("de-at");
+///
+/// let de_at: LanguageIdentifier = "de-at".parse().unwrap();
+///
+/// assert_eq!(DE_AT, de_at);
+/// ```
+///
+/// *Note*: The macro cannot produce language identifiers with more than one variants due to const
+/// limitations (see [`Heap Allocations in Constants`]):
+///
+/// ```compile_fail,E0080
+/// icu::locale::langid!("und-variant1-variant2");
+/// ```
+///
+/// Use runtime parsing instead:
+/// ```
+/// "und-variant1-variant2"
+///     .parse::<icu::locale::LanguageIdentifier>()
+///     .unwrap();
+/// ```
+///
+/// [`LanguageIdentifier`]: crate::LanguageIdentifier
+/// [`Heap Allocations in Constants`]: https://github.com/rust-lang/const-eval/issues/20
+#[macro_export]
+macro_rules! langid {
+    ($langid:literal) => { const {
+        match $crate::LanguageIdentifier::try_from_utf8_with_single_variant($langid.as_bytes()) {
+            Ok((language, script, region, variant)) => $crate::LanguageIdentifier {
+                language,
+                script,
+                region,
+                variants: match variant {
+                    Some(v) => $crate::subtags::Variants::from_variant(v),
+                    None => $crate::subtags::Variants::new(),
+                }
+            },
+            #[allow(clippy::panic)] // const context
+            _ => panic!(concat!("Invalid language code: ", $langid, " . Note langid! macro can only support up to a single variant tag. Use runtime parsing instead.")),
+        }
+    }};
+}
+
+/// A macro allowing for compile-time construction of valid [`Locale`]s.
+///
+/// The macro will perform syntax normalization of the tag.
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::{locale, Locale};
+///
+/// const DE_AT: Locale = locale!("de-at");
+///
+/// let de_at: Locale = "de-at".parse().unwrap();
+///
+/// assert_eq!(DE_AT, de_at);
+/// ```
+///
+/// *Note*: The macro cannot produce locales with more than one variant or multiple extensions
+/// (only single keyword unicode extension is supported) due to const
+/// limitations (see [`Heap Allocations in Constants`]):
+///
+/// ```compile_fail,E0080
+/// icu::locale::locale!("sl-IT-rozaj-biske-1994");
+/// ```
+/// Use runtime parsing instead:
+/// ```
+/// "sl-IT-rozaj-biske-1994"
+///     .parse::<icu::locale::Locale>()
+///     .unwrap();
+/// ```
+///
+/// Locales with multiple keys are not supported
+/// ```compile_fail,E0080
+/// icu::locale::locale!("th-TH-u-ca-buddhist-nu-thai");
+/// ```
+/// Use runtime parsing instead:
+/// ```
+/// "th-TH-u-ca-buddhist-nu-thai"
+///     .parse::<icu::locale::Locale>()
+///     .unwrap();
+/// ```
+///
+/// Locales with attributes are not supported
+/// ```compile_fail,E0080
+/// icu::locale::locale!("en-US-u-foobar-ca-buddhist");
+/// ```
+/// Use runtime parsing instead:
+/// ```
+/// "en-US-u-foobar-ca-buddhist"
+///     .parse::<icu::locale::Locale>()
+///     .unwrap();
+/// ```
+///
+/// Locales with single key but multiple types are not supported
+/// ```compile_fail,E0080
+/// icu::locale::locale!("en-US-u-ca-islamic-umalqura");
+/// ```
+/// Use runtime parsing instead:
+/// ```
+/// "en-US-u-ca-islamic-umalqura"
+///     .parse::<icu::locale::Locale>()
+///     .unwrap();
+/// ```
+/// [`Locale`]: crate::Locale
+/// [`Heap Allocations in Constants`]: https://github.com/rust-lang/const-eval/issues/20
+#[macro_export]
+macro_rules! locale {
+    ($locale:literal) => { const {
+        match $crate::Locale::try_from_utf8_with_single_variant_single_keyword_unicode_extension(
+            $locale.as_bytes(),
+        ) {
+            Ok((language, script, region, variant, keyword)) => $crate::Locale {
+                id: $crate::LanguageIdentifier {
+                    language,
+                    script,
+                    region,
+                    variants: match variant {
+                        Some(v) => $crate::subtags::Variants::from_variant(v),
+                        None => $crate::subtags::Variants::new(),
+                    },
+                },
+                extensions: match keyword {
+                    Some(k) => $crate::extensions::Extensions::from_unicode(
+                        $crate::extensions::unicode::Unicode {
+                            keywords: $crate::extensions::unicode::Keywords::new_single(
+                                k.0,
+                                $crate::extensions::unicode::Value::from_subtag(k.1),
+                            ),
+
+                            attributes: $crate::extensions::unicode::Attributes::new(),
+                        },
+                    ),
+                    None => $crate::extensions::Extensions::new(),
+                },
+            },
+            #[allow(clippy::panic)] // const context
+            _ => panic!(concat!(
+                "Invalid language code: ",
+                $locale,
+                " . Note the locale! macro only supports up to one variant tag; \
+                                    and one unicode keyword, other extension are \
+                                    not supported. Use runtime parsing instead."
+            )),
+        }
+    }};
+}
+
+#[cfg(test)]
+mod test {
+    use crate::LanguageIdentifier;
+    use crate::Locale;
+
+    #[test]
+    fn test_langid_macro_can_parse_langid_with_single_variant() {
+        const DE_AT_FOOBAR: LanguageIdentifier = langid!("de-at-foobar");
+        let de_at_foobar: LanguageIdentifier = "de-at-foobar".parse().unwrap();
+        assert_eq!(DE_AT_FOOBAR, de_at_foobar);
+    }
+
+    #[test]
+    fn test_locale_macro_can_parse_locale_with_single_variant() {
+        const DE_AT_FOOBAR: Locale = locale!("de-at-foobar");
+        let de_at_foobar: Locale = "de-at-foobar".parse().unwrap();
+        assert_eq!(DE_AT_FOOBAR, de_at_foobar);
+    }
+
+    #[test]
+    fn test_locale_macro_can_parse_locale_with_single_keyword_unicode_extension() {
+        const DE_AT_U_CA_FOOBAR: Locale = locale!("de-at-u-ca-foobar");
+        let de_at_u_ca_foobar: Locale = "de-at-u-ca-foobar".parse().unwrap();
+        assert_eq!(DE_AT_U_CA_FOOBAR, de_at_u_ca_foobar);
+    }
+}
diff --git a/vendor/icu_locale_core/src/parser/errors.rs b/vendor/icu_locale_core/src/parser/errors.rs
new file mode 100644
index 00000000..bb99b53e
--- /dev/null
+++ b/vendor/icu_locale_core/src/parser/errors.rs
@@ -0,0 +1,69 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use displaydoc::Display;
+
+/// List of parser errors that can be generated
+/// while parsing [`LanguageIdentifier`](crate::LanguageIdentifier), [`Locale`](crate::Locale),
+/// [`subtags`](crate::subtags) or [`extensions`](crate::extensions).
+#[derive(Display, Debug, PartialEq, Copy, Clone)]
+#[non_exhaustive]
+pub enum ParseError {
+    /// Invalid language subtag.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::Language;
+    /// use icu::locale::ParseError;
+    ///
+    /// assert_eq!("x2".parse::<Language>(), Err(ParseError::InvalidLanguage));
+    /// ```
+    #[displaydoc("The given language subtag is invalid")]
+    InvalidLanguage,
+
+    /// Invalid script, region or variant subtag.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::Region;
+    /// use icu::locale::ParseError;
+    ///
+    /// assert_eq!("#@2X".parse::<Region>(), Err(ParseError::InvalidSubtag));
+    /// ```
+    #[displaydoc("Invalid subtag")]
+    InvalidSubtag,
+
+    /// Invalid extension subtag.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::extensions::unicode::Key;
+    /// use icu::locale::ParseError;
+    ///
+    /// assert_eq!("#@2X".parse::<Key>(), Err(ParseError::InvalidExtension));
+    /// ```
+    #[displaydoc("Invalid extension")]
+    InvalidExtension,
+
+    /// Duplicated extension.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::Locale;
+    /// use icu::locale::ParseError;
+    ///
+    /// assert_eq!(
+    ///     "und-u-hc-h12-u-ca-calendar".parse::<Locale>(),
+    ///     Err(ParseError::DuplicatedExtension)
+    /// );
+    /// ```
+    #[displaydoc("Duplicated extension")]
+    DuplicatedExtension,
+}
+
+impl core::error::Error for ParseError {}
diff --git a/vendor/icu_locale_core/src/parser/langid.rs b/vendor/icu_locale_core/src/parser/langid.rs
new file mode 100644
index 00000000..48b6159f
--- /dev/null
+++ b/vendor/icu_locale_core/src/parser/langid.rs
@@ -0,0 +1,273 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+pub use super::errors::ParseError;
+use crate::extensions::unicode::{Attribute, Key, Value};
+use crate::extensions::ExtensionType;
+use crate::parser::SubtagIterator;
+#[cfg(feature = "alloc")]
+use crate::shortvec::ShortBoxSlice;
+use crate::subtags::Subtag;
+#[cfg(feature = "alloc")]
+use crate::LanguageIdentifier;
+use crate::{extensions, subtags};
+
+#[derive(PartialEq, Clone, Copy)]
+pub enum ParserMode {
+    LanguageIdentifier,
+    Locale,
+    #[allow(dead_code)]
+    Partial,
+}
+
+#[derive(PartialEq, Clone, Copy)]
+enum ParserPosition {
+    Script,
+    Region,
+    Variant,
+}
+
+#[cfg(feature = "alloc")]
+pub fn parse_language_identifier_from_iter(
+    iter: &mut SubtagIterator,
+    mode: ParserMode,
+) -> Result<LanguageIdentifier, ParseError> {
+    let mut script = None;
+    let mut region = None;
+    let mut variants = ShortBoxSlice::new();
+
+    let language = if let Some(subtag) = iter.next() {
+        subtags::Language::try_from_utf8(subtag)?
+    } else {
+        return Err(ParseError::InvalidLanguage);
+    };
+
+    let mut position = ParserPosition::Script;
+
+    while let Some(subtag) = iter.peek() {
+        if mode != ParserMode::LanguageIdentifier && subtag.len() == 1 {
+            break;
+        }
+
+        if position == ParserPosition::Script {
+            if let Ok(s) = subtags::Script::try_from_utf8(subtag) {
+                script = Some(s);
+                position = ParserPosition::Region;
+            } else if let Ok(s) = subtags::Region::try_from_utf8(subtag) {
+                region = Some(s);
+                position = ParserPosition::Variant;
+            } else if let Ok(v) = subtags::Variant::try_from_utf8(subtag) {
+                if let Err(idx) = variants.binary_search(&v) {
+                    variants.insert(idx, v);
+                }
+                position = ParserPosition::Variant;
+            } else if mode == ParserMode::Partial {
+                break;
+            } else {
+                return Err(ParseError::InvalidSubtag);
+            }
+        } else if position == ParserPosition::Region {
+            if let Ok(s) = subtags::Region::try_from_utf8(subtag) {
+                region = Some(s);
+                position = ParserPosition::Variant;
+            } else if let Ok(v) = subtags::Variant::try_from_utf8(subtag) {
+                if let Err(idx) = variants.binary_search(&v) {
+                    variants.insert(idx, v);
+                }
+                position = ParserPosition::Variant;
+            } else if mode == ParserMode::Partial {
+                break;
+            } else {
+                return Err(ParseError::InvalidSubtag);
+            }
+        } else if let Ok(v) = subtags::Variant::try_from_utf8(subtag) {
+            if let Err(idx) = variants.binary_search(&v) {
+                variants.insert(idx, v);
+            } else {
+                return Err(ParseError::InvalidSubtag);
+            }
+        } else if mode == ParserMode::Partial {
+            break;
+        } else {
+            return Err(ParseError::InvalidSubtag);
+        }
+        iter.next();
+    }
+
+    Ok(LanguageIdentifier {
+        language,
+        script,
+        region,
+        variants: subtags::Variants::from_short_slice_unchecked(variants),
+    })
+}
+
+#[cfg(feature = "alloc")]
+pub fn parse_language_identifier(
+    t: &[u8],
+    mode: ParserMode,
+) -> Result<LanguageIdentifier, ParseError> {
+    let mut iter = SubtagIterator::new(t);
+    parse_language_identifier_from_iter(&mut iter, mode)
+}
+
+#[allow(clippy::type_complexity)]
+pub const fn parse_locale_with_single_variant_single_keyword_unicode_extension_from_iter(
+    mut iter: SubtagIterator,
+    mode: ParserMode,
+) -> Result<
+    (
+        subtags::Language,
+        Option<subtags::Script>,
+        Option<subtags::Region>,
+        Option<subtags::Variant>,
+        Option<(extensions::unicode::Key, Option<Subtag>)>,
+    ),
+    ParseError,
+> {
+    let language;
+    let mut script = None;
+    let mut region = None;
+    let mut variant = None;
+    let mut keyword = None;
+
+    if let (i, Some(subtag)) = iter.next_const() {
+        iter = i;
+        match subtags::Language::try_from_utf8(subtag) {
+            Ok(l) => language = l,
+            Err(e) => return Err(e),
+        }
+    } else {
+        return Err(ParseError::InvalidLanguage);
+    }
+
+    let mut position = ParserPosition::Script;
+
+    while let Some(subtag) = iter.peek() {
+        if !matches!(mode, ParserMode::LanguageIdentifier) && subtag.len() == 1 {
+            break;
+        }
+
+        if matches!(position, ParserPosition::Script) {
+            if let Ok(s) = subtags::Script::try_from_utf8(subtag) {
+                script = Some(s);
+                position = ParserPosition::Region;
+            } else if let Ok(r) = subtags::Region::try_from_utf8(subtag) {
+                region = Some(r);
+                position = ParserPosition::Variant;
+            } else if let Ok(v) = subtags::Variant::try_from_utf8(subtag) {
+                // We cannot handle multiple variants in a const context
+                debug_assert!(variant.is_none());
+                variant = Some(v);
+                position = ParserPosition::Variant;
+            } else if matches!(mode, ParserMode::Partial) {
+                break;
+            } else {
+                return Err(ParseError::InvalidSubtag);
+            }
+        } else if matches!(position, ParserPosition::Region) {
+            if let Ok(s) = subtags::Region::try_from_utf8(subtag) {
+                region = Some(s);
+                position = ParserPosition::Variant;
+            } else if let Ok(v) = subtags::Variant::try_from_utf8(subtag) {
+                // We cannot handle multiple variants in a const context
+                debug_assert!(variant.is_none());
+                variant = Some(v);
+                position = ParserPosition::Variant;
+            } else if matches!(mode, ParserMode::Partial) {
+                break;
+            } else {
+                return Err(ParseError::InvalidSubtag);
+            }
+        } else if let Ok(v) = subtags::Variant::try_from_utf8(subtag) {
+            debug_assert!(matches!(position, ParserPosition::Variant));
+            if variant.is_some() {
+                // We cannot handle multiple variants in a const context
+                return Err(ParseError::InvalidSubtag);
+            }
+            variant = Some(v);
+        } else if matches!(mode, ParserMode::Partial) {
+            break;
+        } else {
+            return Err(ParseError::InvalidSubtag);
+        }
+
+        iter = iter.next_const().0;
+    }
+
+    if matches!(mode, ParserMode::Locale) {
+        if let Some(subtag) = iter.peek() {
+            match ExtensionType::try_from_utf8(subtag) {
+                Ok(ExtensionType::Unicode) => {
+                    iter = iter.next_const().0;
+                    if let Some(peek) = iter.peek() {
+                        if Attribute::try_from_utf8(peek).is_ok() {
+                            // We cannot handle Attributes in a const context
+                            return Err(ParseError::InvalidSubtag);
+                        }
+                    }
+
+                    let mut key = None;
+                    let mut current_type = None;
+
+                    while let Some(peek) = iter.peek() {
+                        if peek.len() == 2 {
+                            if key.is_some() {
+                                // We cannot handle more than one Key in a const context
+                                return Err(ParseError::InvalidSubtag);
+                            }
+                            match Key::try_from_utf8(peek) {
+                                Ok(k) => key = Some(k),
+                                Err(e) => return Err(e),
+                            };
+                        } else if key.is_some() {
+                            match Value::parse_subtag_from_utf8(peek) {
+                                Ok(Some(t)) => {
+                                    if current_type.is_some() {
+                                        // We cannot handle more than one type in a const context
+                                        return Err(ParseError::InvalidSubtag);
+                                    }
+                                    current_type = Some(t);
+                                }
+                                Ok(None) => {}
+                                Err(e) => return Err(e),
+                            }
+                        } else {
+                            break;
+                        }
+                        iter = iter.next_const().0;
+                    }
+                    if let Some(k) = key {
+                        keyword = Some((k, current_type));
+                    }
+                }
+                // We cannot handle Transform, Private, Other extensions in a const context
+                Ok(_) => return Err(ParseError::InvalidSubtag),
+                Err(e) => return Err(e),
+            }
+        }
+    }
+
+    Ok((language, script, region, variant, keyword))
+}
+
+#[allow(clippy::type_complexity)]
+pub const fn parse_language_identifier_with_single_variant(
+    t: &[u8],
+    mode: ParserMode,
+) -> Result<
+    (
+        subtags::Language,
+        Option<subtags::Script>,
+        Option<subtags::Region>,
+        Option<subtags::Variant>,
+    ),
+    ParseError,
+> {
+    let iter = SubtagIterator::new(t);
+    match parse_locale_with_single_variant_single_keyword_unicode_extension_from_iter(iter, mode) {
+        Ok((l, s, r, v, _)) => Ok((l, s, r, v)),
+        Err(e) => Err(e),
+    }
+}
diff --git a/vendor/icu_locale_core/src/parser/locale.rs b/vendor/icu_locale_core/src/parser/locale.rs
new file mode 100644
index 00000000..e9794cdb
--- /dev/null
+++ b/vendor/icu_locale_core/src/parser/locale.rs
@@ -0,0 +1,42 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::extensions;
+use crate::parser::{ParseError, ParserMode, SubtagIterator};
+use crate::subtags::{self, Subtag};
+#[cfg(feature = "alloc")]
+use crate::Locale;
+
+use super::parse_locale_with_single_variant_single_keyword_unicode_extension_from_iter;
+
+#[cfg(feature = "alloc")]
+pub fn parse_locale(t: &[u8]) -> Result<Locale, ParseError> {
+    let mut iter = SubtagIterator::new(t);
+
+    let id = super::parse_language_identifier_from_iter(&mut iter, ParserMode::Locale)?;
+    let extensions = if iter.peek().is_some() {
+        extensions::Extensions::try_from_iter(&mut iter)?
+    } else {
+        extensions::Extensions::default()
+    };
+    Ok(Locale { id, extensions })
+}
+
+#[allow(clippy::type_complexity)]
+pub const fn parse_locale_with_single_variant_single_keyword_unicode_keyword_extension(
+    t: &[u8],
+    mode: ParserMode,
+) -> Result<
+    (
+        subtags::Language,
+        Option<subtags::Script>,
+        Option<subtags::Region>,
+        Option<subtags::Variant>,
+        Option<(extensions::unicode::Key, Option<Subtag>)>,
+    ),
+    ParseError,
+> {
+    let iter = SubtagIterator::new(t);
+    parse_locale_with_single_variant_single_keyword_unicode_extension_from_iter(iter, mode)
+}
diff --git a/vendor/icu_locale_core/src/parser/mod.rs b/vendor/icu_locale_core/src/parser/mod.rs
new file mode 100644
index 00000000..8ef5c6a4
--- /dev/null
+++ b/vendor/icu_locale_core/src/parser/mod.rs
@@ -0,0 +1,185 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+pub mod errors;
+mod langid;
+mod locale;
+
+pub use errors::ParseError;
+pub use langid::*;
+
+pub use locale::*;
+
+// Safety-usable invariant: returns a prefix of `slice`
+const fn skip_before_separator(slice: &[u8]) -> &[u8] {
+    let mut end = 0;
+    // Invariant: end ≤ slice.len() since len is a nonnegative integer and end is 0
+
+    #[allow(clippy::indexing_slicing)] // very protected, should optimize out
+    while end < slice.len() && !matches!(slice[end], b'-') {
+        // Invariant at beginning of loop: end < slice.len()
+        // Advance until we reach end of slice or a separator.
+        end += 1;
+        // Invariant at end of loop: end ≤ slice.len()
+    }
+
+    // Notice: this slice may be empty for cases like `"en-"` or `"en--US"`
+    // SAFETY: end ≤ slice.len() by while loop
+    // Safety-usable invariant upheld: returned a prefix of the slice
+    unsafe { slice.split_at_unchecked(end).0 }
+}
+
+// `SubtagIterator` is a helper iterator for [`LanguageIdentifier`] and [`Locale`] parsing.
+//
+// It is quite extraordinary due to focus on performance and Rust limitations for `const`
+// functions.
+//
+// The iterator is eager and fallible allowing it to reject invalid slices such as `"-"`, `"-en"`,
+// `"en-"` etc.
+//
+// The iterator provides methods available for static users - `next_manual` and `peek_manual`,
+// as well as typical `Peekable` iterator APIs - `next` and `peek`.
+//
+// All methods return an `Option` of a `Result`.
+#[derive(Copy, Clone, Debug)]
+pub struct SubtagIterator<'a> {
+    remaining: &'a [u8],
+    // Safety invariant: current is a prefix of remaining
+    current: Option<&'a [u8]>,
+}
+
+impl<'a> SubtagIterator<'a> {
+    pub const fn new(rest: &'a [u8]) -> Self {
+        Self {
+            remaining: rest,
+            // Safety invariant upheld: skip_before_separator() returns a prefix of `rest`
+            current: Some(skip_before_separator(rest)),
+        }
+    }
+
+    pub const fn next_const(mut self) -> (Self, Option<&'a [u8]>) {
+        let Some(result) = self.current else {
+            return (self, None);
+        };
+
+        self.current = if result.len() < self.remaining.len() {
+            // If there is more after `result`, by construction `current` starts with a separator
+            // SAFETY: `self.remaining` is strictly longer than `result` due to `result` being a prefix (from the safety invariant)
+            self.remaining = unsafe { self.remaining.split_at_unchecked(result.len() + 1).1 };
+            // Safety invariant upheld: skip_before_separator() returns a prefix of `rest`, and we don't
+            // mutate self.remaining after this
+            Some(skip_before_separator(self.remaining))
+        } else {
+            None
+        };
+        (self, Some(result))
+    }
+
+    pub const fn peek(&self) -> Option<&'a [u8]> {
+        self.current
+    }
+}
+
+impl<'a> Iterator for SubtagIterator<'a> {
+    type Item = &'a [u8];
+
+    fn next(&mut self) -> Option<Self::Item> {
+        let (s, res) = self.next_const();
+        *self = s;
+        res
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::*;
+
+    fn slice_to_str(input: &[u8]) -> &str {
+        std::str::from_utf8(input).unwrap()
+    }
+
+    #[test]
+    fn subtag_iterator_peek_test() {
+        let slice = "de-at-u-ca-foobar";
+        let mut si = SubtagIterator::new(slice.as_bytes());
+
+        assert_eq!(si.peek().map(slice_to_str), Some("de"));
+        assert_eq!(si.peek().map(slice_to_str), Some("de"));
+        assert_eq!(si.next().map(slice_to_str), Some("de"));
+
+        assert_eq!(si.peek().map(slice_to_str), Some("at"));
+        assert_eq!(si.peek().map(slice_to_str), Some("at"));
+        assert_eq!(si.next().map(slice_to_str), Some("at"));
+    }
+
+    #[test]
+    fn subtag_iterator_test() {
+        let slice = "";
+        let mut si = SubtagIterator::new(slice.as_bytes());
+        assert_eq!(si.next().map(slice_to_str), Some(""));
+
+        let slice = "-";
+        let mut si = SubtagIterator::new(slice.as_bytes());
+        assert_eq!(si.next().map(slice_to_str), Some(""));
+
+        let slice = "-en";
+        let mut si = SubtagIterator::new(slice.as_bytes());
+        assert_eq!(si.next().map(slice_to_str), Some(""));
+        assert_eq!(si.next().map(slice_to_str), Some("en"));
+        assert_eq!(si.next(), None);
+
+        let slice = "en";
+        let si = SubtagIterator::new(slice.as_bytes());
+        assert_eq!(si.map(slice_to_str).collect::<Vec<_>>(), vec!["en",]);
+
+        let slice = "en-";
+        let si = SubtagIterator::new(slice.as_bytes());
+        assert_eq!(si.map(slice_to_str).collect::<Vec<_>>(), vec!["en", "",]);
+
+        let slice = "--";
+        let mut si = SubtagIterator::new(slice.as_bytes());
+        assert_eq!(si.next().map(slice_to_str), Some(""));
+        assert_eq!(si.next().map(slice_to_str), Some(""));
+        assert_eq!(si.next().map(slice_to_str), Some(""));
+        assert_eq!(si.next(), None);
+
+        let slice = "-en-";
+        let mut si = SubtagIterator::new(slice.as_bytes());
+        assert_eq!(si.next().map(slice_to_str), Some(""));
+        assert_eq!(si.next().map(slice_to_str), Some("en"));
+        assert_eq!(si.next().map(slice_to_str), Some(""));
+        assert_eq!(si.next(), None);
+
+        let slice = "de-at-u-ca-foobar";
+        let si = SubtagIterator::new(slice.as_bytes());
+        assert_eq!(
+            si.map(slice_to_str).collect::<Vec<_>>(),
+            vec!["de", "at", "u", "ca", "foobar",]
+        );
+    }
+
+    #[test]
+    fn skip_before_separator_test() {
+        let current = skip_before_separator(b"");
+        assert_eq!(current, b"");
+
+        let current = skip_before_separator(b"en");
+        assert_eq!(current, b"en");
+
+        let current = skip_before_separator(b"en-");
+        assert_eq!(current, b"en");
+
+        let current = skip_before_separator(b"en--US");
+        assert_eq!(current, b"en");
+
+        let current = skip_before_separator(b"-US");
+        assert_eq!(current, b"");
+
+        let current = skip_before_separator(b"US");
+        assert_eq!(current, b"US");
+
+        let current = skip_before_separator(b"-");
+        assert_eq!(current, b"");
+    }
+}
diff --git a/vendor/icu_locale_core/src/preferences/extensions/mod.rs b/vendor/icu_locale_core/src/preferences/extensions/mod.rs
new file mode 100644
index 00000000..08698202
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/mod.rs
@@ -0,0 +1,23 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! A set of extensions which correspond to preferences.
+//!
+//! The module provides structures that represent known values for each keyword
+//! in Locale [`extensions`](crate::extensions) with semantic meaning.
+//!
+//! # Syntactic vs Semantic Extension Handling
+//!
+//! This module ensures that only valid, recognized values are used, providing semantic validation.
+//! It would reject invalid values such as `-u-hc-BB` because `BB` is not a known hour cycle. This
+//! is ideal for applications that require strict adherence to standardized values and need to
+//! prevent invalid or unrecognized data.
+//!
+//! If you need to construct syntactically valid Locale extensions without semantic validation,
+//! allowing any valid key-value pair regardless of recognition, consider using the
+//! [`crate::extensions`] module.
+//!
+//! [`Locale`]: crate::Locale
+
+pub mod unicode;
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/errors.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/errors.rs
new file mode 100644
index 00000000..a2ade92d
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/errors.rs
@@ -0,0 +1,15 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Errors related to parsing of Preferences.
+
+/// Error returned by parsers of unicode extensions as preferences.
+#[non_exhaustive]
+#[derive(Debug, displaydoc::Display)]
+pub enum PreferencesParseError {
+    /// The given keyword value is not a valid preference variant.
+    InvalidKeywordValue,
+}
+
+impl core::error::Error for PreferencesParseError {}
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/calendar.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/calendar.rs
new file mode 100644
index 00000000..87b4b9c3
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/calendar.rs
@@ -0,0 +1,69 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#![allow(non_snake_case)]
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// Hijri Calendar sub-type
+    ///
+    /// The list is based on [`CLDR Calendars`](https://github.com/unicode-org/cldr/blob/main/common/bcp47/calendar.xml)
+    HijriCalendarAlgorithm {
+        /// Hijri calendar, Umm al-Qura
+        Umalqura,
+        /// Hijri calendar, tabular (intercalary years \[2,5,7,10,13,16,18,21,24,26,29] - astronomical epoch)
+        Tbla,
+        /// Hijri calendar, tabular (intercalary years \[2,5,7,10,13,16,18,21,24,26,29] - civil epoch)
+        Civil,
+        /// Hijri calendar, Saudi Arabia sighting
+        Rgsa
+});
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode Calendar Identifier defines a type of calendar.
+    ///
+    /// This selects calendar-specific data within a locale used for formatting and parsing,
+    /// such as date/time symbols and patterns; it also selects supplemental calendarData used
+    /// for calendrical calculations. The value can affect the computation of the first day of the week.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeCalendarIdentifier).
+    CalendarAlgorithm {
+        /// Thai Buddhist calendar (same as Gregorian except for the year)
+        ("buddhist" => Buddhist),
+        /// Traditional Chinese calendar
+        ("chinese" => Chinese),
+        /// Coptic calendar
+        ("coptic" => Coptic),
+        /// Traditional Korean calendar
+        ("dangi" => Dangi),
+        /// Ethiopic calendar, Amete Alem (epoch approx. 5493 B.C.E)
+        ("ethioaa" => Ethioaa),
+        /// Ethiopic calendar, Amete Mihret (epoch approx, 8 C.E.)
+        ("ethiopic" => Ethiopic),
+        /// Gregorian calendar
+        ("gregory" => Gregory),
+        /// Traditional Hebrew calendar
+        ("hebrew" => Hebrew),
+        /// Indian calendar
+        ("indian" => Indian),
+        /// Hijri calendar
+        ("islamic" => Hijri(HijriCalendarAlgorithm) {
+             ("umalqura" => Umalqura),
+             ("tbla" => Tbla),
+             ("civil" => Civil),
+             ("rgsa" => Rgsa)
+        }),
+        /// ISO calendar (Gregorian calendar using the ISO 8601 calendar week rules)
+        ("iso8601" => Iso8601),
+        /// Japanese Imperial calendar
+        ("japanese" => Japanese),
+        /// Persian calendar
+        ("persian" => Persian),
+        /// Republic of China calendar
+        ("roc" => Roc)
+}, "ca", s, if *s == value!("islamicc") { return Ok(Self::Hijri(Some(HijriCalendarAlgorithm::Civil))); });
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/collation.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/collation.rs
new file mode 100644
index 00000000..a7305418
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/collation.rs
@@ -0,0 +1,79 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode Collation Identifier defines a type of collation (sort order).
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeCollationIdentifier).
+    CollationType {
+        /// A previous version of the ordering, for compatibility
+        ("compat" => Compat),
+        /// Dictionary style ordering (such as in Sinhala)
+        ("dict" => Dict),
+        /// The default Unicode collation element table order
+        ("ducet" => Ducet),
+        /// Recommended ordering for emoji characters
+        ("emoji" => Emoji),
+        /// European ordering rules
+        ("eor" => Eor),
+        /// Phonebook style ordering (such as in German)
+        ("phonebk" => Phonebk),
+        /// Phonetic ordering (sorting based on pronunciation)
+        ("phonetic" => Phonetic),
+        /// Pinyin ordering for Latin and for CJK characters (used in Chinese)
+        ("pinyin" => Pinyin),
+        /// Special collation type for string search
+        ("search" => Search),
+        /// Special collation type for Korean initial consonant search
+        ("searchjl" => Searchjl),
+        /// Default ordering for each language
+        ("standard" => Standard),
+        /// Pinyin ordering for Latin, stroke order for CJK characters (used in Chinese)
+        ("stroke" => Stroke),
+        /// Traditional style ordering (such as in Spanish)
+        ("trad" => Trad),
+        /// Pinyin ordering for Latin, Unihan radical-stroke ordering for CJK characters (used in Chinese)
+        ("unihan" => Unihan),
+        /// Pinyin ordering for Latin, zhuyin order for Bopomofo and CJK characters (used in Chinese)
+        ("zhuyin" => Zhuyin),
+}, "co");
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// Collation parameter key for ordering by case.
+    ///
+    /// If set to upper, causes upper case to sort before lower case. If set to lower, causes lower case to sort before upper case.
+    /// Useful for locales that have already supported ordering but require different order of cases. Affects case and tertiary levels.
+    ///
+    /// The defails see [LDML](https://unicode.org/reports/tr35/tr35-collation.html#Case_Parameters).
+    [Default]
+    CollationCaseFirst {
+        /// Upper case to be sorted before lower case
+        ("upper" => Upper),
+        /// Lower case to be sorted before upper case
+        ("lower" => Lower),
+        /// No special case ordering
+        [default]
+        ("false" => False),
+}, "kf");
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// Collation parameter key for numeric handling.
+    ///
+    /// If set to on, any sequence of Decimal Digits (General_Category = Nd in the UAX44) is sorted at a primary level with
+    /// its numeric value. For example, "1" < "2" < "10". The computed primary weights are all at the start of the digit
+    /// reordering group.
+    [Default]
+    CollationNumericOrdering {
+        /// A sequence of decimal digits is sorted at primary level with its numeric value
+        ("true" => True),
+        /// No special handling for numeric ordering
+        [default]
+        ("false" => False),
+}, "kn");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/currency.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/currency.rs
new file mode 100644
index 00000000..38f210a3
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/currency.rs
@@ -0,0 +1,31 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::preferences::extensions::unicode::errors::PreferencesParseError;
+use crate::preferences::extensions::unicode::struct_keyword;
+use crate::{extensions::unicode::Value, subtags::Subtag};
+use tinystr::TinyAsciiStr;
+
+struct_keyword!(
+    /// A Unicode Currency Identifier defines a type of currency.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeCurrencyIdentifier).
+    CurrencyType,
+    "cu",
+    TinyAsciiStr<3>,
+    |input: Value| {
+        if let Some(subtag) = input.into_single_subtag() {
+            let ts = subtag.as_tinystr();
+            if ts.len() == 3 && ts.is_ascii_alphabetic() {
+                return Ok(Self(ts.resize()));
+            }
+        }
+        Err(PreferencesParseError::InvalidKeywordValue)
+    },
+    |input: CurrencyType| {
+        crate::extensions::unicode::Value::from_subtag(Some(
+            Subtag::from_tinystr_unvalidated(input.0.resize()),
+        ))
+    }
+);
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/currency_format.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/currency_format.rs
new file mode 100644
index 00000000..97efeb12
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/currency_format.rs
@@ -0,0 +1,20 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode Currency Format Identifier defines a style for currency formatting.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeCurrencyFormatIdentifier).
+    [Default]
+    CurrencyFormatStyle {
+        /// Negative numbers use the minusSign symbol (the default)
+        [default]
+        ("standard" => Standard),
+        /// Negative numbers use parentheses or equivalent
+        ("account" => Account)
+}, "cf");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/dictionary_break.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/dictionary_break.rs
new file mode 100644
index 00000000..c5ee096b
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/dictionary_break.rs
@@ -0,0 +1,39 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::extensions::unicode::Value;
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::errors::PreferencesParseError;
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::struct_keyword;
+#[cfg(feature = "alloc")]
+use crate::subtags::Script;
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+#[cfg(feature = "alloc")]
+use core::str::FromStr;
+
+#[cfg(feature = "alloc")]
+struct_keyword!(
+    /// A Unicode Dictionary Break Exclusion Identifier specifies
+    /// scripts to be excluded from dictionary-based text break (for words and lines).
+    ///
+    /// The valid values are of one or more items of type [`Script`](crate::subtags::Script).
+    DictionaryBreakScriptExclusions,
+    "dx",
+    Vec<Script>,
+    |input: Value| {
+        input
+            .into_iter()
+            .map(|s| {
+                Script::from_str(s.as_str()).map_err(|_| PreferencesParseError::InvalidKeywordValue)
+            })
+            .collect::<Result<_, _>>()
+            .map(Self)
+    },
+    |input: DictionaryBreakScriptExclusions| {
+        input.0.into_iter().map(Into::into).collect()
+    }
+);
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/emoji.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/emoji.rs
new file mode 100644
index 00000000..c6093ece
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/emoji.rs
@@ -0,0 +1,25 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode Emoji Presentation Style Identifier
+    ///
+    /// It specifies a request for the preferred emoji
+    /// presentation style. This can be used as part of the value for an HTML lang attribute,
+    /// for example `<html lang="sr-Latn-u-em-emoji">`.
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeEmojiPresentationStyleIdentifier).
+    [Default]
+    EmojiPresentationStyle {
+        /// Use an emoji presentation for emoji characters if possible
+        ("emoji" => Emoji),
+        /// Use a text presentation for emoji characters if possible
+        ("text" => Text),
+        /// Use the default presentation for emoji characters as specified in UTR #51 Presentation Style
+        [default]
+        ("default" => Default)
+}, "em");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/first_day.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/first_day.rs
new file mode 100644
index 00000000..335c86f5
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/first_day.rs
@@ -0,0 +1,31 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode First Day Identifier defines the preferred first day of the week for calendar display.
+    ///
+    /// Specifying "fw" in a locale identifier overrides the default value specified by
+    /// supplemental week data for the region.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeFirstDayIdentifier).
+    FirstDay {
+        /// Sunday
+        ("sun" => Sun),
+        /// Monday
+        ("mon" => Mon),
+        /// Tuesday
+        ("tue" => Tue),
+        /// Wednesday
+        ("wed" => Wed),
+        /// Thursday
+        ("thu" => Thu),
+        /// Friday
+        ("fri" => Fri),
+        /// Saturday
+        ("sat" => Sat)
+}, "fw");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/hour_cycle.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/hour_cycle.rs
new file mode 100644
index 00000000..8f32ad49
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/hour_cycle.rs
@@ -0,0 +1,20 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode Hour Cycle Identifier defines the preferred time cycle. Specifying "hc" in a locale identifier overrides the default value specified by supplemental time data for the region.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeHourCycleIdentifier).
+    HourCycle {
+        /// The typical 12-hour clock. Hours are numbered 1–12. Corresponds to 'h' in patterns.
+        ("h12" => H12),
+        /// The 24-hour clock. Hour are numbered 0–23. Corresponds to 'H' in patterns.
+        ("h23" => H23),
+        /// Variant of the 12-hour clock, sometimes used in Japan. Hours are numbered 0–11. Corresponds to 'K' in patterns.
+        ("h11" => H11),
+}, "hc");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/line_break.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/line_break.rs
new file mode 100644
index 00000000..f7c536ab
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/line_break.rs
@@ -0,0 +1,23 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode Line Break Style Identifier defines a preferred line break style corresponding to the CSS level 3 line-break option.
+    ///
+    /// Specifying "lb" in a locale identifier overrides the locale’s default style
+    /// (which may correspond to "normal" or "strict").
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeLineBreakStyleIdentifier).
+    LineBreakStyle {
+        /// CSS level 3 line-break=strict, e.g. treat CJ as NS
+        ("strict" => Strict),
+        /// CSS level 3 line-break=normal, e.g. treat CJ as ID, break before hyphens for ja,zh
+        ("normal" => Normal),
+        /// CSS lev 3 line-break=loose
+        ("loose" => Loose),
+}, "lb");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/line_break_word.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/line_break_word.rs
new file mode 100644
index 00000000..6a837f6d
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/line_break_word.rs
@@ -0,0 +1,25 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode Line Break Word Identifier defines preferred line break word handling behavior corresponding to the CSS level 3 word-break option.
+    ///
+    /// Specifying "lw" in a locale identifier overrides the locale’s default style (which may correspond to "normal" or "keepall").
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeLineBreakWordIdentifier).
+    LineBreakWordHandling {
+        /// CSS lev 3 word-break=normal, normal script/language behavior for midword breaks
+        ("normal" => Normal),
+        /// CSS lev 3 word-break=break-all, allow midword breaks unless forbidden by lb setting
+        ("breakall" => BreakAll),
+        /// CSS lev 3 word-break=keep-all, prohibit midword breaks except for dictionary breaks
+        ("keepall" => KeepAll),
+        /// Prioritize keeping natural phrases (of multiple words) together when breaking,
+        /// used in short text like title and headline
+        ("phrase" => Phrase),
+}, "lw");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/measurement_system.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/measurement_system.rs
new file mode 100644
index 00000000..609bf7c6
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/measurement_system.rs
@@ -0,0 +1,22 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode Measurement System Identifier defines a preferred measurement system.
+    ///
+    /// Specifying "ms" in a locale identifier overrides the default value specified by supplemental measurement system data for the region
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeMeasurementSystemIdentifier).
+    MeasurementSystem {
+        /// Metric System
+        ("metric" => Metric),
+        /// US System of measurement: feet, pints, etc.; pints are 16oz
+        ("ussystem" => USSystem),
+        /// UK System of measurement: feet, pints, etc.; pints are 20oz
+        ("uksystem" => UKSystem)
+}, "ms");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/measurement_unit_override.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/measurement_unit_override.rs
new file mode 100644
index 00000000..47339536
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/measurement_unit_override.rs
@@ -0,0 +1,20 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Measurement Unit Preference Override defines an override for measurement unit preference.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#MeasurementUnitPreferenceOverride).
+    MeasurementUnitOverride {
+        /// Celsius as temperature unit
+        ("celsius" => Celsius),
+        /// Kelvin as temperature unit
+        ("kelvin" => Kelvin),
+        /// Fahrenheit as temperature unit
+        ("fahrenhe" => Fahrenheit),
+}, "mu");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/mod.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/mod.rs
new file mode 100644
index 00000000..f8d1493b
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/mod.rs
@@ -0,0 +1,44 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! A list of Preferences derived from Locale unicode extension keywords.
+
+#![allow(unused_imports)]
+
+mod calendar;
+pub use calendar::*;
+mod collation;
+pub use collation::*;
+mod currency;
+pub use currency::*;
+mod currency_format;
+pub use currency_format::*;
+mod dictionary_break;
+pub use dictionary_break::*;
+mod emoji;
+pub use emoji::*;
+mod first_day;
+pub use first_day::*;
+mod hour_cycle;
+pub use hour_cycle::*;
+mod line_break;
+pub use line_break::*;
+mod line_break_word;
+pub use line_break_word::*;
+mod measurement_system;
+pub use measurement_system::*;
+mod measurement_unit_override;
+pub use measurement_unit_override::*;
+mod numbering_system;
+pub use numbering_system::*;
+mod region_override;
+pub use region_override::*;
+mod regional_subdivision;
+pub use regional_subdivision::*;
+mod sentence_supression;
+pub use sentence_supression::*;
+mod timezone;
+pub use timezone::*;
+mod variant;
+pub use variant::*;
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/numbering_system.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/numbering_system.rs
new file mode 100644
index 00000000..89199fd6
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/numbering_system.rs
@@ -0,0 +1,26 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::preferences::extensions::unicode::errors::PreferencesParseError;
+use crate::preferences::extensions::unicode::struct_keyword;
+use crate::{extensions::unicode::Value, subtags::Subtag};
+
+struct_keyword!(
+    /// A Unicode Number System Identifier defines a type of number system.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeNumberSystemIdentifier).
+    [Copy]
+    NumberingSystem,
+    "nu",
+    Subtag,
+    |input: Value| {
+        input
+            .into_single_subtag()
+            .map(Self)
+            .ok_or(PreferencesParseError::InvalidKeywordValue)
+    },
+    |input: NumberingSystem| {
+        crate::extensions::unicode::Value::from_subtag(Some(input.0))
+    }
+);
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/region_override.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/region_override.rs
new file mode 100644
index 00000000..d69029ea
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/region_override.rs
@@ -0,0 +1,63 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::extensions::unicode::{SubdivisionId, Value};
+use crate::preferences::extensions::unicode::errors::PreferencesParseError;
+use crate::preferences::extensions::unicode::struct_keyword;
+
+struct_keyword!(
+    /// A Region Override specifies an alternate region to use for obtaining certain region-specific default values.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#RegionOverride).
+    [Copy]
+    RegionOverride,
+    "rg",
+    SubdivisionId,
+    |input: Value| {
+        input
+            .into_single_subtag()
+            .and_then(|subtag| subtag.as_str().parse().ok().map(Self))
+            .ok_or(PreferencesParseError::InvalidKeywordValue)
+    },
+    |input: RegionOverride| {
+        Value::from_subtag(Some(input.0.into_subtag()))
+    }
+);
+
+#[cfg(test)]
+mod test {
+    use super::*;
+    use crate::extensions::unicode;
+    use crate::extensions::unicode::subdivision_suffix;
+    use crate::subtags::region;
+
+    #[test]
+    fn region_override_test() {
+        let val = unicode::value!("uksct");
+        let rg: RegionOverride = val.try_into().unwrap();
+        assert_eq!(rg.0.region, region!("UK"));
+        assert_eq!(rg.0.suffix, subdivision_suffix!("sct"));
+
+        let val = unicode::value!("usca");
+        let rg: RegionOverride = val.try_into().unwrap();
+        assert_eq!(rg.0.region, region!("US"));
+        assert_eq!(rg.0.suffix, subdivision_suffix!("ca"));
+
+        let val = unicode::value!("419bel");
+        let rg: RegionOverride = val.try_into().unwrap();
+        assert_eq!(rg.0.region, region!("419"));
+        assert_eq!(rg.0.suffix, subdivision_suffix!("bel"));
+
+        let val = unicode::value!("uszzzz");
+        let rg: RegionOverride = val.try_into().unwrap();
+        assert_eq!(rg.0.region, region!("us"));
+        assert_eq!(rg.0.suffix, subdivision_suffix!("zzzz"));
+
+        for i in &["4aabel", "a4bel", "ukabcde"] {
+            let val = unicode::Value::try_from_str(i).unwrap();
+            let rg: Result<RegionOverride, _> = val.try_into();
+            assert!(rg.is_err());
+        }
+    }
+}
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/regional_subdivision.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/regional_subdivision.rs
new file mode 100644
index 00000000..b52640d6
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/regional_subdivision.rs
@@ -0,0 +1,52 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::preferences::extensions::unicode::errors::PreferencesParseError;
+use crate::preferences::extensions::unicode::struct_keyword;
+use crate::{
+    extensions::unicode::{SubdivisionId, Value},
+    subtags::Subtag,
+};
+
+struct_keyword!(
+    /// A Unicode Subdivision Identifier defines a regional subdivision used for locales.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeSubdivisionIdentifier).
+    [Copy]
+    RegionalSubdivision,
+    "sd",
+    SubdivisionId,
+    |input: Value| {
+        input
+            .into_single_subtag()
+            .and_then(|subtag| subtag.as_str().parse().ok().map(Self))
+            .ok_or(PreferencesParseError::InvalidKeywordValue)
+    },
+    |input: RegionalSubdivision| {
+        #[allow(clippy::unwrap_used)] // TODO
+        Value::from_subtag(Some(Subtag::try_from_str(&input.0.to_string()).unwrap()))
+    }
+);
+
+#[cfg(test)]
+mod test {
+    use super::*;
+    use crate::extensions::unicode;
+    use crate::extensions::unicode::subdivision_suffix;
+    use crate::subtags::region;
+
+    #[test]
+    fn region_subdivision_test() {
+        let val = unicode::value!("uksct");
+        let rg: RegionalSubdivision = val.try_into().unwrap();
+        assert_eq!(rg.region, region!("UK"));
+        assert_eq!(rg.suffix, subdivision_suffix!("sct"));
+
+        for i in &["4aabel", "a4bel", "ukabcde"] {
+            let val = unicode::Value::try_from_str(i).unwrap();
+            let rg: Result<RegionalSubdivision, _> = val.try_into();
+            assert!(rg.is_err());
+        }
+    }
+}
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/sentence_supression.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/sentence_supression.rs
new file mode 100644
index 00000000..221f276a
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/sentence_supression.rs
@@ -0,0 +1,21 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode Sentence Break Suppressions Identifier defines a set of data to be used for suppressing certain
+    /// sentence breaks that would otherwise be found by UAX #14 rules.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeSentenceBreakSuppressionsIdentifier).
+    [Default]
+    SentenceBreakSupressions {
+        /// Don’t use sentence break suppressions data (the default)
+        [default]
+        ("none" => None),
+        /// Use sentence break suppressions data of type "standard"
+        ("standard" => Standard),
+}, "ss");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/timezone.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/timezone.rs
new file mode 100644
index 00000000..7fe3137f
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/timezone.rs
@@ -0,0 +1,26 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::preferences::extensions::unicode::errors::PreferencesParseError;
+use crate::preferences::extensions::unicode::struct_keyword;
+use crate::{extensions::unicode::Value, subtags::Subtag};
+
+struct_keyword!(
+    /// A Unicode Timezone Identifier defines a timezone.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeTimezoneIdentifier).
+    [Copy]
+    TimeZoneShortId,
+    "tz",
+    Subtag,
+    |input: Value| {
+        input
+            .into_single_subtag()
+            .map(Self)
+            .ok_or(PreferencesParseError::InvalidKeywordValue)
+    },
+    |input: TimeZoneShortId| {
+        crate::extensions::unicode::Value::from_subtag(Some(input.0))
+    }
+);
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/variant.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/variant.rs
new file mode 100644
index 00000000..cbbbce45
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/keywords/variant.rs
@@ -0,0 +1,16 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::preferences::extensions::unicode::enum_keyword;
+
+#[cfg(feature = "alloc")]
+enum_keyword!(
+    /// A Unicode Variant Identifier defines a special variant used for locales.
+    ///
+    /// The valid values are listed in [LDML](https://unicode.org/reports/tr35/#UnicodeVariantIdentifier).
+    CommonVariantType {
+        /// POSIX style locale variant
+        ("posix" => Posix),
+}, "va");
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/macros/enum_keyword.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/macros/enum_keyword.rs
new file mode 100644
index 00000000..7f81fcbb
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/macros/enum_keyword.rs
@@ -0,0 +1,320 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+/// Internal macro used by `enum_keyword` for nesting.
+#[macro_export]
+#[doc(hidden)]
+macro_rules! __enum_keyword_inner {
+    ($name:ident, $variant:ident) => {
+        $name::$variant
+    };
+    ($name:ident, $variant:ident, $s:ident, $v2:ident, $($subk:expr => $subv:ident),*) => {{
+        let sv = $s.get_subtag(1).and_then(|st| {
+            match st.as_str() {
+                $(
+                    $subk => Some($v2::$subv),
+                )*
+                _ => None,
+            }
+        });
+        $name::$variant(sv)
+    }};
+}
+
+/// Macro used to generate a preference keyword as an enum.
+///
+/// The macro supports single and two subtag enums.
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::preferences::extensions::unicode::enum_keyword;
+///
+/// enum_keyword!(
+///     EmojiPresentationStyle {
+///         ("emoji" => Emoji),
+///         ("text" => Text),
+///         ("default" => Default)
+/// }, "em");
+///
+/// enum_keyword!(
+///      MetaKeyword {
+///         ("normal" => Normal),
+///         ("emoji" => Emoji(EmojiPresentationStyle) {
+///             ("emoji" => Emoji),
+///             ("text" => Text),
+///             ("default" => Default)
+///         })
+/// }, "mk");
+/// ```
+#[macro_export]
+#[doc(hidden)]
+macro_rules! __enum_keyword {
+    (
+        $(#[$doc:meta])*
+        $([$derive_attrs:ty])?
+        $name:ident {
+            $(
+                $(#[$variant_doc:meta])*
+                $([$variant_attr:ty])?
+                $variant:ident $($v2:ident)?
+            ),*
+        }
+    ) => {
+        #[non_exhaustive]
+        #[derive(Debug, Clone, Eq, PartialEq, Copy, Hash)]
+        $(#[derive($derive_attrs)])?
+        $(#[$doc])*
+        pub enum $name {
+            $(
+                $(#[$variant_doc])*
+                $(#[$variant_attr])?
+                $variant $((Option<$v2>))?
+            ),*
+        }
+    };
+    ($(#[$doc:meta])*
+    $([$derive_attrs:ty])?
+    $name:ident {
+        $(
+            $(#[$variant_doc:meta])*
+            $([$variant_attr:ty])?
+            ($key:expr => $variant:ident $(($v2:ident) {
+                $(
+                    ($subk:expr => $subv:ident)
+                ),*
+            })?)
+        ),* $(,)?
+    },
+    $ext_key:literal
+    $(, $input:ident, $aliases:stmt)?
+    ) => {
+        $crate::__enum_keyword!(
+            $(#[$doc])*
+            $([$derive_attrs])?
+            $name {
+                $(
+                    $(#[$variant_doc])*
+                    $([$variant_attr])?
+                    $variant $($v2)?
+                ),*
+            }
+        );
+
+        impl $crate::preferences::PreferenceKey for $name {
+            fn unicode_extension_key() -> Option<$crate::extensions::unicode::Key> {
+                Some($crate::extensions::unicode::key!($ext_key))
+            }
+
+            fn try_from_key_value(
+                key: &$crate::extensions::unicode::Key,
+                value: &$crate::extensions::unicode::Value,
+            ) -> Result<Option<Self>, $crate::preferences::extensions::unicode::errors::PreferencesParseError> {
+                if Self::unicode_extension_key() == Some(*key) {
+                    Self::try_from(value).map(Some)
+                } else {
+                    Ok(None)
+                }
+            }
+
+            fn unicode_extension_value(&self) -> Option<$crate::extensions::unicode::Value> {
+                Some((*self).into())
+            }
+        }
+
+        impl TryFrom<&$crate::extensions::unicode::Value> for $name {
+            type Error = $crate::preferences::extensions::unicode::errors::PreferencesParseError;
+
+            fn try_from(s: &$crate::extensions::unicode::Value) -> Result<Self, Self::Error> {
+                let subtag = s.get_subtag(0)
+                                // No subtag is equivalent to the "true" value.
+                                .unwrap_or(&$crate::subtags::subtag!("true"));
+                #[allow(unused_imports)]
+                use $crate::extensions::unicode::value;
+                $(
+                    let $input = s;
+                    $aliases
+                )?
+                Ok(match subtag.as_str() {
+                    $(
+                        $key => {
+                            $crate::__enum_keyword_inner!($name, $variant$(, s, $v2, $($subk => $subv),*)?)
+                        }
+                    )*
+                    _ => {
+                        return Err(Self::Error::InvalidKeywordValue);
+                    }
+                })
+            }
+        }
+
+        impl From<$name>  for $crate::extensions::unicode::Value {
+            fn from(input: $name) -> $crate::extensions::unicode::Value {
+                let mut result = $crate::extensions::unicode::Value::default();
+                input.extend_value(&mut result);
+                result
+            }
+        }
+
+        impl $name {
+            pub(crate) fn extend_value(self, input: &mut $crate::extensions::unicode::Value) {
+                match self {
+                    $(
+                        // This is circumventing a limitation of the macro_rules - we need to have a conditional
+                        // $()? case here for when the variant has a value, and macro_rules require us to
+                        // reference the $v2 inside it, but in match case it becomes a variable, so clippy
+                        // complaints.
+                        #[allow(non_snake_case)]
+                        Self::$variant $(($v2))? => {
+                            input.push_subtag($crate::subtags::subtag!($key));
+
+                            $(
+                                if let Some(v2) = $v2 {
+                                    match v2 {
+                                        $(
+                                            $v2::$subv => input.push_subtag($crate::subtags::subtag!($subk)),
+                                        )*
+                                    }
+                                }
+                            )?
+                        },
+                    )*
+                }
+            }
+
+            /// A helper function for displaying as a `&str`.
+            pub const fn as_str(&self) -> &'static str {
+                match self {
+                    $(
+                        // This is circumventing a limitation of the macro_rules - we need to have a conditional
+                        // $()? case here for when the variant has a value, and macro_rules require us to
+                        // reference the $v2 inside it, but in match case it becomes a variable, so clippy
+                        // complaints.
+                        #[allow(non_snake_case)]
+                        Self::$variant $(($v2))? => {
+                            $(
+                                if let Some(v2) = $v2 {
+                                    return match v2 {
+                                        $(
+                                            $v2::$subv => concat!($key, '-', $subk),
+                                        )*
+                                    };
+                                }
+                            )?
+                            return $key;
+                        },
+                    )*
+                }
+            }
+        }
+    };
+}
+pub use __enum_keyword as enum_keyword;
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::extensions::unicode;
+    use core::str::FromStr;
+
+    #[test]
+    fn enum_keywords_test() {
+        enum_keyword!(DummyKeyword {
+            ("standard" => Standard),
+            ("rare" => Rare),
+        }, "dk");
+
+        let v = unicode::Value::from_str("standard").unwrap();
+        let dk = DummyKeyword::try_from(&v).unwrap();
+        assert_eq!(dk, DummyKeyword::Standard);
+        assert_eq!(unicode::Value::from(dk), v);
+
+        let v = unicode::Value::from_str("rare").unwrap();
+        let dk = DummyKeyword::try_from(&v).unwrap();
+        assert_eq!(dk, DummyKeyword::Rare);
+        assert_eq!(unicode::Value::from(dk), v);
+
+        let v = unicode::Value::from_str("foo").unwrap();
+        let dk = DummyKeyword::try_from(&v);
+        assert!(dk.is_err());
+
+        assert_eq!(DummyKeyword::Standard.as_str(), "standard");
+    }
+
+    #[test]
+    fn enum_keywords_test_alias() {
+        enum_keyword!(DummyKeyword {
+            ("standard" => Standard),
+            ("rare" => Rare),
+        }, "dk", s, if *s == value!("std") { return Ok(Self::Standard) });
+
+        let v = unicode::Value::from_str("standard").unwrap();
+        let dk = DummyKeyword::try_from(&v).unwrap();
+        assert_eq!(dk, DummyKeyword::Standard);
+        assert_eq!(unicode::Value::from(dk), v);
+
+        let v_alias = unicode::Value::from_str("std").unwrap();
+        let dk = DummyKeyword::try_from(&v_alias).unwrap();
+        assert_eq!(dk, DummyKeyword::Standard);
+        assert_eq!(unicode::Value::from(dk), v);
+
+        let v = unicode::Value::from_str("rare").unwrap();
+        let dk = DummyKeyword::try_from(&v).unwrap();
+        assert_eq!(dk, DummyKeyword::Rare);
+        assert_eq!(unicode::Value::from(dk), v);
+
+        let v = unicode::Value::from_str("foo").unwrap();
+        let dk = DummyKeyword::try_from(&v);
+        assert!(dk.is_err());
+
+        assert_eq!(DummyKeyword::Standard.as_str(), "standard");
+    }
+
+    #[test]
+    fn enum_keywords_nested_test() {
+        enum_keyword!(DummySubKeyword { Standard, Rare });
+
+        enum_keyword!(DummyKeyword {
+            ("default" => Default),
+            ("sub" => Sub(DummySubKeyword) {
+                ("standard" => Standard),
+                ("rare" => Rare)
+            })
+        }, "dk");
+
+        let v = unicode::Value::from_str("default").unwrap();
+        let dk = DummyKeyword::try_from(&v).unwrap();
+        assert_eq!(dk, DummyKeyword::Default);
+        assert_eq!(unicode::Value::from(dk), v);
+
+        let v = unicode::Value::from_str("sub").unwrap();
+        let dk = DummyKeyword::try_from(&v).unwrap();
+        assert_eq!(dk, DummyKeyword::Sub(None));
+        assert_eq!(unicode::Value::from(dk), v);
+
+        let v = unicode::Value::from_str("foo").unwrap();
+        let dk = DummyKeyword::try_from(&v);
+        assert!(dk.is_err());
+
+        let v = unicode::Value::from_str("sub-standard").unwrap();
+        let dk = DummyKeyword::try_from(&v).unwrap();
+        assert_eq!(dk, DummyKeyword::Sub(Some(DummySubKeyword::Standard)));
+        assert_eq!(unicode::Value::from(dk), v);
+
+        let v = unicode::Value::from_str("sub-rare").unwrap();
+        let dk = DummyKeyword::try_from(&v).unwrap();
+        assert_eq!(dk, DummyKeyword::Sub(Some(DummySubKeyword::Rare)));
+        assert_eq!(unicode::Value::from(dk), v);
+
+        let v = unicode::Value::from_str("sub-foo").unwrap();
+        let dk = DummyKeyword::try_from(&v).unwrap();
+        assert_eq!(dk, DummyKeyword::Sub(None));
+        assert_eq!(unicode::Value::from(dk), unicode::value!("sub"));
+
+        assert_eq!(
+            DummyKeyword::Sub(Some(DummySubKeyword::Rare)).as_str(),
+            "sub-rare"
+        );
+    }
+}
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/macros/mod.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/macros/mod.rs
new file mode 100644
index 00000000..7f5ab9f8
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/macros/mod.rs
@@ -0,0 +1,13 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+mod enum_keyword;
+mod struct_keyword;
+
+#[doc(inline)]
+#[cfg(feature = "alloc")]
+pub use enum_keyword::enum_keyword;
+#[doc(inline)]
+pub use struct_keyword::struct_keyword;
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/macros/struct_keyword.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/macros/struct_keyword.rs
new file mode 100644
index 00000000..68004fbd
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/macros/struct_keyword.rs
@@ -0,0 +1,124 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+/// Macro used to generate a preference keyword as a struct.
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::{
+///     extensions::unicode::{Key, Value},
+///     preferences::extensions::unicode::struct_keyword,
+/// };
+///
+/// struct_keyword!(
+///     CurrencyType,
+///     "cu",
+///     String,
+///     |input: Value| { Ok(Self(input.to_string())) },
+///     |input: CurrencyType| {
+///         icu::locale::extensions::unicode::Value::try_from_str(
+///             input.0.as_str(),
+///         )
+///         .unwrap()
+///     }
+/// );
+/// ```
+#[macro_export]
+#[doc(hidden)]
+macro_rules! __struct_keyword {
+    ($(#[$doc:meta])* $([$derive_attrs:ty])? $name:ident, $ext_key:literal, $value:ty, $try_from:expr, $into:expr) => {
+        $(#[$doc])*
+        #[derive(Debug, Clone, Eq, PartialEq, Hash)]
+        $(#[derive($derive_attrs)])?
+        #[allow(clippy::exhaustive_structs)] // TODO
+        pub struct $name($value);
+
+        impl TryFrom<$crate::extensions::unicode::Value> for $name {
+            type Error = $crate::preferences::extensions::unicode::errors::PreferencesParseError;
+
+            fn try_from(
+                input: $crate::extensions::unicode::Value,
+            ) -> Result<Self, Self::Error> {
+                $try_from(input)
+            }
+        }
+
+        impl From<$name> for $crate::extensions::unicode::Value {
+            fn from(input: $name) -> $crate::extensions::unicode::Value {
+                $into(input)
+            }
+        }
+
+        impl $crate::preferences::PreferenceKey for $name {
+            fn unicode_extension_key() -> Option<$crate::extensions::unicode::Key> {
+                Some($crate::extensions::unicode::key!($ext_key))
+            }
+
+            fn try_from_key_value(
+                key: &$crate::extensions::unicode::Key,
+                value: &$crate::extensions::unicode::Value,
+            ) -> Result<Option<Self>, $crate::preferences::extensions::unicode::errors::PreferencesParseError> {
+                if Self::unicode_extension_key() == Some(*key) {
+                    let result = Self::try_from(value.clone())?;
+                    Ok(Some(result))
+                } else {
+                    Ok(None)
+                }
+            }
+
+            fn unicode_extension_value(
+                &self,
+            ) -> Option<$crate::extensions::unicode::Value> {
+                Some(self.clone().into())
+            }
+        }
+
+        impl core::ops::Deref for $name {
+            type Target = $value;
+
+            fn deref(&self) -> &Self::Target {
+                &self.0
+            }
+        }
+    };
+}
+pub use __struct_keyword as struct_keyword;
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::{
+        extensions::unicode,
+        subtags::{subtag, Subtag},
+    };
+    use core::str::FromStr;
+
+    #[test]
+    fn struct_keywords_test() {
+        struct_keyword!(
+            DummyKeyword,
+            "dk",
+            Subtag,
+            |input: unicode::Value| {
+                if let Some(subtag) = input.into_single_subtag() {
+                    if subtag.len() == 3 {
+                        return Ok(DummyKeyword(subtag));
+                    }
+                }
+                Err(crate::preferences::extensions::unicode::errors::PreferencesParseError::InvalidKeywordValue)
+            },
+            |input: DummyKeyword| { unicode::Value::from_subtag(Some(input.0)) }
+        );
+
+        let v = unicode::Value::from_str("foo").unwrap();
+        let dk: DummyKeyword = v.clone().try_into().unwrap();
+        assert_eq!(dk, DummyKeyword(subtag!("foo")));
+        assert_eq!(unicode::Value::from(dk), v);
+
+        let v = unicode::Value::from_str("foobar").unwrap();
+        let dk: Result<DummyKeyword, _> = v.clone().try_into();
+        assert!(dk.is_err());
+    }
+}
diff --git a/vendor/icu_locale_core/src/preferences/extensions/unicode/mod.rs b/vendor/icu_locale_core/src/preferences/extensions/unicode/mod.rs
new file mode 100644
index 00000000..370a4382
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/extensions/unicode/mod.rs
@@ -0,0 +1,17 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! A set of unicode extensions which correspond to preferences.
+//!
+//! The module contains a set structs corresponding to Locale [`unicode`](crate::extensions::unicode)
+//! extensions for which ICU4X provides implementations of preferences.
+//!
+//! The macros in this module provide wrappers for creating preferences based on enums and structs.
+//!
+//! [`Locale`]: crate::Locale
+pub mod errors;
+pub mod keywords;
+mod macros;
+#[doc(inline)]
+pub use macros::*;
diff --git a/vendor/icu_locale_core/src/preferences/locale.rs b/vendor/icu_locale_core/src/preferences/locale.rs
new file mode 100644
index 00000000..c7e4fb3f
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/locale.rs
@@ -0,0 +1,180 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::subtags::Variants;
+use crate::subtags::{Language, Region, Script, Subtag, Variant};
+use crate::DataLocale;
+
+/// The structure storing locale subtags used in preferences.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
+pub struct LocalePreferences {
+    /// Preference of Language
+    pub(crate) language: Language,
+    /// Preference of Script
+    pub(crate) script: Option<Script>,
+    /// Preference of Region
+    pub(crate) region: Option<Region>,
+    /// Preference of Variant
+    pub(crate) variant: Option<Variant>,
+    /// Preference of Regional Subdivision
+    pub(crate) subdivision: Option<Subtag>,
+    /// Preference of Unicode Extension Region
+    pub(crate) ue_region: Option<Region>,
+}
+
+impl LocalePreferences {
+    fn to_data_locale_maybe_region_priority(self, region_priority: bool) -> DataLocale {
+        DataLocale {
+            language: self.language,
+            script: self.script,
+            region: match (self.region, self.ue_region) {
+                (Some(_), Some(r)) if region_priority => Some(r),
+                (r, _) => r,
+            },
+            variant: self.variant,
+            subdivision: self.subdivision,
+        }
+    }
+
+    /// Convert to a DataLocale, with region-based fallback priority
+    ///
+    /// Most users should use `icu_provider::marker::make_locale()` instead.
+    pub fn to_data_locale_region_priority(self) -> DataLocale {
+        self.to_data_locale_maybe_region_priority(true)
+    }
+
+    /// Convert to a DataLocale, with language-based fallback priority
+    ///
+    /// Most users should use `icu_provider::marker::make_locale()` instead.
+    pub fn to_data_locale_language_priority(self) -> DataLocale {
+        self.to_data_locale_maybe_region_priority(false)
+    }
+}
+impl Default for LocalePreferences {
+    fn default() -> Self {
+        Self::default()
+    }
+}
+
+impl From<&crate::Locale> for LocalePreferences {
+    fn from(loc: &crate::Locale) -> Self {
+        let sd = loc
+            .extensions
+            .unicode
+            .keywords
+            .get(&crate::extensions::unicode::key!("sd"))
+            .and_then(|v| v.as_single_subtag().copied());
+        let ue_region = loc
+            .extensions
+            .unicode
+            .keywords
+            .get(&crate::extensions::unicode::key!("rg"))
+            .and_then(|v| {
+                v.as_single_subtag()
+                    .and_then(|s| Region::try_from_str(s.as_str()).ok())
+            });
+        Self {
+            language: loc.id.language,
+            script: loc.id.script,
+            region: loc.id.region,
+            variant: loc.id.variants.iter().copied().next(),
+            subdivision: sd,
+            ue_region,
+        }
+    }
+}
+
+impl From<&crate::LanguageIdentifier> for LocalePreferences {
+    fn from(lid: &crate::LanguageIdentifier) -> Self {
+        Self {
+            language: lid.language,
+            script: lid.script,
+            region: lid.region,
+            variant: lid.variants.iter().copied().next(),
+            subdivision: None,
+            ue_region: None,
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl From<LocalePreferences> for crate::Locale {
+    fn from(prefs: LocalePreferences) -> Self {
+        Self {
+            id: crate::LanguageIdentifier {
+                language: prefs.language,
+                script: prefs.script,
+                region: prefs.region,
+                variants: prefs
+                    .variant
+                    .map(Variants::from_variant)
+                    .unwrap_or_default(),
+            },
+            extensions: {
+                let mut extensions = crate::extensions::Extensions::default();
+                if let Some(sd) = prefs.subdivision {
+                    extensions.unicode.keywords.set(
+                        crate::extensions::unicode::key!("sd"),
+                        crate::extensions::unicode::Value::from_subtag(Some(sd)),
+                    );
+                }
+                if let Some(rg) = prefs.ue_region {
+                    #[allow(clippy::unwrap_used)] // Region is a valid Subtag
+                    extensions.unicode.keywords.set(
+                        crate::extensions::unicode::key!("rg"),
+                        crate::extensions::unicode::Value::try_from_str(rg.as_str()).unwrap(),
+                    );
+                }
+                extensions
+            },
+        }
+    }
+}
+
+impl LocalePreferences {
+    /// Constructs a new [`LocalePreferences`] struct with the defaults.
+    pub const fn default() -> Self {
+        Self {
+            language: Language::UNKNOWN,
+            script: None,
+            region: None,
+            variant: None,
+            subdivision: None,
+            ue_region: None,
+        }
+    }
+
+    /// Preference of Language
+    pub const fn language(&self) -> Language {
+        self.language
+    }
+
+    /// Preference of Region
+    pub const fn region(&self) -> Option<Region> {
+        self.region
+    }
+
+    /// Extends the preferences with the values from another set of preferences.
+    pub fn extend(&mut self, other: LocalePreferences) {
+        if !other.language.is_unknown() {
+            self.language = other.language;
+        }
+        if let Some(script) = other.script {
+            self.script = Some(script);
+        }
+        if let Some(region) = other.region {
+            self.region = Some(region);
+        }
+        if let Some(variant) = other.variant {
+            self.variant = Some(variant);
+        }
+        if let Some(sd) = other.subdivision {
+            self.subdivision = Some(sd);
+        }
+        if let Some(ue_region) = other.ue_region {
+            self.ue_region = Some(ue_region);
+        }
+    }
+}
diff --git a/vendor/icu_locale_core/src/preferences/mod.rs b/vendor/icu_locale_core/src/preferences/mod.rs
new file mode 100644
index 00000000..12c7d312
--- /dev/null
+++ b/vendor/icu_locale_core/src/preferences/mod.rs
@@ -0,0 +1,612 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This API provides necessary functionality for building user preferences structs.
+//!
+//! It includes the ability to merge information between the struct and a [`Locale`],
+//! facilitating the resolution of attributes against default values.
+//!
+//! Preferences struct serve as a composable argument to `ICU4X` constructors, allowing
+//! for ergonomic merging between information encoded in multiple sets of user inputs:
+//! Locale, application preferences and operating system preferences.
+//!
+//! The crate is intended primarily to be used by components constructors to normalize the format
+//! of ingesting preferences across all of `ICU4X`.
+//!
+//! # Preferences vs Options
+//!
+//! ICU4X introduces a separation between two classes of parameters that are used
+//! to adjust the behavior of a component.
+//!
+//! `Preferences` represent the user-driven preferences on how the given user wants the internationalization
+//! to behave. Those are items like language, script, calendar and numbering systems etc.
+//!
+//! `Options` represent the developer-driven adjustments that affect how given information is presented
+//! based on the requirements of the application like available space or intended tone.
+//!
+//! # Options Division
+//!
+//! The `Options` themselves are also divided into options that are affecting data slicing, and ones that don't.
+//! This is necessary to allow for DCE and FFI to produce minimal outputs avoiding loading unnecessary data that
+//! is never to be used by a given component.
+//! The result is that some option keys affect specialized constructors such as `try_new_short`, `try_new_long`, which
+//! result in data provider loading only data necessary to format short or long values respectively.
+//! For options that are not affecting data slicing, an `Options` struct is provided that the developer
+//! can fill with selected key values, or use the defaults.
+//!
+//! # Preferences Merging
+//!
+//! In traditional internatonalization APIs, the argument passed to constructors is a locale.
+//! ICU4X changes this paradigm by accepting a `Preferences`, which can be extracted from a [`Locale`] and combined with
+//! other `Preferences`s provided by the environment.
+//!
+//! This approach makes it easy for developers to write code that takes just a locale, as in other systems,
+//! as well as handle more sophisticated cases where the application may receive, for example, a locale,
+//! a set of internationalization preferences specified within the application,
+//! and a third set extracted from the operating system's preferences.
+//!
+//! # ECMA-402 vs ICU4X
+//!
+//! The result of the two paradigm shifts presented above is that the way constructors work is different.
+//!
+//! ## ECMA-402
+//! ```ignore
+//! let locale = new Locale("en-US-u-hc-h12");
+//! let options = {
+//!   hourCycle: "h24", // user preference
+//!   timeStyle: "long", // developer option
+//! };
+//!
+//! let dtf = new DateTimeFormat(locale, options);
+//! ```
+//!
+//! ## ICU4X
+//! ```ignore
+//! let loc = locale!("en-US-u-hc-h12");
+//! let prefs = DateTimeFormatterPreferences {
+//!     hour_cycle: HourCycle::H23,
+//! };
+//! let options = DateTimeFormatterOptions {
+//!     time_style: TimeStyle::Long,
+//! };
+//!
+//! let mut combined_prefs = DateTimeFormatterPreferences::from(loc);
+//! combined_prefs.extend(prefs);
+//!
+//! let dtf = DateTimeFormatter::try_new(combined_prefs, options);
+//! ```
+//!
+//! This architecture allows for flexible composition of user and developer settings
+//! sourced from different locations in custom ways based on the needs of each deployment.
+//!
+//! Below are some examples of how the `Preferences` model can be used in different setups.
+//!
+//! # Examples
+//!
+//! ```
+//! use icu::locale::preferences::{
+//!   define_preferences,
+//!   extensions::unicode::keywords::HourCycle,
+//! };
+//! use icu::locale::locale;
+//!
+//! # fn get_data_locale_from_prefs(input: ExampleComponentPreferences) -> () { () }
+//! # fn load_data(locale: ()) -> MyData { MyData {} }
+//! # struct MyData {}
+//! define_preferences!(
+//!     /// Name of the preferences struct
+//!     [Copy]
+//!     ExampleComponentPreferences,
+//!     {
+//!         /// A preference relevant to the component
+//!         hour_cycle: HourCycle
+//!     }
+//! );
+//!
+//! pub struct ExampleComponent {
+//!     data: MyData,
+//! }
+//!
+//! impl ExampleComponent {
+//!     pub fn new(prefs: ExampleComponentPreferences) -> Self {
+//!         let locale = get_data_locale_from_prefs(prefs);
+//!         let data = load_data(locale);
+//!
+//!         Self { data }
+//!     }
+//! }
+//! ```
+//!
+//! Now we can use that component in multiple different ways,
+//!
+//! ## Scenario 1: Use Locale as the only input
+//! ```
+//! # use icu::locale::preferences::{
+//! #   define_preferences,
+//! #   extensions::unicode::keywords::HourCycle,
+//! # };
+//! # use icu::locale::locale;
+//! # fn get_data_locale_from_prefs(input: ExampleComponentPreferences) -> () { () }
+//! # fn load_data(locale: ()) -> MyData { MyData {} }
+//! # struct MyData {}
+//! # define_preferences!(
+//! #     /// Name of the preferences struct
+//! #     [Copy]
+//! #     ExampleComponentPreferences,
+//! #     {
+//! #         /// A preference relevant to the component
+//! #         hour_cycle: HourCycle
+//! #     }
+//! # );
+//! #
+//! # pub struct ExampleComponent {
+//! #     data: MyData,
+//! # }
+//! # impl ExampleComponent {
+//! #     pub fn new(prefs: ExampleComponentPreferences) -> Self {
+//! #         let locale = get_data_locale_from_prefs(prefs);
+//! #         let data = load_data(locale);
+//! #
+//! #         Self { data }
+//! #     }
+//! # }
+//! let loc = locale!("en-US-u-hc-h23");
+//! let tf = ExampleComponent::new(loc.into());
+//! ```
+//!
+//! ## Scenario 2: Compose Preferences and Locale
+//! ```
+//! # use icu::locale::preferences::{
+//! #   define_preferences,
+//! #   extensions::unicode::keywords::HourCycle,
+//! # };
+//! # use icu::locale::locale;
+//! # fn get_data_locale_from_prefs(input: ExampleComponentPreferences) -> () { () }
+//! # fn load_data(locale: ()) -> MyData { MyData {} }
+//! # struct MyData {}
+//! # define_preferences!(
+//! #     /// Name of the preferences struct
+//! #     [Copy]
+//! #     ExampleComponentPreferences,
+//! #     {
+//! #         /// A preference relevant to the component
+//! #         hour_cycle: HourCycle
+//! #     }
+//! # );
+//! #
+//! # pub struct ExampleComponent {
+//! #     data: MyData,
+//! # }
+//! # impl ExampleComponent {
+//! #     pub fn new(prefs: ExampleComponentPreferences) -> Self {
+//! #         let locale = get_data_locale_from_prefs(prefs);
+//! #         let data = load_data(locale);
+//! #
+//! #         Self { data }
+//! #     }
+//! # }
+//! let loc = locale!("en-US-u-hc-h23");
+//! let app_prefs = ExampleComponentPreferences {
+//!     hour_cycle: Some(HourCycle::H12),
+//!     ..Default::default()
+//! };
+//!
+//! let mut combined_prefs = ExampleComponentPreferences::from(loc);
+//! combined_prefs.extend(app_prefs);
+//!
+//! // HourCycle is set from the prefs bag and override the value from the locale
+//! assert_eq!(combined_prefs.hour_cycle, Some(HourCycle::H12));
+//!
+//! let tf = ExampleComponent::new(combined_prefs);
+//! ```
+//!
+//! ## Scenario 3: Merge Preferences from Locale, OS, and Application
+//! ```
+//! # use icu::locale::preferences::{
+//! #   define_preferences,
+//! #   extensions::unicode::keywords::HourCycle,
+//! # };
+//! # use icu::locale::locale;
+//! # fn get_data_locale_from_prefs(input: ExampleComponentPreferences) -> () { () }
+//! # fn load_data(locale: ()) -> MyData { MyData {} }
+//! # struct MyData {}
+//! # define_preferences!(
+//! #     /// Name of the preferences struct
+//! #     [Copy]
+//! #     ExampleComponentPreferences,
+//! #     {
+//! #         /// A preference relevant to the component
+//! #         hour_cycle: HourCycle
+//! #     }
+//! # );
+//! #
+//! # pub struct ExampleComponent {
+//! #     data: MyData,
+//! # }
+//! # impl ExampleComponent {
+//! #     pub fn new(prefs: ExampleComponentPreferences) -> Self {
+//! #         let locale = get_data_locale_from_prefs(prefs);
+//! #         let data = load_data(locale);
+//! #
+//! #         Self { data }
+//! #     }
+//! # }
+//! let loc = locale!("en-US");
+//!
+//! // Simulate OS preferences
+//! let os_prefs = ExampleComponentPreferences {
+//!     hour_cycle: Some(HourCycle::H23),
+//!     ..Default::default()
+//! };
+//!
+//! // Application does not specify hour_cycle
+//! let app_prefs = ExampleComponentPreferences {
+//!     hour_cycle: None,
+//!     ..Default::default()
+//! };
+//!
+//! let mut combined_prefs = ExampleComponentPreferences::from(loc);
+//! combined_prefs.extend(os_prefs);
+//! combined_prefs.extend(app_prefs);
+//!
+//! // HourCycle is set from the OS preferences since the application didn't specify it
+//! assert_eq!(combined_prefs.hour_cycle, Some(HourCycle::H23));
+//!
+//! let tf = ExampleComponent::new(combined_prefs);
+//! ```
+//!
+//! ## Scenario 4: Neither Application nor OS specify the preference
+//! ```
+//! # use icu::locale::preferences::{
+//! #   define_preferences,
+//! #   extensions::unicode::keywords::HourCycle,
+//! # };
+//! # use icu::locale::locale;
+//! # fn get_data_locale_from_prefs(input: ExampleComponentPreferences) -> () { () }
+//! # fn load_data(locale: ()) -> MyData { MyData {} }
+//! # struct MyData {}
+//! # define_preferences!(
+//! #     /// Name of the preferences struct
+//! #     [Copy]
+//! #     ExampleComponentPreferences,
+//! #     {
+//! #         /// A preference relevant to the component
+//! #         hour_cycle: HourCycle
+//! #     }
+//! # );
+//! #
+//! # pub struct ExampleComponent {
+//! #     data: MyData,
+//! # }
+//! # impl ExampleComponent {
+//! #     pub fn new(prefs: ExampleComponentPreferences) -> Self {
+//! #         let locale = get_data_locale_from_prefs(prefs);
+//! #         let data = load_data(locale);
+//! #
+//! #         Self { data }
+//! #     }
+//! # }
+//! let loc = locale!("en-US-u-hc-h23");
+//!
+//! // Simulate OS preferences
+//! let os_prefs = ExampleComponentPreferences::default(); // OS does not specify hour_cycle
+//! let app_prefs = ExampleComponentPreferences::default(); // Application does not specify hour_cycle
+//!
+//! let mut combined_prefs = ExampleComponentPreferences::from(loc);
+//! combined_prefs.extend(os_prefs);
+//! combined_prefs.extend(app_prefs);
+//!
+//! // HourCycle is taken from the locale
+//! assert_eq!(combined_prefs.hour_cycle, Some(HourCycle::H23));
+//!
+//! let tf = ExampleComponent::new(combined_prefs);
+//! ```
+//!
+//! [`ICU4X`]: ../icu/index.html
+//! [`Locale`]: crate::Locale
+
+pub mod extensions;
+mod locale;
+pub use locale::*;
+
+/// A low-level trait implemented on each preference exposed in component preferences.
+///
+/// [`PreferenceKey`] has to be implemented on
+/// preferences that are to be included in Formatter preferences.
+/// The trait may be implemented to indicate that the given preference has
+/// a unicode key corresponding to it or be a custom one.
+///
+/// `ICU4X` provides an implementation of [`PreferenceKey`] for all
+/// Unicode Extension Keys. The only external use of this trait is to implement
+/// it on custom preferences that are to be included in a component preferences bag.
+///
+/// The below example show cases a manual generation of an `em` (emoji) unicode extension key
+/// and a custom struct to showcase the difference in their behavior. For all use purposes,
+/// the [`EmojiPresentationStyle`](crate::preferences::extensions::unicode::keywords::EmojiPresentationStyle) preference exposed by this crate should be used.
+///
+/// # Examples
+/// ```
+/// use icu::locale::{
+///   extensions::unicode::{key, Key, value, Value},
+///   preferences::{
+///     define_preferences, PreferenceKey,
+///     extensions::unicode::errors::PreferencesParseError,
+///   },
+/// };
+///
+/// #[non_exhaustive]
+/// #[derive(Debug, Clone, Eq, PartialEq, Copy, Hash, Default)]
+/// pub enum EmojiPresentationStyle {
+///     Emoji,
+///     Text,
+///     #[default]
+///     Default,
+/// }
+///
+/// impl PreferenceKey for EmojiPresentationStyle {
+///     fn unicode_extension_key() -> Option<Key> {
+///         Some(key!("em"))
+///     }
+///
+///     fn try_from_key_value(
+///         key: &Key,
+///         value: &Value,
+///     ) -> Result<Option<Self>, PreferencesParseError> {
+///         if Self::unicode_extension_key() == Some(*key) {
+///             let subtag = value.as_single_subtag()
+///                               .ok_or(PreferencesParseError::InvalidKeywordValue)?;
+///             match subtag.as_str() {
+///                 "emoji" => Ok(Some(Self::Emoji)),
+///                 "text" => Ok(Some(Self::Text)),
+///                 "default" => Ok(Some(Self::Default)),
+///                 _ => Err(PreferencesParseError::InvalidKeywordValue)
+///             }
+///         } else {
+///             Ok(None)
+///         }
+///     }
+///
+///     fn unicode_extension_value(&self) -> Option<Value> {
+///         Some(match self {
+///             EmojiPresentationStyle::Emoji => value!("emoji"),
+///             EmojiPresentationStyle::Text => value!("text"),
+///             EmojiPresentationStyle::Default => value!("default"),
+///         })
+///     }
+/// }
+///
+/// #[non_exhaustive]
+/// #[derive(Debug, Clone, Eq, PartialEq, Hash)]
+/// pub struct CustomFormat {
+///     value: String
+/// }
+///
+/// impl PreferenceKey for CustomFormat {}
+///
+/// define_preferences!(
+///     MyFormatterPreferences,
+///     {
+///         emoji: EmojiPresentationStyle,
+///         custom: CustomFormat
+///     }
+/// );
+/// ```
+/// [`ICU4X`]: ../icu/index.html
+pub trait PreferenceKey: Sized {
+    /// Optional constructor of the given preference. It takes the
+    /// unicode extension key and if the key matches it attemptes to construct
+    /// the preference based on the given value.
+    /// If the value is not a valid value for the given key, the constructor throws.
+    fn try_from_key_value(
+        _key: &crate::extensions::unicode::Key,
+        _value: &crate::extensions::unicode::Value,
+    ) -> Result<Option<Self>, crate::preferences::extensions::unicode::errors::PreferencesParseError>
+    {
+        Ok(None)
+    }
+
+    /// Retrieve unicode extension key corresponding to a given preference.
+    fn unicode_extension_key() -> Option<crate::extensions::unicode::Key> {
+        None
+    }
+
+    /// Retrieve unicode extension value corresponding to the given instance of the preference.
+    fn unicode_extension_value(&self) -> Option<crate::extensions::unicode::Value> {
+        None
+    }
+}
+
+/// A macro to facilitate generation of preferences struct.
+///
+///
+/// The generated preferences struct provides methods for merging and converting between [`Locale`] and
+/// the preference bag. See [`preferences`](crate::preferences) for use cases.
+///
+/// In the example below, the input argument is the generated preferences struct which
+/// can be auto-converted from a Locale, or combined from a Locale and Preferences Bag.
+///
+/// # Examples
+/// ```
+/// use icu::locale::{
+///     preferences::{
+///         define_preferences,
+///         extensions::unicode::keywords::HourCycle
+///     },
+///     locale,
+/// };
+///
+/// define_preferences!(
+///     [Copy]
+///     NoCalendarFormatterPreferences,
+///     {
+///         hour_cycle: HourCycle
+///     }
+/// );
+///
+/// struct NoCalendarFormatter {}
+///
+/// impl NoCalendarFormatter {
+///     pub fn try_new(prefs: NoCalendarFormatterPreferences) -> Result<Self, ()> {
+///         // load data and set struct fields based on the prefs input
+///         Ok(Self {})
+///     }
+/// }
+///
+/// let loc = locale!("en-US");
+///
+/// let tf = NoCalendarFormatter::try_new(loc.into());
+/// ```
+///
+/// [`Locale`]: crate::Locale
+#[macro_export]
+#[doc(hidden)]
+macro_rules! __define_preferences {
+    (
+        $(#[$doc:meta])*
+        $([$derive_attrs:ty])?
+        $name:ident,
+        {
+            $(
+                $(#[$key_doc:meta])*
+                $key:ident: $pref:ty
+            ),*
+        }
+     ) => (
+        $(#[$doc])*
+        #[derive(Default, Debug, Clone, PartialEq, Eq, Hash)]
+        $(#[derive($derive_attrs)])?
+        #[non_exhaustive]
+        pub struct $name {
+            /// Locale Preferences for the Preferences structure.
+            pub locale_preferences: $crate::preferences::LocalePreferences,
+
+            $(
+                $(#[$key_doc])*
+                pub $key: Option<$pref>,
+            )*
+        }
+
+        impl From<$crate::Locale> for $name {
+            fn from(loc: $crate::Locale) -> Self {
+                $name::from(&loc)
+            }
+        }
+
+        impl From<&$crate::Locale> for $name {
+            fn from(loc: &$crate::Locale) -> Self {
+                use $crate::preferences::PreferenceKey;
+
+                $(
+                    let mut $key = None;
+                )*
+
+                for (k, v) in loc.extensions.unicode.keywords.iter() {
+                    $(
+                        if let Ok(Some(r)) = <$pref>::try_from_key_value(k, v) {
+                            $key = Some(r);
+                            continue;
+                        }
+                    )*
+                }
+
+                Self {
+                    locale_preferences: loc.into(),
+
+                    $(
+                        $key,
+                    )*
+                }
+            }
+        }
+
+        impl From<$crate::LanguageIdentifier> for $name {
+            fn from(lid: $crate::LanguageIdentifier) -> Self {
+                $name::from(&lid)
+            }
+        }
+
+        impl From<&$crate::LanguageIdentifier> for $name {
+            fn from(lid: &$crate::LanguageIdentifier) -> Self {
+                Self {
+                    locale_preferences: lid.into(),
+
+                    $(
+                        $key: None,
+                    )*
+                }
+            }
+        }
+
+        // impl From<$name> for $crate::Locale {
+        //     fn from(other: $name) -> Self {
+        //         use $crate::preferences::PreferenceKey;
+        //         let mut result = Self::from(other.locale_preferences);
+        //         $(
+        //             if let Some(value) = other.$key {
+        //                 if let Some(ue) = <$pref>::unicode_extension_key() {
+        //                     let val = value.unicode_extension_value().unwrap();
+        //                     result.extensions.unicode.keywords.set(ue, val);
+        //                 }
+        //             }
+        //         )*
+        //         result
+        //     }
+        // }
+
+        impl $name {
+            /// Extends the preferences with the values from another set of preferences.
+            pub fn extend(&mut self, other: $name) {
+                self.locale_preferences.extend(other.locale_preferences);
+                $(
+                    if let Some(value) = other.$key {
+                        self.$key = Some(value);
+                    }
+                )*
+            }
+        }
+    )
+}
+
+#[macro_export]
+#[doc(hidden)]
+macro_rules! __prefs_convert {
+    (
+        $name1:ident,
+        $name2:ident
+    ) => {
+        impl From<&$name1> for $name2 {
+            fn from(other: &$name1) -> Self {
+                let mut result = Self::default();
+                result.locale_preferences = other.locale_preferences;
+                result
+            }
+        }
+    };
+    (
+        $name1:ident,
+        $name2:ident,
+        {
+            $(
+                $key:ident
+            ),*
+        }
+    ) => {
+        impl From<&$name1> for $name2 {
+            fn from(other: &$name1) -> Self {
+                let mut result = Self::default();
+                result.locale_preferences = other.locale_preferences;
+                $(
+                    result.$key = other.$key;
+                )*
+                result
+            }
+        }
+    };
+}
+
+#[doc(inline)]
+pub use __define_preferences as define_preferences;
+
+#[doc(inline)]
+pub use __prefs_convert as prefs_convert;
diff --git a/vendor/icu_locale_core/src/serde.rs b/vendor/icu_locale_core/src/serde.rs
new file mode 100644
index 00000000..4630a929
--- /dev/null
+++ b/vendor/icu_locale_core/src/serde.rs
@@ -0,0 +1,134 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::LanguageIdentifier;
+use serde::{Deserialize, Deserializer, Serialize, Serializer};
+
+impl Serialize for LanguageIdentifier {
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        serializer.serialize_str(&self.to_string())
+    }
+}
+
+impl<'de> Deserialize<'de> for LanguageIdentifier {
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        struct LanguageIdentifierVisitor;
+
+        impl serde::de::Visitor<'_> for LanguageIdentifierVisitor {
+            type Value = LanguageIdentifier;
+
+            fn expecting(&self, formatter: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+                write!(formatter, "a valid Unicode Language Identifier")
+            }
+
+            fn visit_str<E>(self, s: &str) -> Result<Self::Value, E>
+            where
+                E: serde::de::Error,
+            {
+                s.parse::<LanguageIdentifier>()
+                    .map_err(serde::de::Error::custom)
+            }
+        }
+
+        deserializer.deserialize_string(LanguageIdentifierVisitor)
+    }
+}
+
+#[test]
+fn json() {
+    use crate::langid;
+    use crate::subtags::{Language, Region, Script};
+
+    assert_eq!(
+        serde_json::to_string(&langid!("en-US")).unwrap(),
+        r#""en-US""#
+    );
+    assert_eq!(
+        serde_json::from_str::<LanguageIdentifier>(r#""en-US""#).unwrap(),
+        langid!("en-US")
+    );
+    assert!(serde_json::from_str::<LanguageIdentifier>(r#""2Xs""#).is_err());
+
+    assert_eq!(
+        serde_json::to_string(&"fr".parse::<Language>().unwrap()).unwrap(),
+        r#""fr""#
+    );
+    assert_eq!(
+        serde_json::from_str::<Language>(r#""fr""#).unwrap(),
+        "fr".parse::<Language>().unwrap()
+    );
+    assert!(serde_json::from_str::<Language>(r#""2Xs""#).is_err());
+
+    assert_eq!(
+        serde_json::to_string(&"Latn".parse::<Script>().unwrap()).unwrap(),
+        r#""Latn""#
+    );
+    assert_eq!(
+        serde_json::from_str::<Script>(r#""Latn""#).unwrap(),
+        "Latn".parse::<Script>().unwrap()
+    );
+    assert!(serde_json::from_str::<Script>(r#""2Xs""#).is_err());
+
+    assert_eq!(
+        serde_json::to_string(&"US".parse::<Region>().unwrap()).unwrap(),
+        r#""US""#
+    );
+    assert_eq!(
+        serde_json::from_str::<Region>(r#""US""#).unwrap(),
+        "US".parse::<Region>().unwrap()
+    );
+    assert!(serde_json::from_str::<Region>(r#""2Xs""#).is_err());
+}
+
+#[test]
+fn postcard() {
+    use crate::langid;
+    use crate::subtags::{Language, Region, Script};
+
+    assert_eq!(
+        postcard::to_stdvec(&langid!("en-US")).unwrap(),
+        &[5, b'e', b'n', b'-', b'U', b'S']
+    );
+    assert_eq!(
+        postcard::from_bytes::<LanguageIdentifier>(&[5, b'e', b'n', b'-', b'U', b'S']).unwrap(),
+        langid!("en-US")
+    );
+    assert!(postcard::from_bytes::<LanguageIdentifier>(&[3, b'2', b'X', b's']).is_err());
+
+    assert_eq!(
+        postcard::to_stdvec(&"fr".parse::<Language>().unwrap()).unwrap(),
+        b"fr\0"
+    );
+    assert_eq!(
+        postcard::from_bytes::<Language>(b"fr\0").unwrap(),
+        "fr".parse::<Language>().unwrap()
+    );
+    assert!(postcard::from_bytes::<Language>(b"2Xs").is_err());
+
+    assert_eq!(
+        postcard::to_stdvec(&"Latn".parse::<Script>().unwrap()).unwrap(),
+        b"Latn"
+    );
+    assert_eq!(
+        postcard::from_bytes::<Script>(b"Latn").unwrap(),
+        "Latn".parse::<Script>().unwrap()
+    );
+    assert!(postcard::from_bytes::<Script>(b"2Xss").is_err());
+
+    assert_eq!(
+        postcard::to_stdvec(&"US".parse::<Region>().unwrap()).unwrap(),
+        b"US\0"
+    );
+    assert_eq!(
+        postcard::from_bytes::<Region>(b"US\0").unwrap(),
+        "US".parse::<Region>().unwrap()
+    );
+    assert!(postcard::from_bytes::<Region>(b"2Xs").is_err());
+}
diff --git a/vendor/icu_locale_core/src/shortvec/litemap.rs b/vendor/icu_locale_core/src/shortvec/litemap.rs
new file mode 100644
index 00000000..f83ccf14
--- /dev/null
+++ b/vendor/icu_locale_core/src/shortvec/litemap.rs
@@ -0,0 +1,198 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::ShortBoxSlice;
+use super::ShortBoxSliceInner;
+#[cfg(feature = "alloc")]
+use super::ShortBoxSliceIntoIter;
+use litemap::store::*;
+
+impl<K, V> StoreConstEmpty<K, V> for ShortBoxSlice<(K, V)> {
+    const EMPTY: ShortBoxSlice<(K, V)> = ShortBoxSlice::new();
+}
+
+impl<K, V> StoreSlice<K, V> for ShortBoxSlice<(K, V)> {
+    type Slice = [(K, V)];
+
+    #[inline]
+    fn lm_get_range(&self, range: core::ops::Range<usize>) -> Option<&Self::Slice> {
+        self.get(range)
+    }
+}
+
+impl<K, V> Store<K, V> for ShortBoxSlice<(K, V)> {
+    #[inline]
+    fn lm_len(&self) -> usize {
+        self.len()
+    }
+
+    #[inline]
+    fn lm_is_empty(&self) -> bool {
+        use ShortBoxSliceInner::*;
+        matches!(self.0, ZeroOne(None))
+    }
+
+    #[inline]
+    fn lm_get(&self, index: usize) -> Option<(&K, &V)> {
+        self.get(index).map(|elt| (&elt.0, &elt.1))
+    }
+
+    #[inline]
+    fn lm_last(&self) -> Option<(&K, &V)> {
+        use ShortBoxSliceInner::*;
+        match self.0 {
+            ZeroOne(ref v) => v.as_ref(),
+            #[cfg(feature = "alloc")]
+            Multi(ref v) => v.last(),
+        }
+        .map(|elt| (&elt.0, &elt.1))
+    }
+
+    #[inline]
+    fn lm_binary_search_by<F>(&self, mut cmp: F) -> Result<usize, usize>
+    where
+        F: FnMut(&K) -> core::cmp::Ordering,
+    {
+        self.binary_search_by(|(k, _)| cmp(k))
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<K: Ord, V> StoreFromIterable<K, V> for ShortBoxSlice<(K, V)> {
+    fn lm_sort_from_iter<I: IntoIterator<Item = (K, V)>>(iter: I) -> Self {
+        alloc::vec::Vec::lm_sort_from_iter(iter).into()
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<K, V> StoreMut<K, V> for ShortBoxSlice<(K, V)> {
+    fn lm_with_capacity(_capacity: usize) -> Self {
+        ShortBoxSlice::new()
+    }
+
+    fn lm_reserve(&mut self, _additional: usize) {}
+
+    fn lm_get_mut(&mut self, index: usize) -> Option<(&K, &mut V)> {
+        self.get_mut(index).map(|elt| (&elt.0, &mut elt.1))
+    }
+
+    fn lm_push(&mut self, key: K, value: V) {
+        self.push((key, value))
+    }
+
+    fn lm_insert(&mut self, index: usize, key: K, value: V) {
+        self.insert(index, (key, value))
+    }
+
+    fn lm_remove(&mut self, index: usize) -> (K, V) {
+        self.remove(index)
+    }
+
+    fn lm_clear(&mut self) {
+        self.clear();
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<K: Ord, V> StoreBulkMut<K, V> for ShortBoxSlice<(K, V)> {
+    fn lm_retain<F>(&mut self, mut predicate: F)
+    where
+        F: FnMut(&K, &V) -> bool,
+    {
+        self.retain(|(k, v)| predicate(k, v))
+    }
+
+    fn lm_extend<I>(&mut self, other: I)
+    where
+        I: IntoIterator<Item = (K, V)>,
+    {
+        let mut other = other.into_iter();
+        // Use an Option to hold the first item of the map and move it to
+        // items if there are more items. Meaning that if items is not
+        // empty, first is None.
+        let mut first = None;
+        let mut items = alloc::vec::Vec::new();
+        match core::mem::take(&mut self.0) {
+            ShortBoxSliceInner::ZeroOne(zo) => {
+                first = zo;
+                // Attempt to avoid the items allocation by advancing the iterator
+                // up to two times. If we eventually find a second item, we can
+                // lm_extend the Vec and with the first, next (second) and the rest
+                // of the iterator.
+                while let Some(next) = other.next() {
+                    if let Some(first) = first.take() {
+                        // lm_extend will take care of sorting and deduplicating
+                        // first, next and the rest of the other iterator.
+                        items.lm_extend([first, next].into_iter().chain(other));
+                        break;
+                    }
+                    first = Some(next);
+                }
+            }
+            ShortBoxSliceInner::Multi(existing_items) => {
+                items.reserve_exact(existing_items.len() + other.size_hint().0);
+                // We use a plain extend with existing items, which are already valid and
+                // lm_extend will fold over rest of the iterator sorting and deduplicating as needed.
+                items.extend(existing_items);
+                items.lm_extend(other);
+            }
+        }
+        if items.is_empty() {
+            debug_assert!(items.is_empty());
+            self.0 = ShortBoxSliceInner::ZeroOne(first);
+        } else {
+            debug_assert!(first.is_none());
+            self.0 = ShortBoxSliceInner::Multi(items.into_boxed_slice());
+        }
+    }
+}
+
+impl<'a, K: 'a, V: 'a> StoreIterable<'a, K, V> for ShortBoxSlice<(K, V)> {
+    type KeyValueIter =
+        core::iter::Map<core::slice::Iter<'a, (K, V)>, for<'r> fn(&'r (K, V)) -> (&'r K, &'r V)>;
+
+    fn lm_iter(&'a self) -> Self::KeyValueIter {
+        self.iter().map(|elt| (&elt.0, &elt.1))
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<K, V> StoreFromIterator<K, V> for ShortBoxSlice<(K, V)> {}
+
+#[cfg(feature = "alloc")]
+impl<'a, K: 'a, V: 'a> StoreIterableMut<'a, K, V> for ShortBoxSlice<(K, V)> {
+    type KeyValueIterMut = core::iter::Map<
+        core::slice::IterMut<'a, (K, V)>,
+        for<'r> fn(&'r mut (K, V)) -> (&'r K, &'r mut V),
+    >;
+
+    fn lm_iter_mut(
+        &'a mut self,
+    ) -> <Self as litemap::store::StoreIterableMut<'a, K, V>>::KeyValueIterMut {
+        self.iter_mut().map(|elt| (&elt.0, &mut elt.1))
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<K, V> StoreIntoIterator<K, V> for ShortBoxSlice<(K, V)> {
+    type KeyValueIntoIter = ShortBoxSliceIntoIter<(K, V)>;
+
+    fn lm_into_iter(self) -> Self::KeyValueIntoIter {
+        self.into_iter()
+    }
+
+    // leave lm_extend_end as default
+
+    // leave lm_extend_start as default
+}
+
+#[test]
+fn test_short_slice_impl() {
+    litemap::testing::check_store::<ShortBoxSlice<(u32, u64)>>();
+}
+
+#[test]
+fn test_short_slice_impl_full() {
+    litemap::testing::check_store_full::<ShortBoxSlice<(u32, u64)>>();
+}
diff --git a/vendor/icu_locale_core/src/shortvec/mod.rs b/vendor/icu_locale_core/src/shortvec/mod.rs
new file mode 100644
index 00000000..0fddd7c3
--- /dev/null
+++ b/vendor/icu_locale_core/src/shortvec/mod.rs
@@ -0,0 +1,370 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module includes variable-length data types that are const-constructible for single
+//! values and overflow to the heap.
+//!
+//! # Why?
+//!
+//! This module is far from the first stack-or-heap vector in the Rust ecosystem. It was created
+//! with the following value proposition:
+//!
+//! 1. Enable safe const construction of stack collections.
+//! 2. Avoid stack size penalties common with stack-or-heap collections.
+//!
+//! As of this writing, `heapless` and `tinyvec` don't support const construction except
+//! for empty vectors, and `smallvec` supports it on unstable.
+//!
+//! Additionally, [`ShortBoxSlice`] has a smaller stack size than any of these:
+//!
+//! ```ignore
+//! use core::mem::size_of;
+//!
+//! // NonZeroU64 has a niche that this module utilizes
+//! use core::num::NonZeroU64;
+//!
+//! // ShortBoxSlice is the same size as `Box<[]>` for small or nichey values
+//! assert_eq!(16, size_of::<shortvec::ShortBoxSlice::<NonZeroU64>>());
+//!
+//! // Note: SmallVec supports pushing and therefore has a capacity field
+//! assert_eq!(24, size_of::<smallvec::SmallVec::<[NonZeroU64; 1]>>());
+//!
+//! // Note: heapless doesn't support spilling to the heap
+//! assert_eq!(16, size_of::<heapless::Vec::<NonZeroU64, 1>>());
+//!
+//! // Note: TinyVec only supports types that implement `Default`
+//! assert_eq!(24, size_of::<tinyvec::TinyVec::<[u64; 1]>>());
+//! ```
+//!
+//! The module is `no_std` with `alloc`.
+
+mod litemap;
+
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+#[cfg(feature = "alloc")]
+use alloc::vec;
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+use core::ops::Deref;
+use core::ops::DerefMut;
+
+/// A boxed slice that supports no-allocation, constant values if length 0 or 1.
+/// Using ZeroOne(Option<T>) saves 8 bytes in ShortBoxSlice via niche optimization.
+#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
+pub(crate) enum ShortBoxSliceInner<T> {
+    ZeroOne(Option<T>),
+    #[cfg(feature = "alloc")]
+    Multi(Box<[T]>),
+}
+
+impl<T> Default for ShortBoxSliceInner<T> {
+    fn default() -> Self {
+        use ShortBoxSliceInner::*;
+        ZeroOne(None)
+    }
+}
+
+/// A boxed slice that supports no-allocation, constant values if length 0 or 1.
+///
+/// Supports mutation but always reallocs when mutated.
+#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
+pub(crate) struct ShortBoxSlice<T>(ShortBoxSliceInner<T>);
+
+impl<T> Default for ShortBoxSlice<T> {
+    fn default() -> Self {
+        Self(Default::default())
+    }
+}
+
+impl<T> ShortBoxSlice<T> {
+    /// Creates a new, empty [`ShortBoxSlice`].
+    #[inline]
+    pub const fn new() -> Self {
+        use ShortBoxSliceInner::*;
+        Self(ZeroOne(None))
+    }
+
+    /// Creates a new [`ShortBoxSlice`] containing a single element.
+    #[inline]
+    pub const fn new_single(item: T) -> Self {
+        use ShortBoxSliceInner::*;
+        Self(ZeroOne(Some(item)))
+    }
+
+    /// Pushes an element onto this [`ShortBoxSlice`].
+    ///
+    /// Reallocs if more than 1 item is already in the collection.
+    #[cfg(feature = "alloc")]
+    pub fn push(&mut self, item: T) {
+        use ShortBoxSliceInner::*;
+        self.0 = match core::mem::replace(&mut self.0, ZeroOne(None)) {
+            ZeroOne(None) => ZeroOne(Some(item)),
+            ZeroOne(Some(prev_item)) => Multi(vec![prev_item, item].into_boxed_slice()),
+            Multi(items) => {
+                let mut items = items.into_vec();
+                items.push(item);
+                Multi(items.into_boxed_slice())
+            }
+        };
+    }
+
+    /// Gets a single element from the [`ShortBoxSlice`].
+    ///
+    /// Returns `None` if empty or more than one element.
+    #[inline]
+    pub const fn single(&self) -> Option<&T> {
+        use ShortBoxSliceInner::*;
+        match self.0 {
+            ZeroOne(Some(ref v)) => Some(v),
+            _ => None,
+        }
+    }
+
+    /// Destruct into a single element of the [`ShortBoxSlice`].
+    ///
+    /// Returns `None` if empty or more than one element.
+    pub fn into_single(self) -> Option<T> {
+        use ShortBoxSliceInner::*;
+        match self.0 {
+            ZeroOne(Some(v)) => Some(v),
+            _ => None,
+        }
+    }
+
+    /// Returns the number of elements in the collection.
+    #[inline]
+    pub fn len(&self) -> usize {
+        use ShortBoxSliceInner::*;
+        match self.0 {
+            ZeroOne(None) => 0,
+            ZeroOne(_) => 1,
+            #[cfg(feature = "alloc")]
+            Multi(ref v) => v.len(),
+        }
+    }
+
+    /// Returns whether the collection is empty.
+    #[inline]
+    pub const fn is_empty(&self) -> bool {
+        use ShortBoxSliceInner::*;
+        matches!(self.0, ZeroOne(None))
+    }
+
+    /// Inserts an element at the specified index into the collection.
+    ///
+    /// Reallocs if more than 1 item is already in the collection.
+    #[cfg(feature = "alloc")]
+    pub fn insert(&mut self, index: usize, elt: T) {
+        use ShortBoxSliceInner::*;
+        assert!(
+            index <= self.len(),
+            "insertion index (is {}) should be <= len (is {})",
+            index,
+            self.len()
+        );
+
+        self.0 = match core::mem::replace(&mut self.0, ZeroOne(None)) {
+            ZeroOne(None) => ZeroOne(Some(elt)),
+            ZeroOne(Some(item)) => {
+                let items = if index == 0 {
+                    vec![elt, item].into_boxed_slice()
+                } else {
+                    vec![item, elt].into_boxed_slice()
+                };
+                Multi(items)
+            }
+            Multi(items) => {
+                let mut items = items.into_vec();
+                items.insert(index, elt);
+                Multi(items.into_boxed_slice())
+            }
+        }
+    }
+
+    /// Removes the element at the specified index from the collection.
+    ///
+    /// Reallocs if more than 2 items are in the collection.
+    pub fn remove(&mut self, index: usize) -> T {
+        use ShortBoxSliceInner::*;
+        assert!(
+            index < self.len(),
+            "removal index (is {}) should be < len (is {})",
+            index,
+            self.len()
+        );
+
+        let (replaced, removed_item) = match core::mem::replace(&mut self.0, ZeroOne(None)) {
+            ZeroOne(None) => unreachable!(),
+            ZeroOne(Some(v)) => (ZeroOne(None), v),
+            #[cfg(feature = "alloc")]
+            Multi(v) => {
+                let mut v = v.into_vec();
+                let removed_item = v.remove(index);
+                match v.len() {
+                    #[allow(clippy::unwrap_used)]
+                    // we know that the vec has exactly one element left
+                    1 => (ZeroOne(Some(v.pop().unwrap())), removed_item),
+                    // v has at least 2 elements, create a Multi variant
+                    _ => (Multi(v.into_boxed_slice()), removed_item),
+                }
+            }
+        };
+        self.0 = replaced;
+        removed_item
+    }
+
+    /// Removes all elements from the collection.
+    #[inline]
+    pub fn clear(&mut self) {
+        use ShortBoxSliceInner::*;
+        let _ = core::mem::replace(&mut self.0, ZeroOne(None));
+    }
+
+    /// Retains only the elements specified by the predicate.
+    #[allow(dead_code)]
+    pub fn retain<F>(&mut self, mut f: F)
+    where
+        F: FnMut(&T) -> bool,
+    {
+        use ShortBoxSliceInner::*;
+        match core::mem::take(&mut self.0) {
+            ZeroOne(Some(one)) if f(&one) => self.0 = ZeroOne(Some(one)),
+            ZeroOne(_) => self.0 = ZeroOne(None),
+            #[cfg(feature = "alloc")]
+            Multi(slice) => {
+                let mut vec = slice.into_vec();
+                vec.retain(f);
+                *self = ShortBoxSlice::from(vec)
+            }
+        };
+    }
+}
+
+impl<T> Deref for ShortBoxSlice<T> {
+    type Target = [T];
+
+    fn deref(&self) -> &Self::Target {
+        use ShortBoxSliceInner::*;
+        match self.0 {
+            ZeroOne(None) => &[],
+            ZeroOne(Some(ref v)) => core::slice::from_ref(v),
+            #[cfg(feature = "alloc")]
+            Multi(ref v) => v,
+        }
+    }
+}
+
+impl<T> DerefMut for ShortBoxSlice<T> {
+    fn deref_mut(&mut self) -> &mut Self::Target {
+        use ShortBoxSliceInner::*;
+        match self.0 {
+            ZeroOne(None) => &mut [],
+            ZeroOne(Some(ref mut v)) => core::slice::from_mut(v),
+            #[cfg(feature = "alloc")]
+            Multi(ref mut v) => v,
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<T> From<Vec<T>> for ShortBoxSlice<T> {
+    fn from(v: Vec<T>) -> Self {
+        use ShortBoxSliceInner::*;
+        match v.len() {
+            0 => Self(ZeroOne(None)),
+            #[allow(clippy::unwrap_used)] // we know that the vec is not empty
+            1 => Self(ZeroOne(Some(v.into_iter().next().unwrap()))),
+            _ => Self(Multi(v.into_boxed_slice())),
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<T> FromIterator<T> for ShortBoxSlice<T> {
+    fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
+        use ShortBoxSliceInner::*;
+        let mut iter = iter.into_iter();
+        match (iter.next(), iter.next()) {
+            (Some(first), Some(second)) => {
+                // Size hint behaviour same as `Vec::extend` + 2
+                let mut vec = Vec::with_capacity(iter.size_hint().0.saturating_add(3));
+                vec.push(first);
+                vec.push(second);
+                vec.extend(iter);
+                Self(Multi(vec.into_boxed_slice()))
+            }
+            (first, _) => Self(ZeroOne(first)),
+        }
+    }
+}
+
+/// An iterator that yields elements from a [`ShortBoxSlice`].
+#[derive(Debug)]
+pub struct ShortBoxSliceIntoIter<T>(ShortBoxSliceIntoIterInner<T>);
+
+#[derive(Debug)]
+pub(crate) enum ShortBoxSliceIntoIterInner<T> {
+    ZeroOne(Option<T>),
+    #[cfg(feature = "alloc")]
+    Multi(alloc::vec::IntoIter<T>),
+}
+
+impl<T> Iterator for ShortBoxSliceIntoIter<T> {
+    type Item = T;
+    fn next(&mut self) -> Option<T> {
+        use ShortBoxSliceIntoIterInner::*;
+        match &mut self.0 {
+            ZeroOne(option) => option.take(),
+            #[cfg(feature = "alloc")]
+            Multi(into_iter) => into_iter.next(),
+        }
+    }
+}
+
+impl<T> IntoIterator for ShortBoxSlice<T> {
+    type Item = T;
+    type IntoIter = ShortBoxSliceIntoIter<T>;
+
+    fn into_iter(self) -> Self::IntoIter {
+        match self.0 {
+            ShortBoxSliceInner::ZeroOne(option) => {
+                ShortBoxSliceIntoIter(ShortBoxSliceIntoIterInner::ZeroOne(option))
+            }
+            // TODO: Use a boxed slice IntoIter impl when available:
+            // <https://github.com/rust-lang/rust/issues/59878>
+            #[cfg(feature = "alloc")]
+            ShortBoxSliceInner::Multi(boxed_slice) => ShortBoxSliceIntoIter(
+                ShortBoxSliceIntoIterInner::Multi(boxed_slice.into_vec().into_iter()),
+            ),
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    #[allow(clippy::get_first)]
+    fn test_new_single_const() {
+        const MY_CONST_SLICE: ShortBoxSlice<i32> = ShortBoxSlice::new_single(42);
+
+        assert_eq!(MY_CONST_SLICE.len(), 1);
+        assert_eq!(MY_CONST_SLICE.get(0), Some(&42));
+    }
+
+    #[test]
+    #[allow(clippy::redundant_pattern_matching)]
+    fn test_get_single() {
+        let mut vec = ShortBoxSlice::new();
+        assert!(matches!(vec.single(), None));
+
+        vec.push(100);
+        assert!(matches!(vec.single(), Some(_)));
+
+        vec.push(200);
+        assert!(matches!(vec.single(), None));
+    }
+}
diff --git a/vendor/icu_locale_core/src/subtags/language.rs b/vendor/icu_locale_core/src/subtags/language.rs
new file mode 100644
index 00000000..fbdbc8aa
--- /dev/null
+++ b/vendor/icu_locale_core/src/subtags/language.rs
@@ -0,0 +1,59 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+impl_tinystr_subtag!(
+    /// A language subtag (examples: `"en"`, `"csb"`, `"zh"`, `"und"`, etc.)
+    ///
+    /// [`Language`] represents a Unicode base language code conformant to the
+    /// [`unicode_language_id`] field of the Language and Locale Identifier.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::Language;
+    ///
+    /// let language: Language =
+    ///     "en".parse().expect("Failed to parse a language subtag.");
+    /// ```
+    ///
+    /// If the [`Language`] has no value assigned, it serializes to a string `"und"`, which
+    /// can be then parsed back to an empty [`Language`] field.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::Language;
+    ///
+    /// assert_eq!(Language::UNKNOWN.as_str(), "und");
+    /// ```
+    ///
+    /// `Notice`: ICU4X uses a narrow form of language subtag of 2-3 characters.
+    /// The specification allows language subtag to optionally also be 5-8 characters
+    /// but that form has not been used and ICU4X does not support it right now.
+    ///
+    /// [`unicode_language_id`]: https://unicode.org/reports/tr35/#unicode_language_id
+    Language,
+    subtags,
+    language,
+    subtags_language,
+    2..=3,
+    s,
+    s.is_ascii_alphabetic(),
+    s.to_ascii_lowercase(),
+    s.is_ascii_alphabetic_lowercase(),
+    InvalidLanguage,
+    ["en", "foo"],
+    ["419", "german", "en1"],
+);
+
+impl Language {
+    /// The unknown language "und".
+    pub const UNKNOWN: Self = language!("und");
+
+    /// Whether this [`Language`] equals [`Language::UNKNOWN`].
+    #[inline]
+    pub const fn is_unknown(self) -> bool {
+        matches!(self, Self::UNKNOWN)
+    }
+}
diff --git a/vendor/icu_locale_core/src/subtags/mod.rs b/vendor/icu_locale_core/src/subtags/mod.rs
new file mode 100644
index 00000000..a7687c38
--- /dev/null
+++ b/vendor/icu_locale_core/src/subtags/mod.rs
@@ -0,0 +1,163 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Language Identifier and Locale contains a set of subtags
+//! which represent different fields of the structure.
+//!
+//! * [`Language`] is the only mandatory field, which when empty,
+//!   takes the value `und`.
+//! * [`Script`] is an optional field representing the written script used by the locale.
+//! * [`Region`] is the region used by the locale.
+//! * [`Variants`] is a list of optional [`Variant`] subtags containing information about the
+//!   variant adjustments used by the locale.
+//!
+//! Subtags can be used in isolation, and all basic operations such as parsing, syntax normalization
+//! and serialization are supported on each individual subtag, but most commonly
+//! they are used to construct a [`LanguageIdentifier`] instance.
+//!
+//! [`Variants`] is a special structure which contains a list of [`Variant`] subtags.
+//! It is wrapped around to allow for sorting and deduplication of variants, which
+//! is one of the required steps of language identifier and locale syntax normalization.
+//!
+//! # Examples
+//!
+//! ```
+//! use icu::locale::subtags::{Language, Region, Script, Variant};
+//!
+//! let language: Language =
+//!     "en".parse().expect("Failed to parse a language subtag.");
+//! let script: Script =
+//!     "arab".parse().expect("Failed to parse a script subtag.");
+//! let region: Region =
+//!     "cn".parse().expect("Failed to parse a region subtag.");
+//! let variant: Variant =
+//!     "MacOS".parse().expect("Failed to parse a variant subtag.");
+//!
+//! assert_eq!(language.as_str(), "en");
+//! assert_eq!(script.as_str(), "Arab");
+//! assert_eq!(region.as_str(), "CN");
+//! assert_eq!(variant.as_str(), "macos");
+//! ```
+//!
+//! `Notice`: The subtags are normalized on parsing. That means
+//! that all operations work on a normalized version of the subtag
+//! and serialization is very cheap.
+//!
+//! [`LanguageIdentifier`]: super::LanguageIdentifier
+mod language;
+mod region;
+mod script;
+mod variant;
+mod variants;
+
+#[doc(inline)]
+pub use language::{language, Language};
+#[doc(inline)]
+pub use region::{region, Region};
+#[doc(inline)]
+pub use script::{script, Script};
+#[doc(inline)]
+pub use variant::{variant, Variant};
+pub use variants::Variants;
+
+impl_tinystr_subtag!(
+    /// A generic subtag.
+    ///
+    /// The subtag has to be an ASCII alphanumerical string no shorter than
+    /// two characters and no longer than eight.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::Subtag;
+    ///
+    /// let subtag1: Subtag = "Foo".parse()
+    ///     .expect("Failed to parse a Subtag.");
+    ///
+    /// assert_eq!(subtag1.as_str(), "foo");
+    /// ```
+    Subtag,
+    subtags,
+    subtag,
+    subtags_subtag,
+    2..=8,
+    s,
+    s.is_ascii_alphanumeric(),
+    s.to_ascii_lowercase(),
+    s.is_ascii_alphanumeric() && s.is_ascii_lowercase(),
+    InvalidSubtag,
+    ["foo12"],
+    ["f", "toolooong"],
+);
+
+#[allow(clippy::len_without_is_empty)]
+impl Subtag {
+    #[allow(dead_code)]
+    pub(crate) const fn valid_key(v: &[u8]) -> bool {
+        2 <= v.len() && v.len() <= 8
+    }
+
+    /// Returns the length of `self`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::subtag;
+    /// let s = subtag!("foo");
+    /// assert_eq!(s.len(), 3);
+    /// ```
+    pub fn len(&self) -> usize {
+        self.0.len()
+    }
+
+    #[doc(hidden)]
+    pub fn from_tinystr_unvalidated(input: tinystr::TinyAsciiStr<8>) -> Self {
+        Self(input)
+    }
+
+    #[doc(hidden)]
+    pub fn as_tinystr(&self) -> tinystr::TinyAsciiStr<8> {
+        self.0
+    }
+
+    #[allow(dead_code)]
+    pub(crate) fn to_ascii_lowercase(self) -> Self {
+        Self(self.0.to_ascii_lowercase())
+    }
+}
+
+impl<const N: usize> TryFrom<tinystr::TinyAsciiStr<N>> for Subtag {
+    type Error = crate::parser::errors::ParseError;
+
+    fn try_from(value: tinystr::TinyAsciiStr<N>) -> Result<Self, Self::Error> {
+        Self::try_from_str(&value)
+    }
+}
+
+impl PartialEq<str> for Subtag {
+    fn eq(&self, other: &str) -> bool {
+        self.0 == other
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use tinystr::tinystr;
+
+    #[test]
+    fn test_subtag() {
+        let subtag = subtag!("foo");
+        assert_eq!(subtag.as_str(), "foo");
+    }
+
+    #[test]
+    fn test_subtag_from_tinystr() {
+        let subtag = Subtag::try_from(tinystr!(3, "foo"));
+        assert!(subtag.is_ok());
+
+        let subtag = Subtag::try_from(tinystr!(1, "f"));
+        assert!(subtag.is_err());
+    }
+}
diff --git a/vendor/icu_locale_core/src/subtags/region.rs b/vendor/icu_locale_core/src/subtags/region.rs
new file mode 100644
index 00000000..423d1360
--- /dev/null
+++ b/vendor/icu_locale_core/src/subtags/region.rs
@@ -0,0 +1,60 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+impl_tinystr_subtag!(
+    /// A region subtag (examples: `"US"`, `"CN"`, `"AR"` etc.)
+    ///
+    /// [`Region`] represents a Unicode base language code conformant to the
+    /// [`unicode_region_id`] field of the Language and Locale Identifier.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::Region;
+    ///
+    /// let region: Region =
+    ///     "DE".parse().expect("Failed to parse a region subtag.");
+    /// ```
+    ///
+    /// [`unicode_region_id`]: https://unicode.org/reports/tr35/#unicode_region_id
+    Region,
+    subtags,
+    region,
+    subtags_region,
+    2..=3,
+    s,
+    if s.len() == 2 {
+        s.is_ascii_alphabetic()
+    } else {
+        s.is_ascii_numeric()
+    },
+    if s.len() == 2 {
+        s.to_ascii_uppercase()
+    } else {
+        s
+    },
+    if s.len() == 2 {
+        s.is_ascii_alphabetic_uppercase()
+    } else {
+        s.is_ascii_numeric()
+    },
+    InvalidSubtag,
+    ["FR", "123"],
+    ["12", "FRA", "b2"],
+);
+
+impl Region {
+    /// Returns true if the Region has an alphabetic code.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::region;
+    ///
+    /// assert!(region!("us").is_alphabetic());
+    /// ```
+    pub fn is_alphabetic(&self) -> bool {
+        self.0.len() == 2
+    }
+}
diff --git a/vendor/icu_locale_core/src/subtags/script.rs b/vendor/icu_locale_core/src/subtags/script.rs
new file mode 100644
index 00000000..ae576af7
--- /dev/null
+++ b/vendor/icu_locale_core/src/subtags/script.rs
@@ -0,0 +1,41 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::subtags::Subtag;
+
+impl_tinystr_subtag!(
+    /// A script subtag (examples: `"Latn"`, `"Arab"`, etc.)
+    ///
+    /// [`Script`] represents a Unicode base language code conformant to the
+    /// [`unicode_script_id`] field of the Language and Locale Identifier.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::Script;
+    ///
+    /// let script: Script =
+    ///     "Latn".parse().expect("Failed to parse a script subtag.");
+    /// ```
+    ///
+    /// [`unicode_script_id`]: https://unicode.org/reports/tr35/#unicode_script_id
+    Script,
+    subtags,
+    script,
+    subtags_script,
+    4..=4,
+    s,
+    s.is_ascii_alphabetic(),
+    s.to_ascii_titlecase(),
+    s.is_ascii_alphabetic_titlecase(),
+    InvalidSubtag,
+    ["Latn"],
+    ["Latin"],
+);
+
+impl From<Script> for Subtag {
+    fn from(value: Script) -> Self {
+        Subtag(value.0.resize())
+    }
+}
diff --git a/vendor/icu_locale_core/src/subtags/variant.rs b/vendor/icu_locale_core/src/subtags/variant.rs
new file mode 100644
index 00000000..b025f28b
--- /dev/null
+++ b/vendor/icu_locale_core/src/subtags/variant.rs
@@ -0,0 +1,35 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+impl_tinystr_subtag!(
+    /// A variant subtag (examples: `"macos"`, `"posix"`, `"1996"` etc.)
+    ///
+    /// [`Variant`] represents a Unicode base language code conformant to the
+    /// [`unicode_variant_id`] field of the Language and Locale Identifier.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::Variant;
+    ///
+    /// let variant: Variant =
+    ///     "macos".parse().expect("Failed to parse a variant subtag.");
+    /// ```
+    ///
+    /// [`unicode_variant_id`]: https://unicode.org/reports/tr35/#unicode_variant_id
+    Variant,
+    subtags,
+    variant,
+    subtags_variant,
+    4..=8,
+    s,
+    s.is_ascii_alphanumeric() && (s.len() != 4 || s.all_bytes()[0].is_ascii_digit()),
+    s.to_ascii_lowercase(),
+    s.is_ascii_lowercase()
+        && s.is_ascii_alphanumeric()
+        && (s.len() != 4 || s.all_bytes()[0].is_ascii_digit()),
+    InvalidSubtag,
+    ["posix", "1996"],
+    ["yes"],
+);
diff --git a/vendor/icu_locale_core/src/subtags/variants.rs b/vendor/icu_locale_core/src/subtags/variants.rs
new file mode 100644
index 00000000..9fc0138a
--- /dev/null
+++ b/vendor/icu_locale_core/src/subtags/variants.rs
@@ -0,0 +1,136 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::Variant;
+use crate::shortvec::ShortBoxSlice;
+
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+use core::ops::Deref;
+
+/// A list of variants (examples: `["macos", "posix"]`, etc.)
+///
+/// [`Variants`] stores a list of [`Variant`] subtags in a canonical form
+/// by sorting and deduplicating them.
+///
+/// # Examples
+///
+/// ```
+/// use icu::locale::subtags::{variant, Variants};
+///
+/// let mut v = vec![variant!("posix"), variant!("macos")];
+/// v.sort();
+/// v.dedup();
+///
+/// let variants: Variants = Variants::from_vec_unchecked(v);
+/// assert_eq!(variants.to_string(), "macos-posix");
+/// ```
+#[derive(Default, Debug, PartialEq, Eq, Clone, Hash, PartialOrd, Ord)]
+pub struct Variants(ShortBoxSlice<Variant>);
+
+impl Variants {
+    /// Returns a new empty list of variants. Same as [`default()`](Default::default()), but is `const`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::Variants;
+    ///
+    /// assert_eq!(Variants::new(), Variants::default());
+    /// ```
+    #[inline]
+    pub const fn new() -> Self {
+        Self(ShortBoxSlice::new())
+    }
+
+    /// Creates a new [`Variants`] set from a single [`Variant`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::{variant, Variants};
+    ///
+    /// let variants = Variants::from_variant(variant!("posix"));
+    /// ```
+    #[inline]
+    pub const fn from_variant(variant: Variant) -> Self {
+        Self(ShortBoxSlice::new_single(variant))
+    }
+
+    /// Creates a new [`Variants`] set from a [`Vec`].
+    /// The caller is expected to provide sorted and deduplicated vector as
+    /// an input.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::{variant, Variants};
+    ///
+    /// let mut v = vec![variant!("posix"), variant!("macos")];
+    /// v.sort();
+    /// v.dedup();
+    ///
+    /// let variants = Variants::from_vec_unchecked(v);
+    /// ```
+    ///
+    /// Notice: For performance- and memory-constrained environments, it is recommended
+    /// for the caller to use [`binary_search`](slice::binary_search) instead of [`sort`](slice::sort)
+    /// and [`dedup`](Vec::dedup()).
+    #[cfg(feature = "alloc")]
+    pub fn from_vec_unchecked(input: Vec<Variant>) -> Self {
+        Self(input.into())
+    }
+
+    #[cfg(feature = "alloc")]
+    pub(crate) fn from_short_slice_unchecked(input: ShortBoxSlice<Variant>) -> Self {
+        Self(input)
+    }
+
+    /// Empties the [`Variants`] list.
+    ///
+    /// Returns the old list.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::locale::subtags::{variant, Variants};
+    ///
+    /// let mut v = vec![variant!("posix"), variant!("macos")];
+    /// v.sort();
+    /// v.dedup();
+    ///
+    /// let mut variants: Variants = Variants::from_vec_unchecked(v);
+    ///
+    /// assert_eq!(variants.to_string(), "macos-posix");
+    ///
+    /// variants.clear();
+    ///
+    /// assert_eq!(variants, Variants::default());
+    /// ```
+    pub fn clear(&mut self) -> Self {
+        core::mem::take(self)
+    }
+
+    /// Whether the list of variants is empty.
+    pub const fn is_empty(&self) -> bool {
+        self.0.is_empty()
+    }
+
+    pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
+    where
+        F: FnMut(&str) -> Result<(), E>,
+    {
+        self.deref().iter().map(|t| t.as_str()).try_for_each(f)
+    }
+}
+
+impl_writeable_for_subtag_list!(Variants, "macos", "posix");
+
+impl Deref for Variants {
+    type Target = [Variant];
+
+    fn deref(&self) -> &[Variant] {
+        self.0.deref()
+    }
+}
diff --git a/vendor/icu_locale_core/src/zerovec.rs b/vendor/icu_locale_core/src/zerovec.rs
new file mode 100644
index 00000000..cab3f717
--- /dev/null
+++ b/vendor/icu_locale_core/src/zerovec.rs
@@ -0,0 +1,131 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Documentation on zero-copy deserialization of locale types.
+//!
+//! [`Locale`] and [`LanguageIdentifier`] are highly structured types that cannot be directly
+//! stored in a zero-copy data structure, such as those provided by the [`zerovec`](crate::zerovec) module.
+//! This page explains how to indirectly store these types in a [`zerovec`](crate::zerovec).
+//!
+//! There are two main use cases, which have different solutions:
+//!
+//! 1. **Lookup:** You need to locate a locale in a zero-copy vector, such as when querying a map.
+//! 2. **Obtain:** You have a locale stored in a zero-copy vector, and you need to obtain a proper
+//!    [`Locale`] or [`LanguageIdentifier`] for use elsewhere in your program.
+//!
+//! # Lookup
+//!
+//! To perform lookup, store the stringified locale in a canonical BCP-47 form as a byte array,
+//! and then use [`Locale::strict_cmp()`] to perform an efficient, zero-allocation lookup.
+//!
+//! To produce more human-readable serialized output, you can use `PotentialUtf8`.
+//!
+//! ```
+//! use icu::locale::Locale;
+//! use potential_utf::PotentialUtf8;
+//! use zerovec::ZeroMap;
+//!
+//! // ZeroMap from locales to integers
+//! let data: &[(&PotentialUtf8, u32)] = &[
+//!     ("de-DE-u-hc-h12".into(), 5),
+//!     ("en-US-u-ca-buddhist".into(), 10),
+//!     ("my-MM".into(), 15),
+//!     ("sr-Cyrl-ME".into(), 20),
+//!     ("zh-TW".into(), 25),
+//! ];
+//! let zm: ZeroMap<PotentialUtf8, u32> = data.iter().copied().collect();
+//!
+//! // Get the value associated with a locale
+//! let loc: Locale = "en-US-u-ca-buddhist".parse().unwrap();
+//! let value = zm.get_copied_by(|uvstr| loc.strict_cmp(uvstr).reverse());
+//! assert_eq!(value, Some(10));
+//! ```
+//!
+//! # Obtain
+//!
+//! Obtaining a [`Locale`] or [`LanguageIdentifier`] is not generally a zero-copy operation, since
+//! both of these types may require memory allocation. If possible, architect your code such that
+//! you do not need to obtain a structured type.
+//!
+//! If you need the structured type, such as if you need to manipulate it in some way, there are two
+//! options: storing subtags, and storing a string for parsing.
+//!
+//! ## Storing Subtags
+//!
+//! If the data being stored only contains a limited number of subtags, you can store them as a
+//! tuple, and then construct the [`LanguageIdentifier`] externally.
+//!
+//! ```
+//! use icu::locale::subtags::{Language, Region, Script};
+//! use icu::locale::LanguageIdentifier;
+//! use icu::locale::{
+//!     langid,
+//!     subtags::{language, region, script},
+//! };
+//! use zerovec::ZeroMap;
+//!
+//! // ZeroMap from integer to LSR (language-script-region)
+//! let zm: ZeroMap<u32, (Language, Option<Script>, Option<Region>)> = [
+//!     (5, (language!("de"), None, Some(region!("DE")))),
+//!     (10, (language!("en"), None, Some(region!("US")))),
+//!     (15, (language!("my"), None, Some(region!("MM")))),
+//!     (
+//!         20,
+//!         (language!("sr"), Some(script!("Cyrl")), Some(region!("ME"))),
+//!     ),
+//!     (25, (language!("zh"), None, Some(region!("TW")))),
+//! ]
+//! .into_iter()
+//! .collect();
+//!
+//! // Construct a LanguageIdentifier from a tuple entry
+//! let lid: LanguageIdentifier =
+//!     zm.get_copied(&25).expect("element is present").into();
+//!
+//! assert_eq!(lid, langid!("zh-TW"));
+//! ```
+//!
+//! ## Storing Strings
+//!
+//! If it is necessary to store and obtain an arbitrary locale, it is currently recommended to
+//! store a BCP-47 string and parse it when needed.
+//!
+//! Since the string is stored in an unparsed state, it is not safe to `unwrap` the result from
+//! `Locale::try_from_utf8()`. See [icu4x#831](https://github.com/unicode-org/icu4x/issues/831)
+//! for a discussion on potential data models that could ensure that the locale is valid during
+//! deserialization.
+//!
+//! As above, to produce more human-readable serialized output, you can use `PotentialUtf8`.
+//!
+//! ```
+//! use icu::locale::langid;
+//! use icu::locale::Locale;
+//! use potential_utf::PotentialUtf8;
+//! use zerovec::ZeroMap;
+//!
+//! // ZeroMap from integer to locale string
+//! let data: &[(u32, &PotentialUtf8)] = &[
+//!     (5, "de-DE-u-hc-h12".into()),
+//!     (10, "en-US-u-ca-buddhist".into()),
+//!     (15, "my-MM".into()),
+//!     (20, "sr-Cyrl-ME".into()),
+//!     (25, "zh-TW".into()),
+//!     (30, "INVALID".into()),
+//! ];
+//! let zm: ZeroMap<u32, PotentialUtf8> = data.iter().copied().collect();
+//!
+//! // Construct a Locale by parsing the string.
+//! let value = zm.get(&25).expect("element is present");
+//! let loc = Locale::try_from_utf8(value);
+//! assert_eq!(loc, Ok(langid!("zh-TW").into()));
+//!
+//! // Invalid entries are fallible
+//! let err_value = zm.get(&30).expect("element is present");
+//! let err_loc = Locale::try_from_utf8(err_value);
+//! assert!(matches!(err_loc, Err(_)));
+//! ```
+//!
+//! [`Locale`]: crate::Locale
+//! [`Locale::strict_cmp()`]: crate::Locale::strict_cmp()
+//! [`LanguageIdentifier`]: crate::LanguageIdentifier
diff --git a/vendor/icu_locale_core/tests/fixtures/canonicalize.json b/vendor/icu_locale_core/tests/fixtures/canonicalize.json
new file mode 100644
index 00000000..46db8b73
--- /dev/null
+++ b/vendor/icu_locale_core/tests/fixtures/canonicalize.json
@@ -0,0 +1,68 @@
+[
+  {
+    "input": "Pl",
+    "output": "pl"
+  },
+  {
+    "input": "eN-uS",
+    "output": "en-US"
+  },
+  {
+    "input": "ZH-hans-hK",
+    "output": "zh-Hans-HK"
+  },
+  {
+    "input": "en-scouse-fonipa",
+    "output": "en-fonipa-scouse"
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-US-t-es-AR-x-foo"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "en-US-t-es-ar-x-foo"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-t-en-Latn-CA-emodeng"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "en-t-en-latn-ca-emodeng"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "EN-US-T-ES-AR-X-FOO"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "en-US-t-es-ar-x-foo"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "EN-T-EN-LATN-CA-EMODENG"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "en-t-en-latn-ca-emodeng"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "UND-CYRL-T-ES-LATN-M0-UNGEGN"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "und-Cyrl-t-es-latn-m0-ungegn"
+    }
+  }
+]
diff --git a/vendor/icu_locale_core/tests/fixtures/invalid-extensions.json b/vendor/icu_locale_core/tests/fixtures/invalid-extensions.json
new file mode 100644
index 00000000..5f2742e6
--- /dev/null
+++ b/vendor/icu_locale_core/tests/fixtures/invalid-extensions.json
@@ -0,0 +1,162 @@
+[
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "cmn-hans-cn-t-ca-u-ca-x_t-u"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "unused"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "pl-US-x-waytoolongkey"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "pl-US-x-@A-3"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "pl-US-t-h0"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "pl-US-t-h0-x-foo"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "pl-US-t-h0"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "und-t-m0"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "und-t-m0-n0-mixed"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "da-u"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "da-u--"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "da-u-t-latn"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "cmn-hans-cn-u-u"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "de-u-ca-"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "de-u-ca-gregory-"
+    },
+    "output": {
+      "error": "InvalidExtension",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "de-u-ca-gregory-u-hc-hc24"
+    },
+    "output": {
+      "error": "DuplicatedExtension",
+      "text": "Duplicated extension"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "de-l-foo-l-bar"
+    },
+    "output": {
+      "error": "DuplicatedExtension",
+      "text": "Duplicated extension"
+    }
+  }
+]
diff --git a/vendor/icu_locale_core/tests/fixtures/invalid.json b/vendor/icu_locale_core/tests/fixtures/invalid.json
new file mode 100644
index 00000000..a9e683dd
--- /dev/null
+++ b/vendor/icu_locale_core/tests/fixtures/invalid.json
@@ -0,0 +1,142 @@
+[
+  {
+    "input": "-",
+    "output": {
+      "error": "InvalidLanguage",
+      "text": "The given language subtag is invalid"
+    }
+  },
+
+  {
+    "input": "--",
+    "output": {
+      "error": "InvalidLanguage",
+      "text": "The given subtag is invalid"
+    }
+  },
+  {
+    "input": "en-",
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "The given subtag is invalid"
+    }
+  },
+  {
+    "input": "-en",
+    "output": {
+      "error": "InvalidLanguage",
+      "text": "The given subtag is invalid"
+    }
+  },
+  {
+    "input": "en-us-",
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "The given subtag is invalid"
+    }
+  },
+  {
+    "input": "en_us",
+    "output": {
+      "error": "InvalidLanguage",
+      "text": "The given language subtag is invalid"
+    }
+  },
+  {
+    "input": "en--US",
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "The given subtag is invalid"
+    }
+  },
+  {
+    "input": "-e-",
+    "output": {
+      "error": "InvalidLanguage",
+      "text": "The given subtag is invalid"
+    }
+  },
+  {
+    "input": "a1a",
+    "output": {
+      "error": "InvalidLanguage",
+      "text": "The given language subtag is invalid"
+    }
+  },
+  {
+    "input": "Arab-US",
+    "output": {
+      "error": "InvalidLanguage",
+      "text": "The given language subtag is invalid"
+    }
+  },
+  {
+    "input": "",
+    "output": {
+      "error": "InvalidLanguage",
+      "text": "The given language subtag is invalid"
+    }
+  },
+  {
+    "input": "pl-DSDAFAFDF",
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": "pl-Latn-$1231",
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": "pl-Latn-US-$1231",
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": "pl-Latn-12",
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": "pl-Latn-a12",
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": "pl-Latn-US-3-dd",
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "pl-Latn-US-variant-h0-hybrid"
+    },
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "Invalid subtag"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-variant-emodeng-emodeng"
+    },
+    "output": {
+      "error": "InvalidSubtag",
+      "text": "Invalid subtag"
+    }
+  }
+]
diff --git a/vendor/icu_locale_core/tests/fixtures/langid.json b/vendor/icu_locale_core/tests/fixtures/langid.json
new file mode 100644
index 00000000..31740d99
--- /dev/null
+++ b/vendor/icu_locale_core/tests/fixtures/langid.json
@@ -0,0 +1,167 @@
+[
+  {
+    "input": "en",
+    "output": {
+      "type": "LanguageIdentifier",
+      "language": "en"
+    }
+  },
+  {
+    "input": "lij",
+    "output": {
+      "type": "LanguageIdentifier",
+      "language": "lij"
+    }
+  },
+  {
+    "input": "en-Latn",
+    "output": { 
+      "type": "LanguageIdentifier",
+      "language": "en",
+      "script": "Latn"
+    }
+  },
+  {
+    "input": "lij-Arab",
+    "output": { 
+      "type": "LanguageIdentifier",
+      "language": "lij",
+      "script": "Arab"
+    }
+  },
+  {
+    "input": "en-Latn-US",
+    "output": { 
+      "type": "LanguageIdentifier",
+      "language": "en",
+      "script": "Latn",
+      "region": "US"
+    }
+  },
+  {
+    "input": "lij-Arab-FA",
+    "output": { 
+      "type": "LanguageIdentifier",
+      "language": "lij",
+      "script": "Arab",
+      "region": "FA"
+    }
+  },
+  {
+    "input": "en-Latn-US-windows",
+    "output": { 
+      "type": "LanguageIdentifier",
+      "language": "en",
+      "script": "Latn",
+      "region": "US",
+      "variants": ["windows"]
+    }
+  },
+  {
+    "input": "lij-Arab-FA-linux",
+    "output": { 
+      "type": "LanguageIdentifier",
+      "language": "lij",
+      "script": "Arab",
+      "region": "FA",
+      "variants": ["linux"]
+    }
+  },
+  {
+    "input": "lij-Arab-FA-linux-nedis",
+    "output": { 
+      "type": "LanguageIdentifier",
+      "language": "lij",
+      "script": "Arab",
+      "region": "FA",
+      "variants": ["linux", "nedis"]
+    }
+  },
+  {
+    "input": "EN-latn-us",
+    "output": {
+      "type": "LanguageIdentifier",
+      "language": "en",
+      "script": "Latn",
+      "region": "US"
+    }
+  },
+  {
+    "input": "sl-nedis",
+    "output": {
+      "type": "LanguageIdentifier",
+      "language": "sl",
+      "variants": ["nedis"]
+    }
+  },
+  {
+    "input": "de-CH-1996",
+    "output": {
+      "type": "LanguageIdentifier",
+      "language": "de",
+      "region": "CH",
+      "variants": ["1996"]
+    }
+  },
+  {
+    "input": "sr-Latn",
+    "output": {
+      "type": "LanguageIdentifier",
+      "language": "sr",
+      "script": "Latn"
+    }
+  },
+  {
+    "input": "es-419",
+    "output": {
+      "type": "LanguageIdentifier",
+      "language": "es",
+      "region": "419"
+    }
+  },
+  {
+    "input": "und-Latn-US",
+    "output": {
+      "type": "LanguageIdentifier",
+      "script": "Latn",
+      "region": "US"
+    }
+  },
+  {
+    "input": "und",
+    "output": {
+      "type": "LanguageIdentifier"
+    }
+  },
+  {
+    "input": "und-Latn",
+    "output": {
+      "type": "LanguageIdentifier",
+      "script": "Latn"
+    }
+  },
+  {
+    "input": "pl-macos-Windows-nedis-aRabic",
+    "output": {
+      "type": "LanguageIdentifier",
+      "language": "pl",
+      "variants": ["arabic", "macos", "nedis", "windows"]
+    }
+  },
+  {
+    "input": "und-Latn-macos",
+    "output": {
+      "type": "LanguageIdentifier",
+      "script": "Latn",
+      "variants": ["macos"]
+    }
+  },
+  {
+    "input": "und-Latn-312",
+    "output": {
+      "type": "LanguageIdentifier",
+      "script": "Latn",
+      "region": "312"
+    }
+  }
+]
diff --git a/vendor/icu_locale_core/tests/fixtures/locale.json b/vendor/icu_locale_core/tests/fixtures/locale.json
new file mode 100644
index 00000000..93679a06
--- /dev/null
+++ b/vendor/icu_locale_core/tests/fixtures/locale.json
@@ -0,0 +1,298 @@
+[
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-u-hc-h12"
+    },
+    "output": {
+      "type": "Locale",
+      "language": "en",
+      "extensions": {
+        "unicode": {
+          "keywords": {
+            "hc": "h12"
+          }
+        }
+      }
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-US-u-hc-h23"
+    },
+    "output": {
+      "type": "Locale",
+      "language": "en",
+      "region": "US",
+      "extensions": {
+        "unicode": {
+          "keywords": {
+            "hc": "h23"
+          }
+        }
+      }
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-US-u-foo"
+    },
+    "output": {
+      "type": "Locale",
+      "language": "en",
+      "region": "US",
+      "extensions": {
+        "unicode": {
+          "attributes": [
+            "foo"
+          ]
+        }
+      }
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-US-u-hc-h23-ca-islamic-civil-ss-true"
+    },
+    "output": {
+      "type": "Locale",
+      "language": "en",
+      "region": "US",
+      "extensions": {
+        "unicode": {
+          "keywords": {
+            "hc": "h23",
+            "ca": "islamic-civil",
+            "ss": "true"
+          }
+        }
+      }
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-US-t-pl-latn-de"
+    },
+    "output": {
+      "type": "Locale",
+      "language": "en",
+      "region": "US",
+      "extensions": {
+        "transform": {
+          "tlang": "pl-Latn-DE"
+        }
+      }
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-US-x-private-foobar"
+    },
+    "output": {
+      "type": "Locale",
+      "language": "en",
+      "region": "US",
+      "extensions": {
+        "private": ["private", "foobar"]
+      }
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-US-t-h0-hybrid-k0-platform-s0-true"
+    },
+    "output": {
+      "type": "Locale",
+      "language": "en",
+      "region": "US",
+      "extensions": {
+        "transform": {
+          "tfields": {
+            "h0": "hybrid",
+            "k0": "platform",
+            "s0": "true"
+          }
+        }
+      }
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-US-t-es-ar-x-foo"
+    },
+    "output": {
+      "type": "Locale",
+      "language": "en",
+      "region": "US",
+      "extensions": {
+        "transform": {
+          "tlang": "es-AR"
+        },
+        "private": ["foo"]
+      }
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-US-u-ca-buddhist-hc-h12-t-es-ar-h0-hybrid-x-private-foobar"
+    },
+    "output": {
+      "type": "Locale",
+      "language": "en",
+      "region": "US",
+      "extensions": {
+        "unicode": {
+          "keywords": {
+            "ca": "buddhist",
+            "hc": "h12"
+          }
+        },
+        "transform": {
+          "tlang": "es-AR",
+          "tfields": {
+            "h0": "hybrid"
+          }
+        },
+        "private": ["private", "foobar"]
+      }
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "language": "es",
+      "region": "MX",
+      "extensions": {
+        "unicode": {
+          "keywords": {
+            "ca": "islamic",
+            "co": "search",
+            "nu": "roman"
+          }
+        }
+      }
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "es-MX-u-ca-islamic-co-search-nu-roman"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "und-u-kn"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "und-u-kn"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "und-u-kn-ca-calendar"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "und-u-ca-calendar-kn"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "und-u-kn-nu-arab"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "und-u-kn-nu-arab"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "und-t-m0-true"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "und-t-m0-true"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "und-t-m0-true-n0-mixed"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "und-t-m0-true-n0-mixed"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "und-t-m0-true-c0-mixed"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "und-t-c0-mixed-m0-true"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "da-u-ca-gregory-ca-buddhist"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "da-u-ca-gregory"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "pt-u-attr2-attr1-ca-gregory"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "pt-u-attr1-attr2-ca-gregory"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "pt-u-attr1-attr2-attr1-ca-gregory"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "pt-u-attr1-attr2-ca-gregory"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-a-not-assigned"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "en-a-not-assigned"
+    }
+  },
+  {
+    "input": {
+      "type": "Locale",
+      "identifier": "en-w-bar-u-foo-a-bar-x-u-foo"
+    },
+    "output": {
+      "type": "Locale",
+      "identifier": "en-a-bar-u-foo-w-bar-x-u-foo"
+    }
+  }
+]
diff --git a/vendor/icu_locale_core/tests/fixtures/mod.rs b/vendor/icu_locale_core/tests/fixtures/mod.rs
new file mode 100644
index 00000000..26b7c928
--- /dev/null
+++ b/vendor/icu_locale_core/tests/fixtures/mod.rs
@@ -0,0 +1,254 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use std::collections::HashMap;
+use std::convert::{TryFrom, TryInto};
+
+use icu_locale_core::extensions::private;
+use icu_locale_core::extensions::transform;
+use icu_locale_core::extensions::unicode;
+use icu_locale_core::extensions::Extensions;
+use icu_locale_core::{subtags, LanguageIdentifier, Locale, ParseError};
+use serde::Deserialize;
+
+#[derive(Debug, Deserialize, Clone)]
+pub struct LocaleIdentifier {
+    #[serde(rename = "type")]
+    pub field_type: String,
+    pub identifier: String,
+}
+
+#[derive(Debug, Deserialize, Clone)]
+pub struct LocaleExtensionUnicode {
+    #[serde(default)]
+    keywords: HashMap<String, Option<String>>,
+    #[serde(default)]
+    attributes: Vec<String>,
+}
+
+#[derive(Debug, Deserialize, Clone)]
+pub struct LocaleExtensionTransform {
+    tlang: Option<String>,
+    #[serde(default)]
+    tfields: HashMap<String, Option<String>>,
+}
+
+#[derive(Debug, Deserialize, Clone)]
+pub struct LocaleExtensions {
+    unicode: Option<LocaleExtensionUnicode>,
+    transform: Option<LocaleExtensionTransform>,
+    #[serde(default)]
+    private: Vec<String>,
+    _other: Option<String>,
+}
+
+impl TryFrom<LocaleExtensions> for Extensions {
+    type Error = ParseError;
+
+    fn try_from(input: LocaleExtensions) -> Result<Self, Self::Error> {
+        let mut ext = Extensions::default();
+        if let Some(unicode) = input.unicode {
+            ext.unicode.keywords = unicode
+                .keywords
+                .iter()
+                .map(|(k, v)| {
+                    (
+                        unicode::Key::try_from_str(k).expect("Parsing key failed."),
+                        v.as_ref().map_or(
+                            unicode::Value::try_from_str("").expect("Failed to parse Value"),
+                            |v| unicode::Value::try_from_str(v).expect("Parsing type failed."),
+                        ),
+                    )
+                })
+                .collect();
+            let v: Vec<unicode::Attribute> = unicode
+                .attributes
+                .iter()
+                .map(|v| unicode::Attribute::try_from_str(v).expect("Parsing attribute failed."))
+                .collect();
+            ext.unicode.attributes = unicode::Attributes::from_vec_unchecked(v);
+        }
+        if let Some(transform) = input.transform {
+            ext.transform.fields = transform
+                .tfields
+                .iter()
+                .map(|(k, v)| {
+                    (
+                        transform::Key::try_from_str(k).expect("Parsing key failed."),
+                        v.as_ref()
+                            .map(|v| {
+                                transform::Value::try_from_str(v).expect("Parsing value failed.")
+                            })
+                            .expect("Value cannot be empty."),
+                    )
+                })
+                .collect();
+
+            if let Some(tlang) = transform.tlang {
+                ext.transform.lang = Some(tlang.parse().expect("Failed to parse tlang."));
+            }
+        }
+        let v: Vec<private::Subtag> = input
+            .private
+            .iter()
+            .map(|v| private::Subtag::try_from_str(v).expect("Failed to add field."))
+            .collect();
+        ext.private = private::Private::from_vec_unchecked(v);
+        Ok(ext)
+    }
+}
+
+#[derive(Debug, Deserialize, Clone)]
+pub struct LocaleSubtags {
+    #[serde(rename = "type")]
+    pub field_type: String,
+    pub language: Option<String>,
+    pub script: Option<String>,
+    pub region: Option<String>,
+    #[serde(default)]
+    pub variants: Vec<String>,
+    pub extensions: Option<LocaleExtensions>,
+}
+
+#[derive(Debug, Deserialize, Clone)]
+pub struct LocaleError {
+    pub error: String,
+    pub text: String,
+}
+
+#[derive(Debug, Deserialize, Clone)]
+#[serde(untagged)]
+#[allow(clippy::large_enum_variant)] // test code
+pub enum LocaleInfo {
+    String(String),
+    Error(LocaleError),
+    Identifier(LocaleIdentifier),
+    Object(LocaleSubtags),
+}
+
+impl TryFrom<LocaleInfo> for LanguageIdentifier {
+    type Error = ParseError;
+
+    fn try_from(input: LocaleInfo) -> Result<Self, Self::Error> {
+        match input {
+            LocaleInfo::String(s) => s.parse(),
+            LocaleInfo::Error(e) => Err(e.into()),
+            LocaleInfo::Identifier(ident) => ident.try_into(),
+            LocaleInfo::Object(o) => o.try_into(),
+        }
+    }
+}
+
+impl TryFrom<LocaleInfo> for Locale {
+    type Error = ParseError;
+
+    fn try_from(input: LocaleInfo) -> Result<Self, Self::Error> {
+        match input {
+            LocaleInfo::String(s) => s.parse(),
+            LocaleInfo::Error(e) => Err(e.into()),
+            LocaleInfo::Identifier(ident) => ident.try_into(),
+            LocaleInfo::Object(o) => o.try_into(),
+        }
+    }
+}
+
+impl TryFrom<LocaleIdentifier> for LanguageIdentifier {
+    type Error = ParseError;
+
+    fn try_from(input: LocaleIdentifier) -> Result<Self, Self::Error> {
+        LanguageIdentifier::try_from_locale_bytes(input.identifier.as_bytes())
+    }
+}
+
+impl TryFrom<LocaleIdentifier> for Locale {
+    type Error = ParseError;
+
+    fn try_from(input: LocaleIdentifier) -> Result<Self, Self::Error> {
+        Locale::try_from_str(&input.identifier)
+    }
+}
+
+impl TryFrom<LocaleSubtags> for LanguageIdentifier {
+    type Error = ParseError;
+
+    fn try_from(subtags: LocaleSubtags) -> Result<Self, Self::Error> {
+        let language = if let Some(lang) = subtags.language {
+            lang.parse().expect("Failed to parse language subtag")
+        } else {
+            subtags::Language::UNKNOWN
+        };
+        let script = subtags
+            .script
+            .map(|s| s.parse().expect("Failed to parse script subtag."));
+        let region = subtags
+            .region
+            .map(|s| s.parse().expect("Failed to parse region subtag."));
+        let variants = subtags
+            .variants
+            .iter()
+            .map(|v| v.parse().expect("Failed to parse variant subtag."))
+            .collect::<Vec<_>>();
+        Ok(LanguageIdentifier {
+            language,
+            script,
+            region,
+            variants: subtags::Variants::from_vec_unchecked(variants),
+        })
+    }
+}
+
+impl TryFrom<LocaleSubtags> for Locale {
+    type Error = ParseError;
+
+    fn try_from(subtags: LocaleSubtags) -> Result<Self, Self::Error> {
+        let language = if let Some(lang) = subtags.language {
+            lang.parse().expect("Failed to parse language subtag")
+        } else {
+            subtags::Language::UNKNOWN
+        };
+        let script = subtags
+            .script
+            .map(|s| s.parse().expect("Failed to parse script subtag."));
+        let region = subtags
+            .region
+            .map(|s| s.parse().expect("Failed to parse region subtag."));
+        let variants = subtags
+            .variants
+            .iter()
+            .map(|v| v.parse().expect("Failed to parse variant subtag."))
+            .collect::<Vec<_>>();
+        let extensions = if let Some(e) = subtags.extensions {
+            e.try_into().expect("Failed to parse extensions.")
+        } else {
+            Extensions::default()
+        };
+        Ok(Locale {
+            id: LanguageIdentifier {
+                language,
+                script,
+                region,
+                variants: subtags::Variants::from_vec_unchecked(variants),
+            },
+            extensions,
+        })
+    }
+}
+
+impl From<LocaleError> for ParseError {
+    fn from(e: LocaleError) -> Self {
+        match e.error.as_str() {
+            "InvalidLanguage" => ParseError::InvalidLanguage,
+            "InvalidSubtag" => ParseError::InvalidSubtag,
+            "InvalidExtension" => ParseError::InvalidExtension,
+            "DuplicatedExtension" => ParseError::DuplicatedExtension,
+            _ => unreachable!("Unknown error name"),
+        }
+    }
+}
+
+#[derive(Debug, Deserialize)]
+pub struct LocaleTest {
+    pub input: LocaleInfo,
+    pub output: LocaleInfo,
+}
diff --git a/vendor/icu_locale_core/tests/langid.rs b/vendor/icu_locale_core/tests/langid.rs
new file mode 100644
index 00000000..47d59c12
--- /dev/null
+++ b/vendor/icu_locale_core/tests/langid.rs
@@ -0,0 +1,156 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod fixtures;
+
+use std::convert::TryInto;
+use writeable::*;
+
+use icu_locale_core::{subtags, LanguageIdentifier, ParseError};
+
+type Result = std::result::Result<LanguageIdentifier, ParseError>;
+
+fn test_langid_fixtures(tests: Vec<fixtures::LocaleTest>) {
+    for test in tests {
+        match test.output {
+            fixtures::LocaleInfo::String(s) => {
+                if let fixtures::LocaleInfo::Object(ref o) = &test.input {
+                    if o.field_type == "Locale" {
+                        continue;
+                    }
+                }
+                let input: LanguageIdentifier = test.input.try_into().expect("Parsing failed.");
+                assert_writeable_eq!(input, s);
+            }
+            fixtures::LocaleInfo::Error(err) => {
+                let err: ParseError = err.into();
+                let input: Result = test.input.try_into();
+                assert_eq!(input, Err(err));
+            }
+            fixtures::LocaleInfo::Identifier(ident) => {
+                let input: LanguageIdentifier = test.input.try_into().expect("Parsing failed.");
+                let output: LanguageIdentifier = ident.try_into().expect("Parsing failed.");
+                assert_eq!(input, output);
+            }
+            fixtures::LocaleInfo::Object(o) => {
+                let input: LanguageIdentifier = test.input.try_into().expect("Parsing failed.");
+                let output: LanguageIdentifier = o.try_into().expect("Parsing failed.");
+                assert_eq!(input, output);
+            }
+        }
+    }
+}
+
+#[test]
+fn test_langid_parsing() {
+    let data = serde_json::from_str(include_str!("fixtures/langid.json"))
+        .expect("Failed to read a fixture");
+
+    test_langid_fixtures(data);
+}
+
+#[test]
+fn test_langid_invalid() {
+    let data = serde_json::from_str(include_str!("fixtures/invalid.json"))
+        .expect("Failed to read a fixture");
+
+    test_langid_fixtures(data);
+}
+
+#[test]
+fn test_langid_canonicalize() {
+    let data = serde_json::from_str(include_str!("fixtures/canonicalize.json"))
+        .expect("Failed to read a fixture");
+
+    test_langid_fixtures(data);
+}
+
+#[test]
+fn test_langid_from_locale() {
+    let data = serde_json::from_str(include_str!("fixtures/locale.json"))
+        .expect("Failed to read a fixture");
+
+    test_langid_fixtures(data);
+}
+
+#[test]
+fn test_langid_subtag_language() {
+    let mut lang: subtags::Language = "en".parse().expect("Failed to parse a language.");
+    assert_eq!(lang.as_str(), "en");
+
+    lang = subtags::Language::UNKNOWN;
+    assert!(lang.is_unknown());
+
+    assert_writeable_eq!(lang, "und");
+}
+
+#[test]
+fn test_langid_subtag_region() {
+    let region: subtags::Region = "en".parse().expect("Failed to parse a region.");
+    assert_eq!(region.as_str(), "EN");
+    assert_writeable_eq!(region, "EN");
+}
+
+#[test]
+fn test_langid_subtag_script() {
+    let script: subtags::Script = "Latn".parse().expect("Failed to parse a script.");
+    assert_eq!(script.as_str(), "Latn");
+    assert_writeable_eq!(script, "Latn");
+}
+
+#[test]
+fn test_langid_subtag_variant() {
+    let variant: subtags::Variant = "macos".parse().expect("Failed to parse a variant.");
+    assert_eq!(variant.as_str(), "macos");
+    assert_writeable_eq!(variant, "macos");
+}
+
+#[test]
+fn test_langid_subtag_variants() {
+    let variant: subtags::Variant = "macos".parse().expect("Failed to parse a variant.");
+    let mut variants = subtags::Variants::from_vec_unchecked(vec![variant]);
+    assert_eq!(variants.first(), Some(&variant));
+    variants.clear();
+    assert_eq!(variants.len(), 0);
+}
+
+#[test]
+fn test_langid_normalizing_eq_str() {
+    let tests: Vec<fixtures::LocaleTest> =
+        serde_json::from_str(include_str!("fixtures/langid.json"))
+            .expect("Failed to read a fixture");
+    for test in tests {
+        let parsed: LanguageIdentifier = test.input.try_into().expect("Parsing failed.");
+        assert!(parsed.normalizing_eq(&parsed.write_to_string()));
+    }
+
+    // Check that trailing characters are not ignored
+    let lang: LanguageIdentifier = "en".parse().expect("Parsing failed.");
+    assert!(!lang.normalizing_eq("en-US"));
+}
+
+#[test]
+fn test_langid_strict_cmp() {
+    let tests: Vec<fixtures::LocaleTest> =
+        serde_json::from_str(include_str!("fixtures/langid.json"))
+            .expect("Failed to read a fixture");
+    let bcp47_strings = tests
+        .iter()
+        .map(|t| match t.input {
+            fixtures::LocaleInfo::String(ref s) => s.as_str(),
+            _ => panic!("Invalid fixture"),
+        })
+        .collect::<Vec<&str>>();
+    for a in bcp47_strings.iter() {
+        for b in bcp47_strings.iter() {
+            let a_langid = a
+                .parse::<LanguageIdentifier>()
+                .expect("Invalid BCP-47 in fixture");
+            let a_normalized = a_langid.write_to_string();
+            let string_cmp = a_normalized.as_bytes().cmp(b.as_bytes());
+            let test_cmp = a_langid.strict_cmp(b.as_bytes());
+            assert_eq!(string_cmp, test_cmp, "{a:?}/{b:?}");
+        }
+    }
+}
diff --git a/vendor/icu_locale_core/tests/locale.rs b/vendor/icu_locale_core/tests/locale.rs
new file mode 100644
index 00000000..5a700bcc
--- /dev/null
+++ b/vendor/icu_locale_core/tests/locale.rs
@@ -0,0 +1,119 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod fixtures;
+
+use std::convert::TryInto;
+use writeable::*;
+
+use icu_locale_core::{LanguageIdentifier, Locale, ParseError};
+
+type Result = std::result::Result<Locale, ParseError>;
+
+fn test_langid_fixtures(tests: Vec<fixtures::LocaleTest>) {
+    for test in tests {
+        match test.output {
+            fixtures::LocaleInfo::String(s) => {
+                let input: Locale = test.input.try_into().expect("Parsing failed.");
+                assert_writeable_eq!(input, s);
+            }
+            fixtures::LocaleInfo::Error(err) => {
+                let err: ParseError = err.into();
+                let input: Result = test.input.try_into();
+                assert_eq!(input, Err(err));
+            }
+            fixtures::LocaleInfo::Identifier(ident) => {
+                let input: Locale = test.input.try_into().expect("Parsing failed.");
+                let output: Locale = ident.clone().try_into().expect("Parsing failed.");
+                assert_eq!(input, output);
+                assert_writeable_eq!(input, ident.identifier);
+            }
+            fixtures::LocaleInfo::Object(o) => {
+                let input: Locale = test.input.try_into().expect("Parsing failed.");
+                let output: Locale = o.try_into().expect("Parsing failed.");
+                assert_eq!(input, output);
+            }
+        }
+    }
+}
+
+#[test]
+fn test_locale_parsing() {
+    let data = serde_json::from_str(include_str!("fixtures/locale.json"))
+        .expect("Failed to read a fixture");
+
+    test_langid_fixtures(data);
+}
+
+#[test]
+fn test_locale_invalid() {
+    let data = serde_json::from_str(include_str!("fixtures/invalid-extensions.json"))
+        .expect("Failed to read a fixture");
+
+    test_langid_fixtures(data);
+}
+
+#[test]
+fn test_locale_is_empty() {
+    let locale: Locale = Locale::UNKNOWN;
+    assert!(locale.extensions.is_empty());
+    assert_writeable_eq!(locale, "und");
+}
+
+#[test]
+fn test_locale_conversions() {
+    let locale: Locale = Locale::UNKNOWN;
+    let langid: LanguageIdentifier = locale.clone().into();
+    let locale2: Locale = langid.into();
+    assert_eq!(locale, locale2);
+}
+
+#[test]
+fn test_locale_canonicalize() {
+    let data = serde_json::from_str(include_str!("fixtures/canonicalize.json"))
+        .expect("Failed to read a fixture");
+
+    test_langid_fixtures(data);
+}
+
+#[test]
+fn test_locale_normalizing_eq_str() {
+    let tests: Vec<fixtures::LocaleTest> =
+        serde_json::from_str(include_str!("fixtures/locale.json"))
+            .expect("Failed to read a fixture");
+    for test in tests {
+        let parsed: Locale = test.input.try_into().expect("Parsing failed.");
+        assert!(parsed.normalizing_eq(&parsed.write_to_string()));
+    }
+
+    // Check that trailing characters are not ignored
+    let locale: Locale = "en".parse().expect("Parsing failed.");
+    assert!(!locale.normalizing_eq("en-US"));
+}
+
+#[test]
+fn test_locale_strict_cmp() {
+    let tests: Vec<fixtures::LocaleTest> =
+        serde_json::from_str(include_str!("fixtures/locale.json"))
+            .expect("Failed to read a fixture");
+    let bcp47_strings = tests
+        .iter()
+        .map(|t| match t.input {
+            fixtures::LocaleInfo::Identifier(ref s) => s.identifier.as_str(),
+            _ => match t.output {
+                fixtures::LocaleInfo::Identifier(ref s) => s.identifier.as_str(),
+                _ => panic!("No string in fixture input or output: {t:?}"),
+            },
+        })
+        .collect::<Vec<&str>>();
+    for a in bcp47_strings.iter() {
+        for b in bcp47_strings.iter() {
+            let a_langid = a.parse::<Locale>().expect("Invalid BCP-47 in fixture");
+            let a_normalized = a_langid.write_to_string();
+            let string_cmp = a_normalized.as_bytes().cmp(b.as_bytes());
+            let test_cmp = a_langid.strict_cmp(b.as_bytes());
+            assert_eq!(string_cmp, test_cmp, "{a:?}/{b:?}");
+        }
+    }
+}
diff --git a/vendor/icu_normalizer/.cargo-checksum.json b/vendor/icu_normalizer/.cargo-checksum.json
new file mode 100644
index 00000000..d4274f32
--- /dev/null
+++ b/vendor/icu_normalizer/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"b3ebc0d4deaf34153984d80c71ecfde9fe30d5621081322a00ff87c73348e57e","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"aec56e279d7e40a901b47a2eccb52197fde6c9499011b349c5ef509363bee6a9","benches/bench.rs":"9cd781e3d0e8d772860cd332b4f403910f3ca52fd69a459f5ac95d28f0e25ac2","benches/canonical_composition.rs":"0aa91d5d400f58da61865f5fabe878c8506e60466c78503f77041ef7257e6dbe","benches/canonical_decomposition.rs":"3b44b8f832e426e8c82e449743117182ab7b138288001b621ccc9325b4c27b6c","benches/composing_normalizer_nfc.rs":"9a7aaae94e0096ccac9f3d1a83585c3f449af87f9f0f8b05615d2a010078e3e8","benches/composing_normalizer_nfkc.rs":"ad92d562a1e9aad3611521526882e1896aa436d2ac59493c8c00686c57bdf31e","benches/data/README.md":"fa79b84815a228c3fbfa5d4c6d12885036994ca8ad61e683b2113cf2b428bb85","benches/data/TestNames_Japanese_h.txt":"6522f8ed794ad348c904079082ec3aa303ae7acf3f68bbc49fa0ee90eebf31e0","benches/data/TestNames_Japanese_k.txt":"e4e18804fe742ecd27ae48bc3564c6bc653180a3c649d43a2ab4d8b7f2607627","benches/data/TestNames_Korean.txt":"9cbf54d5ee16726c0fc9477366e273ba1b82e651c9e88e6c7532df5344f03920","benches/data/TestNames_Latin.txt":"3a30d450d259a6be4a6aee8eeef08d3767d11fcc047b8f58060c542efe1182d1","benches/data/TestNames_Thai.txt":"28d76ddb62d6f47646232860fce7440544f402158443889393fd7e8bf10e9c3d","benches/data/TestRandomWordsUDHR_ar.txt":"02a775153e9746ae938a9db0b60244f2c00d911bb72b611a3593b0991fd95723","benches/data/TestRandomWordsUDHR_de.txt":"100b9502e7ddcb2fcbd055cb7ec9113245105bd1c606cace5e5bc147cc18727b","benches/data/TestRandomWordsUDHR_el.txt":"d1a2f0f9efc9ce663026ca7c285177391937c90008479a8c5b909c300dc86972","benches/data/TestRandomWordsUDHR_es.txt":"deeebda09e0ce0f80dd805317e96d1a630908601ff2a4d1ccb0021b00b55814b","benches/data/TestRandomWordsUDHR_fr.txt":"5931edc9f1af2c27a0b35c9624732e70b87b0fd72ab486710f3aa6367c7ad35f","benches/data/TestRandomWordsUDHR_he.txt":"dc77a89ffb9803e5c574d87f4789cb17624df73e40a8a92961df8ea8be103425","benches/data/TestRandomWordsUDHR_pl.txt":"26c378295ee2ef75ccacea691df0456394184a9a5c9ce48b2bada169b2402bbb","benches/data/TestRandomWordsUDHR_ru.txt":"a1c339f6d7b69cf9154e855c290ab09eeaf167ebcdf6d4bcb917de039fba10ee","benches/data/TestRandomWordsUDHR_th.txt":"3ba518be9863c85c3ac80cbb12299e3594e6f5afed3406d910d948007adaaf4e","benches/data/TestRandomWordsUDHR_tr.txt":"815c7babbc7228ef89b56f29638aeb63013aeca0003a49e58994e26b41cba01c","benches/data/wotw.txt":"8f28e68041ce75bbf75e72e186a6145e4c2de9e7e62b9b86ce0621c527a23669","benches/decomposing_normalizer_nfd.rs":"28f3d54c9af813af7ac9d0fbc9d45a7a6d27a25266bd593453eb35c1894280b5","benches/decomposing_normalizer_nfkd.rs":"cbaa2755878ee1cc90170210fddb7c79836457f89eb84f4f32fb51348f350bd5","src/lib.rs":"49621ffe84e82515aecf3c660234355561520ee11066d30d49ef1189181b4ef4","src/properties.rs":"3940f55f1e608fe9a70cb943e71cfd37894339af6b7d13697ae1776d7c1a2cc0","src/provider.rs":"5850afc7ae842c7af74ce029be256944c64f5d0b51d95725a8366f5af22163e9","src/uts46.rs":"a54b6191cbb0538da16d8ef0b6dfb3adfa2ca30e4161aaf37bcaae3e6537de80","tests/data/NormalizationTest.txt":"1b04c22b82064adf871e76fd2148cd749129163f7d05bd7ace923516a65afe02","tests/data/README.md":"521fcd44a1f10f21629df88113fa29ca9f4e1dfbeea79fda19a7dc8ba435e24b","tests/tests.rs":"01db1c9dc1c7c71f80aed528e4309f416349af9eec887d2e438a3a11f2ee7f7c"},"package":"436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"}
\ No newline at end of file
diff --git a/vendor/icu_normalizer/Cargo.toml b/vendor/icu_normalizer/Cargo.toml
new file mode 100644
index 00000000..f9eb1163
--- /dev/null
+++ b/vendor/icu_normalizer/Cargo.toml
@@ -0,0 +1,201 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "icu_normalizer"
+version = "2.0.0"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+    "build.rs",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "API for normalizing text into Unicode Normalization Forms"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.docs.rs]
+all-features = true
+
+[features]
+compiled_data = [
+    "dep:icu_normalizer_data",
+    "icu_properties?/compiled_data",
+    "icu_provider/baked",
+]
+datagen = [
+    "serde",
+    "dep:databake",
+    "icu_properties",
+    "icu_collections/databake",
+    "zerovec/databake",
+    "icu_properties?/datagen",
+    "icu_provider/export",
+]
+default = [
+    "compiled_data",
+    "utf8_iter",
+    "utf16_iter",
+]
+experimental = []
+icu_properties = ["dep:icu_properties"]
+serde = [
+    "dep:serde",
+    "icu_collections/serde",
+    "zerovec/serde",
+    "icu_properties?/serde",
+    "icu_provider/serde",
+]
+utf16_iter = [
+    "dep:utf16_iter",
+    "write16",
+]
+utf8_iter = ["dep:utf8_iter"]
+
+[lib]
+name = "icu_normalizer"
+path = "src/lib.rs"
+
+[[test]]
+name = "tests"
+path = "tests/tests.rs"
+
+[[bench]]
+name = "bench"
+path = "benches/bench.rs"
+harness = false
+required-features = [
+    "utf16_iter",
+    "utf8_iter",
+]
+
+[[bench]]
+name = "canonical_composition"
+path = "benches/canonical_composition.rs"
+
+[[bench]]
+name = "canonical_decomposition"
+path = "benches/canonical_decomposition.rs"
+
+[[bench]]
+name = "composing_normalizer_nfc"
+path = "benches/composing_normalizer_nfc.rs"
+
+[[bench]]
+name = "composing_normalizer_nfkc"
+path = "benches/composing_normalizer_nfkc.rs"
+
+[[bench]]
+name = "decomposing_normalizer_nfd"
+path = "benches/decomposing_normalizer_nfd.rs"
+
+[[bench]]
+name = "decomposing_normalizer_nfkd"
+path = "benches/decomposing_normalizer_nfkd.rs"
+
+[dependencies.databake]
+version = "0.2.0"
+features = ["derive"]
+optional = true
+default-features = false
+
+[dependencies.displaydoc]
+version = "0.2.3"
+default-features = false
+
+[dependencies.icu_collections]
+version = "~2.0.0"
+default-features = false
+
+[dependencies.icu_normalizer_data]
+version = "~2.0.0"
+optional = true
+default-features = false
+
+[dependencies.icu_properties]
+version = "~2.0.0"
+optional = true
+default-features = false
+
+[dependencies.icu_provider]
+version = "2.0.0"
+default-features = false
+
+[dependencies.serde]
+version = "1.0.110"
+features = [
+    "derive",
+    "alloc",
+]
+optional = true
+default-features = false
+
+[dependencies.smallvec]
+version = "1.10.0"
+default-features = false
+
+[dependencies.utf16_iter]
+version = "1.0.2"
+optional = true
+default-features = false
+
+[dependencies.utf8_iter]
+version = "1.0.2"
+optional = true
+default-features = false
+
+[dependencies.write16]
+version = "1.0.0"
+features = ["alloc"]
+optional = true
+default-features = false
+
+[dependencies.zerovec]
+version = "0.11.1"
+default-features = false
+
+[dev-dependencies.arraystring]
+version = "0.3.0"
+
+[dev-dependencies.arrayvec]
+version = "0.7.2"
+default-features = false
+
+[dev-dependencies.atoi]
+version = "2.0.0"
+
+[dev-dependencies.detone]
+version = "1.0.0"
+
+[dev-dependencies.write16]
+version = "1.0.0"
+features = ["arrayvec"]
+default-features = false
+
+[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
+version = "0.5.0"
diff --git a/vendor/icu_normalizer/LICENSE b/vendor/icu_normalizer/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/icu_normalizer/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/icu_normalizer/README.md b/vendor/icu_normalizer/README.md
new file mode 100644
index 00000000..5c9e7409
--- /dev/null
+++ b/vendor/icu_normalizer/README.md
@@ -0,0 +1,48 @@
+# icu_normalizer [![crates.io](https://img.shields.io/crates/v/icu_normalizer)](https://crates.io/crates/icu_normalizer)
+
+<!-- cargo-rdme start -->
+
+Normalizing text into Unicode Normalization Forms.
+
+This module is published as its own crate ([`icu_normalizer`](https://docs.rs/icu_normalizer/latest/icu_normalizer/))
+and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
+
+## Functionality
+
+The top level of the crate provides normalization of input into the four normalization forms defined in [UAX #15: Unicode
+Normalization Forms](https://www.unicode.org/reports/tr15/): NFC, NFD, NFKC, and NFKD.
+
+Three kinds of contiguous inputs are supported: known-well-formed UTF-8 (`&str`), potentially-not-well-formed UTF-8,
+and potentially-not-well-formed UTF-16. Additionally, an iterator over `char` can be wrapped in a normalizing iterator.
+
+The `uts46` module provides the combination of mapping and normalization operations for [UTS #46: Unicode IDNA
+Compatibility Processing](https://www.unicode.org/reports/tr46/). This functionality is not meant to be used by
+applications directly. Instead, it is meant as a building block for a full implementation of UTS #46, such as the
+[`idna`](https://docs.rs/idna/latest/idna/) crate.
+
+The `properties` module provides the non-recursive canonical decomposition operation on a per `char` basis and
+the canonical compositon operation given two `char`s. It also provides access to the Canonical Combining Class
+property. These operations are primarily meant for [HarfBuzz](https://harfbuzz.github.io/) via the
+[`icu_harfbuzz`](https://docs.rs/icu_harfbuzz/latest/icu_harfbuzz/) crate.
+
+Notably, this normalizer does _not_ provide the normalization “quick check” that can result in “maybe” in
+addition to “yes” and “no”. The normalization checks provided by this crate always give a definitive
+non-“maybe” answer.
+
+## Examples
+
+```rust
+let nfc = icu_normalizer::ComposingNormalizerBorrowed::new_nfc();
+assert_eq!(nfc.normalize("a\u{0308}"), "ä");
+assert!(nfc.is_normalized("ä"));
+
+let nfd = icu_normalizer::DecomposingNormalizerBorrowed::new_nfd();
+assert_eq!(nfd.normalize("ä"), "a\u{0308}");
+assert!(!nfd.is_normalized("ä"));
+```
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_normalizer/benches/bench.rs b/vendor/icu_normalizer/benches/bench.rs
new file mode 100644
index 00000000..011478af
--- /dev/null
+++ b/vendor/icu_normalizer/benches/bench.rs
@@ -0,0 +1,24 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{criterion_group, criterion_main};
+
+mod canonical_composition;
+mod canonical_decomposition;
+mod composing_normalizer_nfc;
+mod composing_normalizer_nfkc;
+mod decomposing_normalizer_nfd;
+mod decomposing_normalizer_nfkd;
+
+criterion_group!(
+    benches,
+    canonical_composition::criterion_benchmark,
+    canonical_decomposition::criterion_benchmark,
+    composing_normalizer_nfc::criterion_benchmark,
+    composing_normalizer_nfkc::criterion_benchmark,
+    decomposing_normalizer_nfd::criterion_benchmark,
+    decomposing_normalizer_nfkd::criterion_benchmark,
+);
+
+criterion_main!(benches);
diff --git a/vendor/icu_normalizer/benches/canonical_composition.rs b/vendor/icu_normalizer/benches/canonical_composition.rs
new file mode 100644
index 00000000..134c08d8
--- /dev/null
+++ b/vendor/icu_normalizer/benches/canonical_composition.rs
@@ -0,0 +1,188 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, BenchmarkId, Criterion};
+use detone::IterDecomposeVietnamese;
+
+use icu_normalizer::properties::{
+    CanonicalCompositionBorrowed, CanonicalDecompositionBorrowed, Decomposed,
+};
+use icu_normalizer::ComposingNormalizerBorrowed;
+
+struct BenchDataContent {
+    pub file_name: String,
+    pub pairs: Vec<(char, char)>,
+}
+
+fn strip_headers(content: &str) -> String {
+    content
+        .lines()
+        .filter(|&s| !s.starts_with('#'))
+        .map(|s| s.to_owned())
+        .collect::<Vec<String>>()
+        .join("\n")
+}
+
+fn normalizer_bench_data() -> [BenchDataContent; 16] {
+    let nfc_normalizer = ComposingNormalizerBorrowed::new_nfc();
+
+    [
+        BenchDataContent {
+            file_name: "TestNames_Latin".to_owned(),
+            pairs: decompose_data(
+                &nfc_normalizer
+                    .normalize(&strip_headers(include_str!("./data/TestNames_Latin.txt"))),
+            ),
+        },
+        BenchDataContent {
+            file_name: "TestNames_Japanese_h".to_owned(),
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestNames_Japanese_h.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestNames_Japanese_k".to_owned(),
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestNames_Japanese_k.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestNames_Korean".to_owned(),
+            pairs: decompose_data(
+                &nfc_normalizer
+                    .normalize(&strip_headers(include_str!("./data/TestNames_Korean.txt"))),
+            ),
+        },
+        BenchDataContent {
+            file_name: "TestRandomWordsUDHR_ar".to_owned(),
+            #[cfg(debug_assertions)]
+            pairs: Vec::new(),
+            #[cfg(not(debug_assertions))]
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestRandomWordsUDHR_ar.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestRandomWordsUDHR_de".to_owned(),
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestRandomWordsUDHR_de.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestRandomWordsUDHR_el".to_owned(),
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestRandomWordsUDHR_el.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestRandomWordsUDHR_es".to_owned(),
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestRandomWordsUDHR_es.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestRandomWordsUDHR_fr".to_owned(),
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestRandomWordsUDHR_fr.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestRandomWordsUDHR_he".to_owned(),
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestRandomWordsUDHR_he.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestRandomWordsUDHR_pl".to_owned(),
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestRandomWordsUDHR_pl.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestRandomWordsUDHR_ru".to_owned(),
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestRandomWordsUDHR_ru.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestRandomWordsUDHR_th".to_owned(),
+            #[cfg(debug_assertions)]
+            pairs: Vec::new(),
+            #[cfg(not(debug_assertions))]
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestRandomWordsUDHR_th.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "TestRandomWordsUDHR_tr".to_owned(),
+            pairs: decompose_data(&nfc_normalizer.normalize(&strip_headers(include_str!(
+                "./data/TestRandomWordsUDHR_tr.txt"
+            )))),
+        },
+        BenchDataContent {
+            file_name: "udhr_vie".to_owned(),
+            pairs: decompose_data(
+                &nfc_normalizer.normalize(&strip_headers(include_str!("data/wotw.txt"))),
+            ),
+        },
+        BenchDataContent {
+            file_name: "udhr_vie_detone".to_owned(),
+            pairs: {
+                let result: Vec<(char, char)> = nfc_normalizer
+                    .normalize(&strip_headers(include_str!("data/wotw.txt")))
+                    .chars()
+                    .filter_map(|c| {
+                        let mut iter = std::iter::once(c).decompose_vietnamese_tones(true);
+                        if let Some(base) = iter.next() {
+                            iter.next().map(|tone| (base, tone))
+                        } else {
+                            None
+                        }
+                    })
+                    .collect();
+                assert!(!result.is_empty());
+                result
+            },
+        },
+    ]
+}
+
+fn function_under_bench(
+    canonical_composer: &CanonicalCompositionBorrowed,
+    composable_points: &[(char, char)],
+) {
+    for pair in composable_points.iter() {
+        canonical_composer.compose(pair.0, pair.1);
+    }
+}
+
+pub fn criterion_benchmark(criterion: &mut Criterion) {
+    let group_name = "canonical_composition";
+    let mut group = criterion.benchmark_group(group_name);
+
+    let composer = CanonicalCompositionBorrowed::new();
+
+    for bench_data_content in black_box(normalizer_bench_data()) {
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfc_{}", bench_data_content.file_name)),
+            |bencher| bencher.iter(|| function_under_bench(&composer, &bench_data_content.pairs)),
+        );
+    }
+
+    group.finish();
+}
+
+fn decompose_data(nfc: &str) -> Vec<(char, char)> {
+    let decomposer = CanonicalDecompositionBorrowed::new();
+    nfc.chars()
+        .map(|c| decomposer.decompose(c))
+        .filter_map(|decomposed| {
+            if let Decomposed::Expansion(a, b) = decomposed {
+                Some((a, b))
+            } else {
+                None
+            }
+        })
+        .collect()
+}
diff --git a/vendor/icu_normalizer/benches/canonical_decomposition.rs b/vendor/icu_normalizer/benches/canonical_decomposition.rs
new file mode 100644
index 00000000..8e5ad5dc
--- /dev/null
+++ b/vendor/icu_normalizer/benches/canonical_decomposition.rs
@@ -0,0 +1,162 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, BenchmarkId, Criterion};
+
+use icu_normalizer::properties::CanonicalDecompositionBorrowed;
+use icu_normalizer::{ComposingNormalizerBorrowed, DecomposingNormalizerBorrowed};
+
+struct BenchDataContent {
+    pub file_name: String,
+    pub nfc: String,
+    pub nfd: String,
+    pub nfkc: String,
+    pub nfkd: String,
+}
+
+fn strip_headers(content: &str) -> String {
+    content
+        .lines()
+        .filter(|&s| !s.starts_with('#'))
+        .map(|s| s.to_owned())
+        .collect::<Vec<String>>()
+        .join("\n")
+}
+
+fn normalizer_bench_data() -> [BenchDataContent; 15] {
+    let nfc_normalizer = ComposingNormalizerBorrowed::new_nfc();
+    let nfd_normalizer = DecomposingNormalizerBorrowed::new_nfd();
+    let nfkc_normalizer = ComposingNormalizerBorrowed::new_nfkc();
+    let nfkd_normalizer = DecomposingNormalizerBorrowed::new_nfkd();
+
+    let content_latin: (&str, &str) = (
+        "TestNames_Latin",
+        &strip_headers(include_str!("./data/TestNames_Latin.txt")),
+    );
+    let content_jp_h: (&str, &str) = (
+        "TestNames_Japanese_h",
+        &strip_headers(include_str!("./data/TestNames_Japanese_h.txt")),
+    );
+    let content_jp_k: (&str, &str) = (
+        "TestNames_Japanese_k",
+        &strip_headers(include_str!("./data/TestNames_Japanese_k.txt")),
+    );
+    let content_korean: (&str, &str) = (
+        "TestNames_Korean",
+        &strip_headers(include_str!("./data/TestNames_Korean.txt")),
+    );
+    let content_random_words_ar: (&str, &str) = (
+        "TestRandomWordsUDHR_ar",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_ar.txt")),
+    );
+    let content_random_words_de: (&str, &str) = (
+        "TestRandomWordsUDHR_de",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_de.txt")),
+    );
+    let content_random_words_el: (&str, &str) = (
+        "TestRandomWordsUDHR_el",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_el.txt")),
+    );
+    let content_random_words_es: (&str, &str) = (
+        "TestRandomWordsUDHR_es",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_es.txt")),
+    );
+    let content_random_words_fr: (&str, &str) = (
+        "TestRandomWordsUDHR_fr",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_fr.txt")),
+    );
+    let content_random_words_he: (&str, &str) = (
+        "TestRandomWordsUDHR_he",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_he.txt")),
+    );
+    let content_random_words_pl: (&str, &str) = (
+        "TestRandomWordsUDHR_pl",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_pl.txt")),
+    );
+    let content_random_words_ru: (&str, &str) = (
+        "TestRandomWordsUDHR_ru",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_ru.txt")),
+    );
+    let content_random_words_th: (&str, &str) = (
+        "TestRandomWordsUDHR_th",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_th.txt")),
+    );
+    let content_random_words_tr: (&str, &str) = (
+        "TestRandomWordsUDHR_tr",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_tr.txt")),
+    );
+    let content_viet: (&str, &str) = ("udhr_vie", &strip_headers(include_str!("data/wotw.txt")));
+
+    [
+        content_latin,
+        content_viet,
+        content_jp_k,
+        content_jp_h,
+        content_korean,
+        content_random_words_ru,
+        content_random_words_ar,
+        content_random_words_el,
+        content_random_words_es,
+        content_random_words_fr,
+        content_random_words_tr,
+        content_random_words_th,
+        content_random_words_pl,
+        content_random_words_he,
+        content_random_words_de,
+    ]
+    .map(|(file_name, raw_content)| BenchDataContent {
+        file_name: file_name.to_owned(),
+        nfc: nfc_normalizer.normalize(raw_content).to_string(),
+        nfd: nfd_normalizer.normalize(raw_content).to_string(),
+        nfkc: nfkc_normalizer.normalize(raw_content).to_string(),
+        nfkd: nfkd_normalizer.normalize(raw_content).to_string(),
+    })
+}
+
+#[cfg(debug_assertions)]
+fn function_under_bench(
+    _canonical_decomposer: &CanonicalDecompositionBorrowed,
+    _decomposable_points: &str,
+) {
+    // using debug assertion fails some test.
+    // "cargo test --bench bench" will pass
+    // "cargo bench" will work as expected, because the profile doesn't include debug assertions.
+}
+
+#[cfg(not(debug_assertions))]
+fn function_under_bench(
+    canonical_decomposer: &CanonicalDecompositionBorrowed,
+    decomposable_points: &str,
+) {
+    decomposable_points.chars().for_each(|point| {
+        canonical_decomposer.decompose(point);
+    });
+}
+
+pub fn criterion_benchmark(criterion: &mut Criterion) {
+    let group_name = "canonical_decomposition";
+    let mut group = criterion.benchmark_group(group_name);
+
+    let decomposer = CanonicalDecompositionBorrowed::new();
+
+    for bench_data_content in black_box(normalizer_bench_data()) {
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfc_{}", bench_data_content.file_name)),
+            |bencher| bencher.iter(|| function_under_bench(&decomposer, &bench_data_content.nfc)),
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfd_{}", bench_data_content.file_name)),
+            |bencher| bencher.iter(|| function_under_bench(&decomposer, &bench_data_content.nfd)),
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkc_{}", bench_data_content.file_name)),
+            |bencher| bencher.iter(|| function_under_bench(&decomposer, &bench_data_content.nfkc)),
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkd_{}", bench_data_content.file_name)),
+            |bencher| bencher.iter(|| function_under_bench(&decomposer, &bench_data_content.nfkd)),
+        );
+    }
+    group.finish();
+}
diff --git a/vendor/icu_normalizer/benches/composing_normalizer_nfc.rs b/vendor/icu_normalizer/benches/composing_normalizer_nfc.rs
new file mode 100644
index 00000000..e23848dc
--- /dev/null
+++ b/vendor/icu_normalizer/benches/composing_normalizer_nfc.rs
@@ -0,0 +1,230 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, BenchmarkId, Criterion};
+
+use icu_normalizer::{ComposingNormalizerBorrowed, DecomposingNormalizerBorrowed};
+
+struct BenchDataContent {
+    pub file_name: String,
+    pub nfc: String,
+    pub nfd: String,
+    pub nfkc: String,
+    pub nfkd: String,
+    pub nfc_u16: Vec<u16>,
+    pub nfd_u16: Vec<u16>,
+    pub nfkc_u16: Vec<u16>,
+    pub nfkd_u16: Vec<u16>,
+}
+
+fn strip_headers(content: &str) -> String {
+    content
+        .lines()
+        .filter(|&s| !s.starts_with('#'))
+        .map(|s| s.to_owned())
+        .collect::<Vec<String>>()
+        .join("\n")
+}
+
+fn normalizer_bench_data() -> [BenchDataContent; 15] {
+    let nfc_normalizer = ComposingNormalizerBorrowed::new_nfc();
+    let nfd_normalizer = DecomposingNormalizerBorrowed::new_nfd();
+    let nfkc_normalizer = ComposingNormalizerBorrowed::new_nfkc();
+    let nfkd_normalizer = DecomposingNormalizerBorrowed::new_nfkd();
+
+    let content_latin: (&str, &str) = (
+        "TestNames_Latin",
+        &strip_headers(include_str!("./data/TestNames_Latin.txt")),
+    );
+    let content_jp_h: (&str, &str) = (
+        "TestNames_Japanese_h",
+        &strip_headers(include_str!("./data/TestNames_Japanese_h.txt")),
+    );
+    let content_jp_k: (&str, &str) = (
+        "TestNames_Japanese_k",
+        &strip_headers(include_str!("./data/TestNames_Japanese_k.txt")),
+    );
+    let content_korean: (&str, &str) = (
+        "TestNames_Korean",
+        &strip_headers(include_str!("./data/TestNames_Korean.txt")),
+    );
+    let content_random_words_ar: (&str, &str) = (
+        "TestRandomWordsUDHR_ar",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_ar.txt")),
+    );
+    let content_random_words_de: (&str, &str) = (
+        "TestRandomWordsUDHR_de",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_de.txt")),
+    );
+    let content_random_words_el: (&str, &str) = (
+        "TestRandomWordsUDHR_el",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_el.txt")),
+    );
+    let content_random_words_es: (&str, &str) = (
+        "TestRandomWordsUDHR_es",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_es.txt")),
+    );
+    let content_random_words_fr: (&str, &str) = (
+        "TestRandomWordsUDHR_fr",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_fr.txt")),
+    );
+    let content_random_words_he: (&str, &str) = (
+        "TestRandomWordsUDHR_he",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_he.txt")),
+    );
+    let content_random_words_pl: (&str, &str) = (
+        "TestRandomWordsUDHR_pl",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_pl.txt")),
+    );
+    let content_random_words_ru: (&str, &str) = (
+        "TestRandomWordsUDHR_ru",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_ru.txt")),
+    );
+    let content_random_words_th: (&str, &str) = (
+        "TestRandomWordsUDHR_th",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_th.txt")),
+    );
+    let content_random_words_tr: (&str, &str) = (
+        "TestRandomWordsUDHR_tr",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_tr.txt")),
+    );
+    let content_viet: (&str, &str) = ("wotw", &strip_headers(include_str!("./data/wotw.txt")));
+
+    [
+        content_latin,
+        content_viet,
+        content_jp_k,
+        content_jp_h,
+        content_korean,
+        content_random_words_ru,
+        content_random_words_ar,
+        content_random_words_el,
+        content_random_words_es,
+        content_random_words_fr,
+        content_random_words_tr,
+        content_random_words_th,
+        content_random_words_pl,
+        content_random_words_he,
+        content_random_words_de,
+    ]
+    .map(|(file_name, raw_content)| {
+        let nfc = &nfc_normalizer.normalize(raw_content);
+        let nfd = &nfd_normalizer.normalize(raw_content);
+        let nfkc = &nfkc_normalizer.normalize(raw_content);
+        let nfkd = &nfkd_normalizer.normalize(raw_content);
+        BenchDataContent {
+            file_name: file_name.to_owned(),
+            nfc: nfc.to_string(),
+            nfd: nfd.to_string(),
+            nfkc: nfkc.to_string(),
+            nfkd: nfkd.to_string(),
+            nfc_u16: nfc.encode_utf16().collect(),
+            nfd_u16: nfd.encode_utf16().collect(),
+            nfkc_u16: nfkc.encode_utf16().collect(),
+            nfkd_u16: nfkd.encode_utf16().collect(),
+        }
+    })
+}
+
+fn function_under_bench(normalizer: &ComposingNormalizerBorrowed, text: &str) {
+    normalizer.normalize(text);
+}
+
+fn function_under_bench_utf16(normalizer: &ComposingNormalizerBorrowed, text: &[u16]) {
+    normalizer.normalize_utf16(text);
+}
+
+pub fn criterion_benchmark(criterion: &mut Criterion) {
+    let group_name = "composing_normalizer_nfc";
+
+    let normalizer_under_bench = ComposingNormalizerBorrowed::new_nfc();
+
+    let mut group = criterion.benchmark_group(group_name);
+
+    for bench_data_content in black_box(normalizer_bench_data()) {
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfc_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher
+                    .iter(|| function_under_bench(&normalizer_under_bench, &bench_data_content.nfc))
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfd_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher
+                    .iter(|| function_under_bench(&normalizer_under_bench, &bench_data_content.nfd))
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkc_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench(&normalizer_under_bench, &bench_data_content.nfkc)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkd_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench(&normalizer_under_bench, &bench_data_content.nfkd)
+                })
+            },
+        );
+
+        // UTF_16
+        group.bench_function(
+            BenchmarkId::from_parameter(format!(
+                "from_nfc_{}_utf_16",
+                bench_data_content.file_name
+            )),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_utf16(&normalizer_under_bench, &bench_data_content.nfc_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!(
+                "from_nfd_{}_utf_16",
+                bench_data_content.file_name
+            )),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_utf16(&normalizer_under_bench, &bench_data_content.nfd_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!(
+                "from_nfkc_{}_utf_16",
+                bench_data_content.file_name
+            )),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_utf16(
+                        &normalizer_under_bench,
+                        &bench_data_content.nfkc_u16,
+                    )
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!(
+                "from_nfkd_{}_utf_16",
+                bench_data_content.file_name
+            )),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_utf16(
+                        &normalizer_under_bench,
+                        &bench_data_content.nfkd_u16,
+                    )
+                })
+            },
+        );
+    }
+    group.finish();
+}
diff --git a/vendor/icu_normalizer/benches/composing_normalizer_nfkc.rs b/vendor/icu_normalizer/benches/composing_normalizer_nfkc.rs
new file mode 100644
index 00000000..6792c7ee
--- /dev/null
+++ b/vendor/icu_normalizer/benches/composing_normalizer_nfkc.rs
@@ -0,0 +1,211 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, BenchmarkId, Criterion};
+
+use icu_normalizer::{ComposingNormalizerBorrowed, DecomposingNormalizerBorrowed};
+
+struct BenchDataContent {
+    pub file_name: String,
+    pub nfc: String,
+    pub nfd: String,
+    pub nfkc: String,
+    pub nfkd: String,
+    pub nfc_u16: Vec<u16>,
+    pub nfd_u16: Vec<u16>,
+    pub nfkc_u16: Vec<u16>,
+    pub nfkd_u16: Vec<u16>,
+}
+
+fn strip_headers(content: &str) -> String {
+    content
+        .lines()
+        .filter(|&s| !s.starts_with('#'))
+        .map(|s| s.to_owned())
+        .collect::<Vec<String>>()
+        .join("\n")
+}
+
+fn normalizer_bench_data() -> [BenchDataContent; 15] {
+    let nfc_normalizer = ComposingNormalizerBorrowed::new_nfc();
+    let nfd_normalizer = DecomposingNormalizerBorrowed::new_nfd();
+    let nfkc_normalizer = ComposingNormalizerBorrowed::new_nfkc();
+    let nfkd_normalizer = DecomposingNormalizerBorrowed::new_nfkd();
+
+    let content_latin: (&str, &str) = (
+        "TestNames_Latin",
+        &strip_headers(include_str!("./data/TestNames_Latin.txt")),
+    );
+    let content_jp_h: (&str, &str) = (
+        "TestNames_Japanese_h",
+        &strip_headers(include_str!("./data/TestNames_Japanese_h.txt")),
+    );
+    let content_jp_k: (&str, &str) = (
+        "TestNames_Japanese_k",
+        &strip_headers(include_str!("./data/TestNames_Japanese_k.txt")),
+    );
+    let content_korean: (&str, &str) = (
+        "TestNames_Korean",
+        &strip_headers(include_str!("./data/TestNames_Korean.txt")),
+    );
+    let content_random_words_ar: (&str, &str) = (
+        "TestRandomWordsUDHR_ar",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_ar.txt")),
+    );
+    let content_random_words_de: (&str, &str) = (
+        "TestRandomWordsUDHR_de",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_de.txt")),
+    );
+    let content_random_words_el: (&str, &str) = (
+        "TestRandomWordsUDHR_el",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_el.txt")),
+    );
+    let content_random_words_es: (&str, &str) = (
+        "TestRandomWordsUDHR_es",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_es.txt")),
+    );
+    let content_random_words_fr: (&str, &str) = (
+        "TestRandomWordsUDHR_fr",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_fr.txt")),
+    );
+    let content_random_words_he: (&str, &str) = (
+        "TestRandomWordsUDHR_he",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_he.txt")),
+    );
+    let content_random_words_pl: (&str, &str) = (
+        "TestRandomWordsUDHR_pl",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_pl.txt")),
+    );
+    let content_random_words_ru: (&str, &str) = (
+        "TestRandomWordsUDHR_ru",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_ru.txt")),
+    );
+    let content_random_words_th: (&str, &str) = (
+        "TestRandomWordsUDHR_th",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_th.txt")),
+    );
+    let content_random_words_tr: (&str, &str) = (
+        "TestRandomWordsUDHR_tr",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_tr.txt")),
+    );
+    let content_viet: (&str, &str) = ("wotw", &strip_headers(include_str!("./data/wotw.txt")));
+
+    [
+        content_latin,
+        content_viet,
+        content_jp_k,
+        content_jp_h,
+        content_korean,
+        content_random_words_ru,
+        content_random_words_ar,
+        content_random_words_el,
+        content_random_words_es,
+        content_random_words_fr,
+        content_random_words_tr,
+        content_random_words_th,
+        content_random_words_pl,
+        content_random_words_he,
+        content_random_words_de,
+    ]
+    .map(|(file_name, raw_content)| {
+        let nfc = &nfc_normalizer.normalize(raw_content);
+        let nfd = &nfd_normalizer.normalize(raw_content);
+        let nfkc = &nfkc_normalizer.normalize(raw_content);
+        let nfkd = &nfkd_normalizer.normalize(raw_content);
+        BenchDataContent {
+            file_name: file_name.to_owned(),
+            nfc: nfc.to_string(),
+            nfd: nfd.to_string(),
+            nfkc: nfkc.to_string(),
+            nfkd: nfkd.to_string(),
+            nfc_u16: nfc.encode_utf16().collect(),
+            nfd_u16: nfd.encode_utf16().collect(),
+            nfkc_u16: nfkc.encode_utf16().collect(),
+            nfkd_u16: nfkd.encode_utf16().collect(),
+        }
+    })
+}
+
+fn function_under_bench(normalizer: &ComposingNormalizerBorrowed, text: &str) {
+    normalizer.normalize(text);
+}
+
+fn function_under_bench_u16(normalizer: &ComposingNormalizerBorrowed, text: &[u16]) {
+    normalizer.normalize_utf16(text);
+}
+
+pub fn criterion_benchmark(criterion: &mut Criterion) {
+    let group_name = "composing_normalizer_nfkc";
+
+    let normalizer_under_bench = ComposingNormalizerBorrowed::new_nfkc();
+
+    let mut group = criterion.benchmark_group(group_name);
+
+    for bench_data_content in black_box(normalizer_bench_data()) {
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfc_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher
+                    .iter(|| function_under_bench(&normalizer_under_bench, &bench_data_content.nfc))
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfd_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher
+                    .iter(|| function_under_bench(&normalizer_under_bench, &bench_data_content.nfd))
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkc_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench(&normalizer_under_bench, &bench_data_content.nfkc)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkd_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench(&normalizer_under_bench, &bench_data_content.nfkd)
+                })
+            },
+        );
+        // UTF 16
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfc_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfc_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfd_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfd_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkc_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfkc_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkd_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfkd_u16)
+                })
+            },
+        );
+    }
+    group.finish();
+}
diff --git a/vendor/icu_normalizer/benches/data/README.md b/vendor/icu_normalizer/benches/data/README.md
new file mode 100644
index 00000000..de34f9fc
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/README.md
@@ -0,0 +1,25 @@
+# Generating microbench data
+
+The full versions of these files are located 
+[in another part of the repository](https://github.com/unicode-org/icu/tree/main/icu4j/perf-tests/data).
+
+## Sanitizing the file
+
+```shell
+sed -i '/^#/d' ${filename}
+sed -i '/^$/d' ${filename}
+```
+
+## Shuffling the file
+
+```shell
+shuf -n 20 ${filename} -o ${filename}
+```
+
+## Add back the header (if you plan on submitting the files)
+
+```
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+```
diff --git a/vendor/icu_normalizer/benches/data/TestNames_Japanese_h.txt b/vendor/icu_normalizer/benches/data/TestNames_Japanese_h.txt
new file mode 100644
index 00000000..5fb4d944
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestNames_Japanese_h.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+かげやま,みのる
+むらかみ,とおる
+つじさわ,けい
+やすい,たかゆき
+むらさき,としお
+はせがわ,ひであき
+うるしばら,よしひこ
+ままだ,ひろし
+おおぼら,えいじろう
+おおば,まさひで
+きたばたけ,たかひこ
+はまさき,あつし
+ほりい,つねお
+もり,だいいち
+いとう,しんいち
+くにもと,じゅんじ
+おか,のりひと
+たに,よしあき
+しらがき,ひろあき
+しらはま,たけひろ
+むらかみ,やすひろ
+うめはら,たかし
+いわた,ひろし
+すぎえ,かつとし
+てらにし,ひろみつ
+まつおか,だいすけ
+もろほし,すすむ
+いしはら,たかし
+おしま,ひろお
+なかお,ゆうじ
+いかり,はるお
+きまち,まさき
+ふるかわ,みちお
+かねこ,しゅうへい
+なかがわ,ともみ
+ささき,しんご
+うちだ,たくじ
+うめだ,さかえ
+しばた,いくこ
+まきした,けいこ
+まつもと,しんいちろう
+たかの,かずよし
+いしわた,なおひさ
+いうち,まこと
+いまい,りほ
+みずた,のりあき
+かくたに,まなぶ
+わだ,ほまれ
+わかまつ,かずき
+かわぐち,ひろき
diff --git a/vendor/icu_normalizer/benches/data/TestNames_Japanese_k.txt b/vendor/icu_normalizer/benches/data/TestNames_Japanese_k.txt
new file mode 100644
index 00000000..b986e7a2
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestNames_Japanese_k.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+ホリモト,ユウジ
+ハナミ,ヤスヒデ
+イシザカ,タカユキ
+ゼンケ,トシオ
+ハトリ,ユウコ
+ナガオカ,トモユキ
+コウダ,ケンイチ
+イシダ,ヒロシ
+ミワ,シゲユキ
+イシカワ,ヒロシ
+スズキ,ユウスケ
+オクダ,ヨシノリ
+シムラ,サカエ
+エビシマ,ヤスユキ
+イブカ,ヨシテル
+タノ,マコト
+ドウゾノ,セイヤ
+ヤマナカ,サツミ
+トミイエ,ハヤト
+アザミ,ツトム
+タナカ,キョウコ
+コジマ,アツシ
+フミハラ,カオリ
+スズキ,マサユキ
+ナトリ,ケンヤ
+スズキ,ユウコ
+スズキ,ヒサエ
+ナカガワ,カツヨシ
+スズキ,マサフミ
+マツヤマ,トシオ
+ヨシナガ,チカエ
+キタムラ,リカコ
+アオキ,タクオ
+ヤマグチ,ヤスヒロ
+スギムラ,シゲオ
+ウエスギ,マサミ
+マツムラ,シンイチ
+クバ,タカシ
+スドウ,タカトシ
+フジモト,ヒロシ
+イトウ,シュウイチ
+コバヤシ,カズミ
+タナカ,ヒロカツ
+イシダ,ツカサ
+ヤマダ,マサコ
+カミヤ,トミエ
+タケモト,ユウジ
+スミノ,コウジ
+ヒロハタ,タクヤ
+ミヒラ,リョウヘイ
diff --git a/vendor/icu_normalizer/benches/data/TestNames_Korean.txt b/vendor/icu_normalizer/benches/data/TestNames_Korean.txt
new file mode 100644
index 00000000..95b19916
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestNames_Korean.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+김명희
+홍차수
+허순재
+강영휘
+김운주
+이종환
+이은국
+강태호
+강일래
+김동현
+곽기자
+차재수
+표봉기
+문대원
+이형기
+최교표
+박식현
+홍종립
+서창수
+김쌍건
+서말도
+이병훈
+김희수
+박학태
+강태종
+조문란
+신범균
+백두진
+이철정
+김태중
+이성현
+김주조
+김강행
+이정길
+김완일
+권수자
+이춘철
+김판근
+김곡리
+이경형
+이운만
+손상철
+유기숙
+박정한
+조윤래
+유신호
+이두수
+김재률
+김성홍
+김혜경
diff --git a/vendor/icu_normalizer/benches/data/TestNames_Latin.txt b/vendor/icu_normalizer/benches/data/TestNames_Latin.txt
new file mode 100644
index 00000000..e5b82ab3
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestNames_Latin.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+González, Joan
+Reinders, Jim
+Applebroog, Ida
+Kidd, Joseph Bartholomew
+Gulácsy, Lajos
+Letendre, Rita
+Zuccaro, Federico
+Apt the Elder, Ulrich
+Drummond, Arthur
+Manley, Thomas
+Broc, Jean
+Ramunno, Tony
+Simone dei Crocifissi
+Lane, Theodore
+Symonds, William Robert
+Johnson, Frank Tenney
+Cox, Gardner
+Bunbury, Charles
+Pedro de la Cuadra
+Payne, William
+Lucas, John Seymour
+Holsman, Elizabeth T.
+de Vries, Auke
+Laszlo, Philip Alexius de
+Shigemasa
+Wolfe, Ruth Mitchell
+Buck, John
+Baselitz, Georg
+Hook, Walter
+Segall, Lasar
+Brush, George deForest
+Master of Jánosrét
+Sutherland, Elizabeth Leveson-Gower, Countess of
+Tuckerman, Jane
+Varley, F.H.
+Fosso, Samuel
+Gardner, Daniel
+Sadler, Walter Dendy
+Clausen, Franciska
+Coman, Charlotte Buell
+Wakelin, Roland
+Payne, Jon, CML
+Campagna, Girolamo
+Wiener, Phyllis
+Sallee, Charles
+Fitzgerald, John Anster
+Gribbroek, Robert
+Laporte, John
+Lévy-Dhurmer, Lucien
+Young, Stephen Scott
diff --git a/vendor/icu_normalizer/benches/data/TestNames_Thai.txt b/vendor/icu_normalizer/benches/data/TestNames_Thai.txt
new file mode 100644
index 00000000..4de72dc6
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestNames_Thai.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+ณรงค์ โต๊ะเงิน
+กิตติ บุญวันต์
+สมหมาย ดาบทองดี
+ธวัชชัย อิสระนิมิตร
+วรรณา โสภณนรินทร์
+วินัย หมู่มิ่ง
+พัชรี ชูจิรวงศ์
+สมปอง จิวไพโรจน์กิจ
+บุญส่ง กวยรักษา
+นิพนธ์ นิ่มใหม่
+พัชรี สุวพรศิลป์
+เจริญ นววัฒนทรัพย์
+อรพินท์ แซ่เจี่ย
+ชัยพร สมใจนึก
+ประนอม โคศิลา
+ฉวีวรรณ ศรสังข์ทอง
+วัชรา เจริญรัตนพร
+สุภัท นกศิริ
+อู๋ มาลาเล็ก
+ประยูร ไชโย
+ละออ อยู่ยืนยง
+สมใจ วิวัฒน์วานิช
+จุมพล จันทรศรีเกษร
+พุฒ ดอกไม้จีน
+บุญชัย วรกิจพรสิน
+สมาน ธูปเทียน
+พงศ์ศักดิ์ แซ่แต้
+อำนาจ ไวจงเจริญ
+พรทิพย์ แซ่ลี้
+อุไรวรรณ สาครสินธุ์
+อำพล วีระตะนนท์
+สมจิตร ใจวังโลก
+สุเทพ ตันวินิจ
+สวาท ทรัพย์มาก
+สมศักดิ์ เจือจันทร์
+ดัสซันซิงห์ กุลาตี
+ธีร ศรแก้ว
+พรรณยุพา ฮ่อสกุล
+สำราญ จันทร์เอี่ยม
+พจน์ มั่นกันนาน
+สุธี บุณยเกียรติ
+บุญโชติ ทิพย์ประเสริฐสิน
+ประดิษฐ์ ทองพสิฐสมบัติ
+จำเนียร เพ็งเจริญ
+สมศักดิ์ อรุณรัตน์
+อนุชา จารุหิรัญสกุล
+พิกุล มโนภิญโญภิญญะ
+ผ่องศรี นกแก้ว
+อารี วิไลวรรณ
+ณรงค์วิทย์ วิทสัทธาวรกุล
diff --git a/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_ar.txt b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_ar.txt
new file mode 100644
index 00000000..0cf40fb0
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_ar.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+ممارسة مراعاة
+العنصرية
+حدود والشيخوخة
+بالحكم كهذا ينتفع
+البلاد
+تربية
+الغير التقدم والعدل
+نحو بالتعليم والحرية
+تأمين متساو
+للتعليم فيها
+آذت اعتداء للتعليم
+ليس المتأصلة
+والمساهمة الضروري تتناقض
+وتأسيس
+رضى
+شرعي الطبية
+لكيلا الجمعية والحرية
+للرجال التزوج
+بالكرامة
+حرية بين
+هذه العيش تنظر
+قيد
+يقررها والصداقة
+اعتُمد وينبغي اجتماعي
+حرمان
+للإدراك بأجر إنتاجه
+التربية القانون
+لإنصافه وتأسيس وسمعته
+أساسه للرجال
+كافة
+المجهود دولي أينما
+وإلى
+بنشاط تجري
+والأمم مثل لحقوق
+الإنسان بشروط بحماية
+شرفه
+كما الوظائف
+حياته ديسمبر
+ولما
+هذه
+غاية جديد إنسان
+حرية
+متهم الوطنية قدمًا
+التملك وضع
+شرعية ويعبر تأدية
+بنظام عمل والأخلاق
+التملك لشخصيته يلجأ
+بحال يضطر ولا
+الانضمام بالكرامة
+عضوا
diff --git a/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_de.txt b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_de.txt
new file mode 100644
index 00000000..b002a64c
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_de.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+Herrschaft Freiheiten Not
+Gewalt
+stets anderer begründet
+erhobenen innerstaatliche
+Heiratsfähige freie
+offenstehen Begrenzung grausamer
+Maßnahmen höchste
+unentbehrlich privat
+erniedrigender
+Verachtung freie
+innezuhaben innerstaatlichen
+kommen
+werden gleichgültig
+Würde überall höchste
+Schutzmaßnahmen den Pflichten
+Wille Bestimmung
+Leibeigenschaft einschließlich für
+gleiche bekräftigt Gewissens
+Wohles
+Generalversammlung
+Volkes
+Völkern gegenwärtig Zusammenarbeit
+Heiratsfähige sowie Jeder
+Stellung
+Lebensstandard
+seinem
+Rede strafbaren Sicherheit
+mit
+Kulthandlungen Grund
+ärztlicher
+Auflösung Anforderungen anzugehören
+Furcht
+keine Geburt
+Wohles Furcht genügen
+befriedigende Medien
+anzugehören Urlaub Vereinigungen
+hinzuwirken verboten Resolution
+kommen
+sozialer vor irgendein
+Bestimmung Bestimmung
+Fall natürliche kein
+Geschlecht Aufhetzung eigenen
+seinen
+über
+Unterlassung Berücksichtigung
+war
+Rufes stets
+Volkes anderer Beschränkungen
+Handlungen dessen
+Die
diff --git a/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_el.txt b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_el.txt
new file mode 100644
index 00000000..9c71f293
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_el.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+προάγει αλληλογραφία
+λογική έχει
+ιδρύει ζωή τεχνική
+δυνατότητες
+περιορισμό συνόλου
+ασκεί παραγνώριση συναφθεί
+αναγνωρίζουν ποινικής εκδηλώνει
+κοινότητας διακυβέρνηση στα
+απέναντι υψηλή
+περιστάσεων αξιόποινη
+σεβασμό
+συντήρησής κατά εξασφαλίσουν
+παραβιάζουν συμπληρώνεται νόμο
+άμεσα
+σημαίνει καθεστώς
+ΑΝΘΡΩΠΙΝΑ θέλησης ανθρωπίνων
+ΔΙΑΚΗΡΥΞΗ αθλιότητα ασφάλιση
+μέσο
+ίση Εχει
+ειρήνης Κάθε
+μέλη μορφή
+όσο
+κρατείται Στο Διακηρύσσει
+οικονομικών έκφρασης εξασφαλίζεται
+κάθε
+περίπτωση απολαμβάνουν
+ποινικό γεροντική
+είναι μαζί δικαστήρια
+μαζί προοπτική
+δική
+βαρβαρότητας
+οικονομικών εξασφαλίσει
+υποχρεώσεις οδήγησαν
+Οικουμενική Διακήρυξης γονείς
+στις μυστική αντιπροσώπους
+Διακήρυξης άδειες βιοτικό
+αναπηρία ομάδα
+πραγματικό
+καλύτερες
+ανάπαυση
+δίκαιες ένα δικαίου
+μετέχει στους
+θρησκευτικών ποινικής
+Κανείς ίσα
+πεποιθήσεις
+πολιτικές ανάλογα δουλεία
+πολιτικές ιατρική ωσότου
+ηθικής χωρίς
+ανδρών ικανό
+καθώς
diff --git a/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_es.txt b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_es.txt
new file mode 100644
index 00000000..db0490d3
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_es.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+duración común
+delito reconocimiento alimentación
+inalienables
+entre seguridad escogidos
+comportarse dignidad
+autónomo gobierno tiempo
+omisiones
+comisión
+Derechos territorios
+debe
+han
+regresar inalienables
+regresar
+desempleo científico
+arbitrariamente proclamada
+están contraerse esposos
+cualesquiera
+salir carácter desarrollo
+solamente justas
+personalidad una
+cuanto
+garantice resolución
+concepción
+tomar impondrá
+cualquier reconocimiento
+obligatoria obligatoria satisfactoria
+acusación sin
+artísticas penal culturales
+pagadas examen
+Además Organización dignidad
+opresión esposos ejercidos
+barbarie están mientras
+por
+idioma
+recursos pagadas
+materia Nada ella
+con injerencias
+inspirándose
+organización
+gozar jurisdicción
+que
+asegurar
+humana libertad
+nadie equivalente
+escoger remuneración
+torturas
+individuos poder
+disfruten seres Preámbulo
+desempleo
+liberados
diff --git a/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_fr.txt b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_fr.txt
new file mode 100644
index 00000000..2e0a38e7
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_fr.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+conforme êtres fonctions
+non tout généralisé
+premier lui
+faire hommes d’égalité
+peuple volonté bénéficier
+générale nationales
+cruels plus
+d’encourager opinions
+genre l’esprit
+d’origine effectif
+exigences auront
+résultent situation recevoir
+peuples Chacun
+sont d’égalité
+jouissent
+auront l’esprit
+pays telle
+publiquement
+mariage foi
+travail démocratique religieux
+rémunération
+omissions telles
+L’éducation
+raison complétée donner
+invoqué auront arbitraires
+l’amitié suffisant affaires
+travaille l’accomplissement l’intermédiaire
+race
+opinions celles
+assurer par privée
+valeur
+violant traite premier
+inhérente
+bienfaits l’avènement
+Unies s’il actions
+inquiété l’esclavage
+inquiété
+esclaves lieu
+salaire
+par
+toute
+innocente procédure membres
+arts l’idéal envers
+suffrage territoires inhumains
+d’immixtions l’organisation progrès
+comme égalité Unies
+maternité
+violerait suprême sécurité
+impliquant eux loisirs
+nationalité
diff --git a/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_he.txt b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_he.txt
new file mode 100644
index 00000000..2b6b120a
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_he.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+זקנה משפילים
+ינתן חברתי עניניו
+הפוב
+ולהיות זכויות הישגים
+יאסרו מטעמי וללא
+ספרותית השלם
+למנוחה חינם
+וההתאגדות
+לטפח
+באלה במלואן
+יהנו
+ולרווחתם לגבר האדם
+בכבודו שבארצות כבוד
+ובינלאומיים
+בכך לתנאי אישי
+שאינן
+שרירותי
+במשפט
+ולעקרונותיהן מטעם
+שרירותית האשמה יהיה
+החינוך ולבטחון
+סובלנות אשמתו במגילה
+המאוחדות חיוני
+חשוב במקרה
+כלתי העולם
+שמקורה כציבור
+לשויון
+לתקנה
+תלוי ההתאספות
+הדיבור שהוא
+והבלתי והבסיסית
+ולעקרונותיהן יהא וישאף
+ביתנ הבינלאומי
+והזלזול להקנות
+בגלל כולם שיושלם
+לחיים
+בדבר
+לשירות
+זכויות
+לפני
+אדם ולא מזזמנות
+קנינו שהיה ההתאספות
+בינלאומי חיוניות לבקש
+תהיינה
+ובזכות בכורה מהגנה
+מתוך
+ובמצפון מזומנות לאגד
+והחמריים סוציאלי
+אנושיים ובהצבעה
+פראיים
diff --git a/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_pl.txt b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_pl.txt
new file mode 100644
index 00000000..b6cd9760
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_pl.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+uciskowi posiadania prawo
+społecznego największych skazany
+czy
+potrzeby samodzielnie przystępowania
+Krzewi też dokonania
+pełną prawo
+buntu
+moralności
+zapewnienia znaczenie
+nieludzki wypadek Nikt
+zasadności jakikolwiek Każdy
+samowolnie krajem
+międzynarodowego
+członek wielu
+rozwój wynikających obalenia
+rasy
+grudnia która
+jedynie urlopu ani
+małżeńskie stanowi ustaniu
+człowieka postępowych
+prześladowania
+politycznej które zawarcia
+Deklaracja
+ingerować wyłącznie
+studia Nikt
+innego uprawianie zrozumienie
+wybranych swobodę wyznania
+wolni osobowości
+ograniczenie Nie
+równej społecznego uciekać
+będącą POWSZECHNA
+niezdolności poszukiwania międzynarodowej
+konieczne potrzeby posiada
+opinii wychowywania 1948
+międzynarodowej zatrzymać
+przedstawicieli
+przeciw
+wynikających organy pracę
+człowiek grupami
+niezbędnych
+wolności podstawowym
+opinii małżonków wolność
+postępować zdecydowanie komórką
+odniesieniu
+pokoju azyl
+zawodowych powrócić człowiek
+konstytucję
+takiej postaciach powszechnego
+wygnać wygnać
+wspólny poszanowania
diff --git a/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_ru.txt b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_ru.txt
new file mode 100644
index 00000000..4ceb0307
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_ru.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+областях
+будут должен
+обеспечиваются нежели
+котором Уставе
+социального моральных
+совершеннолетия предоставление
+том независимо
+существование
+вмешательства какому ограниченной
+распространять
+находить помощь
+искусством
+унижающим положения искать
+изгнанию член совершеннолетия
+обществом имуществом государственной
+идеи братства
+наслаждаться значение социальной
+осуществления юрисдикцией наказанию
+достойное свою III
+жизнь расторжения инвалидности
+терпимости этого
+целях равны
+обеспечиваются законным
+принуждаем правосубъектности
+пыткам доступа неприкосновенность
+Брак против
+прибегать независимой
+человека человеческой
+быть независимо религии
+публичным
+членам против
+разумом результатом семью
+Принята участие
+беспристрастным тем
+частным основной
+правового
+страной обслуживание
+было свободу полное
+рабочего свободны
+состоянии помощь религиозными
+полное
+владеть власти морали
+меньшей
+братства социальному убежища
+государств
+равны который дети
+терпимости
+получать бесплатным полного
+богослужении
+отдельным
diff --git a/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_th.txt b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_th.txt
new file mode 100644
index 00000000..bc0d0737
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_th.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+คิด ใตัอำ เคลื่อนไหว
+บังคับ บาก
+สิ่ง สิ้น
+วัตถุ
+ชาย อาศัย เท่านั้น
+สิน
+เกา
+ดูแล พิธีกรรม
+ภายใน
+เพศ
+หนัก ประสงค์
+เหตุ
+งาน รักษา
+เพศ ภาษา
+นี้
+คู่ สัญชาติ ต้องการ
+วิธี ระหว่าง ตกลง
+ทำนอง
+สืบ กับ ศิลปกรรม
+เหนือ วรรณกรรม
+คิด การก หน้าที่
+ชาติ ศิลปกรรม แต่
+สามัญ สอด
+เหยียด วิธี จุด
+หน้า ถ้า เบื้อง
+ประชุม
+ศิลปกรรม
+เสรีภาพ โหด ก่อ
+เกียรติศักดิ์ ป่วย เอกราช
+ประหัต มโนธรรม การ
+แทน
+ขัดขืน เวลา เสียง
+กฎบัตร พยายาม
+สิน หน้า
+จำเป็น
+ประชาธิปไตย หน่วย
+กรณี จริงจัง
+ทำนอง
+ทาษ
+เพิ่ม
+บรรดา ขวาง
+กักขัง
+มนุษย์
+ชาย ประกัน มนุษยธรรม
+จะบัน มูลฐาน เถื่อน
+พฤติ
+มิได้
+หญิง คู่
+สมา ปฏิบัติ อนึ่ง
+สิ่ง ทาษ
diff --git a/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_tr.txt b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_tr.txt
new file mode 100644
index 00000000..08129b01
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/TestRandomWordsUDHR_tr.txt
@@ -0,0 +1,54 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mecburidir ilim
+isnadın sınırları suç
+tutuklanamaz diğer
+memleket korunmasi kullanılamaz
+İnsanlık ilerlemeyi
+bir mülk menfaatlerinin
+usul zümreye herhangi
+mahkeme vicdana ilerleyişe
+zulüm zalimane
+ilim öncelikle çocuk
+mevzubahis ancak
+muamelesi dinlenmeye
+eşitlikle prensiplerine ülkenin
+öğretim bulunmalarına yardım
+memleketler amacıyla
+birbirlerine
+olmalıdır
+bırakılamaz serbestisine
+hürriyetin iyi
+hükmü işbu zalimane
+evlenme memleketi tedbirlerle
+evlenmek ahalisi işini
+hürriyetler
+belirlenmiş kere
+elde cürüme
+tanınan dünyaca yüksek
+müddetinin ailesine
+vicdan kırıcı itibariyle
+geniş inanma
+kendi görevleri Teşkilatı
+yaymak
+öğretim vesayet
+renk kişiliğinin
+tamamlanan
+haklara bulunma
+hükmü uygulanabilecek
+etmiş geliştirilmesini hoşgörü
+sahiptir temel
+giyim
+Bundan temeli
+icaplarını
+mülk karışma tekmil
+vicdana hürriyetine işini
+Herkesin vahşiliklere
+dolaşma dünyanın
+davasının Uluslararasında idamesi
+eşittir
+haklardan hakkı
+kovuşturmalar hürriyetlerden gözönünde
+Evrensel fiilli beyannamesi
diff --git a/vendor/icu_normalizer/benches/data/wotw.txt b/vendor/icu_normalizer/benches/data/wotw.txt
new file mode 100644
index 00000000..5ffb1cf4
--- /dev/null
+++ b/vendor/icu_normalizer/benches/data/wotw.txt
@@ -0,0 +1,58 @@
+# This file is part of ICU4X. For terms of use, please see the file
+# called LICENSE at the top level of the ICU4X source tree
+# (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+# The contents of this file have been translated by "Google Translate".
+
+Vào những năm cuối của thế kỷ 19, không ai có thể tin rằng thế giới này
+đang được theo dõi một cách sâu sắc và chặt chẽ bởi những trí thông minh
+lớn hơn con người nhưng cũng nguy hiểm như chính con người; rằng khi con
+người bận rộn với những mối quan tâm khác nhau của họ, họ bị xem xét và
+nghiên cứu kỹ lưỡng, có lẽ gần như một người đàn ông với kính hiển vi có thể
+xem xét kỹ lưỡng những sinh vật nhất thời tụ tập và sinh sôi nảy nở trong
+một giọt nước. Với sự tự mãn vô hạn, con người đi đi lại lại khắp thế giới
+này chỉ vì những công việc nhỏ nhặt của họ, thanh thản với niềm tin chắc
+chắn về đế chế của họ đối với vật chất. Có thể là infusoria dưới kính hiển
+vi cũng làm như vậy. Không ai coi các thế giới cũ hơn trong không gian là
+nguồn gây nguy hiểm cho con người, hoặc nghĩ về chúng chỉ để bác bỏ ý
+tưởng về sự sống đối với chúng là không thể hoặc không thể xảy ra.
+Thật tò mò khi nhớ lại một số thói quen tinh thần của những ngày đã
+qua. Hầu hết những người trên trái đất đều tưởng tượng rằng có thể có
+những người khác trên sao Hỏa, có lẽ thấp kém hơn họ và sẵn sàng chào
+đón một doanh nghiệp truyền giáo. Tuy nhiên, bên kia vịnh không gian,
+những bộ óc đối với tâm trí của chúng ta cũng như tâm trí của chúng ta đối
+với những con thú bị diệt vong, những bộ óc rộng lớn, lạnh lùng và vô cảm,
+nhìn trái đất này với con mắt ghen tị, và dần dần và chắc chắn vạch ra
+những kế hoạch chống lại chúng ta. Và đầu thế kỷ 20 đã xảy ra sự vỡ mộng
+lớn. Hành tinh sao Hỏa, tôi không cần nhắc độc giả, quay xung quanh mặt
+trời ở khoảng cách trung bình 140.000.000 dặm, và ánh sáng và nhiệt mà
+nó nhận được từ mặt trời chỉ bằng một nửa so với thế giới này nhận được.
+Nếu giả thuyết về tinh vân có bất kỳ sự thật nào, nó phải tồn tại lâu
+đời hơn thế giới của chúng ta; và rất lâu trước khi trái đất này ngừng
+nóng chảy, sự sống trên bề mặt của nó hẳn đã bắt đầu quá trình của nó.
+Thực tế là nó chỉ chiếm một phần bảy thể tích của trái đất đã làm tăng
+tốc độ nguội đi của nó đến nhiệt độ mà sự sống có thể bắt đầu. Nó có
+không khí và nước và tất cả những gì cần thiết để hỗ trợ sự tồn tại
+sinh động. Tuy nhiên, con người quá hão huyền và bị mù quáng bởi sự phù
+phiếm của mình, đến nỗi cho đến tận cuối thế kỷ 19, không có nhà văn nào
+bày tỏ bất kỳ ý tưởng nào rằng sự sống thông minh có thể đã phát triển ở đó xa,
+hoặc thực sự là ở tất cả, vượt ra ngoài mức độ trần gian của nó. Người ta
+cũng không hiểu một cách tổng quát rằng vì sao Hỏa già hơn trái đất của chúng
+ta, chỉ bằng một phần tư diện tích bề mặt và ở xa mặt trời hơn, nên điều tất
+yếu dẫn đến là nó không chỉ xa hơn so với thời điểm bắt đầu mà còn gần ngày kết
+thúc hơn. Sự nguội lạnh thế tục mà một ngày nào đó phải vượt qua hành tinh của chúng
+ta đã thực sự đi xa với người hàng xóm của chúng ta. Tình trạng vật lý của nó phần lớn
+vẫn còn là một bí ẩn, nhưng giờ đây chúng ta biết rằng ngay cả ở vùng xích đạo của nó,
+nhiệt độ giữa trưa hầu như không bằng nhiệt độ của mùa đông lạnh nhất của chúng ta.
+Không khí của nó loãng hơn nhiều so với không khí của chúng ta, các đại dương của nó đã
+thu hẹp lại cho đến khi chỉ bao phủ một phần ba bề mặt của nó, và khi các mùa chậm chạp 
+của nó thay đổi, các chỏm tuyết khổng lồ tụ lại và tan chảy ở hai cực và định kỳ làm ngập các vùng ôn đới của nó. 
+Giai đoạn cuối cùng của sự kiệt sức, mà đối với chúng ta vẫn còn quá xa vời, đã trở thành 
+một vấn đề ngày nay đối với các cư dân trên sao Hỏa. Áp lực trước mắt của sự cần 
+thiết đã làm sáng tỏ trí tuệ của họ, mở rộng sức mạnh của họ và làm chai đá trái
+tim họ. Và nhìn xuyên qua không gian với các công cụ, và trí thông minh như chúng 
+ta hiếm khi mơ tới, họ thấy, ở khoảng cách gần nhất chỉ cách họ 35.000.000 dặm 
+về phía mặt trời, một ngôi sao buổi sáng của hy vọng, hành tinh ấm áp hơn của chúng 
+ta, màu xanh lục của thảm thực vật và màu xám của nước , với bầu không khí nhiều 
+mây hùng hồn của sự màu mỡ, với những cái nhìn thoáng qua qua những đám mây 
+trôi dạt của nó là những dải đất rộng lớn đông dân và những vùng biển chật hẹp đông đúc hải quân.
diff --git a/vendor/icu_normalizer/benches/decomposing_normalizer_nfd.rs b/vendor/icu_normalizer/benches/decomposing_normalizer_nfd.rs
new file mode 100644
index 00000000..4ee7590a
--- /dev/null
+++ b/vendor/icu_normalizer/benches/decomposing_normalizer_nfd.rs
@@ -0,0 +1,213 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, BenchmarkId, Criterion};
+
+use icu_normalizer::{ComposingNormalizerBorrowed, DecomposingNormalizerBorrowed};
+
+struct BenchDataContent {
+    pub file_name: String,
+    pub nfc: String,
+    pub nfd: String,
+    pub nfkc: String,
+    pub nfkd: String,
+    pub nfc_u16: Vec<u16>,
+    pub nfd_u16: Vec<u16>,
+    pub nfkc_u16: Vec<u16>,
+    pub nfkd_u16: Vec<u16>,
+}
+
+fn strip_headers(content: &str) -> String {
+    content
+        .lines()
+        .filter(|&s| !s.starts_with('#'))
+        .map(|s| s.to_owned())
+        .collect::<Vec<String>>()
+        .join("\n")
+}
+
+fn normalizer_bench_data() -> [BenchDataContent; 15] {
+    let nfc_normalizer = ComposingNormalizerBorrowed::new_nfc();
+    let nfd_normalizer = DecomposingNormalizerBorrowed::new_nfd();
+    let nfkc_normalizer = ComposingNormalizerBorrowed::new_nfkc();
+    let nfkd_normalizer = DecomposingNormalizerBorrowed::new_nfkd();
+
+    let content_latin: (&str, &str) = (
+        "TestNames_Latin",
+        &strip_headers(include_str!("./data/TestNames_Latin.txt")),
+    );
+    let content_jp_h: (&str, &str) = (
+        "TestNames_Japanese_h",
+        &strip_headers(include_str!("./data/TestNames_Japanese_h.txt")),
+    );
+    let content_jp_k: (&str, &str) = (
+        "TestNames_Japanese_k",
+        &strip_headers(include_str!("./data/TestNames_Japanese_k.txt")),
+    );
+    let content_korean: (&str, &str) = (
+        "TestNames_Korean",
+        &strip_headers(include_str!("./data/TestNames_Korean.txt")),
+    );
+    let content_random_words_ar: (&str, &str) = (
+        "TestRandomWordsUDHR_ar",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_ar.txt")),
+    );
+    let content_random_words_de: (&str, &str) = (
+        "TestRandomWordsUDHR_de",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_de.txt")),
+    );
+    let content_random_words_el: (&str, &str) = (
+        "TestRandomWordsUDHR_el",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_el.txt")),
+    );
+    let content_random_words_es: (&str, &str) = (
+        "TestRandomWordsUDHR_es",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_es.txt")),
+    );
+    let content_random_words_fr: (&str, &str) = (
+        "TestRandomWordsUDHR_fr",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_fr.txt")),
+    );
+    let content_random_words_he: (&str, &str) = (
+        "TestRandomWordsUDHR_he",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_he.txt")),
+    );
+    let content_random_words_pl: (&str, &str) = (
+        "TestRandomWordsUDHR_pl",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_pl.txt")),
+    );
+    let content_random_words_ru: (&str, &str) = (
+        "TestRandomWordsUDHR_ru",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_ru.txt")),
+    );
+    let content_random_words_th: (&str, &str) = (
+        "TestRandomWordsUDHR_th",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_th.txt")),
+    );
+    let content_random_words_tr: (&str, &str) = (
+        "TestRandomWordsUDHR_tr",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_tr.txt")),
+    );
+    let content_viet: (&str, &str) = ("wotw", &strip_headers(include_str!("./data/wotw.txt")));
+
+    [
+        content_latin,
+        content_viet,
+        content_jp_k,
+        content_jp_h,
+        content_korean,
+        content_random_words_ru,
+        content_random_words_ar,
+        content_random_words_el,
+        content_random_words_es,
+        content_random_words_fr,
+        content_random_words_tr,
+        content_random_words_th,
+        content_random_words_pl,
+        content_random_words_he,
+        content_random_words_de,
+    ]
+    .map(|(file_name, raw_content)| {
+        let nfc = &nfc_normalizer.normalize(raw_content);
+        let nfd = &nfd_normalizer.normalize(raw_content);
+        let nfkc = &nfkc_normalizer.normalize(raw_content);
+        let nfkd = &nfkd_normalizer.normalize(raw_content);
+        BenchDataContent {
+            file_name: file_name.to_owned(),
+            nfc: nfc.to_string(),
+            nfd: nfd.to_string(),
+            nfkc: nfkc.to_string(),
+            nfkd: nfkd.to_string(),
+            nfc_u16: nfc.encode_utf16().collect(),
+            nfd_u16: nfd.encode_utf16().collect(),
+            nfkc_u16: nfkc.encode_utf16().collect(),
+            nfkd_u16: nfkd.encode_utf16().collect(),
+        }
+    })
+}
+
+fn function_under_bench(normalizer: &DecomposingNormalizerBorrowed, text: &str) {
+    normalizer.normalize(text);
+}
+
+fn function_under_bench_u16(normalizer: &DecomposingNormalizerBorrowed, text: &[u16]) {
+    normalizer.normalize_utf16(text);
+}
+
+pub fn criterion_benchmark(criterion: &mut Criterion) {
+    let group_name = "decomposing_normalizer_nfd";
+
+    let normalizer_under_bench = DecomposingNormalizerBorrowed::new_nfd();
+
+    let mut group = criterion.benchmark_group(group_name);
+
+    for bench_data_content in black_box(normalizer_bench_data()) {
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfc_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher
+                    .iter(|| function_under_bench(&normalizer_under_bench, &bench_data_content.nfc))
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfd_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher
+                    .iter(|| function_under_bench(&normalizer_under_bench, &bench_data_content.nfd))
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkc_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench(&normalizer_under_bench, &bench_data_content.nfkc)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkd_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench(&normalizer_under_bench, &bench_data_content.nfkd)
+                })
+            },
+        );
+
+        // UTF 16
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfc_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfc_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfd_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfd_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkc_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfkc_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkd_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfkd_u16)
+                })
+            },
+        );
+    }
+
+    group.finish();
+}
diff --git a/vendor/icu_normalizer/benches/decomposing_normalizer_nfkd.rs b/vendor/icu_normalizer/benches/decomposing_normalizer_nfkd.rs
new file mode 100644
index 00000000..4b5d9013
--- /dev/null
+++ b/vendor/icu_normalizer/benches/decomposing_normalizer_nfkd.rs
@@ -0,0 +1,211 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, BenchmarkId, Criterion};
+
+use icu_normalizer::{ComposingNormalizerBorrowed, DecomposingNormalizerBorrowed};
+
+struct BenchDataContent {
+    pub file_name: String,
+    pub nfc: String,
+    pub nfd: String,
+    pub nfkc: String,
+    pub nfkd: String,
+    pub nfc_u16: Vec<u16>,
+    pub nfd_u16: Vec<u16>,
+    pub nfkc_u16: Vec<u16>,
+    pub nfkd_u16: Vec<u16>,
+}
+
+fn strip_headers(content: &str) -> String {
+    content
+        .lines()
+        .filter(|&s| !s.starts_with('#'))
+        .map(|s| s.to_owned())
+        .collect::<Vec<String>>()
+        .join("\n")
+}
+
+fn normalizer_bench_data() -> [BenchDataContent; 15] {
+    let nfc_normalizer = ComposingNormalizerBorrowed::new_nfc();
+    let nfd_normalizer = DecomposingNormalizerBorrowed::new_nfd();
+    let nfkc_normalizer = ComposingNormalizerBorrowed::new_nfkc();
+    let nfkd_normalizer = DecomposingNormalizerBorrowed::new_nfkd();
+
+    let content_latin: (&str, &str) = (
+        "TestNames_Latin",
+        &strip_headers(include_str!("./data/TestNames_Latin.txt")),
+    );
+    let content_jp_h: (&str, &str) = (
+        "TestNames_Japanese_h",
+        &strip_headers(include_str!("./data/TestNames_Japanese_h.txt")),
+    );
+    let content_jp_k: (&str, &str) = (
+        "TestNames_Japanese_k",
+        &strip_headers(include_str!("./data/TestNames_Japanese_k.txt")),
+    );
+    let content_korean: (&str, &str) = (
+        "TestNames_Korean",
+        &strip_headers(include_str!("./data/TestNames_Korean.txt")),
+    );
+    let content_random_words_ar: (&str, &str) = (
+        "TestRandomWordsUDHR_ar",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_ar.txt")),
+    );
+    let content_random_words_de: (&str, &str) = (
+        "TestRandomWordsUDHR_de",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_de.txt")),
+    );
+    let content_random_words_el: (&str, &str) = (
+        "TestRandomWordsUDHR_el",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_el.txt")),
+    );
+    let content_random_words_es: (&str, &str) = (
+        "TestRandomWordsUDHR_es",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_es.txt")),
+    );
+    let content_random_words_fr: (&str, &str) = (
+        "TestRandomWordsUDHR_fr",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_fr.txt")),
+    );
+    let content_random_words_he: (&str, &str) = (
+        "TestRandomWordsUDHR_he",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_he.txt")),
+    );
+    let content_random_words_pl: (&str, &str) = (
+        "TestRandomWordsUDHR_pl",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_pl.txt")),
+    );
+    let content_random_words_ru: (&str, &str) = (
+        "TestRandomWordsUDHR_ru",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_ru.txt")),
+    );
+    let content_random_words_th: (&str, &str) = (
+        "TestRandomWordsUDHR_th",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_th.txt")),
+    );
+    let content_random_words_tr: (&str, &str) = (
+        "TestRandomWordsUDHR_tr",
+        &strip_headers(include_str!("./data/TestRandomWordsUDHR_tr.txt")),
+    );
+    let content_viet: (&str, &str) = ("wotw", &strip_headers(include_str!("./data/wotw.txt")));
+
+    [
+        content_latin,
+        content_viet,
+        content_jp_k,
+        content_jp_h,
+        content_korean,
+        content_random_words_ru,
+        content_random_words_ar,
+        content_random_words_el,
+        content_random_words_es,
+        content_random_words_fr,
+        content_random_words_tr,
+        content_random_words_th,
+        content_random_words_pl,
+        content_random_words_he,
+        content_random_words_de,
+    ]
+    .map(|(file_name, raw_content)| {
+        let nfc = &nfc_normalizer.normalize(raw_content);
+        let nfd = &nfd_normalizer.normalize(raw_content);
+        let nfkc = &nfkc_normalizer.normalize(raw_content);
+        let nfkd = &nfkd_normalizer.normalize(raw_content);
+        BenchDataContent {
+            file_name: file_name.to_owned(),
+            nfc: nfc.to_string(),
+            nfd: nfd.to_string(),
+            nfkc: nfkc.to_string(),
+            nfkd: nfkd.to_string(),
+            nfc_u16: nfc.encode_utf16().collect(),
+            nfd_u16: nfd.encode_utf16().collect(),
+            nfkc_u16: nfkc.encode_utf16().collect(),
+            nfkd_u16: nfkd.encode_utf16().collect(),
+        }
+    })
+}
+
+fn function_under_bench(normalizer: &DecomposingNormalizerBorrowed, text: &str) {
+    normalizer.normalize(text);
+}
+
+fn function_under_bench_u16(normalizer: &DecomposingNormalizerBorrowed, text: &[u16]) {
+    normalizer.normalize_utf16(text);
+}
+
+pub fn criterion_benchmark(criterion: &mut Criterion) {
+    let group_name = "decomposing_normalizer_nfkd";
+
+    let normalizer_under_bench = DecomposingNormalizerBorrowed::new_nfkd();
+
+    let mut group = criterion.benchmark_group(group_name);
+    for bench_data_content in black_box(normalizer_bench_data()) {
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfc_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher
+                    .iter(|| function_under_bench(&normalizer_under_bench, &bench_data_content.nfc))
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfd_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher
+                    .iter(|| function_under_bench(&normalizer_under_bench, &bench_data_content.nfd))
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkc_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench(&normalizer_under_bench, &bench_data_content.nfkc)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkd_{}", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench(&normalizer_under_bench, &bench_data_content.nfkd)
+                })
+            },
+        );
+
+        // UTF 16
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfc_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfc_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfd_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfd_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkc_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfkc_u16)
+                })
+            },
+        );
+        group.bench_function(
+            BenchmarkId::from_parameter(format!("from_nfkd_{}_u16", bench_data_content.file_name)),
+            |bencher| {
+                bencher.iter(|| {
+                    function_under_bench_u16(&normalizer_under_bench, &bench_data_content.nfkd_u16)
+                })
+            },
+        );
+    }
+    group.finish();
+}
diff --git a/vendor/icu_normalizer/src/lib.rs b/vendor/icu_normalizer/src/lib.rs
new file mode 100644
index 00000000..788b2682
--- /dev/null
+++ b/vendor/icu_normalizer/src/lib.rs
@@ -0,0 +1,2854 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+#![warn(missing_docs)]
+
+//! Normalizing text into Unicode Normalization Forms.
+//!
+//! This module is published as its own crate ([`icu_normalizer`](https://docs.rs/icu_normalizer/latest/icu_normalizer/))
+//! and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
+//!
+//! # Functionality
+//!
+//! The top level of the crate provides normalization of input into the four normalization forms defined in [UAX #15: Unicode
+//! Normalization Forms](https://www.unicode.org/reports/tr15/): NFC, NFD, NFKC, and NFKD.
+//!
+//! Three kinds of contiguous inputs are supported: known-well-formed UTF-8 (`&str`), potentially-not-well-formed UTF-8,
+//! and potentially-not-well-formed UTF-16. Additionally, an iterator over `char` can be wrapped in a normalizing iterator.
+//!
+//! The `uts46` module provides the combination of mapping and normalization operations for [UTS #46: Unicode IDNA
+//! Compatibility Processing](https://www.unicode.org/reports/tr46/). This functionality is not meant to be used by
+//! applications directly. Instead, it is meant as a building block for a full implementation of UTS #46, such as the
+//! [`idna`](https://docs.rs/idna/latest/idna/) crate.
+//!
+//! The `properties` module provides the non-recursive canonical decomposition operation on a per `char` basis and
+//! the canonical compositon operation given two `char`s. It also provides access to the Canonical Combining Class
+//! property. These operations are primarily meant for [HarfBuzz](https://harfbuzz.github.io/) via the
+//! [`icu_harfbuzz`](https://docs.rs/icu_harfbuzz/latest/icu_harfbuzz/) crate.
+//!
+//! Notably, this normalizer does _not_ provide the normalization “quick check” that can result in “maybe” in
+//! addition to “yes” and “no”. The normalization checks provided by this crate always give a definitive
+//! non-“maybe” answer.
+//!
+//! # Examples
+//!
+//! ```
+//! let nfc = icu_normalizer::ComposingNormalizerBorrowed::new_nfc();
+//! assert_eq!(nfc.normalize("a\u{0308}"), "ä");
+//! assert!(nfc.is_normalized("ä"));
+//!
+//! let nfd = icu_normalizer::DecomposingNormalizerBorrowed::new_nfd();
+//! assert_eq!(nfd.normalize("ä"), "a\u{0308}");
+//! assert!(!nfd.is_normalized("ä"));
+//! ```
+
+extern crate alloc;
+
+// We don't depend on icu_properties to minimize deps, but we want to be able
+// to ensure we're using the right CCC values
+macro_rules! ccc {
+    ($name:ident, $num:expr) => {
+        const {
+            #[cfg(feature = "icu_properties")]
+            if icu_properties::props::CanonicalCombiningClass::$name.to_icu4c_value() != $num {
+                panic!("icu_normalizer has incorrect ccc values")
+            }
+            CanonicalCombiningClass::from_icu4c_value($num)
+        }
+    };
+}
+
+pub mod properties;
+pub mod provider;
+pub mod uts46;
+
+use crate::provider::CanonicalCompositions;
+use crate::provider::DecompositionData;
+use crate::provider::NormalizerNfdDataV1;
+use crate::provider::NormalizerNfkdDataV1;
+use crate::provider::NormalizerUts46DataV1;
+use alloc::borrow::Cow;
+use alloc::string::String;
+use core::char::REPLACEMENT_CHARACTER;
+use icu_collections::char16trie::Char16Trie;
+use icu_collections::char16trie::Char16TrieIterator;
+use icu_collections::char16trie::TrieResult;
+use icu_collections::codepointtrie::CodePointTrie;
+#[cfg(feature = "icu_properties")]
+use icu_properties::props::CanonicalCombiningClass;
+use icu_provider::prelude::*;
+use provider::DecompositionTables;
+use provider::NormalizerNfcV1;
+use provider::NormalizerNfdTablesV1;
+use provider::NormalizerNfkdTablesV1;
+use smallvec::SmallVec;
+#[cfg(feature = "utf16_iter")]
+use utf16_iter::Utf16CharsEx;
+#[cfg(feature = "utf8_iter")]
+use utf8_iter::Utf8CharsEx;
+use zerovec::{zeroslice, ZeroSlice};
+
+/// This type exists as a shim for icu_properties CanonicalCombiningClass when the crate is disabled
+/// It should not be exposed to users.
+#[cfg(not(feature = "icu_properties"))]
+#[derive(Copy, Clone, Eq, PartialEq, PartialOrd, Ord)]
+struct CanonicalCombiningClass(pub(crate) u8);
+
+#[cfg(not(feature = "icu_properties"))]
+impl CanonicalCombiningClass {
+    const fn from_icu4c_value(v: u8) -> Self {
+        Self(v)
+    }
+    const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+}
+
+const CCC_NOT_REORDERED: CanonicalCombiningClass = ccc!(NotReordered, 0);
+const CCC_ABOVE: CanonicalCombiningClass = ccc!(Above, 230);
+
+/// Treatment of the ignorable marker (0xFFFFFFFF) in data.
+#[derive(Debug, PartialEq, Eq)]
+enum IgnorableBehavior {
+    /// 0xFFFFFFFF in data is not supported.
+    Unsupported,
+    /// Ignorables are ignored.
+    Ignored,
+    /// Ignorables are treated as singleton decompositions
+    /// to the REPLACEMENT CHARACTER.
+    ReplacementCharacter,
+}
+
+/// Marker for UTS 46 ignorables.
+///
+/// See trie-value-format.md
+const IGNORABLE_MARKER: u32 = 0xFFFFFFFF;
+
+/// Marker that the decomposition does not round trip via NFC.
+///
+/// See trie-value-format.md
+const NON_ROUND_TRIP_MARKER: u32 = 1 << 30;
+
+/// Marker that the first character of the decomposition
+/// can combine backwards.
+///
+/// See trie-value-format.md
+const BACKWARD_COMBINING_MARKER: u32 = 1 << 31;
+
+/// Mask for the bits have to be zero for this to be a BMP
+/// singleton decomposition, or value baked into the surrogate
+/// range.
+///
+/// See trie-value-format.md
+const HIGH_ZEROS_MASK: u32 = 0x3FFF0000;
+
+/// Mask for the bits have to be zero for this to be a complex
+/// decomposition.
+///
+/// See trie-value-format.md
+const LOW_ZEROS_MASK: u32 = 0xFFE0;
+
+/// Checks if a trie value carries a (non-zero) canonical
+/// combining class.
+///
+/// See trie-value-format.md
+fn trie_value_has_ccc(trie_value: u32) -> bool {
+    (trie_value & 0x3FFFFE00) == 0xD800
+}
+
+/// Checks if the trie signifies a special non-starter decomposition.
+///
+/// See trie-value-format.md
+fn trie_value_indicates_special_non_starter_decomposition(trie_value: u32) -> bool {
+    (trie_value & 0x3FFFFF00) == 0xD900
+}
+
+/// Checks if a trie value signifies a character whose decomposition
+/// starts with a non-starter.
+///
+/// See trie-value-format.md
+fn decomposition_starts_with_non_starter(trie_value: u32) -> bool {
+    trie_value_has_ccc(trie_value)
+}
+
+/// Extracts a canonical combining class (possibly zero) from a trie value.
+///
+/// See trie-value-format.md
+fn ccc_from_trie_value(trie_value: u32) -> CanonicalCombiningClass {
+    if trie_value_has_ccc(trie_value) {
+        CanonicalCombiningClass::from_icu4c_value(trie_value as u8)
+    } else {
+        CCC_NOT_REORDERED
+    }
+}
+
+/// The tail (everything after the first character) of the NFKD form U+FDFA
+/// as 16-bit units.
+static FDFA_NFKD: [u16; 17] = [
+    0x644, 0x649, 0x20, 0x627, 0x644, 0x644, 0x647, 0x20, 0x639, 0x644, 0x64A, 0x647, 0x20, 0x648,
+    0x633, 0x644, 0x645,
+];
+
+/// Marker value for U+FDFA in NFKD. (Unified with Hangul syllable marker,
+/// but they differ by `NON_ROUND_TRIP_MARKER`.)
+///
+/// See trie-value-format.md
+const FDFA_MARKER: u16 = 1;
+
+// These constants originate from page 143 of Unicode 14.0
+/// Syllable base
+const HANGUL_S_BASE: u32 = 0xAC00;
+/// Lead jamo base
+const HANGUL_L_BASE: u32 = 0x1100;
+/// Vowel jamo base
+const HANGUL_V_BASE: u32 = 0x1161;
+/// Trail jamo base (deliberately off by one to account for the absence of a trail)
+const HANGUL_T_BASE: u32 = 0x11A7;
+/// Lead jamo count
+const HANGUL_L_COUNT: u32 = 19;
+/// Vowel jamo count
+const HANGUL_V_COUNT: u32 = 21;
+/// Trail jamo count (deliberately off by one to account for the absence of a trail)
+const HANGUL_T_COUNT: u32 = 28;
+/// Vowel jamo count times trail jamo count
+const HANGUL_N_COUNT: u32 = 588;
+/// Syllable count
+const HANGUL_S_COUNT: u32 = 11172;
+
+/// One past the conjoining jamo block
+const HANGUL_JAMO_LIMIT: u32 = 0x1200;
+
+/// If `opt` is `Some`, unwrap it. If `None`, panic if debug assertions
+/// are enabled and return `default` if debug assertions are not enabled.
+///
+/// Use this only if the only reason why `opt` could be `None` is bogus
+/// data from the provider.
+#[inline(always)]
+fn unwrap_or_gigo<T>(opt: Option<T>, default: T) -> T {
+    if let Some(val) = opt {
+        val
+    } else {
+        // GIGO case
+        debug_assert!(false);
+        default
+    }
+}
+
+/// Convert a `u32` _obtained from data provider data_ to `char`.
+#[inline(always)]
+fn char_from_u32(u: u32) -> char {
+    unwrap_or_gigo(core::char::from_u32(u), REPLACEMENT_CHARACTER)
+}
+
+/// Convert a `u16` _obtained from data provider data_ to `char`.
+#[inline(always)]
+fn char_from_u16(u: u16) -> char {
+    char_from_u32(u32::from(u))
+}
+
+const EMPTY_U16: &ZeroSlice<u16> = zeroslice![];
+
+const EMPTY_CHAR: &ZeroSlice<char> = zeroslice![];
+
+#[inline(always)]
+fn in_inclusive_range(c: char, start: char, end: char) -> bool {
+    u32::from(c).wrapping_sub(u32::from(start)) <= (u32::from(end) - u32::from(start))
+}
+
+#[inline(always)]
+#[cfg(feature = "utf16_iter")]
+fn in_inclusive_range16(u: u16, start: u16, end: u16) -> bool {
+    u.wrapping_sub(start) <= (end - start)
+}
+
+/// Performs canonical composition (including Hangul) on a pair of
+/// characters or returns `None` if these characters don't compose.
+/// Composition exclusions are taken into account.
+#[inline]
+fn compose(iter: Char16TrieIterator, starter: char, second: char) -> Option<char> {
+    let v = u32::from(second).wrapping_sub(HANGUL_V_BASE);
+    if v >= HANGUL_JAMO_LIMIT - HANGUL_V_BASE {
+        return compose_non_hangul(iter, starter, second);
+    }
+    if v < HANGUL_V_COUNT {
+        let l = u32::from(starter).wrapping_sub(HANGUL_L_BASE);
+        if l < HANGUL_L_COUNT {
+            let lv = l * HANGUL_N_COUNT + v * HANGUL_T_COUNT;
+            // Safe, because the inputs are known to be in range.
+            return Some(unsafe { char::from_u32_unchecked(HANGUL_S_BASE + lv) });
+        }
+        return None;
+    }
+    if in_inclusive_range(second, '\u{11A8}', '\u{11C2}') {
+        let lv = u32::from(starter).wrapping_sub(HANGUL_S_BASE);
+        if lv < HANGUL_S_COUNT && lv % HANGUL_T_COUNT == 0 {
+            let lvt = lv + (u32::from(second) - HANGUL_T_BASE);
+            // Safe, because the inputs are known to be in range.
+            return Some(unsafe { char::from_u32_unchecked(HANGUL_S_BASE + lvt) });
+        }
+    }
+    None
+}
+
+/// Performs (non-Hangul) canonical composition on a pair of characters
+/// or returns `None` if these characters don't compose. Composition
+/// exclusions are taken into account.
+fn compose_non_hangul(mut iter: Char16TrieIterator, starter: char, second: char) -> Option<char> {
+    // To make the trie smaller, the pairs are stored second character first.
+    // Given how this method is used in ways where it's known that `second`
+    // is or isn't a starter. We could potentially split the trie into two
+    // tries depending on whether `second` is a starter.
+    match iter.next(second) {
+        TrieResult::NoMatch => None,
+        TrieResult::NoValue => match iter.next(starter) {
+            TrieResult::NoMatch => None,
+            TrieResult::FinalValue(i) => {
+                if let Some(c) = char::from_u32(i as u32) {
+                    Some(c)
+                } else {
+                    // GIGO case
+                    debug_assert!(false);
+                    None
+                }
+            }
+            TrieResult::NoValue | TrieResult::Intermediate(_) => {
+                // GIGO case
+                debug_assert!(false);
+                None
+            }
+        },
+        TrieResult::FinalValue(_) | TrieResult::Intermediate(_) => {
+            // GIGO case
+            debug_assert!(false);
+            None
+        }
+    }
+}
+
+/// See trie-value-format.md
+#[inline(always)]
+fn starter_and_decomposes_to_self_impl(trie_val: u32) -> bool {
+    // The REPLACEMENT CHARACTER has `NON_ROUND_TRIP_MARKER` set,
+    // and this function needs to ignore that.
+    (trie_val & !(BACKWARD_COMBINING_MARKER | NON_ROUND_TRIP_MARKER)) == 0
+}
+
+/// See trie-value-format.md
+#[inline(always)]
+fn potential_passthrough_and_cannot_combine_backwards_impl(trie_val: u32) -> bool {
+    (trie_val & (NON_ROUND_TRIP_MARKER | BACKWARD_COMBINING_MARKER)) == 0
+}
+
+/// Struct for holding together a character and the value
+/// looked up for it from the NFD trie in a more explicit
+/// way than an anonymous pair.
+/// Also holds a flag about the supplementary-trie provenance.
+#[derive(Debug, PartialEq, Eq)]
+struct CharacterAndTrieValue {
+    character: char,
+    /// See trie-value-format.md
+    trie_val: u32,
+}
+
+impl CharacterAndTrieValue {
+    #[inline(always)]
+    pub fn new(c: char, trie_value: u32) -> Self {
+        CharacterAndTrieValue {
+            character: c,
+            trie_val: trie_value,
+        }
+    }
+
+    #[inline(always)]
+    pub fn starter_and_decomposes_to_self(&self) -> bool {
+        starter_and_decomposes_to_self_impl(self.trie_val)
+    }
+
+    /// See trie-value-format.md
+    #[inline(always)]
+    #[cfg(feature = "utf8_iter")]
+    pub fn starter_and_decomposes_to_self_except_replacement(&self) -> bool {
+        // This intentionally leaves `NON_ROUND_TRIP_MARKER` in the value
+        // to be compared with zero. U+FFFD has that flag set despite really
+        // being being round-tripping in order to make UTF-8 errors
+        // ineligible for passthrough.
+        (self.trie_val & !BACKWARD_COMBINING_MARKER) == 0
+    }
+
+    /// See trie-value-format.md
+    #[inline(always)]
+    pub fn can_combine_backwards(&self) -> bool {
+        (self.trie_val & BACKWARD_COMBINING_MARKER) != 0
+    }
+    /// See trie-value-format.md
+    #[inline(always)]
+    pub fn potential_passthrough(&self) -> bool {
+        (self.trie_val & NON_ROUND_TRIP_MARKER) == 0
+    }
+    /// See trie-value-format.md
+    #[inline(always)]
+    pub fn potential_passthrough_and_cannot_combine_backwards(&self) -> bool {
+        potential_passthrough_and_cannot_combine_backwards_impl(self.trie_val)
+    }
+}
+
+/// Pack a `char` and a `CanonicalCombiningClass` in
+/// 32 bits (the former in the lower 24 bits and the
+/// latter in the high 8 bits). The latter can be
+/// initialized to 0xFF upon creation, in which case
+/// it can be actually set later by calling
+/// `set_ccc_from_trie_if_not_already_set`. This is
+/// a micro optimization to avoid the Canonical
+/// Combining Class trie lookup when there is only
+/// one combining character in a sequence. This type
+/// is intentionally non-`Copy` to get compiler help
+/// in making sure that the class is set on the
+/// instance on which it is intended to be set
+/// and not on a temporary copy.
+///
+/// Note that 0xFF is won't be assigned to an actual
+/// canonical combining class per definition D104
+/// in The Unicode Standard.
+//
+// NOTE: The Pernosco debugger has special knowledge
+// of this struct. Please do not change the bit layout
+// or the crate-module-qualified name of this struct
+// without coordination.
+#[derive(Debug)]
+struct CharacterAndClass(u32);
+
+impl CharacterAndClass {
+    pub fn new(c: char, ccc: CanonicalCombiningClass) -> Self {
+        CharacterAndClass(u32::from(c) | (u32::from(ccc.to_icu4c_value()) << 24))
+    }
+    pub fn new_with_placeholder(c: char) -> Self {
+        CharacterAndClass(u32::from(c) | ((0xFF) << 24))
+    }
+    pub fn new_with_trie_value(c_tv: CharacterAndTrieValue) -> Self {
+        Self::new(c_tv.character, ccc_from_trie_value(c_tv.trie_val))
+    }
+    pub fn new_starter(c: char) -> Self {
+        CharacterAndClass(u32::from(c))
+    }
+    /// This method must exist for Pernosco to apply its special rendering.
+    /// Also, this must not be dead code!
+    pub fn character(&self) -> char {
+        // Safe, because the low 24 bits came from a `char`
+        // originally.
+        unsafe { char::from_u32_unchecked(self.0 & 0xFFFFFF) }
+    }
+    /// This method must exist for Pernosco to apply its special rendering.
+    pub fn ccc(&self) -> CanonicalCombiningClass {
+        CanonicalCombiningClass::from_icu4c_value((self.0 >> 24) as u8)
+    }
+
+    pub fn character_and_ccc(&self) -> (char, CanonicalCombiningClass) {
+        (self.character(), self.ccc())
+    }
+    pub fn set_ccc_from_trie_if_not_already_set(&mut self, trie: &CodePointTrie<u32>) {
+        if self.0 >> 24 != 0xFF {
+            return;
+        }
+        let scalar = self.0 & 0xFFFFFF;
+        self.0 =
+            ((ccc_from_trie_value(trie.get32_u32(scalar)).to_icu4c_value() as u32) << 24) | scalar;
+    }
+}
+
+// This function exists as a borrow check helper.
+#[inline(always)]
+fn sort_slice_by_ccc(slice: &mut [CharacterAndClass], trie: &CodePointTrie<u32>) {
+    // We don't look up the canonical combining class for starters
+    // of for single combining characters between starters. When
+    // there's more than one combining character between starters,
+    // we look up the canonical combining class for each character
+    // exactly once.
+    if slice.len() < 2 {
+        return;
+    }
+    slice
+        .iter_mut()
+        .for_each(|cc| cc.set_ccc_from_trie_if_not_already_set(trie));
+    slice.sort_by_key(|cc| cc.ccc());
+}
+
+/// An iterator adaptor that turns an `Iterator` over `char` into
+/// a lazily-decomposed `char` sequence.
+#[derive(Debug)]
+pub struct Decomposition<'data, I>
+where
+    I: Iterator<Item = char>,
+{
+    delegate: I,
+    buffer: SmallVec<[CharacterAndClass; 17]>, // Enough to hold NFKD for U+FDFA
+    /// The index of the next item to be read from `buffer`.
+    /// The purpose if this index is to avoid having to move
+    /// the rest upon every read.
+    buffer_pos: usize,
+    // At the start of `next()` if not `None`, this is a pending unnormalized
+    // starter. When `Decomposition` appears alone, this is never a non-starter.
+    // However, when `Decomposition` appears inside a `Composition`, this
+    // may become a non-starter before `decomposing_next()` is called.
+    pending: Option<CharacterAndTrieValue>, // None at end of stream
+    // See trie-value-format.md
+    trie: &'data CodePointTrie<'data, u32>,
+    scalars16: &'data ZeroSlice<u16>,
+    scalars24: &'data ZeroSlice<char>,
+    supplementary_scalars16: &'data ZeroSlice<u16>,
+    supplementary_scalars24: &'data ZeroSlice<char>,
+    /// The lowest character for which either of the following does
+    /// not hold:
+    /// 1. Decomposes to self.
+    /// 2. Decomposition starts with a non-starter
+    decomposition_passthrough_bound: u32, // never above 0xC0
+    ignorable_behavior: IgnorableBehavior, // Arguably should be a type parameter
+}
+
+impl<'data, I> Decomposition<'data, I>
+where
+    I: Iterator<Item = char>,
+{
+    /// Constructs a decomposing iterator adapter from a delegate
+    /// iterator and references to the necessary data, without
+    /// supplementary data.
+    ///
+    /// Use `DecomposingNormalizer::normalize_iter()` instead unless
+    /// there's a good reason to use this constructor directly.
+    ///
+    /// Public but hidden in order to be able to use this from the
+    /// collator.
+    #[doc(hidden)] // used in collator
+    pub fn new(
+        delegate: I,
+        decompositions: &'data DecompositionData,
+        tables: &'data DecompositionTables,
+    ) -> Self {
+        Self::new_with_supplements(
+            delegate,
+            decompositions,
+            tables,
+            None,
+            0xC0,
+            IgnorableBehavior::Unsupported,
+        )
+    }
+
+    /// Constructs a decomposing iterator adapter from a delegate
+    /// iterator and references to the necessary data, including
+    /// supplementary data.
+    ///
+    /// Use `DecomposingNormalizer::normalize_iter()` instead unless
+    /// there's a good reason to use this constructor directly.
+    fn new_with_supplements(
+        delegate: I,
+        decompositions: &'data DecompositionData,
+        tables: &'data DecompositionTables,
+        supplementary_tables: Option<&'data DecompositionTables>,
+        decomposition_passthrough_bound: u8,
+        ignorable_behavior: IgnorableBehavior,
+    ) -> Self {
+        let mut ret = Decomposition::<I> {
+            delegate,
+            buffer: SmallVec::new(), // Normalized
+            buffer_pos: 0,
+            // Initialize with a placeholder starter in case
+            // the real stream starts with a non-starter.
+            pending: Some(CharacterAndTrieValue::new('\u{FFFF}', 0)),
+            trie: &decompositions.trie,
+            scalars16: &tables.scalars16,
+            scalars24: &tables.scalars24,
+            supplementary_scalars16: if let Some(supplementary) = supplementary_tables {
+                &supplementary.scalars16
+            } else {
+                EMPTY_U16
+            },
+            supplementary_scalars24: if let Some(supplementary) = supplementary_tables {
+                &supplementary.scalars24
+            } else {
+                EMPTY_CHAR
+            },
+            decomposition_passthrough_bound: u32::from(decomposition_passthrough_bound),
+            ignorable_behavior,
+        };
+        let _ = ret.next(); // Remove the U+FFFF placeholder
+        ret
+    }
+
+    fn push_decomposition16(
+        &mut self,
+        offset: usize,
+        len: usize,
+        only_non_starters_in_trail: bool,
+        slice16: &ZeroSlice<u16>,
+    ) -> (char, usize) {
+        let (starter, tail) = slice16
+            .get_subslice(offset..offset + len)
+            .and_then(|slice| slice.split_first())
+            .map_or_else(
+                || {
+                    // GIGO case
+                    debug_assert!(false);
+                    (REPLACEMENT_CHARACTER, EMPTY_U16)
+                },
+                |(first, trail)| (char_from_u16(first), trail),
+            );
+        if only_non_starters_in_trail {
+            // All the rest are combining
+            self.buffer.extend(
+                tail.iter()
+                    .map(|u| CharacterAndClass::new_with_placeholder(char_from_u16(u))),
+            );
+            (starter, 0)
+        } else {
+            let mut i = 0;
+            let mut combining_start = 0;
+            for u in tail.iter() {
+                let ch = char_from_u16(u);
+                let trie_value = self.trie.get(ch);
+                self.buffer.push(CharacterAndClass::new_with_trie_value(
+                    CharacterAndTrieValue::new(ch, trie_value),
+                ));
+                i += 1;
+                // Half-width kana and iota subscript don't occur in the tails
+                // of these multicharacter decompositions.
+                if !decomposition_starts_with_non_starter(trie_value) {
+                    combining_start = i;
+                }
+            }
+            (starter, combining_start)
+        }
+    }
+
+    fn push_decomposition32(
+        &mut self,
+        offset: usize,
+        len: usize,
+        only_non_starters_in_trail: bool,
+        slice32: &ZeroSlice<char>,
+    ) -> (char, usize) {
+        let (starter, tail) = slice32
+            .get_subslice(offset..offset + len)
+            .and_then(|slice| slice.split_first())
+            .unwrap_or_else(|| {
+                // GIGO case
+                debug_assert!(false);
+                (REPLACEMENT_CHARACTER, EMPTY_CHAR)
+            });
+        if only_non_starters_in_trail {
+            // All the rest are combining
+            self.buffer
+                .extend(tail.iter().map(CharacterAndClass::new_with_placeholder));
+            (starter, 0)
+        } else {
+            let mut i = 0;
+            let mut combining_start = 0;
+            for ch in tail.iter() {
+                let trie_value = self.trie.get(ch);
+                self.buffer.push(CharacterAndClass::new_with_trie_value(
+                    CharacterAndTrieValue::new(ch, trie_value),
+                ));
+                i += 1;
+                // Half-width kana and iota subscript don't occur in the tails
+                // of these multicharacter decompositions.
+                if !decomposition_starts_with_non_starter(trie_value) {
+                    combining_start = i;
+                }
+            }
+            (starter, combining_start)
+        }
+    }
+
+    #[inline(always)]
+    fn attach_trie_value(&self, c: char) -> CharacterAndTrieValue {
+        CharacterAndTrieValue::new(c, self.trie.get(c))
+    }
+
+    fn delegate_next_no_pending(&mut self) -> Option<CharacterAndTrieValue> {
+        debug_assert!(self.pending.is_none());
+        loop {
+            let c = self.delegate.next()?;
+
+            // TODO(#2384): Measure if this check is actually an optimization.
+            if u32::from(c) < self.decomposition_passthrough_bound {
+                return Some(CharacterAndTrieValue::new(c, 0));
+            }
+
+            let trie_val = self.trie.get(c);
+            // TODO: Can we do something better about the cost of this branch in the
+            // non-UTS 46 case?
+            if trie_val == IGNORABLE_MARKER {
+                match self.ignorable_behavior {
+                    IgnorableBehavior::Unsupported => {
+                        debug_assert!(false);
+                    }
+                    IgnorableBehavior::ReplacementCharacter => {
+                        return Some(CharacterAndTrieValue::new(
+                            c,
+                            u32::from(REPLACEMENT_CHARACTER) | NON_ROUND_TRIP_MARKER,
+                        ));
+                    }
+                    IgnorableBehavior::Ignored => {
+                        // Else ignore this character by reading the next one from the delegate.
+                        continue;
+                    }
+                }
+            }
+            return Some(CharacterAndTrieValue::new(c, trie_val));
+        }
+    }
+
+    fn delegate_next(&mut self) -> Option<CharacterAndTrieValue> {
+        if let Some(pending) = self.pending.take() {
+            // Only happens as part of `Composition` and as part of
+            // the contiguous-buffer methods of `DecomposingNormalizer`.
+            // I.e. does not happen as part of standalone iterator
+            // usage of `Decomposition`.
+            Some(pending)
+        } else {
+            self.delegate_next_no_pending()
+        }
+    }
+
+    fn decomposing_next(&mut self, c_and_trie_val: CharacterAndTrieValue) -> char {
+        let (starter, combining_start) = {
+            let c = c_and_trie_val.character;
+            // See trie-value-format.md
+            let decomposition = c_and_trie_val.trie_val;
+            // The REPLACEMENT CHARACTER has `NON_ROUND_TRIP_MARKER` set,
+            // and that flag needs to be ignored here.
+            if (decomposition & !(BACKWARD_COMBINING_MARKER | NON_ROUND_TRIP_MARKER)) == 0 {
+                // The character is its own decomposition
+                (c, 0)
+            } else {
+                let high_zeros = (decomposition & HIGH_ZEROS_MASK) == 0;
+                let low_zeros = (decomposition & LOW_ZEROS_MASK) == 0;
+                if !high_zeros && !low_zeros {
+                    // Decomposition into two BMP characters: starter and non-starter
+                    let starter = char_from_u32(decomposition & 0x7FFF);
+                    let combining = char_from_u32((decomposition >> 15) & 0x7FFF);
+                    self.buffer
+                        .push(CharacterAndClass::new_with_placeholder(combining));
+                    (starter, 0)
+                } else if high_zeros {
+                    // Do the check by looking at `c` instead of looking at a marker
+                    // in `singleton` below, because if we looked at the trie value,
+                    // we'd still have to check that `c` is in the Hangul syllable
+                    // range in order for the subsequent interpretations as `char`
+                    // to be safe.
+                    // Alternatively, `FDFA_MARKER` and the Hangul marker could
+                    // be unified. That would add a branch for Hangul and remove
+                    // a branch from singleton decompositions. It seems more
+                    // important to favor Hangul syllables than singleton
+                    // decompositions.
+                    // Note that it would be valid to hoist this Hangul check
+                    // one or even two steps earlier in this check hierarchy.
+                    // Right now, it's assumed the kind of decompositions into
+                    // BMP starter and non-starter, which occur in many languages,
+                    // should be checked before Hangul syllables, which are about
+                    // one language specifically. Hopefully, we get some
+                    // instruction-level parallelism out of the disjointness of
+                    // operations on `c` and `decomposition`.
+                    let hangul_offset = u32::from(c).wrapping_sub(HANGUL_S_BASE); // SIndex in the spec
+                    if hangul_offset < HANGUL_S_COUNT {
+                        debug_assert_eq!(decomposition, 1);
+                        // Hangul syllable
+                        // The math here comes from page 144 of Unicode 14.0
+                        let l = hangul_offset / HANGUL_N_COUNT;
+                        let v = (hangul_offset % HANGUL_N_COUNT) / HANGUL_T_COUNT;
+                        let t = hangul_offset % HANGUL_T_COUNT;
+
+                        // The unsafe blocks here are OK, because the values stay
+                        // within the Hangul jamo block and, therefore, the scalar
+                        // value range by construction.
+                        self.buffer.push(CharacterAndClass::new_starter(unsafe {
+                            core::char::from_u32_unchecked(HANGUL_V_BASE + v)
+                        }));
+                        let first = unsafe { core::char::from_u32_unchecked(HANGUL_L_BASE + l) };
+                        if t != 0 {
+                            self.buffer.push(CharacterAndClass::new_starter(unsafe {
+                                core::char::from_u32_unchecked(HANGUL_T_BASE + t)
+                            }));
+                            (first, 2)
+                        } else {
+                            (first, 1)
+                        }
+                    } else {
+                        let singleton = decomposition as u16;
+                        if singleton != FDFA_MARKER {
+                            // Decomposition into one BMP character
+                            let starter = char_from_u16(singleton);
+                            (starter, 0)
+                        } else {
+                            // Special case for the NFKD form of U+FDFA.
+                            self.buffer.extend(FDFA_NFKD.map(|u| {
+                                // SAFETY: `FDFA_NFKD` is known not to contain
+                                // surrogates.
+                                CharacterAndClass::new_starter(unsafe {
+                                    core::char::from_u32_unchecked(u32::from(u))
+                                })
+                            }));
+                            ('\u{0635}', 17)
+                        }
+                    }
+                } else {
+                    debug_assert!(low_zeros);
+                    // Only 12 of 14 bits used as of Unicode 16.
+                    let offset = (((decomposition & !(0b11 << 30)) >> 16) as usize) - 1;
+                    // Only 3 of 4 bits used as of Unicode 16.
+                    let len_bits = decomposition & 0b1111;
+                    let only_non_starters_in_trail = (decomposition & 0b10000) != 0;
+                    if offset < self.scalars16.len() {
+                        self.push_decomposition16(
+                            offset,
+                            (len_bits + 2) as usize,
+                            only_non_starters_in_trail,
+                            self.scalars16,
+                        )
+                    } else if offset < self.scalars16.len() + self.scalars24.len() {
+                        self.push_decomposition32(
+                            offset - self.scalars16.len(),
+                            (len_bits + 1) as usize,
+                            only_non_starters_in_trail,
+                            self.scalars24,
+                        )
+                    } else if offset
+                        < self.scalars16.len()
+                            + self.scalars24.len()
+                            + self.supplementary_scalars16.len()
+                    {
+                        self.push_decomposition16(
+                            offset - (self.scalars16.len() + self.scalars24.len()),
+                            (len_bits + 2) as usize,
+                            only_non_starters_in_trail,
+                            self.supplementary_scalars16,
+                        )
+                    } else {
+                        self.push_decomposition32(
+                            offset
+                                - (self.scalars16.len()
+                                    + self.scalars24.len()
+                                    + self.supplementary_scalars16.len()),
+                            (len_bits + 1) as usize,
+                            only_non_starters_in_trail,
+                            self.supplementary_scalars24,
+                        )
+                    }
+                }
+            }
+        };
+        // Either we're inside `Composition` or `self.pending.is_none()`.
+
+        self.gather_and_sort_combining(combining_start);
+        starter
+    }
+
+    fn gather_and_sort_combining(&mut self, combining_start: usize) {
+        // Not a `for` loop to avoid holding a mutable reference to `self` across
+        // the loop body.
+        while let Some(ch_and_trie_val) = self.delegate_next() {
+            if !trie_value_has_ccc(ch_and_trie_val.trie_val) {
+                self.pending = Some(ch_and_trie_val);
+                break;
+            } else if !trie_value_indicates_special_non_starter_decomposition(
+                ch_and_trie_val.trie_val,
+            ) {
+                self.buffer
+                    .push(CharacterAndClass::new_with_trie_value(ch_and_trie_val));
+            } else {
+                // The Tibetan special cases are starters that decompose into non-starters.
+                let mapped = match ch_and_trie_val.character {
+                    '\u{0340}' => {
+                        // COMBINING GRAVE TONE MARK
+                        CharacterAndClass::new('\u{0300}', CCC_ABOVE)
+                    }
+                    '\u{0341}' => {
+                        // COMBINING ACUTE TONE MARK
+                        CharacterAndClass::new('\u{0301}', CCC_ABOVE)
+                    }
+                    '\u{0343}' => {
+                        // COMBINING GREEK KORONIS
+                        CharacterAndClass::new('\u{0313}', CCC_ABOVE)
+                    }
+                    '\u{0344}' => {
+                        // COMBINING GREEK DIALYTIKA TONOS
+                        self.buffer
+                            .push(CharacterAndClass::new('\u{0308}', CCC_ABOVE));
+                        CharacterAndClass::new('\u{0301}', CCC_ABOVE)
+                    }
+                    '\u{0F73}' => {
+                        // TIBETAN VOWEL SIGN II
+                        self.buffer
+                            .push(CharacterAndClass::new('\u{0F71}', ccc!(CCC129, 129)));
+                        CharacterAndClass::new('\u{0F72}', ccc!(CCC130, 130))
+                    }
+                    '\u{0F75}' => {
+                        // TIBETAN VOWEL SIGN UU
+                        self.buffer
+                            .push(CharacterAndClass::new('\u{0F71}', ccc!(CCC129, 129)));
+                        CharacterAndClass::new('\u{0F74}', ccc!(CCC132, 132))
+                    }
+                    '\u{0F81}' => {
+                        // TIBETAN VOWEL SIGN REVERSED II
+                        self.buffer
+                            .push(CharacterAndClass::new('\u{0F71}', ccc!(CCC129, 129)));
+                        CharacterAndClass::new('\u{0F80}', ccc!(CCC130, 130))
+                    }
+                    '\u{FF9E}' => {
+                        // HALFWIDTH KATAKANA VOICED SOUND MARK
+                        CharacterAndClass::new('\u{3099}', ccc!(KanaVoicing, 8))
+                    }
+                    '\u{FF9F}' => {
+                        // HALFWIDTH KATAKANA VOICED SOUND MARK
+                        CharacterAndClass::new('\u{309A}', ccc!(KanaVoicing, 8))
+                    }
+                    _ => {
+                        // GIGO case
+                        debug_assert!(false);
+                        CharacterAndClass::new_with_placeholder(REPLACEMENT_CHARACTER)
+                    }
+                };
+                self.buffer.push(mapped);
+            }
+        }
+        // Slicing succeeds by construction; we've always ensured that `combining_start`
+        // is in permissible range.
+        #[allow(clippy::indexing_slicing)]
+        sort_slice_by_ccc(&mut self.buffer[combining_start..], self.trie);
+    }
+}
+
+impl<I> Iterator for Decomposition<'_, I>
+where
+    I: Iterator<Item = char>,
+{
+    type Item = char;
+
+    fn next(&mut self) -> Option<char> {
+        if let Some(ret) = self.buffer.get(self.buffer_pos).map(|c| c.character()) {
+            self.buffer_pos += 1;
+            if self.buffer_pos == self.buffer.len() {
+                self.buffer.clear();
+                self.buffer_pos = 0;
+            }
+            return Some(ret);
+        }
+        debug_assert_eq!(self.buffer_pos, 0);
+        let c_and_trie_val = self.pending.take()?;
+        Some(self.decomposing_next(c_and_trie_val))
+    }
+}
+
+/// An iterator adaptor that turns an `Iterator` over `char` into
+/// a lazily-decomposed and then canonically composed `char` sequence.
+#[derive(Debug)]
+pub struct Composition<'data, I>
+where
+    I: Iterator<Item = char>,
+{
+    /// The decomposing part of the normalizer than operates before
+    /// the canonical composition is performed on its output.
+    decomposition: Decomposition<'data, I>,
+    /// Non-Hangul canonical composition data.
+    canonical_compositions: Char16Trie<'data>,
+    /// To make `next()` yield in cases where there's a non-composing
+    /// starter in the decomposition buffer, we put it here to let it
+    /// wait for the next `next()` call (or a jump forward within the
+    /// `next()` call).
+    unprocessed_starter: Option<char>,
+    /// The lowest character for which any one of the following does
+    /// not hold:
+    /// 1. Roundtrips via decomposition and recomposition.
+    /// 2. Decomposition starts with a non-starter
+    /// 3. Is not a backward-combining starter
+    composition_passthrough_bound: u32,
+}
+
+impl<'data, I> Composition<'data, I>
+where
+    I: Iterator<Item = char>,
+{
+    fn new(
+        decomposition: Decomposition<'data, I>,
+        canonical_compositions: Char16Trie<'data>,
+        composition_passthrough_bound: u16,
+    ) -> Self {
+        Self {
+            decomposition,
+            canonical_compositions,
+            unprocessed_starter: None,
+            composition_passthrough_bound: u32::from(composition_passthrough_bound),
+        }
+    }
+
+    /// Performs canonical composition (including Hangul) on a pair of
+    /// characters or returns `None` if these characters don't compose.
+    /// Composition exclusions are taken into account.
+    #[inline(always)]
+    pub fn compose(&self, starter: char, second: char) -> Option<char> {
+        compose(self.canonical_compositions.iter(), starter, second)
+    }
+
+    /// Performs (non-Hangul) canonical composition on a pair of characters
+    /// or returns `None` if these characters don't compose. Composition
+    /// exclusions are taken into account.
+    #[inline(always)]
+    fn compose_non_hangul(&self, starter: char, second: char) -> Option<char> {
+        compose_non_hangul(self.canonical_compositions.iter(), starter, second)
+    }
+}
+
+impl<I> Iterator for Composition<'_, I>
+where
+    I: Iterator<Item = char>,
+{
+    type Item = char;
+
+    #[inline]
+    fn next(&mut self) -> Option<char> {
+        let mut undecomposed_starter = CharacterAndTrieValue::new('\u{0}', 0); // The compiler can't figure out that this gets overwritten before use.
+        if self.unprocessed_starter.is_none() {
+            // The loop is only broken out of as goto forward
+            #[allow(clippy::never_loop)]
+            loop {
+                if let Some((character, ccc)) = self
+                    .decomposition
+                    .buffer
+                    .get(self.decomposition.buffer_pos)
+                    .map(|c| c.character_and_ccc())
+                {
+                    self.decomposition.buffer_pos += 1;
+                    if self.decomposition.buffer_pos == self.decomposition.buffer.len() {
+                        self.decomposition.buffer.clear();
+                        self.decomposition.buffer_pos = 0;
+                    }
+                    if ccc == CCC_NOT_REORDERED {
+                        // Previous decomposition contains a starter. This must
+                        // now become the `unprocessed_starter` for it to have
+                        // a chance to compose with the upcoming characters.
+                        //
+                        // E.g. parenthesized Hangul in NFKC comes through here,
+                        // but suitable composition exclusion could exercise this
+                        // in NFC.
+                        self.unprocessed_starter = Some(character);
+                        break; // We already have a starter, so skip taking one from `pending`.
+                    }
+                    return Some(character);
+                }
+                debug_assert_eq!(self.decomposition.buffer_pos, 0);
+                undecomposed_starter = self.decomposition.pending.take()?;
+                if u32::from(undecomposed_starter.character) < self.composition_passthrough_bound
+                    || undecomposed_starter.potential_passthrough()
+                {
+                    // TODO(#2385): In the NFC case (moot for NFKC and UTS46), if the upcoming
+                    // character is not below `decomposition_passthrough_bound` but is
+                    // below `composition_passthrough_bound`, we read from the trie
+                    // unnecessarily.
+                    if let Some(upcoming) = self.decomposition.delegate_next_no_pending() {
+                        let cannot_combine_backwards = u32::from(upcoming.character)
+                            < self.composition_passthrough_bound
+                            || !upcoming.can_combine_backwards();
+                        self.decomposition.pending = Some(upcoming);
+                        if cannot_combine_backwards {
+                            // Fast-track succeeded!
+                            return Some(undecomposed_starter.character);
+                        }
+                    } else {
+                        // End of stream
+                        return Some(undecomposed_starter.character);
+                    }
+                }
+                break; // Not actually looping
+            }
+        }
+        let mut starter = '\u{0}'; // The compiler can't figure out this gets overwritten before use.
+
+        // The point of having this boolean is to have only one call site to
+        // `self.decomposition.decomposing_next`, which is hopefully beneficial for
+        // code size under inlining.
+        let mut attempt_composition = false;
+        loop {
+            if let Some(unprocessed) = self.unprocessed_starter.take() {
+                debug_assert_eq!(undecomposed_starter, CharacterAndTrieValue::new('\u{0}', 0));
+                debug_assert_eq!(starter, '\u{0}');
+                starter = unprocessed;
+            } else {
+                debug_assert_eq!(self.decomposition.buffer_pos, 0);
+                let next_starter = self.decomposition.decomposing_next(undecomposed_starter);
+                if !attempt_composition {
+                    starter = next_starter;
+                } else if let Some(composed) = self.compose(starter, next_starter) {
+                    starter = composed;
+                } else {
+                    // This is our yield point. We'll pick this up above in the
+                    // next call to `next()`.
+                    self.unprocessed_starter = Some(next_starter);
+                    return Some(starter);
+                }
+            }
+            // We first loop by index to avoid moving the contents of `buffer`, but
+            // if there's a discontiguous match, we'll start modifying `buffer` instead.
+            loop {
+                let (character, ccc) = if let Some((character, ccc)) = self
+                    .decomposition
+                    .buffer
+                    .get(self.decomposition.buffer_pos)
+                    .map(|c| c.character_and_ccc())
+                {
+                    (character, ccc)
+                } else {
+                    self.decomposition.buffer.clear();
+                    self.decomposition.buffer_pos = 0;
+                    break;
+                };
+                if let Some(composed) = self.compose(starter, character) {
+                    starter = composed;
+                    self.decomposition.buffer_pos += 1;
+                    continue;
+                }
+                let mut most_recent_skipped_ccc = ccc;
+                {
+                    let _ = self
+                        .decomposition
+                        .buffer
+                        .drain(0..self.decomposition.buffer_pos);
+                }
+                self.decomposition.buffer_pos = 0;
+                if most_recent_skipped_ccc == CCC_NOT_REORDERED {
+                    // We failed to compose a starter. Discontiguous match not allowed.
+                    // We leave the starter in `buffer` for `next()` to find.
+                    return Some(starter);
+                }
+                let mut i = 1; // We have skipped one non-starter.
+                while let Some((character, ccc)) = self
+                    .decomposition
+                    .buffer
+                    .get(i)
+                    .map(|c| c.character_and_ccc())
+                {
+                    if ccc == CCC_NOT_REORDERED {
+                        // Discontiguous match not allowed.
+                        return Some(starter);
+                    }
+                    debug_assert!(ccc >= most_recent_skipped_ccc);
+                    if ccc != most_recent_skipped_ccc {
+                        // Using the non-Hangul version as a micro-optimization, since
+                        // we already rejected the case where `second` is a starter
+                        // above, and conjoining jamo are starters.
+                        if let Some(composed) = self.compose_non_hangul(starter, character) {
+                            self.decomposition.buffer.remove(i);
+                            starter = composed;
+                            continue;
+                        }
+                    }
+                    most_recent_skipped_ccc = ccc;
+                    i += 1;
+                }
+                break;
+            }
+
+            debug_assert_eq!(self.decomposition.buffer_pos, 0);
+
+            if !self.decomposition.buffer.is_empty() {
+                return Some(starter);
+            }
+            // Now we need to check if composition with an upcoming starter is possible.
+            #[allow(clippy::unwrap_used)]
+            if self.decomposition.pending.is_some() {
+                // We know that `pending_starter` decomposes to start with a starter.
+                // Otherwise, it would have been moved to `self.decomposition.buffer`
+                // by `self.decomposing_next()`. We do this set lookup here in order
+                // to get an opportunity to go back to the fast track.
+                // Note that this check has to happen _after_ checking that `pending`
+                // holds a character, because this flag isn't defined to be meaningful
+                // when `pending` isn't holding a character.
+                let pending = self.decomposition.pending.as_ref().unwrap();
+                if u32::from(pending.character) < self.composition_passthrough_bound
+                    || !pending.can_combine_backwards()
+                {
+                    // Won't combine backwards anyway.
+                    return Some(starter);
+                }
+                // Consume what we peeked. `unwrap` OK, because we checked `is_some()`
+                // above.
+                undecomposed_starter = self.decomposition.pending.take().unwrap();
+                // The following line is OK, because we're about to loop back
+                // to `self.decomposition.decomposing_next(c);`, which will
+                // restore the between-`next()`-calls invariant of `pending`
+                // before this function returns.
+                attempt_composition = true;
+                continue;
+            }
+            // End of input
+            return Some(starter);
+        }
+    }
+}
+
+macro_rules! composing_normalize_to {
+    ($(#[$meta:meta])*,
+     $normalize_to:ident,
+     $write:path,
+     $slice:ty,
+     $prolog:block,
+     $always_valid_utf:literal,
+     $as_slice:ident,
+     $fast:block,
+     $text:ident,
+     $sink:ident,
+     $composition:ident,
+     $composition_passthrough_bound:ident,
+     $undecomposed_starter:ident,
+     $pending_slice:ident,
+     $len_utf:ident,
+    ) => {
+        $(#[$meta])*
+        pub fn $normalize_to<W: $write + ?Sized>(
+            &self,
+            $text: $slice,
+            $sink: &mut W,
+        ) -> core::fmt::Result {
+            $prolog
+            let mut $composition = self.normalize_iter($text.chars());
+            debug_assert_eq!($composition.decomposition.ignorable_behavior, IgnorableBehavior::Unsupported);
+            for cc in $composition.decomposition.buffer.drain(..) {
+                $sink.write_char(cc.character())?;
+            }
+
+            // Try to get the compiler to hoist the bound to a register.
+            let $composition_passthrough_bound = $composition.composition_passthrough_bound;
+            'outer: loop {
+                debug_assert_eq!($composition.decomposition.buffer_pos, 0);
+                let mut $undecomposed_starter =
+                    if let Some(pending) = $composition.decomposition.pending.take() {
+                        pending
+                    } else {
+                        return Ok(());
+                    };
+                // Allowing indexed slicing, because a failure would be a code bug and
+                // not a data issue.
+                #[allow(clippy::indexing_slicing)]
+                if u32::from($undecomposed_starter.character) < $composition_passthrough_bound ||
+                    $undecomposed_starter.potential_passthrough()
+                {
+                    // We don't know if a `REPLACEMENT_CHARACTER` occurred in the slice or
+                    // was returned in response to an error by the iterator. Assume the
+                    // latter for correctness even though it pessimizes the former.
+                    if $always_valid_utf || $undecomposed_starter.character != REPLACEMENT_CHARACTER {
+                        let $pending_slice = &$text[$text.len() - $composition.decomposition.delegate.$as_slice().len() - $undecomposed_starter.character.$len_utf()..];
+                        // The `$fast` block must either:
+                        // 1. Return due to reaching EOF
+                        // 2. Leave a starter with its trie value in `$undecomposed_starter`
+                        //    and, if there is still more input, leave the next character
+                        //    and its trie value in `$composition.decomposition.pending`.
+                        $fast
+                    }
+                }
+                // Fast track above, full algorithm below
+                let mut starter = $composition
+                    .decomposition
+                    .decomposing_next($undecomposed_starter);
+                'bufferloop: loop {
+                    // We first loop by index to avoid moving the contents of `buffer`, but
+                    // if there's a discontiguous match, we'll start modifying `buffer` instead.
+                    loop {
+                        let (character, ccc) = if let Some((character, ccc)) = $composition
+                            .decomposition
+                            .buffer
+                            .get($composition.decomposition.buffer_pos)
+                            .map(|c| c.character_and_ccc())
+                        {
+                            (character, ccc)
+                        } else {
+                            $composition.decomposition.buffer.clear();
+                            $composition.decomposition.buffer_pos = 0;
+                            break;
+                        };
+                        if let Some(composed) = $composition.compose(starter, character) {
+                            starter = composed;
+                            $composition.decomposition.buffer_pos += 1;
+                            continue;
+                        }
+                        let mut most_recent_skipped_ccc = ccc;
+                        if most_recent_skipped_ccc == CCC_NOT_REORDERED {
+                            // We failed to compose a starter. Discontiguous match not allowed.
+                            // Write the current `starter` we've been composing, make the unmatched
+                            // starter in the buffer the new `starter` (we know it's been decomposed)
+                            // and process the rest of the buffer with that as the starter.
+                            $sink.write_char(starter)?;
+                            starter = character;
+                            $composition.decomposition.buffer_pos += 1;
+                            continue 'bufferloop;
+                        } else {
+                            {
+                                let _ = $composition
+                                    .decomposition
+                                    .buffer
+                                    .drain(0..$composition.decomposition.buffer_pos);
+                            }
+                            $composition.decomposition.buffer_pos = 0;
+                        }
+                        let mut i = 1; // We have skipped one non-starter.
+                        while let Some((character, ccc)) = $composition
+                            .decomposition
+                            .buffer
+                            .get(i)
+                            .map(|c| c.character_and_ccc())
+                        {
+                            if ccc == CCC_NOT_REORDERED {
+                                // Discontiguous match not allowed.
+                                $sink.write_char(starter)?;
+                                for cc in $composition.decomposition.buffer.drain(..i) {
+                                    $sink.write_char(cc.character())?;
+                                }
+                                starter = character;
+                                {
+                                    let removed = $composition.decomposition.buffer.remove(0);
+                                    debug_assert_eq!(starter, removed.character());
+                                }
+                                debug_assert_eq!($composition.decomposition.buffer_pos, 0);
+                                continue 'bufferloop;
+                            }
+                            debug_assert!(ccc >= most_recent_skipped_ccc);
+                            if ccc != most_recent_skipped_ccc {
+                                // Using the non-Hangul version as a micro-optimization, since
+                                // we already rejected the case where `second` is a starter
+                                // above, and conjoining jamo are starters.
+                                if let Some(composed) =
+                                    $composition.compose_non_hangul(starter, character)
+                                {
+                                    $composition.decomposition.buffer.remove(i);
+                                    starter = composed;
+                                    continue;
+                                }
+                            }
+                            most_recent_skipped_ccc = ccc;
+                            i += 1;
+                        }
+                        break;
+                    }
+                    debug_assert_eq!($composition.decomposition.buffer_pos, 0);
+
+                    if !$composition.decomposition.buffer.is_empty() {
+                        $sink.write_char(starter)?;
+                        for cc in $composition.decomposition.buffer.drain(..) {
+                            $sink.write_char(cc.character())?;
+                        }
+                        // We had non-empty buffer, so can't compose with upcoming.
+                        continue 'outer;
+                    }
+                    // Now we need to check if composition with an upcoming starter is possible.
+                    if $composition.decomposition.pending.is_some() {
+                        // We know that `pending_starter` decomposes to start with a starter.
+                        // Otherwise, it would have been moved to `composition.decomposition.buffer`
+                        // by `composition.decomposing_next()`. We do this set lookup here in order
+                        // to get an opportunity to go back to the fast track.
+                        // Note that this check has to happen _after_ checking that `pending`
+                        // holds a character, because this flag isn't defined to be meaningful
+                        // when `pending` isn't holding a character.
+                        let pending = $composition.decomposition.pending.as_ref().unwrap();
+                        if u32::from(pending.character) < $composition.composition_passthrough_bound
+                            || !pending.can_combine_backwards()
+                        {
+                            // Won't combine backwards anyway.
+                            $sink.write_char(starter)?;
+                            continue 'outer;
+                        }
+                        let pending_starter = $composition.decomposition.pending.take().unwrap();
+                        let decomposed = $composition.decomposition.decomposing_next(pending_starter);
+                        if let Some(composed) = $composition.compose(starter, decomposed) {
+                            starter = composed;
+                        } else {
+                            $sink.write_char(starter)?;
+                            starter = decomposed;
+                        }
+                        continue 'bufferloop;
+                    }
+                    // End of input
+                    $sink.write_char(starter)?;
+                    return Ok(());
+                } // 'bufferloop
+            }
+        }
+    };
+}
+
+macro_rules! decomposing_normalize_to {
+    ($(#[$meta:meta])*,
+     $normalize_to:ident,
+     $write:path,
+     $slice:ty,
+     $prolog:block,
+     $as_slice:ident,
+     $fast:block,
+     $text:ident,
+     $sink:ident,
+     $decomposition:ident,
+     $decomposition_passthrough_bound:ident,
+     $undecomposed_starter:ident,
+     $pending_slice:ident,
+     $outer:lifetime, // loop labels use lifetime tokens
+    ) => {
+        $(#[$meta])*
+        pub fn $normalize_to<W: $write + ?Sized>(
+            &self,
+            $text: $slice,
+            $sink: &mut W,
+        ) -> core::fmt::Result {
+            $prolog
+
+            let mut $decomposition = self.normalize_iter($text.chars());
+            debug_assert_eq!($decomposition.ignorable_behavior, IgnorableBehavior::Unsupported);
+
+            // Try to get the compiler to hoist the bound to a register.
+            let $decomposition_passthrough_bound = $decomposition.decomposition_passthrough_bound;
+            $outer: loop {
+                for cc in $decomposition.buffer.drain(..) {
+                    $sink.write_char(cc.character())?;
+                }
+                debug_assert_eq!($decomposition.buffer_pos, 0);
+                let mut $undecomposed_starter = if let Some(pending) = $decomposition.pending.take() {
+                    pending
+                } else {
+                    return Ok(());
+                };
+                // Allowing indexed slicing, because a failure would be a code bug and
+                // not a data issue.
+                #[allow(clippy::indexing_slicing)]
+                if $undecomposed_starter.starter_and_decomposes_to_self() {
+                    // Don't bother including `undecomposed_starter` in a contiguous buffer
+                    // write: Just write it right away:
+                    $sink.write_char($undecomposed_starter.character)?;
+
+                    let $pending_slice = $decomposition.delegate.$as_slice();
+                    $fast
+                }
+                let starter = $decomposition.decomposing_next($undecomposed_starter);
+                $sink.write_char(starter)?;
+            }
+        }
+    };
+}
+
+macro_rules! normalizer_methods {
+    () => {
+        /// Normalize a string slice into a `Cow<'a, str>`.
+        pub fn normalize<'a>(&self, text: &'a str) -> Cow<'a, str> {
+            let (head, tail) = self.split_normalized(text);
+            if tail.is_empty() {
+                return Cow::Borrowed(head);
+            }
+            let mut ret = String::new();
+            ret.reserve(text.len());
+            ret.push_str(head);
+            let _ = self.normalize_to(tail, &mut ret);
+            Cow::Owned(ret)
+        }
+
+        /// Split a string slice into maximum normalized prefix and unnormalized suffix
+        /// such that the concatenation of the prefix and the normalization of the suffix
+        /// is the normalization of the whole input.
+        pub fn split_normalized<'a>(&self, text: &'a str) -> (&'a str, &'a str) {
+            let up_to = self.is_normalized_up_to(text);
+            text.split_at_checked(up_to).unwrap_or_else(|| {
+                // Internal bug, not even GIGO, never supposed to happen
+                debug_assert!(false);
+                ("", text)
+            })
+        }
+
+        /// Return the index a string slice is normalized up to.
+        fn is_normalized_up_to(&self, text: &str) -> usize {
+            let mut sink = IsNormalizedSinkStr::new(text);
+            let _ = self.normalize_to(text, &mut sink);
+            text.len() - sink.remaining_len()
+        }
+
+        /// Check whether a string slice is normalized.
+        pub fn is_normalized(&self, text: &str) -> bool {
+            self.is_normalized_up_to(text) == text.len()
+        }
+
+        /// Normalize a slice of potentially-invalid UTF-16 into a `Cow<'a, [u16]>`.
+        ///
+        /// Unpaired surrogates are mapped to the REPLACEMENT CHARACTER
+        /// before normalizing.
+        ///
+        /// ✨ *Enabled with the `utf16_iter` Cargo feature.*
+        #[cfg(feature = "utf16_iter")]
+        pub fn normalize_utf16<'a>(&self, text: &'a [u16]) -> Cow<'a, [u16]> {
+            let (head, tail) = self.split_normalized_utf16(text);
+            if tail.is_empty() {
+                return Cow::Borrowed(head);
+            }
+            let mut ret = alloc::vec::Vec::with_capacity(text.len());
+            ret.extend_from_slice(head);
+            let _ = self.normalize_utf16_to(tail, &mut ret);
+            Cow::Owned(ret)
+        }
+
+        /// Split a slice of potentially-invalid UTF-16 into maximum normalized (and valid)
+        /// prefix and unnormalized suffix such that the concatenation of the prefix and the
+        /// normalization of the suffix is the normalization of the whole input.
+        ///
+        /// ✨ *Enabled with the `utf16_iter` Cargo feature.*
+        #[cfg(feature = "utf16_iter")]
+        pub fn split_normalized_utf16<'a>(&self, text: &'a [u16]) -> (&'a [u16], &'a [u16]) {
+            let up_to = self.is_normalized_utf16_up_to(text);
+            text.split_at_checked(up_to).unwrap_or_else(|| {
+                // Internal bug, not even GIGO, never supposed to happen
+                debug_assert!(false);
+                (&[], text)
+            })
+        }
+
+        /// Return the index a slice of potentially-invalid UTF-16 is normalized up to.
+        ///
+        /// ✨ *Enabled with the `utf16_iter` Cargo feature.*
+        #[cfg(feature = "utf16_iter")]
+        fn is_normalized_utf16_up_to(&self, text: &[u16]) -> usize {
+            let mut sink = IsNormalizedSinkUtf16::new(text);
+            let _ = self.normalize_utf16_to(text, &mut sink);
+            text.len() - sink.remaining_len()
+        }
+
+        /// Checks whether a slice of potentially-invalid UTF-16 is normalized.
+        ///
+        /// Unpaired surrogates are treated as the REPLACEMENT CHARACTER.
+        ///
+        /// ✨ *Enabled with the `utf16_iter` Cargo feature.*
+        #[cfg(feature = "utf16_iter")]
+        pub fn is_normalized_utf16(&self, text: &[u16]) -> bool {
+            self.is_normalized_utf16_up_to(text) == text.len()
+        }
+
+        /// Normalize a slice of potentially-invalid UTF-8 into a `Cow<'a, str>`.
+        ///
+        /// Ill-formed byte sequences are mapped to the REPLACEMENT CHARACTER
+        /// according to the WHATWG Encoding Standard.
+        ///
+        /// ✨ *Enabled with the `utf8_iter` Cargo feature.*
+        #[cfg(feature = "utf8_iter")]
+        pub fn normalize_utf8<'a>(&self, text: &'a [u8]) -> Cow<'a, str> {
+            let (head, tail) = self.split_normalized_utf8(text);
+            if tail.is_empty() {
+                return Cow::Borrowed(head);
+            }
+            let mut ret = String::new();
+            ret.reserve(text.len());
+            ret.push_str(head);
+            let _ = self.normalize_utf8_to(tail, &mut ret);
+            Cow::Owned(ret)
+        }
+
+        /// Split a slice of potentially-invalid UTF-8 into maximum normalized (and valid)
+        /// prefix and unnormalized suffix such that the concatenation of the prefix and the
+        /// normalization of the suffix is the normalization of the whole input.
+        ///
+        /// ✨ *Enabled with the `utf8_iter` Cargo feature.*
+        #[cfg(feature = "utf8_iter")]
+        pub fn split_normalized_utf8<'a>(&self, text: &'a [u8]) -> (&'a str, &'a [u8]) {
+            let up_to = self.is_normalized_utf8_up_to(text);
+            let (head, tail) = text.split_at_checked(up_to).unwrap_or_else(|| {
+                // Internal bug, not even GIGO, never supposed to happen
+                debug_assert!(false);
+                (&[], text)
+            });
+            // SAFETY: The normalization check also checks for
+            // UTF-8 well-formedness.
+            (unsafe { core::str::from_utf8_unchecked(head) }, tail)
+        }
+
+        /// Return the index a slice of potentially-invalid UTF-8 is normalized up to
+        ///
+        /// ✨ *Enabled with the `utf8_iter` Cargo feature.*
+        #[cfg(feature = "utf8_iter")]
+        fn is_normalized_utf8_up_to(&self, text: &[u8]) -> usize {
+            let mut sink = IsNormalizedSinkUtf8::new(text);
+            let _ = self.normalize_utf8_to(text, &mut sink);
+            text.len() - sink.remaining_len()
+        }
+
+        /// Check if a slice of potentially-invalid UTF-8 is normalized.
+        ///
+        /// Ill-formed byte sequences are mapped to the REPLACEMENT CHARACTER
+        /// according to the WHATWG Encoding Standard before checking.
+        ///
+        /// ✨ *Enabled with the `utf8_iter` Cargo feature.*
+        #[cfg(feature = "utf8_iter")]
+        pub fn is_normalized_utf8(&self, text: &[u8]) -> bool {
+            self.is_normalized_utf8_up_to(text) == text.len()
+        }
+    };
+}
+
+/// Borrowed version of a normalizer for performing decomposing normalization.
+#[derive(Debug)]
+pub struct DecomposingNormalizerBorrowed<'a> {
+    decompositions: &'a DecompositionData<'a>,
+    tables: &'a DecompositionTables<'a>,
+    supplementary_tables: Option<&'a DecompositionTables<'a>>,
+    decomposition_passthrough_bound: u8, // never above 0xC0
+    composition_passthrough_bound: u16,  // never above 0x0300
+}
+
+impl DecomposingNormalizerBorrowed<'static> {
+    /// Cheaply converts a [`DecomposingNormalizerBorrowed<'static>`] into a [`DecomposingNormalizer`].
+    ///
+    /// Note: Due to branching and indirection, using [`DecomposingNormalizer`] might inhibit some
+    /// compile-time optimizations that are possible with [`DecomposingNormalizerBorrowed`].
+    pub const fn static_to_owned(self) -> DecomposingNormalizer {
+        DecomposingNormalizer {
+            decompositions: DataPayload::from_static_ref(self.decompositions),
+            tables: DataPayload::from_static_ref(self.tables),
+            supplementary_tables: if let Some(s) = self.supplementary_tables {
+                // `map` not available in const context
+                Some(DataPayload::from_static_ref(s))
+            } else {
+                None
+            },
+            decomposition_passthrough_bound: self.decomposition_passthrough_bound,
+            composition_passthrough_bound: self.composition_passthrough_bound,
+        }
+    }
+
+    /// NFD constructor using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new_nfd() -> Self {
+        const _: () = assert!(
+            crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1
+                .scalars16
+                .const_len()
+                + crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1
+                    .scalars24
+                    .const_len()
+                <= 0xFFF,
+            "future extension"
+        );
+
+        DecomposingNormalizerBorrowed {
+            decompositions: crate::provider::Baked::SINGLETON_NORMALIZER_NFD_DATA_V1,
+            tables: crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1,
+            supplementary_tables: None,
+            decomposition_passthrough_bound: 0xC0,
+            composition_passthrough_bound: 0x0300,
+        }
+    }
+
+    /// NFKD constructor using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new_nfkd() -> Self {
+        const _: () = assert!(
+            crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1
+                .scalars16
+                .const_len()
+                + crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1
+                    .scalars24
+                    .const_len()
+                + crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_TABLES_V1
+                    .scalars16
+                    .const_len()
+                + crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_TABLES_V1
+                    .scalars24
+                    .const_len()
+                <= 0xFFF,
+            "future extension"
+        );
+
+        const _: () = assert!(
+            crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_DATA_V1.passthrough_cap <= 0x0300,
+            "invalid"
+        );
+
+        let decomposition_capped =
+            if crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_DATA_V1.passthrough_cap < 0xC0 {
+                crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_DATA_V1.passthrough_cap
+            } else {
+                0xC0
+            };
+        let composition_capped =
+            if crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_DATA_V1.passthrough_cap < 0x0300 {
+                crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_DATA_V1.passthrough_cap
+            } else {
+                0x0300
+            };
+
+        DecomposingNormalizerBorrowed {
+            decompositions: crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_DATA_V1,
+            tables: crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1,
+            supplementary_tables: Some(crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_TABLES_V1),
+            decomposition_passthrough_bound: decomposition_capped as u8,
+            composition_passthrough_bound: composition_capped,
+        }
+    }
+
+    #[cfg(feature = "compiled_data")]
+    pub(crate) const fn new_uts46_decomposed() -> Self {
+        const _: () = assert!(
+            crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1
+                .scalars16
+                .const_len()
+                + crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1
+                    .scalars24
+                    .const_len()
+                + crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_TABLES_V1
+                    .scalars16
+                    .const_len()
+                + crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_TABLES_V1
+                    .scalars24
+                    .const_len()
+                <= 0xFFF,
+            "future extension"
+        );
+
+        const _: () = assert!(
+            crate::provider::Baked::SINGLETON_NORMALIZER_UTS46_DATA_V1.passthrough_cap <= 0x0300,
+            "invalid"
+        );
+
+        let decomposition_capped =
+            if crate::provider::Baked::SINGLETON_NORMALIZER_UTS46_DATA_V1.passthrough_cap < 0xC0 {
+                crate::provider::Baked::SINGLETON_NORMALIZER_UTS46_DATA_V1.passthrough_cap
+            } else {
+                0xC0
+            };
+        let composition_capped = if crate::provider::Baked::SINGLETON_NORMALIZER_UTS46_DATA_V1
+            .passthrough_cap
+            < 0x0300
+        {
+            crate::provider::Baked::SINGLETON_NORMALIZER_UTS46_DATA_V1.passthrough_cap
+        } else {
+            0x0300
+        };
+
+        DecomposingNormalizerBorrowed {
+            decompositions: crate::provider::Baked::SINGLETON_NORMALIZER_UTS46_DATA_V1,
+            tables: crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1,
+            supplementary_tables: Some(crate::provider::Baked::SINGLETON_NORMALIZER_NFKD_TABLES_V1),
+            decomposition_passthrough_bound: decomposition_capped as u8,
+            composition_passthrough_bound: composition_capped,
+        }
+    }
+}
+
+impl<'data> DecomposingNormalizerBorrowed<'data> {
+    /// Wraps a delegate iterator into a decomposing iterator
+    /// adapter by using the data already held by this normalizer.
+    pub fn normalize_iter<I: Iterator<Item = char>>(&self, iter: I) -> Decomposition<'data, I> {
+        Decomposition::new_with_supplements(
+            iter,
+            self.decompositions,
+            self.tables,
+            self.supplementary_tables,
+            self.decomposition_passthrough_bound,
+            IgnorableBehavior::Unsupported,
+        )
+    }
+
+    normalizer_methods!();
+
+    decomposing_normalize_to!(
+        /// Normalize a string slice into a `Write` sink.
+        ,
+        normalize_to,
+        core::fmt::Write,
+        &str,
+        {
+        },
+        as_str,
+        {
+            let decomposition_passthrough_byte_bound = if decomposition_passthrough_bound == 0xC0 {
+                0xC3u8
+            } else {
+                decomposition_passthrough_bound.min(0x80) as u8
+            };
+            // The attribute belongs on an inner statement, but Rust doesn't allow it there.
+            #[allow(clippy::unwrap_used)]
+            'fast: loop {
+                let mut code_unit_iter = decomposition.delegate.as_str().as_bytes().iter();
+                'fastest: loop {
+                    if let Some(&upcoming_byte) = code_unit_iter.next() {
+                        if upcoming_byte < decomposition_passthrough_byte_bound {
+                            // Fast-track succeeded!
+                            continue 'fastest;
+                        }
+                        decomposition.delegate = pending_slice[pending_slice.len() - code_unit_iter.as_slice().len() - 1..].chars();
+                        break 'fastest;
+                    }
+                    // End of stream
+                    sink.write_str(pending_slice)?;
+                    return Ok(());
+                }
+
+                // `unwrap()` OK, because the slice is valid UTF-8 and we know there
+                // is an upcoming byte.
+                let upcoming = decomposition.delegate.next().unwrap();
+                let upcoming_with_trie_value = decomposition.attach_trie_value(upcoming);
+                if upcoming_with_trie_value.starter_and_decomposes_to_self() {
+                    continue 'fast;
+                }
+                let consumed_so_far_slice = &pending_slice[..pending_slice.len()
+                    - decomposition.delegate.as_str().len()
+                    - upcoming.len_utf8()];
+                sink.write_str(consumed_so_far_slice)?;
+
+                // Now let's figure out if we got a starter or a non-starter.
+                if decomposition_starts_with_non_starter(
+                    upcoming_with_trie_value.trie_val,
+                ) {
+                    // Let this trie value to be reprocessed in case it is
+                    // one of the rare decomposing ones.
+                    decomposition.pending = Some(upcoming_with_trie_value);
+                    decomposition.gather_and_sort_combining(0);
+                    continue 'outer;
+                }
+                undecomposed_starter = upcoming_with_trie_value;
+                debug_assert!(decomposition.pending.is_none());
+                break 'fast;
+            }
+        },
+        text,
+        sink,
+        decomposition,
+        decomposition_passthrough_bound,
+        undecomposed_starter,
+        pending_slice,
+        'outer,
+    );
+
+    decomposing_normalize_to!(
+        /// Normalize a slice of potentially-invalid UTF-8 into a `Write` sink.
+        ///
+        /// Ill-formed byte sequences are mapped to the REPLACEMENT CHARACTER
+        /// according to the WHATWG Encoding Standard.
+        ///
+        /// ✨ *Enabled with the `utf8_iter` Cargo feature.*
+        #[cfg(feature = "utf8_iter")]
+        ,
+        normalize_utf8_to,
+        core::fmt::Write,
+        &[u8],
+        {
+        },
+        as_slice,
+        {
+            let decomposition_passthrough_byte_bound = decomposition_passthrough_bound.min(0x80) as u8;
+            // The attribute belongs on an inner statement, but Rust doesn't allow it there.
+            #[allow(clippy::unwrap_used)]
+            'fast: loop {
+                let mut code_unit_iter = decomposition.delegate.as_slice().iter();
+                'fastest: loop {
+                    if let Some(&upcoming_byte) = code_unit_iter.next() {
+                        if upcoming_byte < decomposition_passthrough_byte_bound {
+                            // Fast-track succeeded!
+                            continue 'fastest;
+                        }
+                        break 'fastest;
+                    }
+                    // End of stream
+                    sink.write_str(unsafe { core::str::from_utf8_unchecked(pending_slice) })?;
+                    return Ok(());
+                }
+                decomposition.delegate = pending_slice[pending_slice.len() - code_unit_iter.as_slice().len() - 1..].chars();
+
+                // `unwrap()` OK, because the slice is valid UTF-8 and we know there
+                // is an upcoming byte.
+                let upcoming = decomposition.delegate.next().unwrap();
+                let upcoming_with_trie_value = decomposition.attach_trie_value(upcoming);
+                if upcoming_with_trie_value.starter_and_decomposes_to_self_except_replacement() {
+                    // Note: The trie value of the REPLACEMENT CHARACTER is
+                    // intentionally formatted to fail the
+                    // `starter_and_decomposes_to_self` test even though it
+                    // really is a starter that decomposes to self. This
+                    // Allows moving the branch on REPLACEMENT CHARACTER
+                    // below this `continue`.
+                    continue 'fast;
+                }
+
+                // TODO: Annotate as unlikely.
+                if upcoming == REPLACEMENT_CHARACTER {
+                    // We might have an error, so fall out of the fast path.
+
+                    // Since the U+FFFD might signify an error, we can't
+                    // assume `upcoming.len_utf8()` for the backoff length.
+                    let mut consumed_so_far = pending_slice[..pending_slice.len() - decomposition.delegate.as_slice().len()].chars();
+                    let back = consumed_so_far.next_back();
+                    debug_assert_eq!(back, Some(REPLACEMENT_CHARACTER));
+                    let consumed_so_far_slice = consumed_so_far.as_slice();
+                    sink.write_str(unsafe { core::str::from_utf8_unchecked(consumed_so_far_slice) } )?;
+
+                    // We could call `gather_and_sort_combining` here and
+                    // `continue 'outer`, but this should be better for code
+                    // size.
+                    undecomposed_starter = upcoming_with_trie_value;
+                    debug_assert!(decomposition.pending.is_none());
+                    break 'fast;
+                }
+
+                let consumed_so_far_slice = &pending_slice[..pending_slice.len()
+                    - decomposition.delegate.as_slice().len()
+                    - upcoming.len_utf8()];
+                sink.write_str(unsafe { core::str::from_utf8_unchecked(consumed_so_far_slice) } )?;
+
+                // Now let's figure out if we got a starter or a non-starter.
+                if decomposition_starts_with_non_starter(
+                    upcoming_with_trie_value.trie_val,
+                ) {
+                    // Let this trie value to be reprocessed in case it is
+                    // one of the rare decomposing ones.
+                    decomposition.pending = Some(upcoming_with_trie_value);
+                    decomposition.gather_and_sort_combining(0);
+                    continue 'outer;
+                }
+                undecomposed_starter = upcoming_with_trie_value;
+                debug_assert!(decomposition.pending.is_none());
+                break 'fast;
+            }
+        },
+        text,
+        sink,
+        decomposition,
+        decomposition_passthrough_bound,
+        undecomposed_starter,
+        pending_slice,
+        'outer,
+    );
+
+    decomposing_normalize_to!(
+        /// Normalize a slice of potentially-invalid UTF-16 into a `Write16` sink.
+        ///
+        /// Unpaired surrogates are mapped to the REPLACEMENT CHARACTER
+        /// before normalizing.
+        ///
+        /// ✨ *Enabled with the `utf16_iter` Cargo feature.*
+        #[cfg(feature = "utf16_iter")]
+        ,
+        normalize_utf16_to,
+        write16::Write16,
+        &[u16],
+        {
+            sink.size_hint(text.len())?;
+        },
+        as_slice,
+        {
+            let mut code_unit_iter = decomposition.delegate.as_slice().iter();
+            'fast: loop {
+                if let Some(&upcoming_code_unit) = code_unit_iter.next() {
+                    let mut upcoming32 = u32::from(upcoming_code_unit);
+                    if upcoming32 < decomposition_passthrough_bound {
+                        continue 'fast;
+                    }
+                    // We might be doing a trie lookup by surrogate. Surrogates get
+                    // a decomposition to U+FFFD.
+                    let mut trie_value = decomposition.trie.get32(upcoming32);
+                    if starter_and_decomposes_to_self_impl(trie_value) {
+                        continue 'fast;
+                    }
+                    // We might now be looking at a surrogate.
+                    // The loop is only broken out of as goto forward
+                    #[allow(clippy::never_loop)]
+                    'surrogateloop: loop {
+                        let surrogate_base = upcoming32.wrapping_sub(0xD800);
+                        if surrogate_base > (0xDFFF - 0xD800) {
+                            // Not surrogate
+                            break 'surrogateloop;
+                        }
+                        if surrogate_base <= (0xDBFF - 0xD800) {
+                            let iter_backup = code_unit_iter.clone();
+                            if let Some(&low) = code_unit_iter.next() {
+                                if in_inclusive_range16(low, 0xDC00, 0xDFFF) {
+                                    upcoming32 = (upcoming32 << 10) + u32::from(low)
+                                        - (((0xD800u32 << 10) - 0x10000u32) + 0xDC00u32);
+                                    // Successfully-paired surrogate. Read from the trie again.
+                                    trie_value = decomposition.trie.get32(upcoming32);
+                                    if starter_and_decomposes_to_self_impl(trie_value) {
+                                        continue 'fast;
+                                    }
+                                    break 'surrogateloop;
+                                } else {
+                                    code_unit_iter = iter_backup;
+                                }
+                            }
+                        }
+                        // unpaired surrogate
+                        upcoming32 = 0xFFFD; // Safe value for `char::from_u32_unchecked` and matches later potential error check.
+                        // trie_value already holds a decomposition to U+FFFD.
+                        break 'surrogateloop;
+                    }
+
+                    let upcoming = unsafe { char::from_u32_unchecked(upcoming32) };
+                    let upcoming_with_trie_value = CharacterAndTrieValue::new(upcoming, trie_value);
+
+                    let consumed_so_far_slice = &pending_slice[..pending_slice.len()
+                        - code_unit_iter.as_slice().len()
+                        - upcoming.len_utf16()];
+                    sink.write_slice(consumed_so_far_slice)?;
+
+                    // Now let's figure out if we got a starter or a non-starter.
+                    if decomposition_starts_with_non_starter(
+                        upcoming_with_trie_value.trie_val,
+                    ) {
+                        // Sync with main iterator
+                        decomposition.delegate = code_unit_iter.as_slice().chars();
+                        // Let this trie value to be reprocessed in case it is
+                        // one of the rare decomposing ones.
+                        decomposition.pending = Some(upcoming_with_trie_value);
+                        decomposition.gather_and_sort_combining(0);
+                        continue 'outer;
+                    }
+                    undecomposed_starter = upcoming_with_trie_value;
+                    debug_assert!(decomposition.pending.is_none());
+                    break 'fast;
+                }
+                // End of stream
+                sink.write_slice(pending_slice)?;
+                return Ok(());
+            }
+            // Sync the main iterator
+            decomposition.delegate = code_unit_iter.as_slice().chars();
+        },
+        text,
+        sink,
+        decomposition,
+        decomposition_passthrough_bound,
+        undecomposed_starter,
+        pending_slice,
+        'outer,
+    );
+}
+
+/// A normalizer for performing decomposing normalization.
+#[derive(Debug)]
+pub struct DecomposingNormalizer {
+    decompositions: DataPayload<NormalizerNfdDataV1>,
+    tables: DataPayload<NormalizerNfdTablesV1>,
+    supplementary_tables: Option<DataPayload<NormalizerNfkdTablesV1>>,
+    decomposition_passthrough_bound: u8, // never above 0xC0
+    composition_passthrough_bound: u16,  // never above 0x0300
+}
+
+impl DecomposingNormalizer {
+    /// Constructs a borrowed version of this type for more efficient querying.
+    pub fn as_borrowed(&self) -> DecomposingNormalizerBorrowed {
+        DecomposingNormalizerBorrowed {
+            decompositions: self.decompositions.get(),
+            tables: self.tables.get(),
+            supplementary_tables: self.supplementary_tables.as_ref().map(|s| s.get()),
+            decomposition_passthrough_bound: self.decomposition_passthrough_bound,
+            composition_passthrough_bound: self.composition_passthrough_bound,
+        }
+    }
+
+    /// NFD constructor using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new_nfd() -> DecomposingNormalizerBorrowed<'static> {
+        DecomposingNormalizerBorrowed::new_nfd()
+    }
+
+    icu_provider::gen_buffer_data_constructors!(
+        () -> error: DataError,
+        functions: [
+            new_nfd: skip,
+            try_new_nfd_with_buffer_provider,
+            try_new_nfd_unstable,
+            Self,
+        ]
+    );
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_nfd)]
+    pub fn try_new_nfd_unstable<D>(provider: &D) -> Result<Self, DataError>
+    where
+        D: DataProvider<NormalizerNfdDataV1> + DataProvider<NormalizerNfdTablesV1> + ?Sized,
+    {
+        let decompositions: DataPayload<NormalizerNfdDataV1> =
+            provider.load(Default::default())?.payload;
+        let tables: DataPayload<NormalizerNfdTablesV1> = provider.load(Default::default())?.payload;
+
+        if tables.get().scalars16.len() + tables.get().scalars24.len() > 0xFFF {
+            // The data is from a future where there exists a normalization flavor whose
+            // complex decompositions take more than 0xFFF but fewer than 0x1FFF code points
+            // of space. If a good use case from such a decomposition flavor arises, we can
+            // dynamically change the bit masks so that the length mask becomes 0x1FFF instead
+            // of 0xFFF and the all-non-starters mask becomes 0 instead of 0x1000. However,
+            // since for now the masks are hard-coded, error out.
+            return Err(
+                DataError::custom("future extension").with_marker(NormalizerNfdTablesV1::INFO)
+            );
+        }
+
+        let cap = decompositions.get().passthrough_cap;
+        if cap > 0x0300 {
+            return Err(DataError::custom("invalid").with_marker(NormalizerNfdDataV1::INFO));
+        }
+        let decomposition_capped = cap.min(0xC0);
+        let composition_capped = cap.min(0x0300);
+
+        Ok(DecomposingNormalizer {
+            decompositions,
+            tables,
+            supplementary_tables: None,
+            decomposition_passthrough_bound: decomposition_capped as u8,
+            composition_passthrough_bound: composition_capped,
+        })
+    }
+
+    icu_provider::gen_buffer_data_constructors!(
+        () -> error: DataError,
+        functions: [
+            new_nfkd: skip,
+            try_new_nfkd_with_buffer_provider,
+            try_new_nfkd_unstable,
+            Self,
+        ]
+    );
+
+    /// NFKD constructor using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new_nfkd() -> DecomposingNormalizerBorrowed<'static> {
+        DecomposingNormalizerBorrowed::new_nfkd()
+    }
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_nfkd)]
+    pub fn try_new_nfkd_unstable<D>(provider: &D) -> Result<Self, DataError>
+    where
+        D: DataProvider<NormalizerNfkdDataV1>
+            + DataProvider<NormalizerNfdTablesV1>
+            + DataProvider<NormalizerNfkdTablesV1>
+            + ?Sized,
+    {
+        let decompositions: DataPayload<NormalizerNfkdDataV1> =
+            provider.load(Default::default())?.payload;
+        let tables: DataPayload<NormalizerNfdTablesV1> = provider.load(Default::default())?.payload;
+        let supplementary_tables: DataPayload<NormalizerNfkdTablesV1> =
+            provider.load(Default::default())?.payload;
+
+        if tables.get().scalars16.len()
+            + tables.get().scalars24.len()
+            + supplementary_tables.get().scalars16.len()
+            + supplementary_tables.get().scalars24.len()
+            > 0xFFF
+        {
+            // The data is from a future where there exists a normalization flavor whose
+            // complex decompositions take more than 0xFFF but fewer than 0x1FFF code points
+            // of space. If a good use case from such a decomposition flavor arises, we can
+            // dynamically change the bit masks so that the length mask becomes 0x1FFF instead
+            // of 0xFFF and the all-non-starters mask becomes 0 instead of 0x1000. However,
+            // since for now the masks are hard-coded, error out.
+            return Err(
+                DataError::custom("future extension").with_marker(NormalizerNfdTablesV1::INFO)
+            );
+        }
+
+        let cap = decompositions.get().passthrough_cap;
+        if cap > 0x0300 {
+            return Err(DataError::custom("invalid").with_marker(NormalizerNfkdDataV1::INFO));
+        }
+        let decomposition_capped = cap.min(0xC0);
+        let composition_capped = cap.min(0x0300);
+
+        Ok(DecomposingNormalizer {
+            decompositions: decompositions.cast(),
+            tables,
+            supplementary_tables: Some(supplementary_tables),
+            decomposition_passthrough_bound: decomposition_capped as u8,
+            composition_passthrough_bound: composition_capped,
+        })
+    }
+
+    /// UTS 46 decomposed constructor (testing only)
+    ///
+    /// This is a special building block normalization for IDNA. It is the decomposed counterpart of
+    /// ICU4C's UTS 46 normalization with two exceptions: characters that UTS 46 disallows and
+    /// ICU4C maps to U+FFFD and characters that UTS 46 maps to the empty string normalize as in
+    /// NFD in this normalization. In both cases, the previous UTS 46 processing before using
+    /// normalization is expected to deal with these characters. Making the disallowed characters
+    /// behave like this is beneficial to data size, and this normalizer implementation cannot
+    /// deal with a character normalizing to the empty string, which doesn't happen in NFD or
+    /// NFKD as of Unicode 14.
+    ///
+    /// Warning: In this normalization, U+0345 COMBINING GREEK YPOGEGRAMMENI exhibits a behavior
+    /// that no character in Unicode exhibits in NFD, NFKD, NFC, or NFKC: Case folding turns
+    /// U+0345 from a reordered character into a non-reordered character before reordering happens.
+    /// Therefore, the output of this normalization may differ for different inputs that are
+    /// canonically equivalent with each other if they differ by how U+0345 is ordered relative
+    /// to other reorderable characters.
+    pub(crate) fn try_new_uts46_decomposed_unstable<D>(provider: &D) -> Result<Self, DataError>
+    where
+        D: DataProvider<NormalizerUts46DataV1>
+            + DataProvider<NormalizerNfdTablesV1>
+            + DataProvider<NormalizerNfkdTablesV1>
+            // UTS 46 tables merged into CompatibilityDecompositionTablesV1
+            + ?Sized,
+    {
+        let decompositions: DataPayload<NormalizerUts46DataV1> =
+            provider.load(Default::default())?.payload;
+        let tables: DataPayload<NormalizerNfdTablesV1> = provider.load(Default::default())?.payload;
+        let supplementary_tables: DataPayload<NormalizerNfkdTablesV1> =
+            provider.load(Default::default())?.payload;
+
+        if tables.get().scalars16.len()
+            + tables.get().scalars24.len()
+            + supplementary_tables.get().scalars16.len()
+            + supplementary_tables.get().scalars24.len()
+            > 0xFFF
+        {
+            // The data is from a future where there exists a normalization flavor whose
+            // complex decompositions take more than 0xFFF but fewer than 0x1FFF code points
+            // of space. If a good use case from such a decomposition flavor arises, we can
+            // dynamically change the bit masks so that the length mask becomes 0x1FFF instead
+            // of 0xFFF and the all-non-starters mask becomes 0 instead of 0x1000. However,
+            // since for now the masks are hard-coded, error out.
+            return Err(
+                DataError::custom("future extension").with_marker(NormalizerNfdTablesV1::INFO)
+            );
+        }
+
+        let cap = decompositions.get().passthrough_cap;
+        if cap > 0x0300 {
+            return Err(DataError::custom("invalid").with_marker(NormalizerUts46DataV1::INFO));
+        }
+        let decomposition_capped = cap.min(0xC0);
+        let composition_capped = cap.min(0x0300);
+
+        Ok(DecomposingNormalizer {
+            decompositions: decompositions.cast(),
+            tables,
+            supplementary_tables: Some(supplementary_tables),
+            decomposition_passthrough_bound: decomposition_capped as u8,
+            composition_passthrough_bound: composition_capped,
+        })
+    }
+}
+
+/// Borrowed version of a normalizer for performing composing normalization.
+#[derive(Debug)]
+pub struct ComposingNormalizerBorrowed<'a> {
+    decomposing_normalizer: DecomposingNormalizerBorrowed<'a>,
+    canonical_compositions: &'a CanonicalCompositions<'a>,
+}
+
+impl ComposingNormalizerBorrowed<'static> {
+    /// Cheaply converts a [`ComposingNormalizerBorrowed<'static>`] into a [`ComposingNormalizer`].
+    ///
+    /// Note: Due to branching and indirection, using [`ComposingNormalizer`] might inhibit some
+    /// compile-time optimizations that are possible with [`ComposingNormalizerBorrowed`].
+    pub const fn static_to_owned(self) -> ComposingNormalizer {
+        ComposingNormalizer {
+            decomposing_normalizer: self.decomposing_normalizer.static_to_owned(),
+            canonical_compositions: DataPayload::from_static_ref(self.canonical_compositions),
+        }
+    }
+
+    /// NFC constructor using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new_nfc() -> Self {
+        ComposingNormalizerBorrowed {
+            decomposing_normalizer: DecomposingNormalizerBorrowed::new_nfd(),
+            canonical_compositions: crate::provider::Baked::SINGLETON_NORMALIZER_NFC_V1,
+        }
+    }
+
+    /// NFKC constructor using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new_nfkc() -> Self {
+        ComposingNormalizerBorrowed {
+            decomposing_normalizer: DecomposingNormalizerBorrowed::new_nfkd(),
+            canonical_compositions: crate::provider::Baked::SINGLETON_NORMALIZER_NFC_V1,
+        }
+    }
+
+    /// This is a special building block normalization for IDNA that implements parts of the Map
+    /// step and the following Normalize step.
+    ///
+    /// Warning: In this normalization, U+0345 COMBINING GREEK YPOGEGRAMMENI exhibits a behavior
+    /// that no character in Unicode exhibits in NFD, NFKD, NFC, or NFKC: Case folding turns
+    /// U+0345 from a reordered character into a non-reordered character before reordering happens.
+    /// Therefore, the output of this normalization may differ for different inputs that are
+    /// canonically equivalents with each other if they differ by how U+0345 is ordered relative
+    /// to other reorderable characters.
+    #[cfg(feature = "compiled_data")]
+    pub(crate) const fn new_uts46() -> Self {
+        ComposingNormalizerBorrowed {
+            decomposing_normalizer: DecomposingNormalizerBorrowed::new_uts46_decomposed(),
+            canonical_compositions: crate::provider::Baked::SINGLETON_NORMALIZER_NFC_V1,
+        }
+    }
+}
+
+impl<'data> ComposingNormalizerBorrowed<'data> {
+    /// Wraps a delegate iterator into a composing iterator
+    /// adapter by using the data already held by this normalizer.
+    pub fn normalize_iter<I: Iterator<Item = char>>(&self, iter: I) -> Composition<'data, I> {
+        self.normalize_iter_private(iter, IgnorableBehavior::Unsupported)
+    }
+
+    fn normalize_iter_private<I: Iterator<Item = char>>(
+        &self,
+        iter: I,
+        ignorable_behavior: IgnorableBehavior,
+    ) -> Composition<'data, I> {
+        Composition::new(
+            Decomposition::new_with_supplements(
+                iter,
+                self.decomposing_normalizer.decompositions,
+                self.decomposing_normalizer.tables,
+                self.decomposing_normalizer.supplementary_tables,
+                self.decomposing_normalizer.decomposition_passthrough_bound,
+                ignorable_behavior,
+            ),
+            self.canonical_compositions.canonical_compositions.clone(),
+            self.decomposing_normalizer.composition_passthrough_bound,
+        )
+    }
+
+    normalizer_methods!();
+
+    composing_normalize_to!(
+        /// Normalize a string slice into a `Write` sink.
+        ,
+        normalize_to,
+        core::fmt::Write,
+        &str,
+        {},
+        true,
+        as_str,
+        {
+            // Let's hope LICM hoists this outside `'outer`.
+            let composition_passthrough_byte_bound = if composition_passthrough_bound == 0x300 {
+                0xCCu8
+            } else {
+                // We can make this fancy if a normalization other than NFC where looking at
+                // non-ASCII lead bytes is worthwhile is ever introduced.
+                composition_passthrough_bound.min(0x80) as u8
+            };
+            // Attributes have to be on blocks, so hoisting all the way here.
+            #[allow(clippy::unwrap_used)]
+            'fast: loop {
+                let mut code_unit_iter = composition.decomposition.delegate.as_str().as_bytes().iter();
+                'fastest: loop {
+                    if let Some(&upcoming_byte) = code_unit_iter.next() {
+                        if upcoming_byte < composition_passthrough_byte_bound {
+                            // Fast-track succeeded!
+                            continue 'fastest;
+                        }
+                        composition.decomposition.delegate = pending_slice[pending_slice.len() - code_unit_iter.as_slice().len() - 1..].chars();
+                        break 'fastest;
+                    }
+                    // End of stream
+                    sink.write_str(pending_slice)?;
+                    return Ok(());
+                }
+                // `unwrap()` OK, because the slice is valid UTF-8 and we know there
+                // is an upcoming byte.
+                let upcoming = composition.decomposition.delegate.next().unwrap();
+                let upcoming_with_trie_value = composition.decomposition.attach_trie_value(upcoming);
+                if upcoming_with_trie_value.potential_passthrough_and_cannot_combine_backwards() {
+                    // Can't combine backwards, hence a plain (non-backwards-combining)
+                    // starter albeit past `composition_passthrough_bound`
+
+                    // Fast-track succeeded!
+                    continue 'fast;
+                }
+                // We need to fall off the fast path.
+                composition.decomposition.pending = Some(upcoming_with_trie_value);
+
+                // slicing and unwrap OK, because we've just evidently read enough previously.
+                let mut consumed_so_far = pending_slice[..pending_slice.len() - composition.decomposition.delegate.as_str().len() - upcoming.len_utf8()].chars();
+                // `unwrap` OK, because we've previously manage to read the previous character
+                undecomposed_starter = composition.decomposition.attach_trie_value(consumed_so_far.next_back().unwrap());
+                let consumed_so_far_slice = consumed_so_far.as_str();
+                sink.write_str(consumed_so_far_slice)?;
+                break 'fast;
+            }
+        },
+        text,
+        sink,
+        composition,
+        composition_passthrough_bound,
+        undecomposed_starter,
+        pending_slice,
+        len_utf8,
+    );
+
+    composing_normalize_to!(
+        /// Normalize a slice of potentially-invalid UTF-8 into a `Write` sink.
+        ///
+        /// Ill-formed byte sequences are mapped to the REPLACEMENT CHARACTER
+        /// according to the WHATWG Encoding Standard.
+        ///
+        /// ✨ *Enabled with the `utf8_iter` Cargo feature.*
+        #[cfg(feature = "utf8_iter")]
+        ,
+        normalize_utf8_to,
+        core::fmt::Write,
+        &[u8],
+        {},
+        false,
+        as_slice,
+        {
+            'fast: loop {
+                if let Some(upcoming) = composition.decomposition.delegate.next() {
+                    if u32::from(upcoming) < composition_passthrough_bound {
+                        // Fast-track succeeded!
+                        continue 'fast;
+                    }
+                    // TODO: Be statically aware of fast/small trie.
+                    let upcoming_with_trie_value = composition.decomposition.attach_trie_value(upcoming);
+                    if upcoming_with_trie_value.potential_passthrough_and_cannot_combine_backwards() {
+                        // Note: The trie value of the REPLACEMENT CHARACTER is
+                        // intentionally formatted to fail the
+                        // `potential_passthrough_and_cannot_combine_backwards`
+                        // test even though it really is a starter that decomposes
+                        // to self and cannot combine backwards. This
+                        // Allows moving the branch on REPLACEMENT CHARACTER
+                        // below this `continue`.
+                        continue 'fast;
+                    }
+                    // We need to fall off the fast path.
+
+                    // TODO(#2006): Annotate as unlikely
+                    if upcoming == REPLACEMENT_CHARACTER {
+                        // Can't tell if this is an error or a literal U+FFFD in
+                        // the input. Assuming the former to be sure.
+
+                        // Since the U+FFFD might signify an error, we can't
+                        // assume `upcoming.len_utf8()` for the backoff length.
+                        let mut consumed_so_far = pending_slice[..pending_slice.len() - composition.decomposition.delegate.as_slice().len()].chars();
+                        let back = consumed_so_far.next_back();
+                        debug_assert_eq!(back, Some(REPLACEMENT_CHARACTER));
+                        let consumed_so_far_slice = consumed_so_far.as_slice();
+                        sink.write_str(unsafe { core::str::from_utf8_unchecked(consumed_so_far_slice) })?;
+                        undecomposed_starter = CharacterAndTrieValue::new(REPLACEMENT_CHARACTER, 0);
+                        composition.decomposition.pending = None;
+                        break 'fast;
+                    }
+
+                    composition.decomposition.pending = Some(upcoming_with_trie_value);
+                    // slicing and unwrap OK, because we've just evidently read enough previously.
+                    // `unwrap` OK, because we've previously manage to read the previous character
+                    let mut consumed_so_far = pending_slice[..pending_slice.len() - composition.decomposition.delegate.as_slice().len() - upcoming.len_utf8()].chars();
+                    #[allow(clippy::unwrap_used)]
+                    {
+                        // TODO: If the previous character was below the passthrough bound,
+                        // we really need to read from the trie. Otherwise, we could maintain
+                        // the most-recent trie value. Need to measure what's more expensive:
+                        // Remembering the trie value on each iteration or re-reading the
+                        // last one after the fast-track run.
+                        undecomposed_starter = composition.decomposition.attach_trie_value(consumed_so_far.next_back().unwrap());
+                    }
+                    let consumed_so_far_slice = consumed_so_far.as_slice();
+                    sink.write_str(unsafe { core::str::from_utf8_unchecked(consumed_so_far_slice)})?;
+                    break 'fast;
+                }
+                // End of stream
+                sink.write_str(unsafe { core::str::from_utf8_unchecked(pending_slice) })?;
+                return Ok(());
+            }
+        },
+        text,
+        sink,
+        composition,
+        composition_passthrough_bound,
+        undecomposed_starter,
+        pending_slice,
+        len_utf8,
+    );
+
+    composing_normalize_to!(
+        /// Normalize a slice of potentially-invalid UTF-16 into a `Write16` sink.
+        ///
+        /// Unpaired surrogates are mapped to the REPLACEMENT CHARACTER
+        /// before normalizing.
+        ///
+        /// ✨ *Enabled with the `utf16_iter` Cargo feature.*
+        #[cfg(feature = "utf16_iter")]
+        ,
+        normalize_utf16_to,
+        write16::Write16,
+        &[u16],
+        {
+            sink.size_hint(text.len())?;
+        },
+        false,
+        as_slice,
+        {
+            let mut code_unit_iter = composition.decomposition.delegate.as_slice().iter();
+            let mut upcoming32;
+            // Declaring this up here is useful for getting compile errors about invalid changes
+            // to the code structure below.
+            let mut trie_value;
+            'fast: loop {
+                if let Some(&upcoming_code_unit) = code_unit_iter.next() {
+                    upcoming32 = u32::from(upcoming_code_unit); // may be surrogate
+                    if upcoming32 < composition_passthrough_bound {
+                        // No need for surrogate or U+FFFD check, because
+                        // `composition_passthrough_bound` cannot be higher than
+                        // U+0300.
+                        // Fast-track succeeded!
+                        // At this point, `trie_value` is out of sync with `upcoming32`.
+                        // However, we either 1) reach the end of `code_unit_iter`, at
+                        // which point nothing reads `trie_value` anymore or we
+                        // execute the line immediately below this loop.
+                        continue 'fast;
+                    }
+                    // We might be doing a trie lookup by surrogate. Surrogates get
+                    // a decomposition to U+FFFD.
+                    trie_value = composition.decomposition.trie.get32(upcoming32);
+                    if potential_passthrough_and_cannot_combine_backwards_impl(trie_value) {
+                        // Can't combine backwards, hence a plain (non-backwards-combining)
+                        // starter albeit past `composition_passthrough_bound`
+
+                        // Fast-track succeeded!
+                        continue 'fast;
+                    }
+
+                    // We might now be looking at a surrogate.
+                    // The loop is only broken out of as goto forward
+                    #[allow(clippy::never_loop)]
+                    'surrogateloop: loop {
+                        let surrogate_base = upcoming32.wrapping_sub(0xD800);
+                        if surrogate_base > (0xDFFF - 0xD800) {
+                            // Not surrogate
+                            break 'surrogateloop;
+                        }
+                        if surrogate_base <= (0xDBFF - 0xD800) {
+                            let iter_backup = code_unit_iter.clone();
+                            if let Some(&low) = code_unit_iter.next() {
+                                if in_inclusive_range16(low, 0xDC00, 0xDFFF) {
+                                    upcoming32 = (upcoming32 << 10) + u32::from(low)
+                                        - (((0xD800u32 << 10) - 0x10000u32) + 0xDC00u32);
+                                    // Successfully-paired surrogate. Read from the trie again.
+                                    trie_value = composition.decomposition.trie.get32(upcoming32);
+                                    if potential_passthrough_and_cannot_combine_backwards_impl(trie_value) {
+                                        // Fast-track succeeded!
+                                        continue 'fast;
+                                    }
+                                    break 'surrogateloop;
+                                } else {
+                                    code_unit_iter = iter_backup;
+                                }
+                            }
+                        }
+                        // unpaired surrogate
+                        upcoming32 = 0xFFFD; // Safe value for `char::from_u32_unchecked` and matches later potential error check.
+                        // trie_value already holds a decomposition to U+FFFD.
+                        debug_assert_eq!(trie_value, NON_ROUND_TRIP_MARKER | BACKWARD_COMBINING_MARKER | 0xFFFD);
+                        break 'surrogateloop;
+                    }
+
+                    // SAFETY: upcoming32 can no longer be a surrogate.
+                    let upcoming = unsafe { char::from_u32_unchecked(upcoming32) };
+                    let upcoming_with_trie_value = CharacterAndTrieValue::new(upcoming, trie_value);
+                    // We need to fall off the fast path.
+                    composition.decomposition.pending = Some(upcoming_with_trie_value);
+                    let mut consumed_so_far = pending_slice[..pending_slice.len() - code_unit_iter.as_slice().len() - upcoming.len_utf16()].chars();
+                    // `unwrap` OK, because we've previously managed to read the previous character
+                    #[allow(clippy::unwrap_used)]
+                    {
+                        // TODO: If the previous character was below the passthrough bound,
+                        // we really need to read from the trie. Otherwise, we could maintain
+                        // the most-recent trie value. Need to measure what's more expensive:
+                        // Remembering the trie value on each iteration or re-reading the
+                        // last one after the fast-track run.
+                        undecomposed_starter = composition.decomposition.attach_trie_value(consumed_so_far.next_back().unwrap());
+                    }
+                    let consumed_so_far_slice = consumed_so_far.as_slice();
+                    sink.write_slice(consumed_so_far_slice)?;
+                    break 'fast;
+                }
+                // End of stream
+                sink.write_slice(pending_slice)?;
+                return Ok(());
+            }
+            // Sync the main iterator
+            composition.decomposition.delegate = code_unit_iter.as_slice().chars();
+        },
+        text,
+        sink,
+        composition,
+        composition_passthrough_bound,
+        undecomposed_starter,
+        pending_slice,
+        len_utf16,
+    );
+}
+
+/// A normalizer for performing composing normalization.
+#[derive(Debug)]
+pub struct ComposingNormalizer {
+    decomposing_normalizer: DecomposingNormalizer,
+    canonical_compositions: DataPayload<NormalizerNfcV1>,
+}
+
+impl ComposingNormalizer {
+    /// Constructs a borrowed version of this type for more efficient querying.
+    pub fn as_borrowed(&self) -> ComposingNormalizerBorrowed<'_> {
+        ComposingNormalizerBorrowed {
+            decomposing_normalizer: self.decomposing_normalizer.as_borrowed(),
+            canonical_compositions: self.canonical_compositions.get(),
+        }
+    }
+
+    /// NFC constructor using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new_nfc() -> ComposingNormalizerBorrowed<'static> {
+        ComposingNormalizerBorrowed::new_nfc()
+    }
+
+    icu_provider::gen_buffer_data_constructors!(
+        () -> error: DataError,
+        functions: [
+            new_nfc: skip,
+            try_new_nfc_with_buffer_provider,
+            try_new_nfc_unstable,
+            Self,
+        ]
+    );
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_nfc)]
+    pub fn try_new_nfc_unstable<D>(provider: &D) -> Result<Self, DataError>
+    where
+        D: DataProvider<NormalizerNfdDataV1>
+            + DataProvider<NormalizerNfdTablesV1>
+            + DataProvider<NormalizerNfcV1>
+            + ?Sized,
+    {
+        let decomposing_normalizer = DecomposingNormalizer::try_new_nfd_unstable(provider)?;
+
+        let canonical_compositions: DataPayload<NormalizerNfcV1> =
+            provider.load(Default::default())?.payload;
+
+        Ok(ComposingNormalizer {
+            decomposing_normalizer,
+            canonical_compositions,
+        })
+    }
+
+    /// NFKC constructor using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new_nfkc() -> ComposingNormalizerBorrowed<'static> {
+        ComposingNormalizerBorrowed::new_nfkc()
+    }
+
+    icu_provider::gen_buffer_data_constructors!(
+        () -> error: DataError,
+        functions: [
+            new_nfkc: skip,
+            try_new_nfkc_with_buffer_provider,
+            try_new_nfkc_unstable,
+            Self,
+        ]
+    );
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_nfkc)]
+    pub fn try_new_nfkc_unstable<D>(provider: &D) -> Result<Self, DataError>
+    where
+        D: DataProvider<NormalizerNfkdDataV1>
+            + DataProvider<NormalizerNfdTablesV1>
+            + DataProvider<NormalizerNfkdTablesV1>
+            + DataProvider<NormalizerNfcV1>
+            + ?Sized,
+    {
+        let decomposing_normalizer = DecomposingNormalizer::try_new_nfkd_unstable(provider)?;
+
+        let canonical_compositions: DataPayload<NormalizerNfcV1> =
+            provider.load(Default::default())?.payload;
+
+        Ok(ComposingNormalizer {
+            decomposing_normalizer,
+            canonical_compositions,
+        })
+    }
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_uts46)]
+    pub(crate) fn try_new_uts46_unstable<D>(provider: &D) -> Result<Self, DataError>
+    where
+        D: DataProvider<NormalizerUts46DataV1>
+            + DataProvider<NormalizerNfdTablesV1>
+            + DataProvider<NormalizerNfkdTablesV1>
+            // UTS 46 tables merged into CompatibilityDecompositionTablesV1
+            + DataProvider<NormalizerNfcV1>
+            + ?Sized,
+    {
+        let decomposing_normalizer =
+            DecomposingNormalizer::try_new_uts46_decomposed_unstable(provider)?;
+
+        let canonical_compositions: DataPayload<NormalizerNfcV1> =
+            provider.load(Default::default())?.payload;
+
+        Ok(ComposingNormalizer {
+            decomposing_normalizer,
+            canonical_compositions,
+        })
+    }
+}
+
+#[cfg(feature = "utf16_iter")]
+struct IsNormalizedSinkUtf16<'a> {
+    expect: &'a [u16],
+}
+
+#[cfg(feature = "utf16_iter")]
+impl<'a> IsNormalizedSinkUtf16<'a> {
+    pub fn new(slice: &'a [u16]) -> Self {
+        IsNormalizedSinkUtf16 { expect: slice }
+    }
+    pub fn remaining_len(&self) -> usize {
+        self.expect.len()
+    }
+}
+
+#[cfg(feature = "utf16_iter")]
+impl write16::Write16 for IsNormalizedSinkUtf16<'_> {
+    fn write_slice(&mut self, s: &[u16]) -> core::fmt::Result {
+        // We know that if we get a slice, it's a pass-through,
+        // so we can compare addresses. Indexing is OK, because
+        // an indexing failure would be a code bug rather than
+        // an input or data issue.
+        #[allow(clippy::indexing_slicing)]
+        if core::ptr::eq(s.as_ptr(), self.expect.as_ptr()) {
+            self.expect = &self.expect[s.len()..];
+            Ok(())
+        } else {
+            Err(core::fmt::Error {})
+        }
+    }
+
+    fn write_char(&mut self, c: char) -> core::fmt::Result {
+        let mut iter = self.expect.chars();
+        if iter.next() == Some(c) {
+            self.expect = iter.as_slice();
+            Ok(())
+        } else {
+            Err(core::fmt::Error {})
+        }
+    }
+}
+
+#[cfg(feature = "utf8_iter")]
+struct IsNormalizedSinkUtf8<'a> {
+    expect: &'a [u8],
+}
+
+#[cfg(feature = "utf8_iter")]
+impl<'a> IsNormalizedSinkUtf8<'a> {
+    pub fn new(slice: &'a [u8]) -> Self {
+        IsNormalizedSinkUtf8 { expect: slice }
+    }
+    pub fn remaining_len(&self) -> usize {
+        self.expect.len()
+    }
+}
+
+#[cfg(feature = "utf8_iter")]
+impl core::fmt::Write for IsNormalizedSinkUtf8<'_> {
+    fn write_str(&mut self, s: &str) -> core::fmt::Result {
+        // We know that if we get a slice, it's a pass-through,
+        // so we can compare addresses. Indexing is OK, because
+        // an indexing failure would be a code bug rather than
+        // an input or data issue.
+        #[allow(clippy::indexing_slicing)]
+        if core::ptr::eq(s.as_ptr(), self.expect.as_ptr()) {
+            self.expect = &self.expect[s.len()..];
+            Ok(())
+        } else {
+            Err(core::fmt::Error {})
+        }
+    }
+
+    fn write_char(&mut self, c: char) -> core::fmt::Result {
+        let mut iter = self.expect.chars();
+        if iter.next() == Some(c) {
+            self.expect = iter.as_slice();
+            Ok(())
+        } else {
+            Err(core::fmt::Error {})
+        }
+    }
+}
+
+struct IsNormalizedSinkStr<'a> {
+    expect: &'a str,
+}
+
+impl<'a> IsNormalizedSinkStr<'a> {
+    pub fn new(slice: &'a str) -> Self {
+        IsNormalizedSinkStr { expect: slice }
+    }
+    pub fn remaining_len(&self) -> usize {
+        self.expect.len()
+    }
+}
+
+impl core::fmt::Write for IsNormalizedSinkStr<'_> {
+    fn write_str(&mut self, s: &str) -> core::fmt::Result {
+        // We know that if we get a slice, it's a pass-through,
+        // so we can compare addresses. Indexing is OK, because
+        // an indexing failure would be a code bug rather than
+        // an input or data issue.
+        #[allow(clippy::indexing_slicing)]
+        if core::ptr::eq(s.as_ptr(), self.expect.as_ptr()) {
+            self.expect = &self.expect[s.len()..];
+            Ok(())
+        } else {
+            Err(core::fmt::Error {})
+        }
+    }
+
+    fn write_char(&mut self, c: char) -> core::fmt::Result {
+        let mut iter = self.expect.chars();
+        if iter.next() == Some(c) {
+            self.expect = iter.as_str();
+            Ok(())
+        } else {
+            Err(core::fmt::Error {})
+        }
+    }
+}
diff --git a/vendor/icu_normalizer/src/properties.rs b/vendor/icu_normalizer/src/properties.rs
new file mode 100644
index 00000000..948780e1
--- /dev/null
+++ b/vendor/icu_normalizer/src/properties.rs
@@ -0,0 +1,663 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Access to the Unicode properties or property-based operations that
+//! are required for NFC and NFD.
+//!
+//! Applications should generally use the full normalizers that are
+//! provided at the top level of this crate. However, the APIs in this
+//! module are provided for callers such as HarfBuzz that specifically
+//! want access to the raw canonical composition operation e.g. for use in a
+//! glyph-availability-guided custom normalizer.
+
+use crate::char_from_u16;
+use crate::char_from_u32;
+use crate::in_inclusive_range;
+use crate::provider::CanonicalCompositions;
+use crate::provider::DecompositionData;
+use crate::provider::DecompositionTables;
+use crate::provider::NonRecursiveDecompositionSupplement;
+use crate::provider::NormalizerNfcV1;
+use crate::provider::NormalizerNfdDataV1;
+use crate::provider::NormalizerNfdSupplementV1;
+use crate::provider::NormalizerNfdTablesV1;
+use crate::trie_value_has_ccc;
+use crate::CanonicalCombiningClass;
+use crate::BACKWARD_COMBINING_MARKER;
+use crate::FDFA_MARKER;
+use crate::HANGUL_L_BASE;
+use crate::HANGUL_N_COUNT;
+use crate::HANGUL_S_BASE;
+use crate::HANGUL_S_COUNT;
+use crate::HANGUL_T_BASE;
+use crate::HANGUL_T_COUNT;
+use crate::HANGUL_V_BASE;
+use crate::HIGH_ZEROS_MASK;
+use crate::LOW_ZEROS_MASK;
+use crate::NON_ROUND_TRIP_MARKER;
+use icu_provider::prelude::*;
+
+/// Borrowed version of the raw canonical composition operation.
+///
+/// Callers should generally use `ComposingNormalizer` instead of this API.
+/// However, this API is provided for callers such as HarfBuzz that specifically
+/// want access to the raw canonical composition operation e.g. for use in a
+/// glyph-availability-guided custom normalizer.
+#[derive(Debug, Copy, Clone)]
+pub struct CanonicalCompositionBorrowed<'a> {
+    canonical_compositions: &'a CanonicalCompositions<'a>,
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for CanonicalCompositionBorrowed<'static> {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl CanonicalCompositionBorrowed<'static> {
+    /// Cheaply converts a [`CanonicalCompositionBorrowed<'static>`] into a [`CanonicalComposition`].
+    ///
+    /// Note: Due to branching and indirection, using [`CanonicalComposition`] might inhibit some
+    /// compile-time optimizations that are possible with [`CanonicalCompositionBorrowed`].
+    pub const fn static_to_owned(self) -> CanonicalComposition {
+        CanonicalComposition {
+            canonical_compositions: DataPayload::from_static_ref(self.canonical_compositions),
+        }
+    }
+
+    /// Constructs a new `CanonicalComposition` using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new() -> Self {
+        Self {
+            canonical_compositions: crate::provider::Baked::SINGLETON_NORMALIZER_NFC_V1,
+        }
+    }
+}
+
+impl CanonicalCompositionBorrowed<'_> {
+    /// Performs canonical composition (including Hangul) on a pair of
+    /// characters or returns `None` if these characters don't compose.
+    /// Composition exclusions are taken into account.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// let comp = icu::normalizer::properties::CanonicalCompositionBorrowed::new();
+    ///
+    /// assert_eq!(comp.compose('a', 'b'), None); // Just two non-composing starters
+    /// assert_eq!(comp.compose('a', '\u{0308}'), Some('ä'));
+    /// assert_eq!(comp.compose('ẹ', '\u{0302}'), Some('ệ'));
+    /// assert_eq!(comp.compose('𝅗', '𝅥'), None); // Composition exclusion
+    /// assert_eq!(comp.compose('ে', 'া'), Some('ো')); // Second is starter
+    /// assert_eq!(comp.compose('ᄀ', 'ᅡ'), Some('가')); // Hangul LV
+    /// assert_eq!(comp.compose('가', 'ᆨ'), Some('각')); // Hangul LVT
+    /// ```
+    #[inline(always)]
+    pub fn compose(self, starter: char, second: char) -> Option<char> {
+        crate::compose(
+            self.canonical_compositions.canonical_compositions.iter(),
+            starter,
+            second,
+        )
+    }
+}
+
+/// The raw canonical composition operation.
+///
+/// Callers should generally use `ComposingNormalizer` instead of this API.
+/// However, this API is provided for callers such as HarfBuzz that specifically
+/// want access to the raw canonical composition operation e.g. for use in a
+/// glyph-availability-guided custom normalizer.
+#[derive(Debug)]
+pub struct CanonicalComposition {
+    canonical_compositions: DataPayload<NormalizerNfcV1>,
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for CanonicalComposition {
+    fn default() -> Self {
+        Self::new().static_to_owned()
+    }
+}
+
+impl CanonicalComposition {
+    /// Constructs a borrowed version of this type for more efficient querying.
+    pub fn as_borrowed(&self) -> CanonicalCompositionBorrowed<'_> {
+        CanonicalCompositionBorrowed {
+            canonical_compositions: self.canonical_compositions.get(),
+        }
+    }
+
+    /// Constructs a new `CanonicalCompositionBorrowed` using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    #[allow(clippy::new_ret_no_self)]
+    pub const fn new() -> CanonicalCompositionBorrowed<'static> {
+        CanonicalCompositionBorrowed::new()
+    }
+
+    icu_provider::gen_buffer_data_constructors!(() -> error: DataError,
+        functions: [
+            new: skip,
+            try_new_with_buffer_provider,
+            try_new_unstable,
+            Self,
+        ]
+    );
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new)]
+    pub fn try_new_unstable<D>(provider: &D) -> Result<Self, DataError>
+    where
+        D: DataProvider<NormalizerNfcV1> + ?Sized,
+    {
+        let canonical_compositions: DataPayload<NormalizerNfcV1> =
+            provider.load(Default::default())?.payload;
+        Ok(CanonicalComposition {
+            canonical_compositions,
+        })
+    }
+}
+
+/// The outcome of non-recursive canonical decomposition of a character.
+#[allow(clippy::exhaustive_enums)]
+#[derive(Debug, PartialEq, Eq)]
+pub enum Decomposed {
+    /// The character is its own canonical decomposition.
+    Default,
+    /// The character decomposes to a single different character.
+    Singleton(char),
+    /// The character decomposes to two characters.
+    Expansion(char, char),
+}
+
+/// Borrowed version of the raw (non-recursive) canonical decomposition operation.
+///
+/// Callers should generally use `DecomposingNormalizer` instead of this API.
+/// However, this API is provided for callers such as HarfBuzz that specifically
+/// want access to non-recursive canonical decomposition e.g. for use in a
+/// glyph-availability-guided custom normalizer.
+#[derive(Debug)]
+pub struct CanonicalDecompositionBorrowed<'a> {
+    decompositions: &'a DecompositionData<'a>,
+    tables: &'a DecompositionTables<'a>,
+    non_recursive: &'a NonRecursiveDecompositionSupplement<'a>,
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for CanonicalDecompositionBorrowed<'static> {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl CanonicalDecompositionBorrowed<'static> {
+    /// Cheaply converts a [`CanonicalDecompositionBorrowed<'static>`] into a [`CanonicalDecomposition`].
+    ///
+    /// Note: Due to branching and indirection, using [`CanonicalDecomposition`] might inhibit some
+    /// compile-time optimizations that are possible with [`CanonicalDecompositionBorrowed`].
+    pub const fn static_to_owned(self) -> CanonicalDecomposition {
+        CanonicalDecomposition {
+            decompositions: DataPayload::from_static_ref(self.decompositions),
+            tables: DataPayload::from_static_ref(self.tables),
+            non_recursive: DataPayload::from_static_ref(self.non_recursive),
+        }
+    }
+
+    /// Construct from compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new() -> Self {
+        const _: () = assert!(
+            crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1
+                .scalars16
+                .const_len()
+                + crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1
+                    .scalars24
+                    .const_len()
+                <= 0xFFF,
+            "future extension"
+        );
+
+        Self {
+            decompositions: crate::provider::Baked::SINGLETON_NORMALIZER_NFD_DATA_V1,
+            tables: crate::provider::Baked::SINGLETON_NORMALIZER_NFD_TABLES_V1,
+            non_recursive: crate::provider::Baked::SINGLETON_NORMALIZER_NFD_SUPPLEMENT_V1,
+        }
+    }
+}
+
+impl CanonicalDecompositionBorrowed<'_> {
+    /// Performs non-recursive canonical decomposition (including for Hangul).
+    ///
+    /// ```
+    ///     use icu::normalizer::properties::Decomposed;
+    ///     let decomp = icu::normalizer::properties::CanonicalDecompositionBorrowed::new();
+    ///
+    ///     assert_eq!(decomp.decompose('e'), Decomposed::Default);
+    ///     assert_eq!(
+    ///         decomp.decompose('ệ'),
+    ///         Decomposed::Expansion('ẹ', '\u{0302}')
+    ///     );
+    ///     assert_eq!(decomp.decompose('각'), Decomposed::Expansion('가', 'ᆨ'));
+    ///     assert_eq!(decomp.decompose('\u{212B}'), Decomposed::Singleton('Å')); // ANGSTROM SIGN
+    ///     assert_eq!(decomp.decompose('\u{2126}'), Decomposed::Singleton('Ω')); // OHM SIGN
+    ///     assert_eq!(decomp.decompose('\u{1F71}'), Decomposed::Singleton('ά')); // oxia
+    /// ```
+    #[inline]
+    pub fn decompose(&self, c: char) -> Decomposed {
+        let lvt = u32::from(c).wrapping_sub(HANGUL_S_BASE);
+        if lvt >= HANGUL_S_COUNT {
+            return self.decompose_non_hangul(c);
+        }
+        // Invariant: lvt ≤ HANGUL_S_COUNT = 1172
+        let t = lvt % HANGUL_T_COUNT;
+        // Invariant: t ≤ (1172 / HANGUL_T_COUNT = 1172 / 28 = 41)
+        if t == 0 {
+            let l = lvt / HANGUL_N_COUNT;
+            // Invariant: v ≤ (1172 / HANGUL_N_COUNT = 1172 / 588 ≈ 2)
+            let v = (lvt % HANGUL_N_COUNT) / HANGUL_T_COUNT;
+            // Invariant: v < (HANGUL_N_COUNT / HANGUL_T_COUNT = 588 / 28 = 21)
+            return Decomposed::Expansion(
+                // Safety: HANGUL_*_BASE are 0x1nnn, addding numbers that are 21 and 41
+                // max will keep it in range, less than 0xD800
+                unsafe { char::from_u32_unchecked(HANGUL_L_BASE + l) },
+                unsafe { char::from_u32_unchecked(HANGUL_V_BASE + v) },
+            );
+        }
+        let lv = lvt - t;
+        // Invariant: lvt < 1172
+        // Safe because values known to be in range
+        Decomposed::Expansion(
+            // Safety: HANGUL_*_BASE are 0x1nnn, addding numbers that are 1172 and 41
+            // max will keep it in range, less than 0xD800
+            unsafe { char::from_u32_unchecked(HANGUL_S_BASE + lv) },
+            unsafe { char::from_u32_unchecked(HANGUL_T_BASE + t) },
+        )
+    }
+
+    /// Performs non-recursive canonical decomposition except Hangul syllables
+    /// are reported as `Decomposed::Default`.
+    #[inline(always)]
+    fn decompose_non_hangul(&self, c: char) -> Decomposed {
+        let decomposition = self.decompositions.trie.get(c);
+        // The REPLACEMENT CHARACTER has `NON_ROUND_TRIP_MARKER` set,
+        // and that flag needs to be ignored here.
+        if (decomposition & !(BACKWARD_COMBINING_MARKER | NON_ROUND_TRIP_MARKER)) == 0 {
+            return Decomposed::Default;
+        }
+        // The loop is only broken out of as goto forward
+        #[allow(clippy::never_loop)]
+        loop {
+            let high_zeros = (decomposition & HIGH_ZEROS_MASK) == 0;
+            let low_zeros = (decomposition & LOW_ZEROS_MASK) == 0;
+            if !high_zeros && !low_zeros {
+                // Decomposition into two BMP characters: starter and non-starter
+                if in_inclusive_range(c, '\u{1F71}', '\u{1FFB}') {
+                    // Look in the other trie due to oxia singleton
+                    // mappings to corresponding character with tonos.
+                    break;
+                }
+                let starter = char_from_u32(decomposition & 0x7FFF);
+                let combining = char_from_u32((decomposition >> 15) & 0x7FFF);
+                return Decomposed::Expansion(starter, combining);
+            }
+            if high_zeros {
+                // Decomposition into one BMP character or non-starter
+                if trie_value_has_ccc(decomposition) {
+                    // Non-starter
+                    if !in_inclusive_range(c, '\u{0340}', '\u{0F81}') {
+                        return Decomposed::Default;
+                    }
+                    return match c {
+                        '\u{0340}' => {
+                            // COMBINING GRAVE TONE MARK
+                            Decomposed::Singleton('\u{0300}')
+                        }
+                        '\u{0341}' => {
+                            // COMBINING ACUTE TONE MARK
+                            Decomposed::Singleton('\u{0301}')
+                        }
+                        '\u{0343}' => {
+                            // COMBINING GREEK KORONIS
+                            Decomposed::Singleton('\u{0313}')
+                        }
+                        '\u{0344}' => {
+                            // COMBINING GREEK DIALYTIKA TONOS
+                            Decomposed::Expansion('\u{0308}', '\u{0301}')
+                        }
+                        '\u{0F73}' => {
+                            // TIBETAN VOWEL SIGN II
+                            Decomposed::Expansion('\u{0F71}', '\u{0F72}')
+                        }
+                        '\u{0F75}' => {
+                            // TIBETAN VOWEL SIGN UU
+                            Decomposed::Expansion('\u{0F71}', '\u{0F74}')
+                        }
+                        '\u{0F81}' => {
+                            // TIBETAN VOWEL SIGN REVERSED II
+                            Decomposed::Expansion('\u{0F71}', '\u{0F80}')
+                        }
+                        _ => Decomposed::Default,
+                    };
+                }
+                let singleton = decomposition as u16;
+                debug_assert_ne!(
+                    singleton, FDFA_MARKER,
+                    "How come we got the U+FDFA NFKD marker here?"
+                );
+                return Decomposed::Singleton(char_from_u16(singleton));
+            }
+            if c == '\u{212B}' {
+                // ANGSTROM SIGN
+                return Decomposed::Singleton('\u{00C5}');
+            }
+            // Only 12 of 14 bits used as of Unicode 16.
+            let offset = (((decomposition & !(0b11 << 30)) >> 16) as usize) - 1;
+            // Only 3 of 4 bits used as of Unicode 16.
+            let len_bits = decomposition & 0b1111;
+            let tables = self.tables;
+            if offset < tables.scalars16.len() {
+                if len_bits != 0 {
+                    // i.e. logical len isn't 2
+                    break;
+                }
+                if let Some(first) = tables.scalars16.get(offset) {
+                    if let Some(second) = tables.scalars16.get(offset + 1) {
+                        // Two BMP starters
+                        return Decomposed::Expansion(char_from_u16(first), char_from_u16(second));
+                    }
+                }
+                // GIGO case
+                debug_assert!(false);
+                return Decomposed::Default;
+            }
+            let len = len_bits + 1;
+            if len > 2 {
+                break;
+            }
+            let offset24 = offset - tables.scalars16.len();
+            if let Some(first_c) = tables.scalars24.get(offset24) {
+                if len == 1 {
+                    return Decomposed::Singleton(first_c);
+                }
+                if let Some(second_c) = tables.scalars24.get(offset24 + 1) {
+                    return Decomposed::Expansion(first_c, second_c);
+                }
+            }
+            // GIGO case
+            debug_assert!(false);
+            return Decomposed::Default;
+        }
+        let non_recursive = self.non_recursive;
+        let non_recursive_decomposition = non_recursive.trie.get(c);
+        if non_recursive_decomposition == 0 {
+            // GIGO case
+            debug_assert!(false);
+            return Decomposed::Default;
+        }
+        let trail_or_complex = (non_recursive_decomposition >> 16) as u16;
+        let lead = non_recursive_decomposition as u16;
+        if lead != 0 && trail_or_complex != 0 {
+            // Decomposition into two BMP characters
+            return Decomposed::Expansion(char_from_u16(lead), char_from_u16(trail_or_complex));
+        }
+        if lead != 0 {
+            // Decomposition into one BMP character
+            return Decomposed::Singleton(char_from_u16(lead));
+        }
+        // Decomposition into two non-BMP characters
+        // Low is offset into a table plus one to keep it non-zero.
+        let offset = usize::from(trail_or_complex - 1);
+        if let Some(first) = non_recursive.scalars24.get(offset) {
+            if let Some(second) = non_recursive.scalars24.get(offset + 1) {
+                return Decomposed::Expansion(first, second);
+            }
+        }
+        // GIGO case
+        debug_assert!(false);
+        Decomposed::Default
+    }
+}
+
+/// The raw (non-recursive) canonical decomposition operation.
+///
+/// Callers should generally use `DecomposingNormalizer` instead of this API.
+/// However, this API is provided for callers such as HarfBuzz that specifically
+/// want access to non-recursive canonical decomposition e.g. for use in a
+/// glyph-availability-guided custom normalizer.
+#[derive(Debug)]
+pub struct CanonicalDecomposition {
+    decompositions: DataPayload<NormalizerNfdDataV1>,
+    tables: DataPayload<NormalizerNfdTablesV1>,
+    non_recursive: DataPayload<NormalizerNfdSupplementV1>,
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for CanonicalDecomposition {
+    fn default() -> Self {
+        Self::new().static_to_owned()
+    }
+}
+
+impl CanonicalDecomposition {
+    /// Constructs a borrowed version of this type for more efficient querying.
+    pub fn as_borrowed(&self) -> CanonicalDecompositionBorrowed<'_> {
+        CanonicalDecompositionBorrowed {
+            decompositions: self.decompositions.get(),
+            tables: self.tables.get(),
+            non_recursive: self.non_recursive.get(),
+        }
+    }
+
+    /// Construct from compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    #[allow(clippy::new_ret_no_self)]
+    pub const fn new() -> CanonicalDecompositionBorrowed<'static> {
+        CanonicalDecompositionBorrowed::new()
+    }
+
+    icu_provider::gen_buffer_data_constructors!(() -> error: DataError,
+        functions: [
+            new: skip,
+            try_new_with_buffer_provider,
+            try_new_unstable,
+            Self,
+        ]
+    );
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new)]
+    pub fn try_new_unstable<D>(provider: &D) -> Result<Self, DataError>
+    where
+        D: DataProvider<NormalizerNfdDataV1>
+            + DataProvider<NormalizerNfdTablesV1>
+            + DataProvider<NormalizerNfdSupplementV1>
+            + ?Sized,
+    {
+        let decompositions: DataPayload<NormalizerNfdDataV1> =
+            provider.load(Default::default())?.payload;
+        let tables: DataPayload<NormalizerNfdTablesV1> = provider.load(Default::default())?.payload;
+
+        if tables.get().scalars16.len() + tables.get().scalars24.len() > 0xFFF {
+            // The data is from a future where there exists a normalization flavor whose
+            // complex decompositions take more than 0xFFF but fewer than 0x1FFF code points
+            // of space. If a good use case from such a decomposition flavor arises, we can
+            // dynamically change the bit masks so that the length mask becomes 0x1FFF instead
+            // of 0xFFF and the all-non-starters mask becomes 0 instead of 0x1000. However,
+            // since for now the masks are hard-coded, error out.
+            return Err(DataError::custom("future extension"));
+        }
+
+        let non_recursive: DataPayload<NormalizerNfdSupplementV1> =
+            provider.load(Default::default())?.payload;
+
+        Ok(CanonicalDecomposition {
+            decompositions,
+            tables,
+            non_recursive,
+        })
+    }
+}
+
+/// Borrowed version of lookup of the Canonical_Combining_Class Unicode property.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::props::CanonicalCombiningClass;
+/// use icu::normalizer::properties::CanonicalCombiningClassMapBorrowed;
+///
+/// let map = CanonicalCombiningClassMapBorrowed::new();
+/// assert_eq!(map.get('a'), CanonicalCombiningClass::NotReordered); // U+0061: LATIN SMALL LETTER A
+/// assert_eq!(map.get32(0x0301), CanonicalCombiningClass::Above); // U+0301: COMBINING ACUTE ACCENT
+/// ```
+#[derive(Debug)]
+pub struct CanonicalCombiningClassMapBorrowed<'a> {
+    /// The data trie
+    decompositions: &'a DecompositionData<'a>,
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for CanonicalCombiningClassMapBorrowed<'static> {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl CanonicalCombiningClassMapBorrowed<'static> {
+    /// Cheaply converts a [`CanonicalCombiningClassMapBorrowed<'static>`] into a [`CanonicalCombiningClassMap`].
+    ///
+    /// Note: Due to branching and indirection, using [`CanonicalCombiningClassMap`] might inhibit some
+    /// compile-time optimizations that are possible with [`CanonicalCombiningClassMapBorrowed`].
+    pub const fn static_to_owned(self) -> CanonicalCombiningClassMap {
+        CanonicalCombiningClassMap {
+            decompositions: DataPayload::from_static_ref(self.decompositions),
+        }
+    }
+
+    /// Construct from compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new() -> Self {
+        CanonicalCombiningClassMapBorrowed {
+            decompositions: crate::provider::Baked::SINGLETON_NORMALIZER_NFD_DATA_V1,
+        }
+    }
+}
+
+impl CanonicalCombiningClassMapBorrowed<'_> {
+    /// Look up the canonical combining class for a scalar value.
+    ///
+    /// The return value is a u8 representing the canonical combining class,
+    /// you may enable the `"icu_properties"` feature if you would like to use a typed
+    /// `CanonicalCombiningClass`.
+    #[inline(always)]
+    pub fn get_u8(&self, c: char) -> u8 {
+        self.get32_u8(u32::from(c))
+    }
+
+    /// Look up the canonical combining class for a scalar value
+    /// represented as `u32`. If the argument is outside the scalar
+    /// value range, `Not_Reordered` is returned.
+    ///
+    /// The return value is a u8 representing the canonical combining class,
+    /// you may enable the `"icu_properties"` feature if you would like to use a typed
+    /// `CanonicalCombiningClass`.
+    pub fn get32_u8(&self, c: u32) -> u8 {
+        let trie_value = self.decompositions.trie.get32(c);
+        if trie_value_has_ccc(trie_value) {
+            trie_value as u8
+        } else {
+            ccc!(NotReordered, 0).to_icu4c_value()
+        }
+    }
+
+    /// Look up the canonical combining class for a scalar value
+    ///
+    /// ✨ *Enabled with the `icu_properties` Cargo feature.*
+    #[inline(always)]
+    #[cfg(feature = "icu_properties")]
+    pub fn get(&self, c: char) -> CanonicalCombiningClass {
+        CanonicalCombiningClass::from_icu4c_value(self.get_u8(c))
+    }
+
+    /// Look up the canonical combining class for a scalar value
+    /// represented as `u32`. If the argument is outside the scalar
+    /// value range, `CanonicalCombiningClass::NotReordered` is returned.
+    ///
+    /// ✨ *Enabled with the `icu_properties` Cargo feature.*
+    #[cfg(feature = "icu_properties")]
+    pub fn get32(&self, c: u32) -> CanonicalCombiningClass {
+        CanonicalCombiningClass::from_icu4c_value(self.get32_u8(c))
+    }
+}
+
+/// Lookup of the Canonical_Combining_Class Unicode property.
+#[derive(Debug)]
+pub struct CanonicalCombiningClassMap {
+    /// The data trie
+    decompositions: DataPayload<NormalizerNfdDataV1>,
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for CanonicalCombiningClassMap {
+    fn default() -> Self {
+        Self::new().static_to_owned()
+    }
+}
+
+impl CanonicalCombiningClassMap {
+    /// Constructs a borrowed version of this type for more efficient querying.
+    pub fn as_borrowed(&self) -> CanonicalCombiningClassMapBorrowed<'_> {
+        CanonicalCombiningClassMapBorrowed {
+            decompositions: self.decompositions.get(),
+        }
+    }
+
+    /// Construct from compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    #[allow(clippy::new_ret_no_self)]
+    pub const fn new() -> CanonicalCombiningClassMapBorrowed<'static> {
+        CanonicalCombiningClassMapBorrowed::new()
+    }
+
+    icu_provider::gen_buffer_data_constructors!(() -> error: DataError,
+        functions: [
+            new: skip,
+            try_new_with_buffer_provider,
+            try_new_unstable,
+            Self,
+    ]);
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new)]
+    pub fn try_new_unstable<D>(provider: &D) -> Result<Self, DataError>
+    where
+        D: DataProvider<NormalizerNfdDataV1> + ?Sized,
+    {
+        let decompositions: DataPayload<NormalizerNfdDataV1> =
+            provider.load(Default::default())?.payload;
+        Ok(CanonicalCombiningClassMap { decompositions })
+    }
+}
diff --git a/vendor/icu_normalizer/src/provider.rs b/vendor/icu_normalizer/src/provider.rs
new file mode 100644
index 00000000..9502f016
--- /dev/null
+++ b/vendor/icu_normalizer/src/provider.rs
@@ -0,0 +1,216 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! 🚧 \[Unstable\] Data provider struct definitions for this ICU4X component.
+//!
+//! <div class="stab unstable">
+//! 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+//! including in SemVer minor releases. While the serde representation of data structs is guaranteed
+//! to be stable, their Rust representation might not be. Use with caution.
+//! </div>
+//!
+//! Read more about data providers: [`icu_provider`]
+
+// Provider structs must be stable
+#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)]
+
+use icu_collections::char16trie::Char16Trie;
+use icu_collections::codepointtrie::CodePointTrie;
+use icu_provider::prelude::*;
+use zerovec::ZeroVec;
+
+#[cfg(feature = "compiled_data")]
+#[derive(Debug)]
+/// Baked data
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. In particular, the `DataProvider` implementations are only
+/// guaranteed to match with this version's `*_unstable` providers. Use with caution.
+/// </div>
+pub struct Baked;
+
+#[cfg(feature = "compiled_data")]
+#[allow(unused_imports)]
+const _: () = {
+    use icu_normalizer_data::*;
+    pub mod icu {
+        pub use crate as normalizer;
+        pub use icu_collections as collections;
+    }
+    make_provider!(Baked);
+    impl_normalizer_nfc_v1!(Baked);
+    impl_normalizer_nfd_data_v1!(Baked);
+    impl_normalizer_nfd_supplement_v1!(Baked);
+    impl_normalizer_nfd_tables_v1!(Baked);
+    impl_normalizer_nfkd_data_v1!(Baked);
+    impl_normalizer_nfkd_tables_v1!(Baked);
+    impl_normalizer_uts46_data_v1!(Baked);
+};
+
+icu_provider::data_marker!(
+    /// Marker for data for canonical decomposition.
+    NormalizerNfdDataV1,
+    "normalizer/nfd/data/v1",
+    DecompositionData<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// Marker for additional data for canonical decomposition.
+    NormalizerNfdTablesV1,
+    "normalizer/nfd/tables/v1",
+    DecompositionTables<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// Marker for data for compatibility decomposition.
+    NormalizerNfkdDataV1,
+    "normalizer/nfkd/data/v1",
+    DecompositionData<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// Marker for additional data for compatibility decomposition.
+    NormalizerNfkdTablesV1,
+    "normalizer/nfkd/tables/v1",
+    DecompositionTables<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// Marker for data for UTS-46 decomposition.
+    NormalizerUts46DataV1,
+    "normalizer/uts46/data/v1",
+    DecompositionData<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// Marker for data for composition.
+    NormalizerNfcV1,
+    "normalizer/nfc/v1",
+    CanonicalCompositions<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// Marker for additional data for non-recusrsive composition.
+    NormalizerNfdSupplementV1,
+    "normalizer/nfd/supplement/v1",
+    NonRecursiveDecompositionSupplement<'static>,
+    is_singleton = true
+);
+
+#[cfg(feature = "datagen")]
+/// The latest minimum set of markers required by this component.
+pub const MARKERS: &[DataMarkerInfo] = &[
+    NormalizerNfcV1::INFO,
+    NormalizerNfdDataV1::INFO,
+    NormalizerNfdTablesV1::INFO,
+    NormalizerNfkdDataV1::INFO,
+    NormalizerNfkdTablesV1::INFO,
+    NormalizerNfdSupplementV1::INFO,
+    NormalizerUts46DataV1::INFO,
+];
+
+/// Decomposition data
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+pub struct DecompositionData<'data> {
+    /// Trie for decomposition.
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub trie: CodePointTrie<'data, u32>,
+    /// The passthrough bounds of NFD/NFC are lowered to this
+    /// maximum instead. (16-bit, because cannot be higher
+    /// than 0x0300, which is the bound for NFC.)
+    pub passthrough_cap: u16,
+}
+
+icu_provider::data_struct!(
+    DecompositionData<'_>,
+    #[cfg(feature = "datagen")]
+);
+
+/// The expansion tables for cases where the decomposition isn't
+/// contained in the trie value
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+pub struct DecompositionTables<'data> {
+    /// Decompositions that are fully within the BMP
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub scalars16: ZeroVec<'data, u16>,
+    /// Decompositions with at least one character outside
+    /// the BMP
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub scalars24: ZeroVec<'data, char>,
+}
+
+icu_provider::data_struct!(
+    DecompositionTables<'_>,
+    #[cfg(feature = "datagen")]
+);
+
+/// Non-Hangul canonical compositions
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+pub struct CanonicalCompositions<'data> {
+    /// Trie keys are two-`char` strings with the second
+    /// character coming first. The value, if any, is the
+    /// (non-Hangul) canonical composition.
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub canonical_compositions: Char16Trie<'data>,
+}
+
+icu_provider::data_struct!(
+    CanonicalCompositions<'_>,
+    #[cfg(feature = "datagen")]
+);
+
+/// Non-recursive canonical decompositions that differ from
+/// `DecompositionData`.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_normalizer::provider))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+pub struct NonRecursiveDecompositionSupplement<'data> {
+    /// Trie for the supplementary non-recursive decompositions
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub trie: CodePointTrie<'data, u32>,
+    /// Decompositions with at least one character outside
+    /// the BMP
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub scalars24: ZeroVec<'data, char>,
+}
+
+icu_provider::data_struct!(
+    NonRecursiveDecompositionSupplement<'_>,
+    #[cfg(feature = "datagen")]
+);
diff --git a/vendor/icu_normalizer/src/uts46.rs b/vendor/icu_normalizer/src/uts46.rs
new file mode 100644
index 00000000..672f5c5c
--- /dev/null
+++ b/vendor/icu_normalizer/src/uts46.rs
@@ -0,0 +1,177 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Bundles the part of UTS 46 that makes sense to implement as a
+//! normalization.
+//!
+//! This is meant to be used as a building block of an UTS 46
+//! implementation, such as the `idna` crate.
+
+use crate::ComposingNormalizer;
+use crate::ComposingNormalizerBorrowed;
+use crate::NormalizerNfcV1;
+use crate::NormalizerNfdTablesV1;
+use crate::NormalizerNfkdTablesV1;
+use crate::NormalizerUts46DataV1;
+use icu_provider::DataError;
+use icu_provider::DataProvider;
+
+// Implementation note: Despite merely wrapping a `ComposingNormalizer`,
+// having a `Uts46Mapper` serves two purposes:
+//
+// 1. Denying public access to parts of the `ComposingNormalizer` API
+//    that don't work when the data contains markers for ignorables.
+// 2. Providing a place where additional iterator pre-processing or
+//    post-processing can take place if needed in the future. (When
+//    writing this, it looked like such processing was needed but
+//    now isn't needed after all.)
+
+/// A borrowed version of a mapper that knows how to performs the
+/// subsets of UTS 46 processing documented on the methods.
+#[derive(Debug)]
+pub struct Uts46MapperBorrowed<'a> {
+    normalizer: ComposingNormalizerBorrowed<'a>,
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for Uts46MapperBorrowed<'static> {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl Uts46MapperBorrowed<'static> {
+    /// Cheaply converts a [`Uts46MapperBorrowed<'static>`] into a [`Uts46Mapper`].
+    ///
+    /// Note: Due to branching and indirection, using [`Uts46Mapper`] might inhibit some
+    /// compile-time optimizations that are possible with [`Uts46MapperBorrowed`].
+    pub const fn static_to_owned(self) -> Uts46Mapper {
+        Uts46Mapper {
+            normalizer: self.normalizer.static_to_owned(),
+        }
+    }
+
+    /// Construct with compiled data.
+    #[cfg(feature = "compiled_data")]
+    pub const fn new() -> Self {
+        Uts46MapperBorrowed {
+            normalizer: ComposingNormalizerBorrowed::new_uts46(),
+        }
+    }
+}
+
+impl Uts46MapperBorrowed<'_> {
+    /// Returns an iterator adaptor that turns an `Iterator` over `char`
+    /// into an iterator yielding a `char` sequence that gets the following
+    /// operations from the "Map" and "Normalize" steps of the "Processing"
+    /// section of UTS 46 lazily applied to it:
+    ///
+    /// 1. The _ignored_ characters are ignored.
+    /// 2. The _mapped_ characters are mapped.
+    /// 3. The _disallowed_ characters are replaced with U+FFFD,
+    ///    which itself is a disallowed character.
+    /// 4. The _deviation_ characters are treated as _mapped_ or _valid_
+    ///    as appropriate.
+    /// 5. The _disallowed_STD3_valid_ characters are treated as allowed.
+    /// 6. The _disallowed_STD3_mapped_ characters are treated as
+    ///    _mapped_.
+    /// 7. The result is normalized to NFC.
+    ///
+    /// Notably:
+    ///
+    /// * The STD3 or WHATWG ASCII deny list should be implemented as a
+    ///   post-processing step.
+    /// * Transitional processing is not performed. Transitional mapping
+    ///   would be a pre-processing step, but transitional processing is
+    ///   deprecated, and none of Firefox, Safari, or Chrome use it.
+    pub fn map_normalize<'delegate, I: Iterator<Item = char> + 'delegate>(
+        &'delegate self,
+        iter: I,
+    ) -> impl Iterator<Item = char> + 'delegate {
+        self.normalizer
+            .normalize_iter_private(iter, crate::IgnorableBehavior::Ignored)
+    }
+
+    /// Returns an iterator adaptor that turns an `Iterator` over `char`
+    /// into an iterator yielding a `char` sequence that gets the following
+    /// operations from the NFC check and statucs steps of the "Validity
+    /// Criteria" section of UTS 46 lazily applied to it:
+    ///
+    /// 1. The _ignored_ characters are treated as _disallowed_.
+    /// 2. The _mapped_ characters are mapped.
+    /// 3. The _disallowed_ characters are replaced with U+FFFD,
+    ///    which itself is a disallowed character.
+    /// 4. The _deviation_ characters are treated as _mapped_ or _valid_
+    ///    as appropriate.
+    /// 5. The _disallowed_STD3_valid_ characters are treated as allowed.
+    /// 6. The _disallowed_STD3_mapped_ characters are treated as
+    ///    _mapped_.
+    /// 7. The result is normalized to NFC.
+    ///
+    /// Notably:
+    ///
+    /// * The STD3 or WHATWG ASCII deny list should be implemented as a
+    ///   post-processing step.
+    /// * Transitional processing is not performed. Transitional mapping
+    ///   would be a pre-processing step, but transitional processing is
+    ///   deprecated, and none of Firefox, Safari, or Chrome use it.
+    /// * The output needs to be compared with input to see if anything
+    ///   changed. This check catches failures to adhere to the normalization
+    ///   and status requirements. In particular, this comparison results
+    ///   in _mapped_ characters resulting in error like "Validity Criteria"
+    ///   requires.
+    pub fn normalize_validate<'delegate, I: Iterator<Item = char> + 'delegate>(
+        &'delegate self,
+        iter: I,
+    ) -> impl Iterator<Item = char> + 'delegate {
+        self.normalizer
+            .normalize_iter_private(iter, crate::IgnorableBehavior::ReplacementCharacter)
+    }
+}
+
+/// A mapper that knows how to performs the subsets of UTS 46 processing
+/// documented on the methods.
+#[derive(Debug)]
+pub struct Uts46Mapper {
+    normalizer: ComposingNormalizer,
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for Uts46Mapper {
+    fn default() -> Self {
+        Self::new().static_to_owned()
+    }
+}
+
+impl Uts46Mapper {
+    /// Constructs a borrowed version of this type for more efficient querying.
+    pub fn as_borrowed(&self) -> Uts46MapperBorrowed<'_> {
+        Uts46MapperBorrowed {
+            normalizer: self.normalizer.as_borrowed(),
+        }
+    }
+
+    /// Construct with compiled data.
+    #[cfg(feature = "compiled_data")]
+    #[allow(clippy::new_ret_no_self)]
+    pub const fn new() -> Uts46MapperBorrowed<'static> {
+        Uts46MapperBorrowed::new()
+    }
+
+    /// Construct with provider.
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new)]
+    pub fn try_new<D>(provider: &D) -> Result<Self, DataError>
+    where
+        D: DataProvider<NormalizerUts46DataV1>
+            + DataProvider<NormalizerNfdTablesV1>
+            + DataProvider<NormalizerNfkdTablesV1>
+            // UTS 46 tables merged into NormalizerNfkdTablesV1
+            + DataProvider<NormalizerNfcV1>
+            + ?Sized,
+    {
+        let normalizer = ComposingNormalizer::try_new_uts46_unstable(provider)?;
+
+        Ok(Uts46Mapper { normalizer })
+    }
+}
diff --git a/vendor/icu_normalizer/tests/data/NormalizationTest.txt b/vendor/icu_normalizer/tests/data/NormalizationTest.txt
new file mode 100644
index 00000000..0d224b05
--- /dev/null
+++ b/vendor/icu_normalizer/tests/data/NormalizationTest.txt
@@ -0,0 +1,4 @@
+# This is a placeholder in the interest of keeping the repository size smaller.
+# Replace this file with the contents of
+# https://www.unicode.org/Public/UCD/latest/ucd/NormalizationTest.txt to actually
+# run the conformance test.
diff --git a/vendor/icu_normalizer/tests/data/README.md b/vendor/icu_normalizer/tests/data/README.md
new file mode 100644
index 00000000..8d407e46
--- /dev/null
+++ b/vendor/icu_normalizer/tests/data/README.md
@@ -0,0 +1,2 @@
+The test data comes from
+https://www.unicode.org/Public/UCD/latest/ucd/NormalizationTest.txt
diff --git a/vendor/icu_normalizer/tests/tests.rs b/vendor/icu_normalizer/tests/tests.rs
new file mode 100644
index 00000000..5e6d8770
--- /dev/null
+++ b/vendor/icu_normalizer/tests/tests.rs
@@ -0,0 +1,2083 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use icu_normalizer::properties::CanonicalCombiningClassMap;
+use icu_normalizer::properties::CanonicalCombiningClassMapBorrowed;
+use icu_normalizer::properties::CanonicalComposition;
+use icu_normalizer::properties::CanonicalCompositionBorrowed;
+use icu_normalizer::properties::CanonicalDecomposition;
+use icu_normalizer::properties::CanonicalDecompositionBorrowed;
+use icu_normalizer::properties::Decomposed;
+use icu_normalizer::uts46::Uts46Mapper;
+use icu_normalizer::uts46::Uts46MapperBorrowed;
+use icu_normalizer::ComposingNormalizer;
+use icu_normalizer::ComposingNormalizerBorrowed;
+use icu_normalizer::DecomposingNormalizer;
+use icu_normalizer::DecomposingNormalizerBorrowed;
+
+#[test]
+fn test_nfd_basic() {
+    let normalizer = DecomposingNormalizerBorrowed::new_nfd();
+    assert_eq!(normalizer.normalize("ä"), "a\u{0308}");
+    assert_eq!(normalizer.normalize("Ä"), "A\u{0308}");
+    assert_eq!(normalizer.normalize("ệ"), "e\u{0323}\u{0302}");
+    assert_eq!(normalizer.normalize("Ệ"), "E\u{0323}\u{0302}");
+    assert_eq!(normalizer.normalize("𝅗𝅥"), "𝅗\u{1D165}");
+    assert_eq!(normalizer.normalize("\u{2126}"), "Ω"); // ohm sign
+    assert_eq!(normalizer.normalize("ﾍﾞ"), "ﾍﾞ"); // half-width unchanged
+    assert_eq!(normalizer.normalize("ﾍﾟ"), "ﾍﾟ"); // half-width unchanged
+    assert_eq!(normalizer.normalize("ﬁ"), "ﬁ"); // ligature unchanged
+    assert_eq!(normalizer.normalize("\u{FDFA}"), "\u{FDFA}"); // ligature unchanged
+    assert_eq!(normalizer.normalize("㈎"), "㈎"); // parenthetical unchanged
+    assert_eq!(normalizer.normalize("\u{0345}"), "\u{0345}"); // Iota subscript
+}
+
+#[test]
+fn test_nfd_owned() {
+    let owned =
+        DecomposingNormalizer::try_new_nfd_unstable(&icu_normalizer::provider::Baked).unwrap();
+    let normalizer = owned.as_borrowed();
+    assert_eq!(normalizer.normalize("ä"), "a\u{0308}");
+    assert_eq!(normalizer.normalize("Ä"), "A\u{0308}");
+    assert_eq!(normalizer.normalize("ệ"), "e\u{0323}\u{0302}");
+    assert_eq!(normalizer.normalize("Ệ"), "E\u{0323}\u{0302}");
+    assert_eq!(normalizer.normalize("𝅗𝅥"), "𝅗\u{1D165}");
+    assert_eq!(normalizer.normalize("\u{2126}"), "Ω"); // ohm sign
+    assert_eq!(normalizer.normalize("ﾍﾞ"), "ﾍﾞ"); // half-width unchanged
+    assert_eq!(normalizer.normalize("ﾍﾟ"), "ﾍﾟ"); // half-width unchanged
+    assert_eq!(normalizer.normalize("ﬁ"), "ﬁ"); // ligature unchanged
+    assert_eq!(normalizer.normalize("\u{FDFA}"), "\u{FDFA}"); // ligature unchanged
+    assert_eq!(normalizer.normalize("㈎"), "㈎"); // parenthetical unchanged
+    assert_eq!(normalizer.normalize("\u{0345}"), "\u{0345}"); // Iota subscript
+}
+
+#[test]
+fn test_nfkd_basic() {
+    let normalizer = DecomposingNormalizerBorrowed::new_nfkd();
+    assert_eq!(normalizer.normalize("ä"), "a\u{0308}");
+    assert_eq!(normalizer.normalize("Ä"), "A\u{0308}");
+    assert_eq!(normalizer.normalize("ệ"), "e\u{0323}\u{0302}");
+    assert_eq!(normalizer.normalize("Ệ"), "E\u{0323}\u{0302}");
+    assert_eq!(normalizer.normalize("𝅗𝅥"), "𝅗\u{1D165}");
+    assert_eq!(normalizer.normalize("\u{2126}"), "Ω"); // ohm sign
+    assert_eq!(normalizer.normalize("ﾍﾞ"), "ヘ\u{3099}"); // half-width to full-width
+    assert_eq!(normalizer.normalize("ﾍﾟ"), "ヘ\u{309A}"); // half-width to full-width
+    assert_eq!(normalizer.normalize("ﬁ"), "fi"); // ligature expanded
+    assert_eq!(normalizer.normalize("\u{FDFA}"), "\u{635}\u{644}\u{649} \u{627}\u{644}\u{644}\u{647} \u{639}\u{644}\u{64A}\u{647} \u{648}\u{633}\u{644}\u{645}");
+    // ligature expanded
+    assert_eq!(normalizer.normalize("㈎"), "(\u{1100}\u{1161})"); // parenthetical expanded
+    assert_eq!(normalizer.normalize("\u{0345}"), "\u{0345}"); // Iota subscript
+}
+
+#[test]
+fn test_nfkd_owned() {
+    let owned =
+        DecomposingNormalizer::try_new_nfkd_unstable(&icu_normalizer::provider::Baked).unwrap();
+    let normalizer = owned.as_borrowed();
+    assert_eq!(normalizer.normalize("ä"), "a\u{0308}");
+    assert_eq!(normalizer.normalize("Ä"), "A\u{0308}");
+    assert_eq!(normalizer.normalize("ệ"), "e\u{0323}\u{0302}");
+    assert_eq!(normalizer.normalize("Ệ"), "E\u{0323}\u{0302}");
+    assert_eq!(normalizer.normalize("𝅗𝅥"), "𝅗\u{1D165}");
+    assert_eq!(normalizer.normalize("\u{2126}"), "Ω"); // ohm sign
+    assert_eq!(normalizer.normalize("ﾍﾞ"), "ヘ\u{3099}"); // half-width to full-width
+    assert_eq!(normalizer.normalize("ﾍﾟ"), "ヘ\u{309A}"); // half-width to full-width
+    assert_eq!(normalizer.normalize("ﬁ"), "fi"); // ligature expanded
+    assert_eq!(normalizer.normalize("\u{FDFA}"), "\u{635}\u{644}\u{649} \u{627}\u{644}\u{644}\u{647} \u{639}\u{644}\u{64A}\u{647} \u{648}\u{633}\u{644}\u{645}");
+    // ligature expanded
+    assert_eq!(normalizer.normalize("㈎"), "(\u{1100}\u{1161})"); // parenthetical expanded
+    assert_eq!(normalizer.normalize("\u{0345}"), "\u{0345}"); // Iota subscript
+}
+
+#[test]
+fn test_nfc_basic() {
+    let normalizer = ComposingNormalizerBorrowed::new_nfc();
+    assert_eq!(normalizer.normalize("a\u{0308}"), "ä");
+    assert_eq!(normalizer.normalize("A\u{0308}"), "Ä");
+    assert_eq!(normalizer.normalize("e\u{0323}\u{0302}"), "ệ");
+    assert_eq!(normalizer.normalize("E\u{0323}\u{0302}"), "Ệ");
+    assert_eq!(normalizer.normalize("𝅗𝅥"), "𝅗\u{1D165}"); // Composition exclusion
+
+    assert_eq!(normalizer.normalize("\u{2126}"), "Ω"); // ohm sign
+    assert_eq!(normalizer.normalize("ﾍﾞ"), "ﾍﾞ"); // half-width unchanged
+    assert_eq!(normalizer.normalize("ﾍﾟ"), "ﾍﾟ"); // half-width unchanged
+    assert_eq!(normalizer.normalize("ﬁ"), "ﬁ"); // ligature unchanged
+    assert_eq!(normalizer.normalize("\u{FDFA}"), "\u{FDFA}"); // ligature unchanged
+    assert_eq!(normalizer.normalize("㈎"), "㈎"); // parenthetical unchanged
+    assert_eq!(normalizer.normalize("\u{0345}"), "\u{0345}"); // Iota subscript
+}
+
+#[test]
+fn test_nfc_owned() {
+    let owned =
+        ComposingNormalizer::try_new_nfc_unstable(&icu_normalizer::provider::Baked).unwrap();
+    let normalizer = owned.as_borrowed();
+    assert_eq!(normalizer.normalize("a\u{0308}"), "ä");
+    assert_eq!(normalizer.normalize("A\u{0308}"), "Ä");
+    assert_eq!(normalizer.normalize("e\u{0323}\u{0302}"), "ệ");
+    assert_eq!(normalizer.normalize("E\u{0323}\u{0302}"), "Ệ");
+    assert_eq!(normalizer.normalize("𝅗𝅥"), "𝅗\u{1D165}"); // Composition exclusion
+
+    assert_eq!(normalizer.normalize("\u{2126}"), "Ω"); // ohm sign
+    assert_eq!(normalizer.normalize("ﾍﾞ"), "ﾍﾞ"); // half-width unchanged
+    assert_eq!(normalizer.normalize("ﾍﾟ"), "ﾍﾟ"); // half-width unchanged
+    assert_eq!(normalizer.normalize("ﬁ"), "ﬁ"); // ligature unchanged
+    assert_eq!(normalizer.normalize("\u{FDFA}"), "\u{FDFA}"); // ligature unchanged
+    assert_eq!(normalizer.normalize("㈎"), "㈎"); // parenthetical unchanged
+    assert_eq!(normalizer.normalize("\u{0345}"), "\u{0345}"); // Iota subscript
+}
+
+#[test]
+fn test_nfkc_basic() {
+    let normalizer = ComposingNormalizerBorrowed::new_nfkc();
+    assert_eq!(normalizer.normalize("a\u{0308}"), "ä");
+    assert_eq!(normalizer.normalize("A\u{0308}"), "Ä");
+    assert_eq!(normalizer.normalize("e\u{0323}\u{0302}"), "ệ");
+    assert_eq!(normalizer.normalize("E\u{0323}\u{0302}"), "Ệ");
+    assert_eq!(normalizer.normalize("𝅗𝅥"), "𝅗\u{1D165}"); // Composition exclusion
+
+    assert_eq!(normalizer.normalize("\u{2126}"), "Ω"); // ohm sign
+    assert_eq!(normalizer.normalize("ﾍﾞ"), "ベ"); // half-width to full-width, the compose
+    assert_eq!(normalizer.normalize("ﾍﾟ"), "ペ"); // half-width to full-width, the compose
+    assert_eq!(normalizer.normalize("ﬁ"), "fi"); // ligature expanded
+    assert_eq!(normalizer.normalize("\u{FDFA}"), "\u{0635}\u{0644}\u{0649} \u{0627}\u{0644}\u{0644}\u{0647} \u{0639}\u{0644}\u{064A}\u{0647} \u{0648}\u{0633}\u{0644}\u{0645}");
+    // ligature expanded
+    assert_eq!(normalizer.normalize("㈎"), "(가)"); // parenthetical expanded and partially recomposed
+    assert_eq!(normalizer.normalize("\u{0345}"), "\u{0345}"); // Iota subscript
+}
+
+#[test]
+fn test_nfkc_owned() {
+    let owned =
+        ComposingNormalizer::try_new_nfkc_unstable(&icu_normalizer::provider::Baked).unwrap();
+    let normalizer = owned.as_borrowed();
+    assert_eq!(normalizer.normalize("a\u{0308}"), "ä");
+    assert_eq!(normalizer.normalize("A\u{0308}"), "Ä");
+    assert_eq!(normalizer.normalize("e\u{0323}\u{0302}"), "ệ");
+    assert_eq!(normalizer.normalize("E\u{0323}\u{0302}"), "Ệ");
+    assert_eq!(normalizer.normalize("𝅗𝅥"), "𝅗\u{1D165}"); // Composition exclusion
+
+    assert_eq!(normalizer.normalize("\u{2126}"), "Ω"); // ohm sign
+    assert_eq!(normalizer.normalize("ﾍﾞ"), "ベ"); // half-width to full-width, the compose
+    assert_eq!(normalizer.normalize("ﾍﾟ"), "ペ"); // half-width to full-width, the compose
+    assert_eq!(normalizer.normalize("ﬁ"), "fi"); // ligature expanded
+    assert_eq!(normalizer.normalize("\u{FDFA}"), "\u{0635}\u{0644}\u{0649} \u{0627}\u{0644}\u{0644}\u{0647} \u{0639}\u{0644}\u{064A}\u{0647} \u{0648}\u{0633}\u{0644}\u{0645}");
+    // ligature expanded
+    assert_eq!(normalizer.normalize("㈎"), "(가)"); // parenthetical expanded and partially recomposed
+    assert_eq!(normalizer.normalize("\u{0345}"), "\u{0345}"); // Iota subscript
+}
+
+#[test]
+fn test_uts46_map_normalize() {
+    let mapper = Uts46MapperBorrowed::new();
+    assert_eq!(
+        mapper
+            .map_normalize("a\u{0308}".chars())
+            .collect::<String>(),
+        "ä"
+    );
+    assert_eq!(
+        mapper
+            .map_normalize("A\u{0308}".chars())
+            .collect::<String>(),
+        "ä"
+    );
+    assert_eq!(
+        mapper
+            .map_normalize("e\u{0323}\u{0302}".chars())
+            .collect::<String>(),
+        "ệ"
+    );
+    assert_eq!(
+        mapper
+            .map_normalize("E\u{0323}\u{0302}".chars())
+            .collect::<String>(),
+        "ệ"
+    );
+    assert_eq!(
+        mapper.map_normalize("𝅗𝅥".chars()).collect::<String>(),
+        "𝅗\u{1D165}"
+    ); // Composition exclusion
+
+    assert_eq!(
+        mapper.map_normalize("\u{2126}".chars()).collect::<String>(),
+        "ω"
+    ); // ohm sign
+    assert_eq!(mapper.map_normalize("ﾍﾞ".chars()).collect::<String>(), "ベ"); // half-width to full-width, the compose
+    assert_eq!(mapper.map_normalize("ﾍﾟ".chars()).collect::<String>(), "ペ"); // half-width to full-width, the compose
+    assert_eq!(mapper.map_normalize("ﬁ".chars()).collect::<String>(), "fi"); // ligature expanded
+    assert_eq!(mapper.map_normalize("\u{FDFA}".chars()).collect::<String>(), "\u{0635}\u{0644}\u{0649} \u{0627}\u{0644}\u{0644}\u{0647} \u{0639}\u{0644}\u{064A}\u{0647} \u{0648}\u{0633}\u{0644}\u{0645}");
+    // ligature expanded
+    assert_eq!(
+        mapper.map_normalize("㈎".chars()).collect::<String>(),
+        "(가)"
+    ); // parenthetical expanded and partially recomposed
+
+    // Deviations (UTS 46, 6 Mapping Table Derivation, Step 4)
+    assert_eq!(
+        mapper.map_normalize("\u{200C}".chars()).collect::<String>(),
+        "\u{200C}"
+    );
+    assert_eq!(
+        mapper.map_normalize("\u{200D}".chars()).collect::<String>(),
+        "\u{200D}"
+    );
+    assert_eq!(mapper.map_normalize("ß".chars()).collect::<String>(), "ß");
+    assert_eq!(mapper.map_normalize("ς".chars()).collect::<String>(), "ς");
+
+    // Iota subscript
+    assert_eq!(
+        mapper.map_normalize("\u{0345}".chars()).collect::<String>(),
+        "ι"
+    );
+
+    // Disallowed
+    assert_eq!(
+        mapper.map_normalize("\u{061C}".chars()).collect::<String>(),
+        "\u{FFFD}"
+    );
+
+    // Ignored
+    assert_eq!(
+        mapper
+            .map_normalize("a\u{180B}b".chars())
+            .collect::<String>(),
+        "ab"
+    );
+}
+
+#[test]
+fn test_uts46_owned() {
+    let owned = Uts46Mapper::try_new(&icu_normalizer::provider::Baked).unwrap();
+    let mapper = owned.as_borrowed();
+    assert_eq!(
+        mapper
+            .map_normalize("a\u{0308}".chars())
+            .collect::<String>(),
+        "ä"
+    );
+    assert_eq!(
+        mapper
+            .map_normalize("A\u{0308}".chars())
+            .collect::<String>(),
+        "ä"
+    );
+    assert_eq!(
+        mapper
+            .map_normalize("e\u{0323}\u{0302}".chars())
+            .collect::<String>(),
+        "ệ"
+    );
+    assert_eq!(
+        mapper
+            .map_normalize("E\u{0323}\u{0302}".chars())
+            .collect::<String>(),
+        "ệ"
+    );
+    assert_eq!(
+        mapper.map_normalize("𝅗𝅥".chars()).collect::<String>(),
+        "𝅗\u{1D165}"
+    ); // Composition exclusion
+
+    assert_eq!(
+        mapper.map_normalize("\u{2126}".chars()).collect::<String>(),
+        "ω"
+    ); // ohm sign
+    assert_eq!(mapper.map_normalize("ﾍﾞ".chars()).collect::<String>(), "ベ"); // half-width to full-width, the compose
+    assert_eq!(mapper.map_normalize("ﾍﾟ".chars()).collect::<String>(), "ペ"); // half-width to full-width, the compose
+    assert_eq!(mapper.map_normalize("ﬁ".chars()).collect::<String>(), "fi"); // ligature expanded
+    assert_eq!(mapper.map_normalize("\u{FDFA}".chars()).collect::<String>(), "\u{0635}\u{0644}\u{0649} \u{0627}\u{0644}\u{0644}\u{0647} \u{0639}\u{0644}\u{064A}\u{0647} \u{0648}\u{0633}\u{0644}\u{0645}");
+    // ligature expanded
+    assert_eq!(
+        mapper.map_normalize("㈎".chars()).collect::<String>(),
+        "(가)"
+    ); // parenthetical expanded and partially recomposed
+
+    // Deviations (UTS 46, 6 Mapping Table Derivation, Step 4)
+    assert_eq!(
+        mapper.map_normalize("\u{200C}".chars()).collect::<String>(),
+        "\u{200C}"
+    );
+    assert_eq!(
+        mapper.map_normalize("\u{200D}".chars()).collect::<String>(),
+        "\u{200D}"
+    );
+    assert_eq!(mapper.map_normalize("ß".chars()).collect::<String>(), "ß");
+    assert_eq!(mapper.map_normalize("ς".chars()).collect::<String>(), "ς");
+
+    // Iota subscript
+    assert_eq!(
+        mapper.map_normalize("\u{0345}".chars()).collect::<String>(),
+        "ι"
+    );
+
+    // Disallowed
+    assert_eq!(
+        mapper.map_normalize("\u{061C}".chars()).collect::<String>(),
+        "\u{FFFD}"
+    );
+
+    // Ignored
+    assert_eq!(
+        mapper
+            .map_normalize("a\u{180B}b".chars())
+            .collect::<String>(),
+        "ab"
+    );
+}
+
+#[test]
+fn test_uts46_normalize_validate() {
+    let mapper = Uts46MapperBorrowed::new();
+    assert_eq!(
+        mapper
+            .normalize_validate("a\u{0308}".chars())
+            .collect::<String>(),
+        "ä"
+    );
+    assert_eq!(
+        mapper
+            .normalize_validate("A\u{0308}".chars())
+            .collect::<String>(),
+        "ä"
+    );
+    assert_eq!(
+        mapper
+            .normalize_validate("e\u{0323}\u{0302}".chars())
+            .collect::<String>(),
+        "ệ"
+    );
+    assert_eq!(
+        mapper
+            .normalize_validate("E\u{0323}\u{0302}".chars())
+            .collect::<String>(),
+        "ệ"
+    );
+    assert_eq!(
+        mapper.normalize_validate("𝅗𝅥".chars()).collect::<String>(),
+        "𝅗\u{1D165}"
+    ); // Composition exclusion
+
+    assert_eq!(
+        mapper
+            .normalize_validate("\u{2126}".chars())
+            .collect::<String>(),
+        "ω"
+    ); // ohm sign
+    assert_eq!(
+        mapper.normalize_validate("ﾍﾞ".chars()).collect::<String>(),
+        "ベ"
+    ); // half-width to full-width, the compose
+    assert_eq!(
+        mapper.normalize_validate("ﾍﾟ".chars()).collect::<String>(),
+        "ペ"
+    ); // half-width to full-width, the compose
+    assert_eq!(
+        mapper.normalize_validate("ﬁ".chars()).collect::<String>(),
+        "fi"
+    ); // ligature expanded
+    assert_eq!(mapper.normalize_validate("\u{FDFA}".chars()).collect::<String>(), "\u{0635}\u{0644}\u{0649} \u{0627}\u{0644}\u{0644}\u{0647} \u{0639}\u{0644}\u{064A}\u{0647} \u{0648}\u{0633}\u{0644}\u{0645}");
+    // ligature expanded
+    assert_eq!(
+        mapper.normalize_validate("㈎".chars()).collect::<String>(),
+        "(가)"
+    ); // parenthetical expanded and partially recomposed
+
+    // Deviations (UTS 46, 6 Mapping Table Derivation, Step 4)
+    assert_eq!(
+        mapper
+            .normalize_validate("\u{200C}".chars())
+            .collect::<String>(),
+        "\u{200C}"
+    );
+    assert_eq!(
+        mapper
+            .normalize_validate("\u{200D}".chars())
+            .collect::<String>(),
+        "\u{200D}"
+    );
+    assert_eq!(
+        mapper.normalize_validate("ß".chars()).collect::<String>(),
+        "ß"
+    );
+    assert_eq!(
+        mapper.normalize_validate("ς".chars()).collect::<String>(),
+        "ς"
+    );
+
+    // Iota subscript
+    assert_eq!(
+        mapper
+            .normalize_validate("\u{0345}".chars())
+            .collect::<String>(),
+        "ι"
+    );
+
+    // Disallowed
+    assert_eq!(
+        mapper
+            .normalize_validate("\u{061C}".chars())
+            .collect::<String>(),
+        "\u{FFFD}"
+    );
+
+    // Ignored
+    assert_eq!(
+        mapper
+            .normalize_validate("a\u{180B}b".chars())
+            .collect::<String>(),
+        "a\u{FFFD}b"
+    );
+}
+
+type StackString = arraystring::ArrayString<arraystring::typenum::U48>;
+
+#[test]
+fn test_nfd_str_to() {
+    let normalizer = DecomposingNormalizerBorrowed::new_nfd();
+
+    let mut buf = StackString::new();
+    assert!(normalizer.normalize_to("ä", &mut buf).is_ok());
+    assert_eq!(&buf, "a\u{0308}");
+
+    buf.clear();
+    assert!(normalizer.normalize_to("ệ", &mut buf).is_ok());
+    assert_eq!(&buf, "e\u{0323}\u{0302}");
+}
+
+#[test]
+fn test_nfd_utf8_to() {
+    let normalizer = DecomposingNormalizerBorrowed::new_nfd();
+
+    let mut buf = StackString::new();
+    assert!(normalizer
+        .normalize_utf8_to("ä".as_bytes(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "a\u{0308}");
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf8_to("ệ".as_bytes(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "e\u{0323}\u{0302}");
+}
+
+type StackVec = arrayvec::ArrayVec<u16, 32>;
+
+#[test]
+fn test_nfd_utf16_to() {
+    let normalizer = DecomposingNormalizerBorrowed::new_nfd();
+
+    let mut buf = StackVec::new();
+    assert!(normalizer
+        .normalize_utf16_to([0x00E4u16].as_slice(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, [0x0061u16, 0x0308u16].as_slice());
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to([0x1EC7u16].as_slice(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, [0x0065u16, 0x0323u16, 0x0302u16].as_slice());
+}
+
+#[test]
+fn test_nfc_str_to() {
+    let normalizer = ComposingNormalizerBorrowed::new_nfc();
+
+    let mut buf = StackString::new();
+    assert!(normalizer.normalize_to("a\u{0308}", &mut buf).is_ok());
+    assert_eq!(&buf, "ä");
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_to("e\u{0323}\u{0302}", &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "ệ");
+}
+
+#[test]
+fn test_nfc_utf8_to() {
+    let normalizer = ComposingNormalizerBorrowed::new_nfc();
+
+    let mut buf = StackString::new();
+    assert!(normalizer
+        .normalize_utf8_to("a\u{0308}".as_bytes(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "ä");
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf8_to("e\u{0323}\u{0302}".as_bytes(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "ệ");
+}
+
+#[test]
+fn test_nfc_utf16_to() {
+    let normalizer = ComposingNormalizerBorrowed::new_nfc();
+
+    let mut buf = StackVec::new();
+    assert!(normalizer
+        .normalize_utf16_to([0x0061u16, 0x0308u16].as_slice(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, [0x00E4u16].as_slice());
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to([0x0065u16, 0x0323u16, 0x0302u16].as_slice(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, [0x1EC7u16].as_slice());
+}
+
+#[test]
+fn test_nfc_utf8_to_errors() {
+    let normalizer = ComposingNormalizerBorrowed::new_nfc();
+
+    let mut buf = StackString::new();
+    assert!(normalizer
+        .normalize_utf8_to(b"\xFFa\xCC\x88\xFF", &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "\u{FFFD}ä\u{FFFD}");
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf8_to(b"\x80e\xCC\xA3\xCC\x82\x80", &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "\u{FFFD}ệ\u{FFFD}");
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf8_to(b"aaa\xFFaaa\xFFaaa", &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "aaa\u{FFFD}aaa\u{FFFD}aaa");
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf8_to(b"aaa\xE2\x98aaa\xE2\x98aaa", &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "aaa\u{FFFD}aaa\u{FFFD}aaa");
+}
+
+#[test]
+fn test_nfd_utf8_to_errors() {
+    let normalizer = DecomposingNormalizerBorrowed::new_nfd();
+
+    let mut buf = StackString::new();
+    assert!(normalizer
+        .normalize_utf8_to(b"\xFF\xC3\xA4\xFF", &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "\u{FFFD}a\u{0308}\u{FFFD}");
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf8_to(b"\x80\xE1\xBB\x87\x80", &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "\u{FFFD}e\u{0323}\u{0302}\u{FFFD}");
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf8_to(b"aaa\xFFaaa\xFFaaa", &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "aaa\u{FFFD}aaa\u{FFFD}aaa");
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf8_to(b"aaa\xE2\x98aaa\xE2\x98aaa", &mut buf)
+        .is_ok());
+    assert_eq!(&buf, "aaa\u{FFFD}aaa\u{FFFD}aaa");
+}
+
+#[test]
+fn test_nfc_utf16_to_errors() {
+    let normalizer = ComposingNormalizerBorrowed::new_nfc();
+
+    let mut buf = StackVec::new();
+    assert!(normalizer
+        .normalize_utf16_to([0xD800u16, 0x0061u16, 0x0308u16].as_slice(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, [0xFFFDu16, 0x00E4u16].as_slice());
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to([0xDC00u16, 0x0061u16, 0x0308u16].as_slice(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, [0xFFFDu16, 0x00E4u16].as_slice());
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xD800u16, 0x0061u16, 0x0308u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(&buf, [0x0061u16, 0xFFFDu16, 0x00E4u16].as_slice());
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xDC00u16, 0x0061u16, 0x0308u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(&buf, [0x0061u16, 0xFFFDu16, 0x00E4u16].as_slice());
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xD800u16, 0x0061u16, 0x0308u16, 0xD800u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x00E4u16, 0xFFFDu16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xDC00u16, 0x0061u16, 0x0308u16, 0xDC00u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x00E4u16, 0xFFFDu16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xD800u16, 0x0061u16, 0x0061u16, 0xD800u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0061u16, 0x0061u16, 0xFFFDu16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xDC00u16, 0x0061u16, 0x0061u16, 0xDC00u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0061u16, 0x0061u16, 0xFFFDu16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xD800u16, 0x0308u16, 0xD800u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0308u16, 0xFFFDu16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xDC00u16, 0x0308u16, 0xDC00u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0308u16, 0xFFFDu16].as_slice()
+    );
+}
+
+#[test]
+fn test_nfd_utf16_to_errors() {
+    let normalizer = DecomposingNormalizerBorrowed::new_nfd();
+
+    let mut buf = StackVec::new();
+    assert!(normalizer
+        .normalize_utf16_to([0xD800u16, 0x00E4u16].as_slice(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, [0xFFFDu16, 0x0061u16, 0x0308u16].as_slice());
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to([0xDC00u16, 0x00E4u16].as_slice(), &mut buf)
+        .is_ok());
+    assert_eq!(&buf, [0xFFFDu16, 0x0061u16, 0x0308u16].as_slice());
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to([0x0061u16, 0xD800u16, 0x00E4u16].as_slice(), &mut buf)
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0061u16, 0x0308u16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to([0x0061u16, 0xDC00u16, 0x00E4u16].as_slice(), &mut buf)
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0061u16, 0x0308u16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xD800u16, 0x00E4u16, 0xD800u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0061u16, 0x0308u16, 0xFFFDu16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xDC00u16, 0x00E4u16, 0xDC00u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0061u16, 0x0308u16, 0xFFFDu16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xD800u16, 0x0061u16, 0x0061u16, 0xD800u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0061u16, 0x0061u16, 0xFFFDu16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xDC00u16, 0x0061u16, 0x0061u16, 0xDC00u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0061u16, 0x0061u16, 0xFFFDu16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xD800u16, 0x0308u16, 0xD800u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0308u16, 0xFFFDu16].as_slice()
+    );
+
+    buf.clear();
+    assert!(normalizer
+        .normalize_utf16_to(
+            [0x0061u16, 0xDC00u16, 0x0308u16, 0xDC00u16].as_slice(),
+            &mut buf
+        )
+        .is_ok());
+    assert_eq!(
+        &buf,
+        [0x0061u16, 0xFFFDu16, 0x0308u16, 0xFFFDu16].as_slice()
+    );
+}
+
+use atoi::FromRadix16;
+use icu_properties::props::CanonicalCombiningClass;
+
+/// Parse five semicolon-terminated strings consisting of space-separated hexadecimal scalar values
+fn parse_hex(mut hexes: &[u8]) -> [StackString; 5] {
+    let mut strings = [
+        StackString::new(),
+        StackString::new(),
+        StackString::new(),
+        StackString::new(),
+        StackString::new(),
+    ];
+    let mut current = 0;
+    loop {
+        let (scalar, mut offset) = u32::from_radix_16(hexes);
+        let c = core::char::from_u32(scalar).unwrap();
+        strings[current].try_push(c).unwrap();
+        match hexes[offset] {
+            b';' => {
+                current += 1;
+                if current == strings.len() {
+                    return strings;
+                }
+                offset += 1;
+            }
+            b' ' => {
+                offset += 1;
+            }
+            _ => {
+                panic!("Bad format: Garbage");
+            }
+        }
+        hexes = &hexes[offset..];
+    }
+}
+
+#[test]
+fn test_conformance() {
+    let nfd = DecomposingNormalizerBorrowed::new_nfd();
+    let nfkd = DecomposingNormalizerBorrowed::new_nfkd();
+    let nfc = ComposingNormalizerBorrowed::new_nfc();
+    let nfkc = ComposingNormalizerBorrowed::new_nfkc();
+
+    let mut prev = 0u32;
+    let mut part = 0u8;
+    let data = include_bytes!("data/NormalizationTest.txt");
+    let lines = data.split(|b| b == &b'\n');
+    for line in lines {
+        if line.is_empty() {
+            continue;
+        }
+        if line.starts_with(b"#") {
+            continue;
+        }
+        if line.starts_with(&b"@Part"[..]) {
+            part = line[5] - b'0';
+            if part == 2 {
+                for u in prev + 1..=0x10FFFF {
+                    if let Some(c) = char::from_u32(u) {
+                        assert!(nfd
+                            .normalize_iter(core::iter::once(c))
+                            .eq(core::iter::once(c)));
+                        assert!(nfkd
+                            .normalize_iter(core::iter::once(c))
+                            .eq(core::iter::once(c)));
+                        assert!(nfc
+                            .normalize_iter(core::iter::once(c))
+                            .eq(core::iter::once(c)));
+                        assert!(nfkc
+                            .normalize_iter(core::iter::once(c))
+                            .eq(core::iter::once(c)));
+                    }
+                }
+            }
+            continue;
+        }
+        let strings = parse_hex(line);
+        // 0: source
+        // 1: NFC
+        // 2: NFD
+        // 3: NFKC
+        // 4: NFKD
+        if part == 1 {
+            let mut iter = strings[0].chars();
+            let current = iter.next().unwrap();
+            assert_eq!(iter.next(), None);
+            let current_u = u32::from(current);
+            for u in prev + 1..current_u {
+                if let Some(c) = char::from_u32(u) {
+                    assert!(nfd
+                        .normalize_iter(core::iter::once(c))
+                        .eq(core::iter::once(c)));
+                    assert!(nfkd
+                        .normalize_iter(core::iter::once(c))
+                        .eq(core::iter::once(c)));
+                    assert!(nfc
+                        .normalize_iter(core::iter::once(c))
+                        .eq(core::iter::once(c)));
+                    assert!(nfkc
+                        .normalize_iter(core::iter::once(c))
+                        .eq(core::iter::once(c)));
+                }
+            }
+            prev = current_u;
+        }
+        // NFC
+        assert!(nfc
+            .normalize_iter(strings[0].chars())
+            .eq(strings[1].chars()));
+        assert!(nfc
+            .normalize_iter(strings[1].chars())
+            .eq(strings[1].chars()));
+        assert!(nfc
+            .normalize_iter(strings[2].chars())
+            .eq(strings[1].chars()));
+
+        assert!(nfc
+            .normalize_iter(strings[3].chars())
+            .eq(strings[3].chars()));
+        assert!(nfc
+            .normalize_iter(strings[4].chars())
+            .eq(strings[3].chars()));
+
+        // NFD
+        assert!(nfd
+            .normalize_iter(strings[0].chars())
+            .eq(strings[2].chars()));
+        assert!(nfd
+            .normalize_iter(strings[1].chars())
+            .eq(strings[2].chars()));
+        assert!(nfd
+            .normalize_iter(strings[2].chars())
+            .eq(strings[2].chars()));
+
+        assert!(nfd
+            .normalize_iter(strings[3].chars())
+            .eq(strings[4].chars()));
+        assert!(nfd
+            .normalize_iter(strings[4].chars())
+            .eq(strings[4].chars()));
+
+        // NFKC
+        assert!(nfkc
+            .normalize_iter(strings[0].chars())
+            .eq(strings[3].chars()));
+        assert!(nfkc
+            .normalize_iter(strings[1].chars())
+            .eq(strings[3].chars()));
+        assert!(nfkc
+            .normalize_iter(strings[2].chars())
+            .eq(strings[3].chars()));
+        assert!(nfkc
+            .normalize_iter(strings[3].chars())
+            .eq(strings[3].chars()));
+        assert!(nfkc
+            .normalize_iter(strings[4].chars())
+            .eq(strings[3].chars()));
+
+        // NFKD
+        assert!(nfkd
+            .normalize_iter(strings[0].chars())
+            .eq(strings[4].chars()));
+        assert!(nfkd
+            .normalize_iter(strings[1].chars())
+            .eq(strings[4].chars()));
+        assert!(nfkd
+            .normalize_iter(strings[2].chars())
+            .eq(strings[4].chars()));
+        assert!(nfkd
+            .normalize_iter(strings[3].chars())
+            .eq(strings[4].chars()));
+        assert!(nfkd
+            .normalize_iter(strings[4].chars())
+            .eq(strings[4].chars()));
+    }
+}
+
+// Commented out, because we don't currently have a way to force a no-op set for testing.
+// #[test]
+// fn test_hangul() {
+//     use icu_collections::codepointinvlist::{CodePointSet, CodePointSetBuilder};
+//     use zerofrom::ZeroFrom;
+//     let builder = CodePointSetBuilder::new();
+//     let set: CodePointSet = builder.build();
+
+//     let normalizer: ComposingNormalizer = ComposingNormalizerBorrowed::new_nfc();
+//     {
+//         let mut norm_iter = normalizer.normalize_iter("A\u{AC00}\u{11A7}".chars());
+//         // Pessimize passthrough to avoid hiding bugs.
+//         norm_iter
+//             .decomposition
+//             .potential_passthrough_and_not_backward_combining = Some(ZeroFrom::zero_from(&set));
+//         assert!(norm_iter.eq("A\u{AC00}\u{11A7}".chars()));
+//     }
+//     {
+//         let mut norm_iter = normalizer.normalize_iter("A\u{AC00}\u{11C2}".chars());
+//         // Pessimize passthrough to avoid hiding bugs.
+//         norm_iter
+//             .decomposition
+//             .potential_passthrough_and_not_backward_combining = Some(ZeroFrom::zero_from(&set));
+//         assert!(norm_iter.eq("A\u{AC1B}".chars()));
+//     }
+// }
+
+fn str_to_utf16(s: &str, sink: &mut StackVec) {
+    sink.clear();
+    let mut buf = [0u16; 2];
+    for c in s.chars() {
+        sink.try_extend_from_slice(c.encode_utf16(&mut buf))
+            .unwrap();
+    }
+}
+
+fn char_to_utf16(c: char, sink: &mut StackVec) {
+    sink.clear();
+    let mut buf = [0u16; 2];
+    sink.try_extend_from_slice(c.encode_utf16(&mut buf))
+        .unwrap();
+}
+
+fn str_to_str(s: &str, sink: &mut StackString) {
+    sink.clear();
+    sink.try_push_str(s).unwrap();
+}
+
+fn char_to_str(c: char, sink: &mut StackString) {
+    sink.clear();
+    sink.try_push(c).unwrap();
+}
+
+#[test]
+fn test_conformance_utf16() {
+    let nfd = DecomposingNormalizerBorrowed::new_nfd();
+    let nfkd = DecomposingNormalizerBorrowed::new_nfkd();
+    let nfc = ComposingNormalizerBorrowed::new_nfc();
+    let nfkc = ComposingNormalizerBorrowed::new_nfkc();
+
+    let mut input = StackVec::new();
+    let mut normalized = StackVec::new();
+    let mut expected = StackVec::new();
+
+    let mut prev = 0u32;
+    let mut part = 0u8;
+    let data = include_bytes!("data/NormalizationTest.txt");
+    let lines = data.split(|b| b == &b'\n');
+    for line in lines {
+        if line.is_empty() {
+            continue;
+        }
+        if line.starts_with(b"#") {
+            continue;
+        }
+        if line.starts_with(&b"@Part"[..]) {
+            part = line[5] - b'0';
+            if part == 2 {
+                for u in prev + 1..=0x10FFFF {
+                    if let Some(c) = char::from_u32(u) {
+                        normalized.clear();
+                        char_to_utf16(c, &mut input);
+                        assert!(nfd.normalize_utf16_to(&input, &mut normalized).is_ok());
+                        assert_eq!(&normalized, &input);
+
+                        normalized.clear();
+                        char_to_utf16(c, &mut input);
+                        assert!(nfkd.normalize_utf16_to(&input, &mut normalized).is_ok());
+                        assert_eq!(&normalized, &input);
+
+                        normalized.clear();
+                        char_to_utf16(c, &mut input);
+                        assert!(nfc.normalize_utf16_to(&input, &mut normalized).is_ok());
+                        assert_eq!(&normalized, &input);
+
+                        normalized.clear();
+                        char_to_utf16(c, &mut input);
+                        assert!(nfkc.normalize_utf16_to(&input, &mut normalized).is_ok());
+                        assert_eq!(&normalized, &input);
+                    }
+                }
+            }
+            continue;
+        }
+        let strings = parse_hex(line);
+        // 0: source
+        // 1: NFC
+        // 2: NFD
+        // 3: NFKC
+        // 4: NFKD
+        if part == 1 {
+            let mut iter = strings[0].chars();
+            let current = iter.next().unwrap();
+            assert_eq!(iter.next(), None);
+            let current_u = u32::from(current);
+            for u in prev + 1..current_u {
+                if let Some(c) = char::from_u32(u) {
+                    normalized.clear();
+                    char_to_utf16(c, &mut input);
+                    assert!(nfd.normalize_utf16_to(&input, &mut normalized).is_ok());
+                    assert_eq!(&normalized, &input);
+
+                    normalized.clear();
+                    char_to_utf16(c, &mut input);
+                    assert!(nfkd.normalize_utf16_to(&input, &mut normalized).is_ok());
+                    assert_eq!(&normalized, &input);
+
+                    normalized.clear();
+                    char_to_utf16(c, &mut input);
+                    assert!(nfc.normalize_utf16_to(&input, &mut normalized).is_ok());
+                    assert_eq!(&normalized, &input);
+
+                    normalized.clear();
+                    char_to_utf16(c, &mut input);
+                    assert!(nfkc.normalize_utf16_to(&input, &mut normalized).is_ok());
+                    assert_eq!(&normalized, &input);
+                }
+            }
+            prev = current_u;
+        }
+        // NFC
+        normalized.clear();
+        str_to_utf16(&strings[0], &mut input);
+        str_to_utf16(&strings[1], &mut expected);
+        assert!(nfc.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[1], &mut input);
+        str_to_utf16(&strings[1], &mut expected);
+        assert!(nfc.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[2], &mut input);
+        str_to_utf16(&strings[1], &mut expected);
+        assert!(nfc.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[3], &mut input);
+        str_to_utf16(&strings[3], &mut expected);
+        assert!(nfc.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[4], &mut input);
+        str_to_utf16(&strings[3], &mut expected);
+        assert!(nfc.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        // NFD
+        normalized.clear();
+        str_to_utf16(&strings[0], &mut input);
+        str_to_utf16(&strings[2], &mut expected);
+        assert!(nfd.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[1], &mut input);
+        str_to_utf16(&strings[2], &mut expected);
+        assert!(nfd.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[2], &mut input);
+        str_to_utf16(&strings[2], &mut expected);
+        assert!(nfd.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[3], &mut input);
+        str_to_utf16(&strings[4], &mut expected);
+        assert!(nfd.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[4], &mut input);
+        str_to_utf16(&strings[4], &mut expected);
+        assert!(nfd.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        // NFKC
+        normalized.clear();
+        str_to_utf16(&strings[0], &mut input);
+        str_to_utf16(&strings[3], &mut expected);
+        assert!(nfkc.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[1], &mut input);
+        str_to_utf16(&strings[3], &mut expected);
+        assert!(nfkc.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[2], &mut input);
+        str_to_utf16(&strings[3], &mut expected);
+        assert!(nfkc.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[3], &mut input);
+        str_to_utf16(&strings[3], &mut expected);
+        assert!(nfkc.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[4], &mut input);
+        str_to_utf16(&strings[3], &mut expected);
+        assert!(nfkc.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        // NFKD
+        normalized.clear();
+        str_to_utf16(&strings[0], &mut input);
+        str_to_utf16(&strings[4], &mut expected);
+        assert!(nfkd.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[1], &mut input);
+        str_to_utf16(&strings[4], &mut expected);
+        assert!(nfkd.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[2], &mut input);
+        str_to_utf16(&strings[4], &mut expected);
+        assert!(nfkd.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[3], &mut input);
+        str_to_utf16(&strings[4], &mut expected);
+        assert!(nfkd.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_utf16(&strings[4], &mut input);
+        str_to_utf16(&strings[4], &mut expected);
+        assert!(nfkd.normalize_utf16_to(&input, &mut normalized).is_ok());
+        assert_eq!(&normalized, &expected);
+    }
+}
+
+#[test]
+fn test_conformance_utf8() {
+    let nfd = DecomposingNormalizerBorrowed::new_nfd();
+    let nfkd = DecomposingNormalizerBorrowed::new_nfkd();
+    let nfc = ComposingNormalizerBorrowed::new_nfc();
+    let nfkc = ComposingNormalizerBorrowed::new_nfkc();
+
+    let mut input = StackString::new();
+    let mut normalized = StackString::new();
+    let mut expected = StackString::new();
+
+    let mut prev = 0u32;
+    let mut part = 0u8;
+    let data = include_bytes!("data/NormalizationTest.txt");
+    let lines = data.split(|b| b == &b'\n');
+    for line in lines {
+        if line.is_empty() {
+            continue;
+        }
+        if line.starts_with(b"#") {
+            continue;
+        }
+        if line.starts_with(&b"@Part"[..]) {
+            part = line[5] - b'0';
+            if part == 2 {
+                for u in prev + 1..=0x10FFFF {
+                    if let Some(c) = char::from_u32(u) {
+                        normalized.clear();
+                        char_to_str(c, &mut input);
+                        assert!(nfd
+                            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+                            .is_ok());
+                        assert_eq!(&normalized, &input);
+
+                        normalized.clear();
+                        char_to_str(c, &mut input);
+                        assert!(nfkd
+                            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+                            .is_ok());
+                        assert_eq!(&normalized, &input);
+
+                        normalized.clear();
+                        char_to_str(c, &mut input);
+                        assert!(nfc
+                            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+                            .is_ok());
+                        assert_eq!(&normalized, &input);
+
+                        normalized.clear();
+                        char_to_str(c, &mut input);
+                        assert!(nfkc
+                            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+                            .is_ok());
+                        assert_eq!(&normalized, &input);
+                    }
+                }
+            }
+            continue;
+        }
+        let strings = parse_hex(line);
+        // 0: source
+        // 1: NFC
+        // 2: NFD
+        // 3: NFKC
+        // 4: NFKD
+        if part == 1 {
+            let mut iter = strings[0].chars();
+            let current = iter.next().unwrap();
+            assert_eq!(iter.next(), None);
+            let current_u = u32::from(current);
+            for u in prev + 1..current_u {
+                if let Some(c) = char::from_u32(u) {
+                    normalized.clear();
+                    char_to_str(c, &mut input);
+                    assert!(nfd
+                        .normalize_utf8_to(input.as_bytes(), &mut normalized)
+                        .is_ok());
+                    assert_eq!(&normalized, &input);
+
+                    normalized.clear();
+                    char_to_str(c, &mut input);
+                    assert!(nfkd
+                        .normalize_utf8_to(input.as_bytes(), &mut normalized)
+                        .is_ok());
+                    assert_eq!(&normalized, &input);
+
+                    normalized.clear();
+                    char_to_str(c, &mut input);
+                    assert!(nfc
+                        .normalize_utf8_to(input.as_bytes(), &mut normalized)
+                        .is_ok());
+                    assert_eq!(&normalized, &input);
+
+                    normalized.clear();
+                    char_to_str(c, &mut input);
+                    assert!(nfkc
+                        .normalize_utf8_to(input.as_bytes(), &mut normalized)
+                        .is_ok());
+                    assert_eq!(&normalized, &input);
+                }
+            }
+            prev = current_u;
+        }
+        // NFC
+        normalized.clear();
+        str_to_str(&strings[0], &mut input);
+        str_to_str(&strings[1], &mut expected);
+        assert!(nfc
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[1], &mut input);
+        str_to_str(&strings[1], &mut expected);
+        assert!(nfc
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[2], &mut input);
+        str_to_str(&strings[1], &mut expected);
+        assert!(nfc
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[3], &mut input);
+        str_to_str(&strings[3], &mut expected);
+        assert!(nfc
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[4], &mut input);
+        str_to_str(&strings[3], &mut expected);
+        assert!(nfc
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        // NFD
+        normalized.clear();
+        str_to_str(&strings[0], &mut input);
+        str_to_str(&strings[2], &mut expected);
+        assert!(nfd
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[1], &mut input);
+        str_to_str(&strings[2], &mut expected);
+        assert!(nfd
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[2], &mut input);
+        str_to_str(&strings[2], &mut expected);
+        assert!(nfd
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[3], &mut input);
+        str_to_str(&strings[4], &mut expected);
+        assert!(nfd
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[4], &mut input);
+        str_to_str(&strings[4], &mut expected);
+        assert!(nfd
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        // NFKC
+        normalized.clear();
+        str_to_str(&strings[0], &mut input);
+        str_to_str(&strings[3], &mut expected);
+        assert!(nfkc
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[1], &mut input);
+        str_to_str(&strings[3], &mut expected);
+        assert!(nfkc
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[2], &mut input);
+        str_to_str(&strings[3], &mut expected);
+        assert!(nfkc
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[3], &mut input);
+        str_to_str(&strings[3], &mut expected);
+        assert!(nfkc
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[4], &mut input);
+        str_to_str(&strings[3], &mut expected);
+        assert!(nfkc
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        // NFKD
+        normalized.clear();
+        str_to_str(&strings[0], &mut input);
+        str_to_str(&strings[4], &mut expected);
+        assert!(nfkd
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[1], &mut input);
+        str_to_str(&strings[4], &mut expected);
+        assert!(nfkd
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[2], &mut input);
+        str_to_str(&strings[4], &mut expected);
+        assert!(nfkd
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[3], &mut input);
+        str_to_str(&strings[4], &mut expected);
+        assert!(nfkd
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+
+        normalized.clear();
+        str_to_str(&strings[4], &mut input);
+        str_to_str(&strings[4], &mut expected);
+        assert!(nfkd
+            .normalize_utf8_to(input.as_bytes(), &mut normalized)
+            .is_ok());
+        assert_eq!(&normalized, &expected);
+    }
+}
+
+#[test]
+fn test_canonical_composition() {
+    let comp = CanonicalCompositionBorrowed::new();
+
+    assert_eq!(comp.compose('a', 'b'), None); // Just two starters
+
+    assert_eq!(comp.compose('a', '\u{0308}'), Some('ä'));
+    assert_eq!(comp.compose('A', '\u{0308}'), Some('Ä'));
+    assert_eq!(comp.compose('ẹ', '\u{0302}'), Some('ệ'));
+    assert_eq!(comp.compose('Ẹ', '\u{0302}'), Some('Ệ'));
+    assert_eq!(comp.compose('\u{1D157}', '\u{1D165}'), None); // Composition exclusion
+
+    assert_eq!(comp.compose('ে', 'া'), Some('ো')); // Second is starter; BMP
+    assert_eq!(comp.compose('𑄱', '𑄧'), Some('𑄮')); // Second is starter; non-BMP
+
+    assert_eq!(comp.compose('ᄀ', 'ᅡ'), Some('가')); // Hangul LV
+    assert_eq!(comp.compose('가', 'ᆨ'), Some('각')); // Hangul LVT
+}
+
+#[test]
+fn test_canonical_composition_owned() {
+    let owned = CanonicalComposition::try_new_unstable(&icu_normalizer::provider::Baked).unwrap();
+    let comp = owned.as_borrowed();
+
+    assert_eq!(comp.compose('a', 'b'), None); // Just two starters
+
+    assert_eq!(comp.compose('a', '\u{0308}'), Some('ä'));
+    assert_eq!(comp.compose('A', '\u{0308}'), Some('Ä'));
+    assert_eq!(comp.compose('ẹ', '\u{0302}'), Some('ệ'));
+    assert_eq!(comp.compose('Ẹ', '\u{0302}'), Some('Ệ'));
+    assert_eq!(comp.compose('\u{1D157}', '\u{1D165}'), None); // Composition exclusion
+
+    assert_eq!(comp.compose('ে', 'া'), Some('ো')); // Second is starter; BMP
+    assert_eq!(comp.compose('𑄱', '𑄧'), Some('𑄮')); // Second is starter; non-BMP
+
+    assert_eq!(comp.compose('ᄀ', 'ᅡ'), Some('가')); // Hangul LV
+    assert_eq!(comp.compose('가', 'ᆨ'), Some('각')); // Hangul LVT
+}
+
+#[test]
+fn test_canonical_decomposition() {
+    let decomp = CanonicalDecompositionBorrowed::new();
+
+    assert_eq!(
+        decomp.decompose('ä'),
+        Decomposed::Expansion('a', '\u{0308}')
+    );
+    assert_eq!(
+        decomp.decompose('Ä'),
+        Decomposed::Expansion('A', '\u{0308}')
+    );
+    assert_eq!(
+        decomp.decompose('ệ'),
+        Decomposed::Expansion('ẹ', '\u{0302}')
+    );
+    assert_eq!(
+        decomp.decompose('Ệ'),
+        Decomposed::Expansion('Ẹ', '\u{0302}')
+    );
+    assert_eq!(
+        decomp.decompose('\u{1D15E}'),
+        Decomposed::Expansion('\u{1D157}', '\u{1D165}')
+    );
+    assert_eq!(decomp.decompose('ো'), Decomposed::Expansion('ে', 'া'));
+    assert_eq!(decomp.decompose('𑄮'), Decomposed::Expansion('𑄱', '𑄧'));
+    assert_eq!(decomp.decompose('가'), Decomposed::Expansion('ᄀ', 'ᅡ'));
+    assert_eq!(decomp.decompose('각'), Decomposed::Expansion('가', 'ᆨ'));
+
+    assert_eq!(decomp.decompose('\u{212B}'), Decomposed::Singleton('Å')); // ANGSTROM SIGN
+    assert_eq!(decomp.decompose('\u{2126}'), Decomposed::Singleton('Ω')); // OHM SIGN
+
+    assert_eq!(decomp.decompose('\u{1F71}'), Decomposed::Singleton('ά')); // oxia
+    assert_eq!(
+        decomp.decompose('\u{1F72}'),
+        Decomposed::Expansion('ε', '\u{0300}')
+    ); // not oxia but in the oxia range
+    assert_eq!(
+        decomp.decompose('ά'),
+        Decomposed::Expansion('α', '\u{0301}')
+    ); // tonos
+}
+
+#[test]
+fn test_canonical_decomposition_owned() {
+    let owned = CanonicalDecomposition::try_new_unstable(&icu_normalizer::provider::Baked).unwrap();
+    let decomp = owned.as_borrowed();
+
+    assert_eq!(
+        decomp.decompose('ä'),
+        Decomposed::Expansion('a', '\u{0308}')
+    );
+    assert_eq!(
+        decomp.decompose('Ä'),
+        Decomposed::Expansion('A', '\u{0308}')
+    );
+    assert_eq!(
+        decomp.decompose('ệ'),
+        Decomposed::Expansion('ẹ', '\u{0302}')
+    );
+    assert_eq!(
+        decomp.decompose('Ệ'),
+        Decomposed::Expansion('Ẹ', '\u{0302}')
+    );
+    assert_eq!(
+        decomp.decompose('\u{1D15E}'),
+        Decomposed::Expansion('\u{1D157}', '\u{1D165}')
+    );
+    assert_eq!(decomp.decompose('ো'), Decomposed::Expansion('ে', 'া'));
+    assert_eq!(decomp.decompose('𑄮'), Decomposed::Expansion('𑄱', '𑄧'));
+    assert_eq!(decomp.decompose('가'), Decomposed::Expansion('ᄀ', 'ᅡ'));
+    assert_eq!(decomp.decompose('각'), Decomposed::Expansion('가', 'ᆨ'));
+
+    assert_eq!(decomp.decompose('\u{212B}'), Decomposed::Singleton('Å')); // ANGSTROM SIGN
+    assert_eq!(decomp.decompose('\u{2126}'), Decomposed::Singleton('Ω')); // OHM SIGN
+
+    assert_eq!(decomp.decompose('\u{1F71}'), Decomposed::Singleton('ά')); // oxia
+    assert_eq!(
+        decomp.decompose('\u{1F72}'),
+        Decomposed::Expansion('ε', '\u{0300}')
+    ); // not oxia but in the oxia range
+    assert_eq!(
+        decomp.decompose('ά'),
+        Decomposed::Expansion('α', '\u{0301}')
+    ); // tonos
+}
+
+#[test]
+fn test_ccc() {
+    let map = CanonicalCombiningClassMapBorrowed::new();
+    for u in 0..=0x10FFFF {
+        assert_eq!(
+            map.get32(u),
+            icu_properties::CodePointMapData::<CanonicalCombiningClass>::new().get32(u)
+        );
+    }
+}
+
+#[test]
+fn test_ccc_owned() {
+    let owned =
+        CanonicalCombiningClassMap::try_new_unstable(&icu_normalizer::provider::Baked).unwrap();
+    let map = owned.as_borrowed();
+    for u in 0..=0x10FFFF {
+        assert_eq!(
+            map.get32(u),
+            icu_properties::CodePointMapData::<CanonicalCombiningClass>::new().get32(u)
+        );
+    }
+}
+
+#[test]
+fn test_utf16_basic() {
+    let normalizer = ComposingNormalizerBorrowed::new_nfc();
+
+    assert_eq!(
+        normalizer.normalize_utf16(&[0x0061]).as_ref(),
+        [0x0061].as_slice()
+    );
+    assert_eq!(
+        normalizer.normalize_utf16(&[0x0300, 0x0323]).as_ref(),
+        [0x0323, 0x0300].as_slice()
+    );
+}
+
+#[test]
+fn test_accented_digraph() {
+    let normalizer = DecomposingNormalizerBorrowed::new_nfkd();
+    assert_eq!(
+        normalizer.normalize("\u{01C4}\u{0323}"),
+        "DZ\u{0323}\u{030C}"
+    );
+    assert_eq!(
+        normalizer.normalize("DZ\u{030C}\u{0323}"),
+        "DZ\u{0323}\u{030C}"
+    );
+}
+
+#[test]
+fn test_ddd() {
+    let normalizer = DecomposingNormalizerBorrowed::new_nfd();
+    assert_eq!(
+        normalizer.normalize("\u{0DDD}\u{0334}"),
+        "\u{0DD9}\u{0DCF}\u{0334}\u{0DCA}"
+    );
+}
+
+#[test]
+fn test_is_normalized() {
+    let nfd = DecomposingNormalizerBorrowed::new_nfd();
+    let nfkd = DecomposingNormalizerBorrowed::new_nfkd();
+    let nfc = ComposingNormalizerBorrowed::new_nfc();
+    let nfkc = ComposingNormalizerBorrowed::new_nfkc();
+
+    let aaa = "aaa";
+    assert!(nfd.is_normalized(aaa));
+    assert!(nfkd.is_normalized(aaa));
+    assert!(nfc.is_normalized(aaa));
+    assert!(nfkc.is_normalized(aaa));
+
+    assert!(nfd.is_normalized_utf8(aaa.as_bytes()));
+    assert!(nfkd.is_normalized_utf8(aaa.as_bytes()));
+    assert!(nfc.is_normalized_utf8(aaa.as_bytes()));
+    assert!(nfkc.is_normalized_utf8(aaa.as_bytes()));
+
+    let aaa16 = [0x0061u16, 0x0061u16, 0x0061u16].as_slice();
+    assert!(nfd.is_normalized_utf16(aaa16));
+    assert!(nfkd.is_normalized_utf16(aaa16));
+    assert!(nfc.is_normalized_utf16(aaa16));
+    assert!(nfkc.is_normalized_utf16(aaa16));
+
+    let affa = b"a\xFFa";
+    assert!(nfd.is_normalized_utf8(affa));
+    assert!(nfkd.is_normalized_utf8(affa));
+    assert!(nfc.is_normalized_utf8(affa));
+    assert!(nfkc.is_normalized_utf8(affa));
+
+    let a_surrogate_a = [0x0061u16, 0xD800u16, 0x0061u16].as_slice();
+    assert!(nfd.is_normalized_utf16(a_surrogate_a));
+    assert!(nfkd.is_normalized_utf16(a_surrogate_a));
+    assert!(nfc.is_normalized_utf16(a_surrogate_a));
+    assert!(nfkc.is_normalized_utf16(a_surrogate_a));
+
+    let note = "a𝅗\u{1D165}a";
+    assert!(nfd.is_normalized(note));
+    assert!(nfkd.is_normalized(note));
+    assert!(nfc.is_normalized(note));
+    assert!(nfkc.is_normalized(note));
+
+    assert!(nfd.is_normalized_utf8(note.as_bytes()));
+    assert!(nfkd.is_normalized_utf8(note.as_bytes()));
+    assert!(nfc.is_normalized_utf8(note.as_bytes()));
+    assert!(nfkc.is_normalized_utf8(note.as_bytes()));
+
+    let note16 = [
+        0x0061u16, 0xD834u16, 0xDD57u16, 0xD834u16, 0xDD65u16, 0x0061u16,
+    ]
+    .as_slice();
+    assert!(nfd.is_normalized_utf16(note16));
+    assert!(nfkd.is_normalized_utf16(note16));
+    assert!(nfc.is_normalized_utf16(note16));
+    assert!(nfkc.is_normalized_utf16(note16));
+
+    let umlaut = "aäa";
+    assert!(!nfd.is_normalized(umlaut));
+    assert!(!nfkd.is_normalized(umlaut));
+    assert!(nfc.is_normalized(umlaut));
+    assert!(nfkc.is_normalized(umlaut));
+
+    assert!(!nfd.is_normalized_utf8(umlaut.as_bytes()));
+    assert!(!nfkd.is_normalized_utf8(umlaut.as_bytes()));
+    assert!(nfc.is_normalized_utf8(umlaut.as_bytes()));
+    assert!(nfkc.is_normalized_utf8(umlaut.as_bytes()));
+
+    let umlaut16 = [0x0061u16, 0x00E4u16, 0x0061u16].as_slice();
+    assert!(!nfd.is_normalized_utf16(umlaut16));
+    assert!(!nfkd.is_normalized_utf16(umlaut16));
+    assert!(nfc.is_normalized_utf16(umlaut16));
+    assert!(nfkc.is_normalized_utf16(umlaut16));
+
+    let fraction = "a½a";
+    assert!(nfd.is_normalized(fraction));
+    assert!(!nfkd.is_normalized(fraction));
+    assert!(nfc.is_normalized(fraction));
+    assert!(!nfkc.is_normalized(fraction));
+
+    assert!(nfd.is_normalized_utf8(fraction.as_bytes()));
+    assert!(!nfkd.is_normalized_utf8(fraction.as_bytes()));
+    assert!(nfc.is_normalized_utf8(fraction.as_bytes()));
+    assert!(!nfkc.is_normalized_utf8(fraction.as_bytes()));
+
+    let fraction16 = [0x0061u16, 0x00BDu16, 0x0061u16].as_slice();
+    assert!(nfd.is_normalized_utf16(fraction16));
+    assert!(!nfkd.is_normalized_utf16(fraction16));
+    assert!(nfc.is_normalized_utf16(fraction16));
+    assert!(!nfkc.is_normalized_utf16(fraction16));
+}
+
+#[test]
+fn test_is_normalized_up_to() {
+    let nfd = DecomposingNormalizerBorrowed::new_nfd();
+    let nfkd = DecomposingNormalizerBorrowed::new_nfkd();
+    let nfc = ComposingNormalizerBorrowed::new_nfc();
+    let nfkc = ComposingNormalizerBorrowed::new_nfkc();
+
+    // Check a string slice is normalized up to where is_normalized_up_to reports
+    let check_str = |input: &str| {
+        // Check nfd
+        let (head, tail) = nfd.split_normalized(input);
+        let mut normalized = String::from(head);
+        let _ = nfd.normalize_to(tail, &mut normalized);
+        assert!(nfd.is_normalized(&normalized));
+
+        // Check nfkd
+        let (head, tail) = nfkd.split_normalized(input);
+        let mut normalized = String::from(head);
+        let _ = nfkd.normalize_to(tail, &mut normalized);
+        assert!(nfkd.is_normalized(&normalized));
+
+        // Check nfc
+        let (head, tail) = nfc.split_normalized(input);
+        let mut normalized = String::from(head);
+        let _ = nfc.normalize_to(tail, &mut normalized);
+        assert!(nfc.is_normalized(&normalized));
+
+        // Check nfkc
+        let (head, tail) = nfkc.split_normalized(input);
+        let mut normalized = String::from(head);
+        let _ = nfkc.normalize_to(tail, &mut normalized);
+        assert!(nfkc.is_normalized(&normalized));
+    };
+
+    // Check a string of UTF8 bytes is normalized up to where is_normalized_up_to reports
+    // note: from_utf8 can panic with invalid UTF8 input
+    let check_utf8 = |input: &[u8]| {
+        // Check nfd
+        let (head, tail) = nfd.split_normalized_utf8(input);
+        let mut normalized = String::from(head);
+        let _ = nfd.normalize_utf8_to(tail, &mut normalized);
+        assert!(nfd.is_normalized(&normalized));
+
+        // Check nfkd
+        let (head, tail) = nfkd.split_normalized_utf8(input);
+        let mut normalized = String::from(head);
+        let _ = nfkd.normalize_utf8_to(tail, &mut normalized);
+        assert!(nfkd.is_normalized(&normalized));
+
+        // Check nfc
+        let (head, tail) = nfc.split_normalized_utf8(input);
+        let mut normalized = String::from(head);
+        let _ = nfc.normalize_utf8_to(tail, &mut normalized);
+        assert!(nfc.is_normalized(&normalized));
+
+        // Check nfkc
+        let (head, tail) = nfkc.split_normalized_utf8(input);
+        let mut normalized = String::from(head);
+        let _ = nfkc.normalize_utf8_to(tail, &mut normalized);
+        assert!(nfkc.is_normalized(&normalized));
+    };
+
+    // Check a string of UTF-16 code units is normalized up to where is_normalized_up_to reports
+    let check_utf16 = |input: &[u16]| {
+        // Check nfd
+        let (head, tail) = nfd.split_normalized_utf16(input);
+        let mut normalized = head.to_vec();
+        let _ = nfd.normalize_utf16_to(tail, &mut normalized);
+        assert!(nfd.is_normalized_utf16(&normalized));
+
+        // Check nfkd
+        let (head, tail) = nfkd.split_normalized_utf16(input);
+        let mut normalized = head.to_vec();
+        let _ = nfkd.normalize_utf16_to(tail, &mut normalized);
+        assert!(nfkd.is_normalized_utf16(&normalized));
+
+        // Check nfc
+        let (head, tail) = nfc.split_normalized_utf16(input);
+        let mut normalized = head.to_vec();
+        let _ = nfc.normalize_utf16_to(tail, &mut normalized);
+        assert!(nfc.is_normalized_utf16(&normalized));
+
+        // Check nfkc
+        let (head, tail) = nfkc.split_normalized_utf16(input);
+        let mut normalized = head.to_vec();
+        let _ = nfkc.normalize_utf16_to(tail, &mut normalized);
+        assert!(nfkc.is_normalized_utf16(&normalized));
+    };
+
+    let aaa = "aaa";
+    check_str(aaa);
+
+    let aaa_utf8 = aaa.as_bytes();
+    check_utf8(aaa_utf8);
+
+    let aaa_utf16: Vec<u16> = aaa.encode_utf16().collect();
+    check_utf16(&aaa_utf16);
+
+    assert!(nfd.split_normalized(aaa).0.len() == aaa.len());
+    assert!(nfkd.split_normalized(aaa).0.len() == aaa.len());
+    assert!(nfc.split_normalized(aaa).0.len() == aaa.len());
+    assert!(nfkc.split_normalized(aaa).0.len() == aaa.len());
+    assert!(nfd.split_normalized_utf8(aaa_utf8).0.len() == aaa_utf8.len());
+    assert!(nfkd.split_normalized_utf8(aaa_utf8).0.len() == aaa_utf8.len());
+    assert!(nfc.split_normalized_utf8(aaa_utf8).0.len() == aaa_utf8.len());
+    assert!(nfkc.split_normalized_utf8(aaa_utf8).0.len() == aaa_utf8.len());
+    assert!(nfd.split_normalized_utf16(&aaa_utf16).0.len() == aaa_utf16.len());
+    assert!(nfkd.split_normalized_utf16(&aaa_utf16).0.len() == aaa_utf16.len());
+    assert!(nfc.split_normalized_utf16(&aaa_utf16).0.len() == aaa_utf16.len());
+    assert!(nfkc.split_normalized_utf16(&aaa_utf16).0.len() == aaa_utf16.len());
+
+    let note = "a𝅗\u{1D165}a";
+    check_str(note);
+
+    let note_utf8 = note.as_bytes();
+    check_utf8(note_utf8);
+
+    let note_utf16: Vec<u16> = note.encode_utf16().collect();
+    check_utf16(&note_utf16);
+
+    assert!(nfd.split_normalized(note).0.len() == note.len());
+    assert!(nfkd.split_normalized(note).0.len() == note.len());
+    assert!(nfc.split_normalized(note).0.len() == note.len());
+    assert!(nfkc.split_normalized(note).0.len() == note.len());
+    assert!(nfd.split_normalized_utf8(note_utf8).0.len() == note_utf8.len());
+    assert!(nfkd.split_normalized_utf8(note_utf8).0.len() == note_utf8.len());
+    assert!(nfc.split_normalized_utf8(note_utf8).0.len() == note_utf8.len());
+    assert!(nfkc.split_normalized_utf8(note_utf8).0.len() == note_utf8.len());
+    assert!(nfd.split_normalized_utf16(&note_utf16).0.len() == note_utf16.len());
+    assert!(nfkd.split_normalized_utf16(&note_utf16).0.len() == note_utf16.len());
+    assert!(nfc.split_normalized_utf16(&note_utf16).0.len() == note_utf16.len());
+    assert!(nfkc.split_normalized_utf16(&note_utf16).0.len() == note_utf16.len());
+
+    let umlaut = "aäa";
+    check_str(umlaut);
+
+    let umlaut_utf8 = umlaut.as_bytes();
+    check_utf8(umlaut_utf8);
+
+    let umlaut_utf16: Vec<u16> = umlaut.encode_utf16().collect();
+    check_utf16(&umlaut_utf16);
+
+    assert_eq!(nfd.split_normalized(umlaut).0.len(), 1);
+    assert_eq!(nfkd.split_normalized(umlaut).0.len(), 1);
+    assert_eq!(nfc.split_normalized(umlaut).0.len(), 4);
+    assert_eq!(nfkc.split_normalized(umlaut).0.len(), 4);
+    assert_eq!(nfd.split_normalized_utf8(umlaut_utf8).0.len(), 1);
+    assert_eq!(nfkd.split_normalized_utf8(umlaut_utf8).0.len(), 1);
+    assert_eq!(nfc.split_normalized_utf8(umlaut_utf8).0.len(), 4);
+    assert_eq!(nfkc.split_normalized_utf8(umlaut_utf8).0.len(), 4);
+    assert_eq!(nfd.split_normalized_utf16(&umlaut_utf16).0.len(), 1);
+    assert_eq!(nfkd.split_normalized_utf16(&umlaut_utf16).0.len(), 1);
+    assert_eq!(nfc.split_normalized_utf16(&umlaut_utf16).0.len(), 3);
+    assert_eq!(nfkc.split_normalized_utf16(&umlaut_utf16).0.len(), 3);
+
+    let fraction = "a½a";
+    check_str(fraction);
+
+    let fraction_utf8 = fraction.as_bytes();
+    check_utf8(fraction_utf8);
+
+    let fraction_utf16: Vec<u16> = fraction.encode_utf16().collect();
+    check_utf16(&fraction_utf16);
+
+    assert_eq!(nfd.split_normalized(fraction).0.len(), 4);
+    assert_eq!(nfkd.split_normalized(fraction).0.len(), 1);
+    assert_eq!(nfc.split_normalized(fraction).0.len(), 4);
+    assert_eq!(nfkc.split_normalized(fraction).0.len(), 1);
+    assert_eq!(nfd.split_normalized_utf8(fraction_utf8).0.len(), 4);
+    assert_eq!(nfkd.split_normalized_utf8(fraction_utf8).0.len(), 1);
+    assert_eq!(nfc.split_normalized_utf8(fraction_utf8).0.len(), 4);
+    assert_eq!(nfkc.split_normalized_utf8(fraction_utf8).0.len(), 1);
+    assert_eq!(nfd.split_normalized_utf16(&fraction_utf16).0.len(), 3);
+    assert_eq!(nfkd.split_normalized_utf16(&fraction_utf16).0.len(), 1);
+    assert_eq!(nfc.split_normalized_utf16(&fraction_utf16).0.len(), 3);
+    assert_eq!(nfkc.split_normalized_utf16(&fraction_utf16).0.len(), 1);
+
+    let reversed_vietnamese = "e\u{0302}\u{0323}";
+    check_str(reversed_vietnamese);
+
+    let reversed_vietnamese_utf8 = reversed_vietnamese.as_bytes();
+    check_utf8(reversed_vietnamese_utf8);
+
+    let reversed_vietnamese_utf16: Vec<u16> = reversed_vietnamese.encode_utf16().collect();
+    check_utf16(&reversed_vietnamese_utf16);
+
+    assert_eq!(nfd.split_normalized(reversed_vietnamese).0.len(), 1);
+    assert_eq!(nfkd.split_normalized(reversed_vietnamese).0.len(), 1);
+    assert_eq!(nfc.split_normalized(reversed_vietnamese).0.len(), 0);
+    assert_eq!(nfkc.split_normalized(reversed_vietnamese).0.len(), 0);
+    assert_eq!(
+        nfd.split_normalized_utf8(reversed_vietnamese_utf8).0.len(),
+        1
+    );
+    assert_eq!(
+        nfkd.split_normalized_utf8(reversed_vietnamese_utf8).0.len(),
+        1
+    );
+    assert_eq!(
+        nfc.split_normalized_utf8(reversed_vietnamese_utf8).0.len(),
+        0
+    );
+    assert_eq!(
+        nfkc.split_normalized_utf8(reversed_vietnamese_utf8).0.len(),
+        0
+    );
+    assert_eq!(
+        nfd.split_normalized_utf16(&reversed_vietnamese_utf16)
+            .0
+            .len(),
+        1
+    );
+    assert_eq!(
+        nfkd.split_normalized_utf16(&reversed_vietnamese_utf16)
+            .0
+            .len(),
+        1
+    );
+    assert_eq!(
+        nfc.split_normalized_utf16(&reversed_vietnamese_utf16)
+            .0
+            .len(),
+        0
+    );
+    assert_eq!(
+        nfkc.split_normalized_utf16(&reversed_vietnamese_utf16)
+            .0
+            .len(),
+        0
+    );
+
+    let truncated_vietnamese = "e\u{0302}";
+    check_str(truncated_vietnamese);
+
+    let truncated_vietnamese_utf8 = truncated_vietnamese.as_bytes();
+    check_utf8(truncated_vietnamese_utf8);
+
+    let truncated_vietnamese_utf16: Vec<u16> = truncated_vietnamese.encode_utf16().collect();
+    check_utf16(&truncated_vietnamese_utf16);
+
+    assert_eq!(nfd.split_normalized(truncated_vietnamese).0.len(), 3);
+    assert_eq!(nfkd.split_normalized(truncated_vietnamese).0.len(), 3);
+    assert_eq!(nfc.split_normalized(truncated_vietnamese).0.len(), 0);
+    assert_eq!(nfkc.split_normalized(truncated_vietnamese).0.len(), 0);
+    assert_eq!(
+        nfd.split_normalized_utf8(truncated_vietnamese_utf8).0.len(),
+        3
+    );
+    assert_eq!(
+        nfkd.split_normalized_utf8(truncated_vietnamese_utf8)
+            .0
+            .len(),
+        3
+    );
+    assert_eq!(
+        nfc.split_normalized_utf8(truncated_vietnamese_utf8).0.len(),
+        0
+    );
+    assert_eq!(
+        nfkc.split_normalized_utf8(truncated_vietnamese_utf8)
+            .0
+            .len(),
+        0
+    );
+    assert_eq!(
+        nfd.split_normalized_utf16(&truncated_vietnamese_utf16)
+            .0
+            .len(),
+        2
+    );
+    assert_eq!(
+        nfkd.split_normalized_utf16(&truncated_vietnamese_utf16)
+            .0
+            .len(),
+        2
+    );
+    assert_eq!(
+        nfc.split_normalized_utf16(&truncated_vietnamese_utf16)
+            .0
+            .len(),
+        0
+    );
+    assert_eq!(
+        nfkc.split_normalized_utf16(&truncated_vietnamese_utf16)
+            .0
+            .len(),
+        0
+    );
+}
diff --git a/vendor/icu_normalizer_data/.cargo-checksum.json b/vendor/icu_normalizer_data/.cargo-checksum.json
new file mode 100644
index 00000000..94a95284
--- /dev/null
+++ b/vendor/icu_normalizer_data/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"60846b6edd1cdeb2c66cedb5f5d566a9dee894bcc9152b26addb1abdcdaf58a8","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"f1bfe39400f3b4a2f33044d211d7df1ef022f3e7e6c5283c55d9b4a35838a617","build.rs":"c2d446772e3d766a804963dbf36e51729f910920f91f4b68c0c199fe6ca0853e","data/mod.rs":"700b5040e9acd6b58da5112020225c93b3407b25d62d09cb3eb56106bca929b0","data/normalizer_nfc_v1.rs.data":"5086439f6ab72dd0474e4abe66fc9b090f9828a271f7a822c32b6515dbc5ef28","data/normalizer_nfd_data_v1.rs.data":"df8050cab07e79ca5bc6f081eca159167f7821b0d9a372a9a35d2778d21db9f4","data/normalizer_nfd_supplement_v1.rs.data":"2006fa5fa8e298bd30b7074199dee33511e76512af6c022f72eea12566112df8","data/normalizer_nfd_tables_v1.rs.data":"b69c6c29f83adaacfd241f4317f521392731b200fa9579dfd9ca45d49bccec72","data/normalizer_nfkd_data_v1.rs.data":"3aed8554542a9601fcbaff32f53fefe174f0e72403b866a7d8c3a71312342b28","data/normalizer_nfkd_tables_v1.rs.data":"b8904caa39036fdd3bdfd8015a019afac6c7fd44702c0d295aa6fca09c6c54d5","data/normalizer_uts46_data_v1.rs.data":"55e1fe9a25f8cbee0ae5c3e7c381ae29e2bec8c98906c023a8b3b2c7b48c1951","src/lib.rs":"616aac244712cc262f7646b0a457f1b35fc4380b757f64ea8920b62784c36d79"},"package":"00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"}
\ No newline at end of file
diff --git a/vendor/icu_normalizer_data/Cargo.toml b/vendor/icu_normalizer_data/Cargo.toml
new file mode 100644
index 00000000..9dfe65ac
--- /dev/null
+++ b/vendor/icu_normalizer_data/Cargo.toml
@@ -0,0 +1,60 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "icu_normalizer_data"
+version = "2.0.0"
+authors = ["The ICU4X Project Developers"]
+build = "build.rs"
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+    "build.rs",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Data for the icu_normalizer crate"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.sources.cldr]
+tagged = "47.0.0"
+
+[package.metadata.sources.icuexport]
+tagged = "icu4x/2025-05-01/77.x"
+
+[package.metadata.sources.segmenter_lstm]
+tagged = "v0.1.0"
+
+[lib]
+name = "icu_normalizer_data"
+path = "src/lib.rs"
+
+[dependencies]
+
+[lints.rust.unexpected_cfgs]
+level = "warn"
+priority = 0
+check-cfg = ["cfg(icu4x_custom_data)"]
diff --git a/vendor/icu_normalizer_data/LICENSE b/vendor/icu_normalizer_data/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/icu_normalizer_data/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/icu_normalizer_data/README.md b/vendor/icu_normalizer_data/README.md
new file mode 100644
index 00000000..1be74b78
--- /dev/null
+++ b/vendor/icu_normalizer_data/README.md
@@ -0,0 +1,14 @@
+# icu_normalizer_data [![crates.io](https://img.shields.io/crates/v/icu_normalizer_data)](https://crates.io/crates/icu_normalizer_data)
+
+<!-- cargo-rdme start -->
+
+Data for the `icu_normalizer` crate
+
+This data was generated with CLDR version 47.0.0, ICU version icu4x/2025-05-01/77.x, and
+LSTM segmenter version v0.1.0.
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_normalizer_data/build.rs b/vendor/icu_normalizer_data/build.rs
new file mode 100644
index 00000000..62e9cb73
--- /dev/null
+++ b/vendor/icu_normalizer_data/build.rs
@@ -0,0 +1,11 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+fn main() {
+    if std::env::var("ICU4X_DATA_DIR").is_ok() {
+        println!("cargo:rustc-cfg=icu4x_custom_data");
+    }
+    println!("cargo:rerun-if-env-changed=ICU4X_DATA_DIR");
+    println!("cargo:rustc-check-cfg=cfg(icu4c_enable_renaming)");
+}
diff --git a/vendor/icu_normalizer_data/data/mod.rs b/vendor/icu_normalizer_data/data/mod.rs
new file mode 100644
index 00000000..177b3e71
--- /dev/null
+++ b/vendor/icu_normalizer_data/data/mod.rs
@@ -0,0 +1,46 @@
+// @generated
+include!("normalizer_nfd_tables_v1.rs.data");
+include!("normalizer_nfd_supplement_v1.rs.data");
+include!("normalizer_nfkd_data_v1.rs.data");
+include!("normalizer_nfkd_tables_v1.rs.data");
+include!("normalizer_nfc_v1.rs.data");
+include!("normalizer_nfd_data_v1.rs.data");
+include!("normalizer_uts46_data_v1.rs.data");
+/// Marks a type as a data provider. You can then use macros like
+/// `impl_core_helloworld_v1` to add implementations.
+///
+/// ```ignore
+/// struct MyProvider;
+/// const _: () = {
+///     include!("path/to/generated/macros.rs");
+///     make_provider!(MyProvider);
+///     impl_core_helloworld_v1!(MyProvider);
+/// }
+/// ```
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __make_provider {
+    ($ name : ty) => {
+        #[clippy::msrv = "1.82"]
+        impl $name {
+            #[allow(dead_code)]
+            pub(crate) const MUST_USE_MAKE_PROVIDER_MACRO: () = ();
+        }
+        icu_provider::marker::impl_data_provider_never_marker!($name);
+    };
+}
+#[doc(inline)]
+pub use __make_provider as make_provider;
+#[allow(unused_macros)]
+macro_rules! impl_data_provider {
+    ($ provider : ty) => {
+        make_provider!($provider);
+        impl_normalizer_nfd_tables_v1!($provider);
+        impl_normalizer_nfd_supplement_v1!($provider);
+        impl_normalizer_nfkd_data_v1!($provider);
+        impl_normalizer_nfkd_tables_v1!($provider);
+        impl_normalizer_nfc_v1!($provider);
+        impl_normalizer_nfd_data_v1!($provider);
+        impl_normalizer_uts46_data_v1!($provider);
+    };
+}
diff --git a/vendor/icu_normalizer_data/data/normalizer_nfc_v1.rs.data b/vendor/icu_normalizer_data/data/normalizer_nfc_v1.rs.data
new file mode 100644
index 00000000..40c6f7f0
--- /dev/null
+++ b/vendor/icu_normalizer_data/data/normalizer_nfc_v1.rs.data
@@ -0,0 +1,75 @@
+// @generated
+/// Implement `DataProvider<NormalizerNfcV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 5332B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_normalizer_nfc_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_NORMALIZER_NFC_V1: &'static <icu::normalizer::provider::NormalizerNfcV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::normalizer::provider::CanonicalCompositions { canonical_compositions: icu::collections::char16trie::Char16Trie { data: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0:\0E\x03\x98\x02\xD6\x0C\x96\x015\x1Bm\x01\x05\xD8d\0\x05\xD8\x12\0\x06\xD80\0\x18\xD84\0\x1B\xD81\0g\xDD\x1B\xD8\x02\0c\xDD\x01\xC0img\xDD\x01\xC0hmi\xDD\x01\xC0jm\x03\0\xB0\xDC\x0E\0\xBA\xDC\x11\0\xBD\xDC\x14\0\xAF\xDD0\0\x05\xD8\x01\0\xB8\xDD\x01\xC0\xBA\x15\xB9\xDD\x01\xC0\xBB\x151\0\x05\xD8\xB9\xDC\x01\xC0\xBC\x141\0\x05\xD8\xB9\xDC\x01\xC0\xBB\x141\0\x05\xD8\xB9\xDC\x01\xC0\xBE\x142\x000\xDD\x06\xD85\xDD\x01\xC08\x19\x03\0\x1E\xDD\n\0\x1F\xDD\r\0 \xDD\x1A\0)\xDD1\0\x18\xD8\x1E\xDD\x01\xC0\"a1\0\x18\xD8\x1E\xDD\x01\xC0!a0\0\x18\xD8\x03\0\x1E\xDD\x01\xC0#a!\xDD\x01\xC0&a\"\xDD\x01\xC0'a)\xDD\x01\xC0$a0\0\x18\xD8\x01\0\x1E\xDD\x01\xC0%a!\xDD\x01\xC0(a5\x1BT\0\x990m\0\x9A0\xEA\0\x04\xD8\x07\0\xB8\xDF&\0\xB8\xDF\x11\0\xBB\xDF\x14\0\xC2\xDF\x17\0\xC9\xDF0\0\x04\xD8\x02\0\x82\xDF\x01\xC0\x83\x13\x90\xDF\x01\xC0\x91\x13\xC2\xDF\x01\xC0\xC8\x131\0\x04\xD8\xC2\xDF\x01\xC0\xC7\x131\0\x04\xD8\x84\xDF\x01\xC0\x85\x130\0\x04\xD8\x01\0\x8B\xDF\x01\xC0\x8E\x13\xC2\xDF\x01\xC0\xC5\x13\xBA\xDC\n\0'\xDD\x14\0>\xDF\x1B\0W\xDF1\0\x04\xD8G\xDF\x01\xC0L\x130\0\x04\xD8\x02\0\x99\xDC\x01\xC0\x9A\x10\x9B\xDC\x01\xC0\x9C\x10\xA5\xDC\x01\xC0\xAB\x100\0\x04\xD8\x01\x001\xDD\x01\xC0.\x112\xDD\x01\xC0/\x111\0\x04\xD8G\xDF\x01\xC0K\x13\n\0\x11\x1B\x0E\0>\x1B\x06\0>\x1B@\x9B?\x1BA\x9BB\x1BC\x9B\x11\x1B\x12\x9B:\x1B;\x9B<\x1B=\x9B\x05\x1B\x06\x9B\x07\x1B\x08\x9B\t\x1B\n\x9B\x0B\x1B\x0C\x9B\r\x1B\x0E\x9B/\0\xAD0>\0\xC60\x1E\0\xDB0\x0E\0\xF10\x06\0\xF10\xF9\xB0\xF20\xFA\xB0\xFD0\xFE\xB0\xDB0\xDC\xB0\xEF0\xF7\xB0\xF00\xF8\xB0\xD20\x06\0\xD20\xD3\xB0\xD50\xD6\xB0\xD80\xD9\xB0\xC60\xC7\xB0\xC80\xC9\xB0\xCF0\xD0\xB0\xB90\x0E\0\xBF0\x06\0\xBF0\xC0\xB0\xC10\xC2\xB0\xC40\xC5\xB0\xB90\xBA\xB0\xBB0\xBC\xB0\xBD0\xBE\xB0\xB30\x06\0\xB30\xB4\xB0\xB50\xB6\xB0\xB70\xB8\xB0\xAD0\xAE\xB0\xAF0\xB0\xB0\xB10\xB2\xB0a0\x1E\0u0\x0E\0\x9D0\x06\0\x9D0\x9E\xB0\xA60\xF4\xB0\xAB0\xAC\xB0u0v\xB0x0y\xB0{0|\xB0h0\x06\0h0i\xB0o0p\xB0r0s\xB0a0b\xB0d0e\xB0f0g\xB0U0\x0E\0[0\x06\0[0\\\xB0]0^\xB0_0`\xB0U0V\xB0W0X\xB0Y0Z\xB0O0\x06\0O0P\xB0Q0R\xB0S0T\xB0F0\x94\xB0K0L\xB0M0N\xB0\t\0\xCF0\n\0\xCF0\xD1\xB0\xD20\xD4\xB0\xD50\xD7\xB0\xD80\xDA\xB0\xDB0\xDD\xB0o0q\xB0r0t\xB0u0w\xB0x0z\xB0{0}\xB0\xCA\r\x15\0\xCA\r\x08\0\xCF\r\x0B\0\xDF\r\x0C\0.\x100\0%\x10&\x90\x01\0\xD9\r\xDA\x8D\xDC\r\xDD\x8D0\0\xD9\r\xDC\x8D0\0\xD9\r\xDE\x8D\xD6\x0C\x06\0>\r\x07\0W\r0\0F\rL\x8D0\0\xC6\x0C\xC8\x8C\x01\0F\rJ\x8DG\rK\x8D>\x0B0\0\xD7\x0B\x19\0\xD7\x0B\x0C\0V\x0C\x0F\0\xC2\x0C\x10\0\xD5\x0C\x02\0\xBF\x0C\xC0\x8C\xC6\x0C\xC7\x8C\xCA\x0C\xCB\x8C\x01\0\x92\x0B\x94\x8B\xC6\x0B\xCC\x8B0\0F\x0CH\x8C0\0\xC6\x0C\xCA\x8C>\x0B\n\0V\x0B\x0B\0W\x0B\x0C\0\xBE\x0B\x01\0\xC6\x0B\xCA\x8B\xC7\x0B\xCB\x8B0\0G\x0BK\x8B0\0G\x0BH\x8B0\0G\x0BL\x8BU\x06\x17\0U\x06\x08\0<\t\t\0\xBE\t\x0E\0\xD7\t0\0\xC7\t\xCC\x890\0'\x06%\x86\x02\0(\t)\x890\t1\x893\t4\x890\0\xC7\t\xCB\x89E\x03\x12\0S\x06\xAE\0T\x06\x05\0\xC1\x06\x06\0\xC1\x06\xC2\x86\xD2\x06\xD3\x86\xD5\x06\xC0\x86'\x06#\x86H\x06$\x86J\x06&\x86\0\0>\0&\x1FN\0f\x1F&\0n\x1F\x12\0|\x1F\x08\0|\x1F\xF2\x9F\xB6\x1F\xB7\x9F\xC6\x1F\xC7\x9F\xF6\x1F\xF7\x9Fn\x1F\xAE\x9Fo\x1F\xAF\x9Fp\x1F\xB2\x9Ft\x1F\xC2\x9Fj\x1F\x08\0j\x1F\xAA\x9Fk\x1F\xAB\x9Fl\x1F\xAC\x9Fm\x1F\xAD\x9Ff\x1F\xA6\x9Fg\x1F\xA7\x9Fh\x1F\xA8\x9Fi\x1F\xA9\x9F.\x1F\x12\0b\x1F\x08\0b\x1F\xA2\x9Fc\x1F\xA3\x9Fd\x1F\xA4\x9Fe\x1F\xA5\x9F.\x1F\x9E\x9F/\x1F\x9F\x9F`\x1F\xA0\x9Fa\x1F\xA1\x9F*\x1F\x08\0*\x1F\x9A\x9F+\x1F\x9B\x9F,\x1F\x9C\x9F-\x1F\x9D\x9F&\x1F\x96\x9F'\x1F\x97\x9F(\x1F\x98\x9F)\x1F\x99\x9F\x06\x1F&\0\x0E\x1F\x12\0\"\x1F\x08\0\"\x1F\x92\x9F#\x1F\x93\x9F$\x1F\x94\x9F%\x1F\x95\x9F\x0E\x1F\x8E\x9F\x0F\x1F\x8F\x9F \x1F\x90\x9F!\x1F\x91\x9F\n\x1F\x08\0\n\x1F\x8A\x9F\x0B\x1F\x8B\x9F\x0C\x1F\x8C\x9F\r\x1F\x8D\x9F\x06\x1F\x86\x9F\x07\x1F\x87\x9F\x08\x1F\x88\x9F\t\x1F\x89\x9F\xC9\x03\x12\0\x02\x1F\x08\0\x02\x1F\x82\x9F\x03\x1F\x83\x9F\x04\x1F\x84\x9F\x05\x1F\x85\x9F\xC9\x03\xF3\x9F\xCE\x03\xF4\x9F\0\x1F\x80\x9F\x01\x1F\x81\x9F\xAC\x03\x08\0\xAC\x03\xB4\x9F\xAE\x03\xC4\x9F\xB1\x03\xB3\x9F\xB7\x03\xC3\x9F\x91\x03\xBC\x9F\x97\x03\xCC\x9F\xA9\x03\xFC\x9F0\0'\x06\"\x86\x13\x03O\x02'\x03r\x010\x03\xF7\x000\x03N\x001\x03[\08\x03\x82\0B\x03\x1C\0(\x1F$\0Q\x1F\x12\0h\x1F\x08\0h\x1Fn\x9Fi\x1Fo\x9F\xBF\x1F\xCF\x9F\xFE\x1F\xDF\x9FQ\x1FW\x9FY\x1F_\x9F`\x1Ff\x9Fa\x1Fg\x9F1\x1F\x08\x001\x1F7\x9F8\x1F>\x9F9\x1F?\x9FP\x1FV\x9F(\x1F.\x9F)\x1F/\x9F0\x1F6\x9F\xCB\x03\x10\0\x08\x1F\x08\0\x08\x1F\x0E\x9F\t\x1F\x0F\x9F \x1F&\x9F!\x1F'\x9F\xCB\x03\xE7\x9F\0\x1F\x06\x9F\x01\x1F\x07\x9F\xB9\x03\x08\0\xB9\x03\xD6\x9F\xC5\x03\xE6\x9F\xC9\x03\xF6\x9F\xCA\x03\xD7\x9F\xA8\0\xC1\x9F\xB1\x03\xB6\x9F\xB7\x03\xC6\x9F\x05\0e\0\x06\0e\0\x1B\x9Ei\0-\x9Eu\0u\x9EE\0\x1A\x9EI\0,\x9EU\0t\x9E\x10\0b\0\x14\0l\0\n\0l\0;\x9En\0I\x9Er\0_\x9Et\0o\x9Ez\0\x95\x9Eb\0\x07\x9Ed\0\x0F\x9Eh\0\x96\x9Ek\x005\x9EN\0\x08\0N\0H\x9ER\0^\x9ET\0n\x9EZ\0\x94\x9EB\0\x06\x9ED\0\x0E\x9EK\x004\x9EL\0:\x9E+\0r\"6\0\x87\"\x1A\0\xA9\"\x0E\0\xB3\"\x06\0\xB3\"\xEB\xA2\xB4\"\xEC\xA2\xB5\"\xED\xA2\xA9\"\xAE\xA2\xAB\"\xAF\xA2\xB2\"\xEA\xA2\x87\"\x89\xA2\x91\"\xE2\xA2\x92\"\xE3\xA2\xA2\"\xAC\xA2\xA8\"\xAD\xA2{\"\x0E\0\x82\"\x06\0\x82\"\x84\xA2\x83\"\x85\xA2\x86\"\x88\xA2{\"\x81\xA2|\"\xE0\xA2}\"\xE1\xA2r\"t\xA2s\"u\xA2v\"x\xA2w\"y\xA2z\"\x80\xA2\x0B\"\x1A\0E\"\x0E\0a\"\x06\0a\"b\xA2d\"p\xA2e\"q\xA2E\"G\xA2H\"I\xA2M\"m\xA2\x0B\"\x0C\xA2#\"$\xA2%\"&\xA2<\"A\xA2C\"D\xA2\x94!\x0E\0\xD4!\x06\0\xD4!\xCE\xA1\x03\"\x04\xA2\x08\"\t\xA2\x94!\xAE\xA1\xD0!\xCD\xA1\xD2!\xCF\xA1<\0n\xA2=\0`\xA2>\0o\xA2\x90!\x9A\xA1\x92!\x9B\xA1'\x03\n\0(\x03?\0-\x03T\0.\x03\x01\0H\0*\x9Eh\0+\x9E\x15\0c\0\x1A\0k\0\x0E\0r\0\x06\0r\0W\x81s\0_\x81t\0c\x81k\x007\x81l\0<\x81n\0F\x81c\0\xE7\x80d\0\x11\x9Ee\0)\x82g\0#\x81h\0)\x9EK\0\x0E\0R\0\x06\0R\0V\x81S\0^\x81T\0b\x81K\x006\x81L\0;\x81N\0E\x81C\0\xC7\x80D\0\x10\x9EE\0(\x82G\0\"\x81H\0(\x9E\t\0a\0\n\0a\0\x05\x81e\0\x19\x81i\0/\x81o\0\xEB\x81u\0s\x81A\0\x04\x81E\0\x18\x81I\0.\x81O\0\xEA\x81U\0r\x81\x0B\0d\0\x0E\0n\0\x06\0n\0K\x9Et\0q\x9Eu\0w\x9Ed\0\x13\x9Ee\0\x19\x9El\0=\x9EN\0\x06\0N\0J\x9ET\0p\x9EU\0v\x9ED\0\x12\x9EE\0\x18\x9EL\0<\x9E#\x03\x81\0#\x03\x0E\0$\x03s\0%\x03v\0&\x03\x03\0S\0\x18\x82T\0\x1A\x82s\0\x19\x82t\0\x1B\x82)\0d\x002\0s\0\x1A\0y\0\x0E\0\xA1\x01\x06\0\xA1\x01\xE3\x9E\xAF\x01\xF0\x9E\xB0\x01\xF1\x9Ey\0\xF5\x9Ez\0\x93\x9E\xA0\x01\xE2\x9Es\0c\x9Et\0m\x9Eu\0\xE5\x9Ev\0\x7F\x9Ew\0\x89\x9El\0\n\0l\x007\x9Em\0C\x9En\0G\x9Eo\0\xCD\x9Er\0[\x9Ed\0\r\x9Ee\0\xB9\x9Eh\0%\x9Ei\0\xCB\x9Ek\x003\x9EO\0\x1A\0V\0\x0E\0Z\0\x06\0Z\0\x92\x9Ea\0\xA1\x9Eb\0\x05\x9EV\0~\x9EW\0\x88\x9EY\0\xF4\x9EO\0\xCC\x9ER\0Z\x9ES\0b\x9ET\0l\x9EU\0\xE4\x9EI\0\n\0I\0\xCA\x9EK\x002\x9EL\x006\x9EM\0B\x9EN\0F\x9EA\0\xA0\x9EB\0\x04\x9ED\0\x0C\x9EE\0\xB8\x9EH\0$\x9E\x01\0U\0r\x9Eu\0s\x9E\x01\0A\0\0\x9Ea\0\x01\x9E\x13\x03\x0C\0\x14\x03-\0\x1B\x03\x03\0O\0\xA0\x81U\0\xAF\x81o\0\xA1\x81u\0\xB0\x81\r\0\xB5\x03\x10\0\xBF\x03\x08\0\xBF\x03@\x9F\xC1\x03\xE4\x9F\xC5\x03P\x9F\xC9\x03`\x9F\xB5\x03\x10\x9F\xB7\x03 \x9F\xB9\x030\x9F\x99\x03\x08\0\x99\x038\x9F\x9F\x03H\x9F\xA9\x03h\x9F\xB1\x03\0\x9F\x91\x03\x08\x9F\x95\x03\x18\x9F\x97\x03(\x9F\x0F\0\xB1\x03\x12\0\xBF\x03\x08\0\xBF\x03A\x9F\xC1\x03\xE5\x9F\xC5\x03Q\x9F\xC9\x03a\x9F\xB1\x03\x01\x9F\xB5\x03\x11\x9F\xB7\x03!\x9F\xB9\x031\x9F\x9F\x03\x08\0\x9F\x03I\x9F\xA1\x03\xEC\x9F\xA5\x03Y\x9F\xA9\x03i\x9F\x91\x03\t\x9F\x95\x03\x19\x9F\x97\x03)\x9F\x99\x039\x9F\x08\x03\x92\x01\x0B\x03\xB1\0\x0B\x03$\0\x0C\x031\0\x0F\x03\x88\0\x11\x03\x0B\0a\0\x0E\0o\0\x06\0o\0\x0F\x82r\0\x13\x82u\0\x17\x82a\0\x03\x82e\0\x07\x82i\0\x0B\x82O\0\x06\0O\0\x0E\x82R\0\x12\x82U\0\x16\x82A\0\x02\x82E\0\x06\x82I\0\n\x82\x05\0u\0\x06\0u\0q\x81#\x04\xF2\x84C\x04\xF3\x84O\0P\x81U\0p\x81o\0Q\x81$\0d\0,\0o\0\x16\0z\0\n\0z\0~\x81\xDC\0\xD9\x81\xFC\0\xDA\x81\xB7\x01\xEE\x81\x92\x02\xEF\x81o\0\xD2\x81r\0Y\x81s\0a\x81t\0e\x81u\0\xD4\x81i\0\n\0i\0\xD0\x81j\0\xF0\x81k\0\xE9\x81l\0>\x81n\0H\x81d\0\x0F\x81e\0\x1B\x81g\0\xE7\x81h\0\x1F\x82N\0\x14\0T\0\n\0T\0d\x81U\0\xD3\x81Z\0}\x81a\0\xCE\x81c\0\r\x81N\0G\x81O\0\xD1\x81R\0X\x81S\0`\x81G\0\n\0G\0\xE6\x81H\0\x1E\x82I\0\xCF\x81K\0\xE8\x81L\0=\x81A\0\xCD\x81C\0\x0C\x81D\0\x0E\x81E\0\x1A\x81\r\0e\0\x10\0r\0\x08\0r\0\x11\x82u\0\x15\x82t\x04v\x84u\x04w\x84e\0\x05\x82i\0\t\x82o\0\r\x82O\0\x08\0O\0\x0C\x82R\0\x10\x82U\0\x14\x82a\0\x01\x82A\0\0\x82E\0\x04\x82I\0\x08\x82\x08\x03\x12\0\t\x03\x9C\0\n\x03\x05\0u\0\x06\0u\0o\x81w\0\x98\x9Ey\0\x99\x9EA\0\xC5\x80U\0n\x81a\0\xE5\x80\0\x005\0\xD2\x03D\x005\x04\"\0K\x04\x10\0\xD8\x04\x08\0\xD8\x04\xDA\x84\xD9\x04\xDB\x84\xE8\x04\xEA\x84\xE9\x04\xEB\x84K\x04\xF9\x84M\x04\xED\x84V\x04W\x848\x04\x08\08\x04\xE5\x84>\x04\xE7\x84C\x04\xF1\x84G\x04\xF5\x845\x04Q\x846\x04\xDD\x847\x04\xDF\x84\x18\x04\x10\0'\x04\x08\0'\x04\xF4\x84+\x04\xF8\x84-\x04\xEC\x840\x04\xD3\x84\x18\x04\xE4\x84\x1E\x04\xE6\x84#\x04\xF0\x84\x15\x04\x06\0\x15\x04\x01\x84\x16\x04\xDC\x84\x17\x04\xDE\x84\xD2\x03\xD4\x83\x06\x04\x07\x84\x10\x04\xD2\x84o\0\"\0\xF5\0\x10\0\x99\x03\x08\0\x99\x03\xAA\x83\xA5\x03\xAB\x83\xB9\x03\xCA\x83\xC5\x03\xCB\x83\xF5\0O\x9Ej\x01z\x9Ek\x01{\x9Ew\0\x08\0w\0\x85\x9Ex\0\x8D\x9Ey\0\xFF\x80\xD5\0N\x9Eo\0\xF6\x80t\0\x97\x9Eu\0\xFC\x80W\0\x10\0a\0\x08\0a\0\xE4\x80e\0\xEB\x80h\0'\x9Ei\0\xEF\x80W\0\x84\x9EX\0\x8C\x9EY\0x\x81I\0\x06\0I\0\xCF\x80O\0\xD6\x80U\0\xDC\x80A\0\xC4\x80E\0\xCB\x80H\0&\x9E\x17\0\xC2\0\x1E\0\x02\x01\x0E\0\xA1\x01\x06\0\xA1\x01\xDF\x9E\xAF\x01\xEC\x9E\xB0\x01\xED\x9E\x02\x01\xB2\x9E\x03\x01\xB3\x9E\xA0\x01\xDE\x9E\xE2\0\x06\0\xE2\0\xA9\x9E\xEA\0\xC3\x9E\xF4\0\xD5\x9E\xC2\0\xA8\x9E\xCA\0\xC2\x9E\xD4\0\xD4\x9Ea\0\x0E\0o\0\x06\0o\0\xCF\x9Eu\0\xE7\x9Ey\0\xF7\x9Ea\0\xA3\x9Ee\0\xBB\x9Ei\0\xC9\x9EO\0\x06\0O\0\xCE\x9EU\0\xE6\x9EY\0\xF6\x9EA\0\xA2\x9EE\0\xBA\x9EI\0\xC8\x9E\x03\x03\x8D\x01\x03\x03\x86\0\x04\x03\xCB\0\x06\x038\x01\x07\x03.\0d\0D\0w\0$\0`\x01\x14\0b\x1E\x0C\0b\x1Eh\x9Ec\x1Ei\x9E\x01\xD8\x01\0\xD2\xDD\x01\xC0\xC9\x05\xDA\xDD\x01\xC0\xE4\x05`\x01f\x9Ea\x01g\x9E\x7F\x01\x9B\x9Ez\0\x06\0z\0|\x81Z\x01d\x9E[\x01e\x9Ew\0\x87\x9Ex\0\x8B\x9Ey\0\x8F\x9En\0\x0E\0r\0\x06\0r\0Y\x9Es\0a\x9Et\0k\x9En\0E\x9Eo\0/\x82p\0W\x9Eg\0\x06\0g\0!\x81h\0#\x9Em\0A\x9Ed\0\x0B\x9Ee\0\x17\x81f\0\x1F\x9EO\0\x1E\0X\0\x0E\0a\0\x06\0a\0'\x82b\0\x03\x9Ec\0\x0B\x81X\0\x8A\x9EY\0\x8E\x9EZ\0{\x81S\0\x06\0S\0`\x9ET\0j\x9EW\0\x86\x9EO\0.\x82P\0V\x9ER\0X\x9EF\0\x0E\0I\0\x06\0I\x000\x81M\0@\x9EN\0D\x9EF\0\x1E\x9EG\0 \x81H\0\"\x9EA\0&\x82B\0\x02\x9EC\0\n\x81D\0\n\x9EE\0\x16\x81\x1B\0v\0\"\0\xF4\0\x10\0\xA0\x01\x08\0\xA0\x01\xE0\x9E\xA1\x01\xE1\x9E\xAF\x01\xEE\x9E\xB0\x01\xEF\x9E\xF4\0\xD7\x9E\x02\x01\xB4\x9E\x03\x01\xB5\x9E\xCA\0\x08\0\xCA\0\xC4\x9E\xD4\0\xD6\x9E\xE2\0\xAB\x9E\xEA\0\xC5\x9Ev\0}\x9Ey\0\xF9\x9E\xC2\0\xAA\x9EY\0\x10\0i\0\x08\0i\0)\x81n\0\xF1\x80o\0\xF5\x80u\0i\x81Y\0\xF8\x9Ea\0\xE3\x80e\0\xBD\x9EN\0\x08\0N\0\xD1\x80O\0\xD5\x80U\0h\x81V\0|\x9EA\0\xC3\x80E\0\xBC\x9EI\0(\x81+\0\xF6\x006\0\xB1\x03\x1A\08\x04\x0E\x007\x1E\x06\x007\x1E9\x9EZ\x1E\\\x9E[\x1E]\x9E8\x04\xE3\x84C\x04\xEF\x846\x1E8\x9E\xB1\x03\xB1\x9F\xB9\x03\xD1\x9F\xC5\x03\xE1\x9F\x18\x04\xE2\x84#\x04\xEE\x84'\x02\x0E\0\x91\x03\x06\0\x91\x03\xB9\x9F\x99\x03\xD9\x9F\xA5\x03\xE9\x9F'\x02\xE1\x81.\x020\x82/\x021\x82\xF6\0+\x82\xFC\0\xD6\x81\xEA\x01\xEC\x81\xEB\x01\xED\x81&\x02\xE0\x81o\0\x1A\0\xD5\0\x0E\0\xE4\0\x06\0\xE4\0\xDF\x81\xE6\0\xE3\x81\xF5\0-\x82\xD5\0,\x82\xD6\0*\x82\xDC\0\xD5\x81o\0M\x81u\0k\x81y\x003\x82\xC4\0\xDE\x81\xC6\0\xE2\x81U\0\x0E\0e\0\x06\0e\0\x13\x81g\0!\x9Ei\0+\x81U\0j\x81Y\x002\x82a\0\x01\x81A\0\0\x81E\0\x12\x81G\0 \x9EI\0*\x81O\0L\x81\x1F\0\xA5\x03&\0#\x04\x12\08\x04\x08\08\x049\x84C\x04^\x84\xA0\x1E\xB6\x9E\xA1\x1E\xB7\x9E#\x04\x0E\x840\x04\xD1\x845\x04\xD7\x846\x04\xC2\x84\x10\x04\x08\0\x10\x04\xD0\x84\x15\x04\xD6\x84\x16\x04\xC1\x84\x18\x04\x19\x84\xA5\x03\xE8\x9F\xB1\x03\xB0\x9F\xB9\x03\xD0\x9F\xC5\x03\xE0\x9Fg\0\x12\0(\x02\x08\0(\x02\x1C\x9E)\x02\x1D\x9E\x91\x03\xB8\x9F\x99\x03\xD8\x9Fg\0\x1F\x81i\0-\x81o\0O\x81u\0m\x81O\0\x08\0O\0N\x81U\0l\x81a\0\x03\x81e\0\x15\x81A\0\x02\x81E\0\x14\x81G\0\x1E\x81I\0,\x81\0\x03R\0\x01\x03 \x01\x02\x03\x1F\0g\0&\0y\0\x12\0\xB8\x1E\x08\0\xB8\x1E\xC6\x9E\xB9\x1E\xC7\x9E\xCC\x1E\xD8\x9E\xCD\x1E\xD9\x9Ey\0w\x81z\0\x91\x9E\xA0\x1E\xAC\x9E\xA1\x1E\xAD\x9Eo\0\x08\0o\0\xF4\x80s\0]\x81u\0\xFB\x80w\0u\x81g\0\x1D\x81h\0%\x81i\0\xEE\x80j\x005\x81S\0\x12\0Z\0\x08\0Z\0\x90\x9Ea\0\xE2\x80c\0\t\x81e\0\xEA\x80S\0\\\x81U\0\xDB\x80W\0t\x81Y\0v\x81H\0\x08\0H\0$\x81I\0\xCE\x80J\x004\x81O\0\xD4\x80A\0\xC2\x80C\0\x08\x81E\0\xCA\x80G\0\x1C\x81\0\0S\0\xB1\x03f\0 \x1F2\0H\x1F\x1A\0`\x1F\x0E\0i\x1F\x06\0i\x1Fk\x9F\xBF\x1F\xCD\x9F\xFE\x1F\xDD\x9F`\x1Fb\x9Fa\x1Fc\x9Fh\x1Fj\x9FH\x1FJ\x9FI\x1FK\x9FP\x1FR\x9FQ\x1FS\x9FY\x1F[\x9F1\x1F\n\x001\x1F3\x9F8\x1F:\x9F9\x1F;\x9F@\x1FB\x9FA\x1FC\x9F \x1F\"\x9F!\x1F#\x9F(\x1F*\x9F)\x1F+\x9F0\x1F2\x9F\x18\x04\x1A\0\x08\x1F\x0E\0\x11\x1F\x06\0\x11\x1F\x13\x9F\x18\x1F\x1A\x9F\x19\x1F\x1B\x9F\x08\x1F\n\x9F\t\x1F\x0B\x9F\x10\x1F\x12\x9F\x18\x04\r\x845\x04P\x848\x04]\x84\0\x1F\x02\x9F\x01\x1F\x03\x9F\xC5\x03\n\0\xC5\x03z\x9F\xC9\x03|\x9F\xCA\x03\xD2\x9F\xCB\x03\xE2\x9F\x15\x04\0\x84\xB1\x03p\x9F\xB5\x03r\x9F\xB7\x03t\x9F\xB9\x03v\x9F\xBF\x03x\x9F\xE2\x002\0\xA0\x01\x1A\0\x95\x03\x0E\0\x9F\x03\x06\0\x9F\x03\xF8\x9F\xA5\x03\xEA\x9F\xA9\x03\xFA\x9F\x95\x03\xC8\x9F\x97\x03\xCA\x9F\x99\x03\xDA\x9F\xA0\x01\xDC\x9E\xA1\x01\xDD\x9E\xAF\x01\xEA\x9E\xB0\x01\xEB\x9E\x91\x03\xBA\x9F\x03\x01\n\0\x03\x01\xB1\x9E\x12\x01\x14\x9E\x13\x01\x15\x9EL\x01P\x9EM\x01Q\x9E\xE2\0\xA7\x9E\xEA\0\xC1\x9E\xF4\0\xD3\x9E\xFC\0\xDC\x81\x02\x01\xB0\x9Ei\0\x1A\0y\0\x0E\0\xCA\0\x06\0\xCA\0\xC0\x9E\xD4\0\xD2\x9E\xDC\0\xDB\x81y\0\xF3\x9E\xA8\0\xED\x9F\xC2\0\xA6\x9Ei\0\xEC\x80n\0\xF9\x81o\0\xF2\x80u\0\xF9\x80w\0\x81\x9EU\0\n\0U\0\xD9\x80W\0\x80\x9EY\0\xF2\x9Ea\0\xE0\x80e\0\xE8\x80A\0\xC0\x80E\0\xC8\x80I\0\xCC\x80N\0\xF8\x81O\0\xD2\x80\0\0t\0\x13\x01\x94\0:\x04J\08\x1F$\0Q\x1F\x12\0h\x1F\x08\0h\x1Fl\x9Fi\x1Fm\x9F\xBF\x1F\xCE\x9F\xFE\x1F\xDE\x9FQ\x1FU\x9FY\x1F]\x9F`\x1Fd\x9Fa\x1Fe\x9FA\x1F\x08\0A\x1FE\x9FH\x1FL\x9FI\x1FM\x9FP\x1FT\x9F8\x1F<\x9F9\x1F=\x9F@\x1FD\x9F\x18\x1F\x12\0(\x1F\x08\0(\x1F,\x9F)\x1F-\x9F0\x1F4\x9F1\x1F5\x9F\x18\x1F\x1C\x9F\x19\x1F\x1D\x9F \x1F$\x9F!\x1F%\x9F\x08\x1F\x08\0\x08\x1F\x0C\x9F\t\x1F\r\x9F\x10\x1F\x14\x9F\x11\x1F\x15\x9F:\x04\\\x84\0\x1F\x04\x9F\x01\x1F\x05\x9F\xA5\x03$\0\xC5\x03\x12\0\xD2\x03\x08\0\xD2\x03\xD3\x83\x13\x04\x03\x84\x1A\x04\x0C\x843\x04S\x84\xC5\x03\xCD\x83\xC9\x03\xCE\x83\xCA\x03\x90\x83\xCB\x03\xB0\x83\xB5\x03\x08\0\xB5\x03\xAD\x83\xB7\x03\xAE\x83\xB9\x03\xAF\x83\xBF\x03\xCC\x83\xA5\x03\x8E\x83\xA9\x03\x8F\x83\xB1\x03\xAC\x83\xAF\x01\x10\0\x95\x03\x08\0\x95\x03\x88\x83\x97\x03\x89\x83\x99\x03\x8A\x83\x9F\x03\x8C\x83\xAF\x01\xE8\x9E\xB0\x01\xE9\x9E\x91\x03\x86\x83h\x01\x08\0h\x01x\x9Ei\x01y\x9E\xA0\x01\xDA\x9E\xA1\x01\xDB\x9E\x13\x01\x17\x9EL\x01R\x9EM\x01S\x9Es\0H\0\xD8\0$\0\xEF\0\x12\0\xFC\0\x08\0\xFC\0\xD8\x81\x02\x01\xAE\x9E\x03\x01\xAF\x9E\x12\x01\x16\x9E\xEF\0/\x9E\xF4\0\xD1\x9E\xF5\0M\x9E\xF8\0\xFF\x81\xE5\0\x08\0\xE5\0\xFB\x81\xE6\0\xFD\x81\xE7\0\t\x9E\xEA\0\xBF\x9E\xD8\0\xFE\x81\xDC\0\xD7\x81\xE2\0\xA5\x9E\xC5\0\x10\0\xCA\0\x08\0\xCA\0\xBE\x9E\xCF\0.\x9E\xD4\0\xD0\x9E\xD5\0L\x9E\xC5\0\xFA\x81\xC6\0\xFC\x81\xC7\0\x08\x9Ey\0\x08\0y\0\xFD\x80z\0z\x81\xA8\0\x85\x83\xC2\0\xA4\x9Es\0[\x81u\0\xFA\x80w\0\x83\x9EW\0$\0i\0\x12\0n\0\x08\0n\0D\x81o\0\xF3\x80p\0U\x9Er\0U\x81i\0\xED\x80k\x001\x9El\0:\x81m\0?\x9Ea\0\x08\0a\0\xE1\x80c\0\x07\x81e\0\xE9\x80g\0\xF5\x81W\0\x82\x9EY\0\xDD\x80Z\0y\x81M\0\x10\0P\0\x08\0P\0T\x9ER\0T\x81S\0Z\x81U\0\xDA\x80M\0>\x9EN\0C\x81O\0\xD3\x80G\0\x08\0G\0\xF4\x81I\0\xCD\x80K\x000\x9EL\09\x81A\0\xC1\x80C\0\x06\x81E\0\xC9\x80") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::normalizer::provider::NormalizerNfcV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::normalizer::provider::NormalizerNfcV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_NORMALIZER_NFC_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfcV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_normalizer_nfc_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfcV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_normalizer_nfc_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfcV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfcV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_normalizer_nfc_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfcV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfcV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfcV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_normalizer_nfc_v1 as impl_normalizer_nfc_v1;
diff --git a/vendor/icu_normalizer_data/data/normalizer_nfd_data_v1.rs.data b/vendor/icu_normalizer_data/data/normalizer_nfd_data_v1.rs.data
new file mode 100644
index 00000000..fd1f5a6b
--- /dev/null
+++ b/vendor/icu_normalizer_data/data/normalizer_nfd_data_v1.rs.data
@@ -0,0 +1,75 @@
+// @generated
+/// Implement `DataProvider<NormalizerNfdDataV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 27948B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_normalizer_nfd_data_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_NORMALIZER_NFD_DATA_V1: &'static <icu::normalizer::provider::NormalizerNfdDataV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::normalizer::provider::DecompositionData { trie: icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 195584u32, shifted12_high_start: 48u16, index3_null_offset: 380u16, data_null_offset: 0u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\0\0\x80\0\xC0\0\xFF\0>\x01q\x01\xB1\x01\0\0\0\0\0\0\xF1\x011\x02p\x02\xA6\x02\xE6\x02 \x03]\x03\x9C\x03\0\0\0\0\xD6\x03\x16\x04F\x04{\x04\0\0\xBB\x04\xEA\x04)\x05\0\0>\x05|\x05\xAA\x05\xD3\x05\t\x06I\x06\x86\x06\xA6\x06\xE5\x06$\x07a\x07\x80\x07\xBD\x07\xA6\x06\xF5\x07!\x08`\x08\x80\x07\x98\x08\x80\x07\xD8\x08\xEF\x08.\t\0\0d\t\x84\t\xBF\t\xCB\t\x06\n.\nk\n\xAB\n\xE5\no\x06\x88\x06\x95\x06\xAB\x06\xCB\x06\xDB\x06\xF3\x06\x12\x07\x88\x06\x88\x06\x88\x06'\x07\0\0\x10\0 \x000\0@\0P\0`\0p\0\0\0\x10\0 \x000\0\x80\0\x90\0\xA0\0\xB0\0\xC0\0\xD0\0\xE0\0\xF0\0\xFF\0\x0F\x01\x1F\x01/\x01>\x01N\x01^\x01n\x01q\x01\x81\x01\x91\x01\xA1\x01\xB1\x01\xC1\x01\xD1\x01\xE1\x01\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\xF1\x01\x01\x02\x11\x02!\x021\x02A\x02Q\x02a\x02p\x02\x80\x02\x90\x02\xA0\x02\xA6\x02\xB6\x02\xC6\x02\xD6\x02\xE6\x02\xF6\x02\x06\x03\x16\x03 \x030\x03@\x03P\x03]\x03m\x03}\x03\x8D\x03\x9C\x03\xAC\x03\xBC\x03\xCC\x03\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\xD6\x03\xE6\x03\xF6\x03\x06\x04\x16\x04&\x046\x04F\x04V\x04f\x04v\x04{\x04\x8B\x04\x9B\x04\xAB\x04\0\0\x10\0 \x000\0\xBB\x04\xCB\x04\xDB\x04\xEB\x04\xEA\x04\xFA\x04\n\x05\x1A\x05)\x059\x05I\x05Y\x05\0\0\x10\0 \x000\0>\x05N\x05^\x05n\x05|\x05\x8C\x05\x9C\x05\xAC\x05\xAA\x05\xBA\x05\xCA\x05\xDA\x05\xD3\x05\xE3\x05\xF3\x05\x03\x06\t\x06\x19\x06)\x069\x06I\x06Y\x06i\x06y\x06\x86\x06\x96\x06\xA6\x06\xB6\x06\xA6\x06\xB6\x06\xC6\x06\xD6\x06\xE5\x06\xF5\x06\x05\x07\x15\x07$\x074\x07D\x07T\x07a\x07q\x07\x81\x07\x91\x07\x80\x07\x90\x07\xA0\x07\xB0\x07\xBD\x07\xCD\x07\xDD\x07\xED\x07\xA6\x06\xB6\x06\xC6\x06\xD6\x06\xF5\x07\x05\x08\x15\x08%\x08!\x081\x08A\x08Q\x08`\x08p\x08\x80\x08\x90\x08\x80\x07\x90\x07\xA0\x07\xB0\x07\x98\x08\xA8\x08\xB8\x08\xC8\x08\x80\x07\x90\x07\xA0\x07\xB0\x07\xD8\x08\xE8\x08\xF8\x08\x08\t\xEF\x08\xFF\x08\x0F\t\x1F\t.\t>\tN\t^\t\0\0\x10\0 \x000\0d\tt\t\x84\t\x94\t\xA4\t\xB4\t\xBF\t\xCF\t\xDF\t\xEF\t\xCB\t\xDB\t\xEB\t\xFB\t\x06\n\x16\n&\n6\n.\n>\nN\n^\nk\n{\n\x8B\n\x9B\n\xAB\n\xBB\n\xCB\n\xDB\n\xE5\n\xF5\n\x05\x0B\x15\x0B\0\0\0\0\x1F\x0B.\x0B\0\0\0\0\0\0\0\09\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\x0BR\x0B\0\0\0\0Z\x0Bb\x0Bo\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0I\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{\x0B\0\0j\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x89\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA1\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAD\x0B\0\0\0\0\0\0\0\0\xCA\x07\xB8\x0B\0\0\0\0\0\0\xC8\x0B\xD7\x0B\0\0\0\0\0\0\xE6\x0B\xF5\x0B\0\0\x01\x0C\x11\x0C\0\0\x16\x0Ca\x03\0\0\0\0u\x0B\0\0\0\0\0\0\x7F\x06&\x0C\0\0\0\0\0\0~\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x006\x0CF\x0CT\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\x0Ct\x0C\xF1\x01~\x0C\x8E\x0C\x9E\x0C\xAE\x0C\xBE\x0C\xCE\x0C\xDE\x0C\xEE\x0C\xFE\x0C\x0E\r\x1E\r.\r>\rN\r^\rn\r~\r\x8E\r\x9E\r\xAE\r\xBE\r\xCE\r\xDE\r\xEE\r\xFE\r\x0E\x0E\x1E\x0E.\x0E>\x0EM\x0E]\x0Em\x0E}\x0E\x8D\x0E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9D\x0E\xAC\x0Ed\x03\0\0\0\0\xBC\x0E\0\0\0\0\0\0\0\0\0\0\0\0\xC8\x0E\xD4\x0E\0\0\xE3\x0E\0\0\0\0\0\0\xF3\x0E\0\0\0\x0F\0\0\x0F\x0F\0\0\x1F\x0F/\x0F?\x0F\0\0I\x0F\0\0\0\0\0\0Y\x0F\0\0\0\0\0\0g\x0F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\x0F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0G\x04c\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1B\t\0\0\0\0\0\0\0\0\0\0\0\0\xF1\x01\xF1\x01\0\0\0\0\x7F\x0F\0\0\x8F\x0F\x9F\x0F\xAF\x0F\xBF\x0F\0\0\xCD\x0F\xDC\x0F\xEC\x0F\xFC\x0F\x0C\x10\0\0\x1A\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0G\x04)\x10\0\0H\x04\0\0\0\0\0\0\0\0\0\0c\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\x07\0\0\x87\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\x07\0\0\xF1\x01c\x03\0\0\0\0\xB8\x05\0\0\0\0\xC7\x07\0\0\0\0\0\0\0\0\0\0\x82\x06\xCA\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\09\x10\"\x07\0\0\0\0h\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86\x06\0\0I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10I\x10U\x10\0\0\0\0\0\0\0\0\0\0e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10e\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\x10\x85\x10\x95\x10\xA5\x10\xB5\x10\xC5\x10\xD5\x10\xE5\x10\xF5\x10\x05\x11\x15\x11%\x115\x11E\x11U\x11e\x11u\x11\x85\x11\x95\x11\xA5\x11\xB5\x11\xC5\x11\xD5\x11\xE5\x11\xF5\x11\x05\x12\x15\x12%\x125\x12E\x12\0\0\0\0\0\0O\x12_\x12o\x12\x7F\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8F\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9F\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\09\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9A\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Z\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAD\x12\0\0\xB9\x12\0\0\xBE\x12\0\0\0\0\xCE\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDE\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEA\x12\0\0\0\0\0\0\xF2\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x13\0\0\0\0\0\0\0\0\xB6\x05\0\0\0\0\0\0\0\0\r\x13\x9A\x04\0\0\0\0\x1D\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\x07\0\0\0\0-\x13\0\0=\x13J\x13V\x13\0\0\0\0\0\0\0\0b\x03\0\0a\x13q\x13\0\0\0\0\0\0\x82\x06\0\0\0\0\0\0\0\0\x81\x13\0\0\0\0\0\0\x8C\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\x13\0\0\0\0\0\0\0\0\x9E\x13\xAD\x13X\x08\xBB\x13`\x03\xC8\x13\xD7\x13\0\0\xDF\x13\xED\x13\xCA\x07\0\0\0\0\0\0\0\0\xFD\x13\x15\x07\0\0\0\0\0\0\0\0\0\0\r\x14\x1C\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0P\x08\"\x142\x14\0\0\0\0\0\0\x1B\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\x14\0\0\0\0\0\0\0\0\0\0\0\0c\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0V\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0L\x14\x82\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCA\x07\0\0\0\0\0\0j\x07g\x07\0\0\0\0\0\0\0\0e\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1B\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x003\x0B\0\0\0\0\0\0\0\0g\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x006\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\x14j\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0z\x14\0\0\0\0\0\0\x8A\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA3\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA5\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB4\x14\xC4\x14\xD2\x14\xDF\x14\0\0\xEB\x14\xF9\x14\t\x15\0\0\0\0\0\0\0\0\x17\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'\x15/\x15=\x15\0\0\0\0\0\0\0\0\0\0G\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8A\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x15\x07\0\0\0\0\0\0\xE5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0X\x15\0\0\0\0\0\0\0\0\0\0\0\0d\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\x15\x84\x15\x94\x15\xA4\x15\xB4\x15\xC4\x15\xD4\x15\xE4\x15\xF4\x15\x04\x16\x14\x16$\x164\x16D\x16T\x16d\x16t\x16\x84\x16\x94\x16\xA4\x16\xB4\x16\xC4\x16\xD4\x16\xE4\x16\xF4\x16\x04\x17\x14\x17$\x174\x17D\x17T\x17d\x17t\x17\x84\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0L\0l\0\x8C\0\xAB\0\xCB\0\xEB\0\x0B\x01)\x01I\x01f\x01|\x01\x8B\x01\xA9\x01\xC8\x01\xE8\x01\x08\x02(\x02H\x02|\x01|\x01|\x01[\x02m\x02|\x01\x8D\x02|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01\xA7\x02\xC7\x02\xE4\x02\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\n\x03*\x03*\x03*\x03*\x03|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01J\x03j\x03|\x01\x88\x03\xA8\x03\xC8\x03\xE0\x03|\x01|\x01\0\x04\x0F\x04&\x04B\x04_\x04}\x04\x9A\x04\xB7\x04\xD6\x04\xF3\x04\r\x05|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01\"\x05|\x01|\x01|\x01|\x015\x05I\x05`\x05|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01\x80\x05|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01\x8B\x05\xA8\x05|\x01|\x01|\x01|\x01|\x01|\x01\xC8\x05\xDE\x05\xF0\x05|\x01\x0F\x06|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01/\x06O\x06\xEE\xFF") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\0\x80\x01A\x80\x80\x01A\0\x81\x01A\x80\x81\x01A\0\x84\x01A\0\x85\x01\0\0\0\0C\x80\x93\x01E\0\x80\x01E\x80\x80\x01E\0\x81\x01E\0\x84\x01I\0\x80\x01I\x80\x80\x01I\0\x81\x01I\0\x84\x01\0\0\0\0N\x80\x81\x01O\0\x80\x01O\x80\x80\x01O\0\x81\x01O\x80\x81\x01O\0\x84\x01\0\0\0\0\0\0\0\0U\0\x80\x01U\x80\x80\x01U\0\x81\x01U\0\x84\x01Y\x80\x80\x01\0\0\0\0\0\0\0\0a\0\x80\x01a\x80\x80\x01a\0\x81\x01a\x80\x81\x01a\0\x84\x01a\0\x85\x01\0\0\0\0c\x80\x93\x01e\0\x80\x01e\x80\x80\x01e\0\x81\x01e\0\x84\x01i\0\x80\x01i\x80\x80\x01i\0\x81\x01i\0\x84\x01\0\0\0\0n\x80\x81\x01o\0\x80\x01o\x80\x80\x01o\0\x81\x01o\x80\x81\x01o\0\x84\x01\0\0\0\0\0\0\0\0u\0\x80\x01u\x80\x80\x01u\0\x81\x01u\0\x84\x01y\x80\x80\x01\0\0\0\0y\0\x84\x01A\0\x82\x01a\0\x82\x01A\0\x83\x01a\0\x83\x01A\0\x94\x01a\0\x94\x01C\x80\x80\x01c\x80\x80\x01C\0\x81\x01c\0\x81\x01C\x80\x83\x01c\x80\x83\x01C\0\x86\x01c\0\x86\x01D\0\x86\x01d\0\x86\x01\0\0\0\0\0\0\0\0E\0\x82\x01e\0\x82\x01E\0\x83\x01e\0\x83\x01E\x80\x83\x01e\x80\x83\x01E\0\x94\x01e\0\x94\x01E\0\x86\x01e\0\x86\x01G\0\x81\x01g\0\x81\x01G\0\x83\x01g\0\x83\x01G\x80\x83\x01g\x80\x83\x01G\x80\x93\x01g\x80\x93\x01H\0\x81\x01h\0\x81\x01\0\0\0\0\0\0\0\0I\x80\x81\x01i\x80\x81\x01I\0\x82\x01i\0\x82\x01I\0\x83\x01i\0\x83\x01I\0\x94\x01i\0\x94\x01I\x80\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0J\0\x81\x01j\0\x81\x01K\x80\x93\x01k\x80\x93\x01\0\0\0\0L\x80\x80\x01l\x80\x80\x01L\x80\x93\x01l\x80\x93\x01L\0\x86\x01l\0\x86\x01\0\0\0\0\0\0\0\0\0\0\0\0N\x80\x80\x01n\x80\x80\x01N\x80\x93\x01n\x80\x93\x01N\0\x86\x01n\0\x86\x01\0\0\0\0\0\0\0\0\0\0\0\0O\0\x82\x01o\0\x82\x01O\0\x83\x01o\0\x83\x01O\x80\x85\x01o\x80\x85\x01\0\0\0\0\0\0\0\0R\x80\x80\x01r\x80\x80\x01R\x80\x93\x01r\x80\x93\x01R\0\x86\x01r\0\x86\x01S\x80\x80\x01s\x80\x80\x01S\0\x81\x01s\0\x81\x01S\x80\x93\x01s\x80\x93\x01S\0\x86\x01s\0\x86\x01T\x80\x93\x01t\x80\x93\x01T\0\x86\x01t\0\x86\x01\0\0\0\0\0\0\0\0U\x80\x81\x01u\x80\x81\x01U\0\x82\x01u\0\x82\x01U\0\x83\x01u\0\x83\x01U\0\x85\x01u\0\x85\x01U\x80\x85\x01u\x80\x85\x01U\0\x94\x01u\0\x94\x01W\0\x81\x01w\0\x81\x01Y\0\x81\x01y\0\x81\x01Y\0\x84\x01Z\x80\x80\x01z\x80\x80\x01Z\x80\x83\x01z\x80\x83\x01Z\0\x86\x01z\0\x86\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0O\x80\x8D\x01o\x80\x8D\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U\x80\x8D\x01u\x80\x8D\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\0\x86\x01a\0\x86\x01I\0\x86\x01i\0\x86\x01O\0\x86\x01o\0\x86\x01U\0\x86\x01u\0\x86\x01\x11\0\x02\x03\x11\0\xFF\x02\x11\0\xFC\x02\x11\0\xF9\x02\x11\0\xF6\x02\x11\0\xF3\x02\x11\0\xF0\x02\x11\0\xED\x02\0\0\0\0\x11\0\xEA\x02\x11\0\xE7\x02\x11\0\xE4\x02\x11\0\xE1\x02\xC6\0\x82\x01\xE6\0\x82\x01\0\0\0\0\0\0\0\0G\0\x86\x01g\0\x86\x01K\0\x86\x01k\0\x86\x01O\0\x94\x01o\0\x94\x01\x11\0\xDE\x02\x11\0\xDB\x02\xB7\x01\x86\x01\x92\x02\x86\x01j\0\x86\x01\0\0\0\0\0\0\0\0\0\0\0\0G\x80\x80\x01g\x80\x80\x01\0\0\0\0\0\0\0\0N\0\x80\x01n\0\x80\x01\x11\0\xD8\x02\x11\0\xD5\x02\xC6\x80\x80\x01\xE6\x80\x80\x01\xD8\x80\x80\x01\xF8\x80\x80\x01A\x80\x87\x01a\x80\x87\x01A\x80\x88\x01a\x80\x88\x01E\x80\x87\x01e\x80\x87\x01E\x80\x88\x01e\x80\x88\x01I\x80\x87\x01i\x80\x87\x01I\x80\x88\x01i\x80\x88\x01O\x80\x87\x01o\x80\x87\x01O\x80\x88\x01o\x80\x88\x01R\x80\x87\x01r\x80\x87\x01R\x80\x88\x01r\x80\x88\x01U\x80\x87\x01u\x80\x87\x01U\x80\x88\x01u\x80\x88\x01S\0\x93\x01s\0\x93\x01T\0\x93\x01t\0\x93\x01\0\0\0\0\0\0\0\0H\0\x86\x01h\0\x86\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\x80\x83\x01a\x80\x83\x01E\x80\x93\x01e\x80\x93\x01\x11\0\xD2\x02\x11\0\xCF\x02\x11\0\xCC\x02\x11\0\xC9\x02O\x80\x83\x01o\x80\x83\x01\x11\0\xC6\x02\x11\0\xC3\x02Y\0\x82\x01y\0\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE8\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE8\xD8\0\x80\xD8\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xCA\xD8\0\x80\xCA\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xCA\xD8\0\x80\xCA\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD9\0\xC0\xE6\xD9\0\xC0\xE6\xD8\0\x80\xE6\xD9\0\xC0\xE6\xD9\0\xC0\xF0\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE8\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE9\xD8\0\x80\xEA\xD8\0\x80\xEA\xD8\0\x80\xE9\xD8\0\x80\xEA\xD8\0\x80\xEA\xD8\0\x80\xE9\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB9\x02\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0;\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA8\x80\x80\x01\x91\x83\x80\x01\xB7\0\0@\x95\x83\x80\x01\x97\x83\x80\x01\x99\x83\x80\x01\0\0\0\0\x9F\x83\x80\x01\0\0\0\0\xA5\x83\x80\x01\xA9\x83\x80\x01\x11\0\x1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\x03\x84\x01\xA5\x03\x84\x01\xB1\x83\x80\x01\xB5\x83\x80\x01\xB7\x83\x80\x01\xB9\x83\x80\x01\x11\0\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB9\x03\x84\x01\xC5\x03\x84\x01\xBF\x83\x80\x01\xC5\x83\x80\x01\xC9\x83\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD2\x83\x80\x01\xD2\x03\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x15\x04\x80\x01\x15\x04\x84\x01\0\0\0\0\x13\x84\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x06\x04\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1A\x84\x80\x01\x18\x04\x80\x01#\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x18\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x005\x04\x80\x015\x04\x84\x01\0\0\0\x003\x84\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0V\x04\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\x84\x80\x018\x04\x80\x01C\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\x84\x87\x01u\x84\x87\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x04\x83\x016\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x04\x83\x010\x04\x83\x01\x10\x04\x84\x010\x04\x84\x01\0\0\0\0\0\0\0\0\x15\x04\x83\x015\x04\x83\x01\0\0\0\0\0\0\0\0\xD8\x04\x84\x01\xD9\x04\x84\x01\x16\x04\x84\x016\x04\x84\x01\x17\x04\x84\x017\x04\x84\x01\0\0\0\0\0\0\0\0\x18\x04\x82\x018\x04\x82\x01\x18\x04\x84\x018\x04\x84\x01\x1E\x04\x84\x01>\x04\x84\x01\0\0\0\0\0\0\0\0\xE8\x04\x84\x01\xE9\x04\x84\x01-\x04\x84\x01M\x04\x84\x01#\x04\x82\x01C\x04\x82\x01#\x04\x84\x01C\x04\x84\x01#\x84\x85\x01C\x84\x85\x01'\x04\x84\x01G\x04\x84\x01\0\0\0\0\0\0\0\0+\x04\x84\x01K\x04\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDE\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDE\xD8\0\x80\xE4\xD8\0\x80\xE6\xD8\0\x80\n\xD8\0\x80\x0B\xD8\0\x80\x0C\xD8\0\x80\r\xD8\0\x80\x0E\xD8\0\x80\x0F\xD8\0\x80\x10\xD8\0\x80\x11\xD8\0\x80\x12\xD8\0\x80\x13\xD8\0\x80\x13\xD8\0\x80\x14\xD8\0\x80\x15\xD8\0\x80\x16\xD8\0\x80\0\0\0\0\x17\xD8\0\x80\0\0\0\0\x18\xD8\0\x80\x19\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\x12\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\x1E\xD8\0\x80\x1F\xD8\0\x80 \xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'\x86)\x03'\x06*\x03H\x06*\x03'\x86*\x03J\x06*\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1B\xD8\0\x80\x1C\xD8\0\x80\x1D\xD8\0\x80\x1E\xD8\0\x80\x1F\xD8\0\x80 \xD8\0\x80!\xD8\0\x80\"\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD5\x06*\x03\0\0\0\0\xC1\x06*\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD2\x06*\x03\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\x1B\xD8\0\x80\x1C\xD8\0\x80\x1D\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\t\x9E\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\t\x9E\x04\0\0\0\0\0\0\0\x003\t\x9E\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x15\t\x9ED\x16\t\x9ED\x17\t\x9ED\x1C\t\x9ED!\t\x9ED\"\t\x9ED+\t\x9ED/\t\x9ED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC1\x02\0\0\xBF\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA1\t\xDED\xA2\t\xDED\0\0\0\0\xAF\t\xDED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x002\n\x1EE\0\0\0\0\0\0\0\08\n\x1EE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\n\x1EE\x17\n\x1EE\x1C\n\x1EE\0\0\0\0\0\0\0\0+\n\x1EE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBD\x02\0\0\0\0\0\0\0\0\0\0\xBB\x02\0\0\xB9\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\x0B\x9EE\"\x0B\x9EE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB7\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB5\x02\0\0\xB3\x02\0\0\xB1\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x0C+\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0T\xD8\0\x80[\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAF\x02\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAD\x02\0\0\xAB\x02\0\0\0\0\0\0\xA8\x02\x01\0\xA8\x02\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA6\x02\0\0\xA4\x02\0\0\xA2\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD9\r\xE5\x06\0\0\0\0\0\0\x9F\x02\x01\0\x9F\x02\0\0\x9D\x02\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\xD8\0\x80g\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0k\xD8\0\x80k\xD8\0\x80k\xD8\0\x80k\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v\xD8\0\x80v\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0z\xD8\0\x80z\xD8\0\x80z\xD8\0\x80z\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\xD8\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9BB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x95B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\xD8\0\x80\x82\xD8\0\x80\0\xD9\0\xC0\x84\xD8\0\x80\0\xD9\0\xC0\xB2\x0F\xC0G\0\0\0\0\xB3\x0F\xC0G\0\0\0\0\x82\xD8\0\x80\x82\xD8\0\x80\x82\xD8\0\x80\x82\xD8\0\x80\0\0\0\0\0\0\0\0\x82\xD8\0\x80\0\xD9\0\xC0\xE6\xD8\0\x80\xE6\xD8\0\x80\t\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8FB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8DB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8BB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x89B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE4\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDE\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x02\0\0\0\0\0\0\x7F\x02\0\0\0\0\0\0}\x02\0\0\0\0\0\0{\x02\0\0\0\0\0\0y\x02\0\0\0\0\0\0\0\0\0\0w\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\x02\0\0\0\0\0\0s\x02\0\0\0\0\0\0\0\0\0\0q\x02\0\0o\x02\0\0\0\0\0\0m\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\x01\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xEA\xD8\0\x80\xD6\xD8\0\x80\xDC\xD8\0\x80\xCA\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE8\xD8\0\x80\xE4\xD8\0\x80\xE4\xD8\0\x80\xDC\xD8\0\x80\xDA\xD8\0\x80\xE6\xD8\0\x80\xE9\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80A\x80\x92\x01a\x80\x92\x01B\x80\x83\x01b\x80\x83\x01B\x80\x91\x01b\x80\x91\x01B\x80\x98\x01b\x80\x98\x01\x11\0j\x02\x11\0g\x02D\x80\x83\x01d\x80\x83\x01D\x80\x91\x01d\x80\x91\x01D\x80\x98\x01d\x80\x98\x01D\x80\x93\x01d\x80\x93\x01D\x80\x96\x01d\x80\x96\x01\x11\0d\x02\x11\0a\x02\x11\0^\x02\x11\0[\x02E\x80\x96\x01e\x80\x96\x01E\0\x98\x01e\0\x98\x01\x11\0X\x02\x11\0U\x02F\x80\x83\x01f\x80\x83\x01G\0\x82\x01g\0\x82\x01H\x80\x83\x01h\x80\x83\x01H\x80\x91\x01h\x80\x91\x01H\0\x84\x01h\0\x84\x01H\x80\x93\x01h\x80\x93\x01H\0\x97\x01h\0\x97\x01I\0\x98\x01i\0\x98\x01\x11\0R\x02\x11\0O\x02K\x80\x80\x01k\x80\x80\x01K\x80\x91\x01k\x80\x91\x01K\x80\x98\x01k\x80\x98\x01L\x80\x91\x01l\x80\x91\x01\x11\0L\x02\x11\0I\x02L\x80\x98\x01l\x80\x98\x01L\x80\x96\x01l\x80\x96\x01M\x80\x80\x01m\x80\x80\x01M\x80\x83\x01m\x80\x83\x01M\x80\x91\x01m\x80\x91\x01N\x80\x83\x01n\x80\x83\x01N\x80\x91\x01n\x80\x91\x01N\x80\x98\x01n\x80\x98\x01N\x80\x96\x01n\x80\x96\x01\x11\0F\x02\x11\0C\x02\x11\0@\x02\x11\0=\x02\x11\0:\x02\x11\x007\x02\x11\x004\x02\x11\x001\x02P\x80\x80\x01p\x80\x80\x01P\x80\x83\x01p\x80\x83\x01R\x80\x83\x01r\x80\x83\x01R\x80\x91\x01r\x80\x91\x01\x11\0.\x02\x11\0+\x02R\x80\x98\x01r\x80\x98\x01S\x80\x83\x01s\x80\x83\x01S\x80\x91\x01s\x80\x91\x01\x11\0(\x02\x11\0%\x02\x11\0\"\x02\x11\0\x1F\x02\x11\0\x1C\x02\x11\0\x19\x02T\x80\x83\x01t\x80\x83\x01T\x80\x91\x01t\x80\x91\x01T\x80\x98\x01t\x80\x98\x01T\x80\x96\x01t\x80\x96\x01U\0\x92\x01u\0\x92\x01U\0\x98\x01u\0\x98\x01U\x80\x96\x01u\x80\x96\x01\x11\0\x16\x02\x11\0\x13\x02\x11\0\x10\x02\x11\0\r\x02V\x80\x81\x01v\x80\x81\x01V\x80\x91\x01v\x80\x91\x01W\0\x80\x01w\0\x80\x01W\x80\x80\x01w\x80\x80\x01W\0\x84\x01w\0\x84\x01W\x80\x83\x01w\x80\x83\x01W\x80\x91\x01w\x80\x91\x01X\x80\x83\x01x\x80\x83\x01X\0\x84\x01x\0\x84\x01Y\x80\x83\x01y\x80\x83\x01Z\0\x81\x01z\0\x81\x01Z\x80\x91\x01z\x80\x91\x01Z\x80\x98\x01z\x80\x98\x01h\x80\x98\x01t\0\x84\x01w\0\x85\x01y\0\x85\x01\0\0\0\0\x7F\x81\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\x80\x91\x01a\x80\x91\x01A\x80\x84\x01a\x80\x84\x01\x11\0\n\x02\x11\0\x07\x02\x11\0\x04\x02\x11\0\x01\x02\x11\0\xFE\x01\x11\0\xFB\x01\x11\0\xF8\x01\x11\0\xF5\x01\x11\0\xF2\x01\x11\0\xEF\x01\x11\0\xEC\x01\x11\0\xE9\x01\x11\0\xE6\x01\x11\0\xE3\x01\x11\0\xE0\x01\x11\0\xDD\x01\x11\0\xDA\x01\x11\0\xD7\x01\x11\0\xD4\x01\x11\0\xD1\x01E\x80\x91\x01e\x80\x91\x01E\x80\x84\x01e\x80\x84\x01E\x80\x81\x01e\x80\x81\x01\x11\0\xCE\x01\x11\0\xCB\x01\x11\0\xC8\x01\x11\0\xC5\x01\x11\0\xC2\x01\x11\0\xBF\x01\x11\0\xBC\x01\x11\0\xB9\x01\x11\0\xB6\x01\x11\0\xB3\x01I\x80\x84\x01i\x80\x84\x01I\x80\x91\x01i\x80\x91\x01O\x80\x91\x01o\x80\x91\x01O\x80\x84\x01o\x80\x84\x01\x11\0\xB0\x01\x11\0\xAD\x01\x11\0\xAA\x01\x11\0\xA7\x01\x11\0\xA4\x01\x11\0\xA1\x01\x11\0\x9E\x01\x11\0\x9B\x01\x11\0\x98\x01\x11\0\x95\x01\x11\0\x92\x01\x11\0\x8F\x01\x11\0\x8C\x01\x11\0\x89\x01\x11\0\x86\x01\x11\0\x83\x01\x11\0\x80\x01\x11\0}\x01\x11\0z\x01\x11\0w\x01U\x80\x91\x01u\x80\x91\x01U\x80\x84\x01u\x80\x84\x01\x11\0t\x01\x11\0q\x01\x11\0n\x01\x11\0k\x01\x11\0h\x01\x11\0e\x01\x11\0b\x01\x11\0_\x01\x11\0\\\x01\x11\0Y\x01Y\0\x80\x01y\0\x80\x01Y\x80\x91\x01y\x80\x91\x01Y\x80\x84\x01y\x80\x84\x01Y\x80\x81\x01y\x80\x81\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB1\x83\x89\x01\xB1\x03\x8A\x01\x11\0\xE0\0\x11\0\xDC\0\x11\0\xD8\0\x11\0\xD4\0\x11\0\xD0\0\x11\0\xCC\0\x91\x83\x89\x01\x91\x03\x8A\x01\x11\0\xC2\0\x11\0\xBE\0\x11\0\xBA\0\x11\0\xB6\0\x11\0\xB2\0\x11\0\xAE\0\xB5\x83\x89\x01\xB5\x03\x8A\x01\x11\0V\x01\x11\0S\x01\x11\0P\x01\x11\0M\x01\0\0\0\0\0\0\0\0\x95\x83\x89\x01\x95\x03\x8A\x01\x11\0J\x01\x11\0G\x01\x11\0D\x01\x11\0A\x01\0\0\0\0\0\0\0\0\xB7\x83\x89\x01\xB7\x03\x8A\x01\x11\0\xA4\0\x11\0\xA0\0\x11\0\x9C\0\x11\0\x98\0\x11\0\x94\0\x11\0\x90\0\x97\x83\x89\x01\x97\x03\x8A\x01\x11\0\x86\0\x11\0\x82\0\x11\0~\0\x11\0z\0\x11\0v\0\x11\0r\0\xB9\x83\x89\x01\xB9\x03\x8A\x01\x11\0>\x01\x11\0;\x01\x11\08\x01\x11\x005\x01\x11\x002\x01\x11\0/\x01\x99\x83\x89\x01\x99\x03\x8A\x01\x11\0,\x01\x11\0)\x01\x11\0&\x01\x11\0#\x01\x11\0 \x01\x11\0\x1D\x01\xBF\x83\x89\x01\xBF\x03\x8A\x01\x11\0\x1A\x01\x11\0\x17\x01\x11\0\x14\x01\x11\0\x11\x01\0\0\0\0\0\0\0\0\x9F\x83\x89\x01\x9F\x03\x8A\x01\x11\0\x0E\x01\x11\0\x0B\x01\x11\0\x08\x01\x11\0\x05\x01\0\0\0\0\0\0\0\0\xC5\x83\x89\x01\xC5\x03\x8A\x01\x11\0\x02\x01\x11\0\xFF\0\x11\0\xFC\0\x11\0\xF9\0\x11\0\xF6\0\x11\0\xF3\0\0\0\0\0\xA5\x03\x8A\x01\0\0\0\0\x11\0\xF0\0\0\0\0\0\x11\0\xED\0\0\0\0\0\x11\0\xEA\0\xC9\x83\x89\x01\xC9\x03\x8A\x01\x11\0h\0\x11\0d\0\x11\0`\0\x11\0\\\0\x11\0X\0\x11\0T\0\xA9\x83\x89\x01\xA9\x03\x8A\x01\x11\0J\0\x11\0F\0\x11\0B\0\x11\0>\0\x11\0:\0\x11\x006\0\xB1\x03\x80\x01\xB1\x83\x80A\xB5\x03\x80\x01\xB5\x83\x80A\xB7\x03\x80\x01\xB7\x83\x80A\xB9\x03\x80\x01\xB9\x83\x80A\xBF\x03\x80\x01\xBF\x83\x80A\xC5\x03\x80\x01\xC5\x83\x80A\xC9\x03\x80\x01\xC9\x83\x80A\0\0\0\0\0\0\0\0\x11\0\xE7\0\x11\0\xE4\0\x12\0\xE0\0\x12\0\xDC\0\x12\0\xD8\0\x12\0\xD4\0\x12\0\xD0\0\x12\0\xCC\0\x11\0\xC9\0\x11\0\xC6\0\x12\0\xC2\0\x12\0\xBE\0\x12\0\xBA\0\x12\0\xB6\0\x12\0\xB2\0\x12\0\xAE\0\x11\0\xAB\0\x11\0\xA8\0\x12\0\xA4\0\x12\0\xA0\0\x12\0\x9C\0\x12\0\x98\0\x12\0\x94\0\x12\0\x90\0\x11\0\x8D\0\x11\0\x8A\0\x12\0\x86\0\x12\0\x82\0\x12\0~\0\x12\0z\0\x12\0v\0\x12\0r\0\x11\0o\0\x11\0l\0\x12\0h\0\x12\0d\0\x12\0`\0\x12\0\\\0\x12\0X\0\x12\0T\0\x11\0Q\0\x11\0N\0\x12\0J\0\x12\0F\0\x12\0B\0\x12\0>\0\x12\0:\0\x12\x006\0\xB1\x03\x83\x01\xB1\x03\x82\x01\x11\x003\0\xB1\x83\xA2\x01\x11\x000\0\0\0\0\0\xB1\x03\xA1\x01\x11\0-\0\x91\x03\x83\x01\x91\x03\x82\x01\x91\x03\x80\x01\x91\x83\x80A\x91\x83\xA2\x01\0\0\0\0\xB9\x03\0@\0\0\0\0\xA8\0\xA1\x01\x11\0*\0\xB7\x83\xA2\x01\x11\0'\0\0\0\0\0\xB7\x03\xA1\x01\x11\0$\0\x95\x03\x80\x01\x95\x83\x80A\x97\x03\x80\x01\x97\x83\x80A\x97\x83\xA2\x01\xBF\x1F\x80\x01\xBF\x9F\x80\x01\xBF\x1F\xA1\x01\xB9\x03\x83\x01\xB9\x03\x82\x01\x11\0!\0\x11\0\x1E@\0\0\0\0\0\0\0\0\xB9\x03\xA1\x01\x11\0\x1B\0\x99\x03\x83\x01\x99\x03\x82\x01\x99\x03\x80\x01\x99\x83\x80A\0\0\0\0\xFE\x1F\x80\x01\xFE\x9F\x80\x01\xFE\x1F\xA1\x01\xC5\x03\x83\x01\xC5\x03\x82\x01\x11\0\x18\0\x11\0\x15@\xC1\x83\x89\x01\xC1\x03\x8A\x01\xC5\x03\xA1\x01\x11\0\x12\0\xA5\x03\x83\x01\xA5\x03\x82\x01\xA5\x03\x80\x01\xA5\x83\x80A\xA1\x03\x8A\x01\xA8\0\x80\x01\xA8\x80\x80A`\0\0@\0\0\0\0\0\0\0\0\x11\0\x0F\0\xC9\x83\xA2\x01\x11\0\x0C\0\0\0\0\0\xC9\x03\xA1\x01\x11\0\t\0\x9F\x03\x80\x01\x9F\x83\x80A\xA9\x03\x80\x01\xA9\x83\x80A\xA9\x83\xA2\x01\xB4\0\0@\0\0\0\0\0\0\0\0\x02 \0@\x03 \0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x01\xD8\0\x80\x01\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA9\x03\0@\0\0\0\0\0\0\0\0\0\0\0\0K\0\0@\x10\0\x07@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90!\x9C\x01\x92!\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94!\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD0!\x9C\x01\xD4!\x9C\x01\xD2!\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\"\x9C\x01\0\0\0\0\0\0\0\0\x0B\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\"\x9C\x01\0\0\0\0%\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\"\x9C\x01\0\0\0\0\0\0\0\0C\"\x9C\x01\0\0\0\0\0\0\0\0E\"\x9C\x01\0\0\0\0H\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0\x9C\x01\0\0\0\0a\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0M\"\x9C\x01<\0\x9C\x01>\0\x9C\x01d\"\x9C\x01e\"\x9C\x01\0\0\0\0\0\0\0\0r\"\x9C\x01s\"\x9C\x01\0\0\0\0\0\0\0\0v\"\x9C\x01w\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0z\"\x9C\x01{\"\x9C\x01\0\0\0\0\0\0\0\0\x82\"\x9C\x01\x83\"\x9C\x01\0\0\0\0\0\0\0\0\x86\"\x9C\x01\x87\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA2\"\x9C\x01\xA8\"\x9C\x01\xA9\"\x9C\x01\xAB\"\x9C\x01|\"\x9C\x01}\"\x9C\x01\x91\"\x9C\x01\x92\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB2\"\x9C\x01\xB3\"\x9C\x01\xB4\"\x9C\x01\xB5\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x080\0@\t0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDD*\x9CA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\xD8\0\x80\xE4\xD8\0\x80\xE8\xD8\0\x80\xDE\xD8\0\x80\xE0\xD8\0\x80\xE0\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0K\xB0L\x18\0\0\0\0M\xB0L\x18\0\0\0\0O\xB0L\x18\0\0\0\0Q\xB0L\x18\0\0\0\0S\xB0L\x18\0\0\0\0U\xB0L\x18\0\0\0\0W\xB0L\x18\0\0\0\0Y\xB0L\x18\0\0\0\0[\xB0L\x18\0\0\0\0]\xB0L\x18\0\0\0\0_\xB0L\x18\0\0\0\0a\xB0L\x18\0\0\0\0\0\0\0\0d\xB0L\x18\0\0\0\0f\xB0L\x18\0\0\0\0h\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0o\xB0L\x18o0M\x18\0\0\0\0r\xB0L\x18r0M\x18\0\0\0\0u\xB0L\x18u0M\x18\0\0\0\0x\xB0L\x18x0M\x18\0\0\0\0{\xB0L\x18{0M\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\xD8\0\x80\x08\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x9D\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAB\xB0L\x18\0\0\0\0\xAD\xB0L\x18\0\0\0\0\xAF\xB0L\x18\0\0\0\0\xB1\xB0L\x18\0\0\0\0\xB3\xB0L\x18\0\0\0\0\xB5\xB0L\x18\0\0\0\0\xB7\xB0L\x18\0\0\0\0\xB9\xB0L\x18\0\0\0\0\xBB\xB0L\x18\0\0\0\0\xBD\xB0L\x18\0\0\0\0\xBF\xB0L\x18\0\0\0\0\xC1\xB0L\x18\0\0\0\0\0\0\0\0\xC4\xB0L\x18\0\0\0\0\xC6\xB0L\x18\0\0\0\0\xC8\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCF\xB0L\x18\xCF0M\x18\0\0\0\0\xD2\xB0L\x18\xD20M\x18\0\0\0\0\xD5\xB0L\x18\xD50M\x18\0\0\0\0\xD8\xB0L\x18\xD80M\x18\0\0\0\0\xDB\xB0L\x18\xDB0M\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA6\xB0L\x18\0\0\0\0\0\0\0\0\xEF\xB0L\x18\xF0\xB0L\x18\xF1\xB0L\x18\xF2\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0H\x8C\0@\xF4f\0@\xCA\x8E\0@\xC8\x8C\0@\xD1n\0@2N\0@\xE5S\0@\x9C\x9F\0@\x9C\x9F\0@QY\0@\xD1\x91\0@\x87U\0@HY\0@\xF6a\0@iv\0@\x85\x7F\0@?\x86\0@\xBA\x87\0@\xF8\x88\0@\x8F\x90\0@\x02j\0@\x1Bm\0@\xD9p\0@\xDEs\0@=\x84\0@j\x91\0@\xF1\x99\0@\x82N\0@uS\0@\x04k\0@\x1Br\0@-\x86\0@\x1E\x9E\0@P]\0@\xEBo\0@\xCD\x85\0@d\x89\0@\xC9b\0@\xD8\x81\0@\x1F\x88\0@\xCA^\0@\x17g\0@jm\0@\xFCr\0@\xCE\x90\0@\x86O\0@\xB7Q\0@\xDER\0@\xC4d\0@\xD3j\0@\x10r\0@\xE7v\0@\x01\x80\0@\x06\x86\0@\\\x86\0@\xEF\x8D\0@2\x97\0@o\x9B\0@\xFA\x9D\0@\x8Cx\0@\x7Fy\0@\xA0}\0@\xC9\x83\0@\x04\x93\0@\x7F\x9E\0@\xD6\x8A\0@\xDFX\0@\x04_\0@`|\0@~\x80\0@br\0@\xCAx\0@\xC2\x8C\0@\xF7\x96\0@\xD8X\0@b\\\0@\x13j\0@\xDAm\0@\x0Fo\0@/}\0@7~\0@K\x96\0@\xD2R\0@\x8B\x80\0@\xDCQ\0@\xCCQ\0@\x1Cz\0@\xBE}\0@\xF1\x83\0@u\x96\0@\x80\x8B\0@\xCFb\0@\x02j\0@\xFE\x8A\0@9N\0@\xE7[\0@\x12`\0@\x87s\0@pu\0@\x17S\0@\xFBx\0@\xBFO\0@\xA9_\0@\rN\0@\xCCl\0@xe\0@\"}\0@\xC3S\0@^X\0@\x01w\0@I\x84\0@\xAA\x8A\0@\xBAk\0@\xB0\x8F\0@\x88l\0@\xFEb\0@\xE5\x82\0@\xA0c\0@eu\0@\xAEN\0@iQ\0@\xC9Q\0@\x81h\0@\xE7|\0@o\x82\0@\xD2\x8A\0@\xCF\x91\0@\xF5R\0@BT\0@sY\0@\xEC^\0@\xC5e\0@\xFEo\0@*y\0@\xAD\x95\0@j\x9A\0@\x97\x9E\0@\xCE\x9E\0@\x9BR\0@\xC6f\0@wk\0@b\x8F\0@t^\0@\x90a\0@\0b\0@\x9Ad\0@#o\0@Iq\0@\x89t\0@\xCAy\0@\xF4}\0@o\x80\0@&\x8F\0@\xEE\x84\0@#\x90\0@J\x93\0@\x17R\0@\xA3R\0@\xBDT\0@\xC8p\0@\xC2\x88\0@\xAA\x8A\0@\xC9^\0@\xF5_\0@{c\0@\xAEk\0@>|\0@us\0@\xE4N\0@\xF9V\0@\xE7[\0@\xBA]\0@\x1C`\0@\xB2s\0@it\0@\x9A\x7F\0@F\x80\0@4\x92\0@\xF6\x96\0@H\x97\0@\x18\x98\0@\x8BO\0@\xAEy\0@\xB4\x91\0@\xB8\x96\0@\xE1`\0@\x86N\0@\xDAP\0@\xEE[\0@?\\\0@\x99e\0@\x02j\0@\xCEq\0@Bv\0@\xFC\x84\0@|\x90\0@\x8D\x9F\0@\x88f\0@.\x96\0@\x89R\0@{g\0@\xF3g\0@Am\0@\x9Cn\0@\tt\0@Yu\0@kx\0@\x10}\0@^\x98\0@mQ\0@.b\0@x\x96\0@+P\0@\x19]\0@\xEAm\0@*\x8F\0@\x8B_\0@Da\0@\x17h\0@\x87s\0@\x86\x96\0@)R\0@\x0FT\0@e\\\0@\x13f\0@Ng\0@\xA8h\0@\xE5l\0@\x06t\0@\xE2u\0@y\x7F\0@\xCF\x88\0@\xE1\x88\0@\xCC\x91\0@\xE2\x96\0@?S\0@\xBAn\0@\x1DT\0@\xD0q\0@\x98t\0@\xFA\x85\0@\xA3\x96\0@W\x9C\0@\x9F\x9E\0@\x97g\0@\xCBm\0@\xE8\x81\0@\xCBz\0@ {\0@\x92|\0@\xC0r\0@\x99p\0@X\x8B\0@\xC0N\0@6\x83\0@:R\0@\x07R\0@\xA6^\0@\xD3b\0@\xD6|\0@\x85[\0@\x1Em\0@\xB4f\0@;\x8F\0@L\x88\0@M\x96\0@\x8B\x89\0@\xD3^\0@@Q\0@\xC0U\0@\0\0\0\0\0\0\0\0ZX\0@\0\0\0\0tf\0@\0\0\0\0\0\0\0\0\xDEQ\0@*s\0@\xCAv\0@<y\0@^y\0@ey\0@\x8Fy\0@V\x97\0@\xBE|\0@\xBD\x7F\0@\0\0\0\0\x12\x86\0@\0\0\0\0\xF8\x8A\0@\0\0\0\0\0\0\0\08\x90\0@\xFD\x90\0@\0\0\0\0\0\0\0\0\0\0\0\0\xEF\x98\0@\xFC\x98\0@(\x99\0@\xB4\x9D\0@\xDE\x90\0@\xB7\x96\0@\xAEO\0@\xE7P\0@MQ\0@\xC9R\0@\xE4R\0@QS\0@\x9DU\0@\x06V\0@hV\0@@X\0@\xA8X\0@d\\\0@n\\\0@\x94`\0@ha\0@\x8Ea\0@\xF2a\0@Oe\0@\xE2e\0@\x91f\0@\x85h\0@wm\0@\x1An\0@\"o\0@nq\0@+r\0@\"t\0@\x91x\0@>y\0@Iy\0@Hy\0@Py\0@Vy\0@]y\0@\x8Dy\0@\x8Ey\0@@z\0@\x81z\0@\xC0{\0@\xF4}\0@\t~\0@A~\0@r\x7F\0@\x05\x80\0@\xED\x81\0@y\x82\0@y\x82\0@W\x84\0@\x10\x89\0@\x96\x89\0@\x01\x8B\0@9\x8B\0@\xD3\x8C\0@\x08\x8D\0@\xB6\x8F\0@8\x90\0@\xE3\x96\0@\xFF\x97\0@;\x98\0@u`\0@\x10\0\xC7C\x18\x82\0@\0\0\0\0\0\0\0\0&N\0@\xB5Q\0@hQ\0@\x80O\0@EQ\0@\x80Q\0@\xC7R\0@\xFAR\0@\x9DU\0@UU\0@\x99U\0@\xE2U\0@ZX\0@\xB3X\0@DY\0@TY\0@bZ\0@([\0@\xD2^\0@\xD9^\0@i_\0@\xAD_\0@\xD8`\0@Na\0@\x08a\0@\x8Ea\0@`a\0@\xF2a\0@4b\0@\xC4c\0@\x1Cd\0@Rd\0@Ve\0@tf\0@\x17g\0@\x1Bg\0@Vg\0@yk\0@\xBAk\0@Am\0@\xDBn\0@\xCBn\0@\"o\0@\x1Ep\0@nq\0@\xA7w\0@5r\0@\xAFr\0@*s\0@qt\0@\x06u\0@;u\0@\x1Dv\0@\x1Fv\0@\xCAv\0@\xDBv\0@\xF4v\0@Jw\0@@w\0@\xCCx\0@\xB1z\0@\xC0{\0@{|\0@[}\0@\xF4}\0@>\x7F\0@\x05\x80\0@R\x83\0@\xEF\x83\0@y\x87\0@A\x89\0@\x86\x89\0@\x96\x89\0@\xBF\x8A\0@\xF8\x8A\0@\xCB\x8A\0@\x01\x8B\0@\xFE\x8A\0@\xED\x8A\0@9\x8B\0@\x8A\x8B\0@\x08\x8D\0@8\x8F\0@r\x90\0@\x99\x91\0@v\x92\0@|\x96\0@\xE3\x96\0@V\x97\0@\xDB\x97\0@\xFF\x97\0@\x0B\x98\0@;\x98\0@\x12\x9B\0@\x9C\x9F\0@\x10\0\xC6C\x10\0\xC5C\x10\0\xC4C\x9D;\0@\x18@\0@9@\0@\x10\0\xC3C\x10\0\xC2C\x10\0\xC1CC\x9F\0@\x8E\x9F\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD9\x05\xDAB\x1A\xD8\0\x80\xF2\x85\xDBB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE9\x85\xE0B\xE9\x05\xE1B\x11\0\x04@\x11\0\x01@\xD0\x85\xDBB\xD0\x05\xDCB\xD0\x05\xDEB\xD1\x05\xDEB\xD2\x05\xDEB\xD3\x05\xDEB\xD4\x05\xDEB\xD5\x05\xDEB\xD6\x05\xDEB\0\0\0\0\xD8\x05\xDEB\xD9\x05\xDEB\xDA\x05\xDEB\xDB\x05\xDEB\xDC\x05\xDEB\0\0\0\0\xDE\x05\xDEB\0\0\0\0\xE0\x05\xDEB\xE1\x05\xDEB\0\0\0\0\xE3\x05\xDEB\xE4\x05\xDEB\0\0\0\0\xE6\x05\xDEB\xE7\x05\xDEB\xE8\x05\xDEB\xE9\x05\xDEB\xEA\x05\xDEB\xD5\x85\xDCB\xD1\x85\xDFB\xDB\x85\xDFB\xE4\x85\xDFB\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xBF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xBD\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\x01\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xBB\x03\0\0\0\0\x11\0\xB9\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xB7\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xB5\x03\x01\0\xB3\x03\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xB1\x03\x01\0\xAF\x03\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xAD\x03\0\0\0\0\x01\0\xAB\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xA9\x03\0\0\0\0\x01\0\xA7\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\x01\0\xA5\x83\0\0\0\0\x01\0\xA3\x83\x01\0\xA1\x83\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\x9F\x03\x01\0\x9D\x03\0\0\0\x80\x01\0\x9B\x03\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x99\x03\x01\0\x97\x03\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x95\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\x01\0\x8C\x83\x01\0\x8F\x83\x01\0\x93\x83\x01\0\x90\x83\x01\0\x8D\x83\x02\0\x92\x83\x02\0\x8F\x83\x02\0\x8C\x83\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\x8A\x83\x01\0\x89\x03\x02\0\x89\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\xD8\0\x80\x06\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\x87C\x11\0xC\x12\0\x84C\x12\0\x81C\x12\0~C\x12\0{C\x12\0xC\xD8\xD8\0\x80\xD8\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE2\xD8\0\x80\xD8\xD8\0\x80\xD8\xD8\0\x80\xD8\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0oC\x11\0lC\x12\0uC\x12\0rC\x12\0oC\x12\0lC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE8\xD8\0\x80\xE8\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=N\0@8N\0@AN\0@\x10\0kC`O\0@\xAEO\0@\xBBO\0@\x02P\0@zP\0@\x99P\0@\xE7P\0@\xCFP\0@\x9E4\0@\x10\0jCMQ\0@TQ\0@dQ\0@wQ\0@\x10\0iC\xB94\0@gQ\0@\x8DQ\0@\x10\0hC\x97Q\0@\xA4Q\0@\xCCN\0@\xACQ\0@\xB5Q\0@\x10\0gC\xF5Q\0@\x03R\0@\xDF4\0@;R\0@FR\0@rR\0@wR\0@\x155\0@\xC7R\0@\xC9R\0@\xE4R\0@\xFAR\0@\x05S\0@\x06S\0@\x17S\0@IS\0@QS\0@ZS\0@sS\0@}S\0@\x7FS\0@\x7FS\0@\x7FS\0@\x10\0fCpp\0@\xCAS\0@\xDFS\0@\x10\0eC\xEBS\0@\xF1S\0@\x06T\0@\x9ET\0@8T\0@HT\0@hT\0@\xA2T\0@\xF6T\0@\x10U\0@SU\0@cU\0@\x84U\0@\x84U\0@\x99U\0@\xABU\0@\xB3U\0@\xC2U\0@\x16W\0@\x06V\0@\x17W\0@QV\0@tV\0@\x07R\0@\xEEX\0@\xCEW\0@\xF4W\0@\rX\0@\x8BW\0@2X\0@1X\0@\xACX\0@\x10\0dC\xF2X\0@\xF7X\0@\x06Y\0@\x1AY\0@\"Y\0@bY\0@\x10\0cC\x10\0bC\xECY\0@\x1BZ\0@'Z\0@\xD8Y\0@fZ\0@\xEE6\0@\xFC6\0@\x08[\0@>[\0@>[\0@\x10\0aC\xC3[\0@\xD8[\0@\xE7[\0@\xF3[\0@\x10\0`C\xFF[\0@\x06\\\0@S_\0@\"\\\0@\x817\0@`\\\0@n\\\0@\xC0\\\0@\x8D\\\0@\x10\0_CC]\0@\x10\0^Cn]\0@k]\0@|]\0@\xE1]\0@\xE2]\0@/8\0@\xFD]\0@(^\0@=^\0@i^\0@b8\0@\x10\0]C|8\0@\xB0^\0@\xB3^\0@\xB6^\0@\xCA^\0@\x10\0\\C\xFE^\0@\x10\0[C\x10\0[C\x01\x82\0@\"_\0@\"_\0@\xC78\0@\x10\0ZC\x10\0YCb_\0@k_\0@\xE38\0@\x9A_\0@\xCD_\0@\xD7_\0@\xF9_\0@\x81`\0@:9\0@\x1C9\0@\x94`\0@\x10\0XC\xC7`\0@Ha\0@La\0@Na\0@La\0@za\0@\x8Ea\0@\xB2a\0@\xA4a\0@\xAFa\0@\xDEa\0@\xF2a\0@\xF6a\0@\x10b\0@\x1Bb\0@]b\0@\xB1b\0@\xD4b\0@Pc\0@\x10\0WC=c\0@\xFCb\0@hc\0@\x83c\0@\xE4c\0@\x10\0VC\"d\0@\xC5c\0@\xA9c\0@.:\0@id\0@~d\0@\x9Dd\0@wd\0@l:\0@Oe\0@le\0@\x10\0UC\xE3e\0@\xF8f\0@If\0@\x19;\0@\x91f\0@\x08;\0@\xE4:\0@\x92Q\0@\x95Q\0@\0g\0@\x9Cf\0@\xAD\x80\0@\xD9C\0@\x17g\0@\x1Bg\0@!g\0@^g\0@Sg\0@\x10\0TCI;\0@\xFAg\0@\x85g\0@Rh\0@\x85h\0@\x10\0SC\x8Eh\0@\x1Fh\0@\x14i\0@\x9D;\0@Bi\0@\xA3i\0@\xEAi\0@\xA8j\0@\x10\0RC\xDBj\0@\x18<\0@!k\0@\x10\0QCTk\0@N<\0@rk\0@\x9Fk\0@\xBAk\0@\xBBk\0@\x10\0PC\x10\0OC\x10\0NCNl\0@\x10\0MC\xBFl\0@\xCDl\0@gl\0@\x16m\0@>m\0@wm\0@Am\0@im\0@xm\0@\x85m\0@\x10\0LC4m\0@/n\0@nn\0@3=\0@\xCBn\0@\xC7n\0@\x10\0KC\xF9m\0@no\0@\x10\0JC\x10\0IC\xC6o\0@9p\0@\x1Ep\0@\x1Bp\0@\x96=\0@Jp\0@}p\0@wp\0@\xADp\0@\x10\0HCEq\0@\x10\0GC\x9Cq\0@\x10\0FC(r\0@5r\0@Pr\0@\x10\0EC\x80r\0@\x95r\0@\x10\0DC\x10\0CCzs\0@\x8Bs\0@\xAC>\0@\xA5s\0@\xB8>\0@\xB8>\0@Gt\0@\\t\0@qt\0@\x85t\0@\xCAt\0@\x1B?\0@$u\0@\x10\0BC>u\0@\x10\0ACpu\0@\x10\0@C\x10v\0@\x10\0?C\x10\0>C\x10\0=C\xFC?\0@\x08@\0@\xF4v\0@\x10\0<C\x10\0;C\x10\0:C\x10\09C\x1Ew\0@\x1Fw\0@\x1Fw\0@Jw\0@9@\0@\x8Bw\0@F@\0@\x96@\0@\x10\08CNx\0@\x8Cx\0@\xCCx\0@\xE3@\0@\x10\x007CVy\0@\x10\x006C\x10\x005C\x8Fy\0@\xEBy\0@/A\0@@z\0@Jz\0@Oz\0@\x10\x004C\x10\x003C\x10\x003C\xEEz\0@\x02B\0@\x10\x002C\xC6{\0@\xC9{\0@'B\0@\x10\x001C\xD2|\0@\xA0B\0@\xE8|\0@\xE3|\0@\0}\0@\x10\x000Cc}\0@\x01C\0@\xC7}\0@\x02~\0@E~\0@4C\0@\x10\0/C\x10\0.CYC\0@\x10\0-Cz\x7F\0@\x10\0,C\x95\x7F\0@\xFA\x7F\0@\x05\x80\0@\x10\0+C\x10\0*C`\x80\0@\x10\0)Cp\x80\0@\x10\0(C\xD5C\0@\xB2\x80\0@\x03\x81\0@\x0BD\0@>\x81\0@\xB5Z\0@\x10\0'C\x10\0&C\x10\0%C\x10\0$C\x01\x82\0@\x04\x82\0@\x9E\x8F\0@kD\0@\x91\x82\0@\x8B\x82\0@\x9D\x82\0@\xB3R\0@\xB1\x82\0@\xB3\x82\0@\xBD\x82\0@\xE6\x82\0@\x10\0#C\xE5\x82\0@\x1D\x83\0@c\x83\0@\xAD\x83\0@#\x83\0@\xBD\x83\0@\xE7\x83\0@W\x84\0@S\x83\0@\xCA\x83\0@\xCC\x83\0@\xDC\x83\0@\x10\0\"C\x10\0!C\x10\0 C+E\0@\xF1\x84\0@\xF3\x84\0@\x16\x85\0@\x10\0\x1FCd\x85\0@\x10\0\x1EC]E\0@aE\0@\x10\0\x1DC\x10\0\x1CCkE\0@P\x86\0@\\\x86\0@g\x86\0@i\x86\0@\xA9\x86\0@\x88\x86\0@\x0E\x87\0@\xE2\x86\0@y\x87\0@(\x87\0@k\x87\0@\x86\x87\0@\xD7E\0@\xE1\x87\0@\x01\x88\0@\xF9E\0@`\x88\0@c\x88\0@\x10\0\x1BC\xD7\x88\0@\xDE\x88\0@5F\0@\xFA\x88\0@\xBB4\0@\x10\0\x1AC\x10\0\x19C\xBEF\0@\xC7F\0@\xA0\x8A\0@\xED\x8A\0@\x8A\x8B\0@U\x8C\0@\x10\0\x18C\xAB\x8C\0@\xC1\x8C\0@\x1B\x8D\0@w\x8D\0@\x10\0\x17C\x10\0\x16C\xCB\x8D\0@\xBC\x8D\0@\xF0\x8D\0@\x10\0\x15C\xD4\x8E\0@8\x8F\0@\x10\0\x14C\x10\0\x13C\x94\x90\0@\xF1\x90\0@\x11\x91\0@\x10\0\x12C\x1B\x91\0@8\x92\0@\xD7\x92\0@\xD8\x92\0@|\x92\0@\xF9\x93\0@\x15\x94\0@\x10\0\x11C\x8B\x95\0@\x95I\0@\xB7\x95\0@\x10\0\x10C\xE6I\0@\xC3\x96\0@\xB2]\0@#\x97\0@\x10\0\x0FC\x10\0\x0ECnJ\0@vJ\0@\xE0\x97\0@\x10\0\rC\xB2J\0@\x10\0\x0CC\x0B\x98\0@\x0B\x98\0@)\x98\0@\x10\0\x0BC\xE2\x98\0@3K\0@)\x99\0@\xA7\x99\0@\xC2\x99\0@\xFE\x99\0@\xCEK\0@\x10\0\nC\x12\x9B\0@@\x9C\0@\xFD\x9C\0@\xCEL\0@\xEDL\0@g\x9D\0@\x10\0\tC\xF8L\0@\x10\0\x08C\x10\0\x07C\x10\0\x06C\xBB\x9E\0@VM\0@\xF9\x9E\0@\xFE\x9E\0@\x05\x9F\0@\x0F\x9F\0@\x16\x9F\0@;\x9F\0@\x10\0\x05C\0\0\0\0\0\0\0\0") }, 0u32), passthrough_cap: 768u16 };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::normalizer::provider::NormalizerNfdDataV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::normalizer::provider::NormalizerNfdDataV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_NORMALIZER_NFD_DATA_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfdDataV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_normalizer_nfd_data_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfdDataV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_normalizer_nfd_data_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfdDataV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfdDataV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_normalizer_nfd_data_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfdDataV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfdDataV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfdDataV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_normalizer_nfd_data_v1 as impl_normalizer_nfd_data_v1;
diff --git a/vendor/icu_normalizer_data/data/normalizer_nfd_supplement_v1.rs.data b/vendor/icu_normalizer_data/data/normalizer_nfd_supplement_v1.rs.data
new file mode 100644
index 00000000..46805fe5
--- /dev/null
+++ b/vendor/icu_normalizer_data/data/normalizer_nfd_supplement_v1.rs.data
@@ -0,0 +1,75 @@
+// @generated
+/// Implement `DataProvider<NormalizerNfdSupplementV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4486B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_normalizer_nfd_supplement_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_NORMALIZER_NFD_SUPPLEMENT_V1: &'static <icu::normalizer::provider::NormalizerNfdSupplementV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::normalizer::provider::NonRecursiveDecompositionSupplement { trie: icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 119296u32, shifted12_high_start: 30u16, index3_null_offset: 15u16, data_null_offset: 0u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\0\0\0\0\0\0\0\0\0\0k\0\xA7\0\0\0\0\0\0\0\0\0\0\0\xD9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0E\x01\0\0\0\0\0\x001\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x005\x01E\x01E\x01H\x01E\x01f\x01E\x01~\x01\0\0\x10\0 \x000\0@\0P\0`\0p\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0k\0{\0\x8B\0\x9B\0\xA7\0\xB7\0\xC7\0\xD7\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\xD9\0\xE9\0\xF9\0\t\x01\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\x0E\x01\x1E\x01.\x01>\x01\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\x001\x01A\x01Q\x01a\x01i\x01u\x01\x83\x01\x93\x01\x9D\x01\xAD\x01\xBB\x01\xC5\x01\0\0\0\0\xD1\x01\xE1\x01\xF1\x01\x01\x02\x11\x02!\x02/\x02?\x02M\x02]\x02m\x02{\x02\x8B\x02\x9B\x02\xAB\x02\xBB\x02\xCB\x02\xDB\x02\xEA\x02\xFA\x02\n\x03\x1A\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x004\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0M\x03\0\0\0\0\0\0\0\0R\x03b\x03\0\0\0\0\0\0H\0h\0\x84\0\x84\0\x84\0\x84\0\x98\0\x84\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\xB8\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\xD8\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\xEB\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\xFE\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x15\x01\xEE\xFF") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\0\x04\x03\xFC\0\x04\x03\xDC\0\x01\x03\xFC\0\x01\x03\xDC\0\x0C\x03\xFC\0\x0C\x03\xDC\0\0\x03\xFC\0\0\x03\0\0\0\0\xC4\0\x04\x03\xE4\0\x04\x03&\x02\x04\x03'\x02\x04\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEA\x01\x04\x03\xEB\x01\x04\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC5\0\x01\x03\xE5\0\x01\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD6\0\x04\x03\xF6\0\x04\x03\xD5\0\x04\x03\xF5\0\x04\x03\0\0\0\0\0\0\0\0.\x02\x04\x03/\x02\x04\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCA\x03\x01\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCB\x03\x01\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCA\x0C\xD5\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\r\xCA\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC7\0\x01\x03\xE7\0\x01\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x12\x01\0\x03\x13\x01\0\x03\x12\x01\x01\x03\x13\x01\x01\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\x02\x06\x03)\x02\x06\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCF\0\x01\x03\xEF\0\x01\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x006\x1E\x04\x037\x1E\x04\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD5\0\x01\x03\xF5\0\x01\x03\xD5\0\x08\x03\xF5\0\x08\x03L\x01\0\x03M\x01\0\x03L\x01\x01\x03M\x01\x01\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Z\x1E\x04\x03[\x1E\x04\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Z\x01\x07\x03[\x01\x07\x03`\x01\x07\x03a\x01\x07\x03b\x1E\x07\x03c\x1E\x07\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\x01\x01\x03i\x01\x01\x03j\x01\x08\x03k\x01\x08\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC2\0\x01\x03\xE2\0\x01\x03\xC2\0\0\x03\xE2\0\0\x03\xC2\0\t\x03\xE2\0\t\x03\xC2\0\x03\x03\xE2\0\x03\x03\xA0\x1E\x02\x03\xA1\x1E\x02\x03\x02\x01\x01\x03\x03\x01\x01\x03\x02\x01\0\x03\x03\x01\0\x03\x02\x01\t\x03\x03\x01\t\x03\x02\x01\x03\x03\x03\x01\x03\x03\xA0\x1E\x06\x03\xA1\x1E\x06\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCA\0\x01\x03\xEA\0\x01\x03\xCA\0\0\x03\xEA\0\0\x03\xCA\0\t\x03\xEA\0\t\x03\xCA\0\x03\x03\xEA\0\x03\x03\xB8\x1E\x02\x03\xB9\x1E\x02\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD4\0\x01\x03\xF4\0\x01\x03\xD4\0\0\x03\xF4\0\0\x03\xD4\0\t\x03\xF4\0\t\x03\xD4\0\x03\x03\xF4\0\x03\x03\xCC\x1E\x02\x03\xCD\x1E\x02\x03\xA0\x01\x01\x03\xA1\x01\x01\x03\xA0\x01\0\x03\xA1\x01\0\x03\xA0\x01\t\x03\xA1\x01\t\x03\xA0\x01\x03\x03\xA1\x01\x03\x03\xA0\x01#\x03\xA1\x01#\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAF\x01\x01\x03\xB0\x01\x01\x03\xAF\x01\0\x03\xB0\x01\0\x03\xAF\x01\t\x03\xB0\x01\t\x03\xAF\x01\x03\x03\xB0\x01\x03\x03\xAF\x01#\x03\xB0\x01#\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1F\0\x03\x01\x1F\0\x03\0\x1F\x01\x03\x01\x1F\x01\x03\0\x1FB\x03\x01\x1FB\x03\0\0\0\0\0\0\0\0\x08\x1F\0\x03\t\x1F\0\x03\x08\x1F\x01\x03\t\x1F\x01\x03\x08\x1FB\x03\t\x1FB\x03\0\0\0\0\0\0\0\0\x10\x1F\0\x03\x11\x1F\0\x03\x10\x1F\x01\x03\x11\x1F\x01\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x18\x1F\0\x03\x19\x1F\0\x03\x18\x1F\x01\x03\x19\x1F\x01\x03\0\0\0\0\0\0\0\0 \x1F\0\x03!\x1F\0\x03 \x1F\x01\x03!\x1F\x01\x03 \x1FB\x03!\x1FB\x03\0\0\0\0\0\0\0\0(\x1F\0\x03)\x1F\0\x03(\x1F\x01\x03)\x1F\x01\x03(\x1FB\x03)\x1FB\x03\0\0\0\0\0\0\0\x000\x1F\0\x031\x1F\0\x030\x1F\x01\x031\x1F\x01\x030\x1FB\x031\x1FB\x03\0\0\0\0\0\0\0\08\x1F\0\x039\x1F\0\x038\x1F\x01\x039\x1F\x01\x038\x1FB\x039\x1FB\x03\0\0\0\0\0\0\0\0@\x1F\0\x03A\x1F\0\x03@\x1F\x01\x03A\x1F\x01\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\x1F\0\x03I\x1F\0\x03H\x1F\x01\x03I\x1F\x01\x03\0\0\0\0\0\0\0\0P\x1F\0\x03Q\x1F\0\x03P\x1F\x01\x03Q\x1F\x01\x03P\x1FB\x03Q\x1FB\x03\0\0\0\0\0\0\0\0\0\0\0\0Y\x1F\0\x03\0\0\0\0Y\x1F\x01\x03\0\0\0\0Y\x1FB\x03\0\0\0\0\0\0\0\0`\x1F\0\x03a\x1F\0\x03`\x1F\x01\x03a\x1F\x01\x03`\x1FB\x03a\x1FB\x03\0\0\0\0\0\0\0\0h\x1F\0\x03i\x1F\0\x03h\x1F\x01\x03i\x1F\x01\x03h\x1FB\x03i\x1FB\x03\0\0\0\0\xAC\x03\0\0\xB5\x03\0\x03\xAD\x03\0\0\xB7\x03\0\x03\xAE\x03\0\0\xB9\x03\0\x03\xAF\x03\0\0\xBF\x03\0\x03\xCC\x03\0\0\xC5\x03\0\x03\xCD\x03\0\0\xC9\x03\0\x03\xCE\x03\0\0\0\0\0\0\0\0\0\0\0\x1FE\x03\x01\x1FE\x03\x02\x1FE\x03\x03\x1FE\x03\x04\x1FE\x03\x05\x1FE\x03\x06\x1FE\x03\x07\x1FE\x03\x08\x1FE\x03\t\x1FE\x03\n\x1FE\x03\x0B\x1FE\x03\x0C\x1FE\x03\r\x1FE\x03\x0E\x1FE\x03\x0F\x1FE\x03 \x1FE\x03!\x1FE\x03\"\x1FE\x03#\x1FE\x03$\x1FE\x03%\x1FE\x03&\x1FE\x03'\x1FE\x03(\x1FE\x03)\x1FE\x03*\x1FE\x03+\x1FE\x03,\x1FE\x03-\x1FE\x03.\x1FE\x03/\x1FE\x03`\x1FE\x03a\x1FE\x03b\x1FE\x03c\x1FE\x03d\x1FE\x03e\x1FE\x03f\x1FE\x03g\x1FE\x03h\x1FE\x03i\x1FE\x03j\x1FE\x03k\x1FE\x03l\x1FE\x03m\x1FE\x03n\x1FE\x03o\x1FE\x03\xB1\x03\x06\x03\xB1\x03\x04\x03p\x1FE\x03\xB1\x03E\x03\xAC\x03E\x03\0\0\0\0\xB1\x03B\x03\xB6\x1FE\x03\x91\x03\x06\x03\x91\x03\x04\x03\x91\x03\0\x03\x86\x03\0\0\x91\x03E\x03\0\0\0\0\xB9\x03\0\0\0\0\0\0\xA8\0B\x03t\x1FE\x03\xB7\x03E\x03\xAE\x03E\x03\0\0\0\0\xB7\x03B\x03\xC6\x1FE\x03\x95\x03\0\x03\x88\x03\0\0\x97\x03\0\x03\x89\x03\0\0\x97\x03E\x03\xBF\x1F\0\x03\xBF\x1F\x01\x03\xBF\x1FB\x03\xB9\x03\x06\x03\xB9\x03\x04\x03\xCA\x03\0\x03\x90\x03\0\0\0\0\0\0\0\0\0\0\xB9\x03B\x03\xCA\x03B\x03\x99\x03\x06\x03\x99\x03\x04\x03\x99\x03\0\x03\x8A\x03\0\0\0\0\0\0\xFE\x1F\0\x03\xFE\x1F\x01\x03\xFE\x1FB\x03\xC5\x03\x06\x03\xC5\x03\x04\x03\xCB\x03\0\x03\xB0\x03\0\0\xC1\x03\x13\x03\xC1\x03\x14\x03\xC5\x03B\x03\xCB\x03B\x03\xA5\x03\x06\x03\xA5\x03\x04\x03\xA5\x03\0\x03\x8E\x03\0\0\xA1\x03\x14\x03\xA8\0\0\x03\x85\x03\0\0`\0\0\0\0\0\0\0\0\0\0\0|\x1FE\x03\xC9\x03E\x03\xCE\x03E\x03\0\0\0\0\xC9\x03B\x03\xF6\x1FE\x03\x9F\x03\0\x03\x8C\x03\0\0\xA9\x03\0\x03\x8F\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0I\xFB\xC1\x05I\xFB\xC2\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\0\0\x17\0\0\0\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\0\x0F\0\0\0\r\0\0\0\x0B\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\0\0\x05\0\0\0\x03\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0") }, 0u32), scalars24: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xBC\xD1\x01o\xD1\x01\xBB\xD1\x01o\xD1\x01\xBC\xD1\x01n\xD1\x01\xBB\xD1\x01n\xD1\x01_\xD1\x01r\xD1\x01_\xD1\x01q\xD1\x01_\xD1\x01p\xD1\x01_\xD1\x01o\xD1\x01_\xD1\x01n\xD1\x01im\x01gm\x01!a\x01 a\x01\"a\x01\x1Fa\x01!a\x01\x1Fa\x01") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::normalizer::provider::NormalizerNfdSupplementV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::normalizer::provider::NormalizerNfdSupplementV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_NORMALIZER_NFD_SUPPLEMENT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfdSupplementV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_normalizer_nfd_supplement_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfdSupplementV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_normalizer_nfd_supplement_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfdSupplementV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfdSupplementV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_normalizer_nfd_supplement_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfdSupplementV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfdSupplementV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfdSupplementV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_normalizer_nfd_supplement_v1 as impl_normalizer_nfd_supplement_v1;
diff --git a/vendor/icu_normalizer_data/data/normalizer_nfd_tables_v1.rs.data b/vendor/icu_normalizer_data/data/normalizer_nfd_tables_v1.rs.data
new file mode 100644
index 00000000..5a2e938b
--- /dev/null
+++ b/vendor/icu_normalizer_data/data/normalizer_nfd_tables_v1.rs.data
@@ -0,0 +1,75 @@
+// @generated
+/// Implement `DataProvider<NormalizerNfdTablesV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 2177B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_normalizer_nfd_tables_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_NORMALIZER_NFD_TABLES_V1: &'static <icu::normalizer::provider::NormalizerNfdTablesV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::normalizer::provider::DecompositionTables { scalars16: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE9\x05\xBC\x05\xC2\x05\xE9\x05\xBC\x05\xC1\x05A\0\n\x03\xC9\x03B\x03E\x03\xC9\x03\x01\x03E\x03\xC9\x03\0\x03E\x03\xC5\x03\x08\x03B\x03\xC5\x03\x08\x03\x01\x03\xC5\x03\x08\x03\0\x03\xB9\x03\x08\x03B\x03\xB9\x03\x08\x03\x01\x03\xB9\x03\x08\x03\0\x03\xB7\x03B\x03E\x03\xB7\x03\x01\x03E\x03\xB7\x03\0\x03E\x03\xB1\x03B\x03E\x03\xB1\x03\x01\x03E\x03\xB1\x03\0\x03E\x03\xA9\x03\x14\x03B\x03E\x03\xA9\x03\x13\x03B\x03E\x03\xA9\x03\x14\x03\x01\x03E\x03\xA9\x03\x13\x03\x01\x03E\x03\xA9\x03\x14\x03\0\x03E\x03\xA9\x03\x13\x03\0\x03E\x03\xA9\x03\x14\x03E\x03\xA9\x03\x13\x03E\x03\xC9\x03\x14\x03B\x03E\x03\xC9\x03\x13\x03B\x03E\x03\xC9\x03\x14\x03\x01\x03E\x03\xC9\x03\x13\x03\x01\x03E\x03\xC9\x03\x14\x03\0\x03E\x03\xC9\x03\x13\x03\0\x03E\x03\xC9\x03\x14\x03E\x03\xC9\x03\x13\x03E\x03\x97\x03\x14\x03B\x03E\x03\x97\x03\x13\x03B\x03E\x03\x97\x03\x14\x03\x01\x03E\x03\x97\x03\x13\x03\x01\x03E\x03\x97\x03\x14\x03\0\x03E\x03\x97\x03\x13\x03\0\x03E\x03\x97\x03\x14\x03E\x03\x97\x03\x13\x03E\x03\xB7\x03\x14\x03B\x03E\x03\xB7\x03\x13\x03B\x03E\x03\xB7\x03\x14\x03\x01\x03E\x03\xB7\x03\x13\x03\x01\x03E\x03\xB7\x03\x14\x03\0\x03E\x03\xB7\x03\x13\x03\0\x03E\x03\xB7\x03\x14\x03E\x03\xB7\x03\x13\x03E\x03\x91\x03\x14\x03B\x03E\x03\x91\x03\x13\x03B\x03E\x03\x91\x03\x14\x03\x01\x03E\x03\x91\x03\x13\x03\x01\x03E\x03\x91\x03\x14\x03\0\x03E\x03\x91\x03\x13\x03\0\x03E\x03\x91\x03\x14\x03E\x03\x91\x03\x13\x03E\x03\xB1\x03\x14\x03B\x03E\x03\xB1\x03\x13\x03B\x03E\x03\xB1\x03\x14\x03\x01\x03E\x03\xB1\x03\x13\x03\x01\x03E\x03\xB1\x03\x14\x03\0\x03E\x03\xB1\x03\x13\x03\0\x03E\x03\xB1\x03\x14\x03E\x03\xB1\x03\x13\x03E\x03\xA5\x03\x14\x03B\x03\xA5\x03\x14\x03\x01\x03\xA5\x03\x14\x03\0\x03\xC5\x03\x14\x03B\x03\xC5\x03\x13\x03B\x03\xC5\x03\x14\x03\x01\x03\xC5\x03\x13\x03\x01\x03\xC5\x03\x14\x03\0\x03\xC5\x03\x13\x03\0\x03\x9F\x03\x14\x03\x01\x03\x9F\x03\x13\x03\x01\x03\x9F\x03\x14\x03\0\x03\x9F\x03\x13\x03\0\x03\xBF\x03\x14\x03\x01\x03\xBF\x03\x13\x03\x01\x03\xBF\x03\x14\x03\0\x03\xBF\x03\x13\x03\0\x03\x99\x03\x14\x03B\x03\x99\x03\x13\x03B\x03\x99\x03\x14\x03\x01\x03\x99\x03\x13\x03\x01\x03\x99\x03\x14\x03\0\x03\x99\x03\x13\x03\0\x03\xB9\x03\x14\x03B\x03\xB9\x03\x13\x03B\x03\xB9\x03\x14\x03\x01\x03\xB9\x03\x13\x03\x01\x03\xB9\x03\x14\x03\0\x03\xB9\x03\x13\x03\0\x03\x95\x03\x14\x03\x01\x03\x95\x03\x13\x03\x01\x03\x95\x03\x14\x03\0\x03\x95\x03\x13\x03\0\x03\xB5\x03\x14\x03\x01\x03\xB5\x03\x13\x03\x01\x03\xB5\x03\x14\x03\0\x03\xB5\x03\x13\x03\0\x03u\0\x1B\x03#\x03U\0\x1B\x03#\x03u\0\x1B\x03\x03\x03U\0\x1B\x03\x03\x03u\0\x1B\x03\t\x03U\0\x1B\x03\t\x03u\0\x1B\x03\0\x03U\0\x1B\x03\0\x03u\0\x1B\x03\x01\x03U\0\x1B\x03\x01\x03o\0\x1B\x03#\x03O\0\x1B\x03#\x03o\0\x1B\x03\x03\x03O\0\x1B\x03\x03\x03o\0\x1B\x03\t\x03O\0\x1B\x03\t\x03o\0\x1B\x03\0\x03O\0\x1B\x03\0\x03o\0\x1B\x03\x01\x03O\0\x1B\x03\x01\x03o\0#\x03\x02\x03O\0#\x03\x02\x03o\0\x02\x03\x03\x03O\0\x02\x03\x03\x03o\0\x02\x03\t\x03O\0\x02\x03\t\x03o\0\x02\x03\0\x03O\0\x02\x03\0\x03o\0\x02\x03\x01\x03O\0\x02\x03\x01\x03e\0#\x03\x02\x03E\0#\x03\x02\x03e\0\x02\x03\x03\x03E\0\x02\x03\x03\x03e\0\x02\x03\t\x03E\0\x02\x03\t\x03e\0\x02\x03\0\x03E\0\x02\x03\0\x03e\0\x02\x03\x01\x03E\0\x02\x03\x01\x03a\0#\x03\x06\x03A\0#\x03\x06\x03a\0\x06\x03\x03\x03A\0\x06\x03\x03\x03a\0\x06\x03\t\x03A\0\x06\x03\t\x03a\0\x06\x03\0\x03A\0\x06\x03\0\x03a\0\x06\x03\x01\x03A\0\x06\x03\x01\x03a\0#\x03\x02\x03A\0#\x03\x02\x03a\0\x02\x03\x03\x03A\0\x02\x03\x03\x03a\0\x02\x03\t\x03A\0\x02\x03\t\x03a\0\x02\x03\0\x03A\0\x02\x03\0\x03a\0\x02\x03\x01\x03A\0\x02\x03\x01\x03u\0\x04\x03\x08\x03U\0\x04\x03\x08\x03u\0\x03\x03\x01\x03U\0\x03\x03\x01\x03s\0#\x03\x07\x03S\0#\x03\x07\x03s\0\x0C\x03\x07\x03S\0\x0C\x03\x07\x03s\0\x01\x03\x07\x03S\0\x01\x03\x07\x03r\0#\x03\x04\x03R\0#\x03\x04\x03o\0\x04\x03\x01\x03O\0\x04\x03\x01\x03o\0\x04\x03\0\x03O\0\x04\x03\0\x03o\0\x03\x03\x08\x03O\0\x03\x03\x08\x03o\0\x03\x03\x01\x03O\0\x03\x03\x01\x03l\0#\x03\x04\x03L\0#\x03\x04\x03i\0\x08\x03\x01\x03I\0\x08\x03\x01\x03e\0'\x03\x06\x03E\0'\x03\x06\x03e\0\x04\x03\x01\x03E\0\x04\x03\x01\x03e\0\x04\x03\0\x03E\0\x04\x03\0\x03c\0'\x03\x01\x03C\0'\x03\x01\x03B\x1B5\x1B?\x1B5\x1B>\x1B5\x1B<\x1B5\x1B:\x1B5\x1B\x11\x1B5\x1B\r\x1B5\x1B\x0B\x1B5\x1B\t\x1B5\x1B\x07\x1B5\x1B\x05\x1B5\x1B%\x10.\x10\x90\x0F\xB5\x0F\xAB\x0F\xB7\x0F\xA6\x0F\xB7\x0F\xA1\x0F\xB7\x0F\x9C\x0F\xB7\x0F\x92\x0F\xB7\x0F@\x0F\xB5\x0F[\x0F\xB7\x0FV\x0F\xB7\x0FQ\x0F\xB7\x0FL\x0F\xB7\x0FB\x0F\xB7\x0F\xD9\r\xDF\r\xD9\r\xCF\r\xCA\rF\rW\rG\r>\rF\r>\r\xC6\x0C\xC2\x0C\xD5\x0C\xC6\x0C\xD6\x0C\xC6\x0C\xD5\x0C\xBF\x0C\xD5\x0C\xC6\x0B\xD7\x0B\xC7\x0B\xBE\x0B\xC6\x0B\xBE\x0B\x92\x0B\xD7\x0BG\x0BW\x0BG\x0B>\x0BG\x0BV\x0B\xC7\t\xD7\t\xC7\t\xBE\to\0\x07\x03\x04\x03O\0\x07\x03\x04\x03o\0\x03\x03\x04\x03O\0\x03\x03\x04\x03o\0\x08\x03\x04\x03O\0\x08\x03\x04\x03a\0\n\x03\x01\x03A\0\n\x03\x01\x03o\0(\x03\x04\x03O\0(\x03\x04\x03a\0\x07\x03\x04\x03A\0\x07\x03\x04\x03a\0\x08\x03\x04\x03A\0\x08\x03\x04\x03u\0\x08\x03\0\x03U\0\x08\x03\0\x03u\0\x08\x03\x0C\x03U\0\x08\x03\x0C\x03u\0\x08\x03\x01\x03U\0\x08\x03\x01\x03u\0\x08\x03\x04\x03U\0\x08\x03\x04\x03") }, scalars24: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\xA6\x02\x91\xA2\x02\x0E\xA2\x02\x05\xA1\x02\xCE\xA0\x020\x9B\x02\xB6\x95\x02\x96\x94\x02\n\x94\x02\x1A\x92\x02E\x91\x02w\x8D\x02\xFA\x8B\x02.\x87\x02\xED\x85\x02\xD2\x85\x02\xDE\x08\x02\x04\x08\x02/\x7F\x02\xA8|\x02fy\x02\xAEx\x02gv\x02\xD2p\x02\xB1o\x02,o\x02\xCAs\x02\xD5l\x02km\x026l\x02<k\x02\x9C3\x02\x933\x02\xB5g\x02\xA7g\x02_3\x02\xA8e\x02#e\x02\xDAd\x02>c\x02\xD9b\x02Gb\x02(b\x02\x86_\x02\x80\\\x02\xAB[\x02\xA7Z\x02|Y\x02\xC5V\x02\x9AV\x02&V\x02\x1DT\x023Q\x02\x19Q\x02\xF2P\x02\xF3P\x02DP\x02\xB8O\x02\xA1O\x02\x9F!\x02\x92L\x026L\x02\x14H\x025G\x02\x08F\x02\xABC\x02cB\x02%\x05\x02\x8E?\x02^?\x02\xD1>\x02\x1E=\x02\xBC<\x02\xFA:\x02\x0B\x1D\x02\x8D:\x02\xA78\x02\xA36\x02m4\x02\xC33\x02\n0\x02\xF1+\x02\x0C+\x02\xD4&\x02\xDAa\x02\xB82\x021#\x02\x92\xA3\x02\x83!\x02\xE6\x1D\x02\xE4\x1D\x02\x18\x1B\x02\xC8\x19\x02\xEA\x16\x02\xA8\x16\x02\xE4\x14\x02c\x0B\x02,\n\x02\xDF\x91\x02K\x05\x02\x1C\x05\x02:\x06\x02\"\x01\x02\xBA\xD1\x01e\xD1\x01o\xD1\x01\xB9\xD1\x01e\xD1\x01o\xD1\x01\xBA\xD1\x01e\xD1\x01n\xD1\x01\xB9\xD1\x01e\xD1\x01n\xD1\x01X\xD1\x01e\xD1\x01r\xD1\x01X\xD1\x01e\xD1\x01q\xD1\x01X\xD1\x01e\xD1\x01p\xD1\x01X\xD1\x01e\xD1\x01o\xD1\x01X\xD1\x01e\xD1\x01n\xD1\x01W\xD1\x01e\xD1\x01cm\x01gm\x01gm\x01\x1Ea\x01\x1Ea\x01 a\x01\x1Ea\x01)a\x01\x1Fa\x01\x1Ea\x01\x1Ea\x01\x1Fa\x015\x19\x010\x19\x01\xB9\x15\x01\xAF\x15\x01\xB8\x15\x01\xAF\x15\x01\xB9\x14\x01\xBD\x14\x01\xB9\x14\x01\xB0\x14\x01\xB9\x14\x01\xBA\x14\x01\xC2\x13\x01\xC9\x13\x01\xC2\x13\x01\xB8\x13\x01\xC2\x13\x01\xC2\x13\x01\x90\x13\x01\xC9\x13\x01\x8B\x13\x01\xC2\x13\x01\x84\x13\x01\xBB\x13\x01\x82\x13\x01\xC9\x13\x01G\x13\x01W\x13\x01G\x13\x01>\x13\x012\x11\x01'\x11\x011\x11\x01'\x11\x01\xA5\x10\x01\xBA\x10\x01\x9B\x10\x01\xBA\x10\x01\x99\x10\x01\xBA\x10\x01\xDA\x05\x01\x07\x03\0\xD2\x05\x01\x07\x03\0\xD3~\x02\xD0\\\x02IR\x02\xD53\x02D(\x02J(\x02\xEEB\x02") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::normalizer::provider::NormalizerNfdTablesV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::normalizer::provider::NormalizerNfdTablesV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_NORMALIZER_NFD_TABLES_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfdTablesV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_normalizer_nfd_tables_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfdTablesV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_normalizer_nfd_tables_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfdTablesV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfdTablesV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_normalizer_nfd_tables_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfdTablesV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfdTablesV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfdTablesV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_normalizer_nfd_tables_v1 as impl_normalizer_nfd_tables_v1;
diff --git a/vendor/icu_normalizer_data/data/normalizer_nfkd_data_v1.rs.data b/vendor/icu_normalizer_data/data/normalizer_nfkd_data_v1.rs.data
new file mode 100644
index 00000000..4632bb62
--- /dev/null
+++ b/vendor/icu_normalizer_data/data/normalizer_nfkd_data_v1.rs.data
@@ -0,0 +1,75 @@
+// @generated
+/// Implement `DataProvider<NormalizerNfkdDataV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 43132B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_normalizer_nfkd_data_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_NORMALIZER_NFKD_DATA_V1: &'static <icu::normalizer::provider::NormalizerNfkdDataV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::normalizer::provider::DecompositionData { trie: icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 195584u32, shifted12_high_start: 48u16, index3_null_offset: 380u16, data_null_offset: 0u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0`\0\xA0\0\xE0\0 \x01`\x01\x9C\x01\xDC\x01\0\0\x10\x02I\x02\x89\x02\xC9\x02\x08\x03>\x03~\x03\xB8\x03\xF5\x034\x04\0\0\0\0n\x04\xAE\x04\xDE\x04\x13\x05\0\0S\x05\x82\x05\xC1\x05\0\0\xD6\x05\x14\x06B\x06k\x06\xA1\x06\xE1\x06\x1E\x07>\x07}\x07\xBC\x07\xF9\x07\x18\x08U\x08>\x07\x8D\x08\xB9\x08\xF8\x08\x18\x080\t\x18\x08p\t\x87\t\xC6\t\0\0\xFC\t\x1C\nW\nd\n\x9F\n\xD3\n\x10\x0BP\x0B\x8A\x0B\xD2\x07\xEC\x07\xF9\x07\x0F\x08/\x08?\x08W\x08v\x08\xEC\x07\xEC\x07\xEC\x07\x94\x08\0\0\x10\0 \x000\0@\0P\0`\0p\0`\0p\0\x80\0\x90\0\xA0\0\xB0\0\xC0\0\xD0\0\xE0\0\xF0\0\0\x01\x10\x01 \x010\x01@\x01P\x01`\x01p\x01\x80\x01\x90\x01\x9C\x01\xAC\x01\xBC\x01\xCC\x01\xDC\x01\xEC\x01\xFC\x01\x0C\x02\0\0\x10\0 \x000\0\x10\x02 \x020\x02@\x02I\x02Y\x02i\x02y\x02\x89\x02\x99\x02\xA9\x02\xB9\x02\xC9\x02\xD9\x02\xE9\x02\xF9\x02\x08\x03\x18\x03(\x038\x03>\x03N\x03^\x03n\x03~\x03\x8E\x03\x9E\x03\xAE\x03\xB8\x03\xC8\x03\xD8\x03\xE8\x03\xF5\x03\x05\x04\x15\x04%\x044\x04D\x04T\x04d\x04\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0n\x04~\x04\x8E\x04\x9E\x04\xAE\x04\xBE\x04\xCE\x04\xDE\x04\xEE\x04\xFE\x04\x0E\x05\x13\x05#\x053\x05C\x05\0\0\x10\0 \x000\0S\x05c\x05s\x05\x83\x05\x82\x05\x92\x05\xA2\x05\xB2\x05\xC1\x05\xD1\x05\xE1\x05\xF1\x05\0\0\x10\0 \x000\0\xD6\x05\xE6\x05\xF6\x05\x06\x06\x14\x06$\x064\x06D\x06B\x06R\x06b\x06r\x06k\x06{\x06\x8B\x06\x9B\x06\xA1\x06\xB1\x06\xC1\x06\xD1\x06\xE1\x06\xF1\x06\x01\x07\x11\x07\x1E\x07.\x07>\x07N\x07>\x07N\x07^\x07n\x07}\x07\x8D\x07\x9D\x07\xAD\x07\xBC\x07\xCC\x07\xDC\x07\xEC\x07\xF9\x07\t\x08\x19\x08)\x08\x18\x08(\x088\x08H\x08U\x08e\x08u\x08\x85\x08>\x07N\x07^\x07n\x07\x8D\x08\x9D\x08\xAD\x08\xBD\x08\xB9\x08\xC9\x08\xD9\x08\xE9\x08\xF8\x08\x08\t\x18\t(\t\x18\x08(\x088\x08H\x080\t@\tP\t`\t\x18\x08(\x088\x08H\x08p\t\x80\t\x90\t\xA0\t\x87\t\x97\t\xA7\t\xB7\t\xC6\t\xD6\t\xE6\t\xF6\t\0\0\x10\0 \x000\0\xFC\t\x0C\n\x1C\n,\n<\nL\nW\ng\nw\n\x87\nd\nt\n\x84\n\x94\n\x9F\n\xAF\n\xBF\n\xCF\n\xD3\n\xE3\n\xF3\n\x03\x0B\x10\x0B \x0B0\x0B@\x0BP\x0B`\x0Bp\x0B\x80\x0B\x8A\x0B\x9A\x0B\xAA\x0B\xBA\x0B\0\0\0\0\xC4\x0B\xD3\x0B\0\0\0\0\0\0\0\0\xDE\x0B\0\0\0\0\0\0\0\0\0\0\0\0\xEC\x0B\0\0\0\0\0\0\0\0\0\0\0\0\xFB\x0B\x05\x0C\0\0\0\0\r\x0C\x15\x0C\"\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0.\x0C\0\0\x02\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0J\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0T\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x0C\0\0\0\0\0\0\0\0b\x08k\x0C\0\0\0\0\0\0{\x0C\x8A\x0C\0\0\0\0\0\0\x99\x0C\xA8\x0C\0\0\xB4\x0C\xC4\x0C\0\0\xC9\x0C\xF9\x03\0\0\0\0(\x0C\0\0\0\0\0\0\x17\x07\xD9\x0C\0\0\0\0\0\0\x16\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE9\x0C\xF9\x0C\x07\r\0\0\0\0\x11\r!\r1\rA\rQ\r\\\r\0\0e\ru\r\x85\r\x95\r\xA5\r\x89\x02\xAF\r\xBF\r\xCF\r\xDF\r\xEF\r\xFF\r\x0F\x0E\x1F\x0E/\x0E?\x0EO\x0E_\x0Eo\x0E\x7F\x0E\x8F\x0E\x9F\x0E\xAF\x0E\xBF\x0E\xCF\x0E\xDF\x0E\xEF\x0E\xFF\x0E\x0F\x0F\x1F\x0F/\x0F?\x0FO\x0F_\x0Fo\x0F\x7F\x0F\x8F\x0F\x9F\x0F\xAF\x0F\xBF\x0F\xCE\x0F\xDA\x0F\xEA\x0F\xF9\x0F\x03\x10\0\0\x13\x10#\x103\x10@\x10\0\0\0\0P\x10_\x10\xFC\x03o\x10\x7F\x10\x8F\x10\x9F\x10\xAF\x10\xBF\x10\xCF\x10\xDF\x10\xEF\x10\xF9\x10\x05\x11\0\0\x14\x11\0\0\0\0\0\0$\x11\0\x001\x11A\x11P\x11\0\0`\x11p\x11\x80\x11\0\0\x8A\x11\0\0\0\0\0\0\x9A\x11\0\0\0\0\0\0\xA8\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB8\x11\xC8\x11\xD8\x11\xE8\x11\xF8\x11\x08\x12\x18\x12(\x128\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0C\x12\0\0\0\0\0\0\0\0\0\0\0\0P\x12\0\0\0\0\0\0\0\0\0\0W\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\x12\0\0\0\0\0\0\0\0\0\0\0\0z\x02\xFB\x03\0\0\0\0\0\0\0\0\0\0\0\0r\x12\xB3\t\0\0\0\0\0\0\0\0\0\0\0\0\x89\x02\x89\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x12\0\0\0\0\0\0\0\0\0\0\x92\x12\xA2\x12\xB2\x12\xC2\x12\xD2\x12\xE2\x12\xF2\x12\x02\x13\x12\x13\"\x132\x13B\x13R\x13b\x13r\x13\0\0\0\0\x82\x13\0\0\x88\x13\x98\x13\xA3\x13\xB3\x13\xC3\x13\xD3\x13\0\0\xE1\x13\xF1\x13\x01\x14\x11\x14!\x14\0\0/\x14\0\0\0\0\0\0?\x14O\x14_\x14o\x14\x7F\x14\x8F\x14\x9E\x14\0\0\0\0\0\0\0\0\0\0\0\0\xAE\x14\xBE\x14\xCE\x14\xDE\x14\xEE\x14\xFE\x14\x0E\x15\x1E\x15.\x15>\x15N\x15^\x15n\x15~\x15\x8E\x15\x9E\x15\xAE\x15\xBE\x15\xCE\x15\xDE\x15\xEE\x15\xFE\x15\x0E\x16\x1E\x16.\x16>\x16N\x16^\x16n\x16~\x16\x8E\x16\x9E\x16\0\0\0\0\0\0\0\0\0\0\0\0z\x02\xAE\x16\0\0\xBC\x16\0\0\0\0\0\0\0\0\0\0\xFB\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCC\x16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\x16\0\x08\0\0\x1F\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x08\0\0\x89\x02\xFB\x03\0\0\0\0P\x06\0\0\0\0_\x08\0\0\0\0\0\0\0\0\0\0\x1A\x07b\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEA\x16\xBA\x07\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0\xFA\x16\n\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1E\x07\0\0\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17\x1A\x17&\x17\0\0\0\0\0\0\0\0\0\x006\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x176\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x17V\x17f\x17v\x17\x86\x17\x96\x17\xA6\x17\xB6\x17\xC6\x17\xD6\x17\xE6\x17\xF6\x17\x06\x18\x16\x18&\x186\x18F\x18V\x18f\x18v\x18\x86\x18\x96\x18\xA6\x18\xB6\x18\xC6\x18\xD6\x18\xE6\x18\xF6\x18\x06\x19\x16\x19\0\0\0\0&\x193\x19C\x19S\x19c\x19s\x19\x81\x19\x8F\x19\x9D\x19\xAB\x19\xBB\x19\xCB\x19\0\0\xD8\x19\xE8\x19\xF8\x19\x08\x1A\x18\x1A(\x1A8\x1AH\x1AX\x1Ah\x1Ax\x1A\x88\x1A\x98\x1A\xA8\x1A\xB8\x1A\xC8\x1A\xD8\x1A\xE8\x1A\xF8\x1A\x08\x1B\x18\x1B(\x1B8\x1B\0\0H\x1BW\x1Bf\x1Bv\x1B\x86\x1B\x96\x1B\xA6\x1B\xB6\x1B\0\0\0\0\xC6\x1B\0\0\xD6\x1B\xE6\x1B\xF6\x1B\x06\x1C\x16\x1C&\x1C6\x1CF\x1CU\x1Cd\x1Cs\x1C\x82\x1C\x91\x1C\xA0\x1C\xAF\x1C\xBE\x1C\xCE\x1C\xDE\x1C\xEE\x1C\xFE\x1C\x0E\x1D\x1E\x1D.\x1D\x8D\x15>\x1DN\x1D^\x1Dm\x1D}\x1D\x8D\x1D\x9C\x1D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDE\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x002\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF2\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAA\x1D\0\0\xB6\x1D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC5\x1D\xD5\x1D\xE5\x1D\xF5\x1D\0\0\0\0\0\0\0\0\0\x1E\0\0\0\0\x10\x1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \x1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\x1E\0\0\0\0\0\x004\x1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\x1E\0\0\0\0\0\0\0\0N\x06\0\0\0\0\0\0\0\0O\x1E2\x05\0\0\0\0_\x1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0o\x1E\0\0\x7F\x1E\x8C\x1E\x98\x1E\0\0\0\0\0\0\0\0\xFA\x03\0\0\xA3\x1E\xB3\x1E\0\0\0\0\0\0\x1A\x07\0\0\0\0\0\0\0\0\xC3\x1E\0\0\0\0\0\0\xCE\x1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD5\x1E\0\0\0\0\0\0\0\0\xE0\x1E\xEF\x1E\xF0\x08\xFD\x1E\xF8\x03\n\x1F\x19\x1F\0\0!\x1F/\x1Fb\x08\0\0\0\0\0\0\0\0?\x1F\xAD\x07\0\0\0\0\0\0\0\0\0\0O\x1F^\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE8\x08d\x1Ft\x1F\0\0\0\0\0\0\xB3\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0~\x1F\0\0\0\0\0\0\0\0\0\0\0\0\xFB\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x98\x1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8E\x1F\x1A\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\x08\0\0\0\0\0\0\x02\x08\xFF\x07\0\0\0\0\0\0\0\0\xFD\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB3\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD8\x0B\0\0\0\0\0\0\0\0\xFF\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDB\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9D\x1F\xAC\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBC\x1F\0\0\0\0\0\0\xB5\x16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC5\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD5\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD7\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\x1F\x18\x12\xF6\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \x10 \x1E + \0\x007 E U \0\0\0\0\0\0\0\0c \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0E\x12\x1E\x12.\x12s \x1A\x12\x83 \x93 \x16\x12&\x12\xA3 \xB3 \xC3 \xD3 \x0E\x12\x1E\x12.\x12\xDF \xEF *\x12\xDB \xFF \x0F!\x8F \x12\x12\"\x122\x12\x0E\x12\x1E\x12.\x12s \x1A\x12*\x12\x93 \x16\x12&\x12\x8F \x12\x12\"\x122\x12\x0E\x12\x1E\x12.\x12\x1F!/!?!O!_!5!E!U!+!;!K![!1!A!Q!'!7!G!o!\x7F!\x85!\x81!\x95!\x9D!\xAB!\xBB!\xCB!\xDB!\xEB!\0\0z\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB5\x16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAD\x07\0\0\0\0\0\0}\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF9!\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA4\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\"\0\0\0\0\0\0\0\0\0\0\0\0\x15\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0%\"5\"E\"U\"c\"s\"\x83\"\x93\"\xA3\"\xB3\"\xC2\"\xB3\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD2\"\xE2\"\xF2\"\x0E\x12\x02#\0\0\x12#\0\0\0\0\"#\0\0\0\0\0\0\0\0\0\0\0\x002#B#R#b#r#\x82#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF6\x1F\x92#\xA2#\xB2#\xC2#\xD2#\xE2#\xF2#\x02$\x12$\"$2$B$R$b$r$\x82$\x92$\xA2$\xB2$\xC2$\xD2$\xE2$\xF2$\x02%\x12%\"%2%B%R%b%r%\x82%\x92%\xA2%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0L\0l\0\x8C\0\xAB\0\xCB\0\xEB\0\x0B\x01)\x01I\x01f\x01|\x01\x8B\x01\xA9\x01\xC8\x01\xE8\x01\x08\x02(\x02H\x02b\x02|\x01|\x01\x82\x02\x9B\x02\xBB\x02\xDB\x02\xFB\x02|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01\x1B\x03;\x03X\x03x\x03x\x03x\x03x\x03x\x03x\x03x\x03x\x03x\x03x\x03x\x03~\x03\x9E\x03\x9E\x03\x9E\x03\x9E\x03|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01\xBE\x03\xDE\x03\xFE\x03\x1E\x04>\x04^\x04v\x04\x95\x04|\x01\xB5\x04\xC4\x04\xDB\x04\xF7\x04\x14\x052\x05O\x05l\x05\x8B\x05\xA8\x05\xC2\x05|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01\xD7\x05|\x01|\x01|\x01|\x01\xEA\x05\xFE\x05\x15\x06|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x015\x06|\x01|\x01|\x01|\x01|\x01|\x01H\x06|\x01X\x06u\x06\x95\x06\xB5\x06|\x01|\x01|\x01|\x01\xD5\x06\xEB\x06\xFD\x06|\x01\x1C\x07|\x01|\x01<\x07L\x07l\x07|\x01|\x01|\x01r\x07|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01\x92\x07\xB2\x07") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\x84A\0\0\0\0a\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\x82A\0\0\0\0\0\0\0\x002\0\0@3\0\0@ \x80\x80A\xBC\x03\0@\0\0\0\0\0\0\0\0 \x80\x93A1\0\0@o\0\0@\0\0\0\0\x01\0:L\x01\x007L\x01\x004L\0\0\0\0A\0\x80\x01A\x80\x80\x01A\0\x81\x01A\x80\x81\x01A\0\x84\x01A\0\x85\x01\0\0\0\0C\x80\x93\x01E\0\x80\x01E\x80\x80\x01E\0\x81\x01E\0\x84\x01I\0\x80\x01I\x80\x80\x01I\0\x81\x01I\0\x84\x01\0\0\0\0N\x80\x81\x01O\0\x80\x01O\x80\x80\x01O\0\x81\x01O\x80\x81\x01O\0\x84\x01\0\0\0\0\0\0\0\0U\0\x80\x01U\x80\x80\x01U\0\x81\x01U\0\x84\x01Y\x80\x80\x01\0\0\0\0\0\0\0\0a\0\x80\x01a\x80\x80\x01a\0\x81\x01a\x80\x81\x01a\0\x84\x01a\0\x85\x01\0\0\0\0c\x80\x93\x01e\0\x80\x01e\x80\x80\x01e\0\x81\x01e\0\x84\x01i\0\x80\x01i\x80\x80\x01i\0\x81\x01i\0\x84\x01\0\0\0\0n\x80\x81\x01o\0\x80\x01o\x80\x80\x01o\0\x81\x01o\x80\x81\x01o\0\x84\x01\0\0\0\0\0\0\0\0u\0\x80\x01u\x80\x80\x01u\0\x81\x01u\0\x84\x01y\x80\x80\x01\0\0\0\0y\0\x84\x01A\0\x82\x01a\0\x82\x01A\0\x83\x01a\0\x83\x01A\0\x94\x01a\0\x94\x01C\x80\x80\x01c\x80\x80\x01C\0\x81\x01c\0\x81\x01C\x80\x83\x01c\x80\x83\x01C\0\x86\x01c\0\x86\x01D\0\x86\x01d\0\x86\x01\0\0\0\0\0\0\0\0E\0\x82\x01e\0\x82\x01E\0\x83\x01e\0\x83\x01E\x80\x83\x01e\x80\x83\x01E\0\x94\x01e\0\x94\x01E\0\x86\x01e\0\x86\x01G\0\x81\x01g\0\x81\x01G\0\x83\x01g\0\x83\x01G\x80\x83\x01g\x80\x83\x01G\x80\x93\x01g\x80\x93\x01H\0\x81\x01h\0\x81\x01\0\0\0\0\0\0\0\0I\x80\x81\x01i\x80\x81\x01I\0\x82\x01i\0\x82\x01I\0\x83\x01i\0\x83\x01I\0\x94\x01i\0\x94\x01I\x80\x83\x01\0\0\0\0\0\x002L\0\x000LJ\0\x81\x01j\0\x81\x01K\x80\x93\x01k\x80\x93\x01\0\0\0\0L\x80\x80\x01l\x80\x80\x01L\x80\x93\x01l\x80\x93\x01L\0\x86\x01l\0\x86\x01\0\0.L\0\0,L\0\0\0\0\0\0\0\0N\x80\x80\x01n\x80\x80\x01N\x80\x93\x01n\x80\x93\x01N\0\x86\x01n\0\x86\x01\0\0*L\0\0\0\0\0\0\0\0O\0\x82\x01o\0\x82\x01O\0\x83\x01o\0\x83\x01O\x80\x85\x01o\x80\x85\x01\0\0\0\0\0\0\0\0R\x80\x80\x01r\x80\x80\x01R\x80\x93\x01r\x80\x93\x01R\0\x86\x01r\0\x86\x01S\x80\x80\x01s\x80\x80\x01S\0\x81\x01s\0\x81\x01S\x80\x93\x01s\x80\x93\x01S\0\x86\x01s\0\x86\x01T\x80\x93\x01t\x80\x93\x01T\0\x86\x01t\0\x86\x01\0\0\0\0\0\0\0\0U\x80\x81\x01u\x80\x81\x01U\0\x82\x01u\0\x82\x01U\0\x83\x01u\0\x83\x01U\0\x85\x01u\0\x85\x01U\x80\x85\x01u\x80\x85\x01U\0\x94\x01u\0\x94\x01W\0\x81\x01w\0\x81\x01Y\0\x81\x01y\0\x81\x01Y\0\x84\x01Z\x80\x80\x01z\x80\x80\x01Z\x80\x83\x01z\x80\x83\x01Z\0\x86\x01z\0\x86\x01s\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0O\x80\x8D\x01o\x80\x8D\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U\x80\x8D\x01u\x80\x8D\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0'L\x01\0$L\x01\0!L\0\0\x1FL\0\0\x1DL\0\0\x1BL\0\0\x19L\0\0\x17L\0\0\x15LA\0\x86\x01a\0\x86\x01I\0\x86\x01i\0\x86\x01O\0\x86\x01o\0\x86\x01U\0\x86\x01u\0\x86\x01\x11\0\x02\x03\x11\0\xFF\x02\x11\0\xFC\x02\x11\0\xF9\x02\x11\0\xF6\x02\x11\0\xF3\x02\x11\0\xF0\x02\x11\0\xED\x02\0\0\0\0\x11\0\xEA\x02\x11\0\xE7\x02\x11\0\xE4\x02\x11\0\xE1\x02\xC6\0\x82\x01\xE6\0\x82\x01\0\0\0\0\0\0\0\0G\0\x86\x01g\0\x86\x01K\0\x86\x01k\0\x86\x01O\0\x94\x01o\0\x94\x01\x11\0\xDE\x02\x11\0\xDB\x02\xB7\x01\x86\x01\x92\x02\x86\x01j\0\x86\x01\0\0\x13L\0\0\x11L\0\0\x0FLG\x80\x80\x01g\x80\x80\x01\0\0\0\0\0\0\0\0N\0\x80\x01n\0\x80\x01\x11\0\xD8\x02\x11\0\xD5\x02\xC6\x80\x80\x01\xE6\x80\x80\x01\xD8\x80\x80\x01\xF8\x80\x80\x01A\x80\x87\x01a\x80\x87\x01A\x80\x88\x01a\x80\x88\x01E\x80\x87\x01e\x80\x87\x01E\x80\x88\x01e\x80\x88\x01I\x80\x87\x01i\x80\x87\x01I\x80\x88\x01i\x80\x88\x01O\x80\x87\x01o\x80\x87\x01O\x80\x88\x01o\x80\x88\x01R\x80\x87\x01r\x80\x87\x01R\x80\x88\x01r\x80\x88\x01U\x80\x87\x01u\x80\x87\x01U\x80\x88\x01u\x80\x88\x01S\0\x93\x01s\0\x93\x01T\0\x93\x01t\0\x93\x01\0\0\0\0\0\0\0\0H\0\x86\x01h\0\x86\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\x80\x83\x01a\x80\x83\x01E\x80\x93\x01e\x80\x93\x01\x11\0\xD2\x02\x11\0\xCF\x02\x11\0\xCC\x02\x11\0\xC9\x02O\x80\x83\x01o\x80\x83\x01\x11\0\xC6\x02\x11\0\xC3\x02Y\0\x82\x01y\0\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\0\0@f\x02\0@j\0\0@r\0\0@y\x02\0@{\x02\0@\x81\x02\0@w\0\0@y\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\x83A \x80\x83A \0\x85A \0\x94A \x80\x81A \x80\x85A\0\0\0\0\0\0\0\0c\x02\0@l\0\0@s\0\0@x\0\0@\x95\x02\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE8\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE8\xD8\0\x80\xD8\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xCA\xD8\0\x80\xCA\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xCA\xD8\0\x80\xCA\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD9\0\xC0\xE6\xD9\0\xC0\xE6\xD8\0\x80\xE6\xD9\0\xC0\xE6\xD9\0\xC0\xF0\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE8\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE9\xD8\0\x80\xEA\xD8\0\x80\xEA\xD8\0\x80\xE9\xD8\0\x80\xEA\xD8\0\x80\xEA\xD8\0\x80\xE9\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB9\x02\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \x80\xA2A\0\0\0\0\0\0\0\0\0\0\0\0;\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \x80\x80A\x11\0\xDCK\x91\x83\x80\x01\xB7\0\0@\x95\x83\x80\x01\x97\x83\x80\x01\x99\x83\x80\x01\0\0\0\0\x9F\x83\x80\x01\0\0\0\0\xA5\x83\x80\x01\xA9\x83\x80\x01\x11\0\x1E\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\x03\x84\x01\xA5\x03\x84\x01\xB1\x83\x80\x01\xB5\x83\x80\x01\xB7\x83\x80\x01\xB9\x83\x80\x01\x11\0\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB9\x03\x84\x01\xC5\x03\x84\x01\xBF\x83\x80\x01\xC5\x83\x80\x01\xC9\x83\x80\x01\0\0\0\0\xB2\x03\0@\xB8\x03\0@\xA5\x03\0@\xA5\x83\x80A\xA5\x03\x84A\xC6\x03\0@\xC0\x03\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBA\x03\0@\xC1\x03\0@\xC2\x03\0@\0\0\0\0\x98\x03\0@\xB5\x03\0@\0\0\0\0\0\0\0\0\0\0\0\0\xA3\x03\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x15\x04\x80\x01\x15\x04\x84\x01\0\0\0\0\x13\x84\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0\x06\x04\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1A\x84\x80\x01\x18\x04\x80\x01#\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x18\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x005\x04\x80\x015\x04\x84\x01\0\0\0\x003\x84\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0V\x04\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\x84\x80\x018\x04\x80\x01C\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\x84\x87\x01u\x84\x87\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x04\x83\x016\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x04\x83\x010\x04\x83\x01\x10\x04\x84\x010\x04\x84\x01\0\0\0\0\0\0\0\0\x15\x04\x83\x015\x04\x83\x01\0\0\0\0\0\0\0\0\xD8\x04\x84\x01\xD9\x04\x84\x01\x16\x04\x84\x016\x04\x84\x01\x17\x04\x84\x017\x04\x84\x01\0\0\0\0\0\0\0\0\x18\x04\x82\x018\x04\x82\x01\x18\x04\x84\x018\x04\x84\x01\x1E\x04\x84\x01>\x04\x84\x01\0\0\0\0\0\0\0\0\xE8\x04\x84\x01\xE9\x04\x84\x01-\x04\x84\x01M\x04\x84\x01#\x04\x82\x01C\x04\x82\x01#\x04\x84\x01C\x04\x84\x01#\x84\x85\x01C\x84\x85\x01'\x04\x84\x01G\x04\x84\x01\0\0\0\0\0\0\0\0+\x04\x84\x01K\x04\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\rL\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDE\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDE\xD8\0\x80\xE4\xD8\0\x80\xE6\xD8\0\x80\n\xD8\0\x80\x0B\xD8\0\x80\x0C\xD8\0\x80\r\xD8\0\x80\x0E\xD8\0\x80\x0F\xD8\0\x80\x10\xD8\0\x80\x11\xD8\0\x80\x12\xD8\0\x80\x13\xD8\0\x80\x13\xD8\0\x80\x14\xD8\0\x80\x15\xD8\0\x80\x16\xD8\0\x80\0\0\0\0\x17\xD8\0\x80\0\0\0\0\x18\xD8\0\x80\x19\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\x12\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\x1E\xD8\0\x80\x1F\xD8\0\x80 \xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'\x86)\x03'\x06*\x03H\x06*\x03'\x86*\x03J\x06*\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1B\xD8\0\x80\x1C\xD8\0\x80\x1D\xD8\0\x80\x1E\xD8\0\x80\x1F\xD8\0\x80 \xD8\0\x80!\xD8\0\x80\"\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0BL\0\0\tL\0\0\x9EF\0\0\x07L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD5\x06*\x03\0\0\0\0\xC1\x06*\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD2\x06*\x03\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\x1B\xD8\0\x80\x1C\xD8\0\x80\x1D\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\t\x9E\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\t\x9E\x04\0\0\0\0\0\0\0\x003\t\x9E\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x15\t\x9ED\x16\t\x9ED\x17\t\x9ED\x1C\t\x9ED!\t\x9ED\"\t\x9ED+\t\x9ED/\t\x9ED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC1\x02\0\0\xBF\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA1\t\xDED\xA2\t\xDED\0\0\0\0\xAF\t\xDED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x002\n\x1EE\0\0\0\0\0\0\0\08\n\x1EE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\n\x1EE\x17\n\x1EE\x1C\n\x1EE\0\0\0\0\0\0\0\0+\n\x1EE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBD\x02\0\0\0\0\0\0\0\0\0\0\xBB\x02\0\0\xB9\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\x0B\x9EE\"\x0B\x9EE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB7\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB5\x02\0\0\xB3\x02\0\0\xB1\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\x0C+\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0T\xD8\0\x80[\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAF\x02\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAD\x02\0\0\xAB\x02\0\0\0\0\0\0\xA8\x02\x01\0\xA8\x02\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA6\x02\0\0\xA4\x02\0\0\xA2\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD9\r\xE5\x06\0\0\0\0\0\0\x9F\x02\x01\0\x9F\x02\0\0\x9D\x02\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\xD8\0\x80g\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0k\xD8\0\x80k\xD8\0\x80k\xD8\0\x80k\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v\xD8\0\x80v\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0z\xD8\0\x80z\xD8\0\x80z\xD8\0\x80z\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01L\0\0\xFFK\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0B\x0F\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\xD8\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9BB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x95B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\xD8\0\x80\x82\xD8\0\x80\0\xD9\0\xC0\x84\xD8\0\x80\0\xD9\0\xC0\xB2\x0F\xC0G\x11\0\xFCK\xB3\x0F\xC0G\x11\0\xF9K\x82\xD8\0\x80\x82\xD8\0\x80\x82\xD8\0\x80\x82\xD8\0\x80\0\0\0\0\0\0\0\0\x82\xD8\0\x80\0\xD9\0\xC0\xE6\xD8\0\x80\xE6\xD8\0\x80\t\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8FB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8DB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8BB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x89B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\x10\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE4\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDE\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x02\0\0\0\0\0\0\x7F\x02\0\0\0\0\0\0}\x02\0\0\0\0\0\0{\x02\0\0\0\0\0\0y\x02\0\0\0\0\0\0\0\0\0\0w\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\x02\0\0\0\0\0\0s\x02\0\0\0\0\0\0\0\0\0\0q\x02\0\0o\x02\0\0\0\0\0\0m\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\x01\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\0\0@\xC6\0\0@B\0\0@\0\0\0\0D\0\0@E\0\0@\x8E\x01\0@G\0\0@H\0\0@I\0\0@J\0\0@K\0\0@L\0\0@M\0\0@N\0\0@\0\0\0\0O\0\0@\"\x02\0@P\0\0@R\0\0@T\0\0@U\0\0@W\0\0@a\0\0@P\x02\0@Q\x02\0@\x02\x1D\0@b\0\0@d\0\0@e\0\0@Y\x02\0@[\x02\0@\\\x02\0@g\0\0@\0\0\0\0k\0\0@m\0\0@K\x01\0@o\0\0@T\x02\0@\x16\x1D\0@\x17\x1D\0@p\0\0@t\0\0@u\0\0@\x1D\x1D\0@o\x02\0@v\0\0@%\x1D\0@\xB2\x03\0@\xB3\x03\0@\xB4\x03\0@\xC6\x03\0@\xC7\x03\0@i\0\0@r\0\0@u\0\0@v\0\0@\xB2\x03\0@\xB3\x03\0@\xC1\x03\0@\xC6\x03\0@\xC7\x03\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\x04\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x02\0@c\0\0@U\x02\0@\xF0\0\0@\\\x02\0@f\0\0@_\x02\0@a\x02\0@e\x02\0@h\x02\0@i\x02\0@j\x02\0@{\x1D\0@\x9D\x02\0@m\x02\0@\x85\x1D\0@\x9F\x02\0@q\x02\0@p\x02\0@r\x02\0@s\x02\0@t\x02\0@u\x02\0@x\x02\0@\x82\x02\0@\x83\x02\0@\xAB\x01\0@\x89\x02\0@\x8A\x02\0@\x1C\x1D\0@\x8B\x02\0@\x8C\x02\0@z\0\0@\x90\x02\0@\x91\x02\0@\x92\x02\0@\xB8\x03\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xEA\xD8\0\x80\xD6\xD8\0\x80\xDC\xD8\0\x80\xCA\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE8\xD8\0\x80\xE4\xD8\0\x80\xE4\xD8\0\x80\xDC\xD8\0\x80\xDA\xD8\0\x80\xE6\xD8\0\x80\xE9\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80A\x80\x92\x01a\x80\x92\x01B\x80\x83\x01b\x80\x83\x01B\x80\x91\x01b\x80\x91\x01B\x80\x98\x01b\x80\x98\x01\x11\0j\x02\x11\0g\x02D\x80\x83\x01d\x80\x83\x01D\x80\x91\x01d\x80\x91\x01D\x80\x98\x01d\x80\x98\x01D\x80\x93\x01d\x80\x93\x01D\x80\x96\x01d\x80\x96\x01\x11\0d\x02\x11\0a\x02\x11\0^\x02\x11\0[\x02E\x80\x96\x01e\x80\x96\x01E\0\x98\x01e\0\x98\x01\x11\0X\x02\x11\0U\x02F\x80\x83\x01f\x80\x83\x01G\0\x82\x01g\0\x82\x01H\x80\x83\x01h\x80\x83\x01H\x80\x91\x01h\x80\x91\x01H\0\x84\x01h\0\x84\x01H\x80\x93\x01h\x80\x93\x01H\0\x97\x01h\0\x97\x01I\0\x98\x01i\0\x98\x01\x11\0R\x02\x11\0O\x02K\x80\x80\x01k\x80\x80\x01K\x80\x91\x01k\x80\x91\x01K\x80\x98\x01k\x80\x98\x01L\x80\x91\x01l\x80\x91\x01\x11\0L\x02\x11\0I\x02L\x80\x98\x01l\x80\x98\x01L\x80\x96\x01l\x80\x96\x01M\x80\x80\x01m\x80\x80\x01M\x80\x83\x01m\x80\x83\x01M\x80\x91\x01m\x80\x91\x01N\x80\x83\x01n\x80\x83\x01N\x80\x91\x01n\x80\x91\x01N\x80\x98\x01n\x80\x98\x01N\x80\x96\x01n\x80\x96\x01\x11\0F\x02\x11\0C\x02\x11\0@\x02\x11\0=\x02\x11\0:\x02\x11\x007\x02\x11\x004\x02\x11\x001\x02P\x80\x80\x01p\x80\x80\x01P\x80\x83\x01p\x80\x83\x01R\x80\x83\x01r\x80\x83\x01R\x80\x91\x01r\x80\x91\x01\x11\0.\x02\x11\0+\x02R\x80\x98\x01r\x80\x98\x01S\x80\x83\x01s\x80\x83\x01S\x80\x91\x01s\x80\x91\x01\x11\0(\x02\x11\0%\x02\x11\0\"\x02\x11\0\x1F\x02\x11\0\x1C\x02\x11\0\x19\x02T\x80\x83\x01t\x80\x83\x01T\x80\x91\x01t\x80\x91\x01T\x80\x98\x01t\x80\x98\x01T\x80\x96\x01t\x80\x96\x01U\0\x92\x01u\0\x92\x01U\0\x98\x01u\0\x98\x01U\x80\x96\x01u\x80\x96\x01\x11\0\x16\x02\x11\0\x13\x02\x11\0\x10\x02\x11\0\r\x02V\x80\x81\x01v\x80\x81\x01V\x80\x91\x01v\x80\x91\x01W\0\x80\x01w\0\x80\x01W\x80\x80\x01w\x80\x80\x01W\0\x84\x01w\0\x84\x01W\x80\x83\x01w\x80\x83\x01W\x80\x91\x01w\x80\x91\x01X\x80\x83\x01x\x80\x83\x01X\0\x84\x01x\0\x84\x01Y\x80\x83\x01y\x80\x83\x01Z\0\x81\x01z\0\x81\x01Z\x80\x91\x01z\x80\x91\x01Z\x80\x98\x01z\x80\x98\x01h\x80\x98\x01t\0\x84\x01w\0\x85\x01y\0\x85\x01\0\0\xF7Ks\x80\x83A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\x80\x91\x01a\x80\x91\x01A\x80\x84\x01a\x80\x84\x01\x11\0\n\x02\x11\0\x07\x02\x11\0\x04\x02\x11\0\x01\x02\x11\0\xFE\x01\x11\0\xFB\x01\x11\0\xF8\x01\x11\0\xF5\x01\x11\0\xF2\x01\x11\0\xEF\x01\x11\0\xEC\x01\x11\0\xE9\x01\x11\0\xE6\x01\x11\0\xE3\x01\x11\0\xE0\x01\x11\0\xDD\x01\x11\0\xDA\x01\x11\0\xD7\x01\x11\0\xD4\x01\x11\0\xD1\x01E\x80\x91\x01e\x80\x91\x01E\x80\x84\x01e\x80\x84\x01E\x80\x81\x01e\x80\x81\x01\x11\0\xCE\x01\x11\0\xCB\x01\x11\0\xC8\x01\x11\0\xC5\x01\x11\0\xC2\x01\x11\0\xBF\x01\x11\0\xBC\x01\x11\0\xB9\x01\x11\0\xB6\x01\x11\0\xB3\x01I\x80\x84\x01i\x80\x84\x01I\x80\x91\x01i\x80\x91\x01O\x80\x91\x01o\x80\x91\x01O\x80\x84\x01o\x80\x84\x01\x11\0\xB0\x01\x11\0\xAD\x01\x11\0\xAA\x01\x11\0\xA7\x01\x11\0\xA4\x01\x11\0\xA1\x01\x11\0\x9E\x01\x11\0\x9B\x01\x11\0\x98\x01\x11\0\x95\x01\x11\0\x92\x01\x11\0\x8F\x01\x11\0\x8C\x01\x11\0\x89\x01\x11\0\x86\x01\x11\0\x83\x01\x11\0\x80\x01\x11\0}\x01\x11\0z\x01\x11\0w\x01U\x80\x91\x01u\x80\x91\x01U\x80\x84\x01u\x80\x84\x01\x11\0t\x01\x11\0q\x01\x11\0n\x01\x11\0k\x01\x11\0h\x01\x11\0e\x01\x11\0b\x01\x11\0_\x01\x11\0\\\x01\x11\0Y\x01Y\0\x80\x01y\0\x80\x01Y\x80\x91\x01y\x80\x91\x01Y\x80\x84\x01y\x80\x84\x01Y\x80\x81\x01y\x80\x81\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB1\x83\x89\x01\xB1\x03\x8A\x01\x11\0\xE0\0\x11\0\xDC\0\x11\0\xD8\0\x11\0\xD4\0\x11\0\xD0\0\x11\0\xCC\0\x91\x83\x89\x01\x91\x03\x8A\x01\x11\0\xC2\0\x11\0\xBE\0\x11\0\xBA\0\x11\0\xB6\0\x11\0\xB2\0\x11\0\xAE\0\xB5\x83\x89\x01\xB5\x03\x8A\x01\x11\0V\x01\x11\0S\x01\x11\0P\x01\x11\0M\x01\0\0\0\0\0\0\0\0\x95\x83\x89\x01\x95\x03\x8A\x01\x11\0J\x01\x11\0G\x01\x11\0D\x01\x11\0A\x01\0\0\0\0\0\0\0\0\xB7\x83\x89\x01\xB7\x03\x8A\x01\x11\0\xA4\0\x11\0\xA0\0\x11\0\x9C\0\x11\0\x98\0\x11\0\x94\0\x11\0\x90\0\x97\x83\x89\x01\x97\x03\x8A\x01\x11\0\x86\0\x11\0\x82\0\x11\0~\0\x11\0z\0\x11\0v\0\x11\0r\0\xB9\x83\x89\x01\xB9\x03\x8A\x01\x11\0>\x01\x11\0;\x01\x11\08\x01\x11\x005\x01\x11\x002\x01\x11\0/\x01\x99\x83\x89\x01\x99\x03\x8A\x01\x11\0,\x01\x11\0)\x01\x11\0&\x01\x11\0#\x01\x11\0 \x01\x11\0\x1D\x01\xBF\x83\x89\x01\xBF\x03\x8A\x01\x11\0\x1A\x01\x11\0\x17\x01\x11\0\x14\x01\x11\0\x11\x01\0\0\0\0\0\0\0\0\x9F\x83\x89\x01\x9F\x03\x8A\x01\x11\0\x0E\x01\x11\0\x0B\x01\x11\0\x08\x01\x11\0\x05\x01\0\0\0\0\0\0\0\0\xC5\x83\x89\x01\xC5\x03\x8A\x01\x11\0\x02\x01\x11\0\xFF\0\x11\0\xFC\0\x11\0\xF9\0\x11\0\xF6\0\x11\0\xF3\0\0\0\0\0\xA5\x03\x8A\x01\0\0\0\0\x11\0\xF0\0\0\0\0\0\x11\0\xED\0\0\0\0\0\x11\0\xEA\0\xC9\x83\x89\x01\xC9\x03\x8A\x01\x11\0h\0\x11\0d\0\x11\0`\0\x11\0\\\0\x11\0X\0\x11\0T\0\xA9\x83\x89\x01\xA9\x03\x8A\x01\x11\0J\0\x11\0F\0\x11\0B\0\x11\0>\0\x11\0:\0\x11\x006\0\xB1\x03\x80\x01\xB1\x83\x80A\xB5\x03\x80\x01\xB5\x83\x80A\xB7\x03\x80\x01\xB7\x83\x80A\xB9\x03\x80\x01\xB9\x83\x80A\xBF\x03\x80\x01\xBF\x83\x80A\xC5\x03\x80\x01\xC5\x83\x80A\xC9\x03\x80\x01\xC9\x83\x80A\0\0\0\0\0\0\0\0\x11\0\xE7\0\x11\0\xE4\0\x12\0\xE0\0\x12\0\xDC\0\x12\0\xD8\0\x12\0\xD4\0\x12\0\xD0\0\x12\0\xCC\0\x11\0\xC9\0\x11\0\xC6\0\x12\0\xC2\0\x12\0\xBE\0\x12\0\xBA\0\x12\0\xB6\0\x12\0\xB2\0\x12\0\xAE\0\x11\0\xAB\0\x11\0\xA8\0\x12\0\xA4\0\x12\0\xA0\0\x12\0\x9C\0\x12\0\x98\0\x12\0\x94\0\x12\0\x90\0\x11\0\x8D\0\x11\0\x8A\0\x12\0\x86\0\x12\0\x82\0\x12\0~\0\x12\0z\0\x12\0v\0\x12\0r\0\x11\0o\0\x11\0l\0\x12\0h\0\x12\0d\0\x12\0`\0\x12\0\\\0\x12\0X\0\x12\0T\0\x11\0Q\0\x11\0N\0\x12\0J\0\x12\0F\0\x12\0B\0\x12\0>\0\x12\0:\0\x12\x006\0\xB1\x03\x83\x01\xB1\x03\x82\x01\x11\x003\0\xB1\x83\xA2\x01\x11\x000\0\0\0\0\0\xB1\x03\xA1\x01\x11\0-\0\x91\x03\x83\x01\x91\x03\x82\x01\x91\x03\x80\x01\x91\x83\x80A\x91\x83\xA2\x01 \x80\x89A\xB9\x03\0@ \x80\x89A \0\xA1A\x11\0\xF4K\x11\0*\0\xB7\x83\xA2\x01\x11\0'\0\0\0\0\0\xB7\x03\xA1\x01\x11\0$\0\x95\x03\x80\x01\x95\x83\x80A\x97\x03\x80\x01\x97\x83\x80A\x97\x83\xA2\x01\x11\0\xF1K\x11\0\xEEK\x11\0\xEBK\xB9\x03\x83\x01\xB9\x03\x82\x01\x11\0!\0\x11\0\x1E@\0\0\0\0\0\0\0\0\xB9\x03\xA1\x01\x11\0\x1B\0\x99\x03\x83\x01\x99\x03\x82\x01\x99\x03\x80\x01\x99\x83\x80A\0\0\0\0\x11\0\xE8K\x11\0\xE5K\x11\0\xE2K\xC5\x03\x83\x01\xC5\x03\x82\x01\x11\0\x18\0\x11\0\x15@\xC1\x83\x89\x01\xC1\x03\x8A\x01\xC5\x03\xA1\x01\x11\0\x12\0\xA5\x03\x83\x01\xA5\x03\x82\x01\xA5\x03\x80\x01\xA5\x83\x80A\xA1\x03\x8A\x01\x11\0\xDFK\x11\0\xDCK`\0\0@\0\0\0\0\0\0\0\0\x11\0\x0F\0\xC9\x83\xA2\x01\x11\0\x0C\0\0\0\0\0\xC9\x03\xA1\x01\x11\0\t\0\x9F\x03\x80\x01\x9F\x83\x80A\xA9\x03\x80\x01\xA9\x83\x80A\xA9\x83\xA2\x01 \x80\x80A \0\x8AA\0\0\0\0 \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10 \0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \x80\x99A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0.\0\0@\0\0rD\x01\0rD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCFK\x01\0\xCFK\0\0\0\0\0\0\xD9K\x01\0\xD9K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD7K\0\0\0\0 \x80\x82A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD4K\0\0\xD5K\0\0\xD3K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\xCFK\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0@0\0\0@i\0\0@\0\0\0\0\0\0\0\x004\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@+\0\0@\x12\"\0@=\0\0@(\0\0@)\0\0@n\0\0@0\0\0@1\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@+\0\0@\x12\"\0@=\0\0@(\0\0@)\0\0@\0\0\0\0a\0\0@e\0\0@o\0\0@x\0\0@Y\x02\0@h\0\0@k\0\0@l\0\0@m\0\0@n\0\0@p\0\0@s\0\0@t\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCDK\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x01\xD8\0\x80\x01\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\x01\0\xCAK\x01\0\xC7KC\0\0@\0\0\xC5K\0\0\0\0\x01\0\xC2K\x01\0\xBFK\x90\x01\0@\0\0\0\0\0\0\xBDKg\0\0@H\0\0@H\0\0@H\0\0@h\0\0@'\x01\0@I\0\0@I\0\0@L\0\0@l\0\0@\0\0\0\0N\0\0@\0\0\xBBK\0\0\0\0\0\0\0\0P\0\0@Q\0\0@R\0\0@R\0\0@R\0\0@\0\0\0\0\0\0\0\0\0\0\xB9K\x01\0\xB6K\0\0\xB4K\0\0\0\0Z\0\0@\0\0\0\0\xA9\x03\0@\0\0\0\0Z\0\0@\0\0\0\0K\0\0@\x10\0\x07@B\0\0@C\0\0@\0\0\0\0e\0\0@E\0\0@F\0\0@\0\0\0\0M\0\0@o\0\0@\xD0\x05\0@\xD1\x05\0@\xD2\x05\0@\xD3\x05\0@i\0\0@\0\0\0\0\x01\0\xB1K\xC0\x03\0@\xB3\x03\0@\x93\x03\0@\xA0\x03\0@\x11\"\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0D\0\0@d\0\0@e\0\0@i\0\0@j\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x84K\x01\0\xAEK\x02\0\xAAK\x01\0\xA7K\x01\0\xA4K\x01\0\xA1K\x01\0\x9EK\x01\0\x9BK\x01\0\x98K\x01\0\x95K\x01\0\x92K\x01\0\x8FK\x01\0\x8CK\x01\0\x89K\x01\0\x86K\0\0\x84KI\0\0@\0\0zK\x01\0zK\0\0\x82KV\0\0@\0\0~K\x01\0~K\x02\0~K\0\0|KX\0\0@\0\0yK\x01\0yKL\0\0@C\0\0@D\0\0@M\0\0@i\0\0@\0\0oK\x01\0oK\0\0wKv\0\0@\0\0sK\x01\0sK\x02\0sK\0\0qKx\0\0@\0\0nK\x01\0nKl\0\0@c\0\0@d\0\0@m\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0kK\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90!\x9C\x01\x92!\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94!\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD0!\x9C\x01\xD4!\x9C\x01\xD2!\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\"\x9C\x01\0\0\0\0\0\0\0\0\x0B\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\"\x9C\x01\0\0\0\0%\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAEJ\x01\0\xAEJ\0\0\0\0\0\0hK\x01\0hK\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\"\x9C\x01\0\0\0\0\0\0\0\0C\"\x9C\x01\0\0\0\0\0\0\0\0E\"\x9C\x01\0\0\0\0H\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0\x9C\x01\0\0\0\0a\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0M\"\x9C\x01<\0\x9C\x01>\0\x9C\x01d\"\x9C\x01e\"\x9C\x01\0\0\0\0\0\0\0\0r\"\x9C\x01s\"\x9C\x01\0\0\0\0\0\0\0\0v\"\x9C\x01w\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0z\"\x9C\x01{\"\x9C\x01\0\0\0\0\0\0\0\0\x82\"\x9C\x01\x83\"\x9C\x01\0\0\0\0\0\0\0\0\x86\"\x9C\x01\x87\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA2\"\x9C\x01\xA8\"\x9C\x01\xA9\"\x9C\x01\xAB\"\x9C\x01|\"\x9C\x01}\"\x9C\x01\x91\"\x9C\x01\x92\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB2\"\x9C\x01\xB3\"\x9C\x01\xB4\"\x9C\x01\xB5\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x080\0@\t0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x001\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@\0\0\xF6F\0\0\xF3F\0\0\xF0F\0\0\xEDF\0\0\xEAF\0\0\xE7F\0\0\xE4F\0\0\xE1F\0\0\xDEF\0\0\xDBF\0\0\xD8F\x01\0eK\x01\0bK\x01\0_K\x01\0\\K\x01\0YK\x01\0VK\x01\0SK\x01\0PK\x01\0MK\x02\0IK\x02\0EK\x02\0AK\x02\0=K\x02\09K\x02\x005K\x02\x001K\x02\0-K\x02\0)K\x02\0%K\x02\0!K\0\0\x1CK\0\0\x19K\0\0\x16K\0\0\x13K\0\0\x10K\0\0\rK\0\0\nK\0\0\x07K\0\0\x04K\x01\0\x1EK\x01\0\x1BK\x01\0\x18K\x01\0\x15K\x01\0\x12K\x01\0\x0FK\x01\0\x0CK\x01\0\tK\x01\0\x06K\x01\0\x03K\x01\0\0K\x01\0\xFDJ\x01\0\xFAJ\x01\0\xF7J\x01\0\xF4J\x01\0\xF1J\x01\0\xEEJ\x01\0\xEBJ\x01\0\xE8J\x01\0\xE5J\x01\0\xE2J\x01\0\xDFJ\x01\0\xDCJ\x01\0\xD9J\x01\0\xD6J\x01\0\xD3J\x01\0\xD0J\x01\0\xCDJ\x01\0\xCAJ\x01\0\xC7J\x01\0\xC4J\x01\0\xC1J\x01\0\xBEJ\x01\0\xBBJ\x01\0\xB8J\x01\0\xB5J\x01\0\xB2JA\0\0@B\0\0@C\0\0@D\0\0@E\0\0@F\0\0@G\0\0@H\0\0@I\0\0@J\0\0@K\0\0@L\0\0@M\0\0@N\0\0@O\0\0@P\0\0@Q\0\0@R\0\0@S\0\0@T\0\0@U\0\0@V\0\0@W\0\0@X\0\0@Y\0\0@Z\0\0@a\0\0@b\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@o\0\0@p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\xAEJ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xABJ\0\0\xA8J\x01\0\xA8J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDD*\x9CA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\0\0@V\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a-\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCDk\0@\0\0\0\0\0\0\0\0\0\0\0\0\x9F\x9F\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0N\0@(N\0@6N\0@?N\0@YN\0@\x85N\0@\x8CN\0@\xA0N\0@\xBAN\0@?Q\0@eQ\0@kQ\0@\x82Q\0@\x96Q\0@\xABQ\0@\xE0Q\0@\xF5Q\0@\0R\0@\x9BR\0@\xF9R\0@\x15S\0@\x1AS\0@8S\0@AS\0@\\S\0@iS\0@\x82S\0@\xB6S\0@\xC8S\0@\xE3S\0@\xD7V\0@\x1FW\0@\xEBX\0@\x02Y\0@\nY\0@\x15Y\0@'Y\0@sY\0@P[\0@\x80[\0@\xF8[\0@\x0F\\\0@\"\\\0@8\\\0@n\\\0@q\\\0@\xDB]\0@\xE5]\0@\xF1]\0@\xFE]\0@r^\0@z^\0@\x7F^\0@\xF4^\0@\xFE^\0@\x0B_\0@\x13_\0@P_\0@a_\0@s_\0@\xC3_\0@\x08b\0@6b\0@Kb\0@/e\0@4e\0@\x87e\0@\x97e\0@\xA4e\0@\xB9e\0@\xE0e\0@\xE5e\0@\xF0f\0@\x08g\0@(g\0@ k\0@bk\0@yk\0@\xB3k\0@\xCBk\0@\xD4k\0@\xDBk\0@\x0Fl\0@\x14l\0@4l\0@kp\0@*r\0@6r\0@;r\0@?r\0@Gr\0@Yr\0@[r\0@\xACr\0@\x84s\0@\x89s\0@\xDCt\0@\xE6t\0@\x18u\0@\x1Fu\0@(u\0@0u\0@\x8Bu\0@\x92u\0@vv\0@}v\0@\xAEv\0@\xBFv\0@\xEEv\0@\xDBw\0@\xE2w\0@\xF3w\0@:y\0@\xB8y\0@\xBEy\0@tz\0@\xCBz\0@\xF9z\0@s|\0@\xF8|\0@6\x7F\0@Q\x7F\0@\x8A\x7F\0@\xBD\x7F\0@\x01\x80\0@\x0C\x80\0@\x12\x80\0@3\x80\0@\x7F\x80\0@\x89\x80\0@\xE3\x81\0@\xEA\x81\0@\xF3\x81\0@\xFC\x81\0@\x0C\x82\0@\x1B\x82\0@\x1F\x82\0@n\x82\0@r\x82\0@x\x82\0@M\x86\0@k\x86\0@@\x88\0@L\x88\0@c\x88\0@~\x89\0@\x8B\x89\0@\xD2\x89\0@\0\x8A\0@7\x8C\0@F\x8C\0@U\x8C\0@x\x8C\0@\x9D\x8C\0@d\x8D\0@p\x8D\0@\xB3\x8D\0@\xAB\x8E\0@\xCA\x8E\0@\x9B\x8F\0@\xB0\x8F\0@\xB5\x8F\0@\x91\x90\0@I\x91\0@\xC6\x91\0@\xCC\x91\0@\xD1\x91\0@w\x95\0@\x80\x95\0@\x1C\x96\0@\xB6\x96\0@\xB9\x96\0@\xE8\x96\0@Q\x97\0@^\x97\0@b\x97\0@i\x97\0@\xCB\x97\0@\xED\x97\0@\xF3\x97\0@\x01\x98\0@\xA8\x98\0@\xDB\x98\0@\xDF\x98\0@\x96\x99\0@\x99\x99\0@\xAC\x99\0@\xA8\x9A\0@\xD8\x9A\0@\xDF\x9A\0@%\x9B\0@/\x9B\0@2\x9B\0@<\x9B\0@Z\x9B\0@\xE5\x9C\0@u\x9E\0@\x7F\x9E\0@\xA5\x9E\0@\xBB\x9E\0@\xC3\x9E\0@\xCD\x9E\0@\xD1\x9E\0@\xF9\x9E\0@\xFD\x9E\0@\x0E\x9F\0@\x13\x9F\0@ \x9F\0@;\x9F\0@J\x9F\0@R\x9F\0@\x8D\x9F\0@\x9C\x9F\0@\xA0\x9F\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\xD8\0\x80\xE4\xD8\0\x80\xE8\xD8\0\x80\xDE\xD8\0\x80\xE0\xD8\0\x80\xE0\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x120\0@\0\0\0\0AS\0@DS\0@ES\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0K\xB0L\x18\0\0\0\0M\xB0L\x18\0\0\0\0O\xB0L\x18\0\0\0\0Q\xB0L\x18\0\0\0\0S\xB0L\x18\0\0\0\0U\xB0L\x18\0\0\0\0W\xB0L\x18\0\0\0\0Y\xB0L\x18\0\0\0\0[\xB0L\x18\0\0\0\0]\xB0L\x18\0\0\0\0_\xB0L\x18\0\0\0\0a\xB0L\x18\0\0\0\0\0\0\0\0d\xB0L\x18\0\0\0\0f\xB0L\x18\0\0\0\0h\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0o\xB0L\x18o0M\x18\0\0\0\0r\xB0L\x18r0M\x18\0\0\0\0u\xB0L\x18u0M\x18\0\0\0\0x\xB0L\x18x0M\x18\0\0\0\0{\xB0L\x18{0M\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\xD8\0\x80\x08\xD8\0\x80 \x80LX \0MX\0\0\0\0\x9D\xB0L\x18\0\0\xA6J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAB\xB0L\x18\0\0\0\0\xAD\xB0L\x18\0\0\0\0\xAF\xB0L\x18\0\0\0\0\xB1\xB0L\x18\0\0\0\0\xB3\xB0L\x18\0\0\0\0\xB5\xB0L\x18\0\0\0\0\xB7\xB0L\x18\0\0\0\0\xB9\xB0L\x18\0\0\0\0\xBB\xB0L\x18\0\0\0\0\xBD\xB0L\x18\0\0\0\0\xBF\xB0L\x18\0\0\0\0\xC1\xB0L\x18\0\0\0\0\0\0\0\0\xC4\xB0L\x18\0\0\0\0\xC6\xB0L\x18\0\0\0\0\xC8\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCF\xB0L\x18\xCF0M\x18\0\0\0\0\xD2\xB0L\x18\xD20M\x18\0\0\0\0\xD5\xB0L\x18\xD50M\x18\0\0\0\0\xD8\xB0L\x18\xD80M\x18\0\0\0\0\xDB\xB0L\x18\xDB0M\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA6\xB0L\x18\0\0\0\0\0\0\0\0\xEF\xB0L\x18\xF0\xB0L\x18\xF1\xB0L\x18\xF2\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xB0L\x18\0\0\xA4J\0\0\0\0\0\x11\0@\x01\x11\0@\xAA\x11\0\xC0\x02\x11\0@\xAC\x11\0\xC0\xAD\x11\0\xC0\x03\x11\0@\x04\x11\0@\x05\x11\0@\xB0\x11\0\xC0\xB1\x11\0\xC0\xB2\x11\0\xC0\xB3\x11\0\xC0\xB4\x11\0\xC0\xB5\x11\0\xC0\x1A\x11\0@\x06\x11\0@\x07\x11\0@\x08\x11\0@!\x11\0@\t\x11\0@\n\x11\0@\x0B\x11\0@\x0C\x11\0@\r\x11\0@\x0E\x11\0@\x0F\x11\0@\x10\x11\0@\x11\x11\0@\x12\x11\0@a\x11\0\xC0b\x11\0\xC0c\x11\0\xC0d\x11\0\xC0e\x11\0\xC0f\x11\0\xC0g\x11\0\xC0h\x11\0\xC0i\x11\0\xC0j\x11\0\xC0k\x11\0\xC0l\x11\0\xC0m\x11\0\xC0n\x11\0\xC0o\x11\0\xC0p\x11\0\xC0q\x11\0\xC0r\x11\0\xC0s\x11\0\xC0t\x11\0\xC0u\x11\0\xC0`\x11\0@\x14\x11\0@\x15\x11\0@\xC7\x11\0@\xC8\x11\0@\xCC\x11\0@\xCE\x11\0@\xD3\x11\0@\xD7\x11\0@\xD9\x11\0@\x1C\x11\0@\xDD\x11\0@\xDF\x11\0@\x1D\x11\0@\x1E\x11\0@ \x11\0@\"\x11\0@#\x11\0@'\x11\0@)\x11\0@+\x11\0@,\x11\0@-\x11\0@.\x11\0@/\x11\0@2\x11\0@6\x11\0@@\x11\0@G\x11\0@L\x11\0@\xF1\x11\0@\xF2\x11\0@W\x11\0@X\x11\0@Y\x11\0@\x84\x11\0@\x85\x11\0@\x88\x11\0@\x91\x11\0@\x92\x11\0@\x94\x11\0@\x9E\x11\0@\xA1\x11\0@\0\0\0\0\0\0\0\0\0N\0@\x8CN\0@\tN\0@\xDBV\0@\nN\0@-N\0@\x0BN\0@2u\0@YN\0@\x19N\0@\x01N\0@)Y\0@0W\0@\xBAN\0@\x01\0\xA1J\x01\0\x9EJ\x01\0\x9BJ\x01\0\x98J\x01\0\x95J\x01\0\x92J\x01\0\x8FJ\x01\0\x8CJ\x01\0\x89J\x01\0\x86J\x01\0\x83J\x01\0\x80J\x01\0}J\x01\0zJ\x02\0vJ\x02\0rJ\x02\0nJ\x02\0jJ\x02\0fJ\x02\0bJ\x02\0^J\x02\0ZJ\x02\0VJ\x02\0RJ\x02\0NJ\x02\0JJ\x02\0FJ\x02\0BJ\x02\0>J\x05\x007J\x04\x001J\0\0\0\0\x01\0.J\x01\0+J\x01\0(J\x01\0%J\x01\0\"J\x01\0\x1FJ\x01\0\x1CJ\x01\0\x19J\x01\0\x16J\x01\0\x13J\x01\0\x10J\x01\0\rJ\x01\0\nJ\x01\0\x07J\x01\0\x04J\x01\0\x01J\x01\0\xFEI\x01\0\xFBI\x01\0\xF8I\x01\0\xF5I\x01\0\xF2I\x01\0\xEFI\x01\0\xECI\x01\0\xE9I\x01\0\xE6I\x01\0\xE3I\x01\0\xE0I\x01\0\xDDI\x01\0\xDAI\x01\0\xD7I\x01\0\xD4I\x01\0\xD1I\x01\0\xCEI\x01\0\xCBI\x01\0\xC8I\x01\0\xC5IOU\0@|^\0@\x87e\0@\x8F{\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xC2I\0\0\xD5F\0\0\xD2F\0\0\xCFF\0\0\xCCF\0\0\xC9F\0\0\xC6F\0\0\xC3F\0\0\xC0F\0\0\xBDF\0\0\xBAF\0\0\xB7F\0\0\xC0I\0\0\xBEI\0\0\x88I\0\0\xBCI\0\x11\0@\x02\x11\0@\x03\x11\0@\x05\x11\0@\x06\x11\0@\x07\x11\0@\t\x11\0@\x0B\x11\0@\x0C\x11\0@\x0E\x11\0@\x0F\x11\0@\x10\x11\0@\x11\x11\0@\x12\x11\0@\0\0\xBAI\0\0\xB8I\0\0\xB6I\0\0\xB4I\0\0\xB2I\0\0\xB0I\0\0\xAEI\0\0\xACI\0\0\xAAI\0\0\x9DI\0\0\xA8I\0\0\xA6I\0\0\xA4I\0\0\xA2I\x03\0\x9DI\x02\0\x99I\0\0\x97I\0\0\0\0\0N\0@\x8CN\0@\tN\0@\xDBV\0@\x94N\0@mQ\0@\x03N\0@kQ\0@]N\0@AS\0@\x08g\0@kp\0@4l\0@(g\0@\xD1\x91\0@\x1FW\0@\xE5e\0@*h\0@\tg\0@>y\0@\rT\0@yr\0@\xA1\x8C\0@]y\0@\xB4R\0@\xD8y\0@7u\0@sY\0@i\x90\0@*Q\0@pS\0@\xE8l\0@\x05\x98\0@\x11O\0@\x99Q\0@ck\0@\nN\0@-N\0@\x0BN\0@\xE6]\0@\xF3S\0@;S\0@\x97[\0@f[\0@\xE3v\0@\x01O\0@\xC7\x8C\0@TS\0@\x1CY\0@\0\0\x95I\0\0\x93I\0\0\x91I\0\0\x8FI\0\0\x8DI\0\0\x8BI\0\0\x89I\0\0\x87I\0\0\x85I\0\0\x83I\0\0\x81I\0\0\x7FI\0\0}I\0\0{I\0\0yI\0\0fI\0\0cI\0\0wI\0\0uI\0\0sI\0\0qI\0\0oI\0\0mI\0\0kI\x01\0hI\x01\0eI\x01\0bI\0\0`I\x01\0]I\0\0[I\x01\0XI\xA20\0@\xA40\0@\xA60\0@\xA80\0@\xAA0\0@\xAB0\0@\xAD0\0@\xAF0\0@\xB10\0@\xB30\0@\xB50\0@\xB70\0@\xB90\0@\xBB0\0@\xBD0\0@\xBF0\0@\xC10\0@\xC40\0@\xC60\0@\xC80\0@\xCA0\0@\xCB0\0@\xCC0\0@\xCD0\0@\xCE0\0@\xCF0\0@\xD20\0@\xD50\0@\xD80\0@\xDB0\0@\xDE0\0@\xDF0\0@\xE00\0@\xE10\0@\xE20\0@\xE40\0@\xE60\0@\xE80\0@\xE90\0@\xEA0\0@\xEB0\0@\xEC0\0@\xED0\0@\xEF0\0@\xF00\0@\xF10\0@\xF20\0@\0\0VI\x03\0QI\x02\0MI\x03\0HI\x01\0EI\x03\0@I\x01\0=I\x01\0:I\x04\x004I\x02\x000I\x01\0-I\x01\0*I\x01\0'I\x02\0#I\x02\0\x1FI\x02\0\x1BI\x02\0\x17I\x02\0\x13I\x02\0\x0FI\x02\0\x0BI\x04\0\x05I\0\0\xF4H\x04\0\xFFH\x04\0\xF9H\x03\0\xF4H\x02\0\xEEH\x04\0\xEEH\x04\0\xE8H\x02\0\xE4H\x01\0\xE1H\x01\0\xDEH\x02\0\xDAH\x02\0\xD6H\x03\0\xD1H\x03\0\xCCH\x01\0\xC9H\x01\0\xB4H\x02\0\xC5H\x01\0\xC2H\x01\0\xBFH\0\x005H\0\0\xBDH\x01\0\xBAH\x01\0\xB7H\x04\0\xB1H\x02\0\xADH\x03\0\xA8H\x04\0\xA2H\x02\0\x9EH\x01\0\x9BH\x01\0\x98H\x04\0\x92H\x02\0\x8EH\x04\0\x88H\x01\0\x85H\x03\0\x80H\x01\0}H\x02\0yH\x01\0vH\x02\0rH\x03\0mH\x02\0iH\x03\0dH\x02\0`H\0\0^H\x03\0YH\x01\0VH\x01\0SH\x02\0OH\x01\0LH\x01\0IH\x01\0FH\x03\0AH\x02\0=H\0\x007H\x04\x007H\x01\x002H\x03\x002H\x02\0.H\x02\0*H\x01\0'H\x01\0$H\x02\0 H\0\0\x1EH\x02\0\x1AH\x03\0\x15H\0\0\x13H\x04\0\rH\x01\0\nH\0\0\xEAG\0\0\xE7G\0\0\xE4G\0\0\xE1G\0\0\xDEG\0\0\xF9G\0\0\xF6G\0\0\xF3G\0\0\xF0G\0\0\xEDG\x01\0\x07H\x01\0\x04H\x01\0\x01H\x01\0\xFEG\x01\0\xFBG\x01\0\xF8G\x01\0\xF5G\x01\0\xF2G\x01\0\xEFG\x01\0\xECG\x01\0\xE9G\x01\0\xE6G\x01\0\xE3G\x01\0\xE0G\x01\0\xDDG\x01\0\xDAG\0\0\xD8G\0\0\xD6G\x01\0\xD3G\0\0\xD1G\0\0\xCFG\0\0\xC9G\x01\0\xCCG\x01\0\xC9G\0\0\xC7G\0\0\xC5G\0\0\xC3G\0\0\xC1G\0\0\xBFG\x02\0\xBBG\0\0\xB9G\0\0\xB7G\0\0\xB5G\0\0\xB3G\0\0\xB1G\0\0\xAFG\0\0\xADG\0\0\xABG\x01\0\xA8G\x02\0\xA7G\0\0\xA5G\0\0\xA3G\0\0\xA1G\0\0\x9FG\0\0\x9DG\0\x004G\0\0\x92G\x01\0\x9AG\x01\0\x97G\x01\0\x94G\x01\0\x91G\0\0\x8FG\0\0\x8DG\0\0\x8BG\0\0\x89G\0\0\x87G\0\0\x85G\0\0\x83G\0\0wG\0\0tG\0\0qG\x01\0\x80G\x01\0}G\0\0{G\x01\0zG\x01\0wG\x01\0tG\0\0rG\x01\0qG\x01\0mG\x02\0mG\0\0eG\x01\0jG\x01\0gG\x01\0dG\x01\0^G\x03\0^G\x04\0^G\0\0\\G\0\0ZG\0\0XG\0\0VG\0\0TG\0\0RG\0\0PG\0\0\xFBF\0\0NG\0\0\xF8C\0\0LG\0\0JG\0\0HG\0\0\xFEF\0\0FG\0\0DG\0\0BG\0\0@G\x02\0<G\0\0:G\0\08G\0\x006G\x02\x002G\x01\0/G\0\0-G\0\0+G\0\0)G\0\0'G\0\0%G\0\0#G\0\0!G\0\0\x1FG\0\0\x12G\0\0\x1DG\x01\0\x1AG\0\0\x18G\0\0\x16G\x01\0\x13G\x01\0\x10G\0\0\x0EG\x02\0\nG\x01\0\x07G\0\0\x05G\0\0\x03G\0\0\x01G\0\0\xFFF\x01\0\xFCF\x01\0\xF9F\0\0\xB8F\0\0\xD3F\0\0\xD0F\0\0\xCDF\0\0\xCAF\0\0\xC7F\0\0\xC4F\0\0\xC1F\0\0\xBEF\x01\0\xF6F\x01\0\xF3F\x01\0\xF0F\x01\0\xEDF\x01\0\xEAF\x01\0\xE7F\x01\0\xE4F\x01\0\xE1F\x01\0\xDEF\x01\0\xDBF\x01\0\xD8F\x01\0\xD5F\x01\0\xD2F\x01\0\xCFF\x01\0\xCCF\x01\0\xC9F\x01\0\xC6F\x01\0\xC3F\x01\0\xC0F\x01\0\xBDF\x01\0\xBAF\x01\0\xB7F\x01\0\xB4F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0J\x04\0@L\x04\0@\xE6\xD8\0\x80\xE6\xD8\0\x80o\xA7\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0C\0\0@F\0\0@Q\0\0@\0\0\0\0\0\0\0\0\0\0\0\0&\x01\0@S\x01\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'\xA7\0@7\xAB\0@k\x02\0@R\xAB\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8D\x02\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0\xFD\xFF\0\xC0H\x8C\0@\xF4f\0@\xCA\x8E\0@\xC8\x8C\0@\xD1n\0@2N\0@\xE5S\0@\x9C\x9F\0@\x9C\x9F\0@QY\0@\xD1\x91\0@\x87U\0@HY\0@\xF6a\0@iv\0@\x85\x7F\0@?\x86\0@\xBA\x87\0@\xF8\x88\0@\x8F\x90\0@\x02j\0@\x1Bm\0@\xD9p\0@\xDEs\0@=\x84\0@j\x91\0@\xF1\x99\0@\x82N\0@uS\0@\x04k\0@\x1Br\0@-\x86\0@\x1E\x9E\0@P]\0@\xEBo\0@\xCD\x85\0@d\x89\0@\xC9b\0@\xD8\x81\0@\x1F\x88\0@\xCA^\0@\x17g\0@jm\0@\xFCr\0@\xCE\x90\0@\x86O\0@\xB7Q\0@\xDER\0@\xC4d\0@\xD3j\0@\x10r\0@\xE7v\0@\x01\x80\0@\x06\x86\0@\\\x86\0@\xEF\x8D\0@2\x97\0@o\x9B\0@\xFA\x9D\0@\x8Cx\0@\x7Fy\0@\xA0}\0@\xC9\x83\0@\x04\x93\0@\x7F\x9E\0@\xD6\x8A\0@\xDFX\0@\x04_\0@`|\0@~\x80\0@br\0@\xCAx\0@\xC2\x8C\0@\xF7\x96\0@\xD8X\0@b\\\0@\x13j\0@\xDAm\0@\x0Fo\0@/}\0@7~\0@K\x96\0@\xD2R\0@\x8B\x80\0@\xDCQ\0@\xCCQ\0@\x1Cz\0@\xBE}\0@\xF1\x83\0@u\x96\0@\x80\x8B\0@\xCFb\0@\x02j\0@\xFE\x8A\0@9N\0@\xE7[\0@\x12`\0@\x87s\0@pu\0@\x17S\0@\xFBx\0@\xBFO\0@\xA9_\0@\rN\0@\xCCl\0@xe\0@\"}\0@\xC3S\0@^X\0@\x01w\0@I\x84\0@\xAA\x8A\0@\xBAk\0@\xB0\x8F\0@\x88l\0@\xFEb\0@\xE5\x82\0@\xA0c\0@eu\0@\xAEN\0@iQ\0@\xC9Q\0@\x81h\0@\xE7|\0@o\x82\0@\xD2\x8A\0@\xCF\x91\0@\xF5R\0@BT\0@sY\0@\xEC^\0@\xC5e\0@\xFEo\0@*y\0@\xAD\x95\0@j\x9A\0@\x97\x9E\0@\xCE\x9E\0@\x9BR\0@\xC6f\0@wk\0@b\x8F\0@t^\0@\x90a\0@\0b\0@\x9Ad\0@#o\0@Iq\0@\x89t\0@\xCAy\0@\xF4}\0@o\x80\0@&\x8F\0@\xEE\x84\0@#\x90\0@J\x93\0@\x17R\0@\xA3R\0@\xBDT\0@\xC8p\0@\xC2\x88\0@\xAA\x8A\0@\xC9^\0@\xF5_\0@{c\0@\xAEk\0@>|\0@us\0@\xE4N\0@\xF9V\0@\xE7[\0@\xBA]\0@\x1C`\0@\xB2s\0@it\0@\x9A\x7F\0@F\x80\0@4\x92\0@\xF6\x96\0@H\x97\0@\x18\x98\0@\x8BO\0@\xAEy\0@\xB4\x91\0@\xB8\x96\0@\xE1`\0@\x86N\0@\xDAP\0@\xEE[\0@?\\\0@\x99e\0@\x02j\0@\xCEq\0@Bv\0@\xFC\x84\0@|\x90\0@\x8D\x9F\0@\x88f\0@.\x96\0@\x89R\0@{g\0@\xF3g\0@Am\0@\x9Cn\0@\tt\0@Yu\0@kx\0@\x10}\0@^\x98\0@mQ\0@.b\0@x\x96\0@+P\0@\x19]\0@\xEAm\0@*\x8F\0@\x8B_\0@Da\0@\x17h\0@\x87s\0@\x86\x96\0@)R\0@\x0FT\0@e\\\0@\x13f\0@Ng\0@\xA8h\0@\xE5l\0@\x06t\0@\xE2u\0@y\x7F\0@\xCF\x88\0@\xE1\x88\0@\xCC\x91\0@\xE2\x96\0@?S\0@\xBAn\0@\x1DT\0@\xD0q\0@\x98t\0@\xFA\x85\0@\xA3\x96\0@W\x9C\0@\x9F\x9E\0@\x97g\0@\xCBm\0@\xE8\x81\0@\xCBz\0@ {\0@\x92|\0@\xC0r\0@\x99p\0@X\x8B\0@\xC0N\0@6\x83\0@:R\0@\x07R\0@\xA6^\0@\xD3b\0@\xD6|\0@\x85[\0@\x1Em\0@\xB4f\0@;\x8F\0@L\x88\0@M\x96\0@\x8B\x89\0@\xD3^\0@@Q\0@\xC0U\0@\0\0\0\0\0\0\0\0ZX\0@\0\0\0\0tf\0@\0\0\0\0\0\0\0\0\xDEQ\0@*s\0@\xCAv\0@<y\0@^y\0@ey\0@\x8Fy\0@V\x97\0@\xBE|\0@\xBD\x7F\0@\0\0\0\0\x12\x86\0@\0\0\0\0\xF8\x8A\0@\0\0\0\0\0\0\0\08\x90\0@\xFD\x90\0@\0\0\0\0\0\0\0\0\0\0\0\0\xEF\x98\0@\xFC\x98\0@(\x99\0@\xB4\x9D\0@\xDE\x90\0@\xB7\x96\0@\xAEO\0@\xE7P\0@MQ\0@\xC9R\0@\xE4R\0@QS\0@\x9DU\0@\x06V\0@hV\0@@X\0@\xA8X\0@d\\\0@n\\\0@\x94`\0@ha\0@\x8Ea\0@\xF2a\0@Oe\0@\xE2e\0@\x91f\0@\x85h\0@wm\0@\x1An\0@\"o\0@nq\0@+r\0@\"t\0@\x91x\0@>y\0@Iy\0@Hy\0@Py\0@Vy\0@]y\0@\x8Dy\0@\x8Ey\0@@z\0@\x81z\0@\xC0{\0@\xF4}\0@\t~\0@A~\0@r\x7F\0@\x05\x80\0@\xED\x81\0@y\x82\0@y\x82\0@W\x84\0@\x10\x89\0@\x96\x89\0@\x01\x8B\0@9\x8B\0@\xD3\x8C\0@\x08\x8D\0@\xB6\x8F\0@8\x90\0@\xE3\x96\0@\xFF\x97\0@;\x98\0@u`\0@\x10\0\xC7C\x18\x82\0@\0\0\0\0\0\0\0\0&N\0@\xB5Q\0@hQ\0@\x80O\0@EQ\0@\x80Q\0@\xC7R\0@\xFAR\0@\x9DU\0@UU\0@\x99U\0@\xE2U\0@ZX\0@\xB3X\0@DY\0@TY\0@bZ\0@([\0@\xD2^\0@\xD9^\0@i_\0@\xAD_\0@\xD8`\0@Na\0@\x08a\0@\x8Ea\0@`a\0@\xF2a\0@4b\0@\xC4c\0@\x1Cd\0@Rd\0@Ve\0@tf\0@\x17g\0@\x1Bg\0@Vg\0@yk\0@\xBAk\0@Am\0@\xDBn\0@\xCBn\0@\"o\0@\x1Ep\0@nq\0@\xA7w\0@5r\0@\xAFr\0@*s\0@qt\0@\x06u\0@;u\0@\x1Dv\0@\x1Fv\0@\xCAv\0@\xDBv\0@\xF4v\0@Jw\0@@w\0@\xCCx\0@\xB1z\0@\xC0{\0@{|\0@[}\0@\xF4}\0@>\x7F\0@\x05\x80\0@R\x83\0@\xEF\x83\0@y\x87\0@A\x89\0@\x86\x89\0@\x96\x89\0@\xBF\x8A\0@\xF8\x8A\0@\xCB\x8A\0@\x01\x8B\0@\xFE\x8A\0@\xED\x8A\0@9\x8B\0@\x8A\x8B\0@\x08\x8D\0@8\x8F\0@r\x90\0@\x99\x91\0@v\x92\0@|\x96\0@\xE3\x96\0@V\x97\0@\xDB\x97\0@\xFF\x97\0@\x0B\x98\0@;\x98\0@\x12\x9B\0@\x9C\x9F\0@\x10\0\xC6C\x10\0\xC5C\x10\0\xC4C\x9D;\0@\x18@\0@9@\0@\x10\0\xC3C\x10\0\xC2C\x10\0\xC1CC\x9F\0@\x8E\x9F\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAEF\0\0\xB2F\0\0\xAFF\x01\0\xB1F\x01\0\xAEF\0\0\xACF\0\0\xACF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAAF\0\0\xA8F\0\0\xA6F\0\0\xA4F\0\0\xA2F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD9\x05\xDAB\x1A\xD8\0\x80\xF2\x85\xDBB\xE2\x05\0@\xD0\x05\0@\xD3\x05\0@\xD4\x05\0@\xDB\x05\0@\xDC\x05\0@\xDD\x05\0@\xE8\x05\0@\xEA\x05\0@+\0\0@\xE9\x85\xE0B\xE9\x05\xE1B\x11\0\x04@\x11\0\x01@\xD0\x85\xDBB\xD0\x05\xDCB\xD0\x05\xDEB\xD1\x05\xDEB\xD2\x05\xDEB\xD3\x05\xDEB\xD4\x05\xDEB\xD5\x05\xDEB\xD6\x05\xDEB\0\0\0\0\xD8\x05\xDEB\xD9\x05\xDEB\xDA\x05\xDEB\xDB\x05\xDEB\xDC\x05\xDEB\0\0\0\0\xDE\x05\xDEB\0\0\0\0\xE0\x05\xDEB\xE1\x05\xDEB\0\0\0\0\xE3\x05\xDEB\xE4\x05\xDEB\0\0\0\0\xE6\x05\xDEB\xE7\x05\xDEB\xE8\x05\xDEB\xE9\x05\xDEB\xEA\x05\xDEB\xD5\x85\xDCB\xD1\x85\xDFB\xDB\x85\xDFB\xE4\x85\xDFB\0\0\xA0Fq\x06\0@q\x06\0@{\x06\0@{\x06\0@{\x06\0@{\x06\0@~\x06\0@~\x06\0@~\x06\0@~\x06\0@\x80\x06\0@\x80\x06\0@\x80\x06\0@\x80\x06\0@z\x06\0@z\x06\0@\x7F\x06\0@\x7F\x06\0@\x7F\x06\0@\x7F\x06\0@y\x06\0@y\x06\0@y\x06\0@y\x06\0@\xA4\x06\0@\xA4\x06\0@\xA4\x06\0@\xA4\x06\0@\xA6\x06\0@\xA6\x06\0@\x84\x06\0@\x84\x06\0@\x84\x06\0@\x84\x06\0@\x83\x06\0@\x83\x06\0@\x83\x06\0@\x83\x06\0@\x86\x06\0@\x86\x06\0@\x86\x06\0@\x86\x06\0@\x87\x06\0@\x87\x06\0@\x8D\x06\0@\x8D\x06\0@\x8C\x06\0@\x8C\x06\0@\x8E\x06\0@\x8E\x06\0@\x88\x06\0@\x88\x06\0@\x98\x06\0@\x98\x06\0@\x91\x06\0@\x91\x06\0@\xA9\x06\0@\xA9\x06\0@\xAF\x06\0@\xAF\x06\0@\xAF\x06\0@\xAF\x06\0@\xB3\x06\0@\xB3\x06\0@\xB3\x06\0@\xB3\x06\0@\xB1\x06\0@\xB1\x06\0@\xB1\x06\0@\xB1\x06\0@\xBA\x06\0@\xBA\x06\0@\xBB\x06\0@\xBB\x06\0@\xBB\x06\0@\xBB\x06\0@\xD5\x06*C\xD5\x06*C\xC1\x06\0@\xC1\x06\0@\xC1\x06\0@\xC1\x06\0@\xBE\x06\0@\xBE\x06\0@\xBE\x06\0@\xBE\x06\0@\xD2\x06\0@\xD2\x06\0@\xD2\x06*C\xD2\x06*C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAD\x06\0@\xAD\x06\0@\xAD\x06\0@\xAD\x06\0@\xC7\x06\0@\xC7\x06\0@\xC6\x06\0@\xC6\x06\0@\xC8\x06\0@\xC8\x06\0@\0\0\x9EF\xCB\x06\0@\xCB\x06\0@\xC5\x06\0@\xC5\x06\0@\xC9\x06\0@\xC9\x06\0@\xD0\x06\0@\xD0\x06\0@\xD0\x06\0@\xD0\x06\0@I\x06\0@I\x06\0@\x01\0\x9BF\x01\0\x9BF\x01\0\x98F\x01\0\x98F\x01\0\x95F\x01\0\x95F\x01\0\x92F\x01\0\x92F\x01\0\x8FF\x01\0\x8FF\x01\0\x8CF\x01\0\x8CF\x01\0\x89F\x01\0\x89F\x01\0\x89F\x01\0eF\x01\0eF\x01\0eF\xCC\x06\0@\xCC\x06\0@\xCC\x06\0@\xCC\x06\0@\x01\0#F\x01\0 F\x01\0\xFCE\x01\0eF\x01\0bF\0\0\x1BF\0\0\xB7D\0\0\x1AE\0\0\xF7E\0\0\\F\0\0ZF\0\0\x14E\0\0\xADE\0\0\x0EE\0\0\x08E\0\0RF\0\0PF\0\0\x87F\0\0\xF1E\0\0HF\0\0FF\0\0\xC3D\0\0\xB2D\0\0\xC0D\0\0\x97D\0\0<E\0\0\x85F\0\x007E\0\0\x8FE\0\0\x95E\0\0\xABD\0\0\x86E\0\0\xF9D\0\0\xAED\0\0\x17F\0\0\xF3D\0\0qE\0\0\x15F\0\0\x13F\0\0hE\0\0\xB6E\0\0\xB1D\0\0\x94D\0\0\x11F\0\0\\E\0\0\x0FF\0\0\rF\0\0YE\0\0\xBAD\0\0DF\0\0BF\0\0\x0BF\0\0\xD8D\0\0@F\0\0>F\0\0<F\0\0\tF\0\0\x07F\0\0\x05F\0\0\xEDE\0\0\xB4D\0\0:F\0\08F\0\0zD\0\0\xD5D\0\0JE\0\0\x88D\0\0\x84D\0\0\x8BD\0\0\xBDD\0\0\x96D\0\0\xCCD\0\0\x95D\0\0\0E\0\0\xBBD\0\0\xA8D\0\0\xDBD\0\0\x03F\0\0\x1DE\0\0.F\0\0,F\0\0\x01F\0\0/E\0\0\x83F\0\0\xFBE\0\0\xC2D\0\0\xBFD\0\0\xFFE\0\0\xBCD\0\0&F\0\0\xE3D0\x068C1\x068CI\x068C\x11\0\x80F\x11\0}F\x11\0zF\x11\0wF\x11\0tF\x11\0qF\x01\0nF\x01\0kF\x01\0\xFCE\x01\0hF\x01\0eF\x01\0bF\0\0\x9CD\0\0`F\0\0\xF7E\0\0^F\0\0\\F\0\0ZF\0\0XF\0\0VF\0\0\x08E\0\0TF\0\0RF\0\0PF\0\0NF\0\0LF\0\0\xF1E\0\0JF\0\0HF\0\0FF\0\0DF\0\0BF\0\0@F\0\0>F\0\0<F\0\0\xEDE\0\0\xB4D\0\0:F\0\08F\0\0\x88D\0\0\x84D\0\0\x8BD\0\x006F\0\0\x95D\0\x004F\0\x002F\0\0\x1DE\0\x000F\0\0.F\0\0,FI\x068C\0\0*F\0\0(F\0\0\xBCD\0\0\xC5D\0\0&F\0\0\xE3D\x01\0#F\x01\0 F\x01\0\x1DF\x01\0\xFCE\x01\0\xF9E\0\0\x1BF\0\0\xB7D\0\0\x1AE\0\0\xF7E\0\0\xF5E\0\0\x14E\0\0\xADE\0\0\x0EE\0\0\x08E\0\0\xF3E\0\0\xF1E\0\0\xC3D\0\0\xB2D\0\0\xC0D\0\0\x97D\0\0<E\0\x007E\0\0\x8FE\0\0\x95E\0\0\xABD\0\0\x86E\0\0\xF9D\0\0\x19F\0\0\xAED\0\0\x17F\0\0\xF3D\0\0qE\0\0\x15F\0\0\x13F\0\0\xB6E\0\0\xB1D\0\0\x94D\0\0\x11F\0\0\\E\0\0\x0FF\0\0\rF\0\0YE\0\0\xBAD\0\0\x0BF\0\0\xD8D\0\0\tF\0\0\x07F\0\0\x05F\0\0\xEDE\0\0\xB4D\0\0zD\0\0\xD5D\0\0JE\0\0\x88D\0\0\x81D\0\0\xBDD\0\0\x96D\0\0\xCCD\0\0\x95D\0\0\xA8D\0\0\xDBD\0\0\x03F\0\0\x1DE\0\0\xEBE\0\0\x01F\0\0/EG\x068C\0\0\xC2D\0\0\xBFD\0\0\xFFE\0\0\xBCD\0\0\x8CD\x01\0\xFCE\x01\0\xF9E\0\0\xF7E\0\0\xF5E\0\0\x08E\0\0\xF3E\0\0\xF1E\0\0\xEFE\0\0\x86E\0\0\xBCE\0\0wE\0\0\xBAE\0\0\xEDE\0\0\xB4D\0\0\x88D\0\0\x1DE\0\0\xEBE\0\0\xBCD\0\0\x8CD\x11\0\xE8E\x11\0\xE5E\x11\0\xE2E\0\0\xE0E\0\0\xDEE\0\0\xDCE\0\0\xDAE\0\0\xD8E\0\0\xD6E\0\0\xD4E\0\0\xD2E\0\0\xD0E\0\0\xCEE\0\0\x03E\0\0\xB8D\0\0\x15E\0\0\xA9D\0\0\xFDD\0\0\xACD\0\0\xCCE\0\0\xCAE\0\0\xC8E\0\0\xC6E\0\0}E\0\0\xF6D\0\0\xB8E\0\0wE\0\0\xC4E\0\0\xC2E\0\0\xC0E\0\0\xBEE\0\0\xE0E\0\0\xDEE\0\0\xDCE\0\0\xDAE\0\0\xD8E\0\0\xD6E\0\0\xD4E\0\0\xD2E\0\0\xD0E\0\0\xCEE\0\0\x03E\0\0\xB8D\0\0\x15E\0\0\xA9D\0\0\xFDD\0\0\xACD\0\0\xCCE\0\0\xCAE\0\0\xC8E\0\0\xC6E\0\0}E\0\0\xF6D\0\0\xB8E\0\0wE\0\0\xC4E\0\0\xC2E\0\0\xC0E\0\0\xBEE\0\0}E\0\0\xF6D\0\0\xB8E\0\0wE\0\0\xBCE\0\0\xBAE\0\0hE\0\0\x8FE\0\0\x95E\0\0\xABD\0\0}E\0\0\xF6D\0\0\xB8E\0\0hE\0\0\xB6E'\x86%C'\x86%C\0\0\0\0\0\0\0\0\x01\0\xB3E\x01\0\xB0E\x01\0\xB0E\x01\0\xADE\x01\0\xAAE\x01\0\xA7E\x01\0\xA4E\x01\0\xA1E\x01\0\x9EE\x01\0\x9EE\x01\0\x9BE\x01\0\x98E\x01\0\x95E\x01\0\x92E\x01\0\x8FE\x01\0\x8CE\x01\0\x89E\x01\0\x86E\x01\0\x86E\x01\0\x83E\x01\0\x83E\x01\0\xAED\x01\0\x80E\x01\0\x80E\x01\0}E\x01\0zE\x01\0zE\x01\0wE\x01\0wE\x01\0tE\x01\0qE\x01\0nE\x01\0nE\x01\0kE\x01\0hE\x01\0\xB1D\x01\0\x94D\x01\0\x94D\x01\0eE\x01\0bE\x01\0_E\x01\0\\E\x01\0YE\x01\0YE\x01\0\xD8D\x01\0VE\x01\0\xD5D\x01\0SE\x01\0PE\x01\0ME\x01\0ME\x01\0JE\x01\0JE\x01\0GE\x01\0GE\x01\0DE\x01\0\x96D\x01\0AE\x01\0>E\x01\x003E\x01\0;E\x01\08E\0\0\0\0\0\0\0\0\x01\x005E\x01\x002E\x01\0/E\x01\0,E\x01\0)E\x01\0&E\x01\0&E\x01\0#E\x01\0 E\x01\0\x1DE\x01\0\xE0D\x01\0\xE0D\x01\0\x1AE\x01\0\x17E\x01\0\x14E\x01\0\x11E\x01\0\x0EE\x01\0\x0BE\x01\0\x08E\x01\0\x05E\x01\0\x02E\x01\0\xFFD\x01\0\xFCD\x01\0\xF9D\x01\0\xF6D\x01\0\xF3D\x01\0\xF0D\x01\0\xEDD\x01\0\xEAD\x01\0\xE7D\x01\0\xE4D\x01\0\xE1D\x01\0\xDED\x01\0\xDBD\x01\0\xD8D\x01\0\xD5D\x01\0\xD2D\x01\0\xCFD\x01\0\xC6D\x01\0\xCCD\x01\0\xC9D\x01\0\xB4D\x01\0\xC9D\x01\0\xC6D\x01\0\xC3D\x01\0\xC0D\x01\0\xBDD\x01\0\xBAD\x01\0\xB7D\x01\0\xB4D\x01\0\xB1D\x01\0\xAED\x01\0\xABD\x01\0\xA8D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xA5D\x01\0\xA2D\x02\0\x9ED\x02\0\x9AD\x02\0\x96D\x02\0\x92D\x02\0\x8ED\x02\0\x8AD\x02\0\x86D\x01\0\x83D\x01\0\0@\x06\0{D\x02\0wD\0\0\0\0\0\0\0\0\0\0\0\0,\0\0@\x010\0@\x020\0@:\0\0@;\0\0@!\0\0@?\0\0@\x160\0@\x170\0@\x01\0tD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0rD\x14 \0@\x13 \0@_\0\0@_\0\0@(\0\0@)\0\0@{\0\0@}\0\0@\x140\0@\x150\0@\x100\0@\x110\0@\n0\0@\x0B0\0@\x080\0@\t0\0@\x0C0\0@\r0\0@\x0E0\0@\x0F0\0@\0\0\0\0\0\0\0\0[\0\0@]\0\0@ \x80\x82A \x80\x82A \x80\x82A \x80\x82A_\0\0@_\0\0@_\0\0@,\0\0@\x010\0@.\0\0@\0\0\0\0;\0\0@:\0\0@?\0\0@!\0\0@\x14 \0@(\0\0@)\0\0@{\0\0@}\0\0@\x140\0@\x150\0@#\0\0@&\0\0@*\0\0@+\0\0@-\0\0@<\0\0@>\0\0@=\0\0@\0\0\0\0\\\0\0@$\0\0@%\0\0@@\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \x80%C@\x86%C \0&C\0\0\0\0 \x80&C\0\0\0\0 \0'C@\x06'C \x80'C@\x86'C \0(C@\x06(C \x80(C@\x86(C \0)C@\x06)C!\x06\0@'\x86)C'\x86)C'\x06*C'\x06*CH\x06*CH\x06*C'\x86*C'\x86*CJ\x06*CJ\x06*CJ\x06*CJ\x06*C'\x06\0@'\x06\0@(\x06\0@(\x06\0@(\x06\0@)\x06\0@)\x06\0@*\x06\0@*\x06\0@*\x06\0@*\x06\0@+\x06\0@+\x06\0@+\x06\0@+\x06\0@,\x06\0@,\x06\0@,\x06\0@-\x06\0@-\x06\0@-\x06\0@-\x06\0@.\x06\0@.\x06\0@.\x06\0@.\x06\0@/\x06\0@/\x06\0@0\x06\0@0\x06\0@1\x06\0@1\x06\0@2\x06\0@3\x06\0@3\x06\0@3\x06\0@3\x06\0@4\x06\0@4\x06\0@4\x06\0@4\x06\0@5\x06\0@5\x06\0@5\x06\0@5\x06\0@6\x06\0@6\x06\0@6\x06\0@7\x06\0@7\x06\0@7\x06\0@7\x06\0@8\x06\0@8\x06\0@8\x06\0@8\x06\0@9\x06\0@9\x06\0@9\x06\0@9\x06\0@:\x06\0@:\x06\0@:\x06\0@A\x06\0@A\x06\0@A\x06\0@A\x06\0@B\x06\0@B\x06\0@B\x06\0@B\x06\0@C\x06\0@C\x06\0@C\x06\0@C\x06\0@D\x06\0@D\x06\0@D\x06\0@E\x06\0@E\x06\0@E\x06\0@E\x06\0@F\x06\0@F\x06\0@F\x06\0@F\x06\0@G\x06\0@G\x06\0@G\x06\0@G\x06\0@H\x06\0@H\x06\0@I\x06\0@J\x06\0@J\x06\0@J\x06\0@J\x06\0@\x01\0oD\x01\0oD\x01\0lD\x01\0lD\x01\0iD\x01\0iD\0\0gD\0\0gD\0\0\0\0\0\0\0\0\0\0\0\0!\0\0@\"\0\0@#\0\0@$\0\0@%\0\0@&\0\0@'\0\0@(\0\0@)\0\0@*\0\0@+\0\0@,\0\0@-\0\0@.\0\0@/\0\0@0\0\0@1\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@:\0\0@;\0\0@<\0\0@=\0\0@>\0\0@?\0\0@@\0\0@A\0\0@B\0\0@C\0\0@D\0\0@E\0\0@F\0\0@G\0\0@H\0\0@I\0\0@J\0\0@K\0\0@L\0\0@M\0\0@N\0\0@O\0\0@P\0\0@Q\0\0@R\0\0@S\0\0@T\0\0@U\0\0@V\0\0@W\0\0@X\0\0@Y\0\0@Z\0\0@[\0\0@\\\0\0@]\0\0@^\0\0@_\0\0@`\0\0@a\0\0@b\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@o\0\0@p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@{\0\0@|\0\0@}\0\0@~\0\0@\x85)\0@\x86)\0@\x020\0@\x0C0\0@\r0\0@\x010\0@\xFB0\0@\xF20\0@\xA10\0@\xA30\0@\xA50\0@\xA70\0@\xA90\0@\xE30\0@\xE50\0@\xE70\0@\xC30\0@\xFC0\0@\xA20\0@\xA40\0@\xA60\0@\xA80\0@\xAA0\0@\xAB0\0@\xAD0\0@\xAF0\0@\xB10\0@\xB30\0@\xB50\0@\xB70\0@\xB90\0@\xBB0\0@\xBD0\0@\xDF0\0@\xE00\0@\xE10\0@\xE20\0@\xE40\0@\xE60\0@\xE80\0@\xE90\0@\xEA0\0@\xEB0\0@\xEC0\0@\xED0\0@\xEF0\0@\xF30\0@\0\xD9\0\xC0\0\xD9\0\xC0`\x11\0@\0\x11\0@\x01\x11\0@\xAA\x11\0\xC0\x02\x11\0@\xAC\x11\0\xC0\xAD\x11\0\xC0\x03\x11\0@\x04\x11\0@\x05\x11\0@\xB0\x11\0\xC0\xB1\x11\0\xC0\xB2\x11\0\xC0\xB3\x11\0\xC0\xB4\x11\0\xC0\xB5\x11\0\xC0\x1A\x11\0@\x06\x11\0@\x07\x11\0@\x08\x11\0@!\x11\0@\t\x11\0@\n\x11\0@\x0B\x11\0@\x0C\x11\0@\r\x11\0@\x0E\x11\0@\x0F\x11\0@\x10\x11\0@\x11\x11\0@\x12\x11\0@\0\0\0\0\0\0\0\0a\x11\0\xC0b\x11\0\xC0c\x11\0\xC0d\x11\0\xC0e\x11\0\xC0f\x11\0\xC0\0\0\0\0\0\0\0\0g\x11\0\xC0h\x11\0\xC0i\x11\0\xC0j\x11\0\xC0k\x11\0\xC0l\x11\0\xC0\0\0\0\0\0\0\0\0m\x11\0\xC0n\x11\0\xC0o\x11\0\xC0p\x11\0\xC0q\x11\0\xC0r\x11\0\xC0\0\0\0\0\0\0\0\0s\x11\0\xC0t\x11\0\xC0u\x11\0\xC0\0\0\0\0\0\0\0\0\0\0\0\0\xA2\0\0@\xA3\0\0@\xAC\0\0@ \0\x82A\xA6\0\0@\xA5\0\0@\xA9 \0@\0\0\0\0\x02%\0@\x90!\0@\x91!\0@\x92!\0@\x93!\0@\xA0%\0@\xCB%\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xBF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xBD\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD0\x02\0@\xD1\x02\0@\xE6\0\0@\x99\x02\0@S\x02\0@\0\0\0\0\xA3\x02\0@f\xAB\0@\xA5\x02\0@\xA4\x02\0@V\x02\0@W\x02\0@\x91\x1D\0@X\x02\0@^\x02\0@\xA9\x02\0@d\x02\0@b\x02\0@`\x02\0@\x9B\x02\0@'\x01\0@\x9C\x02\0@g\x02\0@\x84\x02\0@\xAA\x02\0@\xAB\x02\0@l\x02\0@\x10\0TM\x8E\xA7\0@n\x02\0@\x10\0SM\x8E\x02\0@\x10\0RM\xF8\0\0@v\x02\0@w\x02\0@q\0\0@z\x02\0@\x10\0QM}\x02\0@~\x02\0@\x80\x02\0@\xA8\x02\0@\xA6\x02\0@g\xAB\0@\xA7\x02\0@\x88\x02\0@q,\0@\0\0\0\0\x8F\x02\0@\xA1\x02\0@\xA2\x02\0@\x98\x02\0@\xC0\x01\0@\xC1\x01\0@\xC2\x01\0@\x10\0PM\x10\0OM\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\x01\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xBB\x03\0\0\0\0\x11\0\xB9\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xB7\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xB5\x03\x01\0\xB3\x03\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xB1\x03\x01\0\xAF\x03\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xAD\x03\0\0\0\0\x01\0\xAB\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xA9\x03\0\0\0\0\x01\0\xA7\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\x01\0\xA5\x83\0\0\0\0\x01\0\xA3\x83\x01\0\xA1\x83\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\x9F\x03\x01\0\x9D\x03\0\0\0\x80\x01\0\x9B\x03\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x99\x03\x01\0\x97\x03\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x95\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\x01\0\x8C\x83\x01\0\x8F\x83\x01\0\x93\x83\x01\0\x90\x83\x01\0\x8D\x83\x02\0\x92\x83\x02\0\x8F\x83\x02\0\x8C\x83\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\x8A\x83\x01\0\x89\x03\x02\0\x89\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\xD8\0\x80\x06\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\0\0@B\0\0@C\0\0@D\0\0@E\0\0@F\0\0@G\0\0@H\0\0@I\0\0@J\0\0@0\0\0@1\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\x87C\x11\0xC\x12\0\x84C\x12\0\x81C\x12\0~C\x12\0{C\x12\0xC\xD8\xD8\0\x80\xD8\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE2\xD8\0\x80\xD8\xD8\0\x80\xD8\xD8\0\x80\xD8\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0oC\x11\0lC\x12\0uC\x12\0rC\x12\0oC\x12\0lC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\0\0@x\0\0@y\0\0@z\0\0@A\0\0@B\0\0@C\0\0@D\0\0@E\0\0@F\0\0@G\0\0@H\0\0@I\0\0@J\0\0@K\0\0@L\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@\0\0\0\0i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@o\0\0@p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@A\0\0@B\0\0@C\0\0@D\0\0@E\0\0@F\0\0@G\0\0@H\0\0@o\0\0@p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@A\0\0@\0\0\0\0C\0\0@D\0\0@\0\0\0\0\0\0\0\0G\0\0@\0\0\0\0\0\0\0\0J\0\0@K\0\0@\0\0\0\0\0\0\0\0N\0\0@O\0\0@P\0\0@Q\0\0@\0\0\0\0S\0\0@T\0\0@U\0\0@V\0\0@W\0\0@X\0\0@Y\0\0@Z\0\0@a\0\0@b\0\0@c\0\0@d\0\0@\0\0\0\0f\0\0@\0\0\0\0h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@\0\0\0\0p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@A\0\0@B\0\0@\0\0\0\0D\0\0@E\0\0@F\0\0@G\0\0@\0\0\0\0\0\0\0\0J\0\0@K\0\0@L\0\0@M\0\0@N\0\0@O\0\0@P\0\0@Q\0\0@\0\0\0\0S\0\0@T\0\0@U\0\0@V\0\0@W\0\0@X\0\0@Y\0\0@\0\0\0\0a\0\0@b\0\0@I\0\0@J\0\0@K\0\0@L\0\0@M\0\0@\0\0\0\0O\0\0@\0\0\0\0\0\0\0\0\0\0\0\0S\0\0@T\0\0@U\0\0@V\0\0@W\0\0@X\0\0@Y\0\0@\0\0\0\0a\0\0@b\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@w\0\0@x\0\0@y\0\0@z\0\0@1\x01\0@7\x02\0@\0\0\0\0\0\0\0\0\x91\x03\0@\x92\x03\0@\x93\x03\0@\x94\x03\0@\x95\x03\0@\x96\x03\0@\x97\x03\0@\x98\x03\0@\x99\x03\0@\x9A\x03\0@\x9B\x03\0@\x9C\x03\0@\x9D\x03\0@\x9E\x03\0@\x9F\x03\0@\xA0\x03\0@\xA1\x03\0@\x98\x03\0@\xA3\x03\0@\xA4\x03\0@\xA5\x03\0@\xA6\x03\0@\xA7\x03\0@\xA8\x03\0@\xA9\x03\0@\x07\"\0@\xB1\x03\0@\xB2\x03\0@\xB3\x03\0@\xB4\x03\0@\xB5\x03\0@\xB6\x03\0@\xB7\x03\0@\xB8\x03\0@\xB9\x03\0@\xBA\x03\0@\xBB\x03\0@\xBC\x03\0@\xBD\x03\0@\xBE\x03\0@\xBF\x03\0@\xC0\x03\0@\xC1\x03\0@\xC2\x03\0@\xC3\x03\0@\xC4\x03\0@\xC5\x03\0@\xC6\x03\0@\xC7\x03\0@\xC8\x03\0@\xC9\x03\0@\x02\"\0@\xB5\x03\0@\xB8\x03\0@\xBA\x03\0@\xC6\x03\0@\xC1\x03\0@\xC0\x03\0@\x91\x03\0@\x92\x03\0@\x93\x03\0@\x94\x03\0@\x95\x03\0@\x96\x03\0@\x97\x03\0@\x98\x03\0@\x99\x03\0@\x9A\x03\0@\x9B\x03\0@\x9C\x03\0@\x9D\x03\0@\x9E\x03\0@\xC7\x03\0@\xC8\x03\0@\xC9\x03\0@\x02\"\0@\xB5\x03\0@\xB8\x03\0@\xBA\x03\0@\xC6\x03\0@\xC1\x03\0@\xC0\x03\0@\xDC\x03\0@\xDD\x03\0@\0\0\0\0\0\0\0\x000\0\0@1\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@0\0\0@1\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@0\0\0@1\0\0@2\0\0@3\0\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x04\0@1\x04\0@2\x04\0@3\x04\0@4\x04\0@5\x04\0@6\x04\0@7\x04\0@8\x04\0@:\x04\0@;\x04\0@<\x04\0@>\x04\0@?\x04\0@@\x04\0@A\x04\0@B\x04\0@C\x04\0@D\x04\0@E\x04\0@F\x04\0@G\x04\0@H\x04\0@K\x04\0@M\x04\0@N\x04\0@\x89\xA6\0@\xD9\x04\0@V\x04\0@X\x04\0@\xE9\x04\0@\xAF\x04\0@\xCF\x04\0@0\x04\0@1\x04\0@2\x04\0@3\x04\0@4\x04\0@5\x04\0@6\x04\0@7\x04\0@8\x04\0@:\x04\0@;\x04\0@>\x04\0@?\x04\0@A\x04\0@C\x04\0@D\x04\0@E\x04\0@F\x04\0@G\x04\0@H\x04\0@J\x04\0@K\x04\0@\x91\x04\0@V\x04\0@U\x04\0@_\x04\0@\xAB\x04\0@Q\xA6\0@\xB1\x04\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE8\xD8\0\x80\xE8\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'\x06\0@(\x06\0@,\x06\0@/\x06\0@\0\0\0\0H\x06\0@2\x06\0@-\x06\0@7\x06\0@J\x06\0@C\x06\0@D\x06\0@E\x06\0@F\x06\0@3\x06\0@9\x06\0@A\x06\0@5\x06\0@B\x06\0@1\x06\0@4\x06\0@*\x06\0@+\x06\0@.\x06\0@0\x06\0@6\x06\0@8\x06\0@:\x06\0@n\x06\0@\xBA\x06\0@\xA1\x06\0@o\x06\0@\0\0\0\0(\x06\0@,\x06\0@\0\0\0\0G\x06\0@\0\0\0\0\0\0\0\0-\x06\0@\0\0\0\0J\x06\0@C\x06\0@D\x06\0@E\x06\0@F\x06\0@3\x06\0@9\x06\0@A\x06\0@5\x06\0@B\x06\0@\0\0\0\x004\x06\0@*\x06\0@+\x06\0@.\x06\0@\0\0\0\x006\x06\0@\0\0\0\0:\x06\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\x06\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0-\x06\0@\0\0\0\0J\x06\0@\0\0\0\0D\x06\0@\0\0\0\0F\x06\0@3\x06\0@9\x06\0@\0\0\0\x005\x06\0@B\x06\0@\0\0\0\x004\x06\0@\0\0\0\0\0\0\0\0.\x06\0@\0\0\0\x006\x06\0@\0\0\0\0:\x06\0@\0\0\0\0\xBA\x06\0@\0\0\0\0o\x06\0@\0\0\0\0(\x06\0@,\x06\0@\0\0\0\0G\x06\0@\0\0\0\0\0\0\0\0-\x06\0@7\x06\0@J\x06\0@C\x06\0@\0\0\0\0E\x06\0@F\x06\0@3\x06\0@9\x06\0@A\x06\0@5\x06\0@B\x06\0@\0\0\0\x004\x06\0@*\x06\0@+\x06\0@.\x06\0@\0\0\0\x006\x06\0@8\x06\0@:\x06\0@n\x06\0@\0\0\0\0\xA1\x06\0@\0\0\0\0'\x06\0@(\x06\0@,\x06\0@/\x06\0@G\x06\0@H\x06\0@2\x06\0@-\x06\0@7\x06\0@J\x06\0@\0\0\0\0D\x06\0@E\x06\0@F\x06\0@3\x06\0@9\x06\0@A\x06\0@5\x06\0@B\x06\0@1\x06\0@4\x06\0@*\x06\0@+\x06\0@.\x06\0@0\x06\0@6\x06\0@8\x06\0@:\x06\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\x06\0@,\x06\0@/\x06\0@\0\0\0\0H\x06\0@2\x06\0@-\x06\0@7\x06\0@J\x06\0@\0\0\0\0D\x06\0@E\x06\0@F\x06\0@3\x06\0@9\x06\0@\0\0eD\0\0cD\0\0aD\0\0_D\0\0]D\0\0[D\0\0YD\0\0WD\0\0UD\0\0SD\0\0QD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0ND\x01\0KD\x01\0HD\x01\0ED\x01\0BD\x01\0?D\x01\0<D\x01\09D\x01\x006D\x01\x003D\x01\x000D\x01\0-D\x01\0*D\x01\0'D\x01\0$D\x01\0!D\x01\0\x1ED\x01\0\x1BD\x01\0\x18D\x01\0\x15D\x01\0\x12D\x01\0\x0FD\x01\0\x0CD\x01\0\tD\x01\0\x06D\x01\0\x03D\x01\0\0DC\0\0@R\0\0@\0\0\xFEC\0\0\xFCC\0\0\0\0Q\0\0@R\0\0@S\0\0@T\0\0@U\0\0@V\0\0@W\0\0@X\0\0@Y\0\0@Z\0\0@\0\0\xFAC\0\0\xF8C\0\0\xF6C\0\0\xF4C\x01\0\xF1C\0\0\xEFC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEDC\0\0\xEBC\0\0\xE9C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE7C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE5C\0\0\xE3C\xB50\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Kb\0@W[\0@\xCCS\0@\xC6\xB0LX\x8CN\0@\x1AY\0@\xE3\x89\0@)Y\0@\xA4N\0@ f\0@!q\0@\x99e\0@MR\0@\x8C_\0@\x8DQ\0@\xB0e\0@\x1DR\0@B}\0@\x1Fu\0@\xA9\x8C\0@\xF0X\0@9T\0@\x14o\0@\x95b\0@Uc\0@\0N\0@\tN\0@J\x90\0@\xE6]\0@-N\0@\xF3S\0@\x07c\0@p\x8D\0@Sb\0@\x81y\0@zz\0@\x08T\0@\x80n\0@\tg\0@\x08g\0@3u\0@rR\0@\xB6U\0@M\x91\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xE0C\x01\0\xDDC\x01\0\xDAC\x01\0\xD7C\x01\0\xD4C\x01\0\xD1C\x01\0\xCEC\x01\0\xCBC\x01\0\xC8C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97_\0@\xEFS\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=N\0@8N\0@AN\0@\x10\0kC`O\0@\xAEO\0@\xBBO\0@\x02P\0@zP\0@\x99P\0@\xE7P\0@\xCFP\0@\x9E4\0@\x10\0jCMQ\0@TQ\0@dQ\0@wQ\0@\x10\0iC\xB94\0@gQ\0@\x8DQ\0@\x10\0hC\x97Q\0@\xA4Q\0@\xCCN\0@\xACQ\0@\xB5Q\0@\x10\0gC\xF5Q\0@\x03R\0@\xDF4\0@;R\0@FR\0@rR\0@wR\0@\x155\0@\xC7R\0@\xC9R\0@\xE4R\0@\xFAR\0@\x05S\0@\x06S\0@\x17S\0@IS\0@QS\0@ZS\0@sS\0@}S\0@\x7FS\0@\x7FS\0@\x7FS\0@\x10\0fCpp\0@\xCAS\0@\xDFS\0@\x10\0eC\xEBS\0@\xF1S\0@\x06T\0@\x9ET\0@8T\0@HT\0@hT\0@\xA2T\0@\xF6T\0@\x10U\0@SU\0@cU\0@\x84U\0@\x84U\0@\x99U\0@\xABU\0@\xB3U\0@\xC2U\0@\x16W\0@\x06V\0@\x17W\0@QV\0@tV\0@\x07R\0@\xEEX\0@\xCEW\0@\xF4W\0@\rX\0@\x8BW\0@2X\0@1X\0@\xACX\0@\x10\0dC\xF2X\0@\xF7X\0@\x06Y\0@\x1AY\0@\"Y\0@bY\0@\x10\0cC\x10\0bC\xECY\0@\x1BZ\0@'Z\0@\xD8Y\0@fZ\0@\xEE6\0@\xFC6\0@\x08[\0@>[\0@>[\0@\x10\0aC\xC3[\0@\xD8[\0@\xE7[\0@\xF3[\0@\x10\0`C\xFF[\0@\x06\\\0@S_\0@\"\\\0@\x817\0@`\\\0@n\\\0@\xC0\\\0@\x8D\\\0@\x10\0_CC]\0@\x10\0^Cn]\0@k]\0@|]\0@\xE1]\0@\xE2]\0@/8\0@\xFD]\0@(^\0@=^\0@i^\0@b8\0@\x10\0]C|8\0@\xB0^\0@\xB3^\0@\xB6^\0@\xCA^\0@\x10\0\\C\xFE^\0@\x10\0[C\x10\0[C\x01\x82\0@\"_\0@\"_\0@\xC78\0@\x10\0ZC\x10\0YCb_\0@k_\0@\xE38\0@\x9A_\0@\xCD_\0@\xD7_\0@\xF9_\0@\x81`\0@:9\0@\x1C9\0@\x94`\0@\x10\0XC\xC7`\0@Ha\0@La\0@Na\0@La\0@za\0@\x8Ea\0@\xB2a\0@\xA4a\0@\xAFa\0@\xDEa\0@\xF2a\0@\xF6a\0@\x10b\0@\x1Bb\0@]b\0@\xB1b\0@\xD4b\0@Pc\0@\x10\0WC=c\0@\xFCb\0@hc\0@\x83c\0@\xE4c\0@\x10\0VC\"d\0@\xC5c\0@\xA9c\0@.:\0@id\0@~d\0@\x9Dd\0@wd\0@l:\0@Oe\0@le\0@\x10\0UC\xE3e\0@\xF8f\0@If\0@\x19;\0@\x91f\0@\x08;\0@\xE4:\0@\x92Q\0@\x95Q\0@\0g\0@\x9Cf\0@\xAD\x80\0@\xD9C\0@\x17g\0@\x1Bg\0@!g\0@^g\0@Sg\0@\x10\0TCI;\0@\xFAg\0@\x85g\0@Rh\0@\x85h\0@\x10\0SC\x8Eh\0@\x1Fh\0@\x14i\0@\x9D;\0@Bi\0@\xA3i\0@\xEAi\0@\xA8j\0@\x10\0RC\xDBj\0@\x18<\0@!k\0@\x10\0QCTk\0@N<\0@rk\0@\x9Fk\0@\xBAk\0@\xBBk\0@\x10\0PC\x10\0OC\x10\0NCNl\0@\x10\0MC\xBFl\0@\xCDl\0@gl\0@\x16m\0@>m\0@wm\0@Am\0@im\0@xm\0@\x85m\0@\x10\0LC4m\0@/n\0@nn\0@3=\0@\xCBn\0@\xC7n\0@\x10\0KC\xF9m\0@no\0@\x10\0JC\x10\0IC\xC6o\0@9p\0@\x1Ep\0@\x1Bp\0@\x96=\0@Jp\0@}p\0@wp\0@\xADp\0@\x10\0HCEq\0@\x10\0GC\x9Cq\0@\x10\0FC(r\0@5r\0@Pr\0@\x10\0EC\x80r\0@\x95r\0@\x10\0DC\x10\0CCzs\0@\x8Bs\0@\xAC>\0@\xA5s\0@\xB8>\0@\xB8>\0@Gt\0@\\t\0@qt\0@\x85t\0@\xCAt\0@\x1B?\0@$u\0@\x10\0BC>u\0@\x10\0ACpu\0@\x10\0@C\x10v\0@\x10\0?C\x10\0>C\x10\0=C\xFC?\0@\x08@\0@\xF4v\0@\x10\0<C\x10\0;C\x10\0:C\x10\09C\x1Ew\0@\x1Fw\0@\x1Fw\0@Jw\0@9@\0@\x8Bw\0@F@\0@\x96@\0@\x10\08CNx\0@\x8Cx\0@\xCCx\0@\xE3@\0@\x10\x007CVy\0@\x10\x006C\x10\x005C\x8Fy\0@\xEBy\0@/A\0@@z\0@Jz\0@Oz\0@\x10\x004C\x10\x003C\x10\x003C\xEEz\0@\x02B\0@\x10\x002C\xC6{\0@\xC9{\0@'B\0@\x10\x001C\xD2|\0@\xA0B\0@\xE8|\0@\xE3|\0@\0}\0@\x10\x000Cc}\0@\x01C\0@\xC7}\0@\x02~\0@E~\0@4C\0@\x10\0/C\x10\0.CYC\0@\x10\0-Cz\x7F\0@\x10\0,C\x95\x7F\0@\xFA\x7F\0@\x05\x80\0@\x10\0+C\x10\0*C`\x80\0@\x10\0)Cp\x80\0@\x10\0(C\xD5C\0@\xB2\x80\0@\x03\x81\0@\x0BD\0@>\x81\0@\xB5Z\0@\x10\0'C\x10\0&C\x10\0%C\x10\0$C\x01\x82\0@\x04\x82\0@\x9E\x8F\0@kD\0@\x91\x82\0@\x8B\x82\0@\x9D\x82\0@\xB3R\0@\xB1\x82\0@\xB3\x82\0@\xBD\x82\0@\xE6\x82\0@\x10\0#C\xE5\x82\0@\x1D\x83\0@c\x83\0@\xAD\x83\0@#\x83\0@\xBD\x83\0@\xE7\x83\0@W\x84\0@S\x83\0@\xCA\x83\0@\xCC\x83\0@\xDC\x83\0@\x10\0\"C\x10\0!C\x10\0 C+E\0@\xF1\x84\0@\xF3\x84\0@\x16\x85\0@\x10\0\x1FCd\x85\0@\x10\0\x1EC]E\0@aE\0@\x10\0\x1DC\x10\0\x1CCkE\0@P\x86\0@\\\x86\0@g\x86\0@i\x86\0@\xA9\x86\0@\x88\x86\0@\x0E\x87\0@\xE2\x86\0@y\x87\0@(\x87\0@k\x87\0@\x86\x87\0@\xD7E\0@\xE1\x87\0@\x01\x88\0@\xF9E\0@`\x88\0@c\x88\0@\x10\0\x1BC\xD7\x88\0@\xDE\x88\0@5F\0@\xFA\x88\0@\xBB4\0@\x10\0\x1AC\x10\0\x19C\xBEF\0@\xC7F\0@\xA0\x8A\0@\xED\x8A\0@\x8A\x8B\0@U\x8C\0@\x10\0\x18C\xAB\x8C\0@\xC1\x8C\0@\x1B\x8D\0@w\x8D\0@\x10\0\x17C\x10\0\x16C\xCB\x8D\0@\xBC\x8D\0@\xF0\x8D\0@\x10\0\x15C\xD4\x8E\0@8\x8F\0@\x10\0\x14C\x10\0\x13C\x94\x90\0@\xF1\x90\0@\x11\x91\0@\x10\0\x12C\x1B\x91\0@8\x92\0@\xD7\x92\0@\xD8\x92\0@|\x92\0@\xF9\x93\0@\x15\x94\0@\x10\0\x11C\x8B\x95\0@\x95I\0@\xB7\x95\0@\x10\0\x10C\xE6I\0@\xC3\x96\0@\xB2]\0@#\x97\0@\x10\0\x0FC\x10\0\x0ECnJ\0@vJ\0@\xE0\x97\0@\x10\0\rC\xB2J\0@\x10\0\x0CC\x0B\x98\0@\x0B\x98\0@)\x98\0@\x10\0\x0BC\xE2\x98\0@3K\0@)\x99\0@\xA7\x99\0@\xC2\x99\0@\xFE\x99\0@\xCEK\0@\x10\0\nC\x12\x9B\0@@\x9C\0@\xFD\x9C\0@\xCEL\0@\xEDL\0@g\x9D\0@\x10\0\tC\xF8L\0@\x10\0\x08C\x10\0\x07C\x10\0\x06C\xBB\x9E\0@VM\0@\xF9\x9E\0@\xFE\x9E\0@\x05\x9F\0@\x0F\x9F\0@\x16\x9F\0@;\x9F\0@\x10\0\x05C\0\0\0\0\0\0\0\0") }, 0u32), passthrough_cap: 160u16 };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::normalizer::provider::NormalizerNfkdDataV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::normalizer::provider::NormalizerNfkdDataV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_NORMALIZER_NFKD_DATA_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfkdDataV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_normalizer_nfkd_data_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfkdDataV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_normalizer_nfkd_data_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfkdDataV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfkdDataV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_normalizer_nfkd_data_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfkdDataV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfkdDataV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfkdDataV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_normalizer_nfkd_data_v1 as impl_normalizer_nfkd_data_v1;
diff --git a/vendor/icu_normalizer_data/data/normalizer_nfkd_tables_v1.rs.data b/vendor/icu_normalizer_data/data/normalizer_nfkd_tables_v1.rs.data
new file mode 100644
index 00000000..00449850
--- /dev/null
+++ b/vendor/icu_normalizer_data/data/normalizer_nfkd_tables_v1.rs.data
@@ -0,0 +1,75 @@
+// @generated
+/// Implement `DataProvider<NormalizerNfkdTablesV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 5790B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_normalizer_nfkd_tables_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_NORMALIZER_NFKD_TABLES_V1: &'static <icu::normalizer::provider::NormalizerNfkdTablesV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::normalizer::provider::DecompositionTables { scalars16: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x140We\x150\x140\xDDR\x150\x140\xD7v\x150\x140Sb\x150\x140\xB9p\x150\x140\x89[\x150\x140\x8CN\x150\x140\tN\x150\x140,g\x150\xB30\xB30{0K0D\0J\0M\0R\0M\0D\0M\0C\0W\0C\0P\0P\0V\0S\0S\0S\0D\0M\0V\0H\0V\0W\0Z\0C\0D\0\x140S\0\x150(\0Z\0)\0(\0Y\0)\0(\0X\0)\0(\0W\0)\0(\0V\0)\0(\0U\0)\0(\0T\0)\0(\0S\0)\0(\0R\0)\0(\0Q\0)\0(\0P\0)\0(\0O\0)\0(\0N\0)\0(\0M\0)\0(\0L\0)\0(\0K\0)\0(\0J\0)\0(\0I\0)\0(\0H\0)\0(\0G\0)\0(\0F\0)\0(\0E\0)\0(\0D\0)\0(\0C\0)\0(\0B\0)\0(\0A\0)\09\0,\08\0,\x007\0,\x006\0,\x005\0,\x004\0,\x003\0,\x002\0,\x001\0,\x000\0,\x000\0.\0D\x06'\x06D\x06'\x06U\x06D\x06'\x06T\x06D\x06'\x06S\x06.\0.\0.\0.\0.\x001\x06\xCC\x06'\x06D\x06,\x06D\x06 \0,\x06D\x06'\x06D\x06G\x065\x06D\x06I\x06H\x063\x06D\x06E\x069\x06D\x06J\x06G\x061\x063\x06H\x06D\x065\x06D\x069\x06E\x06E\x06-\x06E\x06/\x06'\x06C\x06(\x061\x06'\x06D\x06D\x06G\x06B\x06D\x06\xD2\x065\x06D\x06\xD2\x06F\x06,\x06J\x063\x06.\x06J\x065\x06E\x06E\x069\x06,\x06E\x06C\x06E\x06E\x06(\x06-\x06J\x06A\x06E\x06J\x06E\x06,\x06J\x06-\x06,\x06J\x06,\x06-\x06J\x06F\x06,\x06-\x06D\x06,\x06E\x06E\x06.\x06J\x06C\x06E\x06J\x069\x06E\x06J\x06D\x06-\x06E\x06B\x06E\x06-\x06F\x06-\x06J\x06B\x06E\x06J\x06E\x06E\x06J\x06J\x06E\x06J\x06J\x06,\x06J\x06J\x06-\x06J\x06D\x06E\x06J\x06D\x06,\x06J\x066\x06-\x06J\x064\x06-\x06J\x065\x06-\x06J\x063\x06.\x06I\x06,\x06E\x06I\x06,\x06-\x06I\x06,\x06E\x06J\x06*\x06E\x06I\x06*\x06E\x06J\x06*\x06.\x06I\x06*\x06.\x06J\x06*\x06,\x06I\x06*\x06,\x06J\x06(\x06.\x06J\x06F\x06E\x06I\x06F\x06E\x06J\x06F\x06,\x06I\x06F\x06,\x06E\x06F\x06-\x06I\x06F\x06-\x06E\x06G\x06E\x06E\x06G\x06E\x06,\x06E\x06,\x06.\x06E\x06.\x06E\x06E\x06.\x06,\x06E\x06,\x06-\x06E\x06-\x06J\x06E\x06-\x06,\x06D\x06E\x06-\x06D\x06.\x06E\x06D\x06,\x06,\x06D\x06-\x06I\x06D\x06-\x06J\x06B\x06E\x06E\x06A\x06.\x06E\x06:\x06E\x06I\x06:\x06E\x06J\x06:\x06E\x06E\x069\x06E\x06I\x067\x06E\x06J\x067\x06E\x06E\x067\x06E\x06-\x066\x06.\x06E\x066\x06-\x06I\x064\x06E\x06E\x064\x06E\x06.\x064\x06,\x06J\x064\x06-\x06E\x065\x06-\x06-\x063\x06E\x06E\x063\x06E\x06,\x063\x06E\x06-\x063\x06,\x06I\x063\x06,\x06-\x063\x06-\x06,\x06-\x06E\x06I\x06-\x06E\x06J\x06,\x06E\x06-\x06*\x06E\x06.\x06*\x06E\x06-\x06*\x06E\x06,\x06*\x06.\x06E\x06*\x06-\x06E\x06*\x06-\x06,\x06*\x06,\x06E\x068\x06E\x064\x06.\x064\x06G\x063\x06G\x066\x061\x065\x061\x063\x061\x064\x061\x066\x06J\x066\x06I\x065\x06J\x065\x06I\x064\x06J\x064\x06I\x063\x06J\x063\x06I\x06:\x06J\x06:\x06I\x069\x06J\x069\x06I\x067\x06J\x067\x06I\x06@\x06P\x06Q\x06@\x06O\x06Q\x06@\x06N\x06Q\x06F\x06G\x06C\x06D\x06+\x06G\x06+\x06E\x06*\x06G\x06(\x06G\x06(\x06E\x06J\x06T\x06G\x06J\x06T\x06E\x06J\x06.\x06G\x06,\x06F\x06.\x06C\x06.\x06C\x06-\x06C\x06,\x06B\x06-\x06A\x06-\x06A\x06,\x06:\x06,\x067\x06-\x066\x06E\x066\x06,\x065\x06.\x06(\x06,\x06J\x06T\x06.\x06J\x06T\x06-\x06J\x06T\x06,\x06J\x06I\x06J\x062\x06J\x061\x06F\x06J\x06F\x06I\x06F\x06F\x06F\x062\x06F\x061\x06E\x06'\x06C\x06J\x06C\x06I\x06C\x06'\x06B\x06J\x06B\x06I\x06A\x06J\x06A\x06I\x06+\x06J\x06+\x06I\x06+\x06F\x06+\x062\x06+\x061\x06*\x06J\x06*\x06I\x06*\x06F\x06*\x062\x06*\x061\x06(\x06J\x06(\x06I\x06(\x06F\x06(\x062\x06J\x06T\x06J\x06J\x06T\x06I\x06J\x06T\x06F\x06J\x06T\x062\x06J\x06T\x061\x06 \0Q\x06p\x06 \0P\x06Q\x06 \0O\x06Q\x06 \0N\x06Q\x06 \0M\x06Q\x06 \0L\x06Q\x06G\x06I\x06.\x06-\x06+\x06,\x06J\x06T\x06\xD0\x06J\x06T\x06\xC8\x06J\x06T\x06\xC6\x06J\x06T\x06\xC7\x06J\x06T\x06H\x06J\x06T\x06\xD5\x06J\x06T\x06'\x06\xC7\x06t\x06\xD0\x05\xDC\x05t\x05m\x05~\x05v\x05t\x05k\x05t\x05e\x05t\x05v\x05s\0t\0f\0f\0l\0f\0f\0i\0g\0a\0l\x003\x001\0\xE5e3\x000\0\xE5e2\09\0\xE5e2\08\0\xE5e2\x007\0\xE5e2\x006\0\xE5e2\x005\0\xE5e2\x004\0\xE5e2\x003\0\xE5e2\x002\0\xE5e2\x001\0\xE5e2\x000\0\xE5e1\09\0\xE5e1\08\0\xE5e1\x007\0\xE5e1\x006\0\xE5e1\x005\0\xE5e1\x004\0\xE5e1\x003\0\xE5e1\x002\0\xE5e1\x001\0\xE5e1\x000\0\xE5eA\0\x15\"m\0V\0\x15\"m\0W\0b\0S\0v\0s\0r\0P\0R\0P\0P\0M\0p\0.\0m\0.\0P\0H\0m\0o\0l\0m\0i\0l\0m\0b\0l\0x\0l\0o\0g\0l\0n\0k\0t\0K\0M\0K\0K\0i\0n\0H\0P\0h\0a\0G\0y\0d\0B\0C\0o\0.\0C\0\x15\"k\0g\0c\0d\0c\0c\0B\0q\0a\0.\0m\0.\0M\0\xA9\x03k\0\xA9\x03M\0W\0k\0W\0\xBC\x03W\0n\0W\0p\0W\0k\0V\0\xBC\x03V\0n\0V\0p\0V\0m\0s\0\xBC\x03s\0n\0s\0p\0s\0r\0a\0d\0\x15\"s\x002\0G\0P\0a\0M\0P\0a\0k\0P\0a\0m\0\x15\"s\x002\0k\0m\x003\0c\0m\x003\0m\0m\x003\0k\0m\x002\0c\0m\x002\0m\0m\x002\0\xBC\x03m\0n\0m\0f\0m\0k\0l\0d\0l\0m\0l\0\xBC\x03l\0T\0H\0z\0G\0H\0z\0M\0H\0z\0k\0H\0z\0m\0g\0\xBC\x03g\0\xBC\x03F\0n\0F\0p\0F\0k\0c\0a\0l\0G\0B\0M\0B\0K\0B\0k\0A\0m\0A\0\xBC\x03A\0n\0A\0p\0A\0*h\x0F_\x1AO>y\x0Ef\xBBl'Yck-f\x8CTs^\x10bI\0U\0d\0m\x003\0d\0m\x002\0p\0c\0o\0V\0b\0a\0r\0A\0U\0d\0a\0h\0P\0a\x002\x004\0\xB9p2\x003\0\xB9p2\x002\0\xB9p2\x001\0\xB9p2\x000\0\xB9p1\09\0\xB9p1\08\0\xB9p1\x007\0\xB9p1\x006\0\xB9p1\x005\0\xB9p1\x004\0\xB9p1\x003\0\xB9p1\x002\0\xB9p1\x001\0\xB9p1\x000\0\xB9p\xEF0\xC30\xC80\xEC0\xF30\xC80\xB10\x990\xF30\xEC0\xE00\xEB0\xFC0\xD50\x990\xEB0\xEB0\xD20\x9A0\xFC0\xEA0\xE90\xEA0\xC30\xC80\xEB0\xE60\xA20\xF30\xE40\xFC0\xEB0\xE40\xFC0\xC80\x990\xE10\xFC0\xC80\xEB0\xE10\xAB0\x990\xC80\xF30\xDF0\xEA0\xCF0\x990\xFC0\xEB0\xDF0\xAF0\xED0\xF30\xDE0\xF30\xB70\xE70\xF30\xDE0\xEB0\xAF0\xDE0\xC30\xCF0\xDE0\xA40\xEB0\xDE0\xA40\xAF0\xED0\xDB0\xFC0\xF30\xDB0\xFC0\xEB0\xDB0\x9A0\xF30\xC80\x990\xDB0\xF30\xDB0\x990\xEB0\xC80\xDB0\x9A0\xA40\xF30\xC80\xD80\x990\xFC0\xBF0\xD80\x9A0\xFC0\xB70\x990\xD80\x9A0\xF30\xB90\xD80\xEB0\xC40\xD80\x9A0\xCB0\xD20\xD80\x9A0\xBD0\xD80\xAF0\xBF0\xFC0\xEB0\xD50\xE90\xF30\xD50\x990\xC30\xB70\xA70\xEB0\xD50\xA30\xFC0\xC80\xD50\xA10\xE90\xC30\xC80\x990\xD20\x990\xEB0\xD20\x9A0\xB30\xD20\x9A0\xAF0\xEB0\xD20\x9A0\xA20\xB90\xC80\xEB0\xCF0\x990\xFC0\xEC0\xEB0\xCF0\x9A0\xFC0\xC40\xCF0\x9A0\xFC0\xBB0\xF30\xC80\xCF0\xA40\xC40\xCE0\xC30\xC80\xCA0\xCE0\xC80\x990\xEB0\xC60\x990\xB70\xBF0\x990\xFC0\xB90\xBB0\xF30\xC10\xB70\xEA0\xF30\xAF0\x990\xB50\xF30\xC10\xFC0\xE00\xB50\xA40\xAF0\xEB0\xB30\xFC0\xDB0\x9A0\xB30\xEB0\xCA0\xB10\xFC0\xB90\xAF0\xED0\xFC0\xCD0\xAF0\xEB0\xBB0\x990\xA40\xED0\xAF0\x990\xE90\xE00\xC80\xF30\xAD0\xED0\xEF0\xC30\xC80\xAD0\xED0\xE10\xFC0\xC80\xEB0\xAD0\xED0\xAF0\x990\xE90\xE00\xAD0\x990\xEB0\xBF0\x990\xFC0\xAD0\xE50\xEA0\xFC0\xAD0\x990\xCB0\xFC0\xAD0\x990\xAB0\x990\xAB0\x990\xF30\xDE0\xAB0\x990\xED0\xF30\xAB0\xED0\xEA0\xFC0\xAB0\xE90\xC30\xC80\xAB0\xA40\xEA0\xAA0\xFC0\xE00\xAA0\xF30\xB90\xA80\xFC0\xAB0\xFC0\xA80\xB90\xAF0\xFC0\xC80\x990\xA60\xA90\xF30\xA40\xF30\xC10\xA40\xCB0\xF30\xAF0\x990\xA20\xFC0\xEB0\xA20\xF30\xD80\x9A0\xA20\xA20\xEB0\xD50\xA10\xA20\xCF0\x9A0\xFC0\xC80\xE4N\x8CTL\0T\0D\0e\0V\0e\0r\0g\0H\0g\x001\x002\0\x08g1\x001\0\x08g1\x000\0\x08g9\0\x08g8\0\x08g7\0\x08g6\0\x08g5\0\x08g4\0\x08g3\0\x08g5\x000\x004\09\x004\08\x004\x007\x004\x006\x004\x005\x004\x004\x004\x003\x004\x002\x004\x001\x004\x000\x003\09\x003\08\x003\x007\x003\x006\0\x0B\x11n\x11\x0C\x11n\x11\x0B\x11t\x11\x0E\x11a\x11\xB7\x11\0\x11i\x11\x12\x11a\x11\x11\x11a\x11\x10\x11a\x11\x0F\x11a\x11\x0C\x11a\x11\x0B\x11a\x11\t\x11a\x11\x07\x11a\x11\x06\x11a\x11\x05\x11a\x11\x03\x11a\x11\x02\x11a\x11\0\x11a\x113\x005\x003\x003\x003\x002\0P\0T\0E\0(\0\xF3\x81)\0(\0\xEA\x81)\0(\0\x11O)\0(\0my)\0(\0TS)\0(\0\xC7\x8C)\0(\0\x01O)\0(\0\xE3v)\0(\0f[)\0(\0|T)\0(\0\xE3N)\0(\0\xB4R)\0(\0]y)\0(\0\xA1\x8C)\0(\0yr)\0(\0\rT)\0(\0>y)\0(\0\tg)\0(\0*h)\0(\0\xE5e)\0(\0\x1FW)\0(\0\xD1\x91)\0(\0(g)\0(\x004l)\0(\0kp)\0(\0\x08g)\0(\0AS)\0(\0]N)\0(\0kQ)\0(\0\x03N)\0(\0mQ)\0(\0\x94N)\0(\0\xDBV)\0(\0\tN)\0(\0\x8CN)\0(\0\0N)\0(\0\x0B\x11i\x11\x12\x11n\x11)\0(\0\x0B\x11i\x11\x0C\x11e\x11\xAB\x11)\0(\0\x0C\x11n\x11)\0(\0\x12\x11a\x11)\0(\0\x11\x11a\x11)\0(\0\x10\x11a\x11)\0(\0\x0F\x11a\x11)\0(\0\x0E\x11a\x11)\0(\0\x0C\x11a\x11)\0(\0\x0B\x11a\x11)\0(\0\t\x11a\x11)\0(\0\x07\x11a\x11)\0(\0\x06\x11a\x11)\0(\0\x05\x11a\x11)\0(\0\x03\x11a\x11)\0(\0\x02\x11a\x11)\0(\0\0\x11a\x11)\0(\0\x12\x11)\0(\0\x11\x11)\0(\0\x10\x11)\0(\0\x0F\x11)\0(\0\x0E\x11)\0(\0\x0C\x11)\0(\0\x0B\x11)\0(\0\t\x11)\0(\0\x07\x11)\0(\0\x06\x11)\0(\0\x05\x11)\0(\0\x03\x11)\0(\0\x02\x11)\0(\0\0\x11)\0\xB30\xC80\x880\x8A0=\0=\0=\0:\0:\0=\0+\"+\"+\"+\"(\0z\0)\0(\0y\0)\0(\0x\0)\0(\0w\0)\0(\0v\0)\0(\0u\0)\0(\0t\0)\0(\0s\0)\0(\0r\0)\0(\0q\0)\0(\0p\0)\0(\0o\0)\0(\0n\0)\0(\0m\0)\0(\0l\0)\0(\0k\0)\0(\0j\0)\0(\0i\0)\0(\0h\0)\0(\0g\0)\0(\0f\0)\0(\0e\0)\0(\0d\0)\0(\0c\0)\0(\0b\0)\0(\0a\0)\x002\x000\0.\x001\09\0.\x001\08\0.\x001\x007\0.\x001\x006\0.\x001\x005\0.\x001\x004\0.\x001\x003\0.\x001\x002\0.\x001\x001\0.\x001\x000\0.\0(\x002\x000\0)\0(\x001\09\0)\0(\x001\08\0)\0(\x001\x007\0)\0(\x001\x006\0)\0(\x001\x005\0)\0(\x001\x004\0)\0(\x001\x003\0)\0(\x001\x002\0)\0(\x001\x001\0)\0(\x001\x000\0)\0(\09\0)\0(\08\0)\0(\x007\0)\0(\x006\0)\0(\x005\0)\0(\x004\0)\0(\x003\0)\0(\x002\0)\0(\x001\0)\0.\".\".\"0\0D 3\0x\0i\0i\0i\0x\0v\0i\0i\0i\0i\0v\0X\0I\0I\0I\0X\0V\0I\0I\0I\0I\0V\x001\0D 7\0D 8\x005\0D 8\x003\0D 8\x001\0D 8\x005\0D 6\x001\0D 6\x004\0D 5\x003\0D 5\x002\0D 5\x001\0D 5\x002\0D 3\x001\0D 3\x001\0D 1\x000\x001\0D 9\0F\0A\0X\0T\0M\0T\0E\0L\0S\0M\0N\0o\0\xB0\0F\0c\0/\0u\0c\0/\0o\0\xB0\0C\0a\0/\0s\0a\0/\0c\0R\0s\x002 2 2 2 !\0?\0?\0!\0!\0!\x005 5 5  \0\x08\x03\x01\x03 \0\x08\x03\0\x03 \0\x14\x03B\x03 \0\x14\x03\x01\x03 \0\x14\x03\0\x03 \0\x13\x03B\x03 \0\x13\x03\x01\x03 \0\x13\x03\0\x03 \0\x08\x03B\x03a\0\xBE\x02\xB3\x0Fq\x0F\x80\x0F\xB2\x0Fq\x0F\x80\x0F\xAB\x0E\xA1\x0E\xAB\x0E\x99\x0E\xCD\x0E\xB2\x0EM\x0E2\x0EJ\x06t\x06H\x06t\x06'\x06t\x06e\x05\x82\x05d\0z\0D\0z\0D\0Z\0n\0j\0N\0j\0N\0J\0l\0j\0L\0j\0L\0J\0d\0z\0\x0C\x03D\0z\0\x0C\x03D\0Z\0\x0C\x03\xBC\x02n\0l\0\xB7\0L\0\xB7\0i\0j\0I\0J\x003\0D 4\x001\0D 2\x001\0D 4\0d\0j\0m\0r\0m\0d\0m\0c\0w\0c\0p\0p\0v\0s\0s\0s\0d\0m\0v\0h\0v\0w\0z\0\x140s\0\x150a\0\x15\"m\0v\0\x15\"m\0w\0b\0s\0v\0p\0r\0p\0p\0m\0p\0h\0k\0k\0h\0p\0g\0y\0d\0b\0c\0\x15\"k\0g\0b\0q\0m\0\xC9\x03k\0\xC9\x03k\0w\0\xBC\x03w\0n\0w\0p\0w\0k\0v\0\xBC\x03v\0n\0v\0g\0p\0a\0m\0p\0a\0k\0p\0a\0t\0h\0z\0g\0h\0z\0m\0h\0z\0k\0h\0z\0\xBC\x03f\0n\0f\0p\0f\0k\0b\0k\0a\0m\0a\0\xBC\x03a\0n\0a\0i\0u\0o\0v\0a\0u\0h\0p\0a\0l\0t\0d\0e\0v\0h\0g\0p\0t\0e\0f\0a\0x\0t\0m\0t\0e\0l\0s\0m\0n\0o\0\xB0\0f\0\xB0\0c\0r\0s\0\xC9\x03\xB9\x03\xC9\x03B\x03\xB9\x03\xC9\x03\x01\x03\xB9\x03\xC9\x03\0\x03\xB9\x03\xB7\x03\xB9\x03\xB7\x03B\x03\xB9\x03\xB7\x03\x01\x03\xB9\x03\xB7\x03\0\x03\xB9\x03\xB1\x03\xB9\x03\xB1\x03B\x03\xB9\x03\xB1\x03\x01\x03\xB9\x03\xB1\x03\0\x03\xB9\x03\xC9\x03\x14\x03B\x03\xB9\x03\xC9\x03\x13\x03B\x03\xB9\x03\xC9\x03\x14\x03\x01\x03\xB9\x03\xC9\x03\x13\x03\x01\x03\xB9\x03\xC9\x03\x14\x03\0\x03\xB9\x03\xC9\x03\x13\x03\0\x03\xB9\x03\xC9\x03\x14\x03\xB9\x03\xC9\x03\x13\x03\xB9\x03\xB7\x03\x14\x03B\x03\xB9\x03\xB7\x03\x13\x03B\x03\xB9\x03\xB7\x03\x14\x03\x01\x03\xB9\x03\xB7\x03\x13\x03\x01\x03\xB9\x03\xB7\x03\x14\x03\0\x03\xB9\x03\xB7\x03\x13\x03\0\x03\xB9\x03\xB7\x03\x14\x03\xB9\x03\xB7\x03\x13\x03\xB9\x03\xB1\x03\x14\x03B\x03\xB9\x03\xB1\x03\x13\x03B\x03\xB9\x03\xB1\x03\x14\x03\x01\x03\xB9\x03\xB1\x03\x13\x03\x01\x03\xB9\x03\xB1\x03\x14\x03\0\x03\xB9\x03\xB1\x03\x13\x03\0\x03\xB9\x03\xB1\x03\x14\x03\xB9\x03\xB1\x03\x13\x03\xB9\x03 \0\xB9\x03") }, scalars24: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x1E\xDF\x01\n\xDF\x01\x08\xDF\x01\x06\xDF\x01\x05\xDF\x01\x04\xDF\x01C\xE9\x01B\xE9\x01A\xE9\x01@\xE9\x01?\xE9\x01>\xE9\x01=\xE9\x01<\xE9\x01;\xE9\x01:\xE9\x019\xE9\x018\xE9\x017\xE9\x016\xE9\x015\xE9\x014\xE9\x013\xE9\x012\xE9\x011\xE9\x010\xE9\x01/\xE9\x01.\xE9\x01-\xE9\x01,\xE9\x01+\xE9\x01*\xE9\x01)\xE9\x01(\xE9\x01'\xE9\x01&\xE9\x01%\xE9\x01$\xE9\x01#\xE9\x01\"\xE9\x01\x7Fn\x01~n\x01}n\x01|n\x01{n\x01zn\x01yn\x01xn\x01wn\x01vn\x01un\x01tn\x01sn\x01rn\x01qn\x01pn\x01on\x01nn\x01mn\x01ln\x01kn\x01jn\x01in\x01hn\x01gn\x01fn\x01en\x01dn\x01cn\x01bn\x01an\x01`n\x01\xDF\x18\x01\xDE\x18\x01\xDD\x18\x01\xDC\x18\x01\xDB\x18\x01\xDA\x18\x01\xD9\x18\x01\xD8\x18\x01\xD7\x18\x01\xD6\x18\x01\xD5\x18\x01\xD4\x18\x01\xD3\x18\x01\xD2\x18\x01\xD1\x18\x01\xD0\x18\x01\xCF\x18\x01\xCE\x18\x01\xCD\x18\x01\xCC\x18\x01\xCB\x18\x01\xCA\x18\x01\xC9\x18\x01\xC8\x18\x01\xC7\x18\x01\xC6\x18\x01\xC5\x18\x01\xC4\x18\x01\xC3\x18\x01\xC2\x18\x01\xC1\x18\x01\xC0\x18\x01\x85\r\x01\x84\r\x01\x83\r\x01\x82\r\x01\x81\r\x01\x80\r\x01\x7F\r\x01~\r\x01}\r\x01|\r\x01{\r\x01z\r\x01y\r\x01x\r\x01w\r\x01v\r\x01u\r\x01t\r\x01s\r\x01r\r\x01q\r\x01p\r\x01\xF2\x0C\x01\xF1\x0C\x01\xF0\x0C\x01\xEF\x0C\x01\xEE\x0C\x01\xED\x0C\x01\xEC\x0C\x01\xEB\x0C\x01\xEA\x0C\x01\xE9\x0C\x01\xE8\x0C\x01\xE7\x0C\x01\xE6\x0C\x01\xE5\x0C\x01\xE4\x0C\x01\xE3\x0C\x01\xE2\x0C\x01\xE1\x0C\x01\xE0\x0C\x01\xDF\x0C\x01\xDE\x0C\x01\xDD\x0C\x01\xDC\x0C\x01\xDB\x0C\x01\xDA\x0C\x01\xD9\x0C\x01\xD8\x0C\x01\xD7\x0C\x01\xD6\x0C\x01\xD5\x0C\x01\xD4\x0C\x01\xD3\x0C\x01\xD2\x0C\x01\xD1\x0C\x01\xD0\x0C\x01\xCF\x0C\x01\xCE\x0C\x01\xCD\x0C\x01\xCC\x0C\x01\xCB\x0C\x01\xCA\x0C\x01\xC9\x0C\x01\xC8\x0C\x01\xC7\x0C\x01\xC6\x0C\x01\xC5\x0C\x01\xC4\x0C\x01\xC3\x0C\x01\xC2\x0C\x01\xC1\x0C\x01\xC0\x0C\x01\xBC\x05\x01\xBB\x05\x01\xB9\x05\x01\xB8\x05\x01\xB7\x05\x01\xB6\x05\x01\xB5\x05\x01\xB4\x05\x01\xB3\x05\x01\xB1\x05\x01\xB0\x05\x01\xAF\x05\x01\xAE\x05\x01\xAD\x05\x01\xAC\x05\x01\xAB\x05\x01\xAA\x05\x01\xA9\x05\x01\xA8\x05\x01\xA7\x05\x01\xA6\x05\x01\xA5\x05\x01\xA4\x05\x01\xA3\x05\x01\xA1\x05\x01\xA0\x05\x01\x9F\x05\x01\x9E\x05\x01\x9D\x05\x01\x9C\x05\x01\x9B\x05\x01\x9A\x05\x01\x99\x05\x01\x98\x05\x01\x97\x05\x01\xFB\x04\x01\xFA\x04\x01\xF9\x04\x01\xF8\x04\x01\xF7\x04\x01\xF6\x04\x01\xF5\x04\x01\xF4\x04\x01\xF3\x04\x01\xF2\x04\x01\xF1\x04\x01\xF0\x04\x01\xEF\x04\x01\xEE\x04\x01\xED\x04\x01\xEC\x04\x01\xEB\x04\x01\xEA\x04\x01\xE9\x04\x01\xE8\x04\x01\xE7\x04\x01\xE6\x04\x01\xE5\x04\x01\xE4\x04\x01\xE3\x04\x01\xE2\x04\x01\xE1\x04\x01\xE0\x04\x01\xDF\x04\x01\xDE\x04\x01\xDD\x04\x01\xDC\x04\x01\xDB\x04\x01\xDA\x04\x01\xD9\x04\x01\xD8\x04\x01O\x04\x01N\x04\x01M\x04\x01L\x04\x01K\x04\x01J\x04\x01I\x04\x01H\x04\x01G\x04\x01F\x04\x01E\x04\x01D\x04\x01C\x04\x01B\x04\x01A\x04\x01@\x04\x01?\x04\x01>\x04\x01=\x04\x01<\x04\x01;\x04\x01:\x04\x019\x04\x018\x04\x017\x04\x016\x04\x015\x04\x014\x04\x013\x04\x012\x04\x011\x04\x010\x04\x01/\x04\x01.\x04\x01-\x04\x01,\x04\x01+\x04\x01*\x04\x01)\x04\x01(\x04\x01") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::normalizer::provider::NormalizerNfkdTablesV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::normalizer::provider::NormalizerNfkdTablesV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_NORMALIZER_NFKD_TABLES_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfkdTablesV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_normalizer_nfkd_tables_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfkdTablesV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_normalizer_nfkd_tables_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfkdTablesV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfkdTablesV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_normalizer_nfkd_tables_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerNfkdTablesV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerNfkdTablesV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerNfkdTablesV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_normalizer_nfkd_tables_v1 as impl_normalizer_nfkd_tables_v1;
diff --git a/vendor/icu_normalizer_data/data/normalizer_uts46_data_v1.rs.data b/vendor/icu_normalizer_data/data/normalizer_uts46_data_v1.rs.data
new file mode 100644
index 00000000..6e04b227
--- /dev/null
+++ b/vendor/icu_normalizer_data/data/normalizer_uts46_data_v1.rs.data
@@ -0,0 +1,75 @@
+// @generated
+/// Implement `DataProvider<NormalizerUts46DataV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 56200B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_normalizer_uts46_data_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_NORMALIZER_UTS46_DATA_V1: &'static <icu::normalizer::provider::NormalizerUts46DataV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::normalizer::provider::DecompositionData { trie: icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 918016u32, shifted12_high_start: 225u16, index3_null_offset: 1039u16, data_null_offset: 129u32, null_value: 1073807357u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\x80\0\xC0\0\0\x01?\x01\x7F\x01\xBC\x01\xFC\x01;\x02K\x02\x84\x02\xC4\x02\x04\x03D\x03z\x03\xBA\x03\xF4\x034\x04t\x04\xB4\x04\xF4\x04-\x05m\x05\xA7\x05\xDC\x05\0\0\x1C\x06N\x06\x8D\x06\x9B\x06\xDB\x06\x19\x07Y\x07\x8A\x07\xC0\x07\0\x08=\x08y\x08\xB8\x08\xF7\x085\tt\t\xB1\t\xF1\t0\nn\n\xAD\n\xED\n*\x0Ba\x0B\xA1\x0B\xE1\x0B \x0C`\x0C\xA0\x0C\xDF\x0C\x1E\r]\r\x9D\r\xDD\r\x1A\x0EZ\x0E\x98\x0E\x91\x0B\xAB\x0B\xB9\x0B\xCF\x0B\xEF\x0B\x0E\x0C+\x0CJ\x0C\xAB\x0B\xAB\x0Bj\x0C\x87\x0C\xA7\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0C\xB9\x0CB\x01\0\0\x10\0 \x000\0@\0P\0`\0p\0\x80\0\x90\0\xA0\0\xB0\0\xC0\0\xD0\0\xE0\0\xF0\0\0\x01\x10\x01 \x010\x01?\x01O\x01_\x01o\x01\x7F\x01\x8F\x01\x9F\x01\xAF\x01\xBC\x01\xCC\x01\xDC\x01\xEC\x01\xFC\x01\x0C\x02\x1C\x02,\x02;\x02K\x02[\x02k\x02K\x02[\x02k\x02{\x02\x84\x02\x94\x02\xA4\x02\xB4\x02\xC4\x02\xD4\x02\xE4\x02\xF4\x02\x04\x03\x14\x03$\x034\x03D\x03T\x03d\x03t\x03z\x03\x8A\x03\x9A\x03\xAA\x03\xBA\x03\xCA\x03\xDA\x03\xEA\x03\xF4\x03\x04\x04\x14\x04$\x044\x04D\x04T\x04d\x04t\x04\x84\x04\x94\x04\xA4\x04\xB4\x04\xC4\x04\xD4\x04\xE4\x04\xF4\x04\x04\x05\x14\x05$\x05-\x05=\x05M\x05]\x05m\x05}\x05\x8D\x05\x9D\x05\xA7\x05\xB7\x05\xC7\x05\xD7\x05\xDC\x05\xEC\x05\xFC\x05\x0C\x06\0\0\x10\0 \x000\0\x1C\x06,\x06<\x06L\x06N\x06^\x06n\x06~\x06\x8D\x06\x9D\x06\xAD\x06\xBD\x06\x9B\x06\xAB\x06\xBB\x06\xCB\x06\xDB\x06\xEB\x06\xFB\x06\x0B\x07\x19\x07)\x079\x07I\x07Y\x07i\x07y\x07\x89\x07\x8A\x07\x9A\x07\xAA\x07\xBA\x07\xC0\x07\xD0\x07\xE0\x07\xF0\x07\0\x08\x10\x08 \x080\x08=\x08M\x08]\x08m\x08y\x08\x89\x08\x99\x08\xA9\x08\xB8\x08\xC8\x08\xD8\x08\xE8\x08\xF7\x08\x07\t\x17\t'\t5\tE\tU\te\tt\t\x84\t\x94\t\xA4\t\xB1\t\xC1\t\xD1\t\xE1\t\xF1\t\x01\n\x11\n!\n0\n@\nP\n`\nn\n~\n\x8E\n\x9E\n\xAD\n\xBD\n\xCD\n\xDD\n\xED\n\xFD\n\r\x0B\x1D\x0B*\x0B:\x0BJ\x0BZ\x0Ba\x0Bq\x0B\x81\x0B\x91\x0B\xA1\x0B\xB1\x0B\xC1\x0B\xD1\x0B\xE1\x0B\xF1\x0B\x01\x0C\x11\x0C \x0C0\x0C@\x0CP\x0C`\x0Cp\x0C\x80\x0C\x90\x0C\xA0\x0C\xB0\x0C\xC0\x0C\xD0\x0C\xDF\x0C\xEF\x0C\xFF\x0C\x0F\r\x1E\r.\r>\rN\r]\rm\r}\r\x8D\r\x9D\r\xAD\r\xBD\r\xCD\r\xDD\r\xED\r\xFD\r\r\x0E\x1A\x0E*\x0E:\x0EJ\x0EZ\x0Ej\x0Ez\x0E\x8A\x0E\x98\x0E\xA8\x0E\xB8\x0E\xC8\x0E\0\0\0\0\xD8\x0E\xE7\x0E\0\0\0\0\0\0\0\0\xF2\x0E\0\0\x02\x0F\x12\x0F\"\x0F\0\0\0\x002\x0F\0\0\0\0\0\0\0\0\0\0?\x0FN\x0FX\x0F\0\0\0\0`\x0Fh\x0Fu\x0F\0\0\0\0\0\0\0\0|\x0F\x8C\x0F\0\0\0\0|\x0F\0\0\0\0\x84\x0F\xBF\x0BQ\x07\0\0\0\0\0\0\xBF\x0B\0\0\0\0\0\0\x9C\x0F\0\0s\0\0\0v\0\0\0\0\0\0\0\0\0\0\0\xAC\x0F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x05s\0\0\0\0\0\0\0\0\0\0\0w\0\0\0\xBC\x0F\0\0\xCB\x0F\0\0|\0K\x07\xDB\x0F\0\0\0\0\0\0\xEB\x0F\0\0\xF9\x0Fv\0v\0\t\x10v\0\0\0\0\0\0\0\0\0\0\0w\0\0\0\0\0\x19\x10\0\0\0\0\0\0\0\0z\0\0\0q\0t\0)\x10\x98\n\0\0r\0{\0\0\0\0\0t\0\0\0v\0l\x0C\0\0\0\09\x10\0\0\0\0\0\0q\0I\x10T\x10v\0v\0r\0d\x10s\x10\x81\0\x81\0\x81\0\x83\x10\x92\x10\0\0\x9E\x10\xAE\x10\0\0\xBC\x10\xA6\x07\0\0\0\0\xCC\x10\0\0\0\0\0\x006\x08\xDA\x10\0\0\0\0\0\0\xE6\x10m\x0C\0\0\0\0\0\0\xF6\x10\x06\x11\x16\x11&\x11x\x006\x11F\x11T\x11\0\0\0\0d\x11t\x11\x84\x11\x94\x11\xA4\x11\xAF\x11\0\0\xB8\x11\xC8\x11\xD8\x11\xE8\x11\xF8\x11\xC4\x02\x02\x12\x12\x12\"\x122\x12B\x12R\x12b\x12r\x12\x82\x12\x92\x12\xA2\x12\xB2\x12\xC2\x12\xD2\x12\xE2\x12\xF2\x12\x02\x13\x12\x13\"\x132\x13B\x13R\x13b\x13r\x13\x82\x13\x92\x13\xA2\x13\xB2\x13\xC2\x13\xD2\x13\xE2\x13\xF2\x13\x02\x14\x12\x14\"\x14.\x14>\x14M\x14W\x14g\x14w\x14\x87\x14\x97\x14\xA7\x14\0\0\x7F\0\xB7\x14\xC6\x14\xD6\x14\xE6\x14\xF6\x14\x06\x15\x15\x15%\x155\x15E\x15E\x15U\x15e\x15q\x15\0\0\x80\x15\0\0\0\0\0\0\x90\x15\0\0\x9D\x15\xAD\x15\xBC\x15\0\0\xCC\x15\xDC\x15\xEC\x15\0\0\xF6\x15\0\0\0\0\0\0\x06\x16\0\0\0\0\0\0\x14\x16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v\0\x81\0u\0\x81\0$\x164\x16D\x16L\x16\\\x16l\x16K\0A\0|\x16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87\x16\0\0\0\0\0\0\0\0\0\0\0\0\x94\x16\0\0\0\0\0\0\0\0\0\0\x9B\x16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD8\x08\0\0R\x07\0\0\0\0\0\0\0\0\0\0\0\0\xAB\x16\xBB\x16\xCB\x16\0\0\0\0\0\0\xDB\x16\xEB\x16\xFB\x16\x0B\x17\x1B\x17+\x17;\x17K\x17[\x17j\x17\0\0\0\0t\x17\0\0\0\0\0\0\x84\x17\x94\x17\0\0y\0\x9B\x08\x9B\x08\x9B\x08\x9B\x08\xC4\x02\xC4\x02\0\0\0\0\0\0\0\0\0\0r\0\x81\0\x81\0\0\0\xA4\x17\0\0\0\0\0\0\0\0\0\0\xB4\x17\xC4\x17\xD4\x17\xE4\x17\xF4\x17\x04\x18\x14\x18$\x184\x18D\x18T\x18d\x18t\x18\x84\x18\x94\x18\x81\0\x81\0\xA4\x18\0\0\xAA\x18\xBA\x18\xCA\x18\xDA\x18\xEA\x18\xFA\x18\0\0\x08\x19\x18\x19(\x198\x19H\x19\0\0V\x19x\x05\0\0\0\0f\x19v\x19\x86\x19\x96\x19\xA6\x19\xB6\x19\xC6\x19\0\0\0\0\0\0\0\0z\0\0\0\xD6\x19\xE6\x19\xF6\x19\x06\x1A\x16\x1A&\x1A6\x1AF\x1AV\x1Af\x1Av\x1A\x86\x1A\x96\x1A\xA6\x1A\xB6\x1A\xC6\x1A\xD6\x1A\xE6\x1A\xF6\x1A\x06\x1B\x16\x1B&\x1B6\x1BF\x1BV\x1Bf\x1Bv\x1B\x86\x1B\x96\x1B\xA6\x1B\xB6\x1B\xC6\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\0\x81\0\xD6\x1B\xE6\x1B\xF6\x1B\x06\x1C\x16\x1C&\x1C\0\0\0\0\0\0\0\0\0\x004\x1C\0\0\0\0D\x1CS\x1Cc\x1Cs\x1C\x83\x1C\x91\x1C\xA1\x1C\xB1\x1C\xC1\x1C\xD1\x1C\xE1\x1C\xF1\x1C\x81\0\xFF\x1C\xF5\x0F\0\0\t\x1Dv\0\0\0\0\0\0\0x\0\0\0\0\0\0\0\0\0\x19\x1Dv\0\xC4\x02\xA8\x07\0\0\0\0'\x1D\0\0\0\x005\x1D\0\0s\0\0\0\0\0\0\09\x08E\x1D\x8E\x05\0\0q\0\0\0\0\0\0\0y\0r\0:\x0C\0\0\0\0\0\0\0\0\0\0U\x1De\x1D\xA2\x05\0\0u\x1D\x84\x1D\x9B\x05\x9B\x08\0\0\0\0\x94\x1D\xA4\x1D\xB4\x1D\xC4\x1D\xD4\x1D\xE4\x1D\xF4\x1D\0\0\0\0\x04\x1Ev\0\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E\x14\x1E \x1E\0\0\x91\x05\0\0\0\0t\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\x000\x1E@\x1EP\x1E`\x1Ep\x1E\x80\x1E\x90\x1E\xA0\x1E\xB0\x1E\xC0\x1E\xD0\x1E\xE0\x1E\xF0\x1E\0\x1F\x10\x1F \x1F0\x1F@\x1FP\x1F`\x1Fp\x1F\x80\x1F\x90\x1F\xA0\x1F\xB0\x1F\xC0\x1F\xD0\x1F\xE0\x1F\xF0\x1F\0 \x81\0\x81\0\x10 \x1D - = M ] k y \x87 \x95 \xA5 \xB5 }\0\xC5 \xD5 \xE5 \xF5 \x05!\x15!%!5!E!U!e!u!\x85!\x95!\xA5!\xB5!\xC5!\xD5!\xE5!\xF5!\x05\"\x15\"%\"\0\x005\"D\"S\"c\"s\"\x83\"\x93\"\xA3\"\x81\0\x81\0\xB3\"\xC3\"\xD3\"\xE3\"\xF3\"\x03#\x13###3#C#R#a#p#\x7F#\x8E#\x9D#\xAC#\xBC#\xCC#\xDC#\xEC#\xFC#\x0C$\x1C$,$\xB5\x1A<$L$\\$k${$\x8B$\x9A$L\x07\0\0Q\x07\xAA$r\0r\0\x81\0\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\0\xB9$\0\0\0\0s\x0C\0\0\0\0\0\0\0\0q\0s\0\x7F\0\x81\0\x81\0\0\0\0\0\xC0$\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0s\0\0\0\0\0\0\0\x7F\0\xFB\x05t\0\0\0\0\0h\t\0\0u\0\0\0\0\0\xD0$\0\0J\x07\0\0\0\0\xE0$z\0\x81\0\x81\0\xF0$\0%\x10%\0\0\0\0\0\0\0\0\0\0\0\0r\0v\0 %0%@%\0\0t\0\0\0\0\0x\0\0\0\0\0\0\0\x9E\x05P%`%p%V\x07~%\x8E%\0\0\x9A%|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0y\0\0\0z\0x\0\x81\0\xA9%\xB9%\xC9%\xD9%\x81\0\x81\0\x81\0\x81\0\xE9%\0\0\0\0\xF3%\0\0R\x07\0\0\0\0\0\0q\0v\x05\x81\0\x81\0\x81\0\0\0\x02&\0\0k\x0C\0\0z\x07\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\x90\x05\0\0\x0B\x05\0\0\0\0\x0E&~\t\0\0\x1E&w\0w\0\0\0\0\0\0\0\0\0\x81\0\x81\0\0\0\0\0.&y\0\0\0\0\0\0\0q\x0C\0\0>\x0C\0\0\x81\x07\0\0<&\xA4\x05\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\0\0w\0\x81\0\x81\0\x81\0L&\\&l&|&\0\0\0\0\0\0\xE0\t\0\0\0\0\x8C&v\0\0\0\x9C&\xAC&\0\0b\n\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0q\0\0\0\0\0\xBA&~\0\xD0\x0C\x81\0\x81\0\xC8&\0\0\0\0x\0\0\0\xD8&\xE7&\x81\0\0\0\xF7&\x81\0\x81\0\0\0t\0\x81\0\0\0y\0\0\0\0\0\0\0\0\0\x07'\x0B\x05\0\0\x17'\0\0''4'@'}\0\0\0w\0v\0\xA7\x07\0\0N'^'x\0\0\0\0\0k'\0\0\0\0\0\0\0\0{'\0\0\x0C\x05{\0\0\0V\x07\0\0\x86'~\0\x81\0\x81\0\x81\0\x8F'J\x07v\0\0\0\0\0\0\0\x9E'v\0y\x08\x89\x08O\x07\xAE'\xBD'\xCD'\xDA'\xE2'\xF2'\x02(\0\0\x0C(\x1B(*(0(\x81\0\0\0\0\0\0\0\0\0@(G\x1D~\0\x81\0\0\0\0\0\0\0P(_(v\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0o(\x7F(\x8F(r\0\x81\0\x81\0\0\0\0\0\0\0\r\x0C{\0v\0s\0\x81\0\0\0\0\0\0\0\x99(v\0\0\0|\0\x81\0\0\09\x0C\xA9(\0\0y\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\xB9(\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\xC9(\xD9(\0\0\0\0\0\0\xD2\x0B\xE9(\xF5(\0\0\x05)k'v\0\x81\0\x81\0\x81\0\x81\0<\x0C\0\0\0\0<\x0C\x13)\x81\0\0\0\0\0\0\0#),)\0\0\0\0\0\0\0\0\xF2\x0F}\0\0\0\0\0\0\0\0\0w\0v\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0~\0v\0O\x07\0\0\0\0<)z\0\0\0s\0\0\0\0\0\x0B\x05P\x07y\0\x81\0\x81\0\x81\0\x81\0\x9E\t\0\0\0\0L)[)v\0k)\0\0q\0y)v\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0w\0\0\0W\x07\0\0l\x0C\xEF\x0Eu\0\x81\0\x81\0\x81\0\x81\0\x81\0\x7F\0\0\0\0\0\0\x001(\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\0\0\0\0\0\0q\0{\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\0\0\0\0\0\0}\0\0\0\0\0\0\0\x81\0\0\0z\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\0\0\0\0\0\0\0\0\0y\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\x89)\x98)v\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0w\0\0\0q\0\x8E\x05\0\0\0\0\0\0\0\0q\0v\0\0\0r\0\xA8)\0\0\0\0\0\0\xB8)z\0N\x07V\x07|\x07\0\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\xC1)v\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\xD1)\xE1)\0\0\0\0\0\0u\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\0\0\x8D\x05\0\0\0\0\0\0\xDB\t\0\0\x81\0\x81\0\x81\0\x81\0{\0\xF1)\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0x\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0z\0\x81\0\xC2\tw\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x99\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0}\0\xBF\t\x81\0\x01*\r*\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\0\0\0\0\0\0u\0s\0w\0\x1D*-*\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0;\0K\0=*\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0r\0\0\0y\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0z\0\0\0\0\0=\x0C\0\0\0\0M*]*k*x*\0\0\x84*\x92*\xA2*\0\0u\0\x81\0\0\0\0\0\0\0\0\0\xB0*\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0|\0\0\0|\0\0\0\0\0\0\0\0\0\0\0y\0\0\0w\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0A\0\xC0*G\0\xC6*\xD6*\xE6*\xC2*I\0\xC8*\xF2*\x02+\x12+\"+A\0\xC0*G\0.+>+C\0*+N+^+\xD8*E\0\xC4*K\0A\0\xC0*G\0\xC6*\xD6*C\0\xC2*I\0\xC8*\xD8*E\0\xC4*K\0A\0\xC0*G\0n+~+\x8E+\x9E+\xAE+\x84+\x94+\xA4+z+\x8A+\x9A+\xAA+\x80+U\x03\xA0+U\x03\x86+\x96+\xBE+\xCE+\xD4+\xD0+\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\0\xA2\x05\x0C\x05\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0q\0\xE4+\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\xF4+\xFC+\n,\x1A,*,:,J,\x81\0X,\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0s\0g,\x8E\x05\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\xE8\x08\x81\0\0\0\0\0\xB8\x02z\x07\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0w,v\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0p\x06\x8D\x05\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x87,q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0O\n\x97,\x81\0\x81\0\xA7,\xB7,\xC7,\0\0\xD3,\x8E\x05\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x0C\x05\0\0\0\0\0\0{\0\x81\0\x81\0\x81\0\x81\0\x0C\x05\0\0\0\0r\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\xE3,\xF3,\x03-\x13-!-1-A-Q-a-q-\x80-q-\x81\0\x81\0\x81\0~\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0t\0\0\0\0\0\0\0\0\0\0\0\0\0|\0q\0\x0C\x05\x0C\x05\x0C\x05\0\0z\0\x90-X\x16\xA0-A\0\xB0-\0\0\xC0-\0\0\0\0\xD0-r\0\x81\0\x81\0\x81\0w\x05\0\0\xE0-\xF0-\0.\x10. .0.z\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x05s\0s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91\x05\0\0\0\0\0\0\0\0\0\0v\0t\0\x7F\0t\0\0\0\0\0\0\0x\0v\0\0\0\0\0x\0\0\0r\0t\0~\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|\0r\0s\0z\x07\0\0\0\0\0\0\xDC\tO\x06v\0w\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U\x07\0\0\0\0\0\0\0\0\0\0=*\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\0\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\0\0\0\0\0\0\0\0\0\0\0r\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0@.P.`.p.\x80.\x90.\xA0.\xB0.\xC0.\xD0.\xE0.\xF0.\0/\x10/ /0/@/P/`/p/\x80/\x90/\xA0/\xB0/\xC0/\xD0/\xE0/\xF0/\x000\x100 000@0P0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\x81\0\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\x81\0y\0\x99\0\xB9\0\xD9\0\xF9\0\x19\x019\x01Y\x01y\x01\x96\x01\xB6\x01\xCE\x01\xEE\x01\r\x02-\x02M\x02m\x02\x8D\x02\xAB\x02\xB6\x01\xB6\x01\xCB\x02\xEB\x02\x0B\x03+\x03K\x03\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01k\x03\x89\x03\xA9\x03\xC9\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x03\xE9\x03\xEF\x03\xB6\x01\xB6\x01\xB6\x01\xB6\x01\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x1F\x04?\x04_\x04\x7F\x04\x9F\x04\xBF\x04\xDF\x04\xFF\x04\x1F\x05?\x05_\x05y\x05\x99\x05\xB9\x05\xD9\x05\xF9\x05\x19\x069\x06Y\x06t\x06\xB6\x01\x94\x06\xB4\x06\x0F\x04\x0F\x04\x0F\x04\x0F\x04\xC9\x06\xB6\x01\xB6\x01\xE9\x06\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xEF\x06\xB6\x01\x0F\x07\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x1F\x07\x0F\x04\x0F\x04\x0F\x04\xB6\x01?\x07X\x07t\x07\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\x94\x07\xB6\x01\xB6\x01\xB4\x07\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\xC5\x07\xE5\x07\xFC\x07\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x1C\x08\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04<\x08Q\x08q\x08\x91\x08\xB1\x08\xD1\x08\xB6\x01\xF1\x08\x0F\x04\x01\t!\t8\tK\tk\t\x8B\t\x0F\x04\xA4\t\xC4\t\xE4\t\x04\n\xB6\x01\x17\n7\nR\n\x0F\x04\x0F\x04\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01r\n\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\x82\n\xA1\n\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB7\n\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xC2\n\xB6\x01\xE1\n\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x01\x0B!\x0B\x0F\x04\x0F\x04\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01A\x0B\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01\xB6\x01V\x0B\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\x0F\x04\xEE\xFF") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\0\0@b\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@o\0\0@p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@ \0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\x84A\0\0\0\0a\0\0@\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0 \0\x82A\0\0\0\0\0\0\0\x002\0\0@3\0\0@ \x80\x80A\xBC\x03\0@\0\0\0\0\0\0\0\0 \x80\x93A1\0\0@o\0\0@\0\0\0\0\x01\0:L\x01\x007L\x01\x004L\0\0\0\0a\0\x80Aa\x80\x80Aa\0\x81Aa\x80\x81Aa\0\x84Aa\0\x85A\xE6\0\0@c\x80\x93Ae\0\x80Ae\x80\x80Ae\0\x81Ae\0\x84Ai\0\x80Ai\x80\x80Ai\0\x81Ai\0\x84A\xF0\0\0@n\x80\x81Ao\0\x80Ao\x80\x80Ao\0\x81Ao\x80\x81Ao\0\x84A\0\0\0\0\xF8\0\0@u\0\x80Au\x80\x80Au\0\x81Au\0\x84Ay\x80\x80A\xFE\0\0@\0\0\0\0a\0\x80\x01a\x80\x80\x01a\0\x81\x01a\x80\x81\x01a\0\x84\x01a\0\x85\x01\0\0\0\0c\x80\x93\x01e\0\x80\x01e\x80\x80\x01e\0\x81\x01e\0\x84\x01i\0\x80\x01i\x80\x80\x01i\0\x81\x01i\0\x84\x01\0\0\0\0n\x80\x81\x01o\0\x80\x01o\x80\x80\x01o\0\x81\x01o\x80\x81\x01o\0\x84\x01\0\0\0\0\0\0\0\0u\0\x80\x01u\x80\x80\x01u\0\x81\x01u\0\x84\x01y\x80\x80\x01\0\0\0\0y\0\x84\x01a\0\x82Aa\0\x82\x01a\0\x83Aa\0\x83\x01a\0\x94Aa\0\x94\x01c\x80\x80Ac\x80\x80\x01c\0\x81Ac\0\x81\x01c\x80\x83Ac\x80\x83\x01c\0\x86Ac\0\x86\x01d\0\x86Ad\0\x86\x01\x11\x01\0@\0\0\0\0e\0\x82Ae\0\x82\x01e\0\x83Ae\0\x83\x01e\x80\x83Ae\x80\x83\x01e\0\x94Ae\0\x94\x01e\0\x86Ae\0\x86\x01g\0\x81Ag\0\x81\x01g\0\x83Ag\0\x83\x01g\x80\x83Ag\x80\x83\x01g\x80\x93Ag\x80\x93\x01h\0\x81Ah\0\x81\x01'\x01\0@\0\0\0\0i\x80\x81Ai\x80\x81\x01i\0\x82Ai\0\x82\x01i\0\x83Ai\0\x83\x01i\0\x94Ai\0\x94\x01i\x80\x83A\0\0\0\0\0\x000L\0\x000Lj\0\x81Aj\0\x81\x01k\x80\x93Ak\x80\x93\x01\0\0\0\0l\x80\x80Al\x80\x80\x01l\x80\x93Al\x80\x93\x01l\0\x86Al\0\x86\x01\0\0,LB\x01\0@\0\0\0\0n\x80\x80An\x80\x80\x01n\x80\x93An\x80\x93\x01n\0\x86An\0\x86\x01\0\0*LK\x01\0@\0\0\0\0o\0\x82Ao\0\x82\x01o\0\x83Ao\0\x83\x01o\x80\x85Ao\x80\x85\x01S\x01\0@\0\0\0\0r\x80\x80Ar\x80\x80\x01r\x80\x93Ar\x80\x93\x01r\0\x86Ar\0\x86\x01s\x80\x80As\x80\x80\x01s\0\x81As\0\x81\x01s\x80\x93As\x80\x93\x01s\0\x86As\0\x86\x01t\x80\x93At\x80\x93\x01t\0\x86At\0\x86\x01g\x01\0@\0\0\0\0u\x80\x81Au\x80\x81\x01u\0\x82Au\0\x82\x01u\0\x83Au\0\x83\x01u\0\x85Au\0\x85\x01u\x80\x85Au\x80\x85\x01u\0\x94Au\0\x94\x01w\0\x81Aw\0\x81\x01y\0\x81Ay\0\x81\x01y\0\x84Az\x80\x80Az\x80\x80\x01z\x80\x83Az\x80\x83\x01z\0\x86Az\0\x86\x01s\0\0@\0\0\0\0S\x02\0@\x83\x01\0@\0\0\0\0\x85\x01\0@\0\0\0\0T\x02\0@\x88\x01\0@\0\0\0\0V\x02\0@W\x02\0@\x8C\x01\0@\0\0\0\0\0\0\0\0\xDD\x01\0@Y\x02\0@[\x02\0@\x92\x01\0@\0\0\0\0`\x02\0@c\x02\0@\0\0\0\0i\x02\0@h\x02\0@\x99\x01\0@\0\0\0\0\0\0\0\0\0\0\0\0o\x02\0@r\x02\0@\0\0\0\0u\x02\0@o\x80\x8DAo\x80\x8D\x01\xA3\x01\0@\0\0\0\0\xA5\x01\0@\0\0\0\0\x80\x02\0@\xA8\x01\0@\0\0\0\0\x83\x02\0@\0\0\0\0\0\0\0\0\xAD\x01\0@\0\0\0\0\x88\x02\0@u\x80\x8DAu\x80\x8D\x01\x8A\x02\0@\x8B\x02\0@\xB4\x01\0@\0\0\0\0\xB6\x01\0@\0\0\0\0\x92\x02\0@\xB9\x01\0@\0\0\0\0\0\0\0\0\0\0\0\0\xBD\x01\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0!L\x01\0!L\x01\0!L\0\0\x1BL\0\0\x1BL\0\0\x1BL\0\0\x15L\0\0\x15L\0\0\x15La\0\x86Aa\0\x86\x01i\0\x86Ai\0\x86\x01o\0\x86Ao\0\x86\x01u\0\x86Au\0\x86\x01\x11\0\xFFB\x11\0\xFF\x02\x11\0\xF9B\x11\0\xF9\x02\x11\0\xF3B\x11\0\xF3\x02\x11\0\xEDB\x11\0\xED\x02\0\0\0\0\x11\0\xE7B\x11\0\xE7\x02\x11\0\xE1B\x11\0\xE1\x02\xE6\0\x82A\xE6\0\x82\x01\xE5\x01\0@\0\0\0\0g\0\x86Ag\0\x86\x01k\0\x86Ak\0\x86\x01o\0\x94Ao\0\x94\x01\x11\0\xDBB\x11\0\xDB\x02\x92\x02\x86A\x92\x02\x86\x01j\0\x86\x01\0\0\x0FL\0\0\x0FL\0\0\x0FLg\x80\x80Ag\x80\x80\x01\x95\x01\0@\xBF\x01\0@n\0\x80An\0\x80\x01\x11\0\xD5B\x11\0\xD5\x02\xE6\x80\x80A\xE6\x80\x80\x01\xF8\x80\x80A\xF8\x80\x80\x01a\x80\x87Aa\x80\x87\x01a\x80\x88Aa\x80\x88\x01e\x80\x87Ae\x80\x87\x01e\x80\x88Ae\x80\x88\x01i\x80\x87Ai\x80\x87\x01i\x80\x88Ai\x80\x88\x01o\x80\x87Ao\x80\x87\x01o\x80\x88Ao\x80\x88\x01r\x80\x87Ar\x80\x87\x01r\x80\x88Ar\x80\x88\x01u\x80\x87Au\x80\x87\x01u\x80\x88Au\x80\x88\x01s\0\x93As\0\x93\x01t\0\x93At\0\x93\x01\x1D\x02\0@\0\0\0\0h\0\x86Ah\0\x86\x01\x9E\x01\0@\0\0\0\0#\x02\0@\0\0\0\0%\x02\0@\0\0\0\0a\x80\x83Aa\x80\x83\x01e\x80\x93Ae\x80\x93\x01\x11\0\xCFB\x11\0\xCF\x02\x11\0\xC9B\x11\0\xC9\x02o\x80\x83Ao\x80\x83\x01\x11\0\xC3B\x11\0\xC3\x02y\0\x82Ay\0\x82\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e,\0@<\x02\0@\0\0\0\0\x9A\x01\0@f,\0@\0\0\0\0B\x02\0@\0\0\0\0\x80\x01\0@\x89\x02\0@\x8C\x02\0@G\x02\0@\0\0\0\0I\x02\0@\0\0\0\0K\x02\0@\0\0\0\0M\x02\0@\0\0\0\0O\x02\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\0\0@f\x02\0@j\0\0@r\0\0@y\x02\0@{\x02\0@\x81\x02\0@w\0\0@y\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\x83A \x80\x83A \0\x85A \0\x94A \x80\x81A \x80\x85A\0\0\0\0\0\0\0\0c\x02\0@l\0\0@s\0\0@x\0\0@\x95\x02\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE8\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE8\xD8\0\x80\xD8\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xCA\xD8\0\x80\xCA\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xCA\xD8\0\x80\xCA\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD9\0\xC0\xE6\xD9\0\xC0\xE6\xD8\0\x80\xE6\xD9\0\xC0\xE6\xD9\0\xC0\xB9\x03\0@\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xFF\xFF\xFF\xFF\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE8\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE9\xD8\0\x80\xEA\xD8\0\x80\xEA\xD8\0\x80\xE9\xD8\0\x80\xEA\xD8\0\x80\xEA\xD8\0\x80\xE9\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80q\x03\0@\0\0\0\0s\x03\0@\0\0\0\0\xB9\x02\0@\0\0\0\0w\x03\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0MM\0\0\0\0\0\0\0\0\0\0\0\0;\0\0@\xF3\x03\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@ \x80\x80A\x11\0\xDCK\xB1\x83\x80A\xB7\0\0@\xB5\x83\x80A\xB7\x83\x80A\xB9\x83\x80A\xFD\xFF\0@\xBF\x83\x80A\xFD\xFF\0@\xC5\x83\x80A\xC9\x83\x80A\x11\0\x1E\0\xB1\x03\0@\xB2\x03\0@\xB3\x03\0@\xB4\x03\0@\xB5\x03\0@\xB6\x03\0@\xB7\x03\0@\xB8\x03\0@\xB9\x03\0@\xBA\x03\0@\xBB\x03\0@\xBC\x03\0@\xBD\x03\0@\xBE\x03\0@\xBF\x03\0@\xC0\x03\0@\xC1\x03\0@\xFD\xFF\0@\xC3\x03\0@\xC4\x03\0@\xC5\x03\0@\xC6\x03\0@\xC7\x03\0@\xC8\x03\0@\xC9\x03\0@\xB9\x03\x84A\xC5\x03\x84A\xB1\x83\x80\x01\xB5\x83\x80\x01\xB7\x83\x80\x01\xB9\x83\x80\x01\x11\0\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB9\x03\x84\x01\xC5\x03\x84\x01\xBF\x83\x80\x01\xC5\x83\x80\x01\xC9\x83\x80\x01\xD7\x03\0@\xB2\x03\0@\xB8\x03\0@\xC5\x03\0@\xC5\x83\x80A\xC5\x03\x84A\xC6\x03\0@\xC0\x03\0@\0\0\0\0\xD9\x03\0@\0\0\0\0\xDB\x03\0@\0\0\0\0\xDD\x03\0@\0\0\0\0\xDF\x03\0@\0\0\0\0\xE1\x03\0@\0\0\0\0\xE3\x03\0@\0\0\0\0\xE5\x03\0@\0\0\0\0\xE7\x03\0@\0\0\0\0\xE9\x03\0@\0\0\0\0\xEB\x03\0@\0\0\0\0\xED\x03\0@\0\0\0\0\xEF\x03\0@\0\0\0\0\xBA\x03\0@\xC1\x03\0@\xC3\x03\0@\0\0\0\0\xB8\x03\0@\xB5\x03\0@\0\0\0\0\xF8\x03\0@\0\0\0\0\xC3\x03\0@\xFB\x03\0@\0\0\0\0\0\0\0\0{\x03\0@|\x03\0@}\x03\0@5\x04\x80A5\x04\x84AR\x04\0@3\x84\x80AT\x04\0@U\x04\0@V\x04\0@V\x04\x84AX\x04\0@Y\x04\0@Z\x04\0@[\x04\0@:\x84\x80A8\x04\x80AC\x04\x83A_\x04\0@0\x04\0@1\x04\0@2\x04\0@3\x04\0@4\x04\0@5\x04\0@6\x04\0@7\x04\0@8\x04\0@8\x04\x83A:\x04\0@;\x04\0@<\x04\0@=\x04\0@>\x04\0@?\x04\0@@\x04\0@A\x04\0@B\x04\0@C\x04\0@D\x04\0@E\x04\0@F\x04\0@G\x04\0@H\x04\0@I\x04\0@J\x04\0@K\x04\0@L\x04\0@M\x04\0@N\x04\0@O\x04\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08\x04\x83\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x005\x04\x80\x015\x04\x84\x01\0\0\0\x003\x84\x80\x01\0\0\0\0\0\0\0\0\0\0\0\0V\x04\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\x84\x80\x018\x04\x80\x01C\x04\x83\x01\0\0\0\0a\x04\0@\0\0\0\0c\x04\0@\0\0\0\0e\x04\0@\0\0\0\0g\x04\0@\0\0\0\0i\x04\0@\0\0\0\0k\x04\0@\0\0\0\0m\x04\0@\0\0\0\0o\x04\0@\0\0\0\0q\x04\0@\0\0\0\0s\x04\0@\0\0\0\0u\x04\0@\0\0\0\0u\x84\x87Au\x84\x87\x01y\x04\0@\0\0\0\0{\x04\0@\0\0\0\0}\x04\0@\0\0\0\0\x7F\x04\0@\0\0\0\0\x81\x04\0@\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\x8B\x04\0@\0\0\0\0\x8D\x04\0@\0\0\0\0\x8F\x04\0@\0\0\0\0\x91\x04\0@\0\0\0\0\x93\x04\0@\0\0\0\0\x95\x04\0@\0\0\0\0\x97\x04\0@\0\0\0\0\x99\x04\0@\0\0\0\0\x9B\x04\0@\0\0\0\0\x9D\x04\0@\0\0\0\0\x9F\x04\0@\0\0\0\0\xA1\x04\0@\0\0\0\0\xA3\x04\0@\0\0\0\0\xA5\x04\0@\0\0\0\0\xA7\x04\0@\0\0\0\0\xA9\x04\0@\0\0\0\0\xAB\x04\0@\0\0\0\0\xAD\x04\0@\0\0\0\0\xAF\x04\0@\0\0\0\0\xB1\x04\0@\0\0\0\0\xB3\x04\0@\0\0\0\0\xB5\x04\0@\0\0\0\0\xB7\x04\0@\0\0\0\0\xB9\x04\0@\0\0\0\0\xBB\x04\0@\0\0\0\0\xBD\x04\0@\0\0\0\0\xBF\x04\0@\0\0\0\0\xCF\x04\0@6\x04\x83A6\x04\x83\x01\xC4\x04\0@\0\0\0\0\xC6\x04\0@\0\0\0\0\xC8\x04\0@\0\0\0\0\xCA\x04\0@\0\0\0\0\xCC\x04\0@\0\0\0\0\xCE\x04\0@\0\0\0\0\0\0\0\x000\x04\x83A0\x04\x83\x010\x04\x84A0\x04\x84\x01\xD5\x04\0@\0\0\0\x005\x04\x83A5\x04\x83\x01\xD9\x04\0@\0\0\0\0\xD9\x04\x84A\xD9\x04\x84\x016\x04\x84A6\x04\x84\x017\x04\x84A7\x04\x84\x01\xE1\x04\0@\0\0\0\08\x04\x82A8\x04\x82\x018\x04\x84A8\x04\x84\x01>\x04\x84A>\x04\x84\x01\xE9\x04\0@\0\0\0\0\xE9\x04\x84A\xE9\x04\x84\x01M\x04\x84AM\x04\x84\x01C\x04\x82AC\x04\x82\x01C\x04\x84AC\x04\x84\x01C\x84\x85AC\x84\x85\x01G\x04\x84AG\x04\x84\x01\xF7\x04\0@\0\0\0\0K\x04\x84AK\x04\x84\x01\xFB\x04\0@\0\0\0\0\xFD\x04\0@\0\0\0\0\xFF\x04\0@\0\0\0\0\x01\x05\0@\0\0\0\0\x03\x05\0@\0\0\0\0\x05\x05\0@\0\0\0\0\x07\x05\0@\0\0\0\0\t\x05\0@\0\0\0\0\x0B\x05\0@\0\0\0\0\r\x05\0@\0\0\0\0\x0F\x05\0@\0\0\0\0\x11\x05\0@\0\0\0\0\x13\x05\0@\0\0\0\0\x15\x05\0@\0\0\0\0\x17\x05\0@\0\0\0\0\x19\x05\0@\0\0\0\0\x1B\x05\0@\0\0\0\0\x1D\x05\0@\0\0\0\0\x1F\x05\0@\0\0\0\0!\x05\0@\0\0\0\0#\x05\0@\0\0\0\0%\x05\0@\0\0\0\0'\x05\0@\0\0\0\0)\x05\0@\0\0\0\0+\x05\0@\0\0\0\0-\x05\0@\0\0\0\0/\x05\0@\0\0\0\0\xFD\xFF\0@a\x05\0@b\x05\0@c\x05\0@d\x05\0@e\x05\0@f\x05\0@g\x05\0@h\x05\0@i\x05\0@j\x05\0@k\x05\0@l\x05\0@m\x05\0@n\x05\0@o\x05\0@p\x05\0@q\x05\0@r\x05\0@s\x05\0@t\x05\0@u\x05\0@v\x05\0@w\x05\0@x\x05\0@y\x05\0@z\x05\0@{\x05\0@|\x05\0@}\x05\0@~\x05\0@\x7F\x05\0@\x80\x05\0@\x81\x05\0@\x82\x05\0@\x83\x05\0@\x84\x05\0@\x85\x05\0@\x86\x05\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\rL\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDE\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDE\xD8\0\x80\xE4\xD8\0\x80\xE6\xD8\0\x80\n\xD8\0\x80\x0B\xD8\0\x80\x0C\xD8\0\x80\r\xD8\0\x80\x0E\xD8\0\x80\x0F\xD8\0\x80\x10\xD8\0\x80\x11\xD8\0\x80\x12\xD8\0\x80\x13\xD8\0\x80\x13\xD8\0\x80\x14\xD8\0\x80\x15\xD8\0\x80\x16\xD8\0\x80\0\0\0\0\x17\xD8\0\x80\0\0\0\0\x18\xD8\0\x80\x19\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\x12\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\x1E\xD8\0\x80\x1F\xD8\0\x80 \xD8\0\x80\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'\x86)\x03'\x06*\x03H\x06*\x03'\x86*\x03J\x06*\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1B\xD8\0\x80\x1C\xD8\0\x80\x1D\xD8\0\x80\x1E\xD8\0\x80\x1F\xD8\0\x80 \xD8\0\x80!\xD8\0\x80\"\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0BL\0\0\tL\0\0\x9EF\0\0\x07L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD5\x06*\x03\0\0\0\0\xC1\x06*\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD2\x06*\x03\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0$\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\x1B\xD8\0\x80\x1C\xD8\0\x80\x1D\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\t\x9E\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\t\x9E\x04\0\0\0\0\0\0\0\x003\t\x9E\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x15\t\x9ED\x16\t\x9ED\x17\t\x9ED\x1C\t\x9ED!\t\x9ED\"\t\x9ED+\t\x9ED/\t\x9ED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\x07\xD8\0\x80\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\xC1\x02\0\0\xBF\x02\t\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xA1\t\xDED\xA2\t\xDED\xFD\xFF\0@\xAF\t\xDED\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\x002\n\x1EE\xFD\xFF\0@\0\0\0\08\n\x1EE\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\x07\xD8\0\x80\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\x16\n\x1EE\x17\n\x1EE\x1C\n\x1EE\0\0\0\0\xFD\xFF\0@+\n\x1EE\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\x07\xD8\0\x80\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\xBD\x02\xFD\xFF\0@\xFD\xFF\0@\0\0\xBB\x02\0\0\xB9\x02\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\x80\0\0\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@!\x0B\x9EE\"\x0B\x9EE\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\xB7\x02\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\xB5\x02\0\0\xB3\x02\0\0\xB1\x02\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0F\x0C+\x06\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@T\xD8\0\x80[\xD8\0\x80\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAF\x02\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\xAD\x02\0\0\xAB\x02\xFD\xFF\0@\0\0\xA8\x02\x01\0\xA8\x02\0\0\0\0\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\x80\0\0\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\xA6\x02\0\0\xA4\x02\0\0\xA2\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xD9\r\xE5\x06\0\0\0\0\0\0\x9F\x02\x01\0\x9F\x02\0\0\x9D\x02\0\0\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\xD8\0\x80g\xD8\0\x80\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0k\xD8\0\x80k\xD8\0\x80k\xD8\0\x80k\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v\xD8\0\x80v\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@z\xD8\0\x80z\xD8\0\x80z\xD8\0\x80z\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\x01L\0\0\xFFK\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0B\x0F\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\xD8\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9BB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x95B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x91B\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\x81\xD8\0\x80\x82\xD8\0\x80\0\xD9\0\xC0\x84\xD8\0\x80\0\xD9\0\xC0\xB2\x0F\xC0G\x11\0\xFCK\xB3\x0F\xC0G\x11\0\xF9K\x82\xD8\0\x80\x82\xD8\0\x80\x82\xD8\0\x80\x82\xD8\0\x80\0\0\0\0\0\0\0\0\x82\xD8\0\x80\0\xD9\0\xC0\xE6\xD8\0\x80\xE6\xD8\0\x80\t\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8FB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8DB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8BB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x89B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85B\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0-\0@\x01-\0@\x02-\0@\x03-\0@\x04-\0@\x05-\0@\x06-\0@\x07-\0@\x08-\0@\t-\0@\n-\0@\x0B-\0@\x0C-\0@\r-\0@\x0E-\0@\x0F-\0@\x10-\0@\x11-\0@\x12-\0@\x13-\0@\x14-\0@\x15-\0@\x16-\0@\x17-\0@\x18-\0@\x19-\0@\x1A-\0@\x1B-\0@\x1C-\0@\x1D-\0@\x1E-\0@\x1F-\0@ -\0@!-\0@\"-\0@#-\0@$-\0@%-\0@\xFD\xFF\0@'-\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@--\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\x10\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xF0\x13\0@\xF1\x13\0@\xF2\x13\0@\xF3\x13\0@\xF4\x13\0@\xF5\x13\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE4\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDE\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x02\0\0\0\0\0\0\x7F\x02\0\0\0\0\0\0}\x02\0\0\0\0\0\0{\x02\0\0\0\0\0\0y\x02\0\0\0\0\0\0\0\0\0\0w\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\x02\0\0\0\0\0\0s\x02\0\0\0\0\0\0\0\0\0\0q\x02\0\0o\x02\0\0\0\0\0\0m\x02\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x002\x04\0@4\x04\0@>\x04\0@A\x04\0@B\x04\0@B\x04\0@J\x04\0@c\x04\0@K\xA6\0@\x8A\x1C\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xD0\x10\0@\xD1\x10\0@\xD2\x10\0@\xD3\x10\0@\xD4\x10\0@\xD5\x10\0@\xD6\x10\0@\xD7\x10\0@\xD8\x10\0@\xD9\x10\0@\xDA\x10\0@\xDB\x10\0@\xDC\x10\0@\xDD\x10\0@\xDE\x10\0@\xDF\x10\0@\xE0\x10\0@\xE1\x10\0@\xE2\x10\0@\xE3\x10\0@\xE4\x10\0@\xE5\x10\0@\xE6\x10\0@\xE7\x10\0@\xE8\x10\0@\xE9\x10\0@\xEA\x10\0@\xEB\x10\0@\xEC\x10\0@\xED\x10\0@\xEE\x10\0@\xEF\x10\0@\xF0\x10\0@\xF1\x10\0@\xF2\x10\0@\xF3\x10\0@\xF4\x10\0@\xF5\x10\0@\xF6\x10\0@\xF7\x10\0@\xF8\x10\0@\xF9\x10\0@\xFA\x10\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\x10\0@\xFE\x10\0@\xFF\x10\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\x01\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\0\0@\xE6\0\0@b\0\0@\0\0\0\0d\0\0@e\0\0@\xDD\x01\0@g\0\0@h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@\0\0\0\0o\0\0@#\x02\0@p\0\0@r\0\0@t\0\0@u\0\0@w\0\0@a\0\0@P\x02\0@Q\x02\0@\x02\x1D\0@b\0\0@d\0\0@e\0\0@Y\x02\0@[\x02\0@\\\x02\0@g\0\0@\0\0\0\0k\0\0@m\0\0@K\x01\0@o\0\0@T\x02\0@\x16\x1D\0@\x17\x1D\0@p\0\0@t\0\0@u\0\0@\x1D\x1D\0@o\x02\0@v\0\0@%\x1D\0@\xB2\x03\0@\xB3\x03\0@\xB4\x03\0@\xC6\x03\0@\xC7\x03\0@i\0\0@r\0\0@u\0\0@v\0\0@\xB2\x03\0@\xB3\x03\0@\xC1\x03\0@\xC6\x03\0@\xC7\x03\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\x04\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x02\0@c\0\0@U\x02\0@\xF0\0\0@\\\x02\0@f\0\0@_\x02\0@a\x02\0@e\x02\0@h\x02\0@i\x02\0@j\x02\0@{\x1D\0@\x9D\x02\0@m\x02\0@\x85\x1D\0@\x9F\x02\0@q\x02\0@p\x02\0@r\x02\0@s\x02\0@t\x02\0@u\x02\0@x\x02\0@\x82\x02\0@\x83\x02\0@\xAB\x01\0@\x89\x02\0@\x8A\x02\0@\x1C\x1D\0@\x8B\x02\0@\x8C\x02\0@z\0\0@\x90\x02\0@\x91\x02\0@\x92\x02\0@\xB8\x03\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xEA\xD8\0\x80\xD6\xD8\0\x80\xDC\xD8\0\x80\xCA\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE8\xD8\0\x80\xE4\xD8\0\x80\xE4\xD8\0\x80\xDC\xD8\0\x80\xDA\xD8\0\x80\xE6\xD8\0\x80\xE9\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80a\x80\x92Aa\x80\x92\x01b\x80\x83Ab\x80\x83\x01b\x80\x91Ab\x80\x91\x01b\x80\x98Ab\x80\x98\x01\x11\0gB\x11\0g\x02d\x80\x83Ad\x80\x83\x01d\x80\x91Ad\x80\x91\x01d\x80\x98Ad\x80\x98\x01d\x80\x93Ad\x80\x93\x01d\x80\x96Ad\x80\x96\x01\x11\0aB\x11\0a\x02\x11\0[B\x11\0[\x02e\x80\x96Ae\x80\x96\x01e\0\x98Ae\0\x98\x01\x11\0UB\x11\0U\x02f\x80\x83Af\x80\x83\x01g\0\x82Ag\0\x82\x01h\x80\x83Ah\x80\x83\x01h\x80\x91Ah\x80\x91\x01h\0\x84Ah\0\x84\x01h\x80\x93Ah\x80\x93\x01h\0\x97Ah\0\x97\x01i\0\x98Ai\0\x98\x01\x11\0OB\x11\0O\x02k\x80\x80Ak\x80\x80\x01k\x80\x91Ak\x80\x91\x01k\x80\x98Ak\x80\x98\x01l\x80\x91Al\x80\x91\x01\x11\0IB\x11\0I\x02l\x80\x98Al\x80\x98\x01l\x80\x96Al\x80\x96\x01m\x80\x80Am\x80\x80\x01m\x80\x83Am\x80\x83\x01m\x80\x91Am\x80\x91\x01n\x80\x83An\x80\x83\x01n\x80\x91An\x80\x91\x01n\x80\x98An\x80\x98\x01n\x80\x96An\x80\x96\x01\x11\0CB\x11\0C\x02\x11\0=B\x11\0=\x02\x11\x007B\x11\x007\x02\x11\x001B\x11\x001\x02p\x80\x80Ap\x80\x80\x01p\x80\x83Ap\x80\x83\x01r\x80\x83Ar\x80\x83\x01r\x80\x91Ar\x80\x91\x01\x11\0+B\x11\0+\x02r\x80\x98Ar\x80\x98\x01s\x80\x83As\x80\x83\x01s\x80\x91As\x80\x91\x01\x11\0%B\x11\0%\x02\x11\0\x1FB\x11\0\x1F\x02\x11\0\x19B\x11\0\x19\x02t\x80\x83At\x80\x83\x01t\x80\x91At\x80\x91\x01t\x80\x98At\x80\x98\x01t\x80\x96At\x80\x96\x01u\0\x92Au\0\x92\x01u\0\x98Au\0\x98\x01u\x80\x96Au\x80\x96\x01\x11\0\x13B\x11\0\x13\x02\x11\0\rB\x11\0\r\x02v\x80\x81Av\x80\x81\x01v\x80\x91Av\x80\x91\x01w\0\x80Aw\0\x80\x01w\x80\x80Aw\x80\x80\x01w\0\x84Aw\0\x84\x01w\x80\x83Aw\x80\x83\x01w\x80\x91Aw\x80\x91\x01x\x80\x83Ax\x80\x83\x01x\0\x84Ax\0\x84\x01y\x80\x83Ay\x80\x83\x01z\0\x81Az\0\x81\x01z\x80\x91Az\x80\x91\x01z\x80\x98Az\x80\x98\x01h\x80\x98\x01t\0\x84\x01w\0\x85\x01y\0\x85\x01\0\0\xF7Ks\x80\x83A\0\0\0\0\0\0\0\0\xDF\0\0@\0\0\0\0a\x80\x91Aa\x80\x91\x01a\x80\x84Aa\x80\x84\x01\x11\0\x07B\x11\0\x07\x02\x11\0\x01B\x11\0\x01\x02\x11\0\xFBA\x11\0\xFB\x01\x11\0\xF5A\x11\0\xF5\x01\x11\0\xEFA\x11\0\xEF\x01\x11\0\xE9A\x11\0\xE9\x01\x11\0\xE3A\x11\0\xE3\x01\x11\0\xDDA\x11\0\xDD\x01\x11\0\xD7A\x11\0\xD7\x01\x11\0\xD1A\x11\0\xD1\x01e\x80\x91Ae\x80\x91\x01e\x80\x84Ae\x80\x84\x01e\x80\x81Ae\x80\x81\x01\x11\0\xCBA\x11\0\xCB\x01\x11\0\xC5A\x11\0\xC5\x01\x11\0\xBFA\x11\0\xBF\x01\x11\0\xB9A\x11\0\xB9\x01\x11\0\xB3A\x11\0\xB3\x01i\x80\x84Ai\x80\x84\x01i\x80\x91Ai\x80\x91\x01o\x80\x91Ao\x80\x91\x01o\x80\x84Ao\x80\x84\x01\x11\0\xADA\x11\0\xAD\x01\x11\0\xA7A\x11\0\xA7\x01\x11\0\xA1A\x11\0\xA1\x01\x11\0\x9BA\x11\0\x9B\x01\x11\0\x95A\x11\0\x95\x01\x11\0\x8FA\x11\0\x8F\x01\x11\0\x89A\x11\0\x89\x01\x11\0\x83A\x11\0\x83\x01\x11\0}A\x11\0}\x01\x11\0wA\x11\0w\x01u\x80\x91Au\x80\x91\x01u\x80\x84Au\x80\x84\x01\x11\0qA\x11\0q\x01\x11\0kA\x11\0k\x01\x11\0eA\x11\0e\x01\x11\0_A\x11\0_\x01\x11\0YA\x11\0Y\x01y\0\x80Ay\0\x80\x01y\x80\x91Ay\x80\x91\x01y\x80\x84Ay\x80\x84\x01y\x80\x81Ay\x80\x81\x01\xFB\x1E\0@\0\0\0\0\xFD\x1E\0@\0\0\0\0\xFF\x1E\0@\0\0\0\0\xB1\x83\x89\x01\xB1\x03\x8A\x01\x11\0\xE0\0\x11\0\xDC\0\x11\0\xD8\0\x11\0\xD4\0\x11\0\xD0\0\x11\0\xCC\0\xB1\x83\x89A\xB1\x03\x8AA\x11\0\xE0@\x11\0\xDC@\x11\0\xD8@\x11\0\xD4@\x11\0\xD0@\x11\0\xCC@\xB5\x83\x89\x01\xB5\x03\x8A\x01\x11\0V\x01\x11\0S\x01\x11\0P\x01\x11\0M\x01\xFD\xFF\0@\xFD\xFF\0@\xB5\x83\x89A\xB5\x03\x8AA\x11\0VA\x11\0SA\x11\0PA\x11\0MA\xFD\xFF\0@\xFD\xFF\0@\xB7\x83\x89\x01\xB7\x03\x8A\x01\x11\0\xA4\0\x11\0\xA0\0\x11\0\x9C\0\x11\0\x98\0\x11\0\x94\0\x11\0\x90\0\xB7\x83\x89A\xB7\x03\x8AA\x11\0\xA4@\x11\0\xA0@\x11\0\x9C@\x11\0\x98@\x11\0\x94@\x11\0\x90@\xB9\x83\x89\x01\xB9\x03\x8A\x01\x11\0>\x01\x11\0;\x01\x11\08\x01\x11\x005\x01\x11\x002\x01\x11\0/\x01\xB9\x83\x89A\xB9\x03\x8AA\x11\0>A\x11\0;A\x11\08A\x11\x005A\x11\x002A\x11\0/A\xBF\x83\x89\x01\xBF\x03\x8A\x01\x11\0\x1A\x01\x11\0\x17\x01\x11\0\x14\x01\x11\0\x11\x01\xFD\xFF\0@\xFD\xFF\0@\xBF\x83\x89A\xBF\x03\x8AA\x11\0\x1AA\x11\0\x17A\x11\0\x14A\x11\0\x11A\xFD\xFF\0@\xFD\xFF\0@\xC5\x83\x89\x01\xC5\x03\x8A\x01\x11\0\x02\x01\x11\0\xFF\0\x11\0\xFC\0\x11\0\xF9\0\x11\0\xF6\0\x11\0\xF3\0\xFD\xFF\0@\xC5\x03\x8AA\xFD\xFF\0@\x11\0\xFF@\xFD\xFF\0@\x11\0\xF9@\xFD\xFF\0@\x11\0\xF3@\xC9\x83\x89\x01\xC9\x03\x8A\x01\x11\0h\0\x11\0d\0\x11\0`\0\x11\0\\\0\x11\0X\0\x11\0T\0\xC9\x83\x89A\xC9\x03\x8AA\x11\0h@\x11\0d@\x11\0`@\x11\0\\@\x11\0X@\x11\0T@\xB1\x03\x80\x01\xB1\x83\x80A\xB5\x03\x80\x01\xB5\x83\x80A\xB7\x03\x80\x01\xB7\x83\x80A\xB9\x03\x80\x01\xB9\x83\x80A\xBF\x03\x80\x01\xBF\x83\x80A\xC5\x03\x80\x01\xC5\x83\x80A\xC9\x03\x80\x01\xC9\x83\x80A\xFD\xFF\0@\xFD\xFF\0@\x01\0JM\x01\0GM\x02\0CM\x02\0?M\x02\0;M\x02\x007M\x02\x003M\x02\0/M\x01\0JM\x01\0GM\x02\0CM\x02\0?M\x02\0;M\x02\x007M\x02\x003M\x02\0/M\x01\0,M\x01\0)M\x02\0%M\x02\0!M\x02\0\x1DM\x02\0\x19M\x02\0\x15M\x02\0\x11M\x01\0,M\x01\0)M\x02\0%M\x02\0!M\x02\0\x1DM\x02\0\x19M\x02\0\x15M\x02\0\x11M\x01\0\x0EM\x01\0\x0BM\x02\0\x07M\x02\0\x03M\x02\0\xFFL\x02\0\xFBL\x02\0\xF7L\x02\0\xF3L\x01\0\x0EM\x01\0\x0BM\x02\0\x07M\x02\0\x03M\x02\0\xFFL\x02\0\xFBL\x02\0\xF7L\x02\0\xF3L\xB1\x03\x83\x01\xB1\x03\x82\x01\x01\0\xF0L\0\0\xE8L\x01\0\xEDL\xFD\xFF\0@\xB1\x03\xA1\x01\x01\0\xEAL\xB1\x03\x83A\xB1\x03\x82A\xB1\x03\x80A\xB1\x83\x80A\0\0\xE8L \x80\x89A\xB9\x03\0@ \x80\x89A \0\xA1A\x11\0\xF4K\x01\0\xE5L\0\0\xDDL\x01\0\xE2L\xFD\xFF\0@\xB7\x03\xA1\x01\x01\0\xDFL\xB5\x03\x80A\xB5\x83\x80A\xB7\x03\x80A\xB7\x83\x80A\0\0\xDDL\x11\0\xF1K\x11\0\xEEK\x11\0\xEBK\xB9\x03\x83\x01\xB9\x03\x82\x01\x11\0!\0\x11\0\x1E@\xFD\xFF\0@\xFD\xFF\0@\xB9\x03\xA1\x01\x11\0\x1B\0\xB9\x03\x83A\xB9\x03\x82A\xB9\x03\x80A\xB9\x83\x80A\xFD\xFF\0@\x11\0\xE8K\x11\0\xE5K\x11\0\xE2K\xC5\x03\x83\x01\xC5\x03\x82\x01\x11\0\x18\0\x11\0\x15@\xC1\x83\x89\x01\xC1\x03\x8A\x01\xC5\x03\xA1\x01\x11\0\x12\0\xC5\x03\x83A\xC5\x03\x82A\xC5\x03\x80A\xC5\x83\x80A\xC1\x03\x8AA\x11\0\xDFK\x11\0\xDCK`\0\0@\xFD\xFF\0@\xFD\xFF\0@\x01\0\xDAL\0\0\xD2L\x01\0\xD7L\xFD\xFF\0@\xC9\x03\xA1\x01\x01\0\xD4L\xBF\x03\x80A\xBF\x83\x80A\xC9\x03\x80A\xC9\x83\x80A\0\0\xD2L \x80\x80A \0\x8AA\xFD\xFF\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@ \0\0@\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\x10 \0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \x80\x99A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@ \0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCFK\x01\0\xCFK\0\0\0\0\0\0\xD9K\x01\0\xD9K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD6K\0\0\0\0 \x80\x82A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD4K\0\0\xD5K\0\0\xD3K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\xCFK\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0@\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF0\0\0@i\0\0@\xFD\xFF\0@\xFD\xFF\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@+\0\0@\x12\"\0@=\0\0@(\0\0@)\0\0@n\0\0@0\0\0@1\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@+\0\0@\x12\"\0@=\0\0@(\0\0@)\0\0@\xFD\xFF\0@a\0\0@e\0\0@o\0\0@x\0\0@Y\x02\0@h\0\0@k\0\0@l\0\0@m\0\0@n\0\0@p\0\0@s\0\0@t\0\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD0L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x01\xD8\0\x80\x01\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\x01\0\xCAK\x01\0\xC7Kc\0\0@\0\0\xCEL\0\0\0\0\x01\0\xC2K\x01\0\xBFK[\x02\0@\0\0\0\0\0\0\xCCLg\0\0@h\0\0@h\0\0@h\0\0@h\0\0@'\x01\0@i\0\0@i\0\0@l\0\0@l\0\0@\0\0\0\0n\0\0@\0\0\xCAL\0\0\0\0\0\0\0\0p\0\0@q\0\0@r\0\0@r\0\0@r\0\0@\0\0\0\0\0\0\0\0\0\0\xC8L\x01\0\xC5L\0\0\xC3L\0\0\0\0z\0\0@\0\0\0\0\xC9\x03\0@\0\0\0\0z\0\0@\0\0\0\0k\0\0@\x10\0\xD5Bb\0\0@c\0\0@\0\0\0\0e\0\0@f\0\0@N!\0@m\0\0@o\0\0@\xD0\x05\0@\xD1\x05\0@\xD2\x05\0@\xD3\x05\0@i\0\0@\0\0\0\0\x01\0\xC0L\xC0\x03\0@\xB3\x03\0@\xB3\x03\0@\xC0\x03\0@\x11\"\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\0\0@d\0\0@e\0\0@i\0\0@j\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x84K\x01\0\xAEK\x02\0\xAAK\x01\0\xA7K\x01\0\xA4K\x01\0\xA1K\x01\0\x9EK\x01\0\x9BK\x01\0\x98K\x01\0\x95K\x01\0\x92K\x01\0\x8FK\x01\0\x8CK\x01\0\x89K\x01\0\x86K\0\0\x84Ki\0\0@\0\0oK\x01\0oK\0\0wKv\0\0@\0\0sK\x01\0sK\x02\0sK\0\0qKx\0\0@\0\0nK\x01\0nKl\0\0@c\0\0@d\0\0@m\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\x84!\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0kK\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90!\x9C\x01\x92!\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94!\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD0!\x9C\x01\xD4!\x9C\x01\xD2!\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\"\x9C\x01\0\0\0\0\0\0\0\0\x0B\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\"\x9C\x01\0\0\0\0%\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAEJ\x01\0\xAEJ\0\0\0\0\0\0hK\x01\0hK\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\"\x9C\x01\0\0\0\0\0\0\0\0C\"\x9C\x01\0\0\0\0\0\0\0\0E\"\x9C\x01\0\0\0\0H\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0\x9C\x01\0\0\0\0a\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0M\"\x9C\x01<\0\x9C\x01>\0\x9C\x01d\"\x9C\x01e\"\x9C\x01\0\0\0\0\0\0\0\0r\"\x9C\x01s\"\x9C\x01\0\0\0\0\0\0\0\0v\"\x9C\x01w\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0z\"\x9C\x01{\"\x9C\x01\0\0\0\0\0\0\0\0\x82\"\x9C\x01\x83\"\x9C\x01\0\0\0\0\0\0\0\0\x86\"\x9C\x01\x87\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA2\"\x9C\x01\xA8\"\x9C\x01\xA9\"\x9C\x01\xAB\"\x9C\x01|\"\x9C\x01}\"\x9C\x01\x91\"\x9C\x01\x92\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB2\"\x9C\x01\xB3\"\x9C\x01\xB4\"\x9C\x01\xB5\"\x9C\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x080\0@\t0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x001\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@\0\0\xF6F\0\0\xF3F\0\0\xF0F\0\0\xEDF\0\0\xEAF\0\0\xE7F\0\0\xE4F\0\0\xE1F\0\0\xDEF\0\0\xDBF\0\0\xD8F\x01\0eK\x01\0bK\x01\0_K\x01\0\\K\x01\0YK\x01\0VK\x01\0SK\x01\0PK\x01\0MK\x02\0IK\x02\0EK\x02\0AK\x02\0=K\x02\09K\x02\x005K\x02\x001K\x02\0-K\x02\0)K\x02\0%K\x02\0!K\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\x01\0\xFDJ\x01\0\xFAJ\x01\0\xF7J\x01\0\xF4J\x01\0\xF1J\x01\0\xEEJ\x01\0\xEBJ\x01\0\xE8J\x01\0\xE5J\x01\0\xE2J\x01\0\xDFJ\x01\0\xDCJ\x01\0\xD9J\x01\0\xD6J\x01\0\xD3J\x01\0\xD0J\x01\0\xCDJ\x01\0\xCAJ\x01\0\xC7J\x01\0\xC4J\x01\0\xC1J\x01\0\xBEJ\x01\0\xBBJ\x01\0\xB8J\x01\0\xB5J\x01\0\xB2Ja\0\0@b\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@h\0\0@i\0\0@j\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@0\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\xAEJ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xABJ\0\0\xA8J\x01\0\xA8J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDD*\x9CA\0\0\0\0\0\0\0\0\0\0\0\x000,\0@1,\0@2,\0@3,\0@4,\0@5,\0@6,\0@7,\0@8,\0@9,\0@:,\0@;,\0@<,\0@=,\0@>,\0@?,\0@@,\0@A,\0@B,\0@C,\0@D,\0@E,\0@F,\0@G,\0@H,\0@I,\0@J,\0@K,\0@L,\0@M,\0@N,\0@O,\0@P,\0@Q,\0@R,\0@S,\0@T,\0@U,\0@V,\0@W,\0@X,\0@Y,\0@Z,\0@[,\0@\\,\0@],\0@^,\0@_,\0@a,\0@\0\0\0\0k\x02\0@}\x1D\0@}\x02\0@\0\0\0\0\0\0\0\0h,\0@\0\0\0\0j,\0@\0\0\0\0l,\0@\0\0\0\0Q\x02\0@q\x02\0@P\x02\0@R\x02\0@\0\0\0\0s,\0@\0\0\0\0\0\0\0\0v,\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\0\0@v\0\0@?\x02\0@@\x02\0@\x81,\0@\0\0\0\0\x83,\0@\0\0\0\0\x85,\0@\0\0\0\0\x87,\0@\0\0\0\0\x89,\0@\0\0\0\0\x8B,\0@\0\0\0\0\x8D,\0@\0\0\0\0\x8F,\0@\0\0\0\0\x91,\0@\0\0\0\0\x93,\0@\0\0\0\0\x95,\0@\0\0\0\0\x97,\0@\0\0\0\0\x99,\0@\0\0\0\0\x9B,\0@\0\0\0\0\x9D,\0@\0\0\0\0\x9F,\0@\0\0\0\0\xA1,\0@\0\0\0\0\xA3,\0@\0\0\0\0\xA5,\0@\0\0\0\0\xA7,\0@\0\0\0\0\xA9,\0@\0\0\0\0\xAB,\0@\0\0\0\0\xAD,\0@\0\0\0\0\xAF,\0@\0\0\0\0\xB1,\0@\0\0\0\0\xB3,\0@\0\0\0\0\xB5,\0@\0\0\0\0\xB7,\0@\0\0\0\0\xB9,\0@\0\0\0\0\xBB,\0@\0\0\0\0\xBD,\0@\0\0\0\0\xBF,\0@\0\0\0\0\xC1,\0@\0\0\0\0\xC3,\0@\0\0\0\0\xC5,\0@\0\0\0\0\xC7,\0@\0\0\0\0\xC9,\0@\0\0\0\0\xCB,\0@\0\0\0\0\xCD,\0@\0\0\0\0\xCF,\0@\0\0\0\0\xD1,\0@\0\0\0\0\xD3,\0@\0\0\0\0\xD5,\0@\0\0\0\0\xD7,\0@\0\0\0\0\xD9,\0@\0\0\0\0\xDB,\0@\0\0\0\0\xDD,\0@\0\0\0\0\xDF,\0@\0\0\0\0\xE1,\0@\0\0\0\0\xE3,\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xEC,\0@\0\0\0\0\xEE,\0@\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xF3,\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@a-\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCDk\0@\0\0\0\0\0\0\0\0\0\0\0\0\x9F\x9F\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0N\0@(N\0@6N\0@?N\0@YN\0@\x85N\0@\x8CN\0@\xA0N\0@\xBAN\0@?Q\0@eQ\0@kQ\0@\x82Q\0@\x96Q\0@\xABQ\0@\xE0Q\0@\xF5Q\0@\0R\0@\x9BR\0@\xF9R\0@\x15S\0@\x1AS\0@8S\0@AS\0@\\S\0@iS\0@\x82S\0@\xB6S\0@\xC8S\0@\xE3S\0@\xD7V\0@\x1FW\0@\xEBX\0@\x02Y\0@\nY\0@\x15Y\0@'Y\0@sY\0@P[\0@\x80[\0@\xF8[\0@\x0F\\\0@\"\\\0@8\\\0@n\\\0@q\\\0@\xDB]\0@\xE5]\0@\xF1]\0@\xFE]\0@r^\0@z^\0@\x7F^\0@\xF4^\0@\xFE^\0@\x0B_\0@\x13_\0@P_\0@a_\0@s_\0@\xC3_\0@\x08b\0@6b\0@Kb\0@/e\0@4e\0@\x87e\0@\x97e\0@\xA4e\0@\xB9e\0@\xE0e\0@\xE5e\0@\xF0f\0@\x08g\0@(g\0@ k\0@bk\0@yk\0@\xB3k\0@\xCBk\0@\xD4k\0@\xDBk\0@\x0Fl\0@\x14l\0@4l\0@kp\0@*r\0@6r\0@;r\0@?r\0@Gr\0@Yr\0@[r\0@\xACr\0@\x84s\0@\x89s\0@\xDCt\0@\xE6t\0@\x18u\0@\x1Fu\0@(u\0@0u\0@\x8Bu\0@\x92u\0@vv\0@}v\0@\xAEv\0@\xBFv\0@\xEEv\0@\xDBw\0@\xE2w\0@\xF3w\0@:y\0@\xB8y\0@\xBEy\0@tz\0@\xCBz\0@\xF9z\0@s|\0@\xF8|\0@6\x7F\0@Q\x7F\0@\x8A\x7F\0@\xBD\x7F\0@\x01\x80\0@\x0C\x80\0@\x12\x80\0@3\x80\0@\x7F\x80\0@\x89\x80\0@\xE3\x81\0@\xEA\x81\0@\xF3\x81\0@\xFC\x81\0@\x0C\x82\0@\x1B\x82\0@\x1F\x82\0@n\x82\0@r\x82\0@x\x82\0@M\x86\0@k\x86\0@@\x88\0@L\x88\0@c\x88\0@~\x89\0@\x8B\x89\0@\xD2\x89\0@\0\x8A\0@7\x8C\0@F\x8C\0@U\x8C\0@x\x8C\0@\x9D\x8C\0@d\x8D\0@p\x8D\0@\xB3\x8D\0@\xAB\x8E\0@\xCA\x8E\0@\x9B\x8F\0@\xB0\x8F\0@\xB5\x8F\0@\x91\x90\0@I\x91\0@\xC6\x91\0@\xCC\x91\0@\xD1\x91\0@w\x95\0@\x80\x95\0@\x1C\x96\0@\xB6\x96\0@\xB9\x96\0@\xE8\x96\0@Q\x97\0@^\x97\0@b\x97\0@i\x97\0@\xCB\x97\0@\xED\x97\0@\xF3\x97\0@\x01\x98\0@\xA8\x98\0@\xDB\x98\0@\xDF\x98\0@\x96\x99\0@\x99\x99\0@\xAC\x99\0@\xA8\x9A\0@\xD8\x9A\0@\xDF\x9A\0@%\x9B\0@/\x9B\0@2\x9B\0@<\x9B\0@Z\x9B\0@\xE5\x9C\0@u\x9E\0@\x7F\x9E\0@\xA5\x9E\0@\xBB\x9E\0@\xC3\x9E\0@\xCD\x9E\0@\xD1\x9E\0@\xF9\x9E\0@\xFD\x9E\0@\x0E\x9F\0@\x13\x9F\0@ \x9F\0@;\x9F\0@J\x9F\0@R\x9F\0@\x8D\x9F\0@\x9C\x9F\0@\xA0\x9F\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@ \0\0@\0\0\0\0.\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\xD8\0\x80\xE4\xD8\0\x80\xE8\xD8\0\x80\xDE\xD8\0\x80\xE0\xD8\0\x80\xE0\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x120\0@\0\0\0\0AS\0@DS\0@ES\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0K\xB0L\x18\0\0\0\0M\xB0L\x18\0\0\0\0O\xB0L\x18\0\0\0\0Q\xB0L\x18\0\0\0\0S\xB0L\x18\0\0\0\0U\xB0L\x18\0\0\0\0W\xB0L\x18\0\0\0\0Y\xB0L\x18\0\0\0\0[\xB0L\x18\0\0\0\0]\xB0L\x18\0\0\0\0_\xB0L\x18\0\0\0\0a\xB0L\x18\0\0\0\0\0\0\0\0d\xB0L\x18\0\0\0\0f\xB0L\x18\0\0\0\0h\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0o\xB0L\x18o0M\x18\0\0\0\0r\xB0L\x18r0M\x18\0\0\0\0u\xB0L\x18u0M\x18\0\0\0\0x\xB0L\x18x0M\x18\0\0\0\0{\xB0L\x18{0M\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\xB0L\x18\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\x08\xD8\0\x80\x08\xD8\0\x80 \x80LX \0MX\0\0\0\0\x9D\xB0L\x18\0\0\xA6J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAB\xB0L\x18\0\0\0\0\xAD\xB0L\x18\0\0\0\0\xAF\xB0L\x18\0\0\0\0\xB1\xB0L\x18\0\0\0\0\xB3\xB0L\x18\0\0\0\0\xB5\xB0L\x18\0\0\0\0\xB7\xB0L\x18\0\0\0\0\xB9\xB0L\x18\0\0\0\0\xBB\xB0L\x18\0\0\0\0\xBD\xB0L\x18\0\0\0\0\xBF\xB0L\x18\0\0\0\0\xC1\xB0L\x18\0\0\0\0\0\0\0\0\xC4\xB0L\x18\0\0\0\0\xC6\xB0L\x18\0\0\0\0\xC8\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCF\xB0L\x18\xCF0M\x18\0\0\0\0\xD2\xB0L\x18\xD20M\x18\0\0\0\0\xD5\xB0L\x18\xD50M\x18\0\0\0\0\xD8\xB0L\x18\xD80M\x18\0\0\0\0\xDB\xB0L\x18\xDB0M\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA6\xB0L\x18\0\0\0\0\0\0\0\0\xEF\xB0L\x18\xF0\xB0L\x18\xF1\xB0L\x18\xF2\xB0L\x18\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xB0L\x18\0\0\xA4J\xFD\xFF\0@\0\x11\0@\x01\x11\0@\xAA\x11\0\xC0\x02\x11\0@\xAC\x11\0\xC0\xAD\x11\0\xC0\x03\x11\0@\x04\x11\0@\x05\x11\0@\xB0\x11\0\xC0\xB1\x11\0\xC0\xB2\x11\0\xC0\xB3\x11\0\xC0\xB4\x11\0\xC0\xB5\x11\0\xC0\x1A\x11\0@\x06\x11\0@\x07\x11\0@\x08\x11\0@!\x11\0@\t\x11\0@\n\x11\0@\x0B\x11\0@\x0C\x11\0@\r\x11\0@\x0E\x11\0@\x0F\x11\0@\x10\x11\0@\x11\x11\0@\x12\x11\0@a\x11\0\xC0b\x11\0\xC0c\x11\0\xC0d\x11\0\xC0e\x11\0\xC0f\x11\0\xC0g\x11\0\xC0h\x11\0\xC0i\x11\0\xC0j\x11\0\xC0k\x11\0\xC0l\x11\0\xC0m\x11\0\xC0n\x11\0\xC0o\x11\0\xC0p\x11\0\xC0q\x11\0\xC0r\x11\0\xC0s\x11\0\xC0t\x11\0\xC0u\x11\0\xC0\xFF\xFF\xFF\xFF\x14\x11\0@\x15\x11\0@\xC7\x11\0@\xC8\x11\0@\xCC\x11\0@\xCE\x11\0@\xD3\x11\0@\xD7\x11\0@\xD9\x11\0@\x1C\x11\0@\xDD\x11\0@\xDF\x11\0@\x1D\x11\0@\x1E\x11\0@ \x11\0@\"\x11\0@#\x11\0@'\x11\0@)\x11\0@+\x11\0@,\x11\0@-\x11\0@.\x11\0@/\x11\0@2\x11\0@6\x11\0@@\x11\0@G\x11\0@L\x11\0@\xF1\x11\0@\xF2\x11\0@W\x11\0@X\x11\0@Y\x11\0@\x84\x11\0@\x85\x11\0@\x88\x11\0@\x91\x11\0@\x92\x11\0@\x94\x11\0@\x9E\x11\0@\xA1\x11\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0N\0@\x8CN\0@\tN\0@\xDBV\0@\nN\0@-N\0@\x0BN\0@2u\0@YN\0@\x19N\0@\x01N\0@)Y\0@0W\0@\xBAN\0@\x01\0\xA1J\x01\0\x9EJ\x01\0\x9BJ\x01\0\x98J\x01\0\x95J\x01\0\x92J\x01\0\x8FJ\x01\0\x8CJ\x01\0\x89J\x01\0\x86J\x01\0\x83J\x01\0\x80J\x01\0}J\x01\0zJ\x02\0vJ\x02\0rJ\x02\0nJ\x02\0jJ\x02\0fJ\x02\0bJ\x02\0^J\x02\0ZJ\x02\0VJ\x02\0RJ\x02\0NJ\x02\0JJ\x02\0FJ\x02\0BJ\x02\0>J\x05\x007J\x04\x001J\xFD\xFF\0@\x01\0.J\x01\0+J\x01\0(J\x01\0%J\x01\0\"J\x01\0\x1FJ\x01\0\x1CJ\x01\0\x19J\x01\0\x16J\x01\0\x13J\x01\0\x10J\x01\0\rJ\x01\0\nJ\x01\0\x07J\x01\0\x04J\x01\0\x01J\x01\0\xFEI\x01\0\xFBI\x01\0\xF8I\x01\0\xF5I\x01\0\xF2I\x01\0\xEFI\x01\0\xECI\x01\0\xE9I\x01\0\xE6I\x01\0\xE3I\x01\0\xE0I\x01\0\xDDI\x01\0\xDAI\x01\0\xD7I\x01\0\xD4I\x01\0\xD1I\x01\0\xCEI\x01\0\xCBI\x01\0\xC8I\x01\0\xC5IOU\0@|^\0@\x87e\0@\x8F{\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xBDL\0\0\xD5F\0\0\xD2F\0\0\xCFF\0\0\xCCF\0\0\xC9F\0\0\xC6F\0\0\xC3F\0\0\xC0F\0\0\xBDF\0\0\xBAF\0\0\xB7F\0\0\xC0I\0\0\xBEI\0\0\x88I\0\0\xBCI\0\x11\0@\x02\x11\0@\x03\x11\0@\x05\x11\0@\x06\x11\0@\x07\x11\0@\t\x11\0@\x0B\x11\0@\x0C\x11\0@\x0E\x11\0@\x0F\x11\0@\x10\x11\0@\x11\x11\0@\x12\x11\0@\0\0\xBAI\0\0\xB8I\0\0\xB6I\0\0\xB4I\0\0\xB2I\0\0\xB0I\0\0\xAEI\0\0\xACI\0\0\xAAI\0\0\x9DI\0\0\xA8I\0\0\xA6I\0\0\xA4I\0\0\xA2I\x03\0\x9DI\x02\0\x99I\0\0\x97I\0\0\0\0\0N\0@\x8CN\0@\tN\0@\xDBV\0@\x94N\0@mQ\0@\x03N\0@kQ\0@]N\0@AS\0@\x08g\0@kp\0@4l\0@(g\0@\xD1\x91\0@\x1FW\0@\xE5e\0@*h\0@\tg\0@>y\0@\rT\0@yr\0@\xA1\x8C\0@]y\0@\xB4R\0@\xD8y\0@7u\0@sY\0@i\x90\0@*Q\0@pS\0@\xE8l\0@\x05\x98\0@\x11O\0@\x99Q\0@ck\0@\nN\0@-N\0@\x0BN\0@\xE6]\0@\xF3S\0@;S\0@\x97[\0@f[\0@\xE3v\0@\x01O\0@\xC7\x8C\0@TS\0@\x1CY\0@\0\0\x95I\0\0\x93I\0\0\x91I\0\0\x8FI\0\0\x8DI\0\0\x8BI\0\0\x89I\0\0\x87I\0\0\x85I\0\0\x83I\0\0\x81I\0\0\x7FI\0\0}I\0\0{I\0\0yI\0\0fI\0\0cI\0\0wI\0\0uI\0\0sI\0\0qI\0\0oI\0\0mI\0\0kI\x01\0hI\x01\0eI\x01\0bI\0\0\xBBL\x01\0]I\0\0\xB9L\x01\0\xB6L\xA20\0@\xA40\0@\xA60\0@\xA80\0@\xAA0\0@\xAB0\0@\xAD0\0@\xAF0\0@\xB10\0@\xB30\0@\xB50\0@\xB70\0@\xB90\0@\xBB0\0@\xBD0\0@\xBF0\0@\xC10\0@\xC40\0@\xC60\0@\xC80\0@\xCA0\0@\xCB0\0@\xCC0\0@\xCD0\0@\xCE0\0@\xCF0\0@\xD20\0@\xD50\0@\xD80\0@\xDB0\0@\xDE0\0@\xDF0\0@\xE00\0@\xE10\0@\xE20\0@\xE40\0@\xE60\0@\xE80\0@\xE90\0@\xEA0\0@\xEB0\0@\xEC0\0@\xED0\0@\xEF0\0@\xF00\0@\xF10\0@\xF20\0@\0\0VI\x03\0QI\x02\0MI\x03\0HI\x01\0EI\x03\0@I\x01\0=I\x01\0:I\x04\x004I\x02\x000I\x01\0-I\x01\0*I\x01\0'I\x02\0#I\x02\0\x1FI\x02\0\x1BI\x02\0\x17I\x02\0\x13I\x02\0\x0FI\x02\0\x0BI\x04\0\x05I\0\0\xF4H\x04\0\xFFH\x04\0\xF9H\x03\0\xF4H\x02\0\xEEH\x04\0\xEEH\x04\0\xE8H\x02\0\xE4H\x01\0\xE1H\x01\0\xDEH\x02\0\xDAH\x02\0\xD6H\x03\0\xD1H\x03\0\xCCH\x01\0\xC9H\x01\0\xB4H\x02\0\xC5H\x01\0\xC2H\x01\0\xBFH\0\x005H\0\0\xBDH\x01\0\xBAH\x01\0\xB7H\x04\0\xB1H\x02\0\xADH\x03\0\xA8H\x04\0\xA2H\x02\0\x9EH\x01\0\x9BH\x01\0\x98H\x04\0\x92H\x02\0\x8EH\x04\0\x88H\x01\0\x85H\x03\0\x80H\x01\0}H\x02\0yH\x01\0vH\x02\0rH\x03\0mH\x02\0iH\x03\0dH\x02\0`H\0\0^H\x03\0YH\x01\0VH\x01\0SH\x02\0OH\x01\0LH\x01\0IH\x01\0FH\x03\0AH\x02\0=H\0\x007H\x04\x007H\x01\x002H\x03\x002H\x02\0.H\x02\0*H\x01\0'H\x01\0$H\x02\0 H\0\0\x1EH\x02\0\x1AH\x03\0\x15H\0\0\x13H\x04\0\rH\x01\0\nH\0\0\xEAG\0\0\xE7G\0\0\xE4G\0\0\xE1G\0\0\xDEG\0\0\xF9G\0\0\xF6G\0\0\xF3G\0\0\xF0G\0\0\xEDG\x01\0\x07H\x01\0\x04H\x01\0\x01H\x01\0\xFEG\x01\0\xFBG\x01\0\xF8G\x01\0\xF5G\x01\0\xF2G\x01\0\xEFG\x01\0\xECG\x01\0\xE9G\x01\0\xE6G\x01\0\xE3G\x01\0\xE0G\x01\0\xDDG\x01\0\xB3L\0\0\xD8G\0\0\xB1L\x01\0\xD3G\0\0\xAFL\0\0\xCFG\0\0\xC9G\x01\0\xCCG\x01\0\xC9G\0\0\xADL\0\0\xC5G\0\0\xC3G\0\0\xC1G\0\0\xBFG\x02\0\xBBG\0\0\x89L\0\0\xABL\0\0\xA9L\0\0\xA7L\0\0\xA5L\0\0\xA3L\0\0\x16G\0\0sL\x01\0\xA8G\x02\0\xA7G\0\0\xA1L\0\0\x9FL\0\0\x9DL\0\0\x9FG\0\0\x9DG\0\x004G\0\0\x92L\x01\0\x9AL\x01\0\x97L\x01\0\x94L\x01\0\x91L\0\0\x8FG\0\0\x8DG\0\0\x8BG\0\0\x89G\0\0\x87G\0\0\x85G\0\0\x83G\0\0wG\0\0tG\0\0qG\x01\0\x80G\x01\0}G\0\0{G\x01\0zG\x01\0wG\x01\0tG\0\0rG\x01\0qG\x01\0mG\x02\0mG\0\0\x89L\x01\0\x8EL\x01\0\x8BL\x01\0\x88L\x01\0^G\x03\0^G\x04\0^G\0\0\\G\0\0ZG\0\0XG\0\0VG\0\0HL\0\0\x86L\0\0\x84L\0\0NL\0\0\x82L\0\0NL\0\0\x80L\0\0~L\0\0|L\0\0\\L\0\0zL\0\0\\L\0\0xL\0\0vL\xFD\xFF\0@\0\0tL\0\08G\0\x006G\x02\0pL\xFD\xFF\0@\0\0nL\0\0lL\0\0)G\0\0jL\0\0%G\0\0hL\0\0qG\0\0\x1FG\0\0\x12G\0\0\x1DG\x01\0\x1AG\0\0\x18G\0\0\x16G\x01\0\x13G\x01\0\x10G\0\0fL\xFD\xFF\0@\x01\0cL\0\0aL\0\0\x03G\0\0_L\0\0]L\x01\0ZL\x01\0WL\0\0\xB8F\0\0\xD3F\0\0\xD0F\0\0\xCDF\0\0\xCAF\0\0\xC7F\0\0\xC4F\0\0\xC1F\0\0\xBEF\x01\0\xF6F\x01\0\xF3F\x01\0\xF0F\x01\0\xEDF\x01\0\xEAF\x01\0\xE7F\x01\0\xE4F\x01\0\xE1F\x01\0\xDEF\x01\0\xDBF\x01\0\xD8F\x01\0\xD5F\x01\0\xD2F\x01\0\xCFF\x01\0\xCCF\x01\0\xC9F\x01\0\xC6F\x01\0\xC3F\x01\0\xC0F\x01\0\xBDF\x01\0\xBAF\x01\0\xB7F\x01\0\xB4FA\xA6\0@\0\0\0\0C\xA6\0@\0\0\0\0E\xA6\0@\0\0\0\0G\xA6\0@\0\0\0\0I\xA6\0@\0\0\0\0K\xA6\0@\0\0\0\0M\xA6\0@\0\0\0\0O\xA6\0@\0\0\0\0Q\xA6\0@\0\0\0\0S\xA6\0@\0\0\0\0U\xA6\0@\0\0\0\0W\xA6\0@\0\0\0\0Y\xA6\0@\0\0\0\0[\xA6\0@\0\0\0\0]\xA6\0@\0\0\0\0_\xA6\0@\0\0\0\0a\xA6\0@\0\0\0\0c\xA6\0@\0\0\0\0e\xA6\0@\0\0\0\0g\xA6\0@\0\0\0\0i\xA6\0@\0\0\0\0k\xA6\0@\0\0\0\0m\xA6\0@\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\x81\xA6\0@\0\0\0\0\x83\xA6\0@\0\0\0\0\x85\xA6\0@\0\0\0\0\x87\xA6\0@\0\0\0\0\x89\xA6\0@\0\0\0\0\x8B\xA6\0@\0\0\0\0\x8D\xA6\0@\0\0\0\0\x8F\xA6\0@\0\0\0\0\x91\xA6\0@\0\0\0\0\x93\xA6\0@\0\0\0\0\x95\xA6\0@\0\0\0\0\x97\xA6\0@\0\0\0\0\x99\xA6\0@\0\0\0\0\x9B\xA6\0@\0\0\0\0J\x04\0@L\x04\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0#\xA7\0@\0\0\0\0%\xA7\0@\0\0\0\0'\xA7\0@\0\0\0\0)\xA7\0@\0\0\0\0+\xA7\0@\0\0\0\0-\xA7\0@\0\0\0\0/\xA7\0@\0\0\0\0\0\0\0\x003\xA7\0@\0\0\0\x005\xA7\0@\0\0\0\x007\xA7\0@\0\0\0\09\xA7\0@\0\0\0\0;\xA7\0@\0\0\0\0=\xA7\0@\0\0\0\0?\xA7\0@\0\0\0\0A\xA7\0@\0\0\0\0C\xA7\0@\0\0\0\0E\xA7\0@\0\0\0\0G\xA7\0@\0\0\0\0I\xA7\0@\0\0\0\0K\xA7\0@\0\0\0\0M\xA7\0@\0\0\0\0O\xA7\0@\0\0\0\0Q\xA7\0@\0\0\0\0S\xA7\0@\0\0\0\0U\xA7\0@\0\0\0\0W\xA7\0@\0\0\0\0Y\xA7\0@\0\0\0\0[\xA7\0@\0\0\0\0]\xA7\0@\0\0\0\0_\xA7\0@\0\0\0\0a\xA7\0@\0\0\0\0c\xA7\0@\0\0\0\0e\xA7\0@\0\0\0\0g\xA7\0@\0\0\0\0i\xA7\0@\0\0\0\0k\xA7\0@\0\0\0\0m\xA7\0@\0\0\0\0o\xA7\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0z\xA7\0@\0\0\0\0|\xA7\0@\0\0\0\0y\x1D\0@\x7F\xA7\0@\0\0\0\0\x81\xA7\0@\0\0\0\0\x83\xA7\0@\0\0\0\0\x85\xA7\0@\0\0\0\0\x87\xA7\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8C\xA7\0@\0\0\0\0e\x02\0@\0\0\0\0\0\0\0\0\x91\xA7\0@\0\0\0\0\x93\xA7\0@\0\0\0\0\0\0\0\0\0\0\0\0\x97\xA7\0@\0\0\0\0\x99\xA7\0@\0\0\0\0\x9B\xA7\0@\0\0\0\0\x9D\xA7\0@\0\0\0\0\x9F\xA7\0@\0\0\0\0\xA1\xA7\0@\0\0\0\0\xA3\xA7\0@\0\0\0\0\xA5\xA7\0@\0\0\0\0\xA7\xA7\0@\0\0\0\0\xA9\xA7\0@\0\0\0\0f\x02\0@\\\x02\0@a\x02\0@l\x02\0@j\x02\0@\0\0\0\0\x9E\x02\0@\x87\x02\0@\x9D\x02\0@S\xAB\0@\xB5\xA7\0@\0\0\0\0\xB7\xA7\0@\0\0\0\0\xB9\xA7\0@\0\0\0\0\xBB\xA7\0@\0\0\0\0\xBD\xA7\0@\0\0\0\0\xBF\xA7\0@\0\0\0\0\xC1\xA7\0@\0\0\0\0\xC3\xA7\0@\0\0\0\0\x94\xA7\0@\x82\x02\0@\x8E\x1D\0@\xC8\xA7\0@\0\0\0\0\xCA\xA7\0@\0\0\0\0d\x02\0@\xCD\xA7\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xD1\xA7\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\xD7\xA7\0@\0\0\0\0\xD9\xA7\0@\0\0\0\0\xDB\xA7\0@\0\0\0\0\x9B\x01\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@c\0\0@f\0\0@q\0\0@\xF6\xA7\0@\0\0\0\0\0\0\0\0'\x01\0@S\x01\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'\xA7\0@7\xAB\0@k\x02\0@R\xAB\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8D\x02\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xA0\x13\0@\xA1\x13\0@\xA2\x13\0@\xA3\x13\0@\xA4\x13\0@\xA5\x13\0@\xA6\x13\0@\xA7\x13\0@\xA8\x13\0@\xA9\x13\0@\xAA\x13\0@\xAB\x13\0@\xAC\x13\0@\xAD\x13\0@\xAE\x13\0@\xAF\x13\0@\xB0\x13\0@\xB1\x13\0@\xB2\x13\0@\xB3\x13\0@\xB4\x13\0@\xB5\x13\0@\xB6\x13\0@\xB7\x13\0@\xB8\x13\0@\xB9\x13\0@\xBA\x13\0@\xBB\x13\0@\xBC\x13\0@\xBD\x13\0@\xBE\x13\0@\xBF\x13\0@\xC0\x13\0@\xC1\x13\0@\xC2\x13\0@\xC3\x13\0@\xC4\x13\0@\xC5\x13\0@\xC6\x13\0@\xC7\x13\0@\xC8\x13\0@\xC9\x13\0@\xCA\x13\0@\xCB\x13\0@\xCC\x13\0@\xCD\x13\0@\xCE\x13\0@\xCF\x13\0@\xD0\x13\0@\xD1\x13\0@\xD2\x13\0@\xD3\x13\0@\xD4\x13\0@\xD5\x13\0@\xD6\x13\0@\xD7\x13\0@\xD8\x13\0@\xD9\x13\0@\xDA\x13\0@\xDB\x13\0@\xDC\x13\0@\xDD\x13\0@\xDE\x13\0@\xDF\x13\0@\xE0\x13\0@\xE1\x13\0@\xE2\x13\0@\xE3\x13\0@\xE4\x13\0@\xE5\x13\0@\xE6\x13\0@\xE7\x13\0@\xE8\x13\0@\xE9\x13\0@\xEA\x13\0@\xEB\x13\0@\xEC\x13\0@\xED\x13\0@\xEE\x13\0@\xEF\x13\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@H\x8C\0@\xF4f\0@\xCA\x8E\0@\xC8\x8C\0@\xD1n\0@2N\0@\xE5S\0@\x9C\x9F\0@\x9C\x9F\0@QY\0@\xD1\x91\0@\x87U\0@HY\0@\xF6a\0@iv\0@\x85\x7F\0@?\x86\0@\xBA\x87\0@\xF8\x88\0@\x8F\x90\0@\x02j\0@\x1Bm\0@\xD9p\0@\xDEs\0@=\x84\0@j\x91\0@\xF1\x99\0@\x82N\0@uS\0@\x04k\0@\x1Br\0@-\x86\0@\x1E\x9E\0@P]\0@\xEBo\0@\xCD\x85\0@d\x89\0@\xC9b\0@\xD8\x81\0@\x1F\x88\0@\xCA^\0@\x17g\0@jm\0@\xFCr\0@\xCE\x90\0@\x86O\0@\xB7Q\0@\xDER\0@\xC4d\0@\xD3j\0@\x10r\0@\xE7v\0@\x01\x80\0@\x06\x86\0@\\\x86\0@\xEF\x8D\0@2\x97\0@o\x9B\0@\xFA\x9D\0@\x8Cx\0@\x7Fy\0@\xA0}\0@\xC9\x83\0@\x04\x93\0@\x7F\x9E\0@\xD6\x8A\0@\xDFX\0@\x04_\0@`|\0@~\x80\0@br\0@\xCAx\0@\xC2\x8C\0@\xF7\x96\0@\xD8X\0@b\\\0@\x13j\0@\xDAm\0@\x0Fo\0@/}\0@7~\0@K\x96\0@\xD2R\0@\x8B\x80\0@\xDCQ\0@\xCCQ\0@\x1Cz\0@\xBE}\0@\xF1\x83\0@u\x96\0@\x80\x8B\0@\xCFb\0@\x02j\0@\xFE\x8A\0@9N\0@\xE7[\0@\x12`\0@\x87s\0@pu\0@\x17S\0@\xFBx\0@\xBFO\0@\xA9_\0@\rN\0@\xCCl\0@xe\0@\"}\0@\xC3S\0@^X\0@\x01w\0@I\x84\0@\xAA\x8A\0@\xBAk\0@\xB0\x8F\0@\x88l\0@\xFEb\0@\xE5\x82\0@\xA0c\0@eu\0@\xAEN\0@iQ\0@\xC9Q\0@\x81h\0@\xE7|\0@o\x82\0@\xD2\x8A\0@\xCF\x91\0@\xF5R\0@BT\0@sY\0@\xEC^\0@\xC5e\0@\xFEo\0@*y\0@\xAD\x95\0@j\x9A\0@\x97\x9E\0@\xCE\x9E\0@\x9BR\0@\xC6f\0@wk\0@b\x8F\0@t^\0@\x90a\0@\0b\0@\x9Ad\0@#o\0@Iq\0@\x89t\0@\xCAy\0@\xF4}\0@o\x80\0@&\x8F\0@\xEE\x84\0@#\x90\0@J\x93\0@\x17R\0@\xA3R\0@\xBDT\0@\xC8p\0@\xC2\x88\0@\xAA\x8A\0@\xC9^\0@\xF5_\0@{c\0@\xAEk\0@>|\0@us\0@\xE4N\0@\xF9V\0@\xE7[\0@\xBA]\0@\x1C`\0@\xB2s\0@it\0@\x9A\x7F\0@F\x80\0@4\x92\0@\xF6\x96\0@H\x97\0@\x18\x98\0@\x8BO\0@\xAEy\0@\xB4\x91\0@\xB8\x96\0@\xE1`\0@\x86N\0@\xDAP\0@\xEE[\0@?\\\0@\x99e\0@\x02j\0@\xCEq\0@Bv\0@\xFC\x84\0@|\x90\0@\x8D\x9F\0@\x88f\0@.\x96\0@\x89R\0@{g\0@\xF3g\0@Am\0@\x9Cn\0@\tt\0@Yu\0@kx\0@\x10}\0@^\x98\0@mQ\0@.b\0@x\x96\0@+P\0@\x19]\0@\xEAm\0@*\x8F\0@\x8B_\0@Da\0@\x17h\0@\x87s\0@\x86\x96\0@)R\0@\x0FT\0@e\\\0@\x13f\0@Ng\0@\xA8h\0@\xE5l\0@\x06t\0@\xE2u\0@y\x7F\0@\xCF\x88\0@\xE1\x88\0@\xCC\x91\0@\xE2\x96\0@?S\0@\xBAn\0@\x1DT\0@\xD0q\0@\x98t\0@\xFA\x85\0@\xA3\x96\0@W\x9C\0@\x9F\x9E\0@\x97g\0@\xCBm\0@\xE8\x81\0@\xCBz\0@ {\0@\x92|\0@\xC0r\0@\x99p\0@X\x8B\0@\xC0N\0@6\x83\0@:R\0@\x07R\0@\xA6^\0@\xD3b\0@\xD6|\0@\x85[\0@\x1Em\0@\xB4f\0@;\x8F\0@L\x88\0@M\x96\0@\x8B\x89\0@\xD3^\0@@Q\0@\xC0U\0@\0\0\0\0\0\0\0\0ZX\0@\0\0\0\0tf\0@\0\0\0\0\0\0\0\0\xDEQ\0@*s\0@\xCAv\0@<y\0@^y\0@ey\0@\x8Fy\0@V\x97\0@\xBE|\0@\xBD\x7F\0@\0\0\0\0\x12\x86\0@\0\0\0\0\xF8\x8A\0@\0\0\0\0\0\0\0\08\x90\0@\xFD\x90\0@\0\0\0\0\0\0\0\0\0\0\0\0\xEF\x98\0@\xFC\x98\0@(\x99\0@\xB4\x9D\0@\xDE\x90\0@\xB7\x96\0@\xAEO\0@\xE7P\0@MQ\0@\xC9R\0@\xE4R\0@QS\0@\x9DU\0@\x06V\0@hV\0@@X\0@\xA8X\0@d\\\0@n\\\0@\x94`\0@ha\0@\x8Ea\0@\xF2a\0@Oe\0@\xE2e\0@\x91f\0@\x85h\0@wm\0@\x1An\0@\"o\0@nq\0@+r\0@\"t\0@\x91x\0@>y\0@Iy\0@Hy\0@Py\0@Vy\0@]y\0@\x8Dy\0@\x8Ey\0@@z\0@\x81z\0@\xC0{\0@\xF4}\0@\t~\0@A~\0@r\x7F\0@\x05\x80\0@\xED\x81\0@y\x82\0@y\x82\0@W\x84\0@\x10\x89\0@\x96\x89\0@\x01\x8B\0@9\x8B\0@\xD3\x8C\0@\x08\x8D\0@\xB6\x8F\0@8\x90\0@\xE3\x96\0@\xFF\x97\0@;\x98\0@u`\0@\x10\0\xC7C\x18\x82\0@\xFD\xFF\0@\xFD\xFF\0@&N\0@\xB5Q\0@hQ\0@\x80O\0@EQ\0@\x80Q\0@\xC7R\0@\xFAR\0@\x9DU\0@UU\0@\x99U\0@\xE2U\0@ZX\0@\xB3X\0@DY\0@TY\0@bZ\0@([\0@\xD2^\0@\xD9^\0@i_\0@\xAD_\0@\xD8`\0@Na\0@\x08a\0@\x8Ea\0@`a\0@\xF2a\0@4b\0@\xC4c\0@\x1Cd\0@Rd\0@Ve\0@tf\0@\x17g\0@\x1Bg\0@Vg\0@yk\0@\xBAk\0@Am\0@\xDBn\0@\xCBn\0@\"o\0@\x1Ep\0@nq\0@\xA7w\0@5r\0@\xAFr\0@*s\0@qt\0@\x06u\0@;u\0@\x1Dv\0@\x1Fv\0@\xCAv\0@\xDBv\0@\xF4v\0@Jw\0@@w\0@\xCCx\0@\xB1z\0@\xC0{\0@{|\0@[}\0@\xF4}\0@>\x7F\0@\x05\x80\0@R\x83\0@\xEF\x83\0@y\x87\0@A\x89\0@\x86\x89\0@\x96\x89\0@\xBF\x8A\0@\xF8\x8A\0@\xCB\x8A\0@\x01\x8B\0@\xFE\x8A\0@\xED\x8A\0@9\x8B\0@\x8A\x8B\0@\x08\x8D\0@8\x8F\0@r\x90\0@\x99\x91\0@v\x92\0@|\x96\0@\xE3\x96\0@V\x97\0@\xDB\x97\0@\xFF\x97\0@\x0B\x98\0@;\x98\0@\x12\x9B\0@\x9C\x9F\0@\x10\0\xC6C\x10\0\xC5C\x10\0\xC4C\x9D;\0@\x18@\0@9@\0@\x10\0\xC3C\x10\0\xC2C\x10\0\xC1CC\x9F\0@\x8E\x9F\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\xAEF\0\0\xB2F\0\0\xAFF\x01\0\xB1F\x01\0\xAEF\0\0\xACF\0\0\xACF\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\xAAF\0\0\xA8F\0\0\xA6F\0\0\xA4F\0\0\xA2F\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xD9\x05\xDAB\x1A\xD8\0\x80\xF2\x85\xDBB\xE2\x05\0@\xD0\x05\0@\xD3\x05\0@\xD4\x05\0@\xDB\x05\0@\xDC\x05\0@\xDD\x05\0@\xE8\x05\0@\xEA\x05\0@+\0\0@\xE9\x85\xE0B\xE9\x05\xE1B\x11\0\x04@\x11\0\x01@\xD0\x85\xDBB\xD0\x05\xDCB\xD0\x05\xDEB\xD1\x05\xDEB\xD2\x05\xDEB\xD3\x05\xDEB\xD4\x05\xDEB\xD5\x05\xDEB\xD6\x05\xDEB\xFD\xFF\0@\xD8\x05\xDEB\xD9\x05\xDEB\xDA\x05\xDEB\xDB\x05\xDEB\xDC\x05\xDEB\xFD\xFF\0@\xDE\x05\xDEB\xFD\xFF\0@\xE0\x05\xDEB\xE1\x05\xDEB\xFD\xFF\0@\xE3\x05\xDEB\xE4\x05\xDEB\xFD\xFF\0@\xE6\x05\xDEB\xE7\x05\xDEB\xE8\x05\xDEB\xE9\x05\xDEB\xEA\x05\xDEB\xD5\x85\xDCB\xD1\x85\xDFB\xDB\x85\xDFB\xE4\x85\xDFB\0\0\xA0Fq\x06\0@q\x06\0@{\x06\0@{\x06\0@{\x06\0@{\x06\0@~\x06\0@~\x06\0@~\x06\0@~\x06\0@\x80\x06\0@\x80\x06\0@\x80\x06\0@\x80\x06\0@z\x06\0@z\x06\0@\x7F\x06\0@\x7F\x06\0@\x7F\x06\0@\x7F\x06\0@y\x06\0@y\x06\0@y\x06\0@y\x06\0@\xA4\x06\0@\xA4\x06\0@\xA4\x06\0@\xA4\x06\0@\xA6\x06\0@\xA6\x06\0@\x84\x06\0@\x84\x06\0@\x84\x06\0@\x84\x06\0@\x83\x06\0@\x83\x06\0@\x83\x06\0@\x83\x06\0@\x86\x06\0@\x86\x06\0@\x86\x06\0@\x86\x06\0@\x87\x06\0@\x87\x06\0@\x8D\x06\0@\x8D\x06\0@\x8C\x06\0@\x8C\x06\0@\x8E\x06\0@\x8E\x06\0@\x88\x06\0@\x88\x06\0@\x98\x06\0@\x98\x06\0@\x91\x06\0@\x91\x06\0@\xA9\x06\0@\xA9\x06\0@\xAF\x06\0@\xAF\x06\0@\xAF\x06\0@\xAF\x06\0@\xB3\x06\0@\xB3\x06\0@\xB3\x06\0@\xB3\x06\0@\xB1\x06\0@\xB1\x06\0@\xB1\x06\0@\xB1\x06\0@\xBA\x06\0@\xBA\x06\0@\xBB\x06\0@\xBB\x06\0@\xBB\x06\0@\xBB\x06\0@\xD5\x06*C\xD5\x06*C\xC1\x06\0@\xC1\x06\0@\xC1\x06\0@\xC1\x06\0@\xBE\x06\0@\xBE\x06\0@\xBE\x06\0@\xBE\x06\0@\xD2\x06\0@\xD2\x06\0@\xD2\x06*C\xD2\x06*C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xAD\x06\0@\xAD\x06\0@\xAD\x06\0@\xAD\x06\0@\xC7\x06\0@\xC7\x06\0@\xC6\x06\0@\xC6\x06\0@\xC8\x06\0@\xC8\x06\0@\0\0\x9EF\xCB\x06\0@\xCB\x06\0@\xC5\x06\0@\xC5\x06\0@\xC9\x06\0@\xC9\x06\0@\xD0\x06\0@\xD0\x06\0@\xD0\x06\0@\xD0\x06\0@I\x06\0@I\x06\0@\x01\0\x9BF\x01\0\x9BF\x01\0\x98F\x01\0\x98F\x01\0\x95F\x01\0\x95F\x01\0\x92F\x01\0\x92F\x01\0\x8FF\x01\0\x8FF\x01\0\x8CF\x01\0\x8CF\x01\0\x89F\x01\0\x89F\x01\0\x89F\x01\0eF\x01\0eF\x01\0eF\xCC\x06\0@\xCC\x06\0@\xCC\x06\0@\xCC\x06\0@\x01\0#F\x01\0 F\x01\0\xFCE\x01\0eF\x01\0bF\0\0\x1BF\0\0\xB7D\0\0\x1AE\0\0\xF7E\0\0\\F\0\0ZF\0\0\x14E\0\0\xADE\0\0\x0EE\0\0\x08E\0\0RF\0\0PF\0\0\x87F\0\0\xF1E\0\0HF\0\0FF\0\0\xC3D\0\0\xB2D\0\0\xC0D\0\0\x97D\0\0<E\0\0\x85F\0\x007E\0\0\x8FE\0\0\x95E\0\0\xABD\0\0\x86E\0\0\xF9D\0\0\xAED\0\0\x17F\0\0\xF3D\0\0qE\0\0\x15F\0\0\x13F\0\0hE\0\0\xB6E\0\0\xB1D\0\0\x94D\0\0\x11F\0\0\\E\0\0\x0FF\0\0\rF\0\0YE\0\0\xBAD\0\0DF\0\0BF\0\0\x0BF\0\0\xD8D\0\0@F\0\0>F\0\0<F\0\0\tF\0\0\x07F\0\0\x05F\0\0\xEDE\0\0\xB4D\0\0:F\0\08F\0\0zD\0\0\xD5D\0\0JE\0\0\x88D\0\0\x84D\0\0\x8BD\0\0\xBDD\0\0\x96D\0\0\xCCD\0\0\x95D\0\0\0E\0\0\xBBD\0\0\xA8D\0\0\xDBD\0\0\x03F\0\0\x1DE\0\0.F\0\0,F\0\0\x01F\0\0/E\0\0\x83F\0\0\xFBE\0\0\xC2D\0\0\xBFD\0\0\xFFE\0\0\xBCD\0\0&F\0\0\xE3D0\x068C1\x068CI\x068C\x11\0\x80F\x11\0}F\x11\0zF\x11\0wF\x11\0tF\x11\0qF\x01\0nF\x01\0kF\x01\0\xFCE\x01\0hF\x01\0eF\x01\0bF\0\0\x9CD\0\0`F\0\0\xF7E\0\0^F\0\0\\F\0\0ZF\0\0XF\0\0VF\0\0\x08E\0\0TF\0\0RF\0\0PF\0\0NF\0\0LF\0\0\xF1E\0\0JF\0\0HF\0\0FF\0\0DF\0\0BF\0\0@F\0\0>F\0\0<F\0\0\xEDE\0\0\xB4D\0\0:F\0\08F\0\0\x88D\0\0\x84D\0\0\x8BD\0\x006F\0\0\x95D\0\x004F\0\x002F\0\0\x1DE\0\x000F\0\0.F\0\0,FI\x068C\0\0*F\0\0(F\0\0\xBCD\0\0\xC5D\0\0&F\0\0\xE3D\x01\0#F\x01\0 F\x01\0\x1DF\x01\0\xFCE\x01\0\xF9E\0\0\x1BF\0\0\xB7D\0\0\x1AE\0\0\xF7E\0\0\xF5E\0\0\x14E\0\0\xADE\0\0\x0EE\0\0\x08E\0\0\xF3E\0\0\xF1E\0\0\xC3D\0\0\xB2D\0\0\xC0D\0\0\x97D\0\0<E\0\x007E\0\0\x8FE\0\0\x95E\0\0\xABD\0\0\x86E\0\0\xF9D\0\0\x19F\0\0\xAED\0\0\x17F\0\0\xF3D\0\0qE\0\0\x15F\0\0\x13F\0\0\xB6E\0\0\xB1D\0\0\x94D\0\0\x11F\0\0\\E\0\0\x0FF\0\0\rF\0\0YE\0\0\xBAD\0\0\x0BF\0\0\xD8D\0\0\tF\0\0\x07F\0\0\x05F\0\0\xEDE\0\0\xB4D\0\0zD\0\0\xD5D\0\0JE\0\0\x88D\0\0\x81D\0\0\xBDD\0\0\x96D\0\0\xCCD\0\0\x95D\0\0\xA8D\0\0\xDBD\0\0\x03F\0\0\x1DE\0\0\xEBE\0\0\x01F\0\0/EG\x068C\0\0\xC2D\0\0\xBFD\0\0\xFFE\0\0\xBCD\0\0\x8CD\x01\0\xFCE\x01\0\xF9E\0\0\xF7E\0\0\xF5E\0\0\x08E\0\0\xF3E\0\0\xF1E\0\0\xEFE\0\0\x86E\0\0\xBCE\0\0wE\0\0\xBAE\0\0\xEDE\0\0\xB4D\0\0\x88D\0\0\x1DE\0\0\xEBE\0\0\xBCD\0\0\x8CD\x11\0\xE8E\x11\0\xE5E\x11\0\xE2E\0\0\xE0E\0\0\xDEE\0\0\xDCE\0\0\xDAE\0\0\xD8E\0\0\xD6E\0\0\xD4E\0\0\xD2E\0\0\xD0E\0\0\xCEE\0\0\x03E\0\0\xB8D\0\0\x15E\0\0\xA9D\0\0\xFDD\0\0\xACD\0\0\xCCE\0\0\xCAE\0\0\xC8E\0\0\xC6E\0\0}E\0\0\xF6D\0\0\xB8E\0\0wE\0\0\xC4E\0\0\xC2E\0\0\xC0E\0\0\xBEE\0\0\xE0E\0\0\xDEE\0\0\xDCE\0\0\xDAE\0\0\xD8E\0\0\xD6E\0\0\xD4E\0\0\xD2E\0\0\xD0E\0\0\xCEE\0\0\x03E\0\0\xB8D\0\0\x15E\0\0\xA9D\0\0\xFDD\0\0\xACD\0\0\xCCE\0\0\xCAE\0\0\xC8E\0\0\xC6E\0\0}E\0\0\xF6D\0\0\xB8E\0\0wE\0\0\xC4E\0\0\xC2E\0\0\xC0E\0\0\xBEE\0\0}E\0\0\xF6D\0\0\xB8E\0\0wE\0\0\xBCE\0\0\xBAE\0\0hE\0\0\x8FE\0\0\x95E\0\0\xABD\0\0}E\0\0\xF6D\0\0\xB8E\0\0hE\0\0\xB6E'\x86%C'\x86%C\0\0\0\0\0\0\0\0\x01\0\xB3E\x01\0\xB0E\x01\0\xB0E\x01\0\xADE\x01\0\xAAE\x01\0\xA7E\x01\0\xA4E\x01\0\xA1E\x01\0\x9EE\x01\0\x9EE\x01\0\x9BE\x01\0\x98E\x01\0\x95E\x01\0\x92E\x01\0\x8FE\x01\0\x8CE\x01\0\x89E\x01\0\x86E\x01\0\x86E\x01\0\x83E\x01\0\x83E\x01\0\xAED\x01\0\x80E\x01\0\x80E\x01\0}E\x01\0zE\x01\0zE\x01\0wE\x01\0wE\x01\0tE\x01\0qE\x01\0nE\x01\0nE\x01\0kE\x01\0hE\x01\0\xB1D\x01\0\x94D\x01\0\x94D\x01\0eE\x01\0bE\x01\0_E\x01\0\\E\x01\0YE\x01\0YE\x01\0\xD8D\x01\0VE\x01\0\xD5D\x01\0SE\x01\0PE\x01\0ME\x01\0ME\x01\0JE\x01\0JE\x01\0GE\x01\0GE\x01\0DE\x01\0\x96D\x01\0AE\x01\0>E\x01\x003E\x01\0;E\x01\08E\xFD\xFF\0@\xFD\xFF\0@\x01\x005E\x01\x002E\x01\0/E\x01\0,E\x01\0)E\x01\0&E\x01\0&E\x01\0#E\x01\0 E\x01\0\x1DE\x01\0\xE0D\x01\0\xE0D\x01\0\x1AE\x01\0\x17E\x01\0\x14E\x01\0\x11E\x01\0\x0EE\x01\0\x0BE\x01\0\x08E\x01\0\x05E\x01\0\x02E\x01\0\xFFD\x01\0\xFCD\x01\0\xF9D\x01\0\xF6D\x01\0\xF3D\x01\0\xF0D\x01\0\xEDD\x01\0\xEAD\x01\0\xE7D\x01\0\xE4D\x01\0\xE1D\x01\0\xDED\x01\0\xDBD\x01\0\xD8D\x01\0\xD5D\x01\0\xD2D\x01\0\xCFD\x01\0\xC6D\x01\0\xCCD\x01\0\xC9D\x01\0\xB4D\x01\0\xC9D\x01\0\xC6D\x01\0\xC3D\x01\0\xC0D\x01\0\xBDD\x01\0\xBAD\x01\0\xB7D\x01\0\xB4D\x01\0\xB1D\x01\0\xAED\x01\0\xABD\x01\0\xA8D\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\x01\0\xA5D\x01\0\xA2D\x02\0\x9ED\x02\0\x9AD\x02\0\x96D\x02\0\x92D\x02\0\x8ED\x02\0\x8AD\x02\0\x86D\x01\0\x83D\x01\0\0@\x06\0{D\x02\0wD\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF,\0\0@\x010\0@\xFD\xFF\0@:\0\0@;\0\0@!\0\0@?\0\0@\x160\0@\x170\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\x14 \0@\x13 \0@_\0\0@_\0\0@(\0\0@)\0\0@{\0\0@}\0\0@\x140\0@\x150\0@\x100\0@\x110\0@\n0\0@\x0B0\0@\x080\0@\t0\0@\x0C0\0@\r0\0@\x0E0\0@\x0F0\0@\0\0\0\0\0\0\0\0[\0\0@]\0\0@ \x80\x82A \x80\x82A \x80\x82A \x80\x82A_\0\0@_\0\0@_\0\0@,\0\0@\x010\0@\xFD\xFF\0@\xFD\xFF\0@;\0\0@:\0\0@?\0\0@!\0\0@\x14 \0@(\0\0@)\0\0@{\0\0@}\0\0@\x140\0@\x150\0@#\0\0@&\0\0@*\0\0@+\0\0@-\0\0@<\0\0@>\0\0@=\0\0@\xFD\xFF\0@\\\0\0@$\0\0@%\0\0@@\0\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@ \x80%C@\x86%C \0&C\0\0\0\0 \x80&C\xFD\xFF\0@ \0'C@\x06'C \x80'C@\x86'C \0(C@\x06(C \x80(C@\x86(C \0)C@\x06)C!\x06\0@'\x86)C'\x86)C'\x06*C'\x06*CH\x06*CH\x06*C'\x86*C'\x86*CJ\x06*CJ\x06*CJ\x06*CJ\x06*C'\x06\0@'\x06\0@(\x06\0@(\x06\0@(\x06\0@)\x06\0@)\x06\0@*\x06\0@*\x06\0@*\x06\0@*\x06\0@+\x06\0@+\x06\0@+\x06\0@+\x06\0@,\x06\0@,\x06\0@,\x06\0@-\x06\0@-\x06\0@-\x06\0@-\x06\0@.\x06\0@.\x06\0@.\x06\0@.\x06\0@/\x06\0@/\x06\0@0\x06\0@0\x06\0@1\x06\0@1\x06\0@2\x06\0@3\x06\0@3\x06\0@3\x06\0@3\x06\0@4\x06\0@4\x06\0@4\x06\0@4\x06\0@5\x06\0@5\x06\0@5\x06\0@5\x06\0@6\x06\0@6\x06\0@6\x06\0@7\x06\0@7\x06\0@7\x06\0@7\x06\0@8\x06\0@8\x06\0@8\x06\0@8\x06\0@9\x06\0@9\x06\0@9\x06\0@9\x06\0@:\x06\0@:\x06\0@:\x06\0@A\x06\0@A\x06\0@A\x06\0@A\x06\0@B\x06\0@B\x06\0@B\x06\0@B\x06\0@C\x06\0@C\x06\0@C\x06\0@C\x06\0@D\x06\0@D\x06\0@D\x06\0@E\x06\0@E\x06\0@E\x06\0@E\x06\0@F\x06\0@F\x06\0@F\x06\0@F\x06\0@G\x06\0@G\x06\0@G\x06\0@G\x06\0@H\x06\0@H\x06\0@I\x06\0@J\x06\0@J\x06\0@J\x06\0@J\x06\0@\x01\0oD\x01\0oD\x01\0lD\x01\0lD\x01\0iD\x01\0iD\0\0gD\0\0gD\xFD\xFF\0@\xFD\xFF\0@\xFF\xFF\xFF\xFF\xFD\xFF\0@!\0\0@\"\0\0@#\0\0@$\0\0@%\0\0@&\0\0@'\0\0@(\0\0@)\0\0@*\0\0@+\0\0@,\0\0@-\0\0@.\0\0@/\0\0@0\0\0@1\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@:\0\0@;\0\0@<\0\0@=\0\0@>\0\0@?\0\0@@\0\0@a\0\0@b\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@o\0\0@p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@[\0\0@\\\0\0@]\0\0@^\0\0@_\0\0@`\0\0@a\0\0@b\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@o\0\0@p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@{\0\0@|\0\0@}\0\0@~\0\0@\x85)\0@\x86)\0@.\0\0@\x0C0\0@\r0\0@\x010\0@\xFB0\0@\xF20\0@\xA10\0@\xA30\0@\xA50\0@\xA70\0@\xA90\0@\xE30\0@\xE50\0@\xE70\0@\xC30\0@\xFC0\0@\xA20\0@\xA40\0@\xA60\0@\xA80\0@\xAA0\0@\xAB0\0@\xAD0\0@\xAF0\0@\xB10\0@\xB30\0@\xB50\0@\xB70\0@\xB90\0@\xBB0\0@\xBD0\0@\xDF0\0@\xE00\0@\xE10\0@\xE20\0@\xE40\0@\xE60\0@\xE80\0@\xE90\0@\xEA0\0@\xEB0\0@\xEC0\0@\xED0\0@\xEF0\0@\xF30\0@\0\xD9\0\xC0\0\xD9\0\xC0\xFF\xFF\xFF\xFF\0\x11\0@\x01\x11\0@\xAA\x11\0\xC0\x02\x11\0@\xAC\x11\0\xC0\xAD\x11\0\xC0\x03\x11\0@\x04\x11\0@\x05\x11\0@\xB0\x11\0\xC0\xB1\x11\0\xC0\xB2\x11\0\xC0\xB3\x11\0\xC0\xB4\x11\0\xC0\xB5\x11\0\xC0\x1A\x11\0@\x06\x11\0@\x07\x11\0@\x08\x11\0@!\x11\0@\t\x11\0@\n\x11\0@\x0B\x11\0@\x0C\x11\0@\r\x11\0@\x0E\x11\0@\x0F\x11\0@\x10\x11\0@\x11\x11\0@\x12\x11\0@\xFD\xFF\0@\xFD\xFF\0@a\x11\0\xC0b\x11\0\xC0c\x11\0\xC0d\x11\0\xC0e\x11\0\xC0f\x11\0\xC0\xFD\xFF\0@\xFD\xFF\0@g\x11\0\xC0h\x11\0\xC0i\x11\0\xC0j\x11\0\xC0k\x11\0\xC0l\x11\0\xC0\xFD\xFF\0@\xFD\xFF\0@m\x11\0\xC0n\x11\0\xC0o\x11\0\xC0p\x11\0\xC0q\x11\0\xC0r\x11\0\xC0\xFD\xFF\0@\xFD\xFF\0@s\x11\0\xC0t\x11\0\xC0u\x11\0\xC0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xA2\0\0@\xA3\0\0@\xAC\0\0@ \0\x82A\xA6\0\0@\xA5\0\0@\xA9 \0@\xFD\xFF\0@\x02%\0@\x90!\0@\x91!\0@\x92!\0@\x93!\0@\xA0%\0@\xCB%\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\xC0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\0nN\x10\0mN\x10\0lN\x10\0kN\x10\0jN\x10\0iN\x10\0hN\x10\0gN\x10\0fN\x10\0eN\x10\0dN\x10\0cN\x10\0bN\x10\0aN\x10\0`N\x10\0_N\x10\0^N\x10\0]N\x10\0\\N\x10\0[N\x10\0ZN\x10\0YN\x10\0XN\x10\0WN\x10\0VN\x10\0UN\x10\0TN\x10\0SN\x10\0RN\x10\0QN\x10\0PN\x10\0ON\x10\0NN\x10\0MN\x10\0LN\x10\0KN\x10\0JN\x10\0IN\x10\0HN\x10\0GN\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\0FN\x10\0EN\x10\0DN\x10\0CN\x10\0BN\x10\0AN\x10\0@N\x10\0?N\x10\0>N\x10\0=N\x10\0<N\x10\0;N\x10\0:N\x10\09N\x10\08N\x10\x007N\x10\x006N\x10\x005N\x10\x004N\x10\x003N\x10\x002N\x10\x001N\x10\x000N\x10\0/N\x10\0.N\x10\0-N\x10\0,N\x10\0+N\x10\0*N\x10\0)N\x10\0(N\x10\0'N\x10\0&N\x10\0%N\x10\0$N\x10\0#N\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\0\"N\x10\0!N\x10\0 N\x10\0\x1FN\x10\0\x1EN\x10\0\x1DN\x10\0\x1CN\x10\0\x1BN\x10\0\x1AN\x10\0\x19N\x10\0\x18N\xFD\xFF\0@\x10\0\x17N\x10\0\x16N\x10\0\x15N\x10\0\x14N\x10\0\x13N\x10\0\x12N\x10\0\x11N\x10\0\x10N\x10\0\x0FN\x10\0\x0EN\x10\0\rN\x10\0\x0CN\x10\0\x0BN\x10\0\nN\x10\0\tN\xFD\xFF\0@\x10\0\x08N\x10\0\x07N\x10\0\x06N\x10\0\x05N\x10\0\x04N\x10\0\x03N\x10\0\x02N\xFD\xFF\0@\x10\0\x01N\x10\0\0N\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xBF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xBD\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD0\x02\0@\xD1\x02\0@\xE6\0\0@\x99\x02\0@S\x02\0@\xFD\xFF\0@\xA3\x02\0@f\xAB\0@\xA5\x02\0@\xA4\x02\0@V\x02\0@W\x02\0@\x91\x1D\0@X\x02\0@^\x02\0@\xA9\x02\0@d\x02\0@b\x02\0@`\x02\0@\x9B\x02\0@'\x01\0@\x9C\x02\0@g\x02\0@\x84\x02\0@\xAA\x02\0@\xAB\x02\0@l\x02\0@\x10\0TM\x8E\xA7\0@n\x02\0@\x10\0SM\x8E\x02\0@\x10\0RM\xF8\0\0@v\x02\0@w\x02\0@q\0\0@z\x02\0@\x10\0QM}\x02\0@~\x02\0@\x80\x02\0@\xA8\x02\0@\xA6\x02\0@g\xAB\0@\xA7\x02\0@\x88\x02\0@q,\0@\xFD\xFF\0@\x8F\x02\0@\xA1\x02\0@\xA2\x02\0@\x98\x02\0@\xC0\x01\0@\xC1\x01\0@\xC2\x01\0@\x10\0PM\x10\0OM\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xDC\xD8\0\x80\0\0\0\0\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xE6\xD8\0\x80\x01\xD8\0\x80\xDC\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\x10\0\xFFM\x10\0\xFEM\x10\0\xFDM\x10\0\xFCM\x10\0\xFBM\x10\0\xFAM\x10\0\xF9M\x10\0\xF8M\x10\0\xF7M\x10\0\xF6M\x10\0\xF5M\x10\0\xF4M\x10\0\xF3M\x10\0\xF2M\x10\0\xF1M\x10\0\xF0M\x10\0\xEFM\x10\0\xEEM\x10\0\xEDM\x10\0\xECM\x10\0\xEBM\x10\0\xEAM\x10\0\xE9M\x10\0\xE8M\x10\0\xE7M\x10\0\xE6M\x10\0\xE5M\x10\0\xE4M\x10\0\xE3M\x10\0\xE2M\x10\0\xE1M\x10\0\xE0M\x10\0\xDFM\x10\0\xDEM\x10\0\xDDM\x10\0\xDCM\x10\0\xDBM\x10\0\xDAM\x10\0\xD9M\x10\0\xD8M\x10\0\xD7M\x10\0\xD6M\x10\0\xD5M\x10\0\xD4M\x10\0\xD3M\x10\0\xD2M\x10\0\xD1M\x10\0\xD0M\x10\0\xCFM\x10\0\xCEM\x10\0\xCDM\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\x10\0\xCCM\x10\0\xCBM\x10\0\xCAM\x10\0\xC9M\x10\0\xC8M\x10\0\xC7M\x10\0\xC6M\x10\0\xC5M\x10\0\xC4M\x10\0\xC3M\x10\0\xC2M\x10\0\xC1M\x10\0\xC0M\x10\0\xBFM\x10\0\xBEM\x10\0\xBDM\x10\0\xBCM\x10\0\xBBM\x10\0\xBAM\x10\0\xB9M\x10\0\xB8M\x10\0\xB7M\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xBB\x03\0\0\0\0\x11\0\xB9\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\xB7\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xB5\x03\x01\0\xB3\x03\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\x07\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\x01\0\xB1\x03\x01\0\xAF\x03\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xAD\x03\0\0\0\0\x01\0\xAB\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\x01\0\xA9\x03\xFD\xFF\0@\0\0\0\0\x01\0\xA7\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\x80\xFD\xFF\0@\xFD\xFF\0@\x01\0\xA5\x83\xFD\xFF\0@\x01\0\xA3\x83\x01\0\xA1\x83\0\0\0\x80\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\x9F\x03\x01\0\x9D\x03\0\0\0\x80\x01\0\x9B\x03\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\x01\0\x99\x03\x01\0\x97\x03\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\x10\0\xB6M\x10\0\xB5M\x10\0\xB4M\x10\0\xB3M\x10\0\xB2M\x10\0\xB1M\x10\0\xB0M\x10\0\xAFM\x10\0\xAEM\x10\0\xADM\x10\0\xACM\x10\0\xABM\x10\0\xAAM\x10\0\xA9M\x10\0\xA8M\x10\0\xA7M\x10\0\xA6M\x10\0\xA5M\x10\0\xA4M\x10\0\xA3M\x10\0\xA2M\x10\0\xA1M\x10\0\xA0M\x10\0\x9FM\x10\0\x9EM\x10\0\x9DM\x10\0\x9CM\x10\0\x9BM\x10\0\x9AM\x10\0\x99M\x10\0\x98M\x10\0\x97M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\x01\0\x95\x03\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\x07\xD8\0\x80\0\0\0\0\t\xD8\0\x80\t\xD8\0\x80\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\x01\0\x8C\x83\x01\0\x8F\x83\x01\0\x93\x83\x01\0\x90\x83\x01\0\x8D\x83\x02\0\x92\x83\x02\0\x8F\x83\x02\0\x8C\x83\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\x01\0\x8A\x83\x01\0\x89\x03\x02\0\x89\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\0\x96M\x10\0\x95M\x10\0\x94M\x10\0\x93M\x10\0\x92M\x10\0\x91M\x10\0\x90M\x10\0\x8FM\x10\0\x8EM\x10\0\x8DM\x10\0\x8CM\x10\0\x8BM\x10\0\x8AM\x10\0\x89M\x10\0\x88M\x10\0\x87M\x10\0\x86M\x10\0\x85M\x10\0\x84M\x10\0\x83M\x10\0\x82M\x10\0\x81M\x10\0\x80M\x10\0\x7FM\x10\0~M\x10\0}M\x10\0|M\x10\0{M\x10\0zM\x10\0yM\x10\0xM\x10\0wM\x06\xD8\0\x80\x06\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\x01\xD8\0\x80\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@0\0\0@1\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\x87C\x11\0xC\x12\0\x84C\x12\0\x81C\x12\0~C\x12\0{C\x12\0xC\xD8\xD8\0\x80\xD8\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\x01\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\xE2\xD8\0\x80\xD8\xD8\0\x80\xD8\xD8\0\x80\xD8\xD8\0\x80\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0oC\x11\0lC\x12\0uC\x12\0rC\x12\0oC\x12\0lC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@a\0\0@b\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@o\0\0@p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@a\0\0@b\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@\xFD\xFF\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@o\0\0@p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@a\0\0@\xFD\xFF\0@c\0\0@d\0\0@\xFD\xFF\0@\xFD\xFF\0@g\0\0@\xFD\xFF\0@\xFD\xFF\0@j\0\0@k\0\0@\xFD\xFF\0@\xFD\xFF\0@n\0\0@o\0\0@p\0\0@q\0\0@\xFD\xFF\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@a\0\0@b\0\0@c\0\0@d\0\0@\xFD\xFF\0@f\0\0@\xFD\xFF\0@h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@\xFD\xFF\0@p\0\0@q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@a\0\0@b\0\0@\xFD\xFF\0@d\0\0@e\0\0@f\0\0@g\0\0@\xFD\xFF\0@\xFD\xFF\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@o\0\0@p\0\0@q\0\0@\xFD\xFF\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@\xFD\xFF\0@a\0\0@b\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@\xFD\xFF\0@o\0\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@\xFD\xFF\0@a\0\0@b\0\0@c\0\0@d\0\0@e\0\0@f\0\0@g\0\0@h\0\0@i\0\0@j\0\0@k\0\0@l\0\0@m\0\0@n\0\0@w\0\0@x\0\0@y\0\0@z\0\0@1\x01\0@7\x02\0@\xFD\xFF\0@\xFD\xFF\0@\xB1\x03\0@\xB2\x03\0@\xB3\x03\0@\xB4\x03\0@\xB5\x03\0@\xB6\x03\0@\xB7\x03\0@\xB8\x03\0@\xB9\x03\0@\xBA\x03\0@\xBB\x03\0@\xBC\x03\0@\xBD\x03\0@\xBE\x03\0@\xBF\x03\0@\xC0\x03\0@\xC1\x03\0@\xB8\x03\0@\xC3\x03\0@\xC4\x03\0@\xC5\x03\0@\xC6\x03\0@\xC7\x03\0@\xC8\x03\0@\xC9\x03\0@\x07\"\0@\xB1\x03\0@\xB2\x03\0@\xB3\x03\0@\xB4\x03\0@\xB5\x03\0@\xB6\x03\0@\xB7\x03\0@\xB8\x03\0@\xB9\x03\0@\xBA\x03\0@\xBB\x03\0@\xBC\x03\0@\xBD\x03\0@\xBE\x03\0@\xBF\x03\0@\xC0\x03\0@\xC1\x03\0@\xC3\x03\0@\xC3\x03\0@\xC4\x03\0@\xC5\x03\0@\xC6\x03\0@\xC7\x03\0@\xC8\x03\0@\xC9\x03\0@\x02\"\0@\xB5\x03\0@\xB8\x03\0@\xBA\x03\0@\xC6\x03\0@\xC1\x03\0@\xC0\x03\0@\xB1\x03\0@\xB2\x03\0@\xB3\x03\0@\xB4\x03\0@\xB5\x03\0@\xB6\x03\0@\xB7\x03\0@\xB8\x03\0@\xB9\x03\0@\xBA\x03\0@\xBB\x03\0@\xBC\x03\0@\xBD\x03\0@\xBE\x03\0@\xC7\x03\0@\xC8\x03\0@\xC9\x03\0@\x02\"\0@\xB5\x03\0@\xB8\x03\0@\xBA\x03\0@\xC6\x03\0@\xC1\x03\0@\xC0\x03\0@\xDD\x03\0@\xDD\x03\0@\xFD\xFF\0@\xFD\xFF\0@0\0\0@1\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@0\0\0@1\0\0@2\0\0@3\0\0@4\0\0@5\0\0@6\0\0@7\0\0@8\0\0@9\0\0@0\0\0@1\0\0@2\0\0@3\0\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@0\x04\0@1\x04\0@2\x04\0@3\x04\0@4\x04\0@5\x04\0@6\x04\0@7\x04\0@8\x04\0@:\x04\0@;\x04\0@<\x04\0@>\x04\0@?\x04\0@@\x04\0@A\x04\0@B\x04\0@C\x04\0@D\x04\0@E\x04\0@F\x04\0@G\x04\0@H\x04\0@K\x04\0@M\x04\0@N\x04\0@\x89\xA6\0@\xD9\x04\0@V\x04\0@X\x04\0@\xE9\x04\0@\xAF\x04\0@\xCF\x04\0@0\x04\0@1\x04\0@2\x04\0@3\x04\0@4\x04\0@5\x04\0@6\x04\0@7\x04\0@8\x04\0@:\x04\0@;\x04\0@>\x04\0@?\x04\0@A\x04\0@C\x04\0@D\x04\0@E\x04\0@F\x04\0@G\x04\0@H\x04\0@J\x04\0@K\x04\0@\x91\x04\0@V\x04\0@U\x04\0@_\x04\0@\xAB\x04\0@Q\xA6\0@\xB1\x04\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE8\xD8\0\x80\xE8\xD8\0\x80\xDC\xD8\0\x80\xE6\xD8\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFD\xFF\0@\0\0\0\0\0\0\0\0\xFD\xFF\0@\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xDC\xD8\0\x80\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\x10\0vM\x10\0uM\x10\0tM\x10\0sM\x10\0rM\x10\0qM\x10\0pM\x10\0oM\x10\0nM\x10\0mM\x10\0lM\x10\0kM\x10\0jM\x10\0iM\x10\0hM\x10\0gM\x10\0fM\x10\0eM\x10\0dM\x10\0cM\x10\0bM\x10\0aM\x10\0`M\x10\0_M\x10\0^M\x10\0]M\x10\0\\M\x10\0[M\x10\0ZM\x10\0YM\x10\0XM\x10\0WM\x10\0VM\x10\0UM\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\xE6\xD8\0\x80\x07\xD8\0\x80\0\0\0\0\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@'\x06\0@(\x06\0@,\x06\0@/\x06\0@\xFD\xFF\0@H\x06\0@2\x06\0@-\x06\0@7\x06\0@J\x06\0@C\x06\0@D\x06\0@E\x06\0@F\x06\0@3\x06\0@9\x06\0@A\x06\0@5\x06\0@B\x06\0@1\x06\0@4\x06\0@*\x06\0@+\x06\0@.\x06\0@0\x06\0@6\x06\0@8\x06\0@:\x06\0@n\x06\0@\xBA\x06\0@\xA1\x06\0@o\x06\0@\xFD\xFF\0@(\x06\0@,\x06\0@\xFD\xFF\0@G\x06\0@\xFD\xFF\0@\xFD\xFF\0@-\x06\0@\xFD\xFF\0@J\x06\0@C\x06\0@D\x06\0@E\x06\0@F\x06\0@3\x06\0@9\x06\0@A\x06\0@5\x06\0@B\x06\0@\xFD\xFF\0@4\x06\0@*\x06\0@+\x06\0@.\x06\0@\xFD\xFF\0@6\x06\0@\xFD\xFF\0@:\x06\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@,\x06\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@-\x06\0@\xFD\xFF\0@J\x06\0@\xFD\xFF\0@D\x06\0@\xFD\xFF\0@F\x06\0@3\x06\0@9\x06\0@\xFD\xFF\0@5\x06\0@B\x06\0@\xFD\xFF\0@4\x06\0@\xFD\xFF\0@\xFD\xFF\0@.\x06\0@\xFD\xFF\0@6\x06\0@\xFD\xFF\0@:\x06\0@\xFD\xFF\0@\xBA\x06\0@\xFD\xFF\0@o\x06\0@\xFD\xFF\0@(\x06\0@,\x06\0@\xFD\xFF\0@G\x06\0@\xFD\xFF\0@\xFD\xFF\0@-\x06\0@7\x06\0@J\x06\0@C\x06\0@\xFD\xFF\0@E\x06\0@F\x06\0@3\x06\0@9\x06\0@A\x06\0@5\x06\0@B\x06\0@\xFD\xFF\0@4\x06\0@*\x06\0@+\x06\0@.\x06\0@\xFD\xFF\0@6\x06\0@8\x06\0@:\x06\0@n\x06\0@\xFD\xFF\0@\xA1\x06\0@\xFD\xFF\0@'\x06\0@(\x06\0@,\x06\0@/\x06\0@G\x06\0@H\x06\0@2\x06\0@-\x06\0@7\x06\0@J\x06\0@\xFD\xFF\0@D\x06\0@E\x06\0@F\x06\0@3\x06\0@9\x06\0@A\x06\0@5\x06\0@B\x06\0@1\x06\0@4\x06\0@*\x06\0@+\x06\0@.\x06\0@0\x06\0@6\x06\0@8\x06\0@:\x06\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@(\x06\0@,\x06\0@/\x06\0@\xFD\xFF\0@H\x06\0@2\x06\0@-\x06\0@7\x06\0@J\x06\0@\xFD\xFF\0@D\x06\0@E\x06\0@F\x06\0@3\x06\0@9\x06\0@\xFD\xFF\0@\0\0cD\0\0aD\0\0_D\0\0]D\0\0[D\0\0YD\0\0WD\0\0UD\0\0SD\0\0QD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\xCDJ\x01\0\xCAJ\x01\0\xC7J\x01\0\xC4J\x01\0\xC1J\x01\0\xBEJ\x01\0\xBBJ\x01\0\xB8J\x01\0\xB5J\x01\0\xB2J\x01\0TLc\0\0@r\0\0@\0\x006G\0\0RL\0\0\0\0q\0\0@r\0\0@s\0\0@t\0\0@u\0\0@v\0\0@w\0\0@x\0\0@y\0\0@z\0\0@\0\0PL\0\0NL\0\0LL\0\0JL\x01\0GL\0\0EL\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CL\0\0AL\0\0?L\0\0\0\0\0\0\0\0\0\0\0\0\0\0=L\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE5C\0\0\xE3C\xB50\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@Kb\0@W[\0@\xCCS\0@\xC6\xB0LX\x8CN\0@\x1AY\0@\xE3\x89\0@)Y\0@\xA4N\0@ f\0@!q\0@\x99e\0@MR\0@\x8C_\0@\x8DQ\0@\xB0e\0@\x1DR\0@B}\0@\x1Fu\0@\xA9\x8C\0@\xF0X\0@9T\0@\x14o\0@\x95b\0@Uc\0@\0N\0@\tN\0@J\x90\0@\xE6]\0@-N\0@\xF3S\0@\x07c\0@p\x8D\0@Sb\0@\x81y\0@zz\0@\x08T\0@\x80n\0@\tg\0@\x08g\0@3u\0@rR\0@\xB6U\0@M\x91\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\x01\0\xE0C\x01\0\xDDC\x01\0\xDAC\x01\0\xD7C\x01\0\xD4C\x01\0\xD1C\x01\0\xCEC\x01\0\xCBC\x01\0\xC8C\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\x97_\0@\xEFS\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@\xFD\xFF\0@=N\0@8N\0@AN\0@\x10\0kC`O\0@\xAEO\0@\xBBO\0@\x02P\0@zP\0@\x99P\0@\xE7P\0@\xCFP\0@\x9E4\0@\x10\0jCMQ\0@TQ\0@dQ\0@wQ\0@\x10\0iC\xB94\0@gQ\0@\x8DQ\0@\x10\0hC\x97Q\0@\xA4Q\0@\xCCN\0@\xACQ\0@\xB5Q\0@\x10\0gC\xF5Q\0@\x03R\0@\xDF4\0@;R\0@FR\0@rR\0@wR\0@\x155\0@\xC7R\0@\xC9R\0@\xE4R\0@\xFAR\0@\x05S\0@\x06S\0@\x17S\0@IS\0@QS\0@ZS\0@sS\0@}S\0@\x7FS\0@\x7FS\0@\x7FS\0@\x10\0fCpp\0@\xCAS\0@\xDFS\0@\x10\0eC\xEBS\0@\xF1S\0@\x06T\0@\x9ET\0@8T\0@HT\0@hT\0@\xA2T\0@\xF6T\0@\x10U\0@SU\0@cU\0@\x84U\0@\x84U\0@\x99U\0@\xABU\0@\xB3U\0@\xC2U\0@\x16W\0@\x06V\0@\x17W\0@QV\0@tV\0@\x07R\0@\xEEX\0@\xCEW\0@\xF4W\0@\rX\0@\x8BW\0@2X\0@1X\0@\xACX\0@\x10\0dC\xF2X\0@\xF7X\0@\x06Y\0@\x1AY\0@\"Y\0@bY\0@\x10\0cC\x10\0bC\xECY\0@\x1BZ\0@'Z\0@\xD8Y\0@fZ\0@\xEE6\0@\xFC6\0@\x08[\0@>[\0@>[\0@\x10\0aC\xC3[\0@\xD8[\0@\xE7[\0@\xF3[\0@\x10\0`C\xFF[\0@\x06\\\0@S_\0@\"\\\0@\x817\0@`\\\0@n\\\0@\xC0\\\0@\x8D\\\0@\x10\0_CC]\0@\x10\0^Cn]\0@k]\0@|]\0@\xE1]\0@\xE2]\0@/8\0@\xFD]\0@(^\0@=^\0@i^\0@b8\0@\x10\0]C|8\0@\xB0^\0@\xB3^\0@\xB6^\0@\xCA^\0@\x10\0\\C\xFE^\0@\x10\0[C\x10\0[C\x01\x82\0@\"_\0@\"_\0@\xC78\0@\x10\0ZC\x10\0YCb_\0@k_\0@\xE38\0@\x9A_\0@\xCD_\0@\xD7_\0@\xF9_\0@\x81`\0@:9\0@\x1C9\0@\x94`\0@\x10\0XC\xC7`\0@Ha\0@La\0@Na\0@La\0@za\0@\x8Ea\0@\xB2a\0@\xA4a\0@\xAFa\0@\xDEa\0@\xF2a\0@\xF6a\0@\x10b\0@\x1Bb\0@]b\0@\xB1b\0@\xD4b\0@Pc\0@\x10\0WC=c\0@\xFCb\0@hc\0@\x83c\0@\xE4c\0@\x10\0VC\"d\0@\xC5c\0@\xA9c\0@.:\0@id\0@~d\0@\x9Dd\0@wd\0@l:\0@Oe\0@le\0@\x10\0UC\xE3e\0@\xF8f\0@If\0@\x19;\0@\x91f\0@\x08;\0@\xE4:\0@\x92Q\0@\x95Q\0@\0g\0@\x9Cf\0@\xAD\x80\0@\xD9C\0@\x17g\0@\x1Bg\0@!g\0@^g\0@Sg\0@\x10\0TCI;\0@\xFAg\0@\x85g\0@Rh\0@\x85h\0@\x10\0SC\x8Eh\0@\x1Fh\0@\x14i\0@\x9D;\0@Bi\0@\xA3i\0@\xEAi\0@\xA8j\0@\x10\0RC\xDBj\0@\x18<\0@!k\0@\x10\0QCTk\0@N<\0@rk\0@\x9Fk\0@\xBAk\0@\xBBk\0@\x10\0PC\x10\0OC\x10\0NCNl\0@\x10\0MC\xBFl\0@\xCDl\0@gl\0@\x16m\0@>m\0@wm\0@Am\0@im\0@xm\0@\x85m\0@\x10\0LC4m\0@/n\0@nn\0@3=\0@\xCBn\0@\xC7n\0@\x10\0KC\xF9m\0@no\0@\x10\0JC\x10\0IC\xC6o\0@9p\0@\x1Ep\0@\x1Bp\0@\x96=\0@Jp\0@}p\0@wp\0@\xADp\0@\x10\0HCEq\0@\x10\0GC\x9Cq\0@\x10\0FC(r\0@5r\0@Pr\0@\x10\0EC\x80r\0@\x95r\0@\x10\0DC\x10\0CCzs\0@\x8Bs\0@\xAC>\0@\xA5s\0@\xB8>\0@\xB8>\0@Gt\0@\\t\0@qt\0@\x85t\0@\xCAt\0@\x1B?\0@$u\0@\x10\0BC>u\0@\x10\0ACpu\0@\x10\0@C\x10v\0@\x10\0?C\x10\0>C\x10\0=C\xFC?\0@\x08@\0@\xF4v\0@\x10\0<C\x10\0;C\x10\0:C\x10\09C\x1Ew\0@\x1Fw\0@\x1Fw\0@Jw\0@9@\0@\x8Bw\0@F@\0@\x96@\0@\x10\08CNx\0@\x8Cx\0@\xCCx\0@\xE3@\0@\x10\x007CVy\0@\x10\x006C\x10\x005C\x8Fy\0@\xEBy\0@/A\0@@z\0@Jz\0@Oz\0@\x10\x004C\x10\x003C\x10\x003C\xEEz\0@\x02B\0@\x10\x002C\xC6{\0@\xC9{\0@'B\0@\x10\x001C\xD2|\0@\xA0B\0@\xE8|\0@\xE3|\0@\0}\0@\x10\x000Cc}\0@\x01C\0@\xC7}\0@\x02~\0@E~\0@4C\0@\x10\0/C\x10\0.CYC\0@\x10\0-Cz\x7F\0@\x10\0,C\x95\x7F\0@\xFA\x7F\0@\x05\x80\0@\x10\0+C\x10\0*C`\x80\0@\x10\0)Cp\x80\0@\x10\0(C\xD5C\0@\xB2\x80\0@\x03\x81\0@\x0BD\0@>\x81\0@\xB5Z\0@\x10\0'C\x10\0&C\x10\0%C\x10\0$C\x01\x82\0@\x04\x82\0@\x9E\x8F\0@kD\0@\x91\x82\0@\x8B\x82\0@\x9D\x82\0@\xB3R\0@\xB1\x82\0@\xB3\x82\0@\xBD\x82\0@\xE6\x82\0@\x10\0#C\xE5\x82\0@\x1D\x83\0@c\x83\0@\xAD\x83\0@#\x83\0@\xBD\x83\0@\xE7\x83\0@W\x84\0@S\x83\0@\xCA\x83\0@\xCC\x83\0@\xDC\x83\0@\x10\0\"C\x10\0!C\x10\0 C+E\0@\xF1\x84\0@\xF3\x84\0@\x16\x85\0@\x10\0\x1FCd\x85\0@\x10\0\x1EC]E\0@aE\0@\x10\0\x1DC\x10\0\x1CCkE\0@P\x86\0@\\\x86\0@g\x86\0@i\x86\0@\xA9\x86\0@\x88\x86\0@\x0E\x87\0@\xE2\x86\0@y\x87\0@(\x87\0@k\x87\0@\x86\x87\0@\xD7E\0@\xE1\x87\0@\x01\x88\0@\xF9E\0@`\x88\0@c\x88\0@\x10\0\x1BC\xD7\x88\0@\xDE\x88\0@5F\0@\xFA\x88\0@\xBB4\0@\x10\0\x1AC\x10\0\x19C\xBEF\0@\xC7F\0@\xA0\x8A\0@\xED\x8A\0@\x8A\x8B\0@U\x8C\0@\x10\0\x18C\xAB\x8C\0@\xC1\x8C\0@\x1B\x8D\0@w\x8D\0@\x10\0\x17C\x10\0\x16C\xCB\x8D\0@\xBC\x8D\0@\xF0\x8D\0@\x10\0\x15C\xD4\x8E\0@8\x8F\0@\x10\0\x14C\x10\0\x13C\x94\x90\0@\xF1\x90\0@\x11\x91\0@\x10\0\x12C\x1B\x91\0@8\x92\0@\xD7\x92\0@\xD8\x92\0@|\x92\0@\xF9\x93\0@\x15\x94\0@\x10\0\x11C\x8B\x95\0@\x95I\0@\xB7\x95\0@\x10\0\x10C\xE6I\0@\xC3\x96\0@\xB2]\0@#\x97\0@\x10\0\x0FC\x10\0\x0ECnJ\0@vJ\0@\xE0\x97\0@\x10\0\rC\xB2J\0@\x10\0\x0CC\x0B\x98\0@\x0B\x98\0@)\x98\0@\x10\0\x0BC\xE2\x98\0@3K\0@)\x99\0@\xA7\x99\0@\xC2\x99\0@\xFE\x99\0@\xCEK\0@\x10\0\nC\x12\x9B\0@@\x9C\0@\xFD\x9C\0@\xCEL\0@\xEDL\0@g\x9D\0@\x10\0\tC\xF8L\0@\x10\0\x08C\x10\0\x07C\x10\0\x06C\xBB\x9E\0@VM\0@\xF9\x9E\0@\xFE\x9E\0@\x05\x9F\0@\x0F\x9F\0@\x16\x9F\0@;\x9F\0@\x10\0\x05C\xFD\xFF\0@\xFD\xFF\0@\0\0\0\0") }, 0u32), passthrough_cap: 65u16 };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::normalizer::provider::NormalizerUts46DataV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::normalizer::provider::NormalizerUts46DataV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_NORMALIZER_UTS46_DATA_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerUts46DataV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_normalizer_uts46_data_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerUts46DataV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_normalizer_uts46_data_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerUts46DataV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerUts46DataV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_normalizer_uts46_data_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::normalizer::provider::NormalizerUts46DataV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::normalizer::provider::NormalizerUts46DataV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::normalizer::provider::NormalizerUts46DataV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_normalizer_uts46_data_v1 as impl_normalizer_uts46_data_v1;
diff --git a/vendor/icu_normalizer_data/src/lib.rs b/vendor/icu_normalizer_data/src/lib.rs
new file mode 100644
index 00000000..15589969
--- /dev/null
+++ b/vendor/icu_normalizer_data/src/lib.rs
@@ -0,0 +1,17 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Data for the `icu_normalizer` crate
+//!
+//! This data was generated with CLDR version 47.0.0, ICU version icu4x/2025-05-01/77.x, and
+//! LSTM segmenter version v0.1.0.
+
+#![no_std]
+// The source is not readable and is massive as HTML.
+#![doc(html_no_source)]
+
+#[cfg(icu4x_custom_data)]
+include!(concat!(core::env!("ICU4X_DATA_DIR"), "/mod.rs"));
+#[cfg(not(icu4x_custom_data))]
+include!("../data/mod.rs");
diff --git a/vendor/icu_properties/.cargo-checksum.json b/vendor/icu_properties/.cargo-checksum.json
new file mode 100644
index 00000000..613bf1df
--- /dev/null
+++ b/vendor/icu_properties/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"1e656a2acacf36e2f87d64665c997b40cb02fb2ed15cfb0cec5478b1d32c92ed","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"78fb5c330563031daba1639443167abd3275942fbdd55410986d47fa3924a583","src/bidi.rs":"118c74e5d7505864fdd52cbcd169a3d6377e3ec01e42d81d465cc8cf2c688033","src/code_point_map.rs":"86c5a9448d550671676ef1bc528765354356364c052e805e6cb511d72da55d57","src/code_point_set.rs":"931913ef83d78a7cef3a314a0f223377e5e80f38f445230fef28883e4a47f2d6","src/emoji.rs":"1f6554ab3c3dc431533326fafbc187c38337bedf6e3775e1f155ee367226512c","src/lib.rs":"cc7ad2a642798f4c70d25b5abe49bfcaa2bedcb6b7da337f57e63c14cf9ea227","src/names.rs":"94aee1de53030b0fb3b4125412a886712e5b03bf5268a3a106d2a67084ea8a20","src/props.rs":"63c1ceb9e31b79a3a13345e4b73b535eb66167cc2a2cbecf85fd98549861bed1","src/provider.rs":"94e57bd884fc3d4518c3587bb06891d9178a505d64ac19960db63d91680ba3d8","src/provider/names.rs":"34166cd77bdcb36feba52edbfa42b321284977396b0e396c554e007b9ba9663f","src/runtime.rs":"d26fa1999628ae7e3b5ac24b28feec4d3750b06cd03c989d929b101221b1a82a","src/script.rs":"6fc17d9dbbd770cd00f6df29b1ada09e09c0cbdf216d489275e382e3b01756bc","src/trievalue.rs":"2b91b48017a2f2c522f463c636419257b0f3ab26ade4026750ab1a0ff0e935eb"},"package":"016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"}
\ No newline at end of file
diff --git a/vendor/icu_properties/Cargo.toml b/vendor/icu_properties/Cargo.toml
new file mode 100644
index 00000000..2e8b02e5
--- /dev/null
+++ b/vendor/icu_properties/Cargo.toml
@@ -0,0 +1,143 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "icu_properties"
+version = "2.0.1"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+    "build.rs",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Definitions for Unicode properties"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.docs.rs]
+all-features = true
+
+[features]
+alloc = [
+    "zerovec/alloc",
+    "icu_collections/alloc",
+]
+compiled_data = [
+    "dep:icu_properties_data",
+    "icu_provider/baked",
+]
+datagen = [
+    "serde",
+    "dep:databake",
+    "potential_utf/databake",
+    "zerovec/databake",
+    "icu_collections/databake",
+    "icu_locale_core/databake",
+    "zerotrie/databake",
+    "icu_provider/export",
+]
+default = ["compiled_data"]
+serde = [
+    "dep:serde",
+    "icu_locale_core/serde",
+    "potential_utf/serde",
+    "zerovec/serde",
+    "icu_collections/serde",
+    "icu_provider/serde",
+    "zerotrie/serde",
+]
+unicode_bidi = ["dep:unicode-bidi"]
+
+[lib]
+name = "icu_properties"
+path = "src/lib.rs"
+
+[dependencies.databake]
+version = "0.2.0"
+features = ["derive"]
+optional = true
+default-features = false
+
+[dependencies.displaydoc]
+version = "0.2.3"
+default-features = false
+
+[dependencies.icu_collections]
+version = "~2.0.0"
+default-features = false
+
+[dependencies.icu_locale_core]
+version = "2.0.0"
+features = ["zerovec"]
+default-features = false
+
+[dependencies.icu_properties_data]
+version = "~2.0.0"
+optional = true
+default-features = false
+
+[dependencies.icu_provider]
+version = "2.0.0"
+default-features = false
+
+[dependencies.potential_utf]
+version = "0.1.1"
+features = ["zerovec"]
+default-features = false
+
+[dependencies.serde]
+version = "1.0.110"
+features = [
+    "derive",
+    "alloc",
+]
+optional = true
+default-features = false
+
+[dependencies.unicode-bidi]
+version = "0.3.11"
+optional = true
+default-features = false
+
+[dependencies.zerotrie]
+version = "0.2.0"
+features = [
+    "yoke",
+    "zerofrom",
+]
+default-features = false
+
+[dependencies.zerovec]
+version = "0.11.1"
+features = [
+    "derive",
+    "yoke",
+]
+default-features = false
+
+[dev-dependencies]
diff --git a/vendor/icu_properties/LICENSE b/vendor/icu_properties/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/icu_properties/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/icu_properties/README.md b/vendor/icu_properties/README.md
new file mode 100644
index 00000000..7eed6df4
--- /dev/null
+++ b/vendor/icu_properties/README.md
@@ -0,0 +1,56 @@
+# icu_properties [![crates.io](https://img.shields.io/crates/v/icu_properties)](https://crates.io/crates/icu_properties)
+
+<!-- cargo-rdme start -->
+
+Definitions of [Unicode Properties] and APIs for
+retrieving property data in an appropriate data structure.
+
+This module is published as its own crate ([`icu_properties`](https://docs.rs/icu_properties/latest/icu_properties/))
+and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
+
+APIs that return a `CodePointSetData` exist for binary properties and certain enumerated
+properties.
+
+APIs that return a `CodePointMapData` exist for certain enumerated properties.
+
+## Examples
+
+### Property data as `CodePointSetData`s
+
+```rust
+use icu::properties::{CodePointSetData, CodePointMapData};
+use icu::properties::props::{GeneralCategory, Emoji};
+
+// A binary property as a `CodePointSetData`
+
+assert!(CodePointSetData::new::<Emoji>().contains('🎃')); // U+1F383 JACK-O-LANTERN
+assert!(!CodePointSetData::new::<Emoji>().contains('木')); // U+6728
+
+// An individual enumerated property value as a `CodePointSetData`
+
+let line_sep_data = CodePointMapData::<GeneralCategory>::new()
+    .get_set_for_value(GeneralCategory::LineSeparator);
+let line_sep = line_sep_data.as_borrowed();
+
+assert!(line_sep.contains('\u{2028}'));
+assert!(!line_sep.contains('\u{2029}'));
+```
+
+### Property data as `CodePointMapData`s
+
+```rust
+use icu::properties::CodePointMapData;
+use icu::properties::props::Script;
+
+assert_eq!(CodePointMapData::<Script>::new().get('🎃'), Script::Common); // U+1F383 JACK-O-LANTERN
+assert_eq!(CodePointMapData::<Script>::new().get('木'), Script::Han); // U+6728
+```
+
+[`ICU4X`]: ../icu/index.html
+[Unicode Properties]: https://unicode-org.github.io/icu/userguide/strings/properties.html
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_properties/src/bidi.rs b/vendor/icu_properties/src/bidi.rs
new file mode 100644
index 00000000..38ed67de
--- /dev/null
+++ b/vendor/icu_properties/src/bidi.rs
@@ -0,0 +1,153 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::{props::EnumeratedProperty, provider::PropertyEnumBidiMirroringGlyphV1};
+use icu_collections::codepointtrie::TrieValue;
+use zerovec::ule::{AsULE, RawBytesULE};
+
+/// This is a bitpacked combination of the `Bidi_Mirroring_Glyph`,
+/// `Bidi_Mirrored`, and `Bidi_Paired_Bracket_Type` properties.
+#[derive(Debug, Eq, PartialEq, Clone, Copy, Default)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::props))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // needed for baked construction
+pub struct BidiMirroringGlyph {
+    /// The mirroring glyph
+    pub mirroring_glyph: Option<char>,
+    /// Whether the glyph is mirrored
+    pub mirrored: bool,
+    /// The paired bracket type
+    pub paired_bracket_type: BidiPairedBracketType,
+}
+
+impl EnumeratedProperty for BidiMirroringGlyph {
+    type DataMarker = PropertyEnumBidiMirroringGlyphV1;
+    #[cfg(feature = "compiled_data")]
+    const SINGLETON: &'static crate::provider::PropertyCodePointMap<'static, Self> =
+        crate::provider::Baked::SINGLETON_PROPERTY_ENUM_BIDI_MIRRORING_GLYPH_V1;
+    const NAME: &'static [u8] = b"Bidi_Mirroring_Glyph";
+    const SHORT_NAME: &'static [u8] = b"Bidi_Mirroring_Glyph";
+}
+
+impl crate::private::Sealed for BidiMirroringGlyph {}
+
+impl AsULE for BidiMirroringGlyph {
+    type ULE = zerovec::ule::RawBytesULE<3>;
+
+    fn to_unaligned(self) -> Self::ULE {
+        let [a, b, c, _] = TrieValue::to_u32(self).to_le_bytes();
+        RawBytesULE([a, b, c])
+    }
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        let [a, b, c] = unaligned.0;
+        TrieValue::try_from_u32(u32::from_le_bytes([a, b, c, 0])).unwrap_or_default()
+    }
+}
+
+/// The enum represents Bidi_Paired_Bracket_Type.
+///
+/// It does not implement [`EnumeratedProperty`], instead it can be obtained
+/// through the bitpacked [`BidiMirroringGlyph`] property.
+///
+/// If you have a use case this property without also needing the [`BidiMirroringGlyph`]
+/// property, and need to optimize data size, please file an issue.
+#[derive(Debug, Eq, PartialEq, Copy, Clone, Default)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::props))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+#[non_exhaustive]
+pub enum BidiPairedBracketType {
+    /// Represents Bidi_Paired_Bracket_Type=Open.
+    Open,
+    /// Represents Bidi_Paired_Bracket_Type=Close.
+    Close,
+    /// Represents Bidi_Paired_Bracket_Type=None.
+    #[default]
+    None,
+}
+
+/// Implements [`unicode_bidi::BidiDataSource`] on [`CodePointMapDataBorrowed<BidiClass>`](crate::CodePointMapDataBorrowed).
+///
+/// ✨ *Enabled with the `unicode_bidi` Cargo feature.*
+///
+/// # Examples
+///
+///```
+/// use icu::properties::CodePointMapData;
+/// use icu::properties::props::BidiClass;
+/// use unicode_bidi::BidiInfo;
+///
+/// // This example text is defined using `concat!` because some browsers
+/// // and text editors have trouble displaying bidi strings.
+/// let text =  concat!["א", // RTL#1
+///                     "ב", // RTL#2
+///                     "ג", // RTL#3
+///                     "a", // LTR#1
+///                     "b", // LTR#2
+///                     "c", // LTR#3
+///                     ]; //
+///
+///
+/// let bidi_map = CodePointMapData::<BidiClass>::new();
+///
+/// // Resolve embedding levels within the text.  Pass `None` to detect the
+/// // paragraph level automatically.
+/// let bidi_info = BidiInfo::new_with_data_source(&bidi_map, text, None);
+///
+/// // This paragraph has embedding level 1 because its first strong character is RTL.
+/// assert_eq!(bidi_info.paragraphs.len(), 1);
+/// let para = &bidi_info.paragraphs[0];
+/// assert_eq!(para.level.number(), 1);
+/// assert!(para.level.is_rtl());
+///
+/// // Re-ordering is done after wrapping each paragraph into a sequence of
+/// // lines. For this example, I'll just use a single line that spans the
+/// // entire paragraph.
+/// let line = para.range.clone();
+///
+/// let display = bidi_info.reorder_line(para, line);
+/// assert_eq!(display, concat!["a", // LTR#1
+///                             "b", // LTR#2
+///                             "c", // LTR#3
+///                             "ג", // RTL#3
+///                             "ב", // RTL#2
+///                             "א", // RTL#1
+///                             ]);
+/// ```
+#[cfg(feature = "unicode_bidi")]
+impl unicode_bidi::data_source::BidiDataSource
+    for crate::CodePointMapDataBorrowed<'_, crate::props::BidiClass>
+{
+    fn bidi_class(&self, c: char) -> unicode_bidi::BidiClass {
+        use crate::props::BidiClass;
+        match self.get(c) {
+            BidiClass::LeftToRight => unicode_bidi::BidiClass::L,
+            BidiClass::RightToLeft => unicode_bidi::BidiClass::R,
+            BidiClass::EuropeanNumber => unicode_bidi::BidiClass::EN,
+            BidiClass::EuropeanSeparator => unicode_bidi::BidiClass::ES,
+            BidiClass::EuropeanTerminator => unicode_bidi::BidiClass::ET,
+            BidiClass::ArabicNumber => unicode_bidi::BidiClass::AN,
+            BidiClass::CommonSeparator => unicode_bidi::BidiClass::CS,
+            BidiClass::ParagraphSeparator => unicode_bidi::BidiClass::B,
+            BidiClass::SegmentSeparator => unicode_bidi::BidiClass::S,
+            BidiClass::WhiteSpace => unicode_bidi::BidiClass::WS,
+            BidiClass::OtherNeutral => unicode_bidi::BidiClass::ON,
+            BidiClass::LeftToRightEmbedding => unicode_bidi::BidiClass::LRE,
+            BidiClass::LeftToRightOverride => unicode_bidi::BidiClass::LRO,
+            BidiClass::ArabicLetter => unicode_bidi::BidiClass::AL,
+            BidiClass::RightToLeftEmbedding => unicode_bidi::BidiClass::RLE,
+            BidiClass::RightToLeftOverride => unicode_bidi::BidiClass::RLO,
+            BidiClass::PopDirectionalFormat => unicode_bidi::BidiClass::PDF,
+            BidiClass::NonspacingMark => unicode_bidi::BidiClass::NSM,
+            BidiClass::BoundaryNeutral => unicode_bidi::BidiClass::BN,
+            BidiClass::FirstStrongIsolate => unicode_bidi::BidiClass::FSI,
+            BidiClass::LeftToRightIsolate => unicode_bidi::BidiClass::LRI,
+            BidiClass::RightToLeftIsolate => unicode_bidi::BidiClass::RLI,
+            BidiClass::PopDirectionalIsolate => unicode_bidi::BidiClass::PDI,
+            // This must not happen.
+            _ => unicode_bidi::BidiClass::ON,
+        }
+    }
+}
diff --git a/vendor/icu_properties/src/code_point_map.rs b/vendor/icu_properties/src/code_point_map.rs
new file mode 100644
index 00000000..a6ef6716
--- /dev/null
+++ b/vendor/icu_properties/src/code_point_map.rs
@@ -0,0 +1,389 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::code_point_set::CodePointSetData;
+use crate::props::GeneralCategory;
+use crate::props::GeneralCategoryGroup;
+use crate::provider::*;
+use core::ops::RangeInclusive;
+use icu_collections::codepointtrie::{CodePointMapRange, CodePointTrie, TrieValue};
+use icu_provider::marker::ErasedMarker;
+use icu_provider::prelude::*;
+
+/// A wrapper around code point map data.
+///
+/// It is returned by APIs that return Unicode
+/// property data in a map-like form, ex: enumerated property value data keyed
+/// by code point. Access its data via the borrowed version,
+/// [`CodePointMapDataBorrowed`].
+#[derive(Debug, Clone)]
+pub struct CodePointMapData<T: TrieValue> {
+    data: DataPayload<ErasedMarker<PropertyCodePointMap<'static, T>>>,
+}
+
+impl<T: TrieValue> CodePointMapData<T> {
+    /// Creates a new [`CodePointMapData`] for a [`EnumeratedProperty`].
+    ///
+    /// See the documentation on [`EnumeratedProperty`] implementations for details.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    #[allow(clippy::new_ret_no_self)]
+    pub const fn new() -> CodePointMapDataBorrowed<'static, T>
+    where
+        T: EnumeratedProperty,
+    {
+        CodePointMapDataBorrowed::new()
+    }
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new)]
+    pub fn try_new_unstable(
+        provider: &(impl DataProvider<T::DataMarker> + ?Sized),
+    ) -> Result<Self, DataError>
+    where
+        T: EnumeratedProperty,
+    {
+        Ok(Self {
+            data: provider.load(Default::default())?.payload.cast(),
+        })
+    }
+
+    /// Construct a borrowed version of this type that can be queried.
+    ///
+    /// This avoids a potential small underlying cost per API call (like `get()`) by consolidating it
+    /// up front.
+    ///
+    /// This owned version if returned by functions that use a runtime data provider.
+    #[inline]
+    pub fn as_borrowed(&self) -> CodePointMapDataBorrowed<'_, T> {
+        CodePointMapDataBorrowed {
+            map: self.data.get(),
+        }
+    }
+
+    /// Convert this map to a map around another type
+    ///
+    /// Typically useful for type-erasing maps into maps around integers.
+    ///
+    /// # Panics
+    /// Will panic if T and P are different sizes
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointMapData;
+    /// use icu::properties::props::GeneralCategory;
+    ///
+    /// let data = CodePointMapData::<GeneralCategory>::new().static_to_owned();
+    ///
+    /// let gc = data.try_into_converted::<u8>().unwrap();
+    /// let gc = gc.as_borrowed();
+    ///
+    /// assert_eq!(gc.get('木'), GeneralCategory::OtherLetter as u8);  // U+6728
+    /// assert_eq!(gc.get('🎃'), GeneralCategory::OtherSymbol as u8);  // U+1F383 JACK-O-LANTERN
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn try_into_converted<P>(self) -> Result<CodePointMapData<P>, zerovec::ule::UleError>
+    where
+        P: TrieValue,
+    {
+        self.data
+            .try_map_project(|data, _| data.try_into_converted())
+            .map(CodePointMapData::from_data::<ErasedMarker<PropertyCodePointMap<'static, P>>>)
+    }
+
+    /// Construct a new one from loaded data
+    ///
+    /// Typically it is preferable to use getters like [`load_general_category()`] instead
+    pub(crate) fn from_data<M>(data: DataPayload<M>) -> Self
+    where
+        M: DynamicDataMarker<DataStruct = PropertyCodePointMap<'static, T>>,
+    {
+        Self { data: data.cast() }
+    }
+
+    /// Construct a new one an owned [`CodePointTrie`]
+    pub fn from_code_point_trie(trie: CodePointTrie<'static, T>) -> Self {
+        let set = PropertyCodePointMap::from_code_point_trie(trie);
+        CodePointMapData::from_data(
+            DataPayload::<ErasedMarker<PropertyCodePointMap<'static, T>>>::from_owned(set),
+        )
+    }
+
+    /// Convert this type to a [`CodePointTrie`] as a borrowed value.
+    ///
+    /// The data backing this is extensible and supports multiple implementations.
+    /// Currently it is always [`CodePointTrie`]; however in the future more backends may be
+    /// added, and users may select which at data generation time.
+    ///
+    /// This method returns an `Option` in order to return `None` when the backing data provider
+    /// cannot return a [`CodePointTrie`], or cannot do so within the expected constant time
+    /// constraint.
+    pub fn as_code_point_trie(&self) -> Option<&CodePointTrie<'_, T>> {
+        self.data.get().as_code_point_trie()
+    }
+
+    /// Convert this type to a [`CodePointTrie`], borrowing if possible,
+    /// otherwise allocating a new [`CodePointTrie`].
+    ///
+    /// The data backing this is extensible and supports multiple implementations.
+    /// Currently it is always [`CodePointTrie`]; however in the future more backends may be
+    /// added, and users may select which at data generation time.
+    ///
+    /// The performance of the conversion to this specific return type will vary
+    /// depending on the data structure that is backing `self`.
+    pub fn to_code_point_trie(&self) -> CodePointTrie<'_, T> {
+        self.data.get().to_code_point_trie()
+    }
+}
+
+/// A borrowed wrapper around code point set data, returned by
+/// [`CodePointSetData::as_borrowed()`]. More efficient to query.
+#[derive(Clone, Copy, Debug)]
+pub struct CodePointMapDataBorrowed<'a, T: TrieValue> {
+    map: &'a PropertyCodePointMap<'a, T>,
+}
+
+impl<'a, T: TrieValue> CodePointMapDataBorrowed<'a, T> {
+    /// Get the value this map has associated with code point `ch`
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointMapData;
+    /// use icu::properties::props::GeneralCategory;
+    ///
+    /// let gc = CodePointMapData::<GeneralCategory>::new();
+    ///
+    /// assert_eq!(gc.get('木'), GeneralCategory::OtherLetter);  // U+6728
+    /// assert_eq!(gc.get('🎃'), GeneralCategory::OtherSymbol);  // U+1F383 JACK-O-LANTERN
+    /// ```
+    pub fn get(self, ch: char) -> T {
+        self.map.get32(ch as u32)
+    }
+
+    /// See [`Self::get`].
+    pub fn get32(self, ch: u32) -> T {
+        self.map.get32(ch)
+    }
+
+    /// Get a [`CodePointSetData`] for all elements corresponding to a particular value
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::props::GeneralCategory;
+    /// use icu::properties::CodePointMapData;
+    ///
+    /// let gc = CodePointMapData::<GeneralCategory>::new();
+    ///
+    /// let other_letter_set_data =
+    ///     gc.get_set_for_value(GeneralCategory::OtherLetter);
+    /// let other_letter_set = other_letter_set_data.as_borrowed();
+    ///
+    /// assert!(other_letter_set.contains('木')); // U+6728
+    /// assert!(!other_letter_set.contains('🎃')); // U+1F383 JACK-O-LANTERN
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn get_set_for_value(self, value: T) -> CodePointSetData {
+        let set = self.map.get_set_for_value(value);
+        CodePointSetData::from_code_point_inversion_list(set)
+    }
+
+    /// Yields an [`Iterator`] returning ranges of consecutive code points that
+    /// share the same value in the [`CodePointMapData`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::props::GeneralCategory;
+    /// use icu::properties::CodePointMapData;
+    ///
+    /// let gc = CodePointMapData::<GeneralCategory>::new();
+    /// let mut ranges = gc.iter_ranges();
+    /// let next = ranges.next().unwrap();
+    /// assert_eq!(next.range, 0..=31);
+    /// assert_eq!(next.value, GeneralCategory::Control);
+    /// let next = ranges.next().unwrap();
+    /// assert_eq!(next.range, 32..=32);
+    /// assert_eq!(next.value, GeneralCategory::SpaceSeparator);
+    /// ```
+    pub fn iter_ranges(self) -> impl Iterator<Item = CodePointMapRange<T>> + 'a {
+        self.map.iter_ranges()
+    }
+
+    /// Yields an [`Iterator`] returning ranges of consecutive code points that
+    /// share the same value `v` in the [`CodePointMapData`].
+    ///
+    /// # Examples
+    ///
+    ///
+    /// ```
+    /// use icu::properties::props::GeneralCategory;
+    /// use icu::properties::CodePointMapData;
+    ///
+    /// let gc = CodePointMapData::<GeneralCategory>::new();
+    /// let mut ranges = gc.iter_ranges_for_value(GeneralCategory::UppercaseLetter);
+    /// assert_eq!(ranges.next().unwrap(), 'A' as u32..='Z' as u32);
+    /// assert_eq!(ranges.next().unwrap(), 'À' as u32..='Ö' as u32);
+    /// assert_eq!(ranges.next().unwrap(), 'Ø' as u32..='Þ' as u32);
+    /// ```
+    pub fn iter_ranges_for_value(self, val: T) -> impl Iterator<Item = RangeInclusive<u32>> + 'a {
+        self.map
+            .iter_ranges()
+            .filter(move |r| r.value == val)
+            .map(|r| r.range)
+    }
+
+    /// Yields an [`Iterator`] returning ranges of consecutive code points that
+    /// do *not* have the value `v` in the [`CodePointMapData`].
+    pub fn iter_ranges_for_value_complemented(
+        self,
+        val: T,
+    ) -> impl Iterator<Item = RangeInclusive<u32>> + 'a {
+        self.map
+            .iter_ranges_mapped(move |value| value != val)
+            .filter(|v| v.value)
+            .map(|v| v.range)
+    }
+
+    /// Exposed for FFI needs, could be exposed in general in the future but we should
+    /// have a use case first.
+    ///
+    /// FFI needs this since it operates on erased maps and can't use `iter_ranges_for_group()`
+    #[doc(hidden)] // used by FFI code
+    pub fn iter_ranges_mapped<U: Eq + 'a>(
+        self,
+        predicate: impl FnMut(T) -> U + Copy + 'a,
+    ) -> impl Iterator<Item = CodePointMapRange<U>> + 'a {
+        self.map.iter_ranges_mapped(predicate)
+    }
+}
+
+impl CodePointMapDataBorrowed<'_, GeneralCategory> {
+    /// Get a [`CodePointSetData`] for all elements corresponding to a particular value group
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
+    /// use icu::properties::CodePointMapData;
+    ///
+    /// let gc = CodePointMapData::<GeneralCategory>::new();
+    ///
+    /// let other_letter_set_data =
+    ///     gc.get_set_for_value_group(GeneralCategoryGroup::OtherLetter);
+    /// let other_letter_set = other_letter_set_data.as_borrowed();
+    ///
+    /// assert!(other_letter_set.contains('木')); // U+6728
+    /// assert!(!other_letter_set.contains('🎃')); // U+1F383 JACK-O-LANTERN
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn get_set_for_value_group(self, value: GeneralCategoryGroup) -> crate::CodePointSetData {
+        let matching_gc_ranges = self
+            .iter_ranges()
+            .filter(|cpm_range| (1 << cpm_range.value as u32) & value.0 != 0)
+            .map(|cpm_range| cpm_range.range);
+        CodePointSetData::from_code_point_inversion_list(matching_gc_ranges.collect())
+    }
+}
+
+#[cfg(feature = "compiled_data")]
+impl<T: EnumeratedProperty> Default for CodePointMapDataBorrowed<'static, T> {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<T: TrieValue> CodePointMapDataBorrowed<'static, T> {
+    /// Creates a new [`CodePointMapDataBorrowed`] for a [`EnumeratedProperty`].
+    ///
+    /// See the documentation on [`EnumeratedProperty`] implementations for details.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub const fn new() -> Self
+    where
+        T: EnumeratedProperty,
+    {
+        CodePointMapDataBorrowed { map: T::SINGLETON }
+    }
+
+    /// Cheaply converts a [`CodePointMapDataBorrowed<'static>`] into a [`CodePointMapData`].
+    ///
+    /// Note: Due to branching and indirection, using [`CodePointMapData`] might inhibit some
+    /// compile-time optimizations that are possible with [`CodePointMapDataBorrowed`].
+    pub const fn static_to_owned(self) -> CodePointMapData<T> {
+        CodePointMapData {
+            data: DataPayload::from_static_ref(self.map),
+        }
+    }
+}
+
+impl<'a> CodePointMapDataBorrowed<'a, GeneralCategory> {
+    /// Yields an [`Iterator`] returning ranges of consecutive code points that
+    /// have a `General_Category` value belonging to the specified [`GeneralCategoryGroup`]
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
+    /// use icu::properties::CodePointMapData;
+    ///
+    /// let gc = CodePointMapData::<GeneralCategory>::new();
+    /// let mut ranges = gc.iter_ranges_for_group(GeneralCategoryGroup::Letter);
+    /// assert_eq!(ranges.next().unwrap(), 'A' as u32..='Z' as u32);
+    /// assert_eq!(ranges.next().unwrap(), 'a' as u32..='z' as u32);
+    /// assert_eq!(ranges.next().unwrap(), 'ª' as u32..='ª' as u32);
+    /// assert_eq!(ranges.next().unwrap(), 'µ' as u32..='µ' as u32);
+    /// assert_eq!(ranges.next().unwrap(), 'º' as u32..='º' as u32);
+    /// assert_eq!(ranges.next().unwrap(), 'À' as u32..='Ö' as u32);
+    /// assert_eq!(ranges.next().unwrap(), 'Ø' as u32..='ö' as u32);
+    /// ```
+    pub fn iter_ranges_for_group(
+        self,
+        group: GeneralCategoryGroup,
+    ) -> impl Iterator<Item = RangeInclusive<u32>> + 'a {
+        self.map
+            .iter_ranges_mapped(move |value| group.contains(value))
+            .filter(|v| v.value)
+            .map(|v| v.range)
+    }
+}
+
+/// A Unicode character property that assigns a value to each code point.
+///
+/// The descriptions of most properties are taken from [`TR44`], the documentation for the
+/// Unicode Character Database.
+///
+/// <div class="stab unstable">
+/// 🚫 This trait is sealed; it cannot be implemented by user code. If an API requests an item that implements this
+/// trait, please consider using a type from the implementors listed below.
+/// </div>
+///
+/// [`TR44`]: https://www.unicode.org/reports/tr44
+pub trait EnumeratedProperty: crate::private::Sealed + TrieValue {
+    #[doc(hidden)]
+    type DataMarker: DataMarker<DataStruct = PropertyCodePointMap<'static, Self>>;
+    #[doc(hidden)]
+    #[cfg(feature = "compiled_data")]
+    const SINGLETON: &'static PropertyCodePointMap<'static, Self>;
+    /// The name of this property
+    const NAME: &'static [u8];
+    /// The abbreviated name of this property, if it exists, otherwise the name
+    const SHORT_NAME: &'static [u8];
+
+    /// Convenience method for `CodePointMapData::new().get(ch)`
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    #[cfg(feature = "compiled_data")]
+    fn for_char(ch: char) -> Self {
+        CodePointMapData::new().get(ch)
+    }
+}
diff --git a/vendor/icu_properties/src/code_point_set.rs b/vendor/icu_properties/src/code_point_set.rs
new file mode 100644
index 00000000..56cd83dd
--- /dev/null
+++ b/vendor/icu_properties/src/code_point_set.rs
@@ -0,0 +1,390 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::provider::*;
+use core::ops::RangeInclusive;
+use icu_collections::codepointinvlist::CodePointInversionList;
+use icu_provider::marker::ErasedMarker;
+use icu_provider::prelude::*;
+
+/// A set of Unicode code points. Access its data via the borrowed version,
+/// [`CodePointSetDataBorrowed`].
+///
+/// # Example
+/// ```rust
+/// use icu::properties::CodePointSetData;
+/// use icu::properties::props::Alphabetic;
+///
+/// let alphabetic = CodePointSetData::new::<Alphabetic>();
+///
+/// assert!(!alphabetic.contains('3'));
+/// assert!(!alphabetic.contains('੩'));  // U+0A69 GURMUKHI DIGIT THREE
+/// assert!(alphabetic.contains('A'));
+/// assert!(alphabetic.contains('Ä'));  // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+/// ```
+#[derive(Debug)]
+pub struct CodePointSetData {
+    data: DataPayload<ErasedMarker<PropertyCodePointSet<'static>>>,
+}
+
+impl CodePointSetData {
+    /// Creates a new [`CodePointSetDataBorrowed`] for a [`BinaryProperty`].
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[allow(clippy::new_ret_no_self)]
+    #[cfg(feature = "compiled_data")]
+    pub const fn new<P: BinaryProperty>() -> CodePointSetDataBorrowed<'static> {
+        CodePointSetDataBorrowed::new::<P>()
+    }
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new)]
+    pub fn try_new_unstable<P: BinaryProperty>(
+        provider: &(impl DataProvider<P::DataMarker> + ?Sized),
+    ) -> Result<CodePointSetData, DataError> {
+        Ok(CodePointSetData::from_data(
+            provider.load(Default::default())?.payload,
+        ))
+    }
+
+    /// Construct a borrowed version of this type that can be queried.
+    ///
+    /// This owned version if returned by functions that use a runtime data provider.
+    #[inline]
+    pub fn as_borrowed(&self) -> CodePointSetDataBorrowed<'_> {
+        CodePointSetDataBorrowed {
+            set: self.data.get(),
+        }
+    }
+
+    /// Construct a new one from loaded data
+    ///
+    /// Typically it is preferable to use getters like [`load_ascii_hex_digit()`] instead
+    pub(crate) fn from_data<M>(data: DataPayload<M>) -> Self
+    where
+        M: DynamicDataMarker<DataStruct = PropertyCodePointSet<'static>>,
+    {
+        Self { data: data.cast() }
+    }
+
+    /// Construct a new owned [`CodePointInversionList`]
+    pub fn from_code_point_inversion_list(set: CodePointInversionList<'static>) -> Self {
+        let set = PropertyCodePointSet::from_code_point_inversion_list(set);
+        CodePointSetData::from_data(
+            DataPayload::<ErasedMarker<PropertyCodePointSet<'static>>>::from_owned(set),
+        )
+    }
+
+    /// Convert this type to a [`CodePointInversionList`] as a borrowed value.
+    ///
+    /// The data backing this is extensible and supports multiple implementations.
+    /// Currently it is always [`CodePointInversionList`]; however in the future more backends may be
+    /// added, and users may select which at data generation time.
+    ///
+    /// This method returns an `Option` in order to return `None` when the backing data provider
+    /// cannot return a [`CodePointInversionList`], or cannot do so within the expected constant time
+    /// constraint.
+    pub fn as_code_point_inversion_list(&self) -> Option<&CodePointInversionList<'_>> {
+        self.data.get().as_code_point_inversion_list()
+    }
+
+    /// Convert this type to a [`CodePointInversionList`], borrowing if possible,
+    /// otherwise allocating a new [`CodePointInversionList`].
+    ///
+    /// The data backing this is extensible and supports multiple implementations.
+    /// Currently it is always [`CodePointInversionList`]; however in the future more backends may be
+    /// added, and users may select which at data generation time.
+    ///
+    /// The performance of the conversion to this specific return type will vary
+    /// depending on the data structure that is backing `self`.
+    pub fn to_code_point_inversion_list(&self) -> CodePointInversionList<'_> {
+        self.data.get().to_code_point_inversion_list()
+    }
+}
+
+/// A borrowed wrapper around code point set data, returned by
+/// [`CodePointSetData::as_borrowed()`]. More efficient to query.
+#[derive(Clone, Copy, Debug)]
+pub struct CodePointSetDataBorrowed<'a> {
+    set: &'a PropertyCodePointSet<'a>,
+}
+
+impl CodePointSetDataBorrowed<'static> {
+    /// Creates a new [`CodePointSetData`] for a [`BinaryProperty`].
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[inline]
+    #[cfg(feature = "compiled_data")]
+    pub const fn new<P: BinaryProperty>() -> Self {
+        CodePointSetDataBorrowed { set: P::SINGLETON }
+    }
+    /// Cheaply converts a [`CodePointSetDataBorrowed<'static>`] into a [`CodePointSetData`].
+    ///
+    /// Note: Due to branching and indirection, using [`CodePointSetData`] might inhibit some
+    /// compile-time optimizations that are possible with [`CodePointSetDataBorrowed`].
+    pub const fn static_to_owned(self) -> CodePointSetData {
+        CodePointSetData {
+            data: DataPayload::from_static_ref(self.set),
+        }
+    }
+}
+
+impl<'a> CodePointSetDataBorrowed<'a> {
+    /// Check if the set contains a character
+    ///
+    /// ```rust
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Alphabetic;
+    ///
+    /// let alphabetic = CodePointSetData::new::<Alphabetic>();
+    ///
+    /// assert!(!alphabetic.contains('3'));
+    /// assert!(!alphabetic.contains('੩'));  // U+0A69 GURMUKHI DIGIT THREE
+    /// assert!(alphabetic.contains('A'));
+    /// assert!(alphabetic.contains('Ä'));  // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+    /// ```
+    #[inline]
+    pub fn contains(self, ch: char) -> bool {
+        self.set.contains(ch)
+    }
+
+    /// See [`Self::contains`].
+    #[inline]
+    pub fn contains32(self, ch: u32) -> bool {
+        self.set.contains32(ch)
+    }
+
+    // Yields an [`Iterator`] returning the ranges of the code points that are
+    /// included in the [`CodePointSetData`]
+    ///
+    /// Ranges are returned as [`RangeInclusive`], which is inclusive of its
+    /// `end` bound value. An end-inclusive behavior matches the ICU4C/J
+    /// behavior of ranges, ex: `UnicodeSet::contains(UChar32 start, UChar32 end)`.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::props::Alphabetic;
+    /// use icu::properties::CodePointSetData;
+    ///
+    /// let alphabetic = CodePointSetData::new::<Alphabetic>();
+    /// let mut ranges = alphabetic.iter_ranges();
+    ///
+    /// assert_eq!(Some(0x0041..=0x005A), ranges.next()); // 'A'..'Z'
+    /// assert_eq!(Some(0x0061..=0x007A), ranges.next()); // 'a'..'z'
+    /// ```
+    #[inline]
+    pub fn iter_ranges(self) -> impl Iterator<Item = RangeInclusive<u32>> + 'a {
+        self.set.iter_ranges()
+    }
+
+    // Yields an [`Iterator`] returning the ranges of the code points that are
+    /// *not* included in the [`CodePointSetData`]
+    ///
+    /// Ranges are returned as [`RangeInclusive`], which is inclusive of its
+    /// `end` bound value. An end-inclusive behavior matches the ICU4C/J
+    /// behavior of ranges, ex: `UnicodeSet::contains(UChar32 start, UChar32 end)`.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::props::Alphabetic;
+    /// use icu::properties::CodePointSetData;
+    ///
+    /// let alphabetic = CodePointSetData::new::<Alphabetic>();
+    /// let mut ranges = alphabetic.iter_ranges();
+    ///
+    /// assert_eq!(Some(0x0041..=0x005A), ranges.next()); // 'A'..'Z'
+    /// assert_eq!(Some(0x0061..=0x007A), ranges.next()); // 'a'..'z'
+    /// ```
+    #[inline]
+    pub fn iter_ranges_complemented(self) -> impl Iterator<Item = RangeInclusive<u32>> + 'a {
+        self.set.iter_ranges_complemented()
+    }
+}
+
+/// A binary Unicode character property.
+///
+/// The descriptions of most properties are taken from [`TR44`], the documentation for the
+/// Unicode Character Database.  Some properties are instead defined in [`TR18`], the
+/// documentation for Unicode regular expressions. In particular, Annex C of this document
+/// defines properties for POSIX compatibility.
+///
+/// <div class="stab unstable">
+/// 🚫 This trait is sealed; it cannot be implemented by user code. If an API requests an item that implements this
+/// trait, please consider using a type from the implementors listed below.
+/// </div>
+///
+/// [`TR44`]: https://www.unicode.org/reports/tr44
+/// [`TR18`]: https://www.unicode.org/reports/tr18
+pub trait BinaryProperty: crate::private::Sealed + Sized {
+    #[doc(hidden)]
+    type DataMarker: DataMarker<DataStruct = PropertyCodePointSet<'static>>;
+    #[doc(hidden)]
+    #[cfg(feature = "compiled_data")]
+    const SINGLETON: &'static PropertyCodePointSet<'static>;
+    /// The name of this property
+    const NAME: &'static [u8];
+    /// The abbreviated name of this property, if it exists, otherwise the name
+    const SHORT_NAME: &'static [u8];
+
+    /// Convenience method for `CodePointSetData::new().contains(ch)`
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    #[cfg(feature = "compiled_data")]
+    fn for_char(ch: char) -> bool {
+        CodePointSetData::new::<Self>().contains(ch)
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    #[test]
+    fn test_general_category() {
+        use icu::properties::props::GeneralCategory;
+        use icu::properties::props::GeneralCategoryGroup;
+        use icu::properties::CodePointMapData;
+
+        let digits_data = CodePointMapData::<GeneralCategory>::new()
+            .get_set_for_value_group(GeneralCategoryGroup::Number);
+        let digits = digits_data.as_borrowed();
+
+        assert!(digits.contains('5'));
+        assert!(digits.contains('\u{0665}')); // U+0665 ARABIC-INDIC DIGIT FIVE
+        assert!(digits.contains('\u{096b}')); // U+0969 DEVANAGARI DIGIT FIVE
+
+        assert!(!digits.contains('A'));
+    }
+
+    #[test]
+    fn test_script() {
+        use icu::properties::props::Script;
+        use icu::properties::CodePointMapData;
+
+        let thai_data = CodePointMapData::<Script>::new().get_set_for_value(Script::Thai);
+        let thai = thai_data.as_borrowed();
+
+        assert!(thai.contains('\u{0e01}')); // U+0E01 THAI CHARACTER KO KAI
+        assert!(thai.contains('\u{0e50}')); // U+0E50 THAI DIGIT ZERO
+
+        assert!(!thai.contains('A'));
+        assert!(!thai.contains('\u{0e3f}')); // U+0E50 THAI CURRENCY SYMBOL BAHT
+    }
+
+    #[test]
+    fn test_gc_groupings() {
+        use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
+        use icu::properties::CodePointMapData;
+        use icu_collections::codepointinvlist::CodePointInversionListBuilder;
+
+        let test_group = |category: GeneralCategoryGroup, subcategories: &[GeneralCategory]| {
+            let category_set =
+                CodePointMapData::<GeneralCategory>::new().get_set_for_value_group(category);
+            let category_set = category_set
+                .as_code_point_inversion_list()
+                .expect("The data should be valid");
+
+            let mut builder = CodePointInversionListBuilder::new();
+            for &subcategory in subcategories {
+                let gc_set_data =
+                    CodePointMapData::<GeneralCategory>::new().get_set_for_value(subcategory);
+                let gc_set = gc_set_data.as_borrowed();
+                for range in gc_set.iter_ranges() {
+                    builder.add_range32(range);
+                }
+            }
+            let combined_set = builder.build();
+            println!("{category:?} {subcategories:?}");
+            assert_eq!(
+                category_set.get_inversion_list_vec(),
+                combined_set.get_inversion_list_vec()
+            );
+        };
+
+        test_group(
+            GeneralCategoryGroup::Letter,
+            &[
+                GeneralCategory::UppercaseLetter,
+                GeneralCategory::LowercaseLetter,
+                GeneralCategory::TitlecaseLetter,
+                GeneralCategory::ModifierLetter,
+                GeneralCategory::OtherLetter,
+            ],
+        );
+        test_group(
+            GeneralCategoryGroup::Other,
+            &[
+                GeneralCategory::Control,
+                GeneralCategory::Format,
+                GeneralCategory::Unassigned,
+                GeneralCategory::PrivateUse,
+                GeneralCategory::Surrogate,
+            ],
+        );
+        test_group(
+            GeneralCategoryGroup::Mark,
+            &[
+                GeneralCategory::SpacingMark,
+                GeneralCategory::EnclosingMark,
+                GeneralCategory::NonspacingMark,
+            ],
+        );
+        test_group(
+            GeneralCategoryGroup::Number,
+            &[
+                GeneralCategory::DecimalNumber,
+                GeneralCategory::LetterNumber,
+                GeneralCategory::OtherNumber,
+            ],
+        );
+        test_group(
+            GeneralCategoryGroup::Punctuation,
+            &[
+                GeneralCategory::ConnectorPunctuation,
+                GeneralCategory::DashPunctuation,
+                GeneralCategory::ClosePunctuation,
+                GeneralCategory::FinalPunctuation,
+                GeneralCategory::InitialPunctuation,
+                GeneralCategory::OtherPunctuation,
+                GeneralCategory::OpenPunctuation,
+            ],
+        );
+        test_group(
+            GeneralCategoryGroup::Symbol,
+            &[
+                GeneralCategory::CurrencySymbol,
+                GeneralCategory::ModifierSymbol,
+                GeneralCategory::MathSymbol,
+                GeneralCategory::OtherSymbol,
+            ],
+        );
+        test_group(
+            GeneralCategoryGroup::Separator,
+            &[
+                GeneralCategory::LineSeparator,
+                GeneralCategory::ParagraphSeparator,
+                GeneralCategory::SpaceSeparator,
+            ],
+        );
+    }
+
+    #[test]
+    fn test_gc_surrogate() {
+        use icu::properties::props::GeneralCategory;
+        use icu::properties::CodePointMapData;
+
+        let surrogates_data = CodePointMapData::<GeneralCategory>::new()
+            .get_set_for_value(GeneralCategory::Surrogate);
+        let surrogates = surrogates_data.as_borrowed();
+
+        assert!(surrogates.contains32(0xd800));
+        assert!(surrogates.contains32(0xd900));
+        assert!(surrogates.contains32(0xdfff));
+
+        assert!(!surrogates.contains('A'));
+    }
+}
diff --git a/vendor/icu_properties/src/emoji.rs b/vendor/icu_properties/src/emoji.rs
new file mode 100644
index 00000000..c0b32303
--- /dev/null
+++ b/vendor/icu_properties/src/emoji.rs
@@ -0,0 +1,171 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::provider::*;
+use icu_collections::codepointinvliststringlist::CodePointInversionListAndStringList;
+use icu_provider::marker::ErasedMarker;
+use icu_provider::prelude::*;
+
+/// A wrapper around `UnicodeSet` data (characters and strings)
+#[derive(Debug)]
+pub struct EmojiSetData {
+    data: DataPayload<ErasedMarker<PropertyUnicodeSet<'static>>>,
+}
+
+impl EmojiSetData {
+    /// Creates a new [`EmojiSetDataBorrowed`] for a [`EmojiSet`].
+    ///
+    /// See the documentation on [`EmojiSet`] implementations for details.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    #[allow(clippy::new_ret_no_self)]
+    pub const fn new<P: EmojiSet>() -> EmojiSetDataBorrowed<'static> {
+        EmojiSetDataBorrowed::new::<P>()
+    }
+
+    /// A version of `new()` that uses custom data provided by a [`DataProvider`].
+    ///
+    /// Note that this will return an owned version of the data. Functionality is available on
+    /// the borrowed version, accessible through [`EmojiSetData::as_borrowed`].
+    pub fn try_new_unstable<P: EmojiSet>(
+        provider: &(impl DataProvider<P::DataMarker> + ?Sized),
+    ) -> Result<EmojiSetData, DataError> {
+        Ok(EmojiSetData::from_data(
+            provider.load(Default::default())?.payload,
+        ))
+    }
+
+    /// Construct a borrowed version of this type that can be queried.
+    ///
+    /// This avoids a potential small underlying cost per API call (ex: `contains()`) by consolidating it
+    /// up front.
+    #[inline]
+    pub fn as_borrowed(&self) -> EmojiSetDataBorrowed<'_> {
+        EmojiSetDataBorrowed {
+            set: self.data.get(),
+        }
+    }
+
+    /// Construct a new one from loaded data
+    ///
+    /// Typically it is preferable to use getters instead
+    pub(crate) fn from_data<M>(data: DataPayload<M>) -> Self
+    where
+        M: DynamicDataMarker<DataStruct = PropertyUnicodeSet<'static>>,
+    {
+        Self { data: data.cast() }
+    }
+
+    /// Construct a new owned [`CodePointInversionListAndStringList`]
+    pub fn from_code_point_inversion_list_string_list(
+        set: CodePointInversionListAndStringList<'static>,
+    ) -> Self {
+        let set = PropertyUnicodeSet::from_code_point_inversion_list_string_list(set);
+        EmojiSetData::from_data(
+            DataPayload::<ErasedMarker<PropertyUnicodeSet<'static>>>::from_owned(set),
+        )
+    }
+
+    /// Convert this type to a [`CodePointInversionListAndStringList`] as a borrowed value.
+    ///
+    /// The data backing this is extensible and supports multiple implementations.
+    /// Currently it is always [`CodePointInversionListAndStringList`]; however in the future more backends may be
+    /// added, and users may select which at data generation time.
+    ///
+    /// This method returns an `Option` in order to return `None` when the backing data provider
+    /// cannot return a [`CodePointInversionListAndStringList`], or cannot do so within the expected constant time
+    /// constraint.
+    pub fn as_code_point_inversion_list_string_list(
+        &self,
+    ) -> Option<&CodePointInversionListAndStringList<'_>> {
+        self.data.get().as_code_point_inversion_list_string_list()
+    }
+
+    /// Convert this type to a [`CodePointInversionListAndStringList`], borrowing if possible,
+    /// otherwise allocating a new [`CodePointInversionListAndStringList`].
+    ///
+    /// The data backing this is extensible and supports multiple implementations.
+    /// Currently it is always [`CodePointInversionListAndStringList`]; however in the future more backends may be
+    /// added, and users may select which at data generation time.
+    ///
+    /// The performance of the conversion to this specific return type will vary
+    /// depending on the data structure that is backing `self`.
+    pub fn to_code_point_inversion_list_string_list(
+        &self,
+    ) -> CodePointInversionListAndStringList<'_> {
+        self.data.get().to_code_point_inversion_list_string_list()
+    }
+}
+
+/// A borrowed wrapper around code point set data, returned by
+/// [`EmojiSetData::as_borrowed()`]. More efficient to query.
+#[derive(Clone, Copy, Debug)]
+pub struct EmojiSetDataBorrowed<'a> {
+    set: &'a PropertyUnicodeSet<'a>,
+}
+
+impl EmojiSetDataBorrowed<'_> {
+    /// Check if the set contains the string. Strings consisting of one character
+    /// are treated as a character/code point.
+    ///
+    /// This matches ICU behavior for ICU's `UnicodeSet`.
+    #[inline]
+    pub fn contains_str(self, s: &str) -> bool {
+        self.set.contains_str(s)
+    }
+
+    /// Check if the set contains the code point.
+    #[inline]
+    pub fn contains(self, ch: char) -> bool {
+        self.set.contains(ch)
+    }
+
+    /// See [`Self::contains`].
+    #[inline]
+    pub fn contains32(self, cp: u32) -> bool {
+        self.set.contains32(cp)
+    }
+}
+
+impl EmojiSetDataBorrowed<'static> {
+    /// Creates a new [`EmojiSetDataBorrowed`] for a [`EmojiSet`].
+    ///
+    /// See the documentation on [`EmojiSet`] implementations for details.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[inline]
+    #[cfg(feature = "compiled_data")]
+    pub const fn new<P: EmojiSet>() -> Self {
+        EmojiSetDataBorrowed { set: P::SINGLETON }
+    }
+
+    /// Cheaply converts a [`EmojiSetDataBorrowed<'static>`] into a [`EmojiSetData`].
+    ///
+    /// Note: Due to branching and indirection, using [`EmojiSetData`] might inhibit some
+    /// compile-time optimizations that are possible with [`EmojiSetDataBorrowed`].
+    pub const fn static_to_owned(self) -> EmojiSetData {
+        EmojiSetData {
+            data: DataPayload::from_static_ref(self.set),
+        }
+    }
+}
+
+/// An Emoji set as defined by [`Unicode Technical Standard #51`](https://unicode.org/reports/tr51/#Emoji_Sets>).
+///
+/// <div class="stab unstable">
+/// 🚫 This trait is sealed; it cannot be implemented by user code. If an API requests an item that implements this
+/// trait, please consider using a type from the implementors listed below.
+/// </div>
+pub trait EmojiSet: crate::private::Sealed {
+    #[doc(hidden)]
+    type DataMarker: DataMarker<DataStruct = PropertyUnicodeSet<'static>>;
+    #[doc(hidden)]
+    #[cfg(feature = "compiled_data")]
+    const SINGLETON: &'static PropertyUnicodeSet<'static>;
+}
diff --git a/vendor/icu_properties/src/lib.rs b/vendor/icu_properties/src/lib.rs
new file mode 100644
index 00000000..e980b2fb
--- /dev/null
+++ b/vendor/icu_properties/src/lib.rs
@@ -0,0 +1,100 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Definitions of [Unicode Properties] and APIs for
+//! retrieving property data in an appropriate data structure.
+//!
+//! This module is published as its own crate ([`icu_properties`](https://docs.rs/icu_properties/latest/icu_properties/))
+//! and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
+//!
+//! APIs that return a [`CodePointSetData`] exist for binary properties and certain enumerated
+//! properties.
+//!
+//! APIs that return a [`CodePointMapData`] exist for certain enumerated properties.
+//!
+//! # Examples
+//!
+//! ## Property data as `CodePointSetData`s
+//!
+//! ```
+//! use icu::properties::{CodePointSetData, CodePointMapData};
+//! use icu::properties::props::{GeneralCategory, Emoji};
+//!
+//! // A binary property as a `CodePointSetData`
+//!
+//! assert!(CodePointSetData::new::<Emoji>().contains('🎃')); // U+1F383 JACK-O-LANTERN
+//! assert!(!CodePointSetData::new::<Emoji>().contains('木')); // U+6728
+//!
+//! // An individual enumerated property value as a `CodePointSetData`
+//!
+//! let line_sep_data = CodePointMapData::<GeneralCategory>::new()
+//!     .get_set_for_value(GeneralCategory::LineSeparator);
+//! let line_sep = line_sep_data.as_borrowed();
+//!
+//! assert!(line_sep.contains('\u{2028}'));
+//! assert!(!line_sep.contains('\u{2029}'));
+//! ```
+//!
+//! ## Property data as `CodePointMapData`s
+//!
+//! ```
+//! use icu::properties::CodePointMapData;
+//! use icu::properties::props::Script;
+//!
+//! assert_eq!(CodePointMapData::<Script>::new().get('🎃'), Script::Common); // U+1F383 JACK-O-LANTERN
+//! assert_eq!(CodePointMapData::<Script>::new().get('木'), Script::Han); // U+6728
+//! ```
+//!
+//! [`ICU4X`]: ../icu/index.html
+//! [Unicode Properties]: https://unicode-org.github.io/icu/userguide/strings/properties.html
+//! [`CodePointSetData`]: crate::CodePointSetData
+//! [`CodePointMapData`]: crate::CodePointMapData
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+#![warn(missing_docs)]
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+mod code_point_set;
+pub use code_point_set::{CodePointSetData, CodePointSetDataBorrowed};
+mod code_point_map;
+pub use code_point_map::{CodePointMapData, CodePointMapDataBorrowed};
+mod emoji;
+pub use emoji::{EmojiSetData, EmojiSetDataBorrowed};
+mod names;
+pub use names::{
+    PropertyNamesLong, PropertyNamesLongBorrowed, PropertyNamesShort, PropertyNamesShortBorrowed,
+    PropertyParser, PropertyParserBorrowed,
+};
+mod runtime;
+
+// NOTE: The Pernosco debugger has special knowledge
+// of the `CanonicalCombiningClass` struct inside the `props`
+// module. Please do not change the crate-module-qualified
+// name of that struct without coordination.
+pub mod props;
+pub mod provider;
+pub mod script;
+
+mod bidi;
+mod trievalue;
+
+mod private {
+    pub trait Sealed {}
+}
diff --git a/vendor/icu_properties/src/names.rs b/vendor/icu_properties/src/names.rs
new file mode 100644
index 00000000..1aa107fd
--- /dev/null
+++ b/vendor/icu_properties/src/names.rs
@@ -0,0 +1,907 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::props::*;
+use crate::provider::names::*;
+use core::marker::PhantomData;
+use icu_collections::codepointtrie::TrieValue;
+use icu_provider::marker::ErasedMarker;
+use icu_provider::prelude::*;
+use yoke::Yokeable;
+use zerotrie::cursor::ZeroTrieSimpleAsciiCursor;
+
+/// A struct capable of looking up a property value from a string name.
+/// Access its data by calling [`Self::as_borrowed()`] and using the methods on
+/// [`PropertyParserBorrowed`].
+///
+/// The name can be a short name (`Lu`), a long name(`Uppercase_Letter`),
+/// or an alias.
+///
+/// Property names can be looked up using "strict" matching (looking for a name
+/// that matches exactly), or "loose matching", where the name is allowed to deviate
+/// in terms of ASCII casing, whitespace, underscores, and hyphens.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::props::GeneralCategory;
+/// use icu::properties::PropertyParser;
+///
+/// let lookup = PropertyParser::<GeneralCategory>::new();
+/// // short name for value
+/// assert_eq!(
+///     lookup.get_strict("Lu"),
+///     Some(GeneralCategory::UppercaseLetter)
+/// );
+/// assert_eq!(
+///     lookup.get_strict("Pd"),
+///     Some(GeneralCategory::DashPunctuation)
+/// );
+/// // long name for value
+/// assert_eq!(
+///     lookup.get_strict("Uppercase_Letter"),
+///     Some(GeneralCategory::UppercaseLetter)
+/// );
+/// assert_eq!(
+///     lookup.get_strict("Dash_Punctuation"),
+///     Some(GeneralCategory::DashPunctuation)
+/// );
+/// // name has incorrect casing
+/// assert_eq!(lookup.get_strict("dashpunctuation"), None);
+/// // loose matching of name
+/// assert_eq!(
+///     lookup.get_loose("dash-punctuation"),
+///     Some(GeneralCategory::DashPunctuation)
+/// );
+/// // fake property
+/// assert_eq!(lookup.get_strict("Animated_Gif"), None);
+/// ```
+#[derive(Debug)]
+pub struct PropertyParser<T> {
+    map: DataPayload<ErasedMarker<PropertyValueNameToEnumMap<'static>>>,
+    markers: PhantomData<fn() -> T>,
+}
+
+/// A borrowed wrapper around property value name-to-enum data, returned by
+/// [`PropertyParser::as_borrowed()`]. More efficient to query.
+#[derive(Debug)]
+pub struct PropertyParserBorrowed<'a, T> {
+    map: &'a PropertyValueNameToEnumMap<'a>,
+    markers: PhantomData<fn() -> T>,
+}
+
+impl<T> Clone for PropertyParserBorrowed<'_, T> {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl<T> Copy for PropertyParserBorrowed<'_, T> {}
+
+impl<T> PropertyParser<T> {
+    /// Creates a new instance of `PropertyParser<T>` using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    #[allow(clippy::new_ret_no_self)]
+    pub fn new() -> PropertyParserBorrowed<'static, T>
+    where
+        T: ParseableEnumeratedProperty,
+    {
+        PropertyParserBorrowed::new()
+    }
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new)]
+    pub fn try_new_unstable(
+        provider: &(impl DataProvider<T::DataMarker> + ?Sized),
+    ) -> Result<Self, DataError>
+    where
+        T: ParseableEnumeratedProperty,
+    {
+        Ok(Self {
+            map: provider.load(Default::default())?.payload.cast(),
+            markers: PhantomData,
+        })
+    }
+
+    /// Construct a borrowed version of this type that can be queried.
+    ///
+    /// This avoids a potential small underlying cost per API call (like `get_strict()`) by consolidating it
+    /// up front.
+    #[inline]
+    pub fn as_borrowed(&self) -> PropertyParserBorrowed<'_, T> {
+        PropertyParserBorrowed {
+            map: self.map.get(),
+            markers: PhantomData,
+        }
+    }
+
+    #[doc(hidden)] // used by FFI code
+    pub fn erase(self) -> PropertyParser<u16> {
+        PropertyParser {
+            map: self.map.cast(),
+            markers: PhantomData,
+        }
+    }
+}
+
+impl<T: TrieValue> PropertyParserBorrowed<'_, T> {
+    /// Get the property value as a u16, doing a strict search looking for
+    /// names that match exactly
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::props::GeneralCategory;
+    /// use icu::properties::PropertyParser;
+    ///
+    /// let lookup = PropertyParser::<GeneralCategory>::new();
+    /// assert_eq!(
+    ///     lookup.get_strict_u16("Lu"),
+    ///     Some(GeneralCategory::UppercaseLetter as u16)
+    /// );
+    /// assert_eq!(
+    ///     lookup.get_strict_u16("Uppercase_Letter"),
+    ///     Some(GeneralCategory::UppercaseLetter as u16)
+    /// );
+    /// // does not do loose matching
+    /// assert_eq!(lookup.get_strict_u16("UppercaseLetter"), None);
+    /// ```
+    #[inline]
+    pub fn get_strict_u16(self, name: &str) -> Option<u16> {
+        get_strict_u16(self.map, name)
+    }
+
+    /// Get the property value as a `T`, doing a strict search looking for
+    /// names that match exactly
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::props::GeneralCategory;
+    /// use icu::properties::PropertyParser;
+    ///
+    /// let lookup = PropertyParser::<GeneralCategory>::new();
+    /// assert_eq!(
+    ///     lookup.get_strict("Lu"),
+    ///     Some(GeneralCategory::UppercaseLetter)
+    /// );
+    /// assert_eq!(
+    ///     lookup.get_strict("Uppercase_Letter"),
+    ///     Some(GeneralCategory::UppercaseLetter)
+    /// );
+    /// // does not do loose matching
+    /// assert_eq!(lookup.get_strict("UppercaseLetter"), None);
+    /// ```
+    #[inline]
+    pub fn get_strict(self, name: &str) -> Option<T> {
+        T::try_from_u32(self.get_strict_u16(name)? as u32).ok()
+    }
+
+    /// Get the property value as a u16, doing a loose search looking for
+    /// names that match case-insensitively, ignoring ASCII hyphens, underscores, and
+    /// whitespaces.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::props::GeneralCategory;
+    /// use icu::properties::PropertyParser;
+    ///
+    /// let lookup = PropertyParser::<GeneralCategory>::new();
+    /// assert_eq!(
+    ///     lookup.get_loose_u16("Lu"),
+    ///     Some(GeneralCategory::UppercaseLetter as u16)
+    /// );
+    /// assert_eq!(
+    ///     lookup.get_loose_u16("Uppercase_Letter"),
+    ///     Some(GeneralCategory::UppercaseLetter as u16)
+    /// );
+    /// // does do loose matching
+    /// assert_eq!(
+    ///     lookup.get_loose_u16("UppercaseLetter"),
+    ///     Some(GeneralCategory::UppercaseLetter as u16)
+    /// );
+    /// ```
+    #[inline]
+    pub fn get_loose_u16(self, name: &str) -> Option<u16> {
+        get_loose_u16(self.map, name)
+    }
+
+    /// Get the property value as a `T`, doing a loose search looking for
+    /// names that match case-insensitively, ignoring ASCII hyphens, underscores, and
+    /// whitespaces.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::props::GeneralCategory;
+    /// use icu::properties::PropertyParser;
+    ///
+    /// let lookup = PropertyParser::<GeneralCategory>::new();
+    /// assert_eq!(
+    ///     lookup.get_loose("Lu"),
+    ///     Some(GeneralCategory::UppercaseLetter)
+    /// );
+    /// assert_eq!(
+    ///     lookup.get_loose("Uppercase_Letter"),
+    ///     Some(GeneralCategory::UppercaseLetter)
+    /// );
+    /// // does do loose matching
+    /// assert_eq!(
+    ///     lookup.get_loose("UppercaseLetter"),
+    ///     Some(GeneralCategory::UppercaseLetter)
+    /// );
+    /// ```
+    #[inline]
+    pub fn get_loose(self, name: &str) -> Option<T> {
+        T::try_from_u32(self.get_loose_u16(name)? as u32).ok()
+    }
+}
+
+#[cfg(feature = "compiled_data")]
+impl<T: ParseableEnumeratedProperty> Default for PropertyParserBorrowed<'static, T> {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<T: TrieValue> PropertyParserBorrowed<'static, T> {
+    /// Creates a new instance of `PropertyParserBorrowed<T>` using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub fn new() -> Self
+    where
+        T: ParseableEnumeratedProperty,
+    {
+        Self {
+            map: T::SINGLETON,
+            markers: PhantomData,
+        }
+    }
+
+    /// Cheaply converts a [`PropertyParserBorrowed<'static>`] into a [`PropertyParser`].
+    ///
+    /// Note: Due to branching and indirection, using [`PropertyParser`] might inhibit some
+    /// compile-time optimizations that are possible with [`PropertyParserBorrowed`].
+    pub const fn static_to_owned(self) -> PropertyParser<T> {
+        PropertyParser {
+            map: DataPayload::from_static_ref(self.map),
+            markers: PhantomData,
+        }
+    }
+}
+
+/// Avoid monomorphizing multiple copies of this function
+fn get_strict_u16(payload: &PropertyValueNameToEnumMap<'_>, name: &str) -> Option<u16> {
+    payload.map.get(name).and_then(|i| i.try_into().ok())
+}
+
+/// Avoid monomorphizing multiple copies of this function
+fn get_loose_u16(payload: &PropertyValueNameToEnumMap<'_>, name: &str) -> Option<u16> {
+    fn recurse(mut cursor: ZeroTrieSimpleAsciiCursor, mut rest: &[u8]) -> Option<usize> {
+        if cursor.is_empty() {
+            return None;
+        }
+
+        // Skip whitespace, underscore, hyphen in trie.
+        for skip in [b'\t', b'\n', b'\x0C', b'\r', b' ', 0x0B, b'_', b'-'] {
+            let mut skip_cursor = cursor.clone();
+            skip_cursor.step(skip);
+            if let Some(r) = recurse(skip_cursor, rest) {
+                return Some(r);
+            }
+        }
+
+        let ascii = loop {
+            let Some((&a, r)) = rest.split_first() else {
+                return cursor.take_value();
+            };
+            rest = r;
+
+            // Skip whitespace, underscore, hyphen in input
+            if !matches!(
+                a,
+                b'\t' | b'\n' | b'\x0C' | b'\r' | b' ' | 0x0B | b'_' | b'-'
+            ) {
+                break a;
+            }
+        };
+
+        let mut other_case_cursor = cursor.clone();
+        cursor.step(ascii);
+        other_case_cursor.step(if ascii.is_ascii_lowercase() {
+            ascii.to_ascii_uppercase()
+        } else {
+            ascii.to_ascii_lowercase()
+        });
+        // This uses the call stack as the DFS stack. The recursion will terminate as
+        // rest's length is strictly shrinking. The call stack's depth is limited by
+        // name.len().
+        recurse(cursor, rest).or_else(|| recurse(other_case_cursor, rest))
+    }
+
+    recurse(payload.map.cursor(), name.as_bytes()).and_then(|i| i.try_into().ok())
+}
+
+/// A struct capable of looking up a property name from a value
+/// Access its data by calling [`Self::as_borrowed()`] and using the methods on
+/// [`PropertyNamesLongBorrowed`].
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::props::CanonicalCombiningClass;
+/// use icu::properties::PropertyNamesLong;
+///
+/// let names = PropertyNamesLong::<CanonicalCombiningClass>::new();
+/// assert_eq!(
+///     names.get(CanonicalCombiningClass::KanaVoicing),
+///     Some("Kana_Voicing")
+/// );
+/// assert_eq!(
+///     names.get(CanonicalCombiningClass::AboveLeft),
+///     Some("Above_Left")
+/// );
+/// ```
+pub struct PropertyNamesLong<T: NamedEnumeratedProperty> {
+    map: DataPayload<ErasedMarker<T::DataStructLong>>,
+}
+
+impl<T: NamedEnumeratedProperty> core::fmt::Debug for PropertyNamesLong<T> {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        f.debug_struct("PropertyNamesLong")
+            // .field("map", &self.map)
+            .finish()
+    }
+}
+
+/// A borrowed wrapper around property value name-to-enum data, returned by
+/// [`PropertyNamesLong::as_borrowed()`]. More efficient to query.
+#[derive(Debug)]
+pub struct PropertyNamesLongBorrowed<'a, T: NamedEnumeratedProperty> {
+    map: &'a T::DataStructLongBorrowed<'a>,
+}
+
+impl<T: NamedEnumeratedProperty> Clone for PropertyNamesLongBorrowed<'_, T> {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl<T: NamedEnumeratedProperty> Copy for PropertyNamesLongBorrowed<'_, T> {}
+
+impl<T: NamedEnumeratedProperty> PropertyNamesLong<T> {
+    /// Creates a new instance of `PropertyNamesLongBorrowed<T>`.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    #[allow(clippy::new_ret_no_self)]
+    pub fn new() -> PropertyNamesLongBorrowed<'static, T> {
+        PropertyNamesLongBorrowed::new()
+    }
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new)]
+    pub fn try_new_unstable(
+        provider: &(impl DataProvider<T::DataMarkerLong> + ?Sized),
+    ) -> Result<Self, DataError> {
+        Ok(Self {
+            map: provider.load(Default::default())?.payload.cast(),
+        })
+    }
+
+    /// Construct a borrowed version of this type that can be queried.
+    ///
+    /// This avoids a potential small underlying cost per API call (like `get_static()`) by consolidating it
+    /// up front.
+    #[inline]
+    pub fn as_borrowed(&self) -> PropertyNamesLongBorrowed<'_, T> {
+        PropertyNamesLongBorrowed {
+            map: T::nep_long_identity(self.map.get()),
+        }
+    }
+}
+
+impl<'a, T: NamedEnumeratedProperty> PropertyNamesLongBorrowed<'a, T> {
+    /// Get the property name given a value
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use icu::properties::props::CanonicalCombiningClass;
+    /// use icu::properties::PropertyNamesLong;
+    ///
+    /// let lookup = PropertyNamesLong::<CanonicalCombiningClass>::new();
+    /// assert_eq!(
+    ///     lookup.get(CanonicalCombiningClass::KanaVoicing),
+    ///     Some("Kana_Voicing")
+    /// );
+    /// assert_eq!(
+    ///     lookup.get(CanonicalCombiningClass::AboveLeft),
+    ///     Some("Above_Left")
+    /// );
+    /// ```
+    #[inline]
+    pub fn get(self, property: T) -> Option<&'a str> {
+        self.map.get(property.to_u32())
+    }
+}
+
+#[cfg(feature = "compiled_data")]
+impl<T: NamedEnumeratedProperty> Default for PropertyNamesLongBorrowed<'static, T> {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<T: NamedEnumeratedProperty> PropertyNamesLongBorrowed<'static, T> {
+    /// Creates a new instance of `PropertyNamesLongBorrowed<T>`.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub fn new() -> Self {
+        Self {
+            map: T::SINGLETON_LONG,
+        }
+    }
+
+    /// Cheaply converts a [`PropertyNamesLongBorrowed<'static>`] into a [`PropertyNamesLong`].
+    ///
+    /// Note: Due to branching and indirection, using [`PropertyNamesLong`] might inhibit some
+    /// compile-time optimizations that are possible with [`PropertyNamesLongBorrowed`].
+    ///
+    /// This is currently not `const` unlike other `static_to_owned()` functions since it needs
+    /// const traits to do that safely
+    pub fn static_to_owned(self) -> PropertyNamesLong<T> {
+        PropertyNamesLong {
+            map: DataPayload::from_static_ref(T::nep_long_identity_static(self.map)),
+        }
+    }
+}
+
+/// A struct capable of looking up a property name from a value
+/// Access its data by calling [`Self::as_borrowed()`] and using the methods on
+/// [`PropertyNamesShortBorrowed`].
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::props::CanonicalCombiningClass;
+/// use icu::properties::PropertyNamesShort;
+///
+/// let names = PropertyNamesShort::<CanonicalCombiningClass>::new();
+/// assert_eq!(names.get(CanonicalCombiningClass::KanaVoicing), Some("KV"));
+/// assert_eq!(names.get(CanonicalCombiningClass::AboveLeft), Some("AL"));
+/// ```
+pub struct PropertyNamesShort<T: NamedEnumeratedProperty> {
+    map: DataPayload<ErasedMarker<T::DataStructShort>>,
+}
+
+impl<T: NamedEnumeratedProperty> core::fmt::Debug for PropertyNamesShort<T> {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        f.debug_struct("PropertyNamesShort")
+            // .field("map", &self.map)
+            .finish()
+    }
+}
+
+/// A borrowed wrapper around property value name-to-enum data, returned by
+/// [`PropertyNamesShort::as_borrowed()`]. More efficient to query.
+#[derive(Debug)]
+pub struct PropertyNamesShortBorrowed<'a, T: NamedEnumeratedProperty> {
+    map: &'a T::DataStructShortBorrowed<'a>,
+}
+
+impl<T: NamedEnumeratedProperty> Clone for PropertyNamesShortBorrowed<'_, T> {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+
+impl<T: NamedEnumeratedProperty> Copy for PropertyNamesShortBorrowed<'_, T> {}
+
+impl<T: NamedEnumeratedProperty> PropertyNamesShort<T> {
+    /// Creates a new instance of `PropertyNamesShortBorrowed<T>`.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    #[allow(clippy::new_ret_no_self)]
+    pub fn new() -> PropertyNamesShortBorrowed<'static, T> {
+        PropertyNamesShortBorrowed::new()
+    }
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new)]
+    pub fn try_new_unstable(
+        provider: &(impl DataProvider<T::DataMarkerShort> + ?Sized),
+    ) -> Result<Self, DataError> {
+        Ok(Self {
+            map: provider.load(Default::default())?.payload.cast(),
+        })
+    }
+
+    /// Construct a borrowed version of this type that can be queried.
+    ///
+    /// This avoids a potential small underlying cost per API call (like `get_static()`) by consolidating it
+    /// up front.
+    #[inline]
+    pub fn as_borrowed(&self) -> PropertyNamesShortBorrowed<'_, T> {
+        PropertyNamesShortBorrowed {
+            map: T::nep_short_identity(self.map.get()),
+        }
+    }
+}
+
+impl<'a, T: NamedEnumeratedProperty> PropertyNamesShortBorrowed<'a, T> {
+    /// Get the property name given a value
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use icu::properties::props::CanonicalCombiningClass;
+    /// use icu::properties::PropertyNamesShort;
+    ///
+    /// let lookup = PropertyNamesShort::<CanonicalCombiningClass>::new();
+    /// assert_eq!(lookup.get(CanonicalCombiningClass::KanaVoicing), Some("KV"));
+    /// assert_eq!(lookup.get(CanonicalCombiningClass::AboveLeft), Some("AL"));
+    /// ```
+    #[inline]
+    pub fn get(self, property: T) -> Option<&'a str> {
+        self.map.get(property.to_u32())
+    }
+}
+
+impl PropertyNamesShortBorrowed<'_, Script> {
+    /// Gets the "name" of a script property as a `icu::locale::subtags::Script`.
+    ///
+    /// This method is available only on `PropertyNamesShortBorrowed<Script>`.
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use icu::locale::subtags::script;
+    /// use icu::properties::props::Script;
+    /// use icu::properties::PropertyNamesShort;
+    ///
+    /// let lookup = PropertyNamesShort::<Script>::new();
+    /// assert_eq!(
+    ///     lookup.get_locale_script(Script::Brahmi),
+    ///     Some(script!("Brah"))
+    /// );
+    /// assert_eq!(
+    ///     lookup.get_locale_script(Script::Hangul),
+    ///     Some(script!("Hang"))
+    /// );
+    /// ```
+    ///
+    /// For the reverse direction, use property parsing as normal:
+    /// ```
+    /// use icu::locale::subtags::script;
+    /// use icu::properties::props::Script;
+    /// use icu::properties::PropertyParser;
+    ///
+    /// let parser = PropertyParser::<Script>::new();
+    /// assert_eq!(
+    ///     parser.get_strict(script!("Brah").as_str()),
+    ///     Some(Script::Brahmi)
+    /// );
+    /// assert_eq!(
+    ///     parser.get_strict(script!("Hang").as_str()),
+    ///     Some(Script::Hangul)
+    /// );
+    /// ```
+    #[inline]
+    pub fn get_locale_script(self, property: Script) -> Option<icu_locale_core::subtags::Script> {
+        let prop = usize::try_from(property.to_u32()).ok()?;
+        self.map.map.get(prop).and_then(|o| o.0)
+    }
+}
+
+#[cfg(feature = "compiled_data")]
+impl<T: NamedEnumeratedProperty> Default for PropertyNamesShortBorrowed<'static, T> {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<T: NamedEnumeratedProperty> PropertyNamesShortBorrowed<'static, T> {
+    /// Creates a new instance of `PropertyNamesShortBorrowed<T>`.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub fn new() -> Self {
+        Self {
+            map: T::SINGLETON_SHORT,
+        }
+    }
+
+    /// Cheaply converts a [`PropertyNamesShortBorrowed<'static>`] into a [`PropertyNamesShort`].
+    ///
+    /// Note: Due to branching and indirection, using [`PropertyNamesShort`] might inhibit some
+    /// compile-time optimizations that are possible with [`PropertyNamesShortBorrowed`].
+    ///
+    /// This is currently not `const` unlike other `static_to_owned()` functions since it needs
+    /// const traits to do that safely
+    pub fn static_to_owned(self) -> PropertyNamesShort<T> {
+        PropertyNamesShort {
+            map: DataPayload::from_static_ref(T::nep_short_identity_static(self.map)),
+        }
+    }
+}
+
+/// A property whose value names can be parsed from strings.
+pub trait ParseableEnumeratedProperty: crate::private::Sealed + TrieValue {
+    #[doc(hidden)]
+    type DataMarker: DataMarker<DataStruct = PropertyValueNameToEnumMap<'static>>;
+    #[doc(hidden)]
+    #[cfg(feature = "compiled_data")]
+    const SINGLETON: &'static PropertyValueNameToEnumMap<'static>;
+}
+
+// Abstract over Linear/Sparse/Script representation
+// This trait is implicitly sealed by not being exported.
+pub trait PropertyEnumToValueNameLookup {
+    fn get(&self, prop: u32) -> Option<&str>;
+}
+
+impl PropertyEnumToValueNameLookup for PropertyEnumToValueNameLinearMap<'_> {
+    fn get(&self, prop: u32) -> Option<&str> {
+        self.map.get(usize::try_from(prop).ok()?)
+    }
+}
+
+impl PropertyEnumToValueNameLookup for PropertyEnumToValueNameSparseMap<'_> {
+    fn get(&self, prop: u32) -> Option<&str> {
+        self.map.get(&u16::try_from(prop).ok()?)
+    }
+}
+
+impl PropertyEnumToValueNameLookup for PropertyScriptToIcuScriptMap<'_> {
+    fn get(&self, prop: u32) -> Option<&str> {
+        self.map
+            .get_ule_ref(usize::try_from(prop).ok()?)
+            .and_then(|no| no.as_ref())
+            .map(|s| s.as_str())
+    }
+}
+
+/// A property whose value names can be represented as strings.
+pub trait NamedEnumeratedProperty: ParseableEnumeratedProperty {
+    #[doc(hidden)]
+    type DataStructLong: 'static
+        + for<'a> Yokeable<'a, Output = Self::DataStructLongBorrowed<'a>>
+        + PropertyEnumToValueNameLookup;
+    #[doc(hidden)]
+    type DataStructShort: 'static
+        + for<'a> Yokeable<'a, Output = Self::DataStructShortBorrowed<'a>>
+        + PropertyEnumToValueNameLookup;
+    #[doc(hidden)]
+    type DataStructLongBorrowed<'a>: PropertyEnumToValueNameLookup;
+    #[doc(hidden)]
+    type DataStructShortBorrowed<'a>: PropertyEnumToValueNameLookup;
+    #[doc(hidden)]
+    type DataMarkerLong: DataMarker<DataStruct = Self::DataStructLong>;
+    #[doc(hidden)]
+    type DataMarkerShort: DataMarker<DataStruct = Self::DataStructShort>;
+    #[doc(hidden)]
+    #[cfg(feature = "compiled_data")]
+    const SINGLETON_LONG: &'static Self::DataStructLongBorrowed<'static>;
+    #[doc(hidden)]
+    #[cfg(feature = "compiled_data")]
+    const SINGLETON_SHORT: &'static Self::DataStructShortBorrowed<'static>;
+
+    // These wouldn't be necessary if Yoke used GATs (#6057)
+    #[doc(hidden)]
+    fn nep_long_identity<'a>(
+        stat: &'a <Self::DataStructLong as Yokeable<'a>>::Output,
+    ) -> &'a Self::DataStructLongBorrowed<'a>;
+    #[doc(hidden)]
+    fn nep_long_identity_static(
+        stat: &'static Self::DataStructLongBorrowed<'static>,
+    ) -> &'static Self::DataStructLong;
+
+    #[doc(hidden)]
+    fn nep_short_identity<'a>(
+        stat: &'a <Self::DataStructShort as Yokeable<'a>>::Output,
+    ) -> &'a Self::DataStructShortBorrowed<'a>;
+    #[doc(hidden)]
+    fn nep_short_identity_static(
+        stat: &'static Self::DataStructShortBorrowed<'static>,
+    ) -> &'static Self::DataStructShort;
+
+    /// Convenience method for `PropertyParser::new().get_loose(s)`
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    #[cfg(feature = "compiled_data")]
+    fn try_from_str(s: &str) -> Option<Self> {
+        PropertyParser::new().get_loose(s)
+    }
+    /// Convenience method for `PropertyNamesLong::new().get(*self).unwrap()`
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    #[cfg(feature = "compiled_data")]
+    fn long_name(&self) -> &'static str {
+        PropertyNamesLong::new().get(*self).unwrap_or("unreachable")
+    }
+    /// Convenience method for `PropertyNamesShort::new().get(*self).unwrap()`
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    #[cfg(feature = "compiled_data")]
+    fn short_name(&self) -> &'static str {
+        PropertyNamesShort::new()
+            .get(*self)
+            .unwrap_or("unreachable")
+    }
+}
+
+macro_rules! impl_value_getter {
+    (
+        impl $ty:ident {
+            $marker_n2e:ident / $singleton_n2e:ident;
+            $(
+                $data_struct_s:ident / $marker_e2sn:ident / $singleton_e2sn:ident;
+                $data_struct_l:ident / $marker_e2ln:ident / $singleton_e2ln:ident;
+            )?
+        }
+    ) => {
+        impl ParseableEnumeratedProperty for $ty {
+            type DataMarker = $marker_n2e;
+            #[cfg(feature = "compiled_data")]
+            const SINGLETON: &'static PropertyValueNameToEnumMap<'static> = crate::provider::Baked::$singleton_n2e;
+        }
+
+        $(
+            impl NamedEnumeratedProperty for $ty {
+                type DataStructLong = $data_struct_l<'static>;
+                type DataStructShort = $data_struct_s<'static>;
+                type DataStructLongBorrowed<'a> = $data_struct_l<'a>;
+                type DataStructShortBorrowed<'a> = $data_struct_s<'a>;
+                type DataMarkerLong = crate::provider::$marker_e2ln;
+                type DataMarkerShort = crate::provider::$marker_e2sn;
+                #[cfg(feature = "compiled_data")]
+                const SINGLETON_LONG: &'static Self::DataStructLong = crate::provider::Baked::$singleton_e2ln;
+                #[cfg(feature = "compiled_data")]
+                const SINGLETON_SHORT: &'static Self::DataStructShort = crate::provider::Baked::$singleton_e2sn;
+                fn nep_long_identity<'a>(yoked: &'a $data_struct_l<'a>) -> &'a Self::DataStructLongBorrowed<'a> {
+                    yoked
+                }
+
+                fn nep_long_identity_static(stat: &'static $data_struct_l<'static>) -> &'static $data_struct_l<'static> {
+                    stat
+                }
+
+
+                fn nep_short_identity<'a>(yoked: &'a $data_struct_s<'a>) -> &'a Self::DataStructShortBorrowed<'a> {
+                    yoked
+                }
+                fn nep_short_identity_static(stat: &'static $data_struct_s<'static>) -> &'static $data_struct_s<'static> {
+                    stat
+                }
+
+            }
+
+
+        )?
+    };
+}
+
+impl_value_getter! {
+    impl BidiClass {
+        PropertyNameParseBidiClassV1 / SINGLETON_PROPERTY_NAME_PARSE_BIDI_CLASS_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortBidiClassV1 / SINGLETON_PROPERTY_NAME_SHORT_BIDI_CLASS_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongBidiClassV1 / SINGLETON_PROPERTY_NAME_LONG_BIDI_CLASS_V1;
+    }
+}
+
+impl_value_getter! {
+    impl GeneralCategory {
+        PropertyNameParseGeneralCategoryV1 / SINGLETON_PROPERTY_NAME_PARSE_GENERAL_CATEGORY_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortGeneralCategoryV1 / SINGLETON_PROPERTY_NAME_SHORT_GENERAL_CATEGORY_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongGeneralCategoryV1 / SINGLETON_PROPERTY_NAME_LONG_GENERAL_CATEGORY_V1;
+    }
+}
+
+impl_value_getter! {
+    impl GeneralCategoryGroup {
+        PropertyNameParseGeneralCategoryMaskV1 / SINGLETON_PROPERTY_NAME_PARSE_GENERAL_CATEGORY_MASK_V1;
+    }
+}
+
+impl_value_getter! {
+    impl Script {
+        PropertyNameParseScriptV1 / SINGLETON_PROPERTY_NAME_PARSE_SCRIPT_V1;
+        PropertyScriptToIcuScriptMap / PropertyNameShortScriptV1 / SINGLETON_PROPERTY_NAME_SHORT_SCRIPT_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongScriptV1 / SINGLETON_PROPERTY_NAME_LONG_SCRIPT_V1;
+    }
+}
+
+impl_value_getter! {
+   impl HangulSyllableType {
+        PropertyNameParseHangulSyllableTypeV1 / SINGLETON_PROPERTY_NAME_PARSE_HANGUL_SYLLABLE_TYPE_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortHangulSyllableTypeV1 / SINGLETON_PROPERTY_NAME_SHORT_HANGUL_SYLLABLE_TYPE_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongHangulSyllableTypeV1 / SINGLETON_PROPERTY_NAME_LONG_HANGUL_SYLLABLE_TYPE_V1;
+    }
+}
+
+impl_value_getter! {
+    impl EastAsianWidth {
+        PropertyNameParseEastAsianWidthV1 / SINGLETON_PROPERTY_NAME_PARSE_EAST_ASIAN_WIDTH_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortEastAsianWidthV1 / SINGLETON_PROPERTY_NAME_SHORT_EAST_ASIAN_WIDTH_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongEastAsianWidthV1 / SINGLETON_PROPERTY_NAME_LONG_EAST_ASIAN_WIDTH_V1;
+    }
+}
+
+impl_value_getter! {
+    impl LineBreak {
+        PropertyNameParseLineBreakV1 / SINGLETON_PROPERTY_NAME_PARSE_LINE_BREAK_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortLineBreakV1 / SINGLETON_PROPERTY_NAME_SHORT_LINE_BREAK_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongLineBreakV1 / SINGLETON_PROPERTY_NAME_LONG_LINE_BREAK_V1;
+    }
+}
+
+impl_value_getter! {
+    impl GraphemeClusterBreak {
+        PropertyNameParseGraphemeClusterBreakV1 / SINGLETON_PROPERTY_NAME_PARSE_GRAPHEME_CLUSTER_BREAK_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortGraphemeClusterBreakV1 / SINGLETON_PROPERTY_NAME_SHORT_GRAPHEME_CLUSTER_BREAK_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongGraphemeClusterBreakV1 / SINGLETON_PROPERTY_NAME_LONG_GRAPHEME_CLUSTER_BREAK_V1;
+    }
+}
+
+impl_value_getter! {
+    impl WordBreak {
+        PropertyNameParseWordBreakV1 / SINGLETON_PROPERTY_NAME_PARSE_WORD_BREAK_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortWordBreakV1 / SINGLETON_PROPERTY_NAME_SHORT_WORD_BREAK_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongWordBreakV1 / SINGLETON_PROPERTY_NAME_LONG_WORD_BREAK_V1;
+    }
+}
+
+impl_value_getter! {
+    impl SentenceBreak {
+        PropertyNameParseSentenceBreakV1 / SINGLETON_PROPERTY_NAME_PARSE_SENTENCE_BREAK_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortSentenceBreakV1 / SINGLETON_PROPERTY_NAME_SHORT_SENTENCE_BREAK_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongSentenceBreakV1 / SINGLETON_PROPERTY_NAME_LONG_SENTENCE_BREAK_V1;
+    }
+}
+
+impl_value_getter! {
+    impl CanonicalCombiningClass {
+        PropertyNameParseCanonicalCombiningClassV1 / SINGLETON_PROPERTY_NAME_PARSE_CANONICAL_COMBINING_CLASS_V1;
+        PropertyEnumToValueNameSparseMap / PropertyNameShortCanonicalCombiningClassV1 / SINGLETON_PROPERTY_NAME_SHORT_CANONICAL_COMBINING_CLASS_V1;
+        PropertyEnumToValueNameSparseMap / PropertyNameLongCanonicalCombiningClassV1 / SINGLETON_PROPERTY_NAME_LONG_CANONICAL_COMBINING_CLASS_V1;
+    }
+}
+
+impl_value_getter! {
+    impl IndicSyllabicCategory {
+        PropertyNameParseIndicSyllabicCategoryV1 / SINGLETON_PROPERTY_NAME_PARSE_INDIC_SYLLABIC_CATEGORY_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortIndicSyllabicCategoryV1 / SINGLETON_PROPERTY_NAME_SHORT_INDIC_SYLLABIC_CATEGORY_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongIndicSyllabicCategoryV1 / SINGLETON_PROPERTY_NAME_LONG_INDIC_SYLLABIC_CATEGORY_V1;
+    }
+}
+
+impl_value_getter! {
+    impl JoiningType {
+        PropertyNameParseJoiningTypeV1 / SINGLETON_PROPERTY_NAME_PARSE_JOINING_TYPE_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortJoiningTypeV1 / SINGLETON_PROPERTY_NAME_SHORT_JOINING_TYPE_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongJoiningTypeV1 / SINGLETON_PROPERTY_NAME_LONG_JOINING_TYPE_V1;
+    }
+}
+
+impl_value_getter! {
+    impl VerticalOrientation {
+        PropertyNameParseVerticalOrientationV1 / SINGLETON_PROPERTY_NAME_PARSE_VERTICAL_ORIENTATION_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameShortVerticalOrientationV1 / SINGLETON_PROPERTY_NAME_SHORT_VERTICAL_ORIENTATION_V1;
+        PropertyEnumToValueNameLinearMap / PropertyNameLongVerticalOrientationV1 / SINGLETON_PROPERTY_NAME_LONG_VERTICAL_ORIENTATION_V1;
+    }
+}
diff --git a/vendor/icu_properties/src/props.rs b/vendor/icu_properties/src/props.rs
new file mode 100644
index 00000000..4bcaa241
--- /dev/null
+++ b/vendor/icu_properties/src/props.rs
@@ -0,0 +1,3277 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module defines all available properties.
+//!
+//! Properties may be empty marker types and implement [`BinaryProperty`], or enumerations[^1]
+//! and implement [`EnumeratedProperty`].
+//!
+//! [`BinaryProperty`]s are queried through a [`CodePointSetData`](crate::CodePointSetData),
+//! while [`EnumeratedProperty`]s are queried through [`CodePointMapData`](crate::CodePointMapData).
+//!
+//! In addition, some [`EnumeratedProperty`]s also implement [`ParseableEnumeratedProperty`] or
+//! [`NamedEnumeratedProperty`]. For these properties, [`PropertyParser`](crate::PropertyParser),
+//! [`PropertyNamesLong`](crate::PropertyNamesLong), and [`PropertyNamesShort`](crate::PropertyNamesShort)
+//! can be constructed.
+//!
+//! [^1]: either Rust `enum`s, or Rust `struct`s with associated constants (open enums)
+
+pub use crate::names::{NamedEnumeratedProperty, ParseableEnumeratedProperty};
+
+pub use crate::bidi::{BidiMirroringGlyph, BidiPairedBracketType};
+
+/// See [`test_enumerated_property_completeness`] for usage.
+/// Example input:
+/// ```ignore
+/// impl EastAsianWidth {
+///     pub const Neutral: EastAsianWidth = EastAsianWidth(0);
+///     pub const Ambiguous: EastAsianWidth = EastAsianWidth(1);
+///     ...
+/// }
+/// ```
+/// Produces `const ALL_VALUES = &[("Neutral", 0u16), ...];` by
+/// explicitly casting first field of the struct to u16.
+macro_rules! create_const_array {
+    (
+        $ ( #[$meta:meta] )*
+        impl $enum_ty:ident {
+            $( $(#[$const_meta:meta])* $v:vis const $i:ident: $t:ty = $e:expr; )*
+        }
+    ) => {
+        $( #[$meta] )*
+        impl $enum_ty {
+            $(
+                $(#[$const_meta])*
+                $v const $i: $t = $e;
+            )*
+
+            /// All possible values of this enum in the Unicode version
+            /// from this ICU4X release.
+            pub const ALL_VALUES: &'static [$enum_ty] = &[
+                $($enum_ty::$i),*
+            ];
+        }
+
+        #[cfg(feature = "datagen")]
+        impl databake::Bake for $enum_ty {
+            fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+                env.insert("icu_properties");
+                match *self {
+                    $(
+                        Self::$i => databake::quote!(icu_properties::props::$enum_ty::$i),
+                    )*
+                    Self(v) => databake::quote!(icu_properties::props::$enum_ty::from_icu4c_value(#v)),
+                }
+            }
+        }
+
+
+        impl From<$enum_ty> for u16  {
+            fn from(other: $enum_ty) -> Self {
+                other.0 as u16
+            }
+        }
+    }
+}
+
+pub use crate::code_point_map::EnumeratedProperty;
+
+macro_rules! make_enumerated_property {
+    (
+        name: $name:literal;
+        short_name: $short_name:literal;
+        ident: $value_ty:path;
+        data_marker: $data_marker:ty;
+        singleton: $singleton:ident;
+        $(ule_ty: $ule_ty:ty;)?
+    ) => {
+        impl crate::private::Sealed for $value_ty {}
+
+        impl EnumeratedProperty for $value_ty {
+            type DataMarker = $data_marker;
+            #[cfg(feature = "compiled_data")]
+            const SINGLETON: &'static crate::provider::PropertyCodePointMap<'static, Self> =
+                crate::provider::Baked::$singleton;
+            const NAME: &'static [u8] = $name.as_bytes();
+            const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
+        }
+
+        $(
+            impl zerovec::ule::AsULE for $value_ty {
+                type ULE = $ule_ty;
+
+                fn to_unaligned(self) -> Self::ULE {
+                    self.0.to_unaligned()
+                }
+                fn from_unaligned(unaligned: Self::ULE) -> Self {
+                    Self(zerovec::ule::AsULE::from_unaligned(unaligned))
+                }
+            }
+        )?
+    };
+}
+
+/// Enumerated property Bidi_Class
+///
+/// These are the categories required by the Unicode Bidirectional Algorithm.
+/// For the property values, see [Bidirectional Class Values](https://unicode.org/reports/tr44/#Bidi_Class_Values).
+/// For more information, see [Unicode Standard Annex #9](https://unicode.org/reports/tr41/tr41-28.html#UAX9).
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::BidiClass, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<BidiClass>::new().get('y'),
+///     BidiClass::LeftToRight
+/// ); // U+0079
+/// assert_eq!(
+///     CodePointMapData::<BidiClass>::new().get('ع'),
+///     BidiClass::ArabicLetter
+/// ); // U+0639
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct BidiClass(pub(crate) u8);
+
+impl BidiClass {
+    /// Returns an ICU4C `UBidiClass` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UBidiClass` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(non_upper_case_globals)]
+impl BidiClass {
+    /// (`L`) any strong left-to-right character
+    pub const LeftToRight: BidiClass = BidiClass(0);
+    /// (`R`) any strong right-to-left (non-Arabic-type) character
+    pub const RightToLeft: BidiClass = BidiClass(1);
+    /// (`EN`) any ASCII digit or Eastern Arabic-Indic digit
+    pub const EuropeanNumber: BidiClass = BidiClass(2);
+    /// (`ES`) plus and minus signs
+    pub const EuropeanSeparator: BidiClass = BidiClass(3);
+    /// (`ET`) a terminator in a numeric format context, includes currency signs
+    pub const EuropeanTerminator: BidiClass = BidiClass(4);
+    /// (`AN`) any Arabic-Indic digit
+    pub const ArabicNumber: BidiClass = BidiClass(5);
+    /// (`CS`) commas, colons, and slashes
+    pub const CommonSeparator: BidiClass = BidiClass(6);
+    /// (`B`) various newline characters
+    pub const ParagraphSeparator: BidiClass = BidiClass(7);
+    /// (`S`) various segment-related control codes
+    pub const SegmentSeparator: BidiClass = BidiClass(8);
+    /// (`WS`) spaces
+    pub const WhiteSpace: BidiClass = BidiClass(9);
+    /// (`ON`) most other symbols and punctuation marks
+    pub const OtherNeutral: BidiClass = BidiClass(10);
+    /// (`LRE`) U+202A: the LR embedding control
+    pub const LeftToRightEmbedding: BidiClass = BidiClass(11);
+    /// (`LRO`) U+202D: the LR override control
+    pub const LeftToRightOverride: BidiClass = BidiClass(12);
+    /// (`AL`) any strong right-to-left (Arabic-type) character
+    pub const ArabicLetter: BidiClass = BidiClass(13);
+    /// (`RLE`) U+202B: the RL embedding control
+    pub const RightToLeftEmbedding: BidiClass = BidiClass(14);
+    /// (`RLO`) U+202E: the RL override control
+    pub const RightToLeftOverride: BidiClass = BidiClass(15);
+    /// (`PDF`) U+202C: terminates an embedding or override control
+    pub const PopDirectionalFormat: BidiClass = BidiClass(16);
+    /// (`NSM`) any nonspacing mark
+    pub const NonspacingMark: BidiClass = BidiClass(17);
+    /// (`BN`) most format characters, control codes, or noncharacters
+    pub const BoundaryNeutral: BidiClass = BidiClass(18);
+    /// (`FSI`) U+2068: the first strong isolate control
+    pub const FirstStrongIsolate: BidiClass = BidiClass(19);
+    /// (`LRI`) U+2066: the LR isolate control
+    pub const LeftToRightIsolate: BidiClass = BidiClass(20);
+    /// (`RLI`) U+2067: the RL isolate control
+    pub const RightToLeftIsolate: BidiClass = BidiClass(21);
+    /// (`PDI`) U+2069: terminates an isolate control
+    pub const PopDirectionalIsolate: BidiClass = BidiClass(22);
+}
+}
+
+make_enumerated_property! {
+    name: "Bidi_Class";
+    short_name: "bc";
+    ident: BidiClass;
+    data_marker: crate::provider::PropertyEnumBidiClassV1;
+    singleton: SINGLETON_PROPERTY_ENUM_BIDI_CLASS_V1;
+    ule_ty: u8;
+}
+
+// This exists to encapsulate GeneralCategoryULE so that it can exist in the provider module rather than props
+pub(crate) mod gc {
+    /// Enumerated property General_Category.
+    ///
+    /// General_Category specifies the most general classification of a code point, usually
+    /// determined based on the primary characteristic of the assigned character. For example, is the
+    /// character a letter, a mark, a number, punctuation, or a symbol, and if so, of what type?
+    ///
+    /// GeneralCategory only supports specific subcategories (eg `UppercaseLetter`).
+    /// It does not support grouped categories (eg `Letter`). For grouped categories, use [`GeneralCategoryGroup`](
+    /// crate::props::GeneralCategoryGroup).
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::{props::GeneralCategory, CodePointMapData};
+    ///
+    /// assert_eq!(
+    ///     CodePointMapData::<GeneralCategory>::new().get('木'),
+    ///     GeneralCategory::OtherLetter
+    /// ); // U+6728
+    /// assert_eq!(
+    ///     CodePointMapData::<GeneralCategory>::new().get('🎃'),
+    ///     GeneralCategory::OtherSymbol
+    /// ); // U+1F383 JACK-O-LANTERN
+    /// ```
+    #[derive(Copy, Clone, PartialEq, Eq, Debug, Ord, PartialOrd, Hash)]
+    #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+    #[cfg_attr(feature = "datagen", derive(databake::Bake))]
+    #[cfg_attr(feature = "datagen", databake(path = icu_properties::props))]
+    #[allow(clippy::exhaustive_enums)] // this type is stable
+    #[zerovec::make_ule(GeneralCategoryULE)]
+    #[repr(u8)]
+    pub enum GeneralCategory {
+        /// (`Cn`) A reserved unassigned code point or a noncharacter
+        Unassigned = 0,
+
+        /// (`Lu`) An uppercase letter
+        UppercaseLetter = 1,
+        /// (`Ll`) A lowercase letter
+        LowercaseLetter = 2,
+        /// (`Lt`) A digraphic letter, with first part uppercase
+        TitlecaseLetter = 3,
+        /// (`Lm`) A modifier letter
+        ModifierLetter = 4,
+        /// (`Lo`) Other letters, including syllables and ideographs
+        OtherLetter = 5,
+
+        /// (`Mn`) A nonspacing combining mark (zero advance width)
+        NonspacingMark = 6,
+        /// (`Mc`) A spacing combining mark (positive advance width)
+        SpacingMark = 8,
+        /// (`Me`) An enclosing combining mark
+        EnclosingMark = 7,
+
+        /// (`Nd`) A decimal digit
+        DecimalNumber = 9,
+        /// (`Nl`) A letterlike numeric character
+        LetterNumber = 10,
+        /// (`No`) A numeric character of other type
+        OtherNumber = 11,
+
+        /// (`Zs`) A space character (of various non-zero widths)
+        SpaceSeparator = 12,
+        /// (`Zl`) U+2028 LINE SEPARATOR only
+        LineSeparator = 13,
+        /// (`Zp`) U+2029 PARAGRAPH SEPARATOR only
+        ParagraphSeparator = 14,
+
+        /// (`Cc`) A C0 or C1 control code
+        Control = 15,
+        /// (`Cf`) A format control character
+        Format = 16,
+        /// (`Co`) A private-use character
+        PrivateUse = 17,
+        /// (`Cs`) A surrogate code point
+        Surrogate = 18,
+
+        /// (`Pd`) A dash or hyphen punctuation mark
+        DashPunctuation = 19,
+        /// (`Ps`) An opening punctuation mark (of a pair)
+        OpenPunctuation = 20,
+        /// (`Pe`) A closing punctuation mark (of a pair)
+        ClosePunctuation = 21,
+        /// (`Pc`) A connecting punctuation mark, like a tie
+        ConnectorPunctuation = 22,
+        /// (`Pi`) An initial quotation mark
+        InitialPunctuation = 28,
+        /// (`Pf`) A final quotation mark
+        FinalPunctuation = 29,
+        /// (`Po`) A punctuation mark of other type
+        OtherPunctuation = 23,
+
+        /// (`Sm`) A symbol of mathematical use
+        MathSymbol = 24,
+        /// (`Sc`) A currency sign
+        CurrencySymbol = 25,
+        /// (`Sk`) A non-letterlike modifier symbol
+        ModifierSymbol = 26,
+        /// (`So`) A symbol of other type
+        OtherSymbol = 27,
+    }
+}
+
+pub use gc::GeneralCategory;
+
+impl GeneralCategory {
+    /// All possible values of this enum
+    pub const ALL_VALUES: &'static [GeneralCategory] = &[
+        GeneralCategory::Unassigned,
+        GeneralCategory::UppercaseLetter,
+        GeneralCategory::LowercaseLetter,
+        GeneralCategory::TitlecaseLetter,
+        GeneralCategory::ModifierLetter,
+        GeneralCategory::OtherLetter,
+        GeneralCategory::NonspacingMark,
+        GeneralCategory::SpacingMark,
+        GeneralCategory::EnclosingMark,
+        GeneralCategory::DecimalNumber,
+        GeneralCategory::LetterNumber,
+        GeneralCategory::OtherNumber,
+        GeneralCategory::SpaceSeparator,
+        GeneralCategory::LineSeparator,
+        GeneralCategory::ParagraphSeparator,
+        GeneralCategory::Control,
+        GeneralCategory::Format,
+        GeneralCategory::PrivateUse,
+        GeneralCategory::Surrogate,
+        GeneralCategory::DashPunctuation,
+        GeneralCategory::OpenPunctuation,
+        GeneralCategory::ClosePunctuation,
+        GeneralCategory::ConnectorPunctuation,
+        GeneralCategory::InitialPunctuation,
+        GeneralCategory::FinalPunctuation,
+        GeneralCategory::OtherPunctuation,
+        GeneralCategory::MathSymbol,
+        GeneralCategory::CurrencySymbol,
+        GeneralCategory::ModifierSymbol,
+        GeneralCategory::OtherSymbol,
+    ];
+}
+
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Hash, Default)]
+/// Error value for `impl TryFrom<u8> for GeneralCategory`.
+#[non_exhaustive]
+pub struct GeneralCategoryOutOfBoundsError;
+
+impl TryFrom<u8> for GeneralCategory {
+    type Error = GeneralCategoryOutOfBoundsError;
+    /// Construct this [`GeneralCategory`] from an integer, returning
+    /// an error if it is out of bounds
+    fn try_from(val: u8) -> Result<Self, GeneralCategoryOutOfBoundsError> {
+        GeneralCategory::new_from_u8(val).ok_or(GeneralCategoryOutOfBoundsError)
+    }
+}
+
+make_enumerated_property! {
+    name: "General_Category";
+    short_name: "gc";
+    ident: GeneralCategory;
+    data_marker: crate::provider::PropertyEnumGeneralCategoryV1;
+    singleton: SINGLETON_PROPERTY_ENUM_GENERAL_CATEGORY_V1;
+}
+
+/// Groupings of multiple General_Category property values.
+///
+/// Instances of `GeneralCategoryGroup` represent the defined multi-category
+/// values that are useful for users in certain contexts, such as regex. In
+/// other words, unlike [`GeneralCategory`], this supports groups of general
+/// categories: for example, `Letter` /// is the union of `UppercaseLetter`,
+/// `LowercaseLetter`, etc.
+///
+/// See <https://www.unicode.org/reports/tr44/> .
+///
+/// The discriminants correspond to the `U_GC_XX_MASK` constants in ICU4C.
+/// Unlike [`GeneralCategory`], this supports groups of general categories: for example, `Letter`
+/// is the union of `UppercaseLetter`, `LowercaseLetter`, etc.
+///
+/// See `UCharCategory` and `U_GET_GC_MASK` in ICU4C.
+#[derive(Copy, Clone, PartialEq, Debug, Eq)]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct GeneralCategoryGroup(pub(crate) u32);
+
+impl crate::private::Sealed for GeneralCategoryGroup {}
+
+use GeneralCategory as GC;
+use GeneralCategoryGroup as GCG;
+
+#[allow(non_upper_case_globals)]
+impl GeneralCategoryGroup {
+    /// (`Lu`) An uppercase letter
+    pub const UppercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::UppercaseLetter as u32));
+    /// (`Ll`) A lowercase letter
+    pub const LowercaseLetter: GeneralCategoryGroup = GCG(1 << (GC::LowercaseLetter as u32));
+    /// (`Lt`) A digraphic letter, with first part uppercase
+    pub const TitlecaseLetter: GeneralCategoryGroup = GCG(1 << (GC::TitlecaseLetter as u32));
+    /// (`Lm`) A modifier letter
+    pub const ModifierLetter: GeneralCategoryGroup = GCG(1 << (GC::ModifierLetter as u32));
+    /// (`Lo`) Other letters, including syllables and ideographs
+    pub const OtherLetter: GeneralCategoryGroup = GCG(1 << (GC::OtherLetter as u32));
+    /// (`LC`) The union of UppercaseLetter, LowercaseLetter, and TitlecaseLetter
+    pub const CasedLetter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
+        | (1 << (GC::LowercaseLetter as u32))
+        | (1 << (GC::TitlecaseLetter as u32)));
+    /// (`L`) The union of all letter categories
+    pub const Letter: GeneralCategoryGroup = GCG((1 << (GC::UppercaseLetter as u32))
+        | (1 << (GC::LowercaseLetter as u32))
+        | (1 << (GC::TitlecaseLetter as u32))
+        | (1 << (GC::ModifierLetter as u32))
+        | (1 << (GC::OtherLetter as u32)));
+
+    /// (`Mn`) A nonspacing combining mark (zero advance width)
+    pub const NonspacingMark: GeneralCategoryGroup = GCG(1 << (GC::NonspacingMark as u32));
+    /// (`Mc`) A spacing combining mark (positive advance width)
+    pub const EnclosingMark: GeneralCategoryGroup = GCG(1 << (GC::EnclosingMark as u32));
+    /// (`Me`) An enclosing combining mark
+    pub const SpacingMark: GeneralCategoryGroup = GCG(1 << (GC::SpacingMark as u32));
+    /// (`M`) The union of all mark categories
+    pub const Mark: GeneralCategoryGroup = GCG((1 << (GC::NonspacingMark as u32))
+        | (1 << (GC::EnclosingMark as u32))
+        | (1 << (GC::SpacingMark as u32)));
+
+    /// (`Nd`) A decimal digit
+    pub const DecimalNumber: GeneralCategoryGroup = GCG(1 << (GC::DecimalNumber as u32));
+    /// (`Nl`) A letterlike numeric character
+    pub const LetterNumber: GeneralCategoryGroup = GCG(1 << (GC::LetterNumber as u32));
+    /// (`No`) A numeric character of other type
+    pub const OtherNumber: GeneralCategoryGroup = GCG(1 << (GC::OtherNumber as u32));
+    /// (`N`) The union of all number categories
+    pub const Number: GeneralCategoryGroup = GCG((1 << (GC::DecimalNumber as u32))
+        | (1 << (GC::LetterNumber as u32))
+        | (1 << (GC::OtherNumber as u32)));
+
+    /// (`Zs`) A space character (of various non-zero widths)
+    pub const SpaceSeparator: GeneralCategoryGroup = GCG(1 << (GC::SpaceSeparator as u32));
+    /// (`Zl`) U+2028 LINE SEPARATOR only
+    pub const LineSeparator: GeneralCategoryGroup = GCG(1 << (GC::LineSeparator as u32));
+    /// (`Zp`) U+2029 PARAGRAPH SEPARATOR only
+    pub const ParagraphSeparator: GeneralCategoryGroup = GCG(1 << (GC::ParagraphSeparator as u32));
+    /// (`Z`) The union of all separator categories
+    pub const Separator: GeneralCategoryGroup = GCG((1 << (GC::SpaceSeparator as u32))
+        | (1 << (GC::LineSeparator as u32))
+        | (1 << (GC::ParagraphSeparator as u32)));
+
+    /// (`Cc`) A C0 or C1 control code
+    pub const Control: GeneralCategoryGroup = GCG(1 << (GC::Control as u32));
+    /// (`Cf`) A format control character
+    pub const Format: GeneralCategoryGroup = GCG(1 << (GC::Format as u32));
+    /// (`Co`) A private-use character
+    pub const PrivateUse: GeneralCategoryGroup = GCG(1 << (GC::PrivateUse as u32));
+    /// (`Cs`) A surrogate code point
+    pub const Surrogate: GeneralCategoryGroup = GCG(1 << (GC::Surrogate as u32));
+    /// (`Cn`) A reserved unassigned code point or a noncharacter
+    pub const Unassigned: GeneralCategoryGroup = GCG(1 << (GC::Unassigned as u32));
+    /// (`C`) The union of all control code, reserved, and unassigned categories
+    pub const Other: GeneralCategoryGroup = GCG((1 << (GC::Control as u32))
+        | (1 << (GC::Format as u32))
+        | (1 << (GC::PrivateUse as u32))
+        | (1 << (GC::Surrogate as u32))
+        | (1 << (GC::Unassigned as u32)));
+
+    /// (`Pd`) A dash or hyphen punctuation mark
+    pub const DashPunctuation: GeneralCategoryGroup = GCG(1 << (GC::DashPunctuation as u32));
+    /// (`Ps`) An opening punctuation mark (of a pair)
+    pub const OpenPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OpenPunctuation as u32));
+    /// (`Pe`) A closing punctuation mark (of a pair)
+    pub const ClosePunctuation: GeneralCategoryGroup = GCG(1 << (GC::ClosePunctuation as u32));
+    /// (`Pc`) A connecting punctuation mark, like a tie
+    pub const ConnectorPunctuation: GeneralCategoryGroup =
+        GCG(1 << (GC::ConnectorPunctuation as u32));
+    /// (`Pi`) An initial quotation mark
+    pub const InitialPunctuation: GeneralCategoryGroup = GCG(1 << (GC::InitialPunctuation as u32));
+    /// (`Pf`) A final quotation mark
+    pub const FinalPunctuation: GeneralCategoryGroup = GCG(1 << (GC::FinalPunctuation as u32));
+    /// (`Po`) A punctuation mark of other type
+    pub const OtherPunctuation: GeneralCategoryGroup = GCG(1 << (GC::OtherPunctuation as u32));
+    /// (`P`) The union of all punctuation categories
+    pub const Punctuation: GeneralCategoryGroup = GCG((1 << (GC::DashPunctuation as u32))
+        | (1 << (GC::OpenPunctuation as u32))
+        | (1 << (GC::ClosePunctuation as u32))
+        | (1 << (GC::ConnectorPunctuation as u32))
+        | (1 << (GC::OtherPunctuation as u32))
+        | (1 << (GC::InitialPunctuation as u32))
+        | (1 << (GC::FinalPunctuation as u32)));
+
+    /// (`Sm`) A symbol of mathematical use
+    pub const MathSymbol: GeneralCategoryGroup = GCG(1 << (GC::MathSymbol as u32));
+    /// (`Sc`) A currency sign
+    pub const CurrencySymbol: GeneralCategoryGroup = GCG(1 << (GC::CurrencySymbol as u32));
+    /// (`Sk`) A non-letterlike modifier symbol
+    pub const ModifierSymbol: GeneralCategoryGroup = GCG(1 << (GC::ModifierSymbol as u32));
+    /// (`So`) A symbol of other type
+    pub const OtherSymbol: GeneralCategoryGroup = GCG(1 << (GC::OtherSymbol as u32));
+    /// (`S`) The union of all symbol categories
+    pub const Symbol: GeneralCategoryGroup = GCG((1 << (GC::MathSymbol as u32))
+        | (1 << (GC::CurrencySymbol as u32))
+        | (1 << (GC::ModifierSymbol as u32))
+        | (1 << (GC::OtherSymbol as u32)));
+
+    const ALL: u32 = (1 << (GC::FinalPunctuation as u32 + 1)) - 1;
+
+    /// Return whether the code point belongs in the provided multi-value category.
+    ///
+    /// ```
+    /// use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
+    /// use icu::properties::CodePointMapData;
+    ///
+    /// let gc = CodePointMapData::<GeneralCategory>::new();
+    ///
+    /// assert_eq!(gc.get('A'), GeneralCategory::UppercaseLetter);
+    /// assert!(GeneralCategoryGroup::CasedLetter.contains(gc.get('A')));
+    ///
+    /// // U+0B1E ORIYA LETTER NYA
+    /// assert_eq!(gc.get('ଞ'), GeneralCategory::OtherLetter);
+    /// assert!(GeneralCategoryGroup::Letter.contains(gc.get('ଞ')));
+    /// assert!(!GeneralCategoryGroup::CasedLetter.contains(gc.get('ଞ')));
+    ///
+    /// // U+0301 COMBINING ACUTE ACCENT
+    /// assert_eq!(gc.get('\u{0301}'), GeneralCategory::NonspacingMark);
+    /// assert!(GeneralCategoryGroup::Mark.contains(gc.get('\u{0301}')));
+    /// assert!(!GeneralCategoryGroup::Letter.contains(gc.get('\u{0301}')));
+    ///
+    /// assert_eq!(gc.get('0'), GeneralCategory::DecimalNumber);
+    /// assert!(GeneralCategoryGroup::Number.contains(gc.get('0')));
+    /// assert!(!GeneralCategoryGroup::Mark.contains(gc.get('0')));
+    ///
+    /// assert_eq!(gc.get('('), GeneralCategory::OpenPunctuation);
+    /// assert!(GeneralCategoryGroup::Punctuation.contains(gc.get('(')));
+    /// assert!(!GeneralCategoryGroup::Number.contains(gc.get('(')));
+    ///
+    /// // U+2713 CHECK MARK
+    /// assert_eq!(gc.get('✓'), GeneralCategory::OtherSymbol);
+    /// assert!(GeneralCategoryGroup::Symbol.contains(gc.get('✓')));
+    /// assert!(!GeneralCategoryGroup::Punctuation.contains(gc.get('✓')));
+    ///
+    /// assert_eq!(gc.get(' '), GeneralCategory::SpaceSeparator);
+    /// assert!(GeneralCategoryGroup::Separator.contains(gc.get(' ')));
+    /// assert!(!GeneralCategoryGroup::Symbol.contains(gc.get(' ')));
+    ///
+    /// // U+E007F CANCEL TAG
+    /// assert_eq!(gc.get('\u{E007F}'), GeneralCategory::Format);
+    /// assert!(GeneralCategoryGroup::Other.contains(gc.get('\u{E007F}')));
+    /// assert!(!GeneralCategoryGroup::Separator.contains(gc.get('\u{E007F}')));
+    /// ```
+    pub const fn contains(self, val: GeneralCategory) -> bool {
+        0 != (1 << (val as u32)) & self.0
+    }
+
+    /// Produce a GeneralCategoryGroup that is the inverse of this one
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
+    ///
+    /// let letter = GeneralCategoryGroup::Letter;
+    /// let not_letter = letter.complement();
+    ///
+    /// assert!(not_letter.contains(GeneralCategory::MathSymbol));
+    /// assert!(!letter.contains(GeneralCategory::MathSymbol));
+    /// assert!(not_letter.contains(GeneralCategory::OtherPunctuation));
+    /// assert!(!letter.contains(GeneralCategory::OtherPunctuation));
+    /// assert!(!not_letter.contains(GeneralCategory::UppercaseLetter));
+    /// assert!(letter.contains(GeneralCategory::UppercaseLetter));
+    /// ```
+    pub const fn complement(self) -> Self {
+        // Mask off things not in Self::ALL to guarantee the mask
+        // values stay in-range
+        GeneralCategoryGroup(!self.0 & Self::ALL)
+    }
+
+    /// Return the group representing all GeneralCategory values
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
+    ///
+    /// let all = GeneralCategoryGroup::all();
+    ///
+    /// assert!(all.contains(GeneralCategory::MathSymbol));
+    /// assert!(all.contains(GeneralCategory::OtherPunctuation));
+    /// assert!(all.contains(GeneralCategory::UppercaseLetter));
+    /// ```
+    pub const fn all() -> Self {
+        Self(Self::ALL)
+    }
+
+    /// Return the empty group
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
+    ///
+    /// let empty = GeneralCategoryGroup::empty();
+    ///
+    /// assert!(!empty.contains(GeneralCategory::MathSymbol));
+    /// assert!(!empty.contains(GeneralCategory::OtherPunctuation));
+    /// assert!(!empty.contains(GeneralCategory::UppercaseLetter));
+    /// ```
+    pub const fn empty() -> Self {
+        Self(0)
+    }
+
+    /// Take the union of two groups
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
+    ///
+    /// let letter = GeneralCategoryGroup::Letter;
+    /// let symbol = GeneralCategoryGroup::Symbol;
+    /// let union = letter.union(symbol);
+    ///
+    /// assert!(union.contains(GeneralCategory::MathSymbol));
+    /// assert!(!union.contains(GeneralCategory::OtherPunctuation));
+    /// assert!(union.contains(GeneralCategory::UppercaseLetter));
+    /// ```
+    pub const fn union(self, other: Self) -> Self {
+        Self(self.0 | other.0)
+    }
+
+    /// Take the intersection of two groups
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use icu::properties::props::{GeneralCategory, GeneralCategoryGroup};
+    ///
+    /// let letter = GeneralCategoryGroup::Letter;
+    /// let lu = GeneralCategoryGroup::UppercaseLetter;
+    /// let intersection = letter.intersection(lu);
+    ///
+    /// assert!(!intersection.contains(GeneralCategory::MathSymbol));
+    /// assert!(!intersection.contains(GeneralCategory::OtherPunctuation));
+    /// assert!(intersection.contains(GeneralCategory::UppercaseLetter));
+    /// assert!(!intersection.contains(GeneralCategory::LowercaseLetter));
+    /// ```
+    pub const fn intersection(self, other: Self) -> Self {
+        Self(self.0 & other.0)
+    }
+}
+
+impl From<GeneralCategory> for GeneralCategoryGroup {
+    fn from(subcategory: GeneralCategory) -> Self {
+        GeneralCategoryGroup(1 << (subcategory as u32))
+    }
+}
+impl From<u32> for GeneralCategoryGroup {
+    fn from(mask: u32) -> Self {
+        // Mask off things not in Self::ALL to guarantee the mask
+        // values stay in-range
+        GeneralCategoryGroup(mask & Self::ALL)
+    }
+}
+impl From<GeneralCategoryGroup> for u32 {
+    fn from(group: GeneralCategoryGroup) -> Self {
+        group.0
+    }
+}
+
+/// Enumerated property Script.
+///
+/// This is used with both the Script and Script_Extensions Unicode properties.
+/// Each character is assigned a single Script, but characters that are used in
+/// a particular subset of scripts will be in more than one Script_Extensions set.
+/// For example, DEVANAGARI DIGIT NINE has Script=Devanagari, but is also in the
+/// Script_Extensions set for Dogra, Kaithi, and Mahajani. If you are trying to
+/// determine whether a code point belongs to a certain script, you should use
+/// [`ScriptWithExtensionsBorrowed::has_script`].
+///
+/// For more information, see UAX #24: <http://www.unicode.org/reports/tr24/>.
+/// See `UScriptCode` in ICU4C.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{CodePointMapData, props::Script};
+///
+/// assert_eq!(CodePointMapData::<Script>::new().get('木'), Script::Han);  // U+6728
+/// assert_eq!(CodePointMapData::<Script>::new().get('🎃'), Script::Common);  // U+1F383 JACK-O-LANTERN
+/// ```
+/// [`ScriptWithExtensionsBorrowed::has_script`]: crate::script::ScriptWithExtensionsBorrowed::has_script
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct Script(pub(crate) u16);
+
+impl Script {
+    /// Returns an ICU4C `UScriptCode` value.
+    pub const fn to_icu4c_value(self) -> u16 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UScriptCode` value.
+    pub const fn from_icu4c_value(value: u16) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+impl Script {
+    pub const Adlam: Script = Script(167);
+    pub const Ahom: Script = Script(161);
+    pub const AnatolianHieroglyphs: Script = Script(156);
+    pub const Arabic: Script = Script(2);
+    pub const Armenian: Script = Script(3);
+    pub const Avestan: Script = Script(117);
+    pub const Balinese: Script = Script(62);
+    pub const Bamum: Script = Script(130);
+    pub const BassaVah: Script = Script(134);
+    pub const Batak: Script = Script(63);
+    pub const Bengali: Script = Script(4);
+    pub const Bhaiksuki: Script = Script(168);
+    pub const Bopomofo: Script = Script(5);
+    pub const Brahmi: Script = Script(65);
+    pub const Braille: Script = Script(46);
+    pub const Buginese: Script = Script(55);
+    pub const Buhid: Script = Script(44);
+    pub const CanadianAboriginal: Script = Script(40);
+    pub const Carian: Script = Script(104);
+    pub const CaucasianAlbanian: Script = Script(159);
+    pub const Chakma: Script = Script(118);
+    pub const Cham: Script = Script(66);
+    pub const Cherokee: Script = Script(6);
+    pub const Chorasmian: Script = Script(189);
+    pub const Common: Script = Script(0);
+    pub const Coptic: Script = Script(7);
+    pub const Cuneiform: Script = Script(101);
+    pub const Cypriot: Script = Script(47);
+    pub const CyproMinoan: Script = Script(193);
+    pub const Cyrillic: Script = Script(8);
+    pub const Deseret: Script = Script(9);
+    pub const Devanagari: Script = Script(10);
+    pub const DivesAkuru: Script = Script(190);
+    pub const Dogra: Script = Script(178);
+    pub const Duployan: Script = Script(135);
+    pub const EgyptianHieroglyphs: Script = Script(71);
+    pub const Elbasan: Script = Script(136);
+    pub const Elymaic: Script = Script(185);
+    pub const Ethiopian: Script = Script(11);
+    pub const Georgian: Script = Script(12);
+    pub const Glagolitic: Script = Script(56);
+    pub const Gothic: Script = Script(13);
+    pub const Grantha: Script = Script(137);
+    pub const Greek: Script = Script(14);
+    pub const Gujarati: Script = Script(15);
+    pub const GunjalaGondi: Script = Script(179);
+    pub const Gurmukhi: Script = Script(16);
+    pub const Han: Script = Script(17);
+    pub const Hangul: Script = Script(18);
+    pub const HanifiRohingya: Script = Script(182);
+    pub const Hanunoo: Script = Script(43);
+    pub const Hatran: Script = Script(162);
+    pub const Hebrew: Script = Script(19);
+    pub const Hiragana: Script = Script(20);
+    pub const ImperialAramaic: Script = Script(116);
+    pub const Inherited: Script = Script(1);
+    pub const InscriptionalPahlavi: Script = Script(122);
+    pub const InscriptionalParthian: Script = Script(125);
+    pub const Javanese: Script = Script(78);
+    pub const Kaithi: Script = Script(120);
+    pub const Kannada: Script = Script(21);
+    pub const Katakana: Script = Script(22);
+    pub const Kawi: Script = Script(198);
+    pub const KayahLi: Script = Script(79);
+    pub const Kharoshthi: Script = Script(57);
+    pub const KhitanSmallScript: Script = Script(191);
+    pub const Khmer: Script = Script(23);
+    pub const Khojki: Script = Script(157);
+    pub const Khudawadi: Script = Script(145);
+    pub const Lao: Script = Script(24);
+    pub const Latin: Script = Script(25);
+    pub const Lepcha: Script = Script(82);
+    pub const Limbu: Script = Script(48);
+    pub const LinearA: Script = Script(83);
+    pub const LinearB: Script = Script(49);
+    pub const Lisu: Script = Script(131);
+    pub const Lycian: Script = Script(107);
+    pub const Lydian: Script = Script(108);
+    pub const Mahajani: Script = Script(160);
+    pub const Makasar: Script = Script(180);
+    pub const Malayalam: Script = Script(26);
+    pub const Mandaic: Script = Script(84);
+    pub const Manichaean: Script = Script(121);
+    pub const Marchen: Script = Script(169);
+    pub const MasaramGondi: Script = Script(175);
+    pub const Medefaidrin: Script = Script(181);
+    pub const MeeteiMayek: Script = Script(115);
+    pub const MendeKikakui: Script = Script(140);
+    pub const MeroiticCursive: Script = Script(141);
+    pub const MeroiticHieroglyphs: Script = Script(86);
+    pub const Miao: Script = Script(92);
+    pub const Modi: Script = Script(163);
+    pub const Mongolian: Script = Script(27);
+    pub const Mro: Script = Script(149);
+    pub const Multani: Script = Script(164);
+    pub const Myanmar: Script = Script(28);
+    pub const Nabataean: Script = Script(143);
+    pub const NagMundari: Script = Script(199);
+    pub const Nandinagari: Script = Script(187);
+    pub const Nastaliq: Script = Script(200);
+    pub const NewTaiLue: Script = Script(59);
+    pub const Newa: Script = Script(170);
+    pub const Nko: Script = Script(87);
+    pub const Nushu: Script = Script(150);
+    pub const NyiakengPuachueHmong: Script = Script(186);
+    pub const Ogham: Script = Script(29);
+    pub const OlChiki: Script = Script(109);
+    pub const OldHungarian: Script = Script(76);
+    pub const OldItalic: Script = Script(30);
+    pub const OldNorthArabian: Script = Script(142);
+    pub const OldPermic: Script = Script(89);
+    pub const OldPersian: Script = Script(61);
+    pub const OldSogdian: Script = Script(184);
+    pub const OldSouthArabian: Script = Script(133);
+    pub const OldTurkic: Script = Script(88);
+    pub const OldUyghur: Script = Script(194);
+    pub const Oriya: Script = Script(31);
+    pub const Osage: Script = Script(171);
+    pub const Osmanya: Script = Script(50);
+    pub const PahawhHmong: Script = Script(75);
+    pub const Palmyrene: Script = Script(144);
+    pub const PauCinHau: Script = Script(165);
+    pub const PhagsPa: Script = Script(90);
+    pub const Phoenician: Script = Script(91);
+    pub const PsalterPahlavi: Script = Script(123);
+    pub const Rejang: Script = Script(110);
+    pub const Runic: Script = Script(32);
+    pub const Samaritan: Script = Script(126);
+    pub const Saurashtra: Script = Script(111);
+    pub const Sharada: Script = Script(151);
+    pub const Shavian: Script = Script(51);
+    pub const Siddham: Script = Script(166);
+    pub const SignWriting: Script = Script(112);
+    pub const Sinhala: Script = Script(33);
+    pub const Sogdian: Script = Script(183);
+    pub const SoraSompeng: Script = Script(152);
+    pub const Soyombo: Script = Script(176);
+    pub const Sundanese: Script = Script(113);
+    pub const SylotiNagri: Script = Script(58);
+    pub const Syriac: Script = Script(34);
+    pub const Tagalog: Script = Script(42);
+    pub const Tagbanwa: Script = Script(45);
+    pub const TaiLe: Script = Script(52);
+    pub const TaiTham: Script = Script(106);
+    pub const TaiViet: Script = Script(127);
+    pub const Takri: Script = Script(153);
+    pub const Tamil: Script = Script(35);
+    pub const Tangsa: Script = Script(195);
+    pub const Tangut: Script = Script(154);
+    pub const Telugu: Script = Script(36);
+    pub const Thaana: Script = Script(37);
+    pub const Thai: Script = Script(38);
+    pub const Tibetan: Script = Script(39);
+    pub const Tifinagh: Script = Script(60);
+    pub const Tirhuta: Script = Script(158);
+    pub const Toto: Script = Script(196);
+    pub const Ugaritic: Script = Script(53);
+    pub const Unknown: Script = Script(103);
+    pub const Vai: Script = Script(99);
+    pub const Vithkuqi: Script = Script(197);
+    pub const Wancho: Script = Script(188);
+    pub const WarangCiti: Script = Script(146);
+    pub const Yezidi: Script = Script(192);
+    pub const Yi: Script = Script(41);
+    pub const ZanabazarSquare: Script = Script(177);
+}
+}
+
+make_enumerated_property! {
+    name: "Script";
+    short_name: "sc";
+    ident: Script;
+    data_marker: crate::provider::PropertyEnumScriptV1;
+    singleton: SINGLETON_PROPERTY_ENUM_SCRIPT_V1;
+    ule_ty: <u16 as zerovec::ule::AsULE>::ULE;
+}
+
+/// Enumerated property Hangul_Syllable_Type
+///
+/// The Unicode standard provides both precomposed Hangul syllables and conjoining Jamo to compose
+/// arbitrary Hangul syllables. This property provides that ontology of Hangul code points.
+///
+/// For more information, see the [Unicode Korean FAQ](https://www.unicode.org/faq/korean.html).
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::HangulSyllableType, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<HangulSyllableType>::new().get('ᄀ'),
+///     HangulSyllableType::LeadingJamo
+/// ); // U+1100
+/// assert_eq!(
+///     CodePointMapData::<HangulSyllableType>::new().get('가'),
+///     HangulSyllableType::LeadingVowelSyllable
+/// ); // U+AC00
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct HangulSyllableType(pub(crate) u8);
+
+impl HangulSyllableType {
+    /// Returns an ICU4C `UHangulSyllableType` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UHangulSyllableType` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(non_upper_case_globals)]
+impl HangulSyllableType {
+    /// (`NA`) not applicable (e.g. not a Hangul code point).
+    pub const NotApplicable: HangulSyllableType = HangulSyllableType(0);
+    /// (`L`) a conjoining leading consonant Jamo.
+    pub const LeadingJamo: HangulSyllableType = HangulSyllableType(1);
+    /// (`V`) a conjoining vowel Jamo.
+    pub const VowelJamo: HangulSyllableType = HangulSyllableType(2);
+    /// (`T`) a conjoining trailing consonant Jamo.
+    pub const TrailingJamo: HangulSyllableType = HangulSyllableType(3);
+    /// (`LV`) a precomposed syllable with a leading consonant and a vowel.
+    pub const LeadingVowelSyllable: HangulSyllableType = HangulSyllableType(4);
+    /// (`LVT`) a precomposed syllable with a leading consonant, a vowel, and a trailing consonant.
+    pub const LeadingVowelTrailingSyllable: HangulSyllableType = HangulSyllableType(5);
+}
+}
+
+make_enumerated_property! {
+    name: "Hangul_Syllable_Type";
+    short_name: "hst";
+    ident: HangulSyllableType;
+    data_marker: crate::provider::PropertyEnumHangulSyllableTypeV1;
+    singleton: SINGLETON_PROPERTY_ENUM_HANGUL_SYLLABLE_TYPE_V1;
+    ule_ty: u8;
+
+}
+
+/// Enumerated property East_Asian_Width.
+///
+/// See "Definition" in UAX #11 for the summary of each property value:
+/// <https://www.unicode.org/reports/tr11/#Definitions>
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::EastAsianWidth, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<EastAsianWidth>::new().get('ｱ'),
+///     EastAsianWidth::Halfwidth
+/// ); // U+FF71: Halfwidth Katakana Letter A
+/// assert_eq!(
+///     CodePointMapData::<EastAsianWidth>::new().get('ア'),
+///     EastAsianWidth::Wide
+/// ); //U+30A2: Katakana Letter A
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct EastAsianWidth(pub(crate) u8);
+
+impl EastAsianWidth {
+    /// Returns an ICU4C `UEastAsianWidth` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UEastAsianWidth` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+impl EastAsianWidth {
+    pub const Neutral: EastAsianWidth = EastAsianWidth(0); //name="N"
+    pub const Ambiguous: EastAsianWidth = EastAsianWidth(1); //name="A"
+    pub const Halfwidth: EastAsianWidth = EastAsianWidth(2); //name="H"
+    pub const Fullwidth: EastAsianWidth = EastAsianWidth(3); //name="F"
+    pub const Narrow: EastAsianWidth = EastAsianWidth(4); //name="Na"
+    pub const Wide: EastAsianWidth = EastAsianWidth(5); //name="W"
+}
+}
+
+make_enumerated_property! {
+    name: "East_Asian_Width";
+    short_name: "ea";
+    ident: EastAsianWidth;
+    data_marker: crate::provider::PropertyEnumEastAsianWidthV1;
+    singleton: SINGLETON_PROPERTY_ENUM_EAST_ASIAN_WIDTH_V1;
+    ule_ty: u8;
+}
+
+/// Enumerated property Line_Break.
+///
+/// See "Line Breaking Properties" in UAX #14 for the summary of each property
+/// value: <https://www.unicode.org/reports/tr14/#Properties>
+///
+/// The numeric value is compatible with `ULineBreak` in ICU4C.
+///
+/// **Note:** Use `icu::segmenter` for an all-in-one break iterator implementation.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::LineBreak, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<LineBreak>::new().get(')'),
+///     LineBreak::CloseParenthesis
+/// ); // U+0029: Right Parenthesis
+/// assert_eq!(
+///     CodePointMapData::<LineBreak>::new().get('ぁ'),
+///     LineBreak::ConditionalJapaneseStarter
+/// ); //U+3041: Hiragana Letter Small A
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct LineBreak(pub(crate) u8);
+
+impl LineBreak {
+    /// Returns an ICU4C `ULineBreak` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `ULineBreak` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+impl LineBreak {
+    pub const Unknown: LineBreak = LineBreak(0); // name="XX"
+    pub const Ambiguous: LineBreak = LineBreak(1); // name="AI"
+    pub const Alphabetic: LineBreak = LineBreak(2); // name="AL"
+    pub const BreakBoth: LineBreak = LineBreak(3); // name="B2"
+    pub const BreakAfter: LineBreak = LineBreak(4); // name="BA"
+    pub const BreakBefore: LineBreak = LineBreak(5); // name="BB"
+    pub const MandatoryBreak: LineBreak = LineBreak(6); // name="BK"
+    pub const ContingentBreak: LineBreak = LineBreak(7); // name="CB"
+    pub const ClosePunctuation: LineBreak = LineBreak(8); // name="CL"
+    pub const CombiningMark: LineBreak = LineBreak(9); // name="CM"
+    pub const CarriageReturn: LineBreak = LineBreak(10); // name="CR"
+    pub const Exclamation: LineBreak = LineBreak(11); // name="EX"
+    pub const Glue: LineBreak = LineBreak(12); // name="GL"
+    pub const Hyphen: LineBreak = LineBreak(13); // name="HY"
+    pub const Ideographic: LineBreak = LineBreak(14); // name="ID"
+    pub const Inseparable: LineBreak = LineBreak(15); // name="IN"
+    pub const InfixNumeric: LineBreak = LineBreak(16); // name="IS"
+    pub const LineFeed: LineBreak = LineBreak(17); // name="LF"
+    pub const Nonstarter: LineBreak = LineBreak(18); // name="NS"
+    pub const Numeric: LineBreak = LineBreak(19); // name="NU"
+    pub const OpenPunctuation: LineBreak = LineBreak(20); // name="OP"
+    pub const PostfixNumeric: LineBreak = LineBreak(21); // name="PO"
+    pub const PrefixNumeric: LineBreak = LineBreak(22); // name="PR"
+    pub const Quotation: LineBreak = LineBreak(23); // name="QU"
+    pub const ComplexContext: LineBreak = LineBreak(24); // name="SA"
+    pub const Surrogate: LineBreak = LineBreak(25); // name="SG"
+    pub const Space: LineBreak = LineBreak(26); // name="SP"
+    pub const BreakSymbols: LineBreak = LineBreak(27); // name="SY"
+    pub const ZWSpace: LineBreak = LineBreak(28); // name="ZW"
+    pub const NextLine: LineBreak = LineBreak(29); // name="NL"
+    pub const WordJoiner: LineBreak = LineBreak(30); // name="WJ"
+    pub const H2: LineBreak = LineBreak(31); // name="H2"
+    pub const H3: LineBreak = LineBreak(32); // name="H3"
+    pub const JL: LineBreak = LineBreak(33); // name="JL"
+    pub const JT: LineBreak = LineBreak(34); // name="JT"
+    pub const JV: LineBreak = LineBreak(35); // name="JV"
+    pub const CloseParenthesis: LineBreak = LineBreak(36); // name="CP"
+    pub const ConditionalJapaneseStarter: LineBreak = LineBreak(37); // name="CJ"
+    pub const HebrewLetter: LineBreak = LineBreak(38); // name="HL"
+    pub const RegionalIndicator: LineBreak = LineBreak(39); // name="RI"
+    pub const EBase: LineBreak = LineBreak(40); // name="EB"
+    pub const EModifier: LineBreak = LineBreak(41); // name="EM"
+    pub const ZWJ: LineBreak = LineBreak(42); // name="ZWJ"
+
+    // Added in ICU 74:
+    pub const Aksara: LineBreak = LineBreak(43); // name="AK"
+    pub const AksaraPrebase: LineBreak = LineBreak(44); // name=AP"
+    pub const AksaraStart: LineBreak = LineBreak(45); // name=AS"
+    pub const ViramaFinal: LineBreak = LineBreak(46); // name=VF"
+    pub const Virama: LineBreak = LineBreak(47); // name=VI"
+}
+}
+
+make_enumerated_property! {
+    name: "Line_Break";
+    short_name: "lb";
+    ident: LineBreak;
+    data_marker: crate::provider::PropertyEnumLineBreakV1;
+    singleton: SINGLETON_PROPERTY_ENUM_LINE_BREAK_V1;
+    ule_ty: u8;
+}
+
+/// Enumerated property Grapheme_Cluster_Break.
+///
+/// See "Default Grapheme Cluster Boundary Specification" in UAX #29 for the
+/// summary of each property value:
+/// <https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table>
+///
+/// **Note:** Use `icu::segmenter` for an all-in-one break iterator implementation.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::GraphemeClusterBreak, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<GraphemeClusterBreak>::new().get('🇦'),
+///     GraphemeClusterBreak::RegionalIndicator
+/// ); // U+1F1E6: Regional Indicator Symbol Letter A
+/// assert_eq!(
+///     CodePointMapData::<GraphemeClusterBreak>::new().get('ำ'),
+///     GraphemeClusterBreak::SpacingMark
+/// ); //U+0E33: Thai Character Sara Am
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // this type is stable
+#[repr(transparent)]
+pub struct GraphemeClusterBreak(pub(crate) u8);
+
+impl GraphemeClusterBreak {
+    /// Returns an ICU4C `UGraphemeClusterBreak` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UGraphemeClusterBreak` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+impl GraphemeClusterBreak {
+    pub const Other: GraphemeClusterBreak = GraphemeClusterBreak(0); // name="XX"
+    pub const Control: GraphemeClusterBreak = GraphemeClusterBreak(1); // name="CN"
+    pub const CR: GraphemeClusterBreak = GraphemeClusterBreak(2); // name="CR"
+    pub const Extend: GraphemeClusterBreak = GraphemeClusterBreak(3); // name="EX"
+    pub const L: GraphemeClusterBreak = GraphemeClusterBreak(4); // name="L"
+    pub const LF: GraphemeClusterBreak = GraphemeClusterBreak(5); // name="LF"
+    pub const LV: GraphemeClusterBreak = GraphemeClusterBreak(6); // name="LV"
+    pub const LVT: GraphemeClusterBreak = GraphemeClusterBreak(7); // name="LVT"
+    pub const T: GraphemeClusterBreak = GraphemeClusterBreak(8); // name="T"
+    pub const V: GraphemeClusterBreak = GraphemeClusterBreak(9); // name="V"
+    pub const SpacingMark: GraphemeClusterBreak = GraphemeClusterBreak(10); // name="SM"
+    pub const Prepend: GraphemeClusterBreak = GraphemeClusterBreak(11); // name="PP"
+    pub const RegionalIndicator: GraphemeClusterBreak = GraphemeClusterBreak(12); // name="RI"
+    /// This value is obsolete and unused.
+    pub const EBase: GraphemeClusterBreak = GraphemeClusterBreak(13); // name="EB"
+    /// This value is obsolete and unused.
+    pub const EBaseGAZ: GraphemeClusterBreak = GraphemeClusterBreak(14); // name="EBG"
+    /// This value is obsolete and unused.
+    pub const EModifier: GraphemeClusterBreak = GraphemeClusterBreak(15); // name="EM"
+    /// This value is obsolete and unused.
+    pub const GlueAfterZwj: GraphemeClusterBreak = GraphemeClusterBreak(16); // name="GAZ"
+    pub const ZWJ: GraphemeClusterBreak = GraphemeClusterBreak(17); // name="ZWJ"
+}
+}
+
+make_enumerated_property! {
+    name: "Grapheme_Cluster_Break";
+    short_name: "GCB";
+    ident: GraphemeClusterBreak;
+    data_marker: crate::provider::PropertyEnumGraphemeClusterBreakV1;
+    singleton: SINGLETON_PROPERTY_ENUM_GRAPHEME_CLUSTER_BREAK_V1;
+    ule_ty: u8;
+}
+
+/// Enumerated property Word_Break.
+///
+/// See "Default Word Boundary Specification" in UAX #29 for the summary of
+/// each property value:
+/// <https://www.unicode.org/reports/tr29/#Default_Word_Boundaries>.
+///
+/// **Note:** Use `icu::segmenter` for an all-in-one break iterator implementation.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::WordBreak, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<WordBreak>::new().get('.'),
+///     WordBreak::MidNumLet
+/// ); // U+002E: Full Stop
+/// assert_eq!(
+///     CodePointMapData::<WordBreak>::new().get('，'),
+///     WordBreak::MidNum
+/// ); // U+FF0C: Fullwidth Comma
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct WordBreak(pub(crate) u8);
+
+impl WordBreak {
+    /// Returns an ICU4C `UWordBreak` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UWordBreak` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+impl WordBreak {
+    pub const Other: WordBreak = WordBreak(0); // name="XX"
+    pub const ALetter: WordBreak = WordBreak(1); // name="LE"
+    pub const Format: WordBreak = WordBreak(2); // name="FO"
+    pub const Katakana: WordBreak = WordBreak(3); // name="KA"
+    pub const MidLetter: WordBreak = WordBreak(4); // name="ML"
+    pub const MidNum: WordBreak = WordBreak(5); // name="MN"
+    pub const Numeric: WordBreak = WordBreak(6); // name="NU"
+    pub const ExtendNumLet: WordBreak = WordBreak(7); // name="EX"
+    pub const CR: WordBreak = WordBreak(8); // name="CR"
+    pub const Extend: WordBreak = WordBreak(9); // name="Extend"
+    pub const LF: WordBreak = WordBreak(10); // name="LF"
+    pub const MidNumLet: WordBreak = WordBreak(11); // name="MB"
+    pub const Newline: WordBreak = WordBreak(12); // name="NL"
+    pub const RegionalIndicator: WordBreak = WordBreak(13); // name="RI"
+    pub const HebrewLetter: WordBreak = WordBreak(14); // name="HL"
+    pub const SingleQuote: WordBreak = WordBreak(15); // name="SQ"
+    pub const DoubleQuote: WordBreak = WordBreak(16); // name=DQ
+    /// This value is obsolete and unused.
+    pub const EBase: WordBreak = WordBreak(17); // name="EB"
+    /// This value is obsolete and unused.
+    pub const EBaseGAZ: WordBreak = WordBreak(18); // name="EBG"
+    /// This value is obsolete and unused.
+    pub const EModifier: WordBreak = WordBreak(19); // name="EM"
+    /// This value is obsolete and unused.
+    pub const GlueAfterZwj: WordBreak = WordBreak(20); // name="GAZ"
+    pub const ZWJ: WordBreak = WordBreak(21); // name="ZWJ"
+    pub const WSegSpace: WordBreak = WordBreak(22); // name="WSegSpace"
+}
+}
+
+make_enumerated_property! {
+    name: "Word_Break";
+    short_name: "WB";
+    ident: WordBreak;
+    data_marker: crate::provider::PropertyEnumWordBreakV1;
+    singleton: SINGLETON_PROPERTY_ENUM_WORD_BREAK_V1;
+    ule_ty: u8;
+}
+
+/// Enumerated property Sentence_Break.
+///
+/// See "Default Sentence Boundary Specification" in UAX #29 for the summary of
+/// each property value:
+/// <https://www.unicode.org/reports/tr29/#Default_Word_Boundaries>.
+///
+/// **Note:** Use `icu::segmenter` for an all-in-one break iterator implementation.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::SentenceBreak, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<SentenceBreak>::new().get('９'),
+///     SentenceBreak::Numeric
+/// ); // U+FF19: Fullwidth Digit Nine
+/// assert_eq!(
+///     CodePointMapData::<SentenceBreak>::new().get(','),
+///     SentenceBreak::SContinue
+/// ); // U+002C: Comma
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct SentenceBreak(pub(crate) u8);
+
+impl SentenceBreak {
+    /// Returns an ICU4C `USentenceBreak` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `USentenceBreak` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+impl SentenceBreak {
+    pub const Other: SentenceBreak = SentenceBreak(0); // name="XX"
+    pub const ATerm: SentenceBreak = SentenceBreak(1); // name="AT"
+    pub const Close: SentenceBreak = SentenceBreak(2); // name="CL"
+    pub const Format: SentenceBreak = SentenceBreak(3); // name="FO"
+    pub const Lower: SentenceBreak = SentenceBreak(4); // name="LO"
+    pub const Numeric: SentenceBreak = SentenceBreak(5); // name="NU"
+    pub const OLetter: SentenceBreak = SentenceBreak(6); // name="LE"
+    pub const Sep: SentenceBreak = SentenceBreak(7); // name="SE"
+    pub const Sp: SentenceBreak = SentenceBreak(8); // name="SP"
+    pub const STerm: SentenceBreak = SentenceBreak(9); // name="ST"
+    pub const Upper: SentenceBreak = SentenceBreak(10); // name="UP"
+    pub const CR: SentenceBreak = SentenceBreak(11); // name="CR"
+    pub const Extend: SentenceBreak = SentenceBreak(12); // name="EX"
+    pub const LF: SentenceBreak = SentenceBreak(13); // name="LF"
+    pub const SContinue: SentenceBreak = SentenceBreak(14); // name="SC"
+}
+}
+
+make_enumerated_property! {
+    name: "Sentence_Break";
+    short_name: "SB";
+    ident: SentenceBreak;
+    data_marker: crate::provider::PropertyEnumSentenceBreakV1;
+    singleton: SINGLETON_PROPERTY_ENUM_SENTENCE_BREAK_V1;
+    ule_ty: u8;
+}
+
+/// Property Canonical_Combining_Class.
+/// See UAX #15:
+/// <https://www.unicode.org/reports/tr15/>.
+///
+/// See `icu::normalizer::properties::CanonicalCombiningClassMap` for the API
+/// to look up the Canonical_Combining_Class property by scalar value.
+///
+/// **Note:** See `icu::normalizer::CanonicalCombiningClassMap` for the preferred API
+/// to look up the Canonical_Combining_Class property by scalar value.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::CanonicalCombiningClass, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<CanonicalCombiningClass>::new().get('a'),
+///     CanonicalCombiningClass::NotReordered
+/// ); // U+0061: LATIN SMALL LETTER A
+/// assert_eq!(
+///     CodePointMapData::<CanonicalCombiningClass>::new().get('\u{0301}'),
+///     CanonicalCombiningClass::Above
+/// ); // U+0301: COMBINING ACUTE ACCENT
+/// ```
+//
+// NOTE: The Pernosco debugger has special knowledge
+// of this struct. Please do not change the bit layout
+// or the crate-module-qualified name of this struct
+// without coordination.
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct CanonicalCombiningClass(pub(crate) u8);
+
+impl CanonicalCombiningClass {
+    /// Returns an ICU4C `UCanonicalCombiningClass` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UCanonicalCombiningClass` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+// These constant names come from PropertyValueAliases.txt
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+impl CanonicalCombiningClass {
+    pub const NotReordered: CanonicalCombiningClass = CanonicalCombiningClass(0); // name="NR"
+    pub const Overlay: CanonicalCombiningClass = CanonicalCombiningClass(1); // name="OV"
+    pub const HanReading: CanonicalCombiningClass = CanonicalCombiningClass(6); // name="HANR"
+    pub const Nukta: CanonicalCombiningClass = CanonicalCombiningClass(7); // name="NK"
+    pub const KanaVoicing: CanonicalCombiningClass = CanonicalCombiningClass(8); // name="KV"
+    pub const Virama: CanonicalCombiningClass = CanonicalCombiningClass(9); // name="VR"
+    pub const CCC10: CanonicalCombiningClass = CanonicalCombiningClass(10); // name="CCC10"
+    pub const CCC11: CanonicalCombiningClass = CanonicalCombiningClass(11); // name="CCC11"
+    pub const CCC12: CanonicalCombiningClass = CanonicalCombiningClass(12); // name="CCC12"
+    pub const CCC13: CanonicalCombiningClass = CanonicalCombiningClass(13); // name="CCC13"
+    pub const CCC14: CanonicalCombiningClass = CanonicalCombiningClass(14); // name="CCC14"
+    pub const CCC15: CanonicalCombiningClass = CanonicalCombiningClass(15); // name="CCC15"
+    pub const CCC16: CanonicalCombiningClass = CanonicalCombiningClass(16); // name="CCC16"
+    pub const CCC17: CanonicalCombiningClass = CanonicalCombiningClass(17); // name="CCC17"
+    pub const CCC18: CanonicalCombiningClass = CanonicalCombiningClass(18); // name="CCC18"
+    pub const CCC19: CanonicalCombiningClass = CanonicalCombiningClass(19); // name="CCC19"
+    pub const CCC20: CanonicalCombiningClass = CanonicalCombiningClass(20); // name="CCC20"
+    pub const CCC21: CanonicalCombiningClass = CanonicalCombiningClass(21); // name="CCC21"
+    pub const CCC22: CanonicalCombiningClass = CanonicalCombiningClass(22); // name="CCC22"
+    pub const CCC23: CanonicalCombiningClass = CanonicalCombiningClass(23); // name="CCC23"
+    pub const CCC24: CanonicalCombiningClass = CanonicalCombiningClass(24); // name="CCC24"
+    pub const CCC25: CanonicalCombiningClass = CanonicalCombiningClass(25); // name="CCC25"
+    pub const CCC26: CanonicalCombiningClass = CanonicalCombiningClass(26); // name="CCC26"
+    pub const CCC27: CanonicalCombiningClass = CanonicalCombiningClass(27); // name="CCC27"
+    pub const CCC28: CanonicalCombiningClass = CanonicalCombiningClass(28); // name="CCC28"
+    pub const CCC29: CanonicalCombiningClass = CanonicalCombiningClass(29); // name="CCC29"
+    pub const CCC30: CanonicalCombiningClass = CanonicalCombiningClass(30); // name="CCC30"
+    pub const CCC31: CanonicalCombiningClass = CanonicalCombiningClass(31); // name="CCC31"
+    pub const CCC32: CanonicalCombiningClass = CanonicalCombiningClass(32); // name="CCC32"
+    pub const CCC33: CanonicalCombiningClass = CanonicalCombiningClass(33); // name="CCC33"
+    pub const CCC34: CanonicalCombiningClass = CanonicalCombiningClass(34); // name="CCC34"
+    pub const CCC35: CanonicalCombiningClass = CanonicalCombiningClass(35); // name="CCC35"
+    pub const CCC36: CanonicalCombiningClass = CanonicalCombiningClass(36); // name="CCC36"
+    pub const CCC84: CanonicalCombiningClass = CanonicalCombiningClass(84); // name="CCC84"
+    pub const CCC91: CanonicalCombiningClass = CanonicalCombiningClass(91); // name="CCC91"
+    pub const CCC103: CanonicalCombiningClass = CanonicalCombiningClass(103); // name="CCC103"
+    pub const CCC107: CanonicalCombiningClass = CanonicalCombiningClass(107); // name="CCC107"
+    pub const CCC118: CanonicalCombiningClass = CanonicalCombiningClass(118); // name="CCC118"
+    pub const CCC122: CanonicalCombiningClass = CanonicalCombiningClass(122); // name="CCC122"
+    pub const CCC129: CanonicalCombiningClass = CanonicalCombiningClass(129); // name="CCC129"
+    pub const CCC130: CanonicalCombiningClass = CanonicalCombiningClass(130); // name="CCC130"
+    pub const CCC132: CanonicalCombiningClass = CanonicalCombiningClass(132); // name="CCC132"
+    pub const CCC133: CanonicalCombiningClass = CanonicalCombiningClass(133); // name="CCC133" // RESERVED
+    pub const AttachedBelowLeft: CanonicalCombiningClass = CanonicalCombiningClass(200); // name="ATBL"
+    pub const AttachedBelow: CanonicalCombiningClass = CanonicalCombiningClass(202); // name="ATB"
+    pub const AttachedAbove: CanonicalCombiningClass = CanonicalCombiningClass(214); // name="ATA"
+    pub const AttachedAboveRight: CanonicalCombiningClass = CanonicalCombiningClass(216); // name="ATAR"
+    pub const BelowLeft: CanonicalCombiningClass = CanonicalCombiningClass(218); // name="BL"
+    pub const Below: CanonicalCombiningClass = CanonicalCombiningClass(220); // name="B"
+    pub const BelowRight: CanonicalCombiningClass = CanonicalCombiningClass(222); // name="BR"
+    pub const Left: CanonicalCombiningClass = CanonicalCombiningClass(224); // name="L"
+    pub const Right: CanonicalCombiningClass = CanonicalCombiningClass(226); // name="R"
+    pub const AboveLeft: CanonicalCombiningClass = CanonicalCombiningClass(228); // name="AL"
+    pub const Above: CanonicalCombiningClass = CanonicalCombiningClass(230); // name="A"
+    pub const AboveRight: CanonicalCombiningClass = CanonicalCombiningClass(232); // name="AR"
+    pub const DoubleBelow: CanonicalCombiningClass = CanonicalCombiningClass(233); // name="DB"
+    pub const DoubleAbove: CanonicalCombiningClass = CanonicalCombiningClass(234); // name="DA"
+    pub const IotaSubscript: CanonicalCombiningClass = CanonicalCombiningClass(240); // name="IS"
+}
+}
+
+make_enumerated_property! {
+    name: "Canonical_Combining_Class";
+    short_name: "ccc";
+    ident: CanonicalCombiningClass;
+    data_marker: crate::provider::PropertyEnumCanonicalCombiningClassV1;
+    singleton: SINGLETON_PROPERTY_ENUM_CANONICAL_COMBINING_CLASS_V1;
+    ule_ty: u8;
+}
+
+/// Property Indic_Conjunct_Break.
+/// See UAX #44:
+/// <https://www.unicode.org/reports/tr44/#Indic_Conjunct_Break>.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::IndicConjunctBreak, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<IndicConjunctBreak>::new().get('a'),
+///     IndicConjunctBreak::None
+/// );
+/// assert_eq!(
+///     CodePointMapData::<IndicConjunctBreak>::new().get('\u{094d}'),
+///     IndicConjunctBreak::Linker
+/// );
+/// assert_eq!(
+///     CodePointMapData::<IndicConjunctBreak>::new().get('\u{0915}'),
+///     IndicConjunctBreak::Consonant
+/// );
+/// assert_eq!(
+///     CodePointMapData::<IndicConjunctBreak>::new().get('\u{0300}'),
+///     IndicConjunctBreak::Extend
+/// );
+/// ```
+#[doc(hidden)] // draft API in ICU4C
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct IndicConjunctBreak(pub(crate) u8);
+
+impl IndicConjunctBreak {
+    /// Returns an ICU4C `UIndicConjunctBreak` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UIndicConjunctBreak` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[doc(hidden)] // draft API in ICU4C
+#[allow(non_upper_case_globals)]
+impl IndicConjunctBreak {
+    pub const None: IndicConjunctBreak = IndicConjunctBreak(0);
+    pub const Consonant: IndicConjunctBreak = IndicConjunctBreak(1);
+    pub const Extend: IndicConjunctBreak = IndicConjunctBreak(2);
+    pub const Linker: IndicConjunctBreak = IndicConjunctBreak(3);
+}
+}
+
+make_enumerated_property! {
+    name: "Indic_Conjunct_Break";
+    short_name: "InCB";
+    ident: IndicConjunctBreak;
+    data_marker: crate::provider::PropertyEnumIndicConjunctBreakV1;
+    singleton: SINGLETON_PROPERTY_ENUM_INDIC_CONJUNCT_BREAK_V1;
+    ule_ty: u8;
+}
+
+/// Property Indic_Syllabic_Category.
+/// See UAX #44:
+/// <https://www.unicode.org/reports/tr44/#Indic_Syllabic_Category>.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::IndicSyllabicCategory, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<IndicSyllabicCategory>::new().get('a'),
+///     IndicSyllabicCategory::Other
+/// );
+/// assert_eq!(
+///     CodePointMapData::<IndicSyllabicCategory>::new().get('\u{0900}'),
+///     IndicSyllabicCategory::Bindu
+/// ); // U+0900: DEVANAGARI SIGN INVERTED CANDRABINDU
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct IndicSyllabicCategory(pub(crate) u8);
+
+impl IndicSyllabicCategory {
+    /// Returns an ICU4C `UIndicSyllabicCategory` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UIndicSyllabicCategory` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+impl IndicSyllabicCategory {
+    pub const Other: IndicSyllabicCategory = IndicSyllabicCategory(0);
+    pub const Avagraha: IndicSyllabicCategory = IndicSyllabicCategory(1);
+    pub const Bindu: IndicSyllabicCategory = IndicSyllabicCategory(2);
+    pub const BrahmiJoiningNumber: IndicSyllabicCategory = IndicSyllabicCategory(3);
+    pub const CantillationMark: IndicSyllabicCategory = IndicSyllabicCategory(4);
+    pub const Consonant: IndicSyllabicCategory = IndicSyllabicCategory(5);
+    pub const ConsonantDead: IndicSyllabicCategory = IndicSyllabicCategory(6);
+    pub const ConsonantFinal: IndicSyllabicCategory = IndicSyllabicCategory(7);
+    pub const ConsonantHeadLetter: IndicSyllabicCategory = IndicSyllabicCategory(8);
+    pub const ConsonantInitialPostfixed: IndicSyllabicCategory = IndicSyllabicCategory(9);
+    pub const ConsonantKiller: IndicSyllabicCategory = IndicSyllabicCategory(10);
+    pub const ConsonantMedial: IndicSyllabicCategory = IndicSyllabicCategory(11);
+    pub const ConsonantPlaceholder: IndicSyllabicCategory = IndicSyllabicCategory(12);
+    pub const ConsonantPrecedingRepha: IndicSyllabicCategory = IndicSyllabicCategory(13);
+    pub const ConsonantPrefixed: IndicSyllabicCategory = IndicSyllabicCategory(14);
+    pub const ConsonantSucceedingRepha: IndicSyllabicCategory = IndicSyllabicCategory(15);
+    pub const ConsonantSubjoined: IndicSyllabicCategory = IndicSyllabicCategory(16);
+    pub const ConsonantWithStacker: IndicSyllabicCategory = IndicSyllabicCategory(17);
+    pub const GeminationMark: IndicSyllabicCategory = IndicSyllabicCategory(18);
+    pub const InvisibleStacker: IndicSyllabicCategory = IndicSyllabicCategory(19);
+    pub const Joiner: IndicSyllabicCategory = IndicSyllabicCategory(20);
+    pub const ModifyingLetter: IndicSyllabicCategory = IndicSyllabicCategory(21);
+    pub const NonJoiner: IndicSyllabicCategory = IndicSyllabicCategory(22);
+    pub const Nukta: IndicSyllabicCategory = IndicSyllabicCategory(23);
+    pub const Number: IndicSyllabicCategory = IndicSyllabicCategory(24);
+    pub const NumberJoiner: IndicSyllabicCategory = IndicSyllabicCategory(25);
+    pub const PureKiller: IndicSyllabicCategory = IndicSyllabicCategory(26);
+    pub const RegisterShifter: IndicSyllabicCategory = IndicSyllabicCategory(27);
+    pub const SyllableModifier: IndicSyllabicCategory = IndicSyllabicCategory(28);
+    pub const ToneLetter: IndicSyllabicCategory = IndicSyllabicCategory(29);
+    pub const ToneMark: IndicSyllabicCategory = IndicSyllabicCategory(30);
+    pub const Virama: IndicSyllabicCategory = IndicSyllabicCategory(31);
+    pub const Visarga: IndicSyllabicCategory = IndicSyllabicCategory(32);
+    pub const Vowel: IndicSyllabicCategory = IndicSyllabicCategory(33);
+    pub const VowelDependent: IndicSyllabicCategory = IndicSyllabicCategory(34);
+    pub const VowelIndependent: IndicSyllabicCategory = IndicSyllabicCategory(35);
+    pub const ReorderingKiller: IndicSyllabicCategory = IndicSyllabicCategory(36);
+}
+}
+
+make_enumerated_property! {
+    name: "Indic_Syllabic_Category";
+    short_name: "InSC";
+    ident: IndicSyllabicCategory;
+    data_marker: crate::provider::PropertyEnumIndicSyllabicCategoryV1;
+    singleton: SINGLETON_PROPERTY_ENUM_INDIC_SYLLABIC_CATEGORY_V1;
+    ule_ty: u8;
+}
+
+/// Enumerated property Joining_Type.
+///
+/// See Section 9.2, Arabic Cursive Joining in The Unicode Standard for the summary of
+/// each property value.
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::JoiningType, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<JoiningType>::new().get('ؠ'),
+///     JoiningType::DualJoining
+/// ); // U+0620: Arabic Letter Kashmiri Yeh
+/// assert_eq!(
+///     CodePointMapData::<JoiningType>::new().get('𐫍'),
+///     JoiningType::LeftJoining
+/// ); // U+10ACD: Manichaean Letter Heth
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct JoiningType(pub(crate) u8);
+
+impl JoiningType {
+    /// Returns an ICU4C `UJoiningType` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UJoiningType` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+impl JoiningType {
+    pub const NonJoining: JoiningType = JoiningType(0); // name="U"
+    pub const JoinCausing: JoiningType = JoiningType(1); // name="C"
+    pub const DualJoining: JoiningType = JoiningType(2); // name="D"
+    pub const LeftJoining: JoiningType = JoiningType(3); // name="L"
+    pub const RightJoining: JoiningType = JoiningType(4); // name="R"
+    pub const Transparent: JoiningType = JoiningType(5); // name="T"
+}
+}
+
+make_enumerated_property! {
+    name: "Joining_Type";
+    short_name: "jt";
+    ident: JoiningType;
+    data_marker: crate::provider::PropertyEnumJoiningTypeV1;
+    singleton: SINGLETON_PROPERTY_ENUM_JOINING_TYPE_V1;
+    ule_ty: u8;
+}
+
+/// Property Vertical_Orientation
+///
+/// See UTR #50:
+/// <https://www.unicode.org/reports/tr50/#vo>
+///
+/// # Example
+///
+/// ```
+/// use icu::properties::{props::VerticalOrientation, CodePointMapData};
+///
+/// assert_eq!(
+///     CodePointMapData::<VerticalOrientation>::new().get('a'),
+///     VerticalOrientation::Rotated
+/// );
+/// assert_eq!(
+///     CodePointMapData::<VerticalOrientation>::new().get('§'),
+///     VerticalOrientation::Upright
+/// );
+/// assert_eq!(
+///     CodePointMapData::<VerticalOrientation>::new().get32(0x2329),
+///     VerticalOrientation::TransformedRotated
+/// );
+/// assert_eq!(
+///     CodePointMapData::<VerticalOrientation>::new().get32(0x3001),
+///     VerticalOrientation::TransformedUpright
+/// );
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[repr(transparent)]
+pub struct VerticalOrientation(pub(crate) u8);
+
+impl VerticalOrientation {
+    /// Returns an ICU4C `UVerticalOrientation` value.
+    pub const fn to_icu4c_value(self) -> u8 {
+        self.0
+    }
+    /// Constructor from an ICU4C `UVerticalOrientation` value.
+    pub const fn from_icu4c_value(value: u8) -> Self {
+        Self(value)
+    }
+}
+
+create_const_array! {
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+impl VerticalOrientation {
+    pub const Rotated: VerticalOrientation = VerticalOrientation(0); // name="R"
+    pub const TransformedRotated: VerticalOrientation = VerticalOrientation(1); // name="Tr"
+    pub const TransformedUpright: VerticalOrientation = VerticalOrientation(2); // name="Tu"
+    pub const Upright: VerticalOrientation = VerticalOrientation(3); // name="U"
+}
+}
+
+make_enumerated_property! {
+    name: "Vertical_Orientation";
+    short_name: "vo";
+    ident: VerticalOrientation;
+    data_marker: crate::provider::PropertyEnumVerticalOrientationV1;
+    singleton: SINGLETON_PROPERTY_ENUM_VERTICAL_ORIENTATION_V1;
+    ule_ty: u8;
+}
+
+pub use crate::code_point_set::BinaryProperty;
+
+macro_rules! make_binary_property {
+    (
+        name: $name:literal;
+        short_name: $short_name:literal;
+        ident: $ident:ident;
+        data_marker: $data_marker:ty;
+        singleton: $singleton:ident;
+            $(#[$doc:meta])+
+    ) => {
+        $(#[$doc])+
+        #[derive(Debug)]
+        #[non_exhaustive]
+        pub struct $ident;
+
+        impl crate::private::Sealed for $ident {}
+
+        impl BinaryProperty for $ident {
+        type DataMarker = $data_marker;
+            #[cfg(feature = "compiled_data")]
+            const SINGLETON: &'static crate::provider::PropertyCodePointSet<'static> =
+                &crate::provider::Baked::$singleton;
+            const NAME: &'static [u8] = $name.as_bytes();
+            const SHORT_NAME: &'static [u8] = $short_name.as_bytes();
+        }
+    };
+}
+
+make_binary_property! {
+    name: "ASCII_Hex_Digit";
+    short_name: "AHex";
+    ident: AsciiHexDigit;
+    data_marker: crate::provider::PropertyBinaryAsciiHexDigitV1;
+    singleton: SINGLETON_PROPERTY_BINARY_ASCII_HEX_DIGIT_V1;
+    /// ASCII characters commonly used for the representation of hexadecimal numbers.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::AsciiHexDigit;
+    ///
+    /// let ascii_hex_digit = CodePointSetData::new::<AsciiHexDigit>();
+    ///
+    /// assert!(ascii_hex_digit.contains('3'));
+    /// assert!(!ascii_hex_digit.contains('੩'));  // U+0A69 GURMUKHI DIGIT THREE
+    /// assert!(ascii_hex_digit.contains('A'));
+    /// assert!(!ascii_hex_digit.contains('Ä'));  // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+    /// ```
+}
+
+make_binary_property! {
+    name: "Alnum";
+    short_name: "Alnum";
+    ident: Alnum;
+    data_marker: crate::provider::PropertyBinaryAlnumV1;
+    singleton: SINGLETON_PROPERTY_BINARY_ALNUM_V1;
+    /// Characters with the `Alphabetic` or `Decimal_Number` property.
+    ///
+    /// This is defined for POSIX compatibility.
+}
+
+make_binary_property! {
+    name: "Alphabetic";
+    short_name: "Alpha";
+    ident: Alphabetic;
+    data_marker: crate::provider::PropertyBinaryAlphabeticV1;
+    singleton: SINGLETON_PROPERTY_BINARY_ALPHABETIC_V1;
+    /// Alphabetic characters.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Alphabetic;
+    ///
+    /// let alphabetic = CodePointSetData::new::<Alphabetic>();
+    ///
+    /// assert!(!alphabetic.contains('3'));
+    /// assert!(!alphabetic.contains('੩'));  // U+0A69 GURMUKHI DIGIT THREE
+    /// assert!(alphabetic.contains('A'));
+    /// assert!(alphabetic.contains('Ä'));  // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Bidi_Control";
+    short_name: "Bidi_C";
+    ident: BidiControl;
+    data_marker: crate::provider::PropertyBinaryBidiControlV1;
+    singleton: SINGLETON_PROPERTY_BINARY_BIDI_CONTROL_V1;
+    /// Format control characters which have specific functions in the Unicode Bidirectional
+    /// Algorithm.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::BidiControl;
+    ///
+    /// let bidi_control = CodePointSetData::new::<BidiControl>();
+    ///
+    /// assert!(bidi_control.contains('\u{200F}'));  // RIGHT-TO-LEFT MARK
+    /// assert!(!bidi_control.contains('ش'));  // U+0634 ARABIC LETTER SHEEN
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Bidi_Mirrored";
+    short_name: "Bidi_M";
+    ident: BidiMirrored;
+    data_marker: crate::provider::PropertyBinaryBidiMirroredV1;
+    singleton: SINGLETON_PROPERTY_BINARY_BIDI_MIRRORED_V1;
+    /// Characters that are mirrored in bidirectional text.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::BidiMirrored;
+    ///
+    /// let bidi_mirrored = CodePointSetData::new::<BidiMirrored>();
+    ///
+    /// assert!(bidi_mirrored.contains('['));
+    /// assert!(bidi_mirrored.contains(']'));
+    /// assert!(bidi_mirrored.contains('∑'));  // U+2211 N-ARY SUMMATION
+    /// assert!(!bidi_mirrored.contains('ཉ'));  // U+0F49 TIBETAN LETTER NYA
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Blank";
+    short_name: "Blank";
+    ident: Blank;
+    data_marker: crate::provider::PropertyBinaryBlankV1;
+    singleton: SINGLETON_PROPERTY_BINARY_BLANK_V1;
+    /// Horizontal whitespace characters
+
+}
+
+make_binary_property! {
+    name: "Cased";
+    short_name: "Cased";
+    ident: Cased;
+    data_marker: crate::provider::PropertyBinaryCasedV1;
+    singleton: SINGLETON_PROPERTY_BINARY_CASED_V1;
+    /// Uppercase, lowercase, and titlecase characters.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Cased;
+    ///
+    /// let cased = CodePointSetData::new::<Cased>();
+    ///
+    /// assert!(cased.contains('Ꙡ'));  // U+A660 CYRILLIC CAPITAL LETTER REVERSED TSE
+    /// assert!(!cased.contains('ދ'));  // U+078B THAANA LETTER DHAALU
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Case_Ignorable";
+    short_name: "CI";
+    ident: CaseIgnorable;
+    data_marker: crate::provider::PropertyBinaryCaseIgnorableV1;
+    singleton: SINGLETON_PROPERTY_BINARY_CASE_IGNORABLE_V1;
+    /// Characters which are ignored for casing purposes.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::CaseIgnorable;
+    ///
+    /// let case_ignorable = CodePointSetData::new::<CaseIgnorable>();
+    ///
+    /// assert!(case_ignorable.contains(':'));
+    /// assert!(!case_ignorable.contains('λ'));  // U+03BB GREEK SMALL LETTER LAMBDA
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Full_Composition_Exclusion";
+    short_name: "Comp_Ex";
+    ident: FullCompositionExclusion;
+    data_marker: crate::provider::PropertyBinaryFullCompositionExclusionV1;
+    singleton: SINGLETON_PROPERTY_BINARY_FULL_COMPOSITION_EXCLUSION_V1;
+    /// Characters that are excluded from composition.
+    ///
+    /// See <https://unicode.org/Public/UNIDATA/CompositionExclusions.txt>
+
+}
+
+make_binary_property! {
+    name: "Changes_When_Casefolded";
+    short_name: "CWCF";
+    ident: ChangesWhenCasefolded;
+    data_marker: crate::provider::PropertyBinaryChangesWhenCasefoldedV1;
+    singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEFOLDED_V1;
+    /// Characters whose normalized forms are not stable under case folding.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::ChangesWhenCasefolded;
+    ///
+    /// let changes_when_casefolded = CodePointSetData::new::<ChangesWhenCasefolded>();
+    ///
+    /// assert!(changes_when_casefolded.contains('ß'));  // U+00DF LATIN SMALL LETTER SHARP S
+    /// assert!(!changes_when_casefolded.contains('ᜉ'));  // U+1709 TAGALOG LETTER PA
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Changes_When_Casemapped";
+    short_name: "CWCM";
+    ident: ChangesWhenCasemapped;
+    data_marker: crate::provider::PropertyBinaryChangesWhenCasemappedV1;
+    singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEMAPPED_V1;
+    /// Characters which may change when they undergo case mapping.
+
+}
+
+make_binary_property! {
+    name: "Changes_When_NFKC_Casefolded";
+    short_name: "CWKCF";
+    ident: ChangesWhenNfkcCasefolded;
+    data_marker: crate::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1;
+    singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_NFKC_CASEFOLDED_V1;
+    /// Characters which are not identical to their `NFKC_Casefold` mapping.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::ChangesWhenNfkcCasefolded;
+    ///
+    /// let changes_when_nfkc_casefolded = CodePointSetData::new::<ChangesWhenNfkcCasefolded>();
+    ///
+    /// assert!(changes_when_nfkc_casefolded.contains('🄵'));  // U+1F135 SQUARED LATIN CAPITAL LETTER F
+    /// assert!(!changes_when_nfkc_casefolded.contains('f'));
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Changes_When_Lowercased";
+    short_name: "CWL";
+    ident: ChangesWhenLowercased;
+    data_marker: crate::provider::PropertyBinaryChangesWhenLowercasedV1;
+    singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_LOWERCASED_V1;
+    /// Characters whose normalized forms are not stable under a `toLowercase` mapping.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::ChangesWhenLowercased;
+    ///
+    /// let changes_when_lowercased = CodePointSetData::new::<ChangesWhenLowercased>();
+    ///
+    /// assert!(changes_when_lowercased.contains('Ⴔ'));  // U+10B4 GEORGIAN CAPITAL LETTER PHAR
+    /// assert!(!changes_when_lowercased.contains('ფ'));  // U+10E4 GEORGIAN LETTER PHAR
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Changes_When_Titlecased";
+    short_name: "CWT";
+    ident: ChangesWhenTitlecased;
+    data_marker: crate::provider::PropertyBinaryChangesWhenTitlecasedV1;
+    singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_TITLECASED_V1;
+    /// Characters whose normalized forms are not stable under a `toTitlecase` mapping.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::ChangesWhenTitlecased;
+    ///
+    /// let changes_when_titlecased = CodePointSetData::new::<ChangesWhenTitlecased>();
+    ///
+    /// assert!(changes_when_titlecased.contains('æ'));  // U+00E6 LATIN SMALL LETTER AE
+    /// assert!(!changes_when_titlecased.contains('Æ'));  // U+00E6 LATIN CAPITAL LETTER AE
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Changes_When_Uppercased";
+    short_name: "CWU";
+    ident: ChangesWhenUppercased;
+    data_marker: crate::provider::PropertyBinaryChangesWhenUppercasedV1;
+    singleton: SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_UPPERCASED_V1;
+    /// Characters whose normalized forms are not stable under a `toUppercase` mapping.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::ChangesWhenUppercased;
+    ///
+    /// let changes_when_uppercased = CodePointSetData::new::<ChangesWhenUppercased>();
+    ///
+    /// assert!(changes_when_uppercased.contains('ւ'));  // U+0582 ARMENIAN SMALL LETTER YIWN
+    /// assert!(!changes_when_uppercased.contains('Ւ'));  // U+0552 ARMENIAN CAPITAL LETTER YIWN
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Dash";
+    short_name: "Dash";
+    ident: Dash;
+    data_marker: crate::provider::PropertyBinaryDashV1;
+    singleton: SINGLETON_PROPERTY_BINARY_DASH_V1;
+    /// Punctuation characters explicitly called out as dashes in the Unicode Standard, plus
+    /// their compatibility equivalents.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Dash;
+    ///
+    /// let dash = CodePointSetData::new::<Dash>();
+    ///
+    /// assert!(dash.contains('⸺'));  // U+2E3A TWO-EM DASH
+    /// assert!(dash.contains('-'));  // U+002D
+    /// assert!(!dash.contains('='));  // U+003D
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Deprecated";
+    short_name: "Dep";
+    ident: Deprecated;
+    data_marker: crate::provider::PropertyBinaryDeprecatedV1;
+    singleton: SINGLETON_PROPERTY_BINARY_DEPRECATED_V1;
+    /// Deprecated characters.
+    ///
+    /// No characters will ever be removed from the standard, but the
+    /// usage of deprecated characters is strongly discouraged.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Deprecated;
+    ///
+    /// let deprecated = CodePointSetData::new::<Deprecated>();
+    ///
+    /// assert!(deprecated.contains('ឣ'));  // U+17A3 KHMER INDEPENDENT VOWEL QAQ
+    /// assert!(!deprecated.contains('A'));
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Default_Ignorable_Code_Point";
+    short_name: "DI";
+    ident: DefaultIgnorableCodePoint;
+    data_marker: crate::provider::PropertyBinaryDefaultIgnorableCodePointV1;
+    singleton: SINGLETON_PROPERTY_BINARY_DEFAULT_IGNORABLE_CODE_POINT_V1;
+    /// For programmatic determination of default ignorable code points.
+    ///
+    /// New characters that
+    /// should be ignored in rendering (unless explicitly supported) will be assigned in these
+    /// ranges, permitting programs to correctly handle the default rendering of such
+    /// characters when not otherwise supported.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::DefaultIgnorableCodePoint;
+    ///
+    /// let default_ignorable_code_point = CodePointSetData::new::<DefaultIgnorableCodePoint>();
+    ///
+    /// assert!(default_ignorable_code_point.contains('\u{180B}'));  // MONGOLIAN FREE VARIATION SELECTOR ONE
+    /// assert!(!default_ignorable_code_point.contains('E'));
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Diacritic";
+    short_name: "Dia";
+    ident: Diacritic;
+    data_marker: crate::provider::PropertyBinaryDiacriticV1;
+    singleton: SINGLETON_PROPERTY_BINARY_DIACRITIC_V1;
+    /// Characters that linguistically modify the meaning of another character to which they apply.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Diacritic;
+    ///
+    /// let diacritic = CodePointSetData::new::<Diacritic>();
+    ///
+    /// assert!(diacritic.contains('\u{05B3}'));  // HEBREW POINT HATAF QAMATS
+    /// assert!(!diacritic.contains('א'));  // U+05D0 HEBREW LETTER ALEF
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Emoji_Modifier_Base";
+    short_name: "EBase";
+    ident: EmojiModifierBase;
+    data_marker: crate::provider::PropertyBinaryEmojiModifierBaseV1;
+    singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_BASE_V1;
+    /// Characters that can serve as a base for emoji modifiers.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::EmojiModifierBase;
+    ///
+    /// let emoji_modifier_base = CodePointSetData::new::<EmojiModifierBase>();
+    ///
+    /// assert!(emoji_modifier_base.contains('✊'));  // U+270A RAISED FIST
+    /// assert!(!emoji_modifier_base.contains('⛰'));  // U+26F0 MOUNTAIN
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Emoji_Component";
+    short_name: "EComp";
+    ident: EmojiComponent;
+    data_marker: crate::provider::PropertyBinaryEmojiComponentV1;
+    singleton: SINGLETON_PROPERTY_BINARY_EMOJI_COMPONENT_V1;
+    /// Characters used in emoji sequences that normally do not appear on emoji keyboards as
+    /// separate choices, such as base characters for emoji keycaps.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::EmojiComponent;
+    ///
+    /// let emoji_component = CodePointSetData::new::<EmojiComponent>();
+    ///
+    /// assert!(emoji_component.contains('🇹'));  // U+1F1F9 REGIONAL INDICATOR SYMBOL LETTER T
+    /// assert!(emoji_component.contains('\u{20E3}'));  // COMBINING ENCLOSING KEYCAP
+    /// assert!(emoji_component.contains('7'));
+    /// assert!(!emoji_component.contains('T'));
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Emoji_Modifier";
+    short_name: "EMod";
+    ident: EmojiModifier;
+    data_marker: crate::provider::PropertyBinaryEmojiModifierV1;
+    singleton: SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_V1;
+    /// Characters that are emoji modifiers.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::EmojiModifier;
+    ///
+    /// let emoji_modifier = CodePointSetData::new::<EmojiModifier>();
+    ///
+    /// assert!(emoji_modifier.contains('\u{1F3FD}'));  // EMOJI MODIFIER FITZPATRICK TYPE-4
+    /// assert!(!emoji_modifier.contains('\u{200C}'));  // ZERO WIDTH NON-JOINER
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Emoji";
+    short_name: "Emoji";
+    ident: Emoji;
+    data_marker: crate::provider::PropertyBinaryEmojiV1;
+    singleton: SINGLETON_PROPERTY_BINARY_EMOJI_V1;
+    /// Characters that are emoji.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Emoji;
+    ///
+    /// let emoji = CodePointSetData::new::<Emoji>();
+    ///
+    /// assert!(emoji.contains('🔥'));  // U+1F525 FIRE
+    /// assert!(!emoji.contains('V'));
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Emoji_Presentation";
+    short_name: "EPres";
+    ident: EmojiPresentation;
+    data_marker: crate::provider::PropertyBinaryEmojiPresentationV1;
+    singleton: SINGLETON_PROPERTY_BINARY_EMOJI_PRESENTATION_V1;
+    /// Characters that have emoji presentation by default.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::EmojiPresentation;
+    ///
+    /// let emoji_presentation = CodePointSetData::new::<EmojiPresentation>();
+    ///
+    /// assert!(emoji_presentation.contains('🦬')); // U+1F9AC BISON
+    /// assert!(!emoji_presentation.contains('♻'));  // U+267B BLACK UNIVERSAL RECYCLING SYMBOL
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Extender";
+    short_name: "Ext";
+    ident: Extender;
+    data_marker: crate::provider::PropertyBinaryExtenderV1;
+    singleton: SINGLETON_PROPERTY_BINARY_EXTENDER_V1;
+    /// Characters whose principal function is to extend the value of a preceding alphabetic
+    /// character or to extend the shape of adjacent characters.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Extender;
+    ///
+    /// let extender = CodePointSetData::new::<Extender>();
+    ///
+    /// assert!(extender.contains('ヾ'));  // U+30FE KATAKANA VOICED ITERATION MARK
+    /// assert!(extender.contains('ー'));  // U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK
+    /// assert!(!extender.contains('・'));  // U+30FB KATAKANA MIDDLE DOT
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Extended_Pictographic";
+    short_name: "ExtPict";
+    ident: ExtendedPictographic;
+    data_marker: crate::provider::PropertyBinaryExtendedPictographicV1;
+    singleton: SINGLETON_PROPERTY_BINARY_EXTENDED_PICTOGRAPHIC_V1;
+    /// Pictographic symbols, as well as reserved ranges in blocks largely associated with
+    /// emoji characters
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::ExtendedPictographic;
+    ///
+    /// let extended_pictographic = CodePointSetData::new::<ExtendedPictographic>();
+    ///
+    /// assert!(extended_pictographic.contains('🥳')); // U+1F973 FACE WITH PARTY HORN AND PARTY HAT
+    /// assert!(!extended_pictographic.contains('🇪'));  // U+1F1EA REGIONAL INDICATOR SYMBOL LETTER E
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Graph";
+    short_name: "Graph";
+    ident: Graph;
+    data_marker: crate::provider::PropertyBinaryGraphV1;
+    singleton: SINGLETON_PROPERTY_BINARY_GRAPH_V1;
+    /// Invisible characters.
+    ///
+    /// This is defined for POSIX compatibility.
+
+}
+
+make_binary_property! {
+    name: "Grapheme_Base";
+    short_name: "Gr_Base";
+    ident: GraphemeBase;
+    data_marker: crate::provider::PropertyBinaryGraphemeBaseV1;
+    singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_BASE_V1;
+    /// Property used together with the definition of Standard Korean Syllable Block to define
+    /// "Grapheme base".
+    ///
+    /// See D58 in Chapter 3, Conformance in the Unicode Standard.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::GraphemeBase;
+    ///
+    /// let grapheme_base = CodePointSetData::new::<GraphemeBase>();
+    ///
+    /// assert!(grapheme_base.contains('ക'));  // U+0D15 MALAYALAM LETTER KA
+    /// assert!(grapheme_base.contains('\u{0D3F}'));  // U+0D3F MALAYALAM VOWEL SIGN I
+    /// assert!(!grapheme_base.contains('\u{0D3E}'));  // U+0D3E MALAYALAM VOWEL SIGN AA
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Grapheme_Extend";
+    short_name: "Gr_Ext";
+    ident: GraphemeExtend;
+    data_marker: crate::provider::PropertyBinaryGraphemeExtendV1;
+    singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_EXTEND_V1;
+    /// Property used to define "Grapheme extender".
+    ///
+    /// See D59 in Chapter 3, Conformance in the
+    /// Unicode Standard.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::GraphemeExtend;
+    ///
+    /// let grapheme_extend = CodePointSetData::new::<GraphemeExtend>();
+    ///
+    /// assert!(!grapheme_extend.contains('ക'));  // U+0D15 MALAYALAM LETTER KA
+    /// assert!(!grapheme_extend.contains('\u{0D3F}'));  // U+0D3F MALAYALAM VOWEL SIGN I
+    /// assert!(grapheme_extend.contains('\u{0D3E}'));  // U+0D3E MALAYALAM VOWEL SIGN AA
+    /// ```
+
+}
+
+make_binary_property! {
+    name: "Grapheme_Link";
+    short_name: "Gr_Link";
+    ident: GraphemeLink;
+    data_marker: crate::provider::PropertyBinaryGraphemeLinkV1;
+    singleton: SINGLETON_PROPERTY_BINARY_GRAPHEME_LINK_V1;
+    /// Deprecated property.
+    ///
+    /// Formerly proposed for programmatic determination of grapheme
+    /// cluster boundaries.
+}
+
+make_binary_property! {
+    name: "Hex_Digit";
+    short_name: "Hex";
+    ident: HexDigit;
+    data_marker: crate::provider::PropertyBinaryHexDigitV1;
+    singleton: SINGLETON_PROPERTY_BINARY_HEX_DIGIT_V1;
+    /// Characters commonly used for the representation of hexadecimal numbers, plus their
+    /// compatibility equivalents.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::HexDigit;
+    ///
+    /// let hex_digit = CodePointSetData::new::<HexDigit>();
+    ///
+    /// assert!(hex_digit.contains('0'));
+    /// assert!(!hex_digit.contains('੩'));  // U+0A69 GURMUKHI DIGIT THREE
+    /// assert!(hex_digit.contains('f'));
+    /// assert!(hex_digit.contains('ｆ'));  // U+FF46 FULLWIDTH LATIN SMALL LETTER F
+    /// assert!(hex_digit.contains('Ｆ'));  // U+FF26 FULLWIDTH LATIN CAPITAL LETTER F
+    /// assert!(!hex_digit.contains('Ä'));  // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+    /// ```
+}
+
+make_binary_property! {
+    name: "Hyphen";
+    short_name: "Hyphen";
+    ident: Hyphen;
+    data_marker: crate::provider::PropertyBinaryHyphenV1;
+    singleton: SINGLETON_PROPERTY_BINARY_HYPHEN_V1;
+    /// Deprecated property.
+    ///
+    /// Dashes which are used to mark connections between pieces of
+    /// words, plus the Katakana middle dot.
+}
+
+make_binary_property! {
+    name: "Id_Continue";
+    short_name: "IDC";
+    ident: IdContinue;
+    data_marker: crate::provider::PropertyBinaryIdContinueV1;
+    singleton: SINGLETON_PROPERTY_BINARY_ID_CONTINUE_V1;
+    /// Characters that can come after the first character in an identifier.
+    ///
+    /// If using NFKC to
+    /// fold differences between characters, use [`XidContinue`] instead.  See
+    /// [`Unicode Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for
+    /// more details.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::IdContinue;
+    ///
+    /// let id_continue = CodePointSetData::new::<IdContinue>();
+    ///
+    /// assert!(id_continue.contains('x'));
+    /// assert!(id_continue.contains('1'));
+    /// assert!(id_continue.contains('_'));
+    /// assert!(id_continue.contains('ߝ'));  // U+07DD NKO LETTER FA
+    /// assert!(!id_continue.contains('ⓧ'));  // U+24E7 CIRCLED LATIN SMALL LETTER X
+    /// assert!(id_continue.contains('\u{FC5E}'));  // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+    /// ```
+}
+
+make_binary_property! {
+    name: "Ideographic";
+    short_name: "Ideo";
+    ident: Ideographic;
+    data_marker: crate::provider::PropertyBinaryIdeographicV1;
+    singleton: SINGLETON_PROPERTY_BINARY_IDEOGRAPHIC_V1;
+    /// Characters considered to be CJKV (Chinese, Japanese, Korean, and Vietnamese)
+    /// ideographs, or related siniform ideographs
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Ideographic;
+    ///
+    /// let ideographic = CodePointSetData::new::<Ideographic>();
+    ///
+    /// assert!(ideographic.contains('川'));  // U+5DDD CJK UNIFIED IDEOGRAPH-5DDD
+    /// assert!(!ideographic.contains('밥'));  // U+BC25 HANGUL SYLLABLE BAB
+    /// ```
+}
+
+make_binary_property! {
+    name: "Id_Start";
+    short_name: "IDS";
+    ident: IdStart;
+    data_marker: crate::provider::PropertyBinaryIdStartV1;
+    singleton: SINGLETON_PROPERTY_BINARY_ID_START_V1;
+    /// Characters that can begin an identifier.
+    ///
+    /// If using NFKC to fold differences between
+    /// characters, use [`XidStart`] instead.  See [`Unicode Standard Annex
+    /// #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more details.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::IdStart;
+    ///
+    /// let id_start = CodePointSetData::new::<IdStart>();
+    ///
+    /// assert!(id_start.contains('x'));
+    /// assert!(!id_start.contains('1'));
+    /// assert!(!id_start.contains('_'));
+    /// assert!(id_start.contains('ߝ'));  // U+07DD NKO LETTER FA
+    /// assert!(!id_start.contains('ⓧ'));  // U+24E7 CIRCLED LATIN SMALL LETTER X
+    /// assert!(id_start.contains('\u{FC5E}'));  // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+    /// ```
+}
+
+make_binary_property! {
+    name: "Ids_Binary_Operator";
+    short_name: "IDSB";
+    ident: IdsBinaryOperator;
+    data_marker: crate::provider::PropertyBinaryIdsBinaryOperatorV1;
+    singleton: SINGLETON_PROPERTY_BINARY_IDS_BINARY_OPERATOR_V1;
+    /// Characters used in Ideographic Description Sequences.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::IdsBinaryOperator;
+    ///
+    /// let ids_binary_operator = CodePointSetData::new::<IdsBinaryOperator>();
+    ///
+    /// assert!(ids_binary_operator.contains('\u{2FF5}'));  // IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
+    /// assert!(!ids_binary_operator.contains('\u{3006}'));  // IDEOGRAPHIC CLOSING MARK
+    /// ```
+}
+
+make_binary_property! {
+    name: "Ids_Trinary_Operator";
+    short_name: "IDST";
+    ident: IdsTrinaryOperator;
+    data_marker: crate::provider::PropertyBinaryIdsTrinaryOperatorV1;
+    singleton: SINGLETON_PROPERTY_BINARY_IDS_TRINARY_OPERATOR_V1;
+    /// Characters used in Ideographic Description Sequences.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::IdsTrinaryOperator;
+    ///
+    /// let ids_trinary_operator = CodePointSetData::new::<IdsTrinaryOperator>();
+    ///
+    /// assert!(ids_trinary_operator.contains('\u{2FF2}'));  // IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
+    /// assert!(ids_trinary_operator.contains('\u{2FF3}'));  // IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
+    /// assert!(!ids_trinary_operator.contains('\u{2FF4}'));
+    /// assert!(!ids_trinary_operator.contains('\u{2FF5}'));  // IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
+    /// assert!(!ids_trinary_operator.contains('\u{3006}'));  // IDEOGRAPHIC CLOSING MARK
+    /// ```
+}
+
+make_binary_property! {
+    name: "Join_Control";
+    short_name: "Join_C";
+    ident: JoinControl;
+    data_marker: crate::provider::PropertyBinaryJoinControlV1;
+    singleton: SINGLETON_PROPERTY_BINARY_JOIN_CONTROL_V1;
+    /// Format control characters which have specific functions for control of cursive joining
+    /// and ligation.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::JoinControl;
+    ///
+    /// let join_control = CodePointSetData::new::<JoinControl>();
+    ///
+    /// assert!(join_control.contains('\u{200C}'));  // ZERO WIDTH NON-JOINER
+    /// assert!(join_control.contains('\u{200D}'));  // ZERO WIDTH JOINER
+    /// assert!(!join_control.contains('\u{200E}'));
+    /// ```
+}
+
+make_binary_property! {
+    name: "Logical_Order_Exception";
+    short_name: "LOE";
+    ident: LogicalOrderException;
+    data_marker: crate::provider::PropertyBinaryLogicalOrderExceptionV1;
+    singleton: SINGLETON_PROPERTY_BINARY_LOGICAL_ORDER_EXCEPTION_V1;
+    /// A small number of spacing vowel letters occurring in certain Southeast Asian scripts such as Thai and Lao.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::LogicalOrderException;
+    ///
+    /// let logical_order_exception = CodePointSetData::new::<LogicalOrderException>();
+    ///
+    /// assert!(logical_order_exception.contains('ແ'));  // U+0EC1 LAO VOWEL SIGN EI
+    /// assert!(!logical_order_exception.contains('ະ'));  // U+0EB0 LAO VOWEL SIGN A
+    /// ```
+}
+
+make_binary_property! {
+    name: "Lowercase";
+    short_name: "Lower";
+    ident: Lowercase;
+    data_marker: crate::provider::PropertyBinaryLowercaseV1;
+    singleton: SINGLETON_PROPERTY_BINARY_LOWERCASE_V1;
+    /// Lowercase characters.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Lowercase;
+    ///
+    /// let lowercase = CodePointSetData::new::<Lowercase>();
+    ///
+    /// assert!(lowercase.contains('a'));
+    /// assert!(!lowercase.contains('A'));
+    /// ```
+}
+
+make_binary_property! {
+    name: "Math";
+    short_name: "Math";
+    ident: Math;
+    data_marker: crate::provider::PropertyBinaryMathV1;
+    singleton: SINGLETON_PROPERTY_BINARY_MATH_V1;
+    /// Characters used in mathematical notation.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Math;
+    ///
+    /// let math = CodePointSetData::new::<Math>();
+    ///
+    /// assert!(math.contains('='));
+    /// assert!(math.contains('+'));
+    /// assert!(!math.contains('-'));
+    /// assert!(math.contains('−'));  // U+2212 MINUS SIGN
+    /// assert!(!math.contains('/'));
+    /// assert!(math.contains('∕'));  // U+2215 DIVISION SLASH
+    /// ```
+}
+
+make_binary_property! {
+    name: "Noncharacter_Code_Point";
+    short_name: "NChar";
+    ident: NoncharacterCodePoint;
+    data_marker: crate::provider::PropertyBinaryNoncharacterCodePointV1;
+    singleton: SINGLETON_PROPERTY_BINARY_NONCHARACTER_CODE_POINT_V1;
+    /// Code points permanently reserved for internal use.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::NoncharacterCodePoint;
+    ///
+    /// let noncharacter_code_point = CodePointSetData::new::<NoncharacterCodePoint>();
+    ///
+    /// assert!(noncharacter_code_point.contains('\u{FDD0}'));
+    /// assert!(noncharacter_code_point.contains('\u{FFFF}'));
+    /// assert!(!noncharacter_code_point.contains('\u{10000}'));
+    /// ```
+}
+
+make_binary_property! {
+    name: "NFC_Inert";
+    short_name: "NFC_Inert";
+    ident: NfcInert;
+    data_marker: crate::provider::PropertyBinaryNfcInertV1;
+    singleton: SINGLETON_PROPERTY_BINARY_NFC_INERT_V1;
+    /// Characters that are inert under NFC, i.e., they do not interact with adjacent characters.
+}
+
+make_binary_property! {
+    name: "NFD_Inert";
+    short_name: "NFD_Inert";
+    ident: NfdInert;
+    data_marker: crate::provider::PropertyBinaryNfdInertV1;
+    singleton: SINGLETON_PROPERTY_BINARY_NFD_INERT_V1;
+    /// Characters that are inert under NFD, i.e., they do not interact with adjacent characters.
+}
+
+make_binary_property! {
+    name: "NFKC_Inert";
+    short_name: "NFKC_Inert";
+    ident: NfkcInert;
+    data_marker: crate::provider::PropertyBinaryNfkcInertV1;
+    singleton: SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1;
+    /// Characters that are inert under NFKC, i.e., they do not interact with adjacent characters.
+}
+
+make_binary_property! {
+    name: "NFKD_Inert";
+    short_name: "NFKD_Inert";
+    ident: NfkdInert;
+    data_marker: crate::provider::PropertyBinaryNfkdInertV1;
+    singleton: SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1;
+    /// Characters that are inert under NFKD, i.e., they do not interact with adjacent characters.
+}
+
+make_binary_property! {
+    name: "Pattern_Syntax";
+    short_name: "Pat_Syn";
+    ident: PatternSyntax;
+    data_marker: crate::provider::PropertyBinaryPatternSyntaxV1;
+    singleton: SINGLETON_PROPERTY_BINARY_PATTERN_SYNTAX_V1;
+    /// Characters used as syntax in patterns (such as regular expressions).
+    ///
+    /// See [`Unicode
+    /// Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more
+    /// details.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::PatternSyntax;
+    ///
+    /// let pattern_syntax = CodePointSetData::new::<PatternSyntax>();
+    ///
+    /// assert!(pattern_syntax.contains('{'));
+    /// assert!(pattern_syntax.contains('⇒'));  // U+21D2 RIGHTWARDS DOUBLE ARROW
+    /// assert!(!pattern_syntax.contains('0'));
+    /// ```
+}
+
+make_binary_property! {
+    name: "Pattern_White_Space";
+    short_name: "Pat_WS";
+    ident: PatternWhiteSpace;
+    data_marker: crate::provider::PropertyBinaryPatternWhiteSpaceV1;
+    singleton: SINGLETON_PROPERTY_BINARY_PATTERN_WHITE_SPACE_V1;
+    /// Characters used as whitespace in patterns (such as regular expressions).
+    ///
+    /// See
+    /// [`Unicode Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for
+    /// more details.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::PatternWhiteSpace;
+    ///
+    /// let pattern_white_space = CodePointSetData::new::<PatternWhiteSpace>();
+    ///
+    /// assert!(pattern_white_space.contains(' '));
+    /// assert!(pattern_white_space.contains('\u{2029}'));  // PARAGRAPH SEPARATOR
+    /// assert!(pattern_white_space.contains('\u{000A}'));  // NEW LINE
+    /// assert!(!pattern_white_space.contains('\u{00A0}'));  // NO-BREAK SPACE
+    /// ```
+}
+
+make_binary_property! {
+    name: "Prepended_Concatenation_Mark";
+    short_name: "PCM";
+    ident: PrependedConcatenationMark;
+    data_marker: crate::provider::PropertyBinaryPrependedConcatenationMarkV1;
+    singleton: SINGLETON_PROPERTY_BINARY_PREPENDED_CONCATENATION_MARK_V1;
+    /// A small class of visible format controls, which precede and then span a sequence of
+    /// other characters, usually digits.
+}
+
+make_binary_property! {
+    name: "Print";
+    short_name: "Print";
+    ident: Print;
+    data_marker: crate::provider::PropertyBinaryPrintV1;
+    singleton: SINGLETON_PROPERTY_BINARY_PRINT_V1;
+    /// Printable characters (visible characters and whitespace).
+    ///
+    /// This is defined for POSIX compatibility.
+}
+
+make_binary_property! {
+    name: "Quotation_Mark";
+    short_name: "QMark";
+    ident: QuotationMark;
+    data_marker: crate::provider::PropertyBinaryQuotationMarkV1;
+    singleton: SINGLETON_PROPERTY_BINARY_QUOTATION_MARK_V1;
+    /// Punctuation characters that function as quotation marks.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::QuotationMark;
+    ///
+    /// let quotation_mark = CodePointSetData::new::<QuotationMark>();
+    ///
+    /// assert!(quotation_mark.contains('\''));
+    /// assert!(quotation_mark.contains('„'));  // U+201E DOUBLE LOW-9 QUOTATION MARK
+    /// assert!(!quotation_mark.contains('<'));
+    /// ```
+}
+
+make_binary_property! {
+    name: "Radical";
+    short_name: "Radical";
+    ident: Radical;
+    data_marker: crate::provider::PropertyBinaryRadicalV1;
+    singleton: SINGLETON_PROPERTY_BINARY_RADICAL_V1;
+    /// Characters used in the definition of Ideographic Description Sequences.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Radical;
+    ///
+    /// let radical = CodePointSetData::new::<Radical>();
+    ///
+    /// assert!(radical.contains('⺆'));  // U+2E86 CJK RADICAL BOX
+    /// assert!(!radical.contains('丹'));  // U+F95E CJK COMPATIBILITY IDEOGRAPH-F95E
+    /// ```
+}
+
+make_binary_property! {
+    name: "Regional_Indicator";
+    short_name: "RI";
+    ident: RegionalIndicator;
+    data_marker: crate::provider::PropertyBinaryRegionalIndicatorV1;
+    singleton: SINGLETON_PROPERTY_BINARY_REGIONAL_INDICATOR_V1;
+    /// Regional indicator characters, `U+1F1E6..U+1F1FF`.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::RegionalIndicator;
+    ///
+    /// let regional_indicator = CodePointSetData::new::<RegionalIndicator>();
+    ///
+    /// assert!(regional_indicator.contains('🇹'));  // U+1F1F9 REGIONAL INDICATOR SYMBOL LETTER T
+    /// assert!(!regional_indicator.contains('Ⓣ'));  // U+24C9 CIRCLED LATIN CAPITAL LETTER T
+    /// assert!(!regional_indicator.contains('T'));
+    /// ```
+}
+
+make_binary_property! {
+    name: "Soft_Dotted";
+    short_name: "SD";
+    ident: SoftDotted;
+    data_marker: crate::provider::PropertyBinarySoftDottedV1;
+    singleton: SINGLETON_PROPERTY_BINARY_SOFT_DOTTED_V1;
+    /// Characters with a "soft dot", like i or j.
+    ///
+    /// An accent placed on these characters causes
+    /// the dot to disappear.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::SoftDotted;
+    ///
+    /// let soft_dotted = CodePointSetData::new::<SoftDotted>();
+    ///
+    /// assert!(soft_dotted.contains('і'));  //U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+    /// assert!(!soft_dotted.contains('ı'));  // U+0131 LATIN SMALL LETTER DOTLESS I
+    /// ```
+}
+
+make_binary_property! {
+    name: "Segment_Starter";
+    short_name: "Segment_Starter";
+    ident: SegmentStarter;
+    data_marker: crate::provider::PropertyBinarySegmentStarterV1;
+    singleton: SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1;
+    /// Characters that are starters in terms of Unicode normalization and combining character
+    /// sequences.
+}
+
+make_binary_property! {
+    name: "Case_Sensitive";
+    short_name: "Case_Sensitive";
+    ident: CaseSensitive;
+    data_marker: crate::provider::PropertyBinaryCaseSensitiveV1;
+    singleton: SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1;
+    /// Characters that are either the source of a case mapping or in the target of a case
+    /// mapping.
+}
+
+make_binary_property! {
+    name: "Sentence_Terminal";
+    short_name: "STerm";
+    ident: SentenceTerminal;
+    data_marker: crate::provider::PropertyBinarySentenceTerminalV1;
+    singleton: SINGLETON_PROPERTY_BINARY_SENTENCE_TERMINAL_V1;
+    /// Punctuation characters that generally mark the end of sentences.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::SentenceTerminal;
+    ///
+    /// let sentence_terminal = CodePointSetData::new::<SentenceTerminal>();
+    ///
+    /// assert!(sentence_terminal.contains('.'));
+    /// assert!(sentence_terminal.contains('?'));
+    /// assert!(sentence_terminal.contains('᪨'));  // U+1AA8 TAI THAM SIGN KAAN
+    /// assert!(!sentence_terminal.contains(','));
+    /// assert!(!sentence_terminal.contains('¿'));  // U+00BF INVERTED QUESTION MARK
+    /// ```
+}
+
+make_binary_property! {
+    name: "Terminal_Punctuation";
+    short_name: "Term";
+    ident: TerminalPunctuation;
+    data_marker: crate::provider::PropertyBinaryTerminalPunctuationV1;
+    singleton: SINGLETON_PROPERTY_BINARY_TERMINAL_PUNCTUATION_V1;
+    /// Punctuation characters that generally mark the end of textual units.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::TerminalPunctuation;
+    ///
+    /// let terminal_punctuation = CodePointSetData::new::<TerminalPunctuation>();
+    ///
+    /// assert!(terminal_punctuation.contains('.'));
+    /// assert!(terminal_punctuation.contains('?'));
+    /// assert!(terminal_punctuation.contains('᪨'));  // U+1AA8 TAI THAM SIGN KAAN
+    /// assert!(terminal_punctuation.contains(','));
+    /// assert!(!terminal_punctuation.contains('¿'));  // U+00BF INVERTED QUESTION MARK
+    /// ```
+}
+
+make_binary_property! {
+    name: "Unified_Ideograph";
+    short_name: "UIdeo";
+    ident: UnifiedIdeograph;
+    data_marker: crate::provider::PropertyBinaryUnifiedIdeographV1;
+    singleton: SINGLETON_PROPERTY_BINARY_UNIFIED_IDEOGRAPH_V1;
+    /// A property which specifies the exact set of Unified CJK Ideographs in the standard.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::UnifiedIdeograph;
+    ///
+    /// let unified_ideograph = CodePointSetData::new::<UnifiedIdeograph>();
+    ///
+    /// assert!(unified_ideograph.contains('川'));  // U+5DDD CJK UNIFIED IDEOGRAPH-5DDD
+    /// assert!(unified_ideograph.contains('木'));  // U+6728 CJK UNIFIED IDEOGRAPH-6728
+    /// assert!(!unified_ideograph.contains('𛅸'));  // U+1B178 NUSHU CHARACTER-1B178
+    /// ```
+}
+
+make_binary_property! {
+    name: "Uppercase";
+    short_name: "Upper";
+    ident: Uppercase;
+    data_marker: crate::provider::PropertyBinaryUppercaseV1;
+    singleton: SINGLETON_PROPERTY_BINARY_UPPERCASE_V1;
+    /// Uppercase characters.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::Uppercase;
+    ///
+    /// let uppercase = CodePointSetData::new::<Uppercase>();
+    ///
+    /// assert!(uppercase.contains('U'));
+    /// assert!(!uppercase.contains('u'));
+    /// ```
+}
+
+make_binary_property! {
+    name: "Variation_Selector";
+    short_name: "VS";
+    ident: VariationSelector;
+    data_marker: crate::provider::PropertyBinaryVariationSelectorV1;
+    singleton: SINGLETON_PROPERTY_BINARY_VARIATION_SELECTOR_V1;
+    /// Characters that are Variation Selectors.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::VariationSelector;
+    ///
+    /// let variation_selector = CodePointSetData::new::<VariationSelector>();
+    ///
+    /// assert!(variation_selector.contains('\u{180D}'));  // MONGOLIAN FREE VARIATION SELECTOR THREE
+    /// assert!(!variation_selector.contains('\u{303E}'));  // IDEOGRAPHIC VARIATION INDICATOR
+    /// assert!(variation_selector.contains('\u{FE0F}'));  // VARIATION SELECTOR-16
+    /// assert!(!variation_selector.contains('\u{FE10}'));  // PRESENTATION FORM FOR VERTICAL COMMA
+    /// assert!(variation_selector.contains('\u{E01EF}'));  // VARIATION SELECTOR-256
+    /// ```
+}
+
+make_binary_property! {
+    name: "White_Space";
+    short_name: "space";
+    ident: WhiteSpace;
+    data_marker: crate::provider::PropertyBinaryWhiteSpaceV1;
+    singleton: SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1;
+    /// Spaces, separator characters and other control characters which should be treated by
+    /// programming languages as "white space" for the purpose of parsing elements.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::WhiteSpace;
+    ///
+    /// let white_space = CodePointSetData::new::<WhiteSpace>();
+    ///
+    /// assert!(white_space.contains(' '));
+    /// assert!(white_space.contains('\u{000A}'));  // NEW LINE
+    /// assert!(white_space.contains('\u{00A0}'));  // NO-BREAK SPACE
+    /// assert!(!white_space.contains('\u{200B}'));  // ZERO WIDTH SPACE
+    /// ```
+}
+
+make_binary_property! {
+    name: "Xdigit";
+    short_name: "Xdigit";
+    ident: Xdigit;
+    data_marker: crate::provider::PropertyBinaryXdigitV1;
+    singleton: SINGLETON_PROPERTY_BINARY_XDIGIT_V1;
+    /// Hexadecimal digits
+    ///
+    /// This is defined for POSIX compatibility.
+}
+
+make_binary_property! {
+    name: "XID_Continue";
+    short_name: "XIDC";
+    ident: XidContinue;
+    data_marker: crate::provider::PropertyBinaryXidContinueV1;
+    singleton: SINGLETON_PROPERTY_BINARY_XID_CONTINUE_V1;
+    /// Characters that can come after the first character in an identifier.
+    ///
+    /// See [`Unicode Standard Annex
+    /// #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more details.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::XidContinue;
+    ///
+    /// let xid_continue = CodePointSetData::new::<XidContinue>();
+    ///
+    /// assert!(xid_continue.contains('x'));
+    /// assert!(xid_continue.contains('1'));
+    /// assert!(xid_continue.contains('_'));
+    /// assert!(xid_continue.contains('ߝ'));  // U+07DD NKO LETTER FA
+    /// assert!(!xid_continue.contains('ⓧ'));  // U+24E7 CIRCLED LATIN SMALL LETTER X
+    /// assert!(!xid_continue.contains('\u{FC5E}'));  // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+    /// ```
+}
+
+make_binary_property! {
+    name: "XID_Start";
+    short_name: "XIDS";
+    ident: XidStart;
+    data_marker: crate::provider::PropertyBinaryXidStartV1;
+    singleton: SINGLETON_PROPERTY_BINARY_XID_START_V1;
+    /// Characters that can begin an identifier.
+    ///
+    /// See [`Unicode
+    /// Standard Annex #31`](https://www.unicode.org/reports/tr31/tr31-35.html) for more
+    /// details.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    /// use icu::properties::props::XidStart;
+    ///
+    /// let xid_start = CodePointSetData::new::<XidStart>();
+    ///
+    /// assert!(xid_start.contains('x'));
+    /// assert!(!xid_start.contains('1'));
+    /// assert!(!xid_start.contains('_'));
+    /// assert!(xid_start.contains('ߝ'));  // U+07DD NKO LETTER FA
+    /// assert!(!xid_start.contains('ⓧ'));  // U+24E7 CIRCLED LATIN SMALL LETTER X
+    /// assert!(!xid_start.contains('\u{FC5E}'));  // ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+    /// ```
+}
+
+pub use crate::emoji::EmojiSet;
+
+macro_rules! make_emoji_set {
+    (
+        ident: $ident:ident;
+        data_marker: $data_marker:ty;
+        singleton: $singleton:ident;
+        $(#[$doc:meta])+
+    ) => {
+        $(#[$doc])+
+        #[derive(Debug)]
+        #[non_exhaustive]
+        pub struct $ident;
+
+        impl crate::private::Sealed for $ident {}
+
+        impl EmojiSet for $ident {
+            type DataMarker = $data_marker;
+            #[cfg(feature = "compiled_data")]
+            const SINGLETON: &'static crate::provider::PropertyUnicodeSet<'static> =
+                &crate::provider::Baked::$singleton;
+        }
+    }
+}
+
+make_emoji_set! {
+    ident: BasicEmoji;
+    data_marker: crate::provider::PropertyBinaryBasicEmojiV1;
+    singleton: SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1;
+    /// Characters and character sequences intended for general-purpose, independent, direct input.
+    ///
+    /// See [`Unicode Technical Standard #51`](https://unicode.org/reports/tr51/) for more
+    /// details.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::EmojiSetData;
+    /// use icu::properties::props::BasicEmoji;
+    ///
+    /// let basic_emoji = EmojiSetData::new::<BasicEmoji>();
+    ///
+    /// assert!(!basic_emoji.contains('\u{0020}'));
+    /// assert!(!basic_emoji.contains('\n'));
+    /// assert!(basic_emoji.contains('🦃')); // U+1F983 TURKEY
+    /// assert!(basic_emoji.contains_str("\u{1F983}"));
+    /// assert!(basic_emoji.contains_str("\u{1F6E4}\u{FE0F}")); // railway track
+    /// assert!(!basic_emoji.contains_str("\u{0033}\u{FE0F}\u{20E3}"));  // Emoji_Keycap_Sequence, keycap 3
+    /// ```
+}
+
+#[cfg(test)]
+mod test_enumerated_property_completeness {
+    use super::*;
+    use std::collections::BTreeMap;
+
+    fn check_enum<'a, T: NamedEnumeratedProperty>(
+        lookup: &crate::provider::names::PropertyValueNameToEnumMap<'static>,
+        consts: impl IntoIterator<Item = &'a T>,
+    ) where
+        u16: From<T>,
+    {
+        let mut data: BTreeMap<_, _> = lookup
+            .map
+            .iter()
+            .map(|(name, value)| (value, (name, "Data")))
+            .collect();
+
+        let names = crate::PropertyNamesLong::<T>::new();
+        let consts = consts.into_iter().map(|value| {
+            (
+                u16::from(*value) as usize,
+                (
+                    names.get(*value).unwrap_or("<unknown>").to_string(),
+                    "Consts",
+                ),
+            )
+        });
+
+        let mut diff = Vec::new();
+        for t @ (value, _) in consts {
+            if data.remove(&value).is_none() {
+                diff.push(t);
+            }
+        }
+        diff.extend(data);
+
+        let mut fmt_diff = String::new();
+        for (value, (name, source)) in diff {
+            fmt_diff.push_str(&format!("{source}:\t{name} = {value:?}\n"));
+        }
+
+        assert!(
+            fmt_diff.is_empty(),
+            "Values defined in data do not match values defined in consts. Difference:\n{}",
+            fmt_diff
+        );
+    }
+
+    #[test]
+    fn test_ea() {
+        check_enum(
+            crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_EAST_ASIAN_WIDTH_V1,
+            EastAsianWidth::ALL_VALUES,
+        );
+    }
+
+    #[test]
+    fn test_ccc() {
+        check_enum(
+            crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_CANONICAL_COMBINING_CLASS_V1,
+            CanonicalCombiningClass::ALL_VALUES,
+        );
+    }
+
+    #[test]
+    fn test_jt() {
+        check_enum(
+            crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_JOINING_TYPE_V1,
+            JoiningType::ALL_VALUES,
+        );
+    }
+
+    #[test]
+    fn test_insc() {
+        check_enum(
+            crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_INDIC_SYLLABIC_CATEGORY_V1,
+            IndicSyllabicCategory::ALL_VALUES,
+        );
+    }
+
+    #[test]
+    fn test_sb() {
+        check_enum(
+            crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_SENTENCE_BREAK_V1,
+            SentenceBreak::ALL_VALUES,
+        );
+    }
+
+    #[test]
+    fn test_wb() {
+        check_enum(
+            crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_WORD_BREAK_V1,
+            WordBreak::ALL_VALUES,
+        );
+    }
+
+    #[test]
+    fn test_bc() {
+        check_enum(
+            crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_BIDI_CLASS_V1,
+            BidiClass::ALL_VALUES,
+        );
+    }
+
+    #[test]
+    fn test_hst() {
+        check_enum(
+            crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_HANGUL_SYLLABLE_TYPE_V1,
+            HangulSyllableType::ALL_VALUES,
+        );
+    }
+
+    #[test]
+    fn test_vo() {
+        check_enum(
+            crate::provider::Baked::SINGLETON_PROPERTY_NAME_PARSE_VERTICAL_ORIENTATION_V1,
+            VerticalOrientation::ALL_VALUES,
+        );
+    }
+}
diff --git a/vendor/icu_properties/src/provider.rs b/vendor/icu_properties/src/provider.rs
new file mode 100644
index 00000000..0f77e7fe
--- /dev/null
+++ b/vendor/icu_properties/src/provider.rs
@@ -0,0 +1,1113 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// Provider structs must be stable
+#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)]
+
+//! 🚧 \[Unstable\] Data provider struct definitions for this ICU4X component.
+//!
+//! <div class="stab unstable">
+//! 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+//! including in SemVer minor releases. While the serde representation of data structs is guaranteed
+//! to be stable, their Rust representation might not be. Use with caution.
+//! </div>
+//!
+//! Read more about data providers: [`icu_provider`]
+
+pub mod names;
+
+pub use names::{
+    PropertyNameLongBidiClassV1, PropertyNameLongCanonicalCombiningClassV1,
+    PropertyNameLongEastAsianWidthV1, PropertyNameLongGeneralCategoryV1,
+    PropertyNameLongGraphemeClusterBreakV1, PropertyNameLongHangulSyllableTypeV1,
+    PropertyNameLongIndicSyllabicCategoryV1, PropertyNameLongJoiningTypeV1,
+    PropertyNameLongLineBreakV1, PropertyNameLongScriptV1, PropertyNameLongSentenceBreakV1,
+    PropertyNameLongVerticalOrientationV1, PropertyNameLongWordBreakV1,
+    PropertyNameParseBidiClassV1, PropertyNameParseCanonicalCombiningClassV1,
+    PropertyNameParseEastAsianWidthV1, PropertyNameParseGeneralCategoryMaskV1,
+    PropertyNameParseGeneralCategoryV1, PropertyNameParseGraphemeClusterBreakV1,
+    PropertyNameParseHangulSyllableTypeV1, PropertyNameParseIndicSyllabicCategoryV1,
+    PropertyNameParseJoiningTypeV1, PropertyNameParseLineBreakV1, PropertyNameParseScriptV1,
+    PropertyNameParseSentenceBreakV1, PropertyNameParseVerticalOrientationV1,
+    PropertyNameParseWordBreakV1, PropertyNameShortBidiClassV1,
+    PropertyNameShortCanonicalCombiningClassV1, PropertyNameShortEastAsianWidthV1,
+    PropertyNameShortGeneralCategoryV1, PropertyNameShortGraphemeClusterBreakV1,
+    PropertyNameShortHangulSyllableTypeV1, PropertyNameShortIndicSyllabicCategoryV1,
+    PropertyNameShortJoiningTypeV1, PropertyNameShortLineBreakV1, PropertyNameShortScriptV1,
+    PropertyNameShortSentenceBreakV1, PropertyNameShortVerticalOrientationV1,
+    PropertyNameShortWordBreakV1,
+};
+
+pub use crate::props::gc::GeneralCategoryULE;
+use crate::props::*;
+use crate::script::ScriptWithExt;
+use core::ops::RangeInclusive;
+use icu_collections::codepointinvlist::CodePointInversionList;
+use icu_collections::codepointinvliststringlist::CodePointInversionListAndStringList;
+use icu_collections::codepointtrie::{CodePointMapRange, CodePointTrie, TrieValue};
+use icu_provider::prelude::*;
+use zerofrom::ZeroFrom;
+use zerovec::{VarZeroVec, ZeroSlice};
+
+#[cfg(feature = "compiled_data")]
+#[derive(Debug)]
+/// Baked data
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. In particular, the `DataProvider` implementations are only
+/// guaranteed to match with this version's `*_unstable` providers. Use with caution.
+/// </div>
+pub struct Baked;
+
+#[cfg(feature = "compiled_data")]
+#[allow(unused_imports)]
+const _: () = {
+    use icu_properties_data::*;
+    pub mod icu {
+        pub use crate as properties;
+        pub use icu_collections as collections;
+    }
+    make_provider!(Baked);
+    impl_property_binary_alnum_v1!(Baked);
+    impl_property_binary_alphabetic_v1!(Baked);
+    impl_property_binary_ascii_hex_digit_v1!(Baked);
+    impl_property_binary_basic_emoji_v1!(Baked);
+    impl_property_binary_bidi_control_v1!(Baked);
+    impl_property_binary_bidi_mirrored_v1!(Baked);
+    impl_property_binary_blank_v1!(Baked);
+    impl_property_binary_case_ignorable_v1!(Baked);
+    impl_property_binary_case_sensitive_v1!(Baked);
+    impl_property_binary_cased_v1!(Baked);
+    impl_property_binary_changes_when_casefolded_v1!(Baked);
+    impl_property_binary_changes_when_casemapped_v1!(Baked);
+    impl_property_binary_changes_when_lowercased_v1!(Baked);
+    impl_property_binary_changes_when_nfkc_casefolded_v1!(Baked);
+    impl_property_binary_changes_when_titlecased_v1!(Baked);
+    impl_property_binary_changes_when_uppercased_v1!(Baked);
+    impl_property_binary_dash_v1!(Baked);
+    impl_property_binary_default_ignorable_code_point_v1!(Baked);
+    impl_property_binary_deprecated_v1!(Baked);
+    impl_property_binary_diacritic_v1!(Baked);
+    impl_property_binary_emoji_component_v1!(Baked);
+    impl_property_binary_emoji_modifier_base_v1!(Baked);
+    impl_property_binary_emoji_modifier_v1!(Baked);
+    impl_property_binary_emoji_presentation_v1!(Baked);
+    impl_property_binary_emoji_v1!(Baked);
+    impl_property_binary_extended_pictographic_v1!(Baked);
+    impl_property_binary_extender_v1!(Baked);
+    impl_property_binary_full_composition_exclusion_v1!(Baked);
+    impl_property_binary_graph_v1!(Baked);
+    impl_property_binary_grapheme_base_v1!(Baked);
+    impl_property_binary_grapheme_extend_v1!(Baked);
+    impl_property_binary_grapheme_link_v1!(Baked);
+    impl_property_binary_hex_digit_v1!(Baked);
+    impl_property_binary_hyphen_v1!(Baked);
+    impl_property_binary_id_continue_v1!(Baked);
+    impl_property_binary_id_start_v1!(Baked);
+    impl_property_binary_ideographic_v1!(Baked);
+    impl_property_binary_ids_binary_operator_v1!(Baked);
+    impl_property_binary_ids_trinary_operator_v1!(Baked);
+    impl_property_binary_join_control_v1!(Baked);
+    impl_property_binary_logical_order_exception_v1!(Baked);
+    impl_property_binary_lowercase_v1!(Baked);
+    impl_property_binary_math_v1!(Baked);
+    impl_property_binary_nfc_inert_v1!(Baked);
+    impl_property_binary_nfd_inert_v1!(Baked);
+    impl_property_binary_nfkc_inert_v1!(Baked);
+    impl_property_binary_nfkd_inert_v1!(Baked);
+    impl_property_binary_noncharacter_code_point_v1!(Baked);
+    impl_property_binary_pattern_syntax_v1!(Baked);
+    impl_property_binary_pattern_white_space_v1!(Baked);
+    impl_property_binary_prepended_concatenation_mark_v1!(Baked);
+    impl_property_binary_print_v1!(Baked);
+    impl_property_binary_quotation_mark_v1!(Baked);
+    impl_property_binary_radical_v1!(Baked);
+    impl_property_binary_regional_indicator_v1!(Baked);
+    impl_property_binary_segment_starter_v1!(Baked);
+    impl_property_binary_sentence_terminal_v1!(Baked);
+    impl_property_binary_soft_dotted_v1!(Baked);
+    impl_property_binary_terminal_punctuation_v1!(Baked);
+    impl_property_binary_unified_ideograph_v1!(Baked);
+    impl_property_binary_uppercase_v1!(Baked);
+    impl_property_binary_variation_selector_v1!(Baked);
+    impl_property_binary_white_space_v1!(Baked);
+    impl_property_binary_xdigit_v1!(Baked);
+    impl_property_binary_xid_continue_v1!(Baked);
+    impl_property_binary_xid_start_v1!(Baked);
+    impl_property_enum_bidi_class_v1!(Baked);
+    impl_property_enum_bidi_mirroring_glyph_v1!(Baked);
+    impl_property_enum_canonical_combining_class_v1!(Baked);
+    impl_property_enum_east_asian_width_v1!(Baked);
+    impl_property_enum_general_category_v1!(Baked);
+    impl_property_enum_grapheme_cluster_break_v1!(Baked);
+    impl_property_enum_hangul_syllable_type_v1!(Baked);
+    impl_property_enum_indic_conjunct_break_v1!(Baked);
+    impl_property_enum_indic_syllabic_category_v1!(Baked);
+    impl_property_enum_joining_type_v1!(Baked);
+    impl_property_enum_line_break_v1!(Baked);
+    impl_property_enum_script_v1!(Baked);
+    impl_property_enum_sentence_break_v1!(Baked);
+    impl_property_enum_vertical_orientation_v1!(Baked);
+    impl_property_enum_word_break_v1!(Baked);
+    impl_property_name_long_bidi_class_v1!(Baked);
+    impl_property_name_long_canonical_combining_class_v1!(Baked);
+    impl_property_name_long_east_asian_width_v1!(Baked);
+    impl_property_name_long_general_category_v1!(Baked);
+    impl_property_name_long_grapheme_cluster_break_v1!(Baked);
+    impl_property_name_long_hangul_syllable_type_v1!(Baked);
+    impl_property_name_long_indic_syllabic_category_v1!(Baked);
+    impl_property_name_long_joining_type_v1!(Baked);
+    impl_property_name_long_line_break_v1!(Baked);
+    impl_property_name_long_script_v1!(Baked);
+    impl_property_name_long_sentence_break_v1!(Baked);
+    impl_property_name_long_vertical_orientation_v1!(Baked);
+    impl_property_name_long_word_break_v1!(Baked);
+    impl_property_name_parse_bidi_class_v1!(Baked);
+    impl_property_name_parse_canonical_combining_class_v1!(Baked);
+    impl_property_name_parse_east_asian_width_v1!(Baked);
+    impl_property_name_parse_general_category_mask_v1!(Baked);
+    impl_property_name_parse_general_category_v1!(Baked);
+    impl_property_name_parse_grapheme_cluster_break_v1!(Baked);
+    impl_property_name_parse_hangul_syllable_type_v1!(Baked);
+    impl_property_name_parse_indic_syllabic_category_v1!(Baked);
+    impl_property_name_parse_joining_type_v1!(Baked);
+    impl_property_name_parse_line_break_v1!(Baked);
+    impl_property_name_parse_script_v1!(Baked);
+    impl_property_name_parse_sentence_break_v1!(Baked);
+    impl_property_name_parse_vertical_orientation_v1!(Baked);
+    impl_property_name_parse_word_break_v1!(Baked);
+    impl_property_name_short_bidi_class_v1!(Baked);
+    impl_property_name_short_canonical_combining_class_v1!(Baked);
+    impl_property_name_short_east_asian_width_v1!(Baked);
+    impl_property_name_short_general_category_v1!(Baked);
+    impl_property_name_short_grapheme_cluster_break_v1!(Baked);
+    impl_property_name_short_hangul_syllable_type_v1!(Baked);
+    impl_property_name_short_indic_syllabic_category_v1!(Baked);
+    impl_property_name_short_joining_type_v1!(Baked);
+    impl_property_name_short_line_break_v1!(Baked);
+    impl_property_name_short_script_v1!(Baked);
+    impl_property_name_short_sentence_break_v1!(Baked);
+    impl_property_name_short_vertical_orientation_v1!(Baked);
+    impl_property_name_short_word_break_v1!(Baked);
+    impl_property_script_with_extensions_v1!(Baked);
+};
+
+icu_provider::data_marker!(
+    /// `PropertyBinaryAlnumV1`
+    PropertyBinaryAlnumV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryAlphabeticV1`
+    PropertyBinaryAlphabeticV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryAsciiHexDigitV1`
+    PropertyBinaryAsciiHexDigitV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryBidiControlV1`
+    PropertyBinaryBidiControlV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryBidiMirroredV1`
+    PropertyBinaryBidiMirroredV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryBlankV1`
+    PropertyBinaryBlankV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryCasedV1`
+    PropertyBinaryCasedV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryCaseIgnorableV1`
+    PropertyBinaryCaseIgnorableV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryCaseSensitiveV1`
+    PropertyBinaryCaseSensitiveV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryChangesWhenCasefoldedV1`
+    PropertyBinaryChangesWhenCasefoldedV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryChangesWhenCasemappedV1`
+    PropertyBinaryChangesWhenCasemappedV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryChangesWhenLowercasedV1`
+    PropertyBinaryChangesWhenLowercasedV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryChangesWhenNfkcCasefoldedV1`
+    PropertyBinaryChangesWhenNfkcCasefoldedV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryChangesWhenTitlecasedV1`
+    PropertyBinaryChangesWhenTitlecasedV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryChangesWhenUppercasedV1`
+    PropertyBinaryChangesWhenUppercasedV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryDashV1`
+    PropertyBinaryDashV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryDefaultIgnorableCodePointV1`
+    PropertyBinaryDefaultIgnorableCodePointV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryDeprecatedV1`
+    PropertyBinaryDeprecatedV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryDiacriticV1`
+    PropertyBinaryDiacriticV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryEmojiComponentV1`
+    PropertyBinaryEmojiComponentV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryEmojiModifierBaseV1`
+    PropertyBinaryEmojiModifierBaseV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryEmojiModifierV1`
+    PropertyBinaryEmojiModifierV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryEmojiPresentationV1`
+    PropertyBinaryEmojiPresentationV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryEmojiV1`
+    PropertyBinaryEmojiV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryExtendedPictographicV1`
+    PropertyBinaryExtendedPictographicV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryExtenderV1`
+    PropertyBinaryExtenderV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryFullCompositionExclusionV1`
+    PropertyBinaryFullCompositionExclusionV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryGraphemeBaseV1`
+    PropertyBinaryGraphemeBaseV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryGraphemeExtendV1`
+    PropertyBinaryGraphemeExtendV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryGraphemeLinkV1`
+    PropertyBinaryGraphemeLinkV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryGraphV1`
+    PropertyBinaryGraphV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryHexDigitV1`
+    PropertyBinaryHexDigitV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryHyphenV1`
+    PropertyBinaryHyphenV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryIdContinueV1`
+    PropertyBinaryIdContinueV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryIdeographicV1`
+    PropertyBinaryIdeographicV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryIdsBinaryOperatorV1`
+    PropertyBinaryIdsBinaryOperatorV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryIdStartV1`
+    PropertyBinaryIdStartV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryIdsTrinaryOperatorV1`
+    PropertyBinaryIdsTrinaryOperatorV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryJoinControlV1`
+    PropertyBinaryJoinControlV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryLogicalOrderExceptionV1`
+    PropertyBinaryLogicalOrderExceptionV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryLowercaseV1`
+    PropertyBinaryLowercaseV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryMathV1`
+    PropertyBinaryMathV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryNfcInertV1`
+    PropertyBinaryNfcInertV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryNfdInertV1`
+    PropertyBinaryNfdInertV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryNfkcInertV1`
+    PropertyBinaryNfkcInertV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryNfkdInertV1`
+    PropertyBinaryNfkdInertV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryNoncharacterCodePointV1`
+    PropertyBinaryNoncharacterCodePointV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryPatternSyntaxV1`
+    PropertyBinaryPatternSyntaxV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryPatternWhiteSpaceV1`
+    PropertyBinaryPatternWhiteSpaceV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryPrependedConcatenationMarkV1`
+    PropertyBinaryPrependedConcatenationMarkV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryPrintV1`
+    PropertyBinaryPrintV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryQuotationMarkV1`
+    PropertyBinaryQuotationMarkV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryRadicalV1`
+    PropertyBinaryRadicalV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryRegionalIndicatorV1`
+    PropertyBinaryRegionalIndicatorV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinarySegmentStarterV1`
+    PropertyBinarySegmentStarterV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinarySentenceTerminalV1`
+    PropertyBinarySentenceTerminalV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinarySoftDottedV1`
+    PropertyBinarySoftDottedV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryTerminalPunctuationV1`
+    PropertyBinaryTerminalPunctuationV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryUnifiedIdeographV1`
+    PropertyBinaryUnifiedIdeographV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryUppercaseV1`
+    PropertyBinaryUppercaseV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryVariationSelectorV1`
+    PropertyBinaryVariationSelectorV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryWhiteSpaceV1`
+    PropertyBinaryWhiteSpaceV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryXdigitV1`
+    PropertyBinaryXdigitV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryXidContinueV1`
+    PropertyBinaryXidContinueV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryXidStartV1`
+    PropertyBinaryXidStartV1,
+    PropertyCodePointSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'BidiClass' Unicode property
+    PropertyEnumBidiClassV1,
+    PropertyCodePointMap<'static, crate::props::BidiClass>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'CanonicalCombiningClass' Unicode property
+    PropertyEnumCanonicalCombiningClassV1,
+    PropertyCodePointMap<'static, crate::props::CanonicalCombiningClass>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'EastAsianWidth' Unicode property
+    PropertyEnumEastAsianWidthV1,
+    PropertyCodePointMap<'static, crate::props::EastAsianWidth>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'GeneralCategory' Unicode property
+    PropertyEnumGeneralCategoryV1,
+    PropertyCodePointMap<'static, crate::props::GeneralCategory>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'GraphemeClusterBreak' Unicode property
+    PropertyEnumGraphemeClusterBreakV1,
+    PropertyCodePointMap<'static, crate::props::GraphemeClusterBreak>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'HangulSyllableType' Unicode property
+    PropertyEnumHangulSyllableTypeV1,
+    PropertyCodePointMap<'static, crate::props::HangulSyllableType>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'IndicConjunctBreak' Unicode property
+    PropertyEnumIndicConjunctBreakV1,
+    PropertyCodePointMap<'static, crate::props::IndicConjunctBreak>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'IndicSyllabicCategory' Unicode property
+    PropertyEnumIndicSyllabicCategoryV1,
+    PropertyCodePointMap<'static, crate::props::IndicSyllabicCategory>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'JoiningType' Unicode property
+    PropertyEnumJoiningTypeV1,
+    PropertyCodePointMap<'static, crate::props::JoiningType>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'LineBreak' Unicode property
+    PropertyEnumLineBreakV1,
+    PropertyCodePointMap<'static, crate::props::LineBreak>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'Script' Unicode property
+    PropertyEnumScriptV1,
+    PropertyCodePointMap<'static, crate::props::Script>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'SentenceBreak' Unicode property
+    PropertyEnumSentenceBreakV1,
+    PropertyCodePointMap<'static, crate::props::SentenceBreak>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'Vertical_Orientation' Unicode property
+    PropertyEnumVerticalOrientationV1,
+    PropertyCodePointMap<'static, crate::props::VerticalOrientation>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'WordBreak' Unicode property
+    PropertyEnumWordBreakV1,
+    PropertyCodePointMap<'static, crate::props::WordBreak>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// Data marker for the 'BidiMirroringGlyph' Unicode property
+    PropertyEnumBidiMirroringGlyphV1,
+    PropertyCodePointMap<'static, crate::bidi::BidiMirroringGlyph>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// `PropertyBinaryBasicEmojiV1`
+    PropertyBinaryBasicEmojiV1,
+    PropertyUnicodeSet<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyScriptWithExtensionsV1`
+    PropertyScriptWithExtensionsV1,
+    ScriptWithExtensionsProperty<'static>,
+    is_singleton = true
+);
+
+/// All data keys in this module.
+pub const MARKERS: &[DataMarkerInfo] = &[
+    PropertyNameLongBidiClassV1::INFO,
+    PropertyNameLongCanonicalCombiningClassV1::INFO,
+    PropertyNameLongEastAsianWidthV1::INFO,
+    PropertyNameLongGeneralCategoryV1::INFO,
+    PropertyNameLongGraphemeClusterBreakV1::INFO,
+    PropertyNameLongHangulSyllableTypeV1::INFO,
+    PropertyNameLongIndicSyllabicCategoryV1::INFO,
+    PropertyNameLongJoiningTypeV1::INFO,
+    PropertyNameLongLineBreakV1::INFO,
+    PropertyNameLongScriptV1::INFO,
+    PropertyNameLongSentenceBreakV1::INFO,
+    PropertyNameLongVerticalOrientationV1::INFO,
+    PropertyNameLongWordBreakV1::INFO,
+    PropertyNameParseBidiClassV1::INFO,
+    PropertyNameParseCanonicalCombiningClassV1::INFO,
+    PropertyNameParseEastAsianWidthV1::INFO,
+    PropertyNameParseGeneralCategoryMaskV1::INFO,
+    PropertyNameParseGeneralCategoryV1::INFO,
+    PropertyNameParseGraphemeClusterBreakV1::INFO,
+    PropertyNameParseHangulSyllableTypeV1::INFO,
+    PropertyNameParseIndicSyllabicCategoryV1::INFO,
+    PropertyNameParseJoiningTypeV1::INFO,
+    PropertyNameParseLineBreakV1::INFO,
+    PropertyNameParseScriptV1::INFO,
+    PropertyNameParseSentenceBreakV1::INFO,
+    PropertyNameParseVerticalOrientationV1::INFO,
+    PropertyNameParseWordBreakV1::INFO,
+    PropertyNameShortBidiClassV1::INFO,
+    PropertyNameShortCanonicalCombiningClassV1::INFO,
+    PropertyNameShortEastAsianWidthV1::INFO,
+    PropertyNameShortGeneralCategoryV1::INFO,
+    PropertyNameShortGraphemeClusterBreakV1::INFO,
+    PropertyNameShortHangulSyllableTypeV1::INFO,
+    PropertyNameShortIndicSyllabicCategoryV1::INFO,
+    PropertyNameShortJoiningTypeV1::INFO,
+    PropertyNameShortLineBreakV1::INFO,
+    PropertyNameShortScriptV1::INFO,
+    PropertyNameShortSentenceBreakV1::INFO,
+    PropertyNameShortVerticalOrientationV1::INFO,
+    PropertyNameShortWordBreakV1::INFO,
+    PropertyBinaryAlnumV1::INFO,
+    PropertyBinaryAlphabeticV1::INFO,
+    PropertyBinaryAsciiHexDigitV1::INFO,
+    PropertyBinaryBidiControlV1::INFO,
+    PropertyBinaryBidiMirroredV1::INFO,
+    PropertyBinaryBlankV1::INFO,
+    PropertyBinaryCasedV1::INFO,
+    PropertyBinaryCaseIgnorableV1::INFO,
+    PropertyBinaryCaseSensitiveV1::INFO,
+    PropertyBinaryChangesWhenCasefoldedV1::INFO,
+    PropertyBinaryChangesWhenCasemappedV1::INFO,
+    PropertyBinaryChangesWhenLowercasedV1::INFO,
+    PropertyBinaryChangesWhenNfkcCasefoldedV1::INFO,
+    PropertyBinaryChangesWhenTitlecasedV1::INFO,
+    PropertyBinaryChangesWhenUppercasedV1::INFO,
+    PropertyBinaryDashV1::INFO,
+    PropertyBinaryDefaultIgnorableCodePointV1::INFO,
+    PropertyBinaryDeprecatedV1::INFO,
+    PropertyBinaryDiacriticV1::INFO,
+    PropertyBinaryEmojiComponentV1::INFO,
+    PropertyBinaryEmojiModifierBaseV1::INFO,
+    PropertyBinaryEmojiModifierV1::INFO,
+    PropertyBinaryEmojiPresentationV1::INFO,
+    PropertyBinaryEmojiV1::INFO,
+    PropertyBinaryExtendedPictographicV1::INFO,
+    PropertyBinaryExtenderV1::INFO,
+    PropertyBinaryFullCompositionExclusionV1::INFO,
+    PropertyBinaryGraphemeBaseV1::INFO,
+    PropertyBinaryGraphemeExtendV1::INFO,
+    PropertyBinaryGraphemeLinkV1::INFO,
+    PropertyBinaryGraphV1::INFO,
+    PropertyBinaryHexDigitV1::INFO,
+    PropertyBinaryHyphenV1::INFO,
+    PropertyBinaryIdContinueV1::INFO,
+    PropertyBinaryIdeographicV1::INFO,
+    PropertyBinaryIdsBinaryOperatorV1::INFO,
+    PropertyBinaryIdStartV1::INFO,
+    PropertyBinaryIdsTrinaryOperatorV1::INFO,
+    PropertyBinaryJoinControlV1::INFO,
+    PropertyBinaryLogicalOrderExceptionV1::INFO,
+    PropertyBinaryLowercaseV1::INFO,
+    PropertyBinaryMathV1::INFO,
+    PropertyBinaryNfcInertV1::INFO,
+    PropertyBinaryNfdInertV1::INFO,
+    PropertyBinaryNfkcInertV1::INFO,
+    PropertyBinaryNfkdInertV1::INFO,
+    PropertyBinaryNoncharacterCodePointV1::INFO,
+    PropertyBinaryPatternSyntaxV1::INFO,
+    PropertyBinaryPatternWhiteSpaceV1::INFO,
+    PropertyBinaryPrependedConcatenationMarkV1::INFO,
+    PropertyBinaryPrintV1::INFO,
+    PropertyBinaryQuotationMarkV1::INFO,
+    PropertyBinaryRadicalV1::INFO,
+    PropertyBinaryRegionalIndicatorV1::INFO,
+    PropertyBinarySegmentStarterV1::INFO,
+    PropertyBinarySentenceTerminalV1::INFO,
+    PropertyBinarySoftDottedV1::INFO,
+    PropertyBinaryTerminalPunctuationV1::INFO,
+    PropertyBinaryUnifiedIdeographV1::INFO,
+    PropertyBinaryUppercaseV1::INFO,
+    PropertyBinaryVariationSelectorV1::INFO,
+    PropertyBinaryWhiteSpaceV1::INFO,
+    PropertyBinaryXdigitV1::INFO,
+    PropertyBinaryXidContinueV1::INFO,
+    PropertyBinaryXidStartV1::INFO,
+    PropertyEnumBidiClassV1::INFO,
+    PropertyEnumCanonicalCombiningClassV1::INFO,
+    PropertyEnumEastAsianWidthV1::INFO,
+    PropertyEnumGeneralCategoryV1::INFO,
+    PropertyEnumGraphemeClusterBreakV1::INFO,
+    PropertyEnumHangulSyllableTypeV1::INFO,
+    PropertyEnumIndicConjunctBreakV1::INFO,
+    PropertyEnumIndicSyllabicCategoryV1::INFO,
+    PropertyEnumJoiningTypeV1::INFO,
+    PropertyEnumLineBreakV1::INFO,
+    PropertyEnumScriptV1::INFO,
+    PropertyEnumSentenceBreakV1::INFO,
+    PropertyEnumVerticalOrientationV1::INFO,
+    PropertyEnumWordBreakV1::INFO,
+    PropertyEnumBidiMirroringGlyphV1::INFO,
+    PropertyBinaryBasicEmojiV1::INFO,
+    PropertyScriptWithExtensionsV1::INFO,
+];
+
+/// A set of characters which share a particular property value.
+///
+/// This data enum is extensible, more backends may be added in the future.
+/// Old data can be used with newer code but not vice versa.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+#[non_exhaustive]
+pub enum PropertyCodePointSet<'data> {
+    /// The set of characters, represented as an inversion list
+    InversionList(#[cfg_attr(feature = "serde", serde(borrow))] CodePointInversionList<'data>),
+    // new variants should go BELOW existing ones
+    // Serde serializes based on variant name and index in the enum
+    // https://docs.rs/serde/latest/serde/trait.Serializer.html#tymethod.serialize_unit_variant
+}
+
+icu_provider::data_struct!(
+    PropertyCodePointSet<'_>,
+    #[cfg(feature = "datagen")]
+);
+
+// See CodePointSetData for documentation of these functions
+impl<'data> PropertyCodePointSet<'data> {
+    #[inline]
+    pub(crate) fn contains(&self, ch: char) -> bool {
+        match *self {
+            Self::InversionList(ref l) => l.contains(ch),
+        }
+    }
+
+    #[inline]
+    pub(crate) fn contains32(&self, ch: u32) -> bool {
+        match *self {
+            Self::InversionList(ref l) => l.contains32(ch),
+        }
+    }
+
+    #[inline]
+    pub(crate) fn iter_ranges(&self) -> impl Iterator<Item = RangeInclusive<u32>> + '_ {
+        match *self {
+            Self::InversionList(ref l) => l.iter_ranges(),
+        }
+    }
+
+    #[inline]
+    pub(crate) fn iter_ranges_complemented(
+        &self,
+    ) -> impl Iterator<Item = RangeInclusive<u32>> + '_ {
+        match *self {
+            Self::InversionList(ref l) => l.iter_ranges_complemented(),
+        }
+    }
+
+    #[inline]
+    pub(crate) fn from_code_point_inversion_list(l: CodePointInversionList<'static>) -> Self {
+        Self::InversionList(l)
+    }
+
+    #[inline]
+    pub(crate) fn as_code_point_inversion_list(
+        &'_ self,
+    ) -> Option<&'_ CodePointInversionList<'data>> {
+        match *self {
+            Self::InversionList(ref l) => Some(l),
+            // any other backing data structure that cannot return a CPInvList in O(1) time should return None
+        }
+    }
+
+    #[inline]
+    pub(crate) fn to_code_point_inversion_list(&self) -> CodePointInversionList<'_> {
+        match *self {
+            Self::InversionList(ref t) => ZeroFrom::zero_from(t),
+        }
+    }
+}
+
+/// A map efficiently storing data about individual characters.
+///
+/// This data enum is extensible, more backends may be added in the future.
+/// Old data can be used with newer code but not vice versa.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Clone, Debug, Eq, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+#[non_exhaustive]
+pub enum PropertyCodePointMap<'data, T: TrieValue> {
+    /// A codepoint trie storing the data
+    CodePointTrie(#[cfg_attr(feature = "serde", serde(borrow))] CodePointTrie<'data, T>),
+    // new variants should go BELOW existing ones
+    // Serde serializes based on variant name and index in the enum
+    // https://docs.rs/serde/latest/serde/trait.Serializer.html#tymethod.serialize_unit_variant
+}
+
+icu_provider::data_struct!(
+    <T: TrieValue> PropertyCodePointMap<'_, T>,
+    #[cfg(feature = "datagen")]
+);
+
+// See CodePointMapData for documentation of these functions
+impl<'data, T: TrieValue> PropertyCodePointMap<'data, T> {
+    #[inline]
+    pub(crate) fn get32(&self, ch: u32) -> T {
+        match *self {
+            Self::CodePointTrie(ref t) => t.get32(ch),
+        }
+    }
+
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub(crate) fn try_into_converted<P>(
+        self,
+    ) -> Result<PropertyCodePointMap<'data, P>, zerovec::ule::UleError>
+    where
+        P: TrieValue,
+    {
+        match self {
+            Self::CodePointTrie(t) => t
+                .try_into_converted()
+                .map(PropertyCodePointMap::CodePointTrie),
+        }
+    }
+
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub(crate) fn get_set_for_value(&self, value: T) -> CodePointInversionList<'static> {
+        match *self {
+            Self::CodePointTrie(ref t) => t.get_set_for_value(value),
+        }
+    }
+
+    #[inline]
+    pub(crate) fn iter_ranges(&self) -> impl Iterator<Item = CodePointMapRange<T>> + '_ {
+        match *self {
+            Self::CodePointTrie(ref t) => t.iter_ranges(),
+        }
+    }
+    #[inline]
+    pub(crate) fn iter_ranges_mapped<'a, U: Eq + 'a>(
+        &'a self,
+        map: impl FnMut(T) -> U + Copy + 'a,
+    ) -> impl Iterator<Item = CodePointMapRange<U>> + 'a {
+        match *self {
+            Self::CodePointTrie(ref t) => t.iter_ranges_mapped(map),
+        }
+    }
+
+    #[inline]
+    pub(crate) fn from_code_point_trie(trie: CodePointTrie<'static, T>) -> Self {
+        Self::CodePointTrie(trie)
+    }
+
+    #[inline]
+    pub(crate) fn as_code_point_trie(&self) -> Option<&CodePointTrie<'data, T>> {
+        match *self {
+            Self::CodePointTrie(ref t) => Some(t),
+            // any other backing data structure that cannot return a CPT in O(1) time should return None
+        }
+    }
+
+    #[inline]
+    pub(crate) fn to_code_point_trie(&self) -> CodePointTrie<'_, T> {
+        match *self {
+            Self::CodePointTrie(ref t) => ZeroFrom::zero_from(t),
+        }
+    }
+}
+
+/// A set of characters and strings which share a particular property value.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+#[non_exhaustive]
+pub enum PropertyUnicodeSet<'data> {
+    /// A set representing characters in an inversion list, and the strings in a list.
+    CPInversionListStrList(
+        #[cfg_attr(feature = "serde", serde(borrow))] CodePointInversionListAndStringList<'data>,
+    ),
+    // new variants should go BELOW existing ones
+    // Serde serializes based on variant name and index in the enum
+    // https://docs.rs/serde/latest/serde/trait.Serializer.html#tymethod.serialize_unit_variant
+}
+
+icu_provider::data_struct!(
+    PropertyUnicodeSet<'_>,
+    #[cfg(feature = "datagen")]
+);
+
+impl<'data> PropertyUnicodeSet<'data> {
+    #[inline]
+    pub(crate) fn contains_str(&self, s: &str) -> bool {
+        match *self {
+            Self::CPInversionListStrList(ref l) => l.contains_str(s),
+        }
+    }
+
+    #[inline]
+    pub(crate) fn contains32(&self, cp: u32) -> bool {
+        match *self {
+            Self::CPInversionListStrList(ref l) => l.contains32(cp),
+        }
+    }
+
+    #[inline]
+    pub(crate) fn contains(&self, ch: char) -> bool {
+        match *self {
+            Self::CPInversionListStrList(ref l) => l.contains(ch),
+        }
+    }
+
+    #[inline]
+    pub(crate) fn from_code_point_inversion_list_string_list(
+        l: CodePointInversionListAndStringList<'static>,
+    ) -> Self {
+        Self::CPInversionListStrList(l)
+    }
+
+    #[inline]
+    pub(crate) fn as_code_point_inversion_list_string_list(
+        &'_ self,
+    ) -> Option<&'_ CodePointInversionListAndStringList<'data>> {
+        match *self {
+            Self::CPInversionListStrList(ref l) => Some(l),
+            // any other backing data structure that cannot return a CPInversionListStrList in O(1) time should return None
+        }
+    }
+
+    #[inline]
+    pub(crate) fn to_code_point_inversion_list_string_list(
+        &self,
+    ) -> CodePointInversionListAndStringList<'_> {
+        match *self {
+            Self::CPInversionListStrList(ref t) => ZeroFrom::zero_from(t),
+        }
+    }
+}
+
+/// A struct that efficiently stores `Script` and `Script_Extensions` property data.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, Eq, PartialEq, Clone, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+pub struct ScriptWithExtensionsProperty<'data> {
+    /// Note: The `ScriptWithExt` values in this array will assume a 12-bit layout. The 2
+    /// higher order bits 11..10 will indicate how to deduce the Script value and
+    /// Script_Extensions value, nearly matching the representation
+    /// [in ICU](https://github.com/unicode-org/icu/blob/main/icu4c/source/common/uprops.h):
+    ///
+    /// | High order 2 bits value | Script                                                 | Script_Extensions                                              |
+    /// |-------------------------|--------------------------------------------------------|----------------------------------------------------------------|
+    /// | 3                       | First value in sub-array, index given by lower 10 bits | Sub-array excluding first value, index given by lower 10 bits  |
+    /// | 2                       | Script=Inherited                                       | Entire sub-array, index given by lower 10 bits                 |
+    /// | 1                       | Script=Common                                          | Entire sub-array, index given by lower 10 bits                 |
+    /// | 0                       | Value in lower 10 bits                                 | `[ Script value ]` single-element array                        |
+    ///
+    /// When the lower 10 bits of the value are used as an index, that index is
+    /// used for the outer-level vector of the nested `extensions` structure.
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub trie: CodePointTrie<'data, ScriptWithExt>,
+
+    /// This companion structure stores Script_Extensions values, which are
+    /// themselves arrays / vectors. This structure only stores the values for
+    /// cases in which `scx(cp) != [ sc(cp) ]`. Each sub-vector is distinct. The
+    /// sub-vector represents the Script_Extensions array value for a code point,
+    /// and may also indicate Script value, as described for the `trie` field.
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub extensions: VarZeroVec<'data, ZeroSlice<Script>>,
+}
+
+icu_provider::data_struct!(
+    ScriptWithExtensionsProperty<'_>,
+    #[cfg(feature = "datagen")]
+);
diff --git a/vendor/icu_properties/src/provider/names.rs b/vendor/icu_properties/src/provider/names.rs
new file mode 100644
index 00000000..9f6b8a0e
--- /dev/null
+++ b/vendor/icu_properties/src/provider/names.rs
@@ -0,0 +1,357 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! 🚧 \[Unstable\] Property names-related data for this component
+//!
+//! <div class="stab unstable">
+//! 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+//! including in SemVer minor releases. While the serde representation of data structs is guaranteed
+//! to be stable, their Rust representation might not be. Use with caution.
+//! </div>
+//!
+//! Read more about data providers: [`icu_provider`]
+
+use icu_locale_core::subtags::Script;
+use icu_provider::prelude::*;
+
+use zerotrie::ZeroTrieSimpleAscii;
+use zerovec::ule::NichedOption;
+use zerovec::{VarZeroVec, ZeroMap, ZeroVec};
+
+icu_provider::data_marker!(
+    /// `PropertyNameParseBidiClassV1`
+    PropertyNameParseBidiClassV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseCanonicalCombiningClassV1`
+    PropertyNameParseCanonicalCombiningClassV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseEastAsianWidthV1`
+    PropertyNameParseEastAsianWidthV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseGeneralCategoryMaskV1`
+    PropertyNameParseGeneralCategoryMaskV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseGeneralCategoryV1`
+    PropertyNameParseGeneralCategoryV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseGraphemeClusterBreakV1`
+    PropertyNameParseGraphemeClusterBreakV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseHangulSyllableTypeV1`
+    PropertyNameParseHangulSyllableTypeV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseIndicSyllabicCategoryV1`
+    PropertyNameParseIndicSyllabicCategoryV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseJoiningTypeV1`
+    PropertyNameParseJoiningTypeV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseLineBreakV1`
+    PropertyNameParseLineBreakV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseScriptV1`
+    PropertyNameParseScriptV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseSentenceBreakV1`
+    PropertyNameParseSentenceBreakV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseVerticalOrientationV1`
+    PropertyNameParseVerticalOrientationV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameParseWordBreakV1`
+    PropertyNameParseWordBreakV1,
+    PropertyValueNameToEnumMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongBidiClassV1`
+    PropertyNameLongBidiClassV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortBidiClassV1`
+    PropertyNameShortBidiClassV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongEastAsianWidthV1`
+    PropertyNameLongEastAsianWidthV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortEastAsianWidthV1`
+    PropertyNameShortEastAsianWidthV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongGeneralCategoryV1`
+    PropertyNameLongGeneralCategoryV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortGeneralCategoryV1`
+    PropertyNameShortGeneralCategoryV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongGraphemeClusterBreakV1`
+    PropertyNameLongGraphemeClusterBreakV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortGraphemeClusterBreakV1`
+    PropertyNameShortGraphemeClusterBreakV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongHangulSyllableTypeV1`
+    PropertyNameLongHangulSyllableTypeV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortHangulSyllableTypeV1`
+    PropertyNameShortHangulSyllableTypeV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongIndicSyllabicCategoryV1`
+    PropertyNameLongIndicSyllabicCategoryV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortIndicSyllabicCategoryV1`
+    PropertyNameShortIndicSyllabicCategoryV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongJoiningTypeV1`
+    PropertyNameLongJoiningTypeV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortJoiningTypeV1`
+    PropertyNameShortJoiningTypeV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongLineBreakV1`
+    PropertyNameLongLineBreakV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortLineBreakV1`
+    PropertyNameShortLineBreakV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongScriptV1`
+    PropertyNameLongScriptV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongSentenceBreakV1`
+    PropertyNameLongSentenceBreakV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortSentenceBreakV1`
+    PropertyNameShortSentenceBreakV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongVerticalOrientationV1`
+    PropertyNameLongVerticalOrientationV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortVerticalOrientationV1`
+    PropertyNameShortVerticalOrientationV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongWordBreakV1`
+    PropertyNameLongWordBreakV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortWordBreakV1`
+    PropertyNameShortWordBreakV1,
+    PropertyEnumToValueNameLinearMap<'static>,
+    is_singleton = true
+);
+icu_provider::data_marker!(
+    /// `PropertyNameLongCanonicalCombiningClassV1`
+    PropertyNameLongCanonicalCombiningClassV1,
+    PropertyEnumToValueNameSparseMap<'static>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortCanonicalCombiningClassV1`
+    PropertyNameShortCanonicalCombiningClassV1,
+    PropertyEnumToValueNameSparseMap<'static>,
+    is_singleton = true,
+);
+icu_provider::data_marker!(
+    /// `PropertyNameShortScriptV1`
+    PropertyNameShortScriptV1,
+    PropertyScriptToIcuScriptMap<'static>,
+    is_singleton = true,
+);
+
+/// A set of characters and strings which share a particular property value.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+pub struct PropertyValueNameToEnumMap<'data> {
+    /// A map from names to their value discriminant
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub map: ZeroTrieSimpleAscii<ZeroVec<'data, u8>>,
+}
+
+icu_provider::data_struct!(
+    PropertyValueNameToEnumMap<'_>,
+    #[cfg(feature = "datagen")]
+);
+
+/// A mapping of property values to their names. A single instance of this map will only cover
+/// either long or short names, determined whilst loading data.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+#[yoke(prove_covariance_manually)]
+pub struct PropertyEnumToValueNameSparseMap<'data> {
+    /// A map from the value discriminant to the names
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub map: ZeroMap<'data, u16, str>,
+}
+
+icu_provider::data_struct!(
+    PropertyEnumToValueNameSparseMap<'_>,
+    #[cfg(feature = "datagen")]
+);
+
+/// A mapping of property values to their names. A single instance of this map will only cover
+/// either long or short names, determined whilst loading data.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+#[yoke(prove_covariance_manually)]
+pub struct PropertyEnumToValueNameLinearMap<'data> {
+    /// A map from the value discriminant (the index) to the names, for mostly
+    /// contiguous data. Empty strings count as missing.
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub map: VarZeroVec<'data, str>,
+}
+
+icu_provider::data_struct!(
+    PropertyEnumToValueNameLinearMap<'_>,
+    #[cfg(feature = "datagen")]
+);
+
+/// A mapping of property values to their names. A single instance of this map will only cover
+/// either long or short names, determined whilst loading data.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[derive(Debug, Clone, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::provider::names))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+#[yoke(prove_covariance_manually)]
+pub struct PropertyScriptToIcuScriptMap<'data> {
+    /// A map from the value discriminant (the index) to the names, for mostly
+    /// contiguous data. Empty strings count as missing.
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub map: ZeroVec<'data, NichedOption<Script, 4>>,
+}
+
+icu_provider::data_struct!(
+    PropertyScriptToIcuScriptMap<'_>,
+    #[cfg(feature = "datagen")]
+);
diff --git a/vendor/icu_properties/src/runtime.rs b/vendor/icu_properties/src/runtime.rs
new file mode 100644
index 00000000..6be11b66
--- /dev/null
+++ b/vendor/icu_properties/src/runtime.rs
@@ -0,0 +1,572 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! 🚧 \[Experimental\] This module is experimental and currently crate-private. Let us know if you
+//! have a use case for this!
+//!
+//! This module contains utilities for working with properties where the specific property in use
+//! is not known at compile time.
+//!
+//! For regex engines, [`crate::sets::load_for_ecma262_unstable()`] is a convenient API for working
+//! with properties at runtime tailored for the use case of ECMA262-compatible regex engines.
+
+use crate::provider::*;
+use crate::CodePointSetData;
+#[cfg(doc)]
+use crate::{
+    props::{GeneralCategory, GeneralCategoryGroup, Script},
+    script, CodePointMapData, PropertyParser,
+};
+use icu_provider::prelude::*;
+
+/// This type can represent any binary Unicode property.
+///
+/// This is intended to be used in situations where the exact unicode property needed is
+/// only known at runtime, for example in regex engines.
+///
+/// The values are intended to be identical to ICU4C's UProperty enum
+#[non_exhaustive]
+#[allow(missing_docs)]
+#[allow(dead_code)]
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
+enum BinaryProperty {
+    Alnum = 44,
+    Alphabetic = 0,
+    AsciiHexDigit = 1,
+    BidiControl = 2,
+    BidiMirrored = 3,
+    Blank = 45,
+    Cased = 49,
+    CaseIgnorable = 50,
+    CaseSensitive = 34,
+    ChangesWhenCasefolded = 54,
+    ChangesWhenCasemapped = 55,
+    ChangesWhenLowercased = 51,
+    ChangesWhenNfkcCasefolded = 56,
+    ChangesWhenTitlecased = 53,
+    ChangesWhenUppercased = 52,
+    Dash = 4,
+    DefaultIgnorableCodePoint = 5,
+    Deprecated = 6,
+    Diacritic = 7,
+    Emoji = 57,
+    EmojiComponent = 61,
+    EmojiModifier = 59,
+    EmojiModifierBase = 60,
+    EmojiPresentation = 58,
+    ExtendedPictographic = 64,
+    Extender = 8,
+    FullCompositionExclusion = 9,
+    Graph = 46,
+    GraphemeBase = 10,
+    GraphemeExtend = 11,
+    GraphemeLink = 12,
+    HexDigit = 13,
+    Hyphen = 14,
+    IdContinue = 15,
+    Ideographic = 17,
+    IdsBinaryOperator = 18,
+    IdStart = 16,
+    IdsTrinaryOperator = 19,
+    JoinControl = 20,
+    LogicalOrderException = 21,
+    Lowercase = 22,
+    Math = 23,
+    NfcInert = 39,
+    NfdInert = 37,
+    NfkcInert = 40,
+    NfkdInert = 38,
+    NoncharacterCodePoint = 24,
+    PatternSyntax = 42,
+    PatternWhiteSpace = 43,
+    PrependedConcatenationMark = 63,
+    Print = 47,
+    QuotationMark = 25,
+    Radical = 26,
+    RegionalIndicator = 62,
+    SegmentStarter = 41,
+    SentenceTerminal = 35,
+    SoftDotted = 27,
+    TerminalPunctuation = 28,
+    UnifiedIdeograph = 29,
+    Uppercase = 30,
+    VariationSelector = 36,
+    WhiteSpace = 31,
+    Xdigit = 48,
+    XidContinue = 32,
+    XidStart = 33,
+}
+
+/// This type can represent any binary property over strings.
+///
+/// This is intended to be used in situations where the exact unicode property needed is
+/// only known at runtime, for example in regex engines.
+///
+/// The values are intended to be identical to ICU4C's UProperty enum
+#[non_exhaustive]
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
+#[allow(dead_code)]
+#[allow(missing_docs)]
+enum StringBinaryProperty {
+    BasicEmoji = 65,
+    EmojiKeycapSequence = 66,
+    RgiEmoji = 71,
+    RgiEmojiFlagSequence = 68,
+    RgiEmojiModifierSequence = 67,
+    RgiEmojiTagSequence = 69,
+    RgiEmojiZWJSequence = 70,
+}
+
+/// This type can represent any enumerated Unicode property.
+///
+/// This is intended to be used in situations where the exact unicode property needed is
+/// only known at runtime, for example in regex engines.
+///
+/// The values are intended to be identical to ICU4C's UProperty enum
+#[non_exhaustive]
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
+#[allow(dead_code)]
+#[allow(missing_docs)]
+enum EnumeratedProperty {
+    BidiClass = 0x1000,
+    BidiPairedBracketType = 0x1015,
+    Block = 0x1001,
+    CombiningClass = 0x1002,
+    DecompositionType = 0x1003,
+    EastAsianWidth = 0x1004,
+    GeneralCategory = 0x1005,
+    GraphemeClusterBreak = 0x1012,
+    HangulSyllableType = 0x100B,
+    IndicConjunctBreak = 0x101A,
+    IndicPositionalCategory = 0x1016,
+    IndicSyllabicCategory = 0x1017,
+    JoiningGroup = 0x1006,
+    JoiningType = 0x1007,
+    LeadCanonicalCombiningClass = 0x1010,
+    LineBreak = 0x1008,
+    NFCQuickCheck = 0x100E,
+    NFDQuickCheck = 0x100C,
+    NFKCQuickCheck = 0x100F,
+    NFKDQuickCheck = 0x100D,
+    NumericType = 0x1009,
+    Script = 0x100A,
+    SentenceBreak = 0x1013,
+    TrailCanonicalCombiningClass = 0x1011,
+    VerticalOrientation = 0x1018,
+    WordBreak = 0x1014,
+}
+
+/// This type can represent any Unicode mask property.
+///
+/// This is intended to be used in situations where the exact unicode property needed is
+/// only known at runtime, for example in regex engines.
+///
+/// The values are intended to be identical to ICU4C's UProperty enum
+#[non_exhaustive]
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
+#[allow(dead_code)]
+#[allow(missing_docs)]
+enum MaskProperty {
+    GeneralCategoryMask = 0x2000,
+}
+
+/// This type can represent any numeric Unicode property.
+///
+/// This is intended to be used in situations where the exact unicode property needed is
+/// only known at runtime, for example in regex engines.
+///
+/// The values are intended to be identical to ICU4C's UProperty enum
+#[non_exhaustive]
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
+#[allow(dead_code)]
+#[allow(missing_docs)]
+enum NumericProperty {
+    NumericValue = 0x3000,
+}
+
+/// This type can represent any Unicode string property.
+///
+/// This is intended to be used in situations where the exact unicode property needed is
+/// only known at runtime, for example in regex engines.
+///
+/// The values are intended to be identical to ICU4C's UProperty enum
+#[non_exhaustive]
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
+#[allow(dead_code)]
+#[allow(missing_docs)]
+enum StringProperty {
+    Age = 0x4000,
+    BidiMirroringGlyph = 0x4001,
+    BidiPairedBracket = 0x400D,
+    CaseFolding = 0x4002,
+    ISOComment = 0x4003,
+    LowercaseMapping = 0x4004,
+    Name = 0x4005,
+    SimpleCaseFolding = 0x4006,
+    SimpleLowercaseMapping = 0x4007,
+    SimpleTitlecaseMapping = 0x4008,
+    SimpleUppercaseMapping = 0x4009,
+    TitlecaseMapping = 0x400A,
+    Unicode1Name = 0x400B,
+    UppercaseMapping = 0x400C,
+}
+
+#[non_exhaustive]
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
+#[allow(dead_code)]
+#[allow(missing_docs)]
+enum MiscProperty {
+    ScriptExtensions = 0x7000,
+}
+
+impl CodePointSetData {
+    /// Returns a type capable of looking up values for a property specified as a string, as long as it is a
+    /// [binary property listed in ECMA-262][ecma], using strict matching on the names in the spec.
+    ///
+    /// This handles every property required by ECMA-262 `/u` regular expressions, except for:
+    ///
+    /// - `Script` and `General_Category`: handle these directly using property values parsed via
+    ///   [`PropertyParser<GeneralCategory>`] and [`PropertyParser<Script>`]
+    ///   if necessary.
+    /// - `Script_Extensions`: handle this directly using APIs from [`crate::script::ScriptWithExtensions`]
+    /// - `General_Category` mask values: Handle this alongside `General_Category` using [`GeneralCategoryGroup`],
+    ///   using property values parsed via [`PropertyParser<GeneralCategory>`] if necessary
+    /// - `Assigned`, `All`, and `ASCII` pseudoproperties: Handle these using their equivalent sets:
+    ///    - `Any` can be expressed as the range `[\u{0}-\u{10FFFF}]`
+    ///    - `Assigned` can be expressed as the inverse of the set `gc=Cn` (i.e., `\P{gc=Cn}`).
+    ///    - `ASCII` can be expressed as the range `[\u{0}-\u{7F}]`
+    /// - `General_Category` property values can themselves be treated like properties using a shorthand in ECMA262,
+    ///   simply create the corresponding `GeneralCategory` set.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    ///
+    /// ```
+    /// use icu::properties::CodePointSetData;
+    ///
+    /// let emoji = CodePointSetData::new_for_ecma262(b"Emoji")
+    ///     .expect("is an ECMA-262 property");
+    ///
+    /// assert!(emoji.contains('🔥')); // U+1F525 FIRE
+    /// assert!(!emoji.contains('V'));
+    /// ```
+    ///
+    /// [ecma]: https://tc39.es/ecma262/#table-binary-unicode-properties
+    #[cfg(feature = "compiled_data")]
+    pub fn new_for_ecma262(prop: &[u8]) -> Option<crate::CodePointSetDataBorrowed<'static>> {
+        use crate::props::*;
+        Some(match prop {
+            AsciiHexDigit::NAME | AsciiHexDigit::SHORT_NAME => Self::new::<AsciiHexDigit>(),
+            Alphabetic::NAME | Alphabetic::SHORT_NAME => Self::new::<Alphabetic>(),
+            BidiControl::NAME | BidiControl::SHORT_NAME => Self::new::<BidiControl>(),
+            BidiMirrored::NAME | BidiMirrored::SHORT_NAME => Self::new::<BidiMirrored>(),
+            CaseIgnorable::NAME | CaseIgnorable::SHORT_NAME => Self::new::<CaseIgnorable>(),
+            #[allow(unreachable_patterns)] // no short name
+            Cased::NAME | Cased::SHORT_NAME => Self::new::<Cased>(),
+            ChangesWhenCasefolded::NAME | ChangesWhenCasefolded::SHORT_NAME => {
+                Self::new::<ChangesWhenCasefolded>()
+            }
+            ChangesWhenCasemapped::NAME | ChangesWhenCasemapped::SHORT_NAME => {
+                Self::new::<ChangesWhenCasemapped>()
+            }
+            ChangesWhenLowercased::NAME | ChangesWhenLowercased::SHORT_NAME => {
+                Self::new::<ChangesWhenLowercased>()
+            }
+            ChangesWhenNfkcCasefolded::NAME | ChangesWhenNfkcCasefolded::SHORT_NAME => {
+                Self::new::<ChangesWhenNfkcCasefolded>()
+            }
+            ChangesWhenTitlecased::NAME | ChangesWhenTitlecased::SHORT_NAME => {
+                Self::new::<ChangesWhenTitlecased>()
+            }
+            ChangesWhenUppercased::NAME | ChangesWhenUppercased::SHORT_NAME => {
+                Self::new::<ChangesWhenUppercased>()
+            }
+            #[allow(unreachable_patterns)] // no short name
+            Dash::NAME | Dash::SHORT_NAME => Self::new::<Dash>(),
+            DefaultIgnorableCodePoint::NAME | DefaultIgnorableCodePoint::SHORT_NAME => {
+                Self::new::<DefaultIgnorableCodePoint>()
+            }
+            Deprecated::NAME | Deprecated::SHORT_NAME => Self::new::<Deprecated>(),
+            Diacritic::NAME | Diacritic::SHORT_NAME => Self::new::<Diacritic>(),
+            #[allow(unreachable_patterns)] // no short name
+            Emoji::NAME | Emoji::SHORT_NAME => Self::new::<Emoji>(),
+            EmojiComponent::NAME | EmojiComponent::SHORT_NAME => Self::new::<EmojiComponent>(),
+            EmojiModifier::NAME | EmojiModifier::SHORT_NAME => Self::new::<EmojiModifier>(),
+            EmojiModifierBase::NAME | EmojiModifierBase::SHORT_NAME => {
+                Self::new::<EmojiModifierBase>()
+            }
+            EmojiPresentation::NAME | EmojiPresentation::SHORT_NAME => {
+                Self::new::<EmojiPresentation>()
+            }
+            ExtendedPictographic::NAME | ExtendedPictographic::SHORT_NAME => {
+                Self::new::<ExtendedPictographic>()
+            }
+            Extender::NAME | Extender::SHORT_NAME => Self::new::<Extender>(),
+            GraphemeBase::NAME | GraphemeBase::SHORT_NAME => Self::new::<GraphemeBase>(),
+            GraphemeExtend::NAME | GraphemeExtend::SHORT_NAME => Self::new::<GraphemeExtend>(),
+            HexDigit::NAME | HexDigit::SHORT_NAME => Self::new::<HexDigit>(),
+            IdsBinaryOperator::NAME | IdsBinaryOperator::SHORT_NAME => {
+                Self::new::<IdsBinaryOperator>()
+            }
+            IdsTrinaryOperator::NAME | IdsTrinaryOperator::SHORT_NAME => {
+                Self::new::<IdsTrinaryOperator>()
+            }
+            IdContinue::NAME | IdContinue::SHORT_NAME => Self::new::<IdContinue>(),
+            IdStart::NAME | IdStart::SHORT_NAME => Self::new::<IdStart>(),
+            Ideographic::NAME | Ideographic::SHORT_NAME => Self::new::<Ideographic>(),
+            JoinControl::NAME | JoinControl::SHORT_NAME => Self::new::<JoinControl>(),
+            LogicalOrderException::NAME | LogicalOrderException::SHORT_NAME => {
+                Self::new::<LogicalOrderException>()
+            }
+            Lowercase::NAME | Lowercase::SHORT_NAME => Self::new::<Lowercase>(),
+            #[allow(unreachable_patterns)] // no short name
+            Math::NAME | Math::SHORT_NAME => Self::new::<Math>(),
+            NoncharacterCodePoint::NAME | NoncharacterCodePoint::SHORT_NAME => {
+                Self::new::<NoncharacterCodePoint>()
+            }
+            PatternSyntax::NAME | PatternSyntax::SHORT_NAME => Self::new::<PatternSyntax>(),
+            PatternWhiteSpace::NAME | PatternWhiteSpace::SHORT_NAME => {
+                Self::new::<PatternWhiteSpace>()
+            }
+            QuotationMark::NAME | QuotationMark::SHORT_NAME => Self::new::<QuotationMark>(),
+            #[allow(unreachable_patterns)] // no short name
+            Radical::NAME | Radical::SHORT_NAME => Self::new::<Radical>(),
+            RegionalIndicator::NAME | RegionalIndicator::SHORT_NAME => {
+                Self::new::<RegionalIndicator>()
+            }
+            SentenceTerminal::NAME | SentenceTerminal::SHORT_NAME => {
+                Self::new::<SentenceTerminal>()
+            }
+            SoftDotted::NAME | SoftDotted::SHORT_NAME => Self::new::<SoftDotted>(),
+            TerminalPunctuation::NAME | TerminalPunctuation::SHORT_NAME => {
+                Self::new::<TerminalPunctuation>()
+            }
+            UnifiedIdeograph::NAME | UnifiedIdeograph::SHORT_NAME => {
+                Self::new::<UnifiedIdeograph>()
+            }
+            Uppercase::NAME | Uppercase::SHORT_NAME => Self::new::<Uppercase>(),
+            VariationSelector::NAME | VariationSelector::SHORT_NAME => {
+                Self::new::<VariationSelector>()
+            }
+            WhiteSpace::NAME | WhiteSpace::SHORT_NAME => Self::new::<WhiteSpace>(),
+            XidContinue::NAME | XidContinue::SHORT_NAME => Self::new::<XidContinue>(),
+            XidStart::NAME | XidStart::SHORT_NAME => Self::new::<XidStart>(),
+            // Not an ECMA-262 property
+            _ => return None,
+        })
+    }
+
+    icu_provider::gen_buffer_data_constructors!(
+        (prop: &[u8]) -> result: Option<Result<Self, DataError>>,
+        functions: [
+            new_for_ecma262: skip,
+            try_new_for_ecma262_with_buffer_provider,
+            try_new_for_ecma262_unstable,
+            Self,
+        ]
+    );
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new_for_ecma262)]
+    pub fn try_new_for_ecma262_unstable<P>(
+        provider: &P,
+        prop: &[u8],
+    ) -> Option<Result<Self, DataError>>
+    where
+        P: ?Sized
+            + DataProvider<PropertyBinaryAsciiHexDigitV1>
+            + DataProvider<PropertyBinaryAlphabeticV1>
+            + DataProvider<PropertyBinaryBidiControlV1>
+            + DataProvider<PropertyBinaryBidiMirroredV1>
+            + DataProvider<PropertyBinaryCaseIgnorableV1>
+            + DataProvider<PropertyBinaryCasedV1>
+            + DataProvider<PropertyBinaryChangesWhenCasefoldedV1>
+            + DataProvider<PropertyBinaryChangesWhenCasemappedV1>
+            + DataProvider<PropertyBinaryChangesWhenLowercasedV1>
+            + DataProvider<PropertyBinaryChangesWhenNfkcCasefoldedV1>
+            + DataProvider<PropertyBinaryChangesWhenTitlecasedV1>
+            + DataProvider<PropertyBinaryChangesWhenUppercasedV1>
+            + DataProvider<PropertyBinaryDashV1>
+            + DataProvider<PropertyBinaryDefaultIgnorableCodePointV1>
+            + DataProvider<PropertyBinaryDeprecatedV1>
+            + DataProvider<PropertyBinaryDiacriticV1>
+            + DataProvider<PropertyBinaryEmojiV1>
+            + DataProvider<PropertyBinaryEmojiComponentV1>
+            + DataProvider<PropertyBinaryEmojiModifierV1>
+            + DataProvider<PropertyBinaryEmojiModifierBaseV1>
+            + DataProvider<PropertyBinaryEmojiPresentationV1>
+            + DataProvider<PropertyBinaryExtendedPictographicV1>
+            + DataProvider<PropertyBinaryExtenderV1>
+            + DataProvider<PropertyBinaryGraphemeBaseV1>
+            + DataProvider<PropertyBinaryGraphemeExtendV1>
+            + DataProvider<PropertyBinaryHexDigitV1>
+            + DataProvider<PropertyBinaryIdsBinaryOperatorV1>
+            + DataProvider<PropertyBinaryIdsTrinaryOperatorV1>
+            + DataProvider<PropertyBinaryIdContinueV1>
+            + DataProvider<PropertyBinaryIdStartV1>
+            + DataProvider<PropertyBinaryIdeographicV1>
+            + DataProvider<PropertyBinaryJoinControlV1>
+            + DataProvider<PropertyBinaryLogicalOrderExceptionV1>
+            + DataProvider<PropertyBinaryLowercaseV1>
+            + DataProvider<PropertyBinaryMathV1>
+            + DataProvider<PropertyBinaryNoncharacterCodePointV1>
+            + DataProvider<PropertyBinaryPatternSyntaxV1>
+            + DataProvider<PropertyBinaryPatternWhiteSpaceV1>
+            + DataProvider<PropertyBinaryQuotationMarkV1>
+            + DataProvider<PropertyBinaryRadicalV1>
+            + DataProvider<PropertyBinaryRegionalIndicatorV1>
+            + DataProvider<PropertyBinarySentenceTerminalV1>
+            + DataProvider<PropertyBinarySoftDottedV1>
+            + DataProvider<PropertyBinaryTerminalPunctuationV1>
+            + DataProvider<PropertyBinaryUnifiedIdeographV1>
+            + DataProvider<PropertyBinaryUppercaseV1>
+            + DataProvider<PropertyBinaryVariationSelectorV1>
+            + DataProvider<PropertyBinaryWhiteSpaceV1>
+            + DataProvider<PropertyBinaryXidContinueV1>
+            + DataProvider<PropertyBinaryXidStartV1>,
+    {
+        use crate::props::*;
+        Some(match prop {
+            AsciiHexDigit::NAME | AsciiHexDigit::SHORT_NAME => {
+                Self::try_new_unstable::<AsciiHexDigit>(provider)
+            }
+            Alphabetic::NAME | Alphabetic::SHORT_NAME => {
+                Self::try_new_unstable::<Alphabetic>(provider)
+            }
+            BidiControl::NAME | BidiControl::SHORT_NAME => {
+                Self::try_new_unstable::<BidiControl>(provider)
+            }
+            BidiMirrored::NAME | BidiMirrored::SHORT_NAME => {
+                Self::try_new_unstable::<BidiMirrored>(provider)
+            }
+            CaseIgnorable::NAME | CaseIgnorable::SHORT_NAME => {
+                Self::try_new_unstable::<CaseIgnorable>(provider)
+            }
+            #[allow(unreachable_patterns)] // no short name
+            Cased::NAME | Cased::SHORT_NAME => Self::try_new_unstable::<Cased>(provider),
+            ChangesWhenCasefolded::NAME | ChangesWhenCasefolded::SHORT_NAME => {
+                Self::try_new_unstable::<ChangesWhenCasefolded>(provider)
+            }
+            ChangesWhenCasemapped::NAME | ChangesWhenCasemapped::SHORT_NAME => {
+                Self::try_new_unstable::<ChangesWhenCasemapped>(provider)
+            }
+            ChangesWhenLowercased::NAME | ChangesWhenLowercased::SHORT_NAME => {
+                Self::try_new_unstable::<ChangesWhenLowercased>(provider)
+            }
+            ChangesWhenNfkcCasefolded::NAME | ChangesWhenNfkcCasefolded::SHORT_NAME => {
+                Self::try_new_unstable::<ChangesWhenNfkcCasefolded>(provider)
+            }
+            ChangesWhenTitlecased::NAME | ChangesWhenTitlecased::SHORT_NAME => {
+                Self::try_new_unstable::<ChangesWhenTitlecased>(provider)
+            }
+            ChangesWhenUppercased::NAME | ChangesWhenUppercased::SHORT_NAME => {
+                Self::try_new_unstable::<ChangesWhenUppercased>(provider)
+            }
+            #[allow(unreachable_patterns)] // no short name
+            Dash::NAME | Dash::SHORT_NAME => Self::try_new_unstable::<Dash>(provider),
+            DefaultIgnorableCodePoint::NAME | DefaultIgnorableCodePoint::SHORT_NAME => {
+                Self::try_new_unstable::<DefaultIgnorableCodePoint>(provider)
+            }
+            Deprecated::NAME | Deprecated::SHORT_NAME => {
+                Self::try_new_unstable::<Deprecated>(provider)
+            }
+            Diacritic::NAME | Diacritic::SHORT_NAME => {
+                Self::try_new_unstable::<Diacritic>(provider)
+            }
+            #[allow(unreachable_patterns)] // no short name
+            Emoji::NAME | Emoji::SHORT_NAME => Self::try_new_unstable::<Emoji>(provider),
+            EmojiComponent::NAME | EmojiComponent::SHORT_NAME => {
+                Self::try_new_unstable::<EmojiComponent>(provider)
+            }
+            EmojiModifier::NAME | EmojiModifier::SHORT_NAME => {
+                Self::try_new_unstable::<EmojiModifier>(provider)
+            }
+            EmojiModifierBase::NAME | EmojiModifierBase::SHORT_NAME => {
+                Self::try_new_unstable::<EmojiModifierBase>(provider)
+            }
+            EmojiPresentation::NAME | EmojiPresentation::SHORT_NAME => {
+                Self::try_new_unstable::<EmojiPresentation>(provider)
+            }
+            ExtendedPictographic::NAME | ExtendedPictographic::SHORT_NAME => {
+                Self::try_new_unstable::<ExtendedPictographic>(provider)
+            }
+            Extender::NAME | Extender::SHORT_NAME => Self::try_new_unstable::<Extender>(provider),
+            GraphemeBase::NAME | GraphemeBase::SHORT_NAME => {
+                Self::try_new_unstable::<GraphemeBase>(provider)
+            }
+            GraphemeExtend::NAME | GraphemeExtend::SHORT_NAME => {
+                Self::try_new_unstable::<GraphemeExtend>(provider)
+            }
+            HexDigit::NAME | HexDigit::SHORT_NAME => Self::try_new_unstable::<HexDigit>(provider),
+            IdsBinaryOperator::NAME | IdsBinaryOperator::SHORT_NAME => {
+                Self::try_new_unstable::<IdsBinaryOperator>(provider)
+            }
+            IdsTrinaryOperator::NAME | IdsTrinaryOperator::SHORT_NAME => {
+                Self::try_new_unstable::<IdsTrinaryOperator>(provider)
+            }
+            IdContinue::NAME | IdContinue::SHORT_NAME => {
+                Self::try_new_unstable::<IdContinue>(provider)
+            }
+            IdStart::NAME | IdStart::SHORT_NAME => Self::try_new_unstable::<IdStart>(provider),
+            Ideographic::NAME | Ideographic::SHORT_NAME => {
+                Self::try_new_unstable::<Ideographic>(provider)
+            }
+            JoinControl::NAME | JoinControl::SHORT_NAME => {
+                Self::try_new_unstable::<JoinControl>(provider)
+            }
+            LogicalOrderException::NAME | LogicalOrderException::SHORT_NAME => {
+                Self::try_new_unstable::<LogicalOrderException>(provider)
+            }
+            Lowercase::NAME | Lowercase::SHORT_NAME => {
+                Self::try_new_unstable::<Lowercase>(provider)
+            }
+            #[allow(unreachable_patterns)] // no short name
+            Math::NAME | Math::SHORT_NAME => Self::try_new_unstable::<Math>(provider),
+            NoncharacterCodePoint::NAME | NoncharacterCodePoint::SHORT_NAME => {
+                Self::try_new_unstable::<NoncharacterCodePoint>(provider)
+            }
+            PatternSyntax::NAME | PatternSyntax::SHORT_NAME => {
+                Self::try_new_unstable::<PatternSyntax>(provider)
+            }
+            PatternWhiteSpace::NAME | PatternWhiteSpace::SHORT_NAME => {
+                Self::try_new_unstable::<PatternWhiteSpace>(provider)
+            }
+            QuotationMark::NAME | QuotationMark::SHORT_NAME => {
+                Self::try_new_unstable::<QuotationMark>(provider)
+            }
+            #[allow(unreachable_patterns)] // no short name
+            Radical::NAME | Radical::SHORT_NAME => Self::try_new_unstable::<Radical>(provider),
+            RegionalIndicator::NAME | RegionalIndicator::SHORT_NAME => {
+                Self::try_new_unstable::<RegionalIndicator>(provider)
+            }
+            SentenceTerminal::NAME | SentenceTerminal::SHORT_NAME => {
+                Self::try_new_unstable::<SentenceTerminal>(provider)
+            }
+            SoftDotted::NAME | SoftDotted::SHORT_NAME => {
+                Self::try_new_unstable::<SoftDotted>(provider)
+            }
+            TerminalPunctuation::NAME | TerminalPunctuation::SHORT_NAME => {
+                Self::try_new_unstable::<TerminalPunctuation>(provider)
+            }
+            UnifiedIdeograph::NAME | UnifiedIdeograph::SHORT_NAME => {
+                Self::try_new_unstable::<UnifiedIdeograph>(provider)
+            }
+            Uppercase::NAME | Uppercase::SHORT_NAME => {
+                Self::try_new_unstable::<Uppercase>(provider)
+            }
+            VariationSelector::NAME | VariationSelector::SHORT_NAME => {
+                Self::try_new_unstable::<VariationSelector>(provider)
+            }
+            WhiteSpace::NAME | WhiteSpace::SHORT_NAME => {
+                Self::try_new_unstable::<WhiteSpace>(provider)
+            }
+            XidContinue::NAME | XidContinue::SHORT_NAME => {
+                Self::try_new_unstable::<XidContinue>(provider)
+            }
+            XidStart::NAME | XidStart::SHORT_NAME => Self::try_new_unstable::<XidStart>(provider),
+            // Not an ECMA-262 property
+            _ => return None,
+        })
+    }
+}
diff --git a/vendor/icu_properties/src/script.rs b/vendor/icu_properties/src/script.rs
new file mode 100644
index 00000000..a3b5de0b
--- /dev/null
+++ b/vendor/icu_properties/src/script.rs
@@ -0,0 +1,713 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Data and APIs for supporting Script_Extensions property
+//! values in an efficient structure.
+
+use crate::props::Script;
+use crate::provider::*;
+
+#[cfg(feature = "alloc")]
+use core::iter::FromIterator;
+use core::ops::RangeInclusive;
+#[cfg(feature = "alloc")]
+use icu_collections::codepointinvlist::CodePointInversionList;
+use icu_provider::prelude::*;
+use zerovec::{ule::AsULE, ZeroSlice};
+
+/// The number of bits at the low-end of a `ScriptWithExt` value used for
+/// storing the `Script` value (or `extensions` index).
+const SCRIPT_VAL_LENGTH: u16 = 10;
+
+/// The bit mask necessary to retrieve the `Script` value (or `extensions` index)
+/// from a `ScriptWithExt` value.
+const SCRIPT_X_SCRIPT_VAL: u16 = (1 << SCRIPT_VAL_LENGTH) - 1;
+
+/// An internal-use only pseudo-property that represents the values stored in
+/// the trie of the special data structure [`ScriptWithExtensionsProperty`].
+///
+/// Note: The will assume a 12-bit layout. The 2 higher order bits in positions
+/// 11..10 will indicate how to deduce the Script value and Script_Extensions,
+/// and the lower 10 bits 9..0 indicate either the Script value or the index
+/// into the `extensions` structure.
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[cfg_attr(feature = "datagen", derive(databake::Bake))]
+#[cfg_attr(feature = "datagen", databake(path = icu_properties::script))]
+#[repr(transparent)]
+#[doc(hidden)]
+// `ScriptWithExt` not intended as public-facing but for `ScriptWithExtensionsProperty` constructor
+#[allow(clippy::exhaustive_structs)] // this type is stable
+pub struct ScriptWithExt(pub u16);
+
+#[allow(missing_docs)] // These constants don't need individual documentation.
+#[allow(non_upper_case_globals)]
+#[doc(hidden)] // `ScriptWithExt` not intended as public-facing but for `ScriptWithExtensionsProperty` constructor
+impl ScriptWithExt {
+    pub const Unknown: ScriptWithExt = ScriptWithExt(0);
+}
+
+impl AsULE for ScriptWithExt {
+    type ULE = <u16 as AsULE>::ULE;
+
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        Script(self.0).to_unaligned()
+    }
+
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        ScriptWithExt(Script::from_unaligned(unaligned).0)
+    }
+}
+
+#[doc(hidden)] // `ScriptWithExt` not intended as public-facing but for `ScriptWithExtensionsProperty` constructor
+impl ScriptWithExt {
+    /// Returns whether the [`ScriptWithExt`] value has Script_Extensions and
+    /// also indicates a Script value of [`Script::Common`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::script::ScriptWithExt;
+    ///
+    /// assert!(ScriptWithExt(0x04FF).is_common());
+    /// assert!(ScriptWithExt(0x0400).is_common());
+    ///
+    /// assert!(!ScriptWithExt(0x08FF).is_common());
+    /// assert!(!ScriptWithExt(0x0800).is_common());
+    ///
+    /// assert!(!ScriptWithExt(0x0CFF).is_common());
+    /// assert!(!ScriptWithExt(0x0C00).is_common());
+    ///
+    /// assert!(!ScriptWithExt(0xFF).is_common());
+    /// assert!(!ScriptWithExt(0x0).is_common());
+    /// ```
+    pub fn is_common(&self) -> bool {
+        self.0 >> SCRIPT_VAL_LENGTH == 1
+    }
+
+    /// Returns whether the [`ScriptWithExt`] value has Script_Extensions and
+    /// also indicates a Script value of [`Script::Inherited`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::script::ScriptWithExt;
+    ///
+    /// assert!(!ScriptWithExt(0x04FF).is_inherited());
+    /// assert!(!ScriptWithExt(0x0400).is_inherited());
+    ///
+    /// assert!(ScriptWithExt(0x08FF).is_inherited());
+    /// assert!(ScriptWithExt(0x0800).is_inherited());
+    ///
+    /// assert!(!ScriptWithExt(0x0CFF).is_inherited());
+    /// assert!(!ScriptWithExt(0x0C00).is_inherited());
+    ///
+    /// assert!(!ScriptWithExt(0xFF).is_inherited());
+    /// assert!(!ScriptWithExt(0x0).is_inherited());
+    /// ```
+    pub fn is_inherited(&self) -> bool {
+        self.0 >> SCRIPT_VAL_LENGTH == 2
+    }
+
+    /// Returns whether the [`ScriptWithExt`] value has Script_Extensions and
+    /// also indicates that the Script value is neither [`Script::Common`] nor
+    /// [`Script::Inherited`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::script::ScriptWithExt;
+    ///
+    /// assert!(!ScriptWithExt(0x04FF).is_other());
+    /// assert!(!ScriptWithExt(0x0400).is_other());
+    ///
+    /// assert!(!ScriptWithExt(0x08FF).is_other());
+    /// assert!(!ScriptWithExt(0x0800).is_other());
+    ///
+    /// assert!(ScriptWithExt(0x0CFF).is_other());
+    /// assert!(ScriptWithExt(0x0C00).is_other());
+    ///
+    /// assert!(!ScriptWithExt(0xFF).is_other());
+    /// assert!(!ScriptWithExt(0x0).is_other());
+    /// ```
+    pub fn is_other(&self) -> bool {
+        self.0 >> SCRIPT_VAL_LENGTH == 3
+    }
+
+    /// Returns whether the [`ScriptWithExt`] value has Script_Extensions.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::script::ScriptWithExt;
+    ///
+    /// assert!(ScriptWithExt(0x04FF).has_extensions());
+    /// assert!(ScriptWithExt(0x0400).has_extensions());
+    ///
+    /// assert!(ScriptWithExt(0x08FF).has_extensions());
+    /// assert!(ScriptWithExt(0x0800).has_extensions());
+    ///
+    /// assert!(ScriptWithExt(0x0CFF).has_extensions());
+    /// assert!(ScriptWithExt(0x0C00).has_extensions());
+    ///
+    /// assert!(!ScriptWithExt(0xFF).has_extensions());
+    /// assert!(!ScriptWithExt(0x0).has_extensions());
+    /// ```
+    pub fn has_extensions(&self) -> bool {
+        let high_order_bits = self.0 >> SCRIPT_VAL_LENGTH;
+        high_order_bits > 0
+    }
+}
+
+impl From<ScriptWithExt> for u32 {
+    fn from(swe: ScriptWithExt) -> Self {
+        swe.0 as u32
+    }
+}
+
+impl From<ScriptWithExt> for Script {
+    fn from(swe: ScriptWithExt) -> Self {
+        Script(swe.0)
+    }
+}
+
+/// A struct that wraps a [`Script`] array, such as in the return value for
+/// [`get_script_extensions_val()`](ScriptWithExtensionsBorrowed::get_script_extensions_val).
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+pub struct ScriptExtensionsSet<'a> {
+    values: &'a ZeroSlice<Script>,
+}
+
+impl<'a> ScriptExtensionsSet<'a> {
+    /// Returns whether this set contains the given script.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::props::Script;
+    /// use icu::properties::script::ScriptWithExtensions;
+    /// let swe = ScriptWithExtensions::new();
+    ///
+    /// assert!(swe
+    ///     .get_script_extensions_val('\u{11303}') // GRANTHA SIGN VISARGA
+    ///     .contains(&Script::Grantha));
+    /// ```
+    pub fn contains(&self, x: &Script) -> bool {
+        ZeroSlice::binary_search(self.values, x).is_ok()
+    }
+
+    /// Gets an iterator over the elements.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu::properties::props::Script;
+    /// use icu::properties::script::ScriptWithExtensions;
+    /// let swe = ScriptWithExtensions::new();
+    ///
+    /// assert_eq!(
+    ///     swe.get_script_extensions_val('௫') // U+0BEB TAMIL DIGIT FIVE
+    ///         .iter()
+    ///         .collect::<Vec<_>>(),
+    ///     [Script::Tamil, Script::Grantha]
+    /// );
+    /// ```
+    pub fn iter(&self) -> impl DoubleEndedIterator<Item = Script> + 'a {
+        ZeroSlice::iter(self.values)
+    }
+
+    /// For accessing this set as an array instead of an iterator
+    #[doc(hidden)] // used by FFI code
+    pub fn array_len(&self) -> usize {
+        self.values.len()
+    }
+    /// For accessing this set as an array instead of an iterator
+    #[doc(hidden)] // used by FFI code
+    pub fn array_get(&self, index: usize) -> Option<Script> {
+        self.values.get(index)
+    }
+}
+
+/// A struct that represents the data for the Script and Script_Extensions properties.
+///
+/// ✨ *Enabled with the `compiled_data` Cargo feature.*
+///
+/// [📚 Help choosing a constructor](icu_provider::constructors)
+///
+/// Most useful methods are on [`ScriptWithExtensionsBorrowed`] obtained by calling [`ScriptWithExtensions::as_borrowed()`]
+///
+/// # Examples
+///
+/// ```
+/// use icu::properties::script::ScriptWithExtensions;
+/// use icu::properties::props::Script;
+/// let swe = ScriptWithExtensions::new();
+///
+/// // get the `Script` property value
+/// assert_eq!(swe.get_script_val('ـ'), Script::Common); // U+0640 ARABIC TATWEEL
+/// assert_eq!(swe.get_script_val('\u{0650}'), Script::Inherited); // U+0650 ARABIC KASRA
+/// assert_eq!(swe.get_script_val('٠'), Script::Arabic); // // U+0660 ARABIC-INDIC DIGIT ZERO
+/// assert_eq!(swe.get_script_val('ﷲ'), Script::Arabic); // U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
+///
+/// // get the `Script_Extensions` property value
+/// assert_eq!(
+///     swe.get_script_extensions_val('ـ') // U+0640 ARABIC TATWEEL
+///         .iter().collect::<Vec<_>>(),
+///     [Script::Arabic, Script::Syriac, Script::Mandaic, Script::Manichaean,
+///          Script::PsalterPahlavi, Script::Adlam, Script::HanifiRohingya, Script::Sogdian,
+///          Script::OldUyghur]
+/// );
+/// assert_eq!(
+///     swe.get_script_extensions_val('🥳') // U+1F973 FACE WITH PARTY HORN AND PARTY HAT
+///         .iter().collect::<Vec<_>>(),
+///     [Script::Common]
+/// );
+/// assert_eq!(
+///     swe.get_script_extensions_val('\u{200D}') // ZERO WIDTH JOINER
+///         .iter().collect::<Vec<_>>(),
+///     [Script::Inherited]
+/// );
+/// assert_eq!(
+///     swe.get_script_extensions_val('௫') // U+0BEB TAMIL DIGIT FIVE
+///         .iter().collect::<Vec<_>>(),
+///     [Script::Tamil, Script::Grantha]
+/// );
+///
+/// // check containment of a `Script` value in the `Script_Extensions` value
+/// // U+0650 ARABIC KASRA
+/// assert!(!swe.has_script('\u{0650}', Script::Inherited)); // main Script value
+/// assert!(swe.has_script('\u{0650}', Script::Arabic));
+/// assert!(swe.has_script('\u{0650}', Script::Syriac));
+/// assert!(!swe.has_script('\u{0650}', Script::Thaana));
+///
+/// // get a `CodePointInversionList` for when `Script` value is contained in `Script_Extensions` value
+/// let syriac = swe.get_script_extensions_set(Script::Syriac);
+/// assert!(syriac.contains('\u{0650}')); // ARABIC KASRA
+/// assert!(!syriac.contains('٠')); // ARABIC-INDIC DIGIT ZERO
+/// assert!(!syriac.contains('ﷲ')); // ARABIC LIGATURE ALLAH ISOLATED FORM
+/// assert!(syriac.contains('܀')); // SYRIAC END OF PARAGRAPH
+/// assert!(syriac.contains('\u{074A}')); // SYRIAC BARREKH
+/// ```
+#[derive(Debug)]
+pub struct ScriptWithExtensions {
+    data: DataPayload<PropertyScriptWithExtensionsV1>,
+}
+
+/// A borrowed wrapper around script extension data, returned by
+/// [`ScriptWithExtensions::as_borrowed()`]. More efficient to query.
+#[derive(Clone, Copy, Debug)]
+pub struct ScriptWithExtensionsBorrowed<'a> {
+    data: &'a ScriptWithExtensionsProperty<'a>,
+}
+
+impl ScriptWithExtensions {
+    /// Creates a new instance of `ScriptWithExtensionsBorrowed` using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    #[allow(clippy::new_ret_no_self)]
+    pub fn new() -> ScriptWithExtensionsBorrowed<'static> {
+        ScriptWithExtensionsBorrowed::new()
+    }
+
+    icu_provider::gen_buffer_data_constructors!(
+        () -> result: Result<ScriptWithExtensions, DataError>,
+        functions: [
+            new: skip,
+            try_new_with_buffer_provider,
+            try_new_unstable,
+            Self,
+        ]
+    );
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::new)]
+    pub fn try_new_unstable(
+        provider: &(impl DataProvider<PropertyScriptWithExtensionsV1> + ?Sized),
+    ) -> Result<Self, DataError> {
+        Ok(ScriptWithExtensions::from_data(
+            provider.load(Default::default())?.payload,
+        ))
+    }
+
+    /// Construct a borrowed version of this type that can be queried.
+    ///
+    /// This avoids a potential small underlying cost per API call (ex: `contains()`) by consolidating it
+    /// up front.
+    #[inline]
+    pub fn as_borrowed(&self) -> ScriptWithExtensionsBorrowed<'_> {
+        ScriptWithExtensionsBorrowed {
+            data: self.data.get(),
+        }
+    }
+
+    /// Construct a new one from loaded data
+    ///
+    /// Typically it is preferable to use getters like [`load_script_with_extensions_unstable()`] instead
+    pub(crate) fn from_data(data: DataPayload<PropertyScriptWithExtensionsV1>) -> Self {
+        Self { data }
+    }
+}
+
+impl<'a> ScriptWithExtensionsBorrowed<'a> {
+    /// Returns the `Script` property value for this code point.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::script::ScriptWithExtensions;
+    /// use icu::properties::props::Script;
+    ///
+    /// let swe = ScriptWithExtensions::new();
+    ///
+    /// // U+0640 ARABIC TATWEEL
+    /// assert_eq!(swe.get_script_val('ـ'), Script::Common); // main Script value
+    /// assert_ne!(swe.get_script_val('ـ'), Script::Arabic);
+    /// assert_ne!(swe.get_script_val('ـ'), Script::Syriac);
+    /// assert_ne!(swe.get_script_val('ـ'), Script::Thaana);
+    ///
+    /// // U+0650 ARABIC KASRA
+    /// assert_eq!(swe.get_script_val('\u{0650}'), Script::Inherited); // main Script value
+    /// assert_ne!(swe.get_script_val('\u{0650}'), Script::Arabic);
+    /// assert_ne!(swe.get_script_val('\u{0650}'), Script::Syriac);
+    /// assert_ne!(swe.get_script_val('\u{0650}'), Script::Thaana);
+    ///
+    /// // U+0660 ARABIC-INDIC DIGIT ZERO
+    /// assert_ne!(swe.get_script_val('٠'), Script::Common);
+    /// assert_eq!(swe.get_script_val('٠'), Script::Arabic); // main Script value
+    /// assert_ne!(swe.get_script_val('٠'), Script::Syriac);
+    /// assert_ne!(swe.get_script_val('٠'), Script::Thaana);
+    ///
+    /// // U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
+    /// assert_ne!(swe.get_script_val('ﷲ'), Script::Common);
+    /// assert_eq!(swe.get_script_val('ﷲ'), Script::Arabic); // main Script value
+    /// assert_ne!(swe.get_script_val('ﷲ'), Script::Syriac);
+    /// assert_ne!(swe.get_script_val('ﷲ'), Script::Thaana);
+    /// ```
+    pub fn get_script_val(self, ch: char) -> Script {
+        self.get_script_val32(ch as u32)
+    }
+
+    /// See [`Self::get_script_val`].
+    pub fn get_script_val32(self, code_point: u32) -> Script {
+        let sc_with_ext = self.data.trie.get32(code_point);
+
+        if sc_with_ext.is_other() {
+            let ext_idx = sc_with_ext.0 & SCRIPT_X_SCRIPT_VAL;
+            let scx_val = self.data.extensions.get(ext_idx as usize);
+            let scx_first_sc = scx_val.and_then(|scx| scx.get(0));
+
+            let default_sc_val = Script::Unknown;
+
+            scx_first_sc.unwrap_or(default_sc_val)
+        } else if sc_with_ext.is_common() {
+            Script::Common
+        } else if sc_with_ext.is_inherited() {
+            Script::Inherited
+        } else {
+            let script_val = sc_with_ext.0;
+            Script(script_val)
+        }
+    }
+    // Returns the Script_Extensions value for a code_point when the trie value
+    // is already known.
+    // This private helper method exists to prevent code duplication in callers like
+    // `get_script_extensions_val`, `get_script_extensions_set`, and `has_script`.
+    fn get_scx_val_using_trie_val(
+        self,
+        sc_with_ext_ule: &'a <ScriptWithExt as AsULE>::ULE,
+    ) -> &'a ZeroSlice<Script> {
+        let sc_with_ext = ScriptWithExt::from_unaligned(*sc_with_ext_ule);
+        if sc_with_ext.is_other() {
+            let ext_idx = sc_with_ext.0 & SCRIPT_X_SCRIPT_VAL;
+            let ext_subarray = self.data.extensions.get(ext_idx as usize);
+            // In the OTHER case, where the 2 higher-order bits of the
+            // `ScriptWithExt` value in the trie doesn't indicate the Script value,
+            // the Script value is copied/inserted into the first position of the
+            // `extensions` array. So we must remove it to return the actual scx array val.
+            let scx_slice = ext_subarray
+                .and_then(|zslice| zslice.as_ule_slice().get(1..))
+                .unwrap_or_default();
+            ZeroSlice::from_ule_slice(scx_slice)
+        } else if sc_with_ext.is_common() || sc_with_ext.is_inherited() {
+            let ext_idx = sc_with_ext.0 & SCRIPT_X_SCRIPT_VAL;
+            let scx_val = self.data.extensions.get(ext_idx as usize);
+            scx_val.unwrap_or_default()
+        } else {
+            // Note: `Script` and `ScriptWithExt` are both represented as the same
+            // u16 value when the `ScriptWithExt` has no higher-order bits set.
+            let script_ule_slice = core::slice::from_ref(sc_with_ext_ule);
+            ZeroSlice::from_ule_slice(script_ule_slice)
+        }
+    }
+    /// Return the `Script_Extensions` property value for this code point.
+    ///
+    /// If `code_point` has Script_Extensions, then return the Script codes in
+    /// the Script_Extensions. In this case, the Script property value
+    /// (normally Common or Inherited) is not included in the [`ScriptExtensionsSet`].
+    ///
+    /// If c does not have Script_Extensions, then the one Script code is put
+    /// into the [`ScriptExtensionsSet`] and also returned.
+    ///
+    /// If c is not a valid code point, then return an empty [`ScriptExtensionsSet`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::script::ScriptWithExtensions;
+    /// use icu::properties::props::Script;
+    ///
+    /// let swe = ScriptWithExtensions::new();
+    ///
+    /// assert_eq!(
+    ///     swe.get_script_extensions_val('𐓐') // U+104D0 OSAGE CAPITAL LETTER KHA
+    ///         .iter()
+    ///         .collect::<Vec<_>>(),
+    ///     [Script::Osage]
+    /// );
+    /// assert_eq!(
+    ///     swe.get_script_extensions_val('🥳') // U+1F973 FACE WITH PARTY HORN AND PARTY HAT
+    ///         .iter()
+    ///         .collect::<Vec<_>>(),
+    ///     [Script::Common]
+    /// );
+    /// assert_eq!(
+    ///     swe.get_script_extensions_val('\u{200D}') // ZERO WIDTH JOINER
+    ///         .iter()
+    ///         .collect::<Vec<_>>(),
+    ///     [Script::Inherited]
+    /// );
+    /// assert_eq!(
+    ///     swe.get_script_extensions_val('௫') // U+0BEB TAMIL DIGIT FIVE
+    ///         .iter()
+    ///         .collect::<Vec<_>>(),
+    ///     [Script::Tamil, Script::Grantha]
+    /// );
+    /// ```
+    pub fn get_script_extensions_val(self, ch: char) -> ScriptExtensionsSet<'a> {
+        self.get_script_extensions_val32(ch as u32)
+    }
+
+    /// See [`Self::get_script_extensions_val`].
+    pub fn get_script_extensions_val32(self, code_point: u32) -> ScriptExtensionsSet<'a> {
+        let sc_with_ext_ule = self.data.trie.get32_ule(code_point);
+
+        ScriptExtensionsSet {
+            values: match sc_with_ext_ule {
+                Some(ule_ref) => self.get_scx_val_using_trie_val(ule_ref),
+                None => ZeroSlice::from_ule_slice(&[]),
+            },
+        }
+    }
+
+    /// Returns whether `script` is contained in the Script_Extensions
+    /// property value if the code_point has Script_Extensions, otherwise
+    /// if the code point does not have Script_Extensions then returns
+    /// whether the Script property value matches.
+    ///
+    /// Some characters are commonly used in multiple scripts. For more information,
+    /// see UAX #24: <http://www.unicode.org/reports/tr24/>.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::script::ScriptWithExtensions;
+    /// use icu::properties::props::Script;
+    ///
+    /// let swe = ScriptWithExtensions::new();
+    ///
+    /// // U+0650 ARABIC KASRA
+    /// assert!(!swe.has_script('\u{0650}', Script::Inherited)); // main Script value
+    /// assert!(swe.has_script('\u{0650}', Script::Arabic));
+    /// assert!(swe.has_script('\u{0650}', Script::Syriac));
+    /// assert!(!swe.has_script('\u{0650}', Script::Thaana));
+    ///
+    /// // U+0660 ARABIC-INDIC DIGIT ZERO
+    /// assert!(!swe.has_script('٠', Script::Common)); // main Script value
+    /// assert!(swe.has_script('٠', Script::Arabic));
+    /// assert!(!swe.has_script('٠', Script::Syriac));
+    /// assert!(swe.has_script('٠', Script::Thaana));
+    ///
+    /// // U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM
+    /// assert!(!swe.has_script('ﷲ', Script::Common));
+    /// assert!(swe.has_script('ﷲ', Script::Arabic)); // main Script value
+    /// assert!(!swe.has_script('ﷲ', Script::Syriac));
+    /// assert!(swe.has_script('ﷲ', Script::Thaana));
+    /// ```
+    pub fn has_script(self, ch: char, script: Script) -> bool {
+        self.has_script32(ch as u32, script)
+    }
+
+    /// See [`Self::has_script`].
+    pub fn has_script32(self, code_point: u32, script: Script) -> bool {
+        let sc_with_ext_ule = if let Some(scwe_ule) = self.data.trie.get32_ule(code_point) {
+            scwe_ule
+        } else {
+            return false;
+        };
+        let sc_with_ext = <ScriptWithExt as AsULE>::from_unaligned(*sc_with_ext_ule);
+
+        if !sc_with_ext.has_extensions() {
+            let script_val = sc_with_ext.0;
+            script == Script(script_val)
+        } else {
+            let scx_val = self.get_scx_val_using_trie_val(sc_with_ext_ule);
+            let script_find = scx_val.iter().find(|&sc| sc == script);
+            script_find.is_some()
+        }
+    }
+
+    /// Returns all of the matching `CodePointMapRange`s for the given [`Script`]
+    /// in which `has_script` will return true for all of the contained code points.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::props::Script;
+    /// use icu::properties::script::ScriptWithExtensions;
+    ///
+    /// let swe = ScriptWithExtensions::new();
+    ///
+    /// let syriac_script_extensions_ranges =
+    ///     swe.get_script_extensions_ranges(Script::Syriac);
+    ///
+    /// let exp_ranges = [
+    ///     0x0303..=0x0304, // COMBINING TILDE..COMBINING MACRON
+    ///     0x0307..=0x0308, // COMBINING DOT ABOVE..COMBINING DIAERESIS
+    ///     0x030A..=0x030A, // COMBINING RING ABOVE
+    ///     0x0320..=0x0320, // COMBINING MINUS SIGN BELOW
+    ///     0x0323..=0x0325, // COMBINING DOT BELOW..COMBINING RING BELOW
+    ///     0x032D..=0x032E, // COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW
+    ///     0x0330..=0x0330, // COMBINING TILDE BELOW
+    ///     0x060C..=0x060C, // ARABIC COMMA
+    ///     0x061B..=0x061C, // ARABIC SEMICOLON, ARABIC LETTER MARK
+    ///     0x061F..=0x061F, // ARABIC QUESTION MARK
+    ///     0x0640..=0x0640, // ARABIC TATWEEL
+    ///     0x064B..=0x0655, // ARABIC FATHATAN..ARABIC HAMZA BELOW
+    ///     0x0670..=0x0670, // ARABIC LETTER SUPERSCRIPT ALEF
+    ///     0x0700..=0x070D, // Syriac block begins at U+0700
+    ///     0x070F..=0x074A, // Syriac block
+    ///     0x074D..=0x074F, // Syriac block ends at U+074F
+    ///     0x0860..=0x086A, // Syriac Supplement block is U+0860..=U+086F
+    ///     0x1DF8..=0x1DF8, // COMBINING DOT ABOVE LEFT
+    ///     0x1DFA..=0x1DFA, // COMBINING DOT BELOW LEFT
+    /// ];
+    ///
+    /// assert_eq!(
+    ///     syriac_script_extensions_ranges.collect::<Vec<_>>(),
+    ///     exp_ranges
+    /// );
+    /// ```
+    pub fn get_script_extensions_ranges(
+        self,
+        script: Script,
+    ) -> impl Iterator<Item = RangeInclusive<u32>> + 'a {
+        self.data
+            .trie
+            .iter_ranges_mapped(move |value| {
+                let sc_with_ext = ScriptWithExt(value.0);
+                if sc_with_ext.has_extensions() {
+                    self.get_scx_val_using_trie_val(&sc_with_ext.to_unaligned())
+                        .iter()
+                        .any(|sc| sc == script)
+                } else {
+                    script == sc_with_ext.into()
+                }
+            })
+            .filter(|v| v.value)
+            .map(|v| v.range)
+    }
+
+    /// Returns a [`CodePointInversionList`] for the given [`Script`] which represents all
+    /// code points for which `has_script` will return true.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu::properties::script::ScriptWithExtensions;
+    /// use icu::properties::props::Script;
+    ///
+    /// let swe = ScriptWithExtensions::new();
+    ///
+    /// let syriac = swe.get_script_extensions_set(Script::Syriac);
+    ///
+    /// assert!(!syriac.contains('؞')); // ARABIC TRIPLE DOT PUNCTUATION MARK
+    /// assert!(syriac.contains('؟')); // ARABIC QUESTION MARK
+    /// assert!(!syriac.contains('ؠ')); // ARABIC LETTER KASHMIRI YEH
+    ///
+    /// assert!(syriac.contains('܀')); // SYRIAC END OF PARAGRAPH
+    /// assert!(syriac.contains('\u{074A}')); // SYRIAC BARREKH
+    /// assert!(!syriac.contains('\u{074B}')); // unassigned
+    /// assert!(syriac.contains('ݏ')); // SYRIAC LETTER SOGDIAN FE
+    /// assert!(!syriac.contains('ݐ')); // ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
+    ///
+    /// assert!(syriac.contains('\u{1DF8}')); // COMBINING DOT ABOVE LEFT
+    /// assert!(!syriac.contains('\u{1DF9}')); // COMBINING WIDE INVERTED BRIDGE BELOW
+    /// assert!(syriac.contains('\u{1DFA}')); // COMBINING DOT BELOW LEFT
+    /// assert!(!syriac.contains('\u{1DFB}')); // COMBINING DELETION MARK
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn get_script_extensions_set(self, script: Script) -> CodePointInversionList<'a> {
+        CodePointInversionList::from_iter(self.get_script_extensions_ranges(script))
+    }
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for ScriptWithExtensionsBorrowed<'static> {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl ScriptWithExtensionsBorrowed<'static> {
+    /// Creates a new instance of `ScriptWithExtensionsBorrowed` using compiled data.
+    ///
+    /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    #[cfg(feature = "compiled_data")]
+    pub fn new() -> Self {
+        Self {
+            data: crate::provider::Baked::SINGLETON_PROPERTY_SCRIPT_WITH_EXTENSIONS_V1,
+        }
+    }
+
+    /// Cheaply converts a [`ScriptWithExtensionsBorrowed<'static>`] into a [`ScriptWithExtensions`].
+    ///
+    /// Note: Due to branching and indirection, using [`ScriptWithExtensions`] might inhibit some
+    /// compile-time optimizations that are possible with [`ScriptWithExtensionsBorrowed`].
+    pub const fn static_to_owned(self) -> ScriptWithExtensions {
+        ScriptWithExtensions {
+            data: DataPayload::from_static_ref(self.data),
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    #[test]
+    /// Regression test for https://github.com/unicode-org/icu4x/issues/6041
+    fn test_scx_regression_6041() {
+        let scripts = ScriptWithExtensions::new()
+            .get_script_extensions_val('\u{2bc}')
+            .iter()
+            .collect::<Vec<_>>();
+        assert_eq!(
+            scripts,
+            [
+                Script::Bengali,
+                Script::Cyrillic,
+                Script::Devanagari,
+                Script::Latin,
+                Script::Thai,
+                Script::Lisu,
+                Script::Toto
+            ]
+        );
+    }
+}
diff --git a/vendor/icu_properties/src/trievalue.rs b/vendor/icu_properties/src/trievalue.rs
new file mode 100644
index 00000000..9b19d8a6
--- /dev/null
+++ b/vendor/icu_properties/src/trievalue.rs
@@ -0,0 +1,313 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::bidi::BidiMirroringGlyph;
+use crate::props::{
+    BidiClass, CanonicalCombiningClass, EastAsianWidth, GeneralCategory, GeneralCategoryGroup,
+    GraphemeClusterBreak, HangulSyllableType, IndicConjunctBreak, IndicSyllabicCategory,
+    JoiningType, LineBreak, Script, SentenceBreak, VerticalOrientation, WordBreak,
+};
+use crate::script::ScriptWithExt;
+use core::convert::TryInto;
+use core::num::TryFromIntError;
+use zerovec::ule::{AsULE, RawBytesULE};
+
+use icu_collections::codepointtrie::TrieValue;
+
+use core::convert::TryFrom;
+
+impl TrieValue for CanonicalCombiningClass {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for BidiClass {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for GeneralCategory {
+    type TryFromU32Error = &'static str;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        // If the u32 is out of range, fall back to u8::MAX, which is out of range of the GeneralCategory enum.
+        GeneralCategory::new_from_u8(i.try_into().unwrap_or(u8::MAX))
+            .ok_or("Cannot parse GeneralCategory from integer")
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self as u8)
+    }
+}
+
+impl TrieValue for Script {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u16::try_from(i).map(Script)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for HangulSyllableType {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for ScriptWithExt {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u16::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for EastAsianWidth {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for LineBreak {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for GraphemeClusterBreak {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for WordBreak {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for SentenceBreak {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for IndicConjunctBreak {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for IndicSyllabicCategory {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+impl TrieValue for VerticalOrientation {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
+
+// GCG is not used inside tries, but it is used in the name lookup type, and we want
+// to squeeze it into a u16 for storage. Its named mask values are specced so we can
+// do this in code.
+//
+// This is done by:
+// - Single-value masks are translated to their corresponding GeneralCategory values
+// - we know all of the multi-value masks and we give them special values
+// - Anything else goes to 0xFF00, though this code path shouldn't be hit unless working with malformed icuexportdata
+//
+// In the reverse direction, unknown values go to the empty mask, but this codepath should not be hit except
+// with malformed ICU4X generated data.
+impl AsULE for GeneralCategoryGroup {
+    type ULE = RawBytesULE<2>;
+    fn to_unaligned(self) -> Self::ULE {
+        let value = gcg_to_packed_u16(self);
+        value.to_unaligned()
+    }
+    fn from_unaligned(ule: Self::ULE) -> Self {
+        let value = ule.as_unsigned_int();
+        packed_u16_to_gcg(value)
+    }
+}
+
+fn packed_u16_to_gcg(value: u16) -> GeneralCategoryGroup {
+    match value {
+        0xFFFF => GeneralCategoryGroup::CasedLetter,
+        0xFFFE => GeneralCategoryGroup::Letter,
+        0xFFFD => GeneralCategoryGroup::Mark,
+        0xFFFC => GeneralCategoryGroup::Number,
+        0xFFFB => GeneralCategoryGroup::Separator,
+        0xFFFA => GeneralCategoryGroup::Other,
+        0xFFF9 => GeneralCategoryGroup::Punctuation,
+        0xFFF8 => GeneralCategoryGroup::Symbol,
+        v if v < 32 => GeneralCategory::new_from_u8(v as u8)
+            .map(|gc| gc.into())
+            .unwrap_or(GeneralCategoryGroup(0)),
+        // unknown values produce an empty mask
+        _ => GeneralCategoryGroup(0),
+    }
+}
+
+fn gcg_to_packed_u16(gcg: GeneralCategoryGroup) -> u16 {
+    // if it's a single property, translate to that property
+    if gcg.0.is_power_of_two() {
+        // inverse operation of a bitshift
+        gcg.0.trailing_zeros() as u16
+    } else {
+        match gcg {
+            GeneralCategoryGroup::CasedLetter => 0xFFFF,
+            GeneralCategoryGroup::Letter => 0xFFFE,
+            GeneralCategoryGroup::Mark => 0xFFFD,
+            GeneralCategoryGroup::Number => 0xFFFC,
+            GeneralCategoryGroup::Separator => 0xFFFB,
+            GeneralCategoryGroup::Other => 0xFFFA,
+            GeneralCategoryGroup::Punctuation => 0xFFF9,
+            GeneralCategoryGroup::Symbol => 0xFFF8,
+            _ => 0xFF00, // random sentinel value
+        }
+    }
+}
+
+impl TrieValue for GeneralCategoryGroup {
+    type TryFromU32Error = TryFromIntError;
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        // Even though we're dealing with u32s here, TrieValue is about converting
+        // trie storage types to the actual type. This type will always be a packed u16
+        // in our case since the names map upcasts from u16
+        u16::try_from(i).map(packed_u16_to_gcg)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(gcg_to_packed_u16(self))
+    }
+}
+
+impl TrieValue for BidiMirroringGlyph {
+    type TryFromU32Error = u32;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        let code_point = i & 0x1FFFFF;
+        let mirroring_glyph = if code_point == 0 {
+            None
+        } else {
+            Some(char::try_from_u32(code_point).map_err(|_| i)?)
+        };
+        let mirrored = ((i >> 21) & 0x1) == 1;
+        let paired_bracket_type = {
+            let value = ((i >> 22) & 0x3) as u8;
+            match value {
+                0 => crate::bidi::BidiPairedBracketType::None,
+                1 => crate::bidi::BidiPairedBracketType::Open,
+                2 => crate::bidi::BidiPairedBracketType::Close,
+                _ => return Err(i),
+            }
+        };
+        Ok(Self {
+            mirrored,
+            mirroring_glyph,
+            paired_bracket_type,
+        })
+    }
+
+    fn to_u32(self) -> u32 {
+        self.mirroring_glyph.unwrap_or_default() as u32
+            | ((self.mirrored as u32) << 21)
+            | (match self.paired_bracket_type {
+                crate::bidi::BidiPairedBracketType::None => 0,
+                crate::bidi::BidiPairedBracketType::Open => 1,
+                crate::bidi::BidiPairedBracketType::Close => 2,
+            } << 22)
+    }
+}
+
+impl TrieValue for JoiningType {
+    type TryFromU32Error = TryFromIntError;
+
+    fn try_from_u32(i: u32) -> Result<Self, Self::TryFromU32Error> {
+        u8::try_from(i).map(Self)
+    }
+
+    fn to_u32(self) -> u32 {
+        u32::from(self.0)
+    }
+}
diff --git a/vendor/icu_properties_data/.cargo-checksum.json b/vendor/icu_properties_data/.cargo-checksum.json
new file mode 100644
index 00000000..fa21c11e
--- /dev/null
+++ b/vendor/icu_properties_data/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"c17c16c8e2cbf4f05e1d7fda7de888cbcb71161bbcfd68ffaba2e9260e45d4b3","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"233fdc81b9903d581e35c8a7bde46690f90b79ca2919eba1bb2bbc6786c32db4","build.rs":"c2d446772e3d766a804963dbf36e51729f910920f91f4b68c0c199fe6ca0853e","data/mod.rs":"33294aaca0e3e697d4fcc9672dddeae8d3948a5a44d0b85b525554280791646a","data/property_binary_alnum_v1.rs.data":"2001f526f5fc3ddba764e1b5866216308f80154b1cc5bfba249f7465f93f7128","data/property_binary_alphabetic_v1.rs.data":"9843dc0d7e0537bfb8d47e7c5d69fe150aa1c6e23ae8d804c76ce0e33775e6e0","data/property_binary_ascii_hex_digit_v1.rs.data":"0aab7c1d312276ae255b03081a9e2184a4e5c9b8c703467b6d1a2e0f091c3b33","data/property_binary_basic_emoji_v1.rs.data":"d979149babdeba3361d319cf9953ae27afef08b1c86ea58382f097331cf6fd1a","data/property_binary_bidi_control_v1.rs.data":"9e1bfb5e4d33ee781ee047d712ef65e10b633bd8017c44013264cb98866d50dd","data/property_binary_bidi_mirrored_v1.rs.data":"7dcffbc47d3ca81a1f89e7ba5abb784e6246f75233b2f48475522d7c9fdb76c8","data/property_binary_blank_v1.rs.data":"b9417009146ceeccb5c22ed296d5b9816efa6124618073e194ff47715957b01e","data/property_binary_case_ignorable_v1.rs.data":"6bfeaba46d47a9bdcd0655ef570adc94ce0deabda8ae7243d36f82b01eced290","data/property_binary_case_sensitive_v1.rs.data":"ed655fd1d2b58c0b614212db12da5004d859b556ddad369810435732d1304598","data/property_binary_cased_v1.rs.data":"2ef2e8df2b5a52629d65d02250c0c6a567a440504aa73951acc944f45dd818dd","data/property_binary_changes_when_casefolded_v1.rs.data":"54ced548d4dd278433a086e762899e73118b5d07dd693dfe346ef5f6b5d1d9d6","data/property_binary_changes_when_casemapped_v1.rs.data":"37ada45db5ee8e32f6e7ea92165f3fc96c88e28aa015a3e4fd48a666d34ed136","data/property_binary_changes_when_lowercased_v1.rs.data":"45c19ca2cf623538120728df0ac2f9b23bc922108623c51b62ae96f9dec6c995","data/property_binary_changes_when_nfkc_casefolded_v1.rs.data":"7aa7fae9dbb9b1624cca67f6e070cc7a6d8d1251bf054b87a25f1f9e346c7efc","data/property_binary_changes_when_titlecased_v1.rs.data":"d0da2b33eb32732ca5e918b0860d14ba59434c51e8a3ff90a65283a2af39bb9f","data/property_binary_changes_when_uppercased_v1.rs.data":"0127c9baee0e5d5b3f2bd5366d881ad0d653893c26f34d63fd9a2c91efe9a014","data/property_binary_dash_v1.rs.data":"05f85087b93ea81e6de4a96dff6d834c5d8391561f008b5962a7e90994d4dc60","data/property_binary_default_ignorable_code_point_v1.rs.data":"149e690baae03c4324a1d3cf3828a3eeae39291e273d3d75f336d74517484f59","data/property_binary_deprecated_v1.rs.data":"9f0572a25bfcca866ca1b9fee23c0d1ea304c887c32d47445fe297448a3e8341","data/property_binary_diacritic_v1.rs.data":"5576ef8797cb7afeccda40f085eb13fb440e1316e0efcfd4b84c1a560205710d","data/property_binary_emoji_component_v1.rs.data":"fd4895345ed3bf8e37ad189e2cb0611d41f7ad82117c99aba2bbd80d29205c93","data/property_binary_emoji_modifier_base_v1.rs.data":"df2b54e3b68ead91fc199c013b35c76f17a50fb4d43c111c33f960b3cc337ba5","data/property_binary_emoji_modifier_v1.rs.data":"6bebc0e5832f59a260ea9b092fd64fb4f80d5e13af7192eee0bd634f4af597c4","data/property_binary_emoji_presentation_v1.rs.data":"bf3b7887c47f4d8c1fe3e38c4a67ae1eb4b2e202c9de8a0cb6772cd516e72acd","data/property_binary_emoji_v1.rs.data":"5a86c09930ece537c30f5a1c0c93825431c76f1004a100c34670de1ac7d7e42e","data/property_binary_extended_pictographic_v1.rs.data":"95ab61ef5cbb85463da4d9f98ff8c198b349a782fb61ea02b7f29ab431f24db5","data/property_binary_extender_v1.rs.data":"a441d88d9206af606a13cb92cf41dde77aa88ea3c6c5e9d73093d7782aada7d2","data/property_binary_full_composition_exclusion_v1.rs.data":"f0156d171e642ee2ebbe0cdf32863cbf13e3e5dc866b652aa85178e48de75c10","data/property_binary_graph_v1.rs.data":"4bd82fea2515d7fd06aec473fd26425534293a55e311ef584d6dc65d2bd46a3e","data/property_binary_grapheme_base_v1.rs.data":"197181d13339d5c7d3a851b16ff7de73f5fe12ec28cdf3e6855128aac9c09734","data/property_binary_grapheme_extend_v1.rs.data":"0d2f8e084dcb23834a53979e6c0b37adaefe03634e6b3efb3287704b7eaf7147","data/property_binary_grapheme_link_v1.rs.data":"315e14c046b61bc9e121c554c15de2a1dec8f5c55aeb4248c32dc84610e9d682","data/property_binary_hex_digit_v1.rs.data":"3ae1cc209797baa02b615c3ecb21d6cb1709ce825a315bc57686a8e6fc8cad40","data/property_binary_hyphen_v1.rs.data":"2ad4a52764b7846dc781492849935bd6643a8277cb1e5a1e96b9c1d83d8fa2d4","data/property_binary_id_continue_v1.rs.data":"2277cbcab0d94a7f3d59f79e7a34d3a8d616fb5bebc3770eee520c7b66816cce","data/property_binary_id_start_v1.rs.data":"3c6ebc696a1c1271a0ff9ff3fac6c71222a715305d180981bef924d24817a3fb","data/property_binary_ideographic_v1.rs.data":"a65a8d061280d59b4172943fc20d1f6dff971a3ebe80b1eb93da13c09f026df5","data/property_binary_ids_binary_operator_v1.rs.data":"ba7b4909907ebda7ff1ded7d0594352a421fde0c868729635df76503456e633e","data/property_binary_ids_trinary_operator_v1.rs.data":"c6d032fda45547df64693eb368f324af84ad4a74518c941823f64d9da1d84cfd","data/property_binary_join_control_v1.rs.data":"684ecf991ef329b148a26867c3bae712b84a97eeb77a10eb1c31f6118e963ac7","data/property_binary_logical_order_exception_v1.rs.data":"097e1a70ecade958031737a748784bb4f58224b7d9bf4f7a2031a19efcbc04b4","data/property_binary_lowercase_v1.rs.data":"58ac11b9814d269a5405e154420758626f73dabc19236753a0d07fb4b4099b94","data/property_binary_math_v1.rs.data":"221474c034c143bdaf02fd9660e31a55ba3c27cb3299dc395314386e391c2cc4","data/property_binary_nfc_inert_v1.rs.data":"5f45f047123e799fc0a0267048c95b1c7b346092e30cb0d59e731476039ac0e6","data/property_binary_nfd_inert_v1.rs.data":"ad5f46fe4ee4e38c79b3522d27668c4788dbd9f3d3b69ad1a833c2eda414873c","data/property_binary_nfkc_inert_v1.rs.data":"94c54e02cff358ba19a7168ee48a83a7eefbb9490a3ff5ecd98850477075e88b","data/property_binary_nfkd_inert_v1.rs.data":"368d6043c891ebf41161c69c674ab7eb79fa57e54d3c828a9d9f8c56ea01c514","data/property_binary_noncharacter_code_point_v1.rs.data":"cf501c218515c0dd8215a58bd04a5dc1327d5ee45ce677f25b1c05cdceb29fa1","data/property_binary_pattern_syntax_v1.rs.data":"ca48ff2b00f23d4ed2c66a63389bd020487f29baa58f219effa9cc093d1abd27","data/property_binary_pattern_white_space_v1.rs.data":"88dff7a4ad54b4d6fe79ceb9e1ca0f792b402dbbf310a2ea4e10f5ddaf4fb762","data/property_binary_prepended_concatenation_mark_v1.rs.data":"37b00ae3e3e9c3ca15a660609320c6096eeb143d2daddb8ea5790da2c1e59b33","data/property_binary_print_v1.rs.data":"601474f7dd0a10865b08d4f9b904c3a61e9f2d4100ba381f5f87947950e83a18","data/property_binary_quotation_mark_v1.rs.data":"4233563515d14380c85f980d2cc1f1da4e195c4dfe3d283b7227bb85515c78ed","data/property_binary_radical_v1.rs.data":"bc31035adb7e3da058604d174b5c45d1ae35eb9f901eebbefff955f469461034","data/property_binary_regional_indicator_v1.rs.data":"11dacf1d87c377d766a364ab399aef1718ca79eb787bb8ee68bf7a3ad339c2e7","data/property_binary_segment_starter_v1.rs.data":"f65165f9e09daf7574004ea4d473ba12ce2d67a4173d6748b78975eb91ca730e","data/property_binary_sentence_terminal_v1.rs.data":"8cad7960a362034e983542d342e7f6d625937d485b67beabce2c6c190ef69c17","data/property_binary_soft_dotted_v1.rs.data":"0c9e5e6e2d132ed4c6de5835d240146a2697613079e06d4d14c00be7108bd7dc","data/property_binary_terminal_punctuation_v1.rs.data":"b2dd760ffb914b7148eb29f5b327f2833a1c4ba49cc4afd5f165ffd6d7756197","data/property_binary_unified_ideograph_v1.rs.data":"253afee3d93a7de3444ca36751ecbf2d0b8d78de3dbbade61802cbb914214033","data/property_binary_uppercase_v1.rs.data":"a3716eb81d98d3efa83592b88b917585e72b567a18fb8351c306bbe4d3e42077","data/property_binary_variation_selector_v1.rs.data":"622fa6160440472a2bb2c43863a6dda3f6c369dba5897472feadaf3949c133d9","data/property_binary_white_space_v1.rs.data":"c8ae4ff5b5b3a097e85efe8dd99a8de2c41aaac2abfd7a0a17815851f624b71b","data/property_binary_xdigit_v1.rs.data":"174fa4a6caa1cc177e3a2da45cf7274a342702aae8f716fdc00c8bfa5a3d32e2","data/property_binary_xid_continue_v1.rs.data":"0f630633c7c5d0cfb9ff9e887a205761c4380b9a52d20770d6b2da6ba4442b21","data/property_binary_xid_start_v1.rs.data":"5cd5fc3d395a531cffcf946a0faa040145fd91c635b091c26f332594a64082e6","data/property_enum_bidi_class_v1.rs.data":"c9fab759c04f76d14099e2e136fbb8f3755fb686da8b697fd0a989e0b37a4036","data/property_enum_bidi_mirroring_glyph_v1.rs.data":"ba699cb4c0af77d651dbe4613044dd0bd723829f329e55383d2b008b74b0aecd","data/property_enum_canonical_combining_class_v1.rs.data":"420b106f17e954bc5276f561255f7f217fe23fe619d01ce1c028aea3f85681e1","data/property_enum_east_asian_width_v1.rs.data":"10147a5d7afddcbf2352bb3c7a9df8435a1bb4a65f54b8b40b052879215e2ce0","data/property_enum_general_category_v1.rs.data":"5035f75e81d347dc3b761318cb23ffa0fddc95b30bc1fd56832612b1f3523928","data/property_enum_grapheme_cluster_break_v1.rs.data":"808e932a94fd31bc32d44ed0ab95218733b359640cca56751e63ac88fb9b8d1e","data/property_enum_hangul_syllable_type_v1.rs.data":"f9d802d58d74a7243a00371499c865a11c8bd74d145d7fc177e62a7d6c0d4fb8","data/property_enum_indic_conjunct_break_v1.rs.data":"474cc3812e68b9e9c1f8b189ef67fd11dfe0e755002c6349fa01d9713e4132ea","data/property_enum_indic_syllabic_category_v1.rs.data":"379dd4c050d85a8a5b63ba466d72e0fdd20c35a76646b295acdac88f3572ab6a","data/property_enum_joining_type_v1.rs.data":"56ac67fac0892b0c48a14ac302d5da759d4596e486169c235db528c97aa9a4c1","data/property_enum_line_break_v1.rs.data":"b96c560dffa0648cb0e500cc719875c7c11ab2de19d7dd88f788be9d4deae686","data/property_enum_script_v1.rs.data":"fc455ff2679634488abe2a76a6dac5a9346045bafb337cd5442f51826bc74511","data/property_enum_sentence_break_v1.rs.data":"e134e9ce77f6b82a793d90c33dbebd35491b9ff36d43e62b1f42bc106b6831cf","data/property_enum_vertical_orientation_v1.rs.data":"2760c0fbc8f394ab17167ca762655642bb7a0c5cf631a280cd40cca8ceafa7de","data/property_enum_word_break_v1.rs.data":"149cb2be7e5a378e4f5f0b2528b57758d4928f989353d8be47b4024943b8c71f","data/property_name_long_bidi_class_v1.rs.data":"3b462dbd77a286a9e84e2ab4174746b40f4b1cbc99ba7b8be1a70f349c7b8285","data/property_name_long_canonical_combining_class_v1.rs.data":"f2301c32c3ee9f3ef22fb1437998ab65b59ebfa3a4b713a8f98f31edc35b3d5a","data/property_name_long_east_asian_width_v1.rs.data":"02196b02634bbda888735425b4814f0b419a5ef9b94b4320f07c1af472e78ad6","data/property_name_long_general_category_v1.rs.data":"a79bc637220d964b27ce4b39fdc441c14f6b6092760b1e84af5dc969eecb2797","data/property_name_long_grapheme_cluster_break_v1.rs.data":"ca33b43b37716eac873cdacbb5ce8fa5a895e4d2f2abf68b0a80532fbf7b8954","data/property_name_long_hangul_syllable_type_v1.rs.data":"c4c15de00195b0d99ff1dd4e0be6bbfceff628d1137df951e534f8fb64e707f2","data/property_name_long_indic_syllabic_category_v1.rs.data":"17b9afb92ac147d9b4acce2eef1e8ddf44c6a7a831d98f634aeb7f002da5c785","data/property_name_long_joining_type_v1.rs.data":"6017d9ff42778a20d76930dd3fbbbe92ba95cd637e676a3b76a76f2997cb2c5b","data/property_name_long_line_break_v1.rs.data":"00afb922d65e8e38b4739df4b9d888526e52f35a7ab61e80f35ea349939abc3b","data/property_name_long_script_v1.rs.data":"3d42e68b54afe9bc6395c03e385ed926ae5eb02270efb908a93eeb6ee6329ccd","data/property_name_long_sentence_break_v1.rs.data":"79b490f71f5811195faba6de3ae60e961abeb451be6348117dbd4c7585c9195e","data/property_name_long_vertical_orientation_v1.rs.data":"f338fc425306163e59c63a820808ae6455e272a254fba1508de0a3806c6c41a4","data/property_name_long_word_break_v1.rs.data":"287cc981a96d2493584447516a59c5ea85972aef392638df4b920a460a659ef7","data/property_name_parse_bidi_class_v1.rs.data":"aebf7c00f0e7cfd3d4d355128fde5d16842aca4b13b78bc3d96d56c70ee5db8d","data/property_name_parse_canonical_combining_class_v1.rs.data":"9c21fed6cdb58d15f7a9a3ab36ddbb2f15a5297e7d1cc00ffe372d93f9fca51a","data/property_name_parse_east_asian_width_v1.rs.data":"d6d2fa01fe85772882784746bfbf8da54b91de83f3da001e1055a992a36f487b","data/property_name_parse_general_category_mask_v1.rs.data":"6c4c1c2d4d94b74c2531b4112b9ec4573b053210d33dad353226357c698c509b","data/property_name_parse_general_category_v1.rs.data":"782d823df90def8c63183e0f62ab9599746389936e59c2d1ff3e699a82176a21","data/property_name_parse_grapheme_cluster_break_v1.rs.data":"22de70223c792d404e8e099b075b53793396619dbe05a669905f1cb45c7d9e24","data/property_name_parse_hangul_syllable_type_v1.rs.data":"154433d419332ba754d0a0ced6a7a5d9ba3333ad1b85d1e0ec18b96bbde761d2","data/property_name_parse_indic_syllabic_category_v1.rs.data":"fdd1a47a83ccb3df4afe6a4a9463c62f018c2574b598af7d0aca60c21a488bba","data/property_name_parse_joining_type_v1.rs.data":"0bf1ac18c0ac5455eac7859bd433c248dbcf448f911c1bdbed742b13b2e6d69a","data/property_name_parse_line_break_v1.rs.data":"896ef0829d35dfe0a69206437ffaa1f9cd9da8e70561cce28ec3123ac451d3f4","data/property_name_parse_script_v1.rs.data":"c3e012e6bb2e2561c5765474bb137fd123583848a45f0f91f672b1dcae676469","data/property_name_parse_sentence_break_v1.rs.data":"64dc0e6b4899ef7ea398cef3644088183c595460eae4e2f518ed82cc7137a5bf","data/property_name_parse_vertical_orientation_v1.rs.data":"b71bf37c4dc65626e096ea849af8679fec69f6af0c1c40f8e78719d5e96e646a","data/property_name_parse_word_break_v1.rs.data":"8a1d375693367fcb50ba1809015ab22d4a0b718dabe8c75d17852051609e99e6","data/property_name_short_bidi_class_v1.rs.data":"2edbaefe7a73f8abe0d0dc3dc33393cddc52c861a90ea61bedefe68808fa7c0e","data/property_name_short_canonical_combining_class_v1.rs.data":"9126cdf6b735ddeb5a41556b8f7e3cfcef7b86f7aab1d34d9982acd35c7db6e9","data/property_name_short_east_asian_width_v1.rs.data":"ffc621711729d09e456d7084661c8d5ba9b81a5157829758e8897e9bbda755a9","data/property_name_short_general_category_v1.rs.data":"8f32d567aa0b97f9e2f50327f0a30fb943e7fa998093226f093ec5618ce9f21a","data/property_name_short_grapheme_cluster_break_v1.rs.data":"286796a5fc419bf3d1bfbc5322caa4699eb2b7f8b46f28f209a11be44869224d","data/property_name_short_hangul_syllable_type_v1.rs.data":"04d318c0ec9069010f690afdc797333d610d58015a84880a1adfb58ac3c99e39","data/property_name_short_indic_syllabic_category_v1.rs.data":"c92c2b49dee1380f152ac1c52ba963e3e4fa0fcb7601853b06b5838bfb0d3774","data/property_name_short_joining_type_v1.rs.data":"eeeef98d7f870cf37e359adc7fc8e41b58d1b92f52662bee417f222f865896f8","data/property_name_short_line_break_v1.rs.data":"31ff3e6548b18da53fa0be58d6574e5350561786d56475cc186584e009604404","data/property_name_short_script_v1.rs.data":"69157f2cf6d99790839535f2566d9db5b53545e685cb86ffe49ac5b352762099","data/property_name_short_sentence_break_v1.rs.data":"e78880ddb9e4b5848af659cc1691b7cf892536f18492e313a13a7de8778e04ad","data/property_name_short_vertical_orientation_v1.rs.data":"de5d3c2d0688ea6d5f97cebcc38c561cc0b2c3814aa9e057000f7945c46bde10","data/property_name_short_word_break_v1.rs.data":"ffcab008add3ffab94cb1992e48890f6fc9299071eeb36e7045cc0dbb8d8ba04","data/property_script_with_extensions_v1.rs.data":"73a85ffc715844821244404f4b8769c532114dab2b69b843f09e5503b944ee11","src/lib.rs":"24c5dbbe5cda0fdaaa958f64f6f7a961d09253138dd2b8593b1cb8ddac4f11c4"},"package":"298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"}
\ No newline at end of file
diff --git a/vendor/icu_properties_data/Cargo.toml b/vendor/icu_properties_data/Cargo.toml
new file mode 100644
index 00000000..fe499f18
--- /dev/null
+++ b/vendor/icu_properties_data/Cargo.toml
@@ -0,0 +1,60 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "icu_properties_data"
+version = "2.0.1"
+authors = ["The ICU4X Project Developers"]
+build = "build.rs"
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+    "build.rs",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Data for the icu_properties crate"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.sources.cldr]
+tagged = "47.0.0"
+
+[package.metadata.sources.icuexport]
+tagged = "icu4x/2025-05-01/77.x"
+
+[package.metadata.sources.segmenter_lstm]
+tagged = "v0.1.0"
+
+[lib]
+name = "icu_properties_data"
+path = "src/lib.rs"
+
+[dependencies]
+
+[lints.rust.unexpected_cfgs]
+level = "warn"
+priority = 0
+check-cfg = ["cfg(icu4x_custom_data)"]
diff --git a/vendor/icu_properties_data/LICENSE b/vendor/icu_properties_data/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/icu_properties_data/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/icu_properties_data/README.md b/vendor/icu_properties_data/README.md
new file mode 100644
index 00000000..ea6326ad
--- /dev/null
+++ b/vendor/icu_properties_data/README.md
@@ -0,0 +1,14 @@
+# icu_properties_data [![crates.io](https://img.shields.io/crates/v/icu_properties_data)](https://crates.io/crates/icu_properties_data)
+
+<!-- cargo-rdme start -->
+
+Data for the `icu_properties` crate
+
+This data was generated with CLDR version 47.0.0, ICU version icu4x/2025-05-01/77.x, and
+LSTM segmenter version v0.1.0.
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_properties_data/build.rs b/vendor/icu_properties_data/build.rs
new file mode 100644
index 00000000..62e9cb73
--- /dev/null
+++ b/vendor/icu_properties_data/build.rs
@@ -0,0 +1,11 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+fn main() {
+    if std::env::var("ICU4X_DATA_DIR").is_ok() {
+        println!("cargo:rustc-cfg=icu4x_custom_data");
+    }
+    println!("cargo:rerun-if-env-changed=ICU4X_DATA_DIR");
+    println!("cargo:rustc-check-cfg=cfg(icu4c_enable_renaming)");
+}
diff --git a/vendor/icu_properties_data/data/mod.rs b/vendor/icu_properties_data/data/mod.rs
new file mode 100644
index 00000000..a6c9fdd0
--- /dev/null
+++ b/vendor/icu_properties_data/data/mod.rs
@@ -0,0 +1,281 @@
+// @generated
+include!("property_enum_indic_syllabic_category_v1.rs.data");
+include!("property_binary_pattern_syntax_v1.rs.data");
+include!("property_binary_changes_when_lowercased_v1.rs.data");
+include!("property_binary_ids_trinary_operator_v1.rs.data");
+include!("property_binary_regional_indicator_v1.rs.data");
+include!("property_binary_changes_when_uppercased_v1.rs.data");
+include!("property_binary_changes_when_casemapped_v1.rs.data");
+include!("property_enum_script_v1.rs.data");
+include!("property_name_short_indic_syllabic_category_v1.rs.data");
+include!("property_binary_ids_binary_operator_v1.rs.data");
+include!("property_binary_radical_v1.rs.data");
+include!("property_binary_extender_v1.rs.data");
+include!("property_name_long_indic_syllabic_category_v1.rs.data");
+include!("property_binary_emoji_component_v1.rs.data");
+include!("property_binary_dash_v1.rs.data");
+include!("property_enum_general_category_v1.rs.data");
+include!("property_name_long_grapheme_cluster_break_v1.rs.data");
+include!("property_binary_emoji_presentation_v1.rs.data");
+include!("property_binary_case_sensitive_v1.rs.data");
+include!("property_name_short_bidi_class_v1.rs.data");
+include!("property_binary_nfd_inert_v1.rs.data");
+include!("property_binary_graph_v1.rs.data");
+include!("property_binary_bidi_control_v1.rs.data");
+include!("property_name_short_hangul_syllable_type_v1.rs.data");
+include!("property_name_short_word_break_v1.rs.data");
+include!("property_name_parse_line_break_v1.rs.data");
+include!("property_binary_white_space_v1.rs.data");
+include!("property_binary_unified_ideograph_v1.rs.data");
+include!("property_binary_noncharacter_code_point_v1.rs.data");
+include!("property_name_short_grapheme_cluster_break_v1.rs.data");
+include!("property_name_parse_indic_syllabic_category_v1.rs.data");
+include!("property_name_parse_east_asian_width_v1.rs.data");
+include!("property_script_with_extensions_v1.rs.data");
+include!("property_name_long_hangul_syllable_type_v1.rs.data");
+include!("property_binary_emoji_v1.rs.data");
+include!("property_name_long_line_break_v1.rs.data");
+include!("property_name_parse_bidi_class_v1.rs.data");
+include!("property_binary_bidi_mirrored_v1.rs.data");
+include!("property_binary_grapheme_link_v1.rs.data");
+include!("property_name_long_script_v1.rs.data");
+include!("property_name_long_east_asian_width_v1.rs.data");
+include!("property_name_parse_sentence_break_v1.rs.data");
+include!("property_binary_alnum_v1.rs.data");
+include!("property_name_short_general_category_v1.rs.data");
+include!("property_name_short_vertical_orientation_v1.rs.data");
+include!("property_binary_changes_when_casefolded_v1.rs.data");
+include!("property_name_parse_hangul_syllable_type_v1.rs.data");
+include!("property_enum_sentence_break_v1.rs.data");
+include!("property_binary_quotation_mark_v1.rs.data");
+include!("property_binary_deprecated_v1.rs.data");
+include!("property_binary_xid_start_v1.rs.data");
+include!("property_binary_segment_starter_v1.rs.data");
+include!("property_binary_hyphen_v1.rs.data");
+include!("property_binary_variation_selector_v1.rs.data");
+include!("property_enum_word_break_v1.rs.data");
+include!("property_name_short_east_asian_width_v1.rs.data");
+include!("property_name_short_sentence_break_v1.rs.data");
+include!("property_name_long_bidi_class_v1.rs.data");
+include!("property_binary_prepended_concatenation_mark_v1.rs.data");
+include!("property_name_short_joining_type_v1.rs.data");
+include!("property_binary_print_v1.rs.data");
+include!("property_enum_canonical_combining_class_v1.rs.data");
+include!("property_binary_terminal_punctuation_v1.rs.data");
+include!("property_enum_vertical_orientation_v1.rs.data");
+include!("property_binary_cased_v1.rs.data");
+include!("property_binary_nfkc_inert_v1.rs.data");
+include!("property_binary_id_continue_v1.rs.data");
+include!("property_binary_basic_emoji_v1.rs.data");
+include!("property_binary_id_start_v1.rs.data");
+include!("property_binary_uppercase_v1.rs.data");
+include!("property_name_short_script_v1.rs.data");
+include!("property_enum_hangul_syllable_type_v1.rs.data");
+include!("property_binary_xdigit_v1.rs.data");
+include!("property_binary_full_composition_exclusion_v1.rs.data");
+include!("property_name_long_vertical_orientation_v1.rs.data");
+include!("property_binary_changes_when_nfkc_casefolded_v1.rs.data");
+include!("property_binary_hex_digit_v1.rs.data");
+include!("property_name_parse_joining_type_v1.rs.data");
+include!("property_binary_xid_continue_v1.rs.data");
+include!("property_binary_soft_dotted_v1.rs.data");
+include!("property_binary_ideographic_v1.rs.data");
+include!("property_name_short_canonical_combining_class_v1.rs.data");
+include!("property_name_long_word_break_v1.rs.data");
+include!("property_binary_changes_when_titlecased_v1.rs.data");
+include!("property_enum_bidi_class_v1.rs.data");
+include!("property_binary_sentence_terminal_v1.rs.data");
+include!("property_enum_indic_conjunct_break_v1.rs.data");
+include!("property_name_long_general_category_v1.rs.data");
+include!("property_binary_ascii_hex_digit_v1.rs.data");
+include!("property_enum_line_break_v1.rs.data");
+include!("property_enum_east_asian_width_v1.rs.data");
+include!("property_name_parse_grapheme_cluster_break_v1.rs.data");
+include!("property_name_parse_general_category_v1.rs.data");
+include!("property_binary_logical_order_exception_v1.rs.data");
+include!("property_binary_case_ignorable_v1.rs.data");
+include!("property_binary_diacritic_v1.rs.data");
+include!("property_binary_grapheme_extend_v1.rs.data");
+include!("property_enum_bidi_mirroring_glyph_v1.rs.data");
+include!("property_name_parse_general_category_mask_v1.rs.data");
+include!("property_binary_nfc_inert_v1.rs.data");
+include!("property_name_parse_script_v1.rs.data");
+include!("property_binary_lowercase_v1.rs.data");
+include!("property_name_long_joining_type_v1.rs.data");
+include!("property_binary_emoji_modifier_base_v1.rs.data");
+include!("property_name_long_sentence_break_v1.rs.data");
+include!("property_binary_grapheme_base_v1.rs.data");
+include!("property_name_long_canonical_combining_class_v1.rs.data");
+include!("property_binary_emoji_modifier_v1.rs.data");
+include!("property_binary_join_control_v1.rs.data");
+include!("property_enum_joining_type_v1.rs.data");
+include!("property_name_short_line_break_v1.rs.data");
+include!("property_name_parse_word_break_v1.rs.data");
+include!("property_binary_math_v1.rs.data");
+include!("property_binary_pattern_white_space_v1.rs.data");
+include!("property_binary_nfkd_inert_v1.rs.data");
+include!("property_binary_alphabetic_v1.rs.data");
+include!("property_enum_grapheme_cluster_break_v1.rs.data");
+include!("property_binary_blank_v1.rs.data");
+include!("property_binary_default_ignorable_code_point_v1.rs.data");
+include!("property_binary_extended_pictographic_v1.rs.data");
+include!("property_name_parse_vertical_orientation_v1.rs.data");
+include!("property_name_parse_canonical_combining_class_v1.rs.data");
+/// Marks a type as a data provider. You can then use macros like
+/// `impl_core_helloworld_v1` to add implementations.
+///
+/// ```ignore
+/// struct MyProvider;
+/// const _: () = {
+///     include!("path/to/generated/macros.rs");
+///     make_provider!(MyProvider);
+///     impl_core_helloworld_v1!(MyProvider);
+/// }
+/// ```
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __make_provider {
+    ($ name : ty) => {
+        #[clippy::msrv = "1.82"]
+        impl $name {
+            #[allow(dead_code)]
+            pub(crate) const MUST_USE_MAKE_PROVIDER_MACRO: () = ();
+        }
+        icu_provider::marker::impl_data_provider_never_marker!($name);
+    };
+}
+#[doc(inline)]
+pub use __make_provider as make_provider;
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[allow(unused_macros)]
+macro_rules! impl_data_provider {
+    ($ provider : ty) => {
+        make_provider!($provider);
+        impl_property_enum_indic_syllabic_category_v1!($provider);
+        impl_property_binary_pattern_syntax_v1!($provider);
+        impl_property_binary_changes_when_lowercased_v1!($provider);
+        impl_property_binary_ids_trinary_operator_v1!($provider);
+        impl_property_binary_regional_indicator_v1!($provider);
+        impl_property_binary_changes_when_uppercased_v1!($provider);
+        impl_property_binary_changes_when_casemapped_v1!($provider);
+        impl_property_enum_script_v1!($provider);
+        impl_property_name_short_indic_syllabic_category_v1!($provider);
+        impl_property_binary_ids_binary_operator_v1!($provider);
+        impl_property_binary_radical_v1!($provider);
+        impl_property_binary_extender_v1!($provider);
+        impl_property_name_long_indic_syllabic_category_v1!($provider);
+        impl_property_binary_emoji_component_v1!($provider);
+        impl_property_binary_dash_v1!($provider);
+        impl_property_enum_general_category_v1!($provider);
+        impl_property_name_long_grapheme_cluster_break_v1!($provider);
+        impl_property_binary_emoji_presentation_v1!($provider);
+        impl_property_binary_case_sensitive_v1!($provider);
+        impl_property_name_short_bidi_class_v1!($provider);
+        impl_property_binary_nfd_inert_v1!($provider);
+        impl_property_binary_graph_v1!($provider);
+        impl_property_binary_bidi_control_v1!($provider);
+        impl_property_name_short_hangul_syllable_type_v1!($provider);
+        impl_property_name_short_word_break_v1!($provider);
+        impl_property_name_parse_line_break_v1!($provider);
+        impl_property_binary_white_space_v1!($provider);
+        impl_property_binary_unified_ideograph_v1!($provider);
+        impl_property_binary_noncharacter_code_point_v1!($provider);
+        impl_property_name_short_grapheme_cluster_break_v1!($provider);
+        impl_property_name_parse_indic_syllabic_category_v1!($provider);
+        impl_property_name_parse_east_asian_width_v1!($provider);
+        impl_property_script_with_extensions_v1!($provider);
+        impl_property_name_long_hangul_syllable_type_v1!($provider);
+        impl_property_binary_emoji_v1!($provider);
+        impl_property_name_long_line_break_v1!($provider);
+        impl_property_name_parse_bidi_class_v1!($provider);
+        impl_property_binary_bidi_mirrored_v1!($provider);
+        impl_property_binary_grapheme_link_v1!($provider);
+        impl_property_name_long_script_v1!($provider);
+        impl_property_name_long_east_asian_width_v1!($provider);
+        impl_property_name_parse_sentence_break_v1!($provider);
+        impl_property_binary_alnum_v1!($provider);
+        impl_property_name_short_general_category_v1!($provider);
+        impl_property_name_short_vertical_orientation_v1!($provider);
+        impl_property_binary_changes_when_casefolded_v1!($provider);
+        impl_property_name_parse_hangul_syllable_type_v1!($provider);
+        impl_property_enum_sentence_break_v1!($provider);
+        impl_property_binary_quotation_mark_v1!($provider);
+        impl_property_binary_deprecated_v1!($provider);
+        impl_property_binary_xid_start_v1!($provider);
+        impl_property_binary_segment_starter_v1!($provider);
+        impl_property_binary_hyphen_v1!($provider);
+        impl_property_binary_variation_selector_v1!($provider);
+        impl_property_enum_word_break_v1!($provider);
+        impl_property_name_short_east_asian_width_v1!($provider);
+        impl_property_name_short_sentence_break_v1!($provider);
+        impl_property_name_long_bidi_class_v1!($provider);
+        impl_property_binary_prepended_concatenation_mark_v1!($provider);
+        impl_property_name_short_joining_type_v1!($provider);
+        impl_property_binary_print_v1!($provider);
+        impl_property_enum_canonical_combining_class_v1!($provider);
+        impl_property_binary_terminal_punctuation_v1!($provider);
+        impl_property_enum_vertical_orientation_v1!($provider);
+        impl_property_binary_cased_v1!($provider);
+        impl_property_binary_nfkc_inert_v1!($provider);
+        impl_property_binary_id_continue_v1!($provider);
+        impl_property_binary_basic_emoji_v1!($provider);
+        impl_property_binary_id_start_v1!($provider);
+        impl_property_binary_uppercase_v1!($provider);
+        impl_property_name_short_script_v1!($provider);
+        impl_property_enum_hangul_syllable_type_v1!($provider);
+        impl_property_binary_xdigit_v1!($provider);
+        impl_property_binary_full_composition_exclusion_v1!($provider);
+        impl_property_name_long_vertical_orientation_v1!($provider);
+        impl_property_binary_changes_when_nfkc_casefolded_v1!($provider);
+        impl_property_binary_hex_digit_v1!($provider);
+        impl_property_name_parse_joining_type_v1!($provider);
+        impl_property_binary_xid_continue_v1!($provider);
+        impl_property_binary_soft_dotted_v1!($provider);
+        impl_property_binary_ideographic_v1!($provider);
+        impl_property_name_short_canonical_combining_class_v1!($provider);
+        impl_property_name_long_word_break_v1!($provider);
+        impl_property_binary_changes_when_titlecased_v1!($provider);
+        impl_property_enum_bidi_class_v1!($provider);
+        impl_property_binary_sentence_terminal_v1!($provider);
+        impl_property_enum_indic_conjunct_break_v1!($provider);
+        impl_property_name_long_general_category_v1!($provider);
+        impl_property_binary_ascii_hex_digit_v1!($provider);
+        impl_property_enum_line_break_v1!($provider);
+        impl_property_enum_east_asian_width_v1!($provider);
+        impl_property_name_parse_grapheme_cluster_break_v1!($provider);
+        impl_property_name_parse_general_category_v1!($provider);
+        impl_property_binary_logical_order_exception_v1!($provider);
+        impl_property_binary_case_ignorable_v1!($provider);
+        impl_property_binary_diacritic_v1!($provider);
+        impl_property_binary_grapheme_extend_v1!($provider);
+        impl_property_enum_bidi_mirroring_glyph_v1!($provider);
+        impl_property_name_parse_general_category_mask_v1!($provider);
+        impl_property_binary_nfc_inert_v1!($provider);
+        impl_property_name_parse_script_v1!($provider);
+        impl_property_binary_lowercase_v1!($provider);
+        impl_property_name_long_joining_type_v1!($provider);
+        impl_property_binary_emoji_modifier_base_v1!($provider);
+        impl_property_name_long_sentence_break_v1!($provider);
+        impl_property_binary_grapheme_base_v1!($provider);
+        impl_property_name_long_canonical_combining_class_v1!($provider);
+        impl_property_binary_emoji_modifier_v1!($provider);
+        impl_property_binary_join_control_v1!($provider);
+        impl_property_enum_joining_type_v1!($provider);
+        impl_property_name_short_line_break_v1!($provider);
+        impl_property_name_parse_word_break_v1!($provider);
+        impl_property_binary_math_v1!($provider);
+        impl_property_binary_pattern_white_space_v1!($provider);
+        impl_property_binary_nfkd_inert_v1!($provider);
+        impl_property_binary_alphabetic_v1!($provider);
+        impl_property_enum_grapheme_cluster_break_v1!($provider);
+        impl_property_binary_blank_v1!($provider);
+        impl_property_binary_default_ignorable_code_point_v1!($provider);
+        impl_property_binary_extended_pictographic_v1!($provider);
+        impl_property_name_parse_vertical_orientation_v1!($provider);
+        impl_property_name_parse_canonical_combining_class_v1!($provider);
+    };
+}
diff --git a/vendor/icu_properties_data/data/property_binary_alnum_v1.rs.data b/vendor/icu_properties_data/data/property_binary_alnum_v1.rs.data
new file mode 100644
index 00000000..bb748533
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_alnum_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryAlnumV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4844B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_alnum_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_ALNUM_V1: &'static <icu::properties::provider::PropertyBinaryAlnumV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"0\0\0:\0\0A\0\0[\0\0a\0\0{\0\0\xAA\0\0\xAB\0\0\xB5\0\0\xB6\0\0\xBA\0\0\xBB\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\0\xC2\x02\0\xC6\x02\0\xD2\x02\0\xE0\x02\0\xE5\x02\0\xEC\x02\0\xED\x02\0\xEE\x02\0\xEF\x02\0E\x03\0F\x03\0c\x03\0u\x03\0v\x03\0x\x03\0z\x03\0~\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\0\xF6\x03\0\xF7\x03\0\x82\x04\0\x8A\x04\x000\x05\x001\x05\0W\x05\0Y\x05\0Z\x05\0`\x05\0\x89\x05\0\xB0\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\xD0\x05\0\xEB\x05\0\xEF\x05\0\xF3\x05\0\x10\x06\0\x1B\x06\0 \x06\0X\x06\0Y\x06\0j\x06\0n\x06\0\xD4\x06\0\xD5\x06\0\xDD\x06\0\xE1\x06\0\xE9\x06\0\xED\x06\0\xFD\x06\0\xFF\x06\0\0\x07\0\x10\x07\0@\x07\0M\x07\0\xB2\x07\0\xC0\x07\0\xEB\x07\0\xF4\x07\0\xF6\x07\0\xFA\x07\0\xFB\x07\0\0\x08\0\x18\x08\0\x1A\x08\0-\x08\0@\x08\0Y\x08\0`\x08\0k\x08\0p\x08\0\x88\x08\0\x89\x08\0\x8F\x08\0\x97\x08\0\x98\x08\0\xA0\x08\0\xCA\x08\0\xD4\x08\0\xE0\x08\0\xE3\x08\0\xEA\x08\0\xF0\x08\0<\t\0=\t\0M\t\0N\t\0Q\t\0U\t\0d\t\0f\t\0p\t\0q\t\0\x84\t\0\x85\t\0\x8D\t\0\x8F\t\0\x91\t\0\x93\t\0\xA9\t\0\xAA\t\0\xB1\t\0\xB2\t\0\xB3\t\0\xB6\t\0\xBA\t\0\xBD\t\0\xC5\t\0\xC7\t\0\xC9\t\0\xCB\t\0\xCD\t\0\xCE\t\0\xCF\t\0\xD7\t\0\xD8\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE4\t\0\xE6\t\0\xF2\t\0\xFC\t\0\xFD\t\0\x01\n\0\x04\n\0\x05\n\0\x0B\n\0\x0F\n\0\x11\n\0\x13\n\0)\n\0*\n\x001\n\x002\n\x004\n\x005\n\x007\n\08\n\0:\n\0>\n\0C\n\0G\n\0I\n\0K\n\0M\n\0Q\n\0R\n\0Y\n\0]\n\0^\n\0_\n\0f\n\0v\n\0\x81\n\0\x84\n\0\x85\n\0\x8E\n\0\x8F\n\0\x92\n\0\x93\n\0\xA9\n\0\xAA\n\0\xB1\n\0\xB2\n\0\xB4\n\0\xB5\n\0\xBA\n\0\xBD\n\0\xC6\n\0\xC7\n\0\xCA\n\0\xCB\n\0\xCD\n\0\xD0\n\0\xD1\n\0\xE0\n\0\xE4\n\0\xE6\n\0\xF0\n\0\xF9\n\0\xFD\n\0\x01\x0B\0\x04\x0B\0\x05\x0B\0\r\x0B\0\x0F\x0B\0\x11\x0B\0\x13\x0B\0)\x0B\0*\x0B\x001\x0B\x002\x0B\x004\x0B\x005\x0B\0:\x0B\0=\x0B\0E\x0B\0G\x0B\0I\x0B\0K\x0B\0M\x0B\0V\x0B\0X\x0B\0\\\x0B\0^\x0B\0_\x0B\0d\x0B\0f\x0B\0p\x0B\0q\x0B\0r\x0B\0\x82\x0B\0\x84\x0B\0\x85\x0B\0\x8B\x0B\0\x8E\x0B\0\x91\x0B\0\x92\x0B\0\x96\x0B\0\x99\x0B\0\x9B\x0B\0\x9C\x0B\0\x9D\x0B\0\x9E\x0B\0\xA0\x0B\0\xA3\x0B\0\xA5\x0B\0\xA8\x0B\0\xAB\x0B\0\xAE\x0B\0\xBA\x0B\0\xBE\x0B\0\xC3\x0B\0\xC6\x0B\0\xC9\x0B\0\xCA\x0B\0\xCD\x0B\0\xD0\x0B\0\xD1\x0B\0\xD7\x0B\0\xD8\x0B\0\xE6\x0B\0\xF0\x0B\0\0\x0C\0\r\x0C\0\x0E\x0C\0\x11\x0C\0\x12\x0C\0)\x0C\0*\x0C\0:\x0C\0=\x0C\0E\x0C\0F\x0C\0I\x0C\0J\x0C\0M\x0C\0U\x0C\0W\x0C\0X\x0C\0[\x0C\0]\x0C\0^\x0C\0`\x0C\0d\x0C\0f\x0C\0p\x0C\0\x80\x0C\0\x84\x0C\0\x85\x0C\0\x8D\x0C\0\x8E\x0C\0\x91\x0C\0\x92\x0C\0\xA9\x0C\0\xAA\x0C\0\xB4\x0C\0\xB5\x0C\0\xBA\x0C\0\xBD\x0C\0\xC5\x0C\0\xC6\x0C\0\xC9\x0C\0\xCA\x0C\0\xCD\x0C\0\xD5\x0C\0\xD7\x0C\0\xDD\x0C\0\xDF\x0C\0\xE0\x0C\0\xE4\x0C\0\xE6\x0C\0\xF0\x0C\0\xF1\x0C\0\xF4\x0C\0\0\r\0\r\r\0\x0E\r\0\x11\r\0\x12\r\0;\r\0=\r\0E\r\0F\r\0I\r\0J\r\0M\r\0N\r\0O\r\0T\r\0X\r\0_\r\0d\r\0f\r\0p\r\0z\r\0\x80\r\0\x81\r\0\x84\r\0\x85\r\0\x97\r\0\x9A\r\0\xB2\r\0\xB3\r\0\xBC\r\0\xBD\r\0\xBE\r\0\xC0\r\0\xC7\r\0\xCF\r\0\xD5\r\0\xD6\r\0\xD7\r\0\xD8\r\0\xE0\r\0\xE6\r\0\xF0\r\0\xF2\r\0\xF4\r\0\x01\x0E\0;\x0E\0@\x0E\0G\x0E\0M\x0E\0N\x0E\0P\x0E\0Z\x0E\0\x81\x0E\0\x83\x0E\0\x84\x0E\0\x85\x0E\0\x86\x0E\0\x8B\x0E\0\x8C\x0E\0\xA4\x0E\0\xA5\x0E\0\xA6\x0E\0\xA7\x0E\0\xBA\x0E\0\xBB\x0E\0\xBE\x0E\0\xC0\x0E\0\xC5\x0E\0\xC6\x0E\0\xC7\x0E\0\xCD\x0E\0\xCE\x0E\0\xD0\x0E\0\xDA\x0E\0\xDC\x0E\0\xE0\x0E\0\0\x0F\0\x01\x0F\0 \x0F\0*\x0F\0@\x0F\0H\x0F\0I\x0F\0m\x0F\0q\x0F\0\x84\x0F\0\x88\x0F\0\x98\x0F\0\x99\x0F\0\xBD\x0F\0\0\x10\x007\x10\08\x10\09\x10\0;\x10\0J\x10\0P\x10\0\x9E\x10\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0\xFB\x10\0\xFC\x10\0I\x12\0J\x12\0N\x12\0P\x12\0W\x12\0X\x12\0Y\x12\0Z\x12\0^\x12\0`\x12\0\x89\x12\0\x8A\x12\0\x8E\x12\0\x90\x12\0\xB1\x12\0\xB2\x12\0\xB6\x12\0\xB8\x12\0\xBF\x12\0\xC0\x12\0\xC1\x12\0\xC2\x12\0\xC6\x12\0\xC8\x12\0\xD7\x12\0\xD8\x12\0\x11\x13\0\x12\x13\0\x16\x13\0\x18\x13\0[\x13\0\x80\x13\0\x90\x13\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\x01\x14\0m\x16\0o\x16\0\x80\x16\0\x81\x16\0\x9B\x16\0\xA0\x16\0\xEB\x16\0\xEE\x16\0\xF9\x16\0\0\x17\0\x14\x17\0\x1F\x17\x004\x17\0@\x17\0T\x17\0`\x17\0m\x17\0n\x17\0q\x17\0r\x17\0t\x17\0\x80\x17\0\xB4\x17\0\xB6\x17\0\xC9\x17\0\xD7\x17\0\xD8\x17\0\xDC\x17\0\xDD\x17\0\xE0\x17\0\xEA\x17\0\x10\x18\0\x1A\x18\0 \x18\0y\x18\0\x80\x18\0\xAB\x18\0\xB0\x18\0\xF6\x18\0\0\x19\0\x1F\x19\0 \x19\0,\x19\x000\x19\09\x19\0F\x19\0n\x19\0p\x19\0u\x19\0\x80\x19\0\xAC\x19\0\xB0\x19\0\xCA\x19\0\xD0\x19\0\xDA\x19\0\0\x1A\0\x1C\x1A\0 \x1A\0_\x1A\0a\x1A\0u\x1A\0\x80\x1A\0\x8A\x1A\0\x90\x1A\0\x9A\x1A\0\xA7\x1A\0\xA8\x1A\0\xBF\x1A\0\xC1\x1A\0\xCC\x1A\0\xCF\x1A\0\0\x1B\x004\x1B\x005\x1B\0D\x1B\0E\x1B\0M\x1B\0P\x1B\0Z\x1B\0\x80\x1B\0\xAA\x1B\0\xAC\x1B\0\xE6\x1B\0\xE7\x1B\0\xF2\x1B\0\0\x1C\x007\x1C\0@\x1C\0J\x1C\0M\x1C\0~\x1C\0\x80\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF7\x1C\0\xFA\x1C\0\xFB\x1C\0\0\x1D\0\xC0\x1D\0\xD3\x1D\0\xF5\x1D\0\0\x1E\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xCD\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xE0\x1F\0\xED\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFD\x1F\0q \0r \0\x7F \0\x80 \0\x90 \0\x9D \0\x02!\0\x03!\0\x07!\0\x08!\0\n!\0\x14!\0\x15!\0\x16!\0\x19!\0\x1E!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0.!\0/!\0:!\0<!\0@!\0E!\0J!\0N!\0O!\0`!\0\x89!\0\xB6$\0\xEA$\0\0,\0\xE5,\0\xEB,\0\xEF,\0\xF2,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\x000-\0h-\0o-\0p-\0\x80-\0\x97-\0\xA0-\0\xA7-\0\xA8-\0\xAF-\0\xB0-\0\xB7-\0\xB8-\0\xBF-\0\xC0-\0\xC7-\0\xC8-\0\xCF-\0\xD0-\0\xD7-\0\xD8-\0\xDF-\0\xE0-\0\0.\0/.\x000.\0\x050\0\x080\0!0\0*0\x0010\x0060\080\0=0\0A0\0\x970\0\x9D0\0\xA00\0\xA10\0\xFB0\0\xFC0\0\x001\0\x051\x0001\x0011\0\x8F1\0\xA01\0\xC01\0\xF01\0\x002\0\x004\0\xC0M\0\0N\0\x8D\xA4\0\xD0\xA4\0\xFE\xA4\0\0\xA5\0\r\xA6\0\x10\xA6\0,\xA6\0@\xA6\0o\xA6\0t\xA6\0|\xA6\0\x7F\xA6\0\xF0\xA6\0\x17\xA7\0 \xA7\0\"\xA7\0\x89\xA7\0\x8B\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xDD\xA7\0\xF2\xA7\0\x06\xA8\0\x07\xA8\0(\xA8\0@\xA8\0t\xA8\0\x80\xA8\0\xC4\xA8\0\xC5\xA8\0\xC6\xA8\0\xD0\xA8\0\xDA\xA8\0\xF2\xA8\0\xF8\xA8\0\xFB\xA8\0\xFC\xA8\0\xFD\xA8\0+\xA9\x000\xA9\0S\xA9\0`\xA9\0}\xA9\0\x80\xA9\0\xB3\xA9\0\xB4\xA9\0\xC0\xA9\0\xCF\xA9\0\xDA\xA9\0\xE0\xA9\0\xFF\xA9\0\0\xAA\x007\xAA\0@\xAA\0N\xAA\0P\xAA\0Z\xAA\0`\xAA\0w\xAA\0z\xAA\0\xBF\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xC3\xAA\0\xDB\xAA\0\xDE\xAA\0\xE0\xAA\0\xF0\xAA\0\xF2\xAA\0\xF6\xAA\0\x01\xAB\0\x07\xAB\0\t\xAB\0\x0F\xAB\0\x11\xAB\0\x17\xAB\0 \xAB\0'\xAB\0(\xAB\0/\xAB\x000\xAB\0[\xAB\0\\\xAB\0j\xAB\0p\xAB\0\xEB\xAB\0\xF0\xAB\0\xFA\xAB\0\0\xAC\0\xA4\xD7\0\xB0\xD7\0\xC7\xD7\0\xCB\xD7\0\xFC\xD7\0\0\xF9\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\0)\xFB\0*\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xB2\xFB\0\xD3\xFB\0>\xFD\0P\xFD\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xF0\xFD\0\xFC\xFD\0p\xFE\0u\xFE\0v\xFE\0\xFD\xFE\0\x10\xFF\0\x1A\xFF\0!\xFF\0;\xFF\0A\xFF\0[\xFF\0f\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\0\0\x01\x0C\0\x01\r\0\x01'\0\x01(\0\x01;\0\x01<\0\x01>\0\x01?\0\x01N\0\x01P\0\x01^\0\x01\x80\0\x01\xFB\0\x01@\x01\x01u\x01\x01\x80\x02\x01\x9D\x02\x01\xA0\x02\x01\xD1\x02\x01\0\x03\x01 \x03\x01-\x03\x01K\x03\x01P\x03\x01{\x03\x01\x80\x03\x01\x9E\x03\x01\xA0\x03\x01\xC4\x03\x01\xC8\x03\x01\xD0\x03\x01\xD1\x03\x01\xD6\x03\x01\0\x04\x01\x9E\x04\x01\xA0\x04\x01\xAA\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01\0\x05\x01(\x05\x010\x05\x01d\x05\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x05\x01\xF4\x05\x01\0\x06\x017\x07\x01@\x07\x01V\x07\x01`\x07\x01h\x07\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\0\x08\x01\x06\x08\x01\x08\x08\x01\t\x08\x01\n\x08\x016\x08\x017\x08\x019\x08\x01<\x08\x01=\x08\x01?\x08\x01V\x08\x01`\x08\x01w\x08\x01\x80\x08\x01\x9F\x08\x01\xE0\x08\x01\xF3\x08\x01\xF4\x08\x01\xF6\x08\x01\0\t\x01\x16\t\x01 \t\x01:\t\x01\x80\t\x01\xB8\t\x01\xBE\t\x01\xC0\t\x01\0\n\x01\x04\n\x01\x05\n\x01\x07\n\x01\x0C\n\x01\x14\n\x01\x15\n\x01\x18\n\x01\x19\n\x016\n\x01`\n\x01}\n\x01\x80\n\x01\x9D\n\x01\xC0\n\x01\xC8\n\x01\xC9\n\x01\xE5\n\x01\0\x0B\x016\x0B\x01@\x0B\x01V\x0B\x01`\x0B\x01s\x0B\x01\x80\x0B\x01\x92\x0B\x01\0\x0C\x01I\x0C\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01\0\r\x01(\r\x010\r\x01:\r\x01@\r\x01f\r\x01i\r\x01j\r\x01o\r\x01\x86\r\x01\x80\x0E\x01\xAA\x0E\x01\xAB\x0E\x01\xAD\x0E\x01\xB0\x0E\x01\xB2\x0E\x01\xC2\x0E\x01\xC5\x0E\x01\xFC\x0E\x01\xFD\x0E\x01\0\x0F\x01\x1D\x0F\x01'\x0F\x01(\x0F\x010\x0F\x01F\x0F\x01p\x0F\x01\x82\x0F\x01\xB0\x0F\x01\xC5\x0F\x01\xE0\x0F\x01\xF7\x0F\x01\0\x10\x01F\x10\x01f\x10\x01p\x10\x01q\x10\x01v\x10\x01\x80\x10\x01\xB9\x10\x01\xC2\x10\x01\xC3\x10\x01\xD0\x10\x01\xE9\x10\x01\xF0\x10\x01\xFA\x10\x01\0\x11\x013\x11\x016\x11\x01@\x11\x01D\x11\x01H\x11\x01P\x11\x01s\x11\x01v\x11\x01w\x11\x01\x80\x11\x01\xC0\x11\x01\xC1\x11\x01\xC5\x11\x01\xCE\x11\x01\xDB\x11\x01\xDC\x11\x01\xDD\x11\x01\0\x12\x01\x12\x12\x01\x13\x12\x015\x12\x017\x12\x018\x12\x01>\x12\x01B\x12\x01\x80\x12\x01\x87\x12\x01\x88\x12\x01\x89\x12\x01\x8A\x12\x01\x8E\x12\x01\x8F\x12\x01\x9E\x12\x01\x9F\x12\x01\xA9\x12\x01\xB0\x12\x01\xE9\x12\x01\xF0\x12\x01\xFA\x12\x01\0\x13\x01\x04\x13\x01\x05\x13\x01\r\x13\x01\x0F\x13\x01\x11\x13\x01\x13\x13\x01)\x13\x01*\x13\x011\x13\x012\x13\x014\x13\x015\x13\x01:\x13\x01=\x13\x01E\x13\x01G\x13\x01I\x13\x01K\x13\x01M\x13\x01P\x13\x01Q\x13\x01W\x13\x01X\x13\x01]\x13\x01d\x13\x01\x80\x13\x01\x8A\x13\x01\x8B\x13\x01\x8C\x13\x01\x8E\x13\x01\x8F\x13\x01\x90\x13\x01\xB6\x13\x01\xB7\x13\x01\xC1\x13\x01\xC2\x13\x01\xC3\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xCB\x13\x01\xCC\x13\x01\xCE\x13\x01\xD1\x13\x01\xD2\x13\x01\xD3\x13\x01\xD4\x13\x01\0\x14\x01B\x14\x01C\x14\x01F\x14\x01G\x14\x01K\x14\x01P\x14\x01Z\x14\x01_\x14\x01b\x14\x01\x80\x14\x01\xC2\x14\x01\xC4\x14\x01\xC6\x14\x01\xC7\x14\x01\xC8\x14\x01\xD0\x14\x01\xDA\x14\x01\x80\x15\x01\xB6\x15\x01\xB8\x15\x01\xBF\x15\x01\xD8\x15\x01\xDE\x15\x01\0\x16\x01?\x16\x01@\x16\x01A\x16\x01D\x16\x01E\x16\x01P\x16\x01Z\x16\x01\x80\x16\x01\xB6\x16\x01\xB8\x16\x01\xB9\x16\x01\xC0\x16\x01\xCA\x16\x01\xD0\x16\x01\xE4\x16\x01\0\x17\x01\x1B\x17\x01\x1D\x17\x01+\x17\x010\x17\x01:\x17\x01@\x17\x01G\x17\x01\0\x18\x019\x18\x01\xA0\x18\x01\xEA\x18\x01\xFF\x18\x01\x07\x19\x01\t\x19\x01\n\x19\x01\x0C\x19\x01\x14\x19\x01\x15\x19\x01\x17\x19\x01\x18\x19\x016\x19\x017\x19\x019\x19\x01;\x19\x01=\x19\x01?\x19\x01C\x19\x01P\x19\x01Z\x19\x01\xA0\x19\x01\xA8\x19\x01\xAA\x19\x01\xD8\x19\x01\xDA\x19\x01\xE0\x19\x01\xE1\x19\x01\xE2\x19\x01\xE3\x19\x01\xE5\x19\x01\0\x1A\x013\x1A\x015\x1A\x01?\x1A\x01P\x1A\x01\x98\x1A\x01\x9D\x1A\x01\x9E\x1A\x01\xB0\x1A\x01\xF9\x1A\x01\xC0\x1B\x01\xE1\x1B\x01\xF0\x1B\x01\xFA\x1B\x01\0\x1C\x01\t\x1C\x01\n\x1C\x017\x1C\x018\x1C\x01?\x1C\x01@\x1C\x01A\x1C\x01P\x1C\x01Z\x1C\x01r\x1C\x01\x90\x1C\x01\x92\x1C\x01\xA8\x1C\x01\xA9\x1C\x01\xB7\x1C\x01\0\x1D\x01\x07\x1D\x01\x08\x1D\x01\n\x1D\x01\x0B\x1D\x017\x1D\x01:\x1D\x01;\x1D\x01<\x1D\x01>\x1D\x01?\x1D\x01B\x1D\x01C\x1D\x01D\x1D\x01F\x1D\x01H\x1D\x01P\x1D\x01Z\x1D\x01`\x1D\x01f\x1D\x01g\x1D\x01i\x1D\x01j\x1D\x01\x8F\x1D\x01\x90\x1D\x01\x92\x1D\x01\x93\x1D\x01\x97\x1D\x01\x98\x1D\x01\x99\x1D\x01\xA0\x1D\x01\xAA\x1D\x01\xE0\x1E\x01\xF7\x1E\x01\0\x1F\x01\x11\x1F\x01\x12\x1F\x01;\x1F\x01>\x1F\x01A\x1F\x01P\x1F\x01Z\x1F\x01\xB0\x1F\x01\xB1\x1F\x01\0 \x01\x9A#\x01\0$\x01o$\x01\x80$\x01D%\x01\x90/\x01\xF1/\x01\x000\x0104\x01A4\x01G4\x01`4\x01\xFBC\x01\0D\x01GF\x01\0a\x01/a\x010a\x01:a\x01\0h\x019j\x01@j\x01_j\x01`j\x01jj\x01pj\x01\xBFj\x01\xC0j\x01\xCAj\x01\xD0j\x01\xEEj\x01\0k\x010k\x01@k\x01Dk\x01Pk\x01Zk\x01ck\x01xk\x01}k\x01\x90k\x01@m\x01mm\x01pm\x01zm\x01@n\x01\x80n\x01\0o\x01Ko\x01Oo\x01\x88o\x01\x8Fo\x01\xA0o\x01\xE0o\x01\xE2o\x01\xE3o\x01\xE4o\x01\xF0o\x01\xF2o\x01\0p\x01\xF8\x87\x01\0\x88\x01\xD6\x8C\x01\xFF\x8C\x01\t\x8D\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\0\xB0\x01#\xB1\x012\xB1\x013\xB1\x01P\xB1\x01S\xB1\x01U\xB1\x01V\xB1\x01d\xB1\x01h\xB1\x01p\xB1\x01\xFC\xB2\x01\0\xBC\x01k\xBC\x01p\xBC\x01}\xBC\x01\x80\xBC\x01\x89\xBC\x01\x90\xBC\x01\x9A\xBC\x01\x9E\xBC\x01\x9F\xBC\x01\xF0\xCC\x01\xFA\xCC\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xC1\xD6\x01\xC2\xD6\x01\xDB\xD6\x01\xDC\xD6\x01\xFB\xD6\x01\xFC\xD6\x01\x15\xD7\x01\x16\xD7\x015\xD7\x016\xD7\x01O\xD7\x01P\xD7\x01o\xD7\x01p\xD7\x01\x89\xD7\x01\x8A\xD7\x01\xA9\xD7\x01\xAA\xD7\x01\xC3\xD7\x01\xC4\xD7\x01\xCC\xD7\x01\xCE\xD7\x01\0\xD8\x01\0\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x010\xE0\x01n\xE0\x01\x8F\xE0\x01\x90\xE0\x01\0\xE1\x01-\xE1\x017\xE1\x01>\xE1\x01@\xE1\x01J\xE1\x01N\xE1\x01O\xE1\x01\x90\xE2\x01\xAE\xE2\x01\xC0\xE2\x01\xEC\xE2\x01\xF0\xE2\x01\xFA\xE2\x01\xD0\xE4\x01\xEC\xE4\x01\xF0\xE4\x01\xFA\xE4\x01\xD0\xE5\x01\xEE\xE5\x01\xF0\xE5\x01\xFB\xE5\x01\xE0\xE7\x01\xE7\xE7\x01\xE8\xE7\x01\xEC\xE7\x01\xED\xE7\x01\xEF\xE7\x01\xF0\xE7\x01\xFF\xE7\x01\0\xE8\x01\xC5\xE8\x01\0\xE9\x01D\xE9\x01G\xE9\x01H\xE9\x01K\xE9\x01L\xE9\x01P\xE9\x01Z\xE9\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x010\xF1\x01J\xF1\x01P\xF1\x01j\xF1\x01p\xF1\x01\x8A\xF1\x01\xF0\xFB\x01\xFA\xFB\x01\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\xF8\x02\x1E\xFA\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03") }, 143519u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryAlnumV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryAlnumV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_ALNUM_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryAlnumV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_alnum_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryAlnumV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_alnum_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryAlnumV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryAlnumV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_alnum_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryAlnumV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryAlnumV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryAlnumV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_alnum_v1 as impl_property_binary_alnum_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_alphabetic_v1.rs.data b/vendor/icu_properties_data/data/property_binary_alphabetic_v1.rs.data
new file mode 100644
index 00000000..60619319
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_alphabetic_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryAlphabeticV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4574B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_alphabetic_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_ALPHABETIC_V1: &'static <icu::properties::provider::PropertyBinaryAlphabeticV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0[\0\0a\0\0{\0\0\xAA\0\0\xAB\0\0\xB5\0\0\xB6\0\0\xBA\0\0\xBB\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\0\xC2\x02\0\xC6\x02\0\xD2\x02\0\xE0\x02\0\xE5\x02\0\xEC\x02\0\xED\x02\0\xEE\x02\0\xEF\x02\0E\x03\0F\x03\0c\x03\0u\x03\0v\x03\0x\x03\0z\x03\0~\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\0\xF6\x03\0\xF7\x03\0\x82\x04\0\x8A\x04\x000\x05\x001\x05\0W\x05\0Y\x05\0Z\x05\0`\x05\0\x89\x05\0\xB0\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\xD0\x05\0\xEB\x05\0\xEF\x05\0\xF3\x05\0\x10\x06\0\x1B\x06\0 \x06\0X\x06\0Y\x06\0`\x06\0n\x06\0\xD4\x06\0\xD5\x06\0\xDD\x06\0\xE1\x06\0\xE9\x06\0\xED\x06\0\xF0\x06\0\xFA\x06\0\xFD\x06\0\xFF\x06\0\0\x07\0\x10\x07\0@\x07\0M\x07\0\xB2\x07\0\xCA\x07\0\xEB\x07\0\xF4\x07\0\xF6\x07\0\xFA\x07\0\xFB\x07\0\0\x08\0\x18\x08\0\x1A\x08\0-\x08\0@\x08\0Y\x08\0`\x08\0k\x08\0p\x08\0\x88\x08\0\x89\x08\0\x8F\x08\0\x97\x08\0\x98\x08\0\xA0\x08\0\xCA\x08\0\xD4\x08\0\xE0\x08\0\xE3\x08\0\xEA\x08\0\xF0\x08\0<\t\0=\t\0M\t\0N\t\0Q\t\0U\t\0d\t\0q\t\0\x84\t\0\x85\t\0\x8D\t\0\x8F\t\0\x91\t\0\x93\t\0\xA9\t\0\xAA\t\0\xB1\t\0\xB2\t\0\xB3\t\0\xB6\t\0\xBA\t\0\xBD\t\0\xC5\t\0\xC7\t\0\xC9\t\0\xCB\t\0\xCD\t\0\xCE\t\0\xCF\t\0\xD7\t\0\xD8\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE4\t\0\xF0\t\0\xF2\t\0\xFC\t\0\xFD\t\0\x01\n\0\x04\n\0\x05\n\0\x0B\n\0\x0F\n\0\x11\n\0\x13\n\0)\n\0*\n\x001\n\x002\n\x004\n\x005\n\x007\n\08\n\0:\n\0>\n\0C\n\0G\n\0I\n\0K\n\0M\n\0Q\n\0R\n\0Y\n\0]\n\0^\n\0_\n\0p\n\0v\n\0\x81\n\0\x84\n\0\x85\n\0\x8E\n\0\x8F\n\0\x92\n\0\x93\n\0\xA9\n\0\xAA\n\0\xB1\n\0\xB2\n\0\xB4\n\0\xB5\n\0\xBA\n\0\xBD\n\0\xC6\n\0\xC7\n\0\xCA\n\0\xCB\n\0\xCD\n\0\xD0\n\0\xD1\n\0\xE0\n\0\xE4\n\0\xF9\n\0\xFD\n\0\x01\x0B\0\x04\x0B\0\x05\x0B\0\r\x0B\0\x0F\x0B\0\x11\x0B\0\x13\x0B\0)\x0B\0*\x0B\x001\x0B\x002\x0B\x004\x0B\x005\x0B\0:\x0B\0=\x0B\0E\x0B\0G\x0B\0I\x0B\0K\x0B\0M\x0B\0V\x0B\0X\x0B\0\\\x0B\0^\x0B\0_\x0B\0d\x0B\0q\x0B\0r\x0B\0\x82\x0B\0\x84\x0B\0\x85\x0B\0\x8B\x0B\0\x8E\x0B\0\x91\x0B\0\x92\x0B\0\x96\x0B\0\x99\x0B\0\x9B\x0B\0\x9C\x0B\0\x9D\x0B\0\x9E\x0B\0\xA0\x0B\0\xA3\x0B\0\xA5\x0B\0\xA8\x0B\0\xAB\x0B\0\xAE\x0B\0\xBA\x0B\0\xBE\x0B\0\xC3\x0B\0\xC6\x0B\0\xC9\x0B\0\xCA\x0B\0\xCD\x0B\0\xD0\x0B\0\xD1\x0B\0\xD7\x0B\0\xD8\x0B\0\0\x0C\0\r\x0C\0\x0E\x0C\0\x11\x0C\0\x12\x0C\0)\x0C\0*\x0C\0:\x0C\0=\x0C\0E\x0C\0F\x0C\0I\x0C\0J\x0C\0M\x0C\0U\x0C\0W\x0C\0X\x0C\0[\x0C\0]\x0C\0^\x0C\0`\x0C\0d\x0C\0\x80\x0C\0\x84\x0C\0\x85\x0C\0\x8D\x0C\0\x8E\x0C\0\x91\x0C\0\x92\x0C\0\xA9\x0C\0\xAA\x0C\0\xB4\x0C\0\xB5\x0C\0\xBA\x0C\0\xBD\x0C\0\xC5\x0C\0\xC6\x0C\0\xC9\x0C\0\xCA\x0C\0\xCD\x0C\0\xD5\x0C\0\xD7\x0C\0\xDD\x0C\0\xDF\x0C\0\xE0\x0C\0\xE4\x0C\0\xF1\x0C\0\xF4\x0C\0\0\r\0\r\r\0\x0E\r\0\x11\r\0\x12\r\0;\r\0=\r\0E\r\0F\r\0I\r\0J\r\0M\r\0N\r\0O\r\0T\r\0X\r\0_\r\0d\r\0z\r\0\x80\r\0\x81\r\0\x84\r\0\x85\r\0\x97\r\0\x9A\r\0\xB2\r\0\xB3\r\0\xBC\r\0\xBD\r\0\xBE\r\0\xC0\r\0\xC7\r\0\xCF\r\0\xD5\r\0\xD6\r\0\xD7\r\0\xD8\r\0\xE0\r\0\xF2\r\0\xF4\r\0\x01\x0E\0;\x0E\0@\x0E\0G\x0E\0M\x0E\0N\x0E\0\x81\x0E\0\x83\x0E\0\x84\x0E\0\x85\x0E\0\x86\x0E\0\x8B\x0E\0\x8C\x0E\0\xA4\x0E\0\xA5\x0E\0\xA6\x0E\0\xA7\x0E\0\xBA\x0E\0\xBB\x0E\0\xBE\x0E\0\xC0\x0E\0\xC5\x0E\0\xC6\x0E\0\xC7\x0E\0\xCD\x0E\0\xCE\x0E\0\xDC\x0E\0\xE0\x0E\0\0\x0F\0\x01\x0F\0@\x0F\0H\x0F\0I\x0F\0m\x0F\0q\x0F\0\x84\x0F\0\x88\x0F\0\x98\x0F\0\x99\x0F\0\xBD\x0F\0\0\x10\x007\x10\08\x10\09\x10\0;\x10\0@\x10\0P\x10\0\x90\x10\0\x9A\x10\0\x9E\x10\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0\xFB\x10\0\xFC\x10\0I\x12\0J\x12\0N\x12\0P\x12\0W\x12\0X\x12\0Y\x12\0Z\x12\0^\x12\0`\x12\0\x89\x12\0\x8A\x12\0\x8E\x12\0\x90\x12\0\xB1\x12\0\xB2\x12\0\xB6\x12\0\xB8\x12\0\xBF\x12\0\xC0\x12\0\xC1\x12\0\xC2\x12\0\xC6\x12\0\xC8\x12\0\xD7\x12\0\xD8\x12\0\x11\x13\0\x12\x13\0\x16\x13\0\x18\x13\0[\x13\0\x80\x13\0\x90\x13\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\x01\x14\0m\x16\0o\x16\0\x80\x16\0\x81\x16\0\x9B\x16\0\xA0\x16\0\xEB\x16\0\xEE\x16\0\xF9\x16\0\0\x17\0\x14\x17\0\x1F\x17\x004\x17\0@\x17\0T\x17\0`\x17\0m\x17\0n\x17\0q\x17\0r\x17\0t\x17\0\x80\x17\0\xB4\x17\0\xB6\x17\0\xC9\x17\0\xD7\x17\0\xD8\x17\0\xDC\x17\0\xDD\x17\0 \x18\0y\x18\0\x80\x18\0\xAB\x18\0\xB0\x18\0\xF6\x18\0\0\x19\0\x1F\x19\0 \x19\0,\x19\x000\x19\09\x19\0P\x19\0n\x19\0p\x19\0u\x19\0\x80\x19\0\xAC\x19\0\xB0\x19\0\xCA\x19\0\0\x1A\0\x1C\x1A\0 \x1A\0_\x1A\0a\x1A\0u\x1A\0\xA7\x1A\0\xA8\x1A\0\xBF\x1A\0\xC1\x1A\0\xCC\x1A\0\xCF\x1A\0\0\x1B\x004\x1B\x005\x1B\0D\x1B\0E\x1B\0M\x1B\0\x80\x1B\0\xAA\x1B\0\xAC\x1B\0\xB0\x1B\0\xBA\x1B\0\xE6\x1B\0\xE7\x1B\0\xF2\x1B\0\0\x1C\x007\x1C\0M\x1C\0P\x1C\0Z\x1C\0~\x1C\0\x80\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF7\x1C\0\xFA\x1C\0\xFB\x1C\0\0\x1D\0\xC0\x1D\0\xD3\x1D\0\xF5\x1D\0\0\x1E\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xCD\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xE0\x1F\0\xED\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFD\x1F\0q \0r \0\x7F \0\x80 \0\x90 \0\x9D \0\x02!\0\x03!\0\x07!\0\x08!\0\n!\0\x14!\0\x15!\0\x16!\0\x19!\0\x1E!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0.!\0/!\0:!\0<!\0@!\0E!\0J!\0N!\0O!\0`!\0\x89!\0\xB6$\0\xEA$\0\0,\0\xE5,\0\xEB,\0\xEF,\0\xF2,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\x000-\0h-\0o-\0p-\0\x80-\0\x97-\0\xA0-\0\xA7-\0\xA8-\0\xAF-\0\xB0-\0\xB7-\0\xB8-\0\xBF-\0\xC0-\0\xC7-\0\xC8-\0\xCF-\0\xD0-\0\xD7-\0\xD8-\0\xDF-\0\xE0-\0\0.\0/.\x000.\0\x050\0\x080\0!0\0*0\x0010\x0060\080\0=0\0A0\0\x970\0\x9D0\0\xA00\0\xA10\0\xFB0\0\xFC0\0\x001\0\x051\x0001\x0011\0\x8F1\0\xA01\0\xC01\0\xF01\0\x002\0\x004\0\xC0M\0\0N\0\x8D\xA4\0\xD0\xA4\0\xFE\xA4\0\0\xA5\0\r\xA6\0\x10\xA6\0 \xA6\0*\xA6\0,\xA6\0@\xA6\0o\xA6\0t\xA6\0|\xA6\0\x7F\xA6\0\xF0\xA6\0\x17\xA7\0 \xA7\0\"\xA7\0\x89\xA7\0\x8B\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xDD\xA7\0\xF2\xA7\0\x06\xA8\0\x07\xA8\0(\xA8\0@\xA8\0t\xA8\0\x80\xA8\0\xC4\xA8\0\xC5\xA8\0\xC6\xA8\0\xF2\xA8\0\xF8\xA8\0\xFB\xA8\0\xFC\xA8\0\xFD\xA8\0\0\xA9\0\n\xA9\0+\xA9\x000\xA9\0S\xA9\0`\xA9\0}\xA9\0\x80\xA9\0\xB3\xA9\0\xB4\xA9\0\xC0\xA9\0\xCF\xA9\0\xD0\xA9\0\xE0\xA9\0\xF0\xA9\0\xFA\xA9\0\xFF\xA9\0\0\xAA\x007\xAA\0@\xAA\0N\xAA\0`\xAA\0w\xAA\0z\xAA\0\xBF\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xC3\xAA\0\xDB\xAA\0\xDE\xAA\0\xE0\xAA\0\xF0\xAA\0\xF2\xAA\0\xF6\xAA\0\x01\xAB\0\x07\xAB\0\t\xAB\0\x0F\xAB\0\x11\xAB\0\x17\xAB\0 \xAB\0'\xAB\0(\xAB\0/\xAB\x000\xAB\0[\xAB\0\\\xAB\0j\xAB\0p\xAB\0\xEB\xAB\0\0\xAC\0\xA4\xD7\0\xB0\xD7\0\xC7\xD7\0\xCB\xD7\0\xFC\xD7\0\0\xF9\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\0)\xFB\0*\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xB2\xFB\0\xD3\xFB\0>\xFD\0P\xFD\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xF0\xFD\0\xFC\xFD\0p\xFE\0u\xFE\0v\xFE\0\xFD\xFE\0!\xFF\0;\xFF\0A\xFF\0[\xFF\0f\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\0\0\x01\x0C\0\x01\r\0\x01'\0\x01(\0\x01;\0\x01<\0\x01>\0\x01?\0\x01N\0\x01P\0\x01^\0\x01\x80\0\x01\xFB\0\x01@\x01\x01u\x01\x01\x80\x02\x01\x9D\x02\x01\xA0\x02\x01\xD1\x02\x01\0\x03\x01 \x03\x01-\x03\x01K\x03\x01P\x03\x01{\x03\x01\x80\x03\x01\x9E\x03\x01\xA0\x03\x01\xC4\x03\x01\xC8\x03\x01\xD0\x03\x01\xD1\x03\x01\xD6\x03\x01\0\x04\x01\x9E\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01\0\x05\x01(\x05\x010\x05\x01d\x05\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x05\x01\xF4\x05\x01\0\x06\x017\x07\x01@\x07\x01V\x07\x01`\x07\x01h\x07\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\0\x08\x01\x06\x08\x01\x08\x08\x01\t\x08\x01\n\x08\x016\x08\x017\x08\x019\x08\x01<\x08\x01=\x08\x01?\x08\x01V\x08\x01`\x08\x01w\x08\x01\x80\x08\x01\x9F\x08\x01\xE0\x08\x01\xF3\x08\x01\xF4\x08\x01\xF6\x08\x01\0\t\x01\x16\t\x01 \t\x01:\t\x01\x80\t\x01\xB8\t\x01\xBE\t\x01\xC0\t\x01\0\n\x01\x04\n\x01\x05\n\x01\x07\n\x01\x0C\n\x01\x14\n\x01\x15\n\x01\x18\n\x01\x19\n\x016\n\x01`\n\x01}\n\x01\x80\n\x01\x9D\n\x01\xC0\n\x01\xC8\n\x01\xC9\n\x01\xE5\n\x01\0\x0B\x016\x0B\x01@\x0B\x01V\x0B\x01`\x0B\x01s\x0B\x01\x80\x0B\x01\x92\x0B\x01\0\x0C\x01I\x0C\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01\0\r\x01(\r\x01J\r\x01f\r\x01i\r\x01j\r\x01o\r\x01\x86\r\x01\x80\x0E\x01\xAA\x0E\x01\xAB\x0E\x01\xAD\x0E\x01\xB0\x0E\x01\xB2\x0E\x01\xC2\x0E\x01\xC5\x0E\x01\xFC\x0E\x01\xFD\x0E\x01\0\x0F\x01\x1D\x0F\x01'\x0F\x01(\x0F\x010\x0F\x01F\x0F\x01p\x0F\x01\x82\x0F\x01\xB0\x0F\x01\xC5\x0F\x01\xE0\x0F\x01\xF7\x0F\x01\0\x10\x01F\x10\x01q\x10\x01v\x10\x01\x80\x10\x01\xB9\x10\x01\xC2\x10\x01\xC3\x10\x01\xD0\x10\x01\xE9\x10\x01\0\x11\x013\x11\x01D\x11\x01H\x11\x01P\x11\x01s\x11\x01v\x11\x01w\x11\x01\x80\x11\x01\xC0\x11\x01\xC1\x11\x01\xC5\x11\x01\xCE\x11\x01\xD0\x11\x01\xDA\x11\x01\xDB\x11\x01\xDC\x11\x01\xDD\x11\x01\0\x12\x01\x12\x12\x01\x13\x12\x015\x12\x017\x12\x018\x12\x01>\x12\x01B\x12\x01\x80\x12\x01\x87\x12\x01\x88\x12\x01\x89\x12\x01\x8A\x12\x01\x8E\x12\x01\x8F\x12\x01\x9E\x12\x01\x9F\x12\x01\xA9\x12\x01\xB0\x12\x01\xE9\x12\x01\0\x13\x01\x04\x13\x01\x05\x13\x01\r\x13\x01\x0F\x13\x01\x11\x13\x01\x13\x13\x01)\x13\x01*\x13\x011\x13\x012\x13\x014\x13\x015\x13\x01:\x13\x01=\x13\x01E\x13\x01G\x13\x01I\x13\x01K\x13\x01M\x13\x01P\x13\x01Q\x13\x01W\x13\x01X\x13\x01]\x13\x01d\x13\x01\x80\x13\x01\x8A\x13\x01\x8B\x13\x01\x8C\x13\x01\x8E\x13\x01\x8F\x13\x01\x90\x13\x01\xB6\x13\x01\xB7\x13\x01\xC1\x13\x01\xC2\x13\x01\xC3\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xCB\x13\x01\xCC\x13\x01\xCE\x13\x01\xD1\x13\x01\xD2\x13\x01\xD3\x13\x01\xD4\x13\x01\0\x14\x01B\x14\x01C\x14\x01F\x14\x01G\x14\x01K\x14\x01_\x14\x01b\x14\x01\x80\x14\x01\xC2\x14\x01\xC4\x14\x01\xC6\x14\x01\xC7\x14\x01\xC8\x14\x01\x80\x15\x01\xB6\x15\x01\xB8\x15\x01\xBF\x15\x01\xD8\x15\x01\xDE\x15\x01\0\x16\x01?\x16\x01@\x16\x01A\x16\x01D\x16\x01E\x16\x01\x80\x16\x01\xB6\x16\x01\xB8\x16\x01\xB9\x16\x01\0\x17\x01\x1B\x17\x01\x1D\x17\x01+\x17\x01@\x17\x01G\x17\x01\0\x18\x019\x18\x01\xA0\x18\x01\xE0\x18\x01\xFF\x18\x01\x07\x19\x01\t\x19\x01\n\x19\x01\x0C\x19\x01\x14\x19\x01\x15\x19\x01\x17\x19\x01\x18\x19\x016\x19\x017\x19\x019\x19\x01;\x19\x01=\x19\x01?\x19\x01C\x19\x01\xA0\x19\x01\xA8\x19\x01\xAA\x19\x01\xD8\x19\x01\xDA\x19\x01\xE0\x19\x01\xE1\x19\x01\xE2\x19\x01\xE3\x19\x01\xE5\x19\x01\0\x1A\x013\x1A\x015\x1A\x01?\x1A\x01P\x1A\x01\x98\x1A\x01\x9D\x1A\x01\x9E\x1A\x01\xB0\x1A\x01\xF9\x1A\x01\xC0\x1B\x01\xE1\x1B\x01\0\x1C\x01\t\x1C\x01\n\x1C\x017\x1C\x018\x1C\x01?\x1C\x01@\x1C\x01A\x1C\x01r\x1C\x01\x90\x1C\x01\x92\x1C\x01\xA8\x1C\x01\xA9\x1C\x01\xB7\x1C\x01\0\x1D\x01\x07\x1D\x01\x08\x1D\x01\n\x1D\x01\x0B\x1D\x017\x1D\x01:\x1D\x01;\x1D\x01<\x1D\x01>\x1D\x01?\x1D\x01B\x1D\x01C\x1D\x01D\x1D\x01F\x1D\x01H\x1D\x01`\x1D\x01f\x1D\x01g\x1D\x01i\x1D\x01j\x1D\x01\x8F\x1D\x01\x90\x1D\x01\x92\x1D\x01\x93\x1D\x01\x97\x1D\x01\x98\x1D\x01\x99\x1D\x01\xE0\x1E\x01\xF7\x1E\x01\0\x1F\x01\x11\x1F\x01\x12\x1F\x01;\x1F\x01>\x1F\x01A\x1F\x01\xB0\x1F\x01\xB1\x1F\x01\0 \x01\x9A#\x01\0$\x01o$\x01\x80$\x01D%\x01\x90/\x01\xF1/\x01\x000\x0104\x01A4\x01G4\x01`4\x01\xFBC\x01\0D\x01GF\x01\0a\x01/a\x01\0h\x019j\x01@j\x01_j\x01pj\x01\xBFj\x01\xD0j\x01\xEEj\x01\0k\x010k\x01@k\x01Dk\x01ck\x01xk\x01}k\x01\x90k\x01@m\x01mm\x01@n\x01\x80n\x01\0o\x01Ko\x01Oo\x01\x88o\x01\x8Fo\x01\xA0o\x01\xE0o\x01\xE2o\x01\xE3o\x01\xE4o\x01\xF0o\x01\xF2o\x01\0p\x01\xF8\x87\x01\0\x88\x01\xD6\x8C\x01\xFF\x8C\x01\t\x8D\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\0\xB0\x01#\xB1\x012\xB1\x013\xB1\x01P\xB1\x01S\xB1\x01U\xB1\x01V\xB1\x01d\xB1\x01h\xB1\x01p\xB1\x01\xFC\xB2\x01\0\xBC\x01k\xBC\x01p\xBC\x01}\xBC\x01\x80\xBC\x01\x89\xBC\x01\x90\xBC\x01\x9A\xBC\x01\x9E\xBC\x01\x9F\xBC\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xC1\xD6\x01\xC2\xD6\x01\xDB\xD6\x01\xDC\xD6\x01\xFB\xD6\x01\xFC\xD6\x01\x15\xD7\x01\x16\xD7\x015\xD7\x016\xD7\x01O\xD7\x01P\xD7\x01o\xD7\x01p\xD7\x01\x89\xD7\x01\x8A\xD7\x01\xA9\xD7\x01\xAA\xD7\x01\xC3\xD7\x01\xC4\xD7\x01\xCC\xD7\x01\0\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x010\xE0\x01n\xE0\x01\x8F\xE0\x01\x90\xE0\x01\0\xE1\x01-\xE1\x017\xE1\x01>\xE1\x01N\xE1\x01O\xE1\x01\x90\xE2\x01\xAE\xE2\x01\xC0\xE2\x01\xEC\xE2\x01\xD0\xE4\x01\xEC\xE4\x01\xD0\xE5\x01\xEE\xE5\x01\xF0\xE5\x01\xF1\xE5\x01\xE0\xE7\x01\xE7\xE7\x01\xE8\xE7\x01\xEC\xE7\x01\xED\xE7\x01\xEF\xE7\x01\xF0\xE7\x01\xFF\xE7\x01\0\xE8\x01\xC5\xE8\x01\0\xE9\x01D\xE9\x01G\xE9\x01H\xE9\x01K\xE9\x01L\xE9\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x010\xF1\x01J\xF1\x01P\xF1\x01j\xF1\x01p\xF1\x01\x8A\xF1\x01\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\xF8\x02\x1E\xFA\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03") }, 142759u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryAlphabeticV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryAlphabeticV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_ALPHABETIC_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryAlphabeticV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_alphabetic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryAlphabeticV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_alphabetic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryAlphabeticV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryAlphabeticV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_alphabetic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryAlphabeticV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryAlphabeticV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryAlphabeticV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_alphabetic_v1 as impl_property_binary_alphabetic_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_ascii_hex_digit_v1.rs.data b/vendor/icu_properties_data/data/property_binary_ascii_hex_digit_v1.rs.data
new file mode 100644
index 00000000..45c277b0
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_ascii_hex_digit_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryAsciiHexDigitV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 50B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_ascii_hex_digit_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_ASCII_HEX_DIGIT_V1: &'static <icu::properties::provider::PropertyBinaryAsciiHexDigitV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"0\0\0:\0\0A\0\0G\0\0a\0\0g\0\0") }, 22u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryAsciiHexDigitV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryAsciiHexDigitV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_ASCII_HEX_DIGIT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryAsciiHexDigitV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_ascii_hex_digit_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryAsciiHexDigitV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_ascii_hex_digit_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryAsciiHexDigitV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryAsciiHexDigitV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_ascii_hex_digit_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryAsciiHexDigitV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryAsciiHexDigitV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryAsciiHexDigitV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_ascii_hex_digit_v1 as impl_property_binary_ascii_hex_digit_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_basic_emoji_v1.rs.data b/vendor/icu_properties_data/data/property_binary_basic_emoji_v1.rs.data
new file mode 100644
index 00000000..668bd243
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_basic_emoji_v1.rs.data
@@ -0,0 +1,86 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryBasicEmojiV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 2281B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_basic_emoji_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1: &'static <icu::properties::provider::PropertyBinaryBasicEmojiV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyUnicodeSet::CPInversionListStrList(icu::collections::codepointinvliststringlist::CodePointInversionListAndStringList::from_parts_unchecked(
+                unsafe {
+                    #[allow(unused_unsafe)]
+                    icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x1A#\0\x1C#\0\xE9#\0\xED#\0\xF0#\0\xF1#\0\xF3#\0\xF4#\0\xFD%\0\xFF%\0\x14&\0\x16&\0H&\0T&\0\x7F&\0\x80&\0\x93&\0\x94&\0\xA1&\0\xA2&\0\xAA&\0\xAC&\0\xBD&\0\xBF&\0\xC4&\0\xC6&\0\xCE&\0\xCF&\0\xD4&\0\xD5&\0\xEA&\0\xEB&\0\xF2&\0\xF4&\0\xF5&\0\xF6&\0\xFA&\0\xFB&\0\xFD&\0\xFE&\0\x05'\0\x06'\0\n'\0\x0C'\0('\0)'\0L'\0M'\0N'\0O'\0S'\0V'\0W'\0X'\0\x95'\0\x98'\0\xB0'\0\xB1'\0\xBF'\0\xC0'\0\x1B+\0\x1D+\0P+\0Q+\0U+\0V+\0\x04\xF0\x01\x05\xF0\x01\xCF\xF0\x01\xD0\xF0\x01\x8E\xF1\x01\x8F\xF1\x01\x91\xF1\x01\x9B\xF1\x01\x01\xF2\x01\x02\xF2\x01\x1A\xF2\x01\x1B\xF2\x01/\xF2\x010\xF2\x012\xF2\x017\xF2\x018\xF2\x01;\xF2\x01P\xF2\x01R\xF2\x01\0\xF3\x01!\xF3\x01-\xF3\x016\xF3\x017\xF3\x01}\xF3\x01~\xF3\x01\x94\xF3\x01\xA0\xF3\x01\xCB\xF3\x01\xCF\xF3\x01\xD4\xF3\x01\xE0\xF3\x01\xF1\xF3\x01\xF4\xF3\x01\xF5\xF3\x01\xF8\xF3\x01?\xF4\x01@\xF4\x01A\xF4\x01B\xF4\x01\xFD\xF4\x01\xFF\xF4\x01>\xF5\x01K\xF5\x01O\xF5\x01P\xF5\x01h\xF5\x01z\xF5\x01{\xF5\x01\x95\xF5\x01\x97\xF5\x01\xA4\xF5\x01\xA5\xF5\x01\xFB\xF5\x01P\xF6\x01\x80\xF6\x01\xC6\xF6\x01\xCC\xF6\x01\xCD\xF6\x01\xD0\xF6\x01\xD3\xF6\x01\xD5\xF6\x01\xD8\xF6\x01\xDC\xF6\x01\xE0\xF6\x01\xEB\xF6\x01\xED\xF6\x01\xF4\xF6\x01\xFD\xF6\x01\xE0\xF7\x01\xEC\xF7\x01\xF0\xF7\x01\xF1\xF7\x01\x0C\xF9\x01;\xF9\x01<\xF9\x01F\xF9\x01G\xF9\x01\0\xFA\x01p\xFA\x01}\xFA\x01\x80\xFA\x01\x8A\xFA\x01\x8F\xFA\x01\xC7\xFA\x01\xCE\xFA\x01\xDD\xFA\x01\xDF\xFA\x01\xEA\xFA\x01\xF0\xFA\x01\xF9\xFA\x01") }, 1186u32)
+                },
+                unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\xCF\0\x05\0\n\0\x10\0\x16\0\x1C\0\"\0(\0.\x004\0:\0@\0F\0L\0R\0X\0^\0d\0j\0p\0v\0|\0\x82\0\x88\0\x8E\0\x94\0\x9A\0\xA0\0\xA6\0\xAC\0\xB2\0\xB8\0\xBE\0\xC4\0\xCA\0\xD0\0\xD6\0\xDC\0\xE2\0\xE8\0\xEE\0\xF4\0\xFA\0\0\x01\x06\x01\x0C\x01\x12\x01\x18\x01\x1E\x01$\x01*\x010\x016\x01<\x01B\x01H\x01N\x01T\x01Z\x01`\x01f\x01l\x01r\x01x\x01~\x01\x84\x01\x8A\x01\x90\x01\x96\x01\x9C\x01\xA2\x01\xA8\x01\xAE\x01\xB4\x01\xBA\x01\xC0\x01\xC6\x01\xCC\x01\xD2\x01\xD8\x01\xDE\x01\xE4\x01\xEA\x01\xF0\x01\xF6\x01\xFC\x01\x02\x02\x08\x02\x0E\x02\x14\x02\x1A\x02 \x02&\x02,\x022\x028\x02>\x02D\x02J\x02P\x02V\x02\\\x02b\x02h\x02n\x02t\x02z\x02\x80\x02\x86\x02\x8C\x02\x92\x02\x99\x02\xA0\x02\xA7\x02\xAE\x02\xB5\x02\xBC\x02\xC3\x02\xCA\x02\xD1\x02\xD8\x02\xDF\x02\xE6\x02\xED\x02\xF4\x02\xFB\x02\x02\x03\t\x03\x10\x03\x17\x03\x1E\x03%\x03,\x033\x03:\x03A\x03H\x03O\x03V\x03]\x03d\x03k\x03r\x03y\x03\x80\x03\x87\x03\x8E\x03\x95\x03\x9C\x03\xA3\x03\xAA\x03\xB1\x03\xB8\x03\xBF\x03\xC6\x03\xCD\x03\xD4\x03\xDB\x03\xE2\x03\xE9\x03\xF0\x03\xF7\x03\xFE\x03\x05\x04\x0C\x04\x13\x04\x1A\x04!\x04(\x04/\x046\x04=\x04D\x04K\x04R\x04Y\x04`\x04g\x04n\x04u\x04|\x04\x83\x04\x8A\x04\x91\x04\x98\x04\x9F\x04\xA6\x04\xAD\x04\xB4\x04\xBB\x04\xC2\x04\xC9\x04\xD0\x04\xD7\x04\xDE\x04\xE5\x04\xEC\x04\xF3\x04\xFA\x04\x01\x05\x08\x05\x0F\x05\x16\x05\x1D\x05$\x05+\x052\x05\xC2\xA9\xEF\xB8\x8F\xC2\xAE\xEF\xB8\x8F\xE2\x80\xBC\xEF\xB8\x8F\xE2\x81\x89\xEF\xB8\x8F\xE2\x84\xA2\xEF\xB8\x8F\xE2\x84\xB9\xEF\xB8\x8F\xE2\x86\x94\xEF\xB8\x8F\xE2\x86\x95\xEF\xB8\x8F\xE2\x86\x96\xEF\xB8\x8F\xE2\x86\x97\xEF\xB8\x8F\xE2\x86\x98\xEF\xB8\x8F\xE2\x86\x99\xEF\xB8\x8F\xE2\x86\xA9\xEF\xB8\x8F\xE2\x86\xAA\xEF\xB8\x8F\xE2\x8C\xA8\xEF\xB8\x8F\xE2\x8F\x8F\xEF\xB8\x8F\xE2\x8F\xAD\xEF\xB8\x8F\xE2\x8F\xAE\xEF\xB8\x8F\xE2\x8F\xAF\xEF\xB8\x8F\xE2\x8F\xB1\xEF\xB8\x8F\xE2\x8F\xB2\xEF\xB8\x8F\xE2\x8F\xB8\xEF\xB8\x8F\xE2\x8F\xB9\xEF\xB8\x8F\xE2\x8F\xBA\xEF\xB8\x8F\xE2\x93\x82\xEF\xB8\x8F\xE2\x96\xAA\xEF\xB8\x8F\xE2\x96\xAB\xEF\xB8\x8F\xE2\x96\xB6\xEF\xB8\x8F\xE2\x97\x80\xEF\xB8\x8F\xE2\x97\xBB\xEF\xB8\x8F\xE2\x97\xBC\xEF\xB8\x8F\xE2\x98\x80\xEF\xB8\x8F\xE2\x98\x81\xEF\xB8\x8F\xE2\x98\x82\xEF\xB8\x8F\xE2\x98\x83\xEF\xB8\x8F\xE2\x98\x84\xEF\xB8\x8F\xE2\x98\x8E\xEF\xB8\x8F\xE2\x98\x91\xEF\xB8\x8F\xE2\x98\x98\xEF\xB8\x8F\xE2\x98\x9D\xEF\xB8\x8F\xE2\x98\xA0\xEF\xB8\x8F\xE2\x98\xA2\xEF\xB8\x8F\xE2\x98\xA3\xEF\xB8\x8F\xE2\x98\xA6\xEF\xB8\x8F\xE2\x98\xAA\xEF\xB8\x8F\xE2\x98\xAE\xEF\xB8\x8F\xE2\x98\xAF\xEF\xB8\x8F\xE2\x98\xB8\xEF\xB8\x8F\xE2\x98\xB9\xEF\xB8\x8F\xE2\x98\xBA\xEF\xB8\x8F\xE2\x99\x80\xEF\xB8\x8F\xE2\x99\x82\xEF\xB8\x8F\xE2\x99\x9F\xEF\xB8\x8F\xE2\x99\xA0\xEF\xB8\x8F\xE2\x99\xA3\xEF\xB8\x8F\xE2\x99\xA5\xEF\xB8\x8F\xE2\x99\xA6\xEF\xB8\x8F\xE2\x99\xA8\xEF\xB8\x8F\xE2\x99\xBB\xEF\xB8\x8F\xE2\x99\xBE\xEF\xB8\x8F\xE2\x9A\x92\xEF\xB8\x8F\xE2\x9A\x94\xEF\xB8\x8F\xE2\x9A\x95\xEF\xB8\x8F\xE2\x9A\x96\xEF\xB8\x8F\xE2\x9A\x97\xEF\xB8\x8F\xE2\x9A\x99\xEF\xB8\x8F\xE2\x9A\x9B\xEF\xB8\x8F\xE2\x9A\x9C\xEF\xB8\x8F\xE2\x9A\xA0\xEF\xB8\x8F\xE2\x9A\xA7\xEF\xB8\x8F\xE2\x9A\xB0\xEF\xB8\x8F\xE2\x9A\xB1\xEF\xB8\x8F\xE2\x9B\x88\xEF\xB8\x8F\xE2\x9B\x8F\xEF\xB8\x8F\xE2\x9B\x91\xEF\xB8\x8F\xE2\x9B\x93\xEF\xB8\x8F\xE2\x9B\xA9\xEF\xB8\x8F\xE2\x9B\xB0\xEF\xB8\x8F\xE2\x9B\xB1\xEF\xB8\x8F\xE2\x9B\xB4\xEF\xB8\x8F\xE2\x9B\xB7\xEF\xB8\x8F\xE2\x9B\xB8\xEF\xB8\x8F\xE2\x9B\xB9\xEF\xB8\x8F\xE2\x9C\x82\xEF\xB8\x8F\xE2\x9C\x88\xEF\xB8\x8F\xE2\x9C\x89\xEF\xB8\x8F\xE2\x9C\x8C\xEF\xB8\x8F\xE2\x9C\x8D\xEF\xB8\x8F\xE2\x9C\x8F\xEF\xB8\x8F\xE2\x9C\x92\xEF\xB8\x8F\xE2\x9C\x94\xEF\xB8\x8F\xE2\x9C\x96\xEF\xB8\x8F\xE2\x9C\x9D\xEF\xB8\x8F\xE2\x9C\xA1\xEF\xB8\x8F\xE2\x9C\xB3\xEF\xB8\x8F\xE2\x9C\xB4\xEF\xB8\x8F\xE2\x9D\x84\xEF\xB8\x8F\xE2\x9D\x87\xEF\xB8\x8F\xE2\x9D\xA3\xEF\xB8\x8F\xE2\x9D\xA4\xEF\xB8\x8F\xE2\x9E\xA1\xEF\xB8\x8F\xE2\xA4\xB4\xEF\xB8\x8F\xE2\xA4\xB5\xEF\xB8\x8F\xE2\xAC\x85\xEF\xB8\x8F\xE2\xAC\x86\xEF\xB8\x8F\xE2\xAC\x87\xEF\xB8\x8F\xE3\x80\xB0\xEF\xB8\x8F\xE3\x80\xBD\xEF\xB8\x8F\xE3\x8A\x97\xEF\xB8\x8F\xE3\x8A\x99\xEF\xB8\x8F\xF0\x9F\x85\xB0\xEF\xB8\x8F\xF0\x9F\x85\xB1\xEF\xB8\x8F\xF0\x9F\x85\xBE\xEF\xB8\x8F\xF0\x9F\x85\xBF\xEF\xB8\x8F\xF0\x9F\x88\x82\xEF\xB8\x8F\xF0\x9F\x88\xB7\xEF\xB8\x8F\xF0\x9F\x8C\xA1\xEF\xB8\x8F\xF0\x9F\x8C\xA4\xEF\xB8\x8F\xF0\x9F\x8C\xA5\xEF\xB8\x8F\xF0\x9F\x8C\xA6\xEF\xB8\x8F\xF0\x9F\x8C\xA7\xEF\xB8\x8F\xF0\x9F\x8C\xA8\xEF\xB8\x8F\xF0\x9F\x8C\xA9\xEF\xB8\x8F\xF0\x9F\x8C\xAA\xEF\xB8\x8F\xF0\x9F\x8C\xAB\xEF\xB8\x8F\xF0\x9F\x8C\xAC\xEF\xB8\x8F\xF0\x9F\x8C\xB6\xEF\xB8\x8F\xF0\x9F\x8D\xBD\xEF\xB8\x8F\xF0\x9F\x8E\x96\xEF\xB8\x8F\xF0\x9F\x8E\x97\xEF\xB8\x8F\xF0\x9F\x8E\x99\xEF\xB8\x8F\xF0\x9F\x8E\x9A\xEF\xB8\x8F\xF0\x9F\x8E\x9B\xEF\xB8\x8F\xF0\x9F\x8E\x9E\xEF\xB8\x8F\xF0\x9F\x8E\x9F\xEF\xB8\x8F\xF0\x9F\x8F\x8B\xEF\xB8\x8F\xF0\x9F\x8F\x8C\xEF\xB8\x8F\xF0\x9F\x8F\x8D\xEF\xB8\x8F\xF0\x9F\x8F\x8E\xEF\xB8\x8F\xF0\x9F\x8F\x94\xEF\xB8\x8F\xF0\x9F\x8F\x95\xEF\xB8\x8F\xF0\x9F\x8F\x96\xEF\xB8\x8F\xF0\x9F\x8F\x97\xEF\xB8\x8F\xF0\x9F\x8F\x98\xEF\xB8\x8F\xF0\x9F\x8F\x99\xEF\xB8\x8F\xF0\x9F\x8F\x9A\xEF\xB8\x8F\xF0\x9F\x8F\x9B\xEF\xB8\x8F\xF0\x9F\x8F\x9C\xEF\xB8\x8F\xF0\x9F\x8F\x9D\xEF\xB8\x8F\xF0\x9F\x8F\x9E\xEF\xB8\x8F\xF0\x9F\x8F\x9F\xEF\xB8\x8F\xF0\x9F\x8F\xB3\xEF\xB8\x8F\xF0\x9F\x8F\xB5\xEF\xB8\x8F\xF0\x9F\x8F\xB7\xEF\xB8\x8F\xF0\x9F\x90\xBF\xEF\xB8\x8F\xF0\x9F\x91\x81\xEF\xB8\x8F\xF0\x9F\x93\xBD\xEF\xB8\x8F\xF0\x9F\x95\x89\xEF\xB8\x8F\xF0\x9F\x95\x8A\xEF\xB8\x8F\xF0\x9F\x95\xAF\xEF\xB8\x8F\xF0\x9F\x95\xB0\xEF\xB8\x8F\xF0\x9F\x95\xB3\xEF\xB8\x8F\xF0\x9F\x95\xB4\xEF\xB8\x8F\xF0\x9F\x95\xB5\xEF\xB8\x8F\xF0\x9F\x95\xB6\xEF\xB8\x8F\xF0\x9F\x95\xB7\xEF\xB8\x8F\xF0\x9F\x95\xB8\xEF\xB8\x8F\xF0\x9F\x95\xB9\xEF\xB8\x8F\xF0\x9F\x96\x87\xEF\xB8\x8F\xF0\x9F\x96\x8A\xEF\xB8\x8F\xF0\x9F\x96\x8B\xEF\xB8\x8F\xF0\x9F\x96\x8C\xEF\xB8\x8F\xF0\x9F\x96\x8D\xEF\xB8\x8F\xF0\x9F\x96\x90\xEF\xB8\x8F\xF0\x9F\x96\xA5\xEF\xB8\x8F\xF0\x9F\x96\xA8\xEF\xB8\x8F\xF0\x9F\x96\xB1\xEF\xB8\x8F\xF0\x9F\x96\xB2\xEF\xB8\x8F\xF0\x9F\x96\xBC\xEF\xB8\x8F\xF0\x9F\x97\x82\xEF\xB8\x8F\xF0\x9F\x97\x83\xEF\xB8\x8F\xF0\x9F\x97\x84\xEF\xB8\x8F\xF0\x9F\x97\x91\xEF\xB8\x8F\xF0\x9F\x97\x92\xEF\xB8\x8F\xF0\x9F\x97\x93\xEF\xB8\x8F\xF0\x9F\x97\x9C\xEF\xB8\x8F\xF0\x9F\x97\x9D\xEF\xB8\x8F\xF0\x9F\x97\x9E\xEF\xB8\x8F\xF0\x9F\x97\xA1\xEF\xB8\x8F\xF0\x9F\x97\xA3\xEF\xB8\x8F\xF0\x9F\x97\xA8\xEF\xB8\x8F\xF0\x9F\x97\xAF\xEF\xB8\x8F\xF0\x9F\x97\xB3\xEF\xB8\x8F\xF0\x9F\x97\xBA\xEF\xB8\x8F\xF0\x9F\x9B\x8B\xEF\xB8\x8F\xF0\x9F\x9B\x8D\xEF\xB8\x8F\xF0\x9F\x9B\x8E\xEF\xB8\x8F\xF0\x9F\x9B\x8F\xEF\xB8\x8F\xF0\x9F\x9B\xA0\xEF\xB8\x8F\xF0\x9F\x9B\xA1\xEF\xB8\x8F\xF0\x9F\x9B\xA2\xEF\xB8\x8F\xF0\x9F\x9B\xA3\xEF\xB8\x8F\xF0\x9F\x9B\xA4\xEF\xB8\x8F\xF0\x9F\x9B\xA5\xEF\xB8\x8F\xF0\x9F\x9B\xA9\xEF\xB8\x8F\xF0\x9F\x9B\xB0\xEF\xB8\x8F\xF0\x9F\x9B\xB3\xEF\xB8\x8F") },
+            ));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryBasicEmojiV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryBasicEmojiV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_BASIC_EMOJI_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBasicEmojiV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_basic_emoji_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryBasicEmojiV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_basic_emoji_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryBasicEmojiV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBasicEmojiV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_basic_emoji_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryBasicEmojiV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBasicEmojiV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryBasicEmojiV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_basic_emoji_v1 as impl_property_binary_basic_emoji_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_bidi_control_v1.rs.data b/vendor/icu_properties_data/data/property_binary_bidi_control_v1.rs.data
new file mode 100644
index 00000000..9bea2f62
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_bidi_control_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryBidiControlV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 56B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_bidi_control_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_BIDI_CONTROL_V1: &'static <icu::properties::provider::PropertyBinaryBidiControlV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x1C\x06\0\x1D\x06\0\x0E \0\x10 \0* \0/ \0f \0j \0") }, 12u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryBidiControlV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryBidiControlV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_BIDI_CONTROL_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBidiControlV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_bidi_control_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryBidiControlV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_bidi_control_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryBidiControlV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBidiControlV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_bidi_control_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryBidiControlV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBidiControlV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryBidiControlV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_bidi_control_v1 as impl_property_binary_bidi_control_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_bidi_mirrored_v1.rs.data b/vendor/icu_properties_data/data/property_binary_bidi_mirrored_v1.rs.data
new file mode 100644
index 00000000..bfaf91c6
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_bidi_mirrored_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryBidiMirroredV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 716B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_bidi_mirrored_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_BIDI_MIRRORED_V1: &'static <icu::properties::provider::PropertyBinaryBidiMirroredV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"(\0\0*\0\0<\0\0=\0\0>\0\0?\0\0[\0\0\\\0\0]\0\0^\0\0{\0\0|\0\0}\0\0~\0\0\xAB\0\0\xAC\0\0\xBB\0\0\xBC\0\0:\x0F\0>\x0F\0\x9B\x16\0\x9D\x16\09 \0; \0E \0G \0} \0\x7F \0\x8D \0\x8F \0@!\0A!\0\x01\"\0\x05\"\0\x08\"\0\x0E\"\0\x11\"\0\x12\"\0\x15\"\0\x17\"\0\x1A\"\0\x1E\"\0\x1F\"\0#\"\0$\"\0%\"\0&\"\0'\"\0+\"\x004\"\09\"\0:\"\0;\"\0M\"\0R\"\0V\"\0_\"\0a\"\0b\"\0c\"\0d\"\0l\"\0m\"\0\x8D\"\0\x8F\"\0\x93\"\0\x98\"\0\x99\"\0\xA2\"\0\xA4\"\0\xA6\"\0\xB9\"\0\xBE\"\0\xC0\"\0\xC9\"\0\xCE\"\0\xD0\"\0\xD2\"\0\xD6\"\0\xEE\"\0\xF0\"\0\0#\0\x08#\0\x0C#\0 #\0\"#\0)#\0+#\0h'\0v'\0\xC0'\0\xC1'\0\xC3'\0\xC7'\0\xC8'\0\xCA'\0\xCB'\0\xCE'\0\xD3'\0\xD7'\0\xDC'\0\xDF'\0\xE2'\0\xF0'\0\x83)\0\x99)\0\x9B)\0\xA1)\0\xA2)\0\xB0)\0\xB8)\0\xB9)\0\xC0)\0\xC6)\0\xC9)\0\xCA)\0\xCE)\0\xD3)\0\xD4)\0\xD6)\0\xD8)\0\xDD)\0\xE1)\0\xE2)\0\xE3)\0\xE6)\0\xE8)\0\xEA)\0\xF4)\0\xFA)\0\xFC)\0\xFE)\0\n*\0\x1D*\0\x1E*\0\"*\0$*\0%*\0&*\0'*\0)*\0**\0+*\0/*\x004*\x006*\0<*\0?*\0W*\0Y*\0d*\0f*\0j*\0n*\0o*\0q*\0s*\0u*\0y*\0\xA4*\0\xA6*\0\xAE*\0\xAF*\0\xD7*\0\xDC*\0\xDD*\0\xDE*\0\xDF*\0\xE2*\0\xE7*\0\xEC*\0\xEF*\0\xF3*\0\xF4*\0\xF7*\0\xFC*\0\xFD*\0\xFE*\0\xFE+\0\xFF+\0\x02.\0\x06.\0\t.\0\x0B.\0\x0C.\0\x0E.\0\x1C.\0\x1E.\0 .\0*.\0U.\0].\0\x080\0\x120\0\x140\0\x1C0\0Y\xFE\0_\xFE\0d\xFE\0f\xFE\0\x08\xFF\0\n\xFF\0\x1C\xFF\0\x1D\xFF\0\x1E\xFF\0\x1F\xFF\0;\xFF\0<\xFF\0=\xFF\0>\xFF\0[\xFF\0\\\xFF\0]\xFF\0^\xFF\0_\xFF\0a\xFF\0b\xFF\0d\xFF\0\xDB\xD6\x01\xDC\xD6\x01\x15\xD7\x01\x16\xD7\x01O\xD7\x01P\xD7\x01\x89\xD7\x01\x8A\xD7\x01\xC3\xD7\x01\xC4\xD7\x01") }, 554u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryBidiMirroredV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryBidiMirroredV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_BIDI_MIRRORED_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBidiMirroredV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_bidi_mirrored_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryBidiMirroredV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_bidi_mirrored_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryBidiMirroredV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBidiMirroredV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_bidi_mirrored_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryBidiMirroredV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBidiMirroredV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryBidiMirroredV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_bidi_mirrored_v1 as impl_property_binary_bidi_mirrored_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_blank_v1.rs.data b/vendor/icu_properties_data/data/property_binary_blank_v1.rs.data
new file mode 100644
index 00000000..120988df
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_blank_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryBlankV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 80B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_blank_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_BLANK_V1: &'static <icu::properties::provider::PropertyBinaryBlankV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\t\0\0\n\0\0 \0\0!\0\0\xA0\0\0\xA1\0\0\x80\x16\0\x81\x16\0\0 \0\x0B \0/ \x000 \0_ \0` \0\x000\0\x010\0") }, 18u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryBlankV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryBlankV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_BLANK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBlankV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_blank_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryBlankV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_blank_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryBlankV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBlankV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_blank_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryBlankV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryBlankV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryBlankV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_blank_v1 as impl_property_binary_blank_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_case_ignorable_v1.rs.data b/vendor/icu_properties_data/data/property_binary_case_ignorable_v1.rs.data
new file mode 100644
index 00000000..37038914
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_case_ignorable_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryCaseIgnorableV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 2744B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_case_ignorable_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_CASE_IGNORABLE_V1: &'static <icu::properties::provider::PropertyBinaryCaseIgnorableV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"'\0\0(\0\0.\0\0/\0\0:\0\0;\0\0^\0\0_\0\0`\0\0a\0\0\xA8\0\0\xA9\0\0\xAD\0\0\xAE\0\0\xAF\0\0\xB0\0\0\xB4\0\0\xB5\0\0\xB7\0\0\xB9\0\0\xB0\x02\0p\x03\0t\x03\0v\x03\0z\x03\0{\x03\0\x84\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x83\x04\0\x8A\x04\0Y\x05\0Z\x05\0_\x05\0`\x05\0\x91\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\xF4\x05\0\xF5\x05\0\0\x06\0\x06\x06\0\x10\x06\0\x1B\x06\0\x1C\x06\0\x1D\x06\0@\x06\0A\x06\0K\x06\0`\x06\0p\x06\0q\x06\0\xD6\x06\0\xDE\x06\0\xDF\x06\0\xE9\x06\0\xEA\x06\0\xEE\x06\0\x0F\x07\0\x10\x07\0\x11\x07\0\x12\x07\x000\x07\0K\x07\0\xA6\x07\0\xB1\x07\0\xEB\x07\0\xF6\x07\0\xFA\x07\0\xFB\x07\0\xFD\x07\0\xFE\x07\0\x16\x08\0.\x08\0Y\x08\0\\\x08\0\x88\x08\0\x89\x08\0\x90\x08\0\x92\x08\0\x97\x08\0\xA0\x08\0\xC9\x08\0\x03\t\0:\t\0;\t\0<\t\0=\t\0A\t\0I\t\0M\t\0N\t\0Q\t\0X\t\0b\t\0d\t\0q\t\0r\t\0\x81\t\0\x82\t\0\xBC\t\0\xBD\t\0\xC1\t\0\xC5\t\0\xCD\t\0\xCE\t\0\xE2\t\0\xE4\t\0\xFE\t\0\xFF\t\0\x01\n\0\x03\n\0<\n\0=\n\0A\n\0C\n\0G\n\0I\n\0K\n\0N\n\0Q\n\0R\n\0p\n\0r\n\0u\n\0v\n\0\x81\n\0\x83\n\0\xBC\n\0\xBD\n\0\xC1\n\0\xC6\n\0\xC7\n\0\xC9\n\0\xCD\n\0\xCE\n\0\xE2\n\0\xE4\n\0\xFA\n\0\0\x0B\0\x01\x0B\0\x02\x0B\0<\x0B\0=\x0B\0?\x0B\0@\x0B\0A\x0B\0E\x0B\0M\x0B\0N\x0B\0U\x0B\0W\x0B\0b\x0B\0d\x0B\0\x82\x0B\0\x83\x0B\0\xC0\x0B\0\xC1\x0B\0\xCD\x0B\0\xCE\x0B\0\0\x0C\0\x01\x0C\0\x04\x0C\0\x05\x0C\0<\x0C\0=\x0C\0>\x0C\0A\x0C\0F\x0C\0I\x0C\0J\x0C\0N\x0C\0U\x0C\0W\x0C\0b\x0C\0d\x0C\0\x81\x0C\0\x82\x0C\0\xBC\x0C\0\xBD\x0C\0\xBF\x0C\0\xC0\x0C\0\xC6\x0C\0\xC7\x0C\0\xCC\x0C\0\xCE\x0C\0\xE2\x0C\0\xE4\x0C\0\0\r\0\x02\r\0;\r\0=\r\0A\r\0E\r\0M\r\0N\r\0b\r\0d\r\0\x81\r\0\x82\r\0\xCA\r\0\xCB\r\0\xD2\r\0\xD5\r\0\xD6\r\0\xD7\r\x001\x0E\x002\x0E\x004\x0E\0;\x0E\0F\x0E\0O\x0E\0\xB1\x0E\0\xB2\x0E\0\xB4\x0E\0\xBD\x0E\0\xC6\x0E\0\xC7\x0E\0\xC8\x0E\0\xCF\x0E\0\x18\x0F\0\x1A\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0q\x0F\0\x7F\x0F\0\x80\x0F\0\x85\x0F\0\x86\x0F\0\x88\x0F\0\x8D\x0F\0\x98\x0F\0\x99\x0F\0\xBD\x0F\0\xC6\x0F\0\xC7\x0F\0-\x10\x001\x10\x002\x10\08\x10\09\x10\0;\x10\0=\x10\0?\x10\0X\x10\0Z\x10\0^\x10\0a\x10\0q\x10\0u\x10\0\x82\x10\0\x83\x10\0\x85\x10\0\x87\x10\0\x8D\x10\0\x8E\x10\0\x9D\x10\0\x9E\x10\0\xFC\x10\0\xFD\x10\0]\x13\0`\x13\0\x12\x17\0\x15\x17\x002\x17\x004\x17\0R\x17\0T\x17\0r\x17\0t\x17\0\xB4\x17\0\xB6\x17\0\xB7\x17\0\xBE\x17\0\xC6\x17\0\xC7\x17\0\xC9\x17\0\xD4\x17\0\xD7\x17\0\xD8\x17\0\xDD\x17\0\xDE\x17\0\x0B\x18\0\x10\x18\0C\x18\0D\x18\0\x85\x18\0\x87\x18\0\xA9\x18\0\xAA\x18\0 \x19\0#\x19\0'\x19\0)\x19\x002\x19\x003\x19\09\x19\0<\x19\0\x17\x1A\0\x19\x1A\0\x1B\x1A\0\x1C\x1A\0V\x1A\0W\x1A\0X\x1A\0_\x1A\0`\x1A\0a\x1A\0b\x1A\0c\x1A\0e\x1A\0m\x1A\0s\x1A\0}\x1A\0\x7F\x1A\0\x80\x1A\0\xA7\x1A\0\xA8\x1A\0\xB0\x1A\0\xCF\x1A\0\0\x1B\0\x04\x1B\x004\x1B\x005\x1B\x006\x1B\0;\x1B\0<\x1B\0=\x1B\0B\x1B\0C\x1B\0k\x1B\0t\x1B\0\x80\x1B\0\x82\x1B\0\xA2\x1B\0\xA6\x1B\0\xA8\x1B\0\xAA\x1B\0\xAB\x1B\0\xAE\x1B\0\xE6\x1B\0\xE7\x1B\0\xE8\x1B\0\xEA\x1B\0\xED\x1B\0\xEE\x1B\0\xEF\x1B\0\xF2\x1B\0,\x1C\x004\x1C\x006\x1C\08\x1C\0x\x1C\0~\x1C\0\xD0\x1C\0\xD3\x1C\0\xD4\x1C\0\xE1\x1C\0\xE2\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF8\x1C\0\xFA\x1C\0,\x1D\0k\x1D\0x\x1D\0y\x1D\0\x9B\x1D\0\0\x1E\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xCD\x1F\0\xD0\x1F\0\xDD\x1F\0\xE0\x1F\0\xED\x1F\0\xF0\x1F\0\xFD\x1F\0\xFF\x1F\0\x0B \0\x10 \0\x18 \0\x1A \0$ \0% \0' \0( \0* \0/ \0` \0e \0f \0p \0q \0r \0\x7F \0\x80 \0\x90 \0\x9D \0\xD0 \0\xF1 \0|,\0~,\0\xEF,\0\xF2,\0o-\0p-\0\x7F-\0\x80-\0\xE0-\0\0.\0/.\x000.\0\x050\0\x060\0*0\0.0\x0010\x0060\0;0\0<0\0\x990\0\x9F0\0\xFC0\0\xFF0\0\x15\xA0\0\x16\xA0\0\xF8\xA4\0\xFE\xA4\0\x0C\xA6\0\r\xA6\0o\xA6\0s\xA6\0t\xA6\0~\xA6\0\x7F\xA6\0\x80\xA6\0\x9C\xA6\0\xA0\xA6\0\xF0\xA6\0\xF2\xA6\0\0\xA7\0\"\xA7\0p\xA7\0q\xA7\0\x88\xA7\0\x8B\xA7\0\xF2\xA7\0\xF5\xA7\0\xF8\xA7\0\xFA\xA7\0\x02\xA8\0\x03\xA8\0\x06\xA8\0\x07\xA8\0\x0B\xA8\0\x0C\xA8\0%\xA8\0'\xA8\0,\xA8\0-\xA8\0\xC4\xA8\0\xC6\xA8\0\xE0\xA8\0\xF2\xA8\0\xFF\xA8\0\0\xA9\0&\xA9\0.\xA9\0G\xA9\0R\xA9\0\x80\xA9\0\x83\xA9\0\xB3\xA9\0\xB4\xA9\0\xB6\xA9\0\xBA\xA9\0\xBC\xA9\0\xBE\xA9\0\xCF\xA9\0\xD0\xA9\0\xE5\xA9\0\xE7\xA9\0)\xAA\0/\xAA\x001\xAA\x003\xAA\x005\xAA\x007\xAA\0C\xAA\0D\xAA\0L\xAA\0M\xAA\0p\xAA\0q\xAA\0|\xAA\0}\xAA\0\xB0\xAA\0\xB1\xAA\0\xB2\xAA\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBE\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xDD\xAA\0\xDE\xAA\0\xEC\xAA\0\xEE\xAA\0\xF3\xAA\0\xF5\xAA\0\xF6\xAA\0\xF7\xAA\0[\xAB\0`\xAB\0i\xAB\0l\xAB\0\xE5\xAB\0\xE6\xAB\0\xE8\xAB\0\xE9\xAB\0\xED\xAB\0\xEE\xAB\0\x1E\xFB\0\x1F\xFB\0\xB2\xFB\0\xC3\xFB\0\0\xFE\0\x10\xFE\0\x13\xFE\0\x14\xFE\0 \xFE\x000\xFE\0R\xFE\0S\xFE\0U\xFE\0V\xFE\0\xFF\xFE\0\0\xFF\0\x07\xFF\0\x08\xFF\0\x0E\xFF\0\x0F\xFF\0\x1A\xFF\0\x1B\xFF\0>\xFF\0?\xFF\0@\xFF\0A\xFF\0p\xFF\0q\xFF\0\x9E\xFF\0\xA0\xFF\0\xE3\xFF\0\xE4\xFF\0\xF9\xFF\0\xFC\xFF\0\xFD\x01\x01\xFE\x01\x01\xE0\x02\x01\xE1\x02\x01v\x03\x01{\x03\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\x01\n\x01\x04\n\x01\x05\n\x01\x07\n\x01\x0C\n\x01\x10\n\x018\n\x01;\n\x01?\n\x01@\n\x01\xE5\n\x01\xE7\n\x01$\r\x01(\r\x01N\r\x01O\r\x01i\r\x01n\r\x01o\r\x01p\r\x01\xAB\x0E\x01\xAD\x0E\x01\xFC\x0E\x01\0\x0F\x01F\x0F\x01Q\x0F\x01\x82\x0F\x01\x86\x0F\x01\x01\x10\x01\x02\x10\x018\x10\x01G\x10\x01p\x10\x01q\x10\x01s\x10\x01u\x10\x01\x7F\x10\x01\x82\x10\x01\xB3\x10\x01\xB7\x10\x01\xB9\x10\x01\xBB\x10\x01\xBD\x10\x01\xBE\x10\x01\xC2\x10\x01\xC3\x10\x01\xCD\x10\x01\xCE\x10\x01\0\x11\x01\x03\x11\x01'\x11\x01,\x11\x01-\x11\x015\x11\x01s\x11\x01t\x11\x01\x80\x11\x01\x82\x11\x01\xB6\x11\x01\xBF\x11\x01\xC9\x11\x01\xCD\x11\x01\xCF\x11\x01\xD0\x11\x01/\x12\x012\x12\x014\x12\x015\x12\x016\x12\x018\x12\x01>\x12\x01?\x12\x01A\x12\x01B\x12\x01\xDF\x12\x01\xE0\x12\x01\xE3\x12\x01\xEB\x12\x01\0\x13\x01\x02\x13\x01;\x13\x01=\x13\x01@\x13\x01A\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\xBB\x13\x01\xC1\x13\x01\xCE\x13\x01\xCF\x13\x01\xD0\x13\x01\xD1\x13\x01\xD2\x13\x01\xD3\x13\x01\xE1\x13\x01\xE3\x13\x018\x14\x01@\x14\x01B\x14\x01E\x14\x01F\x14\x01G\x14\x01^\x14\x01_\x14\x01\xB3\x14\x01\xB9\x14\x01\xBA\x14\x01\xBB\x14\x01\xBF\x14\x01\xC1\x14\x01\xC2\x14\x01\xC4\x14\x01\xB2\x15\x01\xB6\x15\x01\xBC\x15\x01\xBE\x15\x01\xBF\x15\x01\xC1\x15\x01\xDC\x15\x01\xDE\x15\x013\x16\x01;\x16\x01=\x16\x01>\x16\x01?\x16\x01A\x16\x01\xAB\x16\x01\xAC\x16\x01\xAD\x16\x01\xAE\x16\x01\xB0\x16\x01\xB6\x16\x01\xB7\x16\x01\xB8\x16\x01\x1D\x17\x01\x1E\x17\x01\x1F\x17\x01 \x17\x01\"\x17\x01&\x17\x01'\x17\x01,\x17\x01/\x18\x018\x18\x019\x18\x01;\x18\x01;\x19\x01=\x19\x01>\x19\x01?\x19\x01C\x19\x01D\x19\x01\xD4\x19\x01\xD8\x19\x01\xDA\x19\x01\xDC\x19\x01\xE0\x19\x01\xE1\x19\x01\x01\x1A\x01\x0B\x1A\x013\x1A\x019\x1A\x01;\x1A\x01?\x1A\x01G\x1A\x01H\x1A\x01Q\x1A\x01W\x1A\x01Y\x1A\x01\\\x1A\x01\x8A\x1A\x01\x97\x1A\x01\x98\x1A\x01\x9A\x1A\x010\x1C\x017\x1C\x018\x1C\x01>\x1C\x01?\x1C\x01@\x1C\x01\x92\x1C\x01\xA8\x1C\x01\xAA\x1C\x01\xB1\x1C\x01\xB2\x1C\x01\xB4\x1C\x01\xB5\x1C\x01\xB7\x1C\x011\x1D\x017\x1D\x01:\x1D\x01;\x1D\x01<\x1D\x01>\x1D\x01?\x1D\x01F\x1D\x01G\x1D\x01H\x1D\x01\x90\x1D\x01\x92\x1D\x01\x95\x1D\x01\x96\x1D\x01\x97\x1D\x01\x98\x1D\x01\xF3\x1E\x01\xF5\x1E\x01\0\x1F\x01\x02\x1F\x016\x1F\x01;\x1F\x01@\x1F\x01A\x1F\x01B\x1F\x01C\x1F\x01Z\x1F\x01[\x1F\x0104\x01A4\x01G4\x01V4\x01\x1Ea\x01*a\x01-a\x010a\x01\xF0j\x01\xF5j\x010k\x017k\x01@k\x01Dk\x01@m\x01Cm\x01km\x01mm\x01Oo\x01Po\x01\x8Fo\x01\xA0o\x01\xE0o\x01\xE2o\x01\xE3o\x01\xE5o\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\x9D\xBC\x01\x9F\xBC\x01\xA0\xBC\x01\xA4\xBC\x01\0\xCF\x01.\xCF\x010\xCF\x01G\xCF\x01g\xD1\x01j\xD1\x01s\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x01B\xD2\x01E\xD2\x01\0\xDA\x017\xDA\x01;\xDA\x01m\xDA\x01u\xDA\x01v\xDA\x01\x84\xDA\x01\x85\xDA\x01\x9B\xDA\x01\xA0\xDA\x01\xA1\xDA\x01\xB0\xDA\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x010\xE0\x01n\xE0\x01\x8F\xE0\x01\x90\xE0\x010\xE1\x01>\xE1\x01\xAE\xE2\x01\xAF\xE2\x01\xEC\xE2\x01\xF0\xE2\x01\xEB\xE4\x01\xF0\xE4\x01\xEE\xE5\x01\xF0\xE5\x01\xD0\xE8\x01\xD7\xE8\x01D\xE9\x01L\xE9\x01\xFB\xF3\x01\0\xF4\x01\x01\0\x0E\x02\0\x0E \0\x0E\x80\0\x0E\0\x01\x0E\xF0\x01\x0E") }, 2749u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryCaseIgnorableV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryCaseIgnorableV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_CASE_IGNORABLE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryCaseIgnorableV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_case_ignorable_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryCaseIgnorableV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_case_ignorable_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryCaseIgnorableV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryCaseIgnorableV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_case_ignorable_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryCaseIgnorableV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryCaseIgnorableV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryCaseIgnorableV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_case_ignorable_v1 as impl_property_binary_case_ignorable_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_case_sensitive_v1.rs.data b/vendor/icu_properties_data/data/property_binary_case_sensitive_v1.rs.data
new file mode 100644
index 00000000..34d98325
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_case_sensitive_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryCaseSensitiveV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 872B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_case_sensitive_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1: &'static <icu::properties::provider::PropertyBinaryCaseSensitiveV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0[\0\0a\0\0{\0\0\xB5\0\0\xB6\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\08\x01\09\x01\0\x8D\x01\0\x8E\x01\0\xAA\x01\0\xAC\x01\0\xBA\x01\0\xBC\x01\0\xBE\x01\0\xBF\x01\0\xC0\x01\0\xC4\x01\0!\x02\0\"\x02\x004\x02\0:\x02\0U\x02\0V\x02\0X\x02\0Y\x02\0Z\x02\0[\x02\0]\x02\0`\x02\0b\x02\0c\x02\0g\x02\0h\x02\0m\x02\0o\x02\0p\x02\0q\x02\0s\x02\0u\x02\0v\x02\0}\x02\0~\x02\0\x80\x02\0\x81\x02\0\x82\x02\0\x84\x02\0\x87\x02\0\x8D\x02\0\x92\x02\0\x93\x02\0\x9D\x02\0\x9F\x02\0\xBC\x02\0\xBD\x02\0\xBE\x02\0\xBF\x02\0\0\x03\0\x02\x03\0\x07\x03\0\t\x03\0\n\x03\0\x0B\x03\0\x0C\x03\0\r\x03\0\x13\x03\0\x14\x03\x001\x03\x002\x03\0B\x03\0C\x03\0E\x03\0F\x03\0p\x03\0t\x03\0v\x03\0x\x03\0{\x03\0~\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\0\xD2\x03\0\xD5\x03\0\xF6\x03\0\xF7\x03\0\xFC\x03\0\xFD\x03\0\x82\x04\0\x8A\x04\x000\x05\x001\x05\0W\x05\0a\x05\0\x88\x05\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0\xFB\x10\0\xFD\x10\0\0\x11\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\x80\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0y\x1D\0z\x1D\0}\x1D\0~\x1D\0\x8E\x1D\0\x8F\x1D\0\0\x1E\0\x9C\x1E\0\x9E\x1E\0\x9F\x1E\0\xA0\x1E\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xCD\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xE0\x1F\0\xED\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFD\x1F\0&!\0'!\0*!\0,!\x002!\x003!\0N!\0O!\0`!\0\x80!\0\x83!\0\x85!\0\xB6$\0\xEA$\0\0,\0q,\0r,\0t,\0u,\0w,\0~,\0\xE4,\0\xEB,\0\xEF,\0\xF2,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\0@\xA6\0n\xA6\0\x80\xA6\0\x9C\xA6\0\"\xA7\x000\xA7\x002\xA7\0p\xA7\0y\xA7\0\x88\xA7\0\x8B\xA7\0\x8E\xA7\0\x90\xA7\0\x95\xA7\0\x96\xA7\0\xAF\xA7\0\xB0\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD6\xA7\0\xDD\xA7\0\xF5\xA7\0\xF7\xA7\0S\xAB\0T\xAB\0p\xAB\0\xC0\xAB\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0!\xFF\0;\xFF\0A\xFF\0[\xFF\0\0\x04\x01P\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01P\r\x01f\r\x01p\r\x01\x86\r\x01\xA0\x18\x01\xE0\x18\x01@n\x01\x80n\x01\0\xE9\x01D\xE9\x01") }, 2992u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryCaseSensitiveV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryCaseSensitiveV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_CASE_SENSITIVE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryCaseSensitiveV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_case_sensitive_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryCaseSensitiveV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_case_sensitive_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryCaseSensitiveV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryCaseSensitiveV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_case_sensitive_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryCaseSensitiveV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryCaseSensitiveV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryCaseSensitiveV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_case_sensitive_v1 as impl_property_binary_case_sensitive_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_cased_v1.rs.data b/vendor/icu_properties_data/data/property_binary_cased_v1.rs.data
new file mode 100644
index 00000000..87446260
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_cased_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryCasedV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 986B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_cased_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_CASED_V1: &'static <icu::properties::provider::PropertyBinaryCasedV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0[\0\0a\0\0{\0\0\xAA\0\0\xAB\0\0\xB5\0\0\xB6\0\0\xBA\0\0\xBB\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\0\xBB\x01\0\xBC\x01\0\xC0\x01\0\xC4\x01\0\x94\x02\0\x95\x02\0\xB9\x02\0\xC0\x02\0\xC2\x02\0\xE0\x02\0\xE5\x02\0E\x03\0F\x03\0p\x03\0t\x03\0v\x03\0x\x03\0z\x03\0~\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\0\xF6\x03\0\xF7\x03\0\x82\x04\0\x8A\x04\x000\x05\x001\x05\0W\x05\0`\x05\0\x89\x05\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0\xFB\x10\0\xFC\x10\0\0\x11\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\x80\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0\0\x1D\0\xC0\x1D\0\0\x1E\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xCD\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xE0\x1F\0\xED\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFD\x1F\0q \0r \0\x7F \0\x80 \0\x90 \0\x9D \0\x02!\0\x03!\0\x07!\0\x08!\0\n!\0\x14!\0\x15!\0\x16!\0\x19!\0\x1E!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0.!\0/!\x005!\09!\0:!\0<!\0@!\0E!\0J!\0N!\0O!\0`!\0\x80!\0\x83!\0\x85!\0\xB6$\0\xEA$\0\0,\0\xE5,\0\xEB,\0\xEF,\0\xF2,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\0@\xA6\0n\xA6\0\x80\xA6\0\x9E\xA6\0\"\xA7\0\x88\xA7\0\x8B\xA7\0\x8F\xA7\0\x90\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xDD\xA7\0\xF2\xA7\0\xF7\xA7\0\xF8\xA7\0\xFB\xA7\x000\xAB\0[\xAB\0\\\xAB\0j\xAB\0p\xAB\0\xC0\xAB\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0!\xFF\0;\xFF\0A\xFF\0[\xFF\0\0\x04\x01P\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\x80\x07\x01\x81\x07\x01\x83\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01P\r\x01f\r\x01p\r\x01\x86\r\x01\xA0\x18\x01\xE0\x18\x01@n\x01\x80n\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xC1\xD6\x01\xC2\xD6\x01\xDB\xD6\x01\xDC\xD6\x01\xFB\xD6\x01\xFC\xD6\x01\x15\xD7\x01\x16\xD7\x015\xD7\x016\xD7\x01O\xD7\x01P\xD7\x01o\xD7\x01p\xD7\x01\x89\xD7\x01\x8A\xD7\x01\xA9\xD7\x01\xAA\xD7\x01\xC3\xD7\x01\xC4\xD7\x01\xCC\xD7\x01\0\xDF\x01\n\xDF\x01\x0B\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x010\xE0\x01n\xE0\x01\0\xE9\x01D\xE9\x010\xF1\x01J\xF1\x01P\xF1\x01j\xF1\x01p\xF1\x01\x8A\xF1\x01") }, 4578u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryCasedV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryCasedV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_CASED_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryCasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_cased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryCasedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_cased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryCasedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryCasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_cased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryCasedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryCasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryCasedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_cased_v1 as impl_property_binary_cased_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_changes_when_casefolded_v1.rs.data b/vendor/icu_properties_data/data/property_binary_changes_when_casefolded_v1.rs.data
new file mode 100644
index 00000000..41f27bce
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_changes_when_casefolded_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryChangesWhenCasefoldedV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 3788B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_changes_when_casefolded_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEFOLDED_V1: &'static <icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0[\0\0\xB5\0\0\xB6\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xE0\0\0\0\x01\0\x01\x01\0\x02\x01\0\x03\x01\0\x04\x01\0\x05\x01\0\x06\x01\0\x07\x01\0\x08\x01\0\t\x01\0\n\x01\0\x0B\x01\0\x0C\x01\0\r\x01\0\x0E\x01\0\x0F\x01\0\x10\x01\0\x11\x01\0\x12\x01\0\x13\x01\0\x14\x01\0\x15\x01\0\x16\x01\0\x17\x01\0\x18\x01\0\x19\x01\0\x1A\x01\0\x1B\x01\0\x1C\x01\0\x1D\x01\0\x1E\x01\0\x1F\x01\0 \x01\0!\x01\0\"\x01\0#\x01\0$\x01\0%\x01\0&\x01\0'\x01\0(\x01\0)\x01\0*\x01\0+\x01\0,\x01\0-\x01\0.\x01\0/\x01\x000\x01\x001\x01\x002\x01\x003\x01\x004\x01\x005\x01\x006\x01\x007\x01\09\x01\0:\x01\0;\x01\0<\x01\0=\x01\0>\x01\0?\x01\0@\x01\0A\x01\0B\x01\0C\x01\0D\x01\0E\x01\0F\x01\0G\x01\0H\x01\0I\x01\0K\x01\0L\x01\0M\x01\0N\x01\0O\x01\0P\x01\0Q\x01\0R\x01\0S\x01\0T\x01\0U\x01\0V\x01\0W\x01\0X\x01\0Y\x01\0Z\x01\0[\x01\0\\\x01\0]\x01\0^\x01\0_\x01\0`\x01\0a\x01\0b\x01\0c\x01\0d\x01\0e\x01\0f\x01\0g\x01\0h\x01\0i\x01\0j\x01\0k\x01\0l\x01\0m\x01\0n\x01\0o\x01\0p\x01\0q\x01\0r\x01\0s\x01\0t\x01\0u\x01\0v\x01\0w\x01\0x\x01\0z\x01\0{\x01\0|\x01\0}\x01\0~\x01\0\x7F\x01\0\x80\x01\0\x81\x01\0\x83\x01\0\x84\x01\0\x85\x01\0\x86\x01\0\x88\x01\0\x89\x01\0\x8C\x01\0\x8E\x01\0\x92\x01\0\x93\x01\0\x95\x01\0\x96\x01\0\x99\x01\0\x9C\x01\0\x9E\x01\0\x9F\x01\0\xA1\x01\0\xA2\x01\0\xA3\x01\0\xA4\x01\0\xA5\x01\0\xA6\x01\0\xA8\x01\0\xA9\x01\0\xAA\x01\0\xAC\x01\0\xAD\x01\0\xAE\x01\0\xB0\x01\0\xB1\x01\0\xB4\x01\0\xB5\x01\0\xB6\x01\0\xB7\x01\0\xB9\x01\0\xBC\x01\0\xBD\x01\0\xC4\x01\0\xC6\x01\0\xC7\x01\0\xC9\x01\0\xCA\x01\0\xCC\x01\0\xCD\x01\0\xCE\x01\0\xCF\x01\0\xD0\x01\0\xD1\x01\0\xD2\x01\0\xD3\x01\0\xD4\x01\0\xD5\x01\0\xD6\x01\0\xD7\x01\0\xD8\x01\0\xD9\x01\0\xDA\x01\0\xDB\x01\0\xDC\x01\0\xDE\x01\0\xDF\x01\0\xE0\x01\0\xE1\x01\0\xE2\x01\0\xE3\x01\0\xE4\x01\0\xE5\x01\0\xE6\x01\0\xE7\x01\0\xE8\x01\0\xE9\x01\0\xEA\x01\0\xEB\x01\0\xEC\x01\0\xED\x01\0\xEE\x01\0\xEF\x01\0\xF1\x01\0\xF3\x01\0\xF4\x01\0\xF5\x01\0\xF6\x01\0\xF9\x01\0\xFA\x01\0\xFB\x01\0\xFC\x01\0\xFD\x01\0\xFE\x01\0\xFF\x01\0\0\x02\0\x01\x02\0\x02\x02\0\x03\x02\0\x04\x02\0\x05\x02\0\x06\x02\0\x07\x02\0\x08\x02\0\t\x02\0\n\x02\0\x0B\x02\0\x0C\x02\0\r\x02\0\x0E\x02\0\x0F\x02\0\x10\x02\0\x11\x02\0\x12\x02\0\x13\x02\0\x14\x02\0\x15\x02\0\x16\x02\0\x17\x02\0\x18\x02\0\x19\x02\0\x1A\x02\0\x1B\x02\0\x1C\x02\0\x1D\x02\0\x1E\x02\0\x1F\x02\0 \x02\0!\x02\0\"\x02\0#\x02\0$\x02\0%\x02\0&\x02\0'\x02\0(\x02\0)\x02\0*\x02\0+\x02\0,\x02\0-\x02\0.\x02\0/\x02\x000\x02\x001\x02\x002\x02\x003\x02\0:\x02\0<\x02\0=\x02\0?\x02\0A\x02\0B\x02\0C\x02\0G\x02\0H\x02\0I\x02\0J\x02\0K\x02\0L\x02\0M\x02\0N\x02\0O\x02\0E\x03\0F\x03\0p\x03\0q\x03\0r\x03\0s\x03\0v\x03\0w\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\x90\x03\0\x91\x03\0\xA2\x03\0\xA3\x03\0\xAC\x03\0\xC2\x03\0\xC3\x03\0\xCF\x03\0\xD2\x03\0\xD5\x03\0\xD7\x03\0\xD8\x03\0\xD9\x03\0\xDA\x03\0\xDB\x03\0\xDC\x03\0\xDD\x03\0\xDE\x03\0\xDF\x03\0\xE0\x03\0\xE1\x03\0\xE2\x03\0\xE3\x03\0\xE4\x03\0\xE5\x03\0\xE6\x03\0\xE7\x03\0\xE8\x03\0\xE9\x03\0\xEA\x03\0\xEB\x03\0\xEC\x03\0\xED\x03\0\xEE\x03\0\xEF\x03\0\xF0\x03\0\xF2\x03\0\xF4\x03\0\xF6\x03\0\xF7\x03\0\xF8\x03\0\xF9\x03\0\xFB\x03\0\xFD\x03\x000\x04\0`\x04\0a\x04\0b\x04\0c\x04\0d\x04\0e\x04\0f\x04\0g\x04\0h\x04\0i\x04\0j\x04\0k\x04\0l\x04\0m\x04\0n\x04\0o\x04\0p\x04\0q\x04\0r\x04\0s\x04\0t\x04\0u\x04\0v\x04\0w\x04\0x\x04\0y\x04\0z\x04\0{\x04\0|\x04\0}\x04\0~\x04\0\x7F\x04\0\x80\x04\0\x81\x04\0\x8A\x04\0\x8B\x04\0\x8C\x04\0\x8D\x04\0\x8E\x04\0\x8F\x04\0\x90\x04\0\x91\x04\0\x92\x04\0\x93\x04\0\x94\x04\0\x95\x04\0\x96\x04\0\x97\x04\0\x98\x04\0\x99\x04\0\x9A\x04\0\x9B\x04\0\x9C\x04\0\x9D\x04\0\x9E\x04\0\x9F\x04\0\xA0\x04\0\xA1\x04\0\xA2\x04\0\xA3\x04\0\xA4\x04\0\xA5\x04\0\xA6\x04\0\xA7\x04\0\xA8\x04\0\xA9\x04\0\xAA\x04\0\xAB\x04\0\xAC\x04\0\xAD\x04\0\xAE\x04\0\xAF\x04\0\xB0\x04\0\xB1\x04\0\xB2\x04\0\xB3\x04\0\xB4\x04\0\xB5\x04\0\xB6\x04\0\xB7\x04\0\xB8\x04\0\xB9\x04\0\xBA\x04\0\xBB\x04\0\xBC\x04\0\xBD\x04\0\xBE\x04\0\xBF\x04\0\xC0\x04\0\xC2\x04\0\xC3\x04\0\xC4\x04\0\xC5\x04\0\xC6\x04\0\xC7\x04\0\xC8\x04\0\xC9\x04\0\xCA\x04\0\xCB\x04\0\xCC\x04\0\xCD\x04\0\xCE\x04\0\xD0\x04\0\xD1\x04\0\xD2\x04\0\xD3\x04\0\xD4\x04\0\xD5\x04\0\xD6\x04\0\xD7\x04\0\xD8\x04\0\xD9\x04\0\xDA\x04\0\xDB\x04\0\xDC\x04\0\xDD\x04\0\xDE\x04\0\xDF\x04\0\xE0\x04\0\xE1\x04\0\xE2\x04\0\xE3\x04\0\xE4\x04\0\xE5\x04\0\xE6\x04\0\xE7\x04\0\xE8\x04\0\xE9\x04\0\xEA\x04\0\xEB\x04\0\xEC\x04\0\xED\x04\0\xEE\x04\0\xEF\x04\0\xF0\x04\0\xF1\x04\0\xF2\x04\0\xF3\x04\0\xF4\x04\0\xF5\x04\0\xF6\x04\0\xF7\x04\0\xF8\x04\0\xF9\x04\0\xFA\x04\0\xFB\x04\0\xFC\x04\0\xFD\x04\0\xFE\x04\0\xFF\x04\0\0\x05\0\x01\x05\0\x02\x05\0\x03\x05\0\x04\x05\0\x05\x05\0\x06\x05\0\x07\x05\0\x08\x05\0\t\x05\0\n\x05\0\x0B\x05\0\x0C\x05\0\r\x05\0\x0E\x05\0\x0F\x05\0\x10\x05\0\x11\x05\0\x12\x05\0\x13\x05\0\x14\x05\0\x15\x05\0\x16\x05\0\x17\x05\0\x18\x05\0\x19\x05\0\x1A\x05\0\x1B\x05\0\x1C\x05\0\x1D\x05\0\x1E\x05\0\x1F\x05\0 \x05\0!\x05\0\"\x05\0#\x05\0$\x05\0%\x05\0&\x05\0'\x05\0(\x05\0)\x05\0*\x05\0+\x05\0,\x05\0-\x05\0.\x05\0/\x05\x001\x05\0W\x05\0\x87\x05\0\x88\x05\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xF8\x13\0\xFE\x13\0\x80\x1C\0\x8A\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0\0\x1E\0\x01\x1E\0\x02\x1E\0\x03\x1E\0\x04\x1E\0\x05\x1E\0\x06\x1E\0\x07\x1E\0\x08\x1E\0\t\x1E\0\n\x1E\0\x0B\x1E\0\x0C\x1E\0\r\x1E\0\x0E\x1E\0\x0F\x1E\0\x10\x1E\0\x11\x1E\0\x12\x1E\0\x13\x1E\0\x14\x1E\0\x15\x1E\0\x16\x1E\0\x17\x1E\0\x18\x1E\0\x19\x1E\0\x1A\x1E\0\x1B\x1E\0\x1C\x1E\0\x1D\x1E\0\x1E\x1E\0\x1F\x1E\0 \x1E\0!\x1E\0\"\x1E\0#\x1E\0$\x1E\0%\x1E\0&\x1E\0'\x1E\0(\x1E\0)\x1E\0*\x1E\0+\x1E\0,\x1E\0-\x1E\0.\x1E\0/\x1E\x000\x1E\x001\x1E\x002\x1E\x003\x1E\x004\x1E\x005\x1E\x006\x1E\x007\x1E\08\x1E\09\x1E\0:\x1E\0;\x1E\0<\x1E\0=\x1E\0>\x1E\0?\x1E\0@\x1E\0A\x1E\0B\x1E\0C\x1E\0D\x1E\0E\x1E\0F\x1E\0G\x1E\0H\x1E\0I\x1E\0J\x1E\0K\x1E\0L\x1E\0M\x1E\0N\x1E\0O\x1E\0P\x1E\0Q\x1E\0R\x1E\0S\x1E\0T\x1E\0U\x1E\0V\x1E\0W\x1E\0X\x1E\0Y\x1E\0Z\x1E\0[\x1E\0\\\x1E\0]\x1E\0^\x1E\0_\x1E\0`\x1E\0a\x1E\0b\x1E\0c\x1E\0d\x1E\0e\x1E\0f\x1E\0g\x1E\0h\x1E\0i\x1E\0j\x1E\0k\x1E\0l\x1E\0m\x1E\0n\x1E\0o\x1E\0p\x1E\0q\x1E\0r\x1E\0s\x1E\0t\x1E\0u\x1E\0v\x1E\0w\x1E\0x\x1E\0y\x1E\0z\x1E\0{\x1E\0|\x1E\0}\x1E\0~\x1E\0\x7F\x1E\0\x80\x1E\0\x81\x1E\0\x82\x1E\0\x83\x1E\0\x84\x1E\0\x85\x1E\0\x86\x1E\0\x87\x1E\0\x88\x1E\0\x89\x1E\0\x8A\x1E\0\x8B\x1E\0\x8C\x1E\0\x8D\x1E\0\x8E\x1E\0\x8F\x1E\0\x90\x1E\0\x91\x1E\0\x92\x1E\0\x93\x1E\0\x94\x1E\0\x95\x1E\0\x9A\x1E\0\x9C\x1E\0\x9E\x1E\0\x9F\x1E\0\xA0\x1E\0\xA1\x1E\0\xA2\x1E\0\xA3\x1E\0\xA4\x1E\0\xA5\x1E\0\xA6\x1E\0\xA7\x1E\0\xA8\x1E\0\xA9\x1E\0\xAA\x1E\0\xAB\x1E\0\xAC\x1E\0\xAD\x1E\0\xAE\x1E\0\xAF\x1E\0\xB0\x1E\0\xB1\x1E\0\xB2\x1E\0\xB3\x1E\0\xB4\x1E\0\xB5\x1E\0\xB6\x1E\0\xB7\x1E\0\xB8\x1E\0\xB9\x1E\0\xBA\x1E\0\xBB\x1E\0\xBC\x1E\0\xBD\x1E\0\xBE\x1E\0\xBF\x1E\0\xC0\x1E\0\xC1\x1E\0\xC2\x1E\0\xC3\x1E\0\xC4\x1E\0\xC5\x1E\0\xC6\x1E\0\xC7\x1E\0\xC8\x1E\0\xC9\x1E\0\xCA\x1E\0\xCB\x1E\0\xCC\x1E\0\xCD\x1E\0\xCE\x1E\0\xCF\x1E\0\xD0\x1E\0\xD1\x1E\0\xD2\x1E\0\xD3\x1E\0\xD4\x1E\0\xD5\x1E\0\xD6\x1E\0\xD7\x1E\0\xD8\x1E\0\xD9\x1E\0\xDA\x1E\0\xDB\x1E\0\xDC\x1E\0\xDD\x1E\0\xDE\x1E\0\xDF\x1E\0\xE0\x1E\0\xE1\x1E\0\xE2\x1E\0\xE3\x1E\0\xE4\x1E\0\xE5\x1E\0\xE6\x1E\0\xE7\x1E\0\xE8\x1E\0\xE9\x1E\0\xEA\x1E\0\xEB\x1E\0\xEC\x1E\0\xED\x1E\0\xEE\x1E\0\xEF\x1E\0\xF0\x1E\0\xF1\x1E\0\xF2\x1E\0\xF3\x1E\0\xF4\x1E\0\xF5\x1E\0\xF6\x1E\0\xF7\x1E\0\xF8\x1E\0\xF9\x1E\0\xFA\x1E\0\xFB\x1E\0\xFC\x1E\0\xFD\x1E\0\xFE\x1E\0\xFF\x1E\0\x08\x1F\0\x10\x1F\0\x18\x1F\0\x1E\x1F\0(\x1F\x000\x1F\08\x1F\0@\x1F\0H\x1F\0N\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0`\x1F\0h\x1F\0p\x1F\0\x80\x1F\0\xB0\x1F\0\xB2\x1F\0\xB5\x1F\0\xB7\x1F\0\xBD\x1F\0\xC2\x1F\0\xC5\x1F\0\xC7\x1F\0\xCD\x1F\0\xD8\x1F\0\xDC\x1F\0\xE8\x1F\0\xED\x1F\0\xF2\x1F\0\xF5\x1F\0\xF7\x1F\0\xFD\x1F\0&!\0'!\0*!\0,!\x002!\x003!\0`!\0p!\0\x83!\0\x84!\0\xB6$\0\xD0$\0\0,\x000,\0`,\0a,\0b,\0e,\0g,\0h,\0i,\0j,\0k,\0l,\0m,\0q,\0r,\0s,\0u,\0v,\0~,\0\x81,\0\x82,\0\x83,\0\x84,\0\x85,\0\x86,\0\x87,\0\x88,\0\x89,\0\x8A,\0\x8B,\0\x8C,\0\x8D,\0\x8E,\0\x8F,\0\x90,\0\x91,\0\x92,\0\x93,\0\x94,\0\x95,\0\x96,\0\x97,\0\x98,\0\x99,\0\x9A,\0\x9B,\0\x9C,\0\x9D,\0\x9E,\0\x9F,\0\xA0,\0\xA1,\0\xA2,\0\xA3,\0\xA4,\0\xA5,\0\xA6,\0\xA7,\0\xA8,\0\xA9,\0\xAA,\0\xAB,\0\xAC,\0\xAD,\0\xAE,\0\xAF,\0\xB0,\0\xB1,\0\xB2,\0\xB3,\0\xB4,\0\xB5,\0\xB6,\0\xB7,\0\xB8,\0\xB9,\0\xBA,\0\xBB,\0\xBC,\0\xBD,\0\xBE,\0\xBF,\0\xC0,\0\xC1,\0\xC2,\0\xC3,\0\xC4,\0\xC5,\0\xC6,\0\xC7,\0\xC8,\0\xC9,\0\xCA,\0\xCB,\0\xCC,\0\xCD,\0\xCE,\0\xCF,\0\xD0,\0\xD1,\0\xD2,\0\xD3,\0\xD4,\0\xD5,\0\xD6,\0\xD7,\0\xD8,\0\xD9,\0\xDA,\0\xDB,\0\xDC,\0\xDD,\0\xDE,\0\xDF,\0\xE0,\0\xE1,\0\xE2,\0\xE3,\0\xEB,\0\xEC,\0\xED,\0\xEE,\0\xF2,\0\xF3,\0@\xA6\0A\xA6\0B\xA6\0C\xA6\0D\xA6\0E\xA6\0F\xA6\0G\xA6\0H\xA6\0I\xA6\0J\xA6\0K\xA6\0L\xA6\0M\xA6\0N\xA6\0O\xA6\0P\xA6\0Q\xA6\0R\xA6\0S\xA6\0T\xA6\0U\xA6\0V\xA6\0W\xA6\0X\xA6\0Y\xA6\0Z\xA6\0[\xA6\0\\\xA6\0]\xA6\0^\xA6\0_\xA6\0`\xA6\0a\xA6\0b\xA6\0c\xA6\0d\xA6\0e\xA6\0f\xA6\0g\xA6\0h\xA6\0i\xA6\0j\xA6\0k\xA6\0l\xA6\0m\xA6\0\x80\xA6\0\x81\xA6\0\x82\xA6\0\x83\xA6\0\x84\xA6\0\x85\xA6\0\x86\xA6\0\x87\xA6\0\x88\xA6\0\x89\xA6\0\x8A\xA6\0\x8B\xA6\0\x8C\xA6\0\x8D\xA6\0\x8E\xA6\0\x8F\xA6\0\x90\xA6\0\x91\xA6\0\x92\xA6\0\x93\xA6\0\x94\xA6\0\x95\xA6\0\x96\xA6\0\x97\xA6\0\x98\xA6\0\x99\xA6\0\x9A\xA6\0\x9B\xA6\0\"\xA7\0#\xA7\0$\xA7\0%\xA7\0&\xA7\0'\xA7\0(\xA7\0)\xA7\0*\xA7\0+\xA7\0,\xA7\0-\xA7\0.\xA7\0/\xA7\x002\xA7\x003\xA7\x004\xA7\x005\xA7\x006\xA7\x007\xA7\08\xA7\09\xA7\0:\xA7\0;\xA7\0<\xA7\0=\xA7\0>\xA7\0?\xA7\0@\xA7\0A\xA7\0B\xA7\0C\xA7\0D\xA7\0E\xA7\0F\xA7\0G\xA7\0H\xA7\0I\xA7\0J\xA7\0K\xA7\0L\xA7\0M\xA7\0N\xA7\0O\xA7\0P\xA7\0Q\xA7\0R\xA7\0S\xA7\0T\xA7\0U\xA7\0V\xA7\0W\xA7\0X\xA7\0Y\xA7\0Z\xA7\0[\xA7\0\\\xA7\0]\xA7\0^\xA7\0_\xA7\0`\xA7\0a\xA7\0b\xA7\0c\xA7\0d\xA7\0e\xA7\0f\xA7\0g\xA7\0h\xA7\0i\xA7\0j\xA7\0k\xA7\0l\xA7\0m\xA7\0n\xA7\0o\xA7\0y\xA7\0z\xA7\0{\xA7\0|\xA7\0}\xA7\0\x7F\xA7\0\x80\xA7\0\x81\xA7\0\x82\xA7\0\x83\xA7\0\x84\xA7\0\x85\xA7\0\x86\xA7\0\x87\xA7\0\x8B\xA7\0\x8C\xA7\0\x8D\xA7\0\x8E\xA7\0\x90\xA7\0\x91\xA7\0\x92\xA7\0\x93\xA7\0\x96\xA7\0\x97\xA7\0\x98\xA7\0\x99\xA7\0\x9A\xA7\0\x9B\xA7\0\x9C\xA7\0\x9D\xA7\0\x9E\xA7\0\x9F\xA7\0\xA0\xA7\0\xA1\xA7\0\xA2\xA7\0\xA3\xA7\0\xA4\xA7\0\xA5\xA7\0\xA6\xA7\0\xA7\xA7\0\xA8\xA7\0\xA9\xA7\0\xAA\xA7\0\xAF\xA7\0\xB0\xA7\0\xB5\xA7\0\xB6\xA7\0\xB7\xA7\0\xB8\xA7\0\xB9\xA7\0\xBA\xA7\0\xBB\xA7\0\xBC\xA7\0\xBD\xA7\0\xBE\xA7\0\xBF\xA7\0\xC0\xA7\0\xC1\xA7\0\xC2\xA7\0\xC3\xA7\0\xC4\xA7\0\xC8\xA7\0\xC9\xA7\0\xCA\xA7\0\xCB\xA7\0\xCD\xA7\0\xD0\xA7\0\xD1\xA7\0\xD6\xA7\0\xD7\xA7\0\xD8\xA7\0\xD9\xA7\0\xDA\xA7\0\xDB\xA7\0\xDC\xA7\0\xDD\xA7\0\xF5\xA7\0\xF6\xA7\0p\xAB\0\xC0\xAB\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0!\xFF\0;\xFF\0\0\x04\x01(\x04\x01\xB0\x04\x01\xD4\x04\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x80\x0C\x01\xB3\x0C\x01P\r\x01f\r\x01\xA0\x18\x01\xC0\x18\x01@n\x01`n\x01\0\xE9\x01\"\xE9\x01") }, 1533u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEFOLDED_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_changes_when_casefolded_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_changes_when_casefolded_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_changes_when_casefolded_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenCasefoldedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_changes_when_casefolded_v1 as impl_property_binary_changes_when_casefolded_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_changes_when_casemapped_v1.rs.data b/vendor/icu_properties_data/data/property_binary_changes_when_casemapped_v1.rs.data
new file mode 100644
index 00000000..15d4b718
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_changes_when_casemapped_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryChangesWhenCasemappedV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 818B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_changes_when_casemapped_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEMAPPED_V1: &'static <icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0[\0\0a\0\0{\0\0\xB5\0\0\xB6\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\08\x01\09\x01\0\x8D\x01\0\x8E\x01\0\xAA\x01\0\xAC\x01\0\xBA\x01\0\xBC\x01\0\xBE\x01\0\xBF\x01\0\xC0\x01\0\xC4\x01\0!\x02\0\"\x02\x004\x02\0:\x02\0U\x02\0V\x02\0X\x02\0Y\x02\0Z\x02\0[\x02\0]\x02\0`\x02\0b\x02\0c\x02\0g\x02\0h\x02\0m\x02\0o\x02\0p\x02\0q\x02\0s\x02\0u\x02\0v\x02\0}\x02\0~\x02\0\x80\x02\0\x81\x02\0\x82\x02\0\x84\x02\0\x87\x02\0\x8D\x02\0\x92\x02\0\x93\x02\0\x9D\x02\0\x9F\x02\0E\x03\0F\x03\0p\x03\0t\x03\0v\x03\0x\x03\0{\x03\0~\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\0\xD2\x03\0\xD5\x03\0\xF6\x03\0\xF7\x03\0\xFC\x03\0\xFD\x03\0\x82\x04\0\x8A\x04\x000\x05\x001\x05\0W\x05\0a\x05\0\x88\x05\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0\xFB\x10\0\xFD\x10\0\0\x11\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\x80\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0y\x1D\0z\x1D\0}\x1D\0~\x1D\0\x8E\x1D\0\x8F\x1D\0\0\x1E\0\x9C\x1E\0\x9E\x1E\0\x9F\x1E\0\xA0\x1E\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xCD\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xE0\x1F\0\xED\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFD\x1F\0&!\0'!\0*!\0,!\x002!\x003!\0N!\0O!\0`!\0\x80!\0\x83!\0\x85!\0\xB6$\0\xEA$\0\0,\0q,\0r,\0t,\0u,\0w,\0~,\0\xE4,\0\xEB,\0\xEF,\0\xF2,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\0@\xA6\0n\xA6\0\x80\xA6\0\x9C\xA6\0\"\xA7\x000\xA7\x002\xA7\0p\xA7\0y\xA7\0\x88\xA7\0\x8B\xA7\0\x8E\xA7\0\x90\xA7\0\x95\xA7\0\x96\xA7\0\xAF\xA7\0\xB0\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD6\xA7\0\xDD\xA7\0\xF5\xA7\0\xF7\xA7\0S\xAB\0T\xAB\0p\xAB\0\xC0\xAB\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0!\xFF\0;\xFF\0A\xFF\0[\xFF\0\0\x04\x01P\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01P\r\x01f\r\x01p\r\x01\x86\r\x01\xA0\x18\x01\xE0\x18\x01@n\x01\x80n\x01\0\xE9\x01D\xE9\x01") }, 2981u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_CASEMAPPED_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_changes_when_casemapped_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_changes_when_casemapped_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_changes_when_casemapped_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenCasemappedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_changes_when_casemapped_v1 as impl_property_binary_changes_when_casemapped_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_changes_when_lowercased_v1.rs.data b/vendor/icu_properties_data/data/property_binary_changes_when_lowercased_v1.rs.data
new file mode 100644
index 00000000..0acb662b
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_changes_when_lowercased_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryChangesWhenLowercasedV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 3716B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_changes_when_lowercased_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_LOWERCASED_V1: &'static <icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0[\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xDF\0\0\0\x01\0\x01\x01\0\x02\x01\0\x03\x01\0\x04\x01\0\x05\x01\0\x06\x01\0\x07\x01\0\x08\x01\0\t\x01\0\n\x01\0\x0B\x01\0\x0C\x01\0\r\x01\0\x0E\x01\0\x0F\x01\0\x10\x01\0\x11\x01\0\x12\x01\0\x13\x01\0\x14\x01\0\x15\x01\0\x16\x01\0\x17\x01\0\x18\x01\0\x19\x01\0\x1A\x01\0\x1B\x01\0\x1C\x01\0\x1D\x01\0\x1E\x01\0\x1F\x01\0 \x01\0!\x01\0\"\x01\0#\x01\0$\x01\0%\x01\0&\x01\0'\x01\0(\x01\0)\x01\0*\x01\0+\x01\0,\x01\0-\x01\0.\x01\0/\x01\x000\x01\x001\x01\x002\x01\x003\x01\x004\x01\x005\x01\x006\x01\x007\x01\09\x01\0:\x01\0;\x01\0<\x01\0=\x01\0>\x01\0?\x01\0@\x01\0A\x01\0B\x01\0C\x01\0D\x01\0E\x01\0F\x01\0G\x01\0H\x01\0J\x01\0K\x01\0L\x01\0M\x01\0N\x01\0O\x01\0P\x01\0Q\x01\0R\x01\0S\x01\0T\x01\0U\x01\0V\x01\0W\x01\0X\x01\0Y\x01\0Z\x01\0[\x01\0\\\x01\0]\x01\0^\x01\0_\x01\0`\x01\0a\x01\0b\x01\0c\x01\0d\x01\0e\x01\0f\x01\0g\x01\0h\x01\0i\x01\0j\x01\0k\x01\0l\x01\0m\x01\0n\x01\0o\x01\0p\x01\0q\x01\0r\x01\0s\x01\0t\x01\0u\x01\0v\x01\0w\x01\0x\x01\0z\x01\0{\x01\0|\x01\0}\x01\0~\x01\0\x81\x01\0\x83\x01\0\x84\x01\0\x85\x01\0\x86\x01\0\x88\x01\0\x89\x01\0\x8C\x01\0\x8E\x01\0\x92\x01\0\x93\x01\0\x95\x01\0\x96\x01\0\x99\x01\0\x9C\x01\0\x9E\x01\0\x9F\x01\0\xA1\x01\0\xA2\x01\0\xA3\x01\0\xA4\x01\0\xA5\x01\0\xA6\x01\0\xA8\x01\0\xA9\x01\0\xAA\x01\0\xAC\x01\0\xAD\x01\0\xAE\x01\0\xB0\x01\0\xB1\x01\0\xB4\x01\0\xB5\x01\0\xB6\x01\0\xB7\x01\0\xB9\x01\0\xBC\x01\0\xBD\x01\0\xC4\x01\0\xC6\x01\0\xC7\x01\0\xC9\x01\0\xCA\x01\0\xCC\x01\0\xCD\x01\0\xCE\x01\0\xCF\x01\0\xD0\x01\0\xD1\x01\0\xD2\x01\0\xD3\x01\0\xD4\x01\0\xD5\x01\0\xD6\x01\0\xD7\x01\0\xD8\x01\0\xD9\x01\0\xDA\x01\0\xDB\x01\0\xDC\x01\0\xDE\x01\0\xDF\x01\0\xE0\x01\0\xE1\x01\0\xE2\x01\0\xE3\x01\0\xE4\x01\0\xE5\x01\0\xE6\x01\0\xE7\x01\0\xE8\x01\0\xE9\x01\0\xEA\x01\0\xEB\x01\0\xEC\x01\0\xED\x01\0\xEE\x01\0\xEF\x01\0\xF1\x01\0\xF3\x01\0\xF4\x01\0\xF5\x01\0\xF6\x01\0\xF9\x01\0\xFA\x01\0\xFB\x01\0\xFC\x01\0\xFD\x01\0\xFE\x01\0\xFF\x01\0\0\x02\0\x01\x02\0\x02\x02\0\x03\x02\0\x04\x02\0\x05\x02\0\x06\x02\0\x07\x02\0\x08\x02\0\t\x02\0\n\x02\0\x0B\x02\0\x0C\x02\0\r\x02\0\x0E\x02\0\x0F\x02\0\x10\x02\0\x11\x02\0\x12\x02\0\x13\x02\0\x14\x02\0\x15\x02\0\x16\x02\0\x17\x02\0\x18\x02\0\x19\x02\0\x1A\x02\0\x1B\x02\0\x1C\x02\0\x1D\x02\0\x1E\x02\0\x1F\x02\0 \x02\0!\x02\0\"\x02\0#\x02\0$\x02\0%\x02\0&\x02\0'\x02\0(\x02\0)\x02\0*\x02\0+\x02\0,\x02\0-\x02\0.\x02\0/\x02\x000\x02\x001\x02\x002\x02\x003\x02\0:\x02\0<\x02\0=\x02\0?\x02\0A\x02\0B\x02\0C\x02\0G\x02\0H\x02\0I\x02\0J\x02\0K\x02\0L\x02\0M\x02\0N\x02\0O\x02\0p\x03\0q\x03\0r\x03\0s\x03\0v\x03\0w\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\x90\x03\0\x91\x03\0\xA2\x03\0\xA3\x03\0\xAC\x03\0\xCF\x03\0\xD0\x03\0\xD8\x03\0\xD9\x03\0\xDA\x03\0\xDB\x03\0\xDC\x03\0\xDD\x03\0\xDE\x03\0\xDF\x03\0\xE0\x03\0\xE1\x03\0\xE2\x03\0\xE3\x03\0\xE4\x03\0\xE5\x03\0\xE6\x03\0\xE7\x03\0\xE8\x03\0\xE9\x03\0\xEA\x03\0\xEB\x03\0\xEC\x03\0\xED\x03\0\xEE\x03\0\xEF\x03\0\xF4\x03\0\xF5\x03\0\xF7\x03\0\xF8\x03\0\xF9\x03\0\xFB\x03\0\xFD\x03\x000\x04\0`\x04\0a\x04\0b\x04\0c\x04\0d\x04\0e\x04\0f\x04\0g\x04\0h\x04\0i\x04\0j\x04\0k\x04\0l\x04\0m\x04\0n\x04\0o\x04\0p\x04\0q\x04\0r\x04\0s\x04\0t\x04\0u\x04\0v\x04\0w\x04\0x\x04\0y\x04\0z\x04\0{\x04\0|\x04\0}\x04\0~\x04\0\x7F\x04\0\x80\x04\0\x81\x04\0\x8A\x04\0\x8B\x04\0\x8C\x04\0\x8D\x04\0\x8E\x04\0\x8F\x04\0\x90\x04\0\x91\x04\0\x92\x04\0\x93\x04\0\x94\x04\0\x95\x04\0\x96\x04\0\x97\x04\0\x98\x04\0\x99\x04\0\x9A\x04\0\x9B\x04\0\x9C\x04\0\x9D\x04\0\x9E\x04\0\x9F\x04\0\xA0\x04\0\xA1\x04\0\xA2\x04\0\xA3\x04\0\xA4\x04\0\xA5\x04\0\xA6\x04\0\xA7\x04\0\xA8\x04\0\xA9\x04\0\xAA\x04\0\xAB\x04\0\xAC\x04\0\xAD\x04\0\xAE\x04\0\xAF\x04\0\xB0\x04\0\xB1\x04\0\xB2\x04\0\xB3\x04\0\xB4\x04\0\xB5\x04\0\xB6\x04\0\xB7\x04\0\xB8\x04\0\xB9\x04\0\xBA\x04\0\xBB\x04\0\xBC\x04\0\xBD\x04\0\xBE\x04\0\xBF\x04\0\xC0\x04\0\xC2\x04\0\xC3\x04\0\xC4\x04\0\xC5\x04\0\xC6\x04\0\xC7\x04\0\xC8\x04\0\xC9\x04\0\xCA\x04\0\xCB\x04\0\xCC\x04\0\xCD\x04\0\xCE\x04\0\xD0\x04\0\xD1\x04\0\xD2\x04\0\xD3\x04\0\xD4\x04\0\xD5\x04\0\xD6\x04\0\xD7\x04\0\xD8\x04\0\xD9\x04\0\xDA\x04\0\xDB\x04\0\xDC\x04\0\xDD\x04\0\xDE\x04\0\xDF\x04\0\xE0\x04\0\xE1\x04\0\xE2\x04\0\xE3\x04\0\xE4\x04\0\xE5\x04\0\xE6\x04\0\xE7\x04\0\xE8\x04\0\xE9\x04\0\xEA\x04\0\xEB\x04\0\xEC\x04\0\xED\x04\0\xEE\x04\0\xEF\x04\0\xF0\x04\0\xF1\x04\0\xF2\x04\0\xF3\x04\0\xF4\x04\0\xF5\x04\0\xF6\x04\0\xF7\x04\0\xF8\x04\0\xF9\x04\0\xFA\x04\0\xFB\x04\0\xFC\x04\0\xFD\x04\0\xFE\x04\0\xFF\x04\0\0\x05\0\x01\x05\0\x02\x05\0\x03\x05\0\x04\x05\0\x05\x05\0\x06\x05\0\x07\x05\0\x08\x05\0\t\x05\0\n\x05\0\x0B\x05\0\x0C\x05\0\r\x05\0\x0E\x05\0\x0F\x05\0\x10\x05\0\x11\x05\0\x12\x05\0\x13\x05\0\x14\x05\0\x15\x05\0\x16\x05\0\x17\x05\0\x18\x05\0\x19\x05\0\x1A\x05\0\x1B\x05\0\x1C\x05\0\x1D\x05\0\x1E\x05\0\x1F\x05\0 \x05\0!\x05\0\"\x05\0#\x05\0$\x05\0%\x05\0&\x05\0'\x05\0(\x05\0)\x05\0*\x05\0+\x05\0,\x05\0-\x05\0.\x05\0/\x05\x001\x05\0W\x05\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xA0\x13\0\xF6\x13\0\x89\x1C\0\x8A\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0\0\x1E\0\x01\x1E\0\x02\x1E\0\x03\x1E\0\x04\x1E\0\x05\x1E\0\x06\x1E\0\x07\x1E\0\x08\x1E\0\t\x1E\0\n\x1E\0\x0B\x1E\0\x0C\x1E\0\r\x1E\0\x0E\x1E\0\x0F\x1E\0\x10\x1E\0\x11\x1E\0\x12\x1E\0\x13\x1E\0\x14\x1E\0\x15\x1E\0\x16\x1E\0\x17\x1E\0\x18\x1E\0\x19\x1E\0\x1A\x1E\0\x1B\x1E\0\x1C\x1E\0\x1D\x1E\0\x1E\x1E\0\x1F\x1E\0 \x1E\0!\x1E\0\"\x1E\0#\x1E\0$\x1E\0%\x1E\0&\x1E\0'\x1E\0(\x1E\0)\x1E\0*\x1E\0+\x1E\0,\x1E\0-\x1E\0.\x1E\0/\x1E\x000\x1E\x001\x1E\x002\x1E\x003\x1E\x004\x1E\x005\x1E\x006\x1E\x007\x1E\08\x1E\09\x1E\0:\x1E\0;\x1E\0<\x1E\0=\x1E\0>\x1E\0?\x1E\0@\x1E\0A\x1E\0B\x1E\0C\x1E\0D\x1E\0E\x1E\0F\x1E\0G\x1E\0H\x1E\0I\x1E\0J\x1E\0K\x1E\0L\x1E\0M\x1E\0N\x1E\0O\x1E\0P\x1E\0Q\x1E\0R\x1E\0S\x1E\0T\x1E\0U\x1E\0V\x1E\0W\x1E\0X\x1E\0Y\x1E\0Z\x1E\0[\x1E\0\\\x1E\0]\x1E\0^\x1E\0_\x1E\0`\x1E\0a\x1E\0b\x1E\0c\x1E\0d\x1E\0e\x1E\0f\x1E\0g\x1E\0h\x1E\0i\x1E\0j\x1E\0k\x1E\0l\x1E\0m\x1E\0n\x1E\0o\x1E\0p\x1E\0q\x1E\0r\x1E\0s\x1E\0t\x1E\0u\x1E\0v\x1E\0w\x1E\0x\x1E\0y\x1E\0z\x1E\0{\x1E\0|\x1E\0}\x1E\0~\x1E\0\x7F\x1E\0\x80\x1E\0\x81\x1E\0\x82\x1E\0\x83\x1E\0\x84\x1E\0\x85\x1E\0\x86\x1E\0\x87\x1E\0\x88\x1E\0\x89\x1E\0\x8A\x1E\0\x8B\x1E\0\x8C\x1E\0\x8D\x1E\0\x8E\x1E\0\x8F\x1E\0\x90\x1E\0\x91\x1E\0\x92\x1E\0\x93\x1E\0\x94\x1E\0\x95\x1E\0\x9E\x1E\0\x9F\x1E\0\xA0\x1E\0\xA1\x1E\0\xA2\x1E\0\xA3\x1E\0\xA4\x1E\0\xA5\x1E\0\xA6\x1E\0\xA7\x1E\0\xA8\x1E\0\xA9\x1E\0\xAA\x1E\0\xAB\x1E\0\xAC\x1E\0\xAD\x1E\0\xAE\x1E\0\xAF\x1E\0\xB0\x1E\0\xB1\x1E\0\xB2\x1E\0\xB3\x1E\0\xB4\x1E\0\xB5\x1E\0\xB6\x1E\0\xB7\x1E\0\xB8\x1E\0\xB9\x1E\0\xBA\x1E\0\xBB\x1E\0\xBC\x1E\0\xBD\x1E\0\xBE\x1E\0\xBF\x1E\0\xC0\x1E\0\xC1\x1E\0\xC2\x1E\0\xC3\x1E\0\xC4\x1E\0\xC5\x1E\0\xC6\x1E\0\xC7\x1E\0\xC8\x1E\0\xC9\x1E\0\xCA\x1E\0\xCB\x1E\0\xCC\x1E\0\xCD\x1E\0\xCE\x1E\0\xCF\x1E\0\xD0\x1E\0\xD1\x1E\0\xD2\x1E\0\xD3\x1E\0\xD4\x1E\0\xD5\x1E\0\xD6\x1E\0\xD7\x1E\0\xD8\x1E\0\xD9\x1E\0\xDA\x1E\0\xDB\x1E\0\xDC\x1E\0\xDD\x1E\0\xDE\x1E\0\xDF\x1E\0\xE0\x1E\0\xE1\x1E\0\xE2\x1E\0\xE3\x1E\0\xE4\x1E\0\xE5\x1E\0\xE6\x1E\0\xE7\x1E\0\xE8\x1E\0\xE9\x1E\0\xEA\x1E\0\xEB\x1E\0\xEC\x1E\0\xED\x1E\0\xEE\x1E\0\xEF\x1E\0\xF0\x1E\0\xF1\x1E\0\xF2\x1E\0\xF3\x1E\0\xF4\x1E\0\xF5\x1E\0\xF6\x1E\0\xF7\x1E\0\xF8\x1E\0\xF9\x1E\0\xFA\x1E\0\xFB\x1E\0\xFC\x1E\0\xFD\x1E\0\xFE\x1E\0\xFF\x1E\0\x08\x1F\0\x10\x1F\0\x18\x1F\0\x1E\x1F\0(\x1F\x000\x1F\08\x1F\0@\x1F\0H\x1F\0N\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0`\x1F\0h\x1F\0p\x1F\0\x88\x1F\0\x90\x1F\0\x98\x1F\0\xA0\x1F\0\xA8\x1F\0\xB0\x1F\0\xB8\x1F\0\xBD\x1F\0\xC8\x1F\0\xCD\x1F\0\xD8\x1F\0\xDC\x1F\0\xE8\x1F\0\xED\x1F\0\xF8\x1F\0\xFD\x1F\0&!\0'!\0*!\0,!\x002!\x003!\0`!\0p!\0\x83!\0\x84!\0\xB6$\0\xD0$\0\0,\x000,\0`,\0a,\0b,\0e,\0g,\0h,\0i,\0j,\0k,\0l,\0m,\0q,\0r,\0s,\0u,\0v,\0~,\0\x81,\0\x82,\0\x83,\0\x84,\0\x85,\0\x86,\0\x87,\0\x88,\0\x89,\0\x8A,\0\x8B,\0\x8C,\0\x8D,\0\x8E,\0\x8F,\0\x90,\0\x91,\0\x92,\0\x93,\0\x94,\0\x95,\0\x96,\0\x97,\0\x98,\0\x99,\0\x9A,\0\x9B,\0\x9C,\0\x9D,\0\x9E,\0\x9F,\0\xA0,\0\xA1,\0\xA2,\0\xA3,\0\xA4,\0\xA5,\0\xA6,\0\xA7,\0\xA8,\0\xA9,\0\xAA,\0\xAB,\0\xAC,\0\xAD,\0\xAE,\0\xAF,\0\xB0,\0\xB1,\0\xB2,\0\xB3,\0\xB4,\0\xB5,\0\xB6,\0\xB7,\0\xB8,\0\xB9,\0\xBA,\0\xBB,\0\xBC,\0\xBD,\0\xBE,\0\xBF,\0\xC0,\0\xC1,\0\xC2,\0\xC3,\0\xC4,\0\xC5,\0\xC6,\0\xC7,\0\xC8,\0\xC9,\0\xCA,\0\xCB,\0\xCC,\0\xCD,\0\xCE,\0\xCF,\0\xD0,\0\xD1,\0\xD2,\0\xD3,\0\xD4,\0\xD5,\0\xD6,\0\xD7,\0\xD8,\0\xD9,\0\xDA,\0\xDB,\0\xDC,\0\xDD,\0\xDE,\0\xDF,\0\xE0,\0\xE1,\0\xE2,\0\xE3,\0\xEB,\0\xEC,\0\xED,\0\xEE,\0\xF2,\0\xF3,\0@\xA6\0A\xA6\0B\xA6\0C\xA6\0D\xA6\0E\xA6\0F\xA6\0G\xA6\0H\xA6\0I\xA6\0J\xA6\0K\xA6\0L\xA6\0M\xA6\0N\xA6\0O\xA6\0P\xA6\0Q\xA6\0R\xA6\0S\xA6\0T\xA6\0U\xA6\0V\xA6\0W\xA6\0X\xA6\0Y\xA6\0Z\xA6\0[\xA6\0\\\xA6\0]\xA6\0^\xA6\0_\xA6\0`\xA6\0a\xA6\0b\xA6\0c\xA6\0d\xA6\0e\xA6\0f\xA6\0g\xA6\0h\xA6\0i\xA6\0j\xA6\0k\xA6\0l\xA6\0m\xA6\0\x80\xA6\0\x81\xA6\0\x82\xA6\0\x83\xA6\0\x84\xA6\0\x85\xA6\0\x86\xA6\0\x87\xA6\0\x88\xA6\0\x89\xA6\0\x8A\xA6\0\x8B\xA6\0\x8C\xA6\0\x8D\xA6\0\x8E\xA6\0\x8F\xA6\0\x90\xA6\0\x91\xA6\0\x92\xA6\0\x93\xA6\0\x94\xA6\0\x95\xA6\0\x96\xA6\0\x97\xA6\0\x98\xA6\0\x99\xA6\0\x9A\xA6\0\x9B\xA6\0\"\xA7\0#\xA7\0$\xA7\0%\xA7\0&\xA7\0'\xA7\0(\xA7\0)\xA7\0*\xA7\0+\xA7\0,\xA7\0-\xA7\0.\xA7\0/\xA7\x002\xA7\x003\xA7\x004\xA7\x005\xA7\x006\xA7\x007\xA7\08\xA7\09\xA7\0:\xA7\0;\xA7\0<\xA7\0=\xA7\0>\xA7\0?\xA7\0@\xA7\0A\xA7\0B\xA7\0C\xA7\0D\xA7\0E\xA7\0F\xA7\0G\xA7\0H\xA7\0I\xA7\0J\xA7\0K\xA7\0L\xA7\0M\xA7\0N\xA7\0O\xA7\0P\xA7\0Q\xA7\0R\xA7\0S\xA7\0T\xA7\0U\xA7\0V\xA7\0W\xA7\0X\xA7\0Y\xA7\0Z\xA7\0[\xA7\0\\\xA7\0]\xA7\0^\xA7\0_\xA7\0`\xA7\0a\xA7\0b\xA7\0c\xA7\0d\xA7\0e\xA7\0f\xA7\0g\xA7\0h\xA7\0i\xA7\0j\xA7\0k\xA7\0l\xA7\0m\xA7\0n\xA7\0o\xA7\0y\xA7\0z\xA7\0{\xA7\0|\xA7\0}\xA7\0\x7F\xA7\0\x80\xA7\0\x81\xA7\0\x82\xA7\0\x83\xA7\0\x84\xA7\0\x85\xA7\0\x86\xA7\0\x87\xA7\0\x8B\xA7\0\x8C\xA7\0\x8D\xA7\0\x8E\xA7\0\x90\xA7\0\x91\xA7\0\x92\xA7\0\x93\xA7\0\x96\xA7\0\x97\xA7\0\x98\xA7\0\x99\xA7\0\x9A\xA7\0\x9B\xA7\0\x9C\xA7\0\x9D\xA7\0\x9E\xA7\0\x9F\xA7\0\xA0\xA7\0\xA1\xA7\0\xA2\xA7\0\xA3\xA7\0\xA4\xA7\0\xA5\xA7\0\xA6\xA7\0\xA7\xA7\0\xA8\xA7\0\xA9\xA7\0\xAA\xA7\0\xAF\xA7\0\xB0\xA7\0\xB5\xA7\0\xB6\xA7\0\xB7\xA7\0\xB8\xA7\0\xB9\xA7\0\xBA\xA7\0\xBB\xA7\0\xBC\xA7\0\xBD\xA7\0\xBE\xA7\0\xBF\xA7\0\xC0\xA7\0\xC1\xA7\0\xC2\xA7\0\xC3\xA7\0\xC4\xA7\0\xC8\xA7\0\xC9\xA7\0\xCA\xA7\0\xCB\xA7\0\xCD\xA7\0\xD0\xA7\0\xD1\xA7\0\xD6\xA7\0\xD7\xA7\0\xD8\xA7\0\xD9\xA7\0\xDA\xA7\0\xDB\xA7\0\xDC\xA7\0\xDD\xA7\0\xF5\xA7\0\xF6\xA7\0!\xFF\0;\xFF\0\0\x04\x01(\x04\x01\xB0\x04\x01\xD4\x04\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x80\x0C\x01\xB3\x0C\x01P\r\x01f\r\x01\xA0\x18\x01\xC0\x18\x01@n\x01`n\x01\0\xE9\x01\"\xE9\x01") }, 1460u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_LOWERCASED_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_changes_when_lowercased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_changes_when_lowercased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_changes_when_lowercased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenLowercasedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_changes_when_lowercased_v1 as impl_property_binary_changes_when_lowercased_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_changes_when_nfkc_casefolded_v1.rs.data b/vendor/icu_properties_data/data/property_binary_changes_when_nfkc_casefolded_v1.rs.data
new file mode 100644
index 00000000..16ffbba4
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_changes_when_nfkc_casefolded_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryChangesWhenNfkcCasefoldedV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 5096B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_changes_when_nfkc_casefolded_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_NFKC_CASEFOLDED_V1: &'static <icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0[\0\0\xA0\0\0\xA1\0\0\xA8\0\0\xA9\0\0\xAA\0\0\xAB\0\0\xAD\0\0\xAE\0\0\xAF\0\0\xB0\0\0\xB2\0\0\xB6\0\0\xB8\0\0\xBB\0\0\xBC\0\0\xBF\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xE0\0\0\0\x01\0\x01\x01\0\x02\x01\0\x03\x01\0\x04\x01\0\x05\x01\0\x06\x01\0\x07\x01\0\x08\x01\0\t\x01\0\n\x01\0\x0B\x01\0\x0C\x01\0\r\x01\0\x0E\x01\0\x0F\x01\0\x10\x01\0\x11\x01\0\x12\x01\0\x13\x01\0\x14\x01\0\x15\x01\0\x16\x01\0\x17\x01\0\x18\x01\0\x19\x01\0\x1A\x01\0\x1B\x01\0\x1C\x01\0\x1D\x01\0\x1E\x01\0\x1F\x01\0 \x01\0!\x01\0\"\x01\0#\x01\0$\x01\0%\x01\0&\x01\0'\x01\0(\x01\0)\x01\0*\x01\0+\x01\0,\x01\0-\x01\0.\x01\0/\x01\x000\x01\x001\x01\x002\x01\x005\x01\x006\x01\x007\x01\09\x01\0:\x01\0;\x01\0<\x01\0=\x01\0>\x01\0?\x01\0B\x01\0C\x01\0D\x01\0E\x01\0F\x01\0G\x01\0H\x01\0I\x01\0K\x01\0L\x01\0M\x01\0N\x01\0O\x01\0P\x01\0Q\x01\0R\x01\0S\x01\0T\x01\0U\x01\0V\x01\0W\x01\0X\x01\0Y\x01\0Z\x01\0[\x01\0\\\x01\0]\x01\0^\x01\0_\x01\0`\x01\0a\x01\0b\x01\0c\x01\0d\x01\0e\x01\0f\x01\0g\x01\0h\x01\0i\x01\0j\x01\0k\x01\0l\x01\0m\x01\0n\x01\0o\x01\0p\x01\0q\x01\0r\x01\0s\x01\0t\x01\0u\x01\0v\x01\0w\x01\0x\x01\0z\x01\0{\x01\0|\x01\0}\x01\0~\x01\0\x7F\x01\0\x80\x01\0\x81\x01\0\x83\x01\0\x84\x01\0\x85\x01\0\x86\x01\0\x88\x01\0\x89\x01\0\x8C\x01\0\x8E\x01\0\x92\x01\0\x93\x01\0\x95\x01\0\x96\x01\0\x99\x01\0\x9C\x01\0\x9E\x01\0\x9F\x01\0\xA1\x01\0\xA2\x01\0\xA3\x01\0\xA4\x01\0\xA5\x01\0\xA6\x01\0\xA8\x01\0\xA9\x01\0\xAA\x01\0\xAC\x01\0\xAD\x01\0\xAE\x01\0\xB0\x01\0\xB1\x01\0\xB4\x01\0\xB5\x01\0\xB6\x01\0\xB7\x01\0\xB9\x01\0\xBC\x01\0\xBD\x01\0\xC4\x01\0\xCE\x01\0\xCF\x01\0\xD0\x01\0\xD1\x01\0\xD2\x01\0\xD3\x01\0\xD4\x01\0\xD5\x01\0\xD6\x01\0\xD7\x01\0\xD8\x01\0\xD9\x01\0\xDA\x01\0\xDB\x01\0\xDC\x01\0\xDE\x01\0\xDF\x01\0\xE0\x01\0\xE1\x01\0\xE2\x01\0\xE3\x01\0\xE4\x01\0\xE5\x01\0\xE6\x01\0\xE7\x01\0\xE8\x01\0\xE9\x01\0\xEA\x01\0\xEB\x01\0\xEC\x01\0\xED\x01\0\xEE\x01\0\xEF\x01\0\xF1\x01\0\xF5\x01\0\xF6\x01\0\xF9\x01\0\xFA\x01\0\xFB\x01\0\xFC\x01\0\xFD\x01\0\xFE\x01\0\xFF\x01\0\0\x02\0\x01\x02\0\x02\x02\0\x03\x02\0\x04\x02\0\x05\x02\0\x06\x02\0\x07\x02\0\x08\x02\0\t\x02\0\n\x02\0\x0B\x02\0\x0C\x02\0\r\x02\0\x0E\x02\0\x0F\x02\0\x10\x02\0\x11\x02\0\x12\x02\0\x13\x02\0\x14\x02\0\x15\x02\0\x16\x02\0\x17\x02\0\x18\x02\0\x19\x02\0\x1A\x02\0\x1B\x02\0\x1C\x02\0\x1D\x02\0\x1E\x02\0\x1F\x02\0 \x02\0!\x02\0\"\x02\0#\x02\0$\x02\0%\x02\0&\x02\0'\x02\0(\x02\0)\x02\0*\x02\0+\x02\0,\x02\0-\x02\0.\x02\0/\x02\x000\x02\x001\x02\x002\x02\x003\x02\0:\x02\0<\x02\0=\x02\0?\x02\0A\x02\0B\x02\0C\x02\0G\x02\0H\x02\0I\x02\0J\x02\0K\x02\0L\x02\0M\x02\0N\x02\0O\x02\0\xB0\x02\0\xB9\x02\0\xD8\x02\0\xDE\x02\0\xE0\x02\0\xE5\x02\0@\x03\0B\x03\0C\x03\0F\x03\0O\x03\0P\x03\0p\x03\0q\x03\0r\x03\0s\x03\0t\x03\0u\x03\0v\x03\0w\x03\0z\x03\0{\x03\0~\x03\0\x80\x03\0\x84\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\x90\x03\0\x91\x03\0\xA2\x03\0\xA3\x03\0\xAC\x03\0\xC2\x03\0\xC3\x03\0\xCF\x03\0\xD7\x03\0\xD8\x03\0\xD9\x03\0\xDA\x03\0\xDB\x03\0\xDC\x03\0\xDD\x03\0\xDE\x03\0\xDF\x03\0\xE0\x03\0\xE1\x03\0\xE2\x03\0\xE3\x03\0\xE4\x03\0\xE5\x03\0\xE6\x03\0\xE7\x03\0\xE8\x03\0\xE9\x03\0\xEA\x03\0\xEB\x03\0\xEC\x03\0\xED\x03\0\xEE\x03\0\xEF\x03\0\xF0\x03\0\xF3\x03\0\xF4\x03\0\xF6\x03\0\xF7\x03\0\xF8\x03\0\xF9\x03\0\xFB\x03\0\xFD\x03\x000\x04\0`\x04\0a\x04\0b\x04\0c\x04\0d\x04\0e\x04\0f\x04\0g\x04\0h\x04\0i\x04\0j\x04\0k\x04\0l\x04\0m\x04\0n\x04\0o\x04\0p\x04\0q\x04\0r\x04\0s\x04\0t\x04\0u\x04\0v\x04\0w\x04\0x\x04\0y\x04\0z\x04\0{\x04\0|\x04\0}\x04\0~\x04\0\x7F\x04\0\x80\x04\0\x81\x04\0\x8A\x04\0\x8B\x04\0\x8C\x04\0\x8D\x04\0\x8E\x04\0\x8F\x04\0\x90\x04\0\x91\x04\0\x92\x04\0\x93\x04\0\x94\x04\0\x95\x04\0\x96\x04\0\x97\x04\0\x98\x04\0\x99\x04\0\x9A\x04\0\x9B\x04\0\x9C\x04\0\x9D\x04\0\x9E\x04\0\x9F\x04\0\xA0\x04\0\xA1\x04\0\xA2\x04\0\xA3\x04\0\xA4\x04\0\xA5\x04\0\xA6\x04\0\xA7\x04\0\xA8\x04\0\xA9\x04\0\xAA\x04\0\xAB\x04\0\xAC\x04\0\xAD\x04\0\xAE\x04\0\xAF\x04\0\xB0\x04\0\xB1\x04\0\xB2\x04\0\xB3\x04\0\xB4\x04\0\xB5\x04\0\xB6\x04\0\xB7\x04\0\xB8\x04\0\xB9\x04\0\xBA\x04\0\xBB\x04\0\xBC\x04\0\xBD\x04\0\xBE\x04\0\xBF\x04\0\xC0\x04\0\xC2\x04\0\xC3\x04\0\xC4\x04\0\xC5\x04\0\xC6\x04\0\xC7\x04\0\xC8\x04\0\xC9\x04\0\xCA\x04\0\xCB\x04\0\xCC\x04\0\xCD\x04\0\xCE\x04\0\xD0\x04\0\xD1\x04\0\xD2\x04\0\xD3\x04\0\xD4\x04\0\xD5\x04\0\xD6\x04\0\xD7\x04\0\xD8\x04\0\xD9\x04\0\xDA\x04\0\xDB\x04\0\xDC\x04\0\xDD\x04\0\xDE\x04\0\xDF\x04\0\xE0\x04\0\xE1\x04\0\xE2\x04\0\xE3\x04\0\xE4\x04\0\xE5\x04\0\xE6\x04\0\xE7\x04\0\xE8\x04\0\xE9\x04\0\xEA\x04\0\xEB\x04\0\xEC\x04\0\xED\x04\0\xEE\x04\0\xEF\x04\0\xF0\x04\0\xF1\x04\0\xF2\x04\0\xF3\x04\0\xF4\x04\0\xF5\x04\0\xF6\x04\0\xF7\x04\0\xF8\x04\0\xF9\x04\0\xFA\x04\0\xFB\x04\0\xFC\x04\0\xFD\x04\0\xFE\x04\0\xFF\x04\0\0\x05\0\x01\x05\0\x02\x05\0\x03\x05\0\x04\x05\0\x05\x05\0\x06\x05\0\x07\x05\0\x08\x05\0\t\x05\0\n\x05\0\x0B\x05\0\x0C\x05\0\r\x05\0\x0E\x05\0\x0F\x05\0\x10\x05\0\x11\x05\0\x12\x05\0\x13\x05\0\x14\x05\0\x15\x05\0\x16\x05\0\x17\x05\0\x18\x05\0\x19\x05\0\x1A\x05\0\x1B\x05\0\x1C\x05\0\x1D\x05\0\x1E\x05\0\x1F\x05\0 \x05\0!\x05\0\"\x05\0#\x05\0$\x05\0%\x05\0&\x05\0'\x05\0(\x05\0)\x05\0*\x05\0+\x05\0,\x05\0-\x05\0.\x05\0/\x05\x001\x05\0W\x05\0\x87\x05\0\x88\x05\0\x1C\x06\0\x1D\x06\0u\x06\0y\x06\0X\t\0`\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE0\t\x003\n\x004\n\x006\n\x007\n\0Y\n\0\\\n\0^\n\0_\n\0\\\x0B\0^\x0B\x003\x0E\x004\x0E\0\xB3\x0E\0\xB4\x0E\0\xDC\x0E\0\xDE\x0E\0\x0C\x0F\0\r\x0F\0C\x0F\0D\x0F\0M\x0F\0N\x0F\0R\x0F\0S\x0F\0W\x0F\0X\x0F\0\\\x0F\0]\x0F\0i\x0F\0j\x0F\0s\x0F\0t\x0F\0u\x0F\0z\x0F\0\x81\x0F\0\x82\x0F\0\x93\x0F\0\x94\x0F\0\x9D\x0F\0\x9E\x0F\0\xA2\x0F\0\xA3\x0F\0\xA7\x0F\0\xA8\x0F\0\xAC\x0F\0\xAD\x0F\0\xB9\x0F\0\xBA\x0F\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xFC\x10\0\xFD\x10\0_\x11\0a\x11\0\xF8\x13\0\xFE\x13\0\xB4\x17\0\xB6\x17\0\x0B\x18\0\x10\x18\0\x80\x1C\0\x8A\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0,\x1D\0/\x1D\x000\x1D\0;\x1D\0<\x1D\0N\x1D\0O\x1D\0k\x1D\0x\x1D\0y\x1D\0\x9B\x1D\0\xC0\x1D\0\0\x1E\0\x01\x1E\0\x02\x1E\0\x03\x1E\0\x04\x1E\0\x05\x1E\0\x06\x1E\0\x07\x1E\0\x08\x1E\0\t\x1E\0\n\x1E\0\x0B\x1E\0\x0C\x1E\0\r\x1E\0\x0E\x1E\0\x0F\x1E\0\x10\x1E\0\x11\x1E\0\x12\x1E\0\x13\x1E\0\x14\x1E\0\x15\x1E\0\x16\x1E\0\x17\x1E\0\x18\x1E\0\x19\x1E\0\x1A\x1E\0\x1B\x1E\0\x1C\x1E\0\x1D\x1E\0\x1E\x1E\0\x1F\x1E\0 \x1E\0!\x1E\0\"\x1E\0#\x1E\0$\x1E\0%\x1E\0&\x1E\0'\x1E\0(\x1E\0)\x1E\0*\x1E\0+\x1E\0,\x1E\0-\x1E\0.\x1E\0/\x1E\x000\x1E\x001\x1E\x002\x1E\x003\x1E\x004\x1E\x005\x1E\x006\x1E\x007\x1E\08\x1E\09\x1E\0:\x1E\0;\x1E\0<\x1E\0=\x1E\0>\x1E\0?\x1E\0@\x1E\0A\x1E\0B\x1E\0C\x1E\0D\x1E\0E\x1E\0F\x1E\0G\x1E\0H\x1E\0I\x1E\0J\x1E\0K\x1E\0L\x1E\0M\x1E\0N\x1E\0O\x1E\0P\x1E\0Q\x1E\0R\x1E\0S\x1E\0T\x1E\0U\x1E\0V\x1E\0W\x1E\0X\x1E\0Y\x1E\0Z\x1E\0[\x1E\0\\\x1E\0]\x1E\0^\x1E\0_\x1E\0`\x1E\0a\x1E\0b\x1E\0c\x1E\0d\x1E\0e\x1E\0f\x1E\0g\x1E\0h\x1E\0i\x1E\0j\x1E\0k\x1E\0l\x1E\0m\x1E\0n\x1E\0o\x1E\0p\x1E\0q\x1E\0r\x1E\0s\x1E\0t\x1E\0u\x1E\0v\x1E\0w\x1E\0x\x1E\0y\x1E\0z\x1E\0{\x1E\0|\x1E\0}\x1E\0~\x1E\0\x7F\x1E\0\x80\x1E\0\x81\x1E\0\x82\x1E\0\x83\x1E\0\x84\x1E\0\x85\x1E\0\x86\x1E\0\x87\x1E\0\x88\x1E\0\x89\x1E\0\x8A\x1E\0\x8B\x1E\0\x8C\x1E\0\x8D\x1E\0\x8E\x1E\0\x8F\x1E\0\x90\x1E\0\x91\x1E\0\x92\x1E\0\x93\x1E\0\x94\x1E\0\x95\x1E\0\x9A\x1E\0\x9C\x1E\0\x9E\x1E\0\x9F\x1E\0\xA0\x1E\0\xA1\x1E\0\xA2\x1E\0\xA3\x1E\0\xA4\x1E\0\xA5\x1E\0\xA6\x1E\0\xA7\x1E\0\xA8\x1E\0\xA9\x1E\0\xAA\x1E\0\xAB\x1E\0\xAC\x1E\0\xAD\x1E\0\xAE\x1E\0\xAF\x1E\0\xB0\x1E\0\xB1\x1E\0\xB2\x1E\0\xB3\x1E\0\xB4\x1E\0\xB5\x1E\0\xB6\x1E\0\xB7\x1E\0\xB8\x1E\0\xB9\x1E\0\xBA\x1E\0\xBB\x1E\0\xBC\x1E\0\xBD\x1E\0\xBE\x1E\0\xBF\x1E\0\xC0\x1E\0\xC1\x1E\0\xC2\x1E\0\xC3\x1E\0\xC4\x1E\0\xC5\x1E\0\xC6\x1E\0\xC7\x1E\0\xC8\x1E\0\xC9\x1E\0\xCA\x1E\0\xCB\x1E\0\xCC\x1E\0\xCD\x1E\0\xCE\x1E\0\xCF\x1E\0\xD0\x1E\0\xD1\x1E\0\xD2\x1E\0\xD3\x1E\0\xD4\x1E\0\xD5\x1E\0\xD6\x1E\0\xD7\x1E\0\xD8\x1E\0\xD9\x1E\0\xDA\x1E\0\xDB\x1E\0\xDC\x1E\0\xDD\x1E\0\xDE\x1E\0\xDF\x1E\0\xE0\x1E\0\xE1\x1E\0\xE2\x1E\0\xE3\x1E\0\xE4\x1E\0\xE5\x1E\0\xE6\x1E\0\xE7\x1E\0\xE8\x1E\0\xE9\x1E\0\xEA\x1E\0\xEB\x1E\0\xEC\x1E\0\xED\x1E\0\xEE\x1E\0\xEF\x1E\0\xF0\x1E\0\xF1\x1E\0\xF2\x1E\0\xF3\x1E\0\xF4\x1E\0\xF5\x1E\0\xF6\x1E\0\xF7\x1E\0\xF8\x1E\0\xF9\x1E\0\xFA\x1E\0\xFB\x1E\0\xFC\x1E\0\xFD\x1E\0\xFE\x1E\0\xFF\x1E\0\x08\x1F\0\x10\x1F\0\x18\x1F\0\x1E\x1F\0(\x1F\x000\x1F\08\x1F\0@\x1F\0H\x1F\0N\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0`\x1F\0h\x1F\0p\x1F\0q\x1F\0r\x1F\0s\x1F\0t\x1F\0u\x1F\0v\x1F\0w\x1F\0x\x1F\0y\x1F\0z\x1F\0{\x1F\0|\x1F\0}\x1F\0~\x1F\0\x80\x1F\0\xB0\x1F\0\xB2\x1F\0\xB5\x1F\0\xB7\x1F\0\xC5\x1F\0\xC7\x1F\0\xD0\x1F\0\xD3\x1F\0\xD4\x1F\0\xD8\x1F\0\xDC\x1F\0\xDD\x1F\0\xE0\x1F\0\xE3\x1F\0\xE4\x1F\0\xE8\x1F\0\xF0\x1F\0\xF2\x1F\0\xF5\x1F\0\xF7\x1F\0\xFF\x1F\0\0 \0\x10 \0\x11 \0\x12 \0\x17 \0\x18 \0$ \0' \0* \x000 \x003 \x005 \x006 \08 \0< \0= \0> \0? \0G \0J \0W \0X \0_ \0r \0t \0\x8F \0\x90 \0\x9D \0\xA8 \0\xA9 \0\0!\0\x04!\0\x05!\0\x08!\0\t!\0\x14!\0\x15!\0\x17!\0\x19!\0\x1E!\0 !\0#!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0.!\0/!\0:!\0;!\0A!\0E!\0J!\0P!\0\x80!\0\x83!\0\x84!\0\x89!\0\x8A!\0,\"\0.\"\0/\"\x001\"\0)#\0+#\0`$\0\xEB$\0\x0C*\0\r*\0t*\0w*\0\xDC*\0\xDD*\0\0,\x000,\0`,\0a,\0b,\0e,\0g,\0h,\0i,\0j,\0k,\0l,\0m,\0q,\0r,\0s,\0u,\0v,\0|,\0\x81,\0\x82,\0\x83,\0\x84,\0\x85,\0\x86,\0\x87,\0\x88,\0\x89,\0\x8A,\0\x8B,\0\x8C,\0\x8D,\0\x8E,\0\x8F,\0\x90,\0\x91,\0\x92,\0\x93,\0\x94,\0\x95,\0\x96,\0\x97,\0\x98,\0\x99,\0\x9A,\0\x9B,\0\x9C,\0\x9D,\0\x9E,\0\x9F,\0\xA0,\0\xA1,\0\xA2,\0\xA3,\0\xA4,\0\xA5,\0\xA6,\0\xA7,\0\xA8,\0\xA9,\0\xAA,\0\xAB,\0\xAC,\0\xAD,\0\xAE,\0\xAF,\0\xB0,\0\xB1,\0\xB2,\0\xB3,\0\xB4,\0\xB5,\0\xB6,\0\xB7,\0\xB8,\0\xB9,\0\xBA,\0\xBB,\0\xBC,\0\xBD,\0\xBE,\0\xBF,\0\xC0,\0\xC1,\0\xC2,\0\xC3,\0\xC4,\0\xC5,\0\xC6,\0\xC7,\0\xC8,\0\xC9,\0\xCA,\0\xCB,\0\xCC,\0\xCD,\0\xCE,\0\xCF,\0\xD0,\0\xD1,\0\xD2,\0\xD3,\0\xD4,\0\xD5,\0\xD6,\0\xD7,\0\xD8,\0\xD9,\0\xDA,\0\xDB,\0\xDC,\0\xDD,\0\xDE,\0\xDF,\0\xE0,\0\xE1,\0\xE2,\0\xE3,\0\xEB,\0\xEC,\0\xED,\0\xEE,\0\xF2,\0\xF3,\0o-\0p-\0\x9F.\0\xA0.\0\xF3.\0\xF4.\0\0/\0\xD6/\0\x000\0\x010\x0060\x0070\080\0;0\0\x9B0\0\x9D0\0\x9F0\0\xA00\0\xFF0\0\x001\x0011\0\x8F1\0\x921\0\xA01\0\x002\0\x1F2\0 2\0H2\0P2\0\x7F2\0\x802\0\x004\0@\xA6\0A\xA6\0B\xA6\0C\xA6\0D\xA6\0E\xA6\0F\xA6\0G\xA6\0H\xA6\0I\xA6\0J\xA6\0K\xA6\0L\xA6\0M\xA6\0N\xA6\0O\xA6\0P\xA6\0Q\xA6\0R\xA6\0S\xA6\0T\xA6\0U\xA6\0V\xA6\0W\xA6\0X\xA6\0Y\xA6\0Z\xA6\0[\xA6\0\\\xA6\0]\xA6\0^\xA6\0_\xA6\0`\xA6\0a\xA6\0b\xA6\0c\xA6\0d\xA6\0e\xA6\0f\xA6\0g\xA6\0h\xA6\0i\xA6\0j\xA6\0k\xA6\0l\xA6\0m\xA6\0\x80\xA6\0\x81\xA6\0\x82\xA6\0\x83\xA6\0\x84\xA6\0\x85\xA6\0\x86\xA6\0\x87\xA6\0\x88\xA6\0\x89\xA6\0\x8A\xA6\0\x8B\xA6\0\x8C\xA6\0\x8D\xA6\0\x8E\xA6\0\x8F\xA6\0\x90\xA6\0\x91\xA6\0\x92\xA6\0\x93\xA6\0\x94\xA6\0\x95\xA6\0\x96\xA6\0\x97\xA6\0\x98\xA6\0\x99\xA6\0\x9A\xA6\0\x9B\xA6\0\x9C\xA6\0\x9E\xA6\0\"\xA7\0#\xA7\0$\xA7\0%\xA7\0&\xA7\0'\xA7\0(\xA7\0)\xA7\0*\xA7\0+\xA7\0,\xA7\0-\xA7\0.\xA7\0/\xA7\x002\xA7\x003\xA7\x004\xA7\x005\xA7\x006\xA7\x007\xA7\08\xA7\09\xA7\0:\xA7\0;\xA7\0<\xA7\0=\xA7\0>\xA7\0?\xA7\0@\xA7\0A\xA7\0B\xA7\0C\xA7\0D\xA7\0E\xA7\0F\xA7\0G\xA7\0H\xA7\0I\xA7\0J\xA7\0K\xA7\0L\xA7\0M\xA7\0N\xA7\0O\xA7\0P\xA7\0Q\xA7\0R\xA7\0S\xA7\0T\xA7\0U\xA7\0V\xA7\0W\xA7\0X\xA7\0Y\xA7\0Z\xA7\0[\xA7\0\\\xA7\0]\xA7\0^\xA7\0_\xA7\0`\xA7\0a\xA7\0b\xA7\0c\xA7\0d\xA7\0e\xA7\0f\xA7\0g\xA7\0h\xA7\0i\xA7\0j\xA7\0k\xA7\0l\xA7\0m\xA7\0n\xA7\0o\xA7\0p\xA7\0q\xA7\0y\xA7\0z\xA7\0{\xA7\0|\xA7\0}\xA7\0\x7F\xA7\0\x80\xA7\0\x81\xA7\0\x82\xA7\0\x83\xA7\0\x84\xA7\0\x85\xA7\0\x86\xA7\0\x87\xA7\0\x8B\xA7\0\x8C\xA7\0\x8D\xA7\0\x8E\xA7\0\x90\xA7\0\x91\xA7\0\x92\xA7\0\x93\xA7\0\x96\xA7\0\x97\xA7\0\x98\xA7\0\x99\xA7\0\x9A\xA7\0\x9B\xA7\0\x9C\xA7\0\x9D\xA7\0\x9E\xA7\0\x9F\xA7\0\xA0\xA7\0\xA1\xA7\0\xA2\xA7\0\xA3\xA7\0\xA4\xA7\0\xA5\xA7\0\xA6\xA7\0\xA7\xA7\0\xA8\xA7\0\xA9\xA7\0\xAA\xA7\0\xAF\xA7\0\xB0\xA7\0\xB5\xA7\0\xB6\xA7\0\xB7\xA7\0\xB8\xA7\0\xB9\xA7\0\xBA\xA7\0\xBB\xA7\0\xBC\xA7\0\xBD\xA7\0\xBE\xA7\0\xBF\xA7\0\xC0\xA7\0\xC1\xA7\0\xC2\xA7\0\xC3\xA7\0\xC4\xA7\0\xC8\xA7\0\xC9\xA7\0\xCA\xA7\0\xCB\xA7\0\xCD\xA7\0\xD0\xA7\0\xD1\xA7\0\xD6\xA7\0\xD7\xA7\0\xD8\xA7\0\xD9\xA7\0\xDA\xA7\0\xDB\xA7\0\xDC\xA7\0\xDD\xA7\0\xF2\xA7\0\xF6\xA7\0\xF8\xA7\0\xFA\xA7\0\\\xAB\0`\xAB\0i\xAB\0j\xAB\0p\xAB\0\xC0\xAB\0\0\xF9\0\x0E\xFA\0\x10\xFA\0\x11\xFA\0\x12\xFA\0\x13\xFA\0\x15\xFA\0\x1F\xFA\0 \xFA\0!\xFA\0\"\xFA\0#\xFA\0%\xFA\0'\xFA\0*\xFA\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\0\x1E\xFB\0\x1F\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xB2\xFB\0\xD3\xFB\0>\xFD\0P\xFD\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xF0\xFD\0\xFD\xFD\0\0\xFE\0\x1A\xFE\x000\xFE\0E\xFE\0G\xFE\0S\xFE\0T\xFE\0g\xFE\0h\xFE\0l\xFE\0p\xFE\0s\xFE\0t\xFE\0u\xFE\0v\xFE\0\xFD\xFE\0\xFF\xFE\0\0\xFF\0\x01\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\xE0\xFF\0\xE7\xFF\0\xE8\xFF\0\xEF\xFF\0\xF0\xFF\0\xF9\xFF\0\0\x04\x01(\x04\x01\xB0\x04\x01\xD4\x04\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x81\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\x80\x0C\x01\xB3\x0C\x01P\r\x01f\r\x01\xA0\x18\x01\xC0\x18\x01@n\x01`n\x01\xA0\xBC\x01\xA4\xBC\x01\xD6\xCC\x01\xFA\xCC\x01^\xD1\x01e\xD1\x01s\xD1\x01{\xD1\x01\xBB\xD1\x01\xC1\xD1\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xCC\xD7\x01\xCE\xD7\x01\0\xD8\x010\xE0\x01n\xE0\x01\0\xE9\x01\"\xE9\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\0\xF1\x01\x0B\xF1\x01\x10\xF1\x01/\xF1\x010\xF1\x01P\xF1\x01j\xF1\x01m\xF1\x01\x90\xF1\x01\x91\xF1\x01\0\xF2\x01\x03\xF2\x01\x10\xF2\x01<\xF2\x01@\xF2\x01I\xF2\x01P\xF2\x01R\xF2\x01\xF0\xFB\x01\xFA\xFB\x01\0\xF8\x02\x1E\xFA\x02\0\0\x0E\0\x10\x0E") }, 10554u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_NFKC_CASEFOLDED_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_changes_when_nfkc_casefolded_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_changes_when_nfkc_casefolded_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_changes_when_nfkc_casefolded_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenNfkcCasefoldedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_changes_when_nfkc_casefolded_v1 as impl_property_binary_changes_when_nfkc_casefolded_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_changes_when_titlecased_v1.rs.data b/vendor/icu_properties_data/data/property_binary_changes_when_titlecased_v1.rs.data
new file mode 100644
index 00000000..6be9a959
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_changes_when_titlecased_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryChangesWhenTitlecasedV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 3806B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_changes_when_titlecased_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_TITLECASED_V1: &'static <icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"a\0\0{\0\0\xB5\0\0\xB6\0\0\xDF\0\0\xF7\0\0\xF8\0\0\0\x01\0\x01\x01\0\x02\x01\0\x03\x01\0\x04\x01\0\x05\x01\0\x06\x01\0\x07\x01\0\x08\x01\0\t\x01\0\n\x01\0\x0B\x01\0\x0C\x01\0\r\x01\0\x0E\x01\0\x0F\x01\0\x10\x01\0\x11\x01\0\x12\x01\0\x13\x01\0\x14\x01\0\x15\x01\0\x16\x01\0\x17\x01\0\x18\x01\0\x19\x01\0\x1A\x01\0\x1B\x01\0\x1C\x01\0\x1D\x01\0\x1E\x01\0\x1F\x01\0 \x01\0!\x01\0\"\x01\0#\x01\0$\x01\0%\x01\0&\x01\0'\x01\0(\x01\0)\x01\0*\x01\0+\x01\0,\x01\0-\x01\0.\x01\0/\x01\x000\x01\x001\x01\x002\x01\x003\x01\x004\x01\x005\x01\x006\x01\x007\x01\08\x01\0:\x01\0;\x01\0<\x01\0=\x01\0>\x01\0?\x01\0@\x01\0A\x01\0B\x01\0C\x01\0D\x01\0E\x01\0F\x01\0G\x01\0H\x01\0J\x01\0K\x01\0L\x01\0M\x01\0N\x01\0O\x01\0P\x01\0Q\x01\0R\x01\0S\x01\0T\x01\0U\x01\0V\x01\0W\x01\0X\x01\0Y\x01\0Z\x01\0[\x01\0\\\x01\0]\x01\0^\x01\0_\x01\0`\x01\0a\x01\0b\x01\0c\x01\0d\x01\0e\x01\0f\x01\0g\x01\0h\x01\0i\x01\0j\x01\0k\x01\0l\x01\0m\x01\0n\x01\0o\x01\0p\x01\0q\x01\0r\x01\0s\x01\0t\x01\0u\x01\0v\x01\0w\x01\0x\x01\0z\x01\0{\x01\0|\x01\0}\x01\0~\x01\0\x81\x01\0\x83\x01\0\x84\x01\0\x85\x01\0\x86\x01\0\x88\x01\0\x89\x01\0\x8C\x01\0\x8D\x01\0\x92\x01\0\x93\x01\0\x95\x01\0\x96\x01\0\x99\x01\0\x9C\x01\0\x9E\x01\0\x9F\x01\0\xA1\x01\0\xA2\x01\0\xA3\x01\0\xA4\x01\0\xA5\x01\0\xA6\x01\0\xA8\x01\0\xA9\x01\0\xAD\x01\0\xAE\x01\0\xB0\x01\0\xB1\x01\0\xB4\x01\0\xB5\x01\0\xB6\x01\0\xB7\x01\0\xB9\x01\0\xBA\x01\0\xBD\x01\0\xBE\x01\0\xBF\x01\0\xC0\x01\0\xC4\x01\0\xC5\x01\0\xC6\x01\0\xC8\x01\0\xC9\x01\0\xCB\x01\0\xCC\x01\0\xCD\x01\0\xCE\x01\0\xCF\x01\0\xD0\x01\0\xD1\x01\0\xD2\x01\0\xD3\x01\0\xD4\x01\0\xD5\x01\0\xD6\x01\0\xD7\x01\0\xD8\x01\0\xD9\x01\0\xDA\x01\0\xDB\x01\0\xDC\x01\0\xDE\x01\0\xDF\x01\0\xE0\x01\0\xE1\x01\0\xE2\x01\0\xE3\x01\0\xE4\x01\0\xE5\x01\0\xE6\x01\0\xE7\x01\0\xE8\x01\0\xE9\x01\0\xEA\x01\0\xEB\x01\0\xEC\x01\0\xED\x01\0\xEE\x01\0\xEF\x01\0\xF2\x01\0\xF3\x01\0\xF4\x01\0\xF5\x01\0\xF6\x01\0\xF9\x01\0\xFA\x01\0\xFB\x01\0\xFC\x01\0\xFD\x01\0\xFE\x01\0\xFF\x01\0\0\x02\0\x01\x02\0\x02\x02\0\x03\x02\0\x04\x02\0\x05\x02\0\x06\x02\0\x07\x02\0\x08\x02\0\t\x02\0\n\x02\0\x0B\x02\0\x0C\x02\0\r\x02\0\x0E\x02\0\x0F\x02\0\x10\x02\0\x11\x02\0\x12\x02\0\x13\x02\0\x14\x02\0\x15\x02\0\x16\x02\0\x17\x02\0\x18\x02\0\x19\x02\0\x1A\x02\0\x1B\x02\0\x1C\x02\0\x1D\x02\0\x1E\x02\0\x1F\x02\0 \x02\0#\x02\0$\x02\0%\x02\0&\x02\0'\x02\0(\x02\0)\x02\0*\x02\0+\x02\0,\x02\0-\x02\0.\x02\0/\x02\x000\x02\x001\x02\x002\x02\x003\x02\x004\x02\0<\x02\0=\x02\0?\x02\0A\x02\0B\x02\0C\x02\0G\x02\0H\x02\0I\x02\0J\x02\0K\x02\0L\x02\0M\x02\0N\x02\0O\x02\0U\x02\0V\x02\0X\x02\0Y\x02\0Z\x02\0[\x02\0]\x02\0`\x02\0b\x02\0c\x02\0g\x02\0h\x02\0m\x02\0o\x02\0p\x02\0q\x02\0s\x02\0u\x02\0v\x02\0}\x02\0~\x02\0\x80\x02\0\x81\x02\0\x82\x02\0\x84\x02\0\x87\x02\0\x8D\x02\0\x92\x02\0\x93\x02\0\x9D\x02\0\x9F\x02\0E\x03\0F\x03\0q\x03\0r\x03\0s\x03\0t\x03\0w\x03\0x\x03\0{\x03\0~\x03\0\x90\x03\0\x91\x03\0\xAC\x03\0\xCF\x03\0\xD0\x03\0\xD2\x03\0\xD5\x03\0\xD8\x03\0\xD9\x03\0\xDA\x03\0\xDB\x03\0\xDC\x03\0\xDD\x03\0\xDE\x03\0\xDF\x03\0\xE0\x03\0\xE1\x03\0\xE2\x03\0\xE3\x03\0\xE4\x03\0\xE5\x03\0\xE6\x03\0\xE7\x03\0\xE8\x03\0\xE9\x03\0\xEA\x03\0\xEB\x03\0\xEC\x03\0\xED\x03\0\xEE\x03\0\xEF\x03\0\xF4\x03\0\xF5\x03\0\xF6\x03\0\xF8\x03\0\xF9\x03\0\xFB\x03\0\xFC\x03\x000\x04\0`\x04\0a\x04\0b\x04\0c\x04\0d\x04\0e\x04\0f\x04\0g\x04\0h\x04\0i\x04\0j\x04\0k\x04\0l\x04\0m\x04\0n\x04\0o\x04\0p\x04\0q\x04\0r\x04\0s\x04\0t\x04\0u\x04\0v\x04\0w\x04\0x\x04\0y\x04\0z\x04\0{\x04\0|\x04\0}\x04\0~\x04\0\x7F\x04\0\x80\x04\0\x81\x04\0\x82\x04\0\x8B\x04\0\x8C\x04\0\x8D\x04\0\x8E\x04\0\x8F\x04\0\x90\x04\0\x91\x04\0\x92\x04\0\x93\x04\0\x94\x04\0\x95\x04\0\x96\x04\0\x97\x04\0\x98\x04\0\x99\x04\0\x9A\x04\0\x9B\x04\0\x9C\x04\0\x9D\x04\0\x9E\x04\0\x9F\x04\0\xA0\x04\0\xA1\x04\0\xA2\x04\0\xA3\x04\0\xA4\x04\0\xA5\x04\0\xA6\x04\0\xA7\x04\0\xA8\x04\0\xA9\x04\0\xAA\x04\0\xAB\x04\0\xAC\x04\0\xAD\x04\0\xAE\x04\0\xAF\x04\0\xB0\x04\0\xB1\x04\0\xB2\x04\0\xB3\x04\0\xB4\x04\0\xB5\x04\0\xB6\x04\0\xB7\x04\0\xB8\x04\0\xB9\x04\0\xBA\x04\0\xBB\x04\0\xBC\x04\0\xBD\x04\0\xBE\x04\0\xBF\x04\0\xC0\x04\0\xC2\x04\0\xC3\x04\0\xC4\x04\0\xC5\x04\0\xC6\x04\0\xC7\x04\0\xC8\x04\0\xC9\x04\0\xCA\x04\0\xCB\x04\0\xCC\x04\0\xCD\x04\0\xCE\x04\0\xD0\x04\0\xD1\x04\0\xD2\x04\0\xD3\x04\0\xD4\x04\0\xD5\x04\0\xD6\x04\0\xD7\x04\0\xD8\x04\0\xD9\x04\0\xDA\x04\0\xDB\x04\0\xDC\x04\0\xDD\x04\0\xDE\x04\0\xDF\x04\0\xE0\x04\0\xE1\x04\0\xE2\x04\0\xE3\x04\0\xE4\x04\0\xE5\x04\0\xE6\x04\0\xE7\x04\0\xE8\x04\0\xE9\x04\0\xEA\x04\0\xEB\x04\0\xEC\x04\0\xED\x04\0\xEE\x04\0\xEF\x04\0\xF0\x04\0\xF1\x04\0\xF2\x04\0\xF3\x04\0\xF4\x04\0\xF5\x04\0\xF6\x04\0\xF7\x04\0\xF8\x04\0\xF9\x04\0\xFA\x04\0\xFB\x04\0\xFC\x04\0\xFD\x04\0\xFE\x04\0\xFF\x04\0\0\x05\0\x01\x05\0\x02\x05\0\x03\x05\0\x04\x05\0\x05\x05\0\x06\x05\0\x07\x05\0\x08\x05\0\t\x05\0\n\x05\0\x0B\x05\0\x0C\x05\0\r\x05\0\x0E\x05\0\x0F\x05\0\x10\x05\0\x11\x05\0\x12\x05\0\x13\x05\0\x14\x05\0\x15\x05\0\x16\x05\0\x17\x05\0\x18\x05\0\x19\x05\0\x1A\x05\0\x1B\x05\0\x1C\x05\0\x1D\x05\0\x1E\x05\0\x1F\x05\0 \x05\0!\x05\0\"\x05\0#\x05\0$\x05\0%\x05\0&\x05\0'\x05\0(\x05\0)\x05\0*\x05\0+\x05\0,\x05\0-\x05\0.\x05\0/\x05\x000\x05\0a\x05\0\x88\x05\0\xF8\x13\0\xFE\x13\0\x80\x1C\0\x89\x1C\0\x8A\x1C\0\x8B\x1C\0y\x1D\0z\x1D\0}\x1D\0~\x1D\0\x8E\x1D\0\x8F\x1D\0\x01\x1E\0\x02\x1E\0\x03\x1E\0\x04\x1E\0\x05\x1E\0\x06\x1E\0\x07\x1E\0\x08\x1E\0\t\x1E\0\n\x1E\0\x0B\x1E\0\x0C\x1E\0\r\x1E\0\x0E\x1E\0\x0F\x1E\0\x10\x1E\0\x11\x1E\0\x12\x1E\0\x13\x1E\0\x14\x1E\0\x15\x1E\0\x16\x1E\0\x17\x1E\0\x18\x1E\0\x19\x1E\0\x1A\x1E\0\x1B\x1E\0\x1C\x1E\0\x1D\x1E\0\x1E\x1E\0\x1F\x1E\0 \x1E\0!\x1E\0\"\x1E\0#\x1E\0$\x1E\0%\x1E\0&\x1E\0'\x1E\0(\x1E\0)\x1E\0*\x1E\0+\x1E\0,\x1E\0-\x1E\0.\x1E\0/\x1E\x000\x1E\x001\x1E\x002\x1E\x003\x1E\x004\x1E\x005\x1E\x006\x1E\x007\x1E\08\x1E\09\x1E\0:\x1E\0;\x1E\0<\x1E\0=\x1E\0>\x1E\0?\x1E\0@\x1E\0A\x1E\0B\x1E\0C\x1E\0D\x1E\0E\x1E\0F\x1E\0G\x1E\0H\x1E\0I\x1E\0J\x1E\0K\x1E\0L\x1E\0M\x1E\0N\x1E\0O\x1E\0P\x1E\0Q\x1E\0R\x1E\0S\x1E\0T\x1E\0U\x1E\0V\x1E\0W\x1E\0X\x1E\0Y\x1E\0Z\x1E\0[\x1E\0\\\x1E\0]\x1E\0^\x1E\0_\x1E\0`\x1E\0a\x1E\0b\x1E\0c\x1E\0d\x1E\0e\x1E\0f\x1E\0g\x1E\0h\x1E\0i\x1E\0j\x1E\0k\x1E\0l\x1E\0m\x1E\0n\x1E\0o\x1E\0p\x1E\0q\x1E\0r\x1E\0s\x1E\0t\x1E\0u\x1E\0v\x1E\0w\x1E\0x\x1E\0y\x1E\0z\x1E\0{\x1E\0|\x1E\0}\x1E\0~\x1E\0\x7F\x1E\0\x80\x1E\0\x81\x1E\0\x82\x1E\0\x83\x1E\0\x84\x1E\0\x85\x1E\0\x86\x1E\0\x87\x1E\0\x88\x1E\0\x89\x1E\0\x8A\x1E\0\x8B\x1E\0\x8C\x1E\0\x8D\x1E\0\x8E\x1E\0\x8F\x1E\0\x90\x1E\0\x91\x1E\0\x92\x1E\0\x93\x1E\0\x94\x1E\0\x95\x1E\0\x9C\x1E\0\xA1\x1E\0\xA2\x1E\0\xA3\x1E\0\xA4\x1E\0\xA5\x1E\0\xA6\x1E\0\xA7\x1E\0\xA8\x1E\0\xA9\x1E\0\xAA\x1E\0\xAB\x1E\0\xAC\x1E\0\xAD\x1E\0\xAE\x1E\0\xAF\x1E\0\xB0\x1E\0\xB1\x1E\0\xB2\x1E\0\xB3\x1E\0\xB4\x1E\0\xB5\x1E\0\xB6\x1E\0\xB7\x1E\0\xB8\x1E\0\xB9\x1E\0\xBA\x1E\0\xBB\x1E\0\xBC\x1E\0\xBD\x1E\0\xBE\x1E\0\xBF\x1E\0\xC0\x1E\0\xC1\x1E\0\xC2\x1E\0\xC3\x1E\0\xC4\x1E\0\xC5\x1E\0\xC6\x1E\0\xC7\x1E\0\xC8\x1E\0\xC9\x1E\0\xCA\x1E\0\xCB\x1E\0\xCC\x1E\0\xCD\x1E\0\xCE\x1E\0\xCF\x1E\0\xD0\x1E\0\xD1\x1E\0\xD2\x1E\0\xD3\x1E\0\xD4\x1E\0\xD5\x1E\0\xD6\x1E\0\xD7\x1E\0\xD8\x1E\0\xD9\x1E\0\xDA\x1E\0\xDB\x1E\0\xDC\x1E\0\xDD\x1E\0\xDE\x1E\0\xDF\x1E\0\xE0\x1E\0\xE1\x1E\0\xE2\x1E\0\xE3\x1E\0\xE4\x1E\0\xE5\x1E\0\xE6\x1E\0\xE7\x1E\0\xE8\x1E\0\xE9\x1E\0\xEA\x1E\0\xEB\x1E\0\xEC\x1E\0\xED\x1E\0\xEE\x1E\0\xEF\x1E\0\xF0\x1E\0\xF1\x1E\0\xF2\x1E\0\xF3\x1E\0\xF4\x1E\0\xF5\x1E\0\xF6\x1E\0\xF7\x1E\0\xF8\x1E\0\xF9\x1E\0\xFA\x1E\0\xFB\x1E\0\xFC\x1E\0\xFD\x1E\0\xFE\x1E\0\xFF\x1E\0\x08\x1F\0\x10\x1F\0\x16\x1F\0 \x1F\0(\x1F\x000\x1F\08\x1F\0@\x1F\0F\x1F\0P\x1F\0X\x1F\0`\x1F\0h\x1F\0p\x1F\0~\x1F\0\x80\x1F\0\x88\x1F\0\x90\x1F\0\x98\x1F\0\xA0\x1F\0\xA8\x1F\0\xB0\x1F\0\xB5\x1F\0\xB6\x1F\0\xB8\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xC8\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xD8\x1F\0\xE0\x1F\0\xE8\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xF8\x1F\0N!\0O!\0p!\0\x80!\0\x84!\0\x85!\0\xD0$\0\xEA$\x000,\0`,\0a,\0b,\0e,\0g,\0h,\0i,\0j,\0k,\0l,\0m,\0s,\0t,\0v,\0w,\0\x81,\0\x82,\0\x83,\0\x84,\0\x85,\0\x86,\0\x87,\0\x88,\0\x89,\0\x8A,\0\x8B,\0\x8C,\0\x8D,\0\x8E,\0\x8F,\0\x90,\0\x91,\0\x92,\0\x93,\0\x94,\0\x95,\0\x96,\0\x97,\0\x98,\0\x99,\0\x9A,\0\x9B,\0\x9C,\0\x9D,\0\x9E,\0\x9F,\0\xA0,\0\xA1,\0\xA2,\0\xA3,\0\xA4,\0\xA5,\0\xA6,\0\xA7,\0\xA8,\0\xA9,\0\xAA,\0\xAB,\0\xAC,\0\xAD,\0\xAE,\0\xAF,\0\xB0,\0\xB1,\0\xB2,\0\xB3,\0\xB4,\0\xB5,\0\xB6,\0\xB7,\0\xB8,\0\xB9,\0\xBA,\0\xBB,\0\xBC,\0\xBD,\0\xBE,\0\xBF,\0\xC0,\0\xC1,\0\xC2,\0\xC3,\0\xC4,\0\xC5,\0\xC6,\0\xC7,\0\xC8,\0\xC9,\0\xCA,\0\xCB,\0\xCC,\0\xCD,\0\xCE,\0\xCF,\0\xD0,\0\xD1,\0\xD2,\0\xD3,\0\xD4,\0\xD5,\0\xD6,\0\xD7,\0\xD8,\0\xD9,\0\xDA,\0\xDB,\0\xDC,\0\xDD,\0\xDE,\0\xDF,\0\xE0,\0\xE1,\0\xE2,\0\xE3,\0\xE4,\0\xEC,\0\xED,\0\xEE,\0\xEF,\0\xF3,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\0A\xA6\0B\xA6\0C\xA6\0D\xA6\0E\xA6\0F\xA6\0G\xA6\0H\xA6\0I\xA6\0J\xA6\0K\xA6\0L\xA6\0M\xA6\0N\xA6\0O\xA6\0P\xA6\0Q\xA6\0R\xA6\0S\xA6\0T\xA6\0U\xA6\0V\xA6\0W\xA6\0X\xA6\0Y\xA6\0Z\xA6\0[\xA6\0\\\xA6\0]\xA6\0^\xA6\0_\xA6\0`\xA6\0a\xA6\0b\xA6\0c\xA6\0d\xA6\0e\xA6\0f\xA6\0g\xA6\0h\xA6\0i\xA6\0j\xA6\0k\xA6\0l\xA6\0m\xA6\0n\xA6\0\x81\xA6\0\x82\xA6\0\x83\xA6\0\x84\xA6\0\x85\xA6\0\x86\xA6\0\x87\xA6\0\x88\xA6\0\x89\xA6\0\x8A\xA6\0\x8B\xA6\0\x8C\xA6\0\x8D\xA6\0\x8E\xA6\0\x8F\xA6\0\x90\xA6\0\x91\xA6\0\x92\xA6\0\x93\xA6\0\x94\xA6\0\x95\xA6\0\x96\xA6\0\x97\xA6\0\x98\xA6\0\x99\xA6\0\x9A\xA6\0\x9B\xA6\0\x9C\xA6\0#\xA7\0$\xA7\0%\xA7\0&\xA7\0'\xA7\0(\xA7\0)\xA7\0*\xA7\0+\xA7\0,\xA7\0-\xA7\0.\xA7\0/\xA7\x000\xA7\x003\xA7\x004\xA7\x005\xA7\x006\xA7\x007\xA7\08\xA7\09\xA7\0:\xA7\0;\xA7\0<\xA7\0=\xA7\0>\xA7\0?\xA7\0@\xA7\0A\xA7\0B\xA7\0C\xA7\0D\xA7\0E\xA7\0F\xA7\0G\xA7\0H\xA7\0I\xA7\0J\xA7\0K\xA7\0L\xA7\0M\xA7\0N\xA7\0O\xA7\0P\xA7\0Q\xA7\0R\xA7\0S\xA7\0T\xA7\0U\xA7\0V\xA7\0W\xA7\0X\xA7\0Y\xA7\0Z\xA7\0[\xA7\0\\\xA7\0]\xA7\0^\xA7\0_\xA7\0`\xA7\0a\xA7\0b\xA7\0c\xA7\0d\xA7\0e\xA7\0f\xA7\0g\xA7\0h\xA7\0i\xA7\0j\xA7\0k\xA7\0l\xA7\0m\xA7\0n\xA7\0o\xA7\0p\xA7\0z\xA7\0{\xA7\0|\xA7\0}\xA7\0\x7F\xA7\0\x80\xA7\0\x81\xA7\0\x82\xA7\0\x83\xA7\0\x84\xA7\0\x85\xA7\0\x86\xA7\0\x87\xA7\0\x88\xA7\0\x8C\xA7\0\x8D\xA7\0\x91\xA7\0\x92\xA7\0\x93\xA7\0\x95\xA7\0\x97\xA7\0\x98\xA7\0\x99\xA7\0\x9A\xA7\0\x9B\xA7\0\x9C\xA7\0\x9D\xA7\0\x9E\xA7\0\x9F\xA7\0\xA0\xA7\0\xA1\xA7\0\xA2\xA7\0\xA3\xA7\0\xA4\xA7\0\xA5\xA7\0\xA6\xA7\0\xA7\xA7\0\xA8\xA7\0\xA9\xA7\0\xAA\xA7\0\xB5\xA7\0\xB6\xA7\0\xB7\xA7\0\xB8\xA7\0\xB9\xA7\0\xBA\xA7\0\xBB\xA7\0\xBC\xA7\0\xBD\xA7\0\xBE\xA7\0\xBF\xA7\0\xC0\xA7\0\xC1\xA7\0\xC2\xA7\0\xC3\xA7\0\xC4\xA7\0\xC8\xA7\0\xC9\xA7\0\xCA\xA7\0\xCB\xA7\0\xCD\xA7\0\xCE\xA7\0\xD1\xA7\0\xD2\xA7\0\xD7\xA7\0\xD8\xA7\0\xD9\xA7\0\xDA\xA7\0\xDB\xA7\0\xDC\xA7\0\xF6\xA7\0\xF7\xA7\0S\xAB\0T\xAB\0p\xAB\0\xC0\xAB\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0A\xFF\0[\xFF\0(\x04\x01P\x04\x01\xD8\x04\x01\xFC\x04\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x0C\x01\xF3\x0C\x01p\r\x01\x86\r\x01\xC0\x18\x01\xE0\x18\x01`n\x01\x80n\x01\"\xE9\x01D\xE9\x01") }, 1479u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_TITLECASED_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_changes_when_titlecased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_changes_when_titlecased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_changes_when_titlecased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenTitlecasedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_changes_when_titlecased_v1 as impl_property_binary_changes_when_titlecased_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_changes_when_uppercased_v1.rs.data b/vendor/icu_properties_data/data/property_binary_changes_when_uppercased_v1.rs.data
new file mode 100644
index 00000000..12e83fde
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_changes_when_uppercased_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryChangesWhenUppercasedV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 3812B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_changes_when_uppercased_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_UPPERCASED_V1: &'static <icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"a\0\0{\0\0\xB5\0\0\xB6\0\0\xDF\0\0\xF7\0\0\xF8\0\0\0\x01\0\x01\x01\0\x02\x01\0\x03\x01\0\x04\x01\0\x05\x01\0\x06\x01\0\x07\x01\0\x08\x01\0\t\x01\0\n\x01\0\x0B\x01\0\x0C\x01\0\r\x01\0\x0E\x01\0\x0F\x01\0\x10\x01\0\x11\x01\0\x12\x01\0\x13\x01\0\x14\x01\0\x15\x01\0\x16\x01\0\x17\x01\0\x18\x01\0\x19\x01\0\x1A\x01\0\x1B\x01\0\x1C\x01\0\x1D\x01\0\x1E\x01\0\x1F\x01\0 \x01\0!\x01\0\"\x01\0#\x01\0$\x01\0%\x01\0&\x01\0'\x01\0(\x01\0)\x01\0*\x01\0+\x01\0,\x01\0-\x01\0.\x01\0/\x01\x000\x01\x001\x01\x002\x01\x003\x01\x004\x01\x005\x01\x006\x01\x007\x01\08\x01\0:\x01\0;\x01\0<\x01\0=\x01\0>\x01\0?\x01\0@\x01\0A\x01\0B\x01\0C\x01\0D\x01\0E\x01\0F\x01\0G\x01\0H\x01\0J\x01\0K\x01\0L\x01\0M\x01\0N\x01\0O\x01\0P\x01\0Q\x01\0R\x01\0S\x01\0T\x01\0U\x01\0V\x01\0W\x01\0X\x01\0Y\x01\0Z\x01\0[\x01\0\\\x01\0]\x01\0^\x01\0_\x01\0`\x01\0a\x01\0b\x01\0c\x01\0d\x01\0e\x01\0f\x01\0g\x01\0h\x01\0i\x01\0j\x01\0k\x01\0l\x01\0m\x01\0n\x01\0o\x01\0p\x01\0q\x01\0r\x01\0s\x01\0t\x01\0u\x01\0v\x01\0w\x01\0x\x01\0z\x01\0{\x01\0|\x01\0}\x01\0~\x01\0\x81\x01\0\x83\x01\0\x84\x01\0\x85\x01\0\x86\x01\0\x88\x01\0\x89\x01\0\x8C\x01\0\x8D\x01\0\x92\x01\0\x93\x01\0\x95\x01\0\x96\x01\0\x99\x01\0\x9C\x01\0\x9E\x01\0\x9F\x01\0\xA1\x01\0\xA2\x01\0\xA3\x01\0\xA4\x01\0\xA5\x01\0\xA6\x01\0\xA8\x01\0\xA9\x01\0\xAD\x01\0\xAE\x01\0\xB0\x01\0\xB1\x01\0\xB4\x01\0\xB5\x01\0\xB6\x01\0\xB7\x01\0\xB9\x01\0\xBA\x01\0\xBD\x01\0\xBE\x01\0\xBF\x01\0\xC0\x01\0\xC5\x01\0\xC7\x01\0\xC8\x01\0\xCA\x01\0\xCB\x01\0\xCD\x01\0\xCE\x01\0\xCF\x01\0\xD0\x01\0\xD1\x01\0\xD2\x01\0\xD3\x01\0\xD4\x01\0\xD5\x01\0\xD6\x01\0\xD7\x01\0\xD8\x01\0\xD9\x01\0\xDA\x01\0\xDB\x01\0\xDC\x01\0\xDE\x01\0\xDF\x01\0\xE0\x01\0\xE1\x01\0\xE2\x01\0\xE3\x01\0\xE4\x01\0\xE5\x01\0\xE6\x01\0\xE7\x01\0\xE8\x01\0\xE9\x01\0\xEA\x01\0\xEB\x01\0\xEC\x01\0\xED\x01\0\xEE\x01\0\xEF\x01\0\xF1\x01\0\xF2\x01\0\xF4\x01\0\xF5\x01\0\xF6\x01\0\xF9\x01\0\xFA\x01\0\xFB\x01\0\xFC\x01\0\xFD\x01\0\xFE\x01\0\xFF\x01\0\0\x02\0\x01\x02\0\x02\x02\0\x03\x02\0\x04\x02\0\x05\x02\0\x06\x02\0\x07\x02\0\x08\x02\0\t\x02\0\n\x02\0\x0B\x02\0\x0C\x02\0\r\x02\0\x0E\x02\0\x0F\x02\0\x10\x02\0\x11\x02\0\x12\x02\0\x13\x02\0\x14\x02\0\x15\x02\0\x16\x02\0\x17\x02\0\x18\x02\0\x19\x02\0\x1A\x02\0\x1B\x02\0\x1C\x02\0\x1D\x02\0\x1E\x02\0\x1F\x02\0 \x02\0#\x02\0$\x02\0%\x02\0&\x02\0'\x02\0(\x02\0)\x02\0*\x02\0+\x02\0,\x02\0-\x02\0.\x02\0/\x02\x000\x02\x001\x02\x002\x02\x003\x02\x004\x02\0<\x02\0=\x02\0?\x02\0A\x02\0B\x02\0C\x02\0G\x02\0H\x02\0I\x02\0J\x02\0K\x02\0L\x02\0M\x02\0N\x02\0O\x02\0U\x02\0V\x02\0X\x02\0Y\x02\0Z\x02\0[\x02\0]\x02\0`\x02\0b\x02\0c\x02\0g\x02\0h\x02\0m\x02\0o\x02\0p\x02\0q\x02\0s\x02\0u\x02\0v\x02\0}\x02\0~\x02\0\x80\x02\0\x81\x02\0\x82\x02\0\x84\x02\0\x87\x02\0\x8D\x02\0\x92\x02\0\x93\x02\0\x9D\x02\0\x9F\x02\0E\x03\0F\x03\0q\x03\0r\x03\0s\x03\0t\x03\0w\x03\0x\x03\0{\x03\0~\x03\0\x90\x03\0\x91\x03\0\xAC\x03\0\xCF\x03\0\xD0\x03\0\xD2\x03\0\xD5\x03\0\xD8\x03\0\xD9\x03\0\xDA\x03\0\xDB\x03\0\xDC\x03\0\xDD\x03\0\xDE\x03\0\xDF\x03\0\xE0\x03\0\xE1\x03\0\xE2\x03\0\xE3\x03\0\xE4\x03\0\xE5\x03\0\xE6\x03\0\xE7\x03\0\xE8\x03\0\xE9\x03\0\xEA\x03\0\xEB\x03\0\xEC\x03\0\xED\x03\0\xEE\x03\0\xEF\x03\0\xF4\x03\0\xF5\x03\0\xF6\x03\0\xF8\x03\0\xF9\x03\0\xFB\x03\0\xFC\x03\x000\x04\0`\x04\0a\x04\0b\x04\0c\x04\0d\x04\0e\x04\0f\x04\0g\x04\0h\x04\0i\x04\0j\x04\0k\x04\0l\x04\0m\x04\0n\x04\0o\x04\0p\x04\0q\x04\0r\x04\0s\x04\0t\x04\0u\x04\0v\x04\0w\x04\0x\x04\0y\x04\0z\x04\0{\x04\0|\x04\0}\x04\0~\x04\0\x7F\x04\0\x80\x04\0\x81\x04\0\x82\x04\0\x8B\x04\0\x8C\x04\0\x8D\x04\0\x8E\x04\0\x8F\x04\0\x90\x04\0\x91\x04\0\x92\x04\0\x93\x04\0\x94\x04\0\x95\x04\0\x96\x04\0\x97\x04\0\x98\x04\0\x99\x04\0\x9A\x04\0\x9B\x04\0\x9C\x04\0\x9D\x04\0\x9E\x04\0\x9F\x04\0\xA0\x04\0\xA1\x04\0\xA2\x04\0\xA3\x04\0\xA4\x04\0\xA5\x04\0\xA6\x04\0\xA7\x04\0\xA8\x04\0\xA9\x04\0\xAA\x04\0\xAB\x04\0\xAC\x04\0\xAD\x04\0\xAE\x04\0\xAF\x04\0\xB0\x04\0\xB1\x04\0\xB2\x04\0\xB3\x04\0\xB4\x04\0\xB5\x04\0\xB6\x04\0\xB7\x04\0\xB8\x04\0\xB9\x04\0\xBA\x04\0\xBB\x04\0\xBC\x04\0\xBD\x04\0\xBE\x04\0\xBF\x04\0\xC0\x04\0\xC2\x04\0\xC3\x04\0\xC4\x04\0\xC5\x04\0\xC6\x04\0\xC7\x04\0\xC8\x04\0\xC9\x04\0\xCA\x04\0\xCB\x04\0\xCC\x04\0\xCD\x04\0\xCE\x04\0\xD0\x04\0\xD1\x04\0\xD2\x04\0\xD3\x04\0\xD4\x04\0\xD5\x04\0\xD6\x04\0\xD7\x04\0\xD8\x04\0\xD9\x04\0\xDA\x04\0\xDB\x04\0\xDC\x04\0\xDD\x04\0\xDE\x04\0\xDF\x04\0\xE0\x04\0\xE1\x04\0\xE2\x04\0\xE3\x04\0\xE4\x04\0\xE5\x04\0\xE6\x04\0\xE7\x04\0\xE8\x04\0\xE9\x04\0\xEA\x04\0\xEB\x04\0\xEC\x04\0\xED\x04\0\xEE\x04\0\xEF\x04\0\xF0\x04\0\xF1\x04\0\xF2\x04\0\xF3\x04\0\xF4\x04\0\xF5\x04\0\xF6\x04\0\xF7\x04\0\xF8\x04\0\xF9\x04\0\xFA\x04\0\xFB\x04\0\xFC\x04\0\xFD\x04\0\xFE\x04\0\xFF\x04\0\0\x05\0\x01\x05\0\x02\x05\0\x03\x05\0\x04\x05\0\x05\x05\0\x06\x05\0\x07\x05\0\x08\x05\0\t\x05\0\n\x05\0\x0B\x05\0\x0C\x05\0\r\x05\0\x0E\x05\0\x0F\x05\0\x10\x05\0\x11\x05\0\x12\x05\0\x13\x05\0\x14\x05\0\x15\x05\0\x16\x05\0\x17\x05\0\x18\x05\0\x19\x05\0\x1A\x05\0\x1B\x05\0\x1C\x05\0\x1D\x05\0\x1E\x05\0\x1F\x05\0 \x05\0!\x05\0\"\x05\0#\x05\0$\x05\0%\x05\0&\x05\0'\x05\0(\x05\0)\x05\0*\x05\0+\x05\0,\x05\0-\x05\0.\x05\0/\x05\x000\x05\0a\x05\0\x88\x05\0\xD0\x10\0\xFB\x10\0\xFD\x10\0\0\x11\0\xF8\x13\0\xFE\x13\0\x80\x1C\0\x89\x1C\0\x8A\x1C\0\x8B\x1C\0y\x1D\0z\x1D\0}\x1D\0~\x1D\0\x8E\x1D\0\x8F\x1D\0\x01\x1E\0\x02\x1E\0\x03\x1E\0\x04\x1E\0\x05\x1E\0\x06\x1E\0\x07\x1E\0\x08\x1E\0\t\x1E\0\n\x1E\0\x0B\x1E\0\x0C\x1E\0\r\x1E\0\x0E\x1E\0\x0F\x1E\0\x10\x1E\0\x11\x1E\0\x12\x1E\0\x13\x1E\0\x14\x1E\0\x15\x1E\0\x16\x1E\0\x17\x1E\0\x18\x1E\0\x19\x1E\0\x1A\x1E\0\x1B\x1E\0\x1C\x1E\0\x1D\x1E\0\x1E\x1E\0\x1F\x1E\0 \x1E\0!\x1E\0\"\x1E\0#\x1E\0$\x1E\0%\x1E\0&\x1E\0'\x1E\0(\x1E\0)\x1E\0*\x1E\0+\x1E\0,\x1E\0-\x1E\0.\x1E\0/\x1E\x000\x1E\x001\x1E\x002\x1E\x003\x1E\x004\x1E\x005\x1E\x006\x1E\x007\x1E\08\x1E\09\x1E\0:\x1E\0;\x1E\0<\x1E\0=\x1E\0>\x1E\0?\x1E\0@\x1E\0A\x1E\0B\x1E\0C\x1E\0D\x1E\0E\x1E\0F\x1E\0G\x1E\0H\x1E\0I\x1E\0J\x1E\0K\x1E\0L\x1E\0M\x1E\0N\x1E\0O\x1E\0P\x1E\0Q\x1E\0R\x1E\0S\x1E\0T\x1E\0U\x1E\0V\x1E\0W\x1E\0X\x1E\0Y\x1E\0Z\x1E\0[\x1E\0\\\x1E\0]\x1E\0^\x1E\0_\x1E\0`\x1E\0a\x1E\0b\x1E\0c\x1E\0d\x1E\0e\x1E\0f\x1E\0g\x1E\0h\x1E\0i\x1E\0j\x1E\0k\x1E\0l\x1E\0m\x1E\0n\x1E\0o\x1E\0p\x1E\0q\x1E\0r\x1E\0s\x1E\0t\x1E\0u\x1E\0v\x1E\0w\x1E\0x\x1E\0y\x1E\0z\x1E\0{\x1E\0|\x1E\0}\x1E\0~\x1E\0\x7F\x1E\0\x80\x1E\0\x81\x1E\0\x82\x1E\0\x83\x1E\0\x84\x1E\0\x85\x1E\0\x86\x1E\0\x87\x1E\0\x88\x1E\0\x89\x1E\0\x8A\x1E\0\x8B\x1E\0\x8C\x1E\0\x8D\x1E\0\x8E\x1E\0\x8F\x1E\0\x90\x1E\0\x91\x1E\0\x92\x1E\0\x93\x1E\0\x94\x1E\0\x95\x1E\0\x9C\x1E\0\xA1\x1E\0\xA2\x1E\0\xA3\x1E\0\xA4\x1E\0\xA5\x1E\0\xA6\x1E\0\xA7\x1E\0\xA8\x1E\0\xA9\x1E\0\xAA\x1E\0\xAB\x1E\0\xAC\x1E\0\xAD\x1E\0\xAE\x1E\0\xAF\x1E\0\xB0\x1E\0\xB1\x1E\0\xB2\x1E\0\xB3\x1E\0\xB4\x1E\0\xB5\x1E\0\xB6\x1E\0\xB7\x1E\0\xB8\x1E\0\xB9\x1E\0\xBA\x1E\0\xBB\x1E\0\xBC\x1E\0\xBD\x1E\0\xBE\x1E\0\xBF\x1E\0\xC0\x1E\0\xC1\x1E\0\xC2\x1E\0\xC3\x1E\0\xC4\x1E\0\xC5\x1E\0\xC6\x1E\0\xC7\x1E\0\xC8\x1E\0\xC9\x1E\0\xCA\x1E\0\xCB\x1E\0\xCC\x1E\0\xCD\x1E\0\xCE\x1E\0\xCF\x1E\0\xD0\x1E\0\xD1\x1E\0\xD2\x1E\0\xD3\x1E\0\xD4\x1E\0\xD5\x1E\0\xD6\x1E\0\xD7\x1E\0\xD8\x1E\0\xD9\x1E\0\xDA\x1E\0\xDB\x1E\0\xDC\x1E\0\xDD\x1E\0\xDE\x1E\0\xDF\x1E\0\xE0\x1E\0\xE1\x1E\0\xE2\x1E\0\xE3\x1E\0\xE4\x1E\0\xE5\x1E\0\xE6\x1E\0\xE7\x1E\0\xE8\x1E\0\xE9\x1E\0\xEA\x1E\0\xEB\x1E\0\xEC\x1E\0\xED\x1E\0\xEE\x1E\0\xEF\x1E\0\xF0\x1E\0\xF1\x1E\0\xF2\x1E\0\xF3\x1E\0\xF4\x1E\0\xF5\x1E\0\xF6\x1E\0\xF7\x1E\0\xF8\x1E\0\xF9\x1E\0\xFA\x1E\0\xFB\x1E\0\xFC\x1E\0\xFD\x1E\0\xFE\x1E\0\xFF\x1E\0\x08\x1F\0\x10\x1F\0\x16\x1F\0 \x1F\0(\x1F\x000\x1F\08\x1F\0@\x1F\0F\x1F\0P\x1F\0X\x1F\0`\x1F\0h\x1F\0p\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xB8\x1F\0\xBC\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xC8\x1F\0\xCC\x1F\0\xCD\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xD8\x1F\0\xE0\x1F\0\xE8\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xF8\x1F\0\xFC\x1F\0\xFD\x1F\0N!\0O!\0p!\0\x80!\0\x84!\0\x85!\0\xD0$\0\xEA$\x000,\0`,\0a,\0b,\0e,\0g,\0h,\0i,\0j,\0k,\0l,\0m,\0s,\0t,\0v,\0w,\0\x81,\0\x82,\0\x83,\0\x84,\0\x85,\0\x86,\0\x87,\0\x88,\0\x89,\0\x8A,\0\x8B,\0\x8C,\0\x8D,\0\x8E,\0\x8F,\0\x90,\0\x91,\0\x92,\0\x93,\0\x94,\0\x95,\0\x96,\0\x97,\0\x98,\0\x99,\0\x9A,\0\x9B,\0\x9C,\0\x9D,\0\x9E,\0\x9F,\0\xA0,\0\xA1,\0\xA2,\0\xA3,\0\xA4,\0\xA5,\0\xA6,\0\xA7,\0\xA8,\0\xA9,\0\xAA,\0\xAB,\0\xAC,\0\xAD,\0\xAE,\0\xAF,\0\xB0,\0\xB1,\0\xB2,\0\xB3,\0\xB4,\0\xB5,\0\xB6,\0\xB7,\0\xB8,\0\xB9,\0\xBA,\0\xBB,\0\xBC,\0\xBD,\0\xBE,\0\xBF,\0\xC0,\0\xC1,\0\xC2,\0\xC3,\0\xC4,\0\xC5,\0\xC6,\0\xC7,\0\xC8,\0\xC9,\0\xCA,\0\xCB,\0\xCC,\0\xCD,\0\xCE,\0\xCF,\0\xD0,\0\xD1,\0\xD2,\0\xD3,\0\xD4,\0\xD5,\0\xD6,\0\xD7,\0\xD8,\0\xD9,\0\xDA,\0\xDB,\0\xDC,\0\xDD,\0\xDE,\0\xDF,\0\xE0,\0\xE1,\0\xE2,\0\xE3,\0\xE4,\0\xEC,\0\xED,\0\xEE,\0\xEF,\0\xF3,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\0A\xA6\0B\xA6\0C\xA6\0D\xA6\0E\xA6\0F\xA6\0G\xA6\0H\xA6\0I\xA6\0J\xA6\0K\xA6\0L\xA6\0M\xA6\0N\xA6\0O\xA6\0P\xA6\0Q\xA6\0R\xA6\0S\xA6\0T\xA6\0U\xA6\0V\xA6\0W\xA6\0X\xA6\0Y\xA6\0Z\xA6\0[\xA6\0\\\xA6\0]\xA6\0^\xA6\0_\xA6\0`\xA6\0a\xA6\0b\xA6\0c\xA6\0d\xA6\0e\xA6\0f\xA6\0g\xA6\0h\xA6\0i\xA6\0j\xA6\0k\xA6\0l\xA6\0m\xA6\0n\xA6\0\x81\xA6\0\x82\xA6\0\x83\xA6\0\x84\xA6\0\x85\xA6\0\x86\xA6\0\x87\xA6\0\x88\xA6\0\x89\xA6\0\x8A\xA6\0\x8B\xA6\0\x8C\xA6\0\x8D\xA6\0\x8E\xA6\0\x8F\xA6\0\x90\xA6\0\x91\xA6\0\x92\xA6\0\x93\xA6\0\x94\xA6\0\x95\xA6\0\x96\xA6\0\x97\xA6\0\x98\xA6\0\x99\xA6\0\x9A\xA6\0\x9B\xA6\0\x9C\xA6\0#\xA7\0$\xA7\0%\xA7\0&\xA7\0'\xA7\0(\xA7\0)\xA7\0*\xA7\0+\xA7\0,\xA7\0-\xA7\0.\xA7\0/\xA7\x000\xA7\x003\xA7\x004\xA7\x005\xA7\x006\xA7\x007\xA7\08\xA7\09\xA7\0:\xA7\0;\xA7\0<\xA7\0=\xA7\0>\xA7\0?\xA7\0@\xA7\0A\xA7\0B\xA7\0C\xA7\0D\xA7\0E\xA7\0F\xA7\0G\xA7\0H\xA7\0I\xA7\0J\xA7\0K\xA7\0L\xA7\0M\xA7\0N\xA7\0O\xA7\0P\xA7\0Q\xA7\0R\xA7\0S\xA7\0T\xA7\0U\xA7\0V\xA7\0W\xA7\0X\xA7\0Y\xA7\0Z\xA7\0[\xA7\0\\\xA7\0]\xA7\0^\xA7\0_\xA7\0`\xA7\0a\xA7\0b\xA7\0c\xA7\0d\xA7\0e\xA7\0f\xA7\0g\xA7\0h\xA7\0i\xA7\0j\xA7\0k\xA7\0l\xA7\0m\xA7\0n\xA7\0o\xA7\0p\xA7\0z\xA7\0{\xA7\0|\xA7\0}\xA7\0\x7F\xA7\0\x80\xA7\0\x81\xA7\0\x82\xA7\0\x83\xA7\0\x84\xA7\0\x85\xA7\0\x86\xA7\0\x87\xA7\0\x88\xA7\0\x8C\xA7\0\x8D\xA7\0\x91\xA7\0\x92\xA7\0\x93\xA7\0\x95\xA7\0\x97\xA7\0\x98\xA7\0\x99\xA7\0\x9A\xA7\0\x9B\xA7\0\x9C\xA7\0\x9D\xA7\0\x9E\xA7\0\x9F\xA7\0\xA0\xA7\0\xA1\xA7\0\xA2\xA7\0\xA3\xA7\0\xA4\xA7\0\xA5\xA7\0\xA6\xA7\0\xA7\xA7\0\xA8\xA7\0\xA9\xA7\0\xAA\xA7\0\xB5\xA7\0\xB6\xA7\0\xB7\xA7\0\xB8\xA7\0\xB9\xA7\0\xBA\xA7\0\xBB\xA7\0\xBC\xA7\0\xBD\xA7\0\xBE\xA7\0\xBF\xA7\0\xC0\xA7\0\xC1\xA7\0\xC2\xA7\0\xC3\xA7\0\xC4\xA7\0\xC8\xA7\0\xC9\xA7\0\xCA\xA7\0\xCB\xA7\0\xCD\xA7\0\xCE\xA7\0\xD1\xA7\0\xD2\xA7\0\xD7\xA7\0\xD8\xA7\0\xD9\xA7\0\xDA\xA7\0\xDB\xA7\0\xDC\xA7\0\xF6\xA7\0\xF7\xA7\0S\xAB\0T\xAB\0p\xAB\0\xC0\xAB\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0A\xFF\0[\xFF\0(\x04\x01P\x04\x01\xD8\x04\x01\xFC\x04\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x0C\x01\xF3\x0C\x01p\r\x01\x86\r\x01\xC0\x18\x01\xE0\x18\x01`n\x01\x80n\x01\"\xE9\x01D\xE9\x01") }, 1552u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_CHANGES_WHEN_UPPERCASED_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_changes_when_uppercased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_changes_when_uppercased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_changes_when_uppercased_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryChangesWhenUppercasedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_changes_when_uppercased_v1 as impl_property_binary_changes_when_uppercased_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_dash_v1.rs.data b/vendor/icu_properties_data/data/property_binary_dash_v1.rs.data
new file mode 100644
index 00000000..d9e78dd5
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_dash_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryDashV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 176B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_dash_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_DASH_V1: &'static <icu::properties::provider::PropertyBinaryDashV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"-\0\0.\0\0\x8A\x05\0\x8B\x05\0\xBE\x05\0\xBF\x05\0\0\x14\0\x01\x14\0\x06\x18\0\x07\x18\0\x10 \0\x16 \0S \0T \0{ \0| \0\x8B \0\x8C \0\x12\"\0\x13\"\0\x17.\0\x18.\0\x1A.\0\x1B.\0:.\0<.\0@.\0A.\0].\0^.\0\x1C0\0\x1D0\x0000\x0010\0\xA00\0\xA10\x001\xFE\x003\xFE\0X\xFE\0Y\xFE\0c\xFE\0d\xFE\0\r\xFF\0\x0E\xFF\0n\r\x01o\r\x01\xAD\x0E\x01\xAE\x0E\x01") }, 31u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryDashV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryDashV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_DASH_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDashV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_dash_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryDashV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_dash_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryDashV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDashV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_dash_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryDashV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDashV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryDashV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_dash_v1 as impl_property_binary_dash_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_default_ignorable_code_point_v1.rs.data b/vendor/icu_properties_data/data/property_binary_default_ignorable_code_point_v1.rs.data
new file mode 100644
index 00000000..9ba4542e
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_default_ignorable_code_point_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryDefaultIgnorableCodePointV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 134B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_default_ignorable_code_point_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_DEFAULT_IGNORABLE_CODE_POINT_V1: &'static <icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xAD\0\0\xAE\0\0O\x03\0P\x03\0\x1C\x06\0\x1D\x06\0_\x11\0a\x11\0\xB4\x17\0\xB6\x17\0\x0B\x18\0\x10\x18\0\x0B \0\x10 \0* \0/ \0` \0p \0d1\0e1\0\0\xFE\0\x10\xFE\0\xFF\xFE\0\0\xFF\0\xA0\xFF\0\xA1\xFF\0\xF0\xFF\0\xF9\xFF\0\xA0\xBC\x01\xA4\xBC\x01s\xD1\x01{\xD1\x01\0\0\x0E\0\x10\x0E") }, 4174u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_DEFAULT_IGNORABLE_CODE_POINT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_default_ignorable_code_point_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_default_ignorable_code_point_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_default_ignorable_code_point_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryDefaultIgnorableCodePointV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_default_ignorable_code_point_v1 as impl_property_binary_default_ignorable_code_point_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_deprecated_v1.rs.data b/vendor/icu_properties_data/data/property_binary_deprecated_v1.rs.data
new file mode 100644
index 00000000..9b294a31
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_deprecated_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryDeprecatedV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 80B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_deprecated_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_DEPRECATED_V1: &'static <icu::properties::provider::PropertyBinaryDeprecatedV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"I\x01\0J\x01\0s\x06\0t\x06\0w\x0F\0x\x0F\0y\x0F\0z\x0F\0\xA3\x17\0\xA5\x17\0j \0p \0)#\0+#\0\x01\0\x0E\x02\0\x0E") }, 15u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryDeprecatedV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryDeprecatedV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_DEPRECATED_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDeprecatedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_deprecated_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryDeprecatedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_deprecated_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryDeprecatedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDeprecatedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_deprecated_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryDeprecatedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDeprecatedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryDeprecatedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_deprecated_v1 as impl_property_binary_deprecated_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_diacritic_v1.rs.data b/vendor/icu_properties_data/data/property_binary_diacritic_v1.rs.data
new file mode 100644
index 00000000..0e6322af
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_diacritic_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryDiacriticV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 1316B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_diacritic_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_DIACRITIC_V1: &'static <icu::properties::provider::PropertyBinaryDiacriticV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"^\0\0_\0\0`\0\0a\0\0\xA8\0\0\xA9\0\0\xAF\0\0\xB0\0\0\xB4\0\0\xB5\0\0\xB7\0\0\xB9\0\0\xB0\x02\0O\x03\0P\x03\0X\x03\0]\x03\0c\x03\0t\x03\0v\x03\0z\x03\0{\x03\0\x84\x03\0\x86\x03\0\x83\x04\0\x88\x04\0Y\x05\0Z\x05\0\x91\x05\0\xA2\x05\0\xA3\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC5\x05\0K\x06\0S\x06\0W\x06\0Y\x06\0\xDF\x06\0\xE1\x06\0\xE5\x06\0\xE7\x06\0\xEA\x06\0\xED\x06\x000\x07\0K\x07\0\xA6\x07\0\xB1\x07\0\xEB\x07\0\xF6\x07\0\x18\x08\0\x1A\x08\0\x98\x08\0\xA0\x08\0\xC9\x08\0\xD3\x08\0\xE3\x08\0\xFF\x08\0<\t\0=\t\0M\t\0N\t\0Q\t\0U\t\0q\t\0r\t\0\xBC\t\0\xBD\t\0\xCD\t\0\xCE\t\0<\n\0=\n\0M\n\0N\n\0\xBC\n\0\xBD\n\0\xCD\n\0\xCE\n\0\xFD\n\0\0\x0B\0<\x0B\0=\x0B\0M\x0B\0N\x0B\0U\x0B\0V\x0B\0\xCD\x0B\0\xCE\x0B\0<\x0C\0=\x0C\0M\x0C\0N\x0C\0\xBC\x0C\0\xBD\x0C\0\xCD\x0C\0\xCE\x0C\0;\r\0=\r\0M\r\0N\r\0\xCA\r\0\xCB\r\0:\x0E\0;\x0E\0G\x0E\0M\x0E\0N\x0E\0O\x0E\0\xBA\x0E\0\xBB\x0E\0\xC8\x0E\0\xCD\x0E\0\x18\x0F\0\x1A\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0>\x0F\0@\x0F\0\x82\x0F\0\x85\x0F\0\x86\x0F\0\x88\x0F\0\xC6\x0F\0\xC7\x0F\x007\x10\08\x10\09\x10\0;\x10\0c\x10\0e\x10\0i\x10\0n\x10\0\x87\x10\0\x8E\x10\0\x8F\x10\0\x90\x10\0\x9A\x10\0\x9C\x10\0]\x13\0`\x13\0\x14\x17\0\x16\x17\x004\x17\x005\x17\0\xC9\x17\0\xD4\x17\0\xDD\x17\0\xDE\x17\09\x19\0<\x19\0`\x1A\0a\x1A\0u\x1A\0}\x1A\0\x7F\x1A\0\x80\x1A\0\xB0\x1A\0\xBF\x1A\0\xC1\x1A\0\xCC\x1A\x004\x1B\x005\x1B\0D\x1B\0E\x1B\0k\x1B\0t\x1B\0\xAA\x1B\0\xAC\x1B\0\xE6\x1B\0\xE7\x1B\0\xF2\x1B\0\xF4\x1B\x006\x1C\08\x1C\0x\x1C\0~\x1C\0\xD0\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF7\x1C\0\xFA\x1C\0,\x1D\0k\x1D\0\xC4\x1D\0\xD0\x1D\0\xF5\x1D\0\0\x1E\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xCD\x1F\0\xD0\x1F\0\xDD\x1F\0\xE0\x1F\0\xED\x1F\0\xF0\x1F\0\xFD\x1F\0\xFF\x1F\0\xEF,\0\xF2,\0/.\x000.\0*0\x0000\0\x990\0\x9D0\0\xFC0\0\xFD0\0o\xA6\0p\xA6\0|\xA6\0~\xA6\0\x7F\xA6\0\x80\xA6\0\x9C\xA6\0\x9E\xA6\0\xF0\xA6\0\xF2\xA6\0\0\xA7\0\"\xA7\0\x88\xA7\0\x8B\xA7\0\xF8\xA7\0\xFA\xA7\0\x06\xA8\0\x07\xA8\0,\xA8\0-\xA8\0\xC4\xA8\0\xC5\xA8\0\xE0\xA8\0\xF2\xA8\0+\xA9\0/\xA9\0S\xA9\0T\xA9\0\xB3\xA9\0\xB4\xA9\0\xC0\xA9\0\xC1\xA9\0\xE5\xA9\0\xE6\xA9\0{\xAA\0~\xAA\0\xBF\xAA\0\xC3\xAA\0\xF6\xAA\0\xF7\xAA\0[\xAB\0`\xAB\0i\xAB\0l\xAB\0\xEC\xAB\0\xEE\xAB\0\x1E\xFB\0\x1F\xFB\0 \xFE\x000\xFE\0>\xFF\0?\xFF\0@\xFF\0A\xFF\0p\xFF\0q\xFF\0\x9E\xFF\0\xA0\xFF\0\xE3\xFF\0\xE4\xFF\0\xE0\x02\x01\xE1\x02\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x018\n\x01;\n\x01?\n\x01@\n\x01\xE5\n\x01\xE7\n\x01\"\r\x01(\r\x01N\r\x01O\r\x01i\r\x01n\r\x01\xFD\x0E\x01\0\x0F\x01F\x0F\x01Q\x0F\x01\x82\x0F\x01\x86\x0F\x01F\x10\x01G\x10\x01p\x10\x01q\x10\x01\xB9\x10\x01\xBB\x10\x013\x11\x015\x11\x01s\x11\x01t\x11\x01\xC0\x11\x01\xC1\x11\x01\xCA\x11\x01\xCD\x11\x015\x12\x017\x12\x01\xE9\x12\x01\xEB\x12\x01;\x13\x01=\x13\x01M\x13\x01N\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\xCE\x13\x01\xD1\x13\x01\xD2\x13\x01\xD4\x13\x01\xE1\x13\x01\xE3\x13\x01B\x14\x01C\x14\x01F\x14\x01G\x14\x01\xC2\x14\x01\xC4\x14\x01\xBF\x15\x01\xC1\x15\x01?\x16\x01@\x16\x01\xB6\x16\x01\xB8\x16\x01+\x17\x01,\x17\x019\x18\x01;\x18\x01=\x19\x01?\x19\x01C\x19\x01D\x19\x01\xE0\x19\x01\xE1\x19\x014\x1A\x015\x1A\x01G\x1A\x01H\x1A\x01\x99\x1A\x01\x9A\x1A\x01?\x1C\x01@\x1C\x01B\x1D\x01C\x1D\x01D\x1D\x01F\x1D\x01\x97\x1D\x01\x98\x1D\x01A\x1F\x01C\x1F\x01Z\x1F\x01[\x1F\x01G4\x01V4\x01/a\x010a\x01\xF0j\x01\xF5j\x010k\x017k\x01km\x01mm\x01\x8Fo\x01\xA0o\x01\xF0o\x01\xF2o\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\0\xCF\x01.\xCF\x010\xCF\x01G\xCF\x01g\xD1\x01j\xD1\x01m\xD1\x01s\xD1\x01{\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x010\xE0\x01n\xE0\x010\xE1\x017\xE1\x01\xAE\xE2\x01\xAF\xE2\x01\xEC\xE2\x01\xF0\xE2\x01\xEE\xE5\x01\xF0\xE5\x01\xD0\xE8\x01\xD7\xE8\x01D\xE9\x01G\xE9\x01H\xE9\x01K\xE9\x01") }, 1178u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryDiacriticV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryDiacriticV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_DIACRITIC_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDiacriticV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_diacritic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryDiacriticV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_diacritic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryDiacriticV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDiacriticV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_diacritic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryDiacriticV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryDiacriticV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryDiacriticV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_diacritic_v1 as impl_property_binary_diacritic_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_emoji_component_v1.rs.data b/vendor/icu_properties_data/data/property_binary_emoji_component_v1.rs.data
new file mode 100644
index 00000000..90558f50
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_emoji_component_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryEmojiComponentV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 92B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_emoji_component_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_EMOJI_COMPONENT_V1: &'static <icu::properties::provider::PropertyBinaryEmojiComponentV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"#\0\0$\0\0*\0\0+\0\x000\0\0:\0\0\r \0\x0E \0\xE3 \0\xE4 \0\x0F\xFE\0\x10\xFE\0\xE6\xF1\x01\0\xF2\x01\xFB\xF3\x01\0\xF4\x01\xB0\xF9\x01\xB4\xF9\x01 \0\x0E\x80\0\x0E") }, 146u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryEmojiComponentV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryEmojiComponentV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_EMOJI_COMPONENT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiComponentV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_emoji_component_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryEmojiComponentV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_emoji_component_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryEmojiComponentV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiComponentV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_emoji_component_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryEmojiComponentV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiComponentV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryEmojiComponentV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_emoji_component_v1 as impl_property_binary_emoji_component_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_emoji_modifier_base_v1.rs.data b/vendor/icu_properties_data/data/property_binary_emoji_modifier_base_v1.rs.data
new file mode 100644
index 00000000..39054b78
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_emoji_modifier_base_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryEmojiModifierBaseV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 272B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_emoji_modifier_base_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_BASE_V1: &'static <icu::properties::provider::PropertyBinaryEmojiModifierBaseV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x1D&\0\x1E&\0\xF9&\0\xFA&\0\n'\0\x0E'\0\x85\xF3\x01\x86\xF3\x01\xC2\xF3\x01\xC5\xF3\x01\xC7\xF3\x01\xC8\xF3\x01\xCA\xF3\x01\xCD\xF3\x01B\xF4\x01D\xF4\x01F\xF4\x01Q\xF4\x01f\xF4\x01y\xF4\x01|\xF4\x01}\xF4\x01\x81\xF4\x01\x84\xF4\x01\x85\xF4\x01\x88\xF4\x01\x8F\xF4\x01\x90\xF4\x01\x91\xF4\x01\x92\xF4\x01\xAA\xF4\x01\xAB\xF4\x01t\xF5\x01v\xF5\x01z\xF5\x01{\xF5\x01\x90\xF5\x01\x91\xF5\x01\x95\xF5\x01\x97\xF5\x01E\xF6\x01H\xF6\x01K\xF6\x01P\xF6\x01\xA3\xF6\x01\xA4\xF6\x01\xB4\xF6\x01\xB7\xF6\x01\xC0\xF6\x01\xC1\xF6\x01\xCC\xF6\x01\xCD\xF6\x01\x0C\xF9\x01\r\xF9\x01\x0F\xF9\x01\x10\xF9\x01\x18\xF9\x01 \xF9\x01&\xF9\x01'\xF9\x010\xF9\x01:\xF9\x01<\xF9\x01?\xF9\x01w\xF9\x01x\xF9\x01\xB5\xF9\x01\xB7\xF9\x01\xB8\xF9\x01\xBA\xF9\x01\xBB\xF9\x01\xBC\xF9\x01\xCD\xF9\x01\xD0\xF9\x01\xD1\xF9\x01\xDE\xF9\x01\xC3\xFA\x01\xC6\xFA\x01\xF0\xFA\x01\xF9\xFA\x01") }, 134u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryEmojiModifierBaseV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryEmojiModifierBaseV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_BASE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiModifierBaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_emoji_modifier_base_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryEmojiModifierBaseV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_emoji_modifier_base_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryEmojiModifierBaseV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiModifierBaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_emoji_modifier_base_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryEmojiModifierBaseV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiModifierBaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryEmojiModifierBaseV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_emoji_modifier_base_v1 as impl_property_binary_emoji_modifier_base_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_emoji_modifier_v1.rs.data b/vendor/icu_properties_data/data/property_binary_emoji_modifier_v1.rs.data
new file mode 100644
index 00000000..06a8c17b
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_emoji_modifier_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryEmojiModifierV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 38B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_emoji_modifier_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_V1: &'static <icu::properties::provider::PropertyBinaryEmojiModifierV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xFB\xF3\x01\0\xF4\x01") }, 5u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryEmojiModifierV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryEmojiModifierV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_EMOJI_MODIFIER_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiModifierV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_emoji_modifier_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryEmojiModifierV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_emoji_modifier_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryEmojiModifierV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiModifierV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_emoji_modifier_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryEmojiModifierV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiModifierV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryEmojiModifierV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_emoji_modifier_v1 as impl_property_binary_emoji_modifier_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_emoji_presentation_v1.rs.data b/vendor/icu_properties_data/data/property_binary_emoji_presentation_v1.rs.data
new file mode 100644
index 00000000..fbffab83
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_emoji_presentation_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryEmojiPresentationV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 512B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_emoji_presentation_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_EMOJI_PRESENTATION_V1: &'static <icu::properties::provider::PropertyBinaryEmojiPresentationV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x1A#\0\x1C#\0\xE9#\0\xED#\0\xF0#\0\xF1#\0\xF3#\0\xF4#\0\xFD%\0\xFF%\0\x14&\0\x16&\0H&\0T&\0\x7F&\0\x80&\0\x93&\0\x94&\0\xA1&\0\xA2&\0\xAA&\0\xAC&\0\xBD&\0\xBF&\0\xC4&\0\xC6&\0\xCE&\0\xCF&\0\xD4&\0\xD5&\0\xEA&\0\xEB&\0\xF2&\0\xF4&\0\xF5&\0\xF6&\0\xFA&\0\xFB&\0\xFD&\0\xFE&\0\x05'\0\x06'\0\n'\0\x0C'\0('\0)'\0L'\0M'\0N'\0O'\0S'\0V'\0W'\0X'\0\x95'\0\x98'\0\xB0'\0\xB1'\0\xBF'\0\xC0'\0\x1B+\0\x1D+\0P+\0Q+\0U+\0V+\0\x04\xF0\x01\x05\xF0\x01\xCF\xF0\x01\xD0\xF0\x01\x8E\xF1\x01\x8F\xF1\x01\x91\xF1\x01\x9B\xF1\x01\xE6\xF1\x01\0\xF2\x01\x01\xF2\x01\x02\xF2\x01\x1A\xF2\x01\x1B\xF2\x01/\xF2\x010\xF2\x012\xF2\x017\xF2\x018\xF2\x01;\xF2\x01P\xF2\x01R\xF2\x01\0\xF3\x01!\xF3\x01-\xF3\x016\xF3\x017\xF3\x01}\xF3\x01~\xF3\x01\x94\xF3\x01\xA0\xF3\x01\xCB\xF3\x01\xCF\xF3\x01\xD4\xF3\x01\xE0\xF3\x01\xF1\xF3\x01\xF4\xF3\x01\xF5\xF3\x01\xF8\xF3\x01?\xF4\x01@\xF4\x01A\xF4\x01B\xF4\x01\xFD\xF4\x01\xFF\xF4\x01>\xF5\x01K\xF5\x01O\xF5\x01P\xF5\x01h\xF5\x01z\xF5\x01{\xF5\x01\x95\xF5\x01\x97\xF5\x01\xA4\xF5\x01\xA5\xF5\x01\xFB\xF5\x01P\xF6\x01\x80\xF6\x01\xC6\xF6\x01\xCC\xF6\x01\xCD\xF6\x01\xD0\xF6\x01\xD3\xF6\x01\xD5\xF6\x01\xD8\xF6\x01\xDC\xF6\x01\xE0\xF6\x01\xEB\xF6\x01\xED\xF6\x01\xF4\xF6\x01\xFD\xF6\x01\xE0\xF7\x01\xEC\xF7\x01\xF0\xF7\x01\xF1\xF7\x01\x0C\xF9\x01;\xF9\x01<\xF9\x01F\xF9\x01G\xF9\x01\0\xFA\x01p\xFA\x01}\xFA\x01\x80\xFA\x01\x8A\xFA\x01\x8F\xFA\x01\xC7\xFA\x01\xCE\xFA\x01\xDD\xFA\x01\xDF\xFA\x01\xEA\xFA\x01\xF0\xFA\x01\xF9\xFA\x01") }, 1212u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryEmojiPresentationV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryEmojiPresentationV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_EMOJI_PRESENTATION_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiPresentationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_emoji_presentation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryEmojiPresentationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_emoji_presentation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryEmojiPresentationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiPresentationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_emoji_presentation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryEmojiPresentationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiPresentationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryEmojiPresentationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_emoji_presentation_v1 as impl_property_binary_emoji_presentation_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_emoji_v1.rs.data b/vendor/icu_properties_data/data/property_binary_emoji_v1.rs.data
new file mode 100644
index 00000000..e70338b9
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_emoji_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryEmojiV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 932B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_emoji_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_EMOJI_V1: &'static <icu::properties::provider::PropertyBinaryEmojiV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"#\0\0$\0\0*\0\0+\0\x000\0\0:\0\0\xA9\0\0\xAA\0\0\xAE\0\0\xAF\0\0< \0= \0I \0J \0\"!\0#!\09!\0:!\0\x94!\0\x9A!\0\xA9!\0\xAB!\0\x1A#\0\x1C#\0(#\0)#\0\xCF#\0\xD0#\0\xE9#\0\xF4#\0\xF8#\0\xFB#\0\xC2$\0\xC3$\0\xAA%\0\xAC%\0\xB6%\0\xB7%\0\xC0%\0\xC1%\0\xFB%\0\xFF%\0\0&\0\x05&\0\x0E&\0\x0F&\0\x11&\0\x12&\0\x14&\0\x16&\0\x18&\0\x19&\0\x1D&\0\x1E&\0 &\0!&\0\"&\0$&\0&&\0'&\0*&\0+&\0.&\x000&\08&\0;&\0@&\0A&\0B&\0C&\0H&\0T&\0_&\0a&\0c&\0d&\0e&\0g&\0h&\0i&\0{&\0|&\0~&\0\x80&\0\x92&\0\x98&\0\x99&\0\x9A&\0\x9B&\0\x9D&\0\xA0&\0\xA2&\0\xA7&\0\xA8&\0\xAA&\0\xAC&\0\xB0&\0\xB2&\0\xBD&\0\xBF&\0\xC4&\0\xC6&\0\xC8&\0\xC9&\0\xCE&\0\xD0&\0\xD1&\0\xD2&\0\xD3&\0\xD5&\0\xE9&\0\xEB&\0\xF0&\0\xF6&\0\xF7&\0\xFB&\0\xFD&\0\xFE&\0\x02'\0\x03'\0\x05'\0\x06'\0\x08'\0\x0E'\0\x0F'\0\x10'\0\x12'\0\x13'\0\x14'\0\x15'\0\x16'\0\x17'\0\x1D'\0\x1E'\0!'\0\"'\0('\0)'\x003'\x005'\0D'\0E'\0G'\0H'\0L'\0M'\0N'\0O'\0S'\0V'\0W'\0X'\0c'\0e'\0\x95'\0\x98'\0\xA1'\0\xA2'\0\xB0'\0\xB1'\0\xBF'\0\xC0'\x004)\x006)\0\x05+\0\x08+\0\x1B+\0\x1D+\0P+\0Q+\0U+\0V+\x0000\x0010\0=0\0>0\0\x972\0\x982\0\x992\0\x9A2\0\x04\xF0\x01\x05\xF0\x01\xCF\xF0\x01\xD0\xF0\x01p\xF1\x01r\xF1\x01~\xF1\x01\x80\xF1\x01\x8E\xF1\x01\x8F\xF1\x01\x91\xF1\x01\x9B\xF1\x01\xE6\xF1\x01\0\xF2\x01\x01\xF2\x01\x03\xF2\x01\x1A\xF2\x01\x1B\xF2\x01/\xF2\x010\xF2\x012\xF2\x01;\xF2\x01P\xF2\x01R\xF2\x01\0\xF3\x01\"\xF3\x01$\xF3\x01\x94\xF3\x01\x96\xF3\x01\x98\xF3\x01\x99\xF3\x01\x9C\xF3\x01\x9E\xF3\x01\xF1\xF3\x01\xF3\xF3\x01\xF6\xF3\x01\xF7\xF3\x01\xFE\xF4\x01\xFF\xF4\x01>\xF5\x01I\xF5\x01O\xF5\x01P\xF5\x01h\xF5\x01o\xF5\x01q\xF5\x01s\xF5\x01{\xF5\x01\x87\xF5\x01\x88\xF5\x01\x8A\xF5\x01\x8E\xF5\x01\x90\xF5\x01\x91\xF5\x01\x95\xF5\x01\x97\xF5\x01\xA4\xF5\x01\xA6\xF5\x01\xA8\xF5\x01\xA9\xF5\x01\xB1\xF5\x01\xB3\xF5\x01\xBC\xF5\x01\xBD\xF5\x01\xC2\xF5\x01\xC5\xF5\x01\xD1\xF5\x01\xD4\xF5\x01\xDC\xF5\x01\xDF\xF5\x01\xE1\xF5\x01\xE2\xF5\x01\xE3\xF5\x01\xE4\xF5\x01\xE8\xF5\x01\xE9\xF5\x01\xEF\xF5\x01\xF0\xF5\x01\xF3\xF5\x01\xF4\xF5\x01\xFA\xF5\x01P\xF6\x01\x80\xF6\x01\xC6\xF6\x01\xCB\xF6\x01\xD3\xF6\x01\xD5\xF6\x01\xD8\xF6\x01\xDC\xF6\x01\xE6\xF6\x01\xE9\xF6\x01\xEA\xF6\x01\xEB\xF6\x01\xED\xF6\x01\xF0\xF6\x01\xF1\xF6\x01\xF3\xF6\x01\xFD\xF6\x01\xE0\xF7\x01\xEC\xF7\x01\xF0\xF7\x01\xF1\xF7\x01\x0C\xF9\x01;\xF9\x01<\xF9\x01F\xF9\x01G\xF9\x01\0\xFA\x01p\xFA\x01}\xFA\x01\x80\xFA\x01\x8A\xFA\x01\x8F\xFA\x01\xC7\xFA\x01\xCE\xFA\x01\xDD\xFA\x01\xDF\xFA\x01\xEA\xFA\x01\xF0\xFA\x01\xF9\xFA\x01") }, 1431u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryEmojiV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryEmojiV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_EMOJI_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_emoji_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryEmojiV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_emoji_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryEmojiV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_emoji_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryEmojiV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryEmojiV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryEmojiV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_emoji_v1 as impl_property_binary_emoji_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_extended_pictographic_v1.rs.data b/vendor/icu_properties_data/data/property_binary_extended_pictographic_v1.rs.data
new file mode 100644
index 00000000..881cbe8c
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_extended_pictographic_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryExtendedPictographicV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 500B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_extended_pictographic_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_EXTENDED_PICTOGRAPHIC_V1: &'static <icu::properties::provider::PropertyBinaryExtendedPictographicV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xA9\0\0\xAA\0\0\xAE\0\0\xAF\0\0< \0= \0I \0J \0\"!\0#!\09!\0:!\0\x94!\0\x9A!\0\xA9!\0\xAB!\0\x1A#\0\x1C#\0(#\0)#\0\x88#\0\x89#\0\xCF#\0\xD0#\0\xE9#\0\xF4#\0\xF8#\0\xFB#\0\xC2$\0\xC3$\0\xAA%\0\xAC%\0\xB6%\0\xB7%\0\xC0%\0\xC1%\0\xFB%\0\xFF%\0\0&\0\x06&\0\x07&\0\x13&\0\x14&\0\x86&\0\x90&\0\x06'\0\x08'\0\x13'\0\x14'\0\x15'\0\x16'\0\x17'\0\x1D'\0\x1E'\0!'\0\"'\0('\0)'\x003'\x005'\0D'\0E'\0G'\0H'\0L'\0M'\0N'\0O'\0S'\0V'\0W'\0X'\0c'\0h'\0\x95'\0\x98'\0\xA1'\0\xA2'\0\xB0'\0\xB1'\0\xBF'\0\xC0'\x004)\x006)\0\x05+\0\x08+\0\x1B+\0\x1D+\0P+\0Q+\0U+\0V+\x0000\x0010\0=0\0>0\0\x972\0\x982\0\x992\0\x9A2\0\0\xF0\x01\0\xF1\x01\r\xF1\x01\x10\xF1\x01/\xF1\x010\xF1\x01l\xF1\x01r\xF1\x01~\xF1\x01\x80\xF1\x01\x8E\xF1\x01\x8F\xF1\x01\x91\xF1\x01\x9B\xF1\x01\xAD\xF1\x01\xE6\xF1\x01\x01\xF2\x01\x10\xF2\x01\x1A\xF2\x01\x1B\xF2\x01/\xF2\x010\xF2\x012\xF2\x01;\xF2\x01<\xF2\x01@\xF2\x01I\xF2\x01\xFB\xF3\x01\0\xF4\x01>\xF5\x01F\xF5\x01P\xF6\x01\x80\xF6\x01\0\xF7\x01t\xF7\x01\x80\xF7\x01\xD5\xF7\x01\0\xF8\x01\x0C\xF8\x01\x10\xF8\x01H\xF8\x01P\xF8\x01Z\xF8\x01`\xF8\x01\x88\xF8\x01\x90\xF8\x01\xAE\xF8\x01\0\xF9\x01\x0C\xF9\x01;\xF9\x01<\xF9\x01F\xF9\x01G\xF9\x01\0\xFB\x01\0\xFC\x01\xFE\xFF\x01") }, 3537u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryExtendedPictographicV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryExtendedPictographicV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_EXTENDED_PICTOGRAPHIC_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryExtendedPictographicV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_extended_pictographic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryExtendedPictographicV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_extended_pictographic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryExtendedPictographicV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryExtendedPictographicV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_extended_pictographic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryExtendedPictographicV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryExtendedPictographicV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryExtendedPictographicV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_extended_pictographic_v1 as impl_property_binary_extended_pictographic_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_extender_v1.rs.data b/vendor/icu_properties_data/data/property_binary_extender_v1.rs.data
new file mode 100644
index 00000000..8bb1b9ea
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_extender_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryExtenderV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 278B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_extender_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_EXTENDER_V1: &'static <icu::properties::provider::PropertyBinaryExtenderV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xB7\0\0\xB8\0\0\xD0\x02\0\xD2\x02\0@\x06\0A\x06\0\xFA\x07\0\xFB\x07\0q\n\0r\n\0\xFB\n\0\xFC\n\0U\x0B\0V\x0B\0F\x0E\0G\x0E\0\xC6\x0E\0\xC7\x0E\0\n\x18\0\x0B\x18\0C\x18\0D\x18\0\xA7\x1A\0\xA8\x1A\x006\x1C\x007\x1C\0{\x1C\0|\x1C\0\x050\0\x060\x0010\x0060\0\x9D0\0\x9F0\0\xFC0\0\xFF0\0\x15\xA0\0\x16\xA0\0\x0C\xA6\0\r\xA6\0\xCF\xA9\0\xD0\xA9\0\xE6\xA9\0\xE7\xA9\0p\xAA\0q\xAA\0\xDD\xAA\0\xDE\xAA\0\xF3\xAA\0\xF5\xAA\0p\xFF\0q\xFF\0\x81\x07\x01\x83\x07\x01N\r\x01O\r\x01j\r\x01k\r\x01o\r\x01p\r\x017\x12\x018\x12\x01]\x13\x01^\x13\x01\xD2\x13\x01\xD4\x13\x01\xC6\x15\x01\xC9\x15\x01\x98\x1A\x01\x99\x1A\x01Bk\x01Dk\x01\xE0o\x01\xE2o\x01\xE3o\x01\xE4o\x01<\xE1\x01>\xE1\x01\xEF\xE5\x01\xF0\xE5\x01D\xE9\x01G\xE9\x01") }, 59u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryExtenderV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryExtenderV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_EXTENDER_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryExtenderV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_extender_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryExtenderV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_extender_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryExtenderV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryExtenderV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_extender_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryExtenderV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryExtenderV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryExtenderV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_extender_v1 as impl_property_binary_extender_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_full_composition_exclusion_v1.rs.data b/vendor/icu_properties_data/data/property_binary_full_composition_exclusion_v1.rs.data
new file mode 100644
index 00000000..09accf50
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_full_composition_exclusion_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryFullCompositionExclusionV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 470B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_full_composition_exclusion_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_FULL_COMPOSITION_EXCLUSION_V1: &'static <icu::properties::provider::PropertyBinaryFullCompositionExclusionV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"@\x03\0B\x03\0C\x03\0E\x03\0t\x03\0u\x03\0~\x03\0\x7F\x03\0\x87\x03\0\x88\x03\0X\t\0`\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE0\t\x003\n\x004\n\x006\n\x007\n\0Y\n\0\\\n\0^\n\0_\n\0\\\x0B\0^\x0B\0C\x0F\0D\x0F\0M\x0F\0N\x0F\0R\x0F\0S\x0F\0W\x0F\0X\x0F\0\\\x0F\0]\x0F\0i\x0F\0j\x0F\0s\x0F\0t\x0F\0u\x0F\0w\x0F\0x\x0F\0y\x0F\0\x81\x0F\0\x82\x0F\0\x93\x0F\0\x94\x0F\0\x9D\x0F\0\x9E\x0F\0\xA2\x0F\0\xA3\x0F\0\xA7\x0F\0\xA8\x0F\0\xAC\x0F\0\xAD\x0F\0\xB9\x0F\0\xBA\x0F\0q\x1F\0r\x1F\0s\x1F\0t\x1F\0u\x1F\0v\x1F\0w\x1F\0x\x1F\0y\x1F\0z\x1F\0{\x1F\0|\x1F\0}\x1F\0~\x1F\0\xBB\x1F\0\xBC\x1F\0\xBE\x1F\0\xBF\x1F\0\xC9\x1F\0\xCA\x1F\0\xCB\x1F\0\xCC\x1F\0\xD3\x1F\0\xD4\x1F\0\xDB\x1F\0\xDC\x1F\0\xE3\x1F\0\xE4\x1F\0\xEB\x1F\0\xEC\x1F\0\xEE\x1F\0\xF0\x1F\0\xF9\x1F\0\xFA\x1F\0\xFB\x1F\0\xFC\x1F\0\xFD\x1F\0\xFE\x1F\0\0 \0\x02 \0&!\0'!\0*!\0,!\0)#\0+#\0\xDC*\0\xDD*\0\0\xF9\0\x0E\xFA\0\x10\xFA\0\x11\xFA\0\x12\xFA\0\x13\xFA\0\x15\xFA\0\x1F\xFA\0 \xFA\0!\xFA\0\"\xFA\0#\xFA\0%\xFA\0'\xFA\0*\xFA\0n\xFA\0p\xFA\0\xDA\xFA\0\x1D\xFB\0\x1E\xFB\0\x1F\xFB\0 \xFB\0*\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0O\xFB\0^\xD1\x01e\xD1\x01\xBB\xD1\x01\xC1\xD1\x01\0\xF8\x02\x1E\xFA\x02") }, 1120u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryFullCompositionExclusionV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryFullCompositionExclusionV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_FULL_COMPOSITION_EXCLUSION_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryFullCompositionExclusionV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_full_composition_exclusion_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryFullCompositionExclusionV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_full_composition_exclusion_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryFullCompositionExclusionV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryFullCompositionExclusionV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_full_composition_exclusion_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryFullCompositionExclusionV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryFullCompositionExclusionV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryFullCompositionExclusionV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_full_composition_exclusion_v1 as impl_property_binary_full_composition_exclusion_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_graph_v1.rs.data b/vendor/icu_properties_data/data/property_binary_graph_v1.rs.data
new file mode 100644
index 00000000..91c95d7d
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_graph_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryGraphV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4454B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_graph_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_GRAPH_V1: &'static <icu::properties::provider::PropertyBinaryGraphV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"!\0\0\x7F\0\0\xA1\0\0x\x03\0z\x03\0\x80\x03\0\x84\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\x000\x05\x001\x05\0W\x05\0Y\x05\0\x8B\x05\0\x8D\x05\0\x90\x05\0\x91\x05\0\xC8\x05\0\xD0\x05\0\xEB\x05\0\xEF\x05\0\xF5\x05\0\0\x06\0\x0E\x07\0\x0F\x07\0K\x07\0M\x07\0\xB2\x07\0\xC0\x07\0\xFB\x07\0\xFD\x07\0.\x08\x000\x08\0?\x08\0@\x08\0\\\x08\0^\x08\0_\x08\0`\x08\0k\x08\0p\x08\0\x8F\x08\0\x90\x08\0\x92\x08\0\x97\x08\0\x84\t\0\x85\t\0\x8D\t\0\x8F\t\0\x91\t\0\x93\t\0\xA9\t\0\xAA\t\0\xB1\t\0\xB2\t\0\xB3\t\0\xB6\t\0\xBA\t\0\xBC\t\0\xC5\t\0\xC7\t\0\xC9\t\0\xCB\t\0\xCF\t\0\xD7\t\0\xD8\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE4\t\0\xE6\t\0\xFF\t\0\x01\n\0\x04\n\0\x05\n\0\x0B\n\0\x0F\n\0\x11\n\0\x13\n\0)\n\0*\n\x001\n\x002\n\x004\n\x005\n\x007\n\08\n\0:\n\0<\n\0=\n\0>\n\0C\n\0G\n\0I\n\0K\n\0N\n\0Q\n\0R\n\0Y\n\0]\n\0^\n\0_\n\0f\n\0w\n\0\x81\n\0\x84\n\0\x85\n\0\x8E\n\0\x8F\n\0\x92\n\0\x93\n\0\xA9\n\0\xAA\n\0\xB1\n\0\xB2\n\0\xB4\n\0\xB5\n\0\xBA\n\0\xBC\n\0\xC6\n\0\xC7\n\0\xCA\n\0\xCB\n\0\xCE\n\0\xD0\n\0\xD1\n\0\xE0\n\0\xE4\n\0\xE6\n\0\xF2\n\0\xF9\n\0\0\x0B\0\x01\x0B\0\x04\x0B\0\x05\x0B\0\r\x0B\0\x0F\x0B\0\x11\x0B\0\x13\x0B\0)\x0B\0*\x0B\x001\x0B\x002\x0B\x004\x0B\x005\x0B\0:\x0B\0<\x0B\0E\x0B\0G\x0B\0I\x0B\0K\x0B\0N\x0B\0U\x0B\0X\x0B\0\\\x0B\0^\x0B\0_\x0B\0d\x0B\0f\x0B\0x\x0B\0\x82\x0B\0\x84\x0B\0\x85\x0B\0\x8B\x0B\0\x8E\x0B\0\x91\x0B\0\x92\x0B\0\x96\x0B\0\x99\x0B\0\x9B\x0B\0\x9C\x0B\0\x9D\x0B\0\x9E\x0B\0\xA0\x0B\0\xA3\x0B\0\xA5\x0B\0\xA8\x0B\0\xAB\x0B\0\xAE\x0B\0\xBA\x0B\0\xBE\x0B\0\xC3\x0B\0\xC6\x0B\0\xC9\x0B\0\xCA\x0B\0\xCE\x0B\0\xD0\x0B\0\xD1\x0B\0\xD7\x0B\0\xD8\x0B\0\xE6\x0B\0\xFB\x0B\0\0\x0C\0\r\x0C\0\x0E\x0C\0\x11\x0C\0\x12\x0C\0)\x0C\0*\x0C\0:\x0C\0<\x0C\0E\x0C\0F\x0C\0I\x0C\0J\x0C\0N\x0C\0U\x0C\0W\x0C\0X\x0C\0[\x0C\0]\x0C\0^\x0C\0`\x0C\0d\x0C\0f\x0C\0p\x0C\0w\x0C\0\x8D\x0C\0\x8E\x0C\0\x91\x0C\0\x92\x0C\0\xA9\x0C\0\xAA\x0C\0\xB4\x0C\0\xB5\x0C\0\xBA\x0C\0\xBC\x0C\0\xC5\x0C\0\xC6\x0C\0\xC9\x0C\0\xCA\x0C\0\xCE\x0C\0\xD5\x0C\0\xD7\x0C\0\xDD\x0C\0\xDF\x0C\0\xE0\x0C\0\xE4\x0C\0\xE6\x0C\0\xF0\x0C\0\xF1\x0C\0\xF4\x0C\0\0\r\0\r\r\0\x0E\r\0\x11\r\0\x12\r\0E\r\0F\r\0I\r\0J\r\0P\r\0T\r\0d\r\0f\r\0\x80\r\0\x81\r\0\x84\r\0\x85\r\0\x97\r\0\x9A\r\0\xB2\r\0\xB3\r\0\xBC\r\0\xBD\r\0\xBE\r\0\xC0\r\0\xC7\r\0\xCA\r\0\xCB\r\0\xCF\r\0\xD5\r\0\xD6\r\0\xD7\r\0\xD8\r\0\xE0\r\0\xE6\r\0\xF0\r\0\xF2\r\0\xF5\r\0\x01\x0E\0;\x0E\0?\x0E\0\\\x0E\0\x81\x0E\0\x83\x0E\0\x84\x0E\0\x85\x0E\0\x86\x0E\0\x8B\x0E\0\x8C\x0E\0\xA4\x0E\0\xA5\x0E\0\xA6\x0E\0\xA7\x0E\0\xBE\x0E\0\xC0\x0E\0\xC5\x0E\0\xC6\x0E\0\xC7\x0E\0\xC8\x0E\0\xCF\x0E\0\xD0\x0E\0\xDA\x0E\0\xDC\x0E\0\xE0\x0E\0\0\x0F\0H\x0F\0I\x0F\0m\x0F\0q\x0F\0\x98\x0F\0\x99\x0F\0\xBD\x0F\0\xBE\x0F\0\xCD\x0F\0\xCE\x0F\0\xDB\x0F\0\0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0I\x12\0J\x12\0N\x12\0P\x12\0W\x12\0X\x12\0Y\x12\0Z\x12\0^\x12\0`\x12\0\x89\x12\0\x8A\x12\0\x8E\x12\0\x90\x12\0\xB1\x12\0\xB2\x12\0\xB6\x12\0\xB8\x12\0\xBF\x12\0\xC0\x12\0\xC1\x12\0\xC2\x12\0\xC6\x12\0\xC8\x12\0\xD7\x12\0\xD8\x12\0\x11\x13\0\x12\x13\0\x16\x13\0\x18\x13\0[\x13\0]\x13\0}\x13\0\x80\x13\0\x9A\x13\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\0\x14\0\x80\x16\0\x81\x16\0\x9D\x16\0\xA0\x16\0\xF9\x16\0\0\x17\0\x16\x17\0\x1F\x17\x007\x17\0@\x17\0T\x17\0`\x17\0m\x17\0n\x17\0q\x17\0r\x17\0t\x17\0\x80\x17\0\xDE\x17\0\xE0\x17\0\xEA\x17\0\xF0\x17\0\xFA\x17\0\0\x18\0\x1A\x18\0 \x18\0y\x18\0\x80\x18\0\xAB\x18\0\xB0\x18\0\xF6\x18\0\0\x19\0\x1F\x19\0 \x19\0,\x19\x000\x19\0<\x19\0@\x19\0A\x19\0D\x19\0n\x19\0p\x19\0u\x19\0\x80\x19\0\xAC\x19\0\xB0\x19\0\xCA\x19\0\xD0\x19\0\xDB\x19\0\xDE\x19\0\x1C\x1A\0\x1E\x1A\0_\x1A\0`\x1A\0}\x1A\0\x7F\x1A\0\x8A\x1A\0\x90\x1A\0\x9A\x1A\0\xA0\x1A\0\xAE\x1A\0\xB0\x1A\0\xCF\x1A\0\0\x1B\0M\x1B\0N\x1B\0\xF4\x1B\0\xFC\x1B\08\x1C\0;\x1C\0J\x1C\0M\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC8\x1C\0\xD0\x1C\0\xFB\x1C\0\0\x1D\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xC5\x1F\0\xC6\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xDD\x1F\0\xF0\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFF\x1F\0\x0B \0( \0* \0/ \x000 \0_ \0` \0e \0f \0r \0t \0\x8F \0\x90 \0\x9D \0\xA0 \0\xC1 \0\xD0 \0\xF1 \0\0!\0\x8C!\0\x90!\0*$\0@$\0K$\0`$\0t+\0v+\0\x96+\0\x97+\0\xF4,\0\xF9,\0&-\0'-\0(-\0--\0.-\x000-\0h-\0o-\0q-\0\x7F-\0\x97-\0\xA0-\0\xA7-\0\xA8-\0\xAF-\0\xB0-\0\xB7-\0\xB8-\0\xBF-\0\xC0-\0\xC7-\0\xC8-\0\xCF-\0\xD0-\0\xD7-\0\xD8-\0\xDF-\0\xE0-\0^.\0\x80.\0\x9A.\0\x9B.\0\xF4.\0\0/\0\xD6/\0\xF0/\0\x000\0\x010\0@0\0A0\0\x970\0\x990\0\x001\0\x051\x0001\x0011\0\x8F1\0\x901\0\xE61\0\xEF1\0\x1F2\0 2\0\x8D\xA4\0\x90\xA4\0\xC7\xA4\0\xD0\xA4\0,\xA6\0@\xA6\0\xF8\xA6\0\0\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xDD\xA7\0\xF2\xA7\0-\xA8\x000\xA8\0:\xA8\0@\xA8\0x\xA8\0\x80\xA8\0\xC6\xA8\0\xCE\xA8\0\xDA\xA8\0\xE0\xA8\0T\xA9\0_\xA9\0}\xA9\0\x80\xA9\0\xCE\xA9\0\xCF\xA9\0\xDA\xA9\0\xDE\xA9\0\xFF\xA9\0\0\xAA\x007\xAA\0@\xAA\0N\xAA\0P\xAA\0Z\xAA\0\\\xAA\0\xC3\xAA\0\xDB\xAA\0\xF7\xAA\0\x01\xAB\0\x07\xAB\0\t\xAB\0\x0F\xAB\0\x11\xAB\0\x17\xAB\0 \xAB\0'\xAB\0(\xAB\0/\xAB\x000\xAB\0l\xAB\0p\xAB\0\xEE\xAB\0\xF0\xAB\0\xFA\xAB\0\0\xAC\0\xA4\xD7\0\xB0\xD7\0\xC7\xD7\0\xCB\xD7\0\xFC\xD7\0\0\xE0\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xC3\xFB\0\xD3\xFB\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xCF\xFD\0\xD0\xFD\0\xF0\xFD\0\x1A\xFE\0 \xFE\0S\xFE\0T\xFE\0g\xFE\0h\xFE\0l\xFE\0p\xFE\0u\xFE\0v\xFE\0\xFD\xFE\0\xFF\xFE\0\0\xFF\0\x01\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\xE0\xFF\0\xE7\xFF\0\xE8\xFF\0\xEF\xFF\0\xF9\xFF\0\xFE\xFF\0\0\0\x01\x0C\0\x01\r\0\x01'\0\x01(\0\x01;\0\x01<\0\x01>\0\x01?\0\x01N\0\x01P\0\x01^\0\x01\x80\0\x01\xFB\0\x01\0\x01\x01\x03\x01\x01\x07\x01\x014\x01\x017\x01\x01\x8F\x01\x01\x90\x01\x01\x9D\x01\x01\xA0\x01\x01\xA1\x01\x01\xD0\x01\x01\xFE\x01\x01\x80\x02\x01\x9D\x02\x01\xA0\x02\x01\xD1\x02\x01\xE0\x02\x01\xFC\x02\x01\0\x03\x01$\x03\x01-\x03\x01K\x03\x01P\x03\x01{\x03\x01\x80\x03\x01\x9E\x03\x01\x9F\x03\x01\xC4\x03\x01\xC8\x03\x01\xD6\x03\x01\0\x04\x01\x9E\x04\x01\xA0\x04\x01\xAA\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01\0\x05\x01(\x05\x010\x05\x01d\x05\x01o\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x05\x01\xF4\x05\x01\0\x06\x017\x07\x01@\x07\x01V\x07\x01`\x07\x01h\x07\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\0\x08\x01\x06\x08\x01\x08\x08\x01\t\x08\x01\n\x08\x016\x08\x017\x08\x019\x08\x01<\x08\x01=\x08\x01?\x08\x01V\x08\x01W\x08\x01\x9F\x08\x01\xA7\x08\x01\xB0\x08\x01\xE0\x08\x01\xF3\x08\x01\xF4\x08\x01\xF6\x08\x01\xFB\x08\x01\x1C\t\x01\x1F\t\x01:\t\x01?\t\x01@\t\x01\x80\t\x01\xB8\t\x01\xBC\t\x01\xD0\t\x01\xD2\t\x01\x04\n\x01\x05\n\x01\x07\n\x01\x0C\n\x01\x14\n\x01\x15\n\x01\x18\n\x01\x19\n\x016\n\x018\n\x01;\n\x01?\n\x01I\n\x01P\n\x01Y\n\x01`\n\x01\xA0\n\x01\xC0\n\x01\xE7\n\x01\xEB\n\x01\xF7\n\x01\0\x0B\x016\x0B\x019\x0B\x01V\x0B\x01X\x0B\x01s\x0B\x01x\x0B\x01\x92\x0B\x01\x99\x0B\x01\x9D\x0B\x01\xA9\x0B\x01\xB0\x0B\x01\0\x0C\x01I\x0C\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01\xFA\x0C\x01(\r\x010\r\x01:\r\x01@\r\x01f\r\x01i\r\x01\x86\r\x01\x8E\r\x01\x90\r\x01`\x0E\x01\x7F\x0E\x01\x80\x0E\x01\xAA\x0E\x01\xAB\x0E\x01\xAE\x0E\x01\xB0\x0E\x01\xB2\x0E\x01\xC2\x0E\x01\xC5\x0E\x01\xFC\x0E\x01(\x0F\x010\x0F\x01Z\x0F\x01p\x0F\x01\x8A\x0F\x01\xB0\x0F\x01\xCC\x0F\x01\xE0\x0F\x01\xF7\x0F\x01\0\x10\x01N\x10\x01R\x10\x01v\x10\x01\x7F\x10\x01\xC3\x10\x01\xCD\x10\x01\xCE\x10\x01\xD0\x10\x01\xE9\x10\x01\xF0\x10\x01\xFA\x10\x01\0\x11\x015\x11\x016\x11\x01H\x11\x01P\x11\x01w\x11\x01\x80\x11\x01\xE0\x11\x01\xE1\x11\x01\xF5\x11\x01\0\x12\x01\x12\x12\x01\x13\x12\x01B\x12\x01\x80\x12\x01\x87\x12\x01\x88\x12\x01\x89\x12\x01\x8A\x12\x01\x8E\x12\x01\x8F\x12\x01\x9E\x12\x01\x9F\x12\x01\xAA\x12\x01\xB0\x12\x01\xEB\x12\x01\xF0\x12\x01\xFA\x12\x01\0\x13\x01\x04\x13\x01\x05\x13\x01\r\x13\x01\x0F\x13\x01\x11\x13\x01\x13\x13\x01)\x13\x01*\x13\x011\x13\x012\x13\x014\x13\x015\x13\x01:\x13\x01;\x13\x01E\x13\x01G\x13\x01I\x13\x01K\x13\x01N\x13\x01P\x13\x01Q\x13\x01W\x13\x01X\x13\x01]\x13\x01d\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\x80\x13\x01\x8A\x13\x01\x8B\x13\x01\x8C\x13\x01\x8E\x13\x01\x8F\x13\x01\x90\x13\x01\xB6\x13\x01\xB7\x13\x01\xC1\x13\x01\xC2\x13\x01\xC3\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xCB\x13\x01\xCC\x13\x01\xD6\x13\x01\xD7\x13\x01\xD9\x13\x01\xE1\x13\x01\xE3\x13\x01\0\x14\x01\\\x14\x01]\x14\x01b\x14\x01\x80\x14\x01\xC8\x14\x01\xD0\x14\x01\xDA\x14\x01\x80\x15\x01\xB6\x15\x01\xB8\x15\x01\xDE\x15\x01\0\x16\x01E\x16\x01P\x16\x01Z\x16\x01`\x16\x01m\x16\x01\x80\x16\x01\xBA\x16\x01\xC0\x16\x01\xCA\x16\x01\xD0\x16\x01\xE4\x16\x01\0\x17\x01\x1B\x17\x01\x1D\x17\x01,\x17\x010\x17\x01G\x17\x01\0\x18\x01<\x18\x01\xA0\x18\x01\xF3\x18\x01\xFF\x18\x01\x07\x19\x01\t\x19\x01\n\x19\x01\x0C\x19\x01\x14\x19\x01\x15\x19\x01\x17\x19\x01\x18\x19\x016\x19\x017\x19\x019\x19\x01;\x19\x01G\x19\x01P\x19\x01Z\x19\x01\xA0\x19\x01\xA8\x19\x01\xAA\x19\x01\xD8\x19\x01\xDA\x19\x01\xE5\x19\x01\0\x1A\x01H\x1A\x01P\x1A\x01\xA3\x1A\x01\xB0\x1A\x01\xF9\x1A\x01\0\x1B\x01\n\x1B\x01\xC0\x1B\x01\xE2\x1B\x01\xF0\x1B\x01\xFA\x1B\x01\0\x1C\x01\t\x1C\x01\n\x1C\x017\x1C\x018\x1C\x01F\x1C\x01P\x1C\x01m\x1C\x01p\x1C\x01\x90\x1C\x01\x92\x1C\x01\xA8\x1C\x01\xA9\x1C\x01\xB7\x1C\x01\0\x1D\x01\x07\x1D\x01\x08\x1D\x01\n\x1D\x01\x0B\x1D\x017\x1D\x01:\x1D\x01;\x1D\x01<\x1D\x01>\x1D\x01?\x1D\x01H\x1D\x01P\x1D\x01Z\x1D\x01`\x1D\x01f\x1D\x01g\x1D\x01i\x1D\x01j\x1D\x01\x8F\x1D\x01\x90\x1D\x01\x92\x1D\x01\x93\x1D\x01\x99\x1D\x01\xA0\x1D\x01\xAA\x1D\x01\xE0\x1E\x01\xF9\x1E\x01\0\x1F\x01\x11\x1F\x01\x12\x1F\x01;\x1F\x01>\x1F\x01[\x1F\x01\xB0\x1F\x01\xB1\x1F\x01\xC0\x1F\x01\xF2\x1F\x01\xFF\x1F\x01\x9A#\x01\0$\x01o$\x01p$\x01u$\x01\x80$\x01D%\x01\x90/\x01\xF3/\x01\x000\x01V4\x01`4\x01\xFBC\x01\0D\x01GF\x01\0a\x01:a\x01\0h\x019j\x01@j\x01_j\x01`j\x01jj\x01nj\x01\xBFj\x01\xC0j\x01\xCAj\x01\xD0j\x01\xEEj\x01\xF0j\x01\xF6j\x01\0k\x01Fk\x01Pk\x01Zk\x01[k\x01bk\x01ck\x01xk\x01}k\x01\x90k\x01@m\x01zm\x01@n\x01\x9Bn\x01\0o\x01Ko\x01Oo\x01\x88o\x01\x8Fo\x01\xA0o\x01\xE0o\x01\xE5o\x01\xF0o\x01\xF2o\x01\0p\x01\xF8\x87\x01\0\x88\x01\xD6\x8C\x01\xFF\x8C\x01\t\x8D\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\0\xB0\x01#\xB1\x012\xB1\x013\xB1\x01P\xB1\x01S\xB1\x01U\xB1\x01V\xB1\x01d\xB1\x01h\xB1\x01p\xB1\x01\xFC\xB2\x01\0\xBC\x01k\xBC\x01p\xBC\x01}\xBC\x01\x80\xBC\x01\x89\xBC\x01\x90\xBC\x01\x9A\xBC\x01\x9C\xBC\x01\xA4\xBC\x01\0\xCC\x01\xFA\xCC\x01\0\xCD\x01\xB4\xCE\x01\0\xCF\x01.\xCF\x010\xCF\x01G\xCF\x01P\xCF\x01\xC4\xCF\x01\0\xD0\x01\xF6\xD0\x01\0\xD1\x01'\xD1\x01)\xD1\x01\xEB\xD1\x01\0\xD2\x01F\xD2\x01\xC0\xD2\x01\xD4\xD2\x01\xE0\xD2\x01\xF4\xD2\x01\0\xD3\x01W\xD3\x01`\xD3\x01y\xD3\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xCC\xD7\x01\xCE\xD7\x01\x8C\xDA\x01\x9B\xDA\x01\xA0\xDA\x01\xA1\xDA\x01\xB0\xDA\x01\0\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x010\xE0\x01n\xE0\x01\x8F\xE0\x01\x90\xE0\x01\0\xE1\x01-\xE1\x010\xE1\x01>\xE1\x01@\xE1\x01J\xE1\x01N\xE1\x01P\xE1\x01\x90\xE2\x01\xAF\xE2\x01\xC0\xE2\x01\xFA\xE2\x01\xFF\xE2\x01\0\xE3\x01\xD0\xE4\x01\xFA\xE4\x01\xD0\xE5\x01\xFB\xE5\x01\xFF\xE5\x01\0\xE6\x01\xE0\xE7\x01\xE7\xE7\x01\xE8\xE7\x01\xEC\xE7\x01\xED\xE7\x01\xEF\xE7\x01\xF0\xE7\x01\xFF\xE7\x01\0\xE8\x01\xC5\xE8\x01\xC7\xE8\x01\xD7\xE8\x01\0\xE9\x01L\xE9\x01P\xE9\x01Z\xE9\x01^\xE9\x01`\xE9\x01q\xEC\x01\xB5\xEC\x01\x01\xED\x01>\xED\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\xF0\xEE\x01\xF2\xEE\x01\0\xF0\x01,\xF0\x010\xF0\x01\x94\xF0\x01\xA0\xF0\x01\xAF\xF0\x01\xB1\xF0\x01\xC0\xF0\x01\xC1\xF0\x01\xD0\xF0\x01\xD1\xF0\x01\xF6\xF0\x01\0\xF1\x01\xAE\xF1\x01\xE6\xF1\x01\x03\xF2\x01\x10\xF2\x01<\xF2\x01@\xF2\x01I\xF2\x01P\xF2\x01R\xF2\x01`\xF2\x01f\xF2\x01\0\xF3\x01\xD8\xF6\x01\xDC\xF6\x01\xED\xF6\x01\xF0\xF6\x01\xFD\xF6\x01\0\xF7\x01w\xF7\x01{\xF7\x01\xDA\xF7\x01\xE0\xF7\x01\xEC\xF7\x01\xF0\xF7\x01\xF1\xF7\x01\0\xF8\x01\x0C\xF8\x01\x10\xF8\x01H\xF8\x01P\xF8\x01Z\xF8\x01`\xF8\x01\x88\xF8\x01\x90\xF8\x01\xAE\xF8\x01\xB0\xF8\x01\xBC\xF8\x01\xC0\xF8\x01\xC2\xF8\x01\0\xF9\x01T\xFA\x01`\xFA\x01n\xFA\x01p\xFA\x01}\xFA\x01\x80\xFA\x01\x8A\xFA\x01\x8F\xFA\x01\xC7\xFA\x01\xCE\xFA\x01\xDD\xFA\x01\xDF\xFA\x01\xEA\xFA\x01\xF0\xFA\x01\xF9\xFA\x01\0\xFB\x01\x93\xFB\x01\x94\xFB\x01\xFA\xFB\x01\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\xF8\x02\x1E\xFA\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03\x01\0\x0E\x02\0\x0E \0\x0E\x80\0\x0E\0\x01\x0E\xF0\x01\x0E\0\0\x0F\xFE\xFF\x0F\0\0\x10\xFE\xFF\x10") }, 292447u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryGraphV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryGraphV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_GRAPH_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_graph_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryGraphV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_graph_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryGraphV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_graph_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryGraphV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryGraphV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_graph_v1 as impl_property_binary_graph_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_grapheme_base_v1.rs.data b/vendor/icu_properties_data/data/property_binary_grapheme_base_v1.rs.data
new file mode 100644
index 00000000..af5abeff
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_grapheme_base_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryGraphemeBaseV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 5396B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_grapheme_base_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_GRAPHEME_BASE_V1: &'static <icu::properties::provider::PropertyBinaryGraphemeBaseV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b" \0\0\x7F\0\0\xA0\0\0\xAD\0\0\xAE\0\0\0\x03\0p\x03\0x\x03\0z\x03\0\x80\x03\0\x84\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\0\x83\x04\0\x8A\x04\x000\x05\x001\x05\0W\x05\0Y\x05\0\x8B\x05\0\x8D\x05\0\x90\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xD0\x05\0\xEB\x05\0\xEF\x05\0\xF5\x05\0\x06\x06\0\x10\x06\0\x1B\x06\0\x1C\x06\0\x1D\x06\0K\x06\0`\x06\0p\x06\0q\x06\0\xD6\x06\0\xDE\x06\0\xDF\x06\0\xE5\x06\0\xE7\x06\0\xE9\x06\0\xEA\x06\0\xEE\x06\0\x0E\x07\0\x10\x07\0\x11\x07\0\x12\x07\x000\x07\0M\x07\0\xA6\x07\0\xB1\x07\0\xB2\x07\0\xC0\x07\0\xEB\x07\0\xF4\x07\0\xFB\x07\0\xFE\x07\0\x16\x08\0\x1A\x08\0\x1B\x08\0$\x08\0%\x08\0(\x08\0)\x08\x000\x08\0?\x08\0@\x08\0Y\x08\0^\x08\0_\x08\0`\x08\0k\x08\0p\x08\0\x8F\x08\0\xA0\x08\0\xCA\x08\0\x03\t\0:\t\0;\t\0<\t\0=\t\0A\t\0I\t\0M\t\0N\t\0Q\t\0X\t\0b\t\0d\t\0\x81\t\0\x82\t\0\x84\t\0\x85\t\0\x8D\t\0\x8F\t\0\x91\t\0\x93\t\0\xA9\t\0\xAA\t\0\xB1\t\0\xB2\t\0\xB3\t\0\xB6\t\0\xBA\t\0\xBD\t\0\xBE\t\0\xBF\t\0\xC1\t\0\xC7\t\0\xC9\t\0\xCB\t\0\xCD\t\0\xCE\t\0\xCF\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE2\t\0\xE6\t\0\xFE\t\0\x03\n\0\x04\n\0\x05\n\0\x0B\n\0\x0F\n\0\x11\n\0\x13\n\0)\n\0*\n\x001\n\x002\n\x004\n\x005\n\x007\n\08\n\0:\n\0>\n\0A\n\0Y\n\0]\n\0^\n\0_\n\0f\n\0p\n\0r\n\0u\n\0v\n\0w\n\0\x83\n\0\x84\n\0\x85\n\0\x8E\n\0\x8F\n\0\x92\n\0\x93\n\0\xA9\n\0\xAA\n\0\xB1\n\0\xB2\n\0\xB4\n\0\xB5\n\0\xBA\n\0\xBD\n\0\xC1\n\0\xC9\n\0\xCA\n\0\xCB\n\0\xCD\n\0\xD0\n\0\xD1\n\0\xE0\n\0\xE2\n\0\xE6\n\0\xF2\n\0\xF9\n\0\xFA\n\0\x02\x0B\0\x04\x0B\0\x05\x0B\0\r\x0B\0\x0F\x0B\0\x11\x0B\0\x13\x0B\0)\x0B\0*\x0B\x001\x0B\x002\x0B\x004\x0B\x005\x0B\0:\x0B\0=\x0B\0>\x0B\0@\x0B\0A\x0B\0G\x0B\0I\x0B\0K\x0B\0M\x0B\0\\\x0B\0^\x0B\0_\x0B\0b\x0B\0f\x0B\0x\x0B\0\x83\x0B\0\x84\x0B\0\x85\x0B\0\x8B\x0B\0\x8E\x0B\0\x91\x0B\0\x92\x0B\0\x96\x0B\0\x99\x0B\0\x9B\x0B\0\x9C\x0B\0\x9D\x0B\0\x9E\x0B\0\xA0\x0B\0\xA3\x0B\0\xA5\x0B\0\xA8\x0B\0\xAB\x0B\0\xAE\x0B\0\xBA\x0B\0\xBF\x0B\0\xC0\x0B\0\xC1\x0B\0\xC3\x0B\0\xC6\x0B\0\xC9\x0B\0\xCA\x0B\0\xCD\x0B\0\xD0\x0B\0\xD1\x0B\0\xE6\x0B\0\xFB\x0B\0\x01\x0C\0\x04\x0C\0\x05\x0C\0\r\x0C\0\x0E\x0C\0\x11\x0C\0\x12\x0C\0)\x0C\0*\x0C\0:\x0C\0=\x0C\0>\x0C\0A\x0C\0E\x0C\0X\x0C\0[\x0C\0]\x0C\0^\x0C\0`\x0C\0b\x0C\0f\x0C\0p\x0C\0w\x0C\0\x81\x0C\0\x82\x0C\0\x8D\x0C\0\x8E\x0C\0\x91\x0C\0\x92\x0C\0\xA9\x0C\0\xAA\x0C\0\xB4\x0C\0\xB5\x0C\0\xBA\x0C\0\xBD\x0C\0\xBF\x0C\0\xC1\x0C\0\xC2\x0C\0\xC3\x0C\0\xC5\x0C\0\xDD\x0C\0\xDF\x0C\0\xE0\x0C\0\xE2\x0C\0\xE6\x0C\0\xF0\x0C\0\xF1\x0C\0\xF4\x0C\0\x02\r\0\r\r\0\x0E\r\0\x11\r\0\x12\r\0;\r\0=\r\0>\r\0?\r\0A\r\0F\r\0I\r\0J\r\0M\r\0N\r\0P\r\0T\r\0W\r\0X\r\0b\r\0f\r\0\x80\r\0\x82\r\0\x84\r\0\x85\r\0\x97\r\0\x9A\r\0\xB2\r\0\xB3\r\0\xBC\r\0\xBD\r\0\xBE\r\0\xC0\r\0\xC7\r\0\xD0\r\0\xD2\r\0\xD8\r\0\xDF\r\0\xE6\r\0\xF0\r\0\xF2\r\0\xF5\r\0\x01\x0E\x001\x0E\x002\x0E\x004\x0E\0?\x0E\0G\x0E\0O\x0E\0\\\x0E\0\x81\x0E\0\x83\x0E\0\x84\x0E\0\x85\x0E\0\x86\x0E\0\x8B\x0E\0\x8C\x0E\0\xA4\x0E\0\xA5\x0E\0\xA6\x0E\0\xA7\x0E\0\xB1\x0E\0\xB2\x0E\0\xB4\x0E\0\xBD\x0E\0\xBE\x0E\0\xC0\x0E\0\xC5\x0E\0\xC6\x0E\0\xC7\x0E\0\xD0\x0E\0\xDA\x0E\0\xDC\x0E\0\xE0\x0E\0\0\x0F\0\x18\x0F\0\x1A\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0H\x0F\0I\x0F\0m\x0F\0\x7F\x0F\0\x80\x0F\0\x85\x0F\0\x86\x0F\0\x88\x0F\0\x8D\x0F\0\xBE\x0F\0\xC6\x0F\0\xC7\x0F\0\xCD\x0F\0\xCE\x0F\0\xDB\x0F\0\0\x10\0-\x10\x001\x10\x002\x10\08\x10\09\x10\0;\x10\0=\x10\0?\x10\0X\x10\0Z\x10\0^\x10\0a\x10\0q\x10\0u\x10\0\x82\x10\0\x83\x10\0\x85\x10\0\x87\x10\0\x8D\x10\0\x8E\x10\0\x9D\x10\0\x9E\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0I\x12\0J\x12\0N\x12\0P\x12\0W\x12\0X\x12\0Y\x12\0Z\x12\0^\x12\0`\x12\0\x89\x12\0\x8A\x12\0\x8E\x12\0\x90\x12\0\xB1\x12\0\xB2\x12\0\xB6\x12\0\xB8\x12\0\xBF\x12\0\xC0\x12\0\xC1\x12\0\xC2\x12\0\xC6\x12\0\xC8\x12\0\xD7\x12\0\xD8\x12\0\x11\x13\0\x12\x13\0\x16\x13\0\x18\x13\0[\x13\0`\x13\0}\x13\0\x80\x13\0\x9A\x13\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\0\x14\0\x9D\x16\0\xA0\x16\0\xF9\x16\0\0\x17\0\x12\x17\0\x1F\x17\x002\x17\x005\x17\x007\x17\0@\x17\0R\x17\0`\x17\0m\x17\0n\x17\0q\x17\0\x80\x17\0\xB4\x17\0\xB6\x17\0\xB7\x17\0\xBE\x17\0\xC6\x17\0\xC7\x17\0\xC9\x17\0\xD4\x17\0\xDD\x17\0\xE0\x17\0\xEA\x17\0\xF0\x17\0\xFA\x17\0\0\x18\0\x0B\x18\0\x10\x18\0\x1A\x18\0 \x18\0y\x18\0\x80\x18\0\x85\x18\0\x87\x18\0\xA9\x18\0\xAA\x18\0\xAB\x18\0\xB0\x18\0\xF6\x18\0\0\x19\0\x1F\x19\0#\x19\0'\x19\0)\x19\0,\x19\x000\x19\x002\x19\x003\x19\09\x19\0@\x19\0A\x19\0D\x19\0n\x19\0p\x19\0u\x19\0\x80\x19\0\xAC\x19\0\xB0\x19\0\xCA\x19\0\xD0\x19\0\xDB\x19\0\xDE\x19\0\x17\x1A\0\x19\x1A\0\x1B\x1A\0\x1E\x1A\0V\x1A\0W\x1A\0X\x1A\0a\x1A\0b\x1A\0c\x1A\0e\x1A\0m\x1A\0s\x1A\0\x80\x1A\0\x8A\x1A\0\x90\x1A\0\x9A\x1A\0\xA0\x1A\0\xAE\x1A\0\x04\x1B\x004\x1B\0>\x1B\0B\x1B\0E\x1B\0M\x1B\0N\x1B\0k\x1B\0t\x1B\0\x80\x1B\0\x82\x1B\0\xA2\x1B\0\xA6\x1B\0\xA8\x1B\0\xAE\x1B\0\xE6\x1B\0\xE7\x1B\0\xE8\x1B\0\xEA\x1B\0\xED\x1B\0\xEE\x1B\0\xEF\x1B\0\xFC\x1B\0,\x1C\x004\x1C\x006\x1C\0;\x1C\0J\x1C\0M\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC8\x1C\0\xD3\x1C\0\xD4\x1C\0\xE1\x1C\0\xE2\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF8\x1C\0\xFA\x1C\0\xFB\x1C\0\0\x1D\0\xC0\x1D\0\0\x1E\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xC5\x1F\0\xC6\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xDD\x1F\0\xF0\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFF\x1F\0\0 \0\x0B \0\x10 \0( \0/ \0` \0p \0r \0t \0\x8F \0\x90 \0\x9D \0\xA0 \0\xC1 \0\0!\0\x8C!\0\x90!\0*$\0@$\0K$\0`$\0t+\0v+\0\x96+\0\x97+\0\xEF,\0\xF2,\0\xF4,\0\xF9,\0&-\0'-\0(-\0--\0.-\x000-\0h-\0o-\0q-\0\x80-\0\x97-\0\xA0-\0\xA7-\0\xA8-\0\xAF-\0\xB0-\0\xB7-\0\xB8-\0\xBF-\0\xC0-\0\xC7-\0\xC8-\0\xCF-\0\xD0-\0\xD7-\0\xD8-\0\xDF-\0\0.\0^.\0\x80.\0\x9A.\0\x9B.\0\xF4.\0\0/\0\xD6/\0\xF0/\0*0\x0000\0@0\0A0\0\x970\0\x9B0\0\x001\0\x051\x0001\x0011\0\x8F1\0\x901\0\xE61\0\xEF1\0\x1F2\0 2\0\x8D\xA4\0\x90\xA4\0\xC7\xA4\0\xD0\xA4\0,\xA6\0@\xA6\0o\xA6\0s\xA6\0t\xA6\0~\xA6\0\x9E\xA6\0\xA0\xA6\0\xF0\xA6\0\xF2\xA6\0\xF8\xA6\0\0\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xDD\xA7\0\xF2\xA7\0\x02\xA8\0\x03\xA8\0\x06\xA8\0\x07\xA8\0\x0B\xA8\0\x0C\xA8\0%\xA8\0'\xA8\0,\xA8\x000\xA8\0:\xA8\0@\xA8\0x\xA8\0\x80\xA8\0\xC4\xA8\0\xCE\xA8\0\xDA\xA8\0\xF2\xA8\0\xFF\xA8\0\0\xA9\0&\xA9\0.\xA9\0G\xA9\0R\xA9\0S\xA9\0_\xA9\0}\xA9\0\x83\xA9\0\xB3\xA9\0\xB4\xA9\0\xB6\xA9\0\xBA\xA9\0\xBC\xA9\0\xBE\xA9\0\xC0\xA9\0\xC1\xA9\0\xCE\xA9\0\xCF\xA9\0\xDA\xA9\0\xDE\xA9\0\xE5\xA9\0\xE6\xA9\0\xFF\xA9\0\0\xAA\0)\xAA\0/\xAA\x001\xAA\x003\xAA\x005\xAA\0@\xAA\0C\xAA\0D\xAA\0L\xAA\0M\xAA\0N\xAA\0P\xAA\0Z\xAA\0\\\xAA\0|\xAA\0}\xAA\0\xB0\xAA\0\xB1\xAA\0\xB2\xAA\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBE\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xC3\xAA\0\xDB\xAA\0\xEC\xAA\0\xEE\xAA\0\xF6\xAA\0\x01\xAB\0\x07\xAB\0\t\xAB\0\x0F\xAB\0\x11\xAB\0\x17\xAB\0 \xAB\0'\xAB\0(\xAB\0/\xAB\x000\xAB\0l\xAB\0p\xAB\0\xE5\xAB\0\xE6\xAB\0\xE8\xAB\0\xE9\xAB\0\xED\xAB\0\xF0\xAB\0\xFA\xAB\0\0\xAC\0\xA4\xD7\0\xB0\xD7\0\xC7\xD7\0\xCB\xD7\0\xFC\xD7\0\0\xF9\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\0\x1E\xFB\0\x1F\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xC3\xFB\0\xD3\xFB\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xCF\xFD\0\xD0\xFD\0\xF0\xFD\0\0\xFE\0\x10\xFE\0\x1A\xFE\x000\xFE\0S\xFE\0T\xFE\0g\xFE\0h\xFE\0l\xFE\0p\xFE\0u\xFE\0v\xFE\0\xFD\xFE\0\x01\xFF\0\x9E\xFF\0\xA0\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\xE0\xFF\0\xE7\xFF\0\xE8\xFF\0\xEF\xFF\0\xFC\xFF\0\xFE\xFF\0\0\0\x01\x0C\0\x01\r\0\x01'\0\x01(\0\x01;\0\x01<\0\x01>\0\x01?\0\x01N\0\x01P\0\x01^\0\x01\x80\0\x01\xFB\0\x01\0\x01\x01\x03\x01\x01\x07\x01\x014\x01\x017\x01\x01\x8F\x01\x01\x90\x01\x01\x9D\x01\x01\xA0\x01\x01\xA1\x01\x01\xD0\x01\x01\xFD\x01\x01\x80\x02\x01\x9D\x02\x01\xA0\x02\x01\xD1\x02\x01\xE1\x02\x01\xFC\x02\x01\0\x03\x01$\x03\x01-\x03\x01K\x03\x01P\x03\x01v\x03\x01\x80\x03\x01\x9E\x03\x01\x9F\x03\x01\xC4\x03\x01\xC8\x03\x01\xD6\x03\x01\0\x04\x01\x9E\x04\x01\xA0\x04\x01\xAA\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01\0\x05\x01(\x05\x010\x05\x01d\x05\x01o\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x05\x01\xF4\x05\x01\0\x06\x017\x07\x01@\x07\x01V\x07\x01`\x07\x01h\x07\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\0\x08\x01\x06\x08\x01\x08\x08\x01\t\x08\x01\n\x08\x016\x08\x017\x08\x019\x08\x01<\x08\x01=\x08\x01?\x08\x01V\x08\x01W\x08\x01\x9F\x08\x01\xA7\x08\x01\xB0\x08\x01\xE0\x08\x01\xF3\x08\x01\xF4\x08\x01\xF6\x08\x01\xFB\x08\x01\x1C\t\x01\x1F\t\x01:\t\x01?\t\x01@\t\x01\x80\t\x01\xB8\t\x01\xBC\t\x01\xD0\t\x01\xD2\t\x01\x01\n\x01\x10\n\x01\x14\n\x01\x15\n\x01\x18\n\x01\x19\n\x016\n\x01@\n\x01I\n\x01P\n\x01Y\n\x01`\n\x01\xA0\n\x01\xC0\n\x01\xE5\n\x01\xEB\n\x01\xF7\n\x01\0\x0B\x016\x0B\x019\x0B\x01V\x0B\x01X\x0B\x01s\x0B\x01x\x0B\x01\x92\x0B\x01\x99\x0B\x01\x9D\x0B\x01\xA9\x0B\x01\xB0\x0B\x01\0\x0C\x01I\x0C\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01\xFA\x0C\x01$\r\x010\r\x01:\r\x01@\r\x01f\r\x01n\r\x01\x86\r\x01\x8E\r\x01\x90\r\x01`\x0E\x01\x7F\x0E\x01\x80\x0E\x01\xAA\x0E\x01\xAD\x0E\x01\xAE\x0E\x01\xB0\x0E\x01\xB2\x0E\x01\xC2\x0E\x01\xC5\x0E\x01\0\x0F\x01(\x0F\x010\x0F\x01F\x0F\x01Q\x0F\x01Z\x0F\x01p\x0F\x01\x82\x0F\x01\x86\x0F\x01\x8A\x0F\x01\xB0\x0F\x01\xCC\x0F\x01\xE0\x0F\x01\xF7\x0F\x01\0\x10\x01\x01\x10\x01\x02\x10\x018\x10\x01G\x10\x01N\x10\x01R\x10\x01p\x10\x01q\x10\x01s\x10\x01u\x10\x01v\x10\x01\x82\x10\x01\xB3\x10\x01\xB7\x10\x01\xB9\x10\x01\xBB\x10\x01\xBD\x10\x01\xBE\x10\x01\xC2\x10\x01\xD0\x10\x01\xE9\x10\x01\xF0\x10\x01\xFA\x10\x01\x03\x11\x01'\x11\x01,\x11\x01-\x11\x016\x11\x01H\x11\x01P\x11\x01s\x11\x01t\x11\x01w\x11\x01\x82\x11\x01\xB6\x11\x01\xBF\x11\x01\xC0\x11\x01\xC1\x11\x01\xC9\x11\x01\xCD\x11\x01\xCF\x11\x01\xD0\x11\x01\xE0\x11\x01\xE1\x11\x01\xF5\x11\x01\0\x12\x01\x12\x12\x01\x13\x12\x01/\x12\x012\x12\x014\x12\x018\x12\x01>\x12\x01?\x12\x01A\x12\x01\x80\x12\x01\x87\x12\x01\x88\x12\x01\x89\x12\x01\x8A\x12\x01\x8E\x12\x01\x8F\x12\x01\x9E\x12\x01\x9F\x12\x01\xAA\x12\x01\xB0\x12\x01\xDF\x12\x01\xE0\x12\x01\xE3\x12\x01\xF0\x12\x01\xFA\x12\x01\x02\x13\x01\x04\x13\x01\x05\x13\x01\r\x13\x01\x0F\x13\x01\x11\x13\x01\x13\x13\x01)\x13\x01*\x13\x011\x13\x012\x13\x014\x13\x015\x13\x01:\x13\x01=\x13\x01>\x13\x01?\x13\x01@\x13\x01A\x13\x01E\x13\x01G\x13\x01I\x13\x01K\x13\x01M\x13\x01P\x13\x01Q\x13\x01]\x13\x01d\x13\x01\x80\x13\x01\x8A\x13\x01\x8B\x13\x01\x8C\x13\x01\x8E\x13\x01\x8F\x13\x01\x90\x13\x01\xB6\x13\x01\xB7\x13\x01\xB8\x13\x01\xB9\x13\x01\xBB\x13\x01\xCA\x13\x01\xCB\x13\x01\xCC\x13\x01\xCE\x13\x01\xD1\x13\x01\xD2\x13\x01\xD3\x13\x01\xD6\x13\x01\xD7\x13\x01\xD9\x13\x01\0\x14\x018\x14\x01@\x14\x01B\x14\x01E\x14\x01F\x14\x01G\x14\x01\\\x14\x01]\x14\x01^\x14\x01_\x14\x01b\x14\x01\x80\x14\x01\xB0\x14\x01\xB1\x14\x01\xB3\x14\x01\xB9\x14\x01\xBA\x14\x01\xBB\x14\x01\xBD\x14\x01\xBE\x14\x01\xBF\x14\x01\xC1\x14\x01\xC2\x14\x01\xC4\x14\x01\xC8\x14\x01\xD0\x14\x01\xDA\x14\x01\x80\x15\x01\xAF\x15\x01\xB0\x15\x01\xB2\x15\x01\xB8\x15\x01\xBC\x15\x01\xBE\x15\x01\xBF\x15\x01\xC1\x15\x01\xDC\x15\x01\0\x16\x013\x16\x01;\x16\x01=\x16\x01>\x16\x01?\x16\x01A\x16\x01E\x16\x01P\x16\x01Z\x16\x01`\x16\x01m\x16\x01\x80\x16\x01\xAB\x16\x01\xAC\x16\x01\xAD\x16\x01\xAE\x16\x01\xB0\x16\x01\xB8\x16\x01\xBA\x16\x01\xC0\x16\x01\xCA\x16\x01\xD0\x16\x01\xE4\x16\x01\0\x17\x01\x1B\x17\x01\x1E\x17\x01\x1F\x17\x01 \x17\x01\"\x17\x01&\x17\x01'\x17\x010\x17\x01G\x17\x01\0\x18\x01/\x18\x018\x18\x019\x18\x01;\x18\x01<\x18\x01\xA0\x18\x01\xF3\x18\x01\xFF\x18\x01\x07\x19\x01\t\x19\x01\n\x19\x01\x0C\x19\x01\x14\x19\x01\x15\x19\x01\x17\x19\x01\x18\x19\x010\x19\x011\x19\x016\x19\x017\x19\x019\x19\x01?\x19\x01C\x19\x01D\x19\x01G\x19\x01P\x19\x01Z\x19\x01\xA0\x19\x01\xA8\x19\x01\xAA\x19\x01\xD4\x19\x01\xDC\x19\x01\xE0\x19\x01\xE1\x19\x01\xE5\x19\x01\0\x1A\x01\x01\x1A\x01\x0B\x1A\x013\x1A\x019\x1A\x01;\x1A\x01?\x1A\x01G\x1A\x01P\x1A\x01Q\x1A\x01W\x1A\x01Y\x1A\x01\\\x1A\x01\x8A\x1A\x01\x97\x1A\x01\x98\x1A\x01\x9A\x1A\x01\xA3\x1A\x01\xB0\x1A\x01\xF9\x1A\x01\0\x1B\x01\n\x1B\x01\xC0\x1B\x01\xE2\x1B\x01\xF0\x1B\x01\xFA\x1B\x01\0\x1C\x01\t\x1C\x01\n\x1C\x010\x1C\x01>\x1C\x01?\x1C\x01@\x1C\x01F\x1C\x01P\x1C\x01m\x1C\x01p\x1C\x01\x90\x1C\x01\xA9\x1C\x01\xAA\x1C\x01\xB1\x1C\x01\xB2\x1C\x01\xB4\x1C\x01\xB5\x1C\x01\0\x1D\x01\x07\x1D\x01\x08\x1D\x01\n\x1D\x01\x0B\x1D\x011\x1D\x01F\x1D\x01G\x1D\x01P\x1D\x01Z\x1D\x01`\x1D\x01f\x1D\x01g\x1D\x01i\x1D\x01j\x1D\x01\x8F\x1D\x01\x93\x1D\x01\x95\x1D\x01\x96\x1D\x01\x97\x1D\x01\x98\x1D\x01\x99\x1D\x01\xA0\x1D\x01\xAA\x1D\x01\xE0\x1E\x01\xF3\x1E\x01\xF5\x1E\x01\xF9\x1E\x01\x02\x1F\x01\x11\x1F\x01\x12\x1F\x016\x1F\x01>\x1F\x01@\x1F\x01C\x1F\x01Z\x1F\x01\xB0\x1F\x01\xB1\x1F\x01\xC0\x1F\x01\xF2\x1F\x01\xFF\x1F\x01\x9A#\x01\0$\x01o$\x01p$\x01u$\x01\x80$\x01D%\x01\x90/\x01\xF3/\x01\x000\x0104\x01A4\x01G4\x01`4\x01\xFBC\x01\0D\x01GF\x01\0a\x01\x1Ea\x01*a\x01-a\x010a\x01:a\x01\0h\x019j\x01@j\x01_j\x01`j\x01jj\x01nj\x01\xBFj\x01\xC0j\x01\xCAj\x01\xD0j\x01\xEEj\x01\xF5j\x01\xF6j\x01\0k\x010k\x017k\x01Fk\x01Pk\x01Zk\x01[k\x01bk\x01ck\x01xk\x01}k\x01\x90k\x01@m\x01zm\x01@n\x01\x9Bn\x01\0o\x01Ko\x01Po\x01\x88o\x01\x93o\x01\xA0o\x01\xE0o\x01\xE4o\x01\0p\x01\xF8\x87\x01\0\x88\x01\xD6\x8C\x01\xFF\x8C\x01\t\x8D\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\0\xB0\x01#\xB1\x012\xB1\x013\xB1\x01P\xB1\x01S\xB1\x01U\xB1\x01V\xB1\x01d\xB1\x01h\xB1\x01p\xB1\x01\xFC\xB2\x01\0\xBC\x01k\xBC\x01p\xBC\x01}\xBC\x01\x80\xBC\x01\x89\xBC\x01\x90\xBC\x01\x9A\xBC\x01\x9C\xBC\x01\x9D\xBC\x01\x9F\xBC\x01\xA0\xBC\x01\0\xCC\x01\xFA\xCC\x01\0\xCD\x01\xB4\xCE\x01P\xCF\x01\xC4\xCF\x01\0\xD0\x01\xF6\xD0\x01\0\xD1\x01'\xD1\x01)\xD1\x01e\xD1\x01j\xD1\x01m\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x01\xEB\xD1\x01\0\xD2\x01B\xD2\x01E\xD2\x01F\xD2\x01\xC0\xD2\x01\xD4\xD2\x01\xE0\xD2\x01\xF4\xD2\x01\0\xD3\x01W\xD3\x01`\xD3\x01y\xD3\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xCC\xD7\x01\xCE\xD7\x01\0\xDA\x017\xDA\x01;\xDA\x01m\xDA\x01u\xDA\x01v\xDA\x01\x84\xDA\x01\x85\xDA\x01\x8C\xDA\x01\0\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x010\xE0\x01n\xE0\x01\0\xE1\x01-\xE1\x017\xE1\x01>\xE1\x01@\xE1\x01J\xE1\x01N\xE1\x01P\xE1\x01\x90\xE2\x01\xAE\xE2\x01\xC0\xE2\x01\xEC\xE2\x01\xF0\xE2\x01\xFA\xE2\x01\xFF\xE2\x01\0\xE3\x01\xD0\xE4\x01\xEC\xE4\x01\xF0\xE4\x01\xFA\xE4\x01\xD0\xE5\x01\xEE\xE5\x01\xF0\xE5\x01\xFB\xE5\x01\xFF\xE5\x01\0\xE6\x01\xE0\xE7\x01\xE7\xE7\x01\xE8\xE7\x01\xEC\xE7\x01\xED\xE7\x01\xEF\xE7\x01\xF0\xE7\x01\xFF\xE7\x01\0\xE8\x01\xC5\xE8\x01\xC7\xE8\x01\xD0\xE8\x01\0\xE9\x01D\xE9\x01K\xE9\x01L\xE9\x01P\xE9\x01Z\xE9\x01^\xE9\x01`\xE9\x01q\xEC\x01\xB5\xEC\x01\x01\xED\x01>\xED\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\xF0\xEE\x01\xF2\xEE\x01\0\xF0\x01,\xF0\x010\xF0\x01\x94\xF0\x01\xA0\xF0\x01\xAF\xF0\x01\xB1\xF0\x01\xC0\xF0\x01\xC1\xF0\x01\xD0\xF0\x01\xD1\xF0\x01\xF6\xF0\x01\0\xF1\x01\xAE\xF1\x01\xE6\xF1\x01\x03\xF2\x01\x10\xF2\x01<\xF2\x01@\xF2\x01I\xF2\x01P\xF2\x01R\xF2\x01`\xF2\x01f\xF2\x01\0\xF3\x01\xD8\xF6\x01\xDC\xF6\x01\xED\xF6\x01\xF0\xF6\x01\xFD\xF6\x01\0\xF7\x01w\xF7\x01{\xF7\x01\xDA\xF7\x01\xE0\xF7\x01\xEC\xF7\x01\xF0\xF7\x01\xF1\xF7\x01\0\xF8\x01\x0C\xF8\x01\x10\xF8\x01H\xF8\x01P\xF8\x01Z\xF8\x01`\xF8\x01\x88\xF8\x01\x90\xF8\x01\xAE\xF8\x01\xB0\xF8\x01\xBC\xF8\x01\xC0\xF8\x01\xC2\xF8\x01\0\xF9\x01T\xFA\x01`\xFA\x01n\xFA\x01p\xFA\x01}\xFA\x01\x80\xFA\x01\x8A\xFA\x01\x8F\xFA\x01\xC7\xFA\x01\xCE\xFA\x01\xDD\xFA\x01\xDF\xFA\x01\xEA\xFA\x01\xF0\xFA\x01\xF9\xFA\x01\0\xFB\x01\x93\xFB\x01\x94\xFB\x01\xFA\xFB\x01\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\xF8\x02\x1E\xFA\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03") }, 152730u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryGraphemeBaseV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryGraphemeBaseV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_GRAPHEME_BASE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphemeBaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_grapheme_base_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryGraphemeBaseV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_grapheme_base_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryGraphemeBaseV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphemeBaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_grapheme_base_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryGraphemeBaseV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphemeBaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryGraphemeBaseV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_grapheme_base_v1 as impl_property_binary_grapheme_base_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_grapheme_extend_v1.rs.data b/vendor/icu_properties_data/data/property_binary_grapheme_extend_v1.rs.data
new file mode 100644
index 00000000..29e7a023
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_grapheme_extend_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryGraphemeExtendV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 2282B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_grapheme_extend_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_GRAPHEME_EXTEND_V1: &'static <icu::properties::provider::PropertyBinaryGraphemeExtendV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\x03\0p\x03\0\x83\x04\0\x8A\x04\0\x91\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\x10\x06\0\x1B\x06\0K\x06\0`\x06\0p\x06\0q\x06\0\xD6\x06\0\xDD\x06\0\xDF\x06\0\xE5\x06\0\xE7\x06\0\xE9\x06\0\xEA\x06\0\xEE\x06\0\x11\x07\0\x12\x07\x000\x07\0K\x07\0\xA6\x07\0\xB1\x07\0\xEB\x07\0\xF4\x07\0\xFD\x07\0\xFE\x07\0\x16\x08\0\x1A\x08\0\x1B\x08\0$\x08\0%\x08\0(\x08\0)\x08\0.\x08\0Y\x08\0\\\x08\0\x97\x08\0\xA0\x08\0\xCA\x08\0\xE2\x08\0\xE3\x08\0\x03\t\0:\t\0;\t\0<\t\0=\t\0A\t\0I\t\0M\t\0N\t\0Q\t\0X\t\0b\t\0d\t\0\x81\t\0\x82\t\0\xBC\t\0\xBD\t\0\xBE\t\0\xBF\t\0\xC1\t\0\xC5\t\0\xCD\t\0\xCE\t\0\xD7\t\0\xD8\t\0\xE2\t\0\xE4\t\0\xFE\t\0\xFF\t\0\x01\n\0\x03\n\0<\n\0=\n\0A\n\0C\n\0G\n\0I\n\0K\n\0N\n\0Q\n\0R\n\0p\n\0r\n\0u\n\0v\n\0\x81\n\0\x83\n\0\xBC\n\0\xBD\n\0\xC1\n\0\xC6\n\0\xC7\n\0\xC9\n\0\xCD\n\0\xCE\n\0\xE2\n\0\xE4\n\0\xFA\n\0\0\x0B\0\x01\x0B\0\x02\x0B\0<\x0B\0=\x0B\0>\x0B\0@\x0B\0A\x0B\0E\x0B\0M\x0B\0N\x0B\0U\x0B\0X\x0B\0b\x0B\0d\x0B\0\x82\x0B\0\x83\x0B\0\xBE\x0B\0\xBF\x0B\0\xC0\x0B\0\xC1\x0B\0\xCD\x0B\0\xCE\x0B\0\xD7\x0B\0\xD8\x0B\0\0\x0C\0\x01\x0C\0\x04\x0C\0\x05\x0C\0<\x0C\0=\x0C\0>\x0C\0A\x0C\0F\x0C\0I\x0C\0J\x0C\0N\x0C\0U\x0C\0W\x0C\0b\x0C\0d\x0C\0\x81\x0C\0\x82\x0C\0\xBC\x0C\0\xBD\x0C\0\xBF\x0C\0\xC1\x0C\0\xC2\x0C\0\xC3\x0C\0\xC6\x0C\0\xC9\x0C\0\xCA\x0C\0\xCE\x0C\0\xD5\x0C\0\xD7\x0C\0\xE2\x0C\0\xE4\x0C\0\0\r\0\x02\r\0;\r\0=\r\0>\r\0?\r\0A\r\0E\r\0M\r\0N\r\0W\r\0X\r\0b\r\0d\r\0\x81\r\0\x82\r\0\xCA\r\0\xCB\r\0\xCF\r\0\xD0\r\0\xD2\r\0\xD5\r\0\xD6\r\0\xD7\r\0\xDF\r\0\xE0\r\x001\x0E\x002\x0E\x004\x0E\0;\x0E\0G\x0E\0O\x0E\0\xB1\x0E\0\xB2\x0E\0\xB4\x0E\0\xBD\x0E\0\xC8\x0E\0\xCF\x0E\0\x18\x0F\0\x1A\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0q\x0F\0\x7F\x0F\0\x80\x0F\0\x85\x0F\0\x86\x0F\0\x88\x0F\0\x8D\x0F\0\x98\x0F\0\x99\x0F\0\xBD\x0F\0\xC6\x0F\0\xC7\x0F\0-\x10\x001\x10\x002\x10\08\x10\09\x10\0;\x10\0=\x10\0?\x10\0X\x10\0Z\x10\0^\x10\0a\x10\0q\x10\0u\x10\0\x82\x10\0\x83\x10\0\x85\x10\0\x87\x10\0\x8D\x10\0\x8E\x10\0\x9D\x10\0\x9E\x10\0]\x13\0`\x13\0\x12\x17\0\x16\x17\x002\x17\x005\x17\0R\x17\0T\x17\0r\x17\0t\x17\0\xB4\x17\0\xB6\x17\0\xB7\x17\0\xBE\x17\0\xC6\x17\0\xC7\x17\0\xC9\x17\0\xD4\x17\0\xDD\x17\0\xDE\x17\0\x0B\x18\0\x0E\x18\0\x0F\x18\0\x10\x18\0\x85\x18\0\x87\x18\0\xA9\x18\0\xAA\x18\0 \x19\0#\x19\0'\x19\0)\x19\x002\x19\x003\x19\09\x19\0<\x19\0\x17\x1A\0\x19\x1A\0\x1B\x1A\0\x1C\x1A\0V\x1A\0W\x1A\0X\x1A\0_\x1A\0`\x1A\0a\x1A\0b\x1A\0c\x1A\0e\x1A\0m\x1A\0s\x1A\0}\x1A\0\x7F\x1A\0\x80\x1A\0\xB0\x1A\0\xCF\x1A\0\0\x1B\0\x04\x1B\x004\x1B\0>\x1B\0B\x1B\0E\x1B\0k\x1B\0t\x1B\0\x80\x1B\0\x82\x1B\0\xA2\x1B\0\xA6\x1B\0\xA8\x1B\0\xAE\x1B\0\xE6\x1B\0\xE7\x1B\0\xE8\x1B\0\xEA\x1B\0\xED\x1B\0\xEE\x1B\0\xEF\x1B\0\xF4\x1B\0,\x1C\x004\x1C\x006\x1C\08\x1C\0\xD0\x1C\0\xD3\x1C\0\xD4\x1C\0\xE1\x1C\0\xE2\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF8\x1C\0\xFA\x1C\0\xC0\x1D\0\0\x1E\0\x0C \0\r \0\xD0 \0\xF1 \0\xEF,\0\xF2,\0\x7F-\0\x80-\0\xE0-\0\0.\0*0\x0000\0\x990\0\x9B0\0o\xA6\0s\xA6\0t\xA6\0~\xA6\0\x9E\xA6\0\xA0\xA6\0\xF0\xA6\0\xF2\xA6\0\x02\xA8\0\x03\xA8\0\x06\xA8\0\x07\xA8\0\x0B\xA8\0\x0C\xA8\0%\xA8\0'\xA8\0,\xA8\0-\xA8\0\xC4\xA8\0\xC6\xA8\0\xE0\xA8\0\xF2\xA8\0\xFF\xA8\0\0\xA9\0&\xA9\0.\xA9\0G\xA9\0R\xA9\0S\xA9\0T\xA9\0\x80\xA9\0\x83\xA9\0\xB3\xA9\0\xB4\xA9\0\xB6\xA9\0\xBA\xA9\0\xBC\xA9\0\xBE\xA9\0\xC0\xA9\0\xC1\xA9\0\xE5\xA9\0\xE6\xA9\0)\xAA\0/\xAA\x001\xAA\x003\xAA\x005\xAA\x007\xAA\0C\xAA\0D\xAA\0L\xAA\0M\xAA\0|\xAA\0}\xAA\0\xB0\xAA\0\xB1\xAA\0\xB2\xAA\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBE\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xEC\xAA\0\xEE\xAA\0\xF6\xAA\0\xF7\xAA\0\xE5\xAB\0\xE6\xAB\0\xE8\xAB\0\xE9\xAB\0\xED\xAB\0\xEE\xAB\0\x1E\xFB\0\x1F\xFB\0\0\xFE\0\x10\xFE\0 \xFE\x000\xFE\0\x9E\xFF\0\xA0\xFF\0\xFD\x01\x01\xFE\x01\x01\xE0\x02\x01\xE1\x02\x01v\x03\x01{\x03\x01\x01\n\x01\x04\n\x01\x05\n\x01\x07\n\x01\x0C\n\x01\x10\n\x018\n\x01;\n\x01?\n\x01@\n\x01\xE5\n\x01\xE7\n\x01$\r\x01(\r\x01i\r\x01n\r\x01\xAB\x0E\x01\xAD\x0E\x01\xFC\x0E\x01\0\x0F\x01F\x0F\x01Q\x0F\x01\x82\x0F\x01\x86\x0F\x01\x01\x10\x01\x02\x10\x018\x10\x01G\x10\x01p\x10\x01q\x10\x01s\x10\x01u\x10\x01\x7F\x10\x01\x82\x10\x01\xB3\x10\x01\xB7\x10\x01\xB9\x10\x01\xBB\x10\x01\xC2\x10\x01\xC3\x10\x01\0\x11\x01\x03\x11\x01'\x11\x01,\x11\x01-\x11\x015\x11\x01s\x11\x01t\x11\x01\x80\x11\x01\x82\x11\x01\xB6\x11\x01\xBF\x11\x01\xC0\x11\x01\xC1\x11\x01\xC9\x11\x01\xCD\x11\x01\xCF\x11\x01\xD0\x11\x01/\x12\x012\x12\x014\x12\x018\x12\x01>\x12\x01?\x12\x01A\x12\x01B\x12\x01\xDF\x12\x01\xE0\x12\x01\xE3\x12\x01\xEB\x12\x01\0\x13\x01\x02\x13\x01;\x13\x01=\x13\x01>\x13\x01?\x13\x01@\x13\x01A\x13\x01M\x13\x01N\x13\x01W\x13\x01X\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\xB8\x13\x01\xB9\x13\x01\xBB\x13\x01\xC1\x13\x01\xC2\x13\x01\xC3\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xCA\x13\x01\xCE\x13\x01\xD1\x13\x01\xD2\x13\x01\xD3\x13\x01\xE1\x13\x01\xE3\x13\x018\x14\x01@\x14\x01B\x14\x01E\x14\x01F\x14\x01G\x14\x01^\x14\x01_\x14\x01\xB0\x14\x01\xB1\x14\x01\xB3\x14\x01\xB9\x14\x01\xBA\x14\x01\xBB\x14\x01\xBD\x14\x01\xBE\x14\x01\xBF\x14\x01\xC1\x14\x01\xC2\x14\x01\xC4\x14\x01\xAF\x15\x01\xB0\x15\x01\xB2\x15\x01\xB6\x15\x01\xBC\x15\x01\xBE\x15\x01\xBF\x15\x01\xC1\x15\x01\xDC\x15\x01\xDE\x15\x013\x16\x01;\x16\x01=\x16\x01>\x16\x01?\x16\x01A\x16\x01\xAB\x16\x01\xAC\x16\x01\xAD\x16\x01\xAE\x16\x01\xB0\x16\x01\xB8\x16\x01\x1D\x17\x01\x1E\x17\x01\x1F\x17\x01 \x17\x01\"\x17\x01&\x17\x01'\x17\x01,\x17\x01/\x18\x018\x18\x019\x18\x01;\x18\x010\x19\x011\x19\x01;\x19\x01?\x19\x01C\x19\x01D\x19\x01\xD4\x19\x01\xD8\x19\x01\xDA\x19\x01\xDC\x19\x01\xE0\x19\x01\xE1\x19\x01\x01\x1A\x01\x0B\x1A\x013\x1A\x019\x1A\x01;\x1A\x01?\x1A\x01G\x1A\x01H\x1A\x01Q\x1A\x01W\x1A\x01Y\x1A\x01\\\x1A\x01\x8A\x1A\x01\x97\x1A\x01\x98\x1A\x01\x9A\x1A\x010\x1C\x017\x1C\x018\x1C\x01>\x1C\x01?\x1C\x01@\x1C\x01\x92\x1C\x01\xA8\x1C\x01\xAA\x1C\x01\xB1\x1C\x01\xB2\x1C\x01\xB4\x1C\x01\xB5\x1C\x01\xB7\x1C\x011\x1D\x017\x1D\x01:\x1D\x01;\x1D\x01<\x1D\x01>\x1D\x01?\x1D\x01F\x1D\x01G\x1D\x01H\x1D\x01\x90\x1D\x01\x92\x1D\x01\x95\x1D\x01\x96\x1D\x01\x97\x1D\x01\x98\x1D\x01\xF3\x1E\x01\xF5\x1E\x01\0\x1F\x01\x02\x1F\x016\x1F\x01;\x1F\x01@\x1F\x01C\x1F\x01Z\x1F\x01[\x1F\x01@4\x01A4\x01G4\x01V4\x01\x1Ea\x01*a\x01-a\x010a\x01\xF0j\x01\xF5j\x010k\x017k\x01Oo\x01Po\x01\x8Fo\x01\x93o\x01\xE4o\x01\xE5o\x01\xF0o\x01\xF2o\x01\x9D\xBC\x01\x9F\xBC\x01\0\xCF\x01.\xCF\x010\xCF\x01G\xCF\x01e\xD1\x01j\xD1\x01m\xD1\x01s\xD1\x01{\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x01B\xD2\x01E\xD2\x01\0\xDA\x017\xDA\x01;\xDA\x01m\xDA\x01u\xDA\x01v\xDA\x01\x84\xDA\x01\x85\xDA\x01\x9B\xDA\x01\xA0\xDA\x01\xA1\xDA\x01\xB0\xDA\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x01\x8F\xE0\x01\x90\xE0\x010\xE1\x017\xE1\x01\xAE\xE2\x01\xAF\xE2\x01\xEC\xE2\x01\xF0\xE2\x01\xEC\xE4\x01\xF0\xE4\x01\xEE\xE5\x01\xF0\xE5\x01\xD0\xE8\x01\xD7\xE8\x01D\xE9\x01K\xE9\x01 \0\x0E\x80\0\x0E\0\x01\x0E\xF0\x01\x0E") }, 2193u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryGraphemeExtendV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryGraphemeExtendV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_GRAPHEME_EXTEND_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphemeExtendV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_grapheme_extend_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryGraphemeExtendV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_grapheme_extend_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryGraphemeExtendV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphemeExtendV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_grapheme_extend_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryGraphemeExtendV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphemeExtendV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryGraphemeExtendV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_grapheme_extend_v1 as impl_property_binary_grapheme_extend_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_grapheme_link_v1.rs.data b/vendor/icu_properties_data/data/property_binary_grapheme_link_v1.rs.data
new file mode 100644
index 00000000..bee6fa63
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_grapheme_link_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryGraphemeLinkV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 380B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_grapheme_link_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_GRAPHEME_LINK_V1: &'static <icu::properties::provider::PropertyBinaryGraphemeLinkV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"M\t\0N\t\0\xCD\t\0\xCE\t\0M\n\0N\n\0\xCD\n\0\xCE\n\0M\x0B\0N\x0B\0\xCD\x0B\0\xCE\x0B\0M\x0C\0N\x0C\0\xCD\x0C\0\xCE\x0C\0;\r\0=\r\0M\r\0N\r\0\xCA\r\0\xCB\r\0:\x0E\0;\x0E\0\xBA\x0E\0\xBB\x0E\0\x84\x0F\0\x85\x0F\09\x10\0;\x10\0\x14\x17\0\x16\x17\x004\x17\x005\x17\0\xD2\x17\0\xD3\x17\0`\x1A\0a\x1A\0D\x1B\0E\x1B\0\xAA\x1B\0\xAC\x1B\0\xF2\x1B\0\xF4\x1B\0\x7F-\0\x80-\0\x06\xA8\0\x07\xA8\0,\xA8\0-\xA8\0\xC4\xA8\0\xC5\xA8\0S\xA9\0T\xA9\0\xC0\xA9\0\xC1\xA9\0\xF6\xAA\0\xF7\xAA\0\xED\xAB\0\xEE\xAB\0?\n\x01@\n\x01F\x10\x01G\x10\x01p\x10\x01q\x10\x01\x7F\x10\x01\x80\x10\x01\xB9\x10\x01\xBA\x10\x013\x11\x015\x11\x01\xC0\x11\x01\xC1\x11\x015\x12\x016\x12\x01\xEA\x12\x01\xEB\x12\x01M\x13\x01N\x13\x01\xCE\x13\x01\xD1\x13\x01B\x14\x01C\x14\x01\xC2\x14\x01\xC3\x14\x01\xBF\x15\x01\xC0\x15\x01?\x16\x01@\x16\x01\xB6\x16\x01\xB7\x16\x01+\x17\x01,\x17\x019\x18\x01:\x18\x01=\x19\x01?\x19\x01\xE0\x19\x01\xE1\x19\x014\x1A\x015\x1A\x01G\x1A\x01H\x1A\x01\x99\x1A\x01\x9A\x1A\x01?\x1C\x01@\x1C\x01D\x1D\x01F\x1D\x01\x97\x1D\x01\x98\x1D\x01A\x1F\x01C\x1F\x01/a\x010a\x01") }, 69u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryGraphemeLinkV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryGraphemeLinkV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_GRAPHEME_LINK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphemeLinkV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_grapheme_link_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryGraphemeLinkV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_grapheme_link_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryGraphemeLinkV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphemeLinkV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_grapheme_link_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryGraphemeLinkV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryGraphemeLinkV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryGraphemeLinkV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_grapheme_link_v1 as impl_property_binary_grapheme_link_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_hex_digit_v1.rs.data b/vendor/icu_properties_data/data/property_binary_hex_digit_v1.rs.data
new file mode 100644
index 00000000..82b673e2
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_hex_digit_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryHexDigitV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 68B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_hex_digit_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_HEX_DIGIT_V1: &'static <icu::properties::provider::PropertyBinaryHexDigitV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"0\0\0:\0\0A\0\0G\0\0a\0\0g\0\0\x10\xFF\0\x1A\xFF\0!\xFF\0'\xFF\0A\xFF\0G\xFF\0") }, 44u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryHexDigitV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryHexDigitV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_HEX_DIGIT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryHexDigitV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_hex_digit_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryHexDigitV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_hex_digit_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryHexDigitV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryHexDigitV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_hex_digit_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryHexDigitV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryHexDigitV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryHexDigitV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_hex_digit_v1 as impl_property_binary_hex_digit_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_hyphen_v1.rs.data b/vendor/icu_properties_data/data/property_binary_hyphen_v1.rs.data
new file mode 100644
index 00000000..ab2cd716
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_hyphen_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryHyphenV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 92B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_hyphen_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_HYPHEN_V1: &'static <icu::properties::provider::PropertyBinaryHyphenV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"-\0\0.\0\0\xAD\0\0\xAE\0\0\x8A\x05\0\x8B\x05\0\x06\x18\0\x07\x18\0\x10 \0\x12 \0\x17.\0\x18.\0\xFB0\0\xFC0\0c\xFE\0d\xFE\0\r\xFF\0\x0E\xFF\0e\xFF\0f\xFF\0") }, 11u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryHyphenV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryHyphenV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_HYPHEN_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryHyphenV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_hyphen_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryHyphenV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_hyphen_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryHyphenV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryHyphenV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_hyphen_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryHyphenV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryHyphenV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryHyphenV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_hyphen_v1 as impl_property_binary_hyphen_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_id_continue_v1.rs.data b/vendor/icu_properties_data/data/property_binary_id_continue_v1.rs.data
new file mode 100644
index 00000000..536e6e6f
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_id_continue_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryIdContinueV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4790B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_id_continue_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_ID_CONTINUE_V1: &'static <icu::properties::provider::PropertyBinaryIdContinueV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"0\0\0:\0\0A\0\0[\0\0_\0\0`\0\0a\0\0{\0\0\xAA\0\0\xAB\0\0\xB5\0\0\xB6\0\0\xB7\0\0\xB8\0\0\xBA\0\0\xBB\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\0\xC2\x02\0\xC6\x02\0\xD2\x02\0\xE0\x02\0\xE5\x02\0\xEC\x02\0\xED\x02\0\xEE\x02\0\xEF\x02\0\0\x03\0u\x03\0v\x03\0x\x03\0z\x03\0~\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\0\xF6\x03\0\xF7\x03\0\x82\x04\0\x83\x04\0\x88\x04\0\x8A\x04\x000\x05\x001\x05\0W\x05\0Y\x05\0Z\x05\0`\x05\0\x89\x05\0\x91\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\xD0\x05\0\xEB\x05\0\xEF\x05\0\xF3\x05\0\x10\x06\0\x1B\x06\0 \x06\0j\x06\0n\x06\0\xD4\x06\0\xD5\x06\0\xDD\x06\0\xDF\x06\0\xE9\x06\0\xEA\x06\0\xFD\x06\0\xFF\x06\0\0\x07\0\x10\x07\0K\x07\0M\x07\0\xB2\x07\0\xC0\x07\0\xF6\x07\0\xFA\x07\0\xFB\x07\0\xFD\x07\0\xFE\x07\0\0\x08\0.\x08\0@\x08\0\\\x08\0`\x08\0k\x08\0p\x08\0\x88\x08\0\x89\x08\0\x8F\x08\0\x97\x08\0\xE2\x08\0\xE3\x08\0d\t\0f\t\0p\t\0q\t\0\x84\t\0\x85\t\0\x8D\t\0\x8F\t\0\x91\t\0\x93\t\0\xA9\t\0\xAA\t\0\xB1\t\0\xB2\t\0\xB3\t\0\xB6\t\0\xBA\t\0\xBC\t\0\xC5\t\0\xC7\t\0\xC9\t\0\xCB\t\0\xCF\t\0\xD7\t\0\xD8\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE4\t\0\xE6\t\0\xF2\t\0\xFC\t\0\xFD\t\0\xFE\t\0\xFF\t\0\x01\n\0\x04\n\0\x05\n\0\x0B\n\0\x0F\n\0\x11\n\0\x13\n\0)\n\0*\n\x001\n\x002\n\x004\n\x005\n\x007\n\08\n\0:\n\0<\n\0=\n\0>\n\0C\n\0G\n\0I\n\0K\n\0N\n\0Q\n\0R\n\0Y\n\0]\n\0^\n\0_\n\0f\n\0v\n\0\x81\n\0\x84\n\0\x85\n\0\x8E\n\0\x8F\n\0\x92\n\0\x93\n\0\xA9\n\0\xAA\n\0\xB1\n\0\xB2\n\0\xB4\n\0\xB5\n\0\xBA\n\0\xBC\n\0\xC6\n\0\xC7\n\0\xCA\n\0\xCB\n\0\xCE\n\0\xD0\n\0\xD1\n\0\xE0\n\0\xE4\n\0\xE6\n\0\xF0\n\0\xF9\n\0\0\x0B\0\x01\x0B\0\x04\x0B\0\x05\x0B\0\r\x0B\0\x0F\x0B\0\x11\x0B\0\x13\x0B\0)\x0B\0*\x0B\x001\x0B\x002\x0B\x004\x0B\x005\x0B\0:\x0B\0<\x0B\0E\x0B\0G\x0B\0I\x0B\0K\x0B\0N\x0B\0U\x0B\0X\x0B\0\\\x0B\0^\x0B\0_\x0B\0d\x0B\0f\x0B\0p\x0B\0q\x0B\0r\x0B\0\x82\x0B\0\x84\x0B\0\x85\x0B\0\x8B\x0B\0\x8E\x0B\0\x91\x0B\0\x92\x0B\0\x96\x0B\0\x99\x0B\0\x9B\x0B\0\x9C\x0B\0\x9D\x0B\0\x9E\x0B\0\xA0\x0B\0\xA3\x0B\0\xA5\x0B\0\xA8\x0B\0\xAB\x0B\0\xAE\x0B\0\xBA\x0B\0\xBE\x0B\0\xC3\x0B\0\xC6\x0B\0\xC9\x0B\0\xCA\x0B\0\xCE\x0B\0\xD0\x0B\0\xD1\x0B\0\xD7\x0B\0\xD8\x0B\0\xE6\x0B\0\xF0\x0B\0\0\x0C\0\r\x0C\0\x0E\x0C\0\x11\x0C\0\x12\x0C\0)\x0C\0*\x0C\0:\x0C\0<\x0C\0E\x0C\0F\x0C\0I\x0C\0J\x0C\0N\x0C\0U\x0C\0W\x0C\0X\x0C\0[\x0C\0]\x0C\0^\x0C\0`\x0C\0d\x0C\0f\x0C\0p\x0C\0\x80\x0C\0\x84\x0C\0\x85\x0C\0\x8D\x0C\0\x8E\x0C\0\x91\x0C\0\x92\x0C\0\xA9\x0C\0\xAA\x0C\0\xB4\x0C\0\xB5\x0C\0\xBA\x0C\0\xBC\x0C\0\xC5\x0C\0\xC6\x0C\0\xC9\x0C\0\xCA\x0C\0\xCE\x0C\0\xD5\x0C\0\xD7\x0C\0\xDD\x0C\0\xDF\x0C\0\xE0\x0C\0\xE4\x0C\0\xE6\x0C\0\xF0\x0C\0\xF1\x0C\0\xF4\x0C\0\0\r\0\r\r\0\x0E\r\0\x11\r\0\x12\r\0E\r\0F\r\0I\r\0J\r\0O\r\0T\r\0X\r\0_\r\0d\r\0f\r\0p\r\0z\r\0\x80\r\0\x81\r\0\x84\r\0\x85\r\0\x97\r\0\x9A\r\0\xB2\r\0\xB3\r\0\xBC\r\0\xBD\r\0\xBE\r\0\xC0\r\0\xC7\r\0\xCA\r\0\xCB\r\0\xCF\r\0\xD5\r\0\xD6\r\0\xD7\r\0\xD8\r\0\xE0\r\0\xE6\r\0\xF0\r\0\xF2\r\0\xF4\r\0\x01\x0E\0;\x0E\0@\x0E\0O\x0E\0P\x0E\0Z\x0E\0\x81\x0E\0\x83\x0E\0\x84\x0E\0\x85\x0E\0\x86\x0E\0\x8B\x0E\0\x8C\x0E\0\xA4\x0E\0\xA5\x0E\0\xA6\x0E\0\xA7\x0E\0\xBE\x0E\0\xC0\x0E\0\xC5\x0E\0\xC6\x0E\0\xC7\x0E\0\xC8\x0E\0\xCF\x0E\0\xD0\x0E\0\xDA\x0E\0\xDC\x0E\0\xE0\x0E\0\0\x0F\0\x01\x0F\0\x18\x0F\0\x1A\x0F\0 \x0F\0*\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0>\x0F\0H\x0F\0I\x0F\0m\x0F\0q\x0F\0\x85\x0F\0\x86\x0F\0\x98\x0F\0\x99\x0F\0\xBD\x0F\0\xC6\x0F\0\xC7\x0F\0\0\x10\0J\x10\0P\x10\0\x9E\x10\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0\xFB\x10\0\xFC\x10\0I\x12\0J\x12\0N\x12\0P\x12\0W\x12\0X\x12\0Y\x12\0Z\x12\0^\x12\0`\x12\0\x89\x12\0\x8A\x12\0\x8E\x12\0\x90\x12\0\xB1\x12\0\xB2\x12\0\xB6\x12\0\xB8\x12\0\xBF\x12\0\xC0\x12\0\xC1\x12\0\xC2\x12\0\xC6\x12\0\xC8\x12\0\xD7\x12\0\xD8\x12\0\x11\x13\0\x12\x13\0\x16\x13\0\x18\x13\0[\x13\0]\x13\0`\x13\0i\x13\0r\x13\0\x80\x13\0\x90\x13\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\x01\x14\0m\x16\0o\x16\0\x80\x16\0\x81\x16\0\x9B\x16\0\xA0\x16\0\xEB\x16\0\xEE\x16\0\xF9\x16\0\0\x17\0\x16\x17\0\x1F\x17\x005\x17\0@\x17\0T\x17\0`\x17\0m\x17\0n\x17\0q\x17\0r\x17\0t\x17\0\x80\x17\0\xD4\x17\0\xD7\x17\0\xD8\x17\0\xDC\x17\0\xDE\x17\0\xE0\x17\0\xEA\x17\0\x0B\x18\0\x0E\x18\0\x0F\x18\0\x1A\x18\0 \x18\0y\x18\0\x80\x18\0\xAB\x18\0\xB0\x18\0\xF6\x18\0\0\x19\0\x1F\x19\0 \x19\0,\x19\x000\x19\0<\x19\0F\x19\0n\x19\0p\x19\0u\x19\0\x80\x19\0\xAC\x19\0\xB0\x19\0\xCA\x19\0\xD0\x19\0\xDB\x19\0\0\x1A\0\x1C\x1A\0 \x1A\0_\x1A\0`\x1A\0}\x1A\0\x7F\x1A\0\x8A\x1A\0\x90\x1A\0\x9A\x1A\0\xA7\x1A\0\xA8\x1A\0\xB0\x1A\0\xBE\x1A\0\xBF\x1A\0\xCF\x1A\0\0\x1B\0M\x1B\0P\x1B\0Z\x1B\0k\x1B\0t\x1B\0\x80\x1B\0\xF4\x1B\0\0\x1C\08\x1C\0@\x1C\0J\x1C\0M\x1C\0~\x1C\0\x80\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0\xD0\x1C\0\xD3\x1C\0\xD4\x1C\0\xFB\x1C\0\0\x1D\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xCD\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xE0\x1F\0\xED\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFD\x1F\0\x0C \0\x0E \0? \0A \0T \0U \0q \0r \0\x7F \0\x80 \0\x90 \0\x9D \0\xD0 \0\xDD \0\xE1 \0\xE2 \0\xE5 \0\xF1 \0\x02!\0\x03!\0\x07!\0\x08!\0\n!\0\x14!\0\x15!\0\x16!\0\x18!\0\x1E!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0:!\0<!\0@!\0E!\0J!\0N!\0O!\0`!\0\x89!\0\0,\0\xE5,\0\xEB,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\x000-\0h-\0o-\0p-\0\x7F-\0\x97-\0\xA0-\0\xA7-\0\xA8-\0\xAF-\0\xB0-\0\xB7-\0\xB8-\0\xBF-\0\xC0-\0\xC7-\0\xC8-\0\xCF-\0\xD0-\0\xD7-\0\xD8-\0\xDF-\0\xE0-\0\0.\0\x050\0\x080\0!0\x0000\x0010\x0060\080\0=0\0A0\0\x970\0\x990\0\xA00\0\xA10\0\x001\0\x051\x0001\x0011\0\x8F1\0\xA01\0\xC01\0\xF01\0\x002\0\x004\0\xC0M\0\0N\0\x8D\xA4\0\xD0\xA4\0\xFE\xA4\0\0\xA5\0\r\xA6\0\x10\xA6\0,\xA6\0@\xA6\0p\xA6\0t\xA6\0~\xA6\0\x7F\xA6\0\xF2\xA6\0\x17\xA7\0 \xA7\0\"\xA7\0\x89\xA7\0\x8B\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xDD\xA7\0\xF2\xA7\0(\xA8\0,\xA8\0-\xA8\0@\xA8\0t\xA8\0\x80\xA8\0\xC6\xA8\0\xD0\xA8\0\xDA\xA8\0\xE0\xA8\0\xF8\xA8\0\xFB\xA8\0\xFC\xA8\0\xFD\xA8\0.\xA9\x000\xA9\0T\xA9\0`\xA9\0}\xA9\0\x80\xA9\0\xC1\xA9\0\xCF\xA9\0\xDA\xA9\0\xE0\xA9\0\xFF\xA9\0\0\xAA\x007\xAA\0@\xAA\0N\xAA\0P\xAA\0Z\xAA\0`\xAA\0w\xAA\0z\xAA\0\xC3\xAA\0\xDB\xAA\0\xDE\xAA\0\xE0\xAA\0\xF0\xAA\0\xF2\xAA\0\xF7\xAA\0\x01\xAB\0\x07\xAB\0\t\xAB\0\x0F\xAB\0\x11\xAB\0\x17\xAB\0 \xAB\0'\xAB\0(\xAB\0/\xAB\x000\xAB\0[\xAB\0\\\xAB\0j\xAB\0p\xAB\0\xEB\xAB\0\xEC\xAB\0\xEE\xAB\0\xF0\xAB\0\xFA\xAB\0\0\xAC\0\xA4\xD7\0\xB0\xD7\0\xC7\xD7\0\xCB\xD7\0\xFC\xD7\0\0\xF9\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\0)\xFB\0*\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xB2\xFB\0\xD3\xFB\0>\xFD\0P\xFD\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xF0\xFD\0\xFC\xFD\0\0\xFE\0\x10\xFE\0 \xFE\x000\xFE\x003\xFE\x005\xFE\0M\xFE\0P\xFE\0p\xFE\0u\xFE\0v\xFE\0\xFD\xFE\0\x10\xFF\0\x1A\xFF\0!\xFF\0;\xFF\0?\xFF\0@\xFF\0A\xFF\0[\xFF\0e\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\0\0\x01\x0C\0\x01\r\0\x01'\0\x01(\0\x01;\0\x01<\0\x01>\0\x01?\0\x01N\0\x01P\0\x01^\0\x01\x80\0\x01\xFB\0\x01@\x01\x01u\x01\x01\xFD\x01\x01\xFE\x01\x01\x80\x02\x01\x9D\x02\x01\xA0\x02\x01\xD1\x02\x01\xE0\x02\x01\xE1\x02\x01\0\x03\x01 \x03\x01-\x03\x01K\x03\x01P\x03\x01{\x03\x01\x80\x03\x01\x9E\x03\x01\xA0\x03\x01\xC4\x03\x01\xC8\x03\x01\xD0\x03\x01\xD1\x03\x01\xD6\x03\x01\0\x04\x01\x9E\x04\x01\xA0\x04\x01\xAA\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01\0\x05\x01(\x05\x010\x05\x01d\x05\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x05\x01\xF4\x05\x01\0\x06\x017\x07\x01@\x07\x01V\x07\x01`\x07\x01h\x07\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\0\x08\x01\x06\x08\x01\x08\x08\x01\t\x08\x01\n\x08\x016\x08\x017\x08\x019\x08\x01<\x08\x01=\x08\x01?\x08\x01V\x08\x01`\x08\x01w\x08\x01\x80\x08\x01\x9F\x08\x01\xE0\x08\x01\xF3\x08\x01\xF4\x08\x01\xF6\x08\x01\0\t\x01\x16\t\x01 \t\x01:\t\x01\x80\t\x01\xB8\t\x01\xBE\t\x01\xC0\t\x01\0\n\x01\x04\n\x01\x05\n\x01\x07\n\x01\x0C\n\x01\x14\n\x01\x15\n\x01\x18\n\x01\x19\n\x016\n\x018\n\x01;\n\x01?\n\x01@\n\x01`\n\x01}\n\x01\x80\n\x01\x9D\n\x01\xC0\n\x01\xC8\n\x01\xC9\n\x01\xE7\n\x01\0\x0B\x016\x0B\x01@\x0B\x01V\x0B\x01`\x0B\x01s\x0B\x01\x80\x0B\x01\x92\x0B\x01\0\x0C\x01I\x0C\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01\0\r\x01(\r\x010\r\x01:\r\x01@\r\x01f\r\x01i\r\x01n\r\x01o\r\x01\x86\r\x01\x80\x0E\x01\xAA\x0E\x01\xAB\x0E\x01\xAD\x0E\x01\xB0\x0E\x01\xB2\x0E\x01\xC2\x0E\x01\xC5\x0E\x01\xFC\x0E\x01\x1D\x0F\x01'\x0F\x01(\x0F\x010\x0F\x01Q\x0F\x01p\x0F\x01\x86\x0F\x01\xB0\x0F\x01\xC5\x0F\x01\xE0\x0F\x01\xF7\x0F\x01\0\x10\x01G\x10\x01f\x10\x01v\x10\x01\x7F\x10\x01\xBB\x10\x01\xC2\x10\x01\xC3\x10\x01\xD0\x10\x01\xE9\x10\x01\xF0\x10\x01\xFA\x10\x01\0\x11\x015\x11\x016\x11\x01@\x11\x01D\x11\x01H\x11\x01P\x11\x01t\x11\x01v\x11\x01w\x11\x01\x80\x11\x01\xC5\x11\x01\xC9\x11\x01\xCD\x11\x01\xCE\x11\x01\xDB\x11\x01\xDC\x11\x01\xDD\x11\x01\0\x12\x01\x12\x12\x01\x13\x12\x018\x12\x01>\x12\x01B\x12\x01\x80\x12\x01\x87\x12\x01\x88\x12\x01\x89\x12\x01\x8A\x12\x01\x8E\x12\x01\x8F\x12\x01\x9E\x12\x01\x9F\x12\x01\xA9\x12\x01\xB0\x12\x01\xEB\x12\x01\xF0\x12\x01\xFA\x12\x01\0\x13\x01\x04\x13\x01\x05\x13\x01\r\x13\x01\x0F\x13\x01\x11\x13\x01\x13\x13\x01)\x13\x01*\x13\x011\x13\x012\x13\x014\x13\x015\x13\x01:\x13\x01;\x13\x01E\x13\x01G\x13\x01I\x13\x01K\x13\x01N\x13\x01P\x13\x01Q\x13\x01W\x13\x01X\x13\x01]\x13\x01d\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\x80\x13\x01\x8A\x13\x01\x8B\x13\x01\x8C\x13\x01\x8E\x13\x01\x8F\x13\x01\x90\x13\x01\xB6\x13\x01\xB7\x13\x01\xC1\x13\x01\xC2\x13\x01\xC3\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xCB\x13\x01\xCC\x13\x01\xD4\x13\x01\xE1\x13\x01\xE3\x13\x01\0\x14\x01K\x14\x01P\x14\x01Z\x14\x01^\x14\x01b\x14\x01\x80\x14\x01\xC6\x14\x01\xC7\x14\x01\xC8\x14\x01\xD0\x14\x01\xDA\x14\x01\x80\x15\x01\xB6\x15\x01\xB8\x15\x01\xC1\x15\x01\xD8\x15\x01\xDE\x15\x01\0\x16\x01A\x16\x01D\x16\x01E\x16\x01P\x16\x01Z\x16\x01\x80\x16\x01\xB9\x16\x01\xC0\x16\x01\xCA\x16\x01\xD0\x16\x01\xE4\x16\x01\0\x17\x01\x1B\x17\x01\x1D\x17\x01,\x17\x010\x17\x01:\x17\x01@\x17\x01G\x17\x01\0\x18\x01;\x18\x01\xA0\x18\x01\xEA\x18\x01\xFF\x18\x01\x07\x19\x01\t\x19\x01\n\x19\x01\x0C\x19\x01\x14\x19\x01\x15\x19\x01\x17\x19\x01\x18\x19\x016\x19\x017\x19\x019\x19\x01;\x19\x01D\x19\x01P\x19\x01Z\x19\x01\xA0\x19\x01\xA8\x19\x01\xAA\x19\x01\xD8\x19\x01\xDA\x19\x01\xE2\x19\x01\xE3\x19\x01\xE5\x19\x01\0\x1A\x01?\x1A\x01G\x1A\x01H\x1A\x01P\x1A\x01\x9A\x1A\x01\x9D\x1A\x01\x9E\x1A\x01\xB0\x1A\x01\xF9\x1A\x01\xC0\x1B\x01\xE1\x1B\x01\xF0\x1B\x01\xFA\x1B\x01\0\x1C\x01\t\x1C\x01\n\x1C\x017\x1C\x018\x1C\x01A\x1C\x01P\x1C\x01Z\x1C\x01r\x1C\x01\x90\x1C\x01\x92\x1C\x01\xA8\x1C\x01\xA9\x1C\x01\xB7\x1C\x01\0\x1D\x01\x07\x1D\x01\x08\x1D\x01\n\x1D\x01\x0B\x1D\x017\x1D\x01:\x1D\x01;\x1D\x01<\x1D\x01>\x1D\x01?\x1D\x01H\x1D\x01P\x1D\x01Z\x1D\x01`\x1D\x01f\x1D\x01g\x1D\x01i\x1D\x01j\x1D\x01\x8F\x1D\x01\x90\x1D\x01\x92\x1D\x01\x93\x1D\x01\x99\x1D\x01\xA0\x1D\x01\xAA\x1D\x01\xE0\x1E\x01\xF7\x1E\x01\0\x1F\x01\x11\x1F\x01\x12\x1F\x01;\x1F\x01>\x1F\x01C\x1F\x01P\x1F\x01[\x1F\x01\xB0\x1F\x01\xB1\x1F\x01\0 \x01\x9A#\x01\0$\x01o$\x01\x80$\x01D%\x01\x90/\x01\xF1/\x01\x000\x0104\x01@4\x01V4\x01`4\x01\xFBC\x01\0D\x01GF\x01\0a\x01:a\x01\0h\x019j\x01@j\x01_j\x01`j\x01jj\x01pj\x01\xBFj\x01\xC0j\x01\xCAj\x01\xD0j\x01\xEEj\x01\xF0j\x01\xF5j\x01\0k\x017k\x01@k\x01Dk\x01Pk\x01Zk\x01ck\x01xk\x01}k\x01\x90k\x01@m\x01mm\x01pm\x01zm\x01@n\x01\x80n\x01\0o\x01Ko\x01Oo\x01\x88o\x01\x8Fo\x01\xA0o\x01\xE0o\x01\xE2o\x01\xE3o\x01\xE5o\x01\xF0o\x01\xF2o\x01\0p\x01\xF8\x87\x01\0\x88\x01\xD6\x8C\x01\xFF\x8C\x01\t\x8D\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\0\xB0\x01#\xB1\x012\xB1\x013\xB1\x01P\xB1\x01S\xB1\x01U\xB1\x01V\xB1\x01d\xB1\x01h\xB1\x01p\xB1\x01\xFC\xB2\x01\0\xBC\x01k\xBC\x01p\xBC\x01}\xBC\x01\x80\xBC\x01\x89\xBC\x01\x90\xBC\x01\x9A\xBC\x01\x9D\xBC\x01\x9F\xBC\x01\xF0\xCC\x01\xFA\xCC\x01\0\xCF\x01.\xCF\x010\xCF\x01G\xCF\x01e\xD1\x01j\xD1\x01m\xD1\x01s\xD1\x01{\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x01B\xD2\x01E\xD2\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xC1\xD6\x01\xC2\xD6\x01\xDB\xD6\x01\xDC\xD6\x01\xFB\xD6\x01\xFC\xD6\x01\x15\xD7\x01\x16\xD7\x015\xD7\x016\xD7\x01O\xD7\x01P\xD7\x01o\xD7\x01p\xD7\x01\x89\xD7\x01\x8A\xD7\x01\xA9\xD7\x01\xAA\xD7\x01\xC3\xD7\x01\xC4\xD7\x01\xCC\xD7\x01\xCE\xD7\x01\0\xD8\x01\0\xDA\x017\xDA\x01;\xDA\x01m\xDA\x01u\xDA\x01v\xDA\x01\x84\xDA\x01\x85\xDA\x01\x9B\xDA\x01\xA0\xDA\x01\xA1\xDA\x01\xB0\xDA\x01\0\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x010\xE0\x01n\xE0\x01\x8F\xE0\x01\x90\xE0\x01\0\xE1\x01-\xE1\x010\xE1\x01>\xE1\x01@\xE1\x01J\xE1\x01N\xE1\x01O\xE1\x01\x90\xE2\x01\xAF\xE2\x01\xC0\xE2\x01\xFA\xE2\x01\xD0\xE4\x01\xFA\xE4\x01\xD0\xE5\x01\xFB\xE5\x01\xE0\xE7\x01\xE7\xE7\x01\xE8\xE7\x01\xEC\xE7\x01\xED\xE7\x01\xEF\xE7\x01\xF0\xE7\x01\xFF\xE7\x01\0\xE8\x01\xC5\xE8\x01\xD0\xE8\x01\xD7\xE8\x01\0\xE9\x01L\xE9\x01P\xE9\x01Z\xE9\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\xF0\xFB\x01\xFA\xFB\x01\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\xF8\x02\x1E\xFA\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03\0\x01\x0E\xF0\x01\x0E") }, 144541u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryIdContinueV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryIdContinueV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_ID_CONTINUE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdContinueV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_id_continue_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryIdContinueV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_id_continue_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryIdContinueV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdContinueV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_id_continue_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryIdContinueV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdContinueV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryIdContinueV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_id_continue_v1 as impl_property_binary_id_continue_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_id_start_v1.rs.data b/vendor/icu_properties_data/data/property_binary_id_start_v1.rs.data
new file mode 100644
index 00000000..807aa1d1
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_id_start_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryIdStartV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4094B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_id_start_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_ID_START_V1: &'static <icu::properties::provider::PropertyBinaryIdStartV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0[\0\0a\0\0{\0\0\xAA\0\0\xAB\0\0\xB5\0\0\xB6\0\0\xBA\0\0\xBB\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\0\xC2\x02\0\xC6\x02\0\xD2\x02\0\xE0\x02\0\xE5\x02\0\xEC\x02\0\xED\x02\0\xEE\x02\0\xEF\x02\0p\x03\0u\x03\0v\x03\0x\x03\0z\x03\0~\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\0\xF6\x03\0\xF7\x03\0\x82\x04\0\x8A\x04\x000\x05\x001\x05\0W\x05\0Y\x05\0Z\x05\0`\x05\0\x89\x05\0\xD0\x05\0\xEB\x05\0\xEF\x05\0\xF3\x05\0 \x06\0K\x06\0n\x06\0p\x06\0q\x06\0\xD4\x06\0\xD5\x06\0\xD6\x06\0\xE5\x06\0\xE7\x06\0\xEE\x06\0\xF0\x06\0\xFA\x06\0\xFD\x06\0\xFF\x06\0\0\x07\0\x10\x07\0\x11\x07\0\x12\x07\x000\x07\0M\x07\0\xA6\x07\0\xB1\x07\0\xB2\x07\0\xCA\x07\0\xEB\x07\0\xF4\x07\0\xF6\x07\0\xFA\x07\0\xFB\x07\0\0\x08\0\x16\x08\0\x1A\x08\0\x1B\x08\0$\x08\0%\x08\0(\x08\0)\x08\0@\x08\0Y\x08\0`\x08\0k\x08\0p\x08\0\x88\x08\0\x89\x08\0\x8F\x08\0\xA0\x08\0\xCA\x08\0\x04\t\0:\t\0=\t\0>\t\0P\t\0Q\t\0X\t\0b\t\0q\t\0\x81\t\0\x85\t\0\x8D\t\0\x8F\t\0\x91\t\0\x93\t\0\xA9\t\0\xAA\t\0\xB1\t\0\xB2\t\0\xB3\t\0\xB6\t\0\xBA\t\0\xBD\t\0\xBE\t\0\xCE\t\0\xCF\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE2\t\0\xF0\t\0\xF2\t\0\xFC\t\0\xFD\t\0\x05\n\0\x0B\n\0\x0F\n\0\x11\n\0\x13\n\0)\n\0*\n\x001\n\x002\n\x004\n\x005\n\x007\n\08\n\0:\n\0Y\n\0]\n\0^\n\0_\n\0r\n\0u\n\0\x85\n\0\x8E\n\0\x8F\n\0\x92\n\0\x93\n\0\xA9\n\0\xAA\n\0\xB1\n\0\xB2\n\0\xB4\n\0\xB5\n\0\xBA\n\0\xBD\n\0\xBE\n\0\xD0\n\0\xD1\n\0\xE0\n\0\xE2\n\0\xF9\n\0\xFA\n\0\x05\x0B\0\r\x0B\0\x0F\x0B\0\x11\x0B\0\x13\x0B\0)\x0B\0*\x0B\x001\x0B\x002\x0B\x004\x0B\x005\x0B\0:\x0B\0=\x0B\0>\x0B\0\\\x0B\0^\x0B\0_\x0B\0b\x0B\0q\x0B\0r\x0B\0\x83\x0B\0\x84\x0B\0\x85\x0B\0\x8B\x0B\0\x8E\x0B\0\x91\x0B\0\x92\x0B\0\x96\x0B\0\x99\x0B\0\x9B\x0B\0\x9C\x0B\0\x9D\x0B\0\x9E\x0B\0\xA0\x0B\0\xA3\x0B\0\xA5\x0B\0\xA8\x0B\0\xAB\x0B\0\xAE\x0B\0\xBA\x0B\0\xD0\x0B\0\xD1\x0B\0\x05\x0C\0\r\x0C\0\x0E\x0C\0\x11\x0C\0\x12\x0C\0)\x0C\0*\x0C\0:\x0C\0=\x0C\0>\x0C\0X\x0C\0[\x0C\0]\x0C\0^\x0C\0`\x0C\0b\x0C\0\x80\x0C\0\x81\x0C\0\x85\x0C\0\x8D\x0C\0\x8E\x0C\0\x91\x0C\0\x92\x0C\0\xA9\x0C\0\xAA\x0C\0\xB4\x0C\0\xB5\x0C\0\xBA\x0C\0\xBD\x0C\0\xBE\x0C\0\xDD\x0C\0\xDF\x0C\0\xE0\x0C\0\xE2\x0C\0\xF1\x0C\0\xF3\x0C\0\x04\r\0\r\r\0\x0E\r\0\x11\r\0\x12\r\0;\r\0=\r\0>\r\0N\r\0O\r\0T\r\0W\r\0_\r\0b\r\0z\r\0\x80\r\0\x85\r\0\x97\r\0\x9A\r\0\xB2\r\0\xB3\r\0\xBC\r\0\xBD\r\0\xBE\r\0\xC0\r\0\xC7\r\0\x01\x0E\x001\x0E\x002\x0E\x004\x0E\0@\x0E\0G\x0E\0\x81\x0E\0\x83\x0E\0\x84\x0E\0\x85\x0E\0\x86\x0E\0\x8B\x0E\0\x8C\x0E\0\xA4\x0E\0\xA5\x0E\0\xA6\x0E\0\xA7\x0E\0\xB1\x0E\0\xB2\x0E\0\xB4\x0E\0\xBD\x0E\0\xBE\x0E\0\xC0\x0E\0\xC5\x0E\0\xC6\x0E\0\xC7\x0E\0\xDC\x0E\0\xE0\x0E\0\0\x0F\0\x01\x0F\0@\x0F\0H\x0F\0I\x0F\0m\x0F\0\x88\x0F\0\x8D\x0F\0\0\x10\0+\x10\0?\x10\0@\x10\0P\x10\0V\x10\0Z\x10\0^\x10\0a\x10\0b\x10\0e\x10\0g\x10\0n\x10\0q\x10\0u\x10\0\x82\x10\0\x8E\x10\0\x8F\x10\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0\xFB\x10\0\xFC\x10\0I\x12\0J\x12\0N\x12\0P\x12\0W\x12\0X\x12\0Y\x12\0Z\x12\0^\x12\0`\x12\0\x89\x12\0\x8A\x12\0\x8E\x12\0\x90\x12\0\xB1\x12\0\xB2\x12\0\xB6\x12\0\xB8\x12\0\xBF\x12\0\xC0\x12\0\xC1\x12\0\xC2\x12\0\xC6\x12\0\xC8\x12\0\xD7\x12\0\xD8\x12\0\x11\x13\0\x12\x13\0\x16\x13\0\x18\x13\0[\x13\0\x80\x13\0\x90\x13\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\x01\x14\0m\x16\0o\x16\0\x80\x16\0\x81\x16\0\x9B\x16\0\xA0\x16\0\xEB\x16\0\xEE\x16\0\xF9\x16\0\0\x17\0\x12\x17\0\x1F\x17\x002\x17\0@\x17\0R\x17\0`\x17\0m\x17\0n\x17\0q\x17\0\x80\x17\0\xB4\x17\0\xD7\x17\0\xD8\x17\0\xDC\x17\0\xDD\x17\0 \x18\0y\x18\0\x80\x18\0\xA9\x18\0\xAA\x18\0\xAB\x18\0\xB0\x18\0\xF6\x18\0\0\x19\0\x1F\x19\0P\x19\0n\x19\0p\x19\0u\x19\0\x80\x19\0\xAC\x19\0\xB0\x19\0\xCA\x19\0\0\x1A\0\x17\x1A\0 \x1A\0U\x1A\0\xA7\x1A\0\xA8\x1A\0\x05\x1B\x004\x1B\0E\x1B\0M\x1B\0\x83\x1B\0\xA1\x1B\0\xAE\x1B\0\xB0\x1B\0\xBA\x1B\0\xE6\x1B\0\0\x1C\0$\x1C\0M\x1C\0P\x1C\0Z\x1C\0~\x1C\0\x80\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF7\x1C\0\xFA\x1C\0\xFB\x1C\0\0\x1D\0\xC0\x1D\0\0\x1E\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xCD\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xE0\x1F\0\xED\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFD\x1F\0q \0r \0\x7F \0\x80 \0\x90 \0\x9D \0\x02!\0\x03!\0\x07!\0\x08!\0\n!\0\x14!\0\x15!\0\x16!\0\x18!\0\x1E!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0:!\0<!\0@!\0E!\0J!\0N!\0O!\0`!\0\x89!\0\0,\0\xE5,\0\xEB,\0\xEF,\0\xF2,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\x000-\0h-\0o-\0p-\0\x80-\0\x97-\0\xA0-\0\xA7-\0\xA8-\0\xAF-\0\xB0-\0\xB7-\0\xB8-\0\xBF-\0\xC0-\0\xC7-\0\xC8-\0\xCF-\0\xD0-\0\xD7-\0\xD8-\0\xDF-\0\x050\0\x080\0!0\0*0\x0010\x0060\080\0=0\0A0\0\x970\0\x9B0\0\xA00\0\xA10\0\xFB0\0\xFC0\0\x001\0\x051\x0001\x0011\0\x8F1\0\xA01\0\xC01\0\xF01\0\x002\0\x004\0\xC0M\0\0N\0\x8D\xA4\0\xD0\xA4\0\xFE\xA4\0\0\xA5\0\r\xA6\0\x10\xA6\0 \xA6\0*\xA6\0,\xA6\0@\xA6\0o\xA6\0\x7F\xA6\0\x9E\xA6\0\xA0\xA6\0\xF0\xA6\0\x17\xA7\0 \xA7\0\"\xA7\0\x89\xA7\0\x8B\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xDD\xA7\0\xF2\xA7\0\x02\xA8\0\x03\xA8\0\x06\xA8\0\x07\xA8\0\x0B\xA8\0\x0C\xA8\0#\xA8\0@\xA8\0t\xA8\0\x82\xA8\0\xB4\xA8\0\xF2\xA8\0\xF8\xA8\0\xFB\xA8\0\xFC\xA8\0\xFD\xA8\0\xFF\xA8\0\n\xA9\0&\xA9\x000\xA9\0G\xA9\0`\xA9\0}\xA9\0\x84\xA9\0\xB3\xA9\0\xCF\xA9\0\xD0\xA9\0\xE0\xA9\0\xE5\xA9\0\xE6\xA9\0\xF0\xA9\0\xFA\xA9\0\xFF\xA9\0\0\xAA\0)\xAA\0@\xAA\0C\xAA\0D\xAA\0L\xAA\0`\xAA\0w\xAA\0z\xAA\0{\xAA\0~\xAA\0\xB0\xAA\0\xB1\xAA\0\xB2\xAA\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBE\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xC3\xAA\0\xDB\xAA\0\xDE\xAA\0\xE0\xAA\0\xEB\xAA\0\xF2\xAA\0\xF5\xAA\0\x01\xAB\0\x07\xAB\0\t\xAB\0\x0F\xAB\0\x11\xAB\0\x17\xAB\0 \xAB\0'\xAB\0(\xAB\0/\xAB\x000\xAB\0[\xAB\0\\\xAB\0j\xAB\0p\xAB\0\xE3\xAB\0\0\xAC\0\xA4\xD7\0\xB0\xD7\0\xC7\xD7\0\xCB\xD7\0\xFC\xD7\0\0\xF9\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\0\x1E\xFB\0\x1F\xFB\0)\xFB\0*\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xB2\xFB\0\xD3\xFB\0>\xFD\0P\xFD\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xF0\xFD\0\xFC\xFD\0p\xFE\0u\xFE\0v\xFE\0\xFD\xFE\0!\xFF\0;\xFF\0A\xFF\0[\xFF\0f\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\0\0\x01\x0C\0\x01\r\0\x01'\0\x01(\0\x01;\0\x01<\0\x01>\0\x01?\0\x01N\0\x01P\0\x01^\0\x01\x80\0\x01\xFB\0\x01@\x01\x01u\x01\x01\x80\x02\x01\x9D\x02\x01\xA0\x02\x01\xD1\x02\x01\0\x03\x01 \x03\x01-\x03\x01K\x03\x01P\x03\x01v\x03\x01\x80\x03\x01\x9E\x03\x01\xA0\x03\x01\xC4\x03\x01\xC8\x03\x01\xD0\x03\x01\xD1\x03\x01\xD6\x03\x01\0\x04\x01\x9E\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01\0\x05\x01(\x05\x010\x05\x01d\x05\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x05\x01\xF4\x05\x01\0\x06\x017\x07\x01@\x07\x01V\x07\x01`\x07\x01h\x07\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\0\x08\x01\x06\x08\x01\x08\x08\x01\t\x08\x01\n\x08\x016\x08\x017\x08\x019\x08\x01<\x08\x01=\x08\x01?\x08\x01V\x08\x01`\x08\x01w\x08\x01\x80\x08\x01\x9F\x08\x01\xE0\x08\x01\xF3\x08\x01\xF4\x08\x01\xF6\x08\x01\0\t\x01\x16\t\x01 \t\x01:\t\x01\x80\t\x01\xB8\t\x01\xBE\t\x01\xC0\t\x01\0\n\x01\x01\n\x01\x10\n\x01\x14\n\x01\x15\n\x01\x18\n\x01\x19\n\x016\n\x01`\n\x01}\n\x01\x80\n\x01\x9D\n\x01\xC0\n\x01\xC8\n\x01\xC9\n\x01\xE5\n\x01\0\x0B\x016\x0B\x01@\x0B\x01V\x0B\x01`\x0B\x01s\x0B\x01\x80\x0B\x01\x92\x0B\x01\0\x0C\x01I\x0C\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01\0\r\x01$\r\x01J\r\x01f\r\x01o\r\x01\x86\r\x01\x80\x0E\x01\xAA\x0E\x01\xB0\x0E\x01\xB2\x0E\x01\xC2\x0E\x01\xC5\x0E\x01\0\x0F\x01\x1D\x0F\x01'\x0F\x01(\x0F\x010\x0F\x01F\x0F\x01p\x0F\x01\x82\x0F\x01\xB0\x0F\x01\xC5\x0F\x01\xE0\x0F\x01\xF7\x0F\x01\x03\x10\x018\x10\x01q\x10\x01s\x10\x01u\x10\x01v\x10\x01\x83\x10\x01\xB0\x10\x01\xD0\x10\x01\xE9\x10\x01\x03\x11\x01'\x11\x01D\x11\x01E\x11\x01G\x11\x01H\x11\x01P\x11\x01s\x11\x01v\x11\x01w\x11\x01\x83\x11\x01\xB3\x11\x01\xC1\x11\x01\xC5\x11\x01\xDA\x11\x01\xDB\x11\x01\xDC\x11\x01\xDD\x11\x01\0\x12\x01\x12\x12\x01\x13\x12\x01,\x12\x01?\x12\x01A\x12\x01\x80\x12\x01\x87\x12\x01\x88\x12\x01\x89\x12\x01\x8A\x12\x01\x8E\x12\x01\x8F\x12\x01\x9E\x12\x01\x9F\x12\x01\xA9\x12\x01\xB0\x12\x01\xDF\x12\x01\x05\x13\x01\r\x13\x01\x0F\x13\x01\x11\x13\x01\x13\x13\x01)\x13\x01*\x13\x011\x13\x012\x13\x014\x13\x015\x13\x01:\x13\x01=\x13\x01>\x13\x01P\x13\x01Q\x13\x01]\x13\x01b\x13\x01\x80\x13\x01\x8A\x13\x01\x8B\x13\x01\x8C\x13\x01\x8E\x13\x01\x8F\x13\x01\x90\x13\x01\xB6\x13\x01\xB7\x13\x01\xB8\x13\x01\xD1\x13\x01\xD2\x13\x01\xD3\x13\x01\xD4\x13\x01\0\x14\x015\x14\x01G\x14\x01K\x14\x01_\x14\x01b\x14\x01\x80\x14\x01\xB0\x14\x01\xC4\x14\x01\xC6\x14\x01\xC7\x14\x01\xC8\x14\x01\x80\x15\x01\xAF\x15\x01\xD8\x15\x01\xDC\x15\x01\0\x16\x010\x16\x01D\x16\x01E\x16\x01\x80\x16\x01\xAB\x16\x01\xB8\x16\x01\xB9\x16\x01\0\x17\x01\x1B\x17\x01@\x17\x01G\x17\x01\0\x18\x01,\x18\x01\xA0\x18\x01\xE0\x18\x01\xFF\x18\x01\x07\x19\x01\t\x19\x01\n\x19\x01\x0C\x19\x01\x14\x19\x01\x15\x19\x01\x17\x19\x01\x18\x19\x010\x19\x01?\x19\x01@\x19\x01A\x19\x01B\x19\x01\xA0\x19\x01\xA8\x19\x01\xAA\x19\x01\xD1\x19\x01\xE1\x19\x01\xE2\x19\x01\xE3\x19\x01\xE4\x19\x01\0\x1A\x01\x01\x1A\x01\x0B\x1A\x013\x1A\x01:\x1A\x01;\x1A\x01P\x1A\x01Q\x1A\x01\\\x1A\x01\x8A\x1A\x01\x9D\x1A\x01\x9E\x1A\x01\xB0\x1A\x01\xF9\x1A\x01\xC0\x1B\x01\xE1\x1B\x01\0\x1C\x01\t\x1C\x01\n\x1C\x01/\x1C\x01@\x1C\x01A\x1C\x01r\x1C\x01\x90\x1C\x01\0\x1D\x01\x07\x1D\x01\x08\x1D\x01\n\x1D\x01\x0B\x1D\x011\x1D\x01F\x1D\x01G\x1D\x01`\x1D\x01f\x1D\x01g\x1D\x01i\x1D\x01j\x1D\x01\x8A\x1D\x01\x98\x1D\x01\x99\x1D\x01\xE0\x1E\x01\xF3\x1E\x01\x02\x1F\x01\x03\x1F\x01\x04\x1F\x01\x11\x1F\x01\x12\x1F\x014\x1F\x01\xB0\x1F\x01\xB1\x1F\x01\0 \x01\x9A#\x01\0$\x01o$\x01\x80$\x01D%\x01\x90/\x01\xF1/\x01\x000\x0104\x01A4\x01G4\x01`4\x01\xFBC\x01\0D\x01GF\x01\0a\x01\x1Ea\x01\0h\x019j\x01@j\x01_j\x01pj\x01\xBFj\x01\xD0j\x01\xEEj\x01\0k\x010k\x01@k\x01Dk\x01ck\x01xk\x01}k\x01\x90k\x01@m\x01mm\x01@n\x01\x80n\x01\0o\x01Ko\x01Po\x01Qo\x01\x93o\x01\xA0o\x01\xE0o\x01\xE2o\x01\xE3o\x01\xE4o\x01\0p\x01\xF8\x87\x01\0\x88\x01\xD6\x8C\x01\xFF\x8C\x01\t\x8D\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\0\xB0\x01#\xB1\x012\xB1\x013\xB1\x01P\xB1\x01S\xB1\x01U\xB1\x01V\xB1\x01d\xB1\x01h\xB1\x01p\xB1\x01\xFC\xB2\x01\0\xBC\x01k\xBC\x01p\xBC\x01}\xBC\x01\x80\xBC\x01\x89\xBC\x01\x90\xBC\x01\x9A\xBC\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xC1\xD6\x01\xC2\xD6\x01\xDB\xD6\x01\xDC\xD6\x01\xFB\xD6\x01\xFC\xD6\x01\x15\xD7\x01\x16\xD7\x015\xD7\x016\xD7\x01O\xD7\x01P\xD7\x01o\xD7\x01p\xD7\x01\x89\xD7\x01\x8A\xD7\x01\xA9\xD7\x01\xAA\xD7\x01\xC3\xD7\x01\xC4\xD7\x01\xCC\xD7\x01\0\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x010\xE0\x01n\xE0\x01\0\xE1\x01-\xE1\x017\xE1\x01>\xE1\x01N\xE1\x01O\xE1\x01\x90\xE2\x01\xAE\xE2\x01\xC0\xE2\x01\xEC\xE2\x01\xD0\xE4\x01\xEC\xE4\x01\xD0\xE5\x01\xEE\xE5\x01\xF0\xE5\x01\xF1\xE5\x01\xE0\xE7\x01\xE7\xE7\x01\xE8\xE7\x01\xEC\xE7\x01\xED\xE7\x01\xEF\xE7\x01\xF0\xE7\x01\xFF\xE7\x01\0\xE8\x01\xC5\xE8\x01\0\xE9\x01D\xE9\x01K\xE9\x01L\xE9\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\xF8\x02\x1E\xFA\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03") }, 141269u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryIdStartV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryIdStartV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_ID_START_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdStartV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_id_start_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryIdStartV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_id_start_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryIdStartV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdStartV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_id_start_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryIdStartV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdStartV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryIdStartV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_id_start_v1 as impl_property_binary_id_start_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_ideographic_v1.rs.data b/vendor/icu_properties_data/data/property_binary_ideographic_v1.rs.data
new file mode 100644
index 00000000..7ef2ddcb
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_ideographic_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryIdeographicV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 158B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_ideographic_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_IDEOGRAPHIC_V1: &'static <icu::properties::provider::PropertyBinaryIdeographicV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x060\0\x080\0!0\0*0\080\0;0\0\x004\0\xC0M\0\0N\0\0\xA0\0\0\xF9\0n\xFA\0p\xFA\0\xDA\xFA\0\xE4o\x01\xE5o\x01\0p\x01\xF8\x87\x01\0\x88\x01\xD6\x8C\x01\xFF\x8C\x01\t\x8D\x01p\xB1\x01\xFC\xB2\x01\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\xF8\x02\x1E\xFA\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03") }, 106477u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryIdeographicV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryIdeographicV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_IDEOGRAPHIC_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdeographicV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_ideographic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryIdeographicV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_ideographic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryIdeographicV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdeographicV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_ideographic_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryIdeographicV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdeographicV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryIdeographicV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_ideographic_v1 as impl_property_binary_ideographic_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_ids_binary_operator_v1.rs.data b/vendor/icu_properties_data/data/property_binary_ids_binary_operator_v1.rs.data
new file mode 100644
index 00000000..0407d7e2
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_ids_binary_operator_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryIdsBinaryOperatorV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 50B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_ids_binary_operator_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_IDS_BINARY_OPERATOR_V1: &'static <icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xF0/\0\xF2/\0\xF4/\0\xFE/\0\xEF1\0\xF01\0") }, 13u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_IDS_BINARY_OPERATOR_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_ids_binary_operator_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_ids_binary_operator_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_ids_binary_operator_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryIdsBinaryOperatorV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_ids_binary_operator_v1 as impl_property_binary_ids_binary_operator_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_ids_trinary_operator_v1.rs.data b/vendor/icu_properties_data/data/property_binary_ids_trinary_operator_v1.rs.data
new file mode 100644
index 00000000..429ac96e
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_ids_trinary_operator_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryIdsTrinaryOperatorV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 38B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_ids_trinary_operator_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_IDS_TRINARY_OPERATOR_V1: &'static <icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xF2/\0\xF4/\0") }, 2u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_IDS_TRINARY_OPERATOR_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_ids_trinary_operator_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_ids_trinary_operator_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_ids_trinary_operator_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryIdsTrinaryOperatorV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_ids_trinary_operator_v1 as impl_property_binary_ids_trinary_operator_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_join_control_v1.rs.data b/vendor/icu_properties_data/data/property_binary_join_control_v1.rs.data
new file mode 100644
index 00000000..54c0d352
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_join_control_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryJoinControlV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 38B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_join_control_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_JOIN_CONTROL_V1: &'static <icu::properties::provider::PropertyBinaryJoinControlV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x0C \0\x0E \0") }, 2u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryJoinControlV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryJoinControlV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_JOIN_CONTROL_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryJoinControlV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_join_control_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryJoinControlV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_join_control_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryJoinControlV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryJoinControlV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_join_control_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryJoinControlV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryJoinControlV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryJoinControlV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_join_control_v1 as impl_property_binary_join_control_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_logical_order_exception_v1.rs.data b/vendor/icu_properties_data/data/property_binary_logical_order_exception_v1.rs.data
new file mode 100644
index 00000000..a3f1f9f4
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_logical_order_exception_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryLogicalOrderExceptionV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 74B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_logical_order_exception_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_LOGICAL_ORDER_EXCEPTION_V1: &'static <icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"@\x0E\0E\x0E\0\xC0\x0E\0\xC5\x0E\0\xB5\x19\0\xB8\x19\0\xBA\x19\0\xBB\x19\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBA\xAA\0\xBB\xAA\0\xBD\xAA\0") }, 19u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_LOGICAL_ORDER_EXCEPTION_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_logical_order_exception_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_logical_order_exception_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_logical_order_exception_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryLogicalOrderExceptionV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_logical_order_exception_v1 as impl_property_binary_logical_order_exception_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_lowercase_v1.rs.data b/vendor/icu_properties_data/data/property_binary_lowercase_v1.rs.data
new file mode 100644
index 00000000..13113834
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_lowercase_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryLowercaseV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4082B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_lowercase_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_LOWERCASE_V1: &'static <icu::properties::provider::PropertyBinaryLowercaseV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"a\0\0{\0\0\xAA\0\0\xAB\0\0\xB5\0\0\xB6\0\0\xBA\0\0\xBB\0\0\xDF\0\0\xF7\0\0\xF8\0\0\0\x01\0\x01\x01\0\x02\x01\0\x03\x01\0\x04\x01\0\x05\x01\0\x06\x01\0\x07\x01\0\x08\x01\0\t\x01\0\n\x01\0\x0B\x01\0\x0C\x01\0\r\x01\0\x0E\x01\0\x0F\x01\0\x10\x01\0\x11\x01\0\x12\x01\0\x13\x01\0\x14\x01\0\x15\x01\0\x16\x01\0\x17\x01\0\x18\x01\0\x19\x01\0\x1A\x01\0\x1B\x01\0\x1C\x01\0\x1D\x01\0\x1E\x01\0\x1F\x01\0 \x01\0!\x01\0\"\x01\0#\x01\0$\x01\0%\x01\0&\x01\0'\x01\0(\x01\0)\x01\0*\x01\0+\x01\0,\x01\0-\x01\0.\x01\0/\x01\x000\x01\x001\x01\x002\x01\x003\x01\x004\x01\x005\x01\x006\x01\x007\x01\09\x01\0:\x01\0;\x01\0<\x01\0=\x01\0>\x01\0?\x01\0@\x01\0A\x01\0B\x01\0C\x01\0D\x01\0E\x01\0F\x01\0G\x01\0H\x01\0J\x01\0K\x01\0L\x01\0M\x01\0N\x01\0O\x01\0P\x01\0Q\x01\0R\x01\0S\x01\0T\x01\0U\x01\0V\x01\0W\x01\0X\x01\0Y\x01\0Z\x01\0[\x01\0\\\x01\0]\x01\0^\x01\0_\x01\0`\x01\0a\x01\0b\x01\0c\x01\0d\x01\0e\x01\0f\x01\0g\x01\0h\x01\0i\x01\0j\x01\0k\x01\0l\x01\0m\x01\0n\x01\0o\x01\0p\x01\0q\x01\0r\x01\0s\x01\0t\x01\0u\x01\0v\x01\0w\x01\0x\x01\0z\x01\0{\x01\0|\x01\0}\x01\0~\x01\0\x81\x01\0\x83\x01\0\x84\x01\0\x85\x01\0\x86\x01\0\x88\x01\0\x89\x01\0\x8C\x01\0\x8E\x01\0\x92\x01\0\x93\x01\0\x95\x01\0\x96\x01\0\x99\x01\0\x9C\x01\0\x9E\x01\0\x9F\x01\0\xA1\x01\0\xA2\x01\0\xA3\x01\0\xA4\x01\0\xA5\x01\0\xA6\x01\0\xA8\x01\0\xA9\x01\0\xAA\x01\0\xAC\x01\0\xAD\x01\0\xAE\x01\0\xB0\x01\0\xB1\x01\0\xB4\x01\0\xB5\x01\0\xB6\x01\0\xB7\x01\0\xB9\x01\0\xBB\x01\0\xBD\x01\0\xC0\x01\0\xC6\x01\0\xC7\x01\0\xC9\x01\0\xCA\x01\0\xCC\x01\0\xCD\x01\0\xCE\x01\0\xCF\x01\0\xD0\x01\0\xD1\x01\0\xD2\x01\0\xD3\x01\0\xD4\x01\0\xD5\x01\0\xD6\x01\0\xD7\x01\0\xD8\x01\0\xD9\x01\0\xDA\x01\0\xDB\x01\0\xDC\x01\0\xDE\x01\0\xDF\x01\0\xE0\x01\0\xE1\x01\0\xE2\x01\0\xE3\x01\0\xE4\x01\0\xE5\x01\0\xE6\x01\0\xE7\x01\0\xE8\x01\0\xE9\x01\0\xEA\x01\0\xEB\x01\0\xEC\x01\0\xED\x01\0\xEE\x01\0\xEF\x01\0\xF1\x01\0\xF3\x01\0\xF4\x01\0\xF5\x01\0\xF6\x01\0\xF9\x01\0\xFA\x01\0\xFB\x01\0\xFC\x01\0\xFD\x01\0\xFE\x01\0\xFF\x01\0\0\x02\0\x01\x02\0\x02\x02\0\x03\x02\0\x04\x02\0\x05\x02\0\x06\x02\0\x07\x02\0\x08\x02\0\t\x02\0\n\x02\0\x0B\x02\0\x0C\x02\0\r\x02\0\x0E\x02\0\x0F\x02\0\x10\x02\0\x11\x02\0\x12\x02\0\x13\x02\0\x14\x02\0\x15\x02\0\x16\x02\0\x17\x02\0\x18\x02\0\x19\x02\0\x1A\x02\0\x1B\x02\0\x1C\x02\0\x1D\x02\0\x1E\x02\0\x1F\x02\0 \x02\0!\x02\0\"\x02\0#\x02\0$\x02\0%\x02\0&\x02\0'\x02\0(\x02\0)\x02\0*\x02\0+\x02\0,\x02\0-\x02\0.\x02\0/\x02\x000\x02\x001\x02\x002\x02\x003\x02\0:\x02\0<\x02\0=\x02\0?\x02\0A\x02\0B\x02\0C\x02\0G\x02\0H\x02\0I\x02\0J\x02\0K\x02\0L\x02\0M\x02\0N\x02\0O\x02\0\x94\x02\0\x95\x02\0\xB9\x02\0\xC0\x02\0\xC2\x02\0\xE0\x02\0\xE5\x02\0E\x03\0F\x03\0q\x03\0r\x03\0s\x03\0t\x03\0w\x03\0x\x03\0z\x03\0~\x03\0\x90\x03\0\x91\x03\0\xAC\x03\0\xCF\x03\0\xD0\x03\0\xD2\x03\0\xD5\x03\0\xD8\x03\0\xD9\x03\0\xDA\x03\0\xDB\x03\0\xDC\x03\0\xDD\x03\0\xDE\x03\0\xDF\x03\0\xE0\x03\0\xE1\x03\0\xE2\x03\0\xE3\x03\0\xE4\x03\0\xE5\x03\0\xE6\x03\0\xE7\x03\0\xE8\x03\0\xE9\x03\0\xEA\x03\0\xEB\x03\0\xEC\x03\0\xED\x03\0\xEE\x03\0\xEF\x03\0\xF4\x03\0\xF5\x03\0\xF6\x03\0\xF8\x03\0\xF9\x03\0\xFB\x03\0\xFD\x03\x000\x04\0`\x04\0a\x04\0b\x04\0c\x04\0d\x04\0e\x04\0f\x04\0g\x04\0h\x04\0i\x04\0j\x04\0k\x04\0l\x04\0m\x04\0n\x04\0o\x04\0p\x04\0q\x04\0r\x04\0s\x04\0t\x04\0u\x04\0v\x04\0w\x04\0x\x04\0y\x04\0z\x04\0{\x04\0|\x04\0}\x04\0~\x04\0\x7F\x04\0\x80\x04\0\x81\x04\0\x82\x04\0\x8B\x04\0\x8C\x04\0\x8D\x04\0\x8E\x04\0\x8F\x04\0\x90\x04\0\x91\x04\0\x92\x04\0\x93\x04\0\x94\x04\0\x95\x04\0\x96\x04\0\x97\x04\0\x98\x04\0\x99\x04\0\x9A\x04\0\x9B\x04\0\x9C\x04\0\x9D\x04\0\x9E\x04\0\x9F\x04\0\xA0\x04\0\xA1\x04\0\xA2\x04\0\xA3\x04\0\xA4\x04\0\xA5\x04\0\xA6\x04\0\xA7\x04\0\xA8\x04\0\xA9\x04\0\xAA\x04\0\xAB\x04\0\xAC\x04\0\xAD\x04\0\xAE\x04\0\xAF\x04\0\xB0\x04\0\xB1\x04\0\xB2\x04\0\xB3\x04\0\xB4\x04\0\xB5\x04\0\xB6\x04\0\xB7\x04\0\xB8\x04\0\xB9\x04\0\xBA\x04\0\xBB\x04\0\xBC\x04\0\xBD\x04\0\xBE\x04\0\xBF\x04\0\xC0\x04\0\xC2\x04\0\xC3\x04\0\xC4\x04\0\xC5\x04\0\xC6\x04\0\xC7\x04\0\xC8\x04\0\xC9\x04\0\xCA\x04\0\xCB\x04\0\xCC\x04\0\xCD\x04\0\xCE\x04\0\xD0\x04\0\xD1\x04\0\xD2\x04\0\xD3\x04\0\xD4\x04\0\xD5\x04\0\xD6\x04\0\xD7\x04\0\xD8\x04\0\xD9\x04\0\xDA\x04\0\xDB\x04\0\xDC\x04\0\xDD\x04\0\xDE\x04\0\xDF\x04\0\xE0\x04\0\xE1\x04\0\xE2\x04\0\xE3\x04\0\xE4\x04\0\xE5\x04\0\xE6\x04\0\xE7\x04\0\xE8\x04\0\xE9\x04\0\xEA\x04\0\xEB\x04\0\xEC\x04\0\xED\x04\0\xEE\x04\0\xEF\x04\0\xF0\x04\0\xF1\x04\0\xF2\x04\0\xF3\x04\0\xF4\x04\0\xF5\x04\0\xF6\x04\0\xF7\x04\0\xF8\x04\0\xF9\x04\0\xFA\x04\0\xFB\x04\0\xFC\x04\0\xFD\x04\0\xFE\x04\0\xFF\x04\0\0\x05\0\x01\x05\0\x02\x05\0\x03\x05\0\x04\x05\0\x05\x05\0\x06\x05\0\x07\x05\0\x08\x05\0\t\x05\0\n\x05\0\x0B\x05\0\x0C\x05\0\r\x05\0\x0E\x05\0\x0F\x05\0\x10\x05\0\x11\x05\0\x12\x05\0\x13\x05\0\x14\x05\0\x15\x05\0\x16\x05\0\x17\x05\0\x18\x05\0\x19\x05\0\x1A\x05\0\x1B\x05\0\x1C\x05\0\x1D\x05\0\x1E\x05\0\x1F\x05\0 \x05\0!\x05\0\"\x05\0#\x05\0$\x05\0%\x05\0&\x05\0'\x05\0(\x05\0)\x05\0*\x05\0+\x05\0,\x05\0-\x05\0.\x05\0/\x05\x000\x05\0`\x05\0\x89\x05\0\xD0\x10\0\xFB\x10\0\xFC\x10\0\0\x11\0\xF8\x13\0\xFE\x13\0\x80\x1C\0\x89\x1C\0\x8A\x1C\0\x8B\x1C\0\0\x1D\0\xC0\x1D\0\x01\x1E\0\x02\x1E\0\x03\x1E\0\x04\x1E\0\x05\x1E\0\x06\x1E\0\x07\x1E\0\x08\x1E\0\t\x1E\0\n\x1E\0\x0B\x1E\0\x0C\x1E\0\r\x1E\0\x0E\x1E\0\x0F\x1E\0\x10\x1E\0\x11\x1E\0\x12\x1E\0\x13\x1E\0\x14\x1E\0\x15\x1E\0\x16\x1E\0\x17\x1E\0\x18\x1E\0\x19\x1E\0\x1A\x1E\0\x1B\x1E\0\x1C\x1E\0\x1D\x1E\0\x1E\x1E\0\x1F\x1E\0 \x1E\0!\x1E\0\"\x1E\0#\x1E\0$\x1E\0%\x1E\0&\x1E\0'\x1E\0(\x1E\0)\x1E\0*\x1E\0+\x1E\0,\x1E\0-\x1E\0.\x1E\0/\x1E\x000\x1E\x001\x1E\x002\x1E\x003\x1E\x004\x1E\x005\x1E\x006\x1E\x007\x1E\08\x1E\09\x1E\0:\x1E\0;\x1E\0<\x1E\0=\x1E\0>\x1E\0?\x1E\0@\x1E\0A\x1E\0B\x1E\0C\x1E\0D\x1E\0E\x1E\0F\x1E\0G\x1E\0H\x1E\0I\x1E\0J\x1E\0K\x1E\0L\x1E\0M\x1E\0N\x1E\0O\x1E\0P\x1E\0Q\x1E\0R\x1E\0S\x1E\0T\x1E\0U\x1E\0V\x1E\0W\x1E\0X\x1E\0Y\x1E\0Z\x1E\0[\x1E\0\\\x1E\0]\x1E\0^\x1E\0_\x1E\0`\x1E\0a\x1E\0b\x1E\0c\x1E\0d\x1E\0e\x1E\0f\x1E\0g\x1E\0h\x1E\0i\x1E\0j\x1E\0k\x1E\0l\x1E\0m\x1E\0n\x1E\0o\x1E\0p\x1E\0q\x1E\0r\x1E\0s\x1E\0t\x1E\0u\x1E\0v\x1E\0w\x1E\0x\x1E\0y\x1E\0z\x1E\0{\x1E\0|\x1E\0}\x1E\0~\x1E\0\x7F\x1E\0\x80\x1E\0\x81\x1E\0\x82\x1E\0\x83\x1E\0\x84\x1E\0\x85\x1E\0\x86\x1E\0\x87\x1E\0\x88\x1E\0\x89\x1E\0\x8A\x1E\0\x8B\x1E\0\x8C\x1E\0\x8D\x1E\0\x8E\x1E\0\x8F\x1E\0\x90\x1E\0\x91\x1E\0\x92\x1E\0\x93\x1E\0\x94\x1E\0\x95\x1E\0\x9E\x1E\0\x9F\x1E\0\xA0\x1E\0\xA1\x1E\0\xA2\x1E\0\xA3\x1E\0\xA4\x1E\0\xA5\x1E\0\xA6\x1E\0\xA7\x1E\0\xA8\x1E\0\xA9\x1E\0\xAA\x1E\0\xAB\x1E\0\xAC\x1E\0\xAD\x1E\0\xAE\x1E\0\xAF\x1E\0\xB0\x1E\0\xB1\x1E\0\xB2\x1E\0\xB3\x1E\0\xB4\x1E\0\xB5\x1E\0\xB6\x1E\0\xB7\x1E\0\xB8\x1E\0\xB9\x1E\0\xBA\x1E\0\xBB\x1E\0\xBC\x1E\0\xBD\x1E\0\xBE\x1E\0\xBF\x1E\0\xC0\x1E\0\xC1\x1E\0\xC2\x1E\0\xC3\x1E\0\xC4\x1E\0\xC5\x1E\0\xC6\x1E\0\xC7\x1E\0\xC8\x1E\0\xC9\x1E\0\xCA\x1E\0\xCB\x1E\0\xCC\x1E\0\xCD\x1E\0\xCE\x1E\0\xCF\x1E\0\xD0\x1E\0\xD1\x1E\0\xD2\x1E\0\xD3\x1E\0\xD4\x1E\0\xD5\x1E\0\xD6\x1E\0\xD7\x1E\0\xD8\x1E\0\xD9\x1E\0\xDA\x1E\0\xDB\x1E\0\xDC\x1E\0\xDD\x1E\0\xDE\x1E\0\xDF\x1E\0\xE0\x1E\0\xE1\x1E\0\xE2\x1E\0\xE3\x1E\0\xE4\x1E\0\xE5\x1E\0\xE6\x1E\0\xE7\x1E\0\xE8\x1E\0\xE9\x1E\0\xEA\x1E\0\xEB\x1E\0\xEC\x1E\0\xED\x1E\0\xEE\x1E\0\xEF\x1E\0\xF0\x1E\0\xF1\x1E\0\xF2\x1E\0\xF3\x1E\0\xF4\x1E\0\xF5\x1E\0\xF6\x1E\0\xF7\x1E\0\xF8\x1E\0\xF9\x1E\0\xFA\x1E\0\xFB\x1E\0\xFC\x1E\0\xFD\x1E\0\xFE\x1E\0\xFF\x1E\0\x08\x1F\0\x10\x1F\0\x16\x1F\0 \x1F\0(\x1F\x000\x1F\08\x1F\0@\x1F\0F\x1F\0P\x1F\0X\x1F\0`\x1F\0h\x1F\0p\x1F\0~\x1F\0\x80\x1F\0\x88\x1F\0\x90\x1F\0\x98\x1F\0\xA0\x1F\0\xA8\x1F\0\xB0\x1F\0\xB5\x1F\0\xB6\x1F\0\xB8\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xC8\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xD8\x1F\0\xE0\x1F\0\xE8\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xF8\x1F\0q \0r \0\x7F \0\x80 \0\x90 \0\x9D \0\n!\0\x0B!\0\x0E!\0\x10!\0\x13!\0\x14!\0/!\x000!\x004!\x005!\09!\0:!\0<!\0>!\0F!\0J!\0N!\0O!\0p!\0\x80!\0\x84!\0\x85!\0\xD0$\0\xEA$\x000,\0`,\0a,\0b,\0e,\0g,\0h,\0i,\0j,\0k,\0l,\0m,\0q,\0r,\0s,\0u,\0v,\0~,\0\x81,\0\x82,\0\x83,\0\x84,\0\x85,\0\x86,\0\x87,\0\x88,\0\x89,\0\x8A,\0\x8B,\0\x8C,\0\x8D,\0\x8E,\0\x8F,\0\x90,\0\x91,\0\x92,\0\x93,\0\x94,\0\x95,\0\x96,\0\x97,\0\x98,\0\x99,\0\x9A,\0\x9B,\0\x9C,\0\x9D,\0\x9E,\0\x9F,\0\xA0,\0\xA1,\0\xA2,\0\xA3,\0\xA4,\0\xA5,\0\xA6,\0\xA7,\0\xA8,\0\xA9,\0\xAA,\0\xAB,\0\xAC,\0\xAD,\0\xAE,\0\xAF,\0\xB0,\0\xB1,\0\xB2,\0\xB3,\0\xB4,\0\xB5,\0\xB6,\0\xB7,\0\xB8,\0\xB9,\0\xBA,\0\xBB,\0\xBC,\0\xBD,\0\xBE,\0\xBF,\0\xC0,\0\xC1,\0\xC2,\0\xC3,\0\xC4,\0\xC5,\0\xC6,\0\xC7,\0\xC8,\0\xC9,\0\xCA,\0\xCB,\0\xCC,\0\xCD,\0\xCE,\0\xCF,\0\xD0,\0\xD1,\0\xD2,\0\xD3,\0\xD4,\0\xD5,\0\xD6,\0\xD7,\0\xD8,\0\xD9,\0\xDA,\0\xDB,\0\xDC,\0\xDD,\0\xDE,\0\xDF,\0\xE0,\0\xE1,\0\xE2,\0\xE3,\0\xE5,\0\xEC,\0\xED,\0\xEE,\0\xEF,\0\xF3,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\0A\xA6\0B\xA6\0C\xA6\0D\xA6\0E\xA6\0F\xA6\0G\xA6\0H\xA6\0I\xA6\0J\xA6\0K\xA6\0L\xA6\0M\xA6\0N\xA6\0O\xA6\0P\xA6\0Q\xA6\0R\xA6\0S\xA6\0T\xA6\0U\xA6\0V\xA6\0W\xA6\0X\xA6\0Y\xA6\0Z\xA6\0[\xA6\0\\\xA6\0]\xA6\0^\xA6\0_\xA6\0`\xA6\0a\xA6\0b\xA6\0c\xA6\0d\xA6\0e\xA6\0f\xA6\0g\xA6\0h\xA6\0i\xA6\0j\xA6\0k\xA6\0l\xA6\0m\xA6\0n\xA6\0\x81\xA6\0\x82\xA6\0\x83\xA6\0\x84\xA6\0\x85\xA6\0\x86\xA6\0\x87\xA6\0\x88\xA6\0\x89\xA6\0\x8A\xA6\0\x8B\xA6\0\x8C\xA6\0\x8D\xA6\0\x8E\xA6\0\x8F\xA6\0\x90\xA6\0\x91\xA6\0\x92\xA6\0\x93\xA6\0\x94\xA6\0\x95\xA6\0\x96\xA6\0\x97\xA6\0\x98\xA6\0\x99\xA6\0\x9A\xA6\0\x9B\xA6\0\x9E\xA6\0#\xA7\0$\xA7\0%\xA7\0&\xA7\0'\xA7\0(\xA7\0)\xA7\0*\xA7\0+\xA7\0,\xA7\0-\xA7\0.\xA7\0/\xA7\x002\xA7\x003\xA7\x004\xA7\x005\xA7\x006\xA7\x007\xA7\08\xA7\09\xA7\0:\xA7\0;\xA7\0<\xA7\0=\xA7\0>\xA7\0?\xA7\0@\xA7\0A\xA7\0B\xA7\0C\xA7\0D\xA7\0E\xA7\0F\xA7\0G\xA7\0H\xA7\0I\xA7\0J\xA7\0K\xA7\0L\xA7\0M\xA7\0N\xA7\0O\xA7\0P\xA7\0Q\xA7\0R\xA7\0S\xA7\0T\xA7\0U\xA7\0V\xA7\0W\xA7\0X\xA7\0Y\xA7\0Z\xA7\0[\xA7\0\\\xA7\0]\xA7\0^\xA7\0_\xA7\0`\xA7\0a\xA7\0b\xA7\0c\xA7\0d\xA7\0e\xA7\0f\xA7\0g\xA7\0h\xA7\0i\xA7\0j\xA7\0k\xA7\0l\xA7\0m\xA7\0n\xA7\0o\xA7\0y\xA7\0z\xA7\0{\xA7\0|\xA7\0}\xA7\0\x7F\xA7\0\x80\xA7\0\x81\xA7\0\x82\xA7\0\x83\xA7\0\x84\xA7\0\x85\xA7\0\x86\xA7\0\x87\xA7\0\x88\xA7\0\x8C\xA7\0\x8D\xA7\0\x8E\xA7\0\x8F\xA7\0\x91\xA7\0\x92\xA7\0\x93\xA7\0\x96\xA7\0\x97\xA7\0\x98\xA7\0\x99\xA7\0\x9A\xA7\0\x9B\xA7\0\x9C\xA7\0\x9D\xA7\0\x9E\xA7\0\x9F\xA7\0\xA0\xA7\0\xA1\xA7\0\xA2\xA7\0\xA3\xA7\0\xA4\xA7\0\xA5\xA7\0\xA6\xA7\0\xA7\xA7\0\xA8\xA7\0\xA9\xA7\0\xAA\xA7\0\xAF\xA7\0\xB0\xA7\0\xB5\xA7\0\xB6\xA7\0\xB7\xA7\0\xB8\xA7\0\xB9\xA7\0\xBA\xA7\0\xBB\xA7\0\xBC\xA7\0\xBD\xA7\0\xBE\xA7\0\xBF\xA7\0\xC0\xA7\0\xC1\xA7\0\xC2\xA7\0\xC3\xA7\0\xC4\xA7\0\xC8\xA7\0\xC9\xA7\0\xCA\xA7\0\xCB\xA7\0\xCD\xA7\0\xCE\xA7\0\xD1\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xD6\xA7\0\xD7\xA7\0\xD8\xA7\0\xD9\xA7\0\xDA\xA7\0\xDB\xA7\0\xDC\xA7\0\xF2\xA7\0\xF5\xA7\0\xF6\xA7\0\xF7\xA7\0\xF8\xA7\0\xFB\xA7\x000\xAB\0[\xAB\0\\\xAB\0j\xAB\0p\xAB\0\xC0\xAB\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0A\xFF\0[\xFF\0(\x04\x01P\x04\x01\xD8\x04\x01\xFC\x04\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\x80\x07\x01\x81\x07\x01\x83\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\xC0\x0C\x01\xF3\x0C\x01p\r\x01\x86\r\x01\xC0\x18\x01\xE0\x18\x01`n\x01\x80n\x01\x1A\xD4\x014\xD4\x01N\xD4\x01U\xD4\x01V\xD4\x01h\xD4\x01\x82\xD4\x01\x9C\xD4\x01\xB6\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\xD0\xD4\x01\xEA\xD4\x01\x04\xD5\x01\x1E\xD5\x018\xD5\x01R\xD5\x01l\xD5\x01\x86\xD5\x01\xA0\xD5\x01\xBA\xD5\x01\xD4\xD5\x01\xEE\xD5\x01\x08\xD6\x01\"\xD6\x01<\xD6\x01V\xD6\x01p\xD6\x01\x8A\xD6\x01\xA6\xD6\x01\xC2\xD6\x01\xDB\xD6\x01\xDC\xD6\x01\xE2\xD6\x01\xFC\xD6\x01\x15\xD7\x01\x16\xD7\x01\x1C\xD7\x016\xD7\x01O\xD7\x01P\xD7\x01V\xD7\x01p\xD7\x01\x89\xD7\x01\x8A\xD7\x01\x90\xD7\x01\xAA\xD7\x01\xC3\xD7\x01\xC4\xD7\x01\xCA\xD7\x01\xCB\xD7\x01\xCC\xD7\x01\0\xDF\x01\n\xDF\x01\x0B\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x010\xE0\x01n\xE0\x01\"\xE9\x01D\xE9\x01") }, 2569u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryLowercaseV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryLowercaseV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_LOWERCASE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryLowercaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_lowercase_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryLowercaseV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_lowercase_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryLowercaseV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryLowercaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_lowercase_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryLowercaseV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryLowercaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryLowercaseV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_lowercase_v1 as impl_property_binary_lowercase_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_math_v1.rs.data b/vendor/icu_properties_data/data/property_binary_math_v1.rs.data
new file mode 100644
index 00000000..411881ca
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_math_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryMathV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 866B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_math_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_MATH_V1: &'static <icu::properties::provider::PropertyBinaryMathV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"+\0\0,\0\0<\0\0?\0\0^\0\0_\0\0|\0\0}\0\0~\0\0\x7F\0\0\xAC\0\0\xAD\0\0\xB1\0\0\xB2\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\0\xD0\x03\0\xD3\x03\0\xD5\x03\0\xD6\x03\0\xF0\x03\0\xF2\x03\0\xF4\x03\0\xF7\x03\0\x06\x06\0\t\x06\0\x16 \0\x17 \x002 \x005 \0@ \0A \0D \0E \0R \0S \0a \0e \0z \0\x7F \0\x8A \0\x8F \0\xD0 \0\xDD \0\xE1 \0\xE2 \0\xE5 \0\xE7 \0\xEB \0\xF0 \0\x02!\0\x03!\0\x07!\0\x08!\0\n!\0\x14!\0\x15!\0\x16!\0\x18!\0\x1E!\0$!\0%!\0(!\0*!\0,!\0.!\0/!\x002!\x003!\09!\0<!\0J!\0K!\0L!\0\x90!\0\xA8!\0\xA9!\0\xAF!\0\xB0!\0\xB2!\0\xB6!\0\xB8!\0\xBC!\0\xDC!\0\xDD!\0\xDE!\0\xE4!\0\xE6!\0\xF4!\0\0#\0\x08#\0\x0C#\0 #\0\"#\0|#\0}#\0\x9B#\0\xB6#\0\xB7#\0\xB8#\0\xD0#\0\xD1#\0\xDC#\0\xE3#\0\xA0%\0\xA2%\0\xAE%\0\xB8%\0\xBC%\0\xC2%\0\xC6%\0\xC8%\0\xCA%\0\xCC%\0\xCF%\0\xD4%\0\xE2%\0\xE3%\0\xE4%\0\xE5%\0\xE7%\0\xED%\0\xF8%\0\0&\0\x05&\0\x07&\0@&\0A&\0B&\0C&\0`&\0d&\0m&\0p&\0\xC0'\0\0(\0\0)\0\0+\x000+\0E+\0G+\0M+\0)\xFB\0*\xFB\0a\xFE\0g\xFE\0h\xFE\0i\xFE\0\x0B\xFF\0\x0C\xFF\0\x1C\xFF\0\x1F\xFF\0<\xFF\0=\xFF\0>\xFF\0?\xFF\0\\\xFF\0]\xFF\0^\xFF\0_\xFF\0\xE2\xFF\0\xE3\xFF\0\xE9\xFF\0\xED\xFF\0\x8E\r\x01\x90\r\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xCC\xD7\x01\xCE\xD7\x01\0\xD8\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\xF0\xEE\x01\xF2\xEE\x01") }, 2312u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryMathV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryMathV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_MATH_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryMathV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_math_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryMathV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_math_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryMathV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryMathV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_math_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryMathV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryMathV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryMathV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_math_v1 as impl_property_binary_math_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_nfc_inert_v1.rs.data b/vendor/icu_properties_data/data/property_binary_nfc_inert_v1.rs.data
new file mode 100644
index 00000000..294d88ef
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_nfc_inert_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryNfcInertV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 5546B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_nfc_inert_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_NFC_INERT_V1: &'static <icu::properties::provider::PropertyBinaryNfcInertV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0<\0\0?\0\0A\0\0Q\0\0R\0\0[\0\0a\0\0q\0\0r\0\0{\0\0\xA8\0\0\xA9\0\0\xC0\0\0\xD0\0\0\xD1\0\0\xD7\0\0\xD8\0\0\xDE\0\0\xE0\0\0\xF0\0\0\xF1\0\0\xF7\0\0\xF8\0\0\xFE\0\0\xFF\0\0\x04\x01\0\x06\x01\0\x10\x01\0\x12\x01\0\x18\x01\0\x1A\x01\0\"\x01\0$\x01\0&\x01\0(\x01\0.\x01\x000\x01\x001\x01\09\x01\0;\x01\0=\x01\0?\x01\0C\x01\0E\x01\0G\x01\0I\x01\0L\x01\0R\x01\0T\x01\0V\x01\0X\x01\0^\x01\0`\x01\0b\x01\0d\x01\0f\x01\0h\x01\0r\x01\0t\x01\0\x80\x01\0\xA0\x01\0\xA2\x01\0\xAF\x01\0\xB1\x01\0\xB7\x01\0\xB8\x01\0\xCD\x01\0\xDD\x01\0\xDE\x01\0\xE2\x01\0\xE6\x01\0\xEC\x01\0\xF4\x01\0\xF6\x01\0\xF8\x01\0\xFC\x01\0\0\x02\0\x1C\x02\0\x1E\x02\0 \x02\0&\x02\x004\x02\0\x92\x02\0\x93\x02\0\0\x03\0O\x03\0P\x03\0p\x03\0t\x03\0u\x03\0~\x03\0\x7F\x03\0\x87\x03\0\x88\x03\0\x91\x03\0\x92\x03\0\x95\x03\0\x96\x03\0\x97\x03\0\x98\x03\0\x99\x03\0\x9A\x03\0\x9F\x03\0\xA0\x03\0\xA1\x03\0\xA2\x03\0\xA5\x03\0\xA6\x03\0\xA9\x03\0\xAA\x03\0\xAC\x03\0\xAD\x03\0\xAE\x03\0\xAF\x03\0\xB1\x03\0\xB2\x03\0\xB5\x03\0\xB6\x03\0\xB7\x03\0\xB8\x03\0\xB9\x03\0\xBA\x03\0\xBF\x03\0\xC0\x03\0\xC1\x03\0\xC2\x03\0\xC5\x03\0\xC6\x03\0\xC9\x03\0\xCC\x03\0\xCE\x03\0\xCF\x03\0\xD2\x03\0\xD3\x03\0\x06\x04\0\x07\x04\0\x10\x04\0\x11\x04\0\x13\x04\0\x14\x04\0\x15\x04\0\x19\x04\0\x1A\x04\0\x1B\x04\0\x1E\x04\0\x1F\x04\0#\x04\0$\x04\0'\x04\0(\x04\0+\x04\0,\x04\0-\x04\0.\x04\x000\x04\x001\x04\x003\x04\x004\x04\x005\x04\09\x04\0:\x04\0;\x04\0>\x04\0?\x04\0C\x04\0D\x04\0G\x04\0H\x04\0K\x04\0L\x04\0M\x04\0N\x04\0V\x04\0W\x04\0t\x04\0v\x04\0\x83\x04\0\x88\x04\0\xD8\x04\0\xDA\x04\0\xE8\x04\0\xEA\x04\0\x91\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\x10\x06\0\x1B\x06\0\"\x06\0$\x06\0'\x06\0(\x06\0H\x06\0I\x06\0J\x06\0`\x06\0p\x06\0q\x06\0\xC1\x06\0\xC2\x06\0\xD2\x06\0\xD3\x06\0\xD5\x06\0\xDD\x06\0\xDF\x06\0\xE5\x06\0\xE7\x06\0\xE9\x06\0\xEA\x06\0\xEE\x06\0\x11\x07\0\x12\x07\x000\x07\0K\x07\0\xEB\x07\0\xF4\x07\0\xFD\x07\0\xFE\x07\0\x16\x08\0\x1A\x08\0\x1B\x08\0$\x08\0%\x08\0(\x08\0)\x08\0.\x08\0Y\x08\0\\\x08\0\x97\x08\0\xA0\x08\0\xCA\x08\0\xE2\x08\0\xE3\x08\0\0\t\0(\t\0)\t\x000\t\x001\t\x003\t\x004\t\0<\t\0=\t\0M\t\0N\t\0Q\t\0U\t\0X\t\0`\t\0\xBC\t\0\xBD\t\0\xBE\t\0\xBF\t\0\xC7\t\0\xC8\t\0\xCD\t\0\xCE\t\0\xD7\t\0\xD8\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE0\t\0\xFE\t\0\xFF\t\x003\n\x004\n\x006\n\x007\n\0<\n\0=\n\0M\n\0N\n\0Y\n\0\\\n\0^\n\0_\n\0\xBC\n\0\xBD\n\0\xCD\n\0\xCE\n\0<\x0B\0=\x0B\0>\x0B\0?\x0B\0G\x0B\0H\x0B\0M\x0B\0N\x0B\0V\x0B\0X\x0B\0\\\x0B\0^\x0B\0\x92\x0B\0\x93\x0B\0\xBE\x0B\0\xBF\x0B\0\xC6\x0B\0\xC8\x0B\0\xCD\x0B\0\xCE\x0B\0\xD7\x0B\0\xD8\x0B\0<\x0C\0=\x0C\0F\x0C\0G\x0C\0M\x0C\0N\x0C\0U\x0C\0W\x0C\0\xBC\x0C\0\xBD\x0C\0\xBF\x0C\0\xC0\x0C\0\xC2\x0C\0\xC3\x0C\0\xC6\x0C\0\xC7\x0C\0\xCA\x0C\0\xCB\x0C\0\xCD\x0C\0\xCE\x0C\0\xD5\x0C\0\xD7\x0C\0;\r\0=\r\0>\r\0?\r\0F\r\0H\r\0M\r\0N\r\0W\r\0X\r\0\xCA\r\0\xCB\r\0\xCF\r\0\xD0\r\0\xD9\r\0\xDA\r\0\xDC\r\0\xDD\r\0\xDF\r\0\xE0\r\08\x0E\0;\x0E\0H\x0E\0L\x0E\0\xB8\x0E\0\xBB\x0E\0\xC8\x0E\0\xCC\x0E\0\x18\x0F\0\x1A\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0C\x0F\0D\x0F\0M\x0F\0N\x0F\0R\x0F\0S\x0F\0W\x0F\0X\x0F\0\\\x0F\0]\x0F\0i\x0F\0j\x0F\0q\x0F\0w\x0F\0x\x0F\0y\x0F\0z\x0F\0~\x0F\0\x80\x0F\0\x85\x0F\0\x86\x0F\0\x88\x0F\0\x93\x0F\0\x94\x0F\0\x9D\x0F\0\x9E\x0F\0\xA2\x0F\0\xA3\x0F\0\xA7\x0F\0\xA8\x0F\0\xAC\x0F\0\xAD\x0F\0\xB9\x0F\0\xBA\x0F\0\xC6\x0F\0\xC7\x0F\0%\x10\0&\x10\0.\x10\0/\x10\x007\x10\08\x10\09\x10\0;\x10\0\x8D\x10\0\x8E\x10\0\0\x11\0\x13\x11\0a\x11\0v\x11\0\xA8\x11\0\xC3\x11\0]\x13\0`\x13\0\x14\x17\0\x16\x17\x004\x17\x005\x17\0\xD2\x17\0\xD3\x17\0\xDD\x17\0\xDE\x17\0\xA9\x18\0\xAA\x18\09\x19\0<\x19\0\x17\x1A\0\x19\x1A\0`\x1A\0a\x1A\0u\x1A\0}\x1A\0\x7F\x1A\0\x80\x1A\0\xB0\x1A\0\xBE\x1A\0\xBF\x1A\0\xCF\x1A\0\x05\x1B\0\x06\x1B\0\x07\x1B\0\x08\x1B\0\t\x1B\0\n\x1B\0\x0B\x1B\0\x0C\x1B\0\r\x1B\0\x0E\x1B\0\x11\x1B\0\x12\x1B\x004\x1B\x006\x1B\0:\x1B\0;\x1B\0<\x1B\0=\x1B\0>\x1B\0@\x1B\0B\x1B\0C\x1B\0D\x1B\0E\x1B\0k\x1B\0t\x1B\0\xAA\x1B\0\xAC\x1B\0\xE6\x1B\0\xE7\x1B\0\xF2\x1B\0\xF4\x1B\x007\x1C\08\x1C\0\xD0\x1C\0\xD3\x1C\0\xD4\x1C\0\xE1\x1C\0\xE2\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF8\x1C\0\xFA\x1C\0\xC0\x1D\0\x04\x1E\0\n\x1E\0\x10\x1E\0\x12\x1E\0\x1C\x1E\0 \x1E\0(\x1E\0*\x1E\0B\x1E\0D\x1E\0T\x1E\0X\x1E\0~\x1E\0\x80\x1E\0\x88\x1E\0\x8E\x1E\0\x92\x1E\0\x96\x1E\0\x9A\x1E\0\xA0\x1E\0\xF4\x1E\0\xF6\x1E\0\xFA\x1E\0\0\x1F\0\x12\x1F\0\x18\x1F\0\x1A\x1F\0 \x1F\x002\x1F\08\x1F\0:\x1F\0@\x1F\0B\x1F\0H\x1F\0J\x1F\0P\x1F\0R\x1F\0Y\x1F\0Z\x1F\0`\x1F\0r\x1F\0s\x1F\0v\x1F\0w\x1F\0x\x1F\0y\x1F\0z\x1F\0{\x1F\0~\x1F\0\x80\x1F\0\x82\x1F\0\x88\x1F\0\x8A\x1F\0\x90\x1F\0\x92\x1F\0\x98\x1F\0\x9A\x1F\0\xA0\x1F\0\xA2\x1F\0\xA8\x1F\0\xAA\x1F\0\xB3\x1F\0\xB4\x1F\0\xB6\x1F\0\xB7\x1F\0\xBB\x1F\0\xBD\x1F\0\xBE\x1F\0\xC0\x1F\0\xC3\x1F\0\xC4\x1F\0\xC6\x1F\0\xC7\x1F\0\xC9\x1F\0\xCA\x1F\0\xCB\x1F\0\xCD\x1F\0\xD3\x1F\0\xD4\x1F\0\xDB\x1F\0\xDC\x1F\0\xE3\x1F\0\xE4\x1F\0\xEB\x1F\0\xEC\x1F\0\xEE\x1F\0\xF0\x1F\0\xF3\x1F\0\xF4\x1F\0\xF6\x1F\0\xF7\x1F\0\xF9\x1F\0\xFA\x1F\0\xFB\x1F\0\xFF\x1F\0\0 \0\x02 \0\xD0 \0\xDD \0\xE1 \0\xE2 \0\xE5 \0\xF1 \0&!\0'!\0*!\0,!\0\x90!\0\x91!\0\x92!\0\x93!\0\x94!\0\x95!\0\xD0!\0\xD1!\0\xD2!\0\xD3!\0\xD4!\0\xD5!\0\x03\"\0\x04\"\0\x08\"\0\t\"\0\x0B\"\0\x0C\"\0#\"\0$\"\0%\"\0&\"\0<\"\0=\"\0C\"\0D\"\0E\"\0F\"\0H\"\0I\"\0M\"\0N\"\0a\"\0b\"\0d\"\0f\"\0r\"\0t\"\0v\"\0x\"\0z\"\0~\"\0\x82\"\0\x84\"\0\x86\"\0\x88\"\0\x91\"\0\x93\"\0\xA2\"\0\xA3\"\0\xA8\"\0\xAA\"\0\xAB\"\0\xAC\"\0\xB2\"\0\xB6\"\0)#\0+#\0\xDC*\0\xDD*\0\xEF,\0\xF2,\0\x7F-\0\x80-\0\xE0-\0\0.\0*0\x0000\0F0\0G0\0K0\0L0\0M0\0N0\0O0\0P0\0Q0\0R0\0S0\0T0\0U0\0V0\0W0\0X0\0Y0\0Z0\0[0\0\\0\0]0\0^0\0_0\0`0\0a0\0b0\0d0\0e0\0f0\0g0\0h0\0i0\0o0\0p0\0r0\0s0\0u0\0v0\0x0\0y0\0{0\0|0\0\x990\0\x9B0\0\x9D0\0\x9E0\0\xA60\0\xA70\0\xAB0\0\xAC0\0\xAD0\0\xAE0\0\xAF0\0\xB00\0\xB10\0\xB20\0\xB30\0\xB40\0\xB50\0\xB60\0\xB70\0\xB80\0\xB90\0\xBA0\0\xBB0\0\xBC0\0\xBD0\0\xBE0\0\xBF0\0\xC00\0\xC10\0\xC20\0\xC40\0\xC50\0\xC60\0\xC70\0\xC80\0\xC90\0\xCF0\0\xD00\0\xD20\0\xD30\0\xD50\0\xD60\0\xD80\0\xD90\0\xDB0\0\xDC0\0\xEF0\0\xF30\0\xFD0\0\xFE0\0o\xA6\0p\xA6\0t\xA6\0~\xA6\0\x9E\xA6\0\xA0\xA6\0\xF0\xA6\0\xF2\xA6\0\x06\xA8\0\x07\xA8\0,\xA8\0-\xA8\0\xC4\xA8\0\xC5\xA8\0\xE0\xA8\0\xF2\xA8\0+\xA9\0.\xA9\0S\xA9\0T\xA9\0\xB3\xA9\0\xB4\xA9\0\xC0\xA9\0\xC1\xA9\0\xB0\xAA\0\xB1\xAA\0\xB2\xAA\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBE\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xF6\xAA\0\xF7\xAA\0\xED\xAB\0\xEE\xAB\0\0\xAC\0\x01\xAC\0\x1C\xAC\0\x1D\xAC\08\xAC\09\xAC\0T\xAC\0U\xAC\0p\xAC\0q\xAC\0\x8C\xAC\0\x8D\xAC\0\xA8\xAC\0\xA9\xAC\0\xC4\xAC\0\xC5\xAC\0\xE0\xAC\0\xE1\xAC\0\xFC\xAC\0\xFD\xAC\0\x18\xAD\0\x19\xAD\x004\xAD\x005\xAD\0P\xAD\0Q\xAD\0l\xAD\0m\xAD\0\x88\xAD\0\x89\xAD\0\xA4\xAD\0\xA5\xAD\0\xC0\xAD\0\xC1\xAD\0\xDC\xAD\0\xDD\xAD\0\xF8\xAD\0\xF9\xAD\0\x14\xAE\0\x15\xAE\x000\xAE\x001\xAE\0L\xAE\0M\xAE\0h\xAE\0i\xAE\0\x84\xAE\0\x85\xAE\0\xA0\xAE\0\xA1\xAE\0\xBC\xAE\0\xBD\xAE\0\xD8\xAE\0\xD9\xAE\0\xF4\xAE\0\xF5\xAE\0\x10\xAF\0\x11\xAF\0,\xAF\0-\xAF\0H\xAF\0I\xAF\0d\xAF\0e\xAF\0\x80\xAF\0\x81\xAF\0\x9C\xAF\0\x9D\xAF\0\xB8\xAF\0\xB9\xAF\0\xD4\xAF\0\xD5\xAF\0\xF0\xAF\0\xF1\xAF\0\x0C\xB0\0\r\xB0\0(\xB0\0)\xB0\0D\xB0\0E\xB0\0`\xB0\0a\xB0\0|\xB0\0}\xB0\0\x98\xB0\0\x99\xB0\0\xB4\xB0\0\xB5\xB0\0\xD0\xB0\0\xD1\xB0\0\xEC\xB0\0\xED\xB0\0\x08\xB1\0\t\xB1\0$\xB1\0%\xB1\0@\xB1\0A\xB1\0\\\xB1\0]\xB1\0x\xB1\0y\xB1\0\x94\xB1\0\x95\xB1\0\xB0\xB1\0\xB1\xB1\0\xCC\xB1\0\xCD\xB1\0\xE8\xB1\0\xE9\xB1\0\x04\xB2\0\x05\xB2\0 \xB2\0!\xB2\0<\xB2\0=\xB2\0X\xB2\0Y\xB2\0t\xB2\0u\xB2\0\x90\xB2\0\x91\xB2\0\xAC\xB2\0\xAD\xB2\0\xC8\xB2\0\xC9\xB2\0\xE4\xB2\0\xE5\xB2\0\0\xB3\0\x01\xB3\0\x1C\xB3\0\x1D\xB3\08\xB3\09\xB3\0T\xB3\0U\xB3\0p\xB3\0q\xB3\0\x8C\xB3\0\x8D\xB3\0\xA8\xB3\0\xA9\xB3\0\xC4\xB3\0\xC5\xB3\0\xE0\xB3\0\xE1\xB3\0\xFC\xB3\0\xFD\xB3\0\x18\xB4\0\x19\xB4\x004\xB4\x005\xB4\0P\xB4\0Q\xB4\0l\xB4\0m\xB4\0\x88\xB4\0\x89\xB4\0\xA4\xB4\0\xA5\xB4\0\xC0\xB4\0\xC1\xB4\0\xDC\xB4\0\xDD\xB4\0\xF8\xB4\0\xF9\xB4\0\x14\xB5\0\x15\xB5\x000\xB5\x001\xB5\0L\xB5\0M\xB5\0h\xB5\0i\xB5\0\x84\xB5\0\x85\xB5\0\xA0\xB5\0\xA1\xB5\0\xBC\xB5\0\xBD\xB5\0\xD8\xB5\0\xD9\xB5\0\xF4\xB5\0\xF5\xB5\0\x10\xB6\0\x11\xB6\0,\xB6\0-\xB6\0H\xB6\0I\xB6\0d\xB6\0e\xB6\0\x80\xB6\0\x81\xB6\0\x9C\xB6\0\x9D\xB6\0\xB8\xB6\0\xB9\xB6\0\xD4\xB6\0\xD5\xB6\0\xF0\xB6\0\xF1\xB6\0\x0C\xB7\0\r\xB7\0(\xB7\0)\xB7\0D\xB7\0E\xB7\0`\xB7\0a\xB7\0|\xB7\0}\xB7\0\x98\xB7\0\x99\xB7\0\xB4\xB7\0\xB5\xB7\0\xD0\xB7\0\xD1\xB7\0\xEC\xB7\0\xED\xB7\0\x08\xB8\0\t\xB8\0$\xB8\0%\xB8\0@\xB8\0A\xB8\0\\\xB8\0]\xB8\0x\xB8\0y\xB8\0\x94\xB8\0\x95\xB8\0\xB0\xB8\0\xB1\xB8\0\xCC\xB8\0\xCD\xB8\0\xE8\xB8\0\xE9\xB8\0\x04\xB9\0\x05\xB9\0 \xB9\0!\xB9\0<\xB9\0=\xB9\0X\xB9\0Y\xB9\0t\xB9\0u\xB9\0\x90\xB9\0\x91\xB9\0\xAC\xB9\0\xAD\xB9\0\xC8\xB9\0\xC9\xB9\0\xE4\xB9\0\xE5\xB9\0\0\xBA\0\x01\xBA\0\x1C\xBA\0\x1D\xBA\08\xBA\09\xBA\0T\xBA\0U\xBA\0p\xBA\0q\xBA\0\x8C\xBA\0\x8D\xBA\0\xA8\xBA\0\xA9\xBA\0\xC4\xBA\0\xC5\xBA\0\xE0\xBA\0\xE1\xBA\0\xFC\xBA\0\xFD\xBA\0\x18\xBB\0\x19\xBB\x004\xBB\x005\xBB\0P\xBB\0Q\xBB\0l\xBB\0m\xBB\0\x88\xBB\0\x89\xBB\0\xA4\xBB\0\xA5\xBB\0\xC0\xBB\0\xC1\xBB\0\xDC\xBB\0\xDD\xBB\0\xF8\xBB\0\xF9\xBB\0\x14\xBC\0\x15\xBC\x000\xBC\x001\xBC\0L\xBC\0M\xBC\0h\xBC\0i\xBC\0\x84\xBC\0\x85\xBC\0\xA0\xBC\0\xA1\xBC\0\xBC\xBC\0\xBD\xBC\0\xD8\xBC\0\xD9\xBC\0\xF4\xBC\0\xF5\xBC\0\x10\xBD\0\x11\xBD\0,\xBD\0-\xBD\0H\xBD\0I\xBD\0d\xBD\0e\xBD\0\x80\xBD\0\x81\xBD\0\x9C\xBD\0\x9D\xBD\0\xB8\xBD\0\xB9\xBD\0\xD4\xBD\0\xD5\xBD\0\xF0\xBD\0\xF1\xBD\0\x0C\xBE\0\r\xBE\0(\xBE\0)\xBE\0D\xBE\0E\xBE\0`\xBE\0a\xBE\0|\xBE\0}\xBE\0\x98\xBE\0\x99\xBE\0\xB4\xBE\0\xB5\xBE\0\xD0\xBE\0\xD1\xBE\0\xEC\xBE\0\xED\xBE\0\x08\xBF\0\t\xBF\0$\xBF\0%\xBF\0@\xBF\0A\xBF\0\\\xBF\0]\xBF\0x\xBF\0y\xBF\0\x94\xBF\0\x95\xBF\0\xB0\xBF\0\xB1\xBF\0\xCC\xBF\0\xCD\xBF\0\xE8\xBF\0\xE9\xBF\0\x04\xC0\0\x05\xC0\0 \xC0\0!\xC0\0<\xC0\0=\xC0\0X\xC0\0Y\xC0\0t\xC0\0u\xC0\0\x90\xC0\0\x91\xC0\0\xAC\xC0\0\xAD\xC0\0\xC8\xC0\0\xC9\xC0\0\xE4\xC0\0\xE5\xC0\0\0\xC1\0\x01\xC1\0\x1C\xC1\0\x1D\xC1\08\xC1\09\xC1\0T\xC1\0U\xC1\0p\xC1\0q\xC1\0\x8C\xC1\0\x8D\xC1\0\xA8\xC1\0\xA9\xC1\0\xC4\xC1\0\xC5\xC1\0\xE0\xC1\0\xE1\xC1\0\xFC\xC1\0\xFD\xC1\0\x18\xC2\0\x19\xC2\x004\xC2\x005\xC2\0P\xC2\0Q\xC2\0l\xC2\0m\xC2\0\x88\xC2\0\x89\xC2\0\xA4\xC2\0\xA5\xC2\0\xC0\xC2\0\xC1\xC2\0\xDC\xC2\0\xDD\xC2\0\xF8\xC2\0\xF9\xC2\0\x14\xC3\0\x15\xC3\x000\xC3\x001\xC3\0L\xC3\0M\xC3\0h\xC3\0i\xC3\0\x84\xC3\0\x85\xC3\0\xA0\xC3\0\xA1\xC3\0\xBC\xC3\0\xBD\xC3\0\xD8\xC3\0\xD9\xC3\0\xF4\xC3\0\xF5\xC3\0\x10\xC4\0\x11\xC4\0,\xC4\0-\xC4\0H\xC4\0I\xC4\0d\xC4\0e\xC4\0\x80\xC4\0\x81\xC4\0\x9C\xC4\0\x9D\xC4\0\xB8\xC4\0\xB9\xC4\0\xD4\xC4\0\xD5\xC4\0\xF0\xC4\0\xF1\xC4\0\x0C\xC5\0\r\xC5\0(\xC5\0)\xC5\0D\xC5\0E\xC5\0`\xC5\0a\xC5\0|\xC5\0}\xC5\0\x98\xC5\0\x99\xC5\0\xB4\xC5\0\xB5\xC5\0\xD0\xC5\0\xD1\xC5\0\xEC\xC5\0\xED\xC5\0\x08\xC6\0\t\xC6\0$\xC6\0%\xC6\0@\xC6\0A\xC6\0\\\xC6\0]\xC6\0x\xC6\0y\xC6\0\x94\xC6\0\x95\xC6\0\xB0\xC6\0\xB1\xC6\0\xCC\xC6\0\xCD\xC6\0\xE8\xC6\0\xE9\xC6\0\x04\xC7\0\x05\xC7\0 \xC7\0!\xC7\0<\xC7\0=\xC7\0X\xC7\0Y\xC7\0t\xC7\0u\xC7\0\x90\xC7\0\x91\xC7\0\xAC\xC7\0\xAD\xC7\0\xC8\xC7\0\xC9\xC7\0\xE4\xC7\0\xE5\xC7\0\0\xC8\0\x01\xC8\0\x1C\xC8\0\x1D\xC8\08\xC8\09\xC8\0T\xC8\0U\xC8\0p\xC8\0q\xC8\0\x8C\xC8\0\x8D\xC8\0\xA8\xC8\0\xA9\xC8\0\xC4\xC8\0\xC5\xC8\0\xE0\xC8\0\xE1\xC8\0\xFC\xC8\0\xFD\xC8\0\x18\xC9\0\x19\xC9\x004\xC9\x005\xC9\0P\xC9\0Q\xC9\0l\xC9\0m\xC9\0\x88\xC9\0\x89\xC9\0\xA4\xC9\0\xA5\xC9\0\xC0\xC9\0\xC1\xC9\0\xDC\xC9\0\xDD\xC9\0\xF8\xC9\0\xF9\xC9\0\x14\xCA\0\x15\xCA\x000\xCA\x001\xCA\0L\xCA\0M\xCA\0h\xCA\0i\xCA\0\x84\xCA\0\x85\xCA\0\xA0\xCA\0\xA1\xCA\0\xBC\xCA\0\xBD\xCA\0\xD8\xCA\0\xD9\xCA\0\xF4\xCA\0\xF5\xCA\0\x10\xCB\0\x11\xCB\0,\xCB\0-\xCB\0H\xCB\0I\xCB\0d\xCB\0e\xCB\0\x80\xCB\0\x81\xCB\0\x9C\xCB\0\x9D\xCB\0\xB8\xCB\0\xB9\xCB\0\xD4\xCB\0\xD5\xCB\0\xF0\xCB\0\xF1\xCB\0\x0C\xCC\0\r\xCC\0(\xCC\0)\xCC\0D\xCC\0E\xCC\0`\xCC\0a\xCC\0|\xCC\0}\xCC\0\x98\xCC\0\x99\xCC\0\xB4\xCC\0\xB5\xCC\0\xD0\xCC\0\xD1\xCC\0\xEC\xCC\0\xED\xCC\0\x08\xCD\0\t\xCD\0$\xCD\0%\xCD\0@\xCD\0A\xCD\0\\\xCD\0]\xCD\0x\xCD\0y\xCD\0\x94\xCD\0\x95\xCD\0\xB0\xCD\0\xB1\xCD\0\xCC\xCD\0\xCD\xCD\0\xE8\xCD\0\xE9\xCD\0\x04\xCE\0\x05\xCE\0 \xCE\0!\xCE\0<\xCE\0=\xCE\0X\xCE\0Y\xCE\0t\xCE\0u\xCE\0\x90\xCE\0\x91\xCE\0\xAC\xCE\0\xAD\xCE\0\xC8\xCE\0\xC9\xCE\0\xE4\xCE\0\xE5\xCE\0\0\xCF\0\x01\xCF\0\x1C\xCF\0\x1D\xCF\08\xCF\09\xCF\0T\xCF\0U\xCF\0p\xCF\0q\xCF\0\x8C\xCF\0\x8D\xCF\0\xA8\xCF\0\xA9\xCF\0\xC4\xCF\0\xC5\xCF\0\xE0\xCF\0\xE1\xCF\0\xFC\xCF\0\xFD\xCF\0\x18\xD0\0\x19\xD0\x004\xD0\x005\xD0\0P\xD0\0Q\xD0\0l\xD0\0m\xD0\0\x88\xD0\0\x89\xD0\0\xA4\xD0\0\xA5\xD0\0\xC0\xD0\0\xC1\xD0\0\xDC\xD0\0\xDD\xD0\0\xF8\xD0\0\xF9\xD0\0\x14\xD1\0\x15\xD1\x000\xD1\x001\xD1\0L\xD1\0M\xD1\0h\xD1\0i\xD1\0\x84\xD1\0\x85\xD1\0\xA0\xD1\0\xA1\xD1\0\xBC\xD1\0\xBD\xD1\0\xD8\xD1\0\xD9\xD1\0\xF4\xD1\0\xF5\xD1\0\x10\xD2\0\x11\xD2\0,\xD2\0-\xD2\0H\xD2\0I\xD2\0d\xD2\0e\xD2\0\x80\xD2\0\x81\xD2\0\x9C\xD2\0\x9D\xD2\0\xB8\xD2\0\xB9\xD2\0\xD4\xD2\0\xD5\xD2\0\xF0\xD2\0\xF1\xD2\0\x0C\xD3\0\r\xD3\0(\xD3\0)\xD3\0D\xD3\0E\xD3\0`\xD3\0a\xD3\0|\xD3\0}\xD3\0\x98\xD3\0\x99\xD3\0\xB4\xD3\0\xB5\xD3\0\xD0\xD3\0\xD1\xD3\0\xEC\xD3\0\xED\xD3\0\x08\xD4\0\t\xD4\0$\xD4\0%\xD4\0@\xD4\0A\xD4\0\\\xD4\0]\xD4\0x\xD4\0y\xD4\0\x94\xD4\0\x95\xD4\0\xB0\xD4\0\xB1\xD4\0\xCC\xD4\0\xCD\xD4\0\xE8\xD4\0\xE9\xD4\0\x04\xD5\0\x05\xD5\0 \xD5\0!\xD5\0<\xD5\0=\xD5\0X\xD5\0Y\xD5\0t\xD5\0u\xD5\0\x90\xD5\0\x91\xD5\0\xAC\xD5\0\xAD\xD5\0\xC8\xD5\0\xC9\xD5\0\xE4\xD5\0\xE5\xD5\0\0\xD6\0\x01\xD6\0\x1C\xD6\0\x1D\xD6\08\xD6\09\xD6\0T\xD6\0U\xD6\0p\xD6\0q\xD6\0\x8C\xD6\0\x8D\xD6\0\xA8\xD6\0\xA9\xD6\0\xC4\xD6\0\xC5\xD6\0\xE0\xD6\0\xE1\xD6\0\xFC\xD6\0\xFD\xD6\0\x18\xD7\0\x19\xD7\x004\xD7\x005\xD7\0P\xD7\0Q\xD7\0l\xD7\0m\xD7\0\x88\xD7\0\x89\xD7\0\0\xF9\0\x0E\xFA\0\x10\xFA\0\x11\xFA\0\x12\xFA\0\x13\xFA\0\x15\xFA\0\x1F\xFA\0 \xFA\0!\xFA\0\"\xFA\0#\xFA\0%\xFA\0'\xFA\0*\xFA\0n\xFA\0p\xFA\0\xDA\xFA\0\x1D\xFB\0 \xFB\0*\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0O\xFB\0 \xFE\x000\xFE\0\xFD\x01\x01\xFE\x01\x01\xE0\x02\x01\xE1\x02\x01v\x03\x01{\x03\x01\xD2\x05\x01\xD3\x05\x01\xDA\x05\x01\xDB\x05\x01\r\n\x01\x0E\n\x01\x0F\n\x01\x10\n\x018\n\x01;\n\x01?\n\x01@\n\x01\xE5\n\x01\xE7\n\x01$\r\x01(\r\x01i\r\x01n\r\x01\xAB\x0E\x01\xAD\x0E\x01\xFD\x0E\x01\0\x0F\x01F\x0F\x01Q\x0F\x01\x82\x0F\x01\x86\x0F\x01F\x10\x01G\x10\x01p\x10\x01q\x10\x01\x7F\x10\x01\x80\x10\x01\x99\x10\x01\x9A\x10\x01\x9B\x10\x01\x9C\x10\x01\xA5\x10\x01\xA6\x10\x01\xB9\x10\x01\xBB\x10\x01\0\x11\x01\x03\x11\x01'\x11\x01(\x11\x011\x11\x015\x11\x01s\x11\x01t\x11\x01\xC0\x11\x01\xC1\x11\x01\xCA\x11\x01\xCB\x11\x015\x12\x017\x12\x01\xE9\x12\x01\xEB\x12\x01;\x13\x01=\x13\x01>\x13\x01?\x13\x01G\x13\x01H\x13\x01M\x13\x01N\x13\x01W\x13\x01X\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\x82\x13\x01\x83\x13\x01\x84\x13\x01\x85\x13\x01\x8B\x13\x01\x8C\x13\x01\x90\x13\x01\x91\x13\x01\xB8\x13\x01\xB9\x13\x01\xBB\x13\x01\xBC\x13\x01\xC2\x13\x01\xC3\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xCA\x13\x01\xCE\x13\x01\xD1\x13\x01B\x14\x01C\x14\x01F\x14\x01G\x14\x01^\x14\x01_\x14\x01\xB0\x14\x01\xB1\x14\x01\xB9\x14\x01\xBB\x14\x01\xBD\x14\x01\xBE\x14\x01\xC2\x14\x01\xC4\x14\x01\xAF\x15\x01\xB0\x15\x01\xB8\x15\x01\xBA\x15\x01\xBF\x15\x01\xC1\x15\x01?\x16\x01@\x16\x01\xB6\x16\x01\xB8\x16\x01+\x17\x01,\x17\x019\x18\x01;\x18\x010\x19\x011\x19\x015\x19\x016\x19\x01=\x19\x01?\x19\x01C\x19\x01D\x19\x01\xE0\x19\x01\xE1\x19\x014\x1A\x015\x1A\x01G\x1A\x01H\x1A\x01\x99\x1A\x01\x9A\x1A\x01?\x1C\x01@\x1C\x01B\x1D\x01C\x1D\x01D\x1D\x01F\x1D\x01\x97\x1D\x01\x98\x1D\x01A\x1F\x01C\x1F\x01\x1Ea\x01*a\x01/a\x010a\x01\xF0j\x01\xF5j\x010k\x017k\x01cm\x01dm\x01gm\x01jm\x01\xF0o\x01\xF2o\x01\x9E\xBC\x01\x9F\xBC\x01^\xD1\x01j\xD1\x01m\xD1\x01s\xD1\x01{\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x01\xBB\xD1\x01\xC1\xD1\x01B\xD2\x01E\xD2\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x01\x8F\xE0\x01\x90\xE0\x010\xE1\x017\xE1\x01\xAE\xE2\x01\xAF\xE2\x01\xEC\xE2\x01\xF0\xE2\x01\xEC\xE4\x01\xF0\xE4\x01\xEE\xE5\x01\xF0\xE5\x01\xD0\xE8\x01\xD7\xE8\x01D\xE9\x01K\xE9\x01\0\xF8\x02\x1E\xFA\x02\0\0\x11") }, 1110777u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryNfcInertV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryNfcInertV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_NFC_INERT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfcInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_nfc_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryNfcInertV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_nfc_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryNfcInertV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfcInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_nfc_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryNfcInertV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfcInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryNfcInertV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_nfc_inert_v1 as impl_property_binary_nfc_inert_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_nfd_inert_v1.rs.data b/vendor/icu_properties_data/data/property_binary_nfd_inert_v1.rs.data
new file mode 100644
index 00000000..76f30d83
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_nfd_inert_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryNfdInertV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 2564B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_nfd_inert_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_NFD_INERT_V1: &'static <icu::properties::provider::PropertyBinaryNfdInertV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\xC0\0\0\xC6\0\0\xC7\0\0\xD0\0\0\xD1\0\0\xD7\0\0\xD9\0\0\xDE\0\0\xE0\0\0\xE6\0\0\xE7\0\0\xF0\0\0\xF1\0\0\xF7\0\0\xF9\0\0\xFE\0\0\xFF\0\0\x10\x01\0\x12\x01\0&\x01\0(\x01\x001\x01\x004\x01\08\x01\09\x01\0?\x01\0C\x01\0I\x01\0L\x01\0R\x01\0T\x01\0f\x01\0h\x01\0\x7F\x01\0\xA0\x01\0\xA2\x01\0\xAF\x01\0\xB1\x01\0\xCD\x01\0\xDD\x01\0\xDE\x01\0\xE4\x01\0\xE6\x01\0\xF1\x01\0\xF4\x01\0\xF6\x01\0\xF8\x01\0\x1C\x02\0\x1E\x02\0 \x02\0&\x02\x004\x02\0\0\x03\0O\x03\0P\x03\0p\x03\0t\x03\0u\x03\0~\x03\0\x7F\x03\0\x85\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\x91\x03\0\xAA\x03\0\xB1\x03\0\xCA\x03\0\xCF\x03\0\xD3\x03\0\xD5\x03\0\0\x04\0\x02\x04\0\x03\x04\0\x04\x04\0\x07\x04\0\x08\x04\0\x0C\x04\0\x0F\x04\0\x19\x04\0\x1A\x04\09\x04\0:\x04\0P\x04\0R\x04\0S\x04\0T\x04\0W\x04\0X\x04\0\\\x04\0_\x04\0v\x04\0x\x04\0\x83\x04\0\x88\x04\0\xC1\x04\0\xC3\x04\0\xD0\x04\0\xD4\x04\0\xD6\x04\0\xD8\x04\0\xDA\x04\0\xE0\x04\0\xE2\x04\0\xE8\x04\0\xEA\x04\0\xF6\x04\0\xF8\x04\0\xFA\x04\0\x91\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\x10\x06\0\x1B\x06\0\"\x06\0'\x06\0K\x06\0`\x06\0p\x06\0q\x06\0\xC0\x06\0\xC1\x06\0\xC2\x06\0\xC3\x06\0\xD3\x06\0\xD4\x06\0\xD6\x06\0\xDD\x06\0\xDF\x06\0\xE5\x06\0\xE7\x06\0\xE9\x06\0\xEA\x06\0\xEE\x06\0\x11\x07\0\x12\x07\x000\x07\0K\x07\0\xEB\x07\0\xF4\x07\0\xFD\x07\0\xFE\x07\0\x16\x08\0\x1A\x08\0\x1B\x08\0$\x08\0%\x08\0(\x08\0)\x08\0.\x08\0Y\x08\0\\\x08\0\x97\x08\0\xA0\x08\0\xCA\x08\0\xE2\x08\0\xE3\x08\0\0\t\0)\t\0*\t\x001\t\x002\t\x004\t\x005\t\0<\t\0=\t\0M\t\0N\t\0Q\t\0U\t\0X\t\0`\t\0\xBC\t\0\xBD\t\0\xCB\t\0\xCE\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE0\t\0\xFE\t\0\xFF\t\x003\n\x004\n\x006\n\x007\n\0<\n\0=\n\0M\n\0N\n\0Y\n\0\\\n\0^\n\0_\n\0\xBC\n\0\xBD\n\0\xCD\n\0\xCE\n\0<\x0B\0=\x0B\0H\x0B\0I\x0B\0K\x0B\0N\x0B\0\\\x0B\0^\x0B\0\x94\x0B\0\x95\x0B\0\xCA\x0B\0\xCE\x0B\0<\x0C\0=\x0C\0H\x0C\0I\x0C\0M\x0C\0N\x0C\0U\x0C\0W\x0C\0\xBC\x0C\0\xBD\x0C\0\xC0\x0C\0\xC1\x0C\0\xC7\x0C\0\xC9\x0C\0\xCA\x0C\0\xCC\x0C\0\xCD\x0C\0\xCE\x0C\0;\r\0=\r\0J\r\0N\r\0\xCA\r\0\xCB\r\0\xDA\r\0\xDB\r\0\xDC\r\0\xDF\r\08\x0E\0;\x0E\0H\x0E\0L\x0E\0\xB8\x0E\0\xBB\x0E\0\xC8\x0E\0\xCC\x0E\0\x18\x0F\0\x1A\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0C\x0F\0D\x0F\0M\x0F\0N\x0F\0R\x0F\0S\x0F\0W\x0F\0X\x0F\0\\\x0F\0]\x0F\0i\x0F\0j\x0F\0q\x0F\0w\x0F\0x\x0F\0y\x0F\0z\x0F\0~\x0F\0\x80\x0F\0\x85\x0F\0\x86\x0F\0\x88\x0F\0\x93\x0F\0\x94\x0F\0\x9D\x0F\0\x9E\x0F\0\xA2\x0F\0\xA3\x0F\0\xA7\x0F\0\xA8\x0F\0\xAC\x0F\0\xAD\x0F\0\xB9\x0F\0\xBA\x0F\0\xC6\x0F\0\xC7\x0F\0&\x10\0'\x10\x007\x10\08\x10\09\x10\0;\x10\0\x8D\x10\0\x8E\x10\0]\x13\0`\x13\0\x14\x17\0\x16\x17\x004\x17\x005\x17\0\xD2\x17\0\xD3\x17\0\xDD\x17\0\xDE\x17\0\xA9\x18\0\xAA\x18\09\x19\0<\x19\0\x17\x1A\0\x19\x1A\0`\x1A\0a\x1A\0u\x1A\0}\x1A\0\x7F\x1A\0\x80\x1A\0\xB0\x1A\0\xBE\x1A\0\xBF\x1A\0\xCF\x1A\0\x06\x1B\0\x07\x1B\0\x08\x1B\0\t\x1B\0\n\x1B\0\x0B\x1B\0\x0C\x1B\0\r\x1B\0\x0E\x1B\0\x0F\x1B\0\x12\x1B\0\x13\x1B\x004\x1B\x005\x1B\0;\x1B\0<\x1B\0=\x1B\0>\x1B\0@\x1B\0B\x1B\0C\x1B\0E\x1B\0k\x1B\0t\x1B\0\xAA\x1B\0\xAC\x1B\0\xE6\x1B\0\xE7\x1B\0\xF2\x1B\0\xF4\x1B\x007\x1C\08\x1C\0\xD0\x1C\0\xD3\x1C\0\xD4\x1C\0\xE1\x1C\0\xE2\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF8\x1C\0\xFA\x1C\0\xC0\x1D\0\x9A\x1E\0\x9B\x1E\0\x9C\x1E\0\xA0\x1E\0\xFA\x1E\0\0\x1F\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC1\x1F\0\xC5\x1F\0\xC6\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xDD\x1F\0\xF0\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFE\x1F\0\0 \0\x02 \0\xD0 \0\xDD \0\xE1 \0\xE2 \0\xE5 \0\xF1 \0&!\0'!\0*!\0,!\0\x9A!\0\x9C!\0\xAE!\0\xAF!\0\xCD!\0\xD0!\0\x04\"\0\x05\"\0\t\"\0\n\"\0\x0C\"\0\r\"\0$\"\0%\"\0&\"\0'\"\0A\"\0B\"\0D\"\0E\"\0G\"\0H\"\0I\"\0J\"\0`\"\0a\"\0b\"\0c\"\0m\"\0r\"\0t\"\0v\"\0x\"\0z\"\0\x80\"\0\x82\"\0\x84\"\0\x86\"\0\x88\"\0\x8A\"\0\xAC\"\0\xB0\"\0\xE0\"\0\xE4\"\0\xEA\"\0\xEE\"\0)#\0+#\0\xDC*\0\xDD*\0\xEF,\0\xF2,\0\x7F-\0\x80-\0\xE0-\0\0.\0*0\x0000\0L0\0M0\0N0\0O0\0P0\0Q0\0R0\0S0\0T0\0U0\0V0\0W0\0X0\0Y0\0Z0\0[0\0\\0\0]0\0^0\0_0\0`0\0a0\0b0\0c0\0e0\0f0\0g0\0h0\0i0\0j0\0p0\0r0\0s0\0u0\0v0\0x0\0y0\0{0\0|0\0~0\0\x940\0\x950\0\x990\0\x9B0\0\x9E0\0\x9F0\0\xAC0\0\xAD0\0\xAE0\0\xAF0\0\xB00\0\xB10\0\xB20\0\xB30\0\xB40\0\xB50\0\xB60\0\xB70\0\xB80\0\xB90\0\xBA0\0\xBB0\0\xBC0\0\xBD0\0\xBE0\0\xBF0\0\xC00\0\xC10\0\xC20\0\xC30\0\xC50\0\xC60\0\xC70\0\xC80\0\xC90\0\xCA0\0\xD00\0\xD20\0\xD30\0\xD50\0\xD60\0\xD80\0\xD90\0\xDB0\0\xDC0\0\xDE0\0\xF40\0\xF50\0\xF70\0\xFB0\0\xFE0\0\xFF0\0o\xA6\0p\xA6\0t\xA6\0~\xA6\0\x9E\xA6\0\xA0\xA6\0\xF0\xA6\0\xF2\xA6\0\x06\xA8\0\x07\xA8\0,\xA8\0-\xA8\0\xC4\xA8\0\xC5\xA8\0\xE0\xA8\0\xF2\xA8\0+\xA9\0.\xA9\0S\xA9\0T\xA9\0\xB3\xA9\0\xB4\xA9\0\xC0\xA9\0\xC1\xA9\0\xB0\xAA\0\xB1\xAA\0\xB2\xAA\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBE\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xF6\xAA\0\xF7\xAA\0\xED\xAB\0\xEE\xAB\0\0\xAC\0\xA4\xD7\0\0\xF9\0\x0E\xFA\0\x10\xFA\0\x11\xFA\0\x12\xFA\0\x13\xFA\0\x15\xFA\0\x1F\xFA\0 \xFA\0!\xFA\0\"\xFA\0#\xFA\0%\xFA\0'\xFA\0*\xFA\0n\xFA\0p\xFA\0\xDA\xFA\0\x1D\xFB\0 \xFB\0*\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0O\xFB\0 \xFE\x000\xFE\0\xFD\x01\x01\xFE\x01\x01\xE0\x02\x01\xE1\x02\x01v\x03\x01{\x03\x01\xC9\x05\x01\xCA\x05\x01\xE4\x05\x01\xE5\x05\x01\r\n\x01\x0E\n\x01\x0F\n\x01\x10\n\x018\n\x01;\n\x01?\n\x01@\n\x01\xE5\n\x01\xE7\n\x01$\r\x01(\r\x01i\r\x01n\r\x01\xAB\x0E\x01\xAD\x0E\x01\xFD\x0E\x01\0\x0F\x01F\x0F\x01Q\x0F\x01\x82\x0F\x01\x86\x0F\x01F\x10\x01G\x10\x01p\x10\x01q\x10\x01\x7F\x10\x01\x80\x10\x01\x9A\x10\x01\x9B\x10\x01\x9C\x10\x01\x9D\x10\x01\xAB\x10\x01\xAC\x10\x01\xB9\x10\x01\xBB\x10\x01\0\x11\x01\x03\x11\x01.\x11\x010\x11\x013\x11\x015\x11\x01s\x11\x01t\x11\x01\xC0\x11\x01\xC1\x11\x01\xCA\x11\x01\xCB\x11\x015\x12\x017\x12\x01\xE9\x12\x01\xEB\x12\x01;\x13\x01=\x13\x01K\x13\x01N\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\x83\x13\x01\x84\x13\x01\x85\x13\x01\x86\x13\x01\x8E\x13\x01\x8F\x13\x01\x91\x13\x01\x92\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xC9\x13\x01\xCE\x13\x01\xD1\x13\x01B\x14\x01C\x14\x01F\x14\x01G\x14\x01^\x14\x01_\x14\x01\xBB\x14\x01\xBD\x14\x01\xBE\x14\x01\xBF\x14\x01\xC2\x14\x01\xC4\x14\x01\xBA\x15\x01\xBC\x15\x01\xBF\x15\x01\xC1\x15\x01?\x16\x01@\x16\x01\xB6\x16\x01\xB8\x16\x01+\x17\x01,\x17\x019\x18\x01;\x18\x018\x19\x019\x19\x01=\x19\x01?\x19\x01C\x19\x01D\x19\x01\xE0\x19\x01\xE1\x19\x014\x1A\x015\x1A\x01G\x1A\x01H\x1A\x01\x99\x1A\x01\x9A\x1A\x01?\x1C\x01@\x1C\x01B\x1D\x01C\x1D\x01D\x1D\x01F\x1D\x01\x97\x1D\x01\x98\x1D\x01A\x1F\x01C\x1F\x01!a\x01)a\x01/a\x010a\x01\xF0j\x01\xF5j\x010k\x017k\x01hm\x01km\x01\xF0o\x01\xF2o\x01\x9E\xBC\x01\x9F\xBC\x01^\xD1\x01j\xD1\x01m\xD1\x01s\xD1\x01{\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x01\xBB\xD1\x01\xC1\xD1\x01B\xD2\x01E\xD2\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x01\x8F\xE0\x01\x90\xE0\x010\xE1\x017\xE1\x01\xAE\xE2\x01\xAF\xE2\x01\xEC\xE2\x01\xF0\xE2\x01\xEC\xE4\x01\xF0\xE4\x01\xEE\xE5\x01\xF0\xE5\x01\xD0\xE8\x01\xD7\xE8\x01D\xE9\x01K\xE9\x01\0\xF8\x02\x1E\xFA\x02\0\0\x11") }, 1099929u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryNfdInertV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryNfdInertV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_NFD_INERT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfdInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_nfd_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryNfdInertV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_nfd_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryNfdInertV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfdInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_nfd_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryNfdInertV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfdInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryNfdInertV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_nfd_inert_v1 as impl_property_binary_nfd_inert_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_nfkc_inert_v1.rs.data b/vendor/icu_properties_data/data/property_binary_nfkc_inert_v1.rs.data
new file mode 100644
index 00000000..1655c85e
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_nfkc_inert_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryNfkcInertV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 6548B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_nfkc_inert_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1: &'static <icu::properties::provider::PropertyBinaryNfkcInertV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0<\0\0?\0\0A\0\0Q\0\0R\0\0[\0\0a\0\0q\0\0r\0\0{\0\0\xA0\0\0\xA1\0\0\xA8\0\0\xA9\0\0\xAA\0\0\xAB\0\0\xAF\0\0\xB0\0\0\xB2\0\0\xB6\0\0\xB8\0\0\xBB\0\0\xBC\0\0\xBF\0\0\xC0\0\0\xD0\0\0\xD1\0\0\xD7\0\0\xD8\0\0\xDE\0\0\xE0\0\0\xF0\0\0\xF1\0\0\xF7\0\0\xF8\0\0\xFE\0\0\xFF\0\0\x04\x01\0\x06\x01\0\x10\x01\0\x12\x01\0\x18\x01\0\x1A\x01\0\"\x01\0$\x01\0&\x01\0(\x01\0.\x01\x000\x01\x001\x01\x002\x01\x004\x01\09\x01\0;\x01\0=\x01\0A\x01\0C\x01\0E\x01\0G\x01\0J\x01\0L\x01\0R\x01\0T\x01\0V\x01\0X\x01\0^\x01\0`\x01\0b\x01\0d\x01\0f\x01\0h\x01\0r\x01\0t\x01\0\x80\x01\0\xA0\x01\0\xA2\x01\0\xAF\x01\0\xB1\x01\0\xB7\x01\0\xB8\x01\0\xC4\x01\0\xDD\x01\0\xDE\x01\0\xE2\x01\0\xE6\x01\0\xEC\x01\0\xF1\x01\0\xF6\x01\0\xF8\x01\0\xFC\x01\0\0\x02\0\x1C\x02\0\x1E\x02\0 \x02\0&\x02\x004\x02\0\x92\x02\0\x93\x02\0\xB0\x02\0\xB9\x02\0\xD8\x02\0\xDE\x02\0\xE0\x02\0\xE5\x02\0\0\x03\0O\x03\0P\x03\0p\x03\0t\x03\0u\x03\0z\x03\0{\x03\0~\x03\0\x7F\x03\0\x84\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x91\x03\0\x92\x03\0\x95\x03\0\x96\x03\0\x97\x03\0\x98\x03\0\x99\x03\0\x9A\x03\0\x9F\x03\0\xA0\x03\0\xA1\x03\0\xA2\x03\0\xA5\x03\0\xA6\x03\0\xA9\x03\0\xAA\x03\0\xAC\x03\0\xAD\x03\0\xAE\x03\0\xAF\x03\0\xB1\x03\0\xB2\x03\0\xB5\x03\0\xB6\x03\0\xB7\x03\0\xB8\x03\0\xB9\x03\0\xBA\x03\0\xBF\x03\0\xC0\x03\0\xC1\x03\0\xC2\x03\0\xC5\x03\0\xC6\x03\0\xC9\x03\0\xCC\x03\0\xCE\x03\0\xCF\x03\0\xD0\x03\0\xD7\x03\0\xF0\x03\0\xF3\x03\0\xF4\x03\0\xF6\x03\0\xF9\x03\0\xFA\x03\0\x06\x04\0\x07\x04\0\x10\x04\0\x11\x04\0\x13\x04\0\x14\x04\0\x15\x04\0\x19\x04\0\x1A\x04\0\x1B\x04\0\x1E\x04\0\x1F\x04\0#\x04\0$\x04\0'\x04\0(\x04\0+\x04\0,\x04\0-\x04\0.\x04\x000\x04\x001\x04\x003\x04\x004\x04\x005\x04\09\x04\0:\x04\0;\x04\0>\x04\0?\x04\0C\x04\0D\x04\0G\x04\0H\x04\0K\x04\0L\x04\0M\x04\0N\x04\0V\x04\0W\x04\0t\x04\0v\x04\0\x83\x04\0\x88\x04\0\xD8\x04\0\xDA\x04\0\xE8\x04\0\xEA\x04\0\x87\x05\0\x88\x05\0\x91\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\x10\x06\0\x1B\x06\0\"\x06\0$\x06\0'\x06\0(\x06\0H\x06\0I\x06\0J\x06\0`\x06\0p\x06\0q\x06\0u\x06\0y\x06\0\xC1\x06\0\xC2\x06\0\xD2\x06\0\xD3\x06\0\xD5\x06\0\xDD\x06\0\xDF\x06\0\xE5\x06\0\xE7\x06\0\xE9\x06\0\xEA\x06\0\xEE\x06\0\x11\x07\0\x12\x07\x000\x07\0K\x07\0\xEB\x07\0\xF4\x07\0\xFD\x07\0\xFE\x07\0\x16\x08\0\x1A\x08\0\x1B\x08\0$\x08\0%\x08\0(\x08\0)\x08\0.\x08\0Y\x08\0\\\x08\0\x97\x08\0\xA0\x08\0\xCA\x08\0\xE2\x08\0\xE3\x08\0\0\t\0(\t\0)\t\x000\t\x001\t\x003\t\x004\t\0<\t\0=\t\0M\t\0N\t\0Q\t\0U\t\0X\t\0`\t\0\xBC\t\0\xBD\t\0\xBE\t\0\xBF\t\0\xC7\t\0\xC8\t\0\xCD\t\0\xCE\t\0\xD7\t\0\xD8\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE0\t\0\xFE\t\0\xFF\t\x003\n\x004\n\x006\n\x007\n\0<\n\0=\n\0M\n\0N\n\0Y\n\0\\\n\0^\n\0_\n\0\xBC\n\0\xBD\n\0\xCD\n\0\xCE\n\0<\x0B\0=\x0B\0>\x0B\0?\x0B\0G\x0B\0H\x0B\0M\x0B\0N\x0B\0V\x0B\0X\x0B\0\\\x0B\0^\x0B\0\x92\x0B\0\x93\x0B\0\xBE\x0B\0\xBF\x0B\0\xC6\x0B\0\xC8\x0B\0\xCD\x0B\0\xCE\x0B\0\xD7\x0B\0\xD8\x0B\0<\x0C\0=\x0C\0F\x0C\0G\x0C\0M\x0C\0N\x0C\0U\x0C\0W\x0C\0\xBC\x0C\0\xBD\x0C\0\xBF\x0C\0\xC0\x0C\0\xC2\x0C\0\xC3\x0C\0\xC6\x0C\0\xC7\x0C\0\xCA\x0C\0\xCB\x0C\0\xCD\x0C\0\xCE\x0C\0\xD5\x0C\0\xD7\x0C\0;\r\0=\r\0>\r\0?\r\0F\r\0H\r\0M\r\0N\r\0W\r\0X\r\0\xCA\r\0\xCB\r\0\xCF\r\0\xD0\r\0\xD9\r\0\xDA\r\0\xDC\r\0\xDD\r\0\xDF\r\0\xE0\r\x003\x0E\x004\x0E\08\x0E\0;\x0E\0H\x0E\0L\x0E\0\xB3\x0E\0\xB4\x0E\0\xB8\x0E\0\xBB\x0E\0\xC8\x0E\0\xCC\x0E\0\xDC\x0E\0\xDE\x0E\0\x0C\x0F\0\r\x0F\0\x18\x0F\0\x1A\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0C\x0F\0D\x0F\0M\x0F\0N\x0F\0R\x0F\0S\x0F\0W\x0F\0X\x0F\0\\\x0F\0]\x0F\0i\x0F\0j\x0F\0q\x0F\0~\x0F\0\x80\x0F\0\x85\x0F\0\x86\x0F\0\x88\x0F\0\x93\x0F\0\x94\x0F\0\x9D\x0F\0\x9E\x0F\0\xA2\x0F\0\xA3\x0F\0\xA7\x0F\0\xA8\x0F\0\xAC\x0F\0\xAD\x0F\0\xB9\x0F\0\xBA\x0F\0\xC6\x0F\0\xC7\x0F\0%\x10\0&\x10\0.\x10\0/\x10\x007\x10\08\x10\09\x10\0;\x10\0\x8D\x10\0\x8E\x10\0\xFC\x10\0\xFD\x10\0\0\x11\0\x13\x11\0a\x11\0v\x11\0\xA8\x11\0\xC3\x11\0]\x13\0`\x13\0\x14\x17\0\x16\x17\x004\x17\x005\x17\0\xD2\x17\0\xD3\x17\0\xDD\x17\0\xDE\x17\0\xA9\x18\0\xAA\x18\09\x19\0<\x19\0\x17\x1A\0\x19\x1A\0`\x1A\0a\x1A\0u\x1A\0}\x1A\0\x7F\x1A\0\x80\x1A\0\xB0\x1A\0\xBE\x1A\0\xBF\x1A\0\xCF\x1A\0\x05\x1B\0\x06\x1B\0\x07\x1B\0\x08\x1B\0\t\x1B\0\n\x1B\0\x0B\x1B\0\x0C\x1B\0\r\x1B\0\x0E\x1B\0\x11\x1B\0\x12\x1B\x004\x1B\x006\x1B\0:\x1B\0;\x1B\0<\x1B\0=\x1B\0>\x1B\0@\x1B\0B\x1B\0C\x1B\0D\x1B\0E\x1B\0k\x1B\0t\x1B\0\xAA\x1B\0\xAC\x1B\0\xE6\x1B\0\xE7\x1B\0\xF2\x1B\0\xF4\x1B\x007\x1C\08\x1C\0\xD0\x1C\0\xD3\x1C\0\xD4\x1C\0\xE1\x1C\0\xE2\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF8\x1C\0\xFA\x1C\0,\x1D\0/\x1D\x000\x1D\0;\x1D\0<\x1D\0N\x1D\0O\x1D\0k\x1D\0x\x1D\0y\x1D\0\x9B\x1D\0\x04\x1E\0\n\x1E\0\x10\x1E\0\x12\x1E\0\x1C\x1E\0 \x1E\0(\x1E\0*\x1E\0B\x1E\0D\x1E\0T\x1E\0X\x1E\0~\x1E\0\x80\x1E\0\x88\x1E\0\x8E\x1E\0\x92\x1E\0\x96\x1E\0\x9C\x1E\0\xA0\x1E\0\xF4\x1E\0\xF6\x1E\0\xFA\x1E\0\0\x1F\0\x12\x1F\0\x18\x1F\0\x1A\x1F\0 \x1F\x002\x1F\08\x1F\0:\x1F\0@\x1F\0B\x1F\0H\x1F\0J\x1F\0P\x1F\0R\x1F\0Y\x1F\0Z\x1F\0`\x1F\0r\x1F\0s\x1F\0v\x1F\0w\x1F\0x\x1F\0y\x1F\0z\x1F\0{\x1F\0~\x1F\0\x80\x1F\0\x82\x1F\0\x88\x1F\0\x8A\x1F\0\x90\x1F\0\x92\x1F\0\x98\x1F\0\x9A\x1F\0\xA0\x1F\0\xA2\x1F\0\xA8\x1F\0\xAA\x1F\0\xB3\x1F\0\xB4\x1F\0\xB6\x1F\0\xB7\x1F\0\xBB\x1F\0\xC2\x1F\0\xC3\x1F\0\xC4\x1F\0\xC6\x1F\0\xC7\x1F\0\xC9\x1F\0\xCA\x1F\0\xCB\x1F\0\xD0\x1F\0\xD3\x1F\0\xD4\x1F\0\xDB\x1F\0\xDC\x1F\0\xDD\x1F\0\xE0\x1F\0\xE3\x1F\0\xE4\x1F\0\xEB\x1F\0\xEC\x1F\0\xED\x1F\0\xF0\x1F\0\xF3\x1F\0\xF4\x1F\0\xF6\x1F\0\xF7\x1F\0\xF9\x1F\0\xFA\x1F\0\xFB\x1F\0\xFF\x1F\0\0 \0\x0B \0\x11 \0\x12 \0\x17 \0\x18 \0$ \0' \0/ \x000 \x003 \x005 \x006 \08 \0< \0= \0> \0? \0G \0J \0W \0X \0_ \0` \0p \0r \0t \0\x8F \0\x90 \0\x9D \0\xA8 \0\xA9 \0\xD0 \0\xDD \0\xE1 \0\xE2 \0\xE5 \0\xF1 \0\0!\0\x04!\0\x05!\0\x08!\0\t!\0\x14!\0\x15!\0\x17!\0\x19!\0\x1E!\0 !\0#!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0.!\0/!\x002!\x003!\0:!\0;!\0A!\0E!\0J!\0P!\0\x80!\0\x89!\0\x8A!\0\x90!\0\x91!\0\x92!\0\x93!\0\x94!\0\x95!\0\xD0!\0\xD1!\0\xD2!\0\xD3!\0\xD4!\0\xD5!\0\x03\"\0\x04\"\0\x08\"\0\t\"\0\x0B\"\0\x0C\"\0#\"\0$\"\0%\"\0&\"\0,\"\0.\"\0/\"\x001\"\0<\"\0=\"\0C\"\0D\"\0E\"\0F\"\0H\"\0I\"\0M\"\0N\"\0a\"\0b\"\0d\"\0f\"\0r\"\0t\"\0v\"\0x\"\0z\"\0~\"\0\x82\"\0\x84\"\0\x86\"\0\x88\"\0\x91\"\0\x93\"\0\xA2\"\0\xA3\"\0\xA8\"\0\xAA\"\0\xAB\"\0\xAC\"\0\xB2\"\0\xB6\"\0)#\0+#\0`$\0\xEB$\0\x0C*\0\r*\0t*\0w*\0\xDC*\0\xDD*\0|,\0~,\0\xEF,\0\xF2,\0o-\0p-\0\x7F-\0\x80-\0\xE0-\0\0.\0\x9F.\0\xA0.\0\xF3.\0\xF4.\0\0/\0\xD6/\0\x000\0\x010\0*0\x0000\x0060\x0070\080\0;0\0F0\0G0\0K0\0L0\0M0\0N0\0O0\0P0\0Q0\0R0\0S0\0T0\0U0\0V0\0W0\0X0\0Y0\0Z0\0[0\0\\0\0]0\0^0\0_0\0`0\0a0\0b0\0d0\0e0\0f0\0g0\0h0\0i0\0o0\0p0\0r0\0s0\0u0\0v0\0x0\0y0\0{0\0|0\0\x990\0\x9E0\0\x9F0\0\xA00\0\xA60\0\xA70\0\xAB0\0\xAC0\0\xAD0\0\xAE0\0\xAF0\0\xB00\0\xB10\0\xB20\0\xB30\0\xB40\0\xB50\0\xB60\0\xB70\0\xB80\0\xB90\0\xBA0\0\xBB0\0\xBC0\0\xBD0\0\xBE0\0\xBF0\0\xC00\0\xC10\0\xC20\0\xC40\0\xC50\0\xC60\0\xC70\0\xC80\0\xC90\0\xCF0\0\xD00\0\xD20\0\xD30\0\xD50\0\xD60\0\xD80\0\xD90\0\xDB0\0\xDC0\0\xEF0\0\xF30\0\xFD0\0\xFE0\0\xFF0\0\x001\x0011\0\x8F1\0\x921\0\xA01\0\x002\0\x1F2\0 2\0H2\0P2\0\x7F2\0\x802\0\x004\0o\xA6\0p\xA6\0t\xA6\0~\xA6\0\x9C\xA6\0\xA0\xA6\0\xF0\xA6\0\xF2\xA6\0p\xA7\0q\xA7\0\xF2\xA7\0\xF5\xA7\0\xF8\xA7\0\xFA\xA7\0\x06\xA8\0\x07\xA8\0,\xA8\0-\xA8\0\xC4\xA8\0\xC5\xA8\0\xE0\xA8\0\xF2\xA8\0+\xA9\0.\xA9\0S\xA9\0T\xA9\0\xB3\xA9\0\xB4\xA9\0\xC0\xA9\0\xC1\xA9\0\xB0\xAA\0\xB1\xAA\0\xB2\xAA\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBE\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xF6\xAA\0\xF7\xAA\0\\\xAB\0`\xAB\0i\xAB\0j\xAB\0\xED\xAB\0\xEE\xAB\0\0\xAC\0\x01\xAC\0\x1C\xAC\0\x1D\xAC\08\xAC\09\xAC\0T\xAC\0U\xAC\0p\xAC\0q\xAC\0\x8C\xAC\0\x8D\xAC\0\xA8\xAC\0\xA9\xAC\0\xC4\xAC\0\xC5\xAC\0\xE0\xAC\0\xE1\xAC\0\xFC\xAC\0\xFD\xAC\0\x18\xAD\0\x19\xAD\x004\xAD\x005\xAD\0P\xAD\0Q\xAD\0l\xAD\0m\xAD\0\x88\xAD\0\x89\xAD\0\xA4\xAD\0\xA5\xAD\0\xC0\xAD\0\xC1\xAD\0\xDC\xAD\0\xDD\xAD\0\xF8\xAD\0\xF9\xAD\0\x14\xAE\0\x15\xAE\x000\xAE\x001\xAE\0L\xAE\0M\xAE\0h\xAE\0i\xAE\0\x84\xAE\0\x85\xAE\0\xA0\xAE\0\xA1\xAE\0\xBC\xAE\0\xBD\xAE\0\xD8\xAE\0\xD9\xAE\0\xF4\xAE\0\xF5\xAE\0\x10\xAF\0\x11\xAF\0,\xAF\0-\xAF\0H\xAF\0I\xAF\0d\xAF\0e\xAF\0\x80\xAF\0\x81\xAF\0\x9C\xAF\0\x9D\xAF\0\xB8\xAF\0\xB9\xAF\0\xD4\xAF\0\xD5\xAF\0\xF0\xAF\0\xF1\xAF\0\x0C\xB0\0\r\xB0\0(\xB0\0)\xB0\0D\xB0\0E\xB0\0`\xB0\0a\xB0\0|\xB0\0}\xB0\0\x98\xB0\0\x99\xB0\0\xB4\xB0\0\xB5\xB0\0\xD0\xB0\0\xD1\xB0\0\xEC\xB0\0\xED\xB0\0\x08\xB1\0\t\xB1\0$\xB1\0%\xB1\0@\xB1\0A\xB1\0\\\xB1\0]\xB1\0x\xB1\0y\xB1\0\x94\xB1\0\x95\xB1\0\xB0\xB1\0\xB1\xB1\0\xCC\xB1\0\xCD\xB1\0\xE8\xB1\0\xE9\xB1\0\x04\xB2\0\x05\xB2\0 \xB2\0!\xB2\0<\xB2\0=\xB2\0X\xB2\0Y\xB2\0t\xB2\0u\xB2\0\x90\xB2\0\x91\xB2\0\xAC\xB2\0\xAD\xB2\0\xC8\xB2\0\xC9\xB2\0\xE4\xB2\0\xE5\xB2\0\0\xB3\0\x01\xB3\0\x1C\xB3\0\x1D\xB3\08\xB3\09\xB3\0T\xB3\0U\xB3\0p\xB3\0q\xB3\0\x8C\xB3\0\x8D\xB3\0\xA8\xB3\0\xA9\xB3\0\xC4\xB3\0\xC5\xB3\0\xE0\xB3\0\xE1\xB3\0\xFC\xB3\0\xFD\xB3\0\x18\xB4\0\x19\xB4\x004\xB4\x005\xB4\0P\xB4\0Q\xB4\0l\xB4\0m\xB4\0\x88\xB4\0\x89\xB4\0\xA4\xB4\0\xA5\xB4\0\xC0\xB4\0\xC1\xB4\0\xDC\xB4\0\xDD\xB4\0\xF8\xB4\0\xF9\xB4\0\x14\xB5\0\x15\xB5\x000\xB5\x001\xB5\0L\xB5\0M\xB5\0h\xB5\0i\xB5\0\x84\xB5\0\x85\xB5\0\xA0\xB5\0\xA1\xB5\0\xBC\xB5\0\xBD\xB5\0\xD8\xB5\0\xD9\xB5\0\xF4\xB5\0\xF5\xB5\0\x10\xB6\0\x11\xB6\0,\xB6\0-\xB6\0H\xB6\0I\xB6\0d\xB6\0e\xB6\0\x80\xB6\0\x81\xB6\0\x9C\xB6\0\x9D\xB6\0\xB8\xB6\0\xB9\xB6\0\xD4\xB6\0\xD5\xB6\0\xF0\xB6\0\xF1\xB6\0\x0C\xB7\0\r\xB7\0(\xB7\0)\xB7\0D\xB7\0E\xB7\0`\xB7\0a\xB7\0|\xB7\0}\xB7\0\x98\xB7\0\x99\xB7\0\xB4\xB7\0\xB5\xB7\0\xD0\xB7\0\xD1\xB7\0\xEC\xB7\0\xED\xB7\0\x08\xB8\0\t\xB8\0$\xB8\0%\xB8\0@\xB8\0A\xB8\0\\\xB8\0]\xB8\0x\xB8\0y\xB8\0\x94\xB8\0\x95\xB8\0\xB0\xB8\0\xB1\xB8\0\xCC\xB8\0\xCD\xB8\0\xE8\xB8\0\xE9\xB8\0\x04\xB9\0\x05\xB9\0 \xB9\0!\xB9\0<\xB9\0=\xB9\0X\xB9\0Y\xB9\0t\xB9\0u\xB9\0\x90\xB9\0\x91\xB9\0\xAC\xB9\0\xAD\xB9\0\xC8\xB9\0\xC9\xB9\0\xE4\xB9\0\xE5\xB9\0\0\xBA\0\x01\xBA\0\x1C\xBA\0\x1D\xBA\08\xBA\09\xBA\0T\xBA\0U\xBA\0p\xBA\0q\xBA\0\x8C\xBA\0\x8D\xBA\0\xA8\xBA\0\xA9\xBA\0\xC4\xBA\0\xC5\xBA\0\xE0\xBA\0\xE1\xBA\0\xFC\xBA\0\xFD\xBA\0\x18\xBB\0\x19\xBB\x004\xBB\x005\xBB\0P\xBB\0Q\xBB\0l\xBB\0m\xBB\0\x88\xBB\0\x89\xBB\0\xA4\xBB\0\xA5\xBB\0\xC0\xBB\0\xC1\xBB\0\xDC\xBB\0\xDD\xBB\0\xF8\xBB\0\xF9\xBB\0\x14\xBC\0\x15\xBC\x000\xBC\x001\xBC\0L\xBC\0M\xBC\0h\xBC\0i\xBC\0\x84\xBC\0\x85\xBC\0\xA0\xBC\0\xA1\xBC\0\xBC\xBC\0\xBD\xBC\0\xD8\xBC\0\xD9\xBC\0\xF4\xBC\0\xF5\xBC\0\x10\xBD\0\x11\xBD\0,\xBD\0-\xBD\0H\xBD\0I\xBD\0d\xBD\0e\xBD\0\x80\xBD\0\x81\xBD\0\x9C\xBD\0\x9D\xBD\0\xB8\xBD\0\xB9\xBD\0\xD4\xBD\0\xD5\xBD\0\xF0\xBD\0\xF1\xBD\0\x0C\xBE\0\r\xBE\0(\xBE\0)\xBE\0D\xBE\0E\xBE\0`\xBE\0a\xBE\0|\xBE\0}\xBE\0\x98\xBE\0\x99\xBE\0\xB4\xBE\0\xB5\xBE\0\xD0\xBE\0\xD1\xBE\0\xEC\xBE\0\xED\xBE\0\x08\xBF\0\t\xBF\0$\xBF\0%\xBF\0@\xBF\0A\xBF\0\\\xBF\0]\xBF\0x\xBF\0y\xBF\0\x94\xBF\0\x95\xBF\0\xB0\xBF\0\xB1\xBF\0\xCC\xBF\0\xCD\xBF\0\xE8\xBF\0\xE9\xBF\0\x04\xC0\0\x05\xC0\0 \xC0\0!\xC0\0<\xC0\0=\xC0\0X\xC0\0Y\xC0\0t\xC0\0u\xC0\0\x90\xC0\0\x91\xC0\0\xAC\xC0\0\xAD\xC0\0\xC8\xC0\0\xC9\xC0\0\xE4\xC0\0\xE5\xC0\0\0\xC1\0\x01\xC1\0\x1C\xC1\0\x1D\xC1\08\xC1\09\xC1\0T\xC1\0U\xC1\0p\xC1\0q\xC1\0\x8C\xC1\0\x8D\xC1\0\xA8\xC1\0\xA9\xC1\0\xC4\xC1\0\xC5\xC1\0\xE0\xC1\0\xE1\xC1\0\xFC\xC1\0\xFD\xC1\0\x18\xC2\0\x19\xC2\x004\xC2\x005\xC2\0P\xC2\0Q\xC2\0l\xC2\0m\xC2\0\x88\xC2\0\x89\xC2\0\xA4\xC2\0\xA5\xC2\0\xC0\xC2\0\xC1\xC2\0\xDC\xC2\0\xDD\xC2\0\xF8\xC2\0\xF9\xC2\0\x14\xC3\0\x15\xC3\x000\xC3\x001\xC3\0L\xC3\0M\xC3\0h\xC3\0i\xC3\0\x84\xC3\0\x85\xC3\0\xA0\xC3\0\xA1\xC3\0\xBC\xC3\0\xBD\xC3\0\xD8\xC3\0\xD9\xC3\0\xF4\xC3\0\xF5\xC3\0\x10\xC4\0\x11\xC4\0,\xC4\0-\xC4\0H\xC4\0I\xC4\0d\xC4\0e\xC4\0\x80\xC4\0\x81\xC4\0\x9C\xC4\0\x9D\xC4\0\xB8\xC4\0\xB9\xC4\0\xD4\xC4\0\xD5\xC4\0\xF0\xC4\0\xF1\xC4\0\x0C\xC5\0\r\xC5\0(\xC5\0)\xC5\0D\xC5\0E\xC5\0`\xC5\0a\xC5\0|\xC5\0}\xC5\0\x98\xC5\0\x99\xC5\0\xB4\xC5\0\xB5\xC5\0\xD0\xC5\0\xD1\xC5\0\xEC\xC5\0\xED\xC5\0\x08\xC6\0\t\xC6\0$\xC6\0%\xC6\0@\xC6\0A\xC6\0\\\xC6\0]\xC6\0x\xC6\0y\xC6\0\x94\xC6\0\x95\xC6\0\xB0\xC6\0\xB1\xC6\0\xCC\xC6\0\xCD\xC6\0\xE8\xC6\0\xE9\xC6\0\x04\xC7\0\x05\xC7\0 \xC7\0!\xC7\0<\xC7\0=\xC7\0X\xC7\0Y\xC7\0t\xC7\0u\xC7\0\x90\xC7\0\x91\xC7\0\xAC\xC7\0\xAD\xC7\0\xC8\xC7\0\xC9\xC7\0\xE4\xC7\0\xE5\xC7\0\0\xC8\0\x01\xC8\0\x1C\xC8\0\x1D\xC8\08\xC8\09\xC8\0T\xC8\0U\xC8\0p\xC8\0q\xC8\0\x8C\xC8\0\x8D\xC8\0\xA8\xC8\0\xA9\xC8\0\xC4\xC8\0\xC5\xC8\0\xE0\xC8\0\xE1\xC8\0\xFC\xC8\0\xFD\xC8\0\x18\xC9\0\x19\xC9\x004\xC9\x005\xC9\0P\xC9\0Q\xC9\0l\xC9\0m\xC9\0\x88\xC9\0\x89\xC9\0\xA4\xC9\0\xA5\xC9\0\xC0\xC9\0\xC1\xC9\0\xDC\xC9\0\xDD\xC9\0\xF8\xC9\0\xF9\xC9\0\x14\xCA\0\x15\xCA\x000\xCA\x001\xCA\0L\xCA\0M\xCA\0h\xCA\0i\xCA\0\x84\xCA\0\x85\xCA\0\xA0\xCA\0\xA1\xCA\0\xBC\xCA\0\xBD\xCA\0\xD8\xCA\0\xD9\xCA\0\xF4\xCA\0\xF5\xCA\0\x10\xCB\0\x11\xCB\0,\xCB\0-\xCB\0H\xCB\0I\xCB\0d\xCB\0e\xCB\0\x80\xCB\0\x81\xCB\0\x9C\xCB\0\x9D\xCB\0\xB8\xCB\0\xB9\xCB\0\xD4\xCB\0\xD5\xCB\0\xF0\xCB\0\xF1\xCB\0\x0C\xCC\0\r\xCC\0(\xCC\0)\xCC\0D\xCC\0E\xCC\0`\xCC\0a\xCC\0|\xCC\0}\xCC\0\x98\xCC\0\x99\xCC\0\xB4\xCC\0\xB5\xCC\0\xD0\xCC\0\xD1\xCC\0\xEC\xCC\0\xED\xCC\0\x08\xCD\0\t\xCD\0$\xCD\0%\xCD\0@\xCD\0A\xCD\0\\\xCD\0]\xCD\0x\xCD\0y\xCD\0\x94\xCD\0\x95\xCD\0\xB0\xCD\0\xB1\xCD\0\xCC\xCD\0\xCD\xCD\0\xE8\xCD\0\xE9\xCD\0\x04\xCE\0\x05\xCE\0 \xCE\0!\xCE\0<\xCE\0=\xCE\0X\xCE\0Y\xCE\0t\xCE\0u\xCE\0\x90\xCE\0\x91\xCE\0\xAC\xCE\0\xAD\xCE\0\xC8\xCE\0\xC9\xCE\0\xE4\xCE\0\xE5\xCE\0\0\xCF\0\x01\xCF\0\x1C\xCF\0\x1D\xCF\08\xCF\09\xCF\0T\xCF\0U\xCF\0p\xCF\0q\xCF\0\x8C\xCF\0\x8D\xCF\0\xA8\xCF\0\xA9\xCF\0\xC4\xCF\0\xC5\xCF\0\xE0\xCF\0\xE1\xCF\0\xFC\xCF\0\xFD\xCF\0\x18\xD0\0\x19\xD0\x004\xD0\x005\xD0\0P\xD0\0Q\xD0\0l\xD0\0m\xD0\0\x88\xD0\0\x89\xD0\0\xA4\xD0\0\xA5\xD0\0\xC0\xD0\0\xC1\xD0\0\xDC\xD0\0\xDD\xD0\0\xF8\xD0\0\xF9\xD0\0\x14\xD1\0\x15\xD1\x000\xD1\x001\xD1\0L\xD1\0M\xD1\0h\xD1\0i\xD1\0\x84\xD1\0\x85\xD1\0\xA0\xD1\0\xA1\xD1\0\xBC\xD1\0\xBD\xD1\0\xD8\xD1\0\xD9\xD1\0\xF4\xD1\0\xF5\xD1\0\x10\xD2\0\x11\xD2\0,\xD2\0-\xD2\0H\xD2\0I\xD2\0d\xD2\0e\xD2\0\x80\xD2\0\x81\xD2\0\x9C\xD2\0\x9D\xD2\0\xB8\xD2\0\xB9\xD2\0\xD4\xD2\0\xD5\xD2\0\xF0\xD2\0\xF1\xD2\0\x0C\xD3\0\r\xD3\0(\xD3\0)\xD3\0D\xD3\0E\xD3\0`\xD3\0a\xD3\0|\xD3\0}\xD3\0\x98\xD3\0\x99\xD3\0\xB4\xD3\0\xB5\xD3\0\xD0\xD3\0\xD1\xD3\0\xEC\xD3\0\xED\xD3\0\x08\xD4\0\t\xD4\0$\xD4\0%\xD4\0@\xD4\0A\xD4\0\\\xD4\0]\xD4\0x\xD4\0y\xD4\0\x94\xD4\0\x95\xD4\0\xB0\xD4\0\xB1\xD4\0\xCC\xD4\0\xCD\xD4\0\xE8\xD4\0\xE9\xD4\0\x04\xD5\0\x05\xD5\0 \xD5\0!\xD5\0<\xD5\0=\xD5\0X\xD5\0Y\xD5\0t\xD5\0u\xD5\0\x90\xD5\0\x91\xD5\0\xAC\xD5\0\xAD\xD5\0\xC8\xD5\0\xC9\xD5\0\xE4\xD5\0\xE5\xD5\0\0\xD6\0\x01\xD6\0\x1C\xD6\0\x1D\xD6\08\xD6\09\xD6\0T\xD6\0U\xD6\0p\xD6\0q\xD6\0\x8C\xD6\0\x8D\xD6\0\xA8\xD6\0\xA9\xD6\0\xC4\xD6\0\xC5\xD6\0\xE0\xD6\0\xE1\xD6\0\xFC\xD6\0\xFD\xD6\0\x18\xD7\0\x19\xD7\x004\xD7\x005\xD7\0P\xD7\0Q\xD7\0l\xD7\0m\xD7\0\x88\xD7\0\x89\xD7\0\0\xF9\0\x0E\xFA\0\x10\xFA\0\x11\xFA\0\x12\xFA\0\x13\xFA\0\x15\xFA\0\x1F\xFA\0 \xFA\0!\xFA\0\"\xFA\0#\xFA\0%\xFA\0'\xFA\0*\xFA\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xB2\xFB\0\xD3\xFB\0>\xFD\0P\xFD\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xF0\xFD\0\xFD\xFD\0\x10\xFE\0\x1A\xFE\0 \xFE\0E\xFE\0G\xFE\0S\xFE\0T\xFE\0g\xFE\0h\xFE\0l\xFE\0p\xFE\0s\xFE\0t\xFE\0u\xFE\0v\xFE\0\xFD\xFE\0\x01\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\xE0\xFF\0\xE7\xFF\0\xE8\xFF\0\xEF\xFF\0\xFD\x01\x01\xFE\x01\x01\xE0\x02\x01\xE1\x02\x01v\x03\x01{\x03\x01\xD2\x05\x01\xD3\x05\x01\xDA\x05\x01\xDB\x05\x01\x81\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\r\n\x01\x0E\n\x01\x0F\n\x01\x10\n\x018\n\x01;\n\x01?\n\x01@\n\x01\xE5\n\x01\xE7\n\x01$\r\x01(\r\x01i\r\x01n\r\x01\xAB\x0E\x01\xAD\x0E\x01\xFD\x0E\x01\0\x0F\x01F\x0F\x01Q\x0F\x01\x82\x0F\x01\x86\x0F\x01F\x10\x01G\x10\x01p\x10\x01q\x10\x01\x7F\x10\x01\x80\x10\x01\x99\x10\x01\x9A\x10\x01\x9B\x10\x01\x9C\x10\x01\xA5\x10\x01\xA6\x10\x01\xB9\x10\x01\xBB\x10\x01\0\x11\x01\x03\x11\x01'\x11\x01(\x11\x011\x11\x015\x11\x01s\x11\x01t\x11\x01\xC0\x11\x01\xC1\x11\x01\xCA\x11\x01\xCB\x11\x015\x12\x017\x12\x01\xE9\x12\x01\xEB\x12\x01;\x13\x01=\x13\x01>\x13\x01?\x13\x01G\x13\x01H\x13\x01M\x13\x01N\x13\x01W\x13\x01X\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\x82\x13\x01\x83\x13\x01\x84\x13\x01\x85\x13\x01\x8B\x13\x01\x8C\x13\x01\x90\x13\x01\x91\x13\x01\xB8\x13\x01\xB9\x13\x01\xBB\x13\x01\xBC\x13\x01\xC2\x13\x01\xC3\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xCA\x13\x01\xCE\x13\x01\xD1\x13\x01B\x14\x01C\x14\x01F\x14\x01G\x14\x01^\x14\x01_\x14\x01\xB0\x14\x01\xB1\x14\x01\xB9\x14\x01\xBB\x14\x01\xBD\x14\x01\xBE\x14\x01\xC2\x14\x01\xC4\x14\x01\xAF\x15\x01\xB0\x15\x01\xB8\x15\x01\xBA\x15\x01\xBF\x15\x01\xC1\x15\x01?\x16\x01@\x16\x01\xB6\x16\x01\xB8\x16\x01+\x17\x01,\x17\x019\x18\x01;\x18\x010\x19\x011\x19\x015\x19\x016\x19\x01=\x19\x01?\x19\x01C\x19\x01D\x19\x01\xE0\x19\x01\xE1\x19\x014\x1A\x015\x1A\x01G\x1A\x01H\x1A\x01\x99\x1A\x01\x9A\x1A\x01?\x1C\x01@\x1C\x01B\x1D\x01C\x1D\x01D\x1D\x01F\x1D\x01\x97\x1D\x01\x98\x1D\x01A\x1F\x01C\x1F\x01\x1Ea\x01*a\x01/a\x010a\x01\xF0j\x01\xF5j\x010k\x017k\x01cm\x01dm\x01gm\x01jm\x01\xF0o\x01\xF2o\x01\x9E\xBC\x01\x9F\xBC\x01\xD6\xCC\x01\xFA\xCC\x01^\xD1\x01j\xD1\x01m\xD1\x01s\xD1\x01{\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x01\xBB\xD1\x01\xC1\xD1\x01B\xD2\x01E\xD2\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xCC\xD7\x01\xCE\xD7\x01\0\xD8\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x010\xE0\x01n\xE0\x01\x8F\xE0\x01\x90\xE0\x010\xE1\x017\xE1\x01\xAE\xE2\x01\xAF\xE2\x01\xEC\xE2\x01\xF0\xE2\x01\xEC\xE4\x01\xF0\xE4\x01\xEE\xE5\x01\xF0\xE5\x01\xD0\xE8\x01\xD7\xE8\x01D\xE9\x01K\xE9\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\0\xF1\x01\x0B\xF1\x01\x10\xF1\x01/\xF1\x010\xF1\x01P\xF1\x01j\xF1\x01m\xF1\x01\x90\xF1\x01\x91\xF1\x01\0\xF2\x01\x03\xF2\x01\x10\xF2\x01<\xF2\x01@\xF2\x01I\xF2\x01P\xF2\x01R\xF2\x01\xF0\xFB\x01\xFA\xFB\x01\0\xF8\x02\x1E\xFA\x02\0\0\x11") }, 1106938u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryNfkcInertV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryNfkcInertV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_NFKC_INERT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfkcInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_nfkc_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryNfkcInertV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_nfkc_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryNfkcInertV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfkcInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_nfkc_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryNfkcInertV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfkcInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryNfkcInertV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_nfkc_inert_v1 as impl_property_binary_nfkc_inert_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_nfkd_inert_v1.rs.data b/vendor/icu_properties_data/data/property_binary_nfkd_inert_v1.rs.data
new file mode 100644
index 00000000..713f327a
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_nfkd_inert_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryNfkdInertV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 3530B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_nfkd_inert_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1: &'static <icu::properties::provider::PropertyBinaryNfkdInertV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\xA0\0\0\xA1\0\0\xA8\0\0\xA9\0\0\xAA\0\0\xAB\0\0\xAF\0\0\xB0\0\0\xB2\0\0\xB6\0\0\xB8\0\0\xBB\0\0\xBC\0\0\xBF\0\0\xC0\0\0\xC6\0\0\xC7\0\0\xD0\0\0\xD1\0\0\xD7\0\0\xD9\0\0\xDE\0\0\xE0\0\0\xE6\0\0\xE7\0\0\xF0\0\0\xF1\0\0\xF7\0\0\xF9\0\0\xFE\0\0\xFF\0\0\x10\x01\0\x12\x01\0&\x01\0(\x01\x001\x01\x002\x01\08\x01\09\x01\0A\x01\0C\x01\0J\x01\0L\x01\0R\x01\0T\x01\0f\x01\0h\x01\0\x80\x01\0\xA0\x01\0\xA2\x01\0\xAF\x01\0\xB1\x01\0\xC4\x01\0\xDD\x01\0\xDE\x01\0\xE4\x01\0\xE6\x01\0\xF6\x01\0\xF8\x01\0\x1C\x02\0\x1E\x02\0 \x02\0&\x02\x004\x02\0\xB0\x02\0\xB9\x02\0\xD8\x02\0\xDE\x02\0\xE0\x02\0\xE5\x02\0\0\x03\0O\x03\0P\x03\0p\x03\0t\x03\0u\x03\0z\x03\0{\x03\0~\x03\0\x7F\x03\0\x84\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\x91\x03\0\xAA\x03\0\xB1\x03\0\xCA\x03\0\xCF\x03\0\xD0\x03\0\xD7\x03\0\xF0\x03\0\xF3\x03\0\xF4\x03\0\xF6\x03\0\xF9\x03\0\xFA\x03\0\0\x04\0\x02\x04\0\x03\x04\0\x04\x04\0\x07\x04\0\x08\x04\0\x0C\x04\0\x0F\x04\0\x19\x04\0\x1A\x04\09\x04\0:\x04\0P\x04\0R\x04\0S\x04\0T\x04\0W\x04\0X\x04\0\\\x04\0_\x04\0v\x04\0x\x04\0\x83\x04\0\x88\x04\0\xC1\x04\0\xC3\x04\0\xD0\x04\0\xD4\x04\0\xD6\x04\0\xD8\x04\0\xDA\x04\0\xE0\x04\0\xE2\x04\0\xE8\x04\0\xEA\x04\0\xF6\x04\0\xF8\x04\0\xFA\x04\0\x87\x05\0\x88\x05\0\x91\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\x10\x06\0\x1B\x06\0\"\x06\0'\x06\0K\x06\0`\x06\0p\x06\0q\x06\0u\x06\0y\x06\0\xC0\x06\0\xC1\x06\0\xC2\x06\0\xC3\x06\0\xD3\x06\0\xD4\x06\0\xD6\x06\0\xDD\x06\0\xDF\x06\0\xE5\x06\0\xE7\x06\0\xE9\x06\0\xEA\x06\0\xEE\x06\0\x11\x07\0\x12\x07\x000\x07\0K\x07\0\xEB\x07\0\xF4\x07\0\xFD\x07\0\xFE\x07\0\x16\x08\0\x1A\x08\0\x1B\x08\0$\x08\0%\x08\0(\x08\0)\x08\0.\x08\0Y\x08\0\\\x08\0\x97\x08\0\xA0\x08\0\xCA\x08\0\xE2\x08\0\xE3\x08\0\0\t\0)\t\0*\t\x001\t\x002\t\x004\t\x005\t\0<\t\0=\t\0M\t\0N\t\0Q\t\0U\t\0X\t\0`\t\0\xBC\t\0\xBD\t\0\xCB\t\0\xCE\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE0\t\0\xFE\t\0\xFF\t\x003\n\x004\n\x006\n\x007\n\0<\n\0=\n\0M\n\0N\n\0Y\n\0\\\n\0^\n\0_\n\0\xBC\n\0\xBD\n\0\xCD\n\0\xCE\n\0<\x0B\0=\x0B\0H\x0B\0I\x0B\0K\x0B\0N\x0B\0\\\x0B\0^\x0B\0\x94\x0B\0\x95\x0B\0\xCA\x0B\0\xCE\x0B\0<\x0C\0=\x0C\0H\x0C\0I\x0C\0M\x0C\0N\x0C\0U\x0C\0W\x0C\0\xBC\x0C\0\xBD\x0C\0\xC0\x0C\0\xC1\x0C\0\xC7\x0C\0\xC9\x0C\0\xCA\x0C\0\xCC\x0C\0\xCD\x0C\0\xCE\x0C\0;\r\0=\r\0J\r\0N\r\0\xCA\r\0\xCB\r\0\xDA\r\0\xDB\r\0\xDC\r\0\xDF\r\x003\x0E\x004\x0E\08\x0E\0;\x0E\0H\x0E\0L\x0E\0\xB3\x0E\0\xB4\x0E\0\xB8\x0E\0\xBB\x0E\0\xC8\x0E\0\xCC\x0E\0\xDC\x0E\0\xDE\x0E\0\x0C\x0F\0\r\x0F\0\x18\x0F\0\x1A\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0C\x0F\0D\x0F\0M\x0F\0N\x0F\0R\x0F\0S\x0F\0W\x0F\0X\x0F\0\\\x0F\0]\x0F\0i\x0F\0j\x0F\0q\x0F\0~\x0F\0\x80\x0F\0\x85\x0F\0\x86\x0F\0\x88\x0F\0\x93\x0F\0\x94\x0F\0\x9D\x0F\0\x9E\x0F\0\xA2\x0F\0\xA3\x0F\0\xA7\x0F\0\xA8\x0F\0\xAC\x0F\0\xAD\x0F\0\xB9\x0F\0\xBA\x0F\0\xC6\x0F\0\xC7\x0F\0&\x10\0'\x10\x007\x10\08\x10\09\x10\0;\x10\0\x8D\x10\0\x8E\x10\0\xFC\x10\0\xFD\x10\0]\x13\0`\x13\0\x14\x17\0\x16\x17\x004\x17\x005\x17\0\xD2\x17\0\xD3\x17\0\xDD\x17\0\xDE\x17\0\xA9\x18\0\xAA\x18\09\x19\0<\x19\0\x17\x1A\0\x19\x1A\0`\x1A\0a\x1A\0u\x1A\0}\x1A\0\x7F\x1A\0\x80\x1A\0\xB0\x1A\0\xBE\x1A\0\xBF\x1A\0\xCF\x1A\0\x06\x1B\0\x07\x1B\0\x08\x1B\0\t\x1B\0\n\x1B\0\x0B\x1B\0\x0C\x1B\0\r\x1B\0\x0E\x1B\0\x0F\x1B\0\x12\x1B\0\x13\x1B\x004\x1B\x005\x1B\0;\x1B\0<\x1B\0=\x1B\0>\x1B\0@\x1B\0B\x1B\0C\x1B\0E\x1B\0k\x1B\0t\x1B\0\xAA\x1B\0\xAC\x1B\0\xE6\x1B\0\xE7\x1B\0\xF2\x1B\0\xF4\x1B\x007\x1C\08\x1C\0\xD0\x1C\0\xD3\x1C\0\xD4\x1C\0\xE1\x1C\0\xE2\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF8\x1C\0\xFA\x1C\0,\x1D\0/\x1D\x000\x1D\0;\x1D\0<\x1D\0N\x1D\0O\x1D\0k\x1D\0x\x1D\0y\x1D\0\x9B\x1D\0\x9C\x1E\0\xA0\x1E\0\xFA\x1E\0\0\x1F\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xC5\x1F\0\xC6\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xDD\x1F\0\xF0\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFF\x1F\0\0 \0\x0B \0\x11 \0\x12 \0\x17 \0\x18 \0$ \0' \0/ \x000 \x003 \x005 \x006 \08 \0< \0= \0> \0? \0G \0J \0W \0X \0_ \0` \0p \0r \0t \0\x8F \0\x90 \0\x9D \0\xA8 \0\xA9 \0\xD0 \0\xDD \0\xE1 \0\xE2 \0\xE5 \0\xF1 \0\0!\0\x04!\0\x05!\0\x08!\0\t!\0\x14!\0\x15!\0\x17!\0\x19!\0\x1E!\0 !\0#!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0.!\0/!\x002!\x003!\0:!\0;!\0A!\0E!\0J!\0P!\0\x80!\0\x89!\0\x8A!\0\x9A!\0\x9C!\0\xAE!\0\xAF!\0\xCD!\0\xD0!\0\x04\"\0\x05\"\0\t\"\0\n\"\0\x0C\"\0\r\"\0$\"\0%\"\0&\"\0'\"\0,\"\0.\"\0/\"\x001\"\0A\"\0B\"\0D\"\0E\"\0G\"\0H\"\0I\"\0J\"\0`\"\0a\"\0b\"\0c\"\0m\"\0r\"\0t\"\0v\"\0x\"\0z\"\0\x80\"\0\x82\"\0\x84\"\0\x86\"\0\x88\"\0\x8A\"\0\xAC\"\0\xB0\"\0\xE0\"\0\xE4\"\0\xEA\"\0\xEE\"\0)#\0+#\0`$\0\xEB$\0\x0C*\0\r*\0t*\0w*\0\xDC*\0\xDD*\0|,\0~,\0\xEF,\0\xF2,\0o-\0p-\0\x7F-\0\x80-\0\xE0-\0\0.\0\x9F.\0\xA0.\0\xF3.\0\xF4.\0\0/\0\xD6/\0\x000\0\x010\0*0\x0000\x0060\x0070\080\0;0\0L0\0M0\0N0\0O0\0P0\0Q0\0R0\0S0\0T0\0U0\0V0\0W0\0X0\0Y0\0Z0\0[0\0\\0\0]0\0^0\0_0\0`0\0a0\0b0\0c0\0e0\0f0\0g0\0h0\0i0\0j0\0p0\0r0\0s0\0u0\0v0\0x0\0y0\0{0\0|0\0~0\0\x940\0\x950\0\x990\0\x9D0\0\x9E0\0\xA00\0\xAC0\0\xAD0\0\xAE0\0\xAF0\0\xB00\0\xB10\0\xB20\0\xB30\0\xB40\0\xB50\0\xB60\0\xB70\0\xB80\0\xB90\0\xBA0\0\xBB0\0\xBC0\0\xBD0\0\xBE0\0\xBF0\0\xC00\0\xC10\0\xC20\0\xC30\0\xC50\0\xC60\0\xC70\0\xC80\0\xC90\0\xCA0\0\xD00\0\xD20\0\xD30\0\xD50\0\xD60\0\xD80\0\xD90\0\xDB0\0\xDC0\0\xDE0\0\xF40\0\xF50\0\xF70\0\xFB0\0\xFE0\0\x001\x0011\0\x8F1\0\x921\0\xA01\0\x002\0\x1F2\0 2\0H2\0P2\0\x7F2\0\x802\0\x004\0o\xA6\0p\xA6\0t\xA6\0~\xA6\0\x9C\xA6\0\xA0\xA6\0\xF0\xA6\0\xF2\xA6\0p\xA7\0q\xA7\0\xF2\xA7\0\xF5\xA7\0\xF8\xA7\0\xFA\xA7\0\x06\xA8\0\x07\xA8\0,\xA8\0-\xA8\0\xC4\xA8\0\xC5\xA8\0\xE0\xA8\0\xF2\xA8\0+\xA9\0.\xA9\0S\xA9\0T\xA9\0\xB3\xA9\0\xB4\xA9\0\xC0\xA9\0\xC1\xA9\0\xB0\xAA\0\xB1\xAA\0\xB2\xAA\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBE\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xF6\xAA\0\xF7\xAA\0\\\xAB\0`\xAB\0i\xAB\0j\xAB\0\xED\xAB\0\xEE\xAB\0\0\xAC\0\xA4\xD7\0\0\xF9\0\x0E\xFA\0\x10\xFA\0\x11\xFA\0\x12\xFA\0\x13\xFA\0\x15\xFA\0\x1F\xFA\0 \xFA\0!\xFA\0\"\xFA\0#\xFA\0%\xFA\0'\xFA\0*\xFA\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xB2\xFB\0\xD3\xFB\0>\xFD\0P\xFD\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xF0\xFD\0\xFD\xFD\0\x10\xFE\0\x1A\xFE\0 \xFE\0E\xFE\0G\xFE\0S\xFE\0T\xFE\0g\xFE\0h\xFE\0l\xFE\0p\xFE\0s\xFE\0t\xFE\0u\xFE\0v\xFE\0\xFD\xFE\0\x01\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\xE0\xFF\0\xE7\xFF\0\xE8\xFF\0\xEF\xFF\0\xFD\x01\x01\xFE\x01\x01\xE0\x02\x01\xE1\x02\x01v\x03\x01{\x03\x01\xC9\x05\x01\xCA\x05\x01\xE4\x05\x01\xE5\x05\x01\x81\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\r\n\x01\x0E\n\x01\x0F\n\x01\x10\n\x018\n\x01;\n\x01?\n\x01@\n\x01\xE5\n\x01\xE7\n\x01$\r\x01(\r\x01i\r\x01n\r\x01\xAB\x0E\x01\xAD\x0E\x01\xFD\x0E\x01\0\x0F\x01F\x0F\x01Q\x0F\x01\x82\x0F\x01\x86\x0F\x01F\x10\x01G\x10\x01p\x10\x01q\x10\x01\x7F\x10\x01\x80\x10\x01\x9A\x10\x01\x9B\x10\x01\x9C\x10\x01\x9D\x10\x01\xAB\x10\x01\xAC\x10\x01\xB9\x10\x01\xBB\x10\x01\0\x11\x01\x03\x11\x01.\x11\x010\x11\x013\x11\x015\x11\x01s\x11\x01t\x11\x01\xC0\x11\x01\xC1\x11\x01\xCA\x11\x01\xCB\x11\x015\x12\x017\x12\x01\xE9\x12\x01\xEB\x12\x01;\x13\x01=\x13\x01K\x13\x01N\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\x83\x13\x01\x84\x13\x01\x85\x13\x01\x86\x13\x01\x8E\x13\x01\x8F\x13\x01\x91\x13\x01\x92\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xC9\x13\x01\xCE\x13\x01\xD1\x13\x01B\x14\x01C\x14\x01F\x14\x01G\x14\x01^\x14\x01_\x14\x01\xBB\x14\x01\xBD\x14\x01\xBE\x14\x01\xBF\x14\x01\xC2\x14\x01\xC4\x14\x01\xBA\x15\x01\xBC\x15\x01\xBF\x15\x01\xC1\x15\x01?\x16\x01@\x16\x01\xB6\x16\x01\xB8\x16\x01+\x17\x01,\x17\x019\x18\x01;\x18\x018\x19\x019\x19\x01=\x19\x01?\x19\x01C\x19\x01D\x19\x01\xE0\x19\x01\xE1\x19\x014\x1A\x015\x1A\x01G\x1A\x01H\x1A\x01\x99\x1A\x01\x9A\x1A\x01?\x1C\x01@\x1C\x01B\x1D\x01C\x1D\x01D\x1D\x01F\x1D\x01\x97\x1D\x01\x98\x1D\x01A\x1F\x01C\x1F\x01!a\x01)a\x01/a\x010a\x01\xF0j\x01\xF5j\x010k\x017k\x01hm\x01km\x01\xF0o\x01\xF2o\x01\x9E\xBC\x01\x9F\xBC\x01\xD6\xCC\x01\xFA\xCC\x01^\xD1\x01j\xD1\x01m\xD1\x01s\xD1\x01{\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x01\xBB\xD1\x01\xC1\xD1\x01B\xD2\x01E\xD2\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xCC\xD7\x01\xCE\xD7\x01\0\xD8\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x010\xE0\x01n\xE0\x01\x8F\xE0\x01\x90\xE0\x010\xE1\x017\xE1\x01\xAE\xE2\x01\xAF\xE2\x01\xEC\xE2\x01\xF0\xE2\x01\xEC\xE4\x01\xF0\xE4\x01\xEE\xE5\x01\xF0\xE5\x01\xD0\xE8\x01\xD7\xE8\x01D\xE9\x01K\xE9\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\0\xF1\x01\x0B\xF1\x01\x10\xF1\x01/\xF1\x010\xF1\x01P\xF1\x01j\xF1\x01m\xF1\x01\x90\xF1\x01\x91\xF1\x01\0\xF2\x01\x03\xF2\x01\x10\xF2\x01<\xF2\x01@\xF2\x01I\xF2\x01P\xF2\x01R\xF2\x01\xF0\xFB\x01\xFA\xFB\x01\0\xF8\x02\x1E\xFA\x02\0\0\x11") }, 1096097u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryNfkdInertV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryNfkdInertV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_NFKD_INERT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfkdInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_nfkd_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryNfkdInertV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_nfkd_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryNfkdInertV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfkdInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_nfkd_inert_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryNfkdInertV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNfkdInertV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryNfkdInertV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_nfkd_inert_v1 as impl_property_binary_nfkd_inert_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_noncharacter_code_point_v1.rs.data b/vendor/icu_properties_data/data/property_binary_noncharacter_code_point_v1.rs.data
new file mode 100644
index 00000000..847bdab6
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_noncharacter_code_point_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryNoncharacterCodePointV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 140B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_noncharacter_code_point_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_NONCHARACTER_CODE_POINT_V1: &'static <icu::properties::provider::PropertyBinaryNoncharacterCodePointV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xD0\xFD\0\xF0\xFD\0\xFE\xFF\0\0\0\x01\xFE\xFF\x01\0\0\x02\xFE\xFF\x02\0\0\x03\xFE\xFF\x03\0\0\x04\xFE\xFF\x04\0\0\x05\xFE\xFF\x05\0\0\x06\xFE\xFF\x06\0\0\x07\xFE\xFF\x07\0\0\x08\xFE\xFF\x08\0\0\t\xFE\xFF\t\0\0\n\xFE\xFF\n\0\0\x0B\xFE\xFF\x0B\0\0\x0C\xFE\xFF\x0C\0\0\r\xFE\xFF\r\0\0\x0E\xFE\xFF\x0E\0\0\x0F\xFE\xFF\x0F\0\0\x10\xFE\xFF\x10\0\0\x11") }, 66u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryNoncharacterCodePointV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryNoncharacterCodePointV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_NONCHARACTER_CODE_POINT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNoncharacterCodePointV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_noncharacter_code_point_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryNoncharacterCodePointV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_noncharacter_code_point_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryNoncharacterCodePointV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNoncharacterCodePointV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_noncharacter_code_point_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryNoncharacterCodePointV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryNoncharacterCodePointV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryNoncharacterCodePointV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_noncharacter_code_point_v1 as impl_property_binary_noncharacter_code_point_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_pattern_syntax_v1.rs.data b/vendor/icu_properties_data/data/property_binary_pattern_syntax_v1.rs.data
new file mode 100644
index 00000000..5697f52d
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_pattern_syntax_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryPatternSyntaxV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 200B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_pattern_syntax_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_PATTERN_SYNTAX_V1: &'static <icu::properties::provider::PropertyBinaryPatternSyntaxV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"!\0\x000\0\0:\0\0A\0\0[\0\0_\0\0`\0\0a\0\0{\0\0\x7F\0\0\xA1\0\0\xA8\0\0\xA9\0\0\xAA\0\0\xAB\0\0\xAD\0\0\xAE\0\0\xAF\0\0\xB0\0\0\xB2\0\0\xB6\0\0\xB7\0\0\xBB\0\0\xBC\0\0\xBF\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\0\x10 \0( \x000 \0? \0A \0T \0U \0_ \0\x90!\0`$\0\0%\0v'\0\x94'\0\0,\0\0.\0\x80.\0\x010\0\x040\0\x080\0!0\x0000\x0010\0>\xFD\0@\xFD\0E\xFE\0G\xFE\0") }, 2760u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryPatternSyntaxV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryPatternSyntaxV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_PATTERN_SYNTAX_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPatternSyntaxV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_pattern_syntax_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryPatternSyntaxV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_pattern_syntax_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryPatternSyntaxV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPatternSyntaxV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_pattern_syntax_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryPatternSyntaxV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPatternSyntaxV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryPatternSyntaxV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_pattern_syntax_v1 as impl_property_binary_pattern_syntax_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_pattern_white_space_v1.rs.data b/vendor/icu_properties_data/data/property_binary_pattern_white_space_v1.rs.data
new file mode 100644
index 00000000..cc74339d
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_pattern_white_space_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryPatternWhiteSpaceV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 62B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_pattern_white_space_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_PATTERN_WHITE_SPACE_V1: &'static <icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\t\0\0\x0E\0\0 \0\0!\0\0\x85\0\0\x86\0\0\x0E \0\x10 \0( \0* \0") }, 11u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_PATTERN_WHITE_SPACE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_pattern_white_space_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_pattern_white_space_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_pattern_white_space_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryPatternWhiteSpaceV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_pattern_white_space_v1 as impl_property_binary_pattern_white_space_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_prepended_concatenation_mark_v1.rs.data b/vendor/icu_properties_data/data/property_binary_prepended_concatenation_mark_v1.rs.data
new file mode 100644
index 00000000..e88988f2
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_prepended_concatenation_mark_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryPrependedConcatenationMarkV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 74B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_prepended_concatenation_mark_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_PREPENDED_CONCATENATION_MARK_V1: &'static <icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\x06\0\x06\x06\0\xDD\x06\0\xDE\x06\0\x0F\x07\0\x10\x07\0\x90\x08\0\x92\x08\0\xE2\x08\0\xE3\x08\0\xBD\x10\x01\xBE\x10\x01\xCD\x10\x01\xCE\x10\x01") }, 13u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_PREPENDED_CONCATENATION_MARK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_prepended_concatenation_mark_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_prepended_concatenation_mark_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_prepended_concatenation_mark_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryPrependedConcatenationMarkV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_prepended_concatenation_mark_v1 as impl_property_binary_prepended_concatenation_mark_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_print_v1.rs.data b/vendor/icu_properties_data/data/property_binary_print_v1.rs.data
new file mode 100644
index 00000000..99d287f2
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_print_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryPrintV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4430B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_print_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_PRINT_V1: &'static <icu::properties::provider::PropertyBinaryPrintV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b" \0\0\x7F\0\0\xA0\0\0x\x03\0z\x03\0\x80\x03\0\x84\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\x000\x05\x001\x05\0W\x05\0Y\x05\0\x8B\x05\0\x8D\x05\0\x90\x05\0\x91\x05\0\xC8\x05\0\xD0\x05\0\xEB\x05\0\xEF\x05\0\xF5\x05\0\0\x06\0\x0E\x07\0\x0F\x07\0K\x07\0M\x07\0\xB2\x07\0\xC0\x07\0\xFB\x07\0\xFD\x07\0.\x08\x000\x08\0?\x08\0@\x08\0\\\x08\0^\x08\0_\x08\0`\x08\0k\x08\0p\x08\0\x8F\x08\0\x90\x08\0\x92\x08\0\x97\x08\0\x84\t\0\x85\t\0\x8D\t\0\x8F\t\0\x91\t\0\x93\t\0\xA9\t\0\xAA\t\0\xB1\t\0\xB2\t\0\xB3\t\0\xB6\t\0\xBA\t\0\xBC\t\0\xC5\t\0\xC7\t\0\xC9\t\0\xCB\t\0\xCF\t\0\xD7\t\0\xD8\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE4\t\0\xE6\t\0\xFF\t\0\x01\n\0\x04\n\0\x05\n\0\x0B\n\0\x0F\n\0\x11\n\0\x13\n\0)\n\0*\n\x001\n\x002\n\x004\n\x005\n\x007\n\08\n\0:\n\0<\n\0=\n\0>\n\0C\n\0G\n\0I\n\0K\n\0N\n\0Q\n\0R\n\0Y\n\0]\n\0^\n\0_\n\0f\n\0w\n\0\x81\n\0\x84\n\0\x85\n\0\x8E\n\0\x8F\n\0\x92\n\0\x93\n\0\xA9\n\0\xAA\n\0\xB1\n\0\xB2\n\0\xB4\n\0\xB5\n\0\xBA\n\0\xBC\n\0\xC6\n\0\xC7\n\0\xCA\n\0\xCB\n\0\xCE\n\0\xD0\n\0\xD1\n\0\xE0\n\0\xE4\n\0\xE6\n\0\xF2\n\0\xF9\n\0\0\x0B\0\x01\x0B\0\x04\x0B\0\x05\x0B\0\r\x0B\0\x0F\x0B\0\x11\x0B\0\x13\x0B\0)\x0B\0*\x0B\x001\x0B\x002\x0B\x004\x0B\x005\x0B\0:\x0B\0<\x0B\0E\x0B\0G\x0B\0I\x0B\0K\x0B\0N\x0B\0U\x0B\0X\x0B\0\\\x0B\0^\x0B\0_\x0B\0d\x0B\0f\x0B\0x\x0B\0\x82\x0B\0\x84\x0B\0\x85\x0B\0\x8B\x0B\0\x8E\x0B\0\x91\x0B\0\x92\x0B\0\x96\x0B\0\x99\x0B\0\x9B\x0B\0\x9C\x0B\0\x9D\x0B\0\x9E\x0B\0\xA0\x0B\0\xA3\x0B\0\xA5\x0B\0\xA8\x0B\0\xAB\x0B\0\xAE\x0B\0\xBA\x0B\0\xBE\x0B\0\xC3\x0B\0\xC6\x0B\0\xC9\x0B\0\xCA\x0B\0\xCE\x0B\0\xD0\x0B\0\xD1\x0B\0\xD7\x0B\0\xD8\x0B\0\xE6\x0B\0\xFB\x0B\0\0\x0C\0\r\x0C\0\x0E\x0C\0\x11\x0C\0\x12\x0C\0)\x0C\0*\x0C\0:\x0C\0<\x0C\0E\x0C\0F\x0C\0I\x0C\0J\x0C\0N\x0C\0U\x0C\0W\x0C\0X\x0C\0[\x0C\0]\x0C\0^\x0C\0`\x0C\0d\x0C\0f\x0C\0p\x0C\0w\x0C\0\x8D\x0C\0\x8E\x0C\0\x91\x0C\0\x92\x0C\0\xA9\x0C\0\xAA\x0C\0\xB4\x0C\0\xB5\x0C\0\xBA\x0C\0\xBC\x0C\0\xC5\x0C\0\xC6\x0C\0\xC9\x0C\0\xCA\x0C\0\xCE\x0C\0\xD5\x0C\0\xD7\x0C\0\xDD\x0C\0\xDF\x0C\0\xE0\x0C\0\xE4\x0C\0\xE6\x0C\0\xF0\x0C\0\xF1\x0C\0\xF4\x0C\0\0\r\0\r\r\0\x0E\r\0\x11\r\0\x12\r\0E\r\0F\r\0I\r\0J\r\0P\r\0T\r\0d\r\0f\r\0\x80\r\0\x81\r\0\x84\r\0\x85\r\0\x97\r\0\x9A\r\0\xB2\r\0\xB3\r\0\xBC\r\0\xBD\r\0\xBE\r\0\xC0\r\0\xC7\r\0\xCA\r\0\xCB\r\0\xCF\r\0\xD5\r\0\xD6\r\0\xD7\r\0\xD8\r\0\xE0\r\0\xE6\r\0\xF0\r\0\xF2\r\0\xF5\r\0\x01\x0E\0;\x0E\0?\x0E\0\\\x0E\0\x81\x0E\0\x83\x0E\0\x84\x0E\0\x85\x0E\0\x86\x0E\0\x8B\x0E\0\x8C\x0E\0\xA4\x0E\0\xA5\x0E\0\xA6\x0E\0\xA7\x0E\0\xBE\x0E\0\xC0\x0E\0\xC5\x0E\0\xC6\x0E\0\xC7\x0E\0\xC8\x0E\0\xCF\x0E\0\xD0\x0E\0\xDA\x0E\0\xDC\x0E\0\xE0\x0E\0\0\x0F\0H\x0F\0I\x0F\0m\x0F\0q\x0F\0\x98\x0F\0\x99\x0F\0\xBD\x0F\0\xBE\x0F\0\xCD\x0F\0\xCE\x0F\0\xDB\x0F\0\0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0I\x12\0J\x12\0N\x12\0P\x12\0W\x12\0X\x12\0Y\x12\0Z\x12\0^\x12\0`\x12\0\x89\x12\0\x8A\x12\0\x8E\x12\0\x90\x12\0\xB1\x12\0\xB2\x12\0\xB6\x12\0\xB8\x12\0\xBF\x12\0\xC0\x12\0\xC1\x12\0\xC2\x12\0\xC6\x12\0\xC8\x12\0\xD7\x12\0\xD8\x12\0\x11\x13\0\x12\x13\0\x16\x13\0\x18\x13\0[\x13\0]\x13\0}\x13\0\x80\x13\0\x9A\x13\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\0\x14\0\x9D\x16\0\xA0\x16\0\xF9\x16\0\0\x17\0\x16\x17\0\x1F\x17\x007\x17\0@\x17\0T\x17\0`\x17\0m\x17\0n\x17\0q\x17\0r\x17\0t\x17\0\x80\x17\0\xDE\x17\0\xE0\x17\0\xEA\x17\0\xF0\x17\0\xFA\x17\0\0\x18\0\x1A\x18\0 \x18\0y\x18\0\x80\x18\0\xAB\x18\0\xB0\x18\0\xF6\x18\0\0\x19\0\x1F\x19\0 \x19\0,\x19\x000\x19\0<\x19\0@\x19\0A\x19\0D\x19\0n\x19\0p\x19\0u\x19\0\x80\x19\0\xAC\x19\0\xB0\x19\0\xCA\x19\0\xD0\x19\0\xDB\x19\0\xDE\x19\0\x1C\x1A\0\x1E\x1A\0_\x1A\0`\x1A\0}\x1A\0\x7F\x1A\0\x8A\x1A\0\x90\x1A\0\x9A\x1A\0\xA0\x1A\0\xAE\x1A\0\xB0\x1A\0\xCF\x1A\0\0\x1B\0M\x1B\0N\x1B\0\xF4\x1B\0\xFC\x1B\08\x1C\0;\x1C\0J\x1C\0M\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC8\x1C\0\xD0\x1C\0\xFB\x1C\0\0\x1D\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xC5\x1F\0\xC6\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xDD\x1F\0\xF0\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFF\x1F\0\0 \0( \0* \0e \0f \0r \0t \0\x8F \0\x90 \0\x9D \0\xA0 \0\xC1 \0\xD0 \0\xF1 \0\0!\0\x8C!\0\x90!\0*$\0@$\0K$\0`$\0t+\0v+\0\x96+\0\x97+\0\xF4,\0\xF9,\0&-\0'-\0(-\0--\0.-\x000-\0h-\0o-\0q-\0\x7F-\0\x97-\0\xA0-\0\xA7-\0\xA8-\0\xAF-\0\xB0-\0\xB7-\0\xB8-\0\xBF-\0\xC0-\0\xC7-\0\xC8-\0\xCF-\0\xD0-\0\xD7-\0\xD8-\0\xDF-\0\xE0-\0^.\0\x80.\0\x9A.\0\x9B.\0\xF4.\0\0/\0\xD6/\0\xF0/\0@0\0A0\0\x970\0\x990\0\x001\0\x051\x0001\x0011\0\x8F1\0\x901\0\xE61\0\xEF1\0\x1F2\0 2\0\x8D\xA4\0\x90\xA4\0\xC7\xA4\0\xD0\xA4\0,\xA6\0@\xA6\0\xF8\xA6\0\0\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xDD\xA7\0\xF2\xA7\0-\xA8\x000\xA8\0:\xA8\0@\xA8\0x\xA8\0\x80\xA8\0\xC6\xA8\0\xCE\xA8\0\xDA\xA8\0\xE0\xA8\0T\xA9\0_\xA9\0}\xA9\0\x80\xA9\0\xCE\xA9\0\xCF\xA9\0\xDA\xA9\0\xDE\xA9\0\xFF\xA9\0\0\xAA\x007\xAA\0@\xAA\0N\xAA\0P\xAA\0Z\xAA\0\\\xAA\0\xC3\xAA\0\xDB\xAA\0\xF7\xAA\0\x01\xAB\0\x07\xAB\0\t\xAB\0\x0F\xAB\0\x11\xAB\0\x17\xAB\0 \xAB\0'\xAB\0(\xAB\0/\xAB\x000\xAB\0l\xAB\0p\xAB\0\xEE\xAB\0\xF0\xAB\0\xFA\xAB\0\0\xAC\0\xA4\xD7\0\xB0\xD7\0\xC7\xD7\0\xCB\xD7\0\xFC\xD7\0\0\xE0\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xC3\xFB\0\xD3\xFB\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xCF\xFD\0\xD0\xFD\0\xF0\xFD\0\x1A\xFE\0 \xFE\0S\xFE\0T\xFE\0g\xFE\0h\xFE\0l\xFE\0p\xFE\0u\xFE\0v\xFE\0\xFD\xFE\0\xFF\xFE\0\0\xFF\0\x01\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\xE0\xFF\0\xE7\xFF\0\xE8\xFF\0\xEF\xFF\0\xF9\xFF\0\xFE\xFF\0\0\0\x01\x0C\0\x01\r\0\x01'\0\x01(\0\x01;\0\x01<\0\x01>\0\x01?\0\x01N\0\x01P\0\x01^\0\x01\x80\0\x01\xFB\0\x01\0\x01\x01\x03\x01\x01\x07\x01\x014\x01\x017\x01\x01\x8F\x01\x01\x90\x01\x01\x9D\x01\x01\xA0\x01\x01\xA1\x01\x01\xD0\x01\x01\xFE\x01\x01\x80\x02\x01\x9D\x02\x01\xA0\x02\x01\xD1\x02\x01\xE0\x02\x01\xFC\x02\x01\0\x03\x01$\x03\x01-\x03\x01K\x03\x01P\x03\x01{\x03\x01\x80\x03\x01\x9E\x03\x01\x9F\x03\x01\xC4\x03\x01\xC8\x03\x01\xD6\x03\x01\0\x04\x01\x9E\x04\x01\xA0\x04\x01\xAA\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01\0\x05\x01(\x05\x010\x05\x01d\x05\x01o\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x05\x01\xF4\x05\x01\0\x06\x017\x07\x01@\x07\x01V\x07\x01`\x07\x01h\x07\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\0\x08\x01\x06\x08\x01\x08\x08\x01\t\x08\x01\n\x08\x016\x08\x017\x08\x019\x08\x01<\x08\x01=\x08\x01?\x08\x01V\x08\x01W\x08\x01\x9F\x08\x01\xA7\x08\x01\xB0\x08\x01\xE0\x08\x01\xF3\x08\x01\xF4\x08\x01\xF6\x08\x01\xFB\x08\x01\x1C\t\x01\x1F\t\x01:\t\x01?\t\x01@\t\x01\x80\t\x01\xB8\t\x01\xBC\t\x01\xD0\t\x01\xD2\t\x01\x04\n\x01\x05\n\x01\x07\n\x01\x0C\n\x01\x14\n\x01\x15\n\x01\x18\n\x01\x19\n\x016\n\x018\n\x01;\n\x01?\n\x01I\n\x01P\n\x01Y\n\x01`\n\x01\xA0\n\x01\xC0\n\x01\xE7\n\x01\xEB\n\x01\xF7\n\x01\0\x0B\x016\x0B\x019\x0B\x01V\x0B\x01X\x0B\x01s\x0B\x01x\x0B\x01\x92\x0B\x01\x99\x0B\x01\x9D\x0B\x01\xA9\x0B\x01\xB0\x0B\x01\0\x0C\x01I\x0C\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01\xFA\x0C\x01(\r\x010\r\x01:\r\x01@\r\x01f\r\x01i\r\x01\x86\r\x01\x8E\r\x01\x90\r\x01`\x0E\x01\x7F\x0E\x01\x80\x0E\x01\xAA\x0E\x01\xAB\x0E\x01\xAE\x0E\x01\xB0\x0E\x01\xB2\x0E\x01\xC2\x0E\x01\xC5\x0E\x01\xFC\x0E\x01(\x0F\x010\x0F\x01Z\x0F\x01p\x0F\x01\x8A\x0F\x01\xB0\x0F\x01\xCC\x0F\x01\xE0\x0F\x01\xF7\x0F\x01\0\x10\x01N\x10\x01R\x10\x01v\x10\x01\x7F\x10\x01\xC3\x10\x01\xCD\x10\x01\xCE\x10\x01\xD0\x10\x01\xE9\x10\x01\xF0\x10\x01\xFA\x10\x01\0\x11\x015\x11\x016\x11\x01H\x11\x01P\x11\x01w\x11\x01\x80\x11\x01\xE0\x11\x01\xE1\x11\x01\xF5\x11\x01\0\x12\x01\x12\x12\x01\x13\x12\x01B\x12\x01\x80\x12\x01\x87\x12\x01\x88\x12\x01\x89\x12\x01\x8A\x12\x01\x8E\x12\x01\x8F\x12\x01\x9E\x12\x01\x9F\x12\x01\xAA\x12\x01\xB0\x12\x01\xEB\x12\x01\xF0\x12\x01\xFA\x12\x01\0\x13\x01\x04\x13\x01\x05\x13\x01\r\x13\x01\x0F\x13\x01\x11\x13\x01\x13\x13\x01)\x13\x01*\x13\x011\x13\x012\x13\x014\x13\x015\x13\x01:\x13\x01;\x13\x01E\x13\x01G\x13\x01I\x13\x01K\x13\x01N\x13\x01P\x13\x01Q\x13\x01W\x13\x01X\x13\x01]\x13\x01d\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\x80\x13\x01\x8A\x13\x01\x8B\x13\x01\x8C\x13\x01\x8E\x13\x01\x8F\x13\x01\x90\x13\x01\xB6\x13\x01\xB7\x13\x01\xC1\x13\x01\xC2\x13\x01\xC3\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xCB\x13\x01\xCC\x13\x01\xD6\x13\x01\xD7\x13\x01\xD9\x13\x01\xE1\x13\x01\xE3\x13\x01\0\x14\x01\\\x14\x01]\x14\x01b\x14\x01\x80\x14\x01\xC8\x14\x01\xD0\x14\x01\xDA\x14\x01\x80\x15\x01\xB6\x15\x01\xB8\x15\x01\xDE\x15\x01\0\x16\x01E\x16\x01P\x16\x01Z\x16\x01`\x16\x01m\x16\x01\x80\x16\x01\xBA\x16\x01\xC0\x16\x01\xCA\x16\x01\xD0\x16\x01\xE4\x16\x01\0\x17\x01\x1B\x17\x01\x1D\x17\x01,\x17\x010\x17\x01G\x17\x01\0\x18\x01<\x18\x01\xA0\x18\x01\xF3\x18\x01\xFF\x18\x01\x07\x19\x01\t\x19\x01\n\x19\x01\x0C\x19\x01\x14\x19\x01\x15\x19\x01\x17\x19\x01\x18\x19\x016\x19\x017\x19\x019\x19\x01;\x19\x01G\x19\x01P\x19\x01Z\x19\x01\xA0\x19\x01\xA8\x19\x01\xAA\x19\x01\xD8\x19\x01\xDA\x19\x01\xE5\x19\x01\0\x1A\x01H\x1A\x01P\x1A\x01\xA3\x1A\x01\xB0\x1A\x01\xF9\x1A\x01\0\x1B\x01\n\x1B\x01\xC0\x1B\x01\xE2\x1B\x01\xF0\x1B\x01\xFA\x1B\x01\0\x1C\x01\t\x1C\x01\n\x1C\x017\x1C\x018\x1C\x01F\x1C\x01P\x1C\x01m\x1C\x01p\x1C\x01\x90\x1C\x01\x92\x1C\x01\xA8\x1C\x01\xA9\x1C\x01\xB7\x1C\x01\0\x1D\x01\x07\x1D\x01\x08\x1D\x01\n\x1D\x01\x0B\x1D\x017\x1D\x01:\x1D\x01;\x1D\x01<\x1D\x01>\x1D\x01?\x1D\x01H\x1D\x01P\x1D\x01Z\x1D\x01`\x1D\x01f\x1D\x01g\x1D\x01i\x1D\x01j\x1D\x01\x8F\x1D\x01\x90\x1D\x01\x92\x1D\x01\x93\x1D\x01\x99\x1D\x01\xA0\x1D\x01\xAA\x1D\x01\xE0\x1E\x01\xF9\x1E\x01\0\x1F\x01\x11\x1F\x01\x12\x1F\x01;\x1F\x01>\x1F\x01[\x1F\x01\xB0\x1F\x01\xB1\x1F\x01\xC0\x1F\x01\xF2\x1F\x01\xFF\x1F\x01\x9A#\x01\0$\x01o$\x01p$\x01u$\x01\x80$\x01D%\x01\x90/\x01\xF3/\x01\x000\x01V4\x01`4\x01\xFBC\x01\0D\x01GF\x01\0a\x01:a\x01\0h\x019j\x01@j\x01_j\x01`j\x01jj\x01nj\x01\xBFj\x01\xC0j\x01\xCAj\x01\xD0j\x01\xEEj\x01\xF0j\x01\xF6j\x01\0k\x01Fk\x01Pk\x01Zk\x01[k\x01bk\x01ck\x01xk\x01}k\x01\x90k\x01@m\x01zm\x01@n\x01\x9Bn\x01\0o\x01Ko\x01Oo\x01\x88o\x01\x8Fo\x01\xA0o\x01\xE0o\x01\xE5o\x01\xF0o\x01\xF2o\x01\0p\x01\xF8\x87\x01\0\x88\x01\xD6\x8C\x01\xFF\x8C\x01\t\x8D\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\0\xB0\x01#\xB1\x012\xB1\x013\xB1\x01P\xB1\x01S\xB1\x01U\xB1\x01V\xB1\x01d\xB1\x01h\xB1\x01p\xB1\x01\xFC\xB2\x01\0\xBC\x01k\xBC\x01p\xBC\x01}\xBC\x01\x80\xBC\x01\x89\xBC\x01\x90\xBC\x01\x9A\xBC\x01\x9C\xBC\x01\xA4\xBC\x01\0\xCC\x01\xFA\xCC\x01\0\xCD\x01\xB4\xCE\x01\0\xCF\x01.\xCF\x010\xCF\x01G\xCF\x01P\xCF\x01\xC4\xCF\x01\0\xD0\x01\xF6\xD0\x01\0\xD1\x01'\xD1\x01)\xD1\x01\xEB\xD1\x01\0\xD2\x01F\xD2\x01\xC0\xD2\x01\xD4\xD2\x01\xE0\xD2\x01\xF4\xD2\x01\0\xD3\x01W\xD3\x01`\xD3\x01y\xD3\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xCC\xD7\x01\xCE\xD7\x01\x8C\xDA\x01\x9B\xDA\x01\xA0\xDA\x01\xA1\xDA\x01\xB0\xDA\x01\0\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x010\xE0\x01n\xE0\x01\x8F\xE0\x01\x90\xE0\x01\0\xE1\x01-\xE1\x010\xE1\x01>\xE1\x01@\xE1\x01J\xE1\x01N\xE1\x01P\xE1\x01\x90\xE2\x01\xAF\xE2\x01\xC0\xE2\x01\xFA\xE2\x01\xFF\xE2\x01\0\xE3\x01\xD0\xE4\x01\xFA\xE4\x01\xD0\xE5\x01\xFB\xE5\x01\xFF\xE5\x01\0\xE6\x01\xE0\xE7\x01\xE7\xE7\x01\xE8\xE7\x01\xEC\xE7\x01\xED\xE7\x01\xEF\xE7\x01\xF0\xE7\x01\xFF\xE7\x01\0\xE8\x01\xC5\xE8\x01\xC7\xE8\x01\xD7\xE8\x01\0\xE9\x01L\xE9\x01P\xE9\x01Z\xE9\x01^\xE9\x01`\xE9\x01q\xEC\x01\xB5\xEC\x01\x01\xED\x01>\xED\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\xF0\xEE\x01\xF2\xEE\x01\0\xF0\x01,\xF0\x010\xF0\x01\x94\xF0\x01\xA0\xF0\x01\xAF\xF0\x01\xB1\xF0\x01\xC0\xF0\x01\xC1\xF0\x01\xD0\xF0\x01\xD1\xF0\x01\xF6\xF0\x01\0\xF1\x01\xAE\xF1\x01\xE6\xF1\x01\x03\xF2\x01\x10\xF2\x01<\xF2\x01@\xF2\x01I\xF2\x01P\xF2\x01R\xF2\x01`\xF2\x01f\xF2\x01\0\xF3\x01\xD8\xF6\x01\xDC\xF6\x01\xED\xF6\x01\xF0\xF6\x01\xFD\xF6\x01\0\xF7\x01w\xF7\x01{\xF7\x01\xDA\xF7\x01\xE0\xF7\x01\xEC\xF7\x01\xF0\xF7\x01\xF1\xF7\x01\0\xF8\x01\x0C\xF8\x01\x10\xF8\x01H\xF8\x01P\xF8\x01Z\xF8\x01`\xF8\x01\x88\xF8\x01\x90\xF8\x01\xAE\xF8\x01\xB0\xF8\x01\xBC\xF8\x01\xC0\xF8\x01\xC2\xF8\x01\0\xF9\x01T\xFA\x01`\xFA\x01n\xFA\x01p\xFA\x01}\xFA\x01\x80\xFA\x01\x8A\xFA\x01\x8F\xFA\x01\xC7\xFA\x01\xCE\xFA\x01\xDD\xFA\x01\xDF\xFA\x01\xEA\xFA\x01\xF0\xFA\x01\xF9\xFA\x01\0\xFB\x01\x93\xFB\x01\x94\xFB\x01\xFA\xFB\x01\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\xF8\x02\x1E\xFA\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03\x01\0\x0E\x02\0\x0E \0\x0E\x80\0\x0E\0\x01\x0E\xF0\x01\x0E\0\0\x0F\xFE\xFF\x0F\0\0\x10\xFE\xFF\x10") }, 292464u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryPrintV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryPrintV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_PRINT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPrintV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_print_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryPrintV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_print_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryPrintV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPrintV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_print_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryPrintV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryPrintV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryPrintV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_print_v1 as impl_property_binary_print_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_quotation_mark_v1.rs.data b/vendor/icu_properties_data/data/property_binary_quotation_mark_v1.rs.data
new file mode 100644
index 00000000..5cfff4cf
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_quotation_mark_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryQuotationMarkV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 110B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_quotation_mark_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_QUOTATION_MARK_V1: &'static <icu::properties::provider::PropertyBinaryQuotationMarkV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\"\0\0#\0\0'\0\0(\0\0\xAB\0\0\xAC\0\0\xBB\0\0\xBC\0\0\x18 \0  \09 \0; \0B.\0C.\0\x0C0\0\x100\0\x1D0\0 0\0A\xFE\0E\xFE\0\x02\xFF\0\x03\xFF\0\x07\xFF\0\x08\xFF\0b\xFF\0d\xFF\0") }, 30u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryQuotationMarkV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryQuotationMarkV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_QUOTATION_MARK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryQuotationMarkV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_quotation_mark_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryQuotationMarkV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_quotation_mark_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryQuotationMarkV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryQuotationMarkV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_quotation_mark_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryQuotationMarkV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryQuotationMarkV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryQuotationMarkV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_quotation_mark_v1 as impl_property_binary_quotation_mark_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_radical_v1.rs.data b/vendor/icu_properties_data/data/property_binary_radical_v1.rs.data
new file mode 100644
index 00000000..774e66a6
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_radical_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryRadicalV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 50B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_radical_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_RADICAL_V1: &'static <icu::properties::provider::PropertyBinaryRadicalV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x80.\0\x9A.\0\x9B.\0\xF4.\0\0/\0\xD6/\0") }, 329u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryRadicalV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryRadicalV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_RADICAL_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryRadicalV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_radical_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryRadicalV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_radical_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryRadicalV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryRadicalV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_radical_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryRadicalV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryRadicalV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryRadicalV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_radical_v1 as impl_property_binary_radical_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_regional_indicator_v1.rs.data b/vendor/icu_properties_data/data/property_binary_regional_indicator_v1.rs.data
new file mode 100644
index 00000000..e966eadf
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_regional_indicator_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryRegionalIndicatorV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 38B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_regional_indicator_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_REGIONAL_INDICATOR_V1: &'static <icu::properties::provider::PropertyBinaryRegionalIndicatorV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE6\xF1\x01\0\xF2\x01") }, 26u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryRegionalIndicatorV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryRegionalIndicatorV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_REGIONAL_INDICATOR_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryRegionalIndicatorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_regional_indicator_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryRegionalIndicatorV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_regional_indicator_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryRegionalIndicatorV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryRegionalIndicatorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_regional_indicator_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryRegionalIndicatorV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryRegionalIndicatorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryRegionalIndicatorV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_regional_indicator_v1 as impl_property_binary_regional_indicator_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_segment_starter_v1.rs.data b/vendor/icu_properties_data/data/property_binary_segment_starter_v1.rs.data
new file mode 100644
index 00000000..14a35c2b
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_segment_starter_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinarySegmentStarterV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 1406B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_segment_starter_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1: &'static <icu::properties::provider::PropertyBinarySegmentStarterV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\x03\0O\x03\0P\x03\0p\x03\0\x83\x04\0\x88\x04\0\x91\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\x10\x06\0\x1B\x06\0K\x06\0`\x06\0p\x06\0q\x06\0\xD6\x06\0\xDD\x06\0\xDF\x06\0\xE5\x06\0\xE7\x06\0\xE9\x06\0\xEA\x06\0\xEE\x06\0\x11\x07\0\x12\x07\x000\x07\0K\x07\0\xEB\x07\0\xF4\x07\0\xFD\x07\0\xFE\x07\0\x16\x08\0\x1A\x08\0\x1B\x08\0$\x08\0%\x08\0(\x08\0)\x08\0.\x08\0Y\x08\0\\\x08\0\x97\x08\0\xA0\x08\0\xCA\x08\0\xE2\x08\0\xE3\x08\0\0\t\0<\t\0=\t\0M\t\0N\t\0Q\t\0U\t\0\xBC\t\0\xBD\t\0\xBE\t\0\xBF\t\0\xCD\t\0\xCE\t\0\xD7\t\0\xD8\t\0\xFE\t\0\xFF\t\0<\n\0=\n\0M\n\0N\n\0\xBC\n\0\xBD\n\0\xCD\n\0\xCE\n\0<\x0B\0=\x0B\0>\x0B\0?\x0B\0M\x0B\0N\x0B\0V\x0B\0X\x0B\0\xBE\x0B\0\xBF\x0B\0\xCD\x0B\0\xCE\x0B\0\xD7\x0B\0\xD8\x0B\0<\x0C\0=\x0C\0M\x0C\0N\x0C\0U\x0C\0W\x0C\0\xBC\x0C\0\xBD\x0C\0\xC2\x0C\0\xC3\x0C\0\xCD\x0C\0\xCE\x0C\0\xD5\x0C\0\xD7\x0C\0;\r\0=\r\0>\r\0?\r\0M\r\0N\r\0W\r\0X\r\0\xCA\r\0\xCB\r\0\xCF\r\0\xD0\r\0\xDF\r\0\xE0\r\08\x0E\0;\x0E\0H\x0E\0L\x0E\0\xB8\x0E\0\xBB\x0E\0\xC8\x0E\0\xCC\x0E\0\x18\x0F\0\x1A\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0q\x0F\0s\x0F\0t\x0F\0u\x0F\0z\x0F\0~\x0F\0\x80\x0F\0\x81\x0F\0\x82\x0F\0\x85\x0F\0\x86\x0F\0\x88\x0F\0\xB5\x0F\0\xB6\x0F\0\xB7\x0F\0\xB8\x0F\0\xC6\x0F\0\xC7\x0F\0.\x10\0/\x10\x007\x10\08\x10\09\x10\0;\x10\0\x8D\x10\0\x8E\x10\0a\x11\0v\x11\0\xA8\x11\0\xC3\x11\0]\x13\0`\x13\0\x14\x17\0\x16\x17\x004\x17\x005\x17\0\xD2\x17\0\xD3\x17\0\xDD\x17\0\xDE\x17\0\xA9\x18\0\xAA\x18\09\x19\0<\x19\0\x17\x1A\0\x19\x1A\0`\x1A\0a\x1A\0u\x1A\0}\x1A\0\x7F\x1A\0\x80\x1A\0\xB0\x1A\0\xBE\x1A\0\xBF\x1A\0\xCF\x1A\x004\x1B\x006\x1B\0D\x1B\0E\x1B\0k\x1B\0t\x1B\0\xAA\x1B\0\xAC\x1B\0\xE6\x1B\0\xE7\x1B\0\xF2\x1B\0\xF4\x1B\x007\x1C\08\x1C\0\xD0\x1C\0\xD3\x1C\0\xD4\x1C\0\xE1\x1C\0\xE2\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF8\x1C\0\xFA\x1C\0\xC0\x1D\0\0\x1E\0\xD0 \0\xDD \0\xE1 \0\xE2 \0\xE5 \0\xF1 \0\xEF,\0\xF2,\0\x7F-\0\x80-\0\xE0-\0\0.\0*0\x0000\0\x990\0\x9B0\0o\xA6\0p\xA6\0t\xA6\0~\xA6\0\x9E\xA6\0\xA0\xA6\0\xF0\xA6\0\xF2\xA6\0\x06\xA8\0\x07\xA8\0,\xA8\0-\xA8\0\xC4\xA8\0\xC5\xA8\0\xE0\xA8\0\xF2\xA8\0+\xA9\0.\xA9\0S\xA9\0T\xA9\0\xB3\xA9\0\xB4\xA9\0\xC0\xA9\0\xC1\xA9\0\xB0\xAA\0\xB1\xAA\0\xB2\xAA\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBE\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xF6\xAA\0\xF7\xAA\0\xED\xAB\0\xEE\xAB\0\x1E\xFB\0\x1F\xFB\0 \xFE\x000\xFE\0\xFD\x01\x01\xFE\x01\x01\xE0\x02\x01\xE1\x02\x01v\x03\x01{\x03\x01\r\n\x01\x0E\n\x01\x0F\n\x01\x10\n\x018\n\x01;\n\x01?\n\x01@\n\x01\xE5\n\x01\xE7\n\x01$\r\x01(\r\x01i\r\x01n\r\x01\xAB\x0E\x01\xAD\x0E\x01\xFD\x0E\x01\0\x0F\x01F\x0F\x01Q\x0F\x01\x82\x0F\x01\x86\x0F\x01F\x10\x01G\x10\x01p\x10\x01q\x10\x01\x7F\x10\x01\x80\x10\x01\xB9\x10\x01\xBB\x10\x01\0\x11\x01\x03\x11\x01'\x11\x01(\x11\x013\x11\x015\x11\x01s\x11\x01t\x11\x01\xC0\x11\x01\xC1\x11\x01\xCA\x11\x01\xCB\x11\x015\x12\x017\x12\x01\xE9\x12\x01\xEB\x12\x01;\x13\x01=\x13\x01>\x13\x01?\x13\x01M\x13\x01N\x13\x01W\x13\x01X\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\xB8\x13\x01\xB9\x13\x01\xBB\x13\x01\xBC\x13\x01\xC2\x13\x01\xC3\x13\x01\xC9\x13\x01\xCA\x13\x01\xCE\x13\x01\xD1\x13\x01B\x14\x01C\x14\x01F\x14\x01G\x14\x01^\x14\x01_\x14\x01\xB0\x14\x01\xB1\x14\x01\xBA\x14\x01\xBB\x14\x01\xBD\x14\x01\xBE\x14\x01\xC2\x14\x01\xC4\x14\x01\xAF\x15\x01\xB0\x15\x01\xBF\x15\x01\xC1\x15\x01?\x16\x01@\x16\x01\xB6\x16\x01\xB8\x16\x01+\x17\x01,\x17\x019\x18\x01;\x18\x010\x19\x011\x19\x01=\x19\x01?\x19\x01C\x19\x01D\x19\x01\xE0\x19\x01\xE1\x19\x014\x1A\x015\x1A\x01G\x1A\x01H\x1A\x01\x99\x1A\x01\x9A\x1A\x01?\x1C\x01@\x1C\x01B\x1D\x01C\x1D\x01D\x1D\x01F\x1D\x01\x97\x1D\x01\x98\x1D\x01A\x1F\x01C\x1F\x01\x1Ea\x01!a\x01)a\x01*a\x01/a\x010a\x01\xF0j\x01\xF5j\x010k\x017k\x01gm\x01hm\x01\xF0o\x01\xF2o\x01\x9E\xBC\x01\x9F\xBC\x01e\xD1\x01j\xD1\x01m\xD1\x01s\xD1\x01{\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x01B\xD2\x01E\xD2\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x01\x8F\xE0\x01\x90\xE0\x010\xE1\x017\xE1\x01\xAE\xE2\x01\xAF\xE2\x01\xEC\xE2\x01\xF0\xE2\x01\xEC\xE4\x01\xF0\xE4\x01\xEE\xE5\x01\xF0\xE5\x01\xD0\xE8\x01\xD7\xE8\x01D\xE9\x01K\xE9\x01\0\0\x11") }, 1113095u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinarySegmentStarterV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinarySegmentStarterV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_SEGMENT_STARTER_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinarySegmentStarterV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_segment_starter_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinarySegmentStarterV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_segment_starter_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinarySegmentStarterV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinarySegmentStarterV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_segment_starter_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinarySegmentStarterV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinarySegmentStarterV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinarySegmentStarterV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_segment_starter_v1 as impl_property_binary_segment_starter_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_sentence_terminal_v1.rs.data b/vendor/icu_properties_data/data/property_binary_sentence_terminal_v1.rs.data
new file mode 100644
index 00000000..41eea447
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_sentence_terminal_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinarySentenceTerminalV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 560B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_sentence_terminal_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_SENTENCE_TERMINAL_V1: &'static <icu::properties::provider::PropertyBinarySentenceTerminalV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"!\0\0\"\0\0.\0\0/\0\0?\0\0@\0\0\x89\x05\0\x8A\x05\0\x1D\x06\0 \x06\0\xD4\x06\0\xD5\x06\0\0\x07\0\x03\x07\0\xF9\x07\0\xFA\x07\x007\x08\08\x08\09\x08\0:\x08\0=\x08\0?\x08\0d\t\0f\t\0J\x10\0L\x10\0b\x13\0c\x13\0g\x13\0i\x13\0n\x16\0o\x16\x005\x17\x007\x17\0\xD4\x17\0\xD6\x17\0\x03\x18\0\x04\x18\0\t\x18\0\n\x18\0D\x19\0F\x19\0\xA8\x1A\0\xAC\x1A\0N\x1B\0P\x1B\0Z\x1B\0\\\x1B\0^\x1B\0`\x1B\0}\x1B\0\x80\x1B\0;\x1C\0=\x1C\0~\x1C\0\x80\x1C\0$ \0% \0< \0> \0G \0J \0\xF9,\0\xFC,\0..\0/.\0<.\0=.\0S.\0U.\0\x020\0\x030\0\xFF\xA4\0\0\xA5\0\x0E\xA6\0\x10\xA6\0\xF3\xA6\0\xF4\xA6\0\xF7\xA6\0\xF8\xA6\0v\xA8\0x\xA8\0\xCE\xA8\0\xD0\xA8\0/\xA9\x000\xA9\0\xC8\xA9\0\xCA\xA9\0]\xAA\0`\xAA\0\xF0\xAA\0\xF2\xAA\0\xEB\xAB\0\xEC\xAB\0\x12\xFE\0\x13\xFE\0\x15\xFE\0\x17\xFE\0R\xFE\0S\xFE\0V\xFE\0X\xFE\0\x01\xFF\0\x02\xFF\0\x0E\xFF\0\x0F\xFF\0\x1F\xFF\0 \xFF\0a\xFF\0b\xFF\0V\n\x01X\n\x01U\x0F\x01Z\x0F\x01\x86\x0F\x01\x8A\x0F\x01G\x10\x01I\x10\x01\xBE\x10\x01\xC2\x10\x01A\x11\x01D\x11\x01\xC5\x11\x01\xC7\x11\x01\xCD\x11\x01\xCE\x11\x01\xDE\x11\x01\xE0\x11\x018\x12\x01:\x12\x01;\x12\x01=\x12\x01\xA9\x12\x01\xAA\x12\x01\xD4\x13\x01\xD6\x13\x01K\x14\x01M\x14\x01\xC2\x15\x01\xC4\x15\x01\xC9\x15\x01\xD8\x15\x01A\x16\x01C\x16\x01<\x17\x01?\x17\x01D\x19\x01E\x19\x01F\x19\x01G\x19\x01B\x1A\x01D\x1A\x01\x9B\x1A\x01\x9D\x1A\x01A\x1C\x01C\x1C\x01\xF7\x1E\x01\xF9\x1E\x01C\x1F\x01E\x1F\x01nj\x01pj\x01\xF5j\x01\xF6j\x017k\x019k\x01Dk\x01Ek\x01nm\x01pm\x01\x98n\x01\x99n\x01\x9F\xBC\x01\xA0\xBC\x01\x88\xDA\x01\x89\xDA\x01") }, 170u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinarySentenceTerminalV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinarySentenceTerminalV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_SENTENCE_TERMINAL_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinarySentenceTerminalV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_sentence_terminal_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinarySentenceTerminalV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_sentence_terminal_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinarySentenceTerminalV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinarySentenceTerminalV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_sentence_terminal_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinarySentenceTerminalV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinarySentenceTerminalV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinarySentenceTerminalV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_sentence_terminal_v1 as impl_property_binary_sentence_terminal_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_soft_dotted_v1.rs.data b/vendor/icu_properties_data/data/property_binary_soft_dotted_v1.rs.data
new file mode 100644
index 00000000..ca5e9092
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_soft_dotted_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinarySoftDottedV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 236B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_soft_dotted_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_SOFT_DOTTED_V1: &'static <icu::properties::provider::PropertyBinarySoftDottedV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"i\0\0k\0\0/\x01\x000\x01\0I\x02\0J\x02\0h\x02\0i\x02\0\x9D\x02\0\x9E\x02\0\xB2\x02\0\xB3\x02\0\xF3\x03\0\xF4\x03\0V\x04\0W\x04\0X\x04\0Y\x04\0b\x1D\0c\x1D\0\x96\x1D\0\x97\x1D\0\xA4\x1D\0\xA5\x1D\0\xA8\x1D\0\xA9\x1D\0-\x1E\0.\x1E\0\xCB\x1E\0\xCC\x1E\0q \0r \0H!\0J!\0|,\0},\0\"\xD4\x01$\xD4\x01V\xD4\x01X\xD4\x01\x8A\xD4\x01\x8C\xD4\x01\xBE\xD4\x01\xC0\xD4\x01\xF2\xD4\x01\xF4\xD4\x01&\xD5\x01(\xD5\x01Z\xD5\x01\\\xD5\x01\x8E\xD5\x01\x90\xD5\x01\xC2\xD5\x01\xC4\xD5\x01\xF6\xD5\x01\xF8\xD5\x01*\xD6\x01,\xD6\x01^\xD6\x01`\xD6\x01\x92\xD6\x01\x94\xD6\x01\x1A\xDF\x01\x1B\xDF\x01L\xE0\x01N\xE0\x01h\xE0\x01i\xE0\x01") }, 50u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinarySoftDottedV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinarySoftDottedV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_SOFT_DOTTED_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinarySoftDottedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_soft_dotted_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinarySoftDottedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_soft_dotted_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinarySoftDottedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinarySoftDottedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_soft_dotted_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinarySoftDottedV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinarySoftDottedV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinarySoftDottedV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_soft_dotted_v1 as impl_property_binary_soft_dotted_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_terminal_punctuation_v1.rs.data b/vendor/icu_properties_data/data/property_binary_terminal_punctuation_v1.rs.data
new file mode 100644
index 00000000..0d5f66ba
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_terminal_punctuation_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryTerminalPunctuationV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 728B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_terminal_punctuation_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_TERMINAL_PUNCTUATION_V1: &'static <icu::properties::provider::PropertyBinaryTerminalPunctuationV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"!\0\0\"\0\0,\0\0-\0\0.\0\0/\0\0:\0\0<\0\0?\0\0@\0\0~\x03\0\x7F\x03\0\x87\x03\0\x88\x03\0\x89\x05\0\x8A\x05\0\xC3\x05\0\xC4\x05\0\x0C\x06\0\r\x06\0\x1B\x06\0\x1C\x06\0\x1D\x06\0 \x06\0\xD4\x06\0\xD5\x06\0\0\x07\0\x0B\x07\0\x0C\x07\0\r\x07\0\xF8\x07\0\xFA\x07\x000\x08\x006\x08\x007\x08\0?\x08\0^\x08\0_\x08\0d\t\0f\t\0Z\x0E\0\\\x0E\0\x08\x0F\0\t\x0F\0\r\x0F\0\x13\x0F\0J\x10\0L\x10\0a\x13\0i\x13\0n\x16\0o\x16\0\xEB\x16\0\xEE\x16\x005\x17\x007\x17\0\xD4\x17\0\xD7\x17\0\xDA\x17\0\xDB\x17\0\x02\x18\0\x06\x18\0\x08\x18\0\n\x18\0D\x19\0F\x19\0\xA8\x1A\0\xAC\x1A\0N\x1B\0P\x1B\0Z\x1B\0\\\x1B\0]\x1B\0`\x1B\0}\x1B\0\x80\x1B\0;\x1C\0@\x1C\0~\x1C\0\x80\x1C\0$ \0% \0< \0> \0G \0J \0\xF9,\0\xFC,\0..\0/.\0<.\0=.\0A.\0B.\0L.\0M.\0N.\0P.\0S.\0U.\0\x010\0\x030\0\xFE\xA4\0\0\xA5\0\r\xA6\0\x10\xA6\0\xF3\xA6\0\xF8\xA6\0v\xA8\0x\xA8\0\xCE\xA8\0\xD0\xA8\0/\xA9\x000\xA9\0\xC7\xA9\0\xCA\xA9\0]\xAA\0`\xAA\0\xDF\xAA\0\xE0\xAA\0\xF0\xAA\0\xF2\xAA\0\xEB\xAB\0\xEC\xAB\0\x12\xFE\0\x13\xFE\0\x15\xFE\0\x17\xFE\0P\xFE\0S\xFE\0T\xFE\0X\xFE\0\x01\xFF\0\x02\xFF\0\x0C\xFF\0\r\xFF\0\x0E\xFF\0\x0F\xFF\0\x1A\xFF\0\x1C\xFF\0\x1F\xFF\0 \xFF\0a\xFF\0b\xFF\0d\xFF\0e\xFF\0\x9F\x03\x01\xA0\x03\x01\xD0\x03\x01\xD1\x03\x01W\x08\x01X\x08\x01\x1F\t\x01 \t\x01V\n\x01X\n\x01\xF0\n\x01\xF6\n\x01:\x0B\x01@\x0B\x01\x99\x0B\x01\x9D\x0B\x01U\x0F\x01Z\x0F\x01\x86\x0F\x01\x8A\x0F\x01G\x10\x01N\x10\x01\xBE\x10\x01\xC2\x10\x01A\x11\x01D\x11\x01\xC5\x11\x01\xC7\x11\x01\xCD\x11\x01\xCE\x11\x01\xDE\x11\x01\xE0\x11\x018\x12\x01=\x12\x01\xA9\x12\x01\xAA\x12\x01\xD4\x13\x01\xD6\x13\x01K\x14\x01N\x14\x01Z\x14\x01\\\x14\x01\xC2\x15\x01\xC6\x15\x01\xC9\x15\x01\xD8\x15\x01A\x16\x01C\x16\x01<\x17\x01?\x17\x01D\x19\x01E\x19\x01F\x19\x01G\x19\x01B\x1A\x01D\x1A\x01\x9B\x1A\x01\x9D\x1A\x01\xA1\x1A\x01\xA3\x1A\x01A\x1C\x01D\x1C\x01q\x1C\x01r\x1C\x01\xF7\x1E\x01\xF9\x1E\x01C\x1F\x01E\x1F\x01p$\x01u$\x01nj\x01pj\x01\xF5j\x01\xF6j\x017k\x01:k\x01Dk\x01Ek\x01nm\x01pm\x01\x97n\x01\x99n\x01\x9F\xBC\x01\xA0\xBC\x01\x87\xDA\x01\x8B\xDA\x01") }, 291u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryTerminalPunctuationV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryTerminalPunctuationV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_TERMINAL_PUNCTUATION_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryTerminalPunctuationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_terminal_punctuation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryTerminalPunctuationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_terminal_punctuation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryTerminalPunctuationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryTerminalPunctuationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_terminal_punctuation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryTerminalPunctuationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryTerminalPunctuationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryTerminalPunctuationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_terminal_punctuation_v1 as impl_property_binary_terminal_punctuation_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_unified_ideograph_v1.rs.data b/vendor/icu_properties_data/data/property_binary_unified_ideograph_v1.rs.data
new file mode 100644
index 00000000..277d6e88
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_unified_ideograph_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryUnifiedIdeographV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 134B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_unified_ideograph_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_UNIFIED_IDEOGRAPH_V1: &'static <icu::properties::provider::PropertyBinaryUnifiedIdeographV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x004\0\xC0M\0\0N\0\0\xA0\0\x0E\xFA\0\x10\xFA\0\x11\xFA\0\x12\xFA\0\x13\xFA\0\x15\xFA\0\x1F\xFA\0 \xFA\0!\xFA\0\"\xFA\0#\xFA\0%\xFA\0'\xFA\0*\xFA\0\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03") }, 97680u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryUnifiedIdeographV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryUnifiedIdeographV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_UNIFIED_IDEOGRAPH_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryUnifiedIdeographV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_unified_ideograph_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryUnifiedIdeographV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_unified_ideograph_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryUnifiedIdeographV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryUnifiedIdeographV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_unified_ideograph_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryUnifiedIdeographV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryUnifiedIdeographV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryUnifiedIdeographV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_unified_ideograph_v1 as impl_property_binary_unified_ideograph_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_uppercase_v1.rs.data b/vendor/icu_properties_data/data/property_binary_uppercase_v1.rs.data
new file mode 100644
index 00000000..58b4dcb4
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_uppercase_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryUppercaseV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 3968B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_uppercase_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_UPPERCASE_V1: &'static <icu::properties::provider::PropertyBinaryUppercaseV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0[\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xDF\0\0\0\x01\0\x01\x01\0\x02\x01\0\x03\x01\0\x04\x01\0\x05\x01\0\x06\x01\0\x07\x01\0\x08\x01\0\t\x01\0\n\x01\0\x0B\x01\0\x0C\x01\0\r\x01\0\x0E\x01\0\x0F\x01\0\x10\x01\0\x11\x01\0\x12\x01\0\x13\x01\0\x14\x01\0\x15\x01\0\x16\x01\0\x17\x01\0\x18\x01\0\x19\x01\0\x1A\x01\0\x1B\x01\0\x1C\x01\0\x1D\x01\0\x1E\x01\0\x1F\x01\0 \x01\0!\x01\0\"\x01\0#\x01\0$\x01\0%\x01\0&\x01\0'\x01\0(\x01\0)\x01\0*\x01\0+\x01\0,\x01\0-\x01\0.\x01\0/\x01\x000\x01\x001\x01\x002\x01\x003\x01\x004\x01\x005\x01\x006\x01\x007\x01\09\x01\0:\x01\0;\x01\0<\x01\0=\x01\0>\x01\0?\x01\0@\x01\0A\x01\0B\x01\0C\x01\0D\x01\0E\x01\0F\x01\0G\x01\0H\x01\0J\x01\0K\x01\0L\x01\0M\x01\0N\x01\0O\x01\0P\x01\0Q\x01\0R\x01\0S\x01\0T\x01\0U\x01\0V\x01\0W\x01\0X\x01\0Y\x01\0Z\x01\0[\x01\0\\\x01\0]\x01\0^\x01\0_\x01\0`\x01\0a\x01\0b\x01\0c\x01\0d\x01\0e\x01\0f\x01\0g\x01\0h\x01\0i\x01\0j\x01\0k\x01\0l\x01\0m\x01\0n\x01\0o\x01\0p\x01\0q\x01\0r\x01\0s\x01\0t\x01\0u\x01\0v\x01\0w\x01\0x\x01\0z\x01\0{\x01\0|\x01\0}\x01\0~\x01\0\x81\x01\0\x83\x01\0\x84\x01\0\x85\x01\0\x86\x01\0\x88\x01\0\x89\x01\0\x8C\x01\0\x8E\x01\0\x92\x01\0\x93\x01\0\x95\x01\0\x96\x01\0\x99\x01\0\x9C\x01\0\x9E\x01\0\x9F\x01\0\xA1\x01\0\xA2\x01\0\xA3\x01\0\xA4\x01\0\xA5\x01\0\xA6\x01\0\xA8\x01\0\xA9\x01\0\xAA\x01\0\xAC\x01\0\xAD\x01\0\xAE\x01\0\xB0\x01\0\xB1\x01\0\xB4\x01\0\xB5\x01\0\xB6\x01\0\xB7\x01\0\xB9\x01\0\xBC\x01\0\xBD\x01\0\xC4\x01\0\xC5\x01\0\xC7\x01\0\xC8\x01\0\xCA\x01\0\xCB\x01\0\xCD\x01\0\xCE\x01\0\xCF\x01\0\xD0\x01\0\xD1\x01\0\xD2\x01\0\xD3\x01\0\xD4\x01\0\xD5\x01\0\xD6\x01\0\xD7\x01\0\xD8\x01\0\xD9\x01\0\xDA\x01\0\xDB\x01\0\xDC\x01\0\xDE\x01\0\xDF\x01\0\xE0\x01\0\xE1\x01\0\xE2\x01\0\xE3\x01\0\xE4\x01\0\xE5\x01\0\xE6\x01\0\xE7\x01\0\xE8\x01\0\xE9\x01\0\xEA\x01\0\xEB\x01\0\xEC\x01\0\xED\x01\0\xEE\x01\0\xEF\x01\0\xF1\x01\0\xF2\x01\0\xF4\x01\0\xF5\x01\0\xF6\x01\0\xF9\x01\0\xFA\x01\0\xFB\x01\0\xFC\x01\0\xFD\x01\0\xFE\x01\0\xFF\x01\0\0\x02\0\x01\x02\0\x02\x02\0\x03\x02\0\x04\x02\0\x05\x02\0\x06\x02\0\x07\x02\0\x08\x02\0\t\x02\0\n\x02\0\x0B\x02\0\x0C\x02\0\r\x02\0\x0E\x02\0\x0F\x02\0\x10\x02\0\x11\x02\0\x12\x02\0\x13\x02\0\x14\x02\0\x15\x02\0\x16\x02\0\x17\x02\0\x18\x02\0\x19\x02\0\x1A\x02\0\x1B\x02\0\x1C\x02\0\x1D\x02\0\x1E\x02\0\x1F\x02\0 \x02\0!\x02\0\"\x02\0#\x02\0$\x02\0%\x02\0&\x02\0'\x02\0(\x02\0)\x02\0*\x02\0+\x02\0,\x02\0-\x02\0.\x02\0/\x02\x000\x02\x001\x02\x002\x02\x003\x02\0:\x02\0<\x02\0=\x02\0?\x02\0A\x02\0B\x02\0C\x02\0G\x02\0H\x02\0I\x02\0J\x02\0K\x02\0L\x02\0M\x02\0N\x02\0O\x02\0p\x03\0q\x03\0r\x03\0s\x03\0v\x03\0w\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\x90\x03\0\x91\x03\0\xA2\x03\0\xA3\x03\0\xAC\x03\0\xCF\x03\0\xD0\x03\0\xD2\x03\0\xD5\x03\0\xD8\x03\0\xD9\x03\0\xDA\x03\0\xDB\x03\0\xDC\x03\0\xDD\x03\0\xDE\x03\0\xDF\x03\0\xE0\x03\0\xE1\x03\0\xE2\x03\0\xE3\x03\0\xE4\x03\0\xE5\x03\0\xE6\x03\0\xE7\x03\0\xE8\x03\0\xE9\x03\0\xEA\x03\0\xEB\x03\0\xEC\x03\0\xED\x03\0\xEE\x03\0\xEF\x03\0\xF4\x03\0\xF5\x03\0\xF7\x03\0\xF8\x03\0\xF9\x03\0\xFB\x03\0\xFD\x03\x000\x04\0`\x04\0a\x04\0b\x04\0c\x04\0d\x04\0e\x04\0f\x04\0g\x04\0h\x04\0i\x04\0j\x04\0k\x04\0l\x04\0m\x04\0n\x04\0o\x04\0p\x04\0q\x04\0r\x04\0s\x04\0t\x04\0u\x04\0v\x04\0w\x04\0x\x04\0y\x04\0z\x04\0{\x04\0|\x04\0}\x04\0~\x04\0\x7F\x04\0\x80\x04\0\x81\x04\0\x8A\x04\0\x8B\x04\0\x8C\x04\0\x8D\x04\0\x8E\x04\0\x8F\x04\0\x90\x04\0\x91\x04\0\x92\x04\0\x93\x04\0\x94\x04\0\x95\x04\0\x96\x04\0\x97\x04\0\x98\x04\0\x99\x04\0\x9A\x04\0\x9B\x04\0\x9C\x04\0\x9D\x04\0\x9E\x04\0\x9F\x04\0\xA0\x04\0\xA1\x04\0\xA2\x04\0\xA3\x04\0\xA4\x04\0\xA5\x04\0\xA6\x04\0\xA7\x04\0\xA8\x04\0\xA9\x04\0\xAA\x04\0\xAB\x04\0\xAC\x04\0\xAD\x04\0\xAE\x04\0\xAF\x04\0\xB0\x04\0\xB1\x04\0\xB2\x04\0\xB3\x04\0\xB4\x04\0\xB5\x04\0\xB6\x04\0\xB7\x04\0\xB8\x04\0\xB9\x04\0\xBA\x04\0\xBB\x04\0\xBC\x04\0\xBD\x04\0\xBE\x04\0\xBF\x04\0\xC0\x04\0\xC2\x04\0\xC3\x04\0\xC4\x04\0\xC5\x04\0\xC6\x04\0\xC7\x04\0\xC8\x04\0\xC9\x04\0\xCA\x04\0\xCB\x04\0\xCC\x04\0\xCD\x04\0\xCE\x04\0\xD0\x04\0\xD1\x04\0\xD2\x04\0\xD3\x04\0\xD4\x04\0\xD5\x04\0\xD6\x04\0\xD7\x04\0\xD8\x04\0\xD9\x04\0\xDA\x04\0\xDB\x04\0\xDC\x04\0\xDD\x04\0\xDE\x04\0\xDF\x04\0\xE0\x04\0\xE1\x04\0\xE2\x04\0\xE3\x04\0\xE4\x04\0\xE5\x04\0\xE6\x04\0\xE7\x04\0\xE8\x04\0\xE9\x04\0\xEA\x04\0\xEB\x04\0\xEC\x04\0\xED\x04\0\xEE\x04\0\xEF\x04\0\xF0\x04\0\xF1\x04\0\xF2\x04\0\xF3\x04\0\xF4\x04\0\xF5\x04\0\xF6\x04\0\xF7\x04\0\xF8\x04\0\xF9\x04\0\xFA\x04\0\xFB\x04\0\xFC\x04\0\xFD\x04\0\xFE\x04\0\xFF\x04\0\0\x05\0\x01\x05\0\x02\x05\0\x03\x05\0\x04\x05\0\x05\x05\0\x06\x05\0\x07\x05\0\x08\x05\0\t\x05\0\n\x05\0\x0B\x05\0\x0C\x05\0\r\x05\0\x0E\x05\0\x0F\x05\0\x10\x05\0\x11\x05\0\x12\x05\0\x13\x05\0\x14\x05\0\x15\x05\0\x16\x05\0\x17\x05\0\x18\x05\0\x19\x05\0\x1A\x05\0\x1B\x05\0\x1C\x05\0\x1D\x05\0\x1E\x05\0\x1F\x05\0 \x05\0!\x05\0\"\x05\0#\x05\0$\x05\0%\x05\0&\x05\0'\x05\0(\x05\0)\x05\0*\x05\0+\x05\0,\x05\0-\x05\0.\x05\0/\x05\x001\x05\0W\x05\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xA0\x13\0\xF6\x13\0\x89\x1C\0\x8A\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0\0\x1E\0\x01\x1E\0\x02\x1E\0\x03\x1E\0\x04\x1E\0\x05\x1E\0\x06\x1E\0\x07\x1E\0\x08\x1E\0\t\x1E\0\n\x1E\0\x0B\x1E\0\x0C\x1E\0\r\x1E\0\x0E\x1E\0\x0F\x1E\0\x10\x1E\0\x11\x1E\0\x12\x1E\0\x13\x1E\0\x14\x1E\0\x15\x1E\0\x16\x1E\0\x17\x1E\0\x18\x1E\0\x19\x1E\0\x1A\x1E\0\x1B\x1E\0\x1C\x1E\0\x1D\x1E\0\x1E\x1E\0\x1F\x1E\0 \x1E\0!\x1E\0\"\x1E\0#\x1E\0$\x1E\0%\x1E\0&\x1E\0'\x1E\0(\x1E\0)\x1E\0*\x1E\0+\x1E\0,\x1E\0-\x1E\0.\x1E\0/\x1E\x000\x1E\x001\x1E\x002\x1E\x003\x1E\x004\x1E\x005\x1E\x006\x1E\x007\x1E\08\x1E\09\x1E\0:\x1E\0;\x1E\0<\x1E\0=\x1E\0>\x1E\0?\x1E\0@\x1E\0A\x1E\0B\x1E\0C\x1E\0D\x1E\0E\x1E\0F\x1E\0G\x1E\0H\x1E\0I\x1E\0J\x1E\0K\x1E\0L\x1E\0M\x1E\0N\x1E\0O\x1E\0P\x1E\0Q\x1E\0R\x1E\0S\x1E\0T\x1E\0U\x1E\0V\x1E\0W\x1E\0X\x1E\0Y\x1E\0Z\x1E\0[\x1E\0\\\x1E\0]\x1E\0^\x1E\0_\x1E\0`\x1E\0a\x1E\0b\x1E\0c\x1E\0d\x1E\0e\x1E\0f\x1E\0g\x1E\0h\x1E\0i\x1E\0j\x1E\0k\x1E\0l\x1E\0m\x1E\0n\x1E\0o\x1E\0p\x1E\0q\x1E\0r\x1E\0s\x1E\0t\x1E\0u\x1E\0v\x1E\0w\x1E\0x\x1E\0y\x1E\0z\x1E\0{\x1E\0|\x1E\0}\x1E\0~\x1E\0\x7F\x1E\0\x80\x1E\0\x81\x1E\0\x82\x1E\0\x83\x1E\0\x84\x1E\0\x85\x1E\0\x86\x1E\0\x87\x1E\0\x88\x1E\0\x89\x1E\0\x8A\x1E\0\x8B\x1E\0\x8C\x1E\0\x8D\x1E\0\x8E\x1E\0\x8F\x1E\0\x90\x1E\0\x91\x1E\0\x92\x1E\0\x93\x1E\0\x94\x1E\0\x95\x1E\0\x9E\x1E\0\x9F\x1E\0\xA0\x1E\0\xA1\x1E\0\xA2\x1E\0\xA3\x1E\0\xA4\x1E\0\xA5\x1E\0\xA6\x1E\0\xA7\x1E\0\xA8\x1E\0\xA9\x1E\0\xAA\x1E\0\xAB\x1E\0\xAC\x1E\0\xAD\x1E\0\xAE\x1E\0\xAF\x1E\0\xB0\x1E\0\xB1\x1E\0\xB2\x1E\0\xB3\x1E\0\xB4\x1E\0\xB5\x1E\0\xB6\x1E\0\xB7\x1E\0\xB8\x1E\0\xB9\x1E\0\xBA\x1E\0\xBB\x1E\0\xBC\x1E\0\xBD\x1E\0\xBE\x1E\0\xBF\x1E\0\xC0\x1E\0\xC1\x1E\0\xC2\x1E\0\xC3\x1E\0\xC4\x1E\0\xC5\x1E\0\xC6\x1E\0\xC7\x1E\0\xC8\x1E\0\xC9\x1E\0\xCA\x1E\0\xCB\x1E\0\xCC\x1E\0\xCD\x1E\0\xCE\x1E\0\xCF\x1E\0\xD0\x1E\0\xD1\x1E\0\xD2\x1E\0\xD3\x1E\0\xD4\x1E\0\xD5\x1E\0\xD6\x1E\0\xD7\x1E\0\xD8\x1E\0\xD9\x1E\0\xDA\x1E\0\xDB\x1E\0\xDC\x1E\0\xDD\x1E\0\xDE\x1E\0\xDF\x1E\0\xE0\x1E\0\xE1\x1E\0\xE2\x1E\0\xE3\x1E\0\xE4\x1E\0\xE5\x1E\0\xE6\x1E\0\xE7\x1E\0\xE8\x1E\0\xE9\x1E\0\xEA\x1E\0\xEB\x1E\0\xEC\x1E\0\xED\x1E\0\xEE\x1E\0\xEF\x1E\0\xF0\x1E\0\xF1\x1E\0\xF2\x1E\0\xF3\x1E\0\xF4\x1E\0\xF5\x1E\0\xF6\x1E\0\xF7\x1E\0\xF8\x1E\0\xF9\x1E\0\xFA\x1E\0\xFB\x1E\0\xFC\x1E\0\xFD\x1E\0\xFE\x1E\0\xFF\x1E\0\x08\x1F\0\x10\x1F\0\x18\x1F\0\x1E\x1F\0(\x1F\x000\x1F\08\x1F\0@\x1F\0H\x1F\0N\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0`\x1F\0h\x1F\0p\x1F\0\xB8\x1F\0\xBC\x1F\0\xC8\x1F\0\xCC\x1F\0\xD8\x1F\0\xDC\x1F\0\xE8\x1F\0\xED\x1F\0\xF8\x1F\0\xFC\x1F\0\x02!\0\x03!\0\x07!\0\x08!\0\x0B!\0\x0E!\0\x10!\0\x13!\0\x15!\0\x16!\0\x19!\0\x1E!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0.!\x000!\x004!\0>!\0@!\0E!\0F!\0`!\0p!\0\x83!\0\x84!\0\xB6$\0\xD0$\0\0,\x000,\0`,\0a,\0b,\0e,\0g,\0h,\0i,\0j,\0k,\0l,\0m,\0q,\0r,\0s,\0u,\0v,\0~,\0\x81,\0\x82,\0\x83,\0\x84,\0\x85,\0\x86,\0\x87,\0\x88,\0\x89,\0\x8A,\0\x8B,\0\x8C,\0\x8D,\0\x8E,\0\x8F,\0\x90,\0\x91,\0\x92,\0\x93,\0\x94,\0\x95,\0\x96,\0\x97,\0\x98,\0\x99,\0\x9A,\0\x9B,\0\x9C,\0\x9D,\0\x9E,\0\x9F,\0\xA0,\0\xA1,\0\xA2,\0\xA3,\0\xA4,\0\xA5,\0\xA6,\0\xA7,\0\xA8,\0\xA9,\0\xAA,\0\xAB,\0\xAC,\0\xAD,\0\xAE,\0\xAF,\0\xB0,\0\xB1,\0\xB2,\0\xB3,\0\xB4,\0\xB5,\0\xB6,\0\xB7,\0\xB8,\0\xB9,\0\xBA,\0\xBB,\0\xBC,\0\xBD,\0\xBE,\0\xBF,\0\xC0,\0\xC1,\0\xC2,\0\xC3,\0\xC4,\0\xC5,\0\xC6,\0\xC7,\0\xC8,\0\xC9,\0\xCA,\0\xCB,\0\xCC,\0\xCD,\0\xCE,\0\xCF,\0\xD0,\0\xD1,\0\xD2,\0\xD3,\0\xD4,\0\xD5,\0\xD6,\0\xD7,\0\xD8,\0\xD9,\0\xDA,\0\xDB,\0\xDC,\0\xDD,\0\xDE,\0\xDF,\0\xE0,\0\xE1,\0\xE2,\0\xE3,\0\xEB,\0\xEC,\0\xED,\0\xEE,\0\xF2,\0\xF3,\0@\xA6\0A\xA6\0B\xA6\0C\xA6\0D\xA6\0E\xA6\0F\xA6\0G\xA6\0H\xA6\0I\xA6\0J\xA6\0K\xA6\0L\xA6\0M\xA6\0N\xA6\0O\xA6\0P\xA6\0Q\xA6\0R\xA6\0S\xA6\0T\xA6\0U\xA6\0V\xA6\0W\xA6\0X\xA6\0Y\xA6\0Z\xA6\0[\xA6\0\\\xA6\0]\xA6\0^\xA6\0_\xA6\0`\xA6\0a\xA6\0b\xA6\0c\xA6\0d\xA6\0e\xA6\0f\xA6\0g\xA6\0h\xA6\0i\xA6\0j\xA6\0k\xA6\0l\xA6\0m\xA6\0\x80\xA6\0\x81\xA6\0\x82\xA6\0\x83\xA6\0\x84\xA6\0\x85\xA6\0\x86\xA6\0\x87\xA6\0\x88\xA6\0\x89\xA6\0\x8A\xA6\0\x8B\xA6\0\x8C\xA6\0\x8D\xA6\0\x8E\xA6\0\x8F\xA6\0\x90\xA6\0\x91\xA6\0\x92\xA6\0\x93\xA6\0\x94\xA6\0\x95\xA6\0\x96\xA6\0\x97\xA6\0\x98\xA6\0\x99\xA6\0\x9A\xA6\0\x9B\xA6\0\"\xA7\0#\xA7\0$\xA7\0%\xA7\0&\xA7\0'\xA7\0(\xA7\0)\xA7\0*\xA7\0+\xA7\0,\xA7\0-\xA7\0.\xA7\0/\xA7\x002\xA7\x003\xA7\x004\xA7\x005\xA7\x006\xA7\x007\xA7\08\xA7\09\xA7\0:\xA7\0;\xA7\0<\xA7\0=\xA7\0>\xA7\0?\xA7\0@\xA7\0A\xA7\0B\xA7\0C\xA7\0D\xA7\0E\xA7\0F\xA7\0G\xA7\0H\xA7\0I\xA7\0J\xA7\0K\xA7\0L\xA7\0M\xA7\0N\xA7\0O\xA7\0P\xA7\0Q\xA7\0R\xA7\0S\xA7\0T\xA7\0U\xA7\0V\xA7\0W\xA7\0X\xA7\0Y\xA7\0Z\xA7\0[\xA7\0\\\xA7\0]\xA7\0^\xA7\0_\xA7\0`\xA7\0a\xA7\0b\xA7\0c\xA7\0d\xA7\0e\xA7\0f\xA7\0g\xA7\0h\xA7\0i\xA7\0j\xA7\0k\xA7\0l\xA7\0m\xA7\0n\xA7\0o\xA7\0y\xA7\0z\xA7\0{\xA7\0|\xA7\0}\xA7\0\x7F\xA7\0\x80\xA7\0\x81\xA7\0\x82\xA7\0\x83\xA7\0\x84\xA7\0\x85\xA7\0\x86\xA7\0\x87\xA7\0\x8B\xA7\0\x8C\xA7\0\x8D\xA7\0\x8E\xA7\0\x90\xA7\0\x91\xA7\0\x92\xA7\0\x93\xA7\0\x96\xA7\0\x97\xA7\0\x98\xA7\0\x99\xA7\0\x9A\xA7\0\x9B\xA7\0\x9C\xA7\0\x9D\xA7\0\x9E\xA7\0\x9F\xA7\0\xA0\xA7\0\xA1\xA7\0\xA2\xA7\0\xA3\xA7\0\xA4\xA7\0\xA5\xA7\0\xA6\xA7\0\xA7\xA7\0\xA8\xA7\0\xA9\xA7\0\xAA\xA7\0\xAF\xA7\0\xB0\xA7\0\xB5\xA7\0\xB6\xA7\0\xB7\xA7\0\xB8\xA7\0\xB9\xA7\0\xBA\xA7\0\xBB\xA7\0\xBC\xA7\0\xBD\xA7\0\xBE\xA7\0\xBF\xA7\0\xC0\xA7\0\xC1\xA7\0\xC2\xA7\0\xC3\xA7\0\xC4\xA7\0\xC8\xA7\0\xC9\xA7\0\xCA\xA7\0\xCB\xA7\0\xCD\xA7\0\xD0\xA7\0\xD1\xA7\0\xD6\xA7\0\xD7\xA7\0\xD8\xA7\0\xD9\xA7\0\xDA\xA7\0\xDB\xA7\0\xDC\xA7\0\xDD\xA7\0\xF5\xA7\0\xF6\xA7\0!\xFF\0;\xFF\0\0\x04\x01(\x04\x01\xB0\x04\x01\xD4\x04\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x80\x0C\x01\xB3\x0C\x01P\r\x01f\r\x01\xA0\x18\x01\xC0\x18\x01@n\x01`n\x01\0\xD4\x01\x1A\xD4\x014\xD4\x01N\xD4\x01h\xD4\x01\x82\xD4\x01\x9C\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xB6\xD4\x01\xD0\xD4\x01\xEA\xD4\x01\x04\xD5\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x018\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01l\xD5\x01\x86\xD5\x01\xA0\xD5\x01\xBA\xD5\x01\xD4\xD5\x01\xEE\xD5\x01\x08\xD6\x01\"\xD6\x01<\xD6\x01V\xD6\x01p\xD6\x01\x8A\xD6\x01\xA8\xD6\x01\xC1\xD6\x01\xE2\xD6\x01\xFB\xD6\x01\x1C\xD7\x015\xD7\x01V\xD7\x01o\xD7\x01\x90\xD7\x01\xA9\xD7\x01\xCA\xD7\x01\xCB\xD7\x01\0\xE9\x01\"\xE9\x010\xF1\x01J\xF1\x01P\xF1\x01j\xF1\x01p\xF1\x01\x8A\xF1\x01") }, 1978u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryUppercaseV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryUppercaseV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_UPPERCASE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryUppercaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_uppercase_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryUppercaseV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_uppercase_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryUppercaseV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryUppercaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_uppercase_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryUppercaseV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryUppercaseV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryUppercaseV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_uppercase_v1 as impl_property_binary_uppercase_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_variation_selector_v1.rs.data b/vendor/icu_properties_data/data/property_binary_variation_selector_v1.rs.data
new file mode 100644
index 00000000..6a9d3f12
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_variation_selector_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryVariationSelectorV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 56B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_variation_selector_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_VARIATION_SELECTOR_V1: &'static <icu::properties::provider::PropertyBinaryVariationSelectorV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x0B\x18\0\x0E\x18\0\x0F\x18\0\x10\x18\0\0\xFE\0\x10\xFE\0\0\x01\x0E\xF0\x01\x0E") }, 260u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryVariationSelectorV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryVariationSelectorV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_VARIATION_SELECTOR_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryVariationSelectorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_variation_selector_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryVariationSelectorV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_variation_selector_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryVariationSelectorV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryVariationSelectorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_variation_selector_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryVariationSelectorV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryVariationSelectorV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryVariationSelectorV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_variation_selector_v1 as impl_property_binary_variation_selector_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_white_space_v1.rs.data b/vendor/icu_properties_data/data/property_binary_white_space_v1.rs.data
new file mode 100644
index 00000000..ac0f5204
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_white_space_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryWhiteSpaceV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 92B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_white_space_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1: &'static <icu::properties::provider::PropertyBinaryWhiteSpaceV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\t\0\0\x0E\0\0 \0\0!\0\0\x85\0\0\x86\0\0\xA0\0\0\xA1\0\0\x80\x16\0\x81\x16\0\0 \0\x0B \0( \0* \0/ \x000 \0_ \0` \0\x000\0\x010\0") }, 25u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryWhiteSpaceV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryWhiteSpaceV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_WHITE_SPACE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryWhiteSpaceV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_white_space_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryWhiteSpaceV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_white_space_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryWhiteSpaceV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryWhiteSpaceV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_white_space_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryWhiteSpaceV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryWhiteSpaceV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryWhiteSpaceV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_white_space_v1 as impl_property_binary_white_space_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_xdigit_v1.rs.data b/vendor/icu_properties_data/data/property_binary_xdigit_v1.rs.data
new file mode 100644
index 00000000..fb862632
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_xdigit_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryXdigitV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 482B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_xdigit_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_XDIGIT_V1: &'static <icu::properties::provider::PropertyBinaryXdigitV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"0\0\0:\0\0A\0\0G\0\0a\0\0g\0\0`\x06\0j\x06\0\xF0\x06\0\xFA\x06\0\xC0\x07\0\xCA\x07\0f\t\0p\t\0\xE6\t\0\xF0\t\0f\n\0p\n\0\xE6\n\0\xF0\n\0f\x0B\0p\x0B\0\xE6\x0B\0\xF0\x0B\0f\x0C\0p\x0C\0\xE6\x0C\0\xF0\x0C\0f\r\0p\r\0\xE6\r\0\xF0\r\0P\x0E\0Z\x0E\0\xD0\x0E\0\xDA\x0E\0 \x0F\0*\x0F\0@\x10\0J\x10\0\x90\x10\0\x9A\x10\0\xE0\x17\0\xEA\x17\0\x10\x18\0\x1A\x18\0F\x19\0P\x19\0\xD0\x19\0\xDA\x19\0\x80\x1A\0\x8A\x1A\0\x90\x1A\0\x9A\x1A\0P\x1B\0Z\x1B\0\xB0\x1B\0\xBA\x1B\0@\x1C\0J\x1C\0P\x1C\0Z\x1C\0 \xA6\0*\xA6\0\xD0\xA8\0\xDA\xA8\0\0\xA9\0\n\xA9\0\xD0\xA9\0\xDA\xA9\0\xF0\xA9\0\xFA\xA9\0P\xAA\0Z\xAA\0\xF0\xAB\0\xFA\xAB\0\x10\xFF\0\x1A\xFF\0!\xFF\0'\xFF\0A\xFF\0G\xFF\0\xA0\x04\x01\xAA\x04\x010\r\x01:\r\x01@\r\x01J\r\x01f\x10\x01p\x10\x01\xF0\x10\x01\xFA\x10\x016\x11\x01@\x11\x01\xD0\x11\x01\xDA\x11\x01\xF0\x12\x01\xFA\x12\x01P\x14\x01Z\x14\x01\xD0\x14\x01\xDA\x14\x01P\x16\x01Z\x16\x01\xC0\x16\x01\xCA\x16\x01\xD0\x16\x01\xE4\x16\x010\x17\x01:\x17\x01\xE0\x18\x01\xEA\x18\x01P\x19\x01Z\x19\x01\xF0\x1B\x01\xFA\x1B\x01P\x1C\x01Z\x1C\x01P\x1D\x01Z\x1D\x01\xA0\x1D\x01\xAA\x1D\x01P\x1F\x01Z\x1F\x010a\x01:a\x01`j\x01jj\x01\xC0j\x01\xCAj\x01Pk\x01Zk\x01pm\x01zm\x01\xF0\xCC\x01\xFA\xCC\x01\xCE\xD7\x01\0\xD8\x01@\xE1\x01J\xE1\x01\xF0\xE2\x01\xFA\xE2\x01\xF0\xE4\x01\xFA\xE4\x01\xF1\xE5\x01\xFB\xE5\x01P\xE9\x01Z\xE9\x01\xF0\xFB\x01\xFA\xFB\x01") }, 784u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryXdigitV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryXdigitV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_XDIGIT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryXdigitV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_xdigit_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryXdigitV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_xdigit_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryXdigitV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryXdigitV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_xdigit_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryXdigitV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryXdigitV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryXdigitV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_xdigit_v1 as impl_property_binary_xdigit_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_xid_continue_v1.rs.data b/vendor/icu_properties_data/data/property_binary_xid_continue_v1.rs.data
new file mode 100644
index 00000000..022dcc2f
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_xid_continue_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryXidContinueV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4832B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_xid_continue_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_XID_CONTINUE_V1: &'static <icu::properties::provider::PropertyBinaryXidContinueV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"0\0\0:\0\0A\0\0[\0\0_\0\0`\0\0a\0\0{\0\0\xAA\0\0\xAB\0\0\xB5\0\0\xB6\0\0\xB7\0\0\xB8\0\0\xBA\0\0\xBB\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\0\xC2\x02\0\xC6\x02\0\xD2\x02\0\xE0\x02\0\xE5\x02\0\xEC\x02\0\xED\x02\0\xEE\x02\0\xEF\x02\0\0\x03\0u\x03\0v\x03\0x\x03\0{\x03\0~\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\0\xF6\x03\0\xF7\x03\0\x82\x04\0\x83\x04\0\x88\x04\0\x8A\x04\x000\x05\x001\x05\0W\x05\0Y\x05\0Z\x05\0`\x05\0\x89\x05\0\x91\x05\0\xBE\x05\0\xBF\x05\0\xC0\x05\0\xC1\x05\0\xC3\x05\0\xC4\x05\0\xC6\x05\0\xC7\x05\0\xC8\x05\0\xD0\x05\0\xEB\x05\0\xEF\x05\0\xF3\x05\0\x10\x06\0\x1B\x06\0 \x06\0j\x06\0n\x06\0\xD4\x06\0\xD5\x06\0\xDD\x06\0\xDF\x06\0\xE9\x06\0\xEA\x06\0\xFD\x06\0\xFF\x06\0\0\x07\0\x10\x07\0K\x07\0M\x07\0\xB2\x07\0\xC0\x07\0\xF6\x07\0\xFA\x07\0\xFB\x07\0\xFD\x07\0\xFE\x07\0\0\x08\0.\x08\0@\x08\0\\\x08\0`\x08\0k\x08\0p\x08\0\x88\x08\0\x89\x08\0\x8F\x08\0\x97\x08\0\xE2\x08\0\xE3\x08\0d\t\0f\t\0p\t\0q\t\0\x84\t\0\x85\t\0\x8D\t\0\x8F\t\0\x91\t\0\x93\t\0\xA9\t\0\xAA\t\0\xB1\t\0\xB2\t\0\xB3\t\0\xB6\t\0\xBA\t\0\xBC\t\0\xC5\t\0\xC7\t\0\xC9\t\0\xCB\t\0\xCF\t\0\xD7\t\0\xD8\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE4\t\0\xE6\t\0\xF2\t\0\xFC\t\0\xFD\t\0\xFE\t\0\xFF\t\0\x01\n\0\x04\n\0\x05\n\0\x0B\n\0\x0F\n\0\x11\n\0\x13\n\0)\n\0*\n\x001\n\x002\n\x004\n\x005\n\x007\n\08\n\0:\n\0<\n\0=\n\0>\n\0C\n\0G\n\0I\n\0K\n\0N\n\0Q\n\0R\n\0Y\n\0]\n\0^\n\0_\n\0f\n\0v\n\0\x81\n\0\x84\n\0\x85\n\0\x8E\n\0\x8F\n\0\x92\n\0\x93\n\0\xA9\n\0\xAA\n\0\xB1\n\0\xB2\n\0\xB4\n\0\xB5\n\0\xBA\n\0\xBC\n\0\xC6\n\0\xC7\n\0\xCA\n\0\xCB\n\0\xCE\n\0\xD0\n\0\xD1\n\0\xE0\n\0\xE4\n\0\xE6\n\0\xF0\n\0\xF9\n\0\0\x0B\0\x01\x0B\0\x04\x0B\0\x05\x0B\0\r\x0B\0\x0F\x0B\0\x11\x0B\0\x13\x0B\0)\x0B\0*\x0B\x001\x0B\x002\x0B\x004\x0B\x005\x0B\0:\x0B\0<\x0B\0E\x0B\0G\x0B\0I\x0B\0K\x0B\0N\x0B\0U\x0B\0X\x0B\0\\\x0B\0^\x0B\0_\x0B\0d\x0B\0f\x0B\0p\x0B\0q\x0B\0r\x0B\0\x82\x0B\0\x84\x0B\0\x85\x0B\0\x8B\x0B\0\x8E\x0B\0\x91\x0B\0\x92\x0B\0\x96\x0B\0\x99\x0B\0\x9B\x0B\0\x9C\x0B\0\x9D\x0B\0\x9E\x0B\0\xA0\x0B\0\xA3\x0B\0\xA5\x0B\0\xA8\x0B\0\xAB\x0B\0\xAE\x0B\0\xBA\x0B\0\xBE\x0B\0\xC3\x0B\0\xC6\x0B\0\xC9\x0B\0\xCA\x0B\0\xCE\x0B\0\xD0\x0B\0\xD1\x0B\0\xD7\x0B\0\xD8\x0B\0\xE6\x0B\0\xF0\x0B\0\0\x0C\0\r\x0C\0\x0E\x0C\0\x11\x0C\0\x12\x0C\0)\x0C\0*\x0C\0:\x0C\0<\x0C\0E\x0C\0F\x0C\0I\x0C\0J\x0C\0N\x0C\0U\x0C\0W\x0C\0X\x0C\0[\x0C\0]\x0C\0^\x0C\0`\x0C\0d\x0C\0f\x0C\0p\x0C\0\x80\x0C\0\x84\x0C\0\x85\x0C\0\x8D\x0C\0\x8E\x0C\0\x91\x0C\0\x92\x0C\0\xA9\x0C\0\xAA\x0C\0\xB4\x0C\0\xB5\x0C\0\xBA\x0C\0\xBC\x0C\0\xC5\x0C\0\xC6\x0C\0\xC9\x0C\0\xCA\x0C\0\xCE\x0C\0\xD5\x0C\0\xD7\x0C\0\xDD\x0C\0\xDF\x0C\0\xE0\x0C\0\xE4\x0C\0\xE6\x0C\0\xF0\x0C\0\xF1\x0C\0\xF4\x0C\0\0\r\0\r\r\0\x0E\r\0\x11\r\0\x12\r\0E\r\0F\r\0I\r\0J\r\0O\r\0T\r\0X\r\0_\r\0d\r\0f\r\0p\r\0z\r\0\x80\r\0\x81\r\0\x84\r\0\x85\r\0\x97\r\0\x9A\r\0\xB2\r\0\xB3\r\0\xBC\r\0\xBD\r\0\xBE\r\0\xC0\r\0\xC7\r\0\xCA\r\0\xCB\r\0\xCF\r\0\xD5\r\0\xD6\r\0\xD7\r\0\xD8\r\0\xE0\r\0\xE6\r\0\xF0\r\0\xF2\r\0\xF4\r\0\x01\x0E\0;\x0E\0@\x0E\0O\x0E\0P\x0E\0Z\x0E\0\x81\x0E\0\x83\x0E\0\x84\x0E\0\x85\x0E\0\x86\x0E\0\x8B\x0E\0\x8C\x0E\0\xA4\x0E\0\xA5\x0E\0\xA6\x0E\0\xA7\x0E\0\xBE\x0E\0\xC0\x0E\0\xC5\x0E\0\xC6\x0E\0\xC7\x0E\0\xC8\x0E\0\xCF\x0E\0\xD0\x0E\0\xDA\x0E\0\xDC\x0E\0\xE0\x0E\0\0\x0F\0\x01\x0F\0\x18\x0F\0\x1A\x0F\0 \x0F\0*\x0F\x005\x0F\x006\x0F\x007\x0F\08\x0F\09\x0F\0:\x0F\0>\x0F\0H\x0F\0I\x0F\0m\x0F\0q\x0F\0\x85\x0F\0\x86\x0F\0\x98\x0F\0\x99\x0F\0\xBD\x0F\0\xC6\x0F\0\xC7\x0F\0\0\x10\0J\x10\0P\x10\0\x9E\x10\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0\xFB\x10\0\xFC\x10\0I\x12\0J\x12\0N\x12\0P\x12\0W\x12\0X\x12\0Y\x12\0Z\x12\0^\x12\0`\x12\0\x89\x12\0\x8A\x12\0\x8E\x12\0\x90\x12\0\xB1\x12\0\xB2\x12\0\xB6\x12\0\xB8\x12\0\xBF\x12\0\xC0\x12\0\xC1\x12\0\xC2\x12\0\xC6\x12\0\xC8\x12\0\xD7\x12\0\xD8\x12\0\x11\x13\0\x12\x13\0\x16\x13\0\x18\x13\0[\x13\0]\x13\0`\x13\0i\x13\0r\x13\0\x80\x13\0\x90\x13\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\x01\x14\0m\x16\0o\x16\0\x80\x16\0\x81\x16\0\x9B\x16\0\xA0\x16\0\xEB\x16\0\xEE\x16\0\xF9\x16\0\0\x17\0\x16\x17\0\x1F\x17\x005\x17\0@\x17\0T\x17\0`\x17\0m\x17\0n\x17\0q\x17\0r\x17\0t\x17\0\x80\x17\0\xD4\x17\0\xD7\x17\0\xD8\x17\0\xDC\x17\0\xDE\x17\0\xE0\x17\0\xEA\x17\0\x0B\x18\0\x0E\x18\0\x0F\x18\0\x1A\x18\0 \x18\0y\x18\0\x80\x18\0\xAB\x18\0\xB0\x18\0\xF6\x18\0\0\x19\0\x1F\x19\0 \x19\0,\x19\x000\x19\0<\x19\0F\x19\0n\x19\0p\x19\0u\x19\0\x80\x19\0\xAC\x19\0\xB0\x19\0\xCA\x19\0\xD0\x19\0\xDB\x19\0\0\x1A\0\x1C\x1A\0 \x1A\0_\x1A\0`\x1A\0}\x1A\0\x7F\x1A\0\x8A\x1A\0\x90\x1A\0\x9A\x1A\0\xA7\x1A\0\xA8\x1A\0\xB0\x1A\0\xBE\x1A\0\xBF\x1A\0\xCF\x1A\0\0\x1B\0M\x1B\0P\x1B\0Z\x1B\0k\x1B\0t\x1B\0\x80\x1B\0\xF4\x1B\0\0\x1C\08\x1C\0@\x1C\0J\x1C\0M\x1C\0~\x1C\0\x80\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0\xD0\x1C\0\xD3\x1C\0\xD4\x1C\0\xFB\x1C\0\0\x1D\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xCD\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xE0\x1F\0\xED\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFD\x1F\0\x0C \0\x0E \0? \0A \0T \0U \0q \0r \0\x7F \0\x80 \0\x90 \0\x9D \0\xD0 \0\xDD \0\xE1 \0\xE2 \0\xE5 \0\xF1 \0\x02!\0\x03!\0\x07!\0\x08!\0\n!\0\x14!\0\x15!\0\x16!\0\x18!\0\x1E!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0:!\0<!\0@!\0E!\0J!\0N!\0O!\0`!\0\x89!\0\0,\0\xE5,\0\xEB,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\x000-\0h-\0o-\0p-\0\x7F-\0\x97-\0\xA0-\0\xA7-\0\xA8-\0\xAF-\0\xB0-\0\xB7-\0\xB8-\0\xBF-\0\xC0-\0\xC7-\0\xC8-\0\xCF-\0\xD0-\0\xD7-\0\xD8-\0\xDF-\0\xE0-\0\0.\0\x050\0\x080\0!0\x0000\x0010\x0060\080\0=0\0A0\0\x970\0\x990\0\x9B0\0\x9D0\0\xA00\0\xA10\0\x001\0\x051\x0001\x0011\0\x8F1\0\xA01\0\xC01\0\xF01\0\x002\0\x004\0\xC0M\0\0N\0\x8D\xA4\0\xD0\xA4\0\xFE\xA4\0\0\xA5\0\r\xA6\0\x10\xA6\0,\xA6\0@\xA6\0p\xA6\0t\xA6\0~\xA6\0\x7F\xA6\0\xF2\xA6\0\x17\xA7\0 \xA7\0\"\xA7\0\x89\xA7\0\x8B\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xDD\xA7\0\xF2\xA7\0(\xA8\0,\xA8\0-\xA8\0@\xA8\0t\xA8\0\x80\xA8\0\xC6\xA8\0\xD0\xA8\0\xDA\xA8\0\xE0\xA8\0\xF8\xA8\0\xFB\xA8\0\xFC\xA8\0\xFD\xA8\0.\xA9\x000\xA9\0T\xA9\0`\xA9\0}\xA9\0\x80\xA9\0\xC1\xA9\0\xCF\xA9\0\xDA\xA9\0\xE0\xA9\0\xFF\xA9\0\0\xAA\x007\xAA\0@\xAA\0N\xAA\0P\xAA\0Z\xAA\0`\xAA\0w\xAA\0z\xAA\0\xC3\xAA\0\xDB\xAA\0\xDE\xAA\0\xE0\xAA\0\xF0\xAA\0\xF2\xAA\0\xF7\xAA\0\x01\xAB\0\x07\xAB\0\t\xAB\0\x0F\xAB\0\x11\xAB\0\x17\xAB\0 \xAB\0'\xAB\0(\xAB\0/\xAB\x000\xAB\0[\xAB\0\\\xAB\0j\xAB\0p\xAB\0\xEB\xAB\0\xEC\xAB\0\xEE\xAB\0\xF0\xAB\0\xFA\xAB\0\0\xAC\0\xA4\xD7\0\xB0\xD7\0\xC7\xD7\0\xCB\xD7\0\xFC\xD7\0\0\xF9\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\0)\xFB\0*\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xB2\xFB\0\xD3\xFB\0^\xFC\0d\xFC\0>\xFD\0P\xFD\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xF0\xFD\0\xFA\xFD\0\0\xFE\0\x10\xFE\0 \xFE\x000\xFE\x003\xFE\x005\xFE\0M\xFE\0P\xFE\0q\xFE\0r\xFE\0s\xFE\0t\xFE\0w\xFE\0x\xFE\0y\xFE\0z\xFE\0{\xFE\0|\xFE\0}\xFE\0~\xFE\0\x7F\xFE\0\xFD\xFE\0\x10\xFF\0\x1A\xFF\0!\xFF\0;\xFF\0?\xFF\0@\xFF\0A\xFF\0[\xFF\0e\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\0\0\x01\x0C\0\x01\r\0\x01'\0\x01(\0\x01;\0\x01<\0\x01>\0\x01?\0\x01N\0\x01P\0\x01^\0\x01\x80\0\x01\xFB\0\x01@\x01\x01u\x01\x01\xFD\x01\x01\xFE\x01\x01\x80\x02\x01\x9D\x02\x01\xA0\x02\x01\xD1\x02\x01\xE0\x02\x01\xE1\x02\x01\0\x03\x01 \x03\x01-\x03\x01K\x03\x01P\x03\x01{\x03\x01\x80\x03\x01\x9E\x03\x01\xA0\x03\x01\xC4\x03\x01\xC8\x03\x01\xD0\x03\x01\xD1\x03\x01\xD6\x03\x01\0\x04\x01\x9E\x04\x01\xA0\x04\x01\xAA\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01\0\x05\x01(\x05\x010\x05\x01d\x05\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x05\x01\xF4\x05\x01\0\x06\x017\x07\x01@\x07\x01V\x07\x01`\x07\x01h\x07\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\0\x08\x01\x06\x08\x01\x08\x08\x01\t\x08\x01\n\x08\x016\x08\x017\x08\x019\x08\x01<\x08\x01=\x08\x01?\x08\x01V\x08\x01`\x08\x01w\x08\x01\x80\x08\x01\x9F\x08\x01\xE0\x08\x01\xF3\x08\x01\xF4\x08\x01\xF6\x08\x01\0\t\x01\x16\t\x01 \t\x01:\t\x01\x80\t\x01\xB8\t\x01\xBE\t\x01\xC0\t\x01\0\n\x01\x04\n\x01\x05\n\x01\x07\n\x01\x0C\n\x01\x14\n\x01\x15\n\x01\x18\n\x01\x19\n\x016\n\x018\n\x01;\n\x01?\n\x01@\n\x01`\n\x01}\n\x01\x80\n\x01\x9D\n\x01\xC0\n\x01\xC8\n\x01\xC9\n\x01\xE7\n\x01\0\x0B\x016\x0B\x01@\x0B\x01V\x0B\x01`\x0B\x01s\x0B\x01\x80\x0B\x01\x92\x0B\x01\0\x0C\x01I\x0C\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01\0\r\x01(\r\x010\r\x01:\r\x01@\r\x01f\r\x01i\r\x01n\r\x01o\r\x01\x86\r\x01\x80\x0E\x01\xAA\x0E\x01\xAB\x0E\x01\xAD\x0E\x01\xB0\x0E\x01\xB2\x0E\x01\xC2\x0E\x01\xC5\x0E\x01\xFC\x0E\x01\x1D\x0F\x01'\x0F\x01(\x0F\x010\x0F\x01Q\x0F\x01p\x0F\x01\x86\x0F\x01\xB0\x0F\x01\xC5\x0F\x01\xE0\x0F\x01\xF7\x0F\x01\0\x10\x01G\x10\x01f\x10\x01v\x10\x01\x7F\x10\x01\xBB\x10\x01\xC2\x10\x01\xC3\x10\x01\xD0\x10\x01\xE9\x10\x01\xF0\x10\x01\xFA\x10\x01\0\x11\x015\x11\x016\x11\x01@\x11\x01D\x11\x01H\x11\x01P\x11\x01t\x11\x01v\x11\x01w\x11\x01\x80\x11\x01\xC5\x11\x01\xC9\x11\x01\xCD\x11\x01\xCE\x11\x01\xDB\x11\x01\xDC\x11\x01\xDD\x11\x01\0\x12\x01\x12\x12\x01\x13\x12\x018\x12\x01>\x12\x01B\x12\x01\x80\x12\x01\x87\x12\x01\x88\x12\x01\x89\x12\x01\x8A\x12\x01\x8E\x12\x01\x8F\x12\x01\x9E\x12\x01\x9F\x12\x01\xA9\x12\x01\xB0\x12\x01\xEB\x12\x01\xF0\x12\x01\xFA\x12\x01\0\x13\x01\x04\x13\x01\x05\x13\x01\r\x13\x01\x0F\x13\x01\x11\x13\x01\x13\x13\x01)\x13\x01*\x13\x011\x13\x012\x13\x014\x13\x015\x13\x01:\x13\x01;\x13\x01E\x13\x01G\x13\x01I\x13\x01K\x13\x01N\x13\x01P\x13\x01Q\x13\x01W\x13\x01X\x13\x01]\x13\x01d\x13\x01f\x13\x01m\x13\x01p\x13\x01u\x13\x01\x80\x13\x01\x8A\x13\x01\x8B\x13\x01\x8C\x13\x01\x8E\x13\x01\x8F\x13\x01\x90\x13\x01\xB6\x13\x01\xB7\x13\x01\xC1\x13\x01\xC2\x13\x01\xC3\x13\x01\xC5\x13\x01\xC6\x13\x01\xC7\x13\x01\xCB\x13\x01\xCC\x13\x01\xD4\x13\x01\xE1\x13\x01\xE3\x13\x01\0\x14\x01K\x14\x01P\x14\x01Z\x14\x01^\x14\x01b\x14\x01\x80\x14\x01\xC6\x14\x01\xC7\x14\x01\xC8\x14\x01\xD0\x14\x01\xDA\x14\x01\x80\x15\x01\xB6\x15\x01\xB8\x15\x01\xC1\x15\x01\xD8\x15\x01\xDE\x15\x01\0\x16\x01A\x16\x01D\x16\x01E\x16\x01P\x16\x01Z\x16\x01\x80\x16\x01\xB9\x16\x01\xC0\x16\x01\xCA\x16\x01\xD0\x16\x01\xE4\x16\x01\0\x17\x01\x1B\x17\x01\x1D\x17\x01,\x17\x010\x17\x01:\x17\x01@\x17\x01G\x17\x01\0\x18\x01;\x18\x01\xA0\x18\x01\xEA\x18\x01\xFF\x18\x01\x07\x19\x01\t\x19\x01\n\x19\x01\x0C\x19\x01\x14\x19\x01\x15\x19\x01\x17\x19\x01\x18\x19\x016\x19\x017\x19\x019\x19\x01;\x19\x01D\x19\x01P\x19\x01Z\x19\x01\xA0\x19\x01\xA8\x19\x01\xAA\x19\x01\xD8\x19\x01\xDA\x19\x01\xE2\x19\x01\xE3\x19\x01\xE5\x19\x01\0\x1A\x01?\x1A\x01G\x1A\x01H\x1A\x01P\x1A\x01\x9A\x1A\x01\x9D\x1A\x01\x9E\x1A\x01\xB0\x1A\x01\xF9\x1A\x01\xC0\x1B\x01\xE1\x1B\x01\xF0\x1B\x01\xFA\x1B\x01\0\x1C\x01\t\x1C\x01\n\x1C\x017\x1C\x018\x1C\x01A\x1C\x01P\x1C\x01Z\x1C\x01r\x1C\x01\x90\x1C\x01\x92\x1C\x01\xA8\x1C\x01\xA9\x1C\x01\xB7\x1C\x01\0\x1D\x01\x07\x1D\x01\x08\x1D\x01\n\x1D\x01\x0B\x1D\x017\x1D\x01:\x1D\x01;\x1D\x01<\x1D\x01>\x1D\x01?\x1D\x01H\x1D\x01P\x1D\x01Z\x1D\x01`\x1D\x01f\x1D\x01g\x1D\x01i\x1D\x01j\x1D\x01\x8F\x1D\x01\x90\x1D\x01\x92\x1D\x01\x93\x1D\x01\x99\x1D\x01\xA0\x1D\x01\xAA\x1D\x01\xE0\x1E\x01\xF7\x1E\x01\0\x1F\x01\x11\x1F\x01\x12\x1F\x01;\x1F\x01>\x1F\x01C\x1F\x01P\x1F\x01[\x1F\x01\xB0\x1F\x01\xB1\x1F\x01\0 \x01\x9A#\x01\0$\x01o$\x01\x80$\x01D%\x01\x90/\x01\xF1/\x01\x000\x0104\x01@4\x01V4\x01`4\x01\xFBC\x01\0D\x01GF\x01\0a\x01:a\x01\0h\x019j\x01@j\x01_j\x01`j\x01jj\x01pj\x01\xBFj\x01\xC0j\x01\xCAj\x01\xD0j\x01\xEEj\x01\xF0j\x01\xF5j\x01\0k\x017k\x01@k\x01Dk\x01Pk\x01Zk\x01ck\x01xk\x01}k\x01\x90k\x01@m\x01mm\x01pm\x01zm\x01@n\x01\x80n\x01\0o\x01Ko\x01Oo\x01\x88o\x01\x8Fo\x01\xA0o\x01\xE0o\x01\xE2o\x01\xE3o\x01\xE5o\x01\xF0o\x01\xF2o\x01\0p\x01\xF8\x87\x01\0\x88\x01\xD6\x8C\x01\xFF\x8C\x01\t\x8D\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\0\xB0\x01#\xB1\x012\xB1\x013\xB1\x01P\xB1\x01S\xB1\x01U\xB1\x01V\xB1\x01d\xB1\x01h\xB1\x01p\xB1\x01\xFC\xB2\x01\0\xBC\x01k\xBC\x01p\xBC\x01}\xBC\x01\x80\xBC\x01\x89\xBC\x01\x90\xBC\x01\x9A\xBC\x01\x9D\xBC\x01\x9F\xBC\x01\xF0\xCC\x01\xFA\xCC\x01\0\xCF\x01.\xCF\x010\xCF\x01G\xCF\x01e\xD1\x01j\xD1\x01m\xD1\x01s\xD1\x01{\xD1\x01\x83\xD1\x01\x85\xD1\x01\x8C\xD1\x01\xAA\xD1\x01\xAE\xD1\x01B\xD2\x01E\xD2\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xC1\xD6\x01\xC2\xD6\x01\xDB\xD6\x01\xDC\xD6\x01\xFB\xD6\x01\xFC\xD6\x01\x15\xD7\x01\x16\xD7\x015\xD7\x016\xD7\x01O\xD7\x01P\xD7\x01o\xD7\x01p\xD7\x01\x89\xD7\x01\x8A\xD7\x01\xA9\xD7\x01\xAA\xD7\x01\xC3\xD7\x01\xC4\xD7\x01\xCC\xD7\x01\xCE\xD7\x01\0\xD8\x01\0\xDA\x017\xDA\x01;\xDA\x01m\xDA\x01u\xDA\x01v\xDA\x01\x84\xDA\x01\x85\xDA\x01\x9B\xDA\x01\xA0\xDA\x01\xA1\xDA\x01\xB0\xDA\x01\0\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x01\0\xE0\x01\x07\xE0\x01\x08\xE0\x01\x19\xE0\x01\x1B\xE0\x01\"\xE0\x01#\xE0\x01%\xE0\x01&\xE0\x01+\xE0\x010\xE0\x01n\xE0\x01\x8F\xE0\x01\x90\xE0\x01\0\xE1\x01-\xE1\x010\xE1\x01>\xE1\x01@\xE1\x01J\xE1\x01N\xE1\x01O\xE1\x01\x90\xE2\x01\xAF\xE2\x01\xC0\xE2\x01\xFA\xE2\x01\xD0\xE4\x01\xFA\xE4\x01\xD0\xE5\x01\xFB\xE5\x01\xE0\xE7\x01\xE7\xE7\x01\xE8\xE7\x01\xEC\xE7\x01\xED\xE7\x01\xEF\xE7\x01\xF0\xE7\x01\xFF\xE7\x01\0\xE8\x01\xC5\xE8\x01\xD0\xE8\x01\xD7\xE8\x01\0\xE9\x01L\xE9\x01P\xE9\x01Z\xE9\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\xF0\xFB\x01\xFA\xFB\x01\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\xF8\x02\x1E\xFA\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03\0\x01\x0E\xF0\x01\x0E") }, 144522u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryXidContinueV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryXidContinueV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_XID_CONTINUE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryXidContinueV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_xid_continue_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryXidContinueV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_xid_continue_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryXidContinueV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryXidContinueV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_xid_continue_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryXidContinueV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryXidContinueV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryXidContinueV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_xid_continue_v1 as impl_property_binary_xid_continue_v1;
diff --git a/vendor/icu_properties_data/data/property_binary_xid_start_v1.rs.data b/vendor/icu_properties_data/data/property_binary_xid_start_v1.rs.data
new file mode 100644
index 00000000..a605ff85
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_binary_xid_start_v1.rs.data
@@ -0,0 +1,83 @@
+// @generated
+/// Implement `DataProvider<PropertyBinaryXidStartV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4136B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_binary_xid_start_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_BINARY_XID_START_V1: &'static <icu::properties::provider::PropertyBinaryXidStartV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointSet::InversionList(unsafe {
+                #[allow(unused_unsafe)]
+                icu::collections::codepointinvlist::CodePointInversionList::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"A\0\0[\0\0a\0\0{\0\0\xAA\0\0\xAB\0\0\xB5\0\0\xB6\0\0\xBA\0\0\xBB\0\0\xC0\0\0\xD7\0\0\xD8\0\0\xF7\0\0\xF8\0\0\xC2\x02\0\xC6\x02\0\xD2\x02\0\xE0\x02\0\xE5\x02\0\xEC\x02\0\xED\x02\0\xEE\x02\0\xEF\x02\0p\x03\0u\x03\0v\x03\0x\x03\0{\x03\0~\x03\0\x7F\x03\0\x80\x03\0\x86\x03\0\x87\x03\0\x88\x03\0\x8B\x03\0\x8C\x03\0\x8D\x03\0\x8E\x03\0\xA2\x03\0\xA3\x03\0\xF6\x03\0\xF7\x03\0\x82\x04\0\x8A\x04\x000\x05\x001\x05\0W\x05\0Y\x05\0Z\x05\0`\x05\0\x89\x05\0\xD0\x05\0\xEB\x05\0\xEF\x05\0\xF3\x05\0 \x06\0K\x06\0n\x06\0p\x06\0q\x06\0\xD4\x06\0\xD5\x06\0\xD6\x06\0\xE5\x06\0\xE7\x06\0\xEE\x06\0\xF0\x06\0\xFA\x06\0\xFD\x06\0\xFF\x06\0\0\x07\0\x10\x07\0\x11\x07\0\x12\x07\x000\x07\0M\x07\0\xA6\x07\0\xB1\x07\0\xB2\x07\0\xCA\x07\0\xEB\x07\0\xF4\x07\0\xF6\x07\0\xFA\x07\0\xFB\x07\0\0\x08\0\x16\x08\0\x1A\x08\0\x1B\x08\0$\x08\0%\x08\0(\x08\0)\x08\0@\x08\0Y\x08\0`\x08\0k\x08\0p\x08\0\x88\x08\0\x89\x08\0\x8F\x08\0\xA0\x08\0\xCA\x08\0\x04\t\0:\t\0=\t\0>\t\0P\t\0Q\t\0X\t\0b\t\0q\t\0\x81\t\0\x85\t\0\x8D\t\0\x8F\t\0\x91\t\0\x93\t\0\xA9\t\0\xAA\t\0\xB1\t\0\xB2\t\0\xB3\t\0\xB6\t\0\xBA\t\0\xBD\t\0\xBE\t\0\xCE\t\0\xCF\t\0\xDC\t\0\xDE\t\0\xDF\t\0\xE2\t\0\xF0\t\0\xF2\t\0\xFC\t\0\xFD\t\0\x05\n\0\x0B\n\0\x0F\n\0\x11\n\0\x13\n\0)\n\0*\n\x001\n\x002\n\x004\n\x005\n\x007\n\08\n\0:\n\0Y\n\0]\n\0^\n\0_\n\0r\n\0u\n\0\x85\n\0\x8E\n\0\x8F\n\0\x92\n\0\x93\n\0\xA9\n\0\xAA\n\0\xB1\n\0\xB2\n\0\xB4\n\0\xB5\n\0\xBA\n\0\xBD\n\0\xBE\n\0\xD0\n\0\xD1\n\0\xE0\n\0\xE2\n\0\xF9\n\0\xFA\n\0\x05\x0B\0\r\x0B\0\x0F\x0B\0\x11\x0B\0\x13\x0B\0)\x0B\0*\x0B\x001\x0B\x002\x0B\x004\x0B\x005\x0B\0:\x0B\0=\x0B\0>\x0B\0\\\x0B\0^\x0B\0_\x0B\0b\x0B\0q\x0B\0r\x0B\0\x83\x0B\0\x84\x0B\0\x85\x0B\0\x8B\x0B\0\x8E\x0B\0\x91\x0B\0\x92\x0B\0\x96\x0B\0\x99\x0B\0\x9B\x0B\0\x9C\x0B\0\x9D\x0B\0\x9E\x0B\0\xA0\x0B\0\xA3\x0B\0\xA5\x0B\0\xA8\x0B\0\xAB\x0B\0\xAE\x0B\0\xBA\x0B\0\xD0\x0B\0\xD1\x0B\0\x05\x0C\0\r\x0C\0\x0E\x0C\0\x11\x0C\0\x12\x0C\0)\x0C\0*\x0C\0:\x0C\0=\x0C\0>\x0C\0X\x0C\0[\x0C\0]\x0C\0^\x0C\0`\x0C\0b\x0C\0\x80\x0C\0\x81\x0C\0\x85\x0C\0\x8D\x0C\0\x8E\x0C\0\x91\x0C\0\x92\x0C\0\xA9\x0C\0\xAA\x0C\0\xB4\x0C\0\xB5\x0C\0\xBA\x0C\0\xBD\x0C\0\xBE\x0C\0\xDD\x0C\0\xDF\x0C\0\xE0\x0C\0\xE2\x0C\0\xF1\x0C\0\xF3\x0C\0\x04\r\0\r\r\0\x0E\r\0\x11\r\0\x12\r\0;\r\0=\r\0>\r\0N\r\0O\r\0T\r\0W\r\0_\r\0b\r\0z\r\0\x80\r\0\x85\r\0\x97\r\0\x9A\r\0\xB2\r\0\xB3\r\0\xBC\r\0\xBD\r\0\xBE\r\0\xC0\r\0\xC7\r\0\x01\x0E\x001\x0E\x002\x0E\x003\x0E\0@\x0E\0G\x0E\0\x81\x0E\0\x83\x0E\0\x84\x0E\0\x85\x0E\0\x86\x0E\0\x8B\x0E\0\x8C\x0E\0\xA4\x0E\0\xA5\x0E\0\xA6\x0E\0\xA7\x0E\0\xB1\x0E\0\xB2\x0E\0\xB3\x0E\0\xBD\x0E\0\xBE\x0E\0\xC0\x0E\0\xC5\x0E\0\xC6\x0E\0\xC7\x0E\0\xDC\x0E\0\xE0\x0E\0\0\x0F\0\x01\x0F\0@\x0F\0H\x0F\0I\x0F\0m\x0F\0\x88\x0F\0\x8D\x0F\0\0\x10\0+\x10\0?\x10\0@\x10\0P\x10\0V\x10\0Z\x10\0^\x10\0a\x10\0b\x10\0e\x10\0g\x10\0n\x10\0q\x10\0u\x10\0\x82\x10\0\x8E\x10\0\x8F\x10\0\xA0\x10\0\xC6\x10\0\xC7\x10\0\xC8\x10\0\xCD\x10\0\xCE\x10\0\xD0\x10\0\xFB\x10\0\xFC\x10\0I\x12\0J\x12\0N\x12\0P\x12\0W\x12\0X\x12\0Y\x12\0Z\x12\0^\x12\0`\x12\0\x89\x12\0\x8A\x12\0\x8E\x12\0\x90\x12\0\xB1\x12\0\xB2\x12\0\xB6\x12\0\xB8\x12\0\xBF\x12\0\xC0\x12\0\xC1\x12\0\xC2\x12\0\xC6\x12\0\xC8\x12\0\xD7\x12\0\xD8\x12\0\x11\x13\0\x12\x13\0\x16\x13\0\x18\x13\0[\x13\0\x80\x13\0\x90\x13\0\xA0\x13\0\xF6\x13\0\xF8\x13\0\xFE\x13\0\x01\x14\0m\x16\0o\x16\0\x80\x16\0\x81\x16\0\x9B\x16\0\xA0\x16\0\xEB\x16\0\xEE\x16\0\xF9\x16\0\0\x17\0\x12\x17\0\x1F\x17\x002\x17\0@\x17\0R\x17\0`\x17\0m\x17\0n\x17\0q\x17\0\x80\x17\0\xB4\x17\0\xD7\x17\0\xD8\x17\0\xDC\x17\0\xDD\x17\0 \x18\0y\x18\0\x80\x18\0\xA9\x18\0\xAA\x18\0\xAB\x18\0\xB0\x18\0\xF6\x18\0\0\x19\0\x1F\x19\0P\x19\0n\x19\0p\x19\0u\x19\0\x80\x19\0\xAC\x19\0\xB0\x19\0\xCA\x19\0\0\x1A\0\x17\x1A\0 \x1A\0U\x1A\0\xA7\x1A\0\xA8\x1A\0\x05\x1B\x004\x1B\0E\x1B\0M\x1B\0\x83\x1B\0\xA1\x1B\0\xAE\x1B\0\xB0\x1B\0\xBA\x1B\0\xE6\x1B\0\0\x1C\0$\x1C\0M\x1C\0P\x1C\0Z\x1C\0~\x1C\0\x80\x1C\0\x8B\x1C\0\x90\x1C\0\xBB\x1C\0\xBD\x1C\0\xC0\x1C\0\xE9\x1C\0\xED\x1C\0\xEE\x1C\0\xF4\x1C\0\xF5\x1C\0\xF7\x1C\0\xFA\x1C\0\xFB\x1C\0\0\x1D\0\xC0\x1D\0\0\x1E\0\x16\x1F\0\x18\x1F\0\x1E\x1F\0 \x1F\0F\x1F\0H\x1F\0N\x1F\0P\x1F\0X\x1F\0Y\x1F\0Z\x1F\0[\x1F\0\\\x1F\0]\x1F\0^\x1F\0_\x1F\0~\x1F\0\x80\x1F\0\xB5\x1F\0\xB6\x1F\0\xBD\x1F\0\xBE\x1F\0\xBF\x1F\0\xC2\x1F\0\xC5\x1F\0\xC6\x1F\0\xCD\x1F\0\xD0\x1F\0\xD4\x1F\0\xD6\x1F\0\xDC\x1F\0\xE0\x1F\0\xED\x1F\0\xF2\x1F\0\xF5\x1F\0\xF6\x1F\0\xFD\x1F\0q \0r \0\x7F \0\x80 \0\x90 \0\x9D \0\x02!\0\x03!\0\x07!\0\x08!\0\n!\0\x14!\0\x15!\0\x16!\0\x18!\0\x1E!\0$!\0%!\0&!\0'!\0(!\0)!\0*!\0:!\0<!\0@!\0E!\0J!\0N!\0O!\0`!\0\x89!\0\0,\0\xE5,\0\xEB,\0\xEF,\0\xF2,\0\xF4,\0\0-\0&-\0'-\0(-\0--\0.-\x000-\0h-\0o-\0p-\0\x80-\0\x97-\0\xA0-\0\xA7-\0\xA8-\0\xAF-\0\xB0-\0\xB7-\0\xB8-\0\xBF-\0\xC0-\0\xC7-\0\xC8-\0\xCF-\0\xD0-\0\xD7-\0\xD8-\0\xDF-\0\x050\0\x080\0!0\0*0\x0010\x0060\080\0=0\0A0\0\x970\0\x9D0\0\xA00\0\xA10\0\xFB0\0\xFC0\0\x001\0\x051\x0001\x0011\0\x8F1\0\xA01\0\xC01\0\xF01\0\x002\0\x004\0\xC0M\0\0N\0\x8D\xA4\0\xD0\xA4\0\xFE\xA4\0\0\xA5\0\r\xA6\0\x10\xA6\0 \xA6\0*\xA6\0,\xA6\0@\xA6\0o\xA6\0\x7F\xA6\0\x9E\xA6\0\xA0\xA6\0\xF0\xA6\0\x17\xA7\0 \xA7\0\"\xA7\0\x89\xA7\0\x8B\xA7\0\xCE\xA7\0\xD0\xA7\0\xD2\xA7\0\xD3\xA7\0\xD4\xA7\0\xD5\xA7\0\xDD\xA7\0\xF2\xA7\0\x02\xA8\0\x03\xA8\0\x06\xA8\0\x07\xA8\0\x0B\xA8\0\x0C\xA8\0#\xA8\0@\xA8\0t\xA8\0\x82\xA8\0\xB4\xA8\0\xF2\xA8\0\xF8\xA8\0\xFB\xA8\0\xFC\xA8\0\xFD\xA8\0\xFF\xA8\0\n\xA9\0&\xA9\x000\xA9\0G\xA9\0`\xA9\0}\xA9\0\x84\xA9\0\xB3\xA9\0\xCF\xA9\0\xD0\xA9\0\xE0\xA9\0\xE5\xA9\0\xE6\xA9\0\xF0\xA9\0\xFA\xA9\0\xFF\xA9\0\0\xAA\0)\xAA\0@\xAA\0C\xAA\0D\xAA\0L\xAA\0`\xAA\0w\xAA\0z\xAA\0{\xAA\0~\xAA\0\xB0\xAA\0\xB1\xAA\0\xB2\xAA\0\xB5\xAA\0\xB7\xAA\0\xB9\xAA\0\xBE\xAA\0\xC0\xAA\0\xC1\xAA\0\xC2\xAA\0\xC3\xAA\0\xDB\xAA\0\xDE\xAA\0\xE0\xAA\0\xEB\xAA\0\xF2\xAA\0\xF5\xAA\0\x01\xAB\0\x07\xAB\0\t\xAB\0\x0F\xAB\0\x11\xAB\0\x17\xAB\0 \xAB\0'\xAB\0(\xAB\0/\xAB\x000\xAB\0[\xAB\0\\\xAB\0j\xAB\0p\xAB\0\xE3\xAB\0\0\xAC\0\xA4\xD7\0\xB0\xD7\0\xC7\xD7\0\xCB\xD7\0\xFC\xD7\0\0\xF9\0n\xFA\0p\xFA\0\xDA\xFA\0\0\xFB\0\x07\xFB\0\x13\xFB\0\x18\xFB\0\x1D\xFB\0\x1E\xFB\0\x1F\xFB\0)\xFB\0*\xFB\x007\xFB\08\xFB\0=\xFB\0>\xFB\0?\xFB\0@\xFB\0B\xFB\0C\xFB\0E\xFB\0F\xFB\0\xB2\xFB\0\xD3\xFB\0^\xFC\0d\xFC\0>\xFD\0P\xFD\0\x90\xFD\0\x92\xFD\0\xC8\xFD\0\xF0\xFD\0\xFA\xFD\0q\xFE\0r\xFE\0s\xFE\0t\xFE\0w\xFE\0x\xFE\0y\xFE\0z\xFE\0{\xFE\0|\xFE\0}\xFE\0~\xFE\0\x7F\xFE\0\xFD\xFE\0!\xFF\0;\xFF\0A\xFF\0[\xFF\0f\xFF\0\x9E\xFF\0\xA0\xFF\0\xBF\xFF\0\xC2\xFF\0\xC8\xFF\0\xCA\xFF\0\xD0\xFF\0\xD2\xFF\0\xD8\xFF\0\xDA\xFF\0\xDD\xFF\0\0\0\x01\x0C\0\x01\r\0\x01'\0\x01(\0\x01;\0\x01<\0\x01>\0\x01?\0\x01N\0\x01P\0\x01^\0\x01\x80\0\x01\xFB\0\x01@\x01\x01u\x01\x01\x80\x02\x01\x9D\x02\x01\xA0\x02\x01\xD1\x02\x01\0\x03\x01 \x03\x01-\x03\x01K\x03\x01P\x03\x01v\x03\x01\x80\x03\x01\x9E\x03\x01\xA0\x03\x01\xC4\x03\x01\xC8\x03\x01\xD0\x03\x01\xD1\x03\x01\xD6\x03\x01\0\x04\x01\x9E\x04\x01\xB0\x04\x01\xD4\x04\x01\xD8\x04\x01\xFC\x04\x01\0\x05\x01(\x05\x010\x05\x01d\x05\x01p\x05\x01{\x05\x01|\x05\x01\x8B\x05\x01\x8C\x05\x01\x93\x05\x01\x94\x05\x01\x96\x05\x01\x97\x05\x01\xA2\x05\x01\xA3\x05\x01\xB2\x05\x01\xB3\x05\x01\xBA\x05\x01\xBB\x05\x01\xBD\x05\x01\xC0\x05\x01\xF4\x05\x01\0\x06\x017\x07\x01@\x07\x01V\x07\x01`\x07\x01h\x07\x01\x80\x07\x01\x86\x07\x01\x87\x07\x01\xB1\x07\x01\xB2\x07\x01\xBB\x07\x01\0\x08\x01\x06\x08\x01\x08\x08\x01\t\x08\x01\n\x08\x016\x08\x017\x08\x019\x08\x01<\x08\x01=\x08\x01?\x08\x01V\x08\x01`\x08\x01w\x08\x01\x80\x08\x01\x9F\x08\x01\xE0\x08\x01\xF3\x08\x01\xF4\x08\x01\xF6\x08\x01\0\t\x01\x16\t\x01 \t\x01:\t\x01\x80\t\x01\xB8\t\x01\xBE\t\x01\xC0\t\x01\0\n\x01\x01\n\x01\x10\n\x01\x14\n\x01\x15\n\x01\x18\n\x01\x19\n\x016\n\x01`\n\x01}\n\x01\x80\n\x01\x9D\n\x01\xC0\n\x01\xC8\n\x01\xC9\n\x01\xE5\n\x01\0\x0B\x016\x0B\x01@\x0B\x01V\x0B\x01`\x0B\x01s\x0B\x01\x80\x0B\x01\x92\x0B\x01\0\x0C\x01I\x0C\x01\x80\x0C\x01\xB3\x0C\x01\xC0\x0C\x01\xF3\x0C\x01\0\r\x01$\r\x01J\r\x01f\r\x01o\r\x01\x86\r\x01\x80\x0E\x01\xAA\x0E\x01\xB0\x0E\x01\xB2\x0E\x01\xC2\x0E\x01\xC5\x0E\x01\0\x0F\x01\x1D\x0F\x01'\x0F\x01(\x0F\x010\x0F\x01F\x0F\x01p\x0F\x01\x82\x0F\x01\xB0\x0F\x01\xC5\x0F\x01\xE0\x0F\x01\xF7\x0F\x01\x03\x10\x018\x10\x01q\x10\x01s\x10\x01u\x10\x01v\x10\x01\x83\x10\x01\xB0\x10\x01\xD0\x10\x01\xE9\x10\x01\x03\x11\x01'\x11\x01D\x11\x01E\x11\x01G\x11\x01H\x11\x01P\x11\x01s\x11\x01v\x11\x01w\x11\x01\x83\x11\x01\xB3\x11\x01\xC1\x11\x01\xC5\x11\x01\xDA\x11\x01\xDB\x11\x01\xDC\x11\x01\xDD\x11\x01\0\x12\x01\x12\x12\x01\x13\x12\x01,\x12\x01?\x12\x01A\x12\x01\x80\x12\x01\x87\x12\x01\x88\x12\x01\x89\x12\x01\x8A\x12\x01\x8E\x12\x01\x8F\x12\x01\x9E\x12\x01\x9F\x12\x01\xA9\x12\x01\xB0\x12\x01\xDF\x12\x01\x05\x13\x01\r\x13\x01\x0F\x13\x01\x11\x13\x01\x13\x13\x01)\x13\x01*\x13\x011\x13\x012\x13\x014\x13\x015\x13\x01:\x13\x01=\x13\x01>\x13\x01P\x13\x01Q\x13\x01]\x13\x01b\x13\x01\x80\x13\x01\x8A\x13\x01\x8B\x13\x01\x8C\x13\x01\x8E\x13\x01\x8F\x13\x01\x90\x13\x01\xB6\x13\x01\xB7\x13\x01\xB8\x13\x01\xD1\x13\x01\xD2\x13\x01\xD3\x13\x01\xD4\x13\x01\0\x14\x015\x14\x01G\x14\x01K\x14\x01_\x14\x01b\x14\x01\x80\x14\x01\xB0\x14\x01\xC4\x14\x01\xC6\x14\x01\xC7\x14\x01\xC8\x14\x01\x80\x15\x01\xAF\x15\x01\xD8\x15\x01\xDC\x15\x01\0\x16\x010\x16\x01D\x16\x01E\x16\x01\x80\x16\x01\xAB\x16\x01\xB8\x16\x01\xB9\x16\x01\0\x17\x01\x1B\x17\x01@\x17\x01G\x17\x01\0\x18\x01,\x18\x01\xA0\x18\x01\xE0\x18\x01\xFF\x18\x01\x07\x19\x01\t\x19\x01\n\x19\x01\x0C\x19\x01\x14\x19\x01\x15\x19\x01\x17\x19\x01\x18\x19\x010\x19\x01?\x19\x01@\x19\x01A\x19\x01B\x19\x01\xA0\x19\x01\xA8\x19\x01\xAA\x19\x01\xD1\x19\x01\xE1\x19\x01\xE2\x19\x01\xE3\x19\x01\xE4\x19\x01\0\x1A\x01\x01\x1A\x01\x0B\x1A\x013\x1A\x01:\x1A\x01;\x1A\x01P\x1A\x01Q\x1A\x01\\\x1A\x01\x8A\x1A\x01\x9D\x1A\x01\x9E\x1A\x01\xB0\x1A\x01\xF9\x1A\x01\xC0\x1B\x01\xE1\x1B\x01\0\x1C\x01\t\x1C\x01\n\x1C\x01/\x1C\x01@\x1C\x01A\x1C\x01r\x1C\x01\x90\x1C\x01\0\x1D\x01\x07\x1D\x01\x08\x1D\x01\n\x1D\x01\x0B\x1D\x011\x1D\x01F\x1D\x01G\x1D\x01`\x1D\x01f\x1D\x01g\x1D\x01i\x1D\x01j\x1D\x01\x8A\x1D\x01\x98\x1D\x01\x99\x1D\x01\xE0\x1E\x01\xF3\x1E\x01\x02\x1F\x01\x03\x1F\x01\x04\x1F\x01\x11\x1F\x01\x12\x1F\x014\x1F\x01\xB0\x1F\x01\xB1\x1F\x01\0 \x01\x9A#\x01\0$\x01o$\x01\x80$\x01D%\x01\x90/\x01\xF1/\x01\x000\x0104\x01A4\x01G4\x01`4\x01\xFBC\x01\0D\x01GF\x01\0a\x01\x1Ea\x01\0h\x019j\x01@j\x01_j\x01pj\x01\xBFj\x01\xD0j\x01\xEEj\x01\0k\x010k\x01@k\x01Dk\x01ck\x01xk\x01}k\x01\x90k\x01@m\x01mm\x01@n\x01\x80n\x01\0o\x01Ko\x01Po\x01Qo\x01\x93o\x01\xA0o\x01\xE0o\x01\xE2o\x01\xE3o\x01\xE4o\x01\0p\x01\xF8\x87\x01\0\x88\x01\xD6\x8C\x01\xFF\x8C\x01\t\x8D\x01\xF0\xAF\x01\xF4\xAF\x01\xF5\xAF\x01\xFC\xAF\x01\xFD\xAF\x01\xFF\xAF\x01\0\xB0\x01#\xB1\x012\xB1\x013\xB1\x01P\xB1\x01S\xB1\x01U\xB1\x01V\xB1\x01d\xB1\x01h\xB1\x01p\xB1\x01\xFC\xB2\x01\0\xBC\x01k\xBC\x01p\xBC\x01}\xBC\x01\x80\xBC\x01\x89\xBC\x01\x90\xBC\x01\x9A\xBC\x01\0\xD4\x01U\xD4\x01V\xD4\x01\x9D\xD4\x01\x9E\xD4\x01\xA0\xD4\x01\xA2\xD4\x01\xA3\xD4\x01\xA5\xD4\x01\xA7\xD4\x01\xA9\xD4\x01\xAD\xD4\x01\xAE\xD4\x01\xBA\xD4\x01\xBB\xD4\x01\xBC\xD4\x01\xBD\xD4\x01\xC4\xD4\x01\xC5\xD4\x01\x06\xD5\x01\x07\xD5\x01\x0B\xD5\x01\r\xD5\x01\x15\xD5\x01\x16\xD5\x01\x1D\xD5\x01\x1E\xD5\x01:\xD5\x01;\xD5\x01?\xD5\x01@\xD5\x01E\xD5\x01F\xD5\x01G\xD5\x01J\xD5\x01Q\xD5\x01R\xD5\x01\xA6\xD6\x01\xA8\xD6\x01\xC1\xD6\x01\xC2\xD6\x01\xDB\xD6\x01\xDC\xD6\x01\xFB\xD6\x01\xFC\xD6\x01\x15\xD7\x01\x16\xD7\x015\xD7\x016\xD7\x01O\xD7\x01P\xD7\x01o\xD7\x01p\xD7\x01\x89\xD7\x01\x8A\xD7\x01\xA9\xD7\x01\xAA\xD7\x01\xC3\xD7\x01\xC4\xD7\x01\xCC\xD7\x01\0\xDF\x01\x1F\xDF\x01%\xDF\x01+\xDF\x010\xE0\x01n\xE0\x01\0\xE1\x01-\xE1\x017\xE1\x01>\xE1\x01N\xE1\x01O\xE1\x01\x90\xE2\x01\xAE\xE2\x01\xC0\xE2\x01\xEC\xE2\x01\xD0\xE4\x01\xEC\xE4\x01\xD0\xE5\x01\xEE\xE5\x01\xF0\xE5\x01\xF1\xE5\x01\xE0\xE7\x01\xE7\xE7\x01\xE8\xE7\x01\xEC\xE7\x01\xED\xE7\x01\xEF\xE7\x01\xF0\xE7\x01\xFF\xE7\x01\0\xE8\x01\xC5\xE8\x01\0\xE9\x01D\xE9\x01K\xE9\x01L\xE9\x01\0\xEE\x01\x04\xEE\x01\x05\xEE\x01 \xEE\x01!\xEE\x01#\xEE\x01$\xEE\x01%\xEE\x01'\xEE\x01(\xEE\x01)\xEE\x013\xEE\x014\xEE\x018\xEE\x019\xEE\x01:\xEE\x01;\xEE\x01<\xEE\x01B\xEE\x01C\xEE\x01G\xEE\x01H\xEE\x01I\xEE\x01J\xEE\x01K\xEE\x01L\xEE\x01M\xEE\x01P\xEE\x01Q\xEE\x01S\xEE\x01T\xEE\x01U\xEE\x01W\xEE\x01X\xEE\x01Y\xEE\x01Z\xEE\x01[\xEE\x01\\\xEE\x01]\xEE\x01^\xEE\x01_\xEE\x01`\xEE\x01a\xEE\x01c\xEE\x01d\xEE\x01e\xEE\x01g\xEE\x01k\xEE\x01l\xEE\x01s\xEE\x01t\xEE\x01x\xEE\x01y\xEE\x01}\xEE\x01~\xEE\x01\x7F\xEE\x01\x80\xEE\x01\x8A\xEE\x01\x8B\xEE\x01\x9C\xEE\x01\xA1\xEE\x01\xA4\xEE\x01\xA5\xEE\x01\xAA\xEE\x01\xAB\xEE\x01\xBC\xEE\x01\0\0\x02\xE0\xA6\x02\0\xA7\x02:\xB7\x02@\xB7\x02\x1E\xB8\x02 \xB8\x02\xA2\xCE\x02\xB0\xCE\x02\xE1\xEB\x02\xF0\xEB\x02^\xEE\x02\0\xF8\x02\x1E\xFA\x02\0\0\x03K\x13\x03P\x13\x03\xB0#\x03") }, 141246u32)
+            });
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyBinaryXidStartV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyBinaryXidStartV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_BINARY_XID_START_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryXidStartV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_binary_xid_start_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryXidStartV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_binary_xid_start_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryXidStartV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryXidStartV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_binary_xid_start_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyBinaryXidStartV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyBinaryXidStartV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyBinaryXidStartV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_binary_xid_start_v1 as impl_property_binary_xid_start_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_bidi_class_v1.rs.data b/vendor/icu_properties_data/data/property_enum_bidi_class_v1.rs.data
new file mode 100644
index 00000000..8420e07d
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_bidi_class_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumBidiClassV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 9688B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_bidi_class_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_BIDI_CLASS_V1: &'static <icu::properties::provider::PropertyEnumBidiClassV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 1114112u32, shifted12_high_start: 272u16, index3_null_offset: 897u16, data_null_offset: 247u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\x7F\0\xBF\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xFE\0<\x01|\x01\x8C\x01\xCB\x01\xD5\x01\xF7\0\xF7\0\x12\x02\xF7\0\xF7\0\xF7\0H\x02\x86\x02\xC6\x02\xFB\x02,\x03V\x03\x90\x03\xC5\x03\xDF\x03\x1F\x04]\x04\x8B\x04\xBB\x04\xF1\x04.\x05m\x05\xAC\x05\xEB\x05*\x06i\x06*\x06\xA8\x06\xE8\x06&\x07d\x07\xA4\x07\xE4\x07#\x08\xAC\x05b\x08\x84\x08\xC3\x08\x02\t8\tO\t\x8F\t\x9E\t\r\x02\xDB\t\x19\nS\n\xA7\x05\xD9\x08\xF3\x08\x01\t\x17\t7\tR\tj\t\x89\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xCA\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\xA9\t\xA9\t\xA9\t\xAA\t\0\0\x10\0 \x000\0@\0P\0`\0p\0\x7F\0\x8F\0\x9F\0\xAF\0\xBF\0\xCF\0\xDF\0\xEF\0\xF7\0\x07\x01\x17\x01'\x01\xF7\0\x07\x01\x17\x01'\x01\xF7\0\x07\x01\x17\x01'\x01\xF7\0\x07\x01\x17\x01'\x01\xFE\0\x0E\x01\x1E\x01.\x01<\x01L\x01\\\x01l\x01|\x01\x8C\x01\x9C\x01\xAC\x01\x8C\x01\x9C\x01\xAC\x01\xBC\x01\xCB\x01\xDB\x01\xEB\x01\xFB\x01\xD5\x01\xE5\x01\xF5\x01\x05\x02\xF7\0\x07\x01\x17\x01'\x01\xF7\0\x07\x01\x17\x01'\x01\x12\x02\"\x022\x02B\x02\xF7\0\x07\x01\x17\x01'\x01\xF7\0\x07\x01\x17\x01'\x01\xF7\0\x07\x01\x17\x01'\x01H\x02X\x02h\x02x\x02\x86\x02\x96\x02\xA6\x02\xB6\x02\xC6\x02\xD6\x02\xE6\x02\xF6\x02\xFB\x02\x0B\x03\x1B\x03+\x03,\x03<\x03L\x03\\\x03V\x03f\x03v\x03\x86\x03\x90\x03\xA0\x03\xB0\x03\xC0\x03\xC5\x03\xD5\x03\xE5\x03\xF5\x03\xDF\x03\xEF\x03\xFF\x03\x0F\x04\x1F\x04/\x04?\x04O\x04]\x04m\x04}\x04\x8D\x04\x8B\x04\x9B\x04\xAB\x04\xBB\x04\xBB\x04\xCB\x04\xDB\x04\xEB\x04\xF1\x04\x01\x05\x11\x05!\x05.\x05>\x05N\x05^\x05m\x05}\x05\x8D\x05\x9D\x05\xAC\x05\xBC\x05\xCC\x05\xDC\x05\xEB\x05\xFB\x05\x0B\x06\x1B\x06*\x06:\x06J\x06Z\x06i\x06y\x06\x89\x06\x99\x06*\x06:\x06J\x06Z\x06\xA8\x06\xB8\x06\xC8\x06\xD8\x06\xE8\x06\xF8\x06\x08\x07\x18\x07&\x076\x07F\x07V\x07d\x07t\x07\x84\x07\x94\x07\xA4\x07\xB4\x07\xC4\x07\xD4\x07\xE4\x07\xF4\x07\x04\x08\x14\x08#\x083\x08C\x08S\x08\xAC\x05\xBC\x05\xCC\x05\xDC\x05b\x08r\x08\x82\x08\x92\x08\x84\x08\x94\x08\xA4\x08\xB4\x08\xC3\x08\xD3\x08\xE3\x08\xF3\x08\x02\t\x12\t\"\t2\t8\tH\tX\th\tO\t_\to\t\x7F\t\x8F\t\x9F\t\xAF\t\xBF\t\x9E\t\xAE\t\xBE\t\xCE\t\r\x02\x1D\x02-\x02=\x02\xDB\t\xEB\t\xFB\t\x0B\n\x19\n)\n9\nI\nS\nc\ns\n\x83\n\xA7\x05\xB7\x05\xC7\x05\xD7\x05\xF7\0\xF7\0=\n\x93\n\xF7\0\xA2\n\x1B\x02\xAF\n\xBD\n\xA0\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0=\n\xF7\0\xF7\0\xF7\0\xCD\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0@\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xDD\n,\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xEB\n\xF7\0\x8D\x05\xF7\0\x8D\x05\xF7\0\x8D\x05\xF7\0\xF7\0\xF7\0\xF7\nz\t\x01\x0B\xF7\0\xCD\n\x11\x0B\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x8A\x05\xF7\0\xA4\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0 \x0B.\x0B>\x0B\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0M\0k\x01k\x01\xF7\0G\x0B\xF7\0\xF7\0\xF7\0S\x0Ba\x0Bn\x0B\xF7\0\xF7\0\xF7\0|\x01\xAD\x01\xF7\0\xF7\0\xF7\0\x18\x02\xF7\0\xF7\0~\x0B\xAB\x05\xF7\0?\n\x18\x02\x1A\x02\xF7\0\x8C\x0B\xF7\0\xF7\0\xF7\0\x9A\x0B\x1A\x02\xF7\0\xF7\0>\n\xA9\x0B\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0h\n\xB9\x0B\xC2\x0B\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0|\x01|\x01|\x01|\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xCC\x0B\xDB\x0BN\0N\0*\x01\xEB\x0Bk\x01\xFB\x0B\x0B\x0C\x17\x0C\x1C\x0C,\x0C<\x0CL\x0C\xF7\0\\\x0C\\\x0C\\\x0C|\x01|\x01\x1B\x02l\x0Cx\x0C\x86\x0C-\x01\x96\x0Ck\x01\xF7\0\xF7\0\xA4\x0Ck\x01k\x01k\x01k\x01k\x01k\x01k\x01\xB4\x0Ck\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01;\0\xF7\0\xF7\0\xF7\0P\0k\x01e\x01k\x01k\x01k\x01k\x01k\x01k\x01\xCD\n\xF7\0Q\x01\xF7\0k\x01k\x01\xBC\x0C\xC4\x0C\xF7\0\xF7\0\xF7\0\xF7\0Q\0k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01\xD4\x0Ck\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01H\x01k\x01d\x01k\x01k\x01k\x01k\x01k\x01k\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xE4\x0C\xF3\x0C\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0Y\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0|\x01|\x01k\x01k\x01k\x01k\x01k\x01>\x01\xF7\0\xF7\0k\x01\xFC\x0Ck\x01k\x01k\x01k\x01k\x01=\0k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01;\0\xF7\0k\x01\x0C\rk\x01\x1B\r+\r\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0;\r@\0\xF7\0\xF7\0\xF7\0\xF7\0\xCB\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0k\x01k\x01K\r\xF7\0*\x01\xF7\0\xF7\0\xF7\0k\x01\xF7\0[\r\xF7\0\xF7\0\xF7\0j\x01O\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0j\r\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0M\0\xF7\0L\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0k\x01k\x01k\x01k\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0k\x01k\x01k\x01[\x08\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0N\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0Y\x05z\r\xF7\0\xFF\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x1A\x02k\x01k\x01?\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xCE\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x8A\r\xF7\0\x96\r\x15\x06\xF7\0\xF7\0\xF7\0\x9C\x0C\xF7\0\xF7\0\xF7\0\xF7\0\x8B\x05\xF7\0|\x01\xA6\r\xF7\0\xF7\0\x90\t\xF7\0C\n\x1A\x02\xF7\0\xF7\0\x19\x02\xF7\0\xF7\0\xB2\r\xF7\0\xF7\0\xA8\x05\xF7\0\xF7\0\xC0\r\xCF\r\xDC\r\xF7\0\xF7\0\xA1\x05\xF7\0\xF7\0\xF7\0\xEC\r\xAC\x05\xF7\0\x01\x06\xA7\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0-\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xFC\r\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\n\x0E\x19\x0E\x8E\x02\x8E\x02,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03)\x0Ek\x01,\x03,\x03,\x03,\x03,\x03,\x03,\x039\x0E\x85\0\x85\0;\x0E|\x01\xCD\n|\x01k\x01k\x01K\x0E[\x0E,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03k\x0E{\x0E0\0@\0P\0@\0P\0;\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x8B\x0E\x9B\x0E\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xD5\0\xF7\0\xF7\0\xF7\0k\x01k\x01k\x01k\x01O\x01O\x01@\0\xF7\0\xF7\0\xF7\0\xF7\0\xA0\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xAB\x0E\xC4\x0C\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xBB\x0E\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\xCB\x0E\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\xDB\x0E\x8E\x02\x8E\x02\xEB\x0E\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\xFB\x0E\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x02\x0F\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02,\x03,\x03\x12\x0F\"\x0F2\x0F\x8E\x02<\x0F\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02L\x0FM\x0F\x8E\x02\x8E\x02\\\x0F\x8E\x02,\x03,\x03,\x03\xFA\x02\x8E\x02\x8E\x02\x8E\x02,\x03\0\x03\xE0\x02,\x03\x8E\x02j\x0F\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\xAC\x05\xF7\0\xF7\0B\n\x15\x02<\x01;\0z\x0F\x1A\x02\xF7\0\xF7\0\x86\x0F\xAB\x05\xF7\0\xF7\0\xF7\0\x19\x02\xF7\0\x91\x0F\x17\x02\xF7\0\xF7\0\xF7\0\xAA\x05\x1A\x02\xF7\0\xF7\0\xA1\x0F\x80\x0F\xF7\0\xF7\0\xF7\0Y\x05\xAE\x0F\xAC\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0Y\x05\x93\t\xF7\0\x1A\x02\xF7\0\xF7\0\x02\x06\x1B\x02\xF7\0\x0F\x02\x17\x02\xF7\0\xF7\0\xF7\0?\n\xA7\r\xE7\x06\x8E\x05\xF7\0\xF7\0\xF7\0B\nH\tZ\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xBD\x0F)\x06\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xCA\x0F\x1B\x02\x01\x06\xF7\0\xF7\0\xF7\0\xDA\x0F\x1B\x02\xF7\0O\x01\xF7\0\xF7\0\xF7\0]\x05\xE2\x06\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0[\x05\xEA\x0F\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0Y\x05P\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF6\x0F\xAA\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x85\x0F\x1B\x02\xF7\0\x05\x10\xF7\0\xF7\0\x12\x10\xA6\x05!\x10\xF7\0\xF7\0@\n1\x10\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0A\x10\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0H\nQ\x10`\x10\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0o\x10\xE2\x06\xF7\0\xF7\0\xF7\0\xF7\0~\x10\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x8C\x05\x1A\x02\xF7\0\xF7\0\xBB\x0E\xE7\x06\xA3\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x89\x10\x98\x10?\0\xF7\0\xF7\0\xF7\0\xF7\0\xA0\x0F\x16\x02\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xFF\x05\xA8\x10\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x17\x02\xF7\0\xF7\0\xF7\0\x15\x02\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0Y\x05\xF7\0\xF7\0\xF7\0Y\x05\x19\x02\xF7\0\xF7\0\xF7\0\xF7\0\xB8\x10\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\0\x06\xC8\x10\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01;\0\xF7\0\xB1\x0Ek\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01=\0\xF7\0\xF7\0\xF7\0\xF7\0|\x01|\x01\xAE\x01|\x01\x15\x02\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xE6\n\xD5\x10\xE2\x10\xF7\0\x7F\x0F\xF7\0\xF7\0\xF7\0.\x01\xF7\0k\x01k\x01k\x01k\x01\xF2\x10\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0k\x01k\x01k\x01k\x01k\x01[\x08\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xD5\0\xCB\0\xF7\0\xCB\0\xF7\0\xD1\0\xF7\0\xD1\0L\0\xF7\0L\0\xF7\0\xCD\0\xF7\0\xCD\0\xF7\0\xFF\x10\r\x11\r\x11\r\x11|\x01|\x01|\x01\x1D\x11|\x01|\x01\xAF\x01\xA8\x05\xA9\x05?\nk\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0d\n(\x116\x11\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0Y\x05\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x15\x02\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0Z\x05\xF7\0\xF7\0\xF7\0>\nA\x11\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0>\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xFF\x05\xF7\0\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02Q\x11\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02]\x11\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02,\x03,\x03,\x03,\x03,\x03\x8E\x02\x8E\x02\x8E\x02\x8E\x02,\x03,\x03,\x03,\x03,\x03\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x03,\x037\x0E\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02\x8E\x02k\x01k\x01P\x01k\x01k\x01k\x01k\x01k\x01k\x01=\0m\x11j\x01j\x01j\x01k\x01;\0}\x11\xF7\0L\0\xF7\0\xF7\0\xF7\0Q\0\xF7\0\xF7\0\xF7\0\xC9\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0;\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01\x88\x11O\x01O\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01\x89\x11k\x01k\x01k\x01k\x01k\x01\xCD\nP\x01@\0P\x01k\x01k\x01k\x01\x14\r\xCD\nk\x01k\x01\x14\rk\x01>\x01P\x01?\0\xF7\0\xF7\0\xF7\0k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01=\0>\x01O\x01R\x01k\x01k\x01k\x01\x94\x11?\x01\xCD\n\xA2\x11k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01k\x01g\x01k\x01k\x01k\x01k\x01k\x01\xB1\x0E\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xAB\x11\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01|\x01\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x84\0\x9C\0\xBC\0\xDC\0\xFC\0\x1C\x01<\x01\\\x01|\x01\x87\x01\xA7\x01\xBF\x01\xDF\x01\xFF\x01\x1F\x02?\x02_\x02~\x02\x9C\x02\xB2\x02\xD2\x02\xE2\x02\x02\x03\"\x03B\x03a\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x85\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\xA5\x03\xC5\x03\xE5\x03\x04\x04\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03#\x048\x04X\x04x\x04\x98\x04\x81\x03\x81\x03\xB8\x04\xD8\x04\xEC\x04\x06\x05&\x05D\x05c\x05\x81\x05\x9F\x05\xBF\x05\xDC\x05\xF6\x05\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x16\x06\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03%\x06\x81\x03\x81\x03\x81\x03\x81\x038\x06\x81\x03L\x06\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03k\x06\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x8B\x06\xA0\x06\xB5\x06\xD5\x06\x81\x03\xEB\x06\x81\x03\x0B\x07\x81\x03\x81\x03+\x07A\x07S\x07\x81\x03s\x07\x88\x07\xA1\x07\xC1\x07\xE1\x07\xFC\x07\x0C\x08\x1F\x08?\x08Z\x08\x81\x03z\x08\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03z\x08\x9A\x08\xB9\x08\xB9\x08\xB9\x08\xB9\x08\xB9\x08\xB9\x08\xB9\x08\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03\x81\x03") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x12\x12\x12\x12\x12\x12\x12\x12\x12\x08\x07\x08\t\x07\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x07\x07\x07\x08\t\n\n\x04\x04\x04\n\n\n\n\n\x03\x06\x03\x06\x06\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x06\n\n\n\n\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\n\n\n\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\n\n\n\x12\x12\x12\x12\x12\x07\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x06\n\x04\x04\x04\x04\n\n\n\n\0\n\n\x12\n\n\x04\x04\x02\x02\n\0\n\n\n\x02\0\n\n\n\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\n\0\0\0\0\0\n\n\n\n\n\n\n\n\n\n\n\n\n\n\0\0\n\n\n\n\n\n\n\n\n\n\n\n\n\n\0\0\0\0\0\n\n\n\n\n\n\n\n\n\0\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\n\n\0\0\0\0\0\0\0\0\n\0\0\0\0\n\n\0\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\0\0\0\0\0\0\0\0\0\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\0\0\n\n\x04\x01\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x01\x11\x11\x01\x11\x11\x01\x11\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x05\x05\x05\x05\x05\x05\n\n\r\x04\x04\r\x06\r\n\n\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x04\x05\x05\r\r\r\x11\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\x11\x11\x11\x11\x11\x11\x11\x05\n\x11\x11\x11\x11\x11\x11\r\r\x11\x11\n\x11\x11\x11\x11\r\r\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\x11\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x11\x11\x11\x11\x11\x11\x11\x11\x11\x01\x01\n\n\n\n\x01\x01\x01\x11\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x11\x11\x11\x11\x01\x11\x11\x11\x11\x11\x11\x11\x11\x11\x01\x11\x11\x11\x01\x11\x11\x11\x11\x11\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x11\x11\x11\x01\x01\x01\x01\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\x05\x05\r\r\r\r\r\x11\x11\x11\x11\x11\x11\x11\x11\x11\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x05\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\x11\0\0\0\x11\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\x11\0\0\0\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\0\x11\x11\x11\x11\0\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\0\0\0\0\0\0\0\x04\0\0\x11\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\0\x11\x11\0\0\0\0\x11\x11\0\0\x11\x11\x11\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\x11\x11\x11\x11\x11\0\x11\x11\0\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\x11\x11\x11\x11\x11\x11\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\x11\x11\x11\x11\0\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\n\n\n\n\n\x04\n\0\0\0\0\0\x11\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\x11\x11\0\0\0\0\0\x11\x11\x11\0\x11\x11\x11\x11\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\n\n\n\n\n\n\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\x11\x11\x11\x11\0\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\0\x11\x11\x11\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\x04\0\0\0\0\0\0\0\x11\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\x11\0\x11\n\n\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\x11\x11\0\0\0\0\0\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\0\0\x11\0\x11\x11\x11\x11\x11\x11\0\x11\x11\0\0\x11\x11\0\0\0\0\0\0\0\0\x11\x11\0\0\0\0\x11\x11\x11\x11\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\x11\x11\0\0\0\0\0\0\x11\0\0\n\n\n\n\n\n\n\n\n\n\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\x11\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\0\0\0\x04\0\x11\0\0\n\n\n\n\n\n\n\n\n\n\n\x11\x11\x11\x12\x11\x11\x11\0\0\0\0\x11\x11\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\x11\x11\x11\0\0\0\0\n\0\0\0\n\n\0\0\0\0\0\0\0\0\0\0\x11\x11\0\0\x11\0\0\0\0\0\0\x11\0\x11\x11\x11\x11\x11\x11\x11\0\x11\0\0\x11\x11\x11\x11\x11\x11\x11\x11\0\0\0\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\0\x11\0\0\0\0\x11\0\x11\x11\x11\x11\x11\0\x11\0\0\0\x11\x11\x11\x11\0\0\x11\x11\0\x11\x11\x11\0\0\0\0\0\0\x11\0\x11\x11\0\0\0\x11\0\x11\x11\x11\x11\0\0\x11\x11\0\0\0\0\0\0\0\0\x11\0\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\x11\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\n\0\n\n\0\0\0\0\0\0\0\0\0\0\0\n\n\n\t\t\t\t\t\t\t\t\t\t\t\x12\x12\x12\0\x01\n\n\n\n\n\n\n\n\t\x07\x0B\x0E\x10\x0C\x0F\x06\x04\x04\x04\x04\x04\n\n\n\n\n\n\n\n\n\n\n\x06\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\x12\x12\x12\x12\x12\x12\x14\x15\x13\x16\x12\x12\x12\x12\x12\x12\x02\0\0\0\x02\x02\x02\x02\x02\x02\x03\x03\n\n\n\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\n\n\n\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\n\n\0\n\n\n\n\0\n\n\0\0\0\0\0\0\n\0\n\n\n\0\0\0\0\0\n\n\n\n\0\n\0\n\0\n\0\0\0\0\x04\0\n\n\n\n\n\0\0\0\0\0\n\n\n\n\0\0\0\0\0\0\0\0\0\n\n\n\0\0\0\0\n\n\x03\x04\n\n\n\n\n\n\n\n\n\n\n\n\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\n\n\n\n\n\n\n\n\n\n\n\n\0\n\n\n\0\0\0\0\0\n\n\n\n\n\n\0\0\0\0\x11\x11\0\0\0\0\0\0\0\n\n\n\n\n\n\n\n\n\n\0\n\n\n\n\n\t\n\n\n\n\0\0\0\n\n\n\n\n\n\n\n\0\0\0\0\0\0\0\0\0\x11\x11\x11\x11\0\0\n\0\0\0\0\0\n\n\0\0\0\0\0\n\n\n\0\0\0\0\0\0\0\0\0\x11\x11\n\n\0\0\0\n\n\n\n\n\n\0\0\0\0\0\0\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\n\n\n\0\0\0\0\0\0\0\n\n\n\n\0\0\0\0\0\x11\x11\x11\n\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\n\n\0\0\x11\0\0\0\x11\0\0\0\0\x11\0\0\0\0\0\x11\x11\0\n\n\n\n\x11\0\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\x11\x11\x11\x11\0\0\x11\x11\0\0\0\0\0\0\0\0\0\x11\x11\x11\x11\x11\x11\0\x11\x11\0\0\x11\x11\0\0\0\0\0\0\0\0\0\x11\0\0\0\0\0\0\0\0\x11\0\0\0\x11\0\x11\x11\x11\0\0\x11\x11\0\0\0\0\0\x11\x11\0\0\0\0\0\x11\0\0\x11\0\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x11\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x01\x01\x01\x01\x01\x01\r\r\r\r\r\r\r\r\r\r\r\r\r\r\n\n\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\n\n\n\x06\n\x06\0\n\x06\n\n\n\n\n\n\n\n\n\x04\n\n\x03\x03\n\n\n\0\n\x04\x04\n\0\0\0\0\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\x12\0\n\n\x04\x04\x04\n\n\n\n\n\x03\x06\x03\x06\x06\x04\x04\n\n\n\x04\x04\0\n\n\n\n\n\n\n\0\x12\x12\x12\x12\x12\x12\x12\x12\x12\n\n\n\n\n\x12\x12\x11\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\x11\x11\x11\x11\x11\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\n\x01\x11\x11\x11\x01\x11\x11\x01\x01\x01\x01\x01\x11\x11\x11\x11\x01\x01\x01\x01\x01\x01\x01\x01\x11\x11\x11\x01\x01\x01\x01\x11\x01\x01\x01\x01\x01\x11\x11\x01\x01\x01\x01\x01\x01\x01\x01\x01\n\n\n\n\n\n\n\r\r\r\r\x11\x11\x11\x11\r\r\r\r\r\r\r\r\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\r\r\r\r\r\r\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x01\x01\x01\x01\x01\x01\x01\x01\x01\x11\x11\x11\x11\x11\n\x01\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x11\x11\x01\x01\x01\x11\x11\x11\x11\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x11\0\0\x11\x11\0\0\0\0\0\0\0\0\0\0\x11\x11\x11\x11\0\0\x11\x11\0\0\0\0\0\0\0\x11\x11\x11\x11\x11\0\x11\x11\x11\0\0\0\0\0\0\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\0\x11\0\x11\x11\0\0\0\0\0\0\x11\0\0\0\x11\x11\x11\x11\x11\x11\0\x11\0\0\0\0\x11\x11\x11\x11\0\0\0\0\0\0\x11\x11\0\x11\0\0\0\x11\x11\x11\x11\x11\x11\x11\x11\0\0\x11\0\x11\0\0\x11\x11\x11\x11\0\x11\x11\x11\x11\x11\0\0\0\0\0\0\0\0\0\0\0\x11\x11\0\x11\0\x11\x11\x11\x11\x11\x11\0\0\x11\x11\0\0\0\0\0\x11\x11\x11\x11\x11\x11\0\0\x11\x11\x11\x11\0\x11\x11\x11\x11\x11\x11\0\0\x11\x11\x11\0\0\0\0\x11\x11\x11\x11\x11\x11\x11\0\x11\x11\0\0\0\0\0\0\x11\x11\x11\x11\x11\x11\x11\0\x11\x11\x11\x11\x11\x11\0\0\x11\x11\x11\x11\x11\x11\x11\x11\0\0\x11\x11\x11\x11\x11\x11\0\x11\x11\0\x11\x11\0\0\0\0\0\0\0\0\0\x11\x11\x11\x11\x11\x11\0\0\0\x11\0\x11\x11\0\x11\x11\0\0\0\x11\0\x11\0\0\0\0\0\0\0\0\n\n\n\n\n\n\n\n\x04\x04\x04\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\0\0\x11\x11\x11\0\0\n\0\x11\0\0\0\0\0\0\0\0\0\0\0\x12\x12\x12\x12\0\0\0\0\0\0\0\0\0\0\0\0\x12\x12\x12\x12\x12\x12\x12\x12\x11\x11\x11\x11\x11\0\0\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\n\n\x11\x11\x11\n\0\0\0\0\0\0\0\0\0\0\n\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\0\x11\x11\x11\x11\x11\0\x11\x11\0\x11\x11\x11\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x11\x11\x11\x11\x11\x11\x11\x01\x01\x01\x01\x01\x01\x01\x01\x01\x11\x11\x11\x11\x11\x11\x11\x01\x01\x01\x01\x01\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\n\n\n\n\n\n\n\n\0\0\0\0\n\n\n\n\n\n\n\0\0\0\0\0\0\0\n\n\n\n\n\n\n\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x12\x12\0") }, icu::properties::props::BidiClass::LeftToRight));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumBidiClassV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumBidiClassV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_BIDI_CLASS_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumBidiClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumBidiClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumBidiClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumBidiClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_bidi_class_v1 as impl_property_enum_bidi_class_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_bidi_mirroring_glyph_v1.rs.data b/vendor/icu_properties_data/data/property_enum_bidi_mirroring_glyph_v1.rs.data
new file mode 100644
index 00000000..23f2bfa8
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_bidi_mirroring_glyph_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumBidiMirroringGlyphV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 4739B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_bidi_mirroring_glyph_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_BIDI_MIRRORING_GLYPH_V1: &'static <icu::properties::provider::PropertyEnumBidiMirroringGlyphV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 120832u32, shifted12_high_start: 30u16, index3_null_offset: 3u16, data_null_offset: 186u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0~\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xC0\0\xBA\0\xBA\0\xBA\0\xA5\x01\xBE\x01\xBE\x01\xBF\x01\xBE\x01\xBE\x01\xBE\x01\xDF\x01\0\0\x10\0 \x000\0@\0P\0`\0p\0~\0\x8E\0\x9E\0\xAE\0\xBA\0\xCA\0\xDA\0\xEA\0\xBA\0\xCA\0\xDA\0\xEA\0\xBA\0\xCA\0\xDA\0\xEA\0\xBA\0\xCA\0\xDA\0\xEA\0\xBA\0\xCA\0\xDA\0\xEA\0\xBA\0\xCA\0\xDA\0\xEA\0\xBA\0\xCA\0\xDA\0\xEA\0\xBA\0\xCA\0\xDA\0\xEA\0\xC0\0\xD0\0\xE0\0\xF0\0\xBA\0\xCA\0\xDA\0\xEA\0\xBA\0\xCA\0\xDA\0\xEA\0\xBA\0\xCA\0\xDA\0\xEA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xFE\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\x0B\x01\x16\x01\xBA\0\xBA\0\x1D\x01,\x01\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0<\x01\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0K\x01Z\x01j\x01v\x01\x84\x01\x92\x01\xA1\x01\xB1\x01\xC1\x01\xD1\x01\xDF\x01\xEF\x01\xFF\x01\x0F\x02\x1F\x02/\x02?\x02\xBA\0O\x02\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0Z\x02j\x02\xBA\0\xBA\0\xBA\0\xBA\0z\x02\x88\x02\x97\x02\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xA7\x02\xB7\x02\xC7\x02\xD7\x02\xE7\x02\xF7\x02\x06\x03\x12\x03 \x03*\x038\x03G\x03\xBA\0V\x03b\x03q\x03\x81\x03\x91\x03\xA1\x03\xB1\x03\xC1\x03\xD1\x03\xE0\x03\xEF\x03\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xFD\x03\x0C\x04\x1A\x04*\x04\xBA\0\xBA\x005\x04\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0B\x04R\x04\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0^\x04m\x04\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0u\x04\x7F\x04\xBA\0\x8E\x04\xBA\0\x9C\x04\xAC\x04\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xB1\x04\xBA\0\xBA\0\xBA\0\xB7\x04\xBA\0\xBA\0=\x01\xBA\0\xBA\0\xBA\0\xB3\x04\xBA\0\xBA\0\xBA\0\xB9\x04\xBA\0\xBA\0\xBA\0H\0T\0T\0T\0T\0T\0T\0d\0\x03\0\x03\0\x03\0\x84\0\x03\0\x03\0\x03\0\x03\0\xA1\0\xC1\0\x03\0\xD4\0\xF3\0\x13\x01\x03\x003\x01S\x01\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0n\x01\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x85\x01\xEE\xFF") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0`(\0\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>\0 \0\0\0<\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\0`\0\0\0[\0\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0}\0`\0\0\0{\0\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBB\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAB\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0;\x0F`:\x0F\xA0=\x0F`<\x0F\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9C\x16`\x9B\x16\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:  9  \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F `E \xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~ `} \xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8E `\x8D \xA0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0 \0\0 \0\0 \0\0\0\0\0\0\0\0\0\x0B\" \x0C\" \r\" \x08\" \t\" \n\" \0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\xF5) \0\0 \0\0\0\0\0\0\0\0\0\0\0 \0\0 \0\0 \0\0 \0\0\0\xFE+ \xA3) \x9B) \xA0) \0\0\0\xEE* \0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0 \0\0 \0\0 \0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0 =\" <\" \0\0 \0\0 \0\0 \xCD\" \0\0 L\" \0\0 \0\0 \0\0 \0\0 \0\0 \0\0 E\" \0\0\0\0\0\0\0\0\0S\" R\" U\" T\" \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0 \0\0\0e\" d\" g\" f\" i\" h\" k\" j\" \0\0\0\0\0 o\" n\" q\" p\" s\" r\" u\" t\" w\" v\" y\" x\" {\" z\" }\" |\" \x7F\" ~\" \x81\" \x80\" \x83\" \x82\" \x85\" \x84\" \x87\" \x86\" \x89\" \x88\" \x8B\" \x8A\" \0\0 \0\0\0\0\0\0\x90\" \x8F\" \x92\" \x91\" \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB8) \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA3\" \xA2\" \0\0\0\0\0\0\xDE* \0\0 \xE4* \xE3* \0\0 \xE5* \0\0 \0\0 \0\0 \0\0 \xB1\" \xB0\" \xB3\" \xB2\" \xB5\" \xB4\" \xB7\" \xB6\" \xDC' \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCA\" \xC9\" \xCC\" \xCB\" C\" \0\0\0\0\0\0\xD1\" \xD0\" \0\0\0\0\0\0\0\0\0\0\0\0\xD7\" \xD6\" \xD9\" \xD8\" \xDB\" \xDA\" \xDD\" \xDC\" \xDF\" \xDE\" \xE1\" \xE0\" \xE3\" \xE2\" \xE5\" \xE4\" \xE7\" \xE6\" \xE9\" \xE8\" \xEB\" \xEA\" \xED\" \xEC\" \0\0\0\0\0\0\xF1\" \xF0\" \xFA\" \xFB\" \xFC\" \0\0 \xFD\" \xFE\" \0\0 \0\0 \xF2\" \xF3\" \xF4\" \xF6\" \xF7\" \0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t#`\x08#\xA0\x0B#`\n#\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0*#`)#\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i'`h'\xA0k'`j'\xA0m'`l'\xA0o'`n'\xA0q'`p'\xA0s'`r'\xA0u'`t'\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\xC4' \xC3' \xC6'`\xC5'\xA0\0\0\0\xC9' \xC8' \0\0\0\xCD' \0\0 \xCB' \0\0\0\0\0\0\0\0\0\0\0 \0\0 \xD6' \xD5' \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB8\" \xDE' \xDD' \0\0\0\0\0\0\xE3' \xE2' \xE5' \xE4' \xE7'`\xE6'\xA0\xE9'`\xE8'\xA0\xEB'`\xEA'\xA0\xED'`\xEC'\xA0\xEF'`\xEE'\xA0\0\0\0\0\0\0\0\0\0\x84)`\x83)\xA0\x86)`\x85)\xA0\x88)`\x87)\xA0\x8A)`\x89)\xA0\x8C)`\x8B)\xA0\x90)`\x8F)\xA0\x8E)`\x8D)\xA0\x92)`\x91)\xA0\x94)`\x93)\xA0\x96)`\x95)\xA0\x98)`\x97)\xA0\0\0\0\0\0\0!\" \0\0 \0\0 \0\0 \0\0 \"\" \0\0\0\0\0  \" \xA5) \xA4) \0\0 \0\0 \xA9) \xA8) \xAB) \xAA) \xAD) \xAC) \xAF) \xAE) \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x98\" \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC1) \xC0) \0\0 \0\0 \xC5) \xC4) \0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0 \xD0) \xCF) \xD2) \xD1) \0\0\0\xD5) \xD4) \0\0\0\0\0\0\xD9)`\xD8)\xA0\xDB)`\xDA)\xA0\0\0 \0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0 \0\0 \0\0 \0\0\0\0\0\0\xE9) \xE8) \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \x15\" \0\0 \0\0 \xF9) \xF8) \0\0\0\0\0\0\xFD)`\xFC)\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0 \0\0 \0\0 \0\0 \0\0 \0\0 \0\0 \0\0 \0\0 \0\0 \0\0 \0\0 \0\0\0\0\0 \0\0 \0\0\0\0\0\0\0\0 \0\0\0\0\0 \0\0\0\0\0\0\0\0 \0\0\0,* +* .* -* \0\0\0\0\0\0\0\0\0\0\0\x005* 4* \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=* <* \0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e* d* \0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0 \0\0 \0\0 \0\0\0\0\0 \0\0\0\0\0\0\0\0 \0\0 \0\0\0\0\0\0\0\0\0\0\0\0z* y* |* {* ~* }* \x80* \x7F* \x82* \x81* \x84* \x83* \x86* \x85* \x88* \x87* \x8A* \x89* \x8C* \x8B* \x8E* \x8D* \x90* \x8F* \x92* \x91* \x94* \x93* \x96* \x95* \x98* \x97* \x9A* \x99* \x9C* \x9B* \x9E* \x9D* \xA0* \x9F* \xA2* \xA1* \0\0 \0\0\0\0\0\0\xA7* \xA6* \xA9* \xA8* \xAB* \xAA* \xAD* \xAC* \0\0\0\xB0* \xAF* \xB2* \xB1* \xB4* \xB3* \xB6* \xB5* \xB8* \xB7* \xBA* \xB9* \xBC* \xBB* \xBE* \xBD* \xC0* \xBF* \xC2* \xC1* \xC4* \xC3* \xC6* \xC5* \xC8* \xC7* \xCA* \xC9* \xCC* \xCB* \xCE* \xCD* \xD0* \xCF* \xD2* \xD1* \xD4* \xD3* \xD6* \xD5* \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\xA6\" \0\0\0\0\0\0\0\0 \xA9\" \xA8\" \xAB\" \0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xED* \xEC* $\" \0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\xF8* \xF7* \xFA* \xF9* \0\0 \0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1F\" \0\0\0\0\0\0\x03. \x02. \x05. \x04. \0\0\0\0\0\0\0\0\0\n. \t. \0\0\0\r. \x0C. \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1D. \x1C. \0\0\0\0\0\0!.  . #.`\".\xA0%.`$.\xA0'.`&.\xA0).`(.\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0V.`U.\xA0X.`W.\xA0Z.`Y.\xA0\\.`[.\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t0`\x080\xA0\x0B0`\n0\xA0\r0`\x0C0\xA0\x0F0`\x0E0\xA0\x110`\x100\xA0\0\0\0\0\0\0\x150`\x140\xA0\x170`\x160\xA0\x190`\x180\xA0\x1B0`\x1A0\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Z\xFE`Y\xFE\xA0\\\xFE`[\xFE\xA0^\xFE`]\xFE\xA0\0\0\0\0\0\0\0\0\0\0\0\0e\xFE d\xFE \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\xFF`\x08\xFF\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1E\xFF \0\0\0\x1C\xFF \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\xFF`\0\0\0;\xFF\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\xFF`\0\0\0[\xFF\xA0\0\0\0`\xFF`_\xFF\xA0\0\0\0c\xFF`b\xFF\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0") }, icu::properties::props::BidiMirroringGlyph { mirroring_glyph: None, mirrored: false, paired_bracket_type: icu::properties::props::BidiPairedBracketType::None }));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumBidiMirroringGlyphV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumBidiMirroringGlyphV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_BIDI_MIRRORING_GLYPH_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumBidiMirroringGlyphV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_bidi_mirroring_glyph_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumBidiMirroringGlyphV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_bidi_mirroring_glyph_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumBidiMirroringGlyphV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumBidiMirroringGlyphV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_bidi_mirroring_glyph_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumBidiMirroringGlyphV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumBidiMirroringGlyphV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumBidiMirroringGlyphV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_bidi_mirroring_glyph_v1 as impl_property_enum_bidi_mirroring_glyph_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_canonical_combining_class_v1.rs.data b/vendor/icu_properties_data/data/property_enum_canonical_combining_class_v1.rs.data
new file mode 100644
index 00000000..d3e2759f
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_canonical_combining_class_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumCanonicalCombiningClassV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 5360B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_canonical_combining_class_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_CANONICAL_COMBINING_CLASS_V1: &'static <icu::properties::provider::PropertyEnumCanonicalCombiningClassV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 125440u32, shifted12_high_start: 31u16, index3_null_offset: 336u16, data_null_offset: 0u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\xBD\0\0\0\0\0\0\0\0\0\xFA\0\0\0\0\0\0\0)\x01i\x01\x99\x01\xCE\x01\0\0\xFF\x01.\x02m\x02\0\0\x82\x02\xC0\x02\xEE\x02\x17\x03M\x03\x8D\x03\xCA\x03\x8D\x03\xFD\x03\x8D\x03<\x04\x8D\x03<\x04\x8D\x03<\x04\0\0<\x04\x8D\x03o\x04\x8D\x03<\x04\x86\x04<\x04\0\0\xC3\x04\xCE\x04\t\x05\x15\x05P\x05x\x05\xB2\x05\xF2\x05,\x06\xE8\x04\x01\x05\x0E\x05$\x05D\x05T\x05l\x05\x8B\x05\0\0\x10\0 \x000\0@\0P\0`\0p\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\x80\0\x90\0\xA0\0\xB0\0\xBD\0\xCD\0\xDD\0\xED\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\xFA\0\n\x01\x1A\x01*\x01\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0)\x019\x01I\x01Y\x01i\x01y\x01\x89\x01\x99\x01\xA9\x01\xB9\x01\xC9\x01\xCE\x01\xDE\x01\xEE\x01\xFE\x01\0\0\x10\0 \x000\0\xFF\x01\x0F\x02\x1F\x02/\x02.\x02>\x02N\x02^\x02m\x02}\x02\x8D\x02\x9D\x02\0\0\x10\0 \x000\0\x82\x02\x92\x02\xA2\x02\xB2\x02\xC0\x02\xD0\x02\xE0\x02\xF0\x02\xEE\x02\xFE\x02\x0E\x03\x1E\x03\x17\x03'\x037\x03G\x03M\x03]\x03m\x03}\x03\x8D\x03\x9D\x03\xAD\x03\xBD\x03\xCA\x03\xDA\x03\xEA\x03\xFA\x03\x8D\x03\x9D\x03\xAD\x03\xBD\x03\xFD\x03\r\x04\x1D\x04-\x04\x8D\x03\x9D\x03\xAD\x03\xBD\x03<\x04L\x04\\\x04l\x04\x8D\x03\x9D\x03\xAD\x03\xBD\x03<\x04L\x04\\\x04l\x04\x8D\x03\x9D\x03\xAD\x03\xBD\x03<\x04L\x04\\\x04l\x04\0\0\x10\0 \x000\0<\x04L\x04\\\x04l\x04\x8D\x03\x9D\x03\xAD\x03\xBD\x03o\x04\x7F\x04\x8F\x04\x9F\x04\x8D\x03\x9D\x03\xAD\x03\xBD\x03<\x04L\x04\\\x04l\x04\x86\x04\x96\x04\xA6\x04\xB6\x04<\x04L\x04\\\x04l\x04\0\0\x10\0 \x000\0\xC3\x04\xD3\x04\xE3\x04\xF3\x04\xCE\x04\xDE\x04\xEE\x04\xFE\x04\t\x05\x19\x05)\x059\x05\x15\x05%\x055\x05E\x05P\x05`\x05p\x05\x80\x05x\x05\x88\x05\x98\x05\xA8\x05\xB2\x05\xC2\x05\xD2\x05\xE2\x05\xF2\x05\x02\x06\x12\x06\"\x06,\x06<\x06L\x06\\\x06\0\0\0\0\0\0e\x06\0\0\0\0\0\0\0\0%\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBD\x04\0\0\x06\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8B\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x97\x06\0\0\0\0\0\0\0\0\n\x04\xA2\x06\0\0\0\0\0\0\xB2\x06\xC1\x06\0\0\0\0\0\0\0\0\0\0\0\0\xC5\x03\x06\x04\0\0\xD0\x06\xE9\0\0\0\0\0\xB7\x04\0\0\0\0\0\0\xC3\x03\xE0\x06\0\0\0\0\0\0\xC2\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF0\x06\0\x07\x0E\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1E\x07.\x07\x80\08\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\x07W\x07\xEC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFB\x03\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\x80\0\0\0\0\0g\x07\0\0\0\0\0\0\0\0\0\0\0\0w\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\x83\x07\0\0r\0\0\0\0\0\0\0\0\0\0\0\xEB\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\0\0\xCB\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x04\0\0\x80\0\xEB\0\0\0\0\0\xFC\x02\0\0\0\0\x07\x04\0\0\0\0\0\0\0\0\0\0\xC6\x03\n\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\x07\xA3\x07\0\0\0\0\x04\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCA\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA5\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB5\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0%\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xED\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC5\x07\0\0\0\0\xD5\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE5\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF1\x07\0\0\0\0\0\0\xF4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF9\x07\0\0\0\0\0\0\0\0\xFA\x02\0\0\0\0\0\0\0\0\x06\x08\xED\x01\0\0\0\0\x16\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\0\0\0\0&\x08\0\0\0\0\0\0,\x08\0\0\0\0\0\0\0\0\xEA\0\0\0\0\09\x08\0\0\0\0\0\0\xC6\x03\0\0\0\0\0\0\0\0I\x08\0\0\0\0\0\0T\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\x08\0\0\0\0\0\0\0\0f\x08\xCA\x03\0\0s\x08\xE8\0\0\0\0\0\0\0\0\0\xB3\x04\n\x04\0\0\0\0\0\0\0\0\x81\x08-\x04\0\0\0\0\0\0\0\0\0\0\0\0\x8F\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFB\x03\x92\x08\0\0\0\0\0\0\xFB\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8B\x08\0\0\0\0\0\0\0\0\0\0\0\0\xFF\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB4\x04\xC6\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\x04\0\0\0\0\0\0\x06\x04\x03\x04\0\0\0\0\0\0\0\0\x01\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFB\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA0\x08\0\0\0\0\0\0\0\0\x03\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA3\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB3\x08\0\0\0\0\0\0\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC3\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC5\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD4\x08\xE2\x08\xEF\x08\0\0\xFB\x08\0\0\0\0\0\0\0\0\0\0\t\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\t!\t/\t\0\0\0\0\0\0\0\0\0\0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0-\x04\0\0\0\0\0\0t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0P\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0J\t\0\0\0\0\0\0\0\0\0\0\0\0V\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0H\0X\0p\0\x8F\0\xAF\0\xCF\0\xEF\0\x0F\x01/\x01:\x01P\x01_\x01}\x01\x9C\x01\xBC\x01P\x01\xDC\x01P\x01P\x01P\x01P\x01P\x01\xEE\x01P\x01\x0E\x02P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01(\x02H\x02e\x02P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01\x84\x02P\x01\xA2\x02\xA5\x02\xC5\x02P\x01P\x01P\x01\xE5\x02\xF4\x02\x0B\x03'\x03D\x03b\x03\x7F\x03\x9C\x03\xBB\x03\xD8\x03\xF2\x03P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01\xC9\x03P\x01P\x01P\x01P\x01\x07\x04P\x01\x1B\x04P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01;\x04P\x01P\x01P\x01P\x01P\x01P\x01P\x01P\x01E\x04a\x04P\x01P\x01P\x01P\x01P\x01P\x01\x81\x04\x97\x04\xA9\x04P\x01\xC8\x04") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE8\xDC\xDC\xDC\xDC\xE8\xD8\xDC\xDC\xDC\xDC\xDC\xCA\xCA\xDC\xDC\xDC\xDC\xCA\xCA\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xDC\x01\x01\x01\x01\x01\xDC\xDC\xDC\xDC\xE6\xE6\xE6\xE6\xE6\xF0\xE6\xDC\xDC\xDC\xE6\xE6\xE6\xDC\xDC\0\xE6\xE6\xE6\xDC\xDC\xDC\xDC\xE6\xE8\xDC\xDC\xE6\xE9\xEA\xEA\xE9\xEA\xEA\xE9\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xE6\xE6\xE6\xE6\xDC\xE6\xE6\xE6\xDE\xDC\xE6\xE6\xE6\xE6\xE6\xE6\xDC\xDC\xDC\xDC\xDC\xDC\xE6\xE6\xDC\xE6\xE6\xDE\xE4\xE6\n\x0B\x0C\r\x0E\x0F\x10\x11\x12\x13\x13\x14\x15\x16\0\x17\0\x18\x19\0\xE6\xDC\0\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\x1E\x1F \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1B\x1C\x1D\x1E\x1F !\"\xE6\xE6\xDC\xDC\xE6\xE6\xE6\xE6\xE6\xDC\xE6\xE6\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\0\0\xE6\xE6\xE6\xE6\xDC\xE6\0\0\xE6\xE6\0\xDC\xE6\xE6\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xDC\xE6\xE6\xDC\xE6\xE6\xDC\xDC\xDC\xE6\xDC\xDC\xE6\xDC\xE6\xE6\xDC\xE6\xDC\xE6\xDC\xE6\xDC\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xDC\xE6\0\0\0\0\0\0\0\0\0\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\0\xE6\xE6\xE6\0\xE6\xE6\xE6\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xDC\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xDC\xDC\xDC\xE6\xE6\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\xDC\xDC\xDC\xDC\xDC\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\0\xDC\xE6\xE6\xDC\xE6\xE6\xDC\xE6\xE6\xE6\xDC\xDC\xDC\x1B\x1C\x1D\xE6\xE6\xE6\xDC\xE6\xE6\xDC\xDC\xE6\xE6\xE6\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\xE6\xDC\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0T[\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\t\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0gg\t\0\0\0\0\0\0\0\0kkkk\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0vv\t\0\0\0\0\0\0\0\0zzzz\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\0\xDC\0\xD8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81\x82\0\x84\0\0\0\0\0\x82\x82\x82\x82\0\0\x82\0\xE6\xE6\t\0\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\t\t\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\xE6\0\0\0\0\0\0\0\0\0\xE4\0\0\0\0\0\0\0\0\0\xDE\xE6\xDC\0\0\0\0\0\0\0\xE6\xDC\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\0\0\xDC\xE6\xE6\xE6\xE6\xE6\xDC\xDC\xDC\xDC\xDC\xDC\xE6\xE6\xDC\0\xDC\xE6\xE6\xDC\xDC\xE6\xE6\xE6\xE6\xE6\xDC\xE6\xE6\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\xE6\xDC\xE6\xE6\xE6\0\0\t\t\0\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\0\x01\xDC\xDC\xDC\xDC\xDC\xE6\xE6\xDC\xDC\xDC\xDC\xE6\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\xDC\0\0\0\0\xE6\0\0\0\xE6\xE6\0\0\0\0\0\0\xE6\xE6\xDC\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xDC\xE6\xE6\xEA\xD6\xDC\xCA\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE8\xE4\xE4\xDC\xDA\xE6\xE9\xDC\xE6\xDC\xE6\xE6\x01\x01\xE6\xE6\xE6\xE6\x01\x01\x01\xE6\xE6\0\0\0\xE6\0\0\0\x01\x01\xE6\xDC\xE6\x01\x01\xDC\xDC\xDC\xDC\0\0\0\0\0\0\0\0\0\0\xDA\xE4\xE8\xDE\xE0\xE0\0\0\0\0\0\0\0\0\0\x08\x08\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\0\0\xE6\0\xE6\xE6\xDC\0\0\xE6\xE6\0\0\0\0\0\xE6\xE6\0\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1A\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xDC\xDC\xDC\xDC\xDC\xDC\xDC\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\0\0\xDC\0\xE6\0\0\0\0\0\0\0\0\xE6\x01\xDC\0\0\0\0\t\0\0\0\0\0\xE6\xDC\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\0\0\0\0\0\0\xDC\xDC\xE6\xE6\xE6\xDC\xE6\xDC\xDC\xDC\0\0\xE6\xDC\xE6\xDC\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\x07\0\0\0\0\0\t\t\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\x07\0\0\0\0\0\t\x07\0\0\0\0\0\0\0\0\0\x07\t\0\0\0\0\0\0\0\0\0\0\0\x07\x07\0\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\0\0\0\t\0\0\0\x07\0\0\0\0\0\0\0\0\0\t\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\t\t\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\xD8\xD8\x01\x01\x01\0\0\0\xE2\xD8\xD8\xD8\0\0\0\0\0\0\0\0\xDC\xDC\xDC\xDC\xDC\0\0\xE6\xE6\xE6\xE6\xE6\xDC\xDC\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\0\0\xE6\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\0\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\xE6\0\0\xE6\xE6\xE6\xE6\xE6\0\xE6\xE6\0\xE6\xE6\xE6\xE6\xE6\0\0\0\0\0\0\0\0\0\0\0\0\xE8\xE8\xDC\xE6\xDC\xDC\xDC\xDC\xDC\xDC\xDC\0\0\0\0\0\0\0\0\0\xE6\xE6\xE6\xE6\xE6\xE6\x07\0\0\0\0\0\0\0") }, icu::properties::props::CanonicalCombiningClass::NotReordered));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumCanonicalCombiningClassV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumCanonicalCombiningClassV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_CANONICAL_COMBINING_CLASS_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumCanonicalCombiningClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumCanonicalCombiningClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumCanonicalCombiningClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumCanonicalCombiningClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_canonical_combining_class_v1 as impl_property_enum_canonical_combining_class_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_east_asian_width_v1.rs.data b/vendor/icu_properties_data/data/property_enum_east_asian_width_v1.rs.data
new file mode 100644
index 00000000..75c9e828
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_east_asian_width_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumEastAsianWidthV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 5028B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_east_asian_width_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_EAST_ASIAN_WIDTH_V1: &'static <icu::properties::provider::PropertyEnumEastAsianWidthV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 1114112u32, shifted12_high_start: 272u16, index3_null_offset: 18u16, data_null_offset: 359u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\x7F\0\xBF\0\xFC\0;\x01g\x01\x99\x01g\x01\xC8\x01g\x01\x04\x02D\x02T\x02\x84\x02\xC2\x02\x01\x031\x03g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01\x9C\x04\xB6\x04\xC4\x04\xDA\x04\xFA\x04\x03\x05 \x05:\x05\xB6\x04\xB6\x04\xB6\x04Z\x05\xB6\x04\xB6\x04\xB6\x04Z\x05\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04\xFA\x04z\x05\xFA\x04\xFA\x04\xFA\x04\x9A\x05\x9A\x05\x9A\x05\x9B\x05\x9A\x05\x9A\x05\x9A\x05\x9B\x05\0\0\x10\0 \x000\0@\0P\0`\0p\0\x7F\0\x8F\0\x9F\0\xAF\0\xBF\0\xCF\0\xDF\0\xEF\0\xFC\0\x0C\x01\x1C\x01,\x01;\x01K\x01[\x01k\x01g\x01w\x01\x87\x01\x97\x01\x99\x01\xA9\x01\xB9\x01\xC9\x01g\x01w\x01\x87\x01\x97\x01\xC8\x01\xD8\x01\xE8\x01\xF8\x01g\x01w\x01\x87\x01\x97\x01\x04\x02\x14\x02$\x024\x02D\x02T\x02d\x02t\x02T\x02d\x02t\x02\x84\x02\x84\x02\x94\x02\xA4\x02\xB4\x02\xC2\x02\xD2\x02\xE2\x02\xF2\x02\x01\x03\x11\x03!\x031\x031\x03A\x03Q\x03a\x03g\x01w\x01\x87\x01\x97\x01g\x01w\x01\x87\x01\x97\x01g\x01w\x01\x87\x01\x97\x01g\x01w\x01\x87\x01\x97\x01g\x01w\x01\x87\x01\x97\x01g\x01w\x01\x87\x01\x97\x01g\x01w\x01\x87\x01\x97\x01g\x01w\x01\x87\x01\x97\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01q\x03q\x03q\x03q\x03q\x03q\x03g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01\x81\x03\x91\x03\xA1\x03g\x01g\x01g\x01\x13\x01\xB0\x03g\x01\xB7\x03g\x01g\x01g\x01g\x01g\x01\xC4\x03\xD1\x03\xE0\x03g\x01g\x01\xED\x03x\x02z\x02\xC6\0z\x02g\x01\xFC\x03g\x01\n\x04\x10\x01g\x01\x1A\x04$\x043\x04B\x04P\x04d\x01`\x04g\x01h\x04s\x04\x12\x01\x91\0g\x01g\x01g\x01g\x01g\x01z\x04\x86\x04g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01\x91\x04\xA1\x04g\x01g\x01g\x01g\x01g\x01g\x01D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02\x9C\x02D\x02D\x02D\x02D\x02D\x02x\x02D\x02D\x02\x80\x02D\x02\xAF\x04\xA4\x02\xBD\x04\xC9\x04M\x01\xD5\x04\xE5\x04\xF4\x04\x04\x05g\x01\x14\x05$\x050\x05@\x05b\x03g\x03P\x05`\x05l\x05u\x05\x7F\x05\x8D\x05\x9B\x05\xAB\x05g\x01\xB7\x05\xCC\x01\xC0\x05\xCF\x05g\x01>\x02g\x01\xDA\x05g\x01\xE1\x05g\x01g\x01\xF1\x05g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01\xFF\x05g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01\xE7\x04g\x01g\x01g\x01\x0F\x06g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01q\x03\x1F\x06q\x03q\x03q\x03q\x03q\x030\x05q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03.\x05g\x01q\x03/\x06q\x03q\x030\x06p\x03q\x03q\x03q\x03q\x038\x06q\x03q\x03q\x03q\x03q\x03q\x03l\x03q\x03q\x03p\x03q\x03q\x03q\x03q\x030\x06q\x03q\x03q\x03q\x03q\x03B\x06q\x030\x06q\x03q\x03Q\x06q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03a\x06q\x03q\x03q\x03-\x05g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01q\x03a\x06g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x030\x05g\x01g\x01g\x01g\x01g\x01D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01D\x02d\x06g\x01q\x03q\x03t\x06}\x06g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01\x8C\x06\x8D\x06\x8D\x06\x8D\x06\x8D\x06\x8D\x06\x9C\x06\x9D\x06\x9D\x06\x9D\x06\x9D\x06\x9E\x06\xAD\x06\xB5\x06\xC5\x06\xCC\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01/\x05\xE0\x05q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03\x14\x05q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03.\x05g\x01b\x03\xD5\x06g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01\xE5\x06q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03\xDF\x05\xF4\x06g\x01\x04\x07\x10\x07q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03b\x06g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01q\x03q\x03q\x03q\x03q\x03-\x05q\x03-\x05g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01\xBB\x05g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01b\x03g\x01g\x01g\x01y\x02D\x02v\x02D\x02D\x02D\x02z\x02D\x02 \x07/\x07w\x02g\x01g\x01g\x01g\x01g\x01\xDF\x05q\x03q\x03b\x06\xD5\x06\xE0\x05.\x05g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01q\x03q\x03?\x07L\x07q\x03q\x03q\x03S\x07q\x030\x05q\x03q\x03a\x070\x05q\x03p\x07q\x03q\x03q\x030\x06\x7F\x07q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x032\x06q\x03q\x03q\x031\x06\x8F\x07q\x03\x14\x05\xE6\x05g\x01\x7F\x04\xBB\x05g\x01g\x01g\x01g\x01f\x03q\x03q\x03q\x03q\x03q\x03g\x01g\x01g\x01q\x03q\x03q\x03q\x03\x9F\x07\xAF\x07\xE7\x04\xB7\x07g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01b\x06\xC3\x07g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01e\x03q\x03q\x03y\x06L\x07q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03g\x01g\x01g\x01g\x01g\x01g\x01g\x01a\x06\xD3\x07q\x03q\x03q\x03\xD7\x062\x06d\x06\xD5\x06g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x03q\x031\x06g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01g\x01D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02g\x01D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02D\x02v\x02\x84\0\xA4\0\xC4\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xEC\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x0B\x01+\x01K\x01k\x01\x8A\x01\xA3\x01\x12\0\xBB\x01\xDB\x01\xFA\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\x17\x02\x12\0$\x02\x12\0\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01D\x02\x12\0\x12\0\x12\0\x12\0d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02t\x02\x84\x02\x12\0\xA4\x02\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\xC4\x02\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xE4\x02\xFF\x01\xFF\x01\x04\x03\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x15\x035\x03L\x03\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\\\x03\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0|\x03\x9C\x03\xBC\x03\xDC\x03\xFC\x03\x1C\x04\x12\0\x12\0\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01\xFF\x01<\x04\\\x04\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02d\x02|\x04") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x04\x04\x01\x04\x04\x01\x01\0\x01\0\x04\x01\x01\x04\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\x01\x01\0\0\0\0\0\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\0\x01\x01\0\0\x01\0\x01\x01\0\0\0\x01\x01\x01\x01\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\x01\0\0\0\0\0\x01\x01\x01\0\0\0\0\x01\0\0\0\0\0\0\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\x01\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\x01\0\x01\x01\x01\0\x01\0\0\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x01\0\0\x01\x01\x01\x01\0\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\0\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x01\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\x01\0\0\0\x01\0\x01\0\0\0\x01\0\0\0\0\0\0\x01\0\0\x01\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\x01\0\0\0\0\x01\0\0\0\0\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\x01\0\0\0\x01\x01\0\0\x01\0\0\0\x01\0\0\0\0\x01\0\0\x01\x01\x01\0\0\x01\0\x01\0\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\x01\x01\0\0\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\0\0\0\x05\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\x01\x01\0\0\0\0\x01\x01\0\0\0\0\x01\x01\x01\0\0\x01\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\x01\x01\0\0\x01\0\0\0\0\x01\x01\0\0\0\0\x05\x05\0\0\0\0\0\0\x01\0\x01\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\0\x01\x01\0\x01\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\x01\x01\0\x05\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x01\x01\x01\x01\x01\x01\x01\x01\x05\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\x01\x01\x05\x01\x01\x01\x01\x01\x05\x05\x01\x05\x01\x01\x01\x01\x05\x01\x01\x05\x01\x01\0\0\0\0\0\x05\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\0\0\x05\x05\x05\0\x05\0\0\0\0\0\0\0\0\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\0\0\x04\x04\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\x05\x01\x01\x01\x01\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x03\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x01\x01\x01\x01\x01\x01\x01\x01\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\0\0\0\x03\x03\x03\x03\x03\x03\x03\0\x02\x02\x02\x02\x02\x02\x02\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\0\0\x05\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x05\x01\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x01\x01\x01\x01\x01\x05\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x05\0\0\0\x05\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\x05\0\0\0\x05\x05\x05\0\0\x05\x05\x05\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\x05\0\0\0") }, icu::properties::props::EastAsianWidth::Neutral));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumEastAsianWidthV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumEastAsianWidthV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_EAST_ASIAN_WIDTH_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumEastAsianWidthV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumEastAsianWidthV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumEastAsianWidthV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumEastAsianWidthV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_east_asian_width_v1 as impl_property_enum_east_asian_width_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_general_category_v1.rs.data b/vendor/icu_properties_data/data/property_enum_general_category_v1.rs.data
new file mode 100644
index 00000000..5fbbb84a
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_general_category_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumGeneralCategoryV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 17572B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_general_category_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_GENERAL_CATEGORY_V1: &'static <icu::properties::provider::PropertyEnumGeneralCategoryV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 1114112u32, shifted12_high_start: 272u16, index3_null_offset: 1895u16, data_null_offset: 3352u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\x7F\0\xBF\0\xFF\0.\x01m\x01\xAD\x01\xE5\x01$\x02P\x02\x8E\x02\xCE\x02\xDE\x02\x1E\x03O\x03\x8C\x03\xBC\x03\xFA\x03:\x04J\x04{\x04\xB2\x04\xF2\x042\x05r\x05\xA3\x05\xCF\x05\x0F\x06D\x06^\x06\x9E\x06\xDE\x06\x1E\x07V\x07\x8D\x07\xCA\x07\t\x08H\x08\x87\x08\xC6\x08\x05\tD\t\x83\t\xC3\t\x01\n?\n\x7F\n\xBF\n\xFE\n>\x0B~\x0B\xBE\x0B\xFD\x0B=\x0C}\x0C\xBC\x0C\xFC\x0C;\r{\r\xBB\r\xFB\r;\x0Ey\x0EL\x0Cf\x0Cv\x0C\x8C\x0C\xAC\x0C\xCB\x0C\xE8\x0C\x07\r'\r'\r4\rQ\rq\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\x83\r\xA3\r\x83\r\x83\r\x83\r\xC3\r\xC3\r\xC3\r\xC4\r\xC3\r\xC3\r\xC3\r\xC4\r\0\0\x10\0 \x000\0@\0P\0`\0p\0\x7F\0\x8F\0\x9F\0\xAF\0\xBF\0\xCF\0\xDF\0\xEF\0\xFF\0\x0F\x01\x1F\x01/\x01.\x01>\x01N\x01^\x01m\x01}\x01\x8D\x01\x9D\x01\xAD\x01\xBD\x01\xCD\x01\xDD\x01\xE5\x01\xF5\x01\x05\x02\x15\x02$\x024\x02D\x02T\x02P\x02`\x02p\x02\x80\x02\x8E\x02\x9E\x02\xAE\x02\xBE\x02\xCE\x02\xDE\x02\xEE\x02\xFE\x02\xDE\x02\xEE\x02\xFE\x02\x0E\x03\x1E\x03.\x03>\x03N\x03O\x03_\x03o\x03\x7F\x03\x8C\x03\x9C\x03\xAC\x03\xBC\x03\xBC\x03\xCC\x03\xDC\x03\xEC\x03\xFA\x03\n\x04\x1A\x04*\x04:\x04J\x04Z\x04j\x04J\x04Z\x04j\x04z\x04{\x04\x8B\x04\x9B\x04\xAB\x04\xB2\x04\xC2\x04\xD2\x04\xE2\x04\xF2\x04\x02\x05\x12\x05\"\x052\x05B\x05R\x05b\x05r\x05\x82\x05\x92\x05\xA2\x05\xA3\x05\xB3\x05\xC3\x05\xD3\x05\xCF\x05\xDF\x05\xEF\x05\xFF\x05\x0F\x06\x1F\x06/\x06?\x06D\x06T\x06d\x06t\x06^\x06n\x06~\x06\x8E\x06\x9E\x06\xAE\x06\xBE\x06\xCE\x06\xDE\x06\xEE\x06\xFE\x06\x0E\x07\x1E\x07.\x07>\x07N\x07V\x07f\x07v\x07\x86\x07\x8D\x07\x9D\x07\xAD\x07\xBD\x07\xCA\x07\xDA\x07\xEA\x07\xFA\x07\t\x08\x19\x08)\x089\x08H\x08X\x08h\x08x\x08\x87\x08\x97\x08\xA7\x08\xB7\x08\xC6\x08\xD6\x08\xE6\x08\xF6\x08\x05\t\x15\t%\t5\tD\tT\td\tt\t\x83\t\x93\t\xA3\t\xB3\t\xC3\t\xD3\t\xE3\t\xF3\t\x01\n\x11\n!\n1\n?\nO\n_\no\n\x7F\n\x8F\n\x9F\n\xAF\n\xBF\n\xCF\n\xDF\n\xEF\n\xFE\n\x0E\x0B\x1E\x0B.\x0B>\x0BN\x0B^\x0Bn\x0B~\x0B\x8E\x0B\x9E\x0B\xAE\x0B\xBE\x0B\xCE\x0B\xDE\x0B\xEE\x0B\xFD\x0B\r\x0C\x1D\x0C-\x0C=\x0CM\x0C]\x0Cm\x0C}\x0C\x8D\x0C\x9D\x0C\xAD\x0C\xBC\x0C\xCC\x0C\xDC\x0C\xEC\x0C\xFC\x0C\x0C\r\x1C\r,\r;\rK\r[\rk\r{\r\x8B\r\x9B\r\xAB\r\xBB\r\xCB\r\xDB\r\xEB\r\xFB\r\x0B\x0E\x1B\x0E+\x0E;\x0EK\x0E[\x0Ek\x0Ey\x0E\x89\x0E\x99\x0E\xA9\x0E\xA3\x05\xA3\x05\xB9\x0E\xC8\x0E\xD8\x0E\xE8\x0E\xF7\x0E\x06\x0F\x14\x0F$\x0FA\0A\x004\x0Fa\0a\0D\x0F\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05T\x0Fd\x0F\xA3\x05\xA3\x05T\x0F\xA3\x05\xA3\x05\\\x0Fl\x0F\xE1\n\xA3\x05\xA3\x05\xA3\x05l\x0F\xA3\x05\xA3\x05\xA3\x05t\x0F\x84\x0F\x8D\x0F\xA3\x05\x9D\x0FA\0A\0A\0A\0A\0\xAD\x0F\xBD\x0F\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xC0\x0F\xA3\x05\xD0\x0F\xD5\x0F\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xE5\x0F\xF4\x0F\xA3\x05\x04\x10\xA3\x05\x13\x10\xA3\x05#\x10d\x083\x10\xA3\x05\xA3\x05\xA3\x05C\x10Q\x10]\x10$\x0Bm\x10}\x10$\x0B\xA3\x05\xA3\x05\x8D\x10\xA3\x05\xA3\x05\x94\x10\xA4\x10\xA3\x05\xAB\x10\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xBB\x10\xA3\x05\x0E\x05\xCB\x10\xDB\x10\xEB\x10\xA3\x05\x0F\x05\xFB\x10\xA3\x05\xA3\x05\x11\x05\xA3\x05\x93\x10\x0B\x11\x19\x11\x19\x11\xA3\x05)\x11\xA3\x05\xA3\x05\xA3\x059\x11I\x11V\x11$\x0B$\x0Bf\x11v\x11@\x06\x18\r\x18\r\x18\r\xC9\x07\xA3\x05\xA3\x05\x86\x11\x94\x11\xD8\x0E\xA3\x11\xAF\x11\xCB\x07\xA3\x05\xBF\x11\x9E\x06\xA3\x05\xA3\x05\xCD\x11\xDC\x11\xA3\x05\xA3\x05\xEC\x11\xF8\x11\x08\x12\x9E\x06\xA3\x05\x15\x12%\x12A\0A\x005\x12E\x12U\x12d\x12m\x12a\0a\0t\x02\x80\x02\x80\x02\x80\x02}\x12\x88\x12a\0u\x02\x80\x02\x80\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\x98\x12\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xA7\x12\xB7\x12\xA7\x12\xA7\x12\xB7\x12\xC7\x12\xA7\x12\xD7\x12\xE7\x12\xE7\x12\xE7\x12\xF7\x12\x06\x13\x16\x13&\x136\x13F\x13V\x13f\x13v\x13\x85\x13\x93\x13\xA3\x13\xB3\x13\xC3\x13\xD3\x13\xE3\x13\xE3\x13\xF2\x13\x02\x14\x11\x14 \x140\x14@\x14N\x14^\x14n\x14~\x14\x8E\x14\x8E\x14\x9B\x14\xAB\x14\xBB\x14\x19\x11\xCA\x14\xDA\x14\x19\x11\xE6\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xFA\x14\x19\x11\n\x15\x19\x11\x19\x11\x19\x11\x19\x11\x15\x15\x19\x11\xDF\x14\xEA\x14%\x15\x19\x11)\x157\x15\x19\x11\x19\x11\x9D\x0F\x18\r<\x15\x18\r~\x14~\x14~\x14L\x15\x19\x11\x19\x11\x19\x11\x19\x11X\x15~\x14\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xC2\x14\xC8\x14\x19\x11\x19\x11\xE2\x14\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11h\x15\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11x\x15\x82\x15~\x14d\x15\x19\x11\x19\x11\x92\x15\xEA\x14\x9C\x15\xEA\x14\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\x9F\x15\xA7\x15\xEA\x14\xEA\x14\xEA\x14\xB0\x15\xEA\x14\xBC\x15\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\xEA\x14\x19\x11\x19\x11\x19\x11\xEA\x14\xCA\x15\x19\x11\x19\x11\xD7\x15\x19\x11\xE1\x15\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11A\0A\0A\0a\0a\0a\0\xF1\x15\0\x16\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\xFF\0\x0F\x16\x1E\x16a\0a\0.\x16\xA3\x05\xA3\x05\xA3\x05>\x16N\x16\xA3\x05^\x16j\x08j\x08j\x08j\x08\xCE\x02\xCE\x02n\x16|\x16\x8C\x16\x9C\x16\xAC\x16\xBC\x16\x18\r\x18\r\x19\x11\xDD\x15\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xCC\x16\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xDC\x16\x18\r\x19\x11\xEC\x16\xFA\x16\n\x17\x1A\x17\x01\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05*\x17\xBD\x0F\xA3\x05\xA3\x05\xA3\x05\xA3\x059\x17\xFD\x04\xA3\x05\xA3\x05\x01\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x0E\x05I\x17\xA3\x05\xA3\x05\x19\x11\x19\x11S\x17\xA3\x05\x19\x11b\x17N\x15\x19\x11r\x17}\x14\x19\x11\x19\x11N\x15\x19\x11\x19\x11}\x14\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x19\x11\x19\x11\x19\x11\x19\x11\xA3\x05m\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x10\x05\x19\x11\x19\x11\x19\x11R\x17\xA3\x05\xA3\x05\x15\x12\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x82\x17\xA3\x05\x92\x17\x18\r\xFF\0\xFF\0\xA2\x17\xB2\x17\xFF\0\xC2\x17\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xD2\x17\xE2\x17\xBD\x02\xF2\x17\x02\x18\xFD\0\xFF\0\xFF\0\xFF\0\x12\x18 \x180\x186\x18@\x18L\x18\\\x18\x18\rj\x18x\x18\xA3\x05\x85\x18\x95\x18\xA3\x05\xA3\x05\xA3\x05\xA5\x18\xB5\x18\xA3\x05\xA3\x05\xC1\x18\xCD\x18$\x0B\xCE\x02\xDD\x18\x9E\x06\xA3\x05\xED\x18\xA3\x05v\x05\xFD\x18\xA3\x05\x10\x05\xCA\x07\xA3\x05\xA3\x05\r\x19\x1C\x19,\x19<\x19\xF1\x10\xA3\x05\xA3\x05C\x19R\x19b\x19r\x19\xA3\x05\x82\x19\xA3\x05\xA3\x05\xA3\x05\x92\x19\xA2\x19\xA7\x19\xB7\x19\xC7\x19\xD6\x19\xBA\x10j\x08a\0a\0\xE6\x19\xF6\x19a\0a\0a\0a\0a\0\xA3\x05\xA3\x05\x06\x1A$\x0B\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x97\r\xA3\x05\x16\x1A\xA3\x05\xA3\x05\x11\x05&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A&\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x0F\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x93\x10\x18\r\x18\rF\x1AS\x1Ab\x1Al\x1A|\x1A\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x8A\x1A\x97\x1A\xFF\x04\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA7\x1A\x19\x11\xA3\x05\xA3\x05\xA3\x05\xA3\x05\0\x05\xA3\x05\xA3\x05\xB7\x1A\x18\r\x18\r\xC7\x1A\xCE\x02\xD7\x1A\xCE\x02\xE7\x1A\xF3\x1A\x03\x1B\x12\x1B\xE3\n\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\"\x1B2\x1B0\0@\0P\0`\0B\x1BR\x1Bb\x1B\xA3\x05d\x1B\xA3\x05\x0E\x05\xD5\x19t\x1B\x84\x1B\x93\x1Be\x08\xA3\x05\xE1\n\xA3\x1B\x0F\x05\x0F\x05\x18\r\x18\r\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05>\x07\xB3\x1B~\x14~\x14\x96\x0F\x8E\x14\x8E\x14\x8E\x14\xC3\x1B\xCC\x1B:\x15\xDA\x1B\x18\r\x18\r\x19\x11\x19\x11\xEA\x1B\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\x10\x05\xA3\x05\xA3\x05\xA3\x05\x93\t\xFA\x1B\xFE\x1B\xA3\x05\xA3\x05\x06\x1C\xA3\x05\x15\x1C\xA3\x05\xA3\x05%\x1C\xA3\x055\x1C\xA3\x05\xA3\x05E\x1CU\x1C\x18\r\x18\rA\0A\0B\x03a\0a\0\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x0F\x05$\x0BA\0A\0e\x1Ca\0m\x1C\xA3\x05\xA3\x05}\x1C\xA3\x05\xA3\x05\xA3\x05\x81\x1C5\x035\x03\x91\x1C\x9F\x1C\xAD\x1C\xA3\x05\xA3\x05\xA3\x05\x97\r\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05^\x16\xA3\x05\xBB\x10}\x1C\x18\r\xBD\x1C\x80\x02\x80\x02\xC2\x1C\x18\r\x18\r\x18\r\x18\r\xD2\x1C\xA3\x05\xA3\x05\xDC\x1C\xA3\x05\xEB\x1C\xA3\x05\xFB\x1C\xA3\x05\x0E\x05\x0B\x1D\x18\r\x18\r\x18\r\xA3\x05\x1B\x1D\xA3\x05+\x1D\xA3\x05;\x1D\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\xA3\x05K\x1D~\x14[\x1D~\x14~\x14k\x1DN\t\xA3\x05{\x1D\x01\x1C\x8B\x1D\xA3\x05\x9B\x1D\xA3\x05\xAB\x1D\x18\r\x18\r\xBB\x1D\xA3\x05\xC6\x1D\xD6\x1D\xA3\x05\xA3\x05\xA3\x05\xE6\x1D\xA3\x05\xF6\x1D\xA3\x05\x06\x1E\xA3\x05\x16\x1E#\x1E\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x94\x10\x18\r\x18\r\x18\rA\0A\0A\x003\x1Ea\0a\0a\0C\x1E\xA3\x05\xA3\x05S\x1E$\x0Bc\x1EA\0s\x1Ea\0\x83\x1E\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r~\x14\xFB\x1B\xA3\x05\xA3\x05\x93\x1E\x99\r\xA1\x1E\x18\r\x18\r\xF6\x13\xA3\x05\xAB\x1D\xB1\x1E\xA3\x05w\x05\xC1\x1E\x18\r\xA3\x05\xD1\x1E\x18\r\x18\r\xA3\x05\xE1\x1E\x18\r\xA3\x05^\x16\xF1\x1E\xA3\x05\xA3\x05u\x05\x01\x1F[\x1D\x11\x1F!\x1F\xCB\x07\xA3\x05\xA3\x051\x1F?\x1F\xA3\x05\x94\x10$\x0Bs\x07\xA3\x05O\x1F\x85\r_\x1F\xA3\x05\xA3\x05o\x1F\xCB\x07\xA3\x05\xA3\x05\x7F\x1F\x8E\x1F\x9E\x1F\xAE\x1F\xB9\x1F\xA3\x05T\t\xC9\x1F\xD8\x1F\xE7\x1F\x18\r\x18\r\x18\r\xF7\x1Fc\x08\x06 \xA3\x05\xA3\x050\x06\x16 $\x0B& X\x08h\x085 E U c \x1C\x14s \xA3\x05\xA3\x05\x83 \x92 \xA2 \xB1 \x18\r\xA3\x05\xA3\x05\xA3\x05\xC1 \xD1 \xE1 \x99\r\x18\r\xA3\x05\xA3\x05\xA3\x05\xF1 \0!$\x0B\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\x10!\x1F!.!6!\x18\r\x18\r\xA3\x05\xA3\x05\xA3\x05F!U!$\x0Be!\x18\r\xA3\x05\xA3\x05u!\x85!$\x0B\x95!\xA1!\x18\r\xA3\x05\xB1!\xC1!\xD1!^\x16\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\xC9\x1F\xE1!\x18\r\x18\r\x18\r\x18\r\x18\r\x18\rA\0A\0a\0a\0#\x0C\xF1!\0\"\x0C\"\xA3\x05\x1C\",\"$\x0B\x18\r\x18\r\x18\r\x18\r<\"\xA3\x05\xA3\x05K\"[\"\x18\rk\"\xA3\x05\xA3\x05x\"\x87\"\x97\"\xA3\x05\xA3\x05s\x05\xA7\"\xB5\"\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x94\x10\xC5\"\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\xD5\"$\x0Bh\x08\xA3\x05\x10!\xE5\"\xF5\"#\x0C\x8D\x0FP\x05\xA3\x05*\x0E\x05#\x14#\x18\r\x18\r\x18\r\x18\rn\t\xA3\x05\xA3\x05$#3#$\x0BC#\xA3\x05M#]#$\x0B\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05m#}#U\t\xA3\x05\x89#,!\x99#\x18\r\x18\r\x18\r\x18\r\x18\r\x93\t~\x14\xA9#\xB8#\xC6#\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x93\x10\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x8E\x14\x8E\x14\x8E\x14\x8E\x14\x8E\x14\x8E\x14\xD6#\xE6#\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x97\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xF6#\xA3\x05\xA3\x05\xA3\x05\x06$\x16$\x1B\x14\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05>\x07\xA3\x05\xA3\x05\xA3\x05\xA3\x05^\x16\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x051\x06\x1D$$\x0B\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\xA3\x05\x94\x10\xA3\x05\x0E\x05,\x19\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x0E\x05$\x0B\xA3\x05\x0F\x05*$\xA3\x05\xA3\x05\xA3\x05:$J$Z$h$A\x07\xA3\x05\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\rx$\xA3\x05}$$\x0B\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\rA\0A\0a\0a\0~\x14\x8D$\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x1D\x0E\x9D$\x9E$\x9E$\xA6$\xB5$\x18\r\x18\r\x18\r\x18\r\xC3$\xD3$\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05}\x1C\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xBB\x10\x18\r\x94\t\x94\x10\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xE3$\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x98\r\x91\t\x18\r\xF3$\xFF$\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x11\x05\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05>\x07\x10\x05\x94\x10\x0F%\x1F%\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11$\x0B\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xCC\x16\x18\r\x18\r\x18\r\x18\r\xCE\x02\xCE\x02A\x06\xCE\x02\x1A\x14\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xCC\x16\x18\r\x18\r\x18\r\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xDC\x16\x19\x11\x19\x11/%\x19\x11\x19\x11\x19\x11:%G%T%\x19\x11`%\x19\x11\x19\x11\x19\x11<\x15\x18\r\x19\x11\x19\x11\x19\x11\x19\x11n%\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r~\x14~%~\x14~%\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11R\x17~\x14\x01\x1C\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\rA\0\xB2\x03a\0\x8E%\xAE\x03\x9C\x1C\xA7\x12A\0\xDC\0\x9E%\xAE%\xBC%\x9D\x1CA\0\xB2\x03a\0\xC9%\xD6%a\0\xE4%\xF4%\x03&\x07&A\0\xD8\0a\0A\0\xB2\x03a\0\x8E%\xAE\x03a\0\xA7\x12A\0\xDC\0\x07&A\0\xD8\0a\0A\0\xB2\x03a\0\x17&A\0&&\xEB\0\x8A\x036&a\0B&A\0\"&\xE7\x000&\xC7\0a\0\xED\0A\0N&a\0[&\x95!\x95!\x95!\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xCE\x02\xCE\x02\xCE\x02k&\xCE\x02\xCE\x02v&\x83&\x8F&\xF7\x13\xC2\x04\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\rZ\x02\x9F&\xAE&\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\rL\x0E\xBE&\xCC&\x80\x02\x80\x02\x80\x02\xDC&\x18\r\xF3\x13\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\x10\x05\xEC&\xFC&\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\x0C'\x18\r\xA3\x05\xA3\x053\x06\x1C'\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\x8B\x07$\x0B\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x051\x06,'\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r<'\x0E\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05L'\x1A\x14\x18\r\x18\rA\0A\0\xDC\0a\0\\',\x19\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xAE\x1F~\x14~\x14l'|'\x18\r\x18\r\x18\r\x18\r\xAE\x1F~\x14\x8C'\xFC\x1B\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xE4\n\xA3\x05\x9C'\xA9'\xB7'\xC7'\xD5'\xDD'g\x08\x11\x05\xEC'\x11\x05\x18\r\x18\r\x18\r\xFC'\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x19\x11\x19\x11;\x15\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xCC\x16b\x17\x18\x11\x18\x11\x18\x11\x19\x11\xDC\x16\x0C(\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x119\x15\x18\r\x18\r\x18\r\\\x17\x19\x11\xD8\x1B\x19\x11\x19\x11;\x15P\x17\xD9\x1B\xDC\x16\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19(\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11)(:\x15:\x15\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11*(\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x9D\x0F;\x15\xDA\x1B;\x15\x19\x11\x19\x11\x19\x11Q\x17\x9D\x0F\x19\x11\x19\x11Q\x17\x19\x119\x15;\x15\xD9\x1B\x18\r\x18\r\x18\r\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\xCC\x169\x15:\x155(\x19\x11\x19\x11\x19\x11D(R(\x9D\x0FP\x17\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11a(\x19\x11\x19\x11\x19\x11\x19\x11\x19\x11$\x0B\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x18\r\x18\r\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x93\x10\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x0F\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x99\r\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x93\t\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x0F\x05\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05>\x07\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\xA3\x05\x18\r\x18\r\x18\r\x18\r\x18\rq(\x18\r\x06$\x06$\x06$\x06$\x06$\x06$\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\x18\r\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\xCE\x02\x18\r6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A6\x1A\x81(\x84\0\xA4\0\xC4\0\xE4\0\x04\x01$\x01D\x01d\x01\x84\x01\xA0\x01\xC0\x01\xDA\x01\xFA\x01\x1A\x02:\x02Z\x02z\x02\x9A\x02\xB9\x02\xD9\x02\xF9\x02\x19\x039\x03Y\x03y\x03\x99\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xBD\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xDD\x03\xB9\x03\xF5\x03\x15\x045\x04U\x04\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03u\x04\x95\x04\x95\x04\x95\x04\x95\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xC5\x04\xDF\x04\xFD\x04\x1D\x05=\x05]\x05}\x05\x9D\x05\xBD\x05\xDD\x05\xFD\x05\x17\x067\x06W\x06w\x06\x97\x06\xB7\x06\xD7\x06\xF7\x06\x12\x07\xB9\x032\x07R\x07g\x07g\x07g\x07g\x07n\x07\xB9\x03\xB9\x03\x8E\x07\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\x94\x07\xB9\x03\xB4\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07\xC4\x07g\x07g\x07g\x07\xB9\x03\xE4\x07\xFD\x07\x19\x08\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x039\x08\xB9\x03\xB9\x03Y\x08g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07j\x08\x8A\x08\xA1\x08g\x07g\x07g\x07g\x07\xC1\x08g\x07g\x07g\x07g\x07g\x07g\x07\xE1\x08\xF6\x08\x16\t6\tV\tv\t\x96\t\xB6\tg\x07\xC6\t\xE6\t\xFD\t\x10\n0\nP\ng\x07i\n\x89\n\xA9\n\xC9\n\x96\t\xE9\n\t\x0B$\x0Bg\x07g\x07\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03D\x0B\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03T\x0Bs\x0B\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\x89\x0B\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\x94\x0B\xB9\x03\xB3\x0Bg\x07g\x07g\x07g\x07\xB9\x03\xB7\x0Bg\x07g\x07\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xD7\x0B\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xB9\x03\xEC\x0Bg\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07\x0C\x0Cg\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07g\x07\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04\xB5\x04,\x0C") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0C\x17\x17\x17\x19\x17\x17\x17\x14\x15\x17\x18\x17\x13\x17\x17\t\t\t\t\t\t\t\t\t\t\x17\x17\x18\x18\x18\x17\x17\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x14\x17\x15\x1A\x16\x1A\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x14\x18\x15\x18\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0C\x17\x19\x19\x19\x19\x1B\x17\x1A\x1B\x05\x1C\x18\x10\x1B\x1A\x1B\x18\x0B\x0B\x1A\x02\x17\x17\x1A\x0B\x05\x1D\x0B\x0B\x0B\x17\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x18\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x18\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x01\x02\x01\x02\x01\x02\x02\x01\x01\x02\x01\x02\x01\x01\x02\x01\x01\x01\x02\x02\x01\x01\x01\x01\x02\x01\x01\x02\x01\x01\x01\x02\x02\x02\x01\x01\x02\x01\x01\x02\x01\x02\x01\x02\x01\x01\x02\x01\x02\x02\x01\x02\x01\x01\x02\x01\x01\x01\x02\x01\x02\x01\x01\x02\x02\x05\x01\x02\x02\x02\x05\x05\x05\x05\x01\x03\x02\x01\x03\x02\x01\x03\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x01\x03\x02\x01\x02\x01\x01\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x02\x02\x02\x02\x02\x01\x01\x02\x01\x01\x02\x01\x02\x01\x01\x01\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x1A\x1A\x1A\x1A\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x04\x04\x04\x04\x04\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x04\x1A\x04\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x01\x02\x01\x02\x04\x1A\x01\x02\0\0\x04\x02\x02\x02\x17\x01\0\0\0\0\x1A\x1A\x01\x17\x01\x01\x01\0\x01\0\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x02\x01\x01\x01\x02\x02\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x02\x02\x02\x01\x02\x18\x01\x02\x01\x01\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x1B\x06\x06\x06\x06\x06\x07\x07\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x04\x17\x17\x17\x17\x17\x17\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x17\x13\0\0\x1B\x1B\x19\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x13\x06\x17\x06\x06\x17\x06\x06\x17\x06\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x05\x05\x05\x05\x17\x17\0\0\0\0\0\0\0\0\0\0\0\x10\x10\x10\x10\x10\x10\x18\x18\x18\x17\x17\x19\x17\x17\x1B\x1B\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x17\x10\x17\x17\x17\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\t\t\t\t\t\t\t\t\t\t\x17\x17\x17\x17\x05\x05\x06\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x17\x05\x06\x06\x06\x06\x06\x06\x06\x10\x1B\x06\x06\x06\x06\x06\x06\x04\x04\x06\x06\x1B\x06\x06\x06\x06\x05\x05\t\t\t\t\t\t\t\t\t\t\x05\x05\x05\x1B\x1B\x05\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\0\x10\x05\x06\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x04\x04\x1B\x17\x17\x17\x04\0\0\x06\x19\x19\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x04\x06\x06\x06\x06\x06\x06\x06\x06\x06\x04\x06\x06\x06\x04\x06\x06\x06\x06\x06\0\0\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\0\0\x17\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x1A\x05\x05\x05\x05\x05\x05\0\x10\x10\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x04\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x10\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x08\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x08\x06\x05\x08\x08\x06\x06\x06\x06\x06\x06\x06\x06\x08\x08\x08\x08\x06\x08\x08\x05\x06\x06\x06\x06\x06\x06\x06\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x17\x17\t\t\t\t\t\t\t\t\t\t\x17\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x08\x08\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\x05\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\0\0\0\x05\x05\x05\x05\0\0\x06\x05\x08\x08\x06\x06\x06\x06\0\0\x08\x08\0\0\x08\x08\x06\x05\0\0\0\0\0\0\0\0\x08\0\0\0\0\x05\x05\0\x05\x05\x05\x06\x06\0\0\t\t\t\t\t\t\t\t\t\t\x05\x05\x19\x19\x0B\x0B\x0B\x0B\x0B\x0B\x1B\x19\x05\x17\x06\0\x06\x06\x08\0\x05\x05\x05\x05\x05\x05\0\0\0\0\x05\x05\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x05\0\x05\x05\0\0\x06\0\x08\x08\x06\x06\0\0\0\0\x06\x06\0\0\x06\x06\x06\0\0\0\x06\0\0\0\0\0\0\0\x05\x05\x05\x05\0\x05\0\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\x06\x06\x05\x05\x05\x06\x17\0\0\0\0\0\0\0\0\0\x06\x06\x08\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x05\x05\x05\x05\0\0\x06\x05\x08\x08\x06\x06\x06\x06\x06\0\x06\x06\x08\0\x08\x08\x06\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x06\x06\0\0\t\t\t\t\t\t\t\t\t\t\x17\x19\0\0\0\0\0\0\0\x05\x06\x06\x06\x06\x06\x06\0\x06\x08\x08\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\x05\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x05\x05\x05\x05\0\0\x06\x05\x08\x06\x06\x06\x06\0\0\x08\x08\0\0\x08\x08\x06\0\0\0\0\0\0\0\x06\x06\x08\0\0\0\0\x05\x05\0\x05\x05\x05\x06\x06\0\0\t\t\t\t\t\t\t\t\t\t\x1B\x05\x0B\x0B\x0B\x0B\x0B\x0B\0\0\0\0\0\0\0\0\x06\x05\0\x05\x05\x05\x05\x05\x05\0\0\0\x05\x05\x05\0\x05\x05\x05\x05\0\0\0\x05\x05\0\x05\0\x05\x05\0\0\0\x05\x05\0\0\0\x05\x05\x05\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x08\x08\x06\x08\x08\0\0\0\x08\x08\x08\0\x08\x08\x08\x06\0\0\x05\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\x0B\x0B\x0B\x1B\x1B\x1B\x1B\x1B\x1B\x19\x1B\0\0\0\0\0\x06\x08\x08\x08\x06\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x06\x05\x06\x06\x08\x08\x08\x08\0\x06\x06\x06\0\x06\x06\x06\x06\0\0\0\0\0\0\0\x06\x06\0\x05\x05\x05\0\0\x05\0\0\x05\x05\x06\x06\0\0\t\t\t\t\t\t\t\t\t\t\0\0\0\0\0\0\0\x17\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x1B\x05\x06\x08\x08\x17\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\0\0\x06\x05\x08\x06\x08\x08\x08\x08\x08\0\x06\x08\x08\0\x08\x08\x06\x06\0\0\0\0\0\0\0\x08\x08\0\0\0\0\0\0\x05\x05\0\x05\x05\x06\x06\0\0\t\t\t\t\t\t\t\t\t\t\0\x05\x05\x08\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x08\x08\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x05\x08\x08\x06\x06\x06\x06\0\x08\x08\x08\0\x08\x08\x08\x06\x05\x1B\0\0\0\0\x05\x05\x05\x08\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x05\x05\x05\x06\x06\0\0\t\t\t\t\t\t\t\t\t\t\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x1B\x05\x05\x05\x05\x05\x05\0\x06\x08\x08\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\0\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\x06\0\0\0\0\x08\x08\x08\x06\x06\x06\0\x06\0\x08\x08\x08\x08\x08\x08\x08\x08\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\0\0\x08\x08\x17\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x05\x05\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\x19\x05\x05\x05\x05\x05\x05\x04\x06\x06\x06\x06\x06\x06\x06\x06\x17\t\t\t\t\t\t\t\t\t\t\x17\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\x05\0\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x05\0\0\x05\x05\x05\x05\x05\0\x04\0\x06\x06\x06\x06\x06\x06\x06\0\t\t\t\t\t\t\t\t\t\t\0\0\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x1B\x1B\x1B\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x1B\x17\x1B\x1B\x1B\x06\x06\x1B\x1B\x1B\x1B\x1B\x1B\t\t\t\t\t\t\t\t\t\t\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x1B\x06\x1B\x06\x1B\x06\x14\x15\x14\x15\x08\x08\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x08\x06\x06\x06\x06\x06\x17\x06\x06\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x1B\x1B\x1B\x1B\x1B\x1B\x06\x1B\x1B\x1B\x1B\x1B\x1B\0\x1B\x1B\x17\x17\x17\x17\x17\x1B\x1B\x1B\x1B\x17\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x08\x08\x06\x06\x06\x08\x06\x06\x06\x06\x06\x06\x08\x06\x06\x08\x08\x06\x06\x05\t\t\t\t\t\t\t\t\t\t\x17\x17\x17\x17\x17\x17\x05\x05\x05\x05\x05\x05\x08\x08\x06\x06\x05\x05\x05\x05\x06\x06\x05\x08\x08\x08\x05\x05\x08\x08\x08\x08\x08\x08\x08\x05\x05\x06\x06\x06\x06\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x08\x08\x06\x06\x08\x08\x08\x08\x08\x08\x06\x05\x08\t\t\t\t\t\t\t\t\t\t\x08\x08\x08\x06\x1B\x1B\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x17\x04\x02\x02\x02\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\0\0\x05\x05\x05\x05\x05\x05\x05\0\x05\0\x05\x05\x05\x05\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x06\x06\x06\x17\x17\x17\x17\x17\x17\x17\x17\x17\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\0\0\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x02\x02\x02\x02\x02\x02\0\0\x13\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x1B\x17\x05\x0C\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x14\x15\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x17\x17\x17\n\n\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\x05\x05\x06\x06\x06\x08\0\0\0\0\0\0\0\0\0\x05\x05\x06\x06\x08\x17\x17\0\0\0\0\0\0\0\0\0\x05\x05\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x06\x06\x08\x06\x06\x06\x06\x06\x06\x06\x08\x08\x08\x08\x08\x08\x06\x08\x08\x06\x06\x06\x06\x06\x06\x06\x17\x17\x17\x04\x17\x17\x17\x19\x05\x06\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\0\0\0\0\0\0\x17\x17\x17\x17\x17\x17\x13\x17\x17\x17\x17\x06\x06\x06\x10\x06\x05\x05\x05\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x06\x06\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x05\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x08\x08\x08\x08\x06\x06\x08\x08\x08\0\0\0\0\x08\x08\x06\x08\x08\x08\x08\x08\x08\x06\x06\x06\0\0\0\0\x1B\0\0\0\x17\x17\t\t\t\t\t\t\t\t\t\t\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\x0B\0\0\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x05\x05\x05\x05\x05\x05\x05\x06\x06\x08\x08\x06\0\0\x17\x17\x05\x05\x05\x05\x05\x08\x06\x08\x06\x06\x06\x06\x06\x06\x06\0\x06\x08\x06\x08\x08\x06\x06\x06\x06\x06\x06\x06\x06\x08\x08\x08\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x06\x17\x17\x17\x17\x17\x17\x17\x04\x17\x17\x17\x17\x17\x17\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x07\x06\x05\x05\x05\x05\x06\x08\x06\x06\x06\x06\x06\x08\x06\x08\x08\x08\x06\x08\x08\x05\x05\x05\x05\x05\x05\x05\x05\0\x17\x17\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x06\x06\x06\x06\x06\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x17\x17\x17\x05\x08\x06\x06\x06\x06\x08\x08\x06\x06\x08\x06\x06\x06\x05\x05\x05\x05\x05\x05\x06\x08\x06\x06\x08\x08\x08\x06\x08\x06\x06\x08\x08\0\0\0\0\0\0\0\0\x17\x17\x17\x17\x05\x05\x05\x05\x08\x08\x08\x08\x08\x08\x08\x08\x06\x06\x06\x06\x08\x08\x06\x06\0\0\0\x17\x17\x17\x17\x17\t\t\t\t\t\t\t\t\t\t\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x04\x04\x04\x04\x04\x04\x17\x17\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x17\x17\x17\x17\x17\x17\x17\x17\0\0\0\0\0\0\0\0\x06\x06\x06\x17\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x08\x06\x06\x06\x06\x06\x06\x06\x05\x05\x05\x05\x06\x05\x05\x08\x06\x06\x05\0\0\0\0\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x02\x02\x02\x02\x02\x02\x02\x02\x04\x02\x02\x02\x02\x02\x02\x02\x01\x02\x01\x02\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\0\0\x01\x01\x01\x01\x01\x01\0\0\x02\x02\x02\x02\x02\x02\x02\x02\0\x01\0\x01\0\x01\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\0\x02\x02\x01\x01\x01\x01\x03\x1A\x02\x1A\x1A\x02\x02\x02\0\x02\x02\x01\x01\x01\x01\x03\x1A\x1A\x1A\x02\x02\x02\x02\0\0\x02\x02\x01\x01\x01\x01\0\x1A\x1A\x1A\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x1A\x1A\x1A\0\0\x02\x02\x02\0\x02\x02\x01\x01\x01\x01\x03\x1A\x1A\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x10\x10\x10\x10\x10\x13\x13\x13\x13\x13\x13\x17\x17\x1C\x1D\x14\x1C\x1C\x1D\x14\x1C\x17\x17\x17\x17\x17\x17\x17\x17\r\x0E\x10\x10\x10\x10\x10\x0C\x17\x17\x17\x17\x17\x17\x17\x17\x17\x1C\x1D\x17\x17\x17\x17\x16\x17\x17\x17\x18\x14\x15\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x17\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x0C\x10\x10\x10\x10\x10\0\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x0B\x04\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x18\x18\x18\x14\x15\x04\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x18\x18\x18\x14\x15\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x07\x07\x07\x06\x07\x07\x07\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1B\x1B\x01\x1B\x1B\x1B\x1B\x01\x1B\x1B\x02\x01\x01\x01\x02\x02\x01\x01\x01\x02\x1B\x01\x1B\x1B\x18\x01\x01\x01\x01\x01\x1B\x1B\x1B\x1B\x01\x1B\x01\x1B\x01\x1B\x01\x01\x01\x01\x1B\x02\x01\x01\x01\x01\x02\x05\x05\x05\x05\x02\x1B\x1B\x02\x02\x01\x01\x18\x18\x18\x18\x18\x01\x02\x02\x02\x02\x1B\x18\x1B\x1B\x02\x1B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\x01\x02\n\n\n\n\x0B\x1B\x1B\0\0\0\0\x18\x18\x18\x18\x18\x1B\x1B\x1B\x1B\x1B\x18\x18\x1B\x1B\x1B\x1B\x18\x1B\x1B\x18\x1B\x1B\x18\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x18\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x18\x18\x1B\x1B\x18\x1B\x18\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x14\x15\x14\x15\x1B\x1B\x1B\x1B\x18\x18\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x14\x15\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x18\x1B\x1B\x1B\x18\x18\x18\x18\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x18\x18\x18\x18\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x0B\x0B\x0B\x0B\x0B\x0B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x18\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x14\x15\x14\x15\x14\x15\x14\x15\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x18\x18\x18\x18\x18\x14\x15\x18\x18\x18\x18\x18\x18\x18\x18\x18\x14\x15\x14\x15\x14\x15\x14\x15\x14\x15\x14\x15\x14\x15\x18\x18\x18\x18\x18\x18\x18\x18\x14\x15\x14\x15\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x14\x15\x18\x18\x18\x18\x18\x1B\x1B\x18\x18\x18\x18\x18\x18\x1B\x1B\x1B\x1B\0\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x01\x02\x01\x01\x01\x02\x02\x01\x02\x01\x02\x01\x02\x01\x01\x01\x02\x01\x02\x02\x01\x02\x02\x02\x02\x02\x02\x04\x04\x01\x01\x02\x01\x02\x02\x1B\x1B\x1B\x1B\x1B\x1B\x01\x02\x01\x02\x06\x06\x01\x02\0\0\0\0\0\x17\x17\x17\x17\x0B\x17\x17\x02\x02\x02\x02\x02\x02\0\x02\0\0\0\0\0\x02\0\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\x04\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\x17\x17\x1C\x1D\x1C\x1D\x17\x17\x17\x1C\x1D\x17\x1C\x1D\x17\x17\x17\x17\x17\x17\x17\x13\x17\x17\x13\x17\x1C\x1D\x17\x17\x1C\x1D\x14\x15\x14\x15\x14\x15\x14\x15\x17\x17\x17\x17\x17\x04\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x13\x13\x17\x17\x17\x17\x13\x17\x14\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x1B\x1B\x17\x17\x17\x14\x15\x14\x15\x14\x15\x14\x15\x13\0\0\x1B\x1B\x1B\x1B\0\0\0\0\0\0\0\0\0\0\0\0\x1B\x1B\x1B\x1B\x1B\x1B\0\0\0\0\0\0\0\0\0\0\x0C\x17\x17\x17\x1B\x04\x05\n\x14\x15\x14\x15\x14\x15\x14\x15\x1B\x1B\x14\x15\x14\x15\x14\x15\x14\x15\x13\x14\x15\x15\x1B\n\n\n\n\n\n\n\n\n\x06\x06\x06\x06\x08\x08\x13\x04\x04\x04\x04\x04\x1B\x1B\n\n\n\x04\x05\x17\x1B\x1B\x05\x05\x05\x05\x05\x05\x05\0\0\x06\x06\x1A\x1A\x04\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x17\x04\x04\x04\x05\x1B\x1B\x0B\x0B\x0B\x0B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\0\0\0\0\0\0\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x04\x17\x17\x17\t\t\t\t\t\t\t\t\t\t\x05\x05\0\0\0\0\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x05\x06\x07\x07\x07\x17\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x17\x04\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x04\x04\x06\x06\x05\x05\x05\x05\x05\x05\n\n\n\n\n\n\n\n\n\n\x06\x06\x17\x17\x17\x17\x17\x17\0\0\0\0\0\0\0\0\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x04\x04\x04\x04\x04\x04\x04\x04\x04\x1A\x1A\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x01\x02\x01\x01\x02\x01\x02\x01\x02\x01\x02\x04\x1A\x1A\x01\x02\x01\x02\x05\x01\x02\x01\x02\x02\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x01\x01\x01\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x01\x01\x01\x02\x01\x02\x01\x01\x02\0\0\x01\x02\0\x02\0\x02\x01\x02\x01\x02\x01\x02\x01\0\0\0\x04\x04\x04\x01\x02\x05\x04\x04\x02\x05\x05\x05\x05\x05\x06\x05\x05\x05\x06\x05\x05\x05\x05\x06\x05\x05\x05\x05\x08\x08\x06\x06\x08\x1B\x1B\x1B\x1B\x06\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x1B\x1B\x19\x1B\0\0\0\0\0\0\x05\x05\x05\x05\x17\x17\x17\x17\0\0\0\0\0\0\0\0\x08\x08\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x06\x06\0\0\0\0\0\0\0\0\x17\x17\x06\x06\x05\x05\x05\x05\x05\x05\x17\x17\x17\x05\x17\x05\x05\x06\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x17\x17\x06\x06\x08\x08\0\0\0\0\0\0\0\0\0\0\0\x17\x05\x05\x05\x06\x08\x08\x06\x06\x06\x06\x08\x08\x06\x06\x08\x08\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\0\x04\t\t\t\t\t\t\t\t\t\t\0\0\0\0\x17\x17\x05\x05\x05\x05\x05\x06\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x08\x06\x06\x08\x08\x06\x06\0\0\0\0\0\0\0\0\0\x05\x05\x05\x06\x05\x05\x05\x05\x05\x05\x05\x05\x06\x08\0\0\t\t\t\t\t\t\t\t\t\t\0\0\x17\x17\x17\x17\x04\x05\x05\x05\x05\x05\x05\x1B\x1B\x1B\x05\x08\x06\x08\x05\x05\x06\x05\x06\x06\x06\x05\x05\x06\x06\x05\x05\x05\x05\x05\x06\x06\x05\x06\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x04\x17\x17\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x08\x06\x06\x08\x08\x17\x17\x05\x04\x04\x08\x06\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\0\x05\x05\x05\x05\x05\x05\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x1A\x04\x04\x04\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x1A\x1A\0\0\0\0\x05\x05\x05\x08\x08\x06\x08\x08\x06\x08\x08\x17\x08\x06\0\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x05\x05\x05\x05\x05\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x12\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\0\0\0\0\0\x05\x06\x05\x05\x05\x05\x05\x05\x05\x05\x05\x18\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\0\x05\0\x05\x05\0\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x15\x14\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\x1B\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x19\x1B\x1B\x1B\x17\x17\x17\x17\x17\x17\x17\x14\x15\x17\0\0\0\0\0\0\x17\x13\x13\x16\x16\x14\x15\x14\x15\x14\x15\x14\x15\x14\x15\x14\x15\x17\x17\x14\x15\x17\x17\x17\x17\x16\x16\x16\x17\x17\x17\0\x17\x17\x17\x17\x13\x14\x15\x14\x15\x14\x15\x17\x17\x18\x13\x18\x18\x18\0\x17\x19\x17\x17\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x10\0\x17\x17\x17\x19\x17\x17\x17\x14\x15\x17\x18\x17\x13\x17\x17\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x14\x18\x15\x18\x14\x15\x17\x14\x15\x17\x17\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x04\x04\0\0\x05\x05\x05\x05\x05\x05\0\0\x05\x05\x05\0\0\0\x19\x19\x18\x1A\x1B\x19\x19\0\x1B\x18\x18\x18\x18\x1B\x1B\0\0\0\0\0\0\0\0\0\x10\x10\x10\x1B\x1B\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x17\x17\x17\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\n\n\n\n\n\x0B\x0B\x0B\x0B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x0B\x0B\x1B\x1B\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x06\0\0\x06\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\0\0\0\0\0\0\0\0\0\x05\x05\x05\n\x05\x05\x05\x05\x05\x05\x05\x05\n\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x17\x05\x05\x05\x05\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x17\n\n\n\n\n\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\x17\x01\x01\x01\0\x01\x01\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\0\0\0\x04\x04\x04\x04\x04\x04\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\0\x05\0\x05\x05\x05\x05\x05\x05\0\x05\x05\0\0\0\x05\0\0\x05\x05\x05\x05\x05\x05\0\x17\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x05\x05\x05\x05\x05\x05\x05\x1B\x1B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\0\0\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x05\x05\x05\0\x05\x05\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x05\x05\x05\x05\x05\x05\x0B\x0B\x0B\x0B\x0B\x0B\0\0\0\x17\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\x17\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x0B\x0B\x05\x05\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x05\x06\x06\x06\0\x06\x06\0\0\0\0\0\x06\x06\x06\x06\x05\x05\x05\x05\x05\x05\0\0\x06\x06\x06\0\0\0\0\x06\x17\x17\x17\x17\x17\x17\x17\x17\x17\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x0B\x0B\x17\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x0B\x0B\x0B\x05\x05\x05\x05\x05\x05\x05\x05\x1B\x05\x05\x05\x05\x05\x05\x05\x06\x06\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x17\x17\x17\x17\x17\x17\x17\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\0\0\x17\x17\x17\x17\x17\x17\x17\x05\x05\x05\x05\x05\x05\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x05\x05\x05\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x05\x05\0\0\0\0\0\0\0\x17\x17\x17\x17\0\0\0\0\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\0\0\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x05\x05\x05\x05\x06\x06\x06\x06\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\x05\x05\x05\x05\x04\x05\x01\x01\x01\x01\x01\x01\0\0\0\x06\x06\x06\x06\x06\x13\x04\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\x18\x18\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x06\x06\x13\0\0\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x05\0\0\0\0\0\0\0\0\x06\x0B\x0B\x0B\x0B\x17\x17\x17\x17\x17\0\0\0\0\0\0\x05\x05\x06\x06\x06\x06\x17\x17\x17\x17\0\0\0\0\0\0\x05\x05\x05\x05\x05\x0B\x0B\x0B\x0B\x0B\x0B\x0B\0\0\0\0\x08\x06\x08\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x17\x17\x17\x17\x17\x17\x17\0\0\x0B\x0B\x0B\x0B\x0B\x0B\t\t\t\t\t\t\t\t\t\t\x06\x05\x05\x06\x06\x05\0\0\0\0\0\0\0\0\0\x06\x08\x08\x08\x06\x06\x06\x06\x08\x08\x06\x06\x17\x17\x10\x17\x17\x06\0\0\0\0\0\0\0\0\0\0\x10\0\0\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x08\x06\x06\x06\x17\x17\x17\x17\x05\x08\x08\x05\0\0\0\0\0\0\0\0\x05\x05\x05\x06\x17\x17\x05\0\0\0\0\0\0\0\0\0\x05\x05\x05\x08\x08\x08\x06\x06\x06\x06\x06\x06\x06\x06\x06\x08\x05\x05\x05\x05\x17\x17\x17\x17\x06\x06\x06\x06\x17\x08\x06\t\t\t\t\t\t\t\t\t\t\x05\x17\x05\x17\x17\x17\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x08\x08\x08\x06\x06\x08\x08\x06\x08\x06\x06\x17\x17\x17\x17\x17\x17\x06\x05\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\0\x05\0\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x17\0\0\0\0\0\0\x08\x08\x08\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\x06\x06\x08\x08\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\0\x05\x05\0\x05\x05\x05\x05\x05\0\x06\x06\x05\x08\x08\x06\x08\x08\x08\x08\0\0\x08\x08\0\0\x08\x08\x08\0\0\x05\0\0\0\0\0\0\x08\0\0\0\0\0\x05\x05\x05\x08\x08\0\0\x06\x06\x06\x06\x06\x06\x06\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\0\0\x05\0\x05\x05\x05\x05\x05\x05\0\x05\x08\x08\x08\x06\x06\x06\x06\x06\0\x08\0\0\x08\0\x08\x08\x08\x08\0\x08\x08\x06\x08\x06\x05\x06\x05\x17\x17\0\x17\x17\0\0\0\0\0\0\0\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x08\x08\x08\x06\x06\x06\x06\x06\x06\x06\x06\x08\x08\x06\x06\x06\x08\x06\x05\x05\x05\x05\x17\x17\x17\x17\x17\t\t\t\t\t\t\t\t\t\t\x17\x17\0\x17\x06\x05\x08\x08\x08\x06\x06\x06\x06\x06\x06\x08\x06\x08\x08\x08\x08\x06\x08\x06\x06\x05\x05\x17\x05\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x08\x08\x06\x06\x06\x06\0\0\x08\x08\x08\x08\x06\x06\x08\x06\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x05\x05\x05\x05\x06\x06\0\0\x08\x08\x08\x06\x06\x06\x06\x06\x06\x06\x06\x08\x08\x06\x08\x06\x17\x17\x17\x05\0\0\0\0\0\0\0\0\0\0\0\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x08\x06\x08\x08\x06\x06\x06\x06\x06\x06\x08\x06\x05\x17\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x06\x08\x06\x08\x08\x06\x06\x06\x06\x08\x06\x06\x06\x06\x06\0\0\0\0\t\t\t\t\t\t\t\t\t\t\x0B\x0B\x17\x17\x17\x1B\x06\x06\x06\x06\x06\x06\x06\x06\x08\x06\x06\x17\0\0\0\0\x0B\x0B\x0B\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\0\0\x05\0\0\x05\x05\x05\x05\0\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x08\x08\x08\x08\x08\x08\0\x08\x08\0\0\x06\x06\x08\x06\x05\x08\x05\x08\x06\x17\x17\x17\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\x05\x05\x05\x05\x05\x08\x08\x08\x06\x06\x06\x06\0\0\x06\x06\x08\x08\x08\x08\x06\x05\x17\x05\x08\0\0\0\0\0\0\0\0\0\0\0\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x08\x05\x06\x06\x06\x06\x17\x17\x17\x17\x17\x17\x17\x06\0\0\0\0\0\0\0\0\x05\x06\x06\x06\x06\x06\x06\x08\x08\x06\x06\x06\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x08\x06\x06\x17\x17\x17\x05\x17\x17\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\0\0\0\0\0\0\x05\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x08\x06\x05\x17\x17\x17\x17\x17\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\0\x08\x06\x06\x06\x06\x06\x06\x08\x06\x06\x08\x06\x06\0\0\0\0\0\0\0\0\0\x05\x06\x06\x06\x06\x06\x06\0\0\0\x06\0\x06\x06\0\x06\x06\x06\x06\x06\x06\x05\x06\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x08\x08\x08\x08\x08\0\x06\x06\0\x08\x08\x06\x08\x06\x05\0\0\0\0\0\0\0\x05\x05\x05\x06\x06\x08\x08\x17\x17\0\0\0\0\0\0\0\x06\x06\x05\x08\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x08\x08\x06\x06\x06\x06\x06\0\0\0\x08\x08\t\t\t\t\t\t\t\t\t\t\x06\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x19\x19\x19\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\x17\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\0\x17\x17\x17\x17\x17\0\0\0\0\0\0\0\0\0\0\0\x05\x17\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x06\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x08\x08\x08\x06\x06\x06\x06\x06\x17\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x17\x17\x17\x17\x17\x1B\x1B\x1B\x1B\x04\x04\x04\x04\x17\x1B\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\0\x0B\x0B\x0B\x0B\x0B\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x04\x04\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x04\x04\x17\x17\x17\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x17\x17\x17\x17\0\0\0\0\0\x05\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\0\0\0\0\0\0\0\x06\x06\x06\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x17\x04\x06\0\0\0\0\0\0\0\0\0\0\0\x08\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\x04\x04\0\x04\x04\x04\x04\x04\x04\x04\0\x04\x04\0\x05\x05\x05\0\0\x05\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x1B\x06\x06\x17\x10\x10\x10\x10\0\0\0\0\0\0\0\0\0\0\0\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x08\x08\x06\x06\x06\x1B\x1B\x1B\x08\x08\x08\x10\x10\x10\x10\x10\x10\x10\x10\x06\x06\x06\x06\x06\x1B\x1B\x06\x06\x06\x06\x06\x06\x06\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x06\x06\x06\x06\x1B\x1B\x06\x06\x06\x1B\0\0\0\0\0\0\0\0\0\0\x0B\x0B\x0B\x0B\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\0\x01\x01\0\0\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\0\x02\0\x02\x02\x02\x02\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\x01\x01\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x18\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x18\x02\x02\x02\x02\x02\x18\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x18\x02\x02\x02\x02\x02\x02\x18\x02\x02\x02\x02\x02\x02\x01\x02\0\0\t\t\x06\x06\x06\x06\x06\x06\x06\x1B\x1B\x1B\x1B\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x1B\x1B\x1B\x1B\x1B\x06\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x06\x1B\x1B\x17\x17\x17\x17\x17\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\x02\x02\x02\x02\x02\x02\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x06\x06\x06\x06\x06\0\x06\x06\0\x06\x06\x06\x06\x06\0\0\0\0\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\x06\x06\x06\x06\x06\x06\x06\x04\x04\x04\x04\x04\x04\x04\0\0\t\t\t\t\t\t\t\t\t\t\0\0\0\0\x05\x1B\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\0\t\t\t\t\t\t\t\t\t\t\0\0\0\0\0\x19\x05\t\t\t\t\t\t\t\t\t\t\0\0\0\0\x17\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\0\x05\x05\0\x05\x05\x05\x05\x05\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x02\x02\x02\x02\x06\x06\x06\x06\x06\x06\x06\x04\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x1B\x0B\x0B\x0B\x19\x0B\x0B\x0B\x0B\0\0\0\0\0\0\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x1B\x0B\0\x05\x05\0\x05\0\0\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\0\x05\0\x05\0\0\0\0\x05\0\0\0\0\x05\0\x05\0\x05\0\x05\x05\x05\0\x05\x05\0\x05\0\0\x05\0\x05\0\x05\0\x05\0\x05\x05\0\x05\0\0\x05\x05\x05\x05\0\x05\x05\x05\x05\0\x05\x05\x05\x05\0\x05\0\x05\x05\x05\0\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x18\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x0B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\0\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\0\0\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\0\0\0\0\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x1B\x1B\x1B\0\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\0\0\0\0\0") }, icu::properties::props::GeneralCategory::Unassigned));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumGeneralCategoryV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumGeneralCategoryV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_GENERAL_CATEGORY_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumGeneralCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumGeneralCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumGeneralCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumGeneralCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_general_category_v1 as impl_property_enum_general_category_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_grapheme_cluster_break_v1.rs.data b/vendor/icu_properties_data/data/property_enum_grapheme_cluster_break_v1.rs.data
new file mode 100644
index 00000000..ef5291f6
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_grapheme_cluster_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumGraphemeClusterBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 7840B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_grapheme_cluster_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_GRAPHEME_CLUSTER_BREAK_V1: &'static <icu::properties::provider::PropertyEnumGraphemeClusterBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 921600u32, shifted12_high_start: 225u16, index3_null_offset: 407u16, data_null_offset: 32u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\x7F\0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xBF\0\xCF\0 \0 \0 \0 \0\x0C\x01 \0 \0 \0;\x01y\x01\xB9\x01\xEE\x01 \0\x1F\x02P\x02\x85\x02\x9F\x02\xD0\x02\x0E\x03<\x03l\x03\xA2\x03\xDF\x03\x1E\x04]\x04\x9C\x04\xDB\x04\x1A\x05\xDB\x04Z\x05\x9A\x05\xDA\x05\x18\x06V\x06\x96\x06\xD5\x06\x14\x07S\x07\x93\x07\xD2\x07\x11\x08G\x08{\x08\xB6\x08\xC5\x08\x07\x01\x02\tB\t\x82\t\x14\x06{\x06\x94\x06\xA1\x06\xBA\x06\xDA\x06\xF5\x06\r\x07,\x07\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06\x94\x06L\x07\0\0\x10\0 \x000\0@\0P\0`\0p\0\x7F\0\x8F\0\x9F\0\xAF\0 \x000\0@\0P\0 \x000\0@\0P\0 \x000\0@\0P\0 \x000\0@\0P\0 \x000\0@\0P\0\xBF\0\xCF\0\xDF\0\xEF\0\xCF\0\xDF\0\xEF\0\xFF\0 \x000\0@\0P\0 \x000\0@\0P\0\x0C\x01\x1C\x01,\x01<\x01 \x000\0@\0P\0 \x000\0@\0P\0 \x000\0@\0P\0;\x01K\x01[\x01k\x01y\x01\x89\x01\x99\x01\xA9\x01\xB9\x01\xC9\x01\xD9\x01\xE9\x01\xEE\x01\xFE\x01\x0E\x02\x1E\x02 \x000\0@\0P\0\x1F\x02/\x02?\x02O\x02P\x02`\x02p\x02\x80\x02\x85\x02\x95\x02\xA5\x02\xB5\x02\x9F\x02\xAF\x02\xBF\x02\xCF\x02\xD0\x02\xE0\x02\xF0\x02\0\x03\x0E\x03\x1E\x03.\x03>\x03<\x03L\x03\\\x03l\x03l\x03|\x03\x8C\x03\x9C\x03\xA2\x03\xB2\x03\xC2\x03\xD2\x03\xDF\x03\xEF\x03\xFF\x03\x0F\x04\x1E\x04.\x04>\x04N\x04]\x04m\x04}\x04\x8D\x04\x9C\x04\xAC\x04\xBC\x04\xCC\x04\xDB\x04\xEB\x04\xFB\x04\x0B\x05\x1A\x05*\x05:\x05J\x05\xDB\x04\xEB\x04\xFB\x04\x0B\x05Z\x05j\x05z\x05\x8A\x05\x9A\x05\xAA\x05\xBA\x05\xCA\x05\xDA\x05\xEA\x05\xFA\x05\n\x06\x18\x06(\x068\x06H\x06V\x06f\x06v\x06\x86\x06\x96\x06\xA6\x06\xB6\x06\xC6\x06\xD5\x06\xE5\x06\xF5\x06\x05\x07\x14\x07$\x074\x07D\x07S\x07c\x07s\x07\x83\x07\x93\x07\xA3\x07\xB3\x07\xC3\x07\xD2\x07\xE2\x07\xF2\x07\x02\x08\x11\x08!\x081\x08A\x08G\x08W\x08g\x08w\x08{\x08\x8B\x08\x9B\x08\xAB\x08\xB6\x08\xC6\x08\xD6\x08\xE6\x08\xC5\x08\xD5\x08\xE5\x08\xF5\x08\x07\x01\x17\x01'\x017\x01\x02\t\x12\t\"\t2\tB\tR\tb\tr\t\x82\t\x92\t\xA2\t\xB2\t\x14\x06$\x064\x06D\x06 \0 \0\xB2\0\xC2\t \0\xD1\t\xFE\0H\x02\xE1\t\x11\x02 \0 \0 \0 \0 \0 \0\xF1\t\xF1\t\xF1\t\xF1\t\xF1\t\xF1\t\x01\n\x01\n\x01\n\x01\n\t\n\x11\n\x11\n\x11\n\x11\n\x11\n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xB2\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0!\n \0S\x03 \0>\x04 \0>\x04 \0 \0 \0-\n;\n\0\x03 \0 \0K\n \0 \0 \0 \0 \0 \0 \0;\x04 \0\x15\x02 \0 \0 \0 \0 \0 \0 \0Z\nj\n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0v\n \0 \0 \0\x82\n\x90\n\x9D\n \0 \0 \0\xBF\0\xF0\0 \0 \0 \0\xDE\x03 \0 \0\xAD\n\xBB\n \0\xB4\0\xFB\0\xE0\x03 \0\xCA\n \0 \0 \0\xD8\n\xFB\0 \0 \0\xE8\n\xF4\n \0 \0 \0 \0 \0 \0 \0 \0 \0\x97\t\x04\x0B\r\x0B \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xBF\0\xBF\0\xBF\0\xBF\0\x17\x0B \0'\x0B \0 \0 \0\x0E\0 \0 \0 \0 \0 \0 \0\xBF\0\xBF\0\xFE\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xB0\0\xFD\0 \0 \0 \0 \0 \0 \0 \0\xB0\0 \0 \0 \0 \0 \0 \0\xBF\0\xBF\0 \0 \0\xB5\0 \0 \0 \0 \0 \0 \x007\x04 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xB0\x007\x0B \0\xB1\0 \0 \0 \0 \0 \0\xFD\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0E\x0B \0R\x0B \0 \0 \0 \0 \0_\x04 \0 \0_\x0Bk\x0B \0\xBF\0o\x0B \0 \0\xB7\x08 \0\xB8\0~\x0B\xF1\t\x8E\x0B\xDF\x03 \0 \0\x9B\x0B\xFE\0 \0\x19\x02 \0 \0\xAB\x0B\xBA\x0B\xC7\x0B \0 \0\x12\x02 \0 \0 \0\xD7\x0B\x7F\x01 \0\xE7\x0B\xF7\x0B \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x04\x0C \0\x14\x0C\x18\x0C%\x0C\x1C\x0C%\x0C \x0C%\x0C\x14\x0C\x18\x0C%\x0C\x1C\x0C%\x0C \x0C%\x0C\x14\x0C\x18\x0C%\x0C\x1C\x0C%\x0C \x0C%\x0C\x14\x0C\x18\x0C%\x0C\x1C\x0C%\x0C \x0C%\x0C\x14\x0C\x18\x0C%\x0C\x1C\x0C%\x0C \x0C%\x0C\x14\x0C\x18\x0C%\x0C\x1C\x0C%\x0C1\x0C\x01\nA\x0C\x11\n\x11\nL\x0C \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x10\x02 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xBF\0 \0\xBF\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0p\0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xB1\0 \0 \0 \0 \0 \0\x14\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x11\x02 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xFE\0 \0 \0 \0 \0 \0 \0 \0 \0X\x0C \0 \0 \0 \0 \0 \0 \0 \0g\x0C \0 \0w\x0C \0 \0 \0 \0 \0 \0 \0 \0 \0 \0;\x04 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0o\x0C \0 \0 \0\x87\x0C \0 \0 \0 \0 \0 \0 \0 \0 \0 \0?\x05 \0 \0 \0 \0\xB3\0 \0 \0 \0 \0\xB9\0\xFE\0 \0 \0!\n \0 \0 \0 \0 \0 \0 \0\x97\x0C \0 \0\xB7\0\xF8\0 \0 \0\xA7\x0C\xE0\x03 \0 \0\xB7\x0C\xC5\x0C \0 \0 \0\xFC\0 \0\xD3\x0C\xFA\0t\x08 \0 \0\x1B\x02\xE0\x03 \0 \0\xE3\x0C\xF3\x0C \0 \0 \0\x03\r\x12\r\x7F\x01 \0 \0 \0 \0 \0 \0 \0 \0\xB0\0\"\r \0\x93\x07 \0 \0\xC3\x072\r\x17\x02@\r\xFA\0 \0 \0 \0M\r\\\rk\r?\x04 \0 \0 \0v\r\x86\r\x10\x02 \0 \0 \0 \0 \0\x96\r\xA3\r \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xB0\0\xB3\r\xFE\0>\x05 \0 \0 \0\xC3\r\xFE\0 \0 \0 \0 \0 \0\xD3\r\xF7\0 \0 \0 \0 \0 \0\x0C\x04\xE3\r \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x03\r\xF3\r \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x03\x0E\x13\x0E \0 \0 \0 \0 \0 \0 \0 \0\"\x0E2\x0E \0A\x0E \0 \0N\x0E\x17\x02]\x0E \0 \0i\x0Es\x0E \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0w\x07\x83\x0E \0 \0 \0 \0 \0\xBD\0\x92\x0E\xA1\x0E \0 \0 \0 \0 \0 \0 \0\xB0\x0E\xBF\x0E \0 \0 \0\xC7\x0E\xD7\x0E \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x90\x07\xE7\x0E \0 \0\xF3\x0E\xFC\0\x14\x02 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x0E\0\x03\x0F\xF9\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xB1\0\n\x0F \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xFA\0 \0 \0 \0\xF8\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x1A\x0F \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xB0\0)\x0F*\x0F*\x0F2\x0F\xFC\0 \0 \0 \0 \0\x1A\x02\xFD\0 \0 \0 \0 \0 \0 \0 \0 \0 \0=\x05\x1C\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xBF\0\xBF\0\xF1\0\xBF\0\xF8\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0<\x0FI\x0FV\x0F \0b\x0F \0 \0 \0 \0 \0S\x03 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xBF\0\xBF\0\xBF\0r\x0F\xBF\0\xBF\0\xF2\0\x19\x02\x1A\x02\xB4\0\xBE\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x93\t}\x0F\x8B\x0F \0 \0 \0 \0 \0\xB0\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xF8\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x10\x02 \0 \0 \0\xB3\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xB3\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xB1\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xF8\0 \0 \0 \0 \0 \0 \0\x0B\x01 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x96\x0F\x9C\x0F \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xB4\0\x0E\0\x0E\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0y\0\x89\0\xA1\0\xC1\0\xE1\0\x01\x01!\x01A\x01a\x01\x81\x01\x97\x01\xA6\x01\xC6\x01\xE5\x01\x05\x02\x97\x01%\x02\x97\x01\x97\x01\x97\x01\x97\x01\x97\x017\x02\x97\x01W\x02\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01q\x02\x91\x02\xB0\x02\xD0\x02\xD4\x02\xD1\x02\xD5\x02\xD2\x02\xD6\x02\xD3\x02\xD0\x02\xD4\x02\xD1\x02\xD5\x02\xD2\x02\xD6\x02\xD3\x02\xDE\x02\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\xFE\x02\x97\x01\x1E\x03>\x03^\x03\x97\x01\x97\x01\x97\x01~\x03\x8D\x03\xA4\x03\xC4\x03\xE2\x03\x01\x04\x1F\x04=\x04]\x04{\x04\x95\x04\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\xB2\x04\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\xC1\x04\x97\x01\x97\x01\x97\x01\x97\x01\xD4\x04\xE8\x04\xFF\x04\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x1F\x05\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01/\x05D\x05`\x05\x97\x01\x97\x01\x97\x01\x80\x05\x97\x01\x97\x01\xA0\x05\xB6\x05\xC8\x05\x97\x01\xE7\x05\x97\x01\x97\x01\x97\x01\xFC\x05\x1C\x06\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01\x97\x01<\x06[\x06[\x06[\x06[\x06[\x06[\x06[\x06") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x05\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x03\x03\0\x03\x03\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x0B\0\x03\x03\x03\x03\x03\x03\0\0\x03\x03\0\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0B\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x03\x03\x03\0\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0B\x0B\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x0B\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\n\x03\0\n\n\x03\x03\x03\x03\x03\x03\x03\x03\n\n\n\n\x03\n\n\0\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\n\x03\x03\x03\x03\0\0\n\n\0\0\n\n\x03\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\x03\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\n\n\x03\x03\0\0\0\0\x03\x03\0\0\x03\x03\x03\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\n\x03\x03\x03\x03\x03\0\x03\x03\n\0\n\n\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\0\x03\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\x03\n\x03\x03\x03\x03\0\0\n\n\0\0\n\n\x03\0\0\0\0\0\0\0\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\n\n\0\0\0\n\n\n\0\n\n\n\x03\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\n\n\n\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\x03\n\n\n\n\0\x03\x03\x03\0\x03\x03\x03\x03\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\n\x03\n\x03\n\n\0\x03\x03\x03\0\x03\x03\x03\x03\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\x03\n\x03\x03\x03\x03\0\n\n\n\0\n\n\n\x03\x0B\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x03\n\n\x03\x03\x03\0\x03\0\n\n\n\n\n\n\n\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\n\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\n\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\0\x03\0\0\0\0\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\n\x03\x03\x03\x03\x03\0\x03\x03\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\x03\n\x03\x03\x03\x03\x03\x03\0\x03\x03\n\n\x03\x03\0\0\0\0\0\0\n\n\x03\x03\0\0\0\0\x03\x03\0\0\x03\0\n\x03\x03\0\0\0\0\0\0\x03\0\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\0\0\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\x03\x03\n\x03\x03\x03\x03\x03\x03\x03\n\n\n\n\n\n\x03\n\n\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x01\x03\x03\x03\n\n\n\n\x03\x03\n\n\n\0\0\0\0\n\n\x03\n\n\n\n\n\n\x03\x03\x03\0\0\0\0\0\0\0\x03\x03\n\n\x03\0\0\0\0\0\n\x03\n\x03\x03\x03\x03\x03\x03\x03\0\x03\0\0\x03\x03\x03\x03\x03\x03\x03\x03\n\n\n\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\x03\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\n\n\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\n\x03\x03\x03\x03\n\n\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\x03\n\x03\x03\n\n\n\x03\n\x03\0\0\0\0\n\n\n\n\n\n\n\n\x03\x03\x03\x03\n\n\x03\x03\0\0\0\0\0\0\0\0\x03\n\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\x03\0\0\n\x03\x03\0\0\0\0\0\0\0\0\0\0\0\x01\x03\x11\x01\x01\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\0\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\x03\0\0\0\x03\0\0\0\0\x03\0\0\0\0\n\n\x03\x03\n\0\0\0\0\x03\0\0\0\0\n\n\n\n\n\n\n\n\n\n\n\n\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\n\x03\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\x03\n\n\x03\x03\x03\x03\n\n\x03\x03\n\n\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\n\x03\x03\n\n\x03\x03\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\x03\n\0\0\x03\0\x03\x03\x03\0\0\x03\x03\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\n\x03\x03\n\n\0\0\0\0\0\n\x03\0\0\0\0\0\0\0\0\0\n\n\x03\n\n\x03\n\n\0\n\x03\0\0\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\0\0\0\0\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\0\0\0\0\0\0\x03\x03\x03\x03\x03\0\0\0\0\0\x03\x03\x03\0\x03\x03\0\0\0\0\0\x03\x03\x03\x03\0\0\0\0\0\0\0\0\x03\x03\x03\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\0\0\n\x03\n\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\x03\n\n\n\x03\x03\x03\x03\n\n\x03\x03\0\0\x0B\0\0\x03\0\0\0\0\0\0\0\0\0\0\x0B\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\n\x03\x03\x03\0\0\0\n\n\n\x03\x03\x03\x03\x03\x03\x03\x03\x03\n\x03\0\x0B\x0B\0\0\0\0\0\x03\x03\x03\x03\0\n\x03\0\0\0\0\0\0\0\0\0\0\0\0\n\n\n\x03\x03\n\n\x03\x03\x03\x03\0\0\0\0\0\0\x03\0\n\n\n\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\x03\n\n\n\n\0\0\n\n\0\0\n\n\x03\0\0\n\n\0\0\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\x03\n\n\x03\x03\x03\x03\x03\0\x03\0\0\x03\0\x03\x03\x03\n\0\n\n\x03\x03\x0B\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\n\n\n\x03\x03\x03\x03\x03\x03\x03\x03\n\n\x03\x03\x03\n\x03\0\0\0\0\0\0\0\0\0\x03\n\n\x03\x03\x03\x03\x03\x03\n\x03\n\n\x03\n\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\n\n\x03\x03\x03\x03\0\0\n\n\n\n\x03\x03\n\x03\n\n\n\x03\x03\x03\x03\x03\x03\x03\x03\n\n\x03\n\x03\0\0\0\0\0\0\0\0\0\0\0\x03\n\x03\n\n\0\0\x03\x03\x03\x03\n\x03\x03\x03\x03\x03\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\n\x03\x03\0\0\0\0\0\x03\n\n\n\n\n\0\n\n\0\0\x03\x03\x03\x03\x0B\n\x0B\n\x03\0\0\0\0\0\0\0\0\0\0\0\0\n\n\n\x03\x03\x03\x03\0\0\x03\x03\n\n\n\n\x03\0\0\0\n\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\x03\x03\x03\x03\x03\x03\n\x0B\x03\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\n\n\x03\x03\x03\0\0\0\0\x0B\x0B\x0B\x0B\x0B\x0B\x03\x03\x03\x03\x03\x03\x03\n\x03\x03\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\n\x03\x03\x03\x03\x03\x03\x03\x03\0\n\x03\x03\x03\x03\x03\x03\n\x03\x03\n\x03\x03\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\0\0\0\x03\0\x03\x03\0\x03\x03\x03\x03\x03\x03\x0B\x03\0\0\0\0\0\0\0\0\0\0\n\n\n\n\n\0\x03\x03\0\n\n\x03\n\x03\0\0\0\0\0\0\0\0\x03\x03\x0B\n\0\0\0\0\0\0\0\0\0\0\0\0\n\n\x03\x03\x03\x03\x03\0\0\0\n\n\x03\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\n\n\n\x03\x03\x03\0\0\0\t\0\0\0\t\t\t\t\0\0\0\0\0\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\0\0\0\x03\x03\x03\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\x03\x03\x03\0\0\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\0\0\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\x03\x03\x03\x03\x03\0\x03\x03\0\x03\x03\x03\x03\x03\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\0") }, icu::properties::props::GraphemeClusterBreak::Other));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumGraphemeClusterBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumGraphemeClusterBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_GRAPHEME_CLUSTER_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumGraphemeClusterBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumGraphemeClusterBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumGraphemeClusterBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumGraphemeClusterBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_grapheme_cluster_break_v1 as impl_property_enum_grapheme_cluster_break_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_hangul_syllable_type_v1.rs.data b/vendor/icu_properties_data/data/property_enum_hangul_syllable_type_v1.rs.data
new file mode 100644
index 00000000..79290ce3
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_hangul_syllable_type_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumHangulSyllableTypeV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 888B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_hangul_syllable_type_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_HANGUL_SYLLABLE_TYPE_V1: &'static <icu::properties::provider::PropertyEnumHangulSyllableTypeV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 55296u32, shifted12_high_start: 14u16, index3_null_offset: 2u16, data_null_offset: 0u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xDA\0\xE3\0\xEF\0\x08\x01\0\0\x10\0 \x000\0@\0P\0`\0p\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\x90\0\x90\0\x90\0\x90\0\x98\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\xB0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC0\0\xC4\0\xD1\0\xC8\0\xD1\0\xCC\0\xD1\0\xC0\0\xC4\0\xD1\0\xC8\0\xD1\0\xCC\0\xD1\0\xC0\0\xC4\0\xD1\0\xC8\0\xD1\0\xCC\0\xD1\0\xC0\0\xC4\0\xD1\0\xC8\0\xD1\0\xCC\0\xD1\0\xC0\0\xC4\0\xD1\0\xC8\0\xD1\0\xCC\0\xD1\0\xC0\0\xC4\0\xD1\0\xC8\0\xD1\0\xDD\0\x90\0\xED\0\xA0\0\xA0\0\xF8\0D\0L\0L\0L\0L\0L\0L\0L\0l\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x8C\0\x02\0\xAC\0\xB0\0\xAD\0\xB1\0\xAE\0\xB2\0\xAF\0\xAC\0\xB0\0\xAD\0\xB1\0\xAE\0\xB2\0\xAF\0\xBA\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0") }, icu::properties::props::HangulSyllableType::NotApplicable));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumHangulSyllableTypeV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumHangulSyllableTypeV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_HANGUL_SYLLABLE_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumHangulSyllableTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumHangulSyllableTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumHangulSyllableTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumHangulSyllableTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_hangul_syllable_type_v1 as impl_property_enum_hangul_syllable_type_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_indic_conjunct_break_v1.rs.data b/vendor/icu_properties_data/data/property_enum_indic_conjunct_break_v1.rs.data
new file mode 100644
index 00000000..f9268525
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_indic_conjunct_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumIndicConjunctBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 6724B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_indic_conjunct_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_INDIC_CONJUNCT_BREAK_V1: &'static <icu::properties::provider::PropertyEnumIndicConjunctBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 918016u32, shifted12_high_start: 225u16, index3_null_offset: 383u16, data_null_offset: 0u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\x90\0\0\0\0\0\0\0\0\0\xCD\0\0\0\0\0\0\0\xFC\0:\x01j\x01\x9F\x01\0\0\xD0\x01\xFF\x014\x02T\x01I\x02\x87\x02\xB5\x02\xDE\x02\x14\x03Q\x03\x90\x03\xD0\x03\x0F\x04N\x04\x8D\x04\xCC\x04\x0B\x05K\x05\x88\x05\xC6\x05\x04\x06D\x06\x83\x06\xC2\x06\x01\x07A\x07\x80\x07\xBF\x07\xF5\x07\x15\x08P\x08_\x08\xC8\0\x9C\x08\xD6\x08\x10\t\xC2\x05\xD6\x05\xEF\x05\xFC\x05\x12\x062\x06M\x06e\x06\x84\x06\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xEF\x05\xA4\x06\0\0\x10\0 \x000\0@\0P\0`\0p\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\x80\0\x90\0\xA0\0\xB0\0\x90\0\xA0\0\xB0\0\xC0\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\xCD\0\xDD\0\xED\0\xFD\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\xFC\0\x0C\x01\x1C\x01,\x01:\x01J\x01Z\x01j\x01z\x01\x8A\x01\x9A\x01\x9F\x01\xAF\x01\xBF\x01\xCF\x01\0\0\x10\0 \x000\0\xD0\x01\xE0\x01\xF0\x01\0\x02\xFF\x01\x0F\x02\x1F\x02/\x024\x02D\x02T\x02d\x02T\x01d\x01t\x01\x84\x01I\x02Y\x02i\x02y\x02\x87\x02\x97\x02\xA7\x02\xB7\x02\xB5\x02\xC5\x02\xD5\x02\xE5\x02\xDE\x02\xEE\x02\xFE\x02\x0E\x03\x14\x03$\x034\x03D\x03Q\x03a\x03q\x03\x81\x03\x90\x03\xA0\x03\xB0\x03\xC0\x03\xD0\x03\xE0\x03\xF0\x03\0\x04\x0F\x04\x1F\x04/\x04?\x04N\x04^\x04n\x04~\x04\x8D\x04\x9D\x04\xAD\x04\xBD\x04\xCC\x04\xDC\x04\xEC\x04\xFC\x04\x0B\x05\x1B\x05+\x05;\x05K\x05[\x05k\x05{\x05\x88\x05\x98\x05\xA8\x05\xB8\x05\xC6\x05\xD6\x05\xE6\x05\xF6\x05\x04\x06\x14\x06$\x064\x06D\x06T\x06d\x06t\x06\x83\x06\x93\x06\xA3\x06\xB3\x06\xC2\x06\xD2\x06\xE2\x06\xF2\x06\x01\x07\x11\x07!\x071\x07A\x07Q\x07a\x07q\x07\x80\x07\x90\x07\xA0\x07\xB0\x07\xBF\x07\xCF\x07\xDF\x07\xEF\x07\xF5\x07\x05\x08\x15\x08%\x085\x08E\x08P\x08`\x08p\x08\x80\x08_\x08o\x08\x7F\x08\x8F\x08\xC8\0\xD8\0\xE8\0\xF8\0\x9C\x08\xAC\x08\xBC\x08\xCC\x08\xD6\x08\xE6\x08\xF6\x08\x06\t\x10\t \t0\t@\t\xC2\x05\xD2\x05\xE2\x05\xF2\x05\0\0\0\0s\0P\t\0\0_\t\xBF\0\xF9\x01o\t\xC2\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0}\t\0\0\xCC\x02\0\0\xB0\x03\0\0\xB0\x03\0\0\0\0\0\0\x89\t@\x08y\x02\0\0\0\0\x97\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC8\x04\0\0\xC6\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA6\t\xB4\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC0\t\0\0\0\0\0\0\xCC\t\xDA\t\xE7\t\0\0\0\0\0\0\x80\0\xB1\0\0\0\0\0\0\0\xBC\0\0\0\0\0\xF7\t\xCC\x02\0\0u\0\xBC\0\xBE\0\0\0\x05\n\0\0\0\0\0\0\x13\n\xBC\0\0\0\0\0t\0\"\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x003\x032\n;\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\x80\0\x80\0\x80\0\xC2\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\x80\0\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\xBE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\x80\0\0\0\0\0v\0\0\0\0\0\0\0\0\0\0\0\0\0\xC4\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0K\n\0\0r\0\0\0\0\0\0\0\0\0\0\0\xBE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y\n\0\0e\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC9\x04\0\0\x80\0u\n\0\0\0\0Q\x08\0\0y\0>\x01\0\0\0\0\xBD\0\0\0\0\0\x81\n\xBF\0\0\0\xCA\x01\0\0\0\0\x8F\n\x9E\n\xAB\n\0\0\0\0\xC3\x01\0\0\0\0\0\0\xBB\n@\x01\0\0\xB1\x04\xC9\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCB\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC1\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC2\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD9\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE8\n\0\0\0\0\xF8\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC8\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF0\n\0\0\0\0\0\0\x08\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB2\x04\0\0\0\0\0\0\0\0t\0\0\0\0\0\0\0\0\0z\0\xBF\0\0\0\0\0}\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\x01\0\0\0\0x\0\xB9\0\0\0\0\0\x15\x0B\xBE\0\0\0\0\0!\x0B\xCD\x01\0\0\0\0\0\0\xBD\0\0\0,\x0B\xBB\0\0\0\0\0\0\0\xCC\x01\xBE\0\0\0\0\0n\x02;\x0B\0\0\0\0\0\0q\0F\x0B@\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0T\x08\0\0\xBE\0\0\0\0\0U\x0B\x04\x06\xC8\x01\xCA\0\xBB\0\0\0\0\0\0\0>\x08a\x0B?\x01\xB1\x03\0\0\0\0\0\0x\0m\x0B\xC1\x01\0\0\0\0\0\0\0\0\0\0}\x0BM\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\x8D\x0B\xBF\0\xB1\x04\0\0\0\0\0\0\x9D\x0B\xBF\0\0\0\0\0\0\0\0\0\0\0\xAD\x0B\xB8\0\0\0\0\0\0\0\0\0\0\0\xC4\x08\xBB\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\r\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\x0B\xCC\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \x0B\xBF\0\0\0\xCA\x0B\0\0\0\0\xD7\x0B\xC8\x01\xE6\x0B\0\0\0\0v\0\xF6\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x0C\0\0\0\0\0\0\0\0\0\0~\0\x15\x0C$\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\x003\x0CE\x05\0\0\0\0\0\0\0\0B\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCA\x04\xBE\0\0\0\0\0\xD9\n\xBD\0\xC5\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x0C\xBA\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\0Y\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBB\0\0\0\0\0\0\0\xB9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\0\0\0\0\0\0q\0\xBD\0\0\0\0\0\0\0\0\0\xCB\x01\xBE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\x80\0\xB2\0\x80\0\xB9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\x0Cv\x0C\x83\x0C\0\0\x1A\x0B\0\0\0\0\0\0\0\0\0\0\xCC\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\x80\0\x80\0\x88\x0C\x80\0\x80\0\xB3\0\xCA\x01\xCB\x01u\0\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/\x03\x93\x0C\xA1\x0C\0\0\0\0\0\0\0\0\0\0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB9\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC1\x01\0\0\0\0\0\0t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB9\0\0\0\0\0\0\0\0\0\0\0\0\0\xCC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\0\0\0\0\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\x80\0\0\0y\0\x89\0\xA1\0\xC0\0\xE0\0\0\x01 \x01>\x01^\x01i\x01\x7F\x01\x8E\x01\xAE\x01\xCD\x01\xED\x01\x7F\x01\r\x02\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x1F\x02\x7F\x01?\x02\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01Y\x02y\x02\x98\x02\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\xB7\x02\x7F\x01\xD7\x02\xF1\x02\x11\x03\x7F\x01\x7F\x01\x7F\x011\x03@\x03W\x03w\x03\x95\x03\xB4\x03\xD2\x03\xF0\x03\x10\x04-\x04G\x04\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01c\x04\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01r\x04\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x85\x04\x7F\x01\x99\x04\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\xB9\x04\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\xC9\x04\xDE\x04\xFA\x04\x7F\x01\x7F\x01\x7F\x01\x1A\x05\x7F\x01\x7F\x01:\x05P\x05b\x05\x7F\x01\x81\x05\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x96\x05\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\x7F\x01\xB6\x05") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\0\x02\x02\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\0\0\x02\x02\0\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\0\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\0\x02\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\x03\0\0\0\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\0\x02\0\x02\0\x02\x02\x02\x02\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\x01\x01\0\x01\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\x02\x02\0\0\0\0\x02\x02\0\0\x02\x02\x02\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x02\0\0\0\x02\x02\x02\x02\x02\0\x02\x02\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\x02\0\x02\x02\x02\x02\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\x02\x02\x02\0\0\0\0\x01\x01\0\x01\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x02\0\x02\x02\0\0\0\0\0\x02\x02\x02\0\x02\x02\x02\x03\0\0\0\0\0\0\0\x02\x02\0\x01\x01\x01\0\0\0\0\0\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\x02\0\x02\0\0\0\x02\x02\x02\0\x02\x02\x02\x02\0\0\0\0\0\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\0\x02\0\x02\x02\x02\x02\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\x02\0\0\x02\x02\x02\0\x02\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\x02\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\x02\0\x02\x02\x02\x02\x02\x02\0\x02\x02\0\0\x02\x02\0\0\0\0\0\0\0\0\x02\x02\0\0\0\0\x02\x02\0\0\x02\0\0\x02\x02\0\0\0\0\0\0\x02\0\0\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\0\x02\x02\x02\0\0\0\0\x02\x02\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\x02\x02\x02\0\0\0\0\0\0\0\x02\x02\0\0\x02\0\0\0\0\0\0\x02\0\x02\x02\x02\x02\x02\x02\x02\0\x02\0\0\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\x02\0\x02\x02\0\0\0\x02\0\x02\x02\x02\x02\0\0\x02\x02\0\0\0\0\0\0\0\0\x02\0\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\x02\0\0\0\x02\x02\0\0\0\0\0\0\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\0\0\0\x02\0\0\0\0\x02\0\0\0\0\0\x02\x02\0\0\0\0\0\x02\0\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\0\x02\x02\x02\x02\0\0\x02\x02\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\0\x02\x02\0\0\x02\x02\0\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\x02\0\0\0\x02\0\x02\x02\x02\0\0\x02\x02\0\0\0\0\0\x02\x02\0\0\0\0\0\x02\0\0\x02\0\0\0\0\x02\0\0\0\0\0\0\x02\x02\x02\x02\x02\0\0\0\0\0\x02\x02\x02\0\x02\x02\0\0\0\0\0\x02\x02\x02\x02\0\0\0\0\0\0\0\0\x02\x02\x02\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\0\0\x02\x02\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\0\x02\x02\x02\0\0\0\0\0\0\0\0\x02\x02\x02\x02\0\0\x02\x02\x02\x02\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\x02\x02\0\x02\0\0\x02\0\x02\x02\x02\0\0\0\0\x02\x02\x02\0\x02\0\0\0\0\0\0\0\0\0\x02\0\0\x02\x02\x02\x02\x02\x02\0\x02\0\0\x02\0\x02\0\0\x02\x02\x02\x02\0\0\0\0\0\0\x02\x02\0\x02\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\0\x02\0\0\0\0\0\0\0\0\0\0\0\x02\0\x02\0\0\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\0\x02\x02\0\x02\x02\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\0\0\0\x02\0\x02\x02\0\x02\x02\0\0\0\x02\0\x02\0\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\x02\x02\x02\0\0\0\0\0\x02\x02\x02\x02\x02\0\0\0\x02\x02\x02\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\0\x02\x02\0\x02\x02\x02\x02\x02\0\0\0\0\0\0") }, icu::properties::props::IndicConjunctBreak::None));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumIndicConjunctBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumIndicConjunctBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_INDIC_CONJUNCT_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumIndicConjunctBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_indic_conjunct_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumIndicConjunctBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_indic_conjunct_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumIndicConjunctBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumIndicConjunctBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_indic_conjunct_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumIndicConjunctBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumIndicConjunctBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumIndicConjunctBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_indic_conjunct_break_v1 as impl_property_enum_indic_conjunct_break_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_indic_syllabic_category_v1.rs.data b/vendor/icu_properties_data/data/property_enum_indic_syllabic_category_v1.rs.data
new file mode 100644
index 00000000..bf16a6a6
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_indic_syllabic_category_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumIndicSyllabicCategoryV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 6248B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_indic_syllabic_category_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_INDIC_SYLLABIC_CATEGORY_V1: &'static <icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 93696u32, shifted12_high_start: 23u16, index3_null_offset: 4u16, data_null_offset: 64u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0`\0\x94\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xD4\0\x12\x01R\x01\x90\x01\xCF\x01\r\x02L\x02\x8A\x02\xCA\x02\x08\x03F\x03\x84\x03\xC4\x03\x02\x04B\x04\x80\x04\xC0\x04\xFE\x04>\x05~\x05\xBD\x05\xFD\x05<\x06|\x06\x9C\x06\xDC\x06\x1C\x07Y\x07*\x03=\x03I\x03=\x03d\x03t\x03\0\0\x10\0 \x000\0@\0P\0`\0p\0`\0p\0\x80\0\x90\0\x94\0\xA4\0\xB4\0\xC4\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0@\0P\0`\0p\0\xD4\0\xE4\0\xF4\0\x04\x01\x12\x01\"\x012\x01B\x01R\x01b\x01r\x01\x82\x01\x90\x01\xA0\x01\xB0\x01\xC0\x01\xCF\x01\xDF\x01\xEF\x01\xFF\x01\r\x02\x1D\x02-\x02=\x02L\x02\\\x02l\x02|\x02\x8A\x02\x9A\x02\xAA\x02\xBA\x02\xCA\x02\xDA\x02\xEA\x02\xFA\x02\x08\x03\x18\x03(\x038\x03F\x03V\x03f\x03v\x03\x84\x03\x94\x03\xA4\x03\xB4\x03\xC4\x03\xD4\x03\xE4\x03\xF4\x03\x02\x04\x12\x04\"\x042\x04B\x04R\x04b\x04r\x04\x80\x04\x90\x04\xA0\x04\xB0\x04\xC0\x04\xD0\x04\xE0\x04\xF0\x04\xFE\x04\x0E\x05\x1E\x05.\x05>\x05N\x05^\x05n\x05~\x05\x8E\x05\x9E\x05\xAE\x05\xBD\x05\xCD\x05\xDD\x05\xED\x05\xFD\x05\r\x06\x1D\x06-\x06<\x06L\x06\\\x06l\x06|\x06\x8C\x06\x9C\x06\xAC\x06\x9C\x06\xAC\x06\xBC\x06\xCC\x06\xDC\x06\xEC\x06\xFC\x06\x0C\x07\x1C\x07,\x07<\x07L\x07Y\x07i\x07y\x07\x89\x07\xE9\0\xE9\0\x99\x07\xA4\x07\xB4\x07\xC4\x07\xD3\x07\xE2\x07\xF0\x07\0\x08@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xE6\0\x10\x08\xE6\0\x1F\x08\xE6\0/\x08?\x08N\x08\xE9\0\xE9\0^\x08j\x08t\x08\x83\x080\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x93\x08l\x01\xA3\x08\xB3\x08-\x02\xE9\0\xC3\x08\xD3\x08\xE9\0\xE9\0t\x03\xE3\x08\xF2\x08\x02\t@\0@\0\xE9\0\x12\t\xE9\0\xE9\0\"\t/\t?\tK\t0\x000\0@\0@\0@\0@\0@\0@\0[\t\xE6\0\xE9\0k\tw\t0\0@\0@\0\x87\t\xE9\0\x96\t\xA6\t\xE9\0\xE9\0\xB6\t\xC6\t\xE9\0\xE9\0\xD6\t\xE3\t\xF3\t@\0@\0@\0@\0@\0@\0@\0@\0\x03\n\x11\n\x1F\n@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0*\n6\nF\n@\0@\0@\0@\0@\0[\x07T\n@\0@\0@\0@\0@\0@\0d\n@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0t\0@\0@\0@\0t\n\xE9\0\x81\n@\0\xE9\0\x91\n\x9F\n\xAE\n\xD6\0\xE7\0\xE9\0\xBE\n\xCA\n0\0\xDA\n\xE8\n\xF8\n\xE9\0\x06\x0B\xE9\0\x16\x0B%\x0B@\0@\x005\x0B\xE9\0\xE9\0D\x0B\x97\x020\0T\x0Bd\x0B\xE3\0\xE9\0\x9A\x08t\x0B\x84\x0B0\0\xE9\0\x93\x0B\xE9\0\xE9\0\xE9\0\xA3\x0B\xB3\x0B@\0\xC3\x0B\xD3\x0B@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xE3\x0B\xF3\x0B\0\x0C0\0\x10\x0C \x0C\xE9\0*\x0C1\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0:\x0C\xE6\0\xE9\0\x9B\x08J\x0CX\x0Cb\x0Cr\x0C\x82\x0C\xE9\0\xE9\0\x92\x0C\x99\x03@\0@\0@\0\xA2\x0C\xE9\0\x9C\x08\xB2\x0C\xC2\x0C\xD2\x0C\xE9\0\xDF\x0C\xD5\0\xE8\0\xE9\0\xEF\x0C\xFF\x0C0\0\xBB\x065\0\xE1\0\xEB\x03\x97\x08\x0F\r\x1F\r@\0@\0@\0/\rm\x01>\r\xDF\0\xE9\0N\r^\r0\0n\rb\x01r\x01~\r\x08\x03\x8E\r\x9E\r\x0E\n\xAE\r\xE7\0\xE9\0\xBE\r\xCD\r\xDD\r\xEC\r@\0\xDB\0\xE9\0\xE9\0\xFC\r\n\x0E\x1A\x0E*\x0E@\09\x0E\xE9\0\xE9\0@\tI\x0E0\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xDB\0\xE9\0\xFF\0Y\x0Ei\x0Eq\x0E@\0@\0\xDB\0\xE9\0\xE9\0\x81\x0E\x91\x0E0\0@\0@\0\xDF\0\xE9\0\xA1\x0E\xAE\x0E0\0\xBC\x066\0@\0\xE9\0\xBE\x0E\xCE\x0E\xDE\x0E\xEE\x0E@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xDF\0\xE9\0\x97\x08\xFE\x0E@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\x0E\x0F\x1A\x0F\xE9\0*\x0F:\x0F0\0@\0@\0@\0@\0J\x0F\xE9\0\xE9\0Y\x0Fi\x0F@\0y\x0F\xE9\0\xE9\0\x86\x0F\x96\x0F\xA6\x0F\xE9\0\xE9\0\xB2\x0F\xBC\x0F@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xCC\x0F\xE9\0\xFF\0\xDC\x0F\xEC\x0F\xBC\x06\xFC\x0FV\x05\xE9\0\n\x10,\x07\x1A\x10@\0@\0@\0@\0*\x10\xE9\0\xE9\09\x10I\x100\0Y\x10\xE9\0e\x10r\x100\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xE9\0\x82\x10\x92\x10\xA1\x10\xE9\0\xAD\x10\xBC\x10\xCC\x10@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xE8\0\0\x01\xDC\x100\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0\xEC\x10\xE9\0\xF9\x100\0@\0@\0@\0@\0@\0@\0@\0@\0F\0V\0V\0V\0f\0\x86\0\xA6\0\xC6\0\xE6\0\x04\0\x04\0\xF6\0\x15\x015\x01U\x01\x04\0u\x01\x04\0\x85\x01\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\xA5\x01\xC5\x01\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\xE5\x01\x04\0\x04\0\x05\x02%\x02E\x02e\x02\x85\x02\xA5\x02\xC5\x02\xE0\x02\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\xF6\x02\x04\0\x04\0\x04\0\x04\0\x04\0\n\x03") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1C\x1C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02 #################\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\"\"\x17\x01\"\"\"\"\"\"\"\"\"\"\"\"\"\x1F\"\"\0\x04\x04\0\0\"\"\"\x05\x05\x05\x05\x05\x05\x05\x05##\"\"\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0######\x05\x05\x05\x05\x05\x05\x05\x05\x0C\x02\x02 \0########\0\0##\0\0##\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\0\0\0\x05\x05\x05\x05\0\0\x17\x01\"\"\"\"\"\0\0\"\"\0\0\"\"\x1F\x06\0\0\0\0\0\0\0\0\"\0\0\0\0\x05\x05\0\x05##\"\"\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x05\x05\0\0\0\0\0\0\0\0\0\0\x02\0\x1C\0\x02\x02 \0######\0\0\0\0##\0\0##\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x05\0\x05\x05\0\0\x17\0\"\"\"\0\0\0\0\"\"\0\0\"\"\x1F\0\0\0\x04\0\0\0\0\0\0\0\x05\x05\x05\x05\0\x05\0\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x02\x12\x0C\x0C\0\x0B\0\0\0\0\0\0\0\0\0\0\x02\x02 \0#########\0###\0##\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x05\x05\x05\x05\0\0\x17\x01\"\"\"\"\"\"\0\"\"\"\0\"\"\x1F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0##\"\"\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\0\0\0\0\0\x05\x04\x12\x04\x17\x17\x17\0\x02\x02 \0########\0\0##\0\0##\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x05\x05\x05\x05\0\0\x17\x01\"\"\"\"\"\0\0\"\"\0\0\"\"\x1F\0\0\0\0\0\0\0\"\"\"\0\0\0\0\x05\x05\0\x05##\"\"\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x15\0######\0\0\0###\0###\x05\0\0\0\x05\x05\0\x05\0\x05\x05\0\0\0\x05\x05\0\0\0\x05\x05\x05\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\"\"\"\0\0\0\"\"\"\0\"\"\"\x1F\0\0\0\0\0\0\0\0\0\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02 \x02########\0###\0###\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x17\x01\"\"\"\"\"\0\"\"\"\0\"\"\"\x1F\0\0\0\0\0\0\0\"\"\0\x05\x05\x05\0\0\x06\0\0##\"\"\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02 \0########\0###\0###\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\0\0\x17\x01\"\"\"\"\"\0\"\"\"\0\"\"\"\x1F\0\0\0\0\0\0\0\"\"\0\0\0\0\0\0\x06\x05\0##\"\"\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\x11\x11\x02\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02 \x02########\0###\0###\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x1A\x1A\x01\"\"\"\"\"\0\"\"\"\0\"\"\"\x1F\r\0\0\0\0\0\x06\x06\x06\"\0\0\0\0\0\0\0###\"\"\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\0\x02\x02 \0##################\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\0\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\x1F\0\0\0\0\"\"\"\"\"\"\0\"\0\"\"\"\"\"\"\"\"\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\"\"\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\"\"\"\"\"\"\"\"\"\"\x1A\0\0\0\0\0\"\"\"\"\"\"\0\"\x1E\x1E\x1E\x1E\n\x02\x1A\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\x05\0\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\0\"\"\"\"\"\"\"\"\"\"\x1A\"\x0B\x0B\0\0\"\"\"\"\"\0\0\0\x1E\x1E\x1E\x1E\0\x02\x1C\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\x1C\0\x1C\0\x17\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\"\"\"\"\"\"\"\"\"\"\"\"\"\x02 \"\"\x02\x02\x1A\x01\0\0\x08\x08\x08\x08\x08\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\0\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\0\0\0\0\0\0\x1C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05##########\"\"\"\"\"\"\x02\x1E \x13\x1A\x0B\x0B\x0B\x0B\x05\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\x0C\0\0\x0C\0\x05\x05####\"\"\"\"\x05\x05\x05\x05\x0B\x0B\x05\"\x1E\x1E\x05\x05\"\"\x1E\x1E\x1E\x1E\x1E\x05\x05\"\"\"\"\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x0B\"\"\"\"\x1E\x1E\x1E\x1E\x1E\x1E\x1E\x05\x1E\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x1E\x1E\"\"\0\0\x05\x05\"\"\x1A\x1A\0\0\0\0\0\0\0\0\0\x05\x05\"\"\x1A\0\0\0\0\0\0\0\0\0\0\0\x05\x05\"\"\0\0\0\0\0\0\0\0\0\0\0\0###\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\"\"\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05#############\0\0\"\"\"\"\"\"\"\"\"\"\x02 \"\x1B\x1B\x1C\x10\n\x1C\x1C\x1A\x13\x1C\0\0\0\0\0\0\0\0\x01\x1C\0\0\x0C\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\"\"\"\"\"\"\"\"\"\x0F\x0F\x0F\0\0\0\0\x07\x07\x02\x07\x07\x07\x07\x07\x07\x07\"\x1C\0\0\0\0\x05\x05\x05!!!!!!!!!!!\0\0\x1D\x1D\x1D\x1D\x1D\0\0\0\0\0\0\0\0\0\0\0\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\x07\x07\x07\x07\x07\x07\x07\x1E\x1E\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\"\"\"\"\"\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05###\x05\x05\x0B\x0B\x0F\x07\x07\t\x0F\x0F\x0F\x0F\0\x13\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\x02\x1E\x1E\x1E\x1E\x1E\x1A\x1C\x1C\0\0\x1C\x02\x02\x02\x07 ###########\x05\x05\x05\x05\x17\"\"\"\"\"\"\"\"\"\"\"\x1F\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\x02\x07 #######\x05\x05\x05\x05\x05\x05\x0F\x0F\x0F\"\"\"\"\"\"\x1A\x13\x0F\x0F\x05\x05\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x01\x05\x05\x05\x07\x07\x05\x05\x05\x05##\x17\"\"\"\"\"\"\"\"\"\x07\x07$$\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x0F\x0F\"\"\"\"\"\"\"\x07\x07\x07\x07\x02\x02\x1C\x17\0\0\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\x05\x05\x05\x04\x04\x04\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x04\x11\x11\x04\x04\x04\x0C\0\0\0\0\0\0\0\0\0\0\0\x1C\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\0\0\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\0\0\0\0\x1C\x1C\x1C\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0##\"###\x1F\x05\x05\x05\x05\x02\x05\x05\x05\x05\"\"\"\"\"\0\0\0\0\x1A\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05!!\x05\x05\x05\x05!\x0F\x0F\x05\x05\x05\x05\x05\x05\x05\x0F\x05\x02\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x0B\"\"\"\"\"\"\"\"\"\"\"\x1F\x02\0\0\0\0\0\0\0\0\0\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x02\x02\0\0\0\0\0\0\0\0\0\0#\"\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x05\x05\x05\x05\x05\x05!!!!!!!!!\x1E\x1E\x1E\0\0\x05\x05\x05\x05\x05\x05\x05\"\"\"\"\"\"\"\"\x07\x07\x07\x1A\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x07 #####\x05\x05\x05###\x05\x05\x05\x17\"\"\"\"\"\"\"\"\"\x0B\x0B\x0B\x05\x05\x05\x05\x05\"\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x05\x05\x05\x05\x05\0\"\"\"\x0B\x0B\x0B\x0B\0\0\0\0\0\0\0\0\0\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\0\0\x05\x05\x05\x0C\x0C\x0C\0\0\0\x05\x1E\x1E\x1E\x05\x05\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\x1E\x1D\x1E\x1D\0\0\0\0\0\0\0\0\0\0\0\0\0##\x05\x05\x05\x05\x05\x05\x05\x05\x05\"\"\"\"\"\0\0\0\0\0 \x13\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05##\x05#\x05\x05\x05\x05\x05\x05\x05\x05\x05\x07\x07\x07\x07\x07\"\"\"\"\"\"\"\"\0\x1E\x1A\0\0\x05\"\"\"\0\"\"\0\0\0\0\0\"\"\x02 \x05\x05\x05\x05\0\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\0\x17\x17\x17\0\0\0\0\x13\x02\x02 \x11\x11###########\"\"\"\"\"\"\x1F\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x1A##\"\"\x05\0\0\0\0\0\0\0\0\0\x19\x02\x02 ##########\x05\x05\x05\"\"\"\"\"\"\"\"\"\x1F\x17\0\0\0\0\0\x02\x02 ####\x05\x05\x05\x05\x05\x05\x05\x05\x05\"\"\"\x13\x1A\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\x05\"\"\x05\0\0\0\0\0\0\0\0!!!!!\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x17\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\"\"\"\"\"\"\"\"\"\"\"\"\"\x1F\x01\x0E\x0E\0\0\0\0\0\x1C\x17\"\"\0\"\x02\"\"\"\"\x02\x1F\x17\x12\0\0\0\0\0\0\x04\x05#\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0####\x05\x05\x05\0\x05\0\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x02\"\"\"\"\"\"\"\"\"\x17\x1A\0\0\0\0\0\x02\x02\x02 \0########\0\0#\x05\0\x05\x05\0\x05\x05\x05\x05\x05\0\x17\x17\x01\"\"\0\0\0\0\0\0\0\"\0\0\0\0\0\0\x02\x02##\"\"\0\0\x04\x04\x04\x04\x04\x04\x04\0\0\0##########\0#\0\0#\0\x05\x05\x05\x05\x05\x05\0\x01\"\"\"\"\"\"\"\"\0\"\0\0\"\0\"\"\"\x02\0\x02 \x1A\x1A\x13\r\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\"\"\"\"\"\"\"\"\"\"\"\x1F\x02\x02 \x17\x01\0\0\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\x1C\x02\x11\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0##############\x05\x02 \x1F\x17\x01\0\0\0\0\0\0\0\0\0\0\0\"\"\"\"\"\"\0\0\"\"\"\"\x02\x02 \x1F\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0####\"\"\0\0\"\"\"\"\"\"\"\"\"\"\"\"\"\x02 \x1F\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x02 \"\"\"\"\"\"\x1F\x17\x05\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x0B\x0B\x0B\"\"\"\"\"\"\"\"\"\"\"\x1A\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\"\"\"\"\"\"\"\x02 \x1F\x17\0\0\0\0\0#######\0\0#\0\0\x05\x05\x05\x05\0\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\"\"\"\"\"\"\0\"\"\0\0\x02\x02\x1A\x13\x0E\x0B\r\x0B\x17\0\0\0\0\0\0\0\0\0\0\0\0########\0\0####\x05\x05\"\"\"\"\"\"\"\0\0\"\"\"\"\x02 \x1F\x01\0\0\"\0\0\0\0\0\0\0\0\0\0\0#\"\"\"\"\"\"\"\"\"\"\x05\x05\x05\x05\x05\x1C\x1A\x02\x02\x02\x02 \x0E\x0B\x0B\x0B\x0B\x0C\0\0\0\0\0\x0C\0\x13\0\0\0\0\0\0\0\0#\"\"\"\"\"\"\"\"\"\"\"\x05\x05\x05\x05\x0E\x0E\x0E\x0E\x0E\x0E\x07\x07\x07\x07\x07\x07\x02 \x12\x13\0\0\0\x01\0\0#########\0####\x05\x05\"\"\"\"\"\"\"\0\"\"\"\"\x02\x02 \x1F\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\"\"\"\"\"\x02\x02\0\0\0\0\0\0\0\0\0#######\0##\0#\x05\x05\x05\x05\"\"\"\"\"\"\0\0\0\"\0\"\"\0\"\x02 \x17\"\x1A\x13\r\x0B\0\0\0\0\0\0\0\0######\0##\0##\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\"\"\"\"\"\0\"\"\x02 \x13\0\0\0\0\0\0\0\0\x05\x05\x0C\"\"\"\"\0\0\0\0\0\0\0\0\0\x02\x02\r ############\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\"\"\"\"\"\"\"\0\0\0\"\"\x1A\x13\0\0\0\0\0\0\0\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x17\0\0\0\0\0\"\"\"\"\"\"\"\"\"\"\x0B\x0B\x0B\x02\x0B\x1A\x02\x02 \x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\"\"\"\"\"\"\"\"\x1A\x1A\0\0\0\0") }, icu::properties::props::IndicSyllabicCategory::Other));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_INDIC_SYLLABIC_CATEGORY_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumIndicSyllabicCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_indic_syllabic_category_v1 as impl_property_enum_indic_syllabic_category_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_joining_type_v1.rs.data b/vendor/icu_properties_data/data/property_enum_joining_type_v1.rs.data
new file mode 100644
index 00000000..82e7865d
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_joining_type_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumJoiningTypeV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 7072B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_joining_type_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_JOINING_TYPE_V1: &'static <icu::properties::provider::PropertyEnumJoiningTypeV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 918016u32, shifted12_high_start: 225u16, index3_null_offset: 385u16, data_null_offset: 0u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0S\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\0\xA3\0\0\0\0\0\0\0\0\0\xE0\0\0\0\0\0\0\0\x0F\x01M\x01}\x01\xBD\x01\xF5\x015\x02u\x02\xAA\x02\xEA\x02 \x03^\x03\x9E\x03\xDB\x03\x15\x04R\x04\x91\x04\xD0\x04\x0F\x05N\x05\x8D\x05N\x05\xCC\x05\x0C\x06J\x06\x88\x06\xC8\x06\x08\x07G\x07\x0C\x06\x81\x07\xA3\x07\xE2\x07!\x08W\x08n\x08\xA9\x08\xB8\x08\xDB\0\xF5\x08/\ti\t\xCB\x04\xD5\x05\xEE\x05\xFB\x05\x11\x061\x06L\x06d\x06\x83\x06\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xEE\x05\xA3\x06\0\0\x10\0 \x000\0@\0P\0`\0p\0S\0c\0s\0\x83\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\x93\0\xA3\0\xB3\0\xC3\0\xA3\0\xB3\0\xC3\0\xD3\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\xE0\0\xF0\0\0\x01\x10\x01\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\x0F\x01\x1F\x01/\x01?\x01M\x01]\x01m\x01}\x01\x8D\x01\x9D\x01\xAD\x01\xBD\x01\xCD\x01\xDD\x01\xED\x01\xF5\x01\x05\x02\x15\x02%\x025\x02E\x02U\x02e\x02u\x02\x85\x02\x95\x02\xA5\x02\xAA\x02\xBA\x02\xCA\x02\xDA\x02\xEA\x02\xFA\x02\n\x03\x1A\x03 \x030\x03@\x03P\x03^\x03n\x03~\x03\x8E\x03\x9E\x03\xAE\x03\xBE\x03\xCE\x03\xDB\x03\xEB\x03\xFB\x03\x0B\x04\x15\x04%\x045\x04E\x04R\x04b\x04r\x04\x82\x04\x91\x04\xA1\x04\xB1\x04\xC1\x04\xD0\x04\xE0\x04\xF0\x04\0\x05\x0F\x05\x1F\x05/\x05?\x05N\x05^\x05n\x05~\x05\x8D\x05\x9D\x05\xAD\x05\xBD\x05N\x05^\x05n\x05~\x05\xCC\x05\xDC\x05\xEC\x05\xFC\x05\x0C\x06\x1C\x06,\x06<\x06J\x06Z\x06j\x06z\x06\x88\x06\x98\x06\xA8\x06\xB8\x06\xC8\x06\xD8\x06\xE8\x06\xF8\x06\x08\x07\x18\x07(\x078\x07G\x07W\x07g\x07w\x07\x0C\x06\x1C\x06,\x06<\x06\x81\x07\x91\x07\xA1\x07\xB1\x07\xA3\x07\xB3\x07\xC3\x07\xD3\x07\xE2\x07\xF2\x07\x02\x08\x12\x08!\x081\x08A\x08Q\x08W\x08g\x08w\x08\x87\x08n\x08~\x08\x8E\x08\x9E\x08\xA9\x08\xB9\x08\xC9\x08\xD9\x08\xB8\x08\xC8\x08\xD8\x08\xE8\x08\xDB\0\xEB\0\xFB\0\x0B\x01\xF5\x08\x05\t\x15\t%\t/\t?\tO\t_\ti\ty\t\x89\t\x99\t\xCB\x04\xDB\x04\xEB\x04\xFB\x04\0\0\0\0\x86\0\xA9\t\0\0\xB8\t\x80\0\xC5\t\xD3\ts\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE1\t\0\0\xB1\x04\0\0\xB1\x04\0\0\xB1\x04\0\0\0\0\0\0\xED\t\x99\x08\xF7\t\0\0\0\0\x05\n\0\0\x0F\x02\x0F\x02\x0F\x02\x0F\x02\x0F\x02\x15\n \n\x0F\x02'\n\0\0\0\0\0\0\0\0\0\0\0\0\0\x007\nE\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Q\n\0\0\0\0\0\0]\nk\nx\n\0\0\0\0\0\0\x93\0\xC4\0\0\0\0\0\0\0\xCF\0\0\0\0\0\x88\n~\0\0\0\x88\0\xCF\0\xD1\0\0\0\x96\n\0\0\0\0\0\0\xA4\n\xD1\0\0\0\0\0\x87\0\xB3\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x004\x04\xC3\n\xCC\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\0\x93\0\x93\0\x93\0\xD6\n\0\0\xC3\x05\0\0\0\0\0\0\xE4\n\0\0\0\0\0\0\0\0\0\0\0\0\x93\0\x93\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\xD1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\0\x93\0\0\0\0\0\xF4\n\0\0\0\0\0\0\0\0\0\0\0\0\xAA\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\x04\x0B\0\0\x85\0\0\0\0\0\0\0\0\0\0\0\xD1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x12\x0B\0\0\x1E\x0B\0\0\x0F\x02\x0F\x02\x0F\x02.\x0B\0\0\0\0\0\0\0\0\xAF\x04\0\0\x93\0>\x0B\0\0\0\0\xAA\x08\0\0\x8C\0\xD1\0\0\0\0\0\xD0\0\0\0\0\0J\x0B\0\0\0\0{\0\0\0\0\0\xFD\x05U\x0Bb\x0B\0\0\0\0t\0\0\0\0\0\0\0r\x0B\x7F\0\0\0%\x05z\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\0\0\0\x93\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9C\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xAB\x0B\0\0\0\0\xBB\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCB\x0B\xD9\x0B\xE8\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xF6\x0B\x06\x0C\r\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1D\x0C\x0F\x02+\x0C\0\0\0\0\0\x003\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\x05\0\0A\x0C\0\0\0\0\x87\0\0\0\0\0\0\0Q\x0C\x19\x04a\x0C\0\0q\x0C\x7F\x0C\0\0\0\0\x8F\x0C\x9F\x0C\0\0\0\0\0\0\x7F\0\0\0\0\0\x8B\0\xCC\0\0\0\0\0\xAF\x0C\xD1\0\0\0\0\0\xBB\x0C~\0\0\0\0\0\0\0\xD0\0\0\0\xC6\x0C\xCE\0\0\0\0\0\0\0}\0\xD1\0\0\0\0\0\xD6\x0C\xF5\n\0\0\0\0\0\0q\0\xE3\x0C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\xAD\x08\0\0\xD1\0\0\0\0\0&\x05\x80\0\0\0\xDD\0\xCE\0\0\0\0\0\0\0\x88\0?\x0BR\x01\xB2\x04\0\0\0\0\0\0\x8B\0g\x08r\0\0\0\0\0\0\0\0\0\0\0\xF2\x0CM\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFF\x0C\x80\0%\x05\0\0\0\0\0\0\x0F\r\x80\0\0\0\0\0\0\0\0\0\0\0\x81\x04\x06\x06\0\0\0\0\0\0\0\0\0\0\x7F\x04\x1F\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0f\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0+\r}\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBA\x0C\x80\0\0\0:\r\0\0\0\0G\ry\0V\r\0\0\0\0\x89\0f\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v\r\0\0\0\0\0\0\0\0\0\0\x91\0\x85\r\x94\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA3\r\x06\x06\0\0\0\0\0\0\0\0\xB2\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB0\x04\xD1\0\0\0\0\0\x9C\x0BR\x01v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\0\xD5\x0C\xCD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\0\xC2\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCE\0\0\0\0\0\0\0\xCC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\0\0\0\0\0\0\0q\0\xD0\0\0\0\0\0\0\0\0\0|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$\x05\xCF\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\0\x93\0\xC5\0\x93\0\xCC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x92\x0B\x90\0\xCF\r\0\0\xF4\n\0\0\0\0\0\0\0\0\0\0\xE1\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\0\x93\0\x93\0\xD4\r\x93\0\x93\0\xC6\0{\0|\0\x88\0\x92\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x04\xDF\r\xED\r\0\0\0\0\0\0\0\0\0\0q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCC\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\0\0\0\0\0\0\0\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x87\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xCC\0\0\0\0\0\x0F\x02\x0F\x02\x0F\x02\x0F\x02\xFD\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\0\0\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\x93\0\0\0y\0\x89\0\xA1\0\xC0\0\xE0\0\0\x01 \x01@\x01`\x01k\x01\x81\x01\x90\x01\xB0\x01\xCF\x01\xEF\x01\x81\x01\x0F\x02\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01!\x02\x81\x01A\x02\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01[\x02{\x02\x9A\x02\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\xB9\x02\x81\x01\xD9\x02\xF9\x02\x19\x03\x81\x01\x81\x01\x81\x019\x03T\x03k\x03\x8B\x03\xA9\x03\xC8\x03\xE6\x03\x04\x04$\x04A\x04[\x04\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01x\x04\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x87\x04\x81\x01\x81\x01\x81\x01\x81\x01\x9A\x04\x81\x01\xAE\x04\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\xCD\x04\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\xDD\x04\xF2\x04\x0E\x05\x81\x01\x81\x01\x81\x01.\x05\x81\x01\x81\x01N\x05d\x05v\x05\x81\x01\x95\x05\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\xB5\x05") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x05\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\0\0\0\x02\0\x04\x04\x04\x04\x02\x04\x02\x04\x02\x02\x02\x02\x02\x04\x04\x04\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x02\x02\x02\x02\x02\x02\x04\x02\x02\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x05\x04\x04\x04\0\x04\x04\x04\x02\x02\x02\x02\x02\x02\x02\x02\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x02\x02\x04\x04\x04\x04\x04\x04\x04\x04\x04\x02\x04\x02\x04\x02\x02\x04\x04\0\x04\x05\x05\x05\x05\x05\x05\x05\0\0\x05\x05\x05\x05\x05\x05\0\0\x05\x05\0\x05\x05\x05\x05\x04\x04\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x04\x05\x02\x02\x02\x04\x04\x04\x04\x04\x02\x02\x02\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x02\x04\x02\x04\x02\x02\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x04\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x04\x02\x02\x02\x02\x04\x02\x04\x04\x02\x02\x02\x04\x04\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\x01\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\0\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x02\x02\x02\x02\x02\x04\x04\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x02\x04\x04\x04\x05\x05\x05\0\0\0\0\x02\0\x02\x02\x02\x02\0\x04\x02\x04\x04\0\0\0\0\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x01\x01\x01\x02\0\0\x02\x02\x02\x02\x02\x04\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x04\x04\0\x04\x02\x02\x04\x04\x02\x02\x02\x02\x02\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x05\0\0\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\x05\x05\x05\x05\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\x05\x05\0\0\0\0\x05\x05\0\0\x05\x05\x05\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\0\x05\x05\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\x05\x05\x05\x05\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\x05\0\0\0\0\0\x05\x05\x05\0\x05\x05\x05\x05\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\x05\x05\x05\x05\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\x05\x05\x05\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\x05\0\x05\x05\x05\x05\x05\x05\0\x05\x05\0\0\x05\x05\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\x05\x05\0\0\0\0\0\0\x05\0\0\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\x02\0\0\x01\x05\x05\x05\0\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\x05\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x02\0\0\0\0\0\x05\x05\x05\0\0\0\0\x05\x05\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\x05\x05\x05\0\0\0\0\0\0\0\x05\x05\0\0\x05\0\0\0\0\0\0\x05\0\x05\x05\x05\x05\x05\x05\x05\0\x05\0\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\0\0\0\0\x05\0\x05\x05\x05\x05\x05\0\x05\0\0\0\x05\x05\x05\x05\0\0\x05\x05\0\x05\x05\x05\0\0\0\0\0\0\x05\0\x05\x05\0\0\0\x05\0\x05\x05\x05\x05\0\0\x05\x05\0\0\0\0\0\0\0\0\x05\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x05\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\x05\0\x01\x05\x05\x05\x05\x05\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\0\0\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\0\0\0\x05\0\0\0\0\x05\0\0\0\0\0\x05\x05\0\0\0\0\0\x05\0\0\0\x02\x02\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\x05\x05\x05\x05\0\0\x05\x05\0\0\x05\x05\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\x05\0\0\0\x05\0\x05\x05\x05\0\0\x05\x05\0\0\0\0\0\x05\x05\0\0\0\0\0\x05\0\0\x05\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\x05\x05\x05\0\0\0\0\0\0\x05\x05\x05\x05\x05\0\0\0\0\0\x05\x05\x05\0\x05\x05\0\0\0\0\0\x05\x05\x05\x05\0\0\0\0\0\0\0\0\x05\x05\x05\0\0\0\0\x05\x02\x02\x02\x02\x02\x04\0\x04\0\x04\x04\0\0\x03\x04\x04\x04\x02\x02\x02\x02\x03\x02\x02\x02\x02\x02\x04\x02\x02\x04\0\0\x04\x05\x05\0\0\0\0\x02\x02\x02\x02\x04\x02\x04\x04\x04\x02\x02\x02\x04\x02\x02\x04\x02\x04\x04\x02\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\x04\x04\x02\x02\0\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x02\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\0\0\x04\x02\x02\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x02\x02\x02\x04\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x04\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\x02\0\x02\x02\x04\x04\x04\0\x02\x04\x04\x02\x02\x04\x02\x02\0\x02\x04\x04\x02\0\0\0\0\x04\x02\x03\0\0\0\0\x05\0\0\x05\x05\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\0\0\x05\x05\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\0\x05\x05\x05\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\0\x05\x05\0\0\0\0\0\0\x05\0\0\0\x05\x05\x05\x05\x05\x05\0\x05\0\0\0\0\x05\x05\x05\x05\0\0\0\0\0\0\x05\x05\0\x05\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\0\x05\0\0\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\x05\x05\0\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\0\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\0\0\x05\x05\x05\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\0\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x05\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\0\0\x05\0\x05\x05\0\x05\x05\0\0\0\x05\0\x05\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\x05\x05\x05\0\0\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x05\x05\x05\x05\x05\0\x05\x05\0\x05\x05\x05\x05\x05\0\0\0\0\0\x02\x02\x02\x02\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0") }, icu::properties::props::JoiningType::NonJoining));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumJoiningTypeV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumJoiningTypeV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_JOINING_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumJoiningTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumJoiningTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumJoiningTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumJoiningTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_joining_type_v1 as impl_property_enum_joining_type_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_line_break_v1.rs.data b/vendor/icu_properties_data/data/property_enum_line_break_v1.rs.data
new file mode 100644
index 00000000..1eeac9b0
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_line_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumLineBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 15284B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_line_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_LINE_BREAK_V1: &'static <icu::properties::provider::PropertyEnumLineBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 918016u32, shifted12_high_start: 225u16, index3_null_offset: 1160u16, data_null_offset: 2731u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0\x7F\0\xBF\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\x000\x01p\x01\xA1\x01\xE1\x01\xF7\0\xF7\0\xF7\0\x1E\x02\xF7\0.\x02_\x02\x96\x02\xD6\x02\x16\x03K\x03\xF7\0|\x03\xB6\x03\xEB\x03\x05\x04E\x04\x85\x04\xC5\x04\xF6\x04,\x05h\x05\xA6\x05\xE5\x05#\x06b\x06\xA0\x06\xDF\x06\x1D\x07]\x07\x9B\x07\xD9\x07\x17\x08W\x08\x95\x08\xD4\x08\x12\tR\t\x90\t\xD0\t\x10\nO\n\x8F\n\xCE\n\x0E\x0BN\x0B\x8E\x0B\xC8\x0B\x08\x0C\x96\x0B\xB0\x0B\xC0\x0B\xD9\x0B\xF9\x0B\x18\x0C5\x0CT\x0Ct\x0Ct\x0Ct\x0Cu\x0Ct\x0Ct\x0Ct\x0Cu\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\x95\x0C\xB5\x0C\0\0\x10\0 \x000\0@\0P\0`\0p\0\x7F\0\x8F\0\x9F\0\xAF\0\xBF\0\xCF\0\xDF\0\xEF\0\xF7\0\x07\x01\x17\x01'\x01\xF7\0\x07\x01\x17\x01'\x01\xF7\0\x07\x01\x17\x01'\x01\xF7\0\x07\x01\x17\x01'\x010\x01@\x01P\x01`\x01p\x01\x80\x01\x90\x01\xA0\x01\xA1\x01\xB1\x01\xC1\x01\xD1\x01\xE1\x01\xF1\x01\x01\x02\x11\x02\xF7\0\x07\x01\x17\x01'\x01\xF7\0\x07\x01\x17\x01'\x01\x1E\x02.\x02>\x02N\x02\xF7\0\x07\x01\x17\x01'\x01.\x02>\x02N\x02^\x02_\x02o\x02\x7F\x02\x8F\x02\x96\x02\xA6\x02\xB6\x02\xC6\x02\xD6\x02\xE6\x02\xF6\x02\x06\x03\x16\x03&\x036\x03F\x03K\x03[\x03k\x03{\x03\xF7\0\x07\x01\x17\x01'\x01|\x03\x8C\x03\x9C\x03\xAC\x03\xB6\x03\xC6\x03\xD6\x03\xE6\x03\xEB\x03\xFB\x03\x0B\x04\x1B\x04\x05\x04\x15\x04%\x045\x04E\x04U\x04e\x04u\x04\x85\x04\x95\x04\xA5\x04\xB5\x04\xC5\x04\xD5\x04\xE5\x04\xF5\x04\xF6\x04\x06\x05\x16\x05&\x05,\x05<\x05L\x05\\\x05h\x05x\x05\x88\x05\x98\x05\xA6\x05\xB6\x05\xC6\x05\xD6\x05\xE5\x05\xF5\x05\x05\x06\x15\x06#\x063\x06C\x06S\x06b\x06r\x06\x82\x06\x92\x06\xA0\x06\xB0\x06\xC0\x06\xD0\x06\xDF\x06\xEF\x06\xFF\x06\x0F\x07\x1D\x07-\x07=\x07M\x07]\x07m\x07}\x07\x8D\x07\x9B\x07\xAB\x07\xBB\x07\xCB\x07\xD9\x07\xE9\x07\xF9\x07\t\x08\x17\x08'\x087\x08G\x08W\x08g\x08w\x08\x87\x08\x95\x08\xA5\x08\xB5\x08\xC5\x08\xD4\x08\xE4\x08\xF4\x08\x04\t\x12\t\"\t2\tB\tR\tb\tr\t\x82\t\x90\t\xA0\t\xB0\t\xC0\t\xD0\t\xE0\t\xF0\t\0\n\x10\n \n0\n@\nO\n_\no\n\x7F\n\x8F\n\x9F\n\xAF\n\xBF\n\xCE\n\xDE\n\xEE\n\xFE\n\x0E\x0B\x1E\x0B.\x0B>\x0BN\x0B^\x0Bn\x0B~\x0B\x8E\x0B\x9E\x0B\xAE\x0B\xBE\x0B\xC8\x0B\xD8\x0B\xE8\x0B\xF8\x0B\x08\x0C\x18\x0C(\x0C8\x0CP\nP\nP\nP\nH\x0CP\nP\nP\nP\nX\x0C\xF7\0\xF7\0h\x0C\xF7\0\xF7\0\xF7\0x\x0Cx\x0Cx\x0Cx\x0Cx\x0Cx\x0C\x88\x0C\x88\x0C\x88\x0C\x88\x0C\x90\x0C\x98\x0C\x98\x0C\x98\x0C\x98\x0C\x98\x0C\xF7\0\xF7\0\xF7\0\xF7\0\xA8\x0C\xB8\x0C\xF7\0\xF7\0\xA8\x0C\xF7\0\xF7\0\xB0\x0C\xC0\x0C\xFC\x01\xF7\0\xF7\0\xF7\0\xC0\x0C\xF7\0\xF7\0\xF7\0\xC8\x0C\xD8\x0C\xDA\t\xF7\0\xDE\x0C\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xEE\x0C\xFE\x0C\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xFE\x0C\x03\r\xF7\0\xF7\0\xF7\0\xF7\0\x13\r!\r\xF7\x001\r\xF7\0@\r\xF7\0P\r\xF6\x01`\rP\nP\nP\nP\nP\np\r\xBB\x08\xDE\x0C\x80\r\xBB\x08\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0!\r\x90\r\xF7\0\x97\r\xF7\0\xF7\0\xF7\0\xF7\0\xA7\r\xF7\0\xF4\x01\xB7\r\xB7\r\xC7\rP\n|\n\xD7\rP\nP\n~\nP\n\xE7\r\xF7\r\xF7\0\xF7\0\x07\x0EP\nP\nP\n{\nP\n\x17\x0E\xBB\x08\xBB\x08|\np\x01\xE7\x03\xAB\n\xAB\n\xAB\n&\x0E+\x0E+\x0E7\x0EC\x0ES\x0Eb\x0En\x0E%\x02\xF7\0~\x0E\xAC\x03\x8E\x0E\x8E\x0E\x98\x0E\xA6\x0E\xF7\0\xF7\0l\x01\xB6\x0E\xC6\x0E\xAC\x03\xF7\0\xD3\x0E\xE5\x04\xF7\0\xF7\0k\x02\xCB\x07\xA2\x05\xE3\x0E\xEC\x0E\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xA3\x01p\x01p\x01\xA4\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xEE\x0C\xF7\0\xF7\0\xEE\x0C\xFC\x0E\xF7\0h\x02\xF7\0\xF7\0\xF7\0\xFE\x01\xFE\x01\x0B\x0F\xF7\0\x1B\x0F+\x0F;\x0FK\x0F[\x0Fi\x0Fs\x0F\x83\x0F\x93\x0F\xA3\x0F\xDA\t\xB3\x0F\xBD\x0F\xCB\x0Fp\x01p\x01\xDB\x0F\xEB\x0F\xF8\x0F\x07\x10\xF7\0\xF7\0\x17\x10\x1A\x10\x1C\x10&\x10\x1C\x10\xF7\0\xF7\0\xF7\x006\x10\xF7\0\xF7\0F\x10T\x10c\x10r\x10\x80\x10\xD4\0\x90\x10\xF7\0\x98\x10\xA3\x10\xD1\0\xC7\0\xF7\0\xF7\0\xAD\x10\xF7\0\xBD\x10\xCB\x10\xD7\x10\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xE7\x10\xF7\0\xF7\0\xDE\x0C\xAB\n\xE5\x04\xAB\n\xF7\x10\xF7\x10\xF7\x10\xF7\x10\xF7\x10\xF7\x10\xF7\x10\xF7\x10\xF7\x10\x17\x10\xF7\x10\xF7\x10\xF7\x10\xF7\x10\x1A\x10\xF7\x10\xF7\x10\x02\x11\xF7\x10\x10\x11 \x11.\x11:\x11H\x11V\x11\xF7\0f\x11v\x11\xF7\0\x86\x11\x96\x11\xF7\0\xA6\x11\xB6\x11\xF7\0J\x11\xF7\0\xB8\x11\xC5\x11\xD4\x11\xE3\x11\xF2\x11\xFF\x11\xF7\0\xF7\0\xF7\0\xF7\0\r\x12\x1C\x12&\x12\xF7\x102\x12\xF7\0\xF7\0=\x12\xF7\0G\x12\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0J\x12R\x12\xF7\0\xF7\0\xF7\0\xBD\x10\xF7\x006\x12\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0]\x12\xF7\0r\x02\xF7\0\xFD\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0a\x01m\x12\xF7\0\xF7\0h\x0C\xF7\0\xF7\0\xF7\0\"\r|\x12\xF7\0\x8C\x12\x07\x06\x07\x06\x07\x06\x07\x06p\x01p\x01\x9C\x12\xAA\x12\xBA\x12\xCA\x12\xDA\x12\xEA\x12\xAB\n\xAB\n\xFA\x12\0\x13\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\x0C\x13\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\x1C\x13\xAB\n\xFA\x12,\x13:\x13J\x13Z\x13j\x13\xFA\x12w\x13\xFA\x12\x84\x13\x93\x13\xA3\x13\xFA\x12w\x13\xFA\x12\x84\x13\xAE\x13\xBE\x13\xFA\x12\xFA\x12\xF9\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFB\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xC8\x13\xD8\x13\xFA\x12\xFB\x12\xFA\x12\xFA\x12\xE8\x13\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xF7\0\xF7\0\xF7\0\xF7\0\xFA\x12\xF8\x13\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFE\x13\xFA\x12\xFA\x12\xFA\x12\xC7\x13\xF7\0\xF7\0\xD3\x0E\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x0E\x14\xF7\0\x1E\x14\xAB\n\xF7\0\xF7\0a\x01.\x14\xF7\0b\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0>\x14\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0h\x02N\x14\xAB\nv\x02^\x14\xF7\0k\x14{\x14\xF7\0\xF7\0\xF7\0\x8B\x14&\x02\xF7\0\xF7\0l\x01\x9B\x14\xBB\x08p\x01\xAB\x14\xAC\x03\xF7\0\xBB\x14\xF7\0i\x01\xCB\x14x\x0C\xDB\x14'\x0E+\x0E+\x0E\xEB\x14\xFB\x14\x0B\x15P\n\xCD\r\x8E\x0E\x8E\x0E\x95\x0E\x1B\x15+\x15;\x15P\nP\nP\nP\nP\nP\n+\x0BE\ne\x01I\x15\xED\x0C\xA6\r\x07\x06\xF7\0\xF7\0\xF7\0\x07\x08\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0Y\x15\xBB\x08i\x15m\x15z\x15q\x15z\x15u\x15z\x15i\x15m\x15z\x15q\x15z\x15u\x15z\x15i\x15m\x15z\x15q\x15z\x15u\x15z\x15i\x15m\x15z\x15q\x15z\x15u\x15z\x15i\x15m\x15z\x15q\x15z\x15u\x15z\x15i\x15m\x15z\x15q\x15z\x15\x86\x15\x88\x0C\x96\x15\x98\x0C\x98\x0C\xA1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xB1\x15\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\x8C\x12\xC1\x15\xD0\x15\xDA\x15\xEA\x15\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xFA\x15\xF2\x04\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\n\x16\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0v\x02\xF7\0\xF7\0\"\r\xAB\n\xAB\n\x1A\x16p\x01*\x16:\x16J\x16V\x16f\x16u\x16\xFE\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x85\x16\x95\x16\xA4\x16\xFA\x12\xB4\x16\xFA\x12\xC2\x16\xD2\x16\xE1\x16\xFA\x12\xE3\x16\xFA\x12\xFB\x12\xF3\x16\xFB\x16\x0B\x17\x1A\x17\xF7\x01\xF7\0\xFC\x01*\x17h\x02h\x02\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xE5\x04:\x17\xF7\0\xF7\0\xE3\t\xF7\0\xF7\0\xF7\0\xF7\0\xF4\x01\xDA\t-\x07\xAB\n\xAB\n\xF7\0\xF7\0A\x17\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xDA\t\xF7\0\xF7\0\xF7\0-\x07'\x02\x07\x08\xF7\0\xF7\0Q\x17\xF7\0\xE5\x04\xF7\0\xF7\0^\x17\xF7\0n\x17\xF7\0\xF7\0~\x17\x8E\x17\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0h\x02\xBB\x08\xF7\0\xF7\0~\x17\xF7\0\x07\x08\xF7\0\xF7\0\xCB\x07\xF7\0\xF7\0\xF7\0\x90\x17\xF8\x01\xF8\x01\x9F\x17\x01\x02\xAD\x17\xF7\0\xF7\0\xF7\0\xBD\x17\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x8C\x12\xF7\0\xA7\r\xCB\x07\xAB\n\xFD\x01\xF7\0\xF7\0\xCD\x17\xAB\n\xAB\n\xAB\n\xAB\n\xDD\x17\xF7\0\xF7\0\xE7\x17\xF7\0\xF6\x17\xF7\0\xF7\0\xF7\0\xF4\x01\x03\x16\xAB\n\xAB\n\xAB\n\xF7\0\x03\x18\xF7\0\x0E\x18\xF7\0\xE6\x04\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\x1E\x18\xF7\0v\x02\xF7\0\xF7\0-\x18\xE9\x06\xF7\0=\x18!\rM\x18\xF7\0\xF7\0\xF7\0\xF7\0\xAB\n\xAB\n\xF7\0\xF7\0]\x18m\x18\xF7\0\xF7\0\xF7\0}\x18\xF7\0p\x02\xF7\0\xED\x04\xF7\0\x8D\x18\x01\x16\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0!\r\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xFA\x15\xF7\0\xF7\0\xF7\0\x97\x18\xF7\0\xF7\0\xA3\x18\xBB\x08\xAC\x03\xF7\0\xB3\x18\xF7\0\xC2\x18\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF4\x01\xF7\0\xF7\0\xD0\x18\xE0\x18\xEE\x18\xAB\n\xAB\nF\t\xF7\0\xF7\0\xCB\x07\xF7\0j\x01\xFE\x18\xAB\n\xF7\0\x0E\x19\xAB\n\xAB\n\xF7\0\x07\x08\xAB\n\xF7\0\x8C\x12\x1E\x19+\x0E+\x0E3\x0E.\x19\xF8\x12>\x19N\x19%\x02\xF7\0\xF7\0^\x19l\x19\xF7\0!\r\xBB\x08%\x02\xF7\0i\x01|\x19\x8C\x19\xF7\0\xF7\0\x9C\x19%\x02\xF7\0\xF7\0m\x01\xAC\x19\xBC\x19\xEE\x01\x8F\x17\xF7\0\x01\x02d\x01\xCC\x19\xDB\x19\xAB\n\xAB\n\xAB\n\xEB\x19\xF5\x01\xFA\x19\xF7\0\xF7\0a\x01\n\x1A\xBB\x08\x1A\x1A&\x1A-\x1A<\x1AJ\x1AZ\x1Aj\x1Ar\x1A\x82\x1A\x92\x1A+\x0E\x9C\x1A\xAB\x1A\xBB\x1A\xCA\x1A\xAB\n\xF7\0\xF7\0\xF7\0k\x01\xDA\x1A\xEA\x1A\xE0\x18\xAB\n\xF7\0\xF7\0\xF7\0p\x01\xFA\x1A\xBB\x08\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0a\x01\n\x1B\x19\x1B\"\x1B\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0p\x012\x1B\xBB\x08B\x1B\xAB\n\xF7\0\xF7\0e\x01R\x1B\xBB\x08b\x1Bn\x1B\xAB\nP\n\x01\x0B~\n~\x1B\x8D\x1B\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0d\x01+\x04\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xAC\x03\xBE\x17\x9D\x1B\xA9\x1B+\x0E\xB9\x1B\xC9\x1B\xD9\x1B\xAB\n\xAB\n\xAB\n\xAB\nn\x02\xF7\0\xF7\0\xE9\x1B\xF8\x1B\xAB\n\x08\x1C\xF7\0\xF7\0\x15\x1C%\x1C5\x1C\xF7\0\xF7\0f\x01E\x1CT\x1C\xF7\0\xF7\0\xF7\0\xF7\0!\rd\x1C\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xE0\x18\xBB\x08\xFA\x01\xF7\0a\x01\xD9\x0Bt\x1C\xAC\x03\xDA\t\x84\x1C\xF7\0\xBD\x0B\xD8\x0B\x1B\x15\xAB\n\xAB\n\xAB\n\xAB\n\t\x07\xF7\0\xF7\0\x93\x1C\xA2\x1C\xBB\x08\xB2\x1C\xF7\0\xBC\x1C\xC9\x1C\xBB\x08\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\x8E\x0E\xD9\x1C\xE9\x1C\xF8\x1C+\x0E\x04\x1D\x12\x1D\"\x1D\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n-\x07\xF7\x002\x1DA\x1DO\x1D\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xDE\x0C\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF4\x01^\x1D\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xBD\x17\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xFA\x15\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0n\x1D\xF7\0\xF7\0|\x1D\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x86\x1D\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0L\0\x96\x1D\xA6\x1Dq\x1A\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xE5\x04\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\0\r\xF7\0\xF7\0\xF7\0\xF7\0\x8C\x12\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\x8E\x0E\x90\x0Ep\x01\xD9\x1B\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0!\r\xF7\0\xF4\x01\xB6\x1D\xF7\0\xF7\0\xF7\0\xF7\0\xF4\x01\xBB\x08\xF7\0h\x02\xC6\x1D\xF7\0\xF7\0\xF7\0\xD6\x1D\xE2\x1D\xF2\x1D\x01\x02\xE8\x04\xF7\0\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xD3\x0E\xBB\x08\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xFD\x1D\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\x08\x08o\x01p\x01p\x01\r\x1E%\x02\xAB\n\xAB\n\xAB\n\xAB\n\x1D\x1E-\x1E\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xC6\x13\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xA7\r\xAB\n.\x07\xC5\x13\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\x87\x06\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12=\x1EK\x1E\xAB\n[\x1Eg\x1E\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12w\x1E\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xE5\x04\xDA\t!\r\x87\x1E\x97\x1E\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xBB\x08\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xBD\x17\xAB\n\xAB\n\xAB\n\xAB\np\x01p\x01\xE8\x03p\x01\x1B\x15\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xBD\x17\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xA7\r\xF7\0\xF7\0o\x02\xF7\0\xF7\0\xF7\0\xA7\x1Ep\x01\xB4\x1E\xF7\0\xC0\x1E\xF7\0\xF7\0\xF7\0\xE5\x04\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xCE\x1E\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xBD\x17\xF7\0\xBD\x17\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x8C\x12\xF7\0!\r\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xFE\x01\xF7\0\xF7\0\xF7\0\xF6\x01\xDC\x1E\xEA\x1E\xFF\x01\xF7\0\xF7\0\xF7\0\xAB\x0C\x86\x06\xF7\0\xF7\x1E\x07\x1F\xED\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0p\x02\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x11\x1Fb\x1Bb\x1Bb\x1Bp\x01p\x01p\x01:\x1Cp\x01p\x01\xC4\x01!\x1F-\x1F\xCF\x1A\xA6\x02\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF4\x01\xA2\r\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xD9\x0B=\x1FK\x1F\xF7\0\xF7\0\xF7\0h\x02\xAB\nV\x1F\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\xF7\0\xDA\te\x1Fu\x1F\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0\x83\x1F\xAB\n\xF7\0\xF7\0d\x01\x93\x1F\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0d\x01\xBB\x08\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xF7\0b\x01\xA3\x1F\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xB2\x1F\xF4\x01\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0q\x02\x1B\x15\xAB\n\xAB\n\xF7\0\xF7\0\xF7\0\xF7\0\xC2\x1F\xD2\x1F\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xEE\x01\xF7\0\xF7\0\x1A\x16\xE2\x1F\xAB\n\xAB\n\xAB\n\xAB\n\xEE\x01\xF7\0\xF7\0h\x02\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xFF\x01\xF7\0\xF1\x1F\xFE\x1F\x0C \x1C * 2 \xF9\x01\x07\x08A \x07\x08\xAB\n\xAB\n\xAB\n\xE0\x18\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\x19\x10\xF7\x10\x18\x10\xF7\x10\xF7\x10\xF7\x10\x1C\x10\xF7\x10\xF7\x10\xF7\x10Q \xFA\x12\xFA\x12\xFA\x12_ e \xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12u { \xFA\x12\x82 \x90 \xFA\x12\xFA\x12\x9D \xFA\x12\xFA\x12\xFA\x12\xFA\x12\xAD \xBC \xC6 \xCD \xDC \xEA \xFA \x08!\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xBE\x11\x11!\x1C!*!\xBB\x11\xFA\x12\xFA\x12:!\xFA\x12J!\xFA\x12\xFA\x12\xFA\x12V!\xFA\x12b!\xFA\x12\xFA\x12\xFA\x12\xFA\x12m!\xF7\0\xF7\0}!\xFA\x12\xFA\x12w \x8D!\x93!\xFA\x12\xFA\x12\xFA\x12\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xA3!\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\x1C!\xFA\x12\xFA\x12\x07\x08\xF7\0\xF7\0\xF7\0\xCB\x07\xDE\x0C\xF7\0\xF7\0\xCB\x07\xF7\0h\x02\x07\x08\xE0\x18\xAB\n\xAB\n\xAB\n\xB3!\xC4 \xE5 \xC2!\xFA\x12\xFA\x12\xFA\x12\xE4 \xFA\x12\xFA\x12\xFA\x12\xD1!\xBF \xE0!\xFA\x12\xFA\x12\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xA3!\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\x8E!\xFA\x12\xFA\x12\xB4 \xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\0\x02\xF7\0\xF7\0\xF7\0\xF7\0\xF7\0\xBB\x08\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xFA\x12\xEE!-\x08\xAB\np\x01p\x01p\x01p\x01p\x01p\x01\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\n\xAB\np\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01p\x01\xAB\ny\0\x8D\0\xA9\0\xC9\0\xE9\0\t\x01)\x01I\x01i\x01\x89\x01\xA9\x01\xC1\x01\xE1\x01\0\x02 \x02@\x02`\x02\x80\x02\xA0\x02\xC0\x02\xDF\x02\xFF\x02\x19\x039\x03Y\x03y\x03~\x03~\x03~\x03~\x03~\x03~\x03\x82\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03\xA2\x03~\x03\xBA\x03\xDA\x03\xFA\x03\x1A\x04:\x04>\x04;\x04?\x04<\x04@\x04=\x04:\x04>\x04;\x04?\x04<\x04@\x04=\x04H\x04h\x04h\x04h\x04h\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x98\x04\xA8\x04\xC6\x04\xE6\x04\x06\x05&\x05F\x05f\x05\x86\x05\xA6\x05\xC6\x05\xE0\x05\0\x06 \x06@\x06`\x06\x80\x06\xA0\x06\xC0\x06\xDB\x06\xFB\x06\x02\x07\"\x07\x88\x04\x88\x04\x88\x04\x88\x047\x07\xFB\x06W\x07u\x07\xFB\x06\xFB\x06\xFB\x06\xFB\x06\xFB\x06{\x07\x9B\x07\xB8\x07\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\xC8\x07\x88\x04\x88\x04\x88\x04\xFB\x06\xE8\x07\x01\x08\x1D\x08~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03=\x08~\x03]\x08p\x08\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x81\x08\xA1\x08\xB8\x08\x88\x04\x88\x04\x88\x04\x88\x04\xD8\x08\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\xF8\x08\r\t-\tM\tm\t\x83\t\xFB\x06\xA3\t\x88\x04\xB3\t\xD3\t\xEA\t\xFD\t\x1D\n=\n\x88\x04V\nv\n\x96\n\xB6\n\xD6\n\xF6\n\x16\x0B6\x0B~\x03V\x0B~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03~\x03V\x0B\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04\x88\x04v\x0B") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\t\t\t\t\t\t\t\t\t\x04\x11\x06\x06\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x1A\x0B\x17\x02\x16\x15\x02\x17\x14$\x02\x16\x10\r\x10\x1B\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x10\x10\x02\x02\x02\x0B\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x14\x16$\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x14\x04\x08\x02\t\t\t\t\t\x1D\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x0C\x14\x15\x16\x16\x16\x02\x01\x01\x02\x01\x17\x02\x04\x02\x02\x15\x16\x01\x01\x05\x02\x01\x01\x01\x01\x01\x17\x01\x01\x01\x14\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x05\x01\x01\x01\x05\x01\x02\x02\x01\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x02\x01\x02\x05\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x0C\t\t\t\t\t\t\t\t\t\t\t\t\x0C\x0C\x0C\x0C\x0C\x0C\x0C\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x10\x02\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\0\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x10\x04\0\0\x02\x02\x16\0\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x04\t\x02\t\t\x02\t\t\x0B\t\0\0\0\0\0\0\0\0&&&&&&&&&&&&&&&&&&&&&&&&&&&\0\0\0\0&&&&\x02\x02\0\0\0\0\0\0\0\0\0\0\0\x13\x13\x13\x13\x13\x13\x02\x02\x02\x15\x15\x15\x10\x10\x02\x02\t\t\t\t\t\t\t\t\t\t\t\x0B\t\x0B\x0B\x0B\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x15\x13\x13\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x0B\x02\t\t\t\t\t\t\t\x13\x02\t\t\t\t\t\t\x02\x02\t\t\x02\t\t\t\t\x02\x02\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x10\x0B\x02\0\0\t\x16\x16\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\x02\t\t\t\t\t\t\t\t\t\x02\t\t\t\x02\t\t\t\t\t\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\0\0\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x13\x13\0\0\0\0\0\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x13\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x04\x04\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\0\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\0\x02\0\0\0\x02\x02\x02\x02\0\0\t\x02\t\t\t\t\t\0\0\t\t\0\0\t\t\t\x02\0\0\0\0\0\0\0\0\t\0\0\0\0\x02\x02\0\x02\x02\x02\t\t\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x02\x15\x15\x02\x02\x02\x02\x02\x15\x02\x16\x02\x02\t\0\t\t\t\0\x02\x02\x02\x02\x02\x02\0\0\0\0\x02\x02\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\0\x02\x02\0\x02\x02\0\0\t\0\t\t\t\0\0\0\0\t\t\0\0\t\t\t\0\0\0\t\0\0\0\0\0\0\0\x02\x02\x02\x02\0\x02\0\0\0\0\0\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\t\t\x02\x02\x02\t\x02\0\0\0\0\0\0\0\0\0\t\t\t\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\0\x02\x02\x02\x02\x02\0\0\t\x02\t\t\t\t\t\t\0\t\t\t\0\t\t\t\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\t\t\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x16\0\0\0\0\0\0\0\x02\t\t\t\t\t\t\0\t\t\t\0\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\0\x02\x02\x02\x02\x02\0\0\t\x02\t\t\t\t\t\0\0\t\t\0\0\t\t\t\0\0\0\0\0\0\0\t\t\t\0\0\0\0\x02\x02\0\x02\x02\x02\t\t\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\t\x02\0\x02\x02\x02\x02\x02\x02\0\0\0\x02\x02\x02\0\x02\x02\x02\x02\0\0\0\x02\x02\0\x02\0\x02\x02\0\0\0\x02\x02\0\0\0\x02\x02\x02\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\t\t\t\0\0\0\t\t\t\0\t\t\t\t\0\0\x02\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x02\x02\x02\x02\x02\x02\x02\x02\x16\x02\0\0\0\0\0\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\t\x02\t\t\t\t\t\0\t\t\t\0\t\t\t\t\0\0\0\0\0\0\0\t\t\0\x02\x02\x02\0\0\x02\0\0\x02\x02\t\t\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\0\0\0\0\0\x05\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\x05\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\0\0\t\x02\t\t\t\t\t\0\t\t\t\0\t\t\t\t\0\0\0\0\0\0\0\t\t\0\0\0\0\0\0\x02\x02\0\x02\x02\t\t\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\x02\x02\t\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\x02\t\t\t\t\t\0\t\t\t\0\t\t\t\t\x02\x02\0\0\0\0\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x02\x02\x02\x02\x02\x02\x02\x02\x15\x02\x02\x02\x02\x02\x02\0\t\t\t\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\0\0\x02\x02\x02\x02\x02\x02\x02\0\0\0\t\0\0\0\0\t\t\t\t\t\t\0\t\0\t\t\t\t\t\t\t\t\0\0\0\0\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\t\t\x02\0\0\0\0\0\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\x16\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x02\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x04\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x18\x18\0\x18\0\x18\x18\x18\x18\x18\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\x18\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\x18\x18\x18\x18\x18\0\x18\0\x18\x18\x18\x18\x18\x18\x18\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\x18\x18\x18\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x05\x05\x05\x05\x02\x05\x05\x0C\x05\x05\x04\x0C\x0B\x0B\x0B\x0B\x0B\x0C\x02\x0B\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\t\x02\t\x02\t\x14\x08\x14\x08\t\t\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x04\t\t\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\t\0\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\0\x04\x04\x02\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\0\x02\x02\x05\x05\x04\x05\x02\x02\x02\x02\x02\x0C\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x04\x04\x02\x02\x02\x02\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x18\x18\x18\x18\x18\x18\x02\x02\x02\x02\x02\x02\0\x02\0\0\0\0\0\x02\0\0!!!!!!!!!!!!!!!!################\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\x02\0\x02\0\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\t\t\t\x02\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\0\0\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x14\x08\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x04\x04\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\x02\x02\t\t\t\t\0\0\0\0\0\0\0\0\0\x02\x02\t\t\t\x04\x04\0\0\0\0\0\0\0\0\0\x02\x02\t\t\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\t\t\0\0\0\0\0\0\0\0\0\0\0\0\x18\x18\x18\x18\x04\x04\x12\x18\x04\x02\x04\x16\x18\x18\0\0\x02\x02\x0B\x0B\x04\x04\x05\x02\x0B\x0B\x02\t\t\t\x0C\t\x02\x02\x02\x02\x02\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\0\0\0\0\0\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\t\t\0\0\0\0\x02\0\0\0\x0B\x0B\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x18\x18\x18\x18\x18\0\0\0\0\0\0\0\0\0\0\0\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\0\x18\x18\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\0\0\x02\x02\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\0\0\t\t\t\t\t++++++++++++++++\t\t\t\t\t\t\t\t\t\t\t\t/++++++++\0\x04\x04----------\x04\x04\x0E\x04\x04\x04\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\t\t\t\t\t\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x04\x04\x04\x02\t\t\t\t\t\t\t\t\t\t\t\t\t\x02\x02----------------\t\t\t\t\t\t\t\t\t\t..\0\0\0\0\0\0\0\0\x02\x02\x02\x02\t\t\t\t\t\t\t\t\0\0\0\x04\x04\x04\x04\x04\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x04\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\t\x02\x02\t\t\t\x02\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\0\x02\0\x02\0\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\0\0\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x05\x02\0\x04\x04\x04\x04\x04\x04\x04\x0C\x04\x04\x04\x1C\t*\t\t\x04\x0C\x04\x04\x03\x01\x01\x02\x17\x17\x14\x17\x17\x17\x14\x17\x01\x01\x02\x02\x0F\x0F\x0F\x04\x06\x06\t\t\t\t\t\x0C\x15\x15\x15\x15\x15\x15\x15\x15\x02\x17\x17\x01\x12\x12\x02\x02\x02\x02\x10\x14\x08\x12\x12\x12\x02\x02\x02\x02\x02\x02\x04\x15\x04\x04\x04\x04\x02\x04\x04\x04\x1E\x02\x02\x02\x02\0\t\t\t\t\t\t\t\t\t\t\x02\x02\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x14\x08\x01\x02\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x14\x08\0\x16\x16\x16\x16\x16\x16\x16\x15\x16\x16\x16\x16\x16\x16\x16\x16\x15\x16\x16\x16\x16\x15\x16\x16\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x15\x02\x01\x02\x02\x02\x15\x02\x02\x02\x02\x02\x02\x01\x02\x02\x16\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x02\0\0\0\0\x02\x02\x01\x02\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x01\x01\x02\x02\x02\x01\x01\x02\x02\x01\x02\x02\x02\x01\x16\x16\x02\x01\x02\x02\x02\x02\x01\x02\x02\x01\x01\x01\x02\x02\x01\x02\x01\x02\x01\x01\x01\x01\x01\x01\x02\x01\x02\x02\x02\x02\x01\x01\x01\x01\x02\x02\x02\x02\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x02\x02\x01\x02\x02\x02\x01\x01\x02\x02\x01\x01\x01\x01\x02\x02\x01\x01\x02\x02\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x01\x02\x02\x02\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x0F\x02\x02\x02\x02\x02\x02\x02\x02\x14\x08\x14\x08\x02\x02\x02\x02\x01\x02\x02\x02\x02\x02\x02\x02\x0E\x0E\x02\x02\x02\x02\x02\x02\x02\x02\x02\x14\x08\x02\x02\x02\x02\x02\x0E\x0E\x0E\x0E\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\x02\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x01\x01\x02\x02\x01\x01\x02\x02\x02\x02\x01\x01\x02\x02\x02\x02\x01\x01\x01\x02\x02\x01\x02\x02\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x0E\x0E\x0E\x0E\x02\x01\x01\x02\x02\x01\x02\x02\x02\x02\x01\x01\x02\x02\x02\x02\x0E\x0E\x01\x01\x0E\x02\x0E\x0E\x0E(\x0E\x0E\x02\x02\x02\x02\x02\x02\x02\x02\x02\x0E\x0E\x0E\x02\x02\x02\x02\x01\x02\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x01\x01\x02\x01\x01\x01\x02\x01\x0E\x01\x01\x02\x01\x01\x02\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x01\x01\x01\x01\x0E\x02\x0E\x0E\x01\x0E\x0E\x01\x01\x01\x0E\x0E\x01\x01\x0E\x01\x01\x0E\x0E\x02\x01\x02\x02\x02\x02\x01\x01\x0E\x01\x01\x01\x01\x01\x0E\x0E\x0E\x0E\x0E\x01\x0E\x0E(\x0E\x01\x01\x0E\x0E\x0E\x0E\x0E\x02\x02\x02\x0E\x0E((((\x02\x02\x02\x02\x02\x02\x02\x01\x02\x02\x02\x17\x17\x17\x17\x17\x02\x0B\x0B\x0E\x02\x02\x02\x14\x08\x14\x08\x14\x08\x14\x08\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x14\x08\x02\x02\x02\x02\x02\x02\x02\x02\x02\x14\x08\x14\x08\x14\x08\x14\x08\x14\x08\x14\x08\x14\x08\x02\x02\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\t\t\x02\x02\0\0\0\0\0\x0B\x04\x04\x04\x02\x0B\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x04\x04\x04\x04\x04\x04\x02\x04\x14\x04\x02\x02\x17\x17\x02\x02\x17\x17\x14\x08\x14\x08\x14\x08\x14\x08\x04\x04\x04\x04\x0B\x02\x04\x04\x02\x04\x04\x02\x02\x02\x02\x02\x03\x03\x04\x04\x04\x02\x04\x04\x14\x04\x04\x04\x04\x04\x04\x04\x04\x02\x04\x02\x04\x04\x02\x02\x02\x0B\x0B\x14$\x14$\x14$\x14$\x04\0\0\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\0\x0E\x0E\x0E\x0E\x0E\0\0\0\0\0\0\0\0\0\0\0\0\x0E\x0E\x0E\x0E\x0E\x0E\0\0\0\0\0\0\0\0\0\0\x04\x08\x08\x0E\x0E\x12\x0E\x0E\x14\x08\x14\x08\x14\x08\x14\x08\x0E\x0E\x14\x08\x14\x08\x14\x08\x14\x08\x12\x14\x08\x08\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\t\t\t\t\t\t\x0E\x0E\x0E\x0E\x0E\t\x0E\x0E\x0E\x0E\x0E\x12\x12\x0E\x0E\x0E\0%\x0E%\x0E%\x0E%\x0E%\x0E\x0E\x0E\x0E\x0E\x0E%\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E%\x0E%\x0E%\x0E\x0E\x0E\x0E\x0E\x0E%\x0E\x0E\x0E\x0E\x0E%%\0\0\t\t\x12\x12\x12\x12\x0E\x12%\x0E%\x0E%\x0E%\x0E%\x0E\x0E\x0E\x0E\x0E\x0E%%\x0E\x0E\x0E\x0E\x12%\x12\x12\x0E\0\0\0\0\0\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\0\0\0\0\0\0\0\0\0\x0E%%%%%%%%%%%%%%%%\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x01\x01\x01\x01\x01\x01\x01\x01\x0E\x0E\x0E\x0E\x0E\x12\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\x0B\x04\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x02\0\0\0\0\t\t\t\x02\t\t\t\t\t\t\t\t\t\t\x02\x02\t\t\x02\x04\x04\x04\x04\x04\0\0\0\0\0\0\0\0\x02\x02\0\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\x02\x02\t\x02\x02\x02\t\x02\x02\x02\x02\t\x02\x02\x02\x02\t\t\t\t\t\x02\x02\x02\x02\t\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x15\x02\0\0\0\0\0\0\x02\x02\x02\x02\x05\x05\x0B\x0B\0\0\0\0\0\0\0\0\t\t\t\t\t\t\0\0\0\0\0\0\0\0\x04\x04\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x05\x02\x02\t\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\x04\x04\t\t\t\t\0\0\0\0\0\0\0\0\0\0\0\x02!!!!!!!!!!!!!\0\0\0+++\t\t\t\t\t\t\t\t\t\t\t\t\t/\x0E\x0E\x0E\x0E\x0E\x0E\x04\x04\x04\x0E\x0E\x0E\x0E\0\x04----------\0\0\0\0\x0E\x0E\t\t\t\t\t\t\t\0\0\0\0\0\0\0\0\0\x04\x04\x04\t\x04\x04\x04\x04\x04\x04\x04\x04\t\t\0\0----------\0\0\x0E\x04\x04\x04\x02\x02\x02\t\t\0\0\0\0\0\0\0\0\0\x02\x02\x02\t\t\t\t\t\t\t\t\x04\t\t\0\0\x1F               \x1F                \0\0\0\0\0\0\0\0\0\0\0\0#######\0\0\0\0\"\"\"\"\"\"\"\"\"\"\"\"\0\0\0\0\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\x19\0\0\0\x02\x02\x02\x02\x02\0\0\0\0\0&\t&&&&&&&&&\x02&&&&&&&\0&&&&&\0&\0&&\0&&\0&&&&&&&&&&\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x08\x14\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x15\x02\x02\x02\x08\x08\x08\x12\x12\x0B\x0B\x14\x08\x0F\0\0\0\0\0\0\x0C\t\x0C\t\x0C\t\x0C\x0C\t\x0C\t\x0C\t\x0C\x0C\t\x0E\x0E\x0E\x0E\x0E\x14\x08\x14\x08\x14\x08\x14\x08\x14\x08\x14\x08\x0E\x0E\x14\x08\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x08\x0E\x08\0\x12\x12\x0B\x0B\x0E\x14\x08\x14\x08\x14\x08\x0E\x0E\x0E\x0E\x0E\x0E\x0E\0\x0E\x16\x15\x0E\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x1E\0\x0B\x0E\x0E\x16\x15\x0E\x0E\x14\x08\x0E\x0E\x08\x0E\x08\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x12\x12\x0E\x0E\x0E\x0B\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x14\x0E\x08\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x14\x0E\x08\x0E\x14\x08\x08\x14\x08\x08\x12\x0E%%%%%%%%%\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x12\x12\0\0\x0E\x0E\x0E\x0E\x0E\x0E\0\0\x0E\x0E\x0E\x0E\x0E\x0E\0\0\x0E\x0E\x0E\0\0\0\x15\x16\x0E\x0E\x0E\x16\x16\0\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\t\t\t\x07\x01\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\0\x02\x04\x04\x04\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\0\0\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\t\t\t\t\t\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x04\x02\x02\x02\x02\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x04\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\0\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\0\0\0\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\x02\x02\x02\x02\x02\x02\0\0\x02\0\x02\x02\x02\x02\x02\x02\0\x02\x02\0\0\0\x02\0\0\x02\x02\x02\x02\x02\x02\0\x04\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\x04\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\x02\x02\x02\x02\t\t\t\0\t\t\0\0\0\0\0\t\t\t\t\x02\x02\x02\x02\x02\x02\0\0\t\t\t\0\0\0\0\t\x04\x04\x04\x04\x04\x04\x04\x04\x02\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\t\t\0\0\0\0\x02\x02\x02\x02\x02\x04\x04\x04\x04\x04\x04\x0F\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\0\0\0\x04\x04\x04\x04\x04\x04\x04\x02\x02\0\0\0\0\0\0\0\x02\x02\x02\x02\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\t\t\t\t\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\0\0\0\t\t\t\t\t\x04\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\t\t\x04\0\0\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\x02\x02\t\t\t\t\x02\x02\x02\x02\0\0\0\0\0\0\t\t\t,,+++++++++++\t\t\t\t\t\t/\x04\x04\x0E\x0E\x0E\x0E\x0E\0\0\x0E\x0E\x0E\x0E\x0E\x0E----------\t++\t\t+\0\0\0\0\0\0\0\0\0\x0C\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x13\x04\x04\t\0\0\0\0\0\0\0\0\0\0\x13\0\0\t\t\t\t\t\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x04\x04\x04\x04\x02\t\t\x02\0\0\0\0\0\0\0\0\x02\x02\x02\t\x02\x05\x02\0\0\0\0\0\0\0\0\0\t\x02\x02\x02\x02\x04\x04\x02\x04\t\t\t\t\x02\t\t\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x02\x05\x02\x04\x04\x04\t\t\t\t\t\t\t\t\x04\x04\x02\x04\x04\x02\t\x02\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\0\x02\0\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x04\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\t\0\0\0\0\0\t\t\t\t\0++++++++\0\0+++++++++++++\0++++++\0++\0+++++\0\t\t\x04\t\t\t\t\t\0\0\t\t\0\0\t\t/\0\0-\0\0\0\0\0\0\t\0\0\0\0\0\x04--++\t\t\0\0\t\t\t\t\t\t\t\0\0\0\0\0\0\0\0\0\0\0----------\0-\0\0-\0--++++++++++++++\0\x0E\t\t\t\t\t\t\t\t\0\t\0\0\t\0\t\t\t\t\0\t\t\t\t/,\t\x0E\x0E\x0E\0\x0E\x0E\0\0\0\0\0\0\0\t\t\0\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\x02\x02\x02\x02\x04\x04\x04\x04\x02\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x04\x04\0\x02\t\x02\t\t\t\t\x02\x02\x02\x02\0\0\0\0\0\0\0\0\t\t\t\t\t\t\0\0\t\t\t\t\t\t\t\t\x05\x04\x04\x0B\x0B\x02\x02\x02\x04\x04\x04\x04\x04\x04\x04\x04\x02\x02\x02\x02\t\t\0\0\t\x04\x04\x02\x02\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\t\t\t\t\t\t\t\t\x02\x02\0\0\0\0\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\0\0\0\0\0\0\0\0\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x18\x18\x04\x04\x04\x18\x18\x18\x18\x18\x18\x18\0\0\0\0\0\0\0\0\0+++++++\0\0+\0\0++++\0++\0++++++++\t\t\t\t\t\t\0\t\t\0\0\t\t\t/,\t,\t\t\x04\x04\x04\0\0\0\0\0\0\0\0\0----------\0\0\0\0\0\0\x02\t\t\t\t\t\t\t\0\0\t\t\t\t\t\t\x02\x05\x02\t\0\0\0\0\0\0\0\0\0\0\0\x02\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\x02\t\t\t\t\x05\x02\x04\x04\x04\x04\x05\x02\t\0\0\0\0\0\0\0\0\x02\t\t\t\t\t\t\t\t\t\t\t\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\t\x04\x04\x04\x02\x05\x05\x04\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\x02\x04\x04\x04\x04\x04\0\0\0\0\0\0\0\0\0\0\x05\x0B\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\0\0\0\t\0\t\t\0\t\t\t\t\t\t\x02\t\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\0\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\0\t\t\t\t\t\x02\0\0\0\0\0\0\0--\x04\t\t\t\t\x04\x04\0\0\0\0\0\0\0\t\t,\t++++++++++++\0++++++++++++++\t\t\t\t\t\t\t\0\0\0\t\t/\x04\x04\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E----------\t\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x15\x15\x15\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\x04\x04\x04\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x14\x14\x14\x08\x08\x08\x02\x02\x08\x02\x02\x02\x14\x08\x14\x08\x02\x02\x02\x02\x02\x02\x02\x02\x02\x14\x08\x08\x02\x02\x02\x02\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x14\x08\x0C\x0C\x0C\x14\x08\x14\x08\t\x02\x02\x02\x02\x02\x02\t\t\t\t\t\t\t\t\t\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\0\0\x04\x04\t\t\t\t\t\x04\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\x04\x04\x04\x02\x02\x02\x02\x02\x02\x04\x02\0\0\0\0\0\0\0\0\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\x02\x02\x02\x02\x02\x02\x02\x04\x04\x02\x02\0\0\0\0\0\t\t\t\t\t\t\t\t\0\0\0\0\0\0\0\t\x12\x12\x12\x12\x0C\0\0\0\0\0\0\0\0\0\0\0\t\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0E\x0E\x0E\0\0\0\0\0\0\0\0\0\0\0\0\0%\0\0\0\0\0\0\0\0\0\0\0\0\0%%%\0\0%\0\0\0\0\0\0\0\0\0\0%%%%\0\0\0\0\0\0\0\0\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\t\t\x04\t\t\t\t\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\t\t\t\t\t\x02\x02\x02\t\t\t\x02\x02\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\x02\x02\t\t\t\x02\0\0\0\0\0\0\0\0\0\0\x02\0\0\x02\x02\0\0\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\0\x02\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x13\x13\x02\x02\x02\x02\x02\t\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x02\x02\x04\x04\x04\x04\x02\0\0\0\0\t\t\t\t\t\t\t\t\t\0\0\t\t\t\t\t\0\t\t\0\t\t\t\t\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\x02\x02\x02\x02\x02\x02\x02\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\0\0\0\x16\x02\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\0\x02\x02\0\x02\x02\x02\x02\t\t\t\t\t\t\t\x02\0\0\0\0\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\0\0\0\0\x14\x14\x15\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\x02\x02\0\x02\0\0\x02\0\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\0\x02\0\x02\0\0\0\0\x02\0\0\0\0\x02\0\x02\0\x02\0\x02\x02\x02\0\x02\x02\0\x02\0\0\x02\0\x02\0\x02\0\x02\0\x02\x02\0\x02\0\0\x02\x02\x02\x02\0\x02\x02\x02\x02\0\x02\x02\x02\x02\0\x02\0\x02\x02\x02\0\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x0E\x0E\x0E\x0E\x0E\x0E''''''''''''''''\x0E\x0E\x0E\x0E\x0E(\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x02\x02\x0E\x0E\x0E\x0E\x0E\x02\x0E\x0E\x0E(((\x0E\x0E(\x0E\x0E(((\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E)))))\x0E\x0E((\x0E\x0E((((((((((\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E((((((((((\x0E\x0E\x0E(\x0E\x0E\x0E(((\x0E(((\x0E\x0E\x0E\x0E\x0E\x0E\x0E(\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x02\x0E\x02\x0E\x02\x0E\x0E\x0E\x0E\x0E(\x0E\x0E\x0E\x0E\x02\x02\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x02\x02\x02\x02\x02\x02\x02\x02\x02\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x0E\x0E\x0E\x0E((\x0E\x0E\x0E\x0E(\x0E\x0E\x0E\x0E\x0E(\x0E\x0E\x0E\x0E((\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x02\x02\x02\x02\x02\x02\x02\x02\x0E\x0E\x0E\x0E\x02\x02\x02\x02\x02\x02\x0E\x0E\x0E\x0E\x0E\x0E(((\x0E\x0E\x0E(((((\x02\x02\x02\x02\x02\x02\x17\x17\x17\x12\x12\x12\x02\x02\x02\x02\x0E\x0E\x0E\x0E(((\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E(\x0E\x0E\x0E\x02\x02\x02\x02\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02(\x0E\x0E((((((((((\x0E\x0E(((\x0E\x0E\x0E\x0E\x0E((\x0E((\x0E(\x0E\x0E\x0E\x0E(((((((((((((\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\0\0\0\0") }, icu::properties::props::LineBreak::Unknown));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumLineBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumLineBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_LINE_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumLineBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumLineBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumLineBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumLineBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_line_break_v1 as impl_property_enum_line_break_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_script_v1.rs.data b/vendor/icu_properties_data/data/property_enum_script_v1.rs.data
new file mode 100644
index 00000000..8743fd62
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_script_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumScriptV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 25752B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_script_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_SCRIPT_V1: &'static <icu::properties::provider::PropertyEnumScriptV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 918016u32, shifted12_high_start: 225u16, index3_null_offset: 1104u16, data_null_offset: 2802u32, null_value: 103u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0{\0\xBB\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xFA\x003\x01s\x01\x83\x01\xC3\x01\xE6\x01&\x02&\x02a\x02&\x02q\x02\xA2\x02\xD7\x02\x0F\x03O\x03\x8F\x03\xC0\x03\xE3\x03#\x04X\x04\x98\x04\xD8\x04\x18\x05X\x05\x89\x05\xDE\x03\xC9\x05\xF8\x058\x06t\x06\xB3\x06\xF1\x060\x07l\x07\xAC\x07\xE8\x07&\x08d\x08\xA4\x08\xE0\x08 \t\\\t\x9C\t\xD7\t\x17\nW\n\x96\n\xD6\n\x15\x0BU\x0B\x95\x0B\xCD\x0B\xFE\x0B.\x0C\x10\x0C*\x0C:\x0CP\x0Cp\x0C\x8F\x0C\xAC\x0C\xCB\x0C\xEB\x0C\xEB\x0C\xF8\x0C\x15\r5\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rg\r\0\0\x10\0 \x000\0@\0P\0`\0p\0{\0\x8B\0\x9B\0\xAB\0\xBB\0\xCB\0\xDB\0\xEB\0\xF3\0\x03\x01\x13\x01#\x01\xF3\0\x03\x01\x13\x01#\x01\xF3\0\x03\x01\x13\x01#\x01\xF3\0\x03\x01\x13\x01#\x01\xFA\0\n\x01\x1A\x01*\x013\x01C\x01S\x01c\x01s\x01\x83\x01\x93\x01\xA3\x01\x83\x01\x93\x01\xA3\x01\xB3\x01\xC3\x01\xD3\x01\xE3\x01\xF3\x01\xE6\x01\xF6\x01\x06\x02\x16\x02&\x026\x02F\x02V\x02&\x026\x02F\x02V\x02a\x02q\x02\x81\x02\x91\x02&\x026\x02F\x02V\x02q\x02\x81\x02\x91\x02\xA1\x02\xA2\x02\xB2\x02\xC2\x02\xD2\x02\xD7\x02\xE7\x02\xF7\x02\x07\x03\x0F\x03\x1F\x03/\x03?\x03O\x03_\x03o\x03\x7F\x03\x8F\x03\x9F\x03\xAF\x03\xBF\x03\xC0\x03\xD0\x03\xE0\x03\xF0\x03\xE3\x03\xF3\x03\x03\x04\x13\x04#\x043\x04C\x04S\x04X\x04h\x04x\x04\x88\x04\x98\x04\xA8\x04\xB8\x04\xC8\x04\xD8\x04\xE8\x04\xF8\x04\x08\x05\x18\x05(\x058\x05H\x05X\x05h\x05x\x05\x88\x05\x89\x05\x99\x05\xA9\x05\xB9\x05\xDE\x03\xEE\x03\xFE\x03\x0E\x04\xC9\x05\xD9\x05\xE9\x05\xF9\x05\xF8\x05\x08\x06\x18\x06(\x068\x06H\x06X\x06h\x06t\x06\x84\x06\x94\x06\xA4\x06\xB3\x06\xC3\x06\xD3\x06\xE3\x06\xF1\x06\x01\x07\x11\x07!\x070\x07@\x07P\x07`\x07l\x07|\x07\x8C\x07\x9C\x07\xAC\x07\xBC\x07\xCC\x07\xDC\x07\xE8\x07\xF8\x07\x08\x08\x18\x08&\x086\x08F\x08V\x08d\x08t\x08\x84\x08\x94\x08\xA4\x08\xB4\x08\xC4\x08\xD4\x08\xE0\x08\xF0\x08\0\t\x10\t \t0\t@\tP\t\\\tl\t|\t\x8C\t\x9C\t\xAC\t\xBC\t\xCC\t\xD7\t\xE7\t\xF7\t\x07\n\x17\n'\n7\nG\nW\ng\nw\n\x87\n\x96\n\xA6\n\xB6\n\xC6\n\xD6\n\xE6\n\xF6\n\x06\x0B\x15\x0B%\x0B5\x0BE\x0BU\x0Be\x0Bu\x0B\x85\x0B\x95\x0B\xA5\x0B\xB5\x0B\xC5\x0B\xCD\x0B\xDD\x0B\xED\x0B\xFD\x0B\xFE\x0B\x0E\x0C\x1E\x0C.\x0C.\x0C>\x0CN\x0C^\x0Cn\x0Cn\x0Cn\x0Cn\x0Cn\x0Cn\x0Cn\x0Cn\x0Cn\x0Cn\x0C~\x0C~\x0C\x88\x0C~\x0C~\x0C\x98\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xB8\x0C\xB8\x0C\xB8\x0C\xB8\x0C\xBF\x0C\xCF\x0C\xB8\x0C\xB8\x0C\xBF\x0C\xB8\x0C\xB8\x0C\xC7\x0C\xD7\x0C\xE0\x0C\xB8\x0C\xB8\x0C\xB8\x0C\xD7\x0C\xB8\x0C\xB8\x0C\xB8\x0C\xE8\x0C\xB8\x0C\xF5\x0C\xB8\x0C\xF8\x0C\x08\r\x08\r\x08\r\x08\r\x08\r\x12\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r\"\r2\r5\rE\rE\rE\rE\rJ\rX\rh\rr\r\x82\r\x8D\r\x9D\r\xA9\r\xB9\r\xC5\r\xD5\r\xD5\r\xD5\r\xD5\r\xD5\r\xD7\r\xDB\r\xDB\r\xEB\r\xF1\r\x01\x0E\x01\x0E\x01\x0E\x01\x0E\x01\x0E\x08\x0E\x01\x0E\x01\x0E\x06\x0E\"\r\"\r\"\r\"\r\x18\x0E(\x0E)\x0E,\x0E,\x0E<\x0EL\x0EN\x0EW\x0Eg\x0Eg\x0Ek\x0Eg\x0Em\x0E}\x0E\xD5\r\xD5\r\x8D\x0E\x91\x0E\xA1\x0E\xA1\x0E\xA1\x0E\xA2\x0E\xA1\x0E\xA4\x0E\xB3\x0E\xB3\x0E\xA3\x0Es\x01\xC3\x0E\xF2\n\xF2\n\xF2\n\xD3\x0E\xD3\x0E\xD3\x0E\xD3\x0E\xD6\x0E\xD3\x0E\xD3\x0E\xD3\x0E\xE6\x0E\xE6\x0E\xE6\x0E\xE6\x0E\xF6\x0E\xF6\x0E\xF6\x0E\x02\x0F\x12\x0F\x12\x0F\x12\x0F\x1A\x0F\x18\x0F*\x0F*\x0F*\x0F:\x0F~\x0C~\x0CJ\x0FZ\x0Fj\x0Fy\x0F\x82\x0F\xF3\0\xF3\0\x92\x0F\xF3\0\xF3\0\x9E\x0F\xAC\x0F\xB7\x0F\xF3\0\xF3\0\xF3\0\xC0\x0Fs\x01s\x01s\x01s\x01\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xD1\x01\xCF\x0F\xD1\x01\xD1\x01\xCF\x0F\xDF\x0F\xD1\x01\xEE\x0F\xD1\x01\xD1\x01\xD1\x01\xE0\x01\xE0\x01\xF8\x0F\xD1\x01\x08\x10\x18\x10\0\0\0\0\0\0\0\0\0\0&\x105\x10E\x10U\x10\0\0\0\0e\x10s\x01s\x01u\x10\0\0\0\0\x85\x10\xA3\0\x97\0\0\0\xF3\0\xF3\0\x95\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA5\x10\xF2\n\xB5\x10\xF2\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\xC5\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD5\x10\0\0\xDF\x10\0\0\0\0\0\0\0\0\0\0\0\0\xEF\x10\xEF\x10\xEF\x10\xEF\x10\xEF\x10\xEF\x10\xF3\0\xF3\0\xFF\x10\xFF\x10\xFF\x10\xFF\x10\xFF\x10\xFF\x10\xFF\x10\x0B\x11~\x0C~\x0C\x88\x0C\x1B\x11\x1B\x11\x1B\x11#\x112\x11\xB8\x0CB\x11R\x11R\x11R\x11R\x11&\x02&\x02\0\0\0\0\0\0\0\0\0\0b\x11\xF2\n\xF2\nr\x11x\x11r\x11r\x11r\x11r\x11r\x11\x84\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11\x94\x11\xF2\n\0\0\xA4\x11\0\0\xB3\x11\xC3\x11\xD3\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xDD\x11\xED\x11\xEE\x11\xEE\x11\xEE\x11\xEE\x11\xF3\x11\x03\x12\x08\x12\x08\x12\x18\x12\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\x19\x12\0\0\x08\x12\x08\x12\0\0\0\0)\x12\xEE\x11\xA8\x0C\x19\x12\0\0\0\0\0\0\0\0\xA8\x0C9\x12\0\0\0\0\0\0\0\0\0\0\xEE\x11\xEE\x11\xEF\x11\xEE\x11\xEE\x11\xEE\x11\xEE\x11\xEE\x11I\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11\0\0\0\0\0\0\0\0Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12Y\x12\\\x12Y\x12Y\x12Y\x12b\x12r\x12r\x12r\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x82\x12\x86\x12\xF2\n&\x02&\x02&\x02&\x02&\x02&\x02\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x9E\x12\0\0\0\0?\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xAE\x12\xF3\0\xF3\0\xF3\0\xB9\x12\xC9\x12\xF2\n\xD7\x12\xE7\x12\xE7\x12\xEA\x12\xA5\x10\xFA\x12\xFA\x12\xFA\x12\x02\x13\x12\x13\x12\x13\x12\x13\x12\x13\x1C\x13\x18\x13\xC9\x05\xC9\x05,\x13,\x13.\x13>\x13>\x13J\x13\xA8\x0CZ\x13j\x13j\x13j\x13j\x13l\x13|\x13n\x0C\x8C\x13\x9C\x13\x9C\x13\x9C\x13\xA5\x13\x9E\x13\xB5\x13n\x0Cn\x0C\xC5\x13\xC5\x13\xC5\x13\xC5\x13\xD2\x13\xD7\x13\xE7\x13\xF0\x13\xFF\x13\x07\x14R\x11\xF3\0\xF3\0\xC7\0\x17\x14\x08\r\x08\r\x08\r\x08\r\x08\r\xE7\x13\xE7\x13\xE9\x13\xED\x13\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C\xA8\x0C'\x14\xA8\x0C7\x14\xA8\x0C\xA8\x0CB\x14\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\nr\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11R\x14r\x11r\x11r\x11r\x11r\x11r\x11V\x14\xF2\n\xF2\nf\x14s\x14\xE8\x02\x80\x14\x90\x14\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xA0\x14\x85\x05\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xB0\x14\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\x86\x05\xC0\x03\xC0\x03\xC0\x14\xF2\n\xF2\n\xC0\x03s\x01\xA5\x10\xD0\x14\0\0\0\0\xE0\x14\xE9\x14\xF9\x14\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xC0\x03\xFF\x14\r\x15\0\0@\0P\0@\0P\0\x17\x15\xED\x11\xEE\x11\xF0\x11\xA8\x0C\x19\x12'\x15/\x15?\x15N\x15^\x15k\x15c\x15p\x15\x7F\x15\x7F\x15\xF2\n\xF2\nk\x15k\x15k\x15k\x15k\x15k\x15k\x15\x82\x15\x9E\x10\0\0\0\0\x92\x15\xD1\x01\xD1\x01\xD1\x01\xD1\x01\xD6\x01\x99\x15\xA9\x15\xF2\n\xF2\n\0\0\0\0\xB9\x15\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xC9\x15\xCC\x15\xDC\x15\xDC\x15\xDC\x15\xEB\x15\xFB\x15\xFF\x15\x0F\x16\x0F\x16\x1B\x16+\x160\x16@\x16@\x16E\x16U\x16W\x16g\x16g\x16s\x16}\x16\xF2\n\xF2\n\x8D\x16\x8D\x16\x8D\x16\x8D\x16\x8D\x16\x9D\x16\x9D\x16\x9D\x16\xAD\x16\xAF\x16\xB3\x16\xC3\x16\xC3\x16\xCF\x16\xC3\x16\xC7\x16\xDF\x16\xDF\x16\xE7\x16\xF7\x16\xF7\x16\xF7\x16\x03\x17\x13\x17\x13\x17 \x17$\x172\x17B\x17B\x17B\x17N\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17^\x17g\x17^\x17h\x17f\x17\xF2\nx\x17\xF3\0\xF3\0}\x17\xF2\n\xF2\n\xF2\n\xF2\n\x8D\x17\x97\x17\x97\x17\xA1\x17\xB1\x17\xBB\x17\xCB\x17\xCB\x17\xDB\x17\xDC\x17\xEB\x17\xF2\n\xF2\n\xF2\n\xFB\x17\x08\x18\x18\x18\x1C\x18,\x182\x18\xF2\n\xF2\n\xF2\n\xF2\nB\x18B\x18R\x18Z\x18R\x18d\x18R\x18R\x18t\x18\x80\x18\x89\x18\x93\x18\xA2\x18\xA2\x18\xB2\x18\xB2\x18\xC2\x18\xC2\x18\xF2\n\xF2\n\xD2\x18\xD2\x18\xDB\x18\xE6\x18\xF6\x18\xF6\x18\xF6\x18\0\x19\x10\x19\x1A\x19*\x197\x19G\x19U\x19b\x19\xF2\n\xF2\n\xF2\n\xF2\n\xF2\nr\x19r\x19r\x19r\x19y\x19\xF2\n\xF2\n\xF2\n\x89\x19\x89\x19\x89\x19\x96\x19\x89\x19\x89\x19\x89\x19\xA6\x19\xB6\x19\xB6\x19\xBE\x19\xBC\x19\xCE\x19\xCE\x19\xD8\x19\xCE\x19\xE2\x19\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xC0\x03\x89\x05\xF2\x19\xF2\x19\xF8\x19\x04\x1A\x12\x1A\xF2\n\xF2\n\xA4\x14\"\x1A\"\x1A*\x1A:\x1A:\x1A@\x1A\xF2\nP\x1AV\x1A\xF2\n\xF2\nf\x1Aj\x1A\xF2\nz\x1A\x83\x1A\x93\x1A\x93\x1A\x93\x1A\x93\x1A\x95\x1A\x91\x1A\x93\x1A\x9D\x1A\xAD\x1A\xAD\x1A\xAD\x1A\xAD\x1A\xBA\x1A\xCA\x1A\xD1\x1A\xD0\x1A\xE1\x1A\xE1\x1A\xE1\x1A\xEC\x1A\xF4\x1A\x04\x1B\x04\x1B\r\x1B\x1D\x1B\x1D\x1B\x1D\x1B\x1D\x1B\x1D\x1B\x1D\x1B\x1B\n-\x1B=\x1BK\x1B=\x1B=\x1BY\x1B\xF2\n\xF2\n\xF2\ni\x1Bx\x1B\x87\x1B\x97\x1B\x97\x1B\x97\x1B\x9C\x1B\x9D\x1B\xAD\x1B\xB9\x1B\xC0\x1B\xCF\x1B\xDB\x1B\xE8\x1B\xF5\x1B\xFD\x1B\r\x1C\x1D\x1C\x1D\x1C'\x1C6\x1CB\x1CH\x1C\xF2\nX\x1CX\x1CX\x1CX\x1CX\x1C\\\x1Cj\x1C\xF2\nz\x1Cz\x1Cz\x1Cz\x1C\x82\x1C\x80\x1C\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\x92\x1C\x92\x1C\x92\x1C\x9C\x1C\x92\x1C\x94\x1C\xF2\n\xF2\n\xAC\x1C\xAC\x1C\xAC\x1C\xAC\x1C\xB7\x1C\xB2\x1C\x04\x0E\xF2\n\xC7\x1C\xC7\x1C\xC7\x1C\xCD\x1C\xCD\x1Cn\x0C\xDD\x1C\xF2\n\xED\x1C\xF2\x1C\xFF\x1C\xED\x1C\x04\x1D\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\x14\x1D\x14\x1D\x14\x1D\x18\x1D\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n(\x1D(\x1D(\x1D(\x1D(\x1D5\x1DE\x1DQ\x1DY\x1Dc\x1Dn\x1D~\x1D\xF2\n\xF2\n\xF2\n\xF2\n\x8E\x1D\x98\x1D\x98\x1D\x8E\x1D\xA3\x1D\xF2\n\xB3\x1D\xB3\x1D\xB3\x1D\xB3\x1D\xBB\x1D\xCB\x1D\xCB\x1D\xCB\x1D\xCB\x1D\xCB\x1D\xD8\x1D\"\r\xE8\x1D\xE8\x1D\xE8\x1D\xEF\x1D\xFF\x1D\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\x0F\x1E\x0F\x1E\x1D\x1E\x15\x1E-\x1E7\x1E7\x1E/\x1EA\x1E7\x1E:\x1EQ\x1EQ\x1EO\x1EY\x1Eb\x1E\xF2\n\xF2\n\xF2\n\xF2\nr\x1E}\x1E}\x1E\x86\x1E\x95\x1E\xA5\x1E\xB5\x1E\xBF\x1E\xC0\x1E\xCD\x1E\xDD\x1E\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xED\x1E\xF4\x1E\x04\x1F\x13\x1F\x04\x1F\x18\x1F\x04\x1F&\x1F\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n6\x1F\x8A\x08\x8A\x08\x8A\x08F\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1F\\\x1F\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\nV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FW\x1Fa\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1FV\x1Fb\x1F\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\nr\x1Fr\x1Fr\x1Fr\x1Fr\x1Fr\x1F\x7F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x99\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x8F\x1F\x94\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xB2\x1F\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xC2\x1F\xC2\x1F\xC2\x1F\xC8\x1F\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x96\x12\x9D\x12\xD8\x1F\xD9\x1F\xDE\x1F\xEE\x1F\xEE\x1F\xEE\x1F\xEE\x1F\xEF\x1F\xF4\x1F\x04 \x06 \x0E \x1E \x1E \x1E \x1E ( 8 @ H \x1E \xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\nX X X ^ \xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\nn n n n n s \xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\x83 \x83 \x83 \x83 \x88 \x83 \x83 \x83 \x97 \x83 \xF2\n\xF2\n\xF2\n\xF2\n\xA7 \xB7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xCF \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xC7 \xDF \xDF \xDF \xDF \xDF \xDF \xDF \xDF \xDF \xDF \xDF \xDF \xDF \xDF \xDF \xDF \xE9 \xF2\n\xEF \xCE \xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xFF \x0F!\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\xD4\x11\x1F!-!\xF2\n=!I!Y!Y!Y!Y!Y!Y!Y!Y!Y!Y!Y!Y!Y!Y!Y!]!\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\nm!m!m!m!m!m!r!p!t!\x84!\x94!\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA5\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94!\xF2\n\xF2\n\xF2\n\xF2\ns\x01s\x01\xA4!s\x01\xAB!\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94!\xF2\n\xF2\n\xF2\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBB!\0\0\0\0\xCB!\0\0\0\0\0\0\xD4!h\x01\xE4!\0\0\xF0!\0\0\0\0\0\0\xB5\x10\xF2\n\xD1\x01\xD1\x01\xD1\x01\xD1\x01\0\"\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\0\0\x94!\0\0\x94!\0\0\0\0\0\0\0\0\0\0G\x15\0\0\x10\"\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\0\0\0\0\0\0\0\0\0\0&\x10\0\0\0\0\0\0 \"0\">\"K\"\0\0\0\0\0\0U\"b\"\0\0\xE6\x14p\"\x7F\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x89\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\"\0\0\0\0\0\0\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x99\"\x9D\"\xA9\"\xB3\"\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF3\0\xC3\"\xD2\"\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xE2\"\xEA\"\xF8\"&\x02&\x02&\x02\x08#\xF2\n\x16#\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n&#&#)#(#,#\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n<#=#\xF2\nM#M#M#S#\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\nc#c#i#\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\ny#y#~#\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\x8E#\xB9\x0C\x9E#\x9E#\x9E#\x9E#\x9E#\x9E#\x9E#\x9E#\x9E#\x9E#\x9E#\x9E#\xA9#\xB2#\xF2\n\xF2\n\xC2#\xC2#\xC2#\xC2#\xC6#\xC8#\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\r\x15\0\0\0\0\0\0\xD8#\xF2\n\xF2\n\xF2\n\xF2\n\r\x15\0\0\0\0b\x11\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xFA\x14\xC0\x03\xE7#\xF4#\x02$\x12$ $($8$C$R$C$\xF2\n\xF2\n\xF2\n`$\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\0\0\0\0\xFF\x15\0\0\0\0\0\0\0\0\0\0\0\0\x94!E\x10\r\x15\r\x15\r\x15\0\0\xBB!\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\x11\xF2\n\xF2\n\xF2\n\xAF\x10\0\0p$\0\0\0\0\xFF\x15\x10\"q$\xBB!\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81$\x99\x15\x99\x15\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82$\0\0\0\0\0\0\0\0\0\0\xA5\x10\xFF\x15e\x10\xFF\x15\0\0\0\0\0\0\x8D$\xA5\x10\0\0\0\0\x8D$\0\0b\x11\xFF\x15q$\xF2\n\xF2\n\xF2\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x94!b\x11\x99\x15\x9D$\0\0\0\0\0\0\x12\"\x82\"\xA5\x10\x10\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xE0\x14\0\0\0\0\0\0\0\0\0\0\xA5\x10r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11\xF2\n\xF2\nr\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11V\x14r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11R\x14r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11\xB7 r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11\xAD$r\x11r\x11r\x11r\x11r\x11R\x14\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\nr\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11U\x14r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11r\x11\xF2\n\xF2\n\xF2\n\xF2\n\xF2\nd\x10\xF2\n\0\0\0\0\0\0\0\0\0\0\0\0\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\n\xF2\ns\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01s\x01\xF2\ny\0\x91\0\xB1\0\xD1\0\xF1\0\x11\x011\x01Q\x01q\x01\x91\x01\xB1\x01\xC9\x01\xE9\x01\t\x02)\x02I\x02i\x02\x82\x02\xA0\x02\x82\x02\xC0\x02\xD0\x02\xF0\x02\x10\x030\x03P\x03p\x03p\x03p\x03p\x03p\x03p\x03t\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03\x94\x03\x94\x03\xAC\x03\xCA\x03\xEA\x03\n\x04*\x04*\x04*\x04*\x04*\x04*\x04*\x04*\x04*\x04*\x04*\x040\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04`\x04z\x04\x98\x04\xB8\x04\xD8\x04\xF8\x04\x18\x058\x05X\x05x\x05\x98\x05\xB2\x05\xD2\x05\xF2\x05\x12\x062\x06R\x06r\x06\x92\x06\xAD\x06\xCD\x06\xD4\x06\xF4\x06P\x04P\x04P\x04P\x04\t\x07)\x07)\x07D\x07)\x07)\x07)\x07)\x07)\x07J\x07j\x07\x86\x07P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04\x96\x07P\x04P\x04P\x04\xB6\x07\xD3\x07\xEC\x07\x08\x08(\x08(\x08(\x08(\x08(\x08(\x08(\x08(\x08)\x08(\x08I\x08\\\x08P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04m\x08\x8D\x08\xA4\x08P\x04P\x04P\x04P\x04\xC4\x08P\x04P\x04P\x04P\x04P\x04P\x04\xE4\x08\xF9\x08\x19\t9\tY\to\t\x8F\t\xA7\tP\x04\xB7\t\xD7\t\xEE\t\x01\n!\nA\nP\x04Z\nz\n\x9A\n\xBA\n\x82\x02\xCD\n\xED\n\x08\x0BP\x04P\x04p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03(\x0Bp\x03p\x03p\x03p\x03p\x03p\x03p\x038\x0BW\x0Bp\x03p\x03p\x03p\x03p\x03p\x03p\x03m\x0Bp\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03x\x0Bp\x03\x97\x0BP\x04P\x04P\x04P\x04p\x03\x9B\x0BP\x04P\x04p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03\xBB\x0Bp\x03p\x03p\x03p\x03p\x03p\x03p\x03\xD0\x0BP\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04\xF0\x0B") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\0\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x0E\0\x0E\0\x0E\0\x0E\0\0\0\x0E\0\x0E\0\x0E\0g\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\0\0\x0E\0g\0g\0g\0g\0\x0E\0\0\0\x0E\0\0\0\x0E\0\x0E\0\x0E\0g\0\x0E\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x01\0\x01\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0g\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0g\0g\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0g\0g\0\x03\0\x03\0\x03\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0g\0g\0g\0g\0g\0g\0g\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0g\0g\0g\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\x02\0\x02\0\x02\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x01\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0g\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0g\0g\0\"\0\"\0\"\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0g\0g\0W\0W\0W\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0g\0g\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0g\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0g\0g\0T\0g\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0g\0g\0g\0g\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0g\0g\0g\0g\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\x01\0\x01\0\x01\0\x01\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\0\0\0\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\x04\0\x04\0\x04\0\x04\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0g\0\x04\0\x04\0g\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0\x04\0g\0g\0g\0\x04\0\x04\0\x04\0\x04\0g\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0g\0\x04\0\x04\0g\0g\0\x04\0\x04\0\x04\0\x04\0g\0g\0g\0g\0g\0g\0g\0g\0\x04\0g\0g\0g\0g\0\x04\0\x04\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0\x10\0\x10\0\x10\0g\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0g\0g\0g\0g\0\x10\0\x10\0g\0g\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0g\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0g\0\x10\0\x10\0g\0\x10\0\x10\0g\0\x10\0\x10\0g\0g\0\x10\0g\0\x10\0\x10\0\x10\0g\0g\0g\0g\0\x10\0\x10\0g\0g\0\x10\0\x10\0\x10\0g\0g\0g\0\x10\0g\0g\0g\0g\0g\0g\0g\0\x10\0\x10\0\x10\0\x10\0g\0\x10\0g\0g\0g\0g\0g\0g\0g\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0g\0g\0\x0F\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x0F\0\x0F\0\x0F\0\x0F\0g\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0g\0g\0g\0g\0g\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0\x1F\0\x1F\0\x1F\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0\x1F\0\x1F\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0\x1F\0g\0g\0g\0g\0g\0g\0g\0\x1F\0\x1F\0\x1F\0g\0g\0g\0g\0\x1F\0\x1F\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0g\0g\0g\0g\0g\0g\0g\0#\0#\0g\0#\0#\0#\0#\0#\0#\0g\0g\0g\0#\0#\0#\0g\0#\0#\0#\0#\0g\0g\0g\0#\0#\0g\0#\0g\0#\0#\0g\0g\0g\0#\0#\0g\0g\0g\0#\0#\0#\0g\0g\0g\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0g\0g\0g\0g\0#\0#\0#\0g\0g\0g\0#\0#\0#\0g\0#\0#\0#\0#\0g\0g\0#\0g\0g\0g\0g\0g\0g\0#\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0g\0g\0g\0g\0g\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0g\0$\0$\0$\0g\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0g\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0g\0g\0$\0$\0$\0$\0$\0g\0$\0$\0$\0g\0$\0$\0$\0$\0g\0g\0g\0g\0g\0g\0g\0$\0$\0g\0$\0$\0$\0g\0g\0$\0g\0g\0$\0$\0$\0$\0g\0g\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0g\0g\0g\0g\0g\0g\0g\0$\0$\0$\0$\0$\0$\0$\0$\0$\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0g\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0\x15\0g\0g\0g\0g\0g\0g\0g\0\x15\0\x15\0g\0g\0g\0g\0g\0g\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0\x15\0g\0g\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0g\0\x1A\0\x1A\0\x1A\0g\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0g\0\x1A\0\x1A\0\x1A\0g\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0g\0g\0g\0g\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0g\0g\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0g\0!\0!\0!\0g\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0g\0g\0g\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0g\0!\0!\0!\0!\0!\0!\0!\0!\0!\0g\0!\0g\0g\0!\0!\0!\0!\0!\0!\0!\0g\0g\0g\0!\0g\0g\0g\0g\0!\0!\0!\0!\0!\0!\0g\0!\0g\0!\0!\0!\0!\0!\0!\0!\0!\0g\0g\0g\0g\0g\0g\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0g\0g\0!\0!\0!\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0g\0g\0g\0g\0\0\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x18\0\x18\0g\0\x18\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0\x18\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0\x18\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0g\0\x18\0\x18\0\x18\0\x18\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0g\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0g\0g\0g\0g\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0g\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0g\0'\0'\0'\0'\0'\0'\0'\0\0\0\0\0\0\0\0\0'\0'\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0g\0\x0C\0g\0g\0g\0g\0g\0\x0C\0g\0g\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\0\0\x0C\0\x0C\0\x0C\0\x0C\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0g\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0g\0g\0g\0g\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0g\0g\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0g\0g\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0g\0g\0g\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\0\0\0\0\0\0 \0 \0 \0 \0 \0 \0 \0 \0 \0g\0g\0g\0g\0g\0g\0g\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0g\0g\0g\0g\0g\0g\0g\0g\0g\0*\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0-\0-\0-\0-\0-\0-\0-\0-\0-\0-\0-\0-\0-\0g\0-\0-\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0g\0g\0g\0g\0g\0g\0\x1B\0\x1B\0\0\0\0\0\x1B\0\0\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0g\0g\0g\0g\0g\0g\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0g\0g\0g\0g\0g\0g\0g\0(\0(\0(\0(\0(\0(\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\0g\0g\0g\0g\x000\0g\0g\0g\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0g\0g\0g\0g\0g\0g\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0g\0g\0g\0;\0;\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\0g\0g\x007\x007\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0g\0g\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0g\0g\0g\0g\0g\0g\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0g\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0g\0>\0>\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0g\0g\0g\0g\0g\0g\0g\0g\0?\0?\0?\0?\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0g\0g\0g\0R\0R\0R\0R\0R\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0g\0g\0g\0g\0g\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0g\0g\0\x0C\0\x0C\0\x0C\0q\0q\0q\0q\0q\0q\0q\0q\0g\0g\0g\0g\0g\0g\0g\0g\0\x01\0\x01\0\x01\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\x01\0\x01\0\0\0g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x08\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x0E\0\x0E\0\x0E\0\x19\0\x19\0\x19\0\x19\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x08\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0\x0E\0g\0\x0E\0g\0\x0E\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0\x0E\0\x0E\0\x0E\0g\0g\0\x0E\0\x0E\0\x0E\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x01\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\x0E\0\0\0\0\0\0\0\x19\0\x19\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0\0\0\0\0\0\0\0\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0g\0g\0g\0g\0g\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0g\0g\0g\0g\0g\0g\0g\0<\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0<\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0g\0\x11\0\x11\0\x11\0\x11\0\x11\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\x11\0\0\0\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x01\0\x01\0\x01\0\x01\0\x12\0\x12\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x11\0\x11\0\x11\0\x11\0\0\0\0\0\0\0\0\0g\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0g\0g\0\x01\0\x01\0\0\0\0\0\x14\0\x14\0\x14\0\0\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\0\0\0\0\x16\0\x16\0\x16\0g\0g\0g\0g\0g\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0g\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\0\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0g\0g\0g\0g\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0g\0g\0g\0g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0\x19\0\x19\0g\0\x19\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0g\0g\0g\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0g\0g\0g\0g\0g\0g\0g\0g\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0g\0g\0g\0g\0g\0g\0g\0g\0o\0o\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0\0\0O\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0n\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0g\0g\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0g\0\0\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0g\0g\0g\0g\0N\0N\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0g\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0g\0g\0g\0g\0g\0g\0g\0g\0g\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0g\0g\0B\0B\0B\0B\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x0E\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0g\0g\0g\0g\0\x12\0\x12\0\x12\0\x12\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0g\0g\0g\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0g\0g\0g\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0g\0g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x03\0\x03\0\x03\0\x03\0\x03\0g\0g\0g\0g\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0g\0\x13\0g\0\x13\0\x13\0g\0\x13\0\x13\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x02\0\x02\0\x02\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0g\0g\0g\0g\0g\0g\0\x02\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x08\0\x08\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0g\0g\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0g\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0g\0\x12\0\x12\0\x12\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0g\0g\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\0g\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\0g\x001\x001\0g\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0\x0E\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0g\0g\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0g\0g\0g\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x1E\0\x1E\0\x1E\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0g\0g\0g\0g\0g\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0g\0g\0g\0g\0g\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0g\x005\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0g\0g\0g\0g\0=\0=\0=\0=\0=\0=\0=\0=\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0g\0g\0g\0g\0g\0g\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0g\0g\0g\0g\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0g\0g\0g\0g\0g\0g\0g\0g\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x9F\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0g\0\xC5\0\xC5\0\xC5\0\xC5\0g\0\xC5\0\xC5\0g\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0g\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0g\0\xC5\0\xC5\0g\0g\0g\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0g\0g\0/\0/\0/\0/\0/\0/\0g\0g\0/\0g\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0g\0/\0/\0g\0g\0g\0/\0g\0g\0/\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0g\0t\0t\0t\0t\0t\0t\0t\0t\0t\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0g\0g\0g\0g\0g\0g\0g\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0g\0\xA2\0\xA2\0g\0g\0g\0g\0g\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0g\0g\0g\0[\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0g\0g\0g\0g\0g\0l\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0g\0g\0g\0g\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\09\09\09\09\0g\09\09\0g\0g\0g\0g\0g\09\09\09\09\0g\09\09\09\0g\09\09\09\09\09\09\09\09\09\09\09\09\09\09\09\09\0g\0g\09\09\09\0g\0g\0g\0g\09\09\09\09\09\09\09\09\09\0g\0g\0g\0g\0g\0g\0g\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0g\0g\0g\0g\0y\0y\0y\0y\0y\0y\0y\0g\0g\0g\0g\0g\0g\0g\0g\0g\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0g\0g\0g\0u\0u\0u\0u\0u\0u\0u\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0g\0g\0}\0}\0}\0}\0}\0}\0}\0}\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0g\0g\0g\0g\0g\0z\0z\0z\0z\0z\0z\0z\0z\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0g\0g\0g\0g\0g\0g\0g\0{\0{\0{\0{\0g\0g\0g\0g\0g\0g\0g\0g\0g\0{\0{\0{\0{\0{\0{\0{\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0g\0g\0g\0g\0g\0g\0g\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0L\0L\0L\0g\0g\0g\0g\0g\0g\0g\0L\0L\0L\0L\0L\0L\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0g\0g\0g\0g\0g\0g\0g\0g\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0g\0g\0g\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0g\0g\0g\0g\0g\0g\0g\0g\0\xC9\0\xC9\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0g\0\xC0\0\xC0\0\xC0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x02\0\x02\0\x02\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0g\0g\0g\0g\0g\0g\0g\0g\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0g\0g\0g\0g\0g\0g\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0g\0g\0g\0g\0g\0g\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0g\0g\0g\0g\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0g\0g\0g\0g\0g\0g\0g\0g\0g\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0g\0g\0g\0g\0g\0g\0g\0g\0g\0A\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0x\0g\0g\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0g\0g\0g\0g\0g\0g\0g\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0g\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0g\0g\0g\0g\0g\0g\0g\0g\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0!\0!\0!\0!\0!\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0g\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0g\0\xA4\0g\0\xA4\0\xA4\0\xA4\0\xA4\0g\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0g\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0g\0g\0g\0g\0g\0g\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0g\0g\0g\0g\0g\0g\0\x89\0\x89\0\x89\0\x89\0g\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0g\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0\x89\0\x89\0g\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0\x01\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0g\0\x89\0\x89\0g\0g\0\x89\0\x89\0\x89\0g\0g\0g\0g\0g\0g\0\x89\0g\0g\0g\0g\0g\0\x89\0\x89\0\x89\0\x89\0g\0g\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0g\0\xCF\0g\0g\0\xCF\0g\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0g\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0g\0\xCF\0g\0g\0\xCF\0g\0\xCF\0\xCF\0\xCF\0\xCF\0g\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0g\0\xCF\0\xCF\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0g\0\xAA\0\xAA\0\xAA\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0g\0g\0g\0g\0g\0g\0g\0g\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0g\0g\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0g\0g\0g\0g\0g\0g\0\x1C\0\x1C\0\x1C\0\x1C\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0g\0g\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0g\0g\0g\0g\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x92\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0g\0g\0\xBE\0g\0g\0\xBE\0\xBE\0\xBE\0\xBE\0g\0\xBE\0\xBE\0g\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0g\0\xBE\0\xBE\0g\0g\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0g\0g\0g\0g\0g\0g\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0g\0g\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0g\0g\0g\0g\0g\0g\0g\0g\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0g\0g\0g\0g\0g\0g\0g\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0g\0g\0g\0g\0g\0g\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0g\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0g\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0g\0\xAF\0\xAF\0g\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0g\0g\0g\0\xAF\0g\0\xAF\0\xAF\0g\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0g\0g\0g\0g\0g\0g\0g\0g\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0g\0g\0g\0g\0g\0g\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0g\0\xB3\0\xB3\0g\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0g\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0g\0g\0g\0g\0g\0g\0g\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0g\0g\0g\0g\0g\0g\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0g\0g\0g\0g\0g\0g\0g\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0g\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0g\0g\0g\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0g\0g\0g\0g\0g\0\x83\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0#\0#\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0#\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0g\0g\0g\0g\0g\0g\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0g\0g\0g\0g\0\x95\0\x95\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0g\0g\0g\0g\0g\0g\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0g\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0g\0g\0g\0g\0g\0K\0K\0K\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0g\0g\0g\0g\0g\0g\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0g\0g\0g\0g\0g\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0g\0g\0g\0g\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0g\0g\0g\0g\0g\0g\0g\0\\\0\x9A\0\x96\0\x11\0\x11\0\xBF\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x11\0\x11\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0g\0g\0g\0g\0g\0g\0g\0g\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xBF\0\x16\0\x16\0\x16\0\x16\0g\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0g\0\x16\0\x16\0g\0\x16\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x16\0\x16\0\x16\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x14\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x14\0\x14\0\x14\0g\0g\0\x16\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x16\0\x16\0\x16\0\x16\0g\0g\0g\0g\0g\0g\0g\0g\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0g\0g\0g\0g\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0g\0g\0g\0g\0g\0g\0g\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0g\0g\0\x87\0\x87\0\x87\0\x87\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\0\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\x01\0\0\0\0\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0g\0g\0\0\0g\0g\0\0\0\0\0g\0g\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0g\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0g\0g\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0g\0\0\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0g\0g\08\08\08\08\08\08\08\0g\08\08\08\08\08\08\08\08\08\0g\0g\08\08\08\08\08\0g\08\08\0g\08\08\08\08\08\0g\0g\0g\0g\0g\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x08\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0g\0g\0g\0g\0\xBA\0\xBA\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0g\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0g\0g\0g\0g\0g\0\xBC\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0g\0g\0g\0g\0g\0g\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0g\0g\0g\0g\0\xCC\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0\x0B\0g\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0g\0g\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0g\0g\0g\0g\0\xA7\0\xA7\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x02\0\x02\0g\0\x02\0g\0g\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0g\0\x02\0g\0g\0g\0g\0\x02\0g\0g\0g\0g\0\x02\0g\0\x02\0g\0\x02\0g\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0g\0\x02\0g\0g\0\x02\0g\0\x02\0g\0\x02\0g\0\x02\0g\0\x02\0\x02\0g\0\x02\0g\0g\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0g\0g\0g\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x14\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0\0\0\x11\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0") }, icu::properties::props::Script::Unknown));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumScriptV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumScriptV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_SCRIPT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumScriptV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumScriptV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumScriptV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumScriptV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_script_v1 as impl_property_enum_script_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_sentence_break_v1.rs.data b/vendor/icu_properties_data/data/property_enum_sentence_break_v1.rs.data
new file mode 100644
index 00000000..9b4168fe
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_sentence_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumSentenceBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 13992B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_sentence_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_SENTENCE_BREAK_V1: &'static <icu::properties::provider::PropertyEnumSentenceBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 918016u32, shifted12_high_start: 225u16, index3_null_offset: 747u16, data_null_offset: 14u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0~\0\xBE\0\xFE\0-\x01l\x01\xAC\x01\xE4\x01#\x02O\x02\x8F\x02\xCF\x02\xDF\x02\x1F\x03P\x03\x8D\x03\xBD\x03\xFB\x03;\x04K\x04|\x04\xB3\x04\xF1\x041\x05f\x05\x97\x05\xC3\x05\x03\x068\x06R\x06\x92\x06\xD2\x06\x12\x07J\x07\x80\x07\xBC\x07\xFA\x079\x08w\x08\xB6\x08\xF4\x083\tq\t\xB1\t\xEF\t-\nk\n\xAB\n\xE9\n)\x0Bg\x0B\xA7\x0B\xE5\x0B%\x0Ce\x0C\xA4\x0C\xE4\x0C#\rc\r\xA3\r\xE3\r\x1E\x0E[\x0E\xC4\n\xDE\n\xEC\n\x02\x0B\"\x0BA\x0B^\x0B}\x0B\x9D\x0B\x9D\x0B\xAA\x0B\xC7\x0B\xE7\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\xF9\x0B\x19\x0C\0\0\x10\0 \x000\0@\0P\0`\0p\0~\0\x8E\0\x9E\0\xAE\0\xBE\0\xCE\0\xDE\0\xEE\0\xFE\0\x0E\x01\x1E\x01.\x01-\x01=\x01M\x01]\x01l\x01|\x01\x8C\x01\x9C\x01\xAC\x01\xBC\x01\xCC\x01\xDC\x01\xE4\x01\xF4\x01\x04\x02\x14\x02#\x023\x02C\x02S\x02O\x02_\x02o\x02\x7F\x02\x8F\x02\x9F\x02\xAF\x02\xBF\x02\xCF\x02\xDF\x02\xEF\x02\xFF\x02\xDF\x02\xEF\x02\xFF\x02\x0F\x03\x1F\x03/\x03?\x03O\x03P\x03`\x03p\x03\x80\x03\x8D\x03\x9D\x03\xAD\x03\xBD\x03\xBD\x03\xCD\x03\xDD\x03\xED\x03\xFB\x03\x0B\x04\x1B\x04+\x04;\x04K\x04[\x04k\x04K\x04[\x04k\x04{\x04|\x04\x8C\x04\x9C\x04\xAC\x04\xB3\x04\xC3\x04\xD3\x04\xE3\x04\xF1\x04\x01\x05\x11\x05!\x051\x05A\x05Q\x05a\x05f\x05v\x05\x86\x05\x96\x05\x97\x05\xA7\x05\xB7\x05\xC7\x05\xC3\x05\xD3\x05\xE3\x05\xF3\x05\x03\x06\x13\x06#\x063\x068\x06H\x06X\x06h\x06R\x06b\x06r\x06\x82\x06\x92\x06\xA2\x06\xB2\x06\xC2\x06\xD2\x06\xE2\x06\xF2\x06\x02\x07\x12\x07\"\x072\x07B\x07J\x07Z\x07j\x07z\x07\x80\x07\x90\x07\xA0\x07\xB0\x07\xBC\x07\xCC\x07\xDC\x07\xEC\x07\xFA\x07\n\x08\x1A\x08*\x089\x08I\x08Y\x08i\x08w\x08\x87\x08\x97\x08\xA7\x08\xB6\x08\xC6\x08\xD6\x08\xE6\x08\xF4\x08\x04\t\x14\t$\t3\tC\tS\tc\tq\t\x81\t\x91\t\xA1\t\xB1\t\xC1\t\xD1\t\xE1\t\xEF\t\xFF\t\x0F\n\x1F\n-\n=\nM\n]\nk\n{\n\x8B\n\x9B\n\xAB\n\xBB\n\xCB\n\xDB\n\xE9\n\xF9\n\t\x0B\x19\x0B)\x0B9\x0BI\x0BY\x0Bg\x0Bw\x0B\x87\x0B\x97\x0B\xA7\x0B\xB7\x0B\xC7\x0B\xD7\x0B\xE5\x0B\xF5\x0B\x05\x0C\x15\x0C%\x0C5\x0CE\x0CU\x0Ce\x0Cu\x0C\x85\x0C\x95\x0C\xA4\x0C\xB4\x0C\xC4\x0C\xD4\x0C\xE4\x0C\xF4\x0C\x04\r\x14\r#\r3\rC\rS\rc\rs\r\x83\r\x93\r\xA3\r\xB3\r\xC3\r\xD3\r\xE3\r\xF3\r\x03\x0E\x13\x0E\x1E\x0E.\x0E>\x0EN\x0E[\x0Ek\x0E{\x0E\x8B\x0E\x97\x05\x97\x05f\x05\xB1\x07\x9B\x0E\xAB\x0E\xBA\x0E\xC9\x0E\xD7\x0E\xE7\x0EA\0A\0\xF7\x0E\x97\x05\x97\x05\x07\x0F\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x14\x0F$\x0F\x97\x05\x97\x05\x14\x0F\x97\x05\x97\x05\x1C\x0F,\x0F\xCD\n\x97\x05\x97\x05\x97\x05,\x0F\x97\x05\x97\x05\x97\x054\x0FD\x0F\x0E\0\x97\x05\x0E\0A\0A\0A\0A\0A\0T\x0F\0\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05d\x0F\x97\x05t\x0Fy\x0F\x97\x05\x97\x05\x97\x05\x97\x051\x0C\x98\x02\x97\x05\x89\x0F\x97\x05\x98\x0F\x97\x05\xA8\x0FE\x07\xB8\x0F\x97\x05\x97\x05\x97\x05m\x05\xCF\x02\xC8\x0F\x97\t\x0E\0\xD6\x0F\x97\t\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x98\x02\xE6\x0F\x97\x05\xED\x0F\x97\x05\x97\x05\x97\x05\x97\x05\x9B\x02\x97\x05\r\x05O\x0EO\x0E\xF9\x0F\x97\x05\x0E\x05\x9C\x02\x97\x05\x97\x05\x95\x02\x97\x05\x97\x02\xFF\x0F\x0E\0\x0E\0\x97\x05\x0F\x10\x97\x05\x97\x05\x97\x05\x1F\x10\xCF\x02/\x10\x97\t\x97\t?\x10\xCF\x02\xE2\x04\x0E\0\x0E\0\x0E\0e\x07\x97\x05\x97\x05m\x05O\x10_\x10\xC4\x02o\x10g\x07\x97\x05\x7F\x10\x92\x06\x97\x05\x97\x05k\x05\x8F\x10\x97\x05\x97\x05m\x05\x9F\x10\xAF\x10\x92\x06\x97\x05\xBC\x10\xCC\x10\x97\x05\x97\x05\xDC\x10\x0E\x003\x0E\xEC\x10\xF5\x10a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0a\0\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xFE\0\xFE\0\xFE\0\xFE\0\xFE\0\xFE\0\xFE\0\xFE\0\xFE\0\x05\x11\xFE\0\xFE\0\xFE\0\xFE\0\xFE\0\xFE\0\x14\x11$\x11\x14\x11\x14\x11$\x114\x11\x14\x11D\x11\x14\x11\x14\x11\x14\x11T\x11c\x11s\x11\x83\x11c\x11\x93\x11\xA3\x11\xB3\x11\xC3\x11\xD1\x11\x11\0\xE1\x11\xF1\x11\x01\x12\x11\x12\x0E\0\x0E\0\x0E\0\xCF\x02\xCF\x02a\x0E\x1F\x12/\x12=\x12M\x12]\x12\x0E\0A\0a\0m\x12\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0v\x12\x0E\0\x82\x12\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x8D\x12A\0a\0\x9D\x12\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xA7\x12\xB6\x12\xC0\x12\x0E\0\x0E\0\x0E\0\x0E\0\xCB\x12\x0E\0\xD5\x12\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xD8\x12\xDF\x12\x0E\0\x0E\0\x0E\0v\x12\x0E\0\xE8\x12\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0A\0A\0A\0a\0a\0a\0\xF8\x12\x07\x13\xFE\0\xFE\0\xFE\0\xFE\0\xFE\0\xFE\0\x16\x13%\x13a\0a\x005\x13\x97\x05\x97\x05\x97\x05E\x13\xC0\x02\x97\x05\x9A\x02[\x08[\x08[\x08[\x08\xCF\x02\xCF\x02U\x13\xE8\x12Y\x13i\x13w\x13\x84\x13\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x94\x13\xA2\x13\xB2\x13\xC2\x13\0\x05\x97\x05\x97\x05\x97\x05\x97\x05\xD2\x13\0\x05\x97\x05\x97\x05\x97\x05\x97\x05G\x07\xFC\x04\x97\x05\x97\x05\0\x05\x97\x05\x97\x05\x97\x05\x97\x05\r\x05\x0E\0\x97\x05\x97\x05\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x0F\x05\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\xDF\x13\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\xE0\x13\x97\x05\x9D\x08\x0E\0\xFE\0\xFE\0\xF0\x13\xFF\x13\xFE\0\x0F\x14\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x1D\x14\x0E\0\xFA\x04+\x14\xFC\0\xFE\0\xFE\0\xFE\0:\x14H\x14X\x14^\x14h\x14t\x14\x84\x14\x0E\0\x92\x14\xA0\x14\x97\x05\xAD\x14\x0E\0\x97\x05\x97\x05\x97\x05\xBD\x14h\x07\x97\x05\x97\x05m\x05\xCD\x14\x97\t\xCF\x02\xDD\x14\x92\x06\x97\x05\xED\x14\x97\x05j\x05\x8F\x10\x97\x05\x0F\x05f\x07\x97\x05\x97\x05n\x05\xFD\x14\x97\t\x0C\x15\x1C\x15\x97\x05\x97\x05h\x05,\x15<\x15L\x15\x97\x05\\\x15\x97\x05\x97\x05\x97\x05l\x15|\x15\x81\x15f\x05\x91\x15\xA0\x15\xA8\x15[\x08a\0a\0\xEA\0\x9D\x12a\0a\0a\0a\0a\0\x97\x05\x97\x05\xB8\x15\x97\t\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x9D\x02\x97\x05\x15\x05\x97\x05\x97\x05\x95\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x0E\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x02\x0E\0\x0E\0\xA0\x12\xC6\x15I\x07\xD5\x15\xE5\x15\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x9F\x02\x0E\0\xFE\x04\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05v\x0F\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\xFF\x04\x97\x05\x97\x05\x99\x02\x0E\0\x0E\0\x95\x02\xCF\x02\xF5\x15\xCF\x02\x04\x16\x0F\x16\x1F\x16.\x16\xCF\n\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05>\x16N\x160\0@\0P\0`\0^\x16m\x16\x97\x05\x97\x05c\x05\x97\x05\r\x05\x9F\x15}\x16\x0E\0\x8A\x16F\x07\x97\x05\xCD\n\x9A\x16\x0E\x05\x0E\x05\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x96\x02\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x9C\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xAA\x16\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x0F\x05\x97\x05\x97\x05\x97\x05\xBD\x02a\x0E\x0E\0\x97\x05\x97\x05\x7F\x15\x97\x05\x96\x02\x97\x05\x97\x05\xBA\x16\x97\x05\x0E\x05\x97\x05\x97\x05\xCA\x16\x1F\x05\x0E\0\x0E\0A\0A\0C\x03a\0a\0\x97\x05\x97\x05\x97\x05\x97\x05\x0E\x05\x97\tA\0A\0{\x11a\0\xDA\x16\x97\x05\x97\x05\x99\x02\x97\x05\x97\x05\x97\x05\x9D\x02\xCA\0\xCA\0\xEA\x16\xF8\x16\x06\x17\x97\x05\x97\x05\x97\x05\x9D\x02\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x9A\x02\x97\x05\x9B\x02\x99\x02\x0E\0\x16\x17a\0a\0\x1B\x17\x0E\0\x0E\0\x0E\0\x0E\0+\x17\x97\x05\x97\x055\x17\x97\x05\x9B\x02\x97\x05\x9A\x02\x97\x05\r\x05\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05D\x17\x97\x05\x9B\x02\x97\x05\x97\x02\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05T\x17\x0E\0\x0E\0\x0E\0\x0E\0c\x17=\t\x97\x05s\x17\x0E\0\x83\x17\x97\x05\x0F\x05\x97\x05\x0F\x05\x0E\0\x0E\0Z\x08\x97\x05\x93\x17\x0E\0\x97\x05\x97\x05\x97\x05\x9B\x02\x97\x05\x9B\x02\x97\x05\x9E\x02\x97\x05\x9F\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x98\x02\x0E\0\x0E\0\x0E\0A\0A\0A\0\xA3\x17a\0a\0a\0\xB3\x17\x97\x05\x97\x05\xC3\x17\x97\t\x92\x06A\0\xD3\x17a\0\xA1\x12\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\xE2\x17\x9F\x02\xF0\x17\x0E\0\x0E\0\xC3\x02\x97\x05\x0F\x05\x9C\r\x97\x05k\x05\0\x18\x0E\0\x97\x05\x10\x18\x0E\0\x0E\0\x97\x05\x9C\x02\x0E\0\x97\x05\x9A\x02g\x07\x97\x05\x97\x05i\x05 \x18\x0E\0\x8C\x060\x18g\x07\x97\x05\x97\x05?\x18M\x18\x97\x05\x98\x02\x97\tg\x07\x97\x05j\x05\xEE\x0C\\\x18\x97\x05\x97\x05l\x18g\x07\x97\x05\x97\x05n\x05|\x18\x8C\x18\x0E\0\x0E\0\x97\x05C\te\x05\x9C\x18\xAB\x18\x0E\0\x0E\0\x0E\0\xBB\x18D\x07\xCA\x18\x97\x05\x97\x05b\x05P\x0E\x97\t\xDA\x18I\x08I\x07\xE9\x18\xEF\t\xF9\x18\x07\x19\x0F\x19\x1F\x19\x97\x05\x97\x05/\x19>\x19M\x19\\\x19\x0E\0\x97\x05\x97\x05\x97\x05l\x05l\x19|\x19\x9F\x02\x0E\0\x97\x05\x97\x05\x97\x05\xCF\x02\x8C\x19\x97\t\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05b\x05\x9C\x19\xAB\x19\xB4\x19\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\xCF\x02\xC4\x19\x97\t\x0E\0\x0E\0\x97\x05\x97\x05f\x05{\x06\x97\t\xD4\x19\x97\n\x0E\0\x97\x054\x0FO\x0E\xDA\x19\x9A\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05e\x05P\x0E\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0A\0A\0a\0a\0\x97\t\x82\t\xEA\x19\xF6\x19\x97\x05\x06\x1A\x14\x1A\x97\t\x0E\0\x0E\0\x0E\0\x0E\0u\x16\x97\x05\x97\x05$\x1A3\x1A\x0E\0C\x1A\x97\x05\x97\x05P\x1A_\x1Ao\x1A\x97\x05\x97\x05g\x05\x7F\x1A\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x98\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\xBD\x02\x97\tI\x07\x97\x05b\x05/\x0E\x8F\x1A\x97\t\x0E\0\xFF\x04\x97\x05\xCD\x02.\x0E,\x15\x0E\0\x0E\0\x0E\0\x0E\0]\t\x97\x05\x97\x05\x9F\x1A\xAE\x1A\x97\t\xBE\x1A\x97\x05\xC8\x1A\xD5\x1A\x97\t\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\xE5\x1A\xF5\x1AD\t\x97\x05\x01\x1B\x0F\x1B\x1F\x1B\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xBD\x02\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\r\x05\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x9D\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\xBD\x02\x97\x05\x97\x05\x97\x05/\x1B?\x1B\x0E\x19\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x96\x02\x97\x05\x97\x05\x97\x05\x97\x05\x9A\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05c\x05\xCF\x02\x97\t\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x98\x02\x97\x05\r\x05O\x1B\x97\x05\x97\x05\x97\x05\x97\x05\r\x05\x97\t\x97\x05\x0E\x05_\x1B\x97\x05\x97\x05\x97\x05 \x18o\x1B\x97\t\xFE\x045\x07\x97\x05\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\xE0\x13\x97\t\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0A\0A\0a\0a\0\x0E\0w\x1B\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\\\np\x05\xCF\x02\xCF\x02\x87\x1Bg\x07\x0E\0\x0E\0\x0E\0\x0E\0\x97\x1B\xA7\x1B\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x99\x02\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x9B\x02\x0E\0\x82\t\x98\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xDB\x08\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x9E\x02\x7F\t\x0E\0\xB7\x1B\xC3\x1B\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x95\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x96\x02\x0F\x05\x98\x02\xD3\x1B\xE3\x1B\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\t\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xCF\x02\xCF\x025\x06\xCF\x02,\x15\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xEE\x1B\xFB\x1B\x08\x1C\x0E\0\x14\x1C\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\"\x1C\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0A\0\xB3\x03a\x002\x1C\xAF\x03\xF5\x16\x14\x11A\0\xDB\0B\x1CR\x1C`\x1C\xF6\x16A\0\xB3\x03a\0m\x1Cz\x1Ca\0\x88\x1C\x98\x1C\xA7\x1C\xAB\x1CA\0\xD7\0a\0A\0\xB3\x03a\x002\x1C\xAF\x03a\0\x14\x11A\0\xDB\0\xAB\x1CA\0\xD7\0a\0A\0\xB3\x03a\0\xBB\x1CA\0\xA7\x1C\xEA\0\x8B\x03\xC3\x1Ca\0\xCF\x1CA\0\xA3\x1C\xE6\0\xD5\x1C\xC6\0a\0\xEC\0A\0\xDC\x1Ca\0\xE9\x1C\xD4\x19\xD4\x19\xD4\x19\xCF\x02\xCF\x02\xCF\x02\xF9\x1C\xCF\x02\xCF\x02N\x0E}\n\t\x1D\xC4\x02\xCE\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0Y\x02\xE6\0\x14\x1D\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0/\x0E$\x1D2\x1Da\0a\0a\0D\x11\x0E\0\xC0\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x0F\x05B\x1DR\x1D\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05b\x1D\x0E\0\x97\x05\x97\x05e\x05\x97\t\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05e\x05\x97\t\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05c\x05r\x1D\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x82\x1D\r\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x9C\x02,\x15\x0E\0\x0E\0A\0A\0\xDB\0a\0\x92\x1D\x97\t\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xD0\n\x97\x05\xA1\x1D\xAE\x1D\xBC\x1D\xCC\x1D\xDA\x1D\xE2\x1DH\x07\x95\x02\xF1\x1D\x95\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0A\0\x01\x1EA\0\x01\x1EA\0\x01\x1E\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0B\x1E\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\t\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x02\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x0E\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x9F\x02\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\xBD\x02\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x0E\x05\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x96\x02\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x97\x05\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x1A\x1E\x0E\0\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\xCF\x02\x0E\0y\0\x99\0\xB9\0\xD9\0\xF9\0\x19\x019\x01Y\x01y\x01\x95\x01\xB5\x01\xCF\x01\xEF\x01\x0F\x02/\x02O\x02o\x02\x88\x02\x9D\x02\xAC\x02\xCB\x02\xEB\x02\x0B\x03+\x03K\x03\xEB\x02j\x03j\x03j\x03j\x03j\x03j\x03n\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03\x8E\x03\xAE\x03\xCE\x03\xEE\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03\x0E\x04\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02.\x04H\x04f\x04\x86\x04\xA6\x04\xC6\x04\xE6\x04\x06\x05&\x05F\x05f\x05\x7F\x05\x9F\x05\xBF\x05\xDF\x05\xFF\x05\x1F\x06?\x06_\x06z\x06j\x03\x9A\x06\xBA\x06\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xCF\x06j\x03j\x03\xEF\x06j\x03j\x03j\x03j\x03j\x03\xF5\x06j\x03\x15\x07\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02%\x07\xEB\x02\xEB\x02\xEB\x02j\x03E\x07^\x07z\x07j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03\x9A\x07j\x03j\x03\xBA\x07\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xCB\x07\xEB\x07\x02\x08\xEB\x02\xEB\x02\xEB\x02\xEB\x02\"\x08\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x023\x08C\x08X\x08t\x08\x94\x08\xB4\x08\xEB\x02\xD4\x08\xEB\x02\xE4\x08\x04\t\x1B\t.\tN\tn\t\xEB\x02\xEB\x02\x8E\t\x9B\t\xEB\x02\xEB\x02\xB4\t\xEB\x02\xBC\t\xEB\x02\xEB\x02j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03\xDC\tj\x03j\x03j\x03j\x03j\x03j\x03j\x03\xEC\t\x0B\nj\x03j\x03j\x03j\x03j\x03j\x03j\x03!\nj\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03,\nj\x03K\n\xEB\x02\xEB\x02\xEB\x02\xEB\x02j\x03O\n\xEB\x02\xEB\x02j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03j\x03o\nj\x03j\x03j\x03j\x03j\x03j\x03j\x03\x84\n\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xEB\x02\xA4\n") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\x08\r\x08\x08\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\t\x02\0\0\0\0\x02\x02\x02\0\0\x0E\x0E\x01\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x0E\x0E\0\0\0\t\0\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\x02\0\x02\0\0\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x02\0\x02\0\0\0\0\0\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\x04\x02\0\x03\0\0\0\0\0\0\0\x04\0\0\0\0\x04\x02\0\0\0\0\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\0\n\n\n\n\n\n\n\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\x04\x04\x04\x04\x04\x04\x04\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\n\x04\n\x04\n\x04\x04\n\n\x04\n\x04\n\n\x04\n\n\n\x04\x04\n\n\n\n\x04\n\n\x04\n\n\n\x04\x04\x04\n\n\x04\n\n\x04\n\x04\n\x04\n\n\x04\n\x04\x04\n\x04\n\n\x04\n\n\n\x04\n\x04\n\n\x04\x04\x06\n\x04\x04\x04\x06\x06\x06\x06\n\n\x04\n\n\x04\n\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\x04\n\n\x04\n\x04\n\n\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\x04\x04\x04\x04\x04\x04\n\n\x04\n\n\x04\n\x04\n\n\n\n\x04\n\x04\n\x04\n\x04\n\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x06\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x06\x06\x06\x06\x06\x06\x06\x04\x04\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\x04\x04\x04\0\0\0\0\0\0\0\x06\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\n\x04\n\x04\x06\0\n\x04\0\0\x04\x04\x04\x04\x0E\n\0\0\0\0\0\0\n\0\n\n\n\0\n\0\n\n\x04\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\0\n\n\n\n\n\n\n\n\n\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\n\x04\x04\n\n\n\x04\x04\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\x04\x04\x04\x04\n\x04\0\n\x04\n\n\x04\x04\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\0\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\0\0\x06\0\0\0\x0E\0\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\t\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\0\x0C\x0C\0\x0C\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\x0E\x0E\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\x03\t\t\t\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x05\x05\0\x06\x06\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\t\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x05\0\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x0C\x0C\0\x0C\x0C\x0C\x0C\x06\x06\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\0\0\x06\t\t\t\0\0\0\0\0\0\0\0\0\0\0\0\x03\x06\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\0\0\x0E\t\x06\0\0\x0C\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x0C\x0C\x0C\x06\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\0\0\t\0\t\0\0\0\t\t\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\0\x05\x05\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x05\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\t\t\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\0\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x06\x06\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\0\x06\0\0\0\x06\x06\x06\x06\0\0\x0C\x06\x0C\x0C\x0C\x0C\x0C\0\0\x0C\x0C\0\0\x0C\x0C\x0C\x06\0\0\0\0\0\0\0\0\x0C\0\0\0\0\x06\x06\0\x06\x06\x06\x0C\x0C\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\0\0\0\0\0\0\0\0\0\0\x06\0\x0C\0\x0C\x0C\x0C\0\x06\x06\x06\x06\x06\x06\0\0\0\0\x06\x06\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\0\x06\x06\0\x06\x06\0\0\x0C\0\x0C\x0C\x0C\0\0\0\0\x0C\x0C\0\0\x0C\x0C\x0C\0\0\0\x0C\0\0\0\0\0\0\0\x06\x06\x06\x06\0\x06\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x0C\x0C\x06\x06\x06\x0C\0\0\0\0\0\0\0\0\0\0\x0C\x0C\x0C\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\0\x06\x06\x06\x06\x06\0\0\x0C\x06\x0C\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\x0C\0\x0C\x0C\x0C\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x0C\x0C\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\x06\x0C\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\x0C\0\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x06\x06\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\0\x06\x06\x06\x06\x06\0\0\x0C\x06\x0C\x0C\x0C\x0C\x0C\0\0\x0C\x0C\0\0\x0C\x0C\x0C\0\0\0\0\0\0\0\x0C\x0C\x0C\0\0\0\0\x06\x06\0\x06\x06\x06\x0C\x0C\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x06\0\x06\x06\x06\x06\x06\x06\0\0\0\x06\x06\x06\0\x06\x06\x06\x06\0\0\0\x06\x06\0\x06\0\x06\x06\0\0\0\x06\x06\0\0\0\x06\x06\x06\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\x0C\x0C\x0C\0\0\0\x0C\x0C\x0C\0\x0C\x0C\x0C\x0C\0\0\x06\0\0\0\0\0\0\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x0C\x06\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\x0C\0\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\x0C\x0C\0\x06\x06\x06\0\0\x06\0\0\x06\x06\x0C\x0C\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x0C\x0C\x0C\0\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\0\0\x0C\x06\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\x0C\0\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\x0C\x0C\0\0\0\0\0\0\x06\x06\0\x06\x06\x0C\x0C\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\x06\x06\x0C\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x06\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\x0C\0\x0C\x0C\x0C\x0C\x06\0\0\0\0\0\x06\x06\x06\x0C\0\0\0\0\0\0\0\x06\x06\x06\x0C\x0C\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\0\x0C\x0C\x0C\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\0\0\x06\x06\x06\x06\x06\x06\x06\0\0\0\x0C\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\0\x0C\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x0C\x0C\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\0\x06\0\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\0\0\x06\x06\x06\x06\x06\0\x06\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x0C\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\0\0\0\0\0\0\x0C\0\x0C\0\x0C\x02\x02\x02\x02\x0C\x0C\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\0\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\t\t\0\0\0\0\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x0C\x0C\x06\x0C\x0C\x0C\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x0C\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x0C\x0C\x0C\x0C\0\0\n\n\n\n\n\n\0\n\0\0\0\0\0\n\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x04\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\0\0\x06\x06\x06\x06\x06\x06\x06\0\x06\0\x06\x06\x06\x06\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x0C\x0C\x0C\0\0\t\0\0\0\0\t\t\0\0\0\0\0\0\0\n\n\n\n\n\n\0\0\x04\x04\x04\x04\x04\x04\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\t\x06\x08\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x02\x02\0\0\0\x06\x06\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\0\0\x06\x06\x0C\x0C\x0C\t\t\0\0\0\0\0\0\0\0\0\x06\x06\x0C\x0C\0\0\0\0\0\0\0\0\0\0\0\0\x06\0\x0C\x0C\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\t\t\0\x06\0\0\0\0\x06\x0C\0\0\x0E\t\0\0\0\0\x0E\t\0\x0C\x0C\x0C\x03\x0C\x06\x06\x06\x06\x06\x0C\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x06\0\0\0\0\0\t\t\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\0\0\0\0\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\x0C\0\0\0\0\0\0\0\x06\t\t\t\t\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x06\x06\x06\x06\0\t\t\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\t\t\0\0\t\t\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\0\0\t\t\t\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\t\t\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\t\t\x04\x04\x04\x04\x04\x04\x04\x04\x04\n\x04\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x0C\x06\x06\x0C\x0C\x0C\x06\0\0\0\0\0\n\x04\n\x04\n\x04\x04\x04\x04\x04\x04\x04\x04\x04\n\x04\x04\x04\x04\x04\x04\x04\x04\n\n\n\n\n\n\n\n\x04\x04\x04\x04\x04\x04\0\0\n\n\n\n\n\n\0\0\x04\x04\x04\x04\x04\x04\x04\x04\0\n\0\n\0\n\0\n\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\x04\x04\x04\x04\x04\0\x04\x04\n\n\n\n\n\0\x04\0\0\x04\x04\x04\0\x04\x04\n\n\n\n\n\0\0\0\x04\x04\x04\x04\0\0\x04\x04\n\n\n\n\0\0\0\0\x04\x04\x04\x04\x04\x04\x04\x04\n\n\n\n\n\0\0\0\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x03\x0C\x0C\x03\x03\0\0\0\x0E\x0E\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\x01\0\0\0\x07\x07\x03\x03\x03\x03\x03\x08\0\0\0\0\0\0\0\0\0\x02\x02\0\t\t\0\0\0\0\0\x02\x02\t\t\t\0\0\0\0\0\0\x03\x03\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x04\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\n\0\0\0\0\n\0\0\x04\n\n\n\x04\x04\n\n\n\x04\0\n\0\0\0\n\n\n\n\n\0\0\0\0\n\0\n\0\n\0\n\n\n\n\0\x04\n\n\n\n\x04\x06\x06\x06\x06\x04\0\0\x04\x04\n\n\0\0\0\0\0\n\x04\x04\x04\x04\0\0\0\0\x04\0\x06\x06\x06\n\x04\x06\x06\x06\x06\0\0\0\0\0\0\0\0\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\0\0\0\n\n\n\n\n\n\n\n\n\n\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\x02\x02\0\0\0\0\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\x02\x02\0\0\n\x04\n\n\n\x04\x04\n\x04\n\x04\n\x04\n\n\n\x04\n\x04\x04\n\x04\x04\x04\x04\x04\x04\x04\x04\n\n\x04\n\x04\x04\0\0\0\0\0\0\n\x04\n\x04\x0C\x0C\n\x04\0\0\0\0\0\t\t\t\0\0\0\0\x04\x04\x04\x04\x04\x04\0\x04\0\0\0\0\0\x04\0\0\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\x06\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\0\t\x06\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\t\t\x02\x02\x02\x02\x02\x02\x02\x02\0\0\0\x08\x0E\t\0\0\x06\x06\x06\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\x02\x02\x02\x02\x02\x02\0\x02\x02\x02\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\0\x06\x06\x06\x06\x06\0\0\x06\x06\x06\x06\x06\0\0\0\x06\x06\x06\x06\x06\x06\x06\0\0\x0C\x0C\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\t\t\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\x06\x0C\x0C\x0C\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\x06\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\x04\x04\x0C\x0C\0\t\0\0\0\t\0\0\0\0\0\0\0\0\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\x04\x04\x04\x04\x04\x04\x04\x04\n\x04\n\x04\n\n\x04\n\x04\n\x04\n\x04\x06\0\0\n\x04\n\x04\x06\n\x04\n\x04\x04\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\n\n\n\n\x04\n\x04\n\x04\n\x04\n\x04\n\x04\n\n\n\n\x04\n\x04\n\n\x04\0\0\n\x04\0\x04\0\x04\n\x04\n\x04\n\x04\n\0\0\0\x04\x04\x04\n\x04\x06\x04\x04\x04\x06\x06\x06\x06\x06\x0C\x06\x06\x06\x0C\x06\x06\x06\x06\x0C\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\0\0\0\0\x0C\0\0\0\x06\x06\x06\x06\0\0\t\t\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\0\t\t\x0C\x0C\x06\x06\x06\x06\x06\x06\0\0\0\x06\0\x06\x06\x0C\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\t\x0C\0\0\0\0\0\0\0\t\t\0\0\0\0\0\x06\x06\x06\x06\x06\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\0\0\x06\x06\x06\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\t\t\t\x06\x06\x06\x06\x06\x06\x06\0\0\0\x06\x0C\x0C\x0C\x06\x06\x0C\x06\x0C\x0C\x0C\x06\x06\x0C\x0C\x06\x06\x06\x06\x06\x0C\x0C\x06\x0C\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\0\0\t\t\x06\x06\x06\x0C\x0C\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\0\0\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\t\x0C\x0C\0\0\0\x04\x04\x04\x04\x04\0\0\0\0\0\x06\x0C\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\0\x06\0\x06\x06\0\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0E\x0E\t\x0E\x0E\t\t\x02\x02\0\0\0\0\0\0\0\x0E\x0E\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\0\x02\x02\0\0\0\0\0\0\0\x0E\x0E\x01\0\x0E\x0E\t\t\x0E\x02\x02\x02\x02\x02\x02\0\0\0\x0E\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x03\0\t\0\0\0\0\0\0\x02\x02\0\0\x0E\x0E\x01\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x02\0\x02\0\x02\t\x02\x02\x0E\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x06\x06\x06\x06\x06\x06\0\0\x06\x06\x06\0\0\0\0\0\0\0\0\0\x03\x03\x03\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\0\0\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\x06\x06\x06\x06\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\0\n\n\n\0\n\n\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\x04\x04\x04\x04\x04\x04\x04\0\x04\x04\0\0\0\x04\x06\x06\x04\x04\x04\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\0\0\0\0\0\x06\x06\x06\x06\x06\x06\0\0\x06\0\x06\x06\x06\x06\x06\x06\0\x06\x06\0\0\0\x06\0\0\x06\x06\x06\0\x06\x06\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\x06\x06\x0C\x0C\x0C\0\x0C\x0C\0\0\0\0\0\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x06\x06\0\0\x0C\x0C\x0C\0\0\0\0\x0C\0\0\0\0\0\0\t\t\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x0C\x0C\0\0\0\0\0\0\0\0\0\n\n\n\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\0\n\n\n\n\n\n\0\0\0\x0C\x0C\x0C\x0C\x0C\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x0C\x0C\0\0\0\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\0\x0C\0\0\0\0\t\t\t\t\t\0\0\0\0\0\0\x06\x06\x0C\x0C\x0C\x0C\t\t\t\t\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\t\t\0\0\0\0\0\0\0\x0C\x06\x06\x0C\x0C\x06\0\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\x05\t\t\x0C\0\0\0\0\0\0\0\0\0\0\x05\0\0\t\t\t\x06\x0C\x0C\x06\0\0\0\0\0\0\0\0\x06\x06\x06\x0C\0\0\x06\0\0\0\0\0\0\0\0\0\x0C\x06\x06\x06\x06\t\t\0\0\x0C\x0C\x0C\x0C\t\x0C\x0C\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\0\x06\0\t\t\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\t\t\0\t\t\0\x0C\x06\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\0\x06\0\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\t\0\0\0\0\0\0\x0C\x0C\x0C\x0C\0\x06\x06\x06\x06\x06\x06\x06\x06\0\0\x06\0\x06\x06\0\x06\x06\x06\x06\x06\0\x0C\x0C\x06\x0C\x0C\x06\0\0\0\0\0\0\x0C\0\0\0\0\0\x06\x06\x06\x0C\x0C\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\0\0\x06\0\x06\x06\x06\x06\x06\x06\0\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\x0C\0\0\x0C\0\x0C\x0C\x0C\x0C\0\x0C\x0C\x0C\x0C\x06\x0C\x06\t\t\0\0\0\0\0\0\0\0\0\0\x0C\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x06\x06\t\t\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x0C\x06\x0C\x0C\x0C\x0C\x06\x06\0\x06\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\t\t\0\0\0\0\0\t\t\t\t\t\t\t\t\x06\x06\x06\x06\x0C\x0C\0\0\x0C\t\t\0\x06\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\t\t\t\0\x06\x06\x06\x06\x06\x06\x06\0\0\x06\0\0\x06\x06\x06\x06\0\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\0\0\x0C\x0C\x0C\x0C\x06\x0C\x0C\t\0\t\0\0\0\0\0\0\0\0\0\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x06\0\x06\x0C\0\0\0\0\0\0\0\0\0\0\0\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x0C\x0C\x0C\x0C\0\0\t\t\0\0\0\x0C\0\0\0\0\0\0\0\0\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\t\t\x06\0\0\x06\t\t\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\x0C\0\x0C\x0C\0\x0C\x0C\x0C\x0C\x0C\x0C\x06\x0C\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\0\x06\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\x0C\x0C\x0C\x06\0\0\0\0\0\0\0\x06\x06\x06\x0C\x0C\x0C\x0C\t\t\0\0\0\0\0\0\0\x0C\x0C\x06\x0C\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\x0C\x0C\x0C\t\t\0\0\0\0\0\0\0\0\0\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x0C\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x0C\x06\x06\x06\x06\x06\x06\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\t\t\x0C\x0C\x0C\x0C\x0C\t\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\t\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\x0C\x06\x06\0\x06\x0C\0\0\0\0\0\0\0\0\0\0\0\x0C\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\0\0\x06\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\x0C\x0C\t\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\0\0\0\x0C\x0C\x0C\x03\x03\x03\x03\x03\x03\x03\x03\x0C\x0C\x0C\x0C\x0C\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\0\0\0\0\0\x0C\x0C\x0C\x0C\0\0\x0C\x0C\x0C\0\0\0\0\0\0\0\0\0\0\0\x04\x04\x04\x04\n\n\n\n\n\n\n\n\n\n\n\n\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\n\0\n\n\0\0\n\0\0\n\n\0\0\n\n\n\n\0\n\n\n\n\n\n\x04\x04\x04\x04\0\x04\0\x04\x04\x04\x04\n\n\0\n\n\n\n\0\0\n\n\n\n\n\0\n\n\n\n\n\n\n\0\x04\x04\x04\x04\x04\x04\x04\x04\n\n\0\n\n\n\n\0\n\n\n\n\n\0\n\0\0\0\n\n\n\n\n\n\0\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\n\n\n\n\x04\x04\x04\x04\x04\x04\0\0\n\n\n\n\n\n\n\n\n\n\n\0\x04\x04\x04\x04\x04\0\x04\x04\x04\x04\x04\x04\n\n\n\n\n\n\n\n\n\n\0\x04\x04\x04\x04\x04\x04\0\x04\x04\x04\x04\x04\x04\n\x04\0\0\x05\x05\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\0\0\x0C\x0C\x0C\x0C\x0C\0\0\0\0\x0C\0\0\0\t\0\0\0\0\0\0\0\x04\x04\x04\x04\x04\x04\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\0\0\x0C\x0C\x0C\x0C\x0C\0\x0C\x0C\0\x0C\x0C\x0C\x0C\x0C\0\0\0\0\0\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\x06\x06\x06\x06\x06\x06\0\0\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\x06\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x0C\0\x06\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\0\x06\x06\0\x04\x04\x04\x04\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x06\0\0\0\0\x06\x06\0\x06\0\0\x06\0\x06\x06\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\0\x06\0\x06\0\0\0\0\x06\0\0\0\0\x06\0\x06\0\x06\0\x06\x06\x06\0\x06\x06\0\x06\0\0\x06\0\x06\0\x06\0\x06\0\x06\x06\0\x06\0\0\x06\x06\x06\x06\0\x06\x06\x06\x06\0\x06\x06\x06\x06\0\x06\0\x06\x06\x06\0\x06\x06\x06\x06\x06\0\x06\x06\x06\x06\x06\n\n\n\n\n\n\n\n\n\n\0\0\0\0\0\0\x02\x02\x02\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0") }, icu::properties::props::SentenceBreak::Other));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumSentenceBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumSentenceBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_SENTENCE_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumSentenceBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumSentenceBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumSentenceBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumSentenceBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_sentence_break_v1 as impl_property_enum_sentence_break_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_vertical_orientation_v1.rs.data b/vendor/icu_properties_data/data/property_enum_vertical_orientation_v1.rs.data
new file mode 100644
index 00000000..473fd5f0
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_vertical_orientation_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumVerticalOrientationV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 3124B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_vertical_orientation_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_VERTICAL_ORIENTATION_V1: &'static <icu::properties::provider::PropertyEnumVerticalOrientationV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 1114112u32, shifted12_high_start: 272u16, index3_null_offset: 12u16, data_null_offset: 0u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0Y\0\x98\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xD0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0I\x03c\x03q\x03\x87\x03\xA7\x03\xC4\x03\xDE\x03\xF8\x03c\x03c\x03c\x03\x18\x04c\x03c\x03c\x03\x18\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x048\x04c\x03c\x03c\x03\x18\x04c\x03c\x03c\x03\x18\x04\0\0\x10\0 \x000\0@\0P\0`\0p\0Y\0i\0y\0\x89\0\x98\0\xA8\0\xB8\0\xC8\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\xD0\0\xE0\0\xF0\0\0\x01\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\x10\0 \x000\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x0F\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA9\0\x96\0\x1E\x01,\x01\xAE\0\xAA\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x01<\x01\0\0L\x01X\x01f\x01\x0B\x01u\x01\x10\x01\x10\x01\x10\x01\x84\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\0\0\0\xF6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x01\x10\x01\x98\x01\0\0\0\0\0\0\0\0\x03\x01\x10\x01\x15\x01\0\0\xEC\0\xA8\x01\xB6\x01\x0E\x01\x10\x01\x10\x01\xC6\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x16\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x18\x01\n\x01\x10\x01\xD2\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0E\x01\x10\x01\0\0\0\0\x16\x01\0\0\0\0\0\0\xA8\0\0\0\x08\x01\x10\x01\xE2\x01\x14\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\x96\0\0\0\0\0\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\xF1\x01\xFF\x01\x10\x01\x0E\x02\x1D\x02\x10\x01*\x02\x10\x017\x02F\x02V\x02\x10\x01*\x02\x10\x017\x02a\x02\x10\x01\x10\x01n\x02\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01~\x02\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x0F\x02~\x02~\x02~\x02~\x02~\x02\x86\x02\x10\x01\x8E\x02\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x01\0\0\x10\x01\x17\x01\x9B\x02\xAA\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBA\x02\xC9\x02\x10\x01\xD9\x02\x10\x01\xE9\x02\xF8\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\x03\x18\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\x03\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x10\x01\x12\x01\x84\0\x98\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xC8\0\x0C\0\xE8\0\0\x01\x15\x01\x0C\0\x0C\0\x0C\x004\x01S\x01r\x01\x91\x01\x0C\0\xAB\x01\x0C\0\xCB\x01\xEB\x01\x0B\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02\xFB\0\x0C\0C\x02\x0C\0#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02\x0C\0\x0C\0\x0C\0\x0C\0#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02\xF8\0\x0C\0b\x02\x0C\0\x0C\0\x0C\0\x0C\0\x82\x02\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x9C\x02\x0C\0\x0C\0\xFC\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02\0\x01\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\xBC\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02\xF0\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\xDC\x02#\x02\xF8\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\xEB\x02#\x02\x08\x03\x0C\0\x0C\0#\x02\xFD\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0#\x02(\x03#\x02#\x02\xC8\0\xF8\0\x0C\0\x0C\0#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02#\x02)\x03\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\0\0\0\0\x03\0\0\x03\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\x03\x03\0\0\0\x03\0\0\0\0\x03\x03\x03\0\0\0\0\0\0\x03\0\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\x03\x03\0\x03\x03\0\0\0\0\0\0\x03\x03\x03\x03\0\x03\0\x03\0\x03\0\0\0\0\x03\0\0\0\0\0\x03\x03\x03\x03\x03\x03\0\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\x03\x03\x03\x03\x03\x01\x01\x03\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x03\x03\x03\x03\x03\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x02\x02\x03\x03\x03\x03\x02\x02\x03\x03\x03\x01\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x02\x02\x03\x03\x03\x03\x03\x01\x03\x03\x03\x03\x03\x03\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x02\x02\x02\x02\x02\x03\x03\x03\x03\x03\0\x01\x01\x01\x01\x01\x01\x03\x03\x03\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x02\x03\x03\x03\x03\x03\x03\x01\x01\x03\x03\x02\0\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x01\x01\0\0\0\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x01\x03\x01\x03\x01\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x01\x03\x03\x03\x03\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\x03\x03\0\0\x02\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0") }, icu::properties::props::VerticalOrientation::Rotated));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumVerticalOrientationV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumVerticalOrientationV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_VERTICAL_ORIENTATION_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumVerticalOrientationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumVerticalOrientationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumVerticalOrientationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumVerticalOrientationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_vertical_orientation_v1 as impl_property_enum_vertical_orientation_v1;
diff --git a/vendor/icu_properties_data/data/property_enum_word_break_v1.rs.data b/vendor/icu_properties_data/data/property_enum_word_break_v1.rs.data
new file mode 100644
index 00000000..0c33cbc1
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_enum_word_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyEnumWordBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 11104B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_enum_word_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_ENUM_WORD_BREAK_V1: &'static <icu::properties::provider::PropertyEnumWordBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::PropertyCodePointMap::CodePointTrie(icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 918016u32, shifted12_high_start: 225u16, index3_null_offset: 636u16, data_null_offset: 14u32, null_value: 0u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0{\0\xBB\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\x1B\x01[\x01k\x01\xAB\x01\xCE\x01\xF3\0\xF3\0\x0C\x02\xF3\0\x1C\x02M\x02\x84\x02\xC2\x02\x02\x037\x03\xF3\0h\x03\xA8\x03\xDD\x03\xF7\x037\x04w\x04\xB7\x04\xEF\x04%\x05a\x05\x9F\x05\xDE\x05\x1C\x06[\x06\x99\x06\xD8\x06\x16\x07V\x07\x94\x07\xD2\x07\x10\x08P\x08\x8E\x08\xCE\x08\x0C\tL\t\x8A\t\xCA\t\n\n>\ny\n\x93\n\xD0\n\x10\x0BP\x0B\x8B\x0B\xC8\x0Bj\t\x84\t\x94\t\xAA\t\xCA\t\xE9\t\x01\n \n\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t\x84\t@\n\0\0\x10\0 \x000\0@\0P\0`\0p\0{\0\x8B\0\x9B\0\xAB\0\xBB\0\xCB\0\xDB\0\xEB\0\xF3\0\x03\x01\x13\x01#\x01\xF3\0\x03\x01\x13\x01#\x01\xF3\0\x03\x01\x13\x01#\x01\xF3\0\x03\x01\x13\x01#\x01\x1B\x01+\x01;\x01K\x01[\x01k\x01{\x01\x8B\x01k\x01{\x01\x8B\x01\x9B\x01\xAB\x01\xBB\x01\xCB\x01\xDB\x01\xCE\x01\xDE\x01\xEE\x01\xFE\x01\xF3\0\x03\x01\x13\x01#\x01\xF3\0\x03\x01\x13\x01#\x01\x0C\x02\x1C\x02,\x02<\x02\xF3\0\x03\x01\x13\x01#\x01\x1C\x02,\x02<\x02L\x02M\x02]\x02m\x02}\x02\x84\x02\x94\x02\xA4\x02\xB4\x02\xC2\x02\xD2\x02\xE2\x02\xF2\x02\x02\x03\x12\x03\"\x032\x037\x03G\x03W\x03g\x03\xF3\0\x03\x01\x13\x01#\x01h\x03x\x03\x88\x03\x98\x03\xA8\x03\xB8\x03\xC8\x03\xD8\x03\xDD\x03\xED\x03\xFD\x03\r\x04\xF7\x03\x07\x04\x17\x04'\x047\x04G\x04W\x04g\x04w\x04\x87\x04\x97\x04\xA7\x04\xB7\x04\xC7\x04\xD7\x04\xE7\x04\xEF\x04\xFF\x04\x0F\x05\x1F\x05%\x055\x05E\x05U\x05a\x05q\x05\x81\x05\x91\x05\x9F\x05\xAF\x05\xBF\x05\xCF\x05\xDE\x05\xEE\x05\xFE\x05\x0E\x06\x1C\x06,\x06<\x06L\x06[\x06k\x06{\x06\x8B\x06\x99\x06\xA9\x06\xB9\x06\xC9\x06\xD8\x06\xE8\x06\xF8\x06\x08\x07\x16\x07&\x076\x07F\x07V\x07f\x07v\x07\x86\x07\x94\x07\xA4\x07\xB4\x07\xC4\x07\xD2\x07\xE2\x07\xF2\x07\x02\x08\x10\x08 \x080\x08@\x08P\x08`\x08p\x08\x80\x08\x8E\x08\x9E\x08\xAE\x08\xBE\x08\xCE\x08\xDE\x08\xEE\x08\xFE\x08\x0C\t\x1C\t,\t<\tL\t\\\tl\t|\t\x8A\t\x9A\t\xAA\t\xBA\t\xCA\t\xDA\t\xEA\t\xFA\t\n\n\x1A\n*\n:\n>\nN\n^\nn\ny\n\x89\n\x99\n\xA9\n\x93\n\xA3\n\xB3\n\xC3\n\xD0\n\xE0\n\xF0\n\0\x0B\x10\x0B \x0B0\x0B@\x0BP\x0B`\x0Bp\x0B\x80\x0B\x8B\x0B\x9B\x0B\xAB\x0B\xBB\x0B\xC8\x0B\xD8\x0B\xE8\x0B\xF8\x0B\x0E\0\x0E\0E\x08\xB3\x02<\x07\x02\x0C\x11\x0C \x0C.\x0C>\x0C\xF3\0\xF3\0N\x0C\xF3\0\xF3\0\xC7\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0^\x0Cn\x0C\xF3\0\xF3\0^\x0C\xF3\0\xF3\0f\x0Cv\x0C\xCB\0\xF3\0\xF3\0\xF3\0v\x0C\xF3\0\xF3\0\xF3\0~\x0C\x0E\0\x0E\0\xF3\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\x8E\x0C@\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0W\x02\xF3\0\x9E\x0Cp\0\xF3\0\xF3\0\xF3\0\xF3\0\xD6\t\xA5\x0C\xF3\0\xB5\x0C\xF3\0\xC4\x0C\xF3\0\xD4\x0C\xC5\0\xE4\x0C\x0E\0\x0E\0\x0E\0\x91\x02[\x01\xF4\x0C<\x07\x0E\0\x02\r<\x07\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xA5\x0C\x12\r\xF3\0\x19\r\xF3\0\xF3\0\xF3\0\xF3\0)\r\xF3\0L\0\xBC\x0B\xBC\x0B1\x04\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\09\r\x0E\0\x0E\0\xF3\0I\r\x0E\0\x0E\0\x0E\0U\r[\x01e\r<\x07<\x07\x0E\0[\x01\xB3\x02\x0E\0\x0E\0\x0E\0\x11\x02\xF3\0\xF3\0W\x01t\r<\x07E\x08\xA1\x04\x13\x02\xF3\0\x84\r7\x04\xF3\0\xF3\0U\x01\xA1\x04\xF3\0\xF3\0W\x01\xC8\n\x94\r7\x04\xF3\0M\0p\0\xF3\0\xF3\0Y\x02\x0E\0\xA0\x0B\xA4\r\xAD\r\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0[\x01[\x01[\x01[\x01\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\x8E\x0C\xF3\0\xF3\0\x8E\x0C\xBD\r\xF3\0M\0\xF3\0\xF3\0\xF3\0\x02\x06\xCD\r\xDD\rN\0\xCD\r\xED\r\xFD\r\t\x0E\x19\x0E(\x0E4\x0ED\x0ET\x0E\x0E\0N\0\x0E\0\x0E\0\x0E\0[\x01[\x01\xA4\x04a\x0Em\x0E{\x0EZ\x02\x8B\x0E\x0E\0\xF3\0\xF3\0\xA5\x0C\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\x003\x01\xF3\0\xF3\0)\x01\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\x9B\x0E\xAA\x0E\xF3\0\xF3\0N\x0C\xF3\0\xF3\0\xF3\0\xA6\x0CA\x08\xF3\0\xBA\x0E\0\x06\0\x06\0\x06\0\x06[\x01[\x01\x0E\0\x0E\0\x96\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xCA\x0E\x0E\0&\x0C\xD9\x0E\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xE6\x0E\xF6\x0E\xF6\x0E\xF6\x0E\xF6\x0E\xF6\x0E\xFB\x0E<\0\xF3\0\xF3\0@\0\xF3\0\xF3\0\xF3\0\xF3\0L\0\x0E\0\xF3\0\xF3\0\x0E\0\x0E\0\x0E\0\xF6\x0E\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF6\x0E\xF6\x0E\xF7\x0E\xF6\x0E\xF6\x0E\xF6\x0E\xF6\x0E\xF6\x0E\x07\x0F\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0N\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0M\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0N\0\xF3\0B\x06\x0E\0\xF3\0\xF3\0L\x01\x17\x0F\xF3\0M\x01\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xA3\x04\xAF\x04\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0M\0&\x0F\x0E\0?\x006\x0F\xF3\0C\x0F\x0E\0\xF3\0\xF3\0\xF3\0S\x0F\x14\x02\xF3\0\xF3\0W\x01c\x0F<\x07[\x01s\x0F7\x04\xF3\0\x83\x0F\xF3\0T\x01\xA1\x04\xF3\0N\0\x12\x02\xF3\0\xF3\0X\x01\x90\x0F<\x07\"\x08<\x07\xF3\0\xF3\0R\x01\x8A\x0F\x9F\x0F<\x07\x0E\0\xAD\x0F\x0E\0\x0E\0\x0E\0\xBD\x0F&\x08\x0E\0P\x01\xCD\x0F\xDC\x0F(\r\0\x06\xF3\0\xF3\0\xF3\0)\x01\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xEC\x0F<\x07\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0S\x0F\xF3\0\xFC\x0F\xF3\0\xF3\0O\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xBA\x0E\x04\x10\x13\x10\x1D\x10-\x10\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0=\x10\x0E\0>\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0M\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0?\0\xF3\0\xF3\0M\x10\x0E\0\x0E\0O\0[\x01Z\x10[\x01g\x10l\x10|\x10\x0E\0\xCD\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\x8C\x10\x9C\x100\0@\0P\0@\0p\0\xAB\x10\xF6\x0E\xF6\x0E\xB1\x10\xF3\0L\0\xDB\x0F\xC1\x10\x0E\0\xCE\x10\xC6\0\xF3\0\xCB\0\xDE\x10M\0M\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0p\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xED\x10\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0b\n\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0N\0\xF3\0\xF3\0\xF3\0\xA7\x03\xA4\x04\x0E\0\xF3\0\xF3\0\xAA\x04\xF3\0p\0\xF3\0\xF3\0J\r\xF3\0M\0\xF3\0\xF3\0\xFD\x10\xEC\x10\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0M\0<\x07\xF3\0\xF3\0\xFD\x10\xF3\0O\0\xF3\0\xF3\0M\x10\xF3\0\xF3\0\xF3\0S\x0F\xC7\0\xC7\0\n\x11\xD0\0\x18\x11\xF3\0\xF3\0\xF3\0S\x0F\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xBA\x0E\xF3\0)\rM\x10\x0E\0\xCC\0\xF3\0\xF3\0(\x11\x0E\0\x0E\0\x0E\0\x0E\08\x11\xF3\0\xF3\0B\x11\xF3\0)\r\xF3\0\xBA\x0E\xF3\0L\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0Q\x11\xF3\0)\r\xF3\0)\x01\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0+\x01\x0E\0\x0E\0\x0E\0\x0E\0a\x11\xE2\x06\xF3\0q\x11\x0E\0\x0E\0\xF3\0N\0\xF3\0N\0\x0E\0\x0E\0\xCA\0\xF3\0\xA6\x0F\x0E\0\xF3\0\xF3\0\xF3\0)\r\xF3\0)\r\xF3\0\x81\x11\xF3\0=\x10\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xA5\x0C\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\x81\x11\xF3\0\xF3\0\xF3\0\x81\x11\xF3\0\xF3\0\x91\x11<\x077\x04\xF3\0\xA1\x11\xF3\0)\r\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xB0\x11=\x10\xBE\x11\x0E\0\x0E\0D\x08\xF3\0N\0\t\x0B\xF3\0U\x01\xA4\x04\x0E\0\xF3\0\xCE\x11\x0E\0\x0E\0\xF3\0\xED\x10\x0E\0\xF3\0\xBA\x0E\x13\x02\xF3\0\xF3\0S\x01\x8A\x0F\x0E\x001\x04\xDE\x11\x13\x02\xF3\0\xF3\0\xED\x11\xFB\x11\xF3\0\xA5\x0C<\x07\x13\x02\xF3\0T\x01\x83\n\t\x12\xF3\0\xF3\0\x19\x12\x13\x02\xF3\0\xF3\0X\x01)\x129\x12\x0E\0\x0E\0\xF3\0\xD0\0O\x01I\x12X\x12\x0E\0\x0E\0\x0E\0h\x12\xC4\0\xA5\x0C\xF3\0\xF3\0L\x01\xBD\x0B<\x07x\x12\xEE\x05\xC9\0\x87\x12\x94\x07\x97\x12\xA5\x12\xA0\x04\xB5\x12\xF3\0\xF3\0\xC5\x12\xD4\x12\xE3\x12;\n\x0E\0\xF3\0\xF3\0\xF3\0V\x01\xF3\x12\x03\x13=\x10\x0E\0\xF3\0\xF3\0\xF3\0[\x01\x13\x13<\x07\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0L\x01#\x13\xA4\x043\x13\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0[\x01@\x13<\x07\x0E\0\x0E\0\xF3\0\xF3\0P\x01 \x04<\x07P\x13<\x08\x0E\0\x0E\0C\x08\xBC\x0B<\x07\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0O\x01\xBD\x0B\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0<\x07\x96\0`\x13\t\x11\xF3\0p\x13~\x13<\x07\x0E\0\x0E\0\x0E\0\x0E\0\x8E\x13\xF3\0\xF3\0\x9D\x13\xAC\x13\x0E\0\xBC\x13\xF3\0\xF3\0\xC9\x13\xFA\x0C\xD9\x13\xF3\0\xF3\0Q\x01\xE9\x13\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xA5\x0C\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xA7\x03<\x07\xC9\0\xF3\0L\x01\x9C\x0B\xA7\x03<\x07\x0E\0?\0\xF3\0\x93\x02\x9B\x0B\x8A\x0F\x0E\0\x0E\0\x0E\0\x0E\0\x02\x07\xF3\0\xF3\0\xF9\x13\x08\x14<\x07\x07\x11\xF3\0\x18\x14%\x14<\x07\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\x005\x14E\x14\xD1\0\xF3\0Q\x14\xA2\x04a\x14\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xA7\x03\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0)\x01\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0L\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0S\x0F\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xA7\x03\xF3\0\xF3\0\xF3\0q\x14\x81\x14c\x0F\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0p\0\xF3\0\xF3\0\xF3\0\xF3\0\xBA\x0E\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0M\x01[\x01<\x07\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xA5\x0C\xF3\0L\0<\x07\xF3\0\xF3\0\xF3\0\xF3\0L\0<\x07\xF3\0M\0\xA0\x04\xF3\0\xF3\0\xF3\0\x8A\x0FS\x0F<\x07>\0\xDA\x04\xF3\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0N\0<\x07\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\x01\x08Z\x01[\x01[\x01\x89\x14\x13\x02\x0E\0\x0E\0\x0E\0\x0E\0\x99\x14\xA3\x04\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xA9\x14\xB7\x14\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xC7\x14\x0E\0\x0E\0\xD2\x14\xDE\x14\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0p\0N\0\xA5\x0C\xEE\x14\xFE\x14\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0<\x07\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0[\x01[\x01\xDA\x03[\x01\x8A\x0F\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\t\x15\x16\x15#\x15\x0E\0\xFE\x0B\x0E\0\x0E\0\x0E\0\x0E\0\x0E\x001\x15\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xCD\0\xF3\0\xF3\0\xF3\0\xC5\0?\x15M\x15\xCE\0\xF3\0\xF3\0\xF3\0a\x0C\x7F\x06\xF3\0Z\x15j\x15\xD1\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0t\x15\xF3\0\xD1\0\xC7\0\xF3\0\xC7\0\xF3\0\xCD\0\xF3\0\xCD\0L\0\xF3\0L\0\xF3\0\xC9\0\xF3\0\xC9\0\xF3\0\x81\x15P\x13P\x13P\x13[\x01[\x01[\x01\x91\x15[\x01[\x01\xBB\x0B\"\x08#\x08E\x08\x94\x02\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0L\0$\r\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x9C\x0Bi\r\x9F\x15\xF3\0\xF3\0\xF3\0M\0\x0E\0A\x08\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xF3\0N\0\xAF\x15\xBF\x15\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0\xCF\x15\x0E\0\xF3\0\xF3\0O\x01<\x07\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0O\x01<\x07\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0M\x01\xDF\x15\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xEF\x15L\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xED\x10\x8A\x0F\x0E\0\x0E\0\xF3\0\xF3\0\xF3\0\xF3\0\xFF\x15<\x07\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xCE\0\xF3\0\x0E\x16\x1B\x16)\x169\x16G\x16O\x16\xC8\0O\0^\x16O\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\xF3\0)\x01\xF3\0)\x01\xF3\0)\x01\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0n\x16t\x16\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0E\x08\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0<\x07\x84\x16\x0E\0[\x01[\x01[\x01[\x01[\x01[\x01\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0[\x01[\x01[\x01[\x01[\x01[\x01[\x01[\x01[\x01[\x01[\x01[\x01[\x01[\x01[\x01\x0E\0y\0\x8D\0\xAD\0\xCD\0\xED\0\r\x01-\x01M\x01m\x01\x89\x01\xA9\x01\xC3\x01\xE3\x01\x03\x02#\x02C\x02c\x02|\x02\x91\x02|\x02|\x02|\x02\xB1\x02\xD1\x02\xF1\x02\x11\x03|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x021\x031\x03I\x03i\x03\x89\x03\xA9\x031\x031\x031\x031\x031\x031\x031\x031\x031\x031\x031\x03\xC9\x03|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02\xE9\x03\x07\x04'\x04G\x04g\x04\x87\x04\xA7\x04\xC7\x04\xE7\x04\x07\x05 \x05@\x05`\x05\x80\x05\xA0\x05\xC0\x05\xE0\x05\0\x06\x1B\x061\x03;\x06[\x06|\x02|\x02|\x02|\x02p\x061\x031\x03\x90\x061\x031\x031\x031\x031\x03\x96\x061\x03\xB6\x06|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02\xC6\x06|\x02|\x02|\x021\x03\xE6\x06\xFF\x06\x1B\x07|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02|\x02;\x07[\x07|\x02|\x02|\x02|\x02|\x02{\x07|\x02|\x02|\x02|\x02|\x02|\x02\x8C\x07\x9C\x07\xB1\x07\xCD\x07\xED\x07\x03\x08|\x02#\x08|\x023\x08S\x08j\x08}\x08\x9D\x08\xBD\x08|\x02|\x02\xDD\x08\xEA\x08\n\t|\x02|\x02|\x02*\t|\x02|\x02J\t") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\n\x0C\x0C\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\0\x10\0\0\0\0\x0F\0\0\0\0\x05\0\x0B\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x04\x05\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x07\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x0C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\x02\0\0\0\0\0\0\0\x01\0\x04\0\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x01\x01\x01\x01\x01\0\x01\x01\0\0\x01\x01\x01\x01\x05\x01\0\0\0\0\0\0\x01\x04\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\t\t\t\t\t\t\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\0\x01\x04\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x05\x01\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\0\t\t\0\t\t\0\t\0\0\0\0\0\0\0\0\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\0\0\0\0\x0E\x0E\x0E\x0E\x01\x04\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\x05\x05\0\0\t\t\t\t\t\t\t\t\t\t\t\0\x02\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x06\x05\0\x01\x01\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\t\t\t\t\t\t\t\x06\0\t\t\t\t\t\t\x01\x01\t\t\0\t\t\t\t\x01\x01\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x01\x01\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\t\t\t\t\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\t\t\x01\x01\0\0\x05\0\x01\0\0\t\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\t\x01\t\t\t\t\t\t\t\t\t\x01\t\t\t\x01\t\t\t\t\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\0\x06\x06\0\0\0\0\0\t\t\t\t\t\t\t\t\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x06\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\x01\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\x01\t\t\t\t\t\t\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\0\0\t\x01\t\t\t\t\t\0\0\t\t\0\0\t\t\t\x01\0\0\0\0\0\0\0\0\t\0\0\0\0\x01\x01\0\x01\x01\x01\t\t\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\0\t\0\t\t\t\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\0\x01\x01\0\0\t\0\t\t\t\0\0\0\0\t\t\0\0\t\t\t\0\0\0\t\0\0\0\0\0\0\0\x01\x01\x01\x01\0\x01\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\t\t\x01\x01\x01\t\0\0\0\0\0\0\0\0\0\0\t\t\t\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\t\x01\t\t\t\t\t\t\0\t\t\t\0\t\t\t\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\t\t\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\x01\t\t\t\t\t\t\0\t\t\t\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\t\x01\t\t\t\t\t\0\0\t\t\0\0\t\t\t\0\0\0\0\0\0\0\t\t\t\0\0\0\0\x01\x01\0\x01\x01\x01\t\t\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\x01\0\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\0\x01\x01\x01\x01\0\0\0\x01\x01\0\x01\0\x01\x01\0\0\0\x01\x01\0\0\0\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\t\t\t\0\0\0\t\t\t\0\t\t\t\t\0\0\x01\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\t\x01\t\t\t\t\t\0\t\t\t\0\t\t\t\t\0\0\0\0\0\0\0\t\t\0\x01\x01\x01\0\0\x01\0\0\x01\x01\t\t\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\t\t\t\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\t\x01\t\t\t\t\t\0\t\t\t\0\t\t\t\t\0\0\0\0\0\0\0\t\t\0\0\0\0\0\0\x01\x01\0\x01\x01\t\t\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\x01\x01\t\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\x01\t\t\t\t\t\0\t\t\t\0\t\t\t\t\x01\0\0\0\0\0\x01\x01\x01\t\0\0\0\0\0\0\0\x01\x01\x01\t\t\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\t\t\t\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\t\0\0\0\0\t\t\t\t\t\t\0\t\0\t\t\t\t\t\t\t\t\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\t\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\t\t\t\t\t\t\t\0\0\0\0\0\0\0\t\t\t\t\t\t\t\t\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\t\t\t\t\t\t\t\t\t\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\t\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\0\0\0\0\0\0\t\0\t\0\t\0\0\0\0\t\t\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\0\t\t\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\t\t\t\t\0\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\0\0\0\0\t\t\0\t\t\t\0\0\t\t\t\t\t\t\t\0\0\t\t\t\t\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\t\t\0\t\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\t\t\t\t\0\0\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\t\t\t\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\x16\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\x01\x01\t\t\t\t\0\0\0\0\0\0\0\0\0\x01\x01\t\t\t\0\0\0\0\0\0\0\0\0\0\0\x01\x01\t\t\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\t\t\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\0\0\t\t\t\x02\t\x01\x01\x01\x01\x01\t\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\t\t\t\t\t\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\0\t\t\t\t\t\t\t\t\t\t\t\t\t\0\0\t\t\t\t\t\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\t\t\t\t\t\t\t\t\t\t\t\t\t\x01\x01\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\x01\x01\x01\t\t\t\t\t\t\t\t\t\x01\x01\x01\x01\t\x01\x01\t\t\t\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\0\x01\0\x01\0\0\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\0\0\0\x16\x16\x16\x16\x16\x16\x16\0\x16\x16\x16\0\t\x15\x02\x02\0\0\0\0\0\0\0\0\x0B\x0B\0\0\0\0\0\0\x0B\0\0\x04\x0C\x0C\x02\x02\x02\x02\x02\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\x07\0\0\0\0\0\0\0\0\0\0\x16\x02\x02\x02\x02\x02\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\x01\0\0\x01\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\0\x01\0\x01\x01\x01\x01\0\x01\0\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\x01\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\x01\x01\x01\x01\t\t\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\x16\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\x03\0\0\0\0\0\x01\x01\0\0\0\0\0\0\0\0\0\t\t\x03\x03\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\x03\0\0\0\0\0\0\0\0\t\t\t\0\t\t\t\t\t\t\t\t\t\t\0\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\x01\x01\t\x01\x01\x01\t\x01\x01\x01\x01\t\x01\x01\x01\x01\t\t\t\t\t\0\0\0\0\t\0\0\0\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\0\0\0\0\0\0\0\0\0\0\t\t\x01\x01\x01\x01\x01\x01\0\0\0\x01\0\x01\x01\t\x01\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\t\x01\x01\x01\x01\x01\x01\x01\x01\t\t\0\0\0\0\0\0\0\0\0\0\0\t\t\t\0\0\t\0\t\t\t\0\0\t\t\0\0\0\0\0\t\t\0\0\x01\x01\x01\t\t\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\t\t\t\t\t\t\t\t\0\t\t\0\0\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\0\0\0\0\0\x0E\t\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\0\x0E\x0E\x0E\x0E\x0E\x0E\x0E\0\x0E\x0E\x0E\x0E\x0E\0\x0E\0\x0E\x0E\0\x0E\x0E\0\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\x07\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\x07\x07\x05\0\x0B\0\x05\x04\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x02\0\0\0\0\0\0\0\x0B\0\0\0\0\x05\0\x0B\0\0\0\0\0\0\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\t\t\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\x02\x02\x02\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\0\x01\x01\x01\x01\x01\x01\0\x01\x01\0\0\0\x01\0\0\x01\x01\x01\0\x01\x01\0\0\0\0\0\0\0\0\0\0\x01\t\t\t\0\t\t\0\0\0\0\0\t\t\t\t\x01\x01\x01\x01\x01\x01\0\0\t\t\t\0\0\0\0\t\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\t\t\t\t\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\0\0\0\t\t\t\t\t\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\t\t\0\0\0\x01\x01\x01\0\0\0\0\0\0\0\0\0\0\0\x01\x01\t\t\t\t\0\0\0\0\0\0\0\0\0\0\t\x01\x01\t\t\x01\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\t\t\t\t\0\0\x06\0\0\t\0\0\0\0\0\0\0\0\0\0\x06\0\0\0\0\x01\t\t\x01\0\0\0\0\0\0\0\0\x01\x01\x01\t\0\0\x01\0\0\0\0\0\0\0\0\0\t\x01\x01\x01\x01\0\0\0\0\t\t\t\t\0\t\t\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x01\0\x01\0\0\0\t\t\t\t\t\t\t\t\0\0\0\0\0\0\t\x01\t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\0\x01\t\t\t\t\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\x01\x01\0\x01\x01\x01\x01\x01\0\t\t\x01\t\t\x01\0\0\0\0\0\0\t\0\0\0\0\0\x01\x01\x01\t\t\0\0\t\t\t\t\t\t\t\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\0\x01\0\x01\x01\x01\x01\x01\x01\0\x01\t\t\t\t\t\t\t\t\0\t\0\0\t\0\t\t\t\t\0\t\t\t\t\x01\t\x01\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\t\t\x01\x01\x01\x01\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\t\x01\t\t\t\t\x01\x01\0\x01\0\0\0\0\0\0\0\0\t\t\t\t\t\t\0\0\t\t\t\t\t\t\t\t\0\0\0\0\0\0\0\0\x01\x01\x01\x01\t\t\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x01\x01\x01\x01\x01\x01\x01\0\0\x01\0\0\x01\x01\x01\x01\t\t\t\t\t\t\0\t\t\0\0\t\t\t\t\x01\t\t\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\0\0\t\t\t\t\t\t\x01\0\x01\t\0\0\0\0\0\0\0\0\0\0\0\x01\t\t\t\t\t\t\t\t\t\t\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\x01\t\t\t\t\0\x01\t\t\t\t\t\t\t\t\t\t\t\x01\x01\x01\x01\t\t\t\t\t\t\t\t\t\t\0\0\0\x01\0\0\x01\t\t\t\t\t\t\0\0\0\t\0\t\t\0\t\t\t\t\t\t\x01\t\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\t\t\0\t\t\t\t\t\x01\0\0\0\0\0\0\0\x01\x01\x01\t\t\t\t\0\0\0\0\0\0\0\0\0\t\t\x01\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\0\0\0\t\t\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\t\0\0\0\0\0\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\t\x01\x01\x01\x01\x01\x01\t\t\t\t\t\t\t\t\t\0\0\0\0\0\0\0\t\x01\x01\0\x01\t\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\0\x03\x03\x03\x03\x03\x03\x03\0\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\x03\x03\x03\x03\0\0\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\0\0\t\t\0\x02\x02\x02\x02\0\0\0\0\0\0\0\0\0\0\0\0\t\t\t\t\t\0\0\0\t\t\t\x02\x02\x02\x02\x02\x02\x02\x02\t\t\t\t\t\0\0\t\t\t\t\t\t\t\0\0\0\0\t\t\t\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\x01\x01\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\x01\0\0\0\x01\x01\x01\x01\x01\x01\0\0\x01\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\0\0\x06\x06\t\t\t\t\t\t\t\0\0\0\0\t\t\t\t\t\0\t\t\0\t\t\t\t\t\0\0\0\0\0\t\t\t\t\t\t\t\x01\x01\x01\x01\x01\x01\x01\0\0\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\0\x01\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\x01\x01\0\x01\x01\x01\x01\t\t\t\t\t\t\t\x01\0\0\0\0\x01\x01\0\x01\0\0\x01\0\x01\x01\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\0\x01\0\x01\0\0\0\0\x01\0\0\0\0\x01\0\x01\0\x01\0\x01\x01\x01\0\x01\x01\0\x01\0\0\x01\0\x01\0\x01\0\x01\0\x01\x01\0\x01\0\0\x01\x01\x01\x01\0\x01\x01\x01\x01\0\x01\x01\x01\x01\0\x01\0\x01\x01\x01\0\x01\x01\x01\x01\x01\0\x01\x01\x01\x01\x01\0\0\0\0\0\0\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0") }, icu::properties::props::WordBreak::Other));
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyEnumWordBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyEnumWordBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_ENUM_WORD_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_enum_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumWordBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_enum_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumWordBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_enum_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyEnumWordBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyEnumWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyEnumWordBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_enum_word_break_v1 as impl_property_enum_word_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_bidi_class_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_bidi_class_v1.rs.data
new file mode 100644
index 00000000..7e8bc8a0
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_bidi_class_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongBidiClassV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 478B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_bidi_class_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_BIDI_CLASS_V1: &'static <icu::properties::provider::PropertyNameLongBidiClassV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x17\0\r\0\x1A\0)\0;\0N\0[\0k\0~\0\x8F\0\x9A\0\xA7\0\xBE\0\xD4\0\xE1\0\xF8\0\x0E\x01$\x013\x01C\x01W\x01l\x01\x81\x01Left_To_RightRight_To_LeftEuropean_NumberEuropean_SeparatorEuropean_TerminatorArabic_NumberCommon_SeparatorParagraph_SeparatorSegment_SeparatorWhite_SpaceOther_NeutralLeft_To_Right_EmbeddingLeft_To_Right_OverrideArabic_LetterRight_To_Left_EmbeddingRight_To_Left_OverridePop_Directional_FormatNonspacing_MarkBoundary_NeutralFirst_Strong_IsolateLeft_To_Right_IsolateRight_To_Left_IsolatePop_Directional_Isolate") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongBidiClassV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongBidiClassV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_BIDI_CLASS_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongBidiClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongBidiClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongBidiClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongBidiClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_bidi_class_v1 as impl_property_name_long_bidi_class_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_canonical_combining_class_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_canonical_combining_class_v1.rs.data
new file mode 100644
index 00000000..54120566
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_canonical_combining_class_v1.rs.data
@@ -0,0 +1,85 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongCanonicalCombiningClassV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 693B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_canonical_combining_class_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_CANONICAL_COMBINING_CLASS_V1: &'static <icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameSparseMap {
+                map: unsafe {
+                    #[allow(unused_unsafe)]
+                    zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\x01\0\x06\0\x07\0\x08\0\t\0\n\0\x0B\0\x0C\0\r\0\x0E\0\x0F\0\x10\0\x11\0\x12\0\x13\0\x14\0\x15\0\x16\0\x17\0\x18\0\x19\0\x1A\0\x1B\0\x1C\0\x1D\0\x1E\0\x1F\0 \0!\0\"\0#\0$\0T\0[\0g\0k\0v\0z\0\x81\0\x82\0\x84\0\x85\0\xC8\0\xCA\0\xD6\0\xD8\0\xDA\0\xDC\0\xDE\0\xE0\0\xE2\0\xE4\0\xE6\0\xE8\0\xE9\0\xEA\0\xF0\0") }, unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b":\0\r\0\x14\0\x1F\0$\x000\x006\0;\0@\0E\0J\0O\0T\0Y\0^\0c\0h\0m\0r\0w\0|\0\x81\0\x86\0\x8B\0\x90\0\x95\0\x9A\0\x9F\0\xA4\0\xA9\0\xAE\0\xB3\0\xB8\0\xBD\0\xC2\0\xC7\0\xCD\0\xD3\0\xD9\0\xDF\0\xE5\0\xEB\0\xF1\0\xF7\0\n\x01\x18\x01&\x01:\x01D\x01I\x01T\x01X\x01]\x01g\x01l\x01w\x01\x83\x01\x8F\x01Not_ReorderedOverlayHan_ReadingNuktaKana_VoicingViramaCCC10CCC11CCC12CCC13CCC14CCC15CCC16CCC17CCC18CCC19CCC20CCC21CCC22CCC23CCC24CCC25CCC26CCC27CCC28CCC29CCC30CCC31CCC32CCC33CCC34CCC35CCC36CCC84CCC91CCC103CCC107CCC118CCC122CCC129CCC130CCC132CCC133Attached_Below_LeftAttached_BelowAttached_AboveAttached_Above_RightBelow_LeftBelowBelow_RightLeftRightAbove_LeftAboveAbove_RightDouble_BelowDouble_AboveIota_Subscript") })
+                },
+            };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_CANONICAL_COMBINING_CLASS_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongCanonicalCombiningClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_canonical_combining_class_v1 as impl_property_name_long_canonical_combining_class_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_east_asian_width_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_east_asian_width_v1.rs.data
new file mode 100644
index 00000000..f5089ab0
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_east_asian_width_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongEastAsianWidthV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 80B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_east_asian_width_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_EAST_ASIAN_WIDTH_V1: &'static <icu::properties::provider::PropertyNameLongEastAsianWidthV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x06\0\x07\0\x10\0\x19\0\"\0(\0NeutralAmbiguousHalfwidthFullwidthNarrowWide") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongEastAsianWidthV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongEastAsianWidthV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_EAST_ASIAN_WIDTH_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongEastAsianWidthV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongEastAsianWidthV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongEastAsianWidthV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongEastAsianWidthV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_east_asian_width_v1 as impl_property_name_long_east_asian_width_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_general_category_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_general_category_v1.rs.data
new file mode 100644
index 00000000..14656f01
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_general_category_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongGeneralCategoryV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 506B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_general_category_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_GENERAL_CATEGORY_V1: &'static <icu::properties::provider::PropertyNameLongGeneralCategoryV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x1E\0\n\0\x1A\0*\0:\0I\0U\0d\0r\0~\0\x8C\0\x99\0\xA5\0\xB4\0\xC2\0\xD5\0\xDC\0\xE2\0\xED\0\xF6\0\x06\x01\x16\x01'\x01<\x01M\x01X\x01g\x01v\x01\x82\x01\x95\x01UnassignedUppercase_LetterLowercase_LetterTitlecase_LetterModifier_LetterOther_LetterNonspacing_MarkEnclosing_MarkSpacing_MarkDecimal_NumberLetter_NumberOther_NumberSpace_SeparatorLine_SeparatorParagraph_SeparatorControlFormatPrivate_UseSurrogateDash_PunctuationOpen_PunctuationClose_PunctuationConnector_PunctuationOther_PunctuationMath_SymbolCurrency_SymbolModifier_SymbolOther_SymbolInitial_PunctuationFinal_Punctuation") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongGeneralCategoryV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongGeneralCategoryV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_GENERAL_CATEGORY_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongGeneralCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongGeneralCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongGeneralCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongGeneralCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_general_category_v1 as impl_property_name_long_general_category_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_grapheme_cluster_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_grapheme_cluster_break_v1.rs.data
new file mode 100644
index 00000000..a92fb7cf
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_grapheme_cluster_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongGraphemeClusterBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 169B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_grapheme_cluster_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_GRAPHEME_CLUSTER_BREAK_V1: &'static <icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x12\0\x05\0\x0C\0\x0E\0\x14\0\x15\0\x17\0\x19\0\x1C\0\x1D\0\x1E\0)\x000\0B\0H\0R\0\\\0j\0OtherControlCRExtendLLFLVLVTTVSpacingMarkPrependRegional_IndicatorE_BaseE_Base_GAZE_ModifierGlue_After_ZwjZWJ") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_GRAPHEME_CLUSTER_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongGraphemeClusterBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_grapheme_cluster_break_v1 as impl_property_name_long_grapheme_cluster_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_hangul_syllable_type_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_hangul_syllable_type_v1.rs.data
new file mode 100644
index 00000000..588661a8
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_hangul_syllable_type_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongHangulSyllableTypeV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 108B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_hangul_syllable_type_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_HANGUL_SYLLABLE_TYPE_V1: &'static <icu::properties::provider::PropertyNameLongHangulSyllableTypeV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x06\0\x0E\0\x1A\0$\x001\0<\0Not_ApplicableLeading_JamoVowel_JamoTrailing_JamoLV_SyllableLVT_Syllable") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongHangulSyllableTypeV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongHangulSyllableTypeV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_HANGUL_SYLLABLE_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongHangulSyllableTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongHangulSyllableTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongHangulSyllableTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongHangulSyllableTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_hangul_syllable_type_v1 as impl_property_name_long_hangul_syllable_type_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_indic_syllabic_category_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_indic_syllabic_category_v1.rs.data
new file mode 100644
index 00000000..0d338cc4
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_indic_syllabic_category_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongIndicSyllabicCategoryV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 622B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_indic_syllabic_category_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_INDIC_SYLLABIC_CATEGORY_V1: &'static <icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"%\0\x05\0\r\0\x12\0'\08\0A\0O\0^\0s\0\x8E\0\x9E\0\xAE\0\xC3\0\xDC\0\xEE\0\x01\x01\x1B\x011\x01@\x01Q\x01W\x01g\x01q\x01v\x01|\x01\x89\x01\x94\x01\xA4\x01\xB5\x01\xC0\x01\xC9\x01\xCF\x01\xD6\x01\xDB\x01\xEA\x01\xFB\x01OtherAvagrahaBinduBrahmi_Joining_NumberCantillation_MarkConsonantConsonant_DeadConsonant_FinalConsonant_Head_LetterConsonant_Initial_PostfixedConsonant_KillerConsonant_MedialConsonant_PlaceholderConsonant_Preceding_RephaConsonant_PrefixedConsonant_SubjoinedConsonant_Succeeding_RephaConsonant_With_StackerGemination_MarkInvisible_StackerJoinerModifying_LetterNon_JoinerNuktaNumberNumber_JoinerPure_KillerRegister_ShifterSyllable_ModifierTone_LetterTone_MarkViramaVisargaVowelVowel_DependentVowel_IndependentReordering_Killer") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_INDIC_SYLLABIC_CATEGORY_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongIndicSyllabicCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_indic_syllabic_category_v1 as impl_property_name_long_indic_syllabic_category_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_joining_type_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_joining_type_v1.rs.data
new file mode 100644
index 00000000..f37d4f7c
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_joining_type_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongJoiningTypeV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 107B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_joining_type_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_JOINING_TYPE_V1: &'static <icu::properties::provider::PropertyNameLongJoiningTypeV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x06\0\x0B\0\x17\0#\0/\0<\0Non_JoiningJoin_CausingDual_JoiningLeft_JoiningRight_JoiningTransparent") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongJoiningTypeV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongJoiningTypeV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_JOINING_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongJoiningTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongJoiningTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongJoiningTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongJoiningTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_joining_type_v1 as impl_property_name_long_joining_type_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_line_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_line_break_v1.rs.data
new file mode 100644
index 00000000..67a8c2c7
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_line_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongLineBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 616B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_line_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_LINE_BREAK_V1: &'static <icu::properties::provider::PropertyNameLongLineBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"0\0\x07\0\x10\0\x1A\0$\0/\0;\0J\0Z\0k\0y\0\x88\0\x93\0\x97\0\x9D\0\xA8\0\xB3\0\xC0\0\xC9\0\xD3\0\xDA\0\xEA\0\xF9\0\x07\x01\x10\x01\x1F\x01(\x01-\x01:\x01A\x01J\x01U\x01W\x01Y\x01[\x01]\x01_\x01p\x01\x8C\x01\x99\x01\xAB\x01\xB1\x01\xBB\x01\xBE\x01\xC4\x01\xD2\x01\xDE\x01\xEA\x01UnknownAmbiguousAlphabeticBreak_BothBreak_AfterBreak_BeforeMandatory_BreakContingent_BreakClose_PunctuationCombining_MarkCarriage_ReturnExclamationGlueHyphenIdeographicInseparableInfix_NumericLine_FeedNonstarterNumericOpen_PunctuationPostfix_NumericPrefix_NumericQuotationComplex_ContextSurrogateSpaceBreak_SymbolsZWSpaceNext_LineWord_JoinerH2H3JLJTJVClose_ParenthesisConditional_Japanese_StarterHebrew_LetterRegional_IndicatorE_BaseE_ModifierZWJAksaraAksara_PrebaseAksara_StartVirama_FinalVirama") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongLineBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongLineBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_LINE_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongLineBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongLineBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongLineBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongLineBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_line_break_v1 as impl_property_name_long_line_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_script_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_script_v1.rs.data
new file mode 100644
index 00000000..30866a4b
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_script_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongScriptV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 2055B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_script_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_SCRIPT_V1: &'static <icu::properties::provider::PropertyNameLongScriptV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\xD0\0\x06\0\x0F\0\x15\0\x1D\0$\0,\x004\0:\0B\0I\0S\0[\0c\0i\0n\0v\0~\0\x81\0\x87\0\x8D\0\x95\0\x9C\0\xA4\0\xA9\0\xAC\0\xB1\0\xBA\0\xC3\0\xCA\0\xCF\0\xD9\0\xDE\0\xE3\0\xEA\0\xF0\0\xF5\0\xFB\0\x01\x01\x05\x01\x0C\x01\x1F\x01!\x01(\x01/\x014\x01<\x01C\x01J\x01O\x01W\x01^\x01e\x01k\x01s\x01\x87\x01\x8F\x01\x99\x01\xA3\x01\xAF\x01\xBA\x01\xC2\x01\xCD\x01\xD5\x01\xDA\x01\xDE\x01\xE4\x01\xE8\x01\xEC\x01\xF0\x01\xF4\x01\xF8\x01\x0C\x02\x10\x02\x14\x02\x18\x02$\x021\x025\x02=\x02E\x02I\x02M\x02S\x02[\x02b\x02f\x02z\x02}\x02\x87\x02\x91\x02\x99\x02\xA3\x02\xA7\x02\xAB\x02\xAF\x02\xB3\x02\xB7\x02\xBB\x02\xBF\x02\xC2\x02\xC6\x02\xCF\x02\xD3\x02\xDA\x02\xE0\x02\xE4\x02\xEC\x02\xF2\x02\xF8\x02\0\x03\x06\x03\x10\x03\x1B\x03$\x03(\x034\x03D\x03K\x03Q\x03U\x03[\x03e\x03z\x03\x89\x03\x8D\x03\xA3\x03\xAC\x03\xB4\x03\xB8\x03\xBC\x03\xC1\x03\xC5\x03\xC9\x03\xDA\x03\xE3\x03\xEB\x03\xF2\x03\xF9\x03\xFD\x03\x01\x04\x0E\x04\x1E\x04/\x048\x04A\x04J\x04U\x04Y\x04]\x04`\x04e\x04l\x04x\x04}\x04\x83\x04\x87\x04\x9C\x04\xA2\x04\xA9\x04\xBB\x04\xC3\x04\xC7\x04\xCD\x04\xD1\x04\xD8\x04\xE3\x04\xEA\x04\xEF\x04\xF8\x04\xFF\x04\x03\x05\x08\x05\x0C\x05\x10\x05\x14\x05!\x05(\x058\x05=\x05J\x05Q\x05\\\x05k\x05r\x05}\x05\x84\x05\x9A\x05\xA5\x05\xAB\x05\xB5\x05\xC0\x05\xD3\x05\xD9\x05\xE5\x05\xEF\x05\xF5\x05\xF9\x05\x01\x06\x05\x06\x10\x06\x14\x06\x19\x06%\x06.\x065\x06<\x06B\x06CommonInheritedArabicArmenianBengaliBopomofoCherokeeCopticCyrillicDeseretDevanagariEthiopicGeorgianGothicGreekGujaratiGurmukhiHanHangulHebrewHiraganaKannadaKatakanaKhmerLaoLatinMalayalamMongolianMyanmarOghamOld_ItalicOriyaRunicSinhalaSyriacTamilTeluguThaanaThaiTibetanCanadian_AboriginalYiTagalogHanunooBuhidTagbanwaBrailleCypriotLimbuLinear_BOsmanyaShavianTai_LeUgariticKatakana_Or_HiraganaBugineseGlagoliticKharoshthiSyloti_NagriNew_Tai_LueTifinaghOld_PersianBalineseBatakBlisBrahmiChamCirtCyrsEgydEgyhEgyptian_HieroglyphsGeokHansHantPahawh_HmongOld_HungarianIndsJavaneseKayah_LiLatfLatgLepchaLinear_AMandaicMayaMeroitic_HieroglyphsNkoOld_TurkicOld_PermicPhags_PaPhoenicianMiaoRoroSaraSyreSyrjSyrnTengVaiVispCuneiformZxxxUnknownCarianJpanTai_ThamLycianLydianOl_ChikiRejangSaurashtraSignWritingSundaneseMoonMeetei_MayekImperial_AramaicAvestanChakmaKoreKaithiManichaeanInscriptional_PahlaviPsalter_PahlaviPhlvInscriptional_ParthianSamaritanTai_VietZmthZsymBamumLisuNkgbOld_South_ArabianBassa_VahDuployanElbasanGranthaKpelLomaMende_KikakuiMeroitic_CursiveOld_North_ArabianNabataeanPalmyreneKhudawadiWarang_CitiAfakJurcMroNushuSharadaSora_SompengTakriTangutWoleAnatolian_HieroglyphsKhojkiTirhutaCaucasian_AlbanianMahajaniAhomHatranModiMultaniPau_Cin_HauSiddhamAdlamBhaiksukiMarchenNewaOsageHanbJamoZsyeMasaram_GondiSoyomboZanabazar_SquareDograGunjala_GondiMakasarMedefaidrinHanifi_RohingyaSogdianOld_SogdianElymaicNyiakeng_Puachue_HmongNandinagariWanchoChorasmianDives_AkuruKhitan_Small_ScriptYezidiCypro_MinoanOld_UyghurTangsaTotoVithkuqiKawiNag_MundariAranGarayGurung_KhemaKirat_RaiOl_OnalSunuwarTodhriTulu_Tigalari") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongScriptV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongScriptV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_SCRIPT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongScriptV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongScriptV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongScriptV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongScriptV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_script_v1 as impl_property_name_long_script_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_sentence_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_sentence_break_v1.rs.data
new file mode 100644
index 00000000..d89f94ac
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_sentence_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongSentenceBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 128B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_sentence_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_SENTENCE_BREAK_V1: &'static <icu::properties::provider::PropertyNameLongSentenceBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x0F\0\x05\0\n\0\x0F\0\x15\0\x1A\0!\0(\0+\0-\x002\x007\09\0?\0A\0OtherATermCloseFormatLowerNumericOLetterSepSpSTermUpperCRExtendLFSContinue") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongSentenceBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongSentenceBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_SENTENCE_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongSentenceBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongSentenceBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongSentenceBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongSentenceBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_sentence_break_v1 as impl_property_name_long_sentence_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_vertical_orientation_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_vertical_orientation_v1.rs.data
new file mode 100644
index 00000000..82e52fe3
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_vertical_orientation_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongVerticalOrientationV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 84B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_vertical_orientation_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_VERTICAL_ORIENTATION_V1: &'static <icu::properties::provider::PropertyNameLongVerticalOrientationV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x04\0\x07\0\x1A\0-\0RotatedTransformed_RotatedTransformed_UprightUpright") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongVerticalOrientationV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongVerticalOrientationV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_VERTICAL_ORIENTATION_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongVerticalOrientationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongVerticalOrientationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongVerticalOrientationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongVerticalOrientationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_vertical_orientation_v1 as impl_property_name_long_vertical_orientation_v1;
diff --git a/vendor/icu_properties_data/data/property_name_long_word_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_long_word_break_v1.rs.data
new file mode 100644
index 00000000..450cdd68
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_long_word_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameLongWordBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 263B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_long_word_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_LONG_WORD_BREAK_V1: &'static <icu::properties::provider::PropertyNameLongWordBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x17\0\x05\0\x0C\0\x12\0\x1A\0#\0)\x000\0<\0>\0D\0F\0O\0V\0h\0u\0\x81\0\x8D\0\x93\0\x9D\0\xA7\0\xB5\0\xB8\0OtherALetterFormatKatakanaMidLetterMidNumNumericExtendNumLetCRExtendLFMidNumLetNewlineRegional_IndicatorHebrew_LetterSingle_QuoteDouble_QuoteE_BaseE_Base_GAZE_ModifierGlue_After_ZwjZWJWSegSpace") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameLongWordBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameLongWordBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_LONG_WORD_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_long_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongWordBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_long_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongWordBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_long_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameLongWordBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameLongWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameLongWordBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_long_word_break_v1 as impl_property_name_long_word_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_bidi_class_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_bidi_class_v1.rs.data
new file mode 100644
index 00000000..4b9012df
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_bidi_class_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseBidiClassV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 463B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_bidi_class_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_BIDI_CLASS_V1: &'static <icu::properties::provider::PropertyNameParseBidiClassV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE1lABCEFLNOPRSW\0\0\0\0\0\0\0\0\x01\x01\x01\x1D4Hy\x94\xCF\xE5\xF67r\x84\xC3LNr\x01\x02\x8D\x85abic_\xC2LN\x06etter\x8Dumber\x85\x87\xC2No\x02\x90\x02undary_Neutral\x90\x02\xC2So\x01\x86mmon_Separator\x86\xC4NSTu\x01\x02\x03\x82\x83\x84ropean_\xC3NST\x06\x0Fumber\x82eparator\x83erminator\x84\xC2Si\x03I\x90\x03rst_Strong_Isolate\x90\x03\x80\xC2Re\n\xC3EIO\x01\x03\x8B\x90\x04\x8Cft_To_Right\x80_\xC3EIO\t\x11mbedding\x8Bsolate\x90\x04verride\x8C\xC2So\x03M\x90\x01nspacing_Mark\x90\x01\xC2Nt\x01\x8Aher_Neutral\x8A\xC3Dao\x08\x1A\xC2FI\x02\x90\0\x90\x06ragraph_Separator\x87p_Directional_\xC2FI\x07ormat\x90\0solate\x90\x06\x81\xC2Li\n\xC3EIO\x01\x03\x8E\x90\x05\x8Fght_To_Left\x81_\xC3EIO\t\x11mbedding\x8Esolate\x90\x05verride\x8F\x88egment_Separator\x88\xC2Sh\x01\x89ite_Space\x89") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseBidiClassV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseBidiClassV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_BIDI_CLASS_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseBidiClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseBidiClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseBidiClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseBidiClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_bidi_class_v1 as impl_property_name_parse_bidi_class_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_canonical_combining_class_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_canonical_combining_class_v1.rs.data
new file mode 100644
index 00000000..7137fe41
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_canonical_combining_class_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseCanonicalCombiningClassV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 479B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_canonical_combining_class_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_CANONICAL_COMBINING_CLASS_V1: &'static <icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE1lABCDHIKLNORV\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01Yz\x110AUel\x86\x91\x99\x91V\xC5LRTbt\x02\x04\x12'\x91T\x91X\xC2AB\x05\x91FR\x91H\x91:L\x918ove\x91V_\xC2LR\x05eft\x91Tight\x91Xtached_\xC2AB\x0Ebove\x91F_Right\x91Helow\x91:_Left\x918\x91L\xC3LRe\x02\x04\x91J\x91Nlow\x91L_\xC2LR\x05eft\x91Jight\x91NCC\xC512389Ai\x85\x88\xCA0123456789\t\r\x16#$%')+\x8A\xC237\x02\x90W\x90[\x8B8\x90f\x8C\xC229\x02\x90j\x90q\x8D\xC3023\x02\x04\x90r\x90t\x90u\x8E\x8F\x90\0\x90\x01\x90\x02\x90\x03\xCA0123456789\x02\x04\x06\x08\n\x0C\x0E\x10\x12\x90\x04\x90\x05\x90\x06\x90\x07\x90\x08\x90\t\x90\n\x90\x0B\x90\x0C\x90\r\xC70123456\x02\x04\x06\x08\n\x0C\x90\x0E\x90\x0F\x90\x10\x90\x11\x90\x12\x90\x13\x90\x144\x90D1\x90K\xC3ABo\x02\x04\x91Z\x91Yuble_\xC2AB\x06bove\x91Zelow\x91Y\xC2Aa\x03NR\x86n_Reading\x86\xC2So\x02\x91`ta_Subscript\x91`\xC2Va\x01\x88na_Voicing\x88\x91Peft\x91P\xC4KRou\x01\x02\x0E\x87\x80t_Reordered\x80kta\x87\xC2Vv\x01\x81erlay\x81\x91Right\x91R\xC2Ri\x01\x89rama\x89") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_CANONICAL_COMBINING_CLASS_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseCanonicalCombiningClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_canonical_combining_class_v1 as impl_property_name_parse_canonical_combining_class_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_east_asian_width_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_east_asian_width_v1.rs.data
new file mode 100644
index 00000000..7e38c32f
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_east_asian_width_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseEastAsianWidthV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 86B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_east_asian_width_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_EAST_ASIAN_WIDTH_V1: &'static <icu::properties::provider::PropertyNameParseEastAsianWidthV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xC5AFHNW\n\x14\x1E/\x81mbiguous\x81\x83ullwidth\x83\x82alfwidth\x82\x80\xC2ae\x06\x84rrow\x84utral\x80\x85ide\x85") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseEastAsianWidthV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseEastAsianWidthV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_EAST_ASIAN_WIDTH_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseEastAsianWidthV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseEastAsianWidthV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseEastAsianWidthV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseEastAsianWidthV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_east_asian_width_v1 as impl_property_name_parse_east_asian_width_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_general_category_mask_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_general_category_mask_v1.rs.data
new file mode 100644
index 00000000..e6e6540b
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_general_category_mask_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseGeneralCategoryMaskV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 744B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_general_category_mask_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_GENERAL_CATEGORY_MASK_V1: &'static <icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE1qCDEFILMNOPSTUZcdp\0\0\0\0\0\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02u\x96\xA4\xBF\xD3\x19Sv\xB8\x06Td\x80\x8C\x91\x96\x93\xEFj\xC8acflnosu\r\x0E\x10!\"QSsed_Letter\x93\xEFo\x8F\x90\0ose_Punctuation\x90\x05\x80\x90\x01\xC2mn\x0Ebining_Mark\x93\xEFm\xC2nt\x13ector_Punctuation\x90\x06rol\x8F\x90\x02rrency_Symbol\x90\t\xC2ae\x10sh_Punctuation\x90\x03cimal_Number\x89nclosing_Mark\x87\xC2io\x11nal_Punctuation\x90\rrmat\x90\0nitial_Punctuation\x90\x0C\x93\xEFn\xC8Ceilmotu\x03\x12\x1F !12\x93\xEFotter\x93\xEFn_Number\x8Ane_Separator\x8D\x82\x84\x85wercase_Letter\x82\x83\x81\x93\xEFm\xC5aceno\x12\x13\x14\x15\xC2rt\x04k\x93\xEFmh_Symbol\x90\x08\x88\x87\x86difier_\xC2LS\x06etter\x84ymbol\x90\n\x93\xEFl\xC4dlou\x01\x02\x11\x89\x8A\x8Bnspacing_Mark\x86mber\x93\xEFl\xC2pt\x10en_Punctuation\x90\x04her\x93\xEFj_\xC4LNPS\x06\x0C\x18etter\x85umber\x8Bunctuation\x90\x07ymbol\x90\x0B\x93\xEFi\xCAacdefiorsu\x12\x14\x16\x18\x1A\x1C\x1E)+ragraph_Separator\x8E\x90\x06\x90\x03\x90\x05\x90\r\x90\x0C\x90\x07ivate_Use\x90\x01\x90\x04nctuation\x93\xEFi\x93\xEFh\xC8cekmopuy\x02\x0C\x0E\x10\x12+4\x90\tparator\x93\xEFk\x90\n\x90\x08\x90\x0Bac\xC2ei\x0B_Separator\x8Cng_Mark\x88rrogate\x90\x02mbol\x93\xEFhitlecase_Letter\x83\xC2np\tassigned\x80percase_Letter\x81\x93\xEFk\xC3lps\x01\x02\x8D\x8E\x8Cntrl\x8Figit\x89unct\x93\xEFi") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_GENERAL_CATEGORY_MASK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_general_category_mask_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_general_category_mask_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_general_category_mask_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseGeneralCategoryMaskV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_general_category_mask_v1 as impl_property_name_parse_general_category_mask_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_general_category_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_general_category_v1.rs.data
new file mode 100644
index 00000000..79bd76c5
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_general_category_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseGeneralCategoryV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 619B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_general_category_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_GENERAL_CATEGORY_V1: &'static <icu::properties::provider::PropertyNameParseGeneralCategoryV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE1pCDEFILMNOPSTUZcd\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x02\x02\x02Rs\x81\x9C\xB0\xEB\x1B2q\xAE\xE4\xF4\x10\x19\x1E\xC7cflnosu\x01\x03\x14\x1535\x8F\x90\0ose_Punctuation\x90\x05\x80\x90\x01n\xC2nt\x13ector_Punctuation\x90\x06rol\x8F\x90\x02rrency_Symbol\x90\t\xC2ae\x10sh_Punctuation\x90\x03cimal_Number\x89nclosing_Mark\x87\xC2io\x11nal_Punctuation\x90\rrmat\x90\0nitial_Punctuation\x90\x0C\xC7eilmotu\x0C\x19\x1A\x1B+,tter_Number\x8Ane_Separator\x8D\x82\x84\x85wercase_Letter\x82\x83\x81\xC5aceno\x0B\x0C\r\x0Eth_Symbol\x90\x08\x88\x87\x86difier_\xC2LS\x06etter\x84ymbol\x90\n\xC3dlo\x01\x02\x89\x8A\x8Bnspacing_Mark\x86\xC2pt\x10en_Punctuation\x90\x04her_\xC4LNPS\x06\x0C\x18etter\x85umber\x8Bunctuation\x90\x07ymbol\x90\x0B\xC9acdefiors\x12\x14\x16\x18\x1A\x1C\x1E)ragraph_Separator\x8E\x90\x06\x90\x03\x90\x05\x90\r\x90\x0C\x90\x07ivate_Use\x90\x01\x90\x04\xC6ckmopu\x02\x04\x06\x08!\x90\t\x90\n\x90\x08\x90\x0Bac\xC2ei\x0B_Separator\x8Cng_Mark\x88rrogate\x90\x02itlecase_Letter\x83\xC2np\tassigned\x80percase_Letter\x81\xC3lps\x01\x02\x8D\x8E\x8Cntrl\x8Figit\x89") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseGeneralCategoryV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseGeneralCategoryV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_GENERAL_CATEGORY_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseGeneralCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseGeneralCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseGeneralCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseGeneralCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_general_category_v1 as impl_property_name_parse_general_category_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_grapheme_cluster_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_grapheme_cluster_break_v1.rs.data
new file mode 100644
index 00000000..1e4a5b71
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_grapheme_cluster_break_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseGraphemeClusterBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 194B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_grapheme_cluster_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_GRAPHEME_CLUSTER_BREAK_V1: &'static <icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xCCCEGLOPRSTVXZ\x0E7LUZe{\x8A\x8B\x8C\x8E\xC3NRo\x01\x02\x81\x82ntrol\x81\xC5BMX_x\x03\x04\x05\x1A\x8DG\x8E\x8F\x83\xC2BM\tase\x8D_GAZ\x8Eodifier\x8Ftend\x83\xC2Al\x03Z\x90\0ue_After_Zwj\x90\0\x84\xC2FV\x01\x85\x86T\x87ther\x80\xC2Pr\x01\x8Bepend\x8B\xC2Ie\x01\x8Cgional_Indicator\x8C\xC2Mp\x01\x8AacingMark\x8A\x88\x89X\x80WJ\x90\x01") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_GRAPHEME_CLUSTER_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseGraphemeClusterBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_grapheme_cluster_break_v1 as impl_property_name_parse_grapheme_cluster_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_hangul_syllable_type_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_hangul_syllable_type_v1.rs.data
new file mode 100644
index 00000000..0c8a2cd9
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_hangul_syllable_type_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseHangulSyllableTypeV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 116B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_hangul_syllable_type_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_HANGUL_SYLLABLE_TYPE_V1: &'static <icu::properties::provider::PropertyNameParseHangulSyllableTypeV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xC4LNTV);I\x81\xC2Ve\x19\x84\xC2T_\x0B\x85_Syllable\x85Syllable\x84ading_Jamo\x81\xC2Ao\x01\x80t_Applicable\x80\x83railing_Jamo\x83\x82owel_Jamo\x82") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseHangulSyllableTypeV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseHangulSyllableTypeV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_HANGUL_SYLLABLE_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseHangulSyllableTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseHangulSyllableTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseHangulSyllableTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseHangulSyllableTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_hangul_syllable_type_v1 as impl_property_name_parse_hangul_syllable_type_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_indic_syllabic_category_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_indic_syllabic_category_v1.rs.data
new file mode 100644
index 00000000..a3f99a58
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_indic_syllabic_category_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseIndicSyllabicCategoryV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 510B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_indic_syllabic_category_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_INDIC_SYLLABIC_CATEGORY_V1: &'static <icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE1nABCGIJMNOPRSTV\0\0\0\0\0\0\x01\x01\x01\x01\x01\x01\x01\x08$\xD0\xE0\xF2\xF9\n.3?cu\x89vagraha\x81\xC2ir\x04ndu\x82ahmi_Joining_Number\x83\xC2ao\x10ntillation_Mark\x84nsonant\x85_\xC9DFHIKMPSW\x04\t\x14%+1Upead\x86inal\x87ead_Letter\x88nitial_Postfixed\x89iller\x8Aedial\x8B\xC2lr\naceholder\x8Ce\xC2cf\x0Ceding_Repha\x8Dixed\x8Eu\xC2bc\x07joined\x8Fceeding_Repha\x90\0ith_Stacker\x90\x01emination_Mark\x90\x02nvisible_Stacker\x90\x03oiner\x90\x04odifying_Letter\x90\x05\xC2ou\nn_Joiner\x90\x06\xC2km\x04ta\x90\x07ber\x90\x08_Joiner\x90\tther\x80ure_Killer\x90\ne\xC2go\x0Fister_Shifter\x90\x0Brdering_Killer\x90\x14yllable_Modifier\x90\x0Cone_\xC2LM\x07etter\x90\rark\x90\x0E\xC2io\x0F\xC2rs\x05ama\x90\x0Farga\x90\x10wel\x90\x11_\xC2DI\nependent\x90\x12ndependent\x90\x13") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_INDIC_SYLLABIC_CATEGORY_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseIndicSyllabicCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_indic_syllabic_category_v1 as impl_property_name_parse_indic_syllabic_category_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_joining_type_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_joining_type_v1.rs.data
new file mode 100644
index 00000000..be44c02f
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_joining_type_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseJoiningTypeV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 117B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_joining_type_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_JOINING_TYPE_V1: &'static <icu::properties::provider::PropertyNameParseJoiningTypeV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xC8CDJLNRTU\x01\x0E\x1A'2@L\x81\x82ual_Joining\x82oin_Causing\x81\x83eft_Joining\x83on_Joining\x80\x84ight_Joining\x84\x85ransparent\x85\x80") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseJoiningTypeV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseJoiningTypeV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_JOINING_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseJoiningTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseJoiningTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseJoiningTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseJoiningTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_joining_type_v1 as impl_property_name_parse_joining_type_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_line_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_line_break_v1.rs.data
new file mode 100644
index 00000000..24b76453
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_line_break_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseLineBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 780B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_line_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_LINE_BREAK_V1: &'static <icu::properties::provider::PropertyNameParseLineBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE1uABCEGHIJLMNOPQRSUVWXZ\0\0\x01\x01\x01\x01\x01\x01\x01\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02Bs\x04/7\\\x96\xA2\xB1\xC0\xEC\x02+:Rt{\x93\xA4\xA6\xC8IKLPSklm\x01\x03\x04\x06\x08!*\x81\x90\x1B\x82\x90\x1C\x90\x1Dsara\x90\x1B_\xC2PS\x08rebase\x90\x1Ctart\x90\x1Dphabetic\x82biguous\x81\xC52ABKr\x01\x02\x03\x04\x83\x84\x85\x86eak_\xC3ABS\x05\x11fter\x84\xC2eo\x05fore\x85th\x83ymbols\x90\x0B\xC9BJLMPRalo\x01\x03\x04\x05\x07\x08\x164\x87\x90\x15\x88\x89\x90\x14\x8Arriage_Return\x8Aose_P\xC2au\x0Brenthesis\x90\x14nctuation\x88\xC2mn\x1C\xC2bp\x0Bining_Mark\x89lex_Context\x90\x08\xC2dt\x1Aitional_Japanese_Starter\x90\x15ingent_Break\x87\xC5BMX_x\x02\x04\x05\x17\x90\x18\x90\x19\x8B\xC2BM\x05ase\x90\x18odifier\x90\x19clamation\x8B\xC2Ll\x01\x8Cue\x8C\xC623LYey\x02\x04\x06\x07\x14\x90\x0F\x90\x10\x90\x16\x8Dbrew_Letter\x90\x16phen\x8D\xC5DNSdn\x01\x02\x04\x0E\x8E\x8F\x90\0eographic\x8E\xC2fs\x0Cix_Numeric\x90\0ep\xC2ae\x06rable\x8Frable\x8F\xC3LTV\x02\x04\x90\x11\x90\x12\x90\x13\xC2Fi\x02\x90\x01ne_Feed\x90\x01andatory_Break\x86\xC6LSUeou\x02\x04\x06\x0F\x19\x90\r\x90\x02\x90\x03xt_Line\x90\rnstarter\x90\x02meric\x90\x03\xC2Pp\x02\x90\x04en_Punctuation\x90\x04\xC4ORor\x02\x04\x13\x90\x05\x90\x06stfix_Numeric\x90\x05efix_Numeric\x90\x06\xC2Uu\x02\x90\x07otation\x90\x07\xC2Ie\x02\x90\x17gional_Indicator\x90\x17\xC6AGPYpu\x02\x04\x06\x08\r\x90\x08\x90\t\x90\n\x90\x0Bace\x90\nrrogate\x90\tnknown\x80\xC3FIi\x02\x04\x90\x1E\x90\x1Frama\x90\x1F_Final\x90\x1E\xC2Jo\x02\x90\x0Erd_Joiner\x90\x0EX\x80W\x90\x0C\xC2JS\x02\x90\x1Apace\x90\x0C") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseLineBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseLineBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_LINE_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseLineBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseLineBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseLineBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseLineBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_line_break_v1 as impl_property_name_parse_line_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_script_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_script_v1.rs.data
new file mode 100644
index 00000000..3fd963dd
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_script_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseScriptV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 2611B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_script_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_SCRIPT_V1: &'static <icu::properties::provider::PropertyNameParseScriptV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE1yABCDEGHIJKLMNOPQRSTUVWXYZ\0\0\x01\x01\x02\x02\x03\x03\x03\x04\x04\x05\x06\x06\x07\x07\x07\x08\t\t\t\t\t\tb\xE4\x99\xDA\x1B\xA2\x14\\z*\x95\x90\x0B\xC9CKqK\"7Qt\x80\x92\xC7dfghnrv\n\x0E\x12\x16+Gl\xC2am\x03m\x91\x17\x91\x17ak\x91\x03hb\x91\x0Fom\x91\x11atolian_Hieroglyphs\x91\x0C\xC2am\n\xC2bn\x04\x82ic\x82\x918\xC3ein\x05\x07nian\x83\x90d\x83\xC2es\x06stan\x90et\x90e\xC7aehloru*1@DL^\xC4lmst\t\x0F\x19i\x90.nese\x90.u\x90rm\x90rs\x90va_Vah\x90v\xC2ak\x03k\x90/\x90/ng\x84ali\x84\xC2ak\x08iksuki\x91\x18s\x91\x18is\x900po\x85mofo\x85a\xC2hi\x06\x901mi\x901\x90\x1Elle\x90\x1E\xC2gh\ti\x90'nese\x90'\xC2di\x02\x90\x1Cd\x90\x1C\xC7ahiopuy:_cpz\x83\xC4knru\x03\x1A!m\x90f\xC2as\x11dian_Aboriginal\x90\x18\x90\x18i\x90Xan\x90Xcasian_Albanian\x91\x0F\xC4aeor\n\x11\x1A\xC2km\x04ma\x90f\x902r\x86okee\x86rasmian\x91-s\x91-rt\x903\xC2mp\x04mon\x80t\x87ic\x87\xC2mr\x03n\x911t\x90\x1Fneiform\x90U\xC2pr\x12r\xC2io\x04ot\x90\x1F_Minoan\x911\xC3ils\x05\x06llic\x88\x88\x904\xC5eiosu\x12#*-\xC2sv\x05eret\x89a\x8Anagari\x8A\xC2av\x03k\x91.es_Akuru\x91.gr\x91\"a\x91\"rt\x89pl\x90woyan\x90w\xC3glt\x1F3y\xC3dhp\x02\x04\x905\x906\x907tian_Hieroglyphs\x907\xC2by\x08a\x90xsan\x90xm\x91)aic\x91)hi\x8Bopic\x8B\xC6aeloru\x07\x14 1Dra\x919y\x919o\xC2kr\x02\x908\x8Cgian\x8Cag\x90(olitic\x90(\xC2nt\x08\xC2gm\x02\x91#\x91\x1Fh\x8Dic\x8D\xC2ae\x08n\x90ytha\x90y\xC2ek\x02k\x8E\x8E\xC4jknr\n\r\x19\xC2ar\x05rati\x8F\x8Fh\x91:jala_Gondi\x91#\xC2mu\x06ukhi\x90\0\x90\0ng_Khema\x91:\xC7aeilmru=EOS\\`\xC2nt2\x90\x01\xC7bgiostu\x02\x08\x17\x19\x1B\x1D\x91\x1C\x90\x02ul\x90\x02\x90\x01fi_Rohingya\x91&\x90\x1B\x909\x90:noo\x90\x1Br\x91\x12an\x91\x12br\x90\x03ew\x90\x03ra\x90\x04gana\x90\x04uw\x91\x0Cn\xC2gp\x02\x90;\x91*kt\x90&ng\x90<\xC3mnt\x10>perial_Aramaic\x90d\xC3dhs\x03\ns\x90=erited\x81criptional_Pa\xC2hr\x06lavi\x90jthian\x90mal\x90\x0E\xC3apu\x10\x14\xC2mv\x03o\x91\x1Da\x90>nese\x90>an\x90Yrc\x91\x04\xC8ahinoprt>}\x8C\x90\x94\x98\x9C\xC6ilntwy\x05\x08\x13(+thi\x90hi\x90?\xC2an\x02\x90\x06ada\x90\x05akana\x90\x06_Or_Hiragana\x90&i\x916ah_Li\x90?\xC5aimou\x0B\x1D&-r\x90)oshthi\x90)tan_Small_Script\x91/\xC2er\x03r\x90\x07\x90\x07j\x91\rki\x91\rdawadi\x91\x01\xC2rt\x08at_Rai\x91;s\x91/da\x90\x05re\x90gel\x90zai\x91;hi\x90h\xC5aeioy\x1F'KO\xC3not\x03\x08a\x90Z\x90\x08o\x90\x08\xC4fgin\x02\x04\x07\x90@\x90An\x90\t\x90\tpc\x90Bha\x90B\xC3mns\x06\x1Bb\x90 u\x90 \xC3abe\x02\x04\x90C\x90!ar_\xC2AB\x02\x90C\x90!u\x90sma\x90{\xC2cd\x07i\x90[an\x90[i\x90\\an\x90\\\xC9aeilortuyV\xAB\xAF\xB3\xC9\xCF\xD3\xDC\xC7hklnrsy\x0C\x14\x1C19E\xC2aj\x06jani\x91\x10\x91\x10a\x91$sar\x91$ayalam\x90\n\xC2di\x07\x90Daic\x90D\x90ichaean\x90ic\x91\x19hen\x91\x19aram_Gondi\x91\x1Fa\x90E\xC4denr\x0F\x1A(\xC2ef\tfaidrin\x91%\x91%tei_Mayek\x90cd\x90|e_Kikakui\x90|\xC2co\x02\x90}\x90Fitic_\xC2CH\x08ursive\x90}ieroglyphs\x90Fao\x90Lym\x90\n\xC3dno\x03\ri\x91\x13g\x90\x0Bolian\x90\x0Bn\x90bo\x91\x05o\x91\x05ei\x90clt\x91\x14ani\x91\x14\xC2am\x06nmar\x90\x0Cr\x90\x0C\xC7abeksuy.2BNRW\xC4bgnr\x08\x17#ataean\x90\x7F\xC2_m\tMundari\x917\x917d\x91+inagari\x91+b\x90~at\x90\x7Fw\xC2_a\tTai_Lue\x90+\x91\x1A\xC2go\x03b\x90t\x90Go\x90Ghu\x91\x06shu\x91\x06iakeng_Puachue_Hmong\x91*\xC6glnrsu\x0B\x85\x89\x99\xAE\xC2ah\x03m\x90\ram\x90\r\xC3_cd\x0F\x12\xC2CO\x06hiki\x90]nal\x91<k\x90]_\xC7HINPSTU\n\x11\x1F.ELungarian\x90<talic\x90\x0Eorth_Arabian\x90~er\xC2ms\x04ic\x90Iian\x90-o\xC2gu\x06dian\x91(th_Arabian\x90uurkic\x90Hyghur\x912ao\x91<\xC3iky\x04\x07ya\x90\x0Fh\x90Ha\x90\x0F\xC3agm\x04\x07ge\x91\x1Be\x91\x1Ba\x90\"nya\x90\"gr\x912\xC6aehlrs*.W[_\xC3hlu\x0B\x15awh_Hmong\x90;m\x91\0yrene\x91\0\xC2_c\tCin_Hau\x91\x15\x91\x15rm\x90I\xC4alno\t\x15\x18g\x90Js_Pa\x90J\xC3ipv\x02\x04\x90j\x90k\x90lx\x90Kenician\x90Krd\x90Lti\x90malter_Pahlavi\x90kaa\xC2ci\x01\x87\x81\xC4ejou\x06\n\x14jang\x90^ng\x90^\xC2hr\x03g\x91&o\x90Mn\xC2ir\x03c\x90\x10\x90\x10\xC7aghiouy&*Ch\x90\xA5\xC3mru\r\x15\xC2ar\x07ritan\x90n\x90n\xC2ab\x02\x90N\x90ur\x90_ashtra\x90_nw\x90`\xC2ar\x12\xC3rvw\x05\nada\x91\x07ian\x90#\x90#d\x91\x07\xC3dgn\x08\x12d\x91\x16ham\x91\x16nWriting\x90`\xC2dh\x02\x91\x01\x90\x11ala\x90\x11\xC3gry\r\x1A\xC2do\x07\x91'ian\x91'\x91(a\x91\x08_Sompeng\x91\x08o\x91 mbo\x91 n\xC2du\t\x90aanese\x90a\x91=war\x91=\xC2lr\ro\x90*ti_Nagri\x90*\xC5ceijn\x02\x04\x08\n\x90\x12\x90Oac\x90\x12\x90P\x90Q\xC9aefghinouZhlp}\x9D\xA1\xB2\xC7giklmnv\x11%+3<I\xC2ab\x05log\x90\x1A\x90\x1Danwa\x90\x1D_\xC3LTV\x03\x08e\x90$ham\x90Ziet\x90or\x91\ti\x91\t\xC2eu\x02\x90$\x90+\xC2il\x03l\x90\x13\x90\x13g\x91\n\xC2su\x03a\x913t\x91\nt\x90o\xC2ln\x07u\x90\x14gu\x90\x14g\x90Rng\x90,lg\x90\x1Aa\xC2ai\x06\x90\x15na\x90\x15\x90\x16\xC3bfr\x0B\x12\xC2et\x05tan\x90\x17\x90\x17inagh\x90,h\x91\x0Euta\x91\x0Esa\x913\xC2dt\n\xC2hr\x04ri\x91>\x91>o\x914\xC2lt\x0Cu_Tigalari\x91?g\x91?\xC2gn\nar\x90%itic\x90%known\x90W\xC2ai\x06i\x90Si\x90S\xC2st\x03p\x90Th\x915kuqi\x915\xC3aco\x15\x19\xC2nr\x05cho\x91,a\x91\x02ng_Citi\x91\x02ho\x91,le\x91\x0B\xC2ps\x04eo\x90-ux\x90U\xC2ei\x08zi\x910di\x910\x90\x19ii\x90\x19\xC7aimsxyz\x15\x18\x1C%),n\xC2ab\x0Ebazar_Square\x91!\x91!nh\x81th\x90py\xC2em\x02\x91\x1E\x90qxx\x90Vyy\x80zz\x90W") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseScriptV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseScriptV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_SCRIPT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseScriptV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseScriptV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseScriptV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseScriptV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_script_v1 as impl_property_name_parse_script_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_sentence_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_sentence_break_v1.rs.data
new file mode 100644
index 00000000..decd8279
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_sentence_break_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseSentenceBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 164B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_sentence_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_SENTENCE_BREAK_V1: &'static <icu::properties::provider::PropertyNameParseSentenceBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xCAACEFLNOSUX\x06\x12\x1C&5@NmvT\x81erm\x81\xC3LRl\x01\x02\x82\x8Bose\x82\xC2Xx\x01\x8Ctend\x8C\xC2Oo\x01\x83rmat\x83\xC4EFOo\x01\x02\x03\x86\x8D\x84wer\x84\xC2Uu\x01\x85meric\x85\xC2Lt\x06etter\x86her\x80\xC6CEPTep\t\n\x0B\x10\x12\x8Eontinue\x8E\x87\x88\x89erm\x89p\x87\x88\xC2Pp\x01\x8Aper\x8AX\x80") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseSentenceBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseSentenceBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_SENTENCE_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseSentenceBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseSentenceBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseSentenceBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseSentenceBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_sentence_break_v1 as impl_property_name_parse_sentence_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_vertical_orientation_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_vertical_orientation_v1.rs.data
new file mode 100644
index 00000000..b02875dd
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_vertical_orientation_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseVerticalOrientationV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 80B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_vertical_orientation_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_VERTICAL_ORIENTATION_V1: &'static <icu::properties::provider::PropertyNameParseVerticalOrientationV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xC3RTU\x08*\x80otated\x80\xC2ru\x1D\x81ansformed_\xC2RU\x07otated\x81pright\x82\x82\x83pright\x83") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseVerticalOrientationV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseVerticalOrientationV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_VERTICAL_ORIENTATION_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseVerticalOrientationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseVerticalOrientationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseVerticalOrientationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseVerticalOrientationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_vertical_orientation_v1 as impl_property_name_parse_vertical_orientation_v1;
diff --git a/vendor/icu_properties_data/data/property_name_parse_word_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_parse_word_break_v1.rs.data
new file mode 100644
index 00000000..4950d11f
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_parse_word_break_v1.rs.data
@@ -0,0 +1,81 @@
+// @generated
+/// Implement `DataProvider<PropertyNameParseWordBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 332B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerotrie`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_parse_word_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_PARSE_WORD_BREAK_V1: &'static <icu::properties::provider::PropertyNameParseWordBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyValueNameToEnumMap { map: zerotrie::ZeroTrieSimpleAscii { store: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\xE1qACDEFGHKLMNORSWXZ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\t\x1BQ[p\x81\x8D\x93\xB0\xC6\xCB\xE1\xF1\xFB\xFDLetter\x81R\x88\xC2Qo\x02\x90\0uble_Quote\x90\0\xC5BMX_x\x05\x07\x08 \x90\x01G\x90\x02\x90\x03\x87\xC2BM\x0Base\x90\x01_GAZ\x90\x02odifier\x90\x03tend\x89NumLet\x87\xC2Oo\x01\x82rmat\x82\xC2Al\x03Z\x90\x04ue_After_Zwj\x90\x04\xC2Le\x01\x8Ebrew_Letter\x8E\xC2Aa\x01\x83takana\x83\xC2EF\x01\x81\x8A\xC4BLNi\x01\x02\x03\x8B\x84\x85d\xC2LN\x06etter\x84um\x85Let\x8B\xC4LUeu\x01\x02\x08\x8C\x86wline\x8Cmeric\x86ther\x80\xC2Ie\x01\x8Dgional_Indicator\x8D\xC2Qi\x01\x8Fngle_Quote\x8FSegSpace\x90\x06X\x80WJ\x90\x05") } } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameParseWordBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameParseWordBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_PARSE_WORD_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_parse_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseWordBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_parse_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseWordBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_parse_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameParseWordBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameParseWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameParseWordBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_parse_word_break_v1 as impl_property_name_parse_word_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_bidi_class_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_bidi_class_v1.rs.data
new file mode 100644
index 00000000..3f8d501a
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_bidi_class_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortBidiClassV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 122B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_bidi_class_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_BIDI_CLASS_V1: &'static <icu::properties::provider::PropertyNameShortBidiClassV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x17\0\x01\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\r\0\x0E\0\x10\0\x12\0\x15\0\x18\0\x1A\0\x1D\0 \0#\0&\0(\0+\0.\x001\0LRENESETANCSBSWSONLRELROALRLERLOPDFNSMBNFSILRIRLIPDI") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortBidiClassV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortBidiClassV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_BIDI_CLASS_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortBidiClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortBidiClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_bidi_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortBidiClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortBidiClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortBidiClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_bidi_class_v1 as impl_property_name_short_bidi_class_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_canonical_combining_class_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_canonical_combining_class_v1.rs.data
new file mode 100644
index 00000000..af8788bc
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_canonical_combining_class_v1.rs.data
@@ -0,0 +1,85 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortCanonicalCombiningClassV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 519B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_canonical_combining_class_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_CANONICAL_COMBINING_CLASS_V1: &'static <icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameSparseMap {
+                map: unsafe {
+                    #[allow(unused_unsafe)]
+                    zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\x01\0\x06\0\x07\0\x08\0\t\0\n\0\x0B\0\x0C\0\r\0\x0E\0\x0F\0\x10\0\x11\0\x12\0\x13\0\x14\0\x15\0\x16\0\x17\0\x18\0\x19\0\x1A\0\x1B\0\x1C\0\x1D\0\x1E\0\x1F\0 \0!\0\"\0#\0$\0T\0[\0g\0k\0v\0z\0\x81\0\x82\0\x84\0\x85\0\xC8\0\xCA\0\xD6\0\xD8\0\xDA\0\xDC\0\xDE\0\xE0\0\xE2\0\xE4\0\xE6\0\xE8\0\xE9\0\xEA\0\xF0\0") }, unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b":\0\x02\0\x04\0\x08\0\n\0\x0C\0\x0E\0\x13\0\x18\0\x1D\0\"\0'\0,\x001\x006\0;\0@\0E\0J\0O\0T\0Y\0^\0c\0h\0m\0r\0w\0|\0\x81\0\x86\0\x8B\0\x90\0\x95\0\x9A\0\x9F\0\xA5\0\xAB\0\xB1\0\xB7\0\xBD\0\xC3\0\xC9\0\xCF\0\xD3\0\xD6\0\xD9\0\xDD\0\xDF\0\xE0\0\xE2\0\xE3\0\xE4\0\xE6\0\xE7\0\xE9\0\xEB\0\xED\0NROVHANRNKKVVRCCC10CCC11CCC12CCC13CCC14CCC15CCC16CCC17CCC18CCC19CCC20CCC21CCC22CCC23CCC24CCC25CCC26CCC27CCC28CCC29CCC30CCC31CCC32CCC33CCC34CCC35CCC36CCC84CCC91CCC103CCC107CCC118CCC122CCC129CCC130CCC132CCC133ATBLATBATAATARBLBBRLRALAARDBDAIS") })
+                },
+            };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_CANONICAL_COMBINING_CLASS_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_canonical_combining_class_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortCanonicalCombiningClassV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_canonical_combining_class_v1 as impl_property_name_short_canonical_combining_class_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_east_asian_width_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_east_asian_width_v1.rs.data
new file mode 100644
index 00000000..fc236181
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_east_asian_width_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortEastAsianWidthV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 43B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_east_asian_width_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_EAST_ASIAN_WIDTH_V1: &'static <icu::properties::provider::PropertyNameShortEastAsianWidthV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x06\0\x01\0\x02\0\x03\0\x04\0\x06\0NAHFNaW") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortEastAsianWidthV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortEastAsianWidthV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_EAST_ASIAN_WIDTH_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortEastAsianWidthV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortEastAsianWidthV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_east_asian_width_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortEastAsianWidthV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortEastAsianWidthV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortEastAsianWidthV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_east_asian_width_v1 as impl_property_name_short_east_asian_width_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_general_category_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_general_category_v1.rs.data
new file mode 100644
index 00000000..b9f4e022
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_general_category_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortGeneralCategoryV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 144B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_general_category_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_GENERAL_CATEGORY_V1: &'static <icu::properties::provider::PropertyNameShortGeneralCategoryV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x1E\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1C\0\x1E\0 \0\"\0$\0&\0(\0*\0,\0.\x000\x002\x004\x006\08\0:\0CnLuLlLtLmLoMnMeMcNdNlNoZsZlZpCcCfCoCsPdPsPePcPoSmScSkSoPiPf") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortGeneralCategoryV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortGeneralCategoryV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_GENERAL_CATEGORY_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortGeneralCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortGeneralCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_general_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortGeneralCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortGeneralCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortGeneralCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_general_category_v1 as impl_property_name_short_general_category_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_grapheme_cluster_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_grapheme_cluster_break_v1.rs.data
new file mode 100644
index 00000000..bdccd0b7
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_grapheme_cluster_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortGraphemeClusterBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 97B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_grapheme_cluster_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_GRAPHEME_CLUSTER_BREAK_V1: &'static <icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x12\0\x02\0\x04\0\x06\0\x08\0\t\0\x0B\0\r\0\x10\0\x11\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1D\0\x1F\0\"\0XXCNCREXLLFLVLVTTVSMPPRIEBEBGEMGAZZWJ") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_GRAPHEME_CLUSTER_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_grapheme_cluster_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortGraphemeClusterBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_grapheme_cluster_break_v1 as impl_property_name_short_grapheme_cluster_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_hangul_syllable_type_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_hangul_syllable_type_v1.rs.data
new file mode 100644
index 00000000..73df285a
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_hangul_syllable_type_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortHangulSyllableTypeV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 46B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_hangul_syllable_type_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_HANGUL_SYLLABLE_TYPE_V1: &'static <icu::properties::provider::PropertyNameShortHangulSyllableTypeV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x06\0\x02\0\x03\0\x04\0\x05\0\x07\0NALVTLVLVT") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortHangulSyllableTypeV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortHangulSyllableTypeV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_HANGUL_SYLLABLE_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortHangulSyllableTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortHangulSyllableTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_hangul_syllable_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortHangulSyllableTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortHangulSyllableTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortHangulSyllableTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_hangul_syllable_type_v1 as impl_property_name_short_hangul_syllable_type_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_indic_syllabic_category_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_indic_syllabic_category_v1.rs.data
new file mode 100644
index 00000000..58c53447
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_indic_syllabic_category_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortIndicSyllabicCategoryV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 622B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_indic_syllabic_category_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_INDIC_SYLLABIC_CATEGORY_V1: &'static <icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"%\0\x05\0\r\0\x12\0'\08\0A\0O\0^\0s\0\x8E\0\x9E\0\xAE\0\xC3\0\xDC\0\xEE\0\x01\x01\x1B\x011\x01@\x01Q\x01W\x01g\x01q\x01v\x01|\x01\x89\x01\x94\x01\xA4\x01\xB5\x01\xC0\x01\xC9\x01\xCF\x01\xD6\x01\xDB\x01\xEA\x01\xFB\x01OtherAvagrahaBinduBrahmi_Joining_NumberCantillation_MarkConsonantConsonant_DeadConsonant_FinalConsonant_Head_LetterConsonant_Initial_PostfixedConsonant_KillerConsonant_MedialConsonant_PlaceholderConsonant_Preceding_RephaConsonant_PrefixedConsonant_SubjoinedConsonant_Succeeding_RephaConsonant_With_StackerGemination_MarkInvisible_StackerJoinerModifying_LetterNon_JoinerNuktaNumberNumber_JoinerPure_KillerRegister_ShifterSyllable_ModifierTone_LetterTone_MarkViramaVisargaVowelVowel_DependentVowel_IndependentReordering_Killer") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_INDIC_SYLLABIC_CATEGORY_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_indic_syllabic_category_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortIndicSyllabicCategoryV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_indic_syllabic_category_v1 as impl_property_name_short_indic_syllabic_category_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_joining_type_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_joining_type_v1.rs.data
new file mode 100644
index 00000000..ffca080d
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_joining_type_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortJoiningTypeV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 42B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_joining_type_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_JOINING_TYPE_V1: &'static <icu::properties::provider::PropertyNameShortJoiningTypeV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x06\0\x01\0\x02\0\x03\0\x04\0\x05\0UCDLRT") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortJoiningTypeV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortJoiningTypeV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_JOINING_TYPE_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortJoiningTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortJoiningTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_joining_type_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortJoiningTypeV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortJoiningTypeV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortJoiningTypeV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_joining_type_v1 as impl_property_name_short_joining_type_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_line_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_line_break_v1.rs.data
new file mode 100644
index 00000000..d5ad0994
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_line_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortLineBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 217B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_line_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_LINE_BREAK_V1: &'static <icu::properties::provider::PropertyNameShortLineBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1C\0\x1E\0 \0\"\0$\0&\0(\0*\0,\0.\x000\x002\x004\x006\08\0:\0<\0>\0@\0B\0D\0F\0H\0J\0L\0N\0P\0R\0T\0W\0Y\0[\0]\0_\0XXAIALB2BABBBKCBCLCMCREXGLHYIDINISLFNSNUOPPOPRQUSASGSPSYZWNLWJH2H3JLJTJVCPCJHLRIEBEMZWJAKAPASVFVI") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortLineBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortLineBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_LINE_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortLineBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortLineBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_line_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortLineBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortLineBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortLineBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_line_break_v1 as impl_property_name_short_line_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_script_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_script_v1.rs.data
new file mode 100644
index 00000000..04e0d971
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_script_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortScriptV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 856B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_script_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_SCRIPT_V1: &'static <icu::properties::provider::PropertyNameShortScriptV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyScriptToIcuScriptMap { map: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ZyyyZinhArabArmnBengBopoCherCoptCyrlDsrtDevaEthiGeorGothGrekGujrGuruHaniHangHebrHiraKndaKanaKhmrLaooLatnMlymMongMymrOgamItalOryaRunrSinhSyrcTamlTeluThaaThaiTibtCansYiiiTglgHanoBuhdTagbBraiCprtLimbLinbOsmaShawTaleUgarHrktBugiGlagKharSyloTaluTfngXpeoBaliBatkBlisBrahChamCirtCyrsEgydEgyhEgypGeokHansHantHmngHungIndsJavaKaliLatfLatgLepcLinaMandMayaMeroNkooOrkhPermPhagPhnxPlrdRoroSaraSyreSyrjSyrnTengVaiiVispXsuxZxxxZzzzCariJpanLanaLyciLydiOlckRjngSaurSgnwSundMoonMteiArmiAvstCakmKoreKthiManiPhliPhlpPhlvPrtiSamrTavtZmthZsymBamuLisuNkgbSarbBassDuplElbaGranKpelLomaMendMercNarbNbatPalmSindWaraAfakJurcMrooNshuShrdSoraTakrTangWoleHluwKhojTirhAghbMahjAhomHatrModiMultPaucSiddAdlmBhksMarcNewaOsgeHanbJamoZsyeGonmSoyoZanbDogrGongMakaMedfRohgSogdSogoElymHmnpNandWchoChrsDiakKitsYeziCpmnOugrTnsaTotoVithKawiNagmAranGaraGukhKraiOnaoSunuTodrTutg") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortScriptV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortScriptV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_SCRIPT_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortScriptV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortScriptV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_script_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortScriptV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortScriptV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortScriptV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_script_v1 as impl_property_name_short_script_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_sentence_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_sentence_break_v1.rs.data
new file mode 100644
index 00000000..81619f5d
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_sentence_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortSentenceBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 84B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_sentence_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_SENTENCE_BREAK_V1: &'static <icu::properties::provider::PropertyNameShortSentenceBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x0F\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1C\0XXATCLFOLONULESESPSTUPCREXLFSC") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortSentenceBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortSentenceBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_SENTENCE_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortSentenceBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortSentenceBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_sentence_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortSentenceBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortSentenceBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortSentenceBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_sentence_break_v1 as impl_property_name_short_sentence_break_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_vertical_orientation_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_vertical_orientation_v1.rs.data
new file mode 100644
index 00000000..944510cc
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_vertical_orientation_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortVerticalOrientationV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 38B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_vertical_orientation_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_VERTICAL_ORIENTATION_V1: &'static <icu::properties::provider::PropertyNameShortVerticalOrientationV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x04\0\x01\0\x03\0\x05\0RTrTuU") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortVerticalOrientationV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortVerticalOrientationV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_VERTICAL_ORIENTATION_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortVerticalOrientationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortVerticalOrientationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_vertical_orientation_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortVerticalOrientationV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortVerticalOrientationV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortVerticalOrientationV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_vertical_orientation_v1 as impl_property_name_short_vertical_orientation_v1;
diff --git a/vendor/icu_properties_data/data/property_name_short_word_break_v1.rs.data b/vendor/icu_properties_data/data/property_name_short_word_break_v1.rs.data
new file mode 100644
index 00000000..c4be4d52
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_name_short_word_break_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyNameShortWordBreakV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 130B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_name_short_word_break_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_NAME_SHORT_WORD_BREAK_V1: &'static <icu::properties::provider::PropertyNameShortWordBreakV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::names::PropertyEnumToValueNameLinearMap { map: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"\x17\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x18\0\x1A\0\x1C\0\x1E\0 \0\"\0$\0&\0(\0+\0-\x000\x003\0XXLEFOKAMLMNNUEXCRExtendLFMBNLRIHLSQDQEBEBGEMGAZZWJWSegSpace") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyNameShortWordBreakV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyNameShortWordBreakV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_NAME_SHORT_WORD_BREAK_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_name_short_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortWordBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_name_short_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortWordBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_name_short_word_break_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyNameShortWordBreakV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyNameShortWordBreakV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyNameShortWordBreakV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_name_short_word_break_v1 as impl_property_name_short_word_break_v1;
diff --git a/vendor/icu_properties_data/data/property_script_with_extensions_v1.rs.data b/vendor/icu_properties_data/data/property_script_with_extensions_v1.rs.data
new file mode 100644
index 00000000..836bb9a5
--- /dev/null
+++ b/vendor/icu_properties_data/data/property_script_with_extensions_v1.rs.data
@@ -0,0 +1,80 @@
+// @generated
+/// Implement `DataProvider<PropertyScriptWithExtensionsV1>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+///
+/// Using this implementation will embed the following data in the binary's data segment:
+/// * 28204B[^1] for the singleton data struct
+///
+/// [^1]: these numbers can be smaller in practice due to linker deduplication
+///
+/// This macro requires the following crates:
+/// * `icu`
+/// * `icu_provider`
+/// * `zerovec`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_property_script_with_extensions_v1 {
+    ($ provider : ty) => {
+        #[clippy::msrv = "1.82"]
+        const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+        #[clippy::msrv = "1.82"]
+        impl $provider {
+            #[doc(hidden)]
+            pub const SINGLETON_PROPERTY_SCRIPT_WITH_EXTENSIONS_V1: &'static <icu::properties::provider::PropertyScriptWithExtensionsV1 as icu_provider::DynamicDataMarker>::DataStruct = &icu::properties::provider::ScriptWithExtensionsProperty { trie: icu::collections::codepointtrie::CodePointTrie::from_parts(icu::collections::codepointtrie::CodePointTrieHeader { high_start: 918016u32, shifted12_high_start: 225u16, index3_null_offset: 1104u16, data_null_offset: 2895u32, null_value: 103u32, trie_type: icu::collections::codepointtrie::TrieType::Small }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0@\0{\0\xBB\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xFA\x007\x01w\x01\xB5\x01\xF5\x01\x18\x02X\x02X\x02\x95\x02X\x02\xA5\x02\xD6\x02\r\x03E\x03\x85\x03\xC5\x03\xF6\x03\"\x04b\x04\x97\x04\xD7\x04\x17\x05W\x05\x97\x05\xC8\x05\xE6\x05&\x06U\x06\x95\x06\xD1\x06\x10\x07N\x07\x8D\x07\xC9\x07\t\x08E\x08\x83\x08\xC1\x08\x01\t=\t}\t\xB9\t\xF9\t4\nt\n\xB4\n\xF3\n3\x0Br\x0B\xB2\x0B\xF2\x0B*\x0C[\x0C\x8B\x0C\x10\x0C*\x0C:\x0CP\x0Cp\x0C\x8F\x0C\xAC\x0C\xCB\x0C\xEB\x0C\xEB\x0C\xF8\x0C\x15\r5\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rG\rg\r\0\0\x10\0 \x000\0@\0P\0`\0p\0{\0\x8B\0\x9B\0\xAB\0\xBB\0\xCB\0\xDB\0\xEB\0\xF3\0\x03\x01\x13\x01#\x01\xF3\0\x03\x01\x13\x01#\x01\xF3\0\x03\x01\x13\x01#\x01\xF3\0\x03\x01\x13\x01#\x01\xFA\0\n\x01\x1A\x01*\x017\x01G\x01W\x01g\x01w\x01\x87\x01\x97\x01\xA7\x01\xB5\x01\xC5\x01\xD5\x01\xE5\x01\xF5\x01\x05\x02\x15\x02%\x02\x18\x02(\x028\x02H\x02X\x02h\x02x\x02\x88\x02X\x02h\x02x\x02\x88\x02\x95\x02\xA5\x02\xB5\x02\xC5\x02X\x02h\x02x\x02\x88\x02\xA5\x02\xB5\x02\xC5\x02\xD5\x02\xD6\x02\xE6\x02\xF6\x02\x06\x03\r\x03\x1D\x03-\x03=\x03E\x03U\x03e\x03u\x03\x85\x03\x95\x03\xA5\x03\xB5\x03\xC5\x03\xD5\x03\xE5\x03\xF5\x03\xF6\x03\x06\x04\x16\x04&\x04\"\x042\x04B\x04R\x04b\x04r\x04\x82\x04\x92\x04\x97\x04\xA7\x04\xB7\x04\xC7\x04\xD7\x04\xE7\x04\xF7\x04\x07\x05\x17\x05'\x057\x05G\x05W\x05g\x05w\x05\x87\x05\x97\x05\xA7\x05\xB7\x05\xC7\x05\xC8\x05\xD8\x05\xE8\x05\xF8\x05\xE6\x05\xF6\x05\x06\x06\x16\x06&\x066\x06F\x06V\x06U\x06e\x06u\x06\x85\x06\x95\x06\xA5\x06\xB5\x06\xC5\x06\xD1\x06\xE1\x06\xF1\x06\x01\x07\x10\x07 \x070\x07@\x07N\x07^\x07n\x07~\x07\x8D\x07\x9D\x07\xAD\x07\xBD\x07\xC9\x07\xD9\x07\xE9\x07\xF9\x07\t\x08\x19\x08)\x089\x08E\x08U\x08e\x08u\x08\x83\x08\x93\x08\xA3\x08\xB3\x08\xC1\x08\xD1\x08\xE1\x08\xF1\x08\x01\t\x11\t!\t1\t=\tM\t]\tm\t}\t\x8D\t\x9D\t\xAD\t\xB9\t\xC9\t\xD9\t\xE9\t\xF9\t\t\n\x19\n)\n4\nD\nT\nd\nt\n\x84\n\x94\n\xA4\n\xB4\n\xC4\n\xD4\n\xE4\n\xF3\n\x03\x0B\x13\x0B#\x0B3\x0BC\x0BS\x0Bc\x0Br\x0B\x82\x0B\x92\x0B\xA2\x0B\xB2\x0B\xC2\x0B\xD2\x0B\xE2\x0B\xF2\x0B\x02\x0C\x12\x0C\"\x0C*\x0C:\x0CJ\x0CZ\x0C[\x0Ck\x0C{\x0C\x8B\x0C\x8B\x0C\x9B\x0C\xAB\x0C\xBB\x0C\xCB\x0C\xCB\x0C\xCB\x0C\xCB\x0C\xDB\x0C\xCB\x0C\xCB\x0C\xCB\x0C\xCB\x0C\xCB\x0C\xEB\x0C\xEB\x0C\xF5\x0C\xEB\x0C\xEB\x0C\x05\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r%\r%\r%\r%\r,\r<\r%\r%\r,\r%\r%\r4\rD\rM\r%\r%\r%\rD\r%\r%\r%\rU\r%\rb\r%\re\ru\ru\ru\ru\ru\r\x7F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x8F\r\x9F\r\xA2\r\xB2\r\xB2\r\xB2\r\xB2\r\xB7\r\xC5\r\xD5\r\xDF\r\xEF\r\xFA\r\n\x0E\x16\x0E&\x0E2\x0EB\x0EB\x0EB\x0EB\x0EB\x0ED\x0EH\x0EH\x0EX\x0E^\x0En\x0En\x0En\x0En\x0En\x0Eu\x0En\x0En\x0Es\x0E\x8F\r\x8F\r\x8F\r\x8F\r\x85\x0E\x95\x0E\x96\x0E\x99\x0E\x99\x0E\xA9\x0E\xB9\x0E\xBB\x0E\xC4\x0E\xD4\x0E\xD4\x0E\xD8\x0E\xD4\x0E\xDA\x0E\xEA\x0EB\x0EB\x0E\xFA\x0E\xFE\x0E\x0E\x0F\x0E\x0F\x0E\x0F\x0F\x0F\x0E\x0F\x11\x0F \x0F \x0F\x10\x0F\xBB\x010\x0FO\x0BO\x0BO\x0B@\x0F@\x0F@\x0F@\x0FC\x0F@\x0F@\x0F@\x0FS\x0FS\x0FS\x0FS\x0Fc\x0Fc\x0Fc\x0Fo\x0F\x7F\x0F\x7F\x0F\x7F\x0F\x87\x0F\x85\x0F\x97\x0F\x97\x0F\x97\x0F\xA7\x0F\xEB\x0C\xEB\x0C\xB7\x0F\xC7\x0F\xD7\x0F\xE7\x0F\xF5\x0F\xF3\0\xF3\0\x05\x10\xF3\0\xF3\0\x11\x10\x1F\x10*\x10\xF3\0\xF3\0\xF3\x003\x10C\x10\xBB\x01\xBB\x01K\x10\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0\x03\x02[\x10\x03\x02\x03\x02[\x10k\x10\x03\x02z\x10\x03\x02\x03\x02\x03\x02\x12\x02\x12\x02\x84\x10\x03\x02\x94\x10\xA4\x10\0\0\xB2\x10\0\0\xC2\x10\xD2\x10\xE0\x10\xEF\x10\xFF\x10\x0F\x11\0\0\0\0\x1F\x11\xBB\x01\xBB\x01/\x11\0\0\0\0?\x11\xFC\x10\x97\0\0\0\xF3\0\xF3\0O\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\x11O\x0Bo\x11O\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\x7F\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8F\x11\0\0\x99\x11\0\0\0\0\0\0\0\0\0\0\0\0\xA9\x11\xA9\x11\xA9\x11\xA9\x11\xA9\x11\xA9\x11\xF3\0\xF3\0\xB9\x11\xB9\x11\xB9\x11\xB9\x11\xB9\x11\xB9\x11\xB9\x11\xC5\x11\xEB\x0C\xEB\x0C\xF5\x0C\xD5\x11\xD5\x11\xD5\x11\xDD\x11\xEC\x11%\r\xFC\x11\x0C\x12\x0C\x12\x0C\x12\x0C\x12X\x02X\x02\0\0\x1C\x12\0\0,\x12;\x12?\x12O\x0BO\x0BO\x12U\x12O\x12O\x12O\x12O\x12O\x12a\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12q\x12O\x0B\x81\x12\x91\x12\x9F\x12\xAF\x12\xBF\x12\xCF\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD9\x12\xE9\x12\xEA\x12\xEA\x12\xEA\x12\xEA\x12\xEF\x12\xFF\x12\x04\x13\x04\x13\x14\x13\x15\r\x15\r\x15\r\x15\r\x15\x13%\x13\x04\x13\x04\x13%\x13%\x13/\x13\xEA\x12\x15\r\x15\x13%\x13%\x13?\x13\0\0\x15\rO\x13%\x13%\x13%\x13_\x13o\x13\xEA\x12\xEA\x12\x7F\x13\xEA\x12\xEA\x12\xEA\x12\xEA\x12\xEA\x12\x86\x13%\x13\x95\x13\0\0\0\0\0\0\0\0\0\0\0\0%\x13\xA0\x13O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12\0\0\0\0\0\0\0\0\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB0\x13\xB3\x13\xB0\x13\xB0\x13\xB0\x13\xB9\x13\xC9\x13\xC9\x13\xC9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xD9\x13\xDD\x13O\x0BX\x02X\x02\xED\x13X\x02X\x02X\x02\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\x05\x14\x15\x14\0\0?\0\xF3\0\xF3\0\xF3\0\xF3\0\xF3\0%\x14\xF3\0\xF3\0\xF3\x000\x14@\x14O\x0BN\x14^\x14^\x14a\x14q\x14\x81\x14\x81\x14\x81\x14\x89\x14\x99\x14\x99\x14\x99\x14\x99\x14\xA3\x14\x9F\x14&\x06\xB3\x14\xC3\x14\xC3\x14\xC5\x14\xD5\x14\xD5\x14\xE1\x14\x15\r\xF1\x14\x01\x15\x01\x15\x01\x15\x01\x15\x03\x15\x13\x15\xCB\x0C#\x153\x153\x153\x15<\x155\x15L\x15\xCB\x0C\xCB\x0C\\\x15\\\x15\\\x15\\\x15i\x15n\x15~\x15\x87\x15\x96\x15\x9E\x15\x0C\x12\xF3\0\xF3\0\xC7\0\xAE\x15u\ru\ru\ru\ru\r~\x15~\x15\x80\x15\x84\x15\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\x15\r\xBE\x15\x15\r\xCE\x15\x15\r\x15\r\xD9\x15O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12\xE9\x15O\x12O\x12O\x12O\x12O\x12O\x12\xED\x15O\x0BO\x0B\xFD\x15\n\x16\x1E\x03\x17\x16'\x16\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x037\x16\xC4\x05\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03G\x16\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xC5\x05\xF6\x03\xF6\x03W\x16O\x0BO\x0Bf\x16\xBB\x01_\x11v\x16\0\0\x86\x16\x93\x16\x9C\x16\xAC\x16\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xF6\x03\xB2\x16\xC0\x16\0\0@\0P\0@\0P\0\xCF\x16\xE9\x12\xEA\x12\xD5\x16\x15\r\x15\x13\xE5\x16\xED\x16\xFD\x16\x0C\x17\x1C\x17)\x17!\x17.\x17=\x17=\x17O\x0BO\x0B)\x17)\x17)\x17)\x17)\x17)\x17)\x17@\x17P\x17W\x17W\x17c\x17\x03\x02\x03\x02\x03\x02\x03\x02\x08\x02s\x17\x83\x17O\x0BO\x0B\0\0\0\0\x93\x17O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xA3\x17\xA6\x17\xB6\x17\xB6\x17\xB6\x17\xC5\x17\xD5\x17\xD9\x17\xE9\x17\xE9\x17\xF5\x17\x05\x18\n\x18\x1A\x18\x1A\x18\x1F\x18/\x181\x18A\x18A\x18M\x18W\x18O\x0BO\x0Bg\x18g\x18g\x18g\x18g\x18w\x18w\x18w\x18\x87\x18\x89\x18\x8D\x18\x9D\x18\x9D\x18\xA9\x18\x9D\x18\xA1\x18\xB9\x18\xB9\x18\xC1\x18\xD1\x18\xD1\x18\xD1\x18\xDD\x18\xED\x18\xED\x18\xFA\x18\xFE\x18\x0C\x19\x1C\x19\x1C\x19\x1C\x19(\x198\x198\x198\x198\x198\x198\x198\x198\x198\x198\x198\x198\x198\x198\x198\x198\x198\x198\x198\x19A\x198\x19B\x19@\x19O\x0BR\x19\xF3\0\xF3\0W\x19O\x0BO\x0BO\x0BO\x0Bg\x19q\x19q\x19{\x19\x8B\x19\x95\x19\xA5\x19\xA5\x19\xB5\x19\xB6\x19\xC5\x19O\x0BO\x0BO\x0B\xD5\x19\xE2\x19\xF2\x19\xF6\x19\x06\x1A\x0C\x1AO\x0BO\x0BO\x0BO\x0B\x1C\x1A\x1C\x1A,\x1A4\x1A,\x1A>\x1A,\x1A,\x1AN\x1AZ\x1Ac\x1Am\x1A|\x1A|\x1A\x8C\x1A\x8C\x1A\x9C\x1A\x9C\x1AO\x0BO\x0B\xAC\x1A\xAC\x1A\xB5\x1A\xC3\x1A\xD3\x1A\xD3\x1A\xD3\x1A\xDD\x1A\xED\x1A\xF7\x1A\x07\x1B\x14\x1B$\x1B2\x1B?\x1BO\x0BO\x0BO\x0BO\x0BO\x0BO\x1BO\x1BO\x1BO\x1BV\x1BO\x0BO\x0BO\x0Bf\x1Bf\x1Bf\x1Bs\x1Bf\x1Bf\x1Bf\x1B\x83\x1B\x93\x1B\x93\x1B\x9B\x1B\x99\x1B\xAB\x1B\xAB\x1B\xB5\x1B\xAB\x1B\xBF\x1BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xF6\x03\xC8\x05\xCF\x1B\xCF\x1B\xD5\x1B\xE1\x1B\xEF\x1BO\x0BO\x0B;\x16\xFF\x1B\xFF\x1B\x07\x1C\x17\x1C\x17\x1C\x1D\x1CO\x0B-\x1C3\x1CO\x0BO\x0BC\x1CG\x1CO\x0BW\x1C`\x1Cp\x1Cp\x1Cp\x1Cp\x1Cr\x1Cn\x1Cp\x1Cz\x1C\x8A\x1C\x8A\x1C\x8A\x1C\x8A\x1C\x97\x1C\xA7\x1C\xAE\x1C\xAD\x1C\xBE\x1C\xBE\x1C\xBE\x1C\xC9\x1C\xD1\x1C\xE1\x1C\xE1\x1C\xEA\x1C\xFA\x1C\xFA\x1C\xFA\x1C\xFA\x1C\xFA\x1C\xFA\x1Cx\n\n\x1D\x1A\x1D(\x1D\x1A\x1D\x1A\x1D6\x1DO\x0BO\x0BO\x0BF\x1DU\x1Dd\x1Dt\x1Dt\x1Dt\x1Dy\x1Dz\x1D\x8A\x1D\x96\x1D\x9D\x1D\xAC\x1D\xB9\x1D\xC6\x1D\xD3\x1D\xDB\x1D\xEB\x1D\xFB\x1D\xFB\x1D\x05\x1E\x14\x1E \x1E&\x1EO\x0B6\x1E6\x1E6\x1E6\x1E6\x1E:\x1EH\x1EO\x0BX\x1EX\x1EX\x1EX\x1E`\x1E^\x1EO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0Bp\x1Ep\x1Ep\x1Ez\x1Ep\x1Er\x1EO\x0BO\x0B\x8A\x1E\x8A\x1E\x8A\x1E\x8A\x1E\x95\x1E\x90\x1Eq\x0EO\x0B\xA5\x1E\xA5\x1E\xA5\x1E\xAB\x1E\xAB\x1E\xCB\x0C\xBB\x1EO\x0B\xCB\x1E\xD0\x1E\xDD\x1E\xCB\x1E\xE2\x1EO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xF2\x1E\xF2\x1E\xF2\x1E\xF6\x1EO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\x06\x1F\x06\x1F\x06\x1F\x06\x1F\x06\x1F\x13\x1F#\x1F/\x1F7\x1FA\x1FL\x1F\\\x1FO\x0BO\x0BO\x0BO\x0Bl\x1Fv\x1Fv\x1Fl\x1F\x81\x1FO\x0B\x91\x1F\x91\x1F\x91\x1F\x91\x1F\x99\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xA9\x1F\xB6\x1F\x8F\r\xC6\x1F\xC6\x1F\xC6\x1F\xCD\x1F\xDD\x1FO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xED\x1F\xED\x1F\xFB\x1F\xF3\x1F\x0B \x15 \x15 \r \x1F \x15 \x18 / / - 7 @ O\x0BO\x0BO\x0BO\x0BP [ [ d s \x83 \x93 \x9D \x9E \xAB \xBB O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xCB \xD2 \xE2 \xF1 \xE2 \xF6 \xE2 \x04!O\x0BO\x0BO\x0BO\x0BO\x0B\x14!$!4!$!B!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!R!X!O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BR!R!R!R!R!R!S!]!R!R!R!R!R!R!R!R!R!R!R!R!^!O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0Bn!n!n!n!n!n!{!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x95!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x8B!\x90!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xA5!\xAE!O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xBE!\xBE!\xBE!\xC4!O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\xFD\x13\x04\x14\xD4!\xD5!\xDA!\xEA!\xEA!\xEA!\xEA!\xEB!\xF0!\0\"\x02\"\n\"\x1A\"\x1A\"\x1A\"\x1A\"$\"4\"<\"D\"\x1A\"O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BT\"T\"T\"Z\"O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0Bj\"j\"j\"j\"j\"o\"O\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\x7F\"\x7F\"\x7F\"\x7F\"\x84\"\x7F\"\x7F\"\x7F\"\x93\"\x7F\"O\x0BO\x0BO\x0BO\x0B\xA3\"\xB3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xCB\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xC3\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xDB\"\xE5\"O\x0B\xEB\"\xCA\"O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xFB\"\x0B#\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\xD0\x12\x1B#)#O\x0B9#E#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#Y#O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0Bi#i#i#i#i#i#n#l#p#\x80#\x90#O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA0#O\x0BO\x0BO\x0BO\x0B\xBB\x01\xBB\x01\xB0#\xBB\x01\xB7#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA0#O\x0BO\x0BO\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xC7#\0\0\0\0\xD7#\0\0\0\0\0\0\xE0#\xEA#\xF7#\0\0\x03$\0\0\0\0\0\0o\x11O\x0B\x03\x02\x03\x02\x03\x02\x03\x02\x13$O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\0\0\xA0#\0\0\xA0#\0\0\0\0\0\0\0\0\0\0\x05\x17%\x13#$O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\0\0\0\0\0\0\0\0\0\0\xE0\x10\0\0\0\0\0\x003$C$Q$\x92\x16\0\0\0\0\0\0^$k$\0\0\x99\x16y$\x88$\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x92$\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8C$\0\0\0\0\0\0\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA2$\xA6$\xB2$\xBC$O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xF3\0\xCC$\xDB$O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xEB$\xF3$\x01%X\x02X\x02X\x02\x11%O\x0B\x1F%O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B/%/%2%1%5%O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BE%F%O\x0BV%V%V%\\%O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0Bl%l%r%O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\x82%\x82%\x87%O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\x97%&\r\xA7%\xA7%\xA7%\xA7%\xA7%\xA7%\xA7%\xA7%\xA7%\xA7%\xA7%\xA7%\xB2%\xBB%O\x0BO\x0B\xCB%\xCB%\xCB%\xCB%\xCF%\xD1%O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xC0\x16\0\0\0\0\0\0\xE1%O\x0BO\x0BO\x0BO\x0B\xC0\x16\0\0\0\0?\x12O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xAD\x16\xF6\x03\xF0%\xFD%\x0B&\x1B&)&1&A&L&[&L&O\x0BO\x0BO\x0Bi&O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\0\0\0\0y&\0\0\0\0\0\0\0\0\0\0\0\0\xA0#\xFF\x10\xC0\x16\xC0\x16\xC0\x16\0\0\xC7#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\x12O\x0BO\x0BO\x0Bi\x11\0\0\x89&\0\0\0\0y&\x99&\xA9&\xC7#O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xB9&s\x17s\x17\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xBA&\0\0\0\0\0\0\0\0\0\0_\x11y&\x1F\x11y&\0\0\0\0\0\0\xC5&_\x11\0\0\0\0\xC5&\0\0?\x12y&\xCB&O\x0BO\x0BO\x0B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA0#?\x12s\x17\xDB&\0\0\0\0\0\0%$\x8B$_\x11\x99&\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\x16\0\0\0\0\0\0\0\0\0\0_\x11O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x0BO\x0BO\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12\xED\x15O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12\xE9\x15O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12\xB3\"O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12\xEB&O\x12O\x12O\x12O\x12O\x12\xE9\x15O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12\xEC\x15O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x12O\x0BO\x0BO\x0BO\x0BO\x0B\x1E\x11O\x0B\0\0\0\0\0\0\0\0\0\0\0\0O\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0BO\x0B\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01\xBB\x01O\x0By\0\x91\0\xB1\0\xD1\0\xF1\0\x11\x011\x01Q\x01q\x01\x91\x01\xB1\x01\xC9\x01\xE9\x01\t\x02)\x02I\x02i\x02\x82\x02\xA0\x02\x82\x02\xC0\x02\xD0\x02\xF0\x02\x10\x030\x03P\x03p\x03p\x03p\x03p\x03p\x03p\x03t\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03\x94\x03\x94\x03\xAC\x03\xCA\x03\xEA\x03\n\x04*\x04*\x04*\x04*\x04*\x04*\x04*\x04*\x04*\x04*\x04*\x040\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04`\x04z\x04\x98\x04\xB8\x04\xD8\x04\xF8\x04\x18\x058\x05X\x05x\x05\x98\x05\xB2\x05\xD2\x05\xF2\x05\x12\x062\x06R\x06r\x06\x92\x06\xAD\x06\xCD\x06\xD4\x06\xF4\x06P\x04P\x04P\x04P\x04\t\x07)\x07)\x07D\x07)\x07)\x07)\x07)\x07)\x07J\x07j\x07\x86\x07P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04\x96\x07P\x04P\x04P\x04\xB6\x07\xD3\x07\xEC\x07\x08\x08(\x08(\x08(\x08(\x08(\x08(\x08(\x08(\x08)\x08(\x08I\x08\\\x08P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04m\x08\x8D\x08\xA4\x08P\x04P\x04P\x04P\x04\xC4\x08P\x04P\x04P\x04P\x04P\x04P\x04\xE4\x08\xF9\x08\x19\t9\tY\to\t\x8F\t\xA7\tP\x04\xB7\t\xD7\t\xEE\t\x01\n!\nA\nP\x04Z\nz\n\x9A\n\xBA\n\x82\x02\xCD\n\xED\n\x08\x0BP\x04P\x04p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03(\x0Bp\x03p\x03p\x03p\x03p\x03p\x03p\x038\x0BW\x0Bp\x03p\x03p\x03p\x03p\x03p\x03p\x03m\x0Bp\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03x\x0Bp\x03\x97\x0BP\x04P\x04P\x04P\x04p\x03\x9B\x0BP\x04P\x04p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03p\x03\xBB\x0Bp\x03p\x03p\x03p\x03p\x03p\x03p\x03\xD0\x0BP\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04P\x04\xF0\x0B") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0\x19\0\0\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0\x01\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\x04\0\0\x02\x04\x02\x04\x02\x04\0\0\x03\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\x04\0\0\x02\x04\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x05\x08\x06\x08\x07\x08\x08\x08\t\x08\n\x08\x0B\x08\x0C\x08\r\x08\x0E\x08\x0F\x08\x10\x08\x11\x08\x12\x08\x13\x08\x01\0\x12\x08\x14\x08\x01\0\x15\x08\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x16\x08\x01\0\x01\0\x17\x08\x18\x08\x16\x08\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x19\x08\x16\x08\x01\0\x1A\x08\x1B\x08\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x1C\x08\x01\0\x01\0\x1C\x08\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x1D\x08\x01\0\x01\0\x01\0\x01\0\x01\0\x1E\x08\x01\0\x01\0\x01\0\x01\0\x1F\x08\x1F\x08\x1F\x08\x1F\x08\x1F\x08\x1F\x08\x1F\x08\x1F\x08\x1F\x08\x1F\x08\x1F\x08\x1F\x08\x1F\x08\x0E\0\x0E\0\x0E\0\x0E\0 \x04!\x0C\x0E\0\x0E\0g\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\0\0\x0E\0g\0g\0g\0g\0\x0E\0\0\0\x0E\0\0\0\x0E\0\x0E\0\x0E\0g\0\x0E\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\"\x0C#\x0C$\x08$\x08#\x0C\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0g\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0g\0g\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0%\x0C\x03\0g\0g\0\x03\0\x03\0\x03\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0g\0g\0g\0g\0g\0g\0g\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0g\0g\0g\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0&\x04\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0&\x04'\x0C\x02\0\x02\0(\x04\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0)\x04\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0*\x08*\x08*\x08*\x08*\x08*\x08*\x08*\x08*\x08*\x08*\x08\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0+\x0C+\x0C+\x0C+\x0C+\x0C+\x0C+\x0C+\x0C+\x0C+\x0C\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0*\x08\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0,\x0C\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0g\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0g\0g\0\"\0\"\0\"\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0W\0g\0g\0W\0W\0W\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0g\0g\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0~\0g\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0T\0g\0g\0T\0g\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0g\0g\0g\0g\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0g\0g\0g\0g\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0-\x08.\x08\x01\0\x01\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0/\x040\x041\x0C1\x0C1\x0C1\x0C1\x0C1\x0C1\x0C1\x0C1\x0C1\x0C\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\x04\0\x04\0\x04\0\x04\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0g\0\x04\0\x04\0g\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0\x04\0g\0g\0g\0\x04\0\x04\0\x04\0\x04\0g\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0g\0\x04\0\x04\0g\0g\0\x04\0\x04\0\x04\0\x04\0g\0g\0g\0g\0g\0g\0g\0g\0\x04\0g\0g\0g\0g\0\x04\0\x04\0g\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0g\x002\x0C2\x0C2\x0C2\x0C2\x0C2\x0C2\x0C2\x0C2\x0C2\x0C\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0\x04\0g\0\x10\0\x10\0\x10\0g\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0g\0g\0g\0g\0\x10\0\x10\0g\0g\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0g\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0g\0\x10\0\x10\0g\0\x10\0\x10\0g\0\x10\0\x10\0g\0g\0\x10\0g\0\x10\0\x10\0\x10\0g\0g\0g\0g\0\x10\0\x10\0g\0g\0\x10\0\x10\0\x10\0g\0g\0g\0\x10\0g\0g\0g\0g\0g\0g\0g\0\x10\0\x10\0\x10\0\x10\0g\0\x10\0g\0g\0g\0g\0g\0g\0g\x003\x0C3\x0C3\x0C3\x0C3\x0C3\x0C3\x0C3\x0C3\x0C3\x0C\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0\x10\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0g\0\x0F\0\x0F\0\x0F\0g\0g\0\x0F\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x0F\0\x0F\0\x0F\0\x0F\0g\0g\x004\x0C4\x0C4\x0C4\x0C4\x0C4\x0C4\x0C4\x0C4\x0C4\x0C\x0F\0\x0F\0g\0g\0g\0g\0g\0g\0g\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0\x0F\0g\0\x1F\0\x1F\0\x1F\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0\x1F\0\x1F\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0\x1F\0g\0g\0g\0g\0g\0g\0g\0\x1F\0\x1F\0\x1F\0g\0g\0g\0g\0\x1F\0\x1F\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0g\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0\x1F\0g\0g\0g\0g\0g\0g\0g\0g\0#\0#\0g\0#\0#\0#\0#\0#\0#\0g\0g\0g\0#\0#\0#\0g\0#\0#\0#\0#\0g\0g\0g\0#\0#\0g\0#\0g\0#\0#\0g\0g\0g\0#\0#\0g\0g\0g\0#\0#\0#\0g\0g\0g\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0g\0g\0g\0g\0#\0#\0#\0g\0g\0g\0#\0#\0#\0g\0#\0#\0#\0#\0g\0g\0#\0g\0g\0g\0g\0g\0g\0#\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\x005\x0C5\x0C5\x0C5\x0C5\x0C5\x0C5\x0C5\x0C5\x0C5\x0C5\x0C5\x0C5\x0C5\x0C#\0#\0#\0#\0#\0#\0#\0g\0g\0g\0g\0g\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0g\0$\0$\0$\0g\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0g\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0g\0g\0$\0$\0$\0$\0$\0g\0$\0$\0$\0g\0$\0$\0$\0$\0g\0g\0g\0g\0g\0g\0g\0$\0$\0g\0$\0$\0$\0g\0g\0$\0g\0g\0$\0$\0$\0$\0g\0g\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0g\0g\0g\0g\0g\0g\0g\0$\0$\0$\0$\0$\0$\0$\0$\0$\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0g\0\x15\0\x15\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0\x15\0g\0g\0g\0g\0g\0g\0g\0\x15\0\x15\0g\0g\0g\0g\0g\0g\0\x15\0\x15\0g\0\x15\0\x15\0\x15\0\x15\0g\0g\x006\x0C6\x0C6\x0C6\x0C6\x0C6\x0C6\x0C6\x0C6\x0C6\x0Cg\0\x15\0\x15\0\x15\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0g\0\x1A\0\x1A\0\x1A\0g\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0g\0\x1A\0\x1A\0\x1A\0g\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0g\0g\0g\0g\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0g\0g\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0\x1A\0g\0!\0!\0!\0g\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0g\0g\0g\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0g\0!\0!\0!\0!\0!\0!\0!\0!\0!\0g\0!\0g\0g\0!\0!\0!\0!\0!\0!\0!\0g\0g\0g\0!\0g\0g\0g\0g\0!\0!\0!\0!\0!\0!\0g\0!\0g\0!\0!\0!\0!\0!\0!\0!\0!\0g\0g\0g\0g\0g\0g\0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0g\0g\0!\0!\0!\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0g\0g\0g\0g\0\0\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x18\0\x18\0g\0\x18\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0\x18\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0\x18\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0g\0g\0\x18\0\x18\0\x18\0\x18\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0g\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0g\0g\0g\0g\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0g\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0g\0'\0'\0'\0'\0'\0'\0'\0\0\0\0\0\0\0\0\0'\0'\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\x007\x0C7\x0C7\x0C7\x0C7\x0C7\x0C7\x0C7\x0C7\x0C7\x0C\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0g\0\x0C\0g\0g\0g\0g\0g\0\x0C\0g\0g\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\08\x04\x0C\0\x0C\0\x0C\0\x0C\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0g\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0g\0g\0g\0g\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0g\0g\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0g\0g\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0\x1D\0g\0g\0g\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \09\x049\x049\x04 \0 \0 \0 \0 \0 \0 \0 \0 \0g\0g\0g\0g\0g\0g\0g\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0g\0g\0g\0g\0g\0g\0g\0g\0g\0*\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0:\x04:\x04g\0g\0g\0g\0g\0g\0g\0g\0g\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0-\0-\0-\0-\0-\0-\0-\0-\0-\0-\0-\0-\0-\0g\0-\0-\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0g\0g\0g\0g\0g\0g\0\x1B\0\x1B\0;\x04;\x04\x1B\0;\x04\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0g\0g\0g\0g\0g\0g\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0\x1B\0g\0g\0g\0g\0g\0g\0g\0(\0(\0(\0(\0(\0(\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\0g\0g\0g\0g\x000\0g\0g\0g\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\x004\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0g\0g\0g\0g\0g\0g\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0;\0g\0g\0g\0;\0;\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\x007\0g\0g\x007\x007\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0g\0g\0j\0j\0j\0j\0j\0j\0j\0j\0j\0j\0g\0g\0g\0g\0g\0g\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0g\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0>\0g\0>\0>\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0q\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0g\0g\0g\0g\0g\0g\0g\0g\0?\0?\0?\0?\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0R\0g\0g\0g\0R\0R\0R\0R\0R\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0m\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0g\0g\0g\0g\0g\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0\x0C\0g\0g\0\x0C\0\x0C\0\x0C\0q\0q\0q\0q\0q\0q\0q\0q\0g\0g\0g\0g\0g\0g\0g\0g\0<\x08=\x08<\x08>\x04=\x08?\x08?\x08@\x08?\x08@\x08A\x08=\x08@\x08@\x08=\x08=\x08@\x08?\x04=\x08=\x08=\x08=\x08=\x08=\x08=\x08B\x04?\x04=\x04=\x04?\x08=\x04=\x04C\x04D\x04E\x08?\x04?\x04F\x04D\x08D\x08G\x04g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x08\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x0E\0\x0E\0\x0E\0\x19\0\x19\0\x19\0\x19\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x08\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x0E\0\x1C\x08\x1C\x08\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0H\x08\x01\0I\x08\x01\0\x01\0\x01\0\x01\0\x01\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0\x0E\0g\0\x0E\0g\0\x0E\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0\x0E\0\x0E\0\x0E\0g\0g\0\x0E\0\x0E\0\x0E\0g\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0J\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0K\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0L\x04\0\0\0\0M\x04\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0N\x08g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\x0E\0\0\0\0\0\0\0\x19\0\x19\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0.\0\0\0\0\0\0\0\0\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\08\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0g\0g\0g\0g\0g\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0\x07\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0<\0g\0g\0g\0g\0g\0g\0g\0<\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0<\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0O\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0P\x04Q\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\x04\0\0\0\0\0\0S\x04\0\0T\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0g\0\x11\0\x11\0\x11\0\x11\0\x11\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0U\x04U\x04U\x04U\x04U\x04U\x04U\x04U\x04U\x04U\x04U\x04U\x04U\x04U\x04U\x04U\x04\0\0V\x04W\x04X\x04\0\0\x11\0Y\x04\x11\0Z\x04Z\x04[\x04[\x04\\\x04\\\x04\\\x04\\\x04\0\0X\x04\\\x04\\\x04\\\x04\\\x04\\\x04\\\x04\\\x04\\\x04X\x04X\x04X\x04X\x04\0\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0]\x08]\x08]\x08]\x08\x12\0\x12\0X\x04^\x04^\x04^\x04^\x04^\x04\0\0X\x04\x11\0\x11\0\x11\0\x11\0_\x04_\x04Y\x04Y\x04g\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0g\0g\0^\x08^\x08^\x04^\x04\x14\0\x14\0\x14\0^\x04\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\\\x04^\x04\x16\0\x16\0\x16\0g\0g\0g\0g\0g\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0g\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04g\0g\0g\0g\0g\0g\0g\0g\0g\0U\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\0\0Y\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04\0\0\0\0\0\0\0\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04Y\x04\0\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0\x83\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0c\0g\0g\0g\0g\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0#\x0C\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0\x82\0g\0g\0g\0g\0g\0g\0g\0g\0`\x04`\x04`\x04`\x04`\x04`\x04`\x04`\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0\0\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0\x19\0\x19\0g\0\x19\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0:\0g\0g\0g\0a\x04a\x04a\x04b\x04b\x04b\x04c\x04c\x04d\x04c\x04g\0g\0g\0g\0g\0g\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0Z\0g\0g\0g\0g\0g\0g\0g\0g\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0o\0g\0g\0g\0g\0g\0g\0g\0g\0o\0o\0\n\0e\x0C\n\0f\x0C\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0O\0g\x04O\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0n\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0n\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0g\0g\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0g\0h\x04N\0N\0N\0N\0N\0N\0N\0N\0N\0N\0g\0g\0g\0g\0N\0N\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0\x1C\0g\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0g\0g\0g\0g\0g\0g\0g\0g\0g\0B\0B\0B\0B\0B\0B\0B\0B\0B\0B\0g\0g\0B\0B\0B\0B\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x7F\0\x7F\0\x7F\0\x7F\0\x7F\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0s\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x0E\0\x19\0\x19\0\x19\0\x19\0\0\0\0\0g\0g\0g\0g\0\x12\0\x12\0\x12\0\x12\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0g\0g\0g\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0g\0g\0g\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0\x11\0g\0g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x03\0\x03\0\x03\0\x03\0\x03\0g\0g\0g\0g\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0g\0\x13\0g\0\x13\0\x13\0g\0\x13\0\x13\0g\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x13\0\x02\0\x02\0\x02\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0i\x04i\x04\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0g\0g\0g\0g\0g\0g\0\x02\0\x02\0j\x0C\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0j\x0C\x02\0\x02\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x08\0\x08\0\0\0\0\0\0\0\0\0\0\0X\x04X\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\\x04\\\x04\\\x04\\\x04\\\x04\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0^\x04^\x04g\0g\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0g\0\x12\0\x12\0\x12\0\x12\0\x12\0\x12\0g\0g\0\x12\0\x12\0\x12\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0g\0g\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\0g\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\0g\x001\x001\0g\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\x001\0g\0g\0g\0g\0g\0k\x04k\x04l\x04g\0g\0g\0g\0m\x04m\x04m\x04m\x04m\x04m\x04m\x04m\x04m\x04m\x04m\x04m\x04m\x04m\x04m\x04m\x04g\0g\0g\0l\x04l\x04l\x04l\x04l\x04l\x04l\x04l\x04l\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0\x0E\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0g\0g\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0k\0g\0g\0g\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0h\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0n\x08n\x04n\x04n\x04n\x04n\x04n\x04n\x04n\x04n\x04n\x04n\x04n\x04n\x04n\x04n\x04g\0g\0g\0g\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0\x1E\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x1E\0\x1E\0\x1E\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0\r\0g\0g\0g\0g\0g\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0Y\0g\0g\0g\0g\0g\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\x005\0g\x005\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0=\0g\0g\0g\0g\0=\0=\0=\0=\0=\0=\0=\0=\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\0\t\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\x002\0g\0g\0g\0g\0g\0g\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0g\0g\0g\0g\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\xAB\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0\x88\0g\0g\0g\0g\0g\0g\0g\0g\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0\x9F\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x9F\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0g\0\xC5\0\xC5\0\xC5\0\xC5\0g\0\xC5\0\xC5\0g\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0g\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0\xC5\0g\0\xC5\0\xC5\0g\0g\0g\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0\xCE\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0S\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0g\0g\0/\0/\0/\0/\0/\0/\0g\0g\0/\0g\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0g\0/\0/\0g\0g\0g\0/\0g\0g\0/\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0t\0g\0t\0t\0t\0t\0t\0t\0t\0t\0t\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0g\0g\0g\0g\0g\0g\0g\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\x8F\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0g\0\xA2\0\xA2\0g\0g\0g\0g\0g\0\xA2\0\xA2\0\xA2\0\xA2\0\xA2\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0[\0g\0g\0g\0[\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0l\0g\0g\0g\0g\0g\0l\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0V\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0g\0g\0g\0g\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\0\x8D\09\09\09\09\0g\09\09\0g\0g\0g\0g\0g\09\09\09\09\0g\09\09\09\0g\09\09\09\09\09\09\09\09\09\09\09\09\09\09\09\09\0g\0g\09\09\09\0g\0g\0g\0g\09\09\09\09\09\09\09\09\09\0g\0g\0g\0g\0g\0g\0g\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x85\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0\x8E\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0y\0g\0g\0g\0g\0y\0y\0y\0y\0y\0o\x0Cy\0y\0y\0y\0g\0g\0g\0g\0g\0g\0g\0g\0g\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0u\0g\0g\0g\0u\0u\0u\0u\0u\0u\0u\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0}\0g\0g\0}\0}\0}\0}\0}\0}\0}\0}\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0z\0g\0g\0g\0g\0g\0z\0z\0z\0z\0z\0z\0z\0z\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0{\0g\0g\0g\0g\0g\0g\0g\0{\0{\0{\0{\0g\0g\0g\0g\0g\0g\0g\0g\0g\0{\0{\0{\0{\0{\0{\0{\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0X\0g\0g\0g\0g\0g\0g\0g\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0L\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0L\0L\0L\0g\0g\0g\0g\0g\0g\0g\0L\0L\0L\0L\0L\0L\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0\xB6\0g\0g\0g\0g\0g\0g\0g\0g\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0g\0g\0g\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0\xC9\0g\0g\0g\0g\0g\0g\0g\0g\0\xC9\0\xC9\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0\xC0\0g\0\xC0\0\xC0\0\xC0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x02\0\x02\0\x02\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0\xB8\0g\0g\0g\0g\0g\0g\0g\0g\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0\xB7\0g\0g\0g\0g\0g\0g\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0\xC2\0g\0g\0g\0g\0g\0g\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0\xBD\0g\0g\0g\0g\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0\xB9\0g\0g\0g\0g\0g\0g\0g\0g\0g\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0g\0g\0g\0g\0g\0g\0g\0g\0g\0A\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0x\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0x\0g\0g\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0\x98\0g\0g\0g\0g\0g\0g\0g\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0g\0v\0v\0v\0v\0v\0v\0v\0v\0v\0v\0g\0g\0g\0g\0g\0g\0g\0g\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0\xA0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0\x97\0!\0!\0!\0!\0!\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0g\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0\x9D\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0g\0\xA4\0g\0\xA4\0\xA4\0\xA4\0\xA4\0g\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0g\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0\xA4\0g\0g\0g\0g\0g\0g\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0\x91\0g\0g\0g\0g\0g\0g\0\x89\0p\x0C\x89\0p\x0Cg\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0g\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0\x89\0\x89\0g\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0q\x08p\x0C\x89\0\x89\0\x89\0\x89\0\x89\0g\0g\0\x89\0\x89\0g\0g\0\x89\0\x89\0\x89\0g\0g\0g\0g\0g\0g\0\x89\0g\0g\0g\0g\0g\0\x89\0\x89\0\x89\0\x89\0g\0g\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0\x89\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0g\0\xCF\0g\0g\0\xCF\0g\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0g\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0g\0\xCF\0g\0g\0\xCF\0g\0\xCF\0\xCF\0\xCF\0\xCF\0g\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0\xCF\0g\0\xCF\0\xCF\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0\xAA\0g\0\xAA\0\xAA\0\xAA\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0\x9E\0g\0g\0g\0g\0g\0g\0g\0g\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0g\0g\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA6\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0\xA3\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0\x99\0g\0g\0g\0g\0g\0g\0\x1C\0\x1C\0\x1C\0\x1C\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0g\0g\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0\xA1\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0\xB2\0g\0g\0g\0g\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0\x92\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x92\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0g\0g\0\xBE\0g\0g\0\xBE\0\xBE\0\xBE\0\xBE\0g\0\xBE\0\xBE\0g\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0g\0\xBE\0\xBE\0g\0g\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0\xBE\0g\0g\0g\0g\0g\0g\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0g\0g\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0\xBB\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0\xB1\0g\0g\0g\0g\0g\0g\0g\0g\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0\xB0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0\xA5\0g\0g\0g\0g\0g\0g\0g\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0\n\0g\0g\0g\0g\0g\0g\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0\xCD\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0g\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0\xA8\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0g\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0\xA9\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0g\0\xAF\0\xAF\0g\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0g\0g\0g\0\xAF\0g\0\xAF\0\xAF\0g\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0g\0g\0g\0g\0g\0g\0g\0g\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0\xAF\0g\0g\0g\0g\0g\0g\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0g\0\xB3\0\xB3\0g\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0g\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0g\0g\0g\0g\0g\0g\0g\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0\xB3\0g\0g\0g\0g\0g\0g\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0\xB4\0g\0g\0g\0g\0g\0g\0g\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0g\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0g\0g\0g\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0\xC6\0g\0g\0g\0g\0g\0\x83\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\x005\x0C5\x0C#\x005\x0C#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0#\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0e\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0\xC1\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0G\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0\x9C\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0\xCA\0g\0g\0g\0g\0g\0g\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0\x95\0g\0g\0g\0g\0\x95\0\x95\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0\xC3\0g\0g\0g\0g\0g\0g\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0\x86\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0g\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0K\0g\0g\0g\0g\0g\0K\0K\0K\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0\xCB\0g\0g\0g\0g\0g\0g\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0\xB5\0g\0g\0g\0g\0g\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0g\0g\0g\0g\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0\\\0g\0g\0g\0g\0g\0g\0g\0\\\0\x9A\0\x96\0\x11\0\x11\0\xBF\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x11\0\x11\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0\x9A\0g\0g\0g\0g\0g\0g\0g\0g\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0\xBF\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xBF\0\x16\0\x16\0\x16\0\x16\0g\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0g\0\x16\0\x16\0g\0\x16\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x14\0\x16\0\x16\0\x16\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x14\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x14\0\x14\0\x14\0g\0g\0\x16\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x16\0\x16\0\x16\0\x16\0g\0g\0g\0g\0g\0g\0g\0g\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0\x96\0g\0g\0g\0g\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0g\0g\0g\0g\0g\0g\0g\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0\x87\0g\0g\0\x87\0\x87\0\x87\0\x87\0R\x04R\x04R\x04R\x04g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\x01\0\x01\0\x01\0\0\0\0\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0\x0E\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0Y\x04Y\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0g\0g\0\0\0g\0g\0\0\0\0\0g\0g\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0g\0g\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0g\0\0\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0p\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0g\0g\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0g\0g\0g\0g\0g\08\08\08\08\08\08\08\0g\08\08\08\08\08\08\08\08\08\0g\0g\08\08\08\08\08\0g\08\08\0g\08\08\08\08\08\0g\0g\0g\0g\0g\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0\x08\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x08\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0\xBA\0g\0g\0g\0g\0\xBA\0\xBA\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0\xC4\0g\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0\xBC\0g\0g\0g\0g\0g\0\xBC\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0\xC7\0g\0g\0g\0g\0g\0g\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0\xCC\0g\0g\0g\0g\0\xCC\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0\x0B\0\x0B\0\x0B\0g\0\x0B\0\x0B\0g\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0g\0g\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0\x8C\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0\xA7\0g\0g\0g\0g\0\xA7\0\xA7\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\x02\0\x02\0g\0\x02\0g\0g\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0g\0\x02\0g\0g\0g\0g\0\x02\0g\0g\0g\0g\0\x02\0g\0\x02\0g\0\x02\0g\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0g\0\x02\0g\0g\0\x02\0g\0\x02\0g\0\x02\0g\0\x02\0g\0\x02\0\x02\0g\0\x02\0g\0g\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0g\0g\0g\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0\x02\0\x02\0\x02\0\x02\0\x02\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0\x14\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0Y\x04Y\x04g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0g\0g\0g\0g\0\0\0\x11\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0g\0") }, icu::properties::script::ScriptWithExt(103u16)), extensions: unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(b"r\0 \0.\x002\x006\0:\0J\0Z\0b\0l\0\x82\0\x8E\0\x96\0\xA8\0\xBC\0\xC0\0\xC6\0\xCE\0\xD4\0\xD8\0\xDC\0\xE2\0\xEA\0\xEE\0\xF8\0\0\x01\x06\x01\x0C\x01\x18\x01\x1A\x01\x1E\x01$\x01&\x01*\x010\x016\x01<\x01@\x01H\x01V\x01^\x01n\x01\x80\x01\x84\x01\x8C\x01\x92\x01\xAC\x01\xC4\x01\xEE\x01\x1C\x02&\x02.\x024\x02:\x02@\x02H\x02P\x02V\x02X\x02`\x02d\x02l\x02n\x02t\x02x\x02|\x02\x88\x02\x8C\x02\xA2\x02\xA6\x02\xAE\x02\xB0\x02\xB2\x02\xB8\x02\xBA\x02\xC0\x02\xC4\x02\xD0\x02\xD8\x02\xDE\x02\xE2\x02\xE6\x02\xF4\x02\xF6\x02\xFC\x02\0\x03\x04\x03\x12\x03\"\x03,\x03.\x03>\x03P\x03\\\x03`\x03d\x03j\x03n\x03\x8E\x03\xAC\x03\xC2\x03\xDA\x03\xE2\x03\xE8\x03\xEE\x03\xF2\x03\xF6\x03\xFC\x03\x02\x04\x06\x04\x0C\x04\x10\x04\x16\x04\x1C\x04\x07\0\x0C\0\r\0\x0E\0\x11\0\x19\x003\08\0Y\0h\0l\0u\0\x87\0\x88\0\xA0\0\xB3\0\x04\0\x08\0\n\0\x19\0&\0\x83\0\xC4\0\x05\0\x19\0\x19\0\x83\0\x19\0&\0\x06\0\x07\0\x08\0\x0E\0\x19\x004\0Y\0\xCD\0\x06\0\x08\0\x0E\0\x19\x004\0\xAB\0\xCD\0\xCE\0\x06\0\x08\0\x19\0<\0\x19\0\"\0&\08\0\xCD\0\x06\0\x07\0\x08\0\r\0\x0E\0\x19\0\"\0<\0\x9F\0\xAB\0\xCE\0\x07\0\r\0\x16\0\x19\08\0\x88\0\x08\0\x0E\0\x19\0Y\0\x07\0\x13\0\x19\0\"\x004\0<\0Y\0\x87\0\xCE\0\x03\0\x08\0\r\0\x0E\0\x13\0\x19\0\"\x004\0Y\0\x87\0\x19\0<\0\x19\0\"\0\x87\0\x06\0\x08\0\x19\0\xAB\0\x06\0\x19\x004\0\x19\0\xCD\0\x0B\0\x19\0\x08\0\x19\0\xCE\0\x0E\0\x19\0Y\0\xCE\0\x19\0\"\0\x06\0\x16\0\x19\0\"\0\x87\0\x06\0\x19\0\"\0\x87\0\x19\0\"\0\xCD\0\x06\0\x19\0\"\0\x06\0\r\0\x19\0&\0\x9F\0\xCD\0\x0E\0\x19\0\xAB\0\x19\0\x9F\0\xCE\0\x19\0\x07\0\x0E\0\x0E\0\x07\0\x0E\0\x08\0\x08\0Y\0\x08\0\x08\08\0\x08\0\x19\0\x03\0\x03\0\x0C\08\0\x02\0\"\0%\0W\0\xB6\0\xC0\0\xC9\0\x02\0\x02\0\"\0%\0\x02\0\"\0%\0W\0\xA7\0\xB6\0\xC0\0\xC9\0\x02\0\"\0T\0y\0{\0\xA7\0\xB6\0\xB7\0\xC2\0\x02\0\"\0\x02\0\x02\0%\0\xC0\0\x02\0\x02\0\xB6\0\x04\0\n\0\x0F\0\x10\0\x15\0\x19\0\x1A\0\x1F\0#\0$\0\x89\0\x97\0\x9E\0\x04\0\n\0\x0F\0\x10\0\x15\0\x19\0\x1A\0\x1F\0#\0$\0\x89\0\x9E\0\x04\0\n\0\x0F\0\x10\0\x15\0\x1A\0\x1F\0!\0#\0$\0:\0\x89\0\x91\0\x99\0\x9E\0\xA0\0\xAF\0\xB2\0\xB3\0\xBB\0\xCC\0\x04\0\n\0\x0F\0\x10\0\x15\0\x1A\0\x1F\0!\0#\0$\x000\0:\0\x89\0\x91\0\x99\0\x9E\0\xA0\0\xAF\0\xB2\0\xB3\0\xBB\0\xCA\0\xCC\0\n\0\n\0x\0\xA0\0\xB2\0\x04\0\x04\0:\0v\0\x10\0\x10\0\xA4\0\x0F\0\x0F\0\x9D\0#\0#\0\x89\0\x15\0\x15\0\xBB\0\xCF\0\x1C\0\x1C\x004\0v\0\x0C\0\x19\08\0 \0*\0+\0,\0-\0\x1B\0Z\0\x04\0\n\0\x15\0\x89\0\n\0\n\0\x15\0\x89\0\x04\0\n\0\n\0\x97\0\n\0\x15\0\x1A\0\x1F\0#\0$\0\n\0\xBB\0\x04\0\n\0\x15\0\x1A\0\x1F\0!\0$\0\x89\0\x9E\0\xBB\0\xCF\0\n\0\x89\0\n\0\x15\0\x89\0\xCF\0\x04\0\xBB\0\x08\0\x19\0\"\0\"\0\x19\0\x1B\0Z\0\x02\0\xA7\0\x0C\08\0L\0X\0h\0k\0\x0E\0L\0V\0h\0\n\0\x19\0\x89\0\x07\0\x19\0X\0u\0\x0C\0L\0h\0l\0u\0x\0~\0\x87\0\x02\0L\0\xA7\0\x08\08\0\x11\0\x9A\0\x05\0\x11\0\x12\0\x14\0\x16\0\x1B\0)\0\x05\0\x11\0\x12\0\x14\0\x16\0\x1B\0)\0Z\0\x05\0\x11\0\x12\0\x14\0\x16\0\x11\0\x05\0\x11\0\x12\0\x14\0\x16\0\x1B\0'\0)\0\x05\0\x11\0\x12\0\x14\0\x16\0\x1B\0'\0)\0\x83\0\x05\0\x11\0\x12\0\x14\0\x16\0)\0\x05\0\x11\0\x14\0\x16\0\x11\0\x14\0\x16\0\x11\0\x19\0\n\0\x0F\0\x10\0\x15\0\x1A\0x\0\x91\0\x97\0\x99\0\x9D\0\x9E\0\xA0\0\xA3\0\xB2\0\xBB\0\xCF\0\n\0\x0F\0\x10\0\x15\0x\0\x91\0\x97\0\x99\0\x9D\0\x9E\0\xA0\0\xA3\0\xB2\0\xBB\0\xCF\0\n\0\x0F\0\x10\0x\0\x91\0\x99\0\x9D\0\x9E\0\xA0\0\xA3\0\xB2\0\n\0\x0F\0\x10\0x\0\x91\0\x97\0\x99\0\x9D\0\x9E\0\xA0\0\xA3\0\xB2\0\n\0\x04\0\n\0\xCF\0\n\0\n\0#\0\x19\0\x1C\0O\x007\0N\0\x02\0W\0\x02\0\x02\0%\0/\x001\0\xC1\0/\x001\0/\x001\0S\0\x02\0\x07\0y\0y\0\xC2\0\x89\0#\0\x89\0#\0\x89\0") } };
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DataProvider<icu::properties::provider::PropertyScriptWithExtensionsV1> for $provider {
+            fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::properties::provider::PropertyScriptWithExtensionsV1>, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponse { payload: icu_provider::DataPayload::from_static_ref(Self::SINGLETON_PROPERTY_SCRIPT_WITH_EXTENSIONS_V1), metadata: icu_provider::DataResponseMetadata::default() })
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyScriptWithExtensionsV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , ITER) => {
+        __impl_property_script_with_extensions_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyScriptWithExtensionsV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+    ($ provider : ty , DRY) => {
+        __impl_property_script_with_extensions_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyScriptWithExtensionsV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyScriptWithExtensionsV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+    };
+    ($ provider : ty , DRY , ITER) => {
+        __impl_property_script_with_extensions_v1!($provider);
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::DryDataProvider<icu::properties::provider::PropertyScriptWithExtensionsV1> for $provider {
+            fn dry_load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponseMetadata, icu_provider::DataError> {
+                if req.id.locale.is_unknown() {
+                    Ok(icu_provider::DataResponseMetadata::default())
+                } else {
+                    Err(icu_provider::DataErrorKind::InvalidRequest.with_req(<icu::properties::provider::PropertyScriptWithExtensionsV1 as icu_provider::DataMarker>::INFO, req))
+                }
+            }
+        }
+        #[clippy::msrv = "1.82"]
+        impl icu_provider::IterableDataProvider<icu::properties::provider::PropertyScriptWithExtensionsV1> for $provider {
+            fn iter_ids(&self) -> Result<std::collections::BtreeSet<icu_provider::DataIdentifierCow<'static>>, icu_provider::DataError> {
+                Ok([Default::default()].into_iter().collect())
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_property_script_with_extensions_v1 as impl_property_script_with_extensions_v1;
diff --git a/vendor/icu_properties_data/src/lib.rs b/vendor/icu_properties_data/src/lib.rs
new file mode 100644
index 00000000..7384c4f1
--- /dev/null
+++ b/vendor/icu_properties_data/src/lib.rs
@@ -0,0 +1,17 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Data for the `icu_properties` crate
+//!
+//! This data was generated with CLDR version 47.0.0, ICU version icu4x/2025-05-01/77.x, and
+//! LSTM segmenter version v0.1.0.
+
+#![no_std]
+// The source is not readable and is massive as HTML.
+#![doc(html_no_source)]
+
+#[cfg(icu4x_custom_data)]
+include!(concat!(core::env!("ICU4X_DATA_DIR"), "/mod.rs"));
+#[cfg(not(icu4x_custom_data))]
+include!("../data/mod.rs");
diff --git a/vendor/icu_provider/.cargo-checksum.json b/vendor/icu_provider/.cargo-checksum.json
new file mode 100644
index 00000000..49011e71
--- /dev/null
+++ b/vendor/icu_provider/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"40e2902a5893116a633aef952dc8c79fcae1d7d73cc392ef2b6f0908b4a2a1c9","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"2fef28533e883b656b0899debe782bd3bb9e0fcee7a83df9d8726ad545ef74b4","benches/data_locale_bench.rs":"2c9b1dff0b30a3bcc99ffcfd3f328f67ece08e6fae71cd52a546108f30d5337b","src/baked.rs":"34630e589889321cd349ccf729115cf37d7fbf3e888fb67d07c7231ae395afc2","src/baked/zerotrie.rs":"14dd3d0c452d3933ef5641bab685cc8e7a1aa86360e943caeee4793a9fa9706b","src/buf.rs":"c06e7ac4066b9b21c54fb6be040cccad984bc3578257dea8aa5299519fb6e9fe","src/buf/serde.rs":"59b7251c4569fd833bd6cc47554b1f0813975fb39e2ec7cbaa04ce3348a02f60","src/constructors.rs":"405bf89437b562c2cde6986df5a688fb808b23c964231cbb38b896e951b6a3dd","src/data_provider.rs":"3560a03094f47acb418cd5e2328c013191be8e7cabffe12bab9f445ca71ec8ad","src/dynutil.rs":"b97b46508bbab93b54c5e7f01511722cab2c091149bffcff745ea73dcadef3e8","src/error.rs":"f3f0594ec9f4087669fb202b56f288cb993d82e058072d8eadb101177e81ba89","src/export/mod.rs":"125152288d6c0b633c1e36b8fefd4cb02c6c5abb1ed54f5b3d5d4563f3b7cf03","src/export/payload.rs":"12f69d275b32ebc1f983d9514a9139ae82ce8b28669b31f2981d896b4f30ea88","src/fallback.rs":"ca6e703f6c95049c3c6eb7fb59a62e0d413800b975d9cc853145c0f74a84222e","src/hello_world.rs":"3f4e9a7709ecc7079692fb5d864fa743e91198a4437a9732340ed259d56488ae","src/lib.rs":"365226f9c65a00e36eeb295653bb5ef2bafdc31a5eefc13c36c839b4e1cac8b1","src/marker.rs":"b677776dcb64c17ed3c7f32385004e920bd81af6b8aa6e6d0b680b7b5b693273","src/request.rs":"a0d78501ce02650d959645dcebb433a40c8fe1c4fc1e62df8c2be1360e8129c4","src/response.rs":"a67928456e3e817c56cefe6815ee7ad0c0af51014820eaf0fcf216399054bb91","src/serde_borrow_de_utils.rs":"30bd6e712bf413f47c0801df845ed790ab7edcb49f57020b769ffc79c36b4651","src/varule_traits.rs":"6b6206be27c23a561da0aef12e015070aa3a437c80e19744fb99c2f3b5f3546a"},"package":"03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"}
\ No newline at end of file
diff --git a/vendor/icu_provider/Cargo.toml b/vendor/icu_provider/Cargo.toml
new file mode 100644
index 00000000..ad682e1b
--- /dev/null
+++ b/vendor/icu_provider/Cargo.toml
@@ -0,0 +1,184 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "icu_provider"
+version = "2.0.0"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+    "build.rs",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Trait and struct definitions for the ICU data provider"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.cargo-all-features]
+denylist = ["macros"]
+max_combination_size = 3
+
+[package.metadata.docs.rs]
+all-features = true
+
+[features]
+alloc = [
+    "icu_locale_core/alloc",
+    "zerovec/alloc",
+    "zerotrie/alloc",
+]
+baked = ["zerotrie"]
+deserialize_bincode_1 = [
+    "serde",
+    "dep:bincode",
+    "std",
+]
+deserialize_json = [
+    "serde",
+    "dep:serde_json",
+]
+deserialize_postcard_1 = [
+    "serde",
+    "dep:postcard",
+]
+export = [
+    "serde",
+    "dep:erased-serde",
+    "dep:databake",
+    "std",
+    "sync",
+    "dep:postcard",
+    "zerovec/databake",
+]
+logging = ["dep:log"]
+serde = [
+    "dep:serde",
+    "yoke/serde",
+]
+std = ["alloc"]
+sync = []
+
+[lib]
+name = "icu_provider"
+path = "src/lib.rs"
+bench = false
+
+[[bench]]
+name = "data_locale_bench"
+path = "benches/data_locale_bench.rs"
+harness = false
+
+[dependencies.bincode]
+version = "1.3.1"
+optional = true
+
+[dependencies.databake]
+version = "0.2.0"
+features = ["derive"]
+optional = true
+default-features = false
+
+[dependencies.displaydoc]
+version = "0.2.3"
+default-features = false
+
+[dependencies.erased-serde]
+version = "0.4.0"
+features = ["alloc"]
+optional = true
+
+[dependencies.icu_locale_core]
+version = "2.0.0"
+default-features = false
+
+[dependencies.log]
+version = "0.4.17"
+optional = true
+default-features = false
+
+[dependencies.postcard]
+version = "1.0.3"
+optional = true
+default-features = false
+
+[dependencies.serde]
+version = "1.0.110"
+features = [
+    "derive",
+    "alloc",
+]
+optional = true
+default-features = false
+
+[dependencies.serde_json]
+version = "1.0.45"
+optional = true
+
+[dependencies.stable_deref_trait]
+version = "1.2.0"
+default-features = false
+
+[dependencies.tinystr]
+version = "0.8.0"
+default-features = false
+
+[dependencies.writeable]
+version = "0.6.0"
+default-features = false
+
+[dependencies.yoke]
+version = "0.8.0"
+features = [
+    "alloc",
+    "derive",
+]
+default-features = false
+
+[dependencies.zerofrom]
+version = "0.1.3"
+features = [
+    "alloc",
+    "derive",
+]
+default-features = false
+
+[dependencies.zerotrie]
+version = "0.2.0"
+optional = true
+default-features = false
+
+[dependencies.zerovec]
+version = "0.11.1"
+features = ["derive"]
+default-features = false
+
+[dev-dependencies.serde_json]
+version = "1.0.45"
+
+[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
+version = "0.5.0"
diff --git a/vendor/icu_provider/LICENSE b/vendor/icu_provider/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/icu_provider/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/icu_provider/README.md b/vendor/icu_provider/README.md
new file mode 100644
index 00000000..9ac7ad3e
--- /dev/null
+++ b/vendor/icu_provider/README.md
@@ -0,0 +1,84 @@
+# icu_provider [![crates.io](https://img.shields.io/crates/v/icu_provider)](https://crates.io/crates/icu_provider)
+
+<!-- cargo-rdme start -->
+
+`icu_provider` is one of the `ICU4X` components.
+
+Unicode's experience with ICU4X's parent projects, ICU4C and ICU4J, led the team to realize
+that data management is the most critical aspect of deploying internationalization, and that it requires
+a high level of customization for the needs of the platform it is embedded in. As a result
+ICU4X comes with a selection of providers that should allow for ICU4X to naturally fit into
+different business and technological needs of customers.
+
+`icu_provider` defines traits and structs for transmitting data through the ICU4X locale
+data pipeline. The primary trait is [`DataProvider`]. It is parameterized by a
+[`DataMarker`], which is the type-system-level data identifier. [`DataProvider`] has a single method,
+[`DataProvider::load`], which transforms a [`DataRequest`] into a [`DataResponse`].
+
+- [`DataRequest`] contains selectors to choose a specific variant of the marker, such as a locale.
+- [`DataResponse`] contains the data if the request was successful.
+
+The most common types required for this crate are included via the prelude:
+
+```rust
+use icu_provider::prelude::*;
+```
+
+### Dynamic Data Providers
+
+If the type system cannot be leveraged to load data (such as when dynamically loading from I/O),
+there's another form of the [`DataProvider`]: [`DynamicDataProvider`]. While [`DataProvider`] is parametrized
+on the type-system level by a [`DataMarker`] (which are distinct types implementing this trait),
+[`DynamicDataProvider`]s are parametrized at runtime by a [`DataMarkerInfo`] struct, which essentially is the runtime
+representation of the [`DataMarker`] type.
+
+The [`DynamicDataProvider`] is still type-level parametrized by the type that it loads, and there are two
+implementations that should be called out
+
+- [`DynamicDataProvider<BufferMarker>`], a.k.a. [`BufferProvider`](buf::BufferProvider) returns data as `[u8]` buffers.
+
+#### BufferProvider
+
+These providers are able to return unstructured data typically represented as
+[`serde`]-serialized buffers. Users can call [`as_deserializing()`] to get an object
+implementing [`DataProvider`] by invoking Serde Deserialize.
+
+Examples of BufferProviders:
+
+- [`FsDataProvider`] reads individual buffers from the filesystem.
+- [`BlobDataProvider`] reads buffers from a large in-memory blob.
+
+### Provider Adapters
+
+ICU4X offers several built-in modules to combine providers in interesting ways.
+These can be found in the [`icu_provider_adapters`] crate.
+
+### Testing Provider
+
+This crate also contains a concrete provider for demonstration purposes:
+
+- [`HelloWorldProvider`] returns "hello world" strings in several languages.
+
+### Types and Lifetimes
+
+Types compatible with [`Yokeable`] can be passed through the data provider, so long as they are
+associated with a marker type implementing [`DynamicDataMarker`].
+
+Data structs should generally have one lifetime argument: `'data`. This lifetime allows data
+structs to borrow zero-copy data.
+
+[`FixedProvider`]: https://docs.rs/icu_provider_adapters/latest/fixed/any_payload/struct.FixedProvider.html
+[`HelloWorldProvider`]: hello_world::HelloWorldProvider
+[`Yokeable`]: yoke::Yokeable
+[`impl_dynamic_data_provider!`]: dynutil::impl_dynamic_data_provider
+[`icu_provider_adapters`]: https://docs.rs/icu_provider_adapters/latest/icu_provider_adapters/index.html
+[`SourceDataProvider`]: https://docs.rs/icu_provider_source/latest/icu_provider_source/struct.SourceDataProvider.html
+[`as_deserializing()`]: buf::AsDeserializingBufferProvider::as_deserializing
+[`FsDataProvider`]: https://docs.rs/icu_provider_fs/latest/icu_provider_fs/struct.FsDataProvider.html
+[`BlobDataProvider`]: https://docs.rs/icu_provider_blob/latest/icu_provider_blob/struct.BlobDataProvider.html
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_provider/benches/data_locale_bench.rs b/vendor/icu_provider/benches/data_locale_bench.rs
new file mode 100644
index 00000000..bed6707d
--- /dev/null
+++ b/vendor/icu_provider/benches/data_locale_bench.rs
@@ -0,0 +1,69 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+extern crate alloc;
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use icu_provider::prelude::*;
+use std::str::FromStr;
+use writeable::Writeable;
+
+static BCP47_STRINGS: &[&str] = &[
+    "ca",
+    "ca-ES",
+    "ca-ES-u-sd-esar",
+    "ca-ES-valencia",
+    "ca-ES-xyzabc",
+    "cat",
+    "pl-Latn-PL",
+    "und",
+    "und-fonipa",
+    "zh",
+];
+
+fn overview_bench(c: &mut Criterion) {
+    c.bench_function("data_locale/overview", |b| {
+        b.iter(|| {
+            for s in black_box(BCP47_STRINGS).iter() {
+                let loc = DataLocale::from_str(s).unwrap();
+                let s = loc.write_to_string();
+                loc.strict_cmp(s.as_bytes());
+            }
+        });
+    });
+
+    data_locale_bench(c);
+}
+
+fn data_locale_bench(c: &mut Criterion) {
+    c.bench_function("data_locale/parse", |b| {
+        b.iter(|| {
+            for s in black_box(BCP47_STRINGS).iter() {
+                DataLocale::from_str(s).unwrap();
+            }
+        });
+    });
+
+    let data_locales: Vec<DataLocale> = BCP47_STRINGS.iter().map(|s| s.parse().unwrap()).collect();
+
+    c.bench_function("data_locale/write_to_string", |b| {
+        b.iter(|| {
+            for loc in black_box(&data_locales).iter() {
+                loc.write_to_string();
+            }
+        });
+    });
+    c.bench_function("data_locale/strict_cmp", |b| {
+        b.iter(|| {
+            for loc in black_box(&data_locales).iter() {
+                for s in black_box(BCP47_STRINGS).iter() {
+                    loc.strict_cmp(s.as_bytes());
+                }
+            }
+        });
+    });
+}
+
+criterion_group!(benches, overview_bench,);
+criterion_main!(benches);
diff --git a/vendor/icu_provider/src/baked.rs b/vendor/icu_provider/src/baked.rs
new file mode 100644
index 00000000..1a4ce261
--- /dev/null
+++ b/vendor/icu_provider/src/baked.rs
@@ -0,0 +1,34 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module contains scaffolding for baked providers, typically generated using
+//! databake.
+//!
+//! It can be glob-imported, and includes the icu_provider prelude.
+//!
+//! This needs the `"baked"` feature to be enabled.
+
+pub mod zerotrie;
+use crate::prelude::{DataIdentifierBorrowed, DataMarker, DataPayload};
+
+/// A backing store for baked data
+pub trait DataStore<M: DataMarker>: private::Sealed {
+    /// Get the value for a key
+    fn get(
+        &self,
+        req: DataIdentifierBorrowed,
+        attributes_prefix_match: bool,
+    ) -> Option<DataPayload<M>>;
+
+    /// The type returned by the iterator
+    #[cfg(feature = "alloc")]
+    type IterReturn: Iterator<Item = crate::prelude::DataIdentifierCow<'static>>;
+    /// Iterate over all data
+    #[cfg(feature = "alloc")]
+    fn iter(&'static self) -> Self::IterReturn;
+}
+
+pub(crate) mod private {
+    pub trait Sealed {}
+}
diff --git a/vendor/icu_provider/src/baked/zerotrie.rs b/vendor/icu_provider/src/baked/zerotrie.rs
new file mode 100644
index 00000000..7aee2b0f
--- /dev/null
+++ b/vendor/icu_provider/src/baked/zerotrie.rs
@@ -0,0 +1,172 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Data stored as as [`ZeroTrieSimpleAscii`]
+
+/// This is a valid separator as `DataLocale` will never produce it.
+///
+/// Mostly for internal use
+pub const ID_SEPARATOR: u8 = 0x1E;
+
+pub use crate::DynamicDataMarker;
+use crate::{
+    prelude::{zerofrom::ZeroFrom, *},
+    ule::MaybeAsVarULE,
+};
+pub use zerotrie::ZeroTrieSimpleAscii;
+use zerovec::VarZeroSlice;
+
+fn get_index(
+    trie: ZeroTrieSimpleAscii<&'static [u8]>,
+    id: DataIdentifierBorrowed,
+    attributes_prefix_match: bool,
+) -> Option<usize> {
+    use writeable::Writeable;
+    let mut cursor = trie.cursor();
+    let _is_ascii = id.locale.write_to(&mut cursor);
+    if !id.marker_attributes.is_empty() {
+        cursor.step(ID_SEPARATOR);
+        id.marker_attributes.write_to(&mut cursor).ok()?;
+        loop {
+            if let Some(v) = cursor.take_value() {
+                break Some(v);
+            }
+            if !attributes_prefix_match || cursor.probe(0).is_none() {
+                break None;
+            }
+        }
+    } else {
+        cursor.take_value()
+    }
+}
+
+#[cfg(feature = "alloc")]
+#[allow(clippy::type_complexity)]
+fn iter(
+    trie: &'static ZeroTrieSimpleAscii<&'static [u8]>,
+) -> core::iter::FilterMap<
+    zerotrie::ZeroTrieStringIterator<'static>,
+    fn((alloc::string::String, usize)) -> Option<DataIdentifierCow<'static>>,
+> {
+    use alloc::borrow::ToOwned;
+    trie.iter().filter_map(move |(s, _)| {
+        if let Some((locale, attrs)) = s.split_once(ID_SEPARATOR as char) {
+            Some(DataIdentifierCow::from_owned(
+                DataMarkerAttributes::try_from_str(attrs).ok()?.to_owned(),
+                locale.parse().ok()?,
+            ))
+        } else {
+            s.parse().ok().map(DataIdentifierCow::from_locale)
+        }
+    })
+}
+
+/// Regular baked data: a trie for lookups and a slice of values
+#[derive(Debug)]
+pub struct Data<M: DataMarker> {
+    // Unsafe invariant: actual values contained MUST be valid indices into `values`
+    trie: ZeroTrieSimpleAscii<&'static [u8]>,
+    values: &'static [M::DataStruct],
+}
+
+impl<M: DataMarker> Data<M> {
+    /// Construct from a trie and values
+    ///
+    /// # Safety
+    /// The actual values contained in the trie must be valid indices into `values`
+    pub const unsafe fn from_trie_and_values_unchecked(
+        trie: ZeroTrieSimpleAscii<&'static [u8]>,
+        values: &'static [M::DataStruct],
+    ) -> Self {
+        Self { trie, values }
+    }
+}
+
+impl<M: DataMarker> super::private::Sealed for Data<M> {}
+impl<M: DataMarker> super::DataStore<M> for Data<M> {
+    fn get(
+        &self,
+        id: DataIdentifierBorrowed,
+        attributes_prefix_match: bool,
+    ) -> Option<DataPayload<M>> {
+        get_index(self.trie, id, attributes_prefix_match)
+            // Safety: Allowed since `i` came from the trie and the field safety invariant
+            .map(|i| unsafe { self.values.get_unchecked(i) })
+            .map(DataPayload::from_static_ref)
+    }
+
+    #[cfg(feature = "alloc")]
+    type IterReturn = core::iter::FilterMap<
+        zerotrie::ZeroTrieStringIterator<'static>,
+        fn((alloc::string::String, usize)) -> Option<DataIdentifierCow<'static>>,
+    >;
+    #[cfg(feature = "alloc")]
+    fn iter(&'static self) -> Self::IterReturn {
+        iter(&self.trie)
+    }
+}
+
+/// Optimized data stored as a single VarZeroSlice to reduce token count
+#[allow(missing_debug_implementations)] // Debug on this will not be too useful
+pub struct DataForVarULEs<M: DataMarker>
+where
+    M::DataStruct: MaybeAsVarULE,
+    M::DataStruct: ZeroFrom<'static, <M::DataStruct as MaybeAsVarULE>::EncodedStruct>,
+{
+    // Unsafe invariant: actual values contained MUST be valid indices into `values`
+    trie: ZeroTrieSimpleAscii<&'static [u8]>,
+    values: &'static VarZeroSlice<<M::DataStruct as MaybeAsVarULE>::EncodedStruct>,
+}
+
+impl<M: DataMarker> super::private::Sealed for DataForVarULEs<M>
+where
+    M::DataStruct: MaybeAsVarULE,
+    M::DataStruct: ZeroFrom<'static, <M::DataStruct as MaybeAsVarULE>::EncodedStruct>,
+{
+}
+
+impl<M: DataMarker> DataForVarULEs<M>
+where
+    M::DataStruct: MaybeAsVarULE,
+    M::DataStruct: ZeroFrom<'static, <M::DataStruct as MaybeAsVarULE>::EncodedStruct>,
+{
+    /// Construct from a trie and values
+    ///
+    /// # Safety
+    /// The actual values contained in the trie must be valid indices into `values`
+    pub const unsafe fn from_trie_and_values_unchecked(
+        trie: ZeroTrieSimpleAscii<&'static [u8]>,
+        values: &'static VarZeroSlice<<M::DataStruct as MaybeAsVarULE>::EncodedStruct>,
+    ) -> Self {
+        Self { trie, values }
+    }
+}
+
+impl<M: DataMarker> super::DataStore<M> for DataForVarULEs<M>
+where
+    M::DataStruct: MaybeAsVarULE,
+    M::DataStruct: ZeroFrom<'static, <M::DataStruct as MaybeAsVarULE>::EncodedStruct>,
+{
+    fn get(
+        &self,
+        id: DataIdentifierBorrowed,
+        attributes_prefix_match: bool,
+    ) -> Option<DataPayload<M>> {
+        get_index(self.trie, id, attributes_prefix_match)
+            // Safety: Allowed since `i` came from the trie and the field safety invariant
+            .map(|i| unsafe { self.values.get_unchecked(i) })
+            .map(M::DataStruct::zero_from)
+            .map(DataPayload::from_owned)
+    }
+
+    #[cfg(feature = "alloc")]
+    type IterReturn = core::iter::FilterMap<
+        zerotrie::ZeroTrieStringIterator<'static>,
+        fn((alloc::string::String, usize)) -> Option<DataIdentifierCow<'static>>,
+    >;
+    #[cfg(feature = "alloc")]
+    fn iter(&'static self) -> Self::IterReturn {
+        iter(&self.trie)
+    }
+}
diff --git a/vendor/icu_provider/src/buf.rs b/vendor/icu_provider/src/buf.rs
new file mode 100644
index 00000000..8c9f5e3f
--- /dev/null
+++ b/vendor/icu_provider/src/buf.rs
@@ -0,0 +1,133 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Traits for data providers that produce opaque buffers.
+
+use crate::prelude::*;
+
+#[cfg(feature = "serde")]
+mod serde;
+#[cfg(feature = "serde")]
+pub use self::serde::*;
+
+/// [`DynamicDataMarker`] for raw buffers. Returned by [`BufferProvider`].
+///
+/// The data is expected to be deserialized before it can be used; see
+/// [`DataPayload::into_deserialized`].
+#[non_exhaustive]
+#[derive(Debug)]
+pub struct BufferMarker;
+
+impl DynamicDataMarker for BufferMarker {
+    type DataStruct = &'static [u8];
+}
+
+/// A data provider that returns opaque bytes.
+///
+/// Generally, these bytes are expected to be deserializable with Serde. To get an object
+/// implementing [`DataProvider`] via Serde, use [`as_deserializing()`].
+///
+/// Passing a  `BufferProvider` to a `*_with_buffer_provider` constructor requires enabling
+/// the deserialization Cargo feature for the expected format(s):
+/// - `deserialize_json`
+/// - `deserialize_postcard_1`
+/// - `deserialize_bincode_1`
+///
+/// Along with [`DataProvider`], this is one of the two foundational traits in this crate.
+///
+/// [`BufferProvider`] can be made into a trait object. It is used over FFI.
+///
+/// # Examples
+///
+/// ```
+/// # #[cfg(feature = "deserialize_json")] {
+/// use icu_locale_core::langid;
+/// use icu_provider::hello_world::*;
+/// use icu_provider::prelude::*;
+/// use std::borrow::Cow;
+///
+/// let buffer_provider = HelloWorldProvider.into_json_provider();
+///
+/// // Deserializing manually
+/// assert_eq!(
+///     serde_json::from_slice::<HelloWorld>(
+///         buffer_provider
+///             .load_data(
+///                 HelloWorldV1::INFO,
+///                 DataRequest {
+///                     id: DataIdentifierBorrowed::for_locale(
+///                         &langid!("de").into()
+///                     ),
+///                     ..Default::default()
+///                 }
+///             )
+///             .expect("load should succeed")
+///             .payload
+///             .get()
+///     )
+///     .expect("should deserialize"),
+///     HelloWorld {
+///         message: Cow::Borrowed("Hallo Welt"),
+///     },
+/// );
+///
+/// // Deserialize automatically
+/// let deserializing_provider: &dyn DataProvider<HelloWorldV1> =
+///     &buffer_provider.as_deserializing();
+///
+/// assert_eq!(
+///     deserializing_provider
+///         .load(DataRequest {
+///             id: DataIdentifierBorrowed::for_locale(&langid!("de").into()),
+///             ..Default::default()
+///         })
+///         .expect("load should succeed")
+///         .payload
+///         .get(),
+///     &HelloWorld {
+///         message: Cow::Borrowed("Hallo Welt"),
+///     },
+/// );
+/// # }
+/// ```
+///
+/// [`as_deserializing()`]: AsDeserializingBufferProvider::as_deserializing
+pub trait BufferProvider: DynamicDataProvider<BufferMarker> {}
+
+impl<P: DynamicDataProvider<BufferMarker> + ?Sized> BufferProvider for P {}
+
+/// An enum expressing all Serde formats known to ICU4X.
+#[derive(Debug, PartialEq, Eq, Hash, Copy, Clone)]
+#[cfg_attr(feature = "serde", derive(::serde::Serialize, ::serde::Deserialize))]
+#[non_exhaustive]
+pub enum BufferFormat {
+    /// Serialize using JavaScript Object Notation (JSON), using the [`serde_json`] crate.
+    Json,
+    /// Serialize using the [`bincode`] crate, version 1.
+    Bincode1,
+    /// Serialize using the [`postcard`] crate, version 1.
+    Postcard1,
+}
+
+impl BufferFormat {
+    /// Returns an error if the buffer format is not enabled.
+    pub fn check_available(&self) -> Result<(), DataError> {
+        match self {
+            #[cfg(feature = "deserialize_json")]
+            BufferFormat::Json => Ok(()),
+            #[cfg(not(feature = "deserialize_json"))]
+            BufferFormat::Json => Err(DataErrorKind::Deserialize.with_str_context("deserializing `BufferFormat::Json` requires the `deserialize_json` Cargo feature")),
+
+            #[cfg(feature = "deserialize_bincode_1")]
+            BufferFormat::Bincode1 => Ok(()),
+            #[cfg(not(feature = "deserialize_bincode_1"))]
+            BufferFormat::Bincode1 => Err(DataErrorKind::Deserialize.with_str_context("deserializing `BufferFormat::Bincode1` requires the `deserialize_bincode_1` Cargo feature")),
+
+            #[cfg(feature = "deserialize_postcard_1")]
+            BufferFormat::Postcard1 => Ok(()),
+            #[cfg(not(feature = "deserialize_postcard_1"))]
+            BufferFormat::Postcard1 => Err(DataErrorKind::Deserialize.with_str_context("deserializing `BufferFormat::Postcard1` requires the `deserialize_postcard_1` Cargo feature")),
+        }
+    }
+}
diff --git a/vendor/icu_provider/src/buf/serde.rs b/vendor/icu_provider/src/buf/serde.rs
new file mode 100644
index 00000000..f7291d91
--- /dev/null
+++ b/vendor/icu_provider/src/buf/serde.rs
@@ -0,0 +1,246 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Provides the [`DeserializingBufferProvider`] wrapper, which deserializes data using Serde.
+//!
+//! Providers that produce opaque buffers that need to be deserialized into concrete data structs,
+//! such as `FsDataProvider`, should implement [`BufferProvider`]. These can be converted into
+//! [`DeserializingBufferProvider`] using the [`as_deserializing`](AsDeserializingBufferProvider::as_deserializing)
+//! convenience method.
+//!
+//! [`BufferProvider`]: crate::buf::BufferProvider
+
+use crate::buf::BufferFormat;
+use crate::buf::BufferProvider;
+use crate::data_provider::DynamicDryDataProvider;
+use crate::prelude::*;
+use crate::DryDataProvider;
+use serde::de::Deserialize;
+use yoke::Yokeable;
+
+/// A [`BufferProvider`] that deserializes its data using Serde.
+#[derive(Debug)]
+pub struct DeserializingBufferProvider<'a, P: ?Sized>(&'a P);
+
+/// Blanket-implemented trait adding the [`Self::as_deserializing()`] function.
+pub trait AsDeserializingBufferProvider {
+    /// Wrap this [`BufferProvider`] in a [`DeserializingBufferProvider`].
+    ///
+    /// This requires enabling the deserialization Cargo feature
+    /// for the expected format(s):
+    ///
+    /// - `deserialize_json`
+    /// - `deserialize_postcard_1`
+    /// - `deserialize_bincode_1`
+    fn as_deserializing(&self) -> DeserializingBufferProvider<Self>;
+}
+
+impl<P> AsDeserializingBufferProvider for P
+where
+    P: BufferProvider + ?Sized,
+{
+    /// Wrap this [`BufferProvider`] in a [`DeserializingBufferProvider`].
+    ///
+    /// This requires enabling the deserialization Cargo feature
+    /// for the expected format(s):
+    ///
+    /// - `deserialize_json`
+    /// - `deserialize_postcard_1`
+    /// - `deserialize_bincode_1`
+    fn as_deserializing(&self) -> DeserializingBufferProvider<Self> {
+        DeserializingBufferProvider(self)
+    }
+}
+
+fn deserialize_impl<'data, M>(
+    // Allow `bytes` to be unused in case all buffer formats are disabled
+    #[allow(unused_variables)] bytes: &'data [u8],
+    buffer_format: BufferFormat,
+) -> Result<<M::DataStruct as Yokeable<'data>>::Output, DataError>
+where
+    M: DynamicDataMarker,
+    for<'de> <M::DataStruct as Yokeable<'de>>::Output: Deserialize<'de>,
+{
+    match buffer_format {
+        #[cfg(feature = "deserialize_json")]
+        BufferFormat::Json => {
+            let mut d = serde_json::Deserializer::from_slice(bytes);
+            Ok(Deserialize::deserialize(&mut d)?)
+        }
+
+        #[cfg(feature = "deserialize_bincode_1")]
+        BufferFormat::Bincode1 => {
+            use bincode::Options;
+            let options = bincode::DefaultOptions::new()
+                .with_fixint_encoding()
+                .allow_trailing_bytes();
+            let mut d = bincode::de::Deserializer::from_slice(bytes, options);
+            Ok(Deserialize::deserialize(&mut d)?)
+        }
+
+        #[cfg(feature = "deserialize_postcard_1")]
+        BufferFormat::Postcard1 => {
+            let mut d = postcard::Deserializer::from_bytes(bytes);
+            Ok(Deserialize::deserialize(&mut d)?)
+        }
+
+        // Allowed for cases in which all features are enabled
+        #[allow(unreachable_patterns)]
+        _ => {
+            buffer_format.check_available()?;
+            unreachable!()
+        }
+    }
+}
+
+impl DataPayload<BufferMarker> {
+    /// Deserialize a [`DataPayload`]`<`[`BufferMarker`]`>` into a [`DataPayload`] of a
+    /// specific concrete type.
+    ///
+    /// This requires enabling the deserialization Cargo feature
+    /// for the expected format(s):
+    ///
+    /// - `deserialize_json`
+    /// - `deserialize_postcard_1`
+    /// - `deserialize_bincode_1`
+    ///
+    /// This function takes the buffer format as an argument. When a buffer payload is returned
+    /// from a data provider, the buffer format is stored in the [`DataResponseMetadata`].
+    ///
+    /// # Examples
+    ///
+    /// Requires the `deserialize_json` Cargo feature:
+    ///
+    /// ```
+    /// use icu_provider::buf::BufferFormat;
+    /// use icu_provider::hello_world::*;
+    /// use icu_provider::prelude::*;
+    ///
+    /// let buffer: &[u8] = br#"{"message":"Hallo Welt"}"#;
+    ///
+    /// let buffer_payload = DataPayload::from_owned(buffer);
+    /// let payload: DataPayload<HelloWorldV1> = buffer_payload
+    ///     .into_deserialized(BufferFormat::Json)
+    ///     .expect("Deserialization successful");
+    ///
+    /// assert_eq!(payload.get().message, "Hallo Welt");
+    /// ```
+    pub fn into_deserialized<M>(
+        self,
+        buffer_format: BufferFormat,
+    ) -> Result<DataPayload<M>, DataError>
+    where
+        M: DynamicDataMarker,
+        for<'de> <M::DataStruct as Yokeable<'de>>::Output: Deserialize<'de>,
+    {
+        self.try_map_project(|bytes, _| deserialize_impl::<M>(bytes, buffer_format))
+    }
+}
+
+impl<P, M> DynamicDataProvider<M> for DeserializingBufferProvider<'_, P>
+where
+    M: DynamicDataMarker,
+    P: BufferProvider + ?Sized,
+    for<'de> <M::DataStruct as Yokeable<'de>>::Output: Deserialize<'de>,
+{
+    /// Converts a buffer into a concrete type by deserializing from a supported buffer format.
+    ///
+    /// This requires enabling the deserialization Cargo feature
+    /// for the expected format(s):
+    ///
+    /// - `deserialize_json`
+    /// - `deserialize_postcard_1`
+    /// - `deserialize_bincode_1`
+    fn load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponse<M>, DataError> {
+        let buffer_response = self.0.load_data(marker, req)?;
+        let buffer_format = buffer_response.metadata.buffer_format.ok_or_else(|| {
+            DataErrorKind::Deserialize
+                .with_str_context("BufferProvider didn't set BufferFormat")
+                .with_req(marker, req)
+        })?;
+        Ok(DataResponse {
+            metadata: buffer_response.metadata,
+            payload: buffer_response
+                .payload
+                .into_deserialized(buffer_format)
+                .map_err(|e| e.with_req(marker, req))?,
+        })
+    }
+}
+
+impl<P, M> DynamicDryDataProvider<M> for DeserializingBufferProvider<'_, P>
+where
+    M: DynamicDataMarker,
+    P: DynamicDryDataProvider<BufferMarker> + ?Sized,
+    for<'de> <M::DataStruct as Yokeable<'de>>::Output: serde::de::Deserialize<'de>,
+{
+    fn dry_load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponseMetadata, DataError> {
+        self.0.dry_load_data(marker, req)
+    }
+}
+
+impl<P, M> DataProvider<M> for DeserializingBufferProvider<'_, P>
+where
+    M: DataMarker,
+    P: DynamicDataProvider<BufferMarker> + ?Sized,
+    for<'de> <M::DataStruct as Yokeable<'de>>::Output: Deserialize<'de>,
+{
+    /// Converts a buffer into a concrete type by deserializing from a supported buffer format.
+    ///
+    /// This requires enabling the deserialization Cargo feature
+    /// for the expected format(s):
+    ///
+    /// - `deserialize_json`
+    /// - `deserialize_postcard_1`
+    /// - `deserialize_bincode_1`
+    fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+        self.load_data(M::INFO, req)
+    }
+}
+
+impl<P, M> DryDataProvider<M> for DeserializingBufferProvider<'_, P>
+where
+    M: DataMarker,
+    P: DynamicDryDataProvider<BufferMarker> + ?Sized,
+    for<'de> <M::DataStruct as Yokeable<'de>>::Output: Deserialize<'de>,
+{
+    fn dry_load(&self, req: DataRequest) -> Result<DataResponseMetadata, DataError> {
+        self.0.dry_load_data(M::INFO, req)
+    }
+}
+
+#[cfg(feature = "deserialize_json")]
+impl From<serde_json::error::Error> for crate::DataError {
+    fn from(e: serde_json::error::Error) -> Self {
+        DataErrorKind::Deserialize
+            .with_str_context("serde_json")
+            .with_display_context(&e)
+    }
+}
+
+#[cfg(feature = "deserialize_bincode_1")]
+impl From<bincode::Error> for crate::DataError {
+    fn from(e: bincode::Error) -> Self {
+        DataErrorKind::Deserialize
+            .with_str_context("bincode")
+            .with_display_context(&e)
+    }
+}
+
+#[cfg(feature = "deserialize_postcard_1")]
+impl From<postcard::Error> for crate::DataError {
+    fn from(e: postcard::Error) -> Self {
+        DataErrorKind::Deserialize
+            .with_str_context("postcard")
+            .with_display_context(&e)
+    }
+}
diff --git a/vendor/icu_provider/src/constructors.rs b/vendor/icu_provider/src/constructors.rs
new file mode 100644
index 00000000..47aa06e8
--- /dev/null
+++ b/vendor/icu_provider/src/constructors.rs
@@ -0,0 +1,226 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! 📚 *This module documents ICU4X constructor signatures.*
+//!
+//! One of the key differences between ICU4X and its parent projects, ICU4C and ICU4J, is in how
+//! it deals with locale data.
+//!
+//! In ICU4X, data can always be explicitly passed to any function that requires data.
+//! This enables ICU4X to achieve the following value propositions:
+//!
+//! 1. Configurable data sources (machine-readable data file, baked into code, JSON, etc).
+//! 2. Dynamic data loading at runtime (load data on demand).
+//! 3. Reduced overhead and code size (data is resolved locally at each call site).
+//! 4. Explicit support for multiple ICU4X instances sharing data.
+//!
+//! However, as manual data management can be tedious, ICU4X also has a `compiled_data`
+//! default Cargo feature that includes data and makes ICU4X work out-of-the box.
+//!
+//! Subsequently, there are 3 versions of all Rust ICU4X functions that use data:
+//!
+//! 1. `*`
+//! 2. `*_unstable`
+//! 3. `*_with_buffer_provider`
+//!
+//! # Which constructor should I use?
+//!
+//! ## When to use `*`
+//!
+//! If you don't want to customize data at runtime (i.e. if you don't care about code size,
+//! updating your data, etc.) you can use the `compiled_data` Cargo feature and don't have to think
+//! about where your data comes from.
+//!
+//! These constructors are sometimes `const` functions, this way Rust can most effectively optimize
+//! your usage of ICU4X.
+//!
+//! ## When to use `*_unstable`
+//!
+//! Use this constructor if your data provider implements the [`DataProvider`] trait for all
+//! data structs in *current and future* ICU4X versions. Examples:
+//!
+//! 1. `BakedDataProvider` generated for the specific ICU4X minor version
+//! 2. Anything with a _blanket_ [`DataProvider`] impl
+//!
+//! Since the exact set of bounds may change at any time, including in minor SemVer releases,
+//! it is the client's responsibility to guarantee that the requirement is upheld.
+//!
+//! ## When to use `*_with_buffer_provider`
+//!
+//! Use this constructor if your data originates as byte buffers that need to be deserialized.
+//! All such providers should implement [`BufferProvider`]. Examples:
+//!
+//! 1. [`BlobDataProvider`]
+//! 2. [`FsDataProvider`]
+//! 3. [`ForkByMarkerProvider`] between two providers implementing [`BufferProvider`]
+//!
+//! Please note that you must enable the `serde` Cargo feature on each crate in which you use the
+//! `*_with_buffer_provider` constructor.
+//!
+//! # Data Versioning Policy
+//!
+//! The `*_with_buffer_provider` functions will succeed to compile and
+//! run if given a data provider supporting all of the markers required for the object being
+//! constructed, either the current or any previous version within the same SemVer major release.
+//! For example, if a data file is built to support FooFormatter version 1.1, then FooFormatter
+//! version 1.2 will be able to read the same data file. Likewise, backwards-compatible markers can
+//! always be included by `icu_provider_export` to support older library versions.
+//!
+//! The `*_unstable` functions are only guaranteed to work on data built for the exact same minor version
+//! of ICU4X. The advantage of the `*_unstable` functions is that they result in the smallest code
+//! size and allow for automatic data slicing when `BakedDataProvider` is used. However, the type
+//! bounds of this function may change over time, breaking SemVer guarantees. These functions
+//! should therefore only be used when you have full control over your data lifecycle at compile
+//! time.
+//!
+//! # Data Providers Over FFI
+//!
+//! Over FFI, there is only one data provider type: [`ICU4XDataProvider`]. Internally, it is an
+//! `enum` between`dyn `[`BufferProvider`] and a unit compiled data variant.
+//!
+//! To control for code size, there are two Cargo features, `compiled_data` and `buffer_provider`,
+//! that enable the corresponding items in the enum.
+//!
+//! In Rust ICU4X, a similar enum approach was not taken because:
+//!
+//! 1. Feature-gating the enum branches gets complex across crates.
+//! 2. Without feature gating, users need to carry Serde code even if they're not using it,
+//!    violating one of the core value propositions of ICU4X.
+//! 3. We could reduce the number of constructors from 4 to 2 but not to 1, so the educational
+//!    benefit is limited.
+//!
+//! [`DataProvider`]: crate::DataProvider
+//! [`BufferProvider`]: crate::buf::BufferProvider
+//! [`FixedProvider`]: ../../icu_provider_adapters/fixed/struct.FixedProvider.html
+//! [`ForkByMarkerProvider`]: ../../icu_provider_adapters/fork/struct.ForkByMarkerProvider.html
+//! [`BlobDataProvider`]: ../../icu_provider_blob/struct.BlobDataProvider.html
+//! [`StaticDataProvider`]: ../../icu_provider_blob/struct.StaticDataProvider.html
+//! [`FsDataProvider`]: ../../icu_provider_blob/struct.FsDataProvider.html
+//! [`ICU4XDataProvider`]: ../../icu_capi/provider/ffi/struct.ICU4XDataProvider.html
+
+#[doc(hidden)] // macro
+#[macro_export]
+macro_rules! gen_buffer_unstable_docs {
+    (BUFFER, $data:path) => {
+        concat!(
+            "A version of [`", stringify!($data), "`] that uses custom data ",
+            "provided by a [`BufferProvider`](icu_provider::buf::BufferProvider).\n\n",
+            "✨ *Enabled with the `serde` feature.*\n\n",
+            "[📚 Help choosing a constructor](icu_provider::constructors)",
+        )
+    };
+    (UNSTABLE, $data:path) => {
+        concat!(
+            "A version of [`", stringify!($data), "`] that uses custom data ",
+            "provided by a [`DataProvider`](icu_provider::DataProvider).\n\n",
+            "[📚 Help choosing a constructor](icu_provider::constructors)\n\n",
+            "<div class=\"stab unstable\">⚠️ The bounds on <tt>provider</tt> may change over time, including in SemVer minor releases.</div>"
+        )
+    };
+}
+
+/// Usage:
+///
+/// ```rust,ignore
+/// gen_buffer_data_constructors!((locale, options: FooOptions) -> error: DataError,
+///    /// Some docs
+///   functions: [try_new, try_new_with_buffer_provider, try_new_unstable]
+/// );
+/// ```
+///
+/// `functions` can be omitted if using standard names. If `locale` is omitted, the method will not take a locale. You can specify any number
+/// of options arguments, including zero.
+///
+/// By default the macro will generate a `try_new`. If you wish to skip it, write `try_new: skip`
+///
+/// Errors can be specified as `error: SomeError` or `result: SomeType`, where `error` will get it wrapped in `Result<Self, SomeError>`.
+#[allow(clippy::crate_in_macro_def)] // by convention each crate's data provider is `crate::provider::Baked`
+#[doc(hidden)] // macro
+#[macro_export]
+macro_rules! gen_buffer_data_constructors {
+    // Allow people to omit the functions
+    (($($args:tt)*) -> $error_kind:ident: $error_ty:ty, $(#[$doc:meta])*) => {
+        $crate::gen_buffer_data_constructors!(
+            ($($args)*) -> $error_kind: $error_ty,
+            $(#[$doc])*
+            functions: [
+                try_new,
+                try_new_with_buffer_provider,
+                try_new_unstable,
+                Self,
+            ]
+        );
+    };
+    // Allow people to specify errors instead of results
+    (($($args:tt)*) -> error: $error_ty:path, $(#[$doc:meta])* functions: [$baked:ident$(: $baked_cmd:ident)?, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+        $crate::gen_buffer_data_constructors!(
+            ($($args)*) -> result: Result<Self, $error_ty>,
+            $(#[$doc])*
+            functions: [
+                $baked$(: $baked_cmd)?,
+                $buffer,
+                $unstable
+                $(, $struct)?
+            ]
+        );
+    };
+
+    // locale shorthand
+    ((locale, $($args:tt)*) -> result: $result_ty:ty, $(#[$doc:meta])* functions: [$baked:ident$(: $baked_cmd:ident)?, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+        $crate::gen_buffer_data_constructors!(
+            (locale: &$crate::DataLocale, $($args)*) -> result: $result_ty,
+            $(#[$doc])*
+            functions: [
+                $baked$(: $baked_cmd)?,
+                $buffer,
+                $unstable
+                $(, $struct)?
+            ]
+        );
+    };
+    ((locale) -> result: $result_ty:ty, $(#[$doc:meta])* functions: [$baked:ident$(: $baked_cmd:ident)?, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+        $crate::gen_buffer_data_constructors!(
+            (locale: &$crate::DataLocale) -> result: $result_ty,
+            $(#[$doc])*
+            functions: [
+                $baked$(: $baked_cmd)?,
+                $buffer,
+                $unstable
+                $(, $struct)?
+            ]
+        );
+    };
+
+
+    (($($options_arg:ident: $options_ty:ty),*) -> result: $result_ty:ty, $(#[$doc:meta])* functions: [$baked:ident, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+        #[cfg(feature = "compiled_data")]
+        $(#[$doc])*
+        ///
+        /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+        ///
+        /// [📚 Help choosing a constructor](icu_provider::constructors)
+        pub fn $baked($($options_arg: $options_ty),* ) -> $result_ty {
+            $($struct :: )? $unstable(&crate::provider::Baked $(, $options_arg)* )
+        }
+
+        $crate::gen_buffer_data_constructors!(
+            ($($options_arg: $options_ty),*) -> result: $result_ty,
+            $(#[$doc])*
+            functions: [
+                $baked: skip,
+                $buffer,
+                $unstable
+                $(, $struct)?
+            ]
+        );
+    };
+    (($($options_arg:ident: $options_ty:ty),*) -> result: $result_ty:ty, $(#[$doc:meta])* functions: [$baked:ident: skip, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+        #[cfg(feature = "serde")]
+        #[doc = $crate::gen_buffer_unstable_docs!(BUFFER, $($struct ::)? $baked)]
+        pub fn $buffer(provider: &(impl $crate::buf::BufferProvider + ?Sized) $(, $options_arg: $options_ty)* ) -> $result_ty {
+            use $crate::buf::AsDeserializingBufferProvider;
+            $($struct :: )? $unstable(&provider.as_deserializing()  $(, $options_arg)* )
+        }
+    };
+}
diff --git a/vendor/icu_provider/src/data_provider.rs b/vendor/icu_provider/src/data_provider.rs
new file mode 100644
index 00000000..56ea4ae7
--- /dev/null
+++ b/vendor/icu_provider/src/data_provider.rs
@@ -0,0 +1,635 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::marker::PhantomData;
+use yoke::Yokeable;
+
+use crate::prelude::*;
+
+/// A data provider that loads data for a specific [`DataMarkerInfo`].
+pub trait DataProvider<M>
+where
+    M: DataMarker,
+{
+    /// Query the provider for data, returning the result.
+    ///
+    /// Returns [`Ok`] if the request successfully loaded data. If data failed to load, returns an
+    /// Error with more information.
+    fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError>;
+}
+
+impl<M, P> DataProvider<M> for &P
+where
+    M: DataMarker,
+    P: DataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+        (*self).load(req)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> DataProvider<M> for alloc::boxed::Box<P>
+where
+    M: DataMarker,
+    P: DataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+        (**self).load(req)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> DataProvider<M> for alloc::rc::Rc<P>
+where
+    M: DataMarker,
+    P: DataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+        (**self).load(req)
+    }
+}
+
+#[cfg(target_has_atomic = "ptr")]
+#[cfg(feature = "alloc")]
+impl<M, P> DataProvider<M> for alloc::sync::Arc<P>
+where
+    M: DataMarker,
+    P: DataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+        (**self).load(req)
+    }
+}
+
+/// A data provider that can determine whether it can load a particular data identifier,
+/// potentially cheaper than actually performing the load.
+pub trait DryDataProvider<M: DataMarker>: DataProvider<M> {
+    /// This method goes through the motions of [`load`], but only returns the metadata.
+    ///
+    /// If `dry_load` returns an error, [`load`] must return the same error, but
+    /// not vice-versa. Concretely, [`load`] could return deserialization or I/O errors
+    /// that `dry_load` cannot predict.
+    ///
+    /// [`load`]: DataProvider::load
+    fn dry_load(&self, req: DataRequest) -> Result<DataResponseMetadata, DataError>;
+}
+
+impl<M, P> DryDataProvider<M> for &P
+where
+    M: DataMarker,
+    P: DryDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn dry_load(&self, req: DataRequest) -> Result<DataResponseMetadata, DataError> {
+        (*self).dry_load(req)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> DryDataProvider<M> for alloc::boxed::Box<P>
+where
+    M: DataMarker,
+    P: DryDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn dry_load(&self, req: DataRequest) -> Result<DataResponseMetadata, DataError> {
+        (**self).dry_load(req)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> DryDataProvider<M> for alloc::rc::Rc<P>
+where
+    M: DataMarker,
+    P: DryDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn dry_load(&self, req: DataRequest) -> Result<DataResponseMetadata, DataError> {
+        (**self).dry_load(req)
+    }
+}
+
+#[cfg(target_has_atomic = "ptr")]
+#[cfg(feature = "alloc")]
+impl<M, P> DryDataProvider<M> for alloc::sync::Arc<P>
+where
+    M: DataMarker,
+    P: DryDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn dry_load(&self, req: DataRequest) -> Result<DataResponseMetadata, DataError> {
+        (**self).dry_load(req)
+    }
+}
+
+/// A [`DataProvider`] that can iterate over all supported [`DataIdentifierCow`]s.
+///
+/// The provider is not allowed to return `Ok` for requests that were not returned by `iter_ids`,
+/// and must not fail with a [`DataErrorKind::IdentifierNotFound`] for requests that were returned.
+#[cfg(feature = "alloc")]
+pub trait IterableDataProvider<M: DataMarker>: DataProvider<M> {
+    /// Returns a set of [`DataIdentifierCow`].
+    fn iter_ids(&self) -> Result<alloc::collections::BTreeSet<DataIdentifierCow>, DataError>;
+}
+
+/// A data provider that loads data for a specific data type.
+///
+/// Unlike [`DataProvider`], there may be multiple markers corresponding to the same data type.
+pub trait DynamicDataProvider<M>
+where
+    M: DynamicDataMarker,
+{
+    /// Query the provider for data, returning the result.
+    ///
+    /// Returns [`Ok`] if the request successfully loaded data. If data failed to load, returns an
+    /// Error with more information.
+    fn load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponse<M>, DataError>;
+}
+
+impl<M, P> DynamicDataProvider<M> for &P
+where
+    M: DynamicDataMarker,
+    P: DynamicDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponse<M>, DataError> {
+        (*self).load_data(marker, req)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> DynamicDataProvider<M> for alloc::boxed::Box<P>
+where
+    M: DynamicDataMarker,
+    P: DynamicDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponse<M>, DataError> {
+        (**self).load_data(marker, req)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> DynamicDataProvider<M> for alloc::rc::Rc<P>
+where
+    M: DynamicDataMarker,
+    P: DynamicDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponse<M>, DataError> {
+        (**self).load_data(marker, req)
+    }
+}
+
+#[cfg(target_has_atomic = "ptr")]
+#[cfg(feature = "alloc")]
+impl<M, P> DynamicDataProvider<M> for alloc::sync::Arc<P>
+where
+    M: DynamicDataMarker,
+    P: DynamicDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponse<M>, DataError> {
+        (**self).load_data(marker, req)
+    }
+}
+
+/// A dynanmic data provider that can determine whether it can load a particular data identifier,
+/// potentially cheaper than actually performing the load.
+pub trait DynamicDryDataProvider<M: DynamicDataMarker>: DynamicDataProvider<M> {
+    /// This method goes through the motions of [`load_data`], but only returns the metadata.
+    ///
+    /// If `dry_load_data` returns an error, [`load_data`] must return the same error, but
+    /// not vice-versa. Concretely, [`load_data`] could return deserialization or I/O errors
+    /// that `dry_load_data` cannot predict.
+    ///
+    /// [`load_data`]: DynamicDataProvider::load_data
+    fn dry_load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponseMetadata, DataError>;
+}
+
+impl<M, P> DynamicDryDataProvider<M> for &P
+where
+    M: DynamicDataMarker,
+    P: DynamicDryDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn dry_load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponseMetadata, DataError> {
+        (*self).dry_load_data(marker, req)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> DynamicDryDataProvider<M> for alloc::boxed::Box<P>
+where
+    M: DynamicDataMarker,
+    P: DynamicDryDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn dry_load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponseMetadata, DataError> {
+        (**self).dry_load_data(marker, req)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> DynamicDryDataProvider<M> for alloc::rc::Rc<P>
+where
+    M: DynamicDataMarker,
+    P: DynamicDryDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn dry_load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponseMetadata, DataError> {
+        (**self).dry_load_data(marker, req)
+    }
+}
+
+#[cfg(target_has_atomic = "ptr")]
+#[cfg(feature = "alloc")]
+impl<M, P> DynamicDryDataProvider<M> for alloc::sync::Arc<P>
+where
+    M: DynamicDataMarker,
+    P: DynamicDryDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn dry_load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponseMetadata, DataError> {
+        (**self).dry_load_data(marker, req)
+    }
+}
+
+/// A [`DynamicDataProvider`] that can iterate over all supported [`DataIdentifierCow`]s for a certain marker.
+///
+/// The provider is not allowed to return `Ok` for requests that were not returned by `iter_ids`,
+/// and must not fail with a [`DataErrorKind::IdentifierNotFound`] for requests that were returned.
+#[cfg(feature = "alloc")]
+pub trait IterableDynamicDataProvider<M: DynamicDataMarker>: DynamicDataProvider<M> {
+    /// Given a [`DataMarkerInfo`], returns a set of [`DataIdentifierCow`].
+    fn iter_ids_for_marker(
+        &self,
+        marker: DataMarkerInfo,
+    ) -> Result<alloc::collections::BTreeSet<DataIdentifierCow>, DataError>;
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> IterableDynamicDataProvider<M> for alloc::boxed::Box<P>
+where
+    M: DynamicDataMarker,
+    P: IterableDynamicDataProvider<M> + ?Sized,
+{
+    fn iter_ids_for_marker(
+        &self,
+        marker: DataMarkerInfo,
+    ) -> Result<alloc::collections::BTreeSet<DataIdentifierCow>, DataError> {
+        (**self).iter_ids_for_marker(marker)
+    }
+}
+
+/// A data provider that loads data for a specific data type.
+///
+/// Unlike [`DataProvider`], the provider is bound to a specific marker ahead of time.
+///
+/// This crate provides [`DataProviderWithMarker`] which implements this trait on a single provider
+/// with a single marker. However, this trait can also be implemented on providers that fork between
+/// multiple markers that all return the same data type. For example, it can abstract over many
+/// calendar systems in the datetime formatter.
+pub trait BoundDataProvider<M>
+where
+    M: DynamicDataMarker,
+{
+    /// Query the provider for data, returning the result.
+    ///
+    /// Returns [`Ok`] if the request successfully loaded data. If data failed to load, returns an
+    /// Error with more information.
+    fn load_bound(&self, req: DataRequest) -> Result<DataResponse<M>, DataError>;
+    /// Returns the [`DataMarkerInfo`] that this provider uses for loading data.
+    fn bound_marker(&self) -> DataMarkerInfo;
+}
+
+impl<M, P> BoundDataProvider<M> for &P
+where
+    M: DynamicDataMarker,
+    P: BoundDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load_bound(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+        (*self).load_bound(req)
+    }
+    #[inline]
+    fn bound_marker(&self) -> DataMarkerInfo {
+        (*self).bound_marker()
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> BoundDataProvider<M> for alloc::boxed::Box<P>
+where
+    M: DynamicDataMarker,
+    P: BoundDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load_bound(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+        (**self).load_bound(req)
+    }
+    #[inline]
+    fn bound_marker(&self) -> DataMarkerInfo {
+        (**self).bound_marker()
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<M, P> BoundDataProvider<M> for alloc::rc::Rc<P>
+where
+    M: DynamicDataMarker,
+    P: BoundDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load_bound(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+        (**self).load_bound(req)
+    }
+    #[inline]
+    fn bound_marker(&self) -> DataMarkerInfo {
+        (**self).bound_marker()
+    }
+}
+
+#[cfg(target_has_atomic = "ptr")]
+#[cfg(feature = "alloc")]
+impl<M, P> BoundDataProvider<M> for alloc::sync::Arc<P>
+where
+    M: DynamicDataMarker,
+    P: BoundDataProvider<M> + ?Sized,
+{
+    #[inline]
+    fn load_bound(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+        (**self).load_bound(req)
+    }
+    #[inline]
+    fn bound_marker(&self) -> DataMarkerInfo {
+        (**self).bound_marker()
+    }
+}
+
+/// A [`DataProvider`] associated with a specific marker.
+///
+/// Implements [`BoundDataProvider`].
+#[derive(Debug)]
+pub struct DataProviderWithMarker<M, P> {
+    inner: P,
+    _marker: PhantomData<M>,
+}
+
+impl<M, P> DataProviderWithMarker<M, P>
+where
+    M: DataMarker,
+    P: DataProvider<M>,
+{
+    /// Creates a [`DataProviderWithMarker`] from a [`DataProvider`] with a [`DataMarker`].
+    pub const fn new(inner: P) -> Self {
+        Self {
+            inner,
+            _marker: PhantomData,
+        }
+    }
+}
+
+impl<M, M0, Y, P> BoundDataProvider<M0> for DataProviderWithMarker<M, P>
+where
+    M: DataMarker<DataStruct = Y>,
+    M0: DynamicDataMarker<DataStruct = Y>,
+    Y: for<'a> Yokeable<'a>,
+    P: DataProvider<M>,
+{
+    #[inline]
+    fn load_bound(&self, req: DataRequest) -> Result<DataResponse<M0>, DataError> {
+        self.inner.load(req).map(DataResponse::cast)
+    }
+    #[inline]
+    fn bound_marker(&self) -> DataMarkerInfo {
+        M::INFO
+    }
+}
+
+#[cfg(test)]
+mod test {
+
+    use super::*;
+    use crate::hello_world::*;
+    use alloc::borrow::Cow;
+    use alloc::string::String;
+    use core::fmt::Debug;
+    use serde::{Deserialize, Serialize};
+
+    // This tests DataProvider borrow semantics with a dummy data provider based on a
+    // JSON string. It also exercises most of the data provider code paths.
+
+    /// A data struct serialization-compatible with HelloWorld used for testing mismatched types
+    #[derive(Serialize, Deserialize, Debug, Clone, Default, PartialEq, yoke::Yokeable)]
+    pub struct HelloAlt {
+        message: String,
+    }
+
+    data_marker!(HelloAltMarkerV1, HelloAlt);
+
+    #[derive(Deserialize, Debug, Clone, Default, PartialEq)]
+    struct HelloCombined<'data> {
+        #[serde(borrow)]
+        pub hello_v1: HelloWorld<'data>,
+        pub hello_alt: HelloAlt,
+    }
+
+    /// A DataProvider that owns its data, returning an Rc-variant DataPayload.
+    /// Supports only key::HELLO_WORLD_V1. Uses `impl_dynamic_data_provider!()`.
+    #[derive(Debug)]
+    struct DataWarehouse {
+        hello_v1: HelloWorld<'static>,
+        hello_alt: HelloAlt,
+    }
+
+    impl DataProvider<HelloWorldV1> for DataWarehouse {
+        fn load(&self, _: DataRequest) -> Result<DataResponse<HelloWorldV1>, DataError> {
+            Ok(DataResponse {
+                metadata: DataResponseMetadata::default(),
+                payload: DataPayload::from_owned(self.hello_v1.clone()),
+            })
+        }
+    }
+
+    /// A DataProvider that supports both key::HELLO_WORLD_V1 and HELLO_ALT.
+    #[derive(Debug)]
+    struct DataProvider2 {
+        data: DataWarehouse,
+    }
+
+    impl From<DataWarehouse> for DataProvider2 {
+        fn from(warehouse: DataWarehouse) -> Self {
+            DataProvider2 { data: warehouse }
+        }
+    }
+
+    impl DataProvider<HelloWorldV1> for DataProvider2 {
+        fn load(&self, _: DataRequest) -> Result<DataResponse<HelloWorldV1>, DataError> {
+            Ok(DataResponse {
+                metadata: DataResponseMetadata::default(),
+                payload: DataPayload::from_owned(self.data.hello_v1.clone()),
+            })
+        }
+    }
+
+    impl DataProvider<HelloAltMarkerV1> for DataProvider2 {
+        fn load(&self, _: DataRequest) -> Result<DataResponse<HelloAltMarkerV1>, DataError> {
+            Ok(DataResponse {
+                metadata: DataResponseMetadata::default(),
+                payload: DataPayload::from_owned(self.data.hello_alt.clone()),
+            })
+        }
+    }
+
+    const DATA: &str = r#"{
+        "hello_v1": {
+            "message": "Hello "
+        },
+        "hello_alt": {
+            "message": "Hello Alt"
+        }
+    }"#;
+
+    fn get_warehouse(data: &'static str) -> DataWarehouse {
+        let data: HelloCombined = serde_json::from_str(data).expect("Well-formed data");
+        DataWarehouse {
+            hello_v1: data.hello_v1,
+            hello_alt: data.hello_alt,
+        }
+    }
+
+    fn get_payload_v1<P: DataProvider<HelloWorldV1> + ?Sized>(
+        provider: &P,
+    ) -> Result<DataPayload<HelloWorldV1>, DataError> {
+        provider.load(Default::default()).map(|r| r.payload)
+    }
+
+    fn get_payload_alt<P: DataProvider<HelloAltMarkerV1> + ?Sized>(
+        provider: &P,
+    ) -> Result<DataPayload<HelloAltMarkerV1>, DataError> {
+        provider.load(Default::default()).map(|r| r.payload)
+    }
+
+    #[test]
+    fn test_warehouse_owned() {
+        let warehouse = get_warehouse(DATA);
+        let hello_data = get_payload_v1(&warehouse).unwrap();
+        assert!(matches!(
+            hello_data.get(),
+            HelloWorld {
+                message: Cow::Borrowed(_),
+            }
+        ));
+    }
+
+    #[test]
+    fn test_warehouse_owned_dyn_generic() {
+        let warehouse = get_warehouse(DATA);
+        let hello_data = get_payload_v1(&warehouse as &dyn DataProvider<HelloWorldV1>).unwrap();
+        assert!(matches!(
+            hello_data.get(),
+            HelloWorld {
+                message: Cow::Borrowed(_),
+            }
+        ));
+    }
+
+    #[test]
+    fn test_provider2() {
+        let warehouse = get_warehouse(DATA);
+        let provider = DataProvider2::from(warehouse);
+        let hello_data = get_payload_v1(&provider).unwrap();
+        assert!(matches!(
+            hello_data.get(),
+            HelloWorld {
+                message: Cow::Borrowed(_),
+            }
+        ));
+    }
+
+    #[test]
+    fn test_provider2_dyn_generic() {
+        let warehouse = get_warehouse(DATA);
+        let provider = DataProvider2::from(warehouse);
+        let hello_data = get_payload_v1(&provider as &dyn DataProvider<HelloWorldV1>).unwrap();
+        assert!(matches!(
+            hello_data.get(),
+            HelloWorld {
+                message: Cow::Borrowed(_),
+            }
+        ));
+    }
+
+    #[test]
+    fn test_provider2_dyn_generic_alt() {
+        let warehouse = get_warehouse(DATA);
+        let provider = DataProvider2::from(warehouse);
+        let hello_data = get_payload_alt(&provider as &dyn DataProvider<HelloAltMarkerV1>).unwrap();
+        assert!(matches!(hello_data.get(), HelloAlt { .. }));
+    }
+
+    fn check_v1_v2<P>(d: &P)
+    where
+        P: DataProvider<HelloWorldV1> + DataProvider<HelloAltMarkerV1> + ?Sized,
+    {
+        let v1: DataPayload<HelloWorldV1> = d.load(Default::default()).unwrap().payload;
+        let v2: DataPayload<HelloAltMarkerV1> = d.load(Default::default()).unwrap().payload;
+        if v1.get().message == v2.get().message {
+            panic!()
+        }
+    }
+
+    #[test]
+    fn test_v1_v2_generic() {
+        let warehouse = get_warehouse(DATA);
+        let provider = DataProvider2::from(warehouse);
+        check_v1_v2(&provider);
+    }
+}
diff --git a/vendor/icu_provider/src/dynutil.rs b/vendor/icu_provider/src/dynutil.rs
new file mode 100644
index 00000000..230655b0
--- /dev/null
+++ b/vendor/icu_provider/src/dynutil.rs
@@ -0,0 +1,184 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Utilities for using trait objects with `DataPayload`.
+
+/// Trait to allow conversion from `DataPayload<T>` to `DataPayload<S>`.
+///
+/// This trait can be manually implemented in order to enable [`impl_dynamic_data_provider`].
+pub trait UpcastDataPayload<M>
+where
+    M: crate::DynamicDataMarker,
+    Self: Sized + crate::DynamicDataMarker,
+{
+    /// Upcast a `DataPayload<T>` to a `DataPayload<S>` where `T` implements trait `S`.
+    fn upcast(other: crate::DataPayload<M>) -> crate::DataPayload<Self>;
+}
+
+/// Implements [`UpcastDataPayload`] from several data markers to a single data marker
+/// that all share the same [`DynamicDataMarker::DataStruct`].
+///
+/// # Examples
+///
+/// ```
+/// use icu_provider::prelude::*;
+/// use std::borrow::Cow;
+///
+/// struct FooV1;
+/// impl DynamicDataMarker for FooV1 {
+///     type DataStruct = Foo<'static>;
+/// }
+/// icu_provider::data_marker!(BarV1, Foo<'static>);
+/// icu_provider::data_marker!(BazV1, Foo<'static>);
+///
+/// #[derive(yoke::Yokeable)]
+/// pub struct Foo<'data> {
+///     message: Cow<'data, str>,
+/// };
+///
+/// icu_provider::data_struct!(Foo<'_>);
+///
+/// icu_provider::dynutil::impl_casting_upcast!(FooV1, [BarV1, BazV1,]);
+/// ```
+///
+/// [`DynamicDataMarker::DataStruct`]: crate::DynamicDataMarker::DataStruct
+#[macro_export]
+#[doc(hidden)] // macro
+macro_rules! __impl_casting_upcast {
+    ($dyn_m:path, [ $($struct_m:ident),+, ]) => {
+        $(
+            impl $crate::dynutil::UpcastDataPayload<$struct_m> for $dyn_m {
+                fn upcast(other: $crate::DataPayload<$struct_m>) -> $crate::DataPayload<$dyn_m> {
+                    other.cast()
+                }
+            }
+        )+
+    }
+}
+#[doc(inline)]
+pub use __impl_casting_upcast as impl_casting_upcast;
+
+/// Implements [`DynamicDataProvider`] for a marker type `S` on a type that already implements
+/// [`DynamicDataProvider`] or [`DataProvider`] for one or more `M`, where `M` is a concrete type
+/// that is convertible to `S` via [`UpcastDataPayload`].
+///
+/// ## Wrapping DataProvider
+///
+/// If your type implements [`DataProvider`], pass a list of markers as the second argument.
+/// This results in a `DynamicDataProvider` that delegates to a specific marker if the marker
+/// matches or else returns [`DataErrorKind::MarkerNotFound`].
+///
+/// [`DynamicDataProvider`]: crate::DynamicDataProvider
+/// [`DataProvider`]: crate::DataProvider
+/// [`DataErrorKind::MarkerNotFound`]: (crate::DataErrorKind::MarkerNotFound)
+/// [`SerializeMarker`]: (crate::buf::SerializeMarker)
+#[doc(hidden)] // macro
+#[macro_export]
+macro_rules! __impl_dynamic_data_provider {
+    // allow passing in multiple things to do and get dispatched
+    ($provider:ty, $arms:tt, $one:path, $($rest:path),+) => {
+        $crate::dynutil::impl_dynamic_data_provider!(
+            $provider,
+            $arms,
+            $one
+        );
+
+        $crate::dynutil::impl_dynamic_data_provider!(
+            $provider,
+            $arms,
+            $($rest),+
+        );
+    };
+
+    ($provider:ty, { $($ident:ident = $marker:path => $struct_m:ty),+, $(_ => $struct_d:ty,)?}, $dyn_m:ty) => {
+        impl $crate::DynamicDataProvider<$dyn_m> for $provider
+        {
+            fn load_data(
+                &self,
+                marker: $crate::DataMarkerInfo,
+                req: $crate::DataRequest,
+            ) -> Result<
+                $crate::DataResponse<$dyn_m>,
+                $crate::DataError,
+            > {
+                match marker.id.hashed() {
+                    $(
+                        h if h == $marker.id.hashed() => {
+                            let result: $crate::DataResponse<$struct_m> =
+                                $crate::DynamicDataProvider::<$struct_m>::load_data(self, marker, req)?;
+                            Ok($crate::DataResponse {
+                                metadata: result.metadata,
+                                payload: $crate::dynutil::UpcastDataPayload::<$struct_m>::upcast(result.payload),
+                            })
+                        }
+                    )+,
+                    $(
+                        _ => {
+                            let result: $crate::DataResponse<$struct_d> =
+                                $crate::DynamicDataProvider::<$struct_d>::load_data(self, marker, req)?;
+                            Ok($crate::DataResponse {
+                                metadata: result.metadata,
+                                payload: $crate::dynutil::UpcastDataPayload::<$struct_d>::upcast(result.payload),
+                            })
+                        }
+                    )?
+                    _ => Err($crate::DataErrorKind::MarkerNotFound.with_req(marker, req))
+                }
+            }
+        }
+
+    };
+    ($provider:ty, [ $($(#[$cfg:meta])? $struct_m:ty),+, ], $dyn_m:path) => {
+        impl $crate::DynamicDataProvider<$dyn_m> for $provider
+        {
+            fn load_data(
+                &self,
+                marker: $crate::DataMarkerInfo,
+                req: $crate::DataRequest,
+            ) -> Result<
+                $crate::DataResponse<$dyn_m>,
+                $crate::DataError,
+            > {
+                match marker.id.hashed() {
+                    $(
+                        $(#[$cfg])?
+                        h if h == <$struct_m as $crate::DataMarker>::INFO.id.hashed() => {
+                            let result: $crate::DataResponse<$struct_m> =
+                                $crate::DataProvider::load(self, req)?;
+                            Ok($crate::DataResponse {
+                                metadata: result.metadata,
+                                payload: $crate::dynutil::UpcastDataPayload::<$struct_m>::upcast(result.payload),
+                            })
+                        }
+                    )+,
+                    _ => Err($crate::DataErrorKind::MarkerNotFound.with_req(marker, req))
+                }
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_dynamic_data_provider as impl_dynamic_data_provider;
+
+#[doc(hidden)] // macro
+#[macro_export]
+macro_rules! __impl_iterable_dynamic_data_provider {
+    ($provider:ty, [ $($(#[$cfg:meta])? $struct_m:ty),+, ], $dyn_m:path) => {
+        impl $crate::IterableDynamicDataProvider<$dyn_m> for $provider {
+            fn iter_ids_for_marker(&self, marker: $crate::DataMarkerInfo) -> Result<alloc::collections::BTreeSet<$crate::DataIdentifierCow>, $crate::DataError> {
+                match marker.id.hashed() {
+                    $(
+                        $(#[$cfg])?
+                        h if h == <$struct_m as $crate::DataMarker>::INFO.id.hashed() => {
+                            $crate::IterableDataProvider::<$struct_m>::iter_ids(self)
+                        }
+                    )+,
+                    _ => Err($crate::DataErrorKind::MarkerNotFound.with_marker(marker))
+                }
+            }
+        }
+    }
+}
+#[doc(inline)]
+pub use __impl_iterable_dynamic_data_provider as impl_iterable_dynamic_data_provider;
diff --git a/vendor/icu_provider/src/error.rs b/vendor/icu_provider/src/error.rs
new file mode 100644
index 00000000..15ba3e16
--- /dev/null
+++ b/vendor/icu_provider/src/error.rs
@@ -0,0 +1,281 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::log;
+use crate::{marker::DataMarkerId, prelude::*};
+use core::fmt;
+use displaydoc::Display;
+
+/// A list specifying general categories of data provider error.
+///
+/// Errors may be caused either by a malformed request or by the data provider
+/// not being able to fulfill a well-formed request.
+#[derive(Clone, Copy, Eq, PartialEq, Display, Debug)]
+#[non_exhaustive]
+pub enum DataErrorKind {
+    /// No data for the requested data marker. This is only returned by [`DynamicDataProvider`].
+    #[displaydoc("Missing data for marker")]
+    MarkerNotFound,
+
+    /// There is data for the data marker, but not for this particular data identifier.
+    #[displaydoc("Missing data for identifier")]
+    IdentifierNotFound,
+
+    /// The request is invalid, such as a request for a singleton marker containing a data identifier.
+    #[displaydoc("Invalid request")]
+    InvalidRequest,
+
+    /// The data for two [`DataMarker`]s is not consistent.
+    #[displaydoc("The data for two markers is not consistent: {0:?} (were they generated in different datagen invocations?)")]
+    InconsistentData(DataMarkerInfo),
+
+    /// An error occured during [`Any`](core::any::Any) downcasting.
+    #[displaydoc("Downcast: expected {0}, found")]
+    Downcast(&'static str),
+
+    /// An error occured during [`serde`] deserialization.
+    ///
+    /// Check debug logs for potentially more information.
+    #[displaydoc("Deserialize")]
+    Deserialize,
+
+    /// An unspecified error occurred.
+    ///
+    /// Check debug logs for potentially more information.
+    #[displaydoc("Custom")]
+    Custom,
+
+    /// An error occurred while accessing a system resource.
+    #[displaydoc("I/O: {0:?}")]
+    #[cfg(feature = "std")]
+    Io(std::io::ErrorKind),
+}
+
+/// The error type for ICU4X data provider operations.
+///
+/// To create one of these, either start with a [`DataErrorKind`] or use [`DataError::custom()`].
+///
+/// # Example
+///
+/// Create a IdentifierNotFound error and attach a data request for context:
+///
+/// ```no_run
+/// # use icu_provider::prelude::*;
+/// let marker: DataMarkerInfo = unimplemented!();
+/// let req: DataRequest = unimplemented!();
+/// DataErrorKind::IdentifierNotFound.with_req(marker, req);
+/// ```
+///
+/// Create a named custom error:
+///
+/// ```
+/// # use icu_provider::prelude::*;
+/// DataError::custom("This is an example error");
+/// ```
+#[derive(Clone, Copy, Eq, PartialEq, Debug)]
+#[non_exhaustive]
+pub struct DataError {
+    /// Broad category of the error.
+    pub kind: DataErrorKind,
+
+    /// The data marker of the request, if available.
+    pub marker: Option<DataMarkerId>,
+
+    /// Additional context, if available.
+    pub str_context: Option<&'static str>,
+
+    /// Whether this error was created in silent mode to not log.
+    pub silent: bool,
+}
+
+impl fmt::Display for DataError {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        write!(f, "ICU4X data error")?;
+        if self.kind != DataErrorKind::Custom {
+            write!(f, ": {}", self.kind)?;
+        }
+        if let Some(marker) = self.marker {
+            write!(f, " (marker: {marker:?})")?;
+        }
+        if let Some(str_context) = self.str_context {
+            write!(f, ": {str_context}")?;
+        }
+        Ok(())
+    }
+}
+
+impl DataErrorKind {
+    /// Converts this DataErrorKind into a DataError.
+    ///
+    /// If possible, you should attach context using a `with_` function.
+    #[inline]
+    pub const fn into_error(self) -> DataError {
+        DataError {
+            kind: self,
+            marker: None,
+            str_context: None,
+            silent: false,
+        }
+    }
+
+    /// Creates a DataError with a data marker context.
+    #[inline]
+    pub const fn with_marker(self, marker: DataMarkerInfo) -> DataError {
+        self.into_error().with_marker(marker)
+    }
+
+    /// Creates a DataError with a string context.
+    #[inline]
+    pub const fn with_str_context(self, context: &'static str) -> DataError {
+        self.into_error().with_str_context(context)
+    }
+
+    /// Creates a DataError with a type name context.
+    #[inline]
+    pub fn with_type_context<T>(self) -> DataError {
+        self.into_error().with_type_context::<T>()
+    }
+
+    /// Creates a DataError with a request context.
+    #[inline]
+    pub fn with_req(self, marker: DataMarkerInfo, req: DataRequest) -> DataError {
+        self.into_error().with_req(marker, req)
+    }
+}
+
+impl DataError {
+    /// Returns a new, empty DataError with kind Custom and a string error message.
+    #[inline]
+    pub const fn custom(str_context: &'static str) -> Self {
+        Self {
+            kind: DataErrorKind::Custom,
+            marker: None,
+            str_context: Some(str_context),
+            silent: false,
+        }
+    }
+
+    /// Sets the data marker of a DataError, returning a modified error.
+    #[inline]
+    pub const fn with_marker(self, marker: DataMarkerInfo) -> Self {
+        Self {
+            kind: self.kind,
+            marker: Some(marker.id),
+            str_context: self.str_context,
+            silent: self.silent,
+        }
+    }
+
+    /// Sets the string context of a DataError, returning a modified error.
+    #[inline]
+    pub const fn with_str_context(self, context: &'static str) -> Self {
+        Self {
+            kind: self.kind,
+            marker: self.marker,
+            str_context: Some(context),
+            silent: self.silent,
+        }
+    }
+
+    /// Sets the string context of a DataError to the given type name, returning a modified error.
+    #[inline]
+    pub fn with_type_context<T>(self) -> Self {
+        if !self.silent {
+            log::warn!("{self}: Type context: {}", core::any::type_name::<T>());
+        }
+        self.with_str_context(core::any::type_name::<T>())
+    }
+
+    /// Logs the data error with the given request, returning an error containing the data marker.
+    ///
+    /// If the "logging" Cargo feature is enabled, this logs the whole request. Either way,
+    /// it returns an error with the data marker portion of the request as context.
+    pub fn with_req(mut self, marker: DataMarkerInfo, req: DataRequest) -> Self {
+        if req.metadata.silent {
+            self.silent = true;
+        }
+        // Don't write out a log for MissingDataMarker since there is no context to add
+        if !self.silent && self.kind != DataErrorKind::MarkerNotFound {
+            log::warn!("{self} (marker: {marker:?}, request: {})", req.id);
+        }
+        self.with_marker(marker)
+    }
+
+    /// Logs the data error with the given context, then return self.
+    ///
+    /// This does not modify the error, but if the "logging" Cargo feature is enabled,
+    /// it will print out the context.
+    #[cfg(feature = "std")]
+    pub fn with_path_context(self, _path: &std::path::Path) -> Self {
+        if !self.silent {
+            log::warn!("{self} (path: {_path:?})");
+        }
+        self
+    }
+
+    /// Logs the data error with the given context, then return self.
+    ///
+    /// This does not modify the error, but if the "logging" Cargo feature is enabled,
+    /// it will print out the context.
+    #[cfg_attr(not(feature = "logging"), allow(unused_variables))]
+    #[inline]
+    pub fn with_display_context<D: fmt::Display + ?Sized>(self, context: &D) -> Self {
+        if !self.silent {
+            log::warn!("{}: {}", self, context);
+        }
+        self
+    }
+
+    /// Logs the data error with the given context, then return self.
+    ///
+    /// This does not modify the error, but if the "logging" Cargo feature is enabled,
+    /// it will print out the context.
+    #[cfg_attr(not(feature = "logging"), allow(unused_variables))]
+    #[inline]
+    pub fn with_debug_context<D: fmt::Debug + ?Sized>(self, context: &D) -> Self {
+        if !self.silent {
+            log::warn!("{}: {:?}", self, context);
+        }
+        self
+    }
+
+    #[inline]
+    pub(crate) fn for_type<T>() -> DataError {
+        DataError {
+            kind: DataErrorKind::Downcast(core::any::type_name::<T>()),
+            marker: None,
+            str_context: None,
+            silent: false,
+        }
+    }
+}
+
+impl core::error::Error for DataError {}
+
+#[cfg(feature = "std")]
+impl From<std::io::Error> for DataError {
+    fn from(e: std::io::Error) -> Self {
+        log::warn!("I/O error: {}", e);
+        DataErrorKind::Io(e.kind()).into_error()
+    }
+}
+
+/// Extension trait for `Result<T, DataError>`.
+pub trait ResultDataError<T>: Sized {
+    /// Propagates all errors other than [`DataErrorKind::IdentifierNotFound`], and returns `None` in that case.
+    fn allow_identifier_not_found(self) -> Result<Option<T>, DataError>;
+}
+
+impl<T> ResultDataError<T> for Result<T, DataError> {
+    fn allow_identifier_not_found(self) -> Result<Option<T>, DataError> {
+        match self {
+            Ok(t) => Ok(Some(t)),
+            Err(DataError {
+                kind: DataErrorKind::IdentifierNotFound,
+                ..
+            }) => Ok(None),
+            Err(e) => Err(e),
+        }
+    }
+}
diff --git a/vendor/icu_provider/src/export/mod.rs b/vendor/icu_provider/src/export/mod.rs
new file mode 100644
index 00000000..735aef5e
--- /dev/null
+++ b/vendor/icu_provider/src/export/mod.rs
@@ -0,0 +1,213 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module contains types required to export ICU4X data via the `icu_provider_export` crate.
+//! End users should not need to consume anything in this module.
+//!
+//! This module is enabled with the `export` Cargo feature.
+
+mod payload;
+
+#[doc(hidden)] // macro
+pub use payload::ExportBox;
+pub use payload::ExportMarker;
+
+use crate::prelude::*;
+use alloc::collections::BTreeSet;
+
+/// An object capable of exporting data payloads in some form.
+pub trait DataExporter: Sync {
+    /// Save a `payload` corresponding to the given marker and locale.
+    ///
+    /// Takes non-mut self as it can be called concurrently.
+    fn put_payload(
+        &self,
+        marker: DataMarkerInfo,
+        id: DataIdentifierBorrowed,
+        payload: &DataPayload<ExportMarker>,
+    ) -> Result<(), DataError>;
+
+    /// Function called for singleton markers.
+    ///
+    /// Takes non-mut self as it can be called concurrently.
+    fn flush_singleton(
+        &self,
+        marker: DataMarkerInfo,
+        payload: &DataPayload<ExportMarker>,
+        metadata: FlushMetadata,
+    ) -> Result<(), DataError> {
+        self.put_payload(marker, Default::default(), payload)?;
+        self.flush(marker, metadata)
+    }
+
+    /// Function called after a non-singleton marker has been fully enumerated.
+    ///
+    /// Takes non-mut self as it can be called concurrently.
+    fn flush(&self, _marker: DataMarkerInfo, _metadata: FlushMetadata) -> Result<(), DataError> {
+        Ok(())
+    }
+
+    /// This function has to be called before the object is dropped (after all
+    /// markers have been fully dumped). This conceptually takes ownership, so
+    /// clients *may not* interact with this object after close has been called.
+    fn close(&mut self) -> Result<ExporterCloseMetadata, DataError> {
+        Ok(ExporterCloseMetadata::default())
+    }
+}
+
+#[derive(Debug, Default)]
+#[allow(clippy::exhaustive_structs)] // newtype
+/// Contains information about a successful export.
+pub struct ExporterCloseMetadata(pub Option<Box<dyn core::any::Any>>);
+
+/// Metadata for [`DataExporter::flush`]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Default)]
+pub struct FlushMetadata {
+    /// Whether the data was generated in such a way that a [`DryDataProvider`] implementation
+    /// makes sense.
+    pub supports_dry_provider: bool,
+    /// The checksum to return with this data marker.
+    pub checksum: Option<u64>,
+}
+
+impl DataExporter for Box<dyn DataExporter> {
+    fn put_payload(
+        &self,
+        marker: DataMarkerInfo,
+        id: DataIdentifierBorrowed,
+        payload: &DataPayload<ExportMarker>,
+    ) -> Result<(), DataError> {
+        (**self).put_payload(marker, id, payload)
+    }
+
+    fn flush_singleton(
+        &self,
+        marker: DataMarkerInfo,
+        payload: &DataPayload<ExportMarker>,
+        metadata: FlushMetadata,
+    ) -> Result<(), DataError> {
+        (**self).flush_singleton(marker, payload, metadata)
+    }
+
+    fn flush(&self, marker: DataMarkerInfo, metadata: FlushMetadata) -> Result<(), DataError> {
+        (**self).flush(marker, metadata)
+    }
+
+    fn close(&mut self) -> Result<ExporterCloseMetadata, DataError> {
+        (**self).close()
+    }
+}
+
+/// A [`DynamicDataProvider`] that can be used for exporting data.
+///
+/// Use [`make_exportable_provider`] to implement this.
+pub trait ExportableProvider:
+    crate::data_provider::IterableDynamicDataProvider<ExportMarker> + Sync
+{
+    /// Returns the set of supported markers
+    fn supported_markers(&self) -> BTreeSet<DataMarkerInfo>;
+}
+
+impl ExportableProvider for Box<dyn ExportableProvider> {
+    fn supported_markers(&self) -> BTreeSet<DataMarkerInfo> {
+        (**self).supported_markers()
+    }
+}
+
+/// This macro can be used on a data provider to allow it to be exported by `ExportDriver`.
+///
+/// Data generation 'compiles' data by using this data provider (which usually translates data from
+/// different sources and doesn't have to be efficient) to generate data structs, and then writing
+/// them to an efficient format like `BlobDataProvider` or `BakedDataProvider`. The requirements
+/// for `make_exportable_provider` are:
+/// * The data struct has to implement [`serde::Serialize`](::serde::Serialize) and [`databake::Bake`]
+/// * The provider needs to implement [`IterableDataProvider`] for all specified [`DataMarker`]s.
+///   This allows the generating code to know which [`DataIdentifierCow`]s to export.
+#[macro_export]
+#[doc(hidden)] // macro
+macro_rules! __make_exportable_provider {
+    ($provider:ty, [ $($(#[$cfg:meta])? $struct_m:ty),+, ]) => {
+        impl $crate::export::ExportableProvider for $provider {
+            fn supported_markers(&self) -> alloc::collections::BTreeSet<$crate::DataMarkerInfo> {
+                alloc::collections::BTreeSet::from_iter([
+                    $(
+                        $(#[$cfg])?
+                        <$struct_m>::INFO,
+                    )+
+                ])
+            }
+        }
+
+        $crate::dynutil::impl_dynamic_data_provider!(
+            $provider,
+            [ $($(#[$cfg])? $struct_m),+, ],
+            $crate::export::ExportMarker
+        );
+
+        $crate::dynutil::impl_iterable_dynamic_data_provider!(
+            $provider,
+            [ $($(#[$cfg])? $struct_m),+, ],
+            $crate::export::ExportMarker
+        );
+    };
+}
+#[doc(inline)]
+pub use __make_exportable_provider as make_exportable_provider;
+
+/// A `DataExporter` that forks to multiple `DataExporter`s.
+#[derive(Default)]
+pub struct MultiExporter(Vec<Box<dyn DataExporter>>);
+
+impl MultiExporter {
+    /// Creates a `MultiExporter` for the given exporters.
+    pub const fn new(exporters: Vec<Box<dyn DataExporter>>) -> Self {
+        Self(exporters)
+    }
+}
+
+impl core::fmt::Debug for MultiExporter {
+    fn fmt(&self, f: &mut alloc::fmt::Formatter<'_>) -> alloc::fmt::Result {
+        f.debug_struct("MultiExporter")
+            .field("0", &format!("vec[len = {}]", self.0.len()))
+            .finish()
+    }
+}
+
+impl DataExporter for MultiExporter {
+    fn put_payload(
+        &self,
+        marker: DataMarkerInfo,
+        id: DataIdentifierBorrowed,
+        payload: &DataPayload<ExportMarker>,
+    ) -> Result<(), DataError> {
+        self.0
+            .iter()
+            .try_for_each(|e| e.put_payload(marker, id, payload))
+    }
+
+    fn flush_singleton(
+        &self,
+        marker: DataMarkerInfo,
+        payload: &DataPayload<ExportMarker>,
+        metadata: FlushMetadata,
+    ) -> Result<(), DataError> {
+        self.0
+            .iter()
+            .try_for_each(|e| e.flush_singleton(marker, payload, metadata))
+    }
+
+    fn flush(&self, marker: DataMarkerInfo, metadata: FlushMetadata) -> Result<(), DataError> {
+        self.0.iter().try_for_each(|e| e.flush(marker, metadata))
+    }
+
+    fn close(&mut self) -> Result<ExporterCloseMetadata, DataError> {
+        Ok(ExporterCloseMetadata(Some(Box::new(
+            self.0.iter_mut().try_fold(vec![], |mut m, e| {
+                m.push(e.close()?.0);
+                Ok::<_, DataError>(m)
+            })?,
+        ))))
+    }
+}
diff --git a/vendor/icu_provider/src/export/payload.rs b/vendor/icu_provider/src/export/payload.rs
new file mode 100644
index 00000000..2f75b565
--- /dev/null
+++ b/vendor/icu_provider/src/export/payload.rs
@@ -0,0 +1,335 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::any::Any;
+
+use crate::prelude::*;
+use crate::ule::MaybeEncodeAsVarULE;
+use crate::{dynutil::UpcastDataPayload, ule::MaybeAsVarULE};
+use alloc::sync::Arc;
+use databake::{Bake, BakeSize, CrateEnv, TokenStream};
+use yoke::*;
+use zerovec::VarZeroVec;
+
+#[cfg(doc)]
+use zerovec::ule::VarULE;
+
+trait ExportableDataPayload {
+    fn bake_yoke(&self, ctx: &CrateEnv) -> TokenStream;
+    fn bake_size(&self) -> usize;
+    fn serialize_yoke(
+        &self,
+        serializer: &mut dyn erased_serde::Serializer,
+    ) -> Result<(), DataError>;
+    fn maybe_bake_varule_encoded(
+        &self,
+        rest: &[&DataPayload<ExportMarker>],
+        ctx: &CrateEnv,
+    ) -> Option<TokenStream>;
+    fn as_any(&self) -> &dyn Any;
+    fn eq_dyn(&self, other: &dyn ExportableDataPayload) -> bool;
+}
+
+impl<M: DynamicDataMarker> ExportableDataPayload for DataPayload<M>
+where
+    for<'a> <M::DataStruct as Yokeable<'a>>::Output:
+        Bake + BakeSize + serde::Serialize + MaybeEncodeAsVarULE + PartialEq,
+{
+    fn bake_yoke(&self, ctx: &CrateEnv) -> TokenStream {
+        self.get().bake(ctx)
+    }
+
+    fn bake_size(&self) -> usize {
+        core::mem::size_of::<<M::DataStruct as Yokeable>::Output>() + self.get().borrows_size()
+    }
+
+    fn serialize_yoke(
+        &self,
+        serializer: &mut dyn erased_serde::Serializer,
+    ) -> Result<(), DataError> {
+        use erased_serde::Serialize;
+        self.get()
+            .erased_serialize(serializer)
+            .map_err(|e| DataError::custom("Serde export").with_display_context(&e))?;
+        Ok(())
+    }
+
+    fn maybe_bake_varule_encoded(
+        &self,
+        rest: &[&DataPayload<ExportMarker>],
+        ctx: &CrateEnv,
+    ) -> Option<TokenStream> {
+        let first_varule = self.get().maybe_encode_as_varule()?;
+        let recovered_vec: Vec<
+            &<<M::DataStruct as Yokeable<'_>>::Output as MaybeAsVarULE>::EncodedStruct,
+        > = core::iter::once(first_varule)
+            .chain(rest.iter().map(|v| {
+                #[allow(clippy::expect_used)] // exporter code
+                v.get()
+                    .payload
+                    .as_any()
+                    .downcast_ref::<Self>()
+                    .expect("payloads expected to be same type")
+                    .get()
+                    .maybe_encode_as_varule()
+                    .expect("MaybeEncodeAsVarULE impl should be symmetric")
+            }))
+            .collect();
+        let vzv: VarZeroVec<
+            <<M::DataStruct as Yokeable<'_>>::Output as MaybeAsVarULE>::EncodedStruct,
+        > = VarZeroVec::from(&recovered_vec);
+        let vzs = vzv.as_slice();
+        Some(vzs.bake(ctx))
+    }
+
+    fn as_any(&self) -> &dyn Any {
+        self
+    }
+
+    fn eq_dyn(&self, other: &dyn ExportableDataPayload) -> bool {
+        match other.as_any().downcast_ref::<Self>() {
+            Some(downcasted) => (*self).eq(downcasted),
+            None => {
+                debug_assert!(
+                    false,
+                    "cannot compare ExportableDataPayloads of different types: self is {:?} but other is {:?}",
+                    self.type_id(),
+                    other.as_any().type_id(),
+                );
+                false
+            }
+        }
+    }
+}
+
+#[derive(yoke::Yokeable, Clone)]
+#[allow(missing_docs)]
+pub struct ExportBox {
+    payload: Arc<dyn ExportableDataPayload + Sync + Send>,
+}
+
+impl PartialEq for ExportBox {
+    fn eq(&self, other: &Self) -> bool {
+        self.payload.eq_dyn(&*other.payload)
+    }
+}
+
+impl Eq for ExportBox {}
+
+impl core::fmt::Debug for ExportBox {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        f.debug_struct("ExportBox")
+            .field("payload", &"<payload>")
+            .finish()
+    }
+}
+
+impl<M> UpcastDataPayload<M> for ExportMarker
+where
+    M: DynamicDataMarker,
+    M::DataStruct: Sync + Send,
+    for<'a> <M::DataStruct as Yokeable<'a>>::Output:
+        Bake + BakeSize + serde::Serialize + MaybeEncodeAsVarULE + PartialEq,
+{
+    fn upcast(other: DataPayload<M>) -> DataPayload<ExportMarker> {
+        DataPayload::from_owned(ExportBox {
+            payload: Arc::new(other),
+        })
+    }
+}
+
+impl DataPayload<ExportMarker> {
+    /// Serializes this [`DataPayload`] into a serializer using Serde.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu_provider::dynutil::UpcastDataPayload;
+    /// use icu_provider::export::*;
+    /// use icu_provider::hello_world::HelloWorldV1;
+    /// use icu_provider::prelude::*;
+    ///
+    /// // Create an example DataPayload
+    /// let payload: DataPayload<HelloWorldV1> = Default::default();
+    /// let export: DataPayload<ExportMarker> = UpcastDataPayload::upcast(payload);
+    ///
+    /// // Serialize the payload to a JSON string
+    /// let mut buffer: Vec<u8> = vec![];
+    /// export
+    ///     .serialize(&mut serde_json::Serializer::new(&mut buffer))
+    ///     .expect("Serialization should succeed");
+    /// assert_eq!(r#"{"message":"(und) Hello World"}"#.as_bytes(), buffer);
+    /// ```
+    pub fn serialize<S>(&self, serializer: S) -> Result<(), DataError>
+    where
+        S: serde::Serializer,
+        S::Ok: 'static, // erased_serde requirement, cannot return values in `Ok`
+    {
+        self.get()
+            .payload
+            .serialize_yoke(&mut <dyn erased_serde::Serializer>::erase(serializer))
+    }
+
+    /// Serializes this [`DataPayload`]'s value into a [`TokenStream`]
+    /// using its [`Bake`] implementations.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu_provider::dynutil::UpcastDataPayload;
+    /// use icu_provider::export::*;
+    /// use icu_provider::hello_world::HelloWorldV1;
+    /// use icu_provider::prelude::*;
+    /// # use databake::quote;
+    /// # use std::collections::BTreeSet;
+    ///
+    /// // Create an example DataPayload
+    /// let payload: DataPayload<HelloWorldV1> = Default::default();
+    /// let export: DataPayload<ExportMarker> = UpcastDataPayload::upcast(payload);
+    ///
+    /// let env = databake::CrateEnv::default();
+    /// let tokens = export.tokenize(&env);
+    /// assert_eq!(
+    ///     quote! {
+    ///         icu_provider::hello_world::HelloWorld {
+    ///             message: alloc::borrow::Cow::Borrowed("(und) Hello World"),
+    ///         }
+    ///     }
+    ///     .to_string(),
+    ///     tokens.to_string()
+    /// );
+    /// assert_eq!(
+    ///     env.into_iter().collect::<BTreeSet<_>>(),
+    ///     ["icu_provider", "alloc"]
+    ///         .into_iter()
+    ///         .collect::<BTreeSet<_>>()
+    /// );
+    /// ```
+    pub fn tokenize(&self, ctx: &CrateEnv) -> TokenStream {
+        self.get().payload.bake_yoke(ctx)
+    }
+
+    /// If this payload's struct can be dereferenced as a [`VarULE`],
+    /// returns a [`TokenStream`] of the slice encoded as a [`VarZeroVec`].
+    pub fn tokenize_encoded_seq(structs: &[&Self], ctx: &CrateEnv) -> Option<TokenStream> {
+        let (first, rest) = structs.split_first()?;
+        first.get().payload.maybe_bake_varule_encoded(rest, ctx)
+    }
+
+    /// Returns the data size using postcard encoding
+    pub fn postcard_size(&self) -> usize {
+        use postcard::ser_flavors::{Flavor, Size};
+        let mut serializer = postcard::Serializer {
+            output: Size::default(),
+        };
+        let _infallible = self
+            .get()
+            .payload
+            .serialize_yoke(&mut <dyn erased_serde::Serializer>::erase(&mut serializer));
+
+        serializer.output.finalize().unwrap_or_default()
+    }
+
+    /// Returns an estimate of the baked size, made up of the size of the struct itself,
+    /// as well as the sizes of all its static borrows.
+    ///
+    /// As static borrows are deduplicated by the linker, this is often overcounting.
+    pub fn baked_size(&self) -> usize {
+        self.get().payload.bake_size()
+    }
+}
+
+impl core::hash::Hash for DataPayload<ExportMarker> {
+    fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
+        self.hash_and_postcard_size(state);
+    }
+}
+
+impl DataPayload<ExportMarker> {
+    /// Calculates a payload hash and the postcard size
+    pub fn hash_and_postcard_size<H: core::hash::Hasher>(&self, state: &mut H) -> usize {
+        use postcard::ser_flavors::Flavor;
+
+        struct HashFlavor<'a, H>(&'a mut H, usize);
+        impl<H: core::hash::Hasher> Flavor for HashFlavor<'_, H> {
+            type Output = usize;
+
+            fn try_push(&mut self, data: u8) -> postcard::Result<()> {
+                self.0.write_u8(data);
+                self.1 += 1;
+                Ok(())
+            }
+
+            fn finalize(self) -> postcard::Result<Self::Output> {
+                Ok(self.1)
+            }
+        }
+
+        let mut serializer = postcard::Serializer {
+            output: HashFlavor(state, 0),
+        };
+
+        let _infallible = self
+            .get()
+            .payload
+            .serialize_yoke(&mut <dyn erased_serde::Serializer>::erase(&mut serializer));
+
+        serializer.output.1
+    }
+}
+
+/// Marker type for [`ExportBox`].
+#[allow(clippy::exhaustive_structs)] // marker type
+#[derive(Debug)]
+pub struct ExportMarker {}
+
+impl DynamicDataMarker for ExportMarker {
+    type DataStruct = ExportBox;
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::hello_world::*;
+
+    #[test]
+    fn test_compare_with_dyn() {
+        let payload1: DataPayload<HelloWorldV1> = DataPayload::from_owned(HelloWorld {
+            message: "abc".into(),
+        });
+        let payload2: DataPayload<HelloWorldV1> = DataPayload::from_owned(HelloWorld {
+            message: "abc".into(),
+        });
+        let payload3: DataPayload<HelloWorldV1> = DataPayload::from_owned(HelloWorld {
+            message: "def".into(),
+        });
+
+        assert!(payload1.eq_dyn(&payload2));
+        assert!(payload2.eq_dyn(&payload1));
+
+        assert!(!payload1.eq_dyn(&payload3));
+        assert!(!payload3.eq_dyn(&payload1));
+    }
+
+    #[test]
+    fn test_export_marker_partial_eq() {
+        let payload1: DataPayload<ExportMarker> =
+            UpcastDataPayload::upcast(DataPayload::<HelloWorldV1>::from_owned(HelloWorld {
+                message: "abc".into(),
+            }));
+        let payload2: DataPayload<ExportMarker> =
+            UpcastDataPayload::upcast(DataPayload::<HelloWorldV1>::from_owned(HelloWorld {
+                message: "abc".into(),
+            }));
+        let payload3: DataPayload<ExportMarker> =
+            UpcastDataPayload::upcast(DataPayload::<HelloWorldV1>::from_owned(HelloWorld {
+                message: "def".into(),
+            }));
+
+        assert_eq!(payload1, payload2);
+        assert_eq!(payload2, payload1);
+        assert_ne!(payload1, payload3);
+        assert_ne!(payload3, payload1);
+    }
+}
diff --git a/vendor/icu_provider/src/fallback.rs b/vendor/icu_provider/src/fallback.rs
new file mode 100644
index 00000000..a279bbdf
--- /dev/null
+++ b/vendor/icu_provider/src/fallback.rs
@@ -0,0 +1,123 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Options to define fallback behaviour.
+//!
+//! These options are consumed by the `LocaleFallbacker` in the `icu_locales` crate
+//! (or the `icu::locales` module), but are defined here because they are used by `DataMarkerInfo`.
+
+/// Hint for which subtag to prioritize during fallback.
+///
+/// For example, `"en-US"` might fall back to either `"en"` or `"und-US"` depending
+/// on this enum.
+#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)]
+#[non_exhaustive]
+pub enum LocaleFallbackPriority {
+    /// Prioritize the language. This is the default behavior.
+    ///
+    /// For example, `"en-US"` should go to `"en"` and then `"und"`.
+    Language,
+    /// Prioritize the script.
+    ///
+    /// For example, `"en-US"` should go to `"en"` and then `"und-Latn"` and then `"und"`.
+    Script,
+    /// Prioritize the region.
+    ///
+    /// For example, `"en-US"` should go to `"und-US"` and then `"und"`.
+    Region,
+}
+
+impl LocaleFallbackPriority {
+    /// Const-friendly version of [`Default::default`].
+    pub const fn default() -> Self {
+        Self::Language
+    }
+}
+
+impl Default for LocaleFallbackPriority {
+    fn default() -> Self {
+        Self::default()
+    }
+}
+
+/// Configuration settings for a particular fallback operation.
+#[derive(Debug, Clone, PartialEq, Eq, Copy)]
+#[non_exhaustive]
+pub struct LocaleFallbackConfig {
+    /// Strategy for choosing which subtags to drop during locale fallback.
+    ///
+    /// # Examples
+    ///
+    /// Retain the language and script subtags until the final step:
+    ///
+    /// ```
+    /// use icu::locale::fallback::LocaleFallbackConfig;
+    /// use icu::locale::fallback::LocaleFallbackPriority;
+    /// use icu::locale::locale;
+    /// use icu::locale::LocaleFallbacker;
+    ///
+    /// // Set up the fallback iterator.
+    /// let fallbacker = LocaleFallbacker::new();
+    /// let mut config = LocaleFallbackConfig::default();
+    /// config.priority = LocaleFallbackPriority::Language;
+    /// let mut fallback_iterator = fallbacker
+    ///     .for_config(config)
+    ///     .fallback_for(locale!("ca-ES-valencia").into());
+    ///
+    /// // Run the algorithm and check the results.
+    /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES-valencia").into());
+    /// fallback_iterator.step();
+    /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into());
+    /// fallback_iterator.step();
+    /// assert_eq!(fallback_iterator.get(), &locale!("ca-valencia").into());
+    /// fallback_iterator.step();
+    /// assert_eq!(fallback_iterator.get(), &locale!("ca").into());
+    /// fallback_iterator.step();
+    /// assert_eq!(fallback_iterator.get(), &locale!("und").into());
+    /// ```
+    ///
+    /// Retain the region subtag until the final step:
+    ///
+    /// ```
+    /// use icu::locale::fallback::LocaleFallbackConfig;
+    /// use icu::locale::fallback::LocaleFallbackPriority;
+    /// use icu::locale::locale;
+    /// use icu::locale::LocaleFallbacker;
+    ///
+    /// // Set up the fallback iterator.
+    /// let fallbacker = LocaleFallbacker::new();
+    /// let mut config = LocaleFallbackConfig::default();
+    /// config.priority = LocaleFallbackPriority::Region;
+    /// let mut fallback_iterator = fallbacker
+    ///     .for_config(config)
+    ///     .fallback_for(locale!("ca-ES-valencia").into());
+    ///
+    /// // Run the algorithm and check the results.
+    /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES-valencia").into());
+    /// fallback_iterator.step();
+    /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into());
+    /// fallback_iterator.step();
+    /// assert_eq!(fallback_iterator.get(), &locale!("und-ES-valencia").into());
+    /// fallback_iterator.step();
+    /// assert_eq!(fallback_iterator.get(), &locale!("und-ES").into());
+    /// fallback_iterator.step();
+    /// assert_eq!(fallback_iterator.get(), &locale!("und").into());
+    /// ```
+    pub priority: LocaleFallbackPriority,
+}
+
+impl LocaleFallbackConfig {
+    /// Const version of [`Default::default`].
+    pub const fn default() -> Self {
+        Self {
+            priority: LocaleFallbackPriority::default(),
+        }
+    }
+}
+
+impl Default for LocaleFallbackConfig {
+    fn default() -> Self {
+        Self::default()
+    }
+}
diff --git a/vendor/icu_provider/src/hello_world.rs b/vendor/icu_provider/src/hello_world.rs
new file mode 100644
index 00000000..aeb0795c
--- /dev/null
+++ b/vendor/icu_provider/src/hello_world.rs
@@ -0,0 +1,402 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Data provider returning multilingual "Hello World" strings for testing.
+
+#![allow(clippy::exhaustive_structs)] // data struct module
+
+use crate as icu_provider;
+
+use crate::prelude::*;
+use alloc::borrow::Cow;
+use alloc::collections::BTreeSet;
+use alloc::string::String;
+use core::fmt::Debug;
+use icu_locale_core::preferences::define_preferences;
+use writeable::Writeable;
+use yoke::*;
+use zerofrom::*;
+
+/// A struct containing "Hello World" in the requested language.
+#[derive(Debug, PartialEq, Clone, Yokeable, ZeroFrom)]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+#[cfg_attr(
+    any(feature = "deserialize_json", feature = "export"),
+    derive(serde::Serialize)
+)]
+#[cfg_attr(feature = "export", derive(databake::Bake))]
+#[cfg_attr(feature = "export", databake(path = icu_provider::hello_world))]
+pub struct HelloWorld<'data> {
+    /// The translation of "Hello World".
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    pub message: Cow<'data, str>,
+}
+
+impl Default for HelloWorld<'_> {
+    fn default() -> Self {
+        HelloWorld {
+            message: Cow::Borrowed("(und) Hello World"),
+        }
+    }
+}
+
+impl<'a> ZeroFrom<'a, str> for HelloWorld<'a> {
+    fn zero_from(message: &'a str) -> Self {
+        HelloWorld {
+            message: Cow::Borrowed(message),
+        }
+    }
+}
+
+crate::data_struct!(
+    HelloWorld<'data>,
+    varule: str,
+    #[cfg(feature = "export")]
+    encode_as_varule: |v: &HelloWorld<'_>| &*v.message
+);
+
+data_marker!(
+    /// Marker type for [`HelloWorld`].
+    #[derive(Debug)]
+    HelloWorldV1,
+    HelloWorld<'static>,
+    has_checksum = true,
+);
+
+/// A data provider returning Hello World strings in different languages.
+///
+/// Mostly useful for testing.
+///
+/// # Examples
+///
+/// ```
+/// use icu_locale_core::langid;
+/// use icu_provider::hello_world::*;
+/// use icu_provider::prelude::*;
+///
+/// let german_hello_world: DataResponse<HelloWorldV1> = HelloWorldProvider
+///     .load(DataRequest {
+///         id: DataIdentifierBorrowed::for_locale(&langid!("de").into()),
+///         ..Default::default()
+///     })
+///     .expect("Loading should succeed");
+///
+/// assert_eq!("Hallo Welt", german_hello_world.payload.get().message);
+/// ```
+///
+/// Load the reverse string using an auxiliary key:
+///
+/// ```
+/// use icu_locale_core::langid;
+/// use icu_provider::hello_world::*;
+/// use icu_provider::prelude::*;
+///
+/// let reverse_hello_world: DataResponse<HelloWorldV1> = HelloWorldProvider
+///     .load(DataRequest {
+///         id: DataIdentifierBorrowed::for_marker_attributes_and_locale(
+///             DataMarkerAttributes::from_str_or_panic("reverse"),
+///             &langid!("en").into(),
+///         ),
+///         ..Default::default()
+///     })
+///     .expect("Loading should succeed");
+///
+/// assert_eq!("Olleh Dlrow", reverse_hello_world.payload.get().message);
+/// ```
+#[derive(Debug, PartialEq, Default)]
+pub struct HelloWorldProvider;
+
+impl HelloWorldProvider {
+    // Data from https://en.wiktionary.org/wiki/Hello_World#Translations
+    // Keep this sorted!
+    const DATA: &'static [(&'static str, &'static str, &'static str)] = &[
+        ("bn", "", "ওহে বিশ্ব"),
+        ("cs", "", "Ahoj světe"),
+        ("de", "", "Hallo Welt"),
+        ("de-AT", "", "Servus Welt"),
+        ("el", "", "Καλημέρα κόσμε"),
+        ("en", "", "Hello World"),
+        // WORLD
+        ("en-001", "", "Hello from 🗺️"),
+        // AFRICA
+        ("en-002", "", "Hello from 🌍"),
+        // AMERICAS
+        ("en-019", "", "Hello from 🌎"),
+        // ASIA
+        ("en-142", "", "Hello from 🌏"),
+        // GREAT BRITAIN
+        ("en-GB", "", "Hello from 🇬🇧"),
+        // ENGLAND
+        ("en-GB-u-sd-gbeng", "", "Hello from 🏴󠁧󠁢󠁥󠁮󠁧󠁿"),
+        ("en", "reverse", "Olleh Dlrow"),
+        ("eo", "", "Saluton, Mondo"),
+        ("fa", "", "سلام دنیا‎"),
+        ("fi", "", "hei maailma"),
+        ("is", "", "Halló, heimur"),
+        ("ja", "", "こんにちは世界"),
+        ("ja", "reverse", "界世はちにんこ"),
+        ("la", "", "Ave, munde"),
+        ("pt", "", "Olá, mundo"),
+        ("ro", "", "Salut, lume"),
+        ("ru", "", "Привет, мир"),
+        ("sr", "", "Поздрав свете"),
+        ("sr-Latn", "", "Pozdrav svete"),
+        ("vi", "", "Xin chào thế giới"),
+        ("zh", "", "你好世界"),
+    ];
+
+    /// Converts this provider into a [`BufferProvider`] that uses JSON serialization.
+    #[cfg(feature = "deserialize_json")]
+    pub fn into_json_provider(self) -> HelloWorldJsonProvider {
+        HelloWorldJsonProvider
+    }
+}
+
+impl DataProvider<HelloWorldV1> for HelloWorldProvider {
+    fn load(&self, req: DataRequest) -> Result<DataResponse<HelloWorldV1>, DataError> {
+        #[allow(clippy::indexing_slicing)] // binary_search
+        let data = Self::DATA
+            .iter()
+            .find(|(l, a, _)| {
+                req.id.locale.strict_cmp(l.as_bytes()).is_eq()
+                    && *a == req.id.marker_attributes.as_str()
+            })
+            .map(|(_, _, v)| v)
+            .ok_or_else(|| DataErrorKind::IdentifierNotFound.with_req(HelloWorldV1::INFO, req))?;
+        Ok(DataResponse {
+            metadata: DataResponseMetadata::default().with_checksum(1234),
+            payload: DataPayload::from_static_str(data),
+        })
+    }
+}
+
+impl DryDataProvider<HelloWorldV1> for HelloWorldProvider {
+    fn dry_load(&self, req: DataRequest) -> Result<DataResponseMetadata, DataError> {
+        self.load(req).map(|r| r.metadata)
+    }
+}
+
+impl DataPayload<HelloWorldV1> {
+    /// Make a [`DataPayload`]`<`[`HelloWorldV1`]`>` from a static string slice.
+    pub fn from_static_str(s: &'static str) -> DataPayload<HelloWorldV1> {
+        DataPayload::from_owned(HelloWorld {
+            message: Cow::Borrowed(s),
+        })
+    }
+}
+
+#[cfg(feature = "deserialize_json")]
+/// A data provider returning Hello World strings in different languages as JSON blobs.
+///
+/// Mostly useful for testing.
+///
+/// # Examples
+///
+/// ```
+/// use icu_locale_core::langid;
+/// use icu_provider::hello_world::*;
+/// use icu_provider::prelude::*;
+///
+/// let german_hello_world = HelloWorldProvider
+///     .into_json_provider()
+///     .load_data(HelloWorldV1::INFO, DataRequest {
+///         id: DataIdentifierBorrowed::for_locale(&langid!("de").into()),
+///         ..Default::default()
+///     })
+///     .expect("Loading should succeed");
+///
+/// assert_eq!(german_hello_world.payload.get(), br#"{"message":"Hallo Welt"}"#);
+#[derive(Debug)]
+pub struct HelloWorldJsonProvider;
+
+#[cfg(feature = "deserialize_json")]
+impl DynamicDataProvider<BufferMarker> for HelloWorldJsonProvider {
+    fn load_data(
+        &self,
+        marker: DataMarkerInfo,
+        req: DataRequest,
+    ) -> Result<DataResponse<BufferMarker>, DataError> {
+        marker.match_marker(HelloWorldV1::INFO)?;
+        let result = HelloWorldProvider.load(req)?;
+        Ok(DataResponse {
+            metadata: DataResponseMetadata {
+                buffer_format: Some(icu_provider::buf::BufferFormat::Json),
+                ..result.metadata
+            },
+            #[allow(clippy::unwrap_used)] // HelloWorld::serialize is infallible
+            payload: DataPayload::from_owned_buffer(
+                serde_json::to_string(result.payload.get())
+                    .unwrap()
+                    .into_bytes()
+                    .into_boxed_slice(),
+            ),
+        })
+    }
+}
+
+impl IterableDataProvider<HelloWorldV1> for HelloWorldProvider {
+    fn iter_ids(&self) -> Result<BTreeSet<DataIdentifierCow>, DataError> {
+        #[allow(clippy::unwrap_used)] // hello-world
+        Ok(Self::DATA
+            .iter()
+            .map(|(l, a, _)| {
+                DataIdentifierCow::from_borrowed_and_owned(
+                    DataMarkerAttributes::from_str_or_panic(a),
+                    l.parse().unwrap(),
+                )
+            })
+            .collect())
+    }
+}
+
+#[cfg(feature = "export")]
+icu_provider::export::make_exportable_provider!(HelloWorldProvider, [HelloWorldV1,]);
+
+define_preferences!(
+    /// Hello World Preferences.
+    [Copy]
+    HelloWorldFormatterPreferences, {}
+);
+
+/// A type that formats localized "hello world" strings.
+///
+/// This type is intended to take the shape of a typical ICU4X formatter API.
+///
+/// # Examples
+///
+/// ```
+/// use icu_locale_core::locale;
+/// use icu_provider::hello_world::{HelloWorldFormatter, HelloWorldProvider};
+/// use writeable::assert_writeable_eq;
+///
+/// let fmt = HelloWorldFormatter::try_new_unstable(
+///     &HelloWorldProvider,
+///     locale!("eo").into(),
+/// )
+/// .expect("locale exists");
+///
+/// assert_writeable_eq!(fmt.format(), "Saluton, Mondo");
+/// ```
+#[derive(Debug)]
+pub struct HelloWorldFormatter {
+    data: DataPayload<HelloWorldV1>,
+}
+
+/// A formatted hello world message. Implements [`Writeable`].
+///
+/// For an example, see [`HelloWorldFormatter`].
+#[derive(Debug)]
+pub struct FormattedHelloWorld<'l> {
+    data: &'l HelloWorld<'l>,
+}
+
+impl HelloWorldFormatter {
+    /// Creates a new [`HelloWorldFormatter`] for the specified locale.
+    ///
+    /// [📚 Help choosing a constructor](icu_provider::constructors)
+    pub fn try_new(prefs: HelloWorldFormatterPreferences) -> Result<Self, DataError> {
+        Self::try_new_unstable(&HelloWorldProvider, prefs)
+    }
+
+    icu_provider::gen_buffer_data_constructors!((prefs: HelloWorldFormatterPreferences) -> error: DataError,
+        functions: [
+            try_new: skip,
+            try_new_with_buffer_provider,
+            try_new_unstable,
+            Self,
+    ]);
+
+    #[doc = icu_provider::gen_buffer_unstable_docs!(UNSTABLE, Self::try_new)]
+    pub fn try_new_unstable<P>(
+        provider: &P,
+        prefs: HelloWorldFormatterPreferences,
+    ) -> Result<Self, DataError>
+    where
+        P: DataProvider<HelloWorldV1>,
+    {
+        let locale = HelloWorldV1::make_locale(prefs.locale_preferences);
+        let data = provider
+            .load(DataRequest {
+                id: crate::request::DataIdentifierBorrowed::for_locale(&locale),
+                ..Default::default()
+            })?
+            .payload;
+        Ok(Self { data })
+    }
+
+    /// Formats a hello world message, returning a [`FormattedHelloWorld`].
+    #[allow(clippy::needless_lifetimes)] // documentary example
+    pub fn format<'l>(&'l self) -> FormattedHelloWorld<'l> {
+        FormattedHelloWorld {
+            data: self.data.get(),
+        }
+    }
+
+    /// Formats a hello world message, returning a [`String`].
+    pub fn format_to_string(&self) -> String {
+        self.format().write_to_string().into_owned()
+    }
+}
+
+impl Writeable for FormattedHelloWorld<'_> {
+    fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
+        self.data.message.write_to(sink)
+    }
+
+    fn write_to_string(&self) -> Cow<str> {
+        self.data.message.clone()
+    }
+
+    fn writeable_length_hint(&self) -> writeable::LengthHint {
+        self.data.message.writeable_length_hint()
+    }
+}
+
+writeable::impl_display_with_writeable!(FormattedHelloWorld<'_>);
+
+#[cfg(feature = "export")]
+#[test]
+fn test_iter() {
+    use crate::IterableDataProvider;
+    use icu_locale_core::locale;
+
+    assert_eq!(
+        HelloWorldProvider.iter_ids().unwrap(),
+        BTreeSet::from_iter([
+            DataIdentifierCow::from_locale(locale!("bn").into()),
+            DataIdentifierCow::from_locale(locale!("cs").into()),
+            DataIdentifierCow::from_locale(locale!("de").into()),
+            DataIdentifierCow::from_locale(locale!("de-AT").into()),
+            DataIdentifierCow::from_locale(locale!("el").into()),
+            DataIdentifierCow::from_locale(locale!("en").into()),
+            DataIdentifierCow::from_locale(locale!("en-001").into()),
+            DataIdentifierCow::from_locale(locale!("en-002").into()),
+            DataIdentifierCow::from_locale(locale!("en-019").into()),
+            DataIdentifierCow::from_locale(locale!("en-142").into()),
+            DataIdentifierCow::from_locale(locale!("en-GB").into()),
+            DataIdentifierCow::from_locale(locale!("en-GB-u-sd-gbeng").into()),
+            DataIdentifierCow::from_borrowed_and_owned(
+                DataMarkerAttributes::from_str_or_panic("reverse"),
+                locale!("en").into()
+            ),
+            DataIdentifierCow::from_locale(locale!("eo").into()),
+            DataIdentifierCow::from_locale(locale!("fa").into()),
+            DataIdentifierCow::from_locale(locale!("fi").into()),
+            DataIdentifierCow::from_locale(locale!("is").into()),
+            DataIdentifierCow::from_locale(locale!("ja").into()),
+            DataIdentifierCow::from_borrowed_and_owned(
+                DataMarkerAttributes::from_str_or_panic("reverse"),
+                locale!("ja").into()
+            ),
+            DataIdentifierCow::from_locale(locale!("la").into()),
+            DataIdentifierCow::from_locale(locale!("pt").into()),
+            DataIdentifierCow::from_locale(locale!("ro").into()),
+            DataIdentifierCow::from_locale(locale!("ru").into()),
+            DataIdentifierCow::from_locale(locale!("sr").into()),
+            DataIdentifierCow::from_locale(locale!("sr-Latn").into()),
+            DataIdentifierCow::from_locale(locale!("vi").into()),
+            DataIdentifierCow::from_locale(locale!("zh").into()),
+        ])
+    );
+}
diff --git a/vendor/icu_provider/src/lib.rs b/vendor/icu_provider/src/lib.rs
new file mode 100644
index 00000000..3e04654c
--- /dev/null
+++ b/vendor/icu_provider/src/lib.rs
@@ -0,0 +1,228 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! `icu_provider` is one of the `ICU4X` components.
+//!
+//! Unicode's experience with ICU4X's parent projects, ICU4C and ICU4J, led the team to realize
+//! that data management is the most critical aspect of deploying internationalization, and that it requires
+//! a high level of customization for the needs of the platform it is embedded in. As a result
+//! ICU4X comes with a selection of providers that should allow for ICU4X to naturally fit into
+//! different business and technological needs of customers.
+//!
+//! `icu_provider` defines traits and structs for transmitting data through the ICU4X locale
+//! data pipeline. The primary trait is [`DataProvider`]. It is parameterized by a
+//! [`DataMarker`], which is the type-system-level data identifier. [`DataProvider`] has a single method,
+//! [`DataProvider::load`], which transforms a [`DataRequest`] into a [`DataResponse`].
+//!
+//! - [`DataRequest`] contains selectors to choose a specific variant of the marker, such as a locale.
+//! - [`DataResponse`] contains the data if the request was successful.
+//!
+//! The most common types required for this crate are included via the prelude:
+//!
+//! ```
+//! use icu_provider::prelude::*;
+//! ```
+//!
+//! ## Dynamic Data Providers
+//!
+//! If the type system cannot be leveraged to load data (such as when dynamically loading from I/O),
+//! there's another form of the [`DataProvider`]: [`DynamicDataProvider`]. While [`DataProvider`] is parametrized
+//! on the type-system level by a [`DataMarker`] (which are distinct types implementing this trait),
+//! [`DynamicDataProvider`]s are parametrized at runtime by a [`DataMarkerInfo`] struct, which essentially is the runtime
+//! representation of the [`DataMarker`] type.
+//!
+//! The [`DynamicDataProvider`] is still type-level parametrized by the type that it loads, and there are two
+//! implementations that should be called out
+//!
+//! - [`DynamicDataProvider<BufferMarker>`], a.k.a. [`BufferProvider`](buf::BufferProvider) returns data as `[u8]` buffers.
+//!
+//! ### BufferProvider
+//!
+//! These providers are able to return unstructured data typically represented as
+//! [`serde`]-serialized buffers. Users can call [`as_deserializing()`] to get an object
+//! implementing [`DataProvider`] by invoking Serde Deserialize.
+//!
+//! Examples of BufferProviders:
+//!
+//! - [`FsDataProvider`] reads individual buffers from the filesystem.
+//! - [`BlobDataProvider`] reads buffers from a large in-memory blob.
+//!
+//! ## Provider Adapters
+//!
+//! ICU4X offers several built-in modules to combine providers in interesting ways.
+//! These can be found in the [`icu_provider_adapters`] crate.
+//!
+//! ## Testing Provider
+//!
+//! This crate also contains a concrete provider for demonstration purposes:
+//!
+//! - [`HelloWorldProvider`] returns "hello world" strings in several languages.
+//!
+//! ## Types and Lifetimes
+//!
+//! Types compatible with [`Yokeable`] can be passed through the data provider, so long as they are
+//! associated with a marker type implementing [`DynamicDataMarker`].
+//!
+//! Data structs should generally have one lifetime argument: `'data`. This lifetime allows data
+//! structs to borrow zero-copy data.
+//!
+//! [`FixedProvider`]: https://docs.rs/icu_provider_adapters/latest/fixed/any_payload/struct.FixedProvider.html
+//! [`HelloWorldProvider`]: hello_world::HelloWorldProvider
+//! [`Yokeable`]: yoke::Yokeable
+//! [`impl_dynamic_data_provider!`]: dynutil::impl_dynamic_data_provider
+//! [`icu_provider_adapters`]: https://docs.rs/icu_provider_adapters/latest/icu_provider_adapters/index.html
+//! [`SourceDataProvider`]: https://docs.rs/icu_provider_source/latest/icu_provider_source/struct.SourceDataProvider.html
+//! [`as_deserializing()`]: buf::AsDeserializingBufferProvider::as_deserializing
+//! [`FsDataProvider`]: https://docs.rs/icu_provider_fs/latest/icu_provider_fs/struct.FsDataProvider.html
+//! [`BlobDataProvider`]: https://docs.rs/icu_provider_blob/latest/icu_provider_blob/struct.BlobDataProvider.html
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, feature = "std")), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+#![warn(missing_docs)]
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+#[cfg(feature = "baked")]
+pub mod baked;
+pub mod buf;
+pub mod constructors;
+pub mod dynutil;
+#[cfg(feature = "export")]
+pub mod export;
+#[cfg(feature = "alloc")]
+pub mod hello_world;
+
+// TODO: put this in a separate crate
+#[cfg(all(feature = "serde", feature = "alloc"))]
+#[doc(hidden)]
+pub mod serde_borrow_de_utils;
+
+mod data_provider;
+pub use data_provider::{
+    BoundDataProvider, DataProvider, DataProviderWithMarker, DryDataProvider, DynamicDataProvider,
+    DynamicDryDataProvider,
+};
+#[cfg(feature = "alloc")]
+pub use data_provider::{IterableDataProvider, IterableDynamicDataProvider};
+
+mod error;
+pub use error::{DataError, DataErrorKind, ResultDataError};
+
+mod request;
+pub use request::{DataLocale, DataMarkerAttributes, DataRequest, DataRequestMetadata, *};
+
+mod response;
+#[doc(hidden)] // TODO(#4467): establish this as an internal API
+pub use response::DataPayloadOr;
+pub use response::{Cart, DataPayload, DataResponse, DataResponseMetadata};
+
+#[path = "marker.rs"]
+mod marker_full;
+
+pub use marker_full::{DataMarker, DataMarkerInfo, DynamicDataMarker};
+pub mod marker {
+    //! Additional [`DataMarker`](super::DataMarker) helpers.
+
+    #[doc(inline)]
+    pub use super::marker_full::impl_data_provider_never_marker;
+    pub use super::marker_full::{
+        DataMarkerExt, DataMarkerId, DataMarkerIdHash, ErasedMarker, NeverMarker,
+    };
+}
+
+mod varule_traits;
+pub mod ule {
+    //! Traits that data provider implementations can use to optimize storage
+    //! by using [`VarULE`](zerovec::ule::VarULE).
+    //!
+    //! See [`MaybeAsVarULE`] for details.
+
+    pub use super::varule_traits::MaybeAsVarULE;
+    #[cfg(feature = "export")]
+    pub use super::varule_traits::MaybeEncodeAsVarULE;
+}
+
+/// Core selection of APIs and structures for the ICU4X data provider.
+pub mod prelude {
+    #[doc(no_inline)]
+    #[cfg(feature = "serde")]
+    pub use crate::buf::AsDeserializingBufferProvider;
+    #[doc(no_inline)]
+    pub use crate::buf::{BufferMarker, BufferProvider};
+    #[doc(no_inline)]
+    pub use crate::{
+        data_marker, data_struct, marker::DataMarkerExt, request::AttributeParseError,
+        request::DataIdentifierBorrowed, BoundDataProvider, DataError, DataErrorKind, DataLocale,
+        DataMarker, DataMarkerAttributes, DataMarkerInfo, DataPayload, DataProvider, DataRequest,
+        DataRequestMetadata, DataResponse, DataResponseMetadata, DryDataProvider,
+        DynamicDataMarker, DynamicDataProvider, DynamicDryDataProvider, ResultDataError,
+    };
+    #[cfg(feature = "alloc")]
+    #[doc(no_inline)]
+    pub use crate::{
+        request::DataIdentifierCow, IterableDataProvider, IterableDynamicDataProvider,
+    };
+
+    #[doc(no_inline)]
+    pub use icu_locale_core;
+    #[doc(no_inline)]
+    pub use yoke;
+    #[doc(no_inline)]
+    pub use zerofrom;
+}
+
+#[doc(hidden)] // internal
+pub mod fallback;
+
+#[doc(hidden)] // internal
+#[cfg(feature = "logging")]
+pub use log;
+
+#[doc(hidden)] // internal
+#[cfg(all(not(feature = "logging"), debug_assertions, not(target_os = "none")))]
+pub mod log {
+    extern crate std;
+    pub use std::eprintln as error;
+    pub use std::eprintln as warn;
+    pub use std::eprintln as info;
+    pub use std::eprintln as debug;
+    pub use std::eprintln as trace;
+}
+
+#[cfg(all(
+    not(feature = "logging"),
+    any(not(debug_assertions), target_os = "none")
+))]
+#[doc(hidden)] // internal
+pub mod log {
+    #[macro_export]
+    macro_rules! _internal_noop_log {
+        ($($t:expr),*) => {};
+    }
+    pub use crate::_internal_noop_log as error;
+    pub use crate::_internal_noop_log as warn;
+    pub use crate::_internal_noop_log as info;
+    pub use crate::_internal_noop_log as debug;
+    pub use crate::_internal_noop_log as trace;
+}
+
+#[test]
+fn test_logging() {
+    // This should compile on all combinations of features
+    crate::log::info!("Hello World");
+}
diff --git a/vendor/icu_provider/src/marker.rs b/vendor/icu_provider/src/marker.rs
new file mode 100644
index 00000000..d99cbb55
--- /dev/null
+++ b/vendor/icu_provider/src/marker.rs
@@ -0,0 +1,661 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::fallback::{LocaleFallbackConfig, LocaleFallbackPriority};
+use crate::{DataError, DataErrorKind, DataLocale, DataProvider, DataProviderWithMarker};
+use core::fmt;
+use core::marker::PhantomData;
+use icu_locale_core::preferences::LocalePreferences;
+use yoke::Yokeable;
+use zerovec::ule::*;
+
+/// Trait marker for data structs. All types delivered by the data provider must be associated with
+/// something implementing this trait.
+///
+/// Data markers normally generated with the [`data_marker`](crate::data_marker) macro.
+///
+/// Also see [`DataMarker`].
+///
+/// Note: `DynamicDataMarker`s are quasi-const-generic compile-time objects, and as such are expected
+/// to be unit structs. As this is not something that can be enforced by the type system, we
+/// currently only have a `'static` bound on them (which is needed by a lot of our code).
+///
+/// # Examples
+///
+/// Manually implementing DynamicDataMarker for a custom type:
+///
+/// ```
+/// use icu_provider::prelude::*;
+/// use std::borrow::Cow;
+///
+/// #[derive(yoke::Yokeable, zerofrom::ZeroFrom)]
+/// struct MyDataStruct<'data> {
+///     message: Cow<'data, str>,
+/// }
+///
+/// struct MyDataStructMarker;
+///
+/// impl DynamicDataMarker for MyDataStructMarker {
+///     type DataStruct = MyDataStruct<'static>;
+/// }
+///
+/// // We can now use MyDataStruct with DataProvider:
+/// let s = MyDataStruct {
+///     message: Cow::Owned("Hello World".into()),
+/// };
+/// let payload = DataPayload::<MyDataStructMarker>::from_owned(s);
+/// assert_eq!(payload.get().message, "Hello World");
+/// ```
+///
+/// [`data_struct`]: crate::data_struct
+pub trait DynamicDataMarker: 'static {
+    /// A type that implements [`Yokeable`]. This should typically be the `'static` version of a
+    /// data struct.
+    type DataStruct: for<'a> Yokeable<'a>;
+}
+
+/// A [`DynamicDataMarker`] with a [`DataMarkerInfo`] attached.
+///
+/// Structs implementing this trait are normally generated with the [`data_struct!`] macro.
+///
+/// Implementing this trait enables this marker to be used with the main [`DataProvider`] trait.
+/// Most markers should be associated with a specific marker and should therefore implement this
+/// trait.
+///
+/// [`BufferMarker`] is an example of a marker that does _not_ implement this trait.
+///
+/// Note: `DataMarker`s are quasi-const-generic compile-time objects, and as such are expected
+/// to be unit structs. As this is not something that can be enforced by the type system, we
+/// currently only have a `'static` bound on them (which is needed by a lot of our code).
+///
+/// [`data_struct!`]: crate::data_struct
+/// [`DataProvider`]: crate::DataProvider
+/// [`BufferMarker`]: crate::buf::BufferMarker
+pub trait DataMarker: DynamicDataMarker {
+    /// The single [`DataMarkerInfo`] associated with this marker.
+    const INFO: DataMarkerInfo;
+}
+
+/// Extension trait for methods on [`DataMarker`]
+pub trait DataMarkerExt: DataMarker + Sized {
+    /// Binds a [`DataMarker`] to a provider supporting it.
+    fn bind<P>(provider: P) -> DataProviderWithMarker<Self, P>
+    where
+        P: DataProvider<Self>;
+    /// Constructs a [`DataLocale`] using fallback preferences from this [`DataMarker`].
+    fn make_locale(locale: LocalePreferences) -> DataLocale;
+}
+
+impl<M: DataMarker + Sized> DataMarkerExt for M {
+    fn bind<P>(provider: P) -> DataProviderWithMarker<Self, P>
+    where
+        P: DataProvider<Self>,
+    {
+        DataProviderWithMarker::new(provider)
+    }
+
+    fn make_locale(locale: LocalePreferences) -> DataLocale {
+        M::INFO.make_locale(locale)
+    }
+}
+
+/// A [`DynamicDataMarker`] that never returns data.
+///
+/// All types that have non-blanket impls of `DataProvider<M>` are expected to explicitly
+/// implement `DataProvider<NeverMarker<Y>>`, returning [`DataErrorKind::MarkerNotFound`].
+/// See [`impl_data_provider_never_marker!`].
+///
+/// [`DataErrorKind::MarkerNotFound`]: crate::DataErrorKind::MarkerNotFound
+/// [`impl_data_provider_never_marker!`]: crate::marker::impl_data_provider_never_marker
+///
+/// # Examples
+///
+/// ```
+/// use icu_locale_core::langid;
+/// use icu_provider::hello_world::*;
+/// use icu_provider::marker::NeverMarker;
+/// use icu_provider::prelude::*;
+///
+/// let buffer_provider = HelloWorldProvider.into_json_provider();
+///
+/// let result = DataProvider::<NeverMarker<HelloWorld<'static>>>::load(
+///     &buffer_provider.as_deserializing(),
+///     DataRequest {
+///         id: DataIdentifierBorrowed::for_locale(&langid!("en").into()),
+///         ..Default::default()
+///     },
+/// );
+///
+/// assert!(matches!(
+///     result,
+///     Err(DataError {
+///         kind: DataErrorKind::MarkerNotFound,
+///         ..
+///     })
+/// ));
+/// ```
+#[derive(Debug, Copy, Clone)]
+pub struct NeverMarker<Y>(PhantomData<Y>);
+
+impl<Y> DynamicDataMarker for NeverMarker<Y>
+where
+    for<'a> Y: Yokeable<'a>,
+{
+    type DataStruct = Y;
+}
+
+impl<Y> DataMarker for NeverMarker<Y>
+where
+    for<'a> Y: Yokeable<'a>,
+{
+    const INFO: DataMarkerInfo = DataMarkerInfo::from_id(DataMarkerId {
+        #[cfg(any(feature = "export", debug_assertions))]
+        debug: "NeverMarker",
+        hash: *b"nevermar",
+    });
+}
+
+/// Implements `DataProvider<NeverMarker<Y>>` on a struct.
+///
+/// For more information, see [`NeverMarker`].
+///
+/// # Examples
+///
+/// ```
+/// use icu_locale_core::langid;
+/// use icu_provider::hello_world::*;
+/// use icu_provider::marker::NeverMarker;
+/// use icu_provider::prelude::*;
+///
+/// struct MyProvider;
+///
+/// icu_provider::marker::impl_data_provider_never_marker!(MyProvider);
+///
+/// let result = DataProvider::<NeverMarker<HelloWorld<'static>>>::load(
+///     &MyProvider,
+///     DataRequest {
+///         id: DataIdentifierBorrowed::for_locale(&langid!("und").into()),
+///         ..Default::default()
+///     },
+/// );
+///
+/// assert!(matches!(
+///     result,
+///     Err(DataError {
+///         kind: DataErrorKind::MarkerNotFound,
+///         ..
+///     })
+/// ));
+/// ```
+#[doc(hidden)] // macro
+#[macro_export]
+macro_rules! __impl_data_provider_never_marker {
+    ($ty:path) => {
+        impl<Y> $crate::DataProvider<$crate::marker::NeverMarker<Y>> for $ty
+        where
+            for<'a> Y: $crate::prelude::yoke::Yokeable<'a>,
+        {
+            fn load(
+                &self,
+                req: $crate::DataRequest,
+            ) -> Result<$crate::DataResponse<$crate::marker::NeverMarker<Y>>, $crate::DataError>
+            {
+                Err($crate::DataErrorKind::MarkerNotFound.with_req(
+                    <$crate::marker::NeverMarker<Y> as $crate::DataMarker>::INFO,
+                    req,
+                ))
+            }
+        }
+    };
+}
+#[doc(inline)]
+pub use __impl_data_provider_never_marker as impl_data_provider_never_marker;
+
+/// A compact hash of a [`DataMarkerInfo`]. Useful for keys in maps.
+///
+/// The hash will be stable over time within major releases.
+#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Hash, ULE)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+#[repr(transparent)]
+pub struct DataMarkerIdHash([u8; 4]);
+
+impl DataMarkerIdHash {
+    /// Magic bytes to locate [`DataMarkerIdHash`]es in binaries.
+    pub const LEADING_TAG: &[u8] = b"tdmh";
+
+    /// Gets the hash value as a byte array.
+    pub const fn to_bytes(self) -> [u8; 4] {
+        self.0
+    }
+}
+
+/// Const function to compute the FxHash of a byte array.
+///
+/// FxHash is a speedy hash algorithm used within rustc. The algorithm is satisfactory for our
+/// use case since the strings being hashed originate from a trusted source (the ICU4X
+/// components), and the hashes are computed at compile time, so we can check for collisions.
+///
+/// We could have considered a SHA or other cryptographic hash function. However, we are using
+/// FxHash because:
+///
+/// 1. There is precedent for this algorithm in Rust
+/// 2. The algorithm is easy to implement as a const function
+/// 3. The amount of code is small enough that we can reasonably keep the algorithm in-tree
+/// 4. FxHash is designed to output 32-bit or 64-bit values, whereas SHA outputs more bits,
+///    such that truncation would be required in order to fit into a u32, partially reducing
+///    the benefit of a cryptographically secure algorithm
+// The indexing operations in this function have been reviewed in detail and won't panic.
+#[allow(clippy::indexing_slicing)]
+const fn fxhash_32(bytes: &[u8]) -> u32 {
+    // This code is adapted from https://github.com/rust-lang/rustc-hash,
+    // whose license text is reproduced below.
+    //
+    // Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+    // file at the top-level directory of this distribution and at
+    // http://rust-lang.org/COPYRIGHT.
+    //
+    // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+    // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+    // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+    // option. This file may not be copied, modified, or distributed
+    // except according to those terms.
+
+    #[inline]
+    const fn hash_word_32(mut hash: u32, word: u32) -> u32 {
+        const ROTATE: u32 = 5;
+        const SEED32: u32 = 0x9e_37_79_b9;
+        hash = hash.rotate_left(ROTATE);
+        hash ^= word;
+        hash = hash.wrapping_mul(SEED32);
+        hash
+    }
+
+    let mut cursor = 0;
+    let end = bytes.len();
+    let mut hash = 0;
+
+    while end - cursor >= 4 {
+        let word = u32::from_le_bytes([
+            bytes[cursor],
+            bytes[cursor + 1],
+            bytes[cursor + 2],
+            bytes[cursor + 3],
+        ]);
+        hash = hash_word_32(hash, word);
+        cursor += 4;
+    }
+
+    if end - cursor >= 2 {
+        let word = u16::from_le_bytes([bytes[cursor], bytes[cursor + 1]]);
+        hash = hash_word_32(hash, word as u32);
+        cursor += 2;
+    }
+
+    if end - cursor >= 1 {
+        hash = hash_word_32(hash, bytes[cursor] as u32);
+    }
+
+    hash
+}
+
+#[cfg(feature = "alloc")]
+impl<'a> zerovec::maps::ZeroMapKV<'a> for DataMarkerIdHash {
+    type Container = zerovec::ZeroVec<'a, DataMarkerIdHash>;
+    type Slice = zerovec::ZeroSlice<DataMarkerIdHash>;
+    type GetType = <DataMarkerIdHash as AsULE>::ULE;
+    type OwnedType = DataMarkerIdHash;
+}
+
+impl AsULE for DataMarkerIdHash {
+    type ULE = Self;
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self
+    }
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        unaligned
+    }
+}
+
+// Safe since the ULE type is `self`.
+unsafe impl EqULE for DataMarkerIdHash {}
+
+/// The ID of a data marker.
+///
+/// This is generally a [`DataMarkerIdHash`]. If debug assertions or the `export` Cargo feature
+/// are enabled, this also contains a human-readable string for an improved `Debug` implementation.
+#[derive(Debug, Copy, Clone, Eq)]
+pub struct DataMarkerId {
+    #[cfg(any(feature = "export", debug_assertions))]
+    debug: &'static str,
+    hash: [u8; 8],
+}
+
+impl PartialEq for DataMarkerId {
+    #[inline]
+    fn eq(&self, other: &Self) -> bool {
+        self.hash == other.hash
+    }
+}
+
+impl Ord for DataMarkerId {
+    #[inline]
+    fn cmp(&self, other: &Self) -> core::cmp::Ordering {
+        self.hash.cmp(&other.hash)
+    }
+}
+
+impl PartialOrd for DataMarkerId {
+    #[inline]
+    fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
+        Some(self.hash.cmp(&other.hash))
+    }
+}
+
+impl core::hash::Hash for DataMarkerId {
+    #[inline]
+    fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
+        self.hash.hash(state)
+    }
+}
+
+impl DataMarkerId {
+    #[doc(hidden)]
+    // macro use
+    // Error is a str of the expected character class and the index where it wasn't encountered
+    // The indexing operations in this function have been reviewed in detail and won't panic.
+    pub const fn from_name(name: &'static str) -> Result<Self, (&'static str, usize)> {
+        #![allow(clippy::indexing_slicing)]
+        if !name.as_bytes()[name.len() - 1].is_ascii_digit() {
+            return Err(("[0-9]", name.len()));
+        }
+        let mut i = name.len() - 1;
+        while name.as_bytes()[i - 1].is_ascii_digit() {
+            i -= 1;
+        }
+        if name.as_bytes()[i - 1] != b'V' {
+            return Err(("V", i));
+        }
+
+        let magic = DataMarkerIdHash::LEADING_TAG;
+        let hash = fxhash_32(name.as_bytes()).to_le_bytes();
+
+        Ok(Self {
+            #[cfg(any(feature = "export", debug_assertions))]
+            debug: name,
+            hash: [
+                magic[0], magic[1], magic[2], magic[3], hash[0], hash[1], hash[2], hash[3],
+            ],
+        })
+    }
+
+    /// Gets a platform-independent hash of a [`DataMarkerId`].
+    ///
+    /// The hash is 4 bytes and allows for fast comparison.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use icu_provider::prelude::*;
+    ///
+    /// icu_provider::data_marker!(FooV1, &'static str);
+    ///
+    /// assert_eq!(FooV1::INFO.id.hashed().to_bytes(), [198, 217, 86, 48]);
+    /// ```
+    #[inline]
+    pub const fn hashed(self) -> DataMarkerIdHash {
+        let [.., h1, h2, h3, h4] = self.hash;
+        DataMarkerIdHash([h1, h2, h3, h4])
+    }
+
+    /// Returns the marker name.
+    ///
+    /// For size reasons, this is only available with the `export` Cargo feature.
+    #[cfg(feature = "export")]
+    pub const fn name(self) -> &'static str {
+        self.debug
+    }
+}
+
+/// Used for loading data from a dynamic ICU4X data provider.
+///
+/// A data marker is tightly coupled with the code that uses it to load data at runtime.
+/// Executables can be searched for `DataMarkerInfo` instances to produce optimized data files.
+/// Therefore, users should not generally create DataMarkerInfo instances; they should instead use
+/// the ones exported by a component.
+#[derive(Copy, Clone, PartialEq, Eq)]
+#[non_exhaustive]
+pub struct DataMarkerInfo {
+    /// The ID of this marker.
+    pub id: DataMarkerId,
+    /// Whether this data marker only has a single payload, not keyed by a data identifier.
+    pub is_singleton: bool,
+    /// Whether this data marker uses checksums for integrity purposes.
+    pub has_checksum: bool,
+    /// The fallback to use for this data marker.
+    pub fallback_config: LocaleFallbackConfig,
+    /// The attributes domain for this data marker. This can be used for filtering marker
+    /// attributes during provider export.
+    #[cfg(feature = "export")]
+    pub attributes_domain: &'static str,
+}
+
+impl PartialOrd for DataMarkerInfo {
+    fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
+        Some(self.id.cmp(&other.id))
+    }
+}
+
+impl Ord for DataMarkerInfo {
+    fn cmp(&self, other: &Self) -> core::cmp::Ordering {
+        self.id.cmp(&other.id)
+    }
+}
+
+impl core::hash::Hash for DataMarkerInfo {
+    fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
+        self.id.hash(state)
+    }
+}
+
+impl DataMarkerInfo {
+    /// See [`Default::default`]
+    pub const fn from_id(id: DataMarkerId) -> Self {
+        Self {
+            id,
+            fallback_config: LocaleFallbackConfig::default(),
+            is_singleton: false,
+            has_checksum: false,
+            #[cfg(feature = "export")]
+            attributes_domain: "",
+        }
+    }
+
+    /// Returns [`Ok`] if this data marker matches the argument, or the appropriate error.
+    ///
+    /// Convenience method for data providers that support a single [`DataMarkerInfo`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu_provider::hello_world::*;
+    /// use icu_provider::prelude::*;
+    ///
+    /// icu_provider::data_marker!(
+    ///     DummyV1,
+    ///     <HelloWorldV1 as DynamicDataMarker>::DataStruct
+    /// );
+    ///
+    /// assert!(matches!(
+    ///     HelloWorldV1::INFO.match_marker(HelloWorldV1::INFO),
+    ///     Ok(())
+    /// ));
+    /// assert!(matches!(
+    ///     HelloWorldV1::INFO.match_marker(DummyV1::INFO),
+    ///     Err(DataError {
+    ///         kind: DataErrorKind::MarkerNotFound,
+    ///         ..
+    ///     })
+    /// ));
+    ///
+    /// // The error context contains the argument:
+    /// assert_eq!(
+    ///     HelloWorldV1::INFO
+    ///         .match_marker(DummyV1::INFO)
+    ///         .unwrap_err()
+    ///         .marker,
+    ///     Some(DummyV1::INFO.id)
+    /// );
+    /// ```
+    pub fn match_marker(self, marker: Self) -> Result<(), DataError> {
+        if self == marker {
+            Ok(())
+        } else {
+            Err(DataErrorKind::MarkerNotFound.with_marker(marker))
+        }
+    }
+
+    /// Constructs a [`DataLocale`] for this [`DataMarkerInfo`].
+    pub fn make_locale(self, locale: LocalePreferences) -> DataLocale {
+        if self.fallback_config.priority == LocaleFallbackPriority::Region {
+            locale.to_data_locale_region_priority()
+        } else {
+            locale.to_data_locale_language_priority()
+        }
+    }
+}
+
+/// Creates a data marker.
+///
+/// # Examples
+///
+/// ```
+/// icu_provider::data_marker!(DummyV1, &'static str);
+/// ```
+///
+/// The identifier needs to end with a `V` followed by one or more digits (the version number).
+///
+/// Invalid identifiers are compile-time errors (as [`data_marker!`](crate::data_marker) uses `const`).
+///
+/// ```compile_fail,E0080
+/// icu_provider::data_marker!(Dummy, &'static str);
+/// ```
+#[macro_export] // canonical location is crate root
+macro_rules! data_marker {
+    ($(#[$doc:meta])* $name:ident, $($debug:literal,)? $struct:ty $(, $(#[$meta:meta])* $info_field:ident = $info_val:expr)* $(,)?) => {
+        $(#[$doc])*
+        #[non_exhaustive]
+        pub struct $name;
+        impl $crate::DynamicDataMarker for $name {
+            type DataStruct = $struct;
+        }
+        impl $crate::DataMarker for $name {
+            const INFO: $crate::DataMarkerInfo = {
+                $(
+                    /// ```rust
+                    #[doc = concat!("let ident = \"", stringify!($name), "\";")]
+                    #[doc = concat!("let debug = \"", $debug, "\";")]
+                    /// assert_eq!(
+                    ///     debug.split('/').map(|s| {
+                    ///         let mut b = s.to_ascii_lowercase().into_bytes();
+                    ///         b[0] = b[0].to_ascii_uppercase();
+                    ///         String::from_utf8(b).unwrap()
+                    ///     })
+                    ///     .collect::<Vec<_>>()
+                    ///     .join(""),
+                    ///     ident
+                    /// );
+                    /// ```
+                    #[allow(dead_code)]
+                    struct DebugTest;
+                )?
+                #[allow(unused_mut)]
+                // Force evaluation even if marker is unused
+                let mut info = const { $crate::DataMarkerInfo::from_id(
+                     match $crate::marker::DataMarkerId::from_name(stringify!($name)) {
+                        Ok(path) => path,
+                        #[allow(clippy::panic)] // Const context
+                        Err(_) => panic!(concat!("Invalid marker name: ", stringify!($name))),
+                })};
+                $(
+                    $(#[$meta])*
+                    {info.$info_field = $info_val;}
+                )*
+                info
+            };
+        }
+    }
+}
+
+impl fmt::Debug for DataMarkerInfo {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        #[cfg(any(feature = "export", debug_assertions))]
+        return f.write_str(self.id.debug);
+        #[cfg(not(any(feature = "export", debug_assertions)))]
+        return write!(f, "{:?}", self.id);
+    }
+}
+
+/// A marker for the given `DataStruct`.
+#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
+pub struct ErasedMarker<DataStruct: for<'a> Yokeable<'a>>(PhantomData<DataStruct>);
+impl<DataStruct: for<'a> Yokeable<'a>> DynamicDataMarker for ErasedMarker<DataStruct> {
+    type DataStruct = DataStruct;
+}
+
+#[test]
+fn test_marker_syntax() {
+    // Valid markers:
+    DataMarkerId::from_name("HelloWorldV1").unwrap();
+    DataMarkerId::from_name("HelloWorldFooV1").unwrap();
+    DataMarkerId::from_name("HelloWorldV999").unwrap();
+    DataMarkerId::from_name("Hello485FooV1").unwrap();
+
+    // No version:
+    assert_eq!(
+        DataMarkerId::from_name("HelloWorld"),
+        Err(("[0-9]", "HelloWorld".len()))
+    );
+
+    assert_eq!(
+        DataMarkerId::from_name("HelloWorldV"),
+        Err(("[0-9]", "HelloWorldV".len()))
+    );
+    assert_eq!(
+        DataMarkerId::from_name("HelloWorldVFoo"),
+        Err(("[0-9]", "HelloWorldVFoo".len()))
+    );
+    assert_eq!(
+        DataMarkerId::from_name("HelloWorldV1Foo"),
+        Err(("[0-9]", "HelloWorldV1Foo".len()))
+    );
+}
+
+#[test]
+fn test_id_debug() {
+    assert_eq!(DataMarkerId::from_name("BarV1").unwrap().debug, "BarV1");
+}
+
+#[test]
+fn test_hash_word_32() {
+    assert_eq!(0, fxhash_32(b""));
+    assert_eq!(0xF3051F19, fxhash_32(b"a"));
+    assert_eq!(0x2F9DF119, fxhash_32(b"ab"));
+    assert_eq!(0xCB1D9396, fxhash_32(b"abc"));
+    assert_eq!(0x8628F119, fxhash_32(b"abcd"));
+    assert_eq!(0xBEBDB56D, fxhash_32(b"abcde"));
+    assert_eq!(0x1CE8476D, fxhash_32(b"abcdef"));
+    assert_eq!(0xC0F176A4, fxhash_32(b"abcdefg"));
+    assert_eq!(0x09AB476D, fxhash_32(b"abcdefgh"));
+    assert_eq!(0xB72F5D88, fxhash_32(b"abcdefghi"));
+}
+
+#[test]
+fn test_id_hash() {
+    assert_eq!(
+        DataMarkerId::from_name("BarV1").unwrap().hashed(),
+        DataMarkerIdHash([212, 77, 158, 241]),
+    );
+}
diff --git a/vendor/icu_provider/src/request.rs b/vendor/icu_provider/src/request.rs
new file mode 100644
index 00000000..fe05fa1e
--- /dev/null
+++ b/vendor/icu_provider/src/request.rs
@@ -0,0 +1,368 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use alloc::borrow::Cow;
+#[cfg(feature = "alloc")]
+use alloc::borrow::ToOwned;
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+#[cfg(feature = "alloc")]
+use alloc::string::String;
+#[cfg(feature = "alloc")]
+use core::cmp::Ordering;
+use core::default::Default;
+use core::fmt;
+use core::fmt::Debug;
+use core::hash::Hash;
+use core::ops::Deref;
+#[cfg(feature = "alloc")]
+use zerovec::ule::VarULE;
+
+pub use icu_locale_core::DataLocale;
+
+/// The request type passed into all data provider implementations.
+#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)]
+#[allow(clippy::exhaustive_structs)] // this type is stable
+pub struct DataRequest<'a> {
+    /// The data identifier for which to load data.
+    ///
+    /// If locale fallback is enabled, the resulting data may be from a different identifier
+    /// than the one requested here.
+    pub id: DataIdentifierBorrowed<'a>,
+    /// Metadata that may affect the behavior of the data provider.
+    pub metadata: DataRequestMetadata,
+}
+
+/// Metadata for data requests. This is currently empty, but it may be extended with options
+/// for tuning locale fallback, buffer layout, and so forth.
+#[derive(Default, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+#[non_exhaustive]
+pub struct DataRequestMetadata {
+    /// Silent requests do not log errors. This can be used for exploratory querying, such as fallbacks.
+    pub silent: bool,
+    /// Whether to allow prefix matches for the data marker attributes.
+    pub attributes_prefix_match: bool,
+}
+
+/// The borrowed version of a [`DataIdentifierCow`].
+#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)]
+#[non_exhaustive]
+pub struct DataIdentifierBorrowed<'a> {
+    /// Marker-specific request attributes
+    pub marker_attributes: &'a DataMarkerAttributes,
+    /// The CLDR locale
+    pub locale: &'a DataLocale,
+}
+
+impl fmt::Display for DataIdentifierBorrowed<'_> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        fmt::Display::fmt(self.locale, f)?;
+        if !self.marker_attributes.is_empty() {
+            write!(f, "/{}", self.marker_attributes.as_str())?;
+        }
+        Ok(())
+    }
+}
+
+impl<'a> DataIdentifierBorrowed<'a> {
+    /// Creates a [`DataIdentifierBorrowed`] for a borrowed [`DataLocale`].
+    pub fn for_locale(locale: &'a DataLocale) -> Self {
+        Self {
+            locale,
+            ..Default::default()
+        }
+    }
+
+    /// Creates a [`DataIdentifierBorrowed`] for a borrowed [`DataMarkerAttributes`].
+    pub fn for_marker_attributes(marker_attributes: &'a DataMarkerAttributes) -> Self {
+        Self {
+            marker_attributes,
+            ..Default::default()
+        }
+    }
+
+    /// Creates a [`DataIdentifierBorrowed`] for a borrowed [`DataMarkerAttributes`] and [`DataLocale`].
+    pub fn for_marker_attributes_and_locale(
+        marker_attributes: &'a DataMarkerAttributes,
+        locale: &'a DataLocale,
+    ) -> Self {
+        Self {
+            marker_attributes,
+            locale,
+        }
+    }
+
+    /// Converts this [`DataIdentifierBorrowed`] into a [`DataIdentifierCow<'static>`].
+    #[cfg(feature = "alloc")]
+    pub fn into_owned(self) -> DataIdentifierCow<'static> {
+        DataIdentifierCow {
+            marker_attributes: Cow::Owned(self.marker_attributes.to_owned()),
+            locale: *self.locale,
+        }
+    }
+
+    /// Borrows this [`DataIdentifierBorrowed`] as a [`DataIdentifierCow<'a>`].
+    #[cfg(feature = "alloc")]
+    pub fn as_cow(self) -> DataIdentifierCow<'a> {
+        DataIdentifierCow {
+            marker_attributes: Cow::Borrowed(self.marker_attributes),
+            locale: *self.locale,
+        }
+    }
+}
+
+/// A data identifier identifies a particular version of data, such as "English".
+///
+/// It is a wrapper around a [`DataLocale`] and a [`DataMarkerAttributes`].
+#[derive(Debug, PartialEq, Eq, Hash, Clone)]
+#[non_exhaustive]
+#[cfg(feature = "alloc")]
+pub struct DataIdentifierCow<'a> {
+    /// Marker-specific request attributes
+    pub marker_attributes: Cow<'a, DataMarkerAttributes>,
+    /// The CLDR locale
+    pub locale: DataLocale,
+}
+
+#[cfg(feature = "alloc")]
+impl PartialOrd for DataIdentifierCow<'_> {
+    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+        Some(self.cmp(other))
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl Ord for DataIdentifierCow<'_> {
+    fn cmp(&self, other: &Self) -> Ordering {
+        self.marker_attributes
+            .cmp(&other.marker_attributes)
+            .then_with(|| self.locale.total_cmp(&other.locale))
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl fmt::Display for DataIdentifierCow<'_> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        fmt::Display::fmt(&self.locale, f)?;
+        if !self.marker_attributes.is_empty() {
+            write!(f, "/{}", self.marker_attributes.as_str())?;
+        }
+        Ok(())
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'a> DataIdentifierCow<'a> {
+    /// Borrows this [`DataIdentifierCow`] as a [`DataIdentifierBorrowed<'a>`].
+    pub fn as_borrowed(&'a self) -> DataIdentifierBorrowed<'a> {
+        DataIdentifierBorrowed {
+            marker_attributes: &self.marker_attributes,
+            locale: &self.locale,
+        }
+    }
+
+    /// Creates a [`DataIdentifierCow`] from an owned [`DataLocale`].
+    pub fn from_locale(locale: DataLocale) -> Self {
+        Self {
+            marker_attributes: Cow::Borrowed(DataMarkerAttributes::empty()),
+            locale,
+        }
+    }
+
+    /// Creates a [`DataIdentifierCow`] from a borrowed [`DataMarkerAttributes`].
+    pub fn from_marker_attributes(marker_attributes: &'a DataMarkerAttributes) -> Self {
+        Self {
+            marker_attributes: Cow::Borrowed(marker_attributes),
+            locale: Default::default(),
+        }
+    }
+
+    /// Creates a [`DataIdentifierCow`] from an owned [`DataMarkerAttributes`].
+    pub fn from_marker_attributes_owned(marker_attributes: Box<DataMarkerAttributes>) -> Self {
+        Self {
+            marker_attributes: Cow::Owned(marker_attributes),
+            locale: Default::default(),
+        }
+    }
+
+    /// Creates a [`DataIdentifierCow`] from an owned [`DataMarkerAttributes`] and an owned [`DataLocale`].
+    #[cfg(feature = "alloc")]
+    pub fn from_owned(marker_attributes: Box<DataMarkerAttributes>, locale: DataLocale) -> Self {
+        Self {
+            marker_attributes: Cow::Owned(marker_attributes),
+            locale,
+        }
+    }
+
+    /// Creates a [`DataIdentifierCow`] from a borrowed [`DataMarkerAttributes`] and an owned [`DataLocale`].
+    pub fn from_borrowed_and_owned(
+        marker_attributes: &'a DataMarkerAttributes,
+        locale: DataLocale,
+    ) -> Self {
+        Self {
+            marker_attributes: Cow::Borrowed(marker_attributes),
+            locale,
+        }
+    }
+
+    /// Returns whether this id is equal to the default.
+    pub fn is_unknown(&self) -> bool {
+        self.marker_attributes.is_empty() && self.locale.is_unknown()
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl Default for DataIdentifierCow<'_> {
+    fn default() -> Self {
+        Self {
+            marker_attributes: Cow::Borrowed(Default::default()),
+            locale: Default::default(),
+        }
+    }
+}
+
+/// An additional key to identify data beyond a [`DataLocale`].
+///
+/// The is a loose wrapper around a string, with semantics defined by each [`DataMarker`](crate::DataMarker).
+#[derive(PartialEq, Eq, Ord, PartialOrd, Hash)]
+#[repr(transparent)]
+pub struct DataMarkerAttributes {
+    // Validated to be non-empty ASCII alphanumeric + hyphen + underscore
+    value: str,
+}
+
+impl Default for &DataMarkerAttributes {
+    fn default() -> Self {
+        DataMarkerAttributes::empty()
+    }
+}
+
+impl Deref for DataMarkerAttributes {
+    type Target = str;
+    #[inline]
+    fn deref(&self) -> &Self::Target {
+        &self.value
+    }
+}
+
+impl Debug for DataMarkerAttributes {
+    #[inline]
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        self.value.fmt(f)
+    }
+}
+
+/// Invalid character
+#[derive(Debug)]
+#[non_exhaustive]
+pub struct AttributeParseError;
+
+impl DataMarkerAttributes {
+    /// Safety-usable invariant: validated bytes are ASCII only
+    const fn validate(s: &[u8]) -> Result<(), AttributeParseError> {
+        let mut i = 0;
+        while i < s.len() {
+            #[allow(clippy::indexing_slicing)] // duh
+            if !matches!(s[i], b'a'..=b'z' | b'A'..=b'Z' | b'0'..=b'9' | b'-' | b'_') {
+                return Err(AttributeParseError);
+            }
+            i += 1;
+        }
+        Ok(())
+    }
+
+    /// Creates a borrowed [`DataMarkerAttributes`] from a borrowed string.
+    ///
+    /// Returns an error if the string contains characters other than `[a-zA-Z0-9_\-]`.
+    pub const fn try_from_str(s: &str) -> Result<&Self, AttributeParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// Attempts to create a borrowed [`DataMarkerAttributes`] from a borrowed UTF-8 encoded byte slice.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu_provider::prelude::*;
+    ///
+    /// let bytes = b"long-meter";
+    /// let marker = DataMarkerAttributes::try_from_utf8(bytes).unwrap();
+    /// assert_eq!(marker.to_string(), "long-meter");
+    /// ```
+    ///
+    /// # Errors
+    ///
+    /// Returns an error if the byte slice contains code units other than `[a-zA-Z0-9_\-]`.
+    pub const fn try_from_utf8(code_units: &[u8]) -> Result<&Self, AttributeParseError> {
+        let Ok(()) = Self::validate(code_units) else {
+            return Err(AttributeParseError);
+        };
+
+        // SAFETY: `validate` requires a UTF-8 subset
+        let s = unsafe { core::str::from_utf8_unchecked(code_units) };
+
+        // SAFETY: `Self` has the same layout as `str`
+        Ok(unsafe { &*(s as *const str as *const Self) })
+    }
+
+    /// Creates an owned [`DataMarkerAttributes`] from an owned string.
+    ///
+    /// Returns an error if the string contains characters other than `[a-zA-Z0-9_\-]`.
+    #[cfg(feature = "alloc")]
+    pub fn try_from_string(s: String) -> Result<Box<Self>, AttributeParseError> {
+        let Ok(()) = Self::validate(s.as_bytes()) else {
+            return Err(AttributeParseError);
+        };
+
+        // SAFETY: `Self` has the same layout as `str`
+        Ok(unsafe { core::mem::transmute::<Box<str>, Box<Self>>(s.into_boxed_str()) })
+    }
+
+    /// Creates a borrowed [`DataMarkerAttributes`] from a borrowed string.
+    ///
+    /// Panics if the string contains characters other than `[a-zA-Z0-9_\-]`.
+    pub const fn from_str_or_panic(s: &str) -> &Self {
+        let Ok(r) = Self::try_from_str(s) else {
+            panic!("Invalid marker attribute syntax")
+        };
+        r
+    }
+
+    /// Creates an empty [`DataMarkerAttributes`].
+    pub const fn empty() -> &'static Self {
+        // SAFETY: `Self` has the same layout as `str`
+        unsafe { &*("" as *const str as *const Self) }
+    }
+
+    /// Returns this [`DataMarkerAttributes`] as a `&str`.
+    pub const fn as_str(&self) -> &str {
+        &self.value
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl ToOwned for DataMarkerAttributes {
+    type Owned = Box<Self>;
+    fn to_owned(&self) -> Self::Owned {
+        // SAFETY: `Self` has the same layout as `str`
+        unsafe { core::mem::transmute::<Box<str>, Box<Self>>(self.as_str().to_boxed()) }
+    }
+}
+
+#[test]
+fn test_data_marker_attributes_from_utf8() {
+    let bytes_vec: Vec<&[u8]> = vec![
+        b"long-meter",
+        b"long",
+        b"meter",
+        b"short-meter-second",
+        b"usd",
+    ];
+
+    for bytes in bytes_vec {
+        let marker = DataMarkerAttributes::try_from_utf8(bytes).unwrap();
+        assert_eq!(marker.to_string().as_bytes(), bytes);
+    }
+}
diff --git a/vendor/icu_provider/src/response.rs b/vendor/icu_provider/src/response.rs
new file mode 100644
index 00000000..a42f9542
--- /dev/null
+++ b/vendor/icu_provider/src/response.rs
@@ -0,0 +1,1108 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::buf::BufferMarker;
+use crate::DataError;
+use crate::DataLocale;
+use crate::DynamicDataMarker;
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+use core::fmt::Debug;
+use core::marker::PhantomData;
+#[cfg(feature = "alloc")]
+use core::ops::Deref;
+use yoke::cartable_ptr::CartableOptionPointer;
+use yoke::*;
+
+#[cfg(feature = "alloc")]
+#[cfg(not(feature = "sync"))]
+use alloc::rc::Rc as SelectedRc;
+#[cfg(feature = "alloc")]
+#[cfg(feature = "sync")]
+use alloc::sync::Arc as SelectedRc;
+
+/// A response object containing metadata about the returned data.
+#[derive(Debug, Clone, PartialEq, Default)]
+#[non_exhaustive]
+pub struct DataResponseMetadata {
+    /// The resolved locale of the returned data, if locale fallbacking was performed.
+    pub locale: Option<DataLocale>,
+    /// The format of the buffer for buffer-backed data, if known (for example, JSON).
+    pub buffer_format: Option<crate::buf::BufferFormat>,
+    /// An optional checksum. This can be used to ensure consistency across different markers.
+    pub checksum: Option<u64>,
+}
+
+impl DataResponseMetadata {
+    /// Sets the checksum.
+    pub fn with_checksum(self, checksum: u64) -> Self {
+        Self {
+            checksum: Some(checksum),
+            ..self
+        }
+    }
+}
+
+/// A container for data payloads returned from a data provider.
+///
+/// [`DataPayload`] is built on top of the [`yoke`] framework, which allows for cheap, zero-copy
+/// operations on data via the use of self-references.
+///
+/// The type of the data stored in [`DataPayload`] is determined by the [`DynamicDataMarker`] type parameter.
+///
+/// ## Accessing the data
+///
+/// To get a reference to the data inside [`DataPayload`], use [`DataPayload::get()`]. If you need
+/// to store the data for later use, you need to store the [`DataPayload`] itself, since `get` only
+/// returns a reference with an ephemeral lifetime.
+///
+/// ## Mutating the data
+///
+/// To modify the data stored in a [`DataPayload`], use [`DataPayload::with_mut()`].
+///
+/// ## Transforming the data to a different type
+///
+/// To transform a [`DataPayload`] to a different type backed by the same data store (cart), use
+/// [`DataPayload::map_project()`] or one of its sister methods.
+///
+/// # Cargo feature: `sync`
+///
+/// By default, the payload uses non-concurrent reference counting internally, and hence is neither
+/// [`Sync`] nor [`Send`]; if these traits are required, the `sync` Cargo feature can be enabled.
+///
+/// # Examples
+///
+/// Basic usage, using the `HelloWorldV1` marker:
+///
+/// ```
+/// use icu_provider::hello_world::*;
+/// use icu_provider::prelude::*;
+/// use std::borrow::Cow;
+///
+/// let payload = DataPayload::<HelloWorldV1>::from_owned(HelloWorld {
+///     message: Cow::Borrowed("Demo"),
+/// });
+///
+/// assert_eq!("Demo", payload.get().message);
+/// ```
+pub struct DataPayload<M: DynamicDataMarker>(pub(crate) DataPayloadInner<M>);
+
+/// A container for data payloads with storage for something else.
+///
+/// The type parameter `O` is stored as part of the interior enum, leading to
+/// better stack size optimization. `O` can be as large as the [`DataPayload`]
+/// minus two words without impacting stack size.
+///
+/// # Examples
+///
+/// Create and use DataPayloadOr:
+///
+/// ```
+/// use icu_locale_core::langid;
+/// use icu_provider::hello_world::*;
+/// use icu_provider::prelude::*;
+/// use icu_provider::DataPayloadOr;
+///
+/// let response: DataResponse<HelloWorldV1> = HelloWorldProvider
+///     .load(DataRequest {
+///         id: DataIdentifierBorrowed::for_locale(&langid!("de").into()),
+///         ..Default::default()
+///     })
+///     .expect("Loading should succeed");
+///
+/// let payload_some =
+///     DataPayloadOr::<HelloWorldV1, ()>::from_payload(response.payload);
+/// let payload_none = DataPayloadOr::<HelloWorldV1, ()>::from_other(());
+///
+/// assert_eq!(
+///     payload_some.get(),
+///     Ok(&HelloWorld {
+///         message: "Hallo Welt".into()
+///     })
+/// );
+/// assert_eq!(payload_none.get(), Err(&()));
+/// ```
+///
+/// Stack size comparison:
+///
+/// ```
+/// use core::mem::size_of;
+/// use icu_provider::prelude::*;
+/// use icu_provider::DataPayloadOr;
+///
+/// const W: usize = size_of::<usize>();
+///
+/// // Data struct is 3 words:
+/// icu_provider::data_marker!(SampleV1, [usize; 3]);
+///
+/// // DataPayload adds a word for a total of 4 words:
+/// assert_eq!(W * 4, size_of::<DataPayload<SampleV1>>());
+///
+/// // Option<DataPayload> balloons to 5 words:
+/// assert_eq!(W * 5, size_of::<Option<DataPayload<SampleV1>>>());
+///
+/// // But, using DataPayloadOr is the same size as DataPayload:
+/// assert_eq!(W * 4, size_of::<DataPayloadOr<SampleV1, ()>>());
+///
+/// // The largest optimized Other type is two words smaller than the DataPayload:
+/// assert_eq!(W * 4, size_of::<DataPayloadOr<SampleV1, [usize; 1]>>());
+/// assert_eq!(W * 4, size_of::<DataPayloadOr<SampleV1, [usize; 2]>>());
+/// assert_eq!(W * 5, size_of::<DataPayloadOr<SampleV1, [usize; 3]>>());
+/// ```
+pub struct DataPayloadOr<M: DynamicDataMarker, O>(pub(crate) DataPayloadOrInner<M, O>);
+
+pub(crate) enum DataPayloadInner<M: DynamicDataMarker> {
+    Yoke(Yoke<M::DataStruct, CartableOptionPointer<CartInner>>),
+    StaticRef(&'static M::DataStruct),
+}
+
+pub(crate) enum DataPayloadOrInner<M: DynamicDataMarker, O> {
+    Yoke(Yoke<M::DataStruct, CartableOptionPointer<CartInner>>),
+    Inner(DataPayloadOrInnerInner<M, O>),
+}
+
+pub(crate) enum DataPayloadOrInnerInner<M: DynamicDataMarker, O> {
+    StaticRef(&'static M::DataStruct),
+    Other(O),
+}
+
+/// The type of the "cart" that is used by [`DataPayload`].
+///
+/// This type is public but the inner cart type is private. To create a
+/// [`Yoke`] with this cart, use [`Cart::try_make_yoke`]. Then, convert
+/// it to a [`DataPayload`] with [`DataPayload::from_yoked_buffer`].
+#[derive(Clone, Debug)]
+#[allow(clippy::redundant_allocation)] // false positive, it's cheaper to wrap an existing Box in an Rc than to reallocate a huge Rc
+pub struct Cart(#[allow(dead_code)] CartInner);
+
+/// The actual cart type (private typedef).
+#[cfg(feature = "alloc")]
+pub(crate) type CartInner = SelectedRc<Box<[u8]>>;
+#[cfg(not(feature = "alloc"))]
+pub(crate) type CartInner = &'static ();
+
+// Safety: Rc, Arc, and () are CloneableCart, and our impl delegates.
+unsafe impl yoke::CloneableCart for Cart {}
+
+#[cfg(feature = "alloc")]
+impl Deref for Cart {
+    type Target = Box<[u8]>;
+    fn deref(&self) -> &Self::Target {
+        &self.0
+    }
+}
+// Safety: both Rc and Arc are StableDeref, and our impl delegates.
+#[cfg(feature = "alloc")]
+unsafe impl stable_deref_trait::StableDeref for Cart {}
+
+impl Cart {
+    #[cfg(feature = "alloc")]
+    /// Creates a `Yoke<Y, Option<Cart>>` from owned bytes by applying `f`.
+    pub fn try_make_yoke<Y, F, E>(cart: Box<[u8]>, f: F) -> Result<Yoke<Y, Option<Self>>, E>
+    where
+        for<'a> Y: Yokeable<'a>,
+        F: FnOnce(&[u8]) -> Result<<Y as Yokeable>::Output, E>,
+    {
+        Yoke::try_attach_to_cart(SelectedRc::new(cart), |b| f(b))
+            // Safety: The cart is only wrapped, no data is leaked
+            .map(|yoke| unsafe { yoke.replace_cart(Cart) })
+            .map(Yoke::wrap_cart_in_option)
+    }
+
+    /// Helper function to convert `Yoke<Y, Option<Cart>>` to `Yoke<Y, Option<CartInner>>`.
+    #[inline]
+    pub(crate) fn unwrap_cart<Y>(yoke: Yoke<Y, Option<Cart>>) -> Yoke<Y, Option<CartInner>>
+    where
+        for<'a> Y: Yokeable<'a>,
+    {
+        // Safety: `Cart` has one field and we are removing it from the newtype,
+        // and we are preserving it in the new cart, unwrapping it from the newtype.
+        unsafe { yoke.replace_cart(|option_cart| option_cart.map(|cart| cart.0)) }
+    }
+}
+
+impl<M> Debug for DataPayload<M>
+where
+    M: DynamicDataMarker,
+    for<'a> &'a <M::DataStruct as Yokeable<'a>>::Output: Debug,
+{
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        self.get().fmt(f)
+    }
+}
+
+impl<M, O> Debug for DataPayloadOr<M, O>
+where
+    M: DynamicDataMarker,
+    for<'a> &'a <M::DataStruct as Yokeable<'a>>::Output: Debug,
+    O: Debug,
+{
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        self.get()
+            .map(|v| Debug::fmt(&v, f))
+            .unwrap_or_else(|v| Debug::fmt(v, f))
+    }
+}
+
+/// Cloning a DataPayload is generally a cheap operation.
+/// See notes in the `Clone` impl for [`Yoke`].
+///
+/// # Examples
+///
+/// ```no_run
+/// use icu_provider::hello_world::*;
+/// use icu_provider::prelude::*;
+///
+/// let resp1: DataPayload<HelloWorldV1> = todo!();
+/// let resp2 = resp1.clone();
+/// ```
+impl<M> Clone for DataPayload<M>
+where
+    M: DynamicDataMarker,
+    for<'a> <M::DataStruct as Yokeable<'a>>::Output: Clone,
+{
+    fn clone(&self) -> Self {
+        Self(match &self.0 {
+            DataPayloadInner::Yoke(yoke) => DataPayloadInner::Yoke(yoke.clone()),
+            DataPayloadInner::StaticRef(r) => DataPayloadInner::StaticRef(*r),
+        })
+    }
+}
+
+impl<M, O> Clone for DataPayloadOr<M, O>
+where
+    M: DynamicDataMarker,
+    for<'a> <M::DataStruct as Yokeable<'a>>::Output: Clone,
+    O: Clone,
+{
+    fn clone(&self) -> Self {
+        Self(match &self.0 {
+            DataPayloadOrInner::Yoke(yoke) => DataPayloadOrInner::Yoke(yoke.clone()),
+            DataPayloadOrInner::Inner(DataPayloadOrInnerInner::StaticRef(r)) => {
+                DataPayloadOrInner::Inner(DataPayloadOrInnerInner::StaticRef(*r))
+            }
+            DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other(o)) => {
+                DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other(o.clone()))
+            }
+        })
+    }
+}
+
+impl<M> PartialEq for DataPayload<M>
+where
+    M: DynamicDataMarker,
+    for<'a> <M::DataStruct as Yokeable<'a>>::Output: PartialEq,
+{
+    fn eq(&self, other: &Self) -> bool {
+        self.get() == other.get()
+    }
+}
+impl<M, O> PartialEq for DataPayloadOr<M, O>
+where
+    M: DynamicDataMarker,
+    for<'a> <M::DataStruct as Yokeable<'a>>::Output: PartialEq,
+    O: Eq,
+{
+    fn eq(&self, other: &Self) -> bool {
+        match (self.get(), other.get()) {
+            (Ok(x), Ok(y)) => x == y,
+            (Err(x), Err(y)) => x == y,
+            _ => false,
+        }
+    }
+}
+
+impl<M> Eq for DataPayload<M>
+where
+    M: DynamicDataMarker,
+    for<'a> <M::DataStruct as Yokeable<'a>>::Output: Eq,
+{
+}
+
+impl<M, O> Eq for DataPayloadOr<M, O>
+where
+    M: DynamicDataMarker,
+    for<'a> <M::DataStruct as Yokeable<'a>>::Output: Eq,
+    O: Eq,
+{
+}
+
+#[test]
+fn test_clone_eq() {
+    use crate::hello_world::*;
+    let p1 = DataPayload::<HelloWorldV1>::from_static_str("Demo");
+    #[allow(clippy::redundant_clone)]
+    let p2 = p1.clone();
+    assert_eq!(p1, p2);
+
+    let p1 = DataPayloadOr::<HelloWorldV1, usize>::from_payload(p1);
+    #[allow(clippy::redundant_clone)]
+    let p2 = p1.clone();
+    assert_eq!(p1, p2);
+
+    let p3 = DataPayloadOr::<HelloWorldV1, usize>::from_other(555);
+    #[allow(clippy::redundant_clone)]
+    let p4 = p3.clone();
+    assert_eq!(p3, p4);
+
+    let p5 = DataPayloadOr::<HelloWorldV1, usize>::from_other(666);
+    assert_ne!(p3, p5);
+    assert_ne!(p4, p5);
+
+    assert_ne!(p1, p3);
+    assert_ne!(p1, p4);
+    assert_ne!(p1, p5);
+    assert_ne!(p2, p3);
+    assert_ne!(p2, p4);
+    assert_ne!(p2, p5);
+}
+
+impl<M> DataPayload<M>
+where
+    M: DynamicDataMarker,
+{
+    /// Convert a fully owned (`'static`) data struct into a DataPayload.
+    ///
+    /// This constructor creates `'static` payloads.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu_provider::hello_world::*;
+    /// use icu_provider::prelude::*;
+    /// use std::borrow::Cow;
+    ///
+    /// let local_struct = HelloWorld {
+    ///     message: Cow::Owned("example".to_owned()),
+    /// };
+    ///
+    /// let payload = DataPayload::<HelloWorldV1>::from_owned(local_struct.clone());
+    ///
+    /// assert_eq!(payload.get(), &local_struct);
+    /// ```
+    #[inline]
+    pub fn from_owned(data: M::DataStruct) -> Self {
+        Self(DataPayloadInner::Yoke(
+            Yoke::new_owned(data).convert_cart_into_option_pointer(),
+        ))
+    }
+
+    /// Construct a [`DataPayload`] from a static reference.
+    ///
+    /// This is mainly used by databake.
+    #[inline]
+    pub const fn from_static_ref(data: &'static M::DataStruct) -> Self {
+        Self(DataPayloadInner::StaticRef(data))
+    }
+
+    /// Mutate the data contained in this DataPayload.
+    ///
+    /// For safety, all mutation operations must take place within a helper function that cannot
+    /// borrow data from the surrounding context.
+    ///
+    /// # Examples
+    ///
+    /// Basic usage:
+    ///
+    /// ```
+    /// use icu_provider::hello_world::HelloWorldV1;
+    /// use icu_provider::prelude::*;
+    ///
+    /// let mut payload = DataPayload::<HelloWorldV1>::from_static_str("Hello");
+    ///
+    /// payload.with_mut(|s| s.message.to_mut().push_str(" World"));
+    ///
+    /// assert_eq!("Hello World", payload.get().message);
+    /// ```
+    ///
+    /// To transfer data from the context into the data struct, use the `move` keyword:
+    ///
+    /// ```
+    /// use icu_provider::hello_world::HelloWorldV1;
+    /// use icu_provider::prelude::*;
+    ///
+    /// let mut payload = DataPayload::<HelloWorldV1>::from_static_str("Hello");
+    ///
+    /// let suffix = " World";
+    /// payload.with_mut(move |s| s.message.to_mut().push_str(suffix));
+    ///
+    /// assert_eq!("Hello World", payload.get().message);
+    /// ```
+    pub fn with_mut<'a, F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut <M::DataStruct as Yokeable<'a>>::Output),
+        M::DataStruct: zerofrom::ZeroFrom<'static, M::DataStruct>,
+    {
+        if let DataPayloadInner::StaticRef(r) = self.0 {
+            self.0 = DataPayloadInner::Yoke(
+                Yoke::new_owned(zerofrom::ZeroFrom::zero_from(r))
+                    .convert_cart_into_option_pointer(),
+            );
+        }
+        match &mut self.0 {
+            DataPayloadInner::Yoke(yoke) => yoke.with_mut(f),
+            _ => unreachable!(),
+        }
+    }
+
+    /// Borrows the underlying data.
+    ///
+    /// This function should be used like `Deref` would normally be used. For more information on
+    /// why DataPayload cannot implement `Deref`, see the `yoke` crate.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use icu_provider::hello_world::HelloWorldV1;
+    /// use icu_provider::prelude::*;
+    ///
+    /// let payload = DataPayload::<HelloWorldV1>::from_static_str("Demo");
+    ///
+    /// assert_eq!("Demo", payload.get().message);
+    /// ```
+    #[inline]
+    #[allow(clippy::needless_lifetimes)]
+    pub fn get<'a>(&'a self) -> &'a <M::DataStruct as Yokeable<'a>>::Output {
+        match &self.0 {
+            DataPayloadInner::Yoke(yoke) => yoke.get(),
+            DataPayloadInner::StaticRef(r) => Yokeable::transform(*r),
+        }
+    }
+
+    /// Borrows the underlying data statically if possible.
+    ///
+    /// This will succeed if [`DataPayload`] is constructed with [`DataPayload::from_static_ref`], which is used by
+    /// baked providers.
+    #[inline]
+    pub fn get_static(&self) -> Option<&'static <M::DataStruct as Yokeable<'static>>::Output> {
+        match &self.0 {
+            DataPayloadInner::Yoke(_) => None,
+            DataPayloadInner::StaticRef(r) => Some(Yokeable::transform(*r)),
+        }
+    }
+
+    /// Maps `DataPayload<M>` to `DataPayload<M2>` by projecting it with [`Yoke::map_project`].
+    ///
+    /// This is accomplished by a function that takes `M`'s data type and returns `M2`'s data
+    /// type. The function takes a second argument which should be ignored. For more details,
+    /// see [`Yoke::map_project()`].
+    ///
+    /// The standard [`DataPayload::map_project()`] function moves `self` and cannot capture any
+    /// data from its context. Use one of the sister methods if you need these capabilities:
+    ///
+    /// - [`DataPayload::map_project_cloned()`] if you don't have ownership of `self`
+    /// - [`DataPayload::try_map_project()`] to bubble up an error
+    /// - [`DataPayload::try_map_project_cloned()`] to do both of the above
+    ///
+    /// # Examples
+    ///
+    /// Map from `HelloWorld` to a `Cow<str>` containing just the message:
+    ///
+    /// ```
+    /// use icu_provider::hello_world::*;
+    /// use icu_provider::prelude::*;
+    /// use std::borrow::Cow;
+    ///
+    /// // A custom marker type is required when using `map_project`. The DataStruct should be the
+    /// // target type, and the Cart should correspond to the type being transformed.
+    ///
+    /// struct HelloWorldV1MessageMarker;
+    /// impl DynamicDataMarker for HelloWorldV1MessageMarker {
+    ///     type DataStruct = Cow<'static, str>;
+    /// }
+    ///
+    /// let p1: DataPayload<HelloWorldV1> = DataPayload::from_owned(HelloWorld {
+    ///     message: Cow::Borrowed("Hello World"),
+    /// });
+    ///
+    /// assert_eq!("Hello World", p1.get().message);
+    ///
+    /// let p2: DataPayload<HelloWorldV1MessageMarker> = p1.map_project(|obj, _| obj.message);
+    ///
+    /// // Note: at this point, p1 has been moved.
+    /// assert_eq!("Hello World", p2.get());
+    /// ```
+    #[allow(clippy::type_complexity)]
+    pub fn map_project<M2, F>(self, f: F) -> DataPayload<M2>
+    where
+        M2: DynamicDataMarker,
+        F: for<'a> FnOnce(
+            <M::DataStruct as Yokeable<'a>>::Output,
+            PhantomData<&'a ()>,
+        ) -> <M2::DataStruct as Yokeable<'a>>::Output,
+        M::DataStruct: zerofrom::ZeroFrom<'static, M::DataStruct>,
+    {
+        DataPayload(DataPayloadInner::Yoke(
+            match self.0 {
+                DataPayloadInner::Yoke(yoke) => yoke,
+                DataPayloadInner::StaticRef(r) => Yoke::new_owned(zerofrom::ZeroFrom::zero_from(r))
+                    .convert_cart_into_option_pointer(),
+            }
+            .map_project(f),
+        ))
+    }
+
+    /// Version of [`DataPayload::map_project()`] that borrows `self` instead of moving `self`.
+    ///
+    /// # Examples
+    ///
+    /// Same example as above, but this time, do not move out of `p1`:
+    ///
+    /// ```
+    /// // Same imports and definitions as above
+    /// # use icu_provider::hello_world::*;
+    /// # use icu_provider::prelude::*;
+    /// # use std::borrow::Cow;
+    /// # struct HelloWorldV1MessageMarker;
+    /// # impl DynamicDataMarker for HelloWorldV1MessageMarker {
+    /// #     type DataStruct = Cow<'static, str>;
+    /// # }
+    ///
+    /// let p1: DataPayload<HelloWorldV1> = DataPayload::from_owned(HelloWorld {
+    ///     message: Cow::Borrowed("Hello World"),
+    /// });
+    ///
+    /// assert_eq!("Hello World", p1.get().message);
+    ///
+    /// let p2: DataPayload<HelloWorldV1MessageMarker> =
+    ///     p1.map_project_cloned(|obj, _| obj.message.clone());
+    ///
+    /// // Note: p1 is still valid.
+    /// assert_eq!(p1.get().message, *p2.get());
+    /// ```
+    #[allow(clippy::type_complexity)]
+    pub fn map_project_cloned<'this, M2, F>(&'this self, f: F) -> DataPayload<M2>
+    where
+        M2: DynamicDataMarker,
+        F: for<'a> FnOnce(
+            &'this <M::DataStruct as Yokeable<'a>>::Output,
+            PhantomData<&'a ()>,
+        ) -> <M2::DataStruct as Yokeable<'a>>::Output,
+    {
+        DataPayload(DataPayloadInner::Yoke(match &self.0 {
+            DataPayloadInner::Yoke(yoke) => yoke.map_project_cloned(f),
+            DataPayloadInner::StaticRef(r) => {
+                let output: <M2::DataStruct as Yokeable<'static>>::Output =
+                    f(Yokeable::transform(*r), PhantomData);
+                // Safety: <M2::Yokeable as Yokeable<'static>>::Output is the same type as M2::Yokeable;
+                // we're going from 'static to 'static, however in a generic context it's not
+                // clear to the compiler that that is the case. We have to use the unsafe make API to do this.
+                let yokeable: M2::DataStruct = unsafe { M2::DataStruct::make(output) };
+                Yoke::new_owned(yokeable).convert_cart_into_option_pointer()
+            }
+        }))
+    }
+
+    /// Version of [`DataPayload::map_project()`] that bubbles up an error from `f`.
+    ///
+    /// # Examples
+    ///
+    /// Same example as above, but bubble up an error:
+    ///
+    /// ```
+    /// // Same imports and definitions as above
+    /// # use icu_provider::hello_world::*;
+    /// # use icu_provider::prelude::*;
+    /// # use std::borrow::Cow;
+    /// # struct HelloWorldV1MessageMarker;
+    /// # impl DynamicDataMarker for HelloWorldV1MessageMarker {
+    /// #     type DataStruct = Cow<'static, str>;
+    /// # }
+    ///
+    /// let p1: DataPayload<HelloWorldV1> = DataPayload::from_owned(HelloWorld {
+    ///     message: Cow::Borrowed("Hello World"),
+    /// });
+    ///
+    /// assert_eq!("Hello World", p1.get().message);
+    ///
+    /// let string_to_append = "Extra";
+    /// let p2: DataPayload<HelloWorldV1MessageMarker> =
+    ///     p1.try_map_project(|mut obj, _| {
+    ///         if obj.message.is_empty() {
+    ///             return Err("Example error");
+    ///         }
+    ///         obj.message.to_mut().push_str(string_to_append);
+    ///         Ok(obj.message)
+    ///     })?;
+    ///
+    /// assert_eq!("Hello WorldExtra", p2.get());
+    /// # Ok::<(), &'static str>(())
+    /// ```
+    #[allow(clippy::type_complexity)]
+    pub fn try_map_project<M2, F, E>(self, f: F) -> Result<DataPayload<M2>, E>
+    where
+        M2: DynamicDataMarker,
+        F: for<'a> FnOnce(
+            <M::DataStruct as Yokeable<'a>>::Output,
+            PhantomData<&'a ()>,
+        ) -> Result<<M2::DataStruct as Yokeable<'a>>::Output, E>,
+        M::DataStruct: zerofrom::ZeroFrom<'static, M::DataStruct>,
+    {
+        Ok(DataPayload(DataPayloadInner::Yoke(
+            match self.0 {
+                DataPayloadInner::Yoke(yoke) => yoke,
+                DataPayloadInner::StaticRef(r) => Yoke::new_owned(zerofrom::ZeroFrom::zero_from(r))
+                    .convert_cart_into_option_pointer(),
+            }
+            .try_map_project(f)?,
+        )))
+    }
+
+    /// Version of [`DataPayload::map_project_cloned()`] that  bubbles up an error from `f`.
+    ///
+    /// # Examples
+    ///
+    /// Same example as above, but bubble up an error:
+    ///
+    /// ```
+    /// // Same imports and definitions as above
+    /// # use icu_provider::hello_world::*;
+    /// # use icu_provider::prelude::*;
+    /// # use std::borrow::Cow;
+    /// # struct HelloWorldV1MessageMarker;
+    /// # impl DynamicDataMarker for HelloWorldV1MessageMarker {
+    /// #     type DataStruct = Cow<'static, str>;
+    /// # }
+    ///
+    /// let p1: DataPayload<HelloWorldV1> = DataPayload::from_owned(HelloWorld {
+    ///     message: Cow::Borrowed("Hello World"),
+    /// });
+    ///
+    /// assert_eq!("Hello World", p1.get().message);
+    ///
+    /// let string_to_append = "Extra";
+    /// let p2: DataPayload<HelloWorldV1MessageMarker> = p1
+    ///     .try_map_project_cloned(|obj, _| {
+    ///         if obj.message.is_empty() {
+    ///             return Err("Example error");
+    ///         }
+    ///         let mut message = obj.message.clone();
+    ///         message.to_mut().push_str(string_to_append);
+    ///         Ok(message)
+    ///     })?;
+    ///
+    /// // Note: p1 is still valid, but the values no longer equal.
+    /// assert_ne!(p1.get().message, *p2.get());
+    /// assert_eq!("Hello WorldExtra", p2.get());
+    /// # Ok::<(), &'static str>(())
+    /// ```
+    #[allow(clippy::type_complexity)]
+    pub fn try_map_project_cloned<'this, M2, F, E>(&'this self, f: F) -> Result<DataPayload<M2>, E>
+    where
+        M2: DynamicDataMarker,
+        F: for<'a> FnOnce(
+            &'this <M::DataStruct as Yokeable<'a>>::Output,
+            PhantomData<&'a ()>,
+        ) -> Result<<M2::DataStruct as Yokeable<'a>>::Output, E>,
+    {
+        Ok(DataPayload(DataPayloadInner::Yoke(match &self.0 {
+            DataPayloadInner::Yoke(yoke) => yoke.try_map_project_cloned(f)?,
+            DataPayloadInner::StaticRef(r) => {
+                let output: <M2::DataStruct as Yokeable<'static>>::Output =
+                    f(Yokeable::transform(*r), PhantomData)?;
+                // Safety: <M2::Yokeable as Yokeable<'static>>::Output is the same type as M2::Yokeable,
+                // and `output` is `'static` so there are no lifetimes to manage for `make()`
+                Yoke::new_owned(unsafe { M2::DataStruct::make(output) })
+                    .convert_cart_into_option_pointer()
+            }
+        })))
+    }
+
+    /// Convert between two [`DynamicDataMarker`] types that are compatible with each other
+    /// with compile-time type checking.
+    ///
+    /// This happens if they both have the same [`DynamicDataMarker::DataStruct`] type.
+    ///
+    /// Can be used to erase the marker of a data payload in cases where multiple markers correspond
+    /// to the same data struct.
+    ///
+    /// For runtime dynamic casting, use [`DataPayload::dynamic_cast_mut()`].
+    ///
+    /// # Examples
+    ///
+    /// ```no_run
+    /// use icu_provider::hello_world::*;
+    /// use icu_provider::prelude::*;
+    ///
+    /// struct CustomHelloWorldV1;
+    /// impl DynamicDataMarker for CustomHelloWorldV1 {
+    ///     type DataStruct = HelloWorld<'static>;
+    /// }
+    ///
+    /// let hello_world: DataPayload<HelloWorldV1> = todo!();
+    /// let custom: DataPayload<CustomHelloWorldV1> = hello_world.cast();
+    /// ```
+    #[inline]
+    pub fn cast<M2>(self) -> DataPayload<M2>
+    where
+        M2: DynamicDataMarker<DataStruct = M::DataStruct>,
+    {
+        DataPayload(match self.0 {
+            DataPayloadInner::Yoke(yoke) => DataPayloadInner::Yoke(yoke),
+            DataPayloadInner::StaticRef(r) => DataPayloadInner::StaticRef(r),
+        })
+    }
+
+    /// Convert between two [`DynamicDataMarker`] types that are compatible with each other
+    /// with compile-time type checking.
+    ///
+    /// This happens if they both have the same [`DynamicDataMarker::DataStruct`] type.
+    ///
+    /// Can be used to erase the marker of a data payload in cases where multiple markers correspond
+    /// to the same data struct.
+    #[inline]
+    pub fn cast_ref<M2>(&self) -> &DataPayload<M2>
+    where
+        M2: DynamicDataMarker<DataStruct = M::DataStruct>,
+    {
+        // SAFETY: As seen in the implementation of `cast`, the struct is the same, it's just the generic that changes.
+        unsafe { core::mem::transmute(self) }
+    }
+
+    /// Convert a [`DataPayload`] to one of the same type with runtime type checking.
+    ///
+    /// Primarily useful to convert from a generic to a concrete marker type.
+    ///
+    /// If the `M2` type argument does not match the true marker type, a `DataError` is returned.
+    ///
+    /// For compile-time static casting, use [`DataPayload::cast()`].
+    ///
+    /// # Examples
+    ///
+    /// Short-circuit a data request request based on the marker, returning
+    /// a result from a different data provider:
+    ///
+    /// ```
+    /// use core::any::TypeId;
+    /// use icu_locale_core::locale;
+    /// use icu_provider::hello_world::*;
+    /// use icu_provider::prelude::*;
+    /// use icu_provider_adapters::empty::EmptyDataProvider;
+    /// use std::borrow::Cow;
+    ///
+    /// struct MyForkingProvider<P0, P1> {
+    ///     fallback_provider: P0,
+    ///     hello_world_provider: P1,
+    /// }
+    ///
+    /// impl<M, P0, P1> DataProvider<M> for MyForkingProvider<P0, P1>
+    /// where
+    ///     M: DataMarker,
+    ///     P0: DataProvider<M>,
+    ///     P1: DataProvider<HelloWorldV1>,
+    /// {
+    ///     #[inline]
+    ///     fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+    ///         if TypeId::of::<HelloWorldV1>() == TypeId::of::<M>() {
+    ///             let response = DataProvider::<HelloWorldV1>::load(
+    ///                 &self.hello_world_provider,
+    ///                 req,
+    ///             )?;
+    ///             Ok(DataResponse {
+    ///                 metadata: response.metadata,
+    ///                 payload: response.payload.dynamic_cast()?,
+    ///             })
+    ///         } else {
+    ///             self.fallback_provider.load(req)
+    ///         }
+    ///     }
+    /// }
+    ///
+    /// let provider = MyForkingProvider {
+    ///     fallback_provider: EmptyDataProvider::new(),
+    ///     hello_world_provider: HelloWorldProvider,
+    /// };
+    ///
+    /// let formatter =
+    ///     HelloWorldFormatter::try_new_unstable(&provider, locale!("de").into())
+    ///         .unwrap();
+    ///
+    /// // This succeeds because the data was loaded from HelloWorldProvider
+    /// // rather than the empty fallback provider.
+    /// assert_eq!(formatter.format_to_string(), "Hallo Welt");
+    /// ```
+    pub fn dynamic_cast<M2>(self) -> Result<DataPayload<M2>, DataError>
+    where
+        M2: DynamicDataMarker,
+    {
+        let mut option_self = Some(self);
+        let mut option_out = None::<DataPayload<M2>>;
+        if let Some(x) = (&mut option_out as &mut dyn core::any::Any).downcast_mut() {
+            core::mem::swap(&mut option_self, x);
+            debug_assert!(option_out.is_some());
+            if let Some(out) = option_out {
+                return Ok(out);
+            }
+        }
+        Err(DataError::for_type::<M2>().with_str_context(core::any::type_name::<M>()))
+    }
+
+    /// Convert a mutable reference of a [`DataPayload`] to another mutable reference
+    /// of the same type with runtime type checking.
+    ///
+    /// Primarily useful to convert from a generic to a concrete marker type.
+    ///
+    /// If the `M2` type argument does not match the true marker type, a `DataError` is returned.
+    ///
+    /// For compile-time static casting, use [`DataPayload::cast()`].
+    ///
+    /// # Examples
+    ///
+    /// Change the results of a particular request based on marker:
+    ///
+    /// ```
+    /// use icu_locale_core::locale;
+    /// use icu_provider::hello_world::*;
+    /// use icu_provider::prelude::*;
+    ///
+    /// struct MyWrapper<P> {
+    ///     inner: P,
+    /// }
+    ///
+    /// impl<M, P> DataProvider<M> for MyWrapper<P>
+    /// where
+    ///     M: DataMarker,
+    ///     P: DataProvider<M>,
+    /// {
+    ///     #[inline]
+    ///     fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+    ///         let mut res = self.inner.load(req)?;
+    ///         let mut cast_result =
+    ///             res.payload.dynamic_cast_mut::<HelloWorldV1>();
+    ///         if let Ok(ref mut concrete_payload) = cast_result {
+    ///             // Add an emoji to the hello world message
+    ///             concrete_payload.with_mut(|data| {
+    ///                 data.message.to_mut().insert_str(0, "✨ ");
+    ///             });
+    ///         }
+    ///         Ok(res)
+    ///     }
+    /// }
+    ///
+    /// let provider = MyWrapper {
+    ///     inner: HelloWorldProvider,
+    /// };
+    /// let formatter =
+    ///     HelloWorldFormatter::try_new_unstable(&provider, locale!("de").into())
+    ///         .unwrap();
+    ///
+    /// assert_eq!(formatter.format_to_string(), "✨ Hallo Welt");
+    /// ```
+    #[inline]
+    pub fn dynamic_cast_mut<M2>(&mut self) -> Result<&mut DataPayload<M2>, DataError>
+    where
+        M2: DynamicDataMarker,
+    {
+        let this: &mut dyn core::any::Any = self;
+        if let Some(this) = this.downcast_mut() {
+            Ok(this)
+        } else {
+            Err(DataError::for_type::<M2>().with_str_context(core::any::type_name::<M>()))
+        }
+    }
+}
+
+impl DataPayload<BufferMarker> {
+    /// Converts an owned byte buffer into a `DataPayload<BufferMarker>`.
+    #[cfg(feature = "alloc")]
+    pub fn from_owned_buffer(buffer: Box<[u8]>) -> Self {
+        let yoke = Yoke::attach_to_cart(SelectedRc::new(buffer), |b| &**b)
+            .wrap_cart_in_option()
+            .convert_cart_into_option_pointer();
+        Self(DataPayloadInner::Yoke(yoke))
+    }
+
+    /// Converts a yoked byte buffer into a `DataPayload<BufferMarker>`.
+    pub fn from_yoked_buffer(yoke: Yoke<&'static [u8], Option<Cart>>) -> Self {
+        let yoke = Cart::unwrap_cart(yoke);
+        Self(DataPayloadInner::Yoke(
+            yoke.convert_cart_into_option_pointer(),
+        ))
+    }
+
+    /// Converts a static byte buffer into a `DataPayload<BufferMarker>`.
+    pub fn from_static_buffer(buffer: &'static [u8]) -> Self {
+        Self(DataPayloadInner::Yoke(
+            Yoke::new_owned(buffer).convert_cart_into_option_pointer(),
+        ))
+    }
+}
+
+impl<M> Default for DataPayload<M>
+where
+    M: DynamicDataMarker,
+    M::DataStruct: Default,
+{
+    fn default() -> Self {
+        Self::from_owned(Default::default())
+    }
+}
+
+impl<M, O> DataPayloadOr<M, O>
+where
+    M: DynamicDataMarker,
+{
+    /// Creates a [`DataPayloadOr`] from a [`DataPayload`].
+    #[inline]
+    pub fn from_payload(payload: DataPayload<M>) -> Self {
+        match payload.0 {
+            DataPayloadInner::Yoke(yoke) => Self(DataPayloadOrInner::Yoke(yoke)),
+            DataPayloadInner::StaticRef(r) => Self(DataPayloadOrInner::Inner(
+                DataPayloadOrInnerInner::StaticRef(r),
+            )),
+        }
+    }
+
+    /// Creates a [`DataPayloadOr`] from the other type `O`.
+    #[inline]
+    pub fn from_other(other: O) -> Self {
+        Self(DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other(
+            other,
+        )))
+    }
+
+    /// Returns whether this object represents a [`DataPayload`].
+    #[inline]
+    pub fn is_payload(&self) -> bool {
+        match &self.0 {
+            DataPayloadOrInner::Yoke(_) => true,
+            DataPayloadOrInner::Inner(DataPayloadOrInnerInner::StaticRef(_)) => true,
+            DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other(_)) => false,
+        }
+    }
+
+    /// Gets the value from this [`DataPayload`] as `Ok` or the other type as `Err`.
+    #[allow(clippy::needless_lifetimes)]
+    #[inline]
+    pub fn get<'a>(&'a self) -> Result<&'a <M::DataStruct as Yokeable<'a>>::Output, &'a O> {
+        match &self.0 {
+            DataPayloadOrInner::Yoke(yoke) => Ok(yoke.get()),
+            DataPayloadOrInner::Inner(DataPayloadOrInnerInner::StaticRef(r)) => {
+                Ok(Yokeable::transform(*r))
+            }
+            DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other(o)) => Err(o),
+        }
+    }
+
+    /// Consumes this [`DataPayloadOr`], returning either the wrapped
+    /// [`DataPayload`] or the other type.
+    #[inline]
+    pub fn into_inner(self) -> Result<DataPayload<M>, O> {
+        match self.0 {
+            DataPayloadOrInner::Yoke(yoke) => Ok(DataPayload(DataPayloadInner::Yoke(yoke))),
+            DataPayloadOrInner::Inner(DataPayloadOrInnerInner::StaticRef(r)) => {
+                Ok(DataPayload(DataPayloadInner::StaticRef(r)))
+            }
+            DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other(o)) => Err(o),
+        }
+    }
+}
+
+impl<M> DataPayloadOr<M, ()>
+where
+    M: DynamicDataMarker,
+{
+    /// Convenience function to return the other type with value `()`
+    #[inline]
+    pub fn none() -> Self {
+        Self::from_other(())
+    }
+
+    /// Convenience function to return `Some` or `None` for other type `()`
+    #[allow(clippy::needless_lifetimes)]
+    #[inline]
+    pub fn get_option<'a>(&'a self) -> Option<&'a <M::DataStruct as Yokeable<'a>>::Output> {
+        self.get().ok()
+    }
+}
+
+/// A response object containing an object as payload and metadata about it.
+#[allow(clippy::exhaustive_structs)] // this type is stable
+pub struct DataResponse<M>
+where
+    M: DynamicDataMarker,
+{
+    /// Metadata about the returned object.
+    pub metadata: DataResponseMetadata,
+
+    /// The object itself
+    pub payload: DataPayload<M>,
+}
+
+impl<M> DataResponse<M>
+where
+    M: DynamicDataMarker,
+{
+    /// Convert between two [`DynamicDataMarker`] types that are compatible with each other
+    /// with compile-time type checking.
+    ///
+    /// This happens if they both have the same [`DynamicDataMarker::DataStruct`] type.
+    ///
+    /// Can be used to erase the marker of a data payload in cases where multiple markers correspond
+    /// to the same data struct.
+    ///
+    /// For runtime dynamic casting, use [`DataPayload::dynamic_cast_mut()`].
+    #[inline]
+    pub fn cast<M2>(self) -> DataResponse<M2>
+    where
+        M2: DynamicDataMarker<DataStruct = M::DataStruct>,
+    {
+        DataResponse {
+            metadata: self.metadata,
+            payload: self.payload.cast(),
+        }
+    }
+}
+
+impl<M> Debug for DataResponse<M>
+where
+    M: DynamicDataMarker,
+    for<'a> &'a <M::DataStruct as Yokeable<'a>>::Output: Debug,
+{
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        write!(
+            f,
+            "DataResponse {{ metadata: {:?}, payload: {:?} }}",
+            self.metadata, self.payload
+        )
+    }
+}
+
+/// Cloning a DataResponse is generally a cheap operation.
+/// See notes in the `Clone` impl for [`Yoke`].
+///
+/// # Examples
+///
+/// ```no_run
+/// use icu_provider::hello_world::*;
+/// use icu_provider::prelude::*;
+///
+/// let resp1: DataResponse<HelloWorldV1> = todo!();
+/// let resp2 = resp1.clone();
+/// ```
+impl<M> Clone for DataResponse<M>
+where
+    M: DynamicDataMarker,
+    for<'a> <M::DataStruct as Yokeable<'a>>::Output: Clone,
+{
+    fn clone(&self) -> Self {
+        Self {
+            metadata: self.metadata.clone(),
+            payload: self.payload.clone(),
+        }
+    }
+}
+
+#[test]
+fn test_debug() {
+    use crate::hello_world::*;
+    use crate::prelude::*;
+    let resp = HelloWorldProvider
+        .load(DataRequest {
+            id: DataIdentifierBorrowed::for_locale(&icu_locale_core::locale!("en").into()),
+            ..Default::default()
+        })
+        .unwrap();
+    assert_eq!("DataResponse { metadata: DataResponseMetadata { locale: None, buffer_format: None, checksum: Some(1234) }, payload: HelloWorld { message: \"Hello World\" } }", format!("{resp:?}"));
+}
diff --git a/vendor/icu_provider/src/serde_borrow_de_utils.rs b/vendor/icu_provider/src/serde_borrow_de_utils.rs
new file mode 100644
index 00000000..d614bc9e
--- /dev/null
+++ b/vendor/icu_provider/src/serde_borrow_de_utils.rs
@@ -0,0 +1,82 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use alloc::borrow::Cow;
+use serde::de::Deserializer;
+use serde::Deserialize;
+
+#[derive(Deserialize)]
+#[serde(transparent)]
+// Cows fail to borrow in some situations (array, option), but structs of Cows don't.
+#[allow(clippy::exhaustive_structs)] // newtype
+#[derive(Debug)]
+pub struct CowWrap<'data>(#[serde(borrow)] pub Cow<'data, str>);
+
+#[derive(Deserialize)]
+#[serde(transparent)]
+// Cows fail to borrow in some situations (array, option), but structs of Cows don't.
+#[allow(clippy::exhaustive_structs)] // newtype
+#[derive(Debug)]
+pub struct CowBytesWrap<'data>(#[serde(borrow)] pub Cow<'data, [u8]>);
+
+pub fn array_of_cow<'de, D, const N: usize>(deserializer: D) -> Result<[Cow<'de, str>; N], D::Error>
+where
+    D: Deserializer<'de>,
+    [CowWrap<'de>; N]: Deserialize<'de>,
+{
+    <[CowWrap<'de>; N]>::deserialize(deserializer).map(|array| array.map(|wrap| wrap.0))
+}
+
+pub fn option_of_cow<'de, D>(deserializer: D) -> Result<Option<Cow<'de, str>>, D::Error>
+where
+    D: Deserializer<'de>,
+{
+    <Option<CowWrap<'de>>>::deserialize(deserializer).map(|opt| opt.map(|wrap| wrap.0))
+}
+
+pub fn tuple_of_cow<'de, D>(deserializer: D) -> Result<(Cow<'de, str>, Cow<'de, str>), D::Error>
+where
+    D: Deserializer<'de>,
+    (CowWrap<'de>, CowWrap<'de>): Deserialize<'de>,
+{
+    <(CowWrap<'de>, CowWrap<'de>)>::deserialize(deserializer).map(|x| (x.0 .0, x.1 .0))
+}
+
+#[test]
+fn test_option() {
+    #[derive(Debug, PartialEq, serde::Serialize, serde::Deserialize)]
+    struct Demo<'s>(#[serde(borrow, deserialize_with = "option_of_cow")] Option<Cow<'s, str>>);
+
+    let data_orig = Demo(Some("Hello world".into()));
+    let json = serde_json::to_string(&data_orig).expect("serialize");
+    let data_new = serde_json::from_str::<Demo>(&json).expect("deserialize");
+    assert_eq!(data_orig, data_new);
+    assert!(matches!(data_new.0, Some(Cow::Borrowed(_))));
+}
+
+#[test]
+fn test_tuple() {
+    #[derive(Debug, PartialEq, serde::Serialize, serde::Deserialize)]
+    struct Demo<'s>(
+        #[serde(borrow, deserialize_with = "tuple_of_cow")] (Cow<'s, str>, Cow<'s, str>),
+    );
+
+    let data_orig = Demo(("Hello world".into(), "Hello earth".into()));
+    let json = serde_json::to_string(&data_orig).expect("serialize");
+    let data_new = serde_json::from_str::<Demo>(&json).expect("deserialize");
+    assert_eq!(data_orig, data_new);
+    assert!(matches!(data_new.0, (Cow::Borrowed(_), Cow::Borrowed(_))));
+}
+
+#[test]
+fn test_array() {
+    #[derive(Debug, PartialEq, serde::Serialize, serde::Deserialize)]
+    struct Demo<'s>(#[serde(borrow, deserialize_with = "array_of_cow")] [Cow<'s, str>; 1]);
+
+    let data_orig = Demo(["Hello world".into()]);
+    let json = serde_json::to_string(&data_orig).expect("serialize");
+    let data_new = serde_json::from_str::<Demo>(&json).expect("deserialize");
+    assert_eq!(data_orig, data_new);
+    assert!(matches!(data_new.0, [Cow::Borrowed(_)]));
+}
diff --git a/vendor/icu_provider/src/varule_traits.rs b/vendor/icu_provider/src/varule_traits.rs
new file mode 100644
index 00000000..bb531a83
--- /dev/null
+++ b/vendor/icu_provider/src/varule_traits.rs
@@ -0,0 +1,123 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use zerovec::ule::VarULE;
+
+#[cfg(feature = "alloc")]
+use zerovec::{maps::ZeroMapKV, ZeroMap2d};
+
+/// A trait that associates a [`VarULE`] type with a data struct.
+///
+/// Some data structs can be represented compactly as a single [`VarULE`],
+/// such as `str` or a packed pattern. This trait allows for data providers
+/// to use optimizations for such types.
+///
+/// ❗ Not all data structs benefit from this optimization. It works best when the
+/// data struct is multiplied across a large number of data marker attributes.
+///
+/// Both [`MaybeAsVarULE`] and [`MaybeEncodeAsVarULE`] should be implemented
+/// on all data structs. The [`data_struct!`](crate::data_struct) macro provides an impl.
+pub trait MaybeAsVarULE {
+    /// The [`VarULE`] type for this data struct, or `[()]`
+    /// if it cannot be represented as [`VarULE`].
+    type EncodedStruct: ?Sized + VarULE;
+}
+
+/// Export-only trait associated with [`MaybeAsVarULE`]. See that trait
+/// for additional details.
+///
+/// ✨ *Enabled with the `export` Cargo feature.*
+#[cfg(feature = "export")]
+pub trait MaybeEncodeAsVarULE: MaybeAsVarULE {
+    /// Returns the [`MaybeAsVarULE::EncodedStruct`] that represents this data struct,
+    /// or `None` if the data struct does not support this representation.
+    fn maybe_encode_as_varule(&self) -> Option<&Self::EncodedStruct>;
+}
+
+/// Implements required traits on data structs, such as [`MaybeEncodeAsVarULE`].
+#[macro_export] // canonical location is crate root
+macro_rules! data_struct {
+    (<$generic:ident: $bound:tt> $ty:path $(, $(#[$attr:meta])*)?) => {
+        impl<$generic: $bound> $crate::ule::MaybeAsVarULE for $ty {
+            type EncodedStruct = [()];
+        }
+        $($(#[$attr])*)?
+        impl<$generic: $bound> $crate::ule::MaybeEncodeAsVarULE for $ty {
+            fn maybe_encode_as_varule(&self) -> Option<&Self::EncodedStruct> {
+                None
+            }
+        }
+    };
+    ($ty:path $(, $(#[$attr:meta])*)?) => {
+        impl $crate::ule::MaybeAsVarULE for $ty {
+            type EncodedStruct = [()];
+        }
+        $($(#[$attr])*)?
+        impl $crate::ule::MaybeEncodeAsVarULE for $ty {
+            fn maybe_encode_as_varule(&self) -> Option<&Self::EncodedStruct> {
+                None
+            }
+        }
+    };
+    (
+        $ty:ty,
+        varule: $varule:ty,
+        $(#[$attr:meta])*
+        encode_as_varule: $encode_as_varule:expr
+    ) => {
+        impl<'data> $crate::ule::MaybeAsVarULE for $ty {
+            type EncodedStruct = $varule;
+        }
+        $(#[$attr])*
+        impl<'data> $crate::ule::MaybeEncodeAsVarULE for $ty {
+            fn maybe_encode_as_varule(&self) -> Option<&Self::EncodedStruct> {
+                // Workaround for <https://rust-lang.github.io/rfcs/3216-closure-lifetime-binder.html>
+                fn bind_lifetimes<F>(f: F) -> F where F: for<'data> Fn(&'data $ty) -> &'data $varule { f }
+                Some(bind_lifetimes($encode_as_varule)(self))
+            }
+        }
+    };
+}
+
+//=== Standard impls ===//
+
+#[cfg(feature = "alloc")]
+impl<'a, K0, K1, V> MaybeAsVarULE for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    type EncodedStruct = [()];
+}
+
+#[cfg(feature = "alloc")]
+#[cfg(feature = "export")]
+impl<'a, K0, K1, V> MaybeEncodeAsVarULE for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    fn maybe_encode_as_varule(&self) -> Option<&Self::EncodedStruct> {
+        None
+    }
+}
+
+impl<T, const N: usize> MaybeAsVarULE for [T; N] {
+    type EncodedStruct = [()];
+}
+
+#[cfg(feature = "export")]
+impl<T, const N: usize> MaybeEncodeAsVarULE for [T; N] {
+    fn maybe_encode_as_varule(&self) -> Option<&Self::EncodedStruct> {
+        None
+    }
+}
diff --git a/vendor/idna/.cargo-checksum.json b/vendor/idna/.cargo-checksum.json
index 4f0508d7..6b93ecca 100644
--- a/vendor/idna/.cargo-checksum.json
+++ b/vendor/idna/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"8be30a9748419aed461ce333e260ff4a461bf8166dfc7768307f32fcfc4fbea1","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"76e972ac0f4ddb116e86e10100132a783931a596e7b9872eaa31be15cd4d751d","benches/all.rs":"e734b9c9092ed66986725f86cfe90f3756cfddb058af308b796ba494f9beefc2","src/IdnaMappingTable.txt":"87d6553a4b86bc49dcade38bf26b745cd81800eb8af295dc3fb99b4729eaea38","src/lib.rs":"e7fd80070a7e52dfd1e9fe785bf092eddc9fb421fd0f9a1ba1c2189b8d40d3ed","src/make_uts46_mapping_table.py":"917055fa841f813de2bcf79cc79b595da3d5551559ee768db8660ab77cb26c34","src/punycode.rs":"3697674a70647d200853ac9d1910ffcb4796534332fe328de16c4bb1283e2ec1","src/uts46.rs":"4eee036b6448489002ac5190f3ac28834a4caa063c7cc77474ea6256199619ae","src/uts46_mapping_table.rs":"942fff78147c61da942f5f3a7ff4e90f9d7a00a29285733ac3fc3357eb2ed06f","tests/IdnaTestV2.txt":"c6f3778b0545fd150c8063286c7f5adc901e16557eddccc3751213646d07593d","tests/bad_punycode_tests.json":"ff0a15479ed2cb08f7b4b39465160da66d1ac7575e5d76990c17e7b76cb5e0f5","tests/punycode.rs":"0b0f315a8b124c1275a423a69169b13b19bcd7e9e6a5158bd0d642d01c6db145","tests/punycode_tests.json":"3d4ac0cf25984c37b9ce197f5df680a0136f728fb8ec82bc76624e42139eb3a8","tests/tests.rs":"d205a2bfb29dfee73e014faebd3207a55ef0d40121e6dbd52f5d611b37ac111e","tests/unit.rs":"be025a7d9bab3bd1ce134c87f9d848269e157b31ca5ba0ea03426c1ac736b69e","tests/uts46.rs":"06c97bf7dc20f5372b542fa46922d6dd63fe15e0aa34d799d08df9e3a241aa21"},"package":"634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"}
\ No newline at end of file
+{"files":{"Cargo.toml":"f24a386a071c661e10acc366022adc8278d4f2ca8899d3b50b83e965d3933d00","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"b38f11f6096706e6de553dabe2a7ed142d59b6fa8c97e290c67496154745cdd5","README.md":"f6154ca8c00570260dc1ecfb758d0b606b320b07a7b5f30edaf689dbaf846e8a","benches/all.rs":"cb99d454de05c3a72df82d2fca230757595ad25493e790eeb93a44ad43725cb8","src/deprecated.rs":"1f1954f0314a3ccb631422947a258f42fad7e6939df6ba25057464e2bdd8ae18","src/lib.rs":"13d06c4bcb530498b5414d948e0b08c987000eb7a0a8c441f5c25b116298633e","src/punycode.rs":"0cc6fa84989898ccf6de0a665a287d7488a6eba4b178bea065d311ecabd81604","src/uts46.rs":"9726647c01f315215eca25b7cb706929ff829269d4143de06b4f4718538b6640","tests/IdnaTestV2.txt":"ffcf59f6e97d765caa5ac8315e9511ba3b42955a554cbc431e4c016f20d25ca9","tests/bad_punycode_tests.json":"ff0a15479ed2cb08f7b4b39465160da66d1ac7575e5d76990c17e7b76cb5e0f5","tests/deprecated.rs":"98296b0b421bec106042c5c6697c4fa6aa72bf88b6adec29156d88f967046da2","tests/punycode.rs":"75fa73b6429ccacaeb5d72fab0b927cdf9f2173a9fc5fb366697bf7002b73921","tests/punycode_tests.json":"50859b828d14d5eeba5ab930de25fb72a35310a0b46f421f65d64c7c3e54d08a","tests/tests.rs":"ecee59f0b0be27ba1e7b24bb449c681024253d0275065f0f0e258e7ec2977d12","tests/unit.rs":"7e450599b52900baa51ea26ff0cb55a830456f60642985abbc87ec671a91b8e1","tests/unitbis.rs":"545259b767cd045aed01c1515c3b092d1b3f6b3366ce88d1593a2c8e3ffcd2af","tests/uts46.rs":"52438bea2dcf086718d7a78cd48d603e83a89d38f696e6b29baca5f9b7673e03"},"package":"3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"}
\ No newline at end of file
diff --git a/vendor/idna/Cargo.toml b/vendor/idna/Cargo.toml
index 5d97e9ea..03819f03 100644
--- a/vendor/idna/Cargo.toml
+++ b/vendor/idna/Cargo.toml
@@ -11,41 +11,70 @@
 
 [package]
 edition = "2018"
-rust-version = "1.51"
+rust-version = "1.57"
 name = "idna"
-version = "0.5.0"
+version = "1.1.0"
 authors = ["The rust-url developers"]
+build = false
+autolib = false
+autobins = false
+autoexamples = false
 autotests = false
+autobenches = false
 description = "IDNA (Internationalizing Domain Names in Applications) and Punycode."
-categories = ["no_std"]
+readme = "README.md"
+keywords = [
+    "no-std",
+    "web",
+    "http",
+]
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/servo/rust-url/"
 
 [package.metadata.docs.rs]
 rustdoc-args = ["--generate-link-to-definition"]
 
+[features]
+alloc = []
+compiled_data = ["idna_adapter/compiled_data"]
+default = [
+    "std",
+    "compiled_data",
+]
+std = ["alloc"]
+
 [lib]
+name = "idna"
+path = "src/lib.rs"
 doctest = false
 
 [[test]]
 name = "tests"
+path = "tests/tests.rs"
 harness = false
 
 [[test]]
 name = "unit"
+path = "tests/unit.rs"
+
+[[test]]
+name = "unitbis"
+path = "tests/unitbis.rs"
 
 [[bench]]
 name = "all"
+path = "benches/all.rs"
 harness = false
 
-[dependencies.unicode-bidi]
-version = "0.3.10"
-features = ["hardcoded-data"]
-default-features = false
+[dependencies.idna_adapter]
+version = "1"
+
+[dependencies.smallvec]
+version = "1.13.1"
+features = ["const_generics"]
 
-[dependencies.unicode-normalization]
-version = "0.1.22"
-default-features = false
+[dependencies.utf8_iter]
+version = "1.0.4"
 
 [dev-dependencies.assert_matches]
 version = "1.3"
@@ -58,12 +87,3 @@ version = "1.0"
 
 [dev-dependencies.tester]
 version = "0.9"
-
-[features]
-alloc = []
-default = ["std"]
-std = [
-    "alloc",
-    "unicode-bidi/std",
-    "unicode-normalization/std",
-]
diff --git a/vendor/idna/LICENSE-MIT b/vendor/idna/LICENSE-MIT
index 51d5dc7e..b4ae4819 100644
--- a/vendor/idna/LICENSE-MIT
+++ b/vendor/idna/LICENSE-MIT
@@ -1,4 +1,4 @@
-Copyright (c) 2013-2022 The rust-url developers
+Copyright (c) 2013-2025 The rust-url developers
 
 Permission is hereby granted, free of charge, to any
 person obtaining a copy of this software and associated
diff --git a/vendor/idna/README.md b/vendor/idna/README.md
new file mode 100644
index 00000000..ef22374e
--- /dev/null
+++ b/vendor/idna/README.md
@@ -0,0 +1,46 @@
+# `idna`
+
+IDNA library for Rust implementing [UTS 46: Unicode IDNA Compatibility Processing](https://www.unicode.org/reports/tr46/) as parametrized by the [WHATWG URL Standard](https://url.spec.whatwg.org/#idna).
+
+## What it does
+
+* An implementation of UTS 46 is provided, with configurable ASCII deny list (e.g. STD3 or WHATWG rules).
+* A callback mechanism is provided for pluggable logic for deciding if a label is deemed potentially too misleading to render as Unicode in a user interface.
+* Errors are marked as U+FFFD REPLACEMENT CHARACTERs in Unicode output so that locations of errors may be illustrated to the user.
+
+## What it does not do
+
+* There is no default/sample policy provided for the callback mechanism mentioned above.
+* Only UTS 46 is implemented: There is no API to request strictly IDNA 2008 only or strictly IDNA 2003 only.
+* There is no API for categorizing errors beyond there being an error.
+* Checks that are configurable in UTS 46 but that the WHATWG URL Standard always set a particular way (regardless of the _beStrict_ flag in the URL Standard) cannot be configured (with the exception of the old deprecated API supporting transitional processing).
+
+## Usage
+
+Apps that need to prepare a hostname for usage in protocols are likely to only need the top-level function `domain_to_ascii_cow` with `AsciiDenyList::URL` as the second argument. Note that this rejects IPv6 addresses, so before this, you need to check if the first byte of the input is `b'['` and, if it is, treat the input as an IPv6 address instead.
+
+Apps that need to display host names to the user should use `uts46::Uts46::to_user_interface`. The _ToUnicode_ operation is rarely appropriate for direct application usage.
+
+## Cargo features
+
+* `alloc` - For future proofing. Currently always required. Currently, the crate internal may allocate heap but for typical inputs do not allocate on the heap (apart from the output `String` when applicable).
+* `compiled_data` - For future proofing. Currently always required. (Passed through to ICU4X.)
+* `std` - Adds `impl std::error::Error for Errors {}` (and implies `alloc`).
+* By default, all of the above are enabled.
+
+## Alternative Unicode back ends
+
+By default, `idna` uses [ICU4X](https://github.com/unicode-org/icu4x/) as its Unicode back end. If you wish to opt for different tradeoffs between correctness, run-time performance, binary size, compile time, and MSRV, please see the [README of the latest version of the `idna_adapter` crate](https://docs.rs/crate/idna_adapter/latest) for how to opt into a different Unicode back end.
+
+## Breaking changes since 0.5.0
+
+* Stricter IDNA 2008 restrictions are no longer supported. Attempting to enable them panics immediately. UTS 46 allows all the names that IDNA 2008 allows, and when transitional processing is disabled, they resolve the same way. There are additional names that IDNA 2008 disallows but UTS 46 maps to names that IDNA 2008 allows (notably, input is mapped to fold-case output). UTS 46 also allows symbols that were allowed in IDNA 2003 as well as newer symbols that are allowed according to the same principle. (Earlier versions of this crate allowed rejecting such symbols. Rejecting characters that UTS 46 maps to IDNA 2008-permitted characters wasn't supported in earlier versions, either.)
+* `domain_to_ascii_strict` now performs the _CheckHyphens_ check (matching previous documentation).
+* The ContextJ rules are now implemented and always enabled, even when using the old deprecated API, so input that fails those rules is rejected.
+* The `Idna::to_ascii_inner` method has been removed. It didn't make sense as a public method, since callers were unable to figure out if there were errors. (A GitHub search found no callers for this method.)
+* Punycode labels whose decoding does not yield any non-ASCII characters are now treated as being in error.
+* When turning off default cargo features, the cargo feature `compiled_data` needs to be explicitly enabled.
+
+## License
+
+MIT OR Apache-2.0 for the code. Additionally, there is a test data file, IdnaTestV2.txt, under Unicode-3.0.
diff --git a/vendor/idna/benches/all.rs b/vendor/idna/benches/all.rs
index 157e4af2..c779adb6 100644
--- a/vendor/idna/benches/all.rs
+++ b/vendor/idna/benches/all.rs
@@ -1,3 +1,5 @@
+#![allow(deprecated)]
+
 #[macro_use]
 extern crate bencher;
 extern crate idna;
@@ -11,6 +13,12 @@ fn to_unicode_puny_label(bench: &mut Bencher) {
     bench.iter(|| config.to_unicode(black_box(encoded)));
 }
 
+fn to_ascii_already_puny_label(bench: &mut Bencher) {
+    let encoded = "abc.xn--mgbcm";
+    let config = Config::default();
+    bench.iter(|| config.to_ascii(black_box(encoded)));
+}
+
 fn to_unicode_ascii(bench: &mut Bencher) {
     let encoded = "example.com";
     let config = Config::default();
@@ -41,13 +49,68 @@ fn to_ascii_merged(bench: &mut Bencher) {
     bench.iter(|| config.to_ascii(black_box(encoded)));
 }
 
+fn to_ascii_cow_plain(bench: &mut Bencher) {
+    let encoded = "example.com".as_bytes();
+    bench.iter(|| idna::domain_to_ascii_cow(black_box(encoded), idna::AsciiDenyList::URL));
+}
+
+fn to_ascii_cow_hyphen(bench: &mut Bencher) {
+    let encoded = "hyphenated-example.com".as_bytes();
+    bench.iter(|| idna::domain_to_ascii_cow(black_box(encoded), idna::AsciiDenyList::URL));
+}
+
+fn to_ascii_cow_leading_digit(bench: &mut Bencher) {
+    let encoded = "1test.example".as_bytes();
+    bench.iter(|| idna::domain_to_ascii_cow(black_box(encoded), idna::AsciiDenyList::URL));
+}
+
+fn to_ascii_cow_unicode_mixed(bench: &mut Bencher) {
+    let encoded = "مثال.example".as_bytes();
+    bench.iter(|| idna::domain_to_ascii_cow(black_box(encoded), idna::AsciiDenyList::URL));
+}
+
+fn to_ascii_cow_punycode_mixed(bench: &mut Bencher) {
+    let encoded = "xn--mgbh0fb.example".as_bytes();
+    bench.iter(|| idna::domain_to_ascii_cow(black_box(encoded), idna::AsciiDenyList::URL));
+}
+
+fn to_ascii_cow_unicode_ltr(bench: &mut Bencher) {
+    let encoded = "නම.උදාහරණ".as_bytes();
+    bench.iter(|| idna::domain_to_ascii_cow(black_box(encoded), idna::AsciiDenyList::URL));
+}
+
+fn to_ascii_cow_punycode_ltr(bench: &mut Bencher) {
+    let encoded = "xn--r0co.xn--ozc8dl2c3bxd".as_bytes();
+    bench.iter(|| idna::domain_to_ascii_cow(black_box(encoded), idna::AsciiDenyList::URL));
+}
+
+fn to_ascii_cow_unicode_rtl(bench: &mut Bencher) {
+    let encoded = "الاسم.مثال".as_bytes();
+    bench.iter(|| idna::domain_to_ascii_cow(black_box(encoded), idna::AsciiDenyList::URL));
+}
+
+fn to_ascii_cow_punycode_rtl(bench: &mut Bencher) {
+    let encoded = "xn--mgba0b1dh.xn--mgbh0fb".as_bytes();
+    bench.iter(|| idna::domain_to_ascii_cow(black_box(encoded), idna::AsciiDenyList::URL));
+}
+
 benchmark_group!(
     benches,
     to_unicode_puny_label,
     to_unicode_ascii,
     to_unicode_merged_label,
     to_ascii_puny_label,
+    to_ascii_already_puny_label,
     to_ascii_simple,
     to_ascii_merged,
+    to_ascii_cow_plain,
+    to_ascii_cow_hyphen,
+    to_ascii_cow_leading_digit,
+    to_ascii_cow_unicode_mixed,
+    to_ascii_cow_punycode_mixed,
+    to_ascii_cow_unicode_ltr,
+    to_ascii_cow_punycode_ltr,
+    to_ascii_cow_unicode_rtl,
+    to_ascii_cow_punycode_rtl,
 );
 benchmark_main!(benches);
diff --git a/vendor/idna/src/IdnaMappingTable.txt b/vendor/idna/src/IdnaMappingTable.txt
deleted file mode 100644
index 59950884..00000000
--- a/vendor/idna/src/IdnaMappingTable.txt
+++ /dev/null
@@ -1,8727 +0,0 @@
-# IdnaMappingTable.txt
-# Date: 2019-11-07, 13:44:35 GMT
-# © 2019 Unicode®, Inc.
-# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
-# Unicode IDNA Compatible Preprocessing for UTS #46
-# Version: 13.0.0
-#
-# For documentation and usage, see http://www.unicode.org/reports/tr46
-#
-0000..002C    ; disallowed_STD3_valid                  # 1.1  <control-0000>..COMMA
-002D..002E    ; valid                                  # 1.1  HYPHEN-MINUS..FULL STOP
-002F          ; disallowed_STD3_valid                  # 1.1  SOLIDUS
-0030..0039    ; valid                                  # 1.1  DIGIT ZERO..DIGIT NINE
-003A..0040    ; disallowed_STD3_valid                  # 1.1  COLON..COMMERCIAL AT
-0041          ; mapped                 ; 0061          # 1.1  LATIN CAPITAL LETTER A
-0042          ; mapped                 ; 0062          # 1.1  LATIN CAPITAL LETTER B
-0043          ; mapped                 ; 0063          # 1.1  LATIN CAPITAL LETTER C
-0044          ; mapped                 ; 0064          # 1.1  LATIN CAPITAL LETTER D
-0045          ; mapped                 ; 0065          # 1.1  LATIN CAPITAL LETTER E
-0046          ; mapped                 ; 0066          # 1.1  LATIN CAPITAL LETTER F
-0047          ; mapped                 ; 0067          # 1.1  LATIN CAPITAL LETTER G
-0048          ; mapped                 ; 0068          # 1.1  LATIN CAPITAL LETTER H
-0049          ; mapped                 ; 0069          # 1.1  LATIN CAPITAL LETTER I
-004A          ; mapped                 ; 006A          # 1.1  LATIN CAPITAL LETTER J
-004B          ; mapped                 ; 006B          # 1.1  LATIN CAPITAL LETTER K
-004C          ; mapped                 ; 006C          # 1.1  LATIN CAPITAL LETTER L
-004D          ; mapped                 ; 006D          # 1.1  LATIN CAPITAL LETTER M
-004E          ; mapped                 ; 006E          # 1.1  LATIN CAPITAL LETTER N
-004F          ; mapped                 ; 006F          # 1.1  LATIN CAPITAL LETTER O
-0050          ; mapped                 ; 0070          # 1.1  LATIN CAPITAL LETTER P
-0051          ; mapped                 ; 0071          # 1.1  LATIN CAPITAL LETTER Q
-0052          ; mapped                 ; 0072          # 1.1  LATIN CAPITAL LETTER R
-0053          ; mapped                 ; 0073          # 1.1  LATIN CAPITAL LETTER S
-0054          ; mapped                 ; 0074          # 1.1  LATIN CAPITAL LETTER T
-0055          ; mapped                 ; 0075          # 1.1  LATIN CAPITAL LETTER U
-0056          ; mapped                 ; 0076          # 1.1  LATIN CAPITAL LETTER V
-0057          ; mapped                 ; 0077          # 1.1  LATIN CAPITAL LETTER W
-0058          ; mapped                 ; 0078          # 1.1  LATIN CAPITAL LETTER X
-0059          ; mapped                 ; 0079          # 1.1  LATIN CAPITAL LETTER Y
-005A          ; mapped                 ; 007A          # 1.1  LATIN CAPITAL LETTER Z
-005B..0060    ; disallowed_STD3_valid                  # 1.1  LEFT SQUARE BRACKET..GRAVE ACCENT
-0061..007A    ; valid                                  # 1.1  LATIN SMALL LETTER A..LATIN SMALL LETTER Z
-007B..007F    ; disallowed_STD3_valid                  # 1.1  LEFT CURLY BRACKET..<control-007F>
-0080..009F    ; disallowed                             # 1.1  <control-0080>..<control-009F>
-00A0          ; disallowed_STD3_mapped ; 0020          # 1.1  NO-BREAK SPACE
-00A1..00A7    ; valid                  ;      ; NV8    # 1.1  INVERTED EXCLAMATION MARK..SECTION SIGN
-00A8          ; disallowed_STD3_mapped ; 0020 0308     # 1.1  DIAERESIS
-00A9          ; valid                  ;      ; NV8    # 1.1  COPYRIGHT SIGN
-00AA          ; mapped                 ; 0061          # 1.1  FEMININE ORDINAL INDICATOR
-00AB..00AC    ; valid                  ;      ; NV8    # 1.1  LEFT-POINTING DOUBLE ANGLE QUOTATION MARK..NOT SIGN
-00AD          ; ignored                                # 1.1  SOFT HYPHEN
-00AE          ; valid                  ;      ; NV8    # 1.1  REGISTERED SIGN
-00AF          ; disallowed_STD3_mapped ; 0020 0304     # 1.1  MACRON
-00B0..00B1    ; valid                  ;      ; NV8    # 1.1  DEGREE SIGN..PLUS-MINUS SIGN
-00B2          ; mapped                 ; 0032          # 1.1  SUPERSCRIPT TWO
-00B3          ; mapped                 ; 0033          # 1.1  SUPERSCRIPT THREE
-00B4          ; disallowed_STD3_mapped ; 0020 0301     # 1.1  ACUTE ACCENT
-00B5          ; mapped                 ; 03BC          # 1.1  MICRO SIGN
-00B6          ; valid                  ;      ; NV8    # 1.1  PILCROW SIGN
-00B7          ; valid                                  # 1.1  MIDDLE DOT
-00B8          ; disallowed_STD3_mapped ; 0020 0327     # 1.1  CEDILLA
-00B9          ; mapped                 ; 0031          # 1.1  SUPERSCRIPT ONE
-00BA          ; mapped                 ; 006F          # 1.1  MASCULINE ORDINAL INDICATOR
-00BB          ; valid                  ;      ; NV8    # 1.1  RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-00BC          ; mapped                 ; 0031 2044 0034 #1.1  VULGAR FRACTION ONE QUARTER
-00BD          ; mapped                 ; 0031 2044 0032 #1.1  VULGAR FRACTION ONE HALF
-00BE          ; mapped                 ; 0033 2044 0034 #1.1  VULGAR FRACTION THREE QUARTERS
-00BF          ; valid                  ;      ; NV8    # 1.1  INVERTED QUESTION MARK
-00C0          ; mapped                 ; 00E0          # 1.1  LATIN CAPITAL LETTER A WITH GRAVE
-00C1          ; mapped                 ; 00E1          # 1.1  LATIN CAPITAL LETTER A WITH ACUTE
-00C2          ; mapped                 ; 00E2          # 1.1  LATIN CAPITAL LETTER A WITH CIRCUMFLEX
-00C3          ; mapped                 ; 00E3          # 1.1  LATIN CAPITAL LETTER A WITH TILDE
-00C4          ; mapped                 ; 00E4          # 1.1  LATIN CAPITAL LETTER A WITH DIAERESIS
-00C5          ; mapped                 ; 00E5          # 1.1  LATIN CAPITAL LETTER A WITH RING ABOVE
-00C6          ; mapped                 ; 00E6          # 1.1  LATIN CAPITAL LETTER AE
-00C7          ; mapped                 ; 00E7          # 1.1  LATIN CAPITAL LETTER C WITH CEDILLA
-00C8          ; mapped                 ; 00E8          # 1.1  LATIN CAPITAL LETTER E WITH GRAVE
-00C9          ; mapped                 ; 00E9          # 1.1  LATIN CAPITAL LETTER E WITH ACUTE
-00CA          ; mapped                 ; 00EA          # 1.1  LATIN CAPITAL LETTER E WITH CIRCUMFLEX
-00CB          ; mapped                 ; 00EB          # 1.1  LATIN CAPITAL LETTER E WITH DIAERESIS
-00CC          ; mapped                 ; 00EC          # 1.1  LATIN CAPITAL LETTER I WITH GRAVE
-00CD          ; mapped                 ; 00ED          # 1.1  LATIN CAPITAL LETTER I WITH ACUTE
-00CE          ; mapped                 ; 00EE          # 1.1  LATIN CAPITAL LETTER I WITH CIRCUMFLEX
-00CF          ; mapped                 ; 00EF          # 1.1  LATIN CAPITAL LETTER I WITH DIAERESIS
-00D0          ; mapped                 ; 00F0          # 1.1  LATIN CAPITAL LETTER ETH
-00D1          ; mapped                 ; 00F1          # 1.1  LATIN CAPITAL LETTER N WITH TILDE
-00D2          ; mapped                 ; 00F2          # 1.1  LATIN CAPITAL LETTER O WITH GRAVE
-00D3          ; mapped                 ; 00F3          # 1.1  LATIN CAPITAL LETTER O WITH ACUTE
-00D4          ; mapped                 ; 00F4          # 1.1  LATIN CAPITAL LETTER O WITH CIRCUMFLEX
-00D5          ; mapped                 ; 00F5          # 1.1  LATIN CAPITAL LETTER O WITH TILDE
-00D6          ; mapped                 ; 00F6          # 1.1  LATIN CAPITAL LETTER O WITH DIAERESIS
-00D7          ; valid                  ;      ; NV8    # 1.1  MULTIPLICATION SIGN
-00D8          ; mapped                 ; 00F8          # 1.1  LATIN CAPITAL LETTER O WITH STROKE
-00D9          ; mapped                 ; 00F9          # 1.1  LATIN CAPITAL LETTER U WITH GRAVE
-00DA          ; mapped                 ; 00FA          # 1.1  LATIN CAPITAL LETTER U WITH ACUTE
-00DB          ; mapped                 ; 00FB          # 1.1  LATIN CAPITAL LETTER U WITH CIRCUMFLEX
-00DC          ; mapped                 ; 00FC          # 1.1  LATIN CAPITAL LETTER U WITH DIAERESIS
-00DD          ; mapped                 ; 00FD          # 1.1  LATIN CAPITAL LETTER Y WITH ACUTE
-00DE          ; mapped                 ; 00FE          # 1.1  LATIN CAPITAL LETTER THORN
-00DF          ; deviation              ; 0073 0073     # 1.1  LATIN SMALL LETTER SHARP S
-00E0..00F6    ; valid                                  # 1.1  LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER O WITH DIAERESIS
-00F7          ; valid                  ;      ; NV8    # 1.1  DIVISION SIGN
-00F8..00FF    ; valid                                  # 1.1  LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS
-0100          ; mapped                 ; 0101          # 1.1  LATIN CAPITAL LETTER A WITH MACRON
-0101          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH MACRON
-0102          ; mapped                 ; 0103          # 1.1  LATIN CAPITAL LETTER A WITH BREVE
-0103          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH BREVE
-0104          ; mapped                 ; 0105          # 1.1  LATIN CAPITAL LETTER A WITH OGONEK
-0105          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH OGONEK
-0106          ; mapped                 ; 0107          # 1.1  LATIN CAPITAL LETTER C WITH ACUTE
-0107          ; valid                                  # 1.1  LATIN SMALL LETTER C WITH ACUTE
-0108          ; mapped                 ; 0109          # 1.1  LATIN CAPITAL LETTER C WITH CIRCUMFLEX
-0109          ; valid                                  # 1.1  LATIN SMALL LETTER C WITH CIRCUMFLEX
-010A          ; mapped                 ; 010B          # 1.1  LATIN CAPITAL LETTER C WITH DOT ABOVE
-010B          ; valid                                  # 1.1  LATIN SMALL LETTER C WITH DOT ABOVE
-010C          ; mapped                 ; 010D          # 1.1  LATIN CAPITAL LETTER C WITH CARON
-010D          ; valid                                  # 1.1  LATIN SMALL LETTER C WITH CARON
-010E          ; mapped                 ; 010F          # 1.1  LATIN CAPITAL LETTER D WITH CARON
-010F          ; valid                                  # 1.1  LATIN SMALL LETTER D WITH CARON
-0110          ; mapped                 ; 0111          # 1.1  LATIN CAPITAL LETTER D WITH STROKE
-0111          ; valid                                  # 1.1  LATIN SMALL LETTER D WITH STROKE
-0112          ; mapped                 ; 0113          # 1.1  LATIN CAPITAL LETTER E WITH MACRON
-0113          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH MACRON
-0114          ; mapped                 ; 0115          # 1.1  LATIN CAPITAL LETTER E WITH BREVE
-0115          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH BREVE
-0116          ; mapped                 ; 0117          # 1.1  LATIN CAPITAL LETTER E WITH DOT ABOVE
-0117          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH DOT ABOVE
-0118          ; mapped                 ; 0119          # 1.1  LATIN CAPITAL LETTER E WITH OGONEK
-0119          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH OGONEK
-011A          ; mapped                 ; 011B          # 1.1  LATIN CAPITAL LETTER E WITH CARON
-011B          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH CARON
-011C          ; mapped                 ; 011D          # 1.1  LATIN CAPITAL LETTER G WITH CIRCUMFLEX
-011D          ; valid                                  # 1.1  LATIN SMALL LETTER G WITH CIRCUMFLEX
-011E          ; mapped                 ; 011F          # 1.1  LATIN CAPITAL LETTER G WITH BREVE
-011F          ; valid                                  # 1.1  LATIN SMALL LETTER G WITH BREVE
-0120          ; mapped                 ; 0121          # 1.1  LATIN CAPITAL LETTER G WITH DOT ABOVE
-0121          ; valid                                  # 1.1  LATIN SMALL LETTER G WITH DOT ABOVE
-0122          ; mapped                 ; 0123          # 1.1  LATIN CAPITAL LETTER G WITH CEDILLA
-0123          ; valid                                  # 1.1  LATIN SMALL LETTER G WITH CEDILLA
-0124          ; mapped                 ; 0125          # 1.1  LATIN CAPITAL LETTER H WITH CIRCUMFLEX
-0125          ; valid                                  # 1.1  LATIN SMALL LETTER H WITH CIRCUMFLEX
-0126          ; mapped                 ; 0127          # 1.1  LATIN CAPITAL LETTER H WITH STROKE
-0127          ; valid                                  # 1.1  LATIN SMALL LETTER H WITH STROKE
-0128          ; mapped                 ; 0129          # 1.1  LATIN CAPITAL LETTER I WITH TILDE
-0129          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH TILDE
-012A          ; mapped                 ; 012B          # 1.1  LATIN CAPITAL LETTER I WITH MACRON
-012B          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH MACRON
-012C          ; mapped                 ; 012D          # 1.1  LATIN CAPITAL LETTER I WITH BREVE
-012D          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH BREVE
-012E          ; mapped                 ; 012F          # 1.1  LATIN CAPITAL LETTER I WITH OGONEK
-012F          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH OGONEK
-0130          ; mapped                 ; 0069 0307     # 1.1  LATIN CAPITAL LETTER I WITH DOT ABOVE
-0131          ; valid                                  # 1.1  LATIN SMALL LETTER DOTLESS I
-0132..0133    ; mapped                 ; 0069 006A     # 1.1  LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
-0134          ; mapped                 ; 0135          # 1.1  LATIN CAPITAL LETTER J WITH CIRCUMFLEX
-0135          ; valid                                  # 1.1  LATIN SMALL LETTER J WITH CIRCUMFLEX
-0136          ; mapped                 ; 0137          # 1.1  LATIN CAPITAL LETTER K WITH CEDILLA
-0137..0138    ; valid                                  # 1.1  LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA
-0139          ; mapped                 ; 013A          # 1.1  LATIN CAPITAL LETTER L WITH ACUTE
-013A          ; valid                                  # 1.1  LATIN SMALL LETTER L WITH ACUTE
-013B          ; mapped                 ; 013C          # 1.1  LATIN CAPITAL LETTER L WITH CEDILLA
-013C          ; valid                                  # 1.1  LATIN SMALL LETTER L WITH CEDILLA
-013D          ; mapped                 ; 013E          # 1.1  LATIN CAPITAL LETTER L WITH CARON
-013E          ; valid                                  # 1.1  LATIN SMALL LETTER L WITH CARON
-013F..0140    ; mapped                 ; 006C 00B7     # 1.1  LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
-0141          ; mapped                 ; 0142          # 1.1  LATIN CAPITAL LETTER L WITH STROKE
-0142          ; valid                                  # 1.1  LATIN SMALL LETTER L WITH STROKE
-0143          ; mapped                 ; 0144          # 1.1  LATIN CAPITAL LETTER N WITH ACUTE
-0144          ; valid                                  # 1.1  LATIN SMALL LETTER N WITH ACUTE
-0145          ; mapped                 ; 0146          # 1.1  LATIN CAPITAL LETTER N WITH CEDILLA
-0146          ; valid                                  # 1.1  LATIN SMALL LETTER N WITH CEDILLA
-0147          ; mapped                 ; 0148          # 1.1  LATIN CAPITAL LETTER N WITH CARON
-0148          ; valid                                  # 1.1  LATIN SMALL LETTER N WITH CARON
-0149          ; mapped                 ; 02BC 006E     # 1.1  LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
-014A          ; mapped                 ; 014B          # 1.1  LATIN CAPITAL LETTER ENG
-014B          ; valid                                  # 1.1  LATIN SMALL LETTER ENG
-014C          ; mapped                 ; 014D          # 1.1  LATIN CAPITAL LETTER O WITH MACRON
-014D          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH MACRON
-014E          ; mapped                 ; 014F          # 1.1  LATIN CAPITAL LETTER O WITH BREVE
-014F          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH BREVE
-0150          ; mapped                 ; 0151          # 1.1  LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
-0151          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH DOUBLE ACUTE
-0152          ; mapped                 ; 0153          # 1.1  LATIN CAPITAL LIGATURE OE
-0153          ; valid                                  # 1.1  LATIN SMALL LIGATURE OE
-0154          ; mapped                 ; 0155          # 1.1  LATIN CAPITAL LETTER R WITH ACUTE
-0155          ; valid                                  # 1.1  LATIN SMALL LETTER R WITH ACUTE
-0156          ; mapped                 ; 0157          # 1.1  LATIN CAPITAL LETTER R WITH CEDILLA
-0157          ; valid                                  # 1.1  LATIN SMALL LETTER R WITH CEDILLA
-0158          ; mapped                 ; 0159          # 1.1  LATIN CAPITAL LETTER R WITH CARON
-0159          ; valid                                  # 1.1  LATIN SMALL LETTER R WITH CARON
-015A          ; mapped                 ; 015B          # 1.1  LATIN CAPITAL LETTER S WITH ACUTE
-015B          ; valid                                  # 1.1  LATIN SMALL LETTER S WITH ACUTE
-015C          ; mapped                 ; 015D          # 1.1  LATIN CAPITAL LETTER S WITH CIRCUMFLEX
-015D          ; valid                                  # 1.1  LATIN SMALL LETTER S WITH CIRCUMFLEX
-015E          ; mapped                 ; 015F          # 1.1  LATIN CAPITAL LETTER S WITH CEDILLA
-015F          ; valid                                  # 1.1  LATIN SMALL LETTER S WITH CEDILLA
-0160          ; mapped                 ; 0161          # 1.1  LATIN CAPITAL LETTER S WITH CARON
-0161          ; valid                                  # 1.1  LATIN SMALL LETTER S WITH CARON
-0162          ; mapped                 ; 0163          # 1.1  LATIN CAPITAL LETTER T WITH CEDILLA
-0163          ; valid                                  # 1.1  LATIN SMALL LETTER T WITH CEDILLA
-0164          ; mapped                 ; 0165          # 1.1  LATIN CAPITAL LETTER T WITH CARON
-0165          ; valid                                  # 1.1  LATIN SMALL LETTER T WITH CARON
-0166          ; mapped                 ; 0167          # 1.1  LATIN CAPITAL LETTER T WITH STROKE
-0167          ; valid                                  # 1.1  LATIN SMALL LETTER T WITH STROKE
-0168          ; mapped                 ; 0169          # 1.1  LATIN CAPITAL LETTER U WITH TILDE
-0169          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH TILDE
-016A          ; mapped                 ; 016B          # 1.1  LATIN CAPITAL LETTER U WITH MACRON
-016B          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH MACRON
-016C          ; mapped                 ; 016D          # 1.1  LATIN CAPITAL LETTER U WITH BREVE
-016D          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH BREVE
-016E          ; mapped                 ; 016F          # 1.1  LATIN CAPITAL LETTER U WITH RING ABOVE
-016F          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH RING ABOVE
-0170          ; mapped                 ; 0171          # 1.1  LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
-0171          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH DOUBLE ACUTE
-0172          ; mapped                 ; 0173          # 1.1  LATIN CAPITAL LETTER U WITH OGONEK
-0173          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH OGONEK
-0174          ; mapped                 ; 0175          # 1.1  LATIN CAPITAL LETTER W WITH CIRCUMFLEX
-0175          ; valid                                  # 1.1  LATIN SMALL LETTER W WITH CIRCUMFLEX
-0176          ; mapped                 ; 0177          # 1.1  LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
-0177          ; valid                                  # 1.1  LATIN SMALL LETTER Y WITH CIRCUMFLEX
-0178          ; mapped                 ; 00FF          # 1.1  LATIN CAPITAL LETTER Y WITH DIAERESIS
-0179          ; mapped                 ; 017A          # 1.1  LATIN CAPITAL LETTER Z WITH ACUTE
-017A          ; valid                                  # 1.1  LATIN SMALL LETTER Z WITH ACUTE
-017B          ; mapped                 ; 017C          # 1.1  LATIN CAPITAL LETTER Z WITH DOT ABOVE
-017C          ; valid                                  # 1.1  LATIN SMALL LETTER Z WITH DOT ABOVE
-017D          ; mapped                 ; 017E          # 1.1  LATIN CAPITAL LETTER Z WITH CARON
-017E          ; valid                                  # 1.1  LATIN SMALL LETTER Z WITH CARON
-017F          ; mapped                 ; 0073          # 1.1  LATIN SMALL LETTER LONG S
-0180          ; valid                                  # 1.1  LATIN SMALL LETTER B WITH STROKE
-0181          ; mapped                 ; 0253          # 1.1  LATIN CAPITAL LETTER B WITH HOOK
-0182          ; mapped                 ; 0183          # 1.1  LATIN CAPITAL LETTER B WITH TOPBAR
-0183          ; valid                                  # 1.1  LATIN SMALL LETTER B WITH TOPBAR
-0184          ; mapped                 ; 0185          # 1.1  LATIN CAPITAL LETTER TONE SIX
-0185          ; valid                                  # 1.1  LATIN SMALL LETTER TONE SIX
-0186          ; mapped                 ; 0254          # 1.1  LATIN CAPITAL LETTER OPEN O
-0187          ; mapped                 ; 0188          # 1.1  LATIN CAPITAL LETTER C WITH HOOK
-0188          ; valid                                  # 1.1  LATIN SMALL LETTER C WITH HOOK
-0189          ; mapped                 ; 0256          # 1.1  LATIN CAPITAL LETTER AFRICAN D
-018A          ; mapped                 ; 0257          # 1.1  LATIN CAPITAL LETTER D WITH HOOK
-018B          ; mapped                 ; 018C          # 1.1  LATIN CAPITAL LETTER D WITH TOPBAR
-018C..018D    ; valid                                  # 1.1  LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA
-018E          ; mapped                 ; 01DD          # 1.1  LATIN CAPITAL LETTER REVERSED E
-018F          ; mapped                 ; 0259          # 1.1  LATIN CAPITAL LETTER SCHWA
-0190          ; mapped                 ; 025B          # 1.1  LATIN CAPITAL LETTER OPEN E
-0191          ; mapped                 ; 0192          # 1.1  LATIN CAPITAL LETTER F WITH HOOK
-0192          ; valid                                  # 1.1  LATIN SMALL LETTER F WITH HOOK
-0193          ; mapped                 ; 0260          # 1.1  LATIN CAPITAL LETTER G WITH HOOK
-0194          ; mapped                 ; 0263          # 1.1  LATIN CAPITAL LETTER GAMMA
-0195          ; valid                                  # 1.1  LATIN SMALL LETTER HV
-0196          ; mapped                 ; 0269          # 1.1  LATIN CAPITAL LETTER IOTA
-0197          ; mapped                 ; 0268          # 1.1  LATIN CAPITAL LETTER I WITH STROKE
-0198          ; mapped                 ; 0199          # 1.1  LATIN CAPITAL LETTER K WITH HOOK
-0199..019B    ; valid                                  # 1.1  LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE
-019C          ; mapped                 ; 026F          # 1.1  LATIN CAPITAL LETTER TURNED M
-019D          ; mapped                 ; 0272          # 1.1  LATIN CAPITAL LETTER N WITH LEFT HOOK
-019E          ; valid                                  # 1.1  LATIN SMALL LETTER N WITH LONG RIGHT LEG
-019F          ; mapped                 ; 0275          # 1.1  LATIN CAPITAL LETTER O WITH MIDDLE TILDE
-01A0          ; mapped                 ; 01A1          # 1.1  LATIN CAPITAL LETTER O WITH HORN
-01A1          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH HORN
-01A2          ; mapped                 ; 01A3          # 1.1  LATIN CAPITAL LETTER OI
-01A3          ; valid                                  # 1.1  LATIN SMALL LETTER OI
-01A4          ; mapped                 ; 01A5          # 1.1  LATIN CAPITAL LETTER P WITH HOOK
-01A5          ; valid                                  # 1.1  LATIN SMALL LETTER P WITH HOOK
-01A6          ; mapped                 ; 0280          # 1.1  LATIN LETTER YR
-01A7          ; mapped                 ; 01A8          # 1.1  LATIN CAPITAL LETTER TONE TWO
-01A8          ; valid                                  # 1.1  LATIN SMALL LETTER TONE TWO
-01A9          ; mapped                 ; 0283          # 1.1  LATIN CAPITAL LETTER ESH
-01AA..01AB    ; valid                                  # 1.1  LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK
-01AC          ; mapped                 ; 01AD          # 1.1  LATIN CAPITAL LETTER T WITH HOOK
-01AD          ; valid                                  # 1.1  LATIN SMALL LETTER T WITH HOOK
-01AE          ; mapped                 ; 0288          # 1.1  LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
-01AF          ; mapped                 ; 01B0          # 1.1  LATIN CAPITAL LETTER U WITH HORN
-01B0          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH HORN
-01B1          ; mapped                 ; 028A          # 1.1  LATIN CAPITAL LETTER UPSILON
-01B2          ; mapped                 ; 028B          # 1.1  LATIN CAPITAL LETTER V WITH HOOK
-01B3          ; mapped                 ; 01B4          # 1.1  LATIN CAPITAL LETTER Y WITH HOOK
-01B4          ; valid                                  # 1.1  LATIN SMALL LETTER Y WITH HOOK
-01B5          ; mapped                 ; 01B6          # 1.1  LATIN CAPITAL LETTER Z WITH STROKE
-01B6          ; valid                                  # 1.1  LATIN SMALL LETTER Z WITH STROKE
-01B7          ; mapped                 ; 0292          # 1.1  LATIN CAPITAL LETTER EZH
-01B8          ; mapped                 ; 01B9          # 1.1  LATIN CAPITAL LETTER EZH REVERSED
-01B9..01BB    ; valid                                  # 1.1  LATIN SMALL LETTER EZH REVERSED..LATIN LETTER TWO WITH STROKE
-01BC          ; mapped                 ; 01BD          # 1.1  LATIN CAPITAL LETTER TONE FIVE
-01BD..01C3    ; valid                                  # 1.1  LATIN SMALL LETTER TONE FIVE..LATIN LETTER RETROFLEX CLICK
-01C4..01C6    ; mapped                 ; 0064 017E     # 1.1  LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER DZ WITH CARON
-01C7..01C9    ; mapped                 ; 006C 006A     # 1.1  LATIN CAPITAL LETTER LJ..LATIN SMALL LETTER LJ
-01CA..01CC    ; mapped                 ; 006E 006A     # 1.1  LATIN CAPITAL LETTER NJ..LATIN SMALL LETTER NJ
-01CD          ; mapped                 ; 01CE          # 1.1  LATIN CAPITAL LETTER A WITH CARON
-01CE          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH CARON
-01CF          ; mapped                 ; 01D0          # 1.1  LATIN CAPITAL LETTER I WITH CARON
-01D0          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH CARON
-01D1          ; mapped                 ; 01D2          # 1.1  LATIN CAPITAL LETTER O WITH CARON
-01D2          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH CARON
-01D3          ; mapped                 ; 01D4          # 1.1  LATIN CAPITAL LETTER U WITH CARON
-01D4          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH CARON
-01D5          ; mapped                 ; 01D6          # 1.1  LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
-01D6          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
-01D7          ; mapped                 ; 01D8          # 1.1  LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
-01D8          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
-01D9          ; mapped                 ; 01DA          # 1.1  LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
-01DA          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH DIAERESIS AND CARON
-01DB          ; mapped                 ; 01DC          # 1.1  LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
-01DC..01DD    ; valid                                  # 1.1  LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E
-01DE          ; mapped                 ; 01DF          # 1.1  LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
-01DF          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
-01E0          ; mapped                 ; 01E1          # 1.1  LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
-01E1          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
-01E2          ; mapped                 ; 01E3          # 1.1  LATIN CAPITAL LETTER AE WITH MACRON
-01E3          ; valid                                  # 1.1  LATIN SMALL LETTER AE WITH MACRON
-01E4          ; mapped                 ; 01E5          # 1.1  LATIN CAPITAL LETTER G WITH STROKE
-01E5          ; valid                                  # 1.1  LATIN SMALL LETTER G WITH STROKE
-01E6          ; mapped                 ; 01E7          # 1.1  LATIN CAPITAL LETTER G WITH CARON
-01E7          ; valid                                  # 1.1  LATIN SMALL LETTER G WITH CARON
-01E8          ; mapped                 ; 01E9          # 1.1  LATIN CAPITAL LETTER K WITH CARON
-01E9          ; valid                                  # 1.1  LATIN SMALL LETTER K WITH CARON
-01EA          ; mapped                 ; 01EB          # 1.1  LATIN CAPITAL LETTER O WITH OGONEK
-01EB          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH OGONEK
-01EC          ; mapped                 ; 01ED          # 1.1  LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
-01ED          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH OGONEK AND MACRON
-01EE          ; mapped                 ; 01EF          # 1.1  LATIN CAPITAL LETTER EZH WITH CARON
-01EF..01F0    ; valid                                  # 1.1  LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON
-01F1..01F3    ; mapped                 ; 0064 007A     # 1.1  LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
-01F4          ; mapped                 ; 01F5          # 1.1  LATIN CAPITAL LETTER G WITH ACUTE
-01F5          ; valid                                  # 1.1  LATIN SMALL LETTER G WITH ACUTE
-01F6          ; mapped                 ; 0195          # 3.0  LATIN CAPITAL LETTER HWAIR
-01F7          ; mapped                 ; 01BF          # 3.0  LATIN CAPITAL LETTER WYNN
-01F8          ; mapped                 ; 01F9          # 3.0  LATIN CAPITAL LETTER N WITH GRAVE
-01F9          ; valid                                  # 3.0  LATIN SMALL LETTER N WITH GRAVE
-01FA          ; mapped                 ; 01FB          # 1.1  LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-01FB          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
-01FC          ; mapped                 ; 01FD          # 1.1  LATIN CAPITAL LETTER AE WITH ACUTE
-01FD          ; valid                                  # 1.1  LATIN SMALL LETTER AE WITH ACUTE
-01FE          ; mapped                 ; 01FF          # 1.1  LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-01FF          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH STROKE AND ACUTE
-0200          ; mapped                 ; 0201          # 1.1  LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
-0201          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH DOUBLE GRAVE
-0202          ; mapped                 ; 0203          # 1.1  LATIN CAPITAL LETTER A WITH INVERTED BREVE
-0203          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH INVERTED BREVE
-0204          ; mapped                 ; 0205          # 1.1  LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
-0205          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH DOUBLE GRAVE
-0206          ; mapped                 ; 0207          # 1.1  LATIN CAPITAL LETTER E WITH INVERTED BREVE
-0207          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH INVERTED BREVE
-0208          ; mapped                 ; 0209          # 1.1  LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
-0209          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH DOUBLE GRAVE
-020A          ; mapped                 ; 020B          # 1.1  LATIN CAPITAL LETTER I WITH INVERTED BREVE
-020B          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH INVERTED BREVE
-020C          ; mapped                 ; 020D          # 1.1  LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
-020D          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH DOUBLE GRAVE
-020E          ; mapped                 ; 020F          # 1.1  LATIN CAPITAL LETTER O WITH INVERTED BREVE
-020F          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH INVERTED BREVE
-0210          ; mapped                 ; 0211          # 1.1  LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
-0211          ; valid                                  # 1.1  LATIN SMALL LETTER R WITH DOUBLE GRAVE
-0212          ; mapped                 ; 0213          # 1.1  LATIN CAPITAL LETTER R WITH INVERTED BREVE
-0213          ; valid                                  # 1.1  LATIN SMALL LETTER R WITH INVERTED BREVE
-0214          ; mapped                 ; 0215          # 1.1  LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
-0215          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH DOUBLE GRAVE
-0216          ; mapped                 ; 0217          # 1.1  LATIN CAPITAL LETTER U WITH INVERTED BREVE
-0217          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH INVERTED BREVE
-0218          ; mapped                 ; 0219          # 3.0  LATIN CAPITAL LETTER S WITH COMMA BELOW
-0219          ; valid                                  # 3.0  LATIN SMALL LETTER S WITH COMMA BELOW
-021A          ; mapped                 ; 021B          # 3.0  LATIN CAPITAL LETTER T WITH COMMA BELOW
-021B          ; valid                                  # 3.0  LATIN SMALL LETTER T WITH COMMA BELOW
-021C          ; mapped                 ; 021D          # 3.0  LATIN CAPITAL LETTER YOGH
-021D          ; valid                                  # 3.0  LATIN SMALL LETTER YOGH
-021E          ; mapped                 ; 021F          # 3.0  LATIN CAPITAL LETTER H WITH CARON
-021F          ; valid                                  # 3.0  LATIN SMALL LETTER H WITH CARON
-0220          ; mapped                 ; 019E          # 3.2  LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
-0221          ; valid                                  # 4.0  LATIN SMALL LETTER D WITH CURL
-0222          ; mapped                 ; 0223          # 3.0  LATIN CAPITAL LETTER OU
-0223          ; valid                                  # 3.0  LATIN SMALL LETTER OU
-0224          ; mapped                 ; 0225          # 3.0  LATIN CAPITAL LETTER Z WITH HOOK
-0225          ; valid                                  # 3.0  LATIN SMALL LETTER Z WITH HOOK
-0226          ; mapped                 ; 0227          # 3.0  LATIN CAPITAL LETTER A WITH DOT ABOVE
-0227          ; valid                                  # 3.0  LATIN SMALL LETTER A WITH DOT ABOVE
-0228          ; mapped                 ; 0229          # 3.0  LATIN CAPITAL LETTER E WITH CEDILLA
-0229          ; valid                                  # 3.0  LATIN SMALL LETTER E WITH CEDILLA
-022A          ; mapped                 ; 022B          # 3.0  LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-022B          ; valid                                  # 3.0  LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
-022C          ; mapped                 ; 022D          # 3.0  LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-022D          ; valid                                  # 3.0  LATIN SMALL LETTER O WITH TILDE AND MACRON
-022E          ; mapped                 ; 022F          # 3.0  LATIN CAPITAL LETTER O WITH DOT ABOVE
-022F          ; valid                                  # 3.0  LATIN SMALL LETTER O WITH DOT ABOVE
-0230          ; mapped                 ; 0231          # 3.0  LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
-0231          ; valid                                  # 3.0  LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
-0232          ; mapped                 ; 0233          # 3.0  LATIN CAPITAL LETTER Y WITH MACRON
-0233          ; valid                                  # 3.0  LATIN SMALL LETTER Y WITH MACRON
-0234..0236    ; valid                                  # 4.0  LATIN SMALL LETTER L WITH CURL..LATIN SMALL LETTER T WITH CURL
-0237..0239    ; valid                                  # 4.1  LATIN SMALL LETTER DOTLESS J..LATIN SMALL LETTER QP DIGRAPH
-023A          ; mapped                 ; 2C65          # 4.1  LATIN CAPITAL LETTER A WITH STROKE
-023B          ; mapped                 ; 023C          # 4.1  LATIN CAPITAL LETTER C WITH STROKE
-023C          ; valid                                  # 4.1  LATIN SMALL LETTER C WITH STROKE
-023D          ; mapped                 ; 019A          # 4.1  LATIN CAPITAL LETTER L WITH BAR
-023E          ; mapped                 ; 2C66          # 4.1  LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
-023F..0240    ; valid                                  # 4.1  LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL
-0241          ; mapped                 ; 0242          # 4.1  LATIN CAPITAL LETTER GLOTTAL STOP
-0242          ; valid                                  # 5.0  LATIN SMALL LETTER GLOTTAL STOP
-0243          ; mapped                 ; 0180          # 5.0  LATIN CAPITAL LETTER B WITH STROKE
-0244          ; mapped                 ; 0289          # 5.0  LATIN CAPITAL LETTER U BAR
-0245          ; mapped                 ; 028C          # 5.0  LATIN CAPITAL LETTER TURNED V
-0246          ; mapped                 ; 0247          # 5.0  LATIN CAPITAL LETTER E WITH STROKE
-0247          ; valid                                  # 5.0  LATIN SMALL LETTER E WITH STROKE
-0248          ; mapped                 ; 0249          # 5.0  LATIN CAPITAL LETTER J WITH STROKE
-0249          ; valid                                  # 5.0  LATIN SMALL LETTER J WITH STROKE
-024A          ; mapped                 ; 024B          # 5.0  LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
-024B          ; valid                                  # 5.0  LATIN SMALL LETTER Q WITH HOOK TAIL
-024C          ; mapped                 ; 024D          # 5.0  LATIN CAPITAL LETTER R WITH STROKE
-024D          ; valid                                  # 5.0  LATIN SMALL LETTER R WITH STROKE
-024E          ; mapped                 ; 024F          # 5.0  LATIN CAPITAL LETTER Y WITH STROKE
-024F          ; valid                                  # 5.0  LATIN SMALL LETTER Y WITH STROKE
-0250..02A8    ; valid                                  # 1.1  LATIN SMALL LETTER TURNED A..LATIN SMALL LETTER TC DIGRAPH WITH CURL
-02A9..02AD    ; valid                                  # 3.0  LATIN SMALL LETTER FENG DIGRAPH..LATIN LETTER BIDENTAL PERCUSSIVE
-02AE..02AF    ; valid                                  # 4.0  LATIN SMALL LETTER TURNED H WITH FISHHOOK..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
-02B0          ; mapped                 ; 0068          # 1.1  MODIFIER LETTER SMALL H
-02B1          ; mapped                 ; 0266          # 1.1  MODIFIER LETTER SMALL H WITH HOOK
-02B2          ; mapped                 ; 006A          # 1.1  MODIFIER LETTER SMALL J
-02B3          ; mapped                 ; 0072          # 1.1  MODIFIER LETTER SMALL R
-02B4          ; mapped                 ; 0279          # 1.1  MODIFIER LETTER SMALL TURNED R
-02B5          ; mapped                 ; 027B          # 1.1  MODIFIER LETTER SMALL TURNED R WITH HOOK
-02B6          ; mapped                 ; 0281          # 1.1  MODIFIER LETTER SMALL CAPITAL INVERTED R
-02B7          ; mapped                 ; 0077          # 1.1  MODIFIER LETTER SMALL W
-02B8          ; mapped                 ; 0079          # 1.1  MODIFIER LETTER SMALL Y
-02B9..02C1    ; valid                                  # 1.1  MODIFIER LETTER PRIME..MODIFIER LETTER REVERSED GLOTTAL STOP
-02C2..02C5    ; valid                  ;      ; NV8    # 1.1  MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
-02C6..02D1    ; valid                                  # 1.1  MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
-02D2..02D7    ; valid                  ;      ; NV8    # 1.1  MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER MINUS SIGN
-02D8          ; disallowed_STD3_mapped ; 0020 0306     # 1.1  BREVE
-02D9          ; disallowed_STD3_mapped ; 0020 0307     # 1.1  DOT ABOVE
-02DA          ; disallowed_STD3_mapped ; 0020 030A     # 1.1  RING ABOVE
-02DB          ; disallowed_STD3_mapped ; 0020 0328     # 1.1  OGONEK
-02DC          ; disallowed_STD3_mapped ; 0020 0303     # 1.1  SMALL TILDE
-02DD          ; disallowed_STD3_mapped ; 0020 030B     # 1.1  DOUBLE ACUTE ACCENT
-02DE          ; valid                  ;      ; NV8    # 1.1  MODIFIER LETTER RHOTIC HOOK
-02DF          ; valid                  ;      ; NV8    # 3.0  MODIFIER LETTER CROSS ACCENT
-02E0          ; mapped                 ; 0263          # 1.1  MODIFIER LETTER SMALL GAMMA
-02E1          ; mapped                 ; 006C          # 1.1  MODIFIER LETTER SMALL L
-02E2          ; mapped                 ; 0073          # 1.1  MODIFIER LETTER SMALL S
-02E3          ; mapped                 ; 0078          # 1.1  MODIFIER LETTER SMALL X
-02E4          ; mapped                 ; 0295          # 1.1  MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
-02E5..02E9    ; valid                  ;      ; NV8    # 1.1  MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER EXTRA-LOW TONE BAR
-02EA..02EB    ; valid                  ;      ; NV8    # 3.0  MODIFIER LETTER YIN DEPARTING TONE MARK..MODIFIER LETTER YANG DEPARTING TONE MARK
-02EC          ; valid                                  # 3.0  MODIFIER LETTER VOICING
-02ED          ; valid                  ;      ; NV8    # 3.0  MODIFIER LETTER UNASPIRATED
-02EE          ; valid                                  # 3.0  MODIFIER LETTER DOUBLE APOSTROPHE
-02EF..02FF    ; valid                  ;      ; NV8    # 4.0  MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
-0300..033F    ; valid                                  # 1.1  COMBINING GRAVE ACCENT..COMBINING DOUBLE OVERLINE
-0340          ; mapped                 ; 0300          # 1.1  COMBINING GRAVE TONE MARK
-0341          ; mapped                 ; 0301          # 1.1  COMBINING ACUTE TONE MARK
-0342          ; valid                                  # 1.1  COMBINING GREEK PERISPOMENI
-0343          ; mapped                 ; 0313          # 1.1  COMBINING GREEK KORONIS
-0344          ; mapped                 ; 0308 0301     # 1.1  COMBINING GREEK DIALYTIKA TONOS
-0345          ; mapped                 ; 03B9          # 1.1  COMBINING GREEK YPOGEGRAMMENI
-0346..034E    ; valid                                  # 3.0  COMBINING BRIDGE ABOVE..COMBINING UPWARDS ARROW BELOW
-034F          ; ignored                                # 3.2  COMBINING GRAPHEME JOINER
-0350..0357    ; valid                                  # 4.0  COMBINING RIGHT ARROWHEAD ABOVE..COMBINING RIGHT HALF RING ABOVE
-0358..035C    ; valid                                  # 4.1  COMBINING DOT ABOVE RIGHT..COMBINING DOUBLE BREVE BELOW
-035D..035F    ; valid                                  # 4.0  COMBINING DOUBLE BREVE..COMBINING DOUBLE MACRON BELOW
-0360..0361    ; valid                                  # 1.1  COMBINING DOUBLE TILDE..COMBINING DOUBLE INVERTED BREVE
-0362          ; valid                                  # 3.0  COMBINING DOUBLE RIGHTWARDS ARROW BELOW
-0363..036F    ; valid                                  # 3.2  COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
-0370          ; mapped                 ; 0371          # 5.1  GREEK CAPITAL LETTER HETA
-0371          ; valid                                  # 5.1  GREEK SMALL LETTER HETA
-0372          ; mapped                 ; 0373          # 5.1  GREEK CAPITAL LETTER ARCHAIC SAMPI
-0373          ; valid                                  # 5.1  GREEK SMALL LETTER ARCHAIC SAMPI
-0374          ; mapped                 ; 02B9          # 1.1  GREEK NUMERAL SIGN
-0375          ; valid                                  # 1.1  GREEK LOWER NUMERAL SIGN
-0376          ; mapped                 ; 0377          # 5.1  GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
-0377          ; valid                                  # 5.1  GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
-0378..0379    ; disallowed                             # NA   <reserved-0378>..<reserved-0379>
-037A          ; disallowed_STD3_mapped ; 0020 03B9     # 1.1  GREEK YPOGEGRAMMENI
-037B..037D    ; valid                                  # 5.0  GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
-037E          ; disallowed_STD3_mapped ; 003B          # 1.1  GREEK QUESTION MARK
-037F          ; mapped                 ; 03F3          # 7.0  GREEK CAPITAL LETTER YOT
-0380..0383    ; disallowed                             # NA   <reserved-0380>..<reserved-0383>
-0384          ; disallowed_STD3_mapped ; 0020 0301     # 1.1  GREEK TONOS
-0385          ; disallowed_STD3_mapped ; 0020 0308 0301 #1.1  GREEK DIALYTIKA TONOS
-0386          ; mapped                 ; 03AC          # 1.1  GREEK CAPITAL LETTER ALPHA WITH TONOS
-0387          ; mapped                 ; 00B7          # 1.1  GREEK ANO TELEIA
-0388          ; mapped                 ; 03AD          # 1.1  GREEK CAPITAL LETTER EPSILON WITH TONOS
-0389          ; mapped                 ; 03AE          # 1.1  GREEK CAPITAL LETTER ETA WITH TONOS
-038A          ; mapped                 ; 03AF          # 1.1  GREEK CAPITAL LETTER IOTA WITH TONOS
-038B          ; disallowed                             # NA   <reserved-038B>
-038C          ; mapped                 ; 03CC          # 1.1  GREEK CAPITAL LETTER OMICRON WITH TONOS
-038D          ; disallowed                             # NA   <reserved-038D>
-038E          ; mapped                 ; 03CD          # 1.1  GREEK CAPITAL LETTER UPSILON WITH TONOS
-038F          ; mapped                 ; 03CE          # 1.1  GREEK CAPITAL LETTER OMEGA WITH TONOS
-0390          ; valid                                  # 1.1  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
-0391          ; mapped                 ; 03B1          # 1.1  GREEK CAPITAL LETTER ALPHA
-0392          ; mapped                 ; 03B2          # 1.1  GREEK CAPITAL LETTER BETA
-0393          ; mapped                 ; 03B3          # 1.1  GREEK CAPITAL LETTER GAMMA
-0394          ; mapped                 ; 03B4          # 1.1  GREEK CAPITAL LETTER DELTA
-0395          ; mapped                 ; 03B5          # 1.1  GREEK CAPITAL LETTER EPSILON
-0396          ; mapped                 ; 03B6          # 1.1  GREEK CAPITAL LETTER ZETA
-0397          ; mapped                 ; 03B7          # 1.1  GREEK CAPITAL LETTER ETA
-0398          ; mapped                 ; 03B8          # 1.1  GREEK CAPITAL LETTER THETA
-0399          ; mapped                 ; 03B9          # 1.1  GREEK CAPITAL LETTER IOTA
-039A          ; mapped                 ; 03BA          # 1.1  GREEK CAPITAL LETTER KAPPA
-039B          ; mapped                 ; 03BB          # 1.1  GREEK CAPITAL LETTER LAMDA
-039C          ; mapped                 ; 03BC          # 1.1  GREEK CAPITAL LETTER MU
-039D          ; mapped                 ; 03BD          # 1.1  GREEK CAPITAL LETTER NU
-039E          ; mapped                 ; 03BE          # 1.1  GREEK CAPITAL LETTER XI
-039F          ; mapped                 ; 03BF          # 1.1  GREEK CAPITAL LETTER OMICRON
-03A0          ; mapped                 ; 03C0          # 1.1  GREEK CAPITAL LETTER PI
-03A1          ; mapped                 ; 03C1          # 1.1  GREEK CAPITAL LETTER RHO
-03A2          ; disallowed                             # NA   <reserved-03A2>
-03A3          ; mapped                 ; 03C3          # 1.1  GREEK CAPITAL LETTER SIGMA
-03A4          ; mapped                 ; 03C4          # 1.1  GREEK CAPITAL LETTER TAU
-03A5          ; mapped                 ; 03C5          # 1.1  GREEK CAPITAL LETTER UPSILON
-03A6          ; mapped                 ; 03C6          # 1.1  GREEK CAPITAL LETTER PHI
-03A7          ; mapped                 ; 03C7          # 1.1  GREEK CAPITAL LETTER CHI
-03A8          ; mapped                 ; 03C8          # 1.1  GREEK CAPITAL LETTER PSI
-03A9          ; mapped                 ; 03C9          # 1.1  GREEK CAPITAL LETTER OMEGA
-03AA          ; mapped                 ; 03CA          # 1.1  GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
-03AB          ; mapped                 ; 03CB          # 1.1  GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
-03AC..03C1    ; valid                                  # 1.1  GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER RHO
-03C2          ; deviation              ; 03C3          # 1.1  GREEK SMALL LETTER FINAL SIGMA
-03C3..03CE    ; valid                                  # 1.1  GREEK SMALL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS
-03CF          ; mapped                 ; 03D7          # 5.1  GREEK CAPITAL KAI SYMBOL
-03D0          ; mapped                 ; 03B2          # 1.1  GREEK BETA SYMBOL
-03D1          ; mapped                 ; 03B8          # 1.1  GREEK THETA SYMBOL
-03D2          ; mapped                 ; 03C5          # 1.1  GREEK UPSILON WITH HOOK SYMBOL
-03D3          ; mapped                 ; 03CD          # 1.1  GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
-03D4          ; mapped                 ; 03CB          # 1.1  GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
-03D5          ; mapped                 ; 03C6          # 1.1  GREEK PHI SYMBOL
-03D6          ; mapped                 ; 03C0          # 1.1  GREEK PI SYMBOL
-03D7          ; valid                                  # 3.0  GREEK KAI SYMBOL
-03D8          ; mapped                 ; 03D9          # 3.2  GREEK LETTER ARCHAIC KOPPA
-03D9          ; valid                                  # 3.2  GREEK SMALL LETTER ARCHAIC KOPPA
-03DA          ; mapped                 ; 03DB          # 1.1  GREEK LETTER STIGMA
-03DB          ; valid                                  # 3.0  GREEK SMALL LETTER STIGMA
-03DC          ; mapped                 ; 03DD          # 1.1  GREEK LETTER DIGAMMA
-03DD          ; valid                                  # 3.0  GREEK SMALL LETTER DIGAMMA
-03DE          ; mapped                 ; 03DF          # 1.1  GREEK LETTER KOPPA
-03DF          ; valid                                  # 3.0  GREEK SMALL LETTER KOPPA
-03E0          ; mapped                 ; 03E1          # 1.1  GREEK LETTER SAMPI
-03E1          ; valid                                  # 3.0  GREEK SMALL LETTER SAMPI
-03E2          ; mapped                 ; 03E3          # 1.1  COPTIC CAPITAL LETTER SHEI
-03E3          ; valid                                  # 1.1  COPTIC SMALL LETTER SHEI
-03E4          ; mapped                 ; 03E5          # 1.1  COPTIC CAPITAL LETTER FEI
-03E5          ; valid                                  # 1.1  COPTIC SMALL LETTER FEI
-03E6          ; mapped                 ; 03E7          # 1.1  COPTIC CAPITAL LETTER KHEI
-03E7          ; valid                                  # 1.1  COPTIC SMALL LETTER KHEI
-03E8          ; mapped                 ; 03E9          # 1.1  COPTIC CAPITAL LETTER HORI
-03E9          ; valid                                  # 1.1  COPTIC SMALL LETTER HORI
-03EA          ; mapped                 ; 03EB          # 1.1  COPTIC CAPITAL LETTER GANGIA
-03EB          ; valid                                  # 1.1  COPTIC SMALL LETTER GANGIA
-03EC          ; mapped                 ; 03ED          # 1.1  COPTIC CAPITAL LETTER SHIMA
-03ED          ; valid                                  # 1.1  COPTIC SMALL LETTER SHIMA
-03EE          ; mapped                 ; 03EF          # 1.1  COPTIC CAPITAL LETTER DEI
-03EF          ; valid                                  # 1.1  COPTIC SMALL LETTER DEI
-03F0          ; mapped                 ; 03BA          # 1.1  GREEK KAPPA SYMBOL
-03F1          ; mapped                 ; 03C1          # 1.1  GREEK RHO SYMBOL
-03F2          ; mapped                 ; 03C3          # 1.1  GREEK LUNATE SIGMA SYMBOL
-03F3          ; valid                                  # 1.1  GREEK LETTER YOT
-03F4          ; mapped                 ; 03B8          # 3.1  GREEK CAPITAL THETA SYMBOL
-03F5          ; mapped                 ; 03B5          # 3.1  GREEK LUNATE EPSILON SYMBOL
-03F6          ; valid                  ;      ; NV8    # 3.2  GREEK REVERSED LUNATE EPSILON SYMBOL
-03F7          ; mapped                 ; 03F8          # 4.0  GREEK CAPITAL LETTER SHO
-03F8          ; valid                                  # 4.0  GREEK SMALL LETTER SHO
-03F9          ; mapped                 ; 03C3          # 4.0  GREEK CAPITAL LUNATE SIGMA SYMBOL
-03FA          ; mapped                 ; 03FB          # 4.0  GREEK CAPITAL LETTER SAN
-03FB          ; valid                                  # 4.0  GREEK SMALL LETTER SAN
-03FC          ; valid                                  # 4.1  GREEK RHO WITH STROKE SYMBOL
-03FD          ; mapped                 ; 037B          # 4.1  GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
-03FE          ; mapped                 ; 037C          # 4.1  GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
-03FF          ; mapped                 ; 037D          # 4.1  GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
-0400          ; mapped                 ; 0450          # 3.0  CYRILLIC CAPITAL LETTER IE WITH GRAVE
-0401          ; mapped                 ; 0451          # 1.1  CYRILLIC CAPITAL LETTER IO
-0402          ; mapped                 ; 0452          # 1.1  CYRILLIC CAPITAL LETTER DJE
-0403          ; mapped                 ; 0453          # 1.1  CYRILLIC CAPITAL LETTER GJE
-0404          ; mapped                 ; 0454          # 1.1  CYRILLIC CAPITAL LETTER UKRAINIAN IE
-0405          ; mapped                 ; 0455          # 1.1  CYRILLIC CAPITAL LETTER DZE
-0406          ; mapped                 ; 0456          # 1.1  CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
-0407          ; mapped                 ; 0457          # 1.1  CYRILLIC CAPITAL LETTER YI
-0408          ; mapped                 ; 0458          # 1.1  CYRILLIC CAPITAL LETTER JE
-0409          ; mapped                 ; 0459          # 1.1  CYRILLIC CAPITAL LETTER LJE
-040A          ; mapped                 ; 045A          # 1.1  CYRILLIC CAPITAL LETTER NJE
-040B          ; mapped                 ; 045B          # 1.1  CYRILLIC CAPITAL LETTER TSHE
-040C          ; mapped                 ; 045C          # 1.1  CYRILLIC CAPITAL LETTER KJE
-040D          ; mapped                 ; 045D          # 3.0  CYRILLIC CAPITAL LETTER I WITH GRAVE
-040E          ; mapped                 ; 045E          # 1.1  CYRILLIC CAPITAL LETTER SHORT U
-040F          ; mapped                 ; 045F          # 1.1  CYRILLIC CAPITAL LETTER DZHE
-0410          ; mapped                 ; 0430          # 1.1  CYRILLIC CAPITAL LETTER A
-0411          ; mapped                 ; 0431          # 1.1  CYRILLIC CAPITAL LETTER BE
-0412          ; mapped                 ; 0432          # 1.1  CYRILLIC CAPITAL LETTER VE
-0413          ; mapped                 ; 0433          # 1.1  CYRILLIC CAPITAL LETTER GHE
-0414          ; mapped                 ; 0434          # 1.1  CYRILLIC CAPITAL LETTER DE
-0415          ; mapped                 ; 0435          # 1.1  CYRILLIC CAPITAL LETTER IE
-0416          ; mapped                 ; 0436          # 1.1  CYRILLIC CAPITAL LETTER ZHE
-0417          ; mapped                 ; 0437          # 1.1  CYRILLIC CAPITAL LETTER ZE
-0418          ; mapped                 ; 0438          # 1.1  CYRILLIC CAPITAL LETTER I
-0419          ; mapped                 ; 0439          # 1.1  CYRILLIC CAPITAL LETTER SHORT I
-041A          ; mapped                 ; 043A          # 1.1  CYRILLIC CAPITAL LETTER KA
-041B          ; mapped                 ; 043B          # 1.1  CYRILLIC CAPITAL LETTER EL
-041C          ; mapped                 ; 043C          # 1.1  CYRILLIC CAPITAL LETTER EM
-041D          ; mapped                 ; 043D          # 1.1  CYRILLIC CAPITAL LETTER EN
-041E          ; mapped                 ; 043E          # 1.1  CYRILLIC CAPITAL LETTER O
-041F          ; mapped                 ; 043F          # 1.1  CYRILLIC CAPITAL LETTER PE
-0420          ; mapped                 ; 0440          # 1.1  CYRILLIC CAPITAL LETTER ER
-0421          ; mapped                 ; 0441          # 1.1  CYRILLIC CAPITAL LETTER ES
-0422          ; mapped                 ; 0442          # 1.1  CYRILLIC CAPITAL LETTER TE
-0423          ; mapped                 ; 0443          # 1.1  CYRILLIC CAPITAL LETTER U
-0424          ; mapped                 ; 0444          # 1.1  CYRILLIC CAPITAL LETTER EF
-0425          ; mapped                 ; 0445          # 1.1  CYRILLIC CAPITAL LETTER HA
-0426          ; mapped                 ; 0446          # 1.1  CYRILLIC CAPITAL LETTER TSE
-0427          ; mapped                 ; 0447          # 1.1  CYRILLIC CAPITAL LETTER CHE
-0428          ; mapped                 ; 0448          # 1.1  CYRILLIC CAPITAL LETTER SHA
-0429          ; mapped                 ; 0449          # 1.1  CYRILLIC CAPITAL LETTER SHCHA
-042A          ; mapped                 ; 044A          # 1.1  CYRILLIC CAPITAL LETTER HARD SIGN
-042B          ; mapped                 ; 044B          # 1.1  CYRILLIC CAPITAL LETTER YERU
-042C          ; mapped                 ; 044C          # 1.1  CYRILLIC CAPITAL LETTER SOFT SIGN
-042D          ; mapped                 ; 044D          # 1.1  CYRILLIC CAPITAL LETTER E
-042E          ; mapped                 ; 044E          # 1.1  CYRILLIC CAPITAL LETTER YU
-042F          ; mapped                 ; 044F          # 1.1  CYRILLIC CAPITAL LETTER YA
-0430..044F    ; valid                                  # 1.1  CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER YA
-0450          ; valid                                  # 3.0  CYRILLIC SMALL LETTER IE WITH GRAVE
-0451..045C    ; valid                                  # 1.1  CYRILLIC SMALL LETTER IO..CYRILLIC SMALL LETTER KJE
-045D          ; valid                                  # 3.0  CYRILLIC SMALL LETTER I WITH GRAVE
-045E..045F    ; valid                                  # 1.1  CYRILLIC SMALL LETTER SHORT U..CYRILLIC SMALL LETTER DZHE
-0460          ; mapped                 ; 0461          # 1.1  CYRILLIC CAPITAL LETTER OMEGA
-0461          ; valid                                  # 1.1  CYRILLIC SMALL LETTER OMEGA
-0462          ; mapped                 ; 0463          # 1.1  CYRILLIC CAPITAL LETTER YAT
-0463          ; valid                                  # 1.1  CYRILLIC SMALL LETTER YAT
-0464          ; mapped                 ; 0465          # 1.1  CYRILLIC CAPITAL LETTER IOTIFIED E
-0465          ; valid                                  # 1.1  CYRILLIC SMALL LETTER IOTIFIED E
-0466          ; mapped                 ; 0467          # 1.1  CYRILLIC CAPITAL LETTER LITTLE YUS
-0467          ; valid                                  # 1.1  CYRILLIC SMALL LETTER LITTLE YUS
-0468          ; mapped                 ; 0469          # 1.1  CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-0469          ; valid                                  # 1.1  CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
-046A          ; mapped                 ; 046B          # 1.1  CYRILLIC CAPITAL LETTER BIG YUS
-046B          ; valid                                  # 1.1  CYRILLIC SMALL LETTER BIG YUS
-046C          ; mapped                 ; 046D          # 1.1  CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-046D          ; valid                                  # 1.1  CYRILLIC SMALL LETTER IOTIFIED BIG YUS
-046E          ; mapped                 ; 046F          # 1.1  CYRILLIC CAPITAL LETTER KSI
-046F          ; valid                                  # 1.1  CYRILLIC SMALL LETTER KSI
-0470          ; mapped                 ; 0471          # 1.1  CYRILLIC CAPITAL LETTER PSI
-0471          ; valid                                  # 1.1  CYRILLIC SMALL LETTER PSI
-0472          ; mapped                 ; 0473          # 1.1  CYRILLIC CAPITAL LETTER FITA
-0473          ; valid                                  # 1.1  CYRILLIC SMALL LETTER FITA
-0474          ; mapped                 ; 0475          # 1.1  CYRILLIC CAPITAL LETTER IZHITSA
-0475          ; valid                                  # 1.1  CYRILLIC SMALL LETTER IZHITSA
-0476          ; mapped                 ; 0477          # 1.1  CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0477          ; valid                                  # 1.1  CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
-0478          ; mapped                 ; 0479          # 1.1  CYRILLIC CAPITAL LETTER UK
-0479          ; valid                                  # 1.1  CYRILLIC SMALL LETTER UK
-047A          ; mapped                 ; 047B          # 1.1  CYRILLIC CAPITAL LETTER ROUND OMEGA
-047B          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ROUND OMEGA
-047C          ; mapped                 ; 047D          # 1.1  CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
-047D          ; valid                                  # 1.1  CYRILLIC SMALL LETTER OMEGA WITH TITLO
-047E          ; mapped                 ; 047F          # 1.1  CYRILLIC CAPITAL LETTER OT
-047F          ; valid                                  # 1.1  CYRILLIC SMALL LETTER OT
-0480          ; mapped                 ; 0481          # 1.1  CYRILLIC CAPITAL LETTER KOPPA
-0481          ; valid                                  # 1.1  CYRILLIC SMALL LETTER KOPPA
-0482          ; valid                  ;      ; NV8    # 1.1  CYRILLIC THOUSANDS SIGN
-0483..0486    ; valid                                  # 1.1  COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA
-0487          ; valid                                  # 5.1  COMBINING CYRILLIC POKRYTIE
-0488..0489    ; valid                  ;      ; NV8    # 3.0  COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
-048A          ; mapped                 ; 048B          # 3.2  CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
-048B          ; valid                                  # 3.2  CYRILLIC SMALL LETTER SHORT I WITH TAIL
-048C          ; mapped                 ; 048D          # 3.0  CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-048D          ; valid                                  # 3.0  CYRILLIC SMALL LETTER SEMISOFT SIGN
-048E          ; mapped                 ; 048F          # 3.0  CYRILLIC CAPITAL LETTER ER WITH TICK
-048F          ; valid                                  # 3.0  CYRILLIC SMALL LETTER ER WITH TICK
-0490          ; mapped                 ; 0491          # 1.1  CYRILLIC CAPITAL LETTER GHE WITH UPTURN
-0491          ; valid                                  # 1.1  CYRILLIC SMALL LETTER GHE WITH UPTURN
-0492          ; mapped                 ; 0493          # 1.1  CYRILLIC CAPITAL LETTER GHE WITH STROKE
-0493          ; valid                                  # 1.1  CYRILLIC SMALL LETTER GHE WITH STROKE
-0494          ; mapped                 ; 0495          # 1.1  CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
-0495          ; valid                                  # 1.1  CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
-0496          ; mapped                 ; 0497          # 1.1  CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
-0497          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ZHE WITH DESCENDER
-0498          ; mapped                 ; 0499          # 1.1  CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
-0499          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ZE WITH DESCENDER
-049A          ; mapped                 ; 049B          # 1.1  CYRILLIC CAPITAL LETTER KA WITH DESCENDER
-049B          ; valid                                  # 1.1  CYRILLIC SMALL LETTER KA WITH DESCENDER
-049C          ; mapped                 ; 049D          # 1.1  CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
-049D          ; valid                                  # 1.1  CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
-049E          ; mapped                 ; 049F          # 1.1  CYRILLIC CAPITAL LETTER KA WITH STROKE
-049F          ; valid                                  # 1.1  CYRILLIC SMALL LETTER KA WITH STROKE
-04A0          ; mapped                 ; 04A1          # 1.1  CYRILLIC CAPITAL LETTER BASHKIR KA
-04A1          ; valid                                  # 1.1  CYRILLIC SMALL LETTER BASHKIR KA
-04A2          ; mapped                 ; 04A3          # 1.1  CYRILLIC CAPITAL LETTER EN WITH DESCENDER
-04A3          ; valid                                  # 1.1  CYRILLIC SMALL LETTER EN WITH DESCENDER
-04A4          ; mapped                 ; 04A5          # 1.1  CYRILLIC CAPITAL LIGATURE EN GHE
-04A5          ; valid                                  # 1.1  CYRILLIC SMALL LIGATURE EN GHE
-04A6          ; mapped                 ; 04A7          # 1.1  CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
-04A7          ; valid                                  # 1.1  CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
-04A8          ; mapped                 ; 04A9          # 1.1  CYRILLIC CAPITAL LETTER ABKHASIAN HA
-04A9          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ABKHASIAN HA
-04AA          ; mapped                 ; 04AB          # 1.1  CYRILLIC CAPITAL LETTER ES WITH DESCENDER
-04AB          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ES WITH DESCENDER
-04AC          ; mapped                 ; 04AD          # 1.1  CYRILLIC CAPITAL LETTER TE WITH DESCENDER
-04AD          ; valid                                  # 1.1  CYRILLIC SMALL LETTER TE WITH DESCENDER
-04AE          ; mapped                 ; 04AF          # 1.1  CYRILLIC CAPITAL LETTER STRAIGHT U
-04AF          ; valid                                  # 1.1  CYRILLIC SMALL LETTER STRAIGHT U
-04B0          ; mapped                 ; 04B1          # 1.1  CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
-04B1          ; valid                                  # 1.1  CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
-04B2          ; mapped                 ; 04B3          # 1.1  CYRILLIC CAPITAL LETTER HA WITH DESCENDER
-04B3          ; valid                                  # 1.1  CYRILLIC SMALL LETTER HA WITH DESCENDER
-04B4          ; mapped                 ; 04B5          # 1.1  CYRILLIC CAPITAL LIGATURE TE TSE
-04B5          ; valid                                  # 1.1  CYRILLIC SMALL LIGATURE TE TSE
-04B6          ; mapped                 ; 04B7          # 1.1  CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
-04B7          ; valid                                  # 1.1  CYRILLIC SMALL LETTER CHE WITH DESCENDER
-04B8          ; mapped                 ; 04B9          # 1.1  CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
-04B9          ; valid                                  # 1.1  CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
-04BA          ; mapped                 ; 04BB          # 1.1  CYRILLIC CAPITAL LETTER SHHA
-04BB          ; valid                                  # 1.1  CYRILLIC SMALL LETTER SHHA
-04BC          ; mapped                 ; 04BD          # 1.1  CYRILLIC CAPITAL LETTER ABKHASIAN CHE
-04BD          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ABKHASIAN CHE
-04BE          ; mapped                 ; 04BF          # 1.1  CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
-04BF          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
-04C0          ; disallowed                             # 1.1  CYRILLIC LETTER PALOCHKA
-04C1          ; mapped                 ; 04C2          # 1.1  CYRILLIC CAPITAL LETTER ZHE WITH BREVE
-04C2          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ZHE WITH BREVE
-04C3          ; mapped                 ; 04C4          # 1.1  CYRILLIC CAPITAL LETTER KA WITH HOOK
-04C4          ; valid                                  # 1.1  CYRILLIC SMALL LETTER KA WITH HOOK
-04C5          ; mapped                 ; 04C6          # 3.2  CYRILLIC CAPITAL LETTER EL WITH TAIL
-04C6          ; valid                                  # 3.2  CYRILLIC SMALL LETTER EL WITH TAIL
-04C7          ; mapped                 ; 04C8          # 1.1  CYRILLIC CAPITAL LETTER EN WITH HOOK
-04C8          ; valid                                  # 1.1  CYRILLIC SMALL LETTER EN WITH HOOK
-04C9          ; mapped                 ; 04CA          # 3.2  CYRILLIC CAPITAL LETTER EN WITH TAIL
-04CA          ; valid                                  # 3.2  CYRILLIC SMALL LETTER EN WITH TAIL
-04CB          ; mapped                 ; 04CC          # 1.1  CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
-04CC          ; valid                                  # 1.1  CYRILLIC SMALL LETTER KHAKASSIAN CHE
-04CD          ; mapped                 ; 04CE          # 3.2  CYRILLIC CAPITAL LETTER EM WITH TAIL
-04CE          ; valid                                  # 3.2  CYRILLIC SMALL LETTER EM WITH TAIL
-04CF          ; valid                                  # 5.0  CYRILLIC SMALL LETTER PALOCHKA
-04D0          ; mapped                 ; 04D1          # 1.1  CYRILLIC CAPITAL LETTER A WITH BREVE
-04D1          ; valid                                  # 1.1  CYRILLIC SMALL LETTER A WITH BREVE
-04D2          ; mapped                 ; 04D3          # 1.1  CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-04D3          ; valid                                  # 1.1  CYRILLIC SMALL LETTER A WITH DIAERESIS
-04D4          ; mapped                 ; 04D5          # 1.1  CYRILLIC CAPITAL LIGATURE A IE
-04D5          ; valid                                  # 1.1  CYRILLIC SMALL LIGATURE A IE
-04D6          ; mapped                 ; 04D7          # 1.1  CYRILLIC CAPITAL LETTER IE WITH BREVE
-04D7          ; valid                                  # 1.1  CYRILLIC SMALL LETTER IE WITH BREVE
-04D8          ; mapped                 ; 04D9          # 1.1  CYRILLIC CAPITAL LETTER SCHWA
-04D9          ; valid                                  # 1.1  CYRILLIC SMALL LETTER SCHWA
-04DA          ; mapped                 ; 04DB          # 1.1  CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-04DB          ; valid                                  # 1.1  CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
-04DC          ; mapped                 ; 04DD          # 1.1  CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-04DD          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
-04DE          ; mapped                 ; 04DF          # 1.1  CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-04DF          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ZE WITH DIAERESIS
-04E0          ; mapped                 ; 04E1          # 1.1  CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-04E1          ; valid                                  # 1.1  CYRILLIC SMALL LETTER ABKHASIAN DZE
-04E2          ; mapped                 ; 04E3          # 1.1  CYRILLIC CAPITAL LETTER I WITH MACRON
-04E3          ; valid                                  # 1.1  CYRILLIC SMALL LETTER I WITH MACRON
-04E4          ; mapped                 ; 04E5          # 1.1  CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-04E5          ; valid                                  # 1.1  CYRILLIC SMALL LETTER I WITH DIAERESIS
-04E6          ; mapped                 ; 04E7          # 1.1  CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-04E7          ; valid                                  # 1.1  CYRILLIC SMALL LETTER O WITH DIAERESIS
-04E8          ; mapped                 ; 04E9          # 1.1  CYRILLIC CAPITAL LETTER BARRED O
-04E9          ; valid                                  # 1.1  CYRILLIC SMALL LETTER BARRED O
-04EA          ; mapped                 ; 04EB          # 1.1  CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-04EB          ; valid                                  # 1.1  CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
-04EC          ; mapped                 ; 04ED          # 3.0  CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-04ED          ; valid                                  # 3.0  CYRILLIC SMALL LETTER E WITH DIAERESIS
-04EE          ; mapped                 ; 04EF          # 1.1  CYRILLIC CAPITAL LETTER U WITH MACRON
-04EF          ; valid                                  # 1.1  CYRILLIC SMALL LETTER U WITH MACRON
-04F0          ; mapped                 ; 04F1          # 1.1  CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-04F1          ; valid                                  # 1.1  CYRILLIC SMALL LETTER U WITH DIAERESIS
-04F2          ; mapped                 ; 04F3          # 1.1  CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-04F3          ; valid                                  # 1.1  CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
-04F4          ; mapped                 ; 04F5          # 1.1  CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-04F5          ; valid                                  # 1.1  CYRILLIC SMALL LETTER CHE WITH DIAERESIS
-04F6          ; mapped                 ; 04F7          # 4.1  CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
-04F7          ; valid                                  # 4.1  CYRILLIC SMALL LETTER GHE WITH DESCENDER
-04F8          ; mapped                 ; 04F9          # 1.1  CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-04F9          ; valid                                  # 1.1  CYRILLIC SMALL LETTER YERU WITH DIAERESIS
-04FA          ; mapped                 ; 04FB          # 5.0  CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
-04FB          ; valid                                  # 5.0  CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
-04FC          ; mapped                 ; 04FD          # 5.0  CYRILLIC CAPITAL LETTER HA WITH HOOK
-04FD          ; valid                                  # 5.0  CYRILLIC SMALL LETTER HA WITH HOOK
-04FE          ; mapped                 ; 04FF          # 5.0  CYRILLIC CAPITAL LETTER HA WITH STROKE
-04FF          ; valid                                  # 5.0  CYRILLIC SMALL LETTER HA WITH STROKE
-0500          ; mapped                 ; 0501          # 3.2  CYRILLIC CAPITAL LETTER KOMI DE
-0501          ; valid                                  # 3.2  CYRILLIC SMALL LETTER KOMI DE
-0502          ; mapped                 ; 0503          # 3.2  CYRILLIC CAPITAL LETTER KOMI DJE
-0503          ; valid                                  # 3.2  CYRILLIC SMALL LETTER KOMI DJE
-0504          ; mapped                 ; 0505          # 3.2  CYRILLIC CAPITAL LETTER KOMI ZJE
-0505          ; valid                                  # 3.2  CYRILLIC SMALL LETTER KOMI ZJE
-0506          ; mapped                 ; 0507          # 3.2  CYRILLIC CAPITAL LETTER KOMI DZJE
-0507          ; valid                                  # 3.2  CYRILLIC SMALL LETTER KOMI DZJE
-0508          ; mapped                 ; 0509          # 3.2  CYRILLIC CAPITAL LETTER KOMI LJE
-0509          ; valid                                  # 3.2  CYRILLIC SMALL LETTER KOMI LJE
-050A          ; mapped                 ; 050B          # 3.2  CYRILLIC CAPITAL LETTER KOMI NJE
-050B          ; valid                                  # 3.2  CYRILLIC SMALL LETTER KOMI NJE
-050C          ; mapped                 ; 050D          # 3.2  CYRILLIC CAPITAL LETTER KOMI SJE
-050D          ; valid                                  # 3.2  CYRILLIC SMALL LETTER KOMI SJE
-050E          ; mapped                 ; 050F          # 3.2  CYRILLIC CAPITAL LETTER KOMI TJE
-050F          ; valid                                  # 3.2  CYRILLIC SMALL LETTER KOMI TJE
-0510          ; mapped                 ; 0511          # 5.0  CYRILLIC CAPITAL LETTER REVERSED ZE
-0511          ; valid                                  # 5.0  CYRILLIC SMALL LETTER REVERSED ZE
-0512          ; mapped                 ; 0513          # 5.0  CYRILLIC CAPITAL LETTER EL WITH HOOK
-0513          ; valid                                  # 5.0  CYRILLIC SMALL LETTER EL WITH HOOK
-0514          ; mapped                 ; 0515          # 5.1  CYRILLIC CAPITAL LETTER LHA
-0515          ; valid                                  # 5.1  CYRILLIC SMALL LETTER LHA
-0516          ; mapped                 ; 0517          # 5.1  CYRILLIC CAPITAL LETTER RHA
-0517          ; valid                                  # 5.1  CYRILLIC SMALL LETTER RHA
-0518          ; mapped                 ; 0519          # 5.1  CYRILLIC CAPITAL LETTER YAE
-0519          ; valid                                  # 5.1  CYRILLIC SMALL LETTER YAE
-051A          ; mapped                 ; 051B          # 5.1  CYRILLIC CAPITAL LETTER QA
-051B          ; valid                                  # 5.1  CYRILLIC SMALL LETTER QA
-051C          ; mapped                 ; 051D          # 5.1  CYRILLIC CAPITAL LETTER WE
-051D          ; valid                                  # 5.1  CYRILLIC SMALL LETTER WE
-051E          ; mapped                 ; 051F          # 5.1  CYRILLIC CAPITAL LETTER ALEUT KA
-051F          ; valid                                  # 5.1  CYRILLIC SMALL LETTER ALEUT KA
-0520          ; mapped                 ; 0521          # 5.1  CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
-0521          ; valid                                  # 5.1  CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
-0522          ; mapped                 ; 0523          # 5.1  CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
-0523          ; valid                                  # 5.1  CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
-0524          ; mapped                 ; 0525          # 5.2  CYRILLIC CAPITAL LETTER PE WITH DESCENDER
-0525          ; valid                                  # 5.2  CYRILLIC SMALL LETTER PE WITH DESCENDER
-0526          ; mapped                 ; 0527          # 6.0  CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
-0527          ; valid                                  # 6.0  CYRILLIC SMALL LETTER SHHA WITH DESCENDER
-0528          ; mapped                 ; 0529          # 7.0  CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
-0529          ; valid                                  # 7.0  CYRILLIC SMALL LETTER EN WITH LEFT HOOK
-052A          ; mapped                 ; 052B          # 7.0  CYRILLIC CAPITAL LETTER DZZHE
-052B          ; valid                                  # 7.0  CYRILLIC SMALL LETTER DZZHE
-052C          ; mapped                 ; 052D          # 7.0  CYRILLIC CAPITAL LETTER DCHE
-052D          ; valid                                  # 7.0  CYRILLIC SMALL LETTER DCHE
-052E          ; mapped                 ; 052F          # 7.0  CYRILLIC CAPITAL LETTER EL WITH DESCENDER
-052F          ; valid                                  # 7.0  CYRILLIC SMALL LETTER EL WITH DESCENDER
-0530          ; disallowed                             # NA   <reserved-0530>
-0531          ; mapped                 ; 0561          # 1.1  ARMENIAN CAPITAL LETTER AYB
-0532          ; mapped                 ; 0562          # 1.1  ARMENIAN CAPITAL LETTER BEN
-0533          ; mapped                 ; 0563          # 1.1  ARMENIAN CAPITAL LETTER GIM
-0534          ; mapped                 ; 0564          # 1.1  ARMENIAN CAPITAL LETTER DA
-0535          ; mapped                 ; 0565          # 1.1  ARMENIAN CAPITAL LETTER ECH
-0536          ; mapped                 ; 0566          # 1.1  ARMENIAN CAPITAL LETTER ZA
-0537          ; mapped                 ; 0567          # 1.1  ARMENIAN CAPITAL LETTER EH
-0538          ; mapped                 ; 0568          # 1.1  ARMENIAN CAPITAL LETTER ET
-0539          ; mapped                 ; 0569          # 1.1  ARMENIAN CAPITAL LETTER TO
-053A          ; mapped                 ; 056A          # 1.1  ARMENIAN CAPITAL LETTER ZHE
-053B          ; mapped                 ; 056B          # 1.1  ARMENIAN CAPITAL LETTER INI
-053C          ; mapped                 ; 056C          # 1.1  ARMENIAN CAPITAL LETTER LIWN
-053D          ; mapped                 ; 056D          # 1.1  ARMENIAN CAPITAL LETTER XEH
-053E          ; mapped                 ; 056E          # 1.1  ARMENIAN CAPITAL LETTER CA
-053F          ; mapped                 ; 056F          # 1.1  ARMENIAN CAPITAL LETTER KEN
-0540          ; mapped                 ; 0570          # 1.1  ARMENIAN CAPITAL LETTER HO
-0541          ; mapped                 ; 0571          # 1.1  ARMENIAN CAPITAL LETTER JA
-0542          ; mapped                 ; 0572          # 1.1  ARMENIAN CAPITAL LETTER GHAD
-0543          ; mapped                 ; 0573          # 1.1  ARMENIAN CAPITAL LETTER CHEH
-0544          ; mapped                 ; 0574          # 1.1  ARMENIAN CAPITAL LETTER MEN
-0545          ; mapped                 ; 0575          # 1.1  ARMENIAN CAPITAL LETTER YI
-0546          ; mapped                 ; 0576          # 1.1  ARMENIAN CAPITAL LETTER NOW
-0547          ; mapped                 ; 0577          # 1.1  ARMENIAN CAPITAL LETTER SHA
-0548          ; mapped                 ; 0578          # 1.1  ARMENIAN CAPITAL LETTER VO
-0549          ; mapped                 ; 0579          # 1.1  ARMENIAN CAPITAL LETTER CHA
-054A          ; mapped                 ; 057A          # 1.1  ARMENIAN CAPITAL LETTER PEH
-054B          ; mapped                 ; 057B          # 1.1  ARMENIAN CAPITAL LETTER JHEH
-054C          ; mapped                 ; 057C          # 1.1  ARMENIAN CAPITAL LETTER RA
-054D          ; mapped                 ; 057D          # 1.1  ARMENIAN CAPITAL LETTER SEH
-054E          ; mapped                 ; 057E          # 1.1  ARMENIAN CAPITAL LETTER VEW
-054F          ; mapped                 ; 057F          # 1.1  ARMENIAN CAPITAL LETTER TIWN
-0550          ; mapped                 ; 0580          # 1.1  ARMENIAN CAPITAL LETTER REH
-0551          ; mapped                 ; 0581          # 1.1  ARMENIAN CAPITAL LETTER CO
-0552          ; mapped                 ; 0582          # 1.1  ARMENIAN CAPITAL LETTER YIWN
-0553          ; mapped                 ; 0583          # 1.1  ARMENIAN CAPITAL LETTER PIWR
-0554          ; mapped                 ; 0584          # 1.1  ARMENIAN CAPITAL LETTER KEH
-0555          ; mapped                 ; 0585          # 1.1  ARMENIAN CAPITAL LETTER OH
-0556          ; mapped                 ; 0586          # 1.1  ARMENIAN CAPITAL LETTER FEH
-0557..0558    ; disallowed                             # NA   <reserved-0557>..<reserved-0558>
-0559          ; valid                                  # 1.1  ARMENIAN MODIFIER LETTER LEFT HALF RING
-055A..055F    ; valid                  ;      ; NV8    # 1.1  ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
-0560          ; valid                                  # 11.0 ARMENIAN SMALL LETTER TURNED AYB
-0561..0586    ; valid                                  # 1.1  ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LETTER FEH
-0587          ; mapped                 ; 0565 0582     # 1.1  ARMENIAN SMALL LIGATURE ECH YIWN
-0588          ; valid                                  # 11.0 ARMENIAN SMALL LETTER YI WITH STROKE
-0589          ; valid                  ;      ; NV8    # 1.1  ARMENIAN FULL STOP
-058A          ; valid                  ;      ; NV8    # 3.0  ARMENIAN HYPHEN
-058B..058C    ; disallowed                             # NA   <reserved-058B>..<reserved-058C>
-058D..058E    ; valid                  ;      ; NV8    # 7.0  RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN
-058F          ; valid                  ;      ; NV8    # 6.1  ARMENIAN DRAM SIGN
-0590          ; disallowed                             # NA   <reserved-0590>
-0591..05A1    ; valid                                  # 2.0  HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER
-05A2          ; valid                                  # 4.1  HEBREW ACCENT ATNAH HAFUKH
-05A3..05AF    ; valid                                  # 2.0  HEBREW ACCENT MUNAH..HEBREW MARK MASORA CIRCLE
-05B0..05B9    ; valid                                  # 1.1  HEBREW POINT SHEVA..HEBREW POINT HOLAM
-05BA          ; valid                                  # 5.0  HEBREW POINT HOLAM HASER FOR VAV
-05BB..05BD    ; valid                                  # 1.1  HEBREW POINT QUBUTS..HEBREW POINT METEG
-05BE          ; valid                  ;      ; NV8    # 1.1  HEBREW PUNCTUATION MAQAF
-05BF          ; valid                                  # 1.1  HEBREW POINT RAFE
-05C0          ; valid                  ;      ; NV8    # 1.1  HEBREW PUNCTUATION PASEQ
-05C1..05C2    ; valid                                  # 1.1  HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
-05C3          ; valid                  ;      ; NV8    # 1.1  HEBREW PUNCTUATION SOF PASUQ
-05C4          ; valid                                  # 2.0  HEBREW MARK UPPER DOT
-05C5          ; valid                                  # 4.1  HEBREW MARK LOWER DOT
-05C6          ; valid                  ;      ; NV8    # 4.1  HEBREW PUNCTUATION NUN HAFUKHA
-05C7          ; valid                                  # 4.1  HEBREW POINT QAMATS QATAN
-05C8..05CF    ; disallowed                             # NA   <reserved-05C8>..<reserved-05CF>
-05D0..05EA    ; valid                                  # 1.1  HEBREW LETTER ALEF..HEBREW LETTER TAV
-05EB..05EE    ; disallowed                             # NA   <reserved-05EB>..<reserved-05EE>
-05EF          ; valid                                  # 11.0 HEBREW YOD TRIANGLE
-05F0..05F4    ; valid                                  # 1.1  HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW PUNCTUATION GERSHAYIM
-05F5..05FF    ; disallowed                             # NA   <reserved-05F5>..<reserved-05FF>
-0600..0603    ; disallowed                             # 4.0  ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
-0604          ; disallowed                             # 6.1  ARABIC SIGN SAMVAT
-0605          ; disallowed                             # 7.0  ARABIC NUMBER MARK ABOVE
-0606..060A    ; valid                  ;      ; NV8    # 5.1  ARABIC-INDIC CUBE ROOT..ARABIC-INDIC PER TEN THOUSAND SIGN
-060B          ; valid                  ;      ; NV8    # 4.1  AFGHANI SIGN
-060C          ; valid                  ;      ; NV8    # 1.1  ARABIC COMMA
-060D..060F    ; valid                  ;      ; NV8    # 4.0  ARABIC DATE SEPARATOR..ARABIC SIGN MISRA
-0610..0615    ; valid                                  # 4.0  ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH
-0616..061A    ; valid                                  # 5.1  ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH..ARABIC SMALL KASRA
-061B          ; valid                  ;      ; NV8    # 1.1  ARABIC SEMICOLON
-061C          ; disallowed                             # 6.3  ARABIC LETTER MARK
-061D          ; disallowed                             # NA   <reserved-061D>
-061E          ; valid                  ;      ; NV8    # 4.1  ARABIC TRIPLE DOT PUNCTUATION MARK
-061F          ; valid                  ;      ; NV8    # 1.1  ARABIC QUESTION MARK
-0620          ; valid                                  # 6.0  ARABIC LETTER KASHMIRI YEH
-0621..063A    ; valid                                  # 1.1  ARABIC LETTER HAMZA..ARABIC LETTER GHAIN
-063B..063F    ; valid                                  # 5.1  ARABIC LETTER KEHEH WITH TWO DOTS ABOVE..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
-0640          ; valid                  ;      ; NV8    # 1.1  ARABIC TATWEEL
-0641..0652    ; valid                                  # 1.1  ARABIC LETTER FEH..ARABIC SUKUN
-0653..0655    ; valid                                  # 3.0  ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
-0656..0658    ; valid                                  # 4.0  ARABIC SUBSCRIPT ALEF..ARABIC MARK NOON GHUNNA
-0659..065E    ; valid                                  # 4.1  ARABIC ZWARAKAY..ARABIC FATHA WITH TWO DOTS
-065F          ; valid                                  # 6.0  ARABIC WAVY HAMZA BELOW
-0660..0669    ; valid                                  # 1.1  ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
-066A..066D    ; valid                  ;      ; NV8    # 1.1  ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
-066E..066F    ; valid                                  # 3.2  ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
-0670..0674    ; valid                                  # 1.1  ARABIC LETTER SUPERSCRIPT ALEF..ARABIC LETTER HIGH HAMZA
-0675          ; mapped                 ; 0627 0674     # 1.1  ARABIC LETTER HIGH HAMZA ALEF
-0676          ; mapped                 ; 0648 0674     # 1.1  ARABIC LETTER HIGH HAMZA WAW
-0677          ; mapped                 ; 06C7 0674     # 1.1  ARABIC LETTER U WITH HAMZA ABOVE
-0678          ; mapped                 ; 064A 0674     # 1.1  ARABIC LETTER HIGH HAMZA YEH
-0679..06B7    ; valid                                  # 1.1  ARABIC LETTER TTEH..ARABIC LETTER LAM WITH THREE DOTS ABOVE
-06B8..06B9    ; valid                                  # 3.0  ARABIC LETTER LAM WITH THREE DOTS BELOW..ARABIC LETTER NOON WITH DOT BELOW
-06BA..06BE    ; valid                                  # 1.1  ARABIC LETTER NOON GHUNNA..ARABIC LETTER HEH DOACHASHMEE
-06BF          ; valid                                  # 3.0  ARABIC LETTER TCHEH WITH DOT ABOVE
-06C0..06CE    ; valid                                  # 1.1  ARABIC LETTER HEH WITH YEH ABOVE..ARABIC LETTER YEH WITH SMALL V
-06CF          ; valid                                  # 3.0  ARABIC LETTER WAW WITH DOT ABOVE
-06D0..06D3    ; valid                                  # 1.1  ARABIC LETTER E..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
-06D4          ; valid                  ;      ; NV8    # 1.1  ARABIC FULL STOP
-06D5..06DC    ; valid                                  # 1.1  ARABIC LETTER AE..ARABIC SMALL HIGH SEEN
-06DD          ; disallowed                             # 1.1  ARABIC END OF AYAH
-06DE          ; valid                  ;      ; NV8    # 1.1  ARABIC START OF RUB EL HIZB
-06DF..06E8    ; valid                                  # 1.1  ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH NOON
-06E9          ; valid                  ;      ; NV8    # 1.1  ARABIC PLACE OF SAJDAH
-06EA..06ED    ; valid                                  # 1.1  ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
-06EE..06EF    ; valid                                  # 4.0  ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
-06F0..06F9    ; valid                                  # 1.1  EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
-06FA..06FE    ; valid                                  # 3.0  ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC SIGN SINDHI POSTPOSITION MEN
-06FF          ; valid                                  # 4.0  ARABIC LETTER HEH WITH INVERTED V
-0700..070D    ; valid                  ;      ; NV8    # 3.0  SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
-070E          ; disallowed                             # NA   <reserved-070E>
-070F          ; disallowed                             # 3.0  SYRIAC ABBREVIATION MARK
-0710..072C    ; valid                                  # 3.0  SYRIAC LETTER ALAPH..SYRIAC LETTER TAW
-072D..072F    ; valid                                  # 4.0  SYRIAC LETTER PERSIAN BHETH..SYRIAC LETTER PERSIAN DHALATH
-0730..074A    ; valid                                  # 3.0  SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
-074B..074C    ; disallowed                             # NA   <reserved-074B>..<reserved-074C>
-074D..074F    ; valid                                  # 4.0  SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE
-0750..076D    ; valid                                  # 4.1  ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
-076E..077F    ; valid                                  # 5.1  ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE
-0780..07B0    ; valid                                  # 3.0  THAANA LETTER HAA..THAANA SUKUN
-07B1          ; valid                                  # 3.2  THAANA LETTER NAA
-07B2..07BF    ; disallowed                             # NA   <reserved-07B2>..<reserved-07BF>
-07C0..07F5    ; valid                                  # 5.0  NKO DIGIT ZERO..NKO LOW TONE APOSTROPHE
-07F6..07FA    ; valid                  ;      ; NV8    # 5.0  NKO SYMBOL OO DENNEN..NKO LAJANYALAN
-07FB..07FC    ; disallowed                             # NA   <reserved-07FB>..<reserved-07FC>
-07FD          ; valid                                  # 11.0 NKO DANTAYALAN
-07FE..07FF    ; valid                  ;      ; NV8    # 11.0 NKO DOROME SIGN..NKO TAMAN SIGN
-0800..082D    ; valid                                  # 5.2  SAMARITAN LETTER ALAF..SAMARITAN MARK NEQUDAA
-082E..082F    ; disallowed                             # NA   <reserved-082E>..<reserved-082F>
-0830..083E    ; valid                  ;      ; NV8    # 5.2  SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU
-083F          ; disallowed                             # NA   <reserved-083F>
-0840..085B    ; valid                                  # 6.0  MANDAIC LETTER HALQA..MANDAIC GEMINATION MARK
-085C..085D    ; disallowed                             # NA   <reserved-085C>..<reserved-085D>
-085E          ; valid                  ;      ; NV8    # 6.0  MANDAIC PUNCTUATION
-085F          ; disallowed                             # NA   <reserved-085F>
-0860..086A    ; valid                                  # 10.0 SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
-086B..089F    ; disallowed                             # NA   <reserved-086B>..<reserved-089F>
-08A0          ; valid                                  # 6.1  ARABIC LETTER BEH WITH SMALL V BELOW
-08A1          ; valid                                  # 7.0  ARABIC LETTER BEH WITH HAMZA ABOVE
-08A2..08AC    ; valid                                  # 6.1  ARABIC LETTER JEEM WITH TWO DOTS ABOVE..ARABIC LETTER ROHINGYA YEH
-08AD..08B2    ; valid                                  # 7.0  ARABIC LETTER LOW ALEF..ARABIC LETTER ZAIN WITH INVERTED V ABOVE
-08B3..08B4    ; valid                                  # 8.0  ARABIC LETTER AIN WITH THREE DOTS BELOW..ARABIC LETTER KAF WITH DOT BELOW
-08B5          ; disallowed                             # NA   <reserved-08B5>
-08B6..08BD    ; valid                                  # 9.0  ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
-08BE..08C7    ; valid                                  # 13.0 ARABIC LETTER PEH WITH SMALL V..ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
-08C8..08D2    ; disallowed                             # NA   <reserved-08C8>..<reserved-08D2>
-08D3          ; valid                                  # 11.0 ARABIC SMALL LOW WAW
-08D4..08E1    ; valid                                  # 9.0  ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
-08E2          ; disallowed                             # 9.0  ARABIC DISPUTED END OF AYAH
-08E3          ; valid                                  # 8.0  ARABIC TURNED DAMMA BELOW
-08E4..08FE    ; valid                                  # 6.1  ARABIC CURLY FATHA..ARABIC DAMMA WITH DOT
-08FF          ; valid                                  # 7.0  ARABIC MARK SIDEWAYS NOON GHUNNA
-0900          ; valid                                  # 5.2  DEVANAGARI SIGN INVERTED CANDRABINDU
-0901..0903    ; valid                                  # 1.1  DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN VISARGA
-0904          ; valid                                  # 4.0  DEVANAGARI LETTER SHORT A
-0905..0939    ; valid                                  # 1.1  DEVANAGARI LETTER A..DEVANAGARI LETTER HA
-093A..093B    ; valid                                  # 6.0  DEVANAGARI VOWEL SIGN OE..DEVANAGARI VOWEL SIGN OOE
-093C..094D    ; valid                                  # 1.1  DEVANAGARI SIGN NUKTA..DEVANAGARI SIGN VIRAMA
-094E          ; valid                                  # 5.2  DEVANAGARI VOWEL SIGN PRISHTHAMATRA E
-094F          ; valid                                  # 6.0  DEVANAGARI VOWEL SIGN AW
-0950..0954    ; valid                                  # 1.1  DEVANAGARI OM..DEVANAGARI ACUTE ACCENT
-0955          ; valid                                  # 5.2  DEVANAGARI VOWEL SIGN CANDRA LONG E
-0956..0957    ; valid                                  # 6.0  DEVANAGARI VOWEL SIGN UE..DEVANAGARI VOWEL SIGN UUE
-0958          ; mapped                 ; 0915 093C     # 1.1  DEVANAGARI LETTER QA
-0959          ; mapped                 ; 0916 093C     # 1.1  DEVANAGARI LETTER KHHA
-095A          ; mapped                 ; 0917 093C     # 1.1  DEVANAGARI LETTER GHHA
-095B          ; mapped                 ; 091C 093C     # 1.1  DEVANAGARI LETTER ZA
-095C          ; mapped                 ; 0921 093C     # 1.1  DEVANAGARI LETTER DDDHA
-095D          ; mapped                 ; 0922 093C     # 1.1  DEVANAGARI LETTER RHA
-095E          ; mapped                 ; 092B 093C     # 1.1  DEVANAGARI LETTER FA
-095F          ; mapped                 ; 092F 093C     # 1.1  DEVANAGARI LETTER YYA
-0960..0963    ; valid                                  # 1.1  DEVANAGARI LETTER VOCALIC RR..DEVANAGARI VOWEL SIGN VOCALIC LL
-0964..0965    ; valid                  ;      ; NV8    # 1.1  DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
-0966..096F    ; valid                                  # 1.1  DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
-0970          ; valid                  ;      ; NV8    # 1.1  DEVANAGARI ABBREVIATION SIGN
-0971..0972    ; valid                                  # 5.1  DEVANAGARI SIGN HIGH SPACING DOT..DEVANAGARI LETTER CANDRA A
-0973..0977    ; valid                                  # 6.0  DEVANAGARI LETTER OE..DEVANAGARI LETTER UUE
-0978          ; valid                                  # 7.0  DEVANAGARI LETTER MARWARI DDA
-0979..097A    ; valid                                  # 5.2  DEVANAGARI LETTER ZHA..DEVANAGARI LETTER HEAVY YA
-097B..097C    ; valid                                  # 5.0  DEVANAGARI LETTER GGA..DEVANAGARI LETTER JJA
-097D          ; valid                                  # 4.1  DEVANAGARI LETTER GLOTTAL STOP
-097E..097F    ; valid                                  # 5.0  DEVANAGARI LETTER DDDA..DEVANAGARI LETTER BBA
-0980          ; valid                                  # 7.0  BENGALI ANJI
-0981..0983    ; valid                                  # 1.1  BENGALI SIGN CANDRABINDU..BENGALI SIGN VISARGA
-0984          ; disallowed                             # NA   <reserved-0984>
-0985..098C    ; valid                                  # 1.1  BENGALI LETTER A..BENGALI LETTER VOCALIC L
-098D..098E    ; disallowed                             # NA   <reserved-098D>..<reserved-098E>
-098F..0990    ; valid                                  # 1.1  BENGALI LETTER E..BENGALI LETTER AI
-0991..0992    ; disallowed                             # NA   <reserved-0991>..<reserved-0992>
-0993..09A8    ; valid                                  # 1.1  BENGALI LETTER O..BENGALI LETTER NA
-09A9          ; disallowed                             # NA   <reserved-09A9>
-09AA..09B0    ; valid                                  # 1.1  BENGALI LETTER PA..BENGALI LETTER RA
-09B1          ; disallowed                             # NA   <reserved-09B1>
-09B2          ; valid                                  # 1.1  BENGALI LETTER LA
-09B3..09B5    ; disallowed                             # NA   <reserved-09B3>..<reserved-09B5>
-09B6..09B9    ; valid                                  # 1.1  BENGALI LETTER SHA..BENGALI LETTER HA
-09BA..09BB    ; disallowed                             # NA   <reserved-09BA>..<reserved-09BB>
-09BC          ; valid                                  # 1.1  BENGALI SIGN NUKTA
-09BD          ; valid                                  # 4.0  BENGALI SIGN AVAGRAHA
-09BE..09C4    ; valid                                  # 1.1  BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN VOCALIC RR
-09C5..09C6    ; disallowed                             # NA   <reserved-09C5>..<reserved-09C6>
-09C7..09C8    ; valid                                  # 1.1  BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
-09C9..09CA    ; disallowed                             # NA   <reserved-09C9>..<reserved-09CA>
-09CB..09CD    ; valid                                  # 1.1  BENGALI VOWEL SIGN O..BENGALI SIGN VIRAMA
-09CE          ; valid                                  # 4.1  BENGALI LETTER KHANDA TA
-09CF..09D6    ; disallowed                             # NA   <reserved-09CF>..<reserved-09D6>
-09D7          ; valid                                  # 1.1  BENGALI AU LENGTH MARK
-09D8..09DB    ; disallowed                             # NA   <reserved-09D8>..<reserved-09DB>
-09DC          ; mapped                 ; 09A1 09BC     # 1.1  BENGALI LETTER RRA
-09DD          ; mapped                 ; 09A2 09BC     # 1.1  BENGALI LETTER RHA
-09DE          ; disallowed                             # NA   <reserved-09DE>
-09DF          ; mapped                 ; 09AF 09BC     # 1.1  BENGALI LETTER YYA
-09E0..09E3    ; valid                                  # 1.1  BENGALI LETTER VOCALIC RR..BENGALI VOWEL SIGN VOCALIC LL
-09E4..09E5    ; disallowed                             # NA   <reserved-09E4>..<reserved-09E5>
-09E6..09F1    ; valid                                  # 1.1  BENGALI DIGIT ZERO..BENGALI LETTER RA WITH LOWER DIAGONAL
-09F2..09FA    ; valid                  ;      ; NV8    # 1.1  BENGALI RUPEE MARK..BENGALI ISSHAR
-09FB          ; valid                  ;      ; NV8    # 5.2  BENGALI GANDA MARK
-09FC          ; valid                                  # 10.0 BENGALI LETTER VEDIC ANUSVARA
-09FD          ; valid                  ;      ; NV8    # 10.0 BENGALI ABBREVIATION SIGN
-09FE          ; valid                                  # 11.0 BENGALI SANDHI MARK
-09FF..0A00    ; disallowed                             # NA   <reserved-09FF>..<reserved-0A00>
-0A01          ; valid                                  # 4.0  GURMUKHI SIGN ADAK BINDI
-0A02          ; valid                                  # 1.1  GURMUKHI SIGN BINDI
-0A03          ; valid                                  # 4.0  GURMUKHI SIGN VISARGA
-0A04          ; disallowed                             # NA   <reserved-0A04>
-0A05..0A0A    ; valid                                  # 1.1  GURMUKHI LETTER A..GURMUKHI LETTER UU
-0A0B..0A0E    ; disallowed                             # NA   <reserved-0A0B>..<reserved-0A0E>
-0A0F..0A10    ; valid                                  # 1.1  GURMUKHI LETTER EE..GURMUKHI LETTER AI
-0A11..0A12    ; disallowed                             # NA   <reserved-0A11>..<reserved-0A12>
-0A13..0A28    ; valid                                  # 1.1  GURMUKHI LETTER OO..GURMUKHI LETTER NA
-0A29          ; disallowed                             # NA   <reserved-0A29>
-0A2A..0A30    ; valid                                  # 1.1  GURMUKHI LETTER PA..GURMUKHI LETTER RA
-0A31          ; disallowed                             # NA   <reserved-0A31>
-0A32          ; valid                                  # 1.1  GURMUKHI LETTER LA
-0A33          ; mapped                 ; 0A32 0A3C     # 1.1  GURMUKHI LETTER LLA
-0A34          ; disallowed                             # NA   <reserved-0A34>
-0A35          ; valid                                  # 1.1  GURMUKHI LETTER VA
-0A36          ; mapped                 ; 0A38 0A3C     # 1.1  GURMUKHI LETTER SHA
-0A37          ; disallowed                             # NA   <reserved-0A37>
-0A38..0A39    ; valid                                  # 1.1  GURMUKHI LETTER SA..GURMUKHI LETTER HA
-0A3A..0A3B    ; disallowed                             # NA   <reserved-0A3A>..<reserved-0A3B>
-0A3C          ; valid                                  # 1.1  GURMUKHI SIGN NUKTA
-0A3D          ; disallowed                             # NA   <reserved-0A3D>
-0A3E..0A42    ; valid                                  # 1.1  GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN UU
-0A43..0A46    ; disallowed                             # NA   <reserved-0A43>..<reserved-0A46>
-0A47..0A48    ; valid                                  # 1.1  GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
-0A49..0A4A    ; disallowed                             # NA   <reserved-0A49>..<reserved-0A4A>
-0A4B..0A4D    ; valid                                  # 1.1  GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
-0A4E..0A50    ; disallowed                             # NA   <reserved-0A4E>..<reserved-0A50>
-0A51          ; valid                                  # 5.1  GURMUKHI SIGN UDAAT
-0A52..0A58    ; disallowed                             # NA   <reserved-0A52>..<reserved-0A58>
-0A59          ; mapped                 ; 0A16 0A3C     # 1.1  GURMUKHI LETTER KHHA
-0A5A          ; mapped                 ; 0A17 0A3C     # 1.1  GURMUKHI LETTER GHHA
-0A5B          ; mapped                 ; 0A1C 0A3C     # 1.1  GURMUKHI LETTER ZA
-0A5C          ; valid                                  # 1.1  GURMUKHI LETTER RRA
-0A5D          ; disallowed                             # NA   <reserved-0A5D>
-0A5E          ; mapped                 ; 0A2B 0A3C     # 1.1  GURMUKHI LETTER FA
-0A5F..0A65    ; disallowed                             # NA   <reserved-0A5F>..<reserved-0A65>
-0A66..0A74    ; valid                                  # 1.1  GURMUKHI DIGIT ZERO..GURMUKHI EK ONKAR
-0A75          ; valid                                  # 5.1  GURMUKHI SIGN YAKASH
-0A76          ; valid                  ;      ; NV8    # 11.0 GURMUKHI ABBREVIATION SIGN
-0A77..0A80    ; disallowed                             # NA   <reserved-0A77>..<reserved-0A80>
-0A81..0A83    ; valid                                  # 1.1  GUJARATI SIGN CANDRABINDU..GUJARATI SIGN VISARGA
-0A84          ; disallowed                             # NA   <reserved-0A84>
-0A85..0A8B    ; valid                                  # 1.1  GUJARATI LETTER A..GUJARATI LETTER VOCALIC R
-0A8C          ; valid                                  # 4.0  GUJARATI LETTER VOCALIC L
-0A8D          ; valid                                  # 1.1  GUJARATI VOWEL CANDRA E
-0A8E          ; disallowed                             # NA   <reserved-0A8E>
-0A8F..0A91    ; valid                                  # 1.1  GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
-0A92          ; disallowed                             # NA   <reserved-0A92>
-0A93..0AA8    ; valid                                  # 1.1  GUJARATI LETTER O..GUJARATI LETTER NA
-0AA9          ; disallowed                             # NA   <reserved-0AA9>
-0AAA..0AB0    ; valid                                  # 1.1  GUJARATI LETTER PA..GUJARATI LETTER RA
-0AB1          ; disallowed                             # NA   <reserved-0AB1>
-0AB2..0AB3    ; valid                                  # 1.1  GUJARATI LETTER LA..GUJARATI LETTER LLA
-0AB4          ; disallowed                             # NA   <reserved-0AB4>
-0AB5..0AB9    ; valid                                  # 1.1  GUJARATI LETTER VA..GUJARATI LETTER HA
-0ABA..0ABB    ; disallowed                             # NA   <reserved-0ABA>..<reserved-0ABB>
-0ABC..0AC5    ; valid                                  # 1.1  GUJARATI SIGN NUKTA..GUJARATI VOWEL SIGN CANDRA E
-0AC6          ; disallowed                             # NA   <reserved-0AC6>
-0AC7..0AC9    ; valid                                  # 1.1  GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN CANDRA O
-0ACA          ; disallowed                             # NA   <reserved-0ACA>
-0ACB..0ACD    ; valid                                  # 1.1  GUJARATI VOWEL SIGN O..GUJARATI SIGN VIRAMA
-0ACE..0ACF    ; disallowed                             # NA   <reserved-0ACE>..<reserved-0ACF>
-0AD0          ; valid                                  # 1.1  GUJARATI OM
-0AD1..0ADF    ; disallowed                             # NA   <reserved-0AD1>..<reserved-0ADF>
-0AE0          ; valid                                  # 1.1  GUJARATI LETTER VOCALIC RR
-0AE1..0AE3    ; valid                                  # 4.0  GUJARATI LETTER VOCALIC LL..GUJARATI VOWEL SIGN VOCALIC LL
-0AE4..0AE5    ; disallowed                             # NA   <reserved-0AE4>..<reserved-0AE5>
-0AE6..0AEF    ; valid                                  # 1.1  GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
-0AF0          ; valid                  ;      ; NV8    # 6.1  GUJARATI ABBREVIATION SIGN
-0AF1          ; valid                  ;      ; NV8    # 4.0  GUJARATI RUPEE SIGN
-0AF2..0AF8    ; disallowed                             # NA   <reserved-0AF2>..<reserved-0AF8>
-0AF9          ; valid                                  # 8.0  GUJARATI LETTER ZHA
-0AFA..0AFF    ; valid                                  # 10.0 GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
-0B00          ; disallowed                             # NA   <reserved-0B00>
-0B01..0B03    ; valid                                  # 1.1  ORIYA SIGN CANDRABINDU..ORIYA SIGN VISARGA
-0B04          ; disallowed                             # NA   <reserved-0B04>
-0B05..0B0C    ; valid                                  # 1.1  ORIYA LETTER A..ORIYA LETTER VOCALIC L
-0B0D..0B0E    ; disallowed                             # NA   <reserved-0B0D>..<reserved-0B0E>
-0B0F..0B10    ; valid                                  # 1.1  ORIYA LETTER E..ORIYA LETTER AI
-0B11..0B12    ; disallowed                             # NA   <reserved-0B11>..<reserved-0B12>
-0B13..0B28    ; valid                                  # 1.1  ORIYA LETTER O..ORIYA LETTER NA
-0B29          ; disallowed                             # NA   <reserved-0B29>
-0B2A..0B30    ; valid                                  # 1.1  ORIYA LETTER PA..ORIYA LETTER RA
-0B31          ; disallowed                             # NA   <reserved-0B31>
-0B32..0B33    ; valid                                  # 1.1  ORIYA LETTER LA..ORIYA LETTER LLA
-0B34          ; disallowed                             # NA   <reserved-0B34>
-0B35          ; valid                                  # 4.0  ORIYA LETTER VA
-0B36..0B39    ; valid                                  # 1.1  ORIYA LETTER SHA..ORIYA LETTER HA
-0B3A..0B3B    ; disallowed                             # NA   <reserved-0B3A>..<reserved-0B3B>
-0B3C..0B43    ; valid                                  # 1.1  ORIYA SIGN NUKTA..ORIYA VOWEL SIGN VOCALIC R
-0B44          ; valid                                  # 5.1  ORIYA VOWEL SIGN VOCALIC RR
-0B45..0B46    ; disallowed                             # NA   <reserved-0B45>..<reserved-0B46>
-0B47..0B48    ; valid                                  # 1.1  ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
-0B49..0B4A    ; disallowed                             # NA   <reserved-0B49>..<reserved-0B4A>
-0B4B..0B4D    ; valid                                  # 1.1  ORIYA VOWEL SIGN O..ORIYA SIGN VIRAMA
-0B4E..0B54    ; disallowed                             # NA   <reserved-0B4E>..<reserved-0B54>
-0B55          ; valid                                  # 13.0 ORIYA SIGN OVERLINE
-0B56..0B57    ; valid                                  # 1.1  ORIYA AI LENGTH MARK..ORIYA AU LENGTH MARK
-0B58..0B5B    ; disallowed                             # NA   <reserved-0B58>..<reserved-0B5B>
-0B5C          ; mapped                 ; 0B21 0B3C     # 1.1  ORIYA LETTER RRA
-0B5D          ; mapped                 ; 0B22 0B3C     # 1.1  ORIYA LETTER RHA
-0B5E          ; disallowed                             # NA   <reserved-0B5E>
-0B5F..0B61    ; valid                                  # 1.1  ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
-0B62..0B63    ; valid                                  # 5.1  ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
-0B64..0B65    ; disallowed                             # NA   <reserved-0B64>..<reserved-0B65>
-0B66..0B6F    ; valid                                  # 1.1  ORIYA DIGIT ZERO..ORIYA DIGIT NINE
-0B70          ; valid                  ;      ; NV8    # 1.1  ORIYA ISSHAR
-0B71          ; valid                                  # 4.0  ORIYA LETTER WA
-0B72..0B77    ; valid                  ;      ; NV8    # 6.0  ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS
-0B78..0B81    ; disallowed                             # NA   <reserved-0B78>..<reserved-0B81>
-0B82..0B83    ; valid                                  # 1.1  TAMIL SIGN ANUSVARA..TAMIL SIGN VISARGA
-0B84          ; disallowed                             # NA   <reserved-0B84>
-0B85..0B8A    ; valid                                  # 1.1  TAMIL LETTER A..TAMIL LETTER UU
-0B8B..0B8D    ; disallowed                             # NA   <reserved-0B8B>..<reserved-0B8D>
-0B8E..0B90    ; valid                                  # 1.1  TAMIL LETTER E..TAMIL LETTER AI
-0B91          ; disallowed                             # NA   <reserved-0B91>
-0B92..0B95    ; valid                                  # 1.1  TAMIL LETTER O..TAMIL LETTER KA
-0B96..0B98    ; disallowed                             # NA   <reserved-0B96>..<reserved-0B98>
-0B99..0B9A    ; valid                                  # 1.1  TAMIL LETTER NGA..TAMIL LETTER CA
-0B9B          ; disallowed                             # NA   <reserved-0B9B>
-0B9C          ; valid                                  # 1.1  TAMIL LETTER JA
-0B9D          ; disallowed                             # NA   <reserved-0B9D>
-0B9E..0B9F    ; valid                                  # 1.1  TAMIL LETTER NYA..TAMIL LETTER TTA
-0BA0..0BA2    ; disallowed                             # NA   <reserved-0BA0>..<reserved-0BA2>
-0BA3..0BA4    ; valid                                  # 1.1  TAMIL LETTER NNA..TAMIL LETTER TA
-0BA5..0BA7    ; disallowed                             # NA   <reserved-0BA5>..<reserved-0BA7>
-0BA8..0BAA    ; valid                                  # 1.1  TAMIL LETTER NA..TAMIL LETTER PA
-0BAB..0BAD    ; disallowed                             # NA   <reserved-0BAB>..<reserved-0BAD>
-0BAE..0BB5    ; valid                                  # 1.1  TAMIL LETTER MA..TAMIL LETTER VA
-0BB6          ; valid                                  # 4.1  TAMIL LETTER SHA
-0BB7..0BB9    ; valid                                  # 1.1  TAMIL LETTER SSA..TAMIL LETTER HA
-0BBA..0BBD    ; disallowed                             # NA   <reserved-0BBA>..<reserved-0BBD>
-0BBE..0BC2    ; valid                                  # 1.1  TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN UU
-0BC3..0BC5    ; disallowed                             # NA   <reserved-0BC3>..<reserved-0BC5>
-0BC6..0BC8    ; valid                                  # 1.1  TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
-0BC9          ; disallowed                             # NA   <reserved-0BC9>
-0BCA..0BCD    ; valid                                  # 1.1  TAMIL VOWEL SIGN O..TAMIL SIGN VIRAMA
-0BCE..0BCF    ; disallowed                             # NA   <reserved-0BCE>..<reserved-0BCF>
-0BD0          ; valid                                  # 5.1  TAMIL OM
-0BD1..0BD6    ; disallowed                             # NA   <reserved-0BD1>..<reserved-0BD6>
-0BD7          ; valid                                  # 1.1  TAMIL AU LENGTH MARK
-0BD8..0BE5    ; disallowed                             # NA   <reserved-0BD8>..<reserved-0BE5>
-0BE6          ; valid                                  # 4.1  TAMIL DIGIT ZERO
-0BE7..0BEF    ; valid                                  # 1.1  TAMIL DIGIT ONE..TAMIL DIGIT NINE
-0BF0..0BF2    ; valid                  ;      ; NV8    # 1.1  TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
-0BF3..0BFA    ; valid                  ;      ; NV8    # 4.0  TAMIL DAY SIGN..TAMIL NUMBER SIGN
-0BFB..0BFF    ; disallowed                             # NA   <reserved-0BFB>..<reserved-0BFF>
-0C00          ; valid                                  # 7.0  TELUGU SIGN COMBINING CANDRABINDU ABOVE
-0C01..0C03    ; valid                                  # 1.1  TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
-0C04          ; valid                                  # 11.0 TELUGU SIGN COMBINING ANUSVARA ABOVE
-0C05..0C0C    ; valid                                  # 1.1  TELUGU LETTER A..TELUGU LETTER VOCALIC L
-0C0D          ; disallowed                             # NA   <reserved-0C0D>
-0C0E..0C10    ; valid                                  # 1.1  TELUGU LETTER E..TELUGU LETTER AI
-0C11          ; disallowed                             # NA   <reserved-0C11>
-0C12..0C28    ; valid                                  # 1.1  TELUGU LETTER O..TELUGU LETTER NA
-0C29          ; disallowed                             # NA   <reserved-0C29>
-0C2A..0C33    ; valid                                  # 1.1  TELUGU LETTER PA..TELUGU LETTER LLA
-0C34          ; valid                                  # 7.0  TELUGU LETTER LLLA
-0C35..0C39    ; valid                                  # 1.1  TELUGU LETTER VA..TELUGU LETTER HA
-0C3A..0C3C    ; disallowed                             # NA   <reserved-0C3A>..<reserved-0C3C>
-0C3D          ; valid                                  # 5.1  TELUGU SIGN AVAGRAHA
-0C3E..0C44    ; valid                                  # 1.1  TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN VOCALIC RR
-0C45          ; disallowed                             # NA   <reserved-0C45>
-0C46..0C48    ; valid                                  # 1.1  TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
-0C49          ; disallowed                             # NA   <reserved-0C49>
-0C4A..0C4D    ; valid                                  # 1.1  TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
-0C4E..0C54    ; disallowed                             # NA   <reserved-0C4E>..<reserved-0C54>
-0C55..0C56    ; valid                                  # 1.1  TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
-0C57          ; disallowed                             # NA   <reserved-0C57>
-0C58..0C59    ; valid                                  # 5.1  TELUGU LETTER TSA..TELUGU LETTER DZA
-0C5A          ; valid                                  # 8.0  TELUGU LETTER RRRA
-0C5B..0C5F    ; disallowed                             # NA   <reserved-0C5B>..<reserved-0C5F>
-0C60..0C61    ; valid                                  # 1.1  TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
-0C62..0C63    ; valid                                  # 5.1  TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
-0C64..0C65    ; disallowed                             # NA   <reserved-0C64>..<reserved-0C65>
-0C66..0C6F    ; valid                                  # 1.1  TELUGU DIGIT ZERO..TELUGU DIGIT NINE
-0C70..0C76    ; disallowed                             # NA   <reserved-0C70>..<reserved-0C76>
-0C77          ; valid                  ;      ; NV8    # 12.0 TELUGU SIGN SIDDHAM
-0C78..0C7F    ; valid                  ;      ; NV8    # 5.1  TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU SIGN TUUMU
-0C80          ; valid                                  # 9.0  KANNADA SIGN SPACING CANDRABINDU
-0C81          ; valid                                  # 7.0  KANNADA SIGN CANDRABINDU
-0C82..0C83    ; valid                                  # 1.1  KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
-0C84          ; valid                  ;      ; NV8    # 11.0 KANNADA SIGN SIDDHAM
-0C85..0C8C    ; valid                                  # 1.1  KANNADA LETTER A..KANNADA LETTER VOCALIC L
-0C8D          ; disallowed                             # NA   <reserved-0C8D>
-0C8E..0C90    ; valid                                  # 1.1  KANNADA LETTER E..KANNADA LETTER AI
-0C91          ; disallowed                             # NA   <reserved-0C91>
-0C92..0CA8    ; valid                                  # 1.1  KANNADA LETTER O..KANNADA LETTER NA
-0CA9          ; disallowed                             # NA   <reserved-0CA9>
-0CAA..0CB3    ; valid                                  # 1.1  KANNADA LETTER PA..KANNADA LETTER LLA
-0CB4          ; disallowed                             # NA   <reserved-0CB4>
-0CB5..0CB9    ; valid                                  # 1.1  KANNADA LETTER VA..KANNADA LETTER HA
-0CBA..0CBB    ; disallowed                             # NA   <reserved-0CBA>..<reserved-0CBB>
-0CBC..0CBD    ; valid                                  # 4.0  KANNADA SIGN NUKTA..KANNADA SIGN AVAGRAHA
-0CBE..0CC4    ; valid                                  # 1.1  KANNADA VOWEL SIGN AA..KANNADA VOWEL SIGN VOCALIC RR
-0CC5          ; disallowed                             # NA   <reserved-0CC5>
-0CC6..0CC8    ; valid                                  # 1.1  KANNADA VOWEL SIGN E..KANNADA VOWEL SIGN AI
-0CC9          ; disallowed                             # NA   <reserved-0CC9>
-0CCA..0CCD    ; valid                                  # 1.1  KANNADA VOWEL SIGN O..KANNADA SIGN VIRAMA
-0CCE..0CD4    ; disallowed                             # NA   <reserved-0CCE>..<reserved-0CD4>
-0CD5..0CD6    ; valid                                  # 1.1  KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
-0CD7..0CDD    ; disallowed                             # NA   <reserved-0CD7>..<reserved-0CDD>
-0CDE          ; valid                                  # 1.1  KANNADA LETTER FA
-0CDF          ; disallowed                             # NA   <reserved-0CDF>
-0CE0..0CE1    ; valid                                  # 1.1  KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
-0CE2..0CE3    ; valid                                  # 5.0  KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
-0CE4..0CE5    ; disallowed                             # NA   <reserved-0CE4>..<reserved-0CE5>
-0CE6..0CEF    ; valid                                  # 1.1  KANNADA DIGIT ZERO..KANNADA DIGIT NINE
-0CF0          ; disallowed                             # NA   <reserved-0CF0>
-0CF1..0CF2    ; valid                                  # 5.0  KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
-0CF3..0CFF    ; disallowed                             # NA   <reserved-0CF3>..<reserved-0CFF>
-0D00          ; valid                                  # 10.0 MALAYALAM SIGN COMBINING ANUSVARA ABOVE
-0D01          ; valid                                  # 7.0  MALAYALAM SIGN CANDRABINDU
-0D02..0D03    ; valid                                  # 1.1  MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
-0D04          ; valid                                  # 13.0 MALAYALAM LETTER VEDIC ANUSVARA
-0D05..0D0C    ; valid                                  # 1.1  MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
-0D0D          ; disallowed                             # NA   <reserved-0D0D>
-0D0E..0D10    ; valid                                  # 1.1  MALAYALAM LETTER E..MALAYALAM LETTER AI
-0D11          ; disallowed                             # NA   <reserved-0D11>
-0D12..0D28    ; valid                                  # 1.1  MALAYALAM LETTER O..MALAYALAM LETTER NA
-0D29          ; valid                                  # 6.0  MALAYALAM LETTER NNNA
-0D2A..0D39    ; valid                                  # 1.1  MALAYALAM LETTER PA..MALAYALAM LETTER HA
-0D3A          ; valid                                  # 6.0  MALAYALAM LETTER TTTA
-0D3B..0D3C    ; valid                                  # 10.0 MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
-0D3D          ; valid                                  # 5.1  MALAYALAM SIGN AVAGRAHA
-0D3E..0D43    ; valid                                  # 1.1  MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN VOCALIC R
-0D44          ; valid                                  # 5.1  MALAYALAM VOWEL SIGN VOCALIC RR
-0D45          ; disallowed                             # NA   <reserved-0D45>
-0D46..0D48    ; valid                                  # 1.1  MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
-0D49          ; disallowed                             # NA   <reserved-0D49>
-0D4A..0D4D    ; valid                                  # 1.1  MALAYALAM VOWEL SIGN O..MALAYALAM SIGN VIRAMA
-0D4E          ; valid                                  # 6.0  MALAYALAM LETTER DOT REPH
-0D4F          ; valid                  ;      ; NV8    # 9.0  MALAYALAM SIGN PARA
-0D50..0D53    ; disallowed                             # NA   <reserved-0D50>..<reserved-0D53>
-0D54..0D56    ; valid                                  # 9.0  MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
-0D57          ; valid                                  # 1.1  MALAYALAM AU LENGTH MARK
-0D58..0D5E    ; valid                  ;      ; NV8    # 9.0  MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
-0D5F          ; valid                                  # 8.0  MALAYALAM LETTER ARCHAIC II
-0D60..0D61    ; valid                                  # 1.1  MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
-0D62..0D63    ; valid                                  # 5.1  MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
-0D64..0D65    ; disallowed                             # NA   <reserved-0D64>..<reserved-0D65>
-0D66..0D6F    ; valid                                  # 1.1  MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
-0D70..0D75    ; valid                  ;      ; NV8    # 5.1  MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
-0D76..0D78    ; valid                  ;      ; NV8    # 9.0  MALAYALAM FRACTION ONE SIXTEENTH..MALAYALAM FRACTION THREE SIXTEENTHS
-0D79          ; valid                  ;      ; NV8    # 5.1  MALAYALAM DATE MARK
-0D7A..0D7F    ; valid                                  # 5.1  MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
-0D80          ; disallowed                             # NA   <reserved-0D80>
-0D81          ; valid                                  # 13.0 SINHALA SIGN CANDRABINDU
-0D82..0D83    ; valid                                  # 3.0  SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
-0D84          ; disallowed                             # NA   <reserved-0D84>
-0D85..0D96    ; valid                                  # 3.0  SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
-0D97..0D99    ; disallowed                             # NA   <reserved-0D97>..<reserved-0D99>
-0D9A..0DB1    ; valid                                  # 3.0  SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
-0DB2          ; disallowed                             # NA   <reserved-0DB2>
-0DB3..0DBB    ; valid                                  # 3.0  SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
-0DBC          ; disallowed                             # NA   <reserved-0DBC>
-0DBD          ; valid                                  # 3.0  SINHALA LETTER DANTAJA LAYANNA
-0DBE..0DBF    ; disallowed                             # NA   <reserved-0DBE>..<reserved-0DBF>
-0DC0..0DC6    ; valid                                  # 3.0  SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
-0DC7..0DC9    ; disallowed                             # NA   <reserved-0DC7>..<reserved-0DC9>
-0DCA          ; valid                                  # 3.0  SINHALA SIGN AL-LAKUNA
-0DCB..0DCE    ; disallowed                             # NA   <reserved-0DCB>..<reserved-0DCE>
-0DCF..0DD4    ; valid                                  # 3.0  SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
-0DD5          ; disallowed                             # NA   <reserved-0DD5>
-0DD6          ; valid                                  # 3.0  SINHALA VOWEL SIGN DIGA PAA-PILLA
-0DD7          ; disallowed                             # NA   <reserved-0DD7>
-0DD8..0DDF    ; valid                                  # 3.0  SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
-0DE0..0DE5    ; disallowed                             # NA   <reserved-0DE0>..<reserved-0DE5>
-0DE6..0DEF    ; valid                                  # 7.0  SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE
-0DF0..0DF1    ; disallowed                             # NA   <reserved-0DF0>..<reserved-0DF1>
-0DF2..0DF3    ; valid                                  # 3.0  SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
-0DF4          ; valid                  ;      ; NV8    # 3.0  SINHALA PUNCTUATION KUNDDALIYA
-0DF5..0E00    ; disallowed                             # NA   <reserved-0DF5>..<reserved-0E00>
-0E01..0E32    ; valid                                  # 1.1  THAI CHARACTER KO KAI..THAI CHARACTER SARA AA
-0E33          ; mapped                 ; 0E4D 0E32     # 1.1  THAI CHARACTER SARA AM
-0E34..0E3A    ; valid                                  # 1.1  THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
-0E3B..0E3E    ; disallowed                             # NA   <reserved-0E3B>..<reserved-0E3E>
-0E3F          ; valid                  ;      ; NV8    # 1.1  THAI CURRENCY SYMBOL BAHT
-0E40..0E4E    ; valid                                  # 1.1  THAI CHARACTER SARA E..THAI CHARACTER YAMAKKAN
-0E4F          ; valid                  ;      ; NV8    # 1.1  THAI CHARACTER FONGMAN
-0E50..0E59    ; valid                                  # 1.1  THAI DIGIT ZERO..THAI DIGIT NINE
-0E5A..0E5B    ; valid                  ;      ; NV8    # 1.1  THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
-0E5C..0E80    ; disallowed                             # NA   <reserved-0E5C>..<reserved-0E80>
-0E81..0E82    ; valid                                  # 1.1  LAO LETTER KO..LAO LETTER KHO SUNG
-0E83          ; disallowed                             # NA   <reserved-0E83>
-0E84          ; valid                                  # 1.1  LAO LETTER KHO TAM
-0E85          ; disallowed                             # NA   <reserved-0E85>
-0E86          ; valid                                  # 12.0 LAO LETTER PALI GHA
-0E87..0E88    ; valid                                  # 1.1  LAO LETTER NGO..LAO LETTER CO
-0E89          ; valid                                  # 12.0 LAO LETTER PALI CHA
-0E8A          ; valid                                  # 1.1  LAO LETTER SO TAM
-0E8B          ; disallowed                             # NA   <reserved-0E8B>
-0E8C          ; valid                                  # 12.0 LAO LETTER PALI JHA
-0E8D          ; valid                                  # 1.1  LAO LETTER NYO
-0E8E..0E93    ; valid                                  # 12.0 LAO LETTER PALI NYA..LAO LETTER PALI NNA
-0E94..0E97    ; valid                                  # 1.1  LAO LETTER DO..LAO LETTER THO TAM
-0E98          ; valid                                  # 12.0 LAO LETTER PALI DHA
-0E99..0E9F    ; valid                                  # 1.1  LAO LETTER NO..LAO LETTER FO SUNG
-0EA0          ; valid                                  # 12.0 LAO LETTER PALI BHA
-0EA1..0EA3    ; valid                                  # 1.1  LAO LETTER MO..LAO LETTER LO LING
-0EA4          ; disallowed                             # NA   <reserved-0EA4>
-0EA5          ; valid                                  # 1.1  LAO LETTER LO LOOT
-0EA6          ; disallowed                             # NA   <reserved-0EA6>
-0EA7          ; valid                                  # 1.1  LAO LETTER WO
-0EA8..0EA9    ; valid                                  # 12.0 LAO LETTER SANSKRIT SHA..LAO LETTER SANSKRIT SSA
-0EAA..0EAB    ; valid                                  # 1.1  LAO LETTER SO SUNG..LAO LETTER HO SUNG
-0EAC          ; valid                                  # 12.0 LAO LETTER PALI LLA
-0EAD..0EB2    ; valid                                  # 1.1  LAO LETTER O..LAO VOWEL SIGN AA
-0EB3          ; mapped                 ; 0ECD 0EB2     # 1.1  LAO VOWEL SIGN AM
-0EB4..0EB9    ; valid                                  # 1.1  LAO VOWEL SIGN I..LAO VOWEL SIGN UU
-0EBA          ; valid                                  # 12.0 LAO SIGN PALI VIRAMA
-0EBB..0EBD    ; valid                                  # 1.1  LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN NYO
-0EBE..0EBF    ; disallowed                             # NA   <reserved-0EBE>..<reserved-0EBF>
-0EC0..0EC4    ; valid                                  # 1.1  LAO VOWEL SIGN E..LAO VOWEL SIGN AI
-0EC5          ; disallowed                             # NA   <reserved-0EC5>
-0EC6          ; valid                                  # 1.1  LAO KO LA
-0EC7          ; disallowed                             # NA   <reserved-0EC7>
-0EC8..0ECD    ; valid                                  # 1.1  LAO TONE MAI EK..LAO NIGGAHITA
-0ECE..0ECF    ; disallowed                             # NA   <reserved-0ECE>..<reserved-0ECF>
-0ED0..0ED9    ; valid                                  # 1.1  LAO DIGIT ZERO..LAO DIGIT NINE
-0EDA..0EDB    ; disallowed                             # NA   <reserved-0EDA>..<reserved-0EDB>
-0EDC          ; mapped                 ; 0EAB 0E99     # 1.1  LAO HO NO
-0EDD          ; mapped                 ; 0EAB 0EA1     # 1.1  LAO HO MO
-0EDE..0EDF    ; valid                                  # 6.1  LAO LETTER KHMU GO..LAO LETTER KHMU NYO
-0EE0..0EFF    ; disallowed                             # NA   <reserved-0EE0>..<reserved-0EFF>
-0F00          ; valid                                  # 2.0  TIBETAN SYLLABLE OM
-0F01..0F0A    ; valid                  ;      ; NV8    # 2.0  TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK BKA- SHOG YIG MGO
-0F0B          ; valid                                  # 2.0  TIBETAN MARK INTERSYLLABIC TSHEG
-0F0C          ; mapped                 ; 0F0B          # 2.0  TIBETAN MARK DELIMITER TSHEG BSTAR
-0F0D..0F17    ; valid                  ;      ; NV8    # 2.0  TIBETAN MARK SHAD..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
-0F18..0F19    ; valid                                  # 2.0  TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
-0F1A..0F1F    ; valid                  ;      ; NV8    # 2.0  TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG
-0F20..0F29    ; valid                                  # 2.0  TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
-0F2A..0F34    ; valid                  ;      ; NV8    # 2.0  TIBETAN DIGIT HALF ONE..TIBETAN MARK BSDUS RTAGS
-0F35          ; valid                                  # 2.0  TIBETAN MARK NGAS BZUNG NYI ZLA
-0F36          ; valid                  ;      ; NV8    # 2.0  TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
-0F37          ; valid                                  # 2.0  TIBETAN MARK NGAS BZUNG SGOR RTAGS
-0F38          ; valid                  ;      ; NV8    # 2.0  TIBETAN MARK CHE MGO
-0F39          ; valid                                  # 2.0  TIBETAN MARK TSA -PHRU
-0F3A..0F3D    ; valid                  ;      ; NV8    # 2.0  TIBETAN MARK GUG RTAGS GYON..TIBETAN MARK ANG KHANG GYAS
-0F3E..0F42    ; valid                                  # 2.0  TIBETAN SIGN YAR TSHES..TIBETAN LETTER GA
-0F43          ; mapped                 ; 0F42 0FB7     # 2.0  TIBETAN LETTER GHA
-0F44..0F47    ; valid                                  # 2.0  TIBETAN LETTER NGA..TIBETAN LETTER JA
-0F48          ; disallowed                             # NA   <reserved-0F48>
-0F49..0F4C    ; valid                                  # 2.0  TIBETAN LETTER NYA..TIBETAN LETTER DDA
-0F4D          ; mapped                 ; 0F4C 0FB7     # 2.0  TIBETAN LETTER DDHA
-0F4E..0F51    ; valid                                  # 2.0  TIBETAN LETTER NNA..TIBETAN LETTER DA
-0F52          ; mapped                 ; 0F51 0FB7     # 2.0  TIBETAN LETTER DHA
-0F53..0F56    ; valid                                  # 2.0  TIBETAN LETTER NA..TIBETAN LETTER BA
-0F57          ; mapped                 ; 0F56 0FB7     # 2.0  TIBETAN LETTER BHA
-0F58..0F5B    ; valid                                  # 2.0  TIBETAN LETTER MA..TIBETAN LETTER DZA
-0F5C          ; mapped                 ; 0F5B 0FB7     # 2.0  TIBETAN LETTER DZHA
-0F5D..0F68    ; valid                                  # 2.0  TIBETAN LETTER WA..TIBETAN LETTER A
-0F69          ; mapped                 ; 0F40 0FB5     # 2.0  TIBETAN LETTER KSSA
-0F6A          ; valid                                  # 3.0  TIBETAN LETTER FIXED-FORM RA
-0F6B..0F6C    ; valid                                  # 5.1  TIBETAN LETTER KKA..TIBETAN LETTER RRA
-0F6D..0F70    ; disallowed                             # NA   <reserved-0F6D>..<reserved-0F70>
-0F71..0F72    ; valid                                  # 2.0  TIBETAN VOWEL SIGN AA..TIBETAN VOWEL SIGN I
-0F73          ; mapped                 ; 0F71 0F72     # 2.0  TIBETAN VOWEL SIGN II
-0F74          ; valid                                  # 2.0  TIBETAN VOWEL SIGN U
-0F75          ; mapped                 ; 0F71 0F74     # 2.0  TIBETAN VOWEL SIGN UU
-0F76          ; mapped                 ; 0FB2 0F80     # 2.0  TIBETAN VOWEL SIGN VOCALIC R
-0F77          ; mapped                 ; 0FB2 0F71 0F80 #2.0  TIBETAN VOWEL SIGN VOCALIC RR
-0F78          ; mapped                 ; 0FB3 0F80     # 2.0  TIBETAN VOWEL SIGN VOCALIC L
-0F79          ; mapped                 ; 0FB3 0F71 0F80 #2.0  TIBETAN VOWEL SIGN VOCALIC LL
-0F7A..0F80    ; valid                                  # 2.0  TIBETAN VOWEL SIGN E..TIBETAN VOWEL SIGN REVERSED I
-0F81          ; mapped                 ; 0F71 0F80     # 2.0  TIBETAN VOWEL SIGN REVERSED II
-0F82..0F84    ; valid                                  # 2.0  TIBETAN SIGN NYI ZLA NAA DA..TIBETAN MARK HALANTA
-0F85          ; valid                  ;      ; NV8    # 2.0  TIBETAN MARK PALUTA
-0F86..0F8B    ; valid                                  # 2.0  TIBETAN SIGN LCI RTAGS..TIBETAN SIGN GRU MED RGYINGS
-0F8C..0F8F    ; valid                                  # 6.0  TIBETAN SIGN INVERTED MCHU CAN..TIBETAN SUBJOINED SIGN INVERTED MCHU CAN
-0F90..0F92    ; valid                                  # 2.0  TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER GA
-0F93          ; mapped                 ; 0F92 0FB7     # 2.0  TIBETAN SUBJOINED LETTER GHA
-0F94..0F95    ; valid                                  # 2.0  TIBETAN SUBJOINED LETTER NGA..TIBETAN SUBJOINED LETTER CA
-0F96          ; valid                                  # 3.0  TIBETAN SUBJOINED LETTER CHA
-0F97          ; valid                                  # 2.0  TIBETAN SUBJOINED LETTER JA
-0F98          ; disallowed                             # NA   <reserved-0F98>
-0F99..0F9C    ; valid                                  # 2.0  TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER DDA
-0F9D          ; mapped                 ; 0F9C 0FB7     # 2.0  TIBETAN SUBJOINED LETTER DDHA
-0F9E..0FA1    ; valid                                  # 2.0  TIBETAN SUBJOINED LETTER NNA..TIBETAN SUBJOINED LETTER DA
-0FA2          ; mapped                 ; 0FA1 0FB7     # 2.0  TIBETAN SUBJOINED LETTER DHA
-0FA3..0FA6    ; valid                                  # 2.0  TIBETAN SUBJOINED LETTER NA..TIBETAN SUBJOINED LETTER BA
-0FA7          ; mapped                 ; 0FA6 0FB7     # 2.0  TIBETAN SUBJOINED LETTER BHA
-0FA8..0FAB    ; valid                                  # 2.0  TIBETAN SUBJOINED LETTER MA..TIBETAN SUBJOINED LETTER DZA
-0FAC          ; mapped                 ; 0FAB 0FB7     # 2.0  TIBETAN SUBJOINED LETTER DZHA
-0FAD          ; valid                                  # 2.0  TIBETAN SUBJOINED LETTER WA
-0FAE..0FB0    ; valid                                  # 3.0  TIBETAN SUBJOINED LETTER ZHA..TIBETAN SUBJOINED LETTER -A
-0FB1..0FB7    ; valid                                  # 2.0  TIBETAN SUBJOINED LETTER YA..TIBETAN SUBJOINED LETTER HA
-0FB8          ; valid                                  # 3.0  TIBETAN SUBJOINED LETTER A
-0FB9          ; mapped                 ; 0F90 0FB5     # 2.0  TIBETAN SUBJOINED LETTER KSSA
-0FBA..0FBC    ; valid                                  # 3.0  TIBETAN SUBJOINED LETTER FIXED-FORM WA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
-0FBD          ; disallowed                             # NA   <reserved-0FBD>
-0FBE..0FC5    ; valid                  ;      ; NV8    # 3.0  TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
-0FC6          ; valid                                  # 3.0  TIBETAN SYMBOL PADMA GDAN
-0FC7..0FCC    ; valid                  ;      ; NV8    # 3.0  TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
-0FCD          ; disallowed                             # NA   <reserved-0FCD>
-0FCE          ; valid                  ;      ; NV8    # 5.1  TIBETAN SIGN RDEL NAG RDEL DKAR
-0FCF          ; valid                  ;      ; NV8    # 3.0  TIBETAN SIGN RDEL NAG GSUM
-0FD0..0FD1    ; valid                  ;      ; NV8    # 4.1  TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK MNYAM YIG GI MGO RGYAN
-0FD2..0FD4    ; valid                  ;      ; NV8    # 5.1  TIBETAN MARK NYIS TSHEG..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA
-0FD5..0FD8    ; valid                  ;      ; NV8    # 5.2  RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS
-0FD9..0FDA    ; valid                  ;      ; NV8    # 6.0  TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS
-0FDB..0FFF    ; disallowed                             # NA   <reserved-0FDB>..<reserved-0FFF>
-1000..1021    ; valid                                  # 3.0  MYANMAR LETTER KA..MYANMAR LETTER A
-1022          ; valid                                  # 5.1  MYANMAR LETTER SHAN A
-1023..1027    ; valid                                  # 3.0  MYANMAR LETTER I..MYANMAR LETTER E
-1028          ; valid                                  # 5.1  MYANMAR LETTER MON E
-1029..102A    ; valid                                  # 3.0  MYANMAR LETTER O..MYANMAR LETTER AU
-102B          ; valid                                  # 5.1  MYANMAR VOWEL SIGN TALL AA
-102C..1032    ; valid                                  # 3.0  MYANMAR VOWEL SIGN AA..MYANMAR VOWEL SIGN AI
-1033..1035    ; valid                                  # 5.1  MYANMAR VOWEL SIGN MON II..MYANMAR VOWEL SIGN E ABOVE
-1036..1039    ; valid                                  # 3.0  MYANMAR SIGN ANUSVARA..MYANMAR SIGN VIRAMA
-103A..103F    ; valid                                  # 5.1  MYANMAR SIGN ASAT..MYANMAR LETTER GREAT SA
-1040..1049    ; valid                                  # 3.0  MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
-104A..104F    ; valid                  ;      ; NV8    # 3.0  MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE
-1050..1059    ; valid                                  # 3.0  MYANMAR LETTER SHA..MYANMAR VOWEL SIGN VOCALIC LL
-105A..1099    ; valid                                  # 5.1  MYANMAR LETTER MON NGA..MYANMAR SHAN DIGIT NINE
-109A..109D    ; valid                                  # 5.2  MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON AI
-109E..109F    ; valid                  ;      ; NV8    # 5.1  MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION
-10A0..10C5    ; disallowed                             # 1.1  GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
-10C6          ; disallowed                             # NA   <reserved-10C6>
-10C7          ; mapped                 ; 2D27          # 6.1  GEORGIAN CAPITAL LETTER YN
-10C8..10CC    ; disallowed                             # NA   <reserved-10C8>..<reserved-10CC>
-10CD          ; mapped                 ; 2D2D          # 6.1  GEORGIAN CAPITAL LETTER AEN
-10CE..10CF    ; disallowed                             # NA   <reserved-10CE>..<reserved-10CF>
-10D0..10F6    ; valid                                  # 1.1  GEORGIAN LETTER AN..GEORGIAN LETTER FI
-10F7..10F8    ; valid                                  # 3.2  GEORGIAN LETTER YN..GEORGIAN LETTER ELIFI
-10F9..10FA    ; valid                                  # 4.1  GEORGIAN LETTER TURNED GAN..GEORGIAN LETTER AIN
-10FB          ; valid                  ;      ; NV8    # 1.1  GEORGIAN PARAGRAPH SEPARATOR
-10FC          ; mapped                 ; 10DC          # 4.1  MODIFIER LETTER GEORGIAN NAR
-10FD..10FF    ; valid                                  # 6.1  GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
-1100..1159    ; valid                  ;      ; NV8    # 1.1  HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
-115A..115E    ; valid                  ;      ; NV8    # 5.2  HANGUL CHOSEONG KIYEOK-TIKEUT..HANGUL CHOSEONG TIKEUT-RIEUL
-115F..1160    ; disallowed                             # 1.1  HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER
-1161..11A2    ; valid                  ;      ; NV8    # 1.1  HANGUL JUNGSEONG A..HANGUL JUNGSEONG SSANGARAEA
-11A3..11A7    ; valid                  ;      ; NV8    # 5.2  HANGUL JUNGSEONG A-EU..HANGUL JUNGSEONG O-YAE
-11A8..11F9    ; valid                  ;      ; NV8    # 1.1  HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
-11FA..11FF    ; valid                  ;      ; NV8    # 5.2  HANGUL JONGSEONG KIYEOK-NIEUN..HANGUL JONGSEONG SSANGNIEUN
-1200..1206    ; valid                                  # 3.0  ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE HO
-1207          ; valid                                  # 4.1  ETHIOPIC SYLLABLE HOA
-1208..1246    ; valid                                  # 3.0  ETHIOPIC SYLLABLE LA..ETHIOPIC SYLLABLE QO
-1247          ; valid                                  # 4.1  ETHIOPIC SYLLABLE QOA
-1248          ; valid                                  # 3.0  ETHIOPIC SYLLABLE QWA
-1249          ; disallowed                             # NA   <reserved-1249>
-124A..124D    ; valid                                  # 3.0  ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
-124E..124F    ; disallowed                             # NA   <reserved-124E>..<reserved-124F>
-1250..1256    ; valid                                  # 3.0  ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
-1257          ; disallowed                             # NA   <reserved-1257>
-1258          ; valid                                  # 3.0  ETHIOPIC SYLLABLE QHWA
-1259          ; disallowed                             # NA   <reserved-1259>
-125A..125D    ; valid                                  # 3.0  ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
-125E..125F    ; disallowed                             # NA   <reserved-125E>..<reserved-125F>
-1260..1286    ; valid                                  # 3.0  ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XO
-1287          ; valid                                  # 4.1  ETHIOPIC SYLLABLE XOA
-1288          ; valid                                  # 3.0  ETHIOPIC SYLLABLE XWA
-1289          ; disallowed                             # NA   <reserved-1289>
-128A..128D    ; valid                                  # 3.0  ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
-128E..128F    ; disallowed                             # NA   <reserved-128E>..<reserved-128F>
-1290..12AE    ; valid                                  # 3.0  ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KO
-12AF          ; valid                                  # 4.1  ETHIOPIC SYLLABLE KOA
-12B0          ; valid                                  # 3.0  ETHIOPIC SYLLABLE KWA
-12B1          ; disallowed                             # NA   <reserved-12B1>
-12B2..12B5    ; valid                                  # 3.0  ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
-12B6..12B7    ; disallowed                             # NA   <reserved-12B6>..<reserved-12B7>
-12B8..12BE    ; valid                                  # 3.0  ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
-12BF          ; disallowed                             # NA   <reserved-12BF>
-12C0          ; valid                                  # 3.0  ETHIOPIC SYLLABLE KXWA
-12C1          ; disallowed                             # NA   <reserved-12C1>
-12C2..12C5    ; valid                                  # 3.0  ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
-12C6..12C7    ; disallowed                             # NA   <reserved-12C6>..<reserved-12C7>
-12C8..12CE    ; valid                                  # 3.0  ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE WO
-12CF          ; valid                                  # 4.1  ETHIOPIC SYLLABLE WOA
-12D0..12D6    ; valid                                  # 3.0  ETHIOPIC SYLLABLE PHARYNGEAL A..ETHIOPIC SYLLABLE PHARYNGEAL O
-12D7          ; disallowed                             # NA   <reserved-12D7>
-12D8..12EE    ; valid                                  # 3.0  ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE YO
-12EF          ; valid                                  # 4.1  ETHIOPIC SYLLABLE YOA
-12F0..130E    ; valid                                  # 3.0  ETHIOPIC SYLLABLE DA..ETHIOPIC SYLLABLE GO
-130F          ; valid                                  # 4.1  ETHIOPIC SYLLABLE GOA
-1310          ; valid                                  # 3.0  ETHIOPIC SYLLABLE GWA
-1311          ; disallowed                             # NA   <reserved-1311>
-1312..1315    ; valid                                  # 3.0  ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
-1316..1317    ; disallowed                             # NA   <reserved-1316>..<reserved-1317>
-1318..131E    ; valid                                  # 3.0  ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE GGO
-131F          ; valid                                  # 4.1  ETHIOPIC SYLLABLE GGWAA
-1320..1346    ; valid                                  # 3.0  ETHIOPIC SYLLABLE THA..ETHIOPIC SYLLABLE TZO
-1347          ; valid                                  # 4.1  ETHIOPIC SYLLABLE TZOA
-1348..135A    ; valid                                  # 3.0  ETHIOPIC SYLLABLE FA..ETHIOPIC SYLLABLE FYA
-135B..135C    ; disallowed                             # NA   <reserved-135B>..<reserved-135C>
-135D..135E    ; valid                                  # 6.0  ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING VOWEL LENGTH MARK
-135F          ; valid                                  # 4.1  ETHIOPIC COMBINING GEMINATION MARK
-1360          ; valid                  ;      ; NV8    # 4.1  ETHIOPIC SECTION MARK
-1361..137C    ; valid                  ;      ; NV8    # 3.0  ETHIOPIC WORDSPACE..ETHIOPIC NUMBER TEN THOUSAND
-137D..137F    ; disallowed                             # NA   <reserved-137D>..<reserved-137F>
-1380..138F    ; valid                                  # 4.1  ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
-1390..1399    ; valid                  ;      ; NV8    # 4.1  ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT
-139A..139F    ; disallowed                             # NA   <reserved-139A>..<reserved-139F>
-13A0..13F4    ; valid                                  # 3.0  CHEROKEE LETTER A..CHEROKEE LETTER YV
-13F5          ; valid                                  # 8.0  CHEROKEE LETTER MV
-13F6..13F7    ; disallowed                             # NA   <reserved-13F6>..<reserved-13F7>
-13F8          ; mapped                 ; 13F0          # 8.0  CHEROKEE SMALL LETTER YE
-13F9          ; mapped                 ; 13F1          # 8.0  CHEROKEE SMALL LETTER YI
-13FA          ; mapped                 ; 13F2          # 8.0  CHEROKEE SMALL LETTER YO
-13FB          ; mapped                 ; 13F3          # 8.0  CHEROKEE SMALL LETTER YU
-13FC          ; mapped                 ; 13F4          # 8.0  CHEROKEE SMALL LETTER YV
-13FD          ; mapped                 ; 13F5          # 8.0  CHEROKEE SMALL LETTER MV
-13FE..13FF    ; disallowed                             # NA   <reserved-13FE>..<reserved-13FF>
-1400          ; valid                  ;      ; NV8    # 5.2  CANADIAN SYLLABICS HYPHEN
-1401..166C    ; valid                                  # 3.0  CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
-166D..166E    ; valid                  ;      ; NV8    # 3.0  CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
-166F..1676    ; valid                                  # 3.0  CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
-1677..167F    ; valid                                  # 5.2  CANADIAN SYLLABICS WOODS-CREE THWEE..CANADIAN SYLLABICS BLACKFOOT W
-1680          ; disallowed                             # 3.0  OGHAM SPACE MARK
-1681..169A    ; valid                                  # 3.0  OGHAM LETTER BEITH..OGHAM LETTER PEITH
-169B..169C    ; valid                  ;      ; NV8    # 3.0  OGHAM FEATHER MARK..OGHAM REVERSED FEATHER MARK
-169D..169F    ; disallowed                             # NA   <reserved-169D>..<reserved-169F>
-16A0..16EA    ; valid                                  # 3.0  RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
-16EB..16F0    ; valid                  ;      ; NV8    # 3.0  RUNIC SINGLE PUNCTUATION..RUNIC BELGTHOR SYMBOL
-16F1..16F8    ; valid                                  # 7.0  RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
-16F9..16FF    ; disallowed                             # NA   <reserved-16F9>..<reserved-16FF>
-1700..170C    ; valid                                  # 3.2  TAGALOG LETTER A..TAGALOG LETTER YA
-170D          ; disallowed                             # NA   <reserved-170D>
-170E..1714    ; valid                                  # 3.2  TAGALOG LETTER LA..TAGALOG SIGN VIRAMA
-1715..171F    ; disallowed                             # NA   <reserved-1715>..<reserved-171F>
-1720..1734    ; valid                                  # 3.2  HANUNOO LETTER A..HANUNOO SIGN PAMUDPOD
-1735..1736    ; valid                  ;      ; NV8    # 3.2  PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
-1737..173F    ; disallowed                             # NA   <reserved-1737>..<reserved-173F>
-1740..1753    ; valid                                  # 3.2  BUHID LETTER A..BUHID VOWEL SIGN U
-1754..175F    ; disallowed                             # NA   <reserved-1754>..<reserved-175F>
-1760..176C    ; valid                                  # 3.2  TAGBANWA LETTER A..TAGBANWA LETTER YA
-176D          ; disallowed                             # NA   <reserved-176D>
-176E..1770    ; valid                                  # 3.2  TAGBANWA LETTER LA..TAGBANWA LETTER SA
-1771          ; disallowed                             # NA   <reserved-1771>
-1772..1773    ; valid                                  # 3.2  TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
-1774..177F    ; disallowed                             # NA   <reserved-1774>..<reserved-177F>
-1780..17B3    ; valid                                  # 3.0  KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
-17B4..17B5    ; disallowed                             # 3.0  KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
-17B6..17D3    ; valid                                  # 3.0  KHMER VOWEL SIGN AA..KHMER SIGN BATHAMASAT
-17D4..17D6    ; valid                  ;      ; NV8    # 3.0  KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
-17D7          ; valid                                  # 3.0  KHMER SIGN LEK TOO
-17D8..17DB    ; valid                  ;      ; NV8    # 3.0  KHMER SIGN BEYYAL..KHMER CURRENCY SYMBOL RIEL
-17DC          ; valid                                  # 3.0  KHMER SIGN AVAKRAHASANYA
-17DD          ; valid                                  # 4.0  KHMER SIGN ATTHACAN
-17DE..17DF    ; disallowed                             # NA   <reserved-17DE>..<reserved-17DF>
-17E0..17E9    ; valid                                  # 3.0  KHMER DIGIT ZERO..KHMER DIGIT NINE
-17EA..17EF    ; disallowed                             # NA   <reserved-17EA>..<reserved-17EF>
-17F0..17F9    ; valid                  ;      ; NV8    # 4.0  KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
-17FA..17FF    ; disallowed                             # NA   <reserved-17FA>..<reserved-17FF>
-1800..1805    ; valid                  ;      ; NV8    # 3.0  MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS
-1806          ; disallowed                             # 3.0  MONGOLIAN TODO SOFT HYPHEN
-1807..180A    ; valid                  ;      ; NV8    # 3.0  MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
-180B..180D    ; ignored                                # 3.0  MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
-180E          ; disallowed                             # 3.0  MONGOLIAN VOWEL SEPARATOR
-180F          ; disallowed                             # NA   <reserved-180F>
-1810..1819    ; valid                                  # 3.0  MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
-181A..181F    ; disallowed                             # NA   <reserved-181A>..<reserved-181F>
-1820..1877    ; valid                                  # 3.0  MONGOLIAN LETTER A..MONGOLIAN LETTER MANCHU ZHA
-1878          ; valid                                  # 11.0 MONGOLIAN LETTER CHA WITH TWO DOTS
-1879..187F    ; disallowed                             # NA   <reserved-1879>..<reserved-187F>
-1880..18A9    ; valid                                  # 3.0  MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI DAGALGA
-18AA          ; valid                                  # 5.1  MONGOLIAN LETTER MANCHU ALI GALI LHA
-18AB..18AF    ; disallowed                             # NA   <reserved-18AB>..<reserved-18AF>
-18B0..18F5    ; valid                                  # 5.2  CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
-18F6..18FF    ; disallowed                             # NA   <reserved-18F6>..<reserved-18FF>
-1900..191C    ; valid                                  # 4.0  LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
-191D..191E    ; valid                                  # 7.0  LIMBU LETTER GYAN..LIMBU LETTER TRA
-191F          ; disallowed                             # NA   <reserved-191F>
-1920..192B    ; valid                                  # 4.0  LIMBU VOWEL SIGN A..LIMBU SUBJOINED LETTER WA
-192C..192F    ; disallowed                             # NA   <reserved-192C>..<reserved-192F>
-1930..193B    ; valid                                  # 4.0  LIMBU SMALL LETTER KA..LIMBU SIGN SA-I
-193C..193F    ; disallowed                             # NA   <reserved-193C>..<reserved-193F>
-1940          ; valid                  ;      ; NV8    # 4.0  LIMBU SIGN LOO
-1941..1943    ; disallowed                             # NA   <reserved-1941>..<reserved-1943>
-1944..1945    ; valid                  ;      ; NV8    # 4.0  LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
-1946..196D    ; valid                                  # 4.0  LIMBU DIGIT ZERO..TAI LE LETTER AI
-196E..196F    ; disallowed                             # NA   <reserved-196E>..<reserved-196F>
-1970..1974    ; valid                                  # 4.0  TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
-1975..197F    ; disallowed                             # NA   <reserved-1975>..<reserved-197F>
-1980..19A9    ; valid                                  # 4.1  NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA
-19AA..19AB    ; valid                                  # 5.2  NEW TAI LUE LETTER HIGH SUA..NEW TAI LUE LETTER LOW SUA
-19AC..19AF    ; disallowed                             # NA   <reserved-19AC>..<reserved-19AF>
-19B0..19C9    ; valid                                  # 4.1  NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
-19CA..19CF    ; disallowed                             # NA   <reserved-19CA>..<reserved-19CF>
-19D0..19D9    ; valid                                  # 4.1  NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
-19DA          ; valid                  ;      ; XV8    # 5.2  NEW TAI LUE THAM DIGIT ONE
-19DB..19DD    ; disallowed                             # NA   <reserved-19DB>..<reserved-19DD>
-19DE..19DF    ; valid                  ;      ; NV8    # 4.1  NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
-19E0..19FF    ; valid                  ;      ; NV8    # 4.0  KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC
-1A00..1A1B    ; valid                                  # 4.1  BUGINESE LETTER KA..BUGINESE VOWEL SIGN AE
-1A1C..1A1D    ; disallowed                             # NA   <reserved-1A1C>..<reserved-1A1D>
-1A1E..1A1F    ; valid                  ;      ; NV8    # 4.1  BUGINESE PALLAWA..BUGINESE END OF SECTION
-1A20..1A5E    ; valid                                  # 5.2  TAI THAM LETTER HIGH KA..TAI THAM CONSONANT SIGN SA
-1A5F          ; disallowed                             # NA   <reserved-1A5F>
-1A60..1A7C    ; valid                                  # 5.2  TAI THAM SIGN SAKOT..TAI THAM SIGN KHUEN-LUE KARAN
-1A7D..1A7E    ; disallowed                             # NA   <reserved-1A7D>..<reserved-1A7E>
-1A7F..1A89    ; valid                                  # 5.2  TAI THAM COMBINING CRYPTOGRAMMIC DOT..TAI THAM HORA DIGIT NINE
-1A8A..1A8F    ; disallowed                             # NA   <reserved-1A8A>..<reserved-1A8F>
-1A90..1A99    ; valid                                  # 5.2  TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE
-1A9A..1A9F    ; disallowed                             # NA   <reserved-1A9A>..<reserved-1A9F>
-1AA0..1AA6    ; valid                  ;      ; NV8    # 5.2  TAI THAM SIGN WIANG..TAI THAM SIGN REVERSED ROTATED RANA
-1AA7          ; valid                                  # 5.2  TAI THAM SIGN MAI YAMOK
-1AA8..1AAD    ; valid                  ;      ; NV8    # 5.2  TAI THAM SIGN KAAN..TAI THAM SIGN CAANG
-1AAE..1AAF    ; disallowed                             # NA   <reserved-1AAE>..<reserved-1AAF>
-1AB0..1ABD    ; valid                                  # 7.0  COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
-1ABE          ; valid                  ;      ; NV8    # 7.0  COMBINING PARENTHESES OVERLAY
-1ABF..1AC0    ; valid                                  # 13.0 COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
-1AC1..1AFF    ; disallowed                             # NA   <reserved-1AC1>..<reserved-1AFF>
-1B00..1B4B    ; valid                                  # 5.0  BALINESE SIGN ULU RICEM..BALINESE LETTER ASYURA SASAK
-1B4C..1B4F    ; disallowed                             # NA   <reserved-1B4C>..<reserved-1B4F>
-1B50..1B59    ; valid                                  # 5.0  BALINESE DIGIT ZERO..BALINESE DIGIT NINE
-1B5A..1B6A    ; valid                  ;      ; NV8    # 5.0  BALINESE PANTI..BALINESE MUSICAL SYMBOL DANG GEDE
-1B6B..1B73    ; valid                                  # 5.0  BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
-1B74..1B7C    ; valid                  ;      ; NV8    # 5.0  BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
-1B7D..1B7F    ; disallowed                             # NA   <reserved-1B7D>..<reserved-1B7F>
-1B80..1BAA    ; valid                                  # 5.1  SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PAMAAEH
-1BAB..1BAD    ; valid                                  # 6.1  SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
-1BAE..1BB9    ; valid                                  # 5.1  SUNDANESE LETTER KHA..SUNDANESE DIGIT NINE
-1BBA..1BBF    ; valid                                  # 6.1  SUNDANESE AVAGRAHA..SUNDANESE LETTER FINAL M
-1BC0..1BF3    ; valid                                  # 6.0  BATAK LETTER A..BATAK PANONGONAN
-1BF4..1BFB    ; disallowed                             # NA   <reserved-1BF4>..<reserved-1BFB>
-1BFC..1BFF    ; valid                  ;      ; NV8    # 6.0  BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT
-1C00..1C37    ; valid                                  # 5.1  LEPCHA LETTER KA..LEPCHA SIGN NUKTA
-1C38..1C3A    ; disallowed                             # NA   <reserved-1C38>..<reserved-1C3A>
-1C3B..1C3F    ; valid                  ;      ; NV8    # 5.1  LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
-1C40..1C49    ; valid                                  # 5.1  LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
-1C4A..1C4C    ; disallowed                             # NA   <reserved-1C4A>..<reserved-1C4C>
-1C4D..1C7D    ; valid                                  # 5.1  LEPCHA LETTER TTA..OL CHIKI AHAD
-1C7E..1C7F    ; valid                  ;      ; NV8    # 5.1  OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
-1C80          ; mapped                 ; 0432          # 9.0  CYRILLIC SMALL LETTER ROUNDED VE
-1C81          ; mapped                 ; 0434          # 9.0  CYRILLIC SMALL LETTER LONG-LEGGED DE
-1C82          ; mapped                 ; 043E          # 9.0  CYRILLIC SMALL LETTER NARROW O
-1C83          ; mapped                 ; 0441          # 9.0  CYRILLIC SMALL LETTER WIDE ES
-1C84..1C85    ; mapped                 ; 0442          # 9.0  CYRILLIC SMALL LETTER TALL TE..CYRILLIC SMALL LETTER THREE-LEGGED TE
-1C86          ; mapped                 ; 044A          # 9.0  CYRILLIC SMALL LETTER TALL HARD SIGN
-1C87          ; mapped                 ; 0463          # 9.0  CYRILLIC SMALL LETTER TALL YAT
-1C88          ; mapped                 ; A64B          # 9.0  CYRILLIC SMALL LETTER UNBLENDED UK
-1C89..1C8F    ; disallowed                             # NA   <reserved-1C89>..<reserved-1C8F>
-1C90          ; mapped                 ; 10D0          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER AN
-1C91          ; mapped                 ; 10D1          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER BAN
-1C92          ; mapped                 ; 10D2          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER GAN
-1C93          ; mapped                 ; 10D3          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER DON
-1C94          ; mapped                 ; 10D4          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER EN
-1C95          ; mapped                 ; 10D5          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER VIN
-1C96          ; mapped                 ; 10D6          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER ZEN
-1C97          ; mapped                 ; 10D7          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER TAN
-1C98          ; mapped                 ; 10D8          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER IN
-1C99          ; mapped                 ; 10D9          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER KAN
-1C9A          ; mapped                 ; 10DA          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER LAS
-1C9B          ; mapped                 ; 10DB          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER MAN
-1C9C          ; mapped                 ; 10DC          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER NAR
-1C9D          ; mapped                 ; 10DD          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER ON
-1C9E          ; mapped                 ; 10DE          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER PAR
-1C9F          ; mapped                 ; 10DF          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER ZHAR
-1CA0          ; mapped                 ; 10E0          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER RAE
-1CA1          ; mapped                 ; 10E1          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER SAN
-1CA2          ; mapped                 ; 10E2          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER TAR
-1CA3          ; mapped                 ; 10E3          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER UN
-1CA4          ; mapped                 ; 10E4          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER PHAR
-1CA5          ; mapped                 ; 10E5          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER KHAR
-1CA6          ; mapped                 ; 10E6          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER GHAN
-1CA7          ; mapped                 ; 10E7          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER QAR
-1CA8          ; mapped                 ; 10E8          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER SHIN
-1CA9          ; mapped                 ; 10E9          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER CHIN
-1CAA          ; mapped                 ; 10EA          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER CAN
-1CAB          ; mapped                 ; 10EB          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER JIL
-1CAC          ; mapped                 ; 10EC          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER CIL
-1CAD          ; mapped                 ; 10ED          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER CHAR
-1CAE          ; mapped                 ; 10EE          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER XAN
-1CAF          ; mapped                 ; 10EF          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER JHAN
-1CB0          ; mapped                 ; 10F0          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER HAE
-1CB1          ; mapped                 ; 10F1          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER HE
-1CB2          ; mapped                 ; 10F2          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER HIE
-1CB3          ; mapped                 ; 10F3          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER WE
-1CB4          ; mapped                 ; 10F4          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER HAR
-1CB5          ; mapped                 ; 10F5          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER HOE
-1CB6          ; mapped                 ; 10F6          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER FI
-1CB7          ; mapped                 ; 10F7          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER YN
-1CB8          ; mapped                 ; 10F8          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER ELIFI
-1CB9          ; mapped                 ; 10F9          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN
-1CBA          ; mapped                 ; 10FA          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER AIN
-1CBB..1CBC    ; disallowed                             # NA   <reserved-1CBB>..<reserved-1CBC>
-1CBD          ; mapped                 ; 10FD          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER AEN
-1CBE          ; mapped                 ; 10FE          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN
-1CBF          ; mapped                 ; 10FF          # 11.0 GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
-1CC0..1CC7    ; valid                  ;      ; NV8    # 6.1  SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
-1CC8..1CCF    ; disallowed                             # NA   <reserved-1CC8>..<reserved-1CCF>
-1CD0..1CD2    ; valid                                  # 5.2  VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
-1CD3          ; valid                  ;      ; NV8    # 5.2  VEDIC SIGN NIHSHVASA
-1CD4..1CF2    ; valid                                  # 5.2  VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC SIGN ARDHAVISARGA
-1CF3..1CF6    ; valid                                  # 6.1  VEDIC SIGN ROTATED ARDHAVISARGA..VEDIC SIGN UPADHMANIYA
-1CF7          ; valid                                  # 10.0 VEDIC SIGN ATIKRAMA
-1CF8..1CF9    ; valid                                  # 7.0  VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
-1CFA          ; valid                                  # 12.0 VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
-1CFB..1CFF    ; disallowed                             # NA   <reserved-1CFB>..<reserved-1CFF>
-1D00..1D2B    ; valid                                  # 4.0  LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
-1D2C          ; mapped                 ; 0061          # 4.0  MODIFIER LETTER CAPITAL A
-1D2D          ; mapped                 ; 00E6          # 4.0  MODIFIER LETTER CAPITAL AE
-1D2E          ; mapped                 ; 0062          # 4.0  MODIFIER LETTER CAPITAL B
-1D2F          ; valid                                  # 4.0  MODIFIER LETTER CAPITAL BARRED B
-1D30          ; mapped                 ; 0064          # 4.0  MODIFIER LETTER CAPITAL D
-1D31          ; mapped                 ; 0065          # 4.0  MODIFIER LETTER CAPITAL E
-1D32          ; mapped                 ; 01DD          # 4.0  MODIFIER LETTER CAPITAL REVERSED E
-1D33          ; mapped                 ; 0067          # 4.0  MODIFIER LETTER CAPITAL G
-1D34          ; mapped                 ; 0068          # 4.0  MODIFIER LETTER CAPITAL H
-1D35          ; mapped                 ; 0069          # 4.0  MODIFIER LETTER CAPITAL I
-1D36          ; mapped                 ; 006A          # 4.0  MODIFIER LETTER CAPITAL J
-1D37          ; mapped                 ; 006B          # 4.0  MODIFIER LETTER CAPITAL K
-1D38          ; mapped                 ; 006C          # 4.0  MODIFIER LETTER CAPITAL L
-1D39          ; mapped                 ; 006D          # 4.0  MODIFIER LETTER CAPITAL M
-1D3A          ; mapped                 ; 006E          # 4.0  MODIFIER LETTER CAPITAL N
-1D3B          ; valid                                  # 4.0  MODIFIER LETTER CAPITAL REVERSED N
-1D3C          ; mapped                 ; 006F          # 4.0  MODIFIER LETTER CAPITAL O
-1D3D          ; mapped                 ; 0223          # 4.0  MODIFIER LETTER CAPITAL OU
-1D3E          ; mapped                 ; 0070          # 4.0  MODIFIER LETTER CAPITAL P
-1D3F          ; mapped                 ; 0072          # 4.0  MODIFIER LETTER CAPITAL R
-1D40          ; mapped                 ; 0074          # 4.0  MODIFIER LETTER CAPITAL T
-1D41          ; mapped                 ; 0075          # 4.0  MODIFIER LETTER CAPITAL U
-1D42          ; mapped                 ; 0077          # 4.0  MODIFIER LETTER CAPITAL W
-1D43          ; mapped                 ; 0061          # 4.0  MODIFIER LETTER SMALL A
-1D44          ; mapped                 ; 0250          # 4.0  MODIFIER LETTER SMALL TURNED A
-1D45          ; mapped                 ; 0251          # 4.0  MODIFIER LETTER SMALL ALPHA
-1D46          ; mapped                 ; 1D02          # 4.0  MODIFIER LETTER SMALL TURNED AE
-1D47          ; mapped                 ; 0062          # 4.0  MODIFIER LETTER SMALL B
-1D48          ; mapped                 ; 0064          # 4.0  MODIFIER LETTER SMALL D
-1D49          ; mapped                 ; 0065          # 4.0  MODIFIER LETTER SMALL E
-1D4A          ; mapped                 ; 0259          # 4.0  MODIFIER LETTER SMALL SCHWA
-1D4B          ; mapped                 ; 025B          # 4.0  MODIFIER LETTER SMALL OPEN E
-1D4C          ; mapped                 ; 025C          # 4.0  MODIFIER LETTER SMALL TURNED OPEN E
-1D4D          ; mapped                 ; 0067          # 4.0  MODIFIER LETTER SMALL G
-1D4E          ; valid                                  # 4.0  MODIFIER LETTER SMALL TURNED I
-1D4F          ; mapped                 ; 006B          # 4.0  MODIFIER LETTER SMALL K
-1D50          ; mapped                 ; 006D          # 4.0  MODIFIER LETTER SMALL M
-1D51          ; mapped                 ; 014B          # 4.0  MODIFIER LETTER SMALL ENG
-1D52          ; mapped                 ; 006F          # 4.0  MODIFIER LETTER SMALL O
-1D53          ; mapped                 ; 0254          # 4.0  MODIFIER LETTER SMALL OPEN O
-1D54          ; mapped                 ; 1D16          # 4.0  MODIFIER LETTER SMALL TOP HALF O
-1D55          ; mapped                 ; 1D17          # 4.0  MODIFIER LETTER SMALL BOTTOM HALF O
-1D56          ; mapped                 ; 0070          # 4.0  MODIFIER LETTER SMALL P
-1D57          ; mapped                 ; 0074          # 4.0  MODIFIER LETTER SMALL T
-1D58          ; mapped                 ; 0075          # 4.0  MODIFIER LETTER SMALL U
-1D59          ; mapped                 ; 1D1D          # 4.0  MODIFIER LETTER SMALL SIDEWAYS U
-1D5A          ; mapped                 ; 026F          # 4.0  MODIFIER LETTER SMALL TURNED M
-1D5B          ; mapped                 ; 0076          # 4.0  MODIFIER LETTER SMALL V
-1D5C          ; mapped                 ; 1D25          # 4.0  MODIFIER LETTER SMALL AIN
-1D5D          ; mapped                 ; 03B2          # 4.0  MODIFIER LETTER SMALL BETA
-1D5E          ; mapped                 ; 03B3          # 4.0  MODIFIER LETTER SMALL GREEK GAMMA
-1D5F          ; mapped                 ; 03B4          # 4.0  MODIFIER LETTER SMALL DELTA
-1D60          ; mapped                 ; 03C6          # 4.0  MODIFIER LETTER SMALL GREEK PHI
-1D61          ; mapped                 ; 03C7          # 4.0  MODIFIER LETTER SMALL CHI
-1D62          ; mapped                 ; 0069          # 4.0  LATIN SUBSCRIPT SMALL LETTER I
-1D63          ; mapped                 ; 0072          # 4.0  LATIN SUBSCRIPT SMALL LETTER R
-1D64          ; mapped                 ; 0075          # 4.0  LATIN SUBSCRIPT SMALL LETTER U
-1D65          ; mapped                 ; 0076          # 4.0  LATIN SUBSCRIPT SMALL LETTER V
-1D66          ; mapped                 ; 03B2          # 4.0  GREEK SUBSCRIPT SMALL LETTER BETA
-1D67          ; mapped                 ; 03B3          # 4.0  GREEK SUBSCRIPT SMALL LETTER GAMMA
-1D68          ; mapped                 ; 03C1          # 4.0  GREEK SUBSCRIPT SMALL LETTER RHO
-1D69          ; mapped                 ; 03C6          # 4.0  GREEK SUBSCRIPT SMALL LETTER PHI
-1D6A          ; mapped                 ; 03C7          # 4.0  GREEK SUBSCRIPT SMALL LETTER CHI
-1D6B          ; valid                                  # 4.0  LATIN SMALL LETTER UE
-1D6C..1D77    ; valid                                  # 4.1  LATIN SMALL LETTER B WITH MIDDLE TILDE..LATIN SMALL LETTER TURNED G
-1D78          ; mapped                 ; 043D          # 4.1  MODIFIER LETTER CYRILLIC EN
-1D79..1D9A    ; valid                                  # 4.1  LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
-1D9B          ; mapped                 ; 0252          # 4.1  MODIFIER LETTER SMALL TURNED ALPHA
-1D9C          ; mapped                 ; 0063          # 4.1  MODIFIER LETTER SMALL C
-1D9D          ; mapped                 ; 0255          # 4.1  MODIFIER LETTER SMALL C WITH CURL
-1D9E          ; mapped                 ; 00F0          # 4.1  MODIFIER LETTER SMALL ETH
-1D9F          ; mapped                 ; 025C          # 4.1  MODIFIER LETTER SMALL REVERSED OPEN E
-1DA0          ; mapped                 ; 0066          # 4.1  MODIFIER LETTER SMALL F
-1DA1          ; mapped                 ; 025F          # 4.1  MODIFIER LETTER SMALL DOTLESS J WITH STROKE
-1DA2          ; mapped                 ; 0261          # 4.1  MODIFIER LETTER SMALL SCRIPT G
-1DA3          ; mapped                 ; 0265          # 4.1  MODIFIER LETTER SMALL TURNED H
-1DA4          ; mapped                 ; 0268          # 4.1  MODIFIER LETTER SMALL I WITH STROKE
-1DA5          ; mapped                 ; 0269          # 4.1  MODIFIER LETTER SMALL IOTA
-1DA6          ; mapped                 ; 026A          # 4.1  MODIFIER LETTER SMALL CAPITAL I
-1DA7          ; mapped                 ; 1D7B          # 4.1  MODIFIER LETTER SMALL CAPITAL I WITH STROKE
-1DA8          ; mapped                 ; 029D          # 4.1  MODIFIER LETTER SMALL J WITH CROSSED-TAIL
-1DA9          ; mapped                 ; 026D          # 4.1  MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
-1DAA          ; mapped                 ; 1D85          # 4.1  MODIFIER LETTER SMALL L WITH PALATAL HOOK
-1DAB          ; mapped                 ; 029F          # 4.1  MODIFIER LETTER SMALL CAPITAL L
-1DAC          ; mapped                 ; 0271          # 4.1  MODIFIER LETTER SMALL M WITH HOOK
-1DAD          ; mapped                 ; 0270          # 4.1  MODIFIER LETTER SMALL TURNED M WITH LONG LEG
-1DAE          ; mapped                 ; 0272          # 4.1  MODIFIER LETTER SMALL N WITH LEFT HOOK
-1DAF          ; mapped                 ; 0273          # 4.1  MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
-1DB0          ; mapped                 ; 0274          # 4.1  MODIFIER LETTER SMALL CAPITAL N
-1DB1          ; mapped                 ; 0275          # 4.1  MODIFIER LETTER SMALL BARRED O
-1DB2          ; mapped                 ; 0278          # 4.1  MODIFIER LETTER SMALL PHI
-1DB3          ; mapped                 ; 0282          # 4.1  MODIFIER LETTER SMALL S WITH HOOK
-1DB4          ; mapped                 ; 0283          # 4.1  MODIFIER LETTER SMALL ESH
-1DB5          ; mapped                 ; 01AB          # 4.1  MODIFIER LETTER SMALL T WITH PALATAL HOOK
-1DB6          ; mapped                 ; 0289          # 4.1  MODIFIER LETTER SMALL U BAR
-1DB7          ; mapped                 ; 028A          # 4.1  MODIFIER LETTER SMALL UPSILON
-1DB8          ; mapped                 ; 1D1C          # 4.1  MODIFIER LETTER SMALL CAPITAL U
-1DB9          ; mapped                 ; 028B          # 4.1  MODIFIER LETTER SMALL V WITH HOOK
-1DBA          ; mapped                 ; 028C          # 4.1  MODIFIER LETTER SMALL TURNED V
-1DBB          ; mapped                 ; 007A          # 4.1  MODIFIER LETTER SMALL Z
-1DBC          ; mapped                 ; 0290          # 4.1  MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
-1DBD          ; mapped                 ; 0291          # 4.1  MODIFIER LETTER SMALL Z WITH CURL
-1DBE          ; mapped                 ; 0292          # 4.1  MODIFIER LETTER SMALL EZH
-1DBF          ; mapped                 ; 03B8          # 4.1  MODIFIER LETTER SMALL THETA
-1DC0..1DC3    ; valid                                  # 4.1  COMBINING DOTTED GRAVE ACCENT..COMBINING SUSPENSION MARK
-1DC4..1DCA    ; valid                                  # 5.0  COMBINING MACRON-ACUTE..COMBINING LATIN SMALL LETTER R BELOW
-1DCB..1DE6    ; valid                                  # 5.1  COMBINING BREVE-MACRON..COMBINING LATIN SMALL LETTER Z
-1DE7..1DF5    ; valid                                  # 7.0  COMBINING LATIN SMALL LETTER ALPHA..COMBINING UP TACK ABOVE
-1DF6..1DF9    ; valid                                  # 10.0 COMBINING KAVYKA ABOVE RIGHT..COMBINING WIDE INVERTED BRIDGE BELOW
-1DFA          ; disallowed                             # NA   <reserved-1DFA>
-1DFB          ; valid                                  # 9.0  COMBINING DELETION MARK
-1DFC          ; valid                                  # 6.0  COMBINING DOUBLE INVERTED BREVE BELOW
-1DFD          ; valid                                  # 5.2  COMBINING ALMOST EQUAL TO BELOW
-1DFE..1DFF    ; valid                                  # 5.0  COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
-1E00          ; mapped                 ; 1E01          # 1.1  LATIN CAPITAL LETTER A WITH RING BELOW
-1E01          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH RING BELOW
-1E02          ; mapped                 ; 1E03          # 1.1  LATIN CAPITAL LETTER B WITH DOT ABOVE
-1E03          ; valid                                  # 1.1  LATIN SMALL LETTER B WITH DOT ABOVE
-1E04          ; mapped                 ; 1E05          # 1.1  LATIN CAPITAL LETTER B WITH DOT BELOW
-1E05          ; valid                                  # 1.1  LATIN SMALL LETTER B WITH DOT BELOW
-1E06          ; mapped                 ; 1E07          # 1.1  LATIN CAPITAL LETTER B WITH LINE BELOW
-1E07          ; valid                                  # 1.1  LATIN SMALL LETTER B WITH LINE BELOW
-1E08          ; mapped                 ; 1E09          # 1.1  LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
-1E09          ; valid                                  # 1.1  LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
-1E0A          ; mapped                 ; 1E0B          # 1.1  LATIN CAPITAL LETTER D WITH DOT ABOVE
-1E0B          ; valid                                  # 1.1  LATIN SMALL LETTER D WITH DOT ABOVE
-1E0C          ; mapped                 ; 1E0D          # 1.1  LATIN CAPITAL LETTER D WITH DOT BELOW
-1E0D          ; valid                                  # 1.1  LATIN SMALL LETTER D WITH DOT BELOW
-1E0E          ; mapped                 ; 1E0F          # 1.1  LATIN CAPITAL LETTER D WITH LINE BELOW
-1E0F          ; valid                                  # 1.1  LATIN SMALL LETTER D WITH LINE BELOW
-1E10          ; mapped                 ; 1E11          # 1.1  LATIN CAPITAL LETTER D WITH CEDILLA
-1E11          ; valid                                  # 1.1  LATIN SMALL LETTER D WITH CEDILLA
-1E12          ; mapped                 ; 1E13          # 1.1  LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
-1E13          ; valid                                  # 1.1  LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
-1E14          ; mapped                 ; 1E15          # 1.1  LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
-1E15          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH MACRON AND GRAVE
-1E16          ; mapped                 ; 1E17          # 1.1  LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
-1E17          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH MACRON AND ACUTE
-1E18          ; mapped                 ; 1E19          # 1.1  LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
-1E19          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
-1E1A          ; mapped                 ; 1E1B          # 1.1  LATIN CAPITAL LETTER E WITH TILDE BELOW
-1E1B          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH TILDE BELOW
-1E1C          ; mapped                 ; 1E1D          # 1.1  LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
-1E1D          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH CEDILLA AND BREVE
-1E1E          ; mapped                 ; 1E1F          # 1.1  LATIN CAPITAL LETTER F WITH DOT ABOVE
-1E1F          ; valid                                  # 1.1  LATIN SMALL LETTER F WITH DOT ABOVE
-1E20          ; mapped                 ; 1E21          # 1.1  LATIN CAPITAL LETTER G WITH MACRON
-1E21          ; valid                                  # 1.1  LATIN SMALL LETTER G WITH MACRON
-1E22          ; mapped                 ; 1E23          # 1.1  LATIN CAPITAL LETTER H WITH DOT ABOVE
-1E23          ; valid                                  # 1.1  LATIN SMALL LETTER H WITH DOT ABOVE
-1E24          ; mapped                 ; 1E25          # 1.1  LATIN CAPITAL LETTER H WITH DOT BELOW
-1E25          ; valid                                  # 1.1  LATIN SMALL LETTER H WITH DOT BELOW
-1E26          ; mapped                 ; 1E27          # 1.1  LATIN CAPITAL LETTER H WITH DIAERESIS
-1E27          ; valid                                  # 1.1  LATIN SMALL LETTER H WITH DIAERESIS
-1E28          ; mapped                 ; 1E29          # 1.1  LATIN CAPITAL LETTER H WITH CEDILLA
-1E29          ; valid                                  # 1.1  LATIN SMALL LETTER H WITH CEDILLA
-1E2A          ; mapped                 ; 1E2B          # 1.1  LATIN CAPITAL LETTER H WITH BREVE BELOW
-1E2B          ; valid                                  # 1.1  LATIN SMALL LETTER H WITH BREVE BELOW
-1E2C          ; mapped                 ; 1E2D          # 1.1  LATIN CAPITAL LETTER I WITH TILDE BELOW
-1E2D          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH TILDE BELOW
-1E2E          ; mapped                 ; 1E2F          # 1.1  LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
-1E2F          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
-1E30          ; mapped                 ; 1E31          # 1.1  LATIN CAPITAL LETTER K WITH ACUTE
-1E31          ; valid                                  # 1.1  LATIN SMALL LETTER K WITH ACUTE
-1E32          ; mapped                 ; 1E33          # 1.1  LATIN CAPITAL LETTER K WITH DOT BELOW
-1E33          ; valid                                  # 1.1  LATIN SMALL LETTER K WITH DOT BELOW
-1E34          ; mapped                 ; 1E35          # 1.1  LATIN CAPITAL LETTER K WITH LINE BELOW
-1E35          ; valid                                  # 1.1  LATIN SMALL LETTER K WITH LINE BELOW
-1E36          ; mapped                 ; 1E37          # 1.1  LATIN CAPITAL LETTER L WITH DOT BELOW
-1E37          ; valid                                  # 1.1  LATIN SMALL LETTER L WITH DOT BELOW
-1E38          ; mapped                 ; 1E39          # 1.1  LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
-1E39          ; valid                                  # 1.1  LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
-1E3A          ; mapped                 ; 1E3B          # 1.1  LATIN CAPITAL LETTER L WITH LINE BELOW
-1E3B          ; valid                                  # 1.1  LATIN SMALL LETTER L WITH LINE BELOW
-1E3C          ; mapped                 ; 1E3D          # 1.1  LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
-1E3D          ; valid                                  # 1.1  LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
-1E3E          ; mapped                 ; 1E3F          # 1.1  LATIN CAPITAL LETTER M WITH ACUTE
-1E3F          ; valid                                  # 1.1  LATIN SMALL LETTER M WITH ACUTE
-1E40          ; mapped                 ; 1E41          # 1.1  LATIN CAPITAL LETTER M WITH DOT ABOVE
-1E41          ; valid                                  # 1.1  LATIN SMALL LETTER M WITH DOT ABOVE
-1E42          ; mapped                 ; 1E43          # 1.1  LATIN CAPITAL LETTER M WITH DOT BELOW
-1E43          ; valid                                  # 1.1  LATIN SMALL LETTER M WITH DOT BELOW
-1E44          ; mapped                 ; 1E45          # 1.1  LATIN CAPITAL LETTER N WITH DOT ABOVE
-1E45          ; valid                                  # 1.1  LATIN SMALL LETTER N WITH DOT ABOVE
-1E46          ; mapped                 ; 1E47          # 1.1  LATIN CAPITAL LETTER N WITH DOT BELOW
-1E47          ; valid                                  # 1.1  LATIN SMALL LETTER N WITH DOT BELOW
-1E48          ; mapped                 ; 1E49          # 1.1  LATIN CAPITAL LETTER N WITH LINE BELOW
-1E49          ; valid                                  # 1.1  LATIN SMALL LETTER N WITH LINE BELOW
-1E4A          ; mapped                 ; 1E4B          # 1.1  LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
-1E4B          ; valid                                  # 1.1  LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
-1E4C          ; mapped                 ; 1E4D          # 1.1  LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-1E4D          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH TILDE AND ACUTE
-1E4E          ; mapped                 ; 1E4F          # 1.1  LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-1E4F          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
-1E50          ; mapped                 ; 1E51          # 1.1  LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
-1E51          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH MACRON AND GRAVE
-1E52          ; mapped                 ; 1E53          # 1.1  LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
-1E53          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH MACRON AND ACUTE
-1E54          ; mapped                 ; 1E55          # 1.1  LATIN CAPITAL LETTER P WITH ACUTE
-1E55          ; valid                                  # 1.1  LATIN SMALL LETTER P WITH ACUTE
-1E56          ; mapped                 ; 1E57          # 1.1  LATIN CAPITAL LETTER P WITH DOT ABOVE
-1E57          ; valid                                  # 1.1  LATIN SMALL LETTER P WITH DOT ABOVE
-1E58          ; mapped                 ; 1E59          # 1.1  LATIN CAPITAL LETTER R WITH DOT ABOVE
-1E59          ; valid                                  # 1.1  LATIN SMALL LETTER R WITH DOT ABOVE
-1E5A          ; mapped                 ; 1E5B          # 1.1  LATIN CAPITAL LETTER R WITH DOT BELOW
-1E5B          ; valid                                  # 1.1  LATIN SMALL LETTER R WITH DOT BELOW
-1E5C          ; mapped                 ; 1E5D          # 1.1  LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
-1E5D          ; valid                                  # 1.1  LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
-1E5E          ; mapped                 ; 1E5F          # 1.1  LATIN CAPITAL LETTER R WITH LINE BELOW
-1E5F          ; valid                                  # 1.1  LATIN SMALL LETTER R WITH LINE BELOW
-1E60          ; mapped                 ; 1E61          # 1.1  LATIN CAPITAL LETTER S WITH DOT ABOVE
-1E61          ; valid                                  # 1.1  LATIN SMALL LETTER S WITH DOT ABOVE
-1E62          ; mapped                 ; 1E63          # 1.1  LATIN CAPITAL LETTER S WITH DOT BELOW
-1E63          ; valid                                  # 1.1  LATIN SMALL LETTER S WITH DOT BELOW
-1E64          ; mapped                 ; 1E65          # 1.1  LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
-1E65          ; valid                                  # 1.1  LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
-1E66          ; mapped                 ; 1E67          # 1.1  LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
-1E67          ; valid                                  # 1.1  LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
-1E68          ; mapped                 ; 1E69          # 1.1  LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E69          ; valid                                  # 1.1  LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
-1E6A          ; mapped                 ; 1E6B          # 1.1  LATIN CAPITAL LETTER T WITH DOT ABOVE
-1E6B          ; valid                                  # 1.1  LATIN SMALL LETTER T WITH DOT ABOVE
-1E6C          ; mapped                 ; 1E6D          # 1.1  LATIN CAPITAL LETTER T WITH DOT BELOW
-1E6D          ; valid                                  # 1.1  LATIN SMALL LETTER T WITH DOT BELOW
-1E6E          ; mapped                 ; 1E6F          # 1.1  LATIN CAPITAL LETTER T WITH LINE BELOW
-1E6F          ; valid                                  # 1.1  LATIN SMALL LETTER T WITH LINE BELOW
-1E70          ; mapped                 ; 1E71          # 1.1  LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
-1E71          ; valid                                  # 1.1  LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
-1E72          ; mapped                 ; 1E73          # 1.1  LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
-1E73          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH DIAERESIS BELOW
-1E74          ; mapped                 ; 1E75          # 1.1  LATIN CAPITAL LETTER U WITH TILDE BELOW
-1E75          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH TILDE BELOW
-1E76          ; mapped                 ; 1E77          # 1.1  LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
-1E77          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
-1E78          ; mapped                 ; 1E79          # 1.1  LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
-1E79          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH TILDE AND ACUTE
-1E7A          ; mapped                 ; 1E7B          # 1.1  LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
-1E7B          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
-1E7C          ; mapped                 ; 1E7D          # 1.1  LATIN CAPITAL LETTER V WITH TILDE
-1E7D          ; valid                                  # 1.1  LATIN SMALL LETTER V WITH TILDE
-1E7E          ; mapped                 ; 1E7F          # 1.1  LATIN CAPITAL LETTER V WITH DOT BELOW
-1E7F          ; valid                                  # 1.1  LATIN SMALL LETTER V WITH DOT BELOW
-1E80          ; mapped                 ; 1E81          # 1.1  LATIN CAPITAL LETTER W WITH GRAVE
-1E81          ; valid                                  # 1.1  LATIN SMALL LETTER W WITH GRAVE
-1E82          ; mapped                 ; 1E83          # 1.1  LATIN CAPITAL LETTER W WITH ACUTE
-1E83          ; valid                                  # 1.1  LATIN SMALL LETTER W WITH ACUTE
-1E84          ; mapped                 ; 1E85          # 1.1  LATIN CAPITAL LETTER W WITH DIAERESIS
-1E85          ; valid                                  # 1.1  LATIN SMALL LETTER W WITH DIAERESIS
-1E86          ; mapped                 ; 1E87          # 1.1  LATIN CAPITAL LETTER W WITH DOT ABOVE
-1E87          ; valid                                  # 1.1  LATIN SMALL LETTER W WITH DOT ABOVE
-1E88          ; mapped                 ; 1E89          # 1.1  LATIN CAPITAL LETTER W WITH DOT BELOW
-1E89          ; valid                                  # 1.1  LATIN SMALL LETTER W WITH DOT BELOW
-1E8A          ; mapped                 ; 1E8B          # 1.1  LATIN CAPITAL LETTER X WITH DOT ABOVE
-1E8B          ; valid                                  # 1.1  LATIN SMALL LETTER X WITH DOT ABOVE
-1E8C          ; mapped                 ; 1E8D          # 1.1  LATIN CAPITAL LETTER X WITH DIAERESIS
-1E8D          ; valid                                  # 1.1  LATIN SMALL LETTER X WITH DIAERESIS
-1E8E          ; mapped                 ; 1E8F          # 1.1  LATIN CAPITAL LETTER Y WITH DOT ABOVE
-1E8F          ; valid                                  # 1.1  LATIN SMALL LETTER Y WITH DOT ABOVE
-1E90          ; mapped                 ; 1E91          # 1.1  LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
-1E91          ; valid                                  # 1.1  LATIN SMALL LETTER Z WITH CIRCUMFLEX
-1E92          ; mapped                 ; 1E93          # 1.1  LATIN CAPITAL LETTER Z WITH DOT BELOW
-1E93          ; valid                                  # 1.1  LATIN SMALL LETTER Z WITH DOT BELOW
-1E94          ; mapped                 ; 1E95          # 1.1  LATIN CAPITAL LETTER Z WITH LINE BELOW
-1E95..1E99    ; valid                                  # 1.1  LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER Y WITH RING ABOVE
-1E9A          ; mapped                 ; 0061 02BE     # 1.1  LATIN SMALL LETTER A WITH RIGHT HALF RING
-1E9B          ; mapped                 ; 1E61          # 2.0  LATIN SMALL LETTER LONG S WITH DOT ABOVE
-1E9C..1E9D    ; valid                                  # 5.1  LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE..LATIN SMALL LETTER LONG S WITH HIGH STROKE
-1E9E          ; mapped                 ; 0073 0073     # 5.1  LATIN CAPITAL LETTER SHARP S
-1E9F          ; valid                                  # 5.1  LATIN SMALL LETTER DELTA
-1EA0          ; mapped                 ; 1EA1          # 1.1  LATIN CAPITAL LETTER A WITH DOT BELOW
-1EA1          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH DOT BELOW
-1EA2          ; mapped                 ; 1EA3          # 1.1  LATIN CAPITAL LETTER A WITH HOOK ABOVE
-1EA3          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH HOOK ABOVE
-1EA4          ; mapped                 ; 1EA5          # 1.1  LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA5          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
-1EA6          ; mapped                 ; 1EA7          # 1.1  LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA7          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
-1EA8          ; mapped                 ; 1EA9          # 1.1  LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EA9          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-1EAA          ; mapped                 ; 1EAB          # 1.1  LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAB          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
-1EAC          ; mapped                 ; 1EAD          # 1.1  LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAD          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-1EAE          ; mapped                 ; 1EAF          # 1.1  LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-1EAF          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH BREVE AND ACUTE
-1EB0          ; mapped                 ; 1EB1          # 1.1  LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-1EB1          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH BREVE AND GRAVE
-1EB2          ; mapped                 ; 1EB3          # 1.1  LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-1EB3          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
-1EB4          ; mapped                 ; 1EB5          # 1.1  LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-1EB5          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH BREVE AND TILDE
-1EB6          ; mapped                 ; 1EB7          # 1.1  LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-1EB7          ; valid                                  # 1.1  LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
-1EB8          ; mapped                 ; 1EB9          # 1.1  LATIN CAPITAL LETTER E WITH DOT BELOW
-1EB9          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH DOT BELOW
-1EBA          ; mapped                 ; 1EBB          # 1.1  LATIN CAPITAL LETTER E WITH HOOK ABOVE
-1EBB          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH HOOK ABOVE
-1EBC          ; mapped                 ; 1EBD          # 1.1  LATIN CAPITAL LETTER E WITH TILDE
-1EBD          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH TILDE
-1EBE          ; mapped                 ; 1EBF          # 1.1  LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EBF          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
-1EC0          ; mapped                 ; 1EC1          # 1.1  LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC1          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
-1EC2          ; mapped                 ; 1EC3          # 1.1  LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC3          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-1EC4          ; mapped                 ; 1EC5          # 1.1  LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC5          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
-1EC6          ; mapped                 ; 1EC7          # 1.1  LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC7          ; valid                                  # 1.1  LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-1EC8          ; mapped                 ; 1EC9          # 1.1  LATIN CAPITAL LETTER I WITH HOOK ABOVE
-1EC9          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH HOOK ABOVE
-1ECA          ; mapped                 ; 1ECB          # 1.1  LATIN CAPITAL LETTER I WITH DOT BELOW
-1ECB          ; valid                                  # 1.1  LATIN SMALL LETTER I WITH DOT BELOW
-1ECC          ; mapped                 ; 1ECD          # 1.1  LATIN CAPITAL LETTER O WITH DOT BELOW
-1ECD          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH DOT BELOW
-1ECE          ; mapped                 ; 1ECF          # 1.1  LATIN CAPITAL LETTER O WITH HOOK ABOVE
-1ECF          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH HOOK ABOVE
-1ED0          ; mapped                 ; 1ED1          # 1.1  LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED1          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
-1ED2          ; mapped                 ; 1ED3          # 1.1  LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED3          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
-1ED4          ; mapped                 ; 1ED5          # 1.1  LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED5          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-1ED6          ; mapped                 ; 1ED7          # 1.1  LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED7          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
-1ED8          ; mapped                 ; 1ED9          # 1.1  LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1ED9          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-1EDA          ; mapped                 ; 1EDB          # 1.1  LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-1EDB          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH HORN AND ACUTE
-1EDC          ; mapped                 ; 1EDD          # 1.1  LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-1EDD          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH HORN AND GRAVE
-1EDE          ; mapped                 ; 1EDF          # 1.1  LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-1EDF          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
-1EE0          ; mapped                 ; 1EE1          # 1.1  LATIN CAPITAL LETTER O WITH HORN AND TILDE
-1EE1          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH HORN AND TILDE
-1EE2          ; mapped                 ; 1EE3          # 1.1  LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-1EE3          ; valid                                  # 1.1  LATIN SMALL LETTER O WITH HORN AND DOT BELOW
-1EE4          ; mapped                 ; 1EE5          # 1.1  LATIN CAPITAL LETTER U WITH DOT BELOW
-1EE5          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH DOT BELOW
-1EE6          ; mapped                 ; 1EE7          # 1.1  LATIN CAPITAL LETTER U WITH HOOK ABOVE
-1EE7          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH HOOK ABOVE
-1EE8          ; mapped                 ; 1EE9          # 1.1  LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-1EE9          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH HORN AND ACUTE
-1EEA          ; mapped                 ; 1EEB          # 1.1  LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-1EEB          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH HORN AND GRAVE
-1EEC          ; mapped                 ; 1EED          # 1.1  LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-1EED          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
-1EEE          ; mapped                 ; 1EEF          # 1.1  LATIN CAPITAL LETTER U WITH HORN AND TILDE
-1EEF          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH HORN AND TILDE
-1EF0          ; mapped                 ; 1EF1          # 1.1  LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-1EF1          ; valid                                  # 1.1  LATIN SMALL LETTER U WITH HORN AND DOT BELOW
-1EF2          ; mapped                 ; 1EF3          # 1.1  LATIN CAPITAL LETTER Y WITH GRAVE
-1EF3          ; valid                                  # 1.1  LATIN SMALL LETTER Y WITH GRAVE
-1EF4          ; mapped                 ; 1EF5          # 1.1  LATIN CAPITAL LETTER Y WITH DOT BELOW
-1EF5          ; valid                                  # 1.1  LATIN SMALL LETTER Y WITH DOT BELOW
-1EF6          ; mapped                 ; 1EF7          # 1.1  LATIN CAPITAL LETTER Y WITH HOOK ABOVE
-1EF7          ; valid                                  # 1.1  LATIN SMALL LETTER Y WITH HOOK ABOVE
-1EF8          ; mapped                 ; 1EF9          # 1.1  LATIN CAPITAL LETTER Y WITH TILDE
-1EF9          ; valid                                  # 1.1  LATIN SMALL LETTER Y WITH TILDE
-1EFA          ; mapped                 ; 1EFB          # 5.1  LATIN CAPITAL LETTER MIDDLE-WELSH LL
-1EFB          ; valid                                  # 5.1  LATIN SMALL LETTER MIDDLE-WELSH LL
-1EFC          ; mapped                 ; 1EFD          # 5.1  LATIN CAPITAL LETTER MIDDLE-WELSH V
-1EFD          ; valid                                  # 5.1  LATIN SMALL LETTER MIDDLE-WELSH V
-1EFE          ; mapped                 ; 1EFF          # 5.1  LATIN CAPITAL LETTER Y WITH LOOP
-1EFF          ; valid                                  # 5.1  LATIN SMALL LETTER Y WITH LOOP
-1F00..1F07    ; valid                                  # 1.1  GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F08          ; mapped                 ; 1F00          # 1.1  GREEK CAPITAL LETTER ALPHA WITH PSILI
-1F09          ; mapped                 ; 1F01          # 1.1  GREEK CAPITAL LETTER ALPHA WITH DASIA
-1F0A          ; mapped                 ; 1F02          # 1.1  GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
-1F0B          ; mapped                 ; 1F03          # 1.1  GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
-1F0C          ; mapped                 ; 1F04          # 1.1  GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
-1F0D          ; mapped                 ; 1F05          # 1.1  GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
-1F0E          ; mapped                 ; 1F06          # 1.1  GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
-1F0F          ; mapped                 ; 1F07          # 1.1  GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
-1F10..1F15    ; valid                                  # 1.1  GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
-1F16..1F17    ; disallowed                             # NA   <reserved-1F16>..<reserved-1F17>
-1F18          ; mapped                 ; 1F10          # 1.1  GREEK CAPITAL LETTER EPSILON WITH PSILI
-1F19          ; mapped                 ; 1F11          # 1.1  GREEK CAPITAL LETTER EPSILON WITH DASIA
-1F1A          ; mapped                 ; 1F12          # 1.1  GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
-1F1B          ; mapped                 ; 1F13          # 1.1  GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
-1F1C          ; mapped                 ; 1F14          # 1.1  GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
-1F1D          ; mapped                 ; 1F15          # 1.1  GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
-1F1E..1F1F    ; disallowed                             # NA   <reserved-1F1E>..<reserved-1F1F>
-1F20..1F27    ; valid                                  # 1.1  GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
-1F28          ; mapped                 ; 1F20          # 1.1  GREEK CAPITAL LETTER ETA WITH PSILI
-1F29          ; mapped                 ; 1F21          # 1.1  GREEK CAPITAL LETTER ETA WITH DASIA
-1F2A          ; mapped                 ; 1F22          # 1.1  GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
-1F2B          ; mapped                 ; 1F23          # 1.1  GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
-1F2C          ; mapped                 ; 1F24          # 1.1  GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
-1F2D          ; mapped                 ; 1F25          # 1.1  GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
-1F2E          ; mapped                 ; 1F26          # 1.1  GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
-1F2F          ; mapped                 ; 1F27          # 1.1  GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
-1F30..1F37    ; valid                                  # 1.1  GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F38          ; mapped                 ; 1F30          # 1.1  GREEK CAPITAL LETTER IOTA WITH PSILI
-1F39          ; mapped                 ; 1F31          # 1.1  GREEK CAPITAL LETTER IOTA WITH DASIA
-1F3A          ; mapped                 ; 1F32          # 1.1  GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
-1F3B          ; mapped                 ; 1F33          # 1.1  GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
-1F3C          ; mapped                 ; 1F34          # 1.1  GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
-1F3D          ; mapped                 ; 1F35          # 1.1  GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
-1F3E          ; mapped                 ; 1F36          # 1.1  GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
-1F3F          ; mapped                 ; 1F37          # 1.1  GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
-1F40..1F45    ; valid                                  # 1.1  GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
-1F46..1F47    ; disallowed                             # NA   <reserved-1F46>..<reserved-1F47>
-1F48          ; mapped                 ; 1F40          # 1.1  GREEK CAPITAL LETTER OMICRON WITH PSILI
-1F49          ; mapped                 ; 1F41          # 1.1  GREEK CAPITAL LETTER OMICRON WITH DASIA
-1F4A          ; mapped                 ; 1F42          # 1.1  GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
-1F4B          ; mapped                 ; 1F43          # 1.1  GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
-1F4C          ; mapped                 ; 1F44          # 1.1  GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
-1F4D          ; mapped                 ; 1F45          # 1.1  GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
-1F4E..1F4F    ; disallowed                             # NA   <reserved-1F4E>..<reserved-1F4F>
-1F50..1F57    ; valid                                  # 1.1  GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F58          ; disallowed                             # NA   <reserved-1F58>
-1F59          ; mapped                 ; 1F51          # 1.1  GREEK CAPITAL LETTER UPSILON WITH DASIA
-1F5A          ; disallowed                             # NA   <reserved-1F5A>
-1F5B          ; mapped                 ; 1F53          # 1.1  GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
-1F5C          ; disallowed                             # NA   <reserved-1F5C>
-1F5D          ; mapped                 ; 1F55          # 1.1  GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
-1F5E          ; disallowed                             # NA   <reserved-1F5E>
-1F5F          ; mapped                 ; 1F57          # 1.1  GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
-1F60..1F67    ; valid                                  # 1.1  GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F68          ; mapped                 ; 1F60          # 1.1  GREEK CAPITAL LETTER OMEGA WITH PSILI
-1F69          ; mapped                 ; 1F61          # 1.1  GREEK CAPITAL LETTER OMEGA WITH DASIA
-1F6A          ; mapped                 ; 1F62          # 1.1  GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
-1F6B          ; mapped                 ; 1F63          # 1.1  GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
-1F6C          ; mapped                 ; 1F64          # 1.1  GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
-1F6D          ; mapped                 ; 1F65          # 1.1  GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
-1F6E          ; mapped                 ; 1F66          # 1.1  GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
-1F6F          ; mapped                 ; 1F67          # 1.1  GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
-1F70          ; valid                                  # 1.1  GREEK SMALL LETTER ALPHA WITH VARIA
-1F71          ; mapped                 ; 03AC          # 1.1  GREEK SMALL LETTER ALPHA WITH OXIA
-1F72          ; valid                                  # 1.1  GREEK SMALL LETTER EPSILON WITH VARIA
-1F73          ; mapped                 ; 03AD          # 1.1  GREEK SMALL LETTER EPSILON WITH OXIA
-1F74          ; valid                                  # 1.1  GREEK SMALL LETTER ETA WITH VARIA
-1F75          ; mapped                 ; 03AE          # 1.1  GREEK SMALL LETTER ETA WITH OXIA
-1F76          ; valid                                  # 1.1  GREEK SMALL LETTER IOTA WITH VARIA
-1F77          ; mapped                 ; 03AF          # 1.1  GREEK SMALL LETTER IOTA WITH OXIA
-1F78          ; valid                                  # 1.1  GREEK SMALL LETTER OMICRON WITH VARIA
-1F79          ; mapped                 ; 03CC          # 1.1  GREEK SMALL LETTER OMICRON WITH OXIA
-1F7A          ; valid                                  # 1.1  GREEK SMALL LETTER UPSILON WITH VARIA
-1F7B          ; mapped                 ; 03CD          # 1.1  GREEK SMALL LETTER UPSILON WITH OXIA
-1F7C          ; valid                                  # 1.1  GREEK SMALL LETTER OMEGA WITH VARIA
-1F7D          ; mapped                 ; 03CE          # 1.1  GREEK SMALL LETTER OMEGA WITH OXIA
-1F7E..1F7F    ; disallowed                             # NA   <reserved-1F7E>..<reserved-1F7F>
-1F80          ; mapped                 ; 1F00 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-1F81          ; mapped                 ; 1F01 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-1F82          ; mapped                 ; 1F02 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F83          ; mapped                 ; 1F03 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F84          ; mapped                 ; 1F04 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F85          ; mapped                 ; 1F05 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F86          ; mapped                 ; 1F06 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F87          ; mapped                 ; 1F07 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F88          ; mapped                 ; 1F00 03B9     # 1.1  GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
-1F89          ; mapped                 ; 1F01 03B9     # 1.1  GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
-1F8A          ; mapped                 ; 1F02 03B9     # 1.1  GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F8B          ; mapped                 ; 1F03 03B9     # 1.1  GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F8C          ; mapped                 ; 1F04 03B9     # 1.1  GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F8D          ; mapped                 ; 1F05 03B9     # 1.1  GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F8E          ; mapped                 ; 1F06 03B9     # 1.1  GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F8F          ; mapped                 ; 1F07 03B9     # 1.1  GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1F90          ; mapped                 ; 1F20 03B9     # 1.1  GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-1F91          ; mapped                 ; 1F21 03B9     # 1.1  GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-1F92          ; mapped                 ; 1F22 03B9     # 1.1  GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1F93          ; mapped                 ; 1F23 03B9     # 1.1  GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1F94          ; mapped                 ; 1F24 03B9     # 1.1  GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1F95          ; mapped                 ; 1F25 03B9     # 1.1  GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1F96          ; mapped                 ; 1F26 03B9     # 1.1  GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1F97          ; mapped                 ; 1F27 03B9     # 1.1  GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1F98          ; mapped                 ; 1F20 03B9     # 1.1  GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
-1F99          ; mapped                 ; 1F21 03B9     # 1.1  GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
-1F9A          ; mapped                 ; 1F22 03B9     # 1.1  GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1F9B          ; mapped                 ; 1F23 03B9     # 1.1  GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1F9C          ; mapped                 ; 1F24 03B9     # 1.1  GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1F9D          ; mapped                 ; 1F25 03B9     # 1.1  GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1F9E          ; mapped                 ; 1F26 03B9     # 1.1  GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1F9F          ; mapped                 ; 1F27 03B9     # 1.1  GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FA0          ; mapped                 ; 1F60 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-1FA1          ; mapped                 ; 1F61 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-1FA2          ; mapped                 ; 1F62 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-1FA3          ; mapped                 ; 1F63 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-1FA4          ; mapped                 ; 1F64 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-1FA5          ; mapped                 ; 1F65 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-1FA6          ; mapped                 ; 1F66 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-1FA7          ; mapped                 ; 1F67 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-1FA8          ; mapped                 ; 1F60 03B9     # 1.1  GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
-1FA9          ; mapped                 ; 1F61 03B9     # 1.1  GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
-1FAA          ; mapped                 ; 1F62 03B9     # 1.1  GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
-1FAB          ; mapped                 ; 1F63 03B9     # 1.1  GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
-1FAC          ; mapped                 ; 1F64 03B9     # 1.1  GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
-1FAD          ; mapped                 ; 1F65 03B9     # 1.1  GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
-1FAE          ; mapped                 ; 1F66 03B9     # 1.1  GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
-1FAF          ; mapped                 ; 1F67 03B9     # 1.1  GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
-1FB0..1FB1    ; valid                                  # 1.1  GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH MACRON
-1FB2          ; mapped                 ; 1F70 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
-1FB3          ; mapped                 ; 03B1 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-1FB4          ; mapped                 ; 03AC 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
-1FB5          ; disallowed                             # NA   <reserved-1FB5>
-1FB6          ; valid                                  # 1.1  GREEK SMALL LETTER ALPHA WITH PERISPOMENI
-1FB7          ; mapped                 ; 1FB6 03B9     # 1.1  GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FB8          ; mapped                 ; 1FB0          # 1.1  GREEK CAPITAL LETTER ALPHA WITH VRACHY
-1FB9          ; mapped                 ; 1FB1          # 1.1  GREEK CAPITAL LETTER ALPHA WITH MACRON
-1FBA          ; mapped                 ; 1F70          # 1.1  GREEK CAPITAL LETTER ALPHA WITH VARIA
-1FBB          ; mapped                 ; 03AC          # 1.1  GREEK CAPITAL LETTER ALPHA WITH OXIA
-1FBC          ; mapped                 ; 03B1 03B9     # 1.1  GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
-1FBD          ; disallowed_STD3_mapped ; 0020 0313     # 1.1  GREEK KORONIS
-1FBE          ; mapped                 ; 03B9          # 1.1  GREEK PROSGEGRAMMENI
-1FBF          ; disallowed_STD3_mapped ; 0020 0313     # 1.1  GREEK PSILI
-1FC0          ; disallowed_STD3_mapped ; 0020 0342     # 1.1  GREEK PERISPOMENI
-1FC1          ; disallowed_STD3_mapped ; 0020 0308 0342 #1.1  GREEK DIALYTIKA AND PERISPOMENI
-1FC2          ; mapped                 ; 1F74 03B9     # 1.1  GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
-1FC3          ; mapped                 ; 03B7 03B9     # 1.1  GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-1FC4          ; mapped                 ; 03AE 03B9     # 1.1  GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
-1FC5          ; disallowed                             # NA   <reserved-1FC5>
-1FC6          ; valid                                  # 1.1  GREEK SMALL LETTER ETA WITH PERISPOMENI
-1FC7          ; mapped                 ; 1FC6 03B9     # 1.1  GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FC8          ; mapped                 ; 1F72          # 1.1  GREEK CAPITAL LETTER EPSILON WITH VARIA
-1FC9          ; mapped                 ; 03AD          # 1.1  GREEK CAPITAL LETTER EPSILON WITH OXIA
-1FCA          ; mapped                 ; 1F74          # 1.1  GREEK CAPITAL LETTER ETA WITH VARIA
-1FCB          ; mapped                 ; 03AE          # 1.1  GREEK CAPITAL LETTER ETA WITH OXIA
-1FCC          ; mapped                 ; 03B7 03B9     # 1.1  GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
-1FCD          ; disallowed_STD3_mapped ; 0020 0313 0300 #1.1  GREEK PSILI AND VARIA
-1FCE          ; disallowed_STD3_mapped ; 0020 0313 0301 #1.1  GREEK PSILI AND OXIA
-1FCF          ; disallowed_STD3_mapped ; 0020 0313 0342 #1.1  GREEK PSILI AND PERISPOMENI
-1FD0..1FD2    ; valid                                  # 1.1  GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
-1FD3          ; mapped                 ; 0390          # 1.1  GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
-1FD4..1FD5    ; disallowed                             # NA   <reserved-1FD4>..<reserved-1FD5>
-1FD6..1FD7    ; valid                                  # 1.1  GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
-1FD8          ; mapped                 ; 1FD0          # 1.1  GREEK CAPITAL LETTER IOTA WITH VRACHY
-1FD9          ; mapped                 ; 1FD1          # 1.1  GREEK CAPITAL LETTER IOTA WITH MACRON
-1FDA          ; mapped                 ; 1F76          # 1.1  GREEK CAPITAL LETTER IOTA WITH VARIA
-1FDB          ; mapped                 ; 03AF          # 1.1  GREEK CAPITAL LETTER IOTA WITH OXIA
-1FDC          ; disallowed                             # NA   <reserved-1FDC>
-1FDD          ; disallowed_STD3_mapped ; 0020 0314 0300 #1.1  GREEK DASIA AND VARIA
-1FDE          ; disallowed_STD3_mapped ; 0020 0314 0301 #1.1  GREEK DASIA AND OXIA
-1FDF          ; disallowed_STD3_mapped ; 0020 0314 0342 #1.1  GREEK DASIA AND PERISPOMENI
-1FE0..1FE2    ; valid                                  # 1.1  GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
-1FE3          ; mapped                 ; 03B0          # 1.1  GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
-1FE4..1FE7    ; valid                                  # 1.1  GREEK SMALL LETTER RHO WITH PSILI..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
-1FE8          ; mapped                 ; 1FE0          # 1.1  GREEK CAPITAL LETTER UPSILON WITH VRACHY
-1FE9          ; mapped                 ; 1FE1          # 1.1  GREEK CAPITAL LETTER UPSILON WITH MACRON
-1FEA          ; mapped                 ; 1F7A          # 1.1  GREEK CAPITAL LETTER UPSILON WITH VARIA
-1FEB          ; mapped                 ; 03CD          # 1.1  GREEK CAPITAL LETTER UPSILON WITH OXIA
-1FEC          ; mapped                 ; 1FE5          # 1.1  GREEK CAPITAL LETTER RHO WITH DASIA
-1FED          ; disallowed_STD3_mapped ; 0020 0308 0300 #1.1  GREEK DIALYTIKA AND VARIA
-1FEE          ; disallowed_STD3_mapped ; 0020 0308 0301 #1.1  GREEK DIALYTIKA AND OXIA
-1FEF          ; disallowed_STD3_mapped ; 0060          # 1.1  GREEK VARIA
-1FF0..1FF1    ; disallowed                             # NA   <reserved-1FF0>..<reserved-1FF1>
-1FF2          ; mapped                 ; 1F7C 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
-1FF3          ; mapped                 ; 03C9 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-1FF4          ; mapped                 ; 03CE 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
-1FF5          ; disallowed                             # NA   <reserved-1FF5>
-1FF6          ; valid                                  # 1.1  GREEK SMALL LETTER OMEGA WITH PERISPOMENI
-1FF7          ; mapped                 ; 1FF6 03B9     # 1.1  GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
-1FF8          ; mapped                 ; 1F78          # 1.1  GREEK CAPITAL LETTER OMICRON WITH VARIA
-1FF9          ; mapped                 ; 03CC          # 1.1  GREEK CAPITAL LETTER OMICRON WITH OXIA
-1FFA          ; mapped                 ; 1F7C          # 1.1  GREEK CAPITAL LETTER OMEGA WITH VARIA
-1FFB          ; mapped                 ; 03CE          # 1.1  GREEK CAPITAL LETTER OMEGA WITH OXIA
-1FFC          ; mapped                 ; 03C9 03B9     # 1.1  GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
-1FFD          ; disallowed_STD3_mapped ; 0020 0301     # 1.1  GREEK OXIA
-1FFE          ; disallowed_STD3_mapped ; 0020 0314     # 1.1  GREEK DASIA
-1FFF          ; disallowed                             # NA   <reserved-1FFF>
-2000..200A    ; disallowed_STD3_mapped ; 0020          # 1.1  EN QUAD..HAIR SPACE
-200B          ; ignored                                # 1.1  ZERO WIDTH SPACE
-200C..200D    ; deviation              ;               # 1.1  ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
-200E..200F    ; disallowed                             # 1.1  LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
-2010          ; valid                  ;      ; NV8    # 1.1  HYPHEN
-2011          ; mapped                 ; 2010          # 1.1  NON-BREAKING HYPHEN
-2012..2016    ; valid                  ;      ; NV8    # 1.1  FIGURE DASH..DOUBLE VERTICAL LINE
-2017          ; disallowed_STD3_mapped ; 0020 0333     # 1.1  DOUBLE LOW LINE
-2018..2023    ; valid                  ;      ; NV8    # 1.1  LEFT SINGLE QUOTATION MARK..TRIANGULAR BULLET
-2024..2026    ; disallowed                             # 1.1  ONE DOT LEADER..HORIZONTAL ELLIPSIS
-2027          ; valid                  ;      ; NV8    # 1.1  HYPHENATION POINT
-2028..202E    ; disallowed                             # 1.1  LINE SEPARATOR..RIGHT-TO-LEFT OVERRIDE
-202F          ; disallowed_STD3_mapped ; 0020          # 3.0  NARROW NO-BREAK SPACE
-2030..2032    ; valid                  ;      ; NV8    # 1.1  PER MILLE SIGN..PRIME
-2033          ; mapped                 ; 2032 2032     # 1.1  DOUBLE PRIME
-2034          ; mapped                 ; 2032 2032 2032 #1.1  TRIPLE PRIME
-2035          ; valid                  ;      ; NV8    # 1.1  REVERSED PRIME
-2036          ; mapped                 ; 2035 2035     # 1.1  REVERSED DOUBLE PRIME
-2037          ; mapped                 ; 2035 2035 2035 #1.1  REVERSED TRIPLE PRIME
-2038..203B    ; valid                  ;      ; NV8    # 1.1  CARET..REFERENCE MARK
-203C          ; disallowed_STD3_mapped ; 0021 0021     # 1.1  DOUBLE EXCLAMATION MARK
-203D          ; valid                  ;      ; NV8    # 1.1  INTERROBANG
-203E          ; disallowed_STD3_mapped ; 0020 0305     # 1.1  OVERLINE
-203F..2046    ; valid                  ;      ; NV8    # 1.1  UNDERTIE..RIGHT SQUARE BRACKET WITH QUILL
-2047          ; disallowed_STD3_mapped ; 003F 003F     # 3.2  DOUBLE QUESTION MARK
-2048          ; disallowed_STD3_mapped ; 003F 0021     # 3.0  QUESTION EXCLAMATION MARK
-2049          ; disallowed_STD3_mapped ; 0021 003F     # 3.0  EXCLAMATION QUESTION MARK
-204A..204D    ; valid                  ;      ; NV8    # 3.0  TIRONIAN SIGN ET..BLACK RIGHTWARDS BULLET
-204E..2052    ; valid                  ;      ; NV8    # 3.2  LOW ASTERISK..COMMERCIAL MINUS SIGN
-2053..2054    ; valid                  ;      ; NV8    # 4.0  SWUNG DASH..INVERTED UNDERTIE
-2055..2056    ; valid                  ;      ; NV8    # 4.1  FLOWER PUNCTUATION MARK..THREE DOT PUNCTUATION
-2057          ; mapped                 ; 2032 2032 2032 2032 #3.2 QUADRUPLE PRIME
-2058..205E    ; valid                  ;      ; NV8    # 4.1  FOUR DOT PUNCTUATION..VERTICAL FOUR DOTS
-205F          ; disallowed_STD3_mapped ; 0020          # 3.2  MEDIUM MATHEMATICAL SPACE
-2060          ; ignored                                # 3.2  WORD JOINER
-2061..2063    ; disallowed                             # 3.2  FUNCTION APPLICATION..INVISIBLE SEPARATOR
-2064          ; ignored                                # 5.1  INVISIBLE PLUS
-2065          ; disallowed                             # NA   <reserved-2065>
-2066..2069    ; disallowed                             # 6.3  LEFT-TO-RIGHT ISOLATE..POP DIRECTIONAL ISOLATE
-206A..206F    ; disallowed                             # 1.1  INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
-2070          ; mapped                 ; 0030          # 1.1  SUPERSCRIPT ZERO
-2071          ; mapped                 ; 0069          # 3.2  SUPERSCRIPT LATIN SMALL LETTER I
-2072..2073    ; disallowed                             # NA   <reserved-2072>..<reserved-2073>
-2074          ; mapped                 ; 0034          # 1.1  SUPERSCRIPT FOUR
-2075          ; mapped                 ; 0035          # 1.1  SUPERSCRIPT FIVE
-2076          ; mapped                 ; 0036          # 1.1  SUPERSCRIPT SIX
-2077          ; mapped                 ; 0037          # 1.1  SUPERSCRIPT SEVEN
-2078          ; mapped                 ; 0038          # 1.1  SUPERSCRIPT EIGHT
-2079          ; mapped                 ; 0039          # 1.1  SUPERSCRIPT NINE
-207A          ; disallowed_STD3_mapped ; 002B          # 1.1  SUPERSCRIPT PLUS SIGN
-207B          ; mapped                 ; 2212          # 1.1  SUPERSCRIPT MINUS
-207C          ; disallowed_STD3_mapped ; 003D          # 1.1  SUPERSCRIPT EQUALS SIGN
-207D          ; disallowed_STD3_mapped ; 0028          # 1.1  SUPERSCRIPT LEFT PARENTHESIS
-207E          ; disallowed_STD3_mapped ; 0029          # 1.1  SUPERSCRIPT RIGHT PARENTHESIS
-207F          ; mapped                 ; 006E          # 1.1  SUPERSCRIPT LATIN SMALL LETTER N
-2080          ; mapped                 ; 0030          # 1.1  SUBSCRIPT ZERO
-2081          ; mapped                 ; 0031          # 1.1  SUBSCRIPT ONE
-2082          ; mapped                 ; 0032          # 1.1  SUBSCRIPT TWO
-2083          ; mapped                 ; 0033          # 1.1  SUBSCRIPT THREE
-2084          ; mapped                 ; 0034          # 1.1  SUBSCRIPT FOUR
-2085          ; mapped                 ; 0035          # 1.1  SUBSCRIPT FIVE
-2086          ; mapped                 ; 0036          # 1.1  SUBSCRIPT SIX
-2087          ; mapped                 ; 0037          # 1.1  SUBSCRIPT SEVEN
-2088          ; mapped                 ; 0038          # 1.1  SUBSCRIPT EIGHT
-2089          ; mapped                 ; 0039          # 1.1  SUBSCRIPT NINE
-208A          ; disallowed_STD3_mapped ; 002B          # 1.1  SUBSCRIPT PLUS SIGN
-208B          ; mapped                 ; 2212          # 1.1  SUBSCRIPT MINUS
-208C          ; disallowed_STD3_mapped ; 003D          # 1.1  SUBSCRIPT EQUALS SIGN
-208D          ; disallowed_STD3_mapped ; 0028          # 1.1  SUBSCRIPT LEFT PARENTHESIS
-208E          ; disallowed_STD3_mapped ; 0029          # 1.1  SUBSCRIPT RIGHT PARENTHESIS
-208F          ; disallowed                             # NA   <reserved-208F>
-2090          ; mapped                 ; 0061          # 4.1  LATIN SUBSCRIPT SMALL LETTER A
-2091          ; mapped                 ; 0065          # 4.1  LATIN SUBSCRIPT SMALL LETTER E
-2092          ; mapped                 ; 006F          # 4.1  LATIN SUBSCRIPT SMALL LETTER O
-2093          ; mapped                 ; 0078          # 4.1  LATIN SUBSCRIPT SMALL LETTER X
-2094          ; mapped                 ; 0259          # 4.1  LATIN SUBSCRIPT SMALL LETTER SCHWA
-2095          ; mapped                 ; 0068          # 6.0  LATIN SUBSCRIPT SMALL LETTER H
-2096          ; mapped                 ; 006B          # 6.0  LATIN SUBSCRIPT SMALL LETTER K
-2097          ; mapped                 ; 006C          # 6.0  LATIN SUBSCRIPT SMALL LETTER L
-2098          ; mapped                 ; 006D          # 6.0  LATIN SUBSCRIPT SMALL LETTER M
-2099          ; mapped                 ; 006E          # 6.0  LATIN SUBSCRIPT SMALL LETTER N
-209A          ; mapped                 ; 0070          # 6.0  LATIN SUBSCRIPT SMALL LETTER P
-209B          ; mapped                 ; 0073          # 6.0  LATIN SUBSCRIPT SMALL LETTER S
-209C          ; mapped                 ; 0074          # 6.0  LATIN SUBSCRIPT SMALL LETTER T
-209D..209F    ; disallowed                             # NA   <reserved-209D>..<reserved-209F>
-20A0..20A7    ; valid                  ;      ; NV8    # 1.1  EURO-CURRENCY SIGN..PESETA SIGN
-20A8          ; mapped                 ; 0072 0073     # 1.1  RUPEE SIGN
-20A9..20AA    ; valid                  ;      ; NV8    # 1.1  WON SIGN..NEW SHEQEL SIGN
-20AB          ; valid                  ;      ; NV8    # 2.0  DONG SIGN
-20AC          ; valid                  ;      ; NV8    # 2.1  EURO SIGN
-20AD..20AF    ; valid                  ;      ; NV8    # 3.0  KIP SIGN..DRACHMA SIGN
-20B0..20B1    ; valid                  ;      ; NV8    # 3.2  GERMAN PENNY SIGN..PESO SIGN
-20B2..20B5    ; valid                  ;      ; NV8    # 4.1  GUARANI SIGN..CEDI SIGN
-20B6..20B8    ; valid                  ;      ; NV8    # 5.2  LIVRE TOURNOIS SIGN..TENGE SIGN
-20B9          ; valid                  ;      ; NV8    # 6.0  INDIAN RUPEE SIGN
-20BA          ; valid                  ;      ; NV8    # 6.2  TURKISH LIRA SIGN
-20BB..20BD    ; valid                  ;      ; NV8    # 7.0  NORDIC MARK SIGN..RUBLE SIGN
-20BE          ; valid                  ;      ; NV8    # 8.0  LARI SIGN
-20BF          ; valid                  ;      ; NV8    # 10.0 BITCOIN SIGN
-20C0..20CF    ; disallowed                             # NA   <reserved-20C0>..<reserved-20CF>
-20D0..20E1    ; valid                  ;      ; NV8    # 1.1  COMBINING LEFT HARPOON ABOVE..COMBINING LEFT RIGHT ARROW ABOVE
-20E2..20E3    ; valid                  ;      ; NV8    # 3.0  COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING KEYCAP
-20E4..20EA    ; valid                  ;      ; NV8    # 3.2  COMBINING ENCLOSING UPWARD POINTING TRIANGLE..COMBINING LEFTWARDS ARROW OVERLAY
-20EB          ; valid                  ;      ; NV8    # 4.1  COMBINING LONG DOUBLE SOLIDUS OVERLAY
-20EC..20EF    ; valid                  ;      ; NV8    # 5.0  COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS..COMBINING RIGHT ARROW BELOW
-20F0          ; valid                  ;      ; NV8    # 5.1  COMBINING ASTERISK ABOVE
-20F1..20FF    ; disallowed                             # NA   <reserved-20F1>..<reserved-20FF>
-2100          ; disallowed_STD3_mapped ; 0061 002F 0063 #1.1  ACCOUNT OF
-2101          ; disallowed_STD3_mapped ; 0061 002F 0073 #1.1  ADDRESSED TO THE SUBJECT
-2102          ; mapped                 ; 0063          # 1.1  DOUBLE-STRUCK CAPITAL C
-2103          ; mapped                 ; 00B0 0063     # 1.1  DEGREE CELSIUS
-2104          ; valid                  ;      ; NV8    # 1.1  CENTRE LINE SYMBOL
-2105          ; disallowed_STD3_mapped ; 0063 002F 006F #1.1  CARE OF
-2106          ; disallowed_STD3_mapped ; 0063 002F 0075 #1.1  CADA UNA
-2107          ; mapped                 ; 025B          # 1.1  EULER CONSTANT
-2108          ; valid                  ;      ; NV8    # 1.1  SCRUPLE
-2109          ; mapped                 ; 00B0 0066     # 1.1  DEGREE FAHRENHEIT
-210A          ; mapped                 ; 0067          # 1.1  SCRIPT SMALL G
-210B..210E    ; mapped                 ; 0068          # 1.1  SCRIPT CAPITAL H..PLANCK CONSTANT
-210F          ; mapped                 ; 0127          # 1.1  PLANCK CONSTANT OVER TWO PI
-2110..2111    ; mapped                 ; 0069          # 1.1  SCRIPT CAPITAL I..BLACK-LETTER CAPITAL I
-2112..2113    ; mapped                 ; 006C          # 1.1  SCRIPT CAPITAL L..SCRIPT SMALL L
-2114          ; valid                  ;      ; NV8    # 1.1  L B BAR SYMBOL
-2115          ; mapped                 ; 006E          # 1.1  DOUBLE-STRUCK CAPITAL N
-2116          ; mapped                 ; 006E 006F     # 1.1  NUMERO SIGN
-2117..2118    ; valid                  ;      ; NV8    # 1.1  SOUND RECORDING COPYRIGHT..SCRIPT CAPITAL P
-2119          ; mapped                 ; 0070          # 1.1  DOUBLE-STRUCK CAPITAL P
-211A          ; mapped                 ; 0071          # 1.1  DOUBLE-STRUCK CAPITAL Q
-211B..211D    ; mapped                 ; 0072          # 1.1  SCRIPT CAPITAL R..DOUBLE-STRUCK CAPITAL R
-211E..211F    ; valid                  ;      ; NV8    # 1.1  PRESCRIPTION TAKE..RESPONSE
-2120          ; mapped                 ; 0073 006D     # 1.1  SERVICE MARK
-2121          ; mapped                 ; 0074 0065 006C #1.1  TELEPHONE SIGN
-2122          ; mapped                 ; 0074 006D     # 1.1  TRADE MARK SIGN
-2123          ; valid                  ;      ; NV8    # 1.1  VERSICLE
-2124          ; mapped                 ; 007A          # 1.1  DOUBLE-STRUCK CAPITAL Z
-2125          ; valid                  ;      ; NV8    # 1.1  OUNCE SIGN
-2126          ; mapped                 ; 03C9          # 1.1  OHM SIGN
-2127          ; valid                  ;      ; NV8    # 1.1  INVERTED OHM SIGN
-2128          ; mapped                 ; 007A          # 1.1  BLACK-LETTER CAPITAL Z
-2129          ; valid                  ;      ; NV8    # 1.1  TURNED GREEK SMALL LETTER IOTA
-212A          ; mapped                 ; 006B          # 1.1  KELVIN SIGN
-212B          ; mapped                 ; 00E5          # 1.1  ANGSTROM SIGN
-212C          ; mapped                 ; 0062          # 1.1  SCRIPT CAPITAL B
-212D          ; mapped                 ; 0063          # 1.1  BLACK-LETTER CAPITAL C
-212E          ; valid                  ;      ; NV8    # 1.1  ESTIMATED SYMBOL
-212F..2130    ; mapped                 ; 0065          # 1.1  SCRIPT SMALL E..SCRIPT CAPITAL E
-2131          ; mapped                 ; 0066          # 1.1  SCRIPT CAPITAL F
-2132          ; disallowed                             # 1.1  TURNED CAPITAL F
-2133          ; mapped                 ; 006D          # 1.1  SCRIPT CAPITAL M
-2134          ; mapped                 ; 006F          # 1.1  SCRIPT SMALL O
-2135          ; mapped                 ; 05D0          # 1.1  ALEF SYMBOL
-2136          ; mapped                 ; 05D1          # 1.1  BET SYMBOL
-2137          ; mapped                 ; 05D2          # 1.1  GIMEL SYMBOL
-2138          ; mapped                 ; 05D3          # 1.1  DALET SYMBOL
-2139          ; mapped                 ; 0069          # 3.0  INFORMATION SOURCE
-213A          ; valid                  ;      ; NV8    # 3.0  ROTATED CAPITAL Q
-213B          ; mapped                 ; 0066 0061 0078 #4.0  FACSIMILE SIGN
-213C          ; mapped                 ; 03C0          # 4.1  DOUBLE-STRUCK SMALL PI
-213D..213E    ; mapped                 ; 03B3          # 3.2  DOUBLE-STRUCK SMALL GAMMA..DOUBLE-STRUCK CAPITAL GAMMA
-213F          ; mapped                 ; 03C0          # 3.2  DOUBLE-STRUCK CAPITAL PI
-2140          ; mapped                 ; 2211          # 3.2  DOUBLE-STRUCK N-ARY SUMMATION
-2141..2144    ; valid                  ;      ; NV8    # 3.2  TURNED SANS-SERIF CAPITAL G..TURNED SANS-SERIF CAPITAL Y
-2145..2146    ; mapped                 ; 0064          # 3.2  DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL D
-2147          ; mapped                 ; 0065          # 3.2  DOUBLE-STRUCK ITALIC SMALL E
-2148          ; mapped                 ; 0069          # 3.2  DOUBLE-STRUCK ITALIC SMALL I
-2149          ; mapped                 ; 006A          # 3.2  DOUBLE-STRUCK ITALIC SMALL J
-214A..214B    ; valid                  ;      ; NV8    # 3.2  PROPERTY LINE..TURNED AMPERSAND
-214C          ; valid                  ;      ; NV8    # 4.1  PER SIGN
-214D          ; valid                  ;      ; NV8    # 5.0  AKTIESELSKAB
-214E          ; valid                                  # 5.0  TURNED SMALL F
-214F          ; valid                  ;      ; NV8    # 5.1  SYMBOL FOR SAMARITAN SOURCE
-2150          ; mapped                 ; 0031 2044 0037 #5.2  VULGAR FRACTION ONE SEVENTH
-2151          ; mapped                 ; 0031 2044 0039 #5.2  VULGAR FRACTION ONE NINTH
-2152          ; mapped                 ; 0031 2044 0031 0030 #5.2 VULGAR FRACTION ONE TENTH
-2153          ; mapped                 ; 0031 2044 0033 #1.1  VULGAR FRACTION ONE THIRD
-2154          ; mapped                 ; 0032 2044 0033 #1.1  VULGAR FRACTION TWO THIRDS
-2155          ; mapped                 ; 0031 2044 0035 #1.1  VULGAR FRACTION ONE FIFTH
-2156          ; mapped                 ; 0032 2044 0035 #1.1  VULGAR FRACTION TWO FIFTHS
-2157          ; mapped                 ; 0033 2044 0035 #1.1  VULGAR FRACTION THREE FIFTHS
-2158          ; mapped                 ; 0034 2044 0035 #1.1  VULGAR FRACTION FOUR FIFTHS
-2159          ; mapped                 ; 0031 2044 0036 #1.1  VULGAR FRACTION ONE SIXTH
-215A          ; mapped                 ; 0035 2044 0036 #1.1  VULGAR FRACTION FIVE SIXTHS
-215B          ; mapped                 ; 0031 2044 0038 #1.1  VULGAR FRACTION ONE EIGHTH
-215C          ; mapped                 ; 0033 2044 0038 #1.1  VULGAR FRACTION THREE EIGHTHS
-215D          ; mapped                 ; 0035 2044 0038 #1.1  VULGAR FRACTION FIVE EIGHTHS
-215E          ; mapped                 ; 0037 2044 0038 #1.1  VULGAR FRACTION SEVEN EIGHTHS
-215F          ; mapped                 ; 0031 2044     # 1.1  FRACTION NUMERATOR ONE
-2160          ; mapped                 ; 0069          # 1.1  ROMAN NUMERAL ONE
-2161          ; mapped                 ; 0069 0069     # 1.1  ROMAN NUMERAL TWO
-2162          ; mapped                 ; 0069 0069 0069 #1.1  ROMAN NUMERAL THREE
-2163          ; mapped                 ; 0069 0076     # 1.1  ROMAN NUMERAL FOUR
-2164          ; mapped                 ; 0076          # 1.1  ROMAN NUMERAL FIVE
-2165          ; mapped                 ; 0076 0069     # 1.1  ROMAN NUMERAL SIX
-2166          ; mapped                 ; 0076 0069 0069 #1.1  ROMAN NUMERAL SEVEN
-2167          ; mapped                 ; 0076 0069 0069 0069 #1.1 ROMAN NUMERAL EIGHT
-2168          ; mapped                 ; 0069 0078     # 1.1  ROMAN NUMERAL NINE
-2169          ; mapped                 ; 0078          # 1.1  ROMAN NUMERAL TEN
-216A          ; mapped                 ; 0078 0069     # 1.1  ROMAN NUMERAL ELEVEN
-216B          ; mapped                 ; 0078 0069 0069 #1.1  ROMAN NUMERAL TWELVE
-216C          ; mapped                 ; 006C          # 1.1  ROMAN NUMERAL FIFTY
-216D          ; mapped                 ; 0063          # 1.1  ROMAN NUMERAL ONE HUNDRED
-216E          ; mapped                 ; 0064          # 1.1  ROMAN NUMERAL FIVE HUNDRED
-216F          ; mapped                 ; 006D          # 1.1  ROMAN NUMERAL ONE THOUSAND
-2170          ; mapped                 ; 0069          # 1.1  SMALL ROMAN NUMERAL ONE
-2171          ; mapped                 ; 0069 0069     # 1.1  SMALL ROMAN NUMERAL TWO
-2172          ; mapped                 ; 0069 0069 0069 #1.1  SMALL ROMAN NUMERAL THREE
-2173          ; mapped                 ; 0069 0076     # 1.1  SMALL ROMAN NUMERAL FOUR
-2174          ; mapped                 ; 0076          # 1.1  SMALL ROMAN NUMERAL FIVE
-2175          ; mapped                 ; 0076 0069     # 1.1  SMALL ROMAN NUMERAL SIX
-2176          ; mapped                 ; 0076 0069 0069 #1.1  SMALL ROMAN NUMERAL SEVEN
-2177          ; mapped                 ; 0076 0069 0069 0069 #1.1 SMALL ROMAN NUMERAL EIGHT
-2178          ; mapped                 ; 0069 0078     # 1.1  SMALL ROMAN NUMERAL NINE
-2179          ; mapped                 ; 0078          # 1.1  SMALL ROMAN NUMERAL TEN
-217A          ; mapped                 ; 0078 0069     # 1.1  SMALL ROMAN NUMERAL ELEVEN
-217B          ; mapped                 ; 0078 0069 0069 #1.1  SMALL ROMAN NUMERAL TWELVE
-217C          ; mapped                 ; 006C          # 1.1  SMALL ROMAN NUMERAL FIFTY
-217D          ; mapped                 ; 0063          # 1.1  SMALL ROMAN NUMERAL ONE HUNDRED
-217E          ; mapped                 ; 0064          # 1.1  SMALL ROMAN NUMERAL FIVE HUNDRED
-217F          ; mapped                 ; 006D          # 1.1  SMALL ROMAN NUMERAL ONE THOUSAND
-2180..2182    ; valid                  ;      ; NV8    # 1.1  ROMAN NUMERAL ONE THOUSAND C D..ROMAN NUMERAL TEN THOUSAND
-2183          ; disallowed                             # 3.0  ROMAN NUMERAL REVERSED ONE HUNDRED
-2184          ; valid                                  # 5.0  LATIN SMALL LETTER REVERSED C
-2185..2188    ; valid                  ;      ; NV8    # 5.1  ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
-2189          ; mapped                 ; 0030 2044 0033 #5.2  VULGAR FRACTION ZERO THIRDS
-218A..218B    ; valid                  ;      ; NV8    # 8.0  TURNED DIGIT TWO..TURNED DIGIT THREE
-218C..218F    ; disallowed                             # NA   <reserved-218C>..<reserved-218F>
-2190..21EA    ; valid                  ;      ; NV8    # 1.1  LEFTWARDS ARROW..UPWARDS WHITE ARROW FROM BAR
-21EB..21F3    ; valid                  ;      ; NV8    # 3.0  UPWARDS WHITE ARROW ON PEDESTAL..UP DOWN WHITE ARROW
-21F4..21FF    ; valid                  ;      ; NV8    # 3.2  RIGHT ARROW WITH SMALL CIRCLE..LEFT RIGHT OPEN-HEADED ARROW
-2200..222B    ; valid                  ;      ; NV8    # 1.1  FOR ALL..INTEGRAL
-222C          ; mapped                 ; 222B 222B     # 1.1  DOUBLE INTEGRAL
-222D          ; mapped                 ; 222B 222B 222B #1.1  TRIPLE INTEGRAL
-222E          ; valid                  ;      ; NV8    # 1.1  CONTOUR INTEGRAL
-222F          ; mapped                 ; 222E 222E     # 1.1  SURFACE INTEGRAL
-2230          ; mapped                 ; 222E 222E 222E #1.1  VOLUME INTEGRAL
-2231..225F    ; valid                  ;      ; NV8    # 1.1  CLOCKWISE INTEGRAL..QUESTIONED EQUAL TO
-2260          ; disallowed_STD3_valid                  # 1.1  NOT EQUAL TO
-2261..226D    ; valid                  ;      ; NV8    # 1.1  IDENTICAL TO..NOT EQUIVALENT TO
-226E..226F    ; disallowed_STD3_valid                  # 1.1  NOT LESS-THAN..NOT GREATER-THAN
-2270..22F1    ; valid                  ;      ; NV8    # 1.1  NEITHER LESS-THAN NOR EQUAL TO..DOWN RIGHT DIAGONAL ELLIPSIS
-22F2..22FF    ; valid                  ;      ; NV8    # 3.2  ELEMENT OF WITH LONG HORIZONTAL STROKE..Z NOTATION BAG MEMBERSHIP
-2300          ; valid                  ;      ; NV8    # 1.1  DIAMETER SIGN
-2301          ; valid                  ;      ; NV8    # 3.0  ELECTRIC ARROW
-2302..2328    ; valid                  ;      ; NV8    # 1.1  HOUSE..KEYBOARD
-2329          ; mapped                 ; 3008          # 1.1  LEFT-POINTING ANGLE BRACKET
-232A          ; mapped                 ; 3009          # 1.1  RIGHT-POINTING ANGLE BRACKET
-232B..237A    ; valid                  ;      ; NV8    # 1.1  ERASE TO THE LEFT..APL FUNCTIONAL SYMBOL ALPHA
-237B          ; valid                  ;      ; NV8    # 3.0  NOT CHECK MARK
-237C          ; valid                  ;      ; NV8    # 3.2  RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
-237D..239A    ; valid                  ;      ; NV8    # 3.0  SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
-239B..23CE    ; valid                  ;      ; NV8    # 3.2  LEFT PARENTHESIS UPPER HOOK..RETURN SYMBOL
-23CF..23D0    ; valid                  ;      ; NV8    # 4.0  EJECT SYMBOL..VERTICAL LINE EXTENSION
-23D1..23DB    ; valid                  ;      ; NV8    # 4.1  METRICAL BREVE..FUSE
-23DC..23E7    ; valid                  ;      ; NV8    # 5.0  TOP PARENTHESIS..ELECTRICAL INTERSECTION
-23E8          ; valid                  ;      ; NV8    # 5.2  DECIMAL EXPONENT SYMBOL
-23E9..23F3    ; valid                  ;      ; NV8    # 6.0  BLACK RIGHT-POINTING DOUBLE TRIANGLE..HOURGLASS WITH FLOWING SAND
-23F4..23FA    ; valid                  ;      ; NV8    # 7.0  BLACK MEDIUM LEFT-POINTING TRIANGLE..BLACK CIRCLE FOR RECORD
-23FB..23FE    ; valid                  ;      ; NV8    # 9.0  POWER SYMBOL..POWER SLEEP SYMBOL
-23FF          ; valid                  ;      ; NV8    # 10.0 OBSERVER EYE SYMBOL
-2400..2424    ; valid                  ;      ; NV8    # 1.1  SYMBOL FOR NULL..SYMBOL FOR NEWLINE
-2425..2426    ; valid                  ;      ; NV8    # 3.0  SYMBOL FOR DELETE FORM TWO..SYMBOL FOR SUBSTITUTE FORM TWO
-2427..243F    ; disallowed                             # NA   <reserved-2427>..<reserved-243F>
-2440..244A    ; valid                  ;      ; NV8    # 1.1  OCR HOOK..OCR DOUBLE BACKSLASH
-244B..245F    ; disallowed                             # NA   <reserved-244B>..<reserved-245F>
-2460          ; mapped                 ; 0031          # 1.1  CIRCLED DIGIT ONE
-2461          ; mapped                 ; 0032          # 1.1  CIRCLED DIGIT TWO
-2462          ; mapped                 ; 0033          # 1.1  CIRCLED DIGIT THREE
-2463          ; mapped                 ; 0034          # 1.1  CIRCLED DIGIT FOUR
-2464          ; mapped                 ; 0035          # 1.1  CIRCLED DIGIT FIVE
-2465          ; mapped                 ; 0036          # 1.1  CIRCLED DIGIT SIX
-2466          ; mapped                 ; 0037          # 1.1  CIRCLED DIGIT SEVEN
-2467          ; mapped                 ; 0038          # 1.1  CIRCLED DIGIT EIGHT
-2468          ; mapped                 ; 0039          # 1.1  CIRCLED DIGIT NINE
-2469          ; mapped                 ; 0031 0030     # 1.1  CIRCLED NUMBER TEN
-246A          ; mapped                 ; 0031 0031     # 1.1  CIRCLED NUMBER ELEVEN
-246B          ; mapped                 ; 0031 0032     # 1.1  CIRCLED NUMBER TWELVE
-246C          ; mapped                 ; 0031 0033     # 1.1  CIRCLED NUMBER THIRTEEN
-246D          ; mapped                 ; 0031 0034     # 1.1  CIRCLED NUMBER FOURTEEN
-246E          ; mapped                 ; 0031 0035     # 1.1  CIRCLED NUMBER FIFTEEN
-246F          ; mapped                 ; 0031 0036     # 1.1  CIRCLED NUMBER SIXTEEN
-2470          ; mapped                 ; 0031 0037     # 1.1  CIRCLED NUMBER SEVENTEEN
-2471          ; mapped                 ; 0031 0038     # 1.1  CIRCLED NUMBER EIGHTEEN
-2472          ; mapped                 ; 0031 0039     # 1.1  CIRCLED NUMBER NINETEEN
-2473          ; mapped                 ; 0032 0030     # 1.1  CIRCLED NUMBER TWENTY
-2474          ; disallowed_STD3_mapped ; 0028 0031 0029 #1.1  PARENTHESIZED DIGIT ONE
-2475          ; disallowed_STD3_mapped ; 0028 0032 0029 #1.1  PARENTHESIZED DIGIT TWO
-2476          ; disallowed_STD3_mapped ; 0028 0033 0029 #1.1  PARENTHESIZED DIGIT THREE
-2477          ; disallowed_STD3_mapped ; 0028 0034 0029 #1.1  PARENTHESIZED DIGIT FOUR
-2478          ; disallowed_STD3_mapped ; 0028 0035 0029 #1.1  PARENTHESIZED DIGIT FIVE
-2479          ; disallowed_STD3_mapped ; 0028 0036 0029 #1.1  PARENTHESIZED DIGIT SIX
-247A          ; disallowed_STD3_mapped ; 0028 0037 0029 #1.1  PARENTHESIZED DIGIT SEVEN
-247B          ; disallowed_STD3_mapped ; 0028 0038 0029 #1.1  PARENTHESIZED DIGIT EIGHT
-247C          ; disallowed_STD3_mapped ; 0028 0039 0029 #1.1  PARENTHESIZED DIGIT NINE
-247D          ; disallowed_STD3_mapped ; 0028 0031 0030 0029 #1.1 PARENTHESIZED NUMBER TEN
-247E          ; disallowed_STD3_mapped ; 0028 0031 0031 0029 #1.1 PARENTHESIZED NUMBER ELEVEN
-247F          ; disallowed_STD3_mapped ; 0028 0031 0032 0029 #1.1 PARENTHESIZED NUMBER TWELVE
-2480          ; disallowed_STD3_mapped ; 0028 0031 0033 0029 #1.1 PARENTHESIZED NUMBER THIRTEEN
-2481          ; disallowed_STD3_mapped ; 0028 0031 0034 0029 #1.1 PARENTHESIZED NUMBER FOURTEEN
-2482          ; disallowed_STD3_mapped ; 0028 0031 0035 0029 #1.1 PARENTHESIZED NUMBER FIFTEEN
-2483          ; disallowed_STD3_mapped ; 0028 0031 0036 0029 #1.1 PARENTHESIZED NUMBER SIXTEEN
-2484          ; disallowed_STD3_mapped ; 0028 0031 0037 0029 #1.1 PARENTHESIZED NUMBER SEVENTEEN
-2485          ; disallowed_STD3_mapped ; 0028 0031 0038 0029 #1.1 PARENTHESIZED NUMBER EIGHTEEN
-2486          ; disallowed_STD3_mapped ; 0028 0031 0039 0029 #1.1 PARENTHESIZED NUMBER NINETEEN
-2487          ; disallowed_STD3_mapped ; 0028 0032 0030 0029 #1.1 PARENTHESIZED NUMBER TWENTY
-2488..249B    ; disallowed                             # 1.1  DIGIT ONE FULL STOP..NUMBER TWENTY FULL STOP
-249C          ; disallowed_STD3_mapped ; 0028 0061 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER A
-249D          ; disallowed_STD3_mapped ; 0028 0062 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER B
-249E          ; disallowed_STD3_mapped ; 0028 0063 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER C
-249F          ; disallowed_STD3_mapped ; 0028 0064 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER D
-24A0          ; disallowed_STD3_mapped ; 0028 0065 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER E
-24A1          ; disallowed_STD3_mapped ; 0028 0066 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER F
-24A2          ; disallowed_STD3_mapped ; 0028 0067 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER G
-24A3          ; disallowed_STD3_mapped ; 0028 0068 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER H
-24A4          ; disallowed_STD3_mapped ; 0028 0069 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER I
-24A5          ; disallowed_STD3_mapped ; 0028 006A 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER J
-24A6          ; disallowed_STD3_mapped ; 0028 006B 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER K
-24A7          ; disallowed_STD3_mapped ; 0028 006C 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER L
-24A8          ; disallowed_STD3_mapped ; 0028 006D 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER M
-24A9          ; disallowed_STD3_mapped ; 0028 006E 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER N
-24AA          ; disallowed_STD3_mapped ; 0028 006F 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER O
-24AB          ; disallowed_STD3_mapped ; 0028 0070 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER P
-24AC          ; disallowed_STD3_mapped ; 0028 0071 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER Q
-24AD          ; disallowed_STD3_mapped ; 0028 0072 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER R
-24AE          ; disallowed_STD3_mapped ; 0028 0073 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER S
-24AF          ; disallowed_STD3_mapped ; 0028 0074 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER T
-24B0          ; disallowed_STD3_mapped ; 0028 0075 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER U
-24B1          ; disallowed_STD3_mapped ; 0028 0076 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER V
-24B2          ; disallowed_STD3_mapped ; 0028 0077 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER W
-24B3          ; disallowed_STD3_mapped ; 0028 0078 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER X
-24B4          ; disallowed_STD3_mapped ; 0028 0079 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER Y
-24B5          ; disallowed_STD3_mapped ; 0028 007A 0029 #1.1  PARENTHESIZED LATIN SMALL LETTER Z
-24B6          ; mapped                 ; 0061          # 1.1  CIRCLED LATIN CAPITAL LETTER A
-24B7          ; mapped                 ; 0062          # 1.1  CIRCLED LATIN CAPITAL LETTER B
-24B8          ; mapped                 ; 0063          # 1.1  CIRCLED LATIN CAPITAL LETTER C
-24B9          ; mapped                 ; 0064          # 1.1  CIRCLED LATIN CAPITAL LETTER D
-24BA          ; mapped                 ; 0065          # 1.1  CIRCLED LATIN CAPITAL LETTER E
-24BB          ; mapped                 ; 0066          # 1.1  CIRCLED LATIN CAPITAL LETTER F
-24BC          ; mapped                 ; 0067          # 1.1  CIRCLED LATIN CAPITAL LETTER G
-24BD          ; mapped                 ; 0068          # 1.1  CIRCLED LATIN CAPITAL LETTER H
-24BE          ; mapped                 ; 0069          # 1.1  CIRCLED LATIN CAPITAL LETTER I
-24BF          ; mapped                 ; 006A          # 1.1  CIRCLED LATIN CAPITAL LETTER J
-24C0          ; mapped                 ; 006B          # 1.1  CIRCLED LATIN CAPITAL LETTER K
-24C1          ; mapped                 ; 006C          # 1.1  CIRCLED LATIN CAPITAL LETTER L
-24C2          ; mapped                 ; 006D          # 1.1  CIRCLED LATIN CAPITAL LETTER M
-24C3          ; mapped                 ; 006E          # 1.1  CIRCLED LATIN CAPITAL LETTER N
-24C4          ; mapped                 ; 006F          # 1.1  CIRCLED LATIN CAPITAL LETTER O
-24C5          ; mapped                 ; 0070          # 1.1  CIRCLED LATIN CAPITAL LETTER P
-24C6          ; mapped                 ; 0071          # 1.1  CIRCLED LATIN CAPITAL LETTER Q
-24C7          ; mapped                 ; 0072          # 1.1  CIRCLED LATIN CAPITAL LETTER R
-24C8          ; mapped                 ; 0073          # 1.1  CIRCLED LATIN CAPITAL LETTER S
-24C9          ; mapped                 ; 0074          # 1.1  CIRCLED LATIN CAPITAL LETTER T
-24CA          ; mapped                 ; 0075          # 1.1  CIRCLED LATIN CAPITAL LETTER U
-24CB          ; mapped                 ; 0076          # 1.1  CIRCLED LATIN CAPITAL LETTER V
-24CC          ; mapped                 ; 0077          # 1.1  CIRCLED LATIN CAPITAL LETTER W
-24CD          ; mapped                 ; 0078          # 1.1  CIRCLED LATIN CAPITAL LETTER X
-24CE          ; mapped                 ; 0079          # 1.1  CIRCLED LATIN CAPITAL LETTER Y
-24CF          ; mapped                 ; 007A          # 1.1  CIRCLED LATIN CAPITAL LETTER Z
-24D0          ; mapped                 ; 0061          # 1.1  CIRCLED LATIN SMALL LETTER A
-24D1          ; mapped                 ; 0062          # 1.1  CIRCLED LATIN SMALL LETTER B
-24D2          ; mapped                 ; 0063          # 1.1  CIRCLED LATIN SMALL LETTER C
-24D3          ; mapped                 ; 0064          # 1.1  CIRCLED LATIN SMALL LETTER D
-24D4          ; mapped                 ; 0065          # 1.1  CIRCLED LATIN SMALL LETTER E
-24D5          ; mapped                 ; 0066          # 1.1  CIRCLED LATIN SMALL LETTER F
-24D6          ; mapped                 ; 0067          # 1.1  CIRCLED LATIN SMALL LETTER G
-24D7          ; mapped                 ; 0068          # 1.1  CIRCLED LATIN SMALL LETTER H
-24D8          ; mapped                 ; 0069          # 1.1  CIRCLED LATIN SMALL LETTER I
-24D9          ; mapped                 ; 006A          # 1.1  CIRCLED LATIN SMALL LETTER J
-24DA          ; mapped                 ; 006B          # 1.1  CIRCLED LATIN SMALL LETTER K
-24DB          ; mapped                 ; 006C          # 1.1  CIRCLED LATIN SMALL LETTER L
-24DC          ; mapped                 ; 006D          # 1.1  CIRCLED LATIN SMALL LETTER M
-24DD          ; mapped                 ; 006E          # 1.1  CIRCLED LATIN SMALL LETTER N
-24DE          ; mapped                 ; 006F          # 1.1  CIRCLED LATIN SMALL LETTER O
-24DF          ; mapped                 ; 0070          # 1.1  CIRCLED LATIN SMALL LETTER P
-24E0          ; mapped                 ; 0071          # 1.1  CIRCLED LATIN SMALL LETTER Q
-24E1          ; mapped                 ; 0072          # 1.1  CIRCLED LATIN SMALL LETTER R
-24E2          ; mapped                 ; 0073          # 1.1  CIRCLED LATIN SMALL LETTER S
-24E3          ; mapped                 ; 0074          # 1.1  CIRCLED LATIN SMALL LETTER T
-24E4          ; mapped                 ; 0075          # 1.1  CIRCLED LATIN SMALL LETTER U
-24E5          ; mapped                 ; 0076          # 1.1  CIRCLED LATIN SMALL LETTER V
-24E6          ; mapped                 ; 0077          # 1.1  CIRCLED LATIN SMALL LETTER W
-24E7          ; mapped                 ; 0078          # 1.1  CIRCLED LATIN SMALL LETTER X
-24E8          ; mapped                 ; 0079          # 1.1  CIRCLED LATIN SMALL LETTER Y
-24E9          ; mapped                 ; 007A          # 1.1  CIRCLED LATIN SMALL LETTER Z
-24EA          ; mapped                 ; 0030          # 1.1  CIRCLED DIGIT ZERO
-24EB..24FE    ; valid                  ;      ; NV8    # 3.2  NEGATIVE CIRCLED NUMBER ELEVEN..DOUBLE CIRCLED NUMBER TEN
-24FF          ; valid                  ;      ; NV8    # 4.0  NEGATIVE CIRCLED DIGIT ZERO
-2500..2595    ; valid                  ;      ; NV8    # 1.1  BOX DRAWINGS LIGHT HORIZONTAL..RIGHT ONE EIGHTH BLOCK
-2596..259F    ; valid                  ;      ; NV8    # 3.2  QUADRANT LOWER LEFT..QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
-25A0..25EF    ; valid                  ;      ; NV8    # 1.1  BLACK SQUARE..LARGE CIRCLE
-25F0..25F7    ; valid                  ;      ; NV8    # 3.0  WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-25F8..25FF    ; valid                  ;      ; NV8    # 3.2  UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
-2600..2613    ; valid                  ;      ; NV8    # 1.1  BLACK SUN WITH RAYS..SALTIRE
-2614..2615    ; valid                  ;      ; NV8    # 4.0  UMBRELLA WITH RAIN DROPS..HOT BEVERAGE
-2616..2617    ; valid                  ;      ; NV8    # 3.2  WHITE SHOGI PIECE..BLACK SHOGI PIECE
-2618          ; valid                  ;      ; NV8    # 4.1  SHAMROCK
-2619          ; valid                  ;      ; NV8    # 3.0  REVERSED ROTATED FLORAL HEART BULLET
-261A..266F    ; valid                  ;      ; NV8    # 1.1  BLACK LEFT POINTING INDEX..MUSIC SHARP SIGN
-2670..2671    ; valid                  ;      ; NV8    # 3.0  WEST SYRIAC CROSS..EAST SYRIAC CROSS
-2672..267D    ; valid                  ;      ; NV8    # 3.2  UNIVERSAL RECYCLING SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL
-267E..267F    ; valid                  ;      ; NV8    # 4.1  PERMANENT PAPER SIGN..WHEELCHAIR SYMBOL
-2680..2689    ; valid                  ;      ; NV8    # 3.2  DIE FACE-1..BLACK CIRCLE WITH TWO WHITE DOTS
-268A..2691    ; valid                  ;      ; NV8    # 4.0  MONOGRAM FOR YANG..BLACK FLAG
-2692..269C    ; valid                  ;      ; NV8    # 4.1  HAMMER AND PICK..FLEUR-DE-LIS
-269D          ; valid                  ;      ; NV8    # 5.1  OUTLINED WHITE STAR
-269E..269F    ; valid                  ;      ; NV8    # 5.2  THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT
-26A0..26A1    ; valid                  ;      ; NV8    # 4.0  WARNING SIGN..HIGH VOLTAGE SIGN
-26A2..26B1    ; valid                  ;      ; NV8    # 4.1  DOUBLED FEMALE SIGN..FUNERAL URN
-26B2          ; valid                  ;      ; NV8    # 5.0  NEUTER
-26B3..26BC    ; valid                  ;      ; NV8    # 5.1  CERES..SESQUIQUADRATE
-26BD..26BF    ; valid                  ;      ; NV8    # 5.2  SOCCER BALL..SQUARED KEY
-26C0..26C3    ; valid                  ;      ; NV8    # 5.1  WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING
-26C4..26CD    ; valid                  ;      ; NV8    # 5.2  SNOWMAN WITHOUT SNOW..DISABLED CAR
-26CE          ; valid                  ;      ; NV8    # 6.0  OPHIUCHUS
-26CF..26E1    ; valid                  ;      ; NV8    # 5.2  PICK..RESTRICTED LEFT ENTRY-2
-26E2          ; valid                  ;      ; NV8    # 6.0  ASTRONOMICAL SYMBOL FOR URANUS
-26E3          ; valid                  ;      ; NV8    # 5.2  HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE
-26E4..26E7    ; valid                  ;      ; NV8    # 6.0  PENTAGRAM..INVERTED PENTAGRAM
-26E8..26FF    ; valid                  ;      ; NV8    # 5.2  BLACK CROSS ON SHIELD..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
-2700          ; valid                  ;      ; NV8    # 7.0  BLACK SAFETY SCISSORS
-2701..2704    ; valid                  ;      ; NV8    # 1.1  UPPER BLADE SCISSORS..WHITE SCISSORS
-2705          ; valid                  ;      ; NV8    # 6.0  WHITE HEAVY CHECK MARK
-2706..2709    ; valid                  ;      ; NV8    # 1.1  TELEPHONE LOCATION SIGN..ENVELOPE
-270A..270B    ; valid                  ;      ; NV8    # 6.0  RAISED FIST..RAISED HAND
-270C..2727    ; valid                  ;      ; NV8    # 1.1  VICTORY HAND..WHITE FOUR POINTED STAR
-2728          ; valid                  ;      ; NV8    # 6.0  SPARKLES
-2729..274B    ; valid                  ;      ; NV8    # 1.1  STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
-274C          ; valid                  ;      ; NV8    # 6.0  CROSS MARK
-274D          ; valid                  ;      ; NV8    # 1.1  SHADOWED WHITE CIRCLE
-274E          ; valid                  ;      ; NV8    # 6.0  NEGATIVE SQUARED CROSS MARK
-274F..2752    ; valid                  ;      ; NV8    # 1.1  LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
-2753..2755    ; valid                  ;      ; NV8    # 6.0  BLACK QUESTION MARK ORNAMENT..WHITE EXCLAMATION MARK ORNAMENT
-2756          ; valid                  ;      ; NV8    # 1.1  BLACK DIAMOND MINUS WHITE X
-2757          ; valid                  ;      ; NV8    # 5.2  HEAVY EXCLAMATION MARK SYMBOL
-2758..275E    ; valid                  ;      ; NV8    # 1.1  LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
-275F..2760    ; valid                  ;      ; NV8    # 6.0  HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT..HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
-2761..2767    ; valid                  ;      ; NV8    # 1.1  CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
-2768..2775    ; valid                  ;      ; NV8    # 3.2  MEDIUM LEFT PARENTHESIS ORNAMENT..MEDIUM RIGHT CURLY BRACKET ORNAMENT
-2776..2794    ; valid                  ;      ; NV8    # 1.1  DINGBAT NEGATIVE CIRCLED DIGIT ONE..HEAVY WIDE-HEADED RIGHTWARDS ARROW
-2795..2797    ; valid                  ;      ; NV8    # 6.0  HEAVY PLUS SIGN..HEAVY DIVISION SIGN
-2798..27AF    ; valid                  ;      ; NV8    # 1.1  HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
-27B0          ; valid                  ;      ; NV8    # 6.0  CURLY LOOP
-27B1..27BE    ; valid                  ;      ; NV8    # 1.1  NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
-27BF          ; valid                  ;      ; NV8    # 6.0  DOUBLE CURLY LOOP
-27C0..27C6    ; valid                  ;      ; NV8    # 4.1  THREE DIMENSIONAL ANGLE..RIGHT S-SHAPED BAG DELIMITER
-27C7..27CA    ; valid                  ;      ; NV8    # 5.0  OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
-27CB          ; valid                  ;      ; NV8    # 6.1  MATHEMATICAL RISING DIAGONAL
-27CC          ; valid                  ;      ; NV8    # 5.1  LONG DIVISION
-27CD          ; valid                  ;      ; NV8    # 6.1  MATHEMATICAL FALLING DIAGONAL
-27CE..27CF    ; valid                  ;      ; NV8    # 6.0  SQUARED LOGICAL AND..SQUARED LOGICAL OR
-27D0..27EB    ; valid                  ;      ; NV8    # 3.2  WHITE DIAMOND WITH CENTRED DOT..MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
-27EC..27EF    ; valid                  ;      ; NV8    # 5.1  MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET..MATHEMATICAL RIGHT FLATTENED PARENTHESIS
-27F0..27FF    ; valid                  ;      ; NV8    # 3.2  UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
-2800..28FF    ; valid                  ;      ; NV8    # 3.0  BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
-2900..2A0B    ; valid                  ;      ; NV8    # 3.2  RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..SUMMATION WITH INTEGRAL
-2A0C          ; mapped                 ; 222B 222B 222B 222B #3.2 QUADRUPLE INTEGRAL OPERATOR
-2A0D..2A73    ; valid                  ;      ; NV8    # 3.2  FINITE PART INTEGRAL..EQUALS SIGN ABOVE TILDE OPERATOR
-2A74          ; disallowed_STD3_mapped ; 003A 003A 003D #3.2  DOUBLE COLON EQUAL
-2A75          ; disallowed_STD3_mapped ; 003D 003D     # 3.2  TWO CONSECUTIVE EQUALS SIGNS
-2A76          ; disallowed_STD3_mapped ; 003D 003D 003D #3.2  THREE CONSECUTIVE EQUALS SIGNS
-2A77..2ADB    ; valid                  ;      ; NV8    # 3.2  EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW..TRANSVERSAL INTERSECTION
-2ADC          ; mapped                 ; 2ADD 0338     # 3.2  FORKING
-2ADD..2AFF    ; valid                  ;      ; NV8    # 3.2  NONFORKING..N-ARY WHITE VERTICAL BAR
-2B00..2B0D    ; valid                  ;      ; NV8    # 4.0  NORTH EAST WHITE ARROW..UP DOWN BLACK ARROW
-2B0E..2B13    ; valid                  ;      ; NV8    # 4.1  RIGHTWARDS ARROW WITH TIP DOWNWARDS..SQUARE WITH BOTTOM HALF BLACK
-2B14..2B1A    ; valid                  ;      ; NV8    # 5.0  SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK..DOTTED SQUARE
-2B1B..2B1F    ; valid                  ;      ; NV8    # 5.1  BLACK LARGE SQUARE..BLACK PENTAGON
-2B20..2B23    ; valid                  ;      ; NV8    # 5.0  WHITE PENTAGON..HORIZONTAL BLACK HEXAGON
-2B24..2B4C    ; valid                  ;      ; NV8    # 5.1  BLACK LARGE CIRCLE..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
-2B4D..2B4F    ; valid                  ;      ; NV8    # 7.0  DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..SHORT BACKSLANTED SOUTH ARROW
-2B50..2B54    ; valid                  ;      ; NV8    # 5.1  WHITE MEDIUM STAR..WHITE RIGHT-POINTING PENTAGON
-2B55..2B59    ; valid                  ;      ; NV8    # 5.2  HEAVY LARGE CIRCLE..HEAVY CIRCLED SALTIRE
-2B5A..2B73    ; valid                  ;      ; NV8    # 7.0  SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
-2B74..2B75    ; disallowed                             # NA   <reserved-2B74>..<reserved-2B75>
-2B76..2B95    ; valid                  ;      ; NV8    # 7.0  NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
-2B96          ; disallowed                             # NA   <reserved-2B96>
-2B97          ; valid                  ;      ; NV8    # 13.0 SYMBOL FOR TYPE A ELECTRONICS
-2B98..2BB9    ; valid                  ;      ; NV8    # 7.0  THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX
-2BBA..2BBC    ; valid                  ;      ; NV8    # 11.0 OVERLAPPING WHITE SQUARES..OVERLAPPING BLACK SQUARES
-2BBD..2BC8    ; valid                  ;      ; NV8    # 7.0  BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
-2BC9          ; valid                  ;      ; NV8    # 12.0 NEPTUNE FORM TWO
-2BCA..2BD1    ; valid                  ;      ; NV8    # 7.0  TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN
-2BD2          ; valid                  ;      ; NV8    # 10.0 GROUP MARK
-2BD3..2BEB    ; valid                  ;      ; NV8    # 11.0 PLUTO FORM TWO..STAR WITH RIGHT HALF BLACK
-2BEC..2BEF    ; valid                  ;      ; NV8    # 8.0  LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
-2BF0..2BFE    ; valid                  ;      ; NV8    # 11.0 ERIS FORM ONE..REVERSED RIGHT ANGLE
-2BFF          ; valid                  ;      ; NV8    # 12.0 HELLSCHREIBER PAUSE SYMBOL
-2C00          ; mapped                 ; 2C30          # 4.1  GLAGOLITIC CAPITAL LETTER AZU
-2C01          ; mapped                 ; 2C31          # 4.1  GLAGOLITIC CAPITAL LETTER BUKY
-2C02          ; mapped                 ; 2C32          # 4.1  GLAGOLITIC CAPITAL LETTER VEDE
-2C03          ; mapped                 ; 2C33          # 4.1  GLAGOLITIC CAPITAL LETTER GLAGOLI
-2C04          ; mapped                 ; 2C34          # 4.1  GLAGOLITIC CAPITAL LETTER DOBRO
-2C05          ; mapped                 ; 2C35          # 4.1  GLAGOLITIC CAPITAL LETTER YESTU
-2C06          ; mapped                 ; 2C36          # 4.1  GLAGOLITIC CAPITAL LETTER ZHIVETE
-2C07          ; mapped                 ; 2C37          # 4.1  GLAGOLITIC CAPITAL LETTER DZELO
-2C08          ; mapped                 ; 2C38          # 4.1  GLAGOLITIC CAPITAL LETTER ZEMLJA
-2C09          ; mapped                 ; 2C39          # 4.1  GLAGOLITIC CAPITAL LETTER IZHE
-2C0A          ; mapped                 ; 2C3A          # 4.1  GLAGOLITIC CAPITAL LETTER INITIAL IZHE
-2C0B          ; mapped                 ; 2C3B          # 4.1  GLAGOLITIC CAPITAL LETTER I
-2C0C          ; mapped                 ; 2C3C          # 4.1  GLAGOLITIC CAPITAL LETTER DJERVI
-2C0D          ; mapped                 ; 2C3D          # 4.1  GLAGOLITIC CAPITAL LETTER KAKO
-2C0E          ; mapped                 ; 2C3E          # 4.1  GLAGOLITIC CAPITAL LETTER LJUDIJE
-2C0F          ; mapped                 ; 2C3F          # 4.1  GLAGOLITIC CAPITAL LETTER MYSLITE
-2C10          ; mapped                 ; 2C40          # 4.1  GLAGOLITIC CAPITAL LETTER NASHI
-2C11          ; mapped                 ; 2C41          # 4.1  GLAGOLITIC CAPITAL LETTER ONU
-2C12          ; mapped                 ; 2C42          # 4.1  GLAGOLITIC CAPITAL LETTER POKOJI
-2C13          ; mapped                 ; 2C43          # 4.1  GLAGOLITIC CAPITAL LETTER RITSI
-2C14          ; mapped                 ; 2C44          # 4.1  GLAGOLITIC CAPITAL LETTER SLOVO
-2C15          ; mapped                 ; 2C45          # 4.1  GLAGOLITIC CAPITAL LETTER TVRIDO
-2C16          ; mapped                 ; 2C46          # 4.1  GLAGOLITIC CAPITAL LETTER UKU
-2C17          ; mapped                 ; 2C47          # 4.1  GLAGOLITIC CAPITAL LETTER FRITU
-2C18          ; mapped                 ; 2C48          # 4.1  GLAGOLITIC CAPITAL LETTER HERU
-2C19          ; mapped                 ; 2C49          # 4.1  GLAGOLITIC CAPITAL LETTER OTU
-2C1A          ; mapped                 ; 2C4A          # 4.1  GLAGOLITIC CAPITAL LETTER PE
-2C1B          ; mapped                 ; 2C4B          # 4.1  GLAGOLITIC CAPITAL LETTER SHTA
-2C1C          ; mapped                 ; 2C4C          # 4.1  GLAGOLITIC CAPITAL LETTER TSI
-2C1D          ; mapped                 ; 2C4D          # 4.1  GLAGOLITIC CAPITAL LETTER CHRIVI
-2C1E          ; mapped                 ; 2C4E          # 4.1  GLAGOLITIC CAPITAL LETTER SHA
-2C1F          ; mapped                 ; 2C4F          # 4.1  GLAGOLITIC CAPITAL LETTER YERU
-2C20          ; mapped                 ; 2C50          # 4.1  GLAGOLITIC CAPITAL LETTER YERI
-2C21          ; mapped                 ; 2C51          # 4.1  GLAGOLITIC CAPITAL LETTER YATI
-2C22          ; mapped                 ; 2C52          # 4.1  GLAGOLITIC CAPITAL LETTER SPIDERY HA
-2C23          ; mapped                 ; 2C53          # 4.1  GLAGOLITIC CAPITAL LETTER YU
-2C24          ; mapped                 ; 2C54          # 4.1  GLAGOLITIC CAPITAL LETTER SMALL YUS
-2C25          ; mapped                 ; 2C55          # 4.1  GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
-2C26          ; mapped                 ; 2C56          # 4.1  GLAGOLITIC CAPITAL LETTER YO
-2C27          ; mapped                 ; 2C57          # 4.1  GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
-2C28          ; mapped                 ; 2C58          # 4.1  GLAGOLITIC CAPITAL LETTER BIG YUS
-2C29          ; mapped                 ; 2C59          # 4.1  GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
-2C2A          ; mapped                 ; 2C5A          # 4.1  GLAGOLITIC CAPITAL LETTER FITA
-2C2B          ; mapped                 ; 2C5B          # 4.1  GLAGOLITIC CAPITAL LETTER IZHITSA
-2C2C          ; mapped                 ; 2C5C          # 4.1  GLAGOLITIC CAPITAL LETTER SHTAPIC
-2C2D          ; mapped                 ; 2C5D          # 4.1  GLAGOLITIC CAPITAL LETTER TROKUTASTI A
-2C2E          ; mapped                 ; 2C5E          # 4.1  GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
-2C2F          ; disallowed                             # NA   <reserved-2C2F>
-2C30..2C5E    ; valid                                  # 4.1  GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
-2C5F          ; disallowed                             # NA   <reserved-2C5F>
-2C60          ; mapped                 ; 2C61          # 5.0  LATIN CAPITAL LETTER L WITH DOUBLE BAR
-2C61          ; valid                                  # 5.0  LATIN SMALL LETTER L WITH DOUBLE BAR
-2C62          ; mapped                 ; 026B          # 5.0  LATIN CAPITAL LETTER L WITH MIDDLE TILDE
-2C63          ; mapped                 ; 1D7D          # 5.0  LATIN CAPITAL LETTER P WITH STROKE
-2C64          ; mapped                 ; 027D          # 5.0  LATIN CAPITAL LETTER R WITH TAIL
-2C65..2C66    ; valid                                  # 5.0  LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE
-2C67          ; mapped                 ; 2C68          # 5.0  LATIN CAPITAL LETTER H WITH DESCENDER
-2C68          ; valid                                  # 5.0  LATIN SMALL LETTER H WITH DESCENDER
-2C69          ; mapped                 ; 2C6A          # 5.0  LATIN CAPITAL LETTER K WITH DESCENDER
-2C6A          ; valid                                  # 5.0  LATIN SMALL LETTER K WITH DESCENDER
-2C6B          ; mapped                 ; 2C6C          # 5.0  LATIN CAPITAL LETTER Z WITH DESCENDER
-2C6C          ; valid                                  # 5.0  LATIN SMALL LETTER Z WITH DESCENDER
-2C6D          ; mapped                 ; 0251          # 5.1  LATIN CAPITAL LETTER ALPHA
-2C6E          ; mapped                 ; 0271          # 5.1  LATIN CAPITAL LETTER M WITH HOOK
-2C6F          ; mapped                 ; 0250          # 5.1  LATIN CAPITAL LETTER TURNED A
-2C70          ; mapped                 ; 0252          # 5.2  LATIN CAPITAL LETTER TURNED ALPHA
-2C71          ; valid                                  # 5.1  LATIN SMALL LETTER V WITH RIGHT HOOK
-2C72          ; mapped                 ; 2C73          # 5.1  LATIN CAPITAL LETTER W WITH HOOK
-2C73          ; valid                                  # 5.1  LATIN SMALL LETTER W WITH HOOK
-2C74          ; valid                                  # 5.0  LATIN SMALL LETTER V WITH CURL
-2C75          ; mapped                 ; 2C76          # 5.0  LATIN CAPITAL LETTER HALF H
-2C76..2C77    ; valid                                  # 5.0  LATIN SMALL LETTER HALF H..LATIN SMALL LETTER TAILLESS PHI
-2C78..2C7B    ; valid                                  # 5.1  LATIN SMALL LETTER E WITH NOTCH..LATIN LETTER SMALL CAPITAL TURNED E
-2C7C          ; mapped                 ; 006A          # 5.1  LATIN SUBSCRIPT SMALL LETTER J
-2C7D          ; mapped                 ; 0076          # 5.1  MODIFIER LETTER CAPITAL V
-2C7E          ; mapped                 ; 023F          # 5.2  LATIN CAPITAL LETTER S WITH SWASH TAIL
-2C7F          ; mapped                 ; 0240          # 5.2  LATIN CAPITAL LETTER Z WITH SWASH TAIL
-2C80          ; mapped                 ; 2C81          # 4.1  COPTIC CAPITAL LETTER ALFA
-2C81          ; valid                                  # 4.1  COPTIC SMALL LETTER ALFA
-2C82          ; mapped                 ; 2C83          # 4.1  COPTIC CAPITAL LETTER VIDA
-2C83          ; valid                                  # 4.1  COPTIC SMALL LETTER VIDA
-2C84          ; mapped                 ; 2C85          # 4.1  COPTIC CAPITAL LETTER GAMMA
-2C85          ; valid                                  # 4.1  COPTIC SMALL LETTER GAMMA
-2C86          ; mapped                 ; 2C87          # 4.1  COPTIC CAPITAL LETTER DALDA
-2C87          ; valid                                  # 4.1  COPTIC SMALL LETTER DALDA
-2C88          ; mapped                 ; 2C89          # 4.1  COPTIC CAPITAL LETTER EIE
-2C89          ; valid                                  # 4.1  COPTIC SMALL LETTER EIE
-2C8A          ; mapped                 ; 2C8B          # 4.1  COPTIC CAPITAL LETTER SOU
-2C8B          ; valid                                  # 4.1  COPTIC SMALL LETTER SOU
-2C8C          ; mapped                 ; 2C8D          # 4.1  COPTIC CAPITAL LETTER ZATA
-2C8D          ; valid                                  # 4.1  COPTIC SMALL LETTER ZATA
-2C8E          ; mapped                 ; 2C8F          # 4.1  COPTIC CAPITAL LETTER HATE
-2C8F          ; valid                                  # 4.1  COPTIC SMALL LETTER HATE
-2C90          ; mapped                 ; 2C91          # 4.1  COPTIC CAPITAL LETTER THETHE
-2C91          ; valid                                  # 4.1  COPTIC SMALL LETTER THETHE
-2C92          ; mapped                 ; 2C93          # 4.1  COPTIC CAPITAL LETTER IAUDA
-2C93          ; valid                                  # 4.1  COPTIC SMALL LETTER IAUDA
-2C94          ; mapped                 ; 2C95          # 4.1  COPTIC CAPITAL LETTER KAPA
-2C95          ; valid                                  # 4.1  COPTIC SMALL LETTER KAPA
-2C96          ; mapped                 ; 2C97          # 4.1  COPTIC CAPITAL LETTER LAULA
-2C97          ; valid                                  # 4.1  COPTIC SMALL LETTER LAULA
-2C98          ; mapped                 ; 2C99          # 4.1  COPTIC CAPITAL LETTER MI
-2C99          ; valid                                  # 4.1  COPTIC SMALL LETTER MI
-2C9A          ; mapped                 ; 2C9B          # 4.1  COPTIC CAPITAL LETTER NI
-2C9B          ; valid                                  # 4.1  COPTIC SMALL LETTER NI
-2C9C          ; mapped                 ; 2C9D          # 4.1  COPTIC CAPITAL LETTER KSI
-2C9D          ; valid                                  # 4.1  COPTIC SMALL LETTER KSI
-2C9E          ; mapped                 ; 2C9F          # 4.1  COPTIC CAPITAL LETTER O
-2C9F          ; valid                                  # 4.1  COPTIC SMALL LETTER O
-2CA0          ; mapped                 ; 2CA1          # 4.1  COPTIC CAPITAL LETTER PI
-2CA1          ; valid                                  # 4.1  COPTIC SMALL LETTER PI
-2CA2          ; mapped                 ; 2CA3          # 4.1  COPTIC CAPITAL LETTER RO
-2CA3          ; valid                                  # 4.1  COPTIC SMALL LETTER RO
-2CA4          ; mapped                 ; 2CA5          # 4.1  COPTIC CAPITAL LETTER SIMA
-2CA5          ; valid                                  # 4.1  COPTIC SMALL LETTER SIMA
-2CA6          ; mapped                 ; 2CA7          # 4.1  COPTIC CAPITAL LETTER TAU
-2CA7          ; valid                                  # 4.1  COPTIC SMALL LETTER TAU
-2CA8          ; mapped                 ; 2CA9          # 4.1  COPTIC CAPITAL LETTER UA
-2CA9          ; valid                                  # 4.1  COPTIC SMALL LETTER UA
-2CAA          ; mapped                 ; 2CAB          # 4.1  COPTIC CAPITAL LETTER FI
-2CAB          ; valid                                  # 4.1  COPTIC SMALL LETTER FI
-2CAC          ; mapped                 ; 2CAD          # 4.1  COPTIC CAPITAL LETTER KHI
-2CAD          ; valid                                  # 4.1  COPTIC SMALL LETTER KHI
-2CAE          ; mapped                 ; 2CAF          # 4.1  COPTIC CAPITAL LETTER PSI
-2CAF          ; valid                                  # 4.1  COPTIC SMALL LETTER PSI
-2CB0          ; mapped                 ; 2CB1          # 4.1  COPTIC CAPITAL LETTER OOU
-2CB1          ; valid                                  # 4.1  COPTIC SMALL LETTER OOU
-2CB2          ; mapped                 ; 2CB3          # 4.1  COPTIC CAPITAL LETTER DIALECT-P ALEF
-2CB3          ; valid                                  # 4.1  COPTIC SMALL LETTER DIALECT-P ALEF
-2CB4          ; mapped                 ; 2CB5          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC AIN
-2CB5          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC AIN
-2CB6          ; mapped                 ; 2CB7          # 4.1  COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
-2CB7          ; valid                                  # 4.1  COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
-2CB8          ; mapped                 ; 2CB9          # 4.1  COPTIC CAPITAL LETTER DIALECT-P KAPA
-2CB9          ; valid                                  # 4.1  COPTIC SMALL LETTER DIALECT-P KAPA
-2CBA          ; mapped                 ; 2CBB          # 4.1  COPTIC CAPITAL LETTER DIALECT-P NI
-2CBB          ; valid                                  # 4.1  COPTIC SMALL LETTER DIALECT-P NI
-2CBC          ; mapped                 ; 2CBD          # 4.1  COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
-2CBD          ; valid                                  # 4.1  COPTIC SMALL LETTER CRYPTOGRAMMIC NI
-2CBE          ; mapped                 ; 2CBF          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC OOU
-2CBF          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC OOU
-2CC0          ; mapped                 ; 2CC1          # 4.1  COPTIC CAPITAL LETTER SAMPI
-2CC1          ; valid                                  # 4.1  COPTIC SMALL LETTER SAMPI
-2CC2          ; mapped                 ; 2CC3          # 4.1  COPTIC CAPITAL LETTER CROSSED SHEI
-2CC3          ; valid                                  # 4.1  COPTIC SMALL LETTER CROSSED SHEI
-2CC4          ; mapped                 ; 2CC5          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC SHEI
-2CC5          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC SHEI
-2CC6          ; mapped                 ; 2CC7          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC ESH
-2CC7          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC ESH
-2CC8          ; mapped                 ; 2CC9          # 4.1  COPTIC CAPITAL LETTER AKHMIMIC KHEI
-2CC9          ; valid                                  # 4.1  COPTIC SMALL LETTER AKHMIMIC KHEI
-2CCA          ; mapped                 ; 2CCB          # 4.1  COPTIC CAPITAL LETTER DIALECT-P HORI
-2CCB          ; valid                                  # 4.1  COPTIC SMALL LETTER DIALECT-P HORI
-2CCC          ; mapped                 ; 2CCD          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC HORI
-2CCD          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC HORI
-2CCE          ; mapped                 ; 2CCF          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC HA
-2CCF          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC HA
-2CD0          ; mapped                 ; 2CD1          # 4.1  COPTIC CAPITAL LETTER L-SHAPED HA
-2CD1          ; valid                                  # 4.1  COPTIC SMALL LETTER L-SHAPED HA
-2CD2          ; mapped                 ; 2CD3          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC HEI
-2CD3          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC HEI
-2CD4          ; mapped                 ; 2CD5          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC HAT
-2CD5          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC HAT
-2CD6          ; mapped                 ; 2CD7          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC GANGIA
-2CD7          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC GANGIA
-2CD8          ; mapped                 ; 2CD9          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC DJA
-2CD9          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC DJA
-2CDA          ; mapped                 ; 2CDB          # 4.1  COPTIC CAPITAL LETTER OLD COPTIC SHIMA
-2CDB          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD COPTIC SHIMA
-2CDC          ; mapped                 ; 2CDD          # 4.1  COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
-2CDD          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD NUBIAN SHIMA
-2CDE          ; mapped                 ; 2CDF          # 4.1  COPTIC CAPITAL LETTER OLD NUBIAN NGI
-2CDF          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD NUBIAN NGI
-2CE0          ; mapped                 ; 2CE1          # 4.1  COPTIC CAPITAL LETTER OLD NUBIAN NYI
-2CE1          ; valid                                  # 4.1  COPTIC SMALL LETTER OLD NUBIAN NYI
-2CE2          ; mapped                 ; 2CE3          # 4.1  COPTIC CAPITAL LETTER OLD NUBIAN WAU
-2CE3..2CE4    ; valid                                  # 4.1  COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI
-2CE5..2CEA    ; valid                  ;      ; NV8    # 4.1  COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA
-2CEB          ; mapped                 ; 2CEC          # 5.2  COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
-2CEC          ; valid                                  # 5.2  COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI
-2CED          ; mapped                 ; 2CEE          # 5.2  COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
-2CEE..2CF1    ; valid                                  # 5.2  COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA..COPTIC COMBINING SPIRITUS LENIS
-2CF2          ; mapped                 ; 2CF3          # 6.1  COPTIC CAPITAL LETTER BOHAIRIC KHEI
-2CF3          ; valid                                  # 6.1  COPTIC SMALL LETTER BOHAIRIC KHEI
-2CF4..2CF8    ; disallowed                             # NA   <reserved-2CF4>..<reserved-2CF8>
-2CF9..2CFF    ; valid                  ;      ; NV8    # 4.1  COPTIC OLD NUBIAN FULL STOP..COPTIC MORPHOLOGICAL DIVIDER
-2D00..2D25    ; valid                                  # 4.1  GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
-2D26          ; disallowed                             # NA   <reserved-2D26>
-2D27          ; valid                                  # 6.1  GEORGIAN SMALL LETTER YN
-2D28..2D2C    ; disallowed                             # NA   <reserved-2D28>..<reserved-2D2C>
-2D2D          ; valid                                  # 6.1  GEORGIAN SMALL LETTER AEN
-2D2E..2D2F    ; disallowed                             # NA   <reserved-2D2E>..<reserved-2D2F>
-2D30..2D65    ; valid                                  # 4.1  TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
-2D66..2D67    ; valid                                  # 6.1  TIFINAGH LETTER YE..TIFINAGH LETTER YO
-2D68..2D6E    ; disallowed                             # NA   <reserved-2D68>..<reserved-2D6E>
-2D6F          ; mapped                 ; 2D61          # 4.1  TIFINAGH MODIFIER LETTER LABIALIZATION MARK
-2D70          ; valid                  ;      ; NV8    # 6.0  TIFINAGH SEPARATOR MARK
-2D71..2D7E    ; disallowed                             # NA   <reserved-2D71>..<reserved-2D7E>
-2D7F          ; valid                                  # 6.0  TIFINAGH CONSONANT JOINER
-2D80..2D96    ; valid                                  # 4.1  ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
-2D97..2D9F    ; disallowed                             # NA   <reserved-2D97>..<reserved-2D9F>
-2DA0..2DA6    ; valid                                  # 4.1  ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
-2DA7          ; disallowed                             # NA   <reserved-2DA7>
-2DA8..2DAE    ; valid                                  # 4.1  ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
-2DAF          ; disallowed                             # NA   <reserved-2DAF>
-2DB0..2DB6    ; valid                                  # 4.1  ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
-2DB7          ; disallowed                             # NA   <reserved-2DB7>
-2DB8..2DBE    ; valid                                  # 4.1  ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
-2DBF          ; disallowed                             # NA   <reserved-2DBF>
-2DC0..2DC6    ; valid                                  # 4.1  ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
-2DC7          ; disallowed                             # NA   <reserved-2DC7>
-2DC8..2DCE    ; valid                                  # 4.1  ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
-2DCF          ; disallowed                             # NA   <reserved-2DCF>
-2DD0..2DD6    ; valid                                  # 4.1  ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
-2DD7          ; disallowed                             # NA   <reserved-2DD7>
-2DD8..2DDE    ; valid                                  # 4.1  ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
-2DDF          ; disallowed                             # NA   <reserved-2DDF>
-2DE0..2DFF    ; valid                                  # 5.1  COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
-2E00..2E17    ; valid                  ;      ; NV8    # 4.1  RIGHT ANGLE SUBSTITUTION MARKER..DOUBLE OBLIQUE HYPHEN
-2E18..2E1B    ; valid                  ;      ; NV8    # 5.1  INVERTED INTERROBANG..TILDE WITH RING ABOVE
-2E1C..2E1D    ; valid                  ;      ; NV8    # 4.1  LEFT LOW PARAPHRASE BRACKET..RIGHT LOW PARAPHRASE BRACKET
-2E1E..2E2E    ; valid                  ;      ; NV8    # 5.1  TILDE WITH DOT ABOVE..REVERSED QUESTION MARK
-2E2F          ; valid                                  # 5.1  VERTICAL TILDE
-2E30          ; valid                  ;      ; NV8    # 5.1  RING POINT
-2E31          ; valid                  ;      ; NV8    # 5.2  WORD SEPARATOR MIDDLE DOT
-2E32..2E3B    ; valid                  ;      ; NV8    # 6.1  TURNED COMMA..THREE-EM DASH
-2E3C..2E42    ; valid                  ;      ; NV8    # 7.0  STENOGRAPHIC FULL STOP..DOUBLE LOW-REVERSED-9 QUOTATION MARK
-2E43..2E44    ; valid                  ;      ; NV8    # 9.0  DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
-2E45..2E49    ; valid                  ;      ; NV8    # 10.0 INVERTED LOW KAVYKA..DOUBLE STACKED COMMA
-2E4A..2E4E    ; valid                  ;      ; NV8    # 11.0 DOTTED SOLIDUS..PUNCTUS ELEVATUS MARK
-2E4F          ; valid                  ;      ; NV8    # 12.0 CORNISH VERSE DIVIDER
-2E50..2E52    ; valid                  ;      ; NV8    # 13.0 CROSS PATTY WITH RIGHT CROSSBAR..TIRONIAN SIGN CAPITAL ET
-2E53..2E7F    ; disallowed                             # NA   <reserved-2E53>..<reserved-2E7F>
-2E80..2E99    ; valid                  ;      ; NV8    # 3.0  CJK RADICAL REPEAT..CJK RADICAL RAP
-2E9A          ; disallowed                             # NA   <reserved-2E9A>
-2E9B..2E9E    ; valid                  ;      ; NV8    # 3.0  CJK RADICAL CHOKE..CJK RADICAL DEATH
-2E9F          ; mapped                 ; 6BCD          # 3.0  CJK RADICAL MOTHER
-2EA0..2EF2    ; valid                  ;      ; NV8    # 3.0  CJK RADICAL CIVILIAN..CJK RADICAL J-SIMPLIFIED TURTLE
-2EF3          ; mapped                 ; 9F9F          # 3.0  CJK RADICAL C-SIMPLIFIED TURTLE
-2EF4..2EFF    ; disallowed                             # NA   <reserved-2EF4>..<reserved-2EFF>
-2F00          ; mapped                 ; 4E00          # 3.0  KANGXI RADICAL ONE
-2F01          ; mapped                 ; 4E28          # 3.0  KANGXI RADICAL LINE
-2F02          ; mapped                 ; 4E36          # 3.0  KANGXI RADICAL DOT
-2F03          ; mapped                 ; 4E3F          # 3.0  KANGXI RADICAL SLASH
-2F04          ; mapped                 ; 4E59          # 3.0  KANGXI RADICAL SECOND
-2F05          ; mapped                 ; 4E85          # 3.0  KANGXI RADICAL HOOK
-2F06          ; mapped                 ; 4E8C          # 3.0  KANGXI RADICAL TWO
-2F07          ; mapped                 ; 4EA0          # 3.0  KANGXI RADICAL LID
-2F08          ; mapped                 ; 4EBA          # 3.0  KANGXI RADICAL MAN
-2F09          ; mapped                 ; 513F          # 3.0  KANGXI RADICAL LEGS
-2F0A          ; mapped                 ; 5165          # 3.0  KANGXI RADICAL ENTER
-2F0B          ; mapped                 ; 516B          # 3.0  KANGXI RADICAL EIGHT
-2F0C          ; mapped                 ; 5182          # 3.0  KANGXI RADICAL DOWN BOX
-2F0D          ; mapped                 ; 5196          # 3.0  KANGXI RADICAL COVER
-2F0E          ; mapped                 ; 51AB          # 3.0  KANGXI RADICAL ICE
-2F0F          ; mapped                 ; 51E0          # 3.0  KANGXI RADICAL TABLE
-2F10          ; mapped                 ; 51F5          # 3.0  KANGXI RADICAL OPEN BOX
-2F11          ; mapped                 ; 5200          # 3.0  KANGXI RADICAL KNIFE
-2F12          ; mapped                 ; 529B          # 3.0  KANGXI RADICAL POWER
-2F13          ; mapped                 ; 52F9          # 3.0  KANGXI RADICAL WRAP
-2F14          ; mapped                 ; 5315          # 3.0  KANGXI RADICAL SPOON
-2F15          ; mapped                 ; 531A          # 3.0  KANGXI RADICAL RIGHT OPEN BOX
-2F16          ; mapped                 ; 5338          # 3.0  KANGXI RADICAL HIDING ENCLOSURE
-2F17          ; mapped                 ; 5341          # 3.0  KANGXI RADICAL TEN
-2F18          ; mapped                 ; 535C          # 3.0  KANGXI RADICAL DIVINATION
-2F19          ; mapped                 ; 5369          # 3.0  KANGXI RADICAL SEAL
-2F1A          ; mapped                 ; 5382          # 3.0  KANGXI RADICAL CLIFF
-2F1B          ; mapped                 ; 53B6          # 3.0  KANGXI RADICAL PRIVATE
-2F1C          ; mapped                 ; 53C8          # 3.0  KANGXI RADICAL AGAIN
-2F1D          ; mapped                 ; 53E3          # 3.0  KANGXI RADICAL MOUTH
-2F1E          ; mapped                 ; 56D7          # 3.0  KANGXI RADICAL ENCLOSURE
-2F1F          ; mapped                 ; 571F          # 3.0  KANGXI RADICAL EARTH
-2F20          ; mapped                 ; 58EB          # 3.0  KANGXI RADICAL SCHOLAR
-2F21          ; mapped                 ; 5902          # 3.0  KANGXI RADICAL GO
-2F22          ; mapped                 ; 590A          # 3.0  KANGXI RADICAL GO SLOWLY
-2F23          ; mapped                 ; 5915          # 3.0  KANGXI RADICAL EVENING
-2F24          ; mapped                 ; 5927          # 3.0  KANGXI RADICAL BIG
-2F25          ; mapped                 ; 5973          # 3.0  KANGXI RADICAL WOMAN
-2F26          ; mapped                 ; 5B50          # 3.0  KANGXI RADICAL CHILD
-2F27          ; mapped                 ; 5B80          # 3.0  KANGXI RADICAL ROOF
-2F28          ; mapped                 ; 5BF8          # 3.0  KANGXI RADICAL INCH
-2F29          ; mapped                 ; 5C0F          # 3.0  KANGXI RADICAL SMALL
-2F2A          ; mapped                 ; 5C22          # 3.0  KANGXI RADICAL LAME
-2F2B          ; mapped                 ; 5C38          # 3.0  KANGXI RADICAL CORPSE
-2F2C          ; mapped                 ; 5C6E          # 3.0  KANGXI RADICAL SPROUT
-2F2D          ; mapped                 ; 5C71          # 3.0  KANGXI RADICAL MOUNTAIN
-2F2E          ; mapped                 ; 5DDB          # 3.0  KANGXI RADICAL RIVER
-2F2F          ; mapped                 ; 5DE5          # 3.0  KANGXI RADICAL WORK
-2F30          ; mapped                 ; 5DF1          # 3.0  KANGXI RADICAL ONESELF
-2F31          ; mapped                 ; 5DFE          # 3.0  KANGXI RADICAL TURBAN
-2F32          ; mapped                 ; 5E72          # 3.0  KANGXI RADICAL DRY
-2F33          ; mapped                 ; 5E7A          # 3.0  KANGXI RADICAL SHORT THREAD
-2F34          ; mapped                 ; 5E7F          # 3.0  KANGXI RADICAL DOTTED CLIFF
-2F35          ; mapped                 ; 5EF4          # 3.0  KANGXI RADICAL LONG STRIDE
-2F36          ; mapped                 ; 5EFE          # 3.0  KANGXI RADICAL TWO HANDS
-2F37          ; mapped                 ; 5F0B          # 3.0  KANGXI RADICAL SHOOT
-2F38          ; mapped                 ; 5F13          # 3.0  KANGXI RADICAL BOW
-2F39          ; mapped                 ; 5F50          # 3.0  KANGXI RADICAL SNOUT
-2F3A          ; mapped                 ; 5F61          # 3.0  KANGXI RADICAL BRISTLE
-2F3B          ; mapped                 ; 5F73          # 3.0  KANGXI RADICAL STEP
-2F3C          ; mapped                 ; 5FC3          # 3.0  KANGXI RADICAL HEART
-2F3D          ; mapped                 ; 6208          # 3.0  KANGXI RADICAL HALBERD
-2F3E          ; mapped                 ; 6236          # 3.0  KANGXI RADICAL DOOR
-2F3F          ; mapped                 ; 624B          # 3.0  KANGXI RADICAL HAND
-2F40          ; mapped                 ; 652F          # 3.0  KANGXI RADICAL BRANCH
-2F41          ; mapped                 ; 6534          # 3.0  KANGXI RADICAL RAP
-2F42          ; mapped                 ; 6587          # 3.0  KANGXI RADICAL SCRIPT
-2F43          ; mapped                 ; 6597          # 3.0  KANGXI RADICAL DIPPER
-2F44          ; mapped                 ; 65A4          # 3.0  KANGXI RADICAL AXE
-2F45          ; mapped                 ; 65B9          # 3.0  KANGXI RADICAL SQUARE
-2F46          ; mapped                 ; 65E0          # 3.0  KANGXI RADICAL NOT
-2F47          ; mapped                 ; 65E5          # 3.0  KANGXI RADICAL SUN
-2F48          ; mapped                 ; 66F0          # 3.0  KANGXI RADICAL SAY
-2F49          ; mapped                 ; 6708          # 3.0  KANGXI RADICAL MOON
-2F4A          ; mapped                 ; 6728          # 3.0  KANGXI RADICAL TREE
-2F4B          ; mapped                 ; 6B20          # 3.0  KANGXI RADICAL LACK
-2F4C          ; mapped                 ; 6B62          # 3.0  KANGXI RADICAL STOP
-2F4D          ; mapped                 ; 6B79          # 3.0  KANGXI RADICAL DEATH
-2F4E          ; mapped                 ; 6BB3          # 3.0  KANGXI RADICAL WEAPON
-2F4F          ; mapped                 ; 6BCB          # 3.0  KANGXI RADICAL DO NOT
-2F50          ; mapped                 ; 6BD4          # 3.0  KANGXI RADICAL COMPARE
-2F51          ; mapped                 ; 6BDB          # 3.0  KANGXI RADICAL FUR
-2F52          ; mapped                 ; 6C0F          # 3.0  KANGXI RADICAL CLAN
-2F53          ; mapped                 ; 6C14          # 3.0  KANGXI RADICAL STEAM
-2F54          ; mapped                 ; 6C34          # 3.0  KANGXI RADICAL WATER
-2F55          ; mapped                 ; 706B          # 3.0  KANGXI RADICAL FIRE
-2F56          ; mapped                 ; 722A          # 3.0  KANGXI RADICAL CLAW
-2F57          ; mapped                 ; 7236          # 3.0  KANGXI RADICAL FATHER
-2F58          ; mapped                 ; 723B          # 3.0  KANGXI RADICAL DOUBLE X
-2F59          ; mapped                 ; 723F          # 3.0  KANGXI RADICAL HALF TREE TRUNK
-2F5A          ; mapped                 ; 7247          # 3.0  KANGXI RADICAL SLICE
-2F5B          ; mapped                 ; 7259          # 3.0  KANGXI RADICAL FANG
-2F5C          ; mapped                 ; 725B          # 3.0  KANGXI RADICAL COW
-2F5D          ; mapped                 ; 72AC          # 3.0  KANGXI RADICAL DOG
-2F5E          ; mapped                 ; 7384          # 3.0  KANGXI RADICAL PROFOUND
-2F5F          ; mapped                 ; 7389          # 3.0  KANGXI RADICAL JADE
-2F60          ; mapped                 ; 74DC          # 3.0  KANGXI RADICAL MELON
-2F61          ; mapped                 ; 74E6          # 3.0  KANGXI RADICAL TILE
-2F62          ; mapped                 ; 7518          # 3.0  KANGXI RADICAL SWEET
-2F63          ; mapped                 ; 751F          # 3.0  KANGXI RADICAL LIFE
-2F64          ; mapped                 ; 7528          # 3.0  KANGXI RADICAL USE
-2F65          ; mapped                 ; 7530          # 3.0  KANGXI RADICAL FIELD
-2F66          ; mapped                 ; 758B          # 3.0  KANGXI RADICAL BOLT OF CLOTH
-2F67          ; mapped                 ; 7592          # 3.0  KANGXI RADICAL SICKNESS
-2F68          ; mapped                 ; 7676          # 3.0  KANGXI RADICAL DOTTED TENT
-2F69          ; mapped                 ; 767D          # 3.0  KANGXI RADICAL WHITE
-2F6A          ; mapped                 ; 76AE          # 3.0  KANGXI RADICAL SKIN
-2F6B          ; mapped                 ; 76BF          # 3.0  KANGXI RADICAL DISH
-2F6C          ; mapped                 ; 76EE          # 3.0  KANGXI RADICAL EYE
-2F6D          ; mapped                 ; 77DB          # 3.0  KANGXI RADICAL SPEAR
-2F6E          ; mapped                 ; 77E2          # 3.0  KANGXI RADICAL ARROW
-2F6F          ; mapped                 ; 77F3          # 3.0  KANGXI RADICAL STONE
-2F70          ; mapped                 ; 793A          # 3.0  KANGXI RADICAL SPIRIT
-2F71          ; mapped                 ; 79B8          # 3.0  KANGXI RADICAL TRACK
-2F72          ; mapped                 ; 79BE          # 3.0  KANGXI RADICAL GRAIN
-2F73          ; mapped                 ; 7A74          # 3.0  KANGXI RADICAL CAVE
-2F74          ; mapped                 ; 7ACB          # 3.0  KANGXI RADICAL STAND
-2F75          ; mapped                 ; 7AF9          # 3.0  KANGXI RADICAL BAMBOO
-2F76          ; mapped                 ; 7C73          # 3.0  KANGXI RADICAL RICE
-2F77          ; mapped                 ; 7CF8          # 3.0  KANGXI RADICAL SILK
-2F78          ; mapped                 ; 7F36          # 3.0  KANGXI RADICAL JAR
-2F79          ; mapped                 ; 7F51          # 3.0  KANGXI RADICAL NET
-2F7A          ; mapped                 ; 7F8A          # 3.0  KANGXI RADICAL SHEEP
-2F7B          ; mapped                 ; 7FBD          # 3.0  KANGXI RADICAL FEATHER
-2F7C          ; mapped                 ; 8001          # 3.0  KANGXI RADICAL OLD
-2F7D          ; mapped                 ; 800C          # 3.0  KANGXI RADICAL AND
-2F7E          ; mapped                 ; 8012          # 3.0  KANGXI RADICAL PLOW
-2F7F          ; mapped                 ; 8033          # 3.0  KANGXI RADICAL EAR
-2F80          ; mapped                 ; 807F          # 3.0  KANGXI RADICAL BRUSH
-2F81          ; mapped                 ; 8089          # 3.0  KANGXI RADICAL MEAT
-2F82          ; mapped                 ; 81E3          # 3.0  KANGXI RADICAL MINISTER
-2F83          ; mapped                 ; 81EA          # 3.0  KANGXI RADICAL SELF
-2F84          ; mapped                 ; 81F3          # 3.0  KANGXI RADICAL ARRIVE
-2F85          ; mapped                 ; 81FC          # 3.0  KANGXI RADICAL MORTAR
-2F86          ; mapped                 ; 820C          # 3.0  KANGXI RADICAL TONGUE
-2F87          ; mapped                 ; 821B          # 3.0  KANGXI RADICAL OPPOSE
-2F88          ; mapped                 ; 821F          # 3.0  KANGXI RADICAL BOAT
-2F89          ; mapped                 ; 826E          # 3.0  KANGXI RADICAL STOPPING
-2F8A          ; mapped                 ; 8272          # 3.0  KANGXI RADICAL COLOR
-2F8B          ; mapped                 ; 8278          # 3.0  KANGXI RADICAL GRASS
-2F8C          ; mapped                 ; 864D          # 3.0  KANGXI RADICAL TIGER
-2F8D          ; mapped                 ; 866B          # 3.0  KANGXI RADICAL INSECT
-2F8E          ; mapped                 ; 8840          # 3.0  KANGXI RADICAL BLOOD
-2F8F          ; mapped                 ; 884C          # 3.0  KANGXI RADICAL WALK ENCLOSURE
-2F90          ; mapped                 ; 8863          # 3.0  KANGXI RADICAL CLOTHES
-2F91          ; mapped                 ; 897E          # 3.0  KANGXI RADICAL WEST
-2F92          ; mapped                 ; 898B          # 3.0  KANGXI RADICAL SEE
-2F93          ; mapped                 ; 89D2          # 3.0  KANGXI RADICAL HORN
-2F94          ; mapped                 ; 8A00          # 3.0  KANGXI RADICAL SPEECH
-2F95          ; mapped                 ; 8C37          # 3.0  KANGXI RADICAL VALLEY
-2F96          ; mapped                 ; 8C46          # 3.0  KANGXI RADICAL BEAN
-2F97          ; mapped                 ; 8C55          # 3.0  KANGXI RADICAL PIG
-2F98          ; mapped                 ; 8C78          # 3.0  KANGXI RADICAL BADGER
-2F99          ; mapped                 ; 8C9D          # 3.0  KANGXI RADICAL SHELL
-2F9A          ; mapped                 ; 8D64          # 3.0  KANGXI RADICAL RED
-2F9B          ; mapped                 ; 8D70          # 3.0  KANGXI RADICAL RUN
-2F9C          ; mapped                 ; 8DB3          # 3.0  KANGXI RADICAL FOOT
-2F9D          ; mapped                 ; 8EAB          # 3.0  KANGXI RADICAL BODY
-2F9E          ; mapped                 ; 8ECA          # 3.0  KANGXI RADICAL CART
-2F9F          ; mapped                 ; 8F9B          # 3.0  KANGXI RADICAL BITTER
-2FA0          ; mapped                 ; 8FB0          # 3.0  KANGXI RADICAL MORNING
-2FA1          ; mapped                 ; 8FB5          # 3.0  KANGXI RADICAL WALK
-2FA2          ; mapped                 ; 9091          # 3.0  KANGXI RADICAL CITY
-2FA3          ; mapped                 ; 9149          # 3.0  KANGXI RADICAL WINE
-2FA4          ; mapped                 ; 91C6          # 3.0  KANGXI RADICAL DISTINGUISH
-2FA5          ; mapped                 ; 91CC          # 3.0  KANGXI RADICAL VILLAGE
-2FA6          ; mapped                 ; 91D1          # 3.0  KANGXI RADICAL GOLD
-2FA7          ; mapped                 ; 9577          # 3.0  KANGXI RADICAL LONG
-2FA8          ; mapped                 ; 9580          # 3.0  KANGXI RADICAL GATE
-2FA9          ; mapped                 ; 961C          # 3.0  KANGXI RADICAL MOUND
-2FAA          ; mapped                 ; 96B6          # 3.0  KANGXI RADICAL SLAVE
-2FAB          ; mapped                 ; 96B9          # 3.0  KANGXI RADICAL SHORT TAILED BIRD
-2FAC          ; mapped                 ; 96E8          # 3.0  KANGXI RADICAL RAIN
-2FAD          ; mapped                 ; 9751          # 3.0  KANGXI RADICAL BLUE
-2FAE          ; mapped                 ; 975E          # 3.0  KANGXI RADICAL WRONG
-2FAF          ; mapped                 ; 9762          # 3.0  KANGXI RADICAL FACE
-2FB0          ; mapped                 ; 9769          # 3.0  KANGXI RADICAL LEATHER
-2FB1          ; mapped                 ; 97CB          # 3.0  KANGXI RADICAL TANNED LEATHER
-2FB2          ; mapped                 ; 97ED          # 3.0  KANGXI RADICAL LEEK
-2FB3          ; mapped                 ; 97F3          # 3.0  KANGXI RADICAL SOUND
-2FB4          ; mapped                 ; 9801          # 3.0  KANGXI RADICAL LEAF
-2FB5          ; mapped                 ; 98A8          # 3.0  KANGXI RADICAL WIND
-2FB6          ; mapped                 ; 98DB          # 3.0  KANGXI RADICAL FLY
-2FB7          ; mapped                 ; 98DF          # 3.0  KANGXI RADICAL EAT
-2FB8          ; mapped                 ; 9996          # 3.0  KANGXI RADICAL HEAD
-2FB9          ; mapped                 ; 9999          # 3.0  KANGXI RADICAL FRAGRANT
-2FBA          ; mapped                 ; 99AC          # 3.0  KANGXI RADICAL HORSE
-2FBB          ; mapped                 ; 9AA8          # 3.0  KANGXI RADICAL BONE
-2FBC          ; mapped                 ; 9AD8          # 3.0  KANGXI RADICAL TALL
-2FBD          ; mapped                 ; 9ADF          # 3.0  KANGXI RADICAL HAIR
-2FBE          ; mapped                 ; 9B25          # 3.0  KANGXI RADICAL FIGHT
-2FBF          ; mapped                 ; 9B2F          # 3.0  KANGXI RADICAL SACRIFICIAL WINE
-2FC0          ; mapped                 ; 9B32          # 3.0  KANGXI RADICAL CAULDRON
-2FC1          ; mapped                 ; 9B3C          # 3.0  KANGXI RADICAL GHOST
-2FC2          ; mapped                 ; 9B5A          # 3.0  KANGXI RADICAL FISH
-2FC3          ; mapped                 ; 9CE5          # 3.0  KANGXI RADICAL BIRD
-2FC4          ; mapped                 ; 9E75          # 3.0  KANGXI RADICAL SALT
-2FC5          ; mapped                 ; 9E7F          # 3.0  KANGXI RADICAL DEER
-2FC6          ; mapped                 ; 9EA5          # 3.0  KANGXI RADICAL WHEAT
-2FC7          ; mapped                 ; 9EBB          # 3.0  KANGXI RADICAL HEMP
-2FC8          ; mapped                 ; 9EC3          # 3.0  KANGXI RADICAL YELLOW
-2FC9          ; mapped                 ; 9ECD          # 3.0  KANGXI RADICAL MILLET
-2FCA          ; mapped                 ; 9ED1          # 3.0  KANGXI RADICAL BLACK
-2FCB          ; mapped                 ; 9EF9          # 3.0  KANGXI RADICAL EMBROIDERY
-2FCC          ; mapped                 ; 9EFD          # 3.0  KANGXI RADICAL FROG
-2FCD          ; mapped                 ; 9F0E          # 3.0  KANGXI RADICAL TRIPOD
-2FCE          ; mapped                 ; 9F13          # 3.0  KANGXI RADICAL DRUM
-2FCF          ; mapped                 ; 9F20          # 3.0  KANGXI RADICAL RAT
-2FD0          ; mapped                 ; 9F3B          # 3.0  KANGXI RADICAL NOSE
-2FD1          ; mapped                 ; 9F4A          # 3.0  KANGXI RADICAL EVEN
-2FD2          ; mapped                 ; 9F52          # 3.0  KANGXI RADICAL TOOTH
-2FD3          ; mapped                 ; 9F8D          # 3.0  KANGXI RADICAL DRAGON
-2FD4          ; mapped                 ; 9F9C          # 3.0  KANGXI RADICAL TURTLE
-2FD5          ; mapped                 ; 9FA0          # 3.0  KANGXI RADICAL FLUTE
-2FD6..2FEF    ; disallowed                             # NA   <reserved-2FD6>..<reserved-2FEF>
-2FF0..2FFB    ; disallowed                             # 3.0  IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
-2FFC..2FFF    ; disallowed                             # NA   <reserved-2FFC>..<reserved-2FFF>
-3000          ; disallowed_STD3_mapped ; 0020          # 1.1  IDEOGRAPHIC SPACE
-3001          ; valid                  ;      ; NV8    # 1.1  IDEOGRAPHIC COMMA
-3002          ; mapped                 ; 002E          # 1.1  IDEOGRAPHIC FULL STOP
-3003..3004    ; valid                  ;      ; NV8    # 1.1  DITTO MARK..JAPANESE INDUSTRIAL STANDARD SYMBOL
-3005..3007    ; valid                                  # 1.1  IDEOGRAPHIC ITERATION MARK..IDEOGRAPHIC NUMBER ZERO
-3008..3029    ; valid                  ;      ; NV8    # 1.1  LEFT ANGLE BRACKET..HANGZHOU NUMERAL NINE
-302A..302D    ; valid                                  # 1.1  IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
-302E..3035    ; valid                  ;      ; NV8    # 1.1  HANGUL SINGLE DOT TONE MARK..VERTICAL KANA REPEAT MARK LOWER HALF
-3036          ; mapped                 ; 3012          # 1.1  CIRCLED POSTAL MARK
-3037          ; valid                  ;      ; NV8    # 1.1  IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
-3038          ; mapped                 ; 5341          # 3.0  HANGZHOU NUMERAL TEN
-3039          ; mapped                 ; 5344          # 3.0  HANGZHOU NUMERAL TWENTY
-303A          ; mapped                 ; 5345          # 3.0  HANGZHOU NUMERAL THIRTY
-303B          ; valid                  ;      ; NV8    # 3.2  VERTICAL IDEOGRAPHIC ITERATION MARK
-303C          ; valid                                  # 3.2  MASU MARK
-303D          ; valid                  ;      ; NV8    # 3.2  PART ALTERNATION MARK
-303E          ; valid                  ;      ; NV8    # 3.0  IDEOGRAPHIC VARIATION INDICATOR
-303F          ; valid                  ;      ; NV8    # 1.1  IDEOGRAPHIC HALF FILL SPACE
-3040          ; disallowed                             # NA   <reserved-3040>
-3041..3094    ; valid                                  # 1.1  HIRAGANA LETTER SMALL A..HIRAGANA LETTER VU
-3095..3096    ; valid                                  # 3.2  HIRAGANA LETTER SMALL KA..HIRAGANA LETTER SMALL KE
-3097..3098    ; disallowed                             # NA   <reserved-3097>..<reserved-3098>
-3099..309A    ; valid                                  # 1.1  COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309B          ; disallowed_STD3_mapped ; 0020 3099     # 1.1  KATAKANA-HIRAGANA VOICED SOUND MARK
-309C          ; disallowed_STD3_mapped ; 0020 309A     # 1.1  KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
-309D..309E    ; valid                                  # 1.1  HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
-309F          ; mapped                 ; 3088 308A     # 3.2  HIRAGANA DIGRAPH YORI
-30A0          ; valid                  ;      ; NV8    # 3.2  KATAKANA-HIRAGANA DOUBLE HYPHEN
-30A1..30FE    ; valid                                  # 1.1  KATAKANA LETTER SMALL A..KATAKANA VOICED ITERATION MARK
-30FF          ; mapped                 ; 30B3 30C8     # 3.2  KATAKANA DIGRAPH KOTO
-3100..3104    ; disallowed                             # NA   <reserved-3100>..<reserved-3104>
-3105..312C    ; valid                                  # 1.1  BOPOMOFO LETTER B..BOPOMOFO LETTER GN
-312D          ; valid                                  # 5.1  BOPOMOFO LETTER IH
-312E          ; valid                                  # 10.0 BOPOMOFO LETTER O WITH DOT ABOVE
-312F          ; valid                                  # 11.0 BOPOMOFO LETTER NN
-3130          ; disallowed                             # NA   <reserved-3130>
-3131          ; mapped                 ; 1100          # 1.1  HANGUL LETTER KIYEOK
-3132          ; mapped                 ; 1101          # 1.1  HANGUL LETTER SSANGKIYEOK
-3133          ; mapped                 ; 11AA          # 1.1  HANGUL LETTER KIYEOK-SIOS
-3134          ; mapped                 ; 1102          # 1.1  HANGUL LETTER NIEUN
-3135          ; mapped                 ; 11AC          # 1.1  HANGUL LETTER NIEUN-CIEUC
-3136          ; mapped                 ; 11AD          # 1.1  HANGUL LETTER NIEUN-HIEUH
-3137          ; mapped                 ; 1103          # 1.1  HANGUL LETTER TIKEUT
-3138          ; mapped                 ; 1104          # 1.1  HANGUL LETTER SSANGTIKEUT
-3139          ; mapped                 ; 1105          # 1.1  HANGUL LETTER RIEUL
-313A          ; mapped                 ; 11B0          # 1.1  HANGUL LETTER RIEUL-KIYEOK
-313B          ; mapped                 ; 11B1          # 1.1  HANGUL LETTER RIEUL-MIEUM
-313C          ; mapped                 ; 11B2          # 1.1  HANGUL LETTER RIEUL-PIEUP
-313D          ; mapped                 ; 11B3          # 1.1  HANGUL LETTER RIEUL-SIOS
-313E          ; mapped                 ; 11B4          # 1.1  HANGUL LETTER RIEUL-THIEUTH
-313F          ; mapped                 ; 11B5          # 1.1  HANGUL LETTER RIEUL-PHIEUPH
-3140          ; mapped                 ; 111A          # 1.1  HANGUL LETTER RIEUL-HIEUH
-3141          ; mapped                 ; 1106          # 1.1  HANGUL LETTER MIEUM
-3142          ; mapped                 ; 1107          # 1.1  HANGUL LETTER PIEUP
-3143          ; mapped                 ; 1108          # 1.1  HANGUL LETTER SSANGPIEUP
-3144          ; mapped                 ; 1121          # 1.1  HANGUL LETTER PIEUP-SIOS
-3145          ; mapped                 ; 1109          # 1.1  HANGUL LETTER SIOS
-3146          ; mapped                 ; 110A          # 1.1  HANGUL LETTER SSANGSIOS
-3147          ; mapped                 ; 110B          # 1.1  HANGUL LETTER IEUNG
-3148          ; mapped                 ; 110C          # 1.1  HANGUL LETTER CIEUC
-3149          ; mapped                 ; 110D          # 1.1  HANGUL LETTER SSANGCIEUC
-314A          ; mapped                 ; 110E          # 1.1  HANGUL LETTER CHIEUCH
-314B          ; mapped                 ; 110F          # 1.1  HANGUL LETTER KHIEUKH
-314C          ; mapped                 ; 1110          # 1.1  HANGUL LETTER THIEUTH
-314D          ; mapped                 ; 1111          # 1.1  HANGUL LETTER PHIEUPH
-314E          ; mapped                 ; 1112          # 1.1  HANGUL LETTER HIEUH
-314F          ; mapped                 ; 1161          # 1.1  HANGUL LETTER A
-3150          ; mapped                 ; 1162          # 1.1  HANGUL LETTER AE
-3151          ; mapped                 ; 1163          # 1.1  HANGUL LETTER YA
-3152          ; mapped                 ; 1164          # 1.1  HANGUL LETTER YAE
-3153          ; mapped                 ; 1165          # 1.1  HANGUL LETTER EO
-3154          ; mapped                 ; 1166          # 1.1  HANGUL LETTER E
-3155          ; mapped                 ; 1167          # 1.1  HANGUL LETTER YEO
-3156          ; mapped                 ; 1168          # 1.1  HANGUL LETTER YE
-3157          ; mapped                 ; 1169          # 1.1  HANGUL LETTER O
-3158          ; mapped                 ; 116A          # 1.1  HANGUL LETTER WA
-3159          ; mapped                 ; 116B          # 1.1  HANGUL LETTER WAE
-315A          ; mapped                 ; 116C          # 1.1  HANGUL LETTER OE
-315B          ; mapped                 ; 116D          # 1.1  HANGUL LETTER YO
-315C          ; mapped                 ; 116E          # 1.1  HANGUL LETTER U
-315D          ; mapped                 ; 116F          # 1.1  HANGUL LETTER WEO
-315E          ; mapped                 ; 1170          # 1.1  HANGUL LETTER WE
-315F          ; mapped                 ; 1171          # 1.1  HANGUL LETTER WI
-3160          ; mapped                 ; 1172          # 1.1  HANGUL LETTER YU
-3161          ; mapped                 ; 1173          # 1.1  HANGUL LETTER EU
-3162          ; mapped                 ; 1174          # 1.1  HANGUL LETTER YI
-3163          ; mapped                 ; 1175          # 1.1  HANGUL LETTER I
-3164          ; disallowed                             # 1.1  HANGUL FILLER
-3165          ; mapped                 ; 1114          # 1.1  HANGUL LETTER SSANGNIEUN
-3166          ; mapped                 ; 1115          # 1.1  HANGUL LETTER NIEUN-TIKEUT
-3167          ; mapped                 ; 11C7          # 1.1  HANGUL LETTER NIEUN-SIOS
-3168          ; mapped                 ; 11C8          # 1.1  HANGUL LETTER NIEUN-PANSIOS
-3169          ; mapped                 ; 11CC          # 1.1  HANGUL LETTER RIEUL-KIYEOK-SIOS
-316A          ; mapped                 ; 11CE          # 1.1  HANGUL LETTER RIEUL-TIKEUT
-316B          ; mapped                 ; 11D3          # 1.1  HANGUL LETTER RIEUL-PIEUP-SIOS
-316C          ; mapped                 ; 11D7          # 1.1  HANGUL LETTER RIEUL-PANSIOS
-316D          ; mapped                 ; 11D9          # 1.1  HANGUL LETTER RIEUL-YEORINHIEUH
-316E          ; mapped                 ; 111C          # 1.1  HANGUL LETTER MIEUM-PIEUP
-316F          ; mapped                 ; 11DD          # 1.1  HANGUL LETTER MIEUM-SIOS
-3170          ; mapped                 ; 11DF          # 1.1  HANGUL LETTER MIEUM-PANSIOS
-3171          ; mapped                 ; 111D          # 1.1  HANGUL LETTER KAPYEOUNMIEUM
-3172          ; mapped                 ; 111E          # 1.1  HANGUL LETTER PIEUP-KIYEOK
-3173          ; mapped                 ; 1120          # 1.1  HANGUL LETTER PIEUP-TIKEUT
-3174          ; mapped                 ; 1122          # 1.1  HANGUL LETTER PIEUP-SIOS-KIYEOK
-3175          ; mapped                 ; 1123          # 1.1  HANGUL LETTER PIEUP-SIOS-TIKEUT
-3176          ; mapped                 ; 1127          # 1.1  HANGUL LETTER PIEUP-CIEUC
-3177          ; mapped                 ; 1129          # 1.1  HANGUL LETTER PIEUP-THIEUTH
-3178          ; mapped                 ; 112B          # 1.1  HANGUL LETTER KAPYEOUNPIEUP
-3179          ; mapped                 ; 112C          # 1.1  HANGUL LETTER KAPYEOUNSSANGPIEUP
-317A          ; mapped                 ; 112D          # 1.1  HANGUL LETTER SIOS-KIYEOK
-317B          ; mapped                 ; 112E          # 1.1  HANGUL LETTER SIOS-NIEUN
-317C          ; mapped                 ; 112F          # 1.1  HANGUL LETTER SIOS-TIKEUT
-317D          ; mapped                 ; 1132          # 1.1  HANGUL LETTER SIOS-PIEUP
-317E          ; mapped                 ; 1136          # 1.1  HANGUL LETTER SIOS-CIEUC
-317F          ; mapped                 ; 1140          # 1.1  HANGUL LETTER PANSIOS
-3180          ; mapped                 ; 1147          # 1.1  HANGUL LETTER SSANGIEUNG
-3181          ; mapped                 ; 114C          # 1.1  HANGUL LETTER YESIEUNG
-3182          ; mapped                 ; 11F1          # 1.1  HANGUL LETTER YESIEUNG-SIOS
-3183          ; mapped                 ; 11F2          # 1.1  HANGUL LETTER YESIEUNG-PANSIOS
-3184          ; mapped                 ; 1157          # 1.1  HANGUL LETTER KAPYEOUNPHIEUPH
-3185          ; mapped                 ; 1158          # 1.1  HANGUL LETTER SSANGHIEUH
-3186          ; mapped                 ; 1159          # 1.1  HANGUL LETTER YEORINHIEUH
-3187          ; mapped                 ; 1184          # 1.1  HANGUL LETTER YO-YA
-3188          ; mapped                 ; 1185          # 1.1  HANGUL LETTER YO-YAE
-3189          ; mapped                 ; 1188          # 1.1  HANGUL LETTER YO-I
-318A          ; mapped                 ; 1191          # 1.1  HANGUL LETTER YU-YEO
-318B          ; mapped                 ; 1192          # 1.1  HANGUL LETTER YU-YE
-318C          ; mapped                 ; 1194          # 1.1  HANGUL LETTER YU-I
-318D          ; mapped                 ; 119E          # 1.1  HANGUL LETTER ARAEA
-318E          ; mapped                 ; 11A1          # 1.1  HANGUL LETTER ARAEAE
-318F          ; disallowed                             # NA   <reserved-318F>
-3190..3191    ; valid                  ;      ; NV8    # 1.1  IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
-3192          ; mapped                 ; 4E00          # 1.1  IDEOGRAPHIC ANNOTATION ONE MARK
-3193          ; mapped                 ; 4E8C          # 1.1  IDEOGRAPHIC ANNOTATION TWO MARK
-3194          ; mapped                 ; 4E09          # 1.1  IDEOGRAPHIC ANNOTATION THREE MARK
-3195          ; mapped                 ; 56DB          # 1.1  IDEOGRAPHIC ANNOTATION FOUR MARK
-3196          ; mapped                 ; 4E0A          # 1.1  IDEOGRAPHIC ANNOTATION TOP MARK
-3197          ; mapped                 ; 4E2D          # 1.1  IDEOGRAPHIC ANNOTATION MIDDLE MARK
-3198          ; mapped                 ; 4E0B          # 1.1  IDEOGRAPHIC ANNOTATION BOTTOM MARK
-3199          ; mapped                 ; 7532          # 1.1  IDEOGRAPHIC ANNOTATION FIRST MARK
-319A          ; mapped                 ; 4E59          # 1.1  IDEOGRAPHIC ANNOTATION SECOND MARK
-319B          ; mapped                 ; 4E19          # 1.1  IDEOGRAPHIC ANNOTATION THIRD MARK
-319C          ; mapped                 ; 4E01          # 1.1  IDEOGRAPHIC ANNOTATION FOURTH MARK
-319D          ; mapped                 ; 5929          # 1.1  IDEOGRAPHIC ANNOTATION HEAVEN MARK
-319E          ; mapped                 ; 5730          # 1.1  IDEOGRAPHIC ANNOTATION EARTH MARK
-319F          ; mapped                 ; 4EBA          # 1.1  IDEOGRAPHIC ANNOTATION MAN MARK
-31A0..31B7    ; valid                                  # 3.0  BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
-31B8..31BA    ; valid                                  # 6.0  BOPOMOFO LETTER GH..BOPOMOFO LETTER ZY
-31BB..31BF    ; valid                                  # 13.0 BOPOMOFO FINAL LETTER G..BOPOMOFO LETTER AH
-31C0..31CF    ; valid                  ;      ; NV8    # 4.1  CJK STROKE T..CJK STROKE N
-31D0..31E3    ; valid                  ;      ; NV8    # 5.1  CJK STROKE H..CJK STROKE Q
-31E4..31EF    ; disallowed                             # NA   <reserved-31E4>..<reserved-31EF>
-31F0..31FF    ; valid                                  # 3.2  KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
-3200          ; disallowed_STD3_mapped ; 0028 1100 0029 #1.1  PARENTHESIZED HANGUL KIYEOK
-3201          ; disallowed_STD3_mapped ; 0028 1102 0029 #1.1  PARENTHESIZED HANGUL NIEUN
-3202          ; disallowed_STD3_mapped ; 0028 1103 0029 #1.1  PARENTHESIZED HANGUL TIKEUT
-3203          ; disallowed_STD3_mapped ; 0028 1105 0029 #1.1  PARENTHESIZED HANGUL RIEUL
-3204          ; disallowed_STD3_mapped ; 0028 1106 0029 #1.1  PARENTHESIZED HANGUL MIEUM
-3205          ; disallowed_STD3_mapped ; 0028 1107 0029 #1.1  PARENTHESIZED HANGUL PIEUP
-3206          ; disallowed_STD3_mapped ; 0028 1109 0029 #1.1  PARENTHESIZED HANGUL SIOS
-3207          ; disallowed_STD3_mapped ; 0028 110B 0029 #1.1  PARENTHESIZED HANGUL IEUNG
-3208          ; disallowed_STD3_mapped ; 0028 110C 0029 #1.1  PARENTHESIZED HANGUL CIEUC
-3209          ; disallowed_STD3_mapped ; 0028 110E 0029 #1.1  PARENTHESIZED HANGUL CHIEUCH
-320A          ; disallowed_STD3_mapped ; 0028 110F 0029 #1.1  PARENTHESIZED HANGUL KHIEUKH
-320B          ; disallowed_STD3_mapped ; 0028 1110 0029 #1.1  PARENTHESIZED HANGUL THIEUTH
-320C          ; disallowed_STD3_mapped ; 0028 1111 0029 #1.1  PARENTHESIZED HANGUL PHIEUPH
-320D          ; disallowed_STD3_mapped ; 0028 1112 0029 #1.1  PARENTHESIZED HANGUL HIEUH
-320E          ; disallowed_STD3_mapped ; 0028 AC00 0029 #1.1  PARENTHESIZED HANGUL KIYEOK A
-320F          ; disallowed_STD3_mapped ; 0028 B098 0029 #1.1  PARENTHESIZED HANGUL NIEUN A
-3210          ; disallowed_STD3_mapped ; 0028 B2E4 0029 #1.1  PARENTHESIZED HANGUL TIKEUT A
-3211          ; disallowed_STD3_mapped ; 0028 B77C 0029 #1.1  PARENTHESIZED HANGUL RIEUL A
-3212          ; disallowed_STD3_mapped ; 0028 B9C8 0029 #1.1  PARENTHESIZED HANGUL MIEUM A
-3213          ; disallowed_STD3_mapped ; 0028 BC14 0029 #1.1  PARENTHESIZED HANGUL PIEUP A
-3214          ; disallowed_STD3_mapped ; 0028 C0AC 0029 #1.1  PARENTHESIZED HANGUL SIOS A
-3215          ; disallowed_STD3_mapped ; 0028 C544 0029 #1.1  PARENTHESIZED HANGUL IEUNG A
-3216          ; disallowed_STD3_mapped ; 0028 C790 0029 #1.1  PARENTHESIZED HANGUL CIEUC A
-3217          ; disallowed_STD3_mapped ; 0028 CC28 0029 #1.1  PARENTHESIZED HANGUL CHIEUCH A
-3218          ; disallowed_STD3_mapped ; 0028 CE74 0029 #1.1  PARENTHESIZED HANGUL KHIEUKH A
-3219          ; disallowed_STD3_mapped ; 0028 D0C0 0029 #1.1  PARENTHESIZED HANGUL THIEUTH A
-321A          ; disallowed_STD3_mapped ; 0028 D30C 0029 #1.1  PARENTHESIZED HANGUL PHIEUPH A
-321B          ; disallowed_STD3_mapped ; 0028 D558 0029 #1.1  PARENTHESIZED HANGUL HIEUH A
-321C          ; disallowed_STD3_mapped ; 0028 C8FC 0029 #1.1  PARENTHESIZED HANGUL CIEUC U
-321D          ; disallowed_STD3_mapped ; 0028 C624 C804 0029 #4.0 PARENTHESIZED KOREAN CHARACTER OJEON
-321E          ; disallowed_STD3_mapped ; 0028 C624 D6C4 0029 #4.0 PARENTHESIZED KOREAN CHARACTER O HU
-321F          ; disallowed                             # NA   <reserved-321F>
-3220          ; disallowed_STD3_mapped ; 0028 4E00 0029 #1.1  PARENTHESIZED IDEOGRAPH ONE
-3221          ; disallowed_STD3_mapped ; 0028 4E8C 0029 #1.1  PARENTHESIZED IDEOGRAPH TWO
-3222          ; disallowed_STD3_mapped ; 0028 4E09 0029 #1.1  PARENTHESIZED IDEOGRAPH THREE
-3223          ; disallowed_STD3_mapped ; 0028 56DB 0029 #1.1  PARENTHESIZED IDEOGRAPH FOUR
-3224          ; disallowed_STD3_mapped ; 0028 4E94 0029 #1.1  PARENTHESIZED IDEOGRAPH FIVE
-3225          ; disallowed_STD3_mapped ; 0028 516D 0029 #1.1  PARENTHESIZED IDEOGRAPH SIX
-3226          ; disallowed_STD3_mapped ; 0028 4E03 0029 #1.1  PARENTHESIZED IDEOGRAPH SEVEN
-3227          ; disallowed_STD3_mapped ; 0028 516B 0029 #1.1  PARENTHESIZED IDEOGRAPH EIGHT
-3228          ; disallowed_STD3_mapped ; 0028 4E5D 0029 #1.1  PARENTHESIZED IDEOGRAPH NINE
-3229          ; disallowed_STD3_mapped ; 0028 5341 0029 #1.1  PARENTHESIZED IDEOGRAPH TEN
-322A          ; disallowed_STD3_mapped ; 0028 6708 0029 #1.1  PARENTHESIZED IDEOGRAPH MOON
-322B          ; disallowed_STD3_mapped ; 0028 706B 0029 #1.1  PARENTHESIZED IDEOGRAPH FIRE
-322C          ; disallowed_STD3_mapped ; 0028 6C34 0029 #1.1  PARENTHESIZED IDEOGRAPH WATER
-322D          ; disallowed_STD3_mapped ; 0028 6728 0029 #1.1  PARENTHESIZED IDEOGRAPH WOOD
-322E          ; disallowed_STD3_mapped ; 0028 91D1 0029 #1.1  PARENTHESIZED IDEOGRAPH METAL
-322F          ; disallowed_STD3_mapped ; 0028 571F 0029 #1.1  PARENTHESIZED IDEOGRAPH EARTH
-3230          ; disallowed_STD3_mapped ; 0028 65E5 0029 #1.1  PARENTHESIZED IDEOGRAPH SUN
-3231          ; disallowed_STD3_mapped ; 0028 682A 0029 #1.1  PARENTHESIZED IDEOGRAPH STOCK
-3232          ; disallowed_STD3_mapped ; 0028 6709 0029 #1.1  PARENTHESIZED IDEOGRAPH HAVE
-3233          ; disallowed_STD3_mapped ; 0028 793E 0029 #1.1  PARENTHESIZED IDEOGRAPH SOCIETY
-3234          ; disallowed_STD3_mapped ; 0028 540D 0029 #1.1  PARENTHESIZED IDEOGRAPH NAME
-3235          ; disallowed_STD3_mapped ; 0028 7279 0029 #1.1  PARENTHESIZED IDEOGRAPH SPECIAL
-3236          ; disallowed_STD3_mapped ; 0028 8CA1 0029 #1.1  PARENTHESIZED IDEOGRAPH FINANCIAL
-3237          ; disallowed_STD3_mapped ; 0028 795D 0029 #1.1  PARENTHESIZED IDEOGRAPH CONGRATULATION
-3238          ; disallowed_STD3_mapped ; 0028 52B4 0029 #1.1  PARENTHESIZED IDEOGRAPH LABOR
-3239          ; disallowed_STD3_mapped ; 0028 4EE3 0029 #1.1  PARENTHESIZED IDEOGRAPH REPRESENT
-323A          ; disallowed_STD3_mapped ; 0028 547C 0029 #1.1  PARENTHESIZED IDEOGRAPH CALL
-323B          ; disallowed_STD3_mapped ; 0028 5B66 0029 #1.1  PARENTHESIZED IDEOGRAPH STUDY
-323C          ; disallowed_STD3_mapped ; 0028 76E3 0029 #1.1  PARENTHESIZED IDEOGRAPH SUPERVISE
-323D          ; disallowed_STD3_mapped ; 0028 4F01 0029 #1.1  PARENTHESIZED IDEOGRAPH ENTERPRISE
-323E          ; disallowed_STD3_mapped ; 0028 8CC7 0029 #1.1  PARENTHESIZED IDEOGRAPH RESOURCE
-323F          ; disallowed_STD3_mapped ; 0028 5354 0029 #1.1  PARENTHESIZED IDEOGRAPH ALLIANCE
-3240          ; disallowed_STD3_mapped ; 0028 796D 0029 #1.1  PARENTHESIZED IDEOGRAPH FESTIVAL
-3241          ; disallowed_STD3_mapped ; 0028 4F11 0029 #1.1  PARENTHESIZED IDEOGRAPH REST
-3242          ; disallowed_STD3_mapped ; 0028 81EA 0029 #1.1  PARENTHESIZED IDEOGRAPH SELF
-3243          ; disallowed_STD3_mapped ; 0028 81F3 0029 #1.1  PARENTHESIZED IDEOGRAPH REACH
-3244          ; mapped                 ; 554F          # 5.2  CIRCLED IDEOGRAPH QUESTION
-3245          ; mapped                 ; 5E7C          # 5.2  CIRCLED IDEOGRAPH KINDERGARTEN
-3246          ; mapped                 ; 6587          # 5.2  CIRCLED IDEOGRAPH SCHOOL
-3247          ; mapped                 ; 7B8F          # 5.2  CIRCLED IDEOGRAPH KOTO
-3248..324F    ; valid                  ;      ; NV8    # 5.2  CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE
-3250          ; mapped                 ; 0070 0074 0065 #4.0  PARTNERSHIP SIGN
-3251          ; mapped                 ; 0032 0031     # 3.2  CIRCLED NUMBER TWENTY ONE
-3252          ; mapped                 ; 0032 0032     # 3.2  CIRCLED NUMBER TWENTY TWO
-3253          ; mapped                 ; 0032 0033     # 3.2  CIRCLED NUMBER TWENTY THREE
-3254          ; mapped                 ; 0032 0034     # 3.2  CIRCLED NUMBER TWENTY FOUR
-3255          ; mapped                 ; 0032 0035     # 3.2  CIRCLED NUMBER TWENTY FIVE
-3256          ; mapped                 ; 0032 0036     # 3.2  CIRCLED NUMBER TWENTY SIX
-3257          ; mapped                 ; 0032 0037     # 3.2  CIRCLED NUMBER TWENTY SEVEN
-3258          ; mapped                 ; 0032 0038     # 3.2  CIRCLED NUMBER TWENTY EIGHT
-3259          ; mapped                 ; 0032 0039     # 3.2  CIRCLED NUMBER TWENTY NINE
-325A          ; mapped                 ; 0033 0030     # 3.2  CIRCLED NUMBER THIRTY
-325B          ; mapped                 ; 0033 0031     # 3.2  CIRCLED NUMBER THIRTY ONE
-325C          ; mapped                 ; 0033 0032     # 3.2  CIRCLED NUMBER THIRTY TWO
-325D          ; mapped                 ; 0033 0033     # 3.2  CIRCLED NUMBER THIRTY THREE
-325E          ; mapped                 ; 0033 0034     # 3.2  CIRCLED NUMBER THIRTY FOUR
-325F          ; mapped                 ; 0033 0035     # 3.2  CIRCLED NUMBER THIRTY FIVE
-3260          ; mapped                 ; 1100          # 1.1  CIRCLED HANGUL KIYEOK
-3261          ; mapped                 ; 1102          # 1.1  CIRCLED HANGUL NIEUN
-3262          ; mapped                 ; 1103          # 1.1  CIRCLED HANGUL TIKEUT
-3263          ; mapped                 ; 1105          # 1.1  CIRCLED HANGUL RIEUL
-3264          ; mapped                 ; 1106          # 1.1  CIRCLED HANGUL MIEUM
-3265          ; mapped                 ; 1107          # 1.1  CIRCLED HANGUL PIEUP
-3266          ; mapped                 ; 1109          # 1.1  CIRCLED HANGUL SIOS
-3267          ; mapped                 ; 110B          # 1.1  CIRCLED HANGUL IEUNG
-3268          ; mapped                 ; 110C          # 1.1  CIRCLED HANGUL CIEUC
-3269          ; mapped                 ; 110E          # 1.1  CIRCLED HANGUL CHIEUCH
-326A          ; mapped                 ; 110F          # 1.1  CIRCLED HANGUL KHIEUKH
-326B          ; mapped                 ; 1110          # 1.1  CIRCLED HANGUL THIEUTH
-326C          ; mapped                 ; 1111          # 1.1  CIRCLED HANGUL PHIEUPH
-326D          ; mapped                 ; 1112          # 1.1  CIRCLED HANGUL HIEUH
-326E          ; mapped                 ; AC00          # 1.1  CIRCLED HANGUL KIYEOK A
-326F          ; mapped                 ; B098          # 1.1  CIRCLED HANGUL NIEUN A
-3270          ; mapped                 ; B2E4          # 1.1  CIRCLED HANGUL TIKEUT A
-3271          ; mapped                 ; B77C          # 1.1  CIRCLED HANGUL RIEUL A
-3272          ; mapped                 ; B9C8          # 1.1  CIRCLED HANGUL MIEUM A
-3273          ; mapped                 ; BC14          # 1.1  CIRCLED HANGUL PIEUP A
-3274          ; mapped                 ; C0AC          # 1.1  CIRCLED HANGUL SIOS A
-3275          ; mapped                 ; C544          # 1.1  CIRCLED HANGUL IEUNG A
-3276          ; mapped                 ; C790          # 1.1  CIRCLED HANGUL CIEUC A
-3277          ; mapped                 ; CC28          # 1.1  CIRCLED HANGUL CHIEUCH A
-3278          ; mapped                 ; CE74          # 1.1  CIRCLED HANGUL KHIEUKH A
-3279          ; mapped                 ; D0C0          # 1.1  CIRCLED HANGUL THIEUTH A
-327A          ; mapped                 ; D30C          # 1.1  CIRCLED HANGUL PHIEUPH A
-327B          ; mapped                 ; D558          # 1.1  CIRCLED HANGUL HIEUH A
-327C          ; mapped                 ; CC38 ACE0     # 4.0  CIRCLED KOREAN CHARACTER CHAMKO
-327D          ; mapped                 ; C8FC C758     # 4.0  CIRCLED KOREAN CHARACTER JUEUI
-327E          ; mapped                 ; C6B0          # 4.1  CIRCLED HANGUL IEUNG U
-327F          ; valid                  ;      ; NV8    # 1.1  KOREAN STANDARD SYMBOL
-3280          ; mapped                 ; 4E00          # 1.1  CIRCLED IDEOGRAPH ONE
-3281          ; mapped                 ; 4E8C          # 1.1  CIRCLED IDEOGRAPH TWO
-3282          ; mapped                 ; 4E09          # 1.1  CIRCLED IDEOGRAPH THREE
-3283          ; mapped                 ; 56DB          # 1.1  CIRCLED IDEOGRAPH FOUR
-3284          ; mapped                 ; 4E94          # 1.1  CIRCLED IDEOGRAPH FIVE
-3285          ; mapped                 ; 516D          # 1.1  CIRCLED IDEOGRAPH SIX
-3286          ; mapped                 ; 4E03          # 1.1  CIRCLED IDEOGRAPH SEVEN
-3287          ; mapped                 ; 516B          # 1.1  CIRCLED IDEOGRAPH EIGHT
-3288          ; mapped                 ; 4E5D          # 1.1  CIRCLED IDEOGRAPH NINE
-3289          ; mapped                 ; 5341          # 1.1  CIRCLED IDEOGRAPH TEN
-328A          ; mapped                 ; 6708          # 1.1  CIRCLED IDEOGRAPH MOON
-328B          ; mapped                 ; 706B          # 1.1  CIRCLED IDEOGRAPH FIRE
-328C          ; mapped                 ; 6C34          # 1.1  CIRCLED IDEOGRAPH WATER
-328D          ; mapped                 ; 6728          # 1.1  CIRCLED IDEOGRAPH WOOD
-328E          ; mapped                 ; 91D1          # 1.1  CIRCLED IDEOGRAPH METAL
-328F          ; mapped                 ; 571F          # 1.1  CIRCLED IDEOGRAPH EARTH
-3290          ; mapped                 ; 65E5          # 1.1  CIRCLED IDEOGRAPH SUN
-3291          ; mapped                 ; 682A          # 1.1  CIRCLED IDEOGRAPH STOCK
-3292          ; mapped                 ; 6709          # 1.1  CIRCLED IDEOGRAPH HAVE
-3293          ; mapped                 ; 793E          # 1.1  CIRCLED IDEOGRAPH SOCIETY
-3294          ; mapped                 ; 540D          # 1.1  CIRCLED IDEOGRAPH NAME
-3295          ; mapped                 ; 7279          # 1.1  CIRCLED IDEOGRAPH SPECIAL
-3296          ; mapped                 ; 8CA1          # 1.1  CIRCLED IDEOGRAPH FINANCIAL
-3297          ; mapped                 ; 795D          # 1.1  CIRCLED IDEOGRAPH CONGRATULATION
-3298          ; mapped                 ; 52B4          # 1.1  CIRCLED IDEOGRAPH LABOR
-3299          ; mapped                 ; 79D8          # 1.1  CIRCLED IDEOGRAPH SECRET
-329A          ; mapped                 ; 7537          # 1.1  CIRCLED IDEOGRAPH MALE
-329B          ; mapped                 ; 5973          # 1.1  CIRCLED IDEOGRAPH FEMALE
-329C          ; mapped                 ; 9069          # 1.1  CIRCLED IDEOGRAPH SUITABLE
-329D          ; mapped                 ; 512A          # 1.1  CIRCLED IDEOGRAPH EXCELLENT
-329E          ; mapped                 ; 5370          # 1.1  CIRCLED IDEOGRAPH PRINT
-329F          ; mapped                 ; 6CE8          # 1.1  CIRCLED IDEOGRAPH ATTENTION
-32A0          ; mapped                 ; 9805          # 1.1  CIRCLED IDEOGRAPH ITEM
-32A1          ; mapped                 ; 4F11          # 1.1  CIRCLED IDEOGRAPH REST
-32A2          ; mapped                 ; 5199          # 1.1  CIRCLED IDEOGRAPH COPY
-32A3          ; mapped                 ; 6B63          # 1.1  CIRCLED IDEOGRAPH CORRECT
-32A4          ; mapped                 ; 4E0A          # 1.1  CIRCLED IDEOGRAPH HIGH
-32A5          ; mapped                 ; 4E2D          # 1.1  CIRCLED IDEOGRAPH CENTRE
-32A6          ; mapped                 ; 4E0B          # 1.1  CIRCLED IDEOGRAPH LOW
-32A7          ; mapped                 ; 5DE6          # 1.1  CIRCLED IDEOGRAPH LEFT
-32A8          ; mapped                 ; 53F3          # 1.1  CIRCLED IDEOGRAPH RIGHT
-32A9          ; mapped                 ; 533B          # 1.1  CIRCLED IDEOGRAPH MEDICINE
-32AA          ; mapped                 ; 5B97          # 1.1  CIRCLED IDEOGRAPH RELIGION
-32AB          ; mapped                 ; 5B66          # 1.1  CIRCLED IDEOGRAPH STUDY
-32AC          ; mapped                 ; 76E3          # 1.1  CIRCLED IDEOGRAPH SUPERVISE
-32AD          ; mapped                 ; 4F01          # 1.1  CIRCLED IDEOGRAPH ENTERPRISE
-32AE          ; mapped                 ; 8CC7          # 1.1  CIRCLED IDEOGRAPH RESOURCE
-32AF          ; mapped                 ; 5354          # 1.1  CIRCLED IDEOGRAPH ALLIANCE
-32B0          ; mapped                 ; 591C          # 1.1  CIRCLED IDEOGRAPH NIGHT
-32B1          ; mapped                 ; 0033 0036     # 3.2  CIRCLED NUMBER THIRTY SIX
-32B2          ; mapped                 ; 0033 0037     # 3.2  CIRCLED NUMBER THIRTY SEVEN
-32B3          ; mapped                 ; 0033 0038     # 3.2  CIRCLED NUMBER THIRTY EIGHT
-32B4          ; mapped                 ; 0033 0039     # 3.2  CIRCLED NUMBER THIRTY NINE
-32B5          ; mapped                 ; 0034 0030     # 3.2  CIRCLED NUMBER FORTY
-32B6          ; mapped                 ; 0034 0031     # 3.2  CIRCLED NUMBER FORTY ONE
-32B7          ; mapped                 ; 0034 0032     # 3.2  CIRCLED NUMBER FORTY TWO
-32B8          ; mapped                 ; 0034 0033     # 3.2  CIRCLED NUMBER FORTY THREE
-32B9          ; mapped                 ; 0034 0034     # 3.2  CIRCLED NUMBER FORTY FOUR
-32BA          ; mapped                 ; 0034 0035     # 3.2  CIRCLED NUMBER FORTY FIVE
-32BB          ; mapped                 ; 0034 0036     # 3.2  CIRCLED NUMBER FORTY SIX
-32BC          ; mapped                 ; 0034 0037     # 3.2  CIRCLED NUMBER FORTY SEVEN
-32BD          ; mapped                 ; 0034 0038     # 3.2  CIRCLED NUMBER FORTY EIGHT
-32BE          ; mapped                 ; 0034 0039     # 3.2  CIRCLED NUMBER FORTY NINE
-32BF          ; mapped                 ; 0035 0030     # 3.2  CIRCLED NUMBER FIFTY
-32C0          ; mapped                 ; 0031 6708     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
-32C1          ; mapped                 ; 0032 6708     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
-32C2          ; mapped                 ; 0033 6708     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
-32C3          ; mapped                 ; 0034 6708     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
-32C4          ; mapped                 ; 0035 6708     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
-32C5          ; mapped                 ; 0036 6708     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
-32C6          ; mapped                 ; 0037 6708     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
-32C7          ; mapped                 ; 0038 6708     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
-32C8          ; mapped                 ; 0039 6708     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
-32C9          ; mapped                 ; 0031 0030 6708 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
-32CA          ; mapped                 ; 0031 0031 6708 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
-32CB          ; mapped                 ; 0031 0032 6708 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
-32CC          ; mapped                 ; 0068 0067     # 4.0  SQUARE HG
-32CD          ; mapped                 ; 0065 0072 0067 #4.0  SQUARE ERG
-32CE          ; mapped                 ; 0065 0076     # 4.0  SQUARE EV
-32CF          ; mapped                 ; 006C 0074 0064 #4.0  LIMITED LIABILITY SIGN
-32D0          ; mapped                 ; 30A2          # 1.1  CIRCLED KATAKANA A
-32D1          ; mapped                 ; 30A4          # 1.1  CIRCLED KATAKANA I
-32D2          ; mapped                 ; 30A6          # 1.1  CIRCLED KATAKANA U
-32D3          ; mapped                 ; 30A8          # 1.1  CIRCLED KATAKANA E
-32D4          ; mapped                 ; 30AA          # 1.1  CIRCLED KATAKANA O
-32D5          ; mapped                 ; 30AB          # 1.1  CIRCLED KATAKANA KA
-32D6          ; mapped                 ; 30AD          # 1.1  CIRCLED KATAKANA KI
-32D7          ; mapped                 ; 30AF          # 1.1  CIRCLED KATAKANA KU
-32D8          ; mapped                 ; 30B1          # 1.1  CIRCLED KATAKANA KE
-32D9          ; mapped                 ; 30B3          # 1.1  CIRCLED KATAKANA KO
-32DA          ; mapped                 ; 30B5          # 1.1  CIRCLED KATAKANA SA
-32DB          ; mapped                 ; 30B7          # 1.1  CIRCLED KATAKANA SI
-32DC          ; mapped                 ; 30B9          # 1.1  CIRCLED KATAKANA SU
-32DD          ; mapped                 ; 30BB          # 1.1  CIRCLED KATAKANA SE
-32DE          ; mapped                 ; 30BD          # 1.1  CIRCLED KATAKANA SO
-32DF          ; mapped                 ; 30BF          # 1.1  CIRCLED KATAKANA TA
-32E0          ; mapped                 ; 30C1          # 1.1  CIRCLED KATAKANA TI
-32E1          ; mapped                 ; 30C4          # 1.1  CIRCLED KATAKANA TU
-32E2          ; mapped                 ; 30C6          # 1.1  CIRCLED KATAKANA TE
-32E3          ; mapped                 ; 30C8          # 1.1  CIRCLED KATAKANA TO
-32E4          ; mapped                 ; 30CA          # 1.1  CIRCLED KATAKANA NA
-32E5          ; mapped                 ; 30CB          # 1.1  CIRCLED KATAKANA NI
-32E6          ; mapped                 ; 30CC          # 1.1  CIRCLED KATAKANA NU
-32E7          ; mapped                 ; 30CD          # 1.1  CIRCLED KATAKANA NE
-32E8          ; mapped                 ; 30CE          # 1.1  CIRCLED KATAKANA NO
-32E9          ; mapped                 ; 30CF          # 1.1  CIRCLED KATAKANA HA
-32EA          ; mapped                 ; 30D2          # 1.1  CIRCLED KATAKANA HI
-32EB          ; mapped                 ; 30D5          # 1.1  CIRCLED KATAKANA HU
-32EC          ; mapped                 ; 30D8          # 1.1  CIRCLED KATAKANA HE
-32ED          ; mapped                 ; 30DB          # 1.1  CIRCLED KATAKANA HO
-32EE          ; mapped                 ; 30DE          # 1.1  CIRCLED KATAKANA MA
-32EF          ; mapped                 ; 30DF          # 1.1  CIRCLED KATAKANA MI
-32F0          ; mapped                 ; 30E0          # 1.1  CIRCLED KATAKANA MU
-32F1          ; mapped                 ; 30E1          # 1.1  CIRCLED KATAKANA ME
-32F2          ; mapped                 ; 30E2          # 1.1  CIRCLED KATAKANA MO
-32F3          ; mapped                 ; 30E4          # 1.1  CIRCLED KATAKANA YA
-32F4          ; mapped                 ; 30E6          # 1.1  CIRCLED KATAKANA YU
-32F5          ; mapped                 ; 30E8          # 1.1  CIRCLED KATAKANA YO
-32F6          ; mapped                 ; 30E9          # 1.1  CIRCLED KATAKANA RA
-32F7          ; mapped                 ; 30EA          # 1.1  CIRCLED KATAKANA RI
-32F8          ; mapped                 ; 30EB          # 1.1  CIRCLED KATAKANA RU
-32F9          ; mapped                 ; 30EC          # 1.1  CIRCLED KATAKANA RE
-32FA          ; mapped                 ; 30ED          # 1.1  CIRCLED KATAKANA RO
-32FB          ; mapped                 ; 30EF          # 1.1  CIRCLED KATAKANA WA
-32FC          ; mapped                 ; 30F0          # 1.1  CIRCLED KATAKANA WI
-32FD          ; mapped                 ; 30F1          # 1.1  CIRCLED KATAKANA WE
-32FE          ; mapped                 ; 30F2          # 1.1  CIRCLED KATAKANA WO
-32FF          ; mapped                 ; 4EE4 548C     # 12.1 SQUARE ERA NAME REIWA
-3300          ; mapped                 ; 30A2 30D1 30FC 30C8 #1.1 SQUARE APAATO
-3301          ; mapped                 ; 30A2 30EB 30D5 30A1 #1.1 SQUARE ARUHUA
-3302          ; mapped                 ; 30A2 30F3 30DA 30A2 #1.1 SQUARE ANPEA
-3303          ; mapped                 ; 30A2 30FC 30EB #1.1  SQUARE AARU
-3304          ; mapped                 ; 30A4 30CB 30F3 30B0 #1.1 SQUARE ININGU
-3305          ; mapped                 ; 30A4 30F3 30C1 #1.1  SQUARE INTI
-3306          ; mapped                 ; 30A6 30A9 30F3 #1.1  SQUARE UON
-3307          ; mapped                 ; 30A8 30B9 30AF 30FC 30C9 #1.1 SQUARE ESUKUUDO
-3308          ; mapped                 ; 30A8 30FC 30AB 30FC #1.1 SQUARE EEKAA
-3309          ; mapped                 ; 30AA 30F3 30B9 #1.1  SQUARE ONSU
-330A          ; mapped                 ; 30AA 30FC 30E0 #1.1  SQUARE OOMU
-330B          ; mapped                 ; 30AB 30A4 30EA #1.1  SQUARE KAIRI
-330C          ; mapped                 ; 30AB 30E9 30C3 30C8 #1.1 SQUARE KARATTO
-330D          ; mapped                 ; 30AB 30ED 30EA 30FC #1.1 SQUARE KARORII
-330E          ; mapped                 ; 30AC 30ED 30F3 #1.1  SQUARE GARON
-330F          ; mapped                 ; 30AC 30F3 30DE #1.1  SQUARE GANMA
-3310          ; mapped                 ; 30AE 30AC     # 1.1  SQUARE GIGA
-3311          ; mapped                 ; 30AE 30CB 30FC #1.1  SQUARE GINII
-3312          ; mapped                 ; 30AD 30E5 30EA 30FC #1.1 SQUARE KYURII
-3313          ; mapped                 ; 30AE 30EB 30C0 30FC #1.1 SQUARE GIRUDAA
-3314          ; mapped                 ; 30AD 30ED     # 1.1  SQUARE KIRO
-3315          ; mapped                 ; 30AD 30ED 30B0 30E9 30E0 #1.1 SQUARE KIROGURAMU
-3316          ; mapped                 ; 30AD 30ED 30E1 30FC 30C8 30EB #1.1 SQUARE KIROMEETORU
-3317          ; mapped                 ; 30AD 30ED 30EF 30C3 30C8 #1.1 SQUARE KIROWATTO
-3318          ; mapped                 ; 30B0 30E9 30E0 #1.1  SQUARE GURAMU
-3319          ; mapped                 ; 30B0 30E9 30E0 30C8 30F3 #1.1 SQUARE GURAMUTON
-331A          ; mapped                 ; 30AF 30EB 30BC 30A4 30ED #1.1 SQUARE KURUZEIRO
-331B          ; mapped                 ; 30AF 30ED 30FC 30CD #1.1 SQUARE KUROONE
-331C          ; mapped                 ; 30B1 30FC 30B9 #1.1  SQUARE KEESU
-331D          ; mapped                 ; 30B3 30EB 30CA #1.1  SQUARE KORUNA
-331E          ; mapped                 ; 30B3 30FC 30DD #1.1  SQUARE KOOPO
-331F          ; mapped                 ; 30B5 30A4 30AF 30EB #1.1 SQUARE SAIKURU
-3320          ; mapped                 ; 30B5 30F3 30C1 30FC 30E0 #1.1 SQUARE SANTIIMU
-3321          ; mapped                 ; 30B7 30EA 30F3 30B0 #1.1 SQUARE SIRINGU
-3322          ; mapped                 ; 30BB 30F3 30C1 #1.1  SQUARE SENTI
-3323          ; mapped                 ; 30BB 30F3 30C8 #1.1  SQUARE SENTO
-3324          ; mapped                 ; 30C0 30FC 30B9 #1.1  SQUARE DAASU
-3325          ; mapped                 ; 30C7 30B7     # 1.1  SQUARE DESI
-3326          ; mapped                 ; 30C9 30EB     # 1.1  SQUARE DORU
-3327          ; mapped                 ; 30C8 30F3     # 1.1  SQUARE TON
-3328          ; mapped                 ; 30CA 30CE     # 1.1  SQUARE NANO
-3329          ; mapped                 ; 30CE 30C3 30C8 #1.1  SQUARE NOTTO
-332A          ; mapped                 ; 30CF 30A4 30C4 #1.1  SQUARE HAITU
-332B          ; mapped                 ; 30D1 30FC 30BB 30F3 30C8 #1.1 SQUARE PAASENTO
-332C          ; mapped                 ; 30D1 30FC 30C4 #1.1  SQUARE PAATU
-332D          ; mapped                 ; 30D0 30FC 30EC 30EB #1.1 SQUARE BAARERU
-332E          ; mapped                 ; 30D4 30A2 30B9 30C8 30EB #1.1 SQUARE PIASUTORU
-332F          ; mapped                 ; 30D4 30AF 30EB #1.1  SQUARE PIKURU
-3330          ; mapped                 ; 30D4 30B3     # 1.1  SQUARE PIKO
-3331          ; mapped                 ; 30D3 30EB     # 1.1  SQUARE BIRU
-3332          ; mapped                 ; 30D5 30A1 30E9 30C3 30C9 #1.1 SQUARE HUARADDO
-3333          ; mapped                 ; 30D5 30A3 30FC 30C8 #1.1 SQUARE HUIITO
-3334          ; mapped                 ; 30D6 30C3 30B7 30A7 30EB #1.1 SQUARE BUSSYERU
-3335          ; mapped                 ; 30D5 30E9 30F3 #1.1  SQUARE HURAN
-3336          ; mapped                 ; 30D8 30AF 30BF 30FC 30EB #1.1 SQUARE HEKUTAARU
-3337          ; mapped                 ; 30DA 30BD     # 1.1  SQUARE PESO
-3338          ; mapped                 ; 30DA 30CB 30D2 #1.1  SQUARE PENIHI
-3339          ; mapped                 ; 30D8 30EB 30C4 #1.1  SQUARE HERUTU
-333A          ; mapped                 ; 30DA 30F3 30B9 #1.1  SQUARE PENSU
-333B          ; mapped                 ; 30DA 30FC 30B8 #1.1  SQUARE PEEZI
-333C          ; mapped                 ; 30D9 30FC 30BF #1.1  SQUARE BEETA
-333D          ; mapped                 ; 30DD 30A4 30F3 30C8 #1.1 SQUARE POINTO
-333E          ; mapped                 ; 30DC 30EB 30C8 #1.1  SQUARE BORUTO
-333F          ; mapped                 ; 30DB 30F3     # 1.1  SQUARE HON
-3340          ; mapped                 ; 30DD 30F3 30C9 #1.1  SQUARE PONDO
-3341          ; mapped                 ; 30DB 30FC 30EB #1.1  SQUARE HOORU
-3342          ; mapped                 ; 30DB 30FC 30F3 #1.1  SQUARE HOON
-3343          ; mapped                 ; 30DE 30A4 30AF 30ED #1.1 SQUARE MAIKURO
-3344          ; mapped                 ; 30DE 30A4 30EB #1.1  SQUARE MAIRU
-3345          ; mapped                 ; 30DE 30C3 30CF #1.1  SQUARE MAHHA
-3346          ; mapped                 ; 30DE 30EB 30AF #1.1  SQUARE MARUKU
-3347          ; mapped                 ; 30DE 30F3 30B7 30E7 30F3 #1.1 SQUARE MANSYON
-3348          ; mapped                 ; 30DF 30AF 30ED 30F3 #1.1 SQUARE MIKURON
-3349          ; mapped                 ; 30DF 30EA     # 1.1  SQUARE MIRI
-334A          ; mapped                 ; 30DF 30EA 30D0 30FC 30EB #1.1 SQUARE MIRIBAARU
-334B          ; mapped                 ; 30E1 30AC     # 1.1  SQUARE MEGA
-334C          ; mapped                 ; 30E1 30AC 30C8 30F3 #1.1 SQUARE MEGATON
-334D          ; mapped                 ; 30E1 30FC 30C8 30EB #1.1 SQUARE MEETORU
-334E          ; mapped                 ; 30E4 30FC 30C9 #1.1  SQUARE YAADO
-334F          ; mapped                 ; 30E4 30FC 30EB #1.1  SQUARE YAARU
-3350          ; mapped                 ; 30E6 30A2 30F3 #1.1  SQUARE YUAN
-3351          ; mapped                 ; 30EA 30C3 30C8 30EB #1.1 SQUARE RITTORU
-3352          ; mapped                 ; 30EA 30E9     # 1.1  SQUARE RIRA
-3353          ; mapped                 ; 30EB 30D4 30FC #1.1  SQUARE RUPII
-3354          ; mapped                 ; 30EB 30FC 30D6 30EB #1.1 SQUARE RUUBURU
-3355          ; mapped                 ; 30EC 30E0     # 1.1  SQUARE REMU
-3356          ; mapped                 ; 30EC 30F3 30C8 30B2 30F3 #1.1 SQUARE RENTOGEN
-3357          ; mapped                 ; 30EF 30C3 30C8 #1.1  SQUARE WATTO
-3358          ; mapped                 ; 0030 70B9     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
-3359          ; mapped                 ; 0031 70B9     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
-335A          ; mapped                 ; 0032 70B9     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
-335B          ; mapped                 ; 0033 70B9     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
-335C          ; mapped                 ; 0034 70B9     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
-335D          ; mapped                 ; 0035 70B9     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
-335E          ; mapped                 ; 0036 70B9     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
-335F          ; mapped                 ; 0037 70B9     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
-3360          ; mapped                 ; 0038 70B9     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
-3361          ; mapped                 ; 0039 70B9     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
-3362          ; mapped                 ; 0031 0030 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
-3363          ; mapped                 ; 0031 0031 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
-3364          ; mapped                 ; 0031 0032 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
-3365          ; mapped                 ; 0031 0033 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
-3366          ; mapped                 ; 0031 0034 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
-3367          ; mapped                 ; 0031 0035 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
-3368          ; mapped                 ; 0031 0036 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
-3369          ; mapped                 ; 0031 0037 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
-336A          ; mapped                 ; 0031 0038 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
-336B          ; mapped                 ; 0031 0039 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
-336C          ; mapped                 ; 0032 0030 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
-336D          ; mapped                 ; 0032 0031 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
-336E          ; mapped                 ; 0032 0032 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
-336F          ; mapped                 ; 0032 0033 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
-3370          ; mapped                 ; 0032 0034 70B9 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
-3371          ; mapped                 ; 0068 0070 0061 #1.1  SQUARE HPA
-3372          ; mapped                 ; 0064 0061     # 1.1  SQUARE DA
-3373          ; mapped                 ; 0061 0075     # 1.1  SQUARE AU
-3374          ; mapped                 ; 0062 0061 0072 #1.1  SQUARE BAR
-3375          ; mapped                 ; 006F 0076     # 1.1  SQUARE OV
-3376          ; mapped                 ; 0070 0063     # 1.1  SQUARE PC
-3377          ; mapped                 ; 0064 006D     # 4.0  SQUARE DM
-3378          ; mapped                 ; 0064 006D 0032 #4.0  SQUARE DM SQUARED
-3379          ; mapped                 ; 0064 006D 0033 #4.0  SQUARE DM CUBED
-337A          ; mapped                 ; 0069 0075     # 4.0  SQUARE IU
-337B          ; mapped                 ; 5E73 6210     # 1.1  SQUARE ERA NAME HEISEI
-337C          ; mapped                 ; 662D 548C     # 1.1  SQUARE ERA NAME SYOUWA
-337D          ; mapped                 ; 5927 6B63     # 1.1  SQUARE ERA NAME TAISYOU
-337E          ; mapped                 ; 660E 6CBB     # 1.1  SQUARE ERA NAME MEIZI
-337F          ; mapped                 ; 682A 5F0F 4F1A 793E #1.1 SQUARE CORPORATION
-3380          ; mapped                 ; 0070 0061     # 1.1  SQUARE PA AMPS
-3381          ; mapped                 ; 006E 0061     # 1.1  SQUARE NA
-3382          ; mapped                 ; 03BC 0061     # 1.1  SQUARE MU A
-3383          ; mapped                 ; 006D 0061     # 1.1  SQUARE MA
-3384          ; mapped                 ; 006B 0061     # 1.1  SQUARE KA
-3385          ; mapped                 ; 006B 0062     # 1.1  SQUARE KB
-3386          ; mapped                 ; 006D 0062     # 1.1  SQUARE MB
-3387          ; mapped                 ; 0067 0062     # 1.1  SQUARE GB
-3388          ; mapped                 ; 0063 0061 006C #1.1  SQUARE CAL
-3389          ; mapped                 ; 006B 0063 0061 006C #1.1 SQUARE KCAL
-338A          ; mapped                 ; 0070 0066     # 1.1  SQUARE PF
-338B          ; mapped                 ; 006E 0066     # 1.1  SQUARE NF
-338C          ; mapped                 ; 03BC 0066     # 1.1  SQUARE MU F
-338D          ; mapped                 ; 03BC 0067     # 1.1  SQUARE MU G
-338E          ; mapped                 ; 006D 0067     # 1.1  SQUARE MG
-338F          ; mapped                 ; 006B 0067     # 1.1  SQUARE KG
-3390          ; mapped                 ; 0068 007A     # 1.1  SQUARE HZ
-3391          ; mapped                 ; 006B 0068 007A #1.1  SQUARE KHZ
-3392          ; mapped                 ; 006D 0068 007A #1.1  SQUARE MHZ
-3393          ; mapped                 ; 0067 0068 007A #1.1  SQUARE GHZ
-3394          ; mapped                 ; 0074 0068 007A #1.1  SQUARE THZ
-3395          ; mapped                 ; 03BC 006C     # 1.1  SQUARE MU L
-3396          ; mapped                 ; 006D 006C     # 1.1  SQUARE ML
-3397          ; mapped                 ; 0064 006C     # 1.1  SQUARE DL
-3398          ; mapped                 ; 006B 006C     # 1.1  SQUARE KL
-3399          ; mapped                 ; 0066 006D     # 1.1  SQUARE FM
-339A          ; mapped                 ; 006E 006D     # 1.1  SQUARE NM
-339B          ; mapped                 ; 03BC 006D     # 1.1  SQUARE MU M
-339C          ; mapped                 ; 006D 006D     # 1.1  SQUARE MM
-339D          ; mapped                 ; 0063 006D     # 1.1  SQUARE CM
-339E          ; mapped                 ; 006B 006D     # 1.1  SQUARE KM
-339F          ; mapped                 ; 006D 006D 0032 #1.1  SQUARE MM SQUARED
-33A0          ; mapped                 ; 0063 006D 0032 #1.1  SQUARE CM SQUARED
-33A1          ; mapped                 ; 006D 0032     # 1.1  SQUARE M SQUARED
-33A2          ; mapped                 ; 006B 006D 0032 #1.1  SQUARE KM SQUARED
-33A3          ; mapped                 ; 006D 006D 0033 #1.1  SQUARE MM CUBED
-33A4          ; mapped                 ; 0063 006D 0033 #1.1  SQUARE CM CUBED
-33A5          ; mapped                 ; 006D 0033     # 1.1  SQUARE M CUBED
-33A6          ; mapped                 ; 006B 006D 0033 #1.1  SQUARE KM CUBED
-33A7          ; mapped                 ; 006D 2215 0073 #1.1  SQUARE M OVER S
-33A8          ; mapped                 ; 006D 2215 0073 0032 #1.1 SQUARE M OVER S SQUARED
-33A9          ; mapped                 ; 0070 0061     # 1.1  SQUARE PA
-33AA          ; mapped                 ; 006B 0070 0061 #1.1  SQUARE KPA
-33AB          ; mapped                 ; 006D 0070 0061 #1.1  SQUARE MPA
-33AC          ; mapped                 ; 0067 0070 0061 #1.1  SQUARE GPA
-33AD          ; mapped                 ; 0072 0061 0064 #1.1  SQUARE RAD
-33AE          ; mapped                 ; 0072 0061 0064 2215 0073 #1.1 SQUARE RAD OVER S
-33AF          ; mapped                 ; 0072 0061 0064 2215 0073 0032 #1.1 SQUARE RAD OVER S SQUARED
-33B0          ; mapped                 ; 0070 0073     # 1.1  SQUARE PS
-33B1          ; mapped                 ; 006E 0073     # 1.1  SQUARE NS
-33B2          ; mapped                 ; 03BC 0073     # 1.1  SQUARE MU S
-33B3          ; mapped                 ; 006D 0073     # 1.1  SQUARE MS
-33B4          ; mapped                 ; 0070 0076     # 1.1  SQUARE PV
-33B5          ; mapped                 ; 006E 0076     # 1.1  SQUARE NV
-33B6          ; mapped                 ; 03BC 0076     # 1.1  SQUARE MU V
-33B7          ; mapped                 ; 006D 0076     # 1.1  SQUARE MV
-33B8          ; mapped                 ; 006B 0076     # 1.1  SQUARE KV
-33B9          ; mapped                 ; 006D 0076     # 1.1  SQUARE MV MEGA
-33BA          ; mapped                 ; 0070 0077     # 1.1  SQUARE PW
-33BB          ; mapped                 ; 006E 0077     # 1.1  SQUARE NW
-33BC          ; mapped                 ; 03BC 0077     # 1.1  SQUARE MU W
-33BD          ; mapped                 ; 006D 0077     # 1.1  SQUARE MW
-33BE          ; mapped                 ; 006B 0077     # 1.1  SQUARE KW
-33BF          ; mapped                 ; 006D 0077     # 1.1  SQUARE MW MEGA
-33C0          ; mapped                 ; 006B 03C9     # 1.1  SQUARE K OHM
-33C1          ; mapped                 ; 006D 03C9     # 1.1  SQUARE M OHM
-33C2          ; disallowed                             # 1.1  SQUARE AM
-33C3          ; mapped                 ; 0062 0071     # 1.1  SQUARE BQ
-33C4          ; mapped                 ; 0063 0063     # 1.1  SQUARE CC
-33C5          ; mapped                 ; 0063 0064     # 1.1  SQUARE CD
-33C6          ; mapped                 ; 0063 2215 006B 0067 #1.1 SQUARE C OVER KG
-33C7          ; disallowed                             # 1.1  SQUARE CO
-33C8          ; mapped                 ; 0064 0062     # 1.1  SQUARE DB
-33C9          ; mapped                 ; 0067 0079     # 1.1  SQUARE GY
-33CA          ; mapped                 ; 0068 0061     # 1.1  SQUARE HA
-33CB          ; mapped                 ; 0068 0070     # 1.1  SQUARE HP
-33CC          ; mapped                 ; 0069 006E     # 1.1  SQUARE IN
-33CD          ; mapped                 ; 006B 006B     # 1.1  SQUARE KK
-33CE          ; mapped                 ; 006B 006D     # 1.1  SQUARE KM CAPITAL
-33CF          ; mapped                 ; 006B 0074     # 1.1  SQUARE KT
-33D0          ; mapped                 ; 006C 006D     # 1.1  SQUARE LM
-33D1          ; mapped                 ; 006C 006E     # 1.1  SQUARE LN
-33D2          ; mapped                 ; 006C 006F 0067 #1.1  SQUARE LOG
-33D3          ; mapped                 ; 006C 0078     # 1.1  SQUARE LX
-33D4          ; mapped                 ; 006D 0062     # 1.1  SQUARE MB SMALL
-33D5          ; mapped                 ; 006D 0069 006C #1.1  SQUARE MIL
-33D6          ; mapped                 ; 006D 006F 006C #1.1  SQUARE MOL
-33D7          ; mapped                 ; 0070 0068     # 1.1  SQUARE PH
-33D8          ; disallowed                             # 1.1  SQUARE PM
-33D9          ; mapped                 ; 0070 0070 006D #1.1  SQUARE PPM
-33DA          ; mapped                 ; 0070 0072     # 1.1  SQUARE PR
-33DB          ; mapped                 ; 0073 0072     # 1.1  SQUARE SR
-33DC          ; mapped                 ; 0073 0076     # 1.1  SQUARE SV
-33DD          ; mapped                 ; 0077 0062     # 1.1  SQUARE WB
-33DE          ; mapped                 ; 0076 2215 006D #4.0  SQUARE V OVER M
-33DF          ; mapped                 ; 0061 2215 006D #4.0  SQUARE A OVER M
-33E0          ; mapped                 ; 0031 65E5     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
-33E1          ; mapped                 ; 0032 65E5     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
-33E2          ; mapped                 ; 0033 65E5     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
-33E3          ; mapped                 ; 0034 65E5     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
-33E4          ; mapped                 ; 0035 65E5     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
-33E5          ; mapped                 ; 0036 65E5     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
-33E6          ; mapped                 ; 0037 65E5     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
-33E7          ; mapped                 ; 0038 65E5     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
-33E8          ; mapped                 ; 0039 65E5     # 1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
-33E9          ; mapped                 ; 0031 0030 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
-33EA          ; mapped                 ; 0031 0031 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
-33EB          ; mapped                 ; 0031 0032 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
-33EC          ; mapped                 ; 0031 0033 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
-33ED          ; mapped                 ; 0031 0034 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
-33EE          ; mapped                 ; 0031 0035 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
-33EF          ; mapped                 ; 0031 0036 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
-33F0          ; mapped                 ; 0031 0037 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
-33F1          ; mapped                 ; 0031 0038 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
-33F2          ; mapped                 ; 0031 0039 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
-33F3          ; mapped                 ; 0032 0030 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
-33F4          ; mapped                 ; 0032 0031 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
-33F5          ; mapped                 ; 0032 0032 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
-33F6          ; mapped                 ; 0032 0033 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
-33F7          ; mapped                 ; 0032 0034 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
-33F8          ; mapped                 ; 0032 0035 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
-33F9          ; mapped                 ; 0032 0036 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
-33FA          ; mapped                 ; 0032 0037 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
-33FB          ; mapped                 ; 0032 0038 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
-33FC          ; mapped                 ; 0032 0039 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
-33FD          ; mapped                 ; 0033 0030 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
-33FE          ; mapped                 ; 0033 0031 65E5 #1.1  IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
-33FF          ; mapped                 ; 0067 0061 006C #4.0  SQUARE GAL
-3400..4DB5    ; valid                                  # 3.0  CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
-4DB6..4DBF    ; valid                                  # 13.0 CJK UNIFIED IDEOGRAPH-4DB6..CJK UNIFIED IDEOGRAPH-4DBF
-4DC0..4DFF    ; valid                  ;      ; NV8    # 4.0  HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
-4E00..9FA5    ; valid                                  # 1.1  CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FA5
-9FA6..9FBB    ; valid                                  # 4.1  CJK UNIFIED IDEOGRAPH-9FA6..CJK UNIFIED IDEOGRAPH-9FBB
-9FBC..9FC3    ; valid                                  # 5.1  CJK UNIFIED IDEOGRAPH-9FBC..CJK UNIFIED IDEOGRAPH-9FC3
-9FC4..9FCB    ; valid                                  # 5.2  CJK UNIFIED IDEOGRAPH-9FC4..CJK UNIFIED IDEOGRAPH-9FCB
-9FCC          ; valid                                  # 6.1  CJK UNIFIED IDEOGRAPH-9FCC
-9FCD..9FD5    ; valid                                  # 8.0  CJK UNIFIED IDEOGRAPH-9FCD..CJK UNIFIED IDEOGRAPH-9FD5
-9FD6..9FEA    ; valid                                  # 10.0 CJK UNIFIED IDEOGRAPH-9FD6..CJK UNIFIED IDEOGRAPH-9FEA
-9FEB..9FEF    ; valid                                  # 11.0 CJK UNIFIED IDEOGRAPH-9FEB..CJK UNIFIED IDEOGRAPH-9FEF
-9FF0..9FFC    ; valid                                  # 13.0 CJK UNIFIED IDEOGRAPH-9FF0..CJK UNIFIED IDEOGRAPH-9FFC
-9FFD..9FFF    ; disallowed                             # NA   <reserved-9FFD>..<reserved-9FFF>
-A000..A48C    ; valid                                  # 3.0  YI SYLLABLE IT..YI SYLLABLE YYR
-A48D..A48F    ; disallowed                             # NA   <reserved-A48D>..<reserved-A48F>
-A490..A4A1    ; valid                  ;      ; NV8    # 3.0  YI RADICAL QOT..YI RADICAL GA
-A4A2..A4A3    ; valid                  ;      ; NV8    # 3.2  YI RADICAL ZUP..YI RADICAL CYT
-A4A4..A4B3    ; valid                  ;      ; NV8    # 3.0  YI RADICAL DDUR..YI RADICAL JO
-A4B4          ; valid                  ;      ; NV8    # 3.2  YI RADICAL NZUP
-A4B5..A4C0    ; valid                  ;      ; NV8    # 3.0  YI RADICAL JJY..YI RADICAL SHAT
-A4C1          ; valid                  ;      ; NV8    # 3.2  YI RADICAL ZUR
-A4C2..A4C4    ; valid                  ;      ; NV8    # 3.0  YI RADICAL SHOP..YI RADICAL ZZIET
-A4C5          ; valid                  ;      ; NV8    # 3.2  YI RADICAL NBIE
-A4C6          ; valid                  ;      ; NV8    # 3.0  YI RADICAL KE
-A4C7..A4CF    ; disallowed                             # NA   <reserved-A4C7>..<reserved-A4CF>
-A4D0..A4FD    ; valid                                  # 5.2  LISU LETTER BA..LISU LETTER TONE MYA JEU
-A4FE..A4FF    ; valid                  ;      ; NV8    # 5.2  LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
-A500..A60C    ; valid                                  # 5.1  VAI SYLLABLE EE..VAI SYLLABLE LENGTHENER
-A60D..A60F    ; valid                  ;      ; NV8    # 5.1  VAI COMMA..VAI QUESTION MARK
-A610..A62B    ; valid                                  # 5.1  VAI SYLLABLE NDOLE FA..VAI SYLLABLE NDOLE DO
-A62C..A63F    ; disallowed                             # NA   <reserved-A62C>..<reserved-A63F>
-A640          ; mapped                 ; A641          # 5.1  CYRILLIC CAPITAL LETTER ZEMLYA
-A641          ; valid                                  # 5.1  CYRILLIC SMALL LETTER ZEMLYA
-A642          ; mapped                 ; A643          # 5.1  CYRILLIC CAPITAL LETTER DZELO
-A643          ; valid                                  # 5.1  CYRILLIC SMALL LETTER DZELO
-A644          ; mapped                 ; A645          # 5.1  CYRILLIC CAPITAL LETTER REVERSED DZE
-A645          ; valid                                  # 5.1  CYRILLIC SMALL LETTER REVERSED DZE
-A646          ; mapped                 ; A647          # 5.1  CYRILLIC CAPITAL LETTER IOTA
-A647          ; valid                                  # 5.1  CYRILLIC SMALL LETTER IOTA
-A648          ; mapped                 ; A649          # 5.1  CYRILLIC CAPITAL LETTER DJERV
-A649          ; valid                                  # 5.1  CYRILLIC SMALL LETTER DJERV
-A64A          ; mapped                 ; A64B          # 5.1  CYRILLIC CAPITAL LETTER MONOGRAPH UK
-A64B          ; valid                                  # 5.1  CYRILLIC SMALL LETTER MONOGRAPH UK
-A64C          ; mapped                 ; A64D          # 5.1  CYRILLIC CAPITAL LETTER BROAD OMEGA
-A64D          ; valid                                  # 5.1  CYRILLIC SMALL LETTER BROAD OMEGA
-A64E          ; mapped                 ; A64F          # 5.1  CYRILLIC CAPITAL LETTER NEUTRAL YER
-A64F          ; valid                                  # 5.1  CYRILLIC SMALL LETTER NEUTRAL YER
-A650          ; mapped                 ; A651          # 5.1  CYRILLIC CAPITAL LETTER YERU WITH BACK YER
-A651          ; valid                                  # 5.1  CYRILLIC SMALL LETTER YERU WITH BACK YER
-A652          ; mapped                 ; A653          # 5.1  CYRILLIC CAPITAL LETTER IOTIFIED YAT
-A653          ; valid                                  # 5.1  CYRILLIC SMALL LETTER IOTIFIED YAT
-A654          ; mapped                 ; A655          # 5.1  CYRILLIC CAPITAL LETTER REVERSED YU
-A655          ; valid                                  # 5.1  CYRILLIC SMALL LETTER REVERSED YU
-A656          ; mapped                 ; A657          # 5.1  CYRILLIC CAPITAL LETTER IOTIFIED A
-A657          ; valid                                  # 5.1  CYRILLIC SMALL LETTER IOTIFIED A
-A658          ; mapped                 ; A659          # 5.1  CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
-A659          ; valid                                  # 5.1  CYRILLIC SMALL LETTER CLOSED LITTLE YUS
-A65A          ; mapped                 ; A65B          # 5.1  CYRILLIC CAPITAL LETTER BLENDED YUS
-A65B          ; valid                                  # 5.1  CYRILLIC SMALL LETTER BLENDED YUS
-A65C          ; mapped                 ; A65D          # 5.1  CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
-A65D          ; valid                                  # 5.1  CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
-A65E          ; mapped                 ; A65F          # 5.1  CYRILLIC CAPITAL LETTER YN
-A65F          ; valid                                  # 5.1  CYRILLIC SMALL LETTER YN
-A660          ; mapped                 ; A661          # 6.0  CYRILLIC CAPITAL LETTER REVERSED TSE
-A661          ; valid                                  # 6.0  CYRILLIC SMALL LETTER REVERSED TSE
-A662          ; mapped                 ; A663          # 5.1  CYRILLIC CAPITAL LETTER SOFT DE
-A663          ; valid                                  # 5.1  CYRILLIC SMALL LETTER SOFT DE
-A664          ; mapped                 ; A665          # 5.1  CYRILLIC CAPITAL LETTER SOFT EL
-A665          ; valid                                  # 5.1  CYRILLIC SMALL LETTER SOFT EL
-A666          ; mapped                 ; A667          # 5.1  CYRILLIC CAPITAL LETTER SOFT EM
-A667          ; valid                                  # 5.1  CYRILLIC SMALL LETTER SOFT EM
-A668          ; mapped                 ; A669          # 5.1  CYRILLIC CAPITAL LETTER MONOCULAR O
-A669          ; valid                                  # 5.1  CYRILLIC SMALL LETTER MONOCULAR O
-A66A          ; mapped                 ; A66B          # 5.1  CYRILLIC CAPITAL LETTER BINOCULAR O
-A66B          ; valid                                  # 5.1  CYRILLIC SMALL LETTER BINOCULAR O
-A66C          ; mapped                 ; A66D          # 5.1  CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
-A66D..A66F    ; valid                                  # 5.1  CYRILLIC SMALL LETTER DOUBLE MONOCULAR O..COMBINING CYRILLIC VZMET
-A670..A673    ; valid                  ;      ; NV8    # 5.1  COMBINING CYRILLIC TEN MILLIONS SIGN..SLAVONIC ASTERISK
-A674..A67B    ; valid                                  # 6.1  COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA
-A67C..A67D    ; valid                                  # 5.1  COMBINING CYRILLIC KAVYKA..COMBINING CYRILLIC PAYEROK
-A67E          ; valid                  ;      ; NV8    # 5.1  CYRILLIC KAVYKA
-A67F          ; valid                                  # 5.1  CYRILLIC PAYEROK
-A680          ; mapped                 ; A681          # 5.1  CYRILLIC CAPITAL LETTER DWE
-A681          ; valid                                  # 5.1  CYRILLIC SMALL LETTER DWE
-A682          ; mapped                 ; A683          # 5.1  CYRILLIC CAPITAL LETTER DZWE
-A683          ; valid                                  # 5.1  CYRILLIC SMALL LETTER DZWE
-A684          ; mapped                 ; A685          # 5.1  CYRILLIC CAPITAL LETTER ZHWE
-A685          ; valid                                  # 5.1  CYRILLIC SMALL LETTER ZHWE
-A686          ; mapped                 ; A687          # 5.1  CYRILLIC CAPITAL LETTER CCHE
-A687          ; valid                                  # 5.1  CYRILLIC SMALL LETTER CCHE
-A688          ; mapped                 ; A689          # 5.1  CYRILLIC CAPITAL LETTER DZZE
-A689          ; valid                                  # 5.1  CYRILLIC SMALL LETTER DZZE
-A68A          ; mapped                 ; A68B          # 5.1  CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
-A68B          ; valid                                  # 5.1  CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
-A68C          ; mapped                 ; A68D          # 5.1  CYRILLIC CAPITAL LETTER TWE
-A68D          ; valid                                  # 5.1  CYRILLIC SMALL LETTER TWE
-A68E          ; mapped                 ; A68F          # 5.1  CYRILLIC CAPITAL LETTER TSWE
-A68F          ; valid                                  # 5.1  CYRILLIC SMALL LETTER TSWE
-A690          ; mapped                 ; A691          # 5.1  CYRILLIC CAPITAL LETTER TSSE
-A691          ; valid                                  # 5.1  CYRILLIC SMALL LETTER TSSE
-A692          ; mapped                 ; A693          # 5.1  CYRILLIC CAPITAL LETTER TCHE
-A693          ; valid                                  # 5.1  CYRILLIC SMALL LETTER TCHE
-A694          ; mapped                 ; A695          # 5.1  CYRILLIC CAPITAL LETTER HWE
-A695          ; valid                                  # 5.1  CYRILLIC SMALL LETTER HWE
-A696          ; mapped                 ; A697          # 5.1  CYRILLIC CAPITAL LETTER SHWE
-A697          ; valid                                  # 5.1  CYRILLIC SMALL LETTER SHWE
-A698          ; mapped                 ; A699          # 7.0  CYRILLIC CAPITAL LETTER DOUBLE O
-A699          ; valid                                  # 7.0  CYRILLIC SMALL LETTER DOUBLE O
-A69A          ; mapped                 ; A69B          # 7.0  CYRILLIC CAPITAL LETTER CROSSED O
-A69B          ; valid                                  # 7.0  CYRILLIC SMALL LETTER CROSSED O
-A69C          ; mapped                 ; 044A          # 7.0  MODIFIER LETTER CYRILLIC HARD SIGN
-A69D          ; mapped                 ; 044C          # 7.0  MODIFIER LETTER CYRILLIC SOFT SIGN
-A69E          ; valid                                  # 8.0  COMBINING CYRILLIC LETTER EF
-A69F          ; valid                                  # 6.1  COMBINING CYRILLIC LETTER IOTIFIED E
-A6A0..A6E5    ; valid                                  # 5.2  BAMUM LETTER A..BAMUM LETTER KI
-A6E6..A6EF    ; valid                  ;      ; NV8    # 5.2  BAMUM LETTER MO..BAMUM LETTER KOGHOM
-A6F0..A6F1    ; valid                                  # 5.2  BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
-A6F2..A6F7    ; valid                  ;      ; NV8    # 5.2  BAMUM NJAEMLI..BAMUM QUESTION MARK
-A6F8..A6FF    ; disallowed                             # NA   <reserved-A6F8>..<reserved-A6FF>
-A700..A716    ; valid                  ;      ; NV8    # 4.1  MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
-A717..A71A    ; valid                                  # 5.0  MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOWER RIGHT CORNER ANGLE
-A71B..A71F    ; valid                                  # 5.1  MODIFIER LETTER RAISED UP ARROW..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
-A720..A721    ; valid                  ;      ; NV8    # 5.0  MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
-A722          ; mapped                 ; A723          # 5.1  LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
-A723          ; valid                                  # 5.1  LATIN SMALL LETTER EGYPTOLOGICAL ALEF
-A724          ; mapped                 ; A725          # 5.1  LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
-A725          ; valid                                  # 5.1  LATIN SMALL LETTER EGYPTOLOGICAL AIN
-A726          ; mapped                 ; A727          # 5.1  LATIN CAPITAL LETTER HENG
-A727          ; valid                                  # 5.1  LATIN SMALL LETTER HENG
-A728          ; mapped                 ; A729          # 5.1  LATIN CAPITAL LETTER TZ
-A729          ; valid                                  # 5.1  LATIN SMALL LETTER TZ
-A72A          ; mapped                 ; A72B          # 5.1  LATIN CAPITAL LETTER TRESILLO
-A72B          ; valid                                  # 5.1  LATIN SMALL LETTER TRESILLO
-A72C          ; mapped                 ; A72D          # 5.1  LATIN CAPITAL LETTER CUATRILLO
-A72D          ; valid                                  # 5.1  LATIN SMALL LETTER CUATRILLO
-A72E          ; mapped                 ; A72F          # 5.1  LATIN CAPITAL LETTER CUATRILLO WITH COMMA
-A72F..A731    ; valid                                  # 5.1  LATIN SMALL LETTER CUATRILLO WITH COMMA..LATIN LETTER SMALL CAPITAL S
-A732          ; mapped                 ; A733          # 5.1  LATIN CAPITAL LETTER AA
-A733          ; valid                                  # 5.1  LATIN SMALL LETTER AA
-A734          ; mapped                 ; A735          # 5.1  LATIN CAPITAL LETTER AO
-A735          ; valid                                  # 5.1  LATIN SMALL LETTER AO
-A736          ; mapped                 ; A737          # 5.1  LATIN CAPITAL LETTER AU
-A737          ; valid                                  # 5.1  LATIN SMALL LETTER AU
-A738          ; mapped                 ; A739          # 5.1  LATIN CAPITAL LETTER AV
-A739          ; valid                                  # 5.1  LATIN SMALL LETTER AV
-A73A          ; mapped                 ; A73B          # 5.1  LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
-A73B          ; valid                                  # 5.1  LATIN SMALL LETTER AV WITH HORIZONTAL BAR
-A73C          ; mapped                 ; A73D          # 5.1  LATIN CAPITAL LETTER AY
-A73D          ; valid                                  # 5.1  LATIN SMALL LETTER AY
-A73E          ; mapped                 ; A73F          # 5.1  LATIN CAPITAL LETTER REVERSED C WITH DOT
-A73F          ; valid                                  # 5.1  LATIN SMALL LETTER REVERSED C WITH DOT
-A740          ; mapped                 ; A741          # 5.1  LATIN CAPITAL LETTER K WITH STROKE
-A741          ; valid                                  # 5.1  LATIN SMALL LETTER K WITH STROKE
-A742          ; mapped                 ; A743          # 5.1  LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
-A743          ; valid                                  # 5.1  LATIN SMALL LETTER K WITH DIAGONAL STROKE
-A744          ; mapped                 ; A745          # 5.1  LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
-A745          ; valid                                  # 5.1  LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
-A746          ; mapped                 ; A747          # 5.1  LATIN CAPITAL LETTER BROKEN L
-A747          ; valid                                  # 5.1  LATIN SMALL LETTER BROKEN L
-A748          ; mapped                 ; A749          # 5.1  LATIN CAPITAL LETTER L WITH HIGH STROKE
-A749          ; valid                                  # 5.1  LATIN SMALL LETTER L WITH HIGH STROKE
-A74A          ; mapped                 ; A74B          # 5.1  LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
-A74B          ; valid                                  # 5.1  LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
-A74C          ; mapped                 ; A74D          # 5.1  LATIN CAPITAL LETTER O WITH LOOP
-A74D          ; valid                                  # 5.1  LATIN SMALL LETTER O WITH LOOP
-A74E          ; mapped                 ; A74F          # 5.1  LATIN CAPITAL LETTER OO
-A74F          ; valid                                  # 5.1  LATIN SMALL LETTER OO
-A750          ; mapped                 ; A751          # 5.1  LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
-A751          ; valid                                  # 5.1  LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
-A752          ; mapped                 ; A753          # 5.1  LATIN CAPITAL LETTER P WITH FLOURISH
-A753          ; valid                                  # 5.1  LATIN SMALL LETTER P WITH FLOURISH
-A754          ; mapped                 ; A755          # 5.1  LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
-A755          ; valid                                  # 5.1  LATIN SMALL LETTER P WITH SQUIRREL TAIL
-A756          ; mapped                 ; A757          # 5.1  LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
-A757          ; valid                                  # 5.1  LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
-A758          ; mapped                 ; A759          # 5.1  LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
-A759          ; valid                                  # 5.1  LATIN SMALL LETTER Q WITH DIAGONAL STROKE
-A75A          ; mapped                 ; A75B          # 5.1  LATIN CAPITAL LETTER R ROTUNDA
-A75B          ; valid                                  # 5.1  LATIN SMALL LETTER R ROTUNDA
-A75C          ; mapped                 ; A75D          # 5.1  LATIN CAPITAL LETTER RUM ROTUNDA
-A75D          ; valid                                  # 5.1  LATIN SMALL LETTER RUM ROTUNDA
-A75E          ; mapped                 ; A75F          # 5.1  LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
-A75F          ; valid                                  # 5.1  LATIN SMALL LETTER V WITH DIAGONAL STROKE
-A760          ; mapped                 ; A761          # 5.1  LATIN CAPITAL LETTER VY
-A761          ; valid                                  # 5.1  LATIN SMALL LETTER VY
-A762          ; mapped                 ; A763          # 5.1  LATIN CAPITAL LETTER VISIGOTHIC Z
-A763          ; valid                                  # 5.1  LATIN SMALL LETTER VISIGOTHIC Z
-A764          ; mapped                 ; A765          # 5.1  LATIN CAPITAL LETTER THORN WITH STROKE
-A765          ; valid                                  # 5.1  LATIN SMALL LETTER THORN WITH STROKE
-A766          ; mapped                 ; A767          # 5.1  LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
-A767          ; valid                                  # 5.1  LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
-A768          ; mapped                 ; A769          # 5.1  LATIN CAPITAL LETTER VEND
-A769          ; valid                                  # 5.1  LATIN SMALL LETTER VEND
-A76A          ; mapped                 ; A76B          # 5.1  LATIN CAPITAL LETTER ET
-A76B          ; valid                                  # 5.1  LATIN SMALL LETTER ET
-A76C          ; mapped                 ; A76D          # 5.1  LATIN CAPITAL LETTER IS
-A76D          ; valid                                  # 5.1  LATIN SMALL LETTER IS
-A76E          ; mapped                 ; A76F          # 5.1  LATIN CAPITAL LETTER CON
-A76F          ; valid                                  # 5.1  LATIN SMALL LETTER CON
-A770          ; mapped                 ; A76F          # 5.1  MODIFIER LETTER US
-A771..A778    ; valid                                  # 5.1  LATIN SMALL LETTER DUM..LATIN SMALL LETTER UM
-A779          ; mapped                 ; A77A          # 5.1  LATIN CAPITAL LETTER INSULAR D
-A77A          ; valid                                  # 5.1  LATIN SMALL LETTER INSULAR D
-A77B          ; mapped                 ; A77C          # 5.1  LATIN CAPITAL LETTER INSULAR F
-A77C          ; valid                                  # 5.1  LATIN SMALL LETTER INSULAR F
-A77D          ; mapped                 ; 1D79          # 5.1  LATIN CAPITAL LETTER INSULAR G
-A77E          ; mapped                 ; A77F          # 5.1  LATIN CAPITAL LETTER TURNED INSULAR G
-A77F          ; valid                                  # 5.1  LATIN SMALL LETTER TURNED INSULAR G
-A780          ; mapped                 ; A781          # 5.1  LATIN CAPITAL LETTER TURNED L
-A781          ; valid                                  # 5.1  LATIN SMALL LETTER TURNED L
-A782          ; mapped                 ; A783          # 5.1  LATIN CAPITAL LETTER INSULAR R
-A783          ; valid                                  # 5.1  LATIN SMALL LETTER INSULAR R
-A784          ; mapped                 ; A785          # 5.1  LATIN CAPITAL LETTER INSULAR S
-A785          ; valid                                  # 5.1  LATIN SMALL LETTER INSULAR S
-A786          ; mapped                 ; A787          # 5.1  LATIN CAPITAL LETTER INSULAR T
-A787..A788    ; valid                                  # 5.1  LATIN SMALL LETTER INSULAR T..MODIFIER LETTER LOW CIRCUMFLEX ACCENT
-A789..A78A    ; valid                  ;      ; NV8    # 5.1  MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
-A78B          ; mapped                 ; A78C          # 5.1  LATIN CAPITAL LETTER SALTILLO
-A78C          ; valid                                  # 5.1  LATIN SMALL LETTER SALTILLO
-A78D          ; mapped                 ; 0265          # 6.0  LATIN CAPITAL LETTER TURNED H
-A78E          ; valid                                  # 6.0  LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
-A78F          ; valid                                  # 8.0  LATIN LETTER SINOLOGICAL DOT
-A790          ; mapped                 ; A791          # 6.0  LATIN CAPITAL LETTER N WITH DESCENDER
-A791          ; valid                                  # 6.0  LATIN SMALL LETTER N WITH DESCENDER
-A792          ; mapped                 ; A793          # 6.1  LATIN CAPITAL LETTER C WITH BAR
-A793          ; valid                                  # 6.1  LATIN SMALL LETTER C WITH BAR
-A794..A795    ; valid                                  # 7.0  LATIN SMALL LETTER C WITH PALATAL HOOK..LATIN SMALL LETTER H WITH PALATAL HOOK
-A796          ; mapped                 ; A797          # 7.0  LATIN CAPITAL LETTER B WITH FLOURISH
-A797          ; valid                                  # 7.0  LATIN SMALL LETTER B WITH FLOURISH
-A798          ; mapped                 ; A799          # 7.0  LATIN CAPITAL LETTER F WITH STROKE
-A799          ; valid                                  # 7.0  LATIN SMALL LETTER F WITH STROKE
-A79A          ; mapped                 ; A79B          # 7.0  LATIN CAPITAL LETTER VOLAPUK AE
-A79B          ; valid                                  # 7.0  LATIN SMALL LETTER VOLAPUK AE
-A79C          ; mapped                 ; A79D          # 7.0  LATIN CAPITAL LETTER VOLAPUK OE
-A79D          ; valid                                  # 7.0  LATIN SMALL LETTER VOLAPUK OE
-A79E          ; mapped                 ; A79F          # 7.0  LATIN CAPITAL LETTER VOLAPUK UE
-A79F          ; valid                                  # 7.0  LATIN SMALL LETTER VOLAPUK UE
-A7A0          ; mapped                 ; A7A1          # 6.0  LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
-A7A1          ; valid                                  # 6.0  LATIN SMALL LETTER G WITH OBLIQUE STROKE
-A7A2          ; mapped                 ; A7A3          # 6.0  LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
-A7A3          ; valid                                  # 6.0  LATIN SMALL LETTER K WITH OBLIQUE STROKE
-A7A4          ; mapped                 ; A7A5          # 6.0  LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
-A7A5          ; valid                                  # 6.0  LATIN SMALL LETTER N WITH OBLIQUE STROKE
-A7A6          ; mapped                 ; A7A7          # 6.0  LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
-A7A7          ; valid                                  # 6.0  LATIN SMALL LETTER R WITH OBLIQUE STROKE
-A7A8          ; mapped                 ; A7A9          # 6.0  LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
-A7A9          ; valid                                  # 6.0  LATIN SMALL LETTER S WITH OBLIQUE STROKE
-A7AA          ; mapped                 ; 0266          # 6.1  LATIN CAPITAL LETTER H WITH HOOK
-A7AB          ; mapped                 ; 025C          # 7.0  LATIN CAPITAL LETTER REVERSED OPEN E
-A7AC          ; mapped                 ; 0261          # 7.0  LATIN CAPITAL LETTER SCRIPT G
-A7AD          ; mapped                 ; 026C          # 7.0  LATIN CAPITAL LETTER L WITH BELT
-A7AE          ; mapped                 ; 026A          # 9.0  LATIN CAPITAL LETTER SMALL CAPITAL I
-A7AF          ; valid                                  # 11.0 LATIN LETTER SMALL CAPITAL Q
-A7B0          ; mapped                 ; 029E          # 7.0  LATIN CAPITAL LETTER TURNED K
-A7B1          ; mapped                 ; 0287          # 7.0  LATIN CAPITAL LETTER TURNED T
-A7B2          ; mapped                 ; 029D          # 8.0  LATIN CAPITAL LETTER J WITH CROSSED-TAIL
-A7B3          ; mapped                 ; AB53          # 8.0  LATIN CAPITAL LETTER CHI
-A7B4          ; mapped                 ; A7B5          # 8.0  LATIN CAPITAL LETTER BETA
-A7B5          ; valid                                  # 8.0  LATIN SMALL LETTER BETA
-A7B6          ; mapped                 ; A7B7          # 8.0  LATIN CAPITAL LETTER OMEGA
-A7B7          ; valid                                  # 8.0  LATIN SMALL LETTER OMEGA
-A7B8          ; mapped                 ; A7B9          # 11.0 LATIN CAPITAL LETTER U WITH STROKE
-A7B9          ; valid                                  # 11.0 LATIN SMALL LETTER U WITH STROKE
-A7BA          ; mapped                 ; A7BB          # 12.0 LATIN CAPITAL LETTER GLOTTAL A
-A7BB          ; valid                                  # 12.0 LATIN SMALL LETTER GLOTTAL A
-A7BC          ; mapped                 ; A7BD          # 12.0 LATIN CAPITAL LETTER GLOTTAL I
-A7BD          ; valid                                  # 12.0 LATIN SMALL LETTER GLOTTAL I
-A7BE          ; mapped                 ; A7BF          # 12.0 LATIN CAPITAL LETTER GLOTTAL U
-A7BF          ; valid                                  # 12.0 LATIN SMALL LETTER GLOTTAL U
-A7C0..A7C1    ; disallowed                             # NA   <reserved-A7C0>..<reserved-A7C1>
-A7C2          ; mapped                 ; A7C3          # 12.0 LATIN CAPITAL LETTER ANGLICANA W
-A7C3          ; valid                                  # 12.0 LATIN SMALL LETTER ANGLICANA W
-A7C4          ; mapped                 ; A794          # 12.0 LATIN CAPITAL LETTER C WITH PALATAL HOOK
-A7C5          ; mapped                 ; 0282          # 12.0 LATIN CAPITAL LETTER S WITH HOOK
-A7C6          ; mapped                 ; 1D8E          # 12.0 LATIN CAPITAL LETTER Z WITH PALATAL HOOK
-A7C7          ; mapped                 ; A7C8          # 13.0 LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
-A7C8          ; valid                                  # 13.0 LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY
-A7C9          ; mapped                 ; A7CA          # 13.0 LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
-A7CA          ; valid                                  # 13.0 LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
-A7CB..A7F4    ; disallowed                             # NA   <reserved-A7CB>..<reserved-A7F4>
-A7F5          ; mapped                 ; A7F6          # 13.0 LATIN CAPITAL LETTER REVERSED HALF H
-A7F6          ; valid                                  # 13.0 LATIN SMALL LETTER REVERSED HALF H
-A7F7          ; valid                                  # 7.0  LATIN EPIGRAPHIC LETTER SIDEWAYS I
-A7F8          ; mapped                 ; 0127          # 6.1  MODIFIER LETTER CAPITAL H WITH STROKE
-A7F9          ; mapped                 ; 0153          # 6.1  MODIFIER LETTER SMALL LIGATURE OE
-A7FA          ; valid                                  # 6.0  LATIN LETTER SMALL CAPITAL TURNED M
-A7FB..A7FF    ; valid                                  # 5.1  LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M
-A800..A827    ; valid                                  # 4.1  SYLOTI NAGRI LETTER A..SYLOTI NAGRI VOWEL SIGN OO
-A828..A82B    ; valid                  ;      ; NV8    # 4.1  SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
-A82C          ; valid                                  # 13.0 SYLOTI NAGRI SIGN ALTERNATE HASANTA
-A82D..A82F    ; disallowed                             # NA   <reserved-A82D>..<reserved-A82F>
-A830..A839    ; valid                  ;      ; NV8    # 5.2  NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC QUANTITY MARK
-A83A..A83F    ; disallowed                             # NA   <reserved-A83A>..<reserved-A83F>
-A840..A873    ; valid                                  # 5.0  PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
-A874..A877    ; valid                  ;      ; NV8    # 5.0  PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD
-A878..A87F    ; disallowed                             # NA   <reserved-A878>..<reserved-A87F>
-A880..A8C4    ; valid                                  # 5.1  SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VIRAMA
-A8C5          ; valid                                  # 9.0  SAURASHTRA SIGN CANDRABINDU
-A8C6..A8CD    ; disallowed                             # NA   <reserved-A8C6>..<reserved-A8CD>
-A8CE..A8CF    ; valid                  ;      ; NV8    # 5.1  SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
-A8D0..A8D9    ; valid                                  # 5.1  SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
-A8DA..A8DF    ; disallowed                             # NA   <reserved-A8DA>..<reserved-A8DF>
-A8E0..A8F7    ; valid                                  # 5.2  COMBINING DEVANAGARI DIGIT ZERO..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
-A8F8..A8FA    ; valid                  ;      ; NV8    # 5.2  DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET
-A8FB          ; valid                                  # 5.2  DEVANAGARI HEADSTROKE
-A8FC          ; valid                  ;      ; NV8    # 8.0  DEVANAGARI SIGN SIDDHAM
-A8FD          ; valid                                  # 8.0  DEVANAGARI JAIN OM
-A8FE..A8FF    ; valid                                  # 11.0 DEVANAGARI LETTER AY..DEVANAGARI VOWEL SIGN AY
-A900..A92D    ; valid                                  # 5.1  KAYAH LI DIGIT ZERO..KAYAH LI TONE CALYA PLOPHU
-A92E..A92F    ; valid                  ;      ; NV8    # 5.1  KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA
-A930..A953    ; valid                                  # 5.1  REJANG LETTER KA..REJANG VIRAMA
-A954..A95E    ; disallowed                             # NA   <reserved-A954>..<reserved-A95E>
-A95F          ; valid                  ;      ; NV8    # 5.1  REJANG SECTION MARK
-A960..A97C    ; valid                  ;      ; NV8    # 5.2  HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
-A97D..A97F    ; disallowed                             # NA   <reserved-A97D>..<reserved-A97F>
-A980..A9C0    ; valid                                  # 5.2  JAVANESE SIGN PANYANGGA..JAVANESE PANGKON
-A9C1..A9CD    ; valid                  ;      ; NV8    # 5.2  JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH
-A9CE          ; disallowed                             # NA   <reserved-A9CE>
-A9CF..A9D9    ; valid                                  # 5.2  JAVANESE PANGRANGKEP..JAVANESE DIGIT NINE
-A9DA..A9DD    ; disallowed                             # NA   <reserved-A9DA>..<reserved-A9DD>
-A9DE..A9DF    ; valid                  ;      ; NV8    # 5.2  JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN
-A9E0..A9FE    ; valid                                  # 7.0  MYANMAR LETTER SHAN GHA..MYANMAR LETTER TAI LAING BHA
-A9FF          ; disallowed                             # NA   <reserved-A9FF>
-AA00..AA36    ; valid                                  # 5.1  CHAM LETTER A..CHAM CONSONANT SIGN WA
-AA37..AA3F    ; disallowed                             # NA   <reserved-AA37>..<reserved-AA3F>
-AA40..AA4D    ; valid                                  # 5.1  CHAM LETTER FINAL K..CHAM CONSONANT SIGN FINAL H
-AA4E..AA4F    ; disallowed                             # NA   <reserved-AA4E>..<reserved-AA4F>
-AA50..AA59    ; valid                                  # 5.1  CHAM DIGIT ZERO..CHAM DIGIT NINE
-AA5A..AA5B    ; disallowed                             # NA   <reserved-AA5A>..<reserved-AA5B>
-AA5C..AA5F    ; valid                  ;      ; NV8    # 5.1  CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA
-AA60..AA76    ; valid                                  # 5.2  MYANMAR LETTER KHAMTI GA..MYANMAR LOGOGRAM KHAMTI HM
-AA77..AA79    ; valid                  ;      ; NV8    # 5.2  MYANMAR SYMBOL AITON EXCLAMATION..MYANMAR SYMBOL AITON TWO
-AA7A..AA7B    ; valid                                  # 5.2  MYANMAR LETTER AITON RA..MYANMAR SIGN PAO KAREN TONE
-AA7C..AA7F    ; valid                                  # 7.0  MYANMAR SIGN TAI LAING TONE-2..MYANMAR LETTER SHWE PALAUNG SHA
-AA80..AAC2    ; valid                                  # 5.2  TAI VIET LETTER LOW KO..TAI VIET TONE MAI SONG
-AAC3..AADA    ; disallowed                             # NA   <reserved-AAC3>..<reserved-AADA>
-AADB..AADD    ; valid                                  # 5.2  TAI VIET SYMBOL KON..TAI VIET SYMBOL SAM
-AADE..AADF    ; valid                  ;      ; NV8    # 5.2  TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI
-AAE0..AAEF    ; valid                                  # 6.1  MEETEI MAYEK LETTER E..MEETEI MAYEK VOWEL SIGN AAU
-AAF0..AAF1    ; valid                  ;      ; NV8    # 6.1  MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM
-AAF2..AAF6    ; valid                                  # 6.1  MEETEI MAYEK ANJI..MEETEI MAYEK VIRAMA
-AAF7..AB00    ; disallowed                             # NA   <reserved-AAF7>..<reserved-AB00>
-AB01..AB06    ; valid                                  # 6.0  ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
-AB07..AB08    ; disallowed                             # NA   <reserved-AB07>..<reserved-AB08>
-AB09..AB0E    ; valid                                  # 6.0  ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
-AB0F..AB10    ; disallowed                             # NA   <reserved-AB0F>..<reserved-AB10>
-AB11..AB16    ; valid                                  # 6.0  ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
-AB17..AB1F    ; disallowed                             # NA   <reserved-AB17>..<reserved-AB1F>
-AB20..AB26    ; valid                                  # 6.0  ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
-AB27          ; disallowed                             # NA   <reserved-AB27>
-AB28..AB2E    ; valid                                  # 6.0  ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
-AB2F          ; disallowed                             # NA   <reserved-AB2F>
-AB30..AB5A    ; valid                                  # 7.0  LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
-AB5B          ; valid                  ;      ; NV8    # 7.0  MODIFIER BREVE WITH INVERTED BREVE
-AB5C          ; mapped                 ; A727          # 7.0  MODIFIER LETTER SMALL HENG
-AB5D          ; mapped                 ; AB37          # 7.0  MODIFIER LETTER SMALL L WITH INVERTED LAZY S
-AB5E          ; mapped                 ; 026B          # 7.0  MODIFIER LETTER SMALL L WITH MIDDLE TILDE
-AB5F          ; mapped                 ; AB52          # 7.0  MODIFIER LETTER SMALL U WITH LEFT HOOK
-AB60..AB63    ; valid                                  # 8.0  LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER UO
-AB64..AB65    ; valid                                  # 7.0  LATIN SMALL LETTER INVERTED ALPHA..GREEK LETTER SMALL CAPITAL OMEGA
-AB66..AB67    ; valid                                  # 12.0 LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK..LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK
-AB68          ; valid                                  # 13.0 LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
-AB69          ; mapped                 ; 028D          # 13.0 MODIFIER LETTER SMALL TURNED W
-AB6A..AB6B    ; valid                  ;      ; NV8    # 13.0 MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK
-AB6C..AB6F    ; disallowed                             # NA   <reserved-AB6C>..<reserved-AB6F>
-AB70          ; mapped                 ; 13A0          # 8.0  CHEROKEE SMALL LETTER A
-AB71          ; mapped                 ; 13A1          # 8.0  CHEROKEE SMALL LETTER E
-AB72          ; mapped                 ; 13A2          # 8.0  CHEROKEE SMALL LETTER I
-AB73          ; mapped                 ; 13A3          # 8.0  CHEROKEE SMALL LETTER O
-AB74          ; mapped                 ; 13A4          # 8.0  CHEROKEE SMALL LETTER U
-AB75          ; mapped                 ; 13A5          # 8.0  CHEROKEE SMALL LETTER V
-AB76          ; mapped                 ; 13A6          # 8.0  CHEROKEE SMALL LETTER GA
-AB77          ; mapped                 ; 13A7          # 8.0  CHEROKEE SMALL LETTER KA
-AB78          ; mapped                 ; 13A8          # 8.0  CHEROKEE SMALL LETTER GE
-AB79          ; mapped                 ; 13A9          # 8.0  CHEROKEE SMALL LETTER GI
-AB7A          ; mapped                 ; 13AA          # 8.0  CHEROKEE SMALL LETTER GO
-AB7B          ; mapped                 ; 13AB          # 8.0  CHEROKEE SMALL LETTER GU
-AB7C          ; mapped                 ; 13AC          # 8.0  CHEROKEE SMALL LETTER GV
-AB7D          ; mapped                 ; 13AD          # 8.0  CHEROKEE SMALL LETTER HA
-AB7E          ; mapped                 ; 13AE          # 8.0  CHEROKEE SMALL LETTER HE
-AB7F          ; mapped                 ; 13AF          # 8.0  CHEROKEE SMALL LETTER HI
-AB80          ; mapped                 ; 13B0          # 8.0  CHEROKEE SMALL LETTER HO
-AB81          ; mapped                 ; 13B1          # 8.0  CHEROKEE SMALL LETTER HU
-AB82          ; mapped                 ; 13B2          # 8.0  CHEROKEE SMALL LETTER HV
-AB83          ; mapped                 ; 13B3          # 8.0  CHEROKEE SMALL LETTER LA
-AB84          ; mapped                 ; 13B4          # 8.0  CHEROKEE SMALL LETTER LE
-AB85          ; mapped                 ; 13B5          # 8.0  CHEROKEE SMALL LETTER LI
-AB86          ; mapped                 ; 13B6          # 8.0  CHEROKEE SMALL LETTER LO
-AB87          ; mapped                 ; 13B7          # 8.0  CHEROKEE SMALL LETTER LU
-AB88          ; mapped                 ; 13B8          # 8.0  CHEROKEE SMALL LETTER LV
-AB89          ; mapped                 ; 13B9          # 8.0  CHEROKEE SMALL LETTER MA
-AB8A          ; mapped                 ; 13BA          # 8.0  CHEROKEE SMALL LETTER ME
-AB8B          ; mapped                 ; 13BB          # 8.0  CHEROKEE SMALL LETTER MI
-AB8C          ; mapped                 ; 13BC          # 8.0  CHEROKEE SMALL LETTER MO
-AB8D          ; mapped                 ; 13BD          # 8.0  CHEROKEE SMALL LETTER MU
-AB8E          ; mapped                 ; 13BE          # 8.0  CHEROKEE SMALL LETTER NA
-AB8F          ; mapped                 ; 13BF          # 8.0  CHEROKEE SMALL LETTER HNA
-AB90          ; mapped                 ; 13C0          # 8.0  CHEROKEE SMALL LETTER NAH
-AB91          ; mapped                 ; 13C1          # 8.0  CHEROKEE SMALL LETTER NE
-AB92          ; mapped                 ; 13C2          # 8.0  CHEROKEE SMALL LETTER NI
-AB93          ; mapped                 ; 13C3          # 8.0  CHEROKEE SMALL LETTER NO
-AB94          ; mapped                 ; 13C4          # 8.0  CHEROKEE SMALL LETTER NU
-AB95          ; mapped                 ; 13C5          # 8.0  CHEROKEE SMALL LETTER NV
-AB96          ; mapped                 ; 13C6          # 8.0  CHEROKEE SMALL LETTER QUA
-AB97          ; mapped                 ; 13C7          # 8.0  CHEROKEE SMALL LETTER QUE
-AB98          ; mapped                 ; 13C8          # 8.0  CHEROKEE SMALL LETTER QUI
-AB99          ; mapped                 ; 13C9          # 8.0  CHEROKEE SMALL LETTER QUO
-AB9A          ; mapped                 ; 13CA          # 8.0  CHEROKEE SMALL LETTER QUU
-AB9B          ; mapped                 ; 13CB          # 8.0  CHEROKEE SMALL LETTER QUV
-AB9C          ; mapped                 ; 13CC          # 8.0  CHEROKEE SMALL LETTER SA
-AB9D          ; mapped                 ; 13CD          # 8.0  CHEROKEE SMALL LETTER S
-AB9E          ; mapped                 ; 13CE          # 8.0  CHEROKEE SMALL LETTER SE
-AB9F          ; mapped                 ; 13CF          # 8.0  CHEROKEE SMALL LETTER SI
-ABA0          ; mapped                 ; 13D0          # 8.0  CHEROKEE SMALL LETTER SO
-ABA1          ; mapped                 ; 13D1          # 8.0  CHEROKEE SMALL LETTER SU
-ABA2          ; mapped                 ; 13D2          # 8.0  CHEROKEE SMALL LETTER SV
-ABA3          ; mapped                 ; 13D3          # 8.0  CHEROKEE SMALL LETTER DA
-ABA4          ; mapped                 ; 13D4          # 8.0  CHEROKEE SMALL LETTER TA
-ABA5          ; mapped                 ; 13D5          # 8.0  CHEROKEE SMALL LETTER DE
-ABA6          ; mapped                 ; 13D6          # 8.0  CHEROKEE SMALL LETTER TE
-ABA7          ; mapped                 ; 13D7          # 8.0  CHEROKEE SMALL LETTER DI
-ABA8          ; mapped                 ; 13D8          # 8.0  CHEROKEE SMALL LETTER TI
-ABA9          ; mapped                 ; 13D9          # 8.0  CHEROKEE SMALL LETTER DO
-ABAA          ; mapped                 ; 13DA          # 8.0  CHEROKEE SMALL LETTER DU
-ABAB          ; mapped                 ; 13DB          # 8.0  CHEROKEE SMALL LETTER DV
-ABAC          ; mapped                 ; 13DC          # 8.0  CHEROKEE SMALL LETTER DLA
-ABAD          ; mapped                 ; 13DD          # 8.0  CHEROKEE SMALL LETTER TLA
-ABAE          ; mapped                 ; 13DE          # 8.0  CHEROKEE SMALL LETTER TLE
-ABAF          ; mapped                 ; 13DF          # 8.0  CHEROKEE SMALL LETTER TLI
-ABB0          ; mapped                 ; 13E0          # 8.0  CHEROKEE SMALL LETTER TLO
-ABB1          ; mapped                 ; 13E1          # 8.0  CHEROKEE SMALL LETTER TLU
-ABB2          ; mapped                 ; 13E2          # 8.0  CHEROKEE SMALL LETTER TLV
-ABB3          ; mapped                 ; 13E3          # 8.0  CHEROKEE SMALL LETTER TSA
-ABB4          ; mapped                 ; 13E4          # 8.0  CHEROKEE SMALL LETTER TSE
-ABB5          ; mapped                 ; 13E5          # 8.0  CHEROKEE SMALL LETTER TSI
-ABB6          ; mapped                 ; 13E6          # 8.0  CHEROKEE SMALL LETTER TSO
-ABB7          ; mapped                 ; 13E7          # 8.0  CHEROKEE SMALL LETTER TSU
-ABB8          ; mapped                 ; 13E8          # 8.0  CHEROKEE SMALL LETTER TSV
-ABB9          ; mapped                 ; 13E9          # 8.0  CHEROKEE SMALL LETTER WA
-ABBA          ; mapped                 ; 13EA          # 8.0  CHEROKEE SMALL LETTER WE
-ABBB          ; mapped                 ; 13EB          # 8.0  CHEROKEE SMALL LETTER WI
-ABBC          ; mapped                 ; 13EC          # 8.0  CHEROKEE SMALL LETTER WO
-ABBD          ; mapped                 ; 13ED          # 8.0  CHEROKEE SMALL LETTER WU
-ABBE          ; mapped                 ; 13EE          # 8.0  CHEROKEE SMALL LETTER WV
-ABBF          ; mapped                 ; 13EF          # 8.0  CHEROKEE SMALL LETTER YA
-ABC0..ABEA    ; valid                                  # 5.2  MEETEI MAYEK LETTER KOK..MEETEI MAYEK VOWEL SIGN NUNG
-ABEB          ; valid                  ;      ; NV8    # 5.2  MEETEI MAYEK CHEIKHEI
-ABEC..ABED    ; valid                                  # 5.2  MEETEI MAYEK LUM IYEK..MEETEI MAYEK APUN IYEK
-ABEE..ABEF    ; disallowed                             # NA   <reserved-ABEE>..<reserved-ABEF>
-ABF0..ABF9    ; valid                                  # 5.2  MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
-ABFA..ABFF    ; disallowed                             # NA   <reserved-ABFA>..<reserved-ABFF>
-AC00..D7A3    ; valid                                  # 2.0  HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
-D7A4..D7AF    ; disallowed                             # NA   <reserved-D7A4>..<reserved-D7AF>
-D7B0..D7C6    ; valid                  ;      ; NV8    # 5.2  HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
-D7C7..D7CA    ; disallowed                             # NA   <reserved-D7C7>..<reserved-D7CA>
-D7CB..D7FB    ; valid                  ;      ; NV8    # 5.2  HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
-D7FC..D7FF    ; disallowed                             # NA   <reserved-D7FC>..<reserved-D7FF>
-D800..DFFF    ; disallowed                             # 2.0  <surrogate-D800>..<surrogate-DFFF>
-E000..F8FF    ; disallowed                             # 1.1  <private-use-E000>..<private-use-F8FF>
-F900          ; mapped                 ; 8C48          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F900
-F901          ; mapped                 ; 66F4          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F901
-F902          ; mapped                 ; 8ECA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F902
-F903          ; mapped                 ; 8CC8          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F903
-F904          ; mapped                 ; 6ED1          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F904
-F905          ; mapped                 ; 4E32          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F905
-F906          ; mapped                 ; 53E5          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F906
-F907..F908    ; mapped                 ; 9F9C          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F907..CJK COMPATIBILITY IDEOGRAPH-F908
-F909          ; mapped                 ; 5951          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F909
-F90A          ; mapped                 ; 91D1          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F90A
-F90B          ; mapped                 ; 5587          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F90B
-F90C          ; mapped                 ; 5948          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F90C
-F90D          ; mapped                 ; 61F6          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F90D
-F90E          ; mapped                 ; 7669          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F90E
-F90F          ; mapped                 ; 7F85          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F90F
-F910          ; mapped                 ; 863F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F910
-F911          ; mapped                 ; 87BA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F911
-F912          ; mapped                 ; 88F8          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F912
-F913          ; mapped                 ; 908F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F913
-F914          ; mapped                 ; 6A02          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F914
-F915          ; mapped                 ; 6D1B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F915
-F916          ; mapped                 ; 70D9          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F916
-F917          ; mapped                 ; 73DE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F917
-F918          ; mapped                 ; 843D          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F918
-F919          ; mapped                 ; 916A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F919
-F91A          ; mapped                 ; 99F1          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F91A
-F91B          ; mapped                 ; 4E82          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F91B
-F91C          ; mapped                 ; 5375          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F91C
-F91D          ; mapped                 ; 6B04          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F91D
-F91E          ; mapped                 ; 721B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F91E
-F91F          ; mapped                 ; 862D          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F91F
-F920          ; mapped                 ; 9E1E          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F920
-F921          ; mapped                 ; 5D50          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F921
-F922          ; mapped                 ; 6FEB          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F922
-F923          ; mapped                 ; 85CD          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F923
-F924          ; mapped                 ; 8964          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F924
-F925          ; mapped                 ; 62C9          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F925
-F926          ; mapped                 ; 81D8          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F926
-F927          ; mapped                 ; 881F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F927
-F928          ; mapped                 ; 5ECA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F928
-F929          ; mapped                 ; 6717          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F929
-F92A          ; mapped                 ; 6D6A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F92A
-F92B          ; mapped                 ; 72FC          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F92B
-F92C          ; mapped                 ; 90CE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F92C
-F92D          ; mapped                 ; 4F86          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F92D
-F92E          ; mapped                 ; 51B7          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F92E
-F92F          ; mapped                 ; 52DE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F92F
-F930          ; mapped                 ; 64C4          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F930
-F931          ; mapped                 ; 6AD3          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F931
-F932          ; mapped                 ; 7210          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F932
-F933          ; mapped                 ; 76E7          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F933
-F934          ; mapped                 ; 8001          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F934
-F935          ; mapped                 ; 8606          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F935
-F936          ; mapped                 ; 865C          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F936
-F937          ; mapped                 ; 8DEF          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F937
-F938          ; mapped                 ; 9732          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F938
-F939          ; mapped                 ; 9B6F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F939
-F93A          ; mapped                 ; 9DFA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F93A
-F93B          ; mapped                 ; 788C          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F93B
-F93C          ; mapped                 ; 797F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F93C
-F93D          ; mapped                 ; 7DA0          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F93D
-F93E          ; mapped                 ; 83C9          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F93E
-F93F          ; mapped                 ; 9304          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F93F
-F940          ; mapped                 ; 9E7F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F940
-F941          ; mapped                 ; 8AD6          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F941
-F942          ; mapped                 ; 58DF          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F942
-F943          ; mapped                 ; 5F04          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F943
-F944          ; mapped                 ; 7C60          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F944
-F945          ; mapped                 ; 807E          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F945
-F946          ; mapped                 ; 7262          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F946
-F947          ; mapped                 ; 78CA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F947
-F948          ; mapped                 ; 8CC2          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F948
-F949          ; mapped                 ; 96F7          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F949
-F94A          ; mapped                 ; 58D8          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F94A
-F94B          ; mapped                 ; 5C62          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F94B
-F94C          ; mapped                 ; 6A13          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F94C
-F94D          ; mapped                 ; 6DDA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F94D
-F94E          ; mapped                 ; 6F0F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F94E
-F94F          ; mapped                 ; 7D2F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F94F
-F950          ; mapped                 ; 7E37          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F950
-F951          ; mapped                 ; 964B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F951
-F952          ; mapped                 ; 52D2          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F952
-F953          ; mapped                 ; 808B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F953
-F954          ; mapped                 ; 51DC          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F954
-F955          ; mapped                 ; 51CC          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F955
-F956          ; mapped                 ; 7A1C          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F956
-F957          ; mapped                 ; 7DBE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F957
-F958          ; mapped                 ; 83F1          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F958
-F959          ; mapped                 ; 9675          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F959
-F95A          ; mapped                 ; 8B80          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F95A
-F95B          ; mapped                 ; 62CF          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F95B
-F95C          ; mapped                 ; 6A02          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F95C
-F95D          ; mapped                 ; 8AFE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F95D
-F95E          ; mapped                 ; 4E39          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F95E
-F95F          ; mapped                 ; 5BE7          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F95F
-F960          ; mapped                 ; 6012          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F960
-F961          ; mapped                 ; 7387          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F961
-F962          ; mapped                 ; 7570          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F962
-F963          ; mapped                 ; 5317          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F963
-F964          ; mapped                 ; 78FB          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F964
-F965          ; mapped                 ; 4FBF          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F965
-F966          ; mapped                 ; 5FA9          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F966
-F967          ; mapped                 ; 4E0D          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F967
-F968          ; mapped                 ; 6CCC          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F968
-F969          ; mapped                 ; 6578          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F969
-F96A          ; mapped                 ; 7D22          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F96A
-F96B          ; mapped                 ; 53C3          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F96B
-F96C          ; mapped                 ; 585E          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F96C
-F96D          ; mapped                 ; 7701          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F96D
-F96E          ; mapped                 ; 8449          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F96E
-F96F          ; mapped                 ; 8AAA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F96F
-F970          ; mapped                 ; 6BBA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F970
-F971          ; mapped                 ; 8FB0          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F971
-F972          ; mapped                 ; 6C88          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F972
-F973          ; mapped                 ; 62FE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F973
-F974          ; mapped                 ; 82E5          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F974
-F975          ; mapped                 ; 63A0          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F975
-F976          ; mapped                 ; 7565          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F976
-F977          ; mapped                 ; 4EAE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F977
-F978          ; mapped                 ; 5169          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F978
-F979          ; mapped                 ; 51C9          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F979
-F97A          ; mapped                 ; 6881          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F97A
-F97B          ; mapped                 ; 7CE7          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F97B
-F97C          ; mapped                 ; 826F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F97C
-F97D          ; mapped                 ; 8AD2          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F97D
-F97E          ; mapped                 ; 91CF          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F97E
-F97F          ; mapped                 ; 52F5          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F97F
-F980          ; mapped                 ; 5442          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F980
-F981          ; mapped                 ; 5973          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F981
-F982          ; mapped                 ; 5EEC          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F982
-F983          ; mapped                 ; 65C5          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F983
-F984          ; mapped                 ; 6FFE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F984
-F985          ; mapped                 ; 792A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F985
-F986          ; mapped                 ; 95AD          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F986
-F987          ; mapped                 ; 9A6A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F987
-F988          ; mapped                 ; 9E97          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F988
-F989          ; mapped                 ; 9ECE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F989
-F98A          ; mapped                 ; 529B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F98A
-F98B          ; mapped                 ; 66C6          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F98B
-F98C          ; mapped                 ; 6B77          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F98C
-F98D          ; mapped                 ; 8F62          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F98D
-F98E          ; mapped                 ; 5E74          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F98E
-F98F          ; mapped                 ; 6190          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F98F
-F990          ; mapped                 ; 6200          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F990
-F991          ; mapped                 ; 649A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F991
-F992          ; mapped                 ; 6F23          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F992
-F993          ; mapped                 ; 7149          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F993
-F994          ; mapped                 ; 7489          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F994
-F995          ; mapped                 ; 79CA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F995
-F996          ; mapped                 ; 7DF4          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F996
-F997          ; mapped                 ; 806F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F997
-F998          ; mapped                 ; 8F26          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F998
-F999          ; mapped                 ; 84EE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F999
-F99A          ; mapped                 ; 9023          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F99A
-F99B          ; mapped                 ; 934A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F99B
-F99C          ; mapped                 ; 5217          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F99C
-F99D          ; mapped                 ; 52A3          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F99D
-F99E          ; mapped                 ; 54BD          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F99E
-F99F          ; mapped                 ; 70C8          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F99F
-F9A0          ; mapped                 ; 88C2          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9A0
-F9A1          ; mapped                 ; 8AAA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9A1
-F9A2          ; mapped                 ; 5EC9          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9A2
-F9A3          ; mapped                 ; 5FF5          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9A3
-F9A4          ; mapped                 ; 637B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9A4
-F9A5          ; mapped                 ; 6BAE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9A5
-F9A6          ; mapped                 ; 7C3E          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9A6
-F9A7          ; mapped                 ; 7375          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9A7
-F9A8          ; mapped                 ; 4EE4          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9A8
-F9A9          ; mapped                 ; 56F9          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9A9
-F9AA          ; mapped                 ; 5BE7          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9AA
-F9AB          ; mapped                 ; 5DBA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9AB
-F9AC          ; mapped                 ; 601C          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9AC
-F9AD          ; mapped                 ; 73B2          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9AD
-F9AE          ; mapped                 ; 7469          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9AE
-F9AF          ; mapped                 ; 7F9A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9AF
-F9B0          ; mapped                 ; 8046          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9B0
-F9B1          ; mapped                 ; 9234          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9B1
-F9B2          ; mapped                 ; 96F6          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9B2
-F9B3          ; mapped                 ; 9748          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9B3
-F9B4          ; mapped                 ; 9818          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9B4
-F9B5          ; mapped                 ; 4F8B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9B5
-F9B6          ; mapped                 ; 79AE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9B6
-F9B7          ; mapped                 ; 91B4          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9B7
-F9B8          ; mapped                 ; 96B8          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9B8
-F9B9          ; mapped                 ; 60E1          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9B9
-F9BA          ; mapped                 ; 4E86          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9BA
-F9BB          ; mapped                 ; 50DA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9BB
-F9BC          ; mapped                 ; 5BEE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9BC
-F9BD          ; mapped                 ; 5C3F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9BD
-F9BE          ; mapped                 ; 6599          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9BE
-F9BF          ; mapped                 ; 6A02          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9BF
-F9C0          ; mapped                 ; 71CE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9C0
-F9C1          ; mapped                 ; 7642          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9C1
-F9C2          ; mapped                 ; 84FC          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9C2
-F9C3          ; mapped                 ; 907C          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9C3
-F9C4          ; mapped                 ; 9F8D          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9C4
-F9C5          ; mapped                 ; 6688          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9C5
-F9C6          ; mapped                 ; 962E          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9C6
-F9C7          ; mapped                 ; 5289          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9C7
-F9C8          ; mapped                 ; 677B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9C8
-F9C9          ; mapped                 ; 67F3          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9C9
-F9CA          ; mapped                 ; 6D41          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9CA
-F9CB          ; mapped                 ; 6E9C          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9CB
-F9CC          ; mapped                 ; 7409          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9CC
-F9CD          ; mapped                 ; 7559          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9CD
-F9CE          ; mapped                 ; 786B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9CE
-F9CF          ; mapped                 ; 7D10          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9CF
-F9D0          ; mapped                 ; 985E          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9D0
-F9D1          ; mapped                 ; 516D          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9D1
-F9D2          ; mapped                 ; 622E          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9D2
-F9D3          ; mapped                 ; 9678          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9D3
-F9D4          ; mapped                 ; 502B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9D4
-F9D5          ; mapped                 ; 5D19          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9D5
-F9D6          ; mapped                 ; 6DEA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9D6
-F9D7          ; mapped                 ; 8F2A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9D7
-F9D8          ; mapped                 ; 5F8B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9D8
-F9D9          ; mapped                 ; 6144          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9D9
-F9DA          ; mapped                 ; 6817          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9DA
-F9DB          ; mapped                 ; 7387          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9DB
-F9DC          ; mapped                 ; 9686          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9DC
-F9DD          ; mapped                 ; 5229          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9DD
-F9DE          ; mapped                 ; 540F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9DE
-F9DF          ; mapped                 ; 5C65          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9DF
-F9E0          ; mapped                 ; 6613          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9E0
-F9E1          ; mapped                 ; 674E          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9E1
-F9E2          ; mapped                 ; 68A8          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9E2
-F9E3          ; mapped                 ; 6CE5          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9E3
-F9E4          ; mapped                 ; 7406          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9E4
-F9E5          ; mapped                 ; 75E2          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9E5
-F9E6          ; mapped                 ; 7F79          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9E6
-F9E7          ; mapped                 ; 88CF          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9E7
-F9E8          ; mapped                 ; 88E1          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9E8
-F9E9          ; mapped                 ; 91CC          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9E9
-F9EA          ; mapped                 ; 96E2          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9EA
-F9EB          ; mapped                 ; 533F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9EB
-F9EC          ; mapped                 ; 6EBA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9EC
-F9ED          ; mapped                 ; 541D          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9ED
-F9EE          ; mapped                 ; 71D0          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9EE
-F9EF          ; mapped                 ; 7498          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9EF
-F9F0          ; mapped                 ; 85FA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9F0
-F9F1          ; mapped                 ; 96A3          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9F1
-F9F2          ; mapped                 ; 9C57          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9F2
-F9F3          ; mapped                 ; 9E9F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9F3
-F9F4          ; mapped                 ; 6797          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9F4
-F9F5          ; mapped                 ; 6DCB          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9F5
-F9F6          ; mapped                 ; 81E8          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9F6
-F9F7          ; mapped                 ; 7ACB          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9F7
-F9F8          ; mapped                 ; 7B20          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9F8
-F9F9          ; mapped                 ; 7C92          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9F9
-F9FA          ; mapped                 ; 72C0          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9FA
-F9FB          ; mapped                 ; 7099          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9FB
-F9FC          ; mapped                 ; 8B58          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9FC
-F9FD          ; mapped                 ; 4EC0          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9FD
-F9FE          ; mapped                 ; 8336          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9FE
-F9FF          ; mapped                 ; 523A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-F9FF
-FA00          ; mapped                 ; 5207          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA00
-FA01          ; mapped                 ; 5EA6          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA01
-FA02          ; mapped                 ; 62D3          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA02
-FA03          ; mapped                 ; 7CD6          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA03
-FA04          ; mapped                 ; 5B85          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA04
-FA05          ; mapped                 ; 6D1E          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA05
-FA06          ; mapped                 ; 66B4          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA06
-FA07          ; mapped                 ; 8F3B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA07
-FA08          ; mapped                 ; 884C          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA08
-FA09          ; mapped                 ; 964D          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA09
-FA0A          ; mapped                 ; 898B          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA0A
-FA0B          ; mapped                 ; 5ED3          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA0B
-FA0C          ; mapped                 ; 5140          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA0C
-FA0D          ; mapped                 ; 55C0          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA0D
-FA0E..FA0F    ; valid                                  # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
-FA10          ; mapped                 ; 585A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA10
-FA11          ; valid                                  # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA11
-FA12          ; mapped                 ; 6674          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA12
-FA13..FA14    ; valid                                  # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
-FA15          ; mapped                 ; 51DE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA15
-FA16          ; mapped                 ; 732A          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA16
-FA17          ; mapped                 ; 76CA          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA17
-FA18          ; mapped                 ; 793C          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA18
-FA19          ; mapped                 ; 795E          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA19
-FA1A          ; mapped                 ; 7965          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA1A
-FA1B          ; mapped                 ; 798F          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA1B
-FA1C          ; mapped                 ; 9756          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA1C
-FA1D          ; mapped                 ; 7CBE          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA1D
-FA1E          ; mapped                 ; 7FBD          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA1E
-FA1F          ; valid                                  # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA1F
-FA20          ; mapped                 ; 8612          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA20
-FA21          ; valid                                  # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA21
-FA22          ; mapped                 ; 8AF8          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA22
-FA23..FA24    ; valid                                  # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24
-FA25          ; mapped                 ; 9038          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA25
-FA26          ; mapped                 ; 90FD          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA26
-FA27..FA29    ; valid                                  # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29
-FA2A          ; mapped                 ; 98EF          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA2A
-FA2B          ; mapped                 ; 98FC          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA2B
-FA2C          ; mapped                 ; 9928          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA2C
-FA2D          ; mapped                 ; 9DB4          # 1.1  CJK COMPATIBILITY IDEOGRAPH-FA2D
-FA2E          ; mapped                 ; 90DE          # 6.1  CJK COMPATIBILITY IDEOGRAPH-FA2E
-FA2F          ; mapped                 ; 96B7          # 6.1  CJK COMPATIBILITY IDEOGRAPH-FA2F
-FA30          ; mapped                 ; 4FAE          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA30
-FA31          ; mapped                 ; 50E7          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA31
-FA32          ; mapped                 ; 514D          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA32
-FA33          ; mapped                 ; 52C9          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA33
-FA34          ; mapped                 ; 52E4          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA34
-FA35          ; mapped                 ; 5351          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA35
-FA36          ; mapped                 ; 559D          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA36
-FA37          ; mapped                 ; 5606          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA37
-FA38          ; mapped                 ; 5668          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA38
-FA39          ; mapped                 ; 5840          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA39
-FA3A          ; mapped                 ; 58A8          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA3A
-FA3B          ; mapped                 ; 5C64          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA3B
-FA3C          ; mapped                 ; 5C6E          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA3C
-FA3D          ; mapped                 ; 6094          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA3D
-FA3E          ; mapped                 ; 6168          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA3E
-FA3F          ; mapped                 ; 618E          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA3F
-FA40          ; mapped                 ; 61F2          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA40
-FA41          ; mapped                 ; 654F          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA41
-FA42          ; mapped                 ; 65E2          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA42
-FA43          ; mapped                 ; 6691          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA43
-FA44          ; mapped                 ; 6885          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA44
-FA45          ; mapped                 ; 6D77          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA45
-FA46          ; mapped                 ; 6E1A          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA46
-FA47          ; mapped                 ; 6F22          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA47
-FA48          ; mapped                 ; 716E          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA48
-FA49          ; mapped                 ; 722B          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA49
-FA4A          ; mapped                 ; 7422          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA4A
-FA4B          ; mapped                 ; 7891          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA4B
-FA4C          ; mapped                 ; 793E          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA4C
-FA4D          ; mapped                 ; 7949          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA4D
-FA4E          ; mapped                 ; 7948          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA4E
-FA4F          ; mapped                 ; 7950          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA4F
-FA50          ; mapped                 ; 7956          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA50
-FA51          ; mapped                 ; 795D          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA51
-FA52          ; mapped                 ; 798D          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA52
-FA53          ; mapped                 ; 798E          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA53
-FA54          ; mapped                 ; 7A40          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA54
-FA55          ; mapped                 ; 7A81          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA55
-FA56          ; mapped                 ; 7BC0          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA56
-FA57          ; mapped                 ; 7DF4          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA57
-FA58          ; mapped                 ; 7E09          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA58
-FA59          ; mapped                 ; 7E41          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA59
-FA5A          ; mapped                 ; 7F72          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA5A
-FA5B          ; mapped                 ; 8005          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA5B
-FA5C          ; mapped                 ; 81ED          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA5C
-FA5D..FA5E    ; mapped                 ; 8279          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA5D..CJK COMPATIBILITY IDEOGRAPH-FA5E
-FA5F          ; mapped                 ; 8457          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA5F
-FA60          ; mapped                 ; 8910          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA60
-FA61          ; mapped                 ; 8996          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA61
-FA62          ; mapped                 ; 8B01          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA62
-FA63          ; mapped                 ; 8B39          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA63
-FA64          ; mapped                 ; 8CD3          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA64
-FA65          ; mapped                 ; 8D08          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA65
-FA66          ; mapped                 ; 8FB6          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA66
-FA67          ; mapped                 ; 9038          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA67
-FA68          ; mapped                 ; 96E3          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA68
-FA69          ; mapped                 ; 97FF          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA69
-FA6A          ; mapped                 ; 983B          # 3.2  CJK COMPATIBILITY IDEOGRAPH-FA6A
-FA6B          ; mapped                 ; 6075          # 5.2  CJK COMPATIBILITY IDEOGRAPH-FA6B
-FA6C          ; mapped                 ; 242EE         # 5.2  CJK COMPATIBILITY IDEOGRAPH-FA6C
-FA6D          ; mapped                 ; 8218          # 5.2  CJK COMPATIBILITY IDEOGRAPH-FA6D
-FA6E..FA6F    ; disallowed                             # NA   <reserved-FA6E>..<reserved-FA6F>
-FA70          ; mapped                 ; 4E26          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA70
-FA71          ; mapped                 ; 51B5          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA71
-FA72          ; mapped                 ; 5168          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA72
-FA73          ; mapped                 ; 4F80          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA73
-FA74          ; mapped                 ; 5145          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA74
-FA75          ; mapped                 ; 5180          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA75
-FA76          ; mapped                 ; 52C7          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA76
-FA77          ; mapped                 ; 52FA          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA77
-FA78          ; mapped                 ; 559D          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA78
-FA79          ; mapped                 ; 5555          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA79
-FA7A          ; mapped                 ; 5599          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA7A
-FA7B          ; mapped                 ; 55E2          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA7B
-FA7C          ; mapped                 ; 585A          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA7C
-FA7D          ; mapped                 ; 58B3          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA7D
-FA7E          ; mapped                 ; 5944          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA7E
-FA7F          ; mapped                 ; 5954          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA7F
-FA80          ; mapped                 ; 5A62          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA80
-FA81          ; mapped                 ; 5B28          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA81
-FA82          ; mapped                 ; 5ED2          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA82
-FA83          ; mapped                 ; 5ED9          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA83
-FA84          ; mapped                 ; 5F69          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA84
-FA85          ; mapped                 ; 5FAD          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA85
-FA86          ; mapped                 ; 60D8          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA86
-FA87          ; mapped                 ; 614E          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA87
-FA88          ; mapped                 ; 6108          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA88
-FA89          ; mapped                 ; 618E          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA89
-FA8A          ; mapped                 ; 6160          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA8A
-FA8B          ; mapped                 ; 61F2          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA8B
-FA8C          ; mapped                 ; 6234          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA8C
-FA8D          ; mapped                 ; 63C4          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA8D
-FA8E          ; mapped                 ; 641C          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA8E
-FA8F          ; mapped                 ; 6452          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA8F
-FA90          ; mapped                 ; 6556          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA90
-FA91          ; mapped                 ; 6674          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA91
-FA92          ; mapped                 ; 6717          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA92
-FA93          ; mapped                 ; 671B          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA93
-FA94          ; mapped                 ; 6756          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA94
-FA95          ; mapped                 ; 6B79          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA95
-FA96          ; mapped                 ; 6BBA          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA96
-FA97          ; mapped                 ; 6D41          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA97
-FA98          ; mapped                 ; 6EDB          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA98
-FA99          ; mapped                 ; 6ECB          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA99
-FA9A          ; mapped                 ; 6F22          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA9A
-FA9B          ; mapped                 ; 701E          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA9B
-FA9C          ; mapped                 ; 716E          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA9C
-FA9D          ; mapped                 ; 77A7          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA9D
-FA9E          ; mapped                 ; 7235          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA9E
-FA9F          ; mapped                 ; 72AF          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FA9F
-FAA0          ; mapped                 ; 732A          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAA0
-FAA1          ; mapped                 ; 7471          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAA1
-FAA2          ; mapped                 ; 7506          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAA2
-FAA3          ; mapped                 ; 753B          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAA3
-FAA4          ; mapped                 ; 761D          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAA4
-FAA5          ; mapped                 ; 761F          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAA5
-FAA6          ; mapped                 ; 76CA          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAA6
-FAA7          ; mapped                 ; 76DB          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAA7
-FAA8          ; mapped                 ; 76F4          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAA8
-FAA9          ; mapped                 ; 774A          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAA9
-FAAA          ; mapped                 ; 7740          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAAA
-FAAB          ; mapped                 ; 78CC          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAAB
-FAAC          ; mapped                 ; 7AB1          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAAC
-FAAD          ; mapped                 ; 7BC0          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAAD
-FAAE          ; mapped                 ; 7C7B          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAAE
-FAAF          ; mapped                 ; 7D5B          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAAF
-FAB0          ; mapped                 ; 7DF4          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAB0
-FAB1          ; mapped                 ; 7F3E          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAB1
-FAB2          ; mapped                 ; 8005          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAB2
-FAB3          ; mapped                 ; 8352          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAB3
-FAB4          ; mapped                 ; 83EF          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAB4
-FAB5          ; mapped                 ; 8779          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAB5
-FAB6          ; mapped                 ; 8941          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAB6
-FAB7          ; mapped                 ; 8986          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAB7
-FAB8          ; mapped                 ; 8996          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAB8
-FAB9          ; mapped                 ; 8ABF          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAB9
-FABA          ; mapped                 ; 8AF8          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FABA
-FABB          ; mapped                 ; 8ACB          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FABB
-FABC          ; mapped                 ; 8B01          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FABC
-FABD          ; mapped                 ; 8AFE          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FABD
-FABE          ; mapped                 ; 8AED          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FABE
-FABF          ; mapped                 ; 8B39          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FABF
-FAC0          ; mapped                 ; 8B8A          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAC0
-FAC1          ; mapped                 ; 8D08          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAC1
-FAC2          ; mapped                 ; 8F38          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAC2
-FAC3          ; mapped                 ; 9072          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAC3
-FAC4          ; mapped                 ; 9199          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAC4
-FAC5          ; mapped                 ; 9276          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAC5
-FAC6          ; mapped                 ; 967C          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAC6
-FAC7          ; mapped                 ; 96E3          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAC7
-FAC8          ; mapped                 ; 9756          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAC8
-FAC9          ; mapped                 ; 97DB          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAC9
-FACA          ; mapped                 ; 97FF          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FACA
-FACB          ; mapped                 ; 980B          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FACB
-FACC          ; mapped                 ; 983B          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FACC
-FACD          ; mapped                 ; 9B12          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FACD
-FACE          ; mapped                 ; 9F9C          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FACE
-FACF          ; mapped                 ; 2284A         # 4.1  CJK COMPATIBILITY IDEOGRAPH-FACF
-FAD0          ; mapped                 ; 22844         # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAD0
-FAD1          ; mapped                 ; 233D5         # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAD1
-FAD2          ; mapped                 ; 3B9D          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAD2
-FAD3          ; mapped                 ; 4018          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAD3
-FAD4          ; mapped                 ; 4039          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAD4
-FAD5          ; mapped                 ; 25249         # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAD5
-FAD6          ; mapped                 ; 25CD0         # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAD6
-FAD7          ; mapped                 ; 27ED3         # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAD7
-FAD8          ; mapped                 ; 9F43          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAD8
-FAD9          ; mapped                 ; 9F8E          # 4.1  CJK COMPATIBILITY IDEOGRAPH-FAD9
-FADA..FAFF    ; disallowed                             # NA   <reserved-FADA>..<reserved-FAFF>
-FB00          ; mapped                 ; 0066 0066     # 1.1  LATIN SMALL LIGATURE FF
-FB01          ; mapped                 ; 0066 0069     # 1.1  LATIN SMALL LIGATURE FI
-FB02          ; mapped                 ; 0066 006C     # 1.1  LATIN SMALL LIGATURE FL
-FB03          ; mapped                 ; 0066 0066 0069 #1.1  LATIN SMALL LIGATURE FFI
-FB04          ; mapped                 ; 0066 0066 006C #1.1  LATIN SMALL LIGATURE FFL
-FB05..FB06    ; mapped                 ; 0073 0074     # 1.1  LATIN SMALL LIGATURE LONG S T..LATIN SMALL LIGATURE ST
-FB07..FB12    ; disallowed                             # NA   <reserved-FB07>..<reserved-FB12>
-FB13          ; mapped                 ; 0574 0576     # 1.1  ARMENIAN SMALL LIGATURE MEN NOW
-FB14          ; mapped                 ; 0574 0565     # 1.1  ARMENIAN SMALL LIGATURE MEN ECH
-FB15          ; mapped                 ; 0574 056B     # 1.1  ARMENIAN SMALL LIGATURE MEN INI
-FB16          ; mapped                 ; 057E 0576     # 1.1  ARMENIAN SMALL LIGATURE VEW NOW
-FB17          ; mapped                 ; 0574 056D     # 1.1  ARMENIAN SMALL LIGATURE MEN XEH
-FB18..FB1C    ; disallowed                             # NA   <reserved-FB18>..<reserved-FB1C>
-FB1D          ; mapped                 ; 05D9 05B4     # 3.0  HEBREW LETTER YOD WITH HIRIQ
-FB1E          ; valid                                  # 1.1  HEBREW POINT JUDEO-SPANISH VARIKA
-FB1F          ; mapped                 ; 05F2 05B7     # 1.1  HEBREW LIGATURE YIDDISH YOD YOD PATAH
-FB20          ; mapped                 ; 05E2          # 1.1  HEBREW LETTER ALTERNATIVE AYIN
-FB21          ; mapped                 ; 05D0          # 1.1  HEBREW LETTER WIDE ALEF
-FB22          ; mapped                 ; 05D3          # 1.1  HEBREW LETTER WIDE DALET
-FB23          ; mapped                 ; 05D4          # 1.1  HEBREW LETTER WIDE HE
-FB24          ; mapped                 ; 05DB          # 1.1  HEBREW LETTER WIDE KAF
-FB25          ; mapped                 ; 05DC          # 1.1  HEBREW LETTER WIDE LAMED
-FB26          ; mapped                 ; 05DD          # 1.1  HEBREW LETTER WIDE FINAL MEM
-FB27          ; mapped                 ; 05E8          # 1.1  HEBREW LETTER WIDE RESH
-FB28          ; mapped                 ; 05EA          # 1.1  HEBREW LETTER WIDE TAV
-FB29          ; disallowed_STD3_mapped ; 002B          # 1.1  HEBREW LETTER ALTERNATIVE PLUS SIGN
-FB2A          ; mapped                 ; 05E9 05C1     # 1.1  HEBREW LETTER SHIN WITH SHIN DOT
-FB2B          ; mapped                 ; 05E9 05C2     # 1.1  HEBREW LETTER SHIN WITH SIN DOT
-FB2C          ; mapped                 ; 05E9 05BC 05C1 #1.1  HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
-FB2D          ; mapped                 ; 05E9 05BC 05C2 #1.1  HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
-FB2E          ; mapped                 ; 05D0 05B7     # 1.1  HEBREW LETTER ALEF WITH PATAH
-FB2F          ; mapped                 ; 05D0 05B8     # 1.1  HEBREW LETTER ALEF WITH QAMATS
-FB30          ; mapped                 ; 05D0 05BC     # 1.1  HEBREW LETTER ALEF WITH MAPIQ
-FB31          ; mapped                 ; 05D1 05BC     # 1.1  HEBREW LETTER BET WITH DAGESH
-FB32          ; mapped                 ; 05D2 05BC     # 1.1  HEBREW LETTER GIMEL WITH DAGESH
-FB33          ; mapped                 ; 05D3 05BC     # 1.1  HEBREW LETTER DALET WITH DAGESH
-FB34          ; mapped                 ; 05D4 05BC     # 1.1  HEBREW LETTER HE WITH MAPIQ
-FB35          ; mapped                 ; 05D5 05BC     # 1.1  HEBREW LETTER VAV WITH DAGESH
-FB36          ; mapped                 ; 05D6 05BC     # 1.1  HEBREW LETTER ZAYIN WITH DAGESH
-FB37          ; disallowed                             # NA   <reserved-FB37>
-FB38          ; mapped                 ; 05D8 05BC     # 1.1  HEBREW LETTER TET WITH DAGESH
-FB39          ; mapped                 ; 05D9 05BC     # 1.1  HEBREW LETTER YOD WITH DAGESH
-FB3A          ; mapped                 ; 05DA 05BC     # 1.1  HEBREW LETTER FINAL KAF WITH DAGESH
-FB3B          ; mapped                 ; 05DB 05BC     # 1.1  HEBREW LETTER KAF WITH DAGESH
-FB3C          ; mapped                 ; 05DC 05BC     # 1.1  HEBREW LETTER LAMED WITH DAGESH
-FB3D          ; disallowed                             # NA   <reserved-FB3D>
-FB3E          ; mapped                 ; 05DE 05BC     # 1.1  HEBREW LETTER MEM WITH DAGESH
-FB3F          ; disallowed                             # NA   <reserved-FB3F>
-FB40          ; mapped                 ; 05E0 05BC     # 1.1  HEBREW LETTER NUN WITH DAGESH
-FB41          ; mapped                 ; 05E1 05BC     # 1.1  HEBREW LETTER SAMEKH WITH DAGESH
-FB42          ; disallowed                             # NA   <reserved-FB42>
-FB43          ; mapped                 ; 05E3 05BC     # 1.1  HEBREW LETTER FINAL PE WITH DAGESH
-FB44          ; mapped                 ; 05E4 05BC     # 1.1  HEBREW LETTER PE WITH DAGESH
-FB45          ; disallowed                             # NA   <reserved-FB45>
-FB46          ; mapped                 ; 05E6 05BC     # 1.1  HEBREW LETTER TSADI WITH DAGESH
-FB47          ; mapped                 ; 05E7 05BC     # 1.1  HEBREW LETTER QOF WITH DAGESH
-FB48          ; mapped                 ; 05E8 05BC     # 1.1  HEBREW LETTER RESH WITH DAGESH
-FB49          ; mapped                 ; 05E9 05BC     # 1.1  HEBREW LETTER SHIN WITH DAGESH
-FB4A          ; mapped                 ; 05EA 05BC     # 1.1  HEBREW LETTER TAV WITH DAGESH
-FB4B          ; mapped                 ; 05D5 05B9     # 1.1  HEBREW LETTER VAV WITH HOLAM
-FB4C          ; mapped                 ; 05D1 05BF     # 1.1  HEBREW LETTER BET WITH RAFE
-FB4D          ; mapped                 ; 05DB 05BF     # 1.1  HEBREW LETTER KAF WITH RAFE
-FB4E          ; mapped                 ; 05E4 05BF     # 1.1  HEBREW LETTER PE WITH RAFE
-FB4F          ; mapped                 ; 05D0 05DC     # 1.1  HEBREW LIGATURE ALEF LAMED
-FB50..FB51    ; mapped                 ; 0671          # 1.1  ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER ALEF WASLA FINAL FORM
-FB52..FB55    ; mapped                 ; 067B          # 1.1  ARABIC LETTER BEEH ISOLATED FORM..ARABIC LETTER BEEH MEDIAL FORM
-FB56..FB59    ; mapped                 ; 067E          # 1.1  ARABIC LETTER PEH ISOLATED FORM..ARABIC LETTER PEH MEDIAL FORM
-FB5A..FB5D    ; mapped                 ; 0680          # 1.1  ARABIC LETTER BEHEH ISOLATED FORM..ARABIC LETTER BEHEH MEDIAL FORM
-FB5E..FB61    ; mapped                 ; 067A          # 1.1  ARABIC LETTER TTEHEH ISOLATED FORM..ARABIC LETTER TTEHEH MEDIAL FORM
-FB62..FB65    ; mapped                 ; 067F          # 1.1  ARABIC LETTER TEHEH ISOLATED FORM..ARABIC LETTER TEHEH MEDIAL FORM
-FB66..FB69    ; mapped                 ; 0679          # 1.1  ARABIC LETTER TTEH ISOLATED FORM..ARABIC LETTER TTEH MEDIAL FORM
-FB6A..FB6D    ; mapped                 ; 06A4          # 1.1  ARABIC LETTER VEH ISOLATED FORM..ARABIC LETTER VEH MEDIAL FORM
-FB6E..FB71    ; mapped                 ; 06A6          # 1.1  ARABIC LETTER PEHEH ISOLATED FORM..ARABIC LETTER PEHEH MEDIAL FORM
-FB72..FB75    ; mapped                 ; 0684          # 1.1  ARABIC LETTER DYEH ISOLATED FORM..ARABIC LETTER DYEH MEDIAL FORM
-FB76..FB79    ; mapped                 ; 0683          # 1.1  ARABIC LETTER NYEH ISOLATED FORM..ARABIC LETTER NYEH MEDIAL FORM
-FB7A..FB7D    ; mapped                 ; 0686          # 1.1  ARABIC LETTER TCHEH ISOLATED FORM..ARABIC LETTER TCHEH MEDIAL FORM
-FB7E..FB81    ; mapped                 ; 0687          # 1.1  ARABIC LETTER TCHEHEH ISOLATED FORM..ARABIC LETTER TCHEHEH MEDIAL FORM
-FB82..FB83    ; mapped                 ; 068D          # 1.1  ARABIC LETTER DDAHAL ISOLATED FORM..ARABIC LETTER DDAHAL FINAL FORM
-FB84..FB85    ; mapped                 ; 068C          # 1.1  ARABIC LETTER DAHAL ISOLATED FORM..ARABIC LETTER DAHAL FINAL FORM
-FB86..FB87    ; mapped                 ; 068E          # 1.1  ARABIC LETTER DUL ISOLATED FORM..ARABIC LETTER DUL FINAL FORM
-FB88..FB89    ; mapped                 ; 0688          # 1.1  ARABIC LETTER DDAL ISOLATED FORM..ARABIC LETTER DDAL FINAL FORM
-FB8A..FB8B    ; mapped                 ; 0698          # 1.1  ARABIC LETTER JEH ISOLATED FORM..ARABIC LETTER JEH FINAL FORM
-FB8C..FB8D    ; mapped                 ; 0691          # 1.1  ARABIC LETTER RREH ISOLATED FORM..ARABIC LETTER RREH FINAL FORM
-FB8E..FB91    ; mapped                 ; 06A9          # 1.1  ARABIC LETTER KEHEH ISOLATED FORM..ARABIC LETTER KEHEH MEDIAL FORM
-FB92..FB95    ; mapped                 ; 06AF          # 1.1  ARABIC LETTER GAF ISOLATED FORM..ARABIC LETTER GAF MEDIAL FORM
-FB96..FB99    ; mapped                 ; 06B3          # 1.1  ARABIC LETTER GUEH ISOLATED FORM..ARABIC LETTER GUEH MEDIAL FORM
-FB9A..FB9D    ; mapped                 ; 06B1          # 1.1  ARABIC LETTER NGOEH ISOLATED FORM..ARABIC LETTER NGOEH MEDIAL FORM
-FB9E..FB9F    ; mapped                 ; 06BA          # 1.1  ARABIC LETTER NOON GHUNNA ISOLATED FORM..ARABIC LETTER NOON GHUNNA FINAL FORM
-FBA0..FBA3    ; mapped                 ; 06BB          # 1.1  ARABIC LETTER RNOON ISOLATED FORM..ARABIC LETTER RNOON MEDIAL FORM
-FBA4..FBA5    ; mapped                 ; 06C0          # 1.1  ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM..ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
-FBA6..FBA9    ; mapped                 ; 06C1          # 1.1  ARABIC LETTER HEH GOAL ISOLATED FORM..ARABIC LETTER HEH GOAL MEDIAL FORM
-FBAA..FBAD    ; mapped                 ; 06BE          # 1.1  ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM..ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
-FBAE..FBAF    ; mapped                 ; 06D2          # 1.1  ARABIC LETTER YEH BARREE ISOLATED FORM..ARABIC LETTER YEH BARREE FINAL FORM
-FBB0..FBB1    ; mapped                 ; 06D3          # 1.1  ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
-FBB2..FBC1    ; valid                  ;      ; NV8    # 6.0  ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
-FBC2..FBD2    ; disallowed                             # NA   <reserved-FBC2>..<reserved-FBD2>
-FBD3..FBD6    ; mapped                 ; 06AD          # 1.1  ARABIC LETTER NG ISOLATED FORM..ARABIC LETTER NG MEDIAL FORM
-FBD7..FBD8    ; mapped                 ; 06C7          # 1.1  ARABIC LETTER U ISOLATED FORM..ARABIC LETTER U FINAL FORM
-FBD9..FBDA    ; mapped                 ; 06C6          # 1.1  ARABIC LETTER OE ISOLATED FORM..ARABIC LETTER OE FINAL FORM
-FBDB..FBDC    ; mapped                 ; 06C8          # 1.1  ARABIC LETTER YU ISOLATED FORM..ARABIC LETTER YU FINAL FORM
-FBDD          ; mapped                 ; 06C7 0674     # 1.1  ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
-FBDE..FBDF    ; mapped                 ; 06CB          # 1.1  ARABIC LETTER VE ISOLATED FORM..ARABIC LETTER VE FINAL FORM
-FBE0..FBE1    ; mapped                 ; 06C5          # 1.1  ARABIC LETTER KIRGHIZ OE ISOLATED FORM..ARABIC LETTER KIRGHIZ OE FINAL FORM
-FBE2..FBE3    ; mapped                 ; 06C9          # 1.1  ARABIC LETTER KIRGHIZ YU ISOLATED FORM..ARABIC LETTER KIRGHIZ YU FINAL FORM
-FBE4..FBE7    ; mapped                 ; 06D0          # 1.1  ARABIC LETTER E ISOLATED FORM..ARABIC LETTER E MEDIAL FORM
-FBE8..FBE9    ; mapped                 ; 0649          # 1.1  ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM..ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
-FBEA..FBEB    ; mapped                 ; 0626 0627     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
-FBEC..FBED    ; mapped                 ; 0626 06D5     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
-FBEE..FBEF    ; mapped                 ; 0626 0648     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
-FBF0..FBF1    ; mapped                 ; 0626 06C7     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
-FBF2..FBF3    ; mapped                 ; 0626 06C6     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
-FBF4..FBF5    ; mapped                 ; 0626 06C8     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
-FBF6..FBF8    ; mapped                 ; 0626 06D0     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
-FBF9..FBFB    ; mapped                 ; 0626 0649     # 1.1  ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
-FBFC..FBFF    ; mapped                 ; 06CC          # 1.1  ARABIC LETTER FARSI YEH ISOLATED FORM..ARABIC LETTER FARSI YEH MEDIAL FORM
-FC00          ; mapped                 ; 0626 062C     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
-FC01          ; mapped                 ; 0626 062D     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
-FC02          ; mapped                 ; 0626 0645     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
-FC03          ; mapped                 ; 0626 0649     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
-FC04          ; mapped                 ; 0626 064A     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
-FC05          ; mapped                 ; 0628 062C     # 1.1  ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
-FC06          ; mapped                 ; 0628 062D     # 1.1  ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
-FC07          ; mapped                 ; 0628 062E     # 1.1  ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
-FC08          ; mapped                 ; 0628 0645     # 1.1  ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
-FC09          ; mapped                 ; 0628 0649     # 1.1  ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
-FC0A          ; mapped                 ; 0628 064A     # 1.1  ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
-FC0B          ; mapped                 ; 062A 062C     # 1.1  ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
-FC0C          ; mapped                 ; 062A 062D     # 1.1  ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
-FC0D          ; mapped                 ; 062A 062E     # 1.1  ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
-FC0E          ; mapped                 ; 062A 0645     # 1.1  ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
-FC0F          ; mapped                 ; 062A 0649     # 1.1  ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
-FC10          ; mapped                 ; 062A 064A     # 1.1  ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
-FC11          ; mapped                 ; 062B 062C     # 1.1  ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
-FC12          ; mapped                 ; 062B 0645     # 1.1  ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
-FC13          ; mapped                 ; 062B 0649     # 1.1  ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
-FC14          ; mapped                 ; 062B 064A     # 1.1  ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
-FC15          ; mapped                 ; 062C 062D     # 1.1  ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
-FC16          ; mapped                 ; 062C 0645     # 1.1  ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
-FC17          ; mapped                 ; 062D 062C     # 1.1  ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
-FC18          ; mapped                 ; 062D 0645     # 1.1  ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
-FC19          ; mapped                 ; 062E 062C     # 1.1  ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
-FC1A          ; mapped                 ; 062E 062D     # 1.1  ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
-FC1B          ; mapped                 ; 062E 0645     # 1.1  ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
-FC1C          ; mapped                 ; 0633 062C     # 1.1  ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
-FC1D          ; mapped                 ; 0633 062D     # 1.1  ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
-FC1E          ; mapped                 ; 0633 062E     # 1.1  ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
-FC1F          ; mapped                 ; 0633 0645     # 1.1  ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
-FC20          ; mapped                 ; 0635 062D     # 1.1  ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
-FC21          ; mapped                 ; 0635 0645     # 1.1  ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
-FC22          ; mapped                 ; 0636 062C     # 1.1  ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
-FC23          ; mapped                 ; 0636 062D     # 1.1  ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
-FC24          ; mapped                 ; 0636 062E     # 1.1  ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
-FC25          ; mapped                 ; 0636 0645     # 1.1  ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
-FC26          ; mapped                 ; 0637 062D     # 1.1  ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
-FC27          ; mapped                 ; 0637 0645     # 1.1  ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
-FC28          ; mapped                 ; 0638 0645     # 1.1  ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
-FC29          ; mapped                 ; 0639 062C     # 1.1  ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
-FC2A          ; mapped                 ; 0639 0645     # 1.1  ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
-FC2B          ; mapped                 ; 063A 062C     # 1.1  ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
-FC2C          ; mapped                 ; 063A 0645     # 1.1  ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
-FC2D          ; mapped                 ; 0641 062C     # 1.1  ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
-FC2E          ; mapped                 ; 0641 062D     # 1.1  ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
-FC2F          ; mapped                 ; 0641 062E     # 1.1  ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
-FC30          ; mapped                 ; 0641 0645     # 1.1  ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
-FC31          ; mapped                 ; 0641 0649     # 1.1  ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
-FC32          ; mapped                 ; 0641 064A     # 1.1  ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
-FC33          ; mapped                 ; 0642 062D     # 1.1  ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
-FC34          ; mapped                 ; 0642 0645     # 1.1  ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
-FC35          ; mapped                 ; 0642 0649     # 1.1  ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
-FC36          ; mapped                 ; 0642 064A     # 1.1  ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
-FC37          ; mapped                 ; 0643 0627     # 1.1  ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
-FC38          ; mapped                 ; 0643 062C     # 1.1  ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
-FC39          ; mapped                 ; 0643 062D     # 1.1  ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
-FC3A          ; mapped                 ; 0643 062E     # 1.1  ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
-FC3B          ; mapped                 ; 0643 0644     # 1.1  ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
-FC3C          ; mapped                 ; 0643 0645     # 1.1  ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
-FC3D          ; mapped                 ; 0643 0649     # 1.1  ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
-FC3E          ; mapped                 ; 0643 064A     # 1.1  ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
-FC3F          ; mapped                 ; 0644 062C     # 1.1  ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
-FC40          ; mapped                 ; 0644 062D     # 1.1  ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
-FC41          ; mapped                 ; 0644 062E     # 1.1  ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
-FC42          ; mapped                 ; 0644 0645     # 1.1  ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
-FC43          ; mapped                 ; 0644 0649     # 1.1  ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
-FC44          ; mapped                 ; 0644 064A     # 1.1  ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
-FC45          ; mapped                 ; 0645 062C     # 1.1  ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
-FC46          ; mapped                 ; 0645 062D     # 1.1  ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
-FC47          ; mapped                 ; 0645 062E     # 1.1  ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
-FC48          ; mapped                 ; 0645 0645     # 1.1  ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
-FC49          ; mapped                 ; 0645 0649     # 1.1  ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
-FC4A          ; mapped                 ; 0645 064A     # 1.1  ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
-FC4B          ; mapped                 ; 0646 062C     # 1.1  ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
-FC4C          ; mapped                 ; 0646 062D     # 1.1  ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
-FC4D          ; mapped                 ; 0646 062E     # 1.1  ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
-FC4E          ; mapped                 ; 0646 0645     # 1.1  ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
-FC4F          ; mapped                 ; 0646 0649     # 1.1  ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
-FC50          ; mapped                 ; 0646 064A     # 1.1  ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
-FC51          ; mapped                 ; 0647 062C     # 1.1  ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
-FC52          ; mapped                 ; 0647 0645     # 1.1  ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
-FC53          ; mapped                 ; 0647 0649     # 1.1  ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
-FC54          ; mapped                 ; 0647 064A     # 1.1  ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
-FC55          ; mapped                 ; 064A 062C     # 1.1  ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
-FC56          ; mapped                 ; 064A 062D     # 1.1  ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
-FC57          ; mapped                 ; 064A 062E     # 1.1  ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
-FC58          ; mapped                 ; 064A 0645     # 1.1  ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
-FC59          ; mapped                 ; 064A 0649     # 1.1  ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
-FC5A          ; mapped                 ; 064A 064A     # 1.1  ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
-FC5B          ; mapped                 ; 0630 0670     # 1.1  ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5C          ; mapped                 ; 0631 0670     # 1.1  ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5D          ; mapped                 ; 0649 0670     # 1.1  ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC5E          ; disallowed_STD3_mapped ; 0020 064C 0651 #1.1  ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
-FC5F          ; disallowed_STD3_mapped ; 0020 064D 0651 #1.1  ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
-FC60          ; disallowed_STD3_mapped ; 0020 064E 0651 #1.1  ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
-FC61          ; disallowed_STD3_mapped ; 0020 064F 0651 #1.1  ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
-FC62          ; disallowed_STD3_mapped ; 0020 0650 0651 #1.1  ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
-FC63          ; disallowed_STD3_mapped ; 0020 0651 0670 #1.1  ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
-FC64          ; mapped                 ; 0626 0631     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
-FC65          ; mapped                 ; 0626 0632     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
-FC66          ; mapped                 ; 0626 0645     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
-FC67          ; mapped                 ; 0626 0646     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
-FC68          ; mapped                 ; 0626 0649     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
-FC69          ; mapped                 ; 0626 064A     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
-FC6A          ; mapped                 ; 0628 0631     # 1.1  ARABIC LIGATURE BEH WITH REH FINAL FORM
-FC6B          ; mapped                 ; 0628 0632     # 1.1  ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
-FC6C          ; mapped                 ; 0628 0645     # 1.1  ARABIC LIGATURE BEH WITH MEEM FINAL FORM
-FC6D          ; mapped                 ; 0628 0646     # 1.1  ARABIC LIGATURE BEH WITH NOON FINAL FORM
-FC6E          ; mapped                 ; 0628 0649     # 1.1  ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
-FC6F          ; mapped                 ; 0628 064A     # 1.1  ARABIC LIGATURE BEH WITH YEH FINAL FORM
-FC70          ; mapped                 ; 062A 0631     # 1.1  ARABIC LIGATURE TEH WITH REH FINAL FORM
-FC71          ; mapped                 ; 062A 0632     # 1.1  ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
-FC72          ; mapped                 ; 062A 0645     # 1.1  ARABIC LIGATURE TEH WITH MEEM FINAL FORM
-FC73          ; mapped                 ; 062A 0646     # 1.1  ARABIC LIGATURE TEH WITH NOON FINAL FORM
-FC74          ; mapped                 ; 062A 0649     # 1.1  ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
-FC75          ; mapped                 ; 062A 064A     # 1.1  ARABIC LIGATURE TEH WITH YEH FINAL FORM
-FC76          ; mapped                 ; 062B 0631     # 1.1  ARABIC LIGATURE THEH WITH REH FINAL FORM
-FC77          ; mapped                 ; 062B 0632     # 1.1  ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
-FC78          ; mapped                 ; 062B 0645     # 1.1  ARABIC LIGATURE THEH WITH MEEM FINAL FORM
-FC79          ; mapped                 ; 062B 0646     # 1.1  ARABIC LIGATURE THEH WITH NOON FINAL FORM
-FC7A          ; mapped                 ; 062B 0649     # 1.1  ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
-FC7B          ; mapped                 ; 062B 064A     # 1.1  ARABIC LIGATURE THEH WITH YEH FINAL FORM
-FC7C          ; mapped                 ; 0641 0649     # 1.1  ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
-FC7D          ; mapped                 ; 0641 064A     # 1.1  ARABIC LIGATURE FEH WITH YEH FINAL FORM
-FC7E          ; mapped                 ; 0642 0649     # 1.1  ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
-FC7F          ; mapped                 ; 0642 064A     # 1.1  ARABIC LIGATURE QAF WITH YEH FINAL FORM
-FC80          ; mapped                 ; 0643 0627     # 1.1  ARABIC LIGATURE KAF WITH ALEF FINAL FORM
-FC81          ; mapped                 ; 0643 0644     # 1.1  ARABIC LIGATURE KAF WITH LAM FINAL FORM
-FC82          ; mapped                 ; 0643 0645     # 1.1  ARABIC LIGATURE KAF WITH MEEM FINAL FORM
-FC83          ; mapped                 ; 0643 0649     # 1.1  ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
-FC84          ; mapped                 ; 0643 064A     # 1.1  ARABIC LIGATURE KAF WITH YEH FINAL FORM
-FC85          ; mapped                 ; 0644 0645     # 1.1  ARABIC LIGATURE LAM WITH MEEM FINAL FORM
-FC86          ; mapped                 ; 0644 0649     # 1.1  ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
-FC87          ; mapped                 ; 0644 064A     # 1.1  ARABIC LIGATURE LAM WITH YEH FINAL FORM
-FC88          ; mapped                 ; 0645 0627     # 1.1  ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
-FC89          ; mapped                 ; 0645 0645     # 1.1  ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
-FC8A          ; mapped                 ; 0646 0631     # 1.1  ARABIC LIGATURE NOON WITH REH FINAL FORM
-FC8B          ; mapped                 ; 0646 0632     # 1.1  ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
-FC8C          ; mapped                 ; 0646 0645     # 1.1  ARABIC LIGATURE NOON WITH MEEM FINAL FORM
-FC8D          ; mapped                 ; 0646 0646     # 1.1  ARABIC LIGATURE NOON WITH NOON FINAL FORM
-FC8E          ; mapped                 ; 0646 0649     # 1.1  ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
-FC8F          ; mapped                 ; 0646 064A     # 1.1  ARABIC LIGATURE NOON WITH YEH FINAL FORM
-FC90          ; mapped                 ; 0649 0670     # 1.1  ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
-FC91          ; mapped                 ; 064A 0631     # 1.1  ARABIC LIGATURE YEH WITH REH FINAL FORM
-FC92          ; mapped                 ; 064A 0632     # 1.1  ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
-FC93          ; mapped                 ; 064A 0645     # 1.1  ARABIC LIGATURE YEH WITH MEEM FINAL FORM
-FC94          ; mapped                 ; 064A 0646     # 1.1  ARABIC LIGATURE YEH WITH NOON FINAL FORM
-FC95          ; mapped                 ; 064A 0649     # 1.1  ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
-FC96          ; mapped                 ; 064A 064A     # 1.1  ARABIC LIGATURE YEH WITH YEH FINAL FORM
-FC97          ; mapped                 ; 0626 062C     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
-FC98          ; mapped                 ; 0626 062D     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
-FC99          ; mapped                 ; 0626 062E     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
-FC9A          ; mapped                 ; 0626 0645     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
-FC9B          ; mapped                 ; 0626 0647     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
-FC9C          ; mapped                 ; 0628 062C     # 1.1  ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
-FC9D          ; mapped                 ; 0628 062D     # 1.1  ARABIC LIGATURE BEH WITH HAH INITIAL FORM
-FC9E          ; mapped                 ; 0628 062E     # 1.1  ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
-FC9F          ; mapped                 ; 0628 0645     # 1.1  ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
-FCA0          ; mapped                 ; 0628 0647     # 1.1  ARABIC LIGATURE BEH WITH HEH INITIAL FORM
-FCA1          ; mapped                 ; 062A 062C     # 1.1  ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
-FCA2          ; mapped                 ; 062A 062D     # 1.1  ARABIC LIGATURE TEH WITH HAH INITIAL FORM
-FCA3          ; mapped                 ; 062A 062E     # 1.1  ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
-FCA4          ; mapped                 ; 062A 0645     # 1.1  ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
-FCA5          ; mapped                 ; 062A 0647     # 1.1  ARABIC LIGATURE TEH WITH HEH INITIAL FORM
-FCA6          ; mapped                 ; 062B 0645     # 1.1  ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
-FCA7          ; mapped                 ; 062C 062D     # 1.1  ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
-FCA8          ; mapped                 ; 062C 0645     # 1.1  ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
-FCA9          ; mapped                 ; 062D 062C     # 1.1  ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
-FCAA          ; mapped                 ; 062D 0645     # 1.1  ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
-FCAB          ; mapped                 ; 062E 062C     # 1.1  ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
-FCAC          ; mapped                 ; 062E 0645     # 1.1  ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
-FCAD          ; mapped                 ; 0633 062C     # 1.1  ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
-FCAE          ; mapped                 ; 0633 062D     # 1.1  ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
-FCAF          ; mapped                 ; 0633 062E     # 1.1  ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
-FCB0          ; mapped                 ; 0633 0645     # 1.1  ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
-FCB1          ; mapped                 ; 0635 062D     # 1.1  ARABIC LIGATURE SAD WITH HAH INITIAL FORM
-FCB2          ; mapped                 ; 0635 062E     # 1.1  ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
-FCB3          ; mapped                 ; 0635 0645     # 1.1  ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
-FCB4          ; mapped                 ; 0636 062C     # 1.1  ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
-FCB5          ; mapped                 ; 0636 062D     # 1.1  ARABIC LIGATURE DAD WITH HAH INITIAL FORM
-FCB6          ; mapped                 ; 0636 062E     # 1.1  ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
-FCB7          ; mapped                 ; 0636 0645     # 1.1  ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
-FCB8          ; mapped                 ; 0637 062D     # 1.1  ARABIC LIGATURE TAH WITH HAH INITIAL FORM
-FCB9          ; mapped                 ; 0638 0645     # 1.1  ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
-FCBA          ; mapped                 ; 0639 062C     # 1.1  ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
-FCBB          ; mapped                 ; 0639 0645     # 1.1  ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
-FCBC          ; mapped                 ; 063A 062C     # 1.1  ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
-FCBD          ; mapped                 ; 063A 0645     # 1.1  ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
-FCBE          ; mapped                 ; 0641 062C     # 1.1  ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
-FCBF          ; mapped                 ; 0641 062D     # 1.1  ARABIC LIGATURE FEH WITH HAH INITIAL FORM
-FCC0          ; mapped                 ; 0641 062E     # 1.1  ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
-FCC1          ; mapped                 ; 0641 0645     # 1.1  ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
-FCC2          ; mapped                 ; 0642 062D     # 1.1  ARABIC LIGATURE QAF WITH HAH INITIAL FORM
-FCC3          ; mapped                 ; 0642 0645     # 1.1  ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
-FCC4          ; mapped                 ; 0643 062C     # 1.1  ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
-FCC5          ; mapped                 ; 0643 062D     # 1.1  ARABIC LIGATURE KAF WITH HAH INITIAL FORM
-FCC6          ; mapped                 ; 0643 062E     # 1.1  ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
-FCC7          ; mapped                 ; 0643 0644     # 1.1  ARABIC LIGATURE KAF WITH LAM INITIAL FORM
-FCC8          ; mapped                 ; 0643 0645     # 1.1  ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
-FCC9          ; mapped                 ; 0644 062C     # 1.1  ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
-FCCA          ; mapped                 ; 0644 062D     # 1.1  ARABIC LIGATURE LAM WITH HAH INITIAL FORM
-FCCB          ; mapped                 ; 0644 062E     # 1.1  ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
-FCCC          ; mapped                 ; 0644 0645     # 1.1  ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
-FCCD          ; mapped                 ; 0644 0647     # 1.1  ARABIC LIGATURE LAM WITH HEH INITIAL FORM
-FCCE          ; mapped                 ; 0645 062C     # 1.1  ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
-FCCF          ; mapped                 ; 0645 062D     # 1.1  ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
-FCD0          ; mapped                 ; 0645 062E     # 1.1  ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
-FCD1          ; mapped                 ; 0645 0645     # 1.1  ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
-FCD2          ; mapped                 ; 0646 062C     # 1.1  ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
-FCD3          ; mapped                 ; 0646 062D     # 1.1  ARABIC LIGATURE NOON WITH HAH INITIAL FORM
-FCD4          ; mapped                 ; 0646 062E     # 1.1  ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
-FCD5          ; mapped                 ; 0646 0645     # 1.1  ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
-FCD6          ; mapped                 ; 0646 0647     # 1.1  ARABIC LIGATURE NOON WITH HEH INITIAL FORM
-FCD7          ; mapped                 ; 0647 062C     # 1.1  ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
-FCD8          ; mapped                 ; 0647 0645     # 1.1  ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
-FCD9          ; mapped                 ; 0647 0670     # 1.1  ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
-FCDA          ; mapped                 ; 064A 062C     # 1.1  ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
-FCDB          ; mapped                 ; 064A 062D     # 1.1  ARABIC LIGATURE YEH WITH HAH INITIAL FORM
-FCDC          ; mapped                 ; 064A 062E     # 1.1  ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
-FCDD          ; mapped                 ; 064A 0645     # 1.1  ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
-FCDE          ; mapped                 ; 064A 0647     # 1.1  ARABIC LIGATURE YEH WITH HEH INITIAL FORM
-FCDF          ; mapped                 ; 0626 0645     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
-FCE0          ; mapped                 ; 0626 0647     # 1.1  ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
-FCE1          ; mapped                 ; 0628 0645     # 1.1  ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
-FCE2          ; mapped                 ; 0628 0647     # 1.1  ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
-FCE3          ; mapped                 ; 062A 0645     # 1.1  ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
-FCE4          ; mapped                 ; 062A 0647     # 1.1  ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
-FCE5          ; mapped                 ; 062B 0645     # 1.1  ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
-FCE6          ; mapped                 ; 062B 0647     # 1.1  ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
-FCE7          ; mapped                 ; 0633 0645     # 1.1  ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
-FCE8          ; mapped                 ; 0633 0647     # 1.1  ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
-FCE9          ; mapped                 ; 0634 0645     # 1.1  ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
-FCEA          ; mapped                 ; 0634 0647     # 1.1  ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
-FCEB          ; mapped                 ; 0643 0644     # 1.1  ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
-FCEC          ; mapped                 ; 0643 0645     # 1.1  ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
-FCED          ; mapped                 ; 0644 0645     # 1.1  ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
-FCEE          ; mapped                 ; 0646 0645     # 1.1  ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
-FCEF          ; mapped                 ; 0646 0647     # 1.1  ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
-FCF0          ; mapped                 ; 064A 0645     # 1.1  ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
-FCF1          ; mapped                 ; 064A 0647     # 1.1  ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
-FCF2          ; mapped                 ; 0640 064E 0651 #1.1  ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
-FCF3          ; mapped                 ; 0640 064F 0651 #1.1  ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
-FCF4          ; mapped                 ; 0640 0650 0651 #1.1  ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
-FCF5          ; mapped                 ; 0637 0649     # 1.1  ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
-FCF6          ; mapped                 ; 0637 064A     # 1.1  ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
-FCF7          ; mapped                 ; 0639 0649     # 1.1  ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
-FCF8          ; mapped                 ; 0639 064A     # 1.1  ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
-FCF9          ; mapped                 ; 063A 0649     # 1.1  ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
-FCFA          ; mapped                 ; 063A 064A     # 1.1  ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
-FCFB          ; mapped                 ; 0633 0649     # 1.1  ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
-FCFC          ; mapped                 ; 0633 064A     # 1.1  ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
-FCFD          ; mapped                 ; 0634 0649     # 1.1  ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
-FCFE          ; mapped                 ; 0634 064A     # 1.1  ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
-FCFF          ; mapped                 ; 062D 0649     # 1.1  ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
-FD00          ; mapped                 ; 062D 064A     # 1.1  ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
-FD01          ; mapped                 ; 062C 0649     # 1.1  ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
-FD02          ; mapped                 ; 062C 064A     # 1.1  ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
-FD03          ; mapped                 ; 062E 0649     # 1.1  ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
-FD04          ; mapped                 ; 062E 064A     # 1.1  ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
-FD05          ; mapped                 ; 0635 0649     # 1.1  ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
-FD06          ; mapped                 ; 0635 064A     # 1.1  ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
-FD07          ; mapped                 ; 0636 0649     # 1.1  ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
-FD08          ; mapped                 ; 0636 064A     # 1.1  ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
-FD09          ; mapped                 ; 0634 062C     # 1.1  ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
-FD0A          ; mapped                 ; 0634 062D     # 1.1  ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
-FD0B          ; mapped                 ; 0634 062E     # 1.1  ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
-FD0C          ; mapped                 ; 0634 0645     # 1.1  ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
-FD0D          ; mapped                 ; 0634 0631     # 1.1  ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
-FD0E          ; mapped                 ; 0633 0631     # 1.1  ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
-FD0F          ; mapped                 ; 0635 0631     # 1.1  ARABIC LIGATURE SAD WITH REH ISOLATED FORM
-FD10          ; mapped                 ; 0636 0631     # 1.1  ARABIC LIGATURE DAD WITH REH ISOLATED FORM
-FD11          ; mapped                 ; 0637 0649     # 1.1  ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
-FD12          ; mapped                 ; 0637 064A     # 1.1  ARABIC LIGATURE TAH WITH YEH FINAL FORM
-FD13          ; mapped                 ; 0639 0649     # 1.1  ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
-FD14          ; mapped                 ; 0639 064A     # 1.1  ARABIC LIGATURE AIN WITH YEH FINAL FORM
-FD15          ; mapped                 ; 063A 0649     # 1.1  ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
-FD16          ; mapped                 ; 063A 064A     # 1.1  ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
-FD17          ; mapped                 ; 0633 0649     # 1.1  ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
-FD18          ; mapped                 ; 0633 064A     # 1.1  ARABIC LIGATURE SEEN WITH YEH FINAL FORM
-FD19          ; mapped                 ; 0634 0649     # 1.1  ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
-FD1A          ; mapped                 ; 0634 064A     # 1.1  ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
-FD1B          ; mapped                 ; 062D 0649     # 1.1  ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
-FD1C          ; mapped                 ; 062D 064A     # 1.1  ARABIC LIGATURE HAH WITH YEH FINAL FORM
-FD1D          ; mapped                 ; 062C 0649     # 1.1  ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
-FD1E          ; mapped                 ; 062C 064A     # 1.1  ARABIC LIGATURE JEEM WITH YEH FINAL FORM
-FD1F          ; mapped                 ; 062E 0649     # 1.1  ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
-FD20          ; mapped                 ; 062E 064A     # 1.1  ARABIC LIGATURE KHAH WITH YEH FINAL FORM
-FD21          ; mapped                 ; 0635 0649     # 1.1  ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
-FD22          ; mapped                 ; 0635 064A     # 1.1  ARABIC LIGATURE SAD WITH YEH FINAL FORM
-FD23          ; mapped                 ; 0636 0649     # 1.1  ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
-FD24          ; mapped                 ; 0636 064A     # 1.1  ARABIC LIGATURE DAD WITH YEH FINAL FORM
-FD25          ; mapped                 ; 0634 062C     # 1.1  ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
-FD26          ; mapped                 ; 0634 062D     # 1.1  ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
-FD27          ; mapped                 ; 0634 062E     # 1.1  ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
-FD28          ; mapped                 ; 0634 0645     # 1.1  ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
-FD29          ; mapped                 ; 0634 0631     # 1.1  ARABIC LIGATURE SHEEN WITH REH FINAL FORM
-FD2A          ; mapped                 ; 0633 0631     # 1.1  ARABIC LIGATURE SEEN WITH REH FINAL FORM
-FD2B          ; mapped                 ; 0635 0631     # 1.1  ARABIC LIGATURE SAD WITH REH FINAL FORM
-FD2C          ; mapped                 ; 0636 0631     # 1.1  ARABIC LIGATURE DAD WITH REH FINAL FORM
-FD2D          ; mapped                 ; 0634 062C     # 1.1  ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
-FD2E          ; mapped                 ; 0634 062D     # 1.1  ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
-FD2F          ; mapped                 ; 0634 062E     # 1.1  ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
-FD30          ; mapped                 ; 0634 0645     # 1.1  ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
-FD31          ; mapped                 ; 0633 0647     # 1.1  ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
-FD32          ; mapped                 ; 0634 0647     # 1.1  ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
-FD33          ; mapped                 ; 0637 0645     # 1.1  ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
-FD34          ; mapped                 ; 0633 062C     # 1.1  ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
-FD35          ; mapped                 ; 0633 062D     # 1.1  ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
-FD36          ; mapped                 ; 0633 062E     # 1.1  ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
-FD37          ; mapped                 ; 0634 062C     # 1.1  ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
-FD38          ; mapped                 ; 0634 062D     # 1.1  ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
-FD39          ; mapped                 ; 0634 062E     # 1.1  ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
-FD3A          ; mapped                 ; 0637 0645     # 1.1  ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
-FD3B          ; mapped                 ; 0638 0645     # 1.1  ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
-FD3C..FD3D    ; mapped                 ; 0627 064B     # 1.1  ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
-FD3E..FD3F    ; valid                  ;      ; NV8    # 1.1  ORNATE LEFT PARENTHESIS..ORNATE RIGHT PARENTHESIS
-FD40..FD4F    ; disallowed                             # NA   <reserved-FD40>..<reserved-FD4F>
-FD50          ; mapped                 ; 062A 062C 0645 #1.1  ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
-FD51..FD52    ; mapped                 ; 062A 062D 062C #1.1  ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM..ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
-FD53          ; mapped                 ; 062A 062D 0645 #1.1  ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
-FD54          ; mapped                 ; 062A 062E 0645 #1.1  ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
-FD55          ; mapped                 ; 062A 0645 062C #1.1  ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
-FD56          ; mapped                 ; 062A 0645 062D #1.1  ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
-FD57          ; mapped                 ; 062A 0645 062E #1.1  ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
-FD58..FD59    ; mapped                 ; 062C 0645 062D #1.1  ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
-FD5A          ; mapped                 ; 062D 0645 064A #1.1  ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
-FD5B          ; mapped                 ; 062D 0645 0649 #1.1  ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD5C          ; mapped                 ; 0633 062D 062C #1.1  ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
-FD5D          ; mapped                 ; 0633 062C 062D #1.1  ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
-FD5E          ; mapped                 ; 0633 062C 0649 #1.1  ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FD5F..FD60    ; mapped                 ; 0633 0645 062D #1.1  ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
-FD61          ; mapped                 ; 0633 0645 062C #1.1  ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
-FD62..FD63    ; mapped                 ; 0633 0645 0645 #1.1  ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
-FD64..FD65    ; mapped                 ; 0635 062D 062D #1.1  ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM..ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
-FD66          ; mapped                 ; 0635 0645 0645 #1.1  ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
-FD67..FD68    ; mapped                 ; 0634 062D 0645 #1.1  ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM..ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
-FD69          ; mapped                 ; 0634 062C 064A #1.1  ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
-FD6A..FD6B    ; mapped                 ; 0634 0645 062E #1.1  ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM..ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
-FD6C..FD6D    ; mapped                 ; 0634 0645 0645 #1.1  ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
-FD6E          ; mapped                 ; 0636 062D 0649 #1.1  ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD6F..FD70    ; mapped                 ; 0636 062E 0645 #1.1  ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM..ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
-FD71..FD72    ; mapped                 ; 0637 0645 062D #1.1  ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
-FD73          ; mapped                 ; 0637 0645 0645 #1.1  ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
-FD74          ; mapped                 ; 0637 0645 064A #1.1  ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
-FD75          ; mapped                 ; 0639 062C 0645 #1.1  ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
-FD76..FD77    ; mapped                 ; 0639 0645 0645 #1.1  ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
-FD78          ; mapped                 ; 0639 0645 0649 #1.1  ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD79          ; mapped                 ; 063A 0645 0645 #1.1  ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
-FD7A          ; mapped                 ; 063A 0645 064A #1.1  ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
-FD7B          ; mapped                 ; 063A 0645 0649 #1.1  ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD7C..FD7D    ; mapped                 ; 0641 062E 0645 #1.1  ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM..ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
-FD7E          ; mapped                 ; 0642 0645 062D #1.1  ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
-FD7F          ; mapped                 ; 0642 0645 0645 #1.1  ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
-FD80          ; mapped                 ; 0644 062D 0645 #1.1  ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
-FD81          ; mapped                 ; 0644 062D 064A #1.1  ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
-FD82          ; mapped                 ; 0644 062D 0649 #1.1  ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD83..FD84    ; mapped                 ; 0644 062C 062C #1.1  ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM..ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
-FD85..FD86    ; mapped                 ; 0644 062E 0645 #1.1  ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM..ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
-FD87..FD88    ; mapped                 ; 0644 0645 062D #1.1  ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
-FD89          ; mapped                 ; 0645 062D 062C #1.1  ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
-FD8A          ; mapped                 ; 0645 062D 0645 #1.1  ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
-FD8B          ; mapped                 ; 0645 062D 064A #1.1  ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
-FD8C          ; mapped                 ; 0645 062C 062D #1.1  ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
-FD8D          ; mapped                 ; 0645 062C 0645 #1.1  ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
-FD8E          ; mapped                 ; 0645 062E 062C #1.1  ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
-FD8F          ; mapped                 ; 0645 062E 0645 #1.1  ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
-FD90..FD91    ; disallowed                             # NA   <reserved-FD90>..<reserved-FD91>
-FD92          ; mapped                 ; 0645 062C 062E #1.1  ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
-FD93          ; mapped                 ; 0647 0645 062C #1.1  ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
-FD94          ; mapped                 ; 0647 0645 0645 #1.1  ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
-FD95          ; mapped                 ; 0646 062D 0645 #1.1  ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
-FD96          ; mapped                 ; 0646 062D 0649 #1.1  ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
-FD97..FD98    ; mapped                 ; 0646 062C 0645 #1.1  ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
-FD99          ; mapped                 ; 0646 062C 0649 #1.1  ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FD9A          ; mapped                 ; 0646 0645 064A #1.1  ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
-FD9B          ; mapped                 ; 0646 0645 0649 #1.1  ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FD9C..FD9D    ; mapped                 ; 064A 0645 0645 #1.1  ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
-FD9E          ; mapped                 ; 0628 062E 064A #1.1  ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
-FD9F          ; mapped                 ; 062A 062C 064A #1.1  ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
-FDA0          ; mapped                 ; 062A 062C 0649 #1.1  ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
-FDA1          ; mapped                 ; 062A 062E 064A #1.1  ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
-FDA2          ; mapped                 ; 062A 062E 0649 #1.1  ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
-FDA3          ; mapped                 ; 062A 0645 064A #1.1  ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
-FDA4          ; mapped                 ; 062A 0645 0649 #1.1  ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDA5          ; mapped                 ; 062C 0645 064A #1.1  ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
-FDA6          ; mapped                 ; 062C 062D 0649 #1.1  ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
-FDA7          ; mapped                 ; 062C 0645 0649 #1.1  ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
-FDA8          ; mapped                 ; 0633 062E 0649 #1.1  ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
-FDA9          ; mapped                 ; 0635 062D 064A #1.1  ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
-FDAA          ; mapped                 ; 0634 062D 064A #1.1  ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
-FDAB          ; mapped                 ; 0636 062D 064A #1.1  ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
-FDAC          ; mapped                 ; 0644 062C 064A #1.1  ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
-FDAD          ; mapped                 ; 0644 0645 064A #1.1  ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
-FDAE          ; mapped                 ; 064A 062D 064A #1.1  ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
-FDAF          ; mapped                 ; 064A 062C 064A #1.1  ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
-FDB0          ; mapped                 ; 064A 0645 064A #1.1  ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
-FDB1          ; mapped                 ; 0645 0645 064A #1.1  ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
-FDB2          ; mapped                 ; 0642 0645 064A #1.1  ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
-FDB3          ; mapped                 ; 0646 062D 064A #1.1  ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
-FDB4          ; mapped                 ; 0642 0645 062D #1.1  ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
-FDB5          ; mapped                 ; 0644 062D 0645 #1.1  ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
-FDB6          ; mapped                 ; 0639 0645 064A #1.1  ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
-FDB7          ; mapped                 ; 0643 0645 064A #1.1  ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
-FDB8          ; mapped                 ; 0646 062C 062D #1.1  ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
-FDB9          ; mapped                 ; 0645 062E 064A #1.1  ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
-FDBA          ; mapped                 ; 0644 062C 0645 #1.1  ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
-FDBB          ; mapped                 ; 0643 0645 0645 #1.1  ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
-FDBC          ; mapped                 ; 0644 062C 0645 #1.1  ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
-FDBD          ; mapped                 ; 0646 062C 062D #1.1  ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
-FDBE          ; mapped                 ; 062C 062D 064A #1.1  ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
-FDBF          ; mapped                 ; 062D 062C 064A #1.1  ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
-FDC0          ; mapped                 ; 0645 062C 064A #1.1  ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
-FDC1          ; mapped                 ; 0641 0645 064A #1.1  ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
-FDC2          ; mapped                 ; 0628 062D 064A #1.1  ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
-FDC3          ; mapped                 ; 0643 0645 0645 #1.1  ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
-FDC4          ; mapped                 ; 0639 062C 0645 #1.1  ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
-FDC5          ; mapped                 ; 0635 0645 0645 #1.1  ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
-FDC6          ; mapped                 ; 0633 062E 064A #1.1  ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
-FDC7          ; mapped                 ; 0646 062C 064A #1.1  ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
-FDC8..FDCF    ; disallowed                             # NA   <reserved-FDC8>..<reserved-FDCF>
-FDD0..FDEF    ; disallowed                             # 3.1  <noncharacter-FDD0>..<noncharacter-FDEF>
-FDF0          ; mapped                 ; 0635 0644 06D2 #1.1  ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
-FDF1          ; mapped                 ; 0642 0644 06D2 #1.1  ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
-FDF2          ; mapped                 ; 0627 0644 0644 0647 #1.1 ARABIC LIGATURE ALLAH ISOLATED FORM
-FDF3          ; mapped                 ; 0627 0643 0628 0631 #1.1 ARABIC LIGATURE AKBAR ISOLATED FORM
-FDF4          ; mapped                 ; 0645 062D 0645 062F #1.1 ARABIC LIGATURE MOHAMMAD ISOLATED FORM
-FDF5          ; mapped                 ; 0635 0644 0639 0645 #1.1 ARABIC LIGATURE SALAM ISOLATED FORM
-FDF6          ; mapped                 ; 0631 0633 0648 0644 #1.1 ARABIC LIGATURE RASOUL ISOLATED FORM
-FDF7          ; mapped                 ; 0639 0644 064A 0647 #1.1 ARABIC LIGATURE ALAYHE ISOLATED FORM
-FDF8          ; mapped                 ; 0648 0633 0644 0645 #1.1 ARABIC LIGATURE WASALLAM ISOLATED FORM
-FDF9          ; mapped                 ; 0635 0644 0649 #1.1  ARABIC LIGATURE SALLA ISOLATED FORM
-FDFA          ; disallowed_STD3_mapped ; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645 #1.1 ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
-FDFB          ; disallowed_STD3_mapped ; 062C 0644 0020 062C 0644 0627 0644 0647 #1.1 ARABIC LIGATURE JALLAJALALOUHOU
-FDFC          ; mapped                 ; 0631 06CC 0627 0644 #3.2 RIAL SIGN
-FDFD          ; valid                  ;      ; NV8    # 4.0  ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
-FDFE..FDFF    ; disallowed                             # NA   <reserved-FDFE>..<reserved-FDFF>
-FE00..FE0F    ; ignored                                # 3.2  VARIATION SELECTOR-1..VARIATION SELECTOR-16
-FE10          ; disallowed_STD3_mapped ; 002C          # 4.1  PRESENTATION FORM FOR VERTICAL COMMA
-FE11          ; mapped                 ; 3001          # 4.1  PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
-FE12          ; disallowed                             # 4.1  PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
-FE13          ; disallowed_STD3_mapped ; 003A          # 4.1  PRESENTATION FORM FOR VERTICAL COLON
-FE14          ; disallowed_STD3_mapped ; 003B          # 4.1  PRESENTATION FORM FOR VERTICAL SEMICOLON
-FE15          ; disallowed_STD3_mapped ; 0021          # 4.1  PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
-FE16          ; disallowed_STD3_mapped ; 003F          # 4.1  PRESENTATION FORM FOR VERTICAL QUESTION MARK
-FE17          ; mapped                 ; 3016          # 4.1  PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
-FE18          ; mapped                 ; 3017          # 4.1  PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
-FE19          ; disallowed                             # 4.1  PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
-FE1A..FE1F    ; disallowed                             # NA   <reserved-FE1A>..<reserved-FE1F>
-FE20..FE23    ; valid                                  # 1.1  COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF
-FE24..FE26    ; valid                                  # 5.1  COMBINING MACRON LEFT HALF..COMBINING CONJOINING MACRON
-FE27..FE2D    ; valid                                  # 7.0  COMBINING LIGATURE LEFT HALF BELOW..COMBINING CONJOINING MACRON BELOW
-FE2E..FE2F    ; valid                                  # 8.0  COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
-FE30          ; disallowed                             # 1.1  PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
-FE31          ; mapped                 ; 2014          # 1.1  PRESENTATION FORM FOR VERTICAL EM DASH
-FE32          ; mapped                 ; 2013          # 1.1  PRESENTATION FORM FOR VERTICAL EN DASH
-FE33..FE34    ; disallowed_STD3_mapped ; 005F          # 1.1  PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
-FE35          ; disallowed_STD3_mapped ; 0028          # 1.1  PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
-FE36          ; disallowed_STD3_mapped ; 0029          # 1.1  PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
-FE37          ; disallowed_STD3_mapped ; 007B          # 1.1  PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
-FE38          ; disallowed_STD3_mapped ; 007D          # 1.1  PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
-FE39          ; mapped                 ; 3014          # 1.1  PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
-FE3A          ; mapped                 ; 3015          # 1.1  PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
-FE3B          ; mapped                 ; 3010          # 1.1  PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
-FE3C          ; mapped                 ; 3011          # 1.1  PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
-FE3D          ; mapped                 ; 300A          # 1.1  PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
-FE3E          ; mapped                 ; 300B          # 1.1  PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
-FE3F          ; mapped                 ; 3008          # 1.1  PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
-FE40          ; mapped                 ; 3009          # 1.1  PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
-FE41          ; mapped                 ; 300C          # 1.1  PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
-FE42          ; mapped                 ; 300D          # 1.1  PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
-FE43          ; mapped                 ; 300E          # 1.1  PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
-FE44          ; mapped                 ; 300F          # 1.1  PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
-FE45..FE46    ; valid                  ;      ; NV8    # 3.2  SESAME DOT..WHITE SESAME DOT
-FE47          ; disallowed_STD3_mapped ; 005B          # 4.0  PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
-FE48          ; disallowed_STD3_mapped ; 005D          # 4.0  PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
-FE49..FE4C    ; disallowed_STD3_mapped ; 0020 0305     # 1.1  DASHED OVERLINE..DOUBLE WAVY OVERLINE
-FE4D..FE4F    ; disallowed_STD3_mapped ; 005F          # 1.1  DASHED LOW LINE..WAVY LOW LINE
-FE50          ; disallowed_STD3_mapped ; 002C          # 1.1  SMALL COMMA
-FE51          ; mapped                 ; 3001          # 1.1  SMALL IDEOGRAPHIC COMMA
-FE52          ; disallowed                             # 1.1  SMALL FULL STOP
-FE53          ; disallowed                             # NA   <reserved-FE53>
-FE54          ; disallowed_STD3_mapped ; 003B          # 1.1  SMALL SEMICOLON
-FE55          ; disallowed_STD3_mapped ; 003A          # 1.1  SMALL COLON
-FE56          ; disallowed_STD3_mapped ; 003F          # 1.1  SMALL QUESTION MARK
-FE57          ; disallowed_STD3_mapped ; 0021          # 1.1  SMALL EXCLAMATION MARK
-FE58          ; mapped                 ; 2014          # 1.1  SMALL EM DASH
-FE59          ; disallowed_STD3_mapped ; 0028          # 1.1  SMALL LEFT PARENTHESIS
-FE5A          ; disallowed_STD3_mapped ; 0029          # 1.1  SMALL RIGHT PARENTHESIS
-FE5B          ; disallowed_STD3_mapped ; 007B          # 1.1  SMALL LEFT CURLY BRACKET
-FE5C          ; disallowed_STD3_mapped ; 007D          # 1.1  SMALL RIGHT CURLY BRACKET
-FE5D          ; mapped                 ; 3014          # 1.1  SMALL LEFT TORTOISE SHELL BRACKET
-FE5E          ; mapped                 ; 3015          # 1.1  SMALL RIGHT TORTOISE SHELL BRACKET
-FE5F          ; disallowed_STD3_mapped ; 0023          # 1.1  SMALL NUMBER SIGN
-FE60          ; disallowed_STD3_mapped ; 0026          # 1.1  SMALL AMPERSAND
-FE61          ; disallowed_STD3_mapped ; 002A          # 1.1  SMALL ASTERISK
-FE62          ; disallowed_STD3_mapped ; 002B          # 1.1  SMALL PLUS SIGN
-FE63          ; mapped                 ; 002D          # 1.1  SMALL HYPHEN-MINUS
-FE64          ; disallowed_STD3_mapped ; 003C          # 1.1  SMALL LESS-THAN SIGN
-FE65          ; disallowed_STD3_mapped ; 003E          # 1.1  SMALL GREATER-THAN SIGN
-FE66          ; disallowed_STD3_mapped ; 003D          # 1.1  SMALL EQUALS SIGN
-FE67          ; disallowed                             # NA   <reserved-FE67>
-FE68          ; disallowed_STD3_mapped ; 005C          # 1.1  SMALL REVERSE SOLIDUS
-FE69          ; disallowed_STD3_mapped ; 0024          # 1.1  SMALL DOLLAR SIGN
-FE6A          ; disallowed_STD3_mapped ; 0025          # 1.1  SMALL PERCENT SIGN
-FE6B          ; disallowed_STD3_mapped ; 0040          # 1.1  SMALL COMMERCIAL AT
-FE6C..FE6F    ; disallowed                             # NA   <reserved-FE6C>..<reserved-FE6F>
-FE70          ; disallowed_STD3_mapped ; 0020 064B     # 1.1  ARABIC FATHATAN ISOLATED FORM
-FE71          ; mapped                 ; 0640 064B     # 1.1  ARABIC TATWEEL WITH FATHATAN ABOVE
-FE72          ; disallowed_STD3_mapped ; 0020 064C     # 1.1  ARABIC DAMMATAN ISOLATED FORM
-FE73          ; valid                                  # 3.2  ARABIC TAIL FRAGMENT
-FE74          ; disallowed_STD3_mapped ; 0020 064D     # 1.1  ARABIC KASRATAN ISOLATED FORM
-FE75          ; disallowed                             # NA   <reserved-FE75>
-FE76          ; disallowed_STD3_mapped ; 0020 064E     # 1.1  ARABIC FATHA ISOLATED FORM
-FE77          ; mapped                 ; 0640 064E     # 1.1  ARABIC FATHA MEDIAL FORM
-FE78          ; disallowed_STD3_mapped ; 0020 064F     # 1.1  ARABIC DAMMA ISOLATED FORM
-FE79          ; mapped                 ; 0640 064F     # 1.1  ARABIC DAMMA MEDIAL FORM
-FE7A          ; disallowed_STD3_mapped ; 0020 0650     # 1.1  ARABIC KASRA ISOLATED FORM
-FE7B          ; mapped                 ; 0640 0650     # 1.1  ARABIC KASRA MEDIAL FORM
-FE7C          ; disallowed_STD3_mapped ; 0020 0651     # 1.1  ARABIC SHADDA ISOLATED FORM
-FE7D          ; mapped                 ; 0640 0651     # 1.1  ARABIC SHADDA MEDIAL FORM
-FE7E          ; disallowed_STD3_mapped ; 0020 0652     # 1.1  ARABIC SUKUN ISOLATED FORM
-FE7F          ; mapped                 ; 0640 0652     # 1.1  ARABIC SUKUN MEDIAL FORM
-FE80          ; mapped                 ; 0621          # 1.1  ARABIC LETTER HAMZA ISOLATED FORM
-FE81..FE82    ; mapped                 ; 0622          # 1.1  ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
-FE83..FE84    ; mapped                 ; 0623          # 1.1  ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
-FE85..FE86    ; mapped                 ; 0624          # 1.1  ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
-FE87..FE88    ; mapped                 ; 0625          # 1.1  ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM..ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
-FE89..FE8C    ; mapped                 ; 0626          # 1.1  ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
-FE8D..FE8E    ; mapped                 ; 0627          # 1.1  ARABIC LETTER ALEF ISOLATED FORM..ARABIC LETTER ALEF FINAL FORM
-FE8F..FE92    ; mapped                 ; 0628          # 1.1  ARABIC LETTER BEH ISOLATED FORM..ARABIC LETTER BEH MEDIAL FORM
-FE93..FE94    ; mapped                 ; 0629          # 1.1  ARABIC LETTER TEH MARBUTA ISOLATED FORM..ARABIC LETTER TEH MARBUTA FINAL FORM
-FE95..FE98    ; mapped                 ; 062A          # 1.1  ARABIC LETTER TEH ISOLATED FORM..ARABIC LETTER TEH MEDIAL FORM
-FE99..FE9C    ; mapped                 ; 062B          # 1.1  ARABIC LETTER THEH ISOLATED FORM..ARABIC LETTER THEH MEDIAL FORM
-FE9D..FEA0    ; mapped                 ; 062C          # 1.1  ARABIC LETTER JEEM ISOLATED FORM..ARABIC LETTER JEEM MEDIAL FORM
-FEA1..FEA4    ; mapped                 ; 062D          # 1.1  ARABIC LETTER HAH ISOLATED FORM..ARABIC LETTER HAH MEDIAL FORM
-FEA5..FEA8    ; mapped                 ; 062E          # 1.1  ARABIC LETTER KHAH ISOLATED FORM..ARABIC LETTER KHAH MEDIAL FORM
-FEA9..FEAA    ; mapped                 ; 062F          # 1.1  ARABIC LETTER DAL ISOLATED FORM..ARABIC LETTER DAL FINAL FORM
-FEAB..FEAC    ; mapped                 ; 0630          # 1.1  ARABIC LETTER THAL ISOLATED FORM..ARABIC LETTER THAL FINAL FORM
-FEAD..FEAE    ; mapped                 ; 0631          # 1.1  ARABIC LETTER REH ISOLATED FORM..ARABIC LETTER REH FINAL FORM
-FEAF..FEB0    ; mapped                 ; 0632          # 1.1  ARABIC LETTER ZAIN ISOLATED FORM..ARABIC LETTER ZAIN FINAL FORM
-FEB1..FEB4    ; mapped                 ; 0633          # 1.1  ARABIC LETTER SEEN ISOLATED FORM..ARABIC LETTER SEEN MEDIAL FORM
-FEB5..FEB8    ; mapped                 ; 0634          # 1.1  ARABIC LETTER SHEEN ISOLATED FORM..ARABIC LETTER SHEEN MEDIAL FORM
-FEB9..FEBC    ; mapped                 ; 0635          # 1.1  ARABIC LETTER SAD ISOLATED FORM..ARABIC LETTER SAD MEDIAL FORM
-FEBD..FEC0    ; mapped                 ; 0636          # 1.1  ARABIC LETTER DAD ISOLATED FORM..ARABIC LETTER DAD MEDIAL FORM
-FEC1..FEC4    ; mapped                 ; 0637          # 1.1  ARABIC LETTER TAH ISOLATED FORM..ARABIC LETTER TAH MEDIAL FORM
-FEC5..FEC8    ; mapped                 ; 0638          # 1.1  ARABIC LETTER ZAH ISOLATED FORM..ARABIC LETTER ZAH MEDIAL FORM
-FEC9..FECC    ; mapped                 ; 0639          # 1.1  ARABIC LETTER AIN ISOLATED FORM..ARABIC LETTER AIN MEDIAL FORM
-FECD..FED0    ; mapped                 ; 063A          # 1.1  ARABIC LETTER GHAIN ISOLATED FORM..ARABIC LETTER GHAIN MEDIAL FORM
-FED1..FED4    ; mapped                 ; 0641          # 1.1  ARABIC LETTER FEH ISOLATED FORM..ARABIC LETTER FEH MEDIAL FORM
-FED5..FED8    ; mapped                 ; 0642          # 1.1  ARABIC LETTER QAF ISOLATED FORM..ARABIC LETTER QAF MEDIAL FORM
-FED9..FEDC    ; mapped                 ; 0643          # 1.1  ARABIC LETTER KAF ISOLATED FORM..ARABIC LETTER KAF MEDIAL FORM
-FEDD..FEE0    ; mapped                 ; 0644          # 1.1  ARABIC LETTER LAM ISOLATED FORM..ARABIC LETTER LAM MEDIAL FORM
-FEE1..FEE4    ; mapped                 ; 0645          # 1.1  ARABIC LETTER MEEM ISOLATED FORM..ARABIC LETTER MEEM MEDIAL FORM
-FEE5..FEE8    ; mapped                 ; 0646          # 1.1  ARABIC LETTER NOON ISOLATED FORM..ARABIC LETTER NOON MEDIAL FORM
-FEE9..FEEC    ; mapped                 ; 0647          # 1.1  ARABIC LETTER HEH ISOLATED FORM..ARABIC LETTER HEH MEDIAL FORM
-FEED..FEEE    ; mapped                 ; 0648          # 1.1  ARABIC LETTER WAW ISOLATED FORM..ARABIC LETTER WAW FINAL FORM
-FEEF..FEF0    ; mapped                 ; 0649          # 1.1  ARABIC LETTER ALEF MAKSURA ISOLATED FORM..ARABIC LETTER ALEF MAKSURA FINAL FORM
-FEF1..FEF4    ; mapped                 ; 064A          # 1.1  ARABIC LETTER YEH ISOLATED FORM..ARABIC LETTER YEH MEDIAL FORM
-FEF5..FEF6    ; mapped                 ; 0644 0622     # 1.1  ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
-FEF7..FEF8    ; mapped                 ; 0644 0623     # 1.1  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
-FEF9..FEFA    ; mapped                 ; 0644 0625     # 1.1  ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
-FEFB..FEFC    ; mapped                 ; 0644 0627     # 1.1  ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-FEFD..FEFE    ; disallowed                             # NA   <reserved-FEFD>..<reserved-FEFE>
-FEFF          ; ignored                                # 1.1  ZERO WIDTH NO-BREAK SPACE
-FF00          ; disallowed                             # NA   <reserved-FF00>
-FF01          ; disallowed_STD3_mapped ; 0021          # 1.1  FULLWIDTH EXCLAMATION MARK
-FF02          ; disallowed_STD3_mapped ; 0022          # 1.1  FULLWIDTH QUOTATION MARK
-FF03          ; disallowed_STD3_mapped ; 0023          # 1.1  FULLWIDTH NUMBER SIGN
-FF04          ; disallowed_STD3_mapped ; 0024          # 1.1  FULLWIDTH DOLLAR SIGN
-FF05          ; disallowed_STD3_mapped ; 0025          # 1.1  FULLWIDTH PERCENT SIGN
-FF06          ; disallowed_STD3_mapped ; 0026          # 1.1  FULLWIDTH AMPERSAND
-FF07          ; disallowed_STD3_mapped ; 0027          # 1.1  FULLWIDTH APOSTROPHE
-FF08          ; disallowed_STD3_mapped ; 0028          # 1.1  FULLWIDTH LEFT PARENTHESIS
-FF09          ; disallowed_STD3_mapped ; 0029          # 1.1  FULLWIDTH RIGHT PARENTHESIS
-FF0A          ; disallowed_STD3_mapped ; 002A          # 1.1  FULLWIDTH ASTERISK
-FF0B          ; disallowed_STD3_mapped ; 002B          # 1.1  FULLWIDTH PLUS SIGN
-FF0C          ; disallowed_STD3_mapped ; 002C          # 1.1  FULLWIDTH COMMA
-FF0D          ; mapped                 ; 002D          # 1.1  FULLWIDTH HYPHEN-MINUS
-FF0E          ; mapped                 ; 002E          # 1.1  FULLWIDTH FULL STOP
-FF0F          ; disallowed_STD3_mapped ; 002F          # 1.1  FULLWIDTH SOLIDUS
-FF10          ; mapped                 ; 0030          # 1.1  FULLWIDTH DIGIT ZERO
-FF11          ; mapped                 ; 0031          # 1.1  FULLWIDTH DIGIT ONE
-FF12          ; mapped                 ; 0032          # 1.1  FULLWIDTH DIGIT TWO
-FF13          ; mapped                 ; 0033          # 1.1  FULLWIDTH DIGIT THREE
-FF14          ; mapped                 ; 0034          # 1.1  FULLWIDTH DIGIT FOUR
-FF15          ; mapped                 ; 0035          # 1.1  FULLWIDTH DIGIT FIVE
-FF16          ; mapped                 ; 0036          # 1.1  FULLWIDTH DIGIT SIX
-FF17          ; mapped                 ; 0037          # 1.1  FULLWIDTH DIGIT SEVEN
-FF18          ; mapped                 ; 0038          # 1.1  FULLWIDTH DIGIT EIGHT
-FF19          ; mapped                 ; 0039          # 1.1  FULLWIDTH DIGIT NINE
-FF1A          ; disallowed_STD3_mapped ; 003A          # 1.1  FULLWIDTH COLON
-FF1B          ; disallowed_STD3_mapped ; 003B          # 1.1  FULLWIDTH SEMICOLON
-FF1C          ; disallowed_STD3_mapped ; 003C          # 1.1  FULLWIDTH LESS-THAN SIGN
-FF1D          ; disallowed_STD3_mapped ; 003D          # 1.1  FULLWIDTH EQUALS SIGN
-FF1E          ; disallowed_STD3_mapped ; 003E          # 1.1  FULLWIDTH GREATER-THAN SIGN
-FF1F          ; disallowed_STD3_mapped ; 003F          # 1.1  FULLWIDTH QUESTION MARK
-FF20          ; disallowed_STD3_mapped ; 0040          # 1.1  FULLWIDTH COMMERCIAL AT
-FF21          ; mapped                 ; 0061          # 1.1  FULLWIDTH LATIN CAPITAL LETTER A
-FF22          ; mapped                 ; 0062          # 1.1  FULLWIDTH LATIN CAPITAL LETTER B
-FF23          ; mapped                 ; 0063          # 1.1  FULLWIDTH LATIN CAPITAL LETTER C
-FF24          ; mapped                 ; 0064          # 1.1  FULLWIDTH LATIN CAPITAL LETTER D
-FF25          ; mapped                 ; 0065          # 1.1  FULLWIDTH LATIN CAPITAL LETTER E
-FF26          ; mapped                 ; 0066          # 1.1  FULLWIDTH LATIN CAPITAL LETTER F
-FF27          ; mapped                 ; 0067          # 1.1  FULLWIDTH LATIN CAPITAL LETTER G
-FF28          ; mapped                 ; 0068          # 1.1  FULLWIDTH LATIN CAPITAL LETTER H
-FF29          ; mapped                 ; 0069          # 1.1  FULLWIDTH LATIN CAPITAL LETTER I
-FF2A          ; mapped                 ; 006A          # 1.1  FULLWIDTH LATIN CAPITAL LETTER J
-FF2B          ; mapped                 ; 006B          # 1.1  FULLWIDTH LATIN CAPITAL LETTER K
-FF2C          ; mapped                 ; 006C          # 1.1  FULLWIDTH LATIN CAPITAL LETTER L
-FF2D          ; mapped                 ; 006D          # 1.1  FULLWIDTH LATIN CAPITAL LETTER M
-FF2E          ; mapped                 ; 006E          # 1.1  FULLWIDTH LATIN CAPITAL LETTER N
-FF2F          ; mapped                 ; 006F          # 1.1  FULLWIDTH LATIN CAPITAL LETTER O
-FF30          ; mapped                 ; 0070          # 1.1  FULLWIDTH LATIN CAPITAL LETTER P
-FF31          ; mapped                 ; 0071          # 1.1  FULLWIDTH LATIN CAPITAL LETTER Q
-FF32          ; mapped                 ; 0072          # 1.1  FULLWIDTH LATIN CAPITAL LETTER R
-FF33          ; mapped                 ; 0073          # 1.1  FULLWIDTH LATIN CAPITAL LETTER S
-FF34          ; mapped                 ; 0074          # 1.1  FULLWIDTH LATIN CAPITAL LETTER T
-FF35          ; mapped                 ; 0075          # 1.1  FULLWIDTH LATIN CAPITAL LETTER U
-FF36          ; mapped                 ; 0076          # 1.1  FULLWIDTH LATIN CAPITAL LETTER V
-FF37          ; mapped                 ; 0077          # 1.1  FULLWIDTH LATIN CAPITAL LETTER W
-FF38          ; mapped                 ; 0078          # 1.1  FULLWIDTH LATIN CAPITAL LETTER X
-FF39          ; mapped                 ; 0079          # 1.1  FULLWIDTH LATIN CAPITAL LETTER Y
-FF3A          ; mapped                 ; 007A          # 1.1  FULLWIDTH LATIN CAPITAL LETTER Z
-FF3B          ; disallowed_STD3_mapped ; 005B          # 1.1  FULLWIDTH LEFT SQUARE BRACKET
-FF3C          ; disallowed_STD3_mapped ; 005C          # 1.1  FULLWIDTH REVERSE SOLIDUS
-FF3D          ; disallowed_STD3_mapped ; 005D          # 1.1  FULLWIDTH RIGHT SQUARE BRACKET
-FF3E          ; disallowed_STD3_mapped ; 005E          # 1.1  FULLWIDTH CIRCUMFLEX ACCENT
-FF3F          ; disallowed_STD3_mapped ; 005F          # 1.1  FULLWIDTH LOW LINE
-FF40          ; disallowed_STD3_mapped ; 0060          # 1.1  FULLWIDTH GRAVE ACCENT
-FF41          ; mapped                 ; 0061          # 1.1  FULLWIDTH LATIN SMALL LETTER A
-FF42          ; mapped                 ; 0062          # 1.1  FULLWIDTH LATIN SMALL LETTER B
-FF43          ; mapped                 ; 0063          # 1.1  FULLWIDTH LATIN SMALL LETTER C
-FF44          ; mapped                 ; 0064          # 1.1  FULLWIDTH LATIN SMALL LETTER D
-FF45          ; mapped                 ; 0065          # 1.1  FULLWIDTH LATIN SMALL LETTER E
-FF46          ; mapped                 ; 0066          # 1.1  FULLWIDTH LATIN SMALL LETTER F
-FF47          ; mapped                 ; 0067          # 1.1  FULLWIDTH LATIN SMALL LETTER G
-FF48          ; mapped                 ; 0068          # 1.1  FULLWIDTH LATIN SMALL LETTER H
-FF49          ; mapped                 ; 0069          # 1.1  FULLWIDTH LATIN SMALL LETTER I
-FF4A          ; mapped                 ; 006A          # 1.1  FULLWIDTH LATIN SMALL LETTER J
-FF4B          ; mapped                 ; 006B          # 1.1  FULLWIDTH LATIN SMALL LETTER K
-FF4C          ; mapped                 ; 006C          # 1.1  FULLWIDTH LATIN SMALL LETTER L
-FF4D          ; mapped                 ; 006D          # 1.1  FULLWIDTH LATIN SMALL LETTER M
-FF4E          ; mapped                 ; 006E          # 1.1  FULLWIDTH LATIN SMALL LETTER N
-FF4F          ; mapped                 ; 006F          # 1.1  FULLWIDTH LATIN SMALL LETTER O
-FF50          ; mapped                 ; 0070          # 1.1  FULLWIDTH LATIN SMALL LETTER P
-FF51          ; mapped                 ; 0071          # 1.1  FULLWIDTH LATIN SMALL LETTER Q
-FF52          ; mapped                 ; 0072          # 1.1  FULLWIDTH LATIN SMALL LETTER R
-FF53          ; mapped                 ; 0073          # 1.1  FULLWIDTH LATIN SMALL LETTER S
-FF54          ; mapped                 ; 0074          # 1.1  FULLWIDTH LATIN SMALL LETTER T
-FF55          ; mapped                 ; 0075          # 1.1  FULLWIDTH LATIN SMALL LETTER U
-FF56          ; mapped                 ; 0076          # 1.1  FULLWIDTH LATIN SMALL LETTER V
-FF57          ; mapped                 ; 0077          # 1.1  FULLWIDTH LATIN SMALL LETTER W
-FF58          ; mapped                 ; 0078          # 1.1  FULLWIDTH LATIN SMALL LETTER X
-FF59          ; mapped                 ; 0079          # 1.1  FULLWIDTH LATIN SMALL LETTER Y
-FF5A          ; mapped                 ; 007A          # 1.1  FULLWIDTH LATIN SMALL LETTER Z
-FF5B          ; disallowed_STD3_mapped ; 007B          # 1.1  FULLWIDTH LEFT CURLY BRACKET
-FF5C          ; disallowed_STD3_mapped ; 007C          # 1.1  FULLWIDTH VERTICAL LINE
-FF5D          ; disallowed_STD3_mapped ; 007D          # 1.1  FULLWIDTH RIGHT CURLY BRACKET
-FF5E          ; disallowed_STD3_mapped ; 007E          # 1.1  FULLWIDTH TILDE
-FF5F          ; mapped                 ; 2985          # 3.2  FULLWIDTH LEFT WHITE PARENTHESIS
-FF60          ; mapped                 ; 2986          # 3.2  FULLWIDTH RIGHT WHITE PARENTHESIS
-FF61          ; mapped                 ; 002E          # 1.1  HALFWIDTH IDEOGRAPHIC FULL STOP
-FF62          ; mapped                 ; 300C          # 1.1  HALFWIDTH LEFT CORNER BRACKET
-FF63          ; mapped                 ; 300D          # 1.1  HALFWIDTH RIGHT CORNER BRACKET
-FF64          ; mapped                 ; 3001          # 1.1  HALFWIDTH IDEOGRAPHIC COMMA
-FF65          ; mapped                 ; 30FB          # 1.1  HALFWIDTH KATAKANA MIDDLE DOT
-FF66          ; mapped                 ; 30F2          # 1.1  HALFWIDTH KATAKANA LETTER WO
-FF67          ; mapped                 ; 30A1          # 1.1  HALFWIDTH KATAKANA LETTER SMALL A
-FF68          ; mapped                 ; 30A3          # 1.1  HALFWIDTH KATAKANA LETTER SMALL I
-FF69          ; mapped                 ; 30A5          # 1.1  HALFWIDTH KATAKANA LETTER SMALL U
-FF6A          ; mapped                 ; 30A7          # 1.1  HALFWIDTH KATAKANA LETTER SMALL E
-FF6B          ; mapped                 ; 30A9          # 1.1  HALFWIDTH KATAKANA LETTER SMALL O
-FF6C          ; mapped                 ; 30E3          # 1.1  HALFWIDTH KATAKANA LETTER SMALL YA
-FF6D          ; mapped                 ; 30E5          # 1.1  HALFWIDTH KATAKANA LETTER SMALL YU
-FF6E          ; mapped                 ; 30E7          # 1.1  HALFWIDTH KATAKANA LETTER SMALL YO
-FF6F          ; mapped                 ; 30C3          # 1.1  HALFWIDTH KATAKANA LETTER SMALL TU
-FF70          ; mapped                 ; 30FC          # 1.1  HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF71          ; mapped                 ; 30A2          # 1.1  HALFWIDTH KATAKANA LETTER A
-FF72          ; mapped                 ; 30A4          # 1.1  HALFWIDTH KATAKANA LETTER I
-FF73          ; mapped                 ; 30A6          # 1.1  HALFWIDTH KATAKANA LETTER U
-FF74          ; mapped                 ; 30A8          # 1.1  HALFWIDTH KATAKANA LETTER E
-FF75          ; mapped                 ; 30AA          # 1.1  HALFWIDTH KATAKANA LETTER O
-FF76          ; mapped                 ; 30AB          # 1.1  HALFWIDTH KATAKANA LETTER KA
-FF77          ; mapped                 ; 30AD          # 1.1  HALFWIDTH KATAKANA LETTER KI
-FF78          ; mapped                 ; 30AF          # 1.1  HALFWIDTH KATAKANA LETTER KU
-FF79          ; mapped                 ; 30B1          # 1.1  HALFWIDTH KATAKANA LETTER KE
-FF7A          ; mapped                 ; 30B3          # 1.1  HALFWIDTH KATAKANA LETTER KO
-FF7B          ; mapped                 ; 30B5          # 1.1  HALFWIDTH KATAKANA LETTER SA
-FF7C          ; mapped                 ; 30B7          # 1.1  HALFWIDTH KATAKANA LETTER SI
-FF7D          ; mapped                 ; 30B9          # 1.1  HALFWIDTH KATAKANA LETTER SU
-FF7E          ; mapped                 ; 30BB          # 1.1  HALFWIDTH KATAKANA LETTER SE
-FF7F          ; mapped                 ; 30BD          # 1.1  HALFWIDTH KATAKANA LETTER SO
-FF80          ; mapped                 ; 30BF          # 1.1  HALFWIDTH KATAKANA LETTER TA
-FF81          ; mapped                 ; 30C1          # 1.1  HALFWIDTH KATAKANA LETTER TI
-FF82          ; mapped                 ; 30C4          # 1.1  HALFWIDTH KATAKANA LETTER TU
-FF83          ; mapped                 ; 30C6          # 1.1  HALFWIDTH KATAKANA LETTER TE
-FF84          ; mapped                 ; 30C8          # 1.1  HALFWIDTH KATAKANA LETTER TO
-FF85          ; mapped                 ; 30CA          # 1.1  HALFWIDTH KATAKANA LETTER NA
-FF86          ; mapped                 ; 30CB          # 1.1  HALFWIDTH KATAKANA LETTER NI
-FF87          ; mapped                 ; 30CC          # 1.1  HALFWIDTH KATAKANA LETTER NU
-FF88          ; mapped                 ; 30CD          # 1.1  HALFWIDTH KATAKANA LETTER NE
-FF89          ; mapped                 ; 30CE          # 1.1  HALFWIDTH KATAKANA LETTER NO
-FF8A          ; mapped                 ; 30CF          # 1.1  HALFWIDTH KATAKANA LETTER HA
-FF8B          ; mapped                 ; 30D2          # 1.1  HALFWIDTH KATAKANA LETTER HI
-FF8C          ; mapped                 ; 30D5          # 1.1  HALFWIDTH KATAKANA LETTER HU
-FF8D          ; mapped                 ; 30D8          # 1.1  HALFWIDTH KATAKANA LETTER HE
-FF8E          ; mapped                 ; 30DB          # 1.1  HALFWIDTH KATAKANA LETTER HO
-FF8F          ; mapped                 ; 30DE          # 1.1  HALFWIDTH KATAKANA LETTER MA
-FF90          ; mapped                 ; 30DF          # 1.1  HALFWIDTH KATAKANA LETTER MI
-FF91          ; mapped                 ; 30E0          # 1.1  HALFWIDTH KATAKANA LETTER MU
-FF92          ; mapped                 ; 30E1          # 1.1  HALFWIDTH KATAKANA LETTER ME
-FF93          ; mapped                 ; 30E2          # 1.1  HALFWIDTH KATAKANA LETTER MO
-FF94          ; mapped                 ; 30E4          # 1.1  HALFWIDTH KATAKANA LETTER YA
-FF95          ; mapped                 ; 30E6          # 1.1  HALFWIDTH KATAKANA LETTER YU
-FF96          ; mapped                 ; 30E8          # 1.1  HALFWIDTH KATAKANA LETTER YO
-FF97          ; mapped                 ; 30E9          # 1.1  HALFWIDTH KATAKANA LETTER RA
-FF98          ; mapped                 ; 30EA          # 1.1  HALFWIDTH KATAKANA LETTER RI
-FF99          ; mapped                 ; 30EB          # 1.1  HALFWIDTH KATAKANA LETTER RU
-FF9A          ; mapped                 ; 30EC          # 1.1  HALFWIDTH KATAKANA LETTER RE
-FF9B          ; mapped                 ; 30ED          # 1.1  HALFWIDTH KATAKANA LETTER RO
-FF9C          ; mapped                 ; 30EF          # 1.1  HALFWIDTH KATAKANA LETTER WA
-FF9D          ; mapped                 ; 30F3          # 1.1  HALFWIDTH KATAKANA LETTER N
-FF9E          ; mapped                 ; 3099          # 1.1  HALFWIDTH KATAKANA VOICED SOUND MARK
-FF9F          ; mapped                 ; 309A          # 1.1  HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-FFA0          ; disallowed                             # 1.1  HALFWIDTH HANGUL FILLER
-FFA1          ; mapped                 ; 1100          # 1.1  HALFWIDTH HANGUL LETTER KIYEOK
-FFA2          ; mapped                 ; 1101          # 1.1  HALFWIDTH HANGUL LETTER SSANGKIYEOK
-FFA3          ; mapped                 ; 11AA          # 1.1  HALFWIDTH HANGUL LETTER KIYEOK-SIOS
-FFA4          ; mapped                 ; 1102          # 1.1  HALFWIDTH HANGUL LETTER NIEUN
-FFA5          ; mapped                 ; 11AC          # 1.1  HALFWIDTH HANGUL LETTER NIEUN-CIEUC
-FFA6          ; mapped                 ; 11AD          # 1.1  HALFWIDTH HANGUL LETTER NIEUN-HIEUH
-FFA7          ; mapped                 ; 1103          # 1.1  HALFWIDTH HANGUL LETTER TIKEUT
-FFA8          ; mapped                 ; 1104          # 1.1  HALFWIDTH HANGUL LETTER SSANGTIKEUT
-FFA9          ; mapped                 ; 1105          # 1.1  HALFWIDTH HANGUL LETTER RIEUL
-FFAA          ; mapped                 ; 11B0          # 1.1  HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
-FFAB          ; mapped                 ; 11B1          # 1.1  HALFWIDTH HANGUL LETTER RIEUL-MIEUM
-FFAC          ; mapped                 ; 11B2          # 1.1  HALFWIDTH HANGUL LETTER RIEUL-PIEUP
-FFAD          ; mapped                 ; 11B3          # 1.1  HALFWIDTH HANGUL LETTER RIEUL-SIOS
-FFAE          ; mapped                 ; 11B4          # 1.1  HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
-FFAF          ; mapped                 ; 11B5          # 1.1  HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
-FFB0          ; mapped                 ; 111A          # 1.1  HALFWIDTH HANGUL LETTER RIEUL-HIEUH
-FFB1          ; mapped                 ; 1106          # 1.1  HALFWIDTH HANGUL LETTER MIEUM
-FFB2          ; mapped                 ; 1107          # 1.1  HALFWIDTH HANGUL LETTER PIEUP
-FFB3          ; mapped                 ; 1108          # 1.1  HALFWIDTH HANGUL LETTER SSANGPIEUP
-FFB4          ; mapped                 ; 1121          # 1.1  HALFWIDTH HANGUL LETTER PIEUP-SIOS
-FFB5          ; mapped                 ; 1109          # 1.1  HALFWIDTH HANGUL LETTER SIOS
-FFB6          ; mapped                 ; 110A          # 1.1  HALFWIDTH HANGUL LETTER SSANGSIOS
-FFB7          ; mapped                 ; 110B          # 1.1  HALFWIDTH HANGUL LETTER IEUNG
-FFB8          ; mapped                 ; 110C          # 1.1  HALFWIDTH HANGUL LETTER CIEUC
-FFB9          ; mapped                 ; 110D          # 1.1  HALFWIDTH HANGUL LETTER SSANGCIEUC
-FFBA          ; mapped                 ; 110E          # 1.1  HALFWIDTH HANGUL LETTER CHIEUCH
-FFBB          ; mapped                 ; 110F          # 1.1  HALFWIDTH HANGUL LETTER KHIEUKH
-FFBC          ; mapped                 ; 1110          # 1.1  HALFWIDTH HANGUL LETTER THIEUTH
-FFBD          ; mapped                 ; 1111          # 1.1  HALFWIDTH HANGUL LETTER PHIEUPH
-FFBE          ; mapped                 ; 1112          # 1.1  HALFWIDTH HANGUL LETTER HIEUH
-FFBF..FFC1    ; disallowed                             # NA   <reserved-FFBF>..<reserved-FFC1>
-FFC2          ; mapped                 ; 1161          # 1.1  HALFWIDTH HANGUL LETTER A
-FFC3          ; mapped                 ; 1162          # 1.1  HALFWIDTH HANGUL LETTER AE
-FFC4          ; mapped                 ; 1163          # 1.1  HALFWIDTH HANGUL LETTER YA
-FFC5          ; mapped                 ; 1164          # 1.1  HALFWIDTH HANGUL LETTER YAE
-FFC6          ; mapped                 ; 1165          # 1.1  HALFWIDTH HANGUL LETTER EO
-FFC7          ; mapped                 ; 1166          # 1.1  HALFWIDTH HANGUL LETTER E
-FFC8..FFC9    ; disallowed                             # NA   <reserved-FFC8>..<reserved-FFC9>
-FFCA          ; mapped                 ; 1167          # 1.1  HALFWIDTH HANGUL LETTER YEO
-FFCB          ; mapped                 ; 1168          # 1.1  HALFWIDTH HANGUL LETTER YE
-FFCC          ; mapped                 ; 1169          # 1.1  HALFWIDTH HANGUL LETTER O
-FFCD          ; mapped                 ; 116A          # 1.1  HALFWIDTH HANGUL LETTER WA
-FFCE          ; mapped                 ; 116B          # 1.1  HALFWIDTH HANGUL LETTER WAE
-FFCF          ; mapped                 ; 116C          # 1.1  HALFWIDTH HANGUL LETTER OE
-FFD0..FFD1    ; disallowed                             # NA   <reserved-FFD0>..<reserved-FFD1>
-FFD2          ; mapped                 ; 116D          # 1.1  HALFWIDTH HANGUL LETTER YO
-FFD3          ; mapped                 ; 116E          # 1.1  HALFWIDTH HANGUL LETTER U
-FFD4          ; mapped                 ; 116F          # 1.1  HALFWIDTH HANGUL LETTER WEO
-FFD5          ; mapped                 ; 1170          # 1.1  HALFWIDTH HANGUL LETTER WE
-FFD6          ; mapped                 ; 1171          # 1.1  HALFWIDTH HANGUL LETTER WI
-FFD7          ; mapped                 ; 1172          # 1.1  HALFWIDTH HANGUL LETTER YU
-FFD8..FFD9    ; disallowed                             # NA   <reserved-FFD8>..<reserved-FFD9>
-FFDA          ; mapped                 ; 1173          # 1.1  HALFWIDTH HANGUL LETTER EU
-FFDB          ; mapped                 ; 1174          # 1.1  HALFWIDTH HANGUL LETTER YI
-FFDC          ; mapped                 ; 1175          # 1.1  HALFWIDTH HANGUL LETTER I
-FFDD..FFDF    ; disallowed                             # NA   <reserved-FFDD>..<reserved-FFDF>
-FFE0          ; mapped                 ; 00A2          # 1.1  FULLWIDTH CENT SIGN
-FFE1          ; mapped                 ; 00A3          # 1.1  FULLWIDTH POUND SIGN
-FFE2          ; mapped                 ; 00AC          # 1.1  FULLWIDTH NOT SIGN
-FFE3          ; disallowed_STD3_mapped ; 0020 0304     # 1.1  FULLWIDTH MACRON
-FFE4          ; mapped                 ; 00A6          # 1.1  FULLWIDTH BROKEN BAR
-FFE5          ; mapped                 ; 00A5          # 1.1  FULLWIDTH YEN SIGN
-FFE6          ; mapped                 ; 20A9          # 1.1  FULLWIDTH WON SIGN
-FFE7          ; disallowed                             # NA   <reserved-FFE7>
-FFE8          ; mapped                 ; 2502          # 1.1  HALFWIDTH FORMS LIGHT VERTICAL
-FFE9          ; mapped                 ; 2190          # 1.1  HALFWIDTH LEFTWARDS ARROW
-FFEA          ; mapped                 ; 2191          # 1.1  HALFWIDTH UPWARDS ARROW
-FFEB          ; mapped                 ; 2192          # 1.1  HALFWIDTH RIGHTWARDS ARROW
-FFEC          ; mapped                 ; 2193          # 1.1  HALFWIDTH DOWNWARDS ARROW
-FFED          ; mapped                 ; 25A0          # 1.1  HALFWIDTH BLACK SQUARE
-FFEE          ; mapped                 ; 25CB          # 1.1  HALFWIDTH WHITE CIRCLE
-FFEF..FFF8    ; disallowed                             # NA   <reserved-FFEF>..<reserved-FFF8>
-FFF9..FFFB    ; disallowed                             # 3.0  INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
-FFFC          ; disallowed                             # 2.1  OBJECT REPLACEMENT CHARACTER
-FFFD          ; disallowed                             # 1.1  REPLACEMENT CHARACTER
-FFFE..FFFF    ; disallowed                             # 1.1  <noncharacter-FFFE>..<noncharacter-FFFF>
-10000..1000B  ; valid                                  # 4.0  LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
-1000C         ; disallowed                             # NA   <reserved-1000C>
-1000D..10026  ; valid                                  # 4.0  LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
-10027         ; disallowed                             # NA   <reserved-10027>
-10028..1003A  ; valid                                  # 4.0  LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
-1003B         ; disallowed                             # NA   <reserved-1003B>
-1003C..1003D  ; valid                                  # 4.0  LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
-1003E         ; disallowed                             # NA   <reserved-1003E>
-1003F..1004D  ; valid                                  # 4.0  LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
-1004E..1004F  ; disallowed                             # NA   <reserved-1004E>..<reserved-1004F>
-10050..1005D  ; valid                                  # 4.0  LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
-1005E..1007F  ; disallowed                             # NA   <reserved-1005E>..<reserved-1007F>
-10080..100FA  ; valid                                  # 4.0  LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
-100FB..100FF  ; disallowed                             # NA   <reserved-100FB>..<reserved-100FF>
-10100..10102  ; valid                  ;      ; NV8    # 4.0  AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK
-10103..10106  ; disallowed                             # NA   <reserved-10103>..<reserved-10106>
-10107..10133  ; valid                  ;      ; NV8    # 4.0  AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
-10134..10136  ; disallowed                             # NA   <reserved-10134>..<reserved-10136>
-10137..1013F  ; valid                  ;      ; NV8    # 4.0  AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
-10140..1018A  ; valid                  ;      ; NV8    # 4.1  GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ZERO SIGN
-1018B..1018C  ; valid                  ;      ; NV8    # 7.0  GREEK ONE QUARTER SIGN..GREEK SINUSOID SIGN
-1018D..1018E  ; valid                  ;      ; NV8    # 9.0  GREEK INDICTION SIGN..NOMISMA SIGN
-1018F         ; disallowed                             # NA   <reserved-1018F>
-10190..1019B  ; valid                  ;      ; NV8    # 5.1  ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
-1019C         ; valid                  ;      ; NV8    # 13.0 ASCIA SYMBOL
-1019D..1019F  ; disallowed                             # NA   <reserved-1019D>..<reserved-1019F>
-101A0         ; valid                  ;      ; NV8    # 7.0  GREEK SYMBOL TAU RHO
-101A1..101CF  ; disallowed                             # NA   <reserved-101A1>..<reserved-101CF>
-101D0..101FC  ; valid                  ;      ; NV8    # 5.1  PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
-101FD         ; valid                                  # 5.1  PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
-101FE..1027F  ; disallowed                             # NA   <reserved-101FE>..<reserved-1027F>
-10280..1029C  ; valid                                  # 5.1  LYCIAN LETTER A..LYCIAN LETTER X
-1029D..1029F  ; disallowed                             # NA   <reserved-1029D>..<reserved-1029F>
-102A0..102D0  ; valid                                  # 5.1  CARIAN LETTER A..CARIAN LETTER UUU3
-102D1..102DF  ; disallowed                             # NA   <reserved-102D1>..<reserved-102DF>
-102E0         ; valid                                  # 7.0  COPTIC EPACT THOUSANDS MARK
-102E1..102FB  ; valid                  ;      ; NV8    # 7.0  COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
-102FC..102FF  ; disallowed                             # NA   <reserved-102FC>..<reserved-102FF>
-10300..1031E  ; valid                                  # 3.1  OLD ITALIC LETTER A..OLD ITALIC LETTER UU
-1031F         ; valid                                  # 7.0  OLD ITALIC LETTER ESS
-10320..10323  ; valid                  ;      ; NV8    # 3.1  OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
-10324..1032C  ; disallowed                             # NA   <reserved-10324>..<reserved-1032C>
-1032D..1032F  ; valid                                  # 10.0 OLD ITALIC LETTER YE..OLD ITALIC LETTER SOUTHERN TSE
-10330..10340  ; valid                                  # 3.1  GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA
-10341         ; valid                  ;      ; NV8    # 3.1  GOTHIC LETTER NINETY
-10342..10349  ; valid                                  # 3.1  GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
-1034A         ; valid                  ;      ; NV8    # 3.1  GOTHIC LETTER NINE HUNDRED
-1034B..1034F  ; disallowed                             # NA   <reserved-1034B>..<reserved-1034F>
-10350..1037A  ; valid                                  # 7.0  OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
-1037B..1037F  ; disallowed                             # NA   <reserved-1037B>..<reserved-1037F>
-10380..1039D  ; valid                                  # 4.0  UGARITIC LETTER ALPA..UGARITIC LETTER SSU
-1039E         ; disallowed                             # NA   <reserved-1039E>
-1039F         ; valid                  ;      ; NV8    # 4.0  UGARITIC WORD DIVIDER
-103A0..103C3  ; valid                                  # 4.1  OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
-103C4..103C7  ; disallowed                             # NA   <reserved-103C4>..<reserved-103C7>
-103C8..103CF  ; valid                                  # 4.1  OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
-103D0..103D5  ; valid                  ;      ; NV8    # 4.1  OLD PERSIAN WORD DIVIDER..OLD PERSIAN NUMBER HUNDRED
-103D6..103FF  ; disallowed                             # NA   <reserved-103D6>..<reserved-103FF>
-10400         ; mapped                 ; 10428         # 3.1  DESERET CAPITAL LETTER LONG I
-10401         ; mapped                 ; 10429         # 3.1  DESERET CAPITAL LETTER LONG E
-10402         ; mapped                 ; 1042A         # 3.1  DESERET CAPITAL LETTER LONG A
-10403         ; mapped                 ; 1042B         # 3.1  DESERET CAPITAL LETTER LONG AH
-10404         ; mapped                 ; 1042C         # 3.1  DESERET CAPITAL LETTER LONG O
-10405         ; mapped                 ; 1042D         # 3.1  DESERET CAPITAL LETTER LONG OO
-10406         ; mapped                 ; 1042E         # 3.1  DESERET CAPITAL LETTER SHORT I
-10407         ; mapped                 ; 1042F         # 3.1  DESERET CAPITAL LETTER SHORT E
-10408         ; mapped                 ; 10430         # 3.1  DESERET CAPITAL LETTER SHORT A
-10409         ; mapped                 ; 10431         # 3.1  DESERET CAPITAL LETTER SHORT AH
-1040A         ; mapped                 ; 10432         # 3.1  DESERET CAPITAL LETTER SHORT O
-1040B         ; mapped                 ; 10433         # 3.1  DESERET CAPITAL LETTER SHORT OO
-1040C         ; mapped                 ; 10434         # 3.1  DESERET CAPITAL LETTER AY
-1040D         ; mapped                 ; 10435         # 3.1  DESERET CAPITAL LETTER OW
-1040E         ; mapped                 ; 10436         # 3.1  DESERET CAPITAL LETTER WU
-1040F         ; mapped                 ; 10437         # 3.1  DESERET CAPITAL LETTER YEE
-10410         ; mapped                 ; 10438         # 3.1  DESERET CAPITAL LETTER H
-10411         ; mapped                 ; 10439         # 3.1  DESERET CAPITAL LETTER PEE
-10412         ; mapped                 ; 1043A         # 3.1  DESERET CAPITAL LETTER BEE
-10413         ; mapped                 ; 1043B         # 3.1  DESERET CAPITAL LETTER TEE
-10414         ; mapped                 ; 1043C         # 3.1  DESERET CAPITAL LETTER DEE
-10415         ; mapped                 ; 1043D         # 3.1  DESERET CAPITAL LETTER CHEE
-10416         ; mapped                 ; 1043E         # 3.1  DESERET CAPITAL LETTER JEE
-10417         ; mapped                 ; 1043F         # 3.1  DESERET CAPITAL LETTER KAY
-10418         ; mapped                 ; 10440         # 3.1  DESERET CAPITAL LETTER GAY
-10419         ; mapped                 ; 10441         # 3.1  DESERET CAPITAL LETTER EF
-1041A         ; mapped                 ; 10442         # 3.1  DESERET CAPITAL LETTER VEE
-1041B         ; mapped                 ; 10443         # 3.1  DESERET CAPITAL LETTER ETH
-1041C         ; mapped                 ; 10444         # 3.1  DESERET CAPITAL LETTER THEE
-1041D         ; mapped                 ; 10445         # 3.1  DESERET CAPITAL LETTER ES
-1041E         ; mapped                 ; 10446         # 3.1  DESERET CAPITAL LETTER ZEE
-1041F         ; mapped                 ; 10447         # 3.1  DESERET CAPITAL LETTER ESH
-10420         ; mapped                 ; 10448         # 3.1  DESERET CAPITAL LETTER ZHEE
-10421         ; mapped                 ; 10449         # 3.1  DESERET CAPITAL LETTER ER
-10422         ; mapped                 ; 1044A         # 3.1  DESERET CAPITAL LETTER EL
-10423         ; mapped                 ; 1044B         # 3.1  DESERET CAPITAL LETTER EM
-10424         ; mapped                 ; 1044C         # 3.1  DESERET CAPITAL LETTER EN
-10425         ; mapped                 ; 1044D         # 3.1  DESERET CAPITAL LETTER ENG
-10426         ; mapped                 ; 1044E         # 4.0  DESERET CAPITAL LETTER OI
-10427         ; mapped                 ; 1044F         # 4.0  DESERET CAPITAL LETTER EW
-10428..1044D  ; valid                                  # 3.1  DESERET SMALL LETTER LONG I..DESERET SMALL LETTER ENG
-1044E..1049D  ; valid                                  # 4.0  DESERET SMALL LETTER OI..OSMANYA LETTER OO
-1049E..1049F  ; disallowed                             # NA   <reserved-1049E>..<reserved-1049F>
-104A0..104A9  ; valid                                  # 4.0  OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
-104AA..104AF  ; disallowed                             # NA   <reserved-104AA>..<reserved-104AF>
-104B0         ; mapped                 ; 104D8         # 9.0  OSAGE CAPITAL LETTER A
-104B1         ; mapped                 ; 104D9         # 9.0  OSAGE CAPITAL LETTER AI
-104B2         ; mapped                 ; 104DA         # 9.0  OSAGE CAPITAL LETTER AIN
-104B3         ; mapped                 ; 104DB         # 9.0  OSAGE CAPITAL LETTER AH
-104B4         ; mapped                 ; 104DC         # 9.0  OSAGE CAPITAL LETTER BRA
-104B5         ; mapped                 ; 104DD         # 9.0  OSAGE CAPITAL LETTER CHA
-104B6         ; mapped                 ; 104DE         # 9.0  OSAGE CAPITAL LETTER EHCHA
-104B7         ; mapped                 ; 104DF         # 9.0  OSAGE CAPITAL LETTER E
-104B8         ; mapped                 ; 104E0         # 9.0  OSAGE CAPITAL LETTER EIN
-104B9         ; mapped                 ; 104E1         # 9.0  OSAGE CAPITAL LETTER HA
-104BA         ; mapped                 ; 104E2         # 9.0  OSAGE CAPITAL LETTER HYA
-104BB         ; mapped                 ; 104E3         # 9.0  OSAGE CAPITAL LETTER I
-104BC         ; mapped                 ; 104E4         # 9.0  OSAGE CAPITAL LETTER KA
-104BD         ; mapped                 ; 104E5         # 9.0  OSAGE CAPITAL LETTER EHKA
-104BE         ; mapped                 ; 104E6         # 9.0  OSAGE CAPITAL LETTER KYA
-104BF         ; mapped                 ; 104E7         # 9.0  OSAGE CAPITAL LETTER LA
-104C0         ; mapped                 ; 104E8         # 9.0  OSAGE CAPITAL LETTER MA
-104C1         ; mapped                 ; 104E9         # 9.0  OSAGE CAPITAL LETTER NA
-104C2         ; mapped                 ; 104EA         # 9.0  OSAGE CAPITAL LETTER O
-104C3         ; mapped                 ; 104EB         # 9.0  OSAGE CAPITAL LETTER OIN
-104C4         ; mapped                 ; 104EC         # 9.0  OSAGE CAPITAL LETTER PA
-104C5         ; mapped                 ; 104ED         # 9.0  OSAGE CAPITAL LETTER EHPA
-104C6         ; mapped                 ; 104EE         # 9.0  OSAGE CAPITAL LETTER SA
-104C7         ; mapped                 ; 104EF         # 9.0  OSAGE CAPITAL LETTER SHA
-104C8         ; mapped                 ; 104F0         # 9.0  OSAGE CAPITAL LETTER TA
-104C9         ; mapped                 ; 104F1         # 9.0  OSAGE CAPITAL LETTER EHTA
-104CA         ; mapped                 ; 104F2         # 9.0  OSAGE CAPITAL LETTER TSA
-104CB         ; mapped                 ; 104F3         # 9.0  OSAGE CAPITAL LETTER EHTSA
-104CC         ; mapped                 ; 104F4         # 9.0  OSAGE CAPITAL LETTER TSHA
-104CD         ; mapped                 ; 104F5         # 9.0  OSAGE CAPITAL LETTER DHA
-104CE         ; mapped                 ; 104F6         # 9.0  OSAGE CAPITAL LETTER U
-104CF         ; mapped                 ; 104F7         # 9.0  OSAGE CAPITAL LETTER WA
-104D0         ; mapped                 ; 104F8         # 9.0  OSAGE CAPITAL LETTER KHA
-104D1         ; mapped                 ; 104F9         # 9.0  OSAGE CAPITAL LETTER GHA
-104D2         ; mapped                 ; 104FA         # 9.0  OSAGE CAPITAL LETTER ZA
-104D3         ; mapped                 ; 104FB         # 9.0  OSAGE CAPITAL LETTER ZHA
-104D4..104D7  ; disallowed                             # NA   <reserved-104D4>..<reserved-104D7>
-104D8..104FB  ; valid                                  # 9.0  OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
-104FC..104FF  ; disallowed                             # NA   <reserved-104FC>..<reserved-104FF>
-10500..10527  ; valid                                  # 7.0  ELBASAN LETTER A..ELBASAN LETTER KHE
-10528..1052F  ; disallowed                             # NA   <reserved-10528>..<reserved-1052F>
-10530..10563  ; valid                                  # 7.0  CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
-10564..1056E  ; disallowed                             # NA   <reserved-10564>..<reserved-1056E>
-1056F         ; valid                  ;      ; NV8    # 7.0  CAUCASIAN ALBANIAN CITATION MARK
-10570..105FF  ; disallowed                             # NA   <reserved-10570>..<reserved-105FF>
-10600..10736  ; valid                                  # 7.0  LINEAR A SIGN AB001..LINEAR A SIGN A664
-10737..1073F  ; disallowed                             # NA   <reserved-10737>..<reserved-1073F>
-10740..10755  ; valid                                  # 7.0  LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
-10756..1075F  ; disallowed                             # NA   <reserved-10756>..<reserved-1075F>
-10760..10767  ; valid                                  # 7.0  LINEAR A SIGN A800..LINEAR A SIGN A807
-10768..107FF  ; disallowed                             # NA   <reserved-10768>..<reserved-107FF>
-10800..10805  ; valid                                  # 4.0  CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
-10806..10807  ; disallowed                             # NA   <reserved-10806>..<reserved-10807>
-10808         ; valid                                  # 4.0  CYPRIOT SYLLABLE JO
-10809         ; disallowed                             # NA   <reserved-10809>
-1080A..10835  ; valid                                  # 4.0  CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
-10836         ; disallowed                             # NA   <reserved-10836>
-10837..10838  ; valid                                  # 4.0  CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
-10839..1083B  ; disallowed                             # NA   <reserved-10839>..<reserved-1083B>
-1083C         ; valid                                  # 4.0  CYPRIOT SYLLABLE ZA
-1083D..1083E  ; disallowed                             # NA   <reserved-1083D>..<reserved-1083E>
-1083F         ; valid                                  # 4.0  CYPRIOT SYLLABLE ZO
-10840..10855  ; valid                                  # 5.2  IMPERIAL ARAMAIC LETTER ALEPH..IMPERIAL ARAMAIC LETTER TAW
-10856         ; disallowed                             # NA   <reserved-10856>
-10857..1085F  ; valid                  ;      ; NV8    # 5.2  IMPERIAL ARAMAIC SECTION SIGN..IMPERIAL ARAMAIC NUMBER TEN THOUSAND
-10860..10876  ; valid                                  # 7.0  PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW
-10877..1087F  ; valid                  ;      ; NV8    # 7.0  PALMYRENE LEFT-POINTING FLEURON..PALMYRENE NUMBER TWENTY
-10880..1089E  ; valid                                  # 7.0  NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW
-1089F..108A6  ; disallowed                             # NA   <reserved-1089F>..<reserved-108A6>
-108A7..108AF  ; valid                  ;      ; NV8    # 7.0  NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED
-108B0..108DF  ; disallowed                             # NA   <reserved-108B0>..<reserved-108DF>
-108E0..108F2  ; valid                                  # 8.0  HATRAN LETTER ALEPH..HATRAN LETTER QOPH
-108F3         ; disallowed                             # NA   <reserved-108F3>
-108F4..108F5  ; valid                                  # 8.0  HATRAN LETTER SHIN..HATRAN LETTER TAW
-108F6..108FA  ; disallowed                             # NA   <reserved-108F6>..<reserved-108FA>
-108FB..108FF  ; valid                  ;      ; NV8    # 8.0  HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED
-10900..10915  ; valid                                  # 5.0  PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
-10916..10919  ; valid                  ;      ; NV8    # 5.0  PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER ONE HUNDRED
-1091A..1091B  ; valid                  ;      ; NV8    # 5.2  PHOENICIAN NUMBER TWO..PHOENICIAN NUMBER THREE
-1091C..1091E  ; disallowed                             # NA   <reserved-1091C>..<reserved-1091E>
-1091F         ; valid                  ;      ; NV8    # 5.0  PHOENICIAN WORD SEPARATOR
-10920..10939  ; valid                                  # 5.1  LYDIAN LETTER A..LYDIAN LETTER C
-1093A..1093E  ; disallowed                             # NA   <reserved-1093A>..<reserved-1093E>
-1093F         ; valid                  ;      ; NV8    # 5.1  LYDIAN TRIANGULAR MARK
-10940..1097F  ; disallowed                             # NA   <reserved-10940>..<reserved-1097F>
-10980..109B7  ; valid                                  # 6.1  MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA
-109B8..109BB  ; disallowed                             # NA   <reserved-109B8>..<reserved-109BB>
-109BC..109BD  ; valid                  ;      ; NV8    # 8.0  MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF
-109BE..109BF  ; valid                                  # 6.1  MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
-109C0..109CF  ; valid                  ;      ; NV8    # 8.0  MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY
-109D0..109D1  ; disallowed                             # NA   <reserved-109D0>..<reserved-109D1>
-109D2..109FF  ; valid                  ;      ; NV8    # 8.0  MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS
-10A00..10A03  ; valid                                  # 4.1  KHAROSHTHI LETTER A..KHAROSHTHI VOWEL SIGN VOCALIC R
-10A04         ; disallowed                             # NA   <reserved-10A04>
-10A05..10A06  ; valid                                  # 4.1  KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
-10A07..10A0B  ; disallowed                             # NA   <reserved-10A07>..<reserved-10A0B>
-10A0C..10A13  ; valid                                  # 4.1  KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI LETTER GHA
-10A14         ; disallowed                             # NA   <reserved-10A14>
-10A15..10A17  ; valid                                  # 4.1  KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
-10A18         ; disallowed                             # NA   <reserved-10A18>
-10A19..10A33  ; valid                                  # 4.1  KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
-10A34..10A35  ; valid                                  # 11.0 KHAROSHTHI LETTER TTTA..KHAROSHTHI LETTER VHA
-10A36..10A37  ; disallowed                             # NA   <reserved-10A36>..<reserved-10A37>
-10A38..10A3A  ; valid                                  # 4.1  KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
-10A3B..10A3E  ; disallowed                             # NA   <reserved-10A3B>..<reserved-10A3E>
-10A3F         ; valid                                  # 4.1  KHAROSHTHI VIRAMA
-10A40..10A47  ; valid                  ;      ; NV8    # 4.1  KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
-10A48         ; valid                  ;      ; NV8    # 11.0 KHAROSHTHI FRACTION ONE HALF
-10A49..10A4F  ; disallowed                             # NA   <reserved-10A49>..<reserved-10A4F>
-10A50..10A58  ; valid                  ;      ; NV8    # 4.1  KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
-10A59..10A5F  ; disallowed                             # NA   <reserved-10A59>..<reserved-10A5F>
-10A60..10A7C  ; valid                                  # 5.2  OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH
-10A7D..10A7F  ; valid                  ;      ; NV8    # 5.2  OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMERIC INDICATOR
-10A80..10A9C  ; valid                                  # 7.0  OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH
-10A9D..10A9F  ; valid                  ;      ; NV8    # 7.0  OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY
-10AA0..10ABF  ; disallowed                             # NA   <reserved-10AA0>..<reserved-10ABF>
-10AC0..10AC7  ; valid                                  # 7.0  MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
-10AC8         ; valid                  ;      ; NV8    # 7.0  MANICHAEAN SIGN UD
-10AC9..10AE6  ; valid                                  # 7.0  MANICHAEAN LETTER ZAYIN..MANICHAEAN ABBREVIATION MARK BELOW
-10AE7..10AEA  ; disallowed                             # NA   <reserved-10AE7>..<reserved-10AEA>
-10AEB..10AF6  ; valid                  ;      ; NV8    # 7.0  MANICHAEAN NUMBER ONE..MANICHAEAN PUNCTUATION LINE FILLER
-10AF7..10AFF  ; disallowed                             # NA   <reserved-10AF7>..<reserved-10AFF>
-10B00..10B35  ; valid                                  # 5.2  AVESTAN LETTER A..AVESTAN LETTER HE
-10B36..10B38  ; disallowed                             # NA   <reserved-10B36>..<reserved-10B38>
-10B39..10B3F  ; valid                  ;      ; NV8    # 5.2  AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION
-10B40..10B55  ; valid                                  # 5.2  INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW
-10B56..10B57  ; disallowed                             # NA   <reserved-10B56>..<reserved-10B57>
-10B58..10B5F  ; valid                  ;      ; NV8    # 5.2  INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND
-10B60..10B72  ; valid                                  # 5.2  INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW
-10B73..10B77  ; disallowed                             # NA   <reserved-10B73>..<reserved-10B77>
-10B78..10B7F  ; valid                  ;      ; NV8    # 5.2  INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
-10B80..10B91  ; valid                                  # 7.0  PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW
-10B92..10B98  ; disallowed                             # NA   <reserved-10B92>..<reserved-10B98>
-10B99..10B9C  ; valid                  ;      ; NV8    # 7.0  PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT
-10B9D..10BA8  ; disallowed                             # NA   <reserved-10B9D>..<reserved-10BA8>
-10BA9..10BAF  ; valid                  ;      ; NV8    # 7.0  PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED
-10BB0..10BFF  ; disallowed                             # NA   <reserved-10BB0>..<reserved-10BFF>
-10C00..10C48  ; valid                                  # 5.2  OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH
-10C49..10C7F  ; disallowed                             # NA   <reserved-10C49>..<reserved-10C7F>
-10C80         ; mapped                 ; 10CC0         # 8.0  OLD HUNGARIAN CAPITAL LETTER A
-10C81         ; mapped                 ; 10CC1         # 8.0  OLD HUNGARIAN CAPITAL LETTER AA
-10C82         ; mapped                 ; 10CC2         # 8.0  OLD HUNGARIAN CAPITAL LETTER EB
-10C83         ; mapped                 ; 10CC3         # 8.0  OLD HUNGARIAN CAPITAL LETTER AMB
-10C84         ; mapped                 ; 10CC4         # 8.0  OLD HUNGARIAN CAPITAL LETTER EC
-10C85         ; mapped                 ; 10CC5         # 8.0  OLD HUNGARIAN CAPITAL LETTER ENC
-10C86         ; mapped                 ; 10CC6         # 8.0  OLD HUNGARIAN CAPITAL LETTER ECS
-10C87         ; mapped                 ; 10CC7         # 8.0  OLD HUNGARIAN CAPITAL LETTER ED
-10C88         ; mapped                 ; 10CC8         # 8.0  OLD HUNGARIAN CAPITAL LETTER AND
-10C89         ; mapped                 ; 10CC9         # 8.0  OLD HUNGARIAN CAPITAL LETTER E
-10C8A         ; mapped                 ; 10CCA         # 8.0  OLD HUNGARIAN CAPITAL LETTER CLOSE E
-10C8B         ; mapped                 ; 10CCB         # 8.0  OLD HUNGARIAN CAPITAL LETTER EE
-10C8C         ; mapped                 ; 10CCC         # 8.0  OLD HUNGARIAN CAPITAL LETTER EF
-10C8D         ; mapped                 ; 10CCD         # 8.0  OLD HUNGARIAN CAPITAL LETTER EG
-10C8E         ; mapped                 ; 10CCE         # 8.0  OLD HUNGARIAN CAPITAL LETTER EGY
-10C8F         ; mapped                 ; 10CCF         # 8.0  OLD HUNGARIAN CAPITAL LETTER EH
-10C90         ; mapped                 ; 10CD0         # 8.0  OLD HUNGARIAN CAPITAL LETTER I
-10C91         ; mapped                 ; 10CD1         # 8.0  OLD HUNGARIAN CAPITAL LETTER II
-10C92         ; mapped                 ; 10CD2         # 8.0  OLD HUNGARIAN CAPITAL LETTER EJ
-10C93         ; mapped                 ; 10CD3         # 8.0  OLD HUNGARIAN CAPITAL LETTER EK
-10C94         ; mapped                 ; 10CD4         # 8.0  OLD HUNGARIAN CAPITAL LETTER AK
-10C95         ; mapped                 ; 10CD5         # 8.0  OLD HUNGARIAN CAPITAL LETTER UNK
-10C96         ; mapped                 ; 10CD6         # 8.0  OLD HUNGARIAN CAPITAL LETTER EL
-10C97         ; mapped                 ; 10CD7         # 8.0  OLD HUNGARIAN CAPITAL LETTER ELY
-10C98         ; mapped                 ; 10CD8         # 8.0  OLD HUNGARIAN CAPITAL LETTER EM
-10C99         ; mapped                 ; 10CD9         # 8.0  OLD HUNGARIAN CAPITAL LETTER EN
-10C9A         ; mapped                 ; 10CDA         # 8.0  OLD HUNGARIAN CAPITAL LETTER ENY
-10C9B         ; mapped                 ; 10CDB         # 8.0  OLD HUNGARIAN CAPITAL LETTER O
-10C9C         ; mapped                 ; 10CDC         # 8.0  OLD HUNGARIAN CAPITAL LETTER OO
-10C9D         ; mapped                 ; 10CDD         # 8.0  OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE
-10C9E         ; mapped                 ; 10CDE         # 8.0  OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE
-10C9F         ; mapped                 ; 10CDF         # 8.0  OLD HUNGARIAN CAPITAL LETTER OEE
-10CA0         ; mapped                 ; 10CE0         # 8.0  OLD HUNGARIAN CAPITAL LETTER EP
-10CA1         ; mapped                 ; 10CE1         # 8.0  OLD HUNGARIAN CAPITAL LETTER EMP
-10CA2         ; mapped                 ; 10CE2         # 8.0  OLD HUNGARIAN CAPITAL LETTER ER
-10CA3         ; mapped                 ; 10CE3         # 8.0  OLD HUNGARIAN CAPITAL LETTER SHORT ER
-10CA4         ; mapped                 ; 10CE4         # 8.0  OLD HUNGARIAN CAPITAL LETTER ES
-10CA5         ; mapped                 ; 10CE5         # 8.0  OLD HUNGARIAN CAPITAL LETTER ESZ
-10CA6         ; mapped                 ; 10CE6         # 8.0  OLD HUNGARIAN CAPITAL LETTER ET
-10CA7         ; mapped                 ; 10CE7         # 8.0  OLD HUNGARIAN CAPITAL LETTER ENT
-10CA8         ; mapped                 ; 10CE8         # 8.0  OLD HUNGARIAN CAPITAL LETTER ETY
-10CA9         ; mapped                 ; 10CE9         # 8.0  OLD HUNGARIAN CAPITAL LETTER ECH
-10CAA         ; mapped                 ; 10CEA         # 8.0  OLD HUNGARIAN CAPITAL LETTER U
-10CAB         ; mapped                 ; 10CEB         # 8.0  OLD HUNGARIAN CAPITAL LETTER UU
-10CAC         ; mapped                 ; 10CEC         # 8.0  OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE
-10CAD         ; mapped                 ; 10CED         # 8.0  OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE
-10CAE         ; mapped                 ; 10CEE         # 8.0  OLD HUNGARIAN CAPITAL LETTER EV
-10CAF         ; mapped                 ; 10CEF         # 8.0  OLD HUNGARIAN CAPITAL LETTER EZ
-10CB0         ; mapped                 ; 10CF0         # 8.0  OLD HUNGARIAN CAPITAL LETTER EZS
-10CB1         ; mapped                 ; 10CF1         # 8.0  OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN
-10CB2         ; mapped                 ; 10CF2         # 8.0  OLD HUNGARIAN CAPITAL LETTER US
-10CB3..10CBF  ; disallowed                             # NA   <reserved-10CB3>..<reserved-10CBF>
-10CC0..10CF2  ; valid                                  # 8.0  OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
-10CF3..10CF9  ; disallowed                             # NA   <reserved-10CF3>..<reserved-10CF9>
-10CFA..10CFF  ; valid                  ;      ; NV8    # 8.0  OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND
-10D00..10D27  ; valid                                  # 11.0 HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA SIGN TASSI
-10D28..10D2F  ; disallowed                             # NA   <reserved-10D28>..<reserved-10D2F>
-10D30..10D39  ; valid                                  # 11.0 HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
-10D3A..10E5F  ; disallowed                             # NA   <reserved-10D3A>..<reserved-10E5F>
-10E60..10E7E  ; valid                  ;      ; NV8    # 5.2  RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
-10E7F         ; disallowed                             # NA   <reserved-10E7F>
-10E80..10EA9  ; valid                                  # 13.0 YEZIDI LETTER ELIF..YEZIDI LETTER ET
-10EAA         ; disallowed                             # NA   <reserved-10EAA>
-10EAB..10EAC  ; valid                                  # 13.0 YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
-10EAD         ; valid                  ;      ; NV8    # 13.0 YEZIDI HYPHENATION MARK
-10EAE..10EAF  ; disallowed                             # NA   <reserved-10EAE>..<reserved-10EAF>
-10EB0..10EB1  ; valid                                  # 13.0 YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
-10EB2..10EFF  ; disallowed                             # NA   <reserved-10EB2>..<reserved-10EFF>
-10F00..10F1C  ; valid                                  # 11.0 OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
-10F1D..10F26  ; valid                  ;      ; NV8    # 11.0 OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
-10F27         ; valid                                  # 11.0 OLD SOGDIAN LIGATURE AYIN-DALETH
-10F28..10F2F  ; disallowed                             # NA   <reserved-10F28>..<reserved-10F2F>
-10F30..10F50  ; valid                                  # 11.0 SOGDIAN LETTER ALEPH..SOGDIAN COMBINING STROKE BELOW
-10F51..10F59  ; valid                  ;      ; NV8    # 11.0 SOGDIAN NUMBER ONE..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
-10F5A..10FAF  ; disallowed                             # NA   <reserved-10F5A>..<reserved-10FAF>
-10FB0..10FC4  ; valid                                  # 13.0 CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW
-10FC5..10FCB  ; valid                  ;      ; NV8    # 13.0 CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED
-10FCC..10FDF  ; disallowed                             # NA   <reserved-10FCC>..<reserved-10FDF>
-10FE0..10FF6  ; valid                                  # 12.0 ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
-10FF7..10FFF  ; disallowed                             # NA   <reserved-10FF7>..<reserved-10FFF>
-11000..11046  ; valid                                  # 6.0  BRAHMI SIGN CANDRABINDU..BRAHMI VIRAMA
-11047..1104D  ; valid                  ;      ; NV8    # 6.0  BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
-1104E..11051  ; disallowed                             # NA   <reserved-1104E>..<reserved-11051>
-11052..11065  ; valid                  ;      ; NV8    # 6.0  BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND
-11066..1106F  ; valid                                  # 6.0  BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
-11070..1107E  ; disallowed                             # NA   <reserved-11070>..<reserved-1107E>
-1107F         ; valid                                  # 7.0  BRAHMI NUMBER JOINER
-11080..110BA  ; valid                                  # 5.2  KAITHI SIGN CANDRABINDU..KAITHI SIGN NUKTA
-110BB..110BC  ; valid                  ;      ; NV8    # 5.2  KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN
-110BD         ; disallowed                             # 5.2  KAITHI NUMBER SIGN
-110BE..110C1  ; valid                  ;      ; NV8    # 5.2  KAITHI SECTION MARK..KAITHI DOUBLE DANDA
-110C2..110CC  ; disallowed                             # NA   <reserved-110C2>..<reserved-110CC>
-110CD         ; disallowed                             # 11.0 KAITHI NUMBER SIGN ABOVE
-110CE..110CF  ; disallowed                             # NA   <reserved-110CE>..<reserved-110CF>
-110D0..110E8  ; valid                                  # 6.1  SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
-110E9..110EF  ; disallowed                             # NA   <reserved-110E9>..<reserved-110EF>
-110F0..110F9  ; valid                                  # 6.1  SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE
-110FA..110FF  ; disallowed                             # NA   <reserved-110FA>..<reserved-110FF>
-11100..11134  ; valid                                  # 6.1  CHAKMA SIGN CANDRABINDU..CHAKMA MAAYYAA
-11135         ; disallowed                             # NA   <reserved-11135>
-11136..1113F  ; valid                                  # 6.1  CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
-11140..11143  ; valid                  ;      ; NV8    # 6.1  CHAKMA SECTION MARK..CHAKMA QUESTION MARK
-11144..11146  ; valid                                  # 11.0 CHAKMA LETTER LHAA..CHAKMA VOWEL SIGN EI
-11147         ; valid                                  # 13.0 CHAKMA LETTER VAA
-11148..1114F  ; disallowed                             # NA   <reserved-11148>..<reserved-1114F>
-11150..11173  ; valid                                  # 7.0  MAHAJANI LETTER A..MAHAJANI SIGN NUKTA
-11174..11175  ; valid                  ;      ; NV8    # 7.0  MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK
-11176         ; valid                                  # 7.0  MAHAJANI LIGATURE SHRI
-11177..1117F  ; disallowed                             # NA   <reserved-11177>..<reserved-1117F>
-11180..111C4  ; valid                                  # 6.1  SHARADA SIGN CANDRABINDU..SHARADA OM
-111C5..111C8  ; valid                  ;      ; NV8    # 6.1  SHARADA DANDA..SHARADA SEPARATOR
-111C9..111CC  ; valid                                  # 8.0  SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
-111CD         ; valid                  ;      ; NV8    # 7.0  SHARADA SUTRA MARK
-111CE..111CF  ; valid                                  # 13.0 SHARADA VOWEL SIGN PRISHTHAMATRA E..SHARADA SIGN INVERTED CANDRABINDU
-111D0..111D9  ; valid                                  # 6.1  SHARADA DIGIT ZERO..SHARADA DIGIT NINE
-111DA         ; valid                                  # 7.0  SHARADA EKAM
-111DB         ; valid                  ;      ; NV8    # 8.0  SHARADA SIGN SIDDHAM
-111DC         ; valid                                  # 8.0  SHARADA HEADSTROKE
-111DD..111DF  ; valid                  ;      ; NV8    # 8.0  SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2
-111E0         ; disallowed                             # NA   <reserved-111E0>
-111E1..111F4  ; valid                  ;      ; NV8    # 7.0  SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND
-111F5..111FF  ; disallowed                             # NA   <reserved-111F5>..<reserved-111FF>
-11200..11211  ; valid                                  # 7.0  KHOJKI LETTER A..KHOJKI LETTER JJA
-11212         ; disallowed                             # NA   <reserved-11212>
-11213..11237  ; valid                                  # 7.0  KHOJKI LETTER NYA..KHOJKI SIGN SHADDA
-11238..1123D  ; valid                  ;      ; NV8    # 7.0  KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
-1123E         ; valid                                  # 9.0  KHOJKI SIGN SUKUN
-1123F..1127F  ; disallowed                             # NA   <reserved-1123F>..<reserved-1127F>
-11280..11286  ; valid                                  # 8.0  MULTANI LETTER A..MULTANI LETTER GA
-11287         ; disallowed                             # NA   <reserved-11287>
-11288         ; valid                                  # 8.0  MULTANI LETTER GHA
-11289         ; disallowed                             # NA   <reserved-11289>
-1128A..1128D  ; valid                                  # 8.0  MULTANI LETTER CA..MULTANI LETTER JJA
-1128E         ; disallowed                             # NA   <reserved-1128E>
-1128F..1129D  ; valid                                  # 8.0  MULTANI LETTER NYA..MULTANI LETTER BA
-1129E         ; disallowed                             # NA   <reserved-1129E>
-1129F..112A8  ; valid                                  # 8.0  MULTANI LETTER BHA..MULTANI LETTER RHA
-112A9         ; valid                  ;      ; NV8    # 8.0  MULTANI SECTION MARK
-112AA..112AF  ; disallowed                             # NA   <reserved-112AA>..<reserved-112AF>
-112B0..112EA  ; valid                                  # 7.0  KHUDAWADI LETTER A..KHUDAWADI SIGN VIRAMA
-112EB..112EF  ; disallowed                             # NA   <reserved-112EB>..<reserved-112EF>
-112F0..112F9  ; valid                                  # 7.0  KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
-112FA..112FF  ; disallowed                             # NA   <reserved-112FA>..<reserved-112FF>
-11300         ; valid                                  # 8.0  GRANTHA SIGN COMBINING ANUSVARA ABOVE
-11301..11303  ; valid                                  # 7.0  GRANTHA SIGN CANDRABINDU..GRANTHA SIGN VISARGA
-11304         ; disallowed                             # NA   <reserved-11304>
-11305..1130C  ; valid                                  # 7.0  GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
-1130D..1130E  ; disallowed                             # NA   <reserved-1130D>..<reserved-1130E>
-1130F..11310  ; valid                                  # 7.0  GRANTHA LETTER EE..GRANTHA LETTER AI
-11311..11312  ; disallowed                             # NA   <reserved-11311>..<reserved-11312>
-11313..11328  ; valid                                  # 7.0  GRANTHA LETTER OO..GRANTHA LETTER NA
-11329         ; disallowed                             # NA   <reserved-11329>
-1132A..11330  ; valid                                  # 7.0  GRANTHA LETTER PA..GRANTHA LETTER RA
-11331         ; disallowed                             # NA   <reserved-11331>
-11332..11333  ; valid                                  # 7.0  GRANTHA LETTER LA..GRANTHA LETTER LLA
-11334         ; disallowed                             # NA   <reserved-11334>
-11335..11339  ; valid                                  # 7.0  GRANTHA LETTER VA..GRANTHA LETTER HA
-1133A         ; disallowed                             # NA   <reserved-1133A>
-1133B         ; valid                                  # 11.0 COMBINING BINDU BELOW
-1133C..11344  ; valid                                  # 7.0  GRANTHA SIGN NUKTA..GRANTHA VOWEL SIGN VOCALIC RR
-11345..11346  ; disallowed                             # NA   <reserved-11345>..<reserved-11346>
-11347..11348  ; valid                                  # 7.0  GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
-11349..1134A  ; disallowed                             # NA   <reserved-11349>..<reserved-1134A>
-1134B..1134D  ; valid                                  # 7.0  GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
-1134E..1134F  ; disallowed                             # NA   <reserved-1134E>..<reserved-1134F>
-11350         ; valid                                  # 8.0  GRANTHA OM
-11351..11356  ; disallowed                             # NA   <reserved-11351>..<reserved-11356>
-11357         ; valid                                  # 7.0  GRANTHA AU LENGTH MARK
-11358..1135C  ; disallowed                             # NA   <reserved-11358>..<reserved-1135C>
-1135D..11363  ; valid                                  # 7.0  GRANTHA SIGN PLUTA..GRANTHA VOWEL SIGN VOCALIC LL
-11364..11365  ; disallowed                             # NA   <reserved-11364>..<reserved-11365>
-11366..1136C  ; valid                                  # 7.0  COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
-1136D..1136F  ; disallowed                             # NA   <reserved-1136D>..<reserved-1136F>
-11370..11374  ; valid                                  # 7.0  COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
-11375..113FF  ; disallowed                             # NA   <reserved-11375>..<reserved-113FF>
-11400..1144A  ; valid                                  # 9.0  NEWA LETTER A..NEWA SIDDHI
-1144B..1144F  ; valid                  ;      ; NV8    # 9.0  NEWA DANDA..NEWA ABBREVIATION SIGN
-11450..11459  ; valid                                  # 9.0  NEWA DIGIT ZERO..NEWA DIGIT NINE
-1145A         ; valid                  ;      ; NV8    # 13.0 NEWA DOUBLE COMMA
-1145B         ; valid                  ;      ; NV8    # 9.0  NEWA PLACEHOLDER MARK
-1145C         ; disallowed                             # NA   <reserved-1145C>
-1145D         ; valid                  ;      ; NV8    # 9.0  NEWA INSERTION SIGN
-1145E         ; valid                                  # 11.0 NEWA SANDHI MARK
-1145F         ; valid                                  # 12.0 NEWA LETTER VEDIC ANUSVARA
-11460..11461  ; valid                                  # 13.0 NEWA SIGN JIHVAMULIYA..NEWA SIGN UPADHMANIYA
-11462..1147F  ; disallowed                             # NA   <reserved-11462>..<reserved-1147F>
-11480..114C5  ; valid                                  # 7.0  TIRHUTA ANJI..TIRHUTA GVANG
-114C6         ; valid                  ;      ; NV8    # 7.0  TIRHUTA ABBREVIATION SIGN
-114C7         ; valid                                  # 7.0  TIRHUTA OM
-114C8..114CF  ; disallowed                             # NA   <reserved-114C8>..<reserved-114CF>
-114D0..114D9  ; valid                                  # 7.0  TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
-114DA..1157F  ; disallowed                             # NA   <reserved-114DA>..<reserved-1157F>
-11580..115B5  ; valid                                  # 7.0  SIDDHAM LETTER A..SIDDHAM VOWEL SIGN VOCALIC RR
-115B6..115B7  ; disallowed                             # NA   <reserved-115B6>..<reserved-115B7>
-115B8..115C0  ; valid                                  # 7.0  SIDDHAM VOWEL SIGN E..SIDDHAM SIGN NUKTA
-115C1..115C9  ; valid                  ;      ; NV8    # 7.0  SIDDHAM SIGN SIDDHAM..SIDDHAM END OF TEXT MARK
-115CA..115D7  ; valid                  ;      ; NV8    # 8.0  SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
-115D8..115DD  ; valid                                  # 8.0  SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM VOWEL SIGN ALTERNATE UU
-115DE..115FF  ; disallowed                             # NA   <reserved-115DE>..<reserved-115FF>
-11600..11640  ; valid                                  # 7.0  MODI LETTER A..MODI SIGN ARDHACANDRA
-11641..11643  ; valid                  ;      ; NV8    # 7.0  MODI DANDA..MODI ABBREVIATION SIGN
-11644         ; valid                                  # 7.0  MODI SIGN HUVA
-11645..1164F  ; disallowed                             # NA   <reserved-11645>..<reserved-1164F>
-11650..11659  ; valid                                  # 7.0  MODI DIGIT ZERO..MODI DIGIT NINE
-1165A..1165F  ; disallowed                             # NA   <reserved-1165A>..<reserved-1165F>
-11660..1166C  ; valid                  ;      ; NV8    # 9.0  MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
-1166D..1167F  ; disallowed                             # NA   <reserved-1166D>..<reserved-1167F>
-11680..116B7  ; valid                                  # 6.1  TAKRI LETTER A..TAKRI SIGN NUKTA
-116B8         ; valid                                  # 12.0 TAKRI LETTER ARCHAIC KHA
-116B9..116BF  ; disallowed                             # NA   <reserved-116B9>..<reserved-116BF>
-116C0..116C9  ; valid                                  # 6.1  TAKRI DIGIT ZERO..TAKRI DIGIT NINE
-116CA..116FF  ; disallowed                             # NA   <reserved-116CA>..<reserved-116FF>
-11700..11719  ; valid                                  # 8.0  AHOM LETTER KA..AHOM LETTER JHA
-1171A         ; valid                                  # 11.0 AHOM LETTER ALTERNATE BA
-1171B..1171C  ; disallowed                             # NA   <reserved-1171B>..<reserved-1171C>
-1171D..1172B  ; valid                                  # 8.0  AHOM CONSONANT SIGN MEDIAL LA..AHOM SIGN KILLER
-1172C..1172F  ; disallowed                             # NA   <reserved-1172C>..<reserved-1172F>
-11730..11739  ; valid                                  # 8.0  AHOM DIGIT ZERO..AHOM DIGIT NINE
-1173A..1173F  ; valid                  ;      ; NV8    # 8.0  AHOM NUMBER TEN..AHOM SYMBOL VI
-11740..117FF  ; disallowed                             # NA   <reserved-11740>..<reserved-117FF>
-11800..1183A  ; valid                                  # 11.0 DOGRA LETTER A..DOGRA SIGN NUKTA
-1183B         ; valid                  ;      ; NV8    # 11.0 DOGRA ABBREVIATION SIGN
-1183C..1189F  ; disallowed                             # NA   <reserved-1183C>..<reserved-1189F>
-118A0         ; mapped                 ; 118C0         # 7.0  WARANG CITI CAPITAL LETTER NGAA
-118A1         ; mapped                 ; 118C1         # 7.0  WARANG CITI CAPITAL LETTER A
-118A2         ; mapped                 ; 118C2         # 7.0  WARANG CITI CAPITAL LETTER WI
-118A3         ; mapped                 ; 118C3         # 7.0  WARANG CITI CAPITAL LETTER YU
-118A4         ; mapped                 ; 118C4         # 7.0  WARANG CITI CAPITAL LETTER YA
-118A5         ; mapped                 ; 118C5         # 7.0  WARANG CITI CAPITAL LETTER YO
-118A6         ; mapped                 ; 118C6         # 7.0  WARANG CITI CAPITAL LETTER II
-118A7         ; mapped                 ; 118C7         # 7.0  WARANG CITI CAPITAL LETTER UU
-118A8         ; mapped                 ; 118C8         # 7.0  WARANG CITI CAPITAL LETTER E
-118A9         ; mapped                 ; 118C9         # 7.0  WARANG CITI CAPITAL LETTER O
-118AA         ; mapped                 ; 118CA         # 7.0  WARANG CITI CAPITAL LETTER ANG
-118AB         ; mapped                 ; 118CB         # 7.0  WARANG CITI CAPITAL LETTER GA
-118AC         ; mapped                 ; 118CC         # 7.0  WARANG CITI CAPITAL LETTER KO
-118AD         ; mapped                 ; 118CD         # 7.0  WARANG CITI CAPITAL LETTER ENY
-118AE         ; mapped                 ; 118CE         # 7.0  WARANG CITI CAPITAL LETTER YUJ
-118AF         ; mapped                 ; 118CF         # 7.0  WARANG CITI CAPITAL LETTER UC
-118B0         ; mapped                 ; 118D0         # 7.0  WARANG CITI CAPITAL LETTER ENN
-118B1         ; mapped                 ; 118D1         # 7.0  WARANG CITI CAPITAL LETTER ODD
-118B2         ; mapped                 ; 118D2         # 7.0  WARANG CITI CAPITAL LETTER TTE
-118B3         ; mapped                 ; 118D3         # 7.0  WARANG CITI CAPITAL LETTER NUNG
-118B4         ; mapped                 ; 118D4         # 7.0  WARANG CITI CAPITAL LETTER DA
-118B5         ; mapped                 ; 118D5         # 7.0  WARANG CITI CAPITAL LETTER AT
-118B6         ; mapped                 ; 118D6         # 7.0  WARANG CITI CAPITAL LETTER AM
-118B7         ; mapped                 ; 118D7         # 7.0  WARANG CITI CAPITAL LETTER BU
-118B8         ; mapped                 ; 118D8         # 7.0  WARANG CITI CAPITAL LETTER PU
-118B9         ; mapped                 ; 118D9         # 7.0  WARANG CITI CAPITAL LETTER HIYO
-118BA         ; mapped                 ; 118DA         # 7.0  WARANG CITI CAPITAL LETTER HOLO
-118BB         ; mapped                 ; 118DB         # 7.0  WARANG CITI CAPITAL LETTER HORR
-118BC         ; mapped                 ; 118DC         # 7.0  WARANG CITI CAPITAL LETTER HAR
-118BD         ; mapped                 ; 118DD         # 7.0  WARANG CITI CAPITAL LETTER SSUU
-118BE         ; mapped                 ; 118DE         # 7.0  WARANG CITI CAPITAL LETTER SII
-118BF         ; mapped                 ; 118DF         # 7.0  WARANG CITI CAPITAL LETTER VIYO
-118C0..118E9  ; valid                                  # 7.0  WARANG CITI SMALL LETTER NGAA..WARANG CITI DIGIT NINE
-118EA..118F2  ; valid                  ;      ; NV8    # 7.0  WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
-118F3..118FE  ; disallowed                             # NA   <reserved-118F3>..<reserved-118FE>
-118FF         ; valid                                  # 7.0  WARANG CITI OM
-11900..11906  ; valid                                  # 13.0 DIVES AKURU LETTER A..DIVES AKURU LETTER E
-11907..11908  ; disallowed                             # NA   <reserved-11907>..<reserved-11908>
-11909         ; valid                                  # 13.0 DIVES AKURU LETTER O
-1190A..1190B  ; disallowed                             # NA   <reserved-1190A>..<reserved-1190B>
-1190C..11913  ; valid                                  # 13.0 DIVES AKURU LETTER KA..DIVES AKURU LETTER JA
-11914         ; disallowed                             # NA   <reserved-11914>
-11915..11916  ; valid                                  # 13.0 DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA
-11917         ; disallowed                             # NA   <reserved-11917>
-11918..11935  ; valid                                  # 13.0 DIVES AKURU LETTER DDA..DIVES AKURU VOWEL SIGN E
-11936         ; disallowed                             # NA   <reserved-11936>
-11937..11938  ; valid                                  # 13.0 DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
-11939..1193A  ; disallowed                             # NA   <reserved-11939>..<reserved-1193A>
-1193B..11943  ; valid                                  # 13.0 DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN NUKTA
-11944..11946  ; valid                  ;      ; NV8    # 13.0 DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK
-11947..1194F  ; disallowed                             # NA   <reserved-11947>..<reserved-1194F>
-11950..11959  ; valid                                  # 13.0 DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE
-1195A..1199F  ; disallowed                             # NA   <reserved-1195A>..<reserved-1199F>
-119A0..119A7  ; valid                                  # 12.0 NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
-119A8..119A9  ; disallowed                             # NA   <reserved-119A8>..<reserved-119A9>
-119AA..119D7  ; valid                                  # 12.0 NANDINAGARI LETTER E..NANDINAGARI VOWEL SIGN VOCALIC RR
-119D8..119D9  ; disallowed                             # NA   <reserved-119D8>..<reserved-119D9>
-119DA..119E1  ; valid                                  # 12.0 NANDINAGARI VOWEL SIGN E..NANDINAGARI SIGN AVAGRAHA
-119E2         ; valid                  ;      ; NV8    # 12.0 NANDINAGARI SIGN SIDDHAM
-119E3..119E4  ; valid                                  # 12.0 NANDINAGARI HEADSTROKE..NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
-119E5..119FF  ; disallowed                             # NA   <reserved-119E5>..<reserved-119FF>
-11A00..11A3E  ; valid                                  # 10.0 ZANABAZAR SQUARE LETTER A..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
-11A3F..11A46  ; valid                  ;      ; NV8    # 10.0 ZANABAZAR SQUARE INITIAL HEAD MARK..ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK
-11A47         ; valid                                  # 10.0 ZANABAZAR SQUARE SUBJOINER
-11A48..11A4F  ; disallowed                             # NA   <reserved-11A48>..<reserved-11A4F>
-11A50..11A83  ; valid                                  # 10.0 SOYOMBO LETTER A..SOYOMBO LETTER KSSA
-11A84..11A85  ; valid                                  # 12.0 SOYOMBO SIGN JIHVAMULIYA..SOYOMBO SIGN UPADHMANIYA
-11A86..11A99  ; valid                                  # 10.0 SOYOMBO CLUSTER-INITIAL LETTER RA..SOYOMBO SUBJOINER
-11A9A..11A9C  ; valid                  ;      ; NV8    # 10.0 SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD
-11A9D         ; valid                                  # 11.0 SOYOMBO MARK PLUTA
-11A9E..11AA2  ; valid                  ;      ; NV8    # 10.0 SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2
-11AA3..11ABF  ; disallowed                             # NA   <reserved-11AA3>..<reserved-11ABF>
-11AC0..11AF8  ; valid                                  # 7.0  PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
-11AF9..11BFF  ; disallowed                             # NA   <reserved-11AF9>..<reserved-11BFF>
-11C00..11C08  ; valid                                  # 9.0  BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
-11C09         ; disallowed                             # NA   <reserved-11C09>
-11C0A..11C36  ; valid                                  # 9.0  BHAIKSUKI LETTER E..BHAIKSUKI VOWEL SIGN VOCALIC L
-11C37         ; disallowed                             # NA   <reserved-11C37>
-11C38..11C40  ; valid                                  # 9.0  BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN AVAGRAHA
-11C41..11C45  ; valid                  ;      ; NV8    # 9.0  BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
-11C46..11C4F  ; disallowed                             # NA   <reserved-11C46>..<reserved-11C4F>
-11C50..11C59  ; valid                                  # 9.0  BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
-11C5A..11C6C  ; valid                  ;      ; NV8    # 9.0  BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
-11C6D..11C6F  ; disallowed                             # NA   <reserved-11C6D>..<reserved-11C6F>
-11C70..11C71  ; valid                  ;      ; NV8    # 9.0  MARCHEN HEAD MARK..MARCHEN MARK SHAD
-11C72..11C8F  ; valid                                  # 9.0  MARCHEN LETTER KA..MARCHEN LETTER A
-11C90..11C91  ; disallowed                             # NA   <reserved-11C90>..<reserved-11C91>
-11C92..11CA7  ; valid                                  # 9.0  MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
-11CA8         ; disallowed                             # NA   <reserved-11CA8>
-11CA9..11CB6  ; valid                                  # 9.0  MARCHEN SUBJOINED LETTER YA..MARCHEN SIGN CANDRABINDU
-11CB7..11CFF  ; disallowed                             # NA   <reserved-11CB7>..<reserved-11CFF>
-11D00..11D06  ; valid                                  # 10.0 MASARAM GONDI LETTER A..MASARAM GONDI LETTER E
-11D07         ; disallowed                             # NA   <reserved-11D07>
-11D08..11D09  ; valid                                  # 10.0 MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O
-11D0A         ; disallowed                             # NA   <reserved-11D0A>
-11D0B..11D36  ; valid                                  # 10.0 MASARAM GONDI LETTER AU..MASARAM GONDI VOWEL SIGN VOCALIC R
-11D37..11D39  ; disallowed                             # NA   <reserved-11D37>..<reserved-11D39>
-11D3A         ; valid                                  # 10.0 MASARAM GONDI VOWEL SIGN E
-11D3B         ; disallowed                             # NA   <reserved-11D3B>
-11D3C..11D3D  ; valid                                  # 10.0 MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
-11D3E         ; disallowed                             # NA   <reserved-11D3E>
-11D3F..11D47  ; valid                                  # 10.0 MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI RA-KARA
-11D48..11D4F  ; disallowed                             # NA   <reserved-11D48>..<reserved-11D4F>
-11D50..11D59  ; valid                                  # 10.0 MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE
-11D5A..11D5F  ; disallowed                             # NA   <reserved-11D5A>..<reserved-11D5F>
-11D60..11D65  ; valid                                  # 11.0 GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU
-11D66         ; disallowed                             # NA   <reserved-11D66>
-11D67..11D68  ; valid                                  # 11.0 GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI
-11D69         ; disallowed                             # NA   <reserved-11D69>
-11D6A..11D8E  ; valid                                  # 11.0 GUNJALA GONDI LETTER OO..GUNJALA GONDI VOWEL SIGN UU
-11D8F         ; disallowed                             # NA   <reserved-11D8F>
-11D90..11D91  ; valid                                  # 11.0 GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
-11D92         ; disallowed                             # NA   <reserved-11D92>
-11D93..11D98  ; valid                                  # 11.0 GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI OM
-11D99..11D9F  ; disallowed                             # NA   <reserved-11D99>..<reserved-11D9F>
-11DA0..11DA9  ; valid                                  # 11.0 GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE
-11DAA..11EDF  ; disallowed                             # NA   <reserved-11DAA>..<reserved-11EDF>
-11EE0..11EF6  ; valid                                  # 11.0 MAKASAR LETTER KA..MAKASAR VOWEL SIGN O
-11EF7..11EF8  ; valid                  ;      ; NV8    # 11.0 MAKASAR PASSIMBANG..MAKASAR END OF SECTION
-11EF9..11FAF  ; disallowed                             # NA   <reserved-11EF9>..<reserved-11FAF>
-11FB0         ; valid                                  # 13.0 LISU LETTER YHA
-11FB1..11FBF  ; disallowed                             # NA   <reserved-11FB1>..<reserved-11FBF>
-11FC0..11FF1  ; valid                  ;      ; NV8    # 12.0 TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL SIGN VAKAIYARAA
-11FF2..11FFE  ; disallowed                             # NA   <reserved-11FF2>..<reserved-11FFE>
-11FFF         ; valid                  ;      ; NV8    # 12.0 TAMIL PUNCTUATION END OF TEXT
-12000..1236E  ; valid                                  # 5.0  CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM
-1236F..12398  ; valid                                  # 7.0  CUNEIFORM SIGN KAP ELAMITE..CUNEIFORM SIGN UM TIMES ME
-12399         ; valid                                  # 8.0  CUNEIFORM SIGN U U
-1239A..123FF  ; disallowed                             # NA   <reserved-1239A>..<reserved-123FF>
-12400..12462  ; valid                  ;      ; NV8    # 5.0  CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
-12463..1246E  ; valid                  ;      ; NV8    # 7.0  CUNEIFORM NUMERIC SIGN ONE QUARTER GUR..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
-1246F         ; disallowed                             # NA   <reserved-1246F>
-12470..12473  ; valid                  ;      ; NV8    # 5.0  CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
-12474         ; valid                  ;      ; NV8    # 7.0  CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
-12475..1247F  ; disallowed                             # NA   <reserved-12475>..<reserved-1247F>
-12480..12543  ; valid                                  # 8.0  CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
-12544..12FFF  ; disallowed                             # NA   <reserved-12544>..<reserved-12FFF>
-13000..1342E  ; valid                                  # 5.2  EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032
-1342F         ; disallowed                             # NA   <reserved-1342F>
-13430..13438  ; disallowed                             # 12.0 EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT
-13439..143FF  ; disallowed                             # NA   <reserved-13439>..<reserved-143FF>
-14400..14646  ; valid                                  # 8.0  ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
-14647..167FF  ; disallowed                             # NA   <reserved-14647>..<reserved-167FF>
-16800..16A38  ; valid                                  # 6.0  BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
-16A39..16A3F  ; disallowed                             # NA   <reserved-16A39>..<reserved-16A3F>
-16A40..16A5E  ; valid                                  # 7.0  MRO LETTER TA..MRO LETTER TEK
-16A5F         ; disallowed                             # NA   <reserved-16A5F>
-16A60..16A69  ; valid                                  # 7.0  MRO DIGIT ZERO..MRO DIGIT NINE
-16A6A..16A6D  ; disallowed                             # NA   <reserved-16A6A>..<reserved-16A6D>
-16A6E..16A6F  ; valid                  ;      ; NV8    # 7.0  MRO DANDA..MRO DOUBLE DANDA
-16A70..16ACF  ; disallowed                             # NA   <reserved-16A70>..<reserved-16ACF>
-16AD0..16AED  ; valid                                  # 7.0  BASSA VAH LETTER ENNI..BASSA VAH LETTER I
-16AEE..16AEF  ; disallowed                             # NA   <reserved-16AEE>..<reserved-16AEF>
-16AF0..16AF4  ; valid                                  # 7.0  BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
-16AF5         ; valid                  ;      ; NV8    # 7.0  BASSA VAH FULL STOP
-16AF6..16AFF  ; disallowed                             # NA   <reserved-16AF6>..<reserved-16AFF>
-16B00..16B36  ; valid                                  # 7.0  PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG MARK CIM TAUM
-16B37..16B3F  ; valid                  ;      ; NV8    # 7.0  PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN XYEEM FAIB
-16B40..16B43  ; valid                                  # 7.0  PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
-16B44..16B45  ; valid                  ;      ; NV8    # 7.0  PAHAWH HMONG SIGN XAUS..PAHAWH HMONG SIGN CIM TSOV ROG
-16B46..16B4F  ; disallowed                             # NA   <reserved-16B46>..<reserved-16B4F>
-16B50..16B59  ; valid                                  # 7.0  PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
-16B5A         ; disallowed                             # NA   <reserved-16B5A>
-16B5B..16B61  ; valid                  ;      ; NV8    # 7.0  PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
-16B62         ; disallowed                             # NA   <reserved-16B62>
-16B63..16B77  ; valid                                  # 7.0  PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
-16B78..16B7C  ; disallowed                             # NA   <reserved-16B78>..<reserved-16B7C>
-16B7D..16B8F  ; valid                                  # 7.0  PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
-16B90..16E3F  ; disallowed                             # NA   <reserved-16B90>..<reserved-16E3F>
-16E40         ; mapped                 ; 16E60         # 11.0 MEDEFAIDRIN CAPITAL LETTER M
-16E41         ; mapped                 ; 16E61         # 11.0 MEDEFAIDRIN CAPITAL LETTER S
-16E42         ; mapped                 ; 16E62         # 11.0 MEDEFAIDRIN CAPITAL LETTER V
-16E43         ; mapped                 ; 16E63         # 11.0 MEDEFAIDRIN CAPITAL LETTER W
-16E44         ; mapped                 ; 16E64         # 11.0 MEDEFAIDRIN CAPITAL LETTER ATIU
-16E45         ; mapped                 ; 16E65         # 11.0 MEDEFAIDRIN CAPITAL LETTER Z
-16E46         ; mapped                 ; 16E66         # 11.0 MEDEFAIDRIN CAPITAL LETTER KP
-16E47         ; mapped                 ; 16E67         # 11.0 MEDEFAIDRIN CAPITAL LETTER P
-16E48         ; mapped                 ; 16E68         # 11.0 MEDEFAIDRIN CAPITAL LETTER T
-16E49         ; mapped                 ; 16E69         # 11.0 MEDEFAIDRIN CAPITAL LETTER G
-16E4A         ; mapped                 ; 16E6A         # 11.0 MEDEFAIDRIN CAPITAL LETTER F
-16E4B         ; mapped                 ; 16E6B         # 11.0 MEDEFAIDRIN CAPITAL LETTER I
-16E4C         ; mapped                 ; 16E6C         # 11.0 MEDEFAIDRIN CAPITAL LETTER K
-16E4D         ; mapped                 ; 16E6D         # 11.0 MEDEFAIDRIN CAPITAL LETTER A
-16E4E         ; mapped                 ; 16E6E         # 11.0 MEDEFAIDRIN CAPITAL LETTER J
-16E4F         ; mapped                 ; 16E6F         # 11.0 MEDEFAIDRIN CAPITAL LETTER E
-16E50         ; mapped                 ; 16E70         # 11.0 MEDEFAIDRIN CAPITAL LETTER B
-16E51         ; mapped                 ; 16E71         # 11.0 MEDEFAIDRIN CAPITAL LETTER C
-16E52         ; mapped                 ; 16E72         # 11.0 MEDEFAIDRIN CAPITAL LETTER U
-16E53         ; mapped                 ; 16E73         # 11.0 MEDEFAIDRIN CAPITAL LETTER YU
-16E54         ; mapped                 ; 16E74         # 11.0 MEDEFAIDRIN CAPITAL LETTER L
-16E55         ; mapped                 ; 16E75         # 11.0 MEDEFAIDRIN CAPITAL LETTER Q
-16E56         ; mapped                 ; 16E76         # 11.0 MEDEFAIDRIN CAPITAL LETTER HP
-16E57         ; mapped                 ; 16E77         # 11.0 MEDEFAIDRIN CAPITAL LETTER NY
-16E58         ; mapped                 ; 16E78         # 11.0 MEDEFAIDRIN CAPITAL LETTER X
-16E59         ; mapped                 ; 16E79         # 11.0 MEDEFAIDRIN CAPITAL LETTER D
-16E5A         ; mapped                 ; 16E7A         # 11.0 MEDEFAIDRIN CAPITAL LETTER OE
-16E5B         ; mapped                 ; 16E7B         # 11.0 MEDEFAIDRIN CAPITAL LETTER N
-16E5C         ; mapped                 ; 16E7C         # 11.0 MEDEFAIDRIN CAPITAL LETTER R
-16E5D         ; mapped                 ; 16E7D         # 11.0 MEDEFAIDRIN CAPITAL LETTER O
-16E5E         ; mapped                 ; 16E7E         # 11.0 MEDEFAIDRIN CAPITAL LETTER AI
-16E5F         ; mapped                 ; 16E7F         # 11.0 MEDEFAIDRIN CAPITAL LETTER Y
-16E60..16E7F  ; valid                                  # 11.0 MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y
-16E80..16E9A  ; valid                  ;      ; NV8    # 11.0 MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN EXCLAMATION OH
-16E9B..16EFF  ; disallowed                             # NA   <reserved-16E9B>..<reserved-16EFF>
-16F00..16F44  ; valid                                  # 6.1  MIAO LETTER PA..MIAO LETTER HHA
-16F45..16F4A  ; valid                                  # 12.0 MIAO LETTER BRI..MIAO LETTER RTE
-16F4B..16F4E  ; disallowed                             # NA   <reserved-16F4B>..<reserved-16F4E>
-16F4F         ; valid                                  # 12.0 MIAO SIGN CONSONANT MODIFIER BAR
-16F50..16F7E  ; valid                                  # 6.1  MIAO LETTER NASALIZATION..MIAO VOWEL SIGN NG
-16F7F..16F87  ; valid                                  # 12.0 MIAO VOWEL SIGN UOG..MIAO VOWEL SIGN UI
-16F88..16F8E  ; disallowed                             # NA   <reserved-16F88>..<reserved-16F8E>
-16F8F..16F9F  ; valid                                  # 6.1  MIAO TONE RIGHT..MIAO LETTER REFORMED TONE-8
-16FA0..16FDF  ; disallowed                             # NA   <reserved-16FA0>..<reserved-16FDF>
-16FE0         ; valid                                  # 9.0  TANGUT ITERATION MARK
-16FE1         ; valid                                  # 10.0 NUSHU ITERATION MARK
-16FE2         ; valid                  ;      ; NV8    # 12.0 OLD CHINESE HOOK MARK
-16FE3         ; valid                                  # 12.0 OLD CHINESE ITERATION MARK
-16FE4         ; valid                                  # 13.0 KHITAN SMALL SCRIPT FILLER
-16FE5..16FEF  ; disallowed                             # NA   <reserved-16FE5>..<reserved-16FEF>
-16FF0..16FF1  ; valid                                  # 13.0 VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
-16FF2..16FFF  ; disallowed                             # NA   <reserved-16FF2>..<reserved-16FFF>
-17000..187EC  ; valid                                  # 9.0  TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
-187ED..187F1  ; valid                                  # 11.0 TANGUT IDEOGRAPH-187ED..TANGUT IDEOGRAPH-187F1
-187F2..187F7  ; valid                                  # 12.0 TANGUT IDEOGRAPH-187F2..TANGUT IDEOGRAPH-187F7
-187F8..187FF  ; disallowed                             # NA   <reserved-187F8>..<reserved-187FF>
-18800..18AF2  ; valid                                  # 9.0  TANGUT COMPONENT-001..TANGUT COMPONENT-755
-18AF3..18CD5  ; valid                                  # 13.0 TANGUT COMPONENT-756..KHITAN SMALL SCRIPT CHARACTER-18CD5
-18CD6..18CFF  ; disallowed                             # NA   <reserved-18CD6>..<reserved-18CFF>
-18D00..18D08  ; valid                                  # 13.0 TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
-18D09..1AFFF  ; disallowed                             # NA   <reserved-18D09>..<reserved-1AFFF>
-1B000..1B001  ; valid                                  # 6.0  KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
-1B002..1B11E  ; valid                                  # 10.0 HENTAIGANA LETTER A-1..HENTAIGANA LETTER N-MU-MO-2
-1B11F..1B14F  ; disallowed                             # NA   <reserved-1B11F>..<reserved-1B14F>
-1B150..1B152  ; valid                                  # 12.0 HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
-1B153..1B163  ; disallowed                             # NA   <reserved-1B153>..<reserved-1B163>
-1B164..1B167  ; valid                                  # 12.0 KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
-1B168..1B16F  ; disallowed                             # NA   <reserved-1B168>..<reserved-1B16F>
-1B170..1B2FB  ; valid                                  # 10.0 NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
-1B2FC..1BBFF  ; disallowed                             # NA   <reserved-1B2FC>..<reserved-1BBFF>
-1BC00..1BC6A  ; valid                                  # 7.0  DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
-1BC6B..1BC6F  ; disallowed                             # NA   <reserved-1BC6B>..<reserved-1BC6F>
-1BC70..1BC7C  ; valid                                  # 7.0  DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
-1BC7D..1BC7F  ; disallowed                             # NA   <reserved-1BC7D>..<reserved-1BC7F>
-1BC80..1BC88  ; valid                                  # 7.0  DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
-1BC89..1BC8F  ; disallowed                             # NA   <reserved-1BC89>..<reserved-1BC8F>
-1BC90..1BC99  ; valid                                  # 7.0  DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
-1BC9A..1BC9B  ; disallowed                             # NA   <reserved-1BC9A>..<reserved-1BC9B>
-1BC9C         ; valid                  ;      ; NV8    # 7.0  DUPLOYAN SIGN O WITH CROSS
-1BC9D..1BC9E  ; valid                                  # 7.0  DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
-1BC9F         ; valid                  ;      ; NV8    # 7.0  DUPLOYAN PUNCTUATION CHINOOK FULL STOP
-1BCA0..1BCA3  ; ignored                                # 7.0  SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
-1BCA4..1CFFF  ; disallowed                             # NA   <reserved-1BCA4>..<reserved-1CFFF>
-1D000..1D0F5  ; valid                  ;      ; NV8    # 3.1  BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
-1D0F6..1D0FF  ; disallowed                             # NA   <reserved-1D0F6>..<reserved-1D0FF>
-1D100..1D126  ; valid                  ;      ; NV8    # 3.1  MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
-1D127..1D128  ; disallowed                             # NA   <reserved-1D127>..<reserved-1D128>
-1D129         ; valid                  ;      ; NV8    # 5.1  MUSICAL SYMBOL MULTIPLE MEASURE REST
-1D12A..1D15D  ; valid                  ;      ; NV8    # 3.1  MUSICAL SYMBOL DOUBLE SHARP..MUSICAL SYMBOL WHOLE NOTE
-1D15E         ; mapped                 ; 1D157 1D165   # 3.1  MUSICAL SYMBOL HALF NOTE
-1D15F         ; mapped                 ; 1D158 1D165   # 3.1  MUSICAL SYMBOL QUARTER NOTE
-1D160         ; mapped                 ; 1D158 1D165 1D16E #3.1 MUSICAL SYMBOL EIGHTH NOTE
-1D161         ; mapped                 ; 1D158 1D165 1D16F #3.1 MUSICAL SYMBOL SIXTEENTH NOTE
-1D162         ; mapped                 ; 1D158 1D165 1D170 #3.1 MUSICAL SYMBOL THIRTY-SECOND NOTE
-1D163         ; mapped                 ; 1D158 1D165 1D171 #3.1 MUSICAL SYMBOL SIXTY-FOURTH NOTE
-1D164         ; mapped                 ; 1D158 1D165 1D172 #3.1 MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
-1D165..1D172  ; valid                  ;      ; NV8    # 3.1  MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING FLAG-5
-1D173..1D17A  ; disallowed                             # 3.1  MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
-1D17B..1D1BA  ; valid                  ;      ; NV8    # 3.1  MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL SEMIBREVIS BLACK
-1D1BB         ; mapped                 ; 1D1B9 1D165   # 3.1  MUSICAL SYMBOL MINIMA
-1D1BC         ; mapped                 ; 1D1BA 1D165   # 3.1  MUSICAL SYMBOL MINIMA BLACK
-1D1BD         ; mapped                 ; 1D1B9 1D165 1D16E #3.1 MUSICAL SYMBOL SEMIMINIMA WHITE
-1D1BE         ; mapped                 ; 1D1BA 1D165 1D16E #3.1 MUSICAL SYMBOL SEMIMINIMA BLACK
-1D1BF         ; mapped                 ; 1D1B9 1D165 1D16F #3.1 MUSICAL SYMBOL FUSA WHITE
-1D1C0         ; mapped                 ; 1D1BA 1D165 1D16F #3.1 MUSICAL SYMBOL FUSA BLACK
-1D1C1..1D1DD  ; valid                  ;      ; NV8    # 3.1  MUSICAL SYMBOL LONGA PERFECTA REST..MUSICAL SYMBOL PES SUBPUNCTIS
-1D1DE..1D1E8  ; valid                  ;      ; NV8    # 8.0  MUSICAL SYMBOL KIEVAN C CLEF..MUSICAL SYMBOL KIEVAN FLAT SIGN
-1D1E9..1D1FF  ; disallowed                             # NA   <reserved-1D1E9>..<reserved-1D1FF>
-1D200..1D245  ; valid                  ;      ; NV8    # 4.1  GREEK VOCAL NOTATION SYMBOL-1..GREEK MUSICAL LEIMMA
-1D246..1D2DF  ; disallowed                             # NA   <reserved-1D246>..<reserved-1D2DF>
-1D2E0..1D2F3  ; valid                  ;      ; NV8    # 11.0 MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN
-1D2F4..1D2FF  ; disallowed                             # NA   <reserved-1D2F4>..<reserved-1D2FF>
-1D300..1D356  ; valid                  ;      ; NV8    # 4.0  MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
-1D357..1D35F  ; disallowed                             # NA   <reserved-1D357>..<reserved-1D35F>
-1D360..1D371  ; valid                  ;      ; NV8    # 5.0  COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
-1D372..1D378  ; valid                  ;      ; NV8    # 11.0 IDEOGRAPHIC TALLY MARK ONE..TALLY MARK FIVE
-1D379..1D3FF  ; disallowed                             # NA   <reserved-1D379>..<reserved-1D3FF>
-1D400         ; mapped                 ; 0061          # 3.1  MATHEMATICAL BOLD CAPITAL A
-1D401         ; mapped                 ; 0062          # 3.1  MATHEMATICAL BOLD CAPITAL B
-1D402         ; mapped                 ; 0063          # 3.1  MATHEMATICAL BOLD CAPITAL C
-1D403         ; mapped                 ; 0064          # 3.1  MATHEMATICAL BOLD CAPITAL D
-1D404         ; mapped                 ; 0065          # 3.1  MATHEMATICAL BOLD CAPITAL E
-1D405         ; mapped                 ; 0066          # 3.1  MATHEMATICAL BOLD CAPITAL F
-1D406         ; mapped                 ; 0067          # 3.1  MATHEMATICAL BOLD CAPITAL G
-1D407         ; mapped                 ; 0068          # 3.1  MATHEMATICAL BOLD CAPITAL H
-1D408         ; mapped                 ; 0069          # 3.1  MATHEMATICAL BOLD CAPITAL I
-1D409         ; mapped                 ; 006A          # 3.1  MATHEMATICAL BOLD CAPITAL J
-1D40A         ; mapped                 ; 006B          # 3.1  MATHEMATICAL BOLD CAPITAL K
-1D40B         ; mapped                 ; 006C          # 3.1  MATHEMATICAL BOLD CAPITAL L
-1D40C         ; mapped                 ; 006D          # 3.1  MATHEMATICAL BOLD CAPITAL M
-1D40D         ; mapped                 ; 006E          # 3.1  MATHEMATICAL BOLD CAPITAL N
-1D40E         ; mapped                 ; 006F          # 3.1  MATHEMATICAL BOLD CAPITAL O
-1D40F         ; mapped                 ; 0070          # 3.1  MATHEMATICAL BOLD CAPITAL P
-1D410         ; mapped                 ; 0071          # 3.1  MATHEMATICAL BOLD CAPITAL Q
-1D411         ; mapped                 ; 0072          # 3.1  MATHEMATICAL BOLD CAPITAL R
-1D412         ; mapped                 ; 0073          # 3.1  MATHEMATICAL BOLD CAPITAL S
-1D413         ; mapped                 ; 0074          # 3.1  MATHEMATICAL BOLD CAPITAL T
-1D414         ; mapped                 ; 0075          # 3.1  MATHEMATICAL BOLD CAPITAL U
-1D415         ; mapped                 ; 0076          # 3.1  MATHEMATICAL BOLD CAPITAL V
-1D416         ; mapped                 ; 0077          # 3.1  MATHEMATICAL BOLD CAPITAL W
-1D417         ; mapped                 ; 0078          # 3.1  MATHEMATICAL BOLD CAPITAL X
-1D418         ; mapped                 ; 0079          # 3.1  MATHEMATICAL BOLD CAPITAL Y
-1D419         ; mapped                 ; 007A          # 3.1  MATHEMATICAL BOLD CAPITAL Z
-1D41A         ; mapped                 ; 0061          # 3.1  MATHEMATICAL BOLD SMALL A
-1D41B         ; mapped                 ; 0062          # 3.1  MATHEMATICAL BOLD SMALL B
-1D41C         ; mapped                 ; 0063          # 3.1  MATHEMATICAL BOLD SMALL C
-1D41D         ; mapped                 ; 0064          # 3.1  MATHEMATICAL BOLD SMALL D
-1D41E         ; mapped                 ; 0065          # 3.1  MATHEMATICAL BOLD SMALL E
-1D41F         ; mapped                 ; 0066          # 3.1  MATHEMATICAL BOLD SMALL F
-1D420         ; mapped                 ; 0067          # 3.1  MATHEMATICAL BOLD SMALL G
-1D421         ; mapped                 ; 0068          # 3.1  MATHEMATICAL BOLD SMALL H
-1D422         ; mapped                 ; 0069          # 3.1  MATHEMATICAL BOLD SMALL I
-1D423         ; mapped                 ; 006A          # 3.1  MATHEMATICAL BOLD SMALL J
-1D424         ; mapped                 ; 006B          # 3.1  MATHEMATICAL BOLD SMALL K
-1D425         ; mapped                 ; 006C          # 3.1  MATHEMATICAL BOLD SMALL L
-1D426         ; mapped                 ; 006D          # 3.1  MATHEMATICAL BOLD SMALL M
-1D427         ; mapped                 ; 006E          # 3.1  MATHEMATICAL BOLD SMALL N
-1D428         ; mapped                 ; 006F          # 3.1  MATHEMATICAL BOLD SMALL O
-1D429         ; mapped                 ; 0070          # 3.1  MATHEMATICAL BOLD SMALL P
-1D42A         ; mapped                 ; 0071          # 3.1  MATHEMATICAL BOLD SMALL Q
-1D42B         ; mapped                 ; 0072          # 3.1  MATHEMATICAL BOLD SMALL R
-1D42C         ; mapped                 ; 0073          # 3.1  MATHEMATICAL BOLD SMALL S
-1D42D         ; mapped                 ; 0074          # 3.1  MATHEMATICAL BOLD SMALL T
-1D42E         ; mapped                 ; 0075          # 3.1  MATHEMATICAL BOLD SMALL U
-1D42F         ; mapped                 ; 0076          # 3.1  MATHEMATICAL BOLD SMALL V
-1D430         ; mapped                 ; 0077          # 3.1  MATHEMATICAL BOLD SMALL W
-1D431         ; mapped                 ; 0078          # 3.1  MATHEMATICAL BOLD SMALL X
-1D432         ; mapped                 ; 0079          # 3.1  MATHEMATICAL BOLD SMALL Y
-1D433         ; mapped                 ; 007A          # 3.1  MATHEMATICAL BOLD SMALL Z
-1D434         ; mapped                 ; 0061          # 3.1  MATHEMATICAL ITALIC CAPITAL A
-1D435         ; mapped                 ; 0062          # 3.1  MATHEMATICAL ITALIC CAPITAL B
-1D436         ; mapped                 ; 0063          # 3.1  MATHEMATICAL ITALIC CAPITAL C
-1D437         ; mapped                 ; 0064          # 3.1  MATHEMATICAL ITALIC CAPITAL D
-1D438         ; mapped                 ; 0065          # 3.1  MATHEMATICAL ITALIC CAPITAL E
-1D439         ; mapped                 ; 0066          # 3.1  MATHEMATICAL ITALIC CAPITAL F
-1D43A         ; mapped                 ; 0067          # 3.1  MATHEMATICAL ITALIC CAPITAL G
-1D43B         ; mapped                 ; 0068          # 3.1  MATHEMATICAL ITALIC CAPITAL H
-1D43C         ; mapped                 ; 0069          # 3.1  MATHEMATICAL ITALIC CAPITAL I
-1D43D         ; mapped                 ; 006A          # 3.1  MATHEMATICAL ITALIC CAPITAL J
-1D43E         ; mapped                 ; 006B          # 3.1  MATHEMATICAL ITALIC CAPITAL K
-1D43F         ; mapped                 ; 006C          # 3.1  MATHEMATICAL ITALIC CAPITAL L
-1D440         ; mapped                 ; 006D          # 3.1  MATHEMATICAL ITALIC CAPITAL M
-1D441         ; mapped                 ; 006E          # 3.1  MATHEMATICAL ITALIC CAPITAL N
-1D442         ; mapped                 ; 006F          # 3.1  MATHEMATICAL ITALIC CAPITAL O
-1D443         ; mapped                 ; 0070          # 3.1  MATHEMATICAL ITALIC CAPITAL P
-1D444         ; mapped                 ; 0071          # 3.1  MATHEMATICAL ITALIC CAPITAL Q
-1D445         ; mapped                 ; 0072          # 3.1  MATHEMATICAL ITALIC CAPITAL R
-1D446         ; mapped                 ; 0073          # 3.1  MATHEMATICAL ITALIC CAPITAL S
-1D447         ; mapped                 ; 0074          # 3.1  MATHEMATICAL ITALIC CAPITAL T
-1D448         ; mapped                 ; 0075          # 3.1  MATHEMATICAL ITALIC CAPITAL U
-1D449         ; mapped                 ; 0076          # 3.1  MATHEMATICAL ITALIC CAPITAL V
-1D44A         ; mapped                 ; 0077          # 3.1  MATHEMATICAL ITALIC CAPITAL W
-1D44B         ; mapped                 ; 0078          # 3.1  MATHEMATICAL ITALIC CAPITAL X
-1D44C         ; mapped                 ; 0079          # 3.1  MATHEMATICAL ITALIC CAPITAL Y
-1D44D         ; mapped                 ; 007A          # 3.1  MATHEMATICAL ITALIC CAPITAL Z
-1D44E         ; mapped                 ; 0061          # 3.1  MATHEMATICAL ITALIC SMALL A
-1D44F         ; mapped                 ; 0062          # 3.1  MATHEMATICAL ITALIC SMALL B
-1D450         ; mapped                 ; 0063          # 3.1  MATHEMATICAL ITALIC SMALL C
-1D451         ; mapped                 ; 0064          # 3.1  MATHEMATICAL ITALIC SMALL D
-1D452         ; mapped                 ; 0065          # 3.1  MATHEMATICAL ITALIC SMALL E
-1D453         ; mapped                 ; 0066          # 3.1  MATHEMATICAL ITALIC SMALL F
-1D454         ; mapped                 ; 0067          # 3.1  MATHEMATICAL ITALIC SMALL G
-1D455         ; disallowed                             # NA   <reserved-1D455>
-1D456         ; mapped                 ; 0069          # 3.1  MATHEMATICAL ITALIC SMALL I
-1D457         ; mapped                 ; 006A          # 3.1  MATHEMATICAL ITALIC SMALL J
-1D458         ; mapped                 ; 006B          # 3.1  MATHEMATICAL ITALIC SMALL K
-1D459         ; mapped                 ; 006C          # 3.1  MATHEMATICAL ITALIC SMALL L
-1D45A         ; mapped                 ; 006D          # 3.1  MATHEMATICAL ITALIC SMALL M
-1D45B         ; mapped                 ; 006E          # 3.1  MATHEMATICAL ITALIC SMALL N
-1D45C         ; mapped                 ; 006F          # 3.1  MATHEMATICAL ITALIC SMALL O
-1D45D         ; mapped                 ; 0070          # 3.1  MATHEMATICAL ITALIC SMALL P
-1D45E         ; mapped                 ; 0071          # 3.1  MATHEMATICAL ITALIC SMALL Q
-1D45F         ; mapped                 ; 0072          # 3.1  MATHEMATICAL ITALIC SMALL R
-1D460         ; mapped                 ; 0073          # 3.1  MATHEMATICAL ITALIC SMALL S
-1D461         ; mapped                 ; 0074          # 3.1  MATHEMATICAL ITALIC SMALL T
-1D462         ; mapped                 ; 0075          # 3.1  MATHEMATICAL ITALIC SMALL U
-1D463         ; mapped                 ; 0076          # 3.1  MATHEMATICAL ITALIC SMALL V
-1D464         ; mapped                 ; 0077          # 3.1  MATHEMATICAL ITALIC SMALL W
-1D465         ; mapped                 ; 0078          # 3.1  MATHEMATICAL ITALIC SMALL X
-1D466         ; mapped                 ; 0079          # 3.1  MATHEMATICAL ITALIC SMALL Y
-1D467         ; mapped                 ; 007A          # 3.1  MATHEMATICAL ITALIC SMALL Z
-1D468         ; mapped                 ; 0061          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL A
-1D469         ; mapped                 ; 0062          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL B
-1D46A         ; mapped                 ; 0063          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL C
-1D46B         ; mapped                 ; 0064          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL D
-1D46C         ; mapped                 ; 0065          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL E
-1D46D         ; mapped                 ; 0066          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL F
-1D46E         ; mapped                 ; 0067          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL G
-1D46F         ; mapped                 ; 0068          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL H
-1D470         ; mapped                 ; 0069          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL I
-1D471         ; mapped                 ; 006A          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL J
-1D472         ; mapped                 ; 006B          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL K
-1D473         ; mapped                 ; 006C          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL L
-1D474         ; mapped                 ; 006D          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL M
-1D475         ; mapped                 ; 006E          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL N
-1D476         ; mapped                 ; 006F          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL O
-1D477         ; mapped                 ; 0070          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL P
-1D478         ; mapped                 ; 0071          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL Q
-1D479         ; mapped                 ; 0072          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL R
-1D47A         ; mapped                 ; 0073          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL S
-1D47B         ; mapped                 ; 0074          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL T
-1D47C         ; mapped                 ; 0075          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL U
-1D47D         ; mapped                 ; 0076          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL V
-1D47E         ; mapped                 ; 0077          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL W
-1D47F         ; mapped                 ; 0078          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL X
-1D480         ; mapped                 ; 0079          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL Y
-1D481         ; mapped                 ; 007A          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL Z
-1D482         ; mapped                 ; 0061          # 3.1  MATHEMATICAL BOLD ITALIC SMALL A
-1D483         ; mapped                 ; 0062          # 3.1  MATHEMATICAL BOLD ITALIC SMALL B
-1D484         ; mapped                 ; 0063          # 3.1  MATHEMATICAL BOLD ITALIC SMALL C
-1D485         ; mapped                 ; 0064          # 3.1  MATHEMATICAL BOLD ITALIC SMALL D
-1D486         ; mapped                 ; 0065          # 3.1  MATHEMATICAL BOLD ITALIC SMALL E
-1D487         ; mapped                 ; 0066          # 3.1  MATHEMATICAL BOLD ITALIC SMALL F
-1D488         ; mapped                 ; 0067          # 3.1  MATHEMATICAL BOLD ITALIC SMALL G
-1D489         ; mapped                 ; 0068          # 3.1  MATHEMATICAL BOLD ITALIC SMALL H
-1D48A         ; mapped                 ; 0069          # 3.1  MATHEMATICAL BOLD ITALIC SMALL I
-1D48B         ; mapped                 ; 006A          # 3.1  MATHEMATICAL BOLD ITALIC SMALL J
-1D48C         ; mapped                 ; 006B          # 3.1  MATHEMATICAL BOLD ITALIC SMALL K
-1D48D         ; mapped                 ; 006C          # 3.1  MATHEMATICAL BOLD ITALIC SMALL L
-1D48E         ; mapped                 ; 006D          # 3.1  MATHEMATICAL BOLD ITALIC SMALL M
-1D48F         ; mapped                 ; 006E          # 3.1  MATHEMATICAL BOLD ITALIC SMALL N
-1D490         ; mapped                 ; 006F          # 3.1  MATHEMATICAL BOLD ITALIC SMALL O
-1D491         ; mapped                 ; 0070          # 3.1  MATHEMATICAL BOLD ITALIC SMALL P
-1D492         ; mapped                 ; 0071          # 3.1  MATHEMATICAL BOLD ITALIC SMALL Q
-1D493         ; mapped                 ; 0072          # 3.1  MATHEMATICAL BOLD ITALIC SMALL R
-1D494         ; mapped                 ; 0073          # 3.1  MATHEMATICAL BOLD ITALIC SMALL S
-1D495         ; mapped                 ; 0074          # 3.1  MATHEMATICAL BOLD ITALIC SMALL T
-1D496         ; mapped                 ; 0075          # 3.1  MATHEMATICAL BOLD ITALIC SMALL U
-1D497         ; mapped                 ; 0076          # 3.1  MATHEMATICAL BOLD ITALIC SMALL V
-1D498         ; mapped                 ; 0077          # 3.1  MATHEMATICAL BOLD ITALIC SMALL W
-1D499         ; mapped                 ; 0078          # 3.1  MATHEMATICAL BOLD ITALIC SMALL X
-1D49A         ; mapped                 ; 0079          # 3.1  MATHEMATICAL BOLD ITALIC SMALL Y
-1D49B         ; mapped                 ; 007A          # 3.1  MATHEMATICAL BOLD ITALIC SMALL Z
-1D49C         ; mapped                 ; 0061          # 3.1  MATHEMATICAL SCRIPT CAPITAL A
-1D49D         ; disallowed                             # NA   <reserved-1D49D>
-1D49E         ; mapped                 ; 0063          # 3.1  MATHEMATICAL SCRIPT CAPITAL C
-1D49F         ; mapped                 ; 0064          # 3.1  MATHEMATICAL SCRIPT CAPITAL D
-1D4A0..1D4A1  ; disallowed                             # NA   <reserved-1D4A0>..<reserved-1D4A1>
-1D4A2         ; mapped                 ; 0067          # 3.1  MATHEMATICAL SCRIPT CAPITAL G
-1D4A3..1D4A4  ; disallowed                             # NA   <reserved-1D4A3>..<reserved-1D4A4>
-1D4A5         ; mapped                 ; 006A          # 3.1  MATHEMATICAL SCRIPT CAPITAL J
-1D4A6         ; mapped                 ; 006B          # 3.1  MATHEMATICAL SCRIPT CAPITAL K
-1D4A7..1D4A8  ; disallowed                             # NA   <reserved-1D4A7>..<reserved-1D4A8>
-1D4A9         ; mapped                 ; 006E          # 3.1  MATHEMATICAL SCRIPT CAPITAL N
-1D4AA         ; mapped                 ; 006F          # 3.1  MATHEMATICAL SCRIPT CAPITAL O
-1D4AB         ; mapped                 ; 0070          # 3.1  MATHEMATICAL SCRIPT CAPITAL P
-1D4AC         ; mapped                 ; 0071          # 3.1  MATHEMATICAL SCRIPT CAPITAL Q
-1D4AD         ; disallowed                             # NA   <reserved-1D4AD>
-1D4AE         ; mapped                 ; 0073          # 3.1  MATHEMATICAL SCRIPT CAPITAL S
-1D4AF         ; mapped                 ; 0074          # 3.1  MATHEMATICAL SCRIPT CAPITAL T
-1D4B0         ; mapped                 ; 0075          # 3.1  MATHEMATICAL SCRIPT CAPITAL U
-1D4B1         ; mapped                 ; 0076          # 3.1  MATHEMATICAL SCRIPT CAPITAL V
-1D4B2         ; mapped                 ; 0077          # 3.1  MATHEMATICAL SCRIPT CAPITAL W
-1D4B3         ; mapped                 ; 0078          # 3.1  MATHEMATICAL SCRIPT CAPITAL X
-1D4B4         ; mapped                 ; 0079          # 3.1  MATHEMATICAL SCRIPT CAPITAL Y
-1D4B5         ; mapped                 ; 007A          # 3.1  MATHEMATICAL SCRIPT CAPITAL Z
-1D4B6         ; mapped                 ; 0061          # 3.1  MATHEMATICAL SCRIPT SMALL A
-1D4B7         ; mapped                 ; 0062          # 3.1  MATHEMATICAL SCRIPT SMALL B
-1D4B8         ; mapped                 ; 0063          # 3.1  MATHEMATICAL SCRIPT SMALL C
-1D4B9         ; mapped                 ; 0064          # 3.1  MATHEMATICAL SCRIPT SMALL D
-1D4BA         ; disallowed                             # NA   <reserved-1D4BA>
-1D4BB         ; mapped                 ; 0066          # 3.1  MATHEMATICAL SCRIPT SMALL F
-1D4BC         ; disallowed                             # NA   <reserved-1D4BC>
-1D4BD         ; mapped                 ; 0068          # 3.1  MATHEMATICAL SCRIPT SMALL H
-1D4BE         ; mapped                 ; 0069          # 3.1  MATHEMATICAL SCRIPT SMALL I
-1D4BF         ; mapped                 ; 006A          # 3.1  MATHEMATICAL SCRIPT SMALL J
-1D4C0         ; mapped                 ; 006B          # 3.1  MATHEMATICAL SCRIPT SMALL K
-1D4C1         ; mapped                 ; 006C          # 4.0  MATHEMATICAL SCRIPT SMALL L
-1D4C2         ; mapped                 ; 006D          # 3.1  MATHEMATICAL SCRIPT SMALL M
-1D4C3         ; mapped                 ; 006E          # 3.1  MATHEMATICAL SCRIPT SMALL N
-1D4C4         ; disallowed                             # NA   <reserved-1D4C4>
-1D4C5         ; mapped                 ; 0070          # 3.1  MATHEMATICAL SCRIPT SMALL P
-1D4C6         ; mapped                 ; 0071          # 3.1  MATHEMATICAL SCRIPT SMALL Q
-1D4C7         ; mapped                 ; 0072          # 3.1  MATHEMATICAL SCRIPT SMALL R
-1D4C8         ; mapped                 ; 0073          # 3.1  MATHEMATICAL SCRIPT SMALL S
-1D4C9         ; mapped                 ; 0074          # 3.1  MATHEMATICAL SCRIPT SMALL T
-1D4CA         ; mapped                 ; 0075          # 3.1  MATHEMATICAL SCRIPT SMALL U
-1D4CB         ; mapped                 ; 0076          # 3.1  MATHEMATICAL SCRIPT SMALL V
-1D4CC         ; mapped                 ; 0077          # 3.1  MATHEMATICAL SCRIPT SMALL W
-1D4CD         ; mapped                 ; 0078          # 3.1  MATHEMATICAL SCRIPT SMALL X
-1D4CE         ; mapped                 ; 0079          # 3.1  MATHEMATICAL SCRIPT SMALL Y
-1D4CF         ; mapped                 ; 007A          # 3.1  MATHEMATICAL SCRIPT SMALL Z
-1D4D0         ; mapped                 ; 0061          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL A
-1D4D1         ; mapped                 ; 0062          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL B
-1D4D2         ; mapped                 ; 0063          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL C
-1D4D3         ; mapped                 ; 0064          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL D
-1D4D4         ; mapped                 ; 0065          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL E
-1D4D5         ; mapped                 ; 0066          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL F
-1D4D6         ; mapped                 ; 0067          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL G
-1D4D7         ; mapped                 ; 0068          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL H
-1D4D8         ; mapped                 ; 0069          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL I
-1D4D9         ; mapped                 ; 006A          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL J
-1D4DA         ; mapped                 ; 006B          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL K
-1D4DB         ; mapped                 ; 006C          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL L
-1D4DC         ; mapped                 ; 006D          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL M
-1D4DD         ; mapped                 ; 006E          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL N
-1D4DE         ; mapped                 ; 006F          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL O
-1D4DF         ; mapped                 ; 0070          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL P
-1D4E0         ; mapped                 ; 0071          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL Q
-1D4E1         ; mapped                 ; 0072          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL R
-1D4E2         ; mapped                 ; 0073          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL S
-1D4E3         ; mapped                 ; 0074          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL T
-1D4E4         ; mapped                 ; 0075          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL U
-1D4E5         ; mapped                 ; 0076          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL V
-1D4E6         ; mapped                 ; 0077          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL W
-1D4E7         ; mapped                 ; 0078          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL X
-1D4E8         ; mapped                 ; 0079          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL Y
-1D4E9         ; mapped                 ; 007A          # 3.1  MATHEMATICAL BOLD SCRIPT CAPITAL Z
-1D4EA         ; mapped                 ; 0061          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL A
-1D4EB         ; mapped                 ; 0062          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL B
-1D4EC         ; mapped                 ; 0063          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL C
-1D4ED         ; mapped                 ; 0064          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL D
-1D4EE         ; mapped                 ; 0065          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL E
-1D4EF         ; mapped                 ; 0066          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL F
-1D4F0         ; mapped                 ; 0067          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL G
-1D4F1         ; mapped                 ; 0068          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL H
-1D4F2         ; mapped                 ; 0069          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL I
-1D4F3         ; mapped                 ; 006A          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL J
-1D4F4         ; mapped                 ; 006B          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL K
-1D4F5         ; mapped                 ; 006C          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL L
-1D4F6         ; mapped                 ; 006D          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL M
-1D4F7         ; mapped                 ; 006E          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL N
-1D4F8         ; mapped                 ; 006F          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL O
-1D4F9         ; mapped                 ; 0070          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL P
-1D4FA         ; mapped                 ; 0071          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL Q
-1D4FB         ; mapped                 ; 0072          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL R
-1D4FC         ; mapped                 ; 0073          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL S
-1D4FD         ; mapped                 ; 0074          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL T
-1D4FE         ; mapped                 ; 0075          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL U
-1D4FF         ; mapped                 ; 0076          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL V
-1D500         ; mapped                 ; 0077          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL W
-1D501         ; mapped                 ; 0078          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL X
-1D502         ; mapped                 ; 0079          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL Y
-1D503         ; mapped                 ; 007A          # 3.1  MATHEMATICAL BOLD SCRIPT SMALL Z
-1D504         ; mapped                 ; 0061          # 3.1  MATHEMATICAL FRAKTUR CAPITAL A
-1D505         ; mapped                 ; 0062          # 3.1  MATHEMATICAL FRAKTUR CAPITAL B
-1D506         ; disallowed                             # NA   <reserved-1D506>
-1D507         ; mapped                 ; 0064          # 3.1  MATHEMATICAL FRAKTUR CAPITAL D
-1D508         ; mapped                 ; 0065          # 3.1  MATHEMATICAL FRAKTUR CAPITAL E
-1D509         ; mapped                 ; 0066          # 3.1  MATHEMATICAL FRAKTUR CAPITAL F
-1D50A         ; mapped                 ; 0067          # 3.1  MATHEMATICAL FRAKTUR CAPITAL G
-1D50B..1D50C  ; disallowed                             # NA   <reserved-1D50B>..<reserved-1D50C>
-1D50D         ; mapped                 ; 006A          # 3.1  MATHEMATICAL FRAKTUR CAPITAL J
-1D50E         ; mapped                 ; 006B          # 3.1  MATHEMATICAL FRAKTUR CAPITAL K
-1D50F         ; mapped                 ; 006C          # 3.1  MATHEMATICAL FRAKTUR CAPITAL L
-1D510         ; mapped                 ; 006D          # 3.1  MATHEMATICAL FRAKTUR CAPITAL M
-1D511         ; mapped                 ; 006E          # 3.1  MATHEMATICAL FRAKTUR CAPITAL N
-1D512         ; mapped                 ; 006F          # 3.1  MATHEMATICAL FRAKTUR CAPITAL O
-1D513         ; mapped                 ; 0070          # 3.1  MATHEMATICAL FRAKTUR CAPITAL P
-1D514         ; mapped                 ; 0071          # 3.1  MATHEMATICAL FRAKTUR CAPITAL Q
-1D515         ; disallowed                             # NA   <reserved-1D515>
-1D516         ; mapped                 ; 0073          # 3.1  MATHEMATICAL FRAKTUR CAPITAL S
-1D517         ; mapped                 ; 0074          # 3.1  MATHEMATICAL FRAKTUR CAPITAL T
-1D518         ; mapped                 ; 0075          # 3.1  MATHEMATICAL FRAKTUR CAPITAL U
-1D519         ; mapped                 ; 0076          # 3.1  MATHEMATICAL FRAKTUR CAPITAL V
-1D51A         ; mapped                 ; 0077          # 3.1  MATHEMATICAL FRAKTUR CAPITAL W
-1D51B         ; mapped                 ; 0078          # 3.1  MATHEMATICAL FRAKTUR CAPITAL X
-1D51C         ; mapped                 ; 0079          # 3.1  MATHEMATICAL FRAKTUR CAPITAL Y
-1D51D         ; disallowed                             # NA   <reserved-1D51D>
-1D51E         ; mapped                 ; 0061          # 3.1  MATHEMATICAL FRAKTUR SMALL A
-1D51F         ; mapped                 ; 0062          # 3.1  MATHEMATICAL FRAKTUR SMALL B
-1D520         ; mapped                 ; 0063          # 3.1  MATHEMATICAL FRAKTUR SMALL C
-1D521         ; mapped                 ; 0064          # 3.1  MATHEMATICAL FRAKTUR SMALL D
-1D522         ; mapped                 ; 0065          # 3.1  MATHEMATICAL FRAKTUR SMALL E
-1D523         ; mapped                 ; 0066          # 3.1  MATHEMATICAL FRAKTUR SMALL F
-1D524         ; mapped                 ; 0067          # 3.1  MATHEMATICAL FRAKTUR SMALL G
-1D525         ; mapped                 ; 0068          # 3.1  MATHEMATICAL FRAKTUR SMALL H
-1D526         ; mapped                 ; 0069          # 3.1  MATHEMATICAL FRAKTUR SMALL I
-1D527         ; mapped                 ; 006A          # 3.1  MATHEMATICAL FRAKTUR SMALL J
-1D528         ; mapped                 ; 006B          # 3.1  MATHEMATICAL FRAKTUR SMALL K
-1D529         ; mapped                 ; 006C          # 3.1  MATHEMATICAL FRAKTUR SMALL L
-1D52A         ; mapped                 ; 006D          # 3.1  MATHEMATICAL FRAKTUR SMALL M
-1D52B         ; mapped                 ; 006E          # 3.1  MATHEMATICAL FRAKTUR SMALL N
-1D52C         ; mapped                 ; 006F          # 3.1  MATHEMATICAL FRAKTUR SMALL O
-1D52D         ; mapped                 ; 0070          # 3.1  MATHEMATICAL FRAKTUR SMALL P
-1D52E         ; mapped                 ; 0071          # 3.1  MATHEMATICAL FRAKTUR SMALL Q
-1D52F         ; mapped                 ; 0072          # 3.1  MATHEMATICAL FRAKTUR SMALL R
-1D530         ; mapped                 ; 0073          # 3.1  MATHEMATICAL FRAKTUR SMALL S
-1D531         ; mapped                 ; 0074          # 3.1  MATHEMATICAL FRAKTUR SMALL T
-1D532         ; mapped                 ; 0075          # 3.1  MATHEMATICAL FRAKTUR SMALL U
-1D533         ; mapped                 ; 0076          # 3.1  MATHEMATICAL FRAKTUR SMALL V
-1D534         ; mapped                 ; 0077          # 3.1  MATHEMATICAL FRAKTUR SMALL W
-1D535         ; mapped                 ; 0078          # 3.1  MATHEMATICAL FRAKTUR SMALL X
-1D536         ; mapped                 ; 0079          # 3.1  MATHEMATICAL FRAKTUR SMALL Y
-1D537         ; mapped                 ; 007A          # 3.1  MATHEMATICAL FRAKTUR SMALL Z
-1D538         ; mapped                 ; 0061          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL A
-1D539         ; mapped                 ; 0062          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL B
-1D53A         ; disallowed                             # NA   <reserved-1D53A>
-1D53B         ; mapped                 ; 0064          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL D
-1D53C         ; mapped                 ; 0065          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL E
-1D53D         ; mapped                 ; 0066          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL F
-1D53E         ; mapped                 ; 0067          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL G
-1D53F         ; disallowed                             # NA   <reserved-1D53F>
-1D540         ; mapped                 ; 0069          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL I
-1D541         ; mapped                 ; 006A          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL J
-1D542         ; mapped                 ; 006B          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL K
-1D543         ; mapped                 ; 006C          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL L
-1D544         ; mapped                 ; 006D          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL M
-1D545         ; disallowed                             # NA   <reserved-1D545>
-1D546         ; mapped                 ; 006F          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL O
-1D547..1D549  ; disallowed                             # NA   <reserved-1D547>..<reserved-1D549>
-1D54A         ; mapped                 ; 0073          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL S
-1D54B         ; mapped                 ; 0074          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL T
-1D54C         ; mapped                 ; 0075          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL U
-1D54D         ; mapped                 ; 0076          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL V
-1D54E         ; mapped                 ; 0077          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL W
-1D54F         ; mapped                 ; 0078          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL X
-1D550         ; mapped                 ; 0079          # 3.1  MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
-1D551         ; disallowed                             # NA   <reserved-1D551>
-1D552         ; mapped                 ; 0061          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL A
-1D553         ; mapped                 ; 0062          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL B
-1D554         ; mapped                 ; 0063          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL C
-1D555         ; mapped                 ; 0064          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL D
-1D556         ; mapped                 ; 0065          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL E
-1D557         ; mapped                 ; 0066          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL F
-1D558         ; mapped                 ; 0067          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL G
-1D559         ; mapped                 ; 0068          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL H
-1D55A         ; mapped                 ; 0069          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL I
-1D55B         ; mapped                 ; 006A          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL J
-1D55C         ; mapped                 ; 006B          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL K
-1D55D         ; mapped                 ; 006C          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL L
-1D55E         ; mapped                 ; 006D          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL M
-1D55F         ; mapped                 ; 006E          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL N
-1D560         ; mapped                 ; 006F          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL O
-1D561         ; mapped                 ; 0070          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL P
-1D562         ; mapped                 ; 0071          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL Q
-1D563         ; mapped                 ; 0072          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL R
-1D564         ; mapped                 ; 0073          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL S
-1D565         ; mapped                 ; 0074          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL T
-1D566         ; mapped                 ; 0075          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL U
-1D567         ; mapped                 ; 0076          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL V
-1D568         ; mapped                 ; 0077          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL W
-1D569         ; mapped                 ; 0078          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL X
-1D56A         ; mapped                 ; 0079          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL Y
-1D56B         ; mapped                 ; 007A          # 3.1  MATHEMATICAL DOUBLE-STRUCK SMALL Z
-1D56C         ; mapped                 ; 0061          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL A
-1D56D         ; mapped                 ; 0062          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL B
-1D56E         ; mapped                 ; 0063          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL C
-1D56F         ; mapped                 ; 0064          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL D
-1D570         ; mapped                 ; 0065          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL E
-1D571         ; mapped                 ; 0066          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL F
-1D572         ; mapped                 ; 0067          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL G
-1D573         ; mapped                 ; 0068          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL H
-1D574         ; mapped                 ; 0069          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL I
-1D575         ; mapped                 ; 006A          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL J
-1D576         ; mapped                 ; 006B          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL K
-1D577         ; mapped                 ; 006C          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL L
-1D578         ; mapped                 ; 006D          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL M
-1D579         ; mapped                 ; 006E          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL N
-1D57A         ; mapped                 ; 006F          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL O
-1D57B         ; mapped                 ; 0070          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL P
-1D57C         ; mapped                 ; 0071          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL Q
-1D57D         ; mapped                 ; 0072          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL R
-1D57E         ; mapped                 ; 0073          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL S
-1D57F         ; mapped                 ; 0074          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL T
-1D580         ; mapped                 ; 0075          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL U
-1D581         ; mapped                 ; 0076          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL V
-1D582         ; mapped                 ; 0077          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL W
-1D583         ; mapped                 ; 0078          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL X
-1D584         ; mapped                 ; 0079          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL Y
-1D585         ; mapped                 ; 007A          # 3.1  MATHEMATICAL BOLD FRAKTUR CAPITAL Z
-1D586         ; mapped                 ; 0061          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL A
-1D587         ; mapped                 ; 0062          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL B
-1D588         ; mapped                 ; 0063          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL C
-1D589         ; mapped                 ; 0064          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL D
-1D58A         ; mapped                 ; 0065          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL E
-1D58B         ; mapped                 ; 0066          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL F
-1D58C         ; mapped                 ; 0067          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL G
-1D58D         ; mapped                 ; 0068          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL H
-1D58E         ; mapped                 ; 0069          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL I
-1D58F         ; mapped                 ; 006A          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL J
-1D590         ; mapped                 ; 006B          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL K
-1D591         ; mapped                 ; 006C          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL L
-1D592         ; mapped                 ; 006D          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL M
-1D593         ; mapped                 ; 006E          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL N
-1D594         ; mapped                 ; 006F          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL O
-1D595         ; mapped                 ; 0070          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL P
-1D596         ; mapped                 ; 0071          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL Q
-1D597         ; mapped                 ; 0072          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL R
-1D598         ; mapped                 ; 0073          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL S
-1D599         ; mapped                 ; 0074          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL T
-1D59A         ; mapped                 ; 0075          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL U
-1D59B         ; mapped                 ; 0076          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL V
-1D59C         ; mapped                 ; 0077          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL W
-1D59D         ; mapped                 ; 0078          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL X
-1D59E         ; mapped                 ; 0079          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL Y
-1D59F         ; mapped                 ; 007A          # 3.1  MATHEMATICAL BOLD FRAKTUR SMALL Z
-1D5A0         ; mapped                 ; 0061          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL A
-1D5A1         ; mapped                 ; 0062          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL B
-1D5A2         ; mapped                 ; 0063          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL C
-1D5A3         ; mapped                 ; 0064          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL D
-1D5A4         ; mapped                 ; 0065          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL E
-1D5A5         ; mapped                 ; 0066          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL F
-1D5A6         ; mapped                 ; 0067          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL G
-1D5A7         ; mapped                 ; 0068          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL H
-1D5A8         ; mapped                 ; 0069          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL I
-1D5A9         ; mapped                 ; 006A          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL J
-1D5AA         ; mapped                 ; 006B          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL K
-1D5AB         ; mapped                 ; 006C          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL L
-1D5AC         ; mapped                 ; 006D          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL M
-1D5AD         ; mapped                 ; 006E          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL N
-1D5AE         ; mapped                 ; 006F          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL O
-1D5AF         ; mapped                 ; 0070          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL P
-1D5B0         ; mapped                 ; 0071          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL Q
-1D5B1         ; mapped                 ; 0072          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL R
-1D5B2         ; mapped                 ; 0073          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL S
-1D5B3         ; mapped                 ; 0074          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL T
-1D5B4         ; mapped                 ; 0075          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL U
-1D5B5         ; mapped                 ; 0076          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL V
-1D5B6         ; mapped                 ; 0077          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL W
-1D5B7         ; mapped                 ; 0078          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL X
-1D5B8         ; mapped                 ; 0079          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL Y
-1D5B9         ; mapped                 ; 007A          # 3.1  MATHEMATICAL SANS-SERIF CAPITAL Z
-1D5BA         ; mapped                 ; 0061          # 3.1  MATHEMATICAL SANS-SERIF SMALL A
-1D5BB         ; mapped                 ; 0062          # 3.1  MATHEMATICAL SANS-SERIF SMALL B
-1D5BC         ; mapped                 ; 0063          # 3.1  MATHEMATICAL SANS-SERIF SMALL C
-1D5BD         ; mapped                 ; 0064          # 3.1  MATHEMATICAL SANS-SERIF SMALL D
-1D5BE         ; mapped                 ; 0065          # 3.1  MATHEMATICAL SANS-SERIF SMALL E
-1D5BF         ; mapped                 ; 0066          # 3.1  MATHEMATICAL SANS-SERIF SMALL F
-1D5C0         ; mapped                 ; 0067          # 3.1  MATHEMATICAL SANS-SERIF SMALL G
-1D5C1         ; mapped                 ; 0068          # 3.1  MATHEMATICAL SANS-SERIF SMALL H
-1D5C2         ; mapped                 ; 0069          # 3.1  MATHEMATICAL SANS-SERIF SMALL I
-1D5C3         ; mapped                 ; 006A          # 3.1  MATHEMATICAL SANS-SERIF SMALL J
-1D5C4         ; mapped                 ; 006B          # 3.1  MATHEMATICAL SANS-SERIF SMALL K
-1D5C5         ; mapped                 ; 006C          # 3.1  MATHEMATICAL SANS-SERIF SMALL L
-1D5C6         ; mapped                 ; 006D          # 3.1  MATHEMATICAL SANS-SERIF SMALL M
-1D5C7         ; mapped                 ; 006E          # 3.1  MATHEMATICAL SANS-SERIF SMALL N
-1D5C8         ; mapped                 ; 006F          # 3.1  MATHEMATICAL SANS-SERIF SMALL O
-1D5C9         ; mapped                 ; 0070          # 3.1  MATHEMATICAL SANS-SERIF SMALL P
-1D5CA         ; mapped                 ; 0071          # 3.1  MATHEMATICAL SANS-SERIF SMALL Q
-1D5CB         ; mapped                 ; 0072          # 3.1  MATHEMATICAL SANS-SERIF SMALL R
-1D5CC         ; mapped                 ; 0073          # 3.1  MATHEMATICAL SANS-SERIF SMALL S
-1D5CD         ; mapped                 ; 0074          # 3.1  MATHEMATICAL SANS-SERIF SMALL T
-1D5CE         ; mapped                 ; 0075          # 3.1  MATHEMATICAL SANS-SERIF SMALL U
-1D5CF         ; mapped                 ; 0076          # 3.1  MATHEMATICAL SANS-SERIF SMALL V
-1D5D0         ; mapped                 ; 0077          # 3.1  MATHEMATICAL SANS-SERIF SMALL W
-1D5D1         ; mapped                 ; 0078          # 3.1  MATHEMATICAL SANS-SERIF SMALL X
-1D5D2         ; mapped                 ; 0079          # 3.1  MATHEMATICAL SANS-SERIF SMALL Y
-1D5D3         ; mapped                 ; 007A          # 3.1  MATHEMATICAL SANS-SERIF SMALL Z
-1D5D4         ; mapped                 ; 0061          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL A
-1D5D5         ; mapped                 ; 0062          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL B
-1D5D6         ; mapped                 ; 0063          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL C
-1D5D7         ; mapped                 ; 0064          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL D
-1D5D8         ; mapped                 ; 0065          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL E
-1D5D9         ; mapped                 ; 0066          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL F
-1D5DA         ; mapped                 ; 0067          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL G
-1D5DB         ; mapped                 ; 0068          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL H
-1D5DC         ; mapped                 ; 0069          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL I
-1D5DD         ; mapped                 ; 006A          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL J
-1D5DE         ; mapped                 ; 006B          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL K
-1D5DF         ; mapped                 ; 006C          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL L
-1D5E0         ; mapped                 ; 006D          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL M
-1D5E1         ; mapped                 ; 006E          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL N
-1D5E2         ; mapped                 ; 006F          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL O
-1D5E3         ; mapped                 ; 0070          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL P
-1D5E4         ; mapped                 ; 0071          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
-1D5E5         ; mapped                 ; 0072          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL R
-1D5E6         ; mapped                 ; 0073          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL S
-1D5E7         ; mapped                 ; 0074          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL T
-1D5E8         ; mapped                 ; 0075          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL U
-1D5E9         ; mapped                 ; 0076          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL V
-1D5EA         ; mapped                 ; 0077          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL W
-1D5EB         ; mapped                 ; 0078          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL X
-1D5EC         ; mapped                 ; 0079          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
-1D5ED         ; mapped                 ; 007A          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
-1D5EE         ; mapped                 ; 0061          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL A
-1D5EF         ; mapped                 ; 0062          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL B
-1D5F0         ; mapped                 ; 0063          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL C
-1D5F1         ; mapped                 ; 0064          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL D
-1D5F2         ; mapped                 ; 0065          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL E
-1D5F3         ; mapped                 ; 0066          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL F
-1D5F4         ; mapped                 ; 0067          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL G
-1D5F5         ; mapped                 ; 0068          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL H
-1D5F6         ; mapped                 ; 0069          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL I
-1D5F7         ; mapped                 ; 006A          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL J
-1D5F8         ; mapped                 ; 006B          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL K
-1D5F9         ; mapped                 ; 006C          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL L
-1D5FA         ; mapped                 ; 006D          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL M
-1D5FB         ; mapped                 ; 006E          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL N
-1D5FC         ; mapped                 ; 006F          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL O
-1D5FD         ; mapped                 ; 0070          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL P
-1D5FE         ; mapped                 ; 0071          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL Q
-1D5FF         ; mapped                 ; 0072          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL R
-1D600         ; mapped                 ; 0073          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL S
-1D601         ; mapped                 ; 0074          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL T
-1D602         ; mapped                 ; 0075          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL U
-1D603         ; mapped                 ; 0076          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL V
-1D604         ; mapped                 ; 0077          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL W
-1D605         ; mapped                 ; 0078          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL X
-1D606         ; mapped                 ; 0079          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL Y
-1D607         ; mapped                 ; 007A          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL Z
-1D608         ; mapped                 ; 0061          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
-1D609         ; mapped                 ; 0062          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
-1D60A         ; mapped                 ; 0063          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
-1D60B         ; mapped                 ; 0064          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
-1D60C         ; mapped                 ; 0065          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
-1D60D         ; mapped                 ; 0066          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
-1D60E         ; mapped                 ; 0067          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
-1D60F         ; mapped                 ; 0068          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
-1D610         ; mapped                 ; 0069          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
-1D611         ; mapped                 ; 006A          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
-1D612         ; mapped                 ; 006B          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
-1D613         ; mapped                 ; 006C          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
-1D614         ; mapped                 ; 006D          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
-1D615         ; mapped                 ; 006E          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
-1D616         ; mapped                 ; 006F          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
-1D617         ; mapped                 ; 0070          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
-1D618         ; mapped                 ; 0071          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
-1D619         ; mapped                 ; 0072          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
-1D61A         ; mapped                 ; 0073          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
-1D61B         ; mapped                 ; 0074          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
-1D61C         ; mapped                 ; 0075          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
-1D61D         ; mapped                 ; 0076          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
-1D61E         ; mapped                 ; 0077          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
-1D61F         ; mapped                 ; 0078          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
-1D620         ; mapped                 ; 0079          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
-1D621         ; mapped                 ; 007A          # 3.1  MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
-1D622         ; mapped                 ; 0061          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL A
-1D623         ; mapped                 ; 0062          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL B
-1D624         ; mapped                 ; 0063          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL C
-1D625         ; mapped                 ; 0064          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL D
-1D626         ; mapped                 ; 0065          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL E
-1D627         ; mapped                 ; 0066          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL F
-1D628         ; mapped                 ; 0067          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL G
-1D629         ; mapped                 ; 0068          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL H
-1D62A         ; mapped                 ; 0069          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL I
-1D62B         ; mapped                 ; 006A          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL J
-1D62C         ; mapped                 ; 006B          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL K
-1D62D         ; mapped                 ; 006C          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL L
-1D62E         ; mapped                 ; 006D          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL M
-1D62F         ; mapped                 ; 006E          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL N
-1D630         ; mapped                 ; 006F          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL O
-1D631         ; mapped                 ; 0070          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL P
-1D632         ; mapped                 ; 0071          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL Q
-1D633         ; mapped                 ; 0072          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL R
-1D634         ; mapped                 ; 0073          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL S
-1D635         ; mapped                 ; 0074          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL T
-1D636         ; mapped                 ; 0075          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL U
-1D637         ; mapped                 ; 0076          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL V
-1D638         ; mapped                 ; 0077          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL W
-1D639         ; mapped                 ; 0078          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL X
-1D63A         ; mapped                 ; 0079          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL Y
-1D63B         ; mapped                 ; 007A          # 3.1  MATHEMATICAL SANS-SERIF ITALIC SMALL Z
-1D63C         ; mapped                 ; 0061          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
-1D63D         ; mapped                 ; 0062          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
-1D63E         ; mapped                 ; 0063          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
-1D63F         ; mapped                 ; 0064          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
-1D640         ; mapped                 ; 0065          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
-1D641         ; mapped                 ; 0066          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
-1D642         ; mapped                 ; 0067          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
-1D643         ; mapped                 ; 0068          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
-1D644         ; mapped                 ; 0069          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
-1D645         ; mapped                 ; 006A          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
-1D646         ; mapped                 ; 006B          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
-1D647         ; mapped                 ; 006C          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
-1D648         ; mapped                 ; 006D          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
-1D649         ; mapped                 ; 006E          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
-1D64A         ; mapped                 ; 006F          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
-1D64B         ; mapped                 ; 0070          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
-1D64C         ; mapped                 ; 0071          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
-1D64D         ; mapped                 ; 0072          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
-1D64E         ; mapped                 ; 0073          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
-1D64F         ; mapped                 ; 0074          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
-1D650         ; mapped                 ; 0075          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
-1D651         ; mapped                 ; 0076          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
-1D652         ; mapped                 ; 0077          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
-1D653         ; mapped                 ; 0078          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
-1D654         ; mapped                 ; 0079          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
-1D655         ; mapped                 ; 007A          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
-1D656         ; mapped                 ; 0061          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
-1D657         ; mapped                 ; 0062          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
-1D658         ; mapped                 ; 0063          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
-1D659         ; mapped                 ; 0064          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
-1D65A         ; mapped                 ; 0065          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
-1D65B         ; mapped                 ; 0066          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
-1D65C         ; mapped                 ; 0067          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
-1D65D         ; mapped                 ; 0068          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
-1D65E         ; mapped                 ; 0069          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
-1D65F         ; mapped                 ; 006A          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
-1D660         ; mapped                 ; 006B          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
-1D661         ; mapped                 ; 006C          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
-1D662         ; mapped                 ; 006D          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
-1D663         ; mapped                 ; 006E          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
-1D664         ; mapped                 ; 006F          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
-1D665         ; mapped                 ; 0070          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
-1D666         ; mapped                 ; 0071          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
-1D667         ; mapped                 ; 0072          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
-1D668         ; mapped                 ; 0073          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
-1D669         ; mapped                 ; 0074          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
-1D66A         ; mapped                 ; 0075          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
-1D66B         ; mapped                 ; 0076          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
-1D66C         ; mapped                 ; 0077          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
-1D66D         ; mapped                 ; 0078          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
-1D66E         ; mapped                 ; 0079          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
-1D66F         ; mapped                 ; 007A          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
-1D670         ; mapped                 ; 0061          # 3.1  MATHEMATICAL MONOSPACE CAPITAL A
-1D671         ; mapped                 ; 0062          # 3.1  MATHEMATICAL MONOSPACE CAPITAL B
-1D672         ; mapped                 ; 0063          # 3.1  MATHEMATICAL MONOSPACE CAPITAL C
-1D673         ; mapped                 ; 0064          # 3.1  MATHEMATICAL MONOSPACE CAPITAL D
-1D674         ; mapped                 ; 0065          # 3.1  MATHEMATICAL MONOSPACE CAPITAL E
-1D675         ; mapped                 ; 0066          # 3.1  MATHEMATICAL MONOSPACE CAPITAL F
-1D676         ; mapped                 ; 0067          # 3.1  MATHEMATICAL MONOSPACE CAPITAL G
-1D677         ; mapped                 ; 0068          # 3.1  MATHEMATICAL MONOSPACE CAPITAL H
-1D678         ; mapped                 ; 0069          # 3.1  MATHEMATICAL MONOSPACE CAPITAL I
-1D679         ; mapped                 ; 006A          # 3.1  MATHEMATICAL MONOSPACE CAPITAL J
-1D67A         ; mapped                 ; 006B          # 3.1  MATHEMATICAL MONOSPACE CAPITAL K
-1D67B         ; mapped                 ; 006C          # 3.1  MATHEMATICAL MONOSPACE CAPITAL L
-1D67C         ; mapped                 ; 006D          # 3.1  MATHEMATICAL MONOSPACE CAPITAL M
-1D67D         ; mapped                 ; 006E          # 3.1  MATHEMATICAL MONOSPACE CAPITAL N
-1D67E         ; mapped                 ; 006F          # 3.1  MATHEMATICAL MONOSPACE CAPITAL O
-1D67F         ; mapped                 ; 0070          # 3.1  MATHEMATICAL MONOSPACE CAPITAL P
-1D680         ; mapped                 ; 0071          # 3.1  MATHEMATICAL MONOSPACE CAPITAL Q
-1D681         ; mapped                 ; 0072          # 3.1  MATHEMATICAL MONOSPACE CAPITAL R
-1D682         ; mapped                 ; 0073          # 3.1  MATHEMATICAL MONOSPACE CAPITAL S
-1D683         ; mapped                 ; 0074          # 3.1  MATHEMATICAL MONOSPACE CAPITAL T
-1D684         ; mapped                 ; 0075          # 3.1  MATHEMATICAL MONOSPACE CAPITAL U
-1D685         ; mapped                 ; 0076          # 3.1  MATHEMATICAL MONOSPACE CAPITAL V
-1D686         ; mapped                 ; 0077          # 3.1  MATHEMATICAL MONOSPACE CAPITAL W
-1D687         ; mapped                 ; 0078          # 3.1  MATHEMATICAL MONOSPACE CAPITAL X
-1D688         ; mapped                 ; 0079          # 3.1  MATHEMATICAL MONOSPACE CAPITAL Y
-1D689         ; mapped                 ; 007A          # 3.1  MATHEMATICAL MONOSPACE CAPITAL Z
-1D68A         ; mapped                 ; 0061          # 3.1  MATHEMATICAL MONOSPACE SMALL A
-1D68B         ; mapped                 ; 0062          # 3.1  MATHEMATICAL MONOSPACE SMALL B
-1D68C         ; mapped                 ; 0063          # 3.1  MATHEMATICAL MONOSPACE SMALL C
-1D68D         ; mapped                 ; 0064          # 3.1  MATHEMATICAL MONOSPACE SMALL D
-1D68E         ; mapped                 ; 0065          # 3.1  MATHEMATICAL MONOSPACE SMALL E
-1D68F         ; mapped                 ; 0066          # 3.1  MATHEMATICAL MONOSPACE SMALL F
-1D690         ; mapped                 ; 0067          # 3.1  MATHEMATICAL MONOSPACE SMALL G
-1D691         ; mapped                 ; 0068          # 3.1  MATHEMATICAL MONOSPACE SMALL H
-1D692         ; mapped                 ; 0069          # 3.1  MATHEMATICAL MONOSPACE SMALL I
-1D693         ; mapped                 ; 006A          # 3.1  MATHEMATICAL MONOSPACE SMALL J
-1D694         ; mapped                 ; 006B          # 3.1  MATHEMATICAL MONOSPACE SMALL K
-1D695         ; mapped                 ; 006C          # 3.1  MATHEMATICAL MONOSPACE SMALL L
-1D696         ; mapped                 ; 006D          # 3.1  MATHEMATICAL MONOSPACE SMALL M
-1D697         ; mapped                 ; 006E          # 3.1  MATHEMATICAL MONOSPACE SMALL N
-1D698         ; mapped                 ; 006F          # 3.1  MATHEMATICAL MONOSPACE SMALL O
-1D699         ; mapped                 ; 0070          # 3.1  MATHEMATICAL MONOSPACE SMALL P
-1D69A         ; mapped                 ; 0071          # 3.1  MATHEMATICAL MONOSPACE SMALL Q
-1D69B         ; mapped                 ; 0072          # 3.1  MATHEMATICAL MONOSPACE SMALL R
-1D69C         ; mapped                 ; 0073          # 3.1  MATHEMATICAL MONOSPACE SMALL S
-1D69D         ; mapped                 ; 0074          # 3.1  MATHEMATICAL MONOSPACE SMALL T
-1D69E         ; mapped                 ; 0075          # 3.1  MATHEMATICAL MONOSPACE SMALL U
-1D69F         ; mapped                 ; 0076          # 3.1  MATHEMATICAL MONOSPACE SMALL V
-1D6A0         ; mapped                 ; 0077          # 3.1  MATHEMATICAL MONOSPACE SMALL W
-1D6A1         ; mapped                 ; 0078          # 3.1  MATHEMATICAL MONOSPACE SMALL X
-1D6A2         ; mapped                 ; 0079          # 3.1  MATHEMATICAL MONOSPACE SMALL Y
-1D6A3         ; mapped                 ; 007A          # 3.1  MATHEMATICAL MONOSPACE SMALL Z
-1D6A4         ; mapped                 ; 0131          # 4.1  MATHEMATICAL ITALIC SMALL DOTLESS I
-1D6A5         ; mapped                 ; 0237          # 4.1  MATHEMATICAL ITALIC SMALL DOTLESS J
-1D6A6..1D6A7  ; disallowed                             # NA   <reserved-1D6A6>..<reserved-1D6A7>
-1D6A8         ; mapped                 ; 03B1          # 3.1  MATHEMATICAL BOLD CAPITAL ALPHA
-1D6A9         ; mapped                 ; 03B2          # 3.1  MATHEMATICAL BOLD CAPITAL BETA
-1D6AA         ; mapped                 ; 03B3          # 3.1  MATHEMATICAL BOLD CAPITAL GAMMA
-1D6AB         ; mapped                 ; 03B4          # 3.1  MATHEMATICAL BOLD CAPITAL DELTA
-1D6AC         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL BOLD CAPITAL EPSILON
-1D6AD         ; mapped                 ; 03B6          # 3.1  MATHEMATICAL BOLD CAPITAL ZETA
-1D6AE         ; mapped                 ; 03B7          # 3.1  MATHEMATICAL BOLD CAPITAL ETA
-1D6AF         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL BOLD CAPITAL THETA
-1D6B0         ; mapped                 ; 03B9          # 3.1  MATHEMATICAL BOLD CAPITAL IOTA
-1D6B1         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL BOLD CAPITAL KAPPA
-1D6B2         ; mapped                 ; 03BB          # 3.1  MATHEMATICAL BOLD CAPITAL LAMDA
-1D6B3         ; mapped                 ; 03BC          # 3.1  MATHEMATICAL BOLD CAPITAL MU
-1D6B4         ; mapped                 ; 03BD          # 3.1  MATHEMATICAL BOLD CAPITAL NU
-1D6B5         ; mapped                 ; 03BE          # 3.1  MATHEMATICAL BOLD CAPITAL XI
-1D6B6         ; mapped                 ; 03BF          # 3.1  MATHEMATICAL BOLD CAPITAL OMICRON
-1D6B7         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL BOLD CAPITAL PI
-1D6B8         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL BOLD CAPITAL RHO
-1D6B9         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL BOLD CAPITAL THETA SYMBOL
-1D6BA         ; mapped                 ; 03C3          # 3.1  MATHEMATICAL BOLD CAPITAL SIGMA
-1D6BB         ; mapped                 ; 03C4          # 3.1  MATHEMATICAL BOLD CAPITAL TAU
-1D6BC         ; mapped                 ; 03C5          # 3.1  MATHEMATICAL BOLD CAPITAL UPSILON
-1D6BD         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL BOLD CAPITAL PHI
-1D6BE         ; mapped                 ; 03C7          # 3.1  MATHEMATICAL BOLD CAPITAL CHI
-1D6BF         ; mapped                 ; 03C8          # 3.1  MATHEMATICAL BOLD CAPITAL PSI
-1D6C0         ; mapped                 ; 03C9          # 3.1  MATHEMATICAL BOLD CAPITAL OMEGA
-1D6C1         ; mapped                 ; 2207          # 3.1  MATHEMATICAL BOLD NABLA
-1D6C2         ; mapped                 ; 03B1          # 3.1  MATHEMATICAL BOLD SMALL ALPHA
-1D6C3         ; mapped                 ; 03B2          # 3.1  MATHEMATICAL BOLD SMALL BETA
-1D6C4         ; mapped                 ; 03B3          # 3.1  MATHEMATICAL BOLD SMALL GAMMA
-1D6C5         ; mapped                 ; 03B4          # 3.1  MATHEMATICAL BOLD SMALL DELTA
-1D6C6         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL BOLD SMALL EPSILON
-1D6C7         ; mapped                 ; 03B6          # 3.1  MATHEMATICAL BOLD SMALL ZETA
-1D6C8         ; mapped                 ; 03B7          # 3.1  MATHEMATICAL BOLD SMALL ETA
-1D6C9         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL BOLD SMALL THETA
-1D6CA         ; mapped                 ; 03B9          # 3.1  MATHEMATICAL BOLD SMALL IOTA
-1D6CB         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL BOLD SMALL KAPPA
-1D6CC         ; mapped                 ; 03BB          # 3.1  MATHEMATICAL BOLD SMALL LAMDA
-1D6CD         ; mapped                 ; 03BC          # 3.1  MATHEMATICAL BOLD SMALL MU
-1D6CE         ; mapped                 ; 03BD          # 3.1  MATHEMATICAL BOLD SMALL NU
-1D6CF         ; mapped                 ; 03BE          # 3.1  MATHEMATICAL BOLD SMALL XI
-1D6D0         ; mapped                 ; 03BF          # 3.1  MATHEMATICAL BOLD SMALL OMICRON
-1D6D1         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL BOLD SMALL PI
-1D6D2         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL BOLD SMALL RHO
-1D6D3..1D6D4  ; mapped                 ; 03C3          # 3.1  MATHEMATICAL BOLD SMALL FINAL SIGMA..MATHEMATICAL BOLD SMALL SIGMA
-1D6D5         ; mapped                 ; 03C4          # 3.1  MATHEMATICAL BOLD SMALL TAU
-1D6D6         ; mapped                 ; 03C5          # 3.1  MATHEMATICAL BOLD SMALL UPSILON
-1D6D7         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL BOLD SMALL PHI
-1D6D8         ; mapped                 ; 03C7          # 3.1  MATHEMATICAL BOLD SMALL CHI
-1D6D9         ; mapped                 ; 03C8          # 3.1  MATHEMATICAL BOLD SMALL PSI
-1D6DA         ; mapped                 ; 03C9          # 3.1  MATHEMATICAL BOLD SMALL OMEGA
-1D6DB         ; mapped                 ; 2202          # 3.1  MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
-1D6DC         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL BOLD EPSILON SYMBOL
-1D6DD         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL BOLD THETA SYMBOL
-1D6DE         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL BOLD KAPPA SYMBOL
-1D6DF         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL BOLD PHI SYMBOL
-1D6E0         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL BOLD RHO SYMBOL
-1D6E1         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL BOLD PI SYMBOL
-1D6E2         ; mapped                 ; 03B1          # 3.1  MATHEMATICAL ITALIC CAPITAL ALPHA
-1D6E3         ; mapped                 ; 03B2          # 3.1  MATHEMATICAL ITALIC CAPITAL BETA
-1D6E4         ; mapped                 ; 03B3          # 3.1  MATHEMATICAL ITALIC CAPITAL GAMMA
-1D6E5         ; mapped                 ; 03B4          # 3.1  MATHEMATICAL ITALIC CAPITAL DELTA
-1D6E6         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL ITALIC CAPITAL EPSILON
-1D6E7         ; mapped                 ; 03B6          # 3.1  MATHEMATICAL ITALIC CAPITAL ZETA
-1D6E8         ; mapped                 ; 03B7          # 3.1  MATHEMATICAL ITALIC CAPITAL ETA
-1D6E9         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL ITALIC CAPITAL THETA
-1D6EA         ; mapped                 ; 03B9          # 3.1  MATHEMATICAL ITALIC CAPITAL IOTA
-1D6EB         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL ITALIC CAPITAL KAPPA
-1D6EC         ; mapped                 ; 03BB          # 3.1  MATHEMATICAL ITALIC CAPITAL LAMDA
-1D6ED         ; mapped                 ; 03BC          # 3.1  MATHEMATICAL ITALIC CAPITAL MU
-1D6EE         ; mapped                 ; 03BD          # 3.1  MATHEMATICAL ITALIC CAPITAL NU
-1D6EF         ; mapped                 ; 03BE          # 3.1  MATHEMATICAL ITALIC CAPITAL XI
-1D6F0         ; mapped                 ; 03BF          # 3.1  MATHEMATICAL ITALIC CAPITAL OMICRON
-1D6F1         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL ITALIC CAPITAL PI
-1D6F2         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL ITALIC CAPITAL RHO
-1D6F3         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
-1D6F4         ; mapped                 ; 03C3          # 3.1  MATHEMATICAL ITALIC CAPITAL SIGMA
-1D6F5         ; mapped                 ; 03C4          # 3.1  MATHEMATICAL ITALIC CAPITAL TAU
-1D6F6         ; mapped                 ; 03C5          # 3.1  MATHEMATICAL ITALIC CAPITAL UPSILON
-1D6F7         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL ITALIC CAPITAL PHI
-1D6F8         ; mapped                 ; 03C7          # 3.1  MATHEMATICAL ITALIC CAPITAL CHI
-1D6F9         ; mapped                 ; 03C8          # 3.1  MATHEMATICAL ITALIC CAPITAL PSI
-1D6FA         ; mapped                 ; 03C9          # 3.1  MATHEMATICAL ITALIC CAPITAL OMEGA
-1D6FB         ; mapped                 ; 2207          # 3.1  MATHEMATICAL ITALIC NABLA
-1D6FC         ; mapped                 ; 03B1          # 3.1  MATHEMATICAL ITALIC SMALL ALPHA
-1D6FD         ; mapped                 ; 03B2          # 3.1  MATHEMATICAL ITALIC SMALL BETA
-1D6FE         ; mapped                 ; 03B3          # 3.1  MATHEMATICAL ITALIC SMALL GAMMA
-1D6FF         ; mapped                 ; 03B4          # 3.1  MATHEMATICAL ITALIC SMALL DELTA
-1D700         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL ITALIC SMALL EPSILON
-1D701         ; mapped                 ; 03B6          # 3.1  MATHEMATICAL ITALIC SMALL ZETA
-1D702         ; mapped                 ; 03B7          # 3.1  MATHEMATICAL ITALIC SMALL ETA
-1D703         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL ITALIC SMALL THETA
-1D704         ; mapped                 ; 03B9          # 3.1  MATHEMATICAL ITALIC SMALL IOTA
-1D705         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL ITALIC SMALL KAPPA
-1D706         ; mapped                 ; 03BB          # 3.1  MATHEMATICAL ITALIC SMALL LAMDA
-1D707         ; mapped                 ; 03BC          # 3.1  MATHEMATICAL ITALIC SMALL MU
-1D708         ; mapped                 ; 03BD          # 3.1  MATHEMATICAL ITALIC SMALL NU
-1D709         ; mapped                 ; 03BE          # 3.1  MATHEMATICAL ITALIC SMALL XI
-1D70A         ; mapped                 ; 03BF          # 3.1  MATHEMATICAL ITALIC SMALL OMICRON
-1D70B         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL ITALIC SMALL PI
-1D70C         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL ITALIC SMALL RHO
-1D70D..1D70E  ; mapped                 ; 03C3          # 3.1  MATHEMATICAL ITALIC SMALL FINAL SIGMA..MATHEMATICAL ITALIC SMALL SIGMA
-1D70F         ; mapped                 ; 03C4          # 3.1  MATHEMATICAL ITALIC SMALL TAU
-1D710         ; mapped                 ; 03C5          # 3.1  MATHEMATICAL ITALIC SMALL UPSILON
-1D711         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL ITALIC SMALL PHI
-1D712         ; mapped                 ; 03C7          # 3.1  MATHEMATICAL ITALIC SMALL CHI
-1D713         ; mapped                 ; 03C8          # 3.1  MATHEMATICAL ITALIC SMALL PSI
-1D714         ; mapped                 ; 03C9          # 3.1  MATHEMATICAL ITALIC SMALL OMEGA
-1D715         ; mapped                 ; 2202          # 3.1  MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
-1D716         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL ITALIC EPSILON SYMBOL
-1D717         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL ITALIC THETA SYMBOL
-1D718         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL ITALIC KAPPA SYMBOL
-1D719         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL ITALIC PHI SYMBOL
-1D71A         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL ITALIC RHO SYMBOL
-1D71B         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL ITALIC PI SYMBOL
-1D71C         ; mapped                 ; 03B1          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
-1D71D         ; mapped                 ; 03B2          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL BETA
-1D71E         ; mapped                 ; 03B3          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
-1D71F         ; mapped                 ; 03B4          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL DELTA
-1D720         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
-1D721         ; mapped                 ; 03B6          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL ZETA
-1D722         ; mapped                 ; 03B7          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL ETA
-1D723         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL THETA
-1D724         ; mapped                 ; 03B9          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL IOTA
-1D725         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
-1D726         ; mapped                 ; 03BB          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
-1D727         ; mapped                 ; 03BC          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL MU
-1D728         ; mapped                 ; 03BD          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL NU
-1D729         ; mapped                 ; 03BE          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL XI
-1D72A         ; mapped                 ; 03BF          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
-1D72B         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL PI
-1D72C         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL RHO
-1D72D         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
-1D72E         ; mapped                 ; 03C3          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
-1D72F         ; mapped                 ; 03C4          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL TAU
-1D730         ; mapped                 ; 03C5          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
-1D731         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL PHI
-1D732         ; mapped                 ; 03C7          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL CHI
-1D733         ; mapped                 ; 03C8          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL PSI
-1D734         ; mapped                 ; 03C9          # 3.1  MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
-1D735         ; mapped                 ; 2207          # 3.1  MATHEMATICAL BOLD ITALIC NABLA
-1D736         ; mapped                 ; 03B1          # 3.1  MATHEMATICAL BOLD ITALIC SMALL ALPHA
-1D737         ; mapped                 ; 03B2          # 3.1  MATHEMATICAL BOLD ITALIC SMALL BETA
-1D738         ; mapped                 ; 03B3          # 3.1  MATHEMATICAL BOLD ITALIC SMALL GAMMA
-1D739         ; mapped                 ; 03B4          # 3.1  MATHEMATICAL BOLD ITALIC SMALL DELTA
-1D73A         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL BOLD ITALIC SMALL EPSILON
-1D73B         ; mapped                 ; 03B6          # 3.1  MATHEMATICAL BOLD ITALIC SMALL ZETA
-1D73C         ; mapped                 ; 03B7          # 3.1  MATHEMATICAL BOLD ITALIC SMALL ETA
-1D73D         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL BOLD ITALIC SMALL THETA
-1D73E         ; mapped                 ; 03B9          # 3.1  MATHEMATICAL BOLD ITALIC SMALL IOTA
-1D73F         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL BOLD ITALIC SMALL KAPPA
-1D740         ; mapped                 ; 03BB          # 3.1  MATHEMATICAL BOLD ITALIC SMALL LAMDA
-1D741         ; mapped                 ; 03BC          # 3.1  MATHEMATICAL BOLD ITALIC SMALL MU
-1D742         ; mapped                 ; 03BD          # 3.1  MATHEMATICAL BOLD ITALIC SMALL NU
-1D743         ; mapped                 ; 03BE          # 3.1  MATHEMATICAL BOLD ITALIC SMALL XI
-1D744         ; mapped                 ; 03BF          # 3.1  MATHEMATICAL BOLD ITALIC SMALL OMICRON
-1D745         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL BOLD ITALIC SMALL PI
-1D746         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL BOLD ITALIC SMALL RHO
-1D747..1D748  ; mapped                 ; 03C3          # 3.1  MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA..MATHEMATICAL BOLD ITALIC SMALL SIGMA
-1D749         ; mapped                 ; 03C4          # 3.1  MATHEMATICAL BOLD ITALIC SMALL TAU
-1D74A         ; mapped                 ; 03C5          # 3.1  MATHEMATICAL BOLD ITALIC SMALL UPSILON
-1D74B         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL BOLD ITALIC SMALL PHI
-1D74C         ; mapped                 ; 03C7          # 3.1  MATHEMATICAL BOLD ITALIC SMALL CHI
-1D74D         ; mapped                 ; 03C8          # 3.1  MATHEMATICAL BOLD ITALIC SMALL PSI
-1D74E         ; mapped                 ; 03C9          # 3.1  MATHEMATICAL BOLD ITALIC SMALL OMEGA
-1D74F         ; mapped                 ; 2202          # 3.1  MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
-1D750         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
-1D751         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL BOLD ITALIC THETA SYMBOL
-1D752         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
-1D753         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL BOLD ITALIC PHI SYMBOL
-1D754         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL BOLD ITALIC RHO SYMBOL
-1D755         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL BOLD ITALIC PI SYMBOL
-1D756         ; mapped                 ; 03B1          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
-1D757         ; mapped                 ; 03B2          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
-1D758         ; mapped                 ; 03B3          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
-1D759         ; mapped                 ; 03B4          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
-1D75A         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
-1D75B         ; mapped                 ; 03B6          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
-1D75C         ; mapped                 ; 03B7          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
-1D75D         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
-1D75E         ; mapped                 ; 03B9          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
-1D75F         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
-1D760         ; mapped                 ; 03BB          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
-1D761         ; mapped                 ; 03BC          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
-1D762         ; mapped                 ; 03BD          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
-1D763         ; mapped                 ; 03BE          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
-1D764         ; mapped                 ; 03BF          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
-1D765         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
-1D766         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
-1D767         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
-1D768         ; mapped                 ; 03C3          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
-1D769         ; mapped                 ; 03C4          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
-1D76A         ; mapped                 ; 03C5          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
-1D76B         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
-1D76C         ; mapped                 ; 03C7          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
-1D76D         ; mapped                 ; 03C8          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
-1D76E         ; mapped                 ; 03C9          # 3.1  MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
-1D76F         ; mapped                 ; 2207          # 3.1  MATHEMATICAL SANS-SERIF BOLD NABLA
-1D770         ; mapped                 ; 03B1          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
-1D771         ; mapped                 ; 03B2          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL BETA
-1D772         ; mapped                 ; 03B3          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
-1D773         ; mapped                 ; 03B4          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
-1D774         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
-1D775         ; mapped                 ; 03B6          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
-1D776         ; mapped                 ; 03B7          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL ETA
-1D777         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL THETA
-1D778         ; mapped                 ; 03B9          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
-1D779         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
-1D77A         ; mapped                 ; 03BB          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
-1D77B         ; mapped                 ; 03BC          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL MU
-1D77C         ; mapped                 ; 03BD          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL NU
-1D77D         ; mapped                 ; 03BE          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL XI
-1D77E         ; mapped                 ; 03BF          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
-1D77F         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL PI
-1D780         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL RHO
-1D781..1D782  ; mapped                 ; 03C3          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA..MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
-1D783         ; mapped                 ; 03C4          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL TAU
-1D784         ; mapped                 ; 03C5          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
-1D785         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL PHI
-1D786         ; mapped                 ; 03C7          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL CHI
-1D787         ; mapped                 ; 03C8          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL PSI
-1D788         ; mapped                 ; 03C9          # 3.1  MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
-1D789         ; mapped                 ; 2202          # 3.1  MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
-1D78A         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
-1D78B         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
-1D78C         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
-1D78D         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
-1D78E         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
-1D78F         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
-1D790         ; mapped                 ; 03B1          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
-1D791         ; mapped                 ; 03B2          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
-1D792         ; mapped                 ; 03B3          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
-1D793         ; mapped                 ; 03B4          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
-1D794         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
-1D795         ; mapped                 ; 03B6          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
-1D796         ; mapped                 ; 03B7          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
-1D797         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
-1D798         ; mapped                 ; 03B9          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
-1D799         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
-1D79A         ; mapped                 ; 03BB          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
-1D79B         ; mapped                 ; 03BC          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
-1D79C         ; mapped                 ; 03BD          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
-1D79D         ; mapped                 ; 03BE          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
-1D79E         ; mapped                 ; 03BF          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
-1D79F         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
-1D7A0         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
-1D7A1         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
-1D7A2         ; mapped                 ; 03C3          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
-1D7A3         ; mapped                 ; 03C4          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
-1D7A4         ; mapped                 ; 03C5          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
-1D7A5         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
-1D7A6         ; mapped                 ; 03C7          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
-1D7A7         ; mapped                 ; 03C8          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
-1D7A8         ; mapped                 ; 03C9          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
-1D7A9         ; mapped                 ; 2207          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
-1D7AA         ; mapped                 ; 03B1          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
-1D7AB         ; mapped                 ; 03B2          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
-1D7AC         ; mapped                 ; 03B3          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
-1D7AD         ; mapped                 ; 03B4          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
-1D7AE         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
-1D7AF         ; mapped                 ; 03B6          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
-1D7B0         ; mapped                 ; 03B7          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
-1D7B1         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
-1D7B2         ; mapped                 ; 03B9          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
-1D7B3         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
-1D7B4         ; mapped                 ; 03BB          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
-1D7B5         ; mapped                 ; 03BC          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
-1D7B6         ; mapped                 ; 03BD          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
-1D7B7         ; mapped                 ; 03BE          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
-1D7B8         ; mapped                 ; 03BF          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
-1D7B9         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
-1D7BA         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
-1D7BB..1D7BC  ; mapped                 ; 03C3          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
-1D7BD         ; mapped                 ; 03C4          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
-1D7BE         ; mapped                 ; 03C5          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
-1D7BF         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
-1D7C0         ; mapped                 ; 03C7          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
-1D7C1         ; mapped                 ; 03C8          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
-1D7C2         ; mapped                 ; 03C9          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
-1D7C3         ; mapped                 ; 2202          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
-1D7C4         ; mapped                 ; 03B5          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
-1D7C5         ; mapped                 ; 03B8          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
-1D7C6         ; mapped                 ; 03BA          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
-1D7C7         ; mapped                 ; 03C6          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
-1D7C8         ; mapped                 ; 03C1          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
-1D7C9         ; mapped                 ; 03C0          # 3.1  MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
-1D7CA..1D7CB  ; mapped                 ; 03DD          # 5.0  MATHEMATICAL BOLD CAPITAL DIGAMMA..MATHEMATICAL BOLD SMALL DIGAMMA
-1D7CC..1D7CD  ; disallowed                             # NA   <reserved-1D7CC>..<reserved-1D7CD>
-1D7CE         ; mapped                 ; 0030          # 3.1  MATHEMATICAL BOLD DIGIT ZERO
-1D7CF         ; mapped                 ; 0031          # 3.1  MATHEMATICAL BOLD DIGIT ONE
-1D7D0         ; mapped                 ; 0032          # 3.1  MATHEMATICAL BOLD DIGIT TWO
-1D7D1         ; mapped                 ; 0033          # 3.1  MATHEMATICAL BOLD DIGIT THREE
-1D7D2         ; mapped                 ; 0034          # 3.1  MATHEMATICAL BOLD DIGIT FOUR
-1D7D3         ; mapped                 ; 0035          # 3.1  MATHEMATICAL BOLD DIGIT FIVE
-1D7D4         ; mapped                 ; 0036          # 3.1  MATHEMATICAL BOLD DIGIT SIX
-1D7D5         ; mapped                 ; 0037          # 3.1  MATHEMATICAL BOLD DIGIT SEVEN
-1D7D6         ; mapped                 ; 0038          # 3.1  MATHEMATICAL BOLD DIGIT EIGHT
-1D7D7         ; mapped                 ; 0039          # 3.1  MATHEMATICAL BOLD DIGIT NINE
-1D7D8         ; mapped                 ; 0030          # 3.1  MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
-1D7D9         ; mapped                 ; 0031          # 3.1  MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
-1D7DA         ; mapped                 ; 0032          # 3.1  MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
-1D7DB         ; mapped                 ; 0033          # 3.1  MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
-1D7DC         ; mapped                 ; 0034          # 3.1  MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
-1D7DD         ; mapped                 ; 0035          # 3.1  MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
-1D7DE         ; mapped                 ; 0036          # 3.1  MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
-1D7DF         ; mapped                 ; 0037          # 3.1  MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
-1D7E0         ; mapped                 ; 0038          # 3.1  MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
-1D7E1         ; mapped                 ; 0039          # 3.1  MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
-1D7E2         ; mapped                 ; 0030          # 3.1  MATHEMATICAL SANS-SERIF DIGIT ZERO
-1D7E3         ; mapped                 ; 0031          # 3.1  MATHEMATICAL SANS-SERIF DIGIT ONE
-1D7E4         ; mapped                 ; 0032          # 3.1  MATHEMATICAL SANS-SERIF DIGIT TWO
-1D7E5         ; mapped                 ; 0033          # 3.1  MATHEMATICAL SANS-SERIF DIGIT THREE
-1D7E6         ; mapped                 ; 0034          # 3.1  MATHEMATICAL SANS-SERIF DIGIT FOUR
-1D7E7         ; mapped                 ; 0035          # 3.1  MATHEMATICAL SANS-SERIF DIGIT FIVE
-1D7E8         ; mapped                 ; 0036          # 3.1  MATHEMATICAL SANS-SERIF DIGIT SIX
-1D7E9         ; mapped                 ; 0037          # 3.1  MATHEMATICAL SANS-SERIF DIGIT SEVEN
-1D7EA         ; mapped                 ; 0038          # 3.1  MATHEMATICAL SANS-SERIF DIGIT EIGHT
-1D7EB         ; mapped                 ; 0039          # 3.1  MATHEMATICAL SANS-SERIF DIGIT NINE
-1D7EC         ; mapped                 ; 0030          # 3.1  MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
-1D7ED         ; mapped                 ; 0031          # 3.1  MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
-1D7EE         ; mapped                 ; 0032          # 3.1  MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
-1D7EF         ; mapped                 ; 0033          # 3.1  MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
-1D7F0         ; mapped                 ; 0034          # 3.1  MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
-1D7F1         ; mapped                 ; 0035          # 3.1  MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
-1D7F2         ; mapped                 ; 0036          # 3.1  MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
-1D7F3         ; mapped                 ; 0037          # 3.1  MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
-1D7F4         ; mapped                 ; 0038          # 3.1  MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
-1D7F5         ; mapped                 ; 0039          # 3.1  MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
-1D7F6         ; mapped                 ; 0030          # 3.1  MATHEMATICAL MONOSPACE DIGIT ZERO
-1D7F7         ; mapped                 ; 0031          # 3.1  MATHEMATICAL MONOSPACE DIGIT ONE
-1D7F8         ; mapped                 ; 0032          # 3.1  MATHEMATICAL MONOSPACE DIGIT TWO
-1D7F9         ; mapped                 ; 0033          # 3.1  MATHEMATICAL MONOSPACE DIGIT THREE
-1D7FA         ; mapped                 ; 0034          # 3.1  MATHEMATICAL MONOSPACE DIGIT FOUR
-1D7FB         ; mapped                 ; 0035          # 3.1  MATHEMATICAL MONOSPACE DIGIT FIVE
-1D7FC         ; mapped                 ; 0036          # 3.1  MATHEMATICAL MONOSPACE DIGIT SIX
-1D7FD         ; mapped                 ; 0037          # 3.1  MATHEMATICAL MONOSPACE DIGIT SEVEN
-1D7FE         ; mapped                 ; 0038          # 3.1  MATHEMATICAL MONOSPACE DIGIT EIGHT
-1D7FF         ; mapped                 ; 0039          # 3.1  MATHEMATICAL MONOSPACE DIGIT NINE
-1D800..1D9FF  ; valid                  ;      ; NV8    # 8.0  SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD
-1DA00..1DA36  ; valid                                  # 8.0  SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
-1DA37..1DA3A  ; valid                  ;      ; NV8    # 8.0  SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE
-1DA3B..1DA6C  ; valid                                  # 8.0  SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
-1DA6D..1DA74  ; valid                  ;      ; NV8    # 8.0  SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING
-1DA75         ; valid                                  # 8.0  SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
-1DA76..1DA83  ; valid                  ;      ; NV8    # 8.0  SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH
-1DA84         ; valid                                  # 8.0  SIGNWRITING LOCATION HEAD NECK
-1DA85..1DA8B  ; valid                  ;      ; NV8    # 8.0  SIGNWRITING LOCATION TORSO..SIGNWRITING PARENTHESIS
-1DA8C..1DA9A  ; disallowed                             # NA   <reserved-1DA8C>..<reserved-1DA9A>
-1DA9B..1DA9F  ; valid                                  # 8.0  SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
-1DAA0         ; disallowed                             # NA   <reserved-1DAA0>
-1DAA1..1DAAF  ; valid                                  # 8.0  SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
-1DAB0..1DFFF  ; disallowed                             # NA   <reserved-1DAB0>..<reserved-1DFFF>
-1E000..1E006  ; valid                                  # 9.0  COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
-1E007         ; disallowed                             # NA   <reserved-1E007>
-1E008..1E018  ; valid                                  # 9.0  COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
-1E019..1E01A  ; disallowed                             # NA   <reserved-1E019>..<reserved-1E01A>
-1E01B..1E021  ; valid                                  # 9.0  COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
-1E022         ; disallowed                             # NA   <reserved-1E022>
-1E023..1E024  ; valid                                  # 9.0  COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
-1E025         ; disallowed                             # NA   <reserved-1E025>
-1E026..1E02A  ; valid                                  # 9.0  COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
-1E02B..1E0FF  ; disallowed                             # NA   <reserved-1E02B>..<reserved-1E0FF>
-1E100..1E12C  ; valid                                  # 12.0 NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
-1E12D..1E12F  ; disallowed                             # NA   <reserved-1E12D>..<reserved-1E12F>
-1E130..1E13D  ; valid                                  # 12.0 NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
-1E13E..1E13F  ; disallowed                             # NA   <reserved-1E13E>..<reserved-1E13F>
-1E140..1E149  ; valid                                  # 12.0 NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
-1E14A..1E14D  ; disallowed                             # NA   <reserved-1E14A>..<reserved-1E14D>
-1E14E         ; valid                                  # 12.0 NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
-1E14F         ; valid                  ;      ; NV8    # 12.0 NYIAKENG PUACHUE HMONG CIRCLED CA
-1E150..1E2BF  ; disallowed                             # NA   <reserved-1E150>..<reserved-1E2BF>
-1E2C0..1E2F9  ; valid                                  # 12.0 WANCHO LETTER AA..WANCHO DIGIT NINE
-1E2FA..1E2FE  ; disallowed                             # NA   <reserved-1E2FA>..<reserved-1E2FE>
-1E2FF         ; valid                  ;      ; NV8    # 12.0 WANCHO NGUN SIGN
-1E300..1E7FF  ; disallowed                             # NA   <reserved-1E300>..<reserved-1E7FF>
-1E800..1E8C4  ; valid                                  # 7.0  MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
-1E8C5..1E8C6  ; disallowed                             # NA   <reserved-1E8C5>..<reserved-1E8C6>
-1E8C7..1E8CF  ; valid                  ;      ; NV8    # 7.0  MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
-1E8D0..1E8D6  ; valid                                  # 7.0  MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
-1E8D7..1E8FF  ; disallowed                             # NA   <reserved-1E8D7>..<reserved-1E8FF>
-1E900         ; mapped                 ; 1E922         # 9.0  ADLAM CAPITAL LETTER ALIF
-1E901         ; mapped                 ; 1E923         # 9.0  ADLAM CAPITAL LETTER DAALI
-1E902         ; mapped                 ; 1E924         # 9.0  ADLAM CAPITAL LETTER LAAM
-1E903         ; mapped                 ; 1E925         # 9.0  ADLAM CAPITAL LETTER MIIM
-1E904         ; mapped                 ; 1E926         # 9.0  ADLAM CAPITAL LETTER BA
-1E905         ; mapped                 ; 1E927         # 9.0  ADLAM CAPITAL LETTER SINNYIIYHE
-1E906         ; mapped                 ; 1E928         # 9.0  ADLAM CAPITAL LETTER PE
-1E907         ; mapped                 ; 1E929         # 9.0  ADLAM CAPITAL LETTER BHE
-1E908         ; mapped                 ; 1E92A         # 9.0  ADLAM CAPITAL LETTER RA
-1E909         ; mapped                 ; 1E92B         # 9.0  ADLAM CAPITAL LETTER E
-1E90A         ; mapped                 ; 1E92C         # 9.0  ADLAM CAPITAL LETTER FA
-1E90B         ; mapped                 ; 1E92D         # 9.0  ADLAM CAPITAL LETTER I
-1E90C         ; mapped                 ; 1E92E         # 9.0  ADLAM CAPITAL LETTER O
-1E90D         ; mapped                 ; 1E92F         # 9.0  ADLAM CAPITAL LETTER DHA
-1E90E         ; mapped                 ; 1E930         # 9.0  ADLAM CAPITAL LETTER YHE
-1E90F         ; mapped                 ; 1E931         # 9.0  ADLAM CAPITAL LETTER WAW
-1E910         ; mapped                 ; 1E932         # 9.0  ADLAM CAPITAL LETTER NUN
-1E911         ; mapped                 ; 1E933         # 9.0  ADLAM CAPITAL LETTER KAF
-1E912         ; mapped                 ; 1E934         # 9.0  ADLAM CAPITAL LETTER YA
-1E913         ; mapped                 ; 1E935         # 9.0  ADLAM CAPITAL LETTER U
-1E914         ; mapped                 ; 1E936         # 9.0  ADLAM CAPITAL LETTER JIIM
-1E915         ; mapped                 ; 1E937         # 9.0  ADLAM CAPITAL LETTER CHI
-1E916         ; mapped                 ; 1E938         # 9.0  ADLAM CAPITAL LETTER HA
-1E917         ; mapped                 ; 1E939         # 9.0  ADLAM CAPITAL LETTER QAAF
-1E918         ; mapped                 ; 1E93A         # 9.0  ADLAM CAPITAL LETTER GA
-1E919         ; mapped                 ; 1E93B         # 9.0  ADLAM CAPITAL LETTER NYA
-1E91A         ; mapped                 ; 1E93C         # 9.0  ADLAM CAPITAL LETTER TU
-1E91B         ; mapped                 ; 1E93D         # 9.0  ADLAM CAPITAL LETTER NHA
-1E91C         ; mapped                 ; 1E93E         # 9.0  ADLAM CAPITAL LETTER VA
-1E91D         ; mapped                 ; 1E93F         # 9.0  ADLAM CAPITAL LETTER KHA
-1E91E         ; mapped                 ; 1E940         # 9.0  ADLAM CAPITAL LETTER GBE
-1E91F         ; mapped                 ; 1E941         # 9.0  ADLAM CAPITAL LETTER ZAL
-1E920         ; mapped                 ; 1E942         # 9.0  ADLAM CAPITAL LETTER KPO
-1E921         ; mapped                 ; 1E943         # 9.0  ADLAM CAPITAL LETTER SHA
-1E922..1E94A  ; valid                                  # 9.0  ADLAM SMALL LETTER ALIF..ADLAM NUKTA
-1E94B         ; valid                                  # 12.0 ADLAM NASALIZATION MARK
-1E94C..1E94F  ; disallowed                             # NA   <reserved-1E94C>..<reserved-1E94F>
-1E950..1E959  ; valid                                  # 9.0  ADLAM DIGIT ZERO..ADLAM DIGIT NINE
-1E95A..1E95D  ; disallowed                             # NA   <reserved-1E95A>..<reserved-1E95D>
-1E95E..1E95F  ; valid                  ;      ; NV8    # 9.0  ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
-1E960..1EC70  ; disallowed                             # NA   <reserved-1E960>..<reserved-1EC70>
-1EC71..1ECB4  ; valid                  ;      ; NV8    # 11.0 INDIC SIYAQ NUMBER ONE..INDIC SIYAQ ALTERNATE LAKH MARK
-1ECB5..1ED00  ; disallowed                             # NA   <reserved-1ECB5>..<reserved-1ED00>
-1ED01..1ED3D  ; valid                  ;      ; NV8    # 12.0 OTTOMAN SIYAQ NUMBER ONE..OTTOMAN SIYAQ FRACTION ONE SIXTH
-1ED3E..1EDFF  ; disallowed                             # NA   <reserved-1ED3E>..<reserved-1EDFF>
-1EE00         ; mapped                 ; 0627          # 6.1  ARABIC MATHEMATICAL ALEF
-1EE01         ; mapped                 ; 0628          # 6.1  ARABIC MATHEMATICAL BEH
-1EE02         ; mapped                 ; 062C          # 6.1  ARABIC MATHEMATICAL JEEM
-1EE03         ; mapped                 ; 062F          # 6.1  ARABIC MATHEMATICAL DAL
-1EE04         ; disallowed                             # NA   <reserved-1EE04>
-1EE05         ; mapped                 ; 0648          # 6.1  ARABIC MATHEMATICAL WAW
-1EE06         ; mapped                 ; 0632          # 6.1  ARABIC MATHEMATICAL ZAIN
-1EE07         ; mapped                 ; 062D          # 6.1  ARABIC MATHEMATICAL HAH
-1EE08         ; mapped                 ; 0637          # 6.1  ARABIC MATHEMATICAL TAH
-1EE09         ; mapped                 ; 064A          # 6.1  ARABIC MATHEMATICAL YEH
-1EE0A         ; mapped                 ; 0643          # 6.1  ARABIC MATHEMATICAL KAF
-1EE0B         ; mapped                 ; 0644          # 6.1  ARABIC MATHEMATICAL LAM
-1EE0C         ; mapped                 ; 0645          # 6.1  ARABIC MATHEMATICAL MEEM
-1EE0D         ; mapped                 ; 0646          # 6.1  ARABIC MATHEMATICAL NOON
-1EE0E         ; mapped                 ; 0633          # 6.1  ARABIC MATHEMATICAL SEEN
-1EE0F         ; mapped                 ; 0639          # 6.1  ARABIC MATHEMATICAL AIN
-1EE10         ; mapped                 ; 0641          # 6.1  ARABIC MATHEMATICAL FEH
-1EE11         ; mapped                 ; 0635          # 6.1  ARABIC MATHEMATICAL SAD
-1EE12         ; mapped                 ; 0642          # 6.1  ARABIC MATHEMATICAL QAF
-1EE13         ; mapped                 ; 0631          # 6.1  ARABIC MATHEMATICAL REH
-1EE14         ; mapped                 ; 0634          # 6.1  ARABIC MATHEMATICAL SHEEN
-1EE15         ; mapped                 ; 062A          # 6.1  ARABIC MATHEMATICAL TEH
-1EE16         ; mapped                 ; 062B          # 6.1  ARABIC MATHEMATICAL THEH
-1EE17         ; mapped                 ; 062E          # 6.1  ARABIC MATHEMATICAL KHAH
-1EE18         ; mapped                 ; 0630          # 6.1  ARABIC MATHEMATICAL THAL
-1EE19         ; mapped                 ; 0636          # 6.1  ARABIC MATHEMATICAL DAD
-1EE1A         ; mapped                 ; 0638          # 6.1  ARABIC MATHEMATICAL ZAH
-1EE1B         ; mapped                 ; 063A          # 6.1  ARABIC MATHEMATICAL GHAIN
-1EE1C         ; mapped                 ; 066E          # 6.1  ARABIC MATHEMATICAL DOTLESS BEH
-1EE1D         ; mapped                 ; 06BA          # 6.1  ARABIC MATHEMATICAL DOTLESS NOON
-1EE1E         ; mapped                 ; 06A1          # 6.1  ARABIC MATHEMATICAL DOTLESS FEH
-1EE1F         ; mapped                 ; 066F          # 6.1  ARABIC MATHEMATICAL DOTLESS QAF
-1EE20         ; disallowed                             # NA   <reserved-1EE20>
-1EE21         ; mapped                 ; 0628          # 6.1  ARABIC MATHEMATICAL INITIAL BEH
-1EE22         ; mapped                 ; 062C          # 6.1  ARABIC MATHEMATICAL INITIAL JEEM
-1EE23         ; disallowed                             # NA   <reserved-1EE23>
-1EE24         ; mapped                 ; 0647          # 6.1  ARABIC MATHEMATICAL INITIAL HEH
-1EE25..1EE26  ; disallowed                             # NA   <reserved-1EE25>..<reserved-1EE26>
-1EE27         ; mapped                 ; 062D          # 6.1  ARABIC MATHEMATICAL INITIAL HAH
-1EE28         ; disallowed                             # NA   <reserved-1EE28>
-1EE29         ; mapped                 ; 064A          # 6.1  ARABIC MATHEMATICAL INITIAL YEH
-1EE2A         ; mapped                 ; 0643          # 6.1  ARABIC MATHEMATICAL INITIAL KAF
-1EE2B         ; mapped                 ; 0644          # 6.1  ARABIC MATHEMATICAL INITIAL LAM
-1EE2C         ; mapped                 ; 0645          # 6.1  ARABIC MATHEMATICAL INITIAL MEEM
-1EE2D         ; mapped                 ; 0646          # 6.1  ARABIC MATHEMATICAL INITIAL NOON
-1EE2E         ; mapped                 ; 0633          # 6.1  ARABIC MATHEMATICAL INITIAL SEEN
-1EE2F         ; mapped                 ; 0639          # 6.1  ARABIC MATHEMATICAL INITIAL AIN
-1EE30         ; mapped                 ; 0641          # 6.1  ARABIC MATHEMATICAL INITIAL FEH
-1EE31         ; mapped                 ; 0635          # 6.1  ARABIC MATHEMATICAL INITIAL SAD
-1EE32         ; mapped                 ; 0642          # 6.1  ARABIC MATHEMATICAL INITIAL QAF
-1EE33         ; disallowed                             # NA   <reserved-1EE33>
-1EE34         ; mapped                 ; 0634          # 6.1  ARABIC MATHEMATICAL INITIAL SHEEN
-1EE35         ; mapped                 ; 062A          # 6.1  ARABIC MATHEMATICAL INITIAL TEH
-1EE36         ; mapped                 ; 062B          # 6.1  ARABIC MATHEMATICAL INITIAL THEH
-1EE37         ; mapped                 ; 062E          # 6.1  ARABIC MATHEMATICAL INITIAL KHAH
-1EE38         ; disallowed                             # NA   <reserved-1EE38>
-1EE39         ; mapped                 ; 0636          # 6.1  ARABIC MATHEMATICAL INITIAL DAD
-1EE3A         ; disallowed                             # NA   <reserved-1EE3A>
-1EE3B         ; mapped                 ; 063A          # 6.1  ARABIC MATHEMATICAL INITIAL GHAIN
-1EE3C..1EE41  ; disallowed                             # NA   <reserved-1EE3C>..<reserved-1EE41>
-1EE42         ; mapped                 ; 062C          # 6.1  ARABIC MATHEMATICAL TAILED JEEM
-1EE43..1EE46  ; disallowed                             # NA   <reserved-1EE43>..<reserved-1EE46>
-1EE47         ; mapped                 ; 062D          # 6.1  ARABIC MATHEMATICAL TAILED HAH
-1EE48         ; disallowed                             # NA   <reserved-1EE48>
-1EE49         ; mapped                 ; 064A          # 6.1  ARABIC MATHEMATICAL TAILED YEH
-1EE4A         ; disallowed                             # NA   <reserved-1EE4A>
-1EE4B         ; mapped                 ; 0644          # 6.1  ARABIC MATHEMATICAL TAILED LAM
-1EE4C         ; disallowed                             # NA   <reserved-1EE4C>
-1EE4D         ; mapped                 ; 0646          # 6.1  ARABIC MATHEMATICAL TAILED NOON
-1EE4E         ; mapped                 ; 0633          # 6.1  ARABIC MATHEMATICAL TAILED SEEN
-1EE4F         ; mapped                 ; 0639          # 6.1  ARABIC MATHEMATICAL TAILED AIN
-1EE50         ; disallowed                             # NA   <reserved-1EE50>
-1EE51         ; mapped                 ; 0635          # 6.1  ARABIC MATHEMATICAL TAILED SAD
-1EE52         ; mapped                 ; 0642          # 6.1  ARABIC MATHEMATICAL TAILED QAF
-1EE53         ; disallowed                             # NA   <reserved-1EE53>
-1EE54         ; mapped                 ; 0634          # 6.1  ARABIC MATHEMATICAL TAILED SHEEN
-1EE55..1EE56  ; disallowed                             # NA   <reserved-1EE55>..<reserved-1EE56>
-1EE57         ; mapped                 ; 062E          # 6.1  ARABIC MATHEMATICAL TAILED KHAH
-1EE58         ; disallowed                             # NA   <reserved-1EE58>
-1EE59         ; mapped                 ; 0636          # 6.1  ARABIC MATHEMATICAL TAILED DAD
-1EE5A         ; disallowed                             # NA   <reserved-1EE5A>
-1EE5B         ; mapped                 ; 063A          # 6.1  ARABIC MATHEMATICAL TAILED GHAIN
-1EE5C         ; disallowed                             # NA   <reserved-1EE5C>
-1EE5D         ; mapped                 ; 06BA          # 6.1  ARABIC MATHEMATICAL TAILED DOTLESS NOON
-1EE5E         ; disallowed                             # NA   <reserved-1EE5E>
-1EE5F         ; mapped                 ; 066F          # 6.1  ARABIC MATHEMATICAL TAILED DOTLESS QAF
-1EE60         ; disallowed                             # NA   <reserved-1EE60>
-1EE61         ; mapped                 ; 0628          # 6.1  ARABIC MATHEMATICAL STRETCHED BEH
-1EE62         ; mapped                 ; 062C          # 6.1  ARABIC MATHEMATICAL STRETCHED JEEM
-1EE63         ; disallowed                             # NA   <reserved-1EE63>
-1EE64         ; mapped                 ; 0647          # 6.1  ARABIC MATHEMATICAL STRETCHED HEH
-1EE65..1EE66  ; disallowed                             # NA   <reserved-1EE65>..<reserved-1EE66>
-1EE67         ; mapped                 ; 062D          # 6.1  ARABIC MATHEMATICAL STRETCHED HAH
-1EE68         ; mapped                 ; 0637          # 6.1  ARABIC MATHEMATICAL STRETCHED TAH
-1EE69         ; mapped                 ; 064A          # 6.1  ARABIC MATHEMATICAL STRETCHED YEH
-1EE6A         ; mapped                 ; 0643          # 6.1  ARABIC MATHEMATICAL STRETCHED KAF
-1EE6B         ; disallowed                             # NA   <reserved-1EE6B>
-1EE6C         ; mapped                 ; 0645          # 6.1  ARABIC MATHEMATICAL STRETCHED MEEM
-1EE6D         ; mapped                 ; 0646          # 6.1  ARABIC MATHEMATICAL STRETCHED NOON
-1EE6E         ; mapped                 ; 0633          # 6.1  ARABIC MATHEMATICAL STRETCHED SEEN
-1EE6F         ; mapped                 ; 0639          # 6.1  ARABIC MATHEMATICAL STRETCHED AIN
-1EE70         ; mapped                 ; 0641          # 6.1  ARABIC MATHEMATICAL STRETCHED FEH
-1EE71         ; mapped                 ; 0635          # 6.1  ARABIC MATHEMATICAL STRETCHED SAD
-1EE72         ; mapped                 ; 0642          # 6.1  ARABIC MATHEMATICAL STRETCHED QAF
-1EE73         ; disallowed                             # NA   <reserved-1EE73>
-1EE74         ; mapped                 ; 0634          # 6.1  ARABIC MATHEMATICAL STRETCHED SHEEN
-1EE75         ; mapped                 ; 062A          # 6.1  ARABIC MATHEMATICAL STRETCHED TEH
-1EE76         ; mapped                 ; 062B          # 6.1  ARABIC MATHEMATICAL STRETCHED THEH
-1EE77         ; mapped                 ; 062E          # 6.1  ARABIC MATHEMATICAL STRETCHED KHAH
-1EE78         ; disallowed                             # NA   <reserved-1EE78>
-1EE79         ; mapped                 ; 0636          # 6.1  ARABIC MATHEMATICAL STRETCHED DAD
-1EE7A         ; mapped                 ; 0638          # 6.1  ARABIC MATHEMATICAL STRETCHED ZAH
-1EE7B         ; mapped                 ; 063A          # 6.1  ARABIC MATHEMATICAL STRETCHED GHAIN
-1EE7C         ; mapped                 ; 066E          # 6.1  ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
-1EE7D         ; disallowed                             # NA   <reserved-1EE7D>
-1EE7E         ; mapped                 ; 06A1          # 6.1  ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
-1EE7F         ; disallowed                             # NA   <reserved-1EE7F>
-1EE80         ; mapped                 ; 0627          # 6.1  ARABIC MATHEMATICAL LOOPED ALEF
-1EE81         ; mapped                 ; 0628          # 6.1  ARABIC MATHEMATICAL LOOPED BEH
-1EE82         ; mapped                 ; 062C          # 6.1  ARABIC MATHEMATICAL LOOPED JEEM
-1EE83         ; mapped                 ; 062F          # 6.1  ARABIC MATHEMATICAL LOOPED DAL
-1EE84         ; mapped                 ; 0647          # 6.1  ARABIC MATHEMATICAL LOOPED HEH
-1EE85         ; mapped                 ; 0648          # 6.1  ARABIC MATHEMATICAL LOOPED WAW
-1EE86         ; mapped                 ; 0632          # 6.1  ARABIC MATHEMATICAL LOOPED ZAIN
-1EE87         ; mapped                 ; 062D          # 6.1  ARABIC MATHEMATICAL LOOPED HAH
-1EE88         ; mapped                 ; 0637          # 6.1  ARABIC MATHEMATICAL LOOPED TAH
-1EE89         ; mapped                 ; 064A          # 6.1  ARABIC MATHEMATICAL LOOPED YEH
-1EE8A         ; disallowed                             # NA   <reserved-1EE8A>
-1EE8B         ; mapped                 ; 0644          # 6.1  ARABIC MATHEMATICAL LOOPED LAM
-1EE8C         ; mapped                 ; 0645          # 6.1  ARABIC MATHEMATICAL LOOPED MEEM
-1EE8D         ; mapped                 ; 0646          # 6.1  ARABIC MATHEMATICAL LOOPED NOON
-1EE8E         ; mapped                 ; 0633          # 6.1  ARABIC MATHEMATICAL LOOPED SEEN
-1EE8F         ; mapped                 ; 0639          # 6.1  ARABIC MATHEMATICAL LOOPED AIN
-1EE90         ; mapped                 ; 0641          # 6.1  ARABIC MATHEMATICAL LOOPED FEH
-1EE91         ; mapped                 ; 0635          # 6.1  ARABIC MATHEMATICAL LOOPED SAD
-1EE92         ; mapped                 ; 0642          # 6.1  ARABIC MATHEMATICAL LOOPED QAF
-1EE93         ; mapped                 ; 0631          # 6.1  ARABIC MATHEMATICAL LOOPED REH
-1EE94         ; mapped                 ; 0634          # 6.1  ARABIC MATHEMATICAL LOOPED SHEEN
-1EE95         ; mapped                 ; 062A          # 6.1  ARABIC MATHEMATICAL LOOPED TEH
-1EE96         ; mapped                 ; 062B          # 6.1  ARABIC MATHEMATICAL LOOPED THEH
-1EE97         ; mapped                 ; 062E          # 6.1  ARABIC MATHEMATICAL LOOPED KHAH
-1EE98         ; mapped                 ; 0630          # 6.1  ARABIC MATHEMATICAL LOOPED THAL
-1EE99         ; mapped                 ; 0636          # 6.1  ARABIC MATHEMATICAL LOOPED DAD
-1EE9A         ; mapped                 ; 0638          # 6.1  ARABIC MATHEMATICAL LOOPED ZAH
-1EE9B         ; mapped                 ; 063A          # 6.1  ARABIC MATHEMATICAL LOOPED GHAIN
-1EE9C..1EEA0  ; disallowed                             # NA   <reserved-1EE9C>..<reserved-1EEA0>
-1EEA1         ; mapped                 ; 0628          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK BEH
-1EEA2         ; mapped                 ; 062C          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM
-1EEA3         ; mapped                 ; 062F          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
-1EEA4         ; disallowed                             # NA   <reserved-1EEA4>
-1EEA5         ; mapped                 ; 0648          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK WAW
-1EEA6         ; mapped                 ; 0632          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN
-1EEA7         ; mapped                 ; 062D          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK HAH
-1EEA8         ; mapped                 ; 0637          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK TAH
-1EEA9         ; mapped                 ; 064A          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
-1EEAA         ; disallowed                             # NA   <reserved-1EEAA>
-1EEAB         ; mapped                 ; 0644          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK LAM
-1EEAC         ; mapped                 ; 0645          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM
-1EEAD         ; mapped                 ; 0646          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK NOON
-1EEAE         ; mapped                 ; 0633          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN
-1EEAF         ; mapped                 ; 0639          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK AIN
-1EEB0         ; mapped                 ; 0641          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK FEH
-1EEB1         ; mapped                 ; 0635          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK SAD
-1EEB2         ; mapped                 ; 0642          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK QAF
-1EEB3         ; mapped                 ; 0631          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK REH
-1EEB4         ; mapped                 ; 0634          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN
-1EEB5         ; mapped                 ; 062A          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK TEH
-1EEB6         ; mapped                 ; 062B          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK THEH
-1EEB7         ; mapped                 ; 062E          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH
-1EEB8         ; mapped                 ; 0630          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK THAL
-1EEB9         ; mapped                 ; 0636          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK DAD
-1EEBA         ; mapped                 ; 0638          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH
-1EEBB         ; mapped                 ; 063A          # 6.1  ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
-1EEBC..1EEEF  ; disallowed                             # NA   <reserved-1EEBC>..<reserved-1EEEF>
-1EEF0..1EEF1  ; valid                  ;      ; NV8    # 6.1  ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
-1EEF2..1EFFF  ; disallowed                             # NA   <reserved-1EEF2>..<reserved-1EFFF>
-1F000..1F02B  ; valid                  ;      ; NV8    # 5.1  MAHJONG TILE EAST WIND..MAHJONG TILE BACK
-1F02C..1F02F  ; disallowed                             # NA   <reserved-1F02C>..<reserved-1F02F>
-1F030..1F093  ; valid                  ;      ; NV8    # 5.1  DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
-1F094..1F09F  ; disallowed                             # NA   <reserved-1F094>..<reserved-1F09F>
-1F0A0..1F0AE  ; valid                  ;      ; NV8    # 6.0  PLAYING CARD BACK..PLAYING CARD KING OF SPADES
-1F0AF..1F0B0  ; disallowed                             # NA   <reserved-1F0AF>..<reserved-1F0B0>
-1F0B1..1F0BE  ; valid                  ;      ; NV8    # 6.0  PLAYING CARD ACE OF HEARTS..PLAYING CARD KING OF HEARTS
-1F0BF         ; valid                  ;      ; NV8    # 7.0  PLAYING CARD RED JOKER
-1F0C0         ; disallowed                             # NA   <reserved-1F0C0>
-1F0C1..1F0CF  ; valid                  ;      ; NV8    # 6.0  PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
-1F0D0         ; disallowed                             # NA   <reserved-1F0D0>
-1F0D1..1F0DF  ; valid                  ;      ; NV8    # 6.0  PLAYING CARD ACE OF CLUBS..PLAYING CARD WHITE JOKER
-1F0E0..1F0F5  ; valid                  ;      ; NV8    # 7.0  PLAYING CARD FOOL..PLAYING CARD TRUMP-21
-1F0F6..1F0FF  ; disallowed                             # NA   <reserved-1F0F6>..<reserved-1F0FF>
-1F100         ; disallowed                             # 5.2  DIGIT ZERO FULL STOP
-1F101         ; disallowed_STD3_mapped ; 0030 002C     # 5.2  DIGIT ZERO COMMA
-1F102         ; disallowed_STD3_mapped ; 0031 002C     # 5.2  DIGIT ONE COMMA
-1F103         ; disallowed_STD3_mapped ; 0032 002C     # 5.2  DIGIT TWO COMMA
-1F104         ; disallowed_STD3_mapped ; 0033 002C     # 5.2  DIGIT THREE COMMA
-1F105         ; disallowed_STD3_mapped ; 0034 002C     # 5.2  DIGIT FOUR COMMA
-1F106         ; disallowed_STD3_mapped ; 0035 002C     # 5.2  DIGIT FIVE COMMA
-1F107         ; disallowed_STD3_mapped ; 0036 002C     # 5.2  DIGIT SIX COMMA
-1F108         ; disallowed_STD3_mapped ; 0037 002C     # 5.2  DIGIT SEVEN COMMA
-1F109         ; disallowed_STD3_mapped ; 0038 002C     # 5.2  DIGIT EIGHT COMMA
-1F10A         ; disallowed_STD3_mapped ; 0039 002C     # 5.2  DIGIT NINE COMMA
-1F10B..1F10C  ; valid                  ;      ; NV8    # 7.0  DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
-1F10D..1F10F  ; valid                  ;      ; NV8    # 13.0 CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
-1F110         ; disallowed_STD3_mapped ; 0028 0061 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER A
-1F111         ; disallowed_STD3_mapped ; 0028 0062 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER B
-1F112         ; disallowed_STD3_mapped ; 0028 0063 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER C
-1F113         ; disallowed_STD3_mapped ; 0028 0064 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER D
-1F114         ; disallowed_STD3_mapped ; 0028 0065 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER E
-1F115         ; disallowed_STD3_mapped ; 0028 0066 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER F
-1F116         ; disallowed_STD3_mapped ; 0028 0067 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER G
-1F117         ; disallowed_STD3_mapped ; 0028 0068 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER H
-1F118         ; disallowed_STD3_mapped ; 0028 0069 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER I
-1F119         ; disallowed_STD3_mapped ; 0028 006A 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER J
-1F11A         ; disallowed_STD3_mapped ; 0028 006B 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER K
-1F11B         ; disallowed_STD3_mapped ; 0028 006C 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER L
-1F11C         ; disallowed_STD3_mapped ; 0028 006D 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER M
-1F11D         ; disallowed_STD3_mapped ; 0028 006E 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER N
-1F11E         ; disallowed_STD3_mapped ; 0028 006F 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER O
-1F11F         ; disallowed_STD3_mapped ; 0028 0070 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER P
-1F120         ; disallowed_STD3_mapped ; 0028 0071 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER Q
-1F121         ; disallowed_STD3_mapped ; 0028 0072 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER R
-1F122         ; disallowed_STD3_mapped ; 0028 0073 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER S
-1F123         ; disallowed_STD3_mapped ; 0028 0074 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER T
-1F124         ; disallowed_STD3_mapped ; 0028 0075 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER U
-1F125         ; disallowed_STD3_mapped ; 0028 0076 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER V
-1F126         ; disallowed_STD3_mapped ; 0028 0077 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER W
-1F127         ; disallowed_STD3_mapped ; 0028 0078 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER X
-1F128         ; disallowed_STD3_mapped ; 0028 0079 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER Y
-1F129         ; disallowed_STD3_mapped ; 0028 007A 0029 #5.2  PARENTHESIZED LATIN CAPITAL LETTER Z
-1F12A         ; mapped                 ; 3014 0073 3015 #5.2  TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S
-1F12B         ; mapped                 ; 0063          # 5.2  CIRCLED ITALIC LATIN CAPITAL LETTER C
-1F12C         ; mapped                 ; 0072          # 5.2  CIRCLED ITALIC LATIN CAPITAL LETTER R
-1F12D         ; mapped                 ; 0063 0064     # 5.2  CIRCLED CD
-1F12E         ; mapped                 ; 0077 007A     # 5.2  CIRCLED WZ
-1F12F         ; valid                  ;      ; NV8    # 11.0 COPYLEFT SYMBOL
-1F130         ; mapped                 ; 0061          # 6.0  SQUARED LATIN CAPITAL LETTER A
-1F131         ; mapped                 ; 0062          # 5.2  SQUARED LATIN CAPITAL LETTER B
-1F132         ; mapped                 ; 0063          # 6.0  SQUARED LATIN CAPITAL LETTER C
-1F133         ; mapped                 ; 0064          # 6.0  SQUARED LATIN CAPITAL LETTER D
-1F134         ; mapped                 ; 0065          # 6.0  SQUARED LATIN CAPITAL LETTER E
-1F135         ; mapped                 ; 0066          # 6.0  SQUARED LATIN CAPITAL LETTER F
-1F136         ; mapped                 ; 0067          # 6.0  SQUARED LATIN CAPITAL LETTER G
-1F137         ; mapped                 ; 0068          # 6.0  SQUARED LATIN CAPITAL LETTER H
-1F138         ; mapped                 ; 0069          # 6.0  SQUARED LATIN CAPITAL LETTER I
-1F139         ; mapped                 ; 006A          # 6.0  SQUARED LATIN CAPITAL LETTER J
-1F13A         ; mapped                 ; 006B          # 6.0  SQUARED LATIN CAPITAL LETTER K
-1F13B         ; mapped                 ; 006C          # 6.0  SQUARED LATIN CAPITAL LETTER L
-1F13C         ; mapped                 ; 006D          # 6.0  SQUARED LATIN CAPITAL LETTER M
-1F13D         ; mapped                 ; 006E          # 5.2  SQUARED LATIN CAPITAL LETTER N
-1F13E         ; mapped                 ; 006F          # 6.0  SQUARED LATIN CAPITAL LETTER O
-1F13F         ; mapped                 ; 0070          # 5.2  SQUARED LATIN CAPITAL LETTER P
-1F140         ; mapped                 ; 0071          # 6.0  SQUARED LATIN CAPITAL LETTER Q
-1F141         ; mapped                 ; 0072          # 6.0  SQUARED LATIN CAPITAL LETTER R
-1F142         ; mapped                 ; 0073          # 5.2  SQUARED LATIN CAPITAL LETTER S
-1F143         ; mapped                 ; 0074          # 6.0  SQUARED LATIN CAPITAL LETTER T
-1F144         ; mapped                 ; 0075          # 6.0  SQUARED LATIN CAPITAL LETTER U
-1F145         ; mapped                 ; 0076          # 6.0  SQUARED LATIN CAPITAL LETTER V
-1F146         ; mapped                 ; 0077          # 5.2  SQUARED LATIN CAPITAL LETTER W
-1F147         ; mapped                 ; 0078          # 6.0  SQUARED LATIN CAPITAL LETTER X
-1F148         ; mapped                 ; 0079          # 6.0  SQUARED LATIN CAPITAL LETTER Y
-1F149         ; mapped                 ; 007A          # 6.0  SQUARED LATIN CAPITAL LETTER Z
-1F14A         ; mapped                 ; 0068 0076     # 5.2  SQUARED HV
-1F14B         ; mapped                 ; 006D 0076     # 5.2  SQUARED MV
-1F14C         ; mapped                 ; 0073 0064     # 5.2  SQUARED SD
-1F14D         ; mapped                 ; 0073 0073     # 5.2  SQUARED SS
-1F14E         ; mapped                 ; 0070 0070 0076 #5.2  SQUARED PPV
-1F14F         ; mapped                 ; 0077 0063     # 6.0  SQUARED WC
-1F150..1F156  ; valid                  ;      ; NV8    # 6.0  NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER G
-1F157         ; valid                  ;      ; NV8    # 5.2  NEGATIVE CIRCLED LATIN CAPITAL LETTER H
-1F158..1F15E  ; valid                  ;      ; NV8    # 6.0  NEGATIVE CIRCLED LATIN CAPITAL LETTER I..NEGATIVE CIRCLED LATIN CAPITAL LETTER O
-1F15F         ; valid                  ;      ; NV8    # 5.2  NEGATIVE CIRCLED LATIN CAPITAL LETTER P
-1F160..1F169  ; valid                  ;      ; NV8    # 6.0  NEGATIVE CIRCLED LATIN CAPITAL LETTER Q..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
-1F16A         ; mapped                 ; 006D 0063     # 6.1  RAISED MC SIGN
-1F16B         ; mapped                 ; 006D 0064     # 6.1  RAISED MD SIGN
-1F16C         ; mapped                 ; 006D 0072     # 12.0 RAISED MR SIGN
-1F16D..1F16F  ; valid                  ;      ; NV8    # 13.0 CIRCLED CC..CIRCLED HUMAN FIGURE
-1F170..1F178  ; valid                  ;      ; NV8    # 6.0  NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER I
-1F179         ; valid                  ;      ; NV8    # 5.2  NEGATIVE SQUARED LATIN CAPITAL LETTER J
-1F17A         ; valid                  ;      ; NV8    # 6.0  NEGATIVE SQUARED LATIN CAPITAL LETTER K
-1F17B..1F17C  ; valid                  ;      ; NV8    # 5.2  NEGATIVE SQUARED LATIN CAPITAL LETTER L..NEGATIVE SQUARED LATIN CAPITAL LETTER M
-1F17D..1F17E  ; valid                  ;      ; NV8    # 6.0  NEGATIVE SQUARED LATIN CAPITAL LETTER N..NEGATIVE SQUARED LATIN CAPITAL LETTER O
-1F17F         ; valid                  ;      ; NV8    # 5.2  NEGATIVE SQUARED LATIN CAPITAL LETTER P
-1F180..1F189  ; valid                  ;      ; NV8    # 6.0  NEGATIVE SQUARED LATIN CAPITAL LETTER Q..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
-1F18A..1F18D  ; valid                  ;      ; NV8    # 5.2  CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P..NEGATIVE SQUARED SA
-1F18E..1F18F  ; valid                  ;      ; NV8    # 6.0  NEGATIVE SQUARED AB..NEGATIVE SQUARED WC
-1F190         ; mapped                 ; 0064 006A     # 5.2  SQUARE DJ
-1F191..1F19A  ; valid                  ;      ; NV8    # 6.0  SQUARED CL..SQUARED VS
-1F19B..1F1AC  ; valid                  ;      ; NV8    # 9.0  SQUARED THREE D..SQUARED VOD
-1F1AD         ; valid                  ;      ; NV8    # 13.0 MASK WORK SYMBOL
-1F1AE..1F1E5  ; disallowed                             # NA   <reserved-1F1AE>..<reserved-1F1E5>
-1F1E6..1F1FF  ; valid                  ;      ; NV8    # 6.0  REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
-1F200         ; mapped                 ; 307B 304B     # 5.2  SQUARE HIRAGANA HOKA
-1F201         ; mapped                 ; 30B3 30B3     # 6.0  SQUARED KATAKANA KOKO
-1F202         ; mapped                 ; 30B5          # 6.0  SQUARED KATAKANA SA
-1F203..1F20F  ; disallowed                             # NA   <reserved-1F203>..<reserved-1F20F>
-1F210         ; mapped                 ; 624B          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-624B
-1F211         ; mapped                 ; 5B57          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-5B57
-1F212         ; mapped                 ; 53CC          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-53CC
-1F213         ; mapped                 ; 30C7          # 5.2  SQUARED KATAKANA DE
-1F214         ; mapped                 ; 4E8C          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-4E8C
-1F215         ; mapped                 ; 591A          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-591A
-1F216         ; mapped                 ; 89E3          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-89E3
-1F217         ; mapped                 ; 5929          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-5929
-1F218         ; mapped                 ; 4EA4          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-4EA4
-1F219         ; mapped                 ; 6620          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-6620
-1F21A         ; mapped                 ; 7121          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-7121
-1F21B         ; mapped                 ; 6599          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-6599
-1F21C         ; mapped                 ; 524D          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-524D
-1F21D         ; mapped                 ; 5F8C          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-5F8C
-1F21E         ; mapped                 ; 518D          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-518D
-1F21F         ; mapped                 ; 65B0          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-65B0
-1F220         ; mapped                 ; 521D          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-521D
-1F221         ; mapped                 ; 7D42          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-7D42
-1F222         ; mapped                 ; 751F          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-751F
-1F223         ; mapped                 ; 8CA9          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-8CA9
-1F224         ; mapped                 ; 58F0          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-58F0
-1F225         ; mapped                 ; 5439          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-5439
-1F226         ; mapped                 ; 6F14          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-6F14
-1F227         ; mapped                 ; 6295          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-6295
-1F228         ; mapped                 ; 6355          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-6355
-1F229         ; mapped                 ; 4E00          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-4E00
-1F22A         ; mapped                 ; 4E09          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-4E09
-1F22B         ; mapped                 ; 904A          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-904A
-1F22C         ; mapped                 ; 5DE6          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-5DE6
-1F22D         ; mapped                 ; 4E2D          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-4E2D
-1F22E         ; mapped                 ; 53F3          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-53F3
-1F22F         ; mapped                 ; 6307          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-6307
-1F230         ; mapped                 ; 8D70          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-8D70
-1F231         ; mapped                 ; 6253          # 5.2  SQUARED CJK UNIFIED IDEOGRAPH-6253
-1F232         ; mapped                 ; 7981          # 6.0  SQUARED CJK UNIFIED IDEOGRAPH-7981
-1F233         ; mapped                 ; 7A7A          # 6.0  SQUARED CJK UNIFIED IDEOGRAPH-7A7A
-1F234         ; mapped                 ; 5408          # 6.0  SQUARED CJK UNIFIED IDEOGRAPH-5408
-1F235         ; mapped                 ; 6E80          # 6.0  SQUARED CJK UNIFIED IDEOGRAPH-6E80
-1F236         ; mapped                 ; 6709          # 6.0  SQUARED CJK UNIFIED IDEOGRAPH-6709
-1F237         ; mapped                 ; 6708          # 6.0  SQUARED CJK UNIFIED IDEOGRAPH-6708
-1F238         ; mapped                 ; 7533          # 6.0  SQUARED CJK UNIFIED IDEOGRAPH-7533
-1F239         ; mapped                 ; 5272          # 6.0  SQUARED CJK UNIFIED IDEOGRAPH-5272
-1F23A         ; mapped                 ; 55B6          # 6.0  SQUARED CJK UNIFIED IDEOGRAPH-55B6
-1F23B         ; mapped                 ; 914D          # 9.0  SQUARED CJK UNIFIED IDEOGRAPH-914D
-1F23C..1F23F  ; disallowed                             # NA   <reserved-1F23C>..<reserved-1F23F>
-1F240         ; mapped                 ; 3014 672C 3015 #5.2  TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
-1F241         ; mapped                 ; 3014 4E09 3015 #5.2  TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09
-1F242         ; mapped                 ; 3014 4E8C 3015 #5.2  TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C
-1F243         ; mapped                 ; 3014 5B89 3015 #5.2  TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89
-1F244         ; mapped                 ; 3014 70B9 3015 #5.2  TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9
-1F245         ; mapped                 ; 3014 6253 3015 #5.2  TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253
-1F246         ; mapped                 ; 3014 76D7 3015 #5.2  TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7
-1F247         ; mapped                 ; 3014 52DD 3015 #5.2  TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD
-1F248         ; mapped                 ; 3014 6557 3015 #5.2  TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
-1F249..1F24F  ; disallowed                             # NA   <reserved-1F249>..<reserved-1F24F>
-1F250         ; mapped                 ; 5F97          # 6.0  CIRCLED IDEOGRAPH ADVANTAGE
-1F251         ; mapped                 ; 53EF          # 6.0  CIRCLED IDEOGRAPH ACCEPT
-1F252..1F25F  ; disallowed                             # NA   <reserved-1F252>..<reserved-1F25F>
-1F260..1F265  ; valid                  ;      ; NV8    # 10.0 ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI
-1F266..1F2FF  ; disallowed                             # NA   <reserved-1F266>..<reserved-1F2FF>
-1F300..1F320  ; valid                  ;      ; NV8    # 6.0  CYCLONE..SHOOTING STAR
-1F321..1F32C  ; valid                  ;      ; NV8    # 7.0  THERMOMETER..WIND BLOWING FACE
-1F32D..1F32F  ; valid                  ;      ; NV8    # 8.0  HOT DOG..BURRITO
-1F330..1F335  ; valid                  ;      ; NV8    # 6.0  CHESTNUT..CACTUS
-1F336         ; valid                  ;      ; NV8    # 7.0  HOT PEPPER
-1F337..1F37C  ; valid                  ;      ; NV8    # 6.0  TULIP..BABY BOTTLE
-1F37D         ; valid                  ;      ; NV8    # 7.0  FORK AND KNIFE WITH PLATE
-1F37E..1F37F  ; valid                  ;      ; NV8    # 8.0  BOTTLE WITH POPPING CORK..POPCORN
-1F380..1F393  ; valid                  ;      ; NV8    # 6.0  RIBBON..GRADUATION CAP
-1F394..1F39F  ; valid                  ;      ; NV8    # 7.0  HEART WITH TIP ON THE LEFT..ADMISSION TICKETS
-1F3A0..1F3C4  ; valid                  ;      ; NV8    # 6.0  CAROUSEL HORSE..SURFER
-1F3C5         ; valid                  ;      ; NV8    # 7.0  SPORTS MEDAL
-1F3C6..1F3CA  ; valid                  ;      ; NV8    # 6.0  TROPHY..SWIMMER
-1F3CB..1F3CE  ; valid                  ;      ; NV8    # 7.0  WEIGHT LIFTER..RACING CAR
-1F3CF..1F3D3  ; valid                  ;      ; NV8    # 8.0  CRICKET BAT AND BALL..TABLE TENNIS PADDLE AND BALL
-1F3D4..1F3DF  ; valid                  ;      ; NV8    # 7.0  SNOW CAPPED MOUNTAIN..STADIUM
-1F3E0..1F3F0  ; valid                  ;      ; NV8    # 6.0  HOUSE BUILDING..EUROPEAN CASTLE
-1F3F1..1F3F7  ; valid                  ;      ; NV8    # 7.0  WHITE PENNANT..LABEL
-1F3F8..1F3FF  ; valid                  ;      ; NV8    # 8.0  BADMINTON RACQUET AND SHUTTLECOCK..EMOJI MODIFIER FITZPATRICK TYPE-6
-1F400..1F43E  ; valid                  ;      ; NV8    # 6.0  RAT..PAW PRINTS
-1F43F         ; valid                  ;      ; NV8    # 7.0  CHIPMUNK
-1F440         ; valid                  ;      ; NV8    # 6.0  EYES
-1F441         ; valid                  ;      ; NV8    # 7.0  EYE
-1F442..1F4F7  ; valid                  ;      ; NV8    # 6.0  EAR..CAMERA
-1F4F8         ; valid                  ;      ; NV8    # 7.0  CAMERA WITH FLASH
-1F4F9..1F4FC  ; valid                  ;      ; NV8    # 6.0  VIDEO CAMERA..VIDEOCASSETTE
-1F4FD..1F4FE  ; valid                  ;      ; NV8    # 7.0  FILM PROJECTOR..PORTABLE STEREO
-1F4FF         ; valid                  ;      ; NV8    # 8.0  PRAYER BEADS
-1F500..1F53D  ; valid                  ;      ; NV8    # 6.0  TWISTED RIGHTWARDS ARROWS..DOWN-POINTING SMALL RED TRIANGLE
-1F53E..1F53F  ; valid                  ;      ; NV8    # 7.0  LOWER RIGHT SHADOWED WHITE CIRCLE..UPPER RIGHT SHADOWED WHITE CIRCLE
-1F540..1F543  ; valid                  ;      ; NV8    # 6.1  CIRCLED CROSS POMMEE..NOTCHED LEFT SEMICIRCLE WITH THREE DOTS
-1F544..1F54A  ; valid                  ;      ; NV8    # 7.0  NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS..DOVE OF PEACE
-1F54B..1F54F  ; valid                  ;      ; NV8    # 8.0  KAABA..BOWL OF HYGIEIA
-1F550..1F567  ; valid                  ;      ; NV8    # 6.0  CLOCK FACE ONE OCLOCK..CLOCK FACE TWELVE-THIRTY
-1F568..1F579  ; valid                  ;      ; NV8    # 7.0  RIGHT SPEAKER..JOYSTICK
-1F57A         ; valid                  ;      ; NV8    # 9.0  MAN DANCING
-1F57B..1F5A3  ; valid                  ;      ; NV8    # 7.0  LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
-1F5A4         ; valid                  ;      ; NV8    # 9.0  BLACK HEART
-1F5A5..1F5FA  ; valid                  ;      ; NV8    # 7.0  DESKTOP COMPUTER..WORLD MAP
-1F5FB..1F5FF  ; valid                  ;      ; NV8    # 6.0  MOUNT FUJI..MOYAI
-1F600         ; valid                  ;      ; NV8    # 6.1  GRINNING FACE
-1F601..1F610  ; valid                  ;      ; NV8    # 6.0  GRINNING FACE WITH SMILING EYES..NEUTRAL FACE
-1F611         ; valid                  ;      ; NV8    # 6.1  EXPRESSIONLESS FACE
-1F612..1F614  ; valid                  ;      ; NV8    # 6.0  UNAMUSED FACE..PENSIVE FACE
-1F615         ; valid                  ;      ; NV8    # 6.1  CONFUSED FACE
-1F616         ; valid                  ;      ; NV8    # 6.0  CONFOUNDED FACE
-1F617         ; valid                  ;      ; NV8    # 6.1  KISSING FACE
-1F618         ; valid                  ;      ; NV8    # 6.0  FACE THROWING A KISS
-1F619         ; valid                  ;      ; NV8    # 6.1  KISSING FACE WITH SMILING EYES
-1F61A         ; valid                  ;      ; NV8    # 6.0  KISSING FACE WITH CLOSED EYES
-1F61B         ; valid                  ;      ; NV8    # 6.1  FACE WITH STUCK-OUT TONGUE
-1F61C..1F61E  ; valid                  ;      ; NV8    # 6.0  FACE WITH STUCK-OUT TONGUE AND WINKING EYE..DISAPPOINTED FACE
-1F61F         ; valid                  ;      ; NV8    # 6.1  WORRIED FACE
-1F620..1F625  ; valid                  ;      ; NV8    # 6.0  ANGRY FACE..DISAPPOINTED BUT RELIEVED FACE
-1F626..1F627  ; valid                  ;      ; NV8    # 6.1  FROWNING FACE WITH OPEN MOUTH..ANGUISHED FACE
-1F628..1F62B  ; valid                  ;      ; NV8    # 6.0  FEARFUL FACE..TIRED FACE
-1F62C         ; valid                  ;      ; NV8    # 6.1  GRIMACING FACE
-1F62D         ; valid                  ;      ; NV8    # 6.0  LOUDLY CRYING FACE
-1F62E..1F62F  ; valid                  ;      ; NV8    # 6.1  FACE WITH OPEN MOUTH..HUSHED FACE
-1F630..1F633  ; valid                  ;      ; NV8    # 6.0  FACE WITH OPEN MOUTH AND COLD SWEAT..FLUSHED FACE
-1F634         ; valid                  ;      ; NV8    # 6.1  SLEEPING FACE
-1F635..1F640  ; valid                  ;      ; NV8    # 6.0  DIZZY FACE..WEARY CAT FACE
-1F641..1F642  ; valid                  ;      ; NV8    # 7.0  SLIGHTLY FROWNING FACE..SLIGHTLY SMILING FACE
-1F643..1F644  ; valid                  ;      ; NV8    # 8.0  UPSIDE-DOWN FACE..FACE WITH ROLLING EYES
-1F645..1F64F  ; valid                  ;      ; NV8    # 6.0  FACE WITH NO GOOD GESTURE..PERSON WITH FOLDED HANDS
-1F650..1F67F  ; valid                  ;      ; NV8    # 7.0  NORTH WEST POINTING LEAF..REVERSE CHECKER BOARD
-1F680..1F6C5  ; valid                  ;      ; NV8    # 6.0  ROCKET..LEFT LUGGAGE
-1F6C6..1F6CF  ; valid                  ;      ; NV8    # 7.0  TRIANGLE WITH ROUNDED CORNERS..BED
-1F6D0         ; valid                  ;      ; NV8    # 8.0  PLACE OF WORSHIP
-1F6D1..1F6D2  ; valid                  ;      ; NV8    # 9.0  OCTAGONAL SIGN..SHOPPING TROLLEY
-1F6D3..1F6D4  ; valid                  ;      ; NV8    # 10.0 STUPA..PAGODA
-1F6D5         ; valid                  ;      ; NV8    # 12.0 HINDU TEMPLE
-1F6D6..1F6D7  ; valid                  ;      ; NV8    # 13.0 HUT..ELEVATOR
-1F6D8..1F6DF  ; disallowed                             # NA   <reserved-1F6D8>..<reserved-1F6DF>
-1F6E0..1F6EC  ; valid                  ;      ; NV8    # 7.0  HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6ED..1F6EF  ; disallowed                             # NA   <reserved-1F6ED>..<reserved-1F6EF>
-1F6F0..1F6F3  ; valid                  ;      ; NV8    # 7.0  SATELLITE..PASSENGER SHIP
-1F6F4..1F6F6  ; valid                  ;      ; NV8    # 9.0  SCOOTER..CANOE
-1F6F7..1F6F8  ; valid                  ;      ; NV8    # 10.0 SLED..FLYING SAUCER
-1F6F9         ; valid                  ;      ; NV8    # 11.0 SKATEBOARD
-1F6FA         ; valid                  ;      ; NV8    # 12.0 AUTO RICKSHAW
-1F6FB..1F6FC  ; valid                  ;      ; NV8    # 13.0 PICKUP TRUCK..ROLLER SKATE
-1F6FD..1F6FF  ; disallowed                             # NA   <reserved-1F6FD>..<reserved-1F6FF>
-1F700..1F773  ; valid                  ;      ; NV8    # 6.0  ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
-1F774..1F77F  ; disallowed                             # NA   <reserved-1F774>..<reserved-1F77F>
-1F780..1F7D4  ; valid                  ;      ; NV8    # 7.0  BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
-1F7D5..1F7D8  ; valid                  ;      ; NV8    # 11.0 CIRCLED TRIANGLE..NEGATIVE CIRCLED SQUARE
-1F7D9..1F7DF  ; disallowed                             # NA   <reserved-1F7D9>..<reserved-1F7DF>
-1F7E0..1F7EB  ; valid                  ;      ; NV8    # 12.0 LARGE ORANGE CIRCLE..LARGE BROWN SQUARE
-1F7EC..1F7FF  ; disallowed                             # NA   <reserved-1F7EC>..<reserved-1F7FF>
-1F800..1F80B  ; valid                  ;      ; NV8    # 7.0  LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
-1F80C..1F80F  ; disallowed                             # NA   <reserved-1F80C>..<reserved-1F80F>
-1F810..1F847  ; valid                  ;      ; NV8    # 7.0  LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
-1F848..1F84F  ; disallowed                             # NA   <reserved-1F848>..<reserved-1F84F>
-1F850..1F859  ; valid                  ;      ; NV8    # 7.0  LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
-1F85A..1F85F  ; disallowed                             # NA   <reserved-1F85A>..<reserved-1F85F>
-1F860..1F887  ; valid                  ;      ; NV8    # 7.0  WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
-1F888..1F88F  ; disallowed                             # NA   <reserved-1F888>..<reserved-1F88F>
-1F890..1F8AD  ; valid                  ;      ; NV8    # 7.0  LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F8AE..1F8AF  ; disallowed                             # NA   <reserved-1F8AE>..<reserved-1F8AF>
-1F8B0..1F8B1  ; valid                  ;      ; NV8    # 13.0 ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
-1F8B2..1F8FF  ; disallowed                             # NA   <reserved-1F8B2>..<reserved-1F8FF>
-1F900..1F90B  ; valid                  ;      ; NV8    # 10.0 CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT
-1F90C         ; valid                  ;      ; NV8    # 13.0 PINCHED FINGERS
-1F90D..1F90F  ; valid                  ;      ; NV8    # 12.0 WHITE HEART..PINCHING HAND
-1F910..1F918  ; valid                  ;      ; NV8    # 8.0  ZIPPER-MOUTH FACE..SIGN OF THE HORNS
-1F919..1F91E  ; valid                  ;      ; NV8    # 9.0  CALL ME HAND..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
-1F91F         ; valid                  ;      ; NV8    # 10.0 I LOVE YOU HAND SIGN
-1F920..1F927  ; valid                  ;      ; NV8    # 9.0  FACE WITH COWBOY HAT..SNEEZING FACE
-1F928..1F92F  ; valid                  ;      ; NV8    # 10.0 FACE WITH ONE EYEBROW RAISED..SHOCKED FACE WITH EXPLODING HEAD
-1F930         ; valid                  ;      ; NV8    # 9.0  PREGNANT WOMAN
-1F931..1F932  ; valid                  ;      ; NV8    # 10.0 BREAST-FEEDING..PALMS UP TOGETHER
-1F933..1F93E  ; valid                  ;      ; NV8    # 9.0  SELFIE..HANDBALL
-1F93F         ; valid                  ;      ; NV8    # 12.0 DIVING MASK
-1F940..1F94B  ; valid                  ;      ; NV8    # 9.0  WILTED FLOWER..MARTIAL ARTS UNIFORM
-1F94C         ; valid                  ;      ; NV8    # 10.0 CURLING STONE
-1F94D..1F94F  ; valid                  ;      ; NV8    # 11.0 LACROSSE STICK AND BALL..FLYING DISC
-1F950..1F95E  ; valid                  ;      ; NV8    # 9.0  CROISSANT..PANCAKES
-1F95F..1F96B  ; valid                  ;      ; NV8    # 10.0 DUMPLING..CANNED FOOD
-1F96C..1F970  ; valid                  ;      ; NV8    # 11.0 LEAFY GREEN..SMILING FACE WITH SMILING EYES AND THREE HEARTS
-1F971         ; valid                  ;      ; NV8    # 12.0 YAWNING FACE
-1F972         ; valid                  ;      ; NV8    # 13.0 SMILING FACE WITH TEAR
-1F973..1F976  ; valid                  ;      ; NV8    # 11.0 FACE WITH PARTY HORN AND PARTY HAT..FREEZING FACE
-1F977..1F978  ; valid                  ;      ; NV8    # 13.0 NINJA..DISGUISED FACE
-1F979         ; disallowed                             # NA   <reserved-1F979>
-1F97A         ; valid                  ;      ; NV8    # 11.0 FACE WITH PLEADING EYES
-1F97B         ; valid                  ;      ; NV8    # 12.0 SARI
-1F97C..1F97F  ; valid                  ;      ; NV8    # 11.0 LAB COAT..FLAT SHOE
-1F980..1F984  ; valid                  ;      ; NV8    # 8.0  CRAB..UNICORN FACE
-1F985..1F991  ; valid                  ;      ; NV8    # 9.0  EAGLE..SQUID
-1F992..1F997  ; valid                  ;      ; NV8    # 10.0 GIRAFFE FACE..CRICKET
-1F998..1F9A2  ; valid                  ;      ; NV8    # 11.0 KANGAROO..SWAN
-1F9A3..1F9A4  ; valid                  ;      ; NV8    # 13.0 MAMMOTH..DODO
-1F9A5..1F9AA  ; valid                  ;      ; NV8    # 12.0 SLOTH..OYSTER
-1F9AB..1F9AD  ; valid                  ;      ; NV8    # 13.0 BEAVER..SEAL
-1F9AE..1F9AF  ; valid                  ;      ; NV8    # 12.0 GUIDE DOG..PROBING CANE
-1F9B0..1F9B9  ; valid                  ;      ; NV8    # 11.0 EMOJI COMPONENT RED HAIR..SUPERVILLAIN
-1F9BA..1F9BF  ; valid                  ;      ; NV8    # 12.0 SAFETY VEST..MECHANICAL LEG
-1F9C0         ; valid                  ;      ; NV8    # 8.0  CHEESE WEDGE
-1F9C1..1F9C2  ; valid                  ;      ; NV8    # 11.0 CUPCAKE..SALT SHAKER
-1F9C3..1F9CA  ; valid                  ;      ; NV8    # 12.0 BEVERAGE BOX..ICE CUBE
-1F9CB         ; valid                  ;      ; NV8    # 13.0 BUBBLE TEA
-1F9CC         ; disallowed                             # NA   <reserved-1F9CC>
-1F9CD..1F9CF  ; valid                  ;      ; NV8    # 12.0 STANDING PERSON..DEAF PERSON
-1F9D0..1F9E6  ; valid                  ;      ; NV8    # 10.0 FACE WITH MONOCLE..SOCKS
-1F9E7..1F9FF  ; valid                  ;      ; NV8    # 11.0 RED GIFT ENVELOPE..NAZAR AMULET
-1FA00..1FA53  ; valid                  ;      ; NV8    # 12.0 NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP
-1FA54..1FA5F  ; disallowed                             # NA   <reserved-1FA54>..<reserved-1FA5F>
-1FA60..1FA6D  ; valid                  ;      ; NV8    # 11.0 XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
-1FA6E..1FA6F  ; disallowed                             # NA   <reserved-1FA6E>..<reserved-1FA6F>
-1FA70..1FA73  ; valid                  ;      ; NV8    # 12.0 BALLET SHOES..SHORTS
-1FA74         ; valid                  ;      ; NV8    # 13.0 THONG SANDAL
-1FA75..1FA77  ; disallowed                             # NA   <reserved-1FA75>..<reserved-1FA77>
-1FA78..1FA7A  ; valid                  ;      ; NV8    # 12.0 DROP OF BLOOD..STETHOSCOPE
-1FA7B..1FA7F  ; disallowed                             # NA   <reserved-1FA7B>..<reserved-1FA7F>
-1FA80..1FA82  ; valid                  ;      ; NV8    # 12.0 YO-YO..PARACHUTE
-1FA83..1FA86  ; valid                  ;      ; NV8    # 13.0 BOOMERANG..NESTING DOLLS
-1FA87..1FA8F  ; disallowed                             # NA   <reserved-1FA87>..<reserved-1FA8F>
-1FA90..1FA95  ; valid                  ;      ; NV8    # 12.0 RINGED PLANET..BANJO
-1FA96..1FAA8  ; valid                  ;      ; NV8    # 13.0 MILITARY HELMET..ROCK
-1FAA9..1FAAF  ; disallowed                             # NA   <reserved-1FAA9>..<reserved-1FAAF>
-1FAB0..1FAB6  ; valid                  ;      ; NV8    # 13.0 FLY..FEATHER
-1FAB7..1FABF  ; disallowed                             # NA   <reserved-1FAB7>..<reserved-1FABF>
-1FAC0..1FAC2  ; valid                  ;      ; NV8    # 13.0 ANATOMICAL HEART..PEOPLE HUGGING
-1FAC3..1FACF  ; disallowed                             # NA   <reserved-1FAC3>..<reserved-1FACF>
-1FAD0..1FAD6  ; valid                  ;      ; NV8    # 13.0 BLUEBERRIES..TEAPOT
-1FAD7..1FAFF  ; disallowed                             # NA   <reserved-1FAD7>..<reserved-1FAFF>
-1FB00..1FB92  ; valid                  ;      ; NV8    # 13.0 BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
-1FB93         ; disallowed                             # NA   <reserved-1FB93>
-1FB94..1FBCA  ; valid                  ;      ; NV8    # 13.0 LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
-1FBCB..1FBEF  ; disallowed                             # NA   <reserved-1FBCB>..<reserved-1FBEF>
-1FBF0         ; mapped                 ; 0030          # 13.0 SEGMENTED DIGIT ZERO
-1FBF1         ; mapped                 ; 0031          # 13.0 SEGMENTED DIGIT ONE
-1FBF2         ; mapped                 ; 0032          # 13.0 SEGMENTED DIGIT TWO
-1FBF3         ; mapped                 ; 0033          # 13.0 SEGMENTED DIGIT THREE
-1FBF4         ; mapped                 ; 0034          # 13.0 SEGMENTED DIGIT FOUR
-1FBF5         ; mapped                 ; 0035          # 13.0 SEGMENTED DIGIT FIVE
-1FBF6         ; mapped                 ; 0036          # 13.0 SEGMENTED DIGIT SIX
-1FBF7         ; mapped                 ; 0037          # 13.0 SEGMENTED DIGIT SEVEN
-1FBF8         ; mapped                 ; 0038          # 13.0 SEGMENTED DIGIT EIGHT
-1FBF9         ; mapped                 ; 0039          # 13.0 SEGMENTED DIGIT NINE
-1FBFA..1FFFD  ; disallowed                             # NA   <reserved-1FBFA>..<reserved-1FFFD>
-1FFFE..1FFFF  ; disallowed                             # 2.0  <noncharacter-1FFFE>..<noncharacter-1FFFF>
-20000..2A6D6  ; valid                                  # 3.1  CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
-2A6D7..2A6DD  ; valid                                  # 13.0 CJK UNIFIED IDEOGRAPH-2A6D7..CJK UNIFIED IDEOGRAPH-2A6DD
-2A6DE..2A6FF  ; disallowed                             # NA   <reserved-2A6DE>..<reserved-2A6FF>
-2A700..2B734  ; valid                                  # 5.2  CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
-2B735..2B73F  ; disallowed                             # NA   <reserved-2B735>..<reserved-2B73F>
-2B740..2B81D  ; valid                                  # 6.0  CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
-2B81E..2B81F  ; disallowed                             # NA   <reserved-2B81E>..<reserved-2B81F>
-2B820..2CEA1  ; valid                                  # 8.0  CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
-2CEA2..2CEAF  ; disallowed                             # NA   <reserved-2CEA2>..<reserved-2CEAF>
-2CEB0..2EBE0  ; valid                                  # 10.0 CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
-2EBE1..2F7FF  ; disallowed                             # NA   <reserved-2EBE1>..<reserved-2F7FF>
-2F800         ; mapped                 ; 4E3D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F800
-2F801         ; mapped                 ; 4E38          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F801
-2F802         ; mapped                 ; 4E41          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F802
-2F803         ; mapped                 ; 20122         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F803
-2F804         ; mapped                 ; 4F60          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F804
-2F805         ; mapped                 ; 4FAE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F805
-2F806         ; mapped                 ; 4FBB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F806
-2F807         ; mapped                 ; 5002          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F807
-2F808         ; mapped                 ; 507A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F808
-2F809         ; mapped                 ; 5099          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F809
-2F80A         ; mapped                 ; 50E7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F80A
-2F80B         ; mapped                 ; 50CF          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F80B
-2F80C         ; mapped                 ; 349E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F80C
-2F80D         ; mapped                 ; 2063A         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F80D
-2F80E         ; mapped                 ; 514D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F80E
-2F80F         ; mapped                 ; 5154          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F80F
-2F810         ; mapped                 ; 5164          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F810
-2F811         ; mapped                 ; 5177          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F811
-2F812         ; mapped                 ; 2051C         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F812
-2F813         ; mapped                 ; 34B9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F813
-2F814         ; mapped                 ; 5167          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F814
-2F815         ; mapped                 ; 518D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F815
-2F816         ; mapped                 ; 2054B         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F816
-2F817         ; mapped                 ; 5197          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F817
-2F818         ; mapped                 ; 51A4          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F818
-2F819         ; mapped                 ; 4ECC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F819
-2F81A         ; mapped                 ; 51AC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F81A
-2F81B         ; mapped                 ; 51B5          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F81B
-2F81C         ; mapped                 ; 291DF         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F81C
-2F81D         ; mapped                 ; 51F5          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F81D
-2F81E         ; mapped                 ; 5203          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F81E
-2F81F         ; mapped                 ; 34DF          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F81F
-2F820         ; mapped                 ; 523B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F820
-2F821         ; mapped                 ; 5246          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F821
-2F822         ; mapped                 ; 5272          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F822
-2F823         ; mapped                 ; 5277          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F823
-2F824         ; mapped                 ; 3515          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F824
-2F825         ; mapped                 ; 52C7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F825
-2F826         ; mapped                 ; 52C9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F826
-2F827         ; mapped                 ; 52E4          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F827
-2F828         ; mapped                 ; 52FA          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F828
-2F829         ; mapped                 ; 5305          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F829
-2F82A         ; mapped                 ; 5306          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F82A
-2F82B         ; mapped                 ; 5317          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F82B
-2F82C         ; mapped                 ; 5349          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F82C
-2F82D         ; mapped                 ; 5351          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F82D
-2F82E         ; mapped                 ; 535A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F82E
-2F82F         ; mapped                 ; 5373          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F82F
-2F830         ; mapped                 ; 537D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F830
-2F831..2F833  ; mapped                 ; 537F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F831..CJK COMPATIBILITY IDEOGRAPH-2F833
-2F834         ; mapped                 ; 20A2C         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F834
-2F835         ; mapped                 ; 7070          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F835
-2F836         ; mapped                 ; 53CA          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F836
-2F837         ; mapped                 ; 53DF          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F837
-2F838         ; mapped                 ; 20B63         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F838
-2F839         ; mapped                 ; 53EB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F839
-2F83A         ; mapped                 ; 53F1          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F83A
-2F83B         ; mapped                 ; 5406          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F83B
-2F83C         ; mapped                 ; 549E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F83C
-2F83D         ; mapped                 ; 5438          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F83D
-2F83E         ; mapped                 ; 5448          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F83E
-2F83F         ; mapped                 ; 5468          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F83F
-2F840         ; mapped                 ; 54A2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F840
-2F841         ; mapped                 ; 54F6          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F841
-2F842         ; mapped                 ; 5510          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F842
-2F843         ; mapped                 ; 5553          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F843
-2F844         ; mapped                 ; 5563          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F844
-2F845..2F846  ; mapped                 ; 5584          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F845..CJK COMPATIBILITY IDEOGRAPH-2F846
-2F847         ; mapped                 ; 5599          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F847
-2F848         ; mapped                 ; 55AB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F848
-2F849         ; mapped                 ; 55B3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F849
-2F84A         ; mapped                 ; 55C2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F84A
-2F84B         ; mapped                 ; 5716          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F84B
-2F84C         ; mapped                 ; 5606          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F84C
-2F84D         ; mapped                 ; 5717          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F84D
-2F84E         ; mapped                 ; 5651          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F84E
-2F84F         ; mapped                 ; 5674          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F84F
-2F850         ; mapped                 ; 5207          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F850
-2F851         ; mapped                 ; 58EE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F851
-2F852         ; mapped                 ; 57CE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F852
-2F853         ; mapped                 ; 57F4          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F853
-2F854         ; mapped                 ; 580D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F854
-2F855         ; mapped                 ; 578B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F855
-2F856         ; mapped                 ; 5832          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F856
-2F857         ; mapped                 ; 5831          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F857
-2F858         ; mapped                 ; 58AC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F858
-2F859         ; mapped                 ; 214E4         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F859
-2F85A         ; mapped                 ; 58F2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F85A
-2F85B         ; mapped                 ; 58F7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F85B
-2F85C         ; mapped                 ; 5906          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F85C
-2F85D         ; mapped                 ; 591A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F85D
-2F85E         ; mapped                 ; 5922          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F85E
-2F85F         ; mapped                 ; 5962          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F85F
-2F860         ; mapped                 ; 216A8         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F860
-2F861         ; mapped                 ; 216EA         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F861
-2F862         ; mapped                 ; 59EC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F862
-2F863         ; mapped                 ; 5A1B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F863
-2F864         ; mapped                 ; 5A27          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F864
-2F865         ; mapped                 ; 59D8          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F865
-2F866         ; mapped                 ; 5A66          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F866
-2F867         ; mapped                 ; 36EE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F867
-2F868         ; disallowed                             # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F868
-2F869         ; mapped                 ; 5B08          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F869
-2F86A..2F86B  ; mapped                 ; 5B3E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F86A..CJK COMPATIBILITY IDEOGRAPH-2F86B
-2F86C         ; mapped                 ; 219C8         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F86C
-2F86D         ; mapped                 ; 5BC3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F86D
-2F86E         ; mapped                 ; 5BD8          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F86E
-2F86F         ; mapped                 ; 5BE7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F86F
-2F870         ; mapped                 ; 5BF3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F870
-2F871         ; mapped                 ; 21B18         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F871
-2F872         ; mapped                 ; 5BFF          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F872
-2F873         ; mapped                 ; 5C06          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F873
-2F874         ; disallowed                             # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F874
-2F875         ; mapped                 ; 5C22          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F875
-2F876         ; mapped                 ; 3781          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F876
-2F877         ; mapped                 ; 5C60          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F877
-2F878         ; mapped                 ; 5C6E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F878
-2F879         ; mapped                 ; 5CC0          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F879
-2F87A         ; mapped                 ; 5C8D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F87A
-2F87B         ; mapped                 ; 21DE4         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F87B
-2F87C         ; mapped                 ; 5D43          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F87C
-2F87D         ; mapped                 ; 21DE6         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F87D
-2F87E         ; mapped                 ; 5D6E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F87E
-2F87F         ; mapped                 ; 5D6B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F87F
-2F880         ; mapped                 ; 5D7C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F880
-2F881         ; mapped                 ; 5DE1          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F881
-2F882         ; mapped                 ; 5DE2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F882
-2F883         ; mapped                 ; 382F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F883
-2F884         ; mapped                 ; 5DFD          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F884
-2F885         ; mapped                 ; 5E28          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F885
-2F886         ; mapped                 ; 5E3D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F886
-2F887         ; mapped                 ; 5E69          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F887
-2F888         ; mapped                 ; 3862          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F888
-2F889         ; mapped                 ; 22183         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F889
-2F88A         ; mapped                 ; 387C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F88A
-2F88B         ; mapped                 ; 5EB0          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F88B
-2F88C         ; mapped                 ; 5EB3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F88C
-2F88D         ; mapped                 ; 5EB6          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F88D
-2F88E         ; mapped                 ; 5ECA          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F88E
-2F88F         ; mapped                 ; 2A392         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F88F
-2F890         ; mapped                 ; 5EFE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F890
-2F891..2F892  ; mapped                 ; 22331         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F891..CJK COMPATIBILITY IDEOGRAPH-2F892
-2F893         ; mapped                 ; 8201          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F893
-2F894..2F895  ; mapped                 ; 5F22          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F894..CJK COMPATIBILITY IDEOGRAPH-2F895
-2F896         ; mapped                 ; 38C7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F896
-2F897         ; mapped                 ; 232B8         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F897
-2F898         ; mapped                 ; 261DA         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F898
-2F899         ; mapped                 ; 5F62          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F899
-2F89A         ; mapped                 ; 5F6B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F89A
-2F89B         ; mapped                 ; 38E3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F89B
-2F89C         ; mapped                 ; 5F9A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F89C
-2F89D         ; mapped                 ; 5FCD          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F89D
-2F89E         ; mapped                 ; 5FD7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F89E
-2F89F         ; mapped                 ; 5FF9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F89F
-2F8A0         ; mapped                 ; 6081          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8A0
-2F8A1         ; mapped                 ; 393A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8A1
-2F8A2         ; mapped                 ; 391C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8A2
-2F8A3         ; mapped                 ; 6094          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8A3
-2F8A4         ; mapped                 ; 226D4         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8A4
-2F8A5         ; mapped                 ; 60C7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8A5
-2F8A6         ; mapped                 ; 6148          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8A6
-2F8A7         ; mapped                 ; 614C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8A7
-2F8A8         ; mapped                 ; 614E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8A8
-2F8A9         ; mapped                 ; 614C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8A9
-2F8AA         ; mapped                 ; 617A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8AA
-2F8AB         ; mapped                 ; 618E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8AB
-2F8AC         ; mapped                 ; 61B2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8AC
-2F8AD         ; mapped                 ; 61A4          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8AD
-2F8AE         ; mapped                 ; 61AF          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8AE
-2F8AF         ; mapped                 ; 61DE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8AF
-2F8B0         ; mapped                 ; 61F2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8B0
-2F8B1         ; mapped                 ; 61F6          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8B1
-2F8B2         ; mapped                 ; 6210          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8B2
-2F8B3         ; mapped                 ; 621B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8B3
-2F8B4         ; mapped                 ; 625D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8B4
-2F8B5         ; mapped                 ; 62B1          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8B5
-2F8B6         ; mapped                 ; 62D4          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8B6
-2F8B7         ; mapped                 ; 6350          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8B7
-2F8B8         ; mapped                 ; 22B0C         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8B8
-2F8B9         ; mapped                 ; 633D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8B9
-2F8BA         ; mapped                 ; 62FC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8BA
-2F8BB         ; mapped                 ; 6368          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8BB
-2F8BC         ; mapped                 ; 6383          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8BC
-2F8BD         ; mapped                 ; 63E4          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8BD
-2F8BE         ; mapped                 ; 22BF1         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8BE
-2F8BF         ; mapped                 ; 6422          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8BF
-2F8C0         ; mapped                 ; 63C5          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8C0
-2F8C1         ; mapped                 ; 63A9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8C1
-2F8C2         ; mapped                 ; 3A2E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8C2
-2F8C3         ; mapped                 ; 6469          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8C3
-2F8C4         ; mapped                 ; 647E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8C4
-2F8C5         ; mapped                 ; 649D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8C5
-2F8C6         ; mapped                 ; 6477          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8C6
-2F8C7         ; mapped                 ; 3A6C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8C7
-2F8C8         ; mapped                 ; 654F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8C8
-2F8C9         ; mapped                 ; 656C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8C9
-2F8CA         ; mapped                 ; 2300A         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8CA
-2F8CB         ; mapped                 ; 65E3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8CB
-2F8CC         ; mapped                 ; 66F8          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8CC
-2F8CD         ; mapped                 ; 6649          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8CD
-2F8CE         ; mapped                 ; 3B19          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8CE
-2F8CF         ; mapped                 ; 6691          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8CF
-2F8D0         ; mapped                 ; 3B08          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8D0
-2F8D1         ; mapped                 ; 3AE4          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8D1
-2F8D2         ; mapped                 ; 5192          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8D2
-2F8D3         ; mapped                 ; 5195          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8D3
-2F8D4         ; mapped                 ; 6700          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8D4
-2F8D5         ; mapped                 ; 669C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8D5
-2F8D6         ; mapped                 ; 80AD          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8D6
-2F8D7         ; mapped                 ; 43D9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8D7
-2F8D8         ; mapped                 ; 6717          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8D8
-2F8D9         ; mapped                 ; 671B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8D9
-2F8DA         ; mapped                 ; 6721          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8DA
-2F8DB         ; mapped                 ; 675E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8DB
-2F8DC         ; mapped                 ; 6753          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8DC
-2F8DD         ; mapped                 ; 233C3         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8DD
-2F8DE         ; mapped                 ; 3B49          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8DE
-2F8DF         ; mapped                 ; 67FA          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8DF
-2F8E0         ; mapped                 ; 6785          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8E0
-2F8E1         ; mapped                 ; 6852          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8E1
-2F8E2         ; mapped                 ; 6885          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8E2
-2F8E3         ; mapped                 ; 2346D         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8E3
-2F8E4         ; mapped                 ; 688E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8E4
-2F8E5         ; mapped                 ; 681F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8E5
-2F8E6         ; mapped                 ; 6914          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8E6
-2F8E7         ; mapped                 ; 3B9D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8E7
-2F8E8         ; mapped                 ; 6942          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8E8
-2F8E9         ; mapped                 ; 69A3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8E9
-2F8EA         ; mapped                 ; 69EA          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8EA
-2F8EB         ; mapped                 ; 6AA8          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8EB
-2F8EC         ; mapped                 ; 236A3         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8EC
-2F8ED         ; mapped                 ; 6ADB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8ED
-2F8EE         ; mapped                 ; 3C18          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8EE
-2F8EF         ; mapped                 ; 6B21          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8EF
-2F8F0         ; mapped                 ; 238A7         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8F0
-2F8F1         ; mapped                 ; 6B54          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8F1
-2F8F2         ; mapped                 ; 3C4E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8F2
-2F8F3         ; mapped                 ; 6B72          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8F3
-2F8F4         ; mapped                 ; 6B9F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8F4
-2F8F5         ; mapped                 ; 6BBA          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8F5
-2F8F6         ; mapped                 ; 6BBB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8F6
-2F8F7         ; mapped                 ; 23A8D         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8F7
-2F8F8         ; mapped                 ; 21D0B         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8F8
-2F8F9         ; mapped                 ; 23AFA         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8F9
-2F8FA         ; mapped                 ; 6C4E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8FA
-2F8FB         ; mapped                 ; 23CBC         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8FB
-2F8FC         ; mapped                 ; 6CBF          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8FC
-2F8FD         ; mapped                 ; 6CCD          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8FD
-2F8FE         ; mapped                 ; 6C67          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8FE
-2F8FF         ; mapped                 ; 6D16          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F8FF
-2F900         ; mapped                 ; 6D3E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F900
-2F901         ; mapped                 ; 6D77          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F901
-2F902         ; mapped                 ; 6D41          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F902
-2F903         ; mapped                 ; 6D69          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F903
-2F904         ; mapped                 ; 6D78          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F904
-2F905         ; mapped                 ; 6D85          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F905
-2F906         ; mapped                 ; 23D1E         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F906
-2F907         ; mapped                 ; 6D34          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F907
-2F908         ; mapped                 ; 6E2F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F908
-2F909         ; mapped                 ; 6E6E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F909
-2F90A         ; mapped                 ; 3D33          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F90A
-2F90B         ; mapped                 ; 6ECB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F90B
-2F90C         ; mapped                 ; 6EC7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F90C
-2F90D         ; mapped                 ; 23ED1         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F90D
-2F90E         ; mapped                 ; 6DF9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F90E
-2F90F         ; mapped                 ; 6F6E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F90F
-2F910         ; mapped                 ; 23F5E         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F910
-2F911         ; mapped                 ; 23F8E         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F911
-2F912         ; mapped                 ; 6FC6          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F912
-2F913         ; mapped                 ; 7039          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F913
-2F914         ; mapped                 ; 701E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F914
-2F915         ; mapped                 ; 701B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F915
-2F916         ; mapped                 ; 3D96          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F916
-2F917         ; mapped                 ; 704A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F917
-2F918         ; mapped                 ; 707D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F918
-2F919         ; mapped                 ; 7077          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F919
-2F91A         ; mapped                 ; 70AD          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F91A
-2F91B         ; mapped                 ; 20525         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F91B
-2F91C         ; mapped                 ; 7145          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F91C
-2F91D         ; mapped                 ; 24263         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F91D
-2F91E         ; mapped                 ; 719C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F91E
-2F91F         ; disallowed                             # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F91F
-2F920         ; mapped                 ; 7228          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F920
-2F921         ; mapped                 ; 7235          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F921
-2F922         ; mapped                 ; 7250          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F922
-2F923         ; mapped                 ; 24608         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F923
-2F924         ; mapped                 ; 7280          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F924
-2F925         ; mapped                 ; 7295          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F925
-2F926         ; mapped                 ; 24735         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F926
-2F927         ; mapped                 ; 24814         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F927
-2F928         ; mapped                 ; 737A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F928
-2F929         ; mapped                 ; 738B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F929
-2F92A         ; mapped                 ; 3EAC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F92A
-2F92B         ; mapped                 ; 73A5          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F92B
-2F92C..2F92D  ; mapped                 ; 3EB8          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F92C..CJK COMPATIBILITY IDEOGRAPH-2F92D
-2F92E         ; mapped                 ; 7447          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F92E
-2F92F         ; mapped                 ; 745C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F92F
-2F930         ; mapped                 ; 7471          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F930
-2F931         ; mapped                 ; 7485          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F931
-2F932         ; mapped                 ; 74CA          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F932
-2F933         ; mapped                 ; 3F1B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F933
-2F934         ; mapped                 ; 7524          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F934
-2F935         ; mapped                 ; 24C36         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F935
-2F936         ; mapped                 ; 753E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F936
-2F937         ; mapped                 ; 24C92         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F937
-2F938         ; mapped                 ; 7570          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F938
-2F939         ; mapped                 ; 2219F         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F939
-2F93A         ; mapped                 ; 7610          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F93A
-2F93B         ; mapped                 ; 24FA1         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F93B
-2F93C         ; mapped                 ; 24FB8         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F93C
-2F93D         ; mapped                 ; 25044         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F93D
-2F93E         ; mapped                 ; 3FFC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F93E
-2F93F         ; mapped                 ; 4008          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F93F
-2F940         ; mapped                 ; 76F4          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F940
-2F941         ; mapped                 ; 250F3         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F941
-2F942         ; mapped                 ; 250F2         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F942
-2F943         ; mapped                 ; 25119         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F943
-2F944         ; mapped                 ; 25133         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F944
-2F945         ; mapped                 ; 771E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F945
-2F946..2F947  ; mapped                 ; 771F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F946..CJK COMPATIBILITY IDEOGRAPH-2F947
-2F948         ; mapped                 ; 774A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F948
-2F949         ; mapped                 ; 4039          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F949
-2F94A         ; mapped                 ; 778B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F94A
-2F94B         ; mapped                 ; 4046          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F94B
-2F94C         ; mapped                 ; 4096          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F94C
-2F94D         ; mapped                 ; 2541D         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F94D
-2F94E         ; mapped                 ; 784E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F94E
-2F94F         ; mapped                 ; 788C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F94F
-2F950         ; mapped                 ; 78CC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F950
-2F951         ; mapped                 ; 40E3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F951
-2F952         ; mapped                 ; 25626         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F952
-2F953         ; mapped                 ; 7956          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F953
-2F954         ; mapped                 ; 2569A         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F954
-2F955         ; mapped                 ; 256C5         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F955
-2F956         ; mapped                 ; 798F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F956
-2F957         ; mapped                 ; 79EB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F957
-2F958         ; mapped                 ; 412F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F958
-2F959         ; mapped                 ; 7A40          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F959
-2F95A         ; mapped                 ; 7A4A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F95A
-2F95B         ; mapped                 ; 7A4F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F95B
-2F95C         ; mapped                 ; 2597C         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F95C
-2F95D..2F95E  ; mapped                 ; 25AA7         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F95D..CJK COMPATIBILITY IDEOGRAPH-2F95E
-2F95F         ; disallowed                             # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F95F
-2F960         ; mapped                 ; 4202          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F960
-2F961         ; mapped                 ; 25BAB         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F961
-2F962         ; mapped                 ; 7BC6          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F962
-2F963         ; mapped                 ; 7BC9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F963
-2F964         ; mapped                 ; 4227          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F964
-2F965         ; mapped                 ; 25C80         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F965
-2F966         ; mapped                 ; 7CD2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F966
-2F967         ; mapped                 ; 42A0          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F967
-2F968         ; mapped                 ; 7CE8          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F968
-2F969         ; mapped                 ; 7CE3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F969
-2F96A         ; mapped                 ; 7D00          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F96A
-2F96B         ; mapped                 ; 25F86         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F96B
-2F96C         ; mapped                 ; 7D63          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F96C
-2F96D         ; mapped                 ; 4301          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F96D
-2F96E         ; mapped                 ; 7DC7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F96E
-2F96F         ; mapped                 ; 7E02          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F96F
-2F970         ; mapped                 ; 7E45          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F970
-2F971         ; mapped                 ; 4334          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F971
-2F972         ; mapped                 ; 26228         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F972
-2F973         ; mapped                 ; 26247         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F973
-2F974         ; mapped                 ; 4359          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F974
-2F975         ; mapped                 ; 262D9         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F975
-2F976         ; mapped                 ; 7F7A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F976
-2F977         ; mapped                 ; 2633E         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F977
-2F978         ; mapped                 ; 7F95          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F978
-2F979         ; mapped                 ; 7FFA          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F979
-2F97A         ; mapped                 ; 8005          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F97A
-2F97B         ; mapped                 ; 264DA         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F97B
-2F97C         ; mapped                 ; 26523         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F97C
-2F97D         ; mapped                 ; 8060          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F97D
-2F97E         ; mapped                 ; 265A8         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F97E
-2F97F         ; mapped                 ; 8070          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F97F
-2F980         ; mapped                 ; 2335F         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F980
-2F981         ; mapped                 ; 43D5          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F981
-2F982         ; mapped                 ; 80B2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F982
-2F983         ; mapped                 ; 8103          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F983
-2F984         ; mapped                 ; 440B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F984
-2F985         ; mapped                 ; 813E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F985
-2F986         ; mapped                 ; 5AB5          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F986
-2F987         ; mapped                 ; 267A7         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F987
-2F988         ; mapped                 ; 267B5         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F988
-2F989         ; mapped                 ; 23393         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F989
-2F98A         ; mapped                 ; 2339C         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F98A
-2F98B         ; mapped                 ; 8201          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F98B
-2F98C         ; mapped                 ; 8204          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F98C
-2F98D         ; mapped                 ; 8F9E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F98D
-2F98E         ; mapped                 ; 446B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F98E
-2F98F         ; mapped                 ; 8291          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F98F
-2F990         ; mapped                 ; 828B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F990
-2F991         ; mapped                 ; 829D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F991
-2F992         ; mapped                 ; 52B3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F992
-2F993         ; mapped                 ; 82B1          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F993
-2F994         ; mapped                 ; 82B3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F994
-2F995         ; mapped                 ; 82BD          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F995
-2F996         ; mapped                 ; 82E6          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F996
-2F997         ; mapped                 ; 26B3C         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F997
-2F998         ; mapped                 ; 82E5          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F998
-2F999         ; mapped                 ; 831D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F999
-2F99A         ; mapped                 ; 8363          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F99A
-2F99B         ; mapped                 ; 83AD          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F99B
-2F99C         ; mapped                 ; 8323          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F99C
-2F99D         ; mapped                 ; 83BD          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F99D
-2F99E         ; mapped                 ; 83E7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F99E
-2F99F         ; mapped                 ; 8457          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F99F
-2F9A0         ; mapped                 ; 8353          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9A0
-2F9A1         ; mapped                 ; 83CA          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9A1
-2F9A2         ; mapped                 ; 83CC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9A2
-2F9A3         ; mapped                 ; 83DC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9A3
-2F9A4         ; mapped                 ; 26C36         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9A4
-2F9A5         ; mapped                 ; 26D6B         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9A5
-2F9A6         ; mapped                 ; 26CD5         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9A6
-2F9A7         ; mapped                 ; 452B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9A7
-2F9A8         ; mapped                 ; 84F1          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9A8
-2F9A9         ; mapped                 ; 84F3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9A9
-2F9AA         ; mapped                 ; 8516          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9AA
-2F9AB         ; mapped                 ; 273CA         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9AB
-2F9AC         ; mapped                 ; 8564          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9AC
-2F9AD         ; mapped                 ; 26F2C         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9AD
-2F9AE         ; mapped                 ; 455D          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9AE
-2F9AF         ; mapped                 ; 4561          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9AF
-2F9B0         ; mapped                 ; 26FB1         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9B0
-2F9B1         ; mapped                 ; 270D2         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9B1
-2F9B2         ; mapped                 ; 456B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9B2
-2F9B3         ; mapped                 ; 8650          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9B3
-2F9B4         ; mapped                 ; 865C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9B4
-2F9B5         ; mapped                 ; 8667          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9B5
-2F9B6         ; mapped                 ; 8669          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9B6
-2F9B7         ; mapped                 ; 86A9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9B7
-2F9B8         ; mapped                 ; 8688          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9B8
-2F9B9         ; mapped                 ; 870E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9B9
-2F9BA         ; mapped                 ; 86E2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9BA
-2F9BB         ; mapped                 ; 8779          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9BB
-2F9BC         ; mapped                 ; 8728          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9BC
-2F9BD         ; mapped                 ; 876B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9BD
-2F9BE         ; mapped                 ; 8786          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9BE
-2F9BF         ; disallowed                             # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9BF
-2F9C0         ; mapped                 ; 87E1          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9C0
-2F9C1         ; mapped                 ; 8801          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9C1
-2F9C2         ; mapped                 ; 45F9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9C2
-2F9C3         ; mapped                 ; 8860          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9C3
-2F9C4         ; mapped                 ; 8863          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9C4
-2F9C5         ; mapped                 ; 27667         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9C5
-2F9C6         ; mapped                 ; 88D7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9C6
-2F9C7         ; mapped                 ; 88DE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9C7
-2F9C8         ; mapped                 ; 4635          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9C8
-2F9C9         ; mapped                 ; 88FA          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9C9
-2F9CA         ; mapped                 ; 34BB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9CA
-2F9CB         ; mapped                 ; 278AE         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9CB
-2F9CC         ; mapped                 ; 27966         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9CC
-2F9CD         ; mapped                 ; 46BE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9CD
-2F9CE         ; mapped                 ; 46C7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9CE
-2F9CF         ; mapped                 ; 8AA0          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9CF
-2F9D0         ; mapped                 ; 8AED          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9D0
-2F9D1         ; mapped                 ; 8B8A          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9D1
-2F9D2         ; mapped                 ; 8C55          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9D2
-2F9D3         ; mapped                 ; 27CA8         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9D3
-2F9D4         ; mapped                 ; 8CAB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9D4
-2F9D5         ; mapped                 ; 8CC1          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9D5
-2F9D6         ; mapped                 ; 8D1B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9D6
-2F9D7         ; mapped                 ; 8D77          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9D7
-2F9D8         ; mapped                 ; 27F2F         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9D8
-2F9D9         ; mapped                 ; 20804         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9D9
-2F9DA         ; mapped                 ; 8DCB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9DA
-2F9DB         ; mapped                 ; 8DBC          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9DB
-2F9DC         ; mapped                 ; 8DF0          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9DC
-2F9DD         ; mapped                 ; 208DE         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9DD
-2F9DE         ; mapped                 ; 8ED4          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9DE
-2F9DF         ; mapped                 ; 8F38          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9DF
-2F9E0         ; mapped                 ; 285D2         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9E0
-2F9E1         ; mapped                 ; 285ED         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9E1
-2F9E2         ; mapped                 ; 9094          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9E2
-2F9E3         ; mapped                 ; 90F1          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9E3
-2F9E4         ; mapped                 ; 9111          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9E4
-2F9E5         ; mapped                 ; 2872E         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9E5
-2F9E6         ; mapped                 ; 911B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9E6
-2F9E7         ; mapped                 ; 9238          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9E7
-2F9E8         ; mapped                 ; 92D7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9E8
-2F9E9         ; mapped                 ; 92D8          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9E9
-2F9EA         ; mapped                 ; 927C          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9EA
-2F9EB         ; mapped                 ; 93F9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9EB
-2F9EC         ; mapped                 ; 9415          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9EC
-2F9ED         ; mapped                 ; 28BFA         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9ED
-2F9EE         ; mapped                 ; 958B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9EE
-2F9EF         ; mapped                 ; 4995          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9EF
-2F9F0         ; mapped                 ; 95B7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9F0
-2F9F1         ; mapped                 ; 28D77         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9F1
-2F9F2         ; mapped                 ; 49E6          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9F2
-2F9F3         ; mapped                 ; 96C3          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9F3
-2F9F4         ; mapped                 ; 5DB2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9F4
-2F9F5         ; mapped                 ; 9723          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9F5
-2F9F6         ; mapped                 ; 29145         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9F6
-2F9F7         ; mapped                 ; 2921A         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9F7
-2F9F8         ; mapped                 ; 4A6E          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9F8
-2F9F9         ; mapped                 ; 4A76          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9F9
-2F9FA         ; mapped                 ; 97E0          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9FA
-2F9FB         ; mapped                 ; 2940A         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9FB
-2F9FC         ; mapped                 ; 4AB2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9FC
-2F9FD         ; mapped                 ; 29496         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9FD
-2F9FE..2F9FF  ; mapped                 ; 980B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2F9FE..CJK COMPATIBILITY IDEOGRAPH-2F9FF
-2FA00         ; mapped                 ; 9829          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA00
-2FA01         ; mapped                 ; 295B6         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA01
-2FA02         ; mapped                 ; 98E2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA02
-2FA03         ; mapped                 ; 4B33          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA03
-2FA04         ; mapped                 ; 9929          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA04
-2FA05         ; mapped                 ; 99A7          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA05
-2FA06         ; mapped                 ; 99C2          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA06
-2FA07         ; mapped                 ; 99FE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA07
-2FA08         ; mapped                 ; 4BCE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA08
-2FA09         ; mapped                 ; 29B30         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA09
-2FA0A         ; mapped                 ; 9B12          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA0A
-2FA0B         ; mapped                 ; 9C40          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA0B
-2FA0C         ; mapped                 ; 9CFD          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA0C
-2FA0D         ; mapped                 ; 4CCE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA0D
-2FA0E         ; mapped                 ; 4CED          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA0E
-2FA0F         ; mapped                 ; 9D67          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA0F
-2FA10         ; mapped                 ; 2A0CE         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA10
-2FA11         ; mapped                 ; 4CF8          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA11
-2FA12         ; mapped                 ; 2A105         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA12
-2FA13         ; mapped                 ; 2A20E         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA13
-2FA14         ; mapped                 ; 2A291         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA14
-2FA15         ; mapped                 ; 9EBB          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA15
-2FA16         ; mapped                 ; 4D56          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA16
-2FA17         ; mapped                 ; 9EF9          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA17
-2FA18         ; mapped                 ; 9EFE          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA18
-2FA19         ; mapped                 ; 9F05          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA19
-2FA1A         ; mapped                 ; 9F0F          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA1A
-2FA1B         ; mapped                 ; 9F16          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA1B
-2FA1C         ; mapped                 ; 9F3B          # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA1C
-2FA1D         ; mapped                 ; 2A600         # 3.1  CJK COMPATIBILITY IDEOGRAPH-2FA1D
-2FA1E..2FFFD  ; disallowed                             # NA   <reserved-2FA1E>..<reserved-2FFFD>
-2FFFE..2FFFF  ; disallowed                             # 2.0  <noncharacter-2FFFE>..<noncharacter-2FFFF>
-30000..3134A  ; valid                                  # 13.0 CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
-3134B..3FFFD  ; disallowed                             # NA   <reserved-3134B>..<reserved-3FFFD>
-3FFFE..3FFFF  ; disallowed                             # 2.0  <noncharacter-3FFFE>..<noncharacter-3FFFF>
-40000..4FFFD  ; disallowed                             # NA   <reserved-40000>..<reserved-4FFFD>
-4FFFE..4FFFF  ; disallowed                             # 2.0  <noncharacter-4FFFE>..<noncharacter-4FFFF>
-50000..5FFFD  ; disallowed                             # NA   <reserved-50000>..<reserved-5FFFD>
-5FFFE..5FFFF  ; disallowed                             # 2.0  <noncharacter-5FFFE>..<noncharacter-5FFFF>
-60000..6FFFD  ; disallowed                             # NA   <reserved-60000>..<reserved-6FFFD>
-6FFFE..6FFFF  ; disallowed                             # 2.0  <noncharacter-6FFFE>..<noncharacter-6FFFF>
-70000..7FFFD  ; disallowed                             # NA   <reserved-70000>..<reserved-7FFFD>
-7FFFE..7FFFF  ; disallowed                             # 2.0  <noncharacter-7FFFE>..<noncharacter-7FFFF>
-80000..8FFFD  ; disallowed                             # NA   <reserved-80000>..<reserved-8FFFD>
-8FFFE..8FFFF  ; disallowed                             # 2.0  <noncharacter-8FFFE>..<noncharacter-8FFFF>
-90000..9FFFD  ; disallowed                             # NA   <reserved-90000>..<reserved-9FFFD>
-9FFFE..9FFFF  ; disallowed                             # 2.0  <noncharacter-9FFFE>..<noncharacter-9FFFF>
-A0000..AFFFD  ; disallowed                             # NA   <reserved-A0000>..<reserved-AFFFD>
-AFFFE..AFFFF  ; disallowed                             # 2.0  <noncharacter-AFFFE>..<noncharacter-AFFFF>
-B0000..BFFFD  ; disallowed                             # NA   <reserved-B0000>..<reserved-BFFFD>
-BFFFE..BFFFF  ; disallowed                             # 2.0  <noncharacter-BFFFE>..<noncharacter-BFFFF>
-C0000..CFFFD  ; disallowed                             # NA   <reserved-C0000>..<reserved-CFFFD>
-CFFFE..CFFFF  ; disallowed                             # 2.0  <noncharacter-CFFFE>..<noncharacter-CFFFF>
-D0000..DFFFD  ; disallowed                             # NA   <reserved-D0000>..<reserved-DFFFD>
-DFFFE..DFFFF  ; disallowed                             # 2.0  <noncharacter-DFFFE>..<noncharacter-DFFFF>
-E0000         ; disallowed                             # NA   <reserved-E0000>
-E0001         ; disallowed                             # 3.1  LANGUAGE TAG
-E0002..E001F  ; disallowed                             # NA   <reserved-E0002>..<reserved-E001F>
-E0020..E007F  ; disallowed                             # 3.1  TAG SPACE..CANCEL TAG
-E0080..E00FF  ; disallowed                             # NA   <reserved-E0080>..<reserved-E00FF>
-E0100..E01EF  ; ignored                                # 4.0  VARIATION SELECTOR-17..VARIATION SELECTOR-256
-E01F0..EFFFD  ; disallowed                             # NA   <reserved-E01F0>..<reserved-EFFFD>
-EFFFE..EFFFF  ; disallowed                             # 2.0  <noncharacter-EFFFE>..<noncharacter-EFFFF>
-F0000..FFFFD  ; disallowed                             # 2.0  <private-use-F0000>..<private-use-FFFFD>
-FFFFE..FFFFF  ; disallowed                             # 2.0  <noncharacter-FFFFE>..<noncharacter-FFFFF>
-100000..10FFFD; disallowed                             # 2.0  <private-use-100000>..<private-use-10FFFD>
-10FFFE..10FFFF; disallowed                             # 2.0  <noncharacter-10FFFE>..<noncharacter-10FFFF>
-
-# Total code points: 1114112
-
diff --git a/vendor/idna/src/deprecated.rs b/vendor/idna/src/deprecated.rs
new file mode 100644
index 00000000..dd1a5520
--- /dev/null
+++ b/vendor/idna/src/deprecated.rs
@@ -0,0 +1,248 @@
+// Copyright 2013-2014 The rust-url developers.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Deprecated API for [*Unicode IDNA Compatibility Processing*
+//! (Unicode Technical Standard #46)](http://www.unicode.org/reports/tr46/)
+
+#![allow(deprecated)]
+
+use alloc::borrow::Cow;
+use alloc::string::String;
+
+use crate::uts46::*;
+use crate::Errors;
+
+/// Performs preprocessing equivalent to UTS 46 transitional processing
+/// if `transitional` is `true`. If `transitional` is `false`, merely
+/// lets the input pass through as-is (for call site convenience).
+///
+/// The output of this function is to be passed to [`Uts46::process`].
+fn map_transitional(domain: &str, transitional: bool) -> Cow<'_, str> {
+    if !transitional {
+        return Cow::Borrowed(domain);
+    }
+    let mut chars = domain.chars();
+    loop {
+        let prev = chars.clone();
+        if let Some(c) = chars.next() {
+            match c {
+                'ß' | 'ẞ' | 'ς' | '\u{200C}' | '\u{200D}' => {
+                    let mut s = String::with_capacity(domain.len());
+                    let tail = prev.as_str();
+                    let head = &domain[..domain.len() - tail.len()];
+                    s.push_str(head);
+                    for c in tail.chars() {
+                        match c {
+                            'ß' | 'ẞ' => {
+                                s.push_str("ss");
+                            }
+                            'ς' => {
+                                s.push('σ');
+                            }
+                            '\u{200C}' | '\u{200D}' => {}
+                            _ => {
+                                s.push(c);
+                            }
+                        }
+                    }
+                    return Cow::Owned(s);
+                }
+                _ => {}
+            }
+        } else {
+            break;
+        }
+    }
+    Cow::Borrowed(domain)
+}
+
+/// Deprecated. Use the crate-top-level functions or [`Uts46`].
+#[derive(Default)]
+#[deprecated]
+pub struct Idna {
+    config: Config,
+}
+
+impl Idna {
+    pub fn new(config: Config) -> Self {
+        Self { config }
+    }
+
+    /// [UTS 46 ToASCII](http://www.unicode.org/reports/tr46/#ToASCII)
+    #[allow(clippy::wrong_self_convention)] // Retain old weirdness in deprecated API
+    pub fn to_ascii(&mut self, domain: &str, out: &mut String) -> Result<(), Errors> {
+        let mapped = map_transitional(domain, self.config.transitional_processing);
+        match Uts46::new().process(
+            mapped.as_bytes(),
+            self.config.deny_list(),
+            self.config.hyphens(),
+            ErrorPolicy::FailFast, // Old code did not appear to expect the output to be useful in the error case.
+            |_, _, _| false,
+            out,
+            None,
+        ) {
+            Ok(ProcessingSuccess::Passthrough) => {
+                if self.config.verify_dns_length && !verify_dns_length(&mapped, true) {
+                    return Err(crate::Errors::default());
+                }
+                out.push_str(&mapped);
+                Ok(())
+            }
+            Ok(ProcessingSuccess::WroteToSink) => {
+                if self.config.verify_dns_length && !verify_dns_length(out, true) {
+                    return Err(crate::Errors::default());
+                }
+                Ok(())
+            }
+            Err(ProcessingError::ValidityError) => Err(crate::Errors::default()),
+            Err(ProcessingError::SinkError) => unreachable!(),
+        }
+    }
+
+    /// [UTS 46 ToUnicode](http://www.unicode.org/reports/tr46/#ToUnicode)
+    #[allow(clippy::wrong_self_convention)] // Retain old weirdness in deprecated API
+    pub fn to_unicode(&mut self, domain: &str, out: &mut String) -> Result<(), Errors> {
+        let mapped = map_transitional(domain, self.config.transitional_processing);
+        match Uts46::new().process(
+            mapped.as_bytes(),
+            self.config.deny_list(),
+            self.config.hyphens(),
+            ErrorPolicy::MarkErrors,
+            |_, _, _| true,
+            out,
+            None,
+        ) {
+            Ok(ProcessingSuccess::Passthrough) => {
+                out.push_str(&mapped);
+                Ok(())
+            }
+            Ok(ProcessingSuccess::WroteToSink) => Ok(()),
+            Err(ProcessingError::ValidityError) => Err(crate::Errors::default()),
+            Err(ProcessingError::SinkError) => unreachable!(),
+        }
+    }
+}
+
+/// Deprecated configuration API.
+#[derive(Clone, Copy)]
+#[must_use]
+#[deprecated]
+pub struct Config {
+    use_std3_ascii_rules: bool,
+    transitional_processing: bool,
+    verify_dns_length: bool,
+    check_hyphens: bool,
+}
+
+/// The defaults are that of _beStrict=false_ in the [WHATWG URL Standard](https://url.spec.whatwg.org/#idna)
+impl Default for Config {
+    fn default() -> Self {
+        Self {
+            use_std3_ascii_rules: false,
+            transitional_processing: false,
+            check_hyphens: false,
+            // Only use for to_ascii, not to_unicode
+            verify_dns_length: false,
+        }
+    }
+}
+
+impl Config {
+    /// Whether to enforce STD3 or WHATWG URL Standard ASCII deny list.
+    ///
+    /// `true` for STD3, `false` for no deny list.
+    ///
+    /// Note that `true` rejects pseudo-hosts used by various TXT record-based protocols.
+    #[inline]
+    pub fn use_std3_ascii_rules(mut self, value: bool) -> Self {
+        self.use_std3_ascii_rules = value;
+        self
+    }
+
+    /// Whether to enable (deprecated) transitional processing.
+    ///
+    /// Note that Firefox, Safari, and Chrome do not use transitional
+    /// processing.
+    #[inline]
+    pub fn transitional_processing(mut self, value: bool) -> Self {
+        self.transitional_processing = value;
+        self
+    }
+
+    /// Whether the _VerifyDNSLength_ operation should be performed
+    /// by `to_ascii`.
+    ///
+    /// For compatibility with previous behavior, even when set to `true`,
+    /// the trailing root label dot is allowed contrary to the spec.
+    #[inline]
+    pub fn verify_dns_length(mut self, value: bool) -> Self {
+        self.verify_dns_length = value;
+        self
+    }
+
+    /// Whether to enforce STD3 rules for hyphen placement.
+    ///
+    /// `true` to deny hyphens in the first and last positions.
+    /// `false` to not enforce hyphen placement.
+    ///
+    /// Note that for backward compatibility this is not the same as
+    /// UTS 46 _CheckHyphens_, which also disallows hyphens in the
+    /// third and fourth positions.
+    ///
+    /// Note that `true` rejects real-world names, including some GitHub user pages.
+    #[inline]
+    pub fn check_hyphens(mut self, value: bool) -> Self {
+        self.check_hyphens = value;
+        self
+    }
+
+    /// Obsolete method retained to ease migration. The argument must be `false`.
+    ///
+    /// Panics
+    ///
+    /// If the argument is `true`.
+    #[inline]
+    #[allow(unused_mut)]
+    pub fn use_idna_2008_rules(mut self, value: bool) -> Self {
+        assert!(!value, "IDNA 2008 rules are no longer supported");
+        self
+    }
+
+    /// Compute the deny list
+    fn deny_list(&self) -> AsciiDenyList {
+        if self.use_std3_ascii_rules {
+            AsciiDenyList::STD3
+        } else {
+            AsciiDenyList::EMPTY
+        }
+    }
+
+    /// Compute the hyphen mode
+    fn hyphens(&self) -> Hyphens {
+        if self.check_hyphens {
+            Hyphens::CheckFirstLast
+        } else {
+            Hyphens::Allow
+        }
+    }
+
+    /// [UTS 46 ToASCII](http://www.unicode.org/reports/tr46/#ToASCII)
+    pub fn to_ascii(self, domain: &str) -> Result<String, Errors> {
+        let mut result = String::with_capacity(domain.len());
+        let mut codec = Idna::new(self);
+        codec.to_ascii(domain, &mut result).map(|()| result)
+    }
+
+    /// [UTS 46 ToUnicode](http://www.unicode.org/reports/tr46/#ToUnicode)
+    pub fn to_unicode(self, domain: &str) -> (String, Result<(), Errors>) {
+        let mut codec = Idna::new(self);
+        let mut out = String::with_capacity(domain.len());
+        let result = codec.to_unicode(domain, &mut out);
+        (out, result)
+    }
+}
diff --git a/vendor/idna/src/lib.rs b/vendor/idna/src/lib.rs
index 92914f9b..0730ec6b 100644
--- a/vendor/idna/src/lib.rs
+++ b/vendor/idna/src/lib.rs
@@ -42,45 +42,157 @@ extern crate alloc;
 #[cfg(not(feature = "alloc"))]
 compile_error!("the `alloc` feature must be enabled");
 
-#[cfg(test)]
-#[macro_use]
-extern crate assert_matches;
+// Avoid a breaking change if in the future there's a use case for
+// having a Bring-Your-Own-ICU4X-Data constructor for `Uts46` and
+// not also having compiled data in the binary.
+#[cfg(not(feature = "compiled_data"))]
+compile_error!("the `compiled_data` feature must be enabled");
 
+use alloc::borrow::Cow;
 use alloc::string::String;
+pub use uts46::AsciiDenyList;
+use uts46::Uts46;
 
+mod deprecated;
 pub mod punycode;
-mod uts46;
+pub mod uts46;
 
-pub use crate::uts46::{Config, Errors, Idna};
+#[allow(deprecated)]
+pub use crate::deprecated::{Config, Idna};
 
-/// The [domain to ASCII](https://url.spec.whatwg.org/#concept-domain-to-ascii) algorithm.
+/// Type indicating that there were errors during UTS #46 processing.
+#[derive(Default, Debug)]
+#[non_exhaustive]
+pub struct Errors {}
+
+impl From<Errors> for Result<(), Errors> {
+    fn from(e: Errors) -> Self {
+        Err(e)
+    }
+}
+
+#[cfg(feature = "std")]
+impl std::error::Error for Errors {}
+
+#[cfg(not(feature = "std"))]
+impl core::error::Error for Errors {}
+
+impl core::fmt::Display for Errors {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        core::fmt::Debug::fmt(self, f)
+    }
+}
+
+/// The [domain to ASCII](https://url.spec.whatwg.org/#concept-domain-to-ascii) algorithm;
+/// version returning a `Cow`.
+///
+/// Most applications should be using this function or `domain_to_ascii_from_cow` rather
+/// than the sibling functions, and most applications should pass [`AsciiDenyList::URL`] as
+/// the second argument. Passing [`AsciiDenyList::URL`] as the second argument makes this function also
+/// perform the [forbidden domain code point](https://url.spec.whatwg.org/#forbidden-domain-code-point)
+/// check in addition to the [domain to ASCII](https://url.spec.whatwg.org/#concept-domain-to-ascii)
+/// algorithm.
+///
+/// Returns the ASCII representation a domain name,
+/// normalizing characters (upper-case to lower-case and other kinds of equivalence)
+/// and using Punycode as necessary.
+///
+/// This process may fail.
+///
+/// If you have a `&str` instead of `&[u8]`, just call `.as_bytes()` on it before
+/// passing it to this function. It's still preferable to use this function over
+/// the sibling functions that take `&str`.
+pub fn domain_to_ascii_cow(
+    domain: &[u8],
+    ascii_deny_list: AsciiDenyList,
+) -> Result<Cow<'_, str>, Errors> {
+    Uts46::new().to_ascii(
+        domain,
+        ascii_deny_list,
+        uts46::Hyphens::Allow,
+        uts46::DnsLength::Ignore,
+    )
+}
+
+/// The [domain to ASCII](https://url.spec.whatwg.org/#concept-domain-to-ascii) algorithm;
+/// version accepting and returning a `Cow`.
+///
+/// Most applications should be using this function or `domain_to_ascii_cow` rather
+/// than the sibling functions, and most applications should pass [`AsciiDenyList::URL`] as
+/// the second argument. Passing [`AsciiDenyList::URL`] as the second argument makes this function also
+/// perform the [forbidden domain code point](https://url.spec.whatwg.org/#forbidden-domain-code-point)
+/// check in addition to the [domain to ASCII](https://url.spec.whatwg.org/#concept-domain-to-ascii)
+/// algorithm.
+///
+/// Return the ASCII representation a domain name,
+/// normalizing characters (upper-case to lower-case and other kinds of equivalence)
+/// and using Punycode as necessary.
+///
+/// This process may fail.
+pub fn domain_to_ascii_from_cow(
+    domain: Cow<'_, [u8]>,
+    ascii_deny_list: AsciiDenyList,
+) -> Result<Cow<'_, str>, Errors> {
+    Uts46::new().to_ascii_from_cow(
+        domain,
+        ascii_deny_list,
+        uts46::Hyphens::Allow,
+        uts46::DnsLength::Ignore,
+    )
+}
+
+/// The [domain to ASCII](https://url.spec.whatwg.org/#concept-domain-to-ascii) algorithm;
+/// version returning `String` and no ASCII deny list (i.e. _UseSTD3ASCIIRules=false_).
+///
+/// This function exists for backward-compatibility. Consider using [`domain_to_ascii_cow`]
+/// instead.
 ///
 /// Return the ASCII representation a domain name,
 /// normalizing characters (upper-case to lower-case and other kinds of equivalence)
 /// and using Punycode as necessary.
 ///
 /// This process may fail.
-pub fn domain_to_ascii(domain: &str) -> Result<String, uts46::Errors> {
-    Config::default().to_ascii(domain)
+pub fn domain_to_ascii(domain: &str) -> Result<String, Errors> {
+    domain_to_ascii_cow(domain.as_bytes(), AsciiDenyList::EMPTY).map(|cow| cow.into_owned())
 }
 
 /// The [domain to ASCII](https://url.spec.whatwg.org/#concept-domain-to-ascii) algorithm,
 /// with the `beStrict` flag set.
-pub fn domain_to_ascii_strict(domain: &str) -> Result<String, uts46::Errors> {
-    Config::default()
-        .use_std3_ascii_rules(true)
-        .verify_dns_length(true)
-        .to_ascii(domain)
+///
+/// Note that this rejects various real-world names including:
+/// * YouTube CDN nodes
+/// * Some GitHub user pages
+/// * Pseudo-hosts used by various TXT record-based protocols.
+pub fn domain_to_ascii_strict(domain: &str) -> Result<String, Errors> {
+    Uts46::new()
+        .to_ascii(
+            domain.as_bytes(),
+            uts46::AsciiDenyList::STD3,
+            uts46::Hyphens::Check,
+            uts46::DnsLength::Verify,
+        )
+        .map(|cow| cow.into_owned())
 }
 
-/// The [domain to Unicode](https://url.spec.whatwg.org/#concept-domain-to-unicode) algorithm.
+/// The [domain to Unicode](https://url.spec.whatwg.org/#concept-domain-to-unicode) algorithm;
+/// version returning `String` and no ASCII deny list (i.e. _UseSTD3ASCIIRules=false_).
+///
+/// This function exists for backward-compatibility. Consider using [`Uts46::to_user_interface`]
+/// or [`Uts46::to_unicode`].
 ///
 /// Return the Unicode representation of a domain name,
 /// normalizing characters (upper-case to lower-case and other kinds of equivalence)
 /// and decoding Punycode as necessary.
 ///
-/// This may indicate [syntax violations](https://url.spec.whatwg.org/#syntax-violation)
-/// but always returns a string for the mapped domain.
-pub fn domain_to_unicode(domain: &str) -> (String, Result<(), uts46::Errors>) {
-    Config::default().to_unicode(domain)
+/// If the second item of the tuple indicates an error, the first item of the tuple
+/// denotes errors using the REPLACEMENT CHARACTERs in order to be able to illustrate
+/// errors to the user. When the second item of the return tuple signals an error,
+/// the first item of the tuple must not be used in a network protocol.
+pub fn domain_to_unicode(domain: &str) -> (String, Result<(), Errors>) {
+    let (cow, result) = Uts46::new().to_unicode(
+        domain.as_bytes(),
+        uts46::AsciiDenyList::EMPTY,
+        uts46::Hyphens::Allow,
+    );
+    (cow.into_owned(), result)
 }
diff --git a/vendor/idna/src/make_uts46_mapping_table.py b/vendor/idna/src/make_uts46_mapping_table.py
deleted file mode 100644
index 4f72bbd0..00000000
--- a/vendor/idna/src/make_uts46_mapping_table.py
+++ /dev/null
@@ -1,185 +0,0 @@
-# Copyright 2013-2014 The rust-url developers.
-#
-# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-# option. This file may not be copied, modified, or distributed
-# except according to those terms.
-
-# Run as: python make_uts46_mapping_table.py IdnaMappingTable.txt > uts46_mapping_table.rs
-# You can get the latest idna table from
-# http://www.unicode.org/Public/idna/latest/IdnaMappingTable.txt
-
-import collections
-import itertools
-
-print('''\
-// Copyright 2013-2020 The rust-url developers.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// Generated by make_idna_table.py
-''')
-
-txt = open("IdnaMappingTable.txt")
-
-def escape_char(c):
-    return "\\u{%x}" % ord(c[0])
-
-def char(s):
-    return chr(int(s, 16))
-
-strtab = collections.OrderedDict()
-strtab_offset = 0
-
-def strtab_slice(s):
-    global strtab, strtab_offset
-
-    if s in strtab:
-        return strtab[s]
-    else:
-        utf8_len = len(s.encode('utf8'))
-        c = (strtab_offset, utf8_len)
-        strtab[s] = c
-        strtab_offset += utf8_len
-        return c
-
-def rust_slice(s):
-    start = s[0]
-    length = s[1]
-    start_lo = start & 0xff
-    start_hi = start >> 8
-    assert length <= 255
-    assert start_hi <= 255
-    return "(StringTableSlice { byte_start_lo: %d, byte_start_hi: %d, byte_len: %d })" % (start_lo, start_hi, length)
-
-ranges = []
-
-for line in txt:
-    # remove comments
-    line, _, _ = line.partition('#')
-    # skip empty lines
-    if len(line.strip()) == 0:
-        continue
-    fields = line.split(';')
-    if fields[0].strip() == 'D800..DFFF':
-        continue  # Surrogates don't occur in Rust strings.
-    first, _, last = fields[0].strip().partition('..')
-    if not last:
-        last = first
-    mapping = fields[1].strip().replace('_', ' ').title().replace(' ', '')
-    unicode_str = None
-    if len(fields) > 2:
-        if fields[2].strip():
-            unicode_str = u''.join(char(c) for c in fields[2].strip().split(' '))
-        elif mapping == "Deviation":
-            unicode_str = u''
-
-    if len(fields) > 3:
-        assert fields[3].strip() in ('NV8', 'XV8'), fields[3]
-        assert mapping == 'Valid', mapping
-        mapping = 'DisallowedIdna2008'
-
-    ranges.append((first, last, mapping, unicode_str))
-
-def mergeable_key(r):
-    mapping = r[2]
-
-    # These types have associated data, so we should not merge them.
-    if mapping in ('Mapped', 'Deviation', 'DisallowedStd3Mapped'):
-        return r
-    assert mapping in ('Valid', 'Ignored', 'Disallowed', 'DisallowedStd3Valid', 'DisallowedIdna2008')
-    return mapping
-
-grouped_ranges = itertools.groupby(ranges, key=mergeable_key)
-
-optimized_ranges = []
-
-for (k, g) in grouped_ranges:
-    group = list(g)
-    if len(group) == 1:
-        optimized_ranges.append(group[0])
-        continue
-    # Assert that nothing in the group has an associated unicode string.
-    for g in group:
-        if g[3] is not None and len(g[3]) > 2:
-            assert not g[3][2].strip()
-    # Assert that consecutive members of the group don't leave gaps in
-    # the codepoint space.
-    a, b = itertools.tee(group)
-    next(b, None)
-    for (g1, g2) in zip(a, b):
-        last_char = int(g1[1], 16)
-        next_char = int(g2[0], 16)
-        if last_char + 1 == next_char:
-            continue
-        # There's a gap where surrogates would appear, but we don't have to
-        # worry about that gap, as surrogates never appear in Rust strings.
-        # Assert we're seeing the surrogate case here.
-        assert last_char == 0xd7ff
-        assert next_char == 0xe000
-    optimized_ranges.append((group[0][0], group[-1][1]) + group[0][2:])
-
-def is_single_char_range(r):
-    (first, last, _, _) = r
-    return first == last
-
-# We can reduce the size of the character range table and the index table to about 1/4
-# by merging runs of single character ranges and using character offsets from the start
-# of that range to retrieve the correct `Mapping` value
-def merge_single_char_ranges(ranges):
-    current = []
-    for r in ranges:
-        if not current or is_single_char_range(current[-1]) and is_single_char_range(r):
-            current.append(r)
-            continue
-        if len(current) != 0:
-            ret = current
-            current = [r]
-            yield ret
-            continue
-        current.append(r)
-        ret = current
-        current = []
-        yield ret
-    yield current
-
-optimized_ranges = list(merge_single_char_ranges(optimized_ranges))
-
-SINGLE_MARKER = 1 << 15
-
-print("static TABLE: &[(char, u16)] = &[")
-
-offset = 0
-for ranges in optimized_ranges:
-    assert offset < SINGLE_MARKER
-
-    block_len = len(ranges)
-    single = SINGLE_MARKER if block_len == 1 else 0
-    index = offset | single
-    offset += block_len
-
-    start = escape_char(char(ranges[0][0]))
-    print("    ('%s', %s)," % (start, index))
-
-print("];\n")
-
-print("static MAPPING_TABLE: &[Mapping] = &[")
-
-for ranges in optimized_ranges:
-    for (first, last, mapping, unicode_str) in ranges:
-        if unicode_str is not None:
-            mapping += rust_slice(strtab_slice(unicode_str))
-        print("    %s," % mapping)
-
-print("];\n")
-
-def escape_str(s):
-    return [escape_char(c) for c in s]
-
-print("static STRING_TABLE: &str = \"%s\";"
-      % '\\\n  '.join(itertools.chain(*[escape_str(s) for s in strtab.keys()])))
diff --git a/vendor/idna/src/punycode.rs b/vendor/idna/src/punycode.rs
index b1afc96f..ff7b6ada 100644
--- a/vendor/idna/src/punycode.rs
+++ b/vendor/idna/src/punycode.rs
@@ -15,17 +15,17 @@
 
 use alloc::{string::String, vec::Vec};
 use core::char;
-use core::u32;
+use core::fmt::Write;
+use core::marker::PhantomData;
 
 // Bootstring parameters for Punycode
-static BASE: u32 = 36;
-static T_MIN: u32 = 1;
-static T_MAX: u32 = 26;
-static SKEW: u32 = 38;
-static DAMP: u32 = 700;
-static INITIAL_BIAS: u32 = 72;
-static INITIAL_N: u32 = 0x80;
-static DELIMITER: char = '-';
+const BASE: u32 = 36;
+const T_MIN: u32 = 1;
+const T_MAX: u32 = 26;
+const SKEW: u32 = 38;
+const DAMP: u32 = 700;
+const INITIAL_BIAS: u32 = 72;
+const INITIAL_N: u32 = 0x80;
 
 #[inline]
 fn adapt(mut delta: u32, num_points: u32, first_time: bool) -> u32 {
@@ -41,10 +41,17 @@ fn adapt(mut delta: u32, num_points: u32, first_time: bool) -> u32 {
 
 /// Convert Punycode to an Unicode `String`.
 ///
-/// This is a convenience wrapper around `decode`.
+/// Return None on malformed input or overflow.
+/// Overflow can only happen on inputs that take more than
+/// 63 encoded bytes, the DNS limit on domain name labels.
 #[inline]
 pub fn decode_to_string(input: &str) -> Option<String> {
-    decode(input).map(|chars| chars.into_iter().collect())
+    Some(
+        Decoder::default()
+            .decode::<u8, ExternalCaller>(input.as_bytes())
+            .ok()?
+            .collect(),
+    )
 }
 
 /// Convert Punycode to Unicode.
@@ -53,33 +60,130 @@ pub fn decode_to_string(input: &str) -> Option<String> {
 /// Overflow can only happen on inputs that take more than
 /// 63 encoded bytes, the DNS limit on domain name labels.
 pub fn decode(input: &str) -> Option<Vec<char>> {
-    Some(Decoder::default().decode(input).ok()?.collect())
+    Some(
+        Decoder::default()
+            .decode::<u8, ExternalCaller>(input.as_bytes())
+            .ok()?
+            .collect(),
+    )
+}
+
+/// Marker for internal vs. external caller to retain old API behavior
+/// while tweaking behavior for internal callers.
+///
+/// External callers need overflow checks when encoding, but internal
+/// callers don't, because `PUNYCODE_ENCODE_MAX_INPUT_LENGTH` is set
+/// to 1000, and per RFC 3492 section 6.4, the integer variable does
+/// not need to be able to represent values larger than
+/// (char::MAX - INITIAL_N) * (PUNYCODE_ENCODE_MAX_INPUT_LENGTH + 1),
+/// which is less than u32::MAX.
+///
+/// External callers need to handle upper-case ASCII when decoding,
+/// but internal callers don't, because the internal code calls the
+/// decoder only with lower-case inputs.
+pub(crate) trait PunycodeCaller {
+    const EXTERNAL_CALLER: bool;
+}
+
+pub(crate) struct InternalCaller;
+
+impl PunycodeCaller for InternalCaller {
+    const EXTERNAL_CALLER: bool = false;
+}
+
+struct ExternalCaller;
+
+impl PunycodeCaller for ExternalCaller {
+    const EXTERNAL_CALLER: bool = true;
+}
+
+pub(crate) trait PunycodeCodeUnit {
+    fn is_delimiter(&self) -> bool;
+    fn is_ascii(&self) -> bool;
+    fn digit(&self) -> Option<u32>;
+    fn char(&self) -> char;
+    fn char_ascii_lower_case(&self) -> char;
+}
+
+impl PunycodeCodeUnit for u8 {
+    fn is_delimiter(&self) -> bool {
+        *self == b'-'
+    }
+    fn is_ascii(&self) -> bool {
+        *self < 0x80
+    }
+    fn digit(&self) -> Option<u32> {
+        let byte = *self;
+        Some(match byte {
+            byte @ b'0'..=b'9' => byte - b'0' + 26,
+            byte @ b'A'..=b'Z' => byte - b'A',
+            byte @ b'a'..=b'z' => byte - b'a',
+            _ => return None,
+        } as u32)
+    }
+    fn char(&self) -> char {
+        char::from(*self)
+    }
+    fn char_ascii_lower_case(&self) -> char {
+        char::from(self.to_ascii_lowercase())
+    }
+}
+
+impl PunycodeCodeUnit for char {
+    fn is_delimiter(&self) -> bool {
+        *self == '-'
+    }
+    fn is_ascii(&self) -> bool {
+        debug_assert!(false); // Unused
+        true
+    }
+    fn digit(&self) -> Option<u32> {
+        let byte = *self;
+        Some(match byte {
+            byte @ '0'..='9' => u32::from(byte) - u32::from('0') + 26,
+            // byte @ 'A'..='Z' => u32::from(byte) - u32::from('A'), // XXX not needed if no public input
+            byte @ 'a'..='z' => u32::from(byte) - u32::from('a'),
+            _ => return None,
+        })
+    }
+    fn char(&self) -> char {
+        debug_assert!(false); // Unused
+        *self
+    }
+    fn char_ascii_lower_case(&self) -> char {
+        // No need to actually lower-case!
+        *self
+    }
 }
 
 #[derive(Default)]
 pub(crate) struct Decoder {
-    insertions: Vec<(usize, char)>,
+    insertions: smallvec::SmallVec<[(usize, char); 59]>,
 }
 
 impl Decoder {
     /// Split the input iterator and return a Vec with insertions of encoded characters
-    pub(crate) fn decode<'a>(&'a mut self, input: &'a str) -> Result<Decode<'a>, ()> {
+    pub(crate) fn decode<'a, T: PunycodeCodeUnit + Copy, C: PunycodeCaller>(
+        &'a mut self,
+        input: &'a [T],
+    ) -> Result<Decode<'a, T, C>, ()> {
         self.insertions.clear();
         // Handle "basic" (ASCII) code points.
         // They are encoded as-is before the last delimiter, if any.
-        let (base, input) = match input.rfind(DELIMITER) {
-            None => ("", input),
-            Some(position) => (
+        let (base, input) = if let Some(position) = input.iter().rposition(|c| c.is_delimiter()) {
+            (
                 &input[..position],
                 if position > 0 {
                     &input[position + 1..]
                 } else {
                     input
                 },
-            ),
+            )
+        } else {
+            (&input[..0], input)
         };
 
-        if !base.is_ascii() {
+        if C::EXTERNAL_CALLER && !base.iter().all(|c| c.is_ascii()) {
             return Err(());
         }
 
@@ -87,8 +191,8 @@ impl Decoder {
         let mut length = base_len as u32;
         let mut code_point = INITIAL_N;
         let mut bias = INITIAL_BIAS;
-        let mut i = 0;
-        let mut iter = input.bytes();
+        let mut i = 0u32;
+        let mut iter = input.iter();
         loop {
             let previous_i = i;
             let mut weight = 1;
@@ -101,16 +205,13 @@ impl Decoder {
             // Decode a generalized variable-length integer into delta,
             // which gets added to i.
             loop {
-                let digit = match byte {
-                    byte @ b'0'..=b'9' => byte - b'0' + 26,
-                    byte @ b'A'..=b'Z' => byte - b'A',
-                    byte @ b'a'..=b'z' => byte - b'a',
-                    _ => return Err(()),
-                } as u32;
-                if digit > (u32::MAX - i) / weight {
-                    return Err(()); // Overflow
-                }
-                i += digit * weight;
+                let digit = if let Some(digit) = byte.digit() {
+                    digit
+                } else {
+                    return Err(());
+                };
+                let product = digit.checked_mul(weight).ok_or(())?;
+                i = i.checked_add(product).ok_or(())?;
                 let t = if k <= bias {
                     T_MIN
                 } else if k >= bias + T_MAX {
@@ -121,10 +222,7 @@ impl Decoder {
                 if digit < t {
                     break;
                 }
-                if weight > u32::MAX / (BASE - t) {
-                    return Err(()); // Overflow
-                }
-                weight *= BASE - t;
+                weight = weight.checked_mul(BASE - t).ok_or(())?;
                 k += BASE;
                 byte = match iter.next() {
                     None => return Err(()), // End of input before the end of this delta
@@ -133,13 +231,10 @@ impl Decoder {
             }
 
             bias = adapt(i - previous_i, length + 1, previous_i == 0);
-            if i / (length + 1) > u32::MAX - code_point {
-                return Err(()); // Overflow
-            }
 
             // i was supposed to wrap around from length+1 to 0,
             // incrementing code_point each time.
-            code_point += i / (length + 1);
+            code_point = code_point.checked_add(i / (length + 1)).ok_or(())?;
             i %= length + 1;
             let c = match char::from_u32(code_point) {
                 Some(c) => c,
@@ -159,24 +254,30 @@ impl Decoder {
 
         self.insertions.sort_by_key(|(i, _)| *i);
         Ok(Decode {
-            base: base.chars(),
+            base: base.iter(),
             insertions: &self.insertions,
             inserted: 0,
             position: 0,
             len: base_len + self.insertions.len(),
+            phantom: PhantomData::<C>,
         })
     }
 }
 
-pub(crate) struct Decode<'a> {
-    base: core::str::Chars<'a>,
+pub(crate) struct Decode<'a, T, C>
+where
+    T: PunycodeCodeUnit + Copy,
+    C: PunycodeCaller,
+{
+    base: core::slice::Iter<'a, T>,
     pub(crate) insertions: &'a [(usize, char)],
     inserted: usize,
     position: usize,
     len: usize,
+    phantom: PhantomData<C>,
 }
 
-impl<'a> Iterator for Decode<'a> {
+impl<T: PunycodeCodeUnit + Copy, C: PunycodeCaller> Iterator for Decode<'_, T, C> {
     type Item = char;
 
     fn next(&mut self) -> Option<Self::Item> {
@@ -191,7 +292,11 @@ impl<'a> Iterator for Decode<'a> {
             }
             if let Some(c) = self.base.next() {
                 self.position += 1;
-                return Some(c);
+                return Some(if C::EXTERNAL_CALLER {
+                    c.char()
+                } else {
+                    c.char_ascii_lower_case()
+                });
             } else if self.inserted >= self.insertions.len() {
                 return None;
             }
@@ -204,7 +309,7 @@ impl<'a> Iterator for Decode<'a> {
     }
 }
 
-impl<'a> ExactSizeIterator for Decode<'a> {
+impl<T: PunycodeCodeUnit + Copy, C: PunycodeCaller> ExactSizeIterator for Decode<'_, T, C> {
     fn len(&self) -> usize {
         self.len - self.position
     }
@@ -219,7 +324,9 @@ pub fn encode_str(input: &str) -> Option<String> {
         return None;
     }
     let mut buf = String::with_capacity(input.len());
-    encode_into(input.chars(), &mut buf).ok().map(|()| buf)
+    encode_into::<_, _, ExternalCaller>(input.chars(), &mut buf)
+        .ok()
+        .map(|()| buf)
 }
 
 /// Convert Unicode to Punycode.
@@ -231,30 +338,58 @@ pub fn encode(input: &[char]) -> Option<String> {
         return None;
     }
     let mut buf = String::with_capacity(input.len());
-    encode_into(input.iter().copied(), &mut buf)
+    encode_into::<_, _, ExternalCaller>(input.iter().copied(), &mut buf)
         .ok()
         .map(|()| buf)
 }
 
-pub(crate) fn encode_into<I>(input: I, output: &mut String) -> Result<(), ()>
+pub(crate) enum PunycodeEncodeError {
+    Overflow,
+    Sink,
+}
+
+impl From<core::fmt::Error> for PunycodeEncodeError {
+    fn from(_: core::fmt::Error) -> Self {
+        Self::Sink
+    }
+}
+
+pub(crate) fn encode_into<I, W, C>(input: I, output: &mut W) -> Result<(), PunycodeEncodeError>
 where
     I: Iterator<Item = char> + Clone,
+    W: Write + ?Sized,
+    C: PunycodeCaller,
 {
     // Handle "basic" (ASCII) code points. They are encoded as-is.
     let (mut input_length, mut basic_length) = (0u32, 0);
     for c in input.clone() {
-        input_length = input_length.checked_add(1).ok_or(())?;
+        input_length = input_length
+            .checked_add(1)
+            .ok_or(PunycodeEncodeError::Overflow)?;
         if c.is_ascii() {
-            output.push(c);
+            output.write_char(c)?;
             basic_length += 1;
         }
     }
 
+    if !C::EXTERNAL_CALLER {
+        // We should never get an overflow here with the internal caller being
+        // length-limited, but let's check anyway once here trusting the math
+        // from  RFC 3492 section 6.4 and then omit the overflow checks in the
+        // loop below.
+        let len_plus_one = input_length
+            .checked_add(1)
+            .ok_or(PunycodeEncodeError::Overflow)?;
+        len_plus_one
+            .checked_mul(u32::from(char::MAX) - INITIAL_N)
+            .ok_or(PunycodeEncodeError::Overflow)?;
+    }
+
     if basic_length > 0 {
-        output.push('-')
+        output.write_char('-')?;
     }
     let mut code_point = INITIAL_N;
-    let mut delta = 0;
+    let mut delta = 0u32;
     let mut bias = INITIAL_BIAS;
     let mut processed = basic_length;
     while processed < input_length {
@@ -266,16 +401,26 @@ where
             .filter(|&c| c >= code_point)
             .min()
             .unwrap();
-        if min_code_point - code_point > (u32::MAX - delta) / (processed + 1) {
-            return Err(()); // Overflow
-        }
         // Increase delta to advance the decoder’s <code_point,i> state to <min_code_point,0>
-        delta += (min_code_point - code_point) * (processed + 1);
+        if C::EXTERNAL_CALLER {
+            let product = (min_code_point - code_point)
+                .checked_mul(processed + 1)
+                .ok_or(PunycodeEncodeError::Overflow)?;
+            delta = delta
+                .checked_add(product)
+                .ok_or(PunycodeEncodeError::Overflow)?;
+        } else {
+            delta += (min_code_point - code_point) * (processed + 1);
+        }
         code_point = min_code_point;
         for c in input.clone() {
             let c = c as u32;
             if c < code_point {
-                delta = delta.checked_add(1).ok_or(())?;
+                if C::EXTERNAL_CALLER {
+                    delta = delta.checked_add(1).ok_or(PunycodeEncodeError::Overflow)?;
+                } else {
+                    delta += 1;
+                }
             }
             if c == code_point {
                 // Represent delta as a generalized variable-length integer:
@@ -293,11 +438,11 @@ where
                         break;
                     }
                     let value = t + ((q - t) % (BASE - t));
-                    output.push(value_to_digit(value));
+                    output.write_char(value_to_digit(value))?;
                     q = (q - t) / (BASE - t);
                     k += BASE;
                 }
-                output.push(value_to_digit(q));
+                output.write_char(value_to_digit(q))?;
                 bias = adapt(delta, processed + 1, processed == basic_length);
                 delta = 0;
                 processed += 1;
@@ -323,6 +468,10 @@ fn value_to_digit(value: u32) -> char {
 #[cfg(target_pointer_width = "64")]
 fn huge_encode() {
     let mut buf = String::new();
-    assert!(encode_into(std::iter::repeat('ß').take(u32::MAX as usize + 1), &mut buf).is_err());
+    assert!(encode_into::<_, _, ExternalCaller>(
+        core::iter::repeat('ß').take(u32::MAX as usize + 1),
+        &mut buf
+    )
+    .is_err());
     assert_eq!(buf.len(), 0);
 }
diff --git a/vendor/idna/src/uts46.rs b/vendor/idna/src/uts46.rs
index b082416c..79223a2c 100644
--- a/vendor/idna/src/uts46.rs
+++ b/vendor/idna/src/uts46.rs
@@ -1,4 +1,4 @@
-// Copyright 2013-2014 The rust-url developers.
+// Copyright The rust-url developers.
 //
 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
@@ -6,736 +6,1716 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-//! [*Unicode IDNA Compatibility Processing*
-//! (Unicode Technical Standard #46)](http://www.unicode.org/reports/tr46/)
-
-use self::Mapping::*;
-use crate::punycode;
-
+//! This module provides the lower-level API for UTS 46.
+//!
+//! [`Uts46::process`] is the core that the other convenience
+//! methods build on.
+//!
+//! UTS 46 flags map to this API as follows:
+//!
+//! * _CheckHyphens_ - _true_: [`Hyphens::Check`], _false_: [`Hyphens::Allow`]; the WHATWG URL Standard sets this to _false_ for normal (non-conformance-checker) user agents.
+//! * _CheckBidi_ - Always _true_; cannot be configured, since this flag is _true_ even when WHATWG URL Standard _beStrict_ is _false_.
+//! * _CheckJoiners_ - Always _true_; cannot be configured, since this flag is _true_ even when WHATWG URL Standard _beStrict_ is _false_.
+//! * _UseSTD3ASCIIRules_ - _true_: [`AsciiDenyList::STD3`], _false_: [`AsciiDenyList::EMPTY`]; however, the check the WHATWG URL Standard performs right after the UTS 46 invocation corresponds to [`AsciiDenyList::URL`].
+//! * _Transitional_Processing_ - Always _false_ but could be implemented as a preprocessing step. This flag is deprecated and for Web purposes the transition is over in the sense that all of Firefox, Safari, or Chrome set this flag to _false_.
+//! * _VerifyDnsLength_ - _true_: [`DnsLength::Verify`], _false_: [`DnsLength::Ignore`]; the WHATWG URL Standard sets this to _false_ for normal (non-conformance-checker) user agents.
+//! * _IgnoreInvalidPunycode_ - Always _false_; cannot be configured. (Not yet covered by the WHATWG URL Standard, but 2 out of 3 major browser clearly behave as if this was _false_).
+
+use crate::punycode::Decoder;
+use crate::punycode::InternalCaller;
+use alloc::borrow::Cow;
 use alloc::string::String;
-use core::fmt;
-use unicode_bidi::{bidi_class, BidiClass};
-use unicode_normalization::char::is_combining_mark;
-use unicode_normalization::{is_nfc, UnicodeNormalization};
-
-include!("uts46_mapping_table.rs");
-
-const PUNYCODE_PREFIX: &str = "xn--";
-
-#[derive(Debug)]
-struct StringTableSlice {
-    // Store these as separate fields so the structure will have an
-    // alignment of 1 and thus pack better into the Mapping enum, below.
-    byte_start_lo: u8,
-    byte_start_hi: u8,
-    byte_len: u8,
+use core::fmt::Write;
+use idna_adapter::*;
+use smallvec::SmallVec;
+use utf8_iter::Utf8CharsEx;
+
+/// ICU4C-compatible constraint.
+/// https://unicode-org.atlassian.net/browse/ICU-13727
+const PUNYCODE_DECODE_MAX_INPUT_LENGTH: usize = 2000;
+
+/// ICU4C-compatible constraint. (Note: ICU4C measures
+/// UTF-16 and we measure UTF-32. This means that we
+/// allow longer non-BMP inputs. For this implementation,
+/// the denial-of-service scaling does not depend on BMP vs.
+/// non-BMP: only the scalar values matter.)
+///
+/// https://unicode-org.atlassian.net/browse/ICU-13727
+const PUNYCODE_ENCODE_MAX_INPUT_LENGTH: usize = 1000;
+
+/// For keeping track of what kind of numerals have been
+/// seen in an RTL label.
+#[derive(Debug, PartialEq, Eq)]
+enum RtlNumeralState {
+    Undecided,
+    European,
+    Arabic,
 }
 
-fn decode_slice(slice: &StringTableSlice) -> &'static str {
-    let lo = slice.byte_start_lo as usize;
-    let hi = slice.byte_start_hi as usize;
-    let start = (hi << 8) | lo;
-    let len = slice.byte_len as usize;
-    &STRING_TABLE[start..(start + len)]
+/// Computes the mask for upper-case ASCII.
+const fn upper_case_mask() -> u128 {
+    let mut accu = 0u128;
+    let mut b = 0u8;
+    while b < 128 {
+        if (b >= b'A') && (b <= b'Z') {
+            accu |= 1u128 << b;
+        }
+        b += 1;
+    }
+    accu
 }
 
-#[repr(u8)]
-#[derive(Debug)]
-enum Mapping {
-    Valid,
-    Ignored,
-    Mapped(StringTableSlice),
-    Deviation(StringTableSlice),
-    Disallowed,
-    DisallowedStd3Valid,
-    DisallowedStd3Mapped(StringTableSlice),
-    DisallowedIdna2008,
+/// Bit set for upper-case ASCII.
+const UPPER_CASE_MASK: u128 = upper_case_mask();
+
+/// Computes the mask for glyphless ASCII.
+const fn glyphless_mask() -> u128 {
+    let mut accu = 0u128;
+    let mut b = 0u8;
+    while b < 128 {
+        if (b <= b' ') || (b == 0x7F) {
+            accu |= 1u128 << b;
+        }
+        b += 1;
+    }
+    accu
 }
 
-fn find_char(codepoint: char) -> &'static Mapping {
-    let idx = match TABLE.binary_search_by_key(&codepoint, |&val| val.0) {
-        Ok(idx) => idx,
-        Err(idx) => idx - 1,
-    };
+/// Bit set for glyphless ASCII.
+const GLYPHLESS_MASK: u128 = glyphless_mask();
 
-    const SINGLE_MARKER: u16 = 1 << 15;
+/// The mask for the ASCII dot.
+const DOT_MASK: u128 = 1 << b'.';
 
-    let (base, x) = TABLE[idx];
-    let single = (x & SINGLE_MARKER) != 0;
-    let offset = !SINGLE_MARKER & x;
+/// Computes the ASCII deny list for STD3 ASCII rules.
+const fn ldh_mask() -> u128 {
+    let mut accu = 0u128;
+    let mut b = 0u8;
+    while b < 128 {
+        if !((b >= b'a' && b <= b'z') || (b >= b'0' && b <= b'9') || b == b'-' || b == b'.') {
+            accu |= 1u128 << b;
+        }
+        b += 1;
+    }
+    accu
+}
 
-    if single {
-        &MAPPING_TABLE[offset as usize]
-    } else {
-        &MAPPING_TABLE[(offset + (codepoint as u16 - base as u16)) as usize]
+const PUNYCODE_PREFIX: u32 =
+    ((b'-' as u32) << 24) | ((b'-' as u32) << 16) | ((b'N' as u32) << 8) | b'X' as u32;
+
+const PUNYCODE_PREFIX_MASK: u32 = (0xFF << 24) | (0xFF << 16) | (0xDF << 8) | 0xDF;
+
+fn write_punycode_label<W: Write + ?Sized>(
+    label: &[char],
+    sink: &mut W,
+) -> Result<(), ProcessingError> {
+    sink.write_str("xn--")?;
+    crate::punycode::encode_into::<_, _, InternalCaller>(label.iter().copied(), sink)?;
+    Ok(())
+}
+
+#[inline(always)]
+fn has_punycode_prefix(slice: &[u8]) -> bool {
+    if slice.len() < 4 {
+        return false;
     }
+    // Sadly, the optimizer doesn't figure out that more idiomatic code
+    // should compile to masking on 32-bit value.
+    let a = slice[0];
+    let b = slice[1];
+    let c = slice[2];
+    let d = slice[3];
+    let u = (u32::from(d) << 24) | (u32::from(c) << 16) | (u32::from(b) << 8) | u32::from(a);
+    (u & PUNYCODE_PREFIX_MASK) == PUNYCODE_PREFIX
 }
 
-struct Mapper<'a> {
-    chars: core::str::Chars<'a>,
-    config: Config,
-    errors: &'a mut Errors,
-    slice: Option<core::str::Chars<'static>>,
+#[inline(always)]
+fn in_inclusive_range8(u: u8, start: u8, end: u8) -> bool {
+    u.wrapping_sub(start) <= (end - start)
 }
 
-impl<'a> Iterator for Mapper<'a> {
-    type Item = char;
+#[inline(always)]
+fn in_inclusive_range_char(c: char, start: char, end: char) -> bool {
+    u32::from(c).wrapping_sub(u32::from(start)) <= (u32::from(end) - u32::from(start))
+}
 
-    fn next(&mut self) -> Option<Self::Item> {
-        loop {
-            if let Some(s) = &mut self.slice {
-                match s.next() {
-                    Some(c) => return Some(c),
-                    None => {
-                        self.slice = None;
-                    }
-                }
+#[inline(always)]
+fn is_passthrough_ascii_label(label: &[u8]) -> bool {
+    // XXX if we aren't performing _CheckHyphens_, this could
+    // check for "xn--" and pass through YouTube CDN node names.
+    if label.len() >= 4 && label[2] == b'-' && label[3] == b'-' {
+        return false;
+    }
+    if let Some((&first, tail)) = label.split_first() {
+        // We need to check the first and last character
+        // more strictly in case this turns out to be a
+        // label in a bidi domain name. This has the side
+        // effect that this function only accepts labels
+        // that also conform to the STD3 rules.
+        //
+        // XXX: If we are in the fail-fast mode (i.e. we don't need
+        // to be able to overwrite anything with U+FFFD), we could
+        // merely record that we've seen a digit here and error out
+        // if we later discover that the domain name is a bidi
+        // domain name.
+        if !in_inclusive_range8(first, b'a', b'z') {
+            return false;
+        }
+        for &b in tail {
+            // If we used LDH_MASK, we'd have to check
+            // the bytes for the ASCII range anyhow.
+            if in_inclusive_range8(b, b'a', b'z') {
+                continue;
             }
-
-            let codepoint = self.chars.next()?;
-            if let '.' | '-' | 'a'..='z' | '0'..='9' = codepoint {
-                return Some(codepoint);
+            if in_inclusive_range8(b, b'0', b'9') {
+                continue;
             }
-
-            return Some(match *find_char(codepoint) {
-                Mapping::Valid => codepoint,
-                Mapping::Ignored => continue,
-                Mapping::Mapped(ref slice) => {
-                    self.slice = Some(decode_slice(slice).chars());
-                    continue;
-                }
-                Mapping::Deviation(ref slice) => {
-                    if self.config.transitional_processing {
-                        self.slice = Some(decode_slice(slice).chars());
-                        continue;
-                    } else {
-                        codepoint
-                    }
-                }
-                Mapping::Disallowed => {
-                    self.errors.disallowed_character = true;
-                    codepoint
-                }
-                Mapping::DisallowedStd3Valid => {
-                    if self.config.use_std3_ascii_rules {
-                        self.errors.disallowed_by_std3_ascii_rules = true;
-                    };
-                    codepoint
-                }
-                Mapping::DisallowedStd3Mapped(ref slice) => {
-                    if self.config.use_std3_ascii_rules {
-                        self.errors.disallowed_mapped_in_std3 = true;
-                    };
-                    self.slice = Some(decode_slice(slice).chars());
-                    continue;
-                }
-                Mapping::DisallowedIdna2008 => {
-                    if self.config.use_idna_2008_rules {
-                        self.errors.disallowed_in_idna_2008 = true;
-                    }
-                    codepoint
-                }
-            });
+            if b == b'-' {
+                continue;
+            }
+            return false;
         }
+        label.last() != Some(&b'-')
+    } else {
+        // empty
+        true
     }
 }
 
-// http://tools.ietf.org/html/rfc5893#section-2
-fn passes_bidi(label: &str, is_bidi_domain: bool) -> bool {
-    // Rule 0: Bidi Rules apply to Bidi Domain Names: a name with at least one RTL label.  A label
-    // is RTL if it contains at least one character of bidi class R, AL or AN.
-    if !is_bidi_domain {
-        return true;
+#[inline(always)]
+fn split_ascii_fast_path_prefix(label: &[u8]) -> (&[u8], &[u8]) {
+    if let Some(pos) = label.iter().position(|b| !b.is_ascii()) {
+        if pos == 0 {
+            // First is non-ASCII
+            (&[], label)
+        } else {
+            // Leave one ASCII character in the suffix
+            // in case it's a letter that a combining
+            // character combines with.
+            let (head, tail) = label.split_at(pos - 1);
+            (head, tail)
+        }
+    } else {
+        // All ASCII
+        (label, &[])
     }
+}
 
-    let mut chars = label.chars();
-    let first_char_class = match chars.next() {
-        Some(c) => bidi_class(c),
-        None => return true, // empty string
-    };
+// Input known to be lower-case, but may contain non-ASCII.
+#[inline(always)]
+fn apply_ascii_deny_list_to_lower_cased_unicode(c: char, deny_list: u128) -> char {
+    if let Some(shifted) = 1u128.checked_shl(u32::from(c)) {
+        if (deny_list & shifted) == 0 {
+            c
+        } else {
+            '\u{FFFD}'
+        }
+    } else {
+        c
+    }
+}
 
-    match first_char_class {
-        // LTR label
-        BidiClass::L => {
-            // Rule 5
-            for c in chars.by_ref() {
-                if !matches!(
-                    bidi_class(c),
-                    BidiClass::L
-                        | BidiClass::EN
-                        | BidiClass::ES
-                        | BidiClass::CS
-                        | BidiClass::ET
-                        | BidiClass::ON
-                        | BidiClass::BN
-                        | BidiClass::NSM
-                ) {
-                    return false;
-                }
-            }
+// Input known to be ASCII, but may contain upper case ASCII.
+#[inline(always)]
+fn apply_ascii_deny_list_to_potentially_upper_case_ascii(b: u8, deny_list: u128) -> char {
+    if (deny_list & (1u128 << b)) == 0 {
+        return char::from(b);
+    }
+    if in_inclusive_range8(b, b'A', b'Z') {
+        return char::from(b + 0x20);
+    }
+    '\u{FFFD}'
+}
 
-            // Rule 6
-            // must end in L or EN followed by 0 or more NSM
-            let mut rev_chars = label.chars().rev();
-            let mut last_non_nsm = rev_chars.next();
-            loop {
-                match last_non_nsm {
-                    Some(c) if bidi_class(c) == BidiClass::NSM => {
-                        last_non_nsm = rev_chars.next();
-                        continue;
-                    }
-                    _ => {
-                        break;
-                    }
-                }
-            }
-            match last_non_nsm {
-                Some(c) if bidi_class(c) == BidiClass::L || bidi_class(c) == BidiClass::EN => {}
-                Some(_) => {
-                    return false;
-                }
-                _ => {}
-            }
+#[inline(always)]
+fn is_ascii(label: &[char]) -> bool {
+    for c in label.iter() {
+        if !c.is_ascii() {
+            return false;
         }
+    }
+    true
+}
 
-        // RTL label
-        BidiClass::R | BidiClass::AL => {
-            let mut found_en = false;
-            let mut found_an = false;
-
-            // Rule 2
-            for c in chars {
-                let char_class = bidi_class(c);
-                if char_class == BidiClass::EN {
-                    found_en = true;
-                } else if char_class == BidiClass::AN {
-                    found_an = true;
-                }
+#[derive(PartialEq, Eq, Copy, Clone)]
+enum PunycodeClassification {
+    Ascii,
+    Unicode,
+    Error,
+}
 
-                if !matches!(
-                    char_class,
-                    BidiClass::R
-                        | BidiClass::AL
-                        | BidiClass::AN
-                        | BidiClass::EN
-                        | BidiClass::ES
-                        | BidiClass::CS
-                        | BidiClass::ET
-                        | BidiClass::ON
-                        | BidiClass::BN
-                        | BidiClass::NSM
-                ) {
-                    return false;
-                }
+#[inline(always)]
+fn classify_for_punycode(label: &[char]) -> PunycodeClassification {
+    let mut iter = label.iter().copied();
+    loop {
+        if let Some(c) = iter.next() {
+            if c.is_ascii() {
+                continue;
             }
-            // Rule 3
-            let mut rev_chars = label.chars().rev();
-            let mut last = rev_chars.next();
-            loop {
-                // must end in L or EN followed by 0 or more NSM
-                match last {
-                    Some(c) if bidi_class(c) == BidiClass::NSM => {
-                        last = rev_chars.next();
-                        continue;
-                    }
-                    _ => {
-                        break;
-                    }
-                }
+            if c == '\u{FFFD}' {
+                return PunycodeClassification::Error;
             }
-            match last {
-                Some(c)
-                    if matches!(
-                        bidi_class(c),
-                        BidiClass::R | BidiClass::AL | BidiClass::EN | BidiClass::AN
-                    ) => {}
-                _ => {
-                    return false;
+            for c in iter {
+                if c == '\u{FFFD}' {
+                    return PunycodeClassification::Error;
                 }
             }
-
-            // Rule 4
-            if found_an && found_en {
-                return false;
-            }
+            return PunycodeClassification::Unicode;
         }
+        return PunycodeClassification::Ascii;
+    }
+}
 
-        // Rule 1: Should start with L or R/AL
-        _ => {
-            return false;
+/// The ASCII deny list to be applied.
+#[derive(PartialEq, Eq, Copy, Clone)]
+#[repr(transparent)]
+pub struct AsciiDenyList {
+    bits: u128,
+}
+
+impl AsciiDenyList {
+    /// Computes (preferably at compile time) an ASCII deny list.
+    ///
+    /// Setting `deny_glyphless` to `true` denies U+0020 SPACE and below
+    /// as well as U+007F DELETE for convenience without having to list
+    /// these characters in the `deny_list` string.
+    ///
+    /// `deny_list` is the list of ASCII characters to deny. This
+    /// list must not contain any of:
+    /// * Letters
+    /// * Digits
+    /// * Hyphen
+    /// * Dot (period / full-stop)
+    /// * Non-ASCII
+    ///
+    /// # Panics
+    ///
+    /// If the deny list contains characters listed as prohibited above.
+    pub const fn new(deny_glyphless: bool, deny_list: &str) -> Self {
+        let mut bits = UPPER_CASE_MASK;
+        if deny_glyphless {
+            bits |= GLYPHLESS_MASK;
+        }
+        let mut i = 0;
+        let bytes = deny_list.as_bytes();
+        while i < bytes.len() {
+            let b = bytes[i];
+            assert!(b < 0x80, "ASCII deny list must be ASCII.");
+            // assert_ne not yet available in const context.
+            assert!(b != b'.', "ASCII deny list must not contain the dot.");
+            assert!(b != b'-', "ASCII deny list must not contain the hyphen.");
+            assert!(
+                !((b >= b'0') && (b <= b'9')),
+                "ASCII deny list must not contain digits."
+            );
+            assert!(
+                !((b >= b'a') && (b <= b'z')),
+                "ASCII deny list must not contain letters."
+            );
+            assert!(
+                !((b >= b'A') && (b <= b'Z')),
+                "ASCII deny list must not contain letters."
+            );
+            bits |= 1u128 << b;
+            i += 1;
         }
+        Self { bits }
     }
 
-    true
+    /// No ASCII deny list. This corresponds to _UseSTD3ASCIIRules=false_.
+    ///
+    /// Equivalent to `AsciiDenyList::new(false, "")`.
+    ///
+    /// Note: Not denying the space and control characters can result in
+    /// strange behavior. Without a deny list provided to the UTS 46
+    /// operation, the caller is expected perform filtering afterwards,
+    /// but it's more efficient to use `AsciiDenyList` than post-processing,
+    /// because the internals of this crate can optimize away checks in
+    /// certain cases.
+    pub const EMPTY: Self = Self::new(false, "");
+
+    /// The STD3 deny list. This corresponds to _UseSTD3ASCIIRules=true_.
+    ///
+    /// Note that this deny list rejects the underscore, which occurs in
+    /// pseudo-hosts used by various TXT record-based protocols, and also
+    /// characters that may occurs in non-DNS naming, such as NetBIOS.
+    pub const STD3: Self = Self { bits: ldh_mask() };
+
+    /// [Forbidden domain code point](https://url.spec.whatwg.org/#forbidden-domain-code-point) from the WHATWG URL Standard.
+    ///
+    /// Equivalent to `AsciiDenyList::new(true, "%#/:<>?@[\\]^|")`.
+    ///
+    /// Note that this deny list rejects IPv6 addresses, so (as in URL
+    /// parsing) you need to check for IPv6 addresses first and not
+    /// put them through UTS 46 processing.
+    pub const URL: Self = Self::new(true, "%#/:<>?@[\\]^|");
 }
 
-/// Check the validity criteria for the given label
-///
-/// V1 (NFC) and V8 (Bidi) are checked inside `processing()` to prevent doing duplicate work.
-///
-/// http://www.unicode.org/reports/tr46/#Validity_Criteria
-fn check_validity(label: &str, config: Config, errors: &mut Errors) {
-    let first_char = label.chars().next();
-    if first_char.is_none() {
-        // Empty string, pass
-        return;
-    }
+/// The _CheckHyphens_ mode.
+#[derive(PartialEq, Eq, Copy, Clone)]
+#[non_exhaustive] // non_exhaustive in case a middle mode that prohibits only first and last position needs to be added
+pub enum Hyphens {
+    /// _CheckHyphens=false_: Do not place positional restrictions on hyphens.
+    ///
+    /// This mode is used by the WHATWG URL Standard for normal User Agent processing
+    /// (i.e. not conformance checking).
+    Allow,
+
+    /// Prohibit hyphens in the first and last position in the label but allow in
+    /// the third and fourth position.
+    ///
+    /// Note that this mode rejects real-world names, including some GitHub user pages.
+    CheckFirstLast,
+
+    /// _CheckHyphens=true_: Prohibit hyphens in the first, third, fourth,
+    /// and last position in the label.
+    ///
+    /// Note that this mode rejects real-world names, including YouTube CDN nodes
+    /// and some GitHub user pages.
+    Check,
+}
 
-    // V2: No U+002D HYPHEN-MINUS in both third and fourth positions.
-    //
-    // NOTE: Spec says that the label must not contain a HYPHEN-MINUS character in both the
-    // third and fourth positions. But nobody follows this criteria. See the spec issue below:
-    // https://github.com/whatwg/url/issues/53
+/// The UTS 46 _VerifyDNSLength_ flag.
+#[derive(PartialEq, Eq, Copy, Clone)]
+#[non_exhaustive]
+pub enum DnsLength {
+    /// _VerifyDNSLength=false_. (Possibly relevant for allowing non-DNS naming systems.)
+    Ignore,
+    /// _VerifyDNSLength=true_ with the exception that the trailing root label dot is
+    /// allowed.
+    VerifyAllowRootDot,
+    /// _VerifyDNSLength=true_. (The trailing root label dot is not allowed.)
+    Verify,
+}
 
-    // V3: neither begin nor end with a U+002D HYPHEN-MINUS
-    if config.check_hyphens && (label.starts_with('-') || label.ends_with('-')) {
-        errors.check_hyphens = true;
-        return;
-    }
+/// Policy for customizing behavior in case of an error.
+#[derive(PartialEq, Eq, Copy, Clone)]
+#[non_exhaustive]
+pub enum ErrorPolicy {
+    /// Return as early as possible without producing output in case of error.
+    FailFast,
+    /// In case of error, mark errors with the REPLACEMENT CHARACTER. (The output
+    /// containing REPLACEMENT CHARACTERs may be show to the user to illustrate
+    /// what was wrong but must not be used for naming in a network protocol.)
+    MarkErrors,
+}
 
-    // V4: not contain a U+002E FULL STOP
-    //
-    // Here, label can't contain '.' since the input is from .split('.')
+/// The success outcome of [`Uts46::process`]
+#[derive(PartialEq, Eq, Copy, Clone, Debug)]
+pub enum ProcessingSuccess {
+    /// There were no errors. The caller must consider the input to be the output.
+    ///
+    /// This asserts that the input can be safely passed to [`core::str::from_utf8_unchecked`].
+    ///
+    /// (Distinct from `WroteToSink` in order to allow `Cow` behavior to be implemented on top of
+    /// [`Uts46::process`].)
+    Passthrough,
+
+    /// There were no errors. The caller must consider what was written to the sink to be the output.
+    ///
+    /// (Distinct from `Passthrough` in order to allow `Cow` behavior to be implemented on top of
+    /// [`Uts46::process`].)
+    WroteToSink,
+}
 
-    // V5: not begin with a GC=Mark
-    if is_combining_mark(first_char.unwrap()) {
-        errors.start_combining_mark = true;
-        return;
-    }
+/// The failure outcome of [`Uts46::process`]
+#[derive(PartialEq, Eq, Copy, Clone, Debug)]
+pub enum ProcessingError {
+    /// There was a validity error according to the chosen options.
+    ///
+    /// In case of `Operation::ToAscii`, there is no output. Otherwise, output was written to the
+    /// sink and the output contains at least one U+FFFD REPLACEMENT CHARACTER to denote an error.
+    ValidityError,
+
+    /// The sink emitted [`core::fmt::Error`]. The partial output written to the sink must not
+    /// be used.
+    SinkError,
+}
 
-    // V6: Check against Mapping Table
-    if label.chars().any(|c| match *find_char(c) {
-        Mapping::Valid | Mapping::DisallowedIdna2008 => false,
-        Mapping::Deviation(_) => config.transitional_processing,
-        Mapping::DisallowedStd3Valid => config.use_std3_ascii_rules,
-        _ => true,
-    }) {
-        errors.invalid_mapping = true;
+impl From<core::fmt::Error> for ProcessingError {
+    fn from(_: core::fmt::Error) -> Self {
+        Self::SinkError
     }
+}
 
-    // V7: ContextJ rules
-    //
-    // TODO: Implement rules and add *CheckJoiners* flag.
+impl From<crate::punycode::PunycodeEncodeError> for ProcessingError {
+    fn from(_: crate::punycode::PunycodeEncodeError) -> Self {
+        unreachable!(
+            "Punycode overflows should not be possible due to PUNYCODE_ENCODE_MAX_INPUT_LENGTH"
+        );
+    }
+}
 
-    // V8: Bidi rules are checked inside `processing()`
+#[derive(Debug, Clone, Copy)]
+enum AlreadyAsciiLabel<'a> {
+    MixedCaseAscii(&'a [u8]),
+    MixedCasePunycode(&'a [u8]),
+    Other,
 }
 
-// Detect simple cases: all lowercase ASCII characters and digits where none
-// of the labels start with PUNYCODE_PREFIX and labels don't start or end with hyphen.
-fn is_simple(domain: &str) -> bool {
-    if domain.is_empty() {
+/// Performs the _VerifyDNSLength_ check on the output of the _ToASCII_ operation.
+///
+/// If the second argument is `false`, the trailing root label dot is allowed.
+///
+/// # Panics
+///
+/// Panics in debug mode if the argument isn't ASCII.
+pub fn verify_dns_length(domain_name: &str, allow_trailing_dot: bool) -> bool {
+    let bytes = domain_name.as_bytes();
+    debug_assert!(bytes.is_ascii());
+    let domain_name_without_trailing_dot = if let Some(without) = bytes.strip_suffix(b".") {
+        if !allow_trailing_dot {
+            return false;
+        }
+        without
+    } else {
+        bytes
+    };
+    if domain_name_without_trailing_dot.len() > 253 {
         return false;
     }
-    let (mut prev, mut puny_prefix) = ('?', 0);
-    for c in domain.chars() {
-        if c == '.' {
-            if prev == '-' {
-                return false;
-            }
-            puny_prefix = 0;
-            continue;
-        } else if puny_prefix == 0 && c == '-' {
+    for label in domain_name_without_trailing_dot.split(|b| *b == b'.') {
+        if label.is_empty() {
             return false;
-        } else if puny_prefix < 5 {
-            if c == ['x', 'n', '-', '-'][puny_prefix] {
-                puny_prefix += 1;
-                if puny_prefix == 4 {
-                    return false;
-                }
-            } else {
-                puny_prefix = 5;
-            }
         }
-        if !c.is_ascii_lowercase() && !c.is_ascii_digit() {
+        if label.len() > 63 {
             return false;
         }
-        prev = c;
     }
-
     true
 }
 
-/// http://www.unicode.org/reports/tr46/#Processing
-fn processing(
-    domain: &str,
-    config: Config,
-    normalized: &mut String,
-    output: &mut String,
-) -> Errors {
-    normalized.clear();
-    let mut errors = Errors::default();
-    let offset = output.len();
-
-    let iter = Mapper {
-        chars: domain.chars(),
-        config,
-        errors: &mut errors,
-        slice: None,
-    };
+/// An implementation of UTS #46.
+pub struct Uts46 {
+    data: idna_adapter::Adapter,
+}
 
-    normalized.extend(iter.nfc());
-
-    let mut decoder = punycode::Decoder::default();
-    let non_transitional = config.transitional_processing(false);
-    let (mut first, mut has_bidi_labels) = (true, false);
-    for label in normalized.split('.') {
-        if !first {
-            output.push('.');
-        }
-        first = false;
-        if let Some(remainder) = label.strip_prefix(PUNYCODE_PREFIX) {
-            match decoder.decode(remainder) {
-                Ok(decode) => {
-                    let start = output.len();
-                    output.extend(decode);
-                    let decoded_label = &output[start..];
-
-                    if !has_bidi_labels {
-                        has_bidi_labels |= is_bidi_domain(decoded_label);
-                    }
+#[cfg(feature = "compiled_data")]
+impl Default for Uts46 {
+    fn default() -> Self {
+        Self::new()
+    }
+}
 
-                    if !errors.is_err() {
-                        if !is_nfc(decoded_label) {
-                            errors.nfc = true;
-                        } else {
-                            check_validity(decoded_label, non_transitional, &mut errors);
-                        }
-                    }
-                }
-                Err(()) => {
-                    has_bidi_labels = true;
-                    errors.punycode = true;
+impl Uts46 {
+    /// Constructor using data compiled into the binary.
+    #[cfg(feature = "compiled_data")]
+    pub const fn new() -> Self {
+        Self {
+            data: idna_adapter::Adapter::new(),
+        }
+    }
+
+    // XXX Should there be an `icu_provider` feature for enabling
+    // a constructor for run-time data loading?
+
+    /// Performs the [ToASCII](https://www.unicode.org/reports/tr46/#ToASCII) operation
+    /// from UTS #46 with the options indicated.
+    ///
+    /// # Arguments
+    ///
+    /// * `domain_name` - The input domain name as UTF-8 bytes. (The UTF-8ness is checked by
+    ///   this method and input that is not well-formed UTF-8 is treated as an error. If you
+    ///   already have a `&str`, call `.as_bytes()` on it.)
+    /// * `ascii_deny_list` - What ASCII deny list, if any, to apply. The UTS 46
+    ///   _UseSTD3ASCIIRules_ flag or the WHATWG URL Standard forbidden domain code point
+    ///   processing is handled via this argument. Most callers are probably the best off
+    ///   by using [`AsciiDenyList::URL`] here.
+    /// * `hyphens` - The UTS 46 _CheckHyphens_ flag. Most callers are probably the best
+    ///   off by using [`Hyphens::Allow`] here.
+    /// * `dns_length` - The UTS 46 _VerifyDNSLength_ flag.
+    pub fn to_ascii<'a>(
+        &self,
+        domain_name: &'a [u8],
+        ascii_deny_list: AsciiDenyList,
+        hyphens: Hyphens,
+        dns_length: DnsLength,
+    ) -> Result<Cow<'a, str>, crate::Errors> {
+        self.to_ascii_from_cow(
+            Cow::Borrowed(domain_name),
+            ascii_deny_list,
+            hyphens,
+            dns_length,
+        )
+    }
+
+    pub(crate) fn to_ascii_from_cow<'a>(
+        &self,
+        domain_name: Cow<'a, [u8]>,
+        ascii_deny_list: AsciiDenyList,
+        hyphens: Hyphens,
+        dns_length: DnsLength,
+    ) -> Result<Cow<'a, str>, crate::Errors> {
+        let mut s = String::new();
+        match self.process(
+            &domain_name,
+            ascii_deny_list,
+            hyphens,
+            ErrorPolicy::FailFast,
+            |_, _, _| false,
+            &mut s,
+            None,
+        ) {
+            Ok(ProcessingSuccess::Passthrough) => {
+                // SAFETY: `ProcessingSuccess::Passthrough` asserts that `domain_name` is ASCII.
+                let cow = match domain_name {
+                    Cow::Borrowed(v) => Cow::Borrowed(unsafe { core::str::from_utf8_unchecked(v) }),
+                    Cow::Owned(v) => Cow::Owned(unsafe { String::from_utf8_unchecked(v) }),
+                };
+                if dns_length != DnsLength::Ignore
+                    && !verify_dns_length(&cow, dns_length == DnsLength::VerifyAllowRootDot)
+                {
+                    Err(crate::Errors::default())
+                } else {
+                    Ok(cow)
                 }
             }
-        } else {
-            if !has_bidi_labels {
-                has_bidi_labels |= is_bidi_domain(label);
+            Ok(ProcessingSuccess::WroteToSink) => {
+                let cow: Cow<'_, str> = Cow::Owned(s);
+                if dns_length != DnsLength::Ignore
+                    && !verify_dns_length(&cow, dns_length == DnsLength::VerifyAllowRootDot)
+                {
+                    Err(crate::Errors::default())
+                } else {
+                    Ok(cow)
+                }
             }
-
-            // `normalized` is already `NFC` so we can skip that check
-            check_validity(label, config, &mut errors);
-            output.push_str(label)
+            Err(ProcessingError::ValidityError) => Err(crate::Errors::default()),
+            Err(ProcessingError::SinkError) => unreachable!(),
         }
     }
 
-    for label in output[offset..].split('.') {
-        // V8: Bidi rules
-        //
-        // TODO: Add *CheckBidi* flag
-        if !passes_bidi(label, has_bidi_labels) {
-            errors.check_bidi = true;
-            break;
-        }
+    /// Performs the [ToUnicode](https://www.unicode.org/reports/tr46/#ToUnicode) operation
+    /// from UTS #46 according to the options given. When there
+    /// are errors, there is still output, which may be rendered user, even through
+    /// the output must not be used in networking protocols. Errors are denoted
+    /// by U+FFFD REPLACEMENT CHARACTERs in the output. (That is, if the second item of the
+    /// return tuple is `Err`, the first item of the return tuple is guaranteed to contain
+    /// at least one U+FFFD.)
+    ///
+    /// Most applications probably shouldn't use this method and should be using
+    /// [`Uts46::to_user_interface`] instead.
+    ///
+    /// # Arguments
+    ///
+    /// * `domain_name` - The input domain name as UTF-8 bytes. (The UTF-8ness is checked by
+    ///   this method and input that is not well-formed UTF-8 is treated as an error. If you
+    ///   already have a `&str`, call `.as_bytes()` on it.)
+    /// * `ascii_deny_list` - What ASCII deny list, if any, to apply. The UTS 46
+    ///   _UseSTD3ASCIIRules_ flag or the WHATWG URL Standard forbidden domain code point
+    ///   processing is handled via this argument. Most callers are probably the best off
+    ///   by using [`AsciiDenyList::URL`] here.
+    /// * `hyphens` - The UTS 46 _CheckHyphens_ flag. Most callers are probably the best
+    ///   off by using [`Hyphens::Allow`] here.
+    pub fn to_unicode<'a>(
+        &self,
+        domain_name: &'a [u8],
+        ascii_deny_list: AsciiDenyList,
+        hyphens: Hyphens,
+    ) -> (Cow<'a, str>, Result<(), crate::Errors>) {
+        self.to_user_interface(domain_name, ascii_deny_list, hyphens, |_, _, _| true)
     }
 
-    errors
-}
-
-#[derive(Default)]
-pub struct Idna {
-    config: Config,
-    normalized: String,
-    output: String,
-}
-
-impl Idna {
-    pub fn new(config: Config) -> Self {
-        Self {
-            config,
-            normalized: String::new(),
-            output: String::new(),
+    /// Performs the [ToUnicode](https://www.unicode.org/reports/tr46/#ToUnicode) operation
+    /// from UTS #46 according to options given with some
+    /// error-free Unicode labels output according to
+    /// [ToASCII](https://www.unicode.org/reports/tr46/#ToASCII) instead as decided by
+    /// application policy implemented via the `output_as_unicode` closure. The purpose
+    /// is to convert user-visible domains to the Unicode form in general but to render
+    /// potentially misleading labels as Punycode.
+    ///
+    /// This is an imperfect security mechanism, because [the Punycode form itself may be
+    /// resemble a user-recognizable name](https://www.unicode.org/reports/tr36/#TablePunycodeSpoofing).
+    /// However, since this mechanism is common practice, this API provides support for The
+    /// the mechanism.
+    ///
+    /// ASCII labels always pass through as ASCII and labels with errors always pass through
+    /// as Unicode. For non-erroneous labels that contain at least one non-ASCII character
+    /// (implies non-empty), `output_as_unicode` is called with the Unicode form of the label,
+    /// the TLD (potentially empty), and a flag indicating whether the domain name as a whole
+    /// is a bidi domain name. If the return value is `true`, the label passes through as
+    /// Unicode. If the return value is `false`, the label is converted to Punycode.
+    ///
+    /// When there are errors, there is still output, which may be rendered user, even through
+    /// the output must not be used in networking protocols. Errors are denoted by
+    /// U+FFFD REPLACEMENT CHARACTERs in the output. (That is, if the second item
+    /// of the return tuple is `Err`, the first item of the return tuple is guaranteed to contain
+    /// at least one U+FFFD.) Labels that contain errors are not converted to Punycode.
+    ///
+    /// # Arguments
+    ///
+    /// * `domain_name` - The input domain name as UTF-8 bytes. (The UTF-8ness is checked by
+    ///   this method and input that is not well-formed UTF-8 is treated as an error. If you
+    ///   already have a `&str`, call `.as_bytes()` on it.)
+    /// * `ascii_deny_list` - What ASCII deny list, if any, to apply. The UTS 46
+    ///   _UseSTD3ASCIIRules_ flag or the WHATWG URL Standard forbidden domain code point
+    ///   processing is handled via this argument. Most callers are probably the best off
+    ///   by using [`AsciiDenyList::URL`] here.
+    /// * `hyphens` - The UTS 46 _CheckHyphens_ flag. Most callers are probably the best
+    ///   off by using [`Hyphens::Allow`] here.
+    /// * `output_as_unicode` - A closure for deciding if a label should be output as Unicode
+    ///   (as opposed to Punycode). The first argument is the label for which a decision is
+    ///   needed (always non-empty slice). The second argument is the TLD (potentially empty).
+    ///   The third argument is `true` iff the domain name as a whole is a bidi domain name.
+    ///   Only non-erroneous labels that contain at least one non-ASCII character are passed
+    ///   to the closure as the first argument. The second and third argument values are
+    ///   guaranteed to remain the same during a single call to `process`, and the closure
+    ///   may cache computations derived from the second and third argument (hence the
+    ///   `FnMut` type).
+    pub fn to_user_interface<'a, OutputUnicode: FnMut(&[char], &[char], bool) -> bool>(
+        &self,
+        domain_name: &'a [u8],
+        ascii_deny_list: AsciiDenyList,
+        hyphens: Hyphens,
+        output_as_unicode: OutputUnicode,
+    ) -> (Cow<'a, str>, Result<(), crate::Errors>) {
+        let mut s = String::new();
+        match self.process(
+            domain_name,
+            ascii_deny_list,
+            hyphens,
+            ErrorPolicy::MarkErrors,
+            output_as_unicode,
+            &mut s,
+            None,
+        ) {
+            // SAFETY: `ProcessingSuccess::Passthrough` asserts that `domain_name` is ASCII.
+            Ok(ProcessingSuccess::Passthrough) => (
+                Cow::Borrowed(unsafe { core::str::from_utf8_unchecked(domain_name) }),
+                Ok(()),
+            ),
+            Ok(ProcessingSuccess::WroteToSink) => (Cow::Owned(s), Ok(())),
+            Err(ProcessingError::ValidityError) => (Cow::Owned(s), Err(crate::Errors::default())),
+            Err(ProcessingError::SinkError) => unreachable!(),
         }
     }
 
-    pub fn to_ascii_inner(&mut self, domain: &str, out: &mut String) -> Errors {
-        if is_simple(domain) {
-            out.push_str(domain);
-            return Errors::default();
+    /// The lower-level function that [`Uts46::to_ascii`], [`Uts46::to_unicode`], and
+    /// [`Uts46::to_user_interface`] are built on to allow support for output types other
+    /// than `Cow<'a, str>` (e.g. string types in a non-Rust programming language).
+    ///
+    /// # Arguments
+    ///
+    /// * `domain_name` - The input domain name as UTF-8 bytes. (The UTF-8ness is checked by
+    ///   this method and input that is not well-formed UTF-8 is treated as an error. If you
+    ///   already have a `&str`, call `.as_bytes()` on it.)
+    /// * `ascii_deny_list` - What ASCII deny list, if any, to apply. The UTS 46
+    ///   _UseSTD3ASCIIRules_ flag or the WHATWG URL Standard forbidden domain code point
+    ///   processing is handled via this argument. Most callers are probably the best off
+    ///   by using [`AsciiDenyList::URL`] here.
+    /// * `hyphens` - The UTS 46 _CheckHyphens_ flag. Most callers are probably the best
+    ///   off by using [`Hyphens::Allow`] here.
+    /// * `error_policy` - Whether to fail fast or to produce output that may be rendered
+    ///   for the user to examine in case of errors.
+    /// * `output_as_unicode` - A closure for deciding if a label should be output as Unicode
+    ///   (as opposed to Punycode). The first argument is the label for which a decision is
+    ///   needed (always non-empty slice). The second argument is the TLD (potentially empty).
+    ///   The third argument is `true` iff the domain name as a whole is a bidi domain name.
+    ///   Only non-erroneous labels that contain at least one non-ASCII character are passed
+    ///   to the closure as the first argument. The second and third argument values are
+    ///   guaranteed to remain the same during a single call to `process`, and the closure
+    ///   may cache computations derived from the second and third argument (hence the
+    ///   `FnMut` type). To perform the _ToASCII_ operation, `|_, _, _| false` must be
+    ///   passed as the closure. To perform the _ToUnicode_ operation, `|_, _, _| true` must
+    ///   be passed as the closure. A more complex closure may be used to prepare a domain
+    ///   name for display in a user interface so that labels are converted to the Unicode
+    ///   form in general but potentially misleading labels are converted to the Punycode
+    ///   form.
+    /// * `sink` - The object that receives the output (in the non-passthrough case).
+    /// * `ascii_sink` - A second sink that receives the _ToASCII_ form only if there
+    ///   were no errors and `sink` received at least one character of non-ASCII output.
+    ///   The purpose of this argument is to enable a user interface display form of the
+    ///   domain and the _ToASCII_ form of the domain to be computed efficiently together.
+    ///   This argument is useless when `output_as_unicode` always returns `false`, in
+    ///   which case the _ToASCII_ form ends up in `sink` already. If `ascii_sink` receives
+    ///   no output and the return value is `Ok(ProcessingSuccess::WroteToSink)`, use the
+    ///   output received by `sink` also as the _ToASCII_ result.
+    ///
+    /// # Return value
+    ///
+    /// * `Ok(ProcessingSuccess::Passthrough)` - The caller must treat
+    ///   `unsafe { core::str::from_utf8_unchecked(domain_name) }` as the output. (This
+    ///   return value asserts that calling `core::str::from_utf8_unchecked(domain_name)`
+    ///   is safe.)
+    /// * `Ok(ProcessingSuccess::WroteToSink)` - The caller must treat was was written
+    ///   to `sink` as the output. If another sink was passed as `ascii_sink` but it did
+    ///   not receive output, the caller must treat what was written to `sink` also as
+    ///   the _ToASCII_ output. Otherwise, if `ascii_sink` received output, the caller
+    ///   must treat what was written to `ascii_sink` as the _ToASCII_ output.
+    /// * `Err(ProcessingError::ValidityError)` - The input was in error and must
+    ///   not be used for DNS lookup or otherwise in a network protocol. If `error_policy`
+    ///   was `ErrorPolicy::MarkErrors`, the output written to `sink` may be displayed
+    ///   to the user as an illustration of where the error was or the errors were.
+    /// * `Err(ProcessingError::SinkError)` - Either `sink` or `ascii_sink` returned
+    ///   [`core::fmt::Error`]. The partial output written to `sink` `ascii_sink` must not
+    ///   be used. If `W` never returns [`core::fmt::Error`], this method never returns
+    ///   `Err(ProcessingError::SinkError)`.
+    ///
+    /// # Safety-usable invariant
+    ///
+    /// If the return value is `Ok(ProcessingSuccess::Passthrough)`, `domain_name` is
+    /// ASCII and `core::str::from_utf8_unchecked(domain_name)` is safe. (Note:
+    /// Other return values do _not_ imply that `domain_name` wasn't ASCII!)
+    ///
+    /// # Security considerations
+    ///
+    /// Showing labels whose Unicode form might mislead the user as Punycode instead is
+    /// an imperfect security mechanism, because [the Punycode form itself may be resemble
+    /// a user-recognizable name](https://www.unicode.org/reports/tr36/#TablePunycodeSpoofing).
+    /// However, since this mechanism is common practice, this API provides support for the
+    /// the mechanism.
+    ///
+    /// Punycode processing is quadratic, so to avoid denial of service, this method imposes
+    /// length limits on Punycode treating especially long inputs as being in error. These
+    /// limits are well higher than the DNS length limits and are not more restrictive than
+    /// the limits imposed by ICU4C.
+    #[allow(clippy::too_many_arguments)]
+    pub fn process<W: Write + ?Sized, OutputUnicode: FnMut(&[char], &[char], bool) -> bool>(
+        &self,
+        domain_name: &[u8],
+        ascii_deny_list: AsciiDenyList,
+        hyphens: Hyphens,
+        error_policy: ErrorPolicy,
+        mut output_as_unicode: OutputUnicode,
+        sink: &mut W,
+        ascii_sink: Option<&mut W>,
+    ) -> Result<ProcessingSuccess, ProcessingError> {
+        let fail_fast = error_policy == ErrorPolicy::FailFast;
+        let mut domain_buffer = SmallVec::<[char; 253]>::new();
+        let mut already_punycode = SmallVec::<[AlreadyAsciiLabel; 8]>::new();
+        // `process_inner` could be pasted inline here, but it's out of line in order
+        // to avoid duplicating that code when monomorphizing over `W` and `OutputUnicode`.
+        let (passthrough_up_to, is_bidi, had_errors) = self.process_inner(
+            domain_name,
+            ascii_deny_list,
+            hyphens,
+            fail_fast,
+            &mut domain_buffer,
+            &mut already_punycode,
+        );
+        if passthrough_up_to == domain_name.len() {
+            debug_assert!(!had_errors);
+            return Ok(ProcessingSuccess::Passthrough);
+        }
+        // Checked only after passthrough as a micro optimization.
+        if fail_fast && had_errors {
+            return Err(ProcessingError::ValidityError);
         }
-        let mut errors = processing(domain, self.config, &mut self.normalized, out);
-        self.output = core::mem::replace(out, String::with_capacity(out.len()));
-        let mut first = true;
-        for label in self.output.split('.') {
-            if !first {
-                out.push('.');
+        debug_assert_eq!(had_errors, domain_buffer.contains(&'\u{FFFD}'));
+        let without_dot = if let Some(without_dot) = domain_buffer.strip_suffix(&['.']) {
+            without_dot
+        } else {
+            &domain_buffer[..]
+        };
+        // unwrap is OK, because we always have at least one label
+        let tld = without_dot.rsplit(|c| *c == '.').next().unwrap();
+        let mut had_unicode_output = false;
+        let mut seen_label = false;
+        let mut already_punycode_iter = already_punycode.iter();
+        let mut passthrough_up_to_extended = passthrough_up_to;
+        let mut flushed_prefix = false;
+        for label in domain_buffer.split(|c| *c == '.') {
+            // Unwrap is OK, because there are supposed to be as many items in
+            // `already_punycode` as there are labels.
+            let input_punycode = *already_punycode_iter.next().unwrap();
+            if seen_label {
+                if flushed_prefix {
+                    sink.write_char('.')?;
+                } else {
+                    debug_assert_eq!(domain_name[passthrough_up_to_extended], b'.');
+                    passthrough_up_to_extended += 1;
+                    if passthrough_up_to_extended == domain_name.len() {
+                        debug_assert!(!had_errors);
+                        return Ok(ProcessingSuccess::Passthrough);
+                    }
+                }
             }
-            first = false;
-
-            if label.is_ascii() {
-                out.push_str(label);
-            } else {
-                let offset = out.len();
-                out.push_str(PUNYCODE_PREFIX);
-                if let Err(()) = punycode::encode_into(label.chars(), out) {
-                    errors.punycode = true;
-                    out.truncate(offset);
+            seen_label = true;
+
+            if let AlreadyAsciiLabel::MixedCaseAscii(mixed_case) = input_punycode {
+                if let Some(first_upper_case) =
+                    mixed_case.iter().position(|c| c.is_ascii_uppercase())
+                {
+                    let (head, tail) = mixed_case.split_at(first_upper_case);
+                    let slice_to_write = if flushed_prefix {
+                        head
+                    } else {
+                        flushed_prefix = true;
+                        passthrough_up_to_extended += head.len();
+                        debug_assert_ne!(passthrough_up_to_extended, domain_name.len());
+                        &domain_name[..passthrough_up_to_extended]
+                    };
+                    // SAFETY: `mixed_case` and `domain_name` up to `passthrough_up_to_extended` are known to be ASCII.
+                    sink.write_str(unsafe { core::str::from_utf8_unchecked(slice_to_write) })?;
+                    for c in tail.iter() {
+                        sink.write_char(char::from(c.to_ascii_lowercase()))?;
+                    }
+                } else if flushed_prefix {
+                    // SAFETY: `mixed_case` is known to be ASCII.
+                    sink.write_str(unsafe { core::str::from_utf8_unchecked(mixed_case) })?;
+                } else {
+                    passthrough_up_to_extended += mixed_case.len();
+                    if passthrough_up_to_extended == domain_name.len() {
+                        debug_assert!(!had_errors);
+                        return Ok(ProcessingSuccess::Passthrough);
+                    }
                 }
+                continue;
             }
-        }
-        errors
-    }
-
-    /// http://www.unicode.org/reports/tr46/#ToASCII
-    #[allow(clippy::wrong_self_convention)]
-    pub fn to_ascii(&mut self, domain: &str, out: &mut String) -> Result<(), Errors> {
-        let mut errors = self.to_ascii_inner(domain, out);
 
-        if self.config.verify_dns_length {
-            let domain = if out.ends_with('.') {
-                &out[..out.len() - 1]
+            let potentially_punycode = if fail_fast {
+                debug_assert!(classify_for_punycode(label) != PunycodeClassification::Error);
+                !is_ascii(label)
             } else {
-                &*out
+                classify_for_punycode(label) == PunycodeClassification::Unicode
             };
-            if domain.is_empty() || domain.split('.').any(|label| label.is_empty()) {
-                errors.too_short_for_dns = true;
-            }
-            if domain.len() > 253 || domain.split('.').any(|label| label.len() > 63) {
-                errors.too_long_for_dns = true;
+            let passthrough = if potentially_punycode {
+                let unicode = output_as_unicode(label, tld, is_bidi);
+                had_unicode_output |= unicode;
+                unicode
+            } else {
+                true
+            };
+            if passthrough {
+                if !flushed_prefix {
+                    flushed_prefix = true;
+                    // SAFETY: `domain_name` up to `passthrough_up_to_extended` is known to be ASCII.
+                    sink.write_str(unsafe {
+                        core::str::from_utf8_unchecked(&domain_name[..passthrough_up_to_extended])
+                    })?;
+                }
+                for c in label.iter().copied() {
+                    sink.write_char(c)?;
+                }
+            } else if let AlreadyAsciiLabel::MixedCasePunycode(mixed_case) = input_punycode {
+                if let Some(first_upper_case) =
+                    mixed_case.iter().position(|c| c.is_ascii_uppercase())
+                {
+                    let (head, tail) = mixed_case.split_at(first_upper_case);
+                    let slice_to_write = if flushed_prefix {
+                        head
+                    } else {
+                        flushed_prefix = true;
+                        passthrough_up_to_extended += head.len();
+                        debug_assert_ne!(passthrough_up_to_extended, domain_name.len());
+                        &domain_name[..passthrough_up_to_extended]
+                    };
+                    // SAFETY: `mixed_case` and `domain_name` up to `passthrough_up_to_extended` are known to be ASCII.
+                    sink.write_str(unsafe { core::str::from_utf8_unchecked(slice_to_write) })?;
+                    for c in tail.iter() {
+                        sink.write_char(char::from(c.to_ascii_lowercase()))?;
+                    }
+                } else if flushed_prefix {
+                    // SAFETY: `mixed_case` is known to be ASCII.
+                    sink.write_str(unsafe { core::str::from_utf8_unchecked(mixed_case) })?;
+                } else {
+                    passthrough_up_to_extended += mixed_case.len();
+                    if passthrough_up_to_extended == domain_name.len() {
+                        debug_assert!(!had_errors);
+                        return Ok(ProcessingSuccess::Passthrough);
+                    }
+                }
+            } else {
+                if !flushed_prefix {
+                    flushed_prefix = true;
+                    // SAFETY: `domain_name` up to `passthrough_up_to_extended` is known to be ASCII.
+                    sink.write_str(unsafe {
+                        core::str::from_utf8_unchecked(&domain_name[..passthrough_up_to_extended])
+                    })?;
+                }
+                write_punycode_label(label, sink)?;
             }
         }
 
-        errors.into()
-    }
-
-    /// http://www.unicode.org/reports/tr46/#ToUnicode
-    #[allow(clippy::wrong_self_convention)]
-    pub fn to_unicode(&mut self, domain: &str, out: &mut String) -> Result<(), Errors> {
-        if is_simple(domain) {
-            out.push_str(domain);
-            return Errors::default().into();
+        if had_errors {
+            return Err(ProcessingError::ValidityError);
         }
-        processing(domain, self.config, &mut self.normalized, out).into()
-    }
-}
 
-#[derive(Clone, Copy)]
-#[must_use]
-pub struct Config {
-    use_std3_ascii_rules: bool,
-    transitional_processing: bool,
-    verify_dns_length: bool,
-    check_hyphens: bool,
-    use_idna_2008_rules: bool,
-}
-
-/// The defaults are that of https://url.spec.whatwg.org/#idna
-impl Default for Config {
-    fn default() -> Self {
-        Config {
-            use_std3_ascii_rules: false,
-            transitional_processing: false,
-            check_hyphens: false,
-            // check_bidi: true,
-            // check_joiners: true,
+        if had_unicode_output {
+            if let Some(sink) = ascii_sink {
+                let mut seen_label = false;
+                let mut already_punycode_iter = already_punycode.iter();
+                let mut passthrough_up_to_extended = passthrough_up_to;
+                let mut flushed_prefix = false;
+                for label in domain_buffer.split(|c| *c == '.') {
+                    // Unwrap is OK, because there are supposed to be as many items in
+                    // `already_punycode` as there are labels.
+                    let input_punycode = *already_punycode_iter.next().unwrap();
+                    if seen_label {
+                        if flushed_prefix {
+                            sink.write_char('.')?;
+                        } else {
+                            debug_assert_eq!(domain_name[passthrough_up_to_extended], b'.');
+                            passthrough_up_to_extended += 1;
+                        }
+                    }
+                    seen_label = true;
+
+                    if let AlreadyAsciiLabel::MixedCaseAscii(mixed_case) = input_punycode {
+                        if let Some(first_upper_case) =
+                            mixed_case.iter().position(|c| c.is_ascii_uppercase())
+                        {
+                            let (head, tail) = mixed_case.split_at(first_upper_case);
+                            let slice_to_write = if flushed_prefix {
+                                head
+                            } else {
+                                flushed_prefix = true;
+                                passthrough_up_to_extended += head.len();
+                                debug_assert_ne!(passthrough_up_to_extended, domain_name.len());
+                                &domain_name[..passthrough_up_to_extended]
+                            };
+                            // SAFETY: `mixed_case` and `domain_name` up to `passthrough_up_to_extended` are known to be ASCII.
+                            sink.write_str(unsafe {
+                                core::str::from_utf8_unchecked(slice_to_write)
+                            })?;
+                            for c in tail.iter() {
+                                sink.write_char(char::from(c.to_ascii_lowercase()))?;
+                            }
+                        } else if flushed_prefix {
+                            // SAFETY: `mixed_case` is known to be ASCII.
+                            sink.write_str(unsafe { core::str::from_utf8_unchecked(mixed_case) })?;
+                        } else {
+                            passthrough_up_to_extended += mixed_case.len();
+                        }
+                        continue;
+                    }
 
-            // Only use for to_ascii, not to_unicode
-            verify_dns_length: false,
-            use_idna_2008_rules: false,
+                    if is_ascii(label) {
+                        if !flushed_prefix {
+                            flushed_prefix = true;
+                            // SAFETY: `domain_name` up to `passthrough_up_to_extended` is known to be ASCII.
+                            sink.write_str(unsafe {
+                                core::str::from_utf8_unchecked(
+                                    &domain_name[..passthrough_up_to_extended],
+                                )
+                            })?;
+                        }
+                        for c in label.iter().copied() {
+                            sink.write_char(c)?;
+                        }
+                    } else if let AlreadyAsciiLabel::MixedCasePunycode(mixed_case) = input_punycode
+                    {
+                        if let Some(first_upper_case) =
+                            mixed_case.iter().position(|c| c.is_ascii_uppercase())
+                        {
+                            let (head, tail) = mixed_case.split_at(first_upper_case);
+                            let slice_to_write = if flushed_prefix {
+                                head
+                            } else {
+                                flushed_prefix = true;
+                                passthrough_up_to_extended += head.len();
+                                debug_assert_ne!(passthrough_up_to_extended, domain_name.len());
+                                &domain_name[..passthrough_up_to_extended]
+                            };
+                            // SAFETY: `mixed_case` and `domain_name` up to `passthrough_up_to_extended` are known to be ASCII.
+                            sink.write_str(unsafe {
+                                core::str::from_utf8_unchecked(slice_to_write)
+                            })?;
+                            for c in tail.iter() {
+                                sink.write_char(char::from(c.to_ascii_lowercase()))?;
+                            }
+                        } else if flushed_prefix {
+                            // SAFETY: `mixed_case` is known to be ASCII.
+                            sink.write_str(unsafe { core::str::from_utf8_unchecked(mixed_case) })?;
+                        } else {
+                            passthrough_up_to_extended += mixed_case.len();
+                        }
+                    } else {
+                        if !flushed_prefix {
+                            flushed_prefix = true;
+                            // SAFETY: `domain_name` up to `passthrough_up_to_extended` is known to be ASCII.
+                            sink.write_str(unsafe {
+                                core::str::from_utf8_unchecked(
+                                    &domain_name[..passthrough_up_to_extended],
+                                )
+                            })?;
+                        }
+                        write_punycode_label(label, sink)?;
+                    }
+                }
+                if !flushed_prefix {
+                    // SAFETY: `domain_name` up to `passthrough_up_to_extended` is known to be ASCII.
+                    sink.write_str(unsafe {
+                        core::str::from_utf8_unchecked(&domain_name[..passthrough_up_to_extended])
+                    })?;
+                }
+            }
         }
-    }
-}
-
-impl Config {
-    #[inline]
-    pub fn use_std3_ascii_rules(mut self, value: bool) -> Self {
-        self.use_std3_ascii_rules = value;
-        self
-    }
-
-    #[inline]
-    pub fn transitional_processing(mut self, value: bool) -> Self {
-        self.transitional_processing = value;
-        self
+        Ok(ProcessingSuccess::WroteToSink)
     }
 
-    #[inline]
-    pub fn verify_dns_length(mut self, value: bool) -> Self {
-        self.verify_dns_length = value;
-        self
+    /// The part of `process` that doesn't need to be generic over the sink.
+    #[inline(always)]
+    fn process_inner<'a>(
+        &self,
+        domain_name: &'a [u8],
+        ascii_deny_list: AsciiDenyList,
+        hyphens: Hyphens,
+        fail_fast: bool,
+        domain_buffer: &mut SmallVec<[char; 253]>,
+        already_punycode: &mut SmallVec<[AlreadyAsciiLabel<'a>; 8]>,
+    ) -> (usize, bool, bool) {
+        // Sadly, this even faster-path ASCII tier is needed to avoid regressing
+        // performance.
+        let mut iter = domain_name.iter();
+        let mut most_recent_label_start = iter.clone();
+        loop {
+            if let Some(&b) = iter.next() {
+                if in_inclusive_range8(b, b'a', b'z') {
+                    continue;
+                }
+                if b == b'.' {
+                    most_recent_label_start = iter.clone();
+                    continue;
+                }
+                return self.process_innermost(
+                    domain_name,
+                    ascii_deny_list,
+                    hyphens,
+                    fail_fast,
+                    domain_buffer,
+                    already_punycode,
+                    most_recent_label_start.as_slice(),
+                );
+            } else {
+                // Success! The whole input passes through on the fastest path!
+                return (domain_name.len(), false, false);
+            }
+        }
     }
 
-    #[inline]
-    pub fn check_hyphens(mut self, value: bool) -> Self {
-        self.check_hyphens = value;
-        self
-    }
+    /// The part of `process` that doesn't need to be generic over the sink and
+    /// can avoid monomorphizing in the interest of code size.
+    /// Separating this into a different stack frame compared to `process_inner`
+    /// improves performance in the ICU4X case.
+    #[allow(clippy::too_many_arguments)]
+    #[inline(never)]
+    fn process_innermost<'a>(
+        &self,
+        domain_name: &'a [u8],
+        ascii_deny_list: AsciiDenyList,
+        hyphens: Hyphens,
+        fail_fast: bool,
+        domain_buffer: &mut SmallVec<[char; 253]>,
+        already_punycode: &mut SmallVec<[AlreadyAsciiLabel<'a>; 8]>,
+        tail: &'a [u8],
+    ) -> (usize, bool, bool) {
+        let deny_list = ascii_deny_list.bits;
+        let deny_list_deny_dot = deny_list | DOT_MASK;
+
+        let mut had_errors = false;
+
+        let mut passthrough_up_to = domain_name.len() - tail.len(); // Index into `domain_name`
+                                                                    // 253 ASCII characters is the max length for a valid domain name
+                                                                    // (excluding the root dot).
+        let mut current_label_start; // Index into `domain_buffer`
+        let mut seen_label = false;
+        let mut in_prefix = true;
+        for label in tail.split(|b| *b == b'.') {
+            // We check for passthrough only for the prefix. That is, if we
+            // haven't moved on and started filling `domain_buffer`. Keeping
+            // this stuff in one loop where the first items keep being skipped
+            // once they have been skipped at least once instead of working
+            // this into a fancier loop structure in order to make sure that
+            // no item from the iterator is lost or processed twice.
+            // Furthermore, after the passthrough fails, restarting the
+            // normalization process after each pre-existing ASCII dot also
+            // provides an opportunity for the processing to get back onto
+            // an ASCII fast path that bypasses the normalizer for ASCII
+            // after a pre-existing ASCII dot (pre-existing in the sense
+            // of not coming from e.g. normalizing an ideographic dot).
+            if in_prefix && is_passthrough_ascii_label(label) {
+                if seen_label {
+                    debug_assert_eq!(domain_name[passthrough_up_to], b'.');
+                    passthrough_up_to += 1;
+                }
+                seen_label = true;
 
-    #[inline]
-    pub fn use_idna_2008_rules(mut self, value: bool) -> Self {
-        self.use_idna_2008_rules = value;
-        self
-    }
+                passthrough_up_to += label.len();
+                continue;
+            }
+            if seen_label {
+                if in_prefix {
+                    debug_assert_eq!(domain_name[passthrough_up_to], b'.');
+                    passthrough_up_to += 1;
+                } else {
+                    domain_buffer.push('.');
+                }
+            }
+            seen_label = true;
+            in_prefix = false;
+            current_label_start = domain_buffer.len();
+            if !label.is_empty() {
+                let (ascii, non_ascii) = split_ascii_fast_path_prefix(label);
+                let non_punycode_ascii_label = if non_ascii.is_empty() {
+                    if has_punycode_prefix(ascii) {
+                        if (ascii.last() != Some(&b'-'))
+                            && (ascii.len() - 4 <= PUNYCODE_DECODE_MAX_INPUT_LENGTH)
+                        {
+                            if let Ok(decode) =
+                                Decoder::default().decode::<u8, InternalCaller>(&ascii[4..])
+                            {
+                                // 63 ASCII characters is the max length for a valid DNS label and xn-- takes 4
+                                // characters.
+                                let mut label_buffer = SmallVec::<[char; 59]>::new();
+                                label_buffer.extend(decode);
+
+                                if self.after_punycode_decode(
+                                    domain_buffer,
+                                    current_label_start,
+                                    &label_buffer,
+                                    deny_list_deny_dot,
+                                    fail_fast,
+                                    &mut had_errors,
+                                ) {
+                                    return (0, false, true);
+                                }
+
+                                if self.check_label(
+                                    hyphens,
+                                    &mut domain_buffer[current_label_start..],
+                                    fail_fast,
+                                    &mut had_errors,
+                                    true,
+                                    true,
+                                ) {
+                                    return (0, false, true);
+                                }
+                            } else {
+                                // Punycode failed
+                                if fail_fast {
+                                    return (0, false, true);
+                                }
+                                had_errors = true;
+                                domain_buffer.push('\u{FFFD}');
+                                let mut iter = ascii.iter();
+                                // Discard the first character that we replaced.
+                                let _ = iter.next();
+                                domain_buffer.extend(iter.map(|c| {
+                                    // Can't have dot here, so `deny_list` vs `deny_list_deny_dot` does
+                                    // not matter.
+                                    apply_ascii_deny_list_to_potentially_upper_case_ascii(
+                                        *c, deny_list,
+                                    )
+                                }));
+                            };
+                            // If there were errors, we won't be trying to use this
+                            // anyway later, so it's fine to put it here unconditionally.
+                            already_punycode.push(AlreadyAsciiLabel::MixedCasePunycode(label));
+                            continue;
+                        } else if fail_fast {
+                            return (0, false, true);
+                        }
+                        // Else fall through to the complex path and rediscover error
+                        // there.
+                        false
+                    } else {
+                        true
+                    }
+                } else {
+                    false
+                };
+                for c in ascii.iter().map(|c| {
+                    // Can't have dot here, so `deny_list` vs `deny_list_deny_dot` does
+                    // not matter.
+                    apply_ascii_deny_list_to_potentially_upper_case_ascii(*c, deny_list)
+                }) {
+                    if c == '\u{FFFD}' {
+                        if fail_fast {
+                            return (0, false, true);
+                        }
+                        had_errors = true;
+                    }
+                    domain_buffer.push(c);
+                }
+                if non_punycode_ascii_label {
+                    if hyphens != Hyphens::Allow
+                        && check_hyphens(
+                            &mut domain_buffer[current_label_start..],
+                            hyphens == Hyphens::CheckFirstLast,
+                            fail_fast,
+                            &mut had_errors,
+                        )
+                    {
+                        return (0, false, true);
+                    }
+                    already_punycode.push(if had_errors {
+                        AlreadyAsciiLabel::Other
+                    } else {
+                        AlreadyAsciiLabel::MixedCaseAscii(label)
+                    });
+                    continue;
+                }
+                already_punycode.push(AlreadyAsciiLabel::Other);
+                let mut first_needs_combining_mark_check = ascii.is_empty();
+                let mut needs_contextj_check = !non_ascii.is_empty();
+                let mut mapping = self
+                    .data
+                    .map_normalize(non_ascii.chars())
+                    .map(|c| apply_ascii_deny_list_to_lower_cased_unicode(c, deny_list));
+                loop {
+                    let n = mapping.next();
+                    match n {
+                        None | Some('.') => {
+                            if domain_buffer[current_label_start..]
+                                .starts_with(&['x', 'n', '-', '-'])
+                            {
+                                let mut punycode_precondition_failed = false;
+                                for c in domain_buffer[current_label_start + 4..].iter_mut() {
+                                    if !c.is_ascii() {
+                                        if fail_fast {
+                                            return (0, false, true);
+                                        }
+                                        had_errors = true;
+                                        *c = '\u{FFFD}';
+                                        punycode_precondition_failed = true;
+                                    }
+                                }
+
+                                if let Some(last) = domain_buffer.last_mut() {
+                                    if *last == '-' {
+                                        // Either there's nothing after the "xn--" prefix
+                                        // and we got the last hyphen of "xn--", or there
+                                        // are no Punycode digits after the last delimiter
+                                        // which would result in Punycode decode outputting
+                                        // ASCII only.
+                                        if fail_fast {
+                                            return (0, false, true);
+                                        }
+                                        had_errors = true;
+                                        *last = '\u{FFFD}';
+                                        punycode_precondition_failed = true;
+                                    }
+                                } else {
+                                    unreachable!();
+                                }
+
+                                // Reject excessively long input
+                                // https://github.com/whatwg/url/issues/824
+                                // https://unicode-org.atlassian.net/browse/ICU-13727
+                                if domain_buffer.len() - current_label_start - 4
+                                    > PUNYCODE_DECODE_MAX_INPUT_LENGTH
+                                {
+                                    if fail_fast {
+                                        return (0, false, true);
+                                    }
+                                    had_errors = true;
+                                    domain_buffer[current_label_start
+                                        + 4
+                                        + PUNYCODE_DECODE_MAX_INPUT_LENGTH] = '\u{FFFD}';
+                                    punycode_precondition_failed = true;
+                                }
+
+                                if !punycode_precondition_failed {
+                                    if let Ok(decode) = Decoder::default()
+                                        .decode::<char, InternalCaller>(
+                                            &domain_buffer[current_label_start + 4..],
+                                        )
+                                    {
+                                        first_needs_combining_mark_check = true;
+                                        needs_contextj_check = true;
+                                        // 63 ASCII characters is the max length for a valid DNS label and xn-- takes 4
+                                        // characters.
+                                        let mut label_buffer = SmallVec::<[char; 59]>::new();
+                                        label_buffer.extend(decode);
+
+                                        domain_buffer.truncate(current_label_start);
+                                        if self.after_punycode_decode(
+                                            domain_buffer,
+                                            current_label_start,
+                                            &label_buffer,
+                                            deny_list_deny_dot,
+                                            fail_fast,
+                                            &mut had_errors,
+                                        ) {
+                                            return (0, false, true);
+                                        }
+                                    } else {
+                                        // Punycode failed
+                                        if fail_fast {
+                                            return (0, false, true);
+                                        }
+                                        had_errors = true;
+                                        domain_buffer[current_label_start] = '\u{FFFD}';
+                                        needs_contextj_check = false; // ASCII label
+                                        first_needs_combining_mark_check = false;
+                                    };
+                                } else {
+                                    first_needs_combining_mark_check = false;
+                                    needs_contextj_check = false; // Non-ASCII already turned to U+FFFD.
+                                }
+                            }
+                            if self.check_label(
+                                hyphens,
+                                &mut domain_buffer[current_label_start..],
+                                fail_fast,
+                                &mut had_errors,
+                                first_needs_combining_mark_check,
+                                needs_contextj_check,
+                            ) {
+                                return (0, false, true);
+                            }
+
+                            if n.is_none() {
+                                break;
+                            }
+                            domain_buffer.push('.');
+                            current_label_start = domain_buffer.len();
+                            first_needs_combining_mark_check = true;
+                            needs_contextj_check = true;
+                            already_punycode.push(AlreadyAsciiLabel::Other);
+                        }
+                        Some(c) => {
+                            if c == '\u{FFFD}' {
+                                if fail_fast {
+                                    return (0, false, true);
+                                }
+                                had_errors = true;
+                            }
+                            domain_buffer.push(c);
+                        }
+                    }
+                }
+            } else {
+                // Empty label
+                already_punycode.push(AlreadyAsciiLabel::MixedCaseAscii(label));
+            }
+        }
 
-    /// http://www.unicode.org/reports/tr46/#ToASCII
-    pub fn to_ascii(self, domain: &str) -> Result<String, Errors> {
-        let mut result = String::with_capacity(domain.len());
-        let mut codec = Idna::new(self);
-        codec.to_ascii(domain, &mut result).map(|()| result)
-    }
+        let is_bidi = self.is_bidi(domain_buffer);
+        if is_bidi {
+            for label in domain_buffer.split_mut(|c| *c == '.') {
+                if let Some((first, tail)) = label.split_first_mut() {
+                    let first_bc = self.data.bidi_class(*first);
+                    if !FIRST_BC_MASK.intersects(first_bc.to_mask()) {
+                        // Neither RTL label nor LTR label
+                        if fail_fast {
+                            return (0, false, true);
+                        }
+                        had_errors = true;
+                        *first = '\u{FFFD}';
+                        continue;
+                    }
+                    let is_ltr = first_bc.is_ltr();
+                    // Trim NSM
+                    let mut middle = tail;
+                    #[allow(clippy::while_let_loop)]
+                    loop {
+                        if let Some((last, prior)) = middle.split_last_mut() {
+                            let last_bc = self.data.bidi_class(*last);
+                            if last_bc.is_nonspacing_mark() {
+                                middle = prior;
+                                continue;
+                            }
+                            let last_mask = if is_ltr { LAST_LTR_MASK } else { LAST_RTL_MASK };
+                            if !last_mask.intersects(last_bc.to_mask()) {
+                                if fail_fast {
+                                    return (0, false, true);
+                                }
+                                had_errors = true;
+                                *last = '\u{FFFD}';
+                            }
+                            if is_ltr {
+                                for c in prior.iter_mut() {
+                                    let bc = self.data.bidi_class(*c);
+                                    if !MIDDLE_LTR_MASK.intersects(bc.to_mask()) {
+                                        if fail_fast {
+                                            return (0, false, true);
+                                        }
+                                        had_errors = true;
+                                        *c = '\u{FFFD}';
+                                    }
+                                }
+                            } else {
+                                let mut numeral_state = RtlNumeralState::Undecided;
+                                for c in prior.iter_mut() {
+                                    let bc = self.data.bidi_class(*c);
+                                    if !MIDDLE_RTL_MASK.intersects(bc.to_mask()) {
+                                        if fail_fast {
+                                            return (0, false, true);
+                                        }
+                                        had_errors = true;
+                                        *c = '\u{FFFD}';
+                                    } else {
+                                        match numeral_state {
+                                            RtlNumeralState::Undecided => {
+                                                if bc.is_european_number() {
+                                                    numeral_state = RtlNumeralState::European;
+                                                } else if bc.is_arabic_number() {
+                                                    numeral_state = RtlNumeralState::Arabic;
+                                                }
+                                            }
+                                            RtlNumeralState::European => {
+                                                if bc.is_arabic_number() {
+                                                    if fail_fast {
+                                                        return (0, false, true);
+                                                    }
+                                                    had_errors = true;
+                                                    *c = '\u{FFFD}';
+                                                }
+                                            }
+                                            RtlNumeralState::Arabic => {
+                                                if bc.is_european_number() {
+                                                    if fail_fast {
+                                                        return (0, false, true);
+                                                    }
+                                                    had_errors = true;
+                                                    *c = '\u{FFFD}';
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                                if (numeral_state == RtlNumeralState::European
+                                    && last_bc.is_arabic_number())
+                                    || (numeral_state == RtlNumeralState::Arabic
+                                        && last_bc.is_european_number())
+                                {
+                                    if fail_fast {
+                                        return (0, false, true);
+                                    }
+                                    had_errors = true;
+                                    *last = '\u{FFFD}';
+                                }
+                            }
+                            break;
+                        } else {
+                            // One-character label or label where
+                            // everything after the first character
+                            // is just non-spacing marks.
+                            break;
+                        }
+                    }
+                }
+            }
+        }
 
-    /// http://www.unicode.org/reports/tr46/#ToUnicode
-    pub fn to_unicode(self, domain: &str) -> (String, Result<(), Errors>) {
-        let mut codec = Idna::new(self);
-        let mut out = String::with_capacity(domain.len());
-        let result = codec.to_unicode(domain, &mut out);
-        (out, result)
+        (passthrough_up_to, is_bidi, had_errors)
     }
-}
 
-fn is_bidi_domain(s: &str) -> bool {
-    for c in s.chars() {
-        if c.is_ascii_graphic() {
-            continue;
+    #[inline(never)]
+    fn after_punycode_decode(
+        &self,
+        domain_buffer: &mut SmallVec<[char; 253]>,
+        current_label_start: usize,
+        label_buffer: &[char],
+        deny_list_deny_dot: u128,
+        fail_fast: bool,
+        had_errors: &mut bool,
+    ) -> bool {
+        for c in self
+            .data
+            .normalize_validate(label_buffer.iter().copied())
+            .map(|c| apply_ascii_deny_list_to_lower_cased_unicode(c, deny_list_deny_dot))
+        {
+            if c == '\u{FFFD}' {
+                if fail_fast {
+                    return true;
+                }
+                *had_errors = true;
+            }
+            domain_buffer.push(c);
         }
-        match bidi_class(c) {
-            BidiClass::R | BidiClass::AL | BidiClass::AN => return true,
-            _ => {}
+        let normalized = &mut domain_buffer[current_label_start..];
+        if let Err(()) =
+            normalized
+                .iter_mut()
+                .zip(label_buffer.iter())
+                .try_for_each(|(norm_c, decoded_c)| {
+                    if *norm_c == *decoded_c {
+                        Ok(())
+                    } else {
+                        // Mark the first difference
+                        *norm_c = '\u{FFFD}';
+                        Err(())
+                    }
+                })
+        {
+            if fail_fast {
+                return true;
+            }
+            *had_errors = true;
         }
+        false
     }
-    false
-}
-
-/// Errors recorded during UTS #46 processing.
-///
-/// This is opaque for now, indicating what types of errors have been encountered at least once.
-/// More details may be exposed in the future.
-#[derive(Default)]
-pub struct Errors {
-    punycode: bool,
-    check_hyphens: bool,
-    check_bidi: bool,
-    start_combining_mark: bool,
-    invalid_mapping: bool,
-    nfc: bool,
-    disallowed_by_std3_ascii_rules: bool,
-    disallowed_mapped_in_std3: bool,
-    disallowed_character: bool,
-    too_long_for_dns: bool,
-    too_short_for_dns: bool,
-    disallowed_in_idna_2008: bool,
-}
 
-impl Errors {
-    fn is_err(&self) -> bool {
-        let Errors {
-            punycode,
-            check_hyphens,
-            check_bidi,
-            start_combining_mark,
-            invalid_mapping,
-            nfc,
-            disallowed_by_std3_ascii_rules,
-            disallowed_mapped_in_std3,
-            disallowed_character,
-            too_long_for_dns,
-            too_short_for_dns,
-            disallowed_in_idna_2008,
-        } = *self;
-        punycode
-            || check_hyphens
-            || check_bidi
-            || start_combining_mark
-            || invalid_mapping
-            || nfc
-            || disallowed_by_std3_ascii_rules
-            || disallowed_mapped_in_std3
-            || disallowed_character
-            || too_long_for_dns
-            || too_short_for_dns
-            || disallowed_in_idna_2008
-    }
-}
+    #[inline(never)]
+    fn check_label(
+        &self,
+        hyphens: Hyphens,
+        mut_label: &mut [char],
+        fail_fast: bool,
+        had_errors: &mut bool,
+        first_needs_combining_mark_check: bool,
+        needs_contextj_check: bool,
+    ) -> bool {
+        if hyphens != Hyphens::Allow
+            && check_hyphens(
+                mut_label,
+                hyphens == Hyphens::CheckFirstLast,
+                fail_fast,
+                had_errors,
+            )
+        {
+            return true;
+        }
+        if first_needs_combining_mark_check {
+            if let Some(first) = mut_label.first_mut() {
+                if self.data.is_mark(*first) {
+                    if fail_fast {
+                        return true;
+                    }
+                    *had_errors = true;
+                    *first = '\u{FFFD}';
+                }
+            }
+        }
+        if needs_contextj_check {
+            // ContextJ
+            for i in 0..mut_label.len() {
+                let c = mut_label[i];
+                if !in_inclusive_range_char(c, '\u{200C}', '\u{200D}') {
+                    continue;
+                }
+                let (head, joiner_and_tail) = mut_label.split_at_mut(i);
 
-impl fmt::Debug for Errors {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        let Errors {
-            punycode,
-            check_hyphens,
-            check_bidi,
-            start_combining_mark,
-            invalid_mapping,
-            nfc,
-            disallowed_by_std3_ascii_rules,
-            disallowed_mapped_in_std3,
-            disallowed_character,
-            too_long_for_dns,
-            too_short_for_dns,
-            disallowed_in_idna_2008,
-        } = *self;
-
-        let fields = [
-            ("punycode", punycode),
-            ("check_hyphens", check_hyphens),
-            ("check_bidi", check_bidi),
-            ("start_combining_mark", start_combining_mark),
-            ("invalid_mapping", invalid_mapping),
-            ("nfc", nfc),
-            (
-                "disallowed_by_std3_ascii_rules",
-                disallowed_by_std3_ascii_rules,
-            ),
-            ("disallowed_mapped_in_std3", disallowed_mapped_in_std3),
-            ("disallowed_character", disallowed_character),
-            ("too_long_for_dns", too_long_for_dns),
-            ("too_short_for_dns", too_short_for_dns),
-            ("disallowed_in_idna_2008", disallowed_in_idna_2008),
-        ];
-
-        let mut empty = true;
-        f.write_str("Errors { ")?;
-        for (name, val) in &fields {
-            if *val {
-                if !empty {
-                    f.write_str(", ")?;
+                if let Some((joiner, tail)) = joiner_and_tail.split_first_mut() {
+                    if let Some(previous) = head.last() {
+                        if self.data.is_virama(*previous) {
+                            continue;
+                        }
+                    } else {
+                        // No preceding character
+                        if fail_fast {
+                            return true;
+                        }
+                        *had_errors = true;
+                        *joiner = '\u{FFFD}';
+                        continue;
+                    }
+                    if c == '\u{200D}' {
+                        // ZWJ only has the virama rule
+                        if fail_fast {
+                            return true;
+                        }
+                        *had_errors = true;
+                        *joiner = '\u{FFFD}';
+                        continue;
+                    }
+                    debug_assert_eq!(c, '\u{200C}');
+                    if !self.has_appropriately_joining_char(
+                        head.iter().rev().copied(),
+                        LEFT_OR_DUAL_JOINING_MASK,
+                    ) || !self.has_appropriately_joining_char(
+                        tail.iter().copied(),
+                        RIGHT_OR_DUAL_JOINING_MASK,
+                    ) {
+                        if fail_fast {
+                            return true;
+                        }
+                        *had_errors = true;
+                        *joiner = '\u{FFFD}';
+                    }
+                } else {
+                    debug_assert!(false);
                 }
-                f.write_str(name)?;
-                empty = false;
             }
         }
 
-        if !empty {
-            f.write_str(" }")
-        } else {
-            f.write_str("}")
+        if !is_ascii(mut_label) && mut_label.len() > PUNYCODE_ENCODE_MAX_INPUT_LENGTH {
+            // Limit quadratic behavior
+            // https://github.com/whatwg/url/issues/824
+            // https://unicode-org.atlassian.net/browse/ICU-13727
+            if fail_fast {
+                return true;
+            }
+            *had_errors = true;
+            mut_label[PUNYCODE_ENCODE_MAX_INPUT_LENGTH] = '\u{FFFD}';
         }
+        false
     }
-}
 
-impl From<Errors> for Result<(), Errors> {
-    fn from(e: Errors) -> Result<(), Errors> {
-        if !e.is_err() {
-            Ok(())
-        } else {
-            Err(e)
+    #[inline(always)]
+    fn has_appropriately_joining_char<I: Iterator<Item = char>>(
+        &self,
+        iter: I,
+        required_mask: JoiningTypeMask,
+    ) -> bool {
+        for c in iter {
+            let jt = self.data.joining_type(c);
+            if jt.to_mask().intersects(required_mask) {
+                return true;
+            }
+            if jt.is_transparent() {
+                continue;
+            }
+            return false;
         }
+        false
     }
-}
-
-#[cfg(feature = "std")]
-impl std::error::Error for Errors {}
 
-impl fmt::Display for Errors {
-    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        fmt::Debug::fmt(self, f)
+    #[inline(always)]
+    fn is_bidi(&self, buffer: &[char]) -> bool {
+        for &c in buffer {
+            if c < '\u{0590}' {
+                // Below Hebrew
+                continue;
+            }
+            if in_inclusive_range_char(c, '\u{0900}', '\u{FB1C}') {
+                debug_assert_ne!(c, '\u{200F}'); // disallowed
+                continue;
+            }
+            if in_inclusive_range_char(c, '\u{1F000}', '\u{3FFFF}') {
+                continue;
+            }
+            if in_inclusive_range_char(c, '\u{FF00}', '\u{107FF}') {
+                continue;
+            }
+            if in_inclusive_range_char(c, '\u{11000}', '\u{1E7FF}') {
+                continue;
+            }
+            if RTL_MASK.intersects(self.data.bidi_class(c).to_mask()) {
+                return true;
+            }
+        }
+        false
     }
 }
 
-#[cfg(test)]
-mod tests {
-    use super::{find_char, Mapping};
-
-    #[test]
-    fn mapping_fast_path() {
-        assert_matches!(find_char('-'), &Mapping::Valid);
-        assert_matches!(find_char('.'), &Mapping::Valid);
-        for c in &['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] {
-            assert_matches!(find_char(*c), &Mapping::Valid);
+fn check_hyphens(
+    mut_label: &mut [char],
+    allow_third_fourth: bool,
+    fail_fast: bool,
+    had_errors: &mut bool,
+) -> bool {
+    if let Some(first) = mut_label.first_mut() {
+        if *first == '-' {
+            if fail_fast {
+                return true;
+            }
+            *had_errors = true;
+            *first = '\u{FFFD}';
         }
-        for c in &[
-            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
-            'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
-        ] {
-            assert_matches!(find_char(*c), &Mapping::Valid);
+    }
+    if let Some(last) = mut_label.last_mut() {
+        if *last == '-' {
+            if fail_fast {
+                return true;
+            }
+            *had_errors = true;
+            *last = '\u{FFFD}';
         }
     }
+    if allow_third_fourth {
+        return false;
+    }
+    if mut_label.len() >= 4 && mut_label[2] == '-' && mut_label[3] == '-' {
+        if fail_fast {
+            return true;
+        }
+        *had_errors = true;
+        mut_label[2] = '\u{FFFD}';
+        mut_label[3] = '\u{FFFD}';
+    }
+    false
 }
diff --git a/vendor/idna/src/uts46_mapping_table.rs b/vendor/idna/src/uts46_mapping_table.rs
deleted file mode 100644
index 7eb2aadf..00000000
--- a/vendor/idna/src/uts46_mapping_table.rs
+++ /dev/null
@@ -1,15256 +0,0 @@
-// Copyright 2013-2020 The rust-url developers.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// Generated by make_idna_table.py
-
-static TABLE: &[(char, u16)] = &[
-    ('\u{0}', 32768),
-    ('\u{2d}', 32769),
-    ('\u{2f}', 32770),
-    ('\u{30}', 32771),
-    ('\u{3a}', 32772),
-    ('\u{41}', 5),
-    ('\u{5b}', 32799),
-    ('\u{61}', 32800),
-    ('\u{7b}', 32801),
-    ('\u{80}', 32802),
-    ('\u{a0}', 32803),
-    ('\u{a1}', 32804),
-    ('\u{a8}', 37),
-    ('\u{ab}', 32808),
-    ('\u{ad}', 41),
-    ('\u{b0}', 32812),
-    ('\u{b2}', 45),
-    ('\u{e0}', 32859),
-    ('\u{f7}', 32860),
-    ('\u{f8}', 32861),
-    ('\u{100}', 94),
-    ('\u{132}', 32912),
-    ('\u{134}', 145),
-    ('\u{137}', 32916),
-    ('\u{139}', 149),
-    ('\u{13f}', 32923),
-    ('\u{141}', 156),
-    ('\u{18c}', 32999),
-    ('\u{18e}', 232),
-    ('\u{199}', 33011),
-    ('\u{19c}', 244),
-    ('\u{1aa}', 33026),
-    ('\u{1ac}', 259),
-    ('\u{1b9}', 33040),
-    ('\u{1bc}', 33041),
-    ('\u{1bd}', 33042),
-    ('\u{1c4}', 33043),
-    ('\u{1c7}', 33044),
-    ('\u{1ca}', 33045),
-    ('\u{1cd}', 278),
-    ('\u{1dc}', 33061),
-    ('\u{1de}', 294),
-    ('\u{1ef}', 33079),
-    ('\u{1f1}', 33080),
-    ('\u{1f4}', 313),
-    ('\u{233}', 33144),
-    ('\u{23a}', 377),
-    ('\u{23f}', 33150),
-    ('\u{241}', 383),
-    ('\u{24f}', 33165),
-    ('\u{2b0}', 398),
-    ('\u{2b9}', 33175),
-    ('\u{2c2}', 33176),
-    ('\u{2c6}', 33177),
-    ('\u{2d2}', 33178),
-    ('\u{2d8}', 411),
-    ('\u{2de}', 33185),
-    ('\u{2e0}', 418),
-    ('\u{2e5}', 33191),
-    ('\u{2ec}', 424),
-    ('\u{2ef}', 33195),
-    ('\u{300}', 33196),
-    ('\u{340}', 429),
-    ('\u{346}', 33203),
-    ('\u{34f}', 33204),
-    ('\u{350}', 33205),
-    ('\u{370}', 438),
-    ('\u{378}', 33214),
-    ('\u{37a}', 33215),
-    ('\u{37b}', 33216),
-    ('\u{37e}', 449),
-    ('\u{380}', 33219),
-    ('\u{384}', 452),
-    ('\u{3ac}', 33260),
-    ('\u{3c2}', 33261),
-    ('\u{3c3}', 33262),
-    ('\u{3cf}', 495),
-    ('\u{3fb}', 33307),
-    ('\u{3fd}', 540),
-    ('\u{430}', 33359),
-    ('\u{460}', 592),
-    ('\u{483}', 33395),
-    ('\u{488}', 33396),
-    ('\u{48a}', 629),
-    ('\u{4ce}', 33465),
-    ('\u{4d0}', 698),
-    ('\u{557}', 33601),
-    ('\u{559}', 33602),
-    ('\u{55a}', 33603),
-    ('\u{560}', 33604),
-    ('\u{587}', 837),
-    ('\u{589}', 33607),
-    ('\u{58b}', 33608),
-    ('\u{58d}', 33609),
-    ('\u{590}', 33610),
-    ('\u{591}', 33611),
-    ('\u{5be}', 844),
-    ('\u{5c1}', 33615),
-    ('\u{5c3}', 33616),
-    ('\u{5c4}', 33617),
-    ('\u{5c6}', 850),
-    ('\u{5c8}', 33620),
-    ('\u{5d0}', 33621),
-    ('\u{5eb}', 33622),
-    ('\u{5ef}', 33623),
-    ('\u{5f5}', 33624),
-    ('\u{606}', 33625),
-    ('\u{610}', 33626),
-    ('\u{61b}', 33627),
-    ('\u{61c}', 33628),
-    ('\u{61e}', 33629),
-    ('\u{620}', 33630),
-    ('\u{640}', 33631),
-    ('\u{641}', 33632),
-    ('\u{66a}', 33633),
-    ('\u{66e}', 33634),
-    ('\u{675}', 867),
-    ('\u{679}', 33639),
-    ('\u{6d4}', 33640),
-    ('\u{6d5}', 33641),
-    ('\u{6dd}', 874),
-    ('\u{6df}', 33644),
-    ('\u{6e9}', 33645),
-    ('\u{6ea}', 33646),
-    ('\u{700}', 33647),
-    ('\u{70e}', 33648),
-    ('\u{710}', 33649),
-    ('\u{74b}', 33650),
-    ('\u{74d}', 33651),
-    ('\u{7b2}', 33652),
-    ('\u{7c0}', 33653),
-    ('\u{7f6}', 33654),
-    ('\u{7fb}', 33655),
-    ('\u{7fd}', 33656),
-    ('\u{7fe}', 33657),
-    ('\u{800}', 33658),
-    ('\u{82e}', 33659),
-    ('\u{830}', 33660),
-    ('\u{83f}', 33661),
-    ('\u{840}', 33662),
-    ('\u{85c}', 33663),
-    ('\u{85e}', 896),
-    ('\u{860}', 33666),
-    ('\u{86b}', 33667),
-    ('\u{8a0}', 33668),
-    ('\u{8b5}', 33669),
-    ('\u{8b6}', 33670),
-    ('\u{8c8}', 33671),
-    ('\u{8d3}', 33672),
-    ('\u{8e2}', 33673),
-    ('\u{8e3}', 33674),
-    ('\u{958}', 907),
-    ('\u{960}', 33683),
-    ('\u{964}', 33684),
-    ('\u{966}', 33685),
-    ('\u{970}', 33686),
-    ('\u{971}', 33687),
-    ('\u{984}', 33688),
-    ('\u{985}', 33689),
-    ('\u{98d}', 33690),
-    ('\u{98f}', 33691),
-    ('\u{991}', 33692),
-    ('\u{993}', 33693),
-    ('\u{9a9}', 33694),
-    ('\u{9aa}', 33695),
-    ('\u{9b1}', 928),
-    ('\u{9b3}', 33698),
-    ('\u{9b6}', 33699),
-    ('\u{9ba}', 33700),
-    ('\u{9bc}', 33701),
-    ('\u{9c5}', 33702),
-    ('\u{9c7}', 33703),
-    ('\u{9c9}', 33704),
-    ('\u{9cb}', 33705),
-    ('\u{9cf}', 33706),
-    ('\u{9d7}', 33707),
-    ('\u{9d8}', 33708),
-    ('\u{9dc}', 941),
-    ('\u{9e0}', 33713),
-    ('\u{9e4}', 33714),
-    ('\u{9e6}', 33715),
-    ('\u{9f2}', 33716),
-    ('\u{9fc}', 949),
-    ('\u{9ff}', 33720),
-    ('\u{a01}', 33721),
-    ('\u{a04}', 33722),
-    ('\u{a05}', 33723),
-    ('\u{a0b}', 33724),
-    ('\u{a0f}', 33725),
-    ('\u{a11}', 33726),
-    ('\u{a13}', 33727),
-    ('\u{a29}', 33728),
-    ('\u{a2a}', 33729),
-    ('\u{a31}', 962),
-    ('\u{a38}', 33737),
-    ('\u{a3a}', 33738),
-    ('\u{a3c}', 971),
-    ('\u{a3e}', 33741),
-    ('\u{a43}', 33742),
-    ('\u{a47}', 33743),
-    ('\u{a49}', 33744),
-    ('\u{a4b}', 33745),
-    ('\u{a4e}', 33746),
-    ('\u{a51}', 33747),
-    ('\u{a52}', 33748),
-    ('\u{a59}', 981),
-    ('\u{a5f}', 33755),
-    ('\u{a66}', 33756),
-    ('\u{a76}', 33757),
-    ('\u{a77}', 33758),
-    ('\u{a81}', 33759),
-    ('\u{a84}', 33760),
-    ('\u{a85}', 33761),
-    ('\u{a8e}', 33762),
-    ('\u{a8f}', 33763),
-    ('\u{a92}', 33764),
-    ('\u{a93}', 33765),
-    ('\u{aa9}', 33766),
-    ('\u{aaa}', 33767),
-    ('\u{ab1}', 33768),
-    ('\u{ab2}', 33769),
-    ('\u{ab4}', 33770),
-    ('\u{ab5}', 33771),
-    ('\u{aba}', 33772),
-    ('\u{abc}', 33773),
-    ('\u{ac6}', 33774),
-    ('\u{ac7}', 33775),
-    ('\u{aca}', 33776),
-    ('\u{acb}', 33777),
-    ('\u{ace}', 33778),
-    ('\u{ad0}', 33779),
-    ('\u{ad1}', 33780),
-    ('\u{ae0}', 33781),
-    ('\u{ae4}', 33782),
-    ('\u{ae6}', 33783),
-    ('\u{af0}', 33784),
-    ('\u{af2}', 33785),
-    ('\u{af9}', 33786),
-    ('\u{b00}', 33787),
-    ('\u{b01}', 33788),
-    ('\u{b04}', 33789),
-    ('\u{b05}', 33790),
-    ('\u{b0d}', 33791),
-    ('\u{b0f}', 33792),
-    ('\u{b11}', 33793),
-    ('\u{b13}', 33794),
-    ('\u{b29}', 33795),
-    ('\u{b2a}', 33796),
-    ('\u{b31}', 33797),
-    ('\u{b32}', 33798),
-    ('\u{b34}', 33799),
-    ('\u{b35}', 33800),
-    ('\u{b3a}', 33801),
-    ('\u{b3c}', 33802),
-    ('\u{b45}', 33803),
-    ('\u{b47}', 33804),
-    ('\u{b49}', 33805),
-    ('\u{b4b}', 33806),
-    ('\u{b4e}', 33807),
-    ('\u{b55}', 33808),
-    ('\u{b58}', 33809),
-    ('\u{b5c}', 1042),
-    ('\u{b5f}', 33813),
-    ('\u{b64}', 33814),
-    ('\u{b66}', 33815),
-    ('\u{b70}', 1048),
-    ('\u{b72}', 33818),
-    ('\u{b78}', 33819),
-    ('\u{b82}', 33820),
-    ('\u{b84}', 33821),
-    ('\u{b85}', 33822),
-    ('\u{b8b}', 33823),
-    ('\u{b8e}', 33824),
-    ('\u{b91}', 33825),
-    ('\u{b92}', 33826),
-    ('\u{b96}', 33827),
-    ('\u{b99}', 33828),
-    ('\u{b9b}', 1061),
-    ('\u{b9e}', 33832),
-    ('\u{ba0}', 33833),
-    ('\u{ba3}', 33834),
-    ('\u{ba5}', 33835),
-    ('\u{ba8}', 33836),
-    ('\u{bab}', 33837),
-    ('\u{bae}', 33838),
-    ('\u{bba}', 33839),
-    ('\u{bbe}', 33840),
-    ('\u{bc3}', 33841),
-    ('\u{bc6}', 33842),
-    ('\u{bc9}', 33843),
-    ('\u{bca}', 33844),
-    ('\u{bce}', 33845),
-    ('\u{bd0}', 33846),
-    ('\u{bd1}', 33847),
-    ('\u{bd7}', 33848),
-    ('\u{bd8}', 33849),
-    ('\u{be6}', 33850),
-    ('\u{bf0}', 33851),
-    ('\u{bfb}', 33852),
-    ('\u{c00}', 33853),
-    ('\u{c0d}', 33854),
-    ('\u{c0e}', 33855),
-    ('\u{c11}', 33856),
-    ('\u{c12}', 33857),
-    ('\u{c29}', 33858),
-    ('\u{c2a}', 33859),
-    ('\u{c3a}', 33860),
-    ('\u{c3d}', 33861),
-    ('\u{c45}', 33862),
-    ('\u{c46}', 33863),
-    ('\u{c49}', 33864),
-    ('\u{c4a}', 33865),
-    ('\u{c4e}', 33866),
-    ('\u{c55}', 33867),
-    ('\u{c57}', 33868),
-    ('\u{c58}', 33869),
-    ('\u{c5b}', 33870),
-    ('\u{c60}', 33871),
-    ('\u{c64}', 33872),
-    ('\u{c66}', 33873),
-    ('\u{c70}', 33874),
-    ('\u{c77}', 33875),
-    ('\u{c80}', 33876),
-    ('\u{c84}', 33877),
-    ('\u{c85}', 33878),
-    ('\u{c8d}', 33879),
-    ('\u{c8e}', 33880),
-    ('\u{c91}', 33881),
-    ('\u{c92}', 33882),
-    ('\u{ca9}', 33883),
-    ('\u{caa}', 33884),
-    ('\u{cb4}', 33885),
-    ('\u{cb5}', 33886),
-    ('\u{cba}', 33887),
-    ('\u{cbc}', 33888),
-    ('\u{cc5}', 33889),
-    ('\u{cc6}', 33890),
-    ('\u{cc9}', 33891),
-    ('\u{cca}', 33892),
-    ('\u{cce}', 33893),
-    ('\u{cd5}', 33894),
-    ('\u{cd7}', 33895),
-    ('\u{cde}', 1128),
-    ('\u{ce0}', 33898),
-    ('\u{ce4}', 33899),
-    ('\u{ce6}', 33900),
-    ('\u{cf0}', 33901),
-    ('\u{cf1}', 33902),
-    ('\u{cf3}', 33903),
-    ('\u{d00}', 33904),
-    ('\u{d0d}', 33905),
-    ('\u{d0e}', 33906),
-    ('\u{d11}', 33907),
-    ('\u{d12}', 33908),
-    ('\u{d45}', 33909),
-    ('\u{d46}', 33910),
-    ('\u{d49}', 33911),
-    ('\u{d4a}', 33912),
-    ('\u{d4f}', 33913),
-    ('\u{d50}', 33914),
-    ('\u{d54}', 33915),
-    ('\u{d58}', 33916),
-    ('\u{d5f}', 33917),
-    ('\u{d64}', 33918),
-    ('\u{d66}', 33919),
-    ('\u{d70}', 33920),
-    ('\u{d7a}', 33921),
-    ('\u{d80}', 33922),
-    ('\u{d81}', 33923),
-    ('\u{d84}', 33924),
-    ('\u{d85}', 33925),
-    ('\u{d97}', 33926),
-    ('\u{d9a}', 33927),
-    ('\u{db2}', 33928),
-    ('\u{db3}', 33929),
-    ('\u{dbc}', 1162),
-    ('\u{dbe}', 33932),
-    ('\u{dc0}', 33933),
-    ('\u{dc7}', 33934),
-    ('\u{dca}', 33935),
-    ('\u{dcb}', 33936),
-    ('\u{dcf}', 33937),
-    ('\u{dd5}', 1170),
-    ('\u{dd8}', 33941),
-    ('\u{de0}', 33942),
-    ('\u{de6}', 33943),
-    ('\u{df0}', 33944),
-    ('\u{df2}', 33945),
-    ('\u{df4}', 33946),
-    ('\u{df5}', 33947),
-    ('\u{e01}', 33948),
-    ('\u{e33}', 33949),
-    ('\u{e34}', 33950),
-    ('\u{e3b}', 33951),
-    ('\u{e3f}', 33952),
-    ('\u{e40}', 33953),
-    ('\u{e4f}', 33954),
-    ('\u{e50}', 33955),
-    ('\u{e5a}', 33956),
-    ('\u{e5c}', 33957),
-    ('\u{e81}', 33958),
-    ('\u{e83}', 1191),
-    ('\u{e86}', 33962),
-    ('\u{e8b}', 33963),
-    ('\u{e8c}', 33964),
-    ('\u{ea4}', 1197),
-    ('\u{ea7}', 33968),
-    ('\u{eb3}', 33969),
-    ('\u{eb4}', 33970),
-    ('\u{ebe}', 33971),
-    ('\u{ec0}', 33972),
-    ('\u{ec5}', 1205),
-    ('\u{ec8}', 33976),
-    ('\u{ece}', 33977),
-    ('\u{ed0}', 33978),
-    ('\u{eda}', 33979),
-    ('\u{edc}', 1212),
-    ('\u{ede}', 33982),
-    ('\u{ee0}', 33983),
-    ('\u{f00}', 33984),
-    ('\u{f01}', 33985),
-    ('\u{f0b}', 1218),
-    ('\u{f0d}', 33988),
-    ('\u{f18}', 33989),
-    ('\u{f1a}', 33990),
-    ('\u{f20}', 33991),
-    ('\u{f2a}', 33992),
-    ('\u{f35}', 1225),
-    ('\u{f3a}', 33998),
-    ('\u{f3e}', 33999),
-    ('\u{f43}', 34000),
-    ('\u{f44}', 34001),
-    ('\u{f48}', 34002),
-    ('\u{f49}', 34003),
-    ('\u{f4d}', 34004),
-    ('\u{f4e}', 34005),
-    ('\u{f52}', 34006),
-    ('\u{f53}', 34007),
-    ('\u{f57}', 34008),
-    ('\u{f58}', 34009),
-    ('\u{f5c}', 34010),
-    ('\u{f5d}', 34011),
-    ('\u{f69}', 34012),
-    ('\u{f6a}', 34013),
-    ('\u{f6d}', 34014),
-    ('\u{f71}', 34015),
-    ('\u{f73}', 1248),
-    ('\u{f7a}', 34023),
-    ('\u{f81}', 34024),
-    ('\u{f82}', 34025),
-    ('\u{f85}', 34026),
-    ('\u{f86}', 34027),
-    ('\u{f93}', 34028),
-    ('\u{f94}', 34029),
-    ('\u{f98}', 34030),
-    ('\u{f99}', 34031),
-    ('\u{f9d}', 34032),
-    ('\u{f9e}', 34033),
-    ('\u{fa2}', 34034),
-    ('\u{fa3}', 34035),
-    ('\u{fa7}', 34036),
-    ('\u{fa8}', 34037),
-    ('\u{fac}', 34038),
-    ('\u{fad}', 34039),
-    ('\u{fb9}', 34040),
-    ('\u{fba}', 34041),
-    ('\u{fbd}', 34042),
-    ('\u{fbe}', 34043),
-    ('\u{fc6}', 34044),
-    ('\u{fc7}', 34045),
-    ('\u{fcd}', 34046),
-    ('\u{fce}', 34047),
-    ('\u{fdb}', 34048),
-    ('\u{1000}', 34049),
-    ('\u{104a}', 34050),
-    ('\u{1050}', 34051),
-    ('\u{109e}', 34052),
-    ('\u{10a0}', 34053),
-    ('\u{10c7}', 34054),
-    ('\u{10c8}', 34055),
-    ('\u{10cd}', 34056),
-    ('\u{10ce}', 34057),
-    ('\u{10d0}', 34058),
-    ('\u{10fb}', 1291),
-    ('\u{10fd}', 34061),
-    ('\u{1100}', 34062),
-    ('\u{115f}', 34063),
-    ('\u{1161}', 34064),
-    ('\u{1200}', 34065),
-    ('\u{1249}', 34066),
-    ('\u{124a}', 34067),
-    ('\u{124e}', 34068),
-    ('\u{1250}', 34069),
-    ('\u{1257}', 1302),
-    ('\u{125a}', 34073),
-    ('\u{125e}', 34074),
-    ('\u{1260}', 34075),
-    ('\u{1289}', 34076),
-    ('\u{128a}', 34077),
-    ('\u{128e}', 34078),
-    ('\u{1290}', 34079),
-    ('\u{12b1}', 34080),
-    ('\u{12b2}', 34081),
-    ('\u{12b6}', 34082),
-    ('\u{12b8}', 34083),
-    ('\u{12bf}', 1316),
-    ('\u{12c2}', 34087),
-    ('\u{12c6}', 34088),
-    ('\u{12c8}', 34089),
-    ('\u{12d7}', 34090),
-    ('\u{12d8}', 34091),
-    ('\u{1311}', 34092),
-    ('\u{1312}', 34093),
-    ('\u{1316}', 34094),
-    ('\u{1318}', 34095),
-    ('\u{135b}', 34096),
-    ('\u{135d}', 34097),
-    ('\u{1360}', 34098),
-    ('\u{137d}', 34099),
-    ('\u{1380}', 34100),
-    ('\u{1390}', 34101),
-    ('\u{139a}', 34102),
-    ('\u{13a0}', 34103),
-    ('\u{13f6}', 34104),
-    ('\u{13f8}', 1337),
-    ('\u{13fe}', 34111),
-    ('\u{1400}', 34112),
-    ('\u{1401}', 34113),
-    ('\u{166d}', 34114),
-    ('\u{166f}', 34115),
-    ('\u{1680}', 34116),
-    ('\u{1681}', 34117),
-    ('\u{169b}', 34118),
-    ('\u{169d}', 34119),
-    ('\u{16a0}', 34120),
-    ('\u{16eb}', 34121),
-    ('\u{16f1}', 34122),
-    ('\u{16f9}', 34123),
-    ('\u{1700}', 34124),
-    ('\u{170d}', 34125),
-    ('\u{170e}', 34126),
-    ('\u{1715}', 34127),
-    ('\u{1720}', 34128),
-    ('\u{1735}', 34129),
-    ('\u{1737}', 34130),
-    ('\u{1740}', 34131),
-    ('\u{1754}', 34132),
-    ('\u{1760}', 34133),
-    ('\u{176d}', 34134),
-    ('\u{176e}', 34135),
-    ('\u{1771}', 34136),
-    ('\u{1772}', 34137),
-    ('\u{1774}', 34138),
-    ('\u{1780}', 34139),
-    ('\u{17b4}', 34140),
-    ('\u{17b6}', 34141),
-    ('\u{17d4}', 34142),
-    ('\u{17d7}', 34143),
-    ('\u{17d8}', 34144),
-    ('\u{17dc}', 34145),
-    ('\u{17de}', 34146),
-    ('\u{17e0}', 34147),
-    ('\u{17ea}', 34148),
-    ('\u{17f0}', 34149),
-    ('\u{17fa}', 34150),
-    ('\u{1800}', 34151),
-    ('\u{1806}', 34152),
-    ('\u{1807}', 34153),
-    ('\u{180b}', 34154),
-    ('\u{180e}', 34155),
-    ('\u{1810}', 34156),
-    ('\u{181a}', 34157),
-    ('\u{1820}', 34158),
-    ('\u{1879}', 34159),
-    ('\u{1880}', 34160),
-    ('\u{18ab}', 34161),
-    ('\u{18b0}', 34162),
-    ('\u{18f6}', 34163),
-    ('\u{1900}', 34164),
-    ('\u{191f}', 34165),
-    ('\u{1920}', 34166),
-    ('\u{192c}', 34167),
-    ('\u{1930}', 34168),
-    ('\u{193c}', 34169),
-    ('\u{1940}', 34170),
-    ('\u{1941}', 34171),
-    ('\u{1944}', 34172),
-    ('\u{1946}', 34173),
-    ('\u{196e}', 34174),
-    ('\u{1970}', 34175),
-    ('\u{1975}', 34176),
-    ('\u{1980}', 34177),
-    ('\u{19ac}', 34178),
-    ('\u{19b0}', 34179),
-    ('\u{19ca}', 34180),
-    ('\u{19d0}', 34181),
-    ('\u{19da}', 34182),
-    ('\u{19db}', 34183),
-    ('\u{19de}', 34184),
-    ('\u{1a00}', 34185),
-    ('\u{1a1c}', 34186),
-    ('\u{1a1e}', 34187),
-    ('\u{1a20}', 34188),
-    ('\u{1a5f}', 34189),
-    ('\u{1a60}', 34190),
-    ('\u{1a7d}', 34191),
-    ('\u{1a7f}', 34192),
-    ('\u{1a8a}', 34193),
-    ('\u{1a90}', 34194),
-    ('\u{1a9a}', 34195),
-    ('\u{1aa0}', 34196),
-    ('\u{1aa7}', 34197),
-    ('\u{1aa8}', 34198),
-    ('\u{1aae}', 34199),
-    ('\u{1ab0}', 34200),
-    ('\u{1abe}', 34201),
-    ('\u{1abf}', 34202),
-    ('\u{1ac1}', 34203),
-    ('\u{1b00}', 34204),
-    ('\u{1b4c}', 34205),
-    ('\u{1b50}', 34206),
-    ('\u{1b5a}', 34207),
-    ('\u{1b6b}', 34208),
-    ('\u{1b74}', 34209),
-    ('\u{1b7d}', 34210),
-    ('\u{1b80}', 34211),
-    ('\u{1bf4}', 34212),
-    ('\u{1bfc}', 34213),
-    ('\u{1c00}', 34214),
-    ('\u{1c38}', 34215),
-    ('\u{1c3b}', 34216),
-    ('\u{1c40}', 34217),
-    ('\u{1c4a}', 34218),
-    ('\u{1c4d}', 34219),
-    ('\u{1c7e}', 34220),
-    ('\u{1c80}', 1453),
-    ('\u{1c84}', 34225),
-    ('\u{1c86}', 1458),
-    ('\u{1c89}', 34229),
-    ('\u{1c90}', 1462),
-    ('\u{1cbb}', 34273),
-    ('\u{1cbd}', 1506),
-    ('\u{1cc0}', 34277),
-    ('\u{1cc8}', 34278),
-    ('\u{1cd0}', 34279),
-    ('\u{1cd3}', 34280),
-    ('\u{1cd4}', 34281),
-    ('\u{1cfb}', 34282),
-    ('\u{1d00}', 34283),
-    ('\u{1d2c}', 1516),
-    ('\u{1d6b}', 34347),
-    ('\u{1d78}', 34348),
-    ('\u{1d79}', 34349),
-    ('\u{1d9b}', 1582),
-    ('\u{1dc0}', 34387),
-    ('\u{1dfa}', 34388),
-    ('\u{1dfb}', 34389),
-    ('\u{1e00}', 1622),
-    ('\u{1e95}', 34539),
-    ('\u{1e9a}', 1772),
-    ('\u{1e9c}', 34542),
-    ('\u{1e9e}', 1775),
-    ('\u{1eff}', 34640),
-    ('\u{1f08}', 1873),
-    ('\u{1f10}', 34649),
-    ('\u{1f16}', 34650),
-    ('\u{1f18}', 1883),
-    ('\u{1f1e}', 34657),
-    ('\u{1f20}', 34658),
-    ('\u{1f28}', 1891),
-    ('\u{1f30}', 34667),
-    ('\u{1f38}', 1900),
-    ('\u{1f40}', 34676),
-    ('\u{1f46}', 34677),
-    ('\u{1f48}', 1910),
-    ('\u{1f4e}', 34684),
-    ('\u{1f50}', 34685),
-    ('\u{1f58}', 1918),
-    ('\u{1f60}', 34694),
-    ('\u{1f68}', 1927),
-    ('\u{1f7e}', 34717),
-    ('\u{1f80}', 1950),
-    ('\u{1fb0}', 34766),
-    ('\u{1fb2}', 1999),
-    ('\u{1fd0}', 34797),
-    ('\u{1fd3}', 34798),
-    ('\u{1fd4}', 34799),
-    ('\u{1fd6}', 34800),
-    ('\u{1fd8}', 2033),
-    ('\u{1fe0}', 34809),
-    ('\u{1fe3}', 34810),
-    ('\u{1fe4}', 34811),
-    ('\u{1fe8}', 2044),
-    ('\u{1ff0}', 34820),
-    ('\u{1ff2}', 2053),
-    ('\u{2000}', 34835),
-    ('\u{200b}', 34836),
-    ('\u{200c}', 34837),
-    ('\u{200e}', 34838),
-    ('\u{2010}', 2071),
-    ('\u{2012}', 34841),
-    ('\u{2017}', 34842),
-    ('\u{2018}', 34843),
-    ('\u{2024}', 34844),
-    ('\u{2027}', 34845),
-    ('\u{2028}', 34846),
-    ('\u{202f}', 34847),
-    ('\u{2030}', 34848),
-    ('\u{2033}', 2081),
-    ('\u{2038}', 34854),
-    ('\u{203c}', 2087),
-    ('\u{203f}', 34858),
-    ('\u{2047}', 2091),
-    ('\u{204a}', 34862),
-    ('\u{2057}', 34863),
-    ('\u{2058}', 34864),
-    ('\u{205f}', 2097),
-    ('\u{2061}', 34867),
-    ('\u{2064}', 34868),
-    ('\u{2065}', 34869),
-    ('\u{2070}', 2102),
-    ('\u{2072}', 34872),
-    ('\u{2074}', 2105),
-    ('\u{209d}', 34914),
-    ('\u{20a0}', 34915),
-    ('\u{20a8}', 34916),
-    ('\u{20a9}', 34917),
-    ('\u{20c0}', 34918),
-    ('\u{20d0}', 34919),
-    ('\u{20f1}', 34920),
-    ('\u{2100}', 2153),
-    ('\u{210b}', 34932),
-    ('\u{210f}', 34933),
-    ('\u{2110}', 34934),
-    ('\u{2112}', 34935),
-    ('\u{2114}', 2168),
-    ('\u{2117}', 34939),
-    ('\u{2119}', 2172),
-    ('\u{211b}', 34942),
-    ('\u{211e}', 34943),
-    ('\u{2120}', 2176),
-    ('\u{212f}', 34959),
-    ('\u{2131}', 2192),
-    ('\u{213d}', 34972),
-    ('\u{213f}', 2205),
-    ('\u{2141}', 34975),
-    ('\u{2145}', 34976),
-    ('\u{2147}', 2209),
-    ('\u{214a}', 34980),
-    ('\u{214e}', 2213),
-    ('\u{2180}', 35031),
-    ('\u{2183}', 2264),
-    ('\u{2185}', 35034),
-    ('\u{2189}', 35035),
-    ('\u{218a}', 35036),
-    ('\u{218c}', 35037),
-    ('\u{2190}', 35038),
-    ('\u{222c}', 2271),
-    ('\u{2231}', 35044),
-    ('\u{2260}', 35045),
-    ('\u{2261}', 35046),
-    ('\u{226e}', 35047),
-    ('\u{2270}', 35048),
-    ('\u{2329}', 2281),
-    ('\u{232b}', 35051),
-    ('\u{2427}', 35052),
-    ('\u{2440}', 35053),
-    ('\u{244b}', 35054),
-    ('\u{2460}', 2287),
-    ('\u{2488}', 35095),
-    ('\u{249c}', 2328),
-    ('\u{24eb}', 35175),
-    ('\u{2a0c}', 35176),
-    ('\u{2a0d}', 35177),
-    ('\u{2a74}', 2410),
-    ('\u{2a77}', 35181),
-    ('\u{2adc}', 35182),
-    ('\u{2add}', 35183),
-    ('\u{2b74}', 35184),
-    ('\u{2b76}', 35185),
-    ('\u{2b96}', 35186),
-    ('\u{2b97}', 35187),
-    ('\u{2c00}', 2420),
-    ('\u{2c30}', 35236),
-    ('\u{2c5f}', 2469),
-    ('\u{2c65}', 35243),
-    ('\u{2c67}', 2476),
-    ('\u{2c73}', 35256),
-    ('\u{2c75}', 35257),
-    ('\u{2c76}', 35258),
-    ('\u{2c7c}', 2491),
-    ('\u{2ce3}', 35362),
-    ('\u{2ce5}', 35363),
-    ('\u{2ceb}', 2596),
-    ('\u{2cee}', 35367),
-    ('\u{2cf2}', 2600),
-    ('\u{2cf4}', 35370),
-    ('\u{2cf9}', 35371),
-    ('\u{2d00}', 35372),
-    ('\u{2d26}', 2605),
-    ('\u{2d28}', 35375),
-    ('\u{2d2d}', 35376),
-    ('\u{2d2e}', 35377),
-    ('\u{2d30}', 35378),
-    ('\u{2d68}', 35379),
-    ('\u{2d6f}', 2612),
-    ('\u{2d71}', 35382),
-    ('\u{2d7f}', 35383),
-    ('\u{2d97}', 35384),
-    ('\u{2da0}', 35385),
-    ('\u{2da7}', 35386),
-    ('\u{2da8}', 35387),
-    ('\u{2daf}', 35388),
-    ('\u{2db0}', 35389),
-    ('\u{2db7}', 35390),
-    ('\u{2db8}', 35391),
-    ('\u{2dbf}', 35392),
-    ('\u{2dc0}', 35393),
-    ('\u{2dc7}', 35394),
-    ('\u{2dc8}', 35395),
-    ('\u{2dcf}', 35396),
-    ('\u{2dd0}', 35397),
-    ('\u{2dd7}', 35398),
-    ('\u{2dd8}', 35399),
-    ('\u{2ddf}', 35400),
-    ('\u{2de0}', 35401),
-    ('\u{2e00}', 35402),
-    ('\u{2e2f}', 35403),
-    ('\u{2e30}', 35404),
-    ('\u{2e53}', 35405),
-    ('\u{2e80}', 35406),
-    ('\u{2e9a}', 35407),
-    ('\u{2e9b}', 35408),
-    ('\u{2e9f}', 35409),
-    ('\u{2ea0}', 35410),
-    ('\u{2ef3}', 35411),
-    ('\u{2ef4}', 35412),
-    ('\u{2f00}', 2645),
-    ('\u{2fd6}', 35627),
-    ('\u{3000}', 2860),
-    ('\u{3003}', 35631),
-    ('\u{3005}', 35632),
-    ('\u{3008}', 35633),
-    ('\u{302a}', 35634),
-    ('\u{302e}', 35635),
-    ('\u{3036}', 2868),
-    ('\u{303d}', 35643),
-    ('\u{3040}', 35644),
-    ('\u{3041}', 35645),
-    ('\u{3097}', 35646),
-    ('\u{3099}', 35647),
-    ('\u{309b}', 2880),
-    ('\u{309d}', 35650),
-    ('\u{309f}', 2883),
-    ('\u{30a1}', 35653),
-    ('\u{30ff}', 35654),
-    ('\u{3100}', 35655),
-    ('\u{3105}', 35656),
-    ('\u{3130}', 2889),
-    ('\u{3190}', 35753),
-    ('\u{3192}', 2986),
-    ('\u{31a0}', 35768),
-    ('\u{31c0}', 35769),
-    ('\u{31e4}', 35770),
-    ('\u{31f0}', 35771),
-    ('\u{3200}', 3004),
-    ('\u{3248}', 35844),
-    ('\u{3250}', 3077),
-    ('\u{3400}', 36277),
-    ('\u{4dc0}', 36278),
-    ('\u{4e00}', 36279),
-    ('\u{9ffd}', 36280),
-    ('\u{a000}', 36281),
-    ('\u{a48d}', 36282),
-    ('\u{a490}', 36283),
-    ('\u{a4c7}', 36284),
-    ('\u{a4d0}', 36285),
-    ('\u{a4fe}', 36286),
-    ('\u{a500}', 36287),
-    ('\u{a60d}', 36288),
-    ('\u{a610}', 36289),
-    ('\u{a62c}', 36290),
-    ('\u{a640}', 3523),
-    ('\u{a66d}', 36336),
-    ('\u{a670}', 36337),
-    ('\u{a674}', 36338),
-    ('\u{a67e}', 3571),
-    ('\u{a69e}', 36371),
-    ('\u{a6e6}', 36372),
-    ('\u{a6f0}', 36373),
-    ('\u{a6f2}', 36374),
-    ('\u{a6f8}', 36375),
-    ('\u{a700}', 36376),
-    ('\u{a717}', 36377),
-    ('\u{a720}', 36378),
-    ('\u{a722}', 3611),
-    ('\u{a72f}', 36392),
-    ('\u{a732}', 3625),
-    ('\u{a771}', 36456),
-    ('\u{a779}', 3689),
-    ('\u{a787}', 36471),
-    ('\u{a789}', 36472),
-    ('\u{a78b}', 3705),
-    ('\u{a78e}', 36476),
-    ('\u{a790}', 3709),
-    ('\u{a793}', 36480),
-    ('\u{a796}', 3713),
-    ('\u{a7c0}', 36523),
-    ('\u{a7c2}', 3756),
-    ('\u{a7cb}', 36533),
-    ('\u{a7f5}', 36534),
-    ('\u{a7f6}', 36535),
-    ('\u{a7f8}', 3768),
-    ('\u{a7fa}', 36538),
-    ('\u{a828}', 36539),
-    ('\u{a82c}', 36540),
-    ('\u{a82d}', 36541),
-    ('\u{a830}', 36542),
-    ('\u{a83a}', 36543),
-    ('\u{a840}', 36544),
-    ('\u{a874}', 36545),
-    ('\u{a878}', 36546),
-    ('\u{a880}', 36547),
-    ('\u{a8c6}', 36548),
-    ('\u{a8ce}', 36549),
-    ('\u{a8d0}', 36550),
-    ('\u{a8da}', 36551),
-    ('\u{a8e0}', 36552),
-    ('\u{a8f8}', 36553),
-    ('\u{a8fb}', 3786),
-    ('\u{a8fd}', 36556),
-    ('\u{a92e}', 36557),
-    ('\u{a930}', 36558),
-    ('\u{a954}', 36559),
-    ('\u{a95f}', 36560),
-    ('\u{a97d}', 36561),
-    ('\u{a980}', 36562),
-    ('\u{a9c1}', 36563),
-    ('\u{a9ce}', 36564),
-    ('\u{a9cf}', 36565),
-    ('\u{a9da}', 36566),
-    ('\u{a9de}', 36567),
-    ('\u{a9e0}', 36568),
-    ('\u{a9ff}', 36569),
-    ('\u{aa00}', 36570),
-    ('\u{aa37}', 36571),
-    ('\u{aa40}', 36572),
-    ('\u{aa4e}', 36573),
-    ('\u{aa50}', 36574),
-    ('\u{aa5a}', 36575),
-    ('\u{aa5c}', 36576),
-    ('\u{aa60}', 36577),
-    ('\u{aa77}', 36578),
-    ('\u{aa7a}', 36579),
-    ('\u{aac3}', 36580),
-    ('\u{aadb}', 36581),
-    ('\u{aade}', 36582),
-    ('\u{aae0}', 36583),
-    ('\u{aaf0}', 36584),
-    ('\u{aaf2}', 36585),
-    ('\u{aaf7}', 36586),
-    ('\u{ab01}', 36587),
-    ('\u{ab07}', 36588),
-    ('\u{ab09}', 36589),
-    ('\u{ab0f}', 36590),
-    ('\u{ab11}', 36591),
-    ('\u{ab17}', 36592),
-    ('\u{ab20}', 36593),
-    ('\u{ab27}', 36594),
-    ('\u{ab28}', 36595),
-    ('\u{ab2f}', 36596),
-    ('\u{ab30}', 36597),
-    ('\u{ab5b}', 3830),
-    ('\u{ab60}', 36603),
-    ('\u{ab69}', 36604),
-    ('\u{ab6a}', 36605),
-    ('\u{ab6c}', 36606),
-    ('\u{ab70}', 3839),
-    ('\u{abc0}', 36687),
-    ('\u{abeb}', 36688),
-    ('\u{abec}', 36689),
-    ('\u{abee}', 36690),
-    ('\u{abf0}', 36691),
-    ('\u{abfa}', 36692),
-    ('\u{ac00}', 36693),
-    ('\u{d7a4}', 36694),
-    ('\u{d7b0}', 36695),
-    ('\u{d7c7}', 36696),
-    ('\u{d7cb}', 36697),
-    ('\u{d7fc}', 36698),
-    ('\u{f900}', 3931),
-    ('\u{f907}', 36706),
-    ('\u{f909}', 3939),
-    ('\u{fa0e}', 36968),
-    ('\u{fa10}', 4201),
-    ('\u{fa13}', 36972),
-    ('\u{fa15}', 4205),
-    ('\u{fa23}', 36987),
-    ('\u{fa25}', 4220),
-    ('\u{fa27}', 36990),
-    ('\u{fa2a}', 4223),
-    ('\u{fa5d}', 37042),
-    ('\u{fa5f}', 4275),
-    ('\u{fa6e}', 37058),
-    ('\u{fa70}', 4291),
-    ('\u{fada}', 37165),
-    ('\u{fb00}', 4398),
-    ('\u{fb05}', 37171),
-    ('\u{fb07}', 37172),
-    ('\u{fb13}', 4405),
-    ('\u{fb18}', 37178),
-    ('\u{fb1d}', 4411),
-    ('\u{fb50}', 37230),
-    ('\u{fb52}', 37231),
-    ('\u{fb56}', 37232),
-    ('\u{fb5a}', 37233),
-    ('\u{fb5e}', 37234),
-    ('\u{fb62}', 37235),
-    ('\u{fb66}', 37236),
-    ('\u{fb6a}', 37237),
-    ('\u{fb6e}', 37238),
-    ('\u{fb72}', 37239),
-    ('\u{fb76}', 37240),
-    ('\u{fb7a}', 37241),
-    ('\u{fb7e}', 37242),
-    ('\u{fb82}', 37243),
-    ('\u{fb84}', 37244),
-    ('\u{fb86}', 37245),
-    ('\u{fb88}', 37246),
-    ('\u{fb8a}', 37247),
-    ('\u{fb8c}', 37248),
-    ('\u{fb8e}', 37249),
-    ('\u{fb92}', 37250),
-    ('\u{fb96}', 37251),
-    ('\u{fb9a}', 37252),
-    ('\u{fb9e}', 37253),
-    ('\u{fba0}', 37254),
-    ('\u{fba4}', 37255),
-    ('\u{fba6}', 37256),
-    ('\u{fbaa}', 37257),
-    ('\u{fbae}', 37258),
-    ('\u{fbb0}', 37259),
-    ('\u{fbb2}', 37260),
-    ('\u{fbc2}', 37261),
-    ('\u{fbd3}', 37262),
-    ('\u{fbd7}', 37263),
-    ('\u{fbd9}', 37264),
-    ('\u{fbdb}', 37265),
-    ('\u{fbdd}', 37266),
-    ('\u{fbde}', 37267),
-    ('\u{fbe0}', 37268),
-    ('\u{fbe2}', 37269),
-    ('\u{fbe4}', 37270),
-    ('\u{fbe8}', 37271),
-    ('\u{fbea}', 37272),
-    ('\u{fbec}', 37273),
-    ('\u{fbee}', 37274),
-    ('\u{fbf0}', 37275),
-    ('\u{fbf2}', 37276),
-    ('\u{fbf4}', 37277),
-    ('\u{fbf6}', 37278),
-    ('\u{fbf9}', 37279),
-    ('\u{fbfc}', 37280),
-    ('\u{fc00}', 4513),
-    ('\u{fd3c}', 37597),
-    ('\u{fd3e}', 37598),
-    ('\u{fd40}', 37599),
-    ('\u{fd50}', 37600),
-    ('\u{fd51}', 37601),
-    ('\u{fd53}', 4834),
-    ('\u{fd58}', 37607),
-    ('\u{fd5a}', 4840),
-    ('\u{fd5f}', 37613),
-    ('\u{fd61}', 37614),
-    ('\u{fd62}', 37615),
-    ('\u{fd64}', 37616),
-    ('\u{fd66}', 37617),
-    ('\u{fd67}', 37618),
-    ('\u{fd69}', 37619),
-    ('\u{fd6a}', 37620),
-    ('\u{fd6c}', 37621),
-    ('\u{fd6e}', 37622),
-    ('\u{fd6f}', 37623),
-    ('\u{fd71}', 37624),
-    ('\u{fd73}', 4857),
-    ('\u{fd76}', 37628),
-    ('\u{fd78}', 4861),
-    ('\u{fd7c}', 37633),
-    ('\u{fd7e}', 4866),
-    ('\u{fd83}', 37639),
-    ('\u{fd85}', 37640),
-    ('\u{fd87}', 37641),
-    ('\u{fd89}', 4874),
-    ('\u{fd90}', 37649),
-    ('\u{fd92}', 4882),
-    ('\u{fd97}', 37655),
-    ('\u{fd99}', 4888),
-    ('\u{fd9c}', 37659),
-    ('\u{fd9e}', 4892),
-    ('\u{fdc8}', 37702),
-    ('\u{fdf0}', 4935),
-    ('\u{fdfe}', 37717),
-    ('\u{fe00}', 37718),
-    ('\u{fe10}', 4951),
-    ('\u{fe19}', 37728),
-    ('\u{fe20}', 37729),
-    ('\u{fe30}', 4962),
-    ('\u{fe33}', 37733),
-    ('\u{fe35}', 4966),
-    ('\u{fe45}', 37750),
-    ('\u{fe47}', 4983),
-    ('\u{fe49}', 37753),
-    ('\u{fe4d}', 37754),
-    ('\u{fe50}', 4987),
-    ('\u{fe52}', 37757),
-    ('\u{fe54}', 4990),
-    ('\u{fe6c}', 37782),
-    ('\u{fe70}', 5015),
-    ('\u{fe81}', 37800),
-    ('\u{fe83}', 37801),
-    ('\u{fe85}', 37802),
-    ('\u{fe87}', 37803),
-    ('\u{fe89}', 37804),
-    ('\u{fe8d}', 37805),
-    ('\u{fe8f}', 37806),
-    ('\u{fe93}', 37807),
-    ('\u{fe95}', 37808),
-    ('\u{fe99}', 37809),
-    ('\u{fe9d}', 37810),
-    ('\u{fea1}', 37811),
-    ('\u{fea5}', 37812),
-    ('\u{fea9}', 37813),
-    ('\u{feab}', 37814),
-    ('\u{fead}', 37815),
-    ('\u{feaf}', 37816),
-    ('\u{feb1}', 37817),
-    ('\u{feb5}', 37818),
-    ('\u{feb9}', 37819),
-    ('\u{febd}', 37820),
-    ('\u{fec1}', 37821),
-    ('\u{fec5}', 37822),
-    ('\u{fec9}', 37823),
-    ('\u{fecd}', 37824),
-    ('\u{fed1}', 37825),
-    ('\u{fed5}', 37826),
-    ('\u{fed9}', 37827),
-    ('\u{fedd}', 37828),
-    ('\u{fee1}', 37829),
-    ('\u{fee5}', 37830),
-    ('\u{fee9}', 37831),
-    ('\u{feed}', 37832),
-    ('\u{feef}', 37833),
-    ('\u{fef1}', 37834),
-    ('\u{fef5}', 37835),
-    ('\u{fef7}', 37836),
-    ('\u{fef9}', 37837),
-    ('\u{fefb}', 37838),
-    ('\u{fefd}', 37839),
-    ('\u{feff}', 5072),
-    ('\u{ffbf}', 38032),
-    ('\u{ffc2}', 5265),
-    ('\u{ffc8}', 38039),
-    ('\u{ffca}', 5272),
-    ('\u{ffd0}', 38046),
-    ('\u{ffd2}', 5279),
-    ('\u{ffd8}', 38053),
-    ('\u{ffda}', 5286),
-    ('\u{ffdd}', 38057),
-    ('\u{ffe0}', 5290),
-    ('\u{ffef}', 38073),
-    ('\u{10000}', 38074),
-    ('\u{1000c}', 38075),
-    ('\u{1000d}', 38076),
-    ('\u{10027}', 38077),
-    ('\u{10028}', 38078),
-    ('\u{1003b}', 38079),
-    ('\u{1003c}', 38080),
-    ('\u{1003e}', 38081),
-    ('\u{1003f}', 38082),
-    ('\u{1004e}', 38083),
-    ('\u{10050}', 38084),
-    ('\u{1005e}', 38085),
-    ('\u{10080}', 38086),
-    ('\u{100fb}', 38087),
-    ('\u{10100}', 38088),
-    ('\u{10103}', 38089),
-    ('\u{10107}', 38090),
-    ('\u{10134}', 38091),
-    ('\u{10137}', 38092),
-    ('\u{1018f}', 38093),
-    ('\u{10190}', 38094),
-    ('\u{1019d}', 38095),
-    ('\u{101a0}', 38096),
-    ('\u{101a1}', 38097),
-    ('\u{101d0}', 38098),
-    ('\u{101fd}', 38099),
-    ('\u{101fe}', 38100),
-    ('\u{10280}', 38101),
-    ('\u{1029d}', 38102),
-    ('\u{102a0}', 38103),
-    ('\u{102d1}', 38104),
-    ('\u{102e0}', 38105),
-    ('\u{102e1}', 38106),
-    ('\u{102fc}', 38107),
-    ('\u{10300}', 38108),
-    ('\u{10320}', 38109),
-    ('\u{10324}', 38110),
-    ('\u{1032d}', 38111),
-    ('\u{10341}', 38112),
-    ('\u{10342}', 38113),
-    ('\u{1034a}', 38114),
-    ('\u{1034b}', 38115),
-    ('\u{10350}', 38116),
-    ('\u{1037b}', 38117),
-    ('\u{10380}', 38118),
-    ('\u{1039e}', 5351),
-    ('\u{103a0}', 38121),
-    ('\u{103c4}', 38122),
-    ('\u{103c8}', 38123),
-    ('\u{103d0}', 38124),
-    ('\u{103d6}', 38125),
-    ('\u{10400}', 5358),
-    ('\u{10428}', 38166),
-    ('\u{1049e}', 38167),
-    ('\u{104a0}', 38168),
-    ('\u{104aa}', 38169),
-    ('\u{104b0}', 5402),
-    ('\u{104d4}', 38206),
-    ('\u{104d8}', 38207),
-    ('\u{104fc}', 38208),
-    ('\u{10500}', 38209),
-    ('\u{10528}', 38210),
-    ('\u{10530}', 38211),
-    ('\u{10564}', 38212),
-    ('\u{1056f}', 38213),
-    ('\u{10570}', 38214),
-    ('\u{10600}', 38215),
-    ('\u{10737}', 38216),
-    ('\u{10740}', 38217),
-    ('\u{10756}', 38218),
-    ('\u{10760}', 38219),
-    ('\u{10768}', 38220),
-    ('\u{10800}', 38221),
-    ('\u{10806}', 38222),
-    ('\u{10808}', 5455),
-    ('\u{1080a}', 38225),
-    ('\u{10836}', 38226),
-    ('\u{10837}', 38227),
-    ('\u{10839}', 38228),
-    ('\u{1083c}', 38229),
-    ('\u{1083d}', 38230),
-    ('\u{1083f}', 38231),
-    ('\u{10856}', 38232),
-    ('\u{10857}', 38233),
-    ('\u{10860}', 38234),
-    ('\u{10877}', 38235),
-    ('\u{10880}', 38236),
-    ('\u{1089f}', 38237),
-    ('\u{108a7}', 38238),
-    ('\u{108b0}', 38239),
-    ('\u{108e0}', 38240),
-    ('\u{108f3}', 38241),
-    ('\u{108f4}', 38242),
-    ('\u{108f6}', 38243),
-    ('\u{108fb}', 38244),
-    ('\u{10900}', 38245),
-    ('\u{10916}', 38246),
-    ('\u{1091c}', 38247),
-    ('\u{1091f}', 38248),
-    ('\u{10920}', 38249),
-    ('\u{1093a}', 38250),
-    ('\u{1093f}', 38251),
-    ('\u{10940}', 38252),
-    ('\u{10980}', 38253),
-    ('\u{109b8}', 38254),
-    ('\u{109bc}', 38255),
-    ('\u{109be}', 38256),
-    ('\u{109c0}', 38257),
-    ('\u{109d0}', 38258),
-    ('\u{109d2}', 38259),
-    ('\u{10a00}', 38260),
-    ('\u{10a04}', 38261),
-    ('\u{10a05}', 38262),
-    ('\u{10a07}', 38263),
-    ('\u{10a0c}', 38264),
-    ('\u{10a14}', 38265),
-    ('\u{10a15}', 38266),
-    ('\u{10a18}', 38267),
-    ('\u{10a19}', 38268),
-    ('\u{10a36}', 38269),
-    ('\u{10a38}', 38270),
-    ('\u{10a3b}', 38271),
-    ('\u{10a3f}', 38272),
-    ('\u{10a40}', 38273),
-    ('\u{10a49}', 38274),
-    ('\u{10a50}', 38275),
-    ('\u{10a59}', 38276),
-    ('\u{10a60}', 38277),
-    ('\u{10a7d}', 38278),
-    ('\u{10a80}', 38279),
-    ('\u{10a9d}', 38280),
-    ('\u{10aa0}', 38281),
-    ('\u{10ac0}', 38282),
-    ('\u{10ac8}', 38283),
-    ('\u{10ac9}', 38284),
-    ('\u{10ae7}', 38285),
-    ('\u{10aeb}', 38286),
-    ('\u{10af7}', 38287),
-    ('\u{10b00}', 38288),
-    ('\u{10b36}', 38289),
-    ('\u{10b39}', 38290),
-    ('\u{10b40}', 38291),
-    ('\u{10b56}', 38292),
-    ('\u{10b58}', 38293),
-    ('\u{10b60}', 38294),
-    ('\u{10b73}', 38295),
-    ('\u{10b78}', 38296),
-    ('\u{10b80}', 38297),
-    ('\u{10b92}', 38298),
-    ('\u{10b99}', 38299),
-    ('\u{10b9d}', 38300),
-    ('\u{10ba9}', 38301),
-    ('\u{10bb0}', 38302),
-    ('\u{10c00}', 38303),
-    ('\u{10c49}', 38304),
-    ('\u{10c80}', 5537),
-    ('\u{10cb3}', 38356),
-    ('\u{10cc0}', 38357),
-    ('\u{10cf3}', 38358),
-    ('\u{10cfa}', 38359),
-    ('\u{10d00}', 38360),
-    ('\u{10d28}', 38361),
-    ('\u{10d30}', 38362),
-    ('\u{10d3a}', 38363),
-    ('\u{10e60}', 38364),
-    ('\u{10e7f}', 38365),
-    ('\u{10e80}', 38366),
-    ('\u{10eaa}', 38367),
-    ('\u{10eab}', 38368),
-    ('\u{10ead}', 38369),
-    ('\u{10eae}', 38370),
-    ('\u{10eb0}', 38371),
-    ('\u{10eb2}', 38372),
-    ('\u{10f00}', 38373),
-    ('\u{10f1d}', 38374),
-    ('\u{10f27}', 38375),
-    ('\u{10f28}', 38376),
-    ('\u{10f30}', 38377),
-    ('\u{10f51}', 38378),
-    ('\u{10f5a}', 38379),
-    ('\u{10fb0}', 38380),
-    ('\u{10fc5}', 38381),
-    ('\u{10fcc}', 38382),
-    ('\u{10fe0}', 38383),
-    ('\u{10ff7}', 38384),
-    ('\u{11000}', 38385),
-    ('\u{11047}', 38386),
-    ('\u{1104e}', 38387),
-    ('\u{11052}', 38388),
-    ('\u{11066}', 38389),
-    ('\u{11070}', 38390),
-    ('\u{1107f}', 38391),
-    ('\u{110bb}', 38392),
-    ('\u{110bd}', 38393),
-    ('\u{110be}', 38394),
-    ('\u{110c2}', 38395),
-    ('\u{110d0}', 38396),
-    ('\u{110e9}', 38397),
-    ('\u{110f0}', 38398),
-    ('\u{110fa}', 38399),
-    ('\u{11100}', 38400),
-    ('\u{11135}', 38401),
-    ('\u{11136}', 38402),
-    ('\u{11140}', 38403),
-    ('\u{11144}', 38404),
-    ('\u{11148}', 38405),
-    ('\u{11150}', 38406),
-    ('\u{11174}', 38407),
-    ('\u{11176}', 38408),
-    ('\u{11177}', 38409),
-    ('\u{11180}', 38410),
-    ('\u{111c5}', 38411),
-    ('\u{111c9}', 38412),
-    ('\u{111cd}', 38413),
-    ('\u{111ce}', 38414),
-    ('\u{111db}', 5647),
-    ('\u{111dd}', 38417),
-    ('\u{111e0}', 38418),
-    ('\u{111e1}', 38419),
-    ('\u{111f5}', 38420),
-    ('\u{11200}', 38421),
-    ('\u{11212}', 38422),
-    ('\u{11213}', 38423),
-    ('\u{11238}', 38424),
-    ('\u{1123e}', 38425),
-    ('\u{1123f}', 38426),
-    ('\u{11280}', 38427),
-    ('\u{11287}', 5660),
-    ('\u{1128a}', 38431),
-    ('\u{1128e}', 38432),
-    ('\u{1128f}', 38433),
-    ('\u{1129e}', 38434),
-    ('\u{1129f}', 38435),
-    ('\u{112a9}', 38436),
-    ('\u{112aa}', 38437),
-    ('\u{112b0}', 38438),
-    ('\u{112eb}', 38439),
-    ('\u{112f0}', 38440),
-    ('\u{112fa}', 38441),
-    ('\u{11300}', 38442),
-    ('\u{11304}', 38443),
-    ('\u{11305}', 38444),
-    ('\u{1130d}', 38445),
-    ('\u{1130f}', 38446),
-    ('\u{11311}', 38447),
-    ('\u{11313}', 38448),
-    ('\u{11329}', 38449),
-    ('\u{1132a}', 38450),
-    ('\u{11331}', 38451),
-    ('\u{11332}', 38452),
-    ('\u{11334}', 38453),
-    ('\u{11335}', 38454),
-    ('\u{1133a}', 38455),
-    ('\u{1133b}', 38456),
-    ('\u{11345}', 38457),
-    ('\u{11347}', 38458),
-    ('\u{11349}', 38459),
-    ('\u{1134b}', 38460),
-    ('\u{1134e}', 38461),
-    ('\u{11350}', 38462),
-    ('\u{11351}', 38463),
-    ('\u{11357}', 38464),
-    ('\u{11358}', 38465),
-    ('\u{1135d}', 38466),
-    ('\u{11364}', 38467),
-    ('\u{11366}', 38468),
-    ('\u{1136d}', 38469),
-    ('\u{11370}', 38470),
-    ('\u{11375}', 38471),
-    ('\u{11400}', 38472),
-    ('\u{1144b}', 38473),
-    ('\u{11450}', 38474),
-    ('\u{1145a}', 38475),
-    ('\u{1145c}', 5708),
-    ('\u{1145e}', 38478),
-    ('\u{11462}', 38479),
-    ('\u{11480}', 38480),
-    ('\u{114c6}', 5713),
-    ('\u{114c8}', 38483),
-    ('\u{114d0}', 38484),
-    ('\u{114da}', 38485),
-    ('\u{11580}', 38486),
-    ('\u{115b6}', 38487),
-    ('\u{115b8}', 38488),
-    ('\u{115c1}', 38489),
-    ('\u{115d8}', 38490),
-    ('\u{115de}', 38491),
-    ('\u{11600}', 38492),
-    ('\u{11641}', 38493),
-    ('\u{11644}', 38494),
-    ('\u{11645}', 38495),
-    ('\u{11650}', 38496),
-    ('\u{1165a}', 38497),
-    ('\u{11660}', 38498),
-    ('\u{1166d}', 38499),
-    ('\u{11680}', 38500),
-    ('\u{116b9}', 38501),
-    ('\u{116c0}', 38502),
-    ('\u{116ca}', 38503),
-    ('\u{11700}', 38504),
-    ('\u{1171b}', 38505),
-    ('\u{1171d}', 38506),
-    ('\u{1172c}', 38507),
-    ('\u{11730}', 38508),
-    ('\u{1173a}', 38509),
-    ('\u{11740}', 38510),
-    ('\u{11800}', 38511),
-    ('\u{1183b}', 38512),
-    ('\u{1183c}', 38513),
-    ('\u{118a0}', 5746),
-    ('\u{118c0}', 38546),
-    ('\u{118ea}', 38547),
-    ('\u{118f3}', 38548),
-    ('\u{118ff}', 38549),
-    ('\u{11907}', 38550),
-    ('\u{11909}', 38551),
-    ('\u{1190a}', 38552),
-    ('\u{1190c}', 38553),
-    ('\u{11914}', 38554),
-    ('\u{11915}', 38555),
-    ('\u{11917}', 38556),
-    ('\u{11918}', 38557),
-    ('\u{11936}', 38558),
-    ('\u{11937}', 38559),
-    ('\u{11939}', 38560),
-    ('\u{1193b}', 38561),
-    ('\u{11944}', 38562),
-    ('\u{11947}', 38563),
-    ('\u{11950}', 38564),
-    ('\u{1195a}', 38565),
-    ('\u{119a0}', 38566),
-    ('\u{119a8}', 38567),
-    ('\u{119aa}', 38568),
-    ('\u{119d8}', 38569),
-    ('\u{119da}', 38570),
-    ('\u{119e2}', 38571),
-    ('\u{119e3}', 38572),
-    ('\u{119e5}', 38573),
-    ('\u{11a00}', 38574),
-    ('\u{11a3f}', 38575),
-    ('\u{11a47}', 38576),
-    ('\u{11a48}', 38577),
-    ('\u{11a50}', 38578),
-    ('\u{11a9a}', 38579),
-    ('\u{11a9d}', 38580),
-    ('\u{11a9e}', 38581),
-    ('\u{11aa3}', 38582),
-    ('\u{11ac0}', 38583),
-    ('\u{11af9}', 38584),
-    ('\u{11c00}', 38585),
-    ('\u{11c09}', 38586),
-    ('\u{11c0a}', 38587),
-    ('\u{11c37}', 38588),
-    ('\u{11c38}', 38589),
-    ('\u{11c41}', 38590),
-    ('\u{11c46}', 38591),
-    ('\u{11c50}', 38592),
-    ('\u{11c5a}', 38593),
-    ('\u{11c6d}', 38594),
-    ('\u{11c70}', 38595),
-    ('\u{11c72}', 38596),
-    ('\u{11c90}', 38597),
-    ('\u{11c92}', 38598),
-    ('\u{11ca8}', 38599),
-    ('\u{11ca9}', 38600),
-    ('\u{11cb7}', 38601),
-    ('\u{11d00}', 38602),
-    ('\u{11d07}', 38603),
-    ('\u{11d08}', 38604),
-    ('\u{11d0a}', 38605),
-    ('\u{11d0b}', 38606),
-    ('\u{11d37}', 38607),
-    ('\u{11d3a}', 5840),
-    ('\u{11d3c}', 38610),
-    ('\u{11d3e}', 38611),
-    ('\u{11d3f}', 38612),
-    ('\u{11d48}', 38613),
-    ('\u{11d50}', 38614),
-    ('\u{11d5a}', 38615),
-    ('\u{11d60}', 38616),
-    ('\u{11d66}', 38617),
-    ('\u{11d67}', 38618),
-    ('\u{11d69}', 38619),
-    ('\u{11d6a}', 38620),
-    ('\u{11d8f}', 38621),
-    ('\u{11d90}', 38622),
-    ('\u{11d92}', 38623),
-    ('\u{11d93}', 38624),
-    ('\u{11d99}', 38625),
-    ('\u{11da0}', 38626),
-    ('\u{11daa}', 38627),
-    ('\u{11ee0}', 38628),
-    ('\u{11ef7}', 38629),
-    ('\u{11ef9}', 38630),
-    ('\u{11fb0}', 38631),
-    ('\u{11fb1}', 38632),
-    ('\u{11fc0}', 38633),
-    ('\u{11ff2}', 38634),
-    ('\u{11fff}', 38635),
-    ('\u{12000}', 38636),
-    ('\u{1239a}', 38637),
-    ('\u{12400}', 38638),
-    ('\u{1246f}', 38639),
-    ('\u{12470}', 38640),
-    ('\u{12475}', 38641),
-    ('\u{12480}', 38642),
-    ('\u{12544}', 38643),
-    ('\u{13000}', 38644),
-    ('\u{1342f}', 38645),
-    ('\u{14400}', 38646),
-    ('\u{14647}', 38647),
-    ('\u{16800}', 38648),
-    ('\u{16a39}', 38649),
-    ('\u{16a40}', 38650),
-    ('\u{16a5f}', 38651),
-    ('\u{16a60}', 38652),
-    ('\u{16a6a}', 38653),
-    ('\u{16a6e}', 38654),
-    ('\u{16a70}', 38655),
-    ('\u{16ad0}', 38656),
-    ('\u{16aee}', 38657),
-    ('\u{16af0}', 38658),
-    ('\u{16af5}', 38659),
-    ('\u{16af6}', 38660),
-    ('\u{16b00}', 38661),
-    ('\u{16b37}', 38662),
-    ('\u{16b40}', 38663),
-    ('\u{16b44}', 38664),
-    ('\u{16b46}', 38665),
-    ('\u{16b50}', 38666),
-    ('\u{16b5a}', 38667),
-    ('\u{16b5b}', 38668),
-    ('\u{16b62}', 38669),
-    ('\u{16b63}', 38670),
-    ('\u{16b78}', 38671),
-    ('\u{16b7d}', 38672),
-    ('\u{16b90}', 38673),
-    ('\u{16e40}', 5906),
-    ('\u{16e60}', 38706),
-    ('\u{16e80}', 38707),
-    ('\u{16e9b}', 38708),
-    ('\u{16f00}', 38709),
-    ('\u{16f4b}', 38710),
-    ('\u{16f4f}', 38711),
-    ('\u{16f88}', 38712),
-    ('\u{16f8f}', 38713),
-    ('\u{16fa0}', 38714),
-    ('\u{16fe0}', 38715),
-    ('\u{16fe2}', 38716),
-    ('\u{16fe3}', 38717),
-    ('\u{16fe5}', 38718),
-    ('\u{16ff0}', 38719),
-    ('\u{16ff2}', 38720),
-    ('\u{17000}', 38721),
-    ('\u{187f8}', 38722),
-    ('\u{18800}', 38723),
-    ('\u{18cd6}', 38724),
-    ('\u{18d00}', 38725),
-    ('\u{18d09}', 38726),
-    ('\u{1b000}', 38727),
-    ('\u{1b11f}', 38728),
-    ('\u{1b150}', 38729),
-    ('\u{1b153}', 38730),
-    ('\u{1b164}', 38731),
-    ('\u{1b168}', 38732),
-    ('\u{1b170}', 38733),
-    ('\u{1b2fc}', 38734),
-    ('\u{1bc00}', 38735),
-    ('\u{1bc6b}', 38736),
-    ('\u{1bc70}', 38737),
-    ('\u{1bc7d}', 38738),
-    ('\u{1bc80}', 38739),
-    ('\u{1bc89}', 38740),
-    ('\u{1bc90}', 38741),
-    ('\u{1bc9a}', 38742),
-    ('\u{1bc9c}', 38743),
-    ('\u{1bc9d}', 38744),
-    ('\u{1bc9f}', 38745),
-    ('\u{1bca0}', 38746),
-    ('\u{1bca4}', 38747),
-    ('\u{1d000}', 38748),
-    ('\u{1d0f6}', 38749),
-    ('\u{1d100}', 38750),
-    ('\u{1d127}', 38751),
-    ('\u{1d129}', 38752),
-    ('\u{1d15e}', 5985),
-    ('\u{1d165}', 38760),
-    ('\u{1d173}', 38761),
-    ('\u{1d17b}', 38762),
-    ('\u{1d1bb}', 5995),
-    ('\u{1d1c1}', 38769),
-    ('\u{1d1e9}', 38770),
-    ('\u{1d200}', 38771),
-    ('\u{1d246}', 38772),
-    ('\u{1d2e0}', 38773),
-    ('\u{1d2f4}', 38774),
-    ('\u{1d300}', 38775),
-    ('\u{1d357}', 38776),
-    ('\u{1d360}', 38777),
-    ('\u{1d379}', 38778),
-    ('\u{1d400}', 6011),
-    ('\u{1d4a0}', 38939),
-    ('\u{1d4a2}', 38940),
-    ('\u{1d4a3}', 38941),
-    ('\u{1d4a5}', 6174),
-    ('\u{1d4a7}', 38944),
-    ('\u{1d4a9}', 6177),
-    ('\u{1d50b}', 39043),
-    ('\u{1d50d}', 6276),
-    ('\u{1d547}', 39102),
-    ('\u{1d54a}', 6335),
-    ('\u{1d6a6}', 39451),
-    ('\u{1d6a8}', 6684),
-    ('\u{1d6d3}', 39495),
-    ('\u{1d6d5}', 6728),
-    ('\u{1d70d}', 39552),
-    ('\u{1d70f}', 6785),
-    ('\u{1d747}', 39609),
-    ('\u{1d749}', 6842),
-    ('\u{1d781}', 39666),
-    ('\u{1d783}', 6899),
-    ('\u{1d7bb}', 39723),
-    ('\u{1d7bd}', 6956),
-    ('\u{1d7ca}', 39737),
-    ('\u{1d7cc}', 39738),
-    ('\u{1d7ce}', 6971),
-    ('\u{1d800}', 39789),
-    ('\u{1da00}', 39790),
-    ('\u{1da37}', 39791),
-    ('\u{1da3b}', 39792),
-    ('\u{1da6d}', 39793),
-    ('\u{1da75}', 39794),
-    ('\u{1da76}', 39795),
-    ('\u{1da84}', 39796),
-    ('\u{1da85}', 39797),
-    ('\u{1da8c}', 39798),
-    ('\u{1da9b}', 39799),
-    ('\u{1daa0}', 39800),
-    ('\u{1daa1}', 39801),
-    ('\u{1dab0}', 39802),
-    ('\u{1e000}', 39803),
-    ('\u{1e007}', 39804),
-    ('\u{1e008}', 39805),
-    ('\u{1e019}', 39806),
-    ('\u{1e01b}', 39807),
-    ('\u{1e022}', 39808),
-    ('\u{1e023}', 39809),
-    ('\u{1e025}', 39810),
-    ('\u{1e026}', 39811),
-    ('\u{1e02b}', 39812),
-    ('\u{1e100}', 39813),
-    ('\u{1e12d}', 39814),
-    ('\u{1e130}', 39815),
-    ('\u{1e13e}', 39816),
-    ('\u{1e140}', 39817),
-    ('\u{1e14a}', 39818),
-    ('\u{1e14e}', 7051),
-    ('\u{1e150}', 39821),
-    ('\u{1e2c0}', 39822),
-    ('\u{1e2fa}', 39823),
-    ('\u{1e2ff}', 39824),
-    ('\u{1e300}', 39825),
-    ('\u{1e800}', 39826),
-    ('\u{1e8c5}', 39827),
-    ('\u{1e8c7}', 39828),
-    ('\u{1e8d0}', 39829),
-    ('\u{1e8d7}', 39830),
-    ('\u{1e900}', 7063),
-    ('\u{1e922}', 39865),
-    ('\u{1e94c}', 39866),
-    ('\u{1e950}', 39867),
-    ('\u{1e95a}', 39868),
-    ('\u{1e95e}', 39869),
-    ('\u{1e960}', 39870),
-    ('\u{1ec71}', 39871),
-    ('\u{1ecb5}', 39872),
-    ('\u{1ed01}', 39873),
-    ('\u{1ed3e}', 39874),
-    ('\u{1ee00}', 7107),
-    ('\u{1ee25}', 39912),
-    ('\u{1ee27}', 7145),
-    ('\u{1ee3c}', 39934),
-    ('\u{1ee42}', 39935),
-    ('\u{1ee43}', 39936),
-    ('\u{1ee47}', 7169),
-    ('\u{1ee55}', 39951),
-    ('\u{1ee57}', 7184),
-    ('\u{1ee65}', 39966),
-    ('\u{1ee67}', 7199),
-    ('\u{1ee9c}', 40020),
-    ('\u{1eea1}', 7253),
-    ('\u{1eebc}', 40048),
-    ('\u{1eef0}', 40049),
-    ('\u{1eef2}', 40050),
-    ('\u{1f000}', 40051),
-    ('\u{1f02c}', 40052),
-    ('\u{1f030}', 40053),
-    ('\u{1f094}', 40054),
-    ('\u{1f0a0}', 40055),
-    ('\u{1f0af}', 40056),
-    ('\u{1f0b1}', 40057),
-    ('\u{1f0c0}', 40058),
-    ('\u{1f0c1}', 40059),
-    ('\u{1f0d0}', 40060),
-    ('\u{1f0d1}', 40061),
-    ('\u{1f0f6}', 40062),
-    ('\u{1f101}', 7295),
-    ('\u{1f10b}', 40073),
-    ('\u{1f110}', 7306),
-    ('\u{1f150}', 40138),
-    ('\u{1f16a}', 7371),
-    ('\u{1f16d}', 40142),
-    ('\u{1f190}', 40143),
-    ('\u{1f191}', 40144),
-    ('\u{1f1ae}', 40145),
-    ('\u{1f1e6}', 40146),
-    ('\u{1f200}', 7379),
-    ('\u{1f203}', 40150),
-    ('\u{1f210}', 7383),
-    ('\u{1f23c}', 40195),
-    ('\u{1f240}', 7428),
-    ('\u{1f249}', 40205),
-    ('\u{1f250}', 7438),
-    ('\u{1f252}', 40208),
-    ('\u{1f260}', 40209),
-    ('\u{1f266}', 40210),
-    ('\u{1f300}', 40211),
-    ('\u{1f6d8}', 40212),
-    ('\u{1f6e0}', 40213),
-    ('\u{1f6ed}', 40214),
-    ('\u{1f6f0}', 40215),
-    ('\u{1f6fd}', 40216),
-    ('\u{1f700}', 40217),
-    ('\u{1f774}', 40218),
-    ('\u{1f780}', 40219),
-    ('\u{1f7d9}', 40220),
-    ('\u{1f7e0}', 40221),
-    ('\u{1f7ec}', 40222),
-    ('\u{1f800}', 40223),
-    ('\u{1f80c}', 40224),
-    ('\u{1f810}', 40225),
-    ('\u{1f848}', 40226),
-    ('\u{1f850}', 40227),
-    ('\u{1f85a}', 40228),
-    ('\u{1f860}', 40229),
-    ('\u{1f888}', 40230),
-    ('\u{1f890}', 40231),
-    ('\u{1f8ae}', 40232),
-    ('\u{1f8b0}', 40233),
-    ('\u{1f8b2}', 40234),
-    ('\u{1f900}', 40235),
-    ('\u{1f979}', 40236),
-    ('\u{1f97a}', 40237),
-    ('\u{1f9cc}', 40238),
-    ('\u{1f9cd}', 40239),
-    ('\u{1fa54}', 40240),
-    ('\u{1fa60}', 40241),
-    ('\u{1fa6e}', 40242),
-    ('\u{1fa70}', 40243),
-    ('\u{1fa75}', 40244),
-    ('\u{1fa78}', 40245),
-    ('\u{1fa7b}', 40246),
-    ('\u{1fa80}', 40247),
-    ('\u{1fa87}', 40248),
-    ('\u{1fa90}', 40249),
-    ('\u{1faa9}', 40250),
-    ('\u{1fab0}', 40251),
-    ('\u{1fab7}', 40252),
-    ('\u{1fac0}', 40253),
-    ('\u{1fac3}', 40254),
-    ('\u{1fad0}', 40255),
-    ('\u{1fad7}', 40256),
-    ('\u{1fb00}', 40257),
-    ('\u{1fb93}', 40258),
-    ('\u{1fb94}', 40259),
-    ('\u{1fbcb}', 40260),
-    ('\u{1fbf0}', 7493),
-    ('\u{1fbfa}', 40271),
-    ('\u{20000}', 40272),
-    ('\u{2a6de}', 40273),
-    ('\u{2a700}', 40274),
-    ('\u{2b735}', 40275),
-    ('\u{2b740}', 40276),
-    ('\u{2b81e}', 40277),
-    ('\u{2b820}', 40278),
-    ('\u{2cea2}', 40279),
-    ('\u{2ceb0}', 40280),
-    ('\u{2ebe1}', 40281),
-    ('\u{2f800}', 7514),
-    ('\u{2f831}', 40331),
-    ('\u{2f834}', 7564),
-    ('\u{2f845}', 40349),
-    ('\u{2f847}', 7582),
-    ('\u{2f86a}', 40385),
-    ('\u{2f86c}', 7618),
-    ('\u{2f891}', 40423),
-    ('\u{2f893}', 40424),
-    ('\u{2f894}', 40425),
-    ('\u{2f896}', 7658),
-    ('\u{2f92c}', 40576),
-    ('\u{2f92e}', 7809),
-    ('\u{2f946}', 40601),
-    ('\u{2f948}', 7834),
-    ('\u{2f95d}', 40623),
-    ('\u{2f95f}', 7856),
-    ('\u{2f9fe}', 40783),
-    ('\u{2fa00}', 8016),
-    ('\u{2fa1e}', 40814),
-    ('\u{30000}', 40815),
-    ('\u{3134b}', 40816),
-    ('\u{e0100}', 40817),
-    ('\u{e01f0}', 40818),
-];
-
-static MAPPING_TABLE: &[Mapping] = &[
-    DisallowedStd3Valid,
-    Valid,
-    DisallowedStd3Valid,
-    Valid,
-    DisallowedStd3Valid,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedStd3Valid,
-    Valid,
-    DisallowedStd3Valid,
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 0, byte_len: 3 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Ignored,
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 0, byte_len: 3 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 0, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    DisallowedIdna2008,
-    Valid,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 0, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 0, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 0, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 0, byte_len: 5 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 83, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 0, byte_len: 2 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 0, byte_len: 2 }),
-    Deviation(StringTableSlice { byte_start_lo: 119, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 0, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 0, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 0, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 204, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 210, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 216, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 1, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 83, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 1, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 1, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 1, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 216, byte_start_hi: 1, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 219, byte_start_hi: 1, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 1, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 1, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 1, byte_len: 3 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 1, byte_len: 2 }),
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 1, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Ignored,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 1, byte_len: 2 }),
-    Valid,
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 1, byte_len: 3 }),
-    Valid,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 2, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 2, byte_len: 2 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 0, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 2, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 2, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 2, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Deviation(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 86, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 96, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 108, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 116, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 132, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 138, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 162, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 204, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 210, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 216, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 86, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 96, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 108, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 116, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 132, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 138, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 3, byte_len: 2 }),
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 162, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 204, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 210, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 216, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 3, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 3, byte_len: 2 }),
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 3, byte_len: 4 }),
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 3, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 3, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 3, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 3, byte_len: 4 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 3, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 3, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 3, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 4, byte_len: 6 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 4, byte_len: 6 }),
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 4, byte_len: 6 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 4, byte_len: 6 }),
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 4, byte_len: 6 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 4, byte_len: 3 }),
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 4, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 4, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 4, byte_len: 9 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 4, byte_len: 6 }),
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 4, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 4, byte_len: 3 }),
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 4, byte_len: 3 }),
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 5, byte_len: 3 }),
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Ignored,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 5, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 4, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 96, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 108, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 132, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 138, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 5, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 5, byte_len: 3 }),
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 5, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 255, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 83, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 86, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 116, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 6, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 6, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 7, byte_len: 3 }),
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 7, byte_len: 3 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 7, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 7, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 7, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 7, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 7, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 2, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 7, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 8, byte_len: 5 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 8, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 8, byte_len: 4 }),
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 108, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 8, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 8, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 8, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 8, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 8, byte_len: 4 }),
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 8, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 8, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 8, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 162, byte_start_hi: 8, byte_len: 5 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 8, byte_len: 2 }),
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 2, byte_len: 2 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 8, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 8, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 8, byte_len: 5 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 8, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 204, byte_start_hi: 8, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 8, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 2, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 8, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 8, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 8, byte_len: 4 }),
-    Disallowed,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 8, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 8, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 8, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 0, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 8, byte_len: 3 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 0, byte_len: 1 }),
-    Ignored,
-    Deviation(StringTableSlice { byte_start_lo: 240, byte_start_hi: 8, byte_len: 0 }),
-    Disallowed,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 8, byte_len: 3 }),
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 8, byte_len: 3 }),
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 8, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 8, byte_len: 9 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 9, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 9, byte_len: 9 }),
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 9, byte_len: 2 }),
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 9, byte_len: 3 }),
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 9, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 9, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 9, byte_len: 2 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 9, byte_len: 12 }),
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 0, byte_len: 1 }),
-    Ignored,
-    Disallowed,
-    Ignored,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 9, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 9, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 9, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 9, byte_len: 2 }),
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 9, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 9, byte_len: 3 }),
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 9, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 1, byte_len: 2 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 9, byte_len: 2 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 9, byte_len: 2 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 86, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 9, byte_len: 3 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 9, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 116, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 9, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 9, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 9, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 9, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 9, byte_len: 5 }),
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 9, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 9, byte_len: 9 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 9, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 9, byte_len: 9 }),
-    DisallowedIdna2008,
-    DisallowedStd3Valid,
-    DisallowedIdna2008,
-    DisallowedStd3Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 9, byte_len: 3 }),
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 10, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 10, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 10, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 10, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 10, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 10, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 10, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 10, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 10, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 10, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 10, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 10, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 10, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 10, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 10, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 10, byte_len: 4 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 96, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 108, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 132, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 138, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 10, byte_len: 12 }),
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 10, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 10, byte_len: 5 }),
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 11, byte_len: 3 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 11, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 11, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 11, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 5, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 11, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 96, byte_start_hi: 11, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 116, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 11, byte_len: 3 }),
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 12, byte_len: 3 }),
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 12, byte_len: 3 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 12, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 96, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 108, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 132, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 138, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 162, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 204, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 210, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 216, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 219, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 255, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 83, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 86, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 116, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 14, byte_len: 3 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 14, byte_len: 1 }),
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 14, byte_len: 3 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 14, byte_len: 3 }),
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 14, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 14, byte_len: 4 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 14, byte_len: 6 }),
-    DisallowedIdna2008,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 14, byte_len: 6 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 15, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 15, byte_len: 3 }),
-    Disallowed,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 12, byte_len: 3 }),
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 15, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 15, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 15, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 15, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 15, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 15, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 15, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 16, byte_len: 8 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 16, byte_len: 8 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 138, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 16, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 17, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 17, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 17, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 17, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 17, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 17, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 17, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 17, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 17, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 17, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 17, byte_len: 3 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 86, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 17, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 17, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 17, byte_len: 3 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 255, byte_start_hi: 17, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 18, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 18, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 18, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 18, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 18, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 18, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 18, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 18, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 18, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 18, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 18, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 18, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 18, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 18, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 18, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 18, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 18, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 19, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 19, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 19, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 19, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 19, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 19, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 19, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 19, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 19, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 19, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 19, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 19, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 19, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 19, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 19, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 19, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 19, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 19, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 19, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 204, byte_start_hi: 19, byte_len: 18 }),
-    Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 19, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 19, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 19, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 20, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 20, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 20, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 20, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 20, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 20, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 20, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 86, byte_start_hi: 20, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 20, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 20, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 116, byte_start_hi: 20, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 20, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 20, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 20, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 20, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 20, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 20, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 20, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 20, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 20, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 20, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 20, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 20, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 20, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 20, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 20, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 21, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 21, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 21, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 21, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 21, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 21, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 21, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 21, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 21, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 21, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 21, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 21, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 21, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 22, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 22, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 22, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 22, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 22, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 22, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 22, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 22, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 22, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 22, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 22, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 22, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 22, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 22, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 22, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 22, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 22, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 22, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 22, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 22, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 22, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 216, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 22, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 22, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 22, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 22, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 22, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 22, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 22, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 22, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 22, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 22, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 22, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 22, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 23, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 23, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 23, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 23, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 23, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 23, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 23, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 23, byte_len: 7 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 23, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 23, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 23, byte_len: 6 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 219, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 23, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 23, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 255, byte_start_hi: 23, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 24, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 24, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 24, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 24, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 24, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 24, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 24, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 24, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 24, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 24, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 5, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 24, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 2, byte_len: 2 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 5, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 25, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 5, byte_len: 2 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 25, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 25, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 5, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 0, byte_len: 2 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 11, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 25, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 25, byte_len: 2 }),
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 255, byte_start_hi: 25, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 83, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 86, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 116, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 26, byte_len: 3 }),
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 96, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 108, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 132, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 138, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 162, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 204, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 210, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 216, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 219, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 222, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 252, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 255, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 83, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 86, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 116, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 29, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 29, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 29, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 13, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 29, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 29, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 29, byte_len: 3 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 132, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 30, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 30, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 132, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 138, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 31, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 31, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 31, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 31, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 31, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 31, byte_len: 4 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 31, byte_len: 4 }),
-    Valid,
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 31, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 86, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 9, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 31, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 31, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 31, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 219, byte_start_hi: 31, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 31, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 31, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 31, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 31, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 31, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 32, byte_len: 4 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 32, byte_len: 4 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 32, byte_len: 4 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 32, byte_len: 4 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 32, byte_len: 4 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 32, byte_len: 2 }),
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 3, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 34, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 34, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 34, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 34, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 34, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 34, byte_len: 5 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 34, byte_len: 5 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 32, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 219, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 34, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 34, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 34, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 34, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 35, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 33, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 35, byte_len: 4 }),
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 36, byte_len: 6 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 219, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 255, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 83, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 36, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 35, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 37, byte_len: 6 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 37, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 37, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 37, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 37, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 37, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 37, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 37, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 37, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 37, byte_len: 6 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 37, byte_len: 33 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 38, byte_len: 15 }),
-    Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 38, byte_len: 8 }),
-    DisallowedIdna2008,
-    Disallowed,
-    Ignored,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 38, byte_len: 3 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 2, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 38, byte_len: 3 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 38, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 9, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 38, byte_len: 3 }),
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 9, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 38, byte_len: 3 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 2, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 38, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 38, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 9, byte_len: 1 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 96, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 38, byte_len: 1 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 38, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 38, byte_len: 3 }),
-    Valid,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 38, byte_len: 3 }),
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 38, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 38, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 38, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 38, byte_len: 4 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 38, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 38, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 38, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 38, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 38, byte_len: 4 }),
-    Disallowed,
-    Ignored,
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 96, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 14, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 2, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 8, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 38, byte_len: 1 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 38, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 14, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 38, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 154, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 160, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 163, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 18, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 39, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 15, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 15, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 15, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 15, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 15, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 39, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 39, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 39, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 0, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 39, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 39, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 39, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 39, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 39, byte_len: 3 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 39, byte_len: 4 }),
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 39, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 40, byte_len: 4 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 40, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 41, byte_len: 4 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 157, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 41, byte_len: 4 }),
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 41, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 42, byte_len: 4 }),
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Ignored,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 42, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 42, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 77, byte_start_hi: 42, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 89, byte_start_hi: 42, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 42, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 42, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 42, byte_len: 12 }),
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 42, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 145, byte_start_hi: 42, byte_len: 8 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 42, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 42, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 42, byte_len: 12 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 42, byte_len: 12 }),
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 42, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 42, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 42, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 42, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 42, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 42, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 42, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 42, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 42, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 42, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 42, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 1, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 62, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 42, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 52, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 2, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 2, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 219, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 255, byte_start_hi: 42, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 83, byte_start_hi: 43, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 43, byte_len: 4 }),
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 43, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 32, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 43, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 43, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 32, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 43, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 43, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 43, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 213, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 38, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 38, byte_len: 2 }),
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedIdna2008,
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 96, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 99, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 102, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 105, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 108, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 132, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 138, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 144, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 150, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 10, byte_len: 3 }),
-    DisallowedStd3Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 10, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 43, byte_len: 7 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 2, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 8, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 11, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 14, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 43, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 23, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 43, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 0, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 135, byte_start_hi: 43, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 43, byte_len: 2 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 141, byte_start_hi: 43, byte_len: 2 }),
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 43, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 43, byte_len: 6 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 18, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 176, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 193, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 15, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 219, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 166, byte_start_hi: 17, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 43, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 43, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 44, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 44, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 44, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 44, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 44, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 44, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 44, byte_len: 9 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 44, byte_len: 9 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 44, byte_len: 3 }),
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    DisallowedIdna2008,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 0, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 9, byte_len: 1 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 9, byte_len: 1 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Valid,
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 44, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 44, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 44, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 44, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 44, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 162, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 44, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 205, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 208, byte_start_hi: 44, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 233, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 236, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 239, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 242, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 44, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 43, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 56, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 59, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 82, byte_start_hi: 45, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 108, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 45, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 120, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 123, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 126, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 164, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 167, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 170, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 172, byte_start_hi: 12, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 211, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 229, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 232, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 49, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 45, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 248, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 245, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 251, byte_start_hi: 26, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 38, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 41, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 44, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 66, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 69, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 72, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 75, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 109, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 118, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 79, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 153, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 162, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 178, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 181, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 184, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 187, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 191, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 197, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 200, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 27, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 203, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 210, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 225, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 228, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 249, byte_start_hi: 46, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 46, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 16, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 19, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 22, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 30, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 33, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 25, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 42, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 45, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 48, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 61, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 65, byte_start_hi: 47, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 68, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 92, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 98, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 101, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 110, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 113, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 116, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 129, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 132, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 147, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 151, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 158, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 55, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 161, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 169, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 173, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 58, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 148, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 189, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 196, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 210, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 29, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 112, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 220, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 223, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 226, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 230, byte_start_hi: 47, byte_len: 4 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 47, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 254, byte_start_hi: 47, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 4, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 7, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 10, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 13, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 17, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 20, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 23, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 26, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 29, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 32, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 35, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 39, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 46, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 50, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 53, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 63, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 71, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 74, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 78, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 81, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 88, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 91, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 94, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 45, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 119, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 125, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 128, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 131, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 134, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 137, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 140, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 143, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 36, byte_start_hi: 28, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 156, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 162, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 30, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 174, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 177, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 180, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 183, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 190, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 194, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 198, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 201, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 204, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 210, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 214, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 217, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 48, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 235, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 238, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 115, byte_start_hi: 27, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 241, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 244, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 247, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 48, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 0, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 85, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 3, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 6, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 49, byte_len: 3 }),
-    Disallowed,
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 186, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 28, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 31, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 34, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 37, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 40, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 43, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 47, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 51, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 54, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 57, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 103, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 207, byte_start_hi: 13, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 60, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 64, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 67, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 70, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 73, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 76, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 80, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 84, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 87, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 90, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 93, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 97, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 106, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 100, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 104, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 108, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 111, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 114, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 117, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 121, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 130, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 133, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 136, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 139, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 142, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 146, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 149, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 152, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 155, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 159, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 162, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 165, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 168, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 171, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 175, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 179, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 182, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 185, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 188, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 192, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 195, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 124, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 199, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 202, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 206, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 209, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 212, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 215, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 218, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 221, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 224, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 227, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 127, byte_start_hi: 31, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 231, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 234, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 237, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 240, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 243, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 246, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 250, byte_start_hi: 49, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 253, byte_start_hi: 49, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 1, byte_start_hi: 50, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 5, byte_start_hi: 50, byte_len: 4 }),
-    Mapped(StringTableSlice { byte_start_lo: 95, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 9, byte_start_hi: 50, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 107, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 12, byte_start_hi: 50, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 15, byte_start_hi: 50, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 18, byte_start_hi: 50, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 21, byte_start_hi: 50, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 122, byte_start_hi: 14, byte_len: 3 }),
-    Mapped(StringTableSlice { byte_start_lo: 24, byte_start_hi: 50, byte_len: 4 }),
-    Disallowed,
-    Valid,
-    Disallowed,
-    Ignored,
-    Disallowed,
-];
-
-static STRING_TABLE: &str = "\u{61}\
-  \u{62}\
-  \u{63}\
-  \u{64}\
-  \u{65}\
-  \u{66}\
-  \u{67}\
-  \u{68}\
-  \u{69}\
-  \u{6a}\
-  \u{6b}\
-  \u{6c}\
-  \u{6d}\
-  \u{6e}\
-  \u{6f}\
-  \u{70}\
-  \u{71}\
-  \u{72}\
-  \u{73}\
-  \u{74}\
-  \u{75}\
-  \u{76}\
-  \u{77}\
-  \u{78}\
-  \u{79}\
-  \u{7a}\
-  \u{20}\
-  \u{20}\
-  \u{308}\
-  \u{20}\
-  \u{304}\
-  \u{32}\
-  \u{33}\
-  \u{20}\
-  \u{301}\
-  \u{3bc}\
-  \u{20}\
-  \u{327}\
-  \u{31}\
-  \u{31}\
-  \u{2044}\
-  \u{34}\
-  \u{31}\
-  \u{2044}\
-  \u{32}\
-  \u{33}\
-  \u{2044}\
-  \u{34}\
-  \u{e0}\
-  \u{e1}\
-  \u{e2}\
-  \u{e3}\
-  \u{e4}\
-  \u{e5}\
-  \u{e6}\
-  \u{e7}\
-  \u{e8}\
-  \u{e9}\
-  \u{ea}\
-  \u{eb}\
-  \u{ec}\
-  \u{ed}\
-  \u{ee}\
-  \u{ef}\
-  \u{f0}\
-  \u{f1}\
-  \u{f2}\
-  \u{f3}\
-  \u{f4}\
-  \u{f5}\
-  \u{f6}\
-  \u{f8}\
-  \u{f9}\
-  \u{fa}\
-  \u{fb}\
-  \u{fc}\
-  \u{fd}\
-  \u{fe}\
-  \u{73}\
-  \u{73}\
-  \u{101}\
-  \u{103}\
-  \u{105}\
-  \u{107}\
-  \u{109}\
-  \u{10b}\
-  \u{10d}\
-  \u{10f}\
-  \u{111}\
-  \u{113}\
-  \u{115}\
-  \u{117}\
-  \u{119}\
-  \u{11b}\
-  \u{11d}\
-  \u{11f}\
-  \u{121}\
-  \u{123}\
-  \u{125}\
-  \u{127}\
-  \u{129}\
-  \u{12b}\
-  \u{12d}\
-  \u{12f}\
-  \u{69}\
-  \u{307}\
-  \u{69}\
-  \u{6a}\
-  \u{135}\
-  \u{137}\
-  \u{13a}\
-  \u{13c}\
-  \u{13e}\
-  \u{6c}\
-  \u{b7}\
-  \u{142}\
-  \u{144}\
-  \u{146}\
-  \u{148}\
-  \u{2bc}\
-  \u{6e}\
-  \u{14b}\
-  \u{14d}\
-  \u{14f}\
-  \u{151}\
-  \u{153}\
-  \u{155}\
-  \u{157}\
-  \u{159}\
-  \u{15b}\
-  \u{15d}\
-  \u{15f}\
-  \u{161}\
-  \u{163}\
-  \u{165}\
-  \u{167}\
-  \u{169}\
-  \u{16b}\
-  \u{16d}\
-  \u{16f}\
-  \u{171}\
-  \u{173}\
-  \u{175}\
-  \u{177}\
-  \u{ff}\
-  \u{17a}\
-  \u{17c}\
-  \u{17e}\
-  \u{253}\
-  \u{183}\
-  \u{185}\
-  \u{254}\
-  \u{188}\
-  \u{256}\
-  \u{257}\
-  \u{18c}\
-  \u{1dd}\
-  \u{259}\
-  \u{25b}\
-  \u{192}\
-  \u{260}\
-  \u{263}\
-  \u{269}\
-  \u{268}\
-  \u{199}\
-  \u{26f}\
-  \u{272}\
-  \u{275}\
-  \u{1a1}\
-  \u{1a3}\
-  \u{1a5}\
-  \u{280}\
-  \u{1a8}\
-  \u{283}\
-  \u{1ad}\
-  \u{288}\
-  \u{1b0}\
-  \u{28a}\
-  \u{28b}\
-  \u{1b4}\
-  \u{1b6}\
-  \u{292}\
-  \u{1b9}\
-  \u{1bd}\
-  \u{64}\
-  \u{17e}\
-  \u{6c}\
-  \u{6a}\
-  \u{6e}\
-  \u{6a}\
-  \u{1ce}\
-  \u{1d0}\
-  \u{1d2}\
-  \u{1d4}\
-  \u{1d6}\
-  \u{1d8}\
-  \u{1da}\
-  \u{1dc}\
-  \u{1df}\
-  \u{1e1}\
-  \u{1e3}\
-  \u{1e5}\
-  \u{1e7}\
-  \u{1e9}\
-  \u{1eb}\
-  \u{1ed}\
-  \u{1ef}\
-  \u{64}\
-  \u{7a}\
-  \u{1f5}\
-  \u{195}\
-  \u{1bf}\
-  \u{1f9}\
-  \u{1fb}\
-  \u{1fd}\
-  \u{1ff}\
-  \u{201}\
-  \u{203}\
-  \u{205}\
-  \u{207}\
-  \u{209}\
-  \u{20b}\
-  \u{20d}\
-  \u{20f}\
-  \u{211}\
-  \u{213}\
-  \u{215}\
-  \u{217}\
-  \u{219}\
-  \u{21b}\
-  \u{21d}\
-  \u{21f}\
-  \u{19e}\
-  \u{223}\
-  \u{225}\
-  \u{227}\
-  \u{229}\
-  \u{22b}\
-  \u{22d}\
-  \u{22f}\
-  \u{231}\
-  \u{233}\
-  \u{2c65}\
-  \u{23c}\
-  \u{19a}\
-  \u{2c66}\
-  \u{242}\
-  \u{180}\
-  \u{289}\
-  \u{28c}\
-  \u{247}\
-  \u{249}\
-  \u{24b}\
-  \u{24d}\
-  \u{24f}\
-  \u{266}\
-  \u{279}\
-  \u{27b}\
-  \u{281}\
-  \u{20}\
-  \u{306}\
-  \u{20}\
-  \u{307}\
-  \u{20}\
-  \u{30a}\
-  \u{20}\
-  \u{328}\
-  \u{20}\
-  \u{303}\
-  \u{20}\
-  \u{30b}\
-  \u{295}\
-  \u{300}\
-  \u{301}\
-  \u{313}\
-  \u{308}\
-  \u{301}\
-  \u{3b9}\
-  \u{371}\
-  \u{373}\
-  \u{2b9}\
-  \u{377}\
-  \u{20}\
-  \u{3b9}\
-  \u{3b}\
-  \u{3f3}\
-  \u{20}\
-  \u{308}\
-  \u{301}\
-  \u{3ac}\
-  \u{b7}\
-  \u{3ad}\
-  \u{3ae}\
-  \u{3af}\
-  \u{3cc}\
-  \u{3cd}\
-  \u{3ce}\
-  \u{3b1}\
-  \u{3b2}\
-  \u{3b3}\
-  \u{3b4}\
-  \u{3b5}\
-  \u{3b6}\
-  \u{3b7}\
-  \u{3b8}\
-  \u{3ba}\
-  \u{3bb}\
-  \u{3bd}\
-  \u{3be}\
-  \u{3bf}\
-  \u{3c0}\
-  \u{3c1}\
-  \u{3c3}\
-  \u{3c4}\
-  \u{3c5}\
-  \u{3c6}\
-  \u{3c7}\
-  \u{3c8}\
-  \u{3c9}\
-  \u{3ca}\
-  \u{3cb}\
-  \u{3d7}\
-  \u{3d9}\
-  \u{3db}\
-  \u{3dd}\
-  \u{3df}\
-  \u{3e1}\
-  \u{3e3}\
-  \u{3e5}\
-  \u{3e7}\
-  \u{3e9}\
-  \u{3eb}\
-  \u{3ed}\
-  \u{3ef}\
-  \u{3f8}\
-  \u{3fb}\
-  \u{37b}\
-  \u{37c}\
-  \u{37d}\
-  \u{450}\
-  \u{451}\
-  \u{452}\
-  \u{453}\
-  \u{454}\
-  \u{455}\
-  \u{456}\
-  \u{457}\
-  \u{458}\
-  \u{459}\
-  \u{45a}\
-  \u{45b}\
-  \u{45c}\
-  \u{45d}\
-  \u{45e}\
-  \u{45f}\
-  \u{430}\
-  \u{431}\
-  \u{432}\
-  \u{433}\
-  \u{434}\
-  \u{435}\
-  \u{436}\
-  \u{437}\
-  \u{438}\
-  \u{439}\
-  \u{43a}\
-  \u{43b}\
-  \u{43c}\
-  \u{43d}\
-  \u{43e}\
-  \u{43f}\
-  \u{440}\
-  \u{441}\
-  \u{442}\
-  \u{443}\
-  \u{444}\
-  \u{445}\
-  \u{446}\
-  \u{447}\
-  \u{448}\
-  \u{449}\
-  \u{44a}\
-  \u{44b}\
-  \u{44c}\
-  \u{44d}\
-  \u{44e}\
-  \u{44f}\
-  \u{461}\
-  \u{463}\
-  \u{465}\
-  \u{467}\
-  \u{469}\
-  \u{46b}\
-  \u{46d}\
-  \u{46f}\
-  \u{471}\
-  \u{473}\
-  \u{475}\
-  \u{477}\
-  \u{479}\
-  \u{47b}\
-  \u{47d}\
-  \u{47f}\
-  \u{481}\
-  \u{48b}\
-  \u{48d}\
-  \u{48f}\
-  \u{491}\
-  \u{493}\
-  \u{495}\
-  \u{497}\
-  \u{499}\
-  \u{49b}\
-  \u{49d}\
-  \u{49f}\
-  \u{4a1}\
-  \u{4a3}\
-  \u{4a5}\
-  \u{4a7}\
-  \u{4a9}\
-  \u{4ab}\
-  \u{4ad}\
-  \u{4af}\
-  \u{4b1}\
-  \u{4b3}\
-  \u{4b5}\
-  \u{4b7}\
-  \u{4b9}\
-  \u{4bb}\
-  \u{4bd}\
-  \u{4bf}\
-  \u{4c2}\
-  \u{4c4}\
-  \u{4c6}\
-  \u{4c8}\
-  \u{4ca}\
-  \u{4cc}\
-  \u{4ce}\
-  \u{4d1}\
-  \u{4d3}\
-  \u{4d5}\
-  \u{4d7}\
-  \u{4d9}\
-  \u{4db}\
-  \u{4dd}\
-  \u{4df}\
-  \u{4e1}\
-  \u{4e3}\
-  \u{4e5}\
-  \u{4e7}\
-  \u{4e9}\
-  \u{4eb}\
-  \u{4ed}\
-  \u{4ef}\
-  \u{4f1}\
-  \u{4f3}\
-  \u{4f5}\
-  \u{4f7}\
-  \u{4f9}\
-  \u{4fb}\
-  \u{4fd}\
-  \u{4ff}\
-  \u{501}\
-  \u{503}\
-  \u{505}\
-  \u{507}\
-  \u{509}\
-  \u{50b}\
-  \u{50d}\
-  \u{50f}\
-  \u{511}\
-  \u{513}\
-  \u{515}\
-  \u{517}\
-  \u{519}\
-  \u{51b}\
-  \u{51d}\
-  \u{51f}\
-  \u{521}\
-  \u{523}\
-  \u{525}\
-  \u{527}\
-  \u{529}\
-  \u{52b}\
-  \u{52d}\
-  \u{52f}\
-  \u{561}\
-  \u{562}\
-  \u{563}\
-  \u{564}\
-  \u{565}\
-  \u{566}\
-  \u{567}\
-  \u{568}\
-  \u{569}\
-  \u{56a}\
-  \u{56b}\
-  \u{56c}\
-  \u{56d}\
-  \u{56e}\
-  \u{56f}\
-  \u{570}\
-  \u{571}\
-  \u{572}\
-  \u{573}\
-  \u{574}\
-  \u{575}\
-  \u{576}\
-  \u{577}\
-  \u{578}\
-  \u{579}\
-  \u{57a}\
-  \u{57b}\
-  \u{57c}\
-  \u{57d}\
-  \u{57e}\
-  \u{57f}\
-  \u{580}\
-  \u{581}\
-  \u{582}\
-  \u{583}\
-  \u{584}\
-  \u{585}\
-  \u{586}\
-  \u{565}\
-  \u{582}\
-  \u{627}\
-  \u{674}\
-  \u{648}\
-  \u{674}\
-  \u{6c7}\
-  \u{674}\
-  \u{64a}\
-  \u{674}\
-  \u{915}\
-  \u{93c}\
-  \u{916}\
-  \u{93c}\
-  \u{917}\
-  \u{93c}\
-  \u{91c}\
-  \u{93c}\
-  \u{921}\
-  \u{93c}\
-  \u{922}\
-  \u{93c}\
-  \u{92b}\
-  \u{93c}\
-  \u{92f}\
-  \u{93c}\
-  \u{9a1}\
-  \u{9bc}\
-  \u{9a2}\
-  \u{9bc}\
-  \u{9af}\
-  \u{9bc}\
-  \u{a32}\
-  \u{a3c}\
-  \u{a38}\
-  \u{a3c}\
-  \u{a16}\
-  \u{a3c}\
-  \u{a17}\
-  \u{a3c}\
-  \u{a1c}\
-  \u{a3c}\
-  \u{a2b}\
-  \u{a3c}\
-  \u{b21}\
-  \u{b3c}\
-  \u{b22}\
-  \u{b3c}\
-  \u{e4d}\
-  \u{e32}\
-  \u{ecd}\
-  \u{eb2}\
-  \u{eab}\
-  \u{e99}\
-  \u{eab}\
-  \u{ea1}\
-  \u{f0b}\
-  \u{f42}\
-  \u{fb7}\
-  \u{f4c}\
-  \u{fb7}\
-  \u{f51}\
-  \u{fb7}\
-  \u{f56}\
-  \u{fb7}\
-  \u{f5b}\
-  \u{fb7}\
-  \u{f40}\
-  \u{fb5}\
-  \u{f71}\
-  \u{f72}\
-  \u{f71}\
-  \u{f74}\
-  \u{fb2}\
-  \u{f80}\
-  \u{fb2}\
-  \u{f71}\
-  \u{f80}\
-  \u{fb3}\
-  \u{f80}\
-  \u{fb3}\
-  \u{f71}\
-  \u{f80}\
-  \u{f71}\
-  \u{f80}\
-  \u{f92}\
-  \u{fb7}\
-  \u{f9c}\
-  \u{fb7}\
-  \u{fa1}\
-  \u{fb7}\
-  \u{fa6}\
-  \u{fb7}\
-  \u{fab}\
-  \u{fb7}\
-  \u{f90}\
-  \u{fb5}\
-  \u{2d27}\
-  \u{2d2d}\
-  \u{10dc}\
-  \u{13f0}\
-  \u{13f1}\
-  \u{13f2}\
-  \u{13f3}\
-  \u{13f4}\
-  \u{13f5}\
-  \u{a64b}\
-  \u{10d0}\
-  \u{10d1}\
-  \u{10d2}\
-  \u{10d3}\
-  \u{10d4}\
-  \u{10d5}\
-  \u{10d6}\
-  \u{10d7}\
-  \u{10d8}\
-  \u{10d9}\
-  \u{10da}\
-  \u{10db}\
-  \u{10dd}\
-  \u{10de}\
-  \u{10df}\
-  \u{10e0}\
-  \u{10e1}\
-  \u{10e2}\
-  \u{10e3}\
-  \u{10e4}\
-  \u{10e5}\
-  \u{10e6}\
-  \u{10e7}\
-  \u{10e8}\
-  \u{10e9}\
-  \u{10ea}\
-  \u{10eb}\
-  \u{10ec}\
-  \u{10ed}\
-  \u{10ee}\
-  \u{10ef}\
-  \u{10f0}\
-  \u{10f1}\
-  \u{10f2}\
-  \u{10f3}\
-  \u{10f4}\
-  \u{10f5}\
-  \u{10f6}\
-  \u{10f7}\
-  \u{10f8}\
-  \u{10f9}\
-  \u{10fa}\
-  \u{10fd}\
-  \u{10fe}\
-  \u{10ff}\
-  \u{250}\
-  \u{251}\
-  \u{1d02}\
-  \u{25c}\
-  \u{1d16}\
-  \u{1d17}\
-  \u{1d1d}\
-  \u{1d25}\
-  \u{252}\
-  \u{255}\
-  \u{25f}\
-  \u{261}\
-  \u{265}\
-  \u{26a}\
-  \u{1d7b}\
-  \u{29d}\
-  \u{26d}\
-  \u{1d85}\
-  \u{29f}\
-  \u{271}\
-  \u{270}\
-  \u{273}\
-  \u{274}\
-  \u{278}\
-  \u{282}\
-  \u{1ab}\
-  \u{1d1c}\
-  \u{290}\
-  \u{291}\
-  \u{1e01}\
-  \u{1e03}\
-  \u{1e05}\
-  \u{1e07}\
-  \u{1e09}\
-  \u{1e0b}\
-  \u{1e0d}\
-  \u{1e0f}\
-  \u{1e11}\
-  \u{1e13}\
-  \u{1e15}\
-  \u{1e17}\
-  \u{1e19}\
-  \u{1e1b}\
-  \u{1e1d}\
-  \u{1e1f}\
-  \u{1e21}\
-  \u{1e23}\
-  \u{1e25}\
-  \u{1e27}\
-  \u{1e29}\
-  \u{1e2b}\
-  \u{1e2d}\
-  \u{1e2f}\
-  \u{1e31}\
-  \u{1e33}\
-  \u{1e35}\
-  \u{1e37}\
-  \u{1e39}\
-  \u{1e3b}\
-  \u{1e3d}\
-  \u{1e3f}\
-  \u{1e41}\
-  \u{1e43}\
-  \u{1e45}\
-  \u{1e47}\
-  \u{1e49}\
-  \u{1e4b}\
-  \u{1e4d}\
-  \u{1e4f}\
-  \u{1e51}\
-  \u{1e53}\
-  \u{1e55}\
-  \u{1e57}\
-  \u{1e59}\
-  \u{1e5b}\
-  \u{1e5d}\
-  \u{1e5f}\
-  \u{1e61}\
-  \u{1e63}\
-  \u{1e65}\
-  \u{1e67}\
-  \u{1e69}\
-  \u{1e6b}\
-  \u{1e6d}\
-  \u{1e6f}\
-  \u{1e71}\
-  \u{1e73}\
-  \u{1e75}\
-  \u{1e77}\
-  \u{1e79}\
-  \u{1e7b}\
-  \u{1e7d}\
-  \u{1e7f}\
-  \u{1e81}\
-  \u{1e83}\
-  \u{1e85}\
-  \u{1e87}\
-  \u{1e89}\
-  \u{1e8b}\
-  \u{1e8d}\
-  \u{1e8f}\
-  \u{1e91}\
-  \u{1e93}\
-  \u{1e95}\
-  \u{61}\
-  \u{2be}\
-  \u{1ea1}\
-  \u{1ea3}\
-  \u{1ea5}\
-  \u{1ea7}\
-  \u{1ea9}\
-  \u{1eab}\
-  \u{1ead}\
-  \u{1eaf}\
-  \u{1eb1}\
-  \u{1eb3}\
-  \u{1eb5}\
-  \u{1eb7}\
-  \u{1eb9}\
-  \u{1ebb}\
-  \u{1ebd}\
-  \u{1ebf}\
-  \u{1ec1}\
-  \u{1ec3}\
-  \u{1ec5}\
-  \u{1ec7}\
-  \u{1ec9}\
-  \u{1ecb}\
-  \u{1ecd}\
-  \u{1ecf}\
-  \u{1ed1}\
-  \u{1ed3}\
-  \u{1ed5}\
-  \u{1ed7}\
-  \u{1ed9}\
-  \u{1edb}\
-  \u{1edd}\
-  \u{1edf}\
-  \u{1ee1}\
-  \u{1ee3}\
-  \u{1ee5}\
-  \u{1ee7}\
-  \u{1ee9}\
-  \u{1eeb}\
-  \u{1eed}\
-  \u{1eef}\
-  \u{1ef1}\
-  \u{1ef3}\
-  \u{1ef5}\
-  \u{1ef7}\
-  \u{1ef9}\
-  \u{1efb}\
-  \u{1efd}\
-  \u{1eff}\
-  \u{1f00}\
-  \u{1f01}\
-  \u{1f02}\
-  \u{1f03}\
-  \u{1f04}\
-  \u{1f05}\
-  \u{1f06}\
-  \u{1f07}\
-  \u{1f10}\
-  \u{1f11}\
-  \u{1f12}\
-  \u{1f13}\
-  \u{1f14}\
-  \u{1f15}\
-  \u{1f20}\
-  \u{1f21}\
-  \u{1f22}\
-  \u{1f23}\
-  \u{1f24}\
-  \u{1f25}\
-  \u{1f26}\
-  \u{1f27}\
-  \u{1f30}\
-  \u{1f31}\
-  \u{1f32}\
-  \u{1f33}\
-  \u{1f34}\
-  \u{1f35}\
-  \u{1f36}\
-  \u{1f37}\
-  \u{1f40}\
-  \u{1f41}\
-  \u{1f42}\
-  \u{1f43}\
-  \u{1f44}\
-  \u{1f45}\
-  \u{1f51}\
-  \u{1f53}\
-  \u{1f55}\
-  \u{1f57}\
-  \u{1f60}\
-  \u{1f61}\
-  \u{1f62}\
-  \u{1f63}\
-  \u{1f64}\
-  \u{1f65}\
-  \u{1f66}\
-  \u{1f67}\
-  \u{1f00}\
-  \u{3b9}\
-  \u{1f01}\
-  \u{3b9}\
-  \u{1f02}\
-  \u{3b9}\
-  \u{1f03}\
-  \u{3b9}\
-  \u{1f04}\
-  \u{3b9}\
-  \u{1f05}\
-  \u{3b9}\
-  \u{1f06}\
-  \u{3b9}\
-  \u{1f07}\
-  \u{3b9}\
-  \u{1f20}\
-  \u{3b9}\
-  \u{1f21}\
-  \u{3b9}\
-  \u{1f22}\
-  \u{3b9}\
-  \u{1f23}\
-  \u{3b9}\
-  \u{1f24}\
-  \u{3b9}\
-  \u{1f25}\
-  \u{3b9}\
-  \u{1f26}\
-  \u{3b9}\
-  \u{1f27}\
-  \u{3b9}\
-  \u{1f60}\
-  \u{3b9}\
-  \u{1f61}\
-  \u{3b9}\
-  \u{1f62}\
-  \u{3b9}\
-  \u{1f63}\
-  \u{3b9}\
-  \u{1f64}\
-  \u{3b9}\
-  \u{1f65}\
-  \u{3b9}\
-  \u{1f66}\
-  \u{3b9}\
-  \u{1f67}\
-  \u{3b9}\
-  \u{1f70}\
-  \u{3b9}\
-  \u{3b1}\
-  \u{3b9}\
-  \u{3ac}\
-  \u{3b9}\
-  \u{1fb6}\
-  \u{3b9}\
-  \u{1fb0}\
-  \u{1fb1}\
-  \u{1f70}\
-  \u{20}\
-  \u{313}\
-  \u{20}\
-  \u{342}\
-  \u{20}\
-  \u{308}\
-  \u{342}\
-  \u{1f74}\
-  \u{3b9}\
-  \u{3b7}\
-  \u{3b9}\
-  \u{3ae}\
-  \u{3b9}\
-  \u{1fc6}\
-  \u{3b9}\
-  \u{1f72}\
-  \u{1f74}\
-  \u{20}\
-  \u{313}\
-  \u{300}\
-  \u{20}\
-  \u{313}\
-  \u{301}\
-  \u{20}\
-  \u{313}\
-  \u{342}\
-  \u{390}\
-  \u{1fd0}\
-  \u{1fd1}\
-  \u{1f76}\
-  \u{20}\
-  \u{314}\
-  \u{300}\
-  \u{20}\
-  \u{314}\
-  \u{301}\
-  \u{20}\
-  \u{314}\
-  \u{342}\
-  \u{3b0}\
-  \u{1fe0}\
-  \u{1fe1}\
-  \u{1f7a}\
-  \u{1fe5}\
-  \u{20}\
-  \u{308}\
-  \u{300}\
-  \u{60}\
-  \u{1f7c}\
-  \u{3b9}\
-  \u{3c9}\
-  \u{3b9}\
-  \u{3ce}\
-  \u{3b9}\
-  \u{1ff6}\
-  \u{3b9}\
-  \u{1f78}\
-  \u{1f7c}\
-  \u{20}\
-  \u{314}\
-  \u{2010}\
-  \u{20}\
-  \u{333}\
-  \u{2032}\
-  \u{2032}\
-  \u{2032}\
-  \u{2032}\
-  \u{2032}\
-  \u{2035}\
-  \u{2035}\
-  \u{2035}\
-  \u{2035}\
-  \u{2035}\
-  \u{21}\
-  \u{21}\
-  \u{20}\
-  \u{305}\
-  \u{3f}\
-  \u{3f}\
-  \u{3f}\
-  \u{21}\
-  \u{21}\
-  \u{3f}\
-  \u{2032}\
-  \u{2032}\
-  \u{2032}\
-  \u{2032}\
-  \u{30}\
-  \u{34}\
-  \u{35}\
-  \u{36}\
-  \u{37}\
-  \u{38}\
-  \u{39}\
-  \u{2b}\
-  \u{2212}\
-  \u{3d}\
-  \u{28}\
-  \u{29}\
-  \u{72}\
-  \u{73}\
-  \u{61}\
-  \u{2f}\
-  \u{63}\
-  \u{61}\
-  \u{2f}\
-  \u{73}\
-  \u{b0}\
-  \u{63}\
-  \u{63}\
-  \u{2f}\
-  \u{6f}\
-  \u{63}\
-  \u{2f}\
-  \u{75}\
-  \u{b0}\
-  \u{66}\
-  \u{6e}\
-  \u{6f}\
-  \u{73}\
-  \u{6d}\
-  \u{74}\
-  \u{65}\
-  \u{6c}\
-  \u{74}\
-  \u{6d}\
-  \u{5d0}\
-  \u{5d1}\
-  \u{5d2}\
-  \u{5d3}\
-  \u{66}\
-  \u{61}\
-  \u{78}\
-  \u{2211}\
-  \u{31}\
-  \u{2044}\
-  \u{37}\
-  \u{31}\
-  \u{2044}\
-  \u{39}\
-  \u{31}\
-  \u{2044}\
-  \u{31}\
-  \u{30}\
-  \u{31}\
-  \u{2044}\
-  \u{33}\
-  \u{32}\
-  \u{2044}\
-  \u{33}\
-  \u{31}\
-  \u{2044}\
-  \u{35}\
-  \u{32}\
-  \u{2044}\
-  \u{35}\
-  \u{33}\
-  \u{2044}\
-  \u{35}\
-  \u{34}\
-  \u{2044}\
-  \u{35}\
-  \u{31}\
-  \u{2044}\
-  \u{36}\
-  \u{35}\
-  \u{2044}\
-  \u{36}\
-  \u{31}\
-  \u{2044}\
-  \u{38}\
-  \u{33}\
-  \u{2044}\
-  \u{38}\
-  \u{35}\
-  \u{2044}\
-  \u{38}\
-  \u{37}\
-  \u{2044}\
-  \u{38}\
-  \u{31}\
-  \u{2044}\
-  \u{69}\
-  \u{69}\
-  \u{69}\
-  \u{69}\
-  \u{69}\
-  \u{69}\
-  \u{76}\
-  \u{76}\
-  \u{69}\
-  \u{76}\
-  \u{69}\
-  \u{69}\
-  \u{76}\
-  \u{69}\
-  \u{69}\
-  \u{69}\
-  \u{69}\
-  \u{78}\
-  \u{78}\
-  \u{69}\
-  \u{78}\
-  \u{69}\
-  \u{69}\
-  \u{30}\
-  \u{2044}\
-  \u{33}\
-  \u{222b}\
-  \u{222b}\
-  \u{222b}\
-  \u{222b}\
-  \u{222b}\
-  \u{222e}\
-  \u{222e}\
-  \u{222e}\
-  \u{222e}\
-  \u{222e}\
-  \u{3008}\
-  \u{3009}\
-  \u{31}\
-  \u{30}\
-  \u{31}\
-  \u{31}\
-  \u{31}\
-  \u{32}\
-  \u{31}\
-  \u{33}\
-  \u{31}\
-  \u{34}\
-  \u{31}\
-  \u{35}\
-  \u{31}\
-  \u{36}\
-  \u{31}\
-  \u{37}\
-  \u{31}\
-  \u{38}\
-  \u{31}\
-  \u{39}\
-  \u{32}\
-  \u{30}\
-  \u{28}\
-  \u{31}\
-  \u{29}\
-  \u{28}\
-  \u{32}\
-  \u{29}\
-  \u{28}\
-  \u{33}\
-  \u{29}\
-  \u{28}\
-  \u{34}\
-  \u{29}\
-  \u{28}\
-  \u{35}\
-  \u{29}\
-  \u{28}\
-  \u{36}\
-  \u{29}\
-  \u{28}\
-  \u{37}\
-  \u{29}\
-  \u{28}\
-  \u{38}\
-  \u{29}\
-  \u{28}\
-  \u{39}\
-  \u{29}\
-  \u{28}\
-  \u{31}\
-  \u{30}\
-  \u{29}\
-  \u{28}\
-  \u{31}\
-  \u{31}\
-  \u{29}\
-  \u{28}\
-  \u{31}\
-  \u{32}\
-  \u{29}\
-  \u{28}\
-  \u{31}\
-  \u{33}\
-  \u{29}\
-  \u{28}\
-  \u{31}\
-  \u{34}\
-  \u{29}\
-  \u{28}\
-  \u{31}\
-  \u{35}\
-  \u{29}\
-  \u{28}\
-  \u{31}\
-  \u{36}\
-  \u{29}\
-  \u{28}\
-  \u{31}\
-  \u{37}\
-  \u{29}\
-  \u{28}\
-  \u{31}\
-  \u{38}\
-  \u{29}\
-  \u{28}\
-  \u{31}\
-  \u{39}\
-  \u{29}\
-  \u{28}\
-  \u{32}\
-  \u{30}\
-  \u{29}\
-  \u{28}\
-  \u{61}\
-  \u{29}\
-  \u{28}\
-  \u{62}\
-  \u{29}\
-  \u{28}\
-  \u{63}\
-  \u{29}\
-  \u{28}\
-  \u{64}\
-  \u{29}\
-  \u{28}\
-  \u{65}\
-  \u{29}\
-  \u{28}\
-  \u{66}\
-  \u{29}\
-  \u{28}\
-  \u{67}\
-  \u{29}\
-  \u{28}\
-  \u{68}\
-  \u{29}\
-  \u{28}\
-  \u{69}\
-  \u{29}\
-  \u{28}\
-  \u{6a}\
-  \u{29}\
-  \u{28}\
-  \u{6b}\
-  \u{29}\
-  \u{28}\
-  \u{6c}\
-  \u{29}\
-  \u{28}\
-  \u{6d}\
-  \u{29}\
-  \u{28}\
-  \u{6e}\
-  \u{29}\
-  \u{28}\
-  \u{6f}\
-  \u{29}\
-  \u{28}\
-  \u{70}\
-  \u{29}\
-  \u{28}\
-  \u{71}\
-  \u{29}\
-  \u{28}\
-  \u{72}\
-  \u{29}\
-  \u{28}\
-  \u{73}\
-  \u{29}\
-  \u{28}\
-  \u{74}\
-  \u{29}\
-  \u{28}\
-  \u{75}\
-  \u{29}\
-  \u{28}\
-  \u{76}\
-  \u{29}\
-  \u{28}\
-  \u{77}\
-  \u{29}\
-  \u{28}\
-  \u{78}\
-  \u{29}\
-  \u{28}\
-  \u{79}\
-  \u{29}\
-  \u{28}\
-  \u{7a}\
-  \u{29}\
-  \u{222b}\
-  \u{222b}\
-  \u{222b}\
-  \u{222b}\
-  \u{3a}\
-  \u{3a}\
-  \u{3d}\
-  \u{3d}\
-  \u{3d}\
-  \u{3d}\
-  \u{3d}\
-  \u{3d}\
-  \u{2add}\
-  \u{338}\
-  \u{2c30}\
-  \u{2c31}\
-  \u{2c32}\
-  \u{2c33}\
-  \u{2c34}\
-  \u{2c35}\
-  \u{2c36}\
-  \u{2c37}\
-  \u{2c38}\
-  \u{2c39}\
-  \u{2c3a}\
-  \u{2c3b}\
-  \u{2c3c}\
-  \u{2c3d}\
-  \u{2c3e}\
-  \u{2c3f}\
-  \u{2c40}\
-  \u{2c41}\
-  \u{2c42}\
-  \u{2c43}\
-  \u{2c44}\
-  \u{2c45}\
-  \u{2c46}\
-  \u{2c47}\
-  \u{2c48}\
-  \u{2c49}\
-  \u{2c4a}\
-  \u{2c4b}\
-  \u{2c4c}\
-  \u{2c4d}\
-  \u{2c4e}\
-  \u{2c4f}\
-  \u{2c50}\
-  \u{2c51}\
-  \u{2c52}\
-  \u{2c53}\
-  \u{2c54}\
-  \u{2c55}\
-  \u{2c56}\
-  \u{2c57}\
-  \u{2c58}\
-  \u{2c59}\
-  \u{2c5a}\
-  \u{2c5b}\
-  \u{2c5c}\
-  \u{2c5d}\
-  \u{2c5e}\
-  \u{2c61}\
-  \u{26b}\
-  \u{1d7d}\
-  \u{27d}\
-  \u{2c68}\
-  \u{2c6a}\
-  \u{2c6c}\
-  \u{2c73}\
-  \u{2c76}\
-  \u{23f}\
-  \u{240}\
-  \u{2c81}\
-  \u{2c83}\
-  \u{2c85}\
-  \u{2c87}\
-  \u{2c89}\
-  \u{2c8b}\
-  \u{2c8d}\
-  \u{2c8f}\
-  \u{2c91}\
-  \u{2c93}\
-  \u{2c95}\
-  \u{2c97}\
-  \u{2c99}\
-  \u{2c9b}\
-  \u{2c9d}\
-  \u{2c9f}\
-  \u{2ca1}\
-  \u{2ca3}\
-  \u{2ca5}\
-  \u{2ca7}\
-  \u{2ca9}\
-  \u{2cab}\
-  \u{2cad}\
-  \u{2caf}\
-  \u{2cb1}\
-  \u{2cb3}\
-  \u{2cb5}\
-  \u{2cb7}\
-  \u{2cb9}\
-  \u{2cbb}\
-  \u{2cbd}\
-  \u{2cbf}\
-  \u{2cc1}\
-  \u{2cc3}\
-  \u{2cc5}\
-  \u{2cc7}\
-  \u{2cc9}\
-  \u{2ccb}\
-  \u{2ccd}\
-  \u{2ccf}\
-  \u{2cd1}\
-  \u{2cd3}\
-  \u{2cd5}\
-  \u{2cd7}\
-  \u{2cd9}\
-  \u{2cdb}\
-  \u{2cdd}\
-  \u{2cdf}\
-  \u{2ce1}\
-  \u{2ce3}\
-  \u{2cec}\
-  \u{2cee}\
-  \u{2cf3}\
-  \u{2d61}\
-  \u{6bcd}\
-  \u{9f9f}\
-  \u{4e00}\
-  \u{4e28}\
-  \u{4e36}\
-  \u{4e3f}\
-  \u{4e59}\
-  \u{4e85}\
-  \u{4e8c}\
-  \u{4ea0}\
-  \u{4eba}\
-  \u{513f}\
-  \u{5165}\
-  \u{516b}\
-  \u{5182}\
-  \u{5196}\
-  \u{51ab}\
-  \u{51e0}\
-  \u{51f5}\
-  \u{5200}\
-  \u{529b}\
-  \u{52f9}\
-  \u{5315}\
-  \u{531a}\
-  \u{5338}\
-  \u{5341}\
-  \u{535c}\
-  \u{5369}\
-  \u{5382}\
-  \u{53b6}\
-  \u{53c8}\
-  \u{53e3}\
-  \u{56d7}\
-  \u{571f}\
-  \u{58eb}\
-  \u{5902}\
-  \u{590a}\
-  \u{5915}\
-  \u{5927}\
-  \u{5973}\
-  \u{5b50}\
-  \u{5b80}\
-  \u{5bf8}\
-  \u{5c0f}\
-  \u{5c22}\
-  \u{5c38}\
-  \u{5c6e}\
-  \u{5c71}\
-  \u{5ddb}\
-  \u{5de5}\
-  \u{5df1}\
-  \u{5dfe}\
-  \u{5e72}\
-  \u{5e7a}\
-  \u{5e7f}\
-  \u{5ef4}\
-  \u{5efe}\
-  \u{5f0b}\
-  \u{5f13}\
-  \u{5f50}\
-  \u{5f61}\
-  \u{5f73}\
-  \u{5fc3}\
-  \u{6208}\
-  \u{6236}\
-  \u{624b}\
-  \u{652f}\
-  \u{6534}\
-  \u{6587}\
-  \u{6597}\
-  \u{65a4}\
-  \u{65b9}\
-  \u{65e0}\
-  \u{65e5}\
-  \u{66f0}\
-  \u{6708}\
-  \u{6728}\
-  \u{6b20}\
-  \u{6b62}\
-  \u{6b79}\
-  \u{6bb3}\
-  \u{6bcb}\
-  \u{6bd4}\
-  \u{6bdb}\
-  \u{6c0f}\
-  \u{6c14}\
-  \u{6c34}\
-  \u{706b}\
-  \u{722a}\
-  \u{7236}\
-  \u{723b}\
-  \u{723f}\
-  \u{7247}\
-  \u{7259}\
-  \u{725b}\
-  \u{72ac}\
-  \u{7384}\
-  \u{7389}\
-  \u{74dc}\
-  \u{74e6}\
-  \u{7518}\
-  \u{751f}\
-  \u{7528}\
-  \u{7530}\
-  \u{758b}\
-  \u{7592}\
-  \u{7676}\
-  \u{767d}\
-  \u{76ae}\
-  \u{76bf}\
-  \u{76ee}\
-  \u{77db}\
-  \u{77e2}\
-  \u{77f3}\
-  \u{793a}\
-  \u{79b8}\
-  \u{79be}\
-  \u{7a74}\
-  \u{7acb}\
-  \u{7af9}\
-  \u{7c73}\
-  \u{7cf8}\
-  \u{7f36}\
-  \u{7f51}\
-  \u{7f8a}\
-  \u{7fbd}\
-  \u{8001}\
-  \u{800c}\
-  \u{8012}\
-  \u{8033}\
-  \u{807f}\
-  \u{8089}\
-  \u{81e3}\
-  \u{81ea}\
-  \u{81f3}\
-  \u{81fc}\
-  \u{820c}\
-  \u{821b}\
-  \u{821f}\
-  \u{826e}\
-  \u{8272}\
-  \u{8278}\
-  \u{864d}\
-  \u{866b}\
-  \u{8840}\
-  \u{884c}\
-  \u{8863}\
-  \u{897e}\
-  \u{898b}\
-  \u{89d2}\
-  \u{8a00}\
-  \u{8c37}\
-  \u{8c46}\
-  \u{8c55}\
-  \u{8c78}\
-  \u{8c9d}\
-  \u{8d64}\
-  \u{8d70}\
-  \u{8db3}\
-  \u{8eab}\
-  \u{8eca}\
-  \u{8f9b}\
-  \u{8fb0}\
-  \u{8fb5}\
-  \u{9091}\
-  \u{9149}\
-  \u{91c6}\
-  \u{91cc}\
-  \u{91d1}\
-  \u{9577}\
-  \u{9580}\
-  \u{961c}\
-  \u{96b6}\
-  \u{96b9}\
-  \u{96e8}\
-  \u{9751}\
-  \u{975e}\
-  \u{9762}\
-  \u{9769}\
-  \u{97cb}\
-  \u{97ed}\
-  \u{97f3}\
-  \u{9801}\
-  \u{98a8}\
-  \u{98db}\
-  \u{98df}\
-  \u{9996}\
-  \u{9999}\
-  \u{99ac}\
-  \u{9aa8}\
-  \u{9ad8}\
-  \u{9adf}\
-  \u{9b25}\
-  \u{9b2f}\
-  \u{9b32}\
-  \u{9b3c}\
-  \u{9b5a}\
-  \u{9ce5}\
-  \u{9e75}\
-  \u{9e7f}\
-  \u{9ea5}\
-  \u{9ebb}\
-  \u{9ec3}\
-  \u{9ecd}\
-  \u{9ed1}\
-  \u{9ef9}\
-  \u{9efd}\
-  \u{9f0e}\
-  \u{9f13}\
-  \u{9f20}\
-  \u{9f3b}\
-  \u{9f4a}\
-  \u{9f52}\
-  \u{9f8d}\
-  \u{9f9c}\
-  \u{9fa0}\
-  \u{2e}\
-  \u{3012}\
-  \u{5344}\
-  \u{5345}\
-  \u{20}\
-  \u{3099}\
-  \u{20}\
-  \u{309a}\
-  \u{3088}\
-  \u{308a}\
-  \u{30b3}\
-  \u{30c8}\
-  \u{1100}\
-  \u{1101}\
-  \u{11aa}\
-  \u{1102}\
-  \u{11ac}\
-  \u{11ad}\
-  \u{1103}\
-  \u{1104}\
-  \u{1105}\
-  \u{11b0}\
-  \u{11b1}\
-  \u{11b2}\
-  \u{11b3}\
-  \u{11b4}\
-  \u{11b5}\
-  \u{111a}\
-  \u{1106}\
-  \u{1107}\
-  \u{1108}\
-  \u{1121}\
-  \u{1109}\
-  \u{110a}\
-  \u{110b}\
-  \u{110c}\
-  \u{110d}\
-  \u{110e}\
-  \u{110f}\
-  \u{1110}\
-  \u{1111}\
-  \u{1112}\
-  \u{1161}\
-  \u{1162}\
-  \u{1163}\
-  \u{1164}\
-  \u{1165}\
-  \u{1166}\
-  \u{1167}\
-  \u{1168}\
-  \u{1169}\
-  \u{116a}\
-  \u{116b}\
-  \u{116c}\
-  \u{116d}\
-  \u{116e}\
-  \u{116f}\
-  \u{1170}\
-  \u{1171}\
-  \u{1172}\
-  \u{1173}\
-  \u{1174}\
-  \u{1175}\
-  \u{1114}\
-  \u{1115}\
-  \u{11c7}\
-  \u{11c8}\
-  \u{11cc}\
-  \u{11ce}\
-  \u{11d3}\
-  \u{11d7}\
-  \u{11d9}\
-  \u{111c}\
-  \u{11dd}\
-  \u{11df}\
-  \u{111d}\
-  \u{111e}\
-  \u{1120}\
-  \u{1122}\
-  \u{1123}\
-  \u{1127}\
-  \u{1129}\
-  \u{112b}\
-  \u{112c}\
-  \u{112d}\
-  \u{112e}\
-  \u{112f}\
-  \u{1132}\
-  \u{1136}\
-  \u{1140}\
-  \u{1147}\
-  \u{114c}\
-  \u{11f1}\
-  \u{11f2}\
-  \u{1157}\
-  \u{1158}\
-  \u{1159}\
-  \u{1184}\
-  \u{1185}\
-  \u{1188}\
-  \u{1191}\
-  \u{1192}\
-  \u{1194}\
-  \u{119e}\
-  \u{11a1}\
-  \u{4e09}\
-  \u{56db}\
-  \u{4e0a}\
-  \u{4e2d}\
-  \u{4e0b}\
-  \u{7532}\
-  \u{4e19}\
-  \u{4e01}\
-  \u{5929}\
-  \u{5730}\
-  \u{28}\
-  \u{1100}\
-  \u{29}\
-  \u{28}\
-  \u{1102}\
-  \u{29}\
-  \u{28}\
-  \u{1103}\
-  \u{29}\
-  \u{28}\
-  \u{1105}\
-  \u{29}\
-  \u{28}\
-  \u{1106}\
-  \u{29}\
-  \u{28}\
-  \u{1107}\
-  \u{29}\
-  \u{28}\
-  \u{1109}\
-  \u{29}\
-  \u{28}\
-  \u{110b}\
-  \u{29}\
-  \u{28}\
-  \u{110c}\
-  \u{29}\
-  \u{28}\
-  \u{110e}\
-  \u{29}\
-  \u{28}\
-  \u{110f}\
-  \u{29}\
-  \u{28}\
-  \u{1110}\
-  \u{29}\
-  \u{28}\
-  \u{1111}\
-  \u{29}\
-  \u{28}\
-  \u{1112}\
-  \u{29}\
-  \u{28}\
-  \u{ac00}\
-  \u{29}\
-  \u{28}\
-  \u{b098}\
-  \u{29}\
-  \u{28}\
-  \u{b2e4}\
-  \u{29}\
-  \u{28}\
-  \u{b77c}\
-  \u{29}\
-  \u{28}\
-  \u{b9c8}\
-  \u{29}\
-  \u{28}\
-  \u{bc14}\
-  \u{29}\
-  \u{28}\
-  \u{c0ac}\
-  \u{29}\
-  \u{28}\
-  \u{c544}\
-  \u{29}\
-  \u{28}\
-  \u{c790}\
-  \u{29}\
-  \u{28}\
-  \u{cc28}\
-  \u{29}\
-  \u{28}\
-  \u{ce74}\
-  \u{29}\
-  \u{28}\
-  \u{d0c0}\
-  \u{29}\
-  \u{28}\
-  \u{d30c}\
-  \u{29}\
-  \u{28}\
-  \u{d558}\
-  \u{29}\
-  \u{28}\
-  \u{c8fc}\
-  \u{29}\
-  \u{28}\
-  \u{c624}\
-  \u{c804}\
-  \u{29}\
-  \u{28}\
-  \u{c624}\
-  \u{d6c4}\
-  \u{29}\
-  \u{28}\
-  \u{4e00}\
-  \u{29}\
-  \u{28}\
-  \u{4e8c}\
-  \u{29}\
-  \u{28}\
-  \u{4e09}\
-  \u{29}\
-  \u{28}\
-  \u{56db}\
-  \u{29}\
-  \u{28}\
-  \u{4e94}\
-  \u{29}\
-  \u{28}\
-  \u{516d}\
-  \u{29}\
-  \u{28}\
-  \u{4e03}\
-  \u{29}\
-  \u{28}\
-  \u{516b}\
-  \u{29}\
-  \u{28}\
-  \u{4e5d}\
-  \u{29}\
-  \u{28}\
-  \u{5341}\
-  \u{29}\
-  \u{28}\
-  \u{6708}\
-  \u{29}\
-  \u{28}\
-  \u{706b}\
-  \u{29}\
-  \u{28}\
-  \u{6c34}\
-  \u{29}\
-  \u{28}\
-  \u{6728}\
-  \u{29}\
-  \u{28}\
-  \u{91d1}\
-  \u{29}\
-  \u{28}\
-  \u{571f}\
-  \u{29}\
-  \u{28}\
-  \u{65e5}\
-  \u{29}\
-  \u{28}\
-  \u{682a}\
-  \u{29}\
-  \u{28}\
-  \u{6709}\
-  \u{29}\
-  \u{28}\
-  \u{793e}\
-  \u{29}\
-  \u{28}\
-  \u{540d}\
-  \u{29}\
-  \u{28}\
-  \u{7279}\
-  \u{29}\
-  \u{28}\
-  \u{8ca1}\
-  \u{29}\
-  \u{28}\
-  \u{795d}\
-  \u{29}\
-  \u{28}\
-  \u{52b4}\
-  \u{29}\
-  \u{28}\
-  \u{4ee3}\
-  \u{29}\
-  \u{28}\
-  \u{547c}\
-  \u{29}\
-  \u{28}\
-  \u{5b66}\
-  \u{29}\
-  \u{28}\
-  \u{76e3}\
-  \u{29}\
-  \u{28}\
-  \u{4f01}\
-  \u{29}\
-  \u{28}\
-  \u{8cc7}\
-  \u{29}\
-  \u{28}\
-  \u{5354}\
-  \u{29}\
-  \u{28}\
-  \u{796d}\
-  \u{29}\
-  \u{28}\
-  \u{4f11}\
-  \u{29}\
-  \u{28}\
-  \u{81ea}\
-  \u{29}\
-  \u{28}\
-  \u{81f3}\
-  \u{29}\
-  \u{554f}\
-  \u{5e7c}\
-  \u{7b8f}\
-  \u{70}\
-  \u{74}\
-  \u{65}\
-  \u{32}\
-  \u{31}\
-  \u{32}\
-  \u{32}\
-  \u{32}\
-  \u{33}\
-  \u{32}\
-  \u{34}\
-  \u{32}\
-  \u{35}\
-  \u{32}\
-  \u{36}\
-  \u{32}\
-  \u{37}\
-  \u{32}\
-  \u{38}\
-  \u{32}\
-  \u{39}\
-  \u{33}\
-  \u{30}\
-  \u{33}\
-  \u{31}\
-  \u{33}\
-  \u{32}\
-  \u{33}\
-  \u{33}\
-  \u{33}\
-  \u{34}\
-  \u{33}\
-  \u{35}\
-  \u{ac00}\
-  \u{b098}\
-  \u{b2e4}\
-  \u{b77c}\
-  \u{b9c8}\
-  \u{bc14}\
-  \u{c0ac}\
-  \u{c544}\
-  \u{c790}\
-  \u{cc28}\
-  \u{ce74}\
-  \u{d0c0}\
-  \u{d30c}\
-  \u{d558}\
-  \u{cc38}\
-  \u{ace0}\
-  \u{c8fc}\
-  \u{c758}\
-  \u{c6b0}\
-  \u{4e94}\
-  \u{516d}\
-  \u{4e03}\
-  \u{4e5d}\
-  \u{682a}\
-  \u{6709}\
-  \u{793e}\
-  \u{540d}\
-  \u{7279}\
-  \u{8ca1}\
-  \u{795d}\
-  \u{52b4}\
-  \u{79d8}\
-  \u{7537}\
-  \u{9069}\
-  \u{512a}\
-  \u{5370}\
-  \u{6ce8}\
-  \u{9805}\
-  \u{4f11}\
-  \u{5199}\
-  \u{6b63}\
-  \u{5de6}\
-  \u{53f3}\
-  \u{533b}\
-  \u{5b97}\
-  \u{5b66}\
-  \u{76e3}\
-  \u{4f01}\
-  \u{8cc7}\
-  \u{5354}\
-  \u{591c}\
-  \u{33}\
-  \u{36}\
-  \u{33}\
-  \u{37}\
-  \u{33}\
-  \u{38}\
-  \u{33}\
-  \u{39}\
-  \u{34}\
-  \u{30}\
-  \u{34}\
-  \u{31}\
-  \u{34}\
-  \u{32}\
-  \u{34}\
-  \u{33}\
-  \u{34}\
-  \u{34}\
-  \u{34}\
-  \u{35}\
-  \u{34}\
-  \u{36}\
-  \u{34}\
-  \u{37}\
-  \u{34}\
-  \u{38}\
-  \u{34}\
-  \u{39}\
-  \u{35}\
-  \u{30}\
-  \u{31}\
-  \u{6708}\
-  \u{32}\
-  \u{6708}\
-  \u{33}\
-  \u{6708}\
-  \u{34}\
-  \u{6708}\
-  \u{35}\
-  \u{6708}\
-  \u{36}\
-  \u{6708}\
-  \u{37}\
-  \u{6708}\
-  \u{38}\
-  \u{6708}\
-  \u{39}\
-  \u{6708}\
-  \u{31}\
-  \u{30}\
-  \u{6708}\
-  \u{31}\
-  \u{31}\
-  \u{6708}\
-  \u{31}\
-  \u{32}\
-  \u{6708}\
-  \u{68}\
-  \u{67}\
-  \u{65}\
-  \u{72}\
-  \u{67}\
-  \u{65}\
-  \u{76}\
-  \u{6c}\
-  \u{74}\
-  \u{64}\
-  \u{30a2}\
-  \u{30a4}\
-  \u{30a6}\
-  \u{30a8}\
-  \u{30aa}\
-  \u{30ab}\
-  \u{30ad}\
-  \u{30af}\
-  \u{30b1}\
-  \u{30b3}\
-  \u{30b5}\
-  \u{30b7}\
-  \u{30b9}\
-  \u{30bb}\
-  \u{30bd}\
-  \u{30bf}\
-  \u{30c1}\
-  \u{30c4}\
-  \u{30c6}\
-  \u{30c8}\
-  \u{30ca}\
-  \u{30cb}\
-  \u{30cc}\
-  \u{30cd}\
-  \u{30ce}\
-  \u{30cf}\
-  \u{30d2}\
-  \u{30d5}\
-  \u{30d8}\
-  \u{30db}\
-  \u{30de}\
-  \u{30df}\
-  \u{30e0}\
-  \u{30e1}\
-  \u{30e2}\
-  \u{30e4}\
-  \u{30e6}\
-  \u{30e8}\
-  \u{30e9}\
-  \u{30ea}\
-  \u{30eb}\
-  \u{30ec}\
-  \u{30ed}\
-  \u{30ef}\
-  \u{30f0}\
-  \u{30f1}\
-  \u{30f2}\
-  \u{4ee4}\
-  \u{548c}\
-  \u{30a2}\
-  \u{30d1}\
-  \u{30fc}\
-  \u{30c8}\
-  \u{30a2}\
-  \u{30eb}\
-  \u{30d5}\
-  \u{30a1}\
-  \u{30a2}\
-  \u{30f3}\
-  \u{30da}\
-  \u{30a2}\
-  \u{30a2}\
-  \u{30fc}\
-  \u{30eb}\
-  \u{30a4}\
-  \u{30cb}\
-  \u{30f3}\
-  \u{30b0}\
-  \u{30a4}\
-  \u{30f3}\
-  \u{30c1}\
-  \u{30a6}\
-  \u{30a9}\
-  \u{30f3}\
-  \u{30a8}\
-  \u{30b9}\
-  \u{30af}\
-  \u{30fc}\
-  \u{30c9}\
-  \u{30a8}\
-  \u{30fc}\
-  \u{30ab}\
-  \u{30fc}\
-  \u{30aa}\
-  \u{30f3}\
-  \u{30b9}\
-  \u{30aa}\
-  \u{30fc}\
-  \u{30e0}\
-  \u{30ab}\
-  \u{30a4}\
-  \u{30ea}\
-  \u{30ab}\
-  \u{30e9}\
-  \u{30c3}\
-  \u{30c8}\
-  \u{30ab}\
-  \u{30ed}\
-  \u{30ea}\
-  \u{30fc}\
-  \u{30ac}\
-  \u{30ed}\
-  \u{30f3}\
-  \u{30ac}\
-  \u{30f3}\
-  \u{30de}\
-  \u{30ae}\
-  \u{30ac}\
-  \u{30ae}\
-  \u{30cb}\
-  \u{30fc}\
-  \u{30ad}\
-  \u{30e5}\
-  \u{30ea}\
-  \u{30fc}\
-  \u{30ae}\
-  \u{30eb}\
-  \u{30c0}\
-  \u{30fc}\
-  \u{30ad}\
-  \u{30ed}\
-  \u{30ad}\
-  \u{30ed}\
-  \u{30b0}\
-  \u{30e9}\
-  \u{30e0}\
-  \u{30ad}\
-  \u{30ed}\
-  \u{30e1}\
-  \u{30fc}\
-  \u{30c8}\
-  \u{30eb}\
-  \u{30ad}\
-  \u{30ed}\
-  \u{30ef}\
-  \u{30c3}\
-  \u{30c8}\
-  \u{30b0}\
-  \u{30e9}\
-  \u{30e0}\
-  \u{30b0}\
-  \u{30e9}\
-  \u{30e0}\
-  \u{30c8}\
-  \u{30f3}\
-  \u{30af}\
-  \u{30eb}\
-  \u{30bc}\
-  \u{30a4}\
-  \u{30ed}\
-  \u{30af}\
-  \u{30ed}\
-  \u{30fc}\
-  \u{30cd}\
-  \u{30b1}\
-  \u{30fc}\
-  \u{30b9}\
-  \u{30b3}\
-  \u{30eb}\
-  \u{30ca}\
-  \u{30b3}\
-  \u{30fc}\
-  \u{30dd}\
-  \u{30b5}\
-  \u{30a4}\
-  \u{30af}\
-  \u{30eb}\
-  \u{30b5}\
-  \u{30f3}\
-  \u{30c1}\
-  \u{30fc}\
-  \u{30e0}\
-  \u{30b7}\
-  \u{30ea}\
-  \u{30f3}\
-  \u{30b0}\
-  \u{30bb}\
-  \u{30f3}\
-  \u{30c1}\
-  \u{30bb}\
-  \u{30f3}\
-  \u{30c8}\
-  \u{30c0}\
-  \u{30fc}\
-  \u{30b9}\
-  \u{30c7}\
-  \u{30b7}\
-  \u{30c9}\
-  \u{30eb}\
-  \u{30c8}\
-  \u{30f3}\
-  \u{30ca}\
-  \u{30ce}\
-  \u{30ce}\
-  \u{30c3}\
-  \u{30c8}\
-  \u{30cf}\
-  \u{30a4}\
-  \u{30c4}\
-  \u{30d1}\
-  \u{30fc}\
-  \u{30bb}\
-  \u{30f3}\
-  \u{30c8}\
-  \u{30d1}\
-  \u{30fc}\
-  \u{30c4}\
-  \u{30d0}\
-  \u{30fc}\
-  \u{30ec}\
-  \u{30eb}\
-  \u{30d4}\
-  \u{30a2}\
-  \u{30b9}\
-  \u{30c8}\
-  \u{30eb}\
-  \u{30d4}\
-  \u{30af}\
-  \u{30eb}\
-  \u{30d4}\
-  \u{30b3}\
-  \u{30d3}\
-  \u{30eb}\
-  \u{30d5}\
-  \u{30a1}\
-  \u{30e9}\
-  \u{30c3}\
-  \u{30c9}\
-  \u{30d5}\
-  \u{30a3}\
-  \u{30fc}\
-  \u{30c8}\
-  \u{30d6}\
-  \u{30c3}\
-  \u{30b7}\
-  \u{30a7}\
-  \u{30eb}\
-  \u{30d5}\
-  \u{30e9}\
-  \u{30f3}\
-  \u{30d8}\
-  \u{30af}\
-  \u{30bf}\
-  \u{30fc}\
-  \u{30eb}\
-  \u{30da}\
-  \u{30bd}\
-  \u{30da}\
-  \u{30cb}\
-  \u{30d2}\
-  \u{30d8}\
-  \u{30eb}\
-  \u{30c4}\
-  \u{30da}\
-  \u{30f3}\
-  \u{30b9}\
-  \u{30da}\
-  \u{30fc}\
-  \u{30b8}\
-  \u{30d9}\
-  \u{30fc}\
-  \u{30bf}\
-  \u{30dd}\
-  \u{30a4}\
-  \u{30f3}\
-  \u{30c8}\
-  \u{30dc}\
-  \u{30eb}\
-  \u{30c8}\
-  \u{30db}\
-  \u{30f3}\
-  \u{30dd}\
-  \u{30f3}\
-  \u{30c9}\
-  \u{30db}\
-  \u{30fc}\
-  \u{30eb}\
-  \u{30db}\
-  \u{30fc}\
-  \u{30f3}\
-  \u{30de}\
-  \u{30a4}\
-  \u{30af}\
-  \u{30ed}\
-  \u{30de}\
-  \u{30a4}\
-  \u{30eb}\
-  \u{30de}\
-  \u{30c3}\
-  \u{30cf}\
-  \u{30de}\
-  \u{30eb}\
-  \u{30af}\
-  \u{30de}\
-  \u{30f3}\
-  \u{30b7}\
-  \u{30e7}\
-  \u{30f3}\
-  \u{30df}\
-  \u{30af}\
-  \u{30ed}\
-  \u{30f3}\
-  \u{30df}\
-  \u{30ea}\
-  \u{30df}\
-  \u{30ea}\
-  \u{30d0}\
-  \u{30fc}\
-  \u{30eb}\
-  \u{30e1}\
-  \u{30ac}\
-  \u{30e1}\
-  \u{30ac}\
-  \u{30c8}\
-  \u{30f3}\
-  \u{30e1}\
-  \u{30fc}\
-  \u{30c8}\
-  \u{30eb}\
-  \u{30e4}\
-  \u{30fc}\
-  \u{30c9}\
-  \u{30e4}\
-  \u{30fc}\
-  \u{30eb}\
-  \u{30e6}\
-  \u{30a2}\
-  \u{30f3}\
-  \u{30ea}\
-  \u{30c3}\
-  \u{30c8}\
-  \u{30eb}\
-  \u{30ea}\
-  \u{30e9}\
-  \u{30eb}\
-  \u{30d4}\
-  \u{30fc}\
-  \u{30eb}\
-  \u{30fc}\
-  \u{30d6}\
-  \u{30eb}\
-  \u{30ec}\
-  \u{30e0}\
-  \u{30ec}\
-  \u{30f3}\
-  \u{30c8}\
-  \u{30b2}\
-  \u{30f3}\
-  \u{30ef}\
-  \u{30c3}\
-  \u{30c8}\
-  \u{30}\
-  \u{70b9}\
-  \u{31}\
-  \u{70b9}\
-  \u{32}\
-  \u{70b9}\
-  \u{33}\
-  \u{70b9}\
-  \u{34}\
-  \u{70b9}\
-  \u{35}\
-  \u{70b9}\
-  \u{36}\
-  \u{70b9}\
-  \u{37}\
-  \u{70b9}\
-  \u{38}\
-  \u{70b9}\
-  \u{39}\
-  \u{70b9}\
-  \u{31}\
-  \u{30}\
-  \u{70b9}\
-  \u{31}\
-  \u{31}\
-  \u{70b9}\
-  \u{31}\
-  \u{32}\
-  \u{70b9}\
-  \u{31}\
-  \u{33}\
-  \u{70b9}\
-  \u{31}\
-  \u{34}\
-  \u{70b9}\
-  \u{31}\
-  \u{35}\
-  \u{70b9}\
-  \u{31}\
-  \u{36}\
-  \u{70b9}\
-  \u{31}\
-  \u{37}\
-  \u{70b9}\
-  \u{31}\
-  \u{38}\
-  \u{70b9}\
-  \u{31}\
-  \u{39}\
-  \u{70b9}\
-  \u{32}\
-  \u{30}\
-  \u{70b9}\
-  \u{32}\
-  \u{31}\
-  \u{70b9}\
-  \u{32}\
-  \u{32}\
-  \u{70b9}\
-  \u{32}\
-  \u{33}\
-  \u{70b9}\
-  \u{32}\
-  \u{34}\
-  \u{70b9}\
-  \u{68}\
-  \u{70}\
-  \u{61}\
-  \u{64}\
-  \u{61}\
-  \u{61}\
-  \u{75}\
-  \u{62}\
-  \u{61}\
-  \u{72}\
-  \u{6f}\
-  \u{76}\
-  \u{70}\
-  \u{63}\
-  \u{64}\
-  \u{6d}\
-  \u{64}\
-  \u{6d}\
-  \u{32}\
-  \u{64}\
-  \u{6d}\
-  \u{33}\
-  \u{69}\
-  \u{75}\
-  \u{5e73}\
-  \u{6210}\
-  \u{662d}\
-  \u{548c}\
-  \u{5927}\
-  \u{6b63}\
-  \u{660e}\
-  \u{6cbb}\
-  \u{682a}\
-  \u{5f0f}\
-  \u{4f1a}\
-  \u{793e}\
-  \u{70}\
-  \u{61}\
-  \u{6e}\
-  \u{61}\
-  \u{3bc}\
-  \u{61}\
-  \u{6d}\
-  \u{61}\
-  \u{6b}\
-  \u{61}\
-  \u{6b}\
-  \u{62}\
-  \u{6d}\
-  \u{62}\
-  \u{67}\
-  \u{62}\
-  \u{63}\
-  \u{61}\
-  \u{6c}\
-  \u{6b}\
-  \u{63}\
-  \u{61}\
-  \u{6c}\
-  \u{70}\
-  \u{66}\
-  \u{6e}\
-  \u{66}\
-  \u{3bc}\
-  \u{66}\
-  \u{3bc}\
-  \u{67}\
-  \u{6d}\
-  \u{67}\
-  \u{6b}\
-  \u{67}\
-  \u{68}\
-  \u{7a}\
-  \u{6b}\
-  \u{68}\
-  \u{7a}\
-  \u{6d}\
-  \u{68}\
-  \u{7a}\
-  \u{67}\
-  \u{68}\
-  \u{7a}\
-  \u{74}\
-  \u{68}\
-  \u{7a}\
-  \u{3bc}\
-  \u{6c}\
-  \u{6d}\
-  \u{6c}\
-  \u{64}\
-  \u{6c}\
-  \u{6b}\
-  \u{6c}\
-  \u{66}\
-  \u{6d}\
-  \u{6e}\
-  \u{6d}\
-  \u{3bc}\
-  \u{6d}\
-  \u{6d}\
-  \u{6d}\
-  \u{63}\
-  \u{6d}\
-  \u{6b}\
-  \u{6d}\
-  \u{6d}\
-  \u{6d}\
-  \u{32}\
-  \u{63}\
-  \u{6d}\
-  \u{32}\
-  \u{6d}\
-  \u{32}\
-  \u{6b}\
-  \u{6d}\
-  \u{32}\
-  \u{6d}\
-  \u{6d}\
-  \u{33}\
-  \u{63}\
-  \u{6d}\
-  \u{33}\
-  \u{6d}\
-  \u{33}\
-  \u{6b}\
-  \u{6d}\
-  \u{33}\
-  \u{6d}\
-  \u{2215}\
-  \u{73}\
-  \u{6d}\
-  \u{2215}\
-  \u{73}\
-  \u{32}\
-  \u{6b}\
-  \u{70}\
-  \u{61}\
-  \u{6d}\
-  \u{70}\
-  \u{61}\
-  \u{67}\
-  \u{70}\
-  \u{61}\
-  \u{72}\
-  \u{61}\
-  \u{64}\
-  \u{72}\
-  \u{61}\
-  \u{64}\
-  \u{2215}\
-  \u{73}\
-  \u{72}\
-  \u{61}\
-  \u{64}\
-  \u{2215}\
-  \u{73}\
-  \u{32}\
-  \u{70}\
-  \u{73}\
-  \u{6e}\
-  \u{73}\
-  \u{3bc}\
-  \u{73}\
-  \u{6d}\
-  \u{73}\
-  \u{70}\
-  \u{76}\
-  \u{6e}\
-  \u{76}\
-  \u{3bc}\
-  \u{76}\
-  \u{6d}\
-  \u{76}\
-  \u{6b}\
-  \u{76}\
-  \u{70}\
-  \u{77}\
-  \u{6e}\
-  \u{77}\
-  \u{3bc}\
-  \u{77}\
-  \u{6d}\
-  \u{77}\
-  \u{6b}\
-  \u{77}\
-  \u{6b}\
-  \u{3c9}\
-  \u{6d}\
-  \u{3c9}\
-  \u{62}\
-  \u{71}\
-  \u{63}\
-  \u{63}\
-  \u{63}\
-  \u{64}\
-  \u{63}\
-  \u{2215}\
-  \u{6b}\
-  \u{67}\
-  \u{64}\
-  \u{62}\
-  \u{67}\
-  \u{79}\
-  \u{68}\
-  \u{61}\
-  \u{68}\
-  \u{70}\
-  \u{69}\
-  \u{6e}\
-  \u{6b}\
-  \u{6b}\
-  \u{6b}\
-  \u{74}\
-  \u{6c}\
-  \u{6d}\
-  \u{6c}\
-  \u{6e}\
-  \u{6c}\
-  \u{6f}\
-  \u{67}\
-  \u{6c}\
-  \u{78}\
-  \u{6d}\
-  \u{69}\
-  \u{6c}\
-  \u{6d}\
-  \u{6f}\
-  \u{6c}\
-  \u{70}\
-  \u{68}\
-  \u{70}\
-  \u{70}\
-  \u{6d}\
-  \u{70}\
-  \u{72}\
-  \u{73}\
-  \u{72}\
-  \u{73}\
-  \u{76}\
-  \u{77}\
-  \u{62}\
-  \u{76}\
-  \u{2215}\
-  \u{6d}\
-  \u{61}\
-  \u{2215}\
-  \u{6d}\
-  \u{31}\
-  \u{65e5}\
-  \u{32}\
-  \u{65e5}\
-  \u{33}\
-  \u{65e5}\
-  \u{34}\
-  \u{65e5}\
-  \u{35}\
-  \u{65e5}\
-  \u{36}\
-  \u{65e5}\
-  \u{37}\
-  \u{65e5}\
-  \u{38}\
-  \u{65e5}\
-  \u{39}\
-  \u{65e5}\
-  \u{31}\
-  \u{30}\
-  \u{65e5}\
-  \u{31}\
-  \u{31}\
-  \u{65e5}\
-  \u{31}\
-  \u{32}\
-  \u{65e5}\
-  \u{31}\
-  \u{33}\
-  \u{65e5}\
-  \u{31}\
-  \u{34}\
-  \u{65e5}\
-  \u{31}\
-  \u{35}\
-  \u{65e5}\
-  \u{31}\
-  \u{36}\
-  \u{65e5}\
-  \u{31}\
-  \u{37}\
-  \u{65e5}\
-  \u{31}\
-  \u{38}\
-  \u{65e5}\
-  \u{31}\
-  \u{39}\
-  \u{65e5}\
-  \u{32}\
-  \u{30}\
-  \u{65e5}\
-  \u{32}\
-  \u{31}\
-  \u{65e5}\
-  \u{32}\
-  \u{32}\
-  \u{65e5}\
-  \u{32}\
-  \u{33}\
-  \u{65e5}\
-  \u{32}\
-  \u{34}\
-  \u{65e5}\
-  \u{32}\
-  \u{35}\
-  \u{65e5}\
-  \u{32}\
-  \u{36}\
-  \u{65e5}\
-  \u{32}\
-  \u{37}\
-  \u{65e5}\
-  \u{32}\
-  \u{38}\
-  \u{65e5}\
-  \u{32}\
-  \u{39}\
-  \u{65e5}\
-  \u{33}\
-  \u{30}\
-  \u{65e5}\
-  \u{33}\
-  \u{31}\
-  \u{65e5}\
-  \u{67}\
-  \u{61}\
-  \u{6c}\
-  \u{a641}\
-  \u{a643}\
-  \u{a645}\
-  \u{a647}\
-  \u{a649}\
-  \u{a64d}\
-  \u{a64f}\
-  \u{a651}\
-  \u{a653}\
-  \u{a655}\
-  \u{a657}\
-  \u{a659}\
-  \u{a65b}\
-  \u{a65d}\
-  \u{a65f}\
-  \u{a661}\
-  \u{a663}\
-  \u{a665}\
-  \u{a667}\
-  \u{a669}\
-  \u{a66b}\
-  \u{a66d}\
-  \u{a681}\
-  \u{a683}\
-  \u{a685}\
-  \u{a687}\
-  \u{a689}\
-  \u{a68b}\
-  \u{a68d}\
-  \u{a68f}\
-  \u{a691}\
-  \u{a693}\
-  \u{a695}\
-  \u{a697}\
-  \u{a699}\
-  \u{a69b}\
-  \u{a723}\
-  \u{a725}\
-  \u{a727}\
-  \u{a729}\
-  \u{a72b}\
-  \u{a72d}\
-  \u{a72f}\
-  \u{a733}\
-  \u{a735}\
-  \u{a737}\
-  \u{a739}\
-  \u{a73b}\
-  \u{a73d}\
-  \u{a73f}\
-  \u{a741}\
-  \u{a743}\
-  \u{a745}\
-  \u{a747}\
-  \u{a749}\
-  \u{a74b}\
-  \u{a74d}\
-  \u{a74f}\
-  \u{a751}\
-  \u{a753}\
-  \u{a755}\
-  \u{a757}\
-  \u{a759}\
-  \u{a75b}\
-  \u{a75d}\
-  \u{a75f}\
-  \u{a761}\
-  \u{a763}\
-  \u{a765}\
-  \u{a767}\
-  \u{a769}\
-  \u{a76b}\
-  \u{a76d}\
-  \u{a76f}\
-  \u{a77a}\
-  \u{a77c}\
-  \u{1d79}\
-  \u{a77f}\
-  \u{a781}\
-  \u{a783}\
-  \u{a785}\
-  \u{a787}\
-  \u{a78c}\
-  \u{a791}\
-  \u{a793}\
-  \u{a797}\
-  \u{a799}\
-  \u{a79b}\
-  \u{a79d}\
-  \u{a79f}\
-  \u{a7a1}\
-  \u{a7a3}\
-  \u{a7a5}\
-  \u{a7a7}\
-  \u{a7a9}\
-  \u{26c}\
-  \u{29e}\
-  \u{287}\
-  \u{ab53}\
-  \u{a7b5}\
-  \u{a7b7}\
-  \u{a7b9}\
-  \u{a7bb}\
-  \u{a7bd}\
-  \u{a7bf}\
-  \u{a7c3}\
-  \u{a794}\
-  \u{1d8e}\
-  \u{a7c8}\
-  \u{a7ca}\
-  \u{a7f6}\
-  \u{ab37}\
-  \u{ab52}\
-  \u{28d}\
-  \u{13a0}\
-  \u{13a1}\
-  \u{13a2}\
-  \u{13a3}\
-  \u{13a4}\
-  \u{13a5}\
-  \u{13a6}\
-  \u{13a7}\
-  \u{13a8}\
-  \u{13a9}\
-  \u{13aa}\
-  \u{13ab}\
-  \u{13ac}\
-  \u{13ad}\
-  \u{13ae}\
-  \u{13af}\
-  \u{13b0}\
-  \u{13b1}\
-  \u{13b2}\
-  \u{13b3}\
-  \u{13b4}\
-  \u{13b5}\
-  \u{13b6}\
-  \u{13b7}\
-  \u{13b8}\
-  \u{13b9}\
-  \u{13ba}\
-  \u{13bb}\
-  \u{13bc}\
-  \u{13bd}\
-  \u{13be}\
-  \u{13bf}\
-  \u{13c0}\
-  \u{13c1}\
-  \u{13c2}\
-  \u{13c3}\
-  \u{13c4}\
-  \u{13c5}\
-  \u{13c6}\
-  \u{13c7}\
-  \u{13c8}\
-  \u{13c9}\
-  \u{13ca}\
-  \u{13cb}\
-  \u{13cc}\
-  \u{13cd}\
-  \u{13ce}\
-  \u{13cf}\
-  \u{13d0}\
-  \u{13d1}\
-  \u{13d2}\
-  \u{13d3}\
-  \u{13d4}\
-  \u{13d5}\
-  \u{13d6}\
-  \u{13d7}\
-  \u{13d8}\
-  \u{13d9}\
-  \u{13da}\
-  \u{13db}\
-  \u{13dc}\
-  \u{13dd}\
-  \u{13de}\
-  \u{13df}\
-  \u{13e0}\
-  \u{13e1}\
-  \u{13e2}\
-  \u{13e3}\
-  \u{13e4}\
-  \u{13e5}\
-  \u{13e6}\
-  \u{13e7}\
-  \u{13e8}\
-  \u{13e9}\
-  \u{13ea}\
-  \u{13eb}\
-  \u{13ec}\
-  \u{13ed}\
-  \u{13ee}\
-  \u{13ef}\
-  \u{8c48}\
-  \u{66f4}\
-  \u{8cc8}\
-  \u{6ed1}\
-  \u{4e32}\
-  \u{53e5}\
-  \u{5951}\
-  \u{5587}\
-  \u{5948}\
-  \u{61f6}\
-  \u{7669}\
-  \u{7f85}\
-  \u{863f}\
-  \u{87ba}\
-  \u{88f8}\
-  \u{908f}\
-  \u{6a02}\
-  \u{6d1b}\
-  \u{70d9}\
-  \u{73de}\
-  \u{843d}\
-  \u{916a}\
-  \u{99f1}\
-  \u{4e82}\
-  \u{5375}\
-  \u{6b04}\
-  \u{721b}\
-  \u{862d}\
-  \u{9e1e}\
-  \u{5d50}\
-  \u{6feb}\
-  \u{85cd}\
-  \u{8964}\
-  \u{62c9}\
-  \u{81d8}\
-  \u{881f}\
-  \u{5eca}\
-  \u{6717}\
-  \u{6d6a}\
-  \u{72fc}\
-  \u{90ce}\
-  \u{4f86}\
-  \u{51b7}\
-  \u{52de}\
-  \u{64c4}\
-  \u{6ad3}\
-  \u{7210}\
-  \u{76e7}\
-  \u{8606}\
-  \u{865c}\
-  \u{8def}\
-  \u{9732}\
-  \u{9b6f}\
-  \u{9dfa}\
-  \u{788c}\
-  \u{797f}\
-  \u{7da0}\
-  \u{83c9}\
-  \u{9304}\
-  \u{8ad6}\
-  \u{58df}\
-  \u{5f04}\
-  \u{7c60}\
-  \u{807e}\
-  \u{7262}\
-  \u{78ca}\
-  \u{8cc2}\
-  \u{96f7}\
-  \u{58d8}\
-  \u{5c62}\
-  \u{6a13}\
-  \u{6dda}\
-  \u{6f0f}\
-  \u{7d2f}\
-  \u{7e37}\
-  \u{964b}\
-  \u{52d2}\
-  \u{808b}\
-  \u{51dc}\
-  \u{51cc}\
-  \u{7a1c}\
-  \u{7dbe}\
-  \u{83f1}\
-  \u{9675}\
-  \u{8b80}\
-  \u{62cf}\
-  \u{8afe}\
-  \u{4e39}\
-  \u{5be7}\
-  \u{6012}\
-  \u{7387}\
-  \u{7570}\
-  \u{5317}\
-  \u{78fb}\
-  \u{4fbf}\
-  \u{5fa9}\
-  \u{4e0d}\
-  \u{6ccc}\
-  \u{6578}\
-  \u{7d22}\
-  \u{53c3}\
-  \u{585e}\
-  \u{7701}\
-  \u{8449}\
-  \u{8aaa}\
-  \u{6bba}\
-  \u{6c88}\
-  \u{62fe}\
-  \u{82e5}\
-  \u{63a0}\
-  \u{7565}\
-  \u{4eae}\
-  \u{5169}\
-  \u{51c9}\
-  \u{6881}\
-  \u{7ce7}\
-  \u{826f}\
-  \u{8ad2}\
-  \u{91cf}\
-  \u{52f5}\
-  \u{5442}\
-  \u{5eec}\
-  \u{65c5}\
-  \u{6ffe}\
-  \u{792a}\
-  \u{95ad}\
-  \u{9a6a}\
-  \u{9e97}\
-  \u{9ece}\
-  \u{66c6}\
-  \u{6b77}\
-  \u{8f62}\
-  \u{5e74}\
-  \u{6190}\
-  \u{6200}\
-  \u{649a}\
-  \u{6f23}\
-  \u{7149}\
-  \u{7489}\
-  \u{79ca}\
-  \u{7df4}\
-  \u{806f}\
-  \u{8f26}\
-  \u{84ee}\
-  \u{9023}\
-  \u{934a}\
-  \u{5217}\
-  \u{52a3}\
-  \u{54bd}\
-  \u{70c8}\
-  \u{88c2}\
-  \u{5ec9}\
-  \u{5ff5}\
-  \u{637b}\
-  \u{6bae}\
-  \u{7c3e}\
-  \u{7375}\
-  \u{4ee4}\
-  \u{56f9}\
-  \u{5dba}\
-  \u{601c}\
-  \u{73b2}\
-  \u{7469}\
-  \u{7f9a}\
-  \u{8046}\
-  \u{9234}\
-  \u{96f6}\
-  \u{9748}\
-  \u{9818}\
-  \u{4f8b}\
-  \u{79ae}\
-  \u{91b4}\
-  \u{96b8}\
-  \u{60e1}\
-  \u{4e86}\
-  \u{50da}\
-  \u{5bee}\
-  \u{5c3f}\
-  \u{6599}\
-  \u{71ce}\
-  \u{7642}\
-  \u{84fc}\
-  \u{907c}\
-  \u{6688}\
-  \u{962e}\
-  \u{5289}\
-  \u{677b}\
-  \u{67f3}\
-  \u{6d41}\
-  \u{6e9c}\
-  \u{7409}\
-  \u{7559}\
-  \u{786b}\
-  \u{7d10}\
-  \u{985e}\
-  \u{622e}\
-  \u{9678}\
-  \u{502b}\
-  \u{5d19}\
-  \u{6dea}\
-  \u{8f2a}\
-  \u{5f8b}\
-  \u{6144}\
-  \u{6817}\
-  \u{9686}\
-  \u{5229}\
-  \u{540f}\
-  \u{5c65}\
-  \u{6613}\
-  \u{674e}\
-  \u{68a8}\
-  \u{6ce5}\
-  \u{7406}\
-  \u{75e2}\
-  \u{7f79}\
-  \u{88cf}\
-  \u{88e1}\
-  \u{96e2}\
-  \u{533f}\
-  \u{6eba}\
-  \u{541d}\
-  \u{71d0}\
-  \u{7498}\
-  \u{85fa}\
-  \u{96a3}\
-  \u{9c57}\
-  \u{9e9f}\
-  \u{6797}\
-  \u{6dcb}\
-  \u{81e8}\
-  \u{7b20}\
-  \u{7c92}\
-  \u{72c0}\
-  \u{7099}\
-  \u{8b58}\
-  \u{4ec0}\
-  \u{8336}\
-  \u{523a}\
-  \u{5207}\
-  \u{5ea6}\
-  \u{62d3}\
-  \u{7cd6}\
-  \u{5b85}\
-  \u{6d1e}\
-  \u{66b4}\
-  \u{8f3b}\
-  \u{964d}\
-  \u{5ed3}\
-  \u{5140}\
-  \u{55c0}\
-  \u{585a}\
-  \u{6674}\
-  \u{51de}\
-  \u{732a}\
-  \u{76ca}\
-  \u{793c}\
-  \u{795e}\
-  \u{7965}\
-  \u{798f}\
-  \u{9756}\
-  \u{7cbe}\
-  \u{8612}\
-  \u{8af8}\
-  \u{9038}\
-  \u{90fd}\
-  \u{98ef}\
-  \u{98fc}\
-  \u{9928}\
-  \u{9db4}\
-  \u{90de}\
-  \u{96b7}\
-  \u{4fae}\
-  \u{50e7}\
-  \u{514d}\
-  \u{52c9}\
-  \u{52e4}\
-  \u{5351}\
-  \u{559d}\
-  \u{5606}\
-  \u{5668}\
-  \u{5840}\
-  \u{58a8}\
-  \u{5c64}\
-  \u{6094}\
-  \u{6168}\
-  \u{618e}\
-  \u{61f2}\
-  \u{654f}\
-  \u{65e2}\
-  \u{6691}\
-  \u{6885}\
-  \u{6d77}\
-  \u{6e1a}\
-  \u{6f22}\
-  \u{716e}\
-  \u{722b}\
-  \u{7422}\
-  \u{7891}\
-  \u{7949}\
-  \u{7948}\
-  \u{7950}\
-  \u{7956}\
-  \u{798d}\
-  \u{798e}\
-  \u{7a40}\
-  \u{7a81}\
-  \u{7bc0}\
-  \u{7e09}\
-  \u{7e41}\
-  \u{7f72}\
-  \u{8005}\
-  \u{81ed}\
-  \u{8279}\
-  \u{8457}\
-  \u{8910}\
-  \u{8996}\
-  \u{8b01}\
-  \u{8b39}\
-  \u{8cd3}\
-  \u{8d08}\
-  \u{8fb6}\
-  \u{96e3}\
-  \u{97ff}\
-  \u{983b}\
-  \u{6075}\
-  \u{242ee}\
-  \u{8218}\
-  \u{4e26}\
-  \u{51b5}\
-  \u{5168}\
-  \u{4f80}\
-  \u{5145}\
-  \u{5180}\
-  \u{52c7}\
-  \u{52fa}\
-  \u{5555}\
-  \u{5599}\
-  \u{55e2}\
-  \u{58b3}\
-  \u{5944}\
-  \u{5954}\
-  \u{5a62}\
-  \u{5b28}\
-  \u{5ed2}\
-  \u{5ed9}\
-  \u{5f69}\
-  \u{5fad}\
-  \u{60d8}\
-  \u{614e}\
-  \u{6108}\
-  \u{6160}\
-  \u{6234}\
-  \u{63c4}\
-  \u{641c}\
-  \u{6452}\
-  \u{6556}\
-  \u{671b}\
-  \u{6756}\
-  \u{6edb}\
-  \u{6ecb}\
-  \u{701e}\
-  \u{77a7}\
-  \u{7235}\
-  \u{72af}\
-  \u{7471}\
-  \u{7506}\
-  \u{753b}\
-  \u{761d}\
-  \u{761f}\
-  \u{76db}\
-  \u{76f4}\
-  \u{774a}\
-  \u{7740}\
-  \u{78cc}\
-  \u{7ab1}\
-  \u{7c7b}\
-  \u{7d5b}\
-  \u{7f3e}\
-  \u{8352}\
-  \u{83ef}\
-  \u{8779}\
-  \u{8941}\
-  \u{8986}\
-  \u{8abf}\
-  \u{8acb}\
-  \u{8aed}\
-  \u{8b8a}\
-  \u{8f38}\
-  \u{9072}\
-  \u{9199}\
-  \u{9276}\
-  \u{967c}\
-  \u{97db}\
-  \u{980b}\
-  \u{9b12}\
-  \u{2284a}\
-  \u{22844}\
-  \u{233d5}\
-  \u{3b9d}\
-  \u{4018}\
-  \u{4039}\
-  \u{25249}\
-  \u{25cd0}\
-  \u{27ed3}\
-  \u{9f43}\
-  \u{9f8e}\
-  \u{66}\
-  \u{66}\
-  \u{66}\
-  \u{69}\
-  \u{66}\
-  \u{6c}\
-  \u{66}\
-  \u{66}\
-  \u{69}\
-  \u{66}\
-  \u{66}\
-  \u{6c}\
-  \u{73}\
-  \u{74}\
-  \u{574}\
-  \u{576}\
-  \u{574}\
-  \u{565}\
-  \u{574}\
-  \u{56b}\
-  \u{57e}\
-  \u{576}\
-  \u{574}\
-  \u{56d}\
-  \u{5d9}\
-  \u{5b4}\
-  \u{5f2}\
-  \u{5b7}\
-  \u{5e2}\
-  \u{5d4}\
-  \u{5db}\
-  \u{5dc}\
-  \u{5dd}\
-  \u{5e8}\
-  \u{5ea}\
-  \u{5e9}\
-  \u{5c1}\
-  \u{5e9}\
-  \u{5c2}\
-  \u{5e9}\
-  \u{5bc}\
-  \u{5c1}\
-  \u{5e9}\
-  \u{5bc}\
-  \u{5c2}\
-  \u{5d0}\
-  \u{5b7}\
-  \u{5d0}\
-  \u{5b8}\
-  \u{5d0}\
-  \u{5bc}\
-  \u{5d1}\
-  \u{5bc}\
-  \u{5d2}\
-  \u{5bc}\
-  \u{5d3}\
-  \u{5bc}\
-  \u{5d4}\
-  \u{5bc}\
-  \u{5d5}\
-  \u{5bc}\
-  \u{5d6}\
-  \u{5bc}\
-  \u{5d8}\
-  \u{5bc}\
-  \u{5d9}\
-  \u{5bc}\
-  \u{5da}\
-  \u{5bc}\
-  \u{5db}\
-  \u{5bc}\
-  \u{5dc}\
-  \u{5bc}\
-  \u{5de}\
-  \u{5bc}\
-  \u{5e0}\
-  \u{5bc}\
-  \u{5e1}\
-  \u{5bc}\
-  \u{5e3}\
-  \u{5bc}\
-  \u{5e4}\
-  \u{5bc}\
-  \u{5e6}\
-  \u{5bc}\
-  \u{5e7}\
-  \u{5bc}\
-  \u{5e8}\
-  \u{5bc}\
-  \u{5e9}\
-  \u{5bc}\
-  \u{5ea}\
-  \u{5bc}\
-  \u{5d5}\
-  \u{5b9}\
-  \u{5d1}\
-  \u{5bf}\
-  \u{5db}\
-  \u{5bf}\
-  \u{5e4}\
-  \u{5bf}\
-  \u{5d0}\
-  \u{5dc}\
-  \u{671}\
-  \u{67b}\
-  \u{67e}\
-  \u{680}\
-  \u{67a}\
-  \u{67f}\
-  \u{679}\
-  \u{6a4}\
-  \u{6a6}\
-  \u{684}\
-  \u{683}\
-  \u{686}\
-  \u{687}\
-  \u{68d}\
-  \u{68c}\
-  \u{68e}\
-  \u{688}\
-  \u{698}\
-  \u{691}\
-  \u{6a9}\
-  \u{6af}\
-  \u{6b3}\
-  \u{6b1}\
-  \u{6ba}\
-  \u{6bb}\
-  \u{6c0}\
-  \u{6c1}\
-  \u{6be}\
-  \u{6d2}\
-  \u{6d3}\
-  \u{6ad}\
-  \u{6c7}\
-  \u{6c6}\
-  \u{6c8}\
-  \u{6cb}\
-  \u{6c5}\
-  \u{6c9}\
-  \u{6d0}\
-  \u{649}\
-  \u{626}\
-  \u{627}\
-  \u{626}\
-  \u{6d5}\
-  \u{626}\
-  \u{648}\
-  \u{626}\
-  \u{6c7}\
-  \u{626}\
-  \u{6c6}\
-  \u{626}\
-  \u{6c8}\
-  \u{626}\
-  \u{6d0}\
-  \u{626}\
-  \u{649}\
-  \u{6cc}\
-  \u{626}\
-  \u{62c}\
-  \u{626}\
-  \u{62d}\
-  \u{626}\
-  \u{645}\
-  \u{626}\
-  \u{64a}\
-  \u{628}\
-  \u{62c}\
-  \u{628}\
-  \u{62d}\
-  \u{628}\
-  \u{62e}\
-  \u{628}\
-  \u{645}\
-  \u{628}\
-  \u{649}\
-  \u{628}\
-  \u{64a}\
-  \u{62a}\
-  \u{62c}\
-  \u{62a}\
-  \u{62d}\
-  \u{62a}\
-  \u{62e}\
-  \u{62a}\
-  \u{645}\
-  \u{62a}\
-  \u{649}\
-  \u{62a}\
-  \u{64a}\
-  \u{62b}\
-  \u{62c}\
-  \u{62b}\
-  \u{645}\
-  \u{62b}\
-  \u{649}\
-  \u{62b}\
-  \u{64a}\
-  \u{62c}\
-  \u{62d}\
-  \u{62c}\
-  \u{645}\
-  \u{62d}\
-  \u{62c}\
-  \u{62d}\
-  \u{645}\
-  \u{62e}\
-  \u{62c}\
-  \u{62e}\
-  \u{62d}\
-  \u{62e}\
-  \u{645}\
-  \u{633}\
-  \u{62c}\
-  \u{633}\
-  \u{62d}\
-  \u{633}\
-  \u{62e}\
-  \u{633}\
-  \u{645}\
-  \u{635}\
-  \u{62d}\
-  \u{635}\
-  \u{645}\
-  \u{636}\
-  \u{62c}\
-  \u{636}\
-  \u{62d}\
-  \u{636}\
-  \u{62e}\
-  \u{636}\
-  \u{645}\
-  \u{637}\
-  \u{62d}\
-  \u{637}\
-  \u{645}\
-  \u{638}\
-  \u{645}\
-  \u{639}\
-  \u{62c}\
-  \u{639}\
-  \u{645}\
-  \u{63a}\
-  \u{62c}\
-  \u{63a}\
-  \u{645}\
-  \u{641}\
-  \u{62c}\
-  \u{641}\
-  \u{62d}\
-  \u{641}\
-  \u{62e}\
-  \u{641}\
-  \u{645}\
-  \u{641}\
-  \u{649}\
-  \u{641}\
-  \u{64a}\
-  \u{642}\
-  \u{62d}\
-  \u{642}\
-  \u{645}\
-  \u{642}\
-  \u{649}\
-  \u{642}\
-  \u{64a}\
-  \u{643}\
-  \u{627}\
-  \u{643}\
-  \u{62c}\
-  \u{643}\
-  \u{62d}\
-  \u{643}\
-  \u{62e}\
-  \u{643}\
-  \u{644}\
-  \u{643}\
-  \u{645}\
-  \u{643}\
-  \u{649}\
-  \u{643}\
-  \u{64a}\
-  \u{644}\
-  \u{62c}\
-  \u{644}\
-  \u{62d}\
-  \u{644}\
-  \u{62e}\
-  \u{644}\
-  \u{645}\
-  \u{644}\
-  \u{649}\
-  \u{644}\
-  \u{64a}\
-  \u{645}\
-  \u{62c}\
-  \u{645}\
-  \u{62d}\
-  \u{645}\
-  \u{62e}\
-  \u{645}\
-  \u{645}\
-  \u{645}\
-  \u{649}\
-  \u{645}\
-  \u{64a}\
-  \u{646}\
-  \u{62c}\
-  \u{646}\
-  \u{62d}\
-  \u{646}\
-  \u{62e}\
-  \u{646}\
-  \u{645}\
-  \u{646}\
-  \u{649}\
-  \u{646}\
-  \u{64a}\
-  \u{647}\
-  \u{62c}\
-  \u{647}\
-  \u{645}\
-  \u{647}\
-  \u{649}\
-  \u{647}\
-  \u{64a}\
-  \u{64a}\
-  \u{62c}\
-  \u{64a}\
-  \u{62d}\
-  \u{64a}\
-  \u{62e}\
-  \u{64a}\
-  \u{645}\
-  \u{64a}\
-  \u{649}\
-  \u{64a}\
-  \u{64a}\
-  \u{630}\
-  \u{670}\
-  \u{631}\
-  \u{670}\
-  \u{649}\
-  \u{670}\
-  \u{20}\
-  \u{64c}\
-  \u{651}\
-  \u{20}\
-  \u{64d}\
-  \u{651}\
-  \u{20}\
-  \u{64e}\
-  \u{651}\
-  \u{20}\
-  \u{64f}\
-  \u{651}\
-  \u{20}\
-  \u{650}\
-  \u{651}\
-  \u{20}\
-  \u{651}\
-  \u{670}\
-  \u{626}\
-  \u{631}\
-  \u{626}\
-  \u{632}\
-  \u{626}\
-  \u{646}\
-  \u{628}\
-  \u{631}\
-  \u{628}\
-  \u{632}\
-  \u{628}\
-  \u{646}\
-  \u{62a}\
-  \u{631}\
-  \u{62a}\
-  \u{632}\
-  \u{62a}\
-  \u{646}\
-  \u{62b}\
-  \u{631}\
-  \u{62b}\
-  \u{632}\
-  \u{62b}\
-  \u{646}\
-  \u{645}\
-  \u{627}\
-  \u{646}\
-  \u{631}\
-  \u{646}\
-  \u{632}\
-  \u{646}\
-  \u{646}\
-  \u{64a}\
-  \u{631}\
-  \u{64a}\
-  \u{632}\
-  \u{64a}\
-  \u{646}\
-  \u{626}\
-  \u{62e}\
-  \u{626}\
-  \u{647}\
-  \u{628}\
-  \u{647}\
-  \u{62a}\
-  \u{647}\
-  \u{635}\
-  \u{62e}\
-  \u{644}\
-  \u{647}\
-  \u{646}\
-  \u{647}\
-  \u{647}\
-  \u{670}\
-  \u{64a}\
-  \u{647}\
-  \u{62b}\
-  \u{647}\
-  \u{633}\
-  \u{647}\
-  \u{634}\
-  \u{645}\
-  \u{634}\
-  \u{647}\
-  \u{640}\
-  \u{64e}\
-  \u{651}\
-  \u{640}\
-  \u{64f}\
-  \u{651}\
-  \u{640}\
-  \u{650}\
-  \u{651}\
-  \u{637}\
-  \u{649}\
-  \u{637}\
-  \u{64a}\
-  \u{639}\
-  \u{649}\
-  \u{639}\
-  \u{64a}\
-  \u{63a}\
-  \u{649}\
-  \u{63a}\
-  \u{64a}\
-  \u{633}\
-  \u{649}\
-  \u{633}\
-  \u{64a}\
-  \u{634}\
-  \u{649}\
-  \u{634}\
-  \u{64a}\
-  \u{62d}\
-  \u{649}\
-  \u{62d}\
-  \u{64a}\
-  \u{62c}\
-  \u{649}\
-  \u{62c}\
-  \u{64a}\
-  \u{62e}\
-  \u{649}\
-  \u{62e}\
-  \u{64a}\
-  \u{635}\
-  \u{649}\
-  \u{635}\
-  \u{64a}\
-  \u{636}\
-  \u{649}\
-  \u{636}\
-  \u{64a}\
-  \u{634}\
-  \u{62c}\
-  \u{634}\
-  \u{62d}\
-  \u{634}\
-  \u{62e}\
-  \u{634}\
-  \u{631}\
-  \u{633}\
-  \u{631}\
-  \u{635}\
-  \u{631}\
-  \u{636}\
-  \u{631}\
-  \u{627}\
-  \u{64b}\
-  \u{62a}\
-  \u{62c}\
-  \u{645}\
-  \u{62a}\
-  \u{62d}\
-  \u{62c}\
-  \u{62a}\
-  \u{62d}\
-  \u{645}\
-  \u{62a}\
-  \u{62e}\
-  \u{645}\
-  \u{62a}\
-  \u{645}\
-  \u{62c}\
-  \u{62a}\
-  \u{645}\
-  \u{62d}\
-  \u{62a}\
-  \u{645}\
-  \u{62e}\
-  \u{62c}\
-  \u{645}\
-  \u{62d}\
-  \u{62d}\
-  \u{645}\
-  \u{64a}\
-  \u{62d}\
-  \u{645}\
-  \u{649}\
-  \u{633}\
-  \u{62d}\
-  \u{62c}\
-  \u{633}\
-  \u{62c}\
-  \u{62d}\
-  \u{633}\
-  \u{62c}\
-  \u{649}\
-  \u{633}\
-  \u{645}\
-  \u{62d}\
-  \u{633}\
-  \u{645}\
-  \u{62c}\
-  \u{633}\
-  \u{645}\
-  \u{645}\
-  \u{635}\
-  \u{62d}\
-  \u{62d}\
-  \u{635}\
-  \u{645}\
-  \u{645}\
-  \u{634}\
-  \u{62d}\
-  \u{645}\
-  \u{634}\
-  \u{62c}\
-  \u{64a}\
-  \u{634}\
-  \u{645}\
-  \u{62e}\
-  \u{634}\
-  \u{645}\
-  \u{645}\
-  \u{636}\
-  \u{62d}\
-  \u{649}\
-  \u{636}\
-  \u{62e}\
-  \u{645}\
-  \u{637}\
-  \u{645}\
-  \u{62d}\
-  \u{637}\
-  \u{645}\
-  \u{645}\
-  \u{637}\
-  \u{645}\
-  \u{64a}\
-  \u{639}\
-  \u{62c}\
-  \u{645}\
-  \u{639}\
-  \u{645}\
-  \u{645}\
-  \u{639}\
-  \u{645}\
-  \u{649}\
-  \u{63a}\
-  \u{645}\
-  \u{645}\
-  \u{63a}\
-  \u{645}\
-  \u{64a}\
-  \u{63a}\
-  \u{645}\
-  \u{649}\
-  \u{641}\
-  \u{62e}\
-  \u{645}\
-  \u{642}\
-  \u{645}\
-  \u{62d}\
-  \u{642}\
-  \u{645}\
-  \u{645}\
-  \u{644}\
-  \u{62d}\
-  \u{645}\
-  \u{644}\
-  \u{62d}\
-  \u{64a}\
-  \u{644}\
-  \u{62d}\
-  \u{649}\
-  \u{644}\
-  \u{62c}\
-  \u{62c}\
-  \u{644}\
-  \u{62e}\
-  \u{645}\
-  \u{644}\
-  \u{645}\
-  \u{62d}\
-  \u{645}\
-  \u{62d}\
-  \u{62c}\
-  \u{645}\
-  \u{62d}\
-  \u{645}\
-  \u{645}\
-  \u{62d}\
-  \u{64a}\
-  \u{645}\
-  \u{62c}\
-  \u{62d}\
-  \u{645}\
-  \u{62c}\
-  \u{645}\
-  \u{645}\
-  \u{62e}\
-  \u{62c}\
-  \u{645}\
-  \u{62e}\
-  \u{645}\
-  \u{645}\
-  \u{62c}\
-  \u{62e}\
-  \u{647}\
-  \u{645}\
-  \u{62c}\
-  \u{647}\
-  \u{645}\
-  \u{645}\
-  \u{646}\
-  \u{62d}\
-  \u{645}\
-  \u{646}\
-  \u{62d}\
-  \u{649}\
-  \u{646}\
-  \u{62c}\
-  \u{645}\
-  \u{646}\
-  \u{62c}\
-  \u{649}\
-  \u{646}\
-  \u{645}\
-  \u{64a}\
-  \u{646}\
-  \u{645}\
-  \u{649}\
-  \u{64a}\
-  \u{645}\
-  \u{645}\
-  \u{628}\
-  \u{62e}\
-  \u{64a}\
-  \u{62a}\
-  \u{62c}\
-  \u{64a}\
-  \u{62a}\
-  \u{62c}\
-  \u{649}\
-  \u{62a}\
-  \u{62e}\
-  \u{64a}\
-  \u{62a}\
-  \u{62e}\
-  \u{649}\
-  \u{62a}\
-  \u{645}\
-  \u{64a}\
-  \u{62a}\
-  \u{645}\
-  \u{649}\
-  \u{62c}\
-  \u{645}\
-  \u{64a}\
-  \u{62c}\
-  \u{62d}\
-  \u{649}\
-  \u{62c}\
-  \u{645}\
-  \u{649}\
-  \u{633}\
-  \u{62e}\
-  \u{649}\
-  \u{635}\
-  \u{62d}\
-  \u{64a}\
-  \u{634}\
-  \u{62d}\
-  \u{64a}\
-  \u{636}\
-  \u{62d}\
-  \u{64a}\
-  \u{644}\
-  \u{62c}\
-  \u{64a}\
-  \u{644}\
-  \u{645}\
-  \u{64a}\
-  \u{64a}\
-  \u{62d}\
-  \u{64a}\
-  \u{64a}\
-  \u{62c}\
-  \u{64a}\
-  \u{64a}\
-  \u{645}\
-  \u{64a}\
-  \u{645}\
-  \u{645}\
-  \u{64a}\
-  \u{642}\
-  \u{645}\
-  \u{64a}\
-  \u{646}\
-  \u{62d}\
-  \u{64a}\
-  \u{639}\
-  \u{645}\
-  \u{64a}\
-  \u{643}\
-  \u{645}\
-  \u{64a}\
-  \u{646}\
-  \u{62c}\
-  \u{62d}\
-  \u{645}\
-  \u{62e}\
-  \u{64a}\
-  \u{644}\
-  \u{62c}\
-  \u{645}\
-  \u{643}\
-  \u{645}\
-  \u{645}\
-  \u{62c}\
-  \u{62d}\
-  \u{64a}\
-  \u{62d}\
-  \u{62c}\
-  \u{64a}\
-  \u{645}\
-  \u{62c}\
-  \u{64a}\
-  \u{641}\
-  \u{645}\
-  \u{64a}\
-  \u{628}\
-  \u{62d}\
-  \u{64a}\
-  \u{633}\
-  \u{62e}\
-  \u{64a}\
-  \u{646}\
-  \u{62c}\
-  \u{64a}\
-  \u{635}\
-  \u{644}\
-  \u{6d2}\
-  \u{642}\
-  \u{644}\
-  \u{6d2}\
-  \u{627}\
-  \u{644}\
-  \u{644}\
-  \u{647}\
-  \u{627}\
-  \u{643}\
-  \u{628}\
-  \u{631}\
-  \u{645}\
-  \u{62d}\
-  \u{645}\
-  \u{62f}\
-  \u{635}\
-  \u{644}\
-  \u{639}\
-  \u{645}\
-  \u{631}\
-  \u{633}\
-  \u{648}\
-  \u{644}\
-  \u{639}\
-  \u{644}\
-  \u{64a}\
-  \u{647}\
-  \u{648}\
-  \u{633}\
-  \u{644}\
-  \u{645}\
-  \u{635}\
-  \u{644}\
-  \u{649}\
-  \u{635}\
-  \u{644}\
-  \u{649}\
-  \u{20}\
-  \u{627}\
-  \u{644}\
-  \u{644}\
-  \u{647}\
-  \u{20}\
-  \u{639}\
-  \u{644}\
-  \u{64a}\
-  \u{647}\
-  \u{20}\
-  \u{648}\
-  \u{633}\
-  \u{644}\
-  \u{645}\
-  \u{62c}\
-  \u{644}\
-  \u{20}\
-  \u{62c}\
-  \u{644}\
-  \u{627}\
-  \u{644}\
-  \u{647}\
-  \u{631}\
-  \u{6cc}\
-  \u{627}\
-  \u{644}\
-  \u{2c}\
-  \u{3001}\
-  \u{3a}\
-  \u{21}\
-  \u{3f}\
-  \u{3016}\
-  \u{3017}\
-  \u{2014}\
-  \u{2013}\
-  \u{5f}\
-  \u{7b}\
-  \u{7d}\
-  \u{3014}\
-  \u{3015}\
-  \u{3010}\
-  \u{3011}\
-  \u{300a}\
-  \u{300b}\
-  \u{300c}\
-  \u{300d}\
-  \u{300e}\
-  \u{300f}\
-  \u{5b}\
-  \u{5d}\
-  \u{23}\
-  \u{26}\
-  \u{2a}\
-  \u{2d}\
-  \u{3c}\
-  \u{3e}\
-  \u{5c}\
-  \u{24}\
-  \u{25}\
-  \u{40}\
-  \u{20}\
-  \u{64b}\
-  \u{640}\
-  \u{64b}\
-  \u{20}\
-  \u{64c}\
-  \u{20}\
-  \u{64d}\
-  \u{20}\
-  \u{64e}\
-  \u{640}\
-  \u{64e}\
-  \u{20}\
-  \u{64f}\
-  \u{640}\
-  \u{64f}\
-  \u{20}\
-  \u{650}\
-  \u{640}\
-  \u{650}\
-  \u{20}\
-  \u{651}\
-  \u{640}\
-  \u{651}\
-  \u{20}\
-  \u{652}\
-  \u{640}\
-  \u{652}\
-  \u{621}\
-  \u{622}\
-  \u{623}\
-  \u{624}\
-  \u{625}\
-  \u{626}\
-  \u{627}\
-  \u{628}\
-  \u{629}\
-  \u{62a}\
-  \u{62b}\
-  \u{62c}\
-  \u{62d}\
-  \u{62e}\
-  \u{62f}\
-  \u{630}\
-  \u{631}\
-  \u{632}\
-  \u{633}\
-  \u{634}\
-  \u{635}\
-  \u{636}\
-  \u{637}\
-  \u{638}\
-  \u{639}\
-  \u{63a}\
-  \u{641}\
-  \u{642}\
-  \u{643}\
-  \u{644}\
-  \u{645}\
-  \u{646}\
-  \u{647}\
-  \u{648}\
-  \u{64a}\
-  \u{644}\
-  \u{622}\
-  \u{644}\
-  \u{623}\
-  \u{644}\
-  \u{625}\
-  \u{644}\
-  \u{627}\
-  \u{22}\
-  \u{27}\
-  \u{2f}\
-  \u{5e}\
-  \u{7c}\
-  \u{7e}\
-  \u{2985}\
-  \u{2986}\
-  \u{30fb}\
-  \u{30a1}\
-  \u{30a3}\
-  \u{30a5}\
-  \u{30a7}\
-  \u{30a9}\
-  \u{30e3}\
-  \u{30e5}\
-  \u{30e7}\
-  \u{30c3}\
-  \u{30fc}\
-  \u{30f3}\
-  \u{3099}\
-  \u{309a}\
-  \u{a2}\
-  \u{a3}\
-  \u{ac}\
-  \u{a6}\
-  \u{a5}\
-  \u{20a9}\
-  \u{2502}\
-  \u{2190}\
-  \u{2191}\
-  \u{2192}\
-  \u{2193}\
-  \u{25a0}\
-  \u{25cb}\
-  \u{10428}\
-  \u{10429}\
-  \u{1042a}\
-  \u{1042b}\
-  \u{1042c}\
-  \u{1042d}\
-  \u{1042e}\
-  \u{1042f}\
-  \u{10430}\
-  \u{10431}\
-  \u{10432}\
-  \u{10433}\
-  \u{10434}\
-  \u{10435}\
-  \u{10436}\
-  \u{10437}\
-  \u{10438}\
-  \u{10439}\
-  \u{1043a}\
-  \u{1043b}\
-  \u{1043c}\
-  \u{1043d}\
-  \u{1043e}\
-  \u{1043f}\
-  \u{10440}\
-  \u{10441}\
-  \u{10442}\
-  \u{10443}\
-  \u{10444}\
-  \u{10445}\
-  \u{10446}\
-  \u{10447}\
-  \u{10448}\
-  \u{10449}\
-  \u{1044a}\
-  \u{1044b}\
-  \u{1044c}\
-  \u{1044d}\
-  \u{1044e}\
-  \u{1044f}\
-  \u{104d8}\
-  \u{104d9}\
-  \u{104da}\
-  \u{104db}\
-  \u{104dc}\
-  \u{104dd}\
-  \u{104de}\
-  \u{104df}\
-  \u{104e0}\
-  \u{104e1}\
-  \u{104e2}\
-  \u{104e3}\
-  \u{104e4}\
-  \u{104e5}\
-  \u{104e6}\
-  \u{104e7}\
-  \u{104e8}\
-  \u{104e9}\
-  \u{104ea}\
-  \u{104eb}\
-  \u{104ec}\
-  \u{104ed}\
-  \u{104ee}\
-  \u{104ef}\
-  \u{104f0}\
-  \u{104f1}\
-  \u{104f2}\
-  \u{104f3}\
-  \u{104f4}\
-  \u{104f5}\
-  \u{104f6}\
-  \u{104f7}\
-  \u{104f8}\
-  \u{104f9}\
-  \u{104fa}\
-  \u{104fb}\
-  \u{10cc0}\
-  \u{10cc1}\
-  \u{10cc2}\
-  \u{10cc3}\
-  \u{10cc4}\
-  \u{10cc5}\
-  \u{10cc6}\
-  \u{10cc7}\
-  \u{10cc8}\
-  \u{10cc9}\
-  \u{10cca}\
-  \u{10ccb}\
-  \u{10ccc}\
-  \u{10ccd}\
-  \u{10cce}\
-  \u{10ccf}\
-  \u{10cd0}\
-  \u{10cd1}\
-  \u{10cd2}\
-  \u{10cd3}\
-  \u{10cd4}\
-  \u{10cd5}\
-  \u{10cd6}\
-  \u{10cd7}\
-  \u{10cd8}\
-  \u{10cd9}\
-  \u{10cda}\
-  \u{10cdb}\
-  \u{10cdc}\
-  \u{10cdd}\
-  \u{10cde}\
-  \u{10cdf}\
-  \u{10ce0}\
-  \u{10ce1}\
-  \u{10ce2}\
-  \u{10ce3}\
-  \u{10ce4}\
-  \u{10ce5}\
-  \u{10ce6}\
-  \u{10ce7}\
-  \u{10ce8}\
-  \u{10ce9}\
-  \u{10cea}\
-  \u{10ceb}\
-  \u{10cec}\
-  \u{10ced}\
-  \u{10cee}\
-  \u{10cef}\
-  \u{10cf0}\
-  \u{10cf1}\
-  \u{10cf2}\
-  \u{118c0}\
-  \u{118c1}\
-  \u{118c2}\
-  \u{118c3}\
-  \u{118c4}\
-  \u{118c5}\
-  \u{118c6}\
-  \u{118c7}\
-  \u{118c8}\
-  \u{118c9}\
-  \u{118ca}\
-  \u{118cb}\
-  \u{118cc}\
-  \u{118cd}\
-  \u{118ce}\
-  \u{118cf}\
-  \u{118d0}\
-  \u{118d1}\
-  \u{118d2}\
-  \u{118d3}\
-  \u{118d4}\
-  \u{118d5}\
-  \u{118d6}\
-  \u{118d7}\
-  \u{118d8}\
-  \u{118d9}\
-  \u{118da}\
-  \u{118db}\
-  \u{118dc}\
-  \u{118dd}\
-  \u{118de}\
-  \u{118df}\
-  \u{16e60}\
-  \u{16e61}\
-  \u{16e62}\
-  \u{16e63}\
-  \u{16e64}\
-  \u{16e65}\
-  \u{16e66}\
-  \u{16e67}\
-  \u{16e68}\
-  \u{16e69}\
-  \u{16e6a}\
-  \u{16e6b}\
-  \u{16e6c}\
-  \u{16e6d}\
-  \u{16e6e}\
-  \u{16e6f}\
-  \u{16e70}\
-  \u{16e71}\
-  \u{16e72}\
-  \u{16e73}\
-  \u{16e74}\
-  \u{16e75}\
-  \u{16e76}\
-  \u{16e77}\
-  \u{16e78}\
-  \u{16e79}\
-  \u{16e7a}\
-  \u{16e7b}\
-  \u{16e7c}\
-  \u{16e7d}\
-  \u{16e7e}\
-  \u{16e7f}\
-  \u{1d157}\
-  \u{1d165}\
-  \u{1d158}\
-  \u{1d165}\
-  \u{1d158}\
-  \u{1d165}\
-  \u{1d16e}\
-  \u{1d158}\
-  \u{1d165}\
-  \u{1d16f}\
-  \u{1d158}\
-  \u{1d165}\
-  \u{1d170}\
-  \u{1d158}\
-  \u{1d165}\
-  \u{1d171}\
-  \u{1d158}\
-  \u{1d165}\
-  \u{1d172}\
-  \u{1d1b9}\
-  \u{1d165}\
-  \u{1d1ba}\
-  \u{1d165}\
-  \u{1d1b9}\
-  \u{1d165}\
-  \u{1d16e}\
-  \u{1d1ba}\
-  \u{1d165}\
-  \u{1d16e}\
-  \u{1d1b9}\
-  \u{1d165}\
-  \u{1d16f}\
-  \u{1d1ba}\
-  \u{1d165}\
-  \u{1d16f}\
-  \u{131}\
-  \u{237}\
-  \u{2207}\
-  \u{2202}\
-  \u{1e922}\
-  \u{1e923}\
-  \u{1e924}\
-  \u{1e925}\
-  \u{1e926}\
-  \u{1e927}\
-  \u{1e928}\
-  \u{1e929}\
-  \u{1e92a}\
-  \u{1e92b}\
-  \u{1e92c}\
-  \u{1e92d}\
-  \u{1e92e}\
-  \u{1e92f}\
-  \u{1e930}\
-  \u{1e931}\
-  \u{1e932}\
-  \u{1e933}\
-  \u{1e934}\
-  \u{1e935}\
-  \u{1e936}\
-  \u{1e937}\
-  \u{1e938}\
-  \u{1e939}\
-  \u{1e93a}\
-  \u{1e93b}\
-  \u{1e93c}\
-  \u{1e93d}\
-  \u{1e93e}\
-  \u{1e93f}\
-  \u{1e940}\
-  \u{1e941}\
-  \u{1e942}\
-  \u{1e943}\
-  \u{66e}\
-  \u{6a1}\
-  \u{66f}\
-  \u{30}\
-  \u{2c}\
-  \u{31}\
-  \u{2c}\
-  \u{32}\
-  \u{2c}\
-  \u{33}\
-  \u{2c}\
-  \u{34}\
-  \u{2c}\
-  \u{35}\
-  \u{2c}\
-  \u{36}\
-  \u{2c}\
-  \u{37}\
-  \u{2c}\
-  \u{38}\
-  \u{2c}\
-  \u{39}\
-  \u{2c}\
-  \u{3014}\
-  \u{73}\
-  \u{3015}\
-  \u{77}\
-  \u{7a}\
-  \u{68}\
-  \u{76}\
-  \u{73}\
-  \u{64}\
-  \u{70}\
-  \u{70}\
-  \u{76}\
-  \u{77}\
-  \u{63}\
-  \u{6d}\
-  \u{63}\
-  \u{6d}\
-  \u{64}\
-  \u{6d}\
-  \u{72}\
-  \u{64}\
-  \u{6a}\
-  \u{307b}\
-  \u{304b}\
-  \u{30b3}\
-  \u{30b3}\
-  \u{5b57}\
-  \u{53cc}\
-  \u{30c7}\
-  \u{591a}\
-  \u{89e3}\
-  \u{4ea4}\
-  \u{6620}\
-  \u{7121}\
-  \u{524d}\
-  \u{5f8c}\
-  \u{518d}\
-  \u{65b0}\
-  \u{521d}\
-  \u{7d42}\
-  \u{8ca9}\
-  \u{58f0}\
-  \u{5439}\
-  \u{6f14}\
-  \u{6295}\
-  \u{6355}\
-  \u{904a}\
-  \u{6307}\
-  \u{6253}\
-  \u{7981}\
-  \u{7a7a}\
-  \u{5408}\
-  \u{6e80}\
-  \u{7533}\
-  \u{5272}\
-  \u{55b6}\
-  \u{914d}\
-  \u{3014}\
-  \u{672c}\
-  \u{3015}\
-  \u{3014}\
-  \u{4e09}\
-  \u{3015}\
-  \u{3014}\
-  \u{4e8c}\
-  \u{3015}\
-  \u{3014}\
-  \u{5b89}\
-  \u{3015}\
-  \u{3014}\
-  \u{70b9}\
-  \u{3015}\
-  \u{3014}\
-  \u{6253}\
-  \u{3015}\
-  \u{3014}\
-  \u{76d7}\
-  \u{3015}\
-  \u{3014}\
-  \u{52dd}\
-  \u{3015}\
-  \u{3014}\
-  \u{6557}\
-  \u{3015}\
-  \u{5f97}\
-  \u{53ef}\
-  \u{4e3d}\
-  \u{4e38}\
-  \u{4e41}\
-  \u{20122}\
-  \u{4f60}\
-  \u{4fbb}\
-  \u{5002}\
-  \u{507a}\
-  \u{5099}\
-  \u{50cf}\
-  \u{349e}\
-  \u{2063a}\
-  \u{5154}\
-  \u{5164}\
-  \u{5177}\
-  \u{2051c}\
-  \u{34b9}\
-  \u{5167}\
-  \u{2054b}\
-  \u{5197}\
-  \u{51a4}\
-  \u{4ecc}\
-  \u{51ac}\
-  \u{291df}\
-  \u{5203}\
-  \u{34df}\
-  \u{523b}\
-  \u{5246}\
-  \u{5277}\
-  \u{3515}\
-  \u{5305}\
-  \u{5306}\
-  \u{5349}\
-  \u{535a}\
-  \u{5373}\
-  \u{537d}\
-  \u{537f}\
-  \u{20a2c}\
-  \u{7070}\
-  \u{53ca}\
-  \u{53df}\
-  \u{20b63}\
-  \u{53eb}\
-  \u{53f1}\
-  \u{5406}\
-  \u{549e}\
-  \u{5438}\
-  \u{5448}\
-  \u{5468}\
-  \u{54a2}\
-  \u{54f6}\
-  \u{5510}\
-  \u{5553}\
-  \u{5563}\
-  \u{5584}\
-  \u{55ab}\
-  \u{55b3}\
-  \u{55c2}\
-  \u{5716}\
-  \u{5717}\
-  \u{5651}\
-  \u{5674}\
-  \u{58ee}\
-  \u{57ce}\
-  \u{57f4}\
-  \u{580d}\
-  \u{578b}\
-  \u{5832}\
-  \u{5831}\
-  \u{58ac}\
-  \u{214e4}\
-  \u{58f2}\
-  \u{58f7}\
-  \u{5906}\
-  \u{5922}\
-  \u{5962}\
-  \u{216a8}\
-  \u{216ea}\
-  \u{59ec}\
-  \u{5a1b}\
-  \u{5a27}\
-  \u{59d8}\
-  \u{5a66}\
-  \u{36ee}\
-  \u{5b08}\
-  \u{5b3e}\
-  \u{219c8}\
-  \u{5bc3}\
-  \u{5bd8}\
-  \u{5bf3}\
-  \u{21b18}\
-  \u{5bff}\
-  \u{5c06}\
-  \u{3781}\
-  \u{5c60}\
-  \u{5cc0}\
-  \u{5c8d}\
-  \u{21de4}\
-  \u{5d43}\
-  \u{21de6}\
-  \u{5d6e}\
-  \u{5d6b}\
-  \u{5d7c}\
-  \u{5de1}\
-  \u{5de2}\
-  \u{382f}\
-  \u{5dfd}\
-  \u{5e28}\
-  \u{5e3d}\
-  \u{5e69}\
-  \u{3862}\
-  \u{22183}\
-  \u{387c}\
-  \u{5eb0}\
-  \u{5eb3}\
-  \u{5eb6}\
-  \u{2a392}\
-  \u{22331}\
-  \u{8201}\
-  \u{5f22}\
-  \u{38c7}\
-  \u{232b8}\
-  \u{261da}\
-  \u{5f62}\
-  \u{5f6b}\
-  \u{38e3}\
-  \u{5f9a}\
-  \u{5fcd}\
-  \u{5fd7}\
-  \u{5ff9}\
-  \u{6081}\
-  \u{393a}\
-  \u{391c}\
-  \u{226d4}\
-  \u{60c7}\
-  \u{6148}\
-  \u{614c}\
-  \u{617a}\
-  \u{61b2}\
-  \u{61a4}\
-  \u{61af}\
-  \u{61de}\
-  \u{6210}\
-  \u{621b}\
-  \u{625d}\
-  \u{62b1}\
-  \u{62d4}\
-  \u{6350}\
-  \u{22b0c}\
-  \u{633d}\
-  \u{62fc}\
-  \u{6368}\
-  \u{6383}\
-  \u{63e4}\
-  \u{22bf1}\
-  \u{6422}\
-  \u{63c5}\
-  \u{63a9}\
-  \u{3a2e}\
-  \u{6469}\
-  \u{647e}\
-  \u{649d}\
-  \u{6477}\
-  \u{3a6c}\
-  \u{656c}\
-  \u{2300a}\
-  \u{65e3}\
-  \u{66f8}\
-  \u{6649}\
-  \u{3b19}\
-  \u{3b08}\
-  \u{3ae4}\
-  \u{5192}\
-  \u{5195}\
-  \u{6700}\
-  \u{669c}\
-  \u{80ad}\
-  \u{43d9}\
-  \u{6721}\
-  \u{675e}\
-  \u{6753}\
-  \u{233c3}\
-  \u{3b49}\
-  \u{67fa}\
-  \u{6785}\
-  \u{6852}\
-  \u{2346d}\
-  \u{688e}\
-  \u{681f}\
-  \u{6914}\
-  \u{6942}\
-  \u{69a3}\
-  \u{69ea}\
-  \u{6aa8}\
-  \u{236a3}\
-  \u{6adb}\
-  \u{3c18}\
-  \u{6b21}\
-  \u{238a7}\
-  \u{6b54}\
-  \u{3c4e}\
-  \u{6b72}\
-  \u{6b9f}\
-  \u{6bbb}\
-  \u{23a8d}\
-  \u{21d0b}\
-  \u{23afa}\
-  \u{6c4e}\
-  \u{23cbc}\
-  \u{6cbf}\
-  \u{6ccd}\
-  \u{6c67}\
-  \u{6d16}\
-  \u{6d3e}\
-  \u{6d69}\
-  \u{6d78}\
-  \u{6d85}\
-  \u{23d1e}\
-  \u{6d34}\
-  \u{6e2f}\
-  \u{6e6e}\
-  \u{3d33}\
-  \u{6ec7}\
-  \u{23ed1}\
-  \u{6df9}\
-  \u{6f6e}\
-  \u{23f5e}\
-  \u{23f8e}\
-  \u{6fc6}\
-  \u{7039}\
-  \u{701b}\
-  \u{3d96}\
-  \u{704a}\
-  \u{707d}\
-  \u{7077}\
-  \u{70ad}\
-  \u{20525}\
-  \u{7145}\
-  \u{24263}\
-  \u{719c}\
-  \u{7228}\
-  \u{7250}\
-  \u{24608}\
-  \u{7280}\
-  \u{7295}\
-  \u{24735}\
-  \u{24814}\
-  \u{737a}\
-  \u{738b}\
-  \u{3eac}\
-  \u{73a5}\
-  \u{3eb8}\
-  \u{7447}\
-  \u{745c}\
-  \u{7485}\
-  \u{74ca}\
-  \u{3f1b}\
-  \u{7524}\
-  \u{24c36}\
-  \u{753e}\
-  \u{24c92}\
-  \u{2219f}\
-  \u{7610}\
-  \u{24fa1}\
-  \u{24fb8}\
-  \u{25044}\
-  \u{3ffc}\
-  \u{4008}\
-  \u{250f3}\
-  \u{250f2}\
-  \u{25119}\
-  \u{25133}\
-  \u{771e}\
-  \u{771f}\
-  \u{778b}\
-  \u{4046}\
-  \u{4096}\
-  \u{2541d}\
-  \u{784e}\
-  \u{40e3}\
-  \u{25626}\
-  \u{2569a}\
-  \u{256c5}\
-  \u{79eb}\
-  \u{412f}\
-  \u{7a4a}\
-  \u{7a4f}\
-  \u{2597c}\
-  \u{25aa7}\
-  \u{4202}\
-  \u{25bab}\
-  \u{7bc6}\
-  \u{7bc9}\
-  \u{4227}\
-  \u{25c80}\
-  \u{7cd2}\
-  \u{42a0}\
-  \u{7ce8}\
-  \u{7ce3}\
-  \u{7d00}\
-  \u{25f86}\
-  \u{7d63}\
-  \u{4301}\
-  \u{7dc7}\
-  \u{7e02}\
-  \u{7e45}\
-  \u{4334}\
-  \u{26228}\
-  \u{26247}\
-  \u{4359}\
-  \u{262d9}\
-  \u{7f7a}\
-  \u{2633e}\
-  \u{7f95}\
-  \u{7ffa}\
-  \u{264da}\
-  \u{26523}\
-  \u{8060}\
-  \u{265a8}\
-  \u{8070}\
-  \u{2335f}\
-  \u{43d5}\
-  \u{80b2}\
-  \u{8103}\
-  \u{440b}\
-  \u{813e}\
-  \u{5ab5}\
-  \u{267a7}\
-  \u{267b5}\
-  \u{23393}\
-  \u{2339c}\
-  \u{8204}\
-  \u{8f9e}\
-  \u{446b}\
-  \u{8291}\
-  \u{828b}\
-  \u{829d}\
-  \u{52b3}\
-  \u{82b1}\
-  \u{82b3}\
-  \u{82bd}\
-  \u{82e6}\
-  \u{26b3c}\
-  \u{831d}\
-  \u{8363}\
-  \u{83ad}\
-  \u{8323}\
-  \u{83bd}\
-  \u{83e7}\
-  \u{8353}\
-  \u{83ca}\
-  \u{83cc}\
-  \u{83dc}\
-  \u{26c36}\
-  \u{26d6b}\
-  \u{26cd5}\
-  \u{452b}\
-  \u{84f1}\
-  \u{84f3}\
-  \u{8516}\
-  \u{273ca}\
-  \u{8564}\
-  \u{26f2c}\
-  \u{455d}\
-  \u{4561}\
-  \u{26fb1}\
-  \u{270d2}\
-  \u{456b}\
-  \u{8650}\
-  \u{8667}\
-  \u{8669}\
-  \u{86a9}\
-  \u{8688}\
-  \u{870e}\
-  \u{86e2}\
-  \u{8728}\
-  \u{876b}\
-  \u{8786}\
-  \u{87e1}\
-  \u{8801}\
-  \u{45f9}\
-  \u{8860}\
-  \u{27667}\
-  \u{88d7}\
-  \u{88de}\
-  \u{4635}\
-  \u{88fa}\
-  \u{34bb}\
-  \u{278ae}\
-  \u{27966}\
-  \u{46be}\
-  \u{46c7}\
-  \u{8aa0}\
-  \u{27ca8}\
-  \u{8cab}\
-  \u{8cc1}\
-  \u{8d1b}\
-  \u{8d77}\
-  \u{27f2f}\
-  \u{20804}\
-  \u{8dcb}\
-  \u{8dbc}\
-  \u{8df0}\
-  \u{208de}\
-  \u{8ed4}\
-  \u{285d2}\
-  \u{285ed}\
-  \u{9094}\
-  \u{90f1}\
-  \u{9111}\
-  \u{2872e}\
-  \u{911b}\
-  \u{9238}\
-  \u{92d7}\
-  \u{92d8}\
-  \u{927c}\
-  \u{93f9}\
-  \u{9415}\
-  \u{28bfa}\
-  \u{958b}\
-  \u{4995}\
-  \u{95b7}\
-  \u{28d77}\
-  \u{49e6}\
-  \u{96c3}\
-  \u{5db2}\
-  \u{9723}\
-  \u{29145}\
-  \u{2921a}\
-  \u{4a6e}\
-  \u{4a76}\
-  \u{97e0}\
-  \u{2940a}\
-  \u{4ab2}\
-  \u{29496}\
-  \u{9829}\
-  \u{295b6}\
-  \u{98e2}\
-  \u{4b33}\
-  \u{9929}\
-  \u{99a7}\
-  \u{99c2}\
-  \u{99fe}\
-  \u{4bce}\
-  \u{29b30}\
-  \u{9c40}\
-  \u{9cfd}\
-  \u{4cce}\
-  \u{4ced}\
-  \u{9d67}\
-  \u{2a0ce}\
-  \u{4cf8}\
-  \u{2a105}\
-  \u{2a20e}\
-  \u{2a291}\
-  \u{4d56}\
-  \u{9efe}\
-  \u{9f05}\
-  \u{9f0f}\
-  \u{9f16}\
-  \u{2a600}";
diff --git a/vendor/idna/tests/IdnaTestV2.txt b/vendor/idna/tests/IdnaTestV2.txt
index 28c5b64e..cdd24dd8 100644
--- a/vendor/idna/tests/IdnaTestV2.txt
+++ b/vendor/idna/tests/IdnaTestV2.txt
@@ -1,13 +1,13 @@
 # IdnaTestV2.txt
-# Date: 2019-11-07, 13:47:27 GMT
-# © 2019 Unicode®, Inc.
+# Date: 2024-07-03, 22:06:44 GMT
+# © 2024 Unicode®, Inc.
 # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For terms of use and license, see https://www.unicode.org/terms_of_use.html
 #
 # Unicode IDNA Compatible Preprocessing for UTS #46
-# Version: 13.0.0
+# Version: 16.0.0
 #
-# For documentation and usage, see http://www.unicode.org/reports/tr46
+# For documentation and usage, see https://www.unicode.org/reports/tr46
 #
 # Test cases for verifying UTS #46 conformance.
 #
@@ -16,45 +16,49 @@
 # This file is in UTF-8, where characters may be escaped using the \uXXXX or \x{XXXX}
 # convention where they could otherwise have a confusing display.
 # These characters include control codes and combining marks.
-# 
+#
 # Columns (c1, c2,...) are separated by semicolons.
 # Leading and trailing spaces and tabs in each column are ignored.
 # Comments are indicated with hash marks.
 #
-# Column 1: source -          The source string to be tested
+# Column 1: source -          The source string to be tested.
+#                             "" means the empty string.
 # Column 2: toUnicode -       The result of applying toUnicode to the source,
 #                             with Transitional_Processing=false.
 #                             A blank value means the same as the source value.
+#                             "" means the empty string.
 # Column 3: toUnicodeStatus - A set of status codes, each corresponding to a particular test.
 #                             A blank value means [] (no errors).
 # Column 4: toAsciiN -        The result of applying toASCII to the source,
 #                             with Transitional_Processing=false.
 #                             A blank value means the same as the toUnicode value.
+#                             "" means the empty string.
 # Column 5: toAsciiNStatus -  A set of status codes, each corresponding to a particular test.
 #                             A blank value means the same as the toUnicodeStatus value.
 #                             An explicit [] means no errors.
 # Column 6: toAsciiT -        The result of applying toASCII to the source,
 #                             with Transitional_Processing=true.
 #                             A blank value means the same as the toAsciiN value.
+#                             "" means the empty string.
 # Column 7: toAsciiTStatus -  A set of status codes, each corresponding to a particular test.
 #                             A blank value means the same as the toAsciiNStatus value.
 #                             An explicit [] means no errors.
 #
-# The line comments currently show visible characters that have been escaped. 
-# 
+# The line comments currently show visible characters that have been escaped.
+#
 # CONFORMANCE:
 #
 # To test for conformance to UTS #46, an implementation will perform the toUnicode, toAsciiN, and
-# toAsciiT operations on the source string, then verify the resulting strings and relevant status 
+# toAsciiT operations on the source string, then verify the resulting strings and relevant status
 # values.
 #
 # If the implementation converts illegal code points into U+FFFD (as per
-# http://www.unicode.org/reports/tr46/proposed.html#Processing) then the string comparisons need to
-# account for that by treating U+FFFD in the actual value as a wildcard when comparing to the 
+# https://www.unicode.org/reports/tr46/#Processing) then the string comparisons need to
+# account for that by treating U+FFFD in the actual value as a wildcard when comparing to the
 # expected value in the test file.
 #
 # A status in toUnicode, toAsciiN or toAsciiT is indicated by a value in square brackets,
-# such as "[B5 B6]". In such a case, the contents is a list of status codes based on the step 
+# such as "[B5, B6]". In such a case, the contents is a list of status codes based on the step
 # numbers in UTS #46 and IDNA2008, with the following formats.
 #
 #   Pn for Section 4 Processing step n
@@ -65,35 +69,39 @@
 #   Cn for ContextJ (in IDNA2008)
 #   Xn for toUnicode issues (see below)
 #
-# Thus C1 = Appendix A.1. ZERO WIDTH NON-JOINER, and C2 = Appendix A.2. ZERO WIDTH JOINER. 
+# Thus C1 = Appendix A.1. ZERO WIDTH NON-JOINER, and C2 = Appendix A.2. ZERO WIDTH JOINER.
 # (The CONTEXTO tests are optional for client software, and not tested here.)
 #
 # Implementations that allow values of particular input flags to be false would ignore
 # the corresponding status codes listed in the table below when testing for errors.
 #
-# VerifyDnsLength:   P4
+# VerifyDnsLength:   A4_1, A4_2
 # CheckHyphens:      V2, V3
-# CheckBidi:         V8
-# CheckJoiners:      V7
+# CheckJoiners:      Cn
+# CheckBidi:         Bn
 # UseSTD3ASCIIRules: U1
 #
+# Implementations that cannot work with ill-formed strings would skip test cases that contain them.
+# For example, the status code A3 is set for a Punycode encoding error,
+# which may be due to an unpaired surrogate.
+#
 # Implementations may be more strict than the default settings for UTS #46.
-# In particular, an implementation conformant to IDNA2008 would disallow the input for lines
-# marked with NV8.
+# In particular, an implementation conformant to IDNA2008 would skip any line in this test file that
+# contained a character in the toUnicode field that has the IDNA2008 Status value NV8 or XV8
+# in IdnaMappingTable.txt.
+# For example, it would skip a line containing ¢ (U+00A2 CENT SIGN) in the toUnicode field, 
+# because of the following line in IdnaMappingTable.txt:
+#
+# 00A1..00A7    ; valid                  ;      ; NV8    # 1.1  INVERTED EXCLAMATION MARK..SECTION SIGN
 #
 # Implementations need only record that there is an error: they need not reproduce the
 # precise status codes (after removing the ignored status values).
 #
 # Compatibility errors
 #
-# The special error codes X3 and X4_2 are now returned where a toASCII error code
-# was formerly being generated in toUnicode due to an empty label.
-#
-# A3 was being generated in the following cases (in addition to its normal usage).
-#   • an empty label in toUnicode. In this case, it is replaced by X3.
-#
-# A4_2 was being generated in the following case (in addition to its normal usage).
-#   • an empty label in V8 (CheckBidi). In this case, it is being replaced by X4_2.
+# The special error code X4_2 is now returned where a toASCII error code
+# was formerly being generated in toUnicode due to an empty label:
+# A4_2 was being generated for an empty label in CheckBidi (in addition to A4_2’s normal usage).
 # ============================================================================================
 fass.de; ; ; ; ; ;  # fass.de
 faß.de; ; ; xn--fa-hia.de; ; fass.de;  # faß.de
@@ -102,90 +110,90 @@ xn--fa-hia.de; faß.de; ; xn--fa-hia.de; ; ;  # faß.de
 
 # BIDI TESTS
 
-àא; ; [B5, B6]; xn--0ca24w; ; ;  # àא
-àא; àא; [B5, B6]; xn--0ca24w; ; ;  # àא
-Àא; àא; [B5, B6]; xn--0ca24w; ; ;  # àא
-Àא; àא; [B5, B6]; xn--0ca24w; ; ;  # àא
-xn--0ca24w; àא; [B5, B6]; xn--0ca24w; ; ;  # àא
-0à.א; ; [B1]; xn--0-sfa.xn--4db; ; ;  # 0à.א
-0à.א; 0à.א; [B1]; xn--0-sfa.xn--4db; ; ;  # 0à.א
-0À.א; 0à.א; [B1]; xn--0-sfa.xn--4db; ; ;  # 0à.א
-0À.א; 0à.א; [B1]; xn--0-sfa.xn--4db; ; ;  # 0à.א
-xn--0-sfa.xn--4db; 0à.א; [B1]; xn--0-sfa.xn--4db; ; ;  # 0à.א
-à.א̈; ; ; xn--0ca.xn--ssa73l; ; ;  # à.א̈
-à.א̈; à.א̈; ; xn--0ca.xn--ssa73l; ; ;  # à.א̈
-À.א̈; à.א̈; ; xn--0ca.xn--ssa73l; ; ;  # à.א̈
-À.א̈; à.א̈; ; xn--0ca.xn--ssa73l; ; ;  # à.א̈
-xn--0ca.xn--ssa73l; à.א̈; ; xn--0ca.xn--ssa73l; ; ;  # à.א̈
-à.א0٠א; ; [B4]; xn--0ca.xn--0-zhcb98c; ; ;  # à.א0٠א
-à.א0٠א; à.א0٠א; [B4]; xn--0ca.xn--0-zhcb98c; ; ;  # à.א0٠א
-À.א0٠א; à.א0٠א; [B4]; xn--0ca.xn--0-zhcb98c; ; ;  # à.א0٠א
-À.א0٠א; à.א0٠א; [B4]; xn--0ca.xn--0-zhcb98c; ; ;  # à.א0٠א
-xn--0ca.xn--0-zhcb98c; à.א0٠א; [B4]; xn--0ca.xn--0-zhcb98c; ; ;  # à.א0٠א
-̈.א; ; [B1, B3, B6, V5]; xn--ssa.xn--4db; ; ;  # ̈.א
-xn--ssa.xn--4db; ̈.א; [B1, B3, B6, V5]; xn--ssa.xn--4db; ; ;  # ̈.א
-à.א0٠; ; [B4]; xn--0ca.xn--0-zhc74b; ; ;  # à.א0٠
-à.א0٠; à.א0٠; [B4]; xn--0ca.xn--0-zhc74b; ; ;  # à.א0٠
-À.א0٠; à.א0٠; [B4]; xn--0ca.xn--0-zhc74b; ; ;  # à.א0٠
-À.א0٠; à.א0٠; [B4]; xn--0ca.xn--0-zhc74b; ; ;  # à.א0٠
-xn--0ca.xn--0-zhc74b; à.א0٠; [B4]; xn--0ca.xn--0-zhc74b; ; ;  # à.א0٠
-àˇ.א; ; [B6]; xn--0ca88g.xn--4db; ; ;  # àˇ.א
-àˇ.א; àˇ.א; [B6]; xn--0ca88g.xn--4db; ; ;  # àˇ.א
-Àˇ.א; àˇ.א; [B6]; xn--0ca88g.xn--4db; ; ;  # àˇ.א
-Àˇ.א; àˇ.א; [B6]; xn--0ca88g.xn--4db; ; ;  # àˇ.א
-xn--0ca88g.xn--4db; àˇ.א; [B6]; xn--0ca88g.xn--4db; ; ;  # àˇ.א
-à̈.א; ; ; xn--0ca81i.xn--4db; ; ;  # à̈.א
-à̈.א; à̈.א; ; xn--0ca81i.xn--4db; ; ;  # à̈.א
-À̈.א; à̈.א; ; xn--0ca81i.xn--4db; ; ;  # à̈.א
-À̈.א; à̈.א; ; xn--0ca81i.xn--4db; ; ;  # à̈.א
-xn--0ca81i.xn--4db; à̈.א; ; xn--0ca81i.xn--4db; ; ;  # à̈.א
+à\u05D0; ; [B5, B6]; xn--0ca24w; ; ;  # àא
+a\u0300\u05D0; à\u05D0; [B5, B6]; xn--0ca24w; ; ;  # àא
+A\u0300\u05D0; à\u05D0; [B5, B6]; xn--0ca24w; ; ;  # àא
+À\u05D0; à\u05D0; [B5, B6]; xn--0ca24w; ; ;  # àא
+xn--0ca24w; à\u05D0; [B5, B6]; xn--0ca24w; ; ;  # àא
+0à.\u05D0; ; [B1]; xn--0-sfa.xn--4db; ; ;  # 0à.א
+0a\u0300.\u05D0; 0à.\u05D0; [B1]; xn--0-sfa.xn--4db; ; ;  # 0à.א
+0A\u0300.\u05D0; 0à.\u05D0; [B1]; xn--0-sfa.xn--4db; ; ;  # 0à.א
+0À.\u05D0; 0à.\u05D0; [B1]; xn--0-sfa.xn--4db; ; ;  # 0à.א
+xn--0-sfa.xn--4db; 0à.\u05D0; [B1]; xn--0-sfa.xn--4db; ; ;  # 0à.א
+à.\u05D0\u0308; ; ; xn--0ca.xn--ssa73l; ; ;  # à.א̈
+a\u0300.\u05D0\u0308; à.\u05D0\u0308; ; xn--0ca.xn--ssa73l; ; ;  # à.א̈
+A\u0300.\u05D0\u0308; à.\u05D0\u0308; ; xn--0ca.xn--ssa73l; ; ;  # à.א̈
+À.\u05D0\u0308; à.\u05D0\u0308; ; xn--0ca.xn--ssa73l; ; ;  # à.א̈
+xn--0ca.xn--ssa73l; à.\u05D0\u0308; ; xn--0ca.xn--ssa73l; ; ;  # à.א̈
+à.\u05D00\u0660\u05D0; ; [B4]; xn--0ca.xn--0-zhcb98c; ; ;  # à.א0٠א
+a\u0300.\u05D00\u0660\u05D0; à.\u05D00\u0660\u05D0; [B4]; xn--0ca.xn--0-zhcb98c; ; ;  # à.א0٠א
+A\u0300.\u05D00\u0660\u05D0; à.\u05D00\u0660\u05D0; [B4]; xn--0ca.xn--0-zhcb98c; ; ;  # à.א0٠א
+À.\u05D00\u0660\u05D0; à.\u05D00\u0660\u05D0; [B4]; xn--0ca.xn--0-zhcb98c; ; ;  # à.א0٠א
+xn--0ca.xn--0-zhcb98c; à.\u05D00\u0660\u05D0; [B4]; xn--0ca.xn--0-zhcb98c; ; ;  # à.א0٠א
+\u0308.\u05D0; ; [B1, V6]; xn--ssa.xn--4db; ; ;  # ̈.א
+xn--ssa.xn--4db; \u0308.\u05D0; [B1, V6]; xn--ssa.xn--4db; ; ;  # ̈.א
+à.\u05D00\u0660; ; [B4]; xn--0ca.xn--0-zhc74b; ; ;  # à.א0٠
+a\u0300.\u05D00\u0660; à.\u05D00\u0660; [B4]; xn--0ca.xn--0-zhc74b; ; ;  # à.א0٠
+A\u0300.\u05D00\u0660; à.\u05D00\u0660; [B4]; xn--0ca.xn--0-zhc74b; ; ;  # à.א0٠
+À.\u05D00\u0660; à.\u05D00\u0660; [B4]; xn--0ca.xn--0-zhc74b; ; ;  # à.א0٠
+xn--0ca.xn--0-zhc74b; à.\u05D00\u0660; [B4]; xn--0ca.xn--0-zhc74b; ; ;  # à.א0٠
+àˇ.\u05D0; ; [B6]; xn--0ca88g.xn--4db; ; ;  # àˇ.א
+a\u0300ˇ.\u05D0; àˇ.\u05D0; [B6]; xn--0ca88g.xn--4db; ; ;  # àˇ.א
+A\u0300ˇ.\u05D0; àˇ.\u05D0; [B6]; xn--0ca88g.xn--4db; ; ;  # àˇ.א
+Àˇ.\u05D0; àˇ.\u05D0; [B6]; xn--0ca88g.xn--4db; ; ;  # àˇ.א
+xn--0ca88g.xn--4db; àˇ.\u05D0; [B6]; xn--0ca88g.xn--4db; ; ;  # àˇ.א
+à\u0308.\u05D0; ; ; xn--0ca81i.xn--4db; ; ;  # à̈.א
+a\u0300\u0308.\u05D0; à\u0308.\u05D0; ; xn--0ca81i.xn--4db; ; ;  # à̈.א
+A\u0300\u0308.\u05D0; à\u0308.\u05D0; ; xn--0ca81i.xn--4db; ; ;  # à̈.א
+À\u0308.\u05D0; à\u0308.\u05D0; ; xn--0ca81i.xn--4db; ; ;  # à̈.א
+xn--0ca81i.xn--4db; à\u0308.\u05D0; ; xn--0ca81i.xn--4db; ; ;  # à̈.א
 
 # CONTEXT TESTS
 
-a‌b; ; [C1]; xn--ab-j1t; ; ab; [] # ab
-A‌B; a‌b; [C1]; xn--ab-j1t; ; ab; [] # ab
-A‌b; a‌b; [C1]; xn--ab-j1t; ; ab; [] # ab
+a\u200Cb; ; [C1]; xn--ab-j1t; ; ab; [] # ab
+A\u200CB; a\u200Cb; [C1]; xn--ab-j1t; ; ab; [] # ab
+A\u200Cb; a\u200Cb; [C1]; xn--ab-j1t; ; ab; [] # ab
 ab; ; ; ; ; ;  # ab
-xn--ab-j1t; a‌b; [C1]; xn--ab-j1t; ; ;  # ab
-a्‌b; ; ; xn--ab-fsf604u; ; xn--ab-fsf;  # a्b
-A्‌B; a्‌b; ; xn--ab-fsf604u; ; xn--ab-fsf;  # a्b
-A्‌b; a्‌b; ; xn--ab-fsf604u; ; xn--ab-fsf;  # a्b
-xn--ab-fsf; a्b; ; xn--ab-fsf; ; ;  # a्b
-a्b; ; ; xn--ab-fsf; ; ;  # a्b
-A्B; a्b; ; xn--ab-fsf; ; ;  # a्b
-A्b; a्b; ; xn--ab-fsf; ; ;  # a्b
-xn--ab-fsf604u; a्‌b; ; xn--ab-fsf604u; ; ;  # a्b
-̈‌̈بb; ; [B1, C1, V5]; xn--b-bcba413a2w8b; ; xn--b-bcba413a; [B1, V5] # ̈̈بb
-̈‌̈بB; ̈‌̈بb; [B1, C1, V5]; xn--b-bcba413a2w8b; ; xn--b-bcba413a; [B1, V5] # ̈̈بb
-xn--b-bcba413a; ̈̈بb; [B1, V5]; xn--b-bcba413a; ; ;  # ̈̈بb
-xn--b-bcba413a2w8b; ̈‌̈بb; [B1, C1, V5]; xn--b-bcba413a2w8b; ; ;  # ̈̈بb
-aب̈‌̈; ; [B5, B6, C1]; xn--a-ccba213a5w8b; ; xn--a-ccba213a; [B5, B6] # aب̈̈
-Aب̈‌̈; aب̈‌̈; [B5, B6, C1]; xn--a-ccba213a5w8b; ; xn--a-ccba213a; [B5, B6] # aب̈̈
-xn--a-ccba213a; aب̈̈; [B5, B6]; xn--a-ccba213a; ; ;  # aب̈̈
-xn--a-ccba213a5w8b; aب̈‌̈; [B5, B6, C1]; xn--a-ccba213a5w8b; ; ;  # aب̈̈
-aب̈‌̈بb; ; [B5]; xn--ab-uuba211bca8057b; ; xn--ab-uuba211bca;  # aب̈̈بb
-Aب̈‌̈بB; aب̈‌̈بb; [B5]; xn--ab-uuba211bca8057b; ; xn--ab-uuba211bca;  # aب̈̈بb
-Aب̈‌̈بb; aب̈‌̈بb; [B5]; xn--ab-uuba211bca8057b; ; xn--ab-uuba211bca;  # aب̈̈بb
-xn--ab-uuba211bca; aب̈̈بb; [B5]; xn--ab-uuba211bca; ; ;  # aب̈̈بb
-xn--ab-uuba211bca8057b; aب̈‌̈بb; [B5]; xn--ab-uuba211bca8057b; ; ;  # aب̈̈بb
-a‍b; ; [C2]; xn--ab-m1t; ; ab; [] # ab
-A‍B; a‍b; [C2]; xn--ab-m1t; ; ab; [] # ab
-A‍b; a‍b; [C2]; xn--ab-m1t; ; ab; [] # ab
-xn--ab-m1t; a‍b; [C2]; xn--ab-m1t; ; ;  # ab
-a्‍b; ; ; xn--ab-fsf014u; ; xn--ab-fsf;  # a्b
-A्‍B; a्‍b; ; xn--ab-fsf014u; ; xn--ab-fsf;  # a्b
-A्‍b; a्‍b; ; xn--ab-fsf014u; ; xn--ab-fsf;  # a्b
-xn--ab-fsf014u; a्‍b; ; xn--ab-fsf014u; ; ;  # a्b
-̈‍̈بb; ; [B1, C2, V5]; xn--b-bcba413a7w8b; ; xn--b-bcba413a; [B1, V5] # ̈̈بb
-̈‍̈بB; ̈‍̈بb; [B1, C2, V5]; xn--b-bcba413a7w8b; ; xn--b-bcba413a; [B1, V5] # ̈̈بb
-xn--b-bcba413a7w8b; ̈‍̈بb; [B1, C2, V5]; xn--b-bcba413a7w8b; ; ;  # ̈̈بb
-aب̈‍̈; ; [B5, B6, C2]; xn--a-ccba213abx8b; ; xn--a-ccba213a; [B5, B6] # aب̈̈
-Aب̈‍̈; aب̈‍̈; [B5, B6, C2]; xn--a-ccba213abx8b; ; xn--a-ccba213a; [B5, B6] # aب̈̈
-xn--a-ccba213abx8b; aب̈‍̈; [B5, B6, C2]; xn--a-ccba213abx8b; ; ;  # aب̈̈
-aب̈‍̈بb; ; [B5, C2]; xn--ab-uuba211bca5157b; ; xn--ab-uuba211bca; [B5] # aب̈̈بb
-Aب̈‍̈بB; aب̈‍̈بb; [B5, C2]; xn--ab-uuba211bca5157b; ; xn--ab-uuba211bca; [B5] # aب̈̈بb
-Aب̈‍̈بb; aب̈‍̈بb; [B5, C2]; xn--ab-uuba211bca5157b; ; xn--ab-uuba211bca; [B5] # aب̈̈بb
-xn--ab-uuba211bca5157b; aب̈‍̈بb; [B5, C2]; xn--ab-uuba211bca5157b; ; ;  # aب̈̈بb
+xn--ab-j1t; a\u200Cb; [C1]; xn--ab-j1t; ; ;  # ab
+a\u094D\u200Cb; ; ; xn--ab-fsf604u; ; xn--ab-fsf;  # a्b
+A\u094D\u200CB; a\u094D\u200Cb; ; xn--ab-fsf604u; ; xn--ab-fsf;  # a्b
+A\u094D\u200Cb; a\u094D\u200Cb; ; xn--ab-fsf604u; ; xn--ab-fsf;  # a्b
+xn--ab-fsf; a\u094Db; ; xn--ab-fsf; ; ;  # a्b
+a\u094Db; ; ; xn--ab-fsf; ; ;  # a्b
+A\u094DB; a\u094Db; ; xn--ab-fsf; ; ;  # a्b
+A\u094Db; a\u094Db; ; xn--ab-fsf; ; ;  # a्b
+xn--ab-fsf604u; a\u094D\u200Cb; ; xn--ab-fsf604u; ; ;  # a्b
+\u0308\u200C\u0308\u0628b; ; [B1, C1, V6]; xn--b-bcba413a2w8b; ; xn--b-bcba413a; [B1, V6] # ̈̈بb
+\u0308\u200C\u0308\u0628B; \u0308\u200C\u0308\u0628b; [B1, C1, V6]; xn--b-bcba413a2w8b; ; xn--b-bcba413a; [B1, V6] # ̈̈بb
+xn--b-bcba413a; \u0308\u0308\u0628b; [B1, V6]; xn--b-bcba413a; ; ;  # ̈̈بb
+xn--b-bcba413a2w8b; \u0308\u200C\u0308\u0628b; [B1, C1, V6]; xn--b-bcba413a2w8b; ; ;  # ̈̈بb
+a\u0628\u0308\u200C\u0308; ; [B5, B6, C1]; xn--a-ccba213a5w8b; ; xn--a-ccba213a; [B5, B6] # aب̈̈
+A\u0628\u0308\u200C\u0308; a\u0628\u0308\u200C\u0308; [B5, B6, C1]; xn--a-ccba213a5w8b; ; xn--a-ccba213a; [B5, B6] # aب̈̈
+xn--a-ccba213a; a\u0628\u0308\u0308; [B5, B6]; xn--a-ccba213a; ; ;  # aب̈̈
+xn--a-ccba213a5w8b; a\u0628\u0308\u200C\u0308; [B5, B6, C1]; xn--a-ccba213a5w8b; ; ;  # aب̈̈
+a\u0628\u0308\u200C\u0308\u0628b; ; [B5]; xn--ab-uuba211bca8057b; ; xn--ab-uuba211bca;  # aب̈̈بb
+A\u0628\u0308\u200C\u0308\u0628B; a\u0628\u0308\u200C\u0308\u0628b; [B5]; xn--ab-uuba211bca8057b; ; xn--ab-uuba211bca;  # aب̈̈بb
+A\u0628\u0308\u200C\u0308\u0628b; a\u0628\u0308\u200C\u0308\u0628b; [B5]; xn--ab-uuba211bca8057b; ; xn--ab-uuba211bca;  # aب̈̈بb
+xn--ab-uuba211bca; a\u0628\u0308\u0308\u0628b; [B5]; xn--ab-uuba211bca; ; ;  # aب̈̈بb
+xn--ab-uuba211bca8057b; a\u0628\u0308\u200C\u0308\u0628b; [B5]; xn--ab-uuba211bca8057b; ; ;  # aب̈̈بb
+a\u200Db; ; [C2]; xn--ab-m1t; ; ab; [] # ab
+A\u200DB; a\u200Db; [C2]; xn--ab-m1t; ; ab; [] # ab
+A\u200Db; a\u200Db; [C2]; xn--ab-m1t; ; ab; [] # ab
+xn--ab-m1t; a\u200Db; [C2]; xn--ab-m1t; ; ;  # ab
+a\u094D\u200Db; ; ; xn--ab-fsf014u; ; xn--ab-fsf;  # a्b
+A\u094D\u200DB; a\u094D\u200Db; ; xn--ab-fsf014u; ; xn--ab-fsf;  # a्b
+A\u094D\u200Db; a\u094D\u200Db; ; xn--ab-fsf014u; ; xn--ab-fsf;  # a्b
+xn--ab-fsf014u; a\u094D\u200Db; ; xn--ab-fsf014u; ; ;  # a्b
+\u0308\u200D\u0308\u0628b; ; [B1, C2, V6]; xn--b-bcba413a7w8b; ; xn--b-bcba413a; [B1, V6] # ̈̈بb
+\u0308\u200D\u0308\u0628B; \u0308\u200D\u0308\u0628b; [B1, C2, V6]; xn--b-bcba413a7w8b; ; xn--b-bcba413a; [B1, V6] # ̈̈بb
+xn--b-bcba413a7w8b; \u0308\u200D\u0308\u0628b; [B1, C2, V6]; xn--b-bcba413a7w8b; ; ;  # ̈̈بb
+a\u0628\u0308\u200D\u0308; ; [B5, B6, C2]; xn--a-ccba213abx8b; ; xn--a-ccba213a; [B5, B6] # aب̈̈
+A\u0628\u0308\u200D\u0308; a\u0628\u0308\u200D\u0308; [B5, B6, C2]; xn--a-ccba213abx8b; ; xn--a-ccba213a; [B5, B6] # aب̈̈
+xn--a-ccba213abx8b; a\u0628\u0308\u200D\u0308; [B5, B6, C2]; xn--a-ccba213abx8b; ; ;  # aب̈̈
+a\u0628\u0308\u200D\u0308\u0628b; ; [B5, C2]; xn--ab-uuba211bca5157b; ; xn--ab-uuba211bca; [B5] # aب̈̈بb
+A\u0628\u0308\u200D\u0308\u0628B; a\u0628\u0308\u200D\u0308\u0628b; [B5, C2]; xn--ab-uuba211bca5157b; ; xn--ab-uuba211bca; [B5] # aب̈̈بb
+A\u0628\u0308\u200D\u0308\u0628b; a\u0628\u0308\u200D\u0308\u0628b; [B5, C2]; xn--ab-uuba211bca5157b; ; xn--ab-uuba211bca; [B5] # aب̈̈بb
+xn--ab-uuba211bca5157b; a\u0628\u0308\u200D\u0308\u0628b; [B5, C2]; xn--ab-uuba211bca5157b; ; ;  # aب̈̈بb
 
 # SELECTED TESTS
 
@@ -193,112 +201,115 @@ xn--ab-uuba211bca5157b; aب̈‍̈بb; [B5, C2]; xn--ab-uuba211bca5157b; ; ;  #
 xn--7a; ¡; ; xn--7a; ; ;  # ¡
 ᧚; ; ; xn--pkf; ; ;  # ᧚
 xn--pkf; ᧚; ; xn--pkf; ; ;  # ᧚
-。; .; [X4_2]; ; [A4_2]; ;  # .
-.; ; [X4_2]; ; [A4_2]; ;  # .
+""; ; [X4_2]; ; [A4_1, A4_2]; ;  # 
+。; .; [X4_2]; ; [A4_1, A4_2]; ;  # .
+.; ; [X4_2]; ; [A4_1, A4_2]; ;  # .
 ꭠ; ; ; xn--3y9a; ; ;  # ꭠ
 xn--3y9a; ꭠ; ; xn--3y9a; ; ;  # ꭠ
 1234567890ä1234567890123456789012345678901234567890123456; ; ; xn--12345678901234567890123456789012345678901234567890123456-fxe; [A4_2]; ;  # 1234567890ä1234567890123456789012345678901234567890123456
-1234567890ä1234567890123456789012345678901234567890123456; 1234567890ä1234567890123456789012345678901234567890123456; ; xn--12345678901234567890123456789012345678901234567890123456-fxe; [A4_2]; ;  # 1234567890ä1234567890123456789012345678901234567890123456
-1234567890Ä1234567890123456789012345678901234567890123456; 1234567890ä1234567890123456789012345678901234567890123456; ; xn--12345678901234567890123456789012345678901234567890123456-fxe; [A4_2]; ;  # 1234567890ä1234567890123456789012345678901234567890123456
+1234567890a\u03081234567890123456789012345678901234567890123456; 1234567890ä1234567890123456789012345678901234567890123456; ; xn--12345678901234567890123456789012345678901234567890123456-fxe; [A4_2]; ;  # 1234567890ä1234567890123456789012345678901234567890123456
+1234567890A\u03081234567890123456789012345678901234567890123456; 1234567890ä1234567890123456789012345678901234567890123456; ; xn--12345678901234567890123456789012345678901234567890123456-fxe; [A4_2]; ;  # 1234567890ä1234567890123456789012345678901234567890123456
 1234567890Ä1234567890123456789012345678901234567890123456; 1234567890ä1234567890123456789012345678901234567890123456; ; xn--12345678901234567890123456789012345678901234567890123456-fxe; [A4_2]; ;  # 1234567890ä1234567890123456789012345678901234567890123456
 xn--12345678901234567890123456789012345678901234567890123456-fxe; 1234567890ä1234567890123456789012345678901234567890123456; ; xn--12345678901234567890123456789012345678901234567890123456-fxe; [A4_2]; ;  # 1234567890ä1234567890123456789012345678901234567890123456
 www.eXample.cOm; www.example.com; ; ; ; ;  # www.example.com
 Bücher.de; bücher.de; ; xn--bcher-kva.de; ; ;  # bücher.de
-Bücher.de; bücher.de; ; xn--bcher-kva.de; ; ;  # bücher.de
-bücher.de; bücher.de; ; xn--bcher-kva.de; ; ;  # bücher.de
+Bu\u0308cher.de; bücher.de; ; xn--bcher-kva.de; ; ;  # bücher.de
+bu\u0308cher.de; bücher.de; ; xn--bcher-kva.de; ; ;  # bücher.de
 bücher.de; ; ; xn--bcher-kva.de; ; ;  # bücher.de
 BÜCHER.DE; bücher.de; ; xn--bcher-kva.de; ; ;  # bücher.de
-BÜCHER.DE; bücher.de; ; xn--bcher-kva.de; ; ;  # bücher.de
+BU\u0308CHER.DE; bücher.de; ; xn--bcher-kva.de; ; ;  # bücher.de
 xn--bcher-kva.de; bücher.de; ; xn--bcher-kva.de; ; ;  # bücher.de
 ÖBB; öbb; ; xn--bb-eka; ; ;  # öbb
-ÖBB; öbb; ; xn--bb-eka; ; ;  # öbb
-öbb; öbb; ; xn--bb-eka; ; ;  # öbb
+O\u0308BB; öbb; ; xn--bb-eka; ; ;  # öbb
+o\u0308bb; öbb; ; xn--bb-eka; ; ;  # öbb
 öbb; ; ; xn--bb-eka; ; ;  # öbb
 Öbb; öbb; ; xn--bb-eka; ; ;  # öbb
-Öbb; öbb; ; xn--bb-eka; ; ;  # öbb
+O\u0308bb; öbb; ; xn--bb-eka; ; ;  # öbb
 xn--bb-eka; öbb; ; xn--bb-eka; ; ;  # öbb
+FAẞ.de; faß.de; ; xn--fa-hia.de; ; fass.de;  # faß.de
+FAẞ.DE; faß.de; ; xn--fa-hia.de; ; fass.de;  # faß.de
 βόλος.com; ; ; xn--nxasmm1c.com; ; xn--nxasmq6b.com;  # βόλος.com
-βόλος.com; βόλος.com; ; xn--nxasmm1c.com; ; xn--nxasmq6b.com;  # βόλος.com
-ΒΌΛΟΣ.COM; βόλοσ.com; ; xn--nxasmq6b.com; ; ;  # βόλοσ.com
+βο\u0301λος.com; βόλος.com; ; xn--nxasmm1c.com; ; xn--nxasmq6b.com;  # βόλος.com
+ΒΟ\u0301ΛΟΣ.COM; βόλοσ.com; ; xn--nxasmq6b.com; ; ;  # βόλοσ.com
 ΒΌΛΟΣ.COM; βόλοσ.com; ; xn--nxasmq6b.com; ; ;  # βόλοσ.com
 βόλοσ.com; ; ; xn--nxasmq6b.com; ; ;  # βόλοσ.com
-βόλοσ.com; βόλοσ.com; ; xn--nxasmq6b.com; ; ;  # βόλοσ.com
-Βόλοσ.com; βόλοσ.com; ; xn--nxasmq6b.com; ; ;  # βόλοσ.com
+βο\u0301λοσ.com; βόλοσ.com; ; xn--nxasmq6b.com; ; ;  # βόλοσ.com
+Βο\u0301λοσ.com; βόλοσ.com; ; xn--nxasmq6b.com; ; ;  # βόλοσ.com
 Βόλοσ.com; βόλοσ.com; ; xn--nxasmq6b.com; ; ;  # βόλοσ.com
 xn--nxasmq6b.com; βόλοσ.com; ; xn--nxasmq6b.com; ; ;  # βόλοσ.com
-Βόλος.com; βόλος.com; ; xn--nxasmm1c.com; ; xn--nxasmq6b.com;  # βόλος.com
+Βο\u0301λος.com; βόλος.com; ; xn--nxasmm1c.com; ; xn--nxasmq6b.com;  # βόλος.com
 Βόλος.com; βόλος.com; ; xn--nxasmm1c.com; ; xn--nxasmq6b.com;  # βόλος.com
 xn--nxasmm1c.com; βόλος.com; ; xn--nxasmm1c.com; ; ;  # βόλος.com
 xn--nxasmm1c; βόλος; ; xn--nxasmm1c; ; ;  # βόλος
 βόλος; ; ; xn--nxasmm1c; ; xn--nxasmq6b;  # βόλος
-βόλος; βόλος; ; xn--nxasmm1c; ; xn--nxasmq6b;  # βόλος
-ΒΌΛΟΣ; βόλοσ; ; xn--nxasmq6b; ; ;  # βόλοσ
+βο\u0301λος; βόλος; ; xn--nxasmm1c; ; xn--nxasmq6b;  # βόλος
+ΒΟ\u0301ΛΟΣ; βόλοσ; ; xn--nxasmq6b; ; ;  # βόλοσ
 ΒΌΛΟΣ; βόλοσ; ; xn--nxasmq6b; ; ;  # βόλοσ
 βόλοσ; ; ; xn--nxasmq6b; ; ;  # βόλοσ
-βόλοσ; βόλοσ; ; xn--nxasmq6b; ; ;  # βόλοσ
-Βόλοσ; βόλοσ; ; xn--nxasmq6b; ; ;  # βόλοσ
+βο\u0301λοσ; βόλοσ; ; xn--nxasmq6b; ; ;  # βόλοσ
+Βο\u0301λοσ; βόλοσ; ; xn--nxasmq6b; ; ;  # βόλοσ
 Βόλοσ; βόλοσ; ; xn--nxasmq6b; ; ;  # βόλοσ
 xn--nxasmq6b; βόλοσ; ; xn--nxasmq6b; ; ;  # βόλοσ
 Βόλος; βόλος; ; xn--nxasmm1c; ; xn--nxasmq6b;  # βόλος
-Βόλος; βόλος; ; xn--nxasmm1c; ; xn--nxasmq6b;  # βόλος
-www.ශ්‍රී.com; ; ; www.xn--10cl1a0b660p.com; ; www.xn--10cl1a0b.com;  # www.ශ්රී.com
-WWW.ශ්‍රී.COM; www.ශ්‍රී.com; ; www.xn--10cl1a0b660p.com; ; www.xn--10cl1a0b.com;  # www.ශ්රී.com
-Www.ශ්‍රී.com; www.ශ්‍රී.com; ; www.xn--10cl1a0b660p.com; ; www.xn--10cl1a0b.com;  # www.ශ්රී.com
-www.xn--10cl1a0b.com; www.ශ්රී.com; ; www.xn--10cl1a0b.com; ; ;  # www.ශ්රී.com
-www.ශ්රී.com; ; ; www.xn--10cl1a0b.com; ; ;  # www.ශ්රී.com
-WWW.ශ්රී.COM; www.ශ්රී.com; ; www.xn--10cl1a0b.com; ; ;  # www.ශ්රී.com
-Www.ශ්රී.com; www.ශ්රී.com; ; www.xn--10cl1a0b.com; ; ;  # www.ශ්රී.com
-www.xn--10cl1a0b660p.com; www.ශ්‍රී.com; ; www.xn--10cl1a0b660p.com; ; ;  # www.ශ්රී.com
-نامه‌ای; ; ; xn--mgba3gch31f060k; ; xn--mgba3gch31f;  # نامهای
-xn--mgba3gch31f; نامهای; ; xn--mgba3gch31f; ; ;  # نامهای
-نامهای; ; ; xn--mgba3gch31f; ; ;  # نامهای
-xn--mgba3gch31f060k; نامه‌ای; ; xn--mgba3gch31f060k; ; ;  # نامهای
-xn--mgba3gch31f060k.com; نامه‌ای.com; ; xn--mgba3gch31f060k.com; ; ;  # نامهای.com
-نامه‌ای.com; ; ; xn--mgba3gch31f060k.com; ; xn--mgba3gch31f.com;  # نامهای.com
-نامه‌ای.COM; نامه‌ای.com; ; xn--mgba3gch31f060k.com; ; xn--mgba3gch31f.com;  # نامهای.com
-xn--mgba3gch31f.com; نامهای.com; ; xn--mgba3gch31f.com; ; ;  # نامهای.com
-نامهای.com; ; ; xn--mgba3gch31f.com; ; ;  # نامهای.com
-نامهای.COM; نامهای.com; ; xn--mgba3gch31f.com; ; ;  # نامهای.com
-a.b．c。d｡; a.b.c.d.; ; ; ; ;  # a.b.c.d.
-a.b.c。d。; a.b.c.d.; ; ; ; ;  # a.b.c.d.
-A.B.C。D。; a.b.c.d.; ; ; ; ;  # a.b.c.d.
-A.b.c。D。; a.b.c.d.; ; ; ; ;  # a.b.c.d.
-a.b.c.d.; ; ; ; ; ;  # a.b.c.d.
-A.B．C。D｡; a.b.c.d.; ; ; ; ;  # a.b.c.d.
-A.b．c。D｡; a.b.c.d.; ; ; ; ;  # a.b.c.d.
-Ü.xn--tda; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
+Βο\u0301λος; βόλος; ; xn--nxasmm1c; ; xn--nxasmq6b;  # βόλος
+www.ශ\u0DCA\u200Dර\u0DD3.com; ; ; www.xn--10cl1a0b660p.com; ; www.xn--10cl1a0b.com;  # www.ශ්රී.com
+WWW.ශ\u0DCA\u200Dර\u0DD3.COM; www.ශ\u0DCA\u200Dර\u0DD3.com; ; www.xn--10cl1a0b660p.com; ; www.xn--10cl1a0b.com;  # www.ශ්රී.com
+Www.ශ\u0DCA\u200Dර\u0DD3.com; www.ශ\u0DCA\u200Dර\u0DD3.com; ; www.xn--10cl1a0b660p.com; ; www.xn--10cl1a0b.com;  # www.ශ්රී.com
+www.xn--10cl1a0b.com; www.ශ\u0DCAර\u0DD3.com; ; www.xn--10cl1a0b.com; ; ;  # www.ශ්රී.com
+www.ශ\u0DCAර\u0DD3.com; ; ; www.xn--10cl1a0b.com; ; ;  # www.ශ්රී.com
+WWW.ශ\u0DCAර\u0DD3.COM; www.ශ\u0DCAර\u0DD3.com; ; www.xn--10cl1a0b.com; ; ;  # www.ශ්රී.com
+Www.ශ\u0DCAර\u0DD3.com; www.ශ\u0DCAර\u0DD3.com; ; www.xn--10cl1a0b.com; ; ;  # www.ශ්රී.com
+www.xn--10cl1a0b660p.com; www.ශ\u0DCA\u200Dර\u0DD3.com; ; www.xn--10cl1a0b660p.com; ; ;  # www.ශ්රී.com
+\u0646\u0627\u0645\u0647\u200C\u0627\u06CC; ; ; xn--mgba3gch31f060k; ; xn--mgba3gch31f;  # نامهای
+xn--mgba3gch31f; \u0646\u0627\u0645\u0647\u0627\u06CC; ; xn--mgba3gch31f; ; ;  # نامهای
+\u0646\u0627\u0645\u0647\u0627\u06CC; ; ; xn--mgba3gch31f; ; ;  # نامهای
+xn--mgba3gch31f060k; \u0646\u0627\u0645\u0647\u200C\u0627\u06CC; ; xn--mgba3gch31f060k; ; ;  # نامهای
+xn--mgba3gch31f060k.com; \u0646\u0627\u0645\u0647\u200C\u0627\u06CC.com; ; xn--mgba3gch31f060k.com; ; ;  # نامهای.com
+\u0646\u0627\u0645\u0647\u200C\u0627\u06CC.com; ; ; xn--mgba3gch31f060k.com; ; xn--mgba3gch31f.com;  # نامهای.com
+\u0646\u0627\u0645\u0647\u200C\u0627\u06CC.COM; \u0646\u0627\u0645\u0647\u200C\u0627\u06CC.com; ; xn--mgba3gch31f060k.com; ; xn--mgba3gch31f.com;  # نامهای.com
+xn--mgba3gch31f.com; \u0646\u0627\u0645\u0647\u0627\u06CC.com; ; xn--mgba3gch31f.com; ; ;  # نامهای.com
+\u0646\u0627\u0645\u0647\u0627\u06CC.com; ; ; xn--mgba3gch31f.com; ; ;  # نامهای.com
+\u0646\u0627\u0645\u0647\u0627\u06CC.COM; \u0646\u0627\u0645\u0647\u0627\u06CC.com; ; xn--mgba3gch31f.com; ; ;  # نامهای.com
+a.b．c。d｡; a.b.c.d.; ; ; [A4_2]; ;  # a.b.c.d.
+a.b.c。d。; a.b.c.d.; ; ; [A4_2]; ;  # a.b.c.d.
+A.B.C。D。; a.b.c.d.; ; ; [A4_2]; ;  # a.b.c.d.
+A.b.c。D。; a.b.c.d.; ; ; [A4_2]; ;  # a.b.c.d.
+a.b.c.d.; ; ; ; [A4_2]; ;  # a.b.c.d.
+A.B．C。D｡; a.b.c.d.; ; ; [A4_2]; ;  # a.b.c.d.
+A.b．c。D｡; a.b.c.d.; ; ; [A4_2]; ;  # a.b.c.d.
+U\u0308.xn--tda; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
 Ü.xn--tda; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
 ü.xn--tda; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
-ü.xn--tda; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
-Ü.XN--TDA; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
+u\u0308.xn--tda; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
+U\u0308.XN--TDA; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
 Ü.XN--TDA; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
 Ü.xn--Tda; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
-Ü.xn--Tda; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
+U\u0308.xn--Tda; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
 xn--tda.xn--tda; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
 ü.ü; ; ; xn--tda.xn--tda; ; ;  # ü.ü
-ü.ü; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
-Ü.Ü; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
+u\u0308.u\u0308; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
+U\u0308.U\u0308; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
 Ü.Ü; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
 Ü.ü; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
-Ü.ü; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
-xn--u-ccb; ü; [V1]; xn--u-ccb; ; ;  # ü
-a⒈com; ; [P1, V6]; xn--acom-0w1b; ; ;  # a⒈com
+U\u0308.u\u0308; ü.ü; ; xn--tda.xn--tda; ; ;  # ü.ü
+xn--u-ccb; u\u0308; [V1]; xn--u-ccb; ; ;  # ü
+a⒈com; ; [V7]; xn--acom-0w1b; ; ;  # a⒈com
 a1.com; ; ; ; ; ;  # a1.com
-A⒈COM; a⒈com; [P1, V6]; xn--acom-0w1b; ; ;  # a⒈com
-A⒈Com; a⒈com; [P1, V6]; xn--acom-0w1b; ; ;  # a⒈com
-xn--acom-0w1b; a⒈com; [V6]; xn--acom-0w1b; ; ;  # a⒈com
-xn--a-ecp.ru; a⒈.ru; [V6]; xn--a-ecp.ru; ; ;  # a⒈.ru
+A⒈COM; a⒈com; [V7]; xn--acom-0w1b; ; ;  # a⒈com
+A⒈Com; a⒈com; [V7]; xn--acom-0w1b; ; ;  # a⒈com
+xn--acom-0w1b; a⒈com; [V7]; xn--acom-0w1b; ; ;  # a⒈com
+xn--a-ecp.ru; a⒈.ru; [V7]; xn--a-ecp.ru; ; ;  # a⒈.ru
 xn--0.pt; ; [P4]; ; ; ;  # xn--0.pt
-xn--a.pt; .pt; [V6]; xn--a.pt; ; ;  # .pt
+xn--a.pt; \u0080.pt; [V7]; xn--a.pt; ; ;  # .pt
 xn--a-Ä.pt; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
-xn--a-Ä.pt; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
-xn--a-ä.pt; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
+xn--a-A\u0308.pt; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
+xn--a-a\u0308.pt; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
 xn--a-ä.pt; ; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
 XN--A-Ä.PT; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
-XN--A-Ä.PT; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
-Xn--A-Ä.pt; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
+XN--A-A\u0308.PT; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
+Xn--A-A\u0308.pt; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
 Xn--A-Ä.pt; xn--a-ä.pt; [P4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
-xn--xn--a--gua.pt; xn--a-ä.pt; [V2]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
+xn--xn--a--gua.pt; xn--a-ä.pt; [V2, V4]; xn--xn--a--gua.pt; ; ;  # xn--a-ä.pt
 日本語。ＪＰ; 日本語.jp; ; xn--wgv71a119e.jp; ; ;  # 日本語.jp
 日本語。JP; 日本語.jp; ; xn--wgv71a119e.jp; ; ;  # 日本語.jp
 日本語。jp; 日本語.jp; ; xn--wgv71a119e.jp; ; ;  # 日本語.jp
@@ -311,566 +322,620 @@ xn--wgv71a119e.jp; 日本語.jp; ; xn--wgv71a119e.jp; ; ;  # 日本語.jp
 日本語。Ｊｐ; 日本語.jp; ; xn--wgv71a119e.jp; ; ;  # 日本語.jp
 ☕; ; ; xn--53h; ; ;  # ☕
 xn--53h; ☕; ; xn--53h; ; ;  # ☕
-1.aß‌‍b‌‍cßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz; ; [C1, C2]; 1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.aßbcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz
-1.ASS‌‍B‌‍CSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ; 1.ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
-1.ASS‌‍B‌‍CSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ; 1.ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
-1.ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
-1.ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; 1.ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
-1.Ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; 1.ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
-1.Ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; 1.ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
+1.aß\u200C\u200Db\u200C\u200Dcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß\u0302ßz; ; [C1, C2]; 1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.aßbcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz
+1.ASS\u200C\u200DB\u200C\u200DCSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSS\u0302SSZ; 1.ass\u200C\u200Db\u200C\u200Dcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
+1.ASS\u200C\u200DB\u200C\u200DCSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ; 1.ass\u200C\u200Db\u200C\u200Dcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
+1.ass\u200C\u200Db\u200C\u200Dcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
+1.ass\u200C\u200Db\u200C\u200Dcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\u0302ssz; 1.ass\u200C\u200Db\u200C\u200Dcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
+1.Ass\u200C\u200Db\u200C\u200Dcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\u0302ssz; 1.ass\u200C\u200Db\u200C\u200Dcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
+1.Ass\u200C\u200Db\u200C\u200Dcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; 1.ass\u200C\u200Db\u200C\u200Dcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; ; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
-1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
-1.ASSBCSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ; 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
+1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\u0302ssz; 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
+1.ASSBCSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSS\u0302SSZ; 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
 1.ASSBCSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ; 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
 1.Assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
-1.Assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
-1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; 1.ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
-1.Aß‌‍b‌‍cßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz; 1.aß‌‍b‌‍cßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz; [C1, C2]; 1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.aßbcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz
-1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc; 1.aß‌‍b‌‍cßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz; [C1, C2]; 1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc; [C1, C2, A4_2]; ;  # 1.aßbcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz
-‌x‍n‌-‍-bß; ; [C1, C2]; xn--xn--b-pqa5796ccahd; ; xn--bss; [] # xn--bß
-‌X‍N‌-‍-BSS; ‌x‍n‌-‍-bss; [C1, C2]; xn--xn--bss-7z6ccid; ; xn--bss; [] # xn--bss
-‌x‍n‌-‍-bss; ; [C1, C2]; xn--xn--bss-7z6ccid; ; xn--bss; [] # xn--bss
-‌X‍n‌-‍-Bss; ‌x‍n‌-‍-bss; [C1, C2]; xn--xn--bss-7z6ccid; ; xn--bss; [] # xn--bss
+1.Assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\u0302ssz; 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; ; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
+1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; 1.ass\u200C\u200Db\u200C\u200Dcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz; [C1, C2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc; [C1, C2, A4_2]; ;  # 1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz
+1.Aß\u200C\u200Db\u200C\u200Dcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß\u0302ßz; 1.aß\u200C\u200Db\u200C\u200Dcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß\u0302ßz; [C1, C2]; 1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc; [C1, C2, A4_2]; 1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa; [A4_2] # 1.aßbcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz
+1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc; 1.aß\u200C\u200Db\u200C\u200Dcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß\u0302ßz; [C1, C2]; 1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc; [C1, C2, A4_2]; ;  # 1.aßbcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz
+\u200Cx\u200Dn\u200C-\u200D-bß; ; [C1, C2]; xn--xn--b-pqa5796ccahd; ; xn--bss; [] # xn--bß
+\u200CX\u200DN\u200C-\u200D-BSS; \u200Cx\u200Dn\u200C-\u200D-bss; [C1, C2]; xn--xn--bss-7z6ccid; ; xn--bss; [] # xn--bss
+\u200Cx\u200Dn\u200C-\u200D-bss; ; [C1, C2]; xn--xn--bss-7z6ccid; ; xn--bss; [] # xn--bss
+\u200CX\u200Dn\u200C-\u200D-Bss; \u200Cx\u200Dn\u200C-\u200D-bss; [C1, C2]; xn--xn--bss-7z6ccid; ; xn--bss; [] # xn--bss
 xn--bss; 夙; ; xn--bss; ; ;  # 夙
 夙; ; ; xn--bss; ; ;  # 夙
-xn--xn--bss-7z6ccid; ‌x‍n‌-‍-bss; [C1, C2]; xn--xn--bss-7z6ccid; ; ;  # xn--bss
-‌X‍n‌-‍-Bß; ‌x‍n‌-‍-bß; [C1, C2]; xn--xn--b-pqa5796ccahd; ; xn--bss; [] # xn--bß
-xn--xn--b-pqa5796ccahd; ‌x‍n‌-‍-bß; [C1, C2]; xn--xn--b-pqa5796ccahd; ; ;  # xn--bß
-ˣ͏ℕ​﹣­－᠌ℬ︀ſ⁤𝔰󠇯ﬄ; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
-x͏N​-­-᠌B︀s⁤s󠇯ffl; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
-x͏n​-­-᠌b︀s⁤s󠇯ffl; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
-X͏N​-­-᠌B︀S⁤S󠇯FFL; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
-X͏n​-­-᠌B︀s⁤s󠇯ffl; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
+xn--xn--bss-7z6ccid; \u200Cx\u200Dn\u200C-\u200D-bss; [C1, C2]; xn--xn--bss-7z6ccid; ; ;  # xn--bss
+\u200CX\u200Dn\u200C-\u200D-Bß; \u200Cx\u200Dn\u200C-\u200D-bß; [C1, C2]; xn--xn--b-pqa5796ccahd; ; xn--bss; [] # xn--bß
+xn--xn--b-pqa5796ccahd; \u200Cx\u200Dn\u200C-\u200D-bß; [C1, C2]; xn--xn--b-pqa5796ccahd; ; ;  # xn--bß
+ˣ\u034Fℕ\u200B﹣\u00AD－\u180Cℬ\uFE00ſ\u2064𝔰󠇯ﬄ; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
+x\u034FN\u200B-\u00AD-\u180CB\uFE00s\u2064s󠇯ffl; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
+x\u034Fn\u200B-\u00AD-\u180Cb\uFE00s\u2064s󠇯ffl; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
+X\u034FN\u200B-\u00AD-\u180CB\uFE00S\u2064S󠇯FFL; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
+X\u034Fn\u200B-\u00AD-\u180CB\uFE00s\u2064s󠇯ffl; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
 xn--bssffl; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
 夡夞夜夙; ; ; xn--bssffl; ; ;  # 夡夞夜夙
-ˣ͏ℕ​﹣­－᠌ℬ︀S⁤𝔰󠇯FFL; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
-x͏N​-­-᠌B︀S⁤s󠇯FFL; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
-ˣ͏ℕ​﹣­－᠌ℬ︀s⁤𝔰󠇯ffl; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
-123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; ; ; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
-123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; ; ; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.
-123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; ; ; ; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012
-123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; ; ; ; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890
-123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; ; ; ; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.
-123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; ; ; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
+ˣ\u034Fℕ\u200B﹣\u00AD－\u180Cℬ\uFE00S\u2064𝔰󠇯FFL; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
+x\u034FN\u200B-\u00AD-\u180CB\uFE00S\u2064s󠇯FFL; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
+ˣ\u034Fℕ\u200B﹣\u00AD－\u180Cℬ\uFE00s\u2064𝔰󠇯ffl; 夡夞夜夙; ; xn--bssffl; ; ;  # 夡夞夜夙
+123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ; ; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; ; ; ; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.
+123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; ; ; ; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c
+123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; ; ; ; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a
+123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; ; ; ; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.
+123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ; ; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
 ä1234567890123456789012345678901234567890123456789012345; ; ; xn--1234567890123456789012345678901234567890123456789012345-9te; ; ;  # ä1234567890123456789012345678901234567890123456789012345
-ä1234567890123456789012345678901234567890123456789012345; ä1234567890123456789012345678901234567890123456789012345; ; xn--1234567890123456789012345678901234567890123456789012345-9te; ; ;  # ä1234567890123456789012345678901234567890123456789012345
-Ä1234567890123456789012345678901234567890123456789012345; ä1234567890123456789012345678901234567890123456789012345; ; xn--1234567890123456789012345678901234567890123456789012345-9te; ; ;  # ä1234567890123456789012345678901234567890123456789012345
+a\u03081234567890123456789012345678901234567890123456789012345; ä1234567890123456789012345678901234567890123456789012345; ; xn--1234567890123456789012345678901234567890123456789012345-9te; ; ;  # ä1234567890123456789012345678901234567890123456789012345
+A\u03081234567890123456789012345678901234567890123456789012345; ä1234567890123456789012345678901234567890123456789012345; ; xn--1234567890123456789012345678901234567890123456789012345-9te; ; ;  # ä1234567890123456789012345678901234567890123456789012345
 Ä1234567890123456789012345678901234567890123456789012345; ä1234567890123456789012345678901234567890123456789012345; ; xn--1234567890123456789012345678901234567890123456789012345-9te; ; ;  # ä1234567890123456789012345678901234567890123456789012345
 xn--1234567890123456789012345678901234567890123456789012345-9te; ä1234567890123456789012345678901234567890123456789012345; ; xn--1234567890123456789012345678901234567890123456789012345-9te; ; ;  # ä1234567890123456789012345678901234567890123456789012345
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
-123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.
-123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901.
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012
-123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890
-123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.
-123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890.
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
-123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
-123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
-123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901
+123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.1234567890a\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.
+123456789012345678901234567890123456789012345678901234567890123.1234567890a\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.
+123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.
+123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c
+123456789012345678901234567890123456789012345678901234567890123.1234567890a\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901C; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901C; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c
+123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c
+123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a
+123456789012345678901234567890123456789012345678901234567890123.1234567890a\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a
+123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a
+123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.
+123456789012345678901234567890123456789012345678901234567890123.1234567890a\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.
+123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.
+123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.1234567890a\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
 a.b..-q--a-.e; ; [V2, V3, X4_2]; ; [V2, V3, A4_2]; ;  # a.b..-q--a-.e
 a.b..-q--ä-.e; ; [V2, V3, X4_2]; a.b..xn---q----jra.e; [V2, V3, A4_2]; ;  # a.b..-q--ä-.e
-a.b..-q--ä-.e; a.b..-q--ä-.e; [V2, V3, X4_2]; a.b..xn---q----jra.e; [V2, V3, A4_2]; ;  # a.b..-q--ä-.e
-A.B..-Q--Ä-.E; a.b..-q--ä-.e; [V2, V3, X4_2]; a.b..xn---q----jra.e; [V2, V3, A4_2]; ;  # a.b..-q--ä-.e
+a.b..-q--a\u0308-.e; a.b..-q--ä-.e; [V2, V3, X4_2]; a.b..xn---q----jra.e; [V2, V3, A4_2]; ;  # a.b..-q--ä-.e
+A.B..-Q--A\u0308-.E; a.b..-q--ä-.e; [V2, V3, X4_2]; a.b..xn---q----jra.e; [V2, V3, A4_2]; ;  # a.b..-q--ä-.e
 A.B..-Q--Ä-.E; a.b..-q--ä-.e; [V2, V3, X4_2]; a.b..xn---q----jra.e; [V2, V3, A4_2]; ;  # a.b..-q--ä-.e
 A.b..-Q--Ä-.E; a.b..-q--ä-.e; [V2, V3, X4_2]; a.b..xn---q----jra.e; [V2, V3, A4_2]; ;  # a.b..-q--ä-.e
-A.b..-Q--Ä-.E; a.b..-q--ä-.e; [V2, V3, X4_2]; a.b..xn---q----jra.e; [V2, V3, A4_2]; ;  # a.b..-q--ä-.e
+A.b..-Q--A\u0308-.E; a.b..-q--ä-.e; [V2, V3, X4_2]; a.b..xn---q----jra.e; [V2, V3, A4_2]; ;  # a.b..-q--ä-.e
 a.b..xn---q----jra.e; a.b..-q--ä-.e; [V2, V3, X4_2]; a.b..xn---q----jra.e; [V2, V3, A4_2]; ;  # a.b..-q--ä-.e
 a..c; ; [X4_2]; ; [A4_2]; ;  # a..c
-a.-b.; ; [V3]; ; ; ;  # a.-b.
+a.-b.; ; [V3]; ; [V3, A4_2]; ;  # a.-b.
 a.b-.c; ; [V3]; ; ; ;  # a.b-.c
 a.-.c; ; [V3]; ; ; ;  # a.-.c
 a.bc--de.f; ; [V2]; ; ; ;  # a.bc--de.f
-ä.­.c; ä..c; [X4_2]; xn--4ca..c; [A4_2]; ;  # ä..c
-ä.­.c; ä..c; [X4_2]; xn--4ca..c; [A4_2]; ;  # ä..c
-Ä.­.C; ä..c; [X4_2]; xn--4ca..c; [A4_2]; ;  # ä..c
-Ä.­.C; ä..c; [X4_2]; xn--4ca..c; [A4_2]; ;  # ä..c
+xn--xn---epa; xn--é; [V2, V4]; xn--xn---epa; ; ;  # xn--é
+ä.\u00AD.c; ä..c; [X4_2]; xn--4ca..c; [A4_2]; ;  # ä..c
+a\u0308.\u00AD.c; ä..c; [X4_2]; xn--4ca..c; [A4_2]; ;  # ä..c
+A\u0308.\u00AD.C; ä..c; [X4_2]; xn--4ca..c; [A4_2]; ;  # ä..c
+Ä.\u00AD.C; ä..c; [X4_2]; xn--4ca..c; [A4_2]; ;  # ä..c
 xn--4ca..c; ä..c; [X4_2]; xn--4ca..c; [A4_2]; ;  # ä..c
-ä.-b.; ; [V3]; xn--4ca.-b.; ; ;  # ä.-b.
-ä.-b.; ä.-b.; [V3]; xn--4ca.-b.; ; ;  # ä.-b.
-Ä.-B.; ä.-b.; [V3]; xn--4ca.-b.; ; ;  # ä.-b.
-Ä.-B.; ä.-b.; [V3]; xn--4ca.-b.; ; ;  # ä.-b.
-xn--4ca.-b.; ä.-b.; [V3]; xn--4ca.-b.; ; ;  # ä.-b.
+ä.-b.; ; [V3]; xn--4ca.-b.; [V3, A4_2]; ;  # ä.-b.
+a\u0308.-b.; ä.-b.; [V3]; xn--4ca.-b.; [V3, A4_2]; ;  # ä.-b.
+A\u0308.-B.; ä.-b.; [V3]; xn--4ca.-b.; [V3, A4_2]; ;  # ä.-b.
+Ä.-B.; ä.-b.; [V3]; xn--4ca.-b.; [V3, A4_2]; ;  # ä.-b.
+xn--4ca.-b.; ä.-b.; [V3]; xn--4ca.-b.; [V3, A4_2]; ;  # ä.-b.
 ä.b-.c; ; [V3]; xn--4ca.b-.c; ; ;  # ä.b-.c
-ä.b-.c; ä.b-.c; [V3]; xn--4ca.b-.c; ; ;  # ä.b-.c
-Ä.B-.C; ä.b-.c; [V3]; xn--4ca.b-.c; ; ;  # ä.b-.c
+a\u0308.b-.c; ä.b-.c; [V3]; xn--4ca.b-.c; ; ;  # ä.b-.c
+A\u0308.B-.C; ä.b-.c; [V3]; xn--4ca.b-.c; ; ;  # ä.b-.c
 Ä.B-.C; ä.b-.c; [V3]; xn--4ca.b-.c; ; ;  # ä.b-.c
 Ä.b-.C; ä.b-.c; [V3]; xn--4ca.b-.c; ; ;  # ä.b-.c
-Ä.b-.C; ä.b-.c; [V3]; xn--4ca.b-.c; ; ;  # ä.b-.c
+A\u0308.b-.C; ä.b-.c; [V3]; xn--4ca.b-.c; ; ;  # ä.b-.c
 xn--4ca.b-.c; ä.b-.c; [V3]; xn--4ca.b-.c; ; ;  # ä.b-.c
 ä.-.c; ; [V3]; xn--4ca.-.c; ; ;  # ä.-.c
-ä.-.c; ä.-.c; [V3]; xn--4ca.-.c; ; ;  # ä.-.c
-Ä.-.C; ä.-.c; [V3]; xn--4ca.-.c; ; ;  # ä.-.c
+a\u0308.-.c; ä.-.c; [V3]; xn--4ca.-.c; ; ;  # ä.-.c
+A\u0308.-.C; ä.-.c; [V3]; xn--4ca.-.c; ; ;  # ä.-.c
 Ä.-.C; ä.-.c; [V3]; xn--4ca.-.c; ; ;  # ä.-.c
 xn--4ca.-.c; ä.-.c; [V3]; xn--4ca.-.c; ; ;  # ä.-.c
 ä.bc--de.f; ; [V2]; xn--4ca.bc--de.f; ; ;  # ä.bc--de.f
-ä.bc--de.f; ä.bc--de.f; [V2]; xn--4ca.bc--de.f; ; ;  # ä.bc--de.f
-Ä.BC--DE.F; ä.bc--de.f; [V2]; xn--4ca.bc--de.f; ; ;  # ä.bc--de.f
+a\u0308.bc--de.f; ä.bc--de.f; [V2]; xn--4ca.bc--de.f; ; ;  # ä.bc--de.f
+A\u0308.BC--DE.F; ä.bc--de.f; [V2]; xn--4ca.bc--de.f; ; ;  # ä.bc--de.f
 Ä.BC--DE.F; ä.bc--de.f; [V2]; xn--4ca.bc--de.f; ; ;  # ä.bc--de.f
 Ä.bc--De.f; ä.bc--de.f; [V2]; xn--4ca.bc--de.f; ; ;  # ä.bc--de.f
-Ä.bc--De.f; ä.bc--de.f; [V2]; xn--4ca.bc--de.f; ; ;  # ä.bc--de.f
+A\u0308.bc--De.f; ä.bc--de.f; [V2]; xn--4ca.bc--de.f; ; ;  # ä.bc--de.f
 xn--4ca.bc--de.f; ä.bc--de.f; [V2]; xn--4ca.bc--de.f; ; ;  # ä.bc--de.f
-a.b.̈c.d; ; [V5]; a.b.xn--c-bcb.d; ; ;  # a.b.̈c.d
-A.B.̈C.D; a.b.̈c.d; [V5]; a.b.xn--c-bcb.d; ; ;  # a.b.̈c.d
-A.b.̈c.d; a.b.̈c.d; [V5]; a.b.xn--c-bcb.d; ; ;  # a.b.̈c.d
-a.b.xn--c-bcb.d; a.b.̈c.d; [V5]; a.b.xn--c-bcb.d; ; ;  # a.b.̈c.d
+a.b.\u0308c.d; ; [V6]; a.b.xn--c-bcb.d; ; ;  # a.b.̈c.d
+A.B.\u0308C.D; a.b.\u0308c.d; [V6]; a.b.xn--c-bcb.d; ; ;  # a.b.̈c.d
+A.b.\u0308c.d; a.b.\u0308c.d; [V6]; a.b.xn--c-bcb.d; ; ;  # a.b.̈c.d
+a.b.xn--c-bcb.d; a.b.\u0308c.d; [V6]; a.b.xn--c-bcb.d; ; ;  # a.b.̈c.d
 A0; a0; ; ; ; ;  # a0
 0A; 0a; ; ; ; ;  # 0a
-0A.א; 0a.א; [B1]; 0a.xn--4db; ; ;  # 0a.א
-0a.א; ; [B1]; 0a.xn--4db; ; ;  # 0a.א
-0a.xn--4db; 0a.א; [B1]; 0a.xn--4db; ; ;  # 0a.א
-c.xn--0-eha.xn--4db; c.0ü.א; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
-b-.א; ; [B6, V3]; b-.xn--4db; ; ;  # b-.א
-B-.א; b-.א; [B6, V3]; b-.xn--4db; ; ;  # b-.א
-b-.xn--4db; b-.א; [B6, V3]; b-.xn--4db; ; ;  # b-.א
-d.xn----dha.xn--4db; d.ü-.א; [B6, V3]; d.xn----dha.xn--4db; ; ;  # d.ü-.א
-aא; ; [B5, B6]; xn--a-0hc; ; ;  # aא
-Aא; aא; [B5, B6]; xn--a-0hc; ; ;  # aא
-xn--a-0hc; aא; [B5, B6]; xn--a-0hc; ; ;  # aא
-אׇ; ; ; xn--vdbr; ; ;  # אׇ
-xn--vdbr; אׇ; ; xn--vdbr; ; ;  # אׇ
-א9ׇ; ; ; xn--9-ihcz; ; ;  # א9ׇ
-xn--9-ihcz; א9ׇ; ; xn--9-ihcz; ; ;  # א9ׇ
-אaׇ; ; [B2, B3]; xn--a-ihcz; ; ;  # אaׇ
-אAׇ; אaׇ; [B2, B3]; xn--a-ihcz; ; ;  # אaׇ
-xn--a-ihcz; אaׇ; [B2, B3]; xn--a-ihcz; ; ;  # אaׇ
-את; ; ; xn--4db6c; ; ;  # את
-xn--4db6c; את; ; xn--4db6c; ; ;  # את
-א׳ת; ; ; xn--4db6c0a; ; ;  # א׳ת
-xn--4db6c0a; א׳ת; ; xn--4db6c0a; ; ;  # א׳ת
-aאTz; aאtz; [B5]; xn--atz-qpe; ; ;  # aאtz
-aאtz; ; [B5]; xn--atz-qpe; ; ;  # aאtz
-AאTZ; aאtz; [B5]; xn--atz-qpe; ; ;  # aאtz
-Aאtz; aאtz; [B5]; xn--atz-qpe; ; ;  # aאtz
-xn--atz-qpe; aאtz; [B5]; xn--atz-qpe; ; ;  # aאtz
-אTת; אtת; [B2]; xn--t-zhc3f; ; ;  # אtת
-אtת; ; [B2]; xn--t-zhc3f; ; ;  # אtת
-xn--t-zhc3f; אtת; [B2]; xn--t-zhc3f; ; ;  # אtת
-א7ת; ; ; xn--7-zhc3f; ; ;  # א7ת
-xn--7-zhc3f; א7ת; ; xn--7-zhc3f; ; ;  # א7ת
-א٧ת; ; ; xn--4db6c6t; ; ;  # א٧ת
-xn--4db6c6t; א٧ת; ; xn--4db6c6t; ; ;  # א٧ת
-a7٧z; ; [B5]; xn--a7z-06e; ; ;  # a7٧z
-A7٧Z; a7٧z; [B5]; xn--a7z-06e; ; ;  # a7٧z
-A7٧z; a7٧z; [B5]; xn--a7z-06e; ; ;  # a7٧z
-xn--a7z-06e; a7٧z; [B5]; xn--a7z-06e; ; ;  # a7٧z
-א7٧ת; ; [B4]; xn--7-zhc3fty; ; ;  # א7٧ת
-xn--7-zhc3fty; א7٧ת; [B4]; xn--7-zhc3fty; ; ;  # א7٧ת
-ஹ்‍; ; ; xn--dmc4b194h; ; xn--dmc4b;  # ஹ்
-xn--dmc4b; ஹ்; ; xn--dmc4b; ; ;  # ஹ்
-ஹ்; ; ; xn--dmc4b; ; ;  # ஹ்
-xn--dmc4b194h; ஹ்‍; ; xn--dmc4b194h; ; ;  # ஹ்
-ஹ‍; ; [C2]; xn--dmc225h; ; xn--dmc; [] # ஹ
+0A.\u05D0; 0a.\u05D0; [B1]; 0a.xn--4db; ; ;  # 0a.א
+0a.\u05D0; ; [B1]; 0a.xn--4db; ; ;  # 0a.א
+0a.xn--4db; 0a.\u05D0; [B1]; 0a.xn--4db; ; ;  # 0a.א
+c.xn--0-eha.xn--4db; c.0ü.\u05D0; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
+b-.\u05D0; ; [B6, V3]; b-.xn--4db; ; ;  # b-.א
+B-.\u05D0; b-.\u05D0; [B6, V3]; b-.xn--4db; ; ;  # b-.א
+b-.xn--4db; b-.\u05D0; [B6, V3]; b-.xn--4db; ; ;  # b-.א
+d.xn----dha.xn--4db; d.ü-.\u05D0; [B6, V3]; d.xn----dha.xn--4db; ; ;  # d.ü-.א
+a\u05D0; ; [B5, B6]; xn--a-0hc; ; ;  # aא
+A\u05D0; a\u05D0; [B5, B6]; xn--a-0hc; ; ;  # aא
+xn--a-0hc; a\u05D0; [B5, B6]; xn--a-0hc; ; ;  # aא
+\u05D0\u05C7; ; ; xn--vdbr; ; ;  # אׇ
+xn--vdbr; \u05D0\u05C7; ; xn--vdbr; ; ;  # אׇ
+\u05D09\u05C7; ; ; xn--9-ihcz; ; ;  # א9ׇ
+xn--9-ihcz; \u05D09\u05C7; ; xn--9-ihcz; ; ;  # א9ׇ
+\u05D0a\u05C7; ; [B2, B3]; xn--a-ihcz; ; ;  # אaׇ
+\u05D0A\u05C7; \u05D0a\u05C7; [B2, B3]; xn--a-ihcz; ; ;  # אaׇ
+xn--a-ihcz; \u05D0a\u05C7; [B2, B3]; xn--a-ihcz; ; ;  # אaׇ
+\u05D0\u05EA; ; ; xn--4db6c; ; ;  # את
+xn--4db6c; \u05D0\u05EA; ; xn--4db6c; ; ;  # את
+\u05D0\u05F3\u05EA; ; ; xn--4db6c0a; ; ;  # א׳ת
+xn--4db6c0a; \u05D0\u05F3\u05EA; ; xn--4db6c0a; ; ;  # א׳ת
+a\u05D0Tz; a\u05D0tz; [B5]; xn--atz-qpe; ; ;  # aאtz
+a\u05D0tz; ; [B5]; xn--atz-qpe; ; ;  # aאtz
+A\u05D0TZ; a\u05D0tz; [B5]; xn--atz-qpe; ; ;  # aאtz
+A\u05D0tz; a\u05D0tz; [B5]; xn--atz-qpe; ; ;  # aאtz
+xn--atz-qpe; a\u05D0tz; [B5]; xn--atz-qpe; ; ;  # aאtz
+\u05D0T\u05EA; \u05D0t\u05EA; [B2]; xn--t-zhc3f; ; ;  # אtת
+\u05D0t\u05EA; ; [B2]; xn--t-zhc3f; ; ;  # אtת
+xn--t-zhc3f; \u05D0t\u05EA; [B2]; xn--t-zhc3f; ; ;  # אtת
+\u05D07\u05EA; ; ; xn--7-zhc3f; ; ;  # א7ת
+xn--7-zhc3f; \u05D07\u05EA; ; xn--7-zhc3f; ; ;  # א7ת
+\u05D0\u0667\u05EA; ; ; xn--4db6c6t; ; ;  # א٧ת
+xn--4db6c6t; \u05D0\u0667\u05EA; ; xn--4db6c6t; ; ;  # א٧ת
+a7\u0667z; ; [B5]; xn--a7z-06e; ; ;  # a7٧z
+A7\u0667Z; a7\u0667z; [B5]; xn--a7z-06e; ; ;  # a7٧z
+A7\u0667z; a7\u0667z; [B5]; xn--a7z-06e; ; ;  # a7٧z
+xn--a7z-06e; a7\u0667z; [B5]; xn--a7z-06e; ; ;  # a7٧z
+\u05D07\u0667\u05EA; ; [B4]; xn--7-zhc3fty; ; ;  # א7٧ת
+xn--7-zhc3fty; \u05D07\u0667\u05EA; [B4]; xn--7-zhc3fty; ; ;  # א7٧ת
+ஹ\u0BCD\u200D; ; ; xn--dmc4b194h; ; xn--dmc4b;  # ஹ்
+xn--dmc4b; ஹ\u0BCD; ; xn--dmc4b; ; ;  # ஹ்
+ஹ\u0BCD; ; ; xn--dmc4b; ; ;  # ஹ்
+xn--dmc4b194h; ஹ\u0BCD\u200D; ; xn--dmc4b194h; ; ;  # ஹ்
+ஹ\u200D; ; [C2]; xn--dmc225h; ; xn--dmc; [] # ஹ
 xn--dmc; ஹ; ; xn--dmc; ; ;  # ஹ
 ஹ; ; ; xn--dmc; ; ;  # ஹ
-xn--dmc225h; ஹ‍; [C2]; xn--dmc225h; ; ;  # ஹ
-‍; ; [C2]; xn--1ug; ; ; [A4_2] # 
-; ; [X4_2]; ; [A4_2]; ;  # 
-xn--1ug; ‍; [C2]; xn--1ug; ; ;  # 
-ஹ்‌; ; ; xn--dmc4by94h; ; xn--dmc4b;  # ஹ்
-xn--dmc4by94h; ஹ்‌; ; xn--dmc4by94h; ; ;  # ஹ்
-ஹ‌; ; [C1]; xn--dmc025h; ; xn--dmc; [] # ஹ
-xn--dmc025h; ஹ‌; [C1]; xn--dmc025h; ; ;  # ஹ
-‌; ; [C1]; xn--0ug; ; ; [A4_2] # 
-xn--0ug; ‌; [C1]; xn--0ug; ; ;  # 
-لٰ‌ۭۯ; ; ; xn--ghb2gxqia7523a; ; xn--ghb2gxqia;  # لٰۭۯ
-xn--ghb2gxqia; لٰۭۯ; ; xn--ghb2gxqia; ; ;  # لٰۭۯ
-لٰۭۯ; ; ; xn--ghb2gxqia; ; ;  # لٰۭۯ
-xn--ghb2gxqia7523a; لٰ‌ۭۯ; ; xn--ghb2gxqia7523a; ; ;  # لٰۭۯ
-لٰ‌ۯ; ; ; xn--ghb2g3qq34f; ; xn--ghb2g3q;  # لٰۯ
-xn--ghb2g3q; لٰۯ; ; xn--ghb2g3q; ; ;  # لٰۯ
-لٰۯ; ; ; xn--ghb2g3q; ; ;  # لٰۯ
-xn--ghb2g3qq34f; لٰ‌ۯ; ; xn--ghb2g3qq34f; ; ;  # لٰۯ
-ل‌ۭۯ; ; ; xn--ghb25aga828w; ; xn--ghb25aga;  # لۭۯ
-xn--ghb25aga; لۭۯ; ; xn--ghb25aga; ; ;  # لۭۯ
-لۭۯ; ; ; xn--ghb25aga; ; ;  # لۭۯ
-xn--ghb25aga828w; ل‌ۭۯ; ; xn--ghb25aga828w; ; ;  # لۭۯ
-ل‌ۯ; ; ; xn--ghb65a953d; ; xn--ghb65a;  # لۯ
-xn--ghb65a; لۯ; ; xn--ghb65a; ; ;  # لۯ
-لۯ; ; ; xn--ghb65a; ; ;  # لۯ
-xn--ghb65a953d; ل‌ۯ; ; xn--ghb65a953d; ; ;  # لۯ
-لٰ‌ۭ; ; [B3, C1]; xn--ghb2gxqy34f; ; xn--ghb2gxq; [] # لٰۭ
-xn--ghb2gxq; لٰۭ; ; xn--ghb2gxq; ; ;  # لٰۭ
-لٰۭ; ; ; xn--ghb2gxq; ; ;  # لٰۭ
-xn--ghb2gxqy34f; لٰ‌ۭ; [B3, C1]; xn--ghb2gxqy34f; ; ;  # لٰۭ
-ۯ‌ۯ; ; [C1]; xn--cmba004q; ; xn--cmba; [] # ۯۯ
-xn--cmba; ۯۯ; ; xn--cmba; ; ;  # ۯۯ
-ۯۯ; ; ; xn--cmba; ; ;  # ۯۯ
-xn--cmba004q; ۯ‌ۯ; [C1]; xn--cmba004q; ; ;  # ۯۯ
-ل‌; ; [B3, C1]; xn--ghb413k; ; xn--ghb; [] # ل
-xn--ghb; ل; ; xn--ghb; ; ;  # ل
-ل; ; ; xn--ghb; ; ;  # ل
-xn--ghb413k; ل‌; [B3, C1]; xn--ghb413k; ; ;  # ل
+xn--dmc225h; ஹ\u200D; [C2]; xn--dmc225h; ; ;  # ஹ
+\u200D; ; [C2]; xn--1ug; ; ""; [A4_1, A4_2] # 
+xn--1ug; \u200D; [C2]; xn--1ug; ; ;  # 
+ஹ\u0BCD\u200C; ; ; xn--dmc4by94h; ; xn--dmc4b;  # ஹ்
+xn--dmc4by94h; ஹ\u0BCD\u200C; ; xn--dmc4by94h; ; ;  # ஹ்
+ஹ\u200C; ; [C1]; xn--dmc025h; ; xn--dmc; [] # ஹ
+xn--dmc025h; ஹ\u200C; [C1]; xn--dmc025h; ; ;  # ஹ
+\u200C; ; [C1]; xn--0ug; ; ""; [A4_1, A4_2] # 
+xn--0ug; \u200C; [C1]; xn--0ug; ; ;  # 
+\u0644\u0670\u200C\u06ED\u06EF; ; ; xn--ghb2gxqia7523a; ; xn--ghb2gxqia;  # لٰۭۯ
+xn--ghb2gxqia; \u0644\u0670\u06ED\u06EF; ; xn--ghb2gxqia; ; ;  # لٰۭۯ
+\u0644\u0670\u06ED\u06EF; ; ; xn--ghb2gxqia; ; ;  # لٰۭۯ
+xn--ghb2gxqia7523a; \u0644\u0670\u200C\u06ED\u06EF; ; xn--ghb2gxqia7523a; ; ;  # لٰۭۯ
+\u0644\u0670\u200C\u06EF; ; ; xn--ghb2g3qq34f; ; xn--ghb2g3q;  # لٰۯ
+xn--ghb2g3q; \u0644\u0670\u06EF; ; xn--ghb2g3q; ; ;  # لٰۯ
+\u0644\u0670\u06EF; ; ; xn--ghb2g3q; ; ;  # لٰۯ
+xn--ghb2g3qq34f; \u0644\u0670\u200C\u06EF; ; xn--ghb2g3qq34f; ; ;  # لٰۯ
+\u0644\u200C\u06ED\u06EF; ; ; xn--ghb25aga828w; ; xn--ghb25aga;  # لۭۯ
+xn--ghb25aga; \u0644\u06ED\u06EF; ; xn--ghb25aga; ; ;  # لۭۯ
+\u0644\u06ED\u06EF; ; ; xn--ghb25aga; ; ;  # لۭۯ
+xn--ghb25aga828w; \u0644\u200C\u06ED\u06EF; ; xn--ghb25aga828w; ; ;  # لۭۯ
+\u0644\u200C\u06EF; ; ; xn--ghb65a953d; ; xn--ghb65a;  # لۯ
+xn--ghb65a; \u0644\u06EF; ; xn--ghb65a; ; ;  # لۯ
+\u0644\u06EF; ; ; xn--ghb65a; ; ;  # لۯ
+xn--ghb65a953d; \u0644\u200C\u06EF; ; xn--ghb65a953d; ; ;  # لۯ
+\u0644\u0670\u200C\u06ED; ; [B3, C1]; xn--ghb2gxqy34f; ; xn--ghb2gxq; [] # لٰۭ
+xn--ghb2gxq; \u0644\u0670\u06ED; ; xn--ghb2gxq; ; ;  # لٰۭ
+\u0644\u0670\u06ED; ; ; xn--ghb2gxq; ; ;  # لٰۭ
+xn--ghb2gxqy34f; \u0644\u0670\u200C\u06ED; [B3, C1]; xn--ghb2gxqy34f; ; ;  # لٰۭ
+\u06EF\u200C\u06EF; ; [C1]; xn--cmba004q; ; xn--cmba; [] # ۯۯ
+xn--cmba; \u06EF\u06EF; ; xn--cmba; ; ;  # ۯۯ
+\u06EF\u06EF; ; ; xn--cmba; ; ;  # ۯۯ
+xn--cmba004q; \u06EF\u200C\u06EF; [C1]; xn--cmba004q; ; ;  # ۯۯ
+\u0644\u200C; ; [B3, C1]; xn--ghb413k; ; xn--ghb; [] # ل
+xn--ghb; \u0644; ; xn--ghb; ; ;  # ل
+\u0644; ; ; xn--ghb; ; ;  # ل
+xn--ghb413k; \u0644\u200C; [B3, C1]; xn--ghb413k; ; ;  # ل
 a。。b; a..b; [X4_2]; ; [A4_2]; ;  # a..b
 A。。B; a..b; [X4_2]; ; [A4_2]; ;  # a..b
 a..b; ; [X4_2]; ; [A4_2]; ;  # a..b
-‍。。ڹ‌; ‍..ڹ‌; [B1, B3, C1, C2, X4_2]; xn--1ug..xn--skb080k; [B1, B3, C1, C2, A4_2]; ..xn--skb; [A4_2] # ..ڹ
-..xn--skb; ..ڹ; [X4_2]; ..xn--skb; [A4_2]; ;  # ..ڹ
-xn--1ug..xn--skb080k; ‍..ڹ‌; [B1, B3, C1, C2, X4_2]; xn--1ug..xn--skb080k; [B1, B3, C1, C2, A4_2]; ;  # ..ڹ
-א0٠; ; [B4]; xn--0-zhc74b; ; ;  # א0٠
-xn--0-zhc74b; א0٠; [B4]; xn--0-zhc74b; ; ;  # א0٠
-$; ; [P1, V6]; ; ; ;  # $
+\u200D。。\u06B9\u200C; \u200D..\u06B9\u200C; [B1, B3, C1, C2, X4_2]; xn--1ug..xn--skb080k; [B1, B3, C1, C2, A4_2]; ..xn--skb; [A4_2] # ..ڹ
+..xn--skb; ..\u06B9; [X4_2]; ..xn--skb; [A4_2]; ;  # ..ڹ
+xn--1ug..xn--skb080k; \u200D..\u06B9\u200C; [B1, B3, C1, C2, X4_2]; xn--1ug..xn--skb080k; [B1, B3, C1, C2, A4_2]; ;  # ..ڹ
+\u05D00\u0660; ; [B4]; xn--0-zhc74b; ; ;  # א0٠
+xn--0-zhc74b; \u05D00\u0660; [B4]; xn--0-zhc74b; ; ;  # א0٠
+$; ; [U1]; ; ; ;  # $
+⑷.four; (4).four; [U1]; ; ; ;  # (4).four
+(4).four; ; [U1]; ; ; ;  # (4).four
+⑷.FOUR; (4).four; [U1]; ; ; ;  # (4).four
+⑷.Four; (4).four; [U1]; ; ; ;  # (4).four
+a\uD900z; ; [V7]; ; [V7, A3]; ;  # az
+A\uD900Z; a\uD900z; [V7]; ; [V7, A3]; ;  # az
+xn--; ""; [P4, X4_2]; ; [P4, A4_1, A4_2]; ;  # 
+xn---; ; [P4]; ; ; ;  # xn---
+xn--ASCII-; ascii; [P4]; ; ; ;  # ascii
+ascii; ; ; ; ; ;  # ascii
+xn--unicode-.org; unicode.org; [P4]; ; ; ;  # unicode.org
+unicode.org; ; ; ; ; ;  # unicode.org
+陋㛼当𤎫竮䗗; 陋㛼当𤎫竮䗗; ; xn--snl253bgitxhzwu2arn60c; ; ;  # 陋㛼当𤎫竮䗗
+陋㛼当𤎫竮䗗; ; ; xn--snl253bgitxhzwu2arn60c; ; ;  # 陋㛼当𤎫竮䗗
+xn--snl253bgitxhzwu2arn60c; 陋㛼当𤎫竮䗗; ; xn--snl253bgitxhzwu2arn60c; ; ;  # 陋㛼当𤎫竮䗗
+電𡍪弳䎫窮䵗; ; ; xn--kbo60w31ob3z6t3av9z5b; ; ;  # 電𡍪弳䎫窮䵗
+xn--kbo60w31ob3z6t3av9z5b; 電𡍪弳䎫窮䵗; ; xn--kbo60w31ob3z6t3av9z5b; ; ;  # 電𡍪弳䎫窮䵗
+xn--A-1ga; aö; ; xn--a-1ga; ; ;  # aö
+aö; ; ; xn--a-1ga; ; ;  # aö
+ao\u0308; aö; ; xn--a-1ga; ; ;  # aö
+AO\u0308; aö; ; xn--a-1ga; ; ;  # aö
+AÖ; aö; ; xn--a-1ga; ; ;  # aö
+Aö; aö; ; xn--a-1ga; ; ;  # aö
+Ao\u0308; aö; ; xn--a-1ga; ; ;  # aö
+＝\u0338; ≠; ; xn--1ch; ; ;  # ≠
+≠; ; ; xn--1ch; ; ;  # ≠
+=\u0338; ≠; ; xn--1ch; ; ;  # ≠
+xn--1ch; ≠; ; xn--1ch; ; ;  # ≠
 
 # RANDOMIZED TESTS
 
-c.0ü.א; ; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
-c.0ü.א; c.0ü.א; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
-C.0Ü.א; c.0ü.א; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
-C.0Ü.א; c.0ü.א; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
-C.0ü.א; c.0ü.א; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
-C.0ü.א; c.0ü.א; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
-⒕∝ٟ򓤦．-󠄯; ⒕∝ٟ򓤦.-; [P1, V3, V6]; xn--7hb713lfwbi1311b.-; ; ;  # ⒕∝ٟ.-
-14.∝ٟ򓤦.-󠄯; 14.∝ٟ򓤦.-; [P1, V3, V6]; 14.xn--7hb713l3v90n.-; ; ;  # 14.∝ٟ.-
-14.xn--7hb713l3v90n.-; 14.∝ٟ򓤦.-; [V3, V6]; 14.xn--7hb713l3v90n.-; ; ;  # 14.∝ٟ.-
-xn--7hb713lfwbi1311b.-; ⒕∝ٟ򓤦.-; [V3, V6]; xn--7hb713lfwbi1311b.-; ; ;  # ⒕∝ٟ.-
-ꡣ.ߏ; ; ; xn--8c9a.xn--qsb; ; ;  # ꡣ.ߏ
-xn--8c9a.xn--qsb; ꡣ.ߏ; ; xn--8c9a.xn--qsb; ; ;  # ꡣ.ߏ
-≯؃｡-; ≯؃.-; [B1, P1, V3, V6]; xn--lfb566l.-; ; ;  # ≯.-
-≯؃｡-; ≯؃.-; [B1, P1, V3, V6]; xn--lfb566l.-; ; ;  # ≯.-
-≯؃。-; ≯؃.-; [B1, P1, V3, V6]; xn--lfb566l.-; ; ;  # ≯.-
-≯؃。-; ≯؃.-; [B1, P1, V3, V6]; xn--lfb566l.-; ; ;  # ≯.-
-xn--lfb566l.-; ≯؃.-; [B1, V3, V6]; xn--lfb566l.-; ; ;  # ≯.-
-⾛𐹧⾕.ᅟ󠗰ςႭ; 走𐹧谷.ᅟ󠗰ςႭ; [B5, P1, V6]; xn--6g3a1x434z.xn--3xa827dhpae6345i; ; xn--6g3a1x434z.xn--4xa627dhpae6345i;  # 走𐹧谷.ςႭ
-走𐹧谷.ᅟ󠗰ςႭ; ; [B5, P1, V6]; xn--6g3a1x434z.xn--3xa827dhpae6345i; ; xn--6g3a1x434z.xn--4xa627dhpae6345i;  # 走𐹧谷.ςႭ
-走𐹧谷.ᅟ󠗰ςⴍ; ; [B5, P1, V6]; xn--6g3a1x434z.xn--3xa380eotvh7453a; ; xn--6g3a1x434z.xn--4xa180eotvh7453a;  # 走𐹧谷.ςⴍ
-走𐹧谷.ᅟ󠗰ΣႭ; 走𐹧谷.ᅟ󠗰σႭ; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa627dhpae6345i; ; ;  # 走𐹧谷.σႭ
-走𐹧谷.ᅟ󠗰σⴍ; ; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ;  # 走𐹧谷.σⴍ
-走𐹧谷.ᅟ󠗰Σⴍ; 走𐹧谷.ᅟ󠗰σⴍ; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ;  # 走𐹧谷.σⴍ
-xn--6g3a1x434z.xn--4xa180eotvh7453a; 走𐹧谷.ᅟ󠗰σⴍ; [B5, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ;  # 走𐹧谷.σⴍ
-xn--6g3a1x434z.xn--4xa627dhpae6345i; 走𐹧谷.ᅟ󠗰σႭ; [B5, V6]; xn--6g3a1x434z.xn--4xa627dhpae6345i; ; ;  # 走𐹧谷.σႭ
-xn--6g3a1x434z.xn--3xa380eotvh7453a; 走𐹧谷.ᅟ󠗰ςⴍ; [B5, V6]; xn--6g3a1x434z.xn--3xa380eotvh7453a; ; ;  # 走𐹧谷.ςⴍ
-xn--6g3a1x434z.xn--3xa827dhpae6345i; 走𐹧谷.ᅟ󠗰ςႭ; [B5, V6]; xn--6g3a1x434z.xn--3xa827dhpae6345i; ; ;  # 走𐹧谷.ςႭ
-⾛𐹧⾕.ᅟ󠗰ςⴍ; 走𐹧谷.ᅟ󠗰ςⴍ; [B5, P1, V6]; xn--6g3a1x434z.xn--3xa380eotvh7453a; ; xn--6g3a1x434z.xn--4xa180eotvh7453a;  # 走𐹧谷.ςⴍ
-⾛𐹧⾕.ᅟ󠗰ΣႭ; 走𐹧谷.ᅟ󠗰σႭ; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa627dhpae6345i; ; ;  # 走𐹧谷.σႭ
-⾛𐹧⾕.ᅟ󠗰σⴍ; 走𐹧谷.ᅟ󠗰σⴍ; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ;  # 走𐹧谷.σⴍ
-⾛𐹧⾕.ᅟ󠗰Σⴍ; 走𐹧谷.ᅟ󠗰σⴍ; [B5, P1, V6]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ;  # 走𐹧谷.σⴍ
-‍≠ᢙ≯.솣-ᡴႠ; ; [C2, P1, V6]; xn--jbf929a90b0b.xn----6zg521d196p; ; xn--jbf911clb.xn----6zg521d196p; [P1, V6] # ≠ᢙ≯.솣-ᡴႠ
-‍≠ᢙ≯.솣-ᡴႠ; ‍≠ᢙ≯.솣-ᡴႠ; [C2, P1, V6]; xn--jbf929a90b0b.xn----6zg521d196p; ; xn--jbf911clb.xn----6zg521d196p; [P1, V6] # ≠ᢙ≯.솣-ᡴႠ
-‍≠ᢙ≯.솣-ᡴⴀ; ‍≠ᢙ≯.솣-ᡴⴀ; [C2, P1, V6]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; xn--jbf911clb.xn----p9j493ivi4l; [P1, V6] # ≠ᢙ≯.솣-ᡴⴀ
-‍≠ᢙ≯.솣-ᡴⴀ; ; [C2, P1, V6]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; xn--jbf911clb.xn----p9j493ivi4l; [P1, V6] # ≠ᢙ≯.솣-ᡴⴀ
-xn--jbf911clb.xn----p9j493ivi4l; ≠ᢙ≯.솣-ᡴⴀ; [V6]; xn--jbf911clb.xn----p9j493ivi4l; ; ;  # ≠ᢙ≯.솣-ᡴⴀ
-xn--jbf929a90b0b.xn----p9j493ivi4l; ‍≠ᢙ≯.솣-ᡴⴀ; [C2, V6]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; ;  # ≠ᢙ≯.솣-ᡴⴀ
-xn--jbf911clb.xn----6zg521d196p; ≠ᢙ≯.솣-ᡴႠ; [V6]; xn--jbf911clb.xn----6zg521d196p; ; ;  # ≠ᢙ≯.솣-ᡴႠ
-xn--jbf929a90b0b.xn----6zg521d196p; ‍≠ᢙ≯.솣-ᡴႠ; [C2, V6]; xn--jbf929a90b0b.xn----6zg521d196p; ; ;  # ≠ᢙ≯.솣-ᡴႠ
-񯞜．𐿇ྡྷݽ؀; 񯞜.𐿇ྡྷݽ؀; [P1, V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ;  # .𐿇ྡྷݽ
-񯞜．𐿇ྡྷݽ؀; 񯞜.𐿇ྡྷݽ؀; [P1, V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ;  # .𐿇ྡྷݽ
-񯞜.𐿇ྡྷݽ؀; ; [P1, V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ;  # .𐿇ྡྷݽ
-xn--gw68a.xn--ifb57ev2psc6027m; 񯞜.𐿇ྡྷݽ؀; [V6]; xn--gw68a.xn--ifb57ev2psc6027m; ; ;  # .𐿇ྡྷݽ
-𣳔̃.𑓂; ; [V5]; xn--nsa95820a.xn--wz1d; ; ;  # 𣳔̃.𑓂
-xn--nsa95820a.xn--wz1d; 𣳔̃.𑓂; [V5]; xn--nsa95820a.xn--wz1d; ; ;  # 𣳔̃.𑓂
-𞤀𞥅񘐱。󠄌Ⴣꡥ; 𞤢𞥅񘐱.Ⴣꡥ; [B2, B3, P1, V6]; xn--9d6hgcy3556a.xn--7nd0578e; ; ;  # 𞤢𞥅.Ⴣꡥ
-𞤢𞥅񘐱。󠄌ⴣꡥ; 𞤢𞥅񘐱.ⴣꡥ; [B2, B3, P1, V6]; xn--9d6hgcy3556a.xn--rlju750b; ; ;  # 𞤢𞥅.ⴣꡥ
-xn--9d6hgcy3556a.xn--rlju750b; 𞤢𞥅񘐱.ⴣꡥ; [B2, B3, V6]; xn--9d6hgcy3556a.xn--rlju750b; ; ;  # 𞤢𞥅.ⴣꡥ
-xn--9d6hgcy3556a.xn--7nd0578e; 𞤢𞥅񘐱.Ⴣꡥ; [B2, B3, V6]; xn--9d6hgcy3556a.xn--7nd0578e; ; ;  # 𞤢𞥅.Ⴣꡥ
-𞤀𞥅񘐱。󠄌ⴣꡥ; 𞤢𞥅񘐱.ⴣꡥ; [B2, B3, P1, V6]; xn--9d6hgcy3556a.xn--rlju750b; ; ;  # 𞤢𞥅.ⴣꡥ
-࣢𑁿ς𖬱。󠅡렧; ࣢𑁿ς𖬱.렧; [B1, P1, V6]; xn--3xa73xp48ys2xc.xn--kn2b; ; xn--4xa53xp48ys2xc.xn--kn2b;  # 𑁿ς𖬱.렧
-࣢𑁿ς𖬱。󠅡렧; ࣢𑁿ς𖬱.렧; [B1, P1, V6]; xn--3xa73xp48ys2xc.xn--kn2b; ; xn--4xa53xp48ys2xc.xn--kn2b;  # 𑁿ς𖬱.렧
-࣢𑁿Σ𖬱。󠅡렧; ࣢𑁿σ𖬱.렧; [B1, P1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ;  # 𑁿σ𖬱.렧
-࣢𑁿Σ𖬱。󠅡렧; ࣢𑁿σ𖬱.렧; [B1, P1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ;  # 𑁿σ𖬱.렧
-࣢𑁿σ𖬱。󠅡렧; ࣢𑁿σ𖬱.렧; [B1, P1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ;  # 𑁿σ𖬱.렧
-࣢𑁿σ𖬱。󠅡렧; ࣢𑁿σ𖬱.렧; [B1, P1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ;  # 𑁿σ𖬱.렧
-xn--4xa53xp48ys2xc.xn--kn2b; ࣢𑁿σ𖬱.렧; [B1, V6]; xn--4xa53xp48ys2xc.xn--kn2b; ; ;  # 𑁿σ𖬱.렧
-xn--3xa73xp48ys2xc.xn--kn2b; ࣢𑁿ς𖬱.렧; [B1, V6]; xn--3xa73xp48ys2xc.xn--kn2b; ; ;  # 𑁿ς𖬱.렧
--‍。𞤍‌‍⒈; -‍.𞤯‌‍⒈; [B1, C1, C2, P1, V3, V6]; xn----ugn.xn--0ugc555aiv51d; ; -.xn--tsh3666n; [B1, P1, V3, V6] # -.𞤯⒈
--‍。𞤍‌‍1.; -‍.𞤯‌‍1.; [B1, C1, C2, V3]; xn----ugn.xn--1-rgnd61297b.; ; -.xn--1-0i8r.; [B1, V3] # -.𞤯1.
--‍。𞤯‌‍1.; -‍.𞤯‌‍1.; [B1, C1, C2, V3]; xn----ugn.xn--1-rgnd61297b.; ; -.xn--1-0i8r.; [B1, V3] # -.𞤯1.
--.xn--1-0i8r.; -.𞤯1.; [B1, V3]; -.xn--1-0i8r.; ; ;  # -.𞤯1.
-xn----ugn.xn--1-rgnd61297b.; -‍.𞤯‌‍1.; [B1, C1, C2, V3]; xn----ugn.xn--1-rgnd61297b.; ; ;  # -.𞤯1.
--‍。𞤯‌‍⒈; -‍.𞤯‌‍⒈; [B1, C1, C2, P1, V3, V6]; xn----ugn.xn--0ugc555aiv51d; ; -.xn--tsh3666n; [B1, P1, V3, V6] # -.𞤯⒈
--.xn--tsh3666n; -.𞤯⒈; [B1, V3, V6]; -.xn--tsh3666n; ; ;  # -.𞤯⒈
-xn----ugn.xn--0ugc555aiv51d; -‍.𞤯‌‍⒈; [B1, C1, C2, V3, V6]; xn----ugn.xn--0ugc555aiv51d; ; ;  # -.𞤯⒈
-‌򅎭.Ⴒ𑇀; ; [C1, P1, V6]; xn--0ug15083f.xn--qnd6272k; ; xn--bn95b.xn--qnd6272k; [P1, V6] # .Ⴒ𑇀
-‌򅎭.ⴒ𑇀; ; [C1, P1, V6]; xn--0ug15083f.xn--9kj2034e; ; xn--bn95b.xn--9kj2034e; [P1, V6] # .ⴒ𑇀
-xn--bn95b.xn--9kj2034e; 򅎭.ⴒ𑇀; [V6]; xn--bn95b.xn--9kj2034e; ; ;  # .ⴒ𑇀
-xn--0ug15083f.xn--9kj2034e; ‌򅎭.ⴒ𑇀; [C1, V6]; xn--0ug15083f.xn--9kj2034e; ; ;  # .ⴒ𑇀
-xn--bn95b.xn--qnd6272k; 򅎭.Ⴒ𑇀; [V6]; xn--bn95b.xn--qnd6272k; ; ;  # .Ⴒ𑇀
-xn--0ug15083f.xn--qnd6272k; ‌򅎭.Ⴒ𑇀; [C1, V6]; xn--0ug15083f.xn--qnd6272k; ; ;  # .Ⴒ𑇀
-繱𑖿‍.８︒; 繱𑖿‍.8︒; [P1, V6]; xn--1ug6928ac48e.xn--8-o89h; ; xn--gl0as212a.xn--8-o89h;  # 繱𑖿.8︒
-繱𑖿‍.8。; 繱𑖿‍.8.; ; xn--1ug6928ac48e.8.; ; xn--gl0as212a.8.;  # 繱𑖿.8.
-xn--gl0as212a.8.; 繱𑖿.8.; ; xn--gl0as212a.8.; ; ;  # 繱𑖿.8.
-繱𑖿.8.; ; ; xn--gl0as212a.8.; ; ;  # 繱𑖿.8.
-xn--1ug6928ac48e.8.; 繱𑖿‍.8.; ; xn--1ug6928ac48e.8.; ; ;  # 繱𑖿.8.
-繱𑖿‍.8.; ; ; xn--1ug6928ac48e.8.; ; xn--gl0as212a.8.;  # 繱𑖿.8.
-xn--gl0as212a.xn--8-o89h; 繱𑖿.8︒; [V6]; xn--gl0as212a.xn--8-o89h; ; ;  # 繱𑖿.8︒
-xn--1ug6928ac48e.xn--8-o89h; 繱𑖿‍.8︒; [V6]; xn--1ug6928ac48e.xn--8-o89h; ; ;  # 繱𑖿.8︒
-󠆾．𞀈; .𞀈; [V5, X4_2]; .xn--ph4h; [V5, A4_2]; ;  # .𞀈
-󠆾.𞀈; .𞀈; [V5, X4_2]; .xn--ph4h; [V5, A4_2]; ;  # .𞀈
-.xn--ph4h; .𞀈; [V5, X4_2]; .xn--ph4h; [V5, A4_2]; ;  # .𞀈
-ß۫。‍; ß۫.‍; [C2]; xn--zca012a.xn--1ug; ; xn--ss-59d.; [] # ß۫.
-SS۫。‍; ss۫.‍; [C2]; xn--ss-59d.xn--1ug; ; xn--ss-59d.; [] # ss۫.
-ss۫。‍; ss۫.‍; [C2]; xn--ss-59d.xn--1ug; ; xn--ss-59d.; [] # ss۫.
-Ss۫。‍; ss۫.‍; [C2]; xn--ss-59d.xn--1ug; ; xn--ss-59d.; [] # ss۫.
-xn--ss-59d.; ss۫.; ; xn--ss-59d.; ; ;  # ss۫.
-ss۫.; ; ; xn--ss-59d.; ; ;  # ss۫.
-SS۫.; ss۫.; ; xn--ss-59d.; ; ;  # ss۫.
-Ss۫.; ss۫.; ; xn--ss-59d.; ; ;  # ss۫.
-xn--ss-59d.xn--1ug; ss۫.‍; [C2]; xn--ss-59d.xn--1ug; ; ;  # ss۫.
-xn--zca012a.xn--1ug; ß۫.‍; [C2]; xn--zca012a.xn--1ug; ; ;  # ß۫.
-󠐵‌⒈．󠎇; 󠐵‌⒈.󠎇; [C1, P1, V6]; xn--0ug88o47900b.xn--tv36e; ; xn--tshz2001k.xn--tv36e; [P1, V6] # ⒈.
-󠐵‌1..󠎇; ; [C1, P1, V6, X4_2]; xn--1-rgn37671n..xn--tv36e; [C1, P1, V6, A4_2]; xn--1-bs31m..xn--tv36e; [P1, V6, A4_2] # 1..
-xn--1-bs31m..xn--tv36e; 󠐵1..󠎇; [V6, X4_2]; xn--1-bs31m..xn--tv36e; [V6, A4_2]; ;  # 1..
-xn--1-rgn37671n..xn--tv36e; 󠐵‌1..󠎇; [C1, V6, X4_2]; xn--1-rgn37671n..xn--tv36e; [C1, V6, A4_2]; ;  # 1..
-xn--tshz2001k.xn--tv36e; 󠐵⒈.󠎇; [V6]; xn--tshz2001k.xn--tv36e; ; ;  # ⒈.
-xn--0ug88o47900b.xn--tv36e; 󠐵‌⒈.󠎇; [C1, V6]; xn--0ug88o47900b.xn--tv36e; ; ;  # ⒈.
-󟈣ٟꪲß。󌓧; 󟈣ٟꪲß.󌓧; [P1, V6]; xn--zca92z0t7n5w96j.xn--bb79d; ; xn--ss-3xd2839nncy1m.xn--bb79d;  # ٟꪲß.
-󟈣ٟꪲSS。󌓧; 󟈣ٟꪲss.󌓧; [P1, V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ;  # ٟꪲss.
-󟈣ٟꪲss。󌓧; 󟈣ٟꪲss.󌓧; [P1, V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ;  # ٟꪲss.
-󟈣ٟꪲSs。󌓧; 󟈣ٟꪲss.󌓧; [P1, V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ;  # ٟꪲss.
-xn--ss-3xd2839nncy1m.xn--bb79d; 󟈣ٟꪲss.󌓧; [V6]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ;  # ٟꪲss.
-xn--zca92z0t7n5w96j.xn--bb79d; 󟈣ٟꪲß.󌓧; [V6]; xn--zca92z0t7n5w96j.xn--bb79d; ; ;  # ٟꪲß.
-ݴ‌𞤿。𽘐䉜‍񿤼; ݴ‌𞤿.𽘐䉜‍񿤼; [C1, C2, P1, V6]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; xn--4pb2977v.xn--z0nt555ukbnv; [P1, V6] # ݴ𞤿.䉜
-ݴ‌𞤝。𽘐䉜‍񿤼; ݴ‌𞤿.𽘐䉜‍񿤼; [C1, C2, P1, V6]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; xn--4pb2977v.xn--z0nt555ukbnv; [P1, V6] # ݴ𞤿.䉜
-xn--4pb2977v.xn--z0nt555ukbnv; ݴ𞤿.𽘐䉜񿤼; [V6]; xn--4pb2977v.xn--z0nt555ukbnv; ; ;  # ݴ𞤿.䉜
-xn--4pb607jjt73a.xn--1ug236ke314donv1a; ݴ‌𞤿.𽘐䉜‍񿤼; [C1, C2, V6]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; ;  # ݴ𞤿.䉜
-򔭜ςᡱ⒈.≮𑄳‍𐮍; ; [B1, P1, V6]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # ςᡱ⒈.≮𑄳𐮍
-򔭜ςᡱ⒈.≮𑄳‍𐮍; 򔭜ςᡱ⒈.≮𑄳‍𐮍; [B1, P1, V6]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # ςᡱ⒈.≮𑄳𐮍
-򔭜ςᡱ1..≮𑄳‍𐮍; ; [B1, P1, V6, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # ςᡱ1..≮𑄳𐮍
-򔭜ςᡱ1..≮𑄳‍𐮍; 򔭜ςᡱ1..≮𑄳‍𐮍; [B1, P1, V6, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # ςᡱ1..≮𑄳𐮍
-򔭜Σᡱ1..≮𑄳‍𐮍; 򔭜σᡱ1..≮𑄳‍𐮍; [B1, P1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # σᡱ1..≮𑄳𐮍
-򔭜Σᡱ1..≮𑄳‍𐮍; 򔭜σᡱ1..≮𑄳‍𐮍; [B1, P1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # σᡱ1..≮𑄳𐮍
-򔭜σᡱ1..≮𑄳‍𐮍; ; [B1, P1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # σᡱ1..≮𑄳𐮍
-򔭜σᡱ1..≮𑄳‍𐮍; 򔭜σᡱ1..≮𑄳‍𐮍; [B1, P1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, P1, V6, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # σᡱ1..≮𑄳𐮍
-xn--1-zmb699meq63t..xn--gdh5392g6sd; 򔭜σᡱ1..≮𑄳𐮍; [B1, V6, X4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; [B1, V6, A4_2]; ;  # σᡱ1..≮𑄳𐮍
-xn--1-zmb699meq63t..xn--1ug85gn777ahze; 򔭜σᡱ1..≮𑄳‍𐮍; [B1, V6, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V6, A4_2]; ;  # σᡱ1..≮𑄳𐮍
-xn--1-xmb999meq63t..xn--1ug85gn777ahze; 򔭜ςᡱ1..≮𑄳‍𐮍; [B1, V6, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, V6, A4_2]; ;  # ςᡱ1..≮𑄳𐮍
-򔭜Σᡱ⒈.≮𑄳‍𐮍; 򔭜σᡱ⒈.≮𑄳‍𐮍; [B1, P1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # σᡱ⒈.≮𑄳𐮍
-򔭜Σᡱ⒈.≮𑄳‍𐮍; 򔭜σᡱ⒈.≮𑄳‍𐮍; [B1, P1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # σᡱ⒈.≮𑄳𐮍
-򔭜σᡱ⒈.≮𑄳‍𐮍; ; [B1, P1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # σᡱ⒈.≮𑄳𐮍
-򔭜σᡱ⒈.≮𑄳‍𐮍; 򔭜σᡱ⒈.≮𑄳‍𐮍; [B1, P1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # σᡱ⒈.≮𑄳𐮍
-xn--4xa207hkzinr77u.xn--gdh5392g6sd; 򔭜σᡱ⒈.≮𑄳𐮍; [B1, V6]; xn--4xa207hkzinr77u.xn--gdh5392g6sd; ; ;  # σᡱ⒈.≮𑄳𐮍
-xn--4xa207hkzinr77u.xn--1ug85gn777ahze; 򔭜σᡱ⒈.≮𑄳‍𐮍; [B1, V6]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; ;  # σᡱ⒈.≮𑄳𐮍
-xn--3xa407hkzinr77u.xn--1ug85gn777ahze; 򔭜ςᡱ⒈.≮𑄳‍𐮍; [B1, V6]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; ;  # ςᡱ⒈.≮𑄳𐮍
-ㅤ्Ⴀ័.᠋; ㅤ्Ⴀ័.; [P1, V6]; xn--n3b468azngju2a.; ; ;  # ्Ⴀ័.
-ᅠ्Ⴀ័.᠋; ᅠ्Ⴀ័.; [P1, V6]; xn--n3b468aoqa89r.; ; ;  # ्Ⴀ័.
-ᅠ्ⴀ័.᠋; ᅠ्ⴀ័.; [P1, V6]; xn--n3b742bkqf4ty.; ; ;  # ्ⴀ័.
-xn--n3b742bkqf4ty.; ᅠ्ⴀ័.; [V6]; xn--n3b742bkqf4ty.; ; ;  # ्ⴀ័.
-xn--n3b468aoqa89r.; ᅠ्Ⴀ័.; [V6]; xn--n3b468aoqa89r.; ; ;  # ्Ⴀ័.
-ㅤ्ⴀ័.᠋; ㅤ्ⴀ័.; [P1, V6]; xn--n3b445e53po6d.; ; ;  # ्ⴀ័.
-xn--n3b445e53po6d.; ㅤ्ⴀ័.; [V6]; xn--n3b445e53po6d.; ; ;  # ्ⴀ័.
-xn--n3b468azngju2a.; ㅤ्Ⴀ័.; [V6]; xn--n3b468azngju2a.; ; ;  # ्Ⴀ័.
-❣‍．্𑰽ؒꤩ; ❣‍.্𑰽ؒꤩ; [C2, V5]; xn--1ugy10a.xn--0fb32q3w7q2g4d; ; xn--pei.xn--0fb32q3w7q2g4d; [V5] # ❣.্𑰽ؒꤩ
-❣‍.্𑰽ؒꤩ; ; [C2, V5]; xn--1ugy10a.xn--0fb32q3w7q2g4d; ; xn--pei.xn--0fb32q3w7q2g4d; [V5] # ❣.্𑰽ؒꤩ
-xn--pei.xn--0fb32q3w7q2g4d; ❣.্𑰽ؒꤩ; [V5]; xn--pei.xn--0fb32q3w7q2g4d; ; ;  # ❣.্𑰽ؒꤩ
-xn--1ugy10a.xn--0fb32q3w7q2g4d; ❣‍.্𑰽ؒꤩ; [C2, V5]; xn--1ugy10a.xn--0fb32q3w7q2g4d; ; ;  # ❣.্𑰽ؒꤩ
-≮𐳺𐹄.≯񪮸ꡅ; ; [B1, P1, V6]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ;  # ≮𐳺.≯ꡅ
-≮𐳺𐹄.≯񪮸ꡅ; ≮𐳺𐹄.≯񪮸ꡅ; [B1, P1, V6]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ;  # ≮𐳺.≯ꡅ
-xn--gdh7943gk2a.xn--hdh1383c5e36c; ≮𐳺𐹄.≯񪮸ꡅ; [B1, V6]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ;  # ≮𐳺.≯ꡅ
-ೌ𐧅𐳏󠲺｡್ᠦ; ೌ𐧅𐳏󠲺.್ᠦ; [B1, P1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ;  # ೌ𐧅𐳏.್ᠦ
-ೌ𐧅𐳏󠲺。್ᠦ; ೌ𐧅𐳏󠲺.್ᠦ; [B1, P1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ;  # ೌ𐧅𐳏.್ᠦ
-ೌ𐧅𐲏󠲺。್ᠦ; ೌ𐧅𐳏󠲺.್ᠦ; [B1, P1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ;  # ೌ𐧅𐳏.್ᠦ
-xn--7tc6360ky5bn2732c.xn--8tc429c; ೌ𐧅𐳏󠲺.್ᠦ; [B1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ;  # ೌ𐧅𐳏.್ᠦ
-ೌ𐧅𐲏󠲺｡್ᠦ; ೌ𐧅𐳏󠲺.್ᠦ; [B1, P1, V5, V6]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ;  # ೌ𐧅𐳏.್ᠦ
-͉。𧡫; ͉.𧡫; [V5]; xn--nua.xn--bc6k; ; ;  # ͉.𧡫
-xn--nua.xn--bc6k; ͉.𧡫; [V5]; xn--nua.xn--bc6k; ; ;  # ͉.𧡫
-𑰿󠅦．ᅠ; 𑰿.ᅠ; [P1, V5, V6]; xn--ok3d.xn--psd; ; ;  # 𑰿.
-𑰿󠅦.ᅠ; 𑰿.ᅠ; [P1, V5, V6]; xn--ok3d.xn--psd; ; ;  # 𑰿.
-xn--ok3d.xn--psd; 𑰿.ᅠ; [V5, V6]; xn--ok3d.xn--psd; ; ;  # 𑰿.
--𞤆‍。󸼄𞳒; -𞤨‍.󸼄𞳒; [B1, B5, B6, C2, P1, V3, V6]; xn----ugnx367r.xn--846h96596c; ; xn----ni8r.xn--846h96596c; [B1, B5, B6, P1, V3, V6] # -𞤨.
--𞤨‍。󸼄𞳒; -𞤨‍.󸼄𞳒; [B1, B5, B6, C2, P1, V3, V6]; xn----ugnx367r.xn--846h96596c; ; xn----ni8r.xn--846h96596c; [B1, B5, B6, P1, V3, V6] # -𞤨.
-xn----ni8r.xn--846h96596c; -𞤨.󸼄𞳒; [B1, B5, B6, V3, V6]; xn----ni8r.xn--846h96596c; ; ;  # -𞤨.
-xn----ugnx367r.xn--846h96596c; -𞤨‍.󸼄𞳒; [B1, B5, B6, C2, V3, V6]; xn----ugnx367r.xn--846h96596c; ; ;  # -𞤨.
-ꡏ󠇶≯𳾽。᷽⾇滸𐹰; ꡏ󠇶≯𳾽.᷽舛滸𐹰; [B1, P1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ;  # ꡏ≯.᷽舛滸𐹰
-ꡏ󠇶≯𳾽。᷽⾇滸𐹰; ꡏ󠇶≯𳾽.᷽舛滸𐹰; [B1, P1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ;  # ꡏ≯.᷽舛滸𐹰
-ꡏ󠇶≯𳾽。᷽舛滸𐹰; ꡏ󠇶≯𳾽.᷽舛滸𐹰; [B1, P1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ;  # ꡏ≯.᷽舛滸𐹰
-ꡏ󠇶≯𳾽。᷽舛滸𐹰; ꡏ󠇶≯𳾽.᷽舛滸𐹰; [B1, P1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ;  # ꡏ≯.᷽舛滸𐹰
-xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ꡏ󠇶≯𳾽.᷽舛滸𐹰; [B1, V5, V6]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ;  # ꡏ≯.᷽舛滸𐹰
-蔏｡𑰺; 蔏.𑰺; [V5]; xn--uy1a.xn--jk3d; ; ;  # 蔏.𑰺
-蔏。𑰺; 蔏.𑰺; [V5]; xn--uy1a.xn--jk3d; ; ;  # 蔏.𑰺
-xn--uy1a.xn--jk3d; 蔏.𑰺; [V5]; xn--uy1a.xn--jk3d; ; ;  # 蔏.𑰺
-𝟿𐮋。󠄊; 9𐮋.; [B1]; xn--9-rv5i.; ; ;  # 9𐮋.
-9𐮋。󠄊; 9𐮋.; [B1]; xn--9-rv5i.; ; ;  # 9𐮋.
-xn--9-rv5i.; 9𐮋.; [B1]; xn--9-rv5i.; ; ;  # 9𐮋.
-󟇇-䟖F。ߋ⒈٢; 󟇇-䟖f.ߋ⒈٢; [B4, P1, V6]; xn---f-mz8b08788k.xn--bib53ev44d; ; ;  # -䟖f.ߋ⒈٢
-󟇇-䟖F。ߋ1.٢; 󟇇-䟖f.ߋ1.٢; [B1, P1, V6]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ;  # -䟖f.ߋ1.٢
-󟇇-䟖f。ߋ1.٢; 󟇇-䟖f.ߋ1.٢; [B1, P1, V6]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ;  # -䟖f.ߋ1.٢
-xn---f-mz8b08788k.xn--1-ybd.xn--bib; 󟇇-䟖f.ߋ1.٢; [B1, V6]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ;  # -䟖f.ߋ1.٢
-󟇇-䟖f。ߋ⒈٢; 󟇇-䟖f.ߋ⒈٢; [B4, P1, V6]; xn---f-mz8b08788k.xn--bib53ev44d; ; ;  # -䟖f.ߋ⒈٢
-xn---f-mz8b08788k.xn--bib53ev44d; 󟇇-䟖f.ߋ⒈٢; [B4, V6]; xn---f-mz8b08788k.xn--bib53ev44d; ; ;  # -䟖f.ߋ⒈٢
-‌｡𐹺; ‌.𐹺; [B1, C1]; xn--0ug.xn--yo0d; ; .xn--yo0d; [B1, A4_2] # .𐹺
-‌。𐹺; ‌.𐹺; [B1, C1]; xn--0ug.xn--yo0d; ; .xn--yo0d; [B1, A4_2] # .𐹺
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; ; 123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c; [A4_1]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.; [A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.
+123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+123456789012345678901234567890123456789012345678901234567890123.1234567890Ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; ; 123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b; [A4_1, A4_2]; ;  # 123456789012345678901234567890123456789012345678901234567890123.1234567890ä1234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b
+c.0ü.\u05D0; ; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
+c.0u\u0308.\u05D0; c.0ü.\u05D0; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
+C.0U\u0308.\u05D0; c.0ü.\u05D0; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
+C.0Ü.\u05D0; c.0ü.\u05D0; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
+C.0ü.\u05D0; c.0ü.\u05D0; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
+C.0u\u0308.\u05D0; c.0ü.\u05D0; [B1]; c.xn--0-eha.xn--4db; ; ;  # c.0ü.א
+⒕∝\u065F򓤦．-󠄯; ⒕∝\u065F򓤦.-; [V3, V7]; xn--7hb713lfwbi1311b.-; ; ;  # ⒕∝ٟ.-
+14.∝\u065F򓤦.-󠄯; 14.∝\u065F򓤦.-; [V3, V7]; 14.xn--7hb713l3v90n.-; ; ;  # 14.∝ٟ.-
+14.xn--7hb713l3v90n.-; 14.∝\u065F򓤦.-; [V3, V7]; 14.xn--7hb713l3v90n.-; ; ;  # 14.∝ٟ.-
+xn--7hb713lfwbi1311b.-; ⒕∝\u065F򓤦.-; [V3, V7]; xn--7hb713lfwbi1311b.-; ; ;  # ⒕∝ٟ.-
+ꡣ.\u07CF; ; ; xn--8c9a.xn--qsb; ; ;  # ꡣ.ߏ
+xn--8c9a.xn--qsb; ꡣ.\u07CF; ; xn--8c9a.xn--qsb; ; ;  # ꡣ.ߏ
+≯\u0603｡-; ≯\u0603.-; [B1, V3, V7]; xn--lfb566l.-; ; ;  # ≯.-
+>\u0338\u0603｡-; ≯\u0603.-; [B1, V3, V7]; xn--lfb566l.-; ; ;  # ≯.-
+≯\u0603。-; ≯\u0603.-; [B1, V3, V7]; xn--lfb566l.-; ; ;  # ≯.-
+>\u0338\u0603。-; ≯\u0603.-; [B1, V3, V7]; xn--lfb566l.-; ; ;  # ≯.-
+xn--lfb566l.-; ≯\u0603.-; [B1, V3, V7]; xn--lfb566l.-; ; ;  # ≯.-
+⾛𐹧⾕.\u115F󠗰ςႭ; 走𐹧谷.󠗰ςⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--3xa652s5d17u; ; xn--6g3a1x434z.xn--4xa452s5d17u;  # 走𐹧谷.ςⴍ
+走𐹧谷.\u115F󠗰ςႭ; 走𐹧谷.󠗰ςⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--3xa652s5d17u; ; xn--6g3a1x434z.xn--4xa452s5d17u;  # 走𐹧谷.ςⴍ
+走𐹧谷.\u115F󠗰ςⴍ; 走𐹧谷.󠗰ςⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--3xa652s5d17u; ; xn--6g3a1x434z.xn--4xa452s5d17u;  # 走𐹧谷.ςⴍ
+走𐹧谷.\u115F󠗰ΣႭ; 走𐹧谷.󠗰σⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--4xa452s5d17u; ; ;  # 走𐹧谷.σⴍ
+走𐹧谷.\u115F󠗰σⴍ; 走𐹧谷.󠗰σⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--4xa452s5d17u; ; ;  # 走𐹧谷.σⴍ
+走𐹧谷.\u115F󠗰Σⴍ; 走𐹧谷.󠗰σⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--4xa452s5d17u; ; ;  # 走𐹧谷.σⴍ
+xn--6g3a1x434z.xn--4xa452s5d17u; 走𐹧谷.󠗰σⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--4xa452s5d17u; ; ;  # 走𐹧谷.σⴍ
+xn--6g3a1x434z.xn--3xa652s5d17u; 走𐹧谷.󠗰ςⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--3xa652s5d17u; ; ;  # 走𐹧谷.ςⴍ
+⾛𐹧⾕.\u115F󠗰ςⴍ; 走𐹧谷.󠗰ςⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--3xa652s5d17u; ; xn--6g3a1x434z.xn--4xa452s5d17u;  # 走𐹧谷.ςⴍ
+⾛𐹧⾕.\u115F󠗰ΣႭ; 走𐹧谷.󠗰σⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--4xa452s5d17u; ; ;  # 走𐹧谷.σⴍ
+⾛𐹧⾕.\u115F󠗰σⴍ; 走𐹧谷.󠗰σⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--4xa452s5d17u; ; ;  # 走𐹧谷.σⴍ
+⾛𐹧⾕.\u115F󠗰Σⴍ; 走𐹧谷.󠗰σⴍ; [B1, B5, V7]; xn--6g3a1x434z.xn--4xa452s5d17u; ; ;  # 走𐹧谷.σⴍ
+xn--6g3a1x434z.xn--4xa180eotvh7453a; 走𐹧谷.\u115F󠗰σⴍ; [B5, V7]; xn--6g3a1x434z.xn--4xa180eotvh7453a; ; ;  # 走𐹧谷.σⴍ
+xn--6g3a1x434z.xn--4xa627dhpae6345i; 走𐹧谷.\u115F󠗰σႭ; [B5, V7]; xn--6g3a1x434z.xn--4xa627dhpae6345i; ; ;  # 走𐹧谷.σႭ
+xn--6g3a1x434z.xn--3xa380eotvh7453a; 走𐹧谷.\u115F󠗰ςⴍ; [B5, V7]; xn--6g3a1x434z.xn--3xa380eotvh7453a; ; ;  # 走𐹧谷.ςⴍ
+xn--6g3a1x434z.xn--3xa827dhpae6345i; 走𐹧谷.\u115F󠗰ςႭ; [B5, V7]; xn--6g3a1x434z.xn--3xa827dhpae6345i; ; ;  # 走𐹧谷.ςႭ
+\u200D≠ᢙ≯.솣-ᡴႠ; \u200D≠ᢙ≯.솣-ᡴⴀ; [C2]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; xn--jbf911clb.xn----p9j493ivi4l; [] # ≠ᢙ≯.솣-ᡴⴀ
+\u200D=\u0338ᢙ>\u0338.솣-ᡴႠ; \u200D≠ᢙ≯.솣-ᡴⴀ; [C2]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; xn--jbf911clb.xn----p9j493ivi4l; [] # ≠ᢙ≯.솣-ᡴⴀ
+\u200D=\u0338ᢙ>\u0338.솣-ᡴⴀ; \u200D≠ᢙ≯.솣-ᡴⴀ; [C2]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; xn--jbf911clb.xn----p9j493ivi4l; [] # ≠ᢙ≯.솣-ᡴⴀ
+\u200D≠ᢙ≯.솣-ᡴⴀ; ; [C2]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; xn--jbf911clb.xn----p9j493ivi4l; [] # ≠ᢙ≯.솣-ᡴⴀ
+xn--jbf911clb.xn----p9j493ivi4l; ≠ᢙ≯.솣-ᡴⴀ; ; xn--jbf911clb.xn----p9j493ivi4l; ; ;  # ≠ᢙ≯.솣-ᡴⴀ
+≠ᢙ≯.솣-ᡴⴀ; ; ; xn--jbf911clb.xn----p9j493ivi4l; ; ;  # ≠ᢙ≯.솣-ᡴⴀ
+=\u0338ᢙ>\u0338.솣-ᡴⴀ; ≠ᢙ≯.솣-ᡴⴀ; ; xn--jbf911clb.xn----p9j493ivi4l; ; ;  # ≠ᢙ≯.솣-ᡴⴀ
+=\u0338ᢙ>\u0338.솣-ᡴႠ; ≠ᢙ≯.솣-ᡴⴀ; ; xn--jbf911clb.xn----p9j493ivi4l; ; ;  # ≠ᢙ≯.솣-ᡴⴀ
+≠ᢙ≯.솣-ᡴႠ; ≠ᢙ≯.솣-ᡴⴀ; ; xn--jbf911clb.xn----p9j493ivi4l; ; ;  # ≠ᢙ≯.솣-ᡴⴀ
+xn--jbf929a90b0b.xn----p9j493ivi4l; \u200D≠ᢙ≯.솣-ᡴⴀ; [C2]; xn--jbf929a90b0b.xn----p9j493ivi4l; ; ;  # ≠ᢙ≯.솣-ᡴⴀ
+xn--jbf911clb.xn----6zg521d196p; ≠ᢙ≯.솣-ᡴႠ; [V7]; xn--jbf911clb.xn----6zg521d196p; ; ;  # ≠ᢙ≯.솣-ᡴႠ
+xn--jbf929a90b0b.xn----6zg521d196p; \u200D≠ᢙ≯.솣-ᡴႠ; [C2, V7]; xn--jbf929a90b0b.xn----6zg521d196p; ; ;  # ≠ᢙ≯.솣-ᡴႠ
+񯞜．𐿇\u0FA2\u077D\u0600; 񯞜.𐿇\u0FA1\u0FB7\u077D\u0600; [V7]; xn--gw68a.xn--ifb57ev2psc6027m; ; ;  # .𐿇ྡྷݽ
+񯞜．𐿇\u0FA1\u0FB7\u077D\u0600; 񯞜.𐿇\u0FA1\u0FB7\u077D\u0600; [V7]; xn--gw68a.xn--ifb57ev2psc6027m; ; ;  # .𐿇ྡྷݽ
+񯞜.𐿇\u0FA1\u0FB7\u077D\u0600; ; [V7]; xn--gw68a.xn--ifb57ev2psc6027m; ; ;  # .𐿇ྡྷݽ
+xn--gw68a.xn--ifb57ev2psc6027m; 񯞜.𐿇\u0FA1\u0FB7\u077D\u0600; [V7]; xn--gw68a.xn--ifb57ev2psc6027m; ; ;  # .𐿇ྡྷݽ
+𣳔\u0303.𑓂; ; [V6]; xn--nsa95820a.xn--wz1d; ; ;  # 𣳔̃.𑓂
+xn--nsa95820a.xn--wz1d; 𣳔\u0303.𑓂; [V6]; xn--nsa95820a.xn--wz1d; ; ;  # 𣳔̃.𑓂
+𞤀𞥅񘐱。󠄌Ⴣꡥ; 𞤢𞥅񘐱.ⴣꡥ; [B2, B3, V7]; xn--9d6hgcy3556a.xn--rlju750b; ; ;  # 𞤢𞥅.ⴣꡥ
+𞤢𞥅񘐱。󠄌ⴣꡥ; 𞤢𞥅񘐱.ⴣꡥ; [B2, B3, V7]; xn--9d6hgcy3556a.xn--rlju750b; ; ;  # 𞤢𞥅.ⴣꡥ
+xn--9d6hgcy3556a.xn--rlju750b; 𞤢𞥅񘐱.ⴣꡥ; [B2, B3, V7]; xn--9d6hgcy3556a.xn--rlju750b; ; ;  # 𞤢𞥅.ⴣꡥ
+xn--9d6hgcy3556a.xn--7nd0578e; 𞤢𞥅񘐱.Ⴣꡥ; [B2, B3, V7]; xn--9d6hgcy3556a.xn--7nd0578e; ; ;  # 𞤢𞥅.Ⴣꡥ
+𞤀𞥅񘐱。󠄌ⴣꡥ; 𞤢𞥅񘐱.ⴣꡥ; [B2, B3, V7]; xn--9d6hgcy3556a.xn--rlju750b; ; ;  # 𞤢𞥅.ⴣꡥ
+\u08E2𑁿ς𖬱。󠅡렧; \u08E2𑁿ς𖬱.렧; [B1, V7]; xn--3xa73xp48ys2xc.xn--kn2b; ; xn--4xa53xp48ys2xc.xn--kn2b;  # 𑁿ς𖬱.렧
+\u08E2𑁿ς𖬱。󠅡렧; \u08E2𑁿ς𖬱.렧; [B1, V7]; xn--3xa73xp48ys2xc.xn--kn2b; ; xn--4xa53xp48ys2xc.xn--kn2b;  # 𑁿ς𖬱.렧
+\u08E2𑁿Σ𖬱。󠅡렧; \u08E2𑁿σ𖬱.렧; [B1, V7]; xn--4xa53xp48ys2xc.xn--kn2b; ; ;  # 𑁿σ𖬱.렧
+\u08E2𑁿Σ𖬱。󠅡렧; \u08E2𑁿σ𖬱.렧; [B1, V7]; xn--4xa53xp48ys2xc.xn--kn2b; ; ;  # 𑁿σ𖬱.렧
+\u08E2𑁿σ𖬱。󠅡렧; \u08E2𑁿σ𖬱.렧; [B1, V7]; xn--4xa53xp48ys2xc.xn--kn2b; ; ;  # 𑁿σ𖬱.렧
+\u08E2𑁿σ𖬱。󠅡렧; \u08E2𑁿σ𖬱.렧; [B1, V7]; xn--4xa53xp48ys2xc.xn--kn2b; ; ;  # 𑁿σ𖬱.렧
+xn--4xa53xp48ys2xc.xn--kn2b; \u08E2𑁿σ𖬱.렧; [B1, V7]; xn--4xa53xp48ys2xc.xn--kn2b; ; ;  # 𑁿σ𖬱.렧
+xn--3xa73xp48ys2xc.xn--kn2b; \u08E2𑁿ς𖬱.렧; [B1, V7]; xn--3xa73xp48ys2xc.xn--kn2b; ; ;  # 𑁿ς𖬱.렧
+-\u200D。𞤍\u200C\u200D⒈; -\u200D.𞤯\u200C\u200D⒈; [B1, C1, C2, V3, V7]; xn----ugn.xn--0ugc555aiv51d; ; -.xn--tsh3666n; [B1, V3, V7] # -.𞤯⒈
+-\u200D。𞤍\u200C\u200D1.; -\u200D.𞤯\u200C\u200D1.; [B1, C1, C2, V3]; xn----ugn.xn--1-rgnd61297b.; [B1, C1, C2, V3, A4_2]; -.xn--1-0i8r.; [B1, V3, A4_2] # -.𞤯1.
+-\u200D。𞤯\u200C\u200D1.; -\u200D.𞤯\u200C\u200D1.; [B1, C1, C2, V3]; xn----ugn.xn--1-rgnd61297b.; [B1, C1, C2, V3, A4_2]; -.xn--1-0i8r.; [B1, V3, A4_2] # -.𞤯1.
+-.xn--1-0i8r.; -.𞤯1.; [B1, V3]; -.xn--1-0i8r.; [B1, V3, A4_2]; ;  # -.𞤯1.
+xn----ugn.xn--1-rgnd61297b.; -\u200D.𞤯\u200C\u200D1.; [B1, C1, C2, V3]; xn----ugn.xn--1-rgnd61297b.; [B1, C1, C2, V3, A4_2]; ;  # -.𞤯1.
+-\u200D。𞤯\u200C\u200D⒈; -\u200D.𞤯\u200C\u200D⒈; [B1, C1, C2, V3, V7]; xn----ugn.xn--0ugc555aiv51d; ; -.xn--tsh3666n; [B1, V3, V7] # -.𞤯⒈
+-.xn--tsh3666n; -.𞤯⒈; [B1, V3, V7]; -.xn--tsh3666n; ; ;  # -.𞤯⒈
+xn----ugn.xn--0ugc555aiv51d; -\u200D.𞤯\u200C\u200D⒈; [B1, C1, C2, V3, V7]; xn----ugn.xn--0ugc555aiv51d; ; ;  # -.𞤯⒈
+\u200C򅎭.Ⴒ𑇀; \u200C򅎭.ⴒ𑇀; [C1, V7]; xn--0ug15083f.xn--9kj2034e; ; xn--bn95b.xn--9kj2034e; [V7] # .ⴒ𑇀
+\u200C򅎭.ⴒ𑇀; ; [C1, V7]; xn--0ug15083f.xn--9kj2034e; ; xn--bn95b.xn--9kj2034e; [V7] # .ⴒ𑇀
+xn--bn95b.xn--9kj2034e; 򅎭.ⴒ𑇀; [V7]; xn--bn95b.xn--9kj2034e; ; ;  # .ⴒ𑇀
+xn--0ug15083f.xn--9kj2034e; \u200C򅎭.ⴒ𑇀; [C1, V7]; xn--0ug15083f.xn--9kj2034e; ; ;  # .ⴒ𑇀
+xn--bn95b.xn--qnd6272k; 򅎭.Ⴒ𑇀; [V7]; xn--bn95b.xn--qnd6272k; ; ;  # .Ⴒ𑇀
+xn--0ug15083f.xn--qnd6272k; \u200C򅎭.Ⴒ𑇀; [C1, V7]; xn--0ug15083f.xn--qnd6272k; ; ;  # .Ⴒ𑇀
+繱𑖿\u200D.８︒; 繱𑖿\u200D.8︒; [V7]; xn--1ug6928ac48e.xn--8-o89h; ; xn--gl0as212a.xn--8-o89h;  # 繱𑖿.8︒
+繱𑖿\u200D.8。; 繱𑖿\u200D.8.; ; xn--1ug6928ac48e.8.; [A4_2]; xn--gl0as212a.8.;  # 繱𑖿.8.
+xn--gl0as212a.i.; 繱𑖿.i.; ; xn--gl0as212a.i.; [A4_2]; ;  # 繱𑖿.i.
+繱𑖿.i.; ; ; xn--gl0as212a.i.; [A4_2]; ;  # 繱𑖿.i.
+繱𑖿.I.; 繱𑖿.i.; ; xn--gl0as212a.i.; [A4_2]; ;  # 繱𑖿.i.
+xn--1ug6928ac48e.i.; 繱𑖿\u200D.i.; ; xn--1ug6928ac48e.i.; [A4_2]; ;  # 繱𑖿.i.
+繱𑖿\u200D.i.; ; ; xn--1ug6928ac48e.i.; [A4_2]; xn--gl0as212a.i.;  # 繱𑖿.i.
+繱𑖿\u200D.I.; 繱𑖿\u200D.i.; ; xn--1ug6928ac48e.i.; [A4_2]; xn--gl0as212a.i.;  # 繱𑖿.i.
+xn--gl0as212a.xn--8-o89h; 繱𑖿.8︒; [V7]; xn--gl0as212a.xn--8-o89h; ; ;  # 繱𑖿.8︒
+xn--1ug6928ac48e.xn--8-o89h; 繱𑖿\u200D.8︒; [V7]; xn--1ug6928ac48e.xn--8-o89h; ; ;  # 繱𑖿.8︒
+󠆾．𞀈; .𞀈; [V6, X4_2]; .xn--ph4h; [V6, A4_2]; ;  # .𞀈
+󠆾.𞀈; .𞀈; [V6, X4_2]; .xn--ph4h; [V6, A4_2]; ;  # .𞀈
+.xn--ph4h; .𞀈; [V6, X4_2]; .xn--ph4h; [V6, A4_2]; ;  # .𞀈
+ß\u06EB。\u200D; ß\u06EB.\u200D; [C2]; xn--zca012a.xn--1ug; ; xn--ss-59d.; [A4_2] # ß۫.
+SS\u06EB。\u200D; ss\u06EB.\u200D; [C2]; xn--ss-59d.xn--1ug; ; xn--ss-59d.; [A4_2] # ss۫.
+ss\u06EB。\u200D; ss\u06EB.\u200D; [C2]; xn--ss-59d.xn--1ug; ; xn--ss-59d.; [A4_2] # ss۫.
+Ss\u06EB。\u200D; ss\u06EB.\u200D; [C2]; xn--ss-59d.xn--1ug; ; xn--ss-59d.; [A4_2] # ss۫.
+xn--ss-59d.; ss\u06EB.; ; xn--ss-59d.; [A4_2]; ;  # ss۫.
+ss\u06EB.; ; ; xn--ss-59d.; [A4_2]; ;  # ss۫.
+SS\u06EB.; ss\u06EB.; ; xn--ss-59d.; [A4_2]; ;  # ss۫.
+Ss\u06EB.; ss\u06EB.; ; xn--ss-59d.; [A4_2]; ;  # ss۫.
+xn--ss-59d.xn--1ug; ss\u06EB.\u200D; [C2]; xn--ss-59d.xn--1ug; ; ;  # ss۫.
+xn--zca012a.xn--1ug; ß\u06EB.\u200D; [C2]; xn--zca012a.xn--1ug; ; ;  # ß۫.
+󠐵\u200C⒈．󠎇; 󠐵\u200C⒈.󠎇; [C1, V7]; xn--0ug88o47900b.xn--tv36e; ; xn--tshz2001k.xn--tv36e; [V7] # ⒈.
+󠐵\u200C1..󠎇; ; [C1, V7, X4_2]; xn--1-rgn37671n..xn--tv36e; [C1, V7, A4_2]; xn--1-bs31m..xn--tv36e; [V7, A4_2] # 1..
+xn--1-bs31m..xn--tv36e; 󠐵1..󠎇; [V7, X4_2]; xn--1-bs31m..xn--tv36e; [V7, A4_2]; ;  # 1..
+xn--1-rgn37671n..xn--tv36e; 󠐵\u200C1..󠎇; [C1, V7, X4_2]; xn--1-rgn37671n..xn--tv36e; [C1, V7, A4_2]; ;  # 1..
+xn--tshz2001k.xn--tv36e; 󠐵⒈.󠎇; [V7]; xn--tshz2001k.xn--tv36e; ; ;  # ⒈.
+xn--0ug88o47900b.xn--tv36e; 󠐵\u200C⒈.󠎇; [C1, V7]; xn--0ug88o47900b.xn--tv36e; ; ;  # ⒈.
+󟈣\u065F\uAAB2ß。󌓧; 󟈣\u065F\uAAB2ß.󌓧; [V7]; xn--zca92z0t7n5w96j.xn--bb79d; ; xn--ss-3xd2839nncy1m.xn--bb79d;  # ٟꪲß.
+󟈣\u065F\uAAB2SS。󌓧; 󟈣\u065F\uAAB2ss.󌓧; [V7]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ;  # ٟꪲss.
+󟈣\u065F\uAAB2ss。󌓧; 󟈣\u065F\uAAB2ss.󌓧; [V7]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ;  # ٟꪲss.
+󟈣\u065F\uAAB2Ss。󌓧; 󟈣\u065F\uAAB2ss.󌓧; [V7]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ;  # ٟꪲss.
+xn--ss-3xd2839nncy1m.xn--bb79d; 󟈣\u065F\uAAB2ss.󌓧; [V7]; xn--ss-3xd2839nncy1m.xn--bb79d; ; ;  # ٟꪲss.
+xn--zca92z0t7n5w96j.xn--bb79d; 󟈣\u065F\uAAB2ß.󌓧; [V7]; xn--zca92z0t7n5w96j.xn--bb79d; ; ;  # ٟꪲß.
+\u0774\u200C𞤿。𽘐䉜\u200D񿤼; \u0774\u200C𞤿.𽘐䉜\u200D񿤼; [C1, C2, V7]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; xn--4pb2977v.xn--z0nt555ukbnv; [V7] # ݴ𞤿.䉜
+\u0774\u200C𞤝。𽘐䉜\u200D񿤼; \u0774\u200C𞤿.𽘐䉜\u200D񿤼; [C1, C2, V7]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; xn--4pb2977v.xn--z0nt555ukbnv; [V7] # ݴ𞤿.䉜
+xn--4pb2977v.xn--z0nt555ukbnv; \u0774𞤿.𽘐䉜񿤼; [V7]; xn--4pb2977v.xn--z0nt555ukbnv; ; ;  # ݴ𞤿.䉜
+xn--4pb607jjt73a.xn--1ug236ke314donv1a; \u0774\u200C𞤿.𽘐䉜\u200D񿤼; [C1, C2, V7]; xn--4pb607jjt73a.xn--1ug236ke314donv1a; ; ;  # ݴ𞤿.䉜
+򔭜ςᡱ⒈.≮𑄳\u200D𐮍; ; [B1, V7]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # ςᡱ⒈.≮𑄳𐮍
+򔭜ςᡱ⒈.<\u0338𑄳\u200D𐮍; 򔭜ςᡱ⒈.≮𑄳\u200D𐮍; [B1, V7]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # ςᡱ⒈.≮𑄳𐮍
+򔭜ςᡱ1..≮𑄳\u200D𐮍; ; [B1, V7, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, V7, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # ςᡱ1..≮𑄳𐮍
+򔭜ςᡱ1..<\u0338𑄳\u200D𐮍; 򔭜ςᡱ1..≮𑄳\u200D𐮍; [B1, V7, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, V7, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # ςᡱ1..≮𑄳𐮍
+򔭜Σᡱ1..<\u0338𑄳\u200D𐮍; 򔭜σᡱ1..≮𑄳\u200D𐮍; [B1, V7, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V7, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # σᡱ1..≮𑄳𐮍
+򔭜Σᡱ1..≮𑄳\u200D𐮍; 򔭜σᡱ1..≮𑄳\u200D𐮍; [B1, V7, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V7, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # σᡱ1..≮𑄳𐮍
+򔭜σᡱ1..≮𑄳\u200D𐮍; ; [B1, V7, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V7, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # σᡱ1..≮𑄳𐮍
+򔭜σᡱ1..<\u0338𑄳\u200D𐮍; 򔭜σᡱ1..≮𑄳\u200D𐮍; [B1, V7, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V7, A4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd;  # σᡱ1..≮𑄳𐮍
+xn--1-zmb699meq63t..xn--gdh5392g6sd; 򔭜σᡱ1..≮𑄳𐮍; [B1, V7, X4_2]; xn--1-zmb699meq63t..xn--gdh5392g6sd; [B1, V7, A4_2]; ;  # σᡱ1..≮𑄳𐮍
+xn--1-zmb699meq63t..xn--1ug85gn777ahze; 򔭜σᡱ1..≮𑄳\u200D𐮍; [B1, V7, X4_2]; xn--1-zmb699meq63t..xn--1ug85gn777ahze; [B1, V7, A4_2]; ;  # σᡱ1..≮𑄳𐮍
+xn--1-xmb999meq63t..xn--1ug85gn777ahze; 򔭜ςᡱ1..≮𑄳\u200D𐮍; [B1, V7, X4_2]; xn--1-xmb999meq63t..xn--1ug85gn777ahze; [B1, V7, A4_2]; ;  # ςᡱ1..≮𑄳𐮍
+򔭜Σᡱ⒈.<\u0338𑄳\u200D𐮍; 򔭜σᡱ⒈.≮𑄳\u200D𐮍; [B1, V7]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # σᡱ⒈.≮𑄳𐮍
+򔭜Σᡱ⒈.≮𑄳\u200D𐮍; 򔭜σᡱ⒈.≮𑄳\u200D𐮍; [B1, V7]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # σᡱ⒈.≮𑄳𐮍
+򔭜σᡱ⒈.≮𑄳\u200D𐮍; ; [B1, V7]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # σᡱ⒈.≮𑄳𐮍
+򔭜σᡱ⒈.<\u0338𑄳\u200D𐮍; 򔭜σᡱ⒈.≮𑄳\u200D𐮍; [B1, V7]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; xn--4xa207hkzinr77u.xn--gdh5392g6sd;  # σᡱ⒈.≮𑄳𐮍
+xn--4xa207hkzinr77u.xn--gdh5392g6sd; 򔭜σᡱ⒈.≮𑄳𐮍; [B1, V7]; xn--4xa207hkzinr77u.xn--gdh5392g6sd; ; ;  # σᡱ⒈.≮𑄳𐮍
+xn--4xa207hkzinr77u.xn--1ug85gn777ahze; 򔭜σᡱ⒈.≮𑄳\u200D𐮍; [B1, V7]; xn--4xa207hkzinr77u.xn--1ug85gn777ahze; ; ;  # σᡱ⒈.≮𑄳𐮍
+xn--3xa407hkzinr77u.xn--1ug85gn777ahze; 򔭜ςᡱ⒈.≮𑄳\u200D𐮍; [B1, V7]; xn--3xa407hkzinr77u.xn--1ug85gn777ahze; ; ;  # ςᡱ⒈.≮𑄳𐮍
+\u3164\u094DႠ\u17D0.\u180B; \u094Dⴀ\u17D0.; [V6]; xn--n3b445e53p.; [V6, A4_2]; ;  # ्ⴀ័.
+\u1160\u094DႠ\u17D0.\u180B; \u094Dⴀ\u17D0.; [V6]; xn--n3b445e53p.; [V6, A4_2]; ;  # ्ⴀ័.
+\u1160\u094Dⴀ\u17D0.\u180B; \u094Dⴀ\u17D0.; [V6]; xn--n3b445e53p.; [V6, A4_2]; ;  # ्ⴀ័.
+xn--n3b445e53p.; \u094Dⴀ\u17D0.; [V6]; xn--n3b445e53p.; [V6, A4_2]; ;  # ्ⴀ័.
+\u3164\u094Dⴀ\u17D0.\u180B; \u094Dⴀ\u17D0.; [V6]; xn--n3b445e53p.; [V6, A4_2]; ;  # ्ⴀ័.
+xn--n3b742bkqf4ty.; \u1160\u094Dⴀ\u17D0.; [V7]; xn--n3b742bkqf4ty.; [V7, A4_2]; ;  # ्ⴀ័.
+xn--n3b468aoqa89r.; \u1160\u094DႠ\u17D0.; [V7]; xn--n3b468aoqa89r.; [V7, A4_2]; ;  # ्Ⴀ័.
+xn--n3b445e53po6d.; \u3164\u094Dⴀ\u17D0.; [V7]; xn--n3b445e53po6d.; [V7, A4_2]; ;  # ्ⴀ័.
+xn--n3b468azngju2a.; \u3164\u094DႠ\u17D0.; [V7]; xn--n3b468azngju2a.; [V7, A4_2]; ;  # ्Ⴀ័.
+❣\u200D．\u09CD𑰽\u0612\uA929; ❣\u200D.\u09CD𑰽\u0612\uA929; [C2, V6]; xn--1ugy10a.xn--0fb32q3w7q2g4d; ; xn--pei.xn--0fb32q3w7q2g4d; [V6] # ❣.্𑰽ؒꤩ
+❣\u200D.\u09CD𑰽\u0612\uA929; ; [C2, V6]; xn--1ugy10a.xn--0fb32q3w7q2g4d; ; xn--pei.xn--0fb32q3w7q2g4d; [V6] # ❣.্𑰽ؒꤩ
+xn--pei.xn--0fb32q3w7q2g4d; ❣.\u09CD𑰽\u0612\uA929; [V6]; xn--pei.xn--0fb32q3w7q2g4d; ; ;  # ❣.্𑰽ؒꤩ
+xn--1ugy10a.xn--0fb32q3w7q2g4d; ❣\u200D.\u09CD𑰽\u0612\uA929; [C2, V6]; xn--1ugy10a.xn--0fb32q3w7q2g4d; ; ;  # ❣.্𑰽ؒꤩ
+≮𐳺𐹄.≯񪮸ꡅ; ; [B1, V7]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ;  # ≮𐳺.≯ꡅ
+<\u0338𐳺𐹄.>\u0338񪮸ꡅ; ≮𐳺𐹄.≯񪮸ꡅ; [B1, V7]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ;  # ≮𐳺.≯ꡅ
+xn--gdh7943gk2a.xn--hdh1383c5e36c; ≮𐳺𐹄.≯񪮸ꡅ; [B1, V7]; xn--gdh7943gk2a.xn--hdh1383c5e36c; ; ;  # ≮𐳺.≯ꡅ
+\u0CCC𐧅𐳏󠲺｡\u0CCDᠦ; \u0CCC𐧅𐳏󠲺.\u0CCDᠦ; [B1, V6, V7]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ;  # ೌ𐧅𐳏.್ᠦ
+\u0CCC𐧅𐳏󠲺。\u0CCDᠦ; \u0CCC𐧅𐳏󠲺.\u0CCDᠦ; [B1, V6, V7]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ;  # ೌ𐧅𐳏.್ᠦ
+\u0CCC𐧅𐲏󠲺。\u0CCDᠦ; \u0CCC𐧅𐳏󠲺.\u0CCDᠦ; [B1, V6, V7]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ;  # ೌ𐧅𐳏.್ᠦ
+xn--7tc6360ky5bn2732c.xn--8tc429c; \u0CCC𐧅𐳏󠲺.\u0CCDᠦ; [B1, V6, V7]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ;  # ೌ𐧅𐳏.್ᠦ
+\u0CCC𐧅𐲏󠲺｡\u0CCDᠦ; \u0CCC𐧅𐳏󠲺.\u0CCDᠦ; [B1, V6, V7]; xn--7tc6360ky5bn2732c.xn--8tc429c; ; ;  # ೌ𐧅𐳏.್ᠦ
+\u0349。𧡫; \u0349.𧡫; [V6]; xn--nua.xn--bc6k; ; ;  # ͉.𧡫
+xn--nua.xn--bc6k; \u0349.𧡫; [V6]; xn--nua.xn--bc6k; ; ;  # ͉.𧡫
+𑰿󠅦．\u1160; 𑰿.; [V6]; xn--ok3d.; [V6, A4_2]; ;  # 𑰿.
+𑰿󠅦.\u1160; 𑰿.; [V6]; xn--ok3d.; [V6, A4_2]; ;  # 𑰿.
+xn--ok3d.; 𑰿.; [V6]; xn--ok3d.; [V6, A4_2]; ;  # 𑰿.
+xn--ok3d.xn--psd; 𑰿.\u1160; [V6, V7]; xn--ok3d.xn--psd; ; ;  # 𑰿.
+-𞤆\u200D。󸼄𞳒; -𞤨\u200D.󸼄𞳒; [B1, B5, B6, C2, V3, V7]; xn----ugnx367r.xn--846h96596c; ; xn----ni8r.xn--846h96596c; [B1, B5, B6, V3, V7] # -𞤨.
+-𞤨\u200D。󸼄𞳒; -𞤨\u200D.󸼄𞳒; [B1, B5, B6, C2, V3, V7]; xn----ugnx367r.xn--846h96596c; ; xn----ni8r.xn--846h96596c; [B1, B5, B6, V3, V7] # -𞤨.
+xn----ni8r.xn--846h96596c; -𞤨.󸼄𞳒; [B1, B5, B6, V3, V7]; xn----ni8r.xn--846h96596c; ; ;  # -𞤨.
+xn----ugnx367r.xn--846h96596c; -𞤨\u200D.󸼄𞳒; [B1, B5, B6, C2, V3, V7]; xn----ugnx367r.xn--846h96596c; ; ;  # -𞤨.
+ꡏ󠇶≯𳾽。\u1DFD⾇滸𐹰; ꡏ󠇶≯𳾽.\u1DFD舛滸𐹰; [B1, V6, V7]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ;  # ꡏ≯.᷽舛滸𐹰
+ꡏ󠇶>\u0338𳾽。\u1DFD⾇滸𐹰; ꡏ󠇶≯𳾽.\u1DFD舛滸𐹰; [B1, V6, V7]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ;  # ꡏ≯.᷽舛滸𐹰
+ꡏ󠇶≯𳾽。\u1DFD舛滸𐹰; ꡏ󠇶≯𳾽.\u1DFD舛滸𐹰; [B1, V6, V7]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ;  # ꡏ≯.᷽舛滸𐹰
+ꡏ󠇶>\u0338𳾽。\u1DFD舛滸𐹰; ꡏ󠇶≯𳾽.\u1DFD舛滸𐹰; [B1, V6, V7]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ;  # ꡏ≯.᷽舛滸𐹰
+xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ꡏ󠇶≯𳾽.\u1DFD舛滸𐹰; [B1, V6, V7]; xn--hdh7483cu6twwki8e.xn--yfg0765a58l0n6k; ; ;  # ꡏ≯.᷽舛滸𐹰
+蔏｡𑰺; 蔏.𑰺; [V6]; xn--uy1a.xn--jk3d; ; ;  # 蔏.𑰺
+蔏。𑰺; 蔏.𑰺; [V6]; xn--uy1a.xn--jk3d; ; ;  # 蔏.𑰺
+xn--uy1a.xn--jk3d; 蔏.𑰺; [V6]; xn--uy1a.xn--jk3d; ; ;  # 蔏.𑰺
+𝟿𐮋。󠄊; 9𐮋.; [B1]; xn--9-rv5i.; [B1, A4_2]; ;  # 9𐮋.
+9𐮋。󠄊; 9𐮋.; [B1]; xn--9-rv5i.; [B1, A4_2]; ;  # 9𐮋.
+xn--9-rv5i.; 9𐮋.; [B1]; xn--9-rv5i.; [B1, A4_2]; ;  # 9𐮋.
+󟇇-䟖F。\u07CB⒈\u0662; 󟇇-䟖f.\u07CB⒈\u0662; [B4, V7]; xn---f-mz8b08788k.xn--bib53ev44d; ; ;  # -䟖f.ߋ⒈٢
+󟇇-䟖F。\u07CB1.\u0662; 󟇇-䟖f.\u07CB1.\u0662; [B1, V7]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ;  # -䟖f.ߋ1.٢
+󟇇-䟖f。\u07CB1.\u0662; 󟇇-䟖f.\u07CB1.\u0662; [B1, V7]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ;  # -䟖f.ߋ1.٢
+xn---f-mz8b08788k.xn--1-ybd.xn--bib; 󟇇-䟖f.\u07CB1.\u0662; [B1, V7]; xn---f-mz8b08788k.xn--1-ybd.xn--bib; ; ;  # -䟖f.ߋ1.٢
+󟇇-䟖f。\u07CB⒈\u0662; 󟇇-䟖f.\u07CB⒈\u0662; [B4, V7]; xn---f-mz8b08788k.xn--bib53ev44d; ; ;  # -䟖f.ߋ⒈٢
+xn---f-mz8b08788k.xn--bib53ev44d; 󟇇-䟖f.\u07CB⒈\u0662; [B4, V7]; xn---f-mz8b08788k.xn--bib53ev44d; ; ;  # -䟖f.ߋ⒈٢
+\u200C｡𐹺; \u200C.𐹺; [B1, C1]; xn--0ug.xn--yo0d; ; .xn--yo0d; [B1, A4_2] # .𐹺
+\u200C。𐹺; \u200C.𐹺; [B1, C1]; xn--0ug.xn--yo0d; ; .xn--yo0d; [B1, A4_2] # .𐹺
 .xn--yo0d; .𐹺; [B1, X4_2]; .xn--yo0d; [B1, A4_2]; ;  # .𐹺
-xn--0ug.xn--yo0d; ‌.𐹺; [B1, C1]; xn--0ug.xn--yo0d; ; ;  # .𐹺
-𐡆.≯‌-𞥀; ; [B1, C1, P1, V6]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1, P1, V6] # 𐡆.≯-𞥀
-𐡆.≯‌-𞥀; 𐡆.≯‌-𞥀; [B1, C1, P1, V6]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1, P1, V6] # 𐡆.≯-𞥀
-𐡆.≯‌-𞤞; 𐡆.≯‌-𞥀; [B1, C1, P1, V6]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1, P1, V6] # 𐡆.≯-𞥀
-𐡆.≯‌-𞤞; 𐡆.≯‌-𞥀; [B1, C1, P1, V6]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1, P1, V6] # 𐡆.≯-𞥀
-xn--le9c.xn----ogo9956r; 𐡆.≯-𞥀; [B1, V6]; xn--le9c.xn----ogo9956r; ; ;  # 𐡆.≯-𞥀
-xn--le9c.xn----rgn40iy359e; 𐡆.≯‌-𞥀; [B1, C1, V6]; xn--le9c.xn----rgn40iy359e; ; ;  # 𐡆.≯-𞥀
-󠁀-。≠ﳗ; 󠁀-.≠هج; [B1, P1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ;  # -.≠هج
-󠁀-。≠ﳗ; 󠁀-.≠هج; [B1, P1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ;  # -.≠هج
-󠁀-。≠هج; 󠁀-.≠هج; [B1, P1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ;  # -.≠هج
-󠁀-。≠هج; 󠁀-.≠هج; [B1, P1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ;  # -.≠هج
-xn----f411m.xn--rgb7c611j; 󠁀-.≠هج; [B1, V3, V6]; xn----f411m.xn--rgb7c611j; ; ;  # -.≠هج
-񻬹𑈵。‍𞨶; 񻬹𑈵.‍𞨶; [B1, C2, P1, V6]; xn--8g1d12120a.xn--1ug6651p; ; xn--8g1d12120a.xn--5l6h; [P1, V6] # 𑈵.
-xn--8g1d12120a.xn--5l6h; 񻬹𑈵.𞨶; [V6]; xn--8g1d12120a.xn--5l6h; ; ;  # 𑈵.
-xn--8g1d12120a.xn--1ug6651p; 񻬹𑈵.‍𞨶; [B1, C2, V6]; xn--8g1d12120a.xn--1ug6651p; ; ;  # 𑈵.
-𑋧꧀2｡㧉򒖄; 𑋧꧀2.㧉򒖄; [P1, V5, V6]; xn--2-5z4eu89y.xn--97l02706d; ; ;  # 𑋧꧀2.㧉
-𑋧꧀2。㧉򒖄; 𑋧꧀2.㧉򒖄; [P1, V5, V6]; xn--2-5z4eu89y.xn--97l02706d; ; ;  # 𑋧꧀2.㧉
-xn--2-5z4eu89y.xn--97l02706d; 𑋧꧀2.㧉򒖄; [V5, V6]; xn--2-5z4eu89y.xn--97l02706d; ; ;  # 𑋧꧀2.㧉
-‌𽬄𐹴𞩥。≯6; ‌𽬄𐹴𞩥.≯6; [B1, C1, P1, V6]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; xn--so0du768aim9m.xn--6-ogo; [B1, B5, B6, P1, V6] # 𐹴.≯6
-‌𽬄𐹴𞩥。≯6; ‌𽬄𐹴𞩥.≯6; [B1, C1, P1, V6]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; xn--so0du768aim9m.xn--6-ogo; [B1, B5, B6, P1, V6] # 𐹴.≯6
-xn--so0du768aim9m.xn--6-ogo; 𽬄𐹴𞩥.≯6; [B1, B5, B6, V6]; xn--so0du768aim9m.xn--6-ogo; ; ;  # 𐹴.≯6
-xn--0ug7105gf5wfxepq.xn--6-ogo; ‌𽬄𐹴𞩥.≯6; [B1, C1, V6]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; ;  # 𐹴.≯6
-𑁿．𐹦𻞵-‍; 𑁿.𐹦𻞵-‍; [B1, B3, B6, C2, P1, V5, V6]; xn--q30d.xn----ugn1088hfsxv; ; xn--q30d.xn----i26i1299n; [B1, B3, B6, P1, V3, V5, V6] # 𑁿.𐹦-
-𑁿.𐹦𻞵-‍; ; [B1, B3, B6, C2, P1, V5, V6]; xn--q30d.xn----ugn1088hfsxv; ; xn--q30d.xn----i26i1299n; [B1, B3, B6, P1, V3, V5, V6] # 𑁿.𐹦-
-xn--q30d.xn----i26i1299n; 𑁿.𐹦𻞵-; [B1, B3, B6, V3, V5, V6]; xn--q30d.xn----i26i1299n; ; ;  # 𑁿.𐹦-
-xn--q30d.xn----ugn1088hfsxv; 𑁿.𐹦𻞵-‍; [B1, B3, B6, C2, V5, V6]; xn--q30d.xn----ugn1088hfsxv; ; ;  # 𑁿.𐹦-
-⤸ς𺱀｡ﾠ; ⤸ς𺱀.ﾠ; [P1, V6]; xn--3xa392qmp03d.xn--cl7c; ; xn--4xa192qmp03d.xn--cl7c;  # ⤸ς.
-⤸ς𺱀。ᅠ; ⤸ς𺱀.ᅠ; [P1, V6]; xn--3xa392qmp03d.xn--psd; ; xn--4xa192qmp03d.xn--psd;  # ⤸ς.
-⤸Σ𺱀。ᅠ; ⤸σ𺱀.ᅠ; [P1, V6]; xn--4xa192qmp03d.xn--psd; ; ;  # ⤸σ.
-⤸σ𺱀。ᅠ; ⤸σ𺱀.ᅠ; [P1, V6]; xn--4xa192qmp03d.xn--psd; ; ;  # ⤸σ.
-xn--4xa192qmp03d.xn--psd; ⤸σ𺱀.ᅠ; [V6]; xn--4xa192qmp03d.xn--psd; ; ;  # ⤸σ.
-xn--3xa392qmp03d.xn--psd; ⤸ς𺱀.ᅠ; [V6]; xn--3xa392qmp03d.xn--psd; ; ;  # ⤸ς.
-⤸Σ𺱀｡ﾠ; ⤸σ𺱀.ﾠ; [P1, V6]; xn--4xa192qmp03d.xn--cl7c; ; ;  # ⤸σ.
-⤸σ𺱀｡ﾠ; ⤸σ𺱀.ﾠ; [P1, V6]; xn--4xa192qmp03d.xn--cl7c; ; ;  # ⤸σ.
-xn--4xa192qmp03d.xn--cl7c; ⤸σ𺱀.ﾠ; [V6]; xn--4xa192qmp03d.xn--cl7c; ; ;  # ⤸σ.
-xn--3xa392qmp03d.xn--cl7c; ⤸ς𺱀.ﾠ; [V6]; xn--3xa392qmp03d.xn--cl7c; ; ;  # ⤸ς.
-ݥဵ𐫔ە.𐦬𑋪Ⴃ; ; [B2, B3, P1, V6]; xn--llb10as9tqp5y.xn--bnd9168j21f; ; ;  # ݥဵ𐫔ە.𐦬𑋪Ⴃ
-ݥဵ𐫔ە.𐦬𑋪ⴃ; ; [B2, B3]; xn--llb10as9tqp5y.xn--ukj7371e21f; ; ;  # ݥဵ𐫔ە.𐦬𑋪ⴃ
-xn--llb10as9tqp5y.xn--ukj7371e21f; ݥဵ𐫔ە.𐦬𑋪ⴃ; [B2, B3]; xn--llb10as9tqp5y.xn--ukj7371e21f; ; ;  # ݥဵ𐫔ە.𐦬𑋪ⴃ
-xn--llb10as9tqp5y.xn--bnd9168j21f; ݥဵ𐫔ە.𐦬𑋪Ⴃ; [B2, B3, V6]; xn--llb10as9tqp5y.xn--bnd9168j21f; ; ;  # ݥဵ𐫔ە.𐦬𑋪Ⴃ
-١᭄-킼.᮪ؖ٬≯; ; [B1, B5, B6, P1, V5, V6]; xn----9pc551nk39n.xn--4fb6o571degg; ; ;  # ١᭄-킼.᮪ؖ٬≯
-١᭄-킼.᮪ؖ٬≯; ١᭄-킼.᮪ؖ٬≯; [B1, B5, B6, P1, V5, V6]; xn----9pc551nk39n.xn--4fb6o571degg; ; ;  # ١᭄-킼.᮪ؖ٬≯
-xn----9pc551nk39n.xn--4fb6o571degg; ١᭄-킼.᮪ؖ٬≯; [B1, B5, B6, V5, V6]; xn----9pc551nk39n.xn--4fb6o571degg; ; ;  # ١᭄-킼.᮪ؖ٬≯
--。ۂ؄򅖡𑓂; -.ۂ؄򅖡𑓂; [B1, B2, B3, P1, V3, V6]; -.xn--mfb39a7208dzgs3d; ; ;  # -.ۂ𑓂
--。ۂ؄򅖡𑓂; -.ۂ؄򅖡𑓂; [B1, B2, B3, P1, V3, V6]; -.xn--mfb39a7208dzgs3d; ; ;  # -.ۂ𑓂
--.xn--mfb39a7208dzgs3d; -.ۂ؄򅖡𑓂; [B1, B2, B3, V3, V6]; -.xn--mfb39a7208dzgs3d; ; ;  # -.ۂ𑓂
-‍󯑖󠁐．ֽ𙮰ꡝ𐋡; ‍󯑖󠁐.ֽ𙮰ꡝ𐋡; [C2, P1, V5, V6]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; xn--b726ey18m.xn--ldb8734fg0qcyzzg; [P1, V5, V6] # .ֽꡝ𐋡
-‍󯑖󠁐.ֽ𙮰ꡝ𐋡; ; [C2, P1, V5, V6]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; xn--b726ey18m.xn--ldb8734fg0qcyzzg; [P1, V5, V6] # .ֽꡝ𐋡
-xn--b726ey18m.xn--ldb8734fg0qcyzzg; 󯑖󠁐.ֽ𙮰ꡝ𐋡; [V5, V6]; xn--b726ey18m.xn--ldb8734fg0qcyzzg; ; ;  # .ֽꡝ𐋡
-xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ‍󯑖󠁐.ֽ𙮰ꡝ𐋡; [C2, V5, V6]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; ;  # .ֽꡝ𐋡
-︒􃈵ς񀠇｡𐮈; ︒􃈵ς񀠇.𐮈; [B1, P1, V6]; xn--3xa3729jwz5t7gl5f.xn--f29c; ; xn--4xa1729jwz5t7gl5f.xn--f29c;  # ︒ς.𐮈
-。􃈵ς񀠇。𐮈; .􃈵ς񀠇.𐮈; [P1, V6, X4_2]; .xn--3xa88573c7n64d.xn--f29c; [P1, V6, A4_2]; .xn--4xa68573c7n64d.xn--f29c;  # .ς.𐮈
-。􃈵Σ񀠇。𐮈; .􃈵σ񀠇.𐮈; [P1, V6, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [P1, V6, A4_2]; ;  # .σ.𐮈
-。􃈵σ񀠇。𐮈; .􃈵σ񀠇.𐮈; [P1, V6, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [P1, V6, A4_2]; ;  # .σ.𐮈
-.xn--4xa68573c7n64d.xn--f29c; .􃈵σ񀠇.𐮈; [V6, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [V6, A4_2]; ;  # .σ.𐮈
-.xn--3xa88573c7n64d.xn--f29c; .􃈵ς񀠇.𐮈; [V6, X4_2]; .xn--3xa88573c7n64d.xn--f29c; [V6, A4_2]; ;  # .ς.𐮈
-︒􃈵Σ񀠇｡𐮈; ︒􃈵σ񀠇.𐮈; [B1, P1, V6]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ;  # ︒σ.𐮈
-︒􃈵σ񀠇｡𐮈; ︒􃈵σ񀠇.𐮈; [B1, P1, V6]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ;  # ︒σ.𐮈
-xn--4xa1729jwz5t7gl5f.xn--f29c; ︒􃈵σ񀠇.𐮈; [B1, V6]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ;  # ︒σ.𐮈
-xn--3xa3729jwz5t7gl5f.xn--f29c; ︒􃈵ς񀠇.𐮈; [B1, V6]; xn--3xa3729jwz5t7gl5f.xn--f29c; ; ;  # ︒ς.𐮈
-ߙ．ۮ󆾃≯󠅲; ߙ.ۮ󆾃≯; [B2, B3, P1, V6]; xn--0sb.xn--bmb691l0524t; ; ;  # ߙ.ۮ≯
-ߙ．ۮ󆾃≯󠅲; ߙ.ۮ󆾃≯; [B2, B3, P1, V6]; xn--0sb.xn--bmb691l0524t; ; ;  # ߙ.ۮ≯
-ߙ.ۮ󆾃≯󠅲; ߙ.ۮ󆾃≯; [B2, B3, P1, V6]; xn--0sb.xn--bmb691l0524t; ; ;  # ߙ.ۮ≯
-ߙ.ۮ󆾃≯󠅲; ߙ.ۮ󆾃≯; [B2, B3, P1, V6]; xn--0sb.xn--bmb691l0524t; ; ;  # ߙ.ۮ≯
-xn--0sb.xn--bmb691l0524t; ߙ.ۮ󆾃≯; [B2, B3, V6]; xn--0sb.xn--bmb691l0524t; ; ;  # ߙ.ۮ≯
-ᩳ󚙸.𐭍; ; [B1, P1, V5, V6]; xn--2of22352n.xn--q09c; ; ;  # ᩳ.𐭍
-xn--2of22352n.xn--q09c; ᩳ󚙸.𐭍; [B1, V5, V6]; xn--2of22352n.xn--q09c; ; ;  # ᩳ.𐭍
-⒉󠊓≠｡Ⴟ⬣Ⴈ; ⒉󠊓≠.Ⴟ⬣Ⴈ; [P1, V6]; xn--1ch07f91401d.xn--gnd9b297j; ; ;  # ⒉≠.Ⴟ⬣Ⴈ
-⒉󠊓≠｡Ⴟ⬣Ⴈ; ⒉󠊓≠.Ⴟ⬣Ⴈ; [P1, V6]; xn--1ch07f91401d.xn--gnd9b297j; ; ;  # ⒉≠.Ⴟ⬣Ⴈ
-2.󠊓≠。Ⴟ⬣Ⴈ; 2.󠊓≠.Ⴟ⬣Ⴈ; [P1, V6]; 2.xn--1chz4101l.xn--gnd9b297j; ; ;  # 2.≠.Ⴟ⬣Ⴈ
-2.󠊓≠。Ⴟ⬣Ⴈ; 2.󠊓≠.Ⴟ⬣Ⴈ; [P1, V6]; 2.xn--1chz4101l.xn--gnd9b297j; ; ;  # 2.≠.Ⴟ⬣Ⴈ
-2.󠊓≠。ⴟ⬣ⴈ; 2.󠊓≠.ⴟ⬣ⴈ; [P1, V6]; 2.xn--1chz4101l.xn--45iz7d6b; ; ;  # 2.≠.ⴟ⬣ⴈ
-2.󠊓≠。ⴟ⬣ⴈ; 2.󠊓≠.ⴟ⬣ⴈ; [P1, V6]; 2.xn--1chz4101l.xn--45iz7d6b; ; ;  # 2.≠.ⴟ⬣ⴈ
-2.xn--1chz4101l.xn--45iz7d6b; 2.󠊓≠.ⴟ⬣ⴈ; [V6]; 2.xn--1chz4101l.xn--45iz7d6b; ; ;  # 2.≠.ⴟ⬣ⴈ
-2.xn--1chz4101l.xn--gnd9b297j; 2.󠊓≠.Ⴟ⬣Ⴈ; [V6]; 2.xn--1chz4101l.xn--gnd9b297j; ; ;  # 2.≠.Ⴟ⬣Ⴈ
-⒉󠊓≠｡ⴟ⬣ⴈ; ⒉󠊓≠.ⴟ⬣ⴈ; [P1, V6]; xn--1ch07f91401d.xn--45iz7d6b; ; ;  # ⒉≠.ⴟ⬣ⴈ
-⒉󠊓≠｡ⴟ⬣ⴈ; ⒉󠊓≠.ⴟ⬣ⴈ; [P1, V6]; xn--1ch07f91401d.xn--45iz7d6b; ; ;  # ⒉≠.ⴟ⬣ⴈ
-xn--1ch07f91401d.xn--45iz7d6b; ⒉󠊓≠.ⴟ⬣ⴈ; [V6]; xn--1ch07f91401d.xn--45iz7d6b; ; ;  # ⒉≠.ⴟ⬣ⴈ
-xn--1ch07f91401d.xn--gnd9b297j; ⒉󠊓≠.Ⴟ⬣Ⴈ; [V6]; xn--1ch07f91401d.xn--gnd9b297j; ; ;  # ⒉≠.Ⴟ⬣Ⴈ
--󠉱ྸჅ。-𐹽ݴ𞣑; -󠉱ྸჅ.-𐹽ݴ𞣑; [B1, P1, V3, V6]; xn----xmg12fm2555h.xn----05c4213ryr0g; ; ;  # -ྸჅ.-𐹽ݴ𞣑
--󠉱ྸⴥ。-𐹽ݴ𞣑; -󠉱ྸⴥ.-𐹽ݴ𞣑; [B1, P1, V3, V6]; xn----xmg317tgv352a.xn----05c4213ryr0g; ; ;  # -ྸⴥ.-𐹽ݴ𞣑
-xn----xmg317tgv352a.xn----05c4213ryr0g; -󠉱ྸⴥ.-𐹽ݴ𞣑; [B1, V3, V6]; xn----xmg317tgv352a.xn----05c4213ryr0g; ; ;  # -ྸⴥ.-𐹽ݴ𞣑
-xn----xmg12fm2555h.xn----05c4213ryr0g; -󠉱ྸჅ.-𐹽ݴ𞣑; [B1, V3, V6]; xn----xmg12fm2555h.xn----05c4213ryr0g; ; ;  # -ྸჅ.-𐹽ݴ𞣑
-ٙ。𑄴︒اߝ; ٙ.𑄴︒اߝ; [B1, B3, B6, P1, V5, V6]; xn--1hb.xn--mgb09fp820c08pa; ; ;  # ٙ.𑄴︒اߝ
-ٙ。𑄴。اߝ; ٙ.𑄴.اߝ; [B1, B3, B6, V5]; xn--1hb.xn--w80d.xn--mgb09f; ; ;  # ٙ.𑄴.اߝ
-xn--1hb.xn--w80d.xn--mgb09f; ٙ.𑄴.اߝ; [B1, B3, B6, V5]; xn--1hb.xn--w80d.xn--mgb09f; ; ;  # ٙ.𑄴.اߝ
-xn--1hb.xn--mgb09fp820c08pa; ٙ.𑄴︒اߝ; [B1, B3, B6, V5, V6]; xn--1hb.xn--mgb09fp820c08pa; ; ;  # ٙ.𑄴︒اߝ
-Ⴙظ.󠆓‍; Ⴙظ.‍; [B1, B5, B6, C2, P1, V6]; xn--3gb194c.xn--1ug; ; xn--3gb194c.; [B5, B6, P1, V6] # Ⴙظ.
-ⴙظ.󠆓‍; ⴙظ.‍; [B1, B5, B6, C2]; xn--3gb910r.xn--1ug; ; xn--3gb910r.; [B5, B6] # ⴙظ.
-xn--3gb910r.; ⴙظ.; [B5, B6]; xn--3gb910r.; ; ;  # ⴙظ.
-xn--3gb910r.xn--1ug; ⴙظ.‍; [B1, B5, B6, C2]; xn--3gb910r.xn--1ug; ; ;  # ⴙظ.
-xn--3gb194c.; Ⴙظ.; [B5, B6, V6]; xn--3gb194c.; ; ;  # Ⴙظ.
-xn--3gb194c.xn--1ug; Ⴙظ.‍; [B1, B5, B6, C2, V6]; xn--3gb194c.xn--1ug; ; ;  # Ⴙظ.
-󠆸｡₆０𐺧ݖ; .60𐺧ݖ; [B1, P1, V6, X4_2]; .xn--60-cke9470y; [B1, P1, V6, A4_2]; ;  # .60𐺧ݖ
-󠆸。60𐺧ݖ; .60𐺧ݖ; [B1, P1, V6, X4_2]; .xn--60-cke9470y; [B1, P1, V6, A4_2]; ;  # .60𐺧ݖ
-.xn--60-cke9470y; .60𐺧ݖ; [B1, V6, X4_2]; .xn--60-cke9470y; [B1, V6, A4_2]; ;  # .60𐺧ݖ
-6ࡏ｡-𑈴; 6ࡏ.-𑈴; [B1, V3]; xn--6-jjd.xn----6n8i; ; ;  # 6ࡏ.-𑈴
-6ࡏ。-𑈴; 6ࡏ.-𑈴; [B1, V3]; xn--6-jjd.xn----6n8i; ; ;  # 6ࡏ.-𑈴
-xn--6-jjd.xn----6n8i; 6ࡏ.-𑈴; [B1, V3]; xn--6-jjd.xn----6n8i; ; ;  # 6ࡏ.-𑈴
-‍񋌿𐹰｡્ς𞰎ࣖ; ‍񋌿𐹰.્ς𞰎ࣖ; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # 𐹰.્ςࣖ
-‍񋌿𐹰。્ς𞰎ࣖ; ‍񋌿𐹰.્ς𞰎ࣖ; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # 𐹰.્ςࣖ
-‍񋌿𐹰。્Σ𞰎ࣖ; ‍񋌿𐹰.્σ𞰎ࣖ; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # 𐹰.્σࣖ
-‍񋌿𐹰。્σ𞰎ࣖ; ‍񋌿𐹰.્σ𞰎ࣖ; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # 𐹰.્σࣖ
-xn--oo0d1330n.xn--4xa21xcwbfz15g; 񋌿𐹰.્σ𞰎ࣖ; [B1, B5, B6, V5, V6]; xn--oo0d1330n.xn--4xa21xcwbfz15g; ; ;  # 𐹰.્σࣖ
-xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ‍񋌿𐹰.્σ𞰎ࣖ; [B1, C2, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; ;  # 𐹰.્σࣖ
-xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ‍񋌿𐹰.્ς𞰎ࣖ; [B1, C2, V5, V6]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; ;  # 𐹰.્ςࣖ
-‍񋌿𐹰｡્Σ𞰎ࣖ; ‍񋌿𐹰.્σ𞰎ࣖ; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # 𐹰.્σࣖ
-‍񋌿𐹰｡્σ𞰎ࣖ; ‍񋌿𐹰.્σ𞰎ࣖ; [B1, C2, P1, V5, V6]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, P1, V5, V6] # 𐹰.્σࣖ
-⒈񟄜Ⴓ⒪．්򘘶ࢋ𐹢; ⒈񟄜Ⴓ⒪.්򘘶ࢋ𐹢; [B1, P1, V5, V6]; xn--rnd762h7cx3027d.xn--3xb99xpx1yoes3e; ; ;  # ⒈Ⴓ⒪.්𐹢
-1.񟄜Ⴓ(o).්򘘶ࢋ𐹢; ; [B1, B6, P1, V5, V6]; 1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; ; ;  # 1.Ⴓ(o).්𐹢
-1.񟄜ⴓ(o).්򘘶ࢋ𐹢; ; [B1, B6, P1, V5, V6]; 1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; ; ;  # 1.ⴓ(o).්𐹢
-1.񟄜Ⴓ(O).්򘘶ࢋ𐹢; 1.񟄜Ⴓ(o).්򘘶ࢋ𐹢; [B1, B6, P1, V5, V6]; 1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; ; ;  # 1.Ⴓ(o).්𐹢
-1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; 1.񟄜Ⴓ(o).්򘘶ࢋ𐹢; [B1, B6, P1, V5, V6]; 1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; ; ;  # 1.Ⴓ(o).්𐹢
-1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; 1.񟄜ⴓ(o).්򘘶ࢋ𐹢; [B1, B6, P1, V5, V6]; 1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; ; ;  # 1.ⴓ(o).්𐹢
-⒈񟄜ⴓ⒪．්򘘶ࢋ𐹢; ⒈񟄜ⴓ⒪.්򘘶ࢋ𐹢; [B1, P1, V5, V6]; xn--tsh0ds63atl31n.xn--3xb99xpx1yoes3e; ; ;  # ⒈ⴓ⒪.්𐹢
-xn--tsh0ds63atl31n.xn--3xb99xpx1yoes3e; ⒈񟄜ⴓ⒪.්򘘶ࢋ𐹢; [B1, V5, V6]; xn--tsh0ds63atl31n.xn--3xb99xpx1yoes3e; ; ;  # ⒈ⴓ⒪.්𐹢
-xn--rnd762h7cx3027d.xn--3xb99xpx1yoes3e; ⒈񟄜Ⴓ⒪.්򘘶ࢋ𐹢; [B1, V5, V6]; xn--rnd762h7cx3027d.xn--3xb99xpx1yoes3e; ; ;  # ⒈Ⴓ⒪.්𐹢
-𞤷.𐮐𞢁𐹠ؤ; ; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ;  # 𞤷.𐮐𞢁𐹠ؤ
-𞤷.𐮐𞢁𐹠ؤ; 𞤷.𐮐𞢁𐹠ؤ; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ;  # 𞤷.𐮐𞢁𐹠ؤ
-𞤕.𐮐𞢁𐹠ؤ; 𞤷.𐮐𞢁𐹠ؤ; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ;  # 𞤷.𐮐𞢁𐹠ؤ
-𞤕.𐮐𞢁𐹠ؤ; 𞤷.𐮐𞢁𐹠ؤ; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ;  # 𞤷.𐮐𞢁𐹠ؤ
-xn--ve6h.xn--jgb1694kz0b2176a; 𞤷.𐮐𞢁𐹠ؤ; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ;  # 𞤷.𐮐𞢁𐹠ؤ
-𐲈-｡𑄳񢌻; 𐳈-.𑄳񢌻; [B1, B3, P1, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ;  # 𐳈-.𑄳
-𐲈-。𑄳񢌻; 𐳈-.𑄳񢌻; [B1, B3, P1, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ;  # 𐳈-.𑄳
-𐳈-。𑄳񢌻; 𐳈-.𑄳񢌻; [B1, B3, P1, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ;  # 𐳈-.𑄳
-xn----ue6i.xn--v80d6662t; 𐳈-.𑄳񢌻; [B1, B3, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ;  # 𐳈-.𑄳
-𐳈-｡𑄳񢌻; 𐳈-.𑄳񢌻; [B1, B3, P1, V3, V5, V6]; xn----ue6i.xn--v80d6662t; ; ;  # 𐳈-.𑄳
--󠉖ꡧ．󠊂񇆃🄉; -󠉖ꡧ.󠊂񇆃🄉; [P1, V3, V6]; xn----hg4ei0361g.xn--207ht163h7m94c; ; ;  # -ꡧ.🄉
--󠉖ꡧ.󠊂񇆃8,; ; [P1, V3, V6]; xn----hg4ei0361g.xn--8,-k362evu488a; ; ;  # -ꡧ.8,
-xn----hg4ei0361g.xn--8,-k362evu488a; -󠉖ꡧ.󠊂񇆃8,; [P1, V3, V6]; xn----hg4ei0361g.xn--8,-k362evu488a; ; ;  # -ꡧ.8,
-xn----hg4ei0361g.xn--207ht163h7m94c; -󠉖ꡧ.󠊂񇆃🄉; [V3, V6]; xn----hg4ei0361g.xn--207ht163h7m94c; ; ;  # -ꡧ.🄉
-󠾛󠈴臯𧔤.ݨ𝟝; 󠾛󠈴臯𧔤.ݨ5; [B1, P1, V6]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ;  # 臯𧔤.ݨ5
-󠾛󠈴臯𧔤.ݨ5; ; [B1, P1, V6]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ;  # 臯𧔤.ݨ5
-xn--zb1at733hm579ddhla.xn--5-b5c; 󠾛󠈴臯𧔤.ݨ5; [B1, V6]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ;  # 臯𧔤.ݨ5
-≮𐹣．𝨿; ≮𐹣.𝨿; [B1, B3, B6, P1, V5, V6]; xn--gdh1504g.xn--e92h; ; ;  # ≮𐹣.𝨿
-≮𐹣．𝨿; ≮𐹣.𝨿; [B1, B3, B6, P1, V5, V6]; xn--gdh1504g.xn--e92h; ; ;  # ≮𐹣.𝨿
-≮𐹣.𝨿; ; [B1, B3, B6, P1, V5, V6]; xn--gdh1504g.xn--e92h; ; ;  # ≮𐹣.𝨿
-≮𐹣.𝨿; ≮𐹣.𝨿; [B1, B3, B6, P1, V5, V6]; xn--gdh1504g.xn--e92h; ; ;  # ≮𐹣.𝨿
-xn--gdh1504g.xn--e92h; ≮𐹣.𝨿; [B1, B3, B6, V5, V6]; xn--gdh1504g.xn--e92h; ; ;  # ≮𐹣.𝨿
-𐹯ᯛ੍｡脥; 𐹯ᯛ੍.脥; [B1]; xn--ybc101g3m1p.xn--740a; ; ;  # 𐹯ᯛ੍.脥
-𐹯ᯛ੍。脥; 𐹯ᯛ੍.脥; [B1]; xn--ybc101g3m1p.xn--740a; ; ;  # 𐹯ᯛ੍.脥
-xn--ybc101g3m1p.xn--740a; 𐹯ᯛ੍.脥; [B1]; xn--ybc101g3m1p.xn--740a; ; ;  # 𐹯ᯛ੍.脥
-᭄ᅟ𞷿򃀍.-; ; [B1, B5, P1, V3, V5, V6]; xn--osd971cpx70btgt8b.-; ; ;  # ᭄.-
-xn--osd971cpx70btgt8b.-; ᭄ᅟ𞷿򃀍.-; [B1, B5, V3, V5, V6]; xn--osd971cpx70btgt8b.-; ; ;  # ᭄.-
-‌｡͔; ‌.͔; [C1, V5]; xn--0ug.xn--yua; ; .xn--yua; [V5, A4_2] # .͔
-‌。͔; ‌.͔; [C1, V5]; xn--0ug.xn--yua; ; .xn--yua; [V5, A4_2] # .͔
-.xn--yua; .͔; [V5, X4_2]; .xn--yua; [V5, A4_2]; ;  # .͔
-xn--0ug.xn--yua; ‌.͔; [C1, V5]; xn--0ug.xn--yua; ; ;  # .͔
-𞤥󠅮．ᡄႮ; 𞤥.ᡄႮ; [P1, V6]; xn--de6h.xn--mnd799a; ; ;  # 𞤥.ᡄႮ
-𞤥󠅮.ᡄႮ; 𞤥.ᡄႮ; [P1, V6]; xn--de6h.xn--mnd799a; ; ;  # 𞤥.ᡄႮ
+xn--0ug.xn--yo0d; \u200C.𐹺; [B1, C1]; xn--0ug.xn--yo0d; ; ;  # .𐹺
+𐡆.≯\u200C-𞥀; ; [B1, C1]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1] # 𐡆.≯-𞥀
+𐡆.>\u0338\u200C-𞥀; 𐡆.≯\u200C-𞥀; [B1, C1]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1] # 𐡆.≯-𞥀
+𐡆.>\u0338\u200C-𞤞; 𐡆.≯\u200C-𞥀; [B1, C1]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1] # 𐡆.≯-𞥀
+𐡆.≯\u200C-𞤞; 𐡆.≯\u200C-𞥀; [B1, C1]; xn--le9c.xn----rgn40iy359e; ; xn--le9c.xn----ogo9956r; [B1] # 𐡆.≯-𞥀
+xn--le9c.xn----ogo9956r; 𐡆.≯-𞥀; [B1]; xn--le9c.xn----ogo9956r; ; ;  # 𐡆.≯-𞥀
+xn--le9c.xn----rgn40iy359e; 𐡆.≯\u200C-𞥀; [B1, C1]; xn--le9c.xn----rgn40iy359e; ; ;  # 𐡆.≯-𞥀
+󠁀-。≠\uFCD7; 󠁀-.≠\u0647\u062C; [B1, V3, V7]; xn----f411m.xn--rgb7c611j; ; ;  # -.≠هج
+󠁀-。=\u0338\uFCD7; 󠁀-.≠\u0647\u062C; [B1, V3, V7]; xn----f411m.xn--rgb7c611j; ; ;  # -.≠هج
+󠁀-。≠\u0647\u062C; 󠁀-.≠\u0647\u062C; [B1, V3, V7]; xn----f411m.xn--rgb7c611j; ; ;  # -.≠هج
+󠁀-。=\u0338\u0647\u062C; 󠁀-.≠\u0647\u062C; [B1, V3, V7]; xn----f411m.xn--rgb7c611j; ; ;  # -.≠هج
+xn----f411m.xn--rgb7c611j; 󠁀-.≠\u0647\u062C; [B1, V3, V7]; xn----f411m.xn--rgb7c611j; ; ;  # -.≠هج
+񻬹𑈵。\u200D𞨶; 񻬹𑈵.\u200D𞨶; [B1, C2, V7]; xn--8g1d12120a.xn--1ug6651p; ; xn--8g1d12120a.xn--5l6h; [V7] # 𑈵.
+xn--8g1d12120a.xn--5l6h; 񻬹𑈵.𞨶; [V7]; xn--8g1d12120a.xn--5l6h; ; ;  # 𑈵.
+xn--8g1d12120a.xn--1ug6651p; 񻬹𑈵.\u200D𞨶; [B1, C2, V7]; xn--8g1d12120a.xn--1ug6651p; ; ;  # 𑈵.
+𑋧\uA9C02｡㧉򒖄; 𑋧\uA9C02.㧉򒖄; [V6, V7]; xn--2-5z4eu89y.xn--97l02706d; ; ;  # 𑋧꧀2.㧉
+𑋧\uA9C02。㧉򒖄; 𑋧\uA9C02.㧉򒖄; [V6, V7]; xn--2-5z4eu89y.xn--97l02706d; ; ;  # 𑋧꧀2.㧉
+xn--2-5z4eu89y.xn--97l02706d; 𑋧\uA9C02.㧉򒖄; [V6, V7]; xn--2-5z4eu89y.xn--97l02706d; ; ;  # 𑋧꧀2.㧉
+\u200C𽬄𐹴𞩥。≯6; \u200C𽬄𐹴𞩥.≯6; [B1, C1, V7]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; xn--so0du768aim9m.xn--6-ogo; [B1, B5, B6, V7] # 𐹴.≯6
+\u200C𽬄𐹴𞩥。>\u03386; \u200C𽬄𐹴𞩥.≯6; [B1, C1, V7]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; xn--so0du768aim9m.xn--6-ogo; [B1, B5, B6, V7] # 𐹴.≯6
+xn--so0du768aim9m.xn--6-ogo; 𽬄𐹴𞩥.≯6; [B1, B5, B6, V7]; xn--so0du768aim9m.xn--6-ogo; ; ;  # 𐹴.≯6
+xn--0ug7105gf5wfxepq.xn--6-ogo; \u200C𽬄𐹴𞩥.≯6; [B1, C1, V7]; xn--0ug7105gf5wfxepq.xn--6-ogo; ; ;  # 𐹴.≯6
+𑁿．𐹦𻞵-\u200D; 𑁿.𐹦𻞵-\u200D; [B1, C2, V6, V7]; xn--q30d.xn----ugn1088hfsxv; ; xn--q30d.xn----i26i1299n; [B1, V3, V6, V7] # 𑁿.𐹦-
+𑁿.𐹦𻞵-\u200D; ; [B1, C2, V6, V7]; xn--q30d.xn----ugn1088hfsxv; ; xn--q30d.xn----i26i1299n; [B1, V3, V6, V7] # 𑁿.𐹦-
+xn--q30d.xn----i26i1299n; 𑁿.𐹦𻞵-; [B1, V3, V6, V7]; xn--q30d.xn----i26i1299n; ; ;  # 𑁿.𐹦-
+xn--q30d.xn----ugn1088hfsxv; 𑁿.𐹦𻞵-\u200D; [B1, C2, V6, V7]; xn--q30d.xn----ugn1088hfsxv; ; ;  # 𑁿.𐹦-
+⤸ς𺱀｡\uFFA0; ⤸ς𺱀.; [V7]; xn--3xa392qmp03d.; [V7, A4_2]; xn--4xa192qmp03d.;  # ⤸ς.
+⤸ς𺱀。\u1160; ⤸ς𺱀.; [V7]; xn--3xa392qmp03d.; [V7, A4_2]; xn--4xa192qmp03d.;  # ⤸ς.
+⤸Σ𺱀。\u1160; ⤸σ𺱀.; [V7]; xn--4xa192qmp03d.; [V7, A4_2]; ;  # ⤸σ.
+⤸σ𺱀。\u1160; ⤸σ𺱀.; [V7]; xn--4xa192qmp03d.; [V7, A4_2]; ;  # ⤸σ.
+xn--4xa192qmp03d.; ⤸σ𺱀.; [V7]; xn--4xa192qmp03d.; [V7, A4_2]; ;  # ⤸σ.
+xn--3xa392qmp03d.; ⤸ς𺱀.; [V7]; xn--3xa392qmp03d.; [V7, A4_2]; ;  # ⤸ς.
+⤸Σ𺱀｡\uFFA0; ⤸σ𺱀.; [V7]; xn--4xa192qmp03d.; [V7, A4_2]; ;  # ⤸σ.
+⤸σ𺱀｡\uFFA0; ⤸σ𺱀.; [V7]; xn--4xa192qmp03d.; [V7, A4_2]; ;  # ⤸σ.
+xn--4xa192qmp03d.xn--psd; ⤸σ𺱀.\u1160; [V7]; xn--4xa192qmp03d.xn--psd; ; ;  # ⤸σ.
+xn--3xa392qmp03d.xn--psd; ⤸ς𺱀.\u1160; [V7]; xn--3xa392qmp03d.xn--psd; ; ;  # ⤸ς.
+xn--4xa192qmp03d.xn--cl7c; ⤸σ𺱀.\uFFA0; [V7]; xn--4xa192qmp03d.xn--cl7c; ; ;  # ⤸σ.
+xn--3xa392qmp03d.xn--cl7c; ⤸ς𺱀.\uFFA0; [V7]; xn--3xa392qmp03d.xn--cl7c; ; ;  # ⤸ς.
+\u0765\u1035𐫔\u06D5.𐦬𑋪Ⴃ; \u0765\u1035𐫔\u06D5.𐦬𑋪ⴃ; [B2, B3]; xn--llb10as9tqp5y.xn--ukj7371e21f; ; ;  # ݥဵ𐫔ە.𐦬𑋪ⴃ
+\u0765\u1035𐫔\u06D5.𐦬𑋪ⴃ; ; [B2, B3]; xn--llb10as9tqp5y.xn--ukj7371e21f; ; ;  # ݥဵ𐫔ە.𐦬𑋪ⴃ
+xn--llb10as9tqp5y.xn--ukj7371e21f; \u0765\u1035𐫔\u06D5.𐦬𑋪ⴃ; [B2, B3]; xn--llb10as9tqp5y.xn--ukj7371e21f; ; ;  # ݥဵ𐫔ە.𐦬𑋪ⴃ
+xn--llb10as9tqp5y.xn--bnd9168j21f; \u0765\u1035𐫔\u06D5.𐦬𑋪Ⴃ; [B2, B3, V7]; xn--llb10as9tqp5y.xn--bnd9168j21f; ; ;  # ݥဵ𐫔ە.𐦬𑋪Ⴃ
+\u0661\u1B44-킼.\u1BAA\u0616\u066C≯; ; [B1, B5, B6, V6]; xn----9pc551nk39n.xn--4fb6o571degg; ; ;  # ١᭄-킼.᮪ؖ٬≯
+\u0661\u1B44-킼.\u1BAA\u0616\u066C>\u0338; \u0661\u1B44-킼.\u1BAA\u0616\u066C≯; [B1, B5, B6, V6]; xn----9pc551nk39n.xn--4fb6o571degg; ; ;  # ١᭄-킼.᮪ؖ٬≯
+xn----9pc551nk39n.xn--4fb6o571degg; \u0661\u1B44-킼.\u1BAA\u0616\u066C≯; [B1, B5, B6, V6]; xn----9pc551nk39n.xn--4fb6o571degg; ; ;  # ١᭄-킼.᮪ؖ٬≯
+-。\u06C2\u0604򅖡𑓂; -.\u06C2\u0604򅖡𑓂; [B1, B2, B3, V3, V7]; -.xn--mfb39a7208dzgs3d; ; ;  # -.ۂ𑓂
+-。\u06C1\u0654\u0604򅖡𑓂; -.\u06C2\u0604򅖡𑓂; [B1, B2, B3, V3, V7]; -.xn--mfb39a7208dzgs3d; ; ;  # -.ۂ𑓂
+-.xn--mfb39a7208dzgs3d; -.\u06C2\u0604򅖡𑓂; [B1, B2, B3, V3, V7]; -.xn--mfb39a7208dzgs3d; ; ;  # -.ۂ𑓂
+\u200D󯑖󠁐．\u05BD𙮰ꡝ𐋡; \u200D󯑖󠁐.\u05BD𙮰ꡝ𐋡; [C2, V6, V7]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; xn--b726ey18m.xn--ldb8734fg0qcyzzg; [V6, V7] # .ֽꡝ𐋡
+\u200D󯑖󠁐.\u05BD𙮰ꡝ𐋡; ; [C2, V6, V7]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; xn--b726ey18m.xn--ldb8734fg0qcyzzg; [V6, V7] # .ֽꡝ𐋡
+xn--b726ey18m.xn--ldb8734fg0qcyzzg; 󯑖󠁐.\u05BD𙮰ꡝ𐋡; [V6, V7]; xn--b726ey18m.xn--ldb8734fg0qcyzzg; ; ;  # .ֽꡝ𐋡
+xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; \u200D󯑖󠁐.\u05BD𙮰ꡝ𐋡; [C2, V6, V7]; xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg; ; ;  # .ֽꡝ𐋡
+︒􃈵ς񀠇｡𐮈; ︒􃈵ς񀠇.𐮈; [B1, V7]; xn--3xa3729jwz5t7gl5f.xn--f29c; ; xn--4xa1729jwz5t7gl5f.xn--f29c;  # ︒ς.𐮈
+。􃈵ς񀠇。𐮈; .􃈵ς񀠇.𐮈; [V7, X4_2]; .xn--3xa88573c7n64d.xn--f29c; [V7, A4_2]; .xn--4xa68573c7n64d.xn--f29c;  # .ς.𐮈
+。􃈵Σ񀠇。𐮈; .􃈵σ񀠇.𐮈; [V7, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [V7, A4_2]; ;  # .σ.𐮈
+。􃈵σ񀠇。𐮈; .􃈵σ񀠇.𐮈; [V7, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [V7, A4_2]; ;  # .σ.𐮈
+.xn--4xa68573c7n64d.xn--f29c; .􃈵σ񀠇.𐮈; [V7, X4_2]; .xn--4xa68573c7n64d.xn--f29c; [V7, A4_2]; ;  # .σ.𐮈
+.xn--3xa88573c7n64d.xn--f29c; .􃈵ς񀠇.𐮈; [V7, X4_2]; .xn--3xa88573c7n64d.xn--f29c; [V7, A4_2]; ;  # .ς.𐮈
+︒􃈵Σ񀠇｡𐮈; ︒􃈵σ񀠇.𐮈; [B1, V7]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ;  # ︒σ.𐮈
+︒􃈵σ񀠇｡𐮈; ︒􃈵σ񀠇.𐮈; [B1, V7]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ;  # ︒σ.𐮈
+xn--4xa1729jwz5t7gl5f.xn--f29c; ︒􃈵σ񀠇.𐮈; [B1, V7]; xn--4xa1729jwz5t7gl5f.xn--f29c; ; ;  # ︒σ.𐮈
+xn--3xa3729jwz5t7gl5f.xn--f29c; ︒􃈵ς񀠇.𐮈; [B1, V7]; xn--3xa3729jwz5t7gl5f.xn--f29c; ; ;  # ︒ς.𐮈
+\u07D9．\u06EE󆾃≯󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, V7]; xn--0sb.xn--bmb691l0524t; ; ;  # ߙ.ۮ≯
+\u07D9．\u06EE󆾃>\u0338󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, V7]; xn--0sb.xn--bmb691l0524t; ; ;  # ߙ.ۮ≯
+\u07D9.\u06EE󆾃≯󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, V7]; xn--0sb.xn--bmb691l0524t; ; ;  # ߙ.ۮ≯
+\u07D9.\u06EE󆾃>\u0338󠅲; \u07D9.\u06EE󆾃≯; [B2, B3, V7]; xn--0sb.xn--bmb691l0524t; ; ;  # ߙ.ۮ≯
+xn--0sb.xn--bmb691l0524t; \u07D9.\u06EE󆾃≯; [B2, B3, V7]; xn--0sb.xn--bmb691l0524t; ; ;  # ߙ.ۮ≯
+\u1A73󚙸.𐭍; ; [B1, V6, V7]; xn--2of22352n.xn--q09c; ; ;  # ᩳ.𐭍
+xn--2of22352n.xn--q09c; \u1A73󚙸.𐭍; [B1, V6, V7]; xn--2of22352n.xn--q09c; ; ;  # ᩳ.𐭍
+⒉󠊓≠｡Ⴟ⬣Ⴈ; ⒉󠊓≠.ⴟ⬣ⴈ; [V7]; xn--1ch07f91401d.xn--45iz7d6b; ; ;  # ⒉≠.ⴟ⬣ⴈ
+⒉󠊓=\u0338｡Ⴟ⬣Ⴈ; ⒉󠊓≠.ⴟ⬣ⴈ; [V7]; xn--1ch07f91401d.xn--45iz7d6b; ; ;  # ⒉≠.ⴟ⬣ⴈ
+2.󠊓≠。Ⴟ⬣Ⴈ; 2.󠊓≠.ⴟ⬣ⴈ; [V7]; 2.xn--1chz4101l.xn--45iz7d6b; ; ;  # 2.≠.ⴟ⬣ⴈ
+2.󠊓=\u0338。Ⴟ⬣Ⴈ; 2.󠊓≠.ⴟ⬣ⴈ; [V7]; 2.xn--1chz4101l.xn--45iz7d6b; ; ;  # 2.≠.ⴟ⬣ⴈ
+2.󠊓=\u0338。ⴟ⬣ⴈ; 2.󠊓≠.ⴟ⬣ⴈ; [V7]; 2.xn--1chz4101l.xn--45iz7d6b; ; ;  # 2.≠.ⴟ⬣ⴈ
+2.󠊓≠。ⴟ⬣ⴈ; 2.󠊓≠.ⴟ⬣ⴈ; [V7]; 2.xn--1chz4101l.xn--45iz7d6b; ; ;  # 2.≠.ⴟ⬣ⴈ
+2.xn--1chz4101l.xn--45iz7d6b; 2.󠊓≠.ⴟ⬣ⴈ; [V7]; 2.xn--1chz4101l.xn--45iz7d6b; ; ;  # 2.≠.ⴟ⬣ⴈ
+⒉󠊓=\u0338｡ⴟ⬣ⴈ; ⒉󠊓≠.ⴟ⬣ⴈ; [V7]; xn--1ch07f91401d.xn--45iz7d6b; ; ;  # ⒉≠.ⴟ⬣ⴈ
+⒉󠊓≠｡ⴟ⬣ⴈ; ⒉󠊓≠.ⴟ⬣ⴈ; [V7]; xn--1ch07f91401d.xn--45iz7d6b; ; ;  # ⒉≠.ⴟ⬣ⴈ
+xn--1ch07f91401d.xn--45iz7d6b; ⒉󠊓≠.ⴟ⬣ⴈ; [V7]; xn--1ch07f91401d.xn--45iz7d6b; ; ;  # ⒉≠.ⴟ⬣ⴈ
+2.xn--1chz4101l.xn--gnd9b297j; 2.󠊓≠.Ⴟ⬣Ⴈ; [V7]; 2.xn--1chz4101l.xn--gnd9b297j; ; ;  # 2.≠.Ⴟ⬣Ⴈ
+xn--1ch07f91401d.xn--gnd9b297j; ⒉󠊓≠.Ⴟ⬣Ⴈ; [V7]; xn--1ch07f91401d.xn--gnd9b297j; ; ;  # ⒉≠.Ⴟ⬣Ⴈ
+-󠉱\u0FB8Ⴥ。-𐹽\u0774𞣑; -󠉱\u0FB8ⴥ.-𐹽\u0774𞣑; [B1, V3, V7]; xn----xmg317tgv352a.xn----05c4213ryr0g; ; ;  # -ྸⴥ.-𐹽ݴ𞣑
+-󠉱\u0FB8ⴥ。-𐹽\u0774𞣑; -󠉱\u0FB8ⴥ.-𐹽\u0774𞣑; [B1, V3, V7]; xn----xmg317tgv352a.xn----05c4213ryr0g; ; ;  # -ྸⴥ.-𐹽ݴ𞣑
+xn----xmg317tgv352a.xn----05c4213ryr0g; -󠉱\u0FB8ⴥ.-𐹽\u0774𞣑; [B1, V3, V7]; xn----xmg317tgv352a.xn----05c4213ryr0g; ; ;  # -ྸⴥ.-𐹽ݴ𞣑
+xn----xmg12fm2555h.xn----05c4213ryr0g; -󠉱\u0FB8Ⴥ.-𐹽\u0774𞣑; [B1, V3, V7]; xn----xmg12fm2555h.xn----05c4213ryr0g; ; ;  # -ྸჅ.-𐹽ݴ𞣑
+\u0659。𑄴︒\u0627\u07DD; \u0659.𑄴︒\u0627\u07DD; [B1, V6, V7]; xn--1hb.xn--mgb09fp820c08pa; ; ;  # ٙ.𑄴︒اߝ
+\u0659。𑄴。\u0627\u07DD; \u0659.𑄴.\u0627\u07DD; [B1, V6]; xn--1hb.xn--w80d.xn--mgb09f; ; ;  # ٙ.𑄴.اߝ
+xn--1hb.xn--w80d.xn--mgb09f; \u0659.𑄴.\u0627\u07DD; [B1, V6]; xn--1hb.xn--w80d.xn--mgb09f; ; ;  # ٙ.𑄴.اߝ
+xn--1hb.xn--mgb09fp820c08pa; \u0659.𑄴︒\u0627\u07DD; [B1, V6, V7]; xn--1hb.xn--mgb09fp820c08pa; ; ;  # ٙ.𑄴︒اߝ
+Ⴙ\u0638.󠆓\u200D; ⴙ\u0638.\u200D; [B1, B5, B6, C2]; xn--3gb910r.xn--1ug; ; xn--3gb910r.; [B5, B6, A4_2] # ⴙظ.
+ⴙ\u0638.󠆓\u200D; ⴙ\u0638.\u200D; [B1, B5, B6, C2]; xn--3gb910r.xn--1ug; ; xn--3gb910r.; [B5, B6, A4_2] # ⴙظ.
+xn--3gb910r.; ⴙ\u0638.; [B5, B6]; xn--3gb910r.; [B5, B6, A4_2]; ;  # ⴙظ.
+xn--3gb910r.xn--1ug; ⴙ\u0638.\u200D; [B1, B5, B6, C2]; xn--3gb910r.xn--1ug; ; ;  # ⴙظ.
+xn--3gb194c.; Ⴙ\u0638.; [B5, B6, V7]; xn--3gb194c.; [B5, B6, V7, A4_2]; ;  # Ⴙظ.
+xn--3gb194c.xn--1ug; Ⴙ\u0638.\u200D; [B1, B5, B6, C2, V7]; xn--3gb194c.xn--1ug; ; ;  # Ⴙظ.
+󠆸｡₆０𐺧\u0756; .60𐺧\u0756; [B1, X4_2]; .xn--60-cke9470y; [B1, A4_2]; ;  # .60𐺧ݖ
+󠆸。60𐺧\u0756; .60𐺧\u0756; [B1, X4_2]; .xn--60-cke9470y; [B1, A4_2]; ;  # .60𐺧ݖ
+.xn--60-cke9470y; .60𐺧\u0756; [B1, X4_2]; .xn--60-cke9470y; [B1, A4_2]; ;  # .60𐺧ݖ
+6\u084F｡-𑈴; 6\u084F.-𑈴; [B1, V3]; xn--6-jjd.xn----6n8i; ; ;  # 6ࡏ.-𑈴
+6\u084F。-𑈴; 6\u084F.-𑈴; [B1, V3]; xn--6-jjd.xn----6n8i; ; ;  # 6ࡏ.-𑈴
+xn--6-jjd.xn----6n8i; 6\u084F.-𑈴; [B1, V3]; xn--6-jjd.xn----6n8i; ; ;  # 6ࡏ.-𑈴
+\u200D񋌿𐹰｡\u0ACDς𞰎\u08D6; \u200D񋌿𐹰.\u0ACDς𞰎\u08D6; [B1, C2, V6, V7]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V6, V7] # 𐹰.્ςࣖ
+\u200D񋌿𐹰。\u0ACDς𞰎\u08D6; \u200D񋌿𐹰.\u0ACDς𞰎\u08D6; [B1, C2, V6, V7]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V6, V7] # 𐹰.્ςࣖ
+\u200D񋌿𐹰。\u0ACDΣ𞰎\u08D6; \u200D񋌿𐹰.\u0ACDσ𞰎\u08D6; [B1, C2, V6, V7]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V6, V7] # 𐹰.્σࣖ
+\u200D񋌿𐹰。\u0ACDσ𞰎\u08D6; \u200D񋌿𐹰.\u0ACDσ𞰎\u08D6; [B1, C2, V6, V7]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V6, V7] # 𐹰.્σࣖ
+xn--oo0d1330n.xn--4xa21xcwbfz15g; 񋌿𐹰.\u0ACDσ𞰎\u08D6; [B1, B5, B6, V6, V7]; xn--oo0d1330n.xn--4xa21xcwbfz15g; ; ;  # 𐹰.્σࣖ
+xn--1ugx105gq26y.xn--4xa21xcwbfz15g; \u200D񋌿𐹰.\u0ACDσ𞰎\u08D6; [B1, C2, V6, V7]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; ;  # 𐹰.્σࣖ
+xn--1ugx105gq26y.xn--3xa41xcwbfz15g; \u200D񋌿𐹰.\u0ACDς𞰎\u08D6; [B1, C2, V6, V7]; xn--1ugx105gq26y.xn--3xa41xcwbfz15g; ; ;  # 𐹰.્ςࣖ
+\u200D񋌿𐹰｡\u0ACDΣ𞰎\u08D6; \u200D񋌿𐹰.\u0ACDσ𞰎\u08D6; [B1, C2, V6, V7]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V6, V7] # 𐹰.્σࣖ
+\u200D񋌿𐹰｡\u0ACDσ𞰎\u08D6; \u200D񋌿𐹰.\u0ACDσ𞰎\u08D6; [B1, C2, V6, V7]; xn--1ugx105gq26y.xn--4xa21xcwbfz15g; ; xn--oo0d1330n.xn--4xa21xcwbfz15g; [B1, B5, B6, V6, V7] # 𐹰.્σࣖ
+⒈񟄜Ⴓ⒪．\u0DCA򘘶\u088B𐹢; ⒈񟄜ⴓ(o).\u0DCA򘘶\u088B𐹢; [B1, V6, V7, U1]; xn--(o)-ge4ax01c3t74t.xn--3xb99xpx1yoes3e; ; ;  # ⒈ⴓ(o).්ࢋ𐹢
+1.񟄜Ⴓ(o).\u0DCA򘘶\u088B𐹢; 1.񟄜ⴓ(o).\u0DCA򘘶\u088B𐹢; [B1, B6, V6, V7, U1]; 1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; ; ;  # 1.ⴓ(o).්ࢋ𐹢
+1.񟄜ⴓ(o).\u0DCA򘘶\u088B𐹢; ; [B1, B6, V6, V7, U1]; 1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; ; ;  # 1.ⴓ(o).්ࢋ𐹢
+1.񟄜Ⴓ(O).\u0DCA򘘶\u088B𐹢; 1.񟄜ⴓ(o).\u0DCA򘘶\u088B𐹢; [B1, B6, V6, V7, U1]; 1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; ; ;  # 1.ⴓ(o).්ࢋ𐹢
+1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; 1.񟄜ⴓ(o).\u0DCA򘘶\u088B𐹢; [B1, B6, V6, V7, U1]; 1.xn--(o)-ej1bu5389e.xn--3xb99xpx1yoes3e; ; ;  # 1.ⴓ(o).්ࢋ𐹢
+⒈񟄜ⴓ⒪．\u0DCA򘘶\u088B𐹢; ⒈񟄜ⴓ(o).\u0DCA򘘶\u088B𐹢; [B1, V6, V7, U1]; xn--(o)-ge4ax01c3t74t.xn--3xb99xpx1yoes3e; ; ;  # ⒈ⴓ(o).්ࢋ𐹢
+xn--(o)-ge4ax01c3t74t.xn--3xb99xpx1yoes3e; ⒈񟄜ⴓ(o).\u0DCA򘘶\u088B𐹢; [B1, V6, V7, U1]; xn--(o)-ge4ax01c3t74t.xn--3xb99xpx1yoes3e; ; ;  # ⒈ⴓ(o).්ࢋ𐹢
+1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; 1.񟄜Ⴓ(o).\u0DCA򘘶\u088B𐹢; [B1, B6, V6, V7, U1]; 1.xn--(o)-7sn88849j.xn--3xb99xpx1yoes3e; ; ;  # 1.Ⴓ(o).්ࢋ𐹢
+xn--tsh0ds63atl31n.xn--3xb99xpx1yoes3e; ⒈񟄜ⴓ⒪.\u0DCA򘘶\u088B𐹢; [B1, V6, V7]; xn--tsh0ds63atl31n.xn--3xb99xpx1yoes3e; ; ;  # ⒈ⴓ⒪.්ࢋ𐹢
+xn--rnd762h7cx3027d.xn--3xb99xpx1yoes3e; ⒈񟄜Ⴓ⒪.\u0DCA򘘶\u088B𐹢; [B1, V6, V7]; xn--rnd762h7cx3027d.xn--3xb99xpx1yoes3e; ; ;  # ⒈Ⴓ⒪.්ࢋ𐹢
+𞤷.𐮐𞢁𐹠\u0624; ; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ;  # 𞤷.𐮐𞢁𐹠ؤ
+𞤷.𐮐𞢁𐹠\u0648\u0654; 𞤷.𐮐𞢁𐹠\u0624; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ;  # 𞤷.𐮐𞢁𐹠ؤ
+𞤕.𐮐𞢁𐹠\u0648\u0654; 𞤷.𐮐𞢁𐹠\u0624; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ;  # 𞤷.𐮐𞢁𐹠ؤ
+𞤕.𐮐𞢁𐹠\u0624; 𞤷.𐮐𞢁𐹠\u0624; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ;  # 𞤷.𐮐𞢁𐹠ؤ
+xn--ve6h.xn--jgb1694kz0b2176a; 𞤷.𐮐𞢁𐹠\u0624; ; xn--ve6h.xn--jgb1694kz0b2176a; ; ;  # 𞤷.𐮐𞢁𐹠ؤ
+𐲈-｡𑄳񢌻; 𐳈-.𑄳񢌻; [B1, B3, V3, V6, V7]; xn----ue6i.xn--v80d6662t; ; ;  # 𐳈-.𑄳
+𐲈-。𑄳񢌻; 𐳈-.𑄳񢌻; [B1, B3, V3, V6, V7]; xn----ue6i.xn--v80d6662t; ; ;  # 𐳈-.𑄳
+𐳈-。𑄳񢌻; 𐳈-.𑄳񢌻; [B1, B3, V3, V6, V7]; xn----ue6i.xn--v80d6662t; ; ;  # 𐳈-.𑄳
+xn----ue6i.xn--v80d6662t; 𐳈-.𑄳񢌻; [B1, B3, V3, V6, V7]; xn----ue6i.xn--v80d6662t; ; ;  # 𐳈-.𑄳
+𐳈-｡𑄳񢌻; 𐳈-.𑄳񢌻; [B1, B3, V3, V6, V7]; xn----ue6i.xn--v80d6662t; ; ;  # 𐳈-.𑄳
+-󠉖ꡧ．󠊂񇆃🄉; -󠉖ꡧ.󠊂񇆃8,; [V3, V7, U1]; xn----hg4ei0361g.xn--8,-k362evu488a; ; ;  # -ꡧ.8,
+-󠉖ꡧ.󠊂񇆃8,; ; [V3, V7, U1]; xn----hg4ei0361g.xn--8,-k362evu488a; ; ;  # -ꡧ.8,
+xn----hg4ei0361g.xn--8,-k362evu488a; -󠉖ꡧ.󠊂񇆃8,; [V3, V7, U1]; xn----hg4ei0361g.xn--8,-k362evu488a; ; ;  # -ꡧ.8,
+xn----hg4ei0361g.xn--207ht163h7m94c; -󠉖ꡧ.󠊂񇆃🄉; [V3, V7]; xn----hg4ei0361g.xn--207ht163h7m94c; ; ;  # -ꡧ.🄉
+󠾛󠈴臯𧔤.\u0768𝟝; 󠾛󠈴臯𧔤.\u07685; [B1, V7]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ;  # 臯𧔤.ݨ5
+󠾛󠈴臯𧔤.\u07685; ; [B1, V7]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ;  # 臯𧔤.ݨ5
+xn--zb1at733hm579ddhla.xn--5-b5c; 󠾛󠈴臯𧔤.\u07685; [B1, V7]; xn--zb1at733hm579ddhla.xn--5-b5c; ; ;  # 臯𧔤.ݨ5
+≮𐹣．𝨿; ≮𐹣.𝨿; [B1, V6]; xn--gdh1504g.xn--e92h; ; ;  # ≮𐹣.𝨿
+<\u0338𐹣．𝨿; ≮𐹣.𝨿; [B1, V6]; xn--gdh1504g.xn--e92h; ; ;  # ≮𐹣.𝨿
+≮𐹣.𝨿; ; [B1, V6]; xn--gdh1504g.xn--e92h; ; ;  # ≮𐹣.𝨿
+<\u0338𐹣.𝨿; ≮𐹣.𝨿; [B1, V6]; xn--gdh1504g.xn--e92h; ; ;  # ≮𐹣.𝨿
+xn--gdh1504g.xn--e92h; ≮𐹣.𝨿; [B1, V6]; xn--gdh1504g.xn--e92h; ; ;  # ≮𐹣.𝨿
+𐹯ᯛ\u0A4D｡脥; 𐹯ᯛ\u0A4D.脥; [B1]; xn--ybc101g3m1p.xn--740a; ; ;  # 𐹯ᯛ੍.脥
+𐹯ᯛ\u0A4D。脥; 𐹯ᯛ\u0A4D.脥; [B1]; xn--ybc101g3m1p.xn--740a; ; ;  # 𐹯ᯛ੍.脥
+xn--ybc101g3m1p.xn--740a; 𐹯ᯛ\u0A4D.脥; [B1]; xn--ybc101g3m1p.xn--740a; ; ;  # 𐹯ᯛ੍.脥
+\u1B44\u115F𞷿򃀍.-; \u1B44𞷿򃀍.-; [B1, B5, V3, V6, V7]; xn--1uf9538sxny9a.-; ; ;  # ᭄.-
+xn--1uf9538sxny9a.-; \u1B44𞷿򃀍.-; [B1, B5, V3, V6, V7]; xn--1uf9538sxny9a.-; ; ;  # ᭄.-
+xn--osd971cpx70btgt8b.-; \u1B44\u115F𞷿򃀍.-; [B1, B5, V3, V6, V7]; xn--osd971cpx70btgt8b.-; ; ;  # ᭄.-
+\u200C｡\u0354; \u200C.\u0354; [C1, V6]; xn--0ug.xn--yua; ; .xn--yua; [V6, A4_2] # .͔
+\u200C。\u0354; \u200C.\u0354; [C1, V6]; xn--0ug.xn--yua; ; .xn--yua; [V6, A4_2] # .͔
+.xn--yua; .\u0354; [V6, X4_2]; .xn--yua; [V6, A4_2]; ;  # .͔
+xn--0ug.xn--yua; \u200C.\u0354; [C1, V6]; xn--0ug.xn--yua; ; ;  # .͔
+𞤥󠅮．ᡄႮ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
+𞤥󠅮.ᡄႮ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
 𞤥󠅮.ᡄⴎ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
-𞤃󠅮.ᡄႮ; 𞤥.ᡄႮ; [P1, V6]; xn--de6h.xn--mnd799a; ; ;  # 𞤥.ᡄႮ
+𞤃󠅮.ᡄႮ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
 𞤃󠅮.ᡄⴎ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
 xn--de6h.xn--37e857h; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
 𞤥.ᡄⴎ; ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
-𞤃.ᡄႮ; 𞤥.ᡄႮ; [P1, V6]; xn--de6h.xn--mnd799a; ; ;  # 𞤥.ᡄႮ
+𞤃.ᡄႮ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
 𞤃.ᡄⴎ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
-xn--de6h.xn--mnd799a; 𞤥.ᡄႮ; [V6]; xn--de6h.xn--mnd799a; ; ;  # 𞤥.ᡄႮ
 𞤥󠅮．ᡄⴎ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
-𞤃󠅮．ᡄႮ; 𞤥.ᡄႮ; [P1, V6]; xn--de6h.xn--mnd799a; ; ;  # 𞤥.ᡄႮ
+𞤃󠅮．ᡄႮ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
 𞤃󠅮．ᡄⴎ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
-𞤥.ᡄႮ; ; [P1, V6]; xn--de6h.xn--mnd799a; ; ;  # 𞤥.ᡄႮ
+xn--de6h.xn--mnd799a; 𞤥.ᡄႮ; [V7]; xn--de6h.xn--mnd799a; ; ;  # 𞤥.ᡄႮ
+𞤥.ᡄႮ; 𞤥.ᡄⴎ; ; xn--de6h.xn--37e857h; ; ;  # 𞤥.ᡄⴎ
 𞤧𝨨Ξ．𪺏㛨❸; 𞤧𝨨ξ.𪺏㛨❸; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ;  # 𞤧𝨨ξ.𪺏㛨❸
 𞤧𝨨Ξ.𪺏㛨❸; 𞤧𝨨ξ.𪺏㛨❸; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ;  # 𞤧𝨨ξ.𪺏㛨❸
 𞤧𝨨ξ.𪺏㛨❸; ; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ;  # 𞤧𝨨ξ.𪺏㛨❸
@@ -880,615 +945,627 @@ xn--zxa5691vboja.xn--bfi293ci119b; 𞤧𝨨ξ.𪺏㛨❸; [B2, B3, B6]; xn--zxa5
 𞤧𝨨ξ．𪺏㛨❸; 𞤧𝨨ξ.𪺏㛨❸; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ;  # 𞤧𝨨ξ.𪺏㛨❸
 𞤅𝨨Ξ．𪺏㛨❸; 𞤧𝨨ξ.𪺏㛨❸; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ;  # 𞤧𝨨ξ.𪺏㛨❸
 𞤅𝨨ξ．𪺏㛨❸; 𞤧𝨨ξ.𪺏㛨❸; [B2, B3, B6]; xn--zxa5691vboja.xn--bfi293ci119b; ; ;  # 𞤧𝨨ξ.𪺏㛨❸
-᠆몆‌-｡Ⴛ𐦅︒; ᠆몆‌-.Ⴛ𐦅︒; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--znd2362jhgh; ; xn----e3j6620g.xn--znd2362jhgh; [B1, B5, B6, P1, V3, V6] # ᠆몆-.Ⴛ𐦅︒
-᠆몆‌-｡Ⴛ𐦅︒; ᠆몆‌-.Ⴛ𐦅︒; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--znd2362jhgh; ; xn----e3j6620g.xn--znd2362jhgh; [B1, B5, B6, P1, V3, V6] # ᠆몆-.Ⴛ𐦅︒
-᠆몆‌-。Ⴛ𐦅。; ᠆몆‌-.Ⴛ𐦅.; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--znd4948j.; ; xn----e3j6620g.xn--znd4948j.; [B1, B5, B6, P1, V3, V6] # ᠆몆-.Ⴛ𐦅.
-᠆몆‌-。Ⴛ𐦅。; ᠆몆‌-.Ⴛ𐦅.; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--znd4948j.; ; xn----e3j6620g.xn--znd4948j.; [B1, B5, B6, P1, V3, V6] # ᠆몆-.Ⴛ𐦅.
-᠆몆‌-。ⴛ𐦅。; ᠆몆‌-.ⴛ𐦅.; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--jlju661e.; ; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, P1, V3, V6] # ᠆몆-.ⴛ𐦅.
-᠆몆‌-。ⴛ𐦅。; ᠆몆‌-.ⴛ𐦅.; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--jlju661e.; ; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, P1, V3, V6] # ᠆몆-.ⴛ𐦅.
-xn----e3j6620g.xn--jlju661e.; ᠆몆-.ⴛ𐦅.; [B1, B5, B6, V3, V6]; xn----e3j6620g.xn--jlju661e.; ; ;  # ᠆몆-.ⴛ𐦅.
-xn----e3j425bsk1o.xn--jlju661e.; ᠆몆‌-.ⴛ𐦅.; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--jlju661e.; ; ;  # ᠆몆-.ⴛ𐦅.
-xn----e3j6620g.xn--znd4948j.; ᠆몆-.Ⴛ𐦅.; [B1, B5, B6, V3, V6]; xn----e3j6620g.xn--znd4948j.; ; ;  # ᠆몆-.Ⴛ𐦅.
-xn----e3j425bsk1o.xn--znd4948j.; ᠆몆‌-.Ⴛ𐦅.; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--znd4948j.; ; ;  # ᠆몆-.Ⴛ𐦅.
-᠆몆‌-｡ⴛ𐦅︒; ᠆몆‌-.ⴛ𐦅︒; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; xn----e3j6620g.xn--jlj4997dhgh; [B1, B5, B6, P1, V3, V6] # ᠆몆-.ⴛ𐦅︒
-᠆몆‌-｡ⴛ𐦅︒; ᠆몆‌-.ⴛ𐦅︒; [B1, B5, B6, C1, P1, V3, V6]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; xn----e3j6620g.xn--jlj4997dhgh; [B1, B5, B6, P1, V3, V6] # ᠆몆-.ⴛ𐦅︒
-xn----e3j6620g.xn--jlj4997dhgh; ᠆몆-.ⴛ𐦅︒; [B1, B5, B6, V3, V6]; xn----e3j6620g.xn--jlj4997dhgh; ; ;  # ᠆몆-.ⴛ𐦅︒
-xn----e3j425bsk1o.xn--jlj4997dhgh; ᠆몆‌-.ⴛ𐦅︒; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; ;  # ᠆몆-.ⴛ𐦅︒
-xn----e3j6620g.xn--znd2362jhgh; ᠆몆-.Ⴛ𐦅︒; [B1, B5, B6, V3, V6]; xn----e3j6620g.xn--znd2362jhgh; ; ;  # ᠆몆-.Ⴛ𐦅︒
-xn----e3j425bsk1o.xn--znd2362jhgh; ᠆몆‌-.Ⴛ𐦅︒; [B1, B5, B6, C1, V3, V6]; xn----e3j425bsk1o.xn--znd2362jhgh; ; ;  # ᠆몆-.Ⴛ𐦅︒
-󠾳.︒⥱‌𐹬; ; [B1, C1, P1, V6]; xn--uf66e.xn--0ugz28axl3pqxna; ; xn--uf66e.xn--qtiz073e3ik; [B1, P1, V6] # .︒⥱𐹬
-󠾳.。⥱‌𐹬; 󠾳..⥱‌𐹬; [B1, C1, P1, V6, X4_2]; xn--uf66e..xn--0ugz28as66q; [B1, C1, P1, V6, A4_2]; xn--uf66e..xn--qti2829e; [B1, P1, V6, A4_2] # ..⥱𐹬
-xn--uf66e..xn--qti2829e; 󠾳..⥱𐹬; [B1, V6, X4_2]; xn--uf66e..xn--qti2829e; [B1, V6, A4_2]; ;  # ..⥱𐹬
-xn--uf66e..xn--0ugz28as66q; 󠾳..⥱‌𐹬; [B1, C1, V6, X4_2]; xn--uf66e..xn--0ugz28as66q; [B1, C1, V6, A4_2]; ;  # ..⥱𐹬
-xn--uf66e.xn--qtiz073e3ik; 󠾳.︒⥱𐹬; [B1, V6]; xn--uf66e.xn--qtiz073e3ik; ; ;  # .︒⥱𐹬
-xn--uf66e.xn--0ugz28axl3pqxna; 󠾳.︒⥱‌𐹬; [B1, C1, V6]; xn--uf66e.xn--0ugz28axl3pqxna; ; ;  # .︒⥱𐹬
-𐯖.𐹠Ⴑ񚇜𐫊; ; [B1, P1, V6]; xn--n49c.xn--pnd4619jwicl862o; ; ;  # .𐹠Ⴑ𐫊
-𐯖.𐹠ⴑ񚇜𐫊; ; [B1, P1, V6]; xn--n49c.xn--8kj8702ewicl862o; ; ;  # .𐹠ⴑ𐫊
-xn--n49c.xn--8kj8702ewicl862o; 𐯖.𐹠ⴑ񚇜𐫊; [B1, V6]; xn--n49c.xn--8kj8702ewicl862o; ; ;  # .𐹠ⴑ𐫊
-xn--n49c.xn--pnd4619jwicl862o; 𐯖.𐹠Ⴑ񚇜𐫊; [B1, V6]; xn--n49c.xn--pnd4619jwicl862o; ; ;  # .𐹠Ⴑ𐫊
-ྤ񱤯．𝟭Ⴛ; ྤ񱤯.1Ⴛ; [P1, V5, V6]; xn--0fd40533g.xn--1-q1g; ; ;  # ྤ.1Ⴛ
-ྤ񱤯.1Ⴛ; ; [P1, V5, V6]; xn--0fd40533g.xn--1-q1g; ; ;  # ྤ.1Ⴛ
-ྤ񱤯.1ⴛ; ; [P1, V5, V6]; xn--0fd40533g.xn--1-tws; ; ;  # ྤ.1ⴛ
-xn--0fd40533g.xn--1-tws; ྤ񱤯.1ⴛ; [V5, V6]; xn--0fd40533g.xn--1-tws; ; ;  # ྤ.1ⴛ
-xn--0fd40533g.xn--1-q1g; ྤ񱤯.1Ⴛ; [V5, V6]; xn--0fd40533g.xn--1-q1g; ; ;  # ྤ.1Ⴛ
-ྤ񱤯．𝟭ⴛ; ྤ񱤯.1ⴛ; [P1, V5, V6]; xn--0fd40533g.xn--1-tws; ; ;  # ྤ.1ⴛ
--ࠦ齀。릿𐸋; -ࠦ齀.릿𐸋; [B1, B5, B6, P1, V3, V6]; xn----6gd0617i.xn--7y2bm55m; ; ;  # -ࠦ齀.릿
--ࠦ齀。릿𐸋; -ࠦ齀.릿𐸋; [B1, B5, B6, P1, V3, V6]; xn----6gd0617i.xn--7y2bm55m; ; ;  # -ࠦ齀.릿
-xn----6gd0617i.xn--7y2bm55m; -ࠦ齀.릿𐸋; [B1, B5, B6, V3, V6]; xn----6gd0617i.xn--7y2bm55m; ; ;  # -ࠦ齀.릿
-󠔊ܜ鹝꾗。񾵐‍‍⏃; 󠔊ܜ鹝꾗.񾵐‍‍⏃; [B1, B6, C2, P1, V6]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; xn--mnb6558e91kyq533a.xn--6mh27269e; [B1, B6, P1, V6] # ܜ鹝꾗.⏃
-󠔊ܜ鹝꾗。񾵐‍‍⏃; 󠔊ܜ鹝꾗.񾵐‍‍⏃; [B1, B6, C2, P1, V6]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; xn--mnb6558e91kyq533a.xn--6mh27269e; [B1, B6, P1, V6] # ܜ鹝꾗.⏃
-xn--mnb6558e91kyq533a.xn--6mh27269e; 󠔊ܜ鹝꾗.񾵐⏃; [B1, B6, V6]; xn--mnb6558e91kyq533a.xn--6mh27269e; ; ;  # ܜ鹝꾗.⏃
-xn--mnb6558e91kyq533a.xn--1uga46zs309y; 󠔊ܜ鹝꾗.񾵐‍‍⏃; [B1, B6, C2, V6]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; ;  # ܜ鹝꾗.⏃
-≮．-܈--; ≮.-܈--; [B1, P1, V2, V3, V6]; xn--gdh.xn------eqf; ; ;  # ≮.-܈--
-≮．-܈--; ≮.-܈--; [B1, P1, V2, V3, V6]; xn--gdh.xn------eqf; ; ;  # ≮.-܈--
-≮.-܈--; ; [B1, P1, V2, V3, V6]; xn--gdh.xn------eqf; ; ;  # ≮.-܈--
-≮.-܈--; ≮.-܈--; [B1, P1, V2, V3, V6]; xn--gdh.xn------eqf; ; ;  # ≮.-܈--
-xn--gdh.xn------eqf; ≮.-܈--; [B1, V2, V3, V6]; xn--gdh.xn------eqf; ; ;  # ≮.-܈--
-𐹸󠋳。‍ς𝟩; 𐹸󠋳.‍ς7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-xmb248s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # 𐹸.ς7
-𐹸󠋳。‍ς7; 𐹸󠋳.‍ς7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-xmb248s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # 𐹸.ς7
-𐹸󠋳。‍Σ7; 𐹸󠋳.‍σ7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # 𐹸.σ7
-𐹸󠋳。‍σ7; 𐹸󠋳.‍σ7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # 𐹸.σ7
-xn--wo0di5177c.xn--7-zmb; 𐹸󠋳.σ7; [B1, V6]; xn--wo0di5177c.xn--7-zmb; ; ;  # 𐹸.σ7
-xn--wo0di5177c.xn--7-zmb938s; 𐹸󠋳.‍σ7; [B1, C2, V6]; xn--wo0di5177c.xn--7-zmb938s; ; ;  # 𐹸.σ7
-xn--wo0di5177c.xn--7-xmb248s; 𐹸󠋳.‍ς7; [B1, C2, V6]; xn--wo0di5177c.xn--7-xmb248s; ; ;  # 𐹸.ς7
-𐹸󠋳。‍Σ𝟩; 𐹸󠋳.‍σ7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # 𐹸.σ7
-𐹸󠋳。‍σ𝟩; 𐹸󠋳.‍σ7; [B1, C2, P1, V6]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, P1, V6] # 𐹸.σ7
-ς򅜌８.𞭤; ς򅜌8.𞭤; [P1, V6]; xn--8-xmb44974n.xn--su6h; ; xn--8-zmb14974n.xn--su6h;  # ς8.
-ς򅜌8.𞭤; ; [P1, V6]; xn--8-xmb44974n.xn--su6h; ; xn--8-zmb14974n.xn--su6h;  # ς8.
-Σ򅜌8.𞭤; σ򅜌8.𞭤; [P1, V6]; xn--8-zmb14974n.xn--su6h; ; ;  # σ8.
-σ򅜌8.𞭤; ; [P1, V6]; xn--8-zmb14974n.xn--su6h; ; ;  # σ8.
-xn--8-zmb14974n.xn--su6h; σ򅜌8.𞭤; [V6]; xn--8-zmb14974n.xn--su6h; ; ;  # σ8.
-xn--8-xmb44974n.xn--su6h; ς򅜌8.𞭤; [V6]; xn--8-xmb44974n.xn--su6h; ; ;  # ς8.
-Σ򅜌８.𞭤; σ򅜌8.𞭤; [P1, V6]; xn--8-zmb14974n.xn--su6h; ; ;  # σ8.
-σ򅜌８.𞭤; σ򅜌8.𞭤; [P1, V6]; xn--8-zmb14974n.xn--su6h; ; ;  # σ8.
-‌ᡑ🄀ڄ．-𐫄𑲤; ‌ᡑ🄀ڄ.-𐫄𑲤; [B1, C1, P1, V3, V6]; xn--9ib722gvtfi563c.xn----ek5i065b; ; xn--9ib722gbw95a.xn----ek5i065b; [B1, B5, B6, P1, V3, V6] # ᡑ🄀ڄ.-𐫄𑲤
-‌ᡑ0.ڄ.-𐫄𑲤; ; [B1, C1, V3]; xn--0-o7j263b.xn--9ib.xn----ek5i065b; ; xn--0-o7j.xn--9ib.xn----ek5i065b; [B1, V3] # ᡑ0.ڄ.-𐫄𑲤
-xn--0-o7j.xn--9ib.xn----ek5i065b; ᡑ0.ڄ.-𐫄𑲤; [B1, V3]; xn--0-o7j.xn--9ib.xn----ek5i065b; ; ;  # ᡑ0.ڄ.-𐫄𑲤
-xn--0-o7j263b.xn--9ib.xn----ek5i065b; ‌ᡑ0.ڄ.-𐫄𑲤; [B1, C1, V3]; xn--0-o7j263b.xn--9ib.xn----ek5i065b; ; ;  # ᡑ0.ڄ.-𐫄𑲤
-xn--9ib722gbw95a.xn----ek5i065b; ᡑ🄀ڄ.-𐫄𑲤; [B1, B5, B6, V3, V6]; xn--9ib722gbw95a.xn----ek5i065b; ; ;  # ᡑ🄀ڄ.-𐫄𑲤
-xn--9ib722gvtfi563c.xn----ek5i065b; ‌ᡑ🄀ڄ.-𐫄𑲤; [B1, C1, V3, V6]; xn--9ib722gvtfi563c.xn----ek5i065b; ; ;  # ᡑ🄀ڄ.-𐫄𑲤
-𖠍。𐪿넯򞵲; 𖠍.𐪿넯򞵲; [B2, B3, P1, V6]; xn--4e9e.xn--l60bj21opd57g; ; ;  # 𖠍.넯
-𖠍。𐪿넯򞵲; 𖠍.𐪿넯򞵲; [B2, B3, P1, V6]; xn--4e9e.xn--l60bj21opd57g; ; ;  # 𖠍.넯
-xn--4e9e.xn--l60bj21opd57g; 𖠍.𐪿넯򞵲; [B2, B3, V6]; xn--4e9e.xn--l60bj21opd57g; ; ;  # 𖠍.넯
-᠇Ⴘ。؃Ⴈ𝆊; ᠇Ⴘ.؃Ⴈ𝆊; [B1, P1, V6]; xn--wnd558a.xn--lfb465c1v87a; ; ;  # ᠇Ⴘ.Ⴈ𝆊
-᠇ⴘ。؃ⴈ𝆊; ᠇ⴘ.؃ⴈ𝆊; [B1, P1, V6]; xn--d6e009h.xn--lfb290rfu3z; ; ;  # ᠇ⴘ.ⴈ𝆊
-xn--d6e009h.xn--lfb290rfu3z; ᠇ⴘ.؃ⴈ𝆊; [B1, V6]; xn--d6e009h.xn--lfb290rfu3z; ; ;  # ᠇ⴘ.ⴈ𝆊
-xn--wnd558a.xn--lfb465c1v87a; ᠇Ⴘ.؃Ⴈ𝆊; [B1, V6]; xn--wnd558a.xn--lfb465c1v87a; ; ;  # ᠇Ⴘ.Ⴈ𝆊
-⒚󠋑𞤰。牣٧Ⴜᣥ; ⒚󠋑𞤰.牣٧Ⴜᣥ; [B1, B5, P1, V6]; xn--cthy466n29j3e.xn--gib404ccxgh00h; ; ;  # ⒚𞤰.牣٧Ⴜᣥ
-19.󠋑𞤰。牣٧Ⴜᣥ; 19.󠋑𞤰.牣٧Ⴜᣥ; [B1, B5, P1, V6]; 19.xn--oe6h75760c.xn--gib404ccxgh00h; ; ;  # 19.𞤰.牣٧Ⴜᣥ
-19.󠋑𞤰。牣٧ⴜᣥ; 19.󠋑𞤰.牣٧ⴜᣥ; [B1, B5, P1, V6]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ;  # 19.𞤰.牣٧ⴜᣥ
-19.󠋑𞤎。牣٧Ⴜᣥ; 19.󠋑𞤰.牣٧Ⴜᣥ; [B1, B5, P1, V6]; 19.xn--oe6h75760c.xn--gib404ccxgh00h; ; ;  # 19.𞤰.牣٧Ⴜᣥ
-19.󠋑𞤎。牣٧ⴜᣥ; 19.󠋑𞤰.牣٧ⴜᣥ; [B1, B5, P1, V6]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ;  # 19.𞤰.牣٧ⴜᣥ
-19.xn--oe6h75760c.xn--gib285gtxo2l9d; 19.󠋑𞤰.牣٧ⴜᣥ; [B1, B5, V6]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ;  # 19.𞤰.牣٧ⴜᣥ
-19.xn--oe6h75760c.xn--gib404ccxgh00h; 19.󠋑𞤰.牣٧Ⴜᣥ; [B1, B5, V6]; 19.xn--oe6h75760c.xn--gib404ccxgh00h; ; ;  # 19.𞤰.牣٧Ⴜᣥ
-⒚󠋑𞤰。牣٧ⴜᣥ; ⒚󠋑𞤰.牣٧ⴜᣥ; [B1, B5, P1, V6]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ;  # ⒚𞤰.牣٧ⴜᣥ
-⒚󠋑𞤎。牣٧Ⴜᣥ; ⒚󠋑𞤰.牣٧Ⴜᣥ; [B1, B5, P1, V6]; xn--cthy466n29j3e.xn--gib404ccxgh00h; ; ;  # ⒚𞤰.牣٧Ⴜᣥ
-⒚󠋑𞤎。牣٧ⴜᣥ; ⒚󠋑𞤰.牣٧ⴜᣥ; [B1, B5, P1, V6]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ;  # ⒚𞤰.牣٧ⴜᣥ
-xn--cthy466n29j3e.xn--gib285gtxo2l9d; ⒚󠋑𞤰.牣٧ⴜᣥ; [B1, B5, V6]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ;  # ⒚𞤰.牣٧ⴜᣥ
-xn--cthy466n29j3e.xn--gib404ccxgh00h; ⒚󠋑𞤰.牣٧Ⴜᣥ; [B1, B5, V6]; xn--cthy466n29j3e.xn--gib404ccxgh00h; ; ;  # ⒚𞤰.牣٧Ⴜᣥ
--𐋱𐰽⒈.Ⴓ; ; [B1, P1, V3, V6]; xn----ecp0206g90h.xn--rnd; ; ;  # -𐋱𐰽⒈.Ⴓ
--𐋱𐰽1..Ⴓ; ; [B1, P1, V3, V6, X4_2]; xn---1-895nq11a..xn--rnd; [B1, P1, V3, V6, A4_2]; ;  # -𐋱𐰽1..Ⴓ
+᠆몆\u200C-｡Ⴛ𐦅︒; ᠆몆\u200C-.ⴛ𐦅︒; [B1, B5, B6, C1, V3, V7]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; xn----e3j6620g.xn--jlj4997dhgh; [B1, B5, B6, V3, V7] # ᠆몆-.ⴛ𐦅︒
+᠆몆\u200C-｡Ⴛ𐦅︒; ᠆몆\u200C-.ⴛ𐦅︒; [B1, B5, B6, C1, V3, V7]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; xn----e3j6620g.xn--jlj4997dhgh; [B1, B5, B6, V3, V7] # ᠆몆-.ⴛ𐦅︒
+᠆몆\u200C-。Ⴛ𐦅。; ᠆몆\u200C-.ⴛ𐦅.; [B1, B5, B6, C1, V3]; xn----e3j425bsk1o.xn--jlju661e.; [B1, B5, B6, C1, V3, A4_2]; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, V3, A4_2] # ᠆몆-.ⴛ𐦅.
+᠆몆\u200C-。Ⴛ𐦅。; ᠆몆\u200C-.ⴛ𐦅.; [B1, B5, B6, C1, V3]; xn----e3j425bsk1o.xn--jlju661e.; [B1, B5, B6, C1, V3, A4_2]; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, V3, A4_2] # ᠆몆-.ⴛ𐦅.
+᠆몆\u200C-。ⴛ𐦅。; ᠆몆\u200C-.ⴛ𐦅.; [B1, B5, B6, C1, V3]; xn----e3j425bsk1o.xn--jlju661e.; [B1, B5, B6, C1, V3, A4_2]; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, V3, A4_2] # ᠆몆-.ⴛ𐦅.
+᠆몆\u200C-。ⴛ𐦅。; ᠆몆\u200C-.ⴛ𐦅.; [B1, B5, B6, C1, V3]; xn----e3j425bsk1o.xn--jlju661e.; [B1, B5, B6, C1, V3, A4_2]; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, V3, A4_2] # ᠆몆-.ⴛ𐦅.
+xn----e3j6620g.xn--jlju661e.; ᠆몆-.ⴛ𐦅.; [B1, B5, B6, V3]; xn----e3j6620g.xn--jlju661e.; [B1, B5, B6, V3, A4_2]; ;  # ᠆몆-.ⴛ𐦅.
+xn----e3j425bsk1o.xn--jlju661e.; ᠆몆\u200C-.ⴛ𐦅.; [B1, B5, B6, C1, V3]; xn----e3j425bsk1o.xn--jlju661e.; [B1, B5, B6, C1, V3, A4_2]; ;  # ᠆몆-.ⴛ𐦅.
+᠆몆\u200C-｡ⴛ𐦅︒; ᠆몆\u200C-.ⴛ𐦅︒; [B1, B5, B6, C1, V3, V7]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; xn----e3j6620g.xn--jlj4997dhgh; [B1, B5, B6, V3, V7] # ᠆몆-.ⴛ𐦅︒
+᠆몆\u200C-｡ⴛ𐦅︒; ᠆몆\u200C-.ⴛ𐦅︒; [B1, B5, B6, C1, V3, V7]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; xn----e3j6620g.xn--jlj4997dhgh; [B1, B5, B6, V3, V7] # ᠆몆-.ⴛ𐦅︒
+xn----e3j6620g.xn--jlj4997dhgh; ᠆몆-.ⴛ𐦅︒; [B1, B5, B6, V3, V7]; xn----e3j6620g.xn--jlj4997dhgh; ; ;  # ᠆몆-.ⴛ𐦅︒
+xn----e3j425bsk1o.xn--jlj4997dhgh; ᠆몆\u200C-.ⴛ𐦅︒; [B1, B5, B6, C1, V3, V7]; xn----e3j425bsk1o.xn--jlj4997dhgh; ; ;  # ᠆몆-.ⴛ𐦅︒
+xn----e3j6620g.xn--znd4948j.; ᠆몆-.Ⴛ𐦅.; [B1, B5, B6, V3, V7]; xn----e3j6620g.xn--znd4948j.; [B1, B5, B6, V3, V7, A4_2]; ;  # ᠆몆-.Ⴛ𐦅.
+xn----e3j425bsk1o.xn--znd4948j.; ᠆몆\u200C-.Ⴛ𐦅.; [B1, B5, B6, C1, V3, V7]; xn----e3j425bsk1o.xn--znd4948j.; [B1, B5, B6, C1, V3, V7, A4_2]; ;  # ᠆몆-.Ⴛ𐦅.
+xn----e3j6620g.xn--znd2362jhgh; ᠆몆-.Ⴛ𐦅︒; [B1, B5, B6, V3, V7]; xn----e3j6620g.xn--znd2362jhgh; ; ;  # ᠆몆-.Ⴛ𐦅︒
+xn----e3j425bsk1o.xn--znd2362jhgh; ᠆몆\u200C-.Ⴛ𐦅︒; [B1, B5, B6, C1, V3, V7]; xn----e3j425bsk1o.xn--znd2362jhgh; ; ;  # ᠆몆-.Ⴛ𐦅︒
+󠾳.︒⥱\u200C𐹬; ; [B1, C1, V7]; xn--uf66e.xn--0ugz28axl3pqxna; ; xn--uf66e.xn--qtiz073e3ik; [B1, V7] # .︒⥱𐹬
+󠾳.。⥱\u200C𐹬; 󠾳..⥱\u200C𐹬; [B1, C1, V7, X4_2]; xn--uf66e..xn--0ugz28as66q; [B1, C1, V7, A4_2]; xn--uf66e..xn--qti2829e; [B1, V7, A4_2] # ..⥱𐹬
+xn--uf66e..xn--qti2829e; 󠾳..⥱𐹬; [B1, V7, X4_2]; xn--uf66e..xn--qti2829e; [B1, V7, A4_2]; ;  # ..⥱𐹬
+xn--uf66e..xn--0ugz28as66q; 󠾳..⥱\u200C𐹬; [B1, C1, V7, X4_2]; xn--uf66e..xn--0ugz28as66q; [B1, C1, V7, A4_2]; ;  # ..⥱𐹬
+xn--uf66e.xn--qtiz073e3ik; 󠾳.︒⥱𐹬; [B1, V7]; xn--uf66e.xn--qtiz073e3ik; ; ;  # .︒⥱𐹬
+xn--uf66e.xn--0ugz28axl3pqxna; 󠾳.︒⥱\u200C𐹬; [B1, C1, V7]; xn--uf66e.xn--0ugz28axl3pqxna; ; ;  # .︒⥱𐹬
+𐯖.𐹠Ⴑ񚇜𐫊; 𐯖.𐹠ⴑ񚇜𐫊; [B1, V7]; xn--n49c.xn--8kj8702ewicl862o; ; ;  # .𐹠ⴑ𐫊
+𐯖.𐹠ⴑ񚇜𐫊; ; [B1, V7]; xn--n49c.xn--8kj8702ewicl862o; ; ;  # .𐹠ⴑ𐫊
+xn--n49c.xn--8kj8702ewicl862o; 𐯖.𐹠ⴑ񚇜𐫊; [B1, V7]; xn--n49c.xn--8kj8702ewicl862o; ; ;  # .𐹠ⴑ𐫊
+xn--n49c.xn--pnd4619jwicl862o; 𐯖.𐹠Ⴑ񚇜𐫊; [B1, V7]; xn--n49c.xn--pnd4619jwicl862o; ; ;  # .𐹠Ⴑ𐫊
+\u0FA4񱤯．𝟭Ⴛ; \u0FA4񱤯.1ⴛ; [V6, V7]; xn--0fd40533g.xn--1-tws; ; ;  # ྤ.1ⴛ
+\u0FA4񱤯.1Ⴛ; \u0FA4񱤯.1ⴛ; [V6, V7]; xn--0fd40533g.xn--1-tws; ; ;  # ྤ.1ⴛ
+\u0FA4񱤯.1ⴛ; ; [V6, V7]; xn--0fd40533g.xn--1-tws; ; ;  # ྤ.1ⴛ
+xn--0fd40533g.xn--1-tws; \u0FA4񱤯.1ⴛ; [V6, V7]; xn--0fd40533g.xn--1-tws; ; ;  # ྤ.1ⴛ
+\u0FA4񱤯．𝟭ⴛ; \u0FA4񱤯.1ⴛ; [V6, V7]; xn--0fd40533g.xn--1-tws; ; ;  # ྤ.1ⴛ
+xn--0fd40533g.xn--1-q1g; \u0FA4񱤯.1Ⴛ; [V6, V7]; xn--0fd40533g.xn--1-q1g; ; ;  # ྤ.1Ⴛ
+-\u0826齀。릿𐸋; -\u0826齀.릿𐸋; [B1, B5, B6, V3, V7]; xn----6gd0617i.xn--7y2bm55m; ; ;  # -ࠦ齀.릿
+-\u0826齀。릿𐸋; -\u0826齀.릿𐸋; [B1, B5, B6, V3, V7]; xn----6gd0617i.xn--7y2bm55m; ; ;  # -ࠦ齀.릿
+xn----6gd0617i.xn--7y2bm55m; -\u0826齀.릿𐸋; [B1, B5, B6, V3, V7]; xn----6gd0617i.xn--7y2bm55m; ; ;  # -ࠦ齀.릿
+󠔊\u071C鹝꾗。񾵐\u200D\u200D⏃; 󠔊\u071C鹝꾗.񾵐\u200D\u200D⏃; [B1, B6, C2, V7]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; xn--mnb6558e91kyq533a.xn--6mh27269e; [B1, B6, V7] # ܜ鹝꾗.⏃
+󠔊\u071C鹝꾗。񾵐\u200D\u200D⏃; 󠔊\u071C鹝꾗.񾵐\u200D\u200D⏃; [B1, B6, C2, V7]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; xn--mnb6558e91kyq533a.xn--6mh27269e; [B1, B6, V7] # ܜ鹝꾗.⏃
+xn--mnb6558e91kyq533a.xn--6mh27269e; 󠔊\u071C鹝꾗.񾵐⏃; [B1, B6, V7]; xn--mnb6558e91kyq533a.xn--6mh27269e; ; ;  # ܜ鹝꾗.⏃
+xn--mnb6558e91kyq533a.xn--1uga46zs309y; 󠔊\u071C鹝꾗.񾵐\u200D\u200D⏃; [B1, B6, C2, V7]; xn--mnb6558e91kyq533a.xn--1uga46zs309y; ; ;  # ܜ鹝꾗.⏃
+≮．-\u0708--; ≮.-\u0708--; [B1, V2, V3]; xn--gdh.xn------eqf; ; ;  # ≮.-܈--
+<\u0338．-\u0708--; ≮.-\u0708--; [B1, V2, V3]; xn--gdh.xn------eqf; ; ;  # ≮.-܈--
+≮.-\u0708--; ; [B1, V2, V3]; xn--gdh.xn------eqf; ; ;  # ≮.-܈--
+<\u0338.-\u0708--; ≮.-\u0708--; [B1, V2, V3]; xn--gdh.xn------eqf; ; ;  # ≮.-܈--
+xn--gdh.xn------eqf; ≮.-\u0708--; [B1, V2, V3]; xn--gdh.xn------eqf; ; ;  # ≮.-܈--
+𐹸󠋳。\u200Dς𝟩; 𐹸󠋳.\u200Dς7; [B1, C2, V7]; xn--wo0di5177c.xn--7-xmb248s; ; xn--wo0di5177c.xn--7-zmb; [B1, V7] # 𐹸.ς7
+𐹸󠋳。\u200Dς7; 𐹸󠋳.\u200Dς7; [B1, C2, V7]; xn--wo0di5177c.xn--7-xmb248s; ; xn--wo0di5177c.xn--7-zmb; [B1, V7] # 𐹸.ς7
+𐹸󠋳。\u200DΣ7; 𐹸󠋳.\u200Dσ7; [B1, C2, V7]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, V7] # 𐹸.σ7
+𐹸󠋳。\u200Dσ7; 𐹸󠋳.\u200Dσ7; [B1, C2, V7]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, V7] # 𐹸.σ7
+xn--wo0di5177c.xn--7-zmb; 𐹸󠋳.σ7; [B1, V7]; xn--wo0di5177c.xn--7-zmb; ; ;  # 𐹸.σ7
+xn--wo0di5177c.xn--7-zmb938s; 𐹸󠋳.\u200Dσ7; [B1, C2, V7]; xn--wo0di5177c.xn--7-zmb938s; ; ;  # 𐹸.σ7
+xn--wo0di5177c.xn--7-xmb248s; 𐹸󠋳.\u200Dς7; [B1, C2, V7]; xn--wo0di5177c.xn--7-xmb248s; ; ;  # 𐹸.ς7
+𐹸󠋳。\u200DΣ𝟩; 𐹸󠋳.\u200Dσ7; [B1, C2, V7]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, V7] # 𐹸.σ7
+𐹸󠋳。\u200Dσ𝟩; 𐹸󠋳.\u200Dσ7; [B1, C2, V7]; xn--wo0di5177c.xn--7-zmb938s; ; xn--wo0di5177c.xn--7-zmb; [B1, V7] # 𐹸.σ7
+ς򅜌８.𞭤; ς򅜌8.𞭤; [V7]; xn--8-xmb44974n.xn--su6h; ; xn--8-zmb14974n.xn--su6h;  # ς8.
+ς򅜌8.𞭤; ; [V7]; xn--8-xmb44974n.xn--su6h; ; xn--8-zmb14974n.xn--su6h;  # ς8.
+Σ򅜌8.𞭤; σ򅜌8.𞭤; [V7]; xn--8-zmb14974n.xn--su6h; ; ;  # σ8.
+σ򅜌8.𞭤; ; [V7]; xn--8-zmb14974n.xn--su6h; ; ;  # σ8.
+xn--8-zmb14974n.xn--su6h; σ򅜌8.𞭤; [V7]; xn--8-zmb14974n.xn--su6h; ; ;  # σ8.
+xn--8-xmb44974n.xn--su6h; ς򅜌8.𞭤; [V7]; xn--8-xmb44974n.xn--su6h; ; ;  # ς8.
+Σ򅜌８.𞭤; σ򅜌8.𞭤; [V7]; xn--8-zmb14974n.xn--su6h; ; ;  # σ8.
+σ򅜌８.𞭤; σ򅜌8.𞭤; [V7]; xn--8-zmb14974n.xn--su6h; ; ;  # σ8.
+\u200Cᡑ🄀\u0684．-𐫄𑲤; \u200Cᡑ🄀\u0684.-𐫄𑲤; [B1, C1, V3, V7]; xn--9ib722gvtfi563c.xn----ek5i065b; ; xn--9ib722gbw95a.xn----ek5i065b; [B1, B5, B6, V3, V7] # ᡑ🄀ڄ.-𐫄𑲤
+\u200Cᡑ0.\u0684.-𐫄𑲤; ; [B1, C1, V3]; xn--0-o7j263b.xn--9ib.xn----ek5i065b; ; xn--0-o7j.xn--9ib.xn----ek5i065b; [B1, V3] # ᡑ0.ڄ.-𐫄𑲤
+xn--0-o7j.xn--9ib.xn----ek5i065b; ᡑ0.\u0684.-𐫄𑲤; [B1, V3]; xn--0-o7j.xn--9ib.xn----ek5i065b; ; ;  # ᡑ0.ڄ.-𐫄𑲤
+xn--0-o7j263b.xn--9ib.xn----ek5i065b; \u200Cᡑ0.\u0684.-𐫄𑲤; [B1, C1, V3]; xn--0-o7j263b.xn--9ib.xn----ek5i065b; ; ;  # ᡑ0.ڄ.-𐫄𑲤
+xn--9ib722gbw95a.xn----ek5i065b; ᡑ🄀\u0684.-𐫄𑲤; [B1, B5, B6, V3, V7]; xn--9ib722gbw95a.xn----ek5i065b; ; ;  # ᡑ🄀ڄ.-𐫄𑲤
+xn--9ib722gvtfi563c.xn----ek5i065b; \u200Cᡑ🄀\u0684.-𐫄𑲤; [B1, C1, V3, V7]; xn--9ib722gvtfi563c.xn----ek5i065b; ; ;  # ᡑ🄀ڄ.-𐫄𑲤
+𖠍。𐪿넯򞵲; 𖠍.𐪿넯򞵲; [B2, B3, V7]; xn--4e9e.xn--l60bj21opd57g; ; ;  # 𖠍.넯
+𖠍。𐪿넯򞵲; 𖠍.𐪿넯򞵲; [B2, B3, V7]; xn--4e9e.xn--l60bj21opd57g; ; ;  # 𖠍.넯
+xn--4e9e.xn--l60bj21opd57g; 𖠍.𐪿넯򞵲; [B2, B3, V7]; xn--4e9e.xn--l60bj21opd57g; ; ;  # 𖠍.넯
+᠇Ⴘ。\u0603Ⴈ𝆊; ᠇ⴘ.\u0603ⴈ𝆊; [B1, V7]; xn--d6e009h.xn--lfb290rfu3z; ; ;  # ᠇ⴘ.ⴈ𝆊
+᠇ⴘ。\u0603ⴈ𝆊; ᠇ⴘ.\u0603ⴈ𝆊; [B1, V7]; xn--d6e009h.xn--lfb290rfu3z; ; ;  # ᠇ⴘ.ⴈ𝆊
+xn--d6e009h.xn--lfb290rfu3z; ᠇ⴘ.\u0603ⴈ𝆊; [B1, V7]; xn--d6e009h.xn--lfb290rfu3z; ; ;  # ᠇ⴘ.ⴈ𝆊
+xn--wnd558a.xn--lfb465c1v87a; ᠇Ⴘ.\u0603Ⴈ𝆊; [B1, V7]; xn--wnd558a.xn--lfb465c1v87a; ; ;  # ᠇Ⴘ.Ⴈ𝆊
+⒚󠋑𞤰。牣\u0667Ⴜᣥ; ⒚󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V7]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ;  # ⒚𞤰.牣٧ⴜᣥ
+19.󠋑𞤰。牣\u0667Ⴜᣥ; 19.󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V7]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ;  # 19.𞤰.牣٧ⴜᣥ
+19.󠋑𞤰。牣\u0667ⴜᣥ; 19.󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V7]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ;  # 19.𞤰.牣٧ⴜᣥ
+19.󠋑𞤎。牣\u0667Ⴜᣥ; 19.󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V7]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ;  # 19.𞤰.牣٧ⴜᣥ
+19.󠋑𞤎。牣\u0667ⴜᣥ; 19.󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V7]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ;  # 19.𞤰.牣٧ⴜᣥ
+19.xn--oe6h75760c.xn--gib285gtxo2l9d; 19.󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V7]; 19.xn--oe6h75760c.xn--gib285gtxo2l9d; ; ;  # 19.𞤰.牣٧ⴜᣥ
+⒚󠋑𞤰。牣\u0667ⴜᣥ; ⒚󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V7]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ;  # ⒚𞤰.牣٧ⴜᣥ
+⒚󠋑𞤎。牣\u0667Ⴜᣥ; ⒚󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V7]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ;  # ⒚𞤰.牣٧ⴜᣥ
+⒚󠋑𞤎。牣\u0667ⴜᣥ; ⒚󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V7]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ;  # ⒚𞤰.牣٧ⴜᣥ
+xn--cthy466n29j3e.xn--gib285gtxo2l9d; ⒚󠋑𞤰.牣\u0667ⴜᣥ; [B1, B5, V7]; xn--cthy466n29j3e.xn--gib285gtxo2l9d; ; ;  # ⒚𞤰.牣٧ⴜᣥ
+19.xn--oe6h75760c.xn--gib404ccxgh00h; 19.󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, V7]; 19.xn--oe6h75760c.xn--gib404ccxgh00h; ; ;  # 19.𞤰.牣٧Ⴜᣥ
+xn--cthy466n29j3e.xn--gib404ccxgh00h; ⒚󠋑𞤰.牣\u0667Ⴜᣥ; [B1, B5, V7]; xn--cthy466n29j3e.xn--gib404ccxgh00h; ; ;  # ⒚𞤰.牣٧Ⴜᣥ
+-𐋱𐰽⒈.Ⴓ; -𐋱𐰽⒈.ⴓ; [B1, V3, V7]; xn----ecp0206g90h.xn--blj; ; ;  # -𐋱𐰽⒈.ⴓ
+-𐋱𐰽1..Ⴓ; -𐋱𐰽1..ⴓ; [B1, V3, X4_2]; xn---1-895nq11a..xn--blj; [B1, V3, A4_2]; ;  # -𐋱𐰽1..ⴓ
 -𐋱𐰽1..ⴓ; ; [B1, V3, X4_2]; xn---1-895nq11a..xn--blj; [B1, V3, A4_2]; ;  # -𐋱𐰽1..ⴓ
 xn---1-895nq11a..xn--blj; -𐋱𐰽1..ⴓ; [B1, V3, X4_2]; xn---1-895nq11a..xn--blj; [B1, V3, A4_2]; ;  # -𐋱𐰽1..ⴓ
-xn---1-895nq11a..xn--rnd; -𐋱𐰽1..Ⴓ; [B1, V3, V6, X4_2]; xn---1-895nq11a..xn--rnd; [B1, V3, V6, A4_2]; ;  # -𐋱𐰽1..Ⴓ
--𐋱𐰽⒈.ⴓ; ; [B1, P1, V3, V6]; xn----ecp0206g90h.xn--blj; ; ;  # -𐋱𐰽⒈.ⴓ
-xn----ecp0206g90h.xn--blj; -𐋱𐰽⒈.ⴓ; [B1, V3, V6]; xn----ecp0206g90h.xn--blj; ; ;  # -𐋱𐰽⒈.ⴓ
-xn----ecp0206g90h.xn--rnd; -𐋱𐰽⒈.Ⴓ; [B1, V3, V6]; xn----ecp0206g90h.xn--rnd; ; ;  # -𐋱𐰽⒈.Ⴓ
-‌긃.榶-; ; [C1, V3]; xn--0ug3307c.xn----d87b; ; xn--ej0b.xn----d87b; [V3] # 긃.榶-
-‌긃.榶-; ‌긃.榶-; [C1, V3]; xn--0ug3307c.xn----d87b; ; xn--ej0b.xn----d87b; [V3] # 긃.榶-
+-𐋱𐰽⒈.ⴓ; ; [B1, V3, V7]; xn----ecp0206g90h.xn--blj; ; ;  # -𐋱𐰽⒈.ⴓ
+xn----ecp0206g90h.xn--blj; -𐋱𐰽⒈.ⴓ; [B1, V3, V7]; xn----ecp0206g90h.xn--blj; ; ;  # -𐋱𐰽⒈.ⴓ
+xn---1-895nq11a..xn--rnd; -𐋱𐰽1..Ⴓ; [B1, V3, V7, X4_2]; xn---1-895nq11a..xn--rnd; [B1, V3, V7, A4_2]; ;  # -𐋱𐰽1..Ⴓ
+xn----ecp0206g90h.xn--rnd; -𐋱𐰽⒈.Ⴓ; [B1, V3, V7]; xn----ecp0206g90h.xn--rnd; ; ;  # -𐋱𐰽⒈.Ⴓ
+\u200C긃.榶-; ; [C1, V3]; xn--0ug3307c.xn----d87b; ; xn--ej0b.xn----d87b; [V3] # 긃.榶-
+\u200C긃.榶-; \u200C긃.榶-; [C1, V3]; xn--0ug3307c.xn----d87b; ; xn--ej0b.xn----d87b; [V3] # 긃.榶-
 xn--ej0b.xn----d87b; 긃.榶-; [V3]; xn--ej0b.xn----d87b; ; ;  # 긃.榶-
-xn--0ug3307c.xn----d87b; ‌긃.榶-; [C1, V3]; xn--0ug3307c.xn----d87b; ; ;  # 긃.榶-
-뉓泓𜵽.্‍; ; [P1, V5, V6]; xn--lwwp69lqs7m.xn--b7b605i; ; xn--lwwp69lqs7m.xn--b7b;  # 뉓泓.্
-뉓泓𜵽.্‍; 뉓泓𜵽.্‍; [P1, V5, V6]; xn--lwwp69lqs7m.xn--b7b605i; ; xn--lwwp69lqs7m.xn--b7b;  # 뉓泓.্
-xn--lwwp69lqs7m.xn--b7b; 뉓泓𜵽.্; [V5, V6]; xn--lwwp69lqs7m.xn--b7b; ; ;  # 뉓泓.্
-xn--lwwp69lqs7m.xn--b7b605i; 뉓泓𜵽.্‍; [V5, V6]; xn--lwwp69lqs7m.xn--b7b605i; ; ;  # 뉓泓.্
-‍𐹴ß｡ິ⭵񪅌; ‍𐹴ß.ິ⭵񪅌; [B1, C2, P1, V5, V6]; xn--zca770nip7n.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # 𐹴ß.ິ
-‍𐹴ß。ິ⭵񪅌; ‍𐹴ß.ິ⭵񪅌; [B1, C2, P1, V5, V6]; xn--zca770nip7n.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # 𐹴ß.ິ
-‍𐹴SS。ິ⭵񪅌; ‍𐹴ss.ິ⭵񪅌; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # 𐹴ss.ິ
-‍𐹴ss。ິ⭵񪅌; ‍𐹴ss.ິ⭵񪅌; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # 𐹴ss.ິ
-‍𐹴Ss。ິ⭵񪅌; ‍𐹴ss.ິ⭵񪅌; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # 𐹴ss.ິ
-xn--ss-ti3o.xn--57c638l8774i; 𐹴ss.ິ⭵񪅌; [B1, V5, V6]; xn--ss-ti3o.xn--57c638l8774i; ; ;  # 𐹴ss.ິ
-xn--ss-l1t5169j.xn--57c638l8774i; ‍𐹴ss.ິ⭵񪅌; [B1, C2, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; ;  # 𐹴ss.ິ
-xn--zca770nip7n.xn--57c638l8774i; ‍𐹴ß.ິ⭵񪅌; [B1, C2, V5, V6]; xn--zca770nip7n.xn--57c638l8774i; ; ;  # 𐹴ß.ິ
-‍𐹴SS｡ິ⭵񪅌; ‍𐹴ss.ິ⭵񪅌; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # 𐹴ss.ິ
-‍𐹴ss｡ິ⭵񪅌; ‍𐹴ss.ິ⭵񪅌; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # 𐹴ss.ິ
-‍𐹴Ss｡ິ⭵񪅌; ‍𐹴ss.ິ⭵񪅌; [B1, C2, P1, V5, V6]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, P1, V5, V6] # 𐹴ss.ິ
-᭄．᮪-≮≠; ᭄.᮪-≮≠; [P1, V5, V6]; xn--1uf.xn----nmlz65aub; ; ;  # ᭄.᮪-≮≠
-᭄．᮪-≮≠; ᭄.᮪-≮≠; [P1, V5, V6]; xn--1uf.xn----nmlz65aub; ; ;  # ᭄.᮪-≮≠
-᭄.᮪-≮≠; ; [P1, V5, V6]; xn--1uf.xn----nmlz65aub; ; ;  # ᭄.᮪-≮≠
-᭄.᮪-≮≠; ᭄.᮪-≮≠; [P1, V5, V6]; xn--1uf.xn----nmlz65aub; ; ;  # ᭄.᮪-≮≠
-xn--1uf.xn----nmlz65aub; ᭄.᮪-≮≠; [V5, V6]; xn--1uf.xn----nmlz65aub; ; ;  # ᭄.᮪-≮≠
-᯳Ⴑᅟ．𑄴Ⅎ; ᯳Ⴑᅟ.𑄴Ⅎ; [P1, V5, V6]; xn--pnd26a55x.xn--f3g7465g; ; ;  # ᯳Ⴑ.𑄴Ⅎ
-᯳Ⴑᅟ.𑄴Ⅎ; ; [P1, V5, V6]; xn--pnd26a55x.xn--f3g7465g; ; ;  # ᯳Ⴑ.𑄴Ⅎ
-᯳ⴑᅟ.𑄴ⅎ; ; [P1, V5, V6]; xn--osd925cvyn.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
-᯳Ⴑᅟ.𑄴ⅎ; ; [P1, V5, V6]; xn--pnd26a55x.xn--73g3065g; ; ;  # ᯳Ⴑ.𑄴ⅎ
-xn--pnd26a55x.xn--73g3065g; ᯳Ⴑᅟ.𑄴ⅎ; [V5, V6]; xn--pnd26a55x.xn--73g3065g; ; ;  # ᯳Ⴑ.𑄴ⅎ
-xn--osd925cvyn.xn--73g3065g; ᯳ⴑᅟ.𑄴ⅎ; [V5, V6]; xn--osd925cvyn.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
-xn--pnd26a55x.xn--f3g7465g; ᯳Ⴑᅟ.𑄴Ⅎ; [V5, V6]; xn--pnd26a55x.xn--f3g7465g; ; ;  # ᯳Ⴑ.𑄴Ⅎ
-᯳ⴑᅟ．𑄴ⅎ; ᯳ⴑᅟ.𑄴ⅎ; [P1, V5, V6]; xn--osd925cvyn.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
-᯳Ⴑᅟ．𑄴ⅎ; ᯳Ⴑᅟ.𑄴ⅎ; [P1, V5, V6]; xn--pnd26a55x.xn--73g3065g; ; ;  # ᯳Ⴑ.𑄴ⅎ
-𜉆。Ⴃ𐴣𐹹똯; 𜉆.Ⴃ𐴣𐹹똯; [B5, P1, V6]; xn--187g.xn--bnd4785f8r8bdeb; ; ;  # .Ⴃ𐴣𐹹똯
-𜉆。Ⴃ𐴣𐹹똯; 𜉆.Ⴃ𐴣𐹹똯; [B5, P1, V6]; xn--187g.xn--bnd4785f8r8bdeb; ; ;  # .Ⴃ𐴣𐹹똯
-𜉆。ⴃ𐴣𐹹똯; 𜉆.ⴃ𐴣𐹹똯; [B5, P1, V6]; xn--187g.xn--ukjy205b8rscdeb; ; ;  # .ⴃ𐴣𐹹똯
-𜉆。ⴃ𐴣𐹹똯; 𜉆.ⴃ𐴣𐹹똯; [B5, P1, V6]; xn--187g.xn--ukjy205b8rscdeb; ; ;  # .ⴃ𐴣𐹹똯
-xn--187g.xn--ukjy205b8rscdeb; 𜉆.ⴃ𐴣𐹹똯; [B5, V6]; xn--187g.xn--ukjy205b8rscdeb; ; ;  # .ⴃ𐴣𐹹똯
-xn--187g.xn--bnd4785f8r8bdeb; 𜉆.Ⴃ𐴣𐹹똯; [B5, V6]; xn--187g.xn--bnd4785f8r8bdeb; ; ;  # .Ⴃ𐴣𐹹똯
-𐫀｡⳻󠙾󠄷ㅤ; 𐫀.⳻󠙾ㅤ; [B1, P1, V6]; xn--pw9c.xn--mkj83l4v899a; ; ;  # 𐫀.⳻
-𐫀。⳻󠙾󠄷ᅠ; 𐫀.⳻󠙾ᅠ; [B1, P1, V6]; xn--pw9c.xn--psd742lxt32w; ; ;  # 𐫀.⳻
-xn--pw9c.xn--psd742lxt32w; 𐫀.⳻󠙾ᅠ; [B1, V6]; xn--pw9c.xn--psd742lxt32w; ; ;  # 𐫀.⳻
-xn--pw9c.xn--mkj83l4v899a; 𐫀.⳻󠙾ㅤ; [B1, V6]; xn--pw9c.xn--mkj83l4v899a; ; ;  # 𐫀.⳻
-ޚ⾇．ܞ-𐋰; ޚ舛.ܞ-𐋰; [B2, B3]; xn--7qb6383d.xn----20c3154q; ; ;  # ޚ舛.ܞ-𐋰
-ޚ舛.ܞ-𐋰; ; [B2, B3]; xn--7qb6383d.xn----20c3154q; ; ;  # ޚ舛.ܞ-𐋰
-xn--7qb6383d.xn----20c3154q; ޚ舛.ܞ-𐋰; [B2, B3]; xn--7qb6383d.xn----20c3154q; ; ;  # ޚ舛.ܞ-𐋰
-Ⴉ猕󹛫≮．︒; Ⴉ猕󹛫≮.︒; [P1, V6]; xn--hnd212gz32d54x5r.xn--y86c; ; ;  # Ⴉ猕≮.︒
-Ⴉ猕󹛫≮．︒; Ⴉ猕󹛫≮.︒; [P1, V6]; xn--hnd212gz32d54x5r.xn--y86c; ; ;  # Ⴉ猕≮.︒
-Ⴉ猕󹛫≮.。; Ⴉ猕󹛫≮..; [P1, V6, X4_2]; xn--hnd212gz32d54x5r..; [P1, V6, A4_2]; ;  # Ⴉ猕≮..
-Ⴉ猕󹛫≮.。; Ⴉ猕󹛫≮..; [P1, V6, X4_2]; xn--hnd212gz32d54x5r..; [P1, V6, A4_2]; ;  # Ⴉ猕≮..
-ⴉ猕󹛫≮.。; ⴉ猕󹛫≮..; [P1, V6, X4_2]; xn--gdh892bbz0d5438s..; [P1, V6, A4_2]; ;  # ⴉ猕≮..
-ⴉ猕󹛫≮.。; ⴉ猕󹛫≮..; [P1, V6, X4_2]; xn--gdh892bbz0d5438s..; [P1, V6, A4_2]; ;  # ⴉ猕≮..
-xn--gdh892bbz0d5438s..; ⴉ猕󹛫≮..; [V6, X4_2]; xn--gdh892bbz0d5438s..; [V6, A4_2]; ;  # ⴉ猕≮..
-xn--hnd212gz32d54x5r..; Ⴉ猕󹛫≮..; [V6, X4_2]; xn--hnd212gz32d54x5r..; [V6, A4_2]; ;  # Ⴉ猕≮..
-ⴉ猕󹛫≮．︒; ⴉ猕󹛫≮.︒; [P1, V6]; xn--gdh892bbz0d5438s.xn--y86c; ; ;  # ⴉ猕≮.︒
-ⴉ猕󹛫≮．︒; ⴉ猕󹛫≮.︒; [P1, V6]; xn--gdh892bbz0d5438s.xn--y86c; ; ;  # ⴉ猕≮.︒
-xn--gdh892bbz0d5438s.xn--y86c; ⴉ猕󹛫≮.︒; [V6]; xn--gdh892bbz0d5438s.xn--y86c; ; ;  # ⴉ猕≮.︒
-xn--hnd212gz32d54x5r.xn--y86c; Ⴉ猕󹛫≮.︒; [V6]; xn--hnd212gz32d54x5r.xn--y86c; ; ;  # Ⴉ猕≮.︒
-🏮｡ث鳳ߢ󠅉; 🏮.ث鳳ߢ; [B1, B2]; xn--8m8h.xn--qgb29f6z90a; ; ;  # 🏮.ث鳳ߢ
-🏮。ث鳳ߢ󠅉; 🏮.ث鳳ߢ; [B1, B2]; xn--8m8h.xn--qgb29f6z90a; ; ;  # 🏮.ث鳳ߢ
-xn--8m8h.xn--qgb29f6z90a; 🏮.ث鳳ߢ; [B1, B2]; xn--8m8h.xn--qgb29f6z90a; ; ;  # 🏮.ث鳳ߢ
-‍𐹶。ß; ‍𐹶.ß; [B1, C2]; xn--1ug9105g.xn--zca; ; xn--uo0d.ss; [B1] # 𐹶.ß
-‍𐹶。SS; ‍𐹶.ss; [B1, C2]; xn--1ug9105g.ss; ; xn--uo0d.ss; [B1] # 𐹶.ss
-‍𐹶。ss; ‍𐹶.ss; [B1, C2]; xn--1ug9105g.ss; ; xn--uo0d.ss; [B1] # 𐹶.ss
-‍𐹶。Ss; ‍𐹶.ss; [B1, C2]; xn--1ug9105g.ss; ; xn--uo0d.ss; [B1] # 𐹶.ss
+xn--0ug3307c.xn----d87b; \u200C긃.榶-; [C1, V3]; xn--0ug3307c.xn----d87b; ; ;  # 긃.榶-
+뉓泓𜵽.\u09CD\u200D; ; [V6]; xn--lwwp69lqs7m.xn--b7b605i; ; xn--lwwp69lqs7m.xn--b7b;  # 뉓泓𜵽.্
+뉓泓𜵽.\u09CD\u200D; 뉓泓𜵽.\u09CD\u200D; [V6]; xn--lwwp69lqs7m.xn--b7b605i; ; xn--lwwp69lqs7m.xn--b7b;  # 뉓泓𜵽.্
+xn--lwwp69lqs7m.xn--b7b; 뉓泓𜵽.\u09CD; [V6]; xn--lwwp69lqs7m.xn--b7b; ; ;  # 뉓泓𜵽.্
+xn--lwwp69lqs7m.xn--b7b605i; 뉓泓𜵽.\u09CD\u200D; [V6]; xn--lwwp69lqs7m.xn--b7b605i; ; ;  # 뉓泓𜵽.্
+\u200D𐹴ß｡\u0EB4\u2B75񪅌; \u200D𐹴ß.\u0EB4\u2B75񪅌; [B1, C2, V6, V7]; xn--zca770nip7n.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V6, V7] # 𐹴ß.ິ
+\u200D𐹴ß。\u0EB4\u2B75񪅌; \u200D𐹴ß.\u0EB4\u2B75񪅌; [B1, C2, V6, V7]; xn--zca770nip7n.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V6, V7] # 𐹴ß.ິ
+\u200D𐹴SS。\u0EB4\u2B75񪅌; \u200D𐹴ss.\u0EB4\u2B75񪅌; [B1, C2, V6, V7]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V6, V7] # 𐹴ss.ິ
+\u200D𐹴ss。\u0EB4\u2B75񪅌; \u200D𐹴ss.\u0EB4\u2B75񪅌; [B1, C2, V6, V7]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V6, V7] # 𐹴ss.ິ
+\u200D𐹴Ss。\u0EB4\u2B75񪅌; \u200D𐹴ss.\u0EB4\u2B75񪅌; [B1, C2, V6, V7]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V6, V7] # 𐹴ss.ິ
+xn--ss-ti3o.xn--57c638l8774i; 𐹴ss.\u0EB4\u2B75񪅌; [B1, V6, V7]; xn--ss-ti3o.xn--57c638l8774i; ; ;  # 𐹴ss.ິ
+xn--ss-l1t5169j.xn--57c638l8774i; \u200D𐹴ss.\u0EB4\u2B75񪅌; [B1, C2, V6, V7]; xn--ss-l1t5169j.xn--57c638l8774i; ; ;  # 𐹴ss.ິ
+xn--zca770nip7n.xn--57c638l8774i; \u200D𐹴ß.\u0EB4\u2B75񪅌; [B1, C2, V6, V7]; xn--zca770nip7n.xn--57c638l8774i; ; ;  # 𐹴ß.ິ
+\u200D𐹴SS｡\u0EB4\u2B75񪅌; \u200D𐹴ss.\u0EB4\u2B75񪅌; [B1, C2, V6, V7]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V6, V7] # 𐹴ss.ິ
+\u200D𐹴ss｡\u0EB4\u2B75񪅌; \u200D𐹴ss.\u0EB4\u2B75񪅌; [B1, C2, V6, V7]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V6, V7] # 𐹴ss.ິ
+\u200D𐹴Ss｡\u0EB4\u2B75񪅌; \u200D𐹴ss.\u0EB4\u2B75񪅌; [B1, C2, V6, V7]; xn--ss-l1t5169j.xn--57c638l8774i; ; xn--ss-ti3o.xn--57c638l8774i; [B1, V6, V7] # 𐹴ss.ິ
+\u1B44．\u1BAA-≮≠; \u1B44.\u1BAA-≮≠; [V6]; xn--1uf.xn----nmlz65aub; ; ;  # ᭄.᮪-≮≠
+\u1B44．\u1BAA-<\u0338=\u0338; \u1B44.\u1BAA-≮≠; [V6]; xn--1uf.xn----nmlz65aub; ; ;  # ᭄.᮪-≮≠
+\u1B44.\u1BAA-≮≠; ; [V6]; xn--1uf.xn----nmlz65aub; ; ;  # ᭄.᮪-≮≠
+\u1B44.\u1BAA-<\u0338=\u0338; \u1B44.\u1BAA-≮≠; [V6]; xn--1uf.xn----nmlz65aub; ; ;  # ᭄.᮪-≮≠
+xn--1uf.xn----nmlz65aub; \u1B44.\u1BAA-≮≠; [V6]; xn--1uf.xn----nmlz65aub; ; ;  # ᭄.᮪-≮≠
+\u1BF3Ⴑ\u115F．𑄴Ⅎ; \u1BF3ⴑ.𑄴ⅎ; [V6]; xn--1zf224e.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
+\u1BF3Ⴑ\u115F.𑄴Ⅎ; \u1BF3ⴑ.𑄴ⅎ; [V6]; xn--1zf224e.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
+\u1BF3ⴑ\u115F.𑄴ⅎ; \u1BF3ⴑ.𑄴ⅎ; [V6]; xn--1zf224e.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
+\u1BF3Ⴑ\u115F.𑄴ⅎ; \u1BF3ⴑ.𑄴ⅎ; [V6]; xn--1zf224e.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
+xn--1zf224e.xn--73g3065g; \u1BF3ⴑ.𑄴ⅎ; [V6]; xn--1zf224e.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
+\u1BF3ⴑ\u115F．𑄴ⅎ; \u1BF3ⴑ.𑄴ⅎ; [V6]; xn--1zf224e.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
+\u1BF3Ⴑ\u115F．𑄴ⅎ; \u1BF3ⴑ.𑄴ⅎ; [V6]; xn--1zf224e.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
+xn--pnd26a55x.xn--73g3065g; \u1BF3Ⴑ\u115F.𑄴ⅎ; [V6, V7]; xn--pnd26a55x.xn--73g3065g; ; ;  # ᯳Ⴑ.𑄴ⅎ
+xn--osd925cvyn.xn--73g3065g; \u1BF3ⴑ\u115F.𑄴ⅎ; [V6, V7]; xn--osd925cvyn.xn--73g3065g; ; ;  # ᯳ⴑ.𑄴ⅎ
+xn--pnd26a55x.xn--f3g7465g; \u1BF3Ⴑ\u115F.𑄴Ⅎ; [V6, V7]; xn--pnd26a55x.xn--f3g7465g; ; ;  # ᯳Ⴑ.𑄴Ⅎ
+𜉆。Ⴃ𐴣𐹹똯; 𜉆.ⴃ𐴣𐹹똯; [B5, V7]; xn--187g.xn--ukjy205b8rscdeb; ; ;  # .ⴃ𐴣𐹹똯
+𜉆。Ⴃ𐴣𐹹똯; 𜉆.ⴃ𐴣𐹹똯; [B5, V7]; xn--187g.xn--ukjy205b8rscdeb; ; ;  # .ⴃ𐴣𐹹똯
+𜉆。ⴃ𐴣𐹹똯; 𜉆.ⴃ𐴣𐹹똯; [B5, V7]; xn--187g.xn--ukjy205b8rscdeb; ; ;  # .ⴃ𐴣𐹹똯
+𜉆。ⴃ𐴣𐹹똯; 𜉆.ⴃ𐴣𐹹똯; [B5, V7]; xn--187g.xn--ukjy205b8rscdeb; ; ;  # .ⴃ𐴣𐹹똯
+xn--187g.xn--ukjy205b8rscdeb; 𜉆.ⴃ𐴣𐹹똯; [B5, V7]; xn--187g.xn--ukjy205b8rscdeb; ; ;  # .ⴃ𐴣𐹹똯
+xn--187g.xn--bnd4785f8r8bdeb; 𜉆.Ⴃ𐴣𐹹똯; [B5, V7]; xn--187g.xn--bnd4785f8r8bdeb; ; ;  # .Ⴃ𐴣𐹹똯
+𐫀｡⳻󠙾󠄷\u3164; 𐫀.⳻󠙾; [B1, V7]; xn--pw9c.xn--mkjw9654i; ; ;  # 𐫀.⳻
+𐫀。⳻󠙾󠄷\u1160; 𐫀.⳻󠙾; [B1, V7]; xn--pw9c.xn--mkjw9654i; ; ;  # 𐫀.⳻
+xn--pw9c.xn--mkjw9654i; 𐫀.⳻󠙾; [B1, V7]; xn--pw9c.xn--mkjw9654i; ; ;  # 𐫀.⳻
+xn--pw9c.xn--psd742lxt32w; 𐫀.⳻󠙾\u1160; [B1, V7]; xn--pw9c.xn--psd742lxt32w; ; ;  # 𐫀.⳻
+xn--pw9c.xn--mkj83l4v899a; 𐫀.⳻󠙾\u3164; [B1, V7]; xn--pw9c.xn--mkj83l4v899a; ; ;  # 𐫀.⳻
+\u079A⾇．\u071E-𐋰; \u079A舛.\u071E-𐋰; [B2, B3]; xn--7qb6383d.xn----20c3154q; ; ;  # ޚ舛.ܞ-𐋰
+\u079A舛.\u071E-𐋰; ; [B2, B3]; xn--7qb6383d.xn----20c3154q; ; ;  # ޚ舛.ܞ-𐋰
+xn--7qb6383d.xn----20c3154q; \u079A舛.\u071E-𐋰; [B2, B3]; xn--7qb6383d.xn----20c3154q; ; ;  # ޚ舛.ܞ-𐋰
+Ⴉ猕󹛫≮．︒; ⴉ猕󹛫≮.︒; [V7]; xn--gdh892bbz0d5438s.xn--y86c; ; ;  # ⴉ猕≮.︒
+Ⴉ猕󹛫<\u0338．︒; ⴉ猕󹛫≮.︒; [V7]; xn--gdh892bbz0d5438s.xn--y86c; ; ;  # ⴉ猕≮.︒
+Ⴉ猕󹛫≮.。; ⴉ猕󹛫≮..; [V7, X4_2]; xn--gdh892bbz0d5438s..; [V7, A4_2]; ;  # ⴉ猕≮..
+Ⴉ猕󹛫<\u0338.。; ⴉ猕󹛫≮..; [V7, X4_2]; xn--gdh892bbz0d5438s..; [V7, A4_2]; ;  # ⴉ猕≮..
+ⴉ猕󹛫<\u0338.。; ⴉ猕󹛫≮..; [V7, X4_2]; xn--gdh892bbz0d5438s..; [V7, A4_2]; ;  # ⴉ猕≮..
+ⴉ猕󹛫≮.。; ⴉ猕󹛫≮..; [V7, X4_2]; xn--gdh892bbz0d5438s..; [V7, A4_2]; ;  # ⴉ猕≮..
+xn--gdh892bbz0d5438s..; ⴉ猕󹛫≮..; [V7, X4_2]; xn--gdh892bbz0d5438s..; [V7, A4_2]; ;  # ⴉ猕≮..
+ⴉ猕󹛫<\u0338．︒; ⴉ猕󹛫≮.︒; [V7]; xn--gdh892bbz0d5438s.xn--y86c; ; ;  # ⴉ猕≮.︒
+ⴉ猕󹛫≮．︒; ⴉ猕󹛫≮.︒; [V7]; xn--gdh892bbz0d5438s.xn--y86c; ; ;  # ⴉ猕≮.︒
+xn--gdh892bbz0d5438s.xn--y86c; ⴉ猕󹛫≮.︒; [V7]; xn--gdh892bbz0d5438s.xn--y86c; ; ;  # ⴉ猕≮.︒
+xn--hnd212gz32d54x5r..; Ⴉ猕󹛫≮..; [V7, X4_2]; xn--hnd212gz32d54x5r..; [V7, A4_2]; ;  # Ⴉ猕≮..
+xn--hnd212gz32d54x5r.xn--y86c; Ⴉ猕󹛫≮.︒; [V7]; xn--hnd212gz32d54x5r.xn--y86c; ; ;  # Ⴉ猕≮.︒
+🏮｡\u062B鳳\u07E2󠅉; 🏮.\u062B鳳\u07E2; [B1, B2]; xn--8m8h.xn--qgb29f6z90a; ; ;  # 🏮.ث鳳ߢ
+🏮。\u062B鳳\u07E2󠅉; 🏮.\u062B鳳\u07E2; [B1, B2]; xn--8m8h.xn--qgb29f6z90a; ; ;  # 🏮.ث鳳ߢ
+xn--8m8h.xn--qgb29f6z90a; 🏮.\u062B鳳\u07E2; [B1, B2]; xn--8m8h.xn--qgb29f6z90a; ; ;  # 🏮.ث鳳ߢ
+\u200D𐹶。ß; \u200D𐹶.ß; [B1, C2]; xn--1ug9105g.xn--zca; ; xn--uo0d.ss; [B1] # 𐹶.ß
+\u200D𐹶。SS; \u200D𐹶.ss; [B1, C2]; xn--1ug9105g.ss; ; xn--uo0d.ss; [B1] # 𐹶.ss
+\u200D𐹶。ss; \u200D𐹶.ss; [B1, C2]; xn--1ug9105g.ss; ; xn--uo0d.ss; [B1] # 𐹶.ss
+\u200D𐹶。Ss; \u200D𐹶.ss; [B1, C2]; xn--1ug9105g.ss; ; xn--uo0d.ss; [B1] # 𐹶.ss
 xn--uo0d.ss; 𐹶.ss; [B1]; xn--uo0d.ss; ; ;  # 𐹶.ss
-xn--1ug9105g.ss; ‍𐹶.ss; [B1, C2]; xn--1ug9105g.ss; ; ;  # 𐹶.ss
-xn--1ug9105g.xn--zca; ‍𐹶.ß; [B1, C2]; xn--1ug9105g.xn--zca; ; ;  # 𐹶.ß
-Å둄-．‌; å둄-.‌; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3] # å둄-.
-Å둄-．‌; å둄-.‌; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3] # å둄-.
-Å둄-.‌; å둄-.‌; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3] # å둄-.
-Å둄-.‌; å둄-.‌; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3] # å둄-.
-å둄-.‌; å둄-.‌; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3] # å둄-.
-å둄-.‌; ; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3] # å둄-.
-xn----1fa1788k.; å둄-.; [V3]; xn----1fa1788k.; ; ;  # å둄-.
-xn----1fa1788k.xn--0ug; å둄-.‌; [C1, V3]; xn----1fa1788k.xn--0ug; ; ;  # å둄-.
-å둄-．‌; å둄-.‌; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3] # å둄-.
-å둄-．‌; å둄-.‌; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3] # å둄-.
-゙򬎑ᷗ𞤀.򱲢-॓; ゙򬎑ᷗ𞤢.򱲢-॓; [B1, B6, P1, V5, V6]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ;  # ゙ᷗ𞤢.-॓
-゙򬎑ᷗ𞤢.򱲢-॓; ; [B1, B6, P1, V5, V6]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ;  # ゙ᷗ𞤢.-॓
-xn--veg121fwg63altj9d.xn----eyd92688s; ゙򬎑ᷗ𞤢.򱲢-॓; [B1, B6, V5, V6]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ;  # ゙ᷗ𞤢.-॓
-ς.ß񴱄۝⵿; ; [B5, B6, P1, V6]; xn--3xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n;  # ς.ß⵿
-Σ.SS񴱄۝⵿; σ.ss񴱄۝⵿; [B5, B6, P1, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ;  # σ.ss⵿
-σ.ss񴱄۝⵿; ; [B5, B6, P1, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ;  # σ.ss⵿
-Σ.ss񴱄۝⵿; σ.ss񴱄۝⵿; [B5, B6, P1, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ;  # σ.ss⵿
-xn--4xa.xn--ss-y8d4760biv60n; σ.ss񴱄۝⵿; [B5, B6, V6]; xn--4xa.xn--ss-y8d4760biv60n; ; ;  # σ.ss⵿
-Σ.ß񴱄۝⵿; σ.ß񴱄۝⵿; [B5, B6, P1, V6]; xn--4xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n;  # σ.ß⵿
-σ.ß񴱄۝⵿; ; [B5, B6, P1, V6]; xn--4xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n;  # σ.ß⵿
-xn--4xa.xn--zca281az71b8x73m; σ.ß񴱄۝⵿; [B5, B6, V6]; xn--4xa.xn--zca281az71b8x73m; ; ;  # σ.ß⵿
-xn--3xa.xn--zca281az71b8x73m; ς.ß񴱄۝⵿; [B5, B6, V6]; xn--3xa.xn--zca281az71b8x73m; ; ;  # ς.ß⵿
-ꡀ𞀟｡٫֙; ꡀ𞀟.٫֙; [B1]; xn--8b9a1720d.xn--kcb33b; ; ;  # ꡀ𞀟.٫֙
-ꡀ𞀟。٫֙; ꡀ𞀟.٫֙; [B1]; xn--8b9a1720d.xn--kcb33b; ; ;  # ꡀ𞀟.٫֙
-xn--8b9a1720d.xn--kcb33b; ꡀ𞀟.٫֙; [B1]; xn--8b9a1720d.xn--kcb33b; ; ;  # ꡀ𞀟.٫֙
-򈛉‌ࢩ｡⧅񘘡-𐭡; 򈛉‌ࢩ.⧅񘘡-𐭡; [B1, B5, B6, C1, P1, V6]; xn--yyb780jll63m.xn----zir1232guu71b; ; xn--yyb56242i.xn----zir1232guu71b; [B1, B5, B6, P1, V6] # ࢩ.⧅-𐭡
-򈛉‌ࢩ。⧅񘘡-𐭡; 򈛉‌ࢩ.⧅񘘡-𐭡; [B1, B5, B6, C1, P1, V6]; xn--yyb780jll63m.xn----zir1232guu71b; ; xn--yyb56242i.xn----zir1232guu71b; [B1, B5, B6, P1, V6] # ࢩ.⧅-𐭡
-xn--yyb56242i.xn----zir1232guu71b; 򈛉ࢩ.⧅񘘡-𐭡; [B1, B5, B6, V6]; xn--yyb56242i.xn----zir1232guu71b; ; ;  # ࢩ.⧅-𐭡
-xn--yyb780jll63m.xn----zir1232guu71b; 򈛉‌ࢩ.⧅񘘡-𐭡; [B1, B5, B6, C1, V6]; xn--yyb780jll63m.xn----zir1232guu71b; ; ;  # ࢩ.⧅-𐭡
-룱‍𰍨‌。𝨖︒; 룱‍𰍨‌.𝨖︒; [C1, C2, P1, V5, V6]; xn--0ugb3358ili2v.xn--y86cl899a; ; xn--ct2b0738h.xn--y86cl899a; [P1, V5, V6] # 룱𰍨.𝨖︒
-룱‍𰍨‌。𝨖︒; 룱‍𰍨‌.𝨖︒; [C1, C2, P1, V5, V6]; xn--0ugb3358ili2v.xn--y86cl899a; ; xn--ct2b0738h.xn--y86cl899a; [P1, V5, V6] # 룱𰍨.𝨖︒
-룱‍𰍨‌。𝨖。; 룱‍𰍨‌.𝨖.; [C1, C2, P1, V5, V6]; xn--0ugb3358ili2v.xn--772h.; ; xn--ct2b0738h.xn--772h.; [P1, V5, V6] # 룱𰍨.𝨖.
-룱‍𰍨‌。𝨖。; 룱‍𰍨‌.𝨖.; [C1, C2, P1, V5, V6]; xn--0ugb3358ili2v.xn--772h.; ; xn--ct2b0738h.xn--772h.; [P1, V5, V6] # 룱𰍨.𝨖.
-xn--ct2b0738h.xn--772h.; 룱𰍨.𝨖.; [V5, V6]; xn--ct2b0738h.xn--772h.; ; ;  # 룱𰍨.𝨖.
-xn--0ugb3358ili2v.xn--772h.; 룱‍𰍨‌.𝨖.; [C1, C2, V5, V6]; xn--0ugb3358ili2v.xn--772h.; ; ;  # 룱𰍨.𝨖.
-xn--ct2b0738h.xn--y86cl899a; 룱𰍨.𝨖︒; [V5, V6]; xn--ct2b0738h.xn--y86cl899a; ; ;  # 룱𰍨.𝨖︒
-xn--0ugb3358ili2v.xn--y86cl899a; 룱‍𰍨‌.𝨖︒; [C1, C2, V5, V6]; xn--0ugb3358ili2v.xn--y86cl899a; ; ;  # 룱𰍨.𝨖︒
-🄄．᳜⒈ß; 🄄.᳜⒈ß; [P1, V5, V6]; xn--x07h.xn--zca344lmif; ; xn--x07h.xn--ss-k1r094b;  # 🄄.᳜⒈ß
-3,.᳜1.ß; ; [P1, V5, V6]; 3,.xn--1-43l.xn--zca; ; 3,.xn--1-43l.ss;  # 3,.᳜1.ß
-3,.᳜1.SS; 3,.᳜1.ss; [P1, V5, V6]; 3,.xn--1-43l.ss; ; ;  # 3,.᳜1.ss
-3,.᳜1.ss; ; [P1, V5, V6]; 3,.xn--1-43l.ss; ; ;  # 3,.᳜1.ss
-3,.᳜1.Ss; 3,.᳜1.ss; [P1, V5, V6]; 3,.xn--1-43l.ss; ; ;  # 3,.᳜1.ss
-3,.xn--1-43l.ss; 3,.᳜1.ss; [P1, V5, V6]; 3,.xn--1-43l.ss; ; ;  # 3,.᳜1.ss
-3,.xn--1-43l.xn--zca; 3,.᳜1.ß; [P1, V5, V6]; 3,.xn--1-43l.xn--zca; ; ;  # 3,.᳜1.ß
-🄄．᳜⒈SS; 🄄.᳜⒈ss; [P1, V5, V6]; xn--x07h.xn--ss-k1r094b; ; ;  # 🄄.᳜⒈ss
-🄄．᳜⒈ss; 🄄.᳜⒈ss; [P1, V5, V6]; xn--x07h.xn--ss-k1r094b; ; ;  # 🄄.᳜⒈ss
-🄄．᳜⒈Ss; 🄄.᳜⒈ss; [P1, V5, V6]; xn--x07h.xn--ss-k1r094b; ; ;  # 🄄.᳜⒈ss
-xn--x07h.xn--ss-k1r094b; 🄄.᳜⒈ss; [V5, V6]; xn--x07h.xn--ss-k1r094b; ; ;  # 🄄.᳜⒈ss
-xn--x07h.xn--zca344lmif; 🄄.᳜⒈ß; [V5, V6]; xn--x07h.xn--zca344lmif; ; ;  # 🄄.᳜⒈ß
-񇌍⵿｡𞼓򡄨𑐺; 񇌍⵿.𞼓򡄨𑐺; [B2, B3, P1, V6]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ;  # ⵿.𑐺
-񇌍⵿。𞼓򡄨𑐺; 񇌍⵿.𞼓򡄨𑐺; [B2, B3, P1, V6]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ;  # ⵿.𑐺
-xn--eoj16016a.xn--0v1d3848a3lr0d; 񇌍⵿.𞼓򡄨𑐺; [B2, B3, V6]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ;  # ⵿.𑐺
-်्᷽．≠‍㇛; ်्᷽.≠‍㇛; [C2, P1, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [P1, V5, V6] # ်्᷽.≠㇛
-်्᷽．≠‍㇛; ်्᷽.≠‍㇛; [C2, P1, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [P1, V5, V6] # ်्᷽.≠㇛
-်्᷽．≠‍㇛; ်्᷽.≠‍㇛; [C2, P1, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [P1, V5, V6] # ်्᷽.≠㇛
-်्᷽.≠‍㇛; ; [C2, P1, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [P1, V5, V6] # ်्᷽.≠㇛
-်्᷽.≠‍㇛; ်्᷽.≠‍㇛; [C2, P1, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [P1, V5, V6] # ်्᷽.≠㇛
-xn--n3b956a9zm.xn--1ch912d; ်्᷽.≠㇛; [V5, V6]; xn--n3b956a9zm.xn--1ch912d; ; ;  # ်्᷽.≠㇛
-xn--n3b956a9zm.xn--1ug63gz5w; ်्᷽.≠‍㇛; [C2, V5, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; ;  # ်्᷽.≠㇛
-Ⴁ𐋨娤.‍̼٢𑖿; ; [B1, C2, P1, V6]; xn--8md2578ag21g.xn--9ta62ngt6aou8t; ; xn--8md2578ag21g.xn--9ta62nrv36a; [B1, P1, V5, V6] # Ⴁ𐋨娤.̼٢𑖿
-ⴁ𐋨娤.‍̼٢𑖿; ; [B1, C2]; xn--skjw75lg29h.xn--9ta62ngt6aou8t; ; xn--skjw75lg29h.xn--9ta62nrv36a; [B1, V5] # ⴁ𐋨娤.̼٢𑖿
-xn--skjw75lg29h.xn--9ta62nrv36a; ⴁ𐋨娤.̼٢𑖿; [B1, V5]; xn--skjw75lg29h.xn--9ta62nrv36a; ; ;  # ⴁ𐋨娤.̼٢𑖿
-xn--skjw75lg29h.xn--9ta62ngt6aou8t; ⴁ𐋨娤.‍̼٢𑖿; [B1, C2]; xn--skjw75lg29h.xn--9ta62ngt6aou8t; ; ;  # ⴁ𐋨娤.̼٢𑖿
-xn--8md2578ag21g.xn--9ta62nrv36a; Ⴁ𐋨娤.̼٢𑖿; [B1, V5, V6]; xn--8md2578ag21g.xn--9ta62nrv36a; ; ;  # Ⴁ𐋨娤.̼٢𑖿
-xn--8md2578ag21g.xn--9ta62ngt6aou8t; Ⴁ𐋨娤.‍̼٢𑖿; [B1, C2, V6]; xn--8md2578ag21g.xn--9ta62ngt6aou8t; ; ;  # Ⴁ𐋨娤.̼٢𑖿
-🄀Ⴄ٩ࠠ。⒈ྶß; 🄀Ⴄ٩ࠠ.⒈ྶß; [B1, P1, V6]; xn--iib29f26o6n43c.xn--zca117e3vp; ; xn--iib29f26o6n43c.xn--ss-1sj588o;  # 🄀Ⴄ٩ࠠ.⒈ྶß
-0.Ⴄ٩ࠠ。1.ྶß; 0.Ⴄ٩ࠠ.1.ྶß; [B1, B5, B6, P1, V5, V6]; 0.xn--iib29f26o.1.xn--zca117e; ; 0.xn--iib29f26o.1.xn--ss-1sj;  # 0.Ⴄ٩ࠠ.1.ྶß
-0.ⴄ٩ࠠ。1.ྶß; 0.ⴄ٩ࠠ.1.ྶß; [B1, B5, B6, V5]; 0.xn--iib29fp25e.1.xn--zca117e; ; 0.xn--iib29fp25e.1.xn--ss-1sj;  # 0.ⴄ٩ࠠ.1.ྶß
-0.Ⴄ٩ࠠ。1.ྶSS; 0.Ⴄ٩ࠠ.1.ྶss; [B1, B5, B6, P1, V5, V6]; 0.xn--iib29f26o.1.xn--ss-1sj; ; ;  # 0.Ⴄ٩ࠠ.1.ྶss
-0.ⴄ٩ࠠ。1.ྶss; 0.ⴄ٩ࠠ.1.ྶss; [B1, B5, B6, V5]; 0.xn--iib29fp25e.1.xn--ss-1sj; ; ;  # 0.ⴄ٩ࠠ.1.ྶss
-0.Ⴄ٩ࠠ。1.ྶSs; 0.Ⴄ٩ࠠ.1.ྶss; [B1, B5, B6, P1, V5, V6]; 0.xn--iib29f26o.1.xn--ss-1sj; ; ;  # 0.Ⴄ٩ࠠ.1.ྶss
-0.xn--iib29f26o.1.xn--ss-1sj; 0.Ⴄ٩ࠠ.1.ྶss; [B1, B5, B6, V5, V6]; 0.xn--iib29f26o.1.xn--ss-1sj; ; ;  # 0.Ⴄ٩ࠠ.1.ྶss
-0.xn--iib29fp25e.1.xn--ss-1sj; 0.ⴄ٩ࠠ.1.ྶss; [B1, B5, B6, V5]; 0.xn--iib29fp25e.1.xn--ss-1sj; ; ;  # 0.ⴄ٩ࠠ.1.ྶss
-0.xn--iib29fp25e.1.xn--zca117e; 0.ⴄ٩ࠠ.1.ྶß; [B1, B5, B6, V5]; 0.xn--iib29fp25e.1.xn--zca117e; ; ;  # 0.ⴄ٩ࠠ.1.ྶß
-0.xn--iib29f26o.1.xn--zca117e; 0.Ⴄ٩ࠠ.1.ྶß; [B1, B5, B6, V5, V6]; 0.xn--iib29f26o.1.xn--zca117e; ; ;  # 0.Ⴄ٩ࠠ.1.ྶß
-🄀ⴄ٩ࠠ。⒈ྶß; 🄀ⴄ٩ࠠ.⒈ྶß; [B1, P1, V6]; xn--iib29fp25e0219a.xn--zca117e3vp; ; xn--iib29fp25e0219a.xn--ss-1sj588o;  # 🄀ⴄ٩ࠠ.⒈ྶß
-🄀Ⴄ٩ࠠ。⒈ྶSS; 🄀Ⴄ٩ࠠ.⒈ྶss; [B1, P1, V6]; xn--iib29f26o6n43c.xn--ss-1sj588o; ; ;  # 🄀Ⴄ٩ࠠ.⒈ྶss
-🄀ⴄ٩ࠠ。⒈ྶss; 🄀ⴄ٩ࠠ.⒈ྶss; [B1, P1, V6]; xn--iib29fp25e0219a.xn--ss-1sj588o; ; ;  # 🄀ⴄ٩ࠠ.⒈ྶss
-🄀Ⴄ٩ࠠ。⒈ྶSs; 🄀Ⴄ٩ࠠ.⒈ྶss; [B1, P1, V6]; xn--iib29f26o6n43c.xn--ss-1sj588o; ; ;  # 🄀Ⴄ٩ࠠ.⒈ྶss
-xn--iib29f26o6n43c.xn--ss-1sj588o; 🄀Ⴄ٩ࠠ.⒈ྶss; [B1, V6]; xn--iib29f26o6n43c.xn--ss-1sj588o; ; ;  # 🄀Ⴄ٩ࠠ.⒈ྶss
-xn--iib29fp25e0219a.xn--ss-1sj588o; 🄀ⴄ٩ࠠ.⒈ྶss; [B1, V6]; xn--iib29fp25e0219a.xn--ss-1sj588o; ; ;  # 🄀ⴄ٩ࠠ.⒈ྶss
-xn--iib29fp25e0219a.xn--zca117e3vp; 🄀ⴄ٩ࠠ.⒈ྶß; [B1, V6]; xn--iib29fp25e0219a.xn--zca117e3vp; ; ;  # 🄀ⴄ٩ࠠ.⒈ྶß
-xn--iib29f26o6n43c.xn--zca117e3vp; 🄀Ⴄ٩ࠠ.⒈ྶß; [B1, V6]; xn--iib29f26o6n43c.xn--zca117e3vp; ; ;  # 🄀Ⴄ٩ࠠ.⒈ྶß
-≠.‌-٫; ; [B1, C1, P1, V6]; xn--1ch.xn----vqc597q; ; xn--1ch.xn----vqc; [B1, P1, V3, V6] # ≠.-٫
-≠.‌-٫; ≠.‌-٫; [B1, C1, P1, V6]; xn--1ch.xn----vqc597q; ; xn--1ch.xn----vqc; [B1, P1, V3, V6] # ≠.-٫
-xn--1ch.xn----vqc; ≠.-٫; [B1, V3, V6]; xn--1ch.xn----vqc; ; ;  # ≠.-٫
-xn--1ch.xn----vqc597q; ≠.‌-٫; [B1, C1, V6]; xn--1ch.xn----vqc597q; ; ;  # ≠.-٫
-٠۱｡󠳶𞠁٥; ٠۱.󠳶𞠁٥; [B1, P1, V6]; xn--8hb40a.xn--eib7967vner3e; ; ;  # ٠۱.𞠁٥
-٠۱。󠳶𞠁٥; ٠۱.󠳶𞠁٥; [B1, P1, V6]; xn--8hb40a.xn--eib7967vner3e; ; ;  # ٠۱.𞠁٥
-xn--8hb40a.xn--eib7967vner3e; ٠۱.󠳶𞠁٥; [B1, V6]; xn--8hb40a.xn--eib7967vner3e; ; ;  # ٠۱.𞠁٥
-‌٣⒖。󱅉𽷛᯳; ‌٣⒖.󱅉𽷛᯳; [B1, C1, P1, V6]; xn--cib152kwgd.xn--1zf13512buy41d; ; xn--cib675m.xn--1zf13512buy41d; [B1, P1, V6] # ٣⒖.᯳
-‌٣15.。󱅉𽷛᯳; ‌٣15..󱅉𽷛᯳; [B1, C1, P1, V6, X4_2]; xn--15-gyd983x..xn--1zf13512buy41d; [B1, C1, P1, V6, A4_2]; xn--15-gyd..xn--1zf13512buy41d; [B1, P1, V6, A4_2] # ٣15..᯳
-xn--15-gyd..xn--1zf13512buy41d; ٣15..󱅉𽷛᯳; [B1, V6, X4_2]; xn--15-gyd..xn--1zf13512buy41d; [B1, V6, A4_2]; ;  # ٣15..᯳
-xn--15-gyd983x..xn--1zf13512buy41d; ‌٣15..󱅉𽷛᯳; [B1, C1, V6, X4_2]; xn--15-gyd983x..xn--1zf13512buy41d; [B1, C1, V6, A4_2]; ;  # ٣15..᯳
-xn--cib675m.xn--1zf13512buy41d; ٣⒖.󱅉𽷛᯳; [B1, V6]; xn--cib675m.xn--1zf13512buy41d; ; ;  # ٣⒖.᯳
-xn--cib152kwgd.xn--1zf13512buy41d; ‌٣⒖.󱅉𽷛᯳; [B1, C1, V6]; xn--cib152kwgd.xn--1zf13512buy41d; ; ;  # ٣⒖.᯳
-᯳.-逋񳦭󙙮; ; [P1, V3, V5, V6]; xn--1zf.xn----483d46987byr50b; ; ;  # ᯳.-逋
-xn--1zf.xn----483d46987byr50b; ᯳.-逋񳦭󙙮; [V3, V5, V6]; xn--1zf.xn----483d46987byr50b; ; ;  # ᯳.-逋
-ݖ。ㅤ‍ς; ݖ.ㅤ‍ς; [C2, P1, V6]; xn--9ob.xn--3xa995lq2l; ; xn--9ob.xn--4xa574u; [P1, V6] # ݖ.ς
-ݖ。ᅠ‍ς; ݖ.ᅠ‍ς; [C2, P1, V6]; xn--9ob.xn--3xa580ebol; ; xn--9ob.xn--4xa380e; [P1, V6] # ݖ.ς
-ݖ。ᅠ‍Σ; ݖ.ᅠ‍σ; [C2, P1, V6]; xn--9ob.xn--4xa380ebol; ; xn--9ob.xn--4xa380e; [P1, V6] # ݖ.σ
-ݖ。ᅠ‍σ; ݖ.ᅠ‍σ; [C2, P1, V6]; xn--9ob.xn--4xa380ebol; ; xn--9ob.xn--4xa380e; [P1, V6] # ݖ.σ
-xn--9ob.xn--4xa380e; ݖ.ᅠσ; [V6]; xn--9ob.xn--4xa380e; ; ;  # ݖ.σ
-xn--9ob.xn--4xa380ebol; ݖ.ᅠ‍σ; [C2, V6]; xn--9ob.xn--4xa380ebol; ; ;  # ݖ.σ
-xn--9ob.xn--3xa580ebol; ݖ.ᅠ‍ς; [C2, V6]; xn--9ob.xn--3xa580ebol; ; ;  # ݖ.ς
-ݖ。ㅤ‍Σ; ݖ.ㅤ‍σ; [C2, P1, V6]; xn--9ob.xn--4xa795lq2l; ; xn--9ob.xn--4xa574u; [P1, V6] # ݖ.σ
-ݖ。ㅤ‍σ; ݖ.ㅤ‍σ; [C2, P1, V6]; xn--9ob.xn--4xa795lq2l; ; xn--9ob.xn--4xa574u; [P1, V6] # ݖ.σ
-xn--9ob.xn--4xa574u; ݖ.ㅤσ; [V6]; xn--9ob.xn--4xa574u; ; ;  # ݖ.σ
-xn--9ob.xn--4xa795lq2l; ݖ.ㅤ‍σ; [C2, V6]; xn--9ob.xn--4xa795lq2l; ; ;  # ݖ.σ
-xn--9ob.xn--3xa995lq2l; ݖ.ㅤ‍ς; [C2, V6]; xn--9ob.xn--3xa995lq2l; ; ;  # ݖ.ς
-ᡆႣ｡󞢧̕‍‍; ᡆႣ.󞢧̕‍‍; [C2, P1, V6]; xn--bnd320b.xn--5sa649la993427a; ; xn--bnd320b.xn--5sa98523p; [P1, V6] # ᡆႣ.̕
-ᡆႣ。󞢧̕‍‍; ᡆႣ.󞢧̕‍‍; [C2, P1, V6]; xn--bnd320b.xn--5sa649la993427a; ; xn--bnd320b.xn--5sa98523p; [P1, V6] # ᡆႣ.̕
-ᡆⴃ。󞢧̕‍‍; ᡆⴃ.󞢧̕‍‍; [C2, P1, V6]; xn--57e237h.xn--5sa649la993427a; ; xn--57e237h.xn--5sa98523p; [P1, V6] # ᡆⴃ.̕
-xn--57e237h.xn--5sa98523p; ᡆⴃ.󞢧̕; [V6]; xn--57e237h.xn--5sa98523p; ; ;  # ᡆⴃ.̕
-xn--57e237h.xn--5sa649la993427a; ᡆⴃ.󞢧̕‍‍; [C2, V6]; xn--57e237h.xn--5sa649la993427a; ; ;  # ᡆⴃ.̕
-xn--bnd320b.xn--5sa98523p; ᡆႣ.󞢧̕; [V6]; xn--bnd320b.xn--5sa98523p; ; ;  # ᡆႣ.̕
-xn--bnd320b.xn--5sa649la993427a; ᡆႣ.󞢧̕‍‍; [C2, V6]; xn--bnd320b.xn--5sa649la993427a; ; ;  # ᡆႣ.̕
-ᡆⴃ｡󞢧̕‍‍; ᡆⴃ.󞢧̕‍‍; [C2, P1, V6]; xn--57e237h.xn--5sa649la993427a; ; xn--57e237h.xn--5sa98523p; [P1, V6] # ᡆⴃ.̕
-㭄‍ࡏ𑚵．ς𐮮‌‍; 㭄‍ࡏ𑚵.ς𐮮‌‍; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--3xa895lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.ς𐮮
-㭄‍ࡏ𑚵.ς𐮮‌‍; ; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--3xa895lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.ς𐮮
-㭄‍ࡏ𑚵.Σ𐮮‌‍; 㭄‍ࡏ𑚵.σ𐮮‌‍; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.σ𐮮
-㭄‍ࡏ𑚵.σ𐮮‌‍; ; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.σ𐮮
-xn--ewb302xhu1l.xn--4xa0426k; 㭄ࡏ𑚵.σ𐮮; [B5, B6]; xn--ewb302xhu1l.xn--4xa0426k; ; ;  # 㭄ࡏ𑚵.σ𐮮
-xn--ewb962jfitku4r.xn--4xa695lda6932v; 㭄‍ࡏ𑚵.σ𐮮‌‍; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; ;  # 㭄ࡏ𑚵.σ𐮮
-xn--ewb962jfitku4r.xn--3xa895lda6932v; 㭄‍ࡏ𑚵.ς𐮮‌‍; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--3xa895lda6932v; ; ;  # 㭄ࡏ𑚵.ς𐮮
-㭄‍ࡏ𑚵．Σ𐮮‌‍; 㭄‍ࡏ𑚵.σ𐮮‌‍; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.σ𐮮
-㭄‍ࡏ𑚵．σ𐮮‌‍; 㭄‍ࡏ𑚵.σ𐮮‌‍; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.σ𐮮
-឵。𞯸ꡀ🄋; ឵.𞯸ꡀ🄋; [B1, B2, B3, B6, P1, V5, V6]; xn--03e.xn--8b9ar252dngd; ; ;  # .ꡀ🄋
-xn--03e.xn--8b9ar252dngd; ឵.𞯸ꡀ🄋; [B1, B2, B3, B6, V5, V6]; xn--03e.xn--8b9ar252dngd; ; ;  # .ꡀ🄋
-󐪺暑．⾑٨; 󐪺暑.襾٨; [B5, B6, P1, V6]; xn--tlvq3513e.xn--hib9228d; ; ;  # 暑.襾٨
-󐪺暑.襾٨; ; [B5, B6, P1, V6]; xn--tlvq3513e.xn--hib9228d; ; ;  # 暑.襾٨
-xn--tlvq3513e.xn--hib9228d; 󐪺暑.襾٨; [B5, B6, V6]; xn--tlvq3513e.xn--hib9228d; ; ;  # 暑.襾٨
-󠄚≯ꡢ。࢑᷿; ≯ꡢ.࢑᷿; [B1, P1, V6]; xn--hdh7783c.xn--9xb680i; ; ;  # ≯ꡢ.᷿
-󠄚≯ꡢ。࢑᷿; ≯ꡢ.࢑᷿; [B1, P1, V6]; xn--hdh7783c.xn--9xb680i; ; ;  # ≯ꡢ.᷿
-xn--hdh7783c.xn--9xb680i; ≯ꡢ.࢑᷿; [B1, V6]; xn--hdh7783c.xn--9xb680i; ; ;  # ≯ꡢ.᷿
-ﷃ𮁱୍𐨿.󐧤Ⴗ; كمم𮁱୍𐨿.󐧤Ⴗ; [B2, B3, P1, V6]; xn--fhbea662czx68a2tju.xn--vnd55511o; ; ;  # كمم𮁱୍𐨿.Ⴗ
-كمم𮁱୍𐨿.󐧤Ⴗ; ; [B2, B3, P1, V6]; xn--fhbea662czx68a2tju.xn--vnd55511o; ; ;  # كمم𮁱୍𐨿.Ⴗ
-كمم𮁱୍𐨿.󐧤ⴗ; ; [B2, B3, P1, V6]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ;  # كمم𮁱୍𐨿.ⴗ
-xn--fhbea662czx68a2tju.xn--fljz2846h; كمم𮁱୍𐨿.󐧤ⴗ; [B2, B3, V6]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ;  # كمم𮁱୍𐨿.ⴗ
-xn--fhbea662czx68a2tju.xn--vnd55511o; كمم𮁱୍𐨿.󐧤Ⴗ; [B2, B3, V6]; xn--fhbea662czx68a2tju.xn--vnd55511o; ; ;  # كمم𮁱୍𐨿.Ⴗ
-ﷃ𮁱୍𐨿.󐧤ⴗ; كمم𮁱୍𐨿.󐧤ⴗ; [B2, B3, P1, V6]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ;  # كمم𮁱୍𐨿.ⴗ
-𞀨｡᭄򡛨𞎇; 𞀨.᭄򡛨𞎇; [P1, V5, V6]; xn--mi4h.xn--1uf6843smg20c; ; ;  # 𞀨.᭄
-𞀨。᭄򡛨𞎇; 𞀨.᭄򡛨𞎇; [P1, V5, V6]; xn--mi4h.xn--1uf6843smg20c; ; ;  # 𞀨.᭄
-xn--mi4h.xn--1uf6843smg20c; 𞀨.᭄򡛨𞎇; [V5, V6]; xn--mi4h.xn--1uf6843smg20c; ; ;  # 𞀨.᭄
-󠣼‌．𐺰‌ᡟ; 󠣼‌.𐺰‌ᡟ; [B1, B2, B3, C1, P1, V6]; xn--0ug18531l.xn--v8e340bp21t; ; xn--q046e.xn--v8e7227j; [B1, B2, B3, P1, V6] # .𐺰ᡟ
-󠣼‌.𐺰‌ᡟ; ; [B1, B2, B3, C1, P1, V6]; xn--0ug18531l.xn--v8e340bp21t; ; xn--q046e.xn--v8e7227j; [B1, B2, B3, P1, V6] # .𐺰ᡟ
-xn--q046e.xn--v8e7227j; 󠣼.𐺰ᡟ; [B1, B2, B3, V6]; xn--q046e.xn--v8e7227j; ; ;  # .𐺰ᡟ
-xn--0ug18531l.xn--v8e340bp21t; 󠣼‌.𐺰‌ᡟ; [B1, B2, B3, C1, V6]; xn--0ug18531l.xn--v8e340bp21t; ; ;  # .𐺰ᡟ
-ᢛ󨅟ß.ጧ; ; [P1, V6]; xn--zca562jc642x.xn--p5d; ; xn--ss-7dp66033t.xn--p5d;  # ᢛß.ጧ
-ᢛ󨅟SS.ጧ; ᢛ󨅟ss.ጧ; [P1, V6]; xn--ss-7dp66033t.xn--p5d; ; ;  # ᢛss.ጧ
-ᢛ󨅟ss.ጧ; ; [P1, V6]; xn--ss-7dp66033t.xn--p5d; ; ;  # ᢛss.ጧ
-ᢛ󨅟Ss.ጧ; ᢛ󨅟ss.ጧ; [P1, V6]; xn--ss-7dp66033t.xn--p5d; ; ;  # ᢛss.ጧ
-xn--ss-7dp66033t.xn--p5d; ᢛ󨅟ss.ጧ; [V6]; xn--ss-7dp66033t.xn--p5d; ; ;  # ᢛss.ጧ
-xn--zca562jc642x.xn--p5d; ᢛ󨅟ß.ጧ; [V6]; xn--zca562jc642x.xn--p5d; ; ;  # ᢛß.ጧ
-⮒‌.񒚗‌; ; [C1, P1, V6]; xn--0ugx66b.xn--0ugz2871c; ; xn--b9i.xn--5p9y; [P1, V6] # ⮒.
-xn--b9i.xn--5p9y; ⮒.񒚗; [V6]; xn--b9i.xn--5p9y; ; ;  # ⮒.
-xn--0ugx66b.xn--0ugz2871c; ⮒‌.񒚗‌; [C1, V6]; xn--0ugx66b.xn--0ugz2871c; ; ;  # ⮒.
-𞤂񹞁𐹯。Ⴜ; 𞤤񹞁𐹯.Ⴜ; [B2, P1, V6]; xn--no0dr648a51o3b.xn--0nd; ; ;  # 𞤤𐹯.Ⴜ
-𞤤񹞁𐹯。ⴜ; 𞤤񹞁𐹯.ⴜ; [B2, P1, V6]; xn--no0dr648a51o3b.xn--klj; ; ;  # 𞤤𐹯.ⴜ
-xn--no0dr648a51o3b.xn--klj; 𞤤񹞁𐹯.ⴜ; [B2, V6]; xn--no0dr648a51o3b.xn--klj; ; ;  # 𞤤𐹯.ⴜ
-xn--no0dr648a51o3b.xn--0nd; 𞤤񹞁𐹯.Ⴜ; [B2, V6]; xn--no0dr648a51o3b.xn--0nd; ; ;  # 𞤤𐹯.Ⴜ
-𞤂񹞁𐹯。ⴜ; 𞤤񹞁𐹯.ⴜ; [B2, P1, V6]; xn--no0dr648a51o3b.xn--klj; ; ;  # 𞤤𐹯.ⴜ
-𐹵⮣‌𑄰｡񷴿ﲷ; 𐹵⮣‌𑄰.񷴿ضم; [B1, B5, B6, C1, P1, V6]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; xn--s9i5458e7yb.xn--1gb4a66004i; [B1, B5, B6, P1, V6] # 𐹵⮣𑄰.ضم
-𐹵⮣‌𑄰。񷴿ضم; 𐹵⮣‌𑄰.񷴿ضم; [B1, B5, B6, C1, P1, V6]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; xn--s9i5458e7yb.xn--1gb4a66004i; [B1, B5, B6, P1, V6] # 𐹵⮣𑄰.ضم
-xn--s9i5458e7yb.xn--1gb4a66004i; 𐹵⮣𑄰.񷴿ضم; [B1, B5, B6, V6]; xn--s9i5458e7yb.xn--1gb4a66004i; ; ;  # 𐹵⮣𑄰.ضم
-xn--0ug586bcj8p7jc.xn--1gb4a66004i; 𐹵⮣‌𑄰.񷴿ضم; [B1, B5, B6, C1, V6]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; ;  # 𐹵⮣𑄰.ضم
-Ⴒ。デß𞤵్; Ⴒ.デß𞤵్; [B5, B6, P1, V6]; xn--qnd.xn--zca669cmr3a0f28a; ; xn--qnd.xn--ss-9nh3648ahh20b;  # Ⴒ.デß𞤵్
-Ⴒ。デß𞤵్; Ⴒ.デß𞤵్; [B5, B6, P1, V6]; xn--qnd.xn--zca669cmr3a0f28a; ; xn--qnd.xn--ss-9nh3648ahh20b;  # Ⴒ.デß𞤵్
-ⴒ。デß𞤵్; ⴒ.デß𞤵్; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; xn--9kj.xn--ss-9nh3648ahh20b;  # ⴒ.デß𞤵్
-ⴒ。デß𞤵్; ⴒ.デß𞤵్; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; xn--9kj.xn--ss-9nh3648ahh20b;  # ⴒ.デß𞤵్
-Ⴒ。デSS𞤓్; Ⴒ.デss𞤵్; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ;  # Ⴒ.デss𞤵్
-Ⴒ。デSS𞤓్; Ⴒ.デss𞤵్; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ;  # Ⴒ.デss𞤵్
-ⴒ。デss𞤵్; ⴒ.デss𞤵్; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
-ⴒ。デss𞤵్; ⴒ.デss𞤵్; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
-Ⴒ。デSs𞤵్; Ⴒ.デss𞤵్; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ;  # Ⴒ.デss𞤵్
-Ⴒ。デSs𞤵్; Ⴒ.デss𞤵్; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ;  # Ⴒ.デss𞤵్
-xn--qnd.xn--ss-9nh3648ahh20b; Ⴒ.デss𞤵్; [B5, B6, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ;  # Ⴒ.デss𞤵్
-xn--9kj.xn--ss-9nh3648ahh20b; ⴒ.デss𞤵్; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
-xn--9kj.xn--zca669cmr3a0f28a; ⴒ.デß𞤵్; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; ;  # ⴒ.デß𞤵్
-xn--qnd.xn--zca669cmr3a0f28a; Ⴒ.デß𞤵్; [B5, B6, V6]; xn--qnd.xn--zca669cmr3a0f28a; ; ;  # Ⴒ.デß𞤵్
-Ⴒ。デSS𞤵్; Ⴒ.デss𞤵్; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ;  # Ⴒ.デss𞤵్
-Ⴒ。デSS𞤵్; Ⴒ.デss𞤵్; [B5, B6, P1, V6]; xn--qnd.xn--ss-9nh3648ahh20b; ; ;  # Ⴒ.デss𞤵్
-𑁿്．７-ߒ; 𑁿്.7-ߒ; [B1, B3, B6, V5]; xn--wxc1283k.xn--7--yue; ; ;  # 𑁿്.7-ߒ
-𑁿്.7-ߒ; ; [B1, B3, B6, V5]; xn--wxc1283k.xn--7--yue; ; ;  # 𑁿്.7-ߒ
-xn--wxc1283k.xn--7--yue; 𑁿്.7-ߒ; [B1, B3, B6, V5]; xn--wxc1283k.xn--7--yue; ; ;  # 𑁿്.7-ߒ
-≯𑜫󠭇.᜴񒞤𑍬ᢧ; ; [P1, V5, V6]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ;  # ≯𑜫.᜴𑍬ᢧ
-≯𑜫󠭇.᜴񒞤𑍬ᢧ; ≯𑜫󠭇.᜴񒞤𑍬ᢧ; [P1, V5, V6]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ;  # ≯𑜫.᜴𑍬ᢧ
-xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ≯𑜫󠭇.᜴񒞤𑍬ᢧ; [V5, V6]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ;  # ≯𑜫.᜴𑍬ᢧ
-ᷛ򎐙Ⴗ쏔。ށ; ᷛ򎐙Ⴗ쏔.ށ; [B1, P1, V5, V6]; xn--vnd148d733ky6n9e.xn--iqb; ; ;  # ᷛႷ쏔.ށ
-ᷛ򎐙Ⴗ쏔。ށ; ᷛ򎐙Ⴗ쏔.ށ; [B1, P1, V5, V6]; xn--vnd148d733ky6n9e.xn--iqb; ; ;  # ᷛႷ쏔.ށ
-ᷛ򎐙ⴗ쏔。ށ; ᷛ򎐙ⴗ쏔.ށ; [B1, P1, V5, V6]; xn--zegy26dw47iy6w2f.xn--iqb; ; ;  # ᷛⴗ쏔.ށ
-ᷛ򎐙ⴗ쏔。ށ; ᷛ򎐙ⴗ쏔.ށ; [B1, P1, V5, V6]; xn--zegy26dw47iy6w2f.xn--iqb; ; ;  # ᷛⴗ쏔.ށ
-xn--zegy26dw47iy6w2f.xn--iqb; ᷛ򎐙ⴗ쏔.ށ; [B1, V5, V6]; xn--zegy26dw47iy6w2f.xn--iqb; ; ;  # ᷛⴗ쏔.ށ
-xn--vnd148d733ky6n9e.xn--iqb; ᷛ򎐙Ⴗ쏔.ށ; [B1, V5, V6]; xn--vnd148d733ky6n9e.xn--iqb; ; ;  # ᷛႷ쏔.ށ
-ß｡𐋳Ⴌྸ; ß.𐋳Ⴌྸ; [P1, V6]; xn--zca.xn--lgd10cu829c; ; ss.xn--lgd10cu829c;  # ß.𐋳Ⴌྸ
-ß。𐋳Ⴌྸ; ß.𐋳Ⴌྸ; [P1, V6]; xn--zca.xn--lgd10cu829c; ; ss.xn--lgd10cu829c;  # ß.𐋳Ⴌྸ
-ß。𐋳ⴌྸ; ß.𐋳ⴌྸ; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m;  # ß.𐋳ⴌྸ
-SS。𐋳Ⴌྸ; ss.𐋳Ⴌྸ; [P1, V6]; ss.xn--lgd10cu829c; ; ;  # ss.𐋳Ⴌྸ
-ss。𐋳ⴌྸ; ss.𐋳ⴌྸ; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
-Ss。𐋳Ⴌྸ; ss.𐋳Ⴌྸ; [P1, V6]; ss.xn--lgd10cu829c; ; ;  # ss.𐋳Ⴌྸ
-ss.xn--lgd10cu829c; ss.𐋳Ⴌྸ; [V6]; ss.xn--lgd10cu829c; ; ;  # ss.𐋳Ⴌྸ
-ss.xn--lgd921mvv0m; ss.𐋳ⴌྸ; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
-ss.𐋳ⴌྸ; ; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
-SS.𐋳Ⴌྸ; ss.𐋳Ⴌྸ; [P1, V6]; ss.xn--lgd10cu829c; ; ;  # ss.𐋳Ⴌྸ
-Ss.𐋳Ⴌྸ; ss.𐋳Ⴌྸ; [P1, V6]; ss.xn--lgd10cu829c; ; ;  # ss.𐋳Ⴌྸ
-xn--zca.xn--lgd921mvv0m; ß.𐋳ⴌྸ; ; xn--zca.xn--lgd921mvv0m; ; ;  # ß.𐋳ⴌྸ
-ß.𐋳ⴌྸ; ; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m;  # ß.𐋳ⴌྸ
-xn--zca.xn--lgd10cu829c; ß.𐋳Ⴌྸ; [V6]; xn--zca.xn--lgd10cu829c; ; ;  # ß.𐋳Ⴌྸ
-ß｡𐋳ⴌྸ; ß.𐋳ⴌྸ; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m;  # ß.𐋳ⴌྸ
-SS｡𐋳Ⴌྸ; ss.𐋳Ⴌྸ; [P1, V6]; ss.xn--lgd10cu829c; ; ;  # ss.𐋳Ⴌྸ
-ss｡𐋳ⴌྸ; ss.𐋳ⴌྸ; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
-Ss｡𐋳Ⴌྸ; ss.𐋳Ⴌྸ; [P1, V6]; ss.xn--lgd10cu829c; ; ;  # ss.𐋳Ⴌྸ
--ڞ𐶡.‌⾝্; -ڞ𐶡.‌身্; [B1, C1, P1, V3, V6]; xn----stc7013r.xn--b7b305imj2f; ; xn----stc7013r.xn--b7b1419d; [B1, P1, V3, V6] # -ڞ.身্
--ڞ𐶡.‌身্; ; [B1, C1, P1, V3, V6]; xn----stc7013r.xn--b7b305imj2f; ; xn----stc7013r.xn--b7b1419d; [B1, P1, V3, V6] # -ڞ.身্
-xn----stc7013r.xn--b7b1419d; -ڞ𐶡.身্; [B1, V3, V6]; xn----stc7013r.xn--b7b1419d; ; ;  # -ڞ.身্
-xn----stc7013r.xn--b7b305imj2f; -ڞ𐶡.‌身্; [B1, C1, V3, V6]; xn----stc7013r.xn--b7b305imj2f; ; ;  # -ڞ.身্
-😮ݤ𑈵𞀖.💅‍; 😮ݤ𑈵𞀖.💅‍; [B1, C2]; xn--opb4277kuc7elqsa.xn--1ug5265p; ; xn--opb4277kuc7elqsa.xn--kr8h; [B1] # 😮ݤ𑈵𞀖.💅
-😮ݤ𑈵𞀖.💅‍; ; [B1, C2]; xn--opb4277kuc7elqsa.xn--1ug5265p; ; xn--opb4277kuc7elqsa.xn--kr8h; [B1] # 😮ݤ𑈵𞀖.💅
-xn--opb4277kuc7elqsa.xn--kr8h; 😮ݤ𑈵𞀖.💅; [B1]; xn--opb4277kuc7elqsa.xn--kr8h; ; ;  # 😮ݤ𑈵𞀖.💅
-xn--opb4277kuc7elqsa.xn--1ug5265p; 😮ݤ𑈵𞀖.💅‍; [B1, C2]; xn--opb4277kuc7elqsa.xn--1ug5265p; ; ;  # 😮ݤ𑈵𞀖.💅
-ࣲ‍꙳ܒ.ᢏ‌󠍄; ; [B1, B6, C1, C2, P1, V5, V6]; xn--cnb37g904be26j.xn--89e849ax9363a; ; xn--cnb37gdy00a.xn--89e02253p; [B1, B6, P1, V5, V6] # ࣲ꙳ܒ.ᢏ
-xn--cnb37gdy00a.xn--89e02253p; ࣲ꙳ܒ.ᢏ󠍄; [B1, B6, V5, V6]; xn--cnb37gdy00a.xn--89e02253p; ; ;  # ࣲ꙳ܒ.ᢏ
-xn--cnb37g904be26j.xn--89e849ax9363a; ࣲ‍꙳ܒ.ᢏ‌󠍄; [B1, B6, C1, C2, V5, V6]; xn--cnb37g904be26j.xn--89e849ax9363a; ; ;  # ࣲ꙳ܒ.ᢏ
-Ⴑ．ڿ𞯓ᠲ; Ⴑ.ڿ𞯓ᠲ; [B2, B3, P1, V6]; xn--pnd.xn--ykb840gd555a; ; ;  # Ⴑ.ڿᠲ
-Ⴑ.ڿ𞯓ᠲ; ; [B2, B3, P1, V6]; xn--pnd.xn--ykb840gd555a; ; ;  # Ⴑ.ڿᠲ
-ⴑ.ڿ𞯓ᠲ; ; [B2, B3, P1, V6]; xn--8kj.xn--ykb840gd555a; ; ;  # ⴑ.ڿᠲ
-xn--8kj.xn--ykb840gd555a; ⴑ.ڿ𞯓ᠲ; [B2, B3, V6]; xn--8kj.xn--ykb840gd555a; ; ;  # ⴑ.ڿᠲ
-xn--pnd.xn--ykb840gd555a; Ⴑ.ڿ𞯓ᠲ; [B2, B3, V6]; xn--pnd.xn--ykb840gd555a; ; ;  # Ⴑ.ڿᠲ
-ⴑ．ڿ𞯓ᠲ; ⴑ.ڿ𞯓ᠲ; [B2, B3, P1, V6]; xn--8kj.xn--ykb840gd555a; ; ;  # ⴑ.ڿᠲ
-ᩚ𛦝్。𚝬𝟵; ᩚ𛦝్.𚝬9; [P1, V5, V6]; xn--lqc703ebm93a.xn--9-000p; ; ;  # ᩚ్.9
-ᩚ𛦝్。𚝬9; ᩚ𛦝్.𚝬9; [P1, V5, V6]; xn--lqc703ebm93a.xn--9-000p; ; ;  # ᩚ్.9
-xn--lqc703ebm93a.xn--9-000p; ᩚ𛦝్.𚝬9; [V5, V6]; xn--lqc703ebm93a.xn--9-000p; ; ;  # ᩚ్.9
-‌ڠ𿺆𝟗｡Ⴣ꒘ﳐ񐘖; ‌ڠ𿺆9.Ⴣ꒘مخ񐘖; [B1, B5, C1, P1, V6]; xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; ; xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; [B2, B5, P1, V6] # ڠ9.Ⴣ꒘مخ
-‌ڠ𿺆9。Ⴣ꒘مخ񐘖; ‌ڠ𿺆9.Ⴣ꒘مخ񐘖; [B1, B5, C1, P1, V6]; xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; ; xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; [B2, B5, P1, V6] # ڠ9.Ⴣ꒘مخ
-‌ڠ𿺆9。ⴣ꒘مخ񐘖; ‌ڠ𿺆9.ⴣ꒘مخ񐘖; [B1, B5, C1, P1, V6]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; [B2, B5, P1, V6] # ڠ9.ⴣ꒘مخ
-xn--9-vtc42319e.xn--tgb9bz87p833hw316c; ڠ𿺆9.ⴣ꒘مخ񐘖; [B2, B5, V6]; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; ; ;  # ڠ9.ⴣ꒘مخ
-xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ‌ڠ𿺆9.ⴣ꒘مخ񐘖; [B1, B5, C1, V6]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; ;  # ڠ9.ⴣ꒘مخ
-xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; ڠ𿺆9.Ⴣ꒘مخ񐘖; [B2, B5, V6]; xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; ; ;  # ڠ9.Ⴣ꒘مخ
-xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; ‌ڠ𿺆9.Ⴣ꒘مخ񐘖; [B1, B5, C1, V6]; xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; ; ;  # ڠ9.Ⴣ꒘مخ
-‌ڠ𿺆𝟗｡ⴣ꒘ﳐ񐘖; ‌ڠ𿺆9.ⴣ꒘مخ񐘖; [B1, B5, C1, P1, V6]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; [B2, B5, P1, V6] # ڠ9.ⴣ꒘مخ
-ᡖ｡̟񗛨ஂ-; ᡖ.̟񗛨ஂ-; [P1, V3, V5, V6]; xn--m8e.xn----mdb555dkk71m; ; ;  # ᡖ.̟ஂ-
-ᡖ。̟񗛨ஂ-; ᡖ.̟񗛨ஂ-; [P1, V3, V5, V6]; xn--m8e.xn----mdb555dkk71m; ; ;  # ᡖ.̟ஂ-
-xn--m8e.xn----mdb555dkk71m; ᡖ.̟񗛨ஂ-; [V3, V5, V6]; xn--m8e.xn----mdb555dkk71m; ; ;  # ᡖ.̟ஂ-
+xn--1ug9105g.ss; \u200D𐹶.ss; [B1, C2]; xn--1ug9105g.ss; ; ;  # 𐹶.ss
+xn--1ug9105g.xn--zca; \u200D𐹶.ß; [B1, C2]; xn--1ug9105g.xn--zca; ; ;  # 𐹶.ß
+Å둄-．\u200C; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3, A4_2] # å둄-.
+A\u030A둄-．\u200C; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3, A4_2] # å둄-.
+Å둄-.\u200C; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3, A4_2] # å둄-.
+A\u030A둄-.\u200C; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3, A4_2] # å둄-.
+a\u030A둄-.\u200C; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3, A4_2] # å둄-.
+å둄-.\u200C; ; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3, A4_2] # å둄-.
+xn----1fa1788k.; å둄-.; [V3]; xn----1fa1788k.; [V3, A4_2]; ;  # å둄-.
+xn----1fa1788k.xn--0ug; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; ;  # å둄-.
+a\u030A둄-．\u200C; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3, A4_2] # å둄-.
+å둄-．\u200C; å둄-.\u200C; [C1, V3]; xn----1fa1788k.xn--0ug; ; xn----1fa1788k.; [V3, A4_2] # å둄-.
+\u3099򬎑\u1DD7𞤀.򱲢-\u0953; \u3099򬎑\u1DD7𞤢.򱲢-\u0953; [B1, B6, V6, V7]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ;  # ゙ᷗ𞤢.-॓
+\u3099򬎑\u1DD7𞤢.򱲢-\u0953; ; [B1, B6, V6, V7]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ;  # ゙ᷗ𞤢.-॓
+xn--veg121fwg63altj9d.xn----eyd92688s; \u3099򬎑\u1DD7𞤢.򱲢-\u0953; [B1, B6, V6, V7]; xn--veg121fwg63altj9d.xn----eyd92688s; ; ;  # ゙ᷗ𞤢.-॓
+ς.ß񴱄\u06DD\u2D7F; ; [B5, B6, V7]; xn--3xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n;  # ς.ß⵿
+Σ.SS񴱄\u06DD\u2D7F; σ.ss񴱄\u06DD\u2D7F; [B5, B6, V7]; xn--4xa.xn--ss-y8d4760biv60n; ; ;  # σ.ss⵿
+σ.ss񴱄\u06DD\u2D7F; ; [B5, B6, V7]; xn--4xa.xn--ss-y8d4760biv60n; ; ;  # σ.ss⵿
+Σ.ss񴱄\u06DD\u2D7F; σ.ss񴱄\u06DD\u2D7F; [B5, B6, V7]; xn--4xa.xn--ss-y8d4760biv60n; ; ;  # σ.ss⵿
+xn--4xa.xn--ss-y8d4760biv60n; σ.ss񴱄\u06DD\u2D7F; [B5, B6, V7]; xn--4xa.xn--ss-y8d4760biv60n; ; ;  # σ.ss⵿
+Σ.ß񴱄\u06DD\u2D7F; σ.ß񴱄\u06DD\u2D7F; [B5, B6, V7]; xn--4xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n;  # σ.ß⵿
+σ.ß񴱄\u06DD\u2D7F; ; [B5, B6, V7]; xn--4xa.xn--zca281az71b8x73m; ; xn--4xa.xn--ss-y8d4760biv60n;  # σ.ß⵿
+xn--4xa.xn--zca281az71b8x73m; σ.ß񴱄\u06DD\u2D7F; [B5, B6, V7]; xn--4xa.xn--zca281az71b8x73m; ; ;  # σ.ß⵿
+xn--3xa.xn--zca281az71b8x73m; ς.ß񴱄\u06DD\u2D7F; [B5, B6, V7]; xn--3xa.xn--zca281az71b8x73m; ; ;  # ς.ß⵿
+ꡀ𞀟｡\u066B\u0599; ꡀ𞀟.\u066B\u0599; [B1]; xn--8b9a1720d.xn--kcb33b; ; ;  # ꡀ𞀟.٫֙
+ꡀ𞀟。\u066B\u0599; ꡀ𞀟.\u066B\u0599; [B1]; xn--8b9a1720d.xn--kcb33b; ; ;  # ꡀ𞀟.٫֙
+xn--8b9a1720d.xn--kcb33b; ꡀ𞀟.\u066B\u0599; [B1]; xn--8b9a1720d.xn--kcb33b; ; ;  # ꡀ𞀟.٫֙
+򈛉\u200C\u08A9｡⧅񘘡-𐭡; 򈛉\u200C\u08A9.⧅񘘡-𐭡; [B1, B5, B6, C1, V7]; xn--yyb780jll63m.xn----zir1232guu71b; ; xn--yyb56242i.xn----zir1232guu71b; [B1, B5, B6, V7] # ࢩ.⧅-𐭡
+򈛉\u200C\u08A9。⧅񘘡-𐭡; 򈛉\u200C\u08A9.⧅񘘡-𐭡; [B1, B5, B6, C1, V7]; xn--yyb780jll63m.xn----zir1232guu71b; ; xn--yyb56242i.xn----zir1232guu71b; [B1, B5, B6, V7] # ࢩ.⧅-𐭡
+xn--yyb56242i.xn----zir1232guu71b; 򈛉\u08A9.⧅񘘡-𐭡; [B1, B5, B6, V7]; xn--yyb56242i.xn----zir1232guu71b; ; ;  # ࢩ.⧅-𐭡
+xn--yyb780jll63m.xn----zir1232guu71b; 򈛉\u200C\u08A9.⧅񘘡-𐭡; [B1, B5, B6, C1, V7]; xn--yyb780jll63m.xn----zir1232guu71b; ; ;  # ࢩ.⧅-𐭡
+룱\u200D𰍨\u200C。𝨖︒; 룱\u200D𰍨\u200C.𝨖︒; [C1, C2, V6, V7]; xn--0ugb3358ili2v.xn--y86cl899a; ; xn--ct2b0738h.xn--y86cl899a; [V6, V7] # 룱𰍨.𝨖︒
+룱\u200D𰍨\u200C。𝨖︒; 룱\u200D𰍨\u200C.𝨖︒; [C1, C2, V6, V7]; xn--0ugb3358ili2v.xn--y86cl899a; ; xn--ct2b0738h.xn--y86cl899a; [V6, V7] # 룱𰍨.𝨖︒
+룱\u200D𰍨\u200C。𝨖。; 룱\u200D𰍨\u200C.𝨖.; [C1, C2, V6]; xn--0ugb3358ili2v.xn--772h.; [C1, C2, V6, A4_2]; xn--ct2b0738h.xn--772h.; [V6, A4_2] # 룱𰍨.𝨖.
+룱\u200D𰍨\u200C。𝨖。; 룱\u200D𰍨\u200C.𝨖.; [C1, C2, V6]; xn--0ugb3358ili2v.xn--772h.; [C1, C2, V6, A4_2]; xn--ct2b0738h.xn--772h.; [V6, A4_2] # 룱𰍨.𝨖.
+xn--ct2b0738h.xn--772h.; 룱𰍨.𝨖.; [V6]; xn--ct2b0738h.xn--772h.; [V6, A4_2]; ;  # 룱𰍨.𝨖.
+xn--0ugb3358ili2v.xn--772h.; 룱\u200D𰍨\u200C.𝨖.; [C1, C2, V6]; xn--0ugb3358ili2v.xn--772h.; [C1, C2, V6, A4_2]; ;  # 룱𰍨.𝨖.
+xn--ct2b0738h.xn--y86cl899a; 룱𰍨.𝨖︒; [V6, V7]; xn--ct2b0738h.xn--y86cl899a; ; ;  # 룱𰍨.𝨖︒
+xn--0ugb3358ili2v.xn--y86cl899a; 룱\u200D𰍨\u200C.𝨖︒; [C1, C2, V6, V7]; xn--0ugb3358ili2v.xn--y86cl899a; ; ;  # 룱𰍨.𝨖︒
+🄄．\u1CDC⒈ß; 3,.\u1CDC⒈ß; [V6, V7, U1]; 3,.xn--zca344lmif; ; 3,.xn--ss-k1r094b;  # 3,.᳜⒈ß
+3,.\u1CDC1.ß; ; [V6, U1]; 3,.xn--1-43l.xn--zca; ; 3,.xn--1-43l.ss;  # 3,.᳜1.ß
+3,.\u1CDC1.SS; 3,.\u1CDC1.ss; [V6, U1]; 3,.xn--1-43l.ss; ; ;  # 3,.᳜1.ss
+3,.\u1CDC1.ss; ; [V6, U1]; 3,.xn--1-43l.ss; ; ;  # 3,.᳜1.ss
+3,.\u1CDC1.Ss; 3,.\u1CDC1.ss; [V6, U1]; 3,.xn--1-43l.ss; ; ;  # 3,.᳜1.ss
+3,.xn--1-43l.ss; 3,.\u1CDC1.ss; [V6, U1]; 3,.xn--1-43l.ss; ; ;  # 3,.᳜1.ss
+3,.xn--1-43l.xn--zca; 3,.\u1CDC1.ß; [V6, U1]; 3,.xn--1-43l.xn--zca; ; ;  # 3,.᳜1.ß
+🄄．\u1CDC⒈SS; 3,.\u1CDC⒈ss; [V6, V7, U1]; 3,.xn--ss-k1r094b; ; ;  # 3,.᳜⒈ss
+🄄．\u1CDC⒈ss; 3,.\u1CDC⒈ss; [V6, V7, U1]; 3,.xn--ss-k1r094b; ; ;  # 3,.᳜⒈ss
+🄄．\u1CDC⒈Ss; 3,.\u1CDC⒈ss; [V6, V7, U1]; 3,.xn--ss-k1r094b; ; ;  # 3,.᳜⒈ss
+3,.xn--ss-k1r094b; 3,.\u1CDC⒈ss; [V6, V7, U1]; 3,.xn--ss-k1r094b; ; ;  # 3,.᳜⒈ss
+3,.xn--zca344lmif; 3,.\u1CDC⒈ß; [V6, V7, U1]; 3,.xn--zca344lmif; ; ;  # 3,.᳜⒈ß
+xn--x07h.xn--ss-k1r094b; 🄄.\u1CDC⒈ss; [V6, V7]; xn--x07h.xn--ss-k1r094b; ; ;  # 🄄.᳜⒈ss
+xn--x07h.xn--zca344lmif; 🄄.\u1CDC⒈ß; [V6, V7]; xn--x07h.xn--zca344lmif; ; ;  # 🄄.᳜⒈ß
+񇌍\u2D7F｡𞼓򡄨𑐺; 񇌍\u2D7F.𞼓򡄨𑐺; [B2, B3, V7]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ;  # ⵿.𑐺
+񇌍\u2D7F。𞼓򡄨𑐺; 񇌍\u2D7F.𞼓򡄨𑐺; [B2, B3, V7]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ;  # ⵿.𑐺
+xn--eoj16016a.xn--0v1d3848a3lr0d; 񇌍\u2D7F.𞼓򡄨𑐺; [B2, B3, V7]; xn--eoj16016a.xn--0v1d3848a3lr0d; ; ;  # ⵿.𑐺
+\u1DFD\u103A\u094D．≠\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [V6] # ်्᷽.≠㇛
+\u103A\u094D\u1DFD．≠\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [V6] # ်्᷽.≠㇛
+\u103A\u094D\u1DFD．=\u0338\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [V6] # ်्᷽.≠㇛
+\u103A\u094D\u1DFD.≠\u200D㇛; ; [C2, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [V6] # ်्᷽.≠㇛
+\u103A\u094D\u1DFD.=\u0338\u200D㇛; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; xn--n3b956a9zm.xn--1ch912d; [V6] # ်्᷽.≠㇛
+xn--n3b956a9zm.xn--1ch912d; \u103A\u094D\u1DFD.≠㇛; [V6]; xn--n3b956a9zm.xn--1ch912d; ; ;  # ်्᷽.≠㇛
+xn--n3b956a9zm.xn--1ug63gz5w; \u103A\u094D\u1DFD.≠\u200D㇛; [C2, V6]; xn--n3b956a9zm.xn--1ug63gz5w; ; ;  # ်्᷽.≠㇛
+Ⴁ𐋨娤.\u200D\u033C\u0662𑖿; ⴁ𐋨娤.\u200D\u033C\u0662𑖿; [B1, C2]; xn--skjw75lg29h.xn--9ta62ngt6aou8t; ; xn--skjw75lg29h.xn--9ta62nrv36a; [B1, V6] # ⴁ𐋨娤.̼٢𑖿
+ⴁ𐋨娤.\u200D\u033C\u0662𑖿; ; [B1, C2]; xn--skjw75lg29h.xn--9ta62ngt6aou8t; ; xn--skjw75lg29h.xn--9ta62nrv36a; [B1, V6] # ⴁ𐋨娤.̼٢𑖿
+xn--skjw75lg29h.xn--9ta62nrv36a; ⴁ𐋨娤.\u033C\u0662𑖿; [B1, V6]; xn--skjw75lg29h.xn--9ta62nrv36a; ; ;  # ⴁ𐋨娤.̼٢𑖿
+xn--skjw75lg29h.xn--9ta62ngt6aou8t; ⴁ𐋨娤.\u200D\u033C\u0662𑖿; [B1, C2]; xn--skjw75lg29h.xn--9ta62ngt6aou8t; ; ;  # ⴁ𐋨娤.̼٢𑖿
+xn--8md2578ag21g.xn--9ta62nrv36a; Ⴁ𐋨娤.\u033C\u0662𑖿; [B1, V6, V7]; xn--8md2578ag21g.xn--9ta62nrv36a; ; ;  # Ⴁ𐋨娤.̼٢𑖿
+xn--8md2578ag21g.xn--9ta62ngt6aou8t; Ⴁ𐋨娤.\u200D\u033C\u0662𑖿; [B1, C2, V7]; xn--8md2578ag21g.xn--9ta62ngt6aou8t; ; ;  # Ⴁ𐋨娤.̼٢𑖿
+🄀Ⴄ\u0669\u0820。⒈\u0FB6ß; 🄀ⴄ\u0669\u0820.⒈\u0FB6ß; [B1, V7]; xn--iib29fp25e0219a.xn--zca117e3vp; ; xn--iib29fp25e0219a.xn--ss-1sj588o;  # 🄀ⴄ٩ࠠ.⒈ྶß
+0.Ⴄ\u0669\u0820。1.\u0FB6ß; 0.ⴄ\u0669\u0820.1.\u0FB6ß; [B1, B5, B6, V6]; 0.xn--iib29fp25e.1.xn--zca117e; ; 0.xn--iib29fp25e.1.xn--ss-1sj;  # 0.ⴄ٩ࠠ.1.ྶß
+0.ⴄ\u0669\u0820。1.\u0FB6ß; 0.ⴄ\u0669\u0820.1.\u0FB6ß; [B1, B5, B6, V6]; 0.xn--iib29fp25e.1.xn--zca117e; ; 0.xn--iib29fp25e.1.xn--ss-1sj;  # 0.ⴄ٩ࠠ.1.ྶß
+0.Ⴄ\u0669\u0820。1.\u0FB6SS; 0.ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, V6]; 0.xn--iib29fp25e.1.xn--ss-1sj; ; ;  # 0.ⴄ٩ࠠ.1.ྶss
+0.ⴄ\u0669\u0820。1.\u0FB6ss; 0.ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, V6]; 0.xn--iib29fp25e.1.xn--ss-1sj; ; ;  # 0.ⴄ٩ࠠ.1.ྶss
+0.Ⴄ\u0669\u0820。1.\u0FB6Ss; 0.ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, V6]; 0.xn--iib29fp25e.1.xn--ss-1sj; ; ;  # 0.ⴄ٩ࠠ.1.ྶss
+0.xn--iib29fp25e.1.xn--ss-1sj; 0.ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, V6]; 0.xn--iib29fp25e.1.xn--ss-1sj; ; ;  # 0.ⴄ٩ࠠ.1.ྶss
+0.xn--iib29fp25e.1.xn--zca117e; 0.ⴄ\u0669\u0820.1.\u0FB6ß; [B1, B5, B6, V6]; 0.xn--iib29fp25e.1.xn--zca117e; ; ;  # 0.ⴄ٩ࠠ.1.ྶß
+🄀ⴄ\u0669\u0820。⒈\u0FB6ß; 🄀ⴄ\u0669\u0820.⒈\u0FB6ß; [B1, V7]; xn--iib29fp25e0219a.xn--zca117e3vp; ; xn--iib29fp25e0219a.xn--ss-1sj588o;  # 🄀ⴄ٩ࠠ.⒈ྶß
+🄀Ⴄ\u0669\u0820。⒈\u0FB6SS; 🄀ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, V7]; xn--iib29fp25e0219a.xn--ss-1sj588o; ; ;  # 🄀ⴄ٩ࠠ.⒈ྶss
+🄀ⴄ\u0669\u0820。⒈\u0FB6ss; 🄀ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, V7]; xn--iib29fp25e0219a.xn--ss-1sj588o; ; ;  # 🄀ⴄ٩ࠠ.⒈ྶss
+🄀Ⴄ\u0669\u0820。⒈\u0FB6Ss; 🄀ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, V7]; xn--iib29fp25e0219a.xn--ss-1sj588o; ; ;  # 🄀ⴄ٩ࠠ.⒈ྶss
+xn--iib29fp25e0219a.xn--ss-1sj588o; 🄀ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, V7]; xn--iib29fp25e0219a.xn--ss-1sj588o; ; ;  # 🄀ⴄ٩ࠠ.⒈ྶss
+xn--iib29fp25e0219a.xn--zca117e3vp; 🄀ⴄ\u0669\u0820.⒈\u0FB6ß; [B1, V7]; xn--iib29fp25e0219a.xn--zca117e3vp; ; ;  # 🄀ⴄ٩ࠠ.⒈ྶß
+0.xn--iib29f26o.1.xn--ss-1sj; 0.Ⴄ\u0669\u0820.1.\u0FB6ss; [B1, B5, B6, V6, V7]; 0.xn--iib29f26o.1.xn--ss-1sj; ; ;  # 0.Ⴄ٩ࠠ.1.ྶss
+0.xn--iib29f26o.1.xn--zca117e; 0.Ⴄ\u0669\u0820.1.\u0FB6ß; [B1, B5, B6, V6, V7]; 0.xn--iib29f26o.1.xn--zca117e; ; ;  # 0.Ⴄ٩ࠠ.1.ྶß
+xn--iib29f26o6n43c.xn--ss-1sj588o; 🄀Ⴄ\u0669\u0820.⒈\u0FB6ss; [B1, V7]; xn--iib29f26o6n43c.xn--ss-1sj588o; ; ;  # 🄀Ⴄ٩ࠠ.⒈ྶss
+xn--iib29f26o6n43c.xn--zca117e3vp; 🄀Ⴄ\u0669\u0820.⒈\u0FB6ß; [B1, V7]; xn--iib29f26o6n43c.xn--zca117e3vp; ; ;  # 🄀Ⴄ٩ࠠ.⒈ྶß
+≠.\u200C-\u066B; ; [B1, C1]; xn--1ch.xn----vqc597q; ; xn--1ch.xn----vqc; [B1, V3] # ≠.-٫
+=\u0338.\u200C-\u066B; ≠.\u200C-\u066B; [B1, C1]; xn--1ch.xn----vqc597q; ; xn--1ch.xn----vqc; [B1, V3] # ≠.-٫
+xn--1ch.xn----vqc; ≠.-\u066B; [B1, V3]; xn--1ch.xn----vqc; ; ;  # ≠.-٫
+xn--1ch.xn----vqc597q; ≠.\u200C-\u066B; [B1, C1]; xn--1ch.xn----vqc597q; ; ;  # ≠.-٫
+\u0660۱｡󠳶𞠁\u0665; \u0660۱.󠳶𞠁\u0665; [B1, V7]; xn--8hb40a.xn--eib7967vner3e; ; ;  # ٠۱.𞠁٥
+\u0660۱。󠳶𞠁\u0665; \u0660۱.󠳶𞠁\u0665; [B1, V7]; xn--8hb40a.xn--eib7967vner3e; ; ;  # ٠۱.𞠁٥
+xn--8hb40a.xn--eib7967vner3e; \u0660۱.󠳶𞠁\u0665; [B1, V7]; xn--8hb40a.xn--eib7967vner3e; ; ;  # ٠۱.𞠁٥
+\u200C\u0663⒖。󱅉𽷛\u1BF3; \u200C\u0663⒖.󱅉𽷛\u1BF3; [B1, C1, V7]; xn--cib152kwgd.xn--1zf13512buy41d; ; xn--cib675m.xn--1zf13512buy41d; [B1, V7] # ٣⒖.᯳
+\u200C\u066315.。󱅉𽷛\u1BF3; \u200C\u066315..󱅉𽷛\u1BF3; [B1, C1, V7, X4_2]; xn--15-gyd983x..xn--1zf13512buy41d; [B1, C1, V7, A4_2]; xn--15-gyd..xn--1zf13512buy41d; [B1, V7, A4_2] # ٣15..᯳
+xn--15-gyd..xn--1zf13512buy41d; \u066315..󱅉𽷛\u1BF3; [B1, V7, X4_2]; xn--15-gyd..xn--1zf13512buy41d; [B1, V7, A4_2]; ;  # ٣15..᯳
+xn--15-gyd983x..xn--1zf13512buy41d; \u200C\u066315..󱅉𽷛\u1BF3; [B1, C1, V7, X4_2]; xn--15-gyd983x..xn--1zf13512buy41d; [B1, C1, V7, A4_2]; ;  # ٣15..᯳
+xn--cib675m.xn--1zf13512buy41d; \u0663⒖.󱅉𽷛\u1BF3; [B1, V7]; xn--cib675m.xn--1zf13512buy41d; ; ;  # ٣⒖.᯳
+xn--cib152kwgd.xn--1zf13512buy41d; \u200C\u0663⒖.󱅉𽷛\u1BF3; [B1, C1, V7]; xn--cib152kwgd.xn--1zf13512buy41d; ; ;  # ٣⒖.᯳
+\u1BF3.-逋񳦭󙙮; ; [V3, V6, V7]; xn--1zf.xn----483d46987byr50b; ; ;  # ᯳.-逋
+xn--1zf.xn----483d46987byr50b; \u1BF3.-逋񳦭󙙮; [V3, V6, V7]; xn--1zf.xn----483d46987byr50b; ; ;  # ᯳.-逋
+\u0756。\u3164\u200Dς; \u0756.\u200Dς; [B1, C2]; xn--9ob.xn--3xa995l; ; xn--9ob.xn--4xa; [] # ݖ.ς
+\u0756。\u1160\u200Dς; \u0756.\u200Dς; [B1, C2]; xn--9ob.xn--3xa995l; ; xn--9ob.xn--4xa; [] # ݖ.ς
+\u0756。\u1160\u200DΣ; \u0756.\u200Dσ; [B1, C2]; xn--9ob.xn--4xa795l; ; xn--9ob.xn--4xa; [] # ݖ.σ
+\u0756。\u1160\u200Dσ; \u0756.\u200Dσ; [B1, C2]; xn--9ob.xn--4xa795l; ; xn--9ob.xn--4xa; [] # ݖ.σ
+xn--9ob.xn--4xa; \u0756.σ; ; xn--9ob.xn--4xa; ; ;  # ݖ.σ
+\u0756.σ; ; ; xn--9ob.xn--4xa; ; ;  # ݖ.σ
+\u0756.Σ; \u0756.σ; ; xn--9ob.xn--4xa; ; ;  # ݖ.σ
+xn--9ob.xn--4xa795l; \u0756.\u200Dσ; [B1, C2]; xn--9ob.xn--4xa795l; ; ;  # ݖ.σ
+xn--9ob.xn--3xa995l; \u0756.\u200Dς; [B1, C2]; xn--9ob.xn--3xa995l; ; ;  # ݖ.ς
+\u0756。\u3164\u200DΣ; \u0756.\u200Dσ; [B1, C2]; xn--9ob.xn--4xa795l; ; xn--9ob.xn--4xa; [] # ݖ.σ
+\u0756。\u3164\u200Dσ; \u0756.\u200Dσ; [B1, C2]; xn--9ob.xn--4xa795l; ; xn--9ob.xn--4xa; [] # ݖ.σ
+xn--9ob.xn--4xa380e; \u0756.\u1160σ; [V7]; xn--9ob.xn--4xa380e; ; ;  # ݖ.σ
+xn--9ob.xn--4xa380ebol; \u0756.\u1160\u200Dσ; [C2, V7]; xn--9ob.xn--4xa380ebol; ; ;  # ݖ.σ
+xn--9ob.xn--3xa580ebol; \u0756.\u1160\u200Dς; [C2, V7]; xn--9ob.xn--3xa580ebol; ; ;  # ݖ.ς
+xn--9ob.xn--4xa574u; \u0756.\u3164σ; [V7]; xn--9ob.xn--4xa574u; ; ;  # ݖ.σ
+xn--9ob.xn--4xa795lq2l; \u0756.\u3164\u200Dσ; [C2, V7]; xn--9ob.xn--4xa795lq2l; ; ;  # ݖ.σ
+xn--9ob.xn--3xa995lq2l; \u0756.\u3164\u200Dς; [C2, V7]; xn--9ob.xn--3xa995lq2l; ; ;  # ݖ.ς
+ᡆႣ｡󞢧\u0315\u200D\u200D; ᡆⴃ.󞢧\u0315\u200D\u200D; [C2, V7]; xn--57e237h.xn--5sa649la993427a; ; xn--57e237h.xn--5sa98523p; [V7] # ᡆⴃ.̕
+ᡆႣ。󞢧\u0315\u200D\u200D; ᡆⴃ.󞢧\u0315\u200D\u200D; [C2, V7]; xn--57e237h.xn--5sa649la993427a; ; xn--57e237h.xn--5sa98523p; [V7] # ᡆⴃ.̕
+ᡆⴃ。󞢧\u0315\u200D\u200D; ᡆⴃ.󞢧\u0315\u200D\u200D; [C2, V7]; xn--57e237h.xn--5sa649la993427a; ; xn--57e237h.xn--5sa98523p; [V7] # ᡆⴃ.̕
+xn--57e237h.xn--5sa98523p; ᡆⴃ.󞢧\u0315; [V7]; xn--57e237h.xn--5sa98523p; ; ;  # ᡆⴃ.̕
+xn--57e237h.xn--5sa649la993427a; ᡆⴃ.󞢧\u0315\u200D\u200D; [C2, V7]; xn--57e237h.xn--5sa649la993427a; ; ;  # ᡆⴃ.̕
+ᡆⴃ｡󞢧\u0315\u200D\u200D; ᡆⴃ.󞢧\u0315\u200D\u200D; [C2, V7]; xn--57e237h.xn--5sa649la993427a; ; xn--57e237h.xn--5sa98523p; [V7] # ᡆⴃ.̕
+xn--bnd320b.xn--5sa98523p; ᡆႣ.󞢧\u0315; [V7]; xn--bnd320b.xn--5sa98523p; ; ;  # ᡆႣ.̕
+xn--bnd320b.xn--5sa649la993427a; ᡆႣ.󞢧\u0315\u200D\u200D; [C2, V7]; xn--bnd320b.xn--5sa649la993427a; ; ;  # ᡆႣ.̕
+㭄\u200D\u084F𑚵．ς𐮮\u200C\u200D; 㭄\u200D\u084F𑚵.ς𐮮\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--3xa895lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.ς𐮮
+㭄\u200D\u084F𑚵.ς𐮮\u200C\u200D; ; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--3xa895lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.ς𐮮
+㭄\u200D\u084F𑚵.Σ𐮮\u200C\u200D; 㭄\u200D\u084F𑚵.σ𐮮\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.σ𐮮
+㭄\u200D\u084F𑚵.σ𐮮\u200C\u200D; ; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.σ𐮮
+xn--ewb302xhu1l.xn--4xa0426k; 㭄\u084F𑚵.σ𐮮; [B5, B6]; xn--ewb302xhu1l.xn--4xa0426k; ; ;  # 㭄ࡏ𑚵.σ𐮮
+xn--ewb962jfitku4r.xn--4xa695lda6932v; 㭄\u200D\u084F𑚵.σ𐮮\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; ;  # 㭄ࡏ𑚵.σ𐮮
+xn--ewb962jfitku4r.xn--3xa895lda6932v; 㭄\u200D\u084F𑚵.ς𐮮\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--3xa895lda6932v; ; ;  # 㭄ࡏ𑚵.ς𐮮
+㭄\u200D\u084F𑚵．Σ𐮮\u200C\u200D; 㭄\u200D\u084F𑚵.σ𐮮\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.σ𐮮
+㭄\u200D\u084F𑚵．σ𐮮\u200C\u200D; 㭄\u200D\u084F𑚵.σ𐮮\u200C\u200D; [B5, B6, C1, C2]; xn--ewb962jfitku4r.xn--4xa695lda6932v; ; xn--ewb302xhu1l.xn--4xa0426k; [B5, B6] # 㭄ࡏ𑚵.σ𐮮
+\u17B5。𞯸ꡀ🄋; .𞯸ꡀ🄋; [B2, B3, V7, X4_2]; .xn--8b9ar252dngd; [B2, B3, V7, A4_2]; ;  # .ꡀ🄋
+.xn--8b9ar252dngd; .𞯸ꡀ🄋; [B2, B3, V7, X4_2]; .xn--8b9ar252dngd; [B2, B3, V7, A4_2]; ;  # .ꡀ🄋
+xn--03e.xn--8b9ar252dngd; \u17B5.𞯸ꡀ🄋; [B1, B2, B3, V6, V7]; xn--03e.xn--8b9ar252dngd; ; ;  # .ꡀ🄋
+󐪺暑．⾑\u0668; 󐪺暑.襾\u0668; [B5, B6, V7]; xn--tlvq3513e.xn--hib9228d; ; ;  # 暑.襾٨
+󐪺暑.襾\u0668; ; [B5, B6, V7]; xn--tlvq3513e.xn--hib9228d; ; ;  # 暑.襾٨
+xn--tlvq3513e.xn--hib9228d; 󐪺暑.襾\u0668; [B5, B6, V7]; xn--tlvq3513e.xn--hib9228d; ; ;  # 暑.襾٨
+󠄚≯ꡢ。\u0891\u1DFF; ≯ꡢ.\u0891\u1DFF; [B1, V7]; xn--hdh7783c.xn--9xb680i; ; ;  # ≯ꡢ.᷿
+󠄚>\u0338ꡢ。\u0891\u1DFF; ≯ꡢ.\u0891\u1DFF; [B1, V7]; xn--hdh7783c.xn--9xb680i; ; ;  # ≯ꡢ.᷿
+xn--hdh7783c.xn--9xb680i; ≯ꡢ.\u0891\u1DFF; [B1, V7]; xn--hdh7783c.xn--9xb680i; ; ;  # ≯ꡢ.᷿
+\uFDC3𮁱\u0B4D𐨿.󐧤Ⴗ; \u0643\u0645\u0645𮁱\u0B4D𐨿.󐧤ⴗ; [B2, B3, V7]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ;  # كمم𮁱୍𐨿.ⴗ
+\u0643\u0645\u0645𮁱\u0B4D𐨿.󐧤Ⴗ; \u0643\u0645\u0645𮁱\u0B4D𐨿.󐧤ⴗ; [B2, B3, V7]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ;  # كمم𮁱୍𐨿.ⴗ
+\u0643\u0645\u0645𮁱\u0B4D𐨿.󐧤ⴗ; ; [B2, B3, V7]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ;  # كمم𮁱୍𐨿.ⴗ
+xn--fhbea662czx68a2tju.xn--fljz2846h; \u0643\u0645\u0645𮁱\u0B4D𐨿.󐧤ⴗ; [B2, B3, V7]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ;  # كمم𮁱୍𐨿.ⴗ
+\uFDC3𮁱\u0B4D𐨿.󐧤ⴗ; \u0643\u0645\u0645𮁱\u0B4D𐨿.󐧤ⴗ; [B2, B3, V7]; xn--fhbea662czx68a2tju.xn--fljz2846h; ; ;  # كمم𮁱୍𐨿.ⴗ
+xn--fhbea662czx68a2tju.xn--vnd55511o; \u0643\u0645\u0645𮁱\u0B4D𐨿.󐧤Ⴗ; [B2, B3, V7]; xn--fhbea662czx68a2tju.xn--vnd55511o; ; ;  # كمم𮁱୍𐨿.Ⴗ
+𞀨｡\u1B44򡛨𞎇; 𞀨.\u1B44򡛨𞎇; [V6, V7]; xn--mi4h.xn--1uf6843smg20c; ; ;  # 𞀨.᭄
+𞀨。\u1B44򡛨𞎇; 𞀨.\u1B44򡛨𞎇; [V6, V7]; xn--mi4h.xn--1uf6843smg20c; ; ;  # 𞀨.᭄
+xn--mi4h.xn--1uf6843smg20c; 𞀨.\u1B44򡛨𞎇; [V6, V7]; xn--mi4h.xn--1uf6843smg20c; ; ;  # 𞀨.᭄
+󠣼\u200C．𐺰\u200Cᡟ; 󠣼\u200C.𐺰\u200Cᡟ; [B1, B2, B3, C1, V7]; xn--0ug18531l.xn--v8e340bp21t; ; xn--q046e.xn--v8e7227j; [B1, B2, B3, V7] # .𐺰ᡟ
+󠣼\u200C.𐺰\u200Cᡟ; ; [B1, B2, B3, C1, V7]; xn--0ug18531l.xn--v8e340bp21t; ; xn--q046e.xn--v8e7227j; [B1, B2, B3, V7] # .𐺰ᡟ
+xn--q046e.xn--v8e7227j; 󠣼.𐺰ᡟ; [B1, B2, B3, V7]; xn--q046e.xn--v8e7227j; ; ;  # .𐺰ᡟ
+xn--0ug18531l.xn--v8e340bp21t; 󠣼\u200C.𐺰\u200Cᡟ; [B1, B2, B3, C1, V7]; xn--0ug18531l.xn--v8e340bp21t; ; ;  # .𐺰ᡟ
+ᢛ󨅟ß.ጧ; ; [V7]; xn--zca562jc642x.xn--p5d; ; xn--ss-7dp66033t.xn--p5d;  # ᢛß.ጧ
+ᢛ󨅟SS.ጧ; ᢛ󨅟ss.ጧ; [V7]; xn--ss-7dp66033t.xn--p5d; ; ;  # ᢛss.ጧ
+ᢛ󨅟ss.ጧ; ; [V7]; xn--ss-7dp66033t.xn--p5d; ; ;  # ᢛss.ጧ
+ᢛ󨅟Ss.ጧ; ᢛ󨅟ss.ጧ; [V7]; xn--ss-7dp66033t.xn--p5d; ; ;  # ᢛss.ጧ
+xn--ss-7dp66033t.xn--p5d; ᢛ󨅟ss.ጧ; [V7]; xn--ss-7dp66033t.xn--p5d; ; ;  # ᢛss.ጧ
+xn--zca562jc642x.xn--p5d; ᢛ󨅟ß.ጧ; [V7]; xn--zca562jc642x.xn--p5d; ; ;  # ᢛß.ጧ
+⮒\u200C.񒚗\u200C; ; [C1, V7]; xn--0ugx66b.xn--0ugz2871c; ; xn--b9i.xn--5p9y; [V7] # ⮒.
+xn--b9i.xn--5p9y; ⮒.񒚗; [V7]; xn--b9i.xn--5p9y; ; ;  # ⮒.
+xn--0ugx66b.xn--0ugz2871c; ⮒\u200C.񒚗\u200C; [C1, V7]; xn--0ugx66b.xn--0ugz2871c; ; ;  # ⮒.
+𞤂񹞁𐹯。Ⴜ; 𞤤񹞁𐹯.ⴜ; [B2, V7]; xn--no0dr648a51o3b.xn--klj; ; ;  # 𞤤𐹯.ⴜ
+𞤤񹞁𐹯。ⴜ; 𞤤񹞁𐹯.ⴜ; [B2, V7]; xn--no0dr648a51o3b.xn--klj; ; ;  # 𞤤𐹯.ⴜ
+xn--no0dr648a51o3b.xn--klj; 𞤤񹞁𐹯.ⴜ; [B2, V7]; xn--no0dr648a51o3b.xn--klj; ; ;  # 𞤤𐹯.ⴜ
+xn--no0dr648a51o3b.xn--0nd; 𞤤񹞁𐹯.Ⴜ; [B2, V7]; xn--no0dr648a51o3b.xn--0nd; ; ;  # 𞤤𐹯.Ⴜ
+𞤂񹞁𐹯。ⴜ; 𞤤񹞁𐹯.ⴜ; [B2, V7]; xn--no0dr648a51o3b.xn--klj; ; ;  # 𞤤𐹯.ⴜ
+𐹵⮣\u200C𑄰｡񷴿\uFCB7; 𐹵⮣\u200C𑄰.񷴿\u0636\u0645; [B1, B5, B6, C1, V7]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; xn--s9i5458e7yb.xn--1gb4a66004i; [B1, B5, B6, V7] # 𐹵⮣𑄰.ضم
+𐹵⮣\u200C𑄰。񷴿\u0636\u0645; 𐹵⮣\u200C𑄰.񷴿\u0636\u0645; [B1, B5, B6, C1, V7]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; xn--s9i5458e7yb.xn--1gb4a66004i; [B1, B5, B6, V7] # 𐹵⮣𑄰.ضم
+xn--s9i5458e7yb.xn--1gb4a66004i; 𐹵⮣𑄰.񷴿\u0636\u0645; [B1, B5, B6, V7]; xn--s9i5458e7yb.xn--1gb4a66004i; ; ;  # 𐹵⮣𑄰.ضم
+xn--0ug586bcj8p7jc.xn--1gb4a66004i; 𐹵⮣\u200C𑄰.񷴿\u0636\u0645; [B1, B5, B6, C1, V7]; xn--0ug586bcj8p7jc.xn--1gb4a66004i; ; ;  # 𐹵⮣𑄰.ضم
+Ⴒ。デß𞤵\u0C4D; ⴒ.デß𞤵\u0C4D; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; xn--9kj.xn--ss-9nh3648ahh20b;  # ⴒ.デß𞤵్
+Ⴒ。テ\u3099ß𞤵\u0C4D; ⴒ.デß𞤵\u0C4D; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; xn--9kj.xn--ss-9nh3648ahh20b;  # ⴒ.デß𞤵్
+ⴒ。テ\u3099ß𞤵\u0C4D; ⴒ.デß𞤵\u0C4D; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; xn--9kj.xn--ss-9nh3648ahh20b;  # ⴒ.デß𞤵్
+ⴒ。デß𞤵\u0C4D; ⴒ.デß𞤵\u0C4D; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; xn--9kj.xn--ss-9nh3648ahh20b;  # ⴒ.デß𞤵్
+Ⴒ。デSS𞤓\u0C4D; ⴒ.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
+Ⴒ。テ\u3099SS𞤓\u0C4D; ⴒ.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
+ⴒ。テ\u3099ss𞤵\u0C4D; ⴒ.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
+ⴒ。デss𞤵\u0C4D; ⴒ.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
+Ⴒ。デSs𞤵\u0C4D; ⴒ.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
+Ⴒ。テ\u3099Ss𞤵\u0C4D; ⴒ.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
+xn--9kj.xn--ss-9nh3648ahh20b; ⴒ.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
+xn--9kj.xn--zca669cmr3a0f28a; ⴒ.デß𞤵\u0C4D; [B5, B6]; xn--9kj.xn--zca669cmr3a0f28a; ; ;  # ⴒ.デß𞤵్
+xn--qnd.xn--ss-9nh3648ahh20b; Ⴒ.デss𞤵\u0C4D; [B5, B6, V7]; xn--qnd.xn--ss-9nh3648ahh20b; ; ;  # Ⴒ.デss𞤵్
+xn--qnd.xn--zca669cmr3a0f28a; Ⴒ.デß𞤵\u0C4D; [B5, B6, V7]; xn--qnd.xn--zca669cmr3a0f28a; ; ;  # Ⴒ.デß𞤵్
+Ⴒ。デSS𞤵\u0C4D; ⴒ.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
+Ⴒ。テ\u3099SS𞤵\u0C4D; ⴒ.デss𞤵\u0C4D; [B5, B6]; xn--9kj.xn--ss-9nh3648ahh20b; ; ;  # ⴒ.デss𞤵్
+𑁿\u0D4D．７-\u07D2; 𑁿\u0D4D.7-\u07D2; [B1, V6]; xn--wxc1283k.xn--7--yue; ; ;  # 𑁿്.7-ߒ
+𑁿\u0D4D.7-\u07D2; ; [B1, V6]; xn--wxc1283k.xn--7--yue; ; ;  # 𑁿്.7-ߒ
+xn--wxc1283k.xn--7--yue; 𑁿\u0D4D.7-\u07D2; [B1, V6]; xn--wxc1283k.xn--7--yue; ; ;  # 𑁿്.7-ߒ
+≯𑜫󠭇.\u1734񒞤𑍬ᢧ; ; [V6, V7]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ;  # ≯𑜫.᜴𑍬ᢧ
+>\u0338𑜫󠭇.\u1734񒞤𑍬ᢧ; ≯𑜫󠭇.\u1734񒞤𑍬ᢧ; [V6, V7]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ;  # ≯𑜫.᜴𑍬ᢧ
+xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ≯𑜫󠭇.\u1734񒞤𑍬ᢧ; [V6, V7]; xn--hdhx157g68o0g.xn--c0e65eu616c34o7a; ; ;  # ≯𑜫.᜴𑍬ᢧ
+\u1DDB򎐙Ⴗ쏔。\u0781; \u1DDB򎐙ⴗ쏔.\u0781; [B1, V6, V7]; xn--zegy26dw47iy6w2f.xn--iqb; ; ;  # ᷛⴗ쏔.ށ
+\u1DDB򎐙Ⴗ쏔。\u0781; \u1DDB򎐙ⴗ쏔.\u0781; [B1, V6, V7]; xn--zegy26dw47iy6w2f.xn--iqb; ; ;  # ᷛⴗ쏔.ށ
+\u1DDB򎐙ⴗ쏔。\u0781; \u1DDB򎐙ⴗ쏔.\u0781; [B1, V6, V7]; xn--zegy26dw47iy6w2f.xn--iqb; ; ;  # ᷛⴗ쏔.ށ
+\u1DDB򎐙ⴗ쏔。\u0781; \u1DDB򎐙ⴗ쏔.\u0781; [B1, V6, V7]; xn--zegy26dw47iy6w2f.xn--iqb; ; ;  # ᷛⴗ쏔.ށ
+xn--zegy26dw47iy6w2f.xn--iqb; \u1DDB򎐙ⴗ쏔.\u0781; [B1, V6, V7]; xn--zegy26dw47iy6w2f.xn--iqb; ; ;  # ᷛⴗ쏔.ށ
+xn--vnd148d733ky6n9e.xn--iqb; \u1DDB򎐙Ⴗ쏔.\u0781; [B1, V6, V7]; xn--vnd148d733ky6n9e.xn--iqb; ; ;  # ᷛႷ쏔.ށ
+ß｡𐋳Ⴌ\u0FB8; ß.𐋳ⴌ\u0FB8; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m;  # ß.𐋳ⴌྸ
+ß。𐋳Ⴌ\u0FB8; ß.𐋳ⴌ\u0FB8; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m;  # ß.𐋳ⴌྸ
+ß。𐋳ⴌ\u0FB8; ß.𐋳ⴌ\u0FB8; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m;  # ß.𐋳ⴌྸ
+SS。𐋳Ⴌ\u0FB8; ss.𐋳ⴌ\u0FB8; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
+ss。𐋳ⴌ\u0FB8; ss.𐋳ⴌ\u0FB8; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
+Ss。𐋳Ⴌ\u0FB8; ss.𐋳ⴌ\u0FB8; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
+ss.xn--lgd921mvv0m; ss.𐋳ⴌ\u0FB8; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
+ss.𐋳ⴌ\u0FB8; ; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
+SS.𐋳Ⴌ\u0FB8; ss.𐋳ⴌ\u0FB8; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
+Ss.𐋳Ⴌ\u0FB8; ss.𐋳ⴌ\u0FB8; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
+xn--zca.xn--lgd921mvv0m; ß.𐋳ⴌ\u0FB8; ; xn--zca.xn--lgd921mvv0m; ; ;  # ß.𐋳ⴌྸ
+ß.𐋳ⴌ\u0FB8; ; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m;  # ß.𐋳ⴌྸ
+ß｡𐋳ⴌ\u0FB8; ß.𐋳ⴌ\u0FB8; ; xn--zca.xn--lgd921mvv0m; ; ss.xn--lgd921mvv0m;  # ß.𐋳ⴌྸ
+SS｡𐋳Ⴌ\u0FB8; ss.𐋳ⴌ\u0FB8; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
+ss｡𐋳ⴌ\u0FB8; ss.𐋳ⴌ\u0FB8; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
+Ss｡𐋳Ⴌ\u0FB8; ss.𐋳ⴌ\u0FB8; ; ss.xn--lgd921mvv0m; ; ;  # ss.𐋳ⴌྸ
+ss.xn--lgd10cu829c; ss.𐋳Ⴌ\u0FB8; [V7]; ss.xn--lgd10cu829c; ; ;  # ss.𐋳Ⴌྸ
+xn--zca.xn--lgd10cu829c; ß.𐋳Ⴌ\u0FB8; [V7]; xn--zca.xn--lgd10cu829c; ; ;  # ß.𐋳Ⴌྸ
+-\u069E𐶡.\u200C⾝\u09CD; -\u069E𐶡.\u200C身\u09CD; [B1, C1, V3, V7]; xn----stc7013r.xn--b7b305imj2f; ; xn----stc7013r.xn--b7b1419d; [B1, V3, V7] # -ڞ.身্
+-\u069E𐶡.\u200C身\u09CD; ; [B1, C1, V3, V7]; xn----stc7013r.xn--b7b305imj2f; ; xn----stc7013r.xn--b7b1419d; [B1, V3, V7] # -ڞ.身্
+xn----stc7013r.xn--b7b1419d; -\u069E𐶡.身\u09CD; [B1, V3, V7]; xn----stc7013r.xn--b7b1419d; ; ;  # -ڞ.身্
+xn----stc7013r.xn--b7b305imj2f; -\u069E𐶡.\u200C身\u09CD; [B1, C1, V3, V7]; xn----stc7013r.xn--b7b305imj2f; ; ;  # -ڞ.身্
+😮\u0764𑈵𞀖.💅\u200D; 😮\u0764𑈵𞀖.💅\u200D; [B1, C2]; xn--opb4277kuc7elqsa.xn--1ug5265p; ; xn--opb4277kuc7elqsa.xn--kr8h; [B1] # 😮ݤ𑈵𞀖.💅
+😮\u0764𑈵𞀖.💅\u200D; ; [B1, C2]; xn--opb4277kuc7elqsa.xn--1ug5265p; ; xn--opb4277kuc7elqsa.xn--kr8h; [B1] # 😮ݤ𑈵𞀖.💅
+xn--opb4277kuc7elqsa.xn--kr8h; 😮\u0764𑈵𞀖.💅; [B1]; xn--opb4277kuc7elqsa.xn--kr8h; ; ;  # 😮ݤ𑈵𞀖.💅
+xn--opb4277kuc7elqsa.xn--1ug5265p; 😮\u0764𑈵𞀖.💅\u200D; [B1, C2]; xn--opb4277kuc7elqsa.xn--1ug5265p; ; ;  # 😮ݤ𑈵𞀖.💅
+\u08F2\u200D꙳\u0712.ᢏ\u200C󠍄; ; [B1, B6, C1, C2, V6, V7]; xn--cnb37g904be26j.xn--89e849ax9363a; ; xn--cnb37gdy00a.xn--89e02253p; [B1, B6, V6, V7] # ࣲ꙳ܒ.ᢏ
+xn--cnb37gdy00a.xn--89e02253p; \u08F2꙳\u0712.ᢏ󠍄; [B1, B6, V6, V7]; xn--cnb37gdy00a.xn--89e02253p; ; ;  # ࣲ꙳ܒ.ᢏ
+xn--cnb37g904be26j.xn--89e849ax9363a; \u08F2\u200D꙳\u0712.ᢏ\u200C󠍄; [B1, B6, C1, C2, V6, V7]; xn--cnb37g904be26j.xn--89e849ax9363a; ; ;  # ࣲ꙳ܒ.ᢏ
+Ⴑ．\u06BF𞯓ᠲ; ⴑ.\u06BF𞯓ᠲ; [B2, B3, V7]; xn--8kj.xn--ykb840gd555a; ; ;  # ⴑ.ڿᠲ
+Ⴑ.\u06BF𞯓ᠲ; ⴑ.\u06BF𞯓ᠲ; [B2, B3, V7]; xn--8kj.xn--ykb840gd555a; ; ;  # ⴑ.ڿᠲ
+ⴑ.\u06BF𞯓ᠲ; ; [B2, B3, V7]; xn--8kj.xn--ykb840gd555a; ; ;  # ⴑ.ڿᠲ
+xn--8kj.xn--ykb840gd555a; ⴑ.\u06BF𞯓ᠲ; [B2, B3, V7]; xn--8kj.xn--ykb840gd555a; ; ;  # ⴑ.ڿᠲ
+ⴑ．\u06BF𞯓ᠲ; ⴑ.\u06BF𞯓ᠲ; [B2, B3, V7]; xn--8kj.xn--ykb840gd555a; ; ;  # ⴑ.ڿᠲ
+xn--pnd.xn--ykb840gd555a; Ⴑ.\u06BF𞯓ᠲ; [B2, B3, V7]; xn--pnd.xn--ykb840gd555a; ; ;  # Ⴑ.ڿᠲ
+\u1A5A𛦝\u0C4D。𚝬𝟵; \u1A5A𛦝\u0C4D.𚝬9; [V6, V7]; xn--lqc703ebm93a.xn--9-000p; ; ;  # ᩚ్.9
+\u1A5A𛦝\u0C4D。𚝬9; \u1A5A𛦝\u0C4D.𚝬9; [V6, V7]; xn--lqc703ebm93a.xn--9-000p; ; ;  # ᩚ్.9
+xn--lqc703ebm93a.xn--9-000p; \u1A5A𛦝\u0C4D.𚝬9; [V6, V7]; xn--lqc703ebm93a.xn--9-000p; ; ;  # ᩚ్.9
+\u200C\u06A0𿺆𝟗｡Ⴣ꒘\uFCD0񐘖; \u200C\u06A0𿺆9.ⴣ꒘\u0645\u062E񐘖; [B1, B5, C1, V7]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; [B2, B5, V7] # ڠ9.ⴣ꒘مخ
+\u200C\u06A0𿺆9。Ⴣ꒘\u0645\u062E񐘖; \u200C\u06A0𿺆9.ⴣ꒘\u0645\u062E񐘖; [B1, B5, C1, V7]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; [B2, B5, V7] # ڠ9.ⴣ꒘مخ
+\u200C\u06A0𿺆9。ⴣ꒘\u0645\u062E񐘖; \u200C\u06A0𿺆9.ⴣ꒘\u0645\u062E񐘖; [B1, B5, C1, V7]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; [B2, B5, V7] # ڠ9.ⴣ꒘مخ
+xn--9-vtc42319e.xn--tgb9bz87p833hw316c; \u06A0𿺆9.ⴣ꒘\u0645\u062E񐘖; [B2, B5, V7]; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; ; ;  # ڠ9.ⴣ꒘مخ
+xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; \u200C\u06A0𿺆9.ⴣ꒘\u0645\u062E񐘖; [B1, B5, C1, V7]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; ;  # ڠ9.ⴣ꒘مخ
+\u200C\u06A0𿺆𝟗｡ⴣ꒘\uFCD0񐘖; \u200C\u06A0𿺆9.ⴣ꒘\u0645\u062E񐘖; [B1, B5, C1, V7]; xn--9-vtc736qts91g.xn--tgb9bz87p833hw316c; ; xn--9-vtc42319e.xn--tgb9bz87p833hw316c; [B2, B5, V7] # ڠ9.ⴣ꒘مخ
+xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; \u06A0𿺆9.Ⴣ꒘\u0645\u062E񐘖; [B2, B5, V7]; xn--9-vtc42319e.xn--tgb9bz61cfn8mw3t2c; ; ;  # ڠ9.Ⴣ꒘مخ
+xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; \u200C\u06A0𿺆9.Ⴣ꒘\u0645\u062E񐘖; [B1, B5, C1, V7]; xn--9-vtc736qts91g.xn--tgb9bz61cfn8mw3t2c; ; ;  # ڠ9.Ⴣ꒘مخ
+ᡖ｡\u031F񗛨\u0B82-; ᡖ.\u031F񗛨\u0B82-; [V3, V6, V7]; xn--m8e.xn----mdb555dkk71m; ; ;  # ᡖ.̟ஂ-
+ᡖ。\u031F񗛨\u0B82-; ᡖ.\u031F񗛨\u0B82-; [V3, V6, V7]; xn--m8e.xn----mdb555dkk71m; ; ;  # ᡖ.̟ஂ-
+xn--m8e.xn----mdb555dkk71m; ᡖ.\u031F񗛨\u0B82-; [V3, V6, V7]; xn--m8e.xn----mdb555dkk71m; ; ;  # ᡖ.̟ஂ-
 𞠠浘。絧𞀀; 𞠠浘.絧𞀀; [B2, B3]; xn--e0wp491f.xn--ud0a3573e; ; ;  # 𞠠浘.絧𞀀
 xn--e0wp491f.xn--ud0a3573e; 𞠠浘.絧𞀀; [B2, B3]; xn--e0wp491f.xn--ud0a3573e; ; ;  # 𞠠浘.絧𞀀
-֖Ⴋ．𝟳≯︒︊; ֖Ⴋ.7≯︒; [P1, V5, V6]; xn--hcb887c.xn--7-pgoy530h; ; ;  # ֖Ⴋ.7≯︒
-֖Ⴋ．𝟳≯︒︊; ֖Ⴋ.7≯︒; [P1, V5, V6]; xn--hcb887c.xn--7-pgoy530h; ; ;  # ֖Ⴋ.7≯︒
-֖Ⴋ.7≯。︊; ֖Ⴋ.7≯.; [P1, V5, V6]; xn--hcb887c.xn--7-pgo.; ; ;  # ֖Ⴋ.7≯.
-֖Ⴋ.7≯。︊; ֖Ⴋ.7≯.; [P1, V5, V6]; xn--hcb887c.xn--7-pgo.; ; ;  # ֖Ⴋ.7≯.
-֖ⴋ.7≯。︊; ֖ⴋ.7≯.; [P1, V5, V6]; xn--hcb613r.xn--7-pgo.; ; ;  # ֖ⴋ.7≯.
-֖ⴋ.7≯。︊; ֖ⴋ.7≯.; [P1, V5, V6]; xn--hcb613r.xn--7-pgo.; ; ;  # ֖ⴋ.7≯.
-xn--hcb613r.xn--7-pgo.; ֖ⴋ.7≯.; [V5, V6]; xn--hcb613r.xn--7-pgo.; ; ;  # ֖ⴋ.7≯.
-xn--hcb887c.xn--7-pgo.; ֖Ⴋ.7≯.; [V5, V6]; xn--hcb887c.xn--7-pgo.; ; ;  # ֖Ⴋ.7≯.
-֖ⴋ．𝟳≯︒︊; ֖ⴋ.7≯︒; [P1, V5, V6]; xn--hcb613r.xn--7-pgoy530h; ; ;  # ֖ⴋ.7≯︒
-֖ⴋ．𝟳≯︒︊; ֖ⴋ.7≯︒; [P1, V5, V6]; xn--hcb613r.xn--7-pgoy530h; ; ;  # ֖ⴋ.7≯︒
-xn--hcb613r.xn--7-pgoy530h; ֖ⴋ.7≯︒; [V5, V6]; xn--hcb613r.xn--7-pgoy530h; ; ;  # ֖ⴋ.7≯︒
-xn--hcb887c.xn--7-pgoy530h; ֖Ⴋ.7≯︒; [V5, V6]; xn--hcb887c.xn--7-pgoy530h; ; ;  # ֖Ⴋ.7≯︒
-‍F𑓂。󠺨︒ݾ𐹢; ‍f𑓂.󠺨︒ݾ𐹢; [B1, C2, P1, V6]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; xn--f-kq9i.xn--fqb1637j8hky9452a; [B1, P1, V6] # f𑓂.︒ݾ𐹢
-‍F𑓂。󠺨。ݾ𐹢; ‍f𑓂.󠺨.ݾ𐹢; [B1, C2, P1, V6]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; xn--f-kq9i.xn--7656e.xn--fqb4175k; [B1, P1, V6] # f𑓂..ݾ𐹢
-‍f𑓂。󠺨。ݾ𐹢; ‍f𑓂.󠺨.ݾ𐹢; [B1, C2, P1, V6]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; xn--f-kq9i.xn--7656e.xn--fqb4175k; [B1, P1, V6] # f𑓂..ݾ𐹢
-xn--f-kq9i.xn--7656e.xn--fqb4175k; f𑓂.󠺨.ݾ𐹢; [B1, V6]; xn--f-kq9i.xn--7656e.xn--fqb4175k; ; ;  # f𑓂..ݾ𐹢
-xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ‍f𑓂.󠺨.ݾ𐹢; [B1, C2, V6]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; ;  # f𑓂..ݾ𐹢
-‍f𑓂。󠺨︒ݾ𐹢; ‍f𑓂.󠺨︒ݾ𐹢; [B1, C2, P1, V6]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; xn--f-kq9i.xn--fqb1637j8hky9452a; [B1, P1, V6] # f𑓂.︒ݾ𐹢
-xn--f-kq9i.xn--fqb1637j8hky9452a; f𑓂.󠺨︒ݾ𐹢; [B1, V6]; xn--f-kq9i.xn--fqb1637j8hky9452a; ; ;  # f𑓂.︒ݾ𐹢
-xn--f-tgn9761i.xn--fqb1637j8hky9452a; ‍f𑓂.󠺨︒ݾ𐹢; [B1, C2, V6]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; ;  # f𑓂.︒ݾ𐹢
-ࡅ🄇𐼗︒｡𐹻𑜫; ࡅ🄇𐼗︒.𐹻𑜫; [B1, B3, P1, V6]; xn--3vb4696jpxkjh7s.xn--zo0di2m; ; ;  # ࡅ🄇𐼗︒.𐹻𑜫
-ࡅ6,𐼗。。𐹻𑜫; ࡅ6,𐼗..𐹻𑜫; [B1, P1, V6, X4_2]; xn--6,-r4e4420y..xn--zo0di2m; [B1, P1, V6, A4_2]; ;  # ࡅ6,𐼗..𐹻𑜫
-xn--6,-r4e4420y..xn--zo0di2m; ࡅ6,𐼗..𐹻𑜫; [B1, P1, V6, X4_2]; xn--6,-r4e4420y..xn--zo0di2m; [B1, P1, V6, A4_2]; ;  # ࡅ6,𐼗..𐹻𑜫
-xn--3vb4696jpxkjh7s.xn--zo0di2m; ࡅ🄇𐼗︒.𐹻𑜫; [B1, B3, V6]; xn--3vb4696jpxkjh7s.xn--zo0di2m; ; ;  # ࡅ🄇𐼗︒.𐹻𑜫
-𐹈.᷀𑈱𐦭; ; [B1, P1, V5, V6]; xn--jn0d.xn--7dg0871h3lf; ; ;  # .᷀𑈱𐦭
-xn--jn0d.xn--7dg0871h3lf; 𐹈.᷀𑈱𐦭; [B1, V5, V6]; xn--jn0d.xn--7dg0871h3lf; ; ;  # .᷀𑈱𐦭
-Ⴂ䠺。𞤃񅏎󙮦ړ; Ⴂ䠺.𞤥񅏎󙮦ړ; [B2, P1, V6]; xn--9md875z.xn--pjb9818vg4xno967d; ; ;  # Ⴂ䠺.𞤥ړ
-ⴂ䠺。𞤥񅏎󙮦ړ; ⴂ䠺.𞤥񅏎󙮦ړ; [B2, P1, V6]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ;  # ⴂ䠺.𞤥ړ
-xn--tkj638f.xn--pjb9818vg4xno967d; ⴂ䠺.𞤥񅏎󙮦ړ; [B2, V6]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ;  # ⴂ䠺.𞤥ړ
-xn--9md875z.xn--pjb9818vg4xno967d; Ⴂ䠺.𞤥񅏎󙮦ړ; [B2, V6]; xn--9md875z.xn--pjb9818vg4xno967d; ; ;  # Ⴂ䠺.𞤥ړ
-ⴂ䠺。𞤃񅏎󙮦ړ; ⴂ䠺.𞤥񅏎󙮦ړ; [B2, P1, V6]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ;  # ⴂ䠺.𞤥ړ
-🄇伐︒.𜙚꣄; ; [P1, V6]; xn--woqs083bel0g.xn--0f9ao925c; ; ;  # 🄇伐︒.꣄
-6,伐。.𜙚꣄; 6,伐..𜙚꣄; [P1, V6, X4_2]; xn--6,-7i3c..xn--0f9ao925c; [P1, V6, A4_2]; ;  # 6,伐..꣄
-xn--6,-7i3c..xn--0f9ao925c; 6,伐..𜙚꣄; [P1, V6, X4_2]; xn--6,-7i3c..xn--0f9ao925c; [P1, V6, A4_2]; ;  # 6,伐..꣄
-xn--woqs083bel0g.xn--0f9ao925c; 🄇伐︒.𜙚꣄; [V6]; xn--woqs083bel0g.xn--0f9ao925c; ; ;  # 🄇伐︒.꣄
-‍𐹠꯭￻。‍𐫓Ⴚ𑂹; ‍𐹠꯭￻.‍𐫓Ⴚ𑂹; [B1, C2, P1, V6]; xn--1ugz126coy7bdbm.xn--ynd959evs1pv6e; ; xn--429az70n29i.xn--ynd3619jqyd; [B1, B2, B3, P1, V6] # 𐹠꯭.𐫓Ⴚ𑂹
-‍𐹠꯭￻。‍𐫓ⴚ𑂹; ‍𐹠꯭￻.‍𐫓ⴚ𑂹; [B1, C2, P1, V6]; xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; ; xn--429az70n29i.xn--ilj7702eqyd; [B1, B2, B3, P1, V6] # 𐹠꯭.𐫓ⴚ𑂹
-xn--429az70n29i.xn--ilj7702eqyd; 𐹠꯭￻.𐫓ⴚ𑂹; [B1, B2, B3, V6]; xn--429az70n29i.xn--ilj7702eqyd; ; ;  # 𐹠꯭.𐫓ⴚ𑂹
-xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; ‍𐹠꯭￻.‍𐫓ⴚ𑂹; [B1, C2, V6]; xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; ; ;  # 𐹠꯭.𐫓ⴚ𑂹
-xn--429az70n29i.xn--ynd3619jqyd; 𐹠꯭￻.𐫓Ⴚ𑂹; [B1, B2, B3, V6]; xn--429az70n29i.xn--ynd3619jqyd; ; ;  # 𐹠꯭.𐫓Ⴚ𑂹
-xn--1ugz126coy7bdbm.xn--ynd959evs1pv6e; ‍𐹠꯭￻.‍𐫓Ⴚ𑂹; [B1, C2, V6]; xn--1ugz126coy7bdbm.xn--ynd959evs1pv6e; ; ;  # 𐹠꯭.𐫓Ⴚ𑂹
-󠆠．񷐴󌟈; .񷐴󌟈; [P1, V6, X4_2]; .xn--rx21bhv12i; [P1, V6, A4_2]; ;  # .
-󠆠.񷐴󌟈; .񷐴󌟈; [P1, V6, X4_2]; .xn--rx21bhv12i; [P1, V6, A4_2]; ;  # .
-.xn--rx21bhv12i; .񷐴󌟈; [V6, X4_2]; .xn--rx21bhv12i; [V6, A4_2]; ;  # .
-𐫃‌Ⴆ.≠𞷙; ; [B1, B2, B3, C1, P1, V6]; xn--end799ekr1p.xn--1ch2802p; ; xn--end1719j.xn--1ch2802p; [B1, B2, B3, P1, V6] # 𐫃Ⴆ.≠
-𐫃‌Ⴆ.≠𞷙; 𐫃‌Ⴆ.≠𞷙; [B1, B2, B3, C1, P1, V6]; xn--end799ekr1p.xn--1ch2802p; ; xn--end1719j.xn--1ch2802p; [B1, B2, B3, P1, V6] # 𐫃Ⴆ.≠
-𐫃‌ⴆ.≠𞷙; 𐫃‌ⴆ.≠𞷙; [B1, B2, B3, C1, P1, V6]; xn--0ug132csv7o.xn--1ch2802p; ; xn--xkjz802e.xn--1ch2802p; [B1, B2, B3, P1, V6] # 𐫃ⴆ.≠
-𐫃‌ⴆ.≠𞷙; ; [B1, B2, B3, C1, P1, V6]; xn--0ug132csv7o.xn--1ch2802p; ; xn--xkjz802e.xn--1ch2802p; [B1, B2, B3, P1, V6] # 𐫃ⴆ.≠
-xn--xkjz802e.xn--1ch2802p; 𐫃ⴆ.≠𞷙; [B1, B2, B3, V6]; xn--xkjz802e.xn--1ch2802p; ; ;  # 𐫃ⴆ.≠
-xn--0ug132csv7o.xn--1ch2802p; 𐫃‌ⴆ.≠𞷙; [B1, B2, B3, C1, V6]; xn--0ug132csv7o.xn--1ch2802p; ; ;  # 𐫃ⴆ.≠
-xn--end1719j.xn--1ch2802p; 𐫃Ⴆ.≠𞷙; [B1, B2, B3, V6]; xn--end1719j.xn--1ch2802p; ; ;  # 𐫃Ⴆ.≠
-xn--end799ekr1p.xn--1ch2802p; 𐫃‌Ⴆ.≠𞷙; [B1, B2, B3, C1, V6]; xn--end799ekr1p.xn--1ch2802p; ; ;  # 𐫃Ⴆ.≠
-󠁲𙩢𝟥ꘌ．ࡁ; 󠁲𙩢3ꘌ.ࡁ; [B1, P1, V6]; xn--3-0g3es485d8i15h.xn--zvb; ; ;  # 3ꘌ.ࡁ
-󠁲𙩢3ꘌ.ࡁ; ; [B1, P1, V6]; xn--3-0g3es485d8i15h.xn--zvb; ; ;  # 3ꘌ.ࡁ
-xn--3-0g3es485d8i15h.xn--zvb; 󠁲𙩢3ꘌ.ࡁ; [B1, V6]; xn--3-0g3es485d8i15h.xn--zvb; ; ;  # 3ꘌ.ࡁ
--.ᢆ󡲣-; ; [P1, V3, V5, V6]; -.xn----pbkx6497q; ; ;  # -.ᢆ-
--.xn----pbkx6497q; -.ᢆ󡲣-; [V3, V5, V6]; -.xn----pbkx6497q; ; ;  # -.ᢆ-
-󲚗‌｡‌𞰆ς; 󲚗‌.‌𞰆ς; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--3xa795lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .ς
-󲚗‌。‌𞰆ς; 󲚗‌.‌𞰆ς; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--3xa795lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .ς
-󲚗‌。‌𞰆Σ; 󲚗‌.‌𞰆σ; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .σ
-󲚗‌。‌𞰆σ; 󲚗‌.‌𞰆σ; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .σ
-xn--qp42f.xn--4xa3011w; 󲚗.𞰆σ; [B2, B3, V6]; xn--qp42f.xn--4xa3011w; ; ;  # .σ
-xn--0ug76062m.xn--4xa595lhn92a; 󲚗‌.‌𞰆σ; [B1, B6, C1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; ;  # .σ
-xn--0ug76062m.xn--3xa795lhn92a; 󲚗‌.‌𞰆ς; [B1, B6, C1, V6]; xn--0ug76062m.xn--3xa795lhn92a; ; ;  # .ς
-󲚗‌｡‌𞰆Σ; 󲚗‌.‌𞰆σ; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .σ
-󲚗‌｡‌𞰆σ; 󲚗‌.‌𞰆σ; [B1, B6, C1, P1, V6]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, P1, V6] # .σ
-堕𑓂ᬂ。𐮇𞤽‌-; 堕𑓂ᬂ.𐮇𞤽‌-; [B3, C1, V3]; xn--5sf345zdk8h.xn----rgnt157hwl9g; ; xn--5sf345zdk8h.xn----iv5iw606c; [B3, V3] # 堕𑓂ᬂ.𐮇𞤽-
-堕𑓂ᬂ。𐮇𞤛‌-; 堕𑓂ᬂ.𐮇𞤽‌-; [B3, C1, V3]; xn--5sf345zdk8h.xn----rgnt157hwl9g; ; xn--5sf345zdk8h.xn----iv5iw606c; [B3, V3] # 堕𑓂ᬂ.𐮇𞤽-
-xn--5sf345zdk8h.xn----iv5iw606c; 堕𑓂ᬂ.𐮇𞤽-; [B3, V3]; xn--5sf345zdk8h.xn----iv5iw606c; ; ;  # 堕𑓂ᬂ.𐮇𞤽-
-xn--5sf345zdk8h.xn----rgnt157hwl9g; 堕𑓂ᬂ.𐮇𞤽‌-; [B3, C1, V3]; xn--5sf345zdk8h.xn----rgnt157hwl9g; ; ;  # 堕𑓂ᬂ.𐮇𞤽-
-𐹶𑁆ᡕ𞤢｡ᡥςتς; 𐹶𑁆ᡕ𞤢.ᡥςتς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xaa16plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥςتς
-𐹶𑁆ᡕ𞤢。ᡥςتς; 𐹶𑁆ᡕ𞤢.ᡥςتς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xaa16plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥςتς
-𐹶𑁆ᡕ𞤀。ᡥΣتΣ; 𐹶𑁆ᡕ𞤢.ᡥσتσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
-𐹶𑁆ᡕ𞤢。ᡥσتσ; 𐹶𑁆ᡕ𞤢.ᡥσتσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
-xn--l8e1317j1ebz456b.xn--4xaa85plx4a; 𐹶𑁆ᡕ𞤢.ᡥσتσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
-xn--l8e1317j1ebz456b.xn--3xaa16plx4a; 𐹶𑁆ᡕ𞤢.ᡥςتς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xaa16plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥςتς
-𐹶𑁆ᡕ𞤀｡ᡥΣتΣ; 𐹶𑁆ᡕ𞤢.ᡥσتσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
-𐹶𑁆ᡕ𞤢｡ᡥσتσ; 𐹶𑁆ᡕ𞤢.ᡥσتσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
-𐹶𑁆ᡕ𞤢。ᡥΣتΣ; 𐹶𑁆ᡕ𞤢.ᡥσتσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
-𐹶𑁆ᡕ𞤢。ᡥΣتσ; 𐹶𑁆ᡕ𞤢.ᡥσتσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
-𐹶𑁆ᡕ𞤢。ᡥΣتς; 𐹶𑁆ᡕ𞤢.ᡥσتς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥσتς
-𐹶𑁆ᡕ𞤢。ᡥσتς; 𐹶𑁆ᡕ𞤢.ᡥσتς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥσتς
-xn--l8e1317j1ebz456b.xn--3xab95plx4a; 𐹶𑁆ᡕ𞤢.ᡥσتς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتς
-𐹶𑁆ᡕ𞤢｡ᡥΣتΣ; 𐹶𑁆ᡕ𞤢.ᡥσتσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
-𐹶𑁆ᡕ𞤢｡ᡥΣتσ; 𐹶𑁆ᡕ𞤢.ᡥσتσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
-𐹶𑁆ᡕ𞤢｡ᡥΣتς; 𐹶𑁆ᡕ𞤢.ᡥσتς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥσتς
-𐹶𑁆ᡕ𞤢｡ᡥσتς; 𐹶𑁆ᡕ𞤢.ᡥσتς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥσتς
-󏒰．-𝟻ß; 󏒰.-5ß; [P1, V3, V6]; xn--t960e.xn---5-hia; ; xn--t960e.-5ss;  # .-5ß
-󏒰.-5ß; ; [P1, V3, V6]; xn--t960e.xn---5-hia; ; xn--t960e.-5ss;  # .-5ß
-󏒰.-5SS; 󏒰.-5ss; [P1, V3, V6]; xn--t960e.-5ss; ; ;  # .-5ss
-󏒰.-5ss; ; [P1, V3, V6]; xn--t960e.-5ss; ; ;  # .-5ss
-xn--t960e.-5ss; 󏒰.-5ss; [V3, V6]; xn--t960e.-5ss; ; ;  # .-5ss
-xn--t960e.xn---5-hia; 󏒰.-5ß; [V3, V6]; xn--t960e.xn---5-hia; ; ;  # .-5ß
-󏒰．-𝟻SS; 󏒰.-5ss; [P1, V3, V6]; xn--t960e.-5ss; ; ;  # .-5ss
-󏒰．-𝟻ss; 󏒰.-5ss; [P1, V3, V6]; xn--t960e.-5ss; ; ;  # .-5ss
-󏒰．-𝟻Ss; 󏒰.-5ss; [P1, V3, V6]; xn--t960e.-5ss; ; ;  # .-5ss
-󏒰.-5Ss; 󏒰.-5ss; [P1, V3, V6]; xn--t960e.-5ss; ; ;  # .-5ss
-‍𐨿.🤒Ⴥ򑮶; ; [C2, P1, V6]; xn--1ug9533g.xn--9nd3211w0gz4b; ; xn--0s9c.xn--9nd3211w0gz4b; [P1, V5, V6] # 𐨿.🤒Ⴥ
-‍𐨿.🤒ⴥ򑮶; ; [C2, P1, V6]; xn--1ug9533g.xn--tljz038l0gz4b; ; xn--0s9c.xn--tljz038l0gz4b; [P1, V5, V6] # 𐨿.🤒ⴥ
-xn--0s9c.xn--tljz038l0gz4b; 𐨿.🤒ⴥ򑮶; [V5, V6]; xn--0s9c.xn--tljz038l0gz4b; ; ;  # 𐨿.🤒ⴥ
-xn--1ug9533g.xn--tljz038l0gz4b; ‍𐨿.🤒ⴥ򑮶; [C2, V6]; xn--1ug9533g.xn--tljz038l0gz4b; ; ;  # 𐨿.🤒ⴥ
-xn--0s9c.xn--9nd3211w0gz4b; 𐨿.🤒Ⴥ򑮶; [V5, V6]; xn--0s9c.xn--9nd3211w0gz4b; ; ;  # 𐨿.🤒Ⴥ
-xn--1ug9533g.xn--9nd3211w0gz4b; ‍𐨿.🤒Ⴥ򑮶; [C2, V6]; xn--1ug9533g.xn--9nd3211w0gz4b; ; ;  # 𐨿.🤒Ⴥ
-𵋅。ß𬵩‍; 𵋅.ß𬵩‍; [C2, P1, V6]; xn--ey1p.xn--zca870nz438b; ; xn--ey1p.xn--ss-eq36b; [P1, V6] # .ß𬵩
-𵋅。SS𬵩‍; 𵋅.ss𬵩‍; [C2, P1, V6]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [P1, V6] # .ss𬵩
-𵋅。ss𬵩‍; 𵋅.ss𬵩‍; [C2, P1, V6]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [P1, V6] # .ss𬵩
-𵋅。Ss𬵩‍; 𵋅.ss𬵩‍; [C2, P1, V6]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [P1, V6] # .ss𬵩
-xn--ey1p.xn--ss-eq36b; 𵋅.ss𬵩; [V6]; xn--ey1p.xn--ss-eq36b; ; ;  # .ss𬵩
-xn--ey1p.xn--ss-n1tx0508a; 𵋅.ss𬵩‍; [C2, V6]; xn--ey1p.xn--ss-n1tx0508a; ; ;  # .ss𬵩
-xn--ey1p.xn--zca870nz438b; 𵋅.ß𬵩‍; [C2, V6]; xn--ey1p.xn--zca870nz438b; ; ;  # .ß𬵩
-‌𭉝。߱́𞹻; ‌𭉝.߱́غ; [B1, C1, V5]; xn--0ugy003y.xn--lsa46nuub; ; xn--634m.xn--lsa46nuub; [B1, V5] # 𭉝.߱́غ
-‌𭉝。߱́غ; ‌𭉝.߱́غ; [B1, C1, V5]; xn--0ugy003y.xn--lsa46nuub; ; xn--634m.xn--lsa46nuub; [B1, V5] # 𭉝.߱́غ
-xn--634m.xn--lsa46nuub; 𭉝.߱́غ; [B1, V5]; xn--634m.xn--lsa46nuub; ; ;  # 𭉝.߱́غ
-xn--0ugy003y.xn--lsa46nuub; ‌𭉝.߱́غ; [B1, C1, V5]; xn--0ugy003y.xn--lsa46nuub; ; ;  # 𭉝.߱́غ
-𞼌‌𑈶。𐹡; 𞼌‌𑈶.𐹡; [B1, B3, C1, P1, V6]; xn--0ug7946gzpxf.xn--8n0d; ; xn--9g1d1288a.xn--8n0d; [B1, P1, V6] # 𑈶.𐹡
-xn--9g1d1288a.xn--8n0d; 𞼌𑈶.𐹡; [B1, V6]; xn--9g1d1288a.xn--8n0d; ; ;  # 𑈶.𐹡
-xn--0ug7946gzpxf.xn--8n0d; 𞼌‌𑈶.𐹡; [B1, B3, C1, V6]; xn--0ug7946gzpxf.xn--8n0d; ; ;  # 𑈶.𐹡
-󠅯򇽭‌🜭｡𑖿᪻ς≠; 򇽭‌🜭.𑖿᪻ς≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻ς≠
-󠅯򇽭‌🜭｡𑖿᪻ς≠; 򇽭‌🜭.𑖿᪻ς≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻ς≠
-󠅯򇽭‌🜭。𑖿᪻ς≠; 򇽭‌🜭.𑖿᪻ς≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻ς≠
-󠅯򇽭‌🜭。𑖿᪻ς≠; 򇽭‌🜭.𑖿᪻ς≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻ς≠
-󠅯򇽭‌🜭。𑖿᪻Σ≠; 򇽭‌🜭.𑖿᪻σ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭‌🜭。𑖿᪻Σ≠; 򇽭‌🜭.𑖿᪻σ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭‌🜭。𑖿᪻σ≠; 򇽭‌🜭.𑖿᪻σ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭‌🜭。𑖿᪻σ≠; 򇽭‌🜭.𑖿᪻σ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-xn--zb9h5968x.xn--4xa378i1mfjw7y; 򇽭🜭.𑖿᪻σ≠; [V5, V6]; xn--zb9h5968x.xn--4xa378i1mfjw7y; ; ;  # 🜭.𑖿᪻σ≠
-xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; 򇽭‌🜭.𑖿᪻σ≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; ;  # 🜭.𑖿᪻σ≠
-xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; 򇽭‌🜭.𑖿᪻ς≠; [C1, V5, V6]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; ;  # 🜭.𑖿᪻ς≠
-󠅯򇽭‌🜭｡𑖿᪻Σ≠; 򇽭‌🜭.𑖿᪻σ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭‌🜭｡𑖿᪻Σ≠; 򇽭‌🜭.𑖿᪻σ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭‌🜭｡𑖿᪻σ≠; 򇽭‌🜭.𑖿᪻σ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-󠅯򇽭‌🜭｡𑖿᪻σ≠; 򇽭‌🜭.𑖿᪻σ≠; [C1, P1, V5, V6]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [P1, V5, V6] # 🜭.𑖿᪻σ≠
-⒋｡⒈‍򳴢; ⒋.⒈‍򳴢; [C2, P1, V6]; xn--wsh.xn--1ug58o74922a; ; xn--wsh.xn--tsh07994h; [P1, V6] # ⒋.⒈
-4.。1.‍򳴢; 4..1.‍򳴢; [C2, P1, V6, X4_2]; 4..1.xn--1ug64613i; [C2, P1, V6, A4_2]; 4..1.xn--sf51d; [P1, V6, A4_2] # 4..1.
-4..1.xn--sf51d; 4..1.򳴢; [V6, X4_2]; 4..1.xn--sf51d; [V6, A4_2]; ;  # 4..1.
-4..1.xn--1ug64613i; 4..1.‍򳴢; [C2, V6, X4_2]; 4..1.xn--1ug64613i; [C2, V6, A4_2]; ;  # 4..1.
-xn--wsh.xn--tsh07994h; ⒋.⒈򳴢; [V6]; xn--wsh.xn--tsh07994h; ; ;  # ⒋.⒈
-xn--wsh.xn--1ug58o74922a; ⒋.⒈‍򳴢; [C2, V6]; xn--wsh.xn--1ug58o74922a; ; ;  # ⒋.⒈
-لß｡᩠𐇽򾅢𞤾; لß.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
-لß｡᩠𐇽򾅢𞤾; لß.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
-لß。᩠𐇽򾅢𞤾; لß.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
-لSS。᩠𐇽򾅢𞤜; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لss。᩠𐇽򾅢𞤾; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لss。᩠𐇽򾅢𞤜; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-xn--ss-svd.xn--jof2298hn83fln78f; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لß。᩠𐇽򾅢𞤜; لß.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
-xn--zca57y.xn--jof2298hn83fln78f; لß.᩠𐇽򾅢𞤾; [B1, B2, B3, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; ;  # لß.᩠𐇽𞤾
-لSS｡᩠𐇽򾅢𞤜; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لss｡᩠𐇽򾅢𞤾; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لss｡᩠𐇽򾅢𞤜; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لß｡᩠𐇽򾅢𞤜; لß.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
-لSS｡᩠𐇽򾅢𞤜; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لss｡᩠𐇽򾅢𞤾; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لss｡᩠𐇽򾅢𞤜; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لß｡᩠𐇽򾅢𞤜; لß.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
-لSS。᩠𐇽򾅢𞤾; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لSs。᩠𐇽򾅢𞤾; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لSS｡᩠𐇽򾅢𞤾; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لSs｡᩠𐇽򾅢𞤾; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لSS｡᩠𐇽򾅢𞤾; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-لSs｡᩠𐇽򾅢𞤾; لss.᩠𐇽򾅢𞤾; [B1, B2, B3, P1, V5, V6]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
-𐹽𑄳񼜲.ᷟី꠆𑜫; ; [B1, B3, B6, P1, V5, V6]; xn--1o0di0c0652w.xn--33e362arr1l153d; ; ;  # 𐹽𑄳.ᷟី꠆𑜫
-xn--1o0di0c0652w.xn--33e362arr1l153d; 𐹽𑄳񼜲.ᷟី꠆𑜫; [B1, B3, B6, V5, V6]; xn--1o0di0c0652w.xn--33e362arr1l153d; ; ;  # 𐹽𑄳.ᷟី꠆𑜫
-Ⴓ𑜫‍򗭓．ڧ𑰶; Ⴓ𑜫‍򗭓.ڧ𑰶; [P1, V6]; xn--rnd479ep20q7x12e.xn--9jb4223l; ; xn--rnd8945ky009c.xn--9jb4223l;  # Ⴓ𑜫.ڧ𑰶
-Ⴓ𑜫‍򗭓.ڧ𑰶; ; [P1, V6]; xn--rnd479ep20q7x12e.xn--9jb4223l; ; xn--rnd8945ky009c.xn--9jb4223l;  # Ⴓ𑜫.ڧ𑰶
-ⴓ𑜫‍򗭓.ڧ𑰶; ; [P1, V6]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; xn--blj6306ey091d.xn--9jb4223l;  # ⴓ𑜫.ڧ𑰶
-xn--blj6306ey091d.xn--9jb4223l; ⴓ𑜫򗭓.ڧ𑰶; [V6]; xn--blj6306ey091d.xn--9jb4223l; ; ;  # ⴓ𑜫.ڧ𑰶
-xn--1ugy52cym7p7xu5e.xn--9jb4223l; ⴓ𑜫‍򗭓.ڧ𑰶; [V6]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; ;  # ⴓ𑜫.ڧ𑰶
-xn--rnd8945ky009c.xn--9jb4223l; Ⴓ𑜫򗭓.ڧ𑰶; [V6]; xn--rnd8945ky009c.xn--9jb4223l; ; ;  # Ⴓ𑜫.ڧ𑰶
-xn--rnd479ep20q7x12e.xn--9jb4223l; Ⴓ𑜫‍򗭓.ڧ𑰶; [V6]; xn--rnd479ep20q7x12e.xn--9jb4223l; ; ;  # Ⴓ𑜫.ڧ𑰶
-ⴓ𑜫‍򗭓．ڧ𑰶; ⴓ𑜫‍򗭓.ڧ𑰶; [P1, V6]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; xn--blj6306ey091d.xn--9jb4223l;  # ⴓ𑜫.ڧ𑰶
-𐨿.🄆—; ; [P1, V5, V6]; xn--0s9c.xn--8ug8324p; ; ;  # 𐨿.🄆—
-𐨿.5,—; ; [P1, V5, V6]; xn--0s9c.xn--5,-81t; ; ;  # 𐨿.5,—
-xn--0s9c.xn--5,-81t; 𐨿.5,—; [P1, V5, V6]; xn--0s9c.xn--5,-81t; ; ;  # 𐨿.5,—
-xn--0s9c.xn--8ug8324p; 𐨿.🄆—; [V5, V6]; xn--0s9c.xn--8ug8324p; ; ;  # 𐨿.🄆—
-򔊱񁦮۸。󠾭-; 򔊱񁦮۸.󠾭-; [P1, V3, V6]; xn--lmb18944c0g2z.xn----2k81m; ; ;  # ۸.-
-xn--lmb18944c0g2z.xn----2k81m; 򔊱񁦮۸.󠾭-; [V3, V6]; xn--lmb18944c0g2z.xn----2k81m; ; ;  # ۸.-
-𼗸ߍ𐹮。۝ᡎᠴ; 𼗸ߍ𐹮.۝ᡎᠴ; [B1, B5, B6, P1, V6]; xn--osb0855kcc2r.xn--tlb299fhc; ; ;  # ߍ𐹮.ᡎᠴ
-xn--osb0855kcc2r.xn--tlb299fhc; 𼗸ߍ𐹮.۝ᡎᠴ; [B1, B5, B6, V6]; xn--osb0855kcc2r.xn--tlb299fhc; ; ;  # ߍ𐹮.ᡎᠴ
-‍ᠮႾ🄂.🚗ࡁ𮹌‌; ; [B1, C1, C2, P1, V6]; xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; ; xn--2nd129ai554b.xn--zvb3124wpkpf; [B1, P1, V6] # ᠮႾ🄂.🚗ࡁ
-‍ᠮႾ1,.🚗ࡁ𮹌‌; ; [B1, C1, C2, P1, V6]; xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; ; xn--1,-ogkx89c.xn--zvb3124wpkpf; [B1, B6, P1, V6] # ᠮႾ1,.🚗ࡁ
-‍ᠮⴞ1,.🚗ࡁ𮹌‌; ; [B1, C1, C2, P1, V6]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; xn--1,-v3o625k.xn--zvb3124wpkpf; [B1, B6, P1, V6] # ᠮⴞ1,.🚗ࡁ
-xn--1,-v3o625k.xn--zvb3124wpkpf; ᠮⴞ1,.🚗ࡁ𮹌; [B1, B6, P1, V6]; xn--1,-v3o625k.xn--zvb3124wpkpf; ; ;  # ᠮⴞ1,.🚗ࡁ
-xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ‍ᠮⴞ1,.🚗ࡁ𮹌‌; [B1, C1, C2, P1, V6]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; ;  # ᠮⴞ1,.🚗ࡁ
-xn--1,-ogkx89c.xn--zvb3124wpkpf; ᠮႾ1,.🚗ࡁ𮹌; [B1, B6, P1, V6]; xn--1,-ogkx89c.xn--zvb3124wpkpf; ; ;  # ᠮႾ1,.🚗ࡁ
-xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; ‍ᠮႾ1,.🚗ࡁ𮹌‌; [B1, C1, C2, P1, V6]; xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; ; ;  # ᠮႾ1,.🚗ࡁ
-‍ᠮⴞ🄂.🚗ࡁ𮹌‌; ; [B1, C1, C2, P1, V6]; xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; ; xn--h7e438h1p44a.xn--zvb3124wpkpf; [B1, P1, V6] # ᠮⴞ🄂.🚗ࡁ
-xn--h7e438h1p44a.xn--zvb3124wpkpf; ᠮⴞ🄂.🚗ࡁ𮹌; [B1, V6]; xn--h7e438h1p44a.xn--zvb3124wpkpf; ; ;  # ᠮⴞ🄂.🚗ࡁ
-xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; ‍ᠮⴞ🄂.🚗ࡁ𮹌‌; [B1, C1, C2, V6]; xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; ; ;  # ᠮⴞ🄂.🚗ࡁ
-xn--2nd129ai554b.xn--zvb3124wpkpf; ᠮႾ🄂.🚗ࡁ𮹌; [B1, V6]; xn--2nd129ai554b.xn--zvb3124wpkpf; ; ;  # ᠮႾ🄂.🚗ࡁ
-xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; ‍ᠮႾ🄂.🚗ࡁ𮹌‌; [B1, C1, C2, V6]; xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; ; ;  # ᠮႾ🄂.🚗ࡁ
-؁ڗ．𑚶񼡷⾆; ؁ڗ.𑚶񼡷舌; [B1, P1, V5, V6]; xn--jfb41a.xn--tc1ap851axo39c; ; ;  # ڗ.𑚶舌
-؁ڗ.𑚶񼡷舌; ; [B1, P1, V5, V6]; xn--jfb41a.xn--tc1ap851axo39c; ; ;  # ڗ.𑚶舌
-xn--jfb41a.xn--tc1ap851axo39c; ؁ڗ.𑚶񼡷舌; [B1, V5, V6]; xn--jfb41a.xn--tc1ap851axo39c; ; ;  # ڗ.𑚶舌
-🞅󠳡󜍙.񲖷; ; [P1, V6]; xn--ie9hi1349bqdlb.xn--oj69a; ; ;  # 🞅.
-xn--ie9hi1349bqdlb.xn--oj69a; 🞅󠳡󜍙.񲖷; [V6]; xn--ie9hi1349bqdlb.xn--oj69a; ; ;  # 🞅.
-⃧񯡎-򫣝.4Ⴄ‌; ; [C1, P1, V5, V6]; xn----9snu5320fi76w.xn--4-f0g649i; ; xn----9snu5320fi76w.xn--4-f0g; [P1, V5, V6] # ⃧-.4Ⴄ
-⃧񯡎-򫣝.4ⴄ‌; ; [C1, P1, V5, V6]; xn----9snu5320fi76w.xn--4-sgn589c; ; xn----9snu5320fi76w.xn--4-ivs; [P1, V5, V6] # ⃧-.4ⴄ
-xn----9snu5320fi76w.xn--4-ivs; ⃧񯡎-򫣝.4ⴄ; [V5, V6]; xn----9snu5320fi76w.xn--4-ivs; ; ;  # ⃧-.4ⴄ
-xn----9snu5320fi76w.xn--4-sgn589c; ⃧񯡎-򫣝.4ⴄ‌; [C1, V5, V6]; xn----9snu5320fi76w.xn--4-sgn589c; ; ;  # ⃧-.4ⴄ
-xn----9snu5320fi76w.xn--4-f0g; ⃧񯡎-򫣝.4Ⴄ; [V5, V6]; xn----9snu5320fi76w.xn--4-f0g; ; ;  # ⃧-.4Ⴄ
-xn----9snu5320fi76w.xn--4-f0g649i; ⃧񯡎-򫣝.4Ⴄ‌; [C1, V5, V6]; xn----9snu5320fi76w.xn--4-f0g649i; ; ;  # ⃧-.4Ⴄ
+\u0596Ⴋ．𝟳≯︒\uFE0A; \u0596ⴋ.7≯︒; [V6, V7]; xn--hcb613r.xn--7-pgoy530h; ; ;  # ֖ⴋ.7≯︒
+\u0596Ⴋ．𝟳>\u0338︒\uFE0A; \u0596ⴋ.7≯︒; [V6, V7]; xn--hcb613r.xn--7-pgoy530h; ; ;  # ֖ⴋ.7≯︒
+\u0596Ⴋ.7≯。\uFE0A; \u0596ⴋ.7≯.; [V6]; xn--hcb613r.xn--7-pgo.; [V6, A4_2]; ;  # ֖ⴋ.7≯.
+\u0596Ⴋ.7>\u0338。\uFE0A; \u0596ⴋ.7≯.; [V6]; xn--hcb613r.xn--7-pgo.; [V6, A4_2]; ;  # ֖ⴋ.7≯.
+\u0596ⴋ.7>\u0338。\uFE0A; \u0596ⴋ.7≯.; [V6]; xn--hcb613r.xn--7-pgo.; [V6, A4_2]; ;  # ֖ⴋ.7≯.
+\u0596ⴋ.7≯。\uFE0A; \u0596ⴋ.7≯.; [V6]; xn--hcb613r.xn--7-pgo.; [V6, A4_2]; ;  # ֖ⴋ.7≯.
+xn--hcb613r.xn--7-pgo.; \u0596ⴋ.7≯.; [V6]; xn--hcb613r.xn--7-pgo.; [V6, A4_2]; ;  # ֖ⴋ.7≯.
+\u0596ⴋ．𝟳>\u0338︒\uFE0A; \u0596ⴋ.7≯︒; [V6, V7]; xn--hcb613r.xn--7-pgoy530h; ; ;  # ֖ⴋ.7≯︒
+\u0596ⴋ．𝟳≯︒\uFE0A; \u0596ⴋ.7≯︒; [V6, V7]; xn--hcb613r.xn--7-pgoy530h; ; ;  # ֖ⴋ.7≯︒
+xn--hcb613r.xn--7-pgoy530h; \u0596ⴋ.7≯︒; [V6, V7]; xn--hcb613r.xn--7-pgoy530h; ; ;  # ֖ⴋ.7≯︒
+xn--hcb887c.xn--7-pgo.; \u0596Ⴋ.7≯.; [V6, V7]; xn--hcb887c.xn--7-pgo.; [V6, V7, A4_2]; ;  # ֖Ⴋ.7≯.
+xn--hcb887c.xn--7-pgoy530h; \u0596Ⴋ.7≯︒; [V6, V7]; xn--hcb887c.xn--7-pgoy530h; ; ;  # ֖Ⴋ.7≯︒
+\u200DF𑓂。󠺨︒\u077E𐹢; \u200Df𑓂.󠺨︒\u077E𐹢; [B1, C2, V7]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; xn--f-kq9i.xn--fqb1637j8hky9452a; [B1, V7] # f𑓂.︒ݾ𐹢
+\u200DF𑓂。󠺨。\u077E𐹢; \u200Df𑓂.󠺨.\u077E𐹢; [B1, C2, V7]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; xn--f-kq9i.xn--7656e.xn--fqb4175k; [B1, V7] # f𑓂..ݾ𐹢
+\u200Df𑓂。󠺨。\u077E𐹢; \u200Df𑓂.󠺨.\u077E𐹢; [B1, C2, V7]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; xn--f-kq9i.xn--7656e.xn--fqb4175k; [B1, V7] # f𑓂..ݾ𐹢
+xn--f-kq9i.xn--7656e.xn--fqb4175k; f𑓂.󠺨.\u077E𐹢; [B1, V7]; xn--f-kq9i.xn--7656e.xn--fqb4175k; ; ;  # f𑓂..ݾ𐹢
+xn--f-tgn9761i.xn--7656e.xn--fqb4175k; \u200Df𑓂.󠺨.\u077E𐹢; [B1, C2, V7]; xn--f-tgn9761i.xn--7656e.xn--fqb4175k; ; ;  # f𑓂..ݾ𐹢
+\u200Df𑓂。󠺨︒\u077E𐹢; \u200Df𑓂.󠺨︒\u077E𐹢; [B1, C2, V7]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; xn--f-kq9i.xn--fqb1637j8hky9452a; [B1, V7] # f𑓂.︒ݾ𐹢
+xn--f-kq9i.xn--fqb1637j8hky9452a; f𑓂.󠺨︒\u077E𐹢; [B1, V7]; xn--f-kq9i.xn--fqb1637j8hky9452a; ; ;  # f𑓂.︒ݾ𐹢
+xn--f-tgn9761i.xn--fqb1637j8hky9452a; \u200Df𑓂.󠺨︒\u077E𐹢; [B1, C2, V7]; xn--f-tgn9761i.xn--fqb1637j8hky9452a; ; ;  # f𑓂.︒ݾ𐹢
+\u0845🄇𐼗︒｡𐹻𑜫; \u08456,𐼗︒.𐹻𑜫; [B1, B3, V7, U1]; xn--6,-r4e6182wo1ra.xn--zo0di2m; ; ;  # ࡅ6,𐼗︒.𐹻𑜫
+\u08456,𐼗。。𐹻𑜫; \u08456,𐼗..𐹻𑜫; [B1, U1, X4_2]; xn--6,-r4e4420y..xn--zo0di2m; [B1, U1, A4_2]; ;  # ࡅ6,𐼗..𐹻𑜫
+xn--6,-r4e4420y..xn--zo0di2m; \u08456,𐼗..𐹻𑜫; [B1, U1, X4_2]; xn--6,-r4e4420y..xn--zo0di2m; [B1, U1, A4_2]; ;  # ࡅ6,𐼗..𐹻𑜫
+xn--6,-r4e6182wo1ra.xn--zo0di2m; \u08456,𐼗︒.𐹻𑜫; [B1, B3, V7, U1]; xn--6,-r4e6182wo1ra.xn--zo0di2m; ; ;  # ࡅ6,𐼗︒.𐹻𑜫
+xn--3vb4696jpxkjh7s.xn--zo0di2m; \u0845🄇𐼗︒.𐹻𑜫; [B1, B3, V7]; xn--3vb4696jpxkjh7s.xn--zo0di2m; ; ;  # ࡅ🄇𐼗︒.𐹻𑜫
+𐹈.\u1DC0𑈱𐦭; ; [B1, V6, V7]; xn--jn0d.xn--7dg0871h3lf; ; ;  # .᷀𑈱𐦭
+xn--jn0d.xn--7dg0871h3lf; 𐹈.\u1DC0𑈱𐦭; [B1, V6, V7]; xn--jn0d.xn--7dg0871h3lf; ; ;  # .᷀𑈱𐦭
+Ⴂ䠺。𞤃񅏎󙮦\u0693; ⴂ䠺.𞤥񅏎󙮦\u0693; [B2, V7]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ;  # ⴂ䠺.𞤥ړ
+ⴂ䠺。𞤥񅏎󙮦\u0693; ⴂ䠺.𞤥񅏎󙮦\u0693; [B2, V7]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ;  # ⴂ䠺.𞤥ړ
+xn--tkj638f.xn--pjb9818vg4xno967d; ⴂ䠺.𞤥񅏎󙮦\u0693; [B2, V7]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ;  # ⴂ䠺.𞤥ړ
+xn--9md875z.xn--pjb9818vg4xno967d; Ⴂ䠺.𞤥񅏎󙮦\u0693; [B2, V7]; xn--9md875z.xn--pjb9818vg4xno967d; ; ;  # Ⴂ䠺.𞤥ړ
+ⴂ䠺。𞤃񅏎󙮦\u0693; ⴂ䠺.𞤥񅏎󙮦\u0693; [B2, V7]; xn--tkj638f.xn--pjb9818vg4xno967d; ; ;  # ⴂ䠺.𞤥ړ
+🄇伐︒.𜙚\uA8C4; 6,伐︒.𜙚\uA8C4; [V7, U1]; xn--6,-7i3cj157d.xn--0f9ao925c; ; ;  # 6,伐︒.꣄
+6,伐。.𜙚\uA8C4; 6,伐..𜙚\uA8C4; [V7, U1, X4_2]; xn--6,-7i3c..xn--0f9ao925c; [V7, U1, A4_2]; ;  # 6,伐..꣄
+xn--6,-7i3c..xn--0f9ao925c; 6,伐..𜙚\uA8C4; [V7, U1, X4_2]; xn--6,-7i3c..xn--0f9ao925c; [V7, U1, A4_2]; ;  # 6,伐..꣄
+xn--6,-7i3cj157d.xn--0f9ao925c; 6,伐︒.𜙚\uA8C4; [V7, U1]; xn--6,-7i3cj157d.xn--0f9ao925c; ; ;  # 6,伐︒.꣄
+xn--woqs083bel0g.xn--0f9ao925c; 🄇伐︒.𜙚\uA8C4; [V7]; xn--woqs083bel0g.xn--0f9ao925c; ; ;  # 🄇伐︒.꣄
+\u200D𐹠\uABED\uFFFB。\u200D𐫓Ⴚ𑂹; \u200D𐹠\uABED\uFFFB.\u200D𐫓ⴚ𑂹; [B1, C2, V7]; xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; ; xn--429az70n29i.xn--ilj7702eqyd; [B1, B2, B3, V7] # 𐹠꯭.𐫓ⴚ𑂹
+\u200D𐹠\uABED\uFFFB。\u200D𐫓ⴚ𑂹; \u200D𐹠\uABED\uFFFB.\u200D𐫓ⴚ𑂹; [B1, C2, V7]; xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; ; xn--429az70n29i.xn--ilj7702eqyd; [B1, B2, B3, V7] # 𐹠꯭.𐫓ⴚ𑂹
+xn--429az70n29i.xn--ilj7702eqyd; 𐹠\uABED\uFFFB.𐫓ⴚ𑂹; [B1, B2, B3, V7]; xn--429az70n29i.xn--ilj7702eqyd; ; ;  # 𐹠꯭.𐫓ⴚ𑂹
+xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; \u200D𐹠\uABED\uFFFB.\u200D𐫓ⴚ𑂹; [B1, C2, V7]; xn--1ugz126coy7bdbm.xn--1ug062chv7ov6e; ; ;  # 𐹠꯭.𐫓ⴚ𑂹
+xn--429az70n29i.xn--ynd3619jqyd; 𐹠\uABED\uFFFB.𐫓Ⴚ𑂹; [B1, B2, B3, V7]; xn--429az70n29i.xn--ynd3619jqyd; ; ;  # 𐹠꯭.𐫓Ⴚ𑂹
+xn--1ugz126coy7bdbm.xn--ynd959evs1pv6e; \u200D𐹠\uABED\uFFFB.\u200D𐫓Ⴚ𑂹; [B1, C2, V7]; xn--1ugz126coy7bdbm.xn--ynd959evs1pv6e; ; ;  # 𐹠꯭.𐫓Ⴚ𑂹
+󠆠．񷐴󌟈; .񷐴󌟈; [V7, X4_2]; .xn--rx21bhv12i; [V7, A4_2]; ;  # .
+󠆠.񷐴󌟈; .񷐴󌟈; [V7, X4_2]; .xn--rx21bhv12i; [V7, A4_2]; ;  # .
+.xn--rx21bhv12i; .񷐴󌟈; [V7, X4_2]; .xn--rx21bhv12i; [V7, A4_2]; ;  # .
+𐫃\u200CႦ.≠𞷙; 𐫃\u200Cⴆ.≠𞷙; [B1, B2, B3, C1, V7]; xn--0ug132csv7o.xn--1ch2802p; ; xn--xkjz802e.xn--1ch2802p; [B1, B2, B3, V7] # 𐫃ⴆ.≠
+𐫃\u200CႦ.=\u0338𞷙; 𐫃\u200Cⴆ.≠𞷙; [B1, B2, B3, C1, V7]; xn--0ug132csv7o.xn--1ch2802p; ; xn--xkjz802e.xn--1ch2802p; [B1, B2, B3, V7] # 𐫃ⴆ.≠
+𐫃\u200Cⴆ.=\u0338𞷙; 𐫃\u200Cⴆ.≠𞷙; [B1, B2, B3, C1, V7]; xn--0ug132csv7o.xn--1ch2802p; ; xn--xkjz802e.xn--1ch2802p; [B1, B2, B3, V7] # 𐫃ⴆ.≠
+𐫃\u200Cⴆ.≠𞷙; ; [B1, B2, B3, C1, V7]; xn--0ug132csv7o.xn--1ch2802p; ; xn--xkjz802e.xn--1ch2802p; [B1, B2, B3, V7] # 𐫃ⴆ.≠
+xn--xkjz802e.xn--1ch2802p; 𐫃ⴆ.≠𞷙; [B1, B2, B3, V7]; xn--xkjz802e.xn--1ch2802p; ; ;  # 𐫃ⴆ.≠
+xn--0ug132csv7o.xn--1ch2802p; 𐫃\u200Cⴆ.≠𞷙; [B1, B2, B3, C1, V7]; xn--0ug132csv7o.xn--1ch2802p; ; ;  # 𐫃ⴆ.≠
+xn--end1719j.xn--1ch2802p; 𐫃Ⴆ.≠𞷙; [B1, B2, B3, V7]; xn--end1719j.xn--1ch2802p; ; ;  # 𐫃Ⴆ.≠
+xn--end799ekr1p.xn--1ch2802p; 𐫃\u200CႦ.≠𞷙; [B1, B2, B3, C1, V7]; xn--end799ekr1p.xn--1ch2802p; ; ;  # 𐫃Ⴆ.≠
+󠁲𙩢𝟥ꘌ．\u0841; 󠁲𙩢3ꘌ.\u0841; [B1, V7]; xn--3-0g3es485d8i15h.xn--zvb; ; ;  # 3ꘌ.ࡁ
+󠁲𙩢3ꘌ.\u0841; ; [B1, V7]; xn--3-0g3es485d8i15h.xn--zvb; ; ;  # 3ꘌ.ࡁ
+xn--3-0g3es485d8i15h.xn--zvb; 󠁲𙩢3ꘌ.\u0841; [B1, V7]; xn--3-0g3es485d8i15h.xn--zvb; ; ;  # 3ꘌ.ࡁ
+-.\u1886󡲣-; ; [V3, V6, V7]; -.xn----pbkx6497q; ; ;  # -.ᢆ-
+-.xn----pbkx6497q; -.\u1886󡲣-; [V3, V6, V7]; -.xn----pbkx6497q; ; ;  # -.ᢆ-
+󲚗\u200C｡\u200C𞰆ς; 󲚗\u200C.\u200C𞰆ς; [B1, B6, C1, V7]; xn--0ug76062m.xn--3xa795lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V7] # .ς
+󲚗\u200C。\u200C𞰆ς; 󲚗\u200C.\u200C𞰆ς; [B1, B6, C1, V7]; xn--0ug76062m.xn--3xa795lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V7] # .ς
+󲚗\u200C。\u200C𞰆Σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, V7]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V7] # .σ
+󲚗\u200C。\u200C𞰆σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, V7]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V7] # .σ
+xn--qp42f.xn--4xa3011w; 󲚗.𞰆σ; [B2, B3, V7]; xn--qp42f.xn--4xa3011w; ; ;  # .σ
+xn--0ug76062m.xn--4xa595lhn92a; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, V7]; xn--0ug76062m.xn--4xa595lhn92a; ; ;  # .σ
+xn--0ug76062m.xn--3xa795lhn92a; 󲚗\u200C.\u200C𞰆ς; [B1, B6, C1, V7]; xn--0ug76062m.xn--3xa795lhn92a; ; ;  # .ς
+󲚗\u200C｡\u200C𞰆Σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, V7]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V7] # .σ
+󲚗\u200C｡\u200C𞰆σ; 󲚗\u200C.\u200C𞰆σ; [B1, B6, C1, V7]; xn--0ug76062m.xn--4xa595lhn92a; ; xn--qp42f.xn--4xa3011w; [B2, B3, V7] # .σ
+堕𑓂\u1B02。𐮇𞤽\u200C-; 堕𑓂\u1B02.𐮇𞤽\u200C-; [B3, C1, V3]; xn--5sf345zdk8h.xn----rgnt157hwl9g; ; xn--5sf345zdk8h.xn----iv5iw606c; [B3, V3] # 堕𑓂ᬂ.𐮇𞤽-
+堕𑓂\u1B02。𐮇𞤛\u200C-; 堕𑓂\u1B02.𐮇𞤽\u200C-; [B3, C1, V3]; xn--5sf345zdk8h.xn----rgnt157hwl9g; ; xn--5sf345zdk8h.xn----iv5iw606c; [B3, V3] # 堕𑓂ᬂ.𐮇𞤽-
+xn--5sf345zdk8h.xn----iv5iw606c; 堕𑓂\u1B02.𐮇𞤽-; [B3, V3]; xn--5sf345zdk8h.xn----iv5iw606c; ; ;  # 堕𑓂ᬂ.𐮇𞤽-
+xn--5sf345zdk8h.xn----rgnt157hwl9g; 堕𑓂\u1B02.𐮇𞤽\u200C-; [B3, C1, V3]; xn--5sf345zdk8h.xn----rgnt157hwl9g; ; ;  # 堕𑓂ᬂ.𐮇𞤽-
+𐹶𑁆ᡕ𞤢｡ᡥς\u062Aς; 𐹶𑁆ᡕ𞤢.ᡥς\u062Aς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xaa16plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥςتς
+𐹶𑁆ᡕ𞤢。ᡥς\u062Aς; 𐹶𑁆ᡕ𞤢.ᡥς\u062Aς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xaa16plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥςتς
+𐹶𑁆ᡕ𞤀。ᡥΣ\u062AΣ; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
+𐹶𑁆ᡕ𞤢。ᡥσ\u062Aσ; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
+xn--l8e1317j1ebz456b.xn--4xaa85plx4a; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
+xn--l8e1317j1ebz456b.xn--3xaa16plx4a; 𐹶𑁆ᡕ𞤢.ᡥς\u062Aς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xaa16plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥςتς
+𐹶𑁆ᡕ𞤀｡ᡥΣ\u062AΣ; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
+𐹶𑁆ᡕ𞤢｡ᡥσ\u062Aσ; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
+𐹶𑁆ᡕ𞤢。ᡥΣ\u062AΣ; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
+𐹶𑁆ᡕ𞤢。ᡥΣ\u062Aσ; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
+𐹶𑁆ᡕ𞤢。ᡥΣ\u062Aς; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥσتς
+𐹶𑁆ᡕ𞤢。ᡥσ\u062Aς; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥσتς
+xn--l8e1317j1ebz456b.xn--3xab95plx4a; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتς
+𐹶𑁆ᡕ𞤢｡ᡥΣ\u062AΣ; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
+𐹶𑁆ᡕ𞤢｡ᡥΣ\u062Aσ; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aσ; [B1, B5]; xn--l8e1317j1ebz456b.xn--4xaa85plx4a; ; ;  # 𐹶𑁆ᡕ𞤢.ᡥσتσ
+𐹶𑁆ᡕ𞤢｡ᡥΣ\u062Aς; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥσتς
+𐹶𑁆ᡕ𞤢｡ᡥσ\u062Aς; 𐹶𑁆ᡕ𞤢.ᡥσ\u062Aς; [B1, B5]; xn--l8e1317j1ebz456b.xn--3xab95plx4a; ; xn--l8e1317j1ebz456b.xn--4xaa85plx4a;  # 𐹶𑁆ᡕ𞤢.ᡥσتς
+󏒰．-𝟻ß; 󏒰.-5ß; [V3, V7]; xn--t960e.xn---5-hia; ; xn--t960e.-5ss;  # .-5ß
+󏒰.-5ß; ; [V3, V7]; xn--t960e.xn---5-hia; ; xn--t960e.-5ss;  # .-5ß
+󏒰.-5SS; 󏒰.-5ss; [V3, V7]; xn--t960e.-5ss; ; ;  # .-5ss
+󏒰.-5ss; ; [V3, V7]; xn--t960e.-5ss; ; ;  # .-5ss
+xn--t960e.-5ss; 󏒰.-5ss; [V3, V7]; xn--t960e.-5ss; ; ;  # .-5ss
+xn--t960e.xn---5-hia; 󏒰.-5ß; [V3, V7]; xn--t960e.xn---5-hia; ; ;  # .-5ß
+󏒰．-𝟻SS; 󏒰.-5ss; [V3, V7]; xn--t960e.-5ss; ; ;  # .-5ss
+󏒰．-𝟻ss; 󏒰.-5ss; [V3, V7]; xn--t960e.-5ss; ; ;  # .-5ss
+󏒰．-𝟻Ss; 󏒰.-5ss; [V3, V7]; xn--t960e.-5ss; ; ;  # .-5ss
+󏒰.-5Ss; 󏒰.-5ss; [V3, V7]; xn--t960e.-5ss; ; ;  # .-5ss
+\u200D𐨿.🤒Ⴥ򑮶; \u200D𐨿.🤒ⴥ򑮶; [C2, V7]; xn--1ug9533g.xn--tljz038l0gz4b; ; xn--0s9c.xn--tljz038l0gz4b; [V6, V7] # 𐨿.🤒ⴥ
+\u200D𐨿.🤒ⴥ򑮶; ; [C2, V7]; xn--1ug9533g.xn--tljz038l0gz4b; ; xn--0s9c.xn--tljz038l0gz4b; [V6, V7] # 𐨿.🤒ⴥ
+xn--0s9c.xn--tljz038l0gz4b; 𐨿.🤒ⴥ򑮶; [V6, V7]; xn--0s9c.xn--tljz038l0gz4b; ; ;  # 𐨿.🤒ⴥ
+xn--1ug9533g.xn--tljz038l0gz4b; \u200D𐨿.🤒ⴥ򑮶; [C2, V7]; xn--1ug9533g.xn--tljz038l0gz4b; ; ;  # 𐨿.🤒ⴥ
+xn--0s9c.xn--9nd3211w0gz4b; 𐨿.🤒Ⴥ򑮶; [V6, V7]; xn--0s9c.xn--9nd3211w0gz4b; ; ;  # 𐨿.🤒Ⴥ
+xn--1ug9533g.xn--9nd3211w0gz4b; \u200D𐨿.🤒Ⴥ򑮶; [C2, V7]; xn--1ug9533g.xn--9nd3211w0gz4b; ; ;  # 𐨿.🤒Ⴥ
+𵋅。ß𬵩\u200D; 𵋅.ß𬵩\u200D; [C2, V7]; xn--ey1p.xn--zca870nz438b; ; xn--ey1p.xn--ss-eq36b; [V7] # .ß𬵩
+𵋅。SS𬵩\u200D; 𵋅.ss𬵩\u200D; [C2, V7]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [V7] # .ss𬵩
+𵋅。ss𬵩\u200D; 𵋅.ss𬵩\u200D; [C2, V7]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [V7] # .ss𬵩
+𵋅。Ss𬵩\u200D; 𵋅.ss𬵩\u200D; [C2, V7]; xn--ey1p.xn--ss-n1tx0508a; ; xn--ey1p.xn--ss-eq36b; [V7] # .ss𬵩
+xn--ey1p.xn--ss-eq36b; 𵋅.ss𬵩; [V7]; xn--ey1p.xn--ss-eq36b; ; ;  # .ss𬵩
+xn--ey1p.xn--ss-n1tx0508a; 𵋅.ss𬵩\u200D; [C2, V7]; xn--ey1p.xn--ss-n1tx0508a; ; ;  # .ss𬵩
+xn--ey1p.xn--zca870nz438b; 𵋅.ß𬵩\u200D; [C2, V7]; xn--ey1p.xn--zca870nz438b; ; ;  # .ß𬵩
+\u200C𭉝。\u07F1\u0301𞹻; \u200C𭉝.\u07F1\u0301\u063A; [B1, C1, V6]; xn--0ugy003y.xn--lsa46nuub; ; xn--634m.xn--lsa46nuub; [B1, V6] # 𭉝.߱́غ
+\u200C𭉝。\u07F1\u0301\u063A; \u200C𭉝.\u07F1\u0301\u063A; [B1, C1, V6]; xn--0ugy003y.xn--lsa46nuub; ; xn--634m.xn--lsa46nuub; [B1, V6] # 𭉝.߱́غ
+xn--634m.xn--lsa46nuub; 𭉝.\u07F1\u0301\u063A; [B1, V6]; xn--634m.xn--lsa46nuub; ; ;  # 𭉝.߱́غ
+xn--0ugy003y.xn--lsa46nuub; \u200C𭉝.\u07F1\u0301\u063A; [B1, C1, V6]; xn--0ugy003y.xn--lsa46nuub; ; ;  # 𭉝.߱́غ
+𞼌\u200C𑈶。𐹡; 𞼌\u200C𑈶.𐹡; [B1, B3, C1, V7]; xn--0ug7946gzpxf.xn--8n0d; ; xn--9g1d1288a.xn--8n0d; [B1, V7] # 𑈶.𐹡
+xn--9g1d1288a.xn--8n0d; 𞼌𑈶.𐹡; [B1, V7]; xn--9g1d1288a.xn--8n0d; ; ;  # 𑈶.𐹡
+xn--0ug7946gzpxf.xn--8n0d; 𞼌\u200C𑈶.𐹡; [B1, B3, C1, V7]; xn--0ug7946gzpxf.xn--8n0d; ; ;  # 𑈶.𐹡
+󠅯򇽭\u200C🜭｡𑖿\u1ABBς≠; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻ς≠
+󠅯򇽭\u200C🜭｡𑖿\u1ABBς=\u0338; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻ς≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBς≠; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻ς≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBς=\u0338; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻ς≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBΣ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBΣ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBσ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭。𑖿\u1ABBσ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻σ≠
+xn--zb9h5968x.xn--4xa378i1mfjw7y; 򇽭🜭.𑖿\u1ABBσ≠; [V6, V7]; xn--zb9h5968x.xn--4xa378i1mfjw7y; ; ;  # 🜭.𑖿᪻σ≠
+xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; ;  # 🜭.𑖿᪻σ≠
+xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; 򇽭\u200C🜭.𑖿\u1ABBς≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y; ; ;  # 🜭.𑖿᪻ς≠
+󠅯򇽭\u200C🜭｡𑖿\u1ABBΣ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭｡𑖿\u1ABBΣ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭｡𑖿\u1ABBσ≠; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻σ≠
+󠅯򇽭\u200C🜭｡𑖿\u1ABBσ=\u0338; 򇽭\u200C🜭.𑖿\u1ABBσ≠; [C1, V6, V7]; xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y; ; xn--zb9h5968x.xn--4xa378i1mfjw7y; [V6, V7] # 🜭.𑖿᪻σ≠
+⒋｡⒈\u200D򳴢; ⒋.⒈\u200D򳴢; [C2, V7]; xn--wsh.xn--1ug58o74922a; ; xn--wsh.xn--tsh07994h; [V7] # ⒋.⒈
+4.。1.\u200D򳴢; 4..1.\u200D򳴢; [C2, V7, X4_2]; 4..1.xn--1ug64613i; [C2, V7, A4_2]; 4..1.xn--sf51d; [V7, A4_2] # 4..1.
+4..1.xn--sf51d; 4..1.򳴢; [V7, X4_2]; 4..1.xn--sf51d; [V7, A4_2]; ;  # 4..1.
+4..1.xn--1ug64613i; 4..1.\u200D򳴢; [C2, V7, X4_2]; 4..1.xn--1ug64613i; [C2, V7, A4_2]; ;  # 4..1.
+xn--wsh.xn--tsh07994h; ⒋.⒈򳴢; [V7]; xn--wsh.xn--tsh07994h; ; ;  # ⒋.⒈
+xn--wsh.xn--1ug58o74922a; ⒋.⒈\u200D򳴢; [C2, V7]; xn--wsh.xn--1ug58o74922a; ; ;  # ⒋.⒈
+\u0644ß｡𐇽\u1A60򾅢𞤾; \u0644ß.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
+\u0644ß｡\u1A60𐇽򾅢𞤾; \u0644ß.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
+\u0644ß。\u1A60𐇽򾅢𞤾; \u0644ß.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
+\u0644SS。\u1A60𐇽򾅢𞤜; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644ss。\u1A60𐇽򾅢𞤾; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644ss。\u1A60𐇽򾅢𞤜; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+xn--ss-svd.xn--jof2298hn83fln78f; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644ß。\u1A60𐇽򾅢𞤜; \u0644ß.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
+xn--zca57y.xn--jof2298hn83fln78f; \u0644ß.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--zca57y.xn--jof2298hn83fln78f; ; ;  # لß.᩠𐇽𞤾
+\u0644SS｡\u1A60𐇽򾅢𞤜; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644ss｡\u1A60𐇽򾅢𞤾; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644ss｡\u1A60𐇽򾅢𞤜; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644ß｡\u1A60𐇽򾅢𞤜; \u0644ß.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
+\u0644SS｡𐇽\u1A60򾅢𞤜; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644ss｡𐇽\u1A60򾅢𞤾; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644ss｡𐇽\u1A60򾅢𞤜; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644ß｡𐇽\u1A60򾅢𞤜; \u0644ß.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--zca57y.xn--jof2298hn83fln78f; ; xn--ss-svd.xn--jof2298hn83fln78f;  # لß.᩠𐇽𞤾
+\u0644SS。\u1A60𐇽򾅢𞤾; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644Ss。\u1A60𐇽򾅢𞤾; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644SS｡\u1A60𐇽򾅢𞤾; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644Ss｡\u1A60𐇽򾅢𞤾; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644SS｡𐇽\u1A60򾅢𞤾; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+\u0644Ss｡𐇽\u1A60򾅢𞤾; \u0644ss.\u1A60𐇽򾅢𞤾; [B1, B2, B3, V6, V7]; xn--ss-svd.xn--jof2298hn83fln78f; ; ;  # لss.᩠𐇽𞤾
+𐹽𑄳񼜲.\u1DDF\u17B8\uA806𑜫; ; [B1, V6, V7]; xn--1o0di0c0652w.xn--33e362arr1l153d; ; ;  # 𐹽𑄳.ᷟី꠆𑜫
+xn--1o0di0c0652w.xn--33e362arr1l153d; 𐹽𑄳񼜲.\u1DDF\u17B8\uA806𑜫; [B1, V6, V7]; xn--1o0di0c0652w.xn--33e362arr1l153d; ; ;  # 𐹽𑄳.ᷟី꠆𑜫
+Ⴓ𑜫\u200D򗭓．\u06A7𑰶; ⴓ𑜫\u200D򗭓.\u06A7𑰶; [V7]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; xn--blj6306ey091d.xn--9jb4223l;  # ⴓ𑜫.ڧ𑰶
+Ⴓ𑜫\u200D򗭓.\u06A7𑰶; ⴓ𑜫\u200D򗭓.\u06A7𑰶; [V7]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; xn--blj6306ey091d.xn--9jb4223l;  # ⴓ𑜫.ڧ𑰶
+ⴓ𑜫\u200D򗭓.\u06A7𑰶; ; [V7]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; xn--blj6306ey091d.xn--9jb4223l;  # ⴓ𑜫.ڧ𑰶
+xn--blj6306ey091d.xn--9jb4223l; ⴓ𑜫򗭓.\u06A7𑰶; [V7]; xn--blj6306ey091d.xn--9jb4223l; ; ;  # ⴓ𑜫.ڧ𑰶
+xn--1ugy52cym7p7xu5e.xn--9jb4223l; ⴓ𑜫\u200D򗭓.\u06A7𑰶; [V7]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; ;  # ⴓ𑜫.ڧ𑰶
+ⴓ𑜫\u200D򗭓．\u06A7𑰶; ⴓ𑜫\u200D򗭓.\u06A7𑰶; [V7]; xn--1ugy52cym7p7xu5e.xn--9jb4223l; ; xn--blj6306ey091d.xn--9jb4223l;  # ⴓ𑜫.ڧ𑰶
+xn--rnd8945ky009c.xn--9jb4223l; Ⴓ𑜫򗭓.\u06A7𑰶; [V7]; xn--rnd8945ky009c.xn--9jb4223l; ; ;  # Ⴓ𑜫.ڧ𑰶
+xn--rnd479ep20q7x12e.xn--9jb4223l; Ⴓ𑜫\u200D򗭓.\u06A7𑰶; [V7]; xn--rnd479ep20q7x12e.xn--9jb4223l; ; ;  # Ⴓ𑜫.ڧ𑰶
+𐨿.🄆—; 𐨿.5,—; [V6, U1]; xn--0s9c.xn--5,-81t; ; ;  # 𐨿.5,—
+𐨿.5,—; ; [V6, U1]; xn--0s9c.xn--5,-81t; ; ;  # 𐨿.5,—
+xn--0s9c.xn--5,-81t; 𐨿.5,—; [V6, U1]; xn--0s9c.xn--5,-81t; ; ;  # 𐨿.5,—
+xn--0s9c.xn--8ug8324p; 𐨿.🄆—; [V6, V7]; xn--0s9c.xn--8ug8324p; ; ;  # 𐨿.🄆—
+򔊱񁦮۸。󠾭-; 򔊱񁦮۸.󠾭-; [V3, V7]; xn--lmb18944c0g2z.xn----2k81m; ; ;  # ۸.-
+xn--lmb18944c0g2z.xn----2k81m; 򔊱񁦮۸.󠾭-; [V3, V7]; xn--lmb18944c0g2z.xn----2k81m; ; ;  # ۸.-
+𼗸\u07CD𐹮。\u06DDᡎᠴ; 𼗸\u07CD𐹮.\u06DDᡎᠴ; [B1, B5, B6, V7]; xn--osb0855kcc2r.xn--tlb299fhc; ; ;  # ߍ𐹮.ᡎᠴ
+xn--osb0855kcc2r.xn--tlb299fhc; 𼗸\u07CD𐹮.\u06DDᡎᠴ; [B1, B5, B6, V7]; xn--osb0855kcc2r.xn--tlb299fhc; ; ;  # ߍ𐹮.ᡎᠴ
+\u200DᠮႾ🄂.🚗\u0841𮹌\u200C; \u200Dᠮⴞ1,.🚗\u0841𮹌\u200C; [B1, C1, C2, U1]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; xn--1,-v3o625k.xn--zvb3124wpkpf; [B1, B6, U1] # ᠮⴞ1,.🚗ࡁ𮹌
+\u200DᠮႾ1,.🚗\u0841𮹌\u200C; \u200Dᠮⴞ1,.🚗\u0841𮹌\u200C; [B1, C1, C2, U1]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; xn--1,-v3o625k.xn--zvb3124wpkpf; [B1, B6, U1] # ᠮⴞ1,.🚗ࡁ𮹌
+\u200Dᠮⴞ1,.🚗\u0841𮹌\u200C; ; [B1, C1, C2, U1]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; xn--1,-v3o625k.xn--zvb3124wpkpf; [B1, B6, U1] # ᠮⴞ1,.🚗ࡁ𮹌
+xn--1,-v3o625k.xn--zvb3124wpkpf; ᠮⴞ1,.🚗\u0841𮹌; [B1, B6, U1]; xn--1,-v3o625k.xn--zvb3124wpkpf; ; ;  # ᠮⴞ1,.🚗ࡁ𮹌
+xn--1,-v3o161c53q.xn--zvb692j9664aic1g; \u200Dᠮⴞ1,.🚗\u0841𮹌\u200C; [B1, C1, C2, U1]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; ;  # ᠮⴞ1,.🚗ࡁ𮹌
+\u200Dᠮⴞ🄂.🚗\u0841𮹌\u200C; \u200Dᠮⴞ1,.🚗\u0841𮹌\u200C; [B1, C1, C2, U1]; xn--1,-v3o161c53q.xn--zvb692j9664aic1g; ; xn--1,-v3o625k.xn--zvb3124wpkpf; [B1, B6, U1] # ᠮⴞ1,.🚗ࡁ𮹌
+xn--1,-ogkx89c.xn--zvb3124wpkpf; ᠮႾ1,.🚗\u0841𮹌; [B1, B6, V7, U1]; xn--1,-ogkx89c.xn--zvb3124wpkpf; ; ;  # ᠮႾ1,.🚗ࡁ𮹌
+xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; \u200DᠮႾ1,.🚗\u0841𮹌\u200C; [B1, C1, C2, V7, U1]; xn--1,-ogkx89c39j.xn--zvb692j9664aic1g; ; ;  # ᠮႾ1,.🚗ࡁ𮹌
+xn--h7e438h1p44a.xn--zvb3124wpkpf; ᠮⴞ🄂.🚗\u0841𮹌; [B1, V7]; xn--h7e438h1p44a.xn--zvb3124wpkpf; ; ;  # ᠮⴞ🄂.🚗ࡁ𮹌
+xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; \u200Dᠮⴞ🄂.🚗\u0841𮹌\u200C; [B1, C1, C2, V7]; xn--h7e341b0wlbv45b.xn--zvb692j9664aic1g; ; ;  # ᠮⴞ🄂.🚗ࡁ𮹌
+xn--2nd129ai554b.xn--zvb3124wpkpf; ᠮႾ🄂.🚗\u0841𮹌; [B1, V7]; xn--2nd129ai554b.xn--zvb3124wpkpf; ; ;  # ᠮႾ🄂.🚗ࡁ𮹌
+xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; \u200DᠮႾ🄂.🚗\u0841𮹌\u200C; [B1, C1, C2, V7]; xn--2nd129ay2gnw71c.xn--zvb692j9664aic1g; ; ;  # ᠮႾ🄂.🚗ࡁ𮹌
+\u0601\u0697．𑚶񼡷⾆; \u0601\u0697.𑚶񼡷舌; [B1, V6, V7]; xn--jfb41a.xn--tc1ap851axo39c; ; ;  # ڗ.𑚶舌
+\u0601\u0697.𑚶񼡷舌; ; [B1, V6, V7]; xn--jfb41a.xn--tc1ap851axo39c; ; ;  # ڗ.𑚶舌
+xn--jfb41a.xn--tc1ap851axo39c; \u0601\u0697.𑚶񼡷舌; [B1, V6, V7]; xn--jfb41a.xn--tc1ap851axo39c; ; ;  # ڗ.𑚶舌
+🞅󠳡󜍙.񲖷; ; [V7]; xn--ie9hi1349bqdlb.xn--oj69a; ; ;  # 🞅.
+xn--ie9hi1349bqdlb.xn--oj69a; 🞅󠳡󜍙.񲖷; [V7]; xn--ie9hi1349bqdlb.xn--oj69a; ; ;  # 🞅.
+\u20E7񯡎-򫣝.4Ⴄ\u200C; \u20E7񯡎-򫣝.4ⴄ\u200C; [C1, V6, V7]; xn----9snu5320fi76w.xn--4-sgn589c; ; xn----9snu5320fi76w.xn--4-ivs; [V6, V7] # ⃧-.4ⴄ
+\u20E7񯡎-򫣝.4ⴄ\u200C; ; [C1, V6, V7]; xn----9snu5320fi76w.xn--4-sgn589c; ; xn----9snu5320fi76w.xn--4-ivs; [V6, V7] # ⃧-.4ⴄ
+xn----9snu5320fi76w.xn--4-ivs; \u20E7񯡎-򫣝.4ⴄ; [V6, V7]; xn----9snu5320fi76w.xn--4-ivs; ; ;  # ⃧-.4ⴄ
+xn----9snu5320fi76w.xn--4-sgn589c; \u20E7񯡎-򫣝.4ⴄ\u200C; [C1, V6, V7]; xn----9snu5320fi76w.xn--4-sgn589c; ; ;  # ⃧-.4ⴄ
+xn----9snu5320fi76w.xn--4-f0g; \u20E7񯡎-򫣝.4Ⴄ; [V6, V7]; xn----9snu5320fi76w.xn--4-f0g; ; ;  # ⃧-.4Ⴄ
+xn----9snu5320fi76w.xn--4-f0g649i; \u20E7񯡎-򫣝.4Ⴄ\u200C; [C1, V6, V7]; xn----9snu5320fi76w.xn--4-f0g649i; ; ;  # ⃧-.4Ⴄ
 ᚭ｡𝌠ß𖫱; ᚭ.𝌠ß𖫱; ; xn--hwe.xn--zca4946pblnc; ; xn--hwe.xn--ss-ci1ub261a;  # ᚭ.𝌠ß𖫱
 ᚭ。𝌠ß𖫱; ᚭ.𝌠ß𖫱; ; xn--hwe.xn--zca4946pblnc; ; xn--hwe.xn--ss-ci1ub261a;  # ᚭ.𝌠ß𖫱
 ᚭ。𝌠SS𖫱; ᚭ.𝌠ss𖫱; ; xn--hwe.xn--ss-ci1ub261a; ; ;  # ᚭ.𝌠ss𖫱
@@ -1508,1912 +1585,1942 @@ xn--hwe.xn--zca4946pblnc; ᚭ.𝌠ß𖫱; ; xn--hwe.xn--zca4946pblnc; ; ;  # ᚭ
 1。𞤉ꡪ; 1.𞤫ꡪ; [B1, B2, B3]; 1.xn--gd9al691d; ; ;  # 1.𞤫ꡪ
 1.xn--gd9al691d; 1.𞤫ꡪ; [B1, B2, B3]; 1.xn--gd9al691d; ; ;  # 1.𞤫ꡪ
 ₁｡𞤉ꡪ; 1.𞤫ꡪ; [B1, B2, B3]; 1.xn--gd9al691d; ; ;  # 1.𞤫ꡪ
-𯻼‌.𞶞򻙤񥘇; ; [B2, B3, B6, C1, P1, V6]; xn--0ug27500a.xn--2b7hs861pl540a; ; xn--kg4n.xn--2b7hs861pl540a; [B2, B3, P1, V6] # .
-xn--kg4n.xn--2b7hs861pl540a; 𯻼.𞶞򻙤񥘇; [B2, B3, V6]; xn--kg4n.xn--2b7hs861pl540a; ; ;  # .
-xn--0ug27500a.xn--2b7hs861pl540a; 𯻼‌.𞶞򻙤񥘇; [B2, B3, B6, C1, V6]; xn--0ug27500a.xn--2b7hs861pl540a; ; ;  # .
-𑑄≯｡𑜤; 𑑄≯.𑜤; [P1, V5, V6]; xn--hdh5636g.xn--ci2d; ; ;  # 𑑄≯.𑜤
-𑑄≯｡𑜤; 𑑄≯.𑜤; [P1, V5, V6]; xn--hdh5636g.xn--ci2d; ; ;  # 𑑄≯.𑜤
-𑑄≯。𑜤; 𑑄≯.𑜤; [P1, V5, V6]; xn--hdh5636g.xn--ci2d; ; ;  # 𑑄≯.𑜤
-𑑄≯。𑜤; 𑑄≯.𑜤; [P1, V5, V6]; xn--hdh5636g.xn--ci2d; ; ;  # 𑑄≯.𑜤
-xn--hdh5636g.xn--ci2d; 𑑄≯.𑜤; [V5, V6]; xn--hdh5636g.xn--ci2d; ; ;  # 𑑄≯.𑜤
-Ⴋ≮𱲆。‍ާ𐋣; Ⴋ≮𱲆.‍ާ𐋣; [C2, P1, V6]; xn--jnd802gsm17c.xn--lrb506jqr4n; ; xn--jnd802gsm17c.xn--lrb6479j; [P1, V5, V6] # Ⴋ≮.ާ𐋣
-Ⴋ≮𱲆。‍ާ𐋣; Ⴋ≮𱲆.‍ާ𐋣; [C2, P1, V6]; xn--jnd802gsm17c.xn--lrb506jqr4n; ; xn--jnd802gsm17c.xn--lrb6479j; [P1, V5, V6] # Ⴋ≮.ާ𐋣
-ⴋ≮𱲆。‍ާ𐋣; ⴋ≮𱲆.‍ާ𐋣; [C2, P1, V6]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; xn--gdhz03bxt42d.xn--lrb6479j; [P1, V5, V6] # ⴋ≮.ާ𐋣
-ⴋ≮𱲆。‍ާ𐋣; ⴋ≮𱲆.‍ާ𐋣; [C2, P1, V6]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; xn--gdhz03bxt42d.xn--lrb6479j; [P1, V5, V6] # ⴋ≮.ާ𐋣
-xn--gdhz03bxt42d.xn--lrb6479j; ⴋ≮𱲆.ާ𐋣; [V5, V6]; xn--gdhz03bxt42d.xn--lrb6479j; ; ;  # ⴋ≮.ާ𐋣
-xn--gdhz03bxt42d.xn--lrb506jqr4n; ⴋ≮𱲆.‍ާ𐋣; [C2, V6]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; ;  # ⴋ≮.ާ𐋣
-xn--jnd802gsm17c.xn--lrb6479j; Ⴋ≮𱲆.ާ𐋣; [V5, V6]; xn--jnd802gsm17c.xn--lrb6479j; ; ;  # Ⴋ≮.ާ𐋣
-xn--jnd802gsm17c.xn--lrb506jqr4n; Ⴋ≮𱲆.‍ާ𐋣; [C2, V6]; xn--jnd802gsm17c.xn--lrb506jqr4n; ; ;  # Ⴋ≮.ާ𐋣
-្.򆽒≯; ; [P1, V5, V6]; xn--u4e.xn--hdhx0084f; ; ;  # ្.≯
-្.򆽒≯; ្.򆽒≯; [P1, V5, V6]; xn--u4e.xn--hdhx0084f; ; ;  # ្.≯
-xn--u4e.xn--hdhx0084f; ្.򆽒≯; [V5, V6]; xn--u4e.xn--hdhx0084f; ; ;  # ្.≯
-񏁇᜴．𐨺É⬓𑄴; 񏁇᜴.𐨺é⬓𑄴; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
-񏁇᜴．𐨺É⬓𑄴; 񏁇᜴.𐨺é⬓𑄴; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
-񏁇᜴.𐨺É⬓𑄴; 񏁇᜴.𐨺é⬓𑄴; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
-񏁇᜴.𐨺É⬓𑄴; 񏁇᜴.𐨺é⬓𑄴; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
-񏁇᜴.𐨺é⬓𑄴; 񏁇᜴.𐨺é⬓𑄴; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
-񏁇᜴.𐨺é⬓𑄴; ; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
-xn--c0e34564d.xn--9ca207st53lg3f; 񏁇᜴.𐨺é⬓𑄴; [V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
-񏁇᜴．𐨺é⬓𑄴; 񏁇᜴.𐨺é⬓𑄴; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
-񏁇᜴．𐨺é⬓𑄴; 񏁇᜴.𐨺é⬓𑄴; [P1, V5, V6]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
-ᢇ‍꣄｡︒𞤺; ᢇ‍꣄.︒𞤺; [B1, B6, C2, P1, V6]; xn--09e669a6x8j.xn--y86cv562b; ; xn--09e4694e.xn--y86cv562b; [B1, P1, V6] # ᢇ꣄.︒𞤺
-ᢇ‍꣄。。𞤺; ᢇ‍꣄..𞤺; [B6, C2, X4_2]; xn--09e669a6x8j..xn--ye6h; [B6, C2, A4_2]; xn--09e4694e..xn--ye6h; [A4_2] # ᢇ꣄..𞤺
-ᢇ‍꣄。。𞤘; ᢇ‍꣄..𞤺; [B6, C2, X4_2]; xn--09e669a6x8j..xn--ye6h; [B6, C2, A4_2]; xn--09e4694e..xn--ye6h; [A4_2] # ᢇ꣄..𞤺
-xn--09e4694e..xn--ye6h; ᢇ꣄..𞤺; [X4_2]; xn--09e4694e..xn--ye6h; [A4_2]; ;  # ᢇ꣄..𞤺
-xn--09e669a6x8j..xn--ye6h; ᢇ‍꣄..𞤺; [B6, C2, X4_2]; xn--09e669a6x8j..xn--ye6h; [B6, C2, A4_2]; ;  # ᢇ꣄..𞤺
-ᢇ‍꣄｡︒𞤘; ᢇ‍꣄.︒𞤺; [B1, B6, C2, P1, V6]; xn--09e669a6x8j.xn--y86cv562b; ; xn--09e4694e.xn--y86cv562b; [B1, P1, V6] # ᢇ꣄.︒𞤺
-xn--09e4694e.xn--y86cv562b; ᢇ꣄.︒𞤺; [B1, V6]; xn--09e4694e.xn--y86cv562b; ; ;  # ᢇ꣄.︒𞤺
-xn--09e669a6x8j.xn--y86cv562b; ᢇ‍꣄.︒𞤺; [B1, B6, C2, V6]; xn--09e669a6x8j.xn--y86cv562b; ; ;  # ᢇ꣄.︒𞤺
-𞩬򖙱᜔‌｡رު≮; 𞩬򖙱᜔‌.رު≮; [B2, B3, P1, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d;  # ᜔.رު≮
-𞩬򖙱᜔‌｡رު≮; 𞩬򖙱᜔‌.رު≮; [B2, B3, P1, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d;  # ᜔.رު≮
-𞩬򖙱᜔‌。رު≮; 𞩬򖙱᜔‌.رު≮; [B2, B3, P1, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d;  # ᜔.رު≮
-𞩬򖙱᜔‌。رު≮; 𞩬򖙱᜔‌.رު≮; [B2, B3, P1, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d;  # ᜔.رު≮
-xn--fze3930v7hz6b.xn--wgb86el10d; 𞩬򖙱᜔.رު≮; [B2, B3, V6]; xn--fze3930v7hz6b.xn--wgb86el10d; ; ;  # ᜔.رު≮
-xn--fze607b9651bjwl7c.xn--wgb86el10d; 𞩬򖙱᜔‌.رު≮; [B2, B3, V6]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; ;  # ᜔.رު≮
-Ⴣ．ٓᢤ; Ⴣ.ٓᢤ; [P1, V5, V6]; xn--7nd.xn--vhb294g; ; ;  # Ⴣ.ٓᢤ
-Ⴣ.ٓᢤ; ; [P1, V5, V6]; xn--7nd.xn--vhb294g; ; ;  # Ⴣ.ٓᢤ
-ⴣ.ٓᢤ; ; [V5]; xn--rlj.xn--vhb294g; ; ;  # ⴣ.ٓᢤ
-xn--rlj.xn--vhb294g; ⴣ.ٓᢤ; [V5]; xn--rlj.xn--vhb294g; ; ;  # ⴣ.ٓᢤ
-xn--7nd.xn--vhb294g; Ⴣ.ٓᢤ; [V5, V6]; xn--7nd.xn--vhb294g; ; ;  # Ⴣ.ٓᢤ
-ⴣ．ٓᢤ; ⴣ.ٓᢤ; [V5]; xn--rlj.xn--vhb294g; ; ;  # ⴣ.ٓᢤ
-󠄈ࠓ．싉򄆻Ⴤ򂡐; ࠓ.싉򄆻Ⴤ򂡐; [P1, V6]; xn--oub.xn--8nd9522gpe69cviva; ; ;  # ࠓ.싉Ⴤ
-󠄈ࠓ．싉򄆻Ⴤ򂡐; ࠓ.싉򄆻Ⴤ򂡐; [P1, V6]; xn--oub.xn--8nd9522gpe69cviva; ; ;  # ࠓ.싉Ⴤ
-󠄈ࠓ.싉򄆻Ⴤ򂡐; ࠓ.싉򄆻Ⴤ򂡐; [P1, V6]; xn--oub.xn--8nd9522gpe69cviva; ; ;  # ࠓ.싉Ⴤ
-󠄈ࠓ.싉򄆻Ⴤ򂡐; ࠓ.싉򄆻Ⴤ򂡐; [P1, V6]; xn--oub.xn--8nd9522gpe69cviva; ; ;  # ࠓ.싉Ⴤ
-󠄈ࠓ.싉򄆻ⴤ򂡐; ࠓ.싉򄆻ⴤ򂡐; [P1, V6]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
-󠄈ࠓ.싉򄆻ⴤ򂡐; ࠓ.싉򄆻ⴤ򂡐; [P1, V6]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
-xn--oub.xn--sljz109bpe25dviva; ࠓ.싉򄆻ⴤ򂡐; [V6]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
-xn--oub.xn--8nd9522gpe69cviva; ࠓ.싉򄆻Ⴤ򂡐; [V6]; xn--oub.xn--8nd9522gpe69cviva; ; ;  # ࠓ.싉Ⴤ
-󠄈ࠓ．싉򄆻ⴤ򂡐; ࠓ.싉򄆻ⴤ򂡐; [P1, V6]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
-󠄈ࠓ．싉򄆻ⴤ򂡐; ࠓ.싉򄆻ⴤ򂡐; [P1, V6]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
-ꨬ𑲫≮．⤂; ꨬ𑲫≮.⤂; [P1, V5, V6]; xn--gdh1854cn19c.xn--kqi; ; ;  # ꨬ𑲫≮.⤂
-ꨬ𑲫≮．⤂; ꨬ𑲫≮.⤂; [P1, V5, V6]; xn--gdh1854cn19c.xn--kqi; ; ;  # ꨬ𑲫≮.⤂
-ꨬ𑲫≮.⤂; ; [P1, V5, V6]; xn--gdh1854cn19c.xn--kqi; ; ;  # ꨬ𑲫≮.⤂
-ꨬ𑲫≮.⤂; ꨬ𑲫≮.⤂; [P1, V5, V6]; xn--gdh1854cn19c.xn--kqi; ; ;  # ꨬ𑲫≮.⤂
-xn--gdh1854cn19c.xn--kqi; ꨬ𑲫≮.⤂; [V5, V6]; xn--gdh1854cn19c.xn--kqi; ; ;  # ꨬ𑲫≮.⤂
-؄𐩔≮Ⴢ．Ⴃ; ؄𐩔≮Ⴢ.Ⴃ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ;  # 𐩔≮Ⴢ.Ⴃ
-؄𐩔≮Ⴢ．Ⴃ; ؄𐩔≮Ⴢ.Ⴃ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ;  # 𐩔≮Ⴢ.Ⴃ
-؄𐩔≮Ⴢ.Ⴃ; ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ;  # 𐩔≮Ⴢ.Ⴃ
-؄𐩔≮Ⴢ.Ⴃ; ؄𐩔≮Ⴢ.Ⴃ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ;  # 𐩔≮Ⴢ.Ⴃ
-؄𐩔≮ⴢ.ⴃ; ؄𐩔≮ⴢ.ⴃ; [B1, P1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
-؄𐩔≮ⴢ.ⴃ; ; [B1, P1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
-؄𐩔≮Ⴢ.ⴃ; ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ;  # 𐩔≮Ⴢ.ⴃ
-؄𐩔≮Ⴢ.ⴃ; ؄𐩔≮Ⴢ.ⴃ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ;  # 𐩔≮Ⴢ.ⴃ
-xn--mfb416c0jox02t.xn--ukj; ؄𐩔≮Ⴢ.ⴃ; [B1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ;  # 𐩔≮Ⴢ.ⴃ
-xn--mfb266l4khr54u.xn--ukj; ؄𐩔≮ⴢ.ⴃ; [B1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
-xn--mfb416c0jox02t.xn--bnd; ؄𐩔≮Ⴢ.Ⴃ; [B1, V6]; xn--mfb416c0jox02t.xn--bnd; ; ;  # 𐩔≮Ⴢ.Ⴃ
-؄𐩔≮ⴢ．ⴃ; ؄𐩔≮ⴢ.ⴃ; [B1, P1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
-؄𐩔≮ⴢ．ⴃ; ؄𐩔≮ⴢ.ⴃ; [B1, P1, V6]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
-؄𐩔≮Ⴢ．ⴃ; ؄𐩔≮Ⴢ.ⴃ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ;  # 𐩔≮Ⴢ.ⴃ
-؄𐩔≮Ⴢ．ⴃ; ؄𐩔≮Ⴢ.ⴃ; [B1, P1, V6]; xn--mfb416c0jox02t.xn--ukj; ; ;  # 𐩔≮Ⴢ.ⴃ
-𑁅。-; 𑁅.-; [V3, V5]; xn--210d.-; ; ;  # 𑁅.-
-xn--210d.-; 𑁅.-; [V3, V5]; xn--210d.-; ; ;  # 𑁅.-
-්򕸽󠧱｡饈≠٤; ්򕸽󠧱.饈≠٤; [B1, B5, B6, P1, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ;  # ්.饈≠٤
-්򕸽󠧱｡饈≠٤; ්򕸽󠧱.饈≠٤; [B1, B5, B6, P1, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ;  # ්.饈≠٤
-්򕸽󠧱。饈≠٤; ්򕸽󠧱.饈≠٤; [B1, B5, B6, P1, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ;  # ්.饈≠٤
-්򕸽󠧱。饈≠٤; ්򕸽󠧱.饈≠٤; [B1, B5, B6, P1, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ;  # ්.饈≠٤
-xn--h1c25913jfwov.xn--dib144ler5f; ්򕸽󠧱.饈≠٤; [B1, B5, B6, V5, V6]; xn--h1c25913jfwov.xn--dib144ler5f; ; ;  # ්.饈≠٤
-𞥃ᠠ⁷｡≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
-𞥃ᠠ⁷｡≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
-𞥃ᠠ7。≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
-𞥃ᠠ7。≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
-𞤡ᠠ7。≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
-𞤡ᠠ7。≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
-xn--7-v4j2826w.xn--4-ogoy01bou3i; 𞥃ᠠ7.≯邅⬻4; [B1, B2, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
-𞤡ᠠ⁷｡≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
-𞤡ᠠ⁷｡≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2, P1, V6]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
-򠿯ᡳ-𑐻.𐹴𐋫؅󑎳; ; [B1, B6, P1, V6]; xn----m9j3429kxmy7e.xn--nfb7950kdihrp812a; ; ;  # ᡳ-𑐻.𐹴𐋫
-xn----m9j3429kxmy7e.xn--nfb7950kdihrp812a; 򠿯ᡳ-𑐻.𐹴𐋫؅󑎳; [B1, B6, V6]; xn----m9j3429kxmy7e.xn--nfb7950kdihrp812a; ; ;  # ᡳ-𑐻.𐹴𐋫
-򠶆ࡅੑ.넨-󶧈; ; [B5, B6, P1, V6]; xn--3vb26hb6834b.xn----i37ez0957g; ; ;  # ࡅੑ.넨-
-򠶆ࡅੑ.넨-󶧈; 򠶆ࡅੑ.넨-󶧈; [B5, B6, P1, V6]; xn--3vb26hb6834b.xn----i37ez0957g; ; ;  # ࡅੑ.넨-
-xn--3vb26hb6834b.xn----i37ez0957g; 򠶆ࡅੑ.넨-󶧈; [B5, B6, V6]; xn--3vb26hb6834b.xn----i37ez0957g; ; ;  # ࡅੑ.넨-
-ꡦᡑ‍⒈。𐋣-; ꡦᡑ‍⒈.𐋣-; [C2, P1, V3, V6]; xn--h8e470bl0d838o.xn----381i; ; xn--h8e863drj7h.xn----381i; [P1, V3, V6] # ꡦᡑ⒈.𐋣-
-ꡦᡑ‍1.。𐋣-; ꡦᡑ‍1..𐋣-; [C2, V3, X4_2]; xn--1-o7j663bdl7m..xn----381i; [C2, V3, A4_2]; xn--1-o7j0610f..xn----381i; [V3, A4_2] # ꡦᡑ1..𐋣-
+𯻼\u200C.𞶞򻙤񥘇; ; [B2, B3, B6, C1, V7]; xn--0ug27500a.xn--2b7hs861pl540a; ; xn--kg4n.xn--2b7hs861pl540a; [B2, B3, V7] # .
+xn--kg4n.xn--2b7hs861pl540a; 𯻼.𞶞򻙤񥘇; [B2, B3, V7]; xn--kg4n.xn--2b7hs861pl540a; ; ;  # .
+xn--0ug27500a.xn--2b7hs861pl540a; 𯻼\u200C.𞶞򻙤񥘇; [B2, B3, B6, C1, V7]; xn--0ug27500a.xn--2b7hs861pl540a; ; ;  # .
+𑑄≯｡𑜤; 𑑄≯.𑜤; [V6]; xn--hdh5636g.xn--ci2d; ; ;  # 𑑄≯.𑜤
+𑑄>\u0338｡𑜤; 𑑄≯.𑜤; [V6]; xn--hdh5636g.xn--ci2d; ; ;  # 𑑄≯.𑜤
+𑑄≯。𑜤; 𑑄≯.𑜤; [V6]; xn--hdh5636g.xn--ci2d; ; ;  # 𑑄≯.𑜤
+𑑄>\u0338。𑜤; 𑑄≯.𑜤; [V6]; xn--hdh5636g.xn--ci2d; ; ;  # 𑑄≯.𑜤
+xn--hdh5636g.xn--ci2d; 𑑄≯.𑜤; [V6]; xn--hdh5636g.xn--ci2d; ; ;  # 𑑄≯.𑜤
+Ⴋ≮𱲆。\u200D\u07A7𐋣; ⴋ≮𱲆.\u200D\u07A7𐋣; [C2]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; xn--gdhz03bxt42d.xn--lrb6479j; [V6] # ⴋ≮𱲆.ާ𐋣
+Ⴋ<\u0338𱲆。\u200D\u07A7𐋣; ⴋ≮𱲆.\u200D\u07A7𐋣; [C2]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; xn--gdhz03bxt42d.xn--lrb6479j; [V6] # ⴋ≮𱲆.ާ𐋣
+ⴋ<\u0338𱲆。\u200D\u07A7𐋣; ⴋ≮𱲆.\u200D\u07A7𐋣; [C2]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; xn--gdhz03bxt42d.xn--lrb6479j; [V6] # ⴋ≮𱲆.ާ𐋣
+ⴋ≮𱲆。\u200D\u07A7𐋣; ⴋ≮𱲆.\u200D\u07A7𐋣; [C2]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; xn--gdhz03bxt42d.xn--lrb6479j; [V6] # ⴋ≮𱲆.ާ𐋣
+xn--gdhz03bxt42d.xn--lrb6479j; ⴋ≮𱲆.\u07A7𐋣; [V6]; xn--gdhz03bxt42d.xn--lrb6479j; ; ;  # ⴋ≮𱲆.ާ𐋣
+xn--gdhz03bxt42d.xn--lrb506jqr4n; ⴋ≮𱲆.\u200D\u07A7𐋣; [C2]; xn--gdhz03bxt42d.xn--lrb506jqr4n; ; ;  # ⴋ≮𱲆.ާ𐋣
+xn--jnd802gsm17c.xn--lrb6479j; Ⴋ≮𱲆.\u07A7𐋣; [V6, V7]; xn--jnd802gsm17c.xn--lrb6479j; ; ;  # Ⴋ≮𱲆.ާ𐋣
+xn--jnd802gsm17c.xn--lrb506jqr4n; Ⴋ≮𱲆.\u200D\u07A7𐋣; [C2, V7]; xn--jnd802gsm17c.xn--lrb506jqr4n; ; ;  # Ⴋ≮𱲆.ާ𐋣
+\u17D2.򆽒≯; ; [V6, V7]; xn--u4e.xn--hdhx0084f; ; ;  # ្.≯
+\u17D2.򆽒>\u0338; \u17D2.򆽒≯; [V6, V7]; xn--u4e.xn--hdhx0084f; ; ;  # ្.≯
+xn--u4e.xn--hdhx0084f; \u17D2.򆽒≯; [V6, V7]; xn--u4e.xn--hdhx0084f; ; ;  # ្.≯
+񏁇\u1734．𐨺É⬓𑄴; 񏁇\u1734.𐨺é⬓𑄴; [V6, V7]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
+񏁇\u1734．𐨺E\u0301⬓𑄴; 񏁇\u1734.𐨺é⬓𑄴; [V6, V7]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
+񏁇\u1734.𐨺É⬓𑄴; 񏁇\u1734.𐨺é⬓𑄴; [V6, V7]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
+񏁇\u1734.𐨺E\u0301⬓𑄴; 񏁇\u1734.𐨺é⬓𑄴; [V6, V7]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
+񏁇\u1734.𐨺e\u0301⬓𑄴; 񏁇\u1734.𐨺é⬓𑄴; [V6, V7]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
+񏁇\u1734.𐨺é⬓𑄴; ; [V6, V7]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
+xn--c0e34564d.xn--9ca207st53lg3f; 񏁇\u1734.𐨺é⬓𑄴; [V6, V7]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
+񏁇\u1734．𐨺e\u0301⬓𑄴; 񏁇\u1734.𐨺é⬓𑄴; [V6, V7]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
+񏁇\u1734．𐨺é⬓𑄴; 񏁇\u1734.𐨺é⬓𑄴; [V6, V7]; xn--c0e34564d.xn--9ca207st53lg3f; ; ;  # ᜴.𐨺é⬓𑄴
+ᢇ\u200D\uA8C4｡︒𞤺; ᢇ\u200D\uA8C4.︒𞤺; [B1, B6, C2, V7]; xn--09e669a6x8j.xn--y86cv562b; ; xn--09e4694e.xn--y86cv562b; [B1, V7] # ᢇ꣄.︒𞤺
+ᢇ\u200D\uA8C4。。𞤺; ᢇ\u200D\uA8C4..𞤺; [B6, C2, X4_2]; xn--09e669a6x8j..xn--ye6h; [B6, C2, A4_2]; xn--09e4694e..xn--ye6h; [A4_2] # ᢇ꣄..𞤺
+ᢇ\u200D\uA8C4。。𞤘; ᢇ\u200D\uA8C4..𞤺; [B6, C2, X4_2]; xn--09e669a6x8j..xn--ye6h; [B6, C2, A4_2]; xn--09e4694e..xn--ye6h; [A4_2] # ᢇ꣄..𞤺
+xn--09e4694e..xn--ye6h; ᢇ\uA8C4..𞤺; [X4_2]; xn--09e4694e..xn--ye6h; [A4_2]; ;  # ᢇ꣄..𞤺
+xn--09e669a6x8j..xn--ye6h; ᢇ\u200D\uA8C4..𞤺; [B6, C2, X4_2]; xn--09e669a6x8j..xn--ye6h; [B6, C2, A4_2]; ;  # ᢇ꣄..𞤺
+ᢇ\u200D\uA8C4｡︒𞤘; ᢇ\u200D\uA8C4.︒𞤺; [B1, B6, C2, V7]; xn--09e669a6x8j.xn--y86cv562b; ; xn--09e4694e.xn--y86cv562b; [B1, V7] # ᢇ꣄.︒𞤺
+xn--09e4694e.xn--y86cv562b; ᢇ\uA8C4.︒𞤺; [B1, V7]; xn--09e4694e.xn--y86cv562b; ; ;  # ᢇ꣄.︒𞤺
+xn--09e669a6x8j.xn--y86cv562b; ᢇ\u200D\uA8C4.︒𞤺; [B1, B6, C2, V7]; xn--09e669a6x8j.xn--y86cv562b; ; ;  # ᢇ꣄.︒𞤺
+𞩬򖙱\u1714\u200C｡\u0631\u07AA≮; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, V7]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d;  # ᜔.رު≮
+𞩬򖙱\u1714\u200C｡\u0631\u07AA<\u0338; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, V7]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d;  # ᜔.رު≮
+𞩬򖙱\u1714\u200C。\u0631\u07AA≮; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, V7]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d;  # ᜔.رު≮
+𞩬򖙱\u1714\u200C。\u0631\u07AA<\u0338; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, V7]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; xn--fze3930v7hz6b.xn--wgb86el10d;  # ᜔.رު≮
+xn--fze3930v7hz6b.xn--wgb86el10d; 𞩬򖙱\u1714.\u0631\u07AA≮; [B2, B3, V7]; xn--fze3930v7hz6b.xn--wgb86el10d; ; ;  # ᜔.رު≮
+xn--fze607b9651bjwl7c.xn--wgb86el10d; 𞩬򖙱\u1714\u200C.\u0631\u07AA≮; [B2, B3, V7]; xn--fze607b9651bjwl7c.xn--wgb86el10d; ; ;  # ᜔.رު≮
+Ⴣ．\u0653ᢤ; ⴣ.\u0653ᢤ; [V6]; xn--rlj.xn--vhb294g; ; ;  # ⴣ.ٓᢤ
+Ⴣ.\u0653ᢤ; ⴣ.\u0653ᢤ; [V6]; xn--rlj.xn--vhb294g; ; ;  # ⴣ.ٓᢤ
+ⴣ.\u0653ᢤ; ; [V6]; xn--rlj.xn--vhb294g; ; ;  # ⴣ.ٓᢤ
+xn--rlj.xn--vhb294g; ⴣ.\u0653ᢤ; [V6]; xn--rlj.xn--vhb294g; ; ;  # ⴣ.ٓᢤ
+ⴣ．\u0653ᢤ; ⴣ.\u0653ᢤ; [V6]; xn--rlj.xn--vhb294g; ; ;  # ⴣ.ٓᢤ
+xn--7nd.xn--vhb294g; Ⴣ.\u0653ᢤ; [V6, V7]; xn--7nd.xn--vhb294g; ; ;  # Ⴣ.ٓᢤ
+󠄈\u0813．싉򄆻Ⴤ򂡐; \u0813.싉򄆻ⴤ򂡐; [V7]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
+󠄈\u0813．싉򄆻Ⴤ򂡐; \u0813.싉򄆻ⴤ򂡐; [V7]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
+󠄈\u0813.싉򄆻Ⴤ򂡐; \u0813.싉򄆻ⴤ򂡐; [V7]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
+󠄈\u0813.싉򄆻Ⴤ򂡐; \u0813.싉򄆻ⴤ򂡐; [V7]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
+󠄈\u0813.싉򄆻ⴤ򂡐; \u0813.싉򄆻ⴤ򂡐; [V7]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
+󠄈\u0813.싉򄆻ⴤ򂡐; \u0813.싉򄆻ⴤ򂡐; [V7]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
+xn--oub.xn--sljz109bpe25dviva; \u0813.싉򄆻ⴤ򂡐; [V7]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
+󠄈\u0813．싉򄆻ⴤ򂡐; \u0813.싉򄆻ⴤ򂡐; [V7]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
+󠄈\u0813．싉򄆻ⴤ򂡐; \u0813.싉򄆻ⴤ򂡐; [V7]; xn--oub.xn--sljz109bpe25dviva; ; ;  # ࠓ.싉ⴤ
+xn--oub.xn--8nd9522gpe69cviva; \u0813.싉򄆻Ⴤ򂡐; [V7]; xn--oub.xn--8nd9522gpe69cviva; ; ;  # ࠓ.싉Ⴤ
+\uAA2C𑲫≮．⤂; \uAA2C𑲫≮.⤂; [V6]; xn--gdh1854cn19c.xn--kqi; ; ;  # ꨬ𑲫≮.⤂
+\uAA2C𑲫<\u0338．⤂; \uAA2C𑲫≮.⤂; [V6]; xn--gdh1854cn19c.xn--kqi; ; ;  # ꨬ𑲫≮.⤂
+\uAA2C𑲫≮.⤂; ; [V6]; xn--gdh1854cn19c.xn--kqi; ; ;  # ꨬ𑲫≮.⤂
+\uAA2C𑲫<\u0338.⤂; \uAA2C𑲫≮.⤂; [V6]; xn--gdh1854cn19c.xn--kqi; ; ;  # ꨬ𑲫≮.⤂
+xn--gdh1854cn19c.xn--kqi; \uAA2C𑲫≮.⤂; [V6]; xn--gdh1854cn19c.xn--kqi; ; ;  # ꨬ𑲫≮.⤂
+\u0604𐩔≮Ⴢ．Ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔<\u0338Ⴢ．Ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔≮Ⴢ.Ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔<\u0338Ⴢ.Ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔<\u0338ⴢ.ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔≮ⴢ.ⴃ; ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔≮Ⴢ.ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔<\u0338Ⴢ.ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+xn--mfb266l4khr54u.xn--ukj; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔<\u0338ⴢ．ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔≮ⴢ．ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔≮Ⴢ．ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+\u0604𐩔<\u0338Ⴢ．ⴃ; \u0604𐩔≮ⴢ.ⴃ; [B1, V7]; xn--mfb266l4khr54u.xn--ukj; ; ;  # 𐩔≮ⴢ.ⴃ
+xn--mfb416c0jox02t.xn--ukj; \u0604𐩔≮Ⴢ.ⴃ; [B1, V7]; xn--mfb416c0jox02t.xn--ukj; ; ;  # 𐩔≮Ⴢ.ⴃ
+xn--mfb416c0jox02t.xn--bnd; \u0604𐩔≮Ⴢ.Ⴃ; [B1, V7]; xn--mfb416c0jox02t.xn--bnd; ; ;  # 𐩔≮Ⴢ.Ⴃ
+𑁅。-; 𑁅.-; [V3, V6]; xn--210d.-; ; ;  # 𑁅.-
+xn--210d.-; 𑁅.-; [V3, V6]; xn--210d.-; ; ;  # 𑁅.-
+\u0DCA򕸽󠧱｡饈≠\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, V6, V7]; xn--h1c25913jfwov.xn--dib144ler5f; ; ;  # ්.饈≠٤
+\u0DCA򕸽󠧱｡饈=\u0338\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, V6, V7]; xn--h1c25913jfwov.xn--dib144ler5f; ; ;  # ්.饈≠٤
+\u0DCA򕸽󠧱。饈≠\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, V6, V7]; xn--h1c25913jfwov.xn--dib144ler5f; ; ;  # ්.饈≠٤
+\u0DCA򕸽󠧱。饈=\u0338\u0664; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, V6, V7]; xn--h1c25913jfwov.xn--dib144ler5f; ; ;  # ්.饈≠٤
+xn--h1c25913jfwov.xn--dib144ler5f; \u0DCA򕸽󠧱.饈≠\u0664; [B1, B5, B6, V6, V7]; xn--h1c25913jfwov.xn--dib144ler5f; ; ;  # ්.饈≠٤
+𞥃ᠠ⁷｡≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
+𞥃ᠠ⁷｡>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
+𞥃ᠠ7。≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
+𞥃ᠠ7。>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
+𞤡ᠠ7。>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
+𞤡ᠠ7。≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
+xn--7-v4j2826w.xn--4-ogoy01bou3i; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
+𞤡ᠠ⁷｡>\u0338邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
+𞤡ᠠ⁷｡≯邅⬻4; 𞥃ᠠ7.≯邅⬻4; [B1, B2]; xn--7-v4j2826w.xn--4-ogoy01bou3i; ; ;  # 𞥃ᠠ7.≯邅⬻4
+򠿯ᡳ-𑐻.𐹴𐋫\u0605󑎳; ; [B1, B6, V7]; xn----m9j3429kxmy7e.xn--nfb7950kdihrp812a; ; ;  # ᡳ-𑐻.𐹴𐋫
+xn----m9j3429kxmy7e.xn--nfb7950kdihrp812a; 򠿯ᡳ-𑐻.𐹴𐋫\u0605󑎳; [B1, B6, V7]; xn----m9j3429kxmy7e.xn--nfb7950kdihrp812a; ; ;  # ᡳ-𑐻.𐹴𐋫
+򠶆\u0845\u0A51.넨-󶧈; ; [B5, B6, V7]; xn--3vb26hb6834b.xn----i37ez0957g; ; ;  # ࡅੑ.넨-
+򠶆\u0845\u0A51.넨-󶧈; 򠶆\u0845\u0A51.넨-󶧈; [B5, B6, V7]; xn--3vb26hb6834b.xn----i37ez0957g; ; ;  # ࡅੑ.넨-
+xn--3vb26hb6834b.xn----i37ez0957g; 򠶆\u0845\u0A51.넨-󶧈; [B5, B6, V7]; xn--3vb26hb6834b.xn----i37ez0957g; ; ;  # ࡅੑ.넨-
+ꡦᡑ\u200D⒈。𐋣-; ꡦᡑ\u200D⒈.𐋣-; [C2, V3, V7]; xn--h8e470bl0d838o.xn----381i; ; xn--h8e863drj7h.xn----381i; [V3, V7] # ꡦᡑ⒈.𐋣-
+ꡦᡑ\u200D1.。𐋣-; ꡦᡑ\u200D1..𐋣-; [C2, V3, X4_2]; xn--1-o7j663bdl7m..xn----381i; [C2, V3, A4_2]; xn--1-o7j0610f..xn----381i; [V3, A4_2] # ꡦᡑ1..𐋣-
 xn--1-o7j0610f..xn----381i; ꡦᡑ1..𐋣-; [V3, X4_2]; xn--1-o7j0610f..xn----381i; [V3, A4_2]; ;  # ꡦᡑ1..𐋣-
-xn--1-o7j663bdl7m..xn----381i; ꡦᡑ‍1..𐋣-; [C2, V3, X4_2]; xn--1-o7j663bdl7m..xn----381i; [C2, V3, A4_2]; ;  # ꡦᡑ1..𐋣-
-xn--h8e863drj7h.xn----381i; ꡦᡑ⒈.𐋣-; [V3, V6]; xn--h8e863drj7h.xn----381i; ; ;  # ꡦᡑ⒈.𐋣-
-xn--h8e470bl0d838o.xn----381i; ꡦᡑ‍⒈.𐋣-; [C2, V3, V6]; xn--h8e470bl0d838o.xn----381i; ; ;  # ꡦᡑ⒈.𐋣-
-Ⴌ。􍼠ﭩ; Ⴌ.􍼠ٹ; [B5, B6, P1, V6]; xn--knd.xn--yib19191t; ; ;  # Ⴌ.ٹ
-Ⴌ。􍼠ٹ; Ⴌ.􍼠ٹ; [B5, B6, P1, V6]; xn--knd.xn--yib19191t; ; ;  # Ⴌ.ٹ
-ⴌ。􍼠ٹ; ⴌ.􍼠ٹ; [B5, B6, P1, V6]; xn--3kj.xn--yib19191t; ; ;  # ⴌ.ٹ
-xn--3kj.xn--yib19191t; ⴌ.􍼠ٹ; [B5, B6, V6]; xn--3kj.xn--yib19191t; ; ;  # ⴌ.ٹ
-xn--knd.xn--yib19191t; Ⴌ.􍼠ٹ; [B5, B6, V6]; xn--knd.xn--yib19191t; ; ;  # Ⴌ.ٹ
-ⴌ。􍼠ﭩ; ⴌ.􍼠ٹ; [B5, B6, P1, V6]; xn--3kj.xn--yib19191t; ; ;  # ⴌ.ٹ
-𐮁𐭱.྄፞-ᳺ; ; [B1, V5]; xn--r19c5a.xn----xjg270ag3m; ; ;  # 𐮁𐭱.྄፞-ᳺ
-xn--r19c5a.xn----xjg270ag3m; 𐮁𐭱.྄፞-ᳺ; [B1, V5]; xn--r19c5a.xn----xjg270ag3m; ; ;  # 𐮁𐭱.྄፞-ᳺ
-⒈䰹‍-。웈; ⒈䰹‍-.웈; [C2, P1, V3, V6]; xn----tgnx5rjr6c.xn--kp5b; ; xn----dcp160o.xn--kp5b; [P1, V3, V6] # ⒈䰹-.웈
-⒈䰹‍-。웈; ⒈䰹‍-.웈; [C2, P1, V3, V6]; xn----tgnx5rjr6c.xn--kp5b; ; xn----dcp160o.xn--kp5b; [P1, V3, V6] # ⒈䰹-.웈
-1.䰹‍-。웈; 1.䰹‍-.웈; [C2, V3]; 1.xn----tgnz80r.xn--kp5b; ; 1.xn----zw5a.xn--kp5b; [V3] # 1.䰹-.웈
-1.䰹‍-。웈; 1.䰹‍-.웈; [C2, V3]; 1.xn----tgnz80r.xn--kp5b; ; 1.xn----zw5a.xn--kp5b; [V3] # 1.䰹-.웈
+xn--1-o7j663bdl7m..xn----381i; ꡦᡑ\u200D1..𐋣-; [C2, V3, X4_2]; xn--1-o7j663bdl7m..xn----381i; [C2, V3, A4_2]; ;  # ꡦᡑ1..𐋣-
+xn--h8e863drj7h.xn----381i; ꡦᡑ⒈.𐋣-; [V3, V7]; xn--h8e863drj7h.xn----381i; ; ;  # ꡦᡑ⒈.𐋣-
+xn--h8e470bl0d838o.xn----381i; ꡦᡑ\u200D⒈.𐋣-; [C2, V3, V7]; xn--h8e470bl0d838o.xn----381i; ; ;  # ꡦᡑ⒈.𐋣-
+Ⴌ。􍼠\uFB69; ⴌ.􍼠\u0679; [B5, B6, V7]; xn--3kj.xn--yib19191t; ; ;  # ⴌ.ٹ
+Ⴌ。􍼠\u0679; ⴌ.􍼠\u0679; [B5, B6, V7]; xn--3kj.xn--yib19191t; ; ;  # ⴌ.ٹ
+ⴌ。􍼠\u0679; ⴌ.􍼠\u0679; [B5, B6, V7]; xn--3kj.xn--yib19191t; ; ;  # ⴌ.ٹ
+xn--3kj.xn--yib19191t; ⴌ.􍼠\u0679; [B5, B6, V7]; xn--3kj.xn--yib19191t; ; ;  # ⴌ.ٹ
+ⴌ。􍼠\uFB69; ⴌ.􍼠\u0679; [B5, B6, V7]; xn--3kj.xn--yib19191t; ; ;  # ⴌ.ٹ
+xn--knd.xn--yib19191t; Ⴌ.􍼠\u0679; [B5, B6, V7]; xn--knd.xn--yib19191t; ; ;  # Ⴌ.ٹ
+𐮁𐭱.\u0F84\u135E-ᳺ; ; [B1, V6]; xn--r19c5a.xn----xjg270ag3m; ; ;  # 𐮁𐭱.྄፞-ᳺ
+xn--r19c5a.xn----xjg270ag3m; 𐮁𐭱.\u0F84\u135E-ᳺ; [B1, V6]; xn--r19c5a.xn----xjg270ag3m; ; ;  # 𐮁𐭱.྄፞-ᳺ
+⒈䰹\u200D-。웈; ⒈䰹\u200D-.웈; [C2, V3, V7]; xn----tgnx5rjr6c.xn--kp5b; ; xn----dcp160o.xn--kp5b; [V3, V7] # ⒈䰹-.웈
+⒈䰹\u200D-。웈; ⒈䰹\u200D-.웈; [C2, V3, V7]; xn----tgnx5rjr6c.xn--kp5b; ; xn----dcp160o.xn--kp5b; [V3, V7] # ⒈䰹-.웈
+1.䰹\u200D-。웈; 1.䰹\u200D-.웈; [C2, V3]; 1.xn----tgnz80r.xn--kp5b; ; 1.xn----zw5a.xn--kp5b; [V3] # 1.䰹-.웈
+1.䰹\u200D-。웈; 1.䰹\u200D-.웈; [C2, V3]; 1.xn----tgnz80r.xn--kp5b; ; 1.xn----zw5a.xn--kp5b; [V3] # 1.䰹-.웈
 1.xn----zw5a.xn--kp5b; 1.䰹-.웈; [V3]; 1.xn----zw5a.xn--kp5b; ; ;  # 1.䰹-.웈
-1.xn----tgnz80r.xn--kp5b; 1.䰹‍-.웈; [C2, V3]; 1.xn----tgnz80r.xn--kp5b; ; ;  # 1.䰹-.웈
-xn----dcp160o.xn--kp5b; ⒈䰹-.웈; [V3, V6]; xn----dcp160o.xn--kp5b; ; ;  # ⒈䰹-.웈
-xn----tgnx5rjr6c.xn--kp5b; ⒈䰹‍-.웈; [C2, V3, V6]; xn----tgnx5rjr6c.xn--kp5b; ; ;  # ⒈䰹-.웈
-て。‌󠳽߳; て.‌󠳽߳; [C1, P1, V6]; xn--m9j.xn--rtb154j9l73w; ; xn--m9j.xn--rtb10784p; [P1, V6] # て.߳
-xn--m9j.xn--rtb10784p; て.󠳽߳; [V6]; xn--m9j.xn--rtb10784p; ; ;  # て.߳
-xn--m9j.xn--rtb154j9l73w; て.‌󠳽߳; [C1, V6]; xn--m9j.xn--rtb154j9l73w; ; ;  # て.߳
-ς｡꧀ۧ; ς.꧀ۧ; [V5]; xn--3xa.xn--3lb1944f; ; xn--4xa.xn--3lb1944f;  # ς.꧀ۧ
-ς。꧀ۧ; ς.꧀ۧ; [V5]; xn--3xa.xn--3lb1944f; ; xn--4xa.xn--3lb1944f;  # ς.꧀ۧ
-Σ。꧀ۧ; σ.꧀ۧ; [V5]; xn--4xa.xn--3lb1944f; ; ;  # σ.꧀ۧ
-σ。꧀ۧ; σ.꧀ۧ; [V5]; xn--4xa.xn--3lb1944f; ; ;  # σ.꧀ۧ
-xn--4xa.xn--3lb1944f; σ.꧀ۧ; [V5]; xn--4xa.xn--3lb1944f; ; ;  # σ.꧀ۧ
-xn--3xa.xn--3lb1944f; ς.꧀ۧ; [V5]; xn--3xa.xn--3lb1944f; ; ;  # ς.꧀ۧ
-Σ｡꧀ۧ; σ.꧀ۧ; [V5]; xn--4xa.xn--3lb1944f; ; ;  # σ.꧀ۧ
-σ｡꧀ۧ; σ.꧀ۧ; [V5]; xn--4xa.xn--3lb1944f; ; ;  # σ.꧀ۧ
-்󥫅򌉑.ႢႵ; ; [P1, V5, V6]; xn--xmc83135idcxza.xn--9md2b; ; ;  # ்.ႢႵ
-்󥫅򌉑.ⴂⴕ; ; [P1, V5, V6]; xn--xmc83135idcxza.xn--tkjwb; ; ;  # ்.ⴂⴕ
-்󥫅򌉑.Ⴂⴕ; ; [P1, V5, V6]; xn--xmc83135idcxza.xn--9md086l; ; ;  # ்.Ⴂⴕ
-xn--xmc83135idcxza.xn--9md086l; ்󥫅򌉑.Ⴂⴕ; [V5, V6]; xn--xmc83135idcxza.xn--9md086l; ; ;  # ்.Ⴂⴕ
-xn--xmc83135idcxza.xn--tkjwb; ்󥫅򌉑.ⴂⴕ; [V5, V6]; xn--xmc83135idcxza.xn--tkjwb; ; ;  # ்.ⴂⴕ
-xn--xmc83135idcxza.xn--9md2b; ்󥫅򌉑.ႢႵ; [V5, V6]; xn--xmc83135idcxza.xn--9md2b; ; ;  # ்.ႢႵ
-ᰲ🄈⾛֦．‍򯥤߽; ᰲ🄈走֦.‍򯥤߽; [C2, P1, V5, V6]; xn--xcb756i493fwi5o.xn--1tb334j1197q; ; xn--xcb756i493fwi5o.xn--1tb13454l; [P1, V5, V6] # ᰲ🄈走֦.߽
-ᰲ7,走֦.‍򯥤߽; ; [C2, P1, V5, V6]; xn--7,-bid991urn3k.xn--1tb334j1197q; ; xn--7,-bid991urn3k.xn--1tb13454l; [P1, V5, V6] # ᰲ7,走֦.߽
-xn--7,-bid991urn3k.xn--1tb13454l; ᰲ7,走֦.򯥤߽; [P1, V5, V6]; xn--7,-bid991urn3k.xn--1tb13454l; ; ;  # ᰲ7,走֦.߽
-xn--7,-bid991urn3k.xn--1tb334j1197q; ᰲ7,走֦.‍򯥤߽; [C2, P1, V5, V6]; xn--7,-bid991urn3k.xn--1tb334j1197q; ; ;  # ᰲ7,走֦.߽
-xn--xcb756i493fwi5o.xn--1tb13454l; ᰲ🄈走֦.򯥤߽; [V5, V6]; xn--xcb756i493fwi5o.xn--1tb13454l; ; ;  # ᰲ🄈走֦.߽
-xn--xcb756i493fwi5o.xn--1tb334j1197q; ᰲ🄈走֦.‍򯥤߽; [C2, V5, V6]; xn--xcb756i493fwi5o.xn--1tb334j1197q; ; ;  # ᰲ🄈走֦.߽
-ᢗ｡Ӏ񝄻; ᢗ.Ӏ񝄻; [P1, V6]; xn--hbf.xn--d5a86117e; ; ;  # ᢗ.Ӏ
-ᢗ。Ӏ񝄻; ᢗ.Ӏ񝄻; [P1, V6]; xn--hbf.xn--d5a86117e; ; ;  # ᢗ.Ӏ
-ᢗ。ӏ񝄻; ᢗ.ӏ񝄻; [P1, V6]; xn--hbf.xn--s5a83117e; ; ;  # ᢗ.ӏ
-xn--hbf.xn--s5a83117e; ᢗ.ӏ񝄻; [V6]; xn--hbf.xn--s5a83117e; ; ;  # ᢗ.ӏ
-xn--hbf.xn--d5a86117e; ᢗ.Ӏ񝄻; [V6]; xn--hbf.xn--d5a86117e; ; ;  # ᢗ.Ӏ
-ᢗ｡ӏ񝄻; ᢗ.ӏ񝄻; [P1, V6]; xn--hbf.xn--s5a83117e; ; ;  # ᢗ.ӏ
-٨-。񠏇🝆ᄾ; ٨-.񠏇🝆ᄾ; [B1, P1, V3, V6]; xn----oqc.xn--qrd1699v327w; ; ;  # ٨-.🝆ᄾ
-xn----oqc.xn--qrd1699v327w; ٨-.񠏇🝆ᄾ; [B1, V3, V6]; xn----oqc.xn--qrd1699v327w; ; ;  # ٨-.🝆ᄾ
--𐋷𖾑。󠆬; -𐋷𖾑.; [V3]; xn----991iq40y.; ; ;  # -𐋷𖾑.
-xn----991iq40y.; -𐋷𖾑.; [V3]; xn----991iq40y.; ; ;  # -𐋷𖾑.
-‌𐹳🐴멈.꯭񐡼; ; [B1, C1, P1, V5, V6]; xn--0ug6681d406b7bwk.xn--429a8682s; ; xn--422b325mqb6i.xn--429a8682s; [B1, P1, V5, V6] # 𐹳🐴멈.꯭
-‌𐹳🐴멈.꯭񐡼; ‌𐹳🐴멈.꯭񐡼; [B1, C1, P1, V5, V6]; xn--0ug6681d406b7bwk.xn--429a8682s; ; xn--422b325mqb6i.xn--429a8682s; [B1, P1, V5, V6] # 𐹳🐴멈.꯭
-xn--422b325mqb6i.xn--429a8682s; 𐹳🐴멈.꯭񐡼; [B1, V5, V6]; xn--422b325mqb6i.xn--429a8682s; ; ;  # 𐹳🐴멈.꯭
-xn--0ug6681d406b7bwk.xn--429a8682s; ‌𐹳🐴멈.꯭񐡼; [B1, C1, V5, V6]; xn--0ug6681d406b7bwk.xn--429a8682s; ; ;  # 𐹳🐴멈.꯭
-≮.ݩ؃; ; [B1, P1, V6]; xn--gdh.xn--lfb92e; ; ;  # ≮.ݩ
-≮.ݩ؃; ≮.ݩ؃; [B1, P1, V6]; xn--gdh.xn--lfb92e; ; ;  # ≮.ݩ
-xn--gdh.xn--lfb92e; ≮.ݩ؃; [B1, V6]; xn--gdh.xn--lfb92e; ; ;  # ≮.ݩ
-𐶭⾆｡‌𑚶򟱃𞰘; 𐶭舌.‌𑚶򟱃𞰘; [B1, B2, B3, C1, P1, V6]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; xn--tc1ao37z.xn--6e2dw557azds2d; [B2, B3, B5, B6, P1, V5, V6] # 舌.𑚶
-𐶭舌。‌𑚶򟱃𞰘; 𐶭舌.‌𑚶򟱃𞰘; [B1, B2, B3, C1, P1, V6]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; xn--tc1ao37z.xn--6e2dw557azds2d; [B2, B3, B5, B6, P1, V5, V6] # 舌.𑚶
-xn--tc1ao37z.xn--6e2dw557azds2d; 𐶭舌.𑚶򟱃𞰘; [B2, B3, B5, B6, V5, V6]; xn--tc1ao37z.xn--6e2dw557azds2d; ; ;  # 舌.𑚶
-xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; 𐶭舌.‌𑚶򟱃𞰘; [B1, B2, B3, C1, V6]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; ;  # 舌.𑚶
-‌Ⴠ-.𝟷ς𞴺ς; ‌Ⴠ-.1ς𞴺ς; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-ymba92321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1ς𞴺ς
-‌Ⴠ-.1ς𞴺ς; ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-ymba92321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1ς𞴺ς
-‌ⴠ-.1ς𞴺ς; ; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺ς
-‌Ⴠ-.1Σ𞴺Σ; ‌Ⴠ-.1σ𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1σ𞴺σ
-‌ⴠ-.1σ𞴺σ; ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1σ𞴺σ
-‌Ⴠ-.1σ𞴺Σ; ‌Ⴠ-.1σ𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1σ𞴺σ
-xn----z1g.xn--1-0mba52321c; Ⴠ-.1σ𞴺σ; [B1, B6, V3, V6]; xn----z1g.xn--1-0mba52321c; ; ;  # Ⴠ-.1σ𞴺σ
-xn----z1g168i.xn--1-0mba52321c; ‌Ⴠ-.1σ𞴺σ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; ;  # Ⴠ-.1σ𞴺σ
+1.xn----tgnz80r.xn--kp5b; 1.䰹\u200D-.웈; [C2, V3]; 1.xn----tgnz80r.xn--kp5b; ; ;  # 1.䰹-.웈
+xn----dcp160o.xn--kp5b; ⒈䰹-.웈; [V3, V7]; xn----dcp160o.xn--kp5b; ; ;  # ⒈䰹-.웈
+xn----tgnx5rjr6c.xn--kp5b; ⒈䰹\u200D-.웈; [C2, V3, V7]; xn----tgnx5rjr6c.xn--kp5b; ; ;  # ⒈䰹-.웈
+て。\u200C󠳽\u07F3; て.\u200C󠳽\u07F3; [C1, V7]; xn--m9j.xn--rtb154j9l73w; ; xn--m9j.xn--rtb10784p; [V7] # て.߳
+xn--m9j.xn--rtb10784p; て.󠳽\u07F3; [V7]; xn--m9j.xn--rtb10784p; ; ;  # て.߳
+xn--m9j.xn--rtb154j9l73w; て.\u200C󠳽\u07F3; [C1, V7]; xn--m9j.xn--rtb154j9l73w; ; ;  # て.߳
+ς｡\uA9C0\u06E7; ς.\uA9C0\u06E7; [V6]; xn--3xa.xn--3lb1944f; ; xn--4xa.xn--3lb1944f;  # ς.꧀ۧ
+ς。\uA9C0\u06E7; ς.\uA9C0\u06E7; [V6]; xn--3xa.xn--3lb1944f; ; xn--4xa.xn--3lb1944f;  # ς.꧀ۧ
+Σ。\uA9C0\u06E7; σ.\uA9C0\u06E7; [V6]; xn--4xa.xn--3lb1944f; ; ;  # σ.꧀ۧ
+σ。\uA9C0\u06E7; σ.\uA9C0\u06E7; [V6]; xn--4xa.xn--3lb1944f; ; ;  # σ.꧀ۧ
+xn--4xa.xn--3lb1944f; σ.\uA9C0\u06E7; [V6]; xn--4xa.xn--3lb1944f; ; ;  # σ.꧀ۧ
+xn--3xa.xn--3lb1944f; ς.\uA9C0\u06E7; [V6]; xn--3xa.xn--3lb1944f; ; ;  # ς.꧀ۧ
+Σ｡\uA9C0\u06E7; σ.\uA9C0\u06E7; [V6]; xn--4xa.xn--3lb1944f; ; ;  # σ.꧀ۧ
+σ｡\uA9C0\u06E7; σ.\uA9C0\u06E7; [V6]; xn--4xa.xn--3lb1944f; ; ;  # σ.꧀ۧ
+\u0BCD󥫅򌉑.ႢႵ; \u0BCD󥫅򌉑.ⴂⴕ; [V6, V7]; xn--xmc83135idcxza.xn--tkjwb; ; ;  # ்.ⴂⴕ
+\u0BCD󥫅򌉑.ⴂⴕ; ; [V6, V7]; xn--xmc83135idcxza.xn--tkjwb; ; ;  # ்.ⴂⴕ
+\u0BCD󥫅򌉑.Ⴂⴕ; \u0BCD󥫅򌉑.ⴂⴕ; [V6, V7]; xn--xmc83135idcxza.xn--tkjwb; ; ;  # ்.ⴂⴕ
+xn--xmc83135idcxza.xn--tkjwb; \u0BCD󥫅򌉑.ⴂⴕ; [V6, V7]; xn--xmc83135idcxza.xn--tkjwb; ; ;  # ்.ⴂⴕ
+xn--xmc83135idcxza.xn--9md086l; \u0BCD󥫅򌉑.Ⴂⴕ; [V6, V7]; xn--xmc83135idcxza.xn--9md086l; ; ;  # ்.Ⴂⴕ
+xn--xmc83135idcxza.xn--9md2b; \u0BCD󥫅򌉑.ႢႵ; [V6, V7]; xn--xmc83135idcxza.xn--9md2b; ; ;  # ்.ႢႵ
+\u1C32🄈⾛\u05A6．\u200D򯥤\u07FD; \u1C327,走\u05A6.\u200D򯥤\u07FD; [C2, V6, V7, U1]; xn--7,-bid991urn3k.xn--1tb334j1197q; ; xn--7,-bid991urn3k.xn--1tb13454l; [V6, V7, U1] # ᰲ7,走֦.߽
+\u1C327,走\u05A6.\u200D򯥤\u07FD; ; [C2, V6, V7, U1]; xn--7,-bid991urn3k.xn--1tb334j1197q; ; xn--7,-bid991urn3k.xn--1tb13454l; [V6, V7, U1] # ᰲ7,走֦.߽
+xn--7,-bid991urn3k.xn--1tb13454l; \u1C327,走\u05A6.򯥤\u07FD; [V6, V7, U1]; xn--7,-bid991urn3k.xn--1tb13454l; ; ;  # ᰲ7,走֦.߽
+xn--7,-bid991urn3k.xn--1tb334j1197q; \u1C327,走\u05A6.\u200D򯥤\u07FD; [C2, V6, V7, U1]; xn--7,-bid991urn3k.xn--1tb334j1197q; ; ;  # ᰲ7,走֦.߽
+xn--xcb756i493fwi5o.xn--1tb13454l; \u1C32🄈走\u05A6.򯥤\u07FD; [V6, V7]; xn--xcb756i493fwi5o.xn--1tb13454l; ; ;  # ᰲ🄈走֦.߽
+xn--xcb756i493fwi5o.xn--1tb334j1197q; \u1C32🄈走\u05A6.\u200D򯥤\u07FD; [C2, V6, V7]; xn--xcb756i493fwi5o.xn--1tb334j1197q; ; ;  # ᰲ🄈走֦.߽
+ᢗ｡Ӏ񝄻; ᢗ.ӏ񝄻; [V7]; xn--hbf.xn--s5a83117e; ; ;  # ᢗ.ӏ
+ᢗ。Ӏ񝄻; ᢗ.ӏ񝄻; [V7]; xn--hbf.xn--s5a83117e; ; ;  # ᢗ.ӏ
+ᢗ。ӏ񝄻; ᢗ.ӏ񝄻; [V7]; xn--hbf.xn--s5a83117e; ; ;  # ᢗ.ӏ
+xn--hbf.xn--s5a83117e; ᢗ.ӏ񝄻; [V7]; xn--hbf.xn--s5a83117e; ; ;  # ᢗ.ӏ
+ᢗ｡ӏ񝄻; ᢗ.ӏ񝄻; [V7]; xn--hbf.xn--s5a83117e; ; ;  # ᢗ.ӏ
+xn--hbf.xn--d5a86117e; ᢗ.Ӏ񝄻; [V7]; xn--hbf.xn--d5a86117e; ; ;  # ᢗ.Ӏ
+\u0668-。񠏇🝆ᄾ; \u0668-.񠏇🝆ᄾ; [B1, V3, V7]; xn----oqc.xn--qrd1699v327w; ; ;  # ٨-.🝆ᄾ
+xn----oqc.xn--qrd1699v327w; \u0668-.񠏇🝆ᄾ; [B1, V3, V7]; xn----oqc.xn--qrd1699v327w; ; ;  # ٨-.🝆ᄾ
+-𐋷𖾑。󠆬; -𐋷𖾑.; [V3]; xn----991iq40y.; [V3, A4_2]; ;  # -𐋷𖾑.
+xn----991iq40y.; -𐋷𖾑.; [V3]; xn----991iq40y.; [V3, A4_2]; ;  # -𐋷𖾑.
+\u200C𐹳🐴멈.\uABED񐡼; ; [B1, C1, V6, V7]; xn--0ug6681d406b7bwk.xn--429a8682s; ; xn--422b325mqb6i.xn--429a8682s; [B1, V6, V7] # 𐹳🐴멈.꯭
+\u200C𐹳🐴멈.\uABED񐡼; \u200C𐹳🐴멈.\uABED񐡼; [B1, C1, V6, V7]; xn--0ug6681d406b7bwk.xn--429a8682s; ; xn--422b325mqb6i.xn--429a8682s; [B1, V6, V7] # 𐹳🐴멈.꯭
+xn--422b325mqb6i.xn--429a8682s; 𐹳🐴멈.\uABED񐡼; [B1, V6, V7]; xn--422b325mqb6i.xn--429a8682s; ; ;  # 𐹳🐴멈.꯭
+xn--0ug6681d406b7bwk.xn--429a8682s; \u200C𐹳🐴멈.\uABED񐡼; [B1, C1, V6, V7]; xn--0ug6681d406b7bwk.xn--429a8682s; ; ;  # 𐹳🐴멈.꯭
+≮.\u0769\u0603; ; [B1, V7]; xn--gdh.xn--lfb92e; ; ;  # ≮.ݩ
+<\u0338.\u0769\u0603; ≮.\u0769\u0603; [B1, V7]; xn--gdh.xn--lfb92e; ; ;  # ≮.ݩ
+xn--gdh.xn--lfb92e; ≮.\u0769\u0603; [B1, V7]; xn--gdh.xn--lfb92e; ; ;  # ≮.ݩ
+𐶭⾆｡\u200C𑚶򟱃𞰘; 𐶭舌.\u200C𑚶򟱃𞰘; [B1, B2, B3, C1, V7]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; xn--tc1ao37z.xn--6e2dw557azds2d; [B2, B3, B5, B6, V6, V7] # 舌.𑚶
+𐶭舌。\u200C𑚶򟱃𞰘; 𐶭舌.\u200C𑚶򟱃𞰘; [B1, B2, B3, C1, V7]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; xn--tc1ao37z.xn--6e2dw557azds2d; [B2, B3, B5, B6, V6, V7] # 舌.𑚶
+xn--tc1ao37z.xn--6e2dw557azds2d; 𐶭舌.𑚶򟱃𞰘; [B2, B3, B5, B6, V6, V7]; xn--tc1ao37z.xn--6e2dw557azds2d; ; ;  # 舌.𑚶
+xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; 𐶭舌.\u200C𑚶򟱃𞰘; [B1, B2, B3, C1, V7]; xn--tc1ao37z.xn--0ugx728gi1nfwqz2e; ; ;  # 舌.𑚶
+\u200CჀ-.𝟷ς𞴺ς; \u200Cⴠ-.1ς𞴺ς; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺ς
+\u200CჀ-.1ς𞴺ς; \u200Cⴠ-.1ς𞴺ς; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺ς
+\u200Cⴠ-.1ς𞴺ς; ; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺ς
+\u200CჀ-.1Σ𞴺Σ; \u200Cⴠ-.1σ𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1σ𞴺σ
+\u200Cⴠ-.1σ𞴺σ; ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1σ𞴺σ
+\u200CჀ-.1σ𞴺Σ; \u200Cⴠ-.1σ𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1σ𞴺σ
 xn----2ws.xn--1-0mba52321c; ⴠ-.1σ𞴺σ; [B1, B6, V3]; xn----2ws.xn--1-0mba52321c; ; ;  # ⴠ-.1σ𞴺σ
-xn----rgn530d.xn--1-0mba52321c; ‌ⴠ-.1σ𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; ;  # ⴠ-.1σ𞴺σ
-‌Ⴠ-.1ς𞴺Σ; ‌Ⴠ-.1ς𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-ymbd52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1ς𞴺σ
-‌ⴠ-.1ς𞴺σ; ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺σ
-xn----rgn530d.xn--1-ymbd52321c; ‌ⴠ-.1ς𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; ;  # ⴠ-.1ς𞴺σ
-xn----z1g168i.xn--1-ymbd52321c; ‌Ⴠ-.1ς𞴺σ; [B1, C1, V3, V6]; xn----z1g168i.xn--1-ymbd52321c; ; ;  # Ⴠ-.1ς𞴺σ
-xn----rgn530d.xn--1-ymba92321c; ‌ⴠ-.1ς𞴺ς; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; ;  # ⴠ-.1ς𞴺ς
-xn----z1g168i.xn--1-ymba92321c; ‌Ⴠ-.1ς𞴺ς; [B1, C1, V3, V6]; xn----z1g168i.xn--1-ymba92321c; ; ;  # Ⴠ-.1ς𞴺ς
-‌ⴠ-.𝟷ς𞴺ς; ‌ⴠ-.1ς𞴺ς; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺ς
-‌Ⴠ-.𝟷Σ𞴺Σ; ‌Ⴠ-.1σ𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1σ𞴺σ
-‌ⴠ-.𝟷σ𞴺σ; ‌ⴠ-.1σ𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1σ𞴺σ
-‌Ⴠ-.𝟷σ𞴺Σ; ‌Ⴠ-.1σ𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-0mba52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1σ𞴺σ
-‌Ⴠ-.𝟷ς𞴺Σ; ‌Ⴠ-.1ς𞴺σ; [B1, C1, P1, V3, V6]; xn----z1g168i.xn--1-ymbd52321c; ; xn----z1g.xn--1-0mba52321c; [B1, B6, P1, V3, V6] # Ⴠ-.1ς𞴺σ
-‌ⴠ-.𝟷ς𞴺σ; ‌ⴠ-.1ς𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺σ
-𑲘󠄒𓑡｡𝟪Ⴜ; 𑲘𓑡.8Ⴜ; [P1, V5, V6]; xn--7m3d291b.xn--8-s1g; ; ;  # 𑲘.8Ⴜ
-𑲘󠄒𓑡。8Ⴜ; 𑲘𓑡.8Ⴜ; [P1, V5, V6]; xn--7m3d291b.xn--8-s1g; ; ;  # 𑲘.8Ⴜ
-𑲘󠄒𓑡。8ⴜ; 𑲘𓑡.8ⴜ; [P1, V5, V6]; xn--7m3d291b.xn--8-vws; ; ;  # 𑲘.8ⴜ
-xn--7m3d291b.xn--8-vws; 𑲘𓑡.8ⴜ; [V5, V6]; xn--7m3d291b.xn--8-vws; ; ;  # 𑲘.8ⴜ
-xn--7m3d291b.xn--8-s1g; 𑲘𓑡.8Ⴜ; [V5, V6]; xn--7m3d291b.xn--8-s1g; ; ;  # 𑲘.8Ⴜ
-𑲘󠄒𓑡｡𝟪ⴜ; 𑲘𓑡.8ⴜ; [P1, V5, V6]; xn--7m3d291b.xn--8-vws; ; ;  # 𑲘.8ⴜ
-䪏ګߠु｡뭕ᢝឹ; 䪏ګߠु.뭕ᢝឹ; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ;  # 䪏ګߠु.뭕ᢝឹ
-䪏ګߠु｡뭕ᢝឹ; 䪏ګߠु.뭕ᢝឹ; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ;  # 䪏ګߠु.뭕ᢝឹ
-䪏ګߠु。뭕ᢝឹ; 䪏ګߠु.뭕ᢝឹ; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ;  # 䪏ګߠु.뭕ᢝឹ
-䪏ګߠु。뭕ᢝឹ; 䪏ګߠु.뭕ᢝឹ; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ;  # 䪏ګߠु.뭕ᢝឹ
-xn--ekb23dj4at01n.xn--43e96bh910b; 䪏ګߠु.뭕ᢝឹ; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ;  # 䪏ګߠु.뭕ᢝឹ
-᮫｡🂉󠁰; ᮫.🂉󠁰; [P1, V5, V6]; xn--zxf.xn--fx7ho0250c; ; ;  # ᮫.🂉
-᮫。🂉󠁰; ᮫.🂉󠁰; [P1, V5, V6]; xn--zxf.xn--fx7ho0250c; ; ;  # ᮫.🂉
-xn--zxf.xn--fx7ho0250c; ᮫.🂉󠁰; [V5, V6]; xn--zxf.xn--fx7ho0250c; ; ;  # ᮫.🂉
-󩎃ૄ。ς‍𐹮𑈵; 󩎃ૄ.ς‍𐹮𑈵; [B5, C2, P1, V6]; xn--dfc53161q.xn--3xa006lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, P1, V6] # ૄ.ς𐹮𑈵
-󩎃ૄ。Σ‍𐹮𑈵; 󩎃ૄ.σ‍𐹮𑈵; [B5, C2, P1, V6]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, P1, V6] # ૄ.σ𐹮𑈵
-󩎃ૄ。σ‍𐹮𑈵; 󩎃ૄ.σ‍𐹮𑈵; [B5, C2, P1, V6]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, P1, V6] # ૄ.σ𐹮𑈵
-xn--dfc53161q.xn--4xa8467k5mc; 󩎃ૄ.σ𐹮𑈵; [B5, V6]; xn--dfc53161q.xn--4xa8467k5mc; ; ;  # ૄ.σ𐹮𑈵
-xn--dfc53161q.xn--4xa895lzo7nsfd; 󩎃ૄ.σ‍𐹮𑈵; [B5, C2, V6]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; ;  # ૄ.σ𐹮𑈵
-xn--dfc53161q.xn--3xa006lzo7nsfd; 󩎃ૄ.ς‍𐹮𑈵; [B5, C2, V6]; xn--dfc53161q.xn--3xa006lzo7nsfd; ; ;  # ૄ.ς𐹮𑈵
-𐫀ᡂ𑜫．𑘿; 𐫀ᡂ𑜫.𑘿; [B1, B2, B3, B6, V5]; xn--17e9625js1h.xn--sb2d; ; ;  # 𐫀ᡂ𑜫.𑘿
-𐫀ᡂ𑜫.𑘿; ; [B1, B2, B3, B6, V5]; xn--17e9625js1h.xn--sb2d; ; ;  # 𐫀ᡂ𑜫.𑘿
-xn--17e9625js1h.xn--sb2d; 𐫀ᡂ𑜫.𑘿; [B1, B2, B3, B6, V5]; xn--17e9625js1h.xn--sb2d; ; ;  # 𐫀ᡂ𑜫.𑘿
-󬚶󸋖򖩰-。‌; 󬚶󸋖򖩰-.‌; [C1, P1, V3, V6]; xn----7i12hu122k9ire.xn--0ug; ; xn----7i12hu122k9ire.; [P1, V3, V6] # -.
-xn----7i12hu122k9ire.; 󬚶󸋖򖩰-.; [V3, V6]; xn----7i12hu122k9ire.; ; ;  # -.
-xn----7i12hu122k9ire.xn--0ug; 󬚶󸋖򖩰-.‌; [C1, V3, V6]; xn----7i12hu122k9ire.xn--0ug; ; ;  # -.
-𐹣．߂; 𐹣.߂; [B1]; xn--bo0d.xn--dsb; ; ;  # 𐹣.߂
-𐹣.߂; ; [B1]; xn--bo0d.xn--dsb; ; ;  # 𐹣.߂
-xn--bo0d.xn--dsb; 𐹣.߂; [B1]; xn--bo0d.xn--dsb; ; ;  # 𐹣.߂
--ߡ｡Ↄ; -ߡ.Ↄ; [B1, P1, V3, V6]; xn----8cd.xn--q5g; ; ;  # -ߡ.Ↄ
--ߡ。Ↄ; -ߡ.Ↄ; [B1, P1, V3, V6]; xn----8cd.xn--q5g; ; ;  # -ߡ.Ↄ
--ߡ。ↄ; -ߡ.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ;  # -ߡ.ↄ
-xn----8cd.xn--r5g; -ߡ.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ;  # -ߡ.ↄ
-xn----8cd.xn--q5g; -ߡ.Ↄ; [B1, V3, V6]; xn----8cd.xn--q5g; ; ;  # -ߡ.Ↄ
--ߡ｡ↄ; -ߡ.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ;  # -ߡ.ↄ
-‍-︒󠄄。ß哑‌𐵿; ‍-︒.ß哑‌𐵿; [B1, B5, B6, C1, C2, P1, V6]; xn----tgnt341h.xn--zca670n5f0binyk; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6] # -︒.ß哑
-‍-。󠄄。ß哑‌𐵿; ‍-..ß哑‌𐵿; [B1, B5, B6, C1, C2, P1, V3, V6, X4_2]; xn----tgn..xn--zca670n5f0binyk; [B1, B5, B6, C1, C2, P1, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6, A4_2] # -..ß哑
-‍-。󠄄。SS哑‌𐵿; ‍-..ss哑‌𐵿; [B1, B5, B6, C1, C2, P1, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, P1, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6, A4_2] # -..ss哑
-‍-。󠄄。ss哑‌𐵿; ‍-..ss哑‌𐵿; [B1, B5, B6, C1, C2, P1, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, P1, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6, A4_2] # -..ss哑
-‍-。󠄄。Ss哑‌𐵿; ‍-..ss哑‌𐵿; [B1, B5, B6, C1, C2, P1, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, P1, V3, V6, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6, A4_2] # -..ss哑
--..xn--ss-h46c5711e; -..ss哑𐵿; [B1, B5, B6, V3, V6, X4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, V6, A4_2]; ;  # -..ss哑
-xn----tgn..xn--ss-k1ts75zb8ym; ‍-..ss哑‌𐵿; [B1, B5, B6, C1, C2, V3, V6, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, V6, A4_2]; ;  # -..ss哑
-xn----tgn..xn--zca670n5f0binyk; ‍-..ß哑‌𐵿; [B1, B5, B6, C1, C2, V3, V6, X4_2]; xn----tgn..xn--zca670n5f0binyk; [B1, B5, B6, C1, C2, V3, V6, A4_2]; ;  # -..ß哑
-‍-︒󠄄。SS哑‌𐵿; ‍-︒.ss哑‌𐵿; [B1, B5, B6, C1, C2, P1, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6] # -︒.ss哑
-‍-︒󠄄。ss哑‌𐵿; ‍-︒.ss哑‌𐵿; [B1, B5, B6, C1, C2, P1, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6] # -︒.ss哑
-‍-︒󠄄。Ss哑‌𐵿; ‍-︒.ss哑‌𐵿; [B1, B5, B6, C1, C2, P1, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, P1, V3, V6] # -︒.ss哑
-xn----o89h.xn--ss-h46c5711e; -︒.ss哑𐵿; [B1, B5, B6, V3, V6]; xn----o89h.xn--ss-h46c5711e; ; ;  # -︒.ss哑
-xn----tgnt341h.xn--ss-k1ts75zb8ym; ‍-︒.ss哑‌𐵿; [B1, B5, B6, C1, C2, V6]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; ;  # -︒.ss哑
-xn----tgnt341h.xn--zca670n5f0binyk; ‍-︒.ß哑‌𐵿; [B1, B5, B6, C1, C2, V6]; xn----tgnt341h.xn--zca670n5f0binyk; ; ;  # -︒.ß哑
-︒．𑑂︯; ︒.𑑂︯; [P1, V5, V6]; xn--y86c.xn--s96cu30b; ; ;  # ︒.𑑂︯
-︒．𑑂︯; ︒.𑑂︯; [P1, V5, V6]; xn--y86c.xn--s96cu30b; ; ;  # ︒.𑑂︯
-。.𑑂︯; ..𑑂︯; [V5, X4_2]; ..xn--s96cu30b; [V5, A4_2]; ;  # ..𑑂︯
-..xn--s96cu30b; ..𑑂︯; [V5, X4_2]; ..xn--s96cu30b; [V5, A4_2]; ;  # ..𑑂︯
-xn--y86c.xn--s96cu30b; ︒.𑑂︯; [V5, V6]; xn--y86c.xn--s96cu30b; ; ;  # ︒.𑑂︯
-꤬。‍; ꤬.‍; [C2, V5]; xn--zi9a.xn--1ug; ; xn--zi9a.; [V5] # ꤬.
-xn--zi9a.; ꤬.; [V5]; xn--zi9a.; ; ;  # ꤬.
-xn--zi9a.xn--1ug; ꤬.‍; [C2, V5]; xn--zi9a.xn--1ug; ; ;  # ꤬.
-‍󠸡｡ﳗ; ‍󠸡.هج; [B1, C2, P1, V6]; xn--1ug80651l.xn--rgb7c; ; xn--d356e.xn--rgb7c; [B1, P1, V6] # .هج
-‍󠸡。هج; ‍󠸡.هج; [B1, C2, P1, V6]; xn--1ug80651l.xn--rgb7c; ; xn--d356e.xn--rgb7c; [B1, P1, V6] # .هج
-xn--d356e.xn--rgb7c; 󠸡.هج; [B1, V6]; xn--d356e.xn--rgb7c; ; ;  # .هج
-xn--1ug80651l.xn--rgb7c; ‍󠸡.هج; [B1, C2, V6]; xn--1ug80651l.xn--rgb7c; ; ;  # .هج
--Ⴄ𝟢٣．𑍴ς; -Ⴄ0٣.𑍴ς; [B1, P1, V3, V5, V6]; xn---0-iyd216h.xn--3xa1220l; ; xn---0-iyd216h.xn--4xa9120l;  # -Ⴄ0٣.𑍴ς
--Ⴄ0٣.𑍴ς; ; [B1, P1, V3, V5, V6]; xn---0-iyd216h.xn--3xa1220l; ; xn---0-iyd216h.xn--4xa9120l;  # -Ⴄ0٣.𑍴ς
--ⴄ0٣.𑍴ς; ; [B1, V3, V5]; xn---0-iyd8660b.xn--3xa1220l; ; xn---0-iyd8660b.xn--4xa9120l;  # -ⴄ0٣.𑍴ς
--Ⴄ0٣.𑍴Σ; -Ⴄ0٣.𑍴σ; [B1, P1, V3, V5, V6]; xn---0-iyd216h.xn--4xa9120l; ; ;  # -Ⴄ0٣.𑍴σ
--ⴄ0٣.𑍴σ; ; [B1, V3, V5]; xn---0-iyd8660b.xn--4xa9120l; ; ;  # -ⴄ0٣.𑍴σ
-xn---0-iyd8660b.xn--4xa9120l; -ⴄ0٣.𑍴σ; [B1, V3, V5]; xn---0-iyd8660b.xn--4xa9120l; ; ;  # -ⴄ0٣.𑍴σ
-xn---0-iyd216h.xn--4xa9120l; -Ⴄ0٣.𑍴σ; [B1, V3, V5, V6]; xn---0-iyd216h.xn--4xa9120l; ; ;  # -Ⴄ0٣.𑍴σ
-xn---0-iyd8660b.xn--3xa1220l; -ⴄ0٣.𑍴ς; [B1, V3, V5]; xn---0-iyd8660b.xn--3xa1220l; ; ;  # -ⴄ0٣.𑍴ς
-xn---0-iyd216h.xn--3xa1220l; -Ⴄ0٣.𑍴ς; [B1, V3, V5, V6]; xn---0-iyd216h.xn--3xa1220l; ; ;  # -Ⴄ0٣.𑍴ς
--ⴄ𝟢٣．𑍴ς; -ⴄ0٣.𑍴ς; [B1, V3, V5]; xn---0-iyd8660b.xn--3xa1220l; ; xn---0-iyd8660b.xn--4xa9120l;  # -ⴄ0٣.𑍴ς
--Ⴄ𝟢٣．𑍴Σ; -Ⴄ0٣.𑍴σ; [B1, P1, V3, V5, V6]; xn---0-iyd216h.xn--4xa9120l; ; ;  # -Ⴄ0٣.𑍴σ
--ⴄ𝟢٣．𑍴σ; -ⴄ0٣.𑍴σ; [B1, V3, V5]; xn---0-iyd8660b.xn--4xa9120l; ; ;  # -ⴄ0٣.𑍴σ
-󦈄。-; 󦈄.-; [P1, V3, V6]; xn--xm38e.-; ; ;  # .-
-xn--xm38e.-; 󦈄.-; [V3, V6]; xn--xm38e.-; ; ;  # .-
-⋠𐋮．򶈮༘ß≯; ⋠𐋮.򶈮༘ß≯; [P1, V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a;  # ⋠𐋮.༘ß≯
-⋠𐋮．򶈮༘ß≯; ⋠𐋮.򶈮༘ß≯; [P1, V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a;  # ⋠𐋮.༘ß≯
-⋠𐋮.򶈮༘ß≯; ; [P1, V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a;  # ⋠𐋮.༘ß≯
-⋠𐋮.򶈮༘ß≯; ⋠𐋮.򶈮༘ß≯; [P1, V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a;  # ⋠𐋮.༘ß≯
-⋠𐋮.򶈮༘SS≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-⋠𐋮.򶈮༘SS≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-⋠𐋮.򶈮༘ss≯; ; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-⋠𐋮.򶈮༘ss≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-⋠𐋮.򶈮༘Ss≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-⋠𐋮.򶈮༘Ss≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-xn--pgh4639f.xn--ss-ifj426nle504a; ⋠𐋮.򶈮༘ss≯; [V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-xn--pgh4639f.xn--zca593eo6oc013y; ⋠𐋮.򶈮༘ß≯; [V6]; xn--pgh4639f.xn--zca593eo6oc013y; ; ;  # ⋠𐋮.༘ß≯
-⋠𐋮．򶈮༘SS≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-⋠𐋮．򶈮༘SS≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-⋠𐋮．򶈮༘ss≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-⋠𐋮．򶈮༘ss≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-⋠𐋮．򶈮༘Ss≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-⋠𐋮．򶈮༘Ss≯; ⋠𐋮.򶈮༘ss≯; [P1, V6]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
-1𐋸٤｡󠢮ﮤ񷝊; 1𐋸٤.󠢮ۀ񷝊; [B1, P1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ;  # 1𐋸٤.ۀ
-1𐋸٤。󠢮ۀ񷝊; 1𐋸٤.󠢮ۀ񷝊; [B1, P1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ;  # 1𐋸٤.ۀ
-1𐋸٤。󠢮ۀ񷝊; 1𐋸٤.󠢮ۀ񷝊; [B1, P1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ;  # 1𐋸٤.ۀ
-xn--1-hqc3905q.xn--zkb83268gqee4a; 1𐋸٤.󠢮ۀ񷝊; [B1, V6]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ;  # 1𐋸٤.ۀ
-儭-｡𐹴Ⴢ񥳠‌; 儭-.𐹴Ⴢ񥳠‌; [B1, B6, C1, P1, V3, V6]; xn----gz7a.xn--6nd249ejl4pusr7b; ; xn----gz7a.xn--6nd5001kyw98a; [B1, B6, P1, V3, V6] # 儭-.𐹴Ⴢ
-儭-。𐹴Ⴢ񥳠‌; 儭-.𐹴Ⴢ񥳠‌; [B1, B6, C1, P1, V3, V6]; xn----gz7a.xn--6nd249ejl4pusr7b; ; xn----gz7a.xn--6nd5001kyw98a; [B1, B6, P1, V3, V6] # 儭-.𐹴Ⴢ
-儭-。𐹴ⴢ񥳠‌; 儭-.𐹴ⴢ񥳠‌; [B1, B6, C1, P1, V3, V6]; xn----gz7a.xn--0ug472cfq0pus98b; ; xn----gz7a.xn--qlj9223eywx0b; [B1, B6, P1, V3, V6] # 儭-.𐹴ⴢ
-xn----gz7a.xn--qlj9223eywx0b; 儭-.𐹴ⴢ񥳠; [B1, B6, V3, V6]; xn----gz7a.xn--qlj9223eywx0b; ; ;  # 儭-.𐹴ⴢ
-xn----gz7a.xn--0ug472cfq0pus98b; 儭-.𐹴ⴢ񥳠‌; [B1, B6, C1, V3, V6]; xn----gz7a.xn--0ug472cfq0pus98b; ; ;  # 儭-.𐹴ⴢ
-xn----gz7a.xn--6nd5001kyw98a; 儭-.𐹴Ⴢ񥳠; [B1, B6, V3, V6]; xn----gz7a.xn--6nd5001kyw98a; ; ;  # 儭-.𐹴Ⴢ
-xn----gz7a.xn--6nd249ejl4pusr7b; 儭-.𐹴Ⴢ񥳠‌; [B1, B6, C1, V3, V6]; xn----gz7a.xn--6nd249ejl4pusr7b; ; ;  # 儭-.𐹴Ⴢ
-儭-｡𐹴ⴢ񥳠‌; 儭-.𐹴ⴢ񥳠‌; [B1, B6, C1, P1, V3, V6]; xn----gz7a.xn--0ug472cfq0pus98b; ; xn----gz7a.xn--qlj9223eywx0b; [B1, B6, P1, V3, V6] # 儭-.𐹴ⴢ
-𝟺𐋷ڹ．𞤭򿍡; 4𐋷ڹ.𞤭򿍡; [B1, B2, B3, P1, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ;  # 4𐋷ڹ.𞤭
-4𐋷ڹ.𞤭򿍡; ; [B1, B2, B3, P1, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ;  # 4𐋷ڹ.𞤭
-4𐋷ڹ.𞤋򿍡; 4𐋷ڹ.𞤭򿍡; [B1, B2, B3, P1, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ;  # 4𐋷ڹ.𞤭
-xn--4-cvc5384q.xn--le6hi7322b; 4𐋷ڹ.𞤭򿍡; [B1, B2, B3, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ;  # 4𐋷ڹ.𞤭
-𝟺𐋷ڹ．𞤋򿍡; 4𐋷ڹ.𞤭򿍡; [B1, B2, B3, P1, V6]; xn--4-cvc5384q.xn--le6hi7322b; ; ;  # 4𐋷ڹ.𞤭
-≯-ꡋ𑲣.⒈𐹭; ; [B1, P1, V6]; xn----ogox061d5i8d.xn--tsh0666f; ; ;  # ≯-ꡋ𑲣.⒈𐹭
-≯-ꡋ𑲣.⒈𐹭; ≯-ꡋ𑲣.⒈𐹭; [B1, P1, V6]; xn----ogox061d5i8d.xn--tsh0666f; ; ;  # ≯-ꡋ𑲣.⒈𐹭
-≯-ꡋ𑲣.1.𐹭; ; [B1, P1, V6]; xn----ogox061d5i8d.1.xn--lo0d; ; ;  # ≯-ꡋ𑲣.1.𐹭
-≯-ꡋ𑲣.1.𐹭; ≯-ꡋ𑲣.1.𐹭; [B1, P1, V6]; xn----ogox061d5i8d.1.xn--lo0d; ; ;  # ≯-ꡋ𑲣.1.𐹭
-xn----ogox061d5i8d.1.xn--lo0d; ≯-ꡋ𑲣.1.𐹭; [B1, V6]; xn----ogox061d5i8d.1.xn--lo0d; ; ;  # ≯-ꡋ𑲣.1.𐹭
-xn----ogox061d5i8d.xn--tsh0666f; ≯-ꡋ𑲣.⒈𐹭; [B1, V6]; xn----ogox061d5i8d.xn--tsh0666f; ; ;  # ≯-ꡋ𑲣.⒈𐹭
-̰．󰜱蚀; ̰.󰜱蚀; [P1, V5, V6]; xn--xta.xn--e91aw9417e; ; ;  # ̰.蚀
-̰.󰜱蚀; ; [P1, V5, V6]; xn--xta.xn--e91aw9417e; ; ;  # ̰.蚀
-xn--xta.xn--e91aw9417e; ̰.󰜱蚀; [V5, V6]; xn--xta.xn--e91aw9417e; ; ;  # ̰.蚀
-יּႸ.𞡼𑇀ß⃗; יּႸ.𞡼𑇀ß⃗; [B2, B3, P1, V6]; xn--kdb1d867b.xn--zca284nhg9nrrxg; ; xn--kdb1d867b.xn--ss-yju5690ken9h;  # יּႸ.𞡼𑇀ß⃗
-יּႸ.𞡼𑇀ß⃗; ; [B2, B3, P1, V6]; xn--kdb1d867b.xn--zca284nhg9nrrxg; ; xn--kdb1d867b.xn--ss-yju5690ken9h;  # יּႸ.𞡼𑇀ß⃗
-יּⴘ.𞡼𑇀ß⃗; ; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; xn--kdb1d278n.xn--ss-yju5690ken9h;  # יּⴘ.𞡼𑇀ß⃗
-יּႸ.𞡼𑇀SS⃗; יּႸ.𞡼𑇀ss⃗; [B2, B3, P1, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ;  # יּႸ.𞡼𑇀ss⃗
-יּⴘ.𞡼𑇀ss⃗; ; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ;  # יּⴘ.𞡼𑇀ss⃗
-xn--kdb1d278n.xn--ss-yju5690ken9h; יּⴘ.𞡼𑇀ss⃗; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ;  # יּⴘ.𞡼𑇀ss⃗
-xn--kdb1d867b.xn--ss-yju5690ken9h; יּႸ.𞡼𑇀ss⃗; [B2, B3, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ;  # יּႸ.𞡼𑇀ss⃗
-xn--kdb1d278n.xn--zca284nhg9nrrxg; יּⴘ.𞡼𑇀ß⃗; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; ;  # יּⴘ.𞡼𑇀ß⃗
-xn--kdb1d867b.xn--zca284nhg9nrrxg; יּႸ.𞡼𑇀ß⃗; [B2, B3, V6]; xn--kdb1d867b.xn--zca284nhg9nrrxg; ; ;  # יּႸ.𞡼𑇀ß⃗
-יּⴘ.𞡼𑇀ß⃗; יּⴘ.𞡼𑇀ß⃗; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; xn--kdb1d278n.xn--ss-yju5690ken9h;  # יּⴘ.𞡼𑇀ß⃗
-יּႸ.𞡼𑇀SS⃗; יּႸ.𞡼𑇀ss⃗; [B2, B3, P1, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ;  # יּႸ.𞡼𑇀ss⃗
-יּⴘ.𞡼𑇀ss⃗; יּⴘ.𞡼𑇀ss⃗; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ;  # יּⴘ.𞡼𑇀ss⃗
-יּႸ.𞡼𑇀ss⃗; ; [B2, B3, P1, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ;  # יּႸ.𞡼𑇀ss⃗
-יּႸ.𞡼𑇀ss⃗; יּႸ.𞡼𑇀ss⃗; [B2, B3, P1, V6]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ;  # יּႸ.𞡼𑇀ss⃗
-ᮣ𐹰򁱓｡凬; ᮣ𐹰򁱓.凬; [B1, P1, V5, V6]; xn--rxfz314ilg20c.xn--t9q; ; ;  # ᮣ𐹰.凬
-ᮣ𐹰򁱓。凬; ᮣ𐹰򁱓.凬; [B1, P1, V5, V6]; xn--rxfz314ilg20c.xn--t9q; ; ;  # ᮣ𐹰.凬
-xn--rxfz314ilg20c.xn--t9q; ᮣ𐹰򁱓.凬; [B1, V5, V6]; xn--rxfz314ilg20c.xn--t9q; ; ;  # ᮣ𐹰.凬
-🢟🄈‍ꡎ｡྄; 🢟🄈‍ꡎ.྄; [C2, P1, V5, V6]; xn--1ug4874cfd0kbmg.xn--3ed; ; xn--nc9aq743ds0e.xn--3ed; [P1, V5, V6] # 🢟🄈ꡎ.྄
-🢟7,‍ꡎ。྄; 🢟7,‍ꡎ.྄; [C2, P1, V5, V6]; xn--7,-n1t0654eqo3o.xn--3ed; ; xn--7,-gh9hg322i.xn--3ed; [P1, V5, V6] # 🢟7,ꡎ.྄
-xn--7,-gh9hg322i.xn--3ed; 🢟7,ꡎ.྄; [P1, V5, V6]; xn--7,-gh9hg322i.xn--3ed; ; ;  # 🢟7,ꡎ.྄
-xn--7,-n1t0654eqo3o.xn--3ed; 🢟7,‍ꡎ.྄; [C2, P1, V5, V6]; xn--7,-n1t0654eqo3o.xn--3ed; ; ;  # 🢟7,ꡎ.྄
-xn--nc9aq743ds0e.xn--3ed; 🢟🄈ꡎ.྄; [V5, V6]; xn--nc9aq743ds0e.xn--3ed; ; ;  # 🢟🄈ꡎ.྄
-xn--1ug4874cfd0kbmg.xn--3ed; 🢟🄈‍ꡎ.྄; [C2, V5, V6]; xn--1ug4874cfd0kbmg.xn--3ed; ; ;  # 🢟🄈ꡎ.྄
-ꡔ。္ᢇ; ꡔ.္ᢇ; [V5]; xn--tc9a.xn--9jd663b; ; ;  # ꡔ.္ᢇ
-xn--tc9a.xn--9jd663b; ꡔ.္ᢇ; [V5]; xn--tc9a.xn--9jd663b; ; ;  # ꡔ.္ᢇ
-⃫≮.𝨖; ; [P1, V5, V6]; xn--e1g71d.xn--772h; ; ;  # ⃫≮.𝨖
-⃫≮.𝨖; ⃫≮.𝨖; [P1, V5, V6]; xn--e1g71d.xn--772h; ; ;  # ⃫≮.𝨖
-xn--e1g71d.xn--772h; ⃫≮.𝨖; [V5, V6]; xn--e1g71d.xn--772h; ; ;  # ⃫≮.𝨖
-Ⴢ≯褦．ᠪߪႾݧ; Ⴢ≯褦.ᠪߪႾݧ; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ;  # Ⴢ≯褦.ᠪߪႾݧ
-Ⴢ≯褦．ᠪߪႾݧ; Ⴢ≯褦.ᠪߪႾݧ; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ;  # Ⴢ≯褦.ᠪߪႾݧ
-Ⴢ≯褦.ᠪߪႾݧ; ; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ;  # Ⴢ≯褦.ᠪߪႾݧ
-Ⴢ≯褦.ᠪߪႾݧ; Ⴢ≯褦.ᠪߪႾݧ; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ;  # Ⴢ≯褦.ᠪߪႾݧ
-ⴢ≯褦.ᠪߪⴞݧ; ⴢ≯褦.ᠪߪⴞݧ; [B5, B6, P1, V6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
-ⴢ≯褦.ᠪߪⴞݧ; ; [B5, B6, P1, V6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
-Ⴢ≯褦.ᠪߪⴞݧ; ; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ;  # Ⴢ≯褦.ᠪߪⴞݧ
-Ⴢ≯褦.ᠪߪⴞݧ; Ⴢ≯褦.ᠪߪⴞݧ; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ;  # Ⴢ≯褦.ᠪߪⴞݧ
-xn--6nd461g478e.xn--rpb5x392bcyt; Ⴢ≯褦.ᠪߪⴞݧ; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ;  # Ⴢ≯褦.ᠪߪⴞݧ
-xn--hdh433bev8e.xn--rpb5x392bcyt; ⴢ≯褦.ᠪߪⴞݧ; [B5, B6, V6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
-xn--6nd461g478e.xn--rpb5x49td2h; Ⴢ≯褦.ᠪߪႾݧ; [B5, B6, V6]; xn--6nd461g478e.xn--rpb5x49td2h; ; ;  # Ⴢ≯褦.ᠪߪႾݧ
-ⴢ≯褦．ᠪߪⴞݧ; ⴢ≯褦.ᠪߪⴞݧ; [B5, B6, P1, V6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
-ⴢ≯褦．ᠪߪⴞݧ; ⴢ≯褦.ᠪߪⴞݧ; [B5, B6, P1, V6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
-Ⴢ≯褦．ᠪߪⴞݧ; Ⴢ≯褦.ᠪߪⴞݧ; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ;  # Ⴢ≯褦.ᠪߪⴞݧ
-Ⴢ≯褦．ᠪߪⴞݧ; Ⴢ≯褦.ᠪߪⴞݧ; [B5, B6, P1, V6]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ;  # Ⴢ≯褦.ᠪߪⴞݧ
-򊉆󠆒‌꥓。𞤙ٻꡘ; 򊉆‌꥓.𞤻ٻꡘ; [B2, B3, C1, P1, V6]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; xn--3j9al6189a.xn--0ib8893fegvj; [B2, B3, P1, V6] # ꥓.𞤻ٻꡘ
-򊉆󠆒‌꥓。𞤻ٻꡘ; 򊉆‌꥓.𞤻ٻꡘ; [B2, B3, C1, P1, V6]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; xn--3j9al6189a.xn--0ib8893fegvj; [B2, B3, P1, V6] # ꥓.𞤻ٻꡘ
-xn--3j9al6189a.xn--0ib8893fegvj; 򊉆꥓.𞤻ٻꡘ; [B2, B3, V6]; xn--3j9al6189a.xn--0ib8893fegvj; ; ;  # ꥓.𞤻ٻꡘ
-xn--0ug8815chtz0e.xn--0ib8893fegvj; 򊉆‌꥓.𞤻ٻꡘ; [B2, B3, C1, V6]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; ;  # ꥓.𞤻ٻꡘ
-‌.≯; ; [C1, P1, V6]; xn--0ug.xn--hdh; ; .xn--hdh; [P1, V6, A4_2] # .≯
-‌.≯; ‌.≯; [C1, P1, V6]; xn--0ug.xn--hdh; ; .xn--hdh; [P1, V6, A4_2] # .≯
-.xn--hdh; .≯; [V6, X4_2]; .xn--hdh; [V6, A4_2]; ;  # .≯
-xn--0ug.xn--hdh; ‌.≯; [C1, V6]; xn--0ug.xn--hdh; ; ;  # .≯
-𰅧񣩠-．꯭-悜; 𰅧񣩠-.꯭-悜; [P1, V3, V5, V6]; xn----7m53aj640l.xn----8f4br83t; ; ;  # 𰅧-.꯭-悜
-𰅧񣩠-.꯭-悜; ; [P1, V3, V5, V6]; xn----7m53aj640l.xn----8f4br83t; ; ;  # 𰅧-.꯭-悜
-xn----7m53aj640l.xn----8f4br83t; 𰅧񣩠-.꯭-悜; [V3, V5, V6]; xn----7m53aj640l.xn----8f4br83t; ; ;  # 𰅧-.꯭-悜
-ᡉ𶓧⬞ᢜ.-‍𞣑‮; ; [C2, P1, V3, V6]; xn--87e0ol04cdl39e.xn----ugn5e3763s; ; xn--87e0ol04cdl39e.xn----qinu247r; [P1, V3, V6] # ᡉ⬞ᢜ.-𞣑
-xn--87e0ol04cdl39e.xn----qinu247r; ᡉ𶓧⬞ᢜ.-𞣑‮; [V3, V6]; xn--87e0ol04cdl39e.xn----qinu247r; ; ;  # ᡉ⬞ᢜ.-𞣑
-xn--87e0ol04cdl39e.xn----ugn5e3763s; ᡉ𶓧⬞ᢜ.-‍𞣑‮; [C2, V3, V6]; xn--87e0ol04cdl39e.xn----ugn5e3763s; ; ;  # ᡉ⬞ᢜ.-𞣑
-⒐‌衃Ⴝ.ڂႴ; ; [B1, B2, B3, C1, P1, V6]; xn--1nd159ecmd785k.xn--7ib433c; ; xn--1nd362hy16e.xn--7ib433c; [B1, B2, B3, P1, V6] # ⒐衃Ⴝ.ڂႴ
-9.‌衃Ⴝ.ڂႴ; ; [B1, B2, B3, C1, P1, V6]; 9.xn--1nd159e1y2f.xn--7ib433c; ; 9.xn--1nd9032d.xn--7ib433c; [B1, B2, B3, P1, V6] # 9.衃Ⴝ.ڂႴ
-9.‌衃ⴝ.ڂⴔ; ; [B1, B2, B3, C1]; 9.xn--0ug862cbm5e.xn--7ib268q; ; 9.xn--llj1920a.xn--7ib268q; [B1, B2, B3] # 9.衃ⴝ.ڂⴔ
-9.‌衃Ⴝ.ڂⴔ; ; [B1, B2, B3, C1, P1, V6]; 9.xn--1nd159e1y2f.xn--7ib268q; ; 9.xn--1nd9032d.xn--7ib268q; [B1, B2, B3, P1, V6] # 9.衃Ⴝ.ڂⴔ
-9.xn--1nd9032d.xn--7ib268q; 9.衃Ⴝ.ڂⴔ; [B1, B2, B3, V6]; 9.xn--1nd9032d.xn--7ib268q; ; ;  # 9.衃Ⴝ.ڂⴔ
-9.xn--1nd159e1y2f.xn--7ib268q; 9.‌衃Ⴝ.ڂⴔ; [B1, B2, B3, C1, V6]; 9.xn--1nd159e1y2f.xn--7ib268q; ; ;  # 9.衃Ⴝ.ڂⴔ
-9.xn--llj1920a.xn--7ib268q; 9.衃ⴝ.ڂⴔ; [B1, B2, B3]; 9.xn--llj1920a.xn--7ib268q; ; ;  # 9.衃ⴝ.ڂⴔ
-9.xn--0ug862cbm5e.xn--7ib268q; 9.‌衃ⴝ.ڂⴔ; [B1, B2, B3, C1]; 9.xn--0ug862cbm5e.xn--7ib268q; ; ;  # 9.衃ⴝ.ڂⴔ
-9.xn--1nd9032d.xn--7ib433c; 9.衃Ⴝ.ڂႴ; [B1, B2, B3, V6]; 9.xn--1nd9032d.xn--7ib433c; ; ;  # 9.衃Ⴝ.ڂႴ
-9.xn--1nd159e1y2f.xn--7ib433c; 9.‌衃Ⴝ.ڂႴ; [B1, B2, B3, C1, V6]; 9.xn--1nd159e1y2f.xn--7ib433c; ; ;  # 9.衃Ⴝ.ڂႴ
-⒐‌衃ⴝ.ڂⴔ; ; [B1, B2, B3, C1, P1, V6]; xn--0ugx0px1izu2h.xn--7ib268q; ; xn--1shy52abz3f.xn--7ib268q; [B1, B2, B3, P1, V6] # ⒐衃ⴝ.ڂⴔ
-⒐‌衃Ⴝ.ڂⴔ; ; [B1, B2, B3, C1, P1, V6]; xn--1nd159ecmd785k.xn--7ib268q; ; xn--1nd362hy16e.xn--7ib268q; [B1, B2, B3, P1, V6] # ⒐衃Ⴝ.ڂⴔ
-xn--1nd362hy16e.xn--7ib268q; ⒐衃Ⴝ.ڂⴔ; [B1, B2, B3, V6]; xn--1nd362hy16e.xn--7ib268q; ; ;  # ⒐衃Ⴝ.ڂⴔ
-xn--1nd159ecmd785k.xn--7ib268q; ⒐‌衃Ⴝ.ڂⴔ; [B1, B2, B3, C1, V6]; xn--1nd159ecmd785k.xn--7ib268q; ; ;  # ⒐衃Ⴝ.ڂⴔ
-xn--1shy52abz3f.xn--7ib268q; ⒐衃ⴝ.ڂⴔ; [B1, B2, B3, V6]; xn--1shy52abz3f.xn--7ib268q; ; ;  # ⒐衃ⴝ.ڂⴔ
-xn--0ugx0px1izu2h.xn--7ib268q; ⒐‌衃ⴝ.ڂⴔ; [B1, B2, B3, C1, V6]; xn--0ugx0px1izu2h.xn--7ib268q; ; ;  # ⒐衃ⴝ.ڂⴔ
-xn--1nd362hy16e.xn--7ib433c; ⒐衃Ⴝ.ڂႴ; [B1, B2, B3, V6]; xn--1nd362hy16e.xn--7ib433c; ; ;  # ⒐衃Ⴝ.ڂႴ
-xn--1nd159ecmd785k.xn--7ib433c; ⒐‌衃Ⴝ.ڂႴ; [B1, B2, B3, C1, V6]; xn--1nd159ecmd785k.xn--7ib433c; ; ;  # ⒐衃Ⴝ.ڂႴ
-ߡ‌。--⸬; ߡ‌.--⸬; [B1, B3, C1, V3]; xn--8sb884j.xn-----iw2a; ; xn--8sb.xn-----iw2a; [B1, V3] # ߡ.--⸬
-xn--8sb.xn-----iw2a; ߡ.--⸬; [B1, V3]; xn--8sb.xn-----iw2a; ; ;  # ߡ.--⸬
-xn--8sb884j.xn-----iw2a; ߡ‌.--⸬; [B1, B3, C1, V3]; xn--8sb884j.xn-----iw2a; ; ;  # ߡ.--⸬
-𞥓．ܘ; 𞥓.ܘ; ; xn--of6h.xn--inb; ; ;  # 𞥓.ܘ
-𞥓.ܘ; ; ; xn--of6h.xn--inb; ; ;  # 𞥓.ܘ
-xn--of6h.xn--inb; 𞥓.ܘ; ; xn--of6h.xn--inb; ; ;  # 𞥓.ܘ
-󠄽-．-්; -.-්; [V3]; -.xn----ptf; ; ;  # -.-්
-󠄽-.-්; -.-්; [V3]; -.xn----ptf; ; ;  # -.-්
--.xn----ptf; -.-්; [V3]; -.xn----ptf; ; ;  # -.-්
-󠇝ݛ-.ᤧ; ݛ-.ᤧ; [B1, B3, B6, V3, V5]; xn----k4c.xn--lff; ; ;  # ݛ-.ᤧ
-xn----k4c.xn--lff; ݛ-.ᤧ; [B1, B3, B6, V3, V5]; xn----k4c.xn--lff; ; ;  # ݛ-.ᤧ
-𞤴󠆹⦉𐹺.꠆⒌󘤸; 𞤴⦉𐹺.꠆⒌󘤸; [B1, P1, V5, V6]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ;  # 𞤴⦉𐹺.꠆⒌
-𞤴󠆹⦉𐹺.꠆5.󘤸; 𞤴⦉𐹺.꠆5.󘤸; [B1, P1, V5, V6]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ;  # 𞤴⦉𐹺.꠆5.
-𞤒󠆹⦉𐹺.꠆5.󘤸; 𞤴⦉𐹺.꠆5.󘤸; [B1, P1, V5, V6]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ;  # 𞤴⦉𐹺.꠆5.
-xn--fuix729epewf.xn--5-w93e.xn--7b83e; 𞤴⦉𐹺.꠆5.󘤸; [B1, V5, V6]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ;  # 𞤴⦉𐹺.꠆5.
-𞤒󠆹⦉𐹺.꠆⒌󘤸; 𞤴⦉𐹺.꠆⒌󘤸; [B1, P1, V5, V6]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ;  # 𞤴⦉𐹺.꠆⒌
-xn--fuix729epewf.xn--xsh5029b6e77i; 𞤴⦉𐹺.꠆⒌󘤸; [B1, V5, V6]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ;  # 𞤴⦉𐹺.꠆⒌
-󠄸₀。𑖿‌𐦂‍; 0.𑖿‌𐦂‍; [B1, C2, V5]; 0.xn--0ugc8040p9hk; ; 0.xn--mn9cz2s; [B1, V5] # 0.𑖿𐦂
-󠄸0。𑖿‌𐦂‍; 0.𑖿‌𐦂‍; [B1, C2, V5]; 0.xn--0ugc8040p9hk; ; 0.xn--mn9cz2s; [B1, V5] # 0.𑖿𐦂
-0.xn--mn9cz2s; 0.𑖿𐦂; [B1, V5]; 0.xn--mn9cz2s; ; ;  # 0.𑖿𐦂
-0.xn--0ugc8040p9hk; 0.𑖿‌𐦂‍; [B1, C2, V5]; 0.xn--0ugc8040p9hk; ; ;  # 0.𑖿𐦂
-Ⴚ𐋸󠄄。𝟝ퟶ်; Ⴚ𐋸.5ퟶ်; [P1, V6]; xn--ynd2415j.xn--5-dug9054m; ; ;  # Ⴚ𐋸.5ퟶ်
-Ⴚ𐋸󠄄。5ퟶ်; Ⴚ𐋸.5ퟶ်; [P1, V6]; xn--ynd2415j.xn--5-dug9054m; ; ;  # Ⴚ𐋸.5ퟶ်
-ⴚ𐋸󠄄。5ퟶ်; ⴚ𐋸.5ퟶ်; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
-xn--ilj2659d.xn--5-dug9054m; ⴚ𐋸.5ퟶ်; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
-ⴚ𐋸.5ퟶ်; ; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
-Ⴚ𐋸.5ퟶ်; ; [P1, V6]; xn--ynd2415j.xn--5-dug9054m; ; ;  # Ⴚ𐋸.5ퟶ်
-xn--ynd2415j.xn--5-dug9054m; Ⴚ𐋸.5ퟶ်; [V6]; xn--ynd2415j.xn--5-dug9054m; ; ;  # Ⴚ𐋸.5ퟶ်
-ⴚ𐋸󠄄。𝟝ퟶ်; ⴚ𐋸.5ퟶ်; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
-‍-ᠹ﹪.ᷡᤢ; ; [C2, P1, V5, V6]; xn----c6j614b1z4v.xn--gff52t; ; xn----c6jx047j.xn--gff52t; [P1, V3, V5, V6] # -ᠹ﹪.ᷡᤢ
-‍-ᠹ%.ᷡᤢ; ; [C2, P1, V5, V6]; xn---%-u4oy48b.xn--gff52t; ; xn---%-u4o.xn--gff52t; [P1, V3, V5, V6] # -ᠹ%.ᷡᤢ
-xn---%-u4o.xn--gff52t; -ᠹ%.ᷡᤢ; [P1, V3, V5, V6]; xn---%-u4o.xn--gff52t; ; ;  # -ᠹ%.ᷡᤢ
-xn---%-u4oy48b.xn--gff52t; ‍-ᠹ%.ᷡᤢ; [C2, P1, V5, V6]; xn---%-u4oy48b.xn--gff52t; ; ;  # -ᠹ%.ᷡᤢ
-xn----c6jx047j.xn--gff52t; -ᠹ﹪.ᷡᤢ; [V3, V5, V6]; xn----c6jx047j.xn--gff52t; ; ;  # -ᠹ﹪.ᷡᤢ
-xn----c6j614b1z4v.xn--gff52t; ‍-ᠹ﹪.ᷡᤢ; [C2, V5, V6]; xn----c6j614b1z4v.xn--gff52t; ; ;  # -ᠹ﹪.ᷡᤢ
-≠.ᠿ; ; [P1, V6]; xn--1ch.xn--y7e; ; ;  # ≠.ᠿ
-≠.ᠿ; ≠.ᠿ; [P1, V6]; xn--1ch.xn--y7e; ; ;  # ≠.ᠿ
-xn--1ch.xn--y7e; ≠.ᠿ; [V6]; xn--1ch.xn--y7e; ; ;  # ≠.ᠿ
-ܣ֣｡㌪; ܣ֣.ハイツ; ; xn--ucb18e.xn--eck4c5a; ; ;  # ܣ֣.ハイツ
-ܣ֣。ハイツ; ܣ֣.ハイツ; ; xn--ucb18e.xn--eck4c5a; ; ;  # ܣ֣.ハイツ
-xn--ucb18e.xn--eck4c5a; ܣ֣.ハイツ; ; xn--ucb18e.xn--eck4c5a; ; ;  # ܣ֣.ハイツ
-ܣ֣.ハイツ; ; ; xn--ucb18e.xn--eck4c5a; ; ;  # ܣ֣.ハイツ
-𞷥󠆀≮.⵿-; 𞷥≮.⵿-; [B1, B3, P1, V3, V5, V6]; xn--gdhx802p.xn----i2s; ; ;  # ≮.⵿-
-𞷥󠆀≮.⵿-; 𞷥≮.⵿-; [B1, B3, P1, V3, V5, V6]; xn--gdhx802p.xn----i2s; ; ;  # ≮.⵿-
-xn--gdhx802p.xn----i2s; 𞷥≮.⵿-; [B1, B3, V3, V5, V6]; xn--gdhx802p.xn----i2s; ; ;  # ≮.⵿-
-₆榎򦖎്｡𞤅ۭﱚ󠮨; 6榎򦖎്.𞤧ۭيي󠮨; [B1, B3, P1, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ;  # 6榎്.𞤧ۭيي
-6榎򦖎്。𞤅ۭيي󠮨; 6榎򦖎്.𞤧ۭيي󠮨; [B1, B3, P1, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ;  # 6榎്.𞤧ۭيي
-6榎򦖎്。𞤧ۭيي󠮨; 6榎򦖎്.𞤧ۭيي󠮨; [B1, B3, P1, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ;  # 6榎്.𞤧ۭيي
-xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; 6榎򦖎്.𞤧ۭيي󠮨; [B1, B3, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ;  # 6榎്.𞤧ۭيي
-₆榎򦖎്｡𞤧ۭﱚ󠮨; 6榎򦖎്.𞤧ۭيي󠮨; [B1, B3, P1, V6]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ;  # 6榎്.𞤧ۭيي
-𣩫．򌑲; 𣩫.򌑲; [P1, V6]; xn--td3j.xn--4628b; ; ;  # 𣩫.
-𣩫.򌑲; ; [P1, V6]; xn--td3j.xn--4628b; ; ;  # 𣩫.
-xn--td3j.xn--4628b; 𣩫.򌑲; [V6]; xn--td3j.xn--4628b; ; ;  # 𣩫.
-‍︒｡ڹ‌; ‍︒.ڹ‌; [B1, B3, C1, C2, P1, V6]; xn--1ug2658f.xn--skb080k; ; xn--y86c.xn--skb; [B1, P1, V6] # ︒.ڹ
-xn--y86c.xn--skb; ︒.ڹ; [B1, V6]; xn--y86c.xn--skb; ; ;  # ︒.ڹ
-xn--1ug2658f.xn--skb080k; ‍︒.ڹ‌; [B1, B3, C1, C2, V6]; xn--1ug2658f.xn--skb080k; ; ;  # ︒.ڹ
-xn--skb; ڹ; ; xn--skb; ; ;  # ڹ
-ڹ; ; ; xn--skb; ; ;  # ڹ
-𐹦‌𐹶。⁭; 𐹦‌𐹶.⁭; [B1, C1, P1, V6]; xn--0ug4994goba.xn--sxg; ; xn--eo0d6a.xn--sxg; [B1, P1, V6] # 𐹦𐹶.
-xn--eo0d6a.xn--sxg; 𐹦𐹶.⁭; [B1, V6]; xn--eo0d6a.xn--sxg; ; ;  # 𐹦𐹶.
-xn--0ug4994goba.xn--sxg; 𐹦‌𐹶.⁭; [B1, C1, V6]; xn--0ug4994goba.xn--sxg; ; ;  # 𐹦𐹶.
-్𝨾֩𝟭。-𑜨; ్𝨾֩1.-𑜨; [V3, V5]; xn--1-rfc312cdp45c.xn----nq0j; ; ;  # ్𝨾֩1.-𑜨
-్𝨾֩1。-𑜨; ్𝨾֩1.-𑜨; [V3, V5]; xn--1-rfc312cdp45c.xn----nq0j; ; ;  # ్𝨾֩1.-𑜨
-xn--1-rfc312cdp45c.xn----nq0j; ్𝨾֩1.-𑜨; [V3, V5]; xn--1-rfc312cdp45c.xn----nq0j; ; ;  # ్𝨾֩1.-𑜨
-򣿈。뙏; 򣿈.뙏; [P1, V6]; xn--ph26c.xn--281b; ; ;  # .뙏
-򣿈。뙏; 򣿈.뙏; [P1, V6]; xn--ph26c.xn--281b; ; ;  # .뙏
-xn--ph26c.xn--281b; 򣿈.뙏; [V6]; xn--ph26c.xn--281b; ; ;  # .뙏
-񕨚󠄌󑽀ᡀ.ࢶ; 񕨚󑽀ᡀ.ࢶ; [P1, V6]; xn--z7e98100evc01b.xn--czb; ; ;  # ᡀ.ࢶ
-xn--z7e98100evc01b.xn--czb; 񕨚󑽀ᡀ.ࢶ; [V6]; xn--z7e98100evc01b.xn--czb; ; ;  # ᡀ.ࢶ
-‍｡񅁛; ‍.񅁛; [C2, P1, V6]; xn--1ug.xn--6x4u; ; .xn--6x4u; [P1, V6, A4_2] # .
-‍。񅁛; ‍.񅁛; [C2, P1, V6]; xn--1ug.xn--6x4u; ; .xn--6x4u; [P1, V6, A4_2] # .
-.xn--6x4u; .񅁛; [V6, X4_2]; .xn--6x4u; [V6, A4_2]; ;  # .
-xn--1ug.xn--6x4u; ‍.񅁛; [C2, V6]; xn--1ug.xn--6x4u; ; ;  # .
-ࡋ皥．-; ࡋ皥.-; [B1, B2, B3, V3]; xn--9vb4167c.-; ; ;  # ࡋ皥.-
-ࡋ皥.-; ; [B1, B2, B3, V3]; xn--9vb4167c.-; ; ;  # ࡋ皥.-
-xn--9vb4167c.-; ࡋ皥.-; [B1, B2, B3, V3]; xn--9vb4167c.-; ; ;  # ࡋ皥.-
-𐣸̕𐮇．⒈ꡦ; 𐣸̕𐮇.⒈ꡦ; [B1, P1, V6]; xn--5sa9915kgvb.xn--tshw539b; ; ;  # ̕𐮇.⒈ꡦ
-𐣸̕𐮇.1.ꡦ; ; [B1, P1, V6]; xn--5sa9915kgvb.1.xn--cd9a; ; ;  # ̕𐮇.1.ꡦ
-xn--5sa9915kgvb.1.xn--cd9a; 𐣸̕𐮇.1.ꡦ; [B1, V6]; xn--5sa9915kgvb.1.xn--cd9a; ; ;  # ̕𐮇.1.ꡦ
-xn--5sa9915kgvb.xn--tshw539b; 𐣸̕𐮇.⒈ꡦ; [B1, V6]; xn--5sa9915kgvb.xn--tshw539b; ; ;  # ̕𐮇.⒈ꡦ
-Ⴛ‌֢‍。ﾠā𐹦; Ⴛ‌֢‍.ﾠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, P1, V6] # Ⴛ֢.ā𐹦
-Ⴛ‌֢‍。ﾠā𐹦; Ⴛ‌֢‍.ﾠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, P1, V6] # Ⴛ֢.ā𐹦
-Ⴛ‌֢‍。ᅠā𐹦; Ⴛ‌֢‍.ᅠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, P1, V6] # Ⴛ֢.ā𐹦
-Ⴛ‌֢‍。ᅠā𐹦; Ⴛ‌֢‍.ᅠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, P1, V6] # Ⴛ֢.ā𐹦
-ⴛ‌֢‍。ᅠā𐹦; ⴛ‌֢‍.ᅠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb736kea974k.xn--yda594fdn5q; ; xn--tcb323r.xn--yda594fdn5q; [B5, B6, P1, V6] # ⴛ֢.ā𐹦
-ⴛ‌֢‍。ᅠā𐹦; ⴛ‌֢‍.ᅠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb736kea974k.xn--yda594fdn5q; ; xn--tcb323r.xn--yda594fdn5q; [B5, B6, P1, V6] # ⴛ֢.ā𐹦
-Ⴛ‌֢‍。ᅠĀ𐹦; Ⴛ‌֢‍.ᅠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, P1, V6] # Ⴛ֢.ā𐹦
-Ⴛ‌֢‍。ᅠĀ𐹦; Ⴛ‌֢‍.ᅠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; xn--tcb597c.xn--yda594fdn5q; [B5, B6, P1, V6] # Ⴛ֢.ā𐹦
-xn--tcb597c.xn--yda594fdn5q; Ⴛ֢.ᅠā𐹦; [B5, B6, V6]; xn--tcb597c.xn--yda594fdn5q; ; ;  # Ⴛ֢.ā𐹦
-xn--tcb597cdmmfa.xn--yda594fdn5q; Ⴛ‌֢‍.ᅠā𐹦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; ;  # Ⴛ֢.ā𐹦
-xn--tcb323r.xn--yda594fdn5q; ⴛ֢.ᅠā𐹦; [B5, B6, V6]; xn--tcb323r.xn--yda594fdn5q; ; ;  # ⴛ֢.ā𐹦
-xn--tcb736kea974k.xn--yda594fdn5q; ⴛ‌֢‍.ᅠā𐹦; [B5, B6, C1, C2, V6]; xn--tcb736kea974k.xn--yda594fdn5q; ; ;  # ⴛ֢.ā𐹦
-ⴛ‌֢‍。ﾠā𐹦; ⴛ‌֢‍.ﾠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb736kea974k.xn--yda9741khjj; ; xn--tcb323r.xn--yda9741khjj; [B5, B6, P1, V6] # ⴛ֢.ā𐹦
-ⴛ‌֢‍。ﾠā𐹦; ⴛ‌֢‍.ﾠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb736kea974k.xn--yda9741khjj; ; xn--tcb323r.xn--yda9741khjj; [B5, B6, P1, V6] # ⴛ֢.ā𐹦
-Ⴛ‌֢‍。ﾠĀ𐹦; Ⴛ‌֢‍.ﾠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, P1, V6] # Ⴛ֢.ā𐹦
-Ⴛ‌֢‍。ﾠĀ𐹦; Ⴛ‌֢‍.ﾠā𐹦; [B5, B6, C1, C2, P1, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; xn--tcb597c.xn--yda9741khjj; [B5, B6, P1, V6] # Ⴛ֢.ā𐹦
-xn--tcb597c.xn--yda9741khjj; Ⴛ֢.ﾠā𐹦; [B5, B6, V6]; xn--tcb597c.xn--yda9741khjj; ; ;  # Ⴛ֢.ā𐹦
-xn--tcb597cdmmfa.xn--yda9741khjj; Ⴛ‌֢‍.ﾠā𐹦; [B5, B6, C1, C2, V6]; xn--tcb597cdmmfa.xn--yda9741khjj; ; ;  # Ⴛ֢.ā𐹦
-xn--tcb323r.xn--yda9741khjj; ⴛ֢.ﾠā𐹦; [B5, B6, V6]; xn--tcb323r.xn--yda9741khjj; ; ;  # ⴛ֢.ā𐹦
-xn--tcb736kea974k.xn--yda9741khjj; ⴛ‌֢‍.ﾠā𐹦; [B5, B6, C1, C2, V6]; xn--tcb736kea974k.xn--yda9741khjj; ; ;  # ⴛ֢.ā𐹦
-￹‌｡曳⾑𐋰≯; ￹‌.曳襾𐋰≯; [C1, P1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [P1, V6] # .曳襾𐋰≯
-￹‌｡曳⾑𐋰≯; ￹‌.曳襾𐋰≯; [C1, P1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [P1, V6] # .曳襾𐋰≯
-￹‌。曳襾𐋰≯; ￹‌.曳襾𐋰≯; [C1, P1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [P1, V6] # .曳襾𐋰≯
-￹‌。曳襾𐋰≯; ￹‌.曳襾𐋰≯; [C1, P1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [P1, V6] # .曳襾𐋰≯
-xn--vn7c.xn--hdh501y8wvfs5h; ￹.曳襾𐋰≯; [V6]; xn--vn7c.xn--hdh501y8wvfs5h; ; ;  # .曳襾𐋰≯
-xn--0ug2139f.xn--hdh501y8wvfs5h; ￹‌.曳襾𐋰≯; [C1, V6]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; ;  # .曳襾𐋰≯
-≯⒈。ß; ≯⒈.ß; [P1, V6]; xn--hdh84f.xn--zca; ; xn--hdh84f.ss;  # ≯⒈.ß
-≯⒈。ß; ≯⒈.ß; [P1, V6]; xn--hdh84f.xn--zca; ; xn--hdh84f.ss;  # ≯⒈.ß
-≯1.。ß; ≯1..ß; [P1, V6, X4_2]; xn--1-ogo..xn--zca; [P1, V6, A4_2]; xn--1-ogo..ss;  # ≯1..ß
-≯1.。ß; ≯1..ß; [P1, V6, X4_2]; xn--1-ogo..xn--zca; [P1, V6, A4_2]; xn--1-ogo..ss;  # ≯1..ß
-≯1.。SS; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ;  # ≯1..ss
-≯1.。SS; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ;  # ≯1..ss
-≯1.。ss; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ;  # ≯1..ss
-≯1.。ss; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ;  # ≯1..ss
-≯1.。Ss; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ;  # ≯1..ss
-≯1.。Ss; ≯1..ss; [P1, V6, X4_2]; xn--1-ogo..ss; [P1, V6, A4_2]; ;  # ≯1..ss
-xn--1-ogo..ss; ≯1..ss; [V6, X4_2]; xn--1-ogo..ss; [V6, A4_2]; ;  # ≯1..ss
-xn--1-ogo..xn--zca; ≯1..ß; [V6, X4_2]; xn--1-ogo..xn--zca; [V6, A4_2]; ;  # ≯1..ß
-≯⒈。SS; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
-≯⒈。SS; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
-≯⒈。ss; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
-≯⒈。ss; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
-≯⒈。Ss; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
-≯⒈。Ss; ≯⒈.ss; [P1, V6]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
-xn--hdh84f.ss; ≯⒈.ss; [V6]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
-xn--hdh84f.xn--zca; ≯⒈.ß; [V6]; xn--hdh84f.xn--zca; ; ;  # ≯⒈.ß
-٧‍ﮖ｡ߚ-₆Ⴙ; ٧‍ڳ.ߚ-6Ⴙ; [B1, B2, B3, C2, P1, V6]; xn--gib6m343e.xn---6-lve002g; ; xn--gib6m.xn---6-lve002g; [B1, B2, B3, P1, V6] # ٧ڳ.ߚ-6Ⴙ
-٧‍ڳ。ߚ-6Ⴙ; ٧‍ڳ.ߚ-6Ⴙ; [B1, B2, B3, C2, P1, V6]; xn--gib6m343e.xn---6-lve002g; ; xn--gib6m.xn---6-lve002g; [B1, B2, B3, P1, V6] # ٧ڳ.ߚ-6Ⴙ
-٧‍ڳ。ߚ-6ⴙ; ٧‍ڳ.ߚ-6ⴙ; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; xn--gib6m.xn---6-lve6529a; [B1, B2, B3] # ٧ڳ.ߚ-6ⴙ
-xn--gib6m.xn---6-lve6529a; ٧ڳ.ߚ-6ⴙ; [B1, B2, B3]; xn--gib6m.xn---6-lve6529a; ; ;  # ٧ڳ.ߚ-6ⴙ
-xn--gib6m343e.xn---6-lve6529a; ٧‍ڳ.ߚ-6ⴙ; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; ;  # ٧ڳ.ߚ-6ⴙ
-xn--gib6m.xn---6-lve002g; ٧ڳ.ߚ-6Ⴙ; [B1, B2, B3, V6]; xn--gib6m.xn---6-lve002g; ; ;  # ٧ڳ.ߚ-6Ⴙ
-xn--gib6m343e.xn---6-lve002g; ٧‍ڳ.ߚ-6Ⴙ; [B1, B2, B3, C2, V6]; xn--gib6m343e.xn---6-lve002g; ; ;  # ٧ڳ.ߚ-6Ⴙ
-٧‍ﮖ｡ߚ-₆ⴙ; ٧‍ڳ.ߚ-6ⴙ; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; xn--gib6m.xn---6-lve6529a; [B1, B2, B3] # ٧ڳ.ߚ-6ⴙ
-‌｡≠; ‌.≠; [C1, P1, V6]; xn--0ug.xn--1ch; ; .xn--1ch; [P1, V6, A4_2] # .≠
-‌｡≠; ‌.≠; [C1, P1, V6]; xn--0ug.xn--1ch; ; .xn--1ch; [P1, V6, A4_2] # .≠
-‌。≠; ‌.≠; [C1, P1, V6]; xn--0ug.xn--1ch; ; .xn--1ch; [P1, V6, A4_2] # .≠
-‌。≠; ‌.≠; [C1, P1, V6]; xn--0ug.xn--1ch; ; .xn--1ch; [P1, V6, A4_2] # .≠
-.xn--1ch; .≠; [V6, X4_2]; .xn--1ch; [V6, A4_2]; ;  # .≠
-xn--0ug.xn--1ch; ‌.≠; [C1, V6]; xn--0ug.xn--1ch; ; ;  # .≠
-𑖿𝨔.ᡟ𑖿ᭂ‌; ; [C1, V5]; xn--461dw464a.xn--v8e29ldzfo952a; ; xn--461dw464a.xn--v8e29loy65a; [V5] # 𑖿𝨔.ᡟ𑖿ᭂ
-xn--461dw464a.xn--v8e29loy65a; 𑖿𝨔.ᡟ𑖿ᭂ; [V5]; xn--461dw464a.xn--v8e29loy65a; ; ;  # 𑖿𝨔.ᡟ𑖿ᭂ
-xn--461dw464a.xn--v8e29ldzfo952a; 𑖿𝨔.ᡟ𑖿ᭂ‌; [C1, V5]; xn--461dw464a.xn--v8e29ldzfo952a; ; ;  # 𑖿𝨔.ᡟ𑖿ᭂ
-򔣳‍򑝱.𖬴Ↄ≠-; ; [C2, P1, V3, V5, V6]; xn--1ug15151gkb5a.xn----61n81bt713h; ; xn--6j00chy9a.xn----61n81bt713h; [P1, V3, V5, V6] # .𖬴Ↄ≠-
-򔣳‍򑝱.𖬴Ↄ≠-; 򔣳‍򑝱.𖬴Ↄ≠-; [C2, P1, V3, V5, V6]; xn--1ug15151gkb5a.xn----61n81bt713h; ; xn--6j00chy9a.xn----61n81bt713h; [P1, V3, V5, V6] # .𖬴Ↄ≠-
-򔣳‍򑝱.𖬴ↄ≠-; 򔣳‍򑝱.𖬴ↄ≠-; [C2, P1, V3, V5, V6]; xn--1ug15151gkb5a.xn----81n51bt713h; ; xn--6j00chy9a.xn----81n51bt713h; [P1, V3, V5, V6] # .𖬴ↄ≠-
-򔣳‍򑝱.𖬴ↄ≠-; ; [C2, P1, V3, V5, V6]; xn--1ug15151gkb5a.xn----81n51bt713h; ; xn--6j00chy9a.xn----81n51bt713h; [P1, V3, V5, V6] # .𖬴ↄ≠-
-xn--6j00chy9a.xn----81n51bt713h; 򔣳򑝱.𖬴ↄ≠-; [V3, V5, V6]; xn--6j00chy9a.xn----81n51bt713h; ; ;  # .𖬴ↄ≠-
-xn--1ug15151gkb5a.xn----81n51bt713h; 򔣳‍򑝱.𖬴ↄ≠-; [C2, V3, V5, V6]; xn--1ug15151gkb5a.xn----81n51bt713h; ; ;  # .𖬴ↄ≠-
-xn--6j00chy9a.xn----61n81bt713h; 򔣳򑝱.𖬴Ↄ≠-; [V3, V5, V6]; xn--6j00chy9a.xn----61n81bt713h; ; ;  # .𖬴Ↄ≠-
-xn--1ug15151gkb5a.xn----61n81bt713h; 򔣳‍򑝱.𖬴Ↄ≠-; [C2, V3, V5, V6]; xn--1ug15151gkb5a.xn----61n81bt713h; ; ;  # .𖬴Ↄ≠-
-ߢς‍𝟳。蔑򛖢; ߢς‍7.蔑򛖢; [B2, C2, P1, V6]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢς7.蔑
-ߢς‍7。蔑򛖢; ߢς‍7.蔑򛖢; [B2, C2, P1, V6]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢς7.蔑
-ߢΣ‍7。蔑򛖢; ߢσ‍7.蔑򛖢; [B2, C2, P1, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢσ7.蔑
-ߢσ‍7。蔑򛖢; ߢσ‍7.蔑򛖢; [B2, C2, P1, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢσ7.蔑
-xn--7-zmb872a.xn--wy1ao4929b; ߢσ7.蔑򛖢; [B2, V6]; xn--7-zmb872a.xn--wy1ao4929b; ; ;  # ߢσ7.蔑
-xn--7-zmb872aez5a.xn--wy1ao4929b; ߢσ‍7.蔑򛖢; [B2, C2, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; ;  # ߢσ7.蔑
-xn--7-xmb182aez5a.xn--wy1ao4929b; ߢς‍7.蔑򛖢; [B2, C2, V6]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; ;  # ߢς7.蔑
-ߢΣ‍𝟳。蔑򛖢; ߢσ‍7.蔑򛖢; [B2, C2, P1, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢσ7.蔑
-ߢσ‍𝟳。蔑򛖢; ߢσ‍7.蔑򛖢; [B2, C2, P1, V6]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, P1, V6] # ߢσ7.蔑
-𐹰.؀; ; [B1, P1, V6]; xn--oo0d.xn--ifb; ; ;  # 𐹰.
-xn--oo0d.xn--ifb; 𐹰.؀; [B1, V6]; xn--oo0d.xn--ifb; ; ;  # 𐹰.
--ࢨ.𱠖; ; [B1, P1, V3, V6]; xn----mod.xn--5o9n; ; ;  # -ࢨ.
-xn----mod.xn--5o9n; -ࢨ.𱠖; [B1, V3, V6]; xn----mod.xn--5o9n; ; ;  # -ࢨ.
-≯𞱸󠇀。誆⒈; ≯𞱸.誆⒈; [B1, P1, V6]; xn--hdh7151p.xn--tsh1248a; ; ;  # ≯𞱸.誆⒈
-≯𞱸󠇀。誆⒈; ≯𞱸.誆⒈; [B1, P1, V6]; xn--hdh7151p.xn--tsh1248a; ; ;  # ≯𞱸.誆⒈
-≯𞱸󠇀。誆1.; ≯𞱸.誆1.; [B1, P1, V6]; xn--hdh7151p.xn--1-dy1d.; ; ;  # ≯𞱸.誆1.
-≯𞱸󠇀。誆1.; ≯𞱸.誆1.; [B1, P1, V6]; xn--hdh7151p.xn--1-dy1d.; ; ;  # ≯𞱸.誆1.
-xn--hdh7151p.xn--1-dy1d.; ≯𞱸.誆1.; [B1, V6]; xn--hdh7151p.xn--1-dy1d.; ; ;  # ≯𞱸.誆1.
-xn--hdh7151p.xn--tsh1248a; ≯𞱸.誆⒈; [B1, V6]; xn--hdh7151p.xn--tsh1248a; ; ;  # ≯𞱸.誆⒈
-ؖ𞥙䐊ِ．︒م↺ڜ; ؖ𞥙䐊ِ.︒م↺ڜ; [B1, P1, V5, V6]; xn--4fb0j490qjg4x.xn--hhb8o948euo5r; ; ;  # ؖ𞥙䐊ِ.︒م↺ڜ
-ؖ𞥙䐊ِ.。م↺ڜ; ؖ𞥙䐊ِ..م↺ڜ; [B1, V5, X4_2]; xn--4fb0j490qjg4x..xn--hhb8o948e; [B1, V5, A4_2]; ;  # ؖ𞥙䐊ِ..م↺ڜ
-xn--4fb0j490qjg4x..xn--hhb8o948e; ؖ𞥙䐊ِ..م↺ڜ; [B1, V5, X4_2]; xn--4fb0j490qjg4x..xn--hhb8o948e; [B1, V5, A4_2]; ;  # ؖ𞥙䐊ِ..م↺ڜ
-xn--4fb0j490qjg4x.xn--hhb8o948euo5r; ؖ𞥙䐊ِ.︒م↺ڜ; [B1, V5, V6]; xn--4fb0j490qjg4x.xn--hhb8o948euo5r; ; ;  # ؖ𞥙䐊ِ.︒م↺ڜ
-퀬-?񶳒.‌ૅ󩸤۴; ; [C1, P1, V6]; 퀬-?񶳒.xn--hmb76q48y18505a; [C1, P1, V6, A3]; 퀬-?񶳒.xn--hmb76q74166b; [P1, V5, V6, A3] # 퀬-.ૅ۴
-퀬-?񶳒.‌ૅ󩸤۴; 퀬-?񶳒.‌ૅ󩸤۴; [C1, P1, V6]; 퀬-?񶳒.xn--hmb76q48y18505a; [C1, P1, V6, A3]; 퀬-?񶳒.xn--hmb76q74166b; [P1, V5, V6, A3] # 퀬-.ૅ۴
-퀬-?񶳒.xn--hmb76q74166b; 퀬-?񶳒.ૅ󩸤۴; [P1, V5, V6]; 퀬-?񶳒.xn--hmb76q74166b; [P1, V5, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.xn--hmb76q74166b; 퀬-?񶳒.ૅ󩸤۴; [P1, V5, V6]; 퀬-?񶳒.xn--hmb76q74166b; [P1, V5, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.XN--HMB76Q74166B; 퀬-?񶳒.ૅ󩸤۴; [P1, V5, V6]; 퀬-?񶳒.xn--hmb76q74166b; [P1, V5, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.XN--HMB76Q74166B; 퀬-?񶳒.ૅ󩸤۴; [P1, V5, V6]; 퀬-?񶳒.xn--hmb76q74166b; [P1, V5, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.Xn--Hmb76q74166b; 퀬-?񶳒.ૅ󩸤۴; [P1, V5, V6]; 퀬-?񶳒.xn--hmb76q74166b; [P1, V5, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.Xn--Hmb76q74166b; 퀬-?񶳒.ૅ󩸤۴; [P1, V5, V6]; 퀬-?񶳒.xn--hmb76q74166b; [P1, V5, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.xn--hmb76q48y18505a; 퀬-?񶳒.‌ૅ󩸤۴; [C1, P1, V6]; 퀬-?񶳒.xn--hmb76q48y18505a; [C1, P1, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.xn--hmb76q48y18505a; 퀬-?񶳒.‌ૅ󩸤۴; [C1, P1, V6]; 퀬-?񶳒.xn--hmb76q48y18505a; [C1, P1, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.XN--HMB76Q48Y18505A; 퀬-?񶳒.‌ૅ󩸤۴; [C1, P1, V6]; 퀬-?񶳒.xn--hmb76q48y18505a; [C1, P1, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.XN--HMB76Q48Y18505A; 퀬-?񶳒.‌ૅ󩸤۴; [C1, P1, V6]; 퀬-?񶳒.xn--hmb76q48y18505a; [C1, P1, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.Xn--Hmb76q48y18505a; 퀬-?񶳒.‌ૅ󩸤۴; [C1, P1, V6]; 퀬-?񶳒.xn--hmb76q48y18505a; [C1, P1, V6, A3]; ;  # 퀬-.ૅ۴
-퀬-?񶳒.Xn--Hmb76q48y18505a; 퀬-?񶳒.‌ૅ󩸤۴; [C1, P1, V6]; 퀬-?񶳒.xn--hmb76q48y18505a; [C1, P1, V6, A3]; ;  # 퀬-.ૅ۴
-Ⴌ.𐹾︒𑁿𞾄; ; [B1, P1, V6]; xn--knd.xn--y86c030a9ob6374b; ; ;  # Ⴌ.𐹾︒𑁿
-Ⴌ.𐹾。𑁿𞾄; Ⴌ.𐹾.𑁿𞾄; [B1, P1, V5, V6]; xn--knd.xn--2o0d.xn--q30dg029a; ; ;  # Ⴌ.𐹾.𑁿
-ⴌ.𐹾。𑁿𞾄; ⴌ.𐹾.𑁿𞾄; [B1, P1, V5, V6]; xn--3kj.xn--2o0d.xn--q30dg029a; ; ;  # ⴌ.𐹾.𑁿
-xn--3kj.xn--2o0d.xn--q30dg029a; ⴌ.𐹾.𑁿𞾄; [B1, V5, V6]; xn--3kj.xn--2o0d.xn--q30dg029a; ; ;  # ⴌ.𐹾.𑁿
-xn--knd.xn--2o0d.xn--q30dg029a; Ⴌ.𐹾.𑁿𞾄; [B1, V5, V6]; xn--knd.xn--2o0d.xn--q30dg029a; ; ;  # Ⴌ.𐹾.𑁿
-ⴌ.𐹾︒𑁿𞾄; ; [B1, P1, V6]; xn--3kj.xn--y86c030a9ob6374b; ; ;  # ⴌ.𐹾︒𑁿
-xn--3kj.xn--y86c030a9ob6374b; ⴌ.𐹾︒𑁿𞾄; [B1, V6]; xn--3kj.xn--y86c030a9ob6374b; ; ;  # ⴌ.𐹾︒𑁿
-xn--knd.xn--y86c030a9ob6374b; Ⴌ.𐹾︒𑁿𞾄; [B1, V6]; xn--knd.xn--y86c030a9ob6374b; ; ;  # Ⴌ.𐹾︒𑁿
-񧞿╏。𞩕󠁾; 񧞿╏.𞩕󠁾; [B3, B6, P1, V6]; xn--iyh90030d.xn--1m6hs0260c; ; ;  # ╏.
-xn--iyh90030d.xn--1m6hs0260c; 񧞿╏.𞩕󠁾; [B3, B6, V6]; xn--iyh90030d.xn--1m6hs0260c; ; ;  # ╏.
-‍┮󠇐．ఀ్᜴‍; ‍┮.ఀ్᜴‍; [C2, V5]; xn--1ug04r.xn--eoc8m432a40i; ; xn--kxh.xn--eoc8m432a; [V5] # ┮.ఀ్᜴
-‍┮󠇐.ఀ్᜴‍; ‍┮.ఀ్᜴‍; [C2, V5]; xn--1ug04r.xn--eoc8m432a40i; ; xn--kxh.xn--eoc8m432a; [V5] # ┮.ఀ్᜴
-xn--kxh.xn--eoc8m432a; ┮.ఀ్᜴; [V5]; xn--kxh.xn--eoc8m432a; ; ;  # ┮.ఀ్᜴
-xn--1ug04r.xn--eoc8m432a40i; ‍┮.ఀ్᜴‍; [C2, V5]; xn--1ug04r.xn--eoc8m432a40i; ; ;  # ┮.ఀ్᜴
-򹚪｡🄂; 򹚪.🄂; [P1, V6]; xn--n433d.xn--v07h; ; ;  # .🄂
-򹚪。1,; 򹚪.1,; [P1, V6]; xn--n433d.1,; ; ;  # .1,
-xn--n433d.1,; 򹚪.1,; [P1, V6]; xn--n433d.1,; ; ;  # .1,
-xn--n433d.xn--v07h; 򹚪.🄂; [V6]; xn--n433d.xn--v07h; ; ;  # .🄂
-𑍨刍.🛦; ; [V5]; xn--rbry728b.xn--y88h; ; ;  # 𑍨刍.🛦
-xn--rbry728b.xn--y88h; 𑍨刍.🛦; [V5]; xn--rbry728b.xn--y88h; ; ;  # 𑍨刍.🛦
-󠌏3｡ᯱ𝟒; 󠌏3.ᯱ4; [P1, V5, V6]; xn--3-ib31m.xn--4-pql; ; ;  # 3.ᯱ4
-󠌏3。ᯱ4; 󠌏3.ᯱ4; [P1, V5, V6]; xn--3-ib31m.xn--4-pql; ; ;  # 3.ᯱ4
-xn--3-ib31m.xn--4-pql; 󠌏3.ᯱ4; [V5, V6]; xn--3-ib31m.xn--4-pql; ; ;  # 3.ᯱ4
-ڇ６Ⴔ辘.ﴢڇ‌; ڇ6Ⴔ辘.صيڇ‌; [B2, B3, C1, P1, V6]; xn--6-gsc039eqq6k.xn--0gb6bxkx18g; ; xn--6-gsc039eqq6k.xn--0gb6bxk; [B2, B3, P1, V6] # ڇ6Ⴔ辘.صيڇ
-ڇ6Ⴔ辘.صيڇ‌; ; [B2, B3, C1, P1, V6]; xn--6-gsc039eqq6k.xn--0gb6bxkx18g; ; xn--6-gsc039eqq6k.xn--0gb6bxk; [B2, B3, P1, V6] # ڇ6Ⴔ辘.صيڇ
-ڇ6ⴔ辘.صيڇ‌; ; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; xn--6-gsc2270akm6f.xn--0gb6bxk; [B2, B3] # ڇ6ⴔ辘.صيڇ
-xn--6-gsc2270akm6f.xn--0gb6bxk; ڇ6ⴔ辘.صيڇ; [B2, B3]; xn--6-gsc2270akm6f.xn--0gb6bxk; ; ;  # ڇ6ⴔ辘.صيڇ
-xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ڇ6ⴔ辘.صيڇ‌; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; ;  # ڇ6ⴔ辘.صيڇ
-xn--6-gsc039eqq6k.xn--0gb6bxk; ڇ6Ⴔ辘.صيڇ; [B2, B3, V6]; xn--6-gsc039eqq6k.xn--0gb6bxk; ; ;  # ڇ6Ⴔ辘.صيڇ
-xn--6-gsc039eqq6k.xn--0gb6bxkx18g; ڇ6Ⴔ辘.صيڇ‌; [B2, B3, C1, V6]; xn--6-gsc039eqq6k.xn--0gb6bxkx18g; ; ;  # ڇ6Ⴔ辘.صيڇ
-ڇ６ⴔ辘.ﴢڇ‌; ڇ6ⴔ辘.صيڇ‌; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; xn--6-gsc2270akm6f.xn--0gb6bxk; [B2, B3] # ڇ6ⴔ辘.صيڇ
-󠄍.𐮭𞰬򻫞۹; .𐮭𞰬򻫞۹; [B2, P1, V6, X4_2]; .xn--mmb3954kd0uf1zx7f; [B2, P1, V6, A4_2]; ;  # .𐮭۹
-.xn--mmb3954kd0uf1zx7f; .𐮭𞰬򻫞۹; [B2, V6, X4_2]; .xn--mmb3954kd0uf1zx7f; [B2, V6, A4_2]; ;  # .𐮭۹
-꡽≯．򻲀򒳄; ꡽≯.򻲀򒳄; [P1, V6]; xn--hdh8193c.xn--5z40cp629b; ; ;  # ≯.
-꡽≯．򻲀򒳄; ꡽≯.򻲀򒳄; [P1, V6]; xn--hdh8193c.xn--5z40cp629b; ; ;  # ≯.
-꡽≯.򻲀򒳄; ; [P1, V6]; xn--hdh8193c.xn--5z40cp629b; ; ;  # ≯.
-꡽≯.򻲀򒳄; ꡽≯.򻲀򒳄; [P1, V6]; xn--hdh8193c.xn--5z40cp629b; ; ;  # ≯.
-xn--hdh8193c.xn--5z40cp629b; ꡽≯.򻲀򒳄; [V6]; xn--hdh8193c.xn--5z40cp629b; ; ;  # ≯.
-ςოٻ.ςܔ; ; [B5, B6]; xn--3xa80l26n.xn--3xa41o; ; xn--4xa60l26n.xn--4xa21o;  # ςოٻ.ςܔ
-ΣᲝٻ.Σܔ; σოٻ.σܔ; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ;  # σოٻ.σܔ
-σოٻ.σܔ; ; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ;  # σოٻ.σܔ
-Σოٻ.σܔ; σოٻ.σܔ; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ;  # σოٻ.σܔ
-xn--4xa60l26n.xn--4xa21o; σოٻ.σܔ; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ;  # σოٻ.σܔ
-Σოٻ.ςܔ; σოٻ.ςܔ; [B5, B6]; xn--4xa60l26n.xn--3xa41o; ; xn--4xa60l26n.xn--4xa21o;  # σოٻ.ςܔ
-σოٻ.ςܔ; ; [B5, B6]; xn--4xa60l26n.xn--3xa41o; ; xn--4xa60l26n.xn--4xa21o;  # σოٻ.ςܔ
-xn--4xa60l26n.xn--3xa41o; σოٻ.ςܔ; [B5, B6]; xn--4xa60l26n.xn--3xa41o; ; ;  # σოٻ.ςܔ
-xn--3xa80l26n.xn--3xa41o; ςოٻ.ςܔ; [B5, B6]; xn--3xa80l26n.xn--3xa41o; ; ;  # ςოٻ.ςܔ
-Σოٻ.Σܔ; σოٻ.σܔ; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ;  # σოٻ.σܔ
-򄖚݈𠄯ݟ｡󠛩; 򄖚݈𠄯ݟ.󠛩; [B1, B5, B6, P1, V6]; xn--vob0c4369twfv8b.xn--kl46e; ; ;  # ݈𠄯ݟ.
-򄖚݈𠄯ݟ。󠛩; 򄖚݈𠄯ݟ.󠛩; [B1, B5, B6, P1, V6]; xn--vob0c4369twfv8b.xn--kl46e; ; ;  # ݈𠄯ݟ.
-xn--vob0c4369twfv8b.xn--kl46e; 򄖚݈𠄯ݟ.󠛩; [B1, B5, B6, V6]; xn--vob0c4369twfv8b.xn--kl46e; ; ;  # ݈𠄯ݟ.
-󠳛．‍䤫≠Ⴞ; 󠳛.‍䤫≠Ⴞ; [C2, P1, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [P1, V6] # .䤫≠Ⴞ
-󠳛．‍䤫≠Ⴞ; 󠳛.‍䤫≠Ⴞ; [C2, P1, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [P1, V6] # .䤫≠Ⴞ
-󠳛.‍䤫≠Ⴞ; ; [C2, P1, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [P1, V6] # .䤫≠Ⴞ
-󠳛.‍䤫≠Ⴞ; 󠳛.‍䤫≠Ⴞ; [C2, P1, V6]; xn--1t56e.xn--2nd159e9vb743e; ; xn--1t56e.xn--2nd141ghl2a; [P1, V6] # .䤫≠Ⴞ
-󠳛.‍䤫≠ⴞ; 󠳛.‍䤫≠ⴞ; [C2, P1, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [P1, V6] # .䤫≠ⴞ
-󠳛.‍䤫≠ⴞ; ; [C2, P1, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [P1, V6] # .䤫≠ⴞ
-xn--1t56e.xn--1ch153bqvw; 󠳛.䤫≠ⴞ; [V6]; xn--1t56e.xn--1ch153bqvw; ; ;  # .䤫≠ⴞ
-xn--1t56e.xn--1ug73gzzpwi3a; 󠳛.‍䤫≠ⴞ; [C2, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; ;  # .䤫≠ⴞ
-xn--1t56e.xn--2nd141ghl2a; 󠳛.䤫≠Ⴞ; [V6]; xn--1t56e.xn--2nd141ghl2a; ; ;  # .䤫≠Ⴞ
-xn--1t56e.xn--2nd159e9vb743e; 󠳛.‍䤫≠Ⴞ; [C2, V6]; xn--1t56e.xn--2nd159e9vb743e; ; ;  # .䤫≠Ⴞ
-󠳛．‍䤫≠ⴞ; 󠳛.‍䤫≠ⴞ; [C2, P1, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [P1, V6] # .䤫≠ⴞ
-󠳛．‍䤫≠ⴞ; 󠳛.‍䤫≠ⴞ; [C2, P1, V6]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [P1, V6] # .䤫≠ⴞ
+xn----rgn530d.xn--1-0mba52321c; \u200Cⴠ-.1σ𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; ;  # ⴠ-.1σ𞴺σ
+\u200CჀ-.1ς𞴺Σ; \u200Cⴠ-.1ς𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺σ
+\u200Cⴠ-.1ς𞴺σ; ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺σ
+xn----rgn530d.xn--1-ymbd52321c; \u200Cⴠ-.1ς𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; ;  # ⴠ-.1ς𞴺σ
+xn----rgn530d.xn--1-ymba92321c; \u200Cⴠ-.1ς𞴺ς; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; ;  # ⴠ-.1ς𞴺ς
+\u200Cⴠ-.𝟷ς𞴺ς; \u200Cⴠ-.1ς𞴺ς; [B1, C1, V3]; xn----rgn530d.xn--1-ymba92321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺ς
+\u200CჀ-.𝟷Σ𞴺Σ; \u200Cⴠ-.1σ𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1σ𞴺σ
+\u200Cⴠ-.𝟷σ𞴺σ; \u200Cⴠ-.1σ𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1σ𞴺σ
+\u200CჀ-.𝟷σ𞴺Σ; \u200Cⴠ-.1σ𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-0mba52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1σ𞴺σ
+\u200CჀ-.𝟷ς𞴺Σ; \u200Cⴠ-.1ς𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺σ
+\u200Cⴠ-.𝟷ς𞴺σ; \u200Cⴠ-.1ς𞴺σ; [B1, C1, V3]; xn----rgn530d.xn--1-ymbd52321c; ; xn----2ws.xn--1-0mba52321c; [B1, B6, V3] # ⴠ-.1ς𞴺σ
+xn----z1g.xn--1-0mba52321c; Ⴠ-.1σ𞴺σ; [B1, B6, V3, V7]; xn----z1g.xn--1-0mba52321c; ; ;  # Ⴠ-.1σ𞴺σ
+xn----z1g168i.xn--1-0mba52321c; \u200CჀ-.1σ𞴺σ; [B1, C1, V3, V7]; xn----z1g168i.xn--1-0mba52321c; ; ;  # Ⴠ-.1σ𞴺σ
+xn----z1g168i.xn--1-ymbd52321c; \u200CჀ-.1ς𞴺σ; [B1, C1, V3, V7]; xn----z1g168i.xn--1-ymbd52321c; ; ;  # Ⴠ-.1ς𞴺σ
+xn----z1g168i.xn--1-ymba92321c; \u200CჀ-.1ς𞴺ς; [B1, C1, V3, V7]; xn----z1g168i.xn--1-ymba92321c; ; ;  # Ⴠ-.1ς𞴺ς
+𑲘󠄒𓑡｡𝟪Ⴜ; 𑲘𓑡.8ⴜ; [V6]; xn--7m3d291b.xn--8-vws; ; ;  # 𑲘𓑡.8ⴜ
+𑲘󠄒𓑡。8Ⴜ; 𑲘𓑡.8ⴜ; [V6]; xn--7m3d291b.xn--8-vws; ; ;  # 𑲘𓑡.8ⴜ
+𑲘󠄒𓑡。8ⴜ; 𑲘𓑡.8ⴜ; [V6]; xn--7m3d291b.xn--8-vws; ; ;  # 𑲘𓑡.8ⴜ
+xn--7m3d291b.xn--8-vws; 𑲘𓑡.8ⴜ; [V6]; xn--7m3d291b.xn--8-vws; ; ;  # 𑲘𓑡.8ⴜ
+𑲘󠄒𓑡｡𝟪ⴜ; 𑲘𓑡.8ⴜ; [V6]; xn--7m3d291b.xn--8-vws; ; ;  # 𑲘𓑡.8ⴜ
+xn--7m3d291b.xn--8-s1g; 𑲘𓑡.8Ⴜ; [V6, V7]; xn--7m3d291b.xn--8-s1g; ; ;  # 𑲘𓑡.8Ⴜ
+䪏\u06AB\u07E0\u0941｡뭕ᢝ\u17B9; 䪏\u06AB\u07E0\u0941.뭕ᢝ\u17B9; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ;  # 䪏ګߠु.뭕ᢝឹ
+䪏\u06AB\u07E0\u0941｡뭕ᢝ\u17B9; 䪏\u06AB\u07E0\u0941.뭕ᢝ\u17B9; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ;  # 䪏ګߠु.뭕ᢝឹ
+䪏\u06AB\u07E0\u0941。뭕ᢝ\u17B9; 䪏\u06AB\u07E0\u0941.뭕ᢝ\u17B9; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ;  # 䪏ګߠु.뭕ᢝឹ
+䪏\u06AB\u07E0\u0941。뭕ᢝ\u17B9; 䪏\u06AB\u07E0\u0941.뭕ᢝ\u17B9; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ;  # 䪏ګߠु.뭕ᢝឹ
+xn--ekb23dj4at01n.xn--43e96bh910b; 䪏\u06AB\u07E0\u0941.뭕ᢝ\u17B9; [B5, B6]; xn--ekb23dj4at01n.xn--43e96bh910b; ; ;  # 䪏ګߠु.뭕ᢝឹ
+\u1BAB｡🂉󠁰; \u1BAB.🂉󠁰; [V6, V7]; xn--zxf.xn--fx7ho0250c; ; ;  # ᮫.🂉
+\u1BAB。🂉󠁰; \u1BAB.🂉󠁰; [V6, V7]; xn--zxf.xn--fx7ho0250c; ; ;  # ᮫.🂉
+xn--zxf.xn--fx7ho0250c; \u1BAB.🂉󠁰; [V6, V7]; xn--zxf.xn--fx7ho0250c; ; ;  # ᮫.🂉
+󩎃\u0AC4。ς\u200D𐹮𑈵; 󩎃\u0AC4.ς\u200D𐹮𑈵; [B5, C2, V7]; xn--dfc53161q.xn--3xa006lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, V7] # ૄ.ς𐹮𑈵
+󩎃\u0AC4。Σ\u200D𐹮𑈵; 󩎃\u0AC4.σ\u200D𐹮𑈵; [B5, C2, V7]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, V7] # ૄ.σ𐹮𑈵
+󩎃\u0AC4。σ\u200D𐹮𑈵; 󩎃\u0AC4.σ\u200D𐹮𑈵; [B5, C2, V7]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; xn--dfc53161q.xn--4xa8467k5mc; [B5, V7] # ૄ.σ𐹮𑈵
+xn--dfc53161q.xn--4xa8467k5mc; 󩎃\u0AC4.σ𐹮𑈵; [B5, V7]; xn--dfc53161q.xn--4xa8467k5mc; ; ;  # ૄ.σ𐹮𑈵
+xn--dfc53161q.xn--4xa895lzo7nsfd; 󩎃\u0AC4.σ\u200D𐹮𑈵; [B5, C2, V7]; xn--dfc53161q.xn--4xa895lzo7nsfd; ; ;  # ૄ.σ𐹮𑈵
+xn--dfc53161q.xn--3xa006lzo7nsfd; 󩎃\u0AC4.ς\u200D𐹮𑈵; [B5, C2, V7]; xn--dfc53161q.xn--3xa006lzo7nsfd; ; ;  # ૄ.ς𐹮𑈵
+𐫀ᡂ𑜫．𑘿; 𐫀ᡂ𑜫.𑘿; [B1, B2, B3, V6]; xn--17e9625js1h.xn--sb2d; ; ;  # 𐫀ᡂ𑜫.𑘿
+𐫀ᡂ𑜫.𑘿; ; [B1, B2, B3, V6]; xn--17e9625js1h.xn--sb2d; ; ;  # 𐫀ᡂ𑜫.𑘿
+xn--17e9625js1h.xn--sb2d; 𐫀ᡂ𑜫.𑘿; [B1, B2, B3, V6]; xn--17e9625js1h.xn--sb2d; ; ;  # 𐫀ᡂ𑜫.𑘿
+󬚶󸋖򖩰-。\u200C; 󬚶󸋖򖩰-.\u200C; [C1, V3, V7]; xn----7i12hu122k9ire.xn--0ug; ; xn----7i12hu122k9ire.; [V3, V7, A4_2] # -.
+xn----7i12hu122k9ire.; 󬚶󸋖򖩰-.; [V3, V7]; xn----7i12hu122k9ire.; [V3, V7, A4_2]; ;  # -.
+xn----7i12hu122k9ire.xn--0ug; 󬚶󸋖򖩰-.\u200C; [C1, V3, V7]; xn----7i12hu122k9ire.xn--0ug; ; ;  # -.
+𐹣．\u07C2; 𐹣.\u07C2; [B1]; xn--bo0d.xn--dsb; ; ;  # 𐹣.߂
+𐹣.\u07C2; ; [B1]; xn--bo0d.xn--dsb; ; ;  # 𐹣.߂
+xn--bo0d.xn--dsb; 𐹣.\u07C2; [B1]; xn--bo0d.xn--dsb; ; ;  # 𐹣.߂
+-\u07E1｡Ↄ; -\u07E1.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ;  # -ߡ.ↄ
+-\u07E1。Ↄ; -\u07E1.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ;  # -ߡ.ↄ
+-\u07E1。ↄ; -\u07E1.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ;  # -ߡ.ↄ
+xn----8cd.xn--r5g; -\u07E1.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ;  # -ߡ.ↄ
+-\u07E1｡ↄ; -\u07E1.ↄ; [B1, V3]; xn----8cd.xn--r5g; ; ;  # -ߡ.ↄ
+xn----8cd.xn--q5g; -\u07E1.Ↄ; [B1, V3, V7]; xn----8cd.xn--q5g; ; ;  # -ߡ.Ↄ
+\u200D-︒󠄄。ß哑\u200C𐵿; \u200D-︒.ß哑\u200C𐵿; [B1, B5, B6, C1, C2, V7]; xn----tgnt341h.xn--zca670n5f0binyk; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, V3, V7] # -︒.ß哑𐵿
+\u200D-。󠄄。ß哑\u200C𐵿; \u200D-..ß哑\u200C𐵿; [B1, B5, B6, C1, C2, V3, X4_2]; xn----tgn..xn--zca670n5f0binyk; [B1, B5, B6, C1, C2, V3, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, A4_2] # -..ß哑𐵿
+\u200D-。󠄄。SS哑\u200C𐵟; \u200D-..ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V3, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, A4_2] # -..ss哑𐵿
+\u200D-。󠄄。ss哑\u200C𐵿; \u200D-..ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V3, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, A4_2] # -..ss哑𐵿
+\u200D-。󠄄。Ss哑\u200C𐵟; \u200D-..ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V3, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, A4_2] # -..ss哑𐵿
+-..xn--ss-h46c5711e; -..ss哑𐵿; [B1, B5, B6, V3, X4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, A4_2]; ;  # -..ss哑𐵿
+xn----tgn..xn--ss-k1ts75zb8ym; \u200D-..ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V3, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, A4_2]; ;  # -..ss哑𐵿
+xn----tgn..xn--zca670n5f0binyk; \u200D-..ß哑\u200C𐵿; [B1, B5, B6, C1, C2, V3, X4_2]; xn----tgn..xn--zca670n5f0binyk; [B1, B5, B6, C1, C2, V3, A4_2]; ;  # -..ß哑𐵿
+\u200D-︒󠄄。SS哑\u200C𐵟; \u200D-︒.ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V7]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, V3, V7] # -︒.ss哑𐵿
+\u200D-︒󠄄。ss哑\u200C𐵿; \u200D-︒.ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V7]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, V3, V7] # -︒.ss哑𐵿
+\u200D-︒󠄄。Ss哑\u200C𐵟; \u200D-︒.ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V7]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, V3, V7] # -︒.ss哑𐵿
+xn----o89h.xn--ss-h46c5711e; -︒.ss哑𐵿; [B1, B5, B6, V3, V7]; xn----o89h.xn--ss-h46c5711e; ; ;  # -︒.ss哑𐵿
+xn----tgnt341h.xn--ss-k1ts75zb8ym; \u200D-︒.ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V7]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; ;  # -︒.ss哑𐵿
+xn----tgnt341h.xn--zca670n5f0binyk; \u200D-︒.ß哑\u200C𐵿; [B1, B5, B6, C1, C2, V7]; xn----tgnt341h.xn--zca670n5f0binyk; ; ;  # -︒.ß哑𐵿
+\u200D-。󠄄。SS哑\u200C𐵿; \u200D-..ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V3, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, A4_2] # -..ss哑𐵿
+\u200D-。󠄄。Ss哑\u200C𐵿; \u200D-..ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V3, X4_2]; xn----tgn..xn--ss-k1ts75zb8ym; [B1, B5, B6, C1, C2, V3, A4_2]; -..xn--ss-h46c5711e; [B1, B5, B6, V3, A4_2] # -..ss哑𐵿
+\u200D-︒󠄄。SS哑\u200C𐵿; \u200D-︒.ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V7]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, V3, V7] # -︒.ss哑𐵿
+\u200D-︒󠄄。Ss哑\u200C𐵿; \u200D-︒.ss哑\u200C𐵿; [B1, B5, B6, C1, C2, V7]; xn----tgnt341h.xn--ss-k1ts75zb8ym; ; xn----o89h.xn--ss-h46c5711e; [B1, B5, B6, V3, V7] # -︒.ss哑𐵿
+︒．\uFE2F𑑂; ︒.𑑂\uFE2F; [V6, V7]; xn--y86c.xn--s96cu30b; ; ;  # ︒.𑑂︯
+︒．𑑂\uFE2F; ︒.𑑂\uFE2F; [V6, V7]; xn--y86c.xn--s96cu30b; ; ;  # ︒.𑑂︯
+。.𑑂\uFE2F; ..𑑂\uFE2F; [V6, X4_2]; ..xn--s96cu30b; [V6, A4_2]; ;  # ..𑑂︯
+..xn--s96cu30b; ..𑑂\uFE2F; [V6, X4_2]; ..xn--s96cu30b; [V6, A4_2]; ;  # ..𑑂︯
+xn--y86c.xn--s96cu30b; ︒.𑑂\uFE2F; [V6, V7]; xn--y86c.xn--s96cu30b; ; ;  # ︒.𑑂︯
+\uA92C。\u200D; \uA92C.\u200D; [C2, V6]; xn--zi9a.xn--1ug; ; xn--zi9a.; [V6, A4_2] # ꤬.
+xn--zi9a.; \uA92C.; [V6]; xn--zi9a.; [V6, A4_2]; ;  # ꤬.
+xn--zi9a.xn--1ug; \uA92C.\u200D; [C2, V6]; xn--zi9a.xn--1ug; ; ;  # ꤬.
+\u200D󠸡｡\uFCD7; \u200D󠸡.\u0647\u062C; [B1, C2, V7]; xn--1ug80651l.xn--rgb7c; ; xn--d356e.xn--rgb7c; [B1, V7] # .هج
+\u200D󠸡。\u0647\u062C; \u200D󠸡.\u0647\u062C; [B1, C2, V7]; xn--1ug80651l.xn--rgb7c; ; xn--d356e.xn--rgb7c; [B1, V7] # .هج
+xn--d356e.xn--rgb7c; 󠸡.\u0647\u062C; [B1, V7]; xn--d356e.xn--rgb7c; ; ;  # .هج
+xn--1ug80651l.xn--rgb7c; \u200D󠸡.\u0647\u062C; [B1, C2, V7]; xn--1ug80651l.xn--rgb7c; ; ;  # .هج
+-Ⴄ𝟢\u0663．𑍴ς; -ⴄ0\u0663.𑍴ς; [B1, V3, V6]; xn---0-iyd8660b.xn--3xa1220l; ; xn---0-iyd8660b.xn--4xa9120l;  # -ⴄ0٣.𑍴ς
+-Ⴄ0\u0663.𑍴ς; -ⴄ0\u0663.𑍴ς; [B1, V3, V6]; xn---0-iyd8660b.xn--3xa1220l; ; xn---0-iyd8660b.xn--4xa9120l;  # -ⴄ0٣.𑍴ς
+-ⴄ0\u0663.𑍴ς; ; [B1, V3, V6]; xn---0-iyd8660b.xn--3xa1220l; ; xn---0-iyd8660b.xn--4xa9120l;  # -ⴄ0٣.𑍴ς
+-Ⴄ0\u0663.𑍴Σ; -ⴄ0\u0663.𑍴σ; [B1, V3, V6]; xn---0-iyd8660b.xn--4xa9120l; ; ;  # -ⴄ0٣.𑍴σ
+-ⴄ0\u0663.𑍴σ; ; [B1, V3, V6]; xn---0-iyd8660b.xn--4xa9120l; ; ;  # -ⴄ0٣.𑍴σ
+xn---0-iyd8660b.xn--4xa9120l; -ⴄ0\u0663.𑍴σ; [B1, V3, V6]; xn---0-iyd8660b.xn--4xa9120l; ; ;  # -ⴄ0٣.𑍴σ
+xn---0-iyd8660b.xn--3xa1220l; -ⴄ0\u0663.𑍴ς; [B1, V3, V6]; xn---0-iyd8660b.xn--3xa1220l; ; ;  # -ⴄ0٣.𑍴ς
+-ⴄ𝟢\u0663．𑍴ς; -ⴄ0\u0663.𑍴ς; [B1, V3, V6]; xn---0-iyd8660b.xn--3xa1220l; ; xn---0-iyd8660b.xn--4xa9120l;  # -ⴄ0٣.𑍴ς
+-Ⴄ𝟢\u0663．𑍴Σ; -ⴄ0\u0663.𑍴σ; [B1, V3, V6]; xn---0-iyd8660b.xn--4xa9120l; ; ;  # -ⴄ0٣.𑍴σ
+-ⴄ𝟢\u0663．𑍴σ; -ⴄ0\u0663.𑍴σ; [B1, V3, V6]; xn---0-iyd8660b.xn--4xa9120l; ; ;  # -ⴄ0٣.𑍴σ
+xn---0-iyd216h.xn--4xa9120l; -Ⴄ0\u0663.𑍴σ; [B1, V3, V6, V7]; xn---0-iyd216h.xn--4xa9120l; ; ;  # -Ⴄ0٣.𑍴σ
+xn---0-iyd216h.xn--3xa1220l; -Ⴄ0\u0663.𑍴ς; [B1, V3, V6, V7]; xn---0-iyd216h.xn--3xa1220l; ; ;  # -Ⴄ0٣.𑍴ς
+󦈄。-; 󦈄.-; [V3, V7]; xn--xm38e.-; ; ;  # .-
+xn--xm38e.-; 󦈄.-; [V3, V7]; xn--xm38e.-; ; ;  # .-
+⋠𐋮．򶈮\u0F18ß≯; ⋠𐋮.򶈮\u0F18ß≯; [V7]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a;  # ⋠𐋮.༘ß≯
+≼\u0338𐋮．򶈮\u0F18ß>\u0338; ⋠𐋮.򶈮\u0F18ß≯; [V7]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a;  # ⋠𐋮.༘ß≯
+⋠𐋮.򶈮\u0F18ß≯; ; [V7]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a;  # ⋠𐋮.༘ß≯
+≼\u0338𐋮.򶈮\u0F18ß>\u0338; ⋠𐋮.򶈮\u0F18ß≯; [V7]; xn--pgh4639f.xn--zca593eo6oc013y; ; xn--pgh4639f.xn--ss-ifj426nle504a;  # ⋠𐋮.༘ß≯
+≼\u0338𐋮.򶈮\u0F18SS>\u0338; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+⋠𐋮.򶈮\u0F18SS≯; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+⋠𐋮.򶈮\u0F18ss≯; ; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+≼\u0338𐋮.򶈮\u0F18ss>\u0338; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+≼\u0338𐋮.򶈮\u0F18Ss>\u0338; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+⋠𐋮.򶈮\u0F18Ss≯; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+xn--pgh4639f.xn--ss-ifj426nle504a; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+xn--pgh4639f.xn--zca593eo6oc013y; ⋠𐋮.򶈮\u0F18ß≯; [V7]; xn--pgh4639f.xn--zca593eo6oc013y; ; ;  # ⋠𐋮.༘ß≯
+≼\u0338𐋮．򶈮\u0F18SS>\u0338; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+⋠𐋮．򶈮\u0F18SS≯; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+⋠𐋮．򶈮\u0F18ss≯; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+≼\u0338𐋮．򶈮\u0F18ss>\u0338; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+≼\u0338𐋮．򶈮\u0F18Ss>\u0338; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+⋠𐋮．򶈮\u0F18Ss≯; ⋠𐋮.򶈮\u0F18ss≯; [V7]; xn--pgh4639f.xn--ss-ifj426nle504a; ; ;  # ⋠𐋮.༘ss≯
+1𐋸\u0664｡󠢮\uFBA4񷝊; 1𐋸\u0664.󠢮\u06C0񷝊; [B1, V7]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ;  # 1𐋸٤.ۀ
+1𐋸\u0664。󠢮\u06C0񷝊; 1𐋸\u0664.󠢮\u06C0񷝊; [B1, V7]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ;  # 1𐋸٤.ۀ
+1𐋸\u0664。󠢮\u06D5\u0654񷝊; 1𐋸\u0664.󠢮\u06C0񷝊; [B1, V7]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ;  # 1𐋸٤.ۀ
+xn--1-hqc3905q.xn--zkb83268gqee4a; 1𐋸\u0664.󠢮\u06C0񷝊; [B1, V7]; xn--1-hqc3905q.xn--zkb83268gqee4a; ; ;  # 1𐋸٤.ۀ
+儭-｡𐹴Ⴢ񥳠\u200C; 儭-.𐹴ⴢ񥳠\u200C; [B1, B6, C1, V3, V7]; xn----gz7a.xn--0ug472cfq0pus98b; ; xn----gz7a.xn--qlj9223eywx0b; [B1, B6, V3, V7] # 儭-.𐹴ⴢ
+儭-。𐹴Ⴢ񥳠\u200C; 儭-.𐹴ⴢ񥳠\u200C; [B1, B6, C1, V3, V7]; xn----gz7a.xn--0ug472cfq0pus98b; ; xn----gz7a.xn--qlj9223eywx0b; [B1, B6, V3, V7] # 儭-.𐹴ⴢ
+儭-。𐹴ⴢ񥳠\u200C; 儭-.𐹴ⴢ񥳠\u200C; [B1, B6, C1, V3, V7]; xn----gz7a.xn--0ug472cfq0pus98b; ; xn----gz7a.xn--qlj9223eywx0b; [B1, B6, V3, V7] # 儭-.𐹴ⴢ
+xn----gz7a.xn--qlj9223eywx0b; 儭-.𐹴ⴢ񥳠; [B1, B6, V3, V7]; xn----gz7a.xn--qlj9223eywx0b; ; ;  # 儭-.𐹴ⴢ
+xn----gz7a.xn--0ug472cfq0pus98b; 儭-.𐹴ⴢ񥳠\u200C; [B1, B6, C1, V3, V7]; xn----gz7a.xn--0ug472cfq0pus98b; ; ;  # 儭-.𐹴ⴢ
+儭-｡𐹴ⴢ񥳠\u200C; 儭-.𐹴ⴢ񥳠\u200C; [B1, B6, C1, V3, V7]; xn----gz7a.xn--0ug472cfq0pus98b; ; xn----gz7a.xn--qlj9223eywx0b; [B1, B6, V3, V7] # 儭-.𐹴ⴢ
+xn----gz7a.xn--6nd5001kyw98a; 儭-.𐹴Ⴢ񥳠; [B1, B6, V3, V7]; xn----gz7a.xn--6nd5001kyw98a; ; ;  # 儭-.𐹴Ⴢ
+xn----gz7a.xn--6nd249ejl4pusr7b; 儭-.𐹴Ⴢ񥳠\u200C; [B1, B6, C1, V3, V7]; xn----gz7a.xn--6nd249ejl4pusr7b; ; ;  # 儭-.𐹴Ⴢ
+𝟺𐋷\u06B9．𞤭򿍡; 4𐋷\u06B9.𞤭򿍡; [B1, B2, B3, V7]; xn--4-cvc5384q.xn--le6hi7322b; ; ;  # 4𐋷ڹ.𞤭
+4𐋷\u06B9.𞤭򿍡; ; [B1, B2, B3, V7]; xn--4-cvc5384q.xn--le6hi7322b; ; ;  # 4𐋷ڹ.𞤭
+4𐋷\u06B9.𞤋򿍡; 4𐋷\u06B9.𞤭򿍡; [B1, B2, B3, V7]; xn--4-cvc5384q.xn--le6hi7322b; ; ;  # 4𐋷ڹ.𞤭
+xn--4-cvc5384q.xn--le6hi7322b; 4𐋷\u06B9.𞤭򿍡; [B1, B2, B3, V7]; xn--4-cvc5384q.xn--le6hi7322b; ; ;  # 4𐋷ڹ.𞤭
+𝟺𐋷\u06B9．𞤋򿍡; 4𐋷\u06B9.𞤭򿍡; [B1, B2, B3, V7]; xn--4-cvc5384q.xn--le6hi7322b; ; ;  # 4𐋷ڹ.𞤭
+≯-ꡋ𑲣.⒈𐹭; ; [B1, V7]; xn----ogox061d5i8d.xn--tsh0666f; ; ;  # ≯-ꡋ𑲣.⒈𐹭
+>\u0338-ꡋ𑲣.⒈𐹭; ≯-ꡋ𑲣.⒈𐹭; [B1, V7]; xn----ogox061d5i8d.xn--tsh0666f; ; ;  # ≯-ꡋ𑲣.⒈𐹭
+≯-ꡋ𑲣.1.𐹭; ; [B1]; xn----ogox061d5i8d.1.xn--lo0d; ; ;  # ≯-ꡋ𑲣.1.𐹭
+>\u0338-ꡋ𑲣.1.𐹭; ≯-ꡋ𑲣.1.𐹭; [B1]; xn----ogox061d5i8d.1.xn--lo0d; ; ;  # ≯-ꡋ𑲣.1.𐹭
+xn----ogox061d5i8d.1.xn--lo0d; ≯-ꡋ𑲣.1.𐹭; [B1]; xn----ogox061d5i8d.1.xn--lo0d; ; ;  # ≯-ꡋ𑲣.1.𐹭
+xn----ogox061d5i8d.xn--tsh0666f; ≯-ꡋ𑲣.⒈𐹭; [B1, V7]; xn----ogox061d5i8d.xn--tsh0666f; ; ;  # ≯-ꡋ𑲣.⒈𐹭
+\u0330．󰜱蚀; \u0330.󰜱蚀; [V6, V7]; xn--xta.xn--e91aw9417e; ; ;  # ̰.蚀
+\u0330.󰜱蚀; ; [V6, V7]; xn--xta.xn--e91aw9417e; ; ;  # ̰.蚀
+xn--xta.xn--e91aw9417e; \u0330.󰜱蚀; [V6, V7]; xn--xta.xn--e91aw9417e; ; ;  # ̰.蚀
+\uFB39Ⴘ.𞡼𑇀ß\u20D7; \u05D9\u05BCⴘ.𞡼𑇀ß\u20D7; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; xn--kdb1d278n.xn--ss-yju5690ken9h;  # יּⴘ.𞡼𑇀ß⃗
+\u05D9\u05BCႸ.𞡼𑇀ß\u20D7; \u05D9\u05BCⴘ.𞡼𑇀ß\u20D7; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; xn--kdb1d278n.xn--ss-yju5690ken9h;  # יּⴘ.𞡼𑇀ß⃗
+\u05D9\u05BCⴘ.𞡼𑇀ß\u20D7; ; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; xn--kdb1d278n.xn--ss-yju5690ken9h;  # יּⴘ.𞡼𑇀ß⃗
+\u05D9\u05BCႸ.𞡼𑇀SS\u20D7; \u05D9\u05BCⴘ.𞡼𑇀ss\u20D7; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ;  # יּⴘ.𞡼𑇀ss⃗
+\u05D9\u05BCⴘ.𞡼𑇀ss\u20D7; ; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ;  # יּⴘ.𞡼𑇀ss⃗
+xn--kdb1d278n.xn--ss-yju5690ken9h; \u05D9\u05BCⴘ.𞡼𑇀ss\u20D7; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ;  # יּⴘ.𞡼𑇀ss⃗
+xn--kdb1d278n.xn--zca284nhg9nrrxg; \u05D9\u05BCⴘ.𞡼𑇀ß\u20D7; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; ;  # יּⴘ.𞡼𑇀ß⃗
+\uFB39ⴘ.𞡼𑇀ß\u20D7; \u05D9\u05BCⴘ.𞡼𑇀ß\u20D7; [B2, B3]; xn--kdb1d278n.xn--zca284nhg9nrrxg; ; xn--kdb1d278n.xn--ss-yju5690ken9h;  # יּⴘ.𞡼𑇀ß⃗
+\uFB39Ⴘ.𞡼𑇀SS\u20D7; \u05D9\u05BCⴘ.𞡼𑇀ss\u20D7; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ;  # יּⴘ.𞡼𑇀ss⃗
+\uFB39ⴘ.𞡼𑇀ss\u20D7; \u05D9\u05BCⴘ.𞡼𑇀ss\u20D7; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ;  # יּⴘ.𞡼𑇀ss⃗
+xn--kdb1d867b.xn--ss-yju5690ken9h; \u05D9\u05BCႸ.𞡼𑇀ss\u20D7; [B2, B3, V7]; xn--kdb1d867b.xn--ss-yju5690ken9h; ; ;  # יּႸ.𞡼𑇀ss⃗
+xn--kdb1d867b.xn--zca284nhg9nrrxg; \u05D9\u05BCႸ.𞡼𑇀ß\u20D7; [B2, B3, V7]; xn--kdb1d867b.xn--zca284nhg9nrrxg; ; ;  # יּႸ.𞡼𑇀ß⃗
+\u05D9\u05BCႸ.𞡼𑇀ss\u20D7; \u05D9\u05BCⴘ.𞡼𑇀ss\u20D7; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ;  # יּⴘ.𞡼𑇀ss⃗
+\uFB39Ⴘ.𞡼𑇀ss\u20D7; \u05D9\u05BCⴘ.𞡼𑇀ss\u20D7; [B2, B3]; xn--kdb1d278n.xn--ss-yju5690ken9h; ; ;  # יּⴘ.𞡼𑇀ss⃗
+\u1BA3𐹰򁱓｡凬; \u1BA3𐹰򁱓.凬; [B1, V6, V7]; xn--rxfz314ilg20c.xn--t9q; ; ;  # ᮣ𐹰.凬
+\u1BA3𐹰򁱓。凬; \u1BA3𐹰򁱓.凬; [B1, V6, V7]; xn--rxfz314ilg20c.xn--t9q; ; ;  # ᮣ𐹰.凬
+xn--rxfz314ilg20c.xn--t9q; \u1BA3𐹰򁱓.凬; [B1, V6, V7]; xn--rxfz314ilg20c.xn--t9q; ; ;  # ᮣ𐹰.凬
+🢟🄈\u200Dꡎ｡\u0F84; 🢟7,\u200Dꡎ.\u0F84; [C2, V6, U1]; xn--7,-n1t0654eqo3o.xn--3ed; ; xn--7,-gh9hg322i.xn--3ed; [V6, U1] # 🢟7,ꡎ.྄
+🢟7,\u200Dꡎ。\u0F84; 🢟7,\u200Dꡎ.\u0F84; [C2, V6, U1]; xn--7,-n1t0654eqo3o.xn--3ed; ; xn--7,-gh9hg322i.xn--3ed; [V6, U1] # 🢟7,ꡎ.྄
+xn--7,-gh9hg322i.xn--3ed; 🢟7,ꡎ.\u0F84; [V6, U1]; xn--7,-gh9hg322i.xn--3ed; ; ;  # 🢟7,ꡎ.྄
+xn--7,-n1t0654eqo3o.xn--3ed; 🢟7,\u200Dꡎ.\u0F84; [C2, V6, U1]; xn--7,-n1t0654eqo3o.xn--3ed; ; ;  # 🢟7,ꡎ.྄
+xn--nc9aq743ds0e.xn--3ed; 🢟🄈ꡎ.\u0F84; [V6, V7]; xn--nc9aq743ds0e.xn--3ed; ; ;  # 🢟🄈ꡎ.྄
+xn--1ug4874cfd0kbmg.xn--3ed; 🢟🄈\u200Dꡎ.\u0F84; [C2, V6, V7]; xn--1ug4874cfd0kbmg.xn--3ed; ; ;  # 🢟🄈ꡎ.྄
+ꡔ。\u1039ᢇ; ꡔ.\u1039ᢇ; [V6]; xn--tc9a.xn--9jd663b; ; ;  # ꡔ.္ᢇ
+xn--tc9a.xn--9jd663b; ꡔ.\u1039ᢇ; [V6]; xn--tc9a.xn--9jd663b; ; ;  # ꡔ.္ᢇ
+\u20EB≮.𝨖; ; [V6]; xn--e1g71d.xn--772h; ; ;  # ⃫≮.𝨖
+\u20EB<\u0338.𝨖; \u20EB≮.𝨖; [V6]; xn--e1g71d.xn--772h; ; ;  # ⃫≮.𝨖
+xn--e1g71d.xn--772h; \u20EB≮.𝨖; [V6]; xn--e1g71d.xn--772h; ; ;  # ⃫≮.𝨖
+Ⴢ≯褦．ᠪ\u07EAႾ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ>\u0338褦．ᠪ\u07EAႾ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ≯褦.ᠪ\u07EAႾ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ>\u0338褦.ᠪ\u07EAႾ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+ⴢ>\u0338褦.ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+ⴢ≯褦.ᠪ\u07EAⴞ\u0767; ; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ>\u0338褦.ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+xn--hdh433bev8e.xn--rpb5x392bcyt; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+ⴢ>\u0338褦．ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+ⴢ≯褦．ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ≯褦．ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+Ⴢ>\u0338褦．ᠪ\u07EAⴞ\u0767; ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6]; xn--hdh433bev8e.xn--rpb5x392bcyt; ; ;  # ⴢ≯褦.ᠪߪⴞݧ
+xn--6nd461g478e.xn--rpb5x392bcyt; Ⴢ≯褦.ᠪ\u07EAⴞ\u0767; [B5, B6, V7]; xn--6nd461g478e.xn--rpb5x392bcyt; ; ;  # Ⴢ≯褦.ᠪߪⴞݧ
+xn--6nd461g478e.xn--rpb5x49td2h; Ⴢ≯褦.ᠪ\u07EAႾ\u0767; [B5, B6, V7]; xn--6nd461g478e.xn--rpb5x49td2h; ; ;  # Ⴢ≯褦.ᠪߪႾݧ
+򊉆󠆒\u200C\uA953。𞤙\u067Bꡘ; 򊉆\u200C\uA953.𞤻\u067Bꡘ; [B2, B3, C1, V7]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; xn--3j9al6189a.xn--0ib8893fegvj; [B2, B3, V7] # ꥓.𞤻ٻꡘ
+򊉆󠆒\u200C\uA953。𞤻\u067Bꡘ; 򊉆\u200C\uA953.𞤻\u067Bꡘ; [B2, B3, C1, V7]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; xn--3j9al6189a.xn--0ib8893fegvj; [B2, B3, V7] # ꥓.𞤻ٻꡘ
+xn--3j9al6189a.xn--0ib8893fegvj; 򊉆\uA953.𞤻\u067Bꡘ; [B2, B3, V7]; xn--3j9al6189a.xn--0ib8893fegvj; ; ;  # ꥓.𞤻ٻꡘ
+xn--0ug8815chtz0e.xn--0ib8893fegvj; 򊉆\u200C\uA953.𞤻\u067Bꡘ; [B2, B3, C1, V7]; xn--0ug8815chtz0e.xn--0ib8893fegvj; ; ;  # ꥓.𞤻ٻꡘ
+\u200C.≯; ; [C1]; xn--0ug.xn--hdh; ; .xn--hdh; [A4_2] # .≯
+\u200C.>\u0338; \u200C.≯; [C1]; xn--0ug.xn--hdh; ; .xn--hdh; [A4_2] # .≯
+.xn--hdh; .≯; [X4_2]; .xn--hdh; [A4_2]; ;  # .≯
+xn--0ug.xn--hdh; \u200C.≯; [C1]; xn--0ug.xn--hdh; ; ;  # .≯
+𰅧񣩠-．\uABED-悜; 𰅧񣩠-.\uABED-悜; [V3, V6, V7]; xn----7m53aj640l.xn----8f4br83t; ; ;  # 𰅧-.꯭-悜
+𰅧񣩠-.\uABED-悜; ; [V3, V6, V7]; xn----7m53aj640l.xn----8f4br83t; ; ;  # 𰅧-.꯭-悜
+xn----7m53aj640l.xn----8f4br83t; 𰅧񣩠-.\uABED-悜; [V3, V6, V7]; xn----7m53aj640l.xn----8f4br83t; ; ;  # 𰅧-.꯭-悜
+ᡉ𶓧⬞ᢜ.-\u200D𞣑\u202E; ; [C2, V3, V7]; xn--87e0ol04cdl39e.xn----ugn5e3763s; ; xn--87e0ol04cdl39e.xn----qinu247r; [V3, V7] # ᡉ⬞ᢜ.-𞣑
+xn--87e0ol04cdl39e.xn----qinu247r; ᡉ𶓧⬞ᢜ.-𞣑\u202E; [V3, V7]; xn--87e0ol04cdl39e.xn----qinu247r; ; ;  # ᡉ⬞ᢜ.-𞣑
+xn--87e0ol04cdl39e.xn----ugn5e3763s; ᡉ𶓧⬞ᢜ.-\u200D𞣑\u202E; [C2, V3, V7]; xn--87e0ol04cdl39e.xn----ugn5e3763s; ; ;  # ᡉ⬞ᢜ.-𞣑
+⒐\u200C衃Ⴝ.\u0682Ⴔ; ⒐\u200C衃ⴝ.\u0682ⴔ; [B1, B2, B3, C1, V7]; xn--0ugx0px1izu2h.xn--7ib268q; ; xn--1shy52abz3f.xn--7ib268q; [B1, B2, B3, V7] # ⒐衃ⴝ.ڂⴔ
+9.\u200C衃Ⴝ.\u0682Ⴔ; 9.\u200C衃ⴝ.\u0682ⴔ; [B1, B2, B3, C1]; 9.xn--0ug862cbm5e.xn--7ib268q; ; 9.xn--llj1920a.xn--7ib268q; [B1, B2, B3] # 9.衃ⴝ.ڂⴔ
+9.\u200C衃ⴝ.\u0682ⴔ; ; [B1, B2, B3, C1]; 9.xn--0ug862cbm5e.xn--7ib268q; ; 9.xn--llj1920a.xn--7ib268q; [B1, B2, B3] # 9.衃ⴝ.ڂⴔ
+9.\u200C衃Ⴝ.\u0682ⴔ; 9.\u200C衃ⴝ.\u0682ⴔ; [B1, B2, B3, C1]; 9.xn--0ug862cbm5e.xn--7ib268q; ; 9.xn--llj1920a.xn--7ib268q; [B1, B2, B3] # 9.衃ⴝ.ڂⴔ
+9.xn--llj1920a.xn--7ib268q; 9.衃ⴝ.\u0682ⴔ; [B1, B2, B3]; 9.xn--llj1920a.xn--7ib268q; ; ;  # 9.衃ⴝ.ڂⴔ
+9.xn--0ug862cbm5e.xn--7ib268q; 9.\u200C衃ⴝ.\u0682ⴔ; [B1, B2, B3, C1]; 9.xn--0ug862cbm5e.xn--7ib268q; ; ;  # 9.衃ⴝ.ڂⴔ
+⒐\u200C衃ⴝ.\u0682ⴔ; ; [B1, B2, B3, C1, V7]; xn--0ugx0px1izu2h.xn--7ib268q; ; xn--1shy52abz3f.xn--7ib268q; [B1, B2, B3, V7] # ⒐衃ⴝ.ڂⴔ
+⒐\u200C衃Ⴝ.\u0682ⴔ; ⒐\u200C衃ⴝ.\u0682ⴔ; [B1, B2, B3, C1, V7]; xn--0ugx0px1izu2h.xn--7ib268q; ; xn--1shy52abz3f.xn--7ib268q; [B1, B2, B3, V7] # ⒐衃ⴝ.ڂⴔ
+xn--1shy52abz3f.xn--7ib268q; ⒐衃ⴝ.\u0682ⴔ; [B1, B2, B3, V7]; xn--1shy52abz3f.xn--7ib268q; ; ;  # ⒐衃ⴝ.ڂⴔ
+xn--0ugx0px1izu2h.xn--7ib268q; ⒐\u200C衃ⴝ.\u0682ⴔ; [B1, B2, B3, C1, V7]; xn--0ugx0px1izu2h.xn--7ib268q; ; ;  # ⒐衃ⴝ.ڂⴔ
+9.xn--1nd9032d.xn--7ib268q; 9.衃Ⴝ.\u0682ⴔ; [B1, B2, B3, V7]; 9.xn--1nd9032d.xn--7ib268q; ; ;  # 9.衃Ⴝ.ڂⴔ
+9.xn--1nd159e1y2f.xn--7ib268q; 9.\u200C衃Ⴝ.\u0682ⴔ; [B1, B2, B3, C1, V7]; 9.xn--1nd159e1y2f.xn--7ib268q; ; ;  # 9.衃Ⴝ.ڂⴔ
+9.xn--1nd9032d.xn--7ib433c; 9.衃Ⴝ.\u0682Ⴔ; [B1, B2, B3, V7]; 9.xn--1nd9032d.xn--7ib433c; ; ;  # 9.衃Ⴝ.ڂႴ
+9.xn--1nd159e1y2f.xn--7ib433c; 9.\u200C衃Ⴝ.\u0682Ⴔ; [B1, B2, B3, C1, V7]; 9.xn--1nd159e1y2f.xn--7ib433c; ; ;  # 9.衃Ⴝ.ڂႴ
+xn--1nd362hy16e.xn--7ib268q; ⒐衃Ⴝ.\u0682ⴔ; [B1, B2, B3, V7]; xn--1nd362hy16e.xn--7ib268q; ; ;  # ⒐衃Ⴝ.ڂⴔ
+xn--1nd159ecmd785k.xn--7ib268q; ⒐\u200C衃Ⴝ.\u0682ⴔ; [B1, B2, B3, C1, V7]; xn--1nd159ecmd785k.xn--7ib268q; ; ;  # ⒐衃Ⴝ.ڂⴔ
+xn--1nd362hy16e.xn--7ib433c; ⒐衃Ⴝ.\u0682Ⴔ; [B1, B2, B3, V7]; xn--1nd362hy16e.xn--7ib433c; ; ;  # ⒐衃Ⴝ.ڂႴ
+xn--1nd159ecmd785k.xn--7ib433c; ⒐\u200C衃Ⴝ.\u0682Ⴔ; [B1, B2, B3, C1, V7]; xn--1nd159ecmd785k.xn--7ib433c; ; ;  # ⒐衃Ⴝ.ڂႴ
+\u07E1\u200C。--⸬; \u07E1\u200C.--⸬; [B1, B3, C1, V3]; xn--8sb884j.xn-----iw2a; ; xn--8sb.xn-----iw2a; [B1, V3] # ߡ.--⸬
+xn--8sb.xn-----iw2a; \u07E1.--⸬; [B1, V3]; xn--8sb.xn-----iw2a; ; ;  # ߡ.--⸬
+xn--8sb884j.xn-----iw2a; \u07E1\u200C.--⸬; [B1, B3, C1, V3]; xn--8sb884j.xn-----iw2a; ; ;  # ߡ.--⸬
+𞥓．\u0718; 𞥓.\u0718; ; xn--of6h.xn--inb; ; ;  # 𞥓.ܘ
+𞥓.\u0718; ; ; xn--of6h.xn--inb; ; ;  # 𞥓.ܘ
+xn--of6h.xn--inb; 𞥓.\u0718; ; xn--of6h.xn--inb; ; ;  # 𞥓.ܘ
+󠄽-．-\u0DCA; -.-\u0DCA; [V3]; -.xn----ptf; ; ;  # -.-්
+󠄽-.-\u0DCA; -.-\u0DCA; [V3]; -.xn----ptf; ; ;  # -.-්
+-.xn----ptf; -.-\u0DCA; [V3]; -.xn----ptf; ; ;  # -.-්
+󠇝\u075B-.\u1927; \u075B-.\u1927; [B1, B3, V3, V6]; xn----k4c.xn--lff; ; ;  # ݛ-.ᤧ
+xn----k4c.xn--lff; \u075B-.\u1927; [B1, B3, V3, V6]; xn----k4c.xn--lff; ; ;  # ݛ-.ᤧ
+𞤴󠆹⦉𐹺.\uA806⒌󘤸; 𞤴⦉𐹺.\uA806⒌󘤸; [B1, V6, V7]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ;  # 𞤴⦉𐹺.꠆⒌
+𞤴󠆹⦉𐹺.\uA8065.󘤸; 𞤴⦉𐹺.\uA8065.󘤸; [B1, V6, V7]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ;  # 𞤴⦉𐹺.꠆5.
+𞤒󠆹⦉𐹺.\uA8065.󘤸; 𞤴⦉𐹺.\uA8065.󘤸; [B1, V6, V7]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ;  # 𞤴⦉𐹺.꠆5.
+xn--fuix729epewf.xn--5-w93e.xn--7b83e; 𞤴⦉𐹺.\uA8065.󘤸; [B1, V6, V7]; xn--fuix729epewf.xn--5-w93e.xn--7b83e; ; ;  # 𞤴⦉𐹺.꠆5.
+𞤒󠆹⦉𐹺.\uA806⒌󘤸; 𞤴⦉𐹺.\uA806⒌󘤸; [B1, V6, V7]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ;  # 𞤴⦉𐹺.꠆⒌
+xn--fuix729epewf.xn--xsh5029b6e77i; 𞤴⦉𐹺.\uA806⒌󘤸; [B1, V6, V7]; xn--fuix729epewf.xn--xsh5029b6e77i; ; ;  # 𞤴⦉𐹺.꠆⒌
+󠄸₀。𑖿\u200C𐦂\u200D; 0.𑖿\u200C𐦂\u200D; [B1, C2, V6]; 0.xn--0ugc8040p9hk; ; 0.xn--mn9cz2s; [B1, V6] # 0.𑖿𐦂
+󠄸0。𑖿\u200C𐦂\u200D; 0.𑖿\u200C𐦂\u200D; [B1, C2, V6]; 0.xn--0ugc8040p9hk; ; 0.xn--mn9cz2s; [B1, V6] # 0.𑖿𐦂
+0.xn--mn9cz2s; 0.𑖿𐦂; [B1, V6]; 0.xn--mn9cz2s; ; ;  # 0.𑖿𐦂
+0.xn--0ugc8040p9hk; 0.𑖿\u200C𐦂\u200D; [B1, C2, V6]; 0.xn--0ugc8040p9hk; ; ;  # 0.𑖿𐦂
+Ⴚ𐋸󠄄。𝟝ퟶ\u103A; ⴚ𐋸.5ퟶ\u103A; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
+Ⴚ𐋸󠄄。5ퟶ\u103A; ⴚ𐋸.5ퟶ\u103A; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
+ⴚ𐋸󠄄。5ퟶ\u103A; ⴚ𐋸.5ퟶ\u103A; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
+xn--ilj2659d.xn--5-dug9054m; ⴚ𐋸.5ퟶ\u103A; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
+ⴚ𐋸.5ퟶ\u103A; ; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
+Ⴚ𐋸.5ퟶ\u103A; ⴚ𐋸.5ퟶ\u103A; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
+ⴚ𐋸󠄄。𝟝ퟶ\u103A; ⴚ𐋸.5ퟶ\u103A; ; xn--ilj2659d.xn--5-dug9054m; ; ;  # ⴚ𐋸.5ퟶ်
+xn--ynd2415j.xn--5-dug9054m; Ⴚ𐋸.5ퟶ\u103A; [V7]; xn--ynd2415j.xn--5-dug9054m; ; ;  # Ⴚ𐋸.5ퟶ်
+\u200D-ᠹ﹪.\u1DE1\u1922; \u200D-ᠹ%.\u1DE1\u1922; [C2, V6, U1]; xn---%-u4oy48b.xn--gff52t; ; xn---%-u4o.xn--gff52t; [V3, V6, U1] # -ᠹ%.ᷡᤢ
+\u200D-ᠹ%.\u1DE1\u1922; ; [C2, V6, U1]; xn---%-u4oy48b.xn--gff52t; ; xn---%-u4o.xn--gff52t; [V3, V6, U1] # -ᠹ%.ᷡᤢ
+xn---%-u4o.xn--gff52t; -ᠹ%.\u1DE1\u1922; [V3, V6, U1]; xn---%-u4o.xn--gff52t; ; ;  # -ᠹ%.ᷡᤢ
+xn---%-u4oy48b.xn--gff52t; \u200D-ᠹ%.\u1DE1\u1922; [C2, V6, U1]; xn---%-u4oy48b.xn--gff52t; ; ;  # -ᠹ%.ᷡᤢ
+xn----c6jx047j.xn--gff52t; -ᠹ﹪.\u1DE1\u1922; [V3, V6, V7]; xn----c6jx047j.xn--gff52t; ; ;  # -ᠹ﹪.ᷡᤢ
+xn----c6j614b1z4v.xn--gff52t; \u200D-ᠹ﹪.\u1DE1\u1922; [C2, V6, V7]; xn----c6j614b1z4v.xn--gff52t; ; ;  # -ᠹ﹪.ᷡᤢ
+≠.ᠿ; ; ; xn--1ch.xn--y7e; ; ;  # ≠.ᠿ
+=\u0338.ᠿ; ≠.ᠿ; ; xn--1ch.xn--y7e; ; ;  # ≠.ᠿ
+xn--1ch.xn--y7e; ≠.ᠿ; ; xn--1ch.xn--y7e; ; ;  # ≠.ᠿ
+\u0723\u05A3｡㌪; \u0723\u05A3.ハイツ; ; xn--ucb18e.xn--eck4c5a; ; ;  # ܣ֣.ハイツ
+\u0723\u05A3。ハイツ; \u0723\u05A3.ハイツ; ; xn--ucb18e.xn--eck4c5a; ; ;  # ܣ֣.ハイツ
+xn--ucb18e.xn--eck4c5a; \u0723\u05A3.ハイツ; ; xn--ucb18e.xn--eck4c5a; ; ;  # ܣ֣.ハイツ
+\u0723\u05A3.ハイツ; ; ; xn--ucb18e.xn--eck4c5a; ; ;  # ܣ֣.ハイツ
+𞷥󠆀≮.\u2D7F-; 𞷥≮.\u2D7F-; [B1, B3, V3, V6, V7]; xn--gdhx802p.xn----i2s; ; ;  # ≮.⵿-
+𞷥󠆀<\u0338.\u2D7F-; 𞷥≮.\u2D7F-; [B1, B3, V3, V6, V7]; xn--gdhx802p.xn----i2s; ; ;  # ≮.⵿-
+xn--gdhx802p.xn----i2s; 𞷥≮.\u2D7F-; [B1, B3, V3, V6, V7]; xn--gdhx802p.xn----i2s; ; ;  # ≮.⵿-
+₆榎򦖎\u0D4D｡𞤅\u06ED\uFC5A󠮨; 6榎򦖎\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, V7]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ;  # 6榎്.𞤧ۭيي
+6榎򦖎\u0D4D。𞤅\u06ED\u064A\u064A󠮨; 6榎򦖎\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, V7]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ;  # 6榎്.𞤧ۭيي
+6榎򦖎\u0D4D。𞤧\u06ED\u064A\u064A󠮨; 6榎򦖎\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, V7]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ;  # 6榎്.𞤧ۭيي
+xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; 6榎򦖎\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, V7]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ;  # 6榎്.𞤧ۭيي
+₆榎򦖎\u0D4D｡𞤧\u06ED\uFC5A󠮨; 6榎򦖎\u0D4D.𞤧\u06ED\u064A\u064A󠮨; [B1, B3, V7]; xn--6-kmf4691ejv41j.xn--mhba10ch545mn8v8h; ; ;  # 6榎്.𞤧ۭيي
+𣩫．򌑲; 𣩫.򌑲; [V7]; xn--td3j.xn--4628b; ; ;  # 𣩫.
+𣩫.򌑲; ; [V7]; xn--td3j.xn--4628b; ; ;  # 𣩫.
+xn--td3j.xn--4628b; 𣩫.򌑲; [V7]; xn--td3j.xn--4628b; ; ;  # 𣩫.
+\u200D︒｡\u06B9\u200C; \u200D︒.\u06B9\u200C; [B1, B3, C1, C2, V7]; xn--1ug2658f.xn--skb080k; ; xn--y86c.xn--skb; [B1, V7] # ︒.ڹ
+xn--y86c.xn--skb; ︒.\u06B9; [B1, V7]; xn--y86c.xn--skb; ; ;  # ︒.ڹ
+xn--1ug2658f.xn--skb080k; \u200D︒.\u06B9\u200C; [B1, B3, C1, C2, V7]; xn--1ug2658f.xn--skb080k; ; ;  # ︒.ڹ
+xn--skb; \u06B9; ; xn--skb; ; ;  # ڹ
+\u06B9; ; ; xn--skb; ; ;  # ڹ
+𐹦\u200C𐹶。\u206D; 𐹦\u200C𐹶.; [B1, C1]; xn--0ug4994goba.; [B1, C1, A4_2]; xn--eo0d6a.; [B1, A4_2] # 𐹦𐹶.
+xn--eo0d6a.; 𐹦𐹶.; [B1]; xn--eo0d6a.; [B1, A4_2]; ;  # 𐹦𐹶.
+xn--0ug4994goba.; 𐹦\u200C𐹶.; [B1, C1]; xn--0ug4994goba.; [B1, C1, A4_2]; ;  # 𐹦𐹶.
+xn--eo0d6a.xn--sxg; 𐹦𐹶.\u206D; [B1, V7]; xn--eo0d6a.xn--sxg; ; ;  # 𐹦𐹶.
+xn--0ug4994goba.xn--sxg; 𐹦\u200C𐹶.\u206D; [B1, C1, V7]; xn--0ug4994goba.xn--sxg; ; ;  # 𐹦𐹶.
+\u0C4D𝨾\u05A9𝟭。-𑜨; \u0C4D𝨾\u05A91.-𑜨; [V3, V6]; xn--1-rfc312cdp45c.xn----nq0j; ; ;  # ్𝨾֩1.-𑜨
+\u0C4D𝨾\u05A91。-𑜨; \u0C4D𝨾\u05A91.-𑜨; [V3, V6]; xn--1-rfc312cdp45c.xn----nq0j; ; ;  # ్𝨾֩1.-𑜨
+xn--1-rfc312cdp45c.xn----nq0j; \u0C4D𝨾\u05A91.-𑜨; [V3, V6]; xn--1-rfc312cdp45c.xn----nq0j; ; ;  # ్𝨾֩1.-𑜨
+򣿈。뙏; 򣿈.뙏; [V7]; xn--ph26c.xn--281b; ; ;  # .뙏
+򣿈。뙏; 򣿈.뙏; [V7]; xn--ph26c.xn--281b; ; ;  # .뙏
+xn--ph26c.xn--281b; 򣿈.뙏; [V7]; xn--ph26c.xn--281b; ; ;  # .뙏
+񕨚󠄌󑽀ᡀ.\u08B6; 񕨚󑽀ᡀ.\u08B6; [V7]; xn--z7e98100evc01b.xn--czb; ; ;  # ᡀ.ࢶ
+xn--z7e98100evc01b.xn--czb; 񕨚󑽀ᡀ.\u08B6; [V7]; xn--z7e98100evc01b.xn--czb; ; ;  # ᡀ.ࢶ
+\u200D｡񅁛; \u200D.񅁛; [C2, V7]; xn--1ug.xn--6x4u; ; .xn--6x4u; [V7, A4_2] # .
+\u200D。񅁛; \u200D.񅁛; [C2, V7]; xn--1ug.xn--6x4u; ; .xn--6x4u; [V7, A4_2] # .
+.xn--6x4u; .񅁛; [V7, X4_2]; .xn--6x4u; [V7, A4_2]; ;  # .
+xn--1ug.xn--6x4u; \u200D.񅁛; [C2, V7]; xn--1ug.xn--6x4u; ; ;  # .
+\u084B皥．-; \u084B皥.-; [B1, B2, B3, V3]; xn--9vb4167c.-; ; ;  # ࡋ皥.-
+\u084B皥.-; ; [B1, B2, B3, V3]; xn--9vb4167c.-; ; ;  # ࡋ皥.-
+xn--9vb4167c.-; \u084B皥.-; [B1, B2, B3, V3]; xn--9vb4167c.-; ; ;  # ࡋ皥.-
+𐣸\u0315𐮇．⒈ꡦ; 𐣸\u0315𐮇.⒈ꡦ; [B1, V7]; xn--5sa9915kgvb.xn--tshw539b; ; ;  # ̕𐮇.⒈ꡦ
+𐣸\u0315𐮇.1.ꡦ; ; [B1, V7]; xn--5sa9915kgvb.1.xn--cd9a; ; ;  # ̕𐮇.1.ꡦ
+xn--5sa9915kgvb.1.xn--cd9a; 𐣸\u0315𐮇.1.ꡦ; [B1, V7]; xn--5sa9915kgvb.1.xn--cd9a; ; ;  # ̕𐮇.1.ꡦ
+xn--5sa9915kgvb.xn--tshw539b; 𐣸\u0315𐮇.⒈ꡦ; [B1, V7]; xn--5sa9915kgvb.xn--tshw539b; ; ;  # ̕𐮇.⒈ꡦ
+Ⴛ\u200C\u05A2\u200D。\uFFA0ā𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+Ⴛ\u200C\u05A2\u200D。\uFFA0a\u0304𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+Ⴛ\u200C\u05A2\u200D。\u1160ā𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+Ⴛ\u200C\u05A2\u200D。\u1160a\u0304𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+ⴛ\u200C\u05A2\u200D。\u1160a\u0304𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+ⴛ\u200C\u05A2\u200D。\u1160ā𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+Ⴛ\u200C\u05A2\u200D。\u1160Ā𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+Ⴛ\u200C\u05A2\u200D。\u1160A\u0304𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+xn--tcb323r.xn--yda4409k; ⴛ\u05A2.ā𐹦; [B5, B6]; xn--tcb323r.xn--yda4409k; ; ;  # ⴛ֢.ā𐹦
+xn--tcb736kea974k.xn--yda4409k; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; ;  # ⴛ֢.ā𐹦
+ⴛ\u200C\u05A2\u200D。\uFFA0a\u0304𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+ⴛ\u200C\u05A2\u200D。\uFFA0ā𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+Ⴛ\u200C\u05A2\u200D。\uFFA0Ā𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+Ⴛ\u200C\u05A2\u200D。\uFFA0A\u0304𐹦; ⴛ\u200C\u05A2\u200D.ā𐹦; [B5, B6, C1, C2]; xn--tcb736kea974k.xn--yda4409k; ; xn--tcb323r.xn--yda4409k; [B5, B6] # ⴛ֢.ā𐹦
+xn--tcb597c.xn--yda594fdn5q; Ⴛ\u05A2.\u1160ā𐹦; [B5, B6, V7]; xn--tcb597c.xn--yda594fdn5q; ; ;  # Ⴛ֢.ā𐹦
+xn--tcb597cdmmfa.xn--yda594fdn5q; Ⴛ\u200C\u05A2\u200D.\u1160ā𐹦; [B5, B6, C1, C2, V7]; xn--tcb597cdmmfa.xn--yda594fdn5q; ; ;  # Ⴛ֢.ā𐹦
+xn--tcb323r.xn--yda594fdn5q; ⴛ\u05A2.\u1160ā𐹦; [B5, B6, V7]; xn--tcb323r.xn--yda594fdn5q; ; ;  # ⴛ֢.ā𐹦
+xn--tcb736kea974k.xn--yda594fdn5q; ⴛ\u200C\u05A2\u200D.\u1160ā𐹦; [B5, B6, C1, C2, V7]; xn--tcb736kea974k.xn--yda594fdn5q; ; ;  # ⴛ֢.ā𐹦
+xn--tcb597c.xn--yda9741khjj; Ⴛ\u05A2.\uFFA0ā𐹦; [B5, B6, V7]; xn--tcb597c.xn--yda9741khjj; ; ;  # Ⴛ֢.ā𐹦
+xn--tcb597cdmmfa.xn--yda9741khjj; Ⴛ\u200C\u05A2\u200D.\uFFA0ā𐹦; [B5, B6, C1, C2, V7]; xn--tcb597cdmmfa.xn--yda9741khjj; ; ;  # Ⴛ֢.ā𐹦
+xn--tcb323r.xn--yda9741khjj; ⴛ\u05A2.\uFFA0ā𐹦; [B5, B6, V7]; xn--tcb323r.xn--yda9741khjj; ; ;  # ⴛ֢.ā𐹦
+xn--tcb736kea974k.xn--yda9741khjj; ⴛ\u200C\u05A2\u200D.\uFFA0ā𐹦; [B5, B6, C1, C2, V7]; xn--tcb736kea974k.xn--yda9741khjj; ; ;  # ⴛ֢.ā𐹦
+\uFFF9\u200C｡曳⾑𐋰≯; \uFFF9\u200C.曳襾𐋰≯; [C1, V7]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [V7] # .曳襾𐋰≯
+\uFFF9\u200C｡曳⾑𐋰>\u0338; \uFFF9\u200C.曳襾𐋰≯; [C1, V7]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [V7] # .曳襾𐋰≯
+\uFFF9\u200C。曳襾𐋰≯; \uFFF9\u200C.曳襾𐋰≯; [C1, V7]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [V7] # .曳襾𐋰≯
+\uFFF9\u200C。曳襾𐋰>\u0338; \uFFF9\u200C.曳襾𐋰≯; [C1, V7]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; xn--vn7c.xn--hdh501y8wvfs5h; [V7] # .曳襾𐋰≯
+xn--vn7c.xn--hdh501y8wvfs5h; \uFFF9.曳襾𐋰≯; [V7]; xn--vn7c.xn--hdh501y8wvfs5h; ; ;  # .曳襾𐋰≯
+xn--0ug2139f.xn--hdh501y8wvfs5h; \uFFF9\u200C.曳襾𐋰≯; [C1, V7]; xn--0ug2139f.xn--hdh501y8wvfs5h; ; ;  # .曳襾𐋰≯
+≯⒈。ß; ≯⒈.ß; [V7]; xn--hdh84f.xn--zca; ; xn--hdh84f.ss;  # ≯⒈.ß
+>\u0338⒈。ß; ≯⒈.ß; [V7]; xn--hdh84f.xn--zca; ; xn--hdh84f.ss;  # ≯⒈.ß
+≯1.。ß; ≯1..ß; [X4_2]; xn--1-ogo..xn--zca; [A4_2]; xn--1-ogo..ss;  # ≯1..ß
+>\u03381.。ß; ≯1..ß; [X4_2]; xn--1-ogo..xn--zca; [A4_2]; xn--1-ogo..ss;  # ≯1..ß
+>\u03381.。SS; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ;  # ≯1..ss
+≯1.。SS; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ;  # ≯1..ss
+≯1.。ss; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ;  # ≯1..ss
+>\u03381.。ss; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ;  # ≯1..ss
+>\u03381.。Ss; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ;  # ≯1..ss
+≯1.。Ss; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ;  # ≯1..ss
+xn--1-ogo..ss; ≯1..ss; [X4_2]; xn--1-ogo..ss; [A4_2]; ;  # ≯1..ss
+xn--1-ogo..xn--zca; ≯1..ß; [X4_2]; xn--1-ogo..xn--zca; [A4_2]; ;  # ≯1..ß
+>\u0338⒈。SS; ≯⒈.ss; [V7]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
+≯⒈。SS; ≯⒈.ss; [V7]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
+≯⒈。ss; ≯⒈.ss; [V7]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
+>\u0338⒈。ss; ≯⒈.ss; [V7]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
+>\u0338⒈。Ss; ≯⒈.ss; [V7]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
+≯⒈。Ss; ≯⒈.ss; [V7]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
+xn--hdh84f.ss; ≯⒈.ss; [V7]; xn--hdh84f.ss; ; ;  # ≯⒈.ss
+xn--hdh84f.xn--zca; ≯⒈.ß; [V7]; xn--hdh84f.xn--zca; ; ;  # ≯⒈.ß
+\u0667\u200D\uFB96｡\u07DA-₆Ⴙ; \u0667\u200D\u06B3.\u07DA-6ⴙ; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; xn--gib6m.xn---6-lve6529a; [B1, B2, B3] # ٧ڳ.ߚ-6ⴙ
+\u0667\u200D\u06B3。\u07DA-6Ⴙ; \u0667\u200D\u06B3.\u07DA-6ⴙ; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; xn--gib6m.xn---6-lve6529a; [B1, B2, B3] # ٧ڳ.ߚ-6ⴙ
+\u0667\u200D\u06B3。\u07DA-6ⴙ; \u0667\u200D\u06B3.\u07DA-6ⴙ; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; xn--gib6m.xn---6-lve6529a; [B1, B2, B3] # ٧ڳ.ߚ-6ⴙ
+xn--gib6m.xn---6-lve6529a; \u0667\u06B3.\u07DA-6ⴙ; [B1, B2, B3]; xn--gib6m.xn---6-lve6529a; ; ;  # ٧ڳ.ߚ-6ⴙ
+xn--gib6m343e.xn---6-lve6529a; \u0667\u200D\u06B3.\u07DA-6ⴙ; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; ;  # ٧ڳ.ߚ-6ⴙ
+\u0667\u200D\uFB96｡\u07DA-₆ⴙ; \u0667\u200D\u06B3.\u07DA-6ⴙ; [B1, B2, B3, C2]; xn--gib6m343e.xn---6-lve6529a; ; xn--gib6m.xn---6-lve6529a; [B1, B2, B3] # ٧ڳ.ߚ-6ⴙ
+xn--gib6m.xn---6-lve002g; \u0667\u06B3.\u07DA-6Ⴙ; [B1, B2, B3, V7]; xn--gib6m.xn---6-lve002g; ; ;  # ٧ڳ.ߚ-6Ⴙ
+xn--gib6m343e.xn---6-lve002g; \u0667\u200D\u06B3.\u07DA-6Ⴙ; [B1, B2, B3, C2, V7]; xn--gib6m343e.xn---6-lve002g; ; ;  # ٧ڳ.ߚ-6Ⴙ
+\u200C｡≠; \u200C.≠; [C1]; xn--0ug.xn--1ch; ; .xn--1ch; [A4_2] # .≠
+\u200C｡=\u0338; \u200C.≠; [C1]; xn--0ug.xn--1ch; ; .xn--1ch; [A4_2] # .≠
+\u200C。≠; \u200C.≠; [C1]; xn--0ug.xn--1ch; ; .xn--1ch; [A4_2] # .≠
+\u200C。=\u0338; \u200C.≠; [C1]; xn--0ug.xn--1ch; ; .xn--1ch; [A4_2] # .≠
+.xn--1ch; .≠; [X4_2]; .xn--1ch; [A4_2]; ;  # .≠
+xn--0ug.xn--1ch; \u200C.≠; [C1]; xn--0ug.xn--1ch; ; ;  # .≠
+𑖿𝨔.ᡟ𑖿\u1B42\u200C; ; [C1, V6]; xn--461dw464a.xn--v8e29ldzfo952a; ; xn--461dw464a.xn--v8e29loy65a; [V6] # 𑖿𝨔.ᡟ𑖿ᭂ
+xn--461dw464a.xn--v8e29loy65a; 𑖿𝨔.ᡟ𑖿\u1B42; [V6]; xn--461dw464a.xn--v8e29loy65a; ; ;  # 𑖿𝨔.ᡟ𑖿ᭂ
+xn--461dw464a.xn--v8e29ldzfo952a; 𑖿𝨔.ᡟ𑖿\u1B42\u200C; [C1, V6]; xn--461dw464a.xn--v8e29ldzfo952a; ; ;  # 𑖿𝨔.ᡟ𑖿ᭂ
+򔣳\u200D򑝱.𖬴Ↄ≠-; 򔣳\u200D򑝱.𖬴ↄ≠-; [C2, V3, V6, V7]; xn--1ug15151gkb5a.xn----81n51bt713h; ; xn--6j00chy9a.xn----81n51bt713h; [V3, V6, V7] # .𖬴ↄ≠-
+򔣳\u200D򑝱.𖬴Ↄ=\u0338-; 򔣳\u200D򑝱.𖬴ↄ≠-; [C2, V3, V6, V7]; xn--1ug15151gkb5a.xn----81n51bt713h; ; xn--6j00chy9a.xn----81n51bt713h; [V3, V6, V7] # .𖬴ↄ≠-
+򔣳\u200D򑝱.𖬴ↄ=\u0338-; 򔣳\u200D򑝱.𖬴ↄ≠-; [C2, V3, V6, V7]; xn--1ug15151gkb5a.xn----81n51bt713h; ; xn--6j00chy9a.xn----81n51bt713h; [V3, V6, V7] # .𖬴ↄ≠-
+򔣳\u200D򑝱.𖬴ↄ≠-; ; [C2, V3, V6, V7]; xn--1ug15151gkb5a.xn----81n51bt713h; ; xn--6j00chy9a.xn----81n51bt713h; [V3, V6, V7] # .𖬴ↄ≠-
+xn--6j00chy9a.xn----81n51bt713h; 򔣳򑝱.𖬴ↄ≠-; [V3, V6, V7]; xn--6j00chy9a.xn----81n51bt713h; ; ;  # .𖬴ↄ≠-
+xn--1ug15151gkb5a.xn----81n51bt713h; 򔣳\u200D򑝱.𖬴ↄ≠-; [C2, V3, V6, V7]; xn--1ug15151gkb5a.xn----81n51bt713h; ; ;  # .𖬴ↄ≠-
+xn--6j00chy9a.xn----61n81bt713h; 򔣳򑝱.𖬴Ↄ≠-; [V3, V6, V7]; xn--6j00chy9a.xn----61n81bt713h; ; ;  # .𖬴Ↄ≠-
+xn--1ug15151gkb5a.xn----61n81bt713h; 򔣳\u200D򑝱.𖬴Ↄ≠-; [C2, V3, V6, V7]; xn--1ug15151gkb5a.xn----61n81bt713h; ; ;  # .𖬴Ↄ≠-
+\u07E2ς\u200D𝟳。蔑򛖢; \u07E2ς\u200D7.蔑򛖢; [B2, C2, V7]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V7] # ߢς7.蔑
+\u07E2ς\u200D7。蔑򛖢; \u07E2ς\u200D7.蔑򛖢; [B2, C2, V7]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V7] # ߢς7.蔑
+\u07E2Σ\u200D7。蔑򛖢; \u07E2σ\u200D7.蔑򛖢; [B2, C2, V7]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V7] # ߢσ7.蔑
+\u07E2σ\u200D7。蔑򛖢; \u07E2σ\u200D7.蔑򛖢; [B2, C2, V7]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V7] # ߢσ7.蔑
+xn--7-zmb872a.xn--wy1ao4929b; \u07E2σ7.蔑򛖢; [B2, V7]; xn--7-zmb872a.xn--wy1ao4929b; ; ;  # ߢσ7.蔑
+xn--7-zmb872aez5a.xn--wy1ao4929b; \u07E2σ\u200D7.蔑򛖢; [B2, C2, V7]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; ;  # ߢσ7.蔑
+xn--7-xmb182aez5a.xn--wy1ao4929b; \u07E2ς\u200D7.蔑򛖢; [B2, C2, V7]; xn--7-xmb182aez5a.xn--wy1ao4929b; ; ;  # ߢς7.蔑
+\u07E2Σ\u200D𝟳。蔑򛖢; \u07E2σ\u200D7.蔑򛖢; [B2, C2, V7]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V7] # ߢσ7.蔑
+\u07E2σ\u200D𝟳。蔑򛖢; \u07E2σ\u200D7.蔑򛖢; [B2, C2, V7]; xn--7-zmb872aez5a.xn--wy1ao4929b; ; xn--7-zmb872a.xn--wy1ao4929b; [B2, V7] # ߢσ7.蔑
+𐹰.\u0600; ; [B1, V7]; xn--oo0d.xn--ifb; ; ;  # 𐹰.
+xn--oo0d.xn--ifb; 𐹰.\u0600; [B1, V7]; xn--oo0d.xn--ifb; ; ;  # 𐹰.
+-\u08A8.𱠖; ; [B1, V3]; xn----mod.xn--5o9n; ; ;  # -ࢨ.𱠖
+xn----mod.xn--5o9n; -\u08A8.𱠖; [B1, V3]; xn----mod.xn--5o9n; ; ;  # -ࢨ.𱠖
+≯𞱸󠇀。誆⒈; ≯𞱸.誆⒈; [B1, V7]; xn--hdh7151p.xn--tsh1248a; ; ;  # ≯𞱸.誆⒈
+>\u0338𞱸󠇀。誆⒈; ≯𞱸.誆⒈; [B1, V7]; xn--hdh7151p.xn--tsh1248a; ; ;  # ≯𞱸.誆⒈
+≯𞱸󠇀。誆1.; ≯𞱸.誆1.; [B1]; xn--hdh7151p.xn--1-dy1d.; [B1, A4_2]; ;  # ≯𞱸.誆1.
+>\u0338𞱸󠇀。誆1.; ≯𞱸.誆1.; [B1]; xn--hdh7151p.xn--1-dy1d.; [B1, A4_2]; ;  # ≯𞱸.誆1.
+xn--hdh7151p.xn--1-dy1d.; ≯𞱸.誆1.; [B1]; xn--hdh7151p.xn--1-dy1d.; [B1, A4_2]; ;  # ≯𞱸.誆1.
+xn--hdh7151p.xn--tsh1248a; ≯𞱸.誆⒈; [B1, V7]; xn--hdh7151p.xn--tsh1248a; ; ;  # ≯𞱸.誆⒈
+\u0616𞥙䐊\u0650．︒\u0645↺\u069C; \u0616𞥙䐊\u0650.︒\u0645↺\u069C; [B1, V6, V7]; xn--4fb0j490qjg4x.xn--hhb8o948euo5r; ; ;  # ؖ𞥙䐊ِ.︒م↺ڜ
+\u0616𞥙䐊\u0650.。\u0645↺\u069C; \u0616𞥙䐊\u0650..\u0645↺\u069C; [B1, V6, X4_2]; xn--4fb0j490qjg4x..xn--hhb8o948e; [B1, V6, A4_2]; ;  # ؖ𞥙䐊ِ..م↺ڜ
+xn--4fb0j490qjg4x..xn--hhb8o948e; \u0616𞥙䐊\u0650..\u0645↺\u069C; [B1, V6, X4_2]; xn--4fb0j490qjg4x..xn--hhb8o948e; [B1, V6, A4_2]; ;  # ؖ𞥙䐊ِ..م↺ڜ
+xn--4fb0j490qjg4x.xn--hhb8o948euo5r; \u0616𞥙䐊\u0650.︒\u0645↺\u069C; [B1, V6, V7]; xn--4fb0j490qjg4x.xn--hhb8o948euo5r; ; ;  # ؖ𞥙䐊ِ.︒م↺ڜ
+퀬-?񶳒.\u200C\u0AC5󩸤۴; ; [C1, V7, U1]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; xn---?-6g4k75207c.xn--hmb76q74166b; [V6, V7, U1] # 퀬-?.ૅ۴
+퀬-?񶳒.\u200C\u0AC5󩸤۴; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V7, U1]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; xn---?-6g4k75207c.xn--hmb76q74166b; [V6, V7, U1] # 퀬-?.ૅ۴
+xn---?-6g4k75207c.xn--hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [V6, V7, U1]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ;  # 퀬-?.ૅ۴
+xn---?-6g4k75207c.xn--hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V7, U1]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.xn--hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [V6, V7, U1]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.xn--hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [V6, V7, U1]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.XN--HMB76Q74166B; 퀬-?񶳒.\u0AC5󩸤۴; [V6, V7, U1]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.XN--HMB76Q74166B; 퀬-?񶳒.\u0AC5󩸤۴; [V6, V7, U1]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.Xn--Hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [V6, V7, U1]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.Xn--Hmb76q74166b; 퀬-?񶳒.\u0AC5󩸤۴; [V6, V7, U1]; xn---?-6g4k75207c.xn--hmb76q74166b; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.xn--hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V7, U1]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.xn--hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V7, U1]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.XN--HMB76Q48Y18505A; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V7, U1]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.XN--HMB76Q48Y18505A; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V7, U1]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.Xn--Hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V7, U1]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ;  # 퀬-?.ૅ۴
+퀬-?񶳒.Xn--Hmb76q48y18505a; 퀬-?񶳒.\u200C\u0AC5󩸤۴; [C1, V7, U1]; xn---?-6g4k75207c.xn--hmb76q48y18505a; ; ;  # 퀬-?.ૅ۴
+Ⴌ.𐹾︒𑁿𞾄; ⴌ.𐹾︒𑁿𞾄; [B1, V7]; xn--3kj.xn--y86c030a9ob6374b; ; ;  # ⴌ.𐹾︒𑁿
+Ⴌ.𐹾。𑁿𞾄; ⴌ.𐹾.𑁿𞾄; [B1, V6, V7]; xn--3kj.xn--2o0d.xn--q30dg029a; ; ;  # ⴌ.𐹾.𑁿
+ⴌ.𐹾。𑁿𞾄; ⴌ.𐹾.𑁿𞾄; [B1, V6, V7]; xn--3kj.xn--2o0d.xn--q30dg029a; ; ;  # ⴌ.𐹾.𑁿
+xn--3kj.xn--2o0d.xn--q30dg029a; ⴌ.𐹾.𑁿𞾄; [B1, V6, V7]; xn--3kj.xn--2o0d.xn--q30dg029a; ; ;  # ⴌ.𐹾.𑁿
+ⴌ.𐹾︒𑁿𞾄; ; [B1, V7]; xn--3kj.xn--y86c030a9ob6374b; ; ;  # ⴌ.𐹾︒𑁿
+xn--3kj.xn--y86c030a9ob6374b; ⴌ.𐹾︒𑁿𞾄; [B1, V7]; xn--3kj.xn--y86c030a9ob6374b; ; ;  # ⴌ.𐹾︒𑁿
+xn--knd.xn--2o0d.xn--q30dg029a; Ⴌ.𐹾.𑁿𞾄; [B1, V6, V7]; xn--knd.xn--2o0d.xn--q30dg029a; ; ;  # Ⴌ.𐹾.𑁿
+xn--knd.xn--y86c030a9ob6374b; Ⴌ.𐹾︒𑁿𞾄; [B1, V7]; xn--knd.xn--y86c030a9ob6374b; ; ;  # Ⴌ.𐹾︒𑁿
+񧞿╏。𞩕󠁾; 񧞿╏.𞩕󠁾; [B3, B6, V7]; xn--iyh90030d.xn--1m6hs0260c; ; ;  # ╏.
+xn--iyh90030d.xn--1m6hs0260c; 񧞿╏.𞩕󠁾; [B3, B6, V7]; xn--iyh90030d.xn--1m6hs0260c; ; ;  # ╏.
+\u200D┮󠇐．\u0C00\u0C4D\u1734\u200D; \u200D┮.\u0C00\u0C4D\u1734\u200D; [C2, V6]; xn--1ug04r.xn--eoc8m432a40i; ; xn--kxh.xn--eoc8m432a; [V6] # ┮.ఀ్᜴
+\u200D┮󠇐.\u0C00\u0C4D\u1734\u200D; \u200D┮.\u0C00\u0C4D\u1734\u200D; [C2, V6]; xn--1ug04r.xn--eoc8m432a40i; ; xn--kxh.xn--eoc8m432a; [V6] # ┮.ఀ్᜴
+xn--kxh.xn--eoc8m432a; ┮.\u0C00\u0C4D\u1734; [V6]; xn--kxh.xn--eoc8m432a; ; ;  # ┮.ఀ్᜴
+xn--1ug04r.xn--eoc8m432a40i; \u200D┮.\u0C00\u0C4D\u1734\u200D; [C2, V6]; xn--1ug04r.xn--eoc8m432a40i; ; ;  # ┮.ఀ్᜴
+򹚪｡🄂; 򹚪.1,; [V7, U1]; xn--n433d.1,; ; ;  # .1,
+򹚪。1,; 򹚪.1,; [V7, U1]; xn--n433d.1,; ; ;  # .1,
+xn--n433d.1,; 򹚪.1,; [V7, U1]; xn--n433d.1,; ; ;  # .1,
+xn--n433d.xn--v07h; 򹚪.🄂; [V7]; xn--n433d.xn--v07h; ; ;  # .🄂
+𑍨刍.🛦; ; [V6]; xn--rbry728b.xn--y88h; ; ;  # 𑍨刍.🛦
+xn--rbry728b.xn--y88h; 𑍨刍.🛦; [V6]; xn--rbry728b.xn--y88h; ; ;  # 𑍨刍.🛦
+󠌏3｡\u1BF1𝟒; 󠌏3.\u1BF14; [V6, V7]; xn--3-ib31m.xn--4-pql; ; ;  # 3.ᯱ4
+󠌏3。\u1BF14; 󠌏3.\u1BF14; [V6, V7]; xn--3-ib31m.xn--4-pql; ; ;  # 3.ᯱ4
+xn--3-ib31m.xn--4-pql; 󠌏3.\u1BF14; [V6, V7]; xn--3-ib31m.xn--4-pql; ; ;  # 3.ᯱ4
+\u0687６Ⴔ辘.\uFD22\u0687\u200C; \u06876ⴔ辘.\u0635\u064A\u0687\u200C; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; xn--6-gsc2270akm6f.xn--0gb6bxk; [B2, B3] # ڇ6ⴔ辘.صيڇ
+\u06876Ⴔ辘.\u0635\u064A\u0687\u200C; \u06876ⴔ辘.\u0635\u064A\u0687\u200C; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; xn--6-gsc2270akm6f.xn--0gb6bxk; [B2, B3] # ڇ6ⴔ辘.صيڇ
+\u06876ⴔ辘.\u0635\u064A\u0687\u200C; ; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; xn--6-gsc2270akm6f.xn--0gb6bxk; [B2, B3] # ڇ6ⴔ辘.صيڇ
+xn--6-gsc2270akm6f.xn--0gb6bxk; \u06876ⴔ辘.\u0635\u064A\u0687; [B2, B3]; xn--6-gsc2270akm6f.xn--0gb6bxk; ; ;  # ڇ6ⴔ辘.صيڇ
+xn--6-gsc2270akm6f.xn--0gb6bxkx18g; \u06876ⴔ辘.\u0635\u064A\u0687\u200C; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; ;  # ڇ6ⴔ辘.صيڇ
+\u0687６ⴔ辘.\uFD22\u0687\u200C; \u06876ⴔ辘.\u0635\u064A\u0687\u200C; [B2, B3, C1]; xn--6-gsc2270akm6f.xn--0gb6bxkx18g; ; xn--6-gsc2270akm6f.xn--0gb6bxk; [B2, B3] # ڇ6ⴔ辘.صيڇ
+xn--6-gsc039eqq6k.xn--0gb6bxk; \u06876Ⴔ辘.\u0635\u064A\u0687; [B2, B3, V7]; xn--6-gsc039eqq6k.xn--0gb6bxk; ; ;  # ڇ6Ⴔ辘.صيڇ
+xn--6-gsc039eqq6k.xn--0gb6bxkx18g; \u06876Ⴔ辘.\u0635\u064A\u0687\u200C; [B2, B3, C1, V7]; xn--6-gsc039eqq6k.xn--0gb6bxkx18g; ; ;  # ڇ6Ⴔ辘.صيڇ
+󠄍.𐮭𞰬򻫞۹; .𐮭𞰬򻫞۹; [B2, V7, X4_2]; .xn--mmb3954kd0uf1zx7f; [B2, V7, A4_2]; ;  # .𐮭۹
+.xn--mmb3954kd0uf1zx7f; .𐮭𞰬򻫞۹; [B2, V7, X4_2]; .xn--mmb3954kd0uf1zx7f; [B2, V7, A4_2]; ;  # .𐮭۹
+\uA87D≯．򻲀򒳄; \uA87D≯.򻲀򒳄; [V7]; xn--hdh8193c.xn--5z40cp629b; ; ;  # ≯.
+\uA87D>\u0338．򻲀򒳄; \uA87D≯.򻲀򒳄; [V7]; xn--hdh8193c.xn--5z40cp629b; ; ;  # ≯.
+\uA87D≯.򻲀򒳄; ; [V7]; xn--hdh8193c.xn--5z40cp629b; ; ;  # ≯.
+\uA87D>\u0338.򻲀򒳄; \uA87D≯.򻲀򒳄; [V7]; xn--hdh8193c.xn--5z40cp629b; ; ;  # ≯.
+xn--hdh8193c.xn--5z40cp629b; \uA87D≯.򻲀򒳄; [V7]; xn--hdh8193c.xn--5z40cp629b; ; ;  # ≯.
+ςო\u067B.ς\u0714; ; [B5, B6]; xn--3xa80l26n.xn--3xa41o; ; xn--4xa60l26n.xn--4xa21o;  # ςოٻ.ςܔ
+ΣᲝ\u067B.Σ\u0714; σო\u067B.σ\u0714; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ;  # σოٻ.σܔ
+σო\u067B.σ\u0714; ; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ;  # σოٻ.σܔ
+Σო\u067B.σ\u0714; σო\u067B.σ\u0714; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ;  # σოٻ.σܔ
+xn--4xa60l26n.xn--4xa21o; σო\u067B.σ\u0714; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ;  # σოٻ.σܔ
+Σო\u067B.ς\u0714; σო\u067B.ς\u0714; [B5, B6]; xn--4xa60l26n.xn--3xa41o; ; xn--4xa60l26n.xn--4xa21o;  # σოٻ.ςܔ
+σო\u067B.ς\u0714; ; [B5, B6]; xn--4xa60l26n.xn--3xa41o; ; xn--4xa60l26n.xn--4xa21o;  # σოٻ.ςܔ
+xn--4xa60l26n.xn--3xa41o; σო\u067B.ς\u0714; [B5, B6]; xn--4xa60l26n.xn--3xa41o; ; ;  # σოٻ.ςܔ
+xn--3xa80l26n.xn--3xa41o; ςო\u067B.ς\u0714; [B5, B6]; xn--3xa80l26n.xn--3xa41o; ; ;  # ςოٻ.ςܔ
+Σო\u067B.Σ\u0714; σო\u067B.σ\u0714; [B5, B6]; xn--4xa60l26n.xn--4xa21o; ; ;  # σოٻ.σܔ
+򄖚\u0748𠄯\u075F｡󠛩; 򄖚\u0748𠄯\u075F.󠛩; [B1, B5, B6, V7]; xn--vob0c4369twfv8b.xn--kl46e; ; ;  # ݈𠄯ݟ.
+򄖚\u0748𠄯\u075F。󠛩; 򄖚\u0748𠄯\u075F.󠛩; [B1, B5, B6, V7]; xn--vob0c4369twfv8b.xn--kl46e; ; ;  # ݈𠄯ݟ.
+xn--vob0c4369twfv8b.xn--kl46e; 򄖚\u0748𠄯\u075F.󠛩; [B1, B5, B6, V7]; xn--vob0c4369twfv8b.xn--kl46e; ; ;  # ݈𠄯ݟ.
+󠳛．\u200D䤫≠Ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, V7]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V7] # .䤫≠ⴞ
+󠳛．\u200D䤫=\u0338Ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, V7]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V7] # .䤫≠ⴞ
+󠳛.\u200D䤫≠Ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, V7]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V7] # .䤫≠ⴞ
+󠳛.\u200D䤫=\u0338Ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, V7]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V7] # .䤫≠ⴞ
+󠳛.\u200D䤫=\u0338ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, V7]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V7] # .䤫≠ⴞ
+󠳛.\u200D䤫≠ⴞ; ; [C2, V7]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V7] # .䤫≠ⴞ
+xn--1t56e.xn--1ch153bqvw; 󠳛.䤫≠ⴞ; [V7]; xn--1t56e.xn--1ch153bqvw; ; ;  # .䤫≠ⴞ
+xn--1t56e.xn--1ug73gzzpwi3a; 󠳛.\u200D䤫≠ⴞ; [C2, V7]; xn--1t56e.xn--1ug73gzzpwi3a; ; ;  # .䤫≠ⴞ
+󠳛．\u200D䤫=\u0338ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, V7]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V7] # .䤫≠ⴞ
+󠳛．\u200D䤫≠ⴞ; 󠳛.\u200D䤫≠ⴞ; [C2, V7]; xn--1t56e.xn--1ug73gzzpwi3a; ; xn--1t56e.xn--1ch153bqvw; [V7] # .䤫≠ⴞ
+xn--1t56e.xn--2nd141ghl2a; 󠳛.䤫≠Ⴞ; [V7]; xn--1t56e.xn--2nd141ghl2a; ; ;  # .䤫≠Ⴞ
+xn--1t56e.xn--2nd159e9vb743e; 󠳛.\u200D䤫≠Ⴞ; [C2, V7]; xn--1t56e.xn--2nd159e9vb743e; ; ;  # .䤫≠Ⴞ
 𐽘𑈵．𐹣🕥; 𐽘𑈵.𐹣🕥; [B1, B2, B3]; xn--bv0d02c.xn--bo0dq650b; ; ;  # 𐽘𑈵.𐹣🕥
 𐽘𑈵.𐹣🕥; ; [B1, B2, B3]; xn--bv0d02c.xn--bo0dq650b; ; ;  # 𐽘𑈵.𐹣🕥
 xn--bv0d02c.xn--bo0dq650b; 𐽘𑈵.𐹣🕥; [B1, B2, B3]; xn--bv0d02c.xn--bo0dq650b; ; ;  # 𐽘𑈵.𐹣🕥
-⒊⒈𑁄。9; ⒊⒈𑁄.9; [P1, V6]; xn--tshd3512p.9; ; ;  # ⒊⒈𑁄.9
-3.1.𑁄。9; 3.1.𑁄.9; [V5]; 3.1.xn--110d.9; ; ;  # 3.1.𑁄.9
-3.1.xn--110d.9; 3.1.𑁄.9; [V5]; 3.1.xn--110d.9; ; ;  # 3.1.𑁄.9
-xn--tshd3512p.9; ⒊⒈𑁄.9; [V6]; xn--tshd3512p.9; ; ;  # ⒊⒈𑁄.9
--‌ⷱ≮．𐹱򭏴4₉; -‌ⷱ≮.𐹱򭏴49; [B1, C1, P1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, P1, V3, V6] # -ⷱ≮.𐹱49
--‌ⷱ≮．𐹱򭏴4₉; -‌ⷱ≮.𐹱򭏴49; [B1, C1, P1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, P1, V3, V6] # -ⷱ≮.𐹱49
--‌ⷱ≮.𐹱򭏴49; ; [B1, C1, P1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, P1, V3, V6] # -ⷱ≮.𐹱49
--‌ⷱ≮.𐹱򭏴49; -‌ⷱ≮.𐹱򭏴49; [B1, C1, P1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, P1, V3, V6] # -ⷱ≮.𐹱49
-xn----ngo823c.xn--49-ki3om2611f; -ⷱ≮.𐹱򭏴49; [B1, V3, V6]; xn----ngo823c.xn--49-ki3om2611f; ; ;  # -ⷱ≮.𐹱49
-xn----sgn20i14s.xn--49-ki3om2611f; -‌ⷱ≮.𐹱򭏴49; [B1, C1, V3, V6]; xn----sgn20i14s.xn--49-ki3om2611f; ; ;  # -ⷱ≮.𐹱49
--≯딾｡ࡇ; -≯딾.ࡇ; [B1, P1, V3, V6]; xn----pgow547d.xn--5vb; ; ;  # -≯딾.ࡇ
--≯딾｡ࡇ; -≯딾.ࡇ; [B1, P1, V3, V6]; xn----pgow547d.xn--5vb; ; ;  # -≯딾.ࡇ
--≯딾。ࡇ; -≯딾.ࡇ; [B1, P1, V3, V6]; xn----pgow547d.xn--5vb; ; ;  # -≯딾.ࡇ
--≯딾。ࡇ; -≯딾.ࡇ; [B1, P1, V3, V6]; xn----pgow547d.xn--5vb; ; ;  # -≯딾.ࡇ
-xn----pgow547d.xn--5vb; -≯딾.ࡇ; [B1, V3, V6]; xn----pgow547d.xn--5vb; ; ;  # -≯딾.ࡇ
-𑙢⒈𐹠-｡󠗐‌; 𑙢⒈𐹠-.󠗐‌; [B1, C1, P1, V3, V6]; xn----dcpy090hiyg.xn--0ug23321l; ; xn----dcpy090hiyg.xn--jd46e; [B1, P1, V3, V6] # 𑙢⒈𐹠-.
-𑙢1.𐹠-。󠗐‌; 𑙢1.𐹠-.󠗐‌; [B1, C1, P1, V3, V6]; xn--1-bf0j.xn----516i.xn--0ug23321l; ; xn--1-bf0j.xn----516i.xn--jd46e; [B1, P1, V3, V6] # 𑙢1.𐹠-.
-xn--1-bf0j.xn----516i.xn--jd46e; 𑙢1.𐹠-.󠗐; [B1, V3, V6]; xn--1-bf0j.xn----516i.xn--jd46e; ; ;  # 𑙢1.𐹠-.
-xn--1-bf0j.xn----516i.xn--0ug23321l; 𑙢1.𐹠-.󠗐‌; [B1, C1, V3, V6]; xn--1-bf0j.xn----516i.xn--0ug23321l; ; ;  # 𑙢1.𐹠-.
-xn----dcpy090hiyg.xn--jd46e; 𑙢⒈𐹠-.󠗐; [B1, V3, V6]; xn----dcpy090hiyg.xn--jd46e; ; ;  # 𑙢⒈𐹠-.
-xn----dcpy090hiyg.xn--0ug23321l; 𑙢⒈𐹠-.󠗐‌; [B1, C1, V3, V6]; xn----dcpy090hiyg.xn--0ug23321l; ; ;  # 𑙢⒈𐹠-.
-͊．𐨎; ͊.𐨎; [V5]; xn--oua.xn--mr9c; ; ;  # ͊.𐨎
-͊.𐨎; ; [V5]; xn--oua.xn--mr9c; ; ;  # ͊.𐨎
-xn--oua.xn--mr9c; ͊.𐨎; [V5]; xn--oua.xn--mr9c; ; ;  # ͊.𐨎
-훉≮｡ิ; 훉≮.ิ; [P1, V5, V6]; xn--gdh2512e.xn--i4c; ; ;  # 훉≮.ิ
-훉≮｡ิ; 훉≮.ิ; [P1, V5, V6]; xn--gdh2512e.xn--i4c; ; ;  # 훉≮.ิ
-훉≮。ิ; 훉≮.ิ; [P1, V5, V6]; xn--gdh2512e.xn--i4c; ; ;  # 훉≮.ิ
-훉≮。ิ; 훉≮.ิ; [P1, V5, V6]; xn--gdh2512e.xn--i4c; ; ;  # 훉≮.ิ
-xn--gdh2512e.xn--i4c; 훉≮.ิ; [V5, V6]; xn--gdh2512e.xn--i4c; ; ;  # 훉≮.ิ
-ⷷ򞣉🃘．𴈇𝟸ٙ𞤯; ⷷ򞣉🃘.𴈇2ٙ𞤯; [B1, B5, B6, P1, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ;  # ⷷ🃘.2ٙ𞤯
-ⷷ򞣉🃘.𴈇2ٙ𞤯; ; [B1, B5, B6, P1, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ;  # ⷷ🃘.2ٙ𞤯
-ⷷ򞣉🃘.𴈇2ٙ𞤍; ⷷ򞣉🃘.𴈇2ٙ𞤯; [B1, B5, B6, P1, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ;  # ⷷ🃘.2ٙ𞤯
-xn--trj8045le6s9b.xn--2-upc23918acjsj; ⷷ򞣉🃘.𴈇2ٙ𞤯; [B1, B5, B6, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ;  # ⷷ🃘.2ٙ𞤯
-ⷷ򞣉🃘．𴈇𝟸ٙ𞤍; ⷷ򞣉🃘.𴈇2ٙ𞤯; [B1, B5, B6, P1, V5, V6]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ;  # ⷷ🃘.2ٙ𞤯
-󗇩ßᢞ‌。٠𞷻ﳔ-; 󗇩ßᢞ‌.٠𞷻نخ-; [B1, B6, C1, P1, V3, V6]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ßᢞ.٠نخ-
-󗇩ßᢞ‌。٠𞷻نخ-; 󗇩ßᢞ‌.٠𞷻نخ-; [B1, B6, C1, P1, V3, V6]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ßᢞ.٠نخ-
-󗇩SSᢞ‌。٠𞷻نخ-; 󗇩ssᢞ‌.٠𞷻نخ-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-󗇩ssᢞ‌。٠𞷻نخ-; 󗇩ssᢞ‌.٠𞷻نخ-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-󗇩Ssᢞ‌。٠𞷻نخ-; 󗇩ssᢞ‌.٠𞷻نخ-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-xn--ss-jepz4596r.xn----dnc5e1er384z; 󗇩ssᢞ.٠𞷻نخ-; [B1, V3, V6]; xn--ss-jepz4596r.xn----dnc5e1er384z; ; ;  # ssᢞ.٠نخ-
-xn--ss-jep006bqt765b.xn----dnc5e1er384z; 󗇩ssᢞ‌.٠𞷻نخ-; [B1, B6, C1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; ;  # ssᢞ.٠نخ-
-xn--zca272jbif10059a.xn----dnc5e1er384z; 󗇩ßᢞ‌.٠𞷻نخ-; [B1, B6, C1, V3, V6]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; ;  # ßᢞ.٠نخ-
-󗇩SSᢞ‌。٠𞷻ﳔ-; 󗇩ssᢞ‌.٠𞷻نخ-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-󗇩ssᢞ‌。٠𞷻ﳔ-; 󗇩ssᢞ‌.٠𞷻نخ-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-󗇩Ssᢞ‌。٠𞷻ﳔ-; 󗇩ssᢞ‌.٠𞷻نخ-; [B1, B6, C1, P1, V3, V6]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, P1, V3, V6] # ssᢞ.٠نخ-
-ꡆ。Ↄྵ놮-; ꡆ.Ↄྵ놮-; [P1, V3, V6]; xn--fc9a.xn----qmg787k869k; ; ;  # ꡆ.Ↄྵ놮-
-ꡆ。Ↄྵ놮-; ꡆ.Ↄྵ놮-; [P1, V3, V6]; xn--fc9a.xn----qmg787k869k; ; ;  # ꡆ.Ↄྵ놮-
-ꡆ。ↄྵ놮-; ꡆ.ↄྵ놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ;  # ꡆ.ↄྵ놮-
-ꡆ。ↄྵ놮-; ꡆ.ↄྵ놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ;  # ꡆ.ↄྵ놮-
-xn--fc9a.xn----qmg097k469k; ꡆ.ↄྵ놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ;  # ꡆ.ↄྵ놮-
-xn--fc9a.xn----qmg787k869k; ꡆ.Ↄྵ놮-; [V3, V6]; xn--fc9a.xn----qmg787k869k; ; ;  # ꡆ.Ↄྵ놮-
-ﶭ‍.񥰌ک; لمي‍.񥰌ک; [B3, B5, B6, C2, P1, V6]; xn--ghbcp494x.xn--ckb36214f; ; xn--ghbcp.xn--ckb36214f; [B5, B6, P1, V6] # لمي.ک
-لمي‍.񥰌ک; ; [B3, B5, B6, C2, P1, V6]; xn--ghbcp494x.xn--ckb36214f; ; xn--ghbcp.xn--ckb36214f; [B5, B6, P1, V6] # لمي.ک
-xn--ghbcp.xn--ckb36214f; لمي.񥰌ک; [B5, B6, V6]; xn--ghbcp.xn--ckb36214f; ; ;  # لمي.ک
-xn--ghbcp494x.xn--ckb36214f; لمي‍.񥰌ک; [B3, B5, B6, C2, V6]; xn--ghbcp494x.xn--ckb36214f; ; ;  # لمي.ک
-Ⴜᰯ𐳒≯。۠ᜲྺ; Ⴜᰯ𐳒≯.۠ᜲྺ; [B1, B3, B5, B6, P1, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ;  # Ⴜᰯ𐳒≯.۠ᜲྺ
-Ⴜᰯ𐳒≯。۠ᜲྺ; Ⴜᰯ𐳒≯.۠ᜲྺ; [B1, B3, B5, B6, P1, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ;  # Ⴜᰯ𐳒≯.۠ᜲྺ
-ⴜᰯ𐳒≯。۠ᜲྺ; ⴜᰯ𐳒≯.۠ᜲྺ; [B1, B3, B5, B6, P1, V5, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ;  # ⴜᰯ𐳒≯.۠ᜲྺ
-ⴜᰯ𐳒≯。۠ᜲྺ; ⴜᰯ𐳒≯.۠ᜲྺ; [B1, B3, B5, B6, P1, V5, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ;  # ⴜᰯ𐳒≯.۠ᜲྺ
-Ⴜᰯ𐲒≯。۠ᜲྺ; Ⴜᰯ𐳒≯.۠ᜲྺ; [B1, B3, B5, B6, P1, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ;  # Ⴜᰯ𐳒≯.۠ᜲྺ
-Ⴜᰯ𐲒≯。۠ᜲྺ; Ⴜᰯ𐳒≯.۠ᜲྺ; [B1, B3, B5, B6, P1, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ;  # Ⴜᰯ𐳒≯.۠ᜲྺ
-xn--0nd679cf3eq67y.xn--wlb646b4ng; Ⴜᰯ𐳒≯.۠ᜲྺ; [B1, B3, B5, B6, V5, V6]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ;  # Ⴜᰯ𐳒≯.۠ᜲྺ
-xn--r1f68xh1jgv7u.xn--wlb646b4ng; ⴜᰯ𐳒≯.۠ᜲྺ; [B1, B3, B5, B6, V5, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ;  # ⴜᰯ𐳒≯.۠ᜲྺ
-𐋵。ﳬ; 𐋵.كم; [B1]; xn--p97c.xn--fhbe; ; ;  # 𐋵.كم
-𐋵。كم; 𐋵.كم; [B1]; xn--p97c.xn--fhbe; ; ;  # 𐋵.كم
-xn--p97c.xn--fhbe; 𐋵.كم; [B1]; xn--p97c.xn--fhbe; ; ;  # 𐋵.كم
-𐋵.كم; ; [B1]; xn--p97c.xn--fhbe; ; ;  # 𐋵.كم
-≮𝅶．񱲁ꫬ⹈󰥭; ≮𝅶.񱲁ꫬ⹈󰥭; [P1, V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
-≮𝅶．񱲁ꫬ⹈󰥭; ≮𝅶.񱲁ꫬ⹈󰥭; [P1, V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
-≮𝅶.񱲁ꫬ⹈󰥭; ; [P1, V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
-≮𝅶.񱲁ꫬ⹈󰥭; ≮𝅶.񱲁ꫬ⹈󰥭; [P1, V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
-xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ≮𝅶.񱲁ꫬ⹈󰥭; [V6]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
-ⷰ͘ᢕ．͡𐹷󠴍; ⷰ͘ᢕ.͡𐹷󠴍; [B1, P1, V5, V6]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ;  # ⷰ͘ᢕ.͡𐹷
-ⷰ͘ᢕ.͡𐹷󠴍; ; [B1, P1, V5, V6]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ;  # ⷰ͘ᢕ.͡𐹷
-xn--2ua889htsp.xn--cva2687k2tv0g; ⷰ͘ᢕ.͡𐹷󠴍; [B1, V5, V6]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ;  # ⷰ͘ᢕ.͡𐹷
-ﵹᡐ‌ڭ．𑋪ׇ; غممᡐ‌ڭ.𑋪ׇ; [B1, B2, B3, B6, V5]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; xn--5gbwa03bg24e.xn--vdb1198k;  # غممᡐڭ.𑋪ׇ
-غممᡐ‌ڭ.𑋪ׇ; ; [B1, B2, B3, B6, V5]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; xn--5gbwa03bg24e.xn--vdb1198k;  # غممᡐڭ.𑋪ׇ
-xn--5gbwa03bg24e.xn--vdb1198k; غممᡐڭ.𑋪ׇ; [B1, B2, B3, B6, V5]; xn--5gbwa03bg24e.xn--vdb1198k; ; ;  # غممᡐڭ.𑋪ׇ
-xn--5gbwa03bg24eptk.xn--vdb1198k; غممᡐ‌ڭ.𑋪ׇ; [B1, B2, B3, B6, V5]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; ;  # غممᡐڭ.𑋪ׇ
-𑑂｡‍󥞀🞕򥁔; 𑑂.‍󥞀🞕򥁔; [C2, P1, V5, V6]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; xn--8v1d.xn--ye9h41035a2qqs; [P1, V5, V6] # 𑑂.🞕
-𑑂。‍󥞀🞕򥁔; 𑑂.‍󥞀🞕򥁔; [C2, P1, V5, V6]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; xn--8v1d.xn--ye9h41035a2qqs; [P1, V5, V6] # 𑑂.🞕
-xn--8v1d.xn--ye9h41035a2qqs; 𑑂.󥞀🞕򥁔; [V5, V6]; xn--8v1d.xn--ye9h41035a2qqs; ; ;  # 𑑂.🞕
-xn--8v1d.xn--1ug1386plvx1cd8vya; 𑑂.‍󥞀🞕򥁔; [C2, V5, V6]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; ;  # 𑑂.🞕
--ש。⒚; -ש.⒚; [B1, P1, V3, V6]; xn----gjc.xn--cth; ; ;  # -ש.⒚
--ש。19.; -ש.19.; [B1, V3]; xn----gjc.19.; ; ;  # -ש.19.
-xn----gjc.19.; -ש.19.; [B1, V3]; xn----gjc.19.; ; ;  # -ש.19.
-xn----gjc.xn--cth; -ש.⒚; [B1, V3, V6]; xn----gjc.xn--cth; ; ;  # -ש.⒚
-􊾻ࡅ‌｡ᢎ‍; 􊾻ࡅ‌.ᢎ‍; [B5, B6, C1, C2, P1, V6]; xn--3vb882jz4411a.xn--79e259a; ; xn--3vb50049s.xn--79e; [B5, B6, P1, V6] # ࡅ.ᢎ
-􊾻ࡅ‌。ᢎ‍; 􊾻ࡅ‌.ᢎ‍; [B5, B6, C1, C2, P1, V6]; xn--3vb882jz4411a.xn--79e259a; ; xn--3vb50049s.xn--79e; [B5, B6, P1, V6] # ࡅ.ᢎ
-xn--3vb50049s.xn--79e; 􊾻ࡅ.ᢎ; [B5, B6, V6]; xn--3vb50049s.xn--79e; ; ;  # ࡅ.ᢎ
-xn--3vb882jz4411a.xn--79e259a; 􊾻ࡅ‌.ᢎ‍; [B5, B6, C1, C2, V6]; xn--3vb882jz4411a.xn--79e259a; ; ;  # ࡅ.ᢎ
-ßুᷭ。ؠ8₅; ßুᷭ.ؠ85; ; xn--zca266bwrr.xn--85-psd; ; xn--ss-e2f077r.xn--85-psd;  # ßুᷭ.ؠ85
-ßুᷭ。ؠ85; ßুᷭ.ؠ85; ; xn--zca266bwrr.xn--85-psd; ; xn--ss-e2f077r.xn--85-psd;  # ßুᷭ.ؠ85
-SSুᷭ。ؠ85; ssুᷭ.ؠ85; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
-ssুᷭ。ؠ85; ssুᷭ.ؠ85; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
-Ssুᷭ。ؠ85; ssুᷭ.ؠ85; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
-xn--ss-e2f077r.xn--85-psd; ssুᷭ.ؠ85; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
-ssুᷭ.ؠ85; ; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
-SSুᷭ.ؠ85; ssুᷭ.ؠ85; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
-Ssুᷭ.ؠ85; ssুᷭ.ؠ85; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
-xn--zca266bwrr.xn--85-psd; ßুᷭ.ؠ85; ; xn--zca266bwrr.xn--85-psd; ; ;  # ßুᷭ.ؠ85
-ßুᷭ.ؠ85; ; ; xn--zca266bwrr.xn--85-psd; ; xn--ss-e2f077r.xn--85-psd;  # ßুᷭ.ؠ85
-SSুᷭ。ؠ8₅; ssুᷭ.ؠ85; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
-ssুᷭ。ؠ8₅; ssুᷭ.ؠ85; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
-Ssুᷭ。ؠ8₅; ssুᷭ.ؠ85; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
-્҄魅𝟣．₃𐹥ß; ્҄魅1.3𐹥ß; [B1, V5]; xn--1-0xb049b102o.xn--3-qfa7018r; ; xn--1-0xb049b102o.xn--3ss-nv9t;  # ્҄魅1.3𐹥ß
-્҄魅1.3𐹥ß; ; [B1, V5]; xn--1-0xb049b102o.xn--3-qfa7018r; ; xn--1-0xb049b102o.xn--3ss-nv9t;  # ્҄魅1.3𐹥ß
-્҄魅1.3𐹥SS; ્҄魅1.3𐹥ss; [B1, V5]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
-્҄魅1.3𐹥ss; ; [B1, V5]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
-્҄魅1.3𐹥Ss; ્҄魅1.3𐹥ss; [B1, V5]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
-xn--1-0xb049b102o.xn--3ss-nv9t; ્҄魅1.3𐹥ss; [B1, V5]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
-xn--1-0xb049b102o.xn--3-qfa7018r; ્҄魅1.3𐹥ß; [B1, V5]; xn--1-0xb049b102o.xn--3-qfa7018r; ; ;  # ્҄魅1.3𐹥ß
-્҄魅𝟣．₃𐹥SS; ્҄魅1.3𐹥ss; [B1, V5]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
-્҄魅𝟣．₃𐹥ss; ્҄魅1.3𐹥ss; [B1, V5]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
-્҄魅𝟣．₃𐹥Ss; ્҄魅1.3𐹥ss; [B1, V5]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
-ܫ｡𑓂⒈𑜫󠿻; ܫ.𑓂⒈𑜫󠿻; [B1, P1, V5, V6]; xn--1nb.xn--tsh7798f6rbrt828c; ; ;  # ܫ.𑓂⒈𑜫
-ܫ。𑓂1.𑜫󠿻; ܫ.𑓂1.𑜫󠿻; [B1, P1, V5, V6]; xn--1nb.xn--1-jq9i.xn--ji2dg9877c; ; ;  # ܫ.𑓂1.𑜫
-xn--1nb.xn--1-jq9i.xn--ji2dg9877c; ܫ.𑓂1.𑜫󠿻; [B1, V5, V6]; xn--1nb.xn--1-jq9i.xn--ji2dg9877c; ; ;  # ܫ.𑓂1.𑜫
-xn--1nb.xn--tsh7798f6rbrt828c; ܫ.𑓂⒈𑜫󠿻; [B1, V5, V6]; xn--1nb.xn--tsh7798f6rbrt828c; ; ;  # ܫ.𑓂⒈𑜫
-︍છ。嵨; છ.嵨; ; xn--6dc.xn--tot; ; ;  # છ.嵨
+⒊⒈𑁄。9; ⒊⒈𑁄.9; [V7]; xn--tshd3512p.9; ; ;  # ⒊⒈𑁄.9
+3.1.𑁄。9; 3.1.𑁄.9; [V6]; 3.1.xn--110d.9; ; ;  # 3.1.𑁄.9
+3.1.xn--110d.j; 3.1.𑁄.j; [V6]; 3.1.xn--110d.j; ; ;  # 3.1.𑁄.j
+xn--tshd3512p.j; ⒊⒈𑁄.j; [V7]; xn--tshd3512p.j; ; ;  # ⒊⒈𑁄.j
+-\u200C\u2DF1≮．𐹱򭏴4₉; -\u200C\u2DF1≮.𐹱򭏴49; [B1, C1, V3, V7]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, V3, V7] # -ⷱ≮.𐹱49
+-\u200C\u2DF1<\u0338．𐹱򭏴4₉; -\u200C\u2DF1≮.𐹱򭏴49; [B1, C1, V3, V7]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, V3, V7] # -ⷱ≮.𐹱49
+-\u200C\u2DF1≮.𐹱򭏴49; ; [B1, C1, V3, V7]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, V3, V7] # -ⷱ≮.𐹱49
+-\u200C\u2DF1<\u0338.𐹱򭏴49; -\u200C\u2DF1≮.𐹱򭏴49; [B1, C1, V3, V7]; xn----sgn20i14s.xn--49-ki3om2611f; ; xn----ngo823c.xn--49-ki3om2611f; [B1, V3, V7] # -ⷱ≮.𐹱49
+xn----ngo823c.xn--49-ki3om2611f; -\u2DF1≮.𐹱򭏴49; [B1, V3, V7]; xn----ngo823c.xn--49-ki3om2611f; ; ;  # -ⷱ≮.𐹱49
+xn----sgn20i14s.xn--49-ki3om2611f; -\u200C\u2DF1≮.𐹱򭏴49; [B1, C1, V3, V7]; xn----sgn20i14s.xn--49-ki3om2611f; ; ;  # -ⷱ≮.𐹱49
+-≯딾｡\u0847; -≯딾.\u0847; [B1, V3]; xn----pgow547d.xn--5vb; ; ;  # -≯딾.ࡇ
+->\u0338딾｡\u0847; -≯딾.\u0847; [B1, V3]; xn----pgow547d.xn--5vb; ; ;  # -≯딾.ࡇ
+-≯딾。\u0847; -≯딾.\u0847; [B1, V3]; xn----pgow547d.xn--5vb; ; ;  # -≯딾.ࡇ
+->\u0338딾。\u0847; -≯딾.\u0847; [B1, V3]; xn----pgow547d.xn--5vb; ; ;  # -≯딾.ࡇ
+xn----pgow547d.xn--5vb; -≯딾.\u0847; [B1, V3]; xn----pgow547d.xn--5vb; ; ;  # -≯딾.ࡇ
+𑙢⒈𐹠-｡󠗐\u200C; 𑙢⒈𐹠-.󠗐\u200C; [B1, C1, V3, V7]; xn----dcpy090hiyg.xn--0ug23321l; ; xn----dcpy090hiyg.xn--jd46e; [B1, V3, V7] # 𑙢⒈𐹠-.
+𑙢1.𐹠-。󠗐\u200C; 𑙢1.𐹠-.󠗐\u200C; [B1, C1, V3, V7]; xn--1-bf0j.xn----516i.xn--0ug23321l; ; xn--1-bf0j.xn----516i.xn--jd46e; [B1, V3, V7] # 𑙢1.𐹠-.
+xn--1-bf0j.xn----516i.xn--jd46e; 𑙢1.𐹠-.󠗐; [B1, V3, V7]; xn--1-bf0j.xn----516i.xn--jd46e; ; ;  # 𑙢1.𐹠-.
+xn--1-bf0j.xn----516i.xn--0ug23321l; 𑙢1.𐹠-.󠗐\u200C; [B1, C1, V3, V7]; xn--1-bf0j.xn----516i.xn--0ug23321l; ; ;  # 𑙢1.𐹠-.
+xn----dcpy090hiyg.xn--jd46e; 𑙢⒈𐹠-.󠗐; [B1, V3, V7]; xn----dcpy090hiyg.xn--jd46e; ; ;  # 𑙢⒈𐹠-.
+xn----dcpy090hiyg.xn--0ug23321l; 𑙢⒈𐹠-.󠗐\u200C; [B1, C1, V3, V7]; xn----dcpy090hiyg.xn--0ug23321l; ; ;  # 𑙢⒈𐹠-.
+\u034A．𐨎; \u034A.𐨎; [V6]; xn--oua.xn--mr9c; ; ;  # ͊.𐨎
+\u034A.𐨎; ; [V6]; xn--oua.xn--mr9c; ; ;  # ͊.𐨎
+xn--oua.xn--mr9c; \u034A.𐨎; [V6]; xn--oua.xn--mr9c; ; ;  # ͊.𐨎
+훉≮｡\u0E34; 훉≮.\u0E34; [V6]; xn--gdh2512e.xn--i4c; ; ;  # 훉≮.ิ
+훉<\u0338｡\u0E34; 훉≮.\u0E34; [V6]; xn--gdh2512e.xn--i4c; ; ;  # 훉≮.ิ
+훉≮。\u0E34; 훉≮.\u0E34; [V6]; xn--gdh2512e.xn--i4c; ; ;  # 훉≮.ิ
+훉<\u0338。\u0E34; 훉≮.\u0E34; [V6]; xn--gdh2512e.xn--i4c; ; ;  # 훉≮.ิ
+xn--gdh2512e.xn--i4c; 훉≮.\u0E34; [V6]; xn--gdh2512e.xn--i4c; ; ;  # 훉≮.ิ
+\u2DF7򞣉🃘．𴈇𝟸\u0659𞤯; \u2DF7򞣉🃘.𴈇2\u0659𞤯; [B1, B5, B6, V6, V7]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ;  # ⷷ🃘.2ٙ𞤯
+\u2DF7򞣉🃘.𴈇2\u0659𞤯; ; [B1, B5, B6, V6, V7]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ;  # ⷷ🃘.2ٙ𞤯
+\u2DF7򞣉🃘.𴈇2\u0659𞤍; \u2DF7򞣉🃘.𴈇2\u0659𞤯; [B1, B5, B6, V6, V7]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ;  # ⷷ🃘.2ٙ𞤯
+xn--trj8045le6s9b.xn--2-upc23918acjsj; \u2DF7򞣉🃘.𴈇2\u0659𞤯; [B1, B5, B6, V6, V7]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ;  # ⷷ🃘.2ٙ𞤯
+\u2DF7򞣉🃘．𴈇𝟸\u0659𞤍; \u2DF7򞣉🃘.𴈇2\u0659𞤯; [B1, B5, B6, V6, V7]; xn--trj8045le6s9b.xn--2-upc23918acjsj; ; ;  # ⷷ🃘.2ٙ𞤯
+󗇩ßᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ßᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V7]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V7] # ßᢞ.٠نخ-
+󗇩ßᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ßᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V7]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V7] # ßᢞ.٠نخ-
+󗇩SSᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V7]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V7] # ssᢞ.٠نخ-
+󗇩ssᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V7]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V7] # ssᢞ.٠نخ-
+󗇩Ssᢞ\u200C。\u0660𞷻\u0646\u062E-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V7]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V7] # ssᢞ.٠نخ-
+xn--ss-jepz4596r.xn----dnc5e1er384z; 󗇩ssᢞ.\u0660𞷻\u0646\u062E-; [B1, V3, V7]; xn--ss-jepz4596r.xn----dnc5e1er384z; ; ;  # ssᢞ.٠نخ-
+xn--ss-jep006bqt765b.xn----dnc5e1er384z; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V7]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; ;  # ssᢞ.٠نخ-
+xn--zca272jbif10059a.xn----dnc5e1er384z; 󗇩ßᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V7]; xn--zca272jbif10059a.xn----dnc5e1er384z; ; ;  # ßᢞ.٠نخ-
+󗇩SSᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V7]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V7] # ssᢞ.٠نخ-
+󗇩ssᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V7]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V7] # ssᢞ.٠نخ-
+󗇩Ssᢞ\u200C。\u0660𞷻\uFCD4-; 󗇩ssᢞ\u200C.\u0660𞷻\u0646\u062E-; [B1, B6, C1, V3, V7]; xn--ss-jep006bqt765b.xn----dnc5e1er384z; ; xn--ss-jepz4596r.xn----dnc5e1er384z; [B1, V3, V7] # ssᢞ.٠نخ-
+ꡆ。Ↄ\u0FB5놮-; ꡆ.ↄ\u0FB5놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ;  # ꡆ.ↄྵ놮-
+ꡆ。Ↄ\u0FB5놮-; ꡆ.ↄ\u0FB5놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ;  # ꡆ.ↄྵ놮-
+ꡆ。ↄ\u0FB5놮-; ꡆ.ↄ\u0FB5놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ;  # ꡆ.ↄྵ놮-
+ꡆ。ↄ\u0FB5놮-; ꡆ.ↄ\u0FB5놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ;  # ꡆ.ↄྵ놮-
+xn--fc9a.xn----qmg097k469k; ꡆ.ↄ\u0FB5놮-; [V3]; xn--fc9a.xn----qmg097k469k; ; ;  # ꡆ.ↄྵ놮-
+xn--fc9a.xn----qmg787k869k; ꡆ.Ↄ\u0FB5놮-; [V3, V7]; xn--fc9a.xn----qmg787k869k; ; ;  # ꡆ.Ↄྵ놮-
+\uFDAD\u200D.񥰌\u06A9; \u0644\u0645\u064A\u200D.񥰌\u06A9; [B3, B5, B6, C2, V7]; xn--ghbcp494x.xn--ckb36214f; ; xn--ghbcp.xn--ckb36214f; [B5, B6, V7] # لمي.ک
+\u0644\u0645\u064A\u200D.񥰌\u06A9; ; [B3, B5, B6, C2, V7]; xn--ghbcp494x.xn--ckb36214f; ; xn--ghbcp.xn--ckb36214f; [B5, B6, V7] # لمي.ک
+xn--ghbcp.xn--ckb36214f; \u0644\u0645\u064A.񥰌\u06A9; [B5, B6, V7]; xn--ghbcp.xn--ckb36214f; ; ;  # لمي.ک
+xn--ghbcp494x.xn--ckb36214f; \u0644\u0645\u064A\u200D.񥰌\u06A9; [B3, B5, B6, C2, V7]; xn--ghbcp494x.xn--ckb36214f; ; ;  # لمي.ک
+Ⴜ\u1C2F𐳒≯。\u06E0\u1732\u0FBA; ⴜ\u1C2F𐳒≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ;  # ⴜᰯ𐳒≯.۠ᜲྺ
+Ⴜ\u1C2F𐳒>\u0338。\u06E0\u1732\u0FBA; ⴜ\u1C2F𐳒≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ;  # ⴜᰯ𐳒≯.۠ᜲྺ
+ⴜ\u1C2F𐳒>\u0338。\u06E0\u1732\u0FBA; ⴜ\u1C2F𐳒≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ;  # ⴜᰯ𐳒≯.۠ᜲྺ
+ⴜ\u1C2F𐳒≯。\u06E0\u1732\u0FBA; ⴜ\u1C2F𐳒≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ;  # ⴜᰯ𐳒≯.۠ᜲྺ
+Ⴜ\u1C2F𐲒≯。\u06E0\u1732\u0FBA; ⴜ\u1C2F𐳒≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ;  # ⴜᰯ𐳒≯.۠ᜲྺ
+Ⴜ\u1C2F𐲒>\u0338。\u06E0\u1732\u0FBA; ⴜ\u1C2F𐳒≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ;  # ⴜᰯ𐳒≯.۠ᜲྺ
+xn--r1f68xh1jgv7u.xn--wlb646b4ng; ⴜ\u1C2F𐳒≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V6]; xn--r1f68xh1jgv7u.xn--wlb646b4ng; ; ;  # ⴜᰯ𐳒≯.۠ᜲྺ
+xn--0nd679cf3eq67y.xn--wlb646b4ng; Ⴜ\u1C2F𐳒≯.\u06E0\u1732\u0FBA; [B1, B5, B6, V6, V7]; xn--0nd679cf3eq67y.xn--wlb646b4ng; ; ;  # Ⴜᰯ𐳒≯.۠ᜲྺ
+𐋵。\uFCEC; 𐋵.\u0643\u0645; [B1]; xn--p97c.xn--fhbe; ; ;  # 𐋵.كم
+𐋵。\u0643\u0645; 𐋵.\u0643\u0645; [B1]; xn--p97c.xn--fhbe; ; ;  # 𐋵.كم
+xn--p97c.xn--fhbe; 𐋵.\u0643\u0645; [B1]; xn--p97c.xn--fhbe; ; ;  # 𐋵.كم
+𐋵.\u0643\u0645; ; [B1]; xn--p97c.xn--fhbe; ; ;  # 𐋵.كم
+≮𝅶．񱲁\uAAEC⹈󰥭; ≮.񱲁\uAAEC⹈󰥭; [V7]; xn--gdh.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
+<\u0338𝅶．񱲁\uAAEC⹈󰥭; ≮.񱲁\uAAEC⹈󰥭; [V7]; xn--gdh.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
+≮𝅶.񱲁\uAAEC⹈󰥭; ≮.񱲁\uAAEC⹈󰥭; [V7]; xn--gdh.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
+<\u0338𝅶.񱲁\uAAEC⹈󰥭; ≮.񱲁\uAAEC⹈󰥭; [V7]; xn--gdh.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
+xn--gdh.xn--4tjx101bsg00ds9pyc; ≮.񱲁\uAAEC⹈󰥭; [V7]; xn--gdh.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
+xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ≮𝅶.񱲁\uAAEC⹈󰥭; [V7]; xn--gdh0880o.xn--4tjx101bsg00ds9pyc; ; ;  # ≮.ꫬ⹈
+\u2DF0\u0358ᢕ．\u0361𐹷󠴍; \u2DF0\u0358ᢕ.\u0361𐹷󠴍; [B1, V6, V7]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ;  # ⷰ͘ᢕ.͡𐹷
+\u2DF0\u0358ᢕ.\u0361𐹷󠴍; ; [B1, V6, V7]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ;  # ⷰ͘ᢕ.͡𐹷
+xn--2ua889htsp.xn--cva2687k2tv0g; \u2DF0\u0358ᢕ.\u0361𐹷󠴍; [B1, V6, V7]; xn--2ua889htsp.xn--cva2687k2tv0g; ; ;  # ⷰ͘ᢕ.͡𐹷
+\uFD79ᡐ\u200C\u06AD．𑋪\u05C7; \u063A\u0645\u0645ᡐ\u200C\u06AD.𑋪\u05C7; [B1, B2, V6]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; xn--5gbwa03bg24e.xn--vdb1198k;  # غممᡐڭ.𑋪ׇ
+\u063A\u0645\u0645ᡐ\u200C\u06AD.𑋪\u05C7; ; [B1, B2, V6]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; xn--5gbwa03bg24e.xn--vdb1198k;  # غممᡐڭ.𑋪ׇ
+xn--5gbwa03bg24e.xn--vdb1198k; \u063A\u0645\u0645ᡐ\u06AD.𑋪\u05C7; [B1, B2, V6]; xn--5gbwa03bg24e.xn--vdb1198k; ; ;  # غممᡐڭ.𑋪ׇ
+xn--5gbwa03bg24eptk.xn--vdb1198k; \u063A\u0645\u0645ᡐ\u200C\u06AD.𑋪\u05C7; [B1, B2, V6]; xn--5gbwa03bg24eptk.xn--vdb1198k; ; ;  # غممᡐڭ.𑋪ׇ
+𑑂｡\u200D󥞀🞕򥁔; 𑑂.\u200D󥞀🞕򥁔; [C2, V6, V7]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; xn--8v1d.xn--ye9h41035a2qqs; [V6, V7] # 𑑂.🞕
+𑑂。\u200D󥞀🞕򥁔; 𑑂.\u200D󥞀🞕򥁔; [C2, V6, V7]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; xn--8v1d.xn--ye9h41035a2qqs; [V6, V7] # 𑑂.🞕
+xn--8v1d.xn--ye9h41035a2qqs; 𑑂.󥞀🞕򥁔; [V6, V7]; xn--8v1d.xn--ye9h41035a2qqs; ; ;  # 𑑂.🞕
+xn--8v1d.xn--1ug1386plvx1cd8vya; 𑑂.\u200D󥞀🞕򥁔; [C2, V6, V7]; xn--8v1d.xn--1ug1386plvx1cd8vya; ; ;  # 𑑂.🞕
+-\u05E9。⒚; -\u05E9.⒚; [B1, V3, V7]; xn----gjc.xn--cth; ; ;  # -ש.⒚
+-\u05E9。19.; -\u05E9.19.; [B1, V3]; xn----gjc.19.; [B1, V3, A4_2]; ;  # -ש.19.
+xn----gjc.1j.; -\u05E9.1j.; [B1, V3]; xn----gjc.1j.; [B1, V3, A4_2]; ;  # -ש.1j.
+xn----gjc.xn--cth; -\u05E9.⒚; [B1, V3, V7]; xn----gjc.xn--cth; ; ;  # -ש.⒚
+􊾻\u0845\u200C｡ᢎ\u200D; 􊾻\u0845\u200C.ᢎ\u200D; [B5, B6, C1, C2, V7]; xn--3vb882jz4411a.xn--79e259a; ; xn--3vb50049s.xn--79e; [B5, B6, V7] # ࡅ.ᢎ
+􊾻\u0845\u200C。ᢎ\u200D; 􊾻\u0845\u200C.ᢎ\u200D; [B5, B6, C1, C2, V7]; xn--3vb882jz4411a.xn--79e259a; ; xn--3vb50049s.xn--79e; [B5, B6, V7] # ࡅ.ᢎ
+xn--3vb50049s.xn--79e; 􊾻\u0845.ᢎ; [B5, B6, V7]; xn--3vb50049s.xn--79e; ; ;  # ࡅ.ᢎ
+xn--3vb882jz4411a.xn--79e259a; 􊾻\u0845\u200C.ᢎ\u200D; [B5, B6, C1, C2, V7]; xn--3vb882jz4411a.xn--79e259a; ; ;  # ࡅ.ᢎ
+ß\u09C1\u1DED。\u06208₅; ß\u09C1\u1DED.\u062085; ; xn--zca266bwrr.xn--85-psd; ; xn--ss-e2f077r.xn--85-psd;  # ßুᷭ.ؠ85
+ß\u09C1\u1DED。\u062085; ß\u09C1\u1DED.\u062085; ; xn--zca266bwrr.xn--85-psd; ; xn--ss-e2f077r.xn--85-psd;  # ßুᷭ.ؠ85
+SS\u09C1\u1DED。\u062085; ss\u09C1\u1DED.\u062085; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
+ss\u09C1\u1DED。\u062085; ss\u09C1\u1DED.\u062085; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
+Ss\u09C1\u1DED。\u062085; ss\u09C1\u1DED.\u062085; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
+xn--ss-e2f077r.xn--85-psd; ss\u09C1\u1DED.\u062085; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
+ss\u09C1\u1DED.\u062085; ; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
+SS\u09C1\u1DED.\u062085; ss\u09C1\u1DED.\u062085; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
+Ss\u09C1\u1DED.\u062085; ss\u09C1\u1DED.\u062085; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
+xn--zca266bwrr.xn--85-psd; ß\u09C1\u1DED.\u062085; ; xn--zca266bwrr.xn--85-psd; ; ;  # ßুᷭ.ؠ85
+ß\u09C1\u1DED.\u062085; ; ; xn--zca266bwrr.xn--85-psd; ; xn--ss-e2f077r.xn--85-psd;  # ßুᷭ.ؠ85
+SS\u09C1\u1DED。\u06208₅; ss\u09C1\u1DED.\u062085; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
+ss\u09C1\u1DED。\u06208₅; ss\u09C1\u1DED.\u062085; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
+Ss\u09C1\u1DED。\u06208₅; ss\u09C1\u1DED.\u062085; ; xn--ss-e2f077r.xn--85-psd; ; ;  # ssুᷭ.ؠ85
+\u0ACD\u0484魅𝟣．₃𐹥ß; \u0ACD\u0484魅1.3𐹥ß; [B1, V6]; xn--1-0xb049b102o.xn--3-qfa7018r; ; xn--1-0xb049b102o.xn--3ss-nv9t;  # ્҄魅1.3𐹥ß
+\u0ACD\u0484魅1.3𐹥ß; ; [B1, V6]; xn--1-0xb049b102o.xn--3-qfa7018r; ; xn--1-0xb049b102o.xn--3ss-nv9t;  # ્҄魅1.3𐹥ß
+\u0ACD\u0484魅1.3𐹥SS; \u0ACD\u0484魅1.3𐹥ss; [B1, V6]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
+\u0ACD\u0484魅1.3𐹥ss; ; [B1, V6]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
+\u0ACD\u0484魅1.3𐹥Ss; \u0ACD\u0484魅1.3𐹥ss; [B1, V6]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
+xn--1-0xb049b102o.xn--3ss-nv9t; \u0ACD\u0484魅1.3𐹥ss; [B1, V6]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
+xn--1-0xb049b102o.xn--3-qfa7018r; \u0ACD\u0484魅1.3𐹥ß; [B1, V6]; xn--1-0xb049b102o.xn--3-qfa7018r; ; ;  # ્҄魅1.3𐹥ß
+\u0ACD\u0484魅𝟣．₃𐹥SS; \u0ACD\u0484魅1.3𐹥ss; [B1, V6]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
+\u0ACD\u0484魅𝟣．₃𐹥ss; \u0ACD\u0484魅1.3𐹥ss; [B1, V6]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
+\u0ACD\u0484魅𝟣．₃𐹥Ss; \u0ACD\u0484魅1.3𐹥ss; [B1, V6]; xn--1-0xb049b102o.xn--3ss-nv9t; ; ;  # ્҄魅1.3𐹥ss
+\u072B｡𑓂⒈𑜫󠿻; \u072B.𑓂⒈𑜫󠿻; [B1, V6, V7]; xn--1nb.xn--tsh7798f6rbrt828c; ; ;  # ܫ.𑓂⒈𑜫
+\u072B。𑓂1.𑜫󠿻; \u072B.𑓂1.𑜫󠿻; [B1, V6, V7]; xn--1nb.xn--1-jq9i.xn--ji2dg9877c; ; ;  # ܫ.𑓂1.𑜫
+xn--1nb.xn--1-jq9i.xn--ji2dg9877c; \u072B.𑓂1.𑜫󠿻; [B1, V6, V7]; xn--1nb.xn--1-jq9i.xn--ji2dg9877c; ; ;  # ܫ.𑓂1.𑜫
+xn--1nb.xn--tsh7798f6rbrt828c; \u072B.𑓂⒈𑜫󠿻; [B1, V6, V7]; xn--1nb.xn--tsh7798f6rbrt828c; ; ;  # ܫ.𑓂⒈𑜫
+\uFE0Dછ。嵨; છ.嵨; ; xn--6dc.xn--tot; ; ;  # છ.嵨
 xn--6dc.xn--tot; છ.嵨; ; xn--6dc.xn--tot; ; ;  # છ.嵨
 છ.嵨; ; ; xn--6dc.xn--tot; ; ;  # છ.嵨
-Ⴔ≠Ⴀ.𐹥𐹰; ; [B1, P1, V6]; xn--7md3b171g.xn--do0dwa; ; ;  # Ⴔ≠Ⴀ.𐹥𐹰
-Ⴔ≠Ⴀ.𐹥𐹰; Ⴔ≠Ⴀ.𐹥𐹰; [B1, P1, V6]; xn--7md3b171g.xn--do0dwa; ; ;  # Ⴔ≠Ⴀ.𐹥𐹰
-ⴔ≠ⴀ.𐹥𐹰; ⴔ≠ⴀ.𐹥𐹰; [B1, P1, V6]; xn--1ch603bxb.xn--do0dwa; ; ;  # ⴔ≠ⴀ.𐹥𐹰
-ⴔ≠ⴀ.𐹥𐹰; ; [B1, P1, V6]; xn--1ch603bxb.xn--do0dwa; ; ;  # ⴔ≠ⴀ.𐹥𐹰
-xn--1ch603bxb.xn--do0dwa; ⴔ≠ⴀ.𐹥𐹰; [B1, V6]; xn--1ch603bxb.xn--do0dwa; ; ;  # ⴔ≠ⴀ.𐹥𐹰
-xn--7md3b171g.xn--do0dwa; Ⴔ≠Ⴀ.𐹥𐹰; [B1, V6]; xn--7md3b171g.xn--do0dwa; ; ;  # Ⴔ≠Ⴀ.𐹥𐹰
--‌⒙𐫥｡𝨵; -‌⒙𐫥.𝨵; [C1, P1, V3, V5, V6]; xn----sgn18r3191a.xn--382h; ; xn----ddps939g.xn--382h; [P1, V3, V5, V6] # -⒙𐫥.𝨵
--‌18.𐫥。𝨵; -‌18.𐫥.𝨵; [C1, V3, V5]; xn---18-9m0a.xn--rx9c.xn--382h; ; -18.xn--rx9c.xn--382h; [V3, V5] # -18.𐫥.𝨵
--18.xn--rx9c.xn--382h; -18.𐫥.𝨵; [V3, V5]; -18.xn--rx9c.xn--382h; ; ;  # -18.𐫥.𝨵
-xn---18-9m0a.xn--rx9c.xn--382h; -‌18.𐫥.𝨵; [C1, V3, V5]; xn---18-9m0a.xn--rx9c.xn--382h; ; ;  # -18.𐫥.𝨵
-xn----ddps939g.xn--382h; -⒙𐫥.𝨵; [V3, V5, V6]; xn----ddps939g.xn--382h; ; ;  # -⒙𐫥.𝨵
-xn----sgn18r3191a.xn--382h; -‌⒙𐫥.𝨵; [C1, V3, V5, V6]; xn----sgn18r3191a.xn--382h; ; ;  # -⒙𐫥.𝨵
-︒.ʌᠣ-𐹽; ; [B1, B5, B6, P1, V6]; xn--y86c.xn----73a596nuh9t; ; ;  # ︒.ʌᠣ-𐹽
+Ⴔ≠Ⴀ.𐹥𐹰; ⴔ≠ⴀ.𐹥𐹰; [B1]; xn--1ch603bxb.xn--do0dwa; ; ;  # ⴔ≠ⴀ.𐹥𐹰
+Ⴔ=\u0338Ⴀ.𐹥𐹰; ⴔ≠ⴀ.𐹥𐹰; [B1]; xn--1ch603bxb.xn--do0dwa; ; ;  # ⴔ≠ⴀ.𐹥𐹰
+ⴔ=\u0338ⴀ.𐹥𐹰; ⴔ≠ⴀ.𐹥𐹰; [B1]; xn--1ch603bxb.xn--do0dwa; ; ;  # ⴔ≠ⴀ.𐹥𐹰
+ⴔ≠ⴀ.𐹥𐹰; ; [B1]; xn--1ch603bxb.xn--do0dwa; ; ;  # ⴔ≠ⴀ.𐹥𐹰
+xn--1ch603bxb.xn--do0dwa; ⴔ≠ⴀ.𐹥𐹰; [B1]; xn--1ch603bxb.xn--do0dwa; ; ;  # ⴔ≠ⴀ.𐹥𐹰
+xn--7md3b171g.xn--do0dwa; Ⴔ≠Ⴀ.𐹥𐹰; [B1, V7]; xn--7md3b171g.xn--do0dwa; ; ;  # Ⴔ≠Ⴀ.𐹥𐹰
+-\u200C⒙𐫥｡𝨵; -\u200C⒙𐫥.𝨵; [C1, V3, V6, V7]; xn----sgn18r3191a.xn--382h; ; xn----ddps939g.xn--382h; [V3, V6, V7] # -⒙𐫥.𝨵
+-\u200C18.𐫥。𝨵; -\u200C18.𐫥.𝨵; [C1, V3, V6]; xn---18-9m0a.xn--rx9c.xn--382h; ; -18.xn--rx9c.xn--382h; [V3, V6] # -18.𐫥.𝨵
+-18.xn--rx9c.xn--382h; -18.𐫥.𝨵; [V3, V6]; -18.xn--rx9c.xn--382h; ; ;  # -18.𐫥.𝨵
+xn---18-9m0a.xn--rx9c.xn--382h; -\u200C18.𐫥.𝨵; [C1, V3, V6]; xn---18-9m0a.xn--rx9c.xn--382h; ; ;  # -18.𐫥.𝨵
+xn----ddps939g.xn--382h; -⒙𐫥.𝨵; [V3, V6, V7]; xn----ddps939g.xn--382h; ; ;  # -⒙𐫥.𝨵
+xn----sgn18r3191a.xn--382h; -\u200C⒙𐫥.𝨵; [C1, V3, V6, V7]; xn----sgn18r3191a.xn--382h; ; ;  # -⒙𐫥.𝨵
+︒.ʌᠣ-𐹽; ; [B1, B5, B6, V7]; xn--y86c.xn----73a596nuh9t; ; ;  # ︒.ʌᠣ-𐹽
 。.ʌᠣ-𐹽; ..ʌᠣ-𐹽; [B5, B6, X4_2]; ..xn----73a596nuh9t; [B5, B6, A4_2]; ;  # ..ʌᠣ-𐹽
 。.Ʌᠣ-𐹽; ..ʌᠣ-𐹽; [B5, B6, X4_2]; ..xn----73a596nuh9t; [B5, B6, A4_2]; ;  # ..ʌᠣ-𐹽
 ..xn----73a596nuh9t; ..ʌᠣ-𐹽; [B5, B6, X4_2]; ..xn----73a596nuh9t; [B5, B6, A4_2]; ;  # ..ʌᠣ-𐹽
-︒.Ʌᠣ-𐹽; ︒.ʌᠣ-𐹽; [B1, B5, B6, P1, V6]; xn--y86c.xn----73a596nuh9t; ; ;  # ︒.ʌᠣ-𐹽
-xn--y86c.xn----73a596nuh9t; ︒.ʌᠣ-𐹽; [B1, B5, B6, V6]; xn--y86c.xn----73a596nuh9t; ; ;  # ︒.ʌᠣ-𐹽
-︅︒。𦀾᳠; ︒.𦀾᳠; [P1, V6]; xn--y86c.xn--t6f5138v; ; ;  # ︒.𦀾᳠
-︅。。𦀾᳠; ..𦀾᳠; [X4_2]; ..xn--t6f5138v; [A4_2]; ;  # ..𦀾᳠
-..xn--t6f5138v; ..𦀾᳠; [X4_2]; ..xn--t6f5138v; [A4_2]; ;  # ..𦀾᳠
-xn--y86c.xn--t6f5138v; ︒.𦀾᳠; [V6]; xn--y86c.xn--t6f5138v; ; ;  # ︒.𦀾᳠
-xn--t6f5138v; 𦀾᳠; ; xn--t6f5138v; ; ;  # 𦀾᳠
-𦀾᳠; ; ; xn--t6f5138v; ; ;  # 𦀾᳠
-𞮑ß􏞞。ᡁ; 𞮑ß􏞞.ᡁ; [B2, B3, P1, V6]; xn--zca9432wb989f.xn--07e; ; xn--ss-o412ac6305g.xn--07e;  # ß.ᡁ
-𞮑SS􏞞。ᡁ; 𞮑ss􏞞.ᡁ; [B2, B3, P1, V6]; xn--ss-o412ac6305g.xn--07e; ; ;  # ss.ᡁ
-𞮑ss􏞞。ᡁ; 𞮑ss􏞞.ᡁ; [B2, B3, P1, V6]; xn--ss-o412ac6305g.xn--07e; ; ;  # ss.ᡁ
-𞮑Ss􏞞。ᡁ; 𞮑ss􏞞.ᡁ; [B2, B3, P1, V6]; xn--ss-o412ac6305g.xn--07e; ; ;  # ss.ᡁ
-xn--ss-o412ac6305g.xn--07e; 𞮑ss􏞞.ᡁ; [B2, B3, V6]; xn--ss-o412ac6305g.xn--07e; ; ;  # ss.ᡁ
-xn--zca9432wb989f.xn--07e; 𞮑ß􏞞.ᡁ; [B2, B3, V6]; xn--zca9432wb989f.xn--07e; ; ;  # ß.ᡁ
-꥓‍ج٬。𱆎󻡟‌󠅆; ꥓‍ج٬.𱆎󻡟‌; [B5, B6, C1, P1, V5, V6]; xn--rgb2k500fhq9j.xn--0ug78870a5sp9d; ; xn--rgb2k6711c.xn--ec8nj3948b; [B5, B6, P1, V5, V6] # ꥓ج٬.𱆎
-xn--rgb2k6711c.xn--ec8nj3948b; ꥓ج٬.𱆎󻡟; [B5, B6, V5, V6]; xn--rgb2k6711c.xn--ec8nj3948b; ; ;  # ꥓ج٬.𱆎
-xn--rgb2k500fhq9j.xn--0ug78870a5sp9d; ꥓‍ج٬.𱆎󻡟‌; [B5, B6, C1, V5, V6]; xn--rgb2k500fhq9j.xn--0ug78870a5sp9d; ; ;  # ꥓ج٬.𱆎
-󠕏．-ß‌≠; 󠕏.-ß‌≠; [C1, P1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ß≠
-󠕏．-ß‌≠; 󠕏.-ß‌≠; [C1, P1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ß≠
-󠕏.-ß‌≠; ; [C1, P1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ß≠
-󠕏.-ß‌≠; 󠕏.-ß‌≠; [C1, P1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ß≠
-󠕏.-SS‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-󠕏.-SS‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-󠕏.-ss‌≠; ; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-󠕏.-ss‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-󠕏.-Ss‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-󠕏.-Ss‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-xn--u836e.xn---ss-gl2a; 󠕏.-ss≠; [V3, V6]; xn--u836e.xn---ss-gl2a; ; ;  # .-ss≠
-xn--u836e.xn---ss-cn0at5l; 󠕏.-ss‌≠; [C1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; ;  # .-ss≠
-xn--u836e.xn----qfa750ve7b; 󠕏.-ß‌≠; [C1, V3, V6]; xn--u836e.xn----qfa750ve7b; ; ;  # .-ß≠
-󠕏．-SS‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-󠕏．-SS‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-󠕏．-ss‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-󠕏．-ss‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-󠕏．-Ss‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-󠕏．-Ss‌≠; 󠕏.-ss‌≠; [C1, P1, V3, V6]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [P1, V3, V6] # .-ss≠
-ᡙ‌｡≯𐋲≠; ᡙ‌.≯𐋲≠; [C1, P1, V6]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [P1, V6] # ᡙ.≯𐋲≠
-ᡙ‌｡≯𐋲≠; ᡙ‌.≯𐋲≠; [C1, P1, V6]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [P1, V6] # ᡙ.≯𐋲≠
-ᡙ‌。≯𐋲≠; ᡙ‌.≯𐋲≠; [C1, P1, V6]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [P1, V6] # ᡙ.≯𐋲≠
-ᡙ‌。≯𐋲≠; ᡙ‌.≯𐋲≠; [C1, P1, V6]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [P1, V6] # ᡙ.≯𐋲≠
-xn--p8e.xn--1ch3a7084l; ᡙ.≯𐋲≠; [V6]; xn--p8e.xn--1ch3a7084l; ; ;  # ᡙ.≯𐋲≠
-xn--p8e650b.xn--1ch3a7084l; ᡙ‌.≯𐋲≠; [C1, V6]; xn--p8e650b.xn--1ch3a7084l; ; ;  # ᡙ.≯𐋲≠
-𐹧𞲄󠁭񆼩。͎🄀; 𐹧𞲄󠁭񆼩.͎🄀; [B1, P1, V5, V6]; xn--fo0dw409aq58qrn69d.xn--sua6883w; ; ;  # 𐹧𞲄.͎🄀
-𐹧𞲄󠁭񆼩。͎0.; 𐹧𞲄󠁭񆼩.͎0.; [B1, P1, V5, V6]; xn--fo0dw409aq58qrn69d.xn--0-bgb.; ; ;  # 𐹧𞲄.͎0.
-xn--fo0dw409aq58qrn69d.xn--0-bgb.; 𐹧𞲄󠁭񆼩.͎0.; [B1, V5, V6]; xn--fo0dw409aq58qrn69d.xn--0-bgb.; ; ;  # 𐹧𞲄.͎0.
-xn--fo0dw409aq58qrn69d.xn--sua6883w; 𐹧𞲄󠁭񆼩.͎🄀; [B1, V5, V6]; xn--fo0dw409aq58qrn69d.xn--sua6883w; ; ;  # 𐹧𞲄.͎🄀
-Ⴄ．‍ܡ󻣋ς; Ⴄ.‍ܡ󻣋ς; [B1, C2, P1, V6]; xn--cnd.xn--3xa93o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, P1, V6] # Ⴄ.ܡς
-Ⴄ.‍ܡ󻣋ς; ; [B1, C2, P1, V6]; xn--cnd.xn--3xa93o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, P1, V6] # Ⴄ.ܡς
-ⴄ.‍ܡ󻣋ς; ; [B1, C2, P1, V6]; xn--vkj.xn--3xa93o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, P1, V6] # ⴄ.ܡς
-Ⴄ.‍ܡ󻣋Σ; Ⴄ.‍ܡ󻣋σ; [B1, C2, P1, V6]; xn--cnd.xn--4xa73o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, P1, V6] # Ⴄ.ܡσ
-ⴄ.‍ܡ󻣋σ; ; [B1, C2, P1, V6]; xn--vkj.xn--4xa73o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, P1, V6] # ⴄ.ܡσ
-xn--vkj.xn--4xa73ob5892c; ⴄ.ܡ󻣋σ; [B2, B3, V6]; xn--vkj.xn--4xa73ob5892c; ; ;  # ⴄ.ܡσ
-xn--vkj.xn--4xa73o3t5ajq467a; ⴄ.‍ܡ󻣋σ; [B1, C2, V6]; xn--vkj.xn--4xa73o3t5ajq467a; ; ;  # ⴄ.ܡσ
-xn--cnd.xn--4xa73ob5892c; Ⴄ.ܡ󻣋σ; [B2, B3, V6]; xn--cnd.xn--4xa73ob5892c; ; ;  # Ⴄ.ܡσ
-xn--cnd.xn--4xa73o3t5ajq467a; Ⴄ.‍ܡ󻣋σ; [B1, C2, V6]; xn--cnd.xn--4xa73o3t5ajq467a; ; ;  # Ⴄ.ܡσ
-xn--vkj.xn--3xa93o3t5ajq467a; ⴄ.‍ܡ󻣋ς; [B1, C2, V6]; xn--vkj.xn--3xa93o3t5ajq467a; ; ;  # ⴄ.ܡς
-xn--cnd.xn--3xa93o3t5ajq467a; Ⴄ.‍ܡ󻣋ς; [B1, C2, V6]; xn--cnd.xn--3xa93o3t5ajq467a; ; ;  # Ⴄ.ܡς
-ⴄ．‍ܡ󻣋ς; ⴄ.‍ܡ󻣋ς; [B1, C2, P1, V6]; xn--vkj.xn--3xa93o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, P1, V6] # ⴄ.ܡς
-Ⴄ．‍ܡ󻣋Σ; Ⴄ.‍ܡ󻣋σ; [B1, C2, P1, V6]; xn--cnd.xn--4xa73o3t5ajq467a; ; xn--cnd.xn--4xa73ob5892c; [B2, B3, P1, V6] # Ⴄ.ܡσ
-ⴄ．‍ܡ󻣋σ; ⴄ.‍ܡ󻣋σ; [B1, C2, P1, V6]; xn--vkj.xn--4xa73o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, P1, V6] # ⴄ.ܡσ
-򮵛ؓ.Ⴕ; ; [P1, V6]; xn--1fb94204l.xn--tnd; ; ;  # ؓ.Ⴕ
-򮵛ؓ.ⴕ; ; [P1, V6]; xn--1fb94204l.xn--dlj; ; ;  # ؓ.ⴕ
-xn--1fb94204l.xn--dlj; 򮵛ؓ.ⴕ; [V6]; xn--1fb94204l.xn--dlj; ; ;  # ؓ.ⴕ
-xn--1fb94204l.xn--tnd; 򮵛ؓ.Ⴕ; [V6]; xn--1fb94204l.xn--tnd; ; ;  # ؓ.Ⴕ
-≯ᷳ𞤥。‌꣄󠪉‍; ≯ᷳ𞤥.‌꣄󠪉‍; [B1, C1, C2, P1, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, P1, V5, V6] # ≯ᷳ𞤥.꣄
-≯ᷳ𞤥。‌꣄󠪉‍; ≯ᷳ𞤥.‌꣄󠪉‍; [B1, C1, C2, P1, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, P1, V5, V6] # ≯ᷳ𞤥.꣄
-≯ᷳ𞤃。‌꣄󠪉‍; ≯ᷳ𞤥.‌꣄󠪉‍; [B1, C1, C2, P1, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, P1, V5, V6] # ≯ᷳ𞤥.꣄
-≯ᷳ𞤃。‌꣄󠪉‍; ≯ᷳ𞤥.‌꣄󠪉‍; [B1, C1, C2, P1, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, P1, V5, V6] # ≯ᷳ𞤥.꣄
-xn--ofg13qyr21c.xn--0f9au6706d; ≯ᷳ𞤥.꣄󠪉; [B1, V5, V6]; xn--ofg13qyr21c.xn--0f9au6706d; ; ;  # ≯ᷳ𞤥.꣄
-xn--ofg13qyr21c.xn--0ugc0116hix29k; ≯ᷳ𞤥.‌꣄󠪉‍; [B1, C1, C2, V6]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; ;  # ≯ᷳ𞤥.꣄
-‌󠄷｡򒑁; ‌.򒑁; [C1, P1, V6]; xn--0ug.xn--w720c; ; .xn--w720c; [P1, V6, A4_2] # .
-‌󠄷。򒑁; ‌.򒑁; [C1, P1, V6]; xn--0ug.xn--w720c; ; .xn--w720c; [P1, V6, A4_2] # .
-.xn--w720c; .򒑁; [V6, X4_2]; .xn--w720c; [V6, A4_2]; ;  # .
-xn--0ug.xn--w720c; ‌.򒑁; [C1, V6]; xn--0ug.xn--w720c; ; ;  # .
-⒈ූ焅.󗡙‍ꡟ; ; [C2, P1, V6]; xn--t1c337io97c.xn--1ugz184c9lw7i; ; xn--t1c337io97c.xn--4c9a21133d; [P1, V6] # ⒈ූ焅.ꡟ
-1.ූ焅.󗡙‍ꡟ; ; [C2, P1, V5, V6]; 1.xn--t1c6981c.xn--1ugz184c9lw7i; ; 1.xn--t1c6981c.xn--4c9a21133d; [P1, V5, V6] # 1.ූ焅.ꡟ
-1.xn--t1c6981c.xn--4c9a21133d; 1.ූ焅.󗡙ꡟ; [V5, V6]; 1.xn--t1c6981c.xn--4c9a21133d; ; ;  # 1.ූ焅.ꡟ
-1.xn--t1c6981c.xn--1ugz184c9lw7i; 1.ූ焅.󗡙‍ꡟ; [C2, V5, V6]; 1.xn--t1c6981c.xn--1ugz184c9lw7i; ; ;  # 1.ූ焅.ꡟ
-xn--t1c337io97c.xn--4c9a21133d; ⒈ූ焅.󗡙ꡟ; [V6]; xn--t1c337io97c.xn--4c9a21133d; ; ;  # ⒈ූ焅.ꡟ
-xn--t1c337io97c.xn--1ugz184c9lw7i; ⒈ූ焅.󗡙‍ꡟ; [C2, V6]; xn--t1c337io97c.xn--1ugz184c9lw7i; ; ;  # ⒈ූ焅.ꡟ
-᷍ς≮.ς𝪦𞤕0; ᷍ς≮.ς𝪦𞤷0; [B1, B5, P1, V5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma;  # ᷍ς≮.ς𝪦𞤷0
-᷍ς≮.ς𝪦𞤕0; ᷍ς≮.ς𝪦𞤷0; [B1, B5, P1, V5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma;  # ᷍ς≮.ς𝪦𞤷0
-᷍ς≮.ς𝪦𞤷0; ᷍ς≮.ς𝪦𞤷0; [B1, B5, P1, V5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma;  # ᷍ς≮.ς𝪦𞤷0
-᷍ς≮.ς𝪦𞤷0; ; [B1, B5, P1, V5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma;  # ᷍ς≮.ς𝪦𞤷0
-᷍Σ≮.Σ𝪦𞤕0; ᷍σ≮.σ𝪦𞤷0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
-᷍Σ≮.Σ𝪦𞤕0; ᷍σ≮.σ𝪦𞤷0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
-᷍σ≮.σ𝪦𞤷0; ᷍σ≮.σ𝪦𞤷0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
-᷍σ≮.σ𝪦𞤷0; ; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
-᷍Σ≮.Σ𝪦𞤷0; ᷍σ≮.σ𝪦𞤷0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
-᷍Σ≮.Σ𝪦𞤷0; ᷍σ≮.σ𝪦𞤷0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
-xn--4xa544kvid.xn--0-zmb55727aggma; ᷍σ≮.σ𝪦𞤷0; [B1, B5, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
-xn--3xa744kvid.xn--0-xmb85727aggma; ᷍ς≮.ς𝪦𞤷0; [B1, B5, V5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; ;  # ᷍ς≮.ς𝪦𞤷0
-᷍σ≮.σ𝪦𞤕0; ᷍σ≮.σ𝪦𞤷0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
-᷍σ≮.σ𝪦𞤕0; ᷍σ≮.σ𝪦𞤷0; [B1, B5, P1, V5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
-򢦾ßֹ𐫙.֭ࢡ; ; [B1, B5, B6, P1, V5, V6]; xn--zca89v339zj118e.xn--4cb62m; ; xn--ss-xjd6058xlz50g.xn--4cb62m;  # ßֹ𐫙.֭ࢡ
-򢦾SSֹ𐫙.֭ࢡ; 򢦾ssֹ𐫙.֭ࢡ; [B1, B5, B6, P1, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ;  # ssֹ𐫙.֭ࢡ
-򢦾ssֹ𐫙.֭ࢡ; ; [B1, B5, B6, P1, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ;  # ssֹ𐫙.֭ࢡ
-򢦾Ssֹ𐫙.֭ࢡ; 򢦾ssֹ𐫙.֭ࢡ; [B1, B5, B6, P1, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ;  # ssֹ𐫙.֭ࢡ
-xn--ss-xjd6058xlz50g.xn--4cb62m; 򢦾ssֹ𐫙.֭ࢡ; [B1, B5, B6, V5, V6]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ;  # ssֹ𐫙.֭ࢡ
-xn--zca89v339zj118e.xn--4cb62m; 򢦾ßֹ𐫙.֭ࢡ; [B1, B5, B6, V5, V6]; xn--zca89v339zj118e.xn--4cb62m; ; ;  # ßֹ𐫙.֭ࢡ
--𞣄｡⒈; -𞣄.⒈; [B1, P1, V3, V6]; xn----xc8r.xn--tsh; ; ;  # -𞣄.⒈
--𞣄。1.; -𞣄.1.; [B1, V3]; xn----xc8r.1.; ; ;  # -𞣄.1.
-xn----xc8r.1.; -𞣄.1.; [B1, V3]; xn----xc8r.1.; ; ;  # -𞣄.1.
-xn----xc8r.xn--tsh; -𞣄.⒈; [B1, V3, V6]; xn----xc8r.xn--tsh; ; ;  # -𞣄.⒈
-񈠢𐫖𝟡。ؾ𑘿; 񈠢𐫖9.ؾ𑘿; [B5, P1, V6]; xn--9-el5iv442t.xn--9gb0830l; ; ;  # 𐫖9.ؾ𑘿
-񈠢𐫖9。ؾ𑘿; 񈠢𐫖9.ؾ𑘿; [B5, P1, V6]; xn--9-el5iv442t.xn--9gb0830l; ; ;  # 𐫖9.ؾ𑘿
-xn--9-el5iv442t.xn--9gb0830l; 񈠢𐫖9.ؾ𑘿; [B5, V6]; xn--9-el5iv442t.xn--9gb0830l; ; ;  # 𐫖9.ؾ𑘿
-٨ﲌ٨ᩝ.‍; ٨نم٨ᩝ.‍; [B1, C2]; xn--hhbb5hc956w.xn--1ug; ; xn--hhbb5hc956w.; [B1] # ٨نم٨ᩝ.
-٨نم٨ᩝ.‍; ; [B1, C2]; xn--hhbb5hc956w.xn--1ug; ; xn--hhbb5hc956w.; [B1] # ٨نم٨ᩝ.
-xn--hhbb5hc956w.; ٨نم٨ᩝ.; [B1]; xn--hhbb5hc956w.; ; ;  # ٨نم٨ᩝ.
-xn--hhbb5hc956w.xn--1ug; ٨نم٨ᩝ.‍; [B1, C2]; xn--hhbb5hc956w.xn--1ug; ; ;  # ٨نم٨ᩝ.
-𝟘．Ⴇ󀳑ﵐ񫃱; 0.Ⴇ󀳑تجم񫃱; [B1, B5, P1, V6]; 0.xn--pgbe9e344c2725svff8b; ; ;  # 0.Ⴇتجم
-0.Ⴇ󀳑تجم񫃱; ; [B1, B5, P1, V6]; 0.xn--pgbe9e344c2725svff8b; ; ;  # 0.Ⴇتجم
-0.ⴇ󀳑تجم񫃱; ; [B1, B5, P1, V6]; 0.xn--pgbe9ez79qd207lvff8b; ; ;  # 0.ⴇتجم
-0.xn--pgbe9ez79qd207lvff8b; 0.ⴇ󀳑تجم񫃱; [B1, B5, V6]; 0.xn--pgbe9ez79qd207lvff8b; ; ;  # 0.ⴇتجم
-0.xn--pgbe9e344c2725svff8b; 0.Ⴇ󀳑تجم񫃱; [B1, B5, V6]; 0.xn--pgbe9e344c2725svff8b; ; ;  # 0.Ⴇتجم
-𝟘．ⴇ󀳑ﵐ񫃱; 0.ⴇ󀳑تجم񫃱; [B1, B5, P1, V6]; 0.xn--pgbe9ez79qd207lvff8b; ; ;  # 0.ⴇتجم
-𑇀▍.⁞ᠰ; ; [V5]; xn--9zh3057f.xn--j7e103b; ; ;  # 𑇀▍.⁞ᠰ
-xn--9zh3057f.xn--j7e103b; 𑇀▍.⁞ᠰ; [V5]; xn--9zh3057f.xn--j7e103b; ; ;  # 𑇀▍.⁞ᠰ
-‍-ٺ.򏯩; ; [B1, C2, P1, V6]; xn----qrc357q.xn--ts49b; ; xn----qrc.xn--ts49b; [B1, P1, V3, V6] # -ٺ.
-xn----qrc.xn--ts49b; -ٺ.򏯩; [B1, V3, V6]; xn----qrc.xn--ts49b; ; ;  # -ٺ.
-xn----qrc357q.xn--ts49b; ‍-ٺ.򏯩; [B1, C2, V6]; xn----qrc357q.xn--ts49b; ; ;  # -ٺ.
-ᠢ𐮂𐫘寐｡‌≯✳; ᠢ𐮂𐫘寐.‌≯✳; [B1, B5, C1, P1, V6]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5, P1, V6] # ᠢ𐮂𐫘寐.≯✳
-ᠢ𐮂𐫘寐｡‌≯✳; ᠢ𐮂𐫘寐.‌≯✳; [B1, B5, C1, P1, V6]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5, P1, V6] # ᠢ𐮂𐫘寐.≯✳
-ᠢ𐮂𐫘寐。‌≯✳; ᠢ𐮂𐫘寐.‌≯✳; [B1, B5, C1, P1, V6]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5, P1, V6] # ᠢ𐮂𐫘寐.≯✳
-ᠢ𐮂𐫘寐。‌≯✳; ᠢ𐮂𐫘寐.‌≯✳; [B1, B5, C1, P1, V6]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5, P1, V6] # ᠢ𐮂𐫘寐.≯✳
-xn--46e6675axzzhota.xn--hdh99p; ᠢ𐮂𐫘寐.≯✳; [B1, B5, V6]; xn--46e6675axzzhota.xn--hdh99p; ; ;  # ᠢ𐮂𐫘寐.≯✳
-xn--46e6675axzzhota.xn--0ug06gu8f; ᠢ𐮂𐫘寐.‌≯✳; [B1, B5, C1, V6]; xn--46e6675axzzhota.xn--0ug06gu8f; ; ;  # ᠢ𐮂𐫘寐.≯✳
-‍｡󸲜ႺႴ𞨇; ‍.󸲜ႺႴ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--sndl01647an3h1h; ; .xn--sndl01647an3h1h; [B5, B6, P1, V6, A4_2] # .ႺႴ
-‍。󸲜ႺႴ𞨇; ‍.󸲜ႺႴ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--sndl01647an3h1h; ; .xn--sndl01647an3h1h; [B5, B6, P1, V6, A4_2] # .ႺႴ
-‍。󸲜ⴚⴔ𞨇; ‍.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, P1, V6, A4_2] # .ⴚⴔ
-‍。󸲜Ⴚⴔ𞨇; ‍.󸲜Ⴚⴔ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--ynd036lq981an3r4h; ; .xn--ynd036lq981an3r4h; [B5, B6, P1, V6, A4_2] # .Ⴚⴔ
-.xn--ynd036lq981an3r4h; .󸲜Ⴚⴔ𞨇; [B5, B6, V6, X4_2]; .xn--ynd036lq981an3r4h; [B5, B6, V6, A4_2]; ;  # .Ⴚⴔ
-xn--1ug.xn--ynd036lq981an3r4h; ‍.󸲜Ⴚⴔ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--ynd036lq981an3r4h; ; ;  # .Ⴚⴔ
-.xn--cljl81825an3r4h; .󸲜ⴚⴔ𞨇; [B5, B6, V6, X4_2]; .xn--cljl81825an3r4h; [B5, B6, V6, A4_2]; ;  # .ⴚⴔ
-xn--1ug.xn--cljl81825an3r4h; ‍.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--cljl81825an3r4h; ; ;  # .ⴚⴔ
-.xn--sndl01647an3h1h; .󸲜ႺႴ𞨇; [B5, B6, V6, X4_2]; .xn--sndl01647an3h1h; [B5, B6, V6, A4_2]; ;  # .ႺႴ
-xn--1ug.xn--sndl01647an3h1h; ‍.󸲜ႺႴ𞨇; [B1, B5, B6, C2, V6]; xn--1ug.xn--sndl01647an3h1h; ; ;  # .ႺႴ
-‍｡󸲜ⴚⴔ𞨇; ‍.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, P1, V6, A4_2] # .ⴚⴔ
-‍｡󸲜Ⴚⴔ𞨇; ‍.󸲜Ⴚⴔ𞨇; [B1, B5, B6, C2, P1, V6]; xn--1ug.xn--ynd036lq981an3r4h; ; .xn--ynd036lq981an3r4h; [B5, B6, P1, V6, A4_2] # .Ⴚⴔ
--3.‍ヌᢕ; ; [C2, V3]; -3.xn--fbf739aq5o; ; -3.xn--fbf115j; [V3] # -3.ヌᢕ
+︒.Ʌᠣ-𐹽; ︒.ʌᠣ-𐹽; [B1, B5, B6, V7]; xn--y86c.xn----73a596nuh9t; ; ;  # ︒.ʌᠣ-𐹽
+xn--y86c.xn----73a596nuh9t; ︒.ʌᠣ-𐹽; [B1, B5, B6, V7]; xn--y86c.xn----73a596nuh9t; ; ;  # ︒.ʌᠣ-𐹽
+\uFE05︒。𦀾\u1CE0; ︒.𦀾\u1CE0; [V7]; xn--y86c.xn--t6f5138v; ; ;  # ︒.𦀾᳠
+\uFE05。。𦀾\u1CE0; ..𦀾\u1CE0; [X4_2]; ..xn--t6f5138v; [A4_2]; ;  # ..𦀾᳠
+..xn--t6f5138v; ..𦀾\u1CE0; [X4_2]; ..xn--t6f5138v; [A4_2]; ;  # ..𦀾᳠
+xn--y86c.xn--t6f5138v; ︒.𦀾\u1CE0; [V7]; xn--y86c.xn--t6f5138v; ; ;  # ︒.𦀾᳠
+xn--t6f5138v; 𦀾\u1CE0; ; xn--t6f5138v; ; ;  # 𦀾᳠
+𦀾\u1CE0; ; ; xn--t6f5138v; ; ;  # 𦀾᳠
+𞮑ß􏞞。ᡁ; 𞮑ß􏞞.ᡁ; [B2, B3, V7]; xn--zca9432wb989f.xn--07e; ; xn--ss-o412ac6305g.xn--07e;  # ß.ᡁ
+𞮑SS􏞞。ᡁ; 𞮑ss􏞞.ᡁ; [B2, B3, V7]; xn--ss-o412ac6305g.xn--07e; ; ;  # ss.ᡁ
+𞮑ss􏞞。ᡁ; 𞮑ss􏞞.ᡁ; [B2, B3, V7]; xn--ss-o412ac6305g.xn--07e; ; ;  # ss.ᡁ
+𞮑Ss􏞞。ᡁ; 𞮑ss􏞞.ᡁ; [B2, B3, V7]; xn--ss-o412ac6305g.xn--07e; ; ;  # ss.ᡁ
+xn--ss-o412ac6305g.xn--07e; 𞮑ss􏞞.ᡁ; [B2, B3, V7]; xn--ss-o412ac6305g.xn--07e; ; ;  # ss.ᡁ
+xn--zca9432wb989f.xn--07e; 𞮑ß􏞞.ᡁ; [B2, B3, V7]; xn--zca9432wb989f.xn--07e; ; ;  # ß.ᡁ
+\uA953\u200D\u062C\u066C。𱆎󻡟\u200C󠅆; \uA953\u200D\u062C\u066C.𱆎󻡟\u200C; [B5, B6, C1, V6, V7]; xn--rgb2k500fhq9j.xn--0ug78870a5sp9d; ; xn--rgb2k6711c.xn--ec8nj3948b; [B5, B6, V6, V7] # ꥓ج٬.𱆎
+xn--rgb2k6711c.xn--ec8nj3948b; \uA953\u062C\u066C.𱆎󻡟; [B5, B6, V6, V7]; xn--rgb2k6711c.xn--ec8nj3948b; ; ;  # ꥓ج٬.𱆎
+xn--rgb2k500fhq9j.xn--0ug78870a5sp9d; \uA953\u200D\u062C\u066C.𱆎󻡟\u200C; [B5, B6, C1, V6, V7]; xn--rgb2k500fhq9j.xn--0ug78870a5sp9d; ; ;  # ꥓ج٬.𱆎
+󠕏．-ß\u200C≠; 󠕏.-ß\u200C≠; [C1, V3, V7]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ß≠
+󠕏．-ß\u200C=\u0338; 󠕏.-ß\u200C≠; [C1, V3, V7]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ß≠
+󠕏.-ß\u200C≠; ; [C1, V3, V7]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ß≠
+󠕏.-ß\u200C=\u0338; 󠕏.-ß\u200C≠; [C1, V3, V7]; xn--u836e.xn----qfa750ve7b; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ß≠
+󠕏.-SS\u200C=\u0338; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+󠕏.-SS\u200C≠; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+󠕏.-ss\u200C≠; ; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+󠕏.-ss\u200C=\u0338; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+󠕏.-Ss\u200C=\u0338; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+󠕏.-Ss\u200C≠; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+xn--u836e.xn---ss-gl2a; 󠕏.-ss≠; [V3, V7]; xn--u836e.xn---ss-gl2a; ; ;  # .-ss≠
+xn--u836e.xn---ss-cn0at5l; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; ;  # .-ss≠
+xn--u836e.xn----qfa750ve7b; 󠕏.-ß\u200C≠; [C1, V3, V7]; xn--u836e.xn----qfa750ve7b; ; ;  # .-ß≠
+󠕏．-SS\u200C=\u0338; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+󠕏．-SS\u200C≠; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+󠕏．-ss\u200C≠; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+󠕏．-ss\u200C=\u0338; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+󠕏．-Ss\u200C=\u0338; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+󠕏．-Ss\u200C≠; 󠕏.-ss\u200C≠; [C1, V3, V7]; xn--u836e.xn---ss-cn0at5l; ; xn--u836e.xn---ss-gl2a; [V3, V7] # .-ss≠
+ᡙ\u200C｡≯𐋲≠; ᡙ\u200C.≯𐋲≠; [C1]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [] # ᡙ.≯𐋲≠
+ᡙ\u200C｡>\u0338𐋲=\u0338; ᡙ\u200C.≯𐋲≠; [C1]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [] # ᡙ.≯𐋲≠
+ᡙ\u200C。≯𐋲≠; ᡙ\u200C.≯𐋲≠; [C1]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [] # ᡙ.≯𐋲≠
+ᡙ\u200C。>\u0338𐋲=\u0338; ᡙ\u200C.≯𐋲≠; [C1]; xn--p8e650b.xn--1ch3a7084l; ; xn--p8e.xn--1ch3a7084l; [] # ᡙ.≯𐋲≠
+xn--p8e.xn--1ch3a7084l; ᡙ.≯𐋲≠; ; xn--p8e.xn--1ch3a7084l; ; ;  # ᡙ.≯𐋲≠
+ᡙ.≯𐋲≠; ; ; xn--p8e.xn--1ch3a7084l; ; ;  # ᡙ.≯𐋲≠
+ᡙ.>\u0338𐋲=\u0338; ᡙ.≯𐋲≠; ; xn--p8e.xn--1ch3a7084l; ; ;  # ᡙ.≯𐋲≠
+xn--p8e650b.xn--1ch3a7084l; ᡙ\u200C.≯𐋲≠; [C1]; xn--p8e650b.xn--1ch3a7084l; ; ;  # ᡙ.≯𐋲≠
+𐹧𞲄󠁭񆼩。\u034E🄀; 𐹧𞲄󠁭񆼩.\u034E🄀; [B1, V6, V7]; xn--fo0dw409aq58qrn69d.xn--sua6883w; ; ;  # 𐹧𞲄.͎🄀
+𐹧𞲄󠁭񆼩。\u034E0.; 𐹧𞲄󠁭񆼩.\u034E0.; [B1, V6, V7]; xn--fo0dw409aq58qrn69d.xn--0-bgb.; [B1, V6, V7, A4_2]; ;  # 𐹧𞲄.͎0.
+xn--fo0dw409aq58qrn69d.xn--0-bgb.; 𐹧𞲄󠁭񆼩.\u034E0.; [B1, V6, V7]; xn--fo0dw409aq58qrn69d.xn--0-bgb.; [B1, V6, V7, A4_2]; ;  # 𐹧𞲄.͎0.
+xn--fo0dw409aq58qrn69d.xn--sua6883w; 𐹧𞲄󠁭񆼩.\u034E🄀; [B1, V6, V7]; xn--fo0dw409aq58qrn69d.xn--sua6883w; ; ;  # 𐹧𞲄.͎🄀
+Ⴄ．\u200D\u0721󻣋ς; ⴄ.\u200D\u0721󻣋ς; [B1, C2, V7]; xn--vkj.xn--3xa93o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V7] # ⴄ.ܡς
+Ⴄ.\u200D\u0721󻣋ς; ⴄ.\u200D\u0721󻣋ς; [B1, C2, V7]; xn--vkj.xn--3xa93o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V7] # ⴄ.ܡς
+ⴄ.\u200D\u0721󻣋ς; ; [B1, C2, V7]; xn--vkj.xn--3xa93o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V7] # ⴄ.ܡς
+Ⴄ.\u200D\u0721󻣋Σ; ⴄ.\u200D\u0721󻣋σ; [B1, C2, V7]; xn--vkj.xn--4xa73o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V7] # ⴄ.ܡσ
+ⴄ.\u200D\u0721󻣋σ; ; [B1, C2, V7]; xn--vkj.xn--4xa73o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V7] # ⴄ.ܡσ
+xn--vkj.xn--4xa73ob5892c; ⴄ.\u0721󻣋σ; [B2, B3, V7]; xn--vkj.xn--4xa73ob5892c; ; ;  # ⴄ.ܡσ
+xn--vkj.xn--4xa73o3t5ajq467a; ⴄ.\u200D\u0721󻣋σ; [B1, C2, V7]; xn--vkj.xn--4xa73o3t5ajq467a; ; ;  # ⴄ.ܡσ
+xn--vkj.xn--3xa93o3t5ajq467a; ⴄ.\u200D\u0721󻣋ς; [B1, C2, V7]; xn--vkj.xn--3xa93o3t5ajq467a; ; ;  # ⴄ.ܡς
+ⴄ．\u200D\u0721󻣋ς; ⴄ.\u200D\u0721󻣋ς; [B1, C2, V7]; xn--vkj.xn--3xa93o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V7] # ⴄ.ܡς
+Ⴄ．\u200D\u0721󻣋Σ; ⴄ.\u200D\u0721󻣋σ; [B1, C2, V7]; xn--vkj.xn--4xa73o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V7] # ⴄ.ܡσ
+ⴄ．\u200D\u0721󻣋σ; ⴄ.\u200D\u0721󻣋σ; [B1, C2, V7]; xn--vkj.xn--4xa73o3t5ajq467a; ; xn--vkj.xn--4xa73ob5892c; [B2, B3, V7] # ⴄ.ܡσ
+xn--cnd.xn--4xa73ob5892c; Ⴄ.\u0721󻣋σ; [B2, B3, V7]; xn--cnd.xn--4xa73ob5892c; ; ;  # Ⴄ.ܡσ
+xn--cnd.xn--4xa73o3t5ajq467a; Ⴄ.\u200D\u0721󻣋σ; [B1, C2, V7]; xn--cnd.xn--4xa73o3t5ajq467a; ; ;  # Ⴄ.ܡσ
+xn--cnd.xn--3xa93o3t5ajq467a; Ⴄ.\u200D\u0721󻣋ς; [B1, C2, V7]; xn--cnd.xn--3xa93o3t5ajq467a; ; ;  # Ⴄ.ܡς
+򮵛\u0613.Ⴕ; 򮵛\u0613.ⴕ; [V7]; xn--1fb94204l.xn--dlj; ; ;  # ؓ.ⴕ
+򮵛\u0613.ⴕ; ; [V7]; xn--1fb94204l.xn--dlj; ; ;  # ؓ.ⴕ
+xn--1fb94204l.xn--dlj; 򮵛\u0613.ⴕ; [V7]; xn--1fb94204l.xn--dlj; ; ;  # ؓ.ⴕ
+xn--1fb94204l.xn--tnd; 򮵛\u0613.Ⴕ; [V7]; xn--1fb94204l.xn--tnd; ; ;  # ؓ.Ⴕ
+≯\u1DF3𞤥。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, V7]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, V6, V7] # ≯ᷳ𞤥.꣄
+>\u0338\u1DF3𞤥。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, V7]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, V6, V7] # ≯ᷳ𞤥.꣄
+>\u0338\u1DF3𞤃。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, V7]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, V6, V7] # ≯ᷳ𞤥.꣄
+≯\u1DF3𞤃。\u200C\uA8C4󠪉\u200D; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, V7]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; xn--ofg13qyr21c.xn--0f9au6706d; [B1, V6, V7] # ≯ᷳ𞤥.꣄
+xn--ofg13qyr21c.xn--0f9au6706d; ≯\u1DF3𞤥.\uA8C4󠪉; [B1, V6, V7]; xn--ofg13qyr21c.xn--0f9au6706d; ; ;  # ≯ᷳ𞤥.꣄
+xn--ofg13qyr21c.xn--0ugc0116hix29k; ≯\u1DF3𞤥.\u200C\uA8C4󠪉\u200D; [B1, C1, C2, V7]; xn--ofg13qyr21c.xn--0ugc0116hix29k; ; ;  # ≯ᷳ𞤥.꣄
+\u200C󠄷｡򒑁; \u200C.򒑁; [C1, V7]; xn--0ug.xn--w720c; ; .xn--w720c; [V7, A4_2] # .
+\u200C󠄷。򒑁; \u200C.򒑁; [C1, V7]; xn--0ug.xn--w720c; ; .xn--w720c; [V7, A4_2] # .
+.xn--w720c; .򒑁; [V7, X4_2]; .xn--w720c; [V7, A4_2]; ;  # .
+xn--0ug.xn--w720c; \u200C.򒑁; [C1, V7]; xn--0ug.xn--w720c; ; ;  # .
+⒈\u0DD6焅.󗡙\u200Dꡟ; ; [C2, V7]; xn--t1c337io97c.xn--1ugz184c9lw7i; ; xn--t1c337io97c.xn--4c9a21133d; [V7] # ⒈ූ焅.ꡟ
+1.\u0DD6焅.󗡙\u200Dꡟ; ; [C2, V6, V7]; 1.xn--t1c6981c.xn--1ugz184c9lw7i; ; 1.xn--t1c6981c.xn--4c9a21133d; [V6, V7] # 1.ූ焅.ꡟ
+1.xn--t1c6981c.xn--4c9a21133d; 1.\u0DD6焅.󗡙ꡟ; [V6, V7]; 1.xn--t1c6981c.xn--4c9a21133d; ; ;  # 1.ූ焅.ꡟ
+1.xn--t1c6981c.xn--1ugz184c9lw7i; 1.\u0DD6焅.󗡙\u200Dꡟ; [C2, V6, V7]; 1.xn--t1c6981c.xn--1ugz184c9lw7i; ; ;  # 1.ූ焅.ꡟ
+xn--t1c337io97c.xn--4c9a21133d; ⒈\u0DD6焅.󗡙ꡟ; [V7]; xn--t1c337io97c.xn--4c9a21133d; ; ;  # ⒈ූ焅.ꡟ
+xn--t1c337io97c.xn--1ugz184c9lw7i; ⒈\u0DD6焅.󗡙\u200Dꡟ; [C2, V7]; xn--t1c337io97c.xn--1ugz184c9lw7i; ; ;  # ⒈ූ焅.ꡟ
+\u1DCDς≮.ς𝪦𞤕0; \u1DCDς≮.ς𝪦𞤷0; [B1, B5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma;  # ᷍ς≮.ς𝪦𞤷0
+\u1DCDς<\u0338.ς𝪦𞤕0; \u1DCDς≮.ς𝪦𞤷0; [B1, B5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma;  # ᷍ς≮.ς𝪦𞤷0
+\u1DCDς<\u0338.ς𝪦𞤷0; \u1DCDς≮.ς𝪦𞤷0; [B1, B5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma;  # ᷍ς≮.ς𝪦𞤷0
+\u1DCDς≮.ς𝪦𞤷0; ; [B1, B5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; xn--4xa544kvid.xn--0-zmb55727aggma;  # ᷍ς≮.ς𝪦𞤷0
+\u1DCDΣ≮.Σ𝪦𞤕0; \u1DCDσ≮.σ𝪦𞤷0; [B1, B5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
+\u1DCDΣ<\u0338.Σ𝪦𞤕0; \u1DCDσ≮.σ𝪦𞤷0; [B1, B5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
+\u1DCDσ<\u0338.σ𝪦𞤷0; \u1DCDσ≮.σ𝪦𞤷0; [B1, B5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
+\u1DCDσ≮.σ𝪦𞤷0; ; [B1, B5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
+\u1DCDΣ≮.Σ𝪦𞤷0; \u1DCDσ≮.σ𝪦𞤷0; [B1, B5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
+\u1DCDΣ<\u0338.Σ𝪦𞤷0; \u1DCDσ≮.σ𝪦𞤷0; [B1, B5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
+xn--4xa544kvid.xn--0-zmb55727aggma; \u1DCDσ≮.σ𝪦𞤷0; [B1, B5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
+xn--3xa744kvid.xn--0-xmb85727aggma; \u1DCDς≮.ς𝪦𞤷0; [B1, B5, V6]; xn--3xa744kvid.xn--0-xmb85727aggma; ; ;  # ᷍ς≮.ς𝪦𞤷0
+\u1DCDσ≮.σ𝪦𞤕0; \u1DCDσ≮.σ𝪦𞤷0; [B1, B5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
+\u1DCDσ<\u0338.σ𝪦𞤕0; \u1DCDσ≮.σ𝪦𞤷0; [B1, B5, V6]; xn--4xa544kvid.xn--0-zmb55727aggma; ; ;  # ᷍σ≮.σ𝪦𞤷0
+򢦾ß\u05B9𐫙.\u05AD\u08A1; ; [B1, B5, B6, V6, V7]; xn--zca89v339zj118e.xn--4cb62m; ; xn--ss-xjd6058xlz50g.xn--4cb62m;  # ßֹ𐫙.֭ࢡ
+򢦾SS\u05B9𐫙.\u05AD\u08A1; 򢦾ss\u05B9𐫙.\u05AD\u08A1; [B1, B5, B6, V6, V7]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ;  # ssֹ𐫙.֭ࢡ
+򢦾ss\u05B9𐫙.\u05AD\u08A1; ; [B1, B5, B6, V6, V7]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ;  # ssֹ𐫙.֭ࢡ
+򢦾Ss\u05B9𐫙.\u05AD\u08A1; 򢦾ss\u05B9𐫙.\u05AD\u08A1; [B1, B5, B6, V6, V7]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ;  # ssֹ𐫙.֭ࢡ
+xn--ss-xjd6058xlz50g.xn--4cb62m; 򢦾ss\u05B9𐫙.\u05AD\u08A1; [B1, B5, B6, V6, V7]; xn--ss-xjd6058xlz50g.xn--4cb62m; ; ;  # ssֹ𐫙.֭ࢡ
+xn--zca89v339zj118e.xn--4cb62m; 򢦾ß\u05B9𐫙.\u05AD\u08A1; [B1, B5, B6, V6, V7]; xn--zca89v339zj118e.xn--4cb62m; ; ;  # ßֹ𐫙.֭ࢡ
+-𞣄｡⒈; -𞣄.⒈; [B1, V3, V7]; xn----xc8r.xn--tsh; ; ;  # -𞣄.⒈
+-𞣄。1.; -𞣄.1.; [B1, V3]; xn----xc8r.1.; [B1, V3, A4_2]; ;  # -𞣄.1.
+xn----xc8r.b.; -𞣄.b.; [B1, V3]; xn----xc8r.b.; [B1, V3, A4_2]; ;  # -𞣄.b.
+xn----xc8r.xn--tsh; -𞣄.⒈; [B1, V3, V7]; xn----xc8r.xn--tsh; ; ;  # -𞣄.⒈
+񈠢𐫖𝟡。\u063E𑘿; 񈠢𐫖9.\u063E𑘿; [B5, V7]; xn--9-el5iv442t.xn--9gb0830l; ; ;  # 𐫖9.ؾ𑘿
+񈠢𐫖9。\u063E𑘿; 񈠢𐫖9.\u063E𑘿; [B5, V7]; xn--9-el5iv442t.xn--9gb0830l; ; ;  # 𐫖9.ؾ𑘿
+xn--9-el5iv442t.xn--9gb0830l; 񈠢𐫖9.\u063E𑘿; [B5, V7]; xn--9-el5iv442t.xn--9gb0830l; ; ;  # 𐫖9.ؾ𑘿
+\u0668\uFC8C\u0668\u1A5D.\u200D; \u0668\u0646\u0645\u0668\u1A5D.\u200D; [B1, C2]; xn--hhbb5hc956w.xn--1ug; ; xn--hhbb5hc956w.; [B1, A4_2] # ٨نم٨ᩝ.
+\u0668\u0646\u0645\u0668\u1A5D.\u200D; ; [B1, C2]; xn--hhbb5hc956w.xn--1ug; ; xn--hhbb5hc956w.; [B1, A4_2] # ٨نم٨ᩝ.
+xn--hhbb5hc956w.; \u0668\u0646\u0645\u0668\u1A5D.; [B1]; xn--hhbb5hc956w.; [B1, A4_2]; ;  # ٨نم٨ᩝ.
+xn--hhbb5hc956w.xn--1ug; \u0668\u0646\u0645\u0668\u1A5D.\u200D; [B1, C2]; xn--hhbb5hc956w.xn--1ug; ; ;  # ٨نم٨ᩝ.
+𝟘．Ⴇ󀳑\uFD50񫃱; 0.ⴇ󀳑\u062A\u062C\u0645񫃱; [B1, B5, V7]; 0.xn--pgbe9ez79qd207lvff8b; ; ;  # 0.ⴇتجم
+0.Ⴇ󀳑\u062A\u062C\u0645񫃱; 0.ⴇ󀳑\u062A\u062C\u0645񫃱; [B1, B5, V7]; 0.xn--pgbe9ez79qd207lvff8b; ; ;  # 0.ⴇتجم
+0.ⴇ󀳑\u062A\u062C\u0645񫃱; ; [B1, B5, V7]; 0.xn--pgbe9ez79qd207lvff8b; ; ;  # 0.ⴇتجم
+0.xn--pgbe9ez79qd207lvff8b; 0.ⴇ󀳑\u062A\u062C\u0645񫃱; [B1, B5, V7]; 0.xn--pgbe9ez79qd207lvff8b; ; ;  # 0.ⴇتجم
+𝟘．ⴇ󀳑\uFD50񫃱; 0.ⴇ󀳑\u062A\u062C\u0645񫃱; [B1, B5, V7]; 0.xn--pgbe9ez79qd207lvff8b; ; ;  # 0.ⴇتجم
+0.xn--pgbe9e344c2725svff8b; 0.Ⴇ󀳑\u062A\u062C\u0645񫃱; [B1, B5, V7]; 0.xn--pgbe9e344c2725svff8b; ; ;  # 0.Ⴇتجم
+𑇀▍.⁞ᠰ; ; [V6]; xn--9zh3057f.xn--j7e103b; ; ;  # 𑇀▍.⁞ᠰ
+xn--9zh3057f.xn--j7e103b; 𑇀▍.⁞ᠰ; [V6]; xn--9zh3057f.xn--j7e103b; ; ;  # 𑇀▍.⁞ᠰ
+\u200D-\u067A.򏯩; ; [B1, C2, V7]; xn----qrc357q.xn--ts49b; ; xn----qrc.xn--ts49b; [B1, V3, V7] # -ٺ.
+xn----qrc.xn--ts49b; -\u067A.򏯩; [B1, V3, V7]; xn----qrc.xn--ts49b; ; ;  # -ٺ.
+xn----qrc357q.xn--ts49b; \u200D-\u067A.򏯩; [B1, C2, V7]; xn----qrc357q.xn--ts49b; ; ;  # -ٺ.
+ᠢ𐮂𐫘寐｡\u200C≯✳; ᠢ𐮂𐫘寐.\u200C≯✳; [B1, B5, C1]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5] # ᠢ𐮂𐫘寐.≯✳
+ᠢ𐮂𐫘寐｡\u200C>\u0338✳; ᠢ𐮂𐫘寐.\u200C≯✳; [B1, B5, C1]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5] # ᠢ𐮂𐫘寐.≯✳
+ᠢ𐮂𐫘寐。\u200C≯✳; ᠢ𐮂𐫘寐.\u200C≯✳; [B1, B5, C1]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5] # ᠢ𐮂𐫘寐.≯✳
+ᠢ𐮂𐫘寐。\u200C>\u0338✳; ᠢ𐮂𐫘寐.\u200C≯✳; [B1, B5, C1]; xn--46e6675axzzhota.xn--0ug06gu8f; ; xn--46e6675axzzhota.xn--hdh99p; [B1, B5] # ᠢ𐮂𐫘寐.≯✳
+xn--46e6675axzzhota.xn--hdh99p; ᠢ𐮂𐫘寐.≯✳; [B1, B5]; xn--46e6675axzzhota.xn--hdh99p; ; ;  # ᠢ𐮂𐫘寐.≯✳
+xn--46e6675axzzhota.xn--0ug06gu8f; ᠢ𐮂𐫘寐.\u200C≯✳; [B1, B5, C1]; xn--46e6675axzzhota.xn--0ug06gu8f; ; ;  # ᠢ𐮂𐫘寐.≯✳
+\u200D｡󸲜ႺႴ𞨇; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V7]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, V7, A4_2] # .ⴚⴔ
+\u200D。󸲜ႺႴ𞨇; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V7]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, V7, A4_2] # .ⴚⴔ
+\u200D。󸲜ⴚⴔ𞨇; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V7]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, V7, A4_2] # .ⴚⴔ
+\u200D。󸲜Ⴚⴔ𞨇; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V7]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, V7, A4_2] # .ⴚⴔ
+.xn--cljl81825an3r4h; .󸲜ⴚⴔ𞨇; [B5, B6, V7, X4_2]; .xn--cljl81825an3r4h; [B5, B6, V7, A4_2]; ;  # .ⴚⴔ
+xn--1ug.xn--cljl81825an3r4h; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V7]; xn--1ug.xn--cljl81825an3r4h; ; ;  # .ⴚⴔ
+\u200D｡󸲜ⴚⴔ𞨇; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V7]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, V7, A4_2] # .ⴚⴔ
+\u200D｡󸲜Ⴚⴔ𞨇; \u200D.󸲜ⴚⴔ𞨇; [B1, B5, B6, C2, V7]; xn--1ug.xn--cljl81825an3r4h; ; .xn--cljl81825an3r4h; [B5, B6, V7, A4_2] # .ⴚⴔ
+.xn--ynd036lq981an3r4h; .󸲜Ⴚⴔ𞨇; [B5, B6, V7, X4_2]; .xn--ynd036lq981an3r4h; [B5, B6, V7, A4_2]; ;  # .Ⴚⴔ
+xn--1ug.xn--ynd036lq981an3r4h; \u200D.󸲜Ⴚⴔ𞨇; [B1, B5, B6, C2, V7]; xn--1ug.xn--ynd036lq981an3r4h; ; ;  # .Ⴚⴔ
+.xn--sndl01647an3h1h; .󸲜ႺႴ𞨇; [B5, B6, V7, X4_2]; .xn--sndl01647an3h1h; [B5, B6, V7, A4_2]; ;  # .ႺႴ
+xn--1ug.xn--sndl01647an3h1h; \u200D.󸲜ႺႴ𞨇; [B1, B5, B6, C2, V7]; xn--1ug.xn--sndl01647an3h1h; ; ;  # .ႺႴ
+-3.\u200Dヌᢕ; ; [C2, V3]; -3.xn--fbf739aq5o; ; -3.xn--fbf115j; [V3] # -3.ヌᢕ
 -3.xn--fbf115j; -3.ヌᢕ; [V3]; -3.xn--fbf115j; ; ;  # -3.ヌᢕ
--3.xn--fbf739aq5o; -3.‍ヌᢕ; [C2, V3]; -3.xn--fbf739aq5o; ; ;  # -3.ヌᢕ
-🂃٦ß‍。󠠂򭰍𞩒-; 🂃٦ß‍.󠠂򭰍𞩒-; [B1, C2, P1, V3, V6]; xn--zca34z68yzu83b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, P1, V3, V6] # 🂃٦ß.-
-🂃٦SS‍。󠠂򭰍𞩒-; 🂃٦ss‍.󠠂򭰍𞩒-; [B1, C2, P1, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, P1, V3, V6] # 🂃٦ss.-
-🂃٦ss‍。󠠂򭰍𞩒-; 🂃٦ss‍.󠠂򭰍𞩒-; [B1, C2, P1, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, P1, V3, V6] # 🂃٦ss.-
-xn--ss-pyd98921c.xn----nz8rh7531csznt; 🂃٦ss.󠠂򭰍𞩒-; [B1, V3, V6]; xn--ss-pyd98921c.xn----nz8rh7531csznt; ; ;  # 🂃٦ss.-
-xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; 🂃٦ss‍.󠠂򭰍𞩒-; [B1, C2, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; ;  # 🂃٦ss.-
-xn--zca34z68yzu83b.xn----nz8rh7531csznt; 🂃٦ß‍.󠠂򭰍𞩒-; [B1, C2, V3, V6]; xn--zca34z68yzu83b.xn----nz8rh7531csznt; ; ;  # 🂃٦ß.-
-🂃٦Ss‍。󠠂򭰍𞩒-; 🂃٦ss‍.󠠂򭰍𞩒-; [B1, C2, P1, V3, V6]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, P1, V3, V6] # 🂃٦ss.-
-ꇟ-𐾺ڟ。򰀺‌; ꇟ-𐾺ڟ.򰀺‌; [B5, B6, C1, P1, V6]; xn----utc4430jd3zd.xn--0ugx6670i; ; xn----utc4430jd3zd.xn--bp20d; [B5, B6, P1, V6] # ꇟ-𐾺ڟ.
-xn----utc4430jd3zd.xn--bp20d; ꇟ-𐾺ڟ.򰀺; [B5, B6, V6]; xn----utc4430jd3zd.xn--bp20d; ; ;  # ꇟ-𐾺ڟ.
-xn----utc4430jd3zd.xn--0ugx6670i; ꇟ-𐾺ڟ.򰀺‌; [B5, B6, C1, V6]; xn----utc4430jd3zd.xn--0ugx6670i; ; ;  # ꇟ-𐾺ڟ.
-٥.҄𐨗𝩋𴤃; ; [B1, P1, V5, V6]; xn--eib.xn--n3a0405kus8eft5l; ; ;  # ٥.҄𐨗𝩋
-xn--eib.xn--n3a0405kus8eft5l; ٥.҄𐨗𝩋𴤃; [B1, V5, V6]; xn--eib.xn--n3a0405kus8eft5l; ; ;  # ٥.҄𐨗𝩋
--.񱼓ى𐨿; ; [B1, B5, B6, P1, V3, V6]; -.xn--lhb4124khbq4b; ; ;  # -.ى𐨿
--.xn--lhb4124khbq4b; -.񱼓ى𐨿; [B1, B5, B6, V3, V6]; -.xn--lhb4124khbq4b; ; ;  # -.ى𐨿
-󾬨ς.𞶙녫ß; ; [B2, B3, P1, V6]; xn--3xa96659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # ς.녫ß
-󾬨ς.𞶙녫ß; 󾬨ς.𞶙녫ß; [B2, B3, P1, V6]; xn--3xa96659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # ς.녫ß
-󾬨Σ.𞶙녫SS; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
-󾬨Σ.𞶙녫SS; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
-󾬨σ.𞶙녫ss; ; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
-󾬨σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
-󾬨Σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
-󾬨Σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
-󾬨Σ.𞶙녫Ss; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
-󾬨Σ.𞶙녫Ss; 󾬨σ.𞶙녫ss; [B2, B3, P1, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
-xn--4xa76659r.xn--ss-d64i8755h; 󾬨σ.𞶙녫ss; [B2, B3, V6]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
-󾬨Σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, P1, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # σ.녫ß
-󾬨Σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, P1, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # σ.녫ß
-󾬨σ.𞶙녫ß; ; [B2, B3, P1, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # σ.녫ß
-󾬨σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, P1, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # σ.녫ß
-xn--4xa76659r.xn--zca5051g4h4i; 󾬨σ.𞶙녫ß; [B2, B3, V6]; xn--4xa76659r.xn--zca5051g4h4i; ; ;  # σ.녫ß
-xn--3xa96659r.xn--zca5051g4h4i; 󾬨ς.𞶙녫ß; [B2, B3, V6]; xn--3xa96659r.xn--zca5051g4h4i; ; ;  # ς.녫ß
-Ⅎ្‍｡≠‍‌; Ⅎ្‍.≠‍‌; [C1, C2, P1, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [P1, V6] # Ⅎ្.≠
-Ⅎ្‍｡≠‍‌; Ⅎ្‍.≠‍‌; [C1, C2, P1, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [P1, V6] # Ⅎ្.≠
-Ⅎ្‍。≠‍‌; Ⅎ្‍.≠‍‌; [C1, C2, P1, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [P1, V6] # Ⅎ្.≠
-Ⅎ្‍。≠‍‌; Ⅎ្‍.≠‍‌; [C1, C2, P1, V6]; xn--u4e823bcza.xn--0ugb89o; ; xn--u4e319b.xn--1ch; [P1, V6] # Ⅎ្.≠
-ⅎ្‍。≠‍‌; ⅎ្‍.≠‍‌; [C1, C2, P1, V6]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [P1, V6] # ⅎ្.≠
-ⅎ្‍。≠‍‌; ⅎ្‍.≠‍‌; [C1, C2, P1, V6]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [P1, V6] # ⅎ្.≠
-xn--u4e969b.xn--1ch; ⅎ្.≠; [V6]; xn--u4e969b.xn--1ch; ; ;  # ⅎ្.≠
-xn--u4e823bq1a.xn--0ugb89o; ⅎ្‍.≠‍‌; [C1, C2, V6]; xn--u4e823bq1a.xn--0ugb89o; ; ;  # ⅎ្.≠
-xn--u4e319b.xn--1ch; Ⅎ្.≠; [V6]; xn--u4e319b.xn--1ch; ; ;  # Ⅎ្.≠
-xn--u4e823bcza.xn--0ugb89o; Ⅎ្‍.≠‍‌; [C1, C2, V6]; xn--u4e823bcza.xn--0ugb89o; ; ;  # Ⅎ្.≠
-ⅎ្‍｡≠‍‌; ⅎ្‍.≠‍‌; [C1, C2, P1, V6]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [P1, V6] # ⅎ្.≠
-ⅎ្‍｡≠‍‌; ⅎ្‍.≠‍‌; [C1, C2, P1, V6]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [P1, V6] # ⅎ្.≠
-𐋺꫶꥓󧦉．‌᜔ڏ; 𐋺꫶꥓󧦉.‌᜔ڏ; [B1, C1, P1, V6]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; xn--3j9a14ak27osbz2o.xn--ljb175f; [B1, P1, V5, V6] # 𐋺꫶꥓.᜔ڏ
-𐋺꫶꥓󧦉.‌᜔ڏ; ; [B1, C1, P1, V6]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; xn--3j9a14ak27osbz2o.xn--ljb175f; [B1, P1, V5, V6] # 𐋺꫶꥓.᜔ڏ
-xn--3j9a14ak27osbz2o.xn--ljb175f; 𐋺꫶꥓󧦉.᜔ڏ; [B1, V5, V6]; xn--3j9a14ak27osbz2o.xn--ljb175f; ; ;  # 𐋺꫶꥓.᜔ڏ
-xn--3j9a14ak27osbz2o.xn--ljb175f1wg; 𐋺꫶꥓󧦉.‌᜔ڏ; [B1, C1, V6]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; ;  # 𐋺꫶꥓.᜔ڏ
-񺔯ྨ．≯; 񺔯ྨ.≯; [P1, V6]; xn--4fd57150h.xn--hdh; ; ;  # ྨ.≯
-񺔯ྨ．≯; 񺔯ྨ.≯; [P1, V6]; xn--4fd57150h.xn--hdh; ; ;  # ྨ.≯
-񺔯ྨ.≯; ; [P1, V6]; xn--4fd57150h.xn--hdh; ; ;  # ྨ.≯
-񺔯ྨ.≯; 񺔯ྨ.≯; [P1, V6]; xn--4fd57150h.xn--hdh; ; ;  # ྨ.≯
-xn--4fd57150h.xn--hdh; 񺔯ྨ.≯; [V6]; xn--4fd57150h.xn--hdh; ; ;  # ྨ.≯
-‍𞡄Ⴓ．𐇽; ‍𞡄Ⴓ.𐇽; [B1, B3, B6, C2, P1, V5, V6]; xn--rnd379ex885a.xn--m27c; ; xn--rnd5552v.xn--m27c; [B1, B2, B3, B6, P1, V5, V6] # 𞡄Ⴓ.𐇽
-‍𞡄Ⴓ.𐇽; ; [B1, B3, B6, C2, P1, V5, V6]; xn--rnd379ex885a.xn--m27c; ; xn--rnd5552v.xn--m27c; [B1, B2, B3, B6, P1, V5, V6] # 𞡄Ⴓ.𐇽
-‍𞡄ⴓ.𐇽; ; [B1, B3, B6, C2, V5]; xn--1ugz52c4i16a.xn--m27c; ; xn--blj7492l.xn--m27c; [B1, B2, B3, B6, V5] # 𞡄ⴓ.𐇽
-xn--blj7492l.xn--m27c; 𞡄ⴓ.𐇽; [B1, B2, B3, B6, V5]; xn--blj7492l.xn--m27c; ; ;  # 𞡄ⴓ.𐇽
-xn--1ugz52c4i16a.xn--m27c; ‍𞡄ⴓ.𐇽; [B1, B3, B6, C2, V5]; xn--1ugz52c4i16a.xn--m27c; ; ;  # 𞡄ⴓ.𐇽
-xn--rnd5552v.xn--m27c; 𞡄Ⴓ.𐇽; [B1, B2, B3, B6, V5, V6]; xn--rnd5552v.xn--m27c; ; ;  # 𞡄Ⴓ.𐇽
-xn--rnd379ex885a.xn--m27c; ‍𞡄Ⴓ.𐇽; [B1, B3, B6, C2, V5, V6]; xn--rnd379ex885a.xn--m27c; ; ;  # 𞡄Ⴓ.𐇽
-‍𞡄ⴓ．𐇽; ‍𞡄ⴓ.𐇽; [B1, B3, B6, C2, V5]; xn--1ugz52c4i16a.xn--m27c; ; xn--blj7492l.xn--m27c; [B1, B2, B3, B6, V5] # 𞡄ⴓ.𐇽
-𐪒ß꣪．ᡤ; 𐪒ß꣪.ᡤ; [B2, B3]; xn--zca2517f2hvc.xn--08e; ; xn--ss-tu9hw933a.xn--08e;  # 𐪒ß꣪.ᡤ
-𐪒ß꣪.ᡤ; ; [B2, B3]; xn--zca2517f2hvc.xn--08e; ; xn--ss-tu9hw933a.xn--08e;  # 𐪒ß꣪.ᡤ
-𐪒SS꣪.ᡤ; 𐪒ss꣪.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
-𐪒ss꣪.ᡤ; ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
-xn--ss-tu9hw933a.xn--08e; 𐪒ss꣪.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
-xn--zca2517f2hvc.xn--08e; 𐪒ß꣪.ᡤ; [B2, B3]; xn--zca2517f2hvc.xn--08e; ; ;  # 𐪒ß꣪.ᡤ
-𐪒SS꣪．ᡤ; 𐪒ss꣪.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
-𐪒ss꣪．ᡤ; 𐪒ss꣪.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
-𐪒Ss꣪.ᡤ; 𐪒ss꣪.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
-𐪒Ss꣪．ᡤ; 𐪒ss꣪.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
-𐨿󠆌鸮𑚶.ς; 𐨿鸮𑚶.ς; [V5]; xn--l76a726rt2h.xn--3xa; ; xn--l76a726rt2h.xn--4xa;  # 𐨿鸮𑚶.ς
-𐨿󠆌鸮𑚶.Σ; 𐨿鸮𑚶.σ; [V5]; xn--l76a726rt2h.xn--4xa; ; ;  # 𐨿鸮𑚶.σ
-𐨿󠆌鸮𑚶.σ; 𐨿鸮𑚶.σ; [V5]; xn--l76a726rt2h.xn--4xa; ; ;  # 𐨿鸮𑚶.σ
-xn--l76a726rt2h.xn--4xa; 𐨿鸮𑚶.σ; [V5]; xn--l76a726rt2h.xn--4xa; ; ;  # 𐨿鸮𑚶.σ
-xn--l76a726rt2h.xn--3xa; 𐨿鸮𑚶.ς; [V5]; xn--l76a726rt2h.xn--3xa; ; ;  # 𐨿鸮𑚶.ς
-⒗𞤬。-𑚶; ⒗𞤬.-𑚶; [B1, P1, V3, V6]; xn--8shw466n.xn----4j0j; ; ;  # ⒗𞤬.-𑚶
+-3.xn--fbf739aq5o; -3.\u200Dヌᢕ; [C2, V3]; -3.xn--fbf739aq5o; ; ;  # -3.ヌᢕ
+🂃\u0666ß\u200D。󠠂򭰍𞩒-; 🂃\u0666ß\u200D.󠠂򭰍𞩒-; [B1, C2, V3, V7]; xn--zca34z68yzu83b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, V3, V7] # 🂃٦ß.-
+🂃\u0666SS\u200D。󠠂򭰍𞩒-; 🂃\u0666ss\u200D.󠠂򭰍𞩒-; [B1, C2, V3, V7]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, V3, V7] # 🂃٦ss.-
+🂃\u0666ss\u200D。󠠂򭰍𞩒-; 🂃\u0666ss\u200D.󠠂򭰍𞩒-; [B1, C2, V3, V7]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, V3, V7] # 🂃٦ss.-
+xn--ss-pyd98921c.xn----nz8rh7531csznt; 🂃\u0666ss.󠠂򭰍𞩒-; [B1, V3, V7]; xn--ss-pyd98921c.xn----nz8rh7531csznt; ; ;  # 🂃٦ss.-
+xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; 🂃\u0666ss\u200D.󠠂򭰍𞩒-; [B1, C2, V3, V7]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; ;  # 🂃٦ss.-
+xn--zca34z68yzu83b.xn----nz8rh7531csznt; 🂃\u0666ß\u200D.󠠂򭰍𞩒-; [B1, C2, V3, V7]; xn--zca34z68yzu83b.xn----nz8rh7531csznt; ; ;  # 🂃٦ß.-
+🂃\u0666Ss\u200D。󠠂򭰍𞩒-; 🂃\u0666ss\u200D.󠠂򭰍𞩒-; [B1, C2, V3, V7]; xn--ss-pyd483x5k99b.xn----nz8rh7531csznt; ; xn--ss-pyd98921c.xn----nz8rh7531csznt; [B1, V3, V7] # 🂃٦ss.-
+ꇟ-𐾺\u069F。򰀺\u200C; ꇟ-𐾺\u069F.򰀺\u200C; [B5, B6, C1, V7]; xn----utc4430jd3zd.xn--0ugx6670i; ; xn----utc4430jd3zd.xn--bp20d; [B5, B6, V7] # ꇟ-𐾺ڟ.
+xn----utc4430jd3zd.xn--bp20d; ꇟ-𐾺\u069F.򰀺; [B5, B6, V7]; xn----utc4430jd3zd.xn--bp20d; ; ;  # ꇟ-𐾺ڟ.
+xn----utc4430jd3zd.xn--0ugx6670i; ꇟ-𐾺\u069F.򰀺\u200C; [B5, B6, C1, V7]; xn----utc4430jd3zd.xn--0ugx6670i; ; ;  # ꇟ-𐾺ڟ.
+\u0665.\u0484𐨗𝩋𴤃; ; [B1, V6, V7]; xn--eib.xn--n3a0405kus8eft5l; ; ;  # ٥.҄𐨗𝩋
+xn--eib.xn--n3a0405kus8eft5l; \u0665.\u0484𐨗𝩋𴤃; [B1, V6, V7]; xn--eib.xn--n3a0405kus8eft5l; ; ;  # ٥.҄𐨗𝩋
+-.񱼓\u0649𐨿; ; [B1, B5, B6, V3, V7]; -.xn--lhb4124khbq4b; ; ;  # -.ى𐨿
+-.xn--lhb4124khbq4b; -.񱼓\u0649𐨿; [B1, B5, B6, V3, V7]; -.xn--lhb4124khbq4b; ; ;  # -.ى𐨿
+󾬨ς.𞶙녫ß; ; [B2, B3, V7]; xn--3xa96659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # ς.녫ß
+󾬨ς.𞶙녫ß; 󾬨ς.𞶙녫ß; [B2, B3, V7]; xn--3xa96659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # ς.녫ß
+󾬨Σ.𞶙녫SS; 󾬨σ.𞶙녫ss; [B2, B3, V7]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
+󾬨Σ.𞶙녫SS; 󾬨σ.𞶙녫ss; [B2, B3, V7]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
+󾬨σ.𞶙녫ss; ; [B2, B3, V7]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
+󾬨σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, V7]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
+󾬨Σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, V7]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
+󾬨Σ.𞶙녫ss; 󾬨σ.𞶙녫ss; [B2, B3, V7]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
+󾬨Σ.𞶙녫Ss; 󾬨σ.𞶙녫ss; [B2, B3, V7]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
+󾬨Σ.𞶙녫Ss; 󾬨σ.𞶙녫ss; [B2, B3, V7]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
+xn--4xa76659r.xn--ss-d64i8755h; 󾬨σ.𞶙녫ss; [B2, B3, V7]; xn--4xa76659r.xn--ss-d64i8755h; ; ;  # σ.녫ss
+󾬨Σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, V7]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # σ.녫ß
+󾬨Σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, V7]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # σ.녫ß
+󾬨σ.𞶙녫ß; ; [B2, B3, V7]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # σ.녫ß
+󾬨σ.𞶙녫ß; 󾬨σ.𞶙녫ß; [B2, B3, V7]; xn--4xa76659r.xn--zca5051g4h4i; ; xn--4xa76659r.xn--ss-d64i8755h;  # σ.녫ß
+xn--4xa76659r.xn--zca5051g4h4i; 󾬨σ.𞶙녫ß; [B2, B3, V7]; xn--4xa76659r.xn--zca5051g4h4i; ; ;  # σ.녫ß
+xn--3xa96659r.xn--zca5051g4h4i; 󾬨ς.𞶙녫ß; [B2, B3, V7]; xn--3xa96659r.xn--zca5051g4h4i; ; ;  # ς.녫ß
+Ⅎ\u17D2\u200D｡≠\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+Ⅎ\u17D2\u200D｡=\u0338\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+Ⅎ\u17D2\u200D。≠\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+Ⅎ\u17D2\u200D。=\u0338\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+ⅎ\u17D2\u200D。=\u0338\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+ⅎ\u17D2\u200D。≠\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+xn--u4e969b.xn--1ch; ⅎ\u17D2.≠; ; xn--u4e969b.xn--1ch; ; ;  # ⅎ្.≠
+ⅎ\u17D2.≠; ; ; xn--u4e969b.xn--1ch; ; ;  # ⅎ្.≠
+ⅎ\u17D2.=\u0338; ⅎ\u17D2.≠; ; xn--u4e969b.xn--1ch; ; ;  # ⅎ្.≠
+Ⅎ\u17D2.=\u0338; ⅎ\u17D2.≠; ; xn--u4e969b.xn--1ch; ; ;  # ⅎ្.≠
+Ⅎ\u17D2.≠; ⅎ\u17D2.≠; ; xn--u4e969b.xn--1ch; ; ;  # ⅎ្.≠
+xn--u4e823bq1a.xn--0ugb89o; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; ;  # ⅎ្.≠
+ⅎ\u17D2\u200D｡=\u0338\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+ⅎ\u17D2\u200D｡≠\u200D\u200C; ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2]; xn--u4e823bq1a.xn--0ugb89o; ; xn--u4e969b.xn--1ch; [] # ⅎ្.≠
+xn--u4e319b.xn--1ch; Ⅎ\u17D2.≠; [V7]; xn--u4e319b.xn--1ch; ; ;  # Ⅎ្.≠
+xn--u4e823bcza.xn--0ugb89o; Ⅎ\u17D2\u200D.≠\u200D\u200C; [C1, C2, V7]; xn--u4e823bcza.xn--0ugb89o; ; ;  # Ⅎ្.≠
+𐋺\uAAF6\uA953󧦉．\u200C\u1714\u068F; 𐋺\uAAF6\uA953󧦉.\u200C\u1714\u068F; [B1, C1, V7]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; xn--3j9a14ak27osbz2o.xn--ljb175f; [B1, V6, V7] # 𐋺꫶꥓.᜔ڏ
+𐋺\uAAF6\uA953󧦉.\u200C\u1714\u068F; ; [B1, C1, V7]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; xn--3j9a14ak27osbz2o.xn--ljb175f; [B1, V6, V7] # 𐋺꫶꥓.᜔ڏ
+xn--3j9a14ak27osbz2o.xn--ljb175f; 𐋺\uAAF6\uA953󧦉.\u1714\u068F; [B1, V6, V7]; xn--3j9a14ak27osbz2o.xn--ljb175f; ; ;  # 𐋺꫶꥓.᜔ڏ
+xn--3j9a14ak27osbz2o.xn--ljb175f1wg; 𐋺\uAAF6\uA953󧦉.\u200C\u1714\u068F; [B1, C1, V7]; xn--3j9a14ak27osbz2o.xn--ljb175f1wg; ; ;  # 𐋺꫶꥓.᜔ڏ
+񺔯\u0FA8．≯; 񺔯\u0FA8.≯; [V7]; xn--4fd57150h.xn--hdh; ; ;  # ྨ.≯
+񺔯\u0FA8．>\u0338; 񺔯\u0FA8.≯; [V7]; xn--4fd57150h.xn--hdh; ; ;  # ྨ.≯
+񺔯\u0FA8.≯; ; [V7]; xn--4fd57150h.xn--hdh; ; ;  # ྨ.≯
+񺔯\u0FA8.>\u0338; 񺔯\u0FA8.≯; [V7]; xn--4fd57150h.xn--hdh; ; ;  # ྨ.≯
+xn--4fd57150h.xn--hdh; 񺔯\u0FA8.≯; [V7]; xn--4fd57150h.xn--hdh; ; ;  # ྨ.≯
+\u200D𞡄Ⴓ．𐇽; \u200D𞡄ⴓ.𐇽; [B1, C2, V6]; xn--1ugz52c4i16a.xn--m27c; ; xn--blj7492l.xn--m27c; [B1, B2, B3, V6] # 𞡄ⴓ.𐇽
+\u200D𞡄Ⴓ.𐇽; \u200D𞡄ⴓ.𐇽; [B1, C2, V6]; xn--1ugz52c4i16a.xn--m27c; ; xn--blj7492l.xn--m27c; [B1, B2, B3, V6] # 𞡄ⴓ.𐇽
+\u200D𞡄ⴓ.𐇽; ; [B1, C2, V6]; xn--1ugz52c4i16a.xn--m27c; ; xn--blj7492l.xn--m27c; [B1, B2, B3, V6] # 𞡄ⴓ.𐇽
+xn--blj7492l.xn--m27c; 𞡄ⴓ.𐇽; [B1, B2, B3, V6]; xn--blj7492l.xn--m27c; ; ;  # 𞡄ⴓ.𐇽
+xn--1ugz52c4i16a.xn--m27c; \u200D𞡄ⴓ.𐇽; [B1, C2, V6]; xn--1ugz52c4i16a.xn--m27c; ; ;  # 𞡄ⴓ.𐇽
+\u200D𞡄ⴓ．𐇽; \u200D𞡄ⴓ.𐇽; [B1, C2, V6]; xn--1ugz52c4i16a.xn--m27c; ; xn--blj7492l.xn--m27c; [B1, B2, B3, V6] # 𞡄ⴓ.𐇽
+xn--rnd5552v.xn--m27c; 𞡄Ⴓ.𐇽; [B1, B2, B3, V6, V7]; xn--rnd5552v.xn--m27c; ; ;  # 𞡄Ⴓ.𐇽
+xn--rnd379ex885a.xn--m27c; \u200D𞡄Ⴓ.𐇽; [B1, C2, V6, V7]; xn--rnd379ex885a.xn--m27c; ; ;  # 𞡄Ⴓ.𐇽
+𐪒ß\uA8EA．ᡤ; 𐪒ß\uA8EA.ᡤ; [B2, B3]; xn--zca2517f2hvc.xn--08e; ; xn--ss-tu9hw933a.xn--08e;  # 𐪒ß꣪.ᡤ
+𐪒ß\uA8EA.ᡤ; ; [B2, B3]; xn--zca2517f2hvc.xn--08e; ; xn--ss-tu9hw933a.xn--08e;  # 𐪒ß꣪.ᡤ
+𐪒SS\uA8EA.ᡤ; 𐪒ss\uA8EA.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
+𐪒ss\uA8EA.ᡤ; ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
+xn--ss-tu9hw933a.xn--08e; 𐪒ss\uA8EA.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
+xn--zca2517f2hvc.xn--08e; 𐪒ß\uA8EA.ᡤ; [B2, B3]; xn--zca2517f2hvc.xn--08e; ; ;  # 𐪒ß꣪.ᡤ
+𐪒SS\uA8EA．ᡤ; 𐪒ss\uA8EA.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
+𐪒ss\uA8EA．ᡤ; 𐪒ss\uA8EA.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
+𐪒Ss\uA8EA.ᡤ; 𐪒ss\uA8EA.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
+𐪒Ss\uA8EA．ᡤ; 𐪒ss\uA8EA.ᡤ; [B2, B3]; xn--ss-tu9hw933a.xn--08e; ; ;  # 𐪒ss꣪.ᡤ
+𐨿󠆌鸮𑚶.ς; 𐨿鸮𑚶.ς; [V6]; xn--l76a726rt2h.xn--3xa; ; xn--l76a726rt2h.xn--4xa;  # 𐨿鸮𑚶.ς
+𐨿󠆌鸮𑚶.Σ; 𐨿鸮𑚶.σ; [V6]; xn--l76a726rt2h.xn--4xa; ; ;  # 𐨿鸮𑚶.σ
+𐨿󠆌鸮𑚶.σ; 𐨿鸮𑚶.σ; [V6]; xn--l76a726rt2h.xn--4xa; ; ;  # 𐨿鸮𑚶.σ
+xn--l76a726rt2h.xn--4xa; 𐨿鸮𑚶.σ; [V6]; xn--l76a726rt2h.xn--4xa; ; ;  # 𐨿鸮𑚶.σ
+xn--l76a726rt2h.xn--3xa; 𐨿鸮𑚶.ς; [V6]; xn--l76a726rt2h.xn--3xa; ; ;  # 𐨿鸮𑚶.ς
+⒗𞤬。-𑚶; ⒗𞤬.-𑚶; [B1, V3, V7]; xn--8shw466n.xn----4j0j; ; ;  # ⒗𞤬.-𑚶
 16.𞤬。-𑚶; 16.𞤬.-𑚶; [B1, V3]; 16.xn--ke6h.xn----4j0j; ; ;  # 16.𞤬.-𑚶
 16.𞤊。-𑚶; 16.𞤬.-𑚶; [B1, V3]; 16.xn--ke6h.xn----4j0j; ; ;  # 16.𞤬.-𑚶
 16.xn--ke6h.xn----4j0j; 16.𞤬.-𑚶; [B1, V3]; 16.xn--ke6h.xn----4j0j; ; ;  # 16.𞤬.-𑚶
-⒗𞤊。-𑚶; ⒗𞤬.-𑚶; [B1, P1, V3, V6]; xn--8shw466n.xn----4j0j; ; ;  # ⒗𞤬.-𑚶
-xn--8shw466n.xn----4j0j; ⒗𞤬.-𑚶; [B1, V3, V6]; xn--8shw466n.xn----4j0j; ; ;  # ⒗𞤬.-𑚶
-ࢳ𞤿⾫｡𐹣ڏ⒈; ࢳ𞤿隹.𐹣ڏ⒈; [B1, B2, B3, P1, V6]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ;  # ࢳ𞤿隹.𐹣ڏ⒈
-ࢳ𞤿隹。𐹣ڏ1.; ࢳ𞤿隹.𐹣ڏ1.; [B1, B2, B3]; xn--8yb0383efiwk.xn--1-wsc3373r.; ; ;  # ࢳ𞤿隹.𐹣ڏ1.
-ࢳ𞤝隹。𐹣ڏ1.; ࢳ𞤿隹.𐹣ڏ1.; [B1, B2, B3]; xn--8yb0383efiwk.xn--1-wsc3373r.; ; ;  # ࢳ𞤿隹.𐹣ڏ1.
-xn--8yb0383efiwk.xn--1-wsc3373r.; ࢳ𞤿隹.𐹣ڏ1.; [B1, B2, B3]; xn--8yb0383efiwk.xn--1-wsc3373r.; ; ;  # ࢳ𞤿隹.𐹣ڏ1.
-ࢳ𞤝⾫｡𐹣ڏ⒈; ࢳ𞤿隹.𐹣ڏ⒈; [B1, B2, B3, P1, V6]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ;  # ࢳ𞤿隹.𐹣ڏ⒈
-xn--8yb0383efiwk.xn--ljb064mol4n; ࢳ𞤿隹.𐹣ڏ⒈; [B1, B2, B3, V6]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ;  # ࢳ𞤿隹.𐹣ڏ⒈
-␳𚎛𝟧١.ᡢ8ི؀; ␳𚎛5١.ᡢ8ི؀; [B5, B6, P1, V6]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ;  # 5١.ᡢ8ི
-␳𚎛5١.ᡢ8ི؀; ; [B5, B6, P1, V6]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ;  # 5١.ᡢ8ི
-xn--5-bqc410un435a.xn--8-rkc763epjj; ␳𚎛5١.ᡢ8ི؀; [B5, B6, V6]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ;  # 5١.ᡢ8ི
-𐹠.🄀⒒-󨰈; ; [B1, P1, V6]; xn--7n0d.xn----xcp9757q1s13g; ; ;  # 𐹠.🄀⒒-
-𐹠.0.11.-󨰈; ; [B1, P1, V3, V6]; xn--7n0d.0.11.xn----8j07m; ; ;  # 𐹠.0.11.-
-xn--7n0d.0.11.xn----8j07m; 𐹠.0.11.-󨰈; [B1, V3, V6]; xn--7n0d.0.11.xn----8j07m; ; ;  # 𐹠.0.11.-
-xn--7n0d.xn----xcp9757q1s13g; 𐹠.🄀⒒-󨰈; [B1, V6]; xn--7n0d.xn----xcp9757q1s13g; ; ;  # 𐹠.🄀⒒-
-ς-。‌𝟭-; ς-.‌1-; [C1, V3]; xn----xmb.xn--1--i1t; ; xn----zmb.1-; [V3] # ς-.1-
-ς-。‌1-; ς-.‌1-; [C1, V3]; xn----xmb.xn--1--i1t; ; xn----zmb.1-; [V3] # ς-.1-
-Σ-。‌1-; σ-.‌1-; [C1, V3]; xn----zmb.xn--1--i1t; ; xn----zmb.1-; [V3] # σ-.1-
-σ-。‌1-; σ-.‌1-; [C1, V3]; xn----zmb.xn--1--i1t; ; xn----zmb.1-; [V3] # σ-.1-
+⒗𞤊。-𑚶; ⒗𞤬.-𑚶; [B1, V3, V7]; xn--8shw466n.xn----4j0j; ; ;  # ⒗𞤬.-𑚶
+xn--8shw466n.xn----4j0j; ⒗𞤬.-𑚶; [B1, V3, V7]; xn--8shw466n.xn----4j0j; ; ;  # ⒗𞤬.-𑚶
+\u08B3𞤿⾫｡𐹣\u068F⒈; \u08B3𞤿隹.𐹣\u068F⒈; [B1, B2, B3, V7]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ;  # ࢳ𞤿隹.𐹣ڏ⒈
+\u08B3𞤿隹。𐹣\u068F1.; \u08B3𞤿隹.𐹣\u068F1.; [B1, B2, B3]; xn--8yb0383efiwk.xn--1-wsc3373r.; [B1, B2, B3, A4_2]; ;  # ࢳ𞤿隹.𐹣ڏ1.
+\u08B3𞤝隹。𐹣\u068F1.; \u08B3𞤿隹.𐹣\u068F1.; [B1, B2, B3]; xn--8yb0383efiwk.xn--1-wsc3373r.; [B1, B2, B3, A4_2]; ;  # ࢳ𞤿隹.𐹣ڏ1.
+xn--8yb0383efiwk.xn--1-wsc3373r.; \u08B3𞤿隹.𐹣\u068F1.; [B1, B2, B3]; xn--8yb0383efiwk.xn--1-wsc3373r.; [B1, B2, B3, A4_2]; ;  # ࢳ𞤿隹.𐹣ڏ1.
+\u08B3𞤝⾫｡𐹣\u068F⒈; \u08B3𞤿隹.𐹣\u068F⒈; [B1, B2, B3, V7]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ;  # ࢳ𞤿隹.𐹣ڏ⒈
+xn--8yb0383efiwk.xn--ljb064mol4n; \u08B3𞤿隹.𐹣\u068F⒈; [B1, B2, B3, V7]; xn--8yb0383efiwk.xn--ljb064mol4n; ; ;  # ࢳ𞤿隹.𐹣ڏ⒈
+\u2433𚎛𝟧\u0661.ᡢ8\u0F72\u0600; \u2433𚎛5\u0661.ᡢ8\u0F72\u0600; [B5, B6, V7]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ;  # 5١.ᡢ8ི
+\u2433𚎛5\u0661.ᡢ8\u0F72\u0600; ; [B5, B6, V7]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ;  # 5١.ᡢ8ི
+xn--5-bqc410un435a.xn--8-rkc763epjj; \u2433𚎛5\u0661.ᡢ8\u0F72\u0600; [B5, B6, V7]; xn--5-bqc410un435a.xn--8-rkc763epjj; ; ;  # 5١.ᡢ8ི
+𐹠.🄀⒒-󨰈; ; [B1, V7]; xn--7n0d.xn----xcp9757q1s13g; ; ;  # 𐹠.🄀⒒-
+𐹠.0.11.-󨰈; ; [B1, V3, V7]; xn--7n0d.0.11.xn----8j07m; ; ;  # 𐹠.0.11.-
+xn--7n0d.0.11.xn----8j07m; 𐹠.0.11.-󨰈; [B1, V3, V7]; xn--7n0d.0.11.xn----8j07m; ; ;  # 𐹠.0.11.-
+xn--7n0d.xn----xcp9757q1s13g; 𐹠.🄀⒒-󨰈; [B1, V7]; xn--7n0d.xn----xcp9757q1s13g; ; ;  # 𐹠.🄀⒒-
+ς-。\u200C𝟭-; ς-.\u200C1-; [C1, V3]; xn----xmb.xn--1--i1t; ; xn----zmb.1-; [V3] # ς-.1-
+ς-。\u200C1-; ς-.\u200C1-; [C1, V3]; xn----xmb.xn--1--i1t; ; xn----zmb.1-; [V3] # ς-.1-
+Σ-。\u200C1-; σ-.\u200C1-; [C1, V3]; xn----zmb.xn--1--i1t; ; xn----zmb.1-; [V3] # σ-.1-
+σ-。\u200C1-; σ-.\u200C1-; [C1, V3]; xn----zmb.xn--1--i1t; ; xn----zmb.1-; [V3] # σ-.1-
 xn----zmb.1-; σ-.1-; [V3]; xn----zmb.1-; ; ;  # σ-.1-
-xn----zmb.xn--1--i1t; σ-.‌1-; [C1, V3]; xn----zmb.xn--1--i1t; ; ;  # σ-.1-
-xn----xmb.xn--1--i1t; ς-.‌1-; [C1, V3]; xn----xmb.xn--1--i1t; ; ;  # ς-.1-
-Σ-。‌𝟭-; σ-.‌1-; [C1, V3]; xn----zmb.xn--1--i1t; ; xn----zmb.1-; [V3] # σ-.1-
-σ-。‌𝟭-; σ-.‌1-; [C1, V3]; xn----zmb.xn--1--i1t; ; xn----zmb.1-; [V3] # σ-.1-
-᜴-ೢ．󠄩Ⴄ; ᜴-ೢ.Ⴄ; [P1, V5, V6]; xn----ggf830f.xn--cnd; ; ;  # ᜴-ೢ.Ⴄ
-᜴-ೢ.󠄩Ⴄ; ᜴-ೢ.Ⴄ; [P1, V5, V6]; xn----ggf830f.xn--cnd; ; ;  # ᜴-ೢ.Ⴄ
-᜴-ೢ.󠄩ⴄ; ᜴-ೢ.ⴄ; [V5]; xn----ggf830f.xn--vkj; ; ;  # ᜴-ೢ.ⴄ
-xn----ggf830f.xn--vkj; ᜴-ೢ.ⴄ; [V5]; xn----ggf830f.xn--vkj; ; ;  # ᜴-ೢ.ⴄ
-xn----ggf830f.xn--cnd; ᜴-ೢ.Ⴄ; [V5, V6]; xn----ggf830f.xn--cnd; ; ;  # ᜴-ೢ.Ⴄ
-᜴-ೢ．󠄩ⴄ; ᜴-ೢ.ⴄ; [V5]; xn----ggf830f.xn--vkj; ; ;  # ᜴-ೢ.ⴄ
-򭈗♋ڻ𐦥｡॔⒈; 򭈗♋ڻ𐦥.॔⒈; [B1, B5, B6, P1, V5, V6]; xn--ukb372n129m3rs7f.xn--u3b240l; ; ;  # ♋ڻ𐦥.॔⒈
-򭈗♋ڻ𐦥。॔1.; 򭈗♋ڻ𐦥.॔1.; [B1, B5, B6, P1, V5, V6]; xn--ukb372n129m3rs7f.xn--1-fyd.; ; ;  # ♋ڻ𐦥.॔1.
-xn--ukb372n129m3rs7f.xn--1-fyd.; 򭈗♋ڻ𐦥.॔1.; [B1, B5, B6, V5, V6]; xn--ukb372n129m3rs7f.xn--1-fyd.; ; ;  # ♋ڻ𐦥.॔1.
-xn--ukb372n129m3rs7f.xn--u3b240l; 򭈗♋ڻ𐦥.॔⒈; [B1, B5, B6, V5, V6]; xn--ukb372n129m3rs7f.xn--u3b240l; ; ;  # ♋ڻ𐦥.॔⒈
-֤．ہ᪳‌; ֤.ہ᪳‌; [B1, B3, B6, C1, V5]; xn--vcb.xn--0kb623hm1d; ; xn--vcb.xn--0kb623h; [B1, B3, B6, V5] # ֤.ہ᪳
-֤.ہ᪳‌; ; [B1, B3, B6, C1, V5]; xn--vcb.xn--0kb623hm1d; ; xn--vcb.xn--0kb623h; [B1, B3, B6, V5] # ֤.ہ᪳
-xn--vcb.xn--0kb623h; ֤.ہ᪳; [B1, B3, B6, V5]; xn--vcb.xn--0kb623h; ; ;  # ֤.ہ᪳
-xn--vcb.xn--0kb623hm1d; ֤.ہ᪳‌; [B1, B3, B6, C1, V5]; xn--vcb.xn--0kb623hm1d; ; ;  # ֤.ہ᪳
-񢭏ࡆ≮્．𞦊; 񢭏ࡆ≮્.𞦊; [B5, B6, P1, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ;  # ࡆ≮્.
-񢭏ࡆ≮્．𞦊; 񢭏ࡆ≮્.𞦊; [B5, B6, P1, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ;  # ࡆ≮્.
-񢭏ࡆ≮્.𞦊; ; [B5, B6, P1, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ;  # ࡆ≮્.
-񢭏ࡆ≮્.𞦊; 񢭏ࡆ≮્.𞦊; [B5, B6, P1, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ;  # ࡆ≮્.
-xn--4vb80kq29ayo62l.xn--8g6h; 񢭏ࡆ≮્.𞦊; [B5, B6, V6]; xn--4vb80kq29ayo62l.xn--8g6h; ; ;  # ࡆ≮્.
-‍。𞀘⒈ꡍ擉; ‍.𞀘⒈ꡍ擉; [C2, P1, V5, V6]; xn--1ug.xn--tsh026uql4bew9p; ; .xn--tsh026uql4bew9p; [P1, V5, V6, A4_2] # .𞀘⒈ꡍ擉
-‍。𞀘1.ꡍ擉; ‍.𞀘1.ꡍ擉; [C2, V5]; xn--1ug.xn--1-1p4r.xn--s7uv61m; ; .xn--1-1p4r.xn--s7uv61m; [V5, A4_2] # .𞀘1.ꡍ擉
-.xn--1-1p4r.xn--s7uv61m; .𞀘1.ꡍ擉; [V5, X4_2]; .xn--1-1p4r.xn--s7uv61m; [V5, A4_2]; ;  # .𞀘1.ꡍ擉
-xn--1ug.xn--1-1p4r.xn--s7uv61m; ‍.𞀘1.ꡍ擉; [C2, V5]; xn--1ug.xn--1-1p4r.xn--s7uv61m; ; ;  # .𞀘1.ꡍ擉
-.xn--tsh026uql4bew9p; .𞀘⒈ꡍ擉; [V5, V6, X4_2]; .xn--tsh026uql4bew9p; [V5, V6, A4_2]; ;  # .𞀘⒈ꡍ擉
-xn--1ug.xn--tsh026uql4bew9p; ‍.𞀘⒈ꡍ擉; [C2, V5, V6]; xn--1ug.xn--tsh026uql4bew9p; ; ;  # .𞀘⒈ꡍ擉
-₈ߋ．ﭤ≠; 8ߋ.ٿ≠; [B1, B3, P1, V6]; xn--8-zbd.xn--4ib883l; ; ;  # 8ߋ.ٿ≠
-₈ߋ．ﭤ≠; 8ߋ.ٿ≠; [B1, B3, P1, V6]; xn--8-zbd.xn--4ib883l; ; ;  # 8ߋ.ٿ≠
-8ߋ.ٿ≠; ; [B1, B3, P1, V6]; xn--8-zbd.xn--4ib883l; ; ;  # 8ߋ.ٿ≠
-8ߋ.ٿ≠; 8ߋ.ٿ≠; [B1, B3, P1, V6]; xn--8-zbd.xn--4ib883l; ; ;  # 8ߋ.ٿ≠
-xn--8-zbd.xn--4ib883l; 8ߋ.ٿ≠; [B1, B3, V6]; xn--8-zbd.xn--4ib883l; ; ;  # 8ߋ.ٿ≠
-ᢡߞ򹐣.⒒ق𑍦; ; [B1, B5, P1, V6]; xn--5sb596fi873t.xn--ehb336mvy7n; ; ;  # ᢡߞ.⒒ق𑍦
-ᢡߞ򹐣.11.ق𑍦; ; [B1, B5, P1, V6]; xn--5sb596fi873t.11.xn--ehb4198k; ; ;  # ᢡߞ.11.ق𑍦
-xn--5sb596fi873t.11.xn--ehb4198k; ᢡߞ򹐣.11.ق𑍦; [B1, B5, V6]; xn--5sb596fi873t.11.xn--ehb4198k; ; ;  # ᢡߞ.11.ق𑍦
-xn--5sb596fi873t.xn--ehb336mvy7n; ᢡߞ򹐣.⒒ق𑍦; [B1, B5, V6]; xn--5sb596fi873t.xn--ehb336mvy7n; ; ;  # ᢡߞ.⒒ق𑍦
-่-𐹺𝟜.ͣۡ⒏; ่-𐹺4.ͣۡ⒏; [B1, P1, V5, V6]; xn---4-owiz479s.xn--eva20pjv9a; ; ;  # ่-𐹺4.ͣۡ⒏
-่-𐹺4.ͣۡ8.; ; [B1, V5]; xn---4-owiz479s.xn--8-ihb69x.; ; ;  # ่-𐹺4.ͣۡ8.
-xn---4-owiz479s.xn--8-ihb69x.; ่-𐹺4.ͣۡ8.; [B1, V5]; xn---4-owiz479s.xn--8-ihb69x.; ; ;  # ่-𐹺4.ͣۡ8.
-xn---4-owiz479s.xn--eva20pjv9a; ่-𐹺4.ͣۡ⒏; [B1, V5, V6]; xn---4-owiz479s.xn--eva20pjv9a; ; ;  # ่-𐹺4.ͣۡ⒏
-⫐｡Ⴠ-󃐢; ⫐.Ⴠ-󃐢; [P1, V6]; xn--r3i.xn----z1g58579u; ; ;  # ⫐.Ⴠ-
-⫐。Ⴠ-󃐢; ⫐.Ⴠ-󃐢; [P1, V6]; xn--r3i.xn----z1g58579u; ; ;  # ⫐.Ⴠ-
-⫐。ⴠ-󃐢; ⫐.ⴠ-󃐢; [P1, V6]; xn--r3i.xn----2wst7439i; ; ;  # ⫐.ⴠ-
-xn--r3i.xn----2wst7439i; ⫐.ⴠ-󃐢; [V6]; xn--r3i.xn----2wst7439i; ; ;  # ⫐.ⴠ-
-xn--r3i.xn----z1g58579u; ⫐.Ⴠ-󃐢; [V6]; xn--r3i.xn----z1g58579u; ; ;  # ⫐.Ⴠ-
-⫐｡ⴠ-󃐢; ⫐.ⴠ-󃐢; [P1, V6]; xn--r3i.xn----2wst7439i; ; ;  # ⫐.ⴠ-
-𑑂◊．⦟∠; 𑑂◊.⦟∠; [V5]; xn--01h3338f.xn--79g270a; ; ;  # 𑑂◊.⦟∠
-𑑂◊.⦟∠; ; [V5]; xn--01h3338f.xn--79g270a; ; ;  # 𑑂◊.⦟∠
-xn--01h3338f.xn--79g270a; 𑑂◊.⦟∠; [V5]; xn--01h3338f.xn--79g270a; ; ;  # 𑑂◊.⦟∠
-𿌰-٢。󋸛ꡂ; 𿌰-٢.󋸛ꡂ; [B5, B6, P1, V6]; xn----dqc20828e.xn--bc9an2879c; ; ;  # -٢.ꡂ
-xn----dqc20828e.xn--bc9an2879c; 𿌰-٢.󋸛ꡂ; [B5, B6, V6]; xn----dqc20828e.xn--bc9an2879c; ; ;  # -٢.ꡂ
-ٸ。󠏬݁𞪭𐹪; يٴ.󠏬݁𞪭𐹪; [B1, P1, V6]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ;  # يٴ.݁𐹪
-يٴ。󠏬݁𞪭𐹪; يٴ.󠏬݁𞪭𐹪; [B1, P1, V6]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ;  # يٴ.݁𐹪
-xn--mhb8f.xn--oob2585kfdsfsbo7h; يٴ.󠏬݁𞪭𐹪; [B1, V6]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ;  # يٴ.݁𐹪
-𐫆ꌄ｡‍ᣬ; 𐫆ꌄ.‍ᣬ; [B1, B2, B3, C2]; xn--y77ao18q.xn--wdf367a; ; xn--y77ao18q.xn--wdf; [B2, B3] # 𐫆ꌄ.ᣬ
-𐫆ꌄ。‍ᣬ; 𐫆ꌄ.‍ᣬ; [B1, B2, B3, C2]; xn--y77ao18q.xn--wdf367a; ; xn--y77ao18q.xn--wdf; [B2, B3] # 𐫆ꌄ.ᣬ
+xn----zmb.xn--1--i1t; σ-.\u200C1-; [C1, V3]; xn----zmb.xn--1--i1t; ; ;  # σ-.1-
+xn----xmb.xn--1--i1t; ς-.\u200C1-; [C1, V3]; xn----xmb.xn--1--i1t; ; ;  # ς-.1-
+Σ-。\u200C𝟭-; σ-.\u200C1-; [C1, V3]; xn----zmb.xn--1--i1t; ; xn----zmb.1-; [V3] # σ-.1-
+σ-。\u200C𝟭-; σ-.\u200C1-; [C1, V3]; xn----zmb.xn--1--i1t; ; xn----zmb.1-; [V3] # σ-.1-
+\u1734-\u0CE2．󠄩Ⴄ; \u1734-\u0CE2.ⴄ; [V6]; xn----ggf830f.xn--vkj; ; ;  # ᜴-ೢ.ⴄ
+\u1734-\u0CE2.󠄩Ⴄ; \u1734-\u0CE2.ⴄ; [V6]; xn----ggf830f.xn--vkj; ; ;  # ᜴-ೢ.ⴄ
+\u1734-\u0CE2.󠄩ⴄ; \u1734-\u0CE2.ⴄ; [V6]; xn----ggf830f.xn--vkj; ; ;  # ᜴-ೢ.ⴄ
+xn----ggf830f.xn--vkj; \u1734-\u0CE2.ⴄ; [V6]; xn----ggf830f.xn--vkj; ; ;  # ᜴-ೢ.ⴄ
+\u1734-\u0CE2．󠄩ⴄ; \u1734-\u0CE2.ⴄ; [V6]; xn----ggf830f.xn--vkj; ; ;  # ᜴-ೢ.ⴄ
+xn----ggf830f.xn--cnd; \u1734-\u0CE2.Ⴄ; [V6, V7]; xn----ggf830f.xn--cnd; ; ;  # ᜴-ೢ.Ⴄ
+򭈗♋\u06BB𐦥｡\u0954⒈; 򭈗♋\u06BB𐦥.\u0954⒈; [B1, B5, B6, V6, V7]; xn--ukb372n129m3rs7f.xn--u3b240l; ; ;  # ♋ڻ𐦥.॔⒈
+򭈗♋\u06BB𐦥。\u09541.; 򭈗♋\u06BB𐦥.\u09541.; [B1, B5, B6, V6, V7]; xn--ukb372n129m3rs7f.xn--1-fyd.; [B1, B5, B6, V6, V7, A4_2]; ;  # ♋ڻ𐦥.॔1.
+xn--ukb372n129m3rs7f.xn--1-fyd.; 򭈗♋\u06BB𐦥.\u09541.; [B1, B5, B6, V6, V7]; xn--ukb372n129m3rs7f.xn--1-fyd.; [B1, B5, B6, V6, V7, A4_2]; ;  # ♋ڻ𐦥.॔1.
+xn--ukb372n129m3rs7f.xn--u3b240l; 򭈗♋\u06BB𐦥.\u0954⒈; [B1, B5, B6, V6, V7]; xn--ukb372n129m3rs7f.xn--u3b240l; ; ;  # ♋ڻ𐦥.॔⒈
+\u05A4．\u06C1\u1AB3\u200C; \u05A4.\u06C1\u1AB3\u200C; [B1, B3, C1, V6]; xn--vcb.xn--0kb623hm1d; ; xn--vcb.xn--0kb623h; [B1, V6] # ֤.ہ᪳
+\u05A4.\u06C1\u1AB3\u200C; ; [B1, B3, C1, V6]; xn--vcb.xn--0kb623hm1d; ; xn--vcb.xn--0kb623h; [B1, V6] # ֤.ہ᪳
+xn--vcb.xn--0kb623h; \u05A4.\u06C1\u1AB3; [B1, V6]; xn--vcb.xn--0kb623h; ; ;  # ֤.ہ᪳
+xn--vcb.xn--0kb623hm1d; \u05A4.\u06C1\u1AB3\u200C; [B1, B3, C1, V6]; xn--vcb.xn--0kb623hm1d; ; ;  # ֤.ہ᪳
+񢭏\u0846≮\u0ACD．𞦊; 񢭏\u0846≮\u0ACD.𞦊; [B5, B6, V7]; xn--4vb80kq29ayo62l.xn--8g6h; ; ;  # ࡆ≮્.
+񢭏\u0846<\u0338\u0ACD．𞦊; 񢭏\u0846≮\u0ACD.𞦊; [B5, B6, V7]; xn--4vb80kq29ayo62l.xn--8g6h; ; ;  # ࡆ≮્.
+񢭏\u0846≮\u0ACD.𞦊; ; [B5, B6, V7]; xn--4vb80kq29ayo62l.xn--8g6h; ; ;  # ࡆ≮્.
+񢭏\u0846<\u0338\u0ACD.𞦊; 񢭏\u0846≮\u0ACD.𞦊; [B5, B6, V7]; xn--4vb80kq29ayo62l.xn--8g6h; ; ;  # ࡆ≮્.
+xn--4vb80kq29ayo62l.xn--8g6h; 񢭏\u0846≮\u0ACD.𞦊; [B5, B6, V7]; xn--4vb80kq29ayo62l.xn--8g6h; ; ;  # ࡆ≮્.
+\u200D。𞀘⒈ꡍ擉; \u200D.𞀘⒈ꡍ擉; [C2, V6, V7]; xn--1ug.xn--tsh026uql4bew9p; ; .xn--tsh026uql4bew9p; [V6, V7, A4_2] # .𞀘⒈ꡍ擉
+\u200D。𞀘1.ꡍ擉; \u200D.𞀘1.ꡍ擉; [C2, V6]; xn--1ug.xn--1-1p4r.xn--s7uv61m; ; .xn--1-1p4r.xn--s7uv61m; [V6, A4_2] # .𞀘1.ꡍ擉
+.xn--1-1p4r.xn--s7uv61m; .𞀘1.ꡍ擉; [V6, X4_2]; .xn--1-1p4r.xn--s7uv61m; [V6, A4_2]; ;  # .𞀘1.ꡍ擉
+xn--1ug.xn--1-1p4r.xn--s7uv61m; \u200D.𞀘1.ꡍ擉; [C2, V6]; xn--1ug.xn--1-1p4r.xn--s7uv61m; ; ;  # .𞀘1.ꡍ擉
+.xn--tsh026uql4bew9p; .𞀘⒈ꡍ擉; [V6, V7, X4_2]; .xn--tsh026uql4bew9p; [V6, V7, A4_2]; ;  # .𞀘⒈ꡍ擉
+xn--1ug.xn--tsh026uql4bew9p; \u200D.𞀘⒈ꡍ擉; [C2, V6, V7]; xn--1ug.xn--tsh026uql4bew9p; ; ;  # .𞀘⒈ꡍ擉
+₈\u07CB．\uFB64≠; 8\u07CB.\u067F≠; [B1, B3]; xn--8-zbd.xn--4ib883l; ; ;  # 8ߋ.ٿ≠
+₈\u07CB．\uFB64=\u0338; 8\u07CB.\u067F≠; [B1, B3]; xn--8-zbd.xn--4ib883l; ; ;  # 8ߋ.ٿ≠
+8\u07CB.\u067F≠; ; [B1, B3]; xn--8-zbd.xn--4ib883l; ; ;  # 8ߋ.ٿ≠
+8\u07CB.\u067F=\u0338; 8\u07CB.\u067F≠; [B1, B3]; xn--8-zbd.xn--4ib883l; ; ;  # 8ߋ.ٿ≠
+xn--8-zbd.xn--4ib883l; 8\u07CB.\u067F≠; [B1, B3]; xn--8-zbd.xn--4ib883l; ; ;  # 8ߋ.ٿ≠
+ᢡ\u07DE򹐣.⒒\u0642𑍦; ; [B1, B5, V7]; xn--5sb596fi873t.xn--ehb336mvy7n; ; ;  # ᢡߞ.⒒ق𑍦
+ᢡ\u07DE򹐣.11.\u0642𑍦; ; [B1, B5, V7]; xn--5sb596fi873t.11.xn--ehb4198k; ; ;  # ᢡߞ.11.ق𑍦
+xn--5sb596fi873t.11.xn--ehb4198k; ᢡ\u07DE򹐣.11.\u0642𑍦; [B1, B5, V7]; xn--5sb596fi873t.11.xn--ehb4198k; ; ;  # ᢡߞ.11.ق𑍦
+xn--5sb596fi873t.xn--ehb336mvy7n; ᢡ\u07DE򹐣.⒒\u0642𑍦; [B1, B5, V7]; xn--5sb596fi873t.xn--ehb336mvy7n; ; ;  # ᢡߞ.⒒ق𑍦
+\u0E48-𐹺𝟜.\u0363\u06E1⒏; \u0E48-𐹺4.\u0363\u06E1⒏; [B1, V6, V7]; xn---4-owiz479s.xn--eva20pjv9a; ; ;  # ่-𐹺4.ͣۡ⒏
+\u0E48-𐹺4.\u0363\u06E18.; ; [B1, V6]; xn---4-owiz479s.xn--8-ihb69x.; [B1, V6, A4_2]; ;  # ่-𐹺4.ͣۡ8.
+xn---4-owiz479s.xn--8-ihb69x.; \u0E48-𐹺4.\u0363\u06E18.; [B1, V6]; xn---4-owiz479s.xn--8-ihb69x.; [B1, V6, A4_2]; ;  # ่-𐹺4.ͣۡ8.
+xn---4-owiz479s.xn--eva20pjv9a; \u0E48-𐹺4.\u0363\u06E1⒏; [B1, V6, V7]; xn---4-owiz479s.xn--eva20pjv9a; ; ;  # ่-𐹺4.ͣۡ⒏
+⫐｡Ⴠ-󃐢; ⫐.ⴠ-󃐢; [V7]; xn--r3i.xn----2wst7439i; ; ;  # ⫐.ⴠ-
+⫐。Ⴠ-󃐢; ⫐.ⴠ-󃐢; [V7]; xn--r3i.xn----2wst7439i; ; ;  # ⫐.ⴠ-
+⫐。ⴠ-󃐢; ⫐.ⴠ-󃐢; [V7]; xn--r3i.xn----2wst7439i; ; ;  # ⫐.ⴠ-
+xn--r3i.xn----2wst7439i; ⫐.ⴠ-󃐢; [V7]; xn--r3i.xn----2wst7439i; ; ;  # ⫐.ⴠ-
+⫐｡ⴠ-󃐢; ⫐.ⴠ-󃐢; [V7]; xn--r3i.xn----2wst7439i; ; ;  # ⫐.ⴠ-
+xn--r3i.xn----z1g58579u; ⫐.Ⴠ-󃐢; [V7]; xn--r3i.xn----z1g58579u; ; ;  # ⫐.Ⴠ-
+𑑂◊．⦟∠; 𑑂◊.⦟∠; [V6]; xn--01h3338f.xn--79g270a; ; ;  # 𑑂◊.⦟∠
+𑑂◊.⦟∠; ; [V6]; xn--01h3338f.xn--79g270a; ; ;  # 𑑂◊.⦟∠
+xn--01h3338f.xn--79g270a; 𑑂◊.⦟∠; [V6]; xn--01h3338f.xn--79g270a; ; ;  # 𑑂◊.⦟∠
+𿌰-\u0662。󋸛ꡂ; 𿌰-\u0662.󋸛ꡂ; [B5, B6, V7]; xn----dqc20828e.xn--bc9an2879c; ; ;  # -٢.ꡂ
+xn----dqc20828e.xn--bc9an2879c; 𿌰-\u0662.󋸛ꡂ; [B5, B6, V7]; xn----dqc20828e.xn--bc9an2879c; ; ;  # -٢.ꡂ
+\u0678。󠏬\u0741𞪭𐹪; \u064A\u0674.󠏬\u0741𞪭𐹪; [B1, V7]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ;  # يٴ.݁𐹪
+\u064A\u0674。󠏬\u0741𞪭𐹪; \u064A\u0674.󠏬\u0741𞪭𐹪; [B1, V7]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ;  # يٴ.݁𐹪
+xn--mhb8f.xn--oob2585kfdsfsbo7h; \u064A\u0674.󠏬\u0741𞪭𐹪; [B1, V7]; xn--mhb8f.xn--oob2585kfdsfsbo7h; ; ;  # يٴ.݁𐹪
+𐫆ꌄ｡\u200Dᣬ; 𐫆ꌄ.\u200Dᣬ; [B1, B2, B3, C2]; xn--y77ao18q.xn--wdf367a; ; xn--y77ao18q.xn--wdf; [B2, B3] # 𐫆ꌄ.ᣬ
+𐫆ꌄ。\u200Dᣬ; 𐫆ꌄ.\u200Dᣬ; [B1, B2, B3, C2]; xn--y77ao18q.xn--wdf367a; ; xn--y77ao18q.xn--wdf; [B2, B3] # 𐫆ꌄ.ᣬ
 xn--y77ao18q.xn--wdf; 𐫆ꌄ.ᣬ; [B2, B3]; xn--y77ao18q.xn--wdf; ; ;  # 𐫆ꌄ.ᣬ
-xn--y77ao18q.xn--wdf367a; 𐫆ꌄ.‍ᣬ; [B1, B2, B3, C2]; xn--y77ao18q.xn--wdf367a; ; ;  # 𐫆ꌄ.ᣬ
-₀٢。󅪞≯-; 0٢.󅪞≯-; [B1, B6, P1, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ;  # 0٢.≯-
-₀٢。󅪞≯-; 0٢.󅪞≯-; [B1, B6, P1, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ;  # 0٢.≯-
-0٢。󅪞≯-; 0٢.󅪞≯-; [B1, B6, P1, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ;  # 0٢.≯-
-0٢。󅪞≯-; 0٢.󅪞≯-; [B1, B6, P1, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ;  # 0٢.≯-
-xn--0-dqc.xn----ogov3342l; 0٢.󅪞≯-; [B1, B6, V3, V6]; xn--0-dqc.xn----ogov3342l; ; ;  # 0٢.≯-
-̜𐹫-𞯃.𐋤ࡅ; ; [B1, P1, V5, V6]; xn----gdb7046r692g.xn--3vb1349j; ; ;  # ̜𐹫-.𐋤ࡅ
-xn----gdb7046r692g.xn--3vb1349j; ̜𐹫-𞯃.𐋤ࡅ; [B1, V5, V6]; xn----gdb7046r692g.xn--3vb1349j; ; ;  # ̜𐹫-.𐋤ࡅ
-≠｡𝩑𐹩Ⴡ֔; ≠.𝩑𐹩Ⴡ֔; [B1, P1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ;  # ≠.𝩑𐹩Ⴡ֔
-≠｡𝩑𐹩Ⴡ֔; ≠.𝩑𐹩Ⴡ֔; [B1, P1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ;  # ≠.𝩑𐹩Ⴡ֔
-≠。𝩑𐹩Ⴡ֔; ≠.𝩑𐹩Ⴡ֔; [B1, P1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ;  # ≠.𝩑𐹩Ⴡ֔
-≠。𝩑𐹩Ⴡ֔; ≠.𝩑𐹩Ⴡ֔; [B1, P1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ;  # ≠.𝩑𐹩Ⴡ֔
-≠。𝩑𐹩ⴡ֔; ≠.𝩑𐹩ⴡ֔; [B1, P1, V5, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
-≠。𝩑𐹩ⴡ֔; ≠.𝩑𐹩ⴡ֔; [B1, P1, V5, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
-xn--1ch.xn--fcb363rk03mypug; ≠.𝩑𐹩ⴡ֔; [B1, V5, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
-xn--1ch.xn--fcb538c649rypog; ≠.𝩑𐹩Ⴡ֔; [B1, V5, V6]; xn--1ch.xn--fcb538c649rypog; ; ;  # ≠.𝩑𐹩Ⴡ֔
-≠｡𝩑𐹩ⴡ֔; ≠.𝩑𐹩ⴡ֔; [B1, P1, V5, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
-≠｡𝩑𐹩ⴡ֔; ≠.𝩑𐹩ⴡ֔; [B1, P1, V5, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
-𖫳≠.Ⴀ𐮀; ; [B1, B5, B6, P1, V5, V6]; xn--1ch9250k.xn--7md2659j; ; ;  # 𖫳≠.Ⴀ𐮀
-𖫳≠.Ⴀ𐮀; 𖫳≠.Ⴀ𐮀; [B1, B5, B6, P1, V5, V6]; xn--1ch9250k.xn--7md2659j; ; ;  # 𖫳≠.Ⴀ𐮀
-𖫳≠.ⴀ𐮀; 𖫳≠.ⴀ𐮀; [B1, B5, B6, P1, V5, V6]; xn--1ch9250k.xn--rkj6232e; ; ;  # 𖫳≠.ⴀ𐮀
-𖫳≠.ⴀ𐮀; ; [B1, B5, B6, P1, V5, V6]; xn--1ch9250k.xn--rkj6232e; ; ;  # 𖫳≠.ⴀ𐮀
-xn--1ch9250k.xn--rkj6232e; 𖫳≠.ⴀ𐮀; [B1, B5, B6, V5, V6]; xn--1ch9250k.xn--rkj6232e; ; ;  # 𖫳≠.ⴀ𐮀
-xn--1ch9250k.xn--7md2659j; 𖫳≠.Ⴀ𐮀; [B1, B5, B6, V5, V6]; xn--1ch9250k.xn--7md2659j; ; ;  # 𖫳≠.Ⴀ𐮀
-󠅾ܶܦ．ᢚ閪࣢𝩟; ܶܦ.ᢚ閪࣢𝩟; [B1, B5, B6, P1, V5, V6]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ;  # ܶܦ.ᢚ閪𝩟
-󠅾ܶܦ.ᢚ閪࣢𝩟; ܶܦ.ᢚ閪࣢𝩟; [B1, B5, B6, P1, V5, V6]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ;  # ܶܦ.ᢚ閪𝩟
-xn--wnb5a.xn--l0b161fis8gbp5m; ܶܦ.ᢚ閪࣢𝩟; [B1, B5, B6, V5, V6]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ;  # ܶܦ.ᢚ閪𝩟
-‍󠇜ۋ꣩｡⃝ྰ-ᛟ; ‍ۋ꣩.⃝ྰ-ᛟ; [B1, C2, V5]; xn--blb540ke10h.xn----gmg236cj6k; ; xn--blb8114f.xn----gmg236cj6k; [B1, V5] # ۋ꣩.⃝ྰ-ᛟ
-‍󠇜ۋ꣩。⃝ྰ-ᛟ; ‍ۋ꣩.⃝ྰ-ᛟ; [B1, C2, V5]; xn--blb540ke10h.xn----gmg236cj6k; ; xn--blb8114f.xn----gmg236cj6k; [B1, V5] # ۋ꣩.⃝ྰ-ᛟ
-xn--blb8114f.xn----gmg236cj6k; ۋ꣩.⃝ྰ-ᛟ; [B1, V5]; xn--blb8114f.xn----gmg236cj6k; ; ;  # ۋ꣩.⃝ྰ-ᛟ
-xn--blb540ke10h.xn----gmg236cj6k; ‍ۋ꣩.⃝ྰ-ᛟ; [B1, C2, V5]; xn--blb540ke10h.xn----gmg236cj6k; ; ;  # ۋ꣩.⃝ྰ-ᛟ
-헁󘖙ฺ󚍚。ں𝟜; 헁󘖙ฺ󚍚.ں4; [P1, V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ;  # 헁ฺ.ں4
-헁󘖙ฺ󚍚。ں𝟜; 헁󘖙ฺ󚍚.ں4; [P1, V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ;  # 헁ฺ.ں4
-헁󘖙ฺ󚍚。ں4; 헁󘖙ฺ󚍚.ں4; [P1, V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ;  # 헁ฺ.ں4
-헁󘖙ฺ󚍚。ں4; 헁󘖙ฺ󚍚.ں4; [P1, V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ;  # 헁ฺ.ں4
-xn--o4c1723h8g85gt4ya.xn--4-dvc; 헁󘖙ฺ󚍚.ں4; [V6]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ;  # 헁ฺ.ں4
-𐹭｡󃱂‌Ⴞ; 𐹭.󃱂‌Ⴞ; [B1, C1, P1, V6]; xn--lo0d.xn--2nd949eqw95u; ; xn--lo0d.xn--2nd75260n; [B1, P1, V6] # 𐹭.Ⴞ
-𐹭。󃱂‌Ⴞ; 𐹭.󃱂‌Ⴞ; [B1, C1, P1, V6]; xn--lo0d.xn--2nd949eqw95u; ; xn--lo0d.xn--2nd75260n; [B1, P1, V6] # 𐹭.Ⴞ
-𐹭。󃱂‌ⴞ; 𐹭.󃱂‌ⴞ; [B1, C1, P1, V6]; xn--lo0d.xn--0ugx72cwi33v; ; xn--lo0d.xn--mljx1099g; [B1, P1, V6] # 𐹭.ⴞ
-xn--lo0d.xn--mljx1099g; 𐹭.󃱂ⴞ; [B1, V6]; xn--lo0d.xn--mljx1099g; ; ;  # 𐹭.ⴞ
-xn--lo0d.xn--0ugx72cwi33v; 𐹭.󃱂‌ⴞ; [B1, C1, V6]; xn--lo0d.xn--0ugx72cwi33v; ; ;  # 𐹭.ⴞ
-xn--lo0d.xn--2nd75260n; 𐹭.󃱂Ⴞ; [B1, V6]; xn--lo0d.xn--2nd75260n; ; ;  # 𐹭.Ⴞ
-xn--lo0d.xn--2nd949eqw95u; 𐹭.󃱂‌Ⴞ; [B1, C1, V6]; xn--lo0d.xn--2nd949eqw95u; ; ;  # 𐹭.Ⴞ
-𐹭｡󃱂‌ⴞ; 𐹭.󃱂‌ⴞ; [B1, C1, P1, V6]; xn--lo0d.xn--0ugx72cwi33v; ; xn--lo0d.xn--mljx1099g; [B1, P1, V6] # 𐹭.ⴞ
-꥓.̽𑂽馋; ; [P1, V5, V6]; xn--3j9a.xn--bua0708eqzrd; ; ;  # ꥓.̽馋
-xn--3j9a.xn--bua0708eqzrd; ꥓.̽𑂽馋; [V5, V6]; xn--3j9a.xn--bua0708eqzrd; ; ;  # ꥓.̽馋
-󈫝򪛸‍｡䜖; 󈫝򪛸‍.䜖; [C2, P1, V6]; xn--1ug30527h9mxi.xn--k0o; ; xn--g138cxw05a.xn--k0o; [P1, V6] # .䜖
-󈫝򪛸‍。䜖; 󈫝򪛸‍.䜖; [C2, P1, V6]; xn--1ug30527h9mxi.xn--k0o; ; xn--g138cxw05a.xn--k0o; [P1, V6] # .䜖
-xn--g138cxw05a.xn--k0o; 󈫝򪛸.䜖; [V6]; xn--g138cxw05a.xn--k0o; ; ;  # .䜖
-xn--1ug30527h9mxi.xn--k0o; 󈫝򪛸‍.䜖; [C2, V6]; xn--1ug30527h9mxi.xn--k0o; ; ;  # .䜖
-ᡯ⚉姶🄉．۷‍🎪‍; ᡯ⚉姶🄉.۷‍🎪‍; [C2, P1, V6]; xn--c9e433epi4b3j20a.xn--kmb859ja94998b; ; xn--c9e433epi4b3j20a.xn--kmb6733w; [P1, V6] # ᡯ⚉姶🄉.۷🎪
-ᡯ⚉姶8,.۷‍🎪‍; ; [C2, P1, V6]; xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ; xn--8,-g9oy26fzu4d.xn--kmb6733w; [P1, V6] # ᡯ⚉姶8,.۷🎪
-xn--8,-g9oy26fzu4d.xn--kmb6733w; ᡯ⚉姶8,.۷🎪; [P1, V6]; xn--8,-g9oy26fzu4d.xn--kmb6733w; ; ;  # ᡯ⚉姶8,.۷🎪
-xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ᡯ⚉姶8,.۷‍🎪‍; [C2, P1, V6]; xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ; ;  # ᡯ⚉姶8,.۷🎪
-xn--c9e433epi4b3j20a.xn--kmb6733w; ᡯ⚉姶🄉.۷🎪; [V6]; xn--c9e433epi4b3j20a.xn--kmb6733w; ; ;  # ᡯ⚉姶🄉.۷🎪
-xn--c9e433epi4b3j20a.xn--kmb859ja94998b; ᡯ⚉姶🄉.۷‍🎪‍; [C2, V6]; xn--c9e433epi4b3j20a.xn--kmb859ja94998b; ; ;  # ᡯ⚉姶🄉.۷🎪
-𞽀.𐹸🚖ฺ; ; [B1, P1, V6]; xn--0n7h.xn--o4c9032klszf; ; ;  # .𐹸🚖ฺ
-xn--0n7h.xn--o4c9032klszf; 𞽀.𐹸🚖ฺ; [B1, V6]; xn--0n7h.xn--o4c9032klszf; ; ;  # .𐹸🚖ฺ
-Ⴔᠵ｡𐹧݇۹; Ⴔᠵ.𐹧݇۹; [B1, P1, V6]; xn--snd659a.xn--mmb9ml895e; ; ;  # Ⴔᠵ.𐹧݇۹
-Ⴔᠵ。𐹧݇۹; Ⴔᠵ.𐹧݇۹; [B1, P1, V6]; xn--snd659a.xn--mmb9ml895e; ; ;  # Ⴔᠵ.𐹧݇۹
-ⴔᠵ。𐹧݇۹; ⴔᠵ.𐹧݇۹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ;  # ⴔᠵ.𐹧݇۹
-xn--o7e997h.xn--mmb9ml895e; ⴔᠵ.𐹧݇۹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ;  # ⴔᠵ.𐹧݇۹
-xn--snd659a.xn--mmb9ml895e; Ⴔᠵ.𐹧݇۹; [B1, V6]; xn--snd659a.xn--mmb9ml895e; ; ;  # Ⴔᠵ.𐹧݇۹
-ⴔᠵ｡𐹧݇۹; ⴔᠵ.𐹧݇۹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ;  # ⴔᠵ.𐹧݇۹
-፟ᡈ‌．︒-𖾐-; ፟ᡈ‌.︒-𖾐-; [C1, P1, V3, V5, V6]; xn--b7d82wo4h.xn-----c82nz547a; ; xn--b7d82w.xn-----c82nz547a; [P1, V3, V5, V6] # ፟ᡈ.︒-𖾐-
-፟ᡈ‌.。-𖾐-; ፟ᡈ‌..-𖾐-; [C1, V3, V5, X4_2]; xn--b7d82wo4h..xn-----pe4u; [C1, V3, V5, A4_2]; xn--b7d82w..xn-----pe4u; [V3, V5, A4_2] # ፟ᡈ..-𖾐-
-xn--b7d82w..xn-----pe4u; ፟ᡈ..-𖾐-; [V3, V5, X4_2]; xn--b7d82w..xn-----pe4u; [V3, V5, A4_2]; ;  # ፟ᡈ..-𖾐-
-xn--b7d82wo4h..xn-----pe4u; ፟ᡈ‌..-𖾐-; [C1, V3, V5, X4_2]; xn--b7d82wo4h..xn-----pe4u; [C1, V3, V5, A4_2]; ;  # ፟ᡈ..-𖾐-
-xn--b7d82w.xn-----c82nz547a; ፟ᡈ.︒-𖾐-; [V3, V5, V6]; xn--b7d82w.xn-----c82nz547a; ; ;  # ፟ᡈ.︒-𖾐-
-xn--b7d82wo4h.xn-----c82nz547a; ፟ᡈ‌.︒-𖾐-; [C1, V3, V5, V6]; xn--b7d82wo4h.xn-----c82nz547a; ; ;  # ፟ᡈ.︒-𖾐-
-⒈؁⒖‌.ᷰߛ; ; [B1, C1, P1, V5, V6]; xn--jfb844kmfdwb.xn--2sb914i; ; xn--jfb347mib.xn--2sb914i; [B1, P1, V5, V6] # ⒈⒖.ᷰߛ
-1.؁15.‌.ᷰߛ; ; [B1, C1, P1, V5, V6]; 1.xn--15-1pd.xn--0ug.xn--2sb914i; ; 1.xn--15-1pd..xn--2sb914i; [B1, P1, V5, V6, A4_2] # 1.15..ᷰߛ
-1.xn--15-1pd..xn--2sb914i; 1.؁15..ᷰߛ; [B1, V5, V6, X4_2]; 1.xn--15-1pd..xn--2sb914i; [B1, V5, V6, A4_2]; ;  # 1.15..ᷰߛ
-1.xn--15-1pd.xn--0ug.xn--2sb914i; 1.؁15.‌.ᷰߛ; [B1, C1, V5, V6]; 1.xn--15-1pd.xn--0ug.xn--2sb914i; ; ;  # 1.15..ᷰߛ
-xn--jfb347mib.xn--2sb914i; ⒈؁⒖.ᷰߛ; [B1, V5, V6]; xn--jfb347mib.xn--2sb914i; ; ;  # ⒈⒖.ᷰߛ
-xn--jfb844kmfdwb.xn--2sb914i; ⒈؁⒖‌.ᷰߛ; [B1, C1, V5, V6]; xn--jfb844kmfdwb.xn--2sb914i; ; ;  # ⒈⒖.ᷰߛ
-𝩜。-୍Ⴋ; 𝩜.-୍Ⴋ; [P1, V3, V5, V6]; xn--792h.xn----bse632b; ; ;  # 𝩜.-୍Ⴋ
-𝩜。-୍ⴋ; 𝩜.-୍ⴋ; [V3, V5]; xn--792h.xn----bse820x; ; ;  # 𝩜.-୍ⴋ
-xn--792h.xn----bse820x; 𝩜.-୍ⴋ; [V3, V5]; xn--792h.xn----bse820x; ; ;  # 𝩜.-୍ⴋ
-xn--792h.xn----bse632b; 𝩜.-୍Ⴋ; [V3, V5, V6]; xn--792h.xn----bse632b; ; ;  # 𝩜.-୍Ⴋ
-ßჀ.ؠ刯Ⴝ; ; [B2, B3, P1, V6]; xn--zca442f.xn--fgb845cb66c; ; xn--ss-wgk.xn--fgb845cb66c;  # ßჀ.ؠ刯Ⴝ
-ßⴠ.ؠ刯ⴝ; ; [B2, B3]; xn--zca277t.xn--fgb670rovy; ; xn--ss-j81a.xn--fgb670rovy;  # ßⴠ.ؠ刯ⴝ
-SSჀ.ؠ刯Ⴝ; ssჀ.ؠ刯Ⴝ; [B2, B3, P1, V6]; xn--ss-wgk.xn--fgb845cb66c; ; ;  # ssჀ.ؠ刯Ⴝ
-ssⴠ.ؠ刯ⴝ; ; [B2, B3]; xn--ss-j81a.xn--fgb670rovy; ; ;  # ssⴠ.ؠ刯ⴝ
-Ssⴠ.ؠ刯Ⴝ; ssⴠ.ؠ刯Ⴝ; [B2, B3, P1, V6]; xn--ss-j81a.xn--fgb845cb66c; ; ;  # ssⴠ.ؠ刯Ⴝ
-xn--ss-j81a.xn--fgb845cb66c; ssⴠ.ؠ刯Ⴝ; [B2, B3, V6]; xn--ss-j81a.xn--fgb845cb66c; ; ;  # ssⴠ.ؠ刯Ⴝ
-xn--ss-j81a.xn--fgb670rovy; ssⴠ.ؠ刯ⴝ; [B2, B3]; xn--ss-j81a.xn--fgb670rovy; ; ;  # ssⴠ.ؠ刯ⴝ
-xn--ss-wgk.xn--fgb845cb66c; ssჀ.ؠ刯Ⴝ; [B2, B3, V6]; xn--ss-wgk.xn--fgb845cb66c; ; ;  # ssჀ.ؠ刯Ⴝ
-xn--zca277t.xn--fgb670rovy; ßⴠ.ؠ刯ⴝ; [B2, B3]; xn--zca277t.xn--fgb670rovy; ; ;  # ßⴠ.ؠ刯ⴝ
-xn--zca442f.xn--fgb845cb66c; ßჀ.ؠ刯Ⴝ; [B2, B3, V6]; xn--zca442f.xn--fgb845cb66c; ; ;  # ßჀ.ؠ刯Ⴝ
-᮪ႣℲ｡ᠳ툻ٳ; ᮪ႣℲ.ᠳ툻ٳ; [B5, B6, P1, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ;  # ᮪ႣℲ.ᠳ툻ٳ
-᮪ႣℲ｡ᠳ툻ٳ; ᮪ႣℲ.ᠳ툻ٳ; [B5, B6, P1, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ;  # ᮪ႣℲ.ᠳ툻ٳ
-᮪ႣℲ。ᠳ툻ٳ; ᮪ႣℲ.ᠳ툻ٳ; [B5, B6, P1, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ;  # ᮪ႣℲ.ᠳ툻ٳ
-᮪ႣℲ。ᠳ툻ٳ; ᮪ႣℲ.ᠳ툻ٳ; [B5, B6, P1, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ;  # ᮪ႣℲ.ᠳ툻ٳ
-᮪ⴃⅎ。ᠳ툻ٳ; ᮪ⴃⅎ.ᠳ툻ٳ; [B5, B6, V5]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
-᮪ⴃⅎ。ᠳ툻ٳ; ᮪ⴃⅎ.ᠳ툻ٳ; [B5, B6, V5]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
-᮪Ⴃⅎ。ᠳ툻ٳ; ᮪Ⴃⅎ.ᠳ툻ٳ; [B5, B6, P1, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ;  # ᮪Ⴃⅎ.ᠳ툻ٳ
-᮪Ⴃⅎ。ᠳ툻ٳ; ᮪Ⴃⅎ.ᠳ툻ٳ; [B5, B6, P1, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ;  # ᮪Ⴃⅎ.ᠳ툻ٳ
-xn--bnd957c2pe.xn--sib102gc69k; ᮪Ⴃⅎ.ᠳ툻ٳ; [B5, B6, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ;  # ᮪Ⴃⅎ.ᠳ툻ٳ
-xn--yxf24x4ol.xn--sib102gc69k; ᮪ⴃⅎ.ᠳ툻ٳ; [B5, B6, V5]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
-xn--bnd957cone.xn--sib102gc69k; ᮪ႣℲ.ᠳ툻ٳ; [B5, B6, V5, V6]; xn--bnd957cone.xn--sib102gc69k; ; ;  # ᮪ႣℲ.ᠳ툻ٳ
-᮪ⴃⅎ｡ᠳ툻ٳ; ᮪ⴃⅎ.ᠳ툻ٳ; [B5, B6, V5]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
-᮪ⴃⅎ｡ᠳ툻ٳ; ᮪ⴃⅎ.ᠳ툻ٳ; [B5, B6, V5]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
-᮪Ⴃⅎ｡ᠳ툻ٳ; ᮪Ⴃⅎ.ᠳ툻ٳ; [B5, B6, P1, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ;  # ᮪Ⴃⅎ.ᠳ툻ٳ
-᮪Ⴃⅎ｡ᠳ툻ٳ; ᮪Ⴃⅎ.ᠳ툻ٳ; [B5, B6, P1, V5, V6]; xn--bnd957c2pe.xn--sib102gc69k; ; ;  # ᮪Ⴃⅎ.ᠳ툻ٳ
-۬.ࢢ𐹫ټ; ; [B1, B3, B6, V5]; xn--8lb.xn--1ib31ily45b; ; ;  # ۬.ࢢ𐹫ټ
-xn--8lb.xn--1ib31ily45b; ۬.ࢢ𐹫ټ; [B1, B3, B6, V5]; xn--8lb.xn--1ib31ily45b; ; ;  # ۬.ࢢ𐹫ټ
-ڶ۟。₇꠆; ڶ۟.7꠆; [B1]; xn--pkb6f.xn--7-x93e; ; ;  # ڶ۟.7꠆
-ڶ۟。7꠆; ڶ۟.7꠆; [B1]; xn--pkb6f.xn--7-x93e; ; ;  # ڶ۟.7꠆
-xn--pkb6f.xn--7-x93e; ڶ۟.7꠆; [B1]; xn--pkb6f.xn--7-x93e; ; ;  # ڶ۟.7꠆
-ڶ۟.7꠆; ; [B1]; xn--pkb6f.xn--7-x93e; ; ;  # ڶ۟.7꠆
-Ⴣ𐹻.‌𝪣≮󠩉; ; [B1, B5, B6, C1, P1, V6]; xn--7nd8101k.xn--0ugy6gn120eb103g; ; xn--7nd8101k.xn--gdh4944ob3x3e; [B1, B5, B6, P1, V5, V6] # Ⴣ𐹻.𝪣≮
-Ⴣ𐹻.‌𝪣≮󠩉; Ⴣ𐹻.‌𝪣≮󠩉; [B1, B5, B6, C1, P1, V6]; xn--7nd8101k.xn--0ugy6gn120eb103g; ; xn--7nd8101k.xn--gdh4944ob3x3e; [B1, B5, B6, P1, V5, V6] # Ⴣ𐹻.𝪣≮
-ⴣ𐹻.‌𝪣≮󠩉; ⴣ𐹻.‌𝪣≮󠩉; [B1, B5, B6, C1, P1, V6]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; xn--rlj6323e.xn--gdh4944ob3x3e; [B1, B5, B6, P1, V5, V6] # ⴣ𐹻.𝪣≮
-ⴣ𐹻.‌𝪣≮󠩉; ; [B1, B5, B6, C1, P1, V6]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; xn--rlj6323e.xn--gdh4944ob3x3e; [B1, B5, B6, P1, V5, V6] # ⴣ𐹻.𝪣≮
-xn--rlj6323e.xn--gdh4944ob3x3e; ⴣ𐹻.𝪣≮󠩉; [B1, B5, B6, V5, V6]; xn--rlj6323e.xn--gdh4944ob3x3e; ; ;  # ⴣ𐹻.𝪣≮
-xn--rlj6323e.xn--0ugy6gn120eb103g; ⴣ𐹻.‌𝪣≮󠩉; [B1, B5, B6, C1, V6]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; ;  # ⴣ𐹻.𝪣≮
-xn--7nd8101k.xn--gdh4944ob3x3e; Ⴣ𐹻.𝪣≮󠩉; [B1, B5, B6, V5, V6]; xn--7nd8101k.xn--gdh4944ob3x3e; ; ;  # Ⴣ𐹻.𝪣≮
-xn--7nd8101k.xn--0ugy6gn120eb103g; Ⴣ𐹻.‌𝪣≮󠩉; [B1, B5, B6, C1, V6]; xn--7nd8101k.xn--0ugy6gn120eb103g; ; ;  # Ⴣ𐹻.𝪣≮
-𝟵隁⯮．᠍‌; 9隁⯮.‌; [C1]; xn--9-mfs8024b.xn--0ug; ; xn--9-mfs8024b.; [] # 9隁⯮.
-9隁⯮.᠍‌; 9隁⯮.‌; [C1]; xn--9-mfs8024b.xn--0ug; ; xn--9-mfs8024b.; [] # 9隁⯮.
-xn--9-mfs8024b.; 9隁⯮.; ; xn--9-mfs8024b.; ; ;  # 9隁⯮.
-9隁⯮.; ; ; xn--9-mfs8024b.; ; ;  # 9隁⯮.
-xn--9-mfs8024b.xn--0ug; 9隁⯮.‌; [C1]; xn--9-mfs8024b.xn--0ug; ; ;  # 9隁⯮.
-⒏𐹧｡Ⴣ྄彦; ⒏𐹧.Ⴣ྄彦; [B1, P1, V6]; xn--0sh2466f.xn--3ed15dt93o; ; ;  # ⒏𐹧.Ⴣ྄彦
-8.𐹧。Ⴣ྄彦; 8.𐹧.Ⴣ྄彦; [B1, P1, V6]; 8.xn--fo0d.xn--3ed15dt93o; ; ;  # 8.𐹧.Ⴣ྄彦
-8.𐹧。ⴣ྄彦; 8.𐹧.ⴣ྄彦; [B1]; 8.xn--fo0d.xn--3ed972m6o8a; ; ;  # 8.𐹧.ⴣ྄彦
-8.xn--fo0d.xn--3ed972m6o8a; 8.𐹧.ⴣ྄彦; [B1]; 8.xn--fo0d.xn--3ed972m6o8a; ; ;  # 8.𐹧.ⴣ྄彦
-8.xn--fo0d.xn--3ed15dt93o; 8.𐹧.Ⴣ྄彦; [B1, V6]; 8.xn--fo0d.xn--3ed15dt93o; ; ;  # 8.𐹧.Ⴣ྄彦
-⒏𐹧｡ⴣ྄彦; ⒏𐹧.ⴣ྄彦; [B1, P1, V6]; xn--0sh2466f.xn--3ed972m6o8a; ; ;  # ⒏𐹧.ⴣ྄彦
-xn--0sh2466f.xn--3ed972m6o8a; ⒏𐹧.ⴣ྄彦; [B1, V6]; xn--0sh2466f.xn--3ed972m6o8a; ; ;  # ⒏𐹧.ⴣ྄彦
-xn--0sh2466f.xn--3ed15dt93o; ⒏𐹧.Ⴣ྄彦; [B1, V6]; xn--0sh2466f.xn--3ed15dt93o; ; ;  # ⒏𐹧.Ⴣ྄彦
--问񬰔⒛。؄-񜗉橬; -问񬰔⒛.؄-񜗉橬; [B1, P1, V3, V6]; xn----hdpu849bhis3e.xn----ykc7228efm46d; ; ;  # -问⒛.-橬
--问񬰔20.。؄-񜗉橬; -问񬰔20..؄-񜗉橬; [B1, P1, V3, V6, X4_2]; xn---20-658jx1776d..xn----ykc7228efm46d; [B1, P1, V3, V6, A4_2]; ;  # -问20..-橬
-xn---20-658jx1776d..xn----ykc7228efm46d; -问񬰔20..؄-񜗉橬; [B1, V3, V6, X4_2]; xn---20-658jx1776d..xn----ykc7228efm46d; [B1, V3, V6, A4_2]; ;  # -问20..-橬
-xn----hdpu849bhis3e.xn----ykc7228efm46d; -问񬰔⒛.؄-񜗉橬; [B1, V3, V6]; xn----hdpu849bhis3e.xn----ykc7228efm46d; ; ;  # -问⒛.-橬
-ᮬႬ‌̥。𝟸; ᮬႬ‌̥.2; [C1, P1, V5, V6]; xn--mta930emribme.2; ; xn--mta930emri.2; [P1, V5, V6] # ᮬႬ̥.2
-ᮬႬ‌̥。2; ᮬႬ‌̥.2; [C1, P1, V5, V6]; xn--mta930emribme.2; ; xn--mta930emri.2; [P1, V5, V6] # ᮬႬ̥.2
-ᮬⴌ‌̥。2; ᮬⴌ‌̥.2; [C1, V5]; xn--mta176j97cl2q.2; ; xn--mta176jjjm.2; [V5] # ᮬⴌ̥.2
-xn--mta176jjjm.2; ᮬⴌ̥.2; [V5]; xn--mta176jjjm.2; ; ;  # ᮬⴌ̥.2
-xn--mta176j97cl2q.2; ᮬⴌ‌̥.2; [C1, V5]; xn--mta176j97cl2q.2; ; ;  # ᮬⴌ̥.2
-xn--mta930emri.2; ᮬႬ̥.2; [V5, V6]; xn--mta930emri.2; ; ;  # ᮬႬ̥.2
-xn--mta930emribme.2; ᮬႬ‌̥.2; [C1, V5, V6]; xn--mta930emribme.2; ; ;  # ᮬႬ̥.2
-ᮬⴌ‌̥。𝟸; ᮬⴌ‌̥.2; [C1, V5]; xn--mta176j97cl2q.2; ; xn--mta176jjjm.2; [V5] # ᮬⴌ̥.2
-?。꠆٩󠒩; ?.꠆٩󠒩; [B1, P1, V5, V6]; ?.xn--iib9583fusy0i; [B1, P1, V5, V6, A3]; ;  # .꠆٩
-?.xn--iib9583fusy0i; ?.꠆٩󠒩; [B1, P1, V5, V6]; ?.xn--iib9583fusy0i; [B1, P1, V5, V6, A3]; ;  # .꠆٩
-?.XN--IIB9583FUSY0I; ?.꠆٩󠒩; [B1, P1, V5, V6]; ?.xn--iib9583fusy0i; [B1, P1, V5, V6, A3]; ;  # .꠆٩
-?.Xn--Iib9583fusy0i; ?.꠆٩󠒩; [B1, P1, V5, V6]; ?.xn--iib9583fusy0i; [B1, P1, V5, V6, A3]; ;  # .꠆٩
-󠄁͟⾶｡₇︒눇≮; ͟飛.7︒눇≮; [P1, V5, V6]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ;  # ͟飛.7︒눇≮
-󠄁͟⾶｡₇︒눇≮; ͟飛.7︒눇≮; [P1, V5, V6]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ;  # ͟飛.7︒눇≮
-󠄁͟飛。7。눇≮; ͟飛.7.눇≮; [P1, V5, V6]; xn--9ua0567e.7.xn--gdh6767c; ; ;  # ͟飛.7.눇≮
-󠄁͟飛。7。눇≮; ͟飛.7.눇≮; [P1, V5, V6]; xn--9ua0567e.7.xn--gdh6767c; ; ;  # ͟飛.7.눇≮
-xn--9ua0567e.7.xn--gdh6767c; ͟飛.7.눇≮; [V5, V6]; xn--9ua0567e.7.xn--gdh6767c; ; ;  # ͟飛.7.눇≮
-xn--9ua0567e.xn--7-ngou006d1ttc; ͟飛.7︒눇≮; [V5, V6]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ;  # ͟飛.7︒눇≮
-‌︉𐹴‍．‌⿃; ‌𐹴‍.‌鳥; [B1, C1, C2]; xn--0ugc6024p.xn--0ug1920c; ; xn--so0d.xn--6x6a; [B1] # 𐹴.鳥
-‌︉𐹴‍.‌鳥; ‌𐹴‍.‌鳥; [B1, C1, C2]; xn--0ugc6024p.xn--0ug1920c; ; xn--so0d.xn--6x6a; [B1] # 𐹴.鳥
+xn--y77ao18q.xn--wdf367a; 𐫆ꌄ.\u200Dᣬ; [B1, B2, B3, C2]; xn--y77ao18q.xn--wdf367a; ; ;  # 𐫆ꌄ.ᣬ
+₀\u0662。󅪞≯-; 0\u0662.󅪞≯-; [B1, B6, V3, V7]; xn--0-dqc.xn----ogov3342l; ; ;  # 0٢.≯-
+₀\u0662。󅪞>\u0338-; 0\u0662.󅪞≯-; [B1, B6, V3, V7]; xn--0-dqc.xn----ogov3342l; ; ;  # 0٢.≯-
+0\u0662。󅪞≯-; 0\u0662.󅪞≯-; [B1, B6, V3, V7]; xn--0-dqc.xn----ogov3342l; ; ;  # 0٢.≯-
+0\u0662。󅪞>\u0338-; 0\u0662.󅪞≯-; [B1, B6, V3, V7]; xn--0-dqc.xn----ogov3342l; ; ;  # 0٢.≯-
+xn--0-dqc.xn----ogov3342l; 0\u0662.󅪞≯-; [B1, B6, V3, V7]; xn--0-dqc.xn----ogov3342l; ; ;  # 0٢.≯-
+\u031C𐹫-𞯃.𐋤\u0845; ; [B1, V6, V7]; xn----gdb7046r692g.xn--3vb1349j; ; ;  # ̜𐹫-.𐋤ࡅ
+xn----gdb7046r692g.xn--3vb1349j; \u031C𐹫-𞯃.𐋤\u0845; [B1, V6, V7]; xn----gdb7046r692g.xn--3vb1349j; ; ;  # ̜𐹫-.𐋤ࡅ
+≠｡𝩑𐹩Ⴡ\u0594; ≠.𝩑𐹩ⴡ\u0594; [B1, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
+=\u0338｡𝩑𐹩Ⴡ\u0594; ≠.𝩑𐹩ⴡ\u0594; [B1, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
+≠。𝩑𐹩Ⴡ\u0594; ≠.𝩑𐹩ⴡ\u0594; [B1, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
+=\u0338。𝩑𐹩Ⴡ\u0594; ≠.𝩑𐹩ⴡ\u0594; [B1, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
+=\u0338。𝩑𐹩ⴡ\u0594; ≠.𝩑𐹩ⴡ\u0594; [B1, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
+≠。𝩑𐹩ⴡ\u0594; ≠.𝩑𐹩ⴡ\u0594; [B1, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
+xn--1ch.xn--fcb363rk03mypug; ≠.𝩑𐹩ⴡ\u0594; [B1, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
+=\u0338｡𝩑𐹩ⴡ\u0594; ≠.𝩑𐹩ⴡ\u0594; [B1, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
+≠｡𝩑𐹩ⴡ\u0594; ≠.𝩑𐹩ⴡ\u0594; [B1, V6]; xn--1ch.xn--fcb363rk03mypug; ; ;  # ≠.𝩑𐹩ⴡ֔
+xn--1ch.xn--fcb538c649rypog; ≠.𝩑𐹩Ⴡ\u0594; [B1, V6, V7]; xn--1ch.xn--fcb538c649rypog; ; ;  # ≠.𝩑𐹩Ⴡ֔
+𖫳≠.Ⴀ𐮀; 𖫳≠.ⴀ𐮀; [B1, B5, B6, V6]; xn--1ch9250k.xn--rkj6232e; ; ;  # 𖫳≠.ⴀ𐮀
+𖫳=\u0338.Ⴀ𐮀; 𖫳≠.ⴀ𐮀; [B1, B5, B6, V6]; xn--1ch9250k.xn--rkj6232e; ; ;  # 𖫳≠.ⴀ𐮀
+𖫳=\u0338.ⴀ𐮀; 𖫳≠.ⴀ𐮀; [B1, B5, B6, V6]; xn--1ch9250k.xn--rkj6232e; ; ;  # 𖫳≠.ⴀ𐮀
+𖫳≠.ⴀ𐮀; ; [B1, B5, B6, V6]; xn--1ch9250k.xn--rkj6232e; ; ;  # 𖫳≠.ⴀ𐮀
+xn--1ch9250k.xn--rkj6232e; 𖫳≠.ⴀ𐮀; [B1, B5, B6, V6]; xn--1ch9250k.xn--rkj6232e; ; ;  # 𖫳≠.ⴀ𐮀
+xn--1ch9250k.xn--7md2659j; 𖫳≠.Ⴀ𐮀; [B1, B5, B6, V6, V7]; xn--1ch9250k.xn--7md2659j; ; ;  # 𖫳≠.Ⴀ𐮀
+󠅾\u0736\u0726．ᢚ閪\u08E2𝩟; \u0736\u0726.ᢚ閪\u08E2𝩟; [B1, B5, B6, V6, V7]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ;  # ܶܦ.ᢚ閪𝩟
+󠅾\u0736\u0726.ᢚ閪\u08E2𝩟; \u0736\u0726.ᢚ閪\u08E2𝩟; [B1, B5, B6, V6, V7]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ;  # ܶܦ.ᢚ閪𝩟
+xn--wnb5a.xn--l0b161fis8gbp5m; \u0736\u0726.ᢚ閪\u08E2𝩟; [B1, B5, B6, V6, V7]; xn--wnb5a.xn--l0b161fis8gbp5m; ; ;  # ܶܦ.ᢚ閪𝩟
+\u200D󠇜\u06CB\uA8E9｡\u20DD\u0FB0-ᛟ; \u200D\u06CB\uA8E9.\u20DD\u0FB0-ᛟ; [B1, C2, V6]; xn--blb540ke10h.xn----gmg236cj6k; ; xn--blb8114f.xn----gmg236cj6k; [B1, V6] # ۋ꣩.⃝ྰ-ᛟ
+\u200D󠇜\u06CB\uA8E9。\u20DD\u0FB0-ᛟ; \u200D\u06CB\uA8E9.\u20DD\u0FB0-ᛟ; [B1, C2, V6]; xn--blb540ke10h.xn----gmg236cj6k; ; xn--blb8114f.xn----gmg236cj6k; [B1, V6] # ۋ꣩.⃝ྰ-ᛟ
+xn--blb8114f.xn----gmg236cj6k; \u06CB\uA8E9.\u20DD\u0FB0-ᛟ; [B1, V6]; xn--blb8114f.xn----gmg236cj6k; ; ;  # ۋ꣩.⃝ྰ-ᛟ
+xn--blb540ke10h.xn----gmg236cj6k; \u200D\u06CB\uA8E9.\u20DD\u0FB0-ᛟ; [B1, C2, V6]; xn--blb540ke10h.xn----gmg236cj6k; ; ;  # ۋ꣩.⃝ྰ-ᛟ
+헁󘖙\u0E3A󚍚。\u06BA𝟜; 헁󘖙\u0E3A󚍚.\u06BA4; [V7]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ;  # 헁ฺ.ں4
+헁󘖙\u0E3A󚍚。\u06BA𝟜; 헁󘖙\u0E3A󚍚.\u06BA4; [V7]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ;  # 헁ฺ.ں4
+헁󘖙\u0E3A󚍚。\u06BA4; 헁󘖙\u0E3A󚍚.\u06BA4; [V7]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ;  # 헁ฺ.ں4
+헁󘖙\u0E3A󚍚。\u06BA4; 헁󘖙\u0E3A󚍚.\u06BA4; [V7]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ;  # 헁ฺ.ں4
+xn--o4c1723h8g85gt4ya.xn--4-dvc; 헁󘖙\u0E3A󚍚.\u06BA4; [V7]; xn--o4c1723h8g85gt4ya.xn--4-dvc; ; ;  # 헁ฺ.ں4
+𐹭｡󃱂\u200CႾ; 𐹭.󃱂\u200Cⴞ; [B1, C1, V7]; xn--lo0d.xn--0ugx72cwi33v; ; xn--lo0d.xn--mljx1099g; [B1, V7] # 𐹭.ⴞ
+𐹭。󃱂\u200CႾ; 𐹭.󃱂\u200Cⴞ; [B1, C1, V7]; xn--lo0d.xn--0ugx72cwi33v; ; xn--lo0d.xn--mljx1099g; [B1, V7] # 𐹭.ⴞ
+𐹭。󃱂\u200Cⴞ; 𐹭.󃱂\u200Cⴞ; [B1, C1, V7]; xn--lo0d.xn--0ugx72cwi33v; ; xn--lo0d.xn--mljx1099g; [B1, V7] # 𐹭.ⴞ
+xn--lo0d.xn--mljx1099g; 𐹭.󃱂ⴞ; [B1, V7]; xn--lo0d.xn--mljx1099g; ; ;  # 𐹭.ⴞ
+xn--lo0d.xn--0ugx72cwi33v; 𐹭.󃱂\u200Cⴞ; [B1, C1, V7]; xn--lo0d.xn--0ugx72cwi33v; ; ;  # 𐹭.ⴞ
+𐹭｡󃱂\u200Cⴞ; 𐹭.󃱂\u200Cⴞ; [B1, C1, V7]; xn--lo0d.xn--0ugx72cwi33v; ; xn--lo0d.xn--mljx1099g; [B1, V7] # 𐹭.ⴞ
+xn--lo0d.xn--2nd75260n; 𐹭.󃱂Ⴞ; [B1, V7]; xn--lo0d.xn--2nd75260n; ; ;  # 𐹭.Ⴞ
+xn--lo0d.xn--2nd949eqw95u; 𐹭.󃱂\u200CႾ; [B1, C1, V7]; xn--lo0d.xn--2nd949eqw95u; ; ;  # 𐹭.Ⴞ
+\uA953.\u033D𑂽馋; ; [V6, V7]; xn--3j9a.xn--bua0708eqzrd; ; ;  # ꥓.̽馋
+xn--3j9a.xn--bua0708eqzrd; \uA953.\u033D𑂽馋; [V6, V7]; xn--3j9a.xn--bua0708eqzrd; ; ;  # ꥓.̽馋
+󈫝򪛸\u200D｡䜖; 󈫝򪛸\u200D.䜖; [C2, V7]; xn--1ug30527h9mxi.xn--k0o; ; xn--g138cxw05a.xn--k0o; [V7] # .䜖
+󈫝򪛸\u200D。䜖; 󈫝򪛸\u200D.䜖; [C2, V7]; xn--1ug30527h9mxi.xn--k0o; ; xn--g138cxw05a.xn--k0o; [V7] # .䜖
+xn--g138cxw05a.xn--k0o; 󈫝򪛸.䜖; [V7]; xn--g138cxw05a.xn--k0o; ; ;  # .䜖
+xn--1ug30527h9mxi.xn--k0o; 󈫝򪛸\u200D.䜖; [C2, V7]; xn--1ug30527h9mxi.xn--k0o; ; ;  # .䜖
+ᡯ⚉姶🄉．۷\u200D🎪\u200D; ᡯ⚉姶8,.۷\u200D🎪\u200D; [C2, U1]; xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ; xn--8,-g9oy26fzu4d.xn--kmb6733w; [U1] # ᡯ⚉姶8,.۷🎪
+ᡯ⚉姶8,.۷\u200D🎪\u200D; ; [C2, U1]; xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ; xn--8,-g9oy26fzu4d.xn--kmb6733w; [U1] # ᡯ⚉姶8,.۷🎪
+xn--8,-g9oy26fzu4d.xn--kmb6733w; ᡯ⚉姶8,.۷🎪; [U1]; xn--8,-g9oy26fzu4d.xn--kmb6733w; ; ;  # ᡯ⚉姶8,.۷🎪
+xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ᡯ⚉姶8,.۷\u200D🎪\u200D; [C2, U1]; xn--8,-g9oy26fzu4d.xn--kmb859ja94998b; ; ;  # ᡯ⚉姶8,.۷🎪
+xn--c9e433epi4b3j20a.xn--kmb6733w; ᡯ⚉姶🄉.۷🎪; [V7]; xn--c9e433epi4b3j20a.xn--kmb6733w; ; ;  # ᡯ⚉姶🄉.۷🎪
+xn--c9e433epi4b3j20a.xn--kmb859ja94998b; ᡯ⚉姶🄉.۷\u200D🎪\u200D; [C2, V7]; xn--c9e433epi4b3j20a.xn--kmb859ja94998b; ; ;  # ᡯ⚉姶🄉.۷🎪
+𞽀.𐹸🚖\u0E3A; ; [B1, V7]; xn--0n7h.xn--o4c9032klszf; ; ;  # .𐹸🚖ฺ
+xn--0n7h.xn--o4c9032klszf; 𞽀.𐹸🚖\u0E3A; [B1, V7]; xn--0n7h.xn--o4c9032klszf; ; ;  # .𐹸🚖ฺ
+Ⴔᠵ｡𐹧\u0747۹; ⴔᠵ.𐹧\u0747۹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ;  # ⴔᠵ.𐹧݇۹
+Ⴔᠵ。𐹧\u0747۹; ⴔᠵ.𐹧\u0747۹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ;  # ⴔᠵ.𐹧݇۹
+ⴔᠵ。𐹧\u0747۹; ⴔᠵ.𐹧\u0747۹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ;  # ⴔᠵ.𐹧݇۹
+xn--o7e997h.xn--mmb9ml895e; ⴔᠵ.𐹧\u0747۹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ;  # ⴔᠵ.𐹧݇۹
+ⴔᠵ｡𐹧\u0747۹; ⴔᠵ.𐹧\u0747۹; [B1]; xn--o7e997h.xn--mmb9ml895e; ; ;  # ⴔᠵ.𐹧݇۹
+xn--snd659a.xn--mmb9ml895e; Ⴔᠵ.𐹧\u0747۹; [B1, V7]; xn--snd659a.xn--mmb9ml895e; ; ;  # Ⴔᠵ.𐹧݇۹
+\u135Fᡈ\u200C．︒-𖾐-; \u135Fᡈ\u200C.︒-𖾐-; [C1, V3, V6, V7]; xn--b7d82wo4h.xn-----c82nz547a; ; xn--b7d82w.xn-----c82nz547a; [V3, V6, V7] # ፟ᡈ.︒-𖾐-
+\u135Fᡈ\u200C.。-𖾐-; \u135Fᡈ\u200C..-𖾐-; [C1, V3, V6, X4_2]; xn--b7d82wo4h..xn-----pe4u; [C1, V3, V6, A4_2]; xn--b7d82w..xn-----pe4u; [V3, V6, A4_2] # ፟ᡈ..-𖾐-
+xn--b7d82w..xn-----pe4u; \u135Fᡈ..-𖾐-; [V3, V6, X4_2]; xn--b7d82w..xn-----pe4u; [V3, V6, A4_2]; ;  # ፟ᡈ..-𖾐-
+xn--b7d82wo4h..xn-----pe4u; \u135Fᡈ\u200C..-𖾐-; [C1, V3, V6, X4_2]; xn--b7d82wo4h..xn-----pe4u; [C1, V3, V6, A4_2]; ;  # ፟ᡈ..-𖾐-
+xn--b7d82w.xn-----c82nz547a; \u135Fᡈ.︒-𖾐-; [V3, V6, V7]; xn--b7d82w.xn-----c82nz547a; ; ;  # ፟ᡈ.︒-𖾐-
+xn--b7d82wo4h.xn-----c82nz547a; \u135Fᡈ\u200C.︒-𖾐-; [C1, V3, V6, V7]; xn--b7d82wo4h.xn-----c82nz547a; ; ;  # ፟ᡈ.︒-𖾐-
+⒈\u0601⒖\u200C.\u1DF0\u07DB; ; [B1, C1, V6, V7]; xn--jfb844kmfdwb.xn--2sb914i; ; xn--jfb347mib.xn--2sb914i; [B1, V6, V7] # ⒈⒖.ᷰߛ
+1.\u060115.\u200C.\u1DF0\u07DB; ; [B1, C1, V6, V7]; 1.xn--15-1pd.xn--0ug.xn--2sb914i; ; 1.xn--15-1pd..xn--2sb914i; [B1, V6, V7, A4_2] # 1.15..ᷰߛ
+1.xn--15-1pd..xn--2sb914i; 1.\u060115..\u1DF0\u07DB; [B1, V6, V7, X4_2]; 1.xn--15-1pd..xn--2sb914i; [B1, V6, V7, A4_2]; ;  # 1.15..ᷰߛ
+1.xn--15-1pd.xn--0ug.xn--2sb914i; 1.\u060115.\u200C.\u1DF0\u07DB; [B1, C1, V6, V7]; 1.xn--15-1pd.xn--0ug.xn--2sb914i; ; ;  # 1.15..ᷰߛ
+xn--jfb347mib.xn--2sb914i; ⒈\u0601⒖.\u1DF0\u07DB; [B1, V6, V7]; xn--jfb347mib.xn--2sb914i; ; ;  # ⒈⒖.ᷰߛ
+xn--jfb844kmfdwb.xn--2sb914i; ⒈\u0601⒖\u200C.\u1DF0\u07DB; [B1, C1, V6, V7]; xn--jfb844kmfdwb.xn--2sb914i; ; ;  # ⒈⒖.ᷰߛ
+𝩜。-\u0B4DႫ; 𝩜.-\u0B4Dⴋ; [V3, V6]; xn--792h.xn----bse820x; ; ;  # 𝩜.-୍ⴋ
+𝩜。-\u0B4Dⴋ; 𝩜.-\u0B4Dⴋ; [V3, V6]; xn--792h.xn----bse820x; ; ;  # 𝩜.-୍ⴋ
+xn--792h.xn----bse820x; 𝩜.-\u0B4Dⴋ; [V3, V6]; xn--792h.xn----bse820x; ; ;  # 𝩜.-୍ⴋ
+xn--792h.xn----bse632b; 𝩜.-\u0B4DႫ; [V3, V6, V7]; xn--792h.xn----bse632b; ; ;  # 𝩜.-୍Ⴋ
+ßჀ.\u0620刯Ⴝ; ßⴠ.\u0620刯ⴝ; [B2, B3]; xn--zca277t.xn--fgb670rovy; ; xn--ss-j81a.xn--fgb670rovy;  # ßⴠ.ؠ刯ⴝ
+ßⴠ.\u0620刯ⴝ; ; [B2, B3]; xn--zca277t.xn--fgb670rovy; ; xn--ss-j81a.xn--fgb670rovy;  # ßⴠ.ؠ刯ⴝ
+SSჀ.\u0620刯Ⴝ; ssⴠ.\u0620刯ⴝ; [B2, B3]; xn--ss-j81a.xn--fgb670rovy; ; ;  # ssⴠ.ؠ刯ⴝ
+ssⴠ.\u0620刯ⴝ; ; [B2, B3]; xn--ss-j81a.xn--fgb670rovy; ; ;  # ssⴠ.ؠ刯ⴝ
+Ssⴠ.\u0620刯Ⴝ; ssⴠ.\u0620刯ⴝ; [B2, B3]; xn--ss-j81a.xn--fgb670rovy; ; ;  # ssⴠ.ؠ刯ⴝ
+xn--ss-j81a.xn--fgb670rovy; ssⴠ.\u0620刯ⴝ; [B2, B3]; xn--ss-j81a.xn--fgb670rovy; ; ;  # ssⴠ.ؠ刯ⴝ
+xn--zca277t.xn--fgb670rovy; ßⴠ.\u0620刯ⴝ; [B2, B3]; xn--zca277t.xn--fgb670rovy; ; ;  # ßⴠ.ؠ刯ⴝ
+xn--ss-j81a.xn--fgb845cb66c; ssⴠ.\u0620刯Ⴝ; [B2, B3, V7]; xn--ss-j81a.xn--fgb845cb66c; ; ;  # ssⴠ.ؠ刯Ⴝ
+xn--ss-wgk.xn--fgb845cb66c; ssჀ.\u0620刯Ⴝ; [B2, B3, V7]; xn--ss-wgk.xn--fgb845cb66c; ; ;  # ssჀ.ؠ刯Ⴝ
+xn--zca442f.xn--fgb845cb66c; ßჀ.\u0620刯Ⴝ; [B2, B3, V7]; xn--zca442f.xn--fgb845cb66c; ; ;  # ßჀ.ؠ刯Ⴝ
+\u1BAAႣℲ｡ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAႣℲ｡ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAႣℲ。ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAႣℲ。ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAⴃⅎ。ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAⴃⅎ。ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAႣⅎ。ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAႣⅎ。ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+xn--yxf24x4ol.xn--sib102gc69k; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAⴃⅎ｡ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAⴃⅎ｡ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAႣⅎ｡ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+\u1BAAႣⅎ｡ᠳ툻\u0673; \u1BAAⴃⅎ.ᠳ툻\u0673; [B5, B6, V6]; xn--yxf24x4ol.xn--sib102gc69k; ; ;  # ᮪ⴃⅎ.ᠳ툻ٳ
+xn--bnd957c2pe.xn--sib102gc69k; \u1BAAႣⅎ.ᠳ툻\u0673; [B5, B6, V6, V7]; xn--bnd957c2pe.xn--sib102gc69k; ; ;  # ᮪Ⴃⅎ.ᠳ툻ٳ
+xn--bnd957cone.xn--sib102gc69k; \u1BAAႣℲ.ᠳ툻\u0673; [B5, B6, V6, V7]; xn--bnd957cone.xn--sib102gc69k; ; ;  # ᮪ႣℲ.ᠳ툻ٳ
+\u06EC.\u08A2𐹫\u067C; ; [B1, V6]; xn--8lb.xn--1ib31ily45b; ; ;  # ۬.ࢢ𐹫ټ
+xn--8lb.xn--1ib31ily45b; \u06EC.\u08A2𐹫\u067C; [B1, V6]; xn--8lb.xn--1ib31ily45b; ; ;  # ۬.ࢢ𐹫ټ
+\u06B6\u06DF。₇\uA806; \u06B6\u06DF.7\uA806; [B1]; xn--pkb6f.xn--7-x93e; ; ;  # ڶ۟.7꠆
+\u06B6\u06DF。7\uA806; \u06B6\u06DF.7\uA806; [B1]; xn--pkb6f.xn--7-x93e; ; ;  # ڶ۟.7꠆
+xn--pkb6f.xn--7-x93e; \u06B6\u06DF.7\uA806; [B1]; xn--pkb6f.xn--7-x93e; ; ;  # ڶ۟.7꠆
+\u06B6\u06DF.7\uA806; ; [B1]; xn--pkb6f.xn--7-x93e; ; ;  # ڶ۟.7꠆
+Ⴣ𐹻.\u200C𝪣≮󠩉; ⴣ𐹻.\u200C𝪣≮󠩉; [B1, B5, B6, C1, V7]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; xn--rlj6323e.xn--gdh4944ob3x3e; [B1, B5, B6, V6, V7] # ⴣ𐹻.𝪣≮
+Ⴣ𐹻.\u200C𝪣<\u0338󠩉; ⴣ𐹻.\u200C𝪣≮󠩉; [B1, B5, B6, C1, V7]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; xn--rlj6323e.xn--gdh4944ob3x3e; [B1, B5, B6, V6, V7] # ⴣ𐹻.𝪣≮
+ⴣ𐹻.\u200C𝪣<\u0338󠩉; ⴣ𐹻.\u200C𝪣≮󠩉; [B1, B5, B6, C1, V7]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; xn--rlj6323e.xn--gdh4944ob3x3e; [B1, B5, B6, V6, V7] # ⴣ𐹻.𝪣≮
+ⴣ𐹻.\u200C𝪣≮󠩉; ; [B1, B5, B6, C1, V7]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; xn--rlj6323e.xn--gdh4944ob3x3e; [B1, B5, B6, V6, V7] # ⴣ𐹻.𝪣≮
+xn--rlj6323e.xn--gdh4944ob3x3e; ⴣ𐹻.𝪣≮󠩉; [B1, B5, B6, V6, V7]; xn--rlj6323e.xn--gdh4944ob3x3e; ; ;  # ⴣ𐹻.𝪣≮
+xn--rlj6323e.xn--0ugy6gn120eb103g; ⴣ𐹻.\u200C𝪣≮󠩉; [B1, B5, B6, C1, V7]; xn--rlj6323e.xn--0ugy6gn120eb103g; ; ;  # ⴣ𐹻.𝪣≮
+xn--7nd8101k.xn--gdh4944ob3x3e; Ⴣ𐹻.𝪣≮󠩉; [B1, B5, B6, V6, V7]; xn--7nd8101k.xn--gdh4944ob3x3e; ; ;  # Ⴣ𐹻.𝪣≮
+xn--7nd8101k.xn--0ugy6gn120eb103g; Ⴣ𐹻.\u200C𝪣≮󠩉; [B1, B5, B6, C1, V7]; xn--7nd8101k.xn--0ugy6gn120eb103g; ; ;  # Ⴣ𐹻.𝪣≮
+𝟵隁⯮．\u180D\u200C; 9隁⯮.\u200C; [C1]; xn--9-mfs8024b.xn--0ug; ; xn--9-mfs8024b.; [A4_2] # 9隁⯮.
+9隁⯮.\u180D\u200C; 9隁⯮.\u200C; [C1]; xn--9-mfs8024b.xn--0ug; ; xn--9-mfs8024b.; [A4_2] # 9隁⯮.
+xn--9-mfs8024b.; 9隁⯮.; ; xn--9-mfs8024b.; [A4_2]; ;  # 9隁⯮.
+9隁⯮.; ; ; xn--9-mfs8024b.; [A4_2]; ;  # 9隁⯮.
+xn--9-mfs8024b.xn--0ug; 9隁⯮.\u200C; [C1]; xn--9-mfs8024b.xn--0ug; ; ;  # 9隁⯮.
+⒏𐹧｡Ⴣ\u0F84彦; ⒏𐹧.ⴣ\u0F84彦; [B1, V7]; xn--0sh2466f.xn--3ed972m6o8a; ; ;  # ⒏𐹧.ⴣ྄彦
+8.𐹧。Ⴣ\u0F84彦; 8.𐹧.ⴣ\u0F84彦; [B1]; 8.xn--fo0d.xn--3ed972m6o8a; ; ;  # 8.𐹧.ⴣ྄彦
+8.𐹧。ⴣ\u0F84彦; 8.𐹧.ⴣ\u0F84彦; [B1]; 8.xn--fo0d.xn--3ed972m6o8a; ; ;  # 8.𐹧.ⴣ྄彦
+8.xn--fo0d.xn--3ed972m6o8a; 8.𐹧.ⴣ\u0F84彦; [B1]; 8.xn--fo0d.xn--3ed972m6o8a; ; ;  # 8.𐹧.ⴣ྄彦
+⒏𐹧｡ⴣ\u0F84彦; ⒏𐹧.ⴣ\u0F84彦; [B1, V7]; xn--0sh2466f.xn--3ed972m6o8a; ; ;  # ⒏𐹧.ⴣ྄彦
+xn--0sh2466f.xn--3ed972m6o8a; ⒏𐹧.ⴣ\u0F84彦; [B1, V7]; xn--0sh2466f.xn--3ed972m6o8a; ; ;  # ⒏𐹧.ⴣ྄彦
+8.xn--fo0d.xn--3ed15dt93o; 8.𐹧.Ⴣ\u0F84彦; [B1, V7]; 8.xn--fo0d.xn--3ed15dt93o; ; ;  # 8.𐹧.Ⴣ྄彦
+xn--0sh2466f.xn--3ed15dt93o; ⒏𐹧.Ⴣ\u0F84彦; [B1, V7]; xn--0sh2466f.xn--3ed15dt93o; ; ;  # ⒏𐹧.Ⴣ྄彦
+-问񬰔⒛。\u0604-񜗉橬; -问񬰔⒛.\u0604-񜗉橬; [B1, V3, V7]; xn----hdpu849bhis3e.xn----ykc7228efm46d; ; ;  # -问⒛.-橬
+-问񬰔20.。\u0604-񜗉橬; -问񬰔20..\u0604-񜗉橬; [B1, V3, V7, X4_2]; xn---20-658jx1776d..xn----ykc7228efm46d; [B1, V3, V7, A4_2]; ;  # -问20..-橬
+xn---20-658jx1776d..xn----ykc7228efm46d; -问񬰔20..\u0604-񜗉橬; [B1, V3, V7, X4_2]; xn---20-658jx1776d..xn----ykc7228efm46d; [B1, V3, V7, A4_2]; ;  # -问20..-橬
+xn----hdpu849bhis3e.xn----ykc7228efm46d; -问񬰔⒛.\u0604-񜗉橬; [B1, V3, V7]; xn----hdpu849bhis3e.xn----ykc7228efm46d; ; ;  # -问⒛.-橬
+\u1BACႬ\u200C\u0325。𝟸; \u1BACⴌ\u200C\u0325.2; [C1, V6]; xn--mta176j97cl2q.2; ; xn--mta176jjjm.2; [V6] # ᮬⴌ̥.2
+\u1BACႬ\u200C\u0325。2; \u1BACⴌ\u200C\u0325.2; [C1, V6]; xn--mta176j97cl2q.2; ; xn--mta176jjjm.2; [V6] # ᮬⴌ̥.2
+\u1BACⴌ\u200C\u0325。2; \u1BACⴌ\u200C\u0325.2; [C1, V6]; xn--mta176j97cl2q.2; ; xn--mta176jjjm.2; [V6] # ᮬⴌ̥.2
+xn--mta176jjjm.c; \u1BACⴌ\u0325.c; [V6]; xn--mta176jjjm.c; ; ;  # ᮬⴌ̥.c
+xn--mta176j97cl2q.c; \u1BACⴌ\u200C\u0325.c; [C1, V6]; xn--mta176j97cl2q.c; ; ;  # ᮬⴌ̥.c
+\u1BACⴌ\u200C\u0325。𝟸; \u1BACⴌ\u200C\u0325.2; [C1, V6]; xn--mta176j97cl2q.2; ; xn--mta176jjjm.2; [V6] # ᮬⴌ̥.2
+xn--mta930emri.c; \u1BACႬ\u0325.c; [V6, V7]; xn--mta930emri.c; ; ;  # ᮬႬ̥.c
+xn--mta930emribme.c; \u1BACႬ\u200C\u0325.c; [C1, V6, V7]; xn--mta930emribme.c; ; ;  # ᮬႬ̥.c
+?。\uA806\u0669󠒩; ?.\uA806\u0669󠒩; [B1, V6, V7, U1]; ?.xn--iib9583fusy0i; ; ;  # ?.꠆٩
+?.xn--iib9583fusy0i; ?.\uA806\u0669󠒩; [B1, V6, V7, U1]; ?.xn--iib9583fusy0i; ; ;  # ?.꠆٩
+󠄁\u035F⾶｡₇︒눇≮; \u035F飛.7︒눇≮; [V6, V7]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ;  # ͟飛.7︒눇≮
+󠄁\u035F⾶｡₇︒눇<\u0338; \u035F飛.7︒눇≮; [V6, V7]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ;  # ͟飛.7︒눇≮
+󠄁\u035F飛。7。눇≮; \u035F飛.7.눇≮; [V6]; xn--9ua0567e.7.xn--gdh6767c; ; ;  # ͟飛.7.눇≮
+󠄁\u035F飛。7。눇<\u0338; \u035F飛.7.눇≮; [V6]; xn--9ua0567e.7.xn--gdh6767c; ; ;  # ͟飛.7.눇≮
+xn--9ua0567e.7.xn--gdh6767c; \u035F飛.7.눇≮; [V6]; xn--9ua0567e.7.xn--gdh6767c; ; ;  # ͟飛.7.눇≮
+xn--9ua0567e.xn--7-ngou006d1ttc; \u035F飛.7︒눇≮; [V6, V7]; xn--9ua0567e.xn--7-ngou006d1ttc; ; ;  # ͟飛.7︒눇≮
+\u200C\uFE09𐹴\u200D．\u200C⿃; \u200C𐹴\u200D.\u200C鳥; [B1, C1, C2]; xn--0ugc6024p.xn--0ug1920c; ; xn--so0d.xn--6x6a; [B1] # 𐹴.鳥
+\u200C\uFE09𐹴\u200D.\u200C鳥; \u200C𐹴\u200D.\u200C鳥; [B1, C1, C2]; xn--0ugc6024p.xn--0ug1920c; ; xn--so0d.xn--6x6a; [B1] # 𐹴.鳥
 xn--so0d.xn--6x6a; 𐹴.鳥; [B1]; xn--so0d.xn--6x6a; ; ;  # 𐹴.鳥
-xn--0ugc6024p.xn--0ug1920c; ‌𐹴‍.‌鳥; [B1, C1, C2]; xn--0ugc6024p.xn--0ug1920c; ; ;  # 𐹴.鳥
-🍮．‍󠗒𐦁𝨝; 🍮.‍󠗒𐦁𝨝; [B1, C2, P1, V6]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; xn--lj8h.xn--ln9ci476aqmr2g; [B1, P1, V6] # 🍮.𐦁𝨝
-🍮.‍󠗒𐦁𝨝; ; [B1, C2, P1, V6]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; xn--lj8h.xn--ln9ci476aqmr2g; [B1, P1, V6] # 🍮.𐦁𝨝
-xn--lj8h.xn--ln9ci476aqmr2g; 🍮.󠗒𐦁𝨝; [B1, V6]; xn--lj8h.xn--ln9ci476aqmr2g; ; ;  # 🍮.𐦁𝨝
-xn--lj8h.xn--1ug6603gr1pfwq37h; 🍮.‍󠗒𐦁𝨝; [B1, C2, V6]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; ;  # 🍮.𐦁𝨝
-ٽृ.𞤓‍; ٽृ.𞤵‍; [B3, C2]; xn--2ib43l.xn--1ugy711p; ; xn--2ib43l.xn--te6h; [] # ٽृ.𞤵
-ٽृ.𞤵‍; ; [B3, C2]; xn--2ib43l.xn--1ugy711p; ; xn--2ib43l.xn--te6h; [] # ٽृ.𞤵
-xn--2ib43l.xn--te6h; ٽृ.𞤵; ; xn--2ib43l.xn--te6h; ; ;  # ٽृ.𞤵
-ٽृ.𞤵; ; ; xn--2ib43l.xn--te6h; ; ;  # ٽृ.𞤵
-ٽृ.𞤓; ٽृ.𞤵; ; xn--2ib43l.xn--te6h; ; ;  # ٽृ.𞤵
-xn--2ib43l.xn--1ugy711p; ٽृ.𞤵‍; [B3, C2]; xn--2ib43l.xn--1ugy711p; ; ;  # ٽृ.𞤵
-٤੍-．󥜽္񦦐; ٤੍-.󥜽္񦦐; [B1, P1, V3, V6]; xn----gqc711a.xn--9jd88234f3qm0b; ; ;  # ٤੍-.္
-٤੍-.󥜽္񦦐; ; [B1, P1, V3, V6]; xn----gqc711a.xn--9jd88234f3qm0b; ; ;  # ٤੍-.္
-xn----gqc711a.xn--9jd88234f3qm0b; ٤੍-.󥜽္񦦐; [B1, V3, V6]; xn----gqc711a.xn--9jd88234f3qm0b; ; ;  # ٤੍-.္
-4်-𐹸｡ꨩ‌𐹴≮; 4်-𐹸.ꨩ‌𐹴≮; [B1, C1, P1, V5, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, P1, V5, V6] # 4်-𐹸.ꨩ𐹴≮
-4်-𐹸｡ꨩ‌𐹴≮; 4်-𐹸.ꨩ‌𐹴≮; [B1, C1, P1, V5, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, P1, V5, V6] # 4်-𐹸.ꨩ𐹴≮
-4်-𐹸。ꨩ‌𐹴≮; 4်-𐹸.ꨩ‌𐹴≮; [B1, C1, P1, V5, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, P1, V5, V6] # 4်-𐹸.ꨩ𐹴≮
-4်-𐹸。ꨩ‌𐹴≮; 4်-𐹸.ꨩ‌𐹴≮; [B1, C1, P1, V5, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, P1, V5, V6] # 4်-𐹸.ꨩ𐹴≮
-xn--4--e4j7831r.xn--gdh8754cz40c; 4်-𐹸.ꨩ𐹴≮; [B1, V5, V6]; xn--4--e4j7831r.xn--gdh8754cz40c; ; ;  # 4်-𐹸.ꨩ𐹴≮
-xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; 4်-𐹸.ꨩ‌𐹴≮; [B1, C1, V5, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; ;  # 4်-𐹸.ꨩ𐹴≮
-‌。ﾠ྄ྖ; ‌.ﾠ྄ྖ; [C1, P1, V6]; xn--0ug.xn--3ed0by082k; ; .xn--3ed0by082k; [P1, V6, A4_2] # .྄ྖ
-‌。ᅠ྄ྖ; ‌.ᅠ྄ྖ; [C1, P1, V6]; xn--0ug.xn--3ed0b20h; ; .xn--3ed0b20h; [P1, V6, A4_2] # .྄ྖ
-.xn--3ed0b20h; .ᅠ྄ྖ; [V6, X4_2]; .xn--3ed0b20h; [V6, A4_2]; ;  # .྄ྖ
-xn--0ug.xn--3ed0b20h; ‌.ᅠ྄ྖ; [C1, V6]; xn--0ug.xn--3ed0b20h; ; ;  # .྄ྖ
-.xn--3ed0by082k; .ﾠ྄ྖ; [V6, X4_2]; .xn--3ed0by082k; [V6, A4_2]; ;  # .྄ྖ
-xn--0ug.xn--3ed0by082k; ‌.ﾠ྄ྖ; [C1, V6]; xn--0ug.xn--3ed0by082k; ; ;  # .྄ྖ
-≯򍘅．‍𐅼򲇛; ≯򍘅.‍𐅼򲇛; [C2, P1, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [P1, V6] # ≯.𐅼
-≯򍘅．‍𐅼򲇛; ≯򍘅.‍𐅼򲇛; [C2, P1, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [P1, V6] # ≯.𐅼
-≯򍘅.‍𐅼򲇛; ; [C2, P1, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [P1, V6] # ≯.𐅼
-≯򍘅.‍𐅼򲇛; ≯򍘅.‍𐅼򲇛; [C2, P1, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [P1, V6] # ≯.𐅼
-xn--hdh84488f.xn--xy7cw2886b; ≯򍘅.𐅼򲇛; [V6]; xn--hdh84488f.xn--xy7cw2886b; ; ;  # ≯.𐅼
-xn--hdh84488f.xn--1ug8099fbjp4e; ≯򍘅.‍𐅼򲇛; [C2, V6]; xn--hdh84488f.xn--1ug8099fbjp4e; ; ;  # ≯.𐅼
-فß𐰯｡𝟕𐫫; فß𐰯.7𐫫; [B1, B2]; xn--zca96ys96y.xn--7-mm5i; ; xn--ss-jvd2339x.xn--7-mm5i;  # فß𐰯.7𐫫
-فß𐰯。7𐫫; فß𐰯.7𐫫; [B1, B2]; xn--zca96ys96y.xn--7-mm5i; ; xn--ss-jvd2339x.xn--7-mm5i;  # فß𐰯.7𐫫
-فSS𐰯。7𐫫; فss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
-فss𐰯。7𐫫; فss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
-xn--ss-jvd2339x.xn--7-mm5i; فss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
-xn--zca96ys96y.xn--7-mm5i; فß𐰯.7𐫫; [B1, B2]; xn--zca96ys96y.xn--7-mm5i; ; ;  # فß𐰯.7𐫫
-فSS𐰯｡𝟕𐫫; فss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
-فss𐰯｡𝟕𐫫; فss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
-فSs𐰯。7𐫫; فss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
-فSs𐰯｡𝟕𐫫; فss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
-ßެާࢱ。𐭁􅮙𐹲; ßެާࢱ.𐭁􅮙𐹲; [B2, B5, B6, P1, V6]; xn--zca685aoa95h.xn--e09co8cr9861c; ; xn--ss-9qet02k.xn--e09co8cr9861c;  # ßެާࢱ.𐭁𐹲
-SSެާࢱ。𐭁􅮙𐹲; ssެާࢱ.𐭁􅮙𐹲; [B2, B5, B6, P1, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ;  # ssެާࢱ.𐭁𐹲
-ssެާࢱ。𐭁􅮙𐹲; ssެާࢱ.𐭁􅮙𐹲; [B2, B5, B6, P1, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ;  # ssެާࢱ.𐭁𐹲
-Ssެާࢱ。𐭁􅮙𐹲; ssެާࢱ.𐭁􅮙𐹲; [B2, B5, B6, P1, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ;  # ssެާࢱ.𐭁𐹲
-xn--ss-9qet02k.xn--e09co8cr9861c; ssެާࢱ.𐭁􅮙𐹲; [B2, B5, B6, V6]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ;  # ssެާࢱ.𐭁𐹲
-xn--zca685aoa95h.xn--e09co8cr9861c; ßެާࢱ.𐭁􅮙𐹲; [B2, B5, B6, V6]; xn--zca685aoa95h.xn--e09co8cr9861c; ; ;  # ßެާࢱ.𐭁𐹲
--｡󠉗⒌𞯛; -.󠉗⒌𞯛; [B1, P1, V3, V6]; -.xn--xsh6367n1bi3e; ; ;  # -.⒌
--。󠉗5.𞯛; -.󠉗5.𞯛; [B1, P1, V3, V6]; -.xn--5-zz21m.xn--6x6h; ; ;  # -.5.
--.xn--5-zz21m.xn--6x6h; -.󠉗5.𞯛; [B1, V3, V6]; -.xn--5-zz21m.xn--6x6h; ; ;  # -.5.
--.xn--xsh6367n1bi3e; -.󠉗⒌𞯛; [B1, V3, V6]; -.xn--xsh6367n1bi3e; ; ;  # -.⒌
-𼎏ς．-≮ﲫ; 𼎏ς.-≮خج; [B1, P1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a;  # ς.-≮خج
-𼎏ς．-≮ﲫ; 𼎏ς.-≮خج; [B1, P1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a;  # ς.-≮خج
-𼎏ς.-≮خج; ; [B1, P1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a;  # ς.-≮خج
-𼎏ς.-≮خج; 𼎏ς.-≮خج; [B1, P1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a;  # ς.-≮خج
-𼎏Σ.-≮خج; 𼎏σ.-≮خج; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
-𼎏Σ.-≮خج; 𼎏σ.-≮خج; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
-𼎏σ.-≮خج; ; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
-𼎏σ.-≮خج; 𼎏σ.-≮خج; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
-xn--4xa92520c.xn----9mcf1400a; 𼎏σ.-≮خج; [B1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
-xn--3xa13520c.xn----9mcf1400a; 𼎏ς.-≮خج; [B1, V3, V6]; xn--3xa13520c.xn----9mcf1400a; ; ;  # ς.-≮خج
-𼎏Σ．-≮ﲫ; 𼎏σ.-≮خج; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
-𼎏Σ．-≮ﲫ; 𼎏σ.-≮خج; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
-𼎏σ．-≮ﲫ; 𼎏σ.-≮خج; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
-𼎏σ．-≮ﲫ; 𼎏σ.-≮خج; [B1, P1, V3, V6]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
-ꡗࢸܙ．񔤔󠛙్ﰾ; ꡗࢸܙ.񔤔󠛙్كي; [B5, B6, P1, V6]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ;  # ꡗࢸܙ.్كي
-ꡗࢸܙ.񔤔󠛙్كي; ; [B5, B6, P1, V6]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ;  # ꡗࢸܙ.్كي
-xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ꡗࢸܙ.񔤔󠛙్كي; [B5, B6, V6]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ;  # ꡗࢸܙ.్كي
-𐠰ࢷ𞤌𐫭。𐋦៍𝩃; 𐠰ࢷ𞤮𐫭.𐋦៍𝩃; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ;  # 𐠰ࢷ𞤮𐫭.𐋦៍𝩃
-𐠰ࢷ𞤮𐫭。𐋦៍𝩃; 𐠰ࢷ𞤮𐫭.𐋦៍𝩃; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ;  # 𐠰ࢷ𞤮𐫭.𐋦៍𝩃
-xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; 𐠰ࢷ𞤮𐫭.𐋦៍𝩃; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ;  # 𐠰ࢷ𞤮𐫭.𐋦៍𝩃
-𐠰ࢷ𞤮𐫭.𐋦៍𝩃; ; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ;  # 𐠰ࢷ𞤮𐫭.𐋦៍𝩃
-𐠰ࢷ𞤌𐫭.𐋦៍𝩃; 𐠰ࢷ𞤮𐫭.𐋦៍𝩃; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ;  # 𐠰ࢷ𞤮𐫭.𐋦៍𝩃
-₂㘷--。ۓ‌𐫆𑖿; 2㘷--.ۓ‌𐫆𑖿; [B1, C1, V2, V3]; xn--2---u58b.xn--jlb820ku99nbgj; ; xn--2---u58b.xn--jlb8024k14g; [B1, V2, V3] # 2㘷--.ۓ𐫆𑖿
-₂㘷--。ۓ‌𐫆𑖿; 2㘷--.ۓ‌𐫆𑖿; [B1, C1, V2, V3]; xn--2---u58b.xn--jlb820ku99nbgj; ; xn--2---u58b.xn--jlb8024k14g; [B1, V2, V3] # 2㘷--.ۓ𐫆𑖿
-2㘷--。ۓ‌𐫆𑖿; 2㘷--.ۓ‌𐫆𑖿; [B1, C1, V2, V3]; xn--2---u58b.xn--jlb820ku99nbgj; ; xn--2---u58b.xn--jlb8024k14g; [B1, V2, V3] # 2㘷--.ۓ𐫆𑖿
-2㘷--。ۓ‌𐫆𑖿; 2㘷--.ۓ‌𐫆𑖿; [B1, C1, V2, V3]; xn--2---u58b.xn--jlb820ku99nbgj; ; xn--2---u58b.xn--jlb8024k14g; [B1, V2, V3] # 2㘷--.ۓ𐫆𑖿
-xn--2---u58b.xn--jlb8024k14g; 2㘷--.ۓ𐫆𑖿; [B1, V2, V3]; xn--2---u58b.xn--jlb8024k14g; ; ;  # 2㘷--.ۓ𐫆𑖿
-xn--2---u58b.xn--jlb820ku99nbgj; 2㘷--.ۓ‌𐫆𑖿; [B1, C1, V2, V3]; xn--2---u58b.xn--jlb820ku99nbgj; ; ;  # 2㘷--.ۓ𐫆𑖿
--𘊻．ᡮح-; -𘊻.ᡮح-; [B1, B5, B6, V3]; xn----bp5n.xn----bnc231l; ; ;  # -𘊻.ᡮح-
--𘊻.ᡮح-; ; [B1, B5, B6, V3]; xn----bp5n.xn----bnc231l; ; ;  # -𘊻.ᡮح-
-xn----bp5n.xn----bnc231l; -𘊻.ᡮح-; [B1, B5, B6, V3]; xn----bp5n.xn----bnc231l; ; ;  # -𘊻.ᡮح-
-‌-ß｡ᢣ𐹭ؿ; ‌-ß.ᢣ𐹭ؿ; [B1, B5, B6, C1]; xn----qfa550v.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ß.ᢣ𐹭ؿ
-‌-ß。ᢣ𐹭ؿ; ‌-ß.ᢣ𐹭ؿ; [B1, B5, B6, C1]; xn----qfa550v.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ß.ᢣ𐹭ؿ
-‌-SS。ᢣ𐹭ؿ; ‌-ss.ᢣ𐹭ؿ; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
-‌-ss。ᢣ𐹭ؿ; ‌-ss.ᢣ𐹭ؿ; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
-‌-Ss。ᢣ𐹭ؿ; ‌-ss.ᢣ𐹭ؿ; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
--ss.xn--bhb925glx3p; -ss.ᢣ𐹭ؿ; [B1, B5, B6, V3]; -ss.xn--bhb925glx3p; ; ;  # -ss.ᢣ𐹭ؿ
-xn---ss-8m0a.xn--bhb925glx3p; ‌-ss.ᢣ𐹭ؿ; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; ;  # -ss.ᢣ𐹭ؿ
-xn----qfa550v.xn--bhb925glx3p; ‌-ß.ᢣ𐹭ؿ; [B1, B5, B6, C1]; xn----qfa550v.xn--bhb925glx3p; ; ;  # -ß.ᢣ𐹭ؿ
-‌-SS｡ᢣ𐹭ؿ; ‌-ss.ᢣ𐹭ؿ; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
-‌-ss｡ᢣ𐹭ؿ; ‌-ss.ᢣ𐹭ؿ; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
-‌-Ss｡ᢣ𐹭ؿ; ‌-ss.ᢣ𐹭ؿ; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
-꧐Ӏ᮪ࣶ．눵; ꧐Ӏ᮪ࣶ.눵; [P1, V6]; xn--d5a07sn4u297k.xn--2e1b; ; ;  # ꧐Ӏ᮪ࣶ.눵
-꧐Ӏ᮪ࣶ．눵; ꧐Ӏ᮪ࣶ.눵; [P1, V6]; xn--d5a07sn4u297k.xn--2e1b; ; ;  # ꧐Ӏ᮪ࣶ.눵
-꧐Ӏ᮪ࣶ.눵; ; [P1, V6]; xn--d5a07sn4u297k.xn--2e1b; ; ;  # ꧐Ӏ᮪ࣶ.눵
-꧐Ӏ᮪ࣶ.눵; ꧐Ӏ᮪ࣶ.눵; [P1, V6]; xn--d5a07sn4u297k.xn--2e1b; ; ;  # ꧐Ӏ᮪ࣶ.눵
-꧐ӏ᮪ࣶ.눵; ꧐ӏ᮪ࣶ.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
-꧐ӏ᮪ࣶ.눵; ; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
-xn--s5a04sn4u297k.xn--2e1b; ꧐ӏ᮪ࣶ.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
-xn--d5a07sn4u297k.xn--2e1b; ꧐Ӏ᮪ࣶ.눵; [V6]; xn--d5a07sn4u297k.xn--2e1b; ; ;  # ꧐Ӏ᮪ࣶ.눵
-꧐ӏ᮪ࣶ．눵; ꧐ӏ᮪ࣶ.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
-꧐ӏ᮪ࣶ．눵; ꧐ӏ᮪ࣶ.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
-꣪｡𖄿𑆾󠇗; ꣪.𖄿𑆾; [P1, V5, V6]; xn--3g9a.xn--ud1dz07k; ; ;  # ꣪.𑆾
-꣪。𖄿𑆾󠇗; ꣪.𖄿𑆾; [P1, V5, V6]; xn--3g9a.xn--ud1dz07k; ; ;  # ꣪.𑆾
-xn--3g9a.xn--ud1dz07k; ꣪.𖄿𑆾; [V5, V6]; xn--3g9a.xn--ud1dz07k; ; ;  # ꣪.𑆾
-󇓓𑚳。񐷿≯⾇; 󇓓𑚳.񐷿≯舛; [P1, V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ;  # 𑚳.≯舛
-󇓓𑚳。񐷿≯⾇; 󇓓𑚳.񐷿≯舛; [P1, V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ;  # 𑚳.≯舛
-󇓓𑚳。񐷿≯舛; 󇓓𑚳.񐷿≯舛; [P1, V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ;  # 𑚳.≯舛
-󇓓𑚳。񐷿≯舛; 󇓓𑚳.񐷿≯舛; [P1, V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ;  # 𑚳.≯舛
-xn--3e2d79770c.xn--hdh0088abyy1c; 󇓓𑚳.񐷿≯舛; [V6]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ;  # 𑚳.≯舛
-𐫇١‌．‍‌; 𐫇١‌.‍‌; [B1, B3, C1, C2]; xn--9hb652kv99n.xn--0ugb; ; xn--9hb7344k.; [] # 𐫇١.
-𐫇١‌.‍‌; ; [B1, B3, C1, C2]; xn--9hb652kv99n.xn--0ugb; ; xn--9hb7344k.; [] # 𐫇١.
-xn--9hb7344k.; 𐫇١.; ; xn--9hb7344k.; ; ;  # 𐫇١.
-𐫇١.; ; ; xn--9hb7344k.; ; ;  # 𐫇١.
-xn--9hb652kv99n.xn--0ugb; 𐫇١‌.‍‌; [B1, B3, C1, C2]; xn--9hb652kv99n.xn--0ugb; ; ;  # 𐫇١.
-񡅈砪≯ᢑ｡≯𝩚򓴔‌; 񡅈砪≯ᢑ.≯𝩚򓴔‌; [C1, P1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [P1, V6] # 砪≯ᢑ.≯𝩚
-񡅈砪≯ᢑ｡≯𝩚򓴔‌; 񡅈砪≯ᢑ.≯𝩚򓴔‌; [C1, P1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [P1, V6] # 砪≯ᢑ.≯𝩚
-񡅈砪≯ᢑ。≯𝩚򓴔‌; 񡅈砪≯ᢑ.≯𝩚򓴔‌; [C1, P1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [P1, V6] # 砪≯ᢑ.≯𝩚
-񡅈砪≯ᢑ。≯𝩚򓴔‌; 񡅈砪≯ᢑ.≯𝩚򓴔‌; [C1, P1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [P1, V6] # 砪≯ᢑ.≯𝩚
-xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; 񡅈砪≯ᢑ.≯𝩚򓴔; [V6]; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; ; ;  # 砪≯ᢑ.≯𝩚
-xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; 񡅈砪≯ᢑ.≯𝩚򓴔‌; [C1, V6]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; ;  # 砪≯ᢑ.≯𝩚
-Ⴥ.𑄳㊸; Ⴥ.𑄳43; [P1, V5, V6]; xn--9nd.xn--43-274o; ; ;  # Ⴥ.𑄳43
-Ⴥ.𑄳43; ; [P1, V5, V6]; xn--9nd.xn--43-274o; ; ;  # Ⴥ.𑄳43
-ⴥ.𑄳43; ; [V5]; xn--tlj.xn--43-274o; ; ;  # ⴥ.𑄳43
-xn--tlj.xn--43-274o; ⴥ.𑄳43; [V5]; xn--tlj.xn--43-274o; ; ;  # ⴥ.𑄳43
-xn--9nd.xn--43-274o; Ⴥ.𑄳43; [V5, V6]; xn--9nd.xn--43-274o; ; ;  # Ⴥ.𑄳43
-ⴥ.𑄳㊸; ⴥ.𑄳43; [V5]; xn--tlj.xn--43-274o; ; ;  # ⴥ.𑄳43
-𝟎٣。Ⴒᡇࣲ𐹠; 0٣.Ⴒᡇࣲ𐹠; [B1, B5, B6, P1, V6]; xn--0-fqc.xn--10b180bnwgfy0z; ; ;  # 0٣.Ⴒᡇࣲ𐹠
-0٣。Ⴒᡇࣲ𐹠; 0٣.Ⴒᡇࣲ𐹠; [B1, B5, B6, P1, V6]; xn--0-fqc.xn--10b180bnwgfy0z; ; ;  # 0٣.Ⴒᡇࣲ𐹠
-0٣。ⴒᡇࣲ𐹠; 0٣.ⴒᡇࣲ𐹠; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ;  # 0٣.ⴒᡇࣲ𐹠
-xn--0-fqc.xn--10b369eivp359r; 0٣.ⴒᡇࣲ𐹠; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ;  # 0٣.ⴒᡇࣲ𐹠
-xn--0-fqc.xn--10b180bnwgfy0z; 0٣.Ⴒᡇࣲ𐹠; [B1, B5, B6, V6]; xn--0-fqc.xn--10b180bnwgfy0z; ; ;  # 0٣.Ⴒᡇࣲ𐹠
-𝟎٣。ⴒᡇࣲ𐹠; 0٣.ⴒᡇࣲ𐹠; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ;  # 0٣.ⴒᡇࣲ𐹠
-񗪨󠄉ﾠྷ.񸞰꥓; 񗪨ﾠྷ.񸞰꥓; [P1, V6]; xn--kgd7493jee34a.xn--3j9au7544a; ; ;  # ྷ.꥓
-񗪨󠄉ᅠྷ.񸞰꥓; 񗪨ᅠྷ.񸞰꥓; [P1, V6]; xn--kgd36f9z57y.xn--3j9au7544a; ; ;  # ྷ.꥓
-xn--kgd36f9z57y.xn--3j9au7544a; 񗪨ᅠྷ.񸞰꥓; [V6]; xn--kgd36f9z57y.xn--3j9au7544a; ; ;  # ྷ.꥓
-xn--kgd7493jee34a.xn--3j9au7544a; 񗪨ﾠྷ.񸞰꥓; [V6]; xn--kgd7493jee34a.xn--3j9au7544a; ; ;  # ྷ.꥓
-ؘ.۳‌꥓; ; [C1, V5]; xn--6fb.xn--gmb469jjf1h; ; xn--6fb.xn--gmb0524f; [V5] # ؘ.۳꥓
-xn--6fb.xn--gmb0524f; ؘ.۳꥓; [V5]; xn--6fb.xn--gmb0524f; ; ;  # ؘ.۳꥓
-xn--6fb.xn--gmb469jjf1h; ؘ.۳‌꥓; [C1, V5]; xn--6fb.xn--gmb469jjf1h; ; ;  # ؘ.۳꥓
-ᡌ．︒ᢑ; ᡌ.︒ᢑ; [P1, V6]; xn--c8e.xn--bbf9168i; ; ;  # ᡌ.︒ᢑ
+xn--0ugc6024p.xn--0ug1920c; \u200C𐹴\u200D.\u200C鳥; [B1, C1, C2]; xn--0ugc6024p.xn--0ug1920c; ; ;  # 𐹴.鳥
+🍮．\u200D󠗒𐦁𝨝; 🍮.\u200D󠗒𐦁𝨝; [B1, C2, V7]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; xn--lj8h.xn--ln9ci476aqmr2g; [B1, V7] # 🍮.𐦁𝨝
+🍮.\u200D󠗒𐦁𝨝; ; [B1, C2, V7]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; xn--lj8h.xn--ln9ci476aqmr2g; [B1, V7] # 🍮.𐦁𝨝
+xn--lj8h.xn--ln9ci476aqmr2g; 🍮.󠗒𐦁𝨝; [B1, V7]; xn--lj8h.xn--ln9ci476aqmr2g; ; ;  # 🍮.𐦁𝨝
+xn--lj8h.xn--1ug6603gr1pfwq37h; 🍮.\u200D󠗒𐦁𝨝; [B1, C2, V7]; xn--lj8h.xn--1ug6603gr1pfwq37h; ; ;  # 🍮.𐦁𝨝
+\u067D\u0943.𞤓\u200D; \u067D\u0943.𞤵\u200D; [B3, C2]; xn--2ib43l.xn--1ugy711p; ; xn--2ib43l.xn--te6h; [] # ٽृ.𞤵
+\u067D\u0943.𞤵\u200D; ; [B3, C2]; xn--2ib43l.xn--1ugy711p; ; xn--2ib43l.xn--te6h; [] # ٽृ.𞤵
+xn--2ib43l.xn--te6h; \u067D\u0943.𞤵; ; xn--2ib43l.xn--te6h; ; ;  # ٽृ.𞤵
+\u067D\u0943.𞤵; ; ; xn--2ib43l.xn--te6h; ; ;  # ٽृ.𞤵
+\u067D\u0943.𞤓; \u067D\u0943.𞤵; ; xn--2ib43l.xn--te6h; ; ;  # ٽृ.𞤵
+xn--2ib43l.xn--1ugy711p; \u067D\u0943.𞤵\u200D; [B3, C2]; xn--2ib43l.xn--1ugy711p; ; ;  # ٽृ.𞤵
+\u0664\u0A4D-．󥜽\u1039񦦐; \u0664\u0A4D-.󥜽\u1039񦦐; [B1, V3, V7]; xn----gqc711a.xn--9jd88234f3qm0b; ; ;  # ٤੍-.္
+\u0664\u0A4D-.󥜽\u1039񦦐; ; [B1, V3, V7]; xn----gqc711a.xn--9jd88234f3qm0b; ; ;  # ٤੍-.္
+xn----gqc711a.xn--9jd88234f3qm0b; \u0664\u0A4D-.󥜽\u1039񦦐; [B1, V3, V7]; xn----gqc711a.xn--9jd88234f3qm0b; ; ;  # ٤੍-.္
+4\u103A-𐹸｡\uAA29\u200C𐹴≮; 4\u103A-𐹸.\uAA29\u200C𐹴≮; [B1, C1, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, V6] # 4်-𐹸.ꨩ𐹴≮
+4\u103A-𐹸｡\uAA29\u200C𐹴<\u0338; 4\u103A-𐹸.\uAA29\u200C𐹴≮; [B1, C1, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, V6] # 4်-𐹸.ꨩ𐹴≮
+4\u103A-𐹸。\uAA29\u200C𐹴≮; 4\u103A-𐹸.\uAA29\u200C𐹴≮; [B1, C1, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, V6] # 4်-𐹸.ꨩ𐹴≮
+4\u103A-𐹸。\uAA29\u200C𐹴<\u0338; 4\u103A-𐹸.\uAA29\u200C𐹴≮; [B1, C1, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; xn--4--e4j7831r.xn--gdh8754cz40c; [B1, V6] # 4်-𐹸.ꨩ𐹴≮
+xn--4--e4j7831r.xn--gdh8754cz40c; 4\u103A-𐹸.\uAA29𐹴≮; [B1, V6]; xn--4--e4j7831r.xn--gdh8754cz40c; ; ;  # 4်-𐹸.ꨩ𐹴≮
+xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; 4\u103A-𐹸.\uAA29\u200C𐹴≮; [B1, C1, V6]; xn--4--e4j7831r.xn--0ugy6gjy5sl3ud; ; ;  # 4်-𐹸.ꨩ𐹴≮
+\u200C。\uFFA0\u0F84\u0F96; \u200C.\u0F84\u0F96; [C1, V6]; xn--0ug.xn--3ed0b; ; .xn--3ed0b; [V6, A4_2] # .྄ྖ
+\u200C。\u1160\u0F84\u0F96; \u200C.\u0F84\u0F96; [C1, V6]; xn--0ug.xn--3ed0b; ; .xn--3ed0b; [V6, A4_2] # .྄ྖ
+.xn--3ed0b; .\u0F84\u0F96; [V6, X4_2]; .xn--3ed0b; [V6, A4_2]; ;  # .྄ྖ
+xn--0ug.xn--3ed0b; \u200C.\u0F84\u0F96; [C1, V6]; xn--0ug.xn--3ed0b; ; ;  # .྄ྖ
+.xn--3ed0b20h; .\u1160\u0F84\u0F96; [V7, X4_2]; .xn--3ed0b20h; [V7, A4_2]; ;  # .྄ྖ
+xn--0ug.xn--3ed0b20h; \u200C.\u1160\u0F84\u0F96; [C1, V7]; xn--0ug.xn--3ed0b20h; ; ;  # .྄ྖ
+.xn--3ed0by082k; .\uFFA0\u0F84\u0F96; [V7, X4_2]; .xn--3ed0by082k; [V7, A4_2]; ;  # .྄ྖ
+xn--0ug.xn--3ed0by082k; \u200C.\uFFA0\u0F84\u0F96; [C1, V7]; xn--0ug.xn--3ed0by082k; ; ;  # .྄ྖ
+≯򍘅．\u200D𐅼򲇛; ≯򍘅.\u200D𐅼򲇛; [C2, V7]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [V7] # ≯.𐅼
+>\u0338򍘅．\u200D𐅼򲇛; ≯򍘅.\u200D𐅼򲇛; [C2, V7]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [V7] # ≯.𐅼
+≯򍘅.\u200D𐅼򲇛; ; [C2, V7]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [V7] # ≯.𐅼
+>\u0338򍘅.\u200D𐅼򲇛; ≯򍘅.\u200D𐅼򲇛; [C2, V7]; xn--hdh84488f.xn--1ug8099fbjp4e; ; xn--hdh84488f.xn--xy7cw2886b; [V7] # ≯.𐅼
+xn--hdh84488f.xn--xy7cw2886b; ≯򍘅.𐅼򲇛; [V7]; xn--hdh84488f.xn--xy7cw2886b; ; ;  # ≯.𐅼
+xn--hdh84488f.xn--1ug8099fbjp4e; ≯򍘅.\u200D𐅼򲇛; [C2, V7]; xn--hdh84488f.xn--1ug8099fbjp4e; ; ;  # ≯.𐅼
+\u0641ß𐰯｡𝟕𐫫; \u0641ß𐰯.7𐫫; [B1, B2]; xn--zca96ys96y.xn--7-mm5i; ; xn--ss-jvd2339x.xn--7-mm5i;  # فß𐰯.7𐫫
+\u0641ß𐰯。7𐫫; \u0641ß𐰯.7𐫫; [B1, B2]; xn--zca96ys96y.xn--7-mm5i; ; xn--ss-jvd2339x.xn--7-mm5i;  # فß𐰯.7𐫫
+\u0641SS𐰯。7𐫫; \u0641ss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
+\u0641ss𐰯。7𐫫; \u0641ss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
+xn--ss-jvd2339x.xn--7-mm5i; \u0641ss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
+xn--zca96ys96y.xn--7-mm5i; \u0641ß𐰯.7𐫫; [B1, B2]; xn--zca96ys96y.xn--7-mm5i; ; ;  # فß𐰯.7𐫫
+\u0641SS𐰯｡𝟕𐫫; \u0641ss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
+\u0641ss𐰯｡𝟕𐫫; \u0641ss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
+\u0641Ss𐰯。7𐫫; \u0641ss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
+\u0641Ss𐰯｡𝟕𐫫; \u0641ss𐰯.7𐫫; [B1, B2]; xn--ss-jvd2339x.xn--7-mm5i; ; ;  # فss𐰯.7𐫫
+ß\u07AC\u07A7\u08B1。𐭁􅮙𐹲; ß\u07AC\u07A7\u08B1.𐭁􅮙𐹲; [B2, B5, B6, V7]; xn--zca685aoa95h.xn--e09co8cr9861c; ; xn--ss-9qet02k.xn--e09co8cr9861c;  # ßެާࢱ.𐭁𐹲
+SS\u07AC\u07A7\u08B1。𐭁􅮙𐹲; ss\u07AC\u07A7\u08B1.𐭁􅮙𐹲; [B2, B5, B6, V7]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ;  # ssެާࢱ.𐭁𐹲
+ss\u07AC\u07A7\u08B1。𐭁􅮙𐹲; ss\u07AC\u07A7\u08B1.𐭁􅮙𐹲; [B2, B5, B6, V7]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ;  # ssެާࢱ.𐭁𐹲
+Ss\u07AC\u07A7\u08B1。𐭁􅮙𐹲; ss\u07AC\u07A7\u08B1.𐭁􅮙𐹲; [B2, B5, B6, V7]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ;  # ssެާࢱ.𐭁𐹲
+xn--ss-9qet02k.xn--e09co8cr9861c; ss\u07AC\u07A7\u08B1.𐭁􅮙𐹲; [B2, B5, B6, V7]; xn--ss-9qet02k.xn--e09co8cr9861c; ; ;  # ssެާࢱ.𐭁𐹲
+xn--zca685aoa95h.xn--e09co8cr9861c; ß\u07AC\u07A7\u08B1.𐭁􅮙𐹲; [B2, B5, B6, V7]; xn--zca685aoa95h.xn--e09co8cr9861c; ; ;  # ßެާࢱ.𐭁𐹲
+-｡󠉗⒌𞯛; -.󠉗⒌𞯛; [B1, V3, V7]; -.xn--xsh6367n1bi3e; ; ;  # -.⒌
+-。󠉗5.𞯛; -.󠉗5.𞯛; [B1, V3, V7]; -.xn--5-zz21m.xn--6x6h; ; ;  # -.5.
+-.xn--5-zz21m.xn--6x6h; -.󠉗5.𞯛; [B1, V3, V7]; -.xn--5-zz21m.xn--6x6h; ; ;  # -.5.
+-.xn--xsh6367n1bi3e; -.󠉗⒌𞯛; [B1, V3, V7]; -.xn--xsh6367n1bi3e; ; ;  # -.⒌
+𼎏ς．-≮\uFCAB; 𼎏ς.-≮\u062E\u062C; [B1, V3, V7]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a;  # ς.-≮خج
+𼎏ς．-<\u0338\uFCAB; 𼎏ς.-≮\u062E\u062C; [B1, V3, V7]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a;  # ς.-≮خج
+𼎏ς.-≮\u062E\u062C; ; [B1, V3, V7]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a;  # ς.-≮خج
+𼎏ς.-<\u0338\u062E\u062C; 𼎏ς.-≮\u062E\u062C; [B1, V3, V7]; xn--3xa13520c.xn----9mcf1400a; ; xn--4xa92520c.xn----9mcf1400a;  # ς.-≮خج
+𼎏Σ.-<\u0338\u062E\u062C; 𼎏σ.-≮\u062E\u062C; [B1, V3, V7]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
+𼎏Σ.-≮\u062E\u062C; 𼎏σ.-≮\u062E\u062C; [B1, V3, V7]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
+𼎏σ.-≮\u062E\u062C; ; [B1, V3, V7]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
+𼎏σ.-<\u0338\u062E\u062C; 𼎏σ.-≮\u062E\u062C; [B1, V3, V7]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
+xn--4xa92520c.xn----9mcf1400a; 𼎏σ.-≮\u062E\u062C; [B1, V3, V7]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
+xn--3xa13520c.xn----9mcf1400a; 𼎏ς.-≮\u062E\u062C; [B1, V3, V7]; xn--3xa13520c.xn----9mcf1400a; ; ;  # ς.-≮خج
+𼎏Σ．-<\u0338\uFCAB; 𼎏σ.-≮\u062E\u062C; [B1, V3, V7]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
+𼎏Σ．-≮\uFCAB; 𼎏σ.-≮\u062E\u062C; [B1, V3, V7]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
+𼎏σ．-≮\uFCAB; 𼎏σ.-≮\u062E\u062C; [B1, V3, V7]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
+𼎏σ．-<\u0338\uFCAB; 𼎏σ.-≮\u062E\u062C; [B1, V3, V7]; xn--4xa92520c.xn----9mcf1400a; ; ;  # σ.-≮خج
+ꡗ\u08B8\u0719．񔤔󠛙\u0C4D\uFC3E; ꡗ\u08B8\u0719.񔤔󠛙\u0C4D\u0643\u064A; [B5, B6, V7]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ;  # ꡗࢸܙ.్كي
+ꡗ\u08B8\u0719.񔤔󠛙\u0C4D\u0643\u064A; ; [B5, B6, V7]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ;  # ꡗࢸܙ.్كي
+xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ꡗ\u08B8\u0719.񔤔󠛙\u0C4D\u0643\u064A; [B5, B6, V7]; xn--jnb34fs003a.xn--fhbo927bk128mpi24d; ; ;  # ꡗࢸܙ.్كي
+𐠰\u08B7𞤌𐫭。𐋦\u17CD𝩃; 𐠰\u08B7𞤮𐫭.𐋦\u17CD𝩃; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ;  # 𐠰ࢷ𞤮𐫭.𐋦៍𝩃
+𐠰\u08B7𞤮𐫭。𐋦\u17CD𝩃; 𐠰\u08B7𞤮𐫭.𐋦\u17CD𝩃; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ;  # 𐠰ࢷ𞤮𐫭.𐋦៍𝩃
+xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; 𐠰\u08B7𞤮𐫭.𐋦\u17CD𝩃; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ;  # 𐠰ࢷ𞤮𐫭.𐋦៍𝩃
+𐠰\u08B7𞤮𐫭.𐋦\u17CD𝩃; ; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ;  # 𐠰ࢷ𞤮𐫭.𐋦៍𝩃
+𐠰\u08B7𞤌𐫭.𐋦\u17CD𝩃; 𐠰\u08B7𞤮𐫭.𐋦\u17CD𝩃; [B1]; xn--dzb5191kezbrw47a.xn--p4e3841jz9tf; ; ;  # 𐠰ࢷ𞤮𐫭.𐋦៍𝩃
+₂㘷--。\u06D3\u200C𐫆𑖿; 2㘷--.\u06D3\u200C𐫆𑖿; [B1, C1, V2, V3]; xn--2---u58b.xn--jlb820ku99nbgj; ; xn--2---u58b.xn--jlb8024k14g; [B1, V2, V3] # 2㘷--.ۓ𐫆𑖿
+₂㘷--。\u06D2\u0654\u200C𐫆𑖿; 2㘷--.\u06D3\u200C𐫆𑖿; [B1, C1, V2, V3]; xn--2---u58b.xn--jlb820ku99nbgj; ; xn--2---u58b.xn--jlb8024k14g; [B1, V2, V3] # 2㘷--.ۓ𐫆𑖿
+2㘷--。\u06D3\u200C𐫆𑖿; 2㘷--.\u06D3\u200C𐫆𑖿; [B1, C1, V2, V3]; xn--2---u58b.xn--jlb820ku99nbgj; ; xn--2---u58b.xn--jlb8024k14g; [B1, V2, V3] # 2㘷--.ۓ𐫆𑖿
+2㘷--。\u06D2\u0654\u200C𐫆𑖿; 2㘷--.\u06D3\u200C𐫆𑖿; [B1, C1, V2, V3]; xn--2---u58b.xn--jlb820ku99nbgj; ; xn--2---u58b.xn--jlb8024k14g; [B1, V2, V3] # 2㘷--.ۓ𐫆𑖿
+xn--2---u58b.xn--jlb8024k14g; 2㘷--.\u06D3𐫆𑖿; [B1, V2, V3]; xn--2---u58b.xn--jlb8024k14g; ; ;  # 2㘷--.ۓ𐫆𑖿
+xn--2---u58b.xn--jlb820ku99nbgj; 2㘷--.\u06D3\u200C𐫆𑖿; [B1, C1, V2, V3]; xn--2---u58b.xn--jlb820ku99nbgj; ; ;  # 2㘷--.ۓ𐫆𑖿
+-𘊻．ᡮ\u062D-; -𘊻.ᡮ\u062D-; [B1, B5, B6, V3]; xn----bp5n.xn----bnc231l; ; ;  # -𘊻.ᡮح-
+-𘊻.ᡮ\u062D-; ; [B1, B5, B6, V3]; xn----bp5n.xn----bnc231l; ; ;  # -𘊻.ᡮح-
+xn----bp5n.xn----bnc231l; -𘊻.ᡮ\u062D-; [B1, B5, B6, V3]; xn----bp5n.xn----bnc231l; ; ;  # -𘊻.ᡮح-
+\u200C-ß｡ᢣ𐹭\u063F; \u200C-ß.ᢣ𐹭\u063F; [B1, B5, B6, C1]; xn----qfa550v.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ß.ᢣ𐹭ؿ
+\u200C-ß。ᢣ𐹭\u063F; \u200C-ß.ᢣ𐹭\u063F; [B1, B5, B6, C1]; xn----qfa550v.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ß.ᢣ𐹭ؿ
+\u200C-SS。ᢣ𐹭\u063F; \u200C-ss.ᢣ𐹭\u063F; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
+\u200C-ss。ᢣ𐹭\u063F; \u200C-ss.ᢣ𐹭\u063F; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
+\u200C-Ss。ᢣ𐹭\u063F; \u200C-ss.ᢣ𐹭\u063F; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
+-ss.xn--bhb925glx3p; -ss.ᢣ𐹭\u063F; [B1, B5, B6, V3]; -ss.xn--bhb925glx3p; ; ;  # -ss.ᢣ𐹭ؿ
+xn---ss-8m0a.xn--bhb925glx3p; \u200C-ss.ᢣ𐹭\u063F; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; ;  # -ss.ᢣ𐹭ؿ
+xn----qfa550v.xn--bhb925glx3p; \u200C-ß.ᢣ𐹭\u063F; [B1, B5, B6, C1]; xn----qfa550v.xn--bhb925glx3p; ; ;  # -ß.ᢣ𐹭ؿ
+\u200C-SS｡ᢣ𐹭\u063F; \u200C-ss.ᢣ𐹭\u063F; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
+\u200C-ss｡ᢣ𐹭\u063F; \u200C-ss.ᢣ𐹭\u063F; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
+\u200C-Ss｡ᢣ𐹭\u063F; \u200C-ss.ᢣ𐹭\u063F; [B1, B5, B6, C1]; xn---ss-8m0a.xn--bhb925glx3p; ; -ss.xn--bhb925glx3p; [B1, B5, B6, V3] # -ss.ᢣ𐹭ؿ
+꧐Ӏ\u1BAA\u08F6．눵; ꧐ӏ\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
+꧐Ӏ\u1BAA\u08F6．눵; ꧐ӏ\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
+꧐Ӏ\u1BAA\u08F6.눵; ꧐ӏ\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
+꧐Ӏ\u1BAA\u08F6.눵; ꧐ӏ\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
+꧐ӏ\u1BAA\u08F6.눵; ꧐ӏ\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
+꧐ӏ\u1BAA\u08F6.눵; ; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
+xn--s5a04sn4u297k.xn--2e1b; ꧐ӏ\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
+꧐ӏ\u1BAA\u08F6．눵; ꧐ӏ\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
+꧐ӏ\u1BAA\u08F6．눵; ꧐ӏ\u1BAA\u08F6.눵; ; xn--s5a04sn4u297k.xn--2e1b; ; ;  # ꧐ӏ᮪ࣶ.눵
+xn--d5a07sn4u297k.xn--2e1b; ꧐Ӏ\u1BAA\u08F6.눵; [V7]; xn--d5a07sn4u297k.xn--2e1b; ; ;  # ꧐Ӏ᮪ࣶ.눵
+\uA8EA｡𖄿𑆾󠇗; \uA8EA.𖄿𑆾; [V6, V7]; xn--3g9a.xn--ud1dz07k; ; ;  # ꣪.𑆾
+\uA8EA。𖄿𑆾󠇗; \uA8EA.𖄿𑆾; [V6, V7]; xn--3g9a.xn--ud1dz07k; ; ;  # ꣪.𑆾
+xn--3g9a.xn--ud1dz07k; \uA8EA.𖄿𑆾; [V6, V7]; xn--3g9a.xn--ud1dz07k; ; ;  # ꣪.𑆾
+󇓓𑚳。񐷿≯⾇; 󇓓𑚳.񐷿≯舛; [V7]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ;  # 𑚳.≯舛
+󇓓𑚳。񐷿>\u0338⾇; 󇓓𑚳.񐷿≯舛; [V7]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ;  # 𑚳.≯舛
+󇓓𑚳。񐷿≯舛; 󇓓𑚳.񐷿≯舛; [V7]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ;  # 𑚳.≯舛
+󇓓𑚳。񐷿>\u0338舛; 󇓓𑚳.񐷿≯舛; [V7]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ;  # 𑚳.≯舛
+xn--3e2d79770c.xn--hdh0088abyy1c; 󇓓𑚳.񐷿≯舛; [V7]; xn--3e2d79770c.xn--hdh0088abyy1c; ; ;  # 𑚳.≯舛
+𐫇\u0661\u200C．\u200D\u200C; 𐫇\u0661\u200C.\u200D\u200C; [B1, B3, C1, C2]; xn--9hb652kv99n.xn--0ugb; ; xn--9hb7344k.; [A4_2] # 𐫇١.
+𐫇\u0661\u200C.\u200D\u200C; ; [B1, B3, C1, C2]; xn--9hb652kv99n.xn--0ugb; ; xn--9hb7344k.; [A4_2] # 𐫇١.
+xn--9hb7344k.; 𐫇\u0661.; ; xn--9hb7344k.; [A4_2]; ;  # 𐫇١.
+𐫇\u0661.; ; ; xn--9hb7344k.; [A4_2]; ;  # 𐫇١.
+xn--9hb652kv99n.xn--0ugb; 𐫇\u0661\u200C.\u200D\u200C; [B1, B3, C1, C2]; xn--9hb652kv99n.xn--0ugb; ; ;  # 𐫇١.
+񡅈砪≯ᢑ｡≯𝩚򓴔\u200C; 񡅈砪≯ᢑ.≯𝩚򓴔\u200C; [C1, V7]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [V7] # 砪≯ᢑ.≯𝩚
+񡅈砪>\u0338ᢑ｡>\u0338𝩚򓴔\u200C; 񡅈砪≯ᢑ.≯𝩚򓴔\u200C; [C1, V7]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [V7] # 砪≯ᢑ.≯𝩚
+񡅈砪≯ᢑ。≯𝩚򓴔\u200C; 񡅈砪≯ᢑ.≯𝩚򓴔\u200C; [C1, V7]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [V7] # 砪≯ᢑ.≯𝩚
+񡅈砪>\u0338ᢑ。>\u0338𝩚򓴔\u200C; 񡅈砪≯ᢑ.≯𝩚򓴔\u200C; [C1, V7]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; [V7] # 砪≯ᢑ.≯𝩚
+xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; 񡅈砪≯ᢑ.≯𝩚򓴔; [V7]; xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b; ; ;  # 砪≯ᢑ.≯𝩚
+xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; 񡅈砪≯ᢑ.≯𝩚򓴔\u200C; [C1, V7]; xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c; ; ;  # 砪≯ᢑ.≯𝩚
+Ⴥ.𑄳㊸; ⴥ.𑄳43; [V6]; xn--tlj.xn--43-274o; ; ;  # ⴥ.𑄳43
+Ⴥ.𑄳43; ⴥ.𑄳43; [V6]; xn--tlj.xn--43-274o; ; ;  # ⴥ.𑄳43
+ⴥ.𑄳43; ; [V6]; xn--tlj.xn--43-274o; ; ;  # ⴥ.𑄳43
+xn--tlj.xn--43-274o; ⴥ.𑄳43; [V6]; xn--tlj.xn--43-274o; ; ;  # ⴥ.𑄳43
+ⴥ.𑄳㊸; ⴥ.𑄳43; [V6]; xn--tlj.xn--43-274o; ; ;  # ⴥ.𑄳43
+xn--9nd.xn--43-274o; Ⴥ.𑄳43; [V6, V7]; xn--9nd.xn--43-274o; ; ;  # Ⴥ.𑄳43
+𝟎\u0663。Ⴒᡇ\u08F2𐹠; 0\u0663.ⴒᡇ\u08F2𐹠; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ;  # 0٣.ⴒᡇࣲ𐹠
+0\u0663。Ⴒᡇ\u08F2𐹠; 0\u0663.ⴒᡇ\u08F2𐹠; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ;  # 0٣.ⴒᡇࣲ𐹠
+0\u0663。ⴒᡇ\u08F2𐹠; 0\u0663.ⴒᡇ\u08F2𐹠; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ;  # 0٣.ⴒᡇࣲ𐹠
+xn--0-fqc.xn--10b369eivp359r; 0\u0663.ⴒᡇ\u08F2𐹠; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ;  # 0٣.ⴒᡇࣲ𐹠
+𝟎\u0663。ⴒᡇ\u08F2𐹠; 0\u0663.ⴒᡇ\u08F2𐹠; [B1, B5, B6]; xn--0-fqc.xn--10b369eivp359r; ; ;  # 0٣.ⴒᡇࣲ𐹠
+xn--0-fqc.xn--10b180bnwgfy0z; 0\u0663.Ⴒᡇ\u08F2𐹠; [B1, B5, B6, V7]; xn--0-fqc.xn--10b180bnwgfy0z; ; ;  # 0٣.Ⴒᡇࣲ𐹠
+񗪨󠄉\uFFA0\u0FB7.񸞰\uA953; 񗪨\u0FB7.񸞰\uA953; [V7]; xn--kgd72212e.xn--3j9au7544a; ; ;  # ྷ.꥓
+񗪨󠄉\u1160\u0FB7.񸞰\uA953; 񗪨\u0FB7.񸞰\uA953; [V7]; xn--kgd72212e.xn--3j9au7544a; ; ;  # ྷ.꥓
+xn--kgd72212e.xn--3j9au7544a; 񗪨\u0FB7.񸞰\uA953; [V7]; xn--kgd72212e.xn--3j9au7544a; ; ;  # ྷ.꥓
+xn--kgd36f9z57y.xn--3j9au7544a; 񗪨\u1160\u0FB7.񸞰\uA953; [V7]; xn--kgd36f9z57y.xn--3j9au7544a; ; ;  # ྷ.꥓
+xn--kgd7493jee34a.xn--3j9au7544a; 񗪨\uFFA0\u0FB7.񸞰\uA953; [V7]; xn--kgd7493jee34a.xn--3j9au7544a; ; ;  # ྷ.꥓
+\u0618.۳\u200C\uA953; ; [C1, V6]; xn--6fb.xn--gmb469jjf1h; ; xn--6fb.xn--gmb0524f; [V6] # ؘ.۳꥓
+xn--6fb.xn--gmb0524f; \u0618.۳\uA953; [V6]; xn--6fb.xn--gmb0524f; ; ;  # ؘ.۳꥓
+xn--6fb.xn--gmb469jjf1h; \u0618.۳\u200C\uA953; [C1, V6]; xn--6fb.xn--gmb469jjf1h; ; ;  # ؘ.۳꥓
+ᡌ．︒ᢑ; ᡌ.︒ᢑ; [V7]; xn--c8e.xn--bbf9168i; ; ;  # ᡌ.︒ᢑ
 ᡌ.。ᢑ; ᡌ..ᢑ; [X4_2]; xn--c8e..xn--bbf; [A4_2]; ;  # ᡌ..ᢑ
 xn--c8e..xn--bbf; ᡌ..ᢑ; [X4_2]; xn--c8e..xn--bbf; [A4_2]; ;  # ᡌ..ᢑ
-xn--c8e.xn--bbf9168i; ᡌ.︒ᢑ; [V6]; xn--c8e.xn--bbf9168i; ; ;  # ᡌ.︒ᢑ
-𑋪ၳ｡𞽧; 𑋪ၳ.𞽧; [B1, B3, B6, P1, V5, V6]; xn--xld7443k.xn--4o7h; ; ;  # 𑋪ၳ.
-𑋪ၳ。𞽧; 𑋪ၳ.𞽧; [B1, B3, B6, P1, V5, V6]; xn--xld7443k.xn--4o7h; ; ;  # 𑋪ၳ.
-xn--xld7443k.xn--4o7h; 𑋪ၳ.𞽧; [B1, B3, B6, V5, V6]; xn--xld7443k.xn--4o7h; ; ;  # 𑋪ၳ.
-𞷏。ᠢ򓘆; 𞷏.ᠢ򓘆; [P1, V6]; xn--hd7h.xn--46e66060j; ; ;  # .ᠢ
-xn--hd7h.xn--46e66060j; 𞷏.ᠢ򓘆; [V6]; xn--hd7h.xn--46e66060j; ; ;  # .ᠢ
-𑄳㴼．‌𐹡⃫񫺦; 𑄳㴼.‌𐹡⃫񫺦; [B1, C1, P1, V5, V6]; xn--iym9428c.xn--0ug46a7218cllv0c; ; xn--iym9428c.xn--e1g3464g08p3b; [B1, P1, V5, V6] # 𑄳㴼.𐹡⃫
-𑄳㴼.‌𐹡⃫񫺦; ; [B1, C1, P1, V5, V6]; xn--iym9428c.xn--0ug46a7218cllv0c; ; xn--iym9428c.xn--e1g3464g08p3b; [B1, P1, V5, V6] # 𑄳㴼.𐹡⃫
-xn--iym9428c.xn--e1g3464g08p3b; 𑄳㴼.𐹡⃫񫺦; [B1, V5, V6]; xn--iym9428c.xn--e1g3464g08p3b; ; ;  # 𑄳㴼.𐹡⃫
-xn--iym9428c.xn--0ug46a7218cllv0c; 𑄳㴼.‌𐹡⃫񫺦; [B1, C1, V5, V6]; xn--iym9428c.xn--0ug46a7218cllv0c; ; ;  # 𑄳㴼.𐹡⃫
-񠻟𐹳𑈯｡̝; 񠻟𐹳𑈯.̝; [B1, B3, B5, B6, P1, V5, V6]; xn--ro0dw7dey96m.xn--eta; ; ;  # 𐹳𑈯.̝
-񠻟𐹳𑈯。̝; 񠻟𐹳𑈯.̝; [B1, B3, B5, B6, P1, V5, V6]; xn--ro0dw7dey96m.xn--eta; ; ;  # 𐹳𑈯.̝
-xn--ro0dw7dey96m.xn--eta; 񠻟𐹳𑈯.̝; [B1, B3, B5, B6, V5, V6]; xn--ro0dw7dey96m.xn--eta; ; ;  # 𐹳𑈯.̝
-ᢊ뾜󠱴𑚶。࢝𐹥; ᢊ뾜󠱴𑚶.࢝𐹥; [P1, V6]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ;  # ᢊ뾜𑚶.𐹥
-ᢊ뾜󠱴𑚶。࢝𐹥; ᢊ뾜󠱴𑚶.࢝𐹥; [P1, V6]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ;  # ᢊ뾜𑚶.𐹥
-xn--39e4566fjv8bwmt6n.xn--myb6415k; ᢊ뾜󠱴𑚶.࢝𐹥; [V6]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ;  # ᢊ뾜𑚶.𐹥
-𐹥≠｡𐋲󠧠‌; 𐹥≠.𐋲󠧠‌; [B1, C1, P1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, P1, V6] # 𐹥≠.𐋲
-𐹥≠｡𐋲󠧠‌; 𐹥≠.𐋲󠧠‌; [B1, C1, P1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, P1, V6] # 𐹥≠.𐋲
-𐹥≠。𐋲󠧠‌; 𐹥≠.𐋲󠧠‌; [B1, C1, P1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, P1, V6] # 𐹥≠.𐋲
-𐹥≠。𐋲󠧠‌; 𐹥≠.𐋲󠧠‌; [B1, C1, P1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, P1, V6] # 𐹥≠.𐋲
-xn--1ch6704g.xn--m97cw2999c; 𐹥≠.𐋲󠧠; [B1, V6]; xn--1ch6704g.xn--m97cw2999c; ; ;  # 𐹥≠.𐋲
-xn--1ch6704g.xn--0ug3840g51u4g; 𐹥≠.𐋲󠧠‌; [B1, C1, V6]; xn--1ch6704g.xn--0ug3840g51u4g; ; ;  # 𐹥≠.𐋲
-ᅟ񙯠्．‍꥓𐪤; ᅟ񙯠्.‍꥓𐪤; [B1, C2, P1, V6]; xn--n3b542bb085j.xn--1ug6815co9wc; ; xn--n3b542bb085j.xn--3j9al95p; [B5, B6, P1, V5, V6] # ्.꥓
-ᅟ񙯠्.‍꥓𐪤; ; [B1, C2, P1, V6]; xn--n3b542bb085j.xn--1ug6815co9wc; ; xn--n3b542bb085j.xn--3j9al95p; [B5, B6, P1, V5, V6] # ्.꥓
-xn--n3b542bb085j.xn--3j9al95p; ᅟ񙯠्.꥓𐪤; [B5, B6, V5, V6]; xn--n3b542bb085j.xn--3j9al95p; ; ;  # ्.꥓
-xn--n3b542bb085j.xn--1ug6815co9wc; ᅟ񙯠्.‍꥓𐪤; [B1, C2, V6]; xn--n3b542bb085j.xn--1ug6815co9wc; ; ;  # ्.꥓
-򌋔󠆎󠆗𑲕。≮; 򌋔𑲕.≮; [P1, V6]; xn--4m3dv4354a.xn--gdh; ; ;  # 𑲕.≮
-򌋔󠆎󠆗𑲕。≮; 򌋔𑲕.≮; [P1, V6]; xn--4m3dv4354a.xn--gdh; ; ;  # 𑲕.≮
-xn--4m3dv4354a.xn--gdh; 򌋔𑲕.≮; [V6]; xn--4m3dv4354a.xn--gdh; ; ;  # 𑲕.≮
-󠆦.ࣣ暀≠; .ࣣ暀≠; [P1, V5, V6, X4_2]; .xn--m0b461k3g2c; [P1, V5, V6, A4_2]; ;  # .ࣣ暀≠
-󠆦.ࣣ暀≠; .ࣣ暀≠; [P1, V5, V6, X4_2]; .xn--m0b461k3g2c; [P1, V5, V6, A4_2]; ;  # .ࣣ暀≠
-.xn--m0b461k3g2c; .ࣣ暀≠; [V5, V6, X4_2]; .xn--m0b461k3g2c; [V5, V6, A4_2]; ;  # .ࣣ暀≠
-𐡤꯭｡ﴰ򜖅ᷰ; 𐡤꯭.شم򜖅ᷰ; [B2, B3, P1, V6]; xn--429ak76o.xn--zgb8a701kox37t; ; ;  # 𐡤꯭.شمᷰ
-𐡤꯭。شم򜖅ᷰ; 𐡤꯭.شم򜖅ᷰ; [B2, B3, P1, V6]; xn--429ak76o.xn--zgb8a701kox37t; ; ;  # 𐡤꯭.شمᷰ
-xn--429ak76o.xn--zgb8a701kox37t; 𐡤꯭.شم򜖅ᷰ; [B2, B3, V6]; xn--429ak76o.xn--zgb8a701kox37t; ; ;  # 𐡤꯭.شمᷰ
-𝉃‍⒈｡Ⴌ𞱓; 𝉃‍⒈.Ⴌ𞱓; [B1, B5, B6, C2, P1, V5, V6]; xn--1ug68oq348b.xn--knd8464v; ; xn--tshz828m.xn--knd8464v; [B1, B5, B6, P1, V5, V6] # 𝉃⒈.Ⴌ
-𝉃‍1.。Ⴌ𞱓; 𝉃‍1..Ⴌ𞱓; [B1, B5, B6, C2, P1, V5, V6, X4_2]; xn--1-tgn9827q..xn--knd8464v; [B1, B5, B6, C2, P1, V5, V6, A4_2]; xn--1-px8q..xn--knd8464v; [B1, B5, B6, P1, V5, V6, A4_2] # 𝉃1..Ⴌ
-𝉃‍1.。ⴌ𞱓; 𝉃‍1..ⴌ𞱓; [B1, B5, B6, C2, P1, V5, V6, X4_2]; xn--1-tgn9827q..xn--3kj4524l; [B1, B5, B6, C2, P1, V5, V6, A4_2]; xn--1-px8q..xn--3kj4524l; [B1, B5, B6, P1, V5, V6, A4_2] # 𝉃1..ⴌ
-xn--1-px8q..xn--3kj4524l; 𝉃1..ⴌ𞱓; [B1, B5, B6, V5, V6, X4_2]; xn--1-px8q..xn--3kj4524l; [B1, B5, B6, V5, V6, A4_2]; ;  # 𝉃1..ⴌ
-xn--1-tgn9827q..xn--3kj4524l; 𝉃‍1..ⴌ𞱓; [B1, B5, B6, C2, V5, V6, X4_2]; xn--1-tgn9827q..xn--3kj4524l; [B1, B5, B6, C2, V5, V6, A4_2]; ;  # 𝉃1..ⴌ
-xn--1-px8q..xn--knd8464v; 𝉃1..Ⴌ𞱓; [B1, B5, B6, V5, V6, X4_2]; xn--1-px8q..xn--knd8464v; [B1, B5, B6, V5, V6, A4_2]; ;  # 𝉃1..Ⴌ
-xn--1-tgn9827q..xn--knd8464v; 𝉃‍1..Ⴌ𞱓; [B1, B5, B6, C2, V5, V6, X4_2]; xn--1-tgn9827q..xn--knd8464v; [B1, B5, B6, C2, V5, V6, A4_2]; ;  # 𝉃1..Ⴌ
-𝉃‍⒈｡ⴌ𞱓; 𝉃‍⒈.ⴌ𞱓; [B1, B5, B6, C2, P1, V5, V6]; xn--1ug68oq348b.xn--3kj4524l; ; xn--tshz828m.xn--3kj4524l; [B1, B5, B6, P1, V5, V6] # 𝉃⒈.ⴌ
-xn--tshz828m.xn--3kj4524l; 𝉃⒈.ⴌ𞱓; [B1, B5, B6, V5, V6]; xn--tshz828m.xn--3kj4524l; ; ;  # 𝉃⒈.ⴌ
-xn--1ug68oq348b.xn--3kj4524l; 𝉃‍⒈.ⴌ𞱓; [B1, B5, B6, C2, V5, V6]; xn--1ug68oq348b.xn--3kj4524l; ; ;  # 𝉃⒈.ⴌ
-xn--tshz828m.xn--knd8464v; 𝉃⒈.Ⴌ𞱓; [B1, B5, B6, V5, V6]; xn--tshz828m.xn--knd8464v; ; ;  # 𝉃⒈.Ⴌ
-xn--1ug68oq348b.xn--knd8464v; 𝉃‍⒈.Ⴌ𞱓; [B1, B5, B6, C2, V5, V6]; xn--1ug68oq348b.xn--knd8464v; ; ;  # 𝉃⒈.Ⴌ
-󠣙੍𱫘𞤸.ς񵯞􈰔; ; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b;  # ੍𞤸.ς
-󠣙੍𱫘𞤖.Σ񵯞􈰔; 󠣙੍𱫘𞤸.σ񵯞􈰔; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ;  # ੍𞤸.σ
-󠣙੍𱫘𞤸.σ񵯞􈰔; ; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ;  # ੍𞤸.σ
-󠣙੍𱫘𞤖.σ񵯞􈰔; 󠣙੍𱫘𞤸.σ񵯞􈰔; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ;  # ੍𞤸.σ
-xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; 󠣙੍𱫘𞤸.σ񵯞􈰔; [B1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ;  # ੍𞤸.σ
-󠣙੍𱫘𞤖.ς񵯞􈰔; 󠣙੍𱫘𞤸.ς񵯞􈰔; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b;  # ੍𞤸.ς
-xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; 󠣙੍𱫘𞤸.ς񵯞􈰔; [B1, V6]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; ;  # ੍𞤸.ς
-󠣙੍𱫘𞤸.Σ񵯞􈰔; 󠣙੍𱫘𞤸.σ񵯞􈰔; [B1, P1, V6]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ;  # ੍𞤸.σ
-ߓ。‌𐫀򞭱; ߓ.‌𐫀򞭱; [B1, C1, P1, V6]; xn--usb.xn--0ug9553gm3v5d; ; xn--usb.xn--pw9ci1099a; [B2, B3, P1, V6] # ߓ.𐫀
-xn--usb.xn--pw9ci1099a; ߓ.𐫀򞭱; [B2, B3, V6]; xn--usb.xn--pw9ci1099a; ; ;  # ߓ.𐫀
-xn--usb.xn--0ug9553gm3v5d; ߓ.‌𐫀򞭱; [B1, C1, V6]; xn--usb.xn--0ug9553gm3v5d; ; ;  # ߓ.𐫀
-ᰮ𞀝.֦ꡟ𞤕󠆖; ᰮ𞀝.֦ꡟ𞤷; [B1, B3, B6, V5]; xn--q1f4493q.xn--xcb8244fifvj; ; ;  # ᰮ𞀝.֦ꡟ𞤷
-ᰮ𞀝.֦ꡟ𞤷󠆖; ᰮ𞀝.֦ꡟ𞤷; [B1, B3, B6, V5]; xn--q1f4493q.xn--xcb8244fifvj; ; ;  # ᰮ𞀝.֦ꡟ𞤷
-xn--q1f4493q.xn--xcb8244fifvj; ᰮ𞀝.֦ꡟ𞤷; [B1, B3, B6, V5]; xn--q1f4493q.xn--xcb8244fifvj; ; ;  # ᰮ𞀝.֦ꡟ𞤷
-䂹󾖅𐋦．‍; 䂹󾖅𐋦.‍; [C2, P1, V6]; xn--0on3543c5981i.xn--1ug; ; xn--0on3543c5981i.; [P1, V6] # 䂹𐋦.
-䂹󾖅𐋦.‍; ; [C2, P1, V6]; xn--0on3543c5981i.xn--1ug; ; xn--0on3543c5981i.; [P1, V6] # 䂹𐋦.
-xn--0on3543c5981i.; 䂹󾖅𐋦.; [V6]; xn--0on3543c5981i.; ; ;  # 䂹𐋦.
-xn--0on3543c5981i.xn--1ug; 䂹󾖅𐋦.‍; [C2, V6]; xn--0on3543c5981i.xn--1ug; ; ;  # 䂹𐋦.
-꧀‌𐹲‌｡ݧ🄉; ꧀‌𐹲‌.ݧ🄉; [B5, B6, C1, P1, V5, V6]; xn--0uga8686hdgvd.xn--rpb6081w; ; xn--7m9an32q.xn--rpb6081w; [B5, B6, P1, V5, V6] # ꧀𐹲.ݧ🄉
-꧀‌𐹲‌。ݧ8,; ꧀‌𐹲‌.ݧ8,; [B3, B5, B6, C1, P1, V5, V6]; xn--0uga8686hdgvd.xn--8,-qle; ; xn--7m9an32q.xn--8,-qle; [B3, B5, B6, P1, V5, V6] # ꧀𐹲.ݧ8,
-xn--7m9an32q.xn--8,-qle; ꧀𐹲.ݧ8,; [B3, B5, B6, P1, V5, V6]; xn--7m9an32q.xn--8,-qle; ; ;  # ꧀𐹲.ݧ8,
-xn--0uga8686hdgvd.xn--8,-qle; ꧀‌𐹲‌.ݧ8,; [B3, B5, B6, C1, P1, V5, V6]; xn--0uga8686hdgvd.xn--8,-qle; ; ;  # ꧀𐹲.ݧ8,
-xn--7m9an32q.xn--rpb6081w; ꧀𐹲.ݧ🄉; [B5, B6, V5, V6]; xn--7m9an32q.xn--rpb6081w; ; ;  # ꧀𐹲.ݧ🄉
-xn--0uga8686hdgvd.xn--rpb6081w; ꧀‌𐹲‌.ݧ🄉; [B5, B6, C1, V5, V6]; xn--0uga8686hdgvd.xn--rpb6081w; ; ;  # ꧀𐹲.ݧ🄉
-︒｡Ⴃ≯; ︒.Ⴃ≯; [P1, V6]; xn--y86c.xn--bnd622g; ; ;  # ︒.Ⴃ≯
-︒｡Ⴃ≯; ︒.Ⴃ≯; [P1, V6]; xn--y86c.xn--bnd622g; ; ;  # ︒.Ⴃ≯
-。。Ⴃ≯; ..Ⴃ≯; [P1, V6, X4_2]; ..xn--bnd622g; [P1, V6, A4_2]; ;  # ..Ⴃ≯
-。。Ⴃ≯; ..Ⴃ≯; [P1, V6, X4_2]; ..xn--bnd622g; [P1, V6, A4_2]; ;  # ..Ⴃ≯
-。。ⴃ≯; ..ⴃ≯; [P1, V6, X4_2]; ..xn--hdh782b; [P1, V6, A4_2]; ;  # ..ⴃ≯
-。。ⴃ≯; ..ⴃ≯; [P1, V6, X4_2]; ..xn--hdh782b; [P1, V6, A4_2]; ;  # ..ⴃ≯
-..xn--hdh782b; ..ⴃ≯; [V6, X4_2]; ..xn--hdh782b; [V6, A4_2]; ;  # ..ⴃ≯
-..xn--bnd622g; ..Ⴃ≯; [V6, X4_2]; ..xn--bnd622g; [V6, A4_2]; ;  # ..Ⴃ≯
-︒｡ⴃ≯; ︒.ⴃ≯; [P1, V6]; xn--y86c.xn--hdh782b; ; ;  # ︒.ⴃ≯
-︒｡ⴃ≯; ︒.ⴃ≯; [P1, V6]; xn--y86c.xn--hdh782b; ; ;  # ︒.ⴃ≯
-xn--y86c.xn--hdh782b; ︒.ⴃ≯; [V6]; xn--y86c.xn--hdh782b; ; ;  # ︒.ⴃ≯
-xn--y86c.xn--bnd622g; ︒.Ⴃ≯; [V6]; xn--y86c.xn--bnd622g; ; ;  # ︒.Ⴃ≯
-𐹮｡󠢼‍; 𐹮.󠢼‍; [B1, C2, P1, V6]; xn--mo0d.xn--1ug18431l; ; xn--mo0d.xn--wy46e; [B1, P1, V6] # 𐹮.
-𐹮。󠢼‍; 𐹮.󠢼‍; [B1, C2, P1, V6]; xn--mo0d.xn--1ug18431l; ; xn--mo0d.xn--wy46e; [B1, P1, V6] # 𐹮.
-xn--mo0d.xn--wy46e; 𐹮.󠢼; [B1, V6]; xn--mo0d.xn--wy46e; ; ;  # 𐹮.
-xn--mo0d.xn--1ug18431l; 𐹮.󠢼‍; [B1, C2, V6]; xn--mo0d.xn--1ug18431l; ; ;  # 𐹮.
-Ⴞ𐹨｡︒ݽ‍Ⴏ; Ⴞ𐹨.︒ݽ‍Ⴏ; [B1, B5, B6, C2, P1, V6]; xn--2nd0990k.xn--eqb228bgzmvp0t; ; xn--2nd0990k.xn--eqb228b583r; [B1, B5, B6, P1, V6] # Ⴞ𐹨.︒ݽႯ
-Ⴞ𐹨。。ݽ‍Ⴏ; Ⴞ𐹨..ݽ‍Ⴏ; [B2, B3, B5, B6, C2, P1, V6, X4_2]; xn--2nd0990k..xn--eqb228bgzm; [B2, B3, B5, B6, C2, P1, V6, A4_2]; xn--2nd0990k..xn--eqb228b; [B2, B3, B5, B6, P1, V6, A4_2] # Ⴞ𐹨..ݽႯ
-ⴞ𐹨。。ݽ‍ⴏ; ⴞ𐹨..ݽ‍ⴏ; [B2, B3, B5, B6, C2, X4_2]; xn--mlju223e..xn--eqb096jpgj; [B2, B3, B5, B6, C2, A4_2]; xn--mlju223e..xn--eqb053q; [B2, B3, B5, B6, A4_2] # ⴞ𐹨..ݽⴏ
-Ⴞ𐹨。。ݽ‍ⴏ; Ⴞ𐹨..ݽ‍ⴏ; [B2, B3, B5, B6, C2, P1, V6, X4_2]; xn--2nd0990k..xn--eqb096jpgj; [B2, B3, B5, B6, C2, P1, V6, A4_2]; xn--2nd0990k..xn--eqb053q; [B2, B3, B5, B6, P1, V6, A4_2] # Ⴞ𐹨..ݽⴏ
-xn--2nd0990k..xn--eqb053q; Ⴞ𐹨..ݽⴏ; [B2, B3, B5, B6, V6, X4_2]; xn--2nd0990k..xn--eqb053q; [B2, B3, B5, B6, V6, A4_2]; ;  # Ⴞ𐹨..ݽⴏ
-xn--2nd0990k..xn--eqb096jpgj; Ⴞ𐹨..ݽ‍ⴏ; [B2, B3, B5, B6, C2, V6, X4_2]; xn--2nd0990k..xn--eqb096jpgj; [B2, B3, B5, B6, C2, V6, A4_2]; ;  # Ⴞ𐹨..ݽⴏ
-xn--mlju223e..xn--eqb053q; ⴞ𐹨..ݽⴏ; [B2, B3, B5, B6, X4_2]; xn--mlju223e..xn--eqb053q; [B2, B3, B5, B6, A4_2]; ;  # ⴞ𐹨..ݽⴏ
-xn--mlju223e..xn--eqb096jpgj; ⴞ𐹨..ݽ‍ⴏ; [B2, B3, B5, B6, C2, X4_2]; xn--mlju223e..xn--eqb096jpgj; [B2, B3, B5, B6, C2, A4_2]; ;  # ⴞ𐹨..ݽⴏ
-xn--2nd0990k..xn--eqb228b; Ⴞ𐹨..ݽႯ; [B2, B3, B5, B6, V6, X4_2]; xn--2nd0990k..xn--eqb228b; [B2, B3, B5, B6, V6, A4_2]; ;  # Ⴞ𐹨..ݽႯ
-xn--2nd0990k..xn--eqb228bgzm; Ⴞ𐹨..ݽ‍Ⴏ; [B2, B3, B5, B6, C2, V6, X4_2]; xn--2nd0990k..xn--eqb228bgzm; [B2, B3, B5, B6, C2, V6, A4_2]; ;  # Ⴞ𐹨..ݽႯ
-ⴞ𐹨｡︒ݽ‍ⴏ; ⴞ𐹨.︒ݽ‍ⴏ; [B1, B5, B6, C2, P1, V6]; xn--mlju223e.xn--eqb096jpgj9y7r; ; xn--mlju223e.xn--eqb053qjk7l; [B1, B5, B6, P1, V6] # ⴞ𐹨.︒ݽⴏ
-Ⴞ𐹨｡︒ݽ‍ⴏ; Ⴞ𐹨.︒ݽ‍ⴏ; [B1, B5, B6, C2, P1, V6]; xn--2nd0990k.xn--eqb096jpgj9y7r; ; xn--2nd0990k.xn--eqb053qjk7l; [B1, B5, B6, P1, V6] # Ⴞ𐹨.︒ݽⴏ
-xn--2nd0990k.xn--eqb053qjk7l; Ⴞ𐹨.︒ݽⴏ; [B1, B5, B6, V6]; xn--2nd0990k.xn--eqb053qjk7l; ; ;  # Ⴞ𐹨.︒ݽⴏ
-xn--2nd0990k.xn--eqb096jpgj9y7r; Ⴞ𐹨.︒ݽ‍ⴏ; [B1, B5, B6, C2, V6]; xn--2nd0990k.xn--eqb096jpgj9y7r; ; ;  # Ⴞ𐹨.︒ݽⴏ
-xn--mlju223e.xn--eqb053qjk7l; ⴞ𐹨.︒ݽⴏ; [B1, B5, B6, V6]; xn--mlju223e.xn--eqb053qjk7l; ; ;  # ⴞ𐹨.︒ݽⴏ
-xn--mlju223e.xn--eqb096jpgj9y7r; ⴞ𐹨.︒ݽ‍ⴏ; [B1, B5, B6, C2, V6]; xn--mlju223e.xn--eqb096jpgj9y7r; ; ;  # ⴞ𐹨.︒ݽⴏ
-xn--2nd0990k.xn--eqb228b583r; Ⴞ𐹨.︒ݽႯ; [B1, B5, B6, V6]; xn--2nd0990k.xn--eqb228b583r; ; ;  # Ⴞ𐹨.︒ݽႯ
-xn--2nd0990k.xn--eqb228bgzmvp0t; Ⴞ𐹨.︒ݽ‍Ⴏ; [B1, B5, B6, C2, V6]; xn--2nd0990k.xn--eqb228bgzmvp0t; ; ;  # Ⴞ𐹨.︒ݽႯ
-‌Ⴆ𝟹。-⃒-ߑ; ‌Ⴆ3.-⃒-ߑ; [B1, C1, P1, V3, V6]; xn--3-i0g939i.xn-----vue617w; ; xn--3-i0g.xn-----vue617w; [B1, P1, V3, V6] # Ⴆ3.-⃒-ߑ
-‌Ⴆ3。-⃒-ߑ; ‌Ⴆ3.-⃒-ߑ; [B1, C1, P1, V3, V6]; xn--3-i0g939i.xn-----vue617w; ; xn--3-i0g.xn-----vue617w; [B1, P1, V3, V6] # Ⴆ3.-⃒-ߑ
-‌ⴆ3。-⃒-ߑ; ‌ⴆ3.-⃒-ߑ; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; xn--3-lvs.xn-----vue617w; [B1, V3] # ⴆ3.-⃒-ߑ
-xn--3-lvs.xn-----vue617w; ⴆ3.-⃒-ߑ; [B1, V3]; xn--3-lvs.xn-----vue617w; ; ;  # ⴆ3.-⃒-ߑ
-xn--3-rgnv99c.xn-----vue617w; ‌ⴆ3.-⃒-ߑ; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; ;  # ⴆ3.-⃒-ߑ
-xn--3-i0g.xn-----vue617w; Ⴆ3.-⃒-ߑ; [B1, V3, V6]; xn--3-i0g.xn-----vue617w; ; ;  # Ⴆ3.-⃒-ߑ
-xn--3-i0g939i.xn-----vue617w; ‌Ⴆ3.-⃒-ߑ; [B1, C1, V3, V6]; xn--3-i0g939i.xn-----vue617w; ; ;  # Ⴆ3.-⃒-ߑ
-‌ⴆ𝟹。-⃒-ߑ; ‌ⴆ3.-⃒-ߑ; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; xn--3-lvs.xn-----vue617w; [B1, V3] # ⴆ3.-⃒-ߑ
-箃Ⴡ-󠁝｡≠-🤖; 箃Ⴡ-󠁝.≠-🤖; [P1, V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ;  # 箃Ⴡ-.≠-🤖
-箃Ⴡ-󠁝｡≠-🤖; 箃Ⴡ-󠁝.≠-🤖; [P1, V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ;  # 箃Ⴡ-.≠-🤖
-箃Ⴡ-󠁝。≠-🤖; 箃Ⴡ-󠁝.≠-🤖; [P1, V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ;  # 箃Ⴡ-.≠-🤖
-箃Ⴡ-󠁝。≠-🤖; 箃Ⴡ-󠁝.≠-🤖; [P1, V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ;  # 箃Ⴡ-.≠-🤖
-箃ⴡ-󠁝。≠-🤖; 箃ⴡ-󠁝.≠-🤖; [P1, V6]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
-箃ⴡ-󠁝。≠-🤖; 箃ⴡ-󠁝.≠-🤖; [P1, V6]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
-xn----4wsr321ay823p.xn----tfot873s; 箃ⴡ-󠁝.≠-🤖; [V6]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
-xn----11g3013fy8x5m.xn----tfot873s; 箃Ⴡ-󠁝.≠-🤖; [V6]; xn----11g3013fy8x5m.xn----tfot873s; ; ;  # 箃Ⴡ-.≠-🤖
-箃ⴡ-󠁝｡≠-🤖; 箃ⴡ-󠁝.≠-🤖; [P1, V6]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
-箃ⴡ-󠁝｡≠-🤖; 箃ⴡ-󠁝.≠-🤖; [P1, V6]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
-ߥ.ڵ; ; ; xn--dtb.xn--okb; ; ;  # ߥ.ڵ
-xn--dtb.xn--okb; ߥ.ڵ; ; xn--dtb.xn--okb; ; ;  # ߥ.ڵ
-‌‍.𞤿; ; [B1, C1, C2]; xn--0ugc.xn--3e6h; ; .xn--3e6h; [A4_2] # .𞤿
-‌‍.𞤝; ‌‍.𞤿; [B1, C1, C2]; xn--0ugc.xn--3e6h; ; .xn--3e6h; [A4_2] # .𞤿
+xn--c8e.xn--bbf9168i; ᡌ.︒ᢑ; [V7]; xn--c8e.xn--bbf9168i; ; ;  # ᡌ.︒ᢑ
+𑋪\u1073｡𞽧; 𑋪\u1073.𞽧; [B1, V6, V7]; xn--xld7443k.xn--4o7h; ; ;  # 𑋪ၳ.
+𑋪\u1073。𞽧; 𑋪\u1073.𞽧; [B1, V6, V7]; xn--xld7443k.xn--4o7h; ; ;  # 𑋪ၳ.
+xn--xld7443k.xn--4o7h; 𑋪\u1073.𞽧; [B1, V6, V7]; xn--xld7443k.xn--4o7h; ; ;  # 𑋪ၳ.
+𞷏。ᠢ򓘆; 𞷏.ᠢ򓘆; [V7]; xn--hd7h.xn--46e66060j; ; ;  # .ᠢ
+xn--hd7h.xn--46e66060j; 𞷏.ᠢ򓘆; [V7]; xn--hd7h.xn--46e66060j; ; ;  # .ᠢ
+𑄳㴼．\u200C𐹡\u20EB񫺦; 𑄳㴼.\u200C𐹡\u20EB񫺦; [B1, C1, V6, V7]; xn--iym9428c.xn--0ug46a7218cllv0c; ; xn--iym9428c.xn--e1g3464g08p3b; [B1, V6, V7] # 𑄳㴼.𐹡⃫
+𑄳㴼.\u200C𐹡\u20EB񫺦; ; [B1, C1, V6, V7]; xn--iym9428c.xn--0ug46a7218cllv0c; ; xn--iym9428c.xn--e1g3464g08p3b; [B1, V6, V7] # 𑄳㴼.𐹡⃫
+xn--iym9428c.xn--e1g3464g08p3b; 𑄳㴼.𐹡\u20EB񫺦; [B1, V6, V7]; xn--iym9428c.xn--e1g3464g08p3b; ; ;  # 𑄳㴼.𐹡⃫
+xn--iym9428c.xn--0ug46a7218cllv0c; 𑄳㴼.\u200C𐹡\u20EB񫺦; [B1, C1, V6, V7]; xn--iym9428c.xn--0ug46a7218cllv0c; ; ;  # 𑄳㴼.𐹡⃫
+񠻟𐹳𑈯｡\u031D; 񠻟𐹳𑈯.\u031D; [B1, B5, B6, V6, V7]; xn--ro0dw7dey96m.xn--eta; ; ;  # 𐹳𑈯.̝
+񠻟𐹳𑈯。\u031D; 񠻟𐹳𑈯.\u031D; [B1, B5, B6, V6, V7]; xn--ro0dw7dey96m.xn--eta; ; ;  # 𐹳𑈯.̝
+xn--ro0dw7dey96m.xn--eta; 񠻟𐹳𑈯.\u031D; [B1, B5, B6, V6, V7]; xn--ro0dw7dey96m.xn--eta; ; ;  # 𐹳𑈯.̝
+ᢊ뾜󠱴𑚶。\u089D𐹥; ᢊ뾜󠱴𑚶.\u089D𐹥; [B1, V6, V7]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ;  # ᢊ뾜𑚶.࢝𐹥
+ᢊ뾜󠱴𑚶。\u089D𐹥; ᢊ뾜󠱴𑚶.\u089D𐹥; [B1, V6, V7]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ;  # ᢊ뾜𑚶.࢝𐹥
+xn--39e4566fjv8bwmt6n.xn--myb6415k; ᢊ뾜󠱴𑚶.\u089D𐹥; [B1, V6, V7]; xn--39e4566fjv8bwmt6n.xn--myb6415k; ; ;  # ᢊ뾜𑚶.࢝𐹥
+𐹥≠｡𐋲󠧠\u200C; 𐹥≠.𐋲󠧠\u200C; [B1, C1, V7]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, V7] # 𐹥≠.𐋲
+𐹥=\u0338｡𐋲󠧠\u200C; 𐹥≠.𐋲󠧠\u200C; [B1, C1, V7]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, V7] # 𐹥≠.𐋲
+𐹥≠。𐋲󠧠\u200C; 𐹥≠.𐋲󠧠\u200C; [B1, C1, V7]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, V7] # 𐹥≠.𐋲
+𐹥=\u0338。𐋲󠧠\u200C; 𐹥≠.𐋲󠧠\u200C; [B1, C1, V7]; xn--1ch6704g.xn--0ug3840g51u4g; ; xn--1ch6704g.xn--m97cw2999c; [B1, V7] # 𐹥≠.𐋲
+xn--1ch6704g.xn--m97cw2999c; 𐹥≠.𐋲󠧠; [B1, V7]; xn--1ch6704g.xn--m97cw2999c; ; ;  # 𐹥≠.𐋲
+xn--1ch6704g.xn--0ug3840g51u4g; 𐹥≠.𐋲󠧠\u200C; [B1, C1, V7]; xn--1ch6704g.xn--0ug3840g51u4g; ; ;  # 𐹥≠.𐋲
+\u115F񙯠\u094D．\u200D\uA953𐪤; 񙯠\u094D.\u200D\uA953𐪤; [B1, C2, V7]; xn--n3b91514e.xn--1ug6815co9wc; ; xn--n3b91514e.xn--3j9al95p; [B5, B6, V6, V7] # ्.꥓
+\u115F񙯠\u094D.\u200D\uA953𐪤; 񙯠\u094D.\u200D\uA953𐪤; [B1, C2, V7]; xn--n3b91514e.xn--1ug6815co9wc; ; xn--n3b91514e.xn--3j9al95p; [B5, B6, V6, V7] # ्.꥓
+xn--n3b91514e.xn--3j9al95p; 񙯠\u094D.\uA953𐪤; [B5, B6, V6, V7]; xn--n3b91514e.xn--3j9al95p; ; ;  # ्.꥓
+xn--n3b91514e.xn--1ug6815co9wc; 񙯠\u094D.\u200D\uA953𐪤; [B1, C2, V7]; xn--n3b91514e.xn--1ug6815co9wc; ; ;  # ्.꥓
+xn--n3b542bb085j.xn--3j9al95p; \u115F񙯠\u094D.\uA953𐪤; [B5, B6, V6, V7]; xn--n3b542bb085j.xn--3j9al95p; ; ;  # ्.꥓
+xn--n3b542bb085j.xn--1ug6815co9wc; \u115F񙯠\u094D.\u200D\uA953𐪤; [B1, C2, V7]; xn--n3b542bb085j.xn--1ug6815co9wc; ; ;  # ्.꥓
+򌋔󠆎󠆗𑲕。≮; 򌋔𑲕.≮; [V7]; xn--4m3dv4354a.xn--gdh; ; ;  # 𑲕.≮
+򌋔󠆎󠆗𑲕。<\u0338; 򌋔𑲕.≮; [V7]; xn--4m3dv4354a.xn--gdh; ; ;  # 𑲕.≮
+xn--4m3dv4354a.xn--gdh; 򌋔𑲕.≮; [V7]; xn--4m3dv4354a.xn--gdh; ; ;  # 𑲕.≮
+󠆦.\u08E3暀≠; .\u08E3暀≠; [V6, X4_2]; .xn--m0b461k3g2c; [V6, A4_2]; ;  # .ࣣ暀≠
+󠆦.\u08E3暀=\u0338; .\u08E3暀≠; [V6, X4_2]; .xn--m0b461k3g2c; [V6, A4_2]; ;  # .ࣣ暀≠
+.xn--m0b461k3g2c; .\u08E3暀≠; [V6, X4_2]; .xn--m0b461k3g2c; [V6, A4_2]; ;  # .ࣣ暀≠
+𐡤\uABED｡\uFD30򜖅\u1DF0; 𐡤\uABED.\u0634\u0645򜖅\u1DF0; [B2, B3, V7]; xn--429ak76o.xn--zgb8a701kox37t; ; ;  # 𐡤꯭.شمᷰ
+𐡤\uABED。\u0634\u0645򜖅\u1DF0; 𐡤\uABED.\u0634\u0645򜖅\u1DF0; [B2, B3, V7]; xn--429ak76o.xn--zgb8a701kox37t; ; ;  # 𐡤꯭.شمᷰ
+xn--429ak76o.xn--zgb8a701kox37t; 𐡤\uABED.\u0634\u0645򜖅\u1DF0; [B2, B3, V7]; xn--429ak76o.xn--zgb8a701kox37t; ; ;  # 𐡤꯭.شمᷰ
+𝉃\u200D⒈｡Ⴌ𞱓; 𝉃\u200D⒈.ⴌ𞱓; [B1, B5, B6, C2, V6, V7]; xn--1ug68oq348b.xn--3kj4524l; ; xn--tshz828m.xn--3kj4524l; [B1, B5, B6, V6, V7] # 𝉃⒈.ⴌ
+𝉃\u200D1.。Ⴌ𞱓; 𝉃\u200D1..ⴌ𞱓; [B1, B5, B6, C2, V6, V7, X4_2]; xn--1-tgn9827q..xn--3kj4524l; [B1, B5, B6, C2, V6, V7, A4_2]; xn--1-px8q..xn--3kj4524l; [B1, B5, B6, V6, V7, A4_2] # 𝉃1..ⴌ
+𝉃\u200D1.。ⴌ𞱓; 𝉃\u200D1..ⴌ𞱓; [B1, B5, B6, C2, V6, V7, X4_2]; xn--1-tgn9827q..xn--3kj4524l; [B1, B5, B6, C2, V6, V7, A4_2]; xn--1-px8q..xn--3kj4524l; [B1, B5, B6, V6, V7, A4_2] # 𝉃1..ⴌ
+xn--1-px8q..xn--3kj4524l; 𝉃1..ⴌ𞱓; [B1, B5, B6, V6, V7, X4_2]; xn--1-px8q..xn--3kj4524l; [B1, B5, B6, V6, V7, A4_2]; ;  # 𝉃1..ⴌ
+xn--1-tgn9827q..xn--3kj4524l; 𝉃\u200D1..ⴌ𞱓; [B1, B5, B6, C2, V6, V7, X4_2]; xn--1-tgn9827q..xn--3kj4524l; [B1, B5, B6, C2, V6, V7, A4_2]; ;  # 𝉃1..ⴌ
+𝉃\u200D⒈｡ⴌ𞱓; 𝉃\u200D⒈.ⴌ𞱓; [B1, B5, B6, C2, V6, V7]; xn--1ug68oq348b.xn--3kj4524l; ; xn--tshz828m.xn--3kj4524l; [B1, B5, B6, V6, V7] # 𝉃⒈.ⴌ
+xn--tshz828m.xn--3kj4524l; 𝉃⒈.ⴌ𞱓; [B1, B5, B6, V6, V7]; xn--tshz828m.xn--3kj4524l; ; ;  # 𝉃⒈.ⴌ
+xn--1ug68oq348b.xn--3kj4524l; 𝉃\u200D⒈.ⴌ𞱓; [B1, B5, B6, C2, V6, V7]; xn--1ug68oq348b.xn--3kj4524l; ; ;  # 𝉃⒈.ⴌ
+xn--1-px8q..xn--knd8464v; 𝉃1..Ⴌ𞱓; [B1, B5, B6, V6, V7, X4_2]; xn--1-px8q..xn--knd8464v; [B1, B5, B6, V6, V7, A4_2]; ;  # 𝉃1..Ⴌ
+xn--1-tgn9827q..xn--knd8464v; 𝉃\u200D1..Ⴌ𞱓; [B1, B5, B6, C2, V6, V7, X4_2]; xn--1-tgn9827q..xn--knd8464v; [B1, B5, B6, C2, V6, V7, A4_2]; ;  # 𝉃1..Ⴌ
+xn--tshz828m.xn--knd8464v; 𝉃⒈.Ⴌ𞱓; [B1, B5, B6, V6, V7]; xn--tshz828m.xn--knd8464v; ; ;  # 𝉃⒈.Ⴌ
+xn--1ug68oq348b.xn--knd8464v; 𝉃\u200D⒈.Ⴌ𞱓; [B1, B5, B6, C2, V6, V7]; xn--1ug68oq348b.xn--knd8464v; ; ;  # 𝉃⒈.Ⴌ
+󠣙\u0A4D𱫘𞤸.ς񵯞􈰔; ; [B1, V7]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b;  # ੍𱫘𞤸.ς
+󠣙\u0A4D𱫘𞤖.Σ񵯞􈰔; 󠣙\u0A4D𱫘𞤸.σ񵯞􈰔; [B1, V7]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ;  # ੍𱫘𞤸.σ
+󠣙\u0A4D𱫘𞤸.σ񵯞􈰔; ; [B1, V7]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ;  # ੍𱫘𞤸.σ
+󠣙\u0A4D𱫘𞤖.σ񵯞􈰔; 󠣙\u0A4D𱫘𞤸.σ񵯞􈰔; [B1, V7]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ;  # ੍𱫘𞤸.σ
+xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; 󠣙\u0A4D𱫘𞤸.σ񵯞􈰔; [B1, V7]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ;  # ੍𱫘𞤸.σ
+󠣙\u0A4D𱫘𞤖.ς񵯞􈰔; 󠣙\u0A4D𱫘𞤸.ς񵯞􈰔; [B1, V7]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b;  # ੍𱫘𞤸.ς
+xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; 󠣙\u0A4D𱫘𞤸.ς񵯞􈰔; [B1, V7]; xn--ybc0236vjvxgt5q0g.xn--3xa03737giye6b; ; ;  # ੍𱫘𞤸.ς
+󠣙\u0A4D𱫘𞤸.Σ񵯞􈰔; 󠣙\u0A4D𱫘𞤸.σ񵯞􈰔; [B1, V7]; xn--ybc0236vjvxgt5q0g.xn--4xa82737giye6b; ; ;  # ੍𱫘𞤸.σ
+\u07D3。\u200C𐫀򞭱; \u07D3.\u200C𐫀򞭱; [B1, C1, V7]; xn--usb.xn--0ug9553gm3v5d; ; xn--usb.xn--pw9ci1099a; [B2, B3, V7] # ߓ.𐫀
+xn--usb.xn--pw9ci1099a; \u07D3.𐫀򞭱; [B2, B3, V7]; xn--usb.xn--pw9ci1099a; ; ;  # ߓ.𐫀
+xn--usb.xn--0ug9553gm3v5d; \u07D3.\u200C𐫀򞭱; [B1, C1, V7]; xn--usb.xn--0ug9553gm3v5d; ; ;  # ߓ.𐫀
+\u1C2E𞀝.\u05A6ꡟ𞤕󠆖; \u1C2E𞀝.\u05A6ꡟ𞤷; [B1, V6]; xn--q1f4493q.xn--xcb8244fifvj; ; ;  # ᰮ𞀝.֦ꡟ𞤷
+\u1C2E𞀝.\u05A6ꡟ𞤷󠆖; \u1C2E𞀝.\u05A6ꡟ𞤷; [B1, V6]; xn--q1f4493q.xn--xcb8244fifvj; ; ;  # ᰮ𞀝.֦ꡟ𞤷
+xn--q1f4493q.xn--xcb8244fifvj; \u1C2E𞀝.\u05A6ꡟ𞤷; [B1, V6]; xn--q1f4493q.xn--xcb8244fifvj; ; ;  # ᰮ𞀝.֦ꡟ𞤷
+䂹󾖅𐋦．\u200D; 䂹󾖅𐋦.\u200D; [C2, V7]; xn--0on3543c5981i.xn--1ug; ; xn--0on3543c5981i.; [V7, A4_2] # 䂹𐋦.
+䂹󾖅𐋦.\u200D; ; [C2, V7]; xn--0on3543c5981i.xn--1ug; ; xn--0on3543c5981i.; [V7, A4_2] # 䂹𐋦.
+xn--0on3543c5981i.; 䂹󾖅𐋦.; [V7]; xn--0on3543c5981i.; [V7, A4_2]; ;  # 䂹𐋦.
+xn--0on3543c5981i.xn--1ug; 䂹󾖅𐋦.\u200D; [C2, V7]; xn--0on3543c5981i.xn--1ug; ; ;  # 䂹𐋦.
+\uA9C0\u200C𐹲\u200C｡\u0767🄉; \uA9C0\u200C𐹲\u200C.\u07678,; [B3, B5, B6, C1, V6, U1]; xn--0uga8686hdgvd.xn--8,-qle; ; xn--7m9an32q.xn--8,-qle; [B3, B5, B6, V6, U1] # ꧀𐹲.ݧ8,
+\uA9C0\u200C𐹲\u200C。\u07678,; \uA9C0\u200C𐹲\u200C.\u07678,; [B3, B5, B6, C1, V6, U1]; xn--0uga8686hdgvd.xn--8,-qle; ; xn--7m9an32q.xn--8,-qle; [B3, B5, B6, V6, U1] # ꧀𐹲.ݧ8,
+xn--7m9an32q.xn--8,-qle; \uA9C0𐹲.\u07678,; [B3, B5, B6, V6, U1]; xn--7m9an32q.xn--8,-qle; ; ;  # ꧀𐹲.ݧ8,
+xn--0uga8686hdgvd.xn--8,-qle; \uA9C0\u200C𐹲\u200C.\u07678,; [B3, B5, B6, C1, V6, U1]; xn--0uga8686hdgvd.xn--8,-qle; ; ;  # ꧀𐹲.ݧ8,
+xn--7m9an32q.xn--rpb6081w; \uA9C0𐹲.\u0767🄉; [B5, B6, V6, V7]; xn--7m9an32q.xn--rpb6081w; ; ;  # ꧀𐹲.ݧ🄉
+xn--0uga8686hdgvd.xn--rpb6081w; \uA9C0\u200C𐹲\u200C.\u0767🄉; [B5, B6, C1, V6, V7]; xn--0uga8686hdgvd.xn--rpb6081w; ; ;  # ꧀𐹲.ݧ🄉
+︒｡Ⴃ≯; ︒.ⴃ≯; [V7]; xn--y86c.xn--hdh782b; ; ;  # ︒.ⴃ≯
+︒｡Ⴃ>\u0338; ︒.ⴃ≯; [V7]; xn--y86c.xn--hdh782b; ; ;  # ︒.ⴃ≯
+。。Ⴃ≯; ..ⴃ≯; [X4_2]; ..xn--hdh782b; [A4_2]; ;  # ..ⴃ≯
+。。Ⴃ>\u0338; ..ⴃ≯; [X4_2]; ..xn--hdh782b; [A4_2]; ;  # ..ⴃ≯
+。。ⴃ>\u0338; ..ⴃ≯; [X4_2]; ..xn--hdh782b; [A4_2]; ;  # ..ⴃ≯
+。。ⴃ≯; ..ⴃ≯; [X4_2]; ..xn--hdh782b; [A4_2]; ;  # ..ⴃ≯
+..xn--hdh782b; ..ⴃ≯; [X4_2]; ..xn--hdh782b; [A4_2]; ;  # ..ⴃ≯
+︒｡ⴃ>\u0338; ︒.ⴃ≯; [V7]; xn--y86c.xn--hdh782b; ; ;  # ︒.ⴃ≯
+︒｡ⴃ≯; ︒.ⴃ≯; [V7]; xn--y86c.xn--hdh782b; ; ;  # ︒.ⴃ≯
+xn--y86c.xn--hdh782b; ︒.ⴃ≯; [V7]; xn--y86c.xn--hdh782b; ; ;  # ︒.ⴃ≯
+..xn--bnd622g; ..Ⴃ≯; [V7, X4_2]; ..xn--bnd622g; [V7, A4_2]; ;  # ..Ⴃ≯
+xn--y86c.xn--bnd622g; ︒.Ⴃ≯; [V7]; xn--y86c.xn--bnd622g; ; ;  # ︒.Ⴃ≯
+𐹮｡󠢼\u200D; 𐹮.󠢼\u200D; [B1, C2, V7]; xn--mo0d.xn--1ug18431l; ; xn--mo0d.xn--wy46e; [B1, V7] # 𐹮.
+𐹮。󠢼\u200D; 𐹮.󠢼\u200D; [B1, C2, V7]; xn--mo0d.xn--1ug18431l; ; xn--mo0d.xn--wy46e; [B1, V7] # 𐹮.
+xn--mo0d.xn--wy46e; 𐹮.󠢼; [B1, V7]; xn--mo0d.xn--wy46e; ; ;  # 𐹮.
+xn--mo0d.xn--1ug18431l; 𐹮.󠢼\u200D; [B1, C2, V7]; xn--mo0d.xn--1ug18431l; ; ;  # 𐹮.
+Ⴞ𐹨｡︒\u077D\u200DႯ; ⴞ𐹨.︒\u077D\u200Dⴏ; [B1, B5, B6, C2, V7]; xn--mlju223e.xn--eqb096jpgj9y7r; ; xn--mlju223e.xn--eqb053qjk7l; [B1, B5, B6, V7] # ⴞ𐹨.︒ݽⴏ
+Ⴞ𐹨。。\u077D\u200DႯ; ⴞ𐹨..\u077D\u200Dⴏ; [B2, B3, B5, B6, C2, X4_2]; xn--mlju223e..xn--eqb096jpgj; [B2, B3, B5, B6, C2, A4_2]; xn--mlju223e..xn--eqb053q; [B2, B3, B5, B6, A4_2] # ⴞ𐹨..ݽⴏ
+ⴞ𐹨。。\u077D\u200Dⴏ; ⴞ𐹨..\u077D\u200Dⴏ; [B2, B3, B5, B6, C2, X4_2]; xn--mlju223e..xn--eqb096jpgj; [B2, B3, B5, B6, C2, A4_2]; xn--mlju223e..xn--eqb053q; [B2, B3, B5, B6, A4_2] # ⴞ𐹨..ݽⴏ
+Ⴞ𐹨。。\u077D\u200Dⴏ; ⴞ𐹨..\u077D\u200Dⴏ; [B2, B3, B5, B6, C2, X4_2]; xn--mlju223e..xn--eqb096jpgj; [B2, B3, B5, B6, C2, A4_2]; xn--mlju223e..xn--eqb053q; [B2, B3, B5, B6, A4_2] # ⴞ𐹨..ݽⴏ
+xn--mlju223e..xn--eqb053q; ⴞ𐹨..\u077Dⴏ; [B2, B3, B5, B6, X4_2]; xn--mlju223e..xn--eqb053q; [B2, B3, B5, B6, A4_2]; ;  # ⴞ𐹨..ݽⴏ
+xn--mlju223e..xn--eqb096jpgj; ⴞ𐹨..\u077D\u200Dⴏ; [B2, B3, B5, B6, C2, X4_2]; xn--mlju223e..xn--eqb096jpgj; [B2, B3, B5, B6, C2, A4_2]; ;  # ⴞ𐹨..ݽⴏ
+ⴞ𐹨｡︒\u077D\u200Dⴏ; ⴞ𐹨.︒\u077D\u200Dⴏ; [B1, B5, B6, C2, V7]; xn--mlju223e.xn--eqb096jpgj9y7r; ; xn--mlju223e.xn--eqb053qjk7l; [B1, B5, B6, V7] # ⴞ𐹨.︒ݽⴏ
+Ⴞ𐹨｡︒\u077D\u200Dⴏ; ⴞ𐹨.︒\u077D\u200Dⴏ; [B1, B5, B6, C2, V7]; xn--mlju223e.xn--eqb096jpgj9y7r; ; xn--mlju223e.xn--eqb053qjk7l; [B1, B5, B6, V7] # ⴞ𐹨.︒ݽⴏ
+xn--mlju223e.xn--eqb053qjk7l; ⴞ𐹨.︒\u077Dⴏ; [B1, B5, B6, V7]; xn--mlju223e.xn--eqb053qjk7l; ; ;  # ⴞ𐹨.︒ݽⴏ
+xn--mlju223e.xn--eqb096jpgj9y7r; ⴞ𐹨.︒\u077D\u200Dⴏ; [B1, B5, B6, C2, V7]; xn--mlju223e.xn--eqb096jpgj9y7r; ; ;  # ⴞ𐹨.︒ݽⴏ
+xn--2nd0990k..xn--eqb053q; Ⴞ𐹨..\u077Dⴏ; [B2, B3, B5, B6, V7, X4_2]; xn--2nd0990k..xn--eqb053q; [B2, B3, B5, B6, V7, A4_2]; ;  # Ⴞ𐹨..ݽⴏ
+xn--2nd0990k..xn--eqb096jpgj; Ⴞ𐹨..\u077D\u200Dⴏ; [B2, B3, B5, B6, C2, V7, X4_2]; xn--2nd0990k..xn--eqb096jpgj; [B2, B3, B5, B6, C2, V7, A4_2]; ;  # Ⴞ𐹨..ݽⴏ
+xn--2nd0990k..xn--eqb228b; Ⴞ𐹨..\u077DႯ; [B2, B3, B5, B6, V7, X4_2]; xn--2nd0990k..xn--eqb228b; [B2, B3, B5, B6, V7, A4_2]; ;  # Ⴞ𐹨..ݽႯ
+xn--2nd0990k..xn--eqb228bgzm; Ⴞ𐹨..\u077D\u200DႯ; [B2, B3, B5, B6, C2, V7, X4_2]; xn--2nd0990k..xn--eqb228bgzm; [B2, B3, B5, B6, C2, V7, A4_2]; ;  # Ⴞ𐹨..ݽႯ
+xn--2nd0990k.xn--eqb053qjk7l; Ⴞ𐹨.︒\u077Dⴏ; [B1, B5, B6, V7]; xn--2nd0990k.xn--eqb053qjk7l; ; ;  # Ⴞ𐹨.︒ݽⴏ
+xn--2nd0990k.xn--eqb096jpgj9y7r; Ⴞ𐹨.︒\u077D\u200Dⴏ; [B1, B5, B6, C2, V7]; xn--2nd0990k.xn--eqb096jpgj9y7r; ; ;  # Ⴞ𐹨.︒ݽⴏ
+xn--2nd0990k.xn--eqb228b583r; Ⴞ𐹨.︒\u077DႯ; [B1, B5, B6, V7]; xn--2nd0990k.xn--eqb228b583r; ; ;  # Ⴞ𐹨.︒ݽႯ
+xn--2nd0990k.xn--eqb228bgzmvp0t; Ⴞ𐹨.︒\u077D\u200DႯ; [B1, B5, B6, C2, V7]; xn--2nd0990k.xn--eqb228bgzmvp0t; ; ;  # Ⴞ𐹨.︒ݽႯ
+\u200CႦ𝟹。-\u20D2-\u07D1; \u200Cⴆ3.-\u20D2-\u07D1; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; xn--3-lvs.xn-----vue617w; [B1, V3] # ⴆ3.-⃒-ߑ
+\u200CႦ3。-\u20D2-\u07D1; \u200Cⴆ3.-\u20D2-\u07D1; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; xn--3-lvs.xn-----vue617w; [B1, V3] # ⴆ3.-⃒-ߑ
+\u200Cⴆ3。-\u20D2-\u07D1; \u200Cⴆ3.-\u20D2-\u07D1; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; xn--3-lvs.xn-----vue617w; [B1, V3] # ⴆ3.-⃒-ߑ
+xn--3-lvs.xn-----vue617w; ⴆ3.-\u20D2-\u07D1; [B1, V3]; xn--3-lvs.xn-----vue617w; ; ;  # ⴆ3.-⃒-ߑ
+xn--3-rgnv99c.xn-----vue617w; \u200Cⴆ3.-\u20D2-\u07D1; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; ;  # ⴆ3.-⃒-ߑ
+\u200Cⴆ𝟹。-\u20D2-\u07D1; \u200Cⴆ3.-\u20D2-\u07D1; [B1, C1, V3]; xn--3-rgnv99c.xn-----vue617w; ; xn--3-lvs.xn-----vue617w; [B1, V3] # ⴆ3.-⃒-ߑ
+xn--3-i0g.xn-----vue617w; Ⴆ3.-\u20D2-\u07D1; [B1, V3, V7]; xn--3-i0g.xn-----vue617w; ; ;  # Ⴆ3.-⃒-ߑ
+xn--3-i0g939i.xn-----vue617w; \u200CႦ3.-\u20D2-\u07D1; [B1, C1, V3, V7]; xn--3-i0g939i.xn-----vue617w; ; ;  # Ⴆ3.-⃒-ߑ
+箃Ⴡ-󠁝｡≠-🤖; 箃ⴡ-󠁝.≠-🤖; [V7]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
+箃Ⴡ-󠁝｡=\u0338-🤖; 箃ⴡ-󠁝.≠-🤖; [V7]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
+箃Ⴡ-󠁝。≠-🤖; 箃ⴡ-󠁝.≠-🤖; [V7]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
+箃Ⴡ-󠁝。=\u0338-🤖; 箃ⴡ-󠁝.≠-🤖; [V7]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
+箃ⴡ-󠁝。=\u0338-🤖; 箃ⴡ-󠁝.≠-🤖; [V7]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
+箃ⴡ-󠁝。≠-🤖; 箃ⴡ-󠁝.≠-🤖; [V7]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
+xn----4wsr321ay823p.xn----tfot873s; 箃ⴡ-󠁝.≠-🤖; [V7]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
+箃ⴡ-󠁝｡=\u0338-🤖; 箃ⴡ-󠁝.≠-🤖; [V7]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
+箃ⴡ-󠁝｡≠-🤖; 箃ⴡ-󠁝.≠-🤖; [V7]; xn----4wsr321ay823p.xn----tfot873s; ; ;  # 箃ⴡ-.≠-🤖
+xn----11g3013fy8x5m.xn----tfot873s; 箃Ⴡ-󠁝.≠-🤖; [V7]; xn----11g3013fy8x5m.xn----tfot873s; ; ;  # 箃Ⴡ-.≠-🤖
+\u07E5.\u06B5; ; ; xn--dtb.xn--okb; ; ;  # ߥ.ڵ
+xn--dtb.xn--okb; \u07E5.\u06B5; ; xn--dtb.xn--okb; ; ;  # ߥ.ڵ
+\u200C\u200D.𞤿; ; [B1, C1, C2]; xn--0ugc.xn--3e6h; ; .xn--3e6h; [A4_2] # .𞤿
+\u200C\u200D.𞤝; \u200C\u200D.𞤿; [B1, C1, C2]; xn--0ugc.xn--3e6h; ; .xn--3e6h; [A4_2] # .𞤿
 .xn--3e6h; .𞤿; [X4_2]; .xn--3e6h; [A4_2]; ;  # .𞤿
-xn--0ugc.xn--3e6h; ‌‍.𞤿; [B1, C1, C2]; xn--0ugc.xn--3e6h; ; ;  # .𞤿
+xn--0ugc.xn--3e6h; \u200C\u200D.𞤿; [B1, C1, C2]; xn--0ugc.xn--3e6h; ; ;  # .𞤿
 xn--3e6h; 𞤿; ; xn--3e6h; ; ;  # 𞤿
 𞤿; ; ; xn--3e6h; ; ;  # 𞤿
 𞤝; 𞤿; ; xn--3e6h; ; ;  # 𞤿
-🜑𐹧ع.ς𑍍蜹; ; [B1]; xn--4gb3736kk4zf.xn--3xa4248dy27d; ; xn--4gb3736kk4zf.xn--4xa2248dy27d;  # 🜑𐹧ع.ς𑍍蜹
-🜑𐹧ع.Σ𑍍蜹; 🜑𐹧ع.σ𑍍蜹; [B1]; xn--4gb3736kk4zf.xn--4xa2248dy27d; ; ;  # 🜑𐹧ع.σ𑍍蜹
-🜑𐹧ع.σ𑍍蜹; ; [B1]; xn--4gb3736kk4zf.xn--4xa2248dy27d; ; ;  # 🜑𐹧ع.σ𑍍蜹
-xn--4gb3736kk4zf.xn--4xa2248dy27d; 🜑𐹧ع.σ𑍍蜹; [B1]; xn--4gb3736kk4zf.xn--4xa2248dy27d; ; ;  # 🜑𐹧ع.σ𑍍蜹
-xn--4gb3736kk4zf.xn--3xa4248dy27d; 🜑𐹧ع.ς𑍍蜹; [B1]; xn--4gb3736kk4zf.xn--3xa4248dy27d; ; ;  # 🜑𐹧ع.ς𑍍蜹
-򫠐ス􆟤٩．󚃟; 򫠐ス􆟤٩.󚃟; [B5, B6, P1, V6]; xn--iib777sp230oo708a.xn--7824e; ; ;  # ス٩.
-򫠐ス􆟤٩.󚃟; ; [B5, B6, P1, V6]; xn--iib777sp230oo708a.xn--7824e; ; ;  # ス٩.
-xn--iib777sp230oo708a.xn--7824e; 򫠐ス􆟤٩.󚃟; [B5, B6, V6]; xn--iib777sp230oo708a.xn--7824e; ; ;  # ス٩.
-𝪣򕡝．֚?ۂ; 𝪣򕡝.֚?ۂ; [B1, P1, V5, V6]; xn--8c3hu7971a.֚?ۂ; [B1, P1, V5, V6, A3]; ;  # 𝪣.֚ۂ
-𝪣򕡝．֚?ۂ; 𝪣򕡝.֚?ۂ; [B1, P1, V5, V6]; xn--8c3hu7971a.֚?ۂ; [B1, P1, V5, V6, A3]; ;  # 𝪣.֚ۂ
-𝪣򕡝.֚?ۂ; ; [B1, P1, V5, V6]; xn--8c3hu7971a.֚?ۂ; [B1, P1, V5, V6, A3]; ;  # 𝪣.֚ۂ
-𝪣򕡝.֚?ۂ; 𝪣򕡝.֚?ۂ; [B1, P1, V5, V6]; xn--8c3hu7971a.֚?ۂ; [B1, P1, V5, V6, A3]; ;  # 𝪣.֚ۂ
-xn--8c3hu7971a.֚?ۂ; 𝪣򕡝.֚?ۂ; [B1, P1, V5, V6]; xn--8c3hu7971a.֚?ۂ; [B1, P1, V5, V6, A3]; ;  # 𝪣.֚ۂ
-xn--8c3hu7971a.֚?ۂ; 𝪣򕡝.֚?ۂ; [B1, P1, V5, V6]; xn--8c3hu7971a.֚?ۂ; [B1, P1, V5, V6, A3]; ;  # 𝪣.֚ۂ
-XN--8C3HU7971A.֚?ۂ; 𝪣򕡝.֚?ۂ; [B1, P1, V5, V6]; xn--8c3hu7971a.֚?ۂ; [B1, P1, V5, V6, A3]; ;  # 𝪣.֚ۂ
-XN--8C3HU7971A.֚?ۂ; 𝪣򕡝.֚?ۂ; [B1, P1, V5, V6]; xn--8c3hu7971a.֚?ۂ; [B1, P1, V5, V6, A3]; ;  # 𝪣.֚ۂ
-Xn--8c3hu7971a.֚?ۂ; 𝪣򕡝.֚?ۂ; [B1, P1, V5, V6]; xn--8c3hu7971a.֚?ۂ; [B1, P1, V5, V6, A3]; ;  # 𝪣.֚ۂ
-Xn--8c3hu7971a.֚?ۂ; 𝪣򕡝.֚?ۂ; [B1, P1, V5, V6]; xn--8c3hu7971a.֚?ۂ; [B1, P1, V5, V6, A3]; ;  # 𝪣.֚ۂ
-٠򪓵‌。ݗ; ٠򪓵‌.ݗ; [B1, C1, P1, V6]; xn--8hb852ke991q.xn--bpb; ; xn--8hb82030l.xn--bpb; [B1, P1, V6] # ٠.ݗ
-xn--8hb82030l.xn--bpb; ٠򪓵.ݗ; [B1, V6]; xn--8hb82030l.xn--bpb; ; ;  # ٠.ݗ
-xn--8hb852ke991q.xn--bpb; ٠򪓵‌.ݗ; [B1, C1, V6]; xn--8hb852ke991q.xn--bpb; ; ;  # ٠.ݗ
-်‍‌。-‌; ်‍‌.-‌; [C1, V3, V5]; xn--bkd412fca.xn----sgn; ; xn--bkd.-; [V3, V5] # ်.-
-xn--bkd.-; ်.-; [V3, V5]; xn--bkd.-; ; ;  # ်.-
-xn--bkd412fca.xn----sgn; ်‍‌.-‌; [C1, V3, V5]; xn--bkd412fca.xn----sgn; ; ;  # ်.-
-︒｡᭄ᡉ; ︒.᭄ᡉ; [P1, V5, V6]; xn--y86c.xn--87e93m; ; ;  # ︒.᭄ᡉ
-。。᭄ᡉ; ..᭄ᡉ; [V5, X4_2]; ..xn--87e93m; [V5, A4_2]; ;  # ..᭄ᡉ
-..xn--87e93m; ..᭄ᡉ; [V5, X4_2]; ..xn--87e93m; [V5, A4_2]; ;  # ..᭄ᡉ
-xn--y86c.xn--87e93m; ︒.᭄ᡉ; [V5, V6]; xn--y86c.xn--87e93m; ; ;  # ︒.᭄ᡉ
-ݘß。ጫᢊݨ𝟐; ݘß.ጫᢊݨ2; [B2, B3, B5]; xn--zca724a.xn--2-b5c641gfmf; ; xn--ss-gke.xn--2-b5c641gfmf;  # ݘß.ጫᢊݨ2
-ݘß。ጫᢊݨ2; ݘß.ጫᢊݨ2; [B2, B3, B5]; xn--zca724a.xn--2-b5c641gfmf; ; xn--ss-gke.xn--2-b5c641gfmf;  # ݘß.ጫᢊݨ2
-ݘSS。ጫᢊݨ2; ݘss.ጫᢊݨ2; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
-ݘss。ጫᢊݨ2; ݘss.ጫᢊݨ2; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
-xn--ss-gke.xn--2-b5c641gfmf; ݘss.ጫᢊݨ2; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
-xn--zca724a.xn--2-b5c641gfmf; ݘß.ጫᢊݨ2; [B2, B3, B5]; xn--zca724a.xn--2-b5c641gfmf; ; ;  # ݘß.ጫᢊݨ2
-ݘSS。ጫᢊݨ𝟐; ݘss.ጫᢊݨ2; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
-ݘss。ጫᢊݨ𝟐; ݘss.ጫᢊݨ2; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
-ݘSs。ጫᢊݨ2; ݘss.ጫᢊݨ2; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
-ݘSs。ጫᢊݨ𝟐; ݘss.ጫᢊݨ2; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
-߃𞶇ᚲ.ं͓𝟚্; ߃𞶇ᚲ.ं͓2্; [B1, B2, B3, P1, V5, V6]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ;  # ߃ᚲ.ं͓2্
-߃𞶇ᚲ.ं͓2্; ; [B1, B2, B3, P1, V5, V6]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ;  # ߃ᚲ.ं͓2্
-xn--esb067enh07a.xn--2-lgb874bjxa; ߃𞶇ᚲ.ं͓2্; [B1, B2, B3, V5, V6]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ;  # ߃ᚲ.ं͓2্
--᮫︒‍.񒶈񥹓; ; [C2, P1, V3, V6]; xn----qmlv7tw180a.xn--x50zy803a; ; xn----qml1407i.xn--x50zy803a; [P1, V3, V6] # -᮫︒.
--᮫。‍.񒶈񥹓; -᮫.‍.񒶈񥹓; [C2, P1, V3, V6]; xn----qml.xn--1ug.xn--x50zy803a; ; xn----qml..xn--x50zy803a; [P1, V3, V6, A4_2] # -᮫..
-xn----qml..xn--x50zy803a; -᮫..񒶈񥹓; [V3, V6, X4_2]; xn----qml..xn--x50zy803a; [V3, V6, A4_2]; ;  # -᮫..
-xn----qml.xn--1ug.xn--x50zy803a; -᮫.‍.񒶈񥹓; [C2, V3, V6]; xn----qml.xn--1ug.xn--x50zy803a; ; ;  # -᮫..
-xn----qml1407i.xn--x50zy803a; -᮫︒.񒶈񥹓; [V3, V6]; xn----qml1407i.xn--x50zy803a; ; ;  # -᮫︒.
-xn----qmlv7tw180a.xn--x50zy803a; -᮫︒‍.񒶈񥹓; [C2, V3, V6]; xn----qmlv7tw180a.xn--x50zy803a; ; ;  # -᮫︒.
-󠦮.≯𞀆; ; [P1, V6]; xn--t546e.xn--hdh5166o; ; ;  # .≯𞀆
-󠦮.≯𞀆; 󠦮.≯𞀆; [P1, V6]; xn--t546e.xn--hdh5166o; ; ;  # .≯𞀆
-xn--t546e.xn--hdh5166o; 󠦮.≯𞀆; [V6]; xn--t546e.xn--hdh5166o; ; ;  # .≯𞀆
--𑄳󠊗𐹩。𞮱; -𑄳󠊗𐹩.𞮱; [B1, P1, V3, V6]; xn----p26i72em2894c.xn--zw6h; ; ;  # -𑄳𐹩.
-xn----p26i72em2894c.xn--zw6h; -𑄳󠊗𐹩.𞮱; [B1, V3, V6]; xn----p26i72em2894c.xn--zw6h; ; ;  # -𑄳𐹩.
-ڹ．ᡳᅟ; ڹ.ᡳᅟ; [P1, V6]; xn--skb.xn--osd737a; ; ;  # ڹ.ᡳ
-ڹ.ᡳᅟ; ; [P1, V6]; xn--skb.xn--osd737a; ; ;  # ڹ.ᡳ
-xn--skb.xn--osd737a; ڹ.ᡳᅟ; [V6]; xn--skb.xn--osd737a; ; ;  # ڹ.ᡳ
-㨛𘱎.︒𝟕ഁ; 㨛𘱎.︒7ഁ; [P1, V6]; xn--mbm8237g.xn--7-7hf1526p; ; ;  # 㨛𘱎.︒7ഁ
-㨛𘱎.。7ഁ; 㨛𘱎..7ഁ; [P1, V6, X4_2]; xn--mbm8237g..xn--7-7hf; [P1, V6, A4_2]; ;  # 㨛𘱎..7ഁ
-xn--mbm8237g..xn--7-7hf; 㨛𘱎..7ഁ; [V6, X4_2]; xn--mbm8237g..xn--7-7hf; [V6, A4_2]; ;  # 㨛𘱎..7ഁ
-xn--mbm8237g.xn--7-7hf1526p; 㨛𘱎.︒7ഁ; [V6]; xn--mbm8237g.xn--7-7hf1526p; ; ;  # 㨛𘱎.︒7ഁ
-۝𻱧-｡𞷁⁤𞤣≮; ۝𻱧-.𞷁𞤣≮; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
-۝𻱧-｡𞷁⁤𞤣≮; ۝𻱧-.𞷁𞤣≮; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
-۝𻱧-。𞷁⁤𞤣≮; ۝𻱧-.𞷁𞤣≮; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
-۝𻱧-。𞷁⁤𞤣≮; ۝𻱧-.𞷁𞤣≮; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
-۝𻱧-。𞷁⁤𞤁≮; ۝𻱧-.𞷁𞤣≮; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
-۝𻱧-。𞷁⁤𞤁≮; ۝𻱧-.𞷁𞤣≮; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
-xn----dxc06304e.xn--gdh5020pk5c; ۝𻱧-.𞷁𞤣≮; [B1, B3, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
-۝𻱧-｡𞷁⁤𞤁≮; ۝𻱧-.𞷁𞤣≮; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
-۝𻱧-｡𞷁⁤𞤁≮; ۝𻱧-.𞷁𞤣≮; [B1, B3, P1, V3, V6]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
-ß‌꫶ᢥ．⊶ჁႶ; ß‌꫶ᢥ.⊶ჁႶ; [C1, P1, V6]; xn--zca682johfi89m.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [P1, V6] # ß꫶ᢥ.⊶ჁႶ
-ß‌꫶ᢥ.⊶ჁႶ; ; [C1, P1, V6]; xn--zca682johfi89m.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [P1, V6] # ß꫶ᢥ.⊶ჁႶ
-ß‌꫶ᢥ.⊶ⴡⴖ; ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ß꫶ᢥ.⊶ⴡⴖ
-SS‌꫶ᢥ.⊶ჁႶ; ss‌꫶ᢥ.⊶ჁႶ; [C1, P1, V6]; xn--ss-4ep585bkm5p.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [P1, V6] # ss꫶ᢥ.⊶ჁႶ
-ss‌꫶ᢥ.⊶ⴡⴖ; ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ss꫶ᢥ.⊶ⴡⴖ
-Ss‌꫶ᢥ.⊶Ⴡⴖ; ss‌꫶ᢥ.⊶Ⴡⴖ; [C1, P1, V6]; xn--ss-4ep585bkm5p.xn--5nd703gyrh; ; xn--ss-4epx629f.xn--5nd703gyrh; [P1, V6] # ss꫶ᢥ.⊶Ⴡⴖ
-xn--ss-4epx629f.xn--5nd703gyrh; ss꫶ᢥ.⊶Ⴡⴖ; [V6]; xn--ss-4epx629f.xn--5nd703gyrh; ; ;  # ss꫶ᢥ.⊶Ⴡⴖ
-xn--ss-4ep585bkm5p.xn--5nd703gyrh; ss‌꫶ᢥ.⊶Ⴡⴖ; [C1, V6]; xn--ss-4ep585bkm5p.xn--5nd703gyrh; ; ;  # ss꫶ᢥ.⊶Ⴡⴖ
-xn--ss-4epx629f.xn--ifh802b6a; ss꫶ᢥ.⊶ⴡⴖ; ; xn--ss-4epx629f.xn--ifh802b6a; ; ;  # ss꫶ᢥ.⊶ⴡⴖ
-ss꫶ᢥ.⊶ⴡⴖ; ; ; xn--ss-4epx629f.xn--ifh802b6a; ; ;  # ss꫶ᢥ.⊶ⴡⴖ
-SS꫶ᢥ.⊶ჁႶ; ss꫶ᢥ.⊶ჁႶ; [P1, V6]; xn--ss-4epx629f.xn--undv409k; ; ;  # ss꫶ᢥ.⊶ჁႶ
-Ss꫶ᢥ.⊶Ⴡⴖ; ss꫶ᢥ.⊶Ⴡⴖ; [P1, V6]; xn--ss-4epx629f.xn--5nd703gyrh; ; ;  # ss꫶ᢥ.⊶Ⴡⴖ
-xn--ss-4epx629f.xn--undv409k; ss꫶ᢥ.⊶ჁႶ; [V6]; xn--ss-4epx629f.xn--undv409k; ; ;  # ss꫶ᢥ.⊶ჁႶ
-xn--ss-4ep585bkm5p.xn--ifh802b6a; ss‌꫶ᢥ.⊶ⴡⴖ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; ;  # ss꫶ᢥ.⊶ⴡⴖ
-xn--ss-4ep585bkm5p.xn--undv409k; ss‌꫶ᢥ.⊶ჁႶ; [C1, V6]; xn--ss-4ep585bkm5p.xn--undv409k; ; ;  # ss꫶ᢥ.⊶ჁႶ
-xn--zca682johfi89m.xn--ifh802b6a; ß‌꫶ᢥ.⊶ⴡⴖ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; ;  # ß꫶ᢥ.⊶ⴡⴖ
-xn--zca682johfi89m.xn--undv409k; ß‌꫶ᢥ.⊶ჁႶ; [C1, V6]; xn--zca682johfi89m.xn--undv409k; ; ;  # ß꫶ᢥ.⊶ჁႶ
-ß‌꫶ᢥ．⊶ⴡⴖ; ß‌꫶ᢥ.⊶ⴡⴖ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ß꫶ᢥ.⊶ⴡⴖ
-SS‌꫶ᢥ．⊶ჁႶ; ss‌꫶ᢥ.⊶ჁႶ; [C1, P1, V6]; xn--ss-4ep585bkm5p.xn--undv409k; ; xn--ss-4epx629f.xn--undv409k; [P1, V6] # ss꫶ᢥ.⊶ჁႶ
-ss‌꫶ᢥ．⊶ⴡⴖ; ss‌꫶ᢥ.⊶ⴡⴖ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ss꫶ᢥ.⊶ⴡⴖ
-Ss‌꫶ᢥ．⊶Ⴡⴖ; ss‌꫶ᢥ.⊶Ⴡⴖ; [C1, P1, V6]; xn--ss-4ep585bkm5p.xn--5nd703gyrh; ; xn--ss-4epx629f.xn--5nd703gyrh; [P1, V6] # ss꫶ᢥ.⊶Ⴡⴖ
-‍。ς󠁉; ‍.ς󠁉; [C2, P1, V6]; xn--1ug.xn--3xa44344p; ; .xn--4xa24344p; [P1, V6, A4_2] # .ς
-‍。Σ󠁉; ‍.σ󠁉; [C2, P1, V6]; xn--1ug.xn--4xa24344p; ; .xn--4xa24344p; [P1, V6, A4_2] # .σ
-‍。σ󠁉; ‍.σ󠁉; [C2, P1, V6]; xn--1ug.xn--4xa24344p; ; .xn--4xa24344p; [P1, V6, A4_2] # .σ
-.xn--4xa24344p; .σ󠁉; [V6, X4_2]; .xn--4xa24344p; [V6, A4_2]; ;  # .σ
-xn--1ug.xn--4xa24344p; ‍.σ󠁉; [C2, V6]; xn--1ug.xn--4xa24344p; ; ;  # .σ
-xn--1ug.xn--3xa44344p; ‍.ς󠁉; [C2, V6]; xn--1ug.xn--3xa44344p; ; ;  # .ς
-𞵑ß.ݑ‍𞤛-; 𞵑ß.ݑ‍𞤽-; [B2, B3, C2, P1, V3, V6]; xn--zca5423w.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ß.ݑ𞤽-
-𞵑ß.ݑ‍𞤽-; ; [B2, B3, C2, P1, V3, V6]; xn--zca5423w.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ß.ݑ𞤽-
-𞵑SS.ݑ‍𞤛-; 𞵑ss.ݑ‍𞤽-; [B2, B3, C2, P1, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ss.ݑ𞤽-
-𞵑ss.ݑ‍𞤽-; ; [B2, B3, C2, P1, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ss.ݑ𞤽-
-𞵑Ss.ݑ‍𞤽-; 𞵑ss.ݑ‍𞤽-; [B2, B3, C2, P1, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ss.ݑ𞤽-
-xn--ss-2722a.xn----z3c03218a; 𞵑ss.ݑ𞤽-; [B2, B3, V3, V6]; xn--ss-2722a.xn----z3c03218a; ; ;  # ss.ݑ𞤽-
-xn--ss-2722a.xn----z3c011q9513b; 𞵑ss.ݑ‍𞤽-; [B2, B3, C2, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; ;  # ss.ݑ𞤽-
-xn--zca5423w.xn----z3c011q9513b; 𞵑ß.ݑ‍𞤽-; [B2, B3, C2, V3, V6]; xn--zca5423w.xn----z3c011q9513b; ; ;  # ß.ݑ𞤽-
-𞵑ss.ݑ‍𞤛-; 𞵑ss.ݑ‍𞤽-; [B2, B3, C2, P1, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ss.ݑ𞤽-
-𞵑Ss.ݑ‍𞤛-; 𞵑ss.ݑ‍𞤽-; [B2, B3, C2, P1, V3, V6]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, P1, V3, V6] # ss.ݑ𞤽-
-𑘽‍𞤧．𐹧󡦪-; 𑘽‍𞤧.𐹧󡦪-; [B1, C2, P1, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, P1, V3, V5, V6] # 𑘽𞤧.𐹧-
-𑘽‍𞤧.𐹧󡦪-; ; [B1, C2, P1, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, P1, V3, V5, V6] # 𑘽𞤧.𐹧-
-𑘽‍𞤅.𐹧󡦪-; 𑘽‍𞤧.𐹧󡦪-; [B1, C2, P1, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, P1, V3, V5, V6] # 𑘽𞤧.𐹧-
-xn--qb2ds317a.xn----k26iq1483f; 𑘽𞤧.𐹧󡦪-; [B1, V3, V5, V6]; xn--qb2ds317a.xn----k26iq1483f; ; ;  # 𑘽𞤧.𐹧-
-xn--1ugz808gdimf.xn----k26iq1483f; 𑘽‍𞤧.𐹧󡦪-; [B1, C2, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; ;  # 𑘽𞤧.𐹧-
-𑘽‍𞤅．𐹧󡦪-; 𑘽‍𞤧.𐹧󡦪-; [B1, C2, P1, V3, V5, V6]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, P1, V3, V5, V6] # 𑘽𞤧.𐹧-
-⒒򨘙򳳠𑓀.-󞡊; ; [P1, V3, V6]; xn--3shy698frsu9dt1me.xn----x310m; ; ;  # ⒒𑓀.-
-11.򨘙򳳠𑓀.-󞡊; ; [P1, V3, V6]; 11.xn--uz1d59632bxujd.xn----x310m; ; ;  # 11.𑓀.-
-11.xn--uz1d59632bxujd.xn----x310m; 11.򨘙򳳠𑓀.-󞡊; [V3, V6]; 11.xn--uz1d59632bxujd.xn----x310m; ; ;  # 11.𑓀.-
-xn--3shy698frsu9dt1me.xn----x310m; ⒒򨘙򳳠𑓀.-󞡊; [V3, V6]; xn--3shy698frsu9dt1me.xn----x310m; ; ;  # ⒒𑓀.-
--｡‍; -.‍; [C2, V3]; -.xn--1ug; ; -.; [V3] # -.
--。‍; -.‍; [C2, V3]; -.xn--1ug; ; -.; [V3] # -.
--.; ; [V3]; ; ; ;  # -.
--.xn--1ug; -.‍; [C2, V3]; -.xn--1ug; ; ;  # -.
-≮ᡬ．ς¹-?; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.ς1-?; [P1, V6, A3]; xn--88e732c.σ1-?;  # ≮ᡬ.ς1-
-≮ᡬ．ς¹-?; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.ς1-?; [P1, V6, A3]; xn--88e732c.σ1-?;  # ≮ᡬ.ς1-
-≮ᡬ.ς1-?; ; [P1, V6]; xn--88e732c.ς1-?; [P1, V6, A3]; xn--88e732c.σ1-?;  # ≮ᡬ.ς1-
-≮ᡬ.ς1-?; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.ς1-?; [P1, V6, A3]; xn--88e732c.σ1-?;  # ≮ᡬ.ς1-
-≮ᡬ.Σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-≮ᡬ.Σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-≮ᡬ.σ1-?; ; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-≮ᡬ.σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-xn--88e732c.σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-XN--88E732C.Σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-xn--88e732c.ς1-?; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.ς1-?; [P1, V6, A3]; xn--88e732c.σ1-?;  # ≮ᡬ.ς1-
-Xn--88e732c.ς1-?; ≮ᡬ.ς1-?; [P1, V6]; xn--88e732c.ς1-?; [P1, V6, A3]; xn--88e732c.σ1-?;  # ≮ᡬ.ς1-
-Xn--88e732c.σ1-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-≮ᡬ．Σ¹-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-≮ᡬ．Σ¹-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-≮ᡬ．σ¹-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-≮ᡬ．σ¹-?; ≮ᡬ.σ1-?; [P1, V6]; xn--88e732c.σ1-?; [P1, V6, A3]; ;  # ≮ᡬ.σ1-
-ቬ򔠼񁗶｡𐨬𝟠; ቬ򔠼񁗶.𐨬8; [P1, V6]; xn--d0d41273c887z.xn--8-ob5i; ; ;  # ቬ.𐨬8
-ቬ򔠼񁗶。𐨬8; ቬ򔠼񁗶.𐨬8; [P1, V6]; xn--d0d41273c887z.xn--8-ob5i; ; ;  # ቬ.𐨬8
-xn--d0d41273c887z.xn--8-ob5i; ቬ򔠼񁗶.𐨬8; [V6]; xn--d0d41273c887z.xn--8-ob5i; ; ;  # ቬ.𐨬8
-𐱲。蔫ݦ; 𐱲.蔫ݦ; [B5, B6, P1, V6]; xn--389c.xn--qpb7055d; ; ;  # .蔫ݦ
-xn--389c.xn--qpb7055d; 𐱲.蔫ݦ; [B5, B6, V6]; xn--389c.xn--qpb7055d; ; ;  # .蔫ݦ
-򒲧₃｡ꡚ𛇑󠄳ه; 򒲧3.ꡚ𛇑ه; [B5, B6, P1, V6]; xn--3-ep59g.xn--jhb5904fcp0h; ; ;  # 3.ꡚ𛇑ه
-򒲧3。ꡚ𛇑󠄳ه; 򒲧3.ꡚ𛇑ه; [B5, B6, P1, V6]; xn--3-ep59g.xn--jhb5904fcp0h; ; ;  # 3.ꡚ𛇑ه
-xn--3-ep59g.xn--jhb5904fcp0h; 򒲧3.ꡚ𛇑ه; [B5, B6, V6]; xn--3-ep59g.xn--jhb5904fcp0h; ; ;  # 3.ꡚ𛇑ه
-蓸ق≠.ß; ; [B5, B6, P1, V6]; xn--ehb015lnt1e.xn--zca; ; xn--ehb015lnt1e.ss;  # 蓸ق≠.ß
-蓸ق≠.ß; 蓸ق≠.ß; [B5, B6, P1, V6]; xn--ehb015lnt1e.xn--zca; ; xn--ehb015lnt1e.ss;  # 蓸ق≠.ß
-蓸ق≠.SS; 蓸ق≠.ss; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
-蓸ق≠.SS; 蓸ق≠.ss; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
-蓸ق≠.ss; ; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
-蓸ق≠.ss; 蓸ق≠.ss; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
-蓸ق≠.Ss; 蓸ق≠.ss; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
-蓸ق≠.Ss; 蓸ق≠.ss; [B5, B6, P1, V6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
-xn--ehb015lnt1e.ss; 蓸ق≠.ss; [B5, B6, V6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
-xn--ehb015lnt1e.xn--zca; 蓸ق≠.ß; [B5, B6, V6]; xn--ehb015lnt1e.xn--zca; ; ;  # 蓸ق≠.ß
-ࡎٺී⒊.𐹹𞱩󠃪‌; ; [B1, C1, P1, V6]; xn--zib94gfziuq1a.xn--0ug3205g7eyf3c96h; ; xn--zib94gfziuq1a.xn--xo0dw109an237f; [B1, P1, V6] # ࡎٺී⒊.𐹹
-ࡎٺී3..𐹹𞱩󠃪‌; ; [B1, C1, P1, V6, X4_2]; xn--3-prc71ls9j..xn--0ug3205g7eyf3c96h; [B1, C1, P1, V6, A4_2]; xn--3-prc71ls9j..xn--xo0dw109an237f; [B1, P1, V6, A4_2] # ࡎٺී3..𐹹
-xn--3-prc71ls9j..xn--xo0dw109an237f; ࡎٺී3..𐹹𞱩󠃪; [B1, V6, X4_2]; xn--3-prc71ls9j..xn--xo0dw109an237f; [B1, V6, A4_2]; ;  # ࡎٺී3..𐹹
-xn--3-prc71ls9j..xn--0ug3205g7eyf3c96h; ࡎٺී3..𐹹𞱩󠃪‌; [B1, C1, V6, X4_2]; xn--3-prc71ls9j..xn--0ug3205g7eyf3c96h; [B1, C1, V6, A4_2]; ;  # ࡎٺී3..𐹹
-xn--zib94gfziuq1a.xn--xo0dw109an237f; ࡎٺී⒊.𐹹𞱩󠃪; [B1, V6]; xn--zib94gfziuq1a.xn--xo0dw109an237f; ; ;  # ࡎٺී⒊.𐹹
-xn--zib94gfziuq1a.xn--0ug3205g7eyf3c96h; ࡎٺී⒊.𐹹𞱩󠃪‌; [B1, C1, V6]; xn--zib94gfziuq1a.xn--0ug3205g7eyf3c96h; ; ;  # ࡎٺී⒊.𐹹
-ς‍-.Ⴣ𦟙; ; [C2, P1, V3, V6]; xn----xmb348s.xn--7nd64871a; ; xn----zmb.xn--7nd64871a; [P1, V3, V6] # ς-.Ⴣ𦟙
-ς‍-.ⴣ𦟙; ; [C2, V3]; xn----xmb348s.xn--rlj2573p; ; xn----zmb.xn--rlj2573p; [V3] # ς-.ⴣ𦟙
-Σ‍-.Ⴣ𦟙; σ‍-.Ⴣ𦟙; [C2, P1, V3, V6]; xn----zmb048s.xn--7nd64871a; ; xn----zmb.xn--7nd64871a; [P1, V3, V6] # σ-.Ⴣ𦟙
-σ‍-.ⴣ𦟙; ; [C2, V3]; xn----zmb048s.xn--rlj2573p; ; xn----zmb.xn--rlj2573p; [V3] # σ-.ⴣ𦟙
+🜑𐹧\u0639.ς𑍍蜹; ; [B1]; xn--4gb3736kk4zf.xn--3xa4248dy27d; ; xn--4gb3736kk4zf.xn--4xa2248dy27d;  # 🜑𐹧ع.ς𑍍蜹
+🜑𐹧\u0639.Σ𑍍蜹; 🜑𐹧\u0639.σ𑍍蜹; [B1]; xn--4gb3736kk4zf.xn--4xa2248dy27d; ; ;  # 🜑𐹧ع.σ𑍍蜹
+🜑𐹧\u0639.σ𑍍蜹; ; [B1]; xn--4gb3736kk4zf.xn--4xa2248dy27d; ; ;  # 🜑𐹧ع.σ𑍍蜹
+xn--4gb3736kk4zf.xn--4xa2248dy27d; 🜑𐹧\u0639.σ𑍍蜹; [B1]; xn--4gb3736kk4zf.xn--4xa2248dy27d; ; ;  # 🜑𐹧ع.σ𑍍蜹
+xn--4gb3736kk4zf.xn--3xa4248dy27d; 🜑𐹧\u0639.ς𑍍蜹; [B1]; xn--4gb3736kk4zf.xn--3xa4248dy27d; ; ;  # 🜑𐹧ع.ς𑍍蜹
+򫠐ス􆟤\u0669．󚃟; 򫠐ス􆟤\u0669.󚃟; [B5, B6, V7]; xn--iib777sp230oo708a.xn--7824e; ; ;  # ス٩.
+򫠐ス􆟤\u0669.󚃟; ; [B5, B6, V7]; xn--iib777sp230oo708a.xn--7824e; ; ;  # ス٩.
+xn--iib777sp230oo708a.xn--7824e; 򫠐ス􆟤\u0669.󚃟; [B5, B6, V7]; xn--iib777sp230oo708a.xn--7824e; ; ;  # ス٩.
+𝪣򕡝．\u059A?\u06C2; 𝪣򕡝.\u059A?\u06C2; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+𝪣򕡝．\u059A?\u06C1\u0654; 𝪣򕡝.\u059A?\u06C2; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+𝪣򕡝.\u059A?\u06C2; ; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+𝪣򕡝.\u059A?\u06C1\u0654; 𝪣򕡝.\u059A?\u06C2; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+xn--8c3hu7971a.xn--?-wec30g; 𝪣򕡝.\u059A?\u06C2; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+xn--8c3hu7971a.\u059A?\u06C2; 𝪣򕡝.\u059A?\u06C2; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+xn--8c3hu7971a.\u059A?\u06C1\u0654; 𝪣򕡝.\u059A?\u06C2; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+XN--8C3HU7971A.\u059A?\u06C1\u0654; 𝪣򕡝.\u059A?\u06C2; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+XN--8C3HU7971A.\u059A?\u06C2; 𝪣򕡝.\u059A?\u06C2; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+Xn--8c3hu7971a.\u059A?\u06C2; 𝪣򕡝.\u059A?\u06C2; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+Xn--8c3hu7971a.\u059A?\u06C1\u0654; 𝪣򕡝.\u059A?\u06C2; [B1, V6, V7, U1]; xn--8c3hu7971a.xn--?-wec30g; ; ;  # 𝪣.֚?ۂ
+\u0660򪓵\u200C。\u0757; \u0660򪓵\u200C.\u0757; [B1, C1, V7]; xn--8hb852ke991q.xn--bpb; ; xn--8hb82030l.xn--bpb; [B1, V7] # ٠.ݗ
+xn--8hb82030l.xn--bpb; \u0660򪓵.\u0757; [B1, V7]; xn--8hb82030l.xn--bpb; ; ;  # ٠.ݗ
+xn--8hb852ke991q.xn--bpb; \u0660򪓵\u200C.\u0757; [B1, C1, V7]; xn--8hb852ke991q.xn--bpb; ; ;  # ٠.ݗ
+\u103A\u200D\u200C。-\u200C; \u103A\u200D\u200C.-\u200C; [C1, V3, V6]; xn--bkd412fca.xn----sgn; ; xn--bkd.-; [V3, V6] # ်.-
+xn--bkd.-; \u103A.-; [V3, V6]; xn--bkd.-; ; ;  # ်.-
+xn--bkd412fca.xn----sgn; \u103A\u200D\u200C.-\u200C; [C1, V3, V6]; xn--bkd412fca.xn----sgn; ; ;  # ်.-
+︒｡\u1B44ᡉ; ︒.\u1B44ᡉ; [V6, V7]; xn--y86c.xn--87e93m; ; ;  # ︒.᭄ᡉ
+。。\u1B44ᡉ; ..\u1B44ᡉ; [V6, X4_2]; ..xn--87e93m; [V6, A4_2]; ;  # ..᭄ᡉ
+..xn--87e93m; ..\u1B44ᡉ; [V6, X4_2]; ..xn--87e93m; [V6, A4_2]; ;  # ..᭄ᡉ
+xn--y86c.xn--87e93m; ︒.\u1B44ᡉ; [V6, V7]; xn--y86c.xn--87e93m; ; ;  # ︒.᭄ᡉ
+\u0758ß。ጫᢊ\u0768𝟐; \u0758ß.ጫᢊ\u07682; [B2, B3, B5]; xn--zca724a.xn--2-b5c641gfmf; ; xn--ss-gke.xn--2-b5c641gfmf;  # ݘß.ጫᢊݨ2
+\u0758ß。ጫᢊ\u07682; \u0758ß.ጫᢊ\u07682; [B2, B3, B5]; xn--zca724a.xn--2-b5c641gfmf; ; xn--ss-gke.xn--2-b5c641gfmf;  # ݘß.ጫᢊݨ2
+\u0758SS。ጫᢊ\u07682; \u0758ss.ጫᢊ\u07682; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
+\u0758ss。ጫᢊ\u07682; \u0758ss.ጫᢊ\u07682; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
+xn--ss-gke.xn--2-b5c641gfmf; \u0758ss.ጫᢊ\u07682; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
+xn--zca724a.xn--2-b5c641gfmf; \u0758ß.ጫᢊ\u07682; [B2, B3, B5]; xn--zca724a.xn--2-b5c641gfmf; ; ;  # ݘß.ጫᢊݨ2
+\u0758SS。ጫᢊ\u0768𝟐; \u0758ss.ጫᢊ\u07682; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
+\u0758ss。ጫᢊ\u0768𝟐; \u0758ss.ጫᢊ\u07682; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
+\u0758Ss。ጫᢊ\u07682; \u0758ss.ጫᢊ\u07682; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
+\u0758Ss。ጫᢊ\u0768𝟐; \u0758ss.ጫᢊ\u07682; [B2, B3, B5]; xn--ss-gke.xn--2-b5c641gfmf; ; ;  # ݘss.ጫᢊݨ2
+\u07C3𞶇ᚲ.\u0902\u0353𝟚\u09CD; \u07C3𞶇ᚲ.\u0902\u03532\u09CD; [B1, B2, B3, V6, V7]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ;  # ߃ᚲ.ं͓2্
+\u07C3𞶇ᚲ.\u0902\u03532\u09CD; ; [B1, B2, B3, V6, V7]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ;  # ߃ᚲ.ं͓2্
+xn--esb067enh07a.xn--2-lgb874bjxa; \u07C3𞶇ᚲ.\u0902\u03532\u09CD; [B1, B2, B3, V6, V7]; xn--esb067enh07a.xn--2-lgb874bjxa; ; ;  # ߃ᚲ.ं͓2্
+-\u1BAB︒\u200D.񒶈񥹓; ; [C2, V3, V7]; xn----qmlv7tw180a.xn--x50zy803a; ; xn----qml1407i.xn--x50zy803a; [V3, V7] # -᮫︒.
+-\u1BAB。\u200D.񒶈񥹓; -\u1BAB.\u200D.񒶈񥹓; [C2, V3, V7]; xn----qml.xn--1ug.xn--x50zy803a; ; xn----qml..xn--x50zy803a; [V3, V7, A4_2] # -᮫..
+xn----qml..xn--x50zy803a; -\u1BAB..񒶈񥹓; [V3, V7, X4_2]; xn----qml..xn--x50zy803a; [V3, V7, A4_2]; ;  # -᮫..
+xn----qml.xn--1ug.xn--x50zy803a; -\u1BAB.\u200D.񒶈񥹓; [C2, V3, V7]; xn----qml.xn--1ug.xn--x50zy803a; ; ;  # -᮫..
+xn----qml1407i.xn--x50zy803a; -\u1BAB︒.񒶈񥹓; [V3, V7]; xn----qml1407i.xn--x50zy803a; ; ;  # -᮫︒.
+xn----qmlv7tw180a.xn--x50zy803a; -\u1BAB︒\u200D.񒶈񥹓; [C2, V3, V7]; xn----qmlv7tw180a.xn--x50zy803a; ; ;  # -᮫︒.
+󠦮.≯𞀆; ; [V7]; xn--t546e.xn--hdh5166o; ; ;  # .≯𞀆
+󠦮.>\u0338𞀆; 󠦮.≯𞀆; [V7]; xn--t546e.xn--hdh5166o; ; ;  # .≯𞀆
+xn--t546e.xn--hdh5166o; 󠦮.≯𞀆; [V7]; xn--t546e.xn--hdh5166o; ; ;  # .≯𞀆
+-𑄳󠊗𐹩。𞮱; -𑄳󠊗𐹩.𞮱; [B1, V3, V7]; xn----p26i72em2894c.xn--zw6h; ; ;  # -𑄳𐹩.
+xn----p26i72em2894c.xn--zw6h; -𑄳󠊗𐹩.𞮱; [B1, V3, V7]; xn----p26i72em2894c.xn--zw6h; ; ;  # -𑄳𐹩.
+\u06B9．ᡳ\u115F; \u06B9.ᡳ; ; xn--skb.xn--g9e; ; ;  # ڹ.ᡳ
+\u06B9.ᡳ\u115F; \u06B9.ᡳ; ; xn--skb.xn--g9e; ; ;  # ڹ.ᡳ
+xn--skb.xn--g9e; \u06B9.ᡳ; ; xn--skb.xn--g9e; ; ;  # ڹ.ᡳ
+\u06B9.ᡳ; ; ; xn--skb.xn--g9e; ; ;  # ڹ.ᡳ
+xn--skb.xn--osd737a; \u06B9.ᡳ\u115F; [V7]; xn--skb.xn--osd737a; ; ;  # ڹ.ᡳ
+㨛𘱎.︒𝟕\u0D01; 㨛𘱎.︒7\u0D01; [V7]; xn--mbm8237g.xn--7-7hf1526p; ; ;  # 㨛𘱎.︒7ഁ
+㨛𘱎.。7\u0D01; 㨛𘱎..7\u0D01; [X4_2]; xn--mbm8237g..xn--7-7hf; [A4_2]; ;  # 㨛𘱎..7ഁ
+xn--mbm8237g..xn--7-7hf; 㨛𘱎..7\u0D01; [X4_2]; xn--mbm8237g..xn--7-7hf; [A4_2]; ;  # 㨛𘱎..7ഁ
+xn--mbm8237g.xn--7-7hf1526p; 㨛𘱎.︒7\u0D01; [V7]; xn--mbm8237g.xn--7-7hf1526p; ; ;  # 㨛𘱎.︒7ഁ
+\u06DD𻱧-｡𞷁\u2064𞤣≮; \u06DD𻱧-.𞷁𞤣≮; [B1, B3, V3, V7]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
+\u06DD𻱧-｡𞷁\u2064𞤣<\u0338; \u06DD𻱧-.𞷁𞤣≮; [B1, B3, V3, V7]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
+\u06DD𻱧-。𞷁\u2064𞤣≮; \u06DD𻱧-.𞷁𞤣≮; [B1, B3, V3, V7]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
+\u06DD𻱧-。𞷁\u2064𞤣<\u0338; \u06DD𻱧-.𞷁𞤣≮; [B1, B3, V3, V7]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
+\u06DD𻱧-。𞷁\u2064𞤁<\u0338; \u06DD𻱧-.𞷁𞤣≮; [B1, B3, V3, V7]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
+\u06DD𻱧-。𞷁\u2064𞤁≮; \u06DD𻱧-.𞷁𞤣≮; [B1, B3, V3, V7]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
+xn----dxc06304e.xn--gdh5020pk5c; \u06DD𻱧-.𞷁𞤣≮; [B1, B3, V3, V7]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
+\u06DD𻱧-｡𞷁\u2064𞤁<\u0338; \u06DD𻱧-.𞷁𞤣≮; [B1, B3, V3, V7]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
+\u06DD𻱧-｡𞷁\u2064𞤁≮; \u06DD𻱧-.𞷁𞤣≮; [B1, B3, V3, V7]; xn----dxc06304e.xn--gdh5020pk5c; ; ;  # -.𞤣≮
+ß\u200C\uAAF6ᢥ．⊶ჁႶ; ß\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ß꫶ᢥ.⊶ⴡⴖ
+ß\u200C\uAAF6ᢥ.⊶ჁႶ; ß\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ß꫶ᢥ.⊶ⴡⴖ
+ß\u200C\uAAF6ᢥ.⊶ⴡⴖ; ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ß꫶ᢥ.⊶ⴡⴖ
+SS\u200C\uAAF6ᢥ.⊶ჁႶ; ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ss꫶ᢥ.⊶ⴡⴖ
+ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ss꫶ᢥ.⊶ⴡⴖ
+Ss\u200C\uAAF6ᢥ.⊶Ⴡⴖ; ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ss꫶ᢥ.⊶ⴡⴖ
+xn--ss-4epx629f.xn--ifh802b6a; ss\uAAF6ᢥ.⊶ⴡⴖ; ; xn--ss-4epx629f.xn--ifh802b6a; ; ;  # ss꫶ᢥ.⊶ⴡⴖ
+ss\uAAF6ᢥ.⊶ⴡⴖ; ; ; xn--ss-4epx629f.xn--ifh802b6a; ; ;  # ss꫶ᢥ.⊶ⴡⴖ
+SS\uAAF6ᢥ.⊶ჁႶ; ss\uAAF6ᢥ.⊶ⴡⴖ; ; xn--ss-4epx629f.xn--ifh802b6a; ; ;  # ss꫶ᢥ.⊶ⴡⴖ
+Ss\uAAF6ᢥ.⊶Ⴡⴖ; ss\uAAF6ᢥ.⊶ⴡⴖ; ; xn--ss-4epx629f.xn--ifh802b6a; ; ;  # ss꫶ᢥ.⊶ⴡⴖ
+xn--ss-4ep585bkm5p.xn--ifh802b6a; ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; ;  # ss꫶ᢥ.⊶ⴡⴖ
+xn--zca682johfi89m.xn--ifh802b6a; ß\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; ;  # ß꫶ᢥ.⊶ⴡⴖ
+ß\u200C\uAAF6ᢥ．⊶ⴡⴖ; ß\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--zca682johfi89m.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ß꫶ᢥ.⊶ⴡⴖ
+SS\u200C\uAAF6ᢥ．⊶ჁႶ; ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ss꫶ᢥ.⊶ⴡⴖ
+ss\u200C\uAAF6ᢥ．⊶ⴡⴖ; ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ss꫶ᢥ.⊶ⴡⴖ
+Ss\u200C\uAAF6ᢥ．⊶Ⴡⴖ; ss\u200C\uAAF6ᢥ.⊶ⴡⴖ; [C1]; xn--ss-4ep585bkm5p.xn--ifh802b6a; ; xn--ss-4epx629f.xn--ifh802b6a; [] # ss꫶ᢥ.⊶ⴡⴖ
+xn--ss-4epx629f.xn--5nd703gyrh; ss\uAAF6ᢥ.⊶Ⴡⴖ; [V7]; xn--ss-4epx629f.xn--5nd703gyrh; ; ;  # ss꫶ᢥ.⊶Ⴡⴖ
+xn--ss-4ep585bkm5p.xn--5nd703gyrh; ss\u200C\uAAF6ᢥ.⊶Ⴡⴖ; [C1, V7]; xn--ss-4ep585bkm5p.xn--5nd703gyrh; ; ;  # ss꫶ᢥ.⊶Ⴡⴖ
+xn--ss-4epx629f.xn--undv409k; ss\uAAF6ᢥ.⊶ჁႶ; [V7]; xn--ss-4epx629f.xn--undv409k; ; ;  # ss꫶ᢥ.⊶ჁႶ
+xn--ss-4ep585bkm5p.xn--undv409k; ss\u200C\uAAF6ᢥ.⊶ჁႶ; [C1, V7]; xn--ss-4ep585bkm5p.xn--undv409k; ; ;  # ss꫶ᢥ.⊶ჁႶ
+xn--zca682johfi89m.xn--undv409k; ß\u200C\uAAF6ᢥ.⊶ჁႶ; [C1, V7]; xn--zca682johfi89m.xn--undv409k; ; ;  # ß꫶ᢥ.⊶ჁႶ
+\u200D。ς󠁉; \u200D.ς󠁉; [C2, V7]; xn--1ug.xn--3xa44344p; ; .xn--4xa24344p; [V7, A4_2] # .ς
+\u200D。Σ󠁉; \u200D.σ󠁉; [C2, V7]; xn--1ug.xn--4xa24344p; ; .xn--4xa24344p; [V7, A4_2] # .σ
+\u200D。σ󠁉; \u200D.σ󠁉; [C2, V7]; xn--1ug.xn--4xa24344p; ; .xn--4xa24344p; [V7, A4_2] # .σ
+.xn--4xa24344p; .σ󠁉; [V7, X4_2]; .xn--4xa24344p; [V7, A4_2]; ;  # .σ
+xn--1ug.xn--4xa24344p; \u200D.σ󠁉; [C2, V7]; xn--1ug.xn--4xa24344p; ; ;  # .σ
+xn--1ug.xn--3xa44344p; \u200D.ς󠁉; [C2, V7]; xn--1ug.xn--3xa44344p; ; ;  # .ς
+𞵑ß.\u0751\u200D𞤛-; 𞵑ß.\u0751\u200D𞤽-; [B2, B3, C2, V3, V7]; xn--zca5423w.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V7] # ß.ݑ𞤽-
+𞵑ß.\u0751\u200D𞤽-; ; [B2, B3, C2, V3, V7]; xn--zca5423w.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V7] # ß.ݑ𞤽-
+𞵑SS.\u0751\u200D𞤛-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, V3, V7]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V7] # ss.ݑ𞤽-
+𞵑ss.\u0751\u200D𞤽-; ; [B2, B3, C2, V3, V7]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V7] # ss.ݑ𞤽-
+𞵑Ss.\u0751\u200D𞤽-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, V3, V7]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V7] # ss.ݑ𞤽-
+xn--ss-2722a.xn----z3c03218a; 𞵑ss.\u0751𞤽-; [B2, B3, V3, V7]; xn--ss-2722a.xn----z3c03218a; ; ;  # ss.ݑ𞤽-
+xn--ss-2722a.xn----z3c011q9513b; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, V3, V7]; xn--ss-2722a.xn----z3c011q9513b; ; ;  # ss.ݑ𞤽-
+xn--zca5423w.xn----z3c011q9513b; 𞵑ß.\u0751\u200D𞤽-; [B2, B3, C2, V3, V7]; xn--zca5423w.xn----z3c011q9513b; ; ;  # ß.ݑ𞤽-
+𞵑ss.\u0751\u200D𞤛-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, V3, V7]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V7] # ss.ݑ𞤽-
+𞵑Ss.\u0751\u200D𞤛-; 𞵑ss.\u0751\u200D𞤽-; [B2, B3, C2, V3, V7]; xn--ss-2722a.xn----z3c011q9513b; ; xn--ss-2722a.xn----z3c03218a; [B2, B3, V3, V7] # ss.ݑ𞤽-
+𑘽\u200D𞤧．𐹧󡦪-; 𑘽\u200D𞤧.𐹧󡦪-; [B1, C2, V3, V6, V7]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, V3, V6, V7] # 𑘽𞤧.𐹧-
+𑘽\u200D𞤧.𐹧󡦪-; ; [B1, C2, V3, V6, V7]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, V3, V6, V7] # 𑘽𞤧.𐹧-
+𑘽\u200D𞤅.𐹧󡦪-; 𑘽\u200D𞤧.𐹧󡦪-; [B1, C2, V3, V6, V7]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, V3, V6, V7] # 𑘽𞤧.𐹧-
+xn--qb2ds317a.xn----k26iq1483f; 𑘽𞤧.𐹧󡦪-; [B1, V3, V6, V7]; xn--qb2ds317a.xn----k26iq1483f; ; ;  # 𑘽𞤧.𐹧-
+xn--1ugz808gdimf.xn----k26iq1483f; 𑘽\u200D𞤧.𐹧󡦪-; [B1, C2, V3, V6, V7]; xn--1ugz808gdimf.xn----k26iq1483f; ; ;  # 𑘽𞤧.𐹧-
+𑘽\u200D𞤅．𐹧󡦪-; 𑘽\u200D𞤧.𐹧󡦪-; [B1, C2, V3, V6, V7]; xn--1ugz808gdimf.xn----k26iq1483f; ; xn--qb2ds317a.xn----k26iq1483f; [B1, V3, V6, V7] # 𑘽𞤧.𐹧-
+⒒򨘙򳳠𑓀.-󞡊; ; [V3, V7]; xn--3shy698frsu9dt1me.xn----x310m; ; ;  # ⒒𑓀.-
+11.򨘙򳳠𑓀.-󞡊; ; [V3, V7]; 11.xn--uz1d59632bxujd.xn----x310m; ; ;  # 11.𑓀.-
+11.xn--uz1d59632bxujd.xn----x310m; 11.򨘙򳳠𑓀.-󞡊; [V3, V7]; 11.xn--uz1d59632bxujd.xn----x310m; ; ;  # 11.𑓀.-
+xn--3shy698frsu9dt1me.xn----x310m; ⒒򨘙򳳠𑓀.-󞡊; [V3, V7]; xn--3shy698frsu9dt1me.xn----x310m; ; ;  # ⒒𑓀.-
+-｡\u200D; -.\u200D; [C2, V3]; -.xn--1ug; ; -.; [V3, A4_2] # -.
+-。\u200D; -.\u200D; [C2, V3]; -.xn--1ug; ; -.; [V3, A4_2] # -.
+-.; ; [V3]; ; [V3, A4_2]; ;  # -.
+-.xn--1ug; -.\u200D; [C2, V3]; -.xn--1ug; ; ;  # -.
+≮ᡬ．ς¹-?; ≮ᡬ.ς1-?; [U1]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc;  # ≮ᡬ.ς1-?
+<\u0338ᡬ．ς¹-?; ≮ᡬ.ς1-?; [U1]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc;  # ≮ᡬ.ς1-?
+≮ᡬ.ς1-?; ; [U1]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc;  # ≮ᡬ.ς1-?
+<\u0338ᡬ.ς1-?; ≮ᡬ.ς1-?; [U1]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc;  # ≮ᡬ.ς1-?
+<\u0338ᡬ.Σ1-?; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+≮ᡬ.Σ1-?; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+≮ᡬ.σ1-?; ; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+<\u0338ᡬ.σ1-?; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+xn--88e732c.xn--1-?-pzc; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+xn--88e732c.xn--1-?-lzc; ≮ᡬ.ς1-?; [U1]; xn--88e732c.xn--1-?-lzc; ; ;  # ≮ᡬ.ς1-?
+<\u0338ᡬ．Σ¹-?; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+≮ᡬ．Σ¹-?; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+≮ᡬ．σ¹-?; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+<\u0338ᡬ．σ¹-?; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+xn--88e732c.σ1-?; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+XN--88E732C.Σ1-?; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+xn--88e732c.ς1-?; ≮ᡬ.ς1-?; [U1]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc;  # ≮ᡬ.ς1-?
+Xn--88e732c.ς1-?; ≮ᡬ.ς1-?; [U1]; xn--88e732c.xn--1-?-lzc; ; xn--88e732c.xn--1-?-pzc;  # ≮ᡬ.ς1-?
+Xn--88e732c.σ1-?; ≮ᡬ.σ1-?; [U1]; xn--88e732c.xn--1-?-pzc; ; ;  # ≮ᡬ.σ1-?
+ቬ򔠼񁗶｡𐨬𝟠; ቬ򔠼񁗶.𐨬8; [V7]; xn--d0d41273c887z.xn--8-ob5i; ; ;  # ቬ.𐨬8
+ቬ򔠼񁗶。𐨬8; ቬ򔠼񁗶.𐨬8; [V7]; xn--d0d41273c887z.xn--8-ob5i; ; ;  # ቬ.𐨬8
+xn--d0d41273c887z.xn--8-ob5i; ቬ򔠼񁗶.𐨬8; [V7]; xn--d0d41273c887z.xn--8-ob5i; ; ;  # ቬ.𐨬8
+𐱲。蔫\u0766; 𐱲.蔫\u0766; [B5, B6, V7]; xn--389c.xn--qpb7055d; ; ;  # .蔫ݦ
+xn--389c.xn--qpb7055d; 𐱲.蔫\u0766; [B5, B6, V7]; xn--389c.xn--qpb7055d; ; ;  # .蔫ݦ
+򒲧₃｡ꡚ𛇑󠄳\u0647; 򒲧3.ꡚ𛇑\u0647; [B5, B6, V7]; xn--3-ep59g.xn--jhb5904fcp0h; ; ;  # 3.ꡚ𛇑ه
+򒲧3。ꡚ𛇑󠄳\u0647; 򒲧3.ꡚ𛇑\u0647; [B5, B6, V7]; xn--3-ep59g.xn--jhb5904fcp0h; ; ;  # 3.ꡚ𛇑ه
+xn--3-ep59g.xn--jhb5904fcp0h; 򒲧3.ꡚ𛇑\u0647; [B5, B6, V7]; xn--3-ep59g.xn--jhb5904fcp0h; ; ;  # 3.ꡚ𛇑ه
+蓸\u0642≠.ß; ; [B5, B6]; xn--ehb015lnt1e.xn--zca; ; xn--ehb015lnt1e.ss;  # 蓸ق≠.ß
+蓸\u0642=\u0338.ß; 蓸\u0642≠.ß; [B5, B6]; xn--ehb015lnt1e.xn--zca; ; xn--ehb015lnt1e.ss;  # 蓸ق≠.ß
+蓸\u0642=\u0338.SS; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
+蓸\u0642≠.SS; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
+蓸\u0642≠.ss; ; [B5, B6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
+蓸\u0642=\u0338.ss; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
+蓸\u0642=\u0338.Ss; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
+蓸\u0642≠.Ss; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
+xn--ehb015lnt1e.ss; 蓸\u0642≠.ss; [B5, B6]; xn--ehb015lnt1e.ss; ; ;  # 蓸ق≠.ss
+xn--ehb015lnt1e.xn--zca; 蓸\u0642≠.ß; [B5, B6]; xn--ehb015lnt1e.xn--zca; ; ;  # 蓸ق≠.ß
+\u084E\u067A\u0DD3⒊.𐹹𞱩󠃪\u200C; ; [B1, C1, V7]; xn--zib94gfziuq1a.xn--0ug3205g7eyf3c96h; ; xn--zib94gfziuq1a.xn--xo0dw109an237f; [B1, V7] # ࡎٺී⒊.𐹹
+\u084E\u067A\u0DD33..𐹹𞱩󠃪\u200C; ; [B1, C1, V7, X4_2]; xn--3-prc71ls9j..xn--0ug3205g7eyf3c96h; [B1, C1, V7, A4_2]; xn--3-prc71ls9j..xn--xo0dw109an237f; [B1, V7, A4_2] # ࡎٺී3..𐹹
+xn--3-prc71ls9j..xn--xo0dw109an237f; \u084E\u067A\u0DD33..𐹹𞱩󠃪; [B1, V7, X4_2]; xn--3-prc71ls9j..xn--xo0dw109an237f; [B1, V7, A4_2]; ;  # ࡎٺී3..𐹹
+xn--3-prc71ls9j..xn--0ug3205g7eyf3c96h; \u084E\u067A\u0DD33..𐹹𞱩󠃪\u200C; [B1, C1, V7, X4_2]; xn--3-prc71ls9j..xn--0ug3205g7eyf3c96h; [B1, C1, V7, A4_2]; ;  # ࡎٺී3..𐹹
+xn--zib94gfziuq1a.xn--xo0dw109an237f; \u084E\u067A\u0DD3⒊.𐹹𞱩󠃪; [B1, V7]; xn--zib94gfziuq1a.xn--xo0dw109an237f; ; ;  # ࡎٺී⒊.𐹹
+xn--zib94gfziuq1a.xn--0ug3205g7eyf3c96h; \u084E\u067A\u0DD3⒊.𐹹𞱩󠃪\u200C; [B1, C1, V7]; xn--zib94gfziuq1a.xn--0ug3205g7eyf3c96h; ; ;  # ࡎٺී⒊.𐹹
+ς\u200D-.Ⴣ𦟙; ς\u200D-.ⴣ𦟙; [C2, V3]; xn----xmb348s.xn--rlj2573p; ; xn----zmb.xn--rlj2573p; [V3] # ς-.ⴣ𦟙
+ς\u200D-.ⴣ𦟙; ; [C2, V3]; xn----xmb348s.xn--rlj2573p; ; xn----zmb.xn--rlj2573p; [V3] # ς-.ⴣ𦟙
+Σ\u200D-.Ⴣ𦟙; σ\u200D-.ⴣ𦟙; [C2, V3]; xn----zmb048s.xn--rlj2573p; ; xn----zmb.xn--rlj2573p; [V3] # σ-.ⴣ𦟙
+σ\u200D-.ⴣ𦟙; ; [C2, V3]; xn----zmb048s.xn--rlj2573p; ; xn----zmb.xn--rlj2573p; [V3] # σ-.ⴣ𦟙
 xn----zmb.xn--rlj2573p; σ-.ⴣ𦟙; [V3]; xn----zmb.xn--rlj2573p; ; ;  # σ-.ⴣ𦟙
-xn----zmb048s.xn--rlj2573p; σ‍-.ⴣ𦟙; [C2, V3]; xn----zmb048s.xn--rlj2573p; ; ;  # σ-.ⴣ𦟙
-xn----zmb.xn--7nd64871a; σ-.Ⴣ𦟙; [V3, V6]; xn----zmb.xn--7nd64871a; ; ;  # σ-.Ⴣ𦟙
-xn----zmb048s.xn--7nd64871a; σ‍-.Ⴣ𦟙; [C2, V3, V6]; xn----zmb048s.xn--7nd64871a; ; ;  # σ-.Ⴣ𦟙
-xn----xmb348s.xn--rlj2573p; ς‍-.ⴣ𦟙; [C2, V3]; xn----xmb348s.xn--rlj2573p; ; ;  # ς-.ⴣ𦟙
-xn----xmb348s.xn--7nd64871a; ς‍-.Ⴣ𦟙; [C2, V3, V6]; xn----xmb348s.xn--7nd64871a; ; ;  # ς-.Ⴣ𦟙
-≠。🞳𝟲; ≠.🞳6; [P1, V6]; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
-≠。🞳𝟲; ≠.🞳6; [P1, V6]; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
-≠。🞳6; ≠.🞳6; [P1, V6]; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
-≠。🞳6; ≠.🞳6; [P1, V6]; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
-xn--1ch.xn--6-dl4s; ≠.🞳6; [V6]; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
-󅬽.蠔; ; [P1, V6]; xn--g747d.xn--xl2a; ; ;  # .蠔
-xn--g747d.xn--xl2a; 󅬽.蠔; [V6]; xn--g747d.xn--xl2a; ; ;  # .蠔
-ࣦ‍．뼽; ࣦ‍.뼽; [C2, V5]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V5] # ࣦ.뼽
-ࣦ‍．뼽; ࣦ‍.뼽; [C2, V5]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V5] # ࣦ.뼽
-ࣦ‍.뼽; ; [C2, V5]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V5] # ࣦ.뼽
-ࣦ‍.뼽; ࣦ‍.뼽; [C2, V5]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V5] # ࣦ.뼽
-xn--p0b.xn--e43b; ࣦ.뼽; [V5]; xn--p0b.xn--e43b; ; ;  # ࣦ.뼽
-xn--p0b869i.xn--e43b; ࣦ‍.뼽; [C2, V5]; xn--p0b869i.xn--e43b; ; ;  # ࣦ.뼽
-₇்􃂷ے。👖ٵ-𞪑; 7்􃂷ے.👖اٴ-𞪑; [B1, P1, V6]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ;  # 7்ے.👖اٴ-
-7்􃂷ے。👖اٴ-𞪑; 7்􃂷ے.👖اٴ-𞪑; [B1, P1, V6]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ;  # 7்ے.👖اٴ-
-xn--7-rwc839aj3073c.xn----ymc5uv818oghka; 7்􃂷ے.👖اٴ-𞪑; [B1, V6]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ;  # 7்ے.👖اٴ-
--｡ݻ; -.ݻ; [B1, V3]; -.xn--cqb; ; ;  # -.ݻ
--。ݻ; -.ݻ; [B1, V3]; -.xn--cqb; ; ;  # -.ݻ
--.xn--cqb; -.ݻ; [B1, V3]; -.xn--cqb; ; ;  # -.ݻ
-𑇌𵛓｡-⒈ꡏܫ; 𑇌𵛓.-⒈ꡏܫ; [B1, P1, V3, V5, V6]; xn--8d1dg030h.xn----u1c466tp10j; ; ;  # 𑇌.-⒈ꡏܫ
-𑇌𵛓。-1.ꡏܫ; 𑇌𵛓.-1.ꡏܫ; [B1, B5, B6, P1, V3, V5, V6]; xn--8d1dg030h.-1.xn--1nb7163f; ; ;  # 𑇌.-1.ꡏܫ
-xn--8d1dg030h.-1.xn--1nb7163f; 𑇌𵛓.-1.ꡏܫ; [B1, B5, B6, V3, V5, V6]; xn--8d1dg030h.-1.xn--1nb7163f; ; ;  # 𑇌.-1.ꡏܫ
-xn--8d1dg030h.xn----u1c466tp10j; 𑇌𵛓.-⒈ꡏܫ; [B1, V3, V5, V6]; xn--8d1dg030h.xn----u1c466tp10j; ; ;  # 𑇌.-⒈ꡏܫ
-璛᜴گ.-; ; [B1, B5, B6, V3]; xn--ikb175frt4e.-; ; ;  # 璛᜴گ.-
-xn--ikb175frt4e.-; 璛᜴گ.-; [B1, B5, B6, V3]; xn--ikb175frt4e.-; ; ;  # 璛᜴گ.-
-󠆰ࢡ੍샕．𐹲휁; ࢡ੍샕.𐹲휁; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ;  # ࢡ੍샕.𐹲휁
-󠆰ࢡ੍샕．𐹲휁; ࢡ੍샕.𐹲휁; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ;  # ࢡ੍샕.𐹲휁
-󠆰ࢡ੍샕.𐹲휁; ࢡ੍샕.𐹲휁; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ;  # ࢡ੍샕.𐹲휁
-󠆰ࢡ੍샕.𐹲휁; ࢡ੍샕.𐹲휁; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ;  # ࢡ੍샕.𐹲휁
-xn--qyb07fj857a.xn--728bv72h; ࢡ੍샕.𐹲휁; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ;  # ࢡ੍샕.𐹲휁
-񍨽．񋸕; 񍨽.񋸕; [P1, V6]; xn--pr3x.xn--rv7w; ; ;  # .
-񍨽.񋸕; ; [P1, V6]; xn--pr3x.xn--rv7w; ; ;  # .
-xn--pr3x.xn--rv7w; 񍨽.񋸕; [V6]; xn--pr3x.xn--rv7w; ; ;  # .
-ٽ𞥕｡𑑂𞤶Ⴍ-; ٽ𞥕.𑑂𞤶Ⴍ-; [B1, P1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ;  # ٽ𞥕.𑑂𞤶Ⴍ-
-ٽ𞥕。𑑂𞤶Ⴍ-; ٽ𞥕.𑑂𞤶Ⴍ-; [B1, P1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ;  # ٽ𞥕.𑑂𞤶Ⴍ-
-ٽ𞥕。𑑂𞤶ⴍ-; ٽ𞥕.𑑂𞤶ⴍ-; [B1, V3, V5]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
-ٽ𞥕。𑑂𞤔Ⴍ-; ٽ𞥕.𑑂𞤶Ⴍ-; [B1, P1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ;  # ٽ𞥕.𑑂𞤶Ⴍ-
-ٽ𞥕。𑑂𞤔ⴍ-; ٽ𞥕.𑑂𞤶ⴍ-; [B1, V3, V5]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
-xn--2ib0338v.xn----zvs0199fo91g; ٽ𞥕.𑑂𞤶ⴍ-; [B1, V3, V5]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
-xn--2ib0338v.xn----w0g2740ro9vg; ٽ𞥕.𑑂𞤶Ⴍ-; [B1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ;  # ٽ𞥕.𑑂𞤶Ⴍ-
-ٽ𞥕｡𑑂𞤶ⴍ-; ٽ𞥕.𑑂𞤶ⴍ-; [B1, V3, V5]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
-ٽ𞥕｡𑑂𞤔Ⴍ-; ٽ𞥕.𑑂𞤶Ⴍ-; [B1, P1, V3, V5, V6]; xn--2ib0338v.xn----w0g2740ro9vg; ; ;  # ٽ𞥕.𑑂𞤶Ⴍ-
-ٽ𞥕｡𑑂𞤔ⴍ-; ٽ𞥕.𑑂𞤶ⴍ-; [B1, V3, V5]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
-𐯀𐸉𞧏。񢚧₄Ⴋ񂹫; 𐯀𐸉𞧏.񢚧4Ⴋ񂹫; [P1, V6]; xn--039c42bq865a.xn--4-t0g49302fnrzm; ; ;  # .4Ⴋ
-𐯀𐸉𞧏。񢚧4Ⴋ񂹫; 𐯀𐸉𞧏.񢚧4Ⴋ񂹫; [P1, V6]; xn--039c42bq865a.xn--4-t0g49302fnrzm; ; ;  # .4Ⴋ
-𐯀𐸉𞧏。񢚧4ⴋ񂹫; 𐯀𐸉𞧏.񢚧4ⴋ񂹫; [P1, V6]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ;  # .4ⴋ
-xn--039c42bq865a.xn--4-wvs27840bnrzm; 𐯀𐸉𞧏.񢚧4ⴋ񂹫; [V6]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ;  # .4ⴋ
-xn--039c42bq865a.xn--4-t0g49302fnrzm; 𐯀𐸉𞧏.񢚧4Ⴋ񂹫; [V6]; xn--039c42bq865a.xn--4-t0g49302fnrzm; ; ;  # .4Ⴋ
-𐯀𐸉𞧏。񢚧₄ⴋ񂹫; 𐯀𐸉𞧏.񢚧4ⴋ񂹫; [P1, V6]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ;  # .4ⴋ
-4ڽ︒󠑥.≠; ; [B1, P1, V6]; xn--4-kvc5601q2h50i.xn--1ch; ; ;  # 4ڽ︒.≠
-4ڽ︒󠑥.≠; 4ڽ︒󠑥.≠; [B1, P1, V6]; xn--4-kvc5601q2h50i.xn--1ch; ; ;  # 4ڽ︒.≠
-4ڽ。󠑥.≠; 4ڽ.󠑥.≠; [B1, P1, V6]; xn--4-kvc.xn--5136e.xn--1ch; ; ;  # 4ڽ..≠
-4ڽ。󠑥.≠; 4ڽ.󠑥.≠; [B1, P1, V6]; xn--4-kvc.xn--5136e.xn--1ch; ; ;  # 4ڽ..≠
-xn--4-kvc.xn--5136e.xn--1ch; 4ڽ.󠑥.≠; [B1, V6]; xn--4-kvc.xn--5136e.xn--1ch; ; ;  # 4ڽ..≠
-xn--4-kvc5601q2h50i.xn--1ch; 4ڽ︒󠑥.≠; [B1, V6]; xn--4-kvc5601q2h50i.xn--1ch; ; ;  # 4ڽ︒.≠
-𝟓。ۗ; 5.ۗ; [V5]; 5.xn--nlb; ; ;  # 5.ۗ
-5。ۗ; 5.ۗ; [V5]; 5.xn--nlb; ; ;  # 5.ۗ
-5.xn--nlb; 5.ۗ; [V5]; 5.xn--nlb; ; ;  # 5.ۗ
-‌򺸩.⾕; ‌򺸩.谷; [C1, P1, V6]; xn--0ug26167i.xn--6g3a; ; xn--i183d.xn--6g3a; [P1, V6] # .谷
-‌򺸩.谷; ; [C1, P1, V6]; xn--0ug26167i.xn--6g3a; ; xn--i183d.xn--6g3a; [P1, V6] # .谷
-xn--i183d.xn--6g3a; 򺸩.谷; [V6]; xn--i183d.xn--6g3a; ; ;  # .谷
-xn--0ug26167i.xn--6g3a; ‌򺸩.谷; [C1, V6]; xn--0ug26167i.xn--6g3a; ; ;  # .谷
-︒󎰇‍.-ܼ‌; ; [C1, C2, P1, V3, V6]; xn--1ug1658ftw26f.xn----t2c071q; ; xn--y86c71305c.xn----t2c; [P1, V3, V6] # ︒.-ܼ
-。󎰇‍.-ܼ‌; .󎰇‍.-ܼ‌; [C1, C2, P1, V3, V6, X4_2]; .xn--1ug05310k.xn----t2c071q; [C1, C2, P1, V3, V6, A4_2]; .xn--hh50e.xn----t2c; [P1, V3, V6, A4_2] # ..-ܼ
-.xn--hh50e.xn----t2c; .󎰇.-ܼ; [V3, V6, X4_2]; .xn--hh50e.xn----t2c; [V3, V6, A4_2]; ;  # ..-ܼ
-.xn--1ug05310k.xn----t2c071q; .󎰇‍.-ܼ‌; [C1, C2, V3, V6, X4_2]; .xn--1ug05310k.xn----t2c071q; [C1, C2, V3, V6, A4_2]; ;  # ..-ܼ
-xn--y86c71305c.xn----t2c; ︒󎰇.-ܼ; [V3, V6]; xn--y86c71305c.xn----t2c; ; ;  # ︒.-ܼ
-xn--1ug1658ftw26f.xn----t2c071q; ︒󎰇‍.-ܼ‌; [C1, C2, V3, V6]; xn--1ug1658ftw26f.xn----t2c071q; ; ;  # ︒.-ܼ
-≯𞤟。ᡨ; ≯𞥁.ᡨ; [B1, P1, V6]; xn--hdhz520p.xn--48e; ; ;  # ≯𞥁.ᡨ
-≯𞤟。ᡨ; ≯𞥁.ᡨ; [B1, P1, V6]; xn--hdhz520p.xn--48e; ; ;  # ≯𞥁.ᡨ
-≯𞥁。ᡨ; ≯𞥁.ᡨ; [B1, P1, V6]; xn--hdhz520p.xn--48e; ; ;  # ≯𞥁.ᡨ
-≯𞥁。ᡨ; ≯𞥁.ᡨ; [B1, P1, V6]; xn--hdhz520p.xn--48e; ; ;  # ≯𞥁.ᡨ
-xn--hdhz520p.xn--48e; ≯𞥁.ᡨ; [B1, V6]; xn--hdhz520p.xn--48e; ; ;  # ≯𞥁.ᡨ
-ུ𫫰𝨄。ܓ𐹦; ུ𫫰𝨄.ܓ𐹦; [B1, V5]; xn--ned8985uo92e.xn--dnb6395k; ; ;  # ུ𫫰𝨄.ܓ𐹦
-xn--ned8985uo92e.xn--dnb6395k; ུ𫫰𝨄.ܓ𐹦; [B1, V5]; xn--ned8985uo92e.xn--dnb6395k; ; ;  # ུ𫫰𝨄.ܓ𐹦
-̼ߛ⁷𝟹｡𝟬; ̼ߛ73.0; [B1, V5]; xn--73-9yb648b.0; ; ;  # ̼ߛ73.0
-̼ߛ73。0; ̼ߛ73.0; [B1, V5]; xn--73-9yb648b.0; ; ;  # ̼ߛ73.0
-xn--73-9yb648b.0; ̼ߛ73.0; [B1, V5]; xn--73-9yb648b.0; ; ;  # ̼ߛ73.0
-‍．𝟗; ‍.9; [C2]; xn--1ug.9; ; .9; [A4_2] # .9
-‍.9; ; [C2]; xn--1ug.9; ; .9; [A4_2] # .9
-.9; ; [X4_2]; ; [A4_2]; ;  # .9
-xn--1ug.9; ‍.9; [C2]; xn--1ug.9; ; ;  # .9
-9; ; ; ; ; ;  # 9
-ݹᡭ𪕈。ڶࣙ; ݹᡭ𪕈.ڶࣙ; [B2, B3]; xn--9pb497fs270c.xn--pkb80i; ; ;  # ݹᡭ𪕈.ڶࣙ
-xn--9pb497fs270c.xn--pkb80i; ݹᡭ𪕈.ڶࣙ; [B2, B3]; xn--9pb497fs270c.xn--pkb80i; ; ;  # ݹᡭ𪕈.ڶࣙ
-ܦ５ߢ겙。᳴𐷚; ܦ5ߢ겙.᳴𐷚; [B1, B2, B3, P1, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ;  # ܦ5ߢ겙.᳴
-ܦ５ߢ겙。᳴𐷚; ܦ5ߢ겙.᳴𐷚; [B1, B2, B3, P1, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ;  # ܦ5ߢ겙.᳴
-ܦ5ߢ겙。᳴𐷚; ܦ5ߢ겙.᳴𐷚; [B1, B2, B3, P1, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ;  # ܦ5ߢ겙.᳴
-ܦ5ߢ겙。᳴𐷚; ܦ5ߢ겙.᳴𐷚; [B1, B2, B3, P1, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ;  # ܦ5ߢ겙.᳴
-xn--5-j1c97c2483c.xn--e7f2093h; ܦ5ߢ겙.᳴𐷚; [B1, B2, B3, V5, V6]; xn--5-j1c97c2483c.xn--e7f2093h; ; ;  # ܦ5ߢ겙.᳴
-Ⴍ𿣍ꡨ֮。Ⴞ‌‌; Ⴍ𿣍ꡨ֮.Ⴞ‌‌; [C1, P1, V6]; xn--5cb347co96jug15a.xn--2nd059ea; ; xn--5cb347co96jug15a.xn--2nd; [P1, V6] # Ⴍꡨ֮.Ⴞ
-ⴍ𿣍ꡨ֮。ⴞ‌‌; ⴍ𿣍ꡨ֮.ⴞ‌‌; [C1, P1, V6]; xn--5cb172r175fug38a.xn--0uga051h; ; xn--5cb172r175fug38a.xn--mlj; [P1, V6] # ⴍꡨ֮.ⴞ
-xn--5cb172r175fug38a.xn--mlj; ⴍ𿣍ꡨ֮.ⴞ; [V6]; xn--5cb172r175fug38a.xn--mlj; ; ;  # ⴍꡨ֮.ⴞ
-xn--5cb172r175fug38a.xn--0uga051h; ⴍ𿣍ꡨ֮.ⴞ‌‌; [C1, V6]; xn--5cb172r175fug38a.xn--0uga051h; ; ;  # ⴍꡨ֮.ⴞ
-xn--5cb347co96jug15a.xn--2nd; Ⴍ𿣍ꡨ֮.Ⴞ; [V6]; xn--5cb347co96jug15a.xn--2nd; ; ;  # Ⴍꡨ֮.Ⴞ
-xn--5cb347co96jug15a.xn--2nd059ea; Ⴍ𿣍ꡨ֮.Ⴞ‌‌; [C1, V6]; xn--5cb347co96jug15a.xn--2nd059ea; ; ;  # Ⴍꡨ֮.Ⴞ
-𐋰。󑓱; 𐋰.󑓱; [P1, V6]; xn--k97c.xn--q031e; ; ;  # 𐋰.
-xn--k97c.xn--q031e; 𐋰.󑓱; [V6]; xn--k97c.xn--q031e; ; ;  # 𐋰.
-󡎦឴୍.𐹾; ; [B1, P1, V6]; xn--9ic364dho91z.xn--2o0d; ; ;  # ୍.𐹾
-xn--9ic364dho91z.xn--2o0d; 󡎦឴୍.𐹾; [B1, V6]; xn--9ic364dho91z.xn--2o0d; ; ;  # ୍.𐹾
-ࣟႫ𶿸귤．򠅼𝟢휪ૣ; ࣟႫ𶿸귤.򠅼0휪ૣ; [P1, V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ;  # ࣟႫ귤.0휪ૣ
-ࣟႫ𶿸귤．򠅼𝟢휪ૣ; ࣟႫ𶿸귤.򠅼0휪ૣ; [P1, V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ;  # ࣟႫ귤.0휪ૣ
-ࣟႫ𶿸귤.򠅼0휪ૣ; ; [P1, V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ;  # ࣟႫ귤.0휪ૣ
-ࣟႫ𶿸귤.򠅼0휪ૣ; ࣟႫ𶿸귤.򠅼0휪ૣ; [P1, V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ;  # ࣟႫ귤.0휪ૣ
-ࣟⴋ𶿸귤.򠅼0휪ૣ; ࣟⴋ𶿸귤.򠅼0휪ૣ; [P1, V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
-ࣟⴋ𶿸귤.򠅼0휪ૣ; ; [P1, V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
-xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ࣟⴋ𶿸귤.򠅼0휪ૣ; [V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
-xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ࣟႫ𶿸귤.򠅼0휪ૣ; [V5, V6]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ;  # ࣟႫ귤.0휪ૣ
-ࣟⴋ𶿸귤．򠅼𝟢휪ૣ; ࣟⴋ𶿸귤.򠅼0휪ૣ; [P1, V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
-ࣟⴋ𶿸귤．򠅼𝟢휪ૣ; ࣟⴋ𶿸귤.򠅼0휪ૣ; [P1, V5, V6]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
-ބ．𞡝؁; ބ.𞡝؁; [P1, V6]; xn--lqb.xn--jfb1808v; ; ;  # ބ.𞡝
-ބ.𞡝؁; ; [P1, V6]; xn--lqb.xn--jfb1808v; ; ;  # ބ.𞡝
-xn--lqb.xn--jfb1808v; ބ.𞡝؁; [V6]; xn--lqb.xn--jfb1808v; ; ;  # ބ.𞡝
-્₃.8꣄‍🃤; ્3.8꣄‍🃤; [V5]; xn--3-yke.xn--8-ugnv982dbkwm; ; xn--3-yke.xn--8-sl4et308f;  # ્3.8꣄🃤
-્3.8꣄‍🃤; ; [V5]; xn--3-yke.xn--8-ugnv982dbkwm; ; xn--3-yke.xn--8-sl4et308f;  # ્3.8꣄🃤
-xn--3-yke.xn--8-sl4et308f; ્3.8꣄🃤; [V5]; xn--3-yke.xn--8-sl4et308f; ; ;  # ્3.8꣄🃤
-xn--3-yke.xn--8-ugnv982dbkwm; ્3.8꣄‍🃤; [V5]; xn--3-yke.xn--8-ugnv982dbkwm; ; ;  # ્3.8꣄🃤
-℻⩷𝆆。𞤠󠆁᠌; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
-FAX⩷𝆆。𞤠󠆁᠌; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
-fax⩷𝆆。𞥂󠆁᠌; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
-Fax⩷𝆆。𞤠󠆁᠌; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
+xn----zmb048s.xn--rlj2573p; σ\u200D-.ⴣ𦟙; [C2, V3]; xn----zmb048s.xn--rlj2573p; ; ;  # σ-.ⴣ𦟙
+xn----xmb348s.xn--rlj2573p; ς\u200D-.ⴣ𦟙; [C2, V3]; xn----xmb348s.xn--rlj2573p; ; ;  # ς-.ⴣ𦟙
+xn----zmb.xn--7nd64871a; σ-.Ⴣ𦟙; [V3, V7]; xn----zmb.xn--7nd64871a; ; ;  # σ-.Ⴣ𦟙
+xn----zmb048s.xn--7nd64871a; σ\u200D-.Ⴣ𦟙; [C2, V3, V7]; xn----zmb048s.xn--7nd64871a; ; ;  # σ-.Ⴣ𦟙
+xn----xmb348s.xn--7nd64871a; ς\u200D-.Ⴣ𦟙; [C2, V3, V7]; xn----xmb348s.xn--7nd64871a; ; ;  # ς-.Ⴣ𦟙
+≠。🞳𝟲; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
+=\u0338。🞳𝟲; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
+≠。🞳6; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
+=\u0338。🞳6; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
+xn--1ch.xn--6-dl4s; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
+≠.🞳6; ; ; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
+=\u0338.🞳6; ≠.🞳6; ; xn--1ch.xn--6-dl4s; ; ;  # ≠.🞳6
+󅬽.蠔; ; [V7]; xn--g747d.xn--xl2a; ; ;  # .蠔
+xn--g747d.xn--xl2a; 󅬽.蠔; [V7]; xn--g747d.xn--xl2a; ; ;  # .蠔
+\u08E6\u200D．뼽; \u08E6\u200D.뼽; [C2, V6]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V6] # ࣦ.뼽
+\u08E6\u200D．뼽; \u08E6\u200D.뼽; [C2, V6]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V6] # ࣦ.뼽
+\u08E6\u200D.뼽; ; [C2, V6]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V6] # ࣦ.뼽
+\u08E6\u200D.뼽; \u08E6\u200D.뼽; [C2, V6]; xn--p0b869i.xn--e43b; ; xn--p0b.xn--e43b; [V6] # ࣦ.뼽
+xn--p0b.xn--e43b; \u08E6.뼽; [V6]; xn--p0b.xn--e43b; ; ;  # ࣦ.뼽
+xn--p0b869i.xn--e43b; \u08E6\u200D.뼽; [C2, V6]; xn--p0b869i.xn--e43b; ; ;  # ࣦ.뼽
+₇\u0BCD􃂷\u06D2。👖\u0675-𞪑; 7\u0BCD􃂷\u06D2.👖\u0627\u0674-𞪑; [B1, V7]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ;  # 7்ے.👖اٴ-
+7\u0BCD􃂷\u06D2。👖\u0627\u0674-𞪑; 7\u0BCD􃂷\u06D2.👖\u0627\u0674-𞪑; [B1, V7]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ;  # 7்ے.👖اٴ-
+xn--7-rwc839aj3073c.xn----ymc5uv818oghka; 7\u0BCD􃂷\u06D2.👖\u0627\u0674-𞪑; [B1, V7]; xn--7-rwc839aj3073c.xn----ymc5uv818oghka; ; ;  # 7்ے.👖اٴ-
+-｡\u077B; -.\u077B; [B1, V3]; -.xn--cqb; ; ;  # -.ݻ
+-。\u077B; -.\u077B; [B1, V3]; -.xn--cqb; ; ;  # -.ݻ
+-.xn--cqb; -.\u077B; [B1, V3]; -.xn--cqb; ; ;  # -.ݻ
+𑇌𵛓｡-⒈ꡏ\u072B; 𑇌𵛓.-⒈ꡏ\u072B; [B1, V3, V6, V7]; xn--8d1dg030h.xn----u1c466tp10j; ; ;  # 𑇌.-⒈ꡏܫ
+𑇌𵛓。-1.ꡏ\u072B; 𑇌𵛓.-1.ꡏ\u072B; [B1, B5, B6, V3, V6, V7]; xn--8d1dg030h.-1.xn--1nb7163f; ; ;  # 𑇌.-1.ꡏܫ
+xn--8d1dg030h.-1.xn--1nb7163f; 𑇌𵛓.-1.ꡏ\u072B; [B1, B5, B6, V3, V6, V7]; xn--8d1dg030h.-1.xn--1nb7163f; ; ;  # 𑇌.-1.ꡏܫ
+xn--8d1dg030h.xn----u1c466tp10j; 𑇌𵛓.-⒈ꡏ\u072B; [B1, V3, V6, V7]; xn--8d1dg030h.xn----u1c466tp10j; ; ;  # 𑇌.-⒈ꡏܫ
+璛\u1734\u06AF.-; ; [B1, B5, B6, V3]; xn--ikb175frt4e.-; ; ;  # 璛᜴گ.-
+xn--ikb175frt4e.-; 璛\u1734\u06AF.-; [B1, B5, B6, V3]; xn--ikb175frt4e.-; ; ;  # 璛᜴گ.-
+󠆰\u08A1\u0A4D샕．𐹲휁; \u08A1\u0A4D샕.𐹲휁; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ;  # ࢡ੍샕.𐹲휁
+󠆰\u08A1\u0A4D샕．𐹲휁; \u08A1\u0A4D샕.𐹲휁; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ;  # ࢡ੍샕.𐹲휁
+󠆰\u08A1\u0A4D샕.𐹲휁; \u08A1\u0A4D샕.𐹲휁; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ;  # ࢡ੍샕.𐹲휁
+󠆰\u08A1\u0A4D샕.𐹲휁; \u08A1\u0A4D샕.𐹲휁; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ;  # ࢡ੍샕.𐹲휁
+xn--qyb07fj857a.xn--728bv72h; \u08A1\u0A4D샕.𐹲휁; [B1, B2, B3]; xn--qyb07fj857a.xn--728bv72h; ; ;  # ࢡ੍샕.𐹲휁
+񍨽．񋸕; 񍨽.񋸕; [V7]; xn--pr3x.xn--rv7w; ; ;  # .
+񍨽.񋸕; ; [V7]; xn--pr3x.xn--rv7w; ; ;  # .
+xn--pr3x.xn--rv7w; 񍨽.񋸕; [V7]; xn--pr3x.xn--rv7w; ; ;  # .
+\u067D𞥕｡𑑂𞤶Ⴍ-; \u067D𞥕.𑑂𞤶ⴍ-; [B1, V3, V6]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
+\u067D𞥕。𑑂𞤶Ⴍ-; \u067D𞥕.𑑂𞤶ⴍ-; [B1, V3, V6]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
+\u067D𞥕。𑑂𞤶ⴍ-; \u067D𞥕.𑑂𞤶ⴍ-; [B1, V3, V6]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
+\u067D𞥕。𑑂𞤔Ⴍ-; \u067D𞥕.𑑂𞤶ⴍ-; [B1, V3, V6]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
+\u067D𞥕。𑑂𞤔ⴍ-; \u067D𞥕.𑑂𞤶ⴍ-; [B1, V3, V6]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
+xn--2ib0338v.xn----zvs0199fo91g; \u067D𞥕.𑑂𞤶ⴍ-; [B1, V3, V6]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
+\u067D𞥕｡𑑂𞤶ⴍ-; \u067D𞥕.𑑂𞤶ⴍ-; [B1, V3, V6]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
+\u067D𞥕｡𑑂𞤔Ⴍ-; \u067D𞥕.𑑂𞤶ⴍ-; [B1, V3, V6]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
+\u067D𞥕｡𑑂𞤔ⴍ-; \u067D𞥕.𑑂𞤶ⴍ-; [B1, V3, V6]; xn--2ib0338v.xn----zvs0199fo91g; ; ;  # ٽ𞥕.𑑂𞤶ⴍ-
+xn--2ib0338v.xn----w0g2740ro9vg; \u067D𞥕.𑑂𞤶Ⴍ-; [B1, V3, V6, V7]; xn--2ib0338v.xn----w0g2740ro9vg; ; ;  # ٽ𞥕.𑑂𞤶Ⴍ-
+𐯀𐸉𞧏。񢚧₄Ⴋ񂹫; 𐯀𐸉𞧏.񢚧4ⴋ񂹫; [V7]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ;  # .4ⴋ
+𐯀𐸉𞧏。񢚧4Ⴋ񂹫; 𐯀𐸉𞧏.񢚧4ⴋ񂹫; [V7]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ;  # .4ⴋ
+𐯀𐸉𞧏。񢚧4ⴋ񂹫; 𐯀𐸉𞧏.񢚧4ⴋ񂹫; [V7]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ;  # .4ⴋ
+xn--039c42bq865a.xn--4-wvs27840bnrzm; 𐯀𐸉𞧏.񢚧4ⴋ񂹫; [V7]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ;  # .4ⴋ
+𐯀𐸉𞧏。񢚧₄ⴋ񂹫; 𐯀𐸉𞧏.񢚧4ⴋ񂹫; [V7]; xn--039c42bq865a.xn--4-wvs27840bnrzm; ; ;  # .4ⴋ
+xn--039c42bq865a.xn--4-t0g49302fnrzm; 𐯀𐸉𞧏.񢚧4Ⴋ񂹫; [V7]; xn--039c42bq865a.xn--4-t0g49302fnrzm; ; ;  # .4Ⴋ
+4\u06BD︒󠑥.≠; ; [B1, V7]; xn--4-kvc5601q2h50i.xn--1ch; ; ;  # 4ڽ︒.≠
+4\u06BD︒󠑥.=\u0338; 4\u06BD︒󠑥.≠; [B1, V7]; xn--4-kvc5601q2h50i.xn--1ch; ; ;  # 4ڽ︒.≠
+4\u06BD。󠑥.≠; 4\u06BD.󠑥.≠; [B1, V7]; xn--4-kvc.xn--5136e.xn--1ch; ; ;  # 4ڽ..≠
+4\u06BD。󠑥.=\u0338; 4\u06BD.󠑥.≠; [B1, V7]; xn--4-kvc.xn--5136e.xn--1ch; ; ;  # 4ڽ..≠
+xn--4-kvc.xn--5136e.xn--1ch; 4\u06BD.󠑥.≠; [B1, V7]; xn--4-kvc.xn--5136e.xn--1ch; ; ;  # 4ڽ..≠
+xn--4-kvc5601q2h50i.xn--1ch; 4\u06BD︒󠑥.≠; [B1, V7]; xn--4-kvc5601q2h50i.xn--1ch; ; ;  # 4ڽ︒.≠
+𝟓。\u06D7; 5.\u06D7; [V6]; 5.xn--nlb; ; ;  # 5.ۗ
+5。\u06D7; 5.\u06D7; [V6]; 5.xn--nlb; ; ;  # 5.ۗ
+5.xn--nlb; 5.\u06D7; [V6]; 5.xn--nlb; ; ;  # 5.ۗ
+\u200C򺸩.⾕; \u200C򺸩.谷; [C1, V7]; xn--0ug26167i.xn--6g3a; ; xn--i183d.xn--6g3a; [V7] # .谷
+\u200C򺸩.谷; ; [C1, V7]; xn--0ug26167i.xn--6g3a; ; xn--i183d.xn--6g3a; [V7] # .谷
+xn--i183d.xn--6g3a; 򺸩.谷; [V7]; xn--i183d.xn--6g3a; ; ;  # .谷
+xn--0ug26167i.xn--6g3a; \u200C򺸩.谷; [C1, V7]; xn--0ug26167i.xn--6g3a; ; ;  # .谷
+︒󎰇\u200D.-\u073C\u200C; ; [C1, C2, V3, V7]; xn--1ug1658ftw26f.xn----t2c071q; ; xn--y86c71305c.xn----t2c; [V3, V7] # ︒.-ܼ
+。󎰇\u200D.-\u073C\u200C; .󎰇\u200D.-\u073C\u200C; [C1, C2, V3, V7, X4_2]; .xn--1ug05310k.xn----t2c071q; [C1, C2, V3, V7, A4_2]; .xn--hh50e.xn----t2c; [V3, V7, A4_2] # ..-ܼ
+.xn--hh50e.xn----t2c; .󎰇.-\u073C; [V3, V7, X4_2]; .xn--hh50e.xn----t2c; [V3, V7, A4_2]; ;  # ..-ܼ
+.xn--1ug05310k.xn----t2c071q; .󎰇\u200D.-\u073C\u200C; [C1, C2, V3, V7, X4_2]; .xn--1ug05310k.xn----t2c071q; [C1, C2, V3, V7, A4_2]; ;  # ..-ܼ
+xn--y86c71305c.xn----t2c; ︒󎰇.-\u073C; [V3, V7]; xn--y86c71305c.xn----t2c; ; ;  # ︒.-ܼ
+xn--1ug1658ftw26f.xn----t2c071q; ︒󎰇\u200D.-\u073C\u200C; [C1, C2, V3, V7]; xn--1ug1658ftw26f.xn----t2c071q; ; ;  # ︒.-ܼ
+≯𞤟。ᡨ; ≯𞥁.ᡨ; [B1]; xn--hdhz520p.xn--48e; ; ;  # ≯𞥁.ᡨ
+>\u0338𞤟。ᡨ; ≯𞥁.ᡨ; [B1]; xn--hdhz520p.xn--48e; ; ;  # ≯𞥁.ᡨ
+>\u0338𞥁。ᡨ; ≯𞥁.ᡨ; [B1]; xn--hdhz520p.xn--48e; ; ;  # ≯𞥁.ᡨ
+≯𞥁。ᡨ; ≯𞥁.ᡨ; [B1]; xn--hdhz520p.xn--48e; ; ;  # ≯𞥁.ᡨ
+xn--hdhz520p.xn--48e; ≯𞥁.ᡨ; [B1]; xn--hdhz520p.xn--48e; ; ;  # ≯𞥁.ᡨ
+\u0F74𫫰𝨄。\u0713𐹦; \u0F74𫫰𝨄.\u0713𐹦; [B1, V6]; xn--ned8985uo92e.xn--dnb6395k; ; ;  # ུ𫫰𝨄.ܓ𐹦
+xn--ned8985uo92e.xn--dnb6395k; \u0F74𫫰𝨄.\u0713𐹦; [B1, V6]; xn--ned8985uo92e.xn--dnb6395k; ; ;  # ུ𫫰𝨄.ܓ𐹦
+\u033C\u07DB⁷𝟹｡𝟬; \u033C\u07DB73.0; [B1, V6]; xn--73-9yb648b.0; ; ;  # ̼ߛ73.0
+\u033C\u07DB73。0; \u033C\u07DB73.0; [B1, V6]; xn--73-9yb648b.0; ; ;  # ̼ߛ73.0
+xn--73-9yb648b.a; \u033C\u07DB73.a; [B1, V6]; xn--73-9yb648b.a; ; ;  # ̼ߛ73.a
+\u200D．𝟗; \u200D.9; [C2]; xn--1ug.9; ; .9; [A4_2] # .9
+\u200D.j; ; [C2]; xn--1ug.j; ; .j; [A4_2] # .j
+\u200D.J; \u200D.j; [C2]; xn--1ug.j; ; .j; [A4_2] # .j
+.j; ; [X4_2]; ; [A4_2]; ;  # .j
+xn--1ug.j; \u200D.j; [C2]; xn--1ug.j; ; ;  # .j
+j; ; ; ; ; ;  # j
+\u0779ᡭ𪕈。\u06B6\u08D9; \u0779ᡭ𪕈.\u06B6\u08D9; [B2, B3]; xn--9pb497fs270c.xn--pkb80i; ; ;  # ݹᡭ𪕈.ڶࣙ
+xn--9pb497fs270c.xn--pkb80i; \u0779ᡭ𪕈.\u06B6\u08D9; [B2, B3]; xn--9pb497fs270c.xn--pkb80i; ; ;  # ݹᡭ𪕈.ڶࣙ
+\u0726５\u07E2겙。\u1CF4𐷚; \u07265\u07E2겙.\u1CF4𐷚; [B1, B2, B3, V6, V7]; xn--5-j1c97c2483c.xn--e7f2093h; ; ;  # ܦ5ߢ겙.᳴
+\u0726５\u07E2겙。\u1CF4𐷚; \u07265\u07E2겙.\u1CF4𐷚; [B1, B2, B3, V6, V7]; xn--5-j1c97c2483c.xn--e7f2093h; ; ;  # ܦ5ߢ겙.᳴
+\u07265\u07E2겙。\u1CF4𐷚; \u07265\u07E2겙.\u1CF4𐷚; [B1, B2, B3, V6, V7]; xn--5-j1c97c2483c.xn--e7f2093h; ; ;  # ܦ5ߢ겙.᳴
+\u07265\u07E2겙。\u1CF4𐷚; \u07265\u07E2겙.\u1CF4𐷚; [B1, B2, B3, V6, V7]; xn--5-j1c97c2483c.xn--e7f2093h; ; ;  # ܦ5ߢ겙.᳴
+xn--5-j1c97c2483c.xn--e7f2093h; \u07265\u07E2겙.\u1CF4𐷚; [B1, B2, B3, V6, V7]; xn--5-j1c97c2483c.xn--e7f2093h; ; ;  # ܦ5ߢ겙.᳴
+Ⴍ𿣍ꡨ\u05AE。Ⴞ\u200C\u200C; ⴍ𿣍ꡨ\u05AE.ⴞ\u200C\u200C; [C1, V7]; xn--5cb172r175fug38a.xn--0uga051h; ; xn--5cb172r175fug38a.xn--mlj; [V7] # ⴍꡨ֮.ⴞ
+ⴍ𿣍ꡨ\u05AE。ⴞ\u200C\u200C; ⴍ𿣍ꡨ\u05AE.ⴞ\u200C\u200C; [C1, V7]; xn--5cb172r175fug38a.xn--0uga051h; ; xn--5cb172r175fug38a.xn--mlj; [V7] # ⴍꡨ֮.ⴞ
+xn--5cb172r175fug38a.xn--mlj; ⴍ𿣍ꡨ\u05AE.ⴞ; [V7]; xn--5cb172r175fug38a.xn--mlj; ; ;  # ⴍꡨ֮.ⴞ
+xn--5cb172r175fug38a.xn--0uga051h; ⴍ𿣍ꡨ\u05AE.ⴞ\u200C\u200C; [C1, V7]; xn--5cb172r175fug38a.xn--0uga051h; ; ;  # ⴍꡨ֮.ⴞ
+xn--5cb347co96jug15a.xn--2nd; Ⴍ𿣍ꡨ\u05AE.Ⴞ; [V7]; xn--5cb347co96jug15a.xn--2nd; ; ;  # Ⴍꡨ֮.Ⴞ
+xn--5cb347co96jug15a.xn--2nd059ea; Ⴍ𿣍ꡨ\u05AE.Ⴞ\u200C\u200C; [C1, V7]; xn--5cb347co96jug15a.xn--2nd059ea; ; ;  # Ⴍꡨ֮.Ⴞ
+𐋰。󑓱; 𐋰.󑓱; [V7]; xn--k97c.xn--q031e; ; ;  # 𐋰.
+xn--k97c.xn--q031e; 𐋰.󑓱; [V7]; xn--k97c.xn--q031e; ; ;  # 𐋰.
+󡎦\u17B4\u0B4D.𐹾; 󡎦\u0B4D.𐹾; [B1, V7]; xn--9ic59305p.xn--2o0d; ; ;  # ୍.𐹾
+xn--9ic59305p.xn--2o0d; 󡎦\u0B4D.𐹾; [B1, V7]; xn--9ic59305p.xn--2o0d; ; ;  # ୍.𐹾
+xn--9ic364dho91z.xn--2o0d; 󡎦\u17B4\u0B4D.𐹾; [B1, V7]; xn--9ic364dho91z.xn--2o0d; ; ;  # ୍.𐹾
+\u08DFႫ𶿸귤．򠅼𝟢휪\u0AE3; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [V6, V7]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
+\u08DFႫ𶿸귤．򠅼𝟢휪\u0AE3; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [V6, V7]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
+\u08DFႫ𶿸귤.򠅼0휪\u0AE3; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [V6, V7]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
+\u08DFႫ𶿸귤.򠅼0휪\u0AE3; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [V6, V7]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
+\u08DFⴋ𶿸귤.򠅼0휪\u0AE3; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [V6, V7]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
+\u08DFⴋ𶿸귤.򠅼0휪\u0AE3; ; [V6, V7]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
+xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [V6, V7]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
+\u08DFⴋ𶿸귤．򠅼𝟢휪\u0AE3; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [V6, V7]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
+\u08DFⴋ𶿸귤．򠅼𝟢휪\u0AE3; \u08DFⴋ𶿸귤.򠅼0휪\u0AE3; [V6, V7]; xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f; ; ;  # ࣟⴋ귤.0휪ૣ
+xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; \u08DFႫ𶿸귤.򠅼0휪\u0AE3; [V6, V7]; xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f; ; ;  # ࣟႫ귤.0휪ૣ
+\u0784．𞡝\u0601; \u0784.𞡝\u0601; [V7]; xn--lqb.xn--jfb1808v; ; ;  # ބ.𞡝
+\u0784.𞡝\u0601; ; [V7]; xn--lqb.xn--jfb1808v; ; ;  # ބ.𞡝
+xn--lqb.xn--jfb1808v; \u0784.𞡝\u0601; [V7]; xn--lqb.xn--jfb1808v; ; ;  # ބ.𞡝
+\u0ACD₃.8\uA8C4\u200D🃤; \u0ACD3.8\uA8C4\u200D🃤; [V6]; xn--3-yke.xn--8-ugnv982dbkwm; ; xn--3-yke.xn--8-sl4et308f;  # ્3.8꣄🃤
+\u0ACD3.8\uA8C4\u200D🃤; ; [V6]; xn--3-yke.xn--8-ugnv982dbkwm; ; xn--3-yke.xn--8-sl4et308f;  # ્3.8꣄🃤
+xn--3-yke.xn--8-sl4et308f; \u0ACD3.8\uA8C4🃤; [V6]; xn--3-yke.xn--8-sl4et308f; ; ;  # ્3.8꣄🃤
+xn--3-yke.xn--8-ugnv982dbkwm; \u0ACD3.8\uA8C4\u200D🃤; [V6]; xn--3-yke.xn--8-ugnv982dbkwm; ; ;  # ્3.8꣄🃤
+℻⩷𝆆。𞤠󠆁\u180C; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
+FAX⩷𝆆。𞤠󠆁\u180C; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
+fax⩷𝆆。𞥂󠆁\u180C; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
+Fax⩷𝆆。𞤠󠆁\u180C; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
 xn--fax-4c9a1676t.xn--6e6h; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
-℻⩷𝆆。𞥂󠆁᠌; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
-FAX⩷𝆆。𞥂󠆁᠌; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
-fax⩷𝆆。𞤠󠆁᠌; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
+℻⩷𝆆。𞥂󠆁\u180C; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
+FAX⩷𝆆。𞥂󠆁\u180C; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
+fax⩷𝆆。𞤠󠆁\u180C; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
 fax⩷𝆆.𞥂; ; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
 FAX⩷𝆆.𞤠; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
 Fax⩷𝆆.𞤠; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
 FAX⩷𝆆.𞥂; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
 Fax⩷𝆆.𞥂; fax⩷𝆆.𞥂; [B6]; xn--fax-4c9a1676t.xn--6e6h; ; ;  # fax⩷𝆆.𞥂
-ꡕ≠ၞ󮿱｡𐵧󠄫ﾠ; ꡕ≠ၞ󮿱.𐵧ﾠ; [B2, B3, P1, V6]; xn--cld333gn31h0158l.xn--cl7c96v; ; ;  # ꡕ≠ၞ.
-ꡕ≠ၞ󮿱｡𐵧󠄫ﾠ; ꡕ≠ၞ󮿱.𐵧ﾠ; [B2, B3, P1, V6]; xn--cld333gn31h0158l.xn--cl7c96v; ; ;  # ꡕ≠ၞ.
-ꡕ≠ၞ󮿱。𐵧󠄫ᅠ; ꡕ≠ၞ󮿱.𐵧ᅠ; [B2, B3, P1, V6]; xn--cld333gn31h0158l.xn--psd1510k; ; ;  # ꡕ≠ၞ.
-ꡕ≠ၞ󮿱。𐵧󠄫ᅠ; ꡕ≠ၞ󮿱.𐵧ᅠ; [B2, B3, P1, V6]; xn--cld333gn31h0158l.xn--psd1510k; ; ;  # ꡕ≠ၞ.
-xn--cld333gn31h0158l.xn--psd1510k; ꡕ≠ၞ󮿱.𐵧ᅠ; [B2, B3, V6]; xn--cld333gn31h0158l.xn--psd1510k; ; ;  # ꡕ≠ၞ.
-xn--cld333gn31h0158l.xn--cl7c96v; ꡕ≠ၞ󮿱.𐵧ﾠ; [B2, B3, V6]; xn--cld333gn31h0158l.xn--cl7c96v; ; ;  # ꡕ≠ၞ.
-鱊。‌; 鱊.‌; [C1]; xn--rt6a.xn--0ug; ; xn--rt6a.; [] # 鱊.
-xn--rt6a.; 鱊.; ; xn--rt6a.; ; ;  # 鱊.
-鱊.; ; ; xn--rt6a.; ; ;  # 鱊.
-xn--rt6a.xn--0ug; 鱊.‌; [C1]; xn--rt6a.xn--0ug; ; ;  # 鱊.
-8𐹣．𑍨; 8𐹣.𑍨; [B1, B3, B6, V5]; xn--8-d26i.xn--0p1d; ; ;  # 8𐹣.𑍨
-8𐹣.𑍨; ; [B1, B3, B6, V5]; xn--8-d26i.xn--0p1d; ; ;  # 8𐹣.𑍨
-xn--8-d26i.xn--0p1d; 8𐹣.𑍨; [B1, B3, B6, V5]; xn--8-d26i.xn--0p1d; ; ;  # 8𐹣.𑍨
+ꡕ≠\u105E󮿱｡𐵧󠄫\uFFA0; ꡕ≠\u105E󮿱.𐵧; [V7]; xn--cld333gn31h0158l.xn--3g0d; ; ;  # ꡕ≠ၞ.
+ꡕ=\u0338\u105E󮿱｡𐵧󠄫\uFFA0; ꡕ≠\u105E󮿱.𐵧; [V7]; xn--cld333gn31h0158l.xn--3g0d; ; ;  # ꡕ≠ၞ.
+ꡕ≠\u105E󮿱。𐵧󠄫\u1160; ꡕ≠\u105E󮿱.𐵧; [V7]; xn--cld333gn31h0158l.xn--3g0d; ; ;  # ꡕ≠ၞ.
+ꡕ=\u0338\u105E󮿱。𐵧󠄫\u1160; ꡕ≠\u105E󮿱.𐵧; [V7]; xn--cld333gn31h0158l.xn--3g0d; ; ;  # ꡕ≠ၞ.
+xn--cld333gn31h0158l.xn--3g0d; ꡕ≠\u105E󮿱.𐵧; [V7]; xn--cld333gn31h0158l.xn--3g0d; ; ;  # ꡕ≠ၞ.
+xn--cld333gn31h0158l.xn--psd1510k; ꡕ≠\u105E󮿱.𐵧\u1160; [B2, B3, V7]; xn--cld333gn31h0158l.xn--psd1510k; ; ;  # ꡕ≠ၞ.
+xn--cld333gn31h0158l.xn--cl7c96v; ꡕ≠\u105E󮿱.𐵧\uFFA0; [B2, B3, V7]; xn--cld333gn31h0158l.xn--cl7c96v; ; ;  # ꡕ≠ၞ.
+鱊。\u200C; 鱊.\u200C; [C1]; xn--rt6a.xn--0ug; ; xn--rt6a.; [A4_2] # 鱊.
+xn--rt6a.; 鱊.; ; xn--rt6a.; [A4_2]; ;  # 鱊.
+鱊.; ; ; xn--rt6a.; [A4_2]; ;  # 鱊.
+xn--rt6a.xn--0ug; 鱊.\u200C; [C1]; xn--rt6a.xn--0ug; ; ;  # 鱊.
+8𐹣．𑍨; 8𐹣.𑍨; [B1, V6]; xn--8-d26i.xn--0p1d; ; ;  # 8𐹣.𑍨
+8𐹣.𑍨; ; [B1, V6]; xn--8-d26i.xn--0p1d; ; ;  # 8𐹣.𑍨
+xn--8-d26i.xn--0p1d; 8𐹣.𑍨; [B1, V6]; xn--8-d26i.xn--0p1d; ; ;  # 8𐹣.𑍨
 ⏹𐧀．𐫯; ⏹𐧀.𐫯; [B1]; xn--qoh9161g.xn--1x9c; ; ;  # ⏹𐧀.𐫯
 ⏹𐧀.𐫯; ; [B1]; xn--qoh9161g.xn--1x9c; ; ;  # ⏹𐧀.𐫯
 xn--qoh9161g.xn--1x9c; ⏹𐧀.𐫯; [B1]; xn--qoh9161g.xn--1x9c; ; ;  # ⏹𐧀.𐫯
-𞤺ߌ4．‍; 𞤺ߌ4.‍; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; xn--4-0bd15808a.; [] # 𞤺ߌ4.
-𞤺ߌ4.‍; ; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; xn--4-0bd15808a.; [] # 𞤺ߌ4.
-𞤘ߌ4.‍; 𞤺ߌ4.‍; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; xn--4-0bd15808a.; [] # 𞤺ߌ4.
-xn--4-0bd15808a.; 𞤺ߌ4.; ; xn--4-0bd15808a.; ; ;  # 𞤺ߌ4.
-𞤺ߌ4.; ; ; xn--4-0bd15808a.; ; ;  # 𞤺ߌ4.
-𞤘ߌ4.; 𞤺ߌ4.; ; xn--4-0bd15808a.; ; ;  # 𞤺ߌ4.
-xn--4-0bd15808a.xn--1ug; 𞤺ߌ4.‍; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; ;  # 𞤺ߌ4.
-𞤘ߌ4．‍; 𞤺ߌ4.‍; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; xn--4-0bd15808a.; [] # 𞤺ߌ4.
-⒗ঁ⃯-.࣢•; ; [B1, P1, V3, V6]; xn----z0d801p6kd.xn--l0b810j; ; ;  # ⒗ঁ⃯-.•
-16.ঁ⃯-.࣢•; ; [B1, P1, V3, V5, V6]; 16.xn----z0d801p.xn--l0b810j; ; ;  # 16.ঁ⃯-.•
-16.xn----z0d801p.xn--l0b810j; 16.ঁ⃯-.࣢•; [B1, V3, V5, V6]; 16.xn----z0d801p.xn--l0b810j; ; ;  # 16.ঁ⃯-.•
-xn----z0d801p6kd.xn--l0b810j; ⒗ঁ⃯-.࣢•; [B1, V3, V6]; xn----z0d801p6kd.xn--l0b810j; ; ;  # ⒗ঁ⃯-.•
+𞤺\u07CC4．\u200D; 𞤺\u07CC4.\u200D; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; xn--4-0bd15808a.; [A4_2] # 𞤺ߌ4.
+𞤺\u07CC4.\u200D; ; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; xn--4-0bd15808a.; [A4_2] # 𞤺ߌ4.
+𞤘\u07CC4.\u200D; 𞤺\u07CC4.\u200D; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; xn--4-0bd15808a.; [A4_2] # 𞤺ߌ4.
+xn--4-0bd15808a.; 𞤺\u07CC4.; ; xn--4-0bd15808a.; [A4_2]; ;  # 𞤺ߌ4.
+𞤺\u07CC4.; ; ; xn--4-0bd15808a.; [A4_2]; ;  # 𞤺ߌ4.
+𞤘\u07CC4.; 𞤺\u07CC4.; ; xn--4-0bd15808a.; [A4_2]; ;  # 𞤺ߌ4.
+xn--4-0bd15808a.xn--1ug; 𞤺\u07CC4.\u200D; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; ;  # 𞤺ߌ4.
+𞤘\u07CC4．\u200D; 𞤺\u07CC4.\u200D; [B1, C2]; xn--4-0bd15808a.xn--1ug; ; xn--4-0bd15808a.; [A4_2] # 𞤺ߌ4.
+⒗\u0981\u20EF-.\u08E2•; ; [B1, V3, V7]; xn----z0d801p6kd.xn--l0b810j; ; ;  # ⒗ঁ⃯-.•
+16.\u0981\u20EF-.\u08E2•; ; [B1, V3, V6, V7]; 16.xn----z0d801p.xn--l0b810j; ; ;  # 16.ঁ⃯-.•
+16.xn----z0d801p.xn--l0b810j; 16.\u0981\u20EF-.\u08E2•; [B1, V3, V6, V7]; 16.xn----z0d801p.xn--l0b810j; ; ;  # 16.ঁ⃯-.•
+xn----z0d801p6kd.xn--l0b810j; ⒗\u0981\u20EF-.\u08E2•; [B1, V3, V7]; xn----z0d801p6kd.xn--l0b810j; ; ;  # ⒗ঁ⃯-.•
 -｡䏛; -.䏛; [V3]; -.xn--xco; ; ;  # -.䏛
 -。䏛; -.䏛; [V3]; -.xn--xco; ; ;  # -.䏛
 -.xn--xco; -.䏛; [V3]; -.xn--xco; ; ;  # -.䏛
-‌񒃠．‍; ‌񒃠.‍; [C1, C2, P1, V6]; xn--0ugz7551c.xn--1ug; ; xn--dj8y.; [P1, V6] # .
-‌񒃠.‍; ; [C1, C2, P1, V6]; xn--0ugz7551c.xn--1ug; ; xn--dj8y.; [P1, V6] # .
-xn--dj8y.; 񒃠.; [V6]; xn--dj8y.; ; ;  # .
-xn--0ugz7551c.xn--1ug; ‌񒃠.‍; [C1, C2, V6]; xn--0ugz7551c.xn--1ug; ; ;  # .
-⒈⓰󥣇｡𐹠‍򗷦Ⴕ; ⒈⓰󥣇.𐹠‍򗷦Ⴕ; [B1, C2, P1, V6]; xn--tsh0nz9380h.xn--tnd969erj4psgl3e; ; xn--tsh0nz9380h.xn--tnd1990ke579c; [B1, P1, V6] # ⒈⓰.𐹠Ⴕ
-1.⓰󥣇。𐹠‍򗷦Ⴕ; 1.⓰󥣇.𐹠‍򗷦Ⴕ; [B1, C2, P1, V6]; 1.xn--svh00804k.xn--tnd969erj4psgl3e; ; 1.xn--svh00804k.xn--tnd1990ke579c; [B1, P1, V6] # 1.⓰.𐹠Ⴕ
-1.⓰󥣇。𐹠‍򗷦ⴕ; 1.⓰󥣇.𐹠‍򗷦ⴕ; [B1, C2, P1, V6]; 1.xn--svh00804k.xn--1ug352csp0psg45e; ; 1.xn--svh00804k.xn--dljv223ee5t2d; [B1, P1, V6] # 1.⓰.𐹠ⴕ
-1.xn--svh00804k.xn--dljv223ee5t2d; 1.⓰󥣇.𐹠򗷦ⴕ; [B1, V6]; 1.xn--svh00804k.xn--dljv223ee5t2d; ; ;  # 1.⓰.𐹠ⴕ
-1.xn--svh00804k.xn--1ug352csp0psg45e; 1.⓰󥣇.𐹠‍򗷦ⴕ; [B1, C2, V6]; 1.xn--svh00804k.xn--1ug352csp0psg45e; ; ;  # 1.⓰.𐹠ⴕ
-1.xn--svh00804k.xn--tnd1990ke579c; 1.⓰󥣇.𐹠򗷦Ⴕ; [B1, V6]; 1.xn--svh00804k.xn--tnd1990ke579c; ; ;  # 1.⓰.𐹠Ⴕ
-1.xn--svh00804k.xn--tnd969erj4psgl3e; 1.⓰󥣇.𐹠‍򗷦Ⴕ; [B1, C2, V6]; 1.xn--svh00804k.xn--tnd969erj4psgl3e; ; ;  # 1.⓰.𐹠Ⴕ
-⒈⓰󥣇｡𐹠‍򗷦ⴕ; ⒈⓰󥣇.𐹠‍򗷦ⴕ; [B1, C2, P1, V6]; xn--tsh0nz9380h.xn--1ug352csp0psg45e; ; xn--tsh0nz9380h.xn--dljv223ee5t2d; [B1, P1, V6] # ⒈⓰.𐹠ⴕ
-xn--tsh0nz9380h.xn--dljv223ee5t2d; ⒈⓰󥣇.𐹠򗷦ⴕ; [B1, V6]; xn--tsh0nz9380h.xn--dljv223ee5t2d; ; ;  # ⒈⓰.𐹠ⴕ
-xn--tsh0nz9380h.xn--1ug352csp0psg45e; ⒈⓰󥣇.𐹠‍򗷦ⴕ; [B1, C2, V6]; xn--tsh0nz9380h.xn--1ug352csp0psg45e; ; ;  # ⒈⓰.𐹠ⴕ
-xn--tsh0nz9380h.xn--tnd1990ke579c; ⒈⓰󥣇.𐹠򗷦Ⴕ; [B1, V6]; xn--tsh0nz9380h.xn--tnd1990ke579c; ; ;  # ⒈⓰.𐹠Ⴕ
-xn--tsh0nz9380h.xn--tnd969erj4psgl3e; ⒈⓰󥣇.𐹠‍򗷦Ⴕ; [B1, C2, V6]; xn--tsh0nz9380h.xn--tnd969erj4psgl3e; ; ;  # ⒈⓰.𐹠Ⴕ
-𞠊ᠮ-ß｡᳐効؁𷣭; 𞠊ᠮ-ß.᳐効؁𷣭; [B1, B2, B3, P1, V5, V6]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; xn---ss-21t18904a.xn--jfb197i791bi6x4c;  # 𞠊ᠮ-ß.᳐効
-𞠊ᠮ-ß。᳐効؁𷣭; 𞠊ᠮ-ß.᳐効؁𷣭; [B1, B2, B3, P1, V5, V6]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; xn---ss-21t18904a.xn--jfb197i791bi6x4c;  # 𞠊ᠮ-ß.᳐効
-𞠊ᠮ-SS。᳐効؁𷣭; 𞠊ᠮ-ss.᳐効؁𷣭; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
-𞠊ᠮ-ss。᳐効؁𷣭; 𞠊ᠮ-ss.᳐効؁𷣭; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
-𞠊ᠮ-Ss。᳐効؁𷣭; 𞠊ᠮ-ss.᳐効؁𷣭; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
-xn---ss-21t18904a.xn--jfb197i791bi6x4c; 𞠊ᠮ-ss.᳐効؁𷣭; [B1, B2, B3, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
-xn----qfa310pg973b.xn--jfb197i791bi6x4c; 𞠊ᠮ-ß.᳐効؁𷣭; [B1, B2, B3, V5, V6]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ß.᳐効
-𞠊ᠮ-SS｡᳐効؁𷣭; 𞠊ᠮ-ss.᳐効؁𷣭; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
-𞠊ᠮ-ss｡᳐効؁𷣭; 𞠊ᠮ-ss.᳐効؁𷣭; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
-𞠊ᠮ-Ss｡᳐効؁𷣭; 𞠊ᠮ-ss.᳐効؁𷣭; [B1, B2, B3, P1, V5, V6]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
-𑇀.󠨱; ; [P1, V5, V6]; xn--wd1d.xn--k946e; ; ;  # 𑇀.
-xn--wd1d.xn--k946e; 𑇀.󠨱; [V5, V6]; xn--wd1d.xn--k946e; ; ;  # 𑇀.
-␒3ﮈ｡𝟘𐨿𐹆; ␒3ڈ.0𐨿𐹆; [B1, P1, V6]; xn--3-jsc897t.xn--0-sc5iy3h; ; ;  # ␒3ڈ.0𐨿
-␒3ڈ。0𐨿𐹆; ␒3ڈ.0𐨿𐹆; [B1, P1, V6]; xn--3-jsc897t.xn--0-sc5iy3h; ; ;  # ␒3ڈ.0𐨿
-xn--3-jsc897t.xn--0-sc5iy3h; ␒3ڈ.0𐨿𐹆; [B1, V6]; xn--3-jsc897t.xn--0-sc5iy3h; ; ;  # ␒3ڈ.0𐨿
-ݫ６ઁࢦ。ᷣ; ݫ6ઁࢦ.ᷣ; [B1, B3, B6, V5]; xn--6-h5c06gj6c.xn--7eg; ; ;  # ݫ6ઁࢦ.ᷣ
-ݫ6ઁࢦ。ᷣ; ݫ6ઁࢦ.ᷣ; [B1, B3, B6, V5]; xn--6-h5c06gj6c.xn--7eg; ; ;  # ݫ6ઁࢦ.ᷣ
-xn--6-h5c06gj6c.xn--7eg; ݫ6ઁࢦ.ᷣ; [B1, B3, B6, V5]; xn--6-h5c06gj6c.xn--7eg; ; ;  # ݫ6ઁࢦ.ᷣ
-؅-𽤞Ⴂ。򅤶‍; ؅-𽤞Ⴂ.򅤶‍; [B1, B6, C2, P1, V6]; xn----0kc662fc152h.xn--1ugy3204f; ; xn----0kc662fc152h.xn--ss06b; [B1, P1, V6] # -Ⴂ.
-؅-𽤞ⴂ。򅤶‍; ؅-𽤞ⴂ.򅤶‍; [B1, B6, C2, P1, V6]; xn----0kc8501a5399e.xn--1ugy3204f; ; xn----0kc8501a5399e.xn--ss06b; [B1, P1, V6] # -ⴂ.
-xn----0kc8501a5399e.xn--ss06b; ؅-𽤞ⴂ.򅤶; [B1, V6]; xn----0kc8501a5399e.xn--ss06b; ; ;  # -ⴂ.
-xn----0kc8501a5399e.xn--1ugy3204f; ؅-𽤞ⴂ.򅤶‍; [B1, B6, C2, V6]; xn----0kc8501a5399e.xn--1ugy3204f; ; ;  # -ⴂ.
-xn----0kc662fc152h.xn--ss06b; ؅-𽤞Ⴂ.򅤶; [B1, V6]; xn----0kc662fc152h.xn--ss06b; ; ;  # -Ⴂ.
-xn----0kc662fc152h.xn--1ugy3204f; ؅-𽤞Ⴂ.򅤶‍; [B1, B6, C2, V6]; xn----0kc662fc152h.xn--1ugy3204f; ; ;  # -Ⴂ.
-⾆．ꡈ５≯ß; 舌.ꡈ5≯ß; [P1, V6]; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e;  # 舌.ꡈ5≯ß
-⾆．ꡈ５≯ß; 舌.ꡈ5≯ß; [P1, V6]; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e;  # 舌.ꡈ5≯ß
-舌.ꡈ5≯ß; ; [P1, V6]; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e;  # 舌.ꡈ5≯ß
-舌.ꡈ5≯ß; 舌.ꡈ5≯ß; [P1, V6]; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e;  # 舌.ꡈ5≯ß
-舌.ꡈ5≯SS; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-舌.ꡈ5≯SS; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-舌.ꡈ5≯ss; ; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-舌.ꡈ5≯ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-舌.ꡈ5≯Ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-舌.ꡈ5≯Ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-xn--tc1a.xn--5ss-3m2a5009e; 舌.ꡈ5≯ss; [V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-xn--tc1a.xn--5-qfa988w745i; 舌.ꡈ5≯ß; [V6]; xn--tc1a.xn--5-qfa988w745i; ; ;  # 舌.ꡈ5≯ß
-⾆．ꡈ５≯SS; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-⾆．ꡈ５≯SS; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-⾆．ꡈ５≯ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-⾆．ꡈ５≯ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-⾆．ꡈ５≯Ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-⾆．ꡈ５≯Ss; 舌.ꡈ5≯ss; [P1, V6]; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
-્8‍．򾂈ݜ; ્8‍.򾂈ݜ; [B1, B5, B6, C2, P1, V5, V6]; xn--8-yke534n.xn--gpb79046m; ; xn--8-yke.xn--gpb79046m; [B1, B5, B6, P1, V5, V6] # ્8.ݜ
-્8‍.򾂈ݜ; ; [B1, B5, B6, C2, P1, V5, V6]; xn--8-yke534n.xn--gpb79046m; ; xn--8-yke.xn--gpb79046m; [B1, B5, B6, P1, V5, V6] # ્8.ݜ
-xn--8-yke.xn--gpb79046m; ્8.򾂈ݜ; [B1, B5, B6, V5, V6]; xn--8-yke.xn--gpb79046m; ; ;  # ્8.ݜ
-xn--8-yke534n.xn--gpb79046m; ્8‍.򾂈ݜ; [B1, B5, B6, C2, V5, V6]; xn--8-yke534n.xn--gpb79046m; ; ;  # ્8.ݜ
-򸷆ੰ≮򹓙．񞎧⁷󠯙ڶ; 򸷆ੰ≮򹓙.񞎧7󠯙ڶ; [B5, B6, P1, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ;  # ੰ≮.7ڶ
-򸷆ੰ≮򹓙．񞎧⁷󠯙ڶ; 򸷆ੰ≮򹓙.񞎧7󠯙ڶ; [B5, B6, P1, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ;  # ੰ≮.7ڶ
-򸷆ੰ≮򹓙.񞎧7󠯙ڶ; ; [B5, B6, P1, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ;  # ੰ≮.7ڶ
-򸷆ੰ≮򹓙.񞎧7󠯙ڶ; 򸷆ੰ≮򹓙.񞎧7󠯙ڶ; [B5, B6, P1, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ;  # ੰ≮.7ڶ
-xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; 򸷆ੰ≮򹓙.񞎧7󠯙ڶ; [B5, B6, V6]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ;  # ੰ≮.7ڶ
+\u200C񒃠．\u200D; \u200C񒃠.\u200D; [C1, C2, V7]; xn--0ugz7551c.xn--1ug; ; xn--dj8y.; [V7, A4_2] # .
+\u200C񒃠.\u200D; ; [C1, C2, V7]; xn--0ugz7551c.xn--1ug; ; xn--dj8y.; [V7, A4_2] # .
+xn--dj8y.; 񒃠.; [V7]; xn--dj8y.; [V7, A4_2]; ;  # .
+xn--0ugz7551c.xn--1ug; \u200C񒃠.\u200D; [C1, C2, V7]; xn--0ugz7551c.xn--1ug; ; ;  # .
+⒈⓰󥣇｡𐹠\u200D򗷦Ⴕ; ⒈⓰󥣇.𐹠\u200D򗷦ⴕ; [B1, C2, V7]; xn--tsh0nz9380h.xn--1ug352csp0psg45e; ; xn--tsh0nz9380h.xn--dljv223ee5t2d; [B1, V7] # ⒈⓰.𐹠ⴕ
+1.⓰󥣇。𐹠\u200D򗷦Ⴕ; 1.⓰󥣇.𐹠\u200D򗷦ⴕ; [B1, C2, V7]; 1.xn--svh00804k.xn--1ug352csp0psg45e; ; 1.xn--svh00804k.xn--dljv223ee5t2d; [B1, V7] # 1.⓰.𐹠ⴕ
+1.⓰󥣇。𐹠\u200D򗷦ⴕ; 1.⓰󥣇.𐹠\u200D򗷦ⴕ; [B1, C2, V7]; 1.xn--svh00804k.xn--1ug352csp0psg45e; ; 1.xn--svh00804k.xn--dljv223ee5t2d; [B1, V7] # 1.⓰.𐹠ⴕ
+1.xn--svh00804k.xn--dljv223ee5t2d; 1.⓰󥣇.𐹠򗷦ⴕ; [B1, V7]; 1.xn--svh00804k.xn--dljv223ee5t2d; ; ;  # 1.⓰.𐹠ⴕ
+1.xn--svh00804k.xn--1ug352csp0psg45e; 1.⓰󥣇.𐹠\u200D򗷦ⴕ; [B1, C2, V7]; 1.xn--svh00804k.xn--1ug352csp0psg45e; ; ;  # 1.⓰.𐹠ⴕ
+⒈⓰󥣇｡𐹠\u200D򗷦ⴕ; ⒈⓰󥣇.𐹠\u200D򗷦ⴕ; [B1, C2, V7]; xn--tsh0nz9380h.xn--1ug352csp0psg45e; ; xn--tsh0nz9380h.xn--dljv223ee5t2d; [B1, V7] # ⒈⓰.𐹠ⴕ
+xn--tsh0nz9380h.xn--dljv223ee5t2d; ⒈⓰󥣇.𐹠򗷦ⴕ; [B1, V7]; xn--tsh0nz9380h.xn--dljv223ee5t2d; ; ;  # ⒈⓰.𐹠ⴕ
+xn--tsh0nz9380h.xn--1ug352csp0psg45e; ⒈⓰󥣇.𐹠\u200D򗷦ⴕ; [B1, C2, V7]; xn--tsh0nz9380h.xn--1ug352csp0psg45e; ; ;  # ⒈⓰.𐹠ⴕ
+1.xn--svh00804k.xn--tnd1990ke579c; 1.⓰󥣇.𐹠򗷦Ⴕ; [B1, V7]; 1.xn--svh00804k.xn--tnd1990ke579c; ; ;  # 1.⓰.𐹠Ⴕ
+1.xn--svh00804k.xn--tnd969erj4psgl3e; 1.⓰󥣇.𐹠\u200D򗷦Ⴕ; [B1, C2, V7]; 1.xn--svh00804k.xn--tnd969erj4psgl3e; ; ;  # 1.⓰.𐹠Ⴕ
+xn--tsh0nz9380h.xn--tnd1990ke579c; ⒈⓰󥣇.𐹠򗷦Ⴕ; [B1, V7]; xn--tsh0nz9380h.xn--tnd1990ke579c; ; ;  # ⒈⓰.𐹠Ⴕ
+xn--tsh0nz9380h.xn--tnd969erj4psgl3e; ⒈⓰󥣇.𐹠\u200D򗷦Ⴕ; [B1, C2, V7]; xn--tsh0nz9380h.xn--tnd969erj4psgl3e; ; ;  # ⒈⓰.𐹠Ⴕ
+𞠊ᠮ-ß｡\u1CD0効\u0601𷣭; 𞠊ᠮ-ß.\u1CD0効\u0601𷣭; [B1, B2, B3, V6, V7]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; xn---ss-21t18904a.xn--jfb197i791bi6x4c;  # 𞠊ᠮ-ß.᳐効
+𞠊ᠮ-ß。\u1CD0効\u0601𷣭; 𞠊ᠮ-ß.\u1CD0効\u0601𷣭; [B1, B2, B3, V6, V7]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; xn---ss-21t18904a.xn--jfb197i791bi6x4c;  # 𞠊ᠮ-ß.᳐効
+𞠊ᠮ-SS。\u1CD0効\u0601𷣭; 𞠊ᠮ-ss.\u1CD0効\u0601𷣭; [B1, B2, B3, V6, V7]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
+𞠊ᠮ-ss。\u1CD0効\u0601𷣭; 𞠊ᠮ-ss.\u1CD0効\u0601𷣭; [B1, B2, B3, V6, V7]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
+𞠊ᠮ-Ss。\u1CD0効\u0601𷣭; 𞠊ᠮ-ss.\u1CD0効\u0601𷣭; [B1, B2, B3, V6, V7]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
+xn---ss-21t18904a.xn--jfb197i791bi6x4c; 𞠊ᠮ-ss.\u1CD0効\u0601𷣭; [B1, B2, B3, V6, V7]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
+xn----qfa310pg973b.xn--jfb197i791bi6x4c; 𞠊ᠮ-ß.\u1CD0効\u0601𷣭; [B1, B2, B3, V6, V7]; xn----qfa310pg973b.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ß.᳐効
+𞠊ᠮ-SS｡\u1CD0効\u0601𷣭; 𞠊ᠮ-ss.\u1CD0効\u0601𷣭; [B1, B2, B3, V6, V7]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
+𞠊ᠮ-ss｡\u1CD0効\u0601𷣭; 𞠊ᠮ-ss.\u1CD0効\u0601𷣭; [B1, B2, B3, V6, V7]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
+𞠊ᠮ-Ss｡\u1CD0効\u0601𷣭; 𞠊ᠮ-ss.\u1CD0効\u0601𷣭; [B1, B2, B3, V6, V7]; xn---ss-21t18904a.xn--jfb197i791bi6x4c; ; ;  # 𞠊ᠮ-ss.᳐効
+𑇀.󠨱; ; [V6, V7]; xn--wd1d.xn--k946e; ; ;  # 𑇀.
+xn--wd1d.xn--k946e; 𑇀.󠨱; [V6, V7]; xn--wd1d.xn--k946e; ; ;  # 𑇀.
+␒3\uFB88｡𝟘𐨿𐹆; ␒3\u0688.0𐨿𐹆; [B1, V7]; xn--3-jsc897t.xn--0-sc5iy3h; ; ;  # ␒3ڈ.0𐨿
+␒3\u0688。0𐨿𐹆; ␒3\u0688.0𐨿𐹆; [B1, V7]; xn--3-jsc897t.xn--0-sc5iy3h; ; ;  # ␒3ڈ.0𐨿
+xn--3-jsc897t.xn--0-sc5iy3h; ␒3\u0688.0𐨿𐹆; [B1, V7]; xn--3-jsc897t.xn--0-sc5iy3h; ; ;  # ␒3ڈ.0𐨿
+\u076B６\u0A81\u08A6。\u1DE3; \u076B6\u0A81\u08A6.\u1DE3; [B1, V6]; xn--6-h5c06gj6c.xn--7eg; ; ;  # ݫ6ઁࢦ.ᷣ
+\u076B6\u0A81\u08A6。\u1DE3; \u076B6\u0A81\u08A6.\u1DE3; [B1, V6]; xn--6-h5c06gj6c.xn--7eg; ; ;  # ݫ6ઁࢦ.ᷣ
+xn--6-h5c06gj6c.xn--7eg; \u076B6\u0A81\u08A6.\u1DE3; [B1, V6]; xn--6-h5c06gj6c.xn--7eg; ; ;  # ݫ6ઁࢦ.ᷣ
+\u0605-𽤞Ⴂ。򅤶\u200D; \u0605-𽤞ⴂ.򅤶\u200D; [B1, B6, C2, V7]; xn----0kc8501a5399e.xn--1ugy3204f; ; xn----0kc8501a5399e.xn--ss06b; [B1, V7] # -ⴂ.
+\u0605-𽤞ⴂ。򅤶\u200D; \u0605-𽤞ⴂ.򅤶\u200D; [B1, B6, C2, V7]; xn----0kc8501a5399e.xn--1ugy3204f; ; xn----0kc8501a5399e.xn--ss06b; [B1, V7] # -ⴂ.
+xn----0kc8501a5399e.xn--ss06b; \u0605-𽤞ⴂ.򅤶; [B1, V7]; xn----0kc8501a5399e.xn--ss06b; ; ;  # -ⴂ.
+xn----0kc8501a5399e.xn--1ugy3204f; \u0605-𽤞ⴂ.򅤶\u200D; [B1, B6, C2, V7]; xn----0kc8501a5399e.xn--1ugy3204f; ; ;  # -ⴂ.
+xn----0kc662fc152h.xn--ss06b; \u0605-𽤞Ⴂ.򅤶; [B1, V7]; xn----0kc662fc152h.xn--ss06b; ; ;  # -Ⴂ.
+xn----0kc662fc152h.xn--1ugy3204f; \u0605-𽤞Ⴂ.򅤶\u200D; [B1, B6, C2, V7]; xn----0kc662fc152h.xn--1ugy3204f; ; ;  # -Ⴂ.
+⾆．ꡈ５≯ß; 舌.ꡈ5≯ß; ; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e;  # 舌.ꡈ5≯ß
+⾆．ꡈ５>\u0338ß; 舌.ꡈ5≯ß; ; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e;  # 舌.ꡈ5≯ß
+舌.ꡈ5≯ß; ; ; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e;  # 舌.ꡈ5≯ß
+舌.ꡈ5>\u0338ß; 舌.ꡈ5≯ß; ; xn--tc1a.xn--5-qfa988w745i; ; xn--tc1a.xn--5ss-3m2a5009e;  # 舌.ꡈ5≯ß
+舌.ꡈ5>\u0338SS; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+舌.ꡈ5≯SS; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+舌.ꡈ5≯ss; ; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+舌.ꡈ5>\u0338ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+舌.ꡈ5>\u0338Ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+舌.ꡈ5≯Ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+xn--tc1a.xn--5ss-3m2a5009e; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+xn--tc1a.xn--5-qfa988w745i; 舌.ꡈ5≯ß; ; xn--tc1a.xn--5-qfa988w745i; ; ;  # 舌.ꡈ5≯ß
+⾆．ꡈ５>\u0338SS; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+⾆．ꡈ５≯SS; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+⾆．ꡈ５≯ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+⾆．ꡈ５>\u0338ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+⾆．ꡈ５>\u0338Ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+⾆．ꡈ５≯Ss; 舌.ꡈ5≯ss; ; xn--tc1a.xn--5ss-3m2a5009e; ; ;  # 舌.ꡈ5≯ss
+\u0ACD8\u200D．򾂈\u075C; \u0ACD8\u200D.򾂈\u075C; [B1, B5, B6, C2, V6, V7]; xn--8-yke534n.xn--gpb79046m; ; xn--8-yke.xn--gpb79046m; [B1, B5, B6, V6, V7] # ્8.ݜ
+\u0ACD8\u200D.򾂈\u075C; ; [B1, B5, B6, C2, V6, V7]; xn--8-yke534n.xn--gpb79046m; ; xn--8-yke.xn--gpb79046m; [B1, B5, B6, V6, V7] # ્8.ݜ
+xn--8-yke.xn--gpb79046m; \u0ACD8.򾂈\u075C; [B1, B5, B6, V6, V7]; xn--8-yke.xn--gpb79046m; ; ;  # ્8.ݜ
+xn--8-yke534n.xn--gpb79046m; \u0ACD8\u200D.򾂈\u075C; [B1, B5, B6, C2, V6, V7]; xn--8-yke534n.xn--gpb79046m; ; ;  # ્8.ݜ
+򸷆\u0A70≮򹓙．񞎧⁷󠯙\u06B6; 򸷆\u0A70≮򹓙.񞎧7󠯙\u06B6; [B5, B6, V7]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ;  # ੰ≮.7ڶ
+򸷆\u0A70<\u0338򹓙．񞎧⁷󠯙\u06B6; 򸷆\u0A70≮򹓙.񞎧7󠯙\u06B6; [B5, B6, V7]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ;  # ੰ≮.7ڶ
+򸷆\u0A70≮򹓙.񞎧7󠯙\u06B6; ; [B5, B6, V7]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ;  # ੰ≮.7ڶ
+򸷆\u0A70<\u0338򹓙.񞎧7󠯙\u06B6; 򸷆\u0A70≮򹓙.񞎧7󠯙\u06B6; [B5, B6, V7]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ;  # ੰ≮.7ڶ
+xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; 򸷆\u0A70≮򹓙.񞎧7󠯙\u06B6; [B5, B6, V7]; xn--ycc893jqh38rb6fa.xn--7-5uc53836ixt41c; ; ;  # ੰ≮.7ڶ
 𞤪.ς; ; ; xn--ie6h.xn--3xa; ; xn--ie6h.xn--4xa;  # 𞤪.ς
 𞤈.Σ; 𞤪.σ; ; xn--ie6h.xn--4xa; ; ;  # 𞤪.σ
 𞤪.σ; ; ; xn--ie6h.xn--4xa; ; ;  # 𞤪.σ
@@ -3422,782 +3529,804 @@ xn--ie6h.xn--4xa; 𞤪.σ; ; xn--ie6h.xn--4xa; ; ;  # 𞤪.σ
 𞤈.ς; 𞤪.ς; ; xn--ie6h.xn--3xa; ; xn--ie6h.xn--4xa;  # 𞤪.ς
 xn--ie6h.xn--3xa; 𞤪.ς; ; xn--ie6h.xn--3xa; ; ;  # 𞤪.ς
 𞤪.Σ; 𞤪.σ; ; xn--ie6h.xn--4xa; ; ;  # 𞤪.σ
-‌Ⴚ｡ς; ‌Ⴚ.ς; [C1, P1, V6]; xn--ynd759e.xn--3xa; ; xn--ynd.xn--4xa; [P1, V6] # Ⴚ.ς
-‌Ⴚ。ς; ‌Ⴚ.ς; [C1, P1, V6]; xn--ynd759e.xn--3xa; ; xn--ynd.xn--4xa; [P1, V6] # Ⴚ.ς
-‌ⴚ。ς; ‌ⴚ.ς; [C1]; xn--0ug262c.xn--3xa; ; xn--ilj.xn--4xa; [] # ⴚ.ς
-‌Ⴚ。Σ; ‌Ⴚ.σ; [C1, P1, V6]; xn--ynd759e.xn--4xa; ; xn--ynd.xn--4xa; [P1, V6] # Ⴚ.σ
-‌ⴚ。σ; ‌ⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; xn--ilj.xn--4xa; [] # ⴚ.σ
+\u200CႺ｡ς; \u200Cⴚ.ς; [C1]; xn--0ug262c.xn--3xa; ; xn--ilj.xn--4xa; [] # ⴚ.ς
+\u200CႺ。ς; \u200Cⴚ.ς; [C1]; xn--0ug262c.xn--3xa; ; xn--ilj.xn--4xa; [] # ⴚ.ς
+\u200Cⴚ。ς; \u200Cⴚ.ς; [C1]; xn--0ug262c.xn--3xa; ; xn--ilj.xn--4xa; [] # ⴚ.ς
+\u200CႺ。Σ; \u200Cⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; xn--ilj.xn--4xa; [] # ⴚ.σ
+\u200Cⴚ。σ; \u200Cⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; xn--ilj.xn--4xa; [] # ⴚ.σ
 xn--ilj.xn--4xa; ⴚ.σ; ; xn--ilj.xn--4xa; ; ;  # ⴚ.σ
 ⴚ.σ; ; ; xn--ilj.xn--4xa; ; ;  # ⴚ.σ
-Ⴚ.Σ; Ⴚ.σ; [P1, V6]; xn--ynd.xn--4xa; ; ;  # Ⴚ.σ
+Ⴚ.Σ; ⴚ.σ; ; xn--ilj.xn--4xa; ; ;  # ⴚ.σ
 ⴚ.ς; ; ; xn--ilj.xn--3xa; ; xn--ilj.xn--4xa;  # ⴚ.ς
-Ⴚ.ς; ; [P1, V6]; xn--ynd.xn--3xa; ; xn--ynd.xn--4xa;  # Ⴚ.ς
-xn--ynd.xn--4xa; Ⴚ.σ; [V6]; xn--ynd.xn--4xa; ; ;  # Ⴚ.σ
-xn--ynd.xn--3xa; Ⴚ.ς; [V6]; xn--ynd.xn--3xa; ; ;  # Ⴚ.ς
+Ⴚ.ς; ⴚ.ς; ; xn--ilj.xn--3xa; ; xn--ilj.xn--4xa;  # ⴚ.ς
 xn--ilj.xn--3xa; ⴚ.ς; ; xn--ilj.xn--3xa; ; ;  # ⴚ.ς
-Ⴚ.σ; ; [P1, V6]; xn--ynd.xn--4xa; ; ;  # Ⴚ.σ
-xn--0ug262c.xn--4xa; ‌ⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; ;  # ⴚ.σ
-xn--ynd759e.xn--4xa; ‌Ⴚ.σ; [C1, V6]; xn--ynd759e.xn--4xa; ; ;  # Ⴚ.σ
-xn--0ug262c.xn--3xa; ‌ⴚ.ς; [C1]; xn--0ug262c.xn--3xa; ; ;  # ⴚ.ς
-xn--ynd759e.xn--3xa; ‌Ⴚ.ς; [C1, V6]; xn--ynd759e.xn--3xa; ; ;  # Ⴚ.ς
-‌ⴚ｡ς; ‌ⴚ.ς; [C1]; xn--0ug262c.xn--3xa; ; xn--ilj.xn--4xa; [] # ⴚ.ς
-‌Ⴚ｡Σ; ‌Ⴚ.σ; [C1, P1, V6]; xn--ynd759e.xn--4xa; ; xn--ynd.xn--4xa; [P1, V6] # Ⴚ.σ
-‌ⴚ｡σ; ‌ⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; xn--ilj.xn--4xa; [] # ⴚ.σ
+Ⴚ.σ; ⴚ.σ; ; xn--ilj.xn--4xa; ; ;  # ⴚ.σ
+xn--0ug262c.xn--4xa; \u200Cⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; ;  # ⴚ.σ
+xn--0ug262c.xn--3xa; \u200Cⴚ.ς; [C1]; xn--0ug262c.xn--3xa; ; ;  # ⴚ.ς
+\u200Cⴚ｡ς; \u200Cⴚ.ς; [C1]; xn--0ug262c.xn--3xa; ; xn--ilj.xn--4xa; [] # ⴚ.ς
+\u200CႺ｡Σ; \u200Cⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; xn--ilj.xn--4xa; [] # ⴚ.σ
+\u200Cⴚ｡σ; \u200Cⴚ.σ; [C1]; xn--0ug262c.xn--4xa; ; xn--ilj.xn--4xa; [] # ⴚ.σ
+xn--ynd.xn--4xa; Ⴚ.σ; [V7]; xn--ynd.xn--4xa; ; ;  # Ⴚ.σ
+xn--ynd.xn--3xa; Ⴚ.ς; [V7]; xn--ynd.xn--3xa; ; ;  # Ⴚ.ς
+xn--ynd759e.xn--4xa; \u200CႺ.σ; [C1, V7]; xn--ynd759e.xn--4xa; ; ;  # Ⴚ.σ
+xn--ynd759e.xn--3xa; \u200CႺ.ς; [C1, V7]; xn--ynd759e.xn--3xa; ; ;  # Ⴚ.ς
 𞤃．𐹦; 𞤥.𐹦; [B1]; xn--de6h.xn--eo0d; ; ;  # 𞤥.𐹦
 𞤃.𐹦; 𞤥.𐹦; [B1]; xn--de6h.xn--eo0d; ; ;  # 𞤥.𐹦
 𞤥.𐹦; ; [B1]; xn--de6h.xn--eo0d; ; ;  # 𞤥.𐹦
 xn--de6h.xn--eo0d; 𞤥.𐹦; [B1]; xn--de6h.xn--eo0d; ; ;  # 𞤥.𐹦
 𞤥．𐹦; 𞤥.𐹦; [B1]; xn--de6h.xn--eo0d; ; ;  # 𞤥.𐹦
-‍⾕。‌꥓̐ꡎ; ‍谷.‌꥓̐ꡎ; [C1, C2]; xn--1ug0273b.xn--0sa359l6n7g13a; ; xn--6g3a.xn--0sa8175flwa; [V5] # 谷.꥓̐ꡎ
-‍⾕。‌꥓̐ꡎ; ‍谷.‌꥓̐ꡎ; [C1, C2]; xn--1ug0273b.xn--0sa359l6n7g13a; ; xn--6g3a.xn--0sa8175flwa; [V5] # 谷.꥓̐ꡎ
-‍谷。‌꥓̐ꡎ; ‍谷.‌꥓̐ꡎ; [C1, C2]; xn--1ug0273b.xn--0sa359l6n7g13a; ; xn--6g3a.xn--0sa8175flwa; [V5] # 谷.꥓̐ꡎ
-xn--6g3a.xn--0sa8175flwa; 谷.꥓̐ꡎ; [V5]; xn--6g3a.xn--0sa8175flwa; ; ;  # 谷.꥓̐ꡎ
-xn--1ug0273b.xn--0sa359l6n7g13a; ‍谷.‌꥓̐ꡎ; [C1, C2]; xn--1ug0273b.xn--0sa359l6n7g13a; ; ;  # 谷.꥓̐ꡎ
-ڪ-뉔．𞤐‌; ڪ-뉔.𞤲‌; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
-ڪ-뉔．𞤐‌; ڪ-뉔.𞤲‌; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
-ڪ-뉔.𞤐‌; ڪ-뉔.𞤲‌; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
-ڪ-뉔.𞤐‌; ڪ-뉔.𞤲‌; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
-ڪ-뉔.𞤲‌; ڪ-뉔.𞤲‌; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
-ڪ-뉔.𞤲‌; ; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
-xn----guc3592k.xn--qe6h; ڪ-뉔.𞤲; [B2, B3]; xn----guc3592k.xn--qe6h; ; ;  # ڪ-뉔.𞤲
-xn----guc3592k.xn--0ug7611p; ڪ-뉔.𞤲‌; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; ;  # ڪ-뉔.𞤲
-ڪ-뉔．𞤲‌; ڪ-뉔.𞤲‌; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
-ڪ-뉔．𞤲‌; ڪ-뉔.𞤲‌; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
-񔲵５ᦛς.꣄ݻܸ᳒; 񔲵5ᦛς.꣄ݻܸ᳒; [B1, P1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k;  # 5ᦛς.꣄ݻܸ᳒
-񔲵５ᦛς.꣄ݻܸ᳒; 񔲵5ᦛς.꣄ݻܸ᳒; [B1, P1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k;  # 5ᦛς.꣄ݻܸ᳒
-񔲵5ᦛς.꣄ݻܸ᳒; ; [B1, P1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k;  # 5ᦛς.꣄ݻܸ᳒
-񔲵5ᦛΣ.꣄ݻܸ᳒; 񔲵5ᦛσ.꣄ݻܸ᳒; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
-񔲵5ᦛσ.꣄ݻܸ᳒; ; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
-xn--5-0mb988ng603j.xn--fob7kk44dl41k; 񔲵5ᦛσ.꣄ݻܸ᳒; [B1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
-xn--5-ymb298ng603j.xn--fob7kk44dl41k; 񔲵5ᦛς.꣄ݻܸ᳒; [B1, V5, V6]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛς.꣄ݻܸ᳒
-񔲵５ᦛΣ.꣄ݻܸ᳒; 񔲵5ᦛσ.꣄ݻܸ᳒; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
-񔲵５ᦛσ.꣄ݻܸ᳒; 񔲵5ᦛσ.꣄ݻܸ᳒; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
-񔲵５ᦛΣ.꣄ݻܸ᳒; 񔲵5ᦛσ.꣄ݻܸ᳒; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
-񔲵５ᦛσ.꣄ݻܸ᳒; 񔲵5ᦛσ.꣄ݻܸ᳒; [B1, P1, V5, V6]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
+\u200D⾕。\u200C\u0310\uA953ꡎ; \u200D谷.\u200C\uA953\u0310ꡎ; [C1, C2]; xn--1ug0273b.xn--0sa359l6n7g13a; ; xn--6g3a.xn--0sa8175flwa; [V6] # 谷.꥓̐ꡎ
+\u200D⾕。\u200C\uA953\u0310ꡎ; \u200D谷.\u200C\uA953\u0310ꡎ; [C1, C2]; xn--1ug0273b.xn--0sa359l6n7g13a; ; xn--6g3a.xn--0sa8175flwa; [V6] # 谷.꥓̐ꡎ
+\u200D谷。\u200C\uA953\u0310ꡎ; \u200D谷.\u200C\uA953\u0310ꡎ; [C1, C2]; xn--1ug0273b.xn--0sa359l6n7g13a; ; xn--6g3a.xn--0sa8175flwa; [V6] # 谷.꥓̐ꡎ
+xn--6g3a.xn--0sa8175flwa; 谷.\uA953\u0310ꡎ; [V6]; xn--6g3a.xn--0sa8175flwa; ; ;  # 谷.꥓̐ꡎ
+xn--1ug0273b.xn--0sa359l6n7g13a; \u200D谷.\u200C\uA953\u0310ꡎ; [C1, C2]; xn--1ug0273b.xn--0sa359l6n7g13a; ; ;  # 谷.꥓̐ꡎ
+\u06AA-뉔．𞤐\u200C; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
+\u06AA-뉔．𞤐\u200C; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
+\u06AA-뉔.𞤐\u200C; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
+\u06AA-뉔.𞤐\u200C; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
+\u06AA-뉔.𞤲\u200C; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
+\u06AA-뉔.𞤲\u200C; ; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
+xn----guc3592k.xn--qe6h; \u06AA-뉔.𞤲; [B2, B3]; xn----guc3592k.xn--qe6h; ; ;  # ڪ-뉔.𞤲
+xn----guc3592k.xn--0ug7611p; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; ;  # ڪ-뉔.𞤲
+\u06AA-뉔．𞤲\u200C; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
+\u06AA-뉔．𞤲\u200C; \u06AA-뉔.𞤲\u200C; [B2, B3, C1]; xn----guc3592k.xn--0ug7611p; ; xn----guc3592k.xn--qe6h; [B2, B3] # ڪ-뉔.𞤲
+񔲵５ᦛς.\uA8C4\u077B\u1CD2\u0738; 񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; [B1, V6, V7]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k;  # 5ᦛς.꣄ݻܸ᳒
+񔲵５ᦛς.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; [B1, V6, V7]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k;  # 5ᦛς.꣄ݻܸ᳒
+񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; ; [B1, V6, V7]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; xn--5-0mb988ng603j.xn--fob7kk44dl41k;  # 5ᦛς.꣄ݻܸ᳒
+񔲵5ᦛΣ.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V6, V7]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
+񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; ; [B1, V6, V7]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
+xn--5-0mb988ng603j.xn--fob7kk44dl41k; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V6, V7]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
+xn--5-ymb298ng603j.xn--fob7kk44dl41k; 񔲵5ᦛς.\uA8C4\u077B\u0738\u1CD2; [B1, V6, V7]; xn--5-ymb298ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛς.꣄ݻܸ᳒
+񔲵５ᦛΣ.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V6, V7]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
+񔲵５ᦛσ.\uA8C4\u077B\u0738\u1CD2; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V6, V7]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
+񔲵５ᦛΣ.\uA8C4\u077B\u1CD2\u0738; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V6, V7]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
+񔲵５ᦛσ.\uA8C4\u077B\u1CD2\u0738; 񔲵5ᦛσ.\uA8C4\u077B\u0738\u1CD2; [B1, V6, V7]; xn--5-0mb988ng603j.xn--fob7kk44dl41k; ; ;  # 5ᦛσ.꣄ݻܸ᳒
 淽。ᠾ; 淽.ᠾ; ; xn--34w.xn--x7e; ; ;  # 淽.ᠾ
 xn--34w.xn--x7e; 淽.ᠾ; ; xn--34w.xn--x7e; ; ;  # 淽.ᠾ
 淽.ᠾ; ; ; xn--34w.xn--x7e; ; ;  # 淽.ᠾ
 𐹴𑘷。-; 𐹴𑘷.-; [B1, V3]; xn--so0do6k.-; ; ;  # 𐹴𑘷.-
 xn--so0do6k.-; 𐹴𑘷.-; [B1, V3]; xn--so0do6k.-; ; ;  # 𐹴𑘷.-
-򬨩Ⴓ❓｡𑄨; 򬨩Ⴓ❓.𑄨; [P1, V5, V6]; xn--rnd896i0j14q.xn--k80d; ; ;  # Ⴓ❓.𑄨
-򬨩Ⴓ❓。𑄨; 򬨩Ⴓ❓.𑄨; [P1, V5, V6]; xn--rnd896i0j14q.xn--k80d; ; ;  # Ⴓ❓.𑄨
-򬨩ⴓ❓。𑄨; 򬨩ⴓ❓.𑄨; [P1, V5, V6]; xn--8di78qvw32y.xn--k80d; ; ;  # ⴓ❓.𑄨
-xn--8di78qvw32y.xn--k80d; 򬨩ⴓ❓.𑄨; [V5, V6]; xn--8di78qvw32y.xn--k80d; ; ;  # ⴓ❓.𑄨
-xn--rnd896i0j14q.xn--k80d; 򬨩Ⴓ❓.𑄨; [V5, V6]; xn--rnd896i0j14q.xn--k80d; ; ;  # Ⴓ❓.𑄨
-򬨩ⴓ❓｡𑄨; 򬨩ⴓ❓.𑄨; [P1, V5, V6]; xn--8di78qvw32y.xn--k80d; ; ;  # ⴓ❓.𑄨
-‌𐹡𞤌Ⴇ｡ßႣ; ‌𐹡𞤮Ⴇ.ßႣ; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--zca681f; ; xn--fnd1201kegrf.xn--ss-fek; [B1, P1, V6] # 𐹡𞤮Ⴇ.ßႣ
-‌𐹡𞤌Ⴇ。ßႣ; ‌𐹡𞤮Ⴇ.ßႣ; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--zca681f; ; xn--fnd1201kegrf.xn--ss-fek; [B1, P1, V6] # 𐹡𞤮Ⴇ.ßႣ
-‌𐹡𞤮ⴇ。ßⴃ; ‌𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ßⴃ
-‌𐹡𞤌Ⴇ。SSႣ; ‌𐹡𞤮Ⴇ.ssႣ; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--ss-fek; ; xn--fnd1201kegrf.xn--ss-fek; [B1, P1, V6] # 𐹡𞤮Ⴇ.ssႣ
-‌𐹡𞤮ⴇ。ssⴃ; ‌𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
-‌𐹡𞤌ⴇ。Ssⴃ; ‌𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
+򬨩Ⴓ❓｡𑄨; 򬨩ⴓ❓.𑄨; [V6, V7]; xn--8di78qvw32y.xn--k80d; ; ;  # ⴓ❓.𑄨
+򬨩Ⴓ❓。𑄨; 򬨩ⴓ❓.𑄨; [V6, V7]; xn--8di78qvw32y.xn--k80d; ; ;  # ⴓ❓.𑄨
+򬨩ⴓ❓。𑄨; 򬨩ⴓ❓.𑄨; [V6, V7]; xn--8di78qvw32y.xn--k80d; ; ;  # ⴓ❓.𑄨
+xn--8di78qvw32y.xn--k80d; 򬨩ⴓ❓.𑄨; [V6, V7]; xn--8di78qvw32y.xn--k80d; ; ;  # ⴓ❓.𑄨
+򬨩ⴓ❓｡𑄨; 򬨩ⴓ❓.𑄨; [V6, V7]; xn--8di78qvw32y.xn--k80d; ; ;  # ⴓ❓.𑄨
+xn--rnd896i0j14q.xn--k80d; 򬨩Ⴓ❓.𑄨; [V6, V7]; xn--rnd896i0j14q.xn--k80d; ; ;  # Ⴓ❓.𑄨
+\u200C𐹡𞤌Ⴇ｡ßႣ; \u200C𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ßⴃ
+\u200C𐹡𞤌Ⴇ。ßႣ; \u200C𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ßⴃ
+\u200C𐹡𞤮ⴇ。ßⴃ; \u200C𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ßⴃ
+\u200C𐹡𞤌Ⴇ。SSႣ; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
+\u200C𐹡𞤮ⴇ。ssⴃ; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
+\u200C𐹡𞤌ⴇ。Ssⴃ; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
 xn--ykj9323eegwf.xn--ss-151a; 𐹡𞤮ⴇ.ssⴃ; [B1]; xn--ykj9323eegwf.xn--ss-151a; ; ;  # 𐹡𞤮ⴇ.ssⴃ
-xn--0ug332c3q0pr56g.xn--ss-151a; ‌𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; ;  # 𐹡𞤮ⴇ.ssⴃ
-xn--fnd1201kegrf.xn--ss-fek; 𐹡𞤮Ⴇ.ssႣ; [B1, V6]; xn--fnd1201kegrf.xn--ss-fek; ; ;  # 𐹡𞤮Ⴇ.ssႣ
-xn--fnd599eyj4pr50g.xn--ss-fek; ‌𐹡𞤮Ⴇ.ssႣ; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--ss-fek; ; ;  # 𐹡𞤮Ⴇ.ssႣ
-xn--0ug332c3q0pr56g.xn--zca417t; ‌𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; ;  # 𐹡𞤮ⴇ.ßⴃ
-xn--fnd599eyj4pr50g.xn--zca681f; ‌𐹡𞤮Ⴇ.ßႣ; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--zca681f; ; ;  # 𐹡𞤮Ⴇ.ßႣ
-‌𐹡𞤮ⴇ｡ßⴃ; ‌𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ßⴃ
-‌𐹡𞤌Ⴇ｡SSႣ; ‌𐹡𞤮Ⴇ.ssႣ; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--ss-fek; ; xn--fnd1201kegrf.xn--ss-fek; [B1, P1, V6] # 𐹡𞤮Ⴇ.ssႣ
-‌𐹡𞤮ⴇ｡ssⴃ; ‌𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
-‌𐹡𞤌ⴇ｡Ssⴃ; ‌𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
-‌𐹡𞤌ⴇ。ßⴃ; ‌𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ßⴃ
-‌𐹡𞤌ⴇ。ssⴃ; ‌𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
-‌𐹡𞤌Ⴇ。Ssⴃ; ‌𐹡𞤮Ⴇ.ssⴃ; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--ss-151a; ; xn--fnd1201kegrf.xn--ss-151a; [B1, P1, V6] # 𐹡𞤮Ⴇ.ssⴃ
-xn--fnd1201kegrf.xn--ss-151a; 𐹡𞤮Ⴇ.ssⴃ; [B1, V6]; xn--fnd1201kegrf.xn--ss-151a; ; ;  # 𐹡𞤮Ⴇ.ssⴃ
-xn--fnd599eyj4pr50g.xn--ss-151a; ‌𐹡𞤮Ⴇ.ssⴃ; [B1, C1, V6]; xn--fnd599eyj4pr50g.xn--ss-151a; ; ;  # 𐹡𞤮Ⴇ.ssⴃ
-‌𐹡𞤌ⴇ｡ßⴃ; ‌𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ßⴃ
-‌𐹡𞤌ⴇ｡ssⴃ; ‌𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
-‌𐹡𞤌Ⴇ｡Ssⴃ; ‌𐹡𞤮Ⴇ.ssⴃ; [B1, C1, P1, V6]; xn--fnd599eyj4pr50g.xn--ss-151a; ; xn--fnd1201kegrf.xn--ss-151a; [B1, P1, V6] # 𐹡𞤮Ⴇ.ssⴃ
-៿｡𞬳; ៿.𞬳; [P1, V6]; xn--45e.xn--et6h; ; ;  # .
-៿。𞬳; ៿.𞬳; [P1, V6]; xn--45e.xn--et6h; ; ;  # .
-xn--45e.xn--et6h; ៿.𞬳; [V6]; xn--45e.xn--et6h; ; ;  # .
-ْ‍｡್𑚳; ْ‍.್𑚳; [C2, V5]; xn--uhb882k.xn--8tc4527k; ; xn--uhb.xn--8tc4527k; [V5] # ْ.್𑚳
-ْ‍。್𑚳; ْ‍.್𑚳; [C2, V5]; xn--uhb882k.xn--8tc4527k; ; xn--uhb.xn--8tc4527k; [V5] # ْ.್𑚳
-xn--uhb.xn--8tc4527k; ْ.್𑚳; [V5]; xn--uhb.xn--8tc4527k; ; ;  # ْ.್𑚳
-xn--uhb882k.xn--8tc4527k; ْ‍.್𑚳; [C2, V5]; xn--uhb882k.xn--8tc4527k; ; ;  # ْ.್𑚳
--≠ᠻ．ݭ𞥃≮󟷺; -≠ᠻ.ݭ𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
--≠ᠻ．ݭ𞥃≮󟷺; -≠ᠻ.ݭ𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
--≠ᠻ.ݭ𞥃≮󟷺; ; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
--≠ᠻ.ݭ𞥃≮󟷺; -≠ᠻ.ݭ𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
--≠ᠻ.ݭ𞤡≮󟷺; -≠ᠻ.ݭ𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
--≠ᠻ.ݭ𞤡≮󟷺; -≠ᠻ.ݭ𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
-xn----g6j886c.xn--xpb049kk353abj99f; -≠ᠻ.ݭ𞥃≮󟷺; [B1, B2, B3, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
--≠ᠻ．ݭ𞤡≮󟷺; -≠ᠻ.ݭ𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
--≠ᠻ．ݭ𞤡≮󟷺; -≠ᠻ.ݭ𞥃≮󟷺; [B1, B2, B3, P1, V3, V6]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
-󠰆≯޵𐻪．򊥕≮𑁆ࡌ; 󠰆≯޵𐻪.򊥕≮𑁆ࡌ; [B1, B5, B6, P1, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ;  # ≯.≮𑁆ࡌ
-󠰆≯޵𐻪．򊥕≮𑁆ࡌ; 󠰆≯޵𐻪.򊥕≮𑁆ࡌ; [B1, B5, B6, P1, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ;  # ≯.≮𑁆ࡌ
-󠰆≯޵𐻪.򊥕≮𑁆ࡌ; ; [B1, B5, B6, P1, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ;  # ≯.≮𑁆ࡌ
-󠰆≯޵𐻪.򊥕≮𑁆ࡌ; 󠰆≯޵𐻪.򊥕≮𑁆ࡌ; [B1, B5, B6, P1, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ;  # ≯.≮𑁆ࡌ
-xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; 󠰆≯޵𐻪.򊥕≮𑁆ࡌ; [B1, B5, B6, V6]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ;  # ≯.≮𑁆ࡌ
-≠󦋂.؀்-ڹ; ; [B1, P1, V6]; xn--1ch22084l.xn----qkc07co6n; ; ;  # ≠.்-ڹ
-≠󦋂.؀்-ڹ; ≠󦋂.؀்-ڹ; [B1, P1, V6]; xn--1ch22084l.xn----qkc07co6n; ; ;  # ≠.்-ڹ
-xn--1ch22084l.xn----qkc07co6n; ≠󦋂.؀்-ڹ; [B1, V6]; xn--1ch22084l.xn----qkc07co6n; ; ;  # ≠.்-ڹ
-៝󠁣≠｡𐹼𐋤; ៝󠁣≠.𐹼𐋤; [B1, P1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ;  # ៝≠.𐹼𐋤
-៝󠁣≠｡𐹼𐋤; ៝󠁣≠.𐹼𐋤; [B1, P1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ;  # ៝≠.𐹼𐋤
-៝󠁣≠。𐹼𐋤; ៝󠁣≠.𐹼𐋤; [B1, P1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ;  # ៝≠.𐹼𐋤
-៝󠁣≠。𐹼𐋤; ៝󠁣≠.𐹼𐋤; [B1, P1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ;  # ៝≠.𐹼𐋤
-xn--54e694cn389z.xn--787ct8r; ៝󠁣≠.𐹼𐋤; [B1, V5, V6]; xn--54e694cn389z.xn--787ct8r; ; ;  # ៝≠.𐹼𐋤
-ß𰀻񆬗｡𝩨🕮ß; ß𰀻񆬗.𝩨🕮ß; [P1, V5, V6]; xn--zca20040bgrkh.xn--zca3653v86qa; ; xn--ss-jl59biy67d.xn--ss-4d11aw87d;  # ß𰀻.𝩨🕮ß
-ß𰀻񆬗。𝩨🕮ß; ß𰀻񆬗.𝩨🕮ß; [P1, V5, V6]; xn--zca20040bgrkh.xn--zca3653v86qa; ; xn--ss-jl59biy67d.xn--ss-4d11aw87d;  # ß𰀻.𝩨🕮ß
-SS𰀻񆬗。𝩨🕮SS; ss𰀻񆬗.𝩨🕮ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
-ss𰀻񆬗。𝩨🕮ss; ss𰀻񆬗.𝩨🕮ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
-Ss𰀻񆬗。𝩨🕮Ss; ss𰀻񆬗.𝩨🕮ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
-xn--ss-jl59biy67d.xn--ss-4d11aw87d; ss𰀻񆬗.𝩨🕮ss; [V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
-xn--zca20040bgrkh.xn--zca3653v86qa; ß𰀻񆬗.𝩨🕮ß; [V5, V6]; xn--zca20040bgrkh.xn--zca3653v86qa; ; ;  # ß𰀻.𝩨🕮ß
-SS𰀻񆬗｡𝩨🕮SS; ss𰀻񆬗.𝩨🕮ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
-ss𰀻񆬗｡𝩨🕮ss; ss𰀻񆬗.𝩨🕮ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
-Ss𰀻񆬗｡𝩨🕮Ss; ss𰀻񆬗.𝩨🕮ss; [P1, V5, V6]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
-‍。‌; ‍.‌; [C1, C2]; xn--1ug.xn--0ug; ; .; [A4_2] # .
-xn--1ug.xn--0ug; ‍.‌; [C1, C2]; xn--1ug.xn--0ug; ; ;  # .
-҃𐭞‍.ឹ𞯌򟩚; ; [B1, C2, P1, V5, V6]; xn--m3a412lrr0o.xn--43e8670vmd79b; ; xn--m3a6965k.xn--43e8670vmd79b; [B1, P1, V5, V6] # ҃𐭞.ឹ
-xn--m3a6965k.xn--43e8670vmd79b; ҃𐭞.ឹ𞯌򟩚; [B1, V5, V6]; xn--m3a6965k.xn--43e8670vmd79b; ; ;  # ҃𐭞.ឹ
-xn--m3a412lrr0o.xn--43e8670vmd79b; ҃𐭞‍.ឹ𞯌򟩚; [B1, C2, V5, V6]; xn--m3a412lrr0o.xn--43e8670vmd79b; ; ;  # ҃𐭞.ឹ
-‌𐠨‌临。ꡢ򄷞ⶏ𐹣; ‌𐠨‌临.ꡢ򄷞ⶏ𐹣; [B1, B5, B6, C1, P1, V6]; xn--0uga2656aop9k.xn--uojv340bk71c99u9f; ; xn--miq9646b.xn--uojv340bk71c99u9f; [B2, B3, B5, B6, P1, V6] # 𐠨临.ꡢⶏ𐹣
-xn--miq9646b.xn--uojv340bk71c99u9f; 𐠨临.ꡢ򄷞ⶏ𐹣; [B2, B3, B5, B6, V6]; xn--miq9646b.xn--uojv340bk71c99u9f; ; ;  # 𐠨临.ꡢⶏ𐹣
-xn--0uga2656aop9k.xn--uojv340bk71c99u9f; ‌𐠨‌临.ꡢ򄷞ⶏ𐹣; [B1, B5, B6, C1, V6]; xn--0uga2656aop9k.xn--uojv340bk71c99u9f; ; ;  # 𐠨临.ꡢⶏ𐹣
-󠑘．󠄮; 󠑘.; [P1, V6]; xn--s136e.; ; ;  # .
-󠑘.󠄮; 󠑘.; [P1, V6]; xn--s136e.; ; ;  # .
-xn--s136e.; 󠑘.; [V6]; xn--s136e.; ; ;  # .
-𐫄്．꫶; 𐫄്.꫶; [B1, B3, B6, V5]; xn--wxc7880k.xn--2v9a; ; ;  # 𐫄്.꫶
-𐫄്.꫶; ; [B1, B3, B6, V5]; xn--wxc7880k.xn--2v9a; ; ;  # 𐫄്.꫶
-xn--wxc7880k.xn--2v9a; 𐫄്.꫶; [B1, B3, B6, V5]; xn--wxc7880k.xn--2v9a; ; ;  # 𐫄്.꫶
-ꦷ󝵙멹。⒛󠨇; ꦷ󝵙멹.⒛󠨇; [P1, V5, V6]; xn--ym9av13acp85w.xn--dth22121k; ; ;  # ꦷ멹.⒛
-ꦷ󝵙멹。⒛󠨇; ꦷ󝵙멹.⒛󠨇; [P1, V5, V6]; xn--ym9av13acp85w.xn--dth22121k; ; ;  # ꦷ멹.⒛
-ꦷ󝵙멹。20.󠨇; ꦷ󝵙멹.20.󠨇; [P1, V5, V6]; xn--ym9av13acp85w.20.xn--d846e; ; ;  # ꦷ멹.20.
-ꦷ󝵙멹。20.󠨇; ꦷ󝵙멹.20.󠨇; [P1, V5, V6]; xn--ym9av13acp85w.20.xn--d846e; ; ;  # ꦷ멹.20.
-xn--ym9av13acp85w.20.xn--d846e; ꦷ󝵙멹.20.󠨇; [V5, V6]; xn--ym9av13acp85w.20.xn--d846e; ; ;  # ꦷ멹.20.
-xn--ym9av13acp85w.xn--dth22121k; ꦷ󝵙멹.⒛󠨇; [V5, V6]; xn--ym9av13acp85w.xn--dth22121k; ; ;  # ꦷ멹.⒛
-Ⴅ󲬹릖󠶚.ݷ𐹳⒊; ; [B4, B6, P1, V6]; xn--dnd2167fnet0io02g.xn--7pb000mwm4n; ; ;  # Ⴅ릖.ݷ𐹳⒊
-Ⴅ󲬹릖󠶚.ݷ𐹳⒊; Ⴅ󲬹릖󠶚.ݷ𐹳⒊; [B4, B6, P1, V6]; xn--dnd2167fnet0io02g.xn--7pb000mwm4n; ; ;  # Ⴅ릖.ݷ𐹳⒊
-Ⴅ󲬹릖󠶚.ݷ𐹳3.; ; [B4, B6, P1, V6]; xn--dnd2167fnet0io02g.xn--3-55c6803r.; ; ;  # Ⴅ릖.ݷ𐹳3.
-Ⴅ󲬹릖󠶚.ݷ𐹳3.; Ⴅ󲬹릖󠶚.ݷ𐹳3.; [B4, B6, P1, V6]; xn--dnd2167fnet0io02g.xn--3-55c6803r.; ; ;  # Ⴅ릖.ݷ𐹳3.
-ⴅ󲬹릖󠶚.ݷ𐹳3.; ⴅ󲬹릖󠶚.ݷ𐹳3.; [B4, B6, P1, V6]; xn--wkj8016bne45io02g.xn--3-55c6803r.; ; ;  # ⴅ릖.ݷ𐹳3.
-ⴅ󲬹릖󠶚.ݷ𐹳3.; ; [B4, B6, P1, V6]; xn--wkj8016bne45io02g.xn--3-55c6803r.; ; ;  # ⴅ릖.ݷ𐹳3.
-xn--wkj8016bne45io02g.xn--3-55c6803r.; ⴅ󲬹릖󠶚.ݷ𐹳3.; [B4, B6, V6]; xn--wkj8016bne45io02g.xn--3-55c6803r.; ; ;  # ⴅ릖.ݷ𐹳3.
-xn--dnd2167fnet0io02g.xn--3-55c6803r.; Ⴅ󲬹릖󠶚.ݷ𐹳3.; [B4, B6, V6]; xn--dnd2167fnet0io02g.xn--3-55c6803r.; ; ;  # Ⴅ릖.ݷ𐹳3.
-ⴅ󲬹릖󠶚.ݷ𐹳⒊; ⴅ󲬹릖󠶚.ݷ𐹳⒊; [B4, B6, P1, V6]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ;  # ⴅ릖.ݷ𐹳⒊
-ⴅ󲬹릖󠶚.ݷ𐹳⒊; ; [B4, B6, P1, V6]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ;  # ⴅ릖.ݷ𐹳⒊
-xn--wkj8016bne45io02g.xn--7pb000mwm4n; ⴅ󲬹릖󠶚.ݷ𐹳⒊; [B4, B6, V6]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ;  # ⴅ릖.ݷ𐹳⒊
-xn--dnd2167fnet0io02g.xn--7pb000mwm4n; Ⴅ󲬹릖󠶚.ݷ𐹳⒊; [B4, B6, V6]; xn--dnd2167fnet0io02g.xn--7pb000mwm4n; ; ;  # Ⴅ릖.ݷ𐹳⒊
-‌｡︒; ‌.︒; [C1, P1, V6]; xn--0ug.xn--y86c; ; .xn--y86c; [P1, V6, A4_2] # .︒
-‌。。; ‌..; [C1, X4_2]; xn--0ug..; [C1, A4_2]; ..; [A4_2] # ..
+xn--0ug332c3q0pr56g.xn--ss-151a; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; ;  # 𐹡𞤮ⴇ.ssⴃ
+xn--0ug332c3q0pr56g.xn--zca417t; \u200C𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; ;  # 𐹡𞤮ⴇ.ßⴃ
+\u200C𐹡𞤮ⴇ｡ßⴃ; \u200C𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ßⴃ
+\u200C𐹡𞤌Ⴇ｡SSႣ; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
+\u200C𐹡𞤮ⴇ｡ssⴃ; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
+\u200C𐹡𞤌ⴇ｡Ssⴃ; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
+xn--fnd1201kegrf.xn--ss-fek; 𐹡𞤮Ⴇ.ssႣ; [B1, V7]; xn--fnd1201kegrf.xn--ss-fek; ; ;  # 𐹡𞤮Ⴇ.ssႣ
+xn--fnd599eyj4pr50g.xn--ss-fek; \u200C𐹡𞤮Ⴇ.ssႣ; [B1, C1, V7]; xn--fnd599eyj4pr50g.xn--ss-fek; ; ;  # 𐹡𞤮Ⴇ.ssႣ
+xn--fnd599eyj4pr50g.xn--zca681f; \u200C𐹡𞤮Ⴇ.ßႣ; [B1, C1, V7]; xn--fnd599eyj4pr50g.xn--zca681f; ; ;  # 𐹡𞤮Ⴇ.ßႣ
+\u200C𐹡𞤌ⴇ。ßⴃ; \u200C𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ßⴃ
+\u200C𐹡𞤌ⴇ。ssⴃ; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
+\u200C𐹡𞤌Ⴇ。Ssⴃ; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
+xn--fnd1201kegrf.xn--ss-151a; 𐹡𞤮Ⴇ.ssⴃ; [B1, V7]; xn--fnd1201kegrf.xn--ss-151a; ; ;  # 𐹡𞤮Ⴇ.ssⴃ
+xn--fnd599eyj4pr50g.xn--ss-151a; \u200C𐹡𞤮Ⴇ.ssⴃ; [B1, C1, V7]; xn--fnd599eyj4pr50g.xn--ss-151a; ; ;  # 𐹡𞤮Ⴇ.ssⴃ
+\u200C𐹡𞤌ⴇ｡ßⴃ; \u200C𐹡𞤮ⴇ.ßⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--zca417t; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ßⴃ
+\u200C𐹡𞤌ⴇ｡ssⴃ; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
+\u200C𐹡𞤌Ⴇ｡Ssⴃ; \u200C𐹡𞤮ⴇ.ssⴃ; [B1, C1]; xn--0ug332c3q0pr56g.xn--ss-151a; ; xn--ykj9323eegwf.xn--ss-151a; [B1] # 𐹡𞤮ⴇ.ssⴃ
+\u17FF｡𞬳; \u17FF.𞬳; [V7]; xn--45e.xn--et6h; ; ;  # .
+\u17FF。𞬳; \u17FF.𞬳; [V7]; xn--45e.xn--et6h; ; ;  # .
+xn--45e.xn--et6h; \u17FF.𞬳; [V7]; xn--45e.xn--et6h; ; ;  # .
+\u0652\u200D｡\u0CCD𑚳; \u0652\u200D.\u0CCD𑚳; [C2, V6]; xn--uhb882k.xn--8tc4527k; ; xn--uhb.xn--8tc4527k; [V6] # ْ.್𑚳
+\u0652\u200D。\u0CCD𑚳; \u0652\u200D.\u0CCD𑚳; [C2, V6]; xn--uhb882k.xn--8tc4527k; ; xn--uhb.xn--8tc4527k; [V6] # ْ.್𑚳
+xn--uhb.xn--8tc4527k; \u0652.\u0CCD𑚳; [V6]; xn--uhb.xn--8tc4527k; ; ;  # ْ.್𑚳
+xn--uhb882k.xn--8tc4527k; \u0652\u200D.\u0CCD𑚳; [C2, V6]; xn--uhb882k.xn--8tc4527k; ; ;  # ْ.್𑚳
+-≠ᠻ．\u076D𞥃≮󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V7]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
+-=\u0338ᠻ．\u076D𞥃<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V7]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
+-≠ᠻ.\u076D𞥃≮󟷺; ; [B1, B2, B3, V3, V7]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
+-=\u0338ᠻ.\u076D𞥃<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V7]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
+-=\u0338ᠻ.\u076D𞤡<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V7]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
+-≠ᠻ.\u076D𞤡≮󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V7]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
+xn----g6j886c.xn--xpb049kk353abj99f; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V7]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
+-=\u0338ᠻ．\u076D𞤡<\u0338󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V7]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
+-≠ᠻ．\u076D𞤡≮󟷺; -≠ᠻ.\u076D𞥃≮󟷺; [B1, B2, B3, V3, V7]; xn----g6j886c.xn--xpb049kk353abj99f; ; ;  # -≠ᠻ.ݭ𞥃≮
+󠰆≯\u07B5𐻪．򊥕≮𑁆\u084C; 󠰆≯\u07B5𐻪.򊥕≮𑁆\u084C; [B1, B5, B6, V7]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ;  # ≯.≮𑁆ࡌ
+󠰆>\u0338\u07B5𐻪．򊥕<\u0338𑁆\u084C; 󠰆≯\u07B5𐻪.򊥕≮𑁆\u084C; [B1, B5, B6, V7]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ;  # ≯.≮𑁆ࡌ
+󠰆≯\u07B5𐻪.򊥕≮𑁆\u084C; ; [B1, B5, B6, V7]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ;  # ≯.≮𑁆ࡌ
+󠰆>\u0338\u07B5𐻪.򊥕<\u0338𑁆\u084C; 󠰆≯\u07B5𐻪.򊥕≮𑁆\u084C; [B1, B5, B6, V7]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ;  # ≯.≮𑁆ࡌ
+xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; 󠰆≯\u07B5𐻪.򊥕≮𑁆\u084C; [B1, B5, B6, V7]; xn--zrb797kdm1oes34i.xn--bwb394k8k2o25n6d; ; ;  # ≯.≮𑁆ࡌ
+≠󦋂.\u0600\u0BCD-\u06B9; ; [B1, V7]; xn--1ch22084l.xn----qkc07co6n; ; ;  # ≠.்-ڹ
+=\u0338󦋂.\u0600\u0BCD-\u06B9; ≠󦋂.\u0600\u0BCD-\u06B9; [B1, V7]; xn--1ch22084l.xn----qkc07co6n; ; ;  # ≠.்-ڹ
+xn--1ch22084l.xn----qkc07co6n; ≠󦋂.\u0600\u0BCD-\u06B9; [B1, V7]; xn--1ch22084l.xn----qkc07co6n; ; ;  # ≠.்-ڹ
+\u17DD󠁣≠｡𐹼𐋤; \u17DD󠁣≠.𐹼𐋤; [B1, V6, V7]; xn--54e694cn389z.xn--787ct8r; ; ;  # ៝≠.𐹼𐋤
+\u17DD󠁣=\u0338｡𐹼𐋤; \u17DD󠁣≠.𐹼𐋤; [B1, V6, V7]; xn--54e694cn389z.xn--787ct8r; ; ;  # ៝≠.𐹼𐋤
+\u17DD󠁣≠。𐹼𐋤; \u17DD󠁣≠.𐹼𐋤; [B1, V6, V7]; xn--54e694cn389z.xn--787ct8r; ; ;  # ៝≠.𐹼𐋤
+\u17DD󠁣=\u0338。𐹼𐋤; \u17DD󠁣≠.𐹼𐋤; [B1, V6, V7]; xn--54e694cn389z.xn--787ct8r; ; ;  # ៝≠.𐹼𐋤
+xn--54e694cn389z.xn--787ct8r; \u17DD󠁣≠.𐹼𐋤; [B1, V6, V7]; xn--54e694cn389z.xn--787ct8r; ; ;  # ៝≠.𐹼𐋤
+ß𰀻񆬗｡𝩨🕮ß; ß𰀻񆬗.𝩨🕮ß; [V6, V7]; xn--zca20040bgrkh.xn--zca3653v86qa; ; xn--ss-jl59biy67d.xn--ss-4d11aw87d;  # ß𰀻.𝩨🕮ß
+ß𰀻񆬗。𝩨🕮ß; ß𰀻񆬗.𝩨🕮ß; [V6, V7]; xn--zca20040bgrkh.xn--zca3653v86qa; ; xn--ss-jl59biy67d.xn--ss-4d11aw87d;  # ß𰀻.𝩨🕮ß
+SS𰀻񆬗。𝩨🕮SS; ss𰀻񆬗.𝩨🕮ss; [V6, V7]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
+ss𰀻񆬗。𝩨🕮ss; ss𰀻񆬗.𝩨🕮ss; [V6, V7]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
+Ss𰀻񆬗。𝩨🕮Ss; ss𰀻񆬗.𝩨🕮ss; [V6, V7]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
+xn--ss-jl59biy67d.xn--ss-4d11aw87d; ss𰀻񆬗.𝩨🕮ss; [V6, V7]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
+xn--zca20040bgrkh.xn--zca3653v86qa; ß𰀻񆬗.𝩨🕮ß; [V6, V7]; xn--zca20040bgrkh.xn--zca3653v86qa; ; ;  # ß𰀻.𝩨🕮ß
+SS𰀻񆬗｡𝩨🕮SS; ss𰀻񆬗.𝩨🕮ss; [V6, V7]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
+ss𰀻񆬗｡𝩨🕮ss; ss𰀻񆬗.𝩨🕮ss; [V6, V7]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
+Ss𰀻񆬗｡𝩨🕮Ss; ss𰀻񆬗.𝩨🕮ss; [V6, V7]; xn--ss-jl59biy67d.xn--ss-4d11aw87d; ; ;  # ss𰀻.𝩨🕮ss
+\u200D。\u200C; \u200D.\u200C; [C1, C2]; xn--1ug.xn--0ug; ; .; [A4_1, A4_2] # .
+xn--1ug.xn--0ug; \u200D.\u200C; [C1, C2]; xn--1ug.xn--0ug; ; ;  # .
+\u0483𐭞\u200D.\u17B9𞯌򟩚; ; [B1, C2, V6, V7]; xn--m3a412lrr0o.xn--43e8670vmd79b; ; xn--m3a6965k.xn--43e8670vmd79b; [B1, V6, V7] # ҃𐭞.ឹ
+xn--m3a6965k.xn--43e8670vmd79b; \u0483𐭞.\u17B9𞯌򟩚; [B1, V6, V7]; xn--m3a6965k.xn--43e8670vmd79b; ; ;  # ҃𐭞.ឹ
+xn--m3a412lrr0o.xn--43e8670vmd79b; \u0483𐭞\u200D.\u17B9𞯌򟩚; [B1, C2, V6, V7]; xn--m3a412lrr0o.xn--43e8670vmd79b; ; ;  # ҃𐭞.ឹ
+\u200C𐠨\u200C临。ꡢ򄷞ⶏ𐹣; \u200C𐠨\u200C临.ꡢ򄷞ⶏ𐹣; [B1, B5, B6, C1, V7]; xn--0uga2656aop9k.xn--uojv340bk71c99u9f; ; xn--miq9646b.xn--uojv340bk71c99u9f; [B2, B3, B5, B6, V7] # 𐠨临.ꡢⶏ𐹣
+xn--miq9646b.xn--uojv340bk71c99u9f; 𐠨临.ꡢ򄷞ⶏ𐹣; [B2, B3, B5, B6, V7]; xn--miq9646b.xn--uojv340bk71c99u9f; ; ;  # 𐠨临.ꡢⶏ𐹣
+xn--0uga2656aop9k.xn--uojv340bk71c99u9f; \u200C𐠨\u200C临.ꡢ򄷞ⶏ𐹣; [B1, B5, B6, C1, V7]; xn--0uga2656aop9k.xn--uojv340bk71c99u9f; ; ;  # 𐠨临.ꡢⶏ𐹣
+󠑘．󠄮; 󠑘.; [V7]; xn--s136e.; [V7, A4_2]; ;  # .
+󠑘.󠄮; 󠑘.; [V7]; xn--s136e.; [V7, A4_2]; ;  # .
+xn--s136e.; 󠑘.; [V7]; xn--s136e.; [V7, A4_2]; ;  # .
+𐫄\u0D4D．\uAAF6; 𐫄\u0D4D.\uAAF6; [B1, V6]; xn--wxc7880k.xn--2v9a; ; ;  # 𐫄്.꫶
+𐫄\u0D4D.\uAAF6; ; [B1, V6]; xn--wxc7880k.xn--2v9a; ; ;  # 𐫄്.꫶
+xn--wxc7880k.xn--2v9a; 𐫄\u0D4D.\uAAF6; [B1, V6]; xn--wxc7880k.xn--2v9a; ; ;  # 𐫄്.꫶
+\uA9B7󝵙멹。⒛󠨇; \uA9B7󝵙멹.⒛󠨇; [V6, V7]; xn--ym9av13acp85w.xn--dth22121k; ; ;  # ꦷ멹.⒛
+\uA9B7󝵙멹。⒛󠨇; \uA9B7󝵙멹.⒛󠨇; [V6, V7]; xn--ym9av13acp85w.xn--dth22121k; ; ;  # ꦷ멹.⒛
+\uA9B7󝵙멹。20.󠨇; \uA9B7󝵙멹.20.󠨇; [V6, V7]; xn--ym9av13acp85w.20.xn--d846e; ; ;  # ꦷ멹.20.
+\uA9B7󝵙멹。20.󠨇; \uA9B7󝵙멹.20.󠨇; [V6, V7]; xn--ym9av13acp85w.20.xn--d846e; ; ;  # ꦷ멹.20.
+xn--ym9av13acp85w.20.xn--d846e; \uA9B7󝵙멹.20.󠨇; [V6, V7]; xn--ym9av13acp85w.20.xn--d846e; ; ;  # ꦷ멹.20.
+xn--ym9av13acp85w.xn--dth22121k; \uA9B7󝵙멹.⒛󠨇; [V6, V7]; xn--ym9av13acp85w.xn--dth22121k; ; ;  # ꦷ멹.⒛
+Ⴅ󲬹릖󠶚.\u0777𐹳⒊; ⴅ󲬹릖󠶚.\u0777𐹳⒊; [B4, B6, V7]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ;  # ⴅ릖.ݷ𐹳⒊
+Ⴅ󲬹릖󠶚.\u0777𐹳⒊; ⴅ󲬹릖󠶚.\u0777𐹳⒊; [B4, B6, V7]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ;  # ⴅ릖.ݷ𐹳⒊
+Ⴅ󲬹릖󠶚.\u0777𐹳3.; ⴅ󲬹릖󠶚.\u0777𐹳3.; [B4, B6, V7]; xn--wkj8016bne45io02g.xn--3-55c6803r.; [B4, B6, V7, A4_2]; ;  # ⴅ릖.ݷ𐹳3.
+Ⴅ󲬹릖󠶚.\u0777𐹳3.; ⴅ󲬹릖󠶚.\u0777𐹳3.; [B4, B6, V7]; xn--wkj8016bne45io02g.xn--3-55c6803r.; [B4, B6, V7, A4_2]; ;  # ⴅ릖.ݷ𐹳3.
+ⴅ󲬹릖󠶚.\u0777𐹳3.; ⴅ󲬹릖󠶚.\u0777𐹳3.; [B4, B6, V7]; xn--wkj8016bne45io02g.xn--3-55c6803r.; [B4, B6, V7, A4_2]; ;  # ⴅ릖.ݷ𐹳3.
+ⴅ󲬹릖󠶚.\u0777𐹳3.; ; [B4, B6, V7]; xn--wkj8016bne45io02g.xn--3-55c6803r.; [B4, B6, V7, A4_2]; ;  # ⴅ릖.ݷ𐹳3.
+xn--wkj8016bne45io02g.xn--3-55c6803r.; ⴅ󲬹릖󠶚.\u0777𐹳3.; [B4, B6, V7]; xn--wkj8016bne45io02g.xn--3-55c6803r.; [B4, B6, V7, A4_2]; ;  # ⴅ릖.ݷ𐹳3.
+ⴅ󲬹릖󠶚.\u0777𐹳⒊; ⴅ󲬹릖󠶚.\u0777𐹳⒊; [B4, B6, V7]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ;  # ⴅ릖.ݷ𐹳⒊
+ⴅ󲬹릖󠶚.\u0777𐹳⒊; ; [B4, B6, V7]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ;  # ⴅ릖.ݷ𐹳⒊
+xn--wkj8016bne45io02g.xn--7pb000mwm4n; ⴅ󲬹릖󠶚.\u0777𐹳⒊; [B4, B6, V7]; xn--wkj8016bne45io02g.xn--7pb000mwm4n; ; ;  # ⴅ릖.ݷ𐹳⒊
+xn--dnd2167fnet0io02g.xn--3-55c6803r.; Ⴅ󲬹릖󠶚.\u0777𐹳3.; [B4, B6, V7]; xn--dnd2167fnet0io02g.xn--3-55c6803r.; [B4, B6, V7, A4_2]; ;  # Ⴅ릖.ݷ𐹳3.
+xn--dnd2167fnet0io02g.xn--7pb000mwm4n; Ⴅ󲬹릖󠶚.\u0777𐹳⒊; [B4, B6, V7]; xn--dnd2167fnet0io02g.xn--7pb000mwm4n; ; ;  # Ⴅ릖.ݷ𐹳⒊
+\u200C｡︒; \u200C.︒; [C1, V7]; xn--0ug.xn--y86c; ; .xn--y86c; [V7, A4_2] # .︒
+\u200C。。; \u200C..; [C1, X4_2]; xn--0ug..; [C1, A4_2]; ..; [A4_2] # ..
 ..; ; [X4_2]; ; [A4_2]; ;  # ..
-xn--0ug..; ‌..; [C1, X4_2]; xn--0ug..; [C1, A4_2]; ;  # ..
-.xn--y86c; .︒; [V6, X4_2]; .xn--y86c; [V6, A4_2]; ;  # .︒
-xn--0ug.xn--y86c; ‌.︒; [C1, V6]; xn--0ug.xn--y86c; ; ;  # .︒
-≯ݭ．₄; ≯ݭ.4; [B1, P1, V6]; xn--xpb149k.4; ; ;  # ≯ݭ.4
-≯ݭ．₄; ≯ݭ.4; [B1, P1, V6]; xn--xpb149k.4; ; ;  # ≯ݭ.4
-≯ݭ.4; ; [B1, P1, V6]; xn--xpb149k.4; ; ;  # ≯ݭ.4
-≯ݭ.4; ≯ݭ.4; [B1, P1, V6]; xn--xpb149k.4; ; ;  # ≯ݭ.4
-xn--xpb149k.4; ≯ݭ.4; [B1, V6]; xn--xpb149k.4; ; ;  # ≯ݭ.4
-ᡲ-𝟹.ß-‌-; ᡲ-3.ß-‌-; [C1, V3]; xn---3-p9o.xn-----fia9303a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ß--
-ᡲ-3.ß-‌-; ; [C1, V3]; xn---3-p9o.xn-----fia9303a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ß--
-ᡲ-3.SS-‌-; ᡲ-3.ss-‌-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
-ᡲ-3.ss-‌-; ; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
-ᡲ-3.Ss-‌-; ᡲ-3.ss-‌-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
+xn--0ug..; \u200C..; [C1, X4_2]; xn--0ug..; [C1, A4_2]; ;  # ..
+.xn--y86c; .︒; [V7, X4_2]; .xn--y86c; [V7, A4_2]; ;  # .︒
+xn--0ug.xn--y86c; \u200C.︒; [C1, V7]; xn--0ug.xn--y86c; ; ;  # .︒
+≯\u076D．₄; ≯\u076D.4; [B1]; xn--xpb149k.4; ; ;  # ≯ݭ.4
+>\u0338\u076D．₄; ≯\u076D.4; [B1]; xn--xpb149k.4; ; ;  # ≯ݭ.4
+≯\u076D.e; ; [B1]; xn--xpb149k.e; ; ;  # ≯ݭ.e
+>\u0338\u076D.e; ≯\u076D.e; [B1]; xn--xpb149k.e; ; ;  # ≯ݭ.e
+>\u0338\u076D.E; ≯\u076D.e; [B1]; xn--xpb149k.e; ; ;  # ≯ݭ.e
+≯\u076D.E; ≯\u076D.e; [B1]; xn--xpb149k.e; ; ;  # ≯ݭ.e
+xn--xpb149k.e; ≯\u076D.e; [B1]; xn--xpb149k.e; ; ;  # ≯ݭ.e
+ᡲ-𝟹.ß-\u200C-; ᡲ-3.ß-\u200C-; [C1, V3]; xn---3-p9o.xn-----fia9303a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ß--
+ᡲ-3.ß-\u200C-; ; [C1, V3]; xn---3-p9o.xn-----fia9303a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ß--
+ᡲ-3.SS-\u200C-; ᡲ-3.ss-\u200C-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
+ᡲ-3.ss-\u200C-; ; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
+ᡲ-3.Ss-\u200C-; ᡲ-3.ss-\u200C-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
 xn---3-p9o.ss--; ᡲ-3.ss--; [V2, V3]; xn---3-p9o.ss--; ; ;  # ᡲ-3.ss--
-xn---3-p9o.xn--ss---276a; ᡲ-3.ss-‌-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; ;  # ᡲ-3.ss--
-xn---3-p9o.xn-----fia9303a; ᡲ-3.ß-‌-; [C1, V3]; xn---3-p9o.xn-----fia9303a; ; ;  # ᡲ-3.ß--
-ᡲ-𝟹.SS-‌-; ᡲ-3.ss-‌-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
-ᡲ-𝟹.ss-‌-; ᡲ-3.ss-‌-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
-ᡲ-𝟹.Ss-‌-; ᡲ-3.ss-‌-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
-ﴈ𝟦ه󎊯｡Ӏ; ضي4ه󎊯.Ӏ; [B2, B3, P1, V6]; xn--4-tnc6ck183523b.xn--d5a; ; ;  # ضي4ه.Ӏ
-ضي4ه󎊯。Ӏ; ضي4ه󎊯.Ӏ; [B2, B3, P1, V6]; xn--4-tnc6ck183523b.xn--d5a; ; ;  # ضي4ه.Ӏ
-ضي4ه󎊯。ӏ; ضي4ه󎊯.ӏ; [B2, B3, P1, V6]; xn--4-tnc6ck183523b.xn--s5a; ; ;  # ضي4ه.ӏ
-xn--4-tnc6ck183523b.xn--s5a; ضي4ه󎊯.ӏ; [B2, B3, V6]; xn--4-tnc6ck183523b.xn--s5a; ; ;  # ضي4ه.ӏ
-xn--4-tnc6ck183523b.xn--d5a; ضي4ه󎊯.Ӏ; [B2, B3, V6]; xn--4-tnc6ck183523b.xn--d5a; ; ;  # ضي4ه.Ӏ
-ﴈ𝟦ه󎊯｡ӏ; ضي4ه󎊯.ӏ; [B2, B3, P1, V6]; xn--4-tnc6ck183523b.xn--s5a; ; ;  # ضي4ه.ӏ
--.؂آ𑆾🐹; ; [B1, P1, V3, V6]; -.xn--kfb8dy983hgl7g; ; ;  # -.آ𑆾🐹
--.؂آ𑆾🐹; -.؂آ𑆾🐹; [B1, P1, V3, V6]; -.xn--kfb8dy983hgl7g; ; ;  # -.آ𑆾🐹
--.xn--kfb8dy983hgl7g; -.؂آ𑆾🐹; [B1, V3, V6]; -.xn--kfb8dy983hgl7g; ; ;  # -.آ𑆾🐹
-󙶜ᢘ。᩿⺢; 󙶜ᢘ.᩿⺢; [P1, V5, V6]; xn--ibf35138o.xn--fpfz94g; ; ;  # ᢘ.᩿⺢
-xn--ibf35138o.xn--fpfz94g; 󙶜ᢘ.᩿⺢; [V5, V6]; xn--ibf35138o.xn--fpfz94g; ; ;  # ᢘ.᩿⺢
-≠ႷᠤႫ｡?͌س觴; ≠ႷᠤႫ.?͌س觴; [B1, B5, P1, V6]; xn--jndx718cnnl.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ႷᠤႫ.͌س觴
-≠ႷᠤႫ｡?͌س觴; ≠ႷᠤႫ.?͌س觴; [B1, B5, P1, V6]; xn--jndx718cnnl.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ႷᠤႫ.͌س觴
-≠ႷᠤႫ。?͌س觴; ≠ႷᠤႫ.?͌س觴; [B1, B5, P1, V6]; xn--jndx718cnnl.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ႷᠤႫ.͌س觴
-≠ႷᠤႫ。?͌س觴; ≠ႷᠤႫ.?͌س觴; [B1, B5, P1, V6]; xn--jndx718cnnl.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ႷᠤႫ.͌س觴
-≠ⴗᠤⴋ。?͌س觴; ≠ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--66e353ce0ilb.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ⴗᠤⴋ.͌س觴
-≠ⴗᠤⴋ。?͌س觴; ≠ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--66e353ce0ilb.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ⴗᠤⴋ.͌س觴
-≠Ⴗᠤⴋ。?͌س觴; ≠Ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--vnd619as6ig6k.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠Ⴗᠤⴋ.͌س觴
-≠Ⴗᠤⴋ。?͌س觴; ≠Ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--vnd619as6ig6k.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠Ⴗᠤⴋ.͌س觴
-xn--vnd619as6ig6k.?͌س觴; ≠Ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--vnd619as6ig6k.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠Ⴗᠤⴋ.͌س觴
-XN--VND619AS6IG6K.?͌س觴; ≠Ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--vnd619as6ig6k.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠Ⴗᠤⴋ.͌س觴
-Xn--Vnd619as6ig6k.?͌س觴; ≠Ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--vnd619as6ig6k.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠Ⴗᠤⴋ.͌س觴
-xn--66e353ce0ilb.?͌س觴; ≠ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--66e353ce0ilb.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ⴗᠤⴋ.͌س觴
-XN--66E353CE0ILB.?͌س觴; ≠ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--66e353ce0ilb.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ⴗᠤⴋ.͌س觴
-Xn--66e353ce0ilb.?͌س觴; ≠ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--66e353ce0ilb.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ⴗᠤⴋ.͌س觴
-xn--jndx718cnnl.?͌س觴; ≠ႷᠤႫ.?͌س觴; [B1, B5, P1, V6]; xn--jndx718cnnl.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ႷᠤႫ.͌س觴
-XN--JNDX718CNNL.?͌س觴; ≠ႷᠤႫ.?͌س觴; [B1, B5, P1, V6]; xn--jndx718cnnl.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ႷᠤႫ.͌س觴
-Xn--Jndx718cnnl.?͌س觴; ≠ႷᠤႫ.?͌س觴; [B1, B5, P1, V6]; xn--jndx718cnnl.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ႷᠤႫ.͌س觴
-≠ⴗᠤⴋ｡?͌س觴; ≠ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--66e353ce0ilb.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ⴗᠤⴋ.͌س觴
-≠ⴗᠤⴋ｡?͌س觴; ≠ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--66e353ce0ilb.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠ⴗᠤⴋ.͌س觴
-≠Ⴗᠤⴋ｡?͌س觴; ≠Ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--vnd619as6ig6k.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠Ⴗᠤⴋ.͌س觴
-≠Ⴗᠤⴋ｡?͌س觴; ≠Ⴗᠤⴋ.?͌س觴; [B1, B5, P1, V6]; xn--vnd619as6ig6k.?͌س觴; [B1, B5, P1, V6, A3]; ;  # ≠Ⴗᠤⴋ.͌س觴
-٧.𐥨; ; [B1, P1, V6]; xn--gib.xn--vm9c; ; ;  # ٧.
-xn--gib.xn--vm9c; ٧.𐥨; [B1, V6]; xn--gib.xn--vm9c; ; ;  # ٧.
-꧀𝟯｡‍񼑥𐹪᯳; ꧀3.‍񼑥𐹪᯳; [B1, C2, P1, V5, V6]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; xn--3-5z4e.xn--1zfz754hncv8b; [B5, P1, V5, V6] # ꧀3.𐹪᯳
-꧀3。‍񼑥𐹪᯳; ꧀3.‍񼑥𐹪᯳; [B1, C2, P1, V5, V6]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; xn--3-5z4e.xn--1zfz754hncv8b; [B5, P1, V5, V6] # ꧀3.𐹪᯳
-xn--3-5z4e.xn--1zfz754hncv8b; ꧀3.񼑥𐹪᯳; [B5, V5, V6]; xn--3-5z4e.xn--1zfz754hncv8b; ; ;  # ꧀3.𐹪᯳
-xn--3-5z4e.xn--1zf96ony8ygd68c; ꧀3.‍񼑥𐹪᯳; [B1, C2, V5, V6]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; ;  # ꧀3.𐹪᯳
-򣕄4񠖽.≯٤𑀾󠸌; ; [B1, P1, V6]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ;  # 4.≯٤𑀾
-򣕄4񠖽.≯٤𑀾󠸌; 򣕄4񠖽.≯٤𑀾󠸌; [B1, P1, V6]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ;  # 4.≯٤𑀾
-xn--4-fg85dl688i.xn--dib174li86ntdy0i; 򣕄4񠖽.≯٤𑀾󠸌; [B1, V6]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ;  # 4.≯٤𑀾
-򗆧𝟯。⒈᩶𝟚򠘌; 򗆧3.⒈᩶2򠘌; [P1, V6]; xn--3-rj42h.xn--2-13k746cq465x; ; ;  # 3.⒈᩶2
-򗆧3。1.᩶2򠘌; 򗆧3.1.᩶2򠘌; [P1, V5, V6]; xn--3-rj42h.1.xn--2-13k96240l; ; ;  # 3.1.᩶2
-xn--3-rj42h.1.xn--2-13k96240l; 򗆧3.1.᩶2򠘌; [V5, V6]; xn--3-rj42h.1.xn--2-13k96240l; ; ;  # 3.1.᩶2
-xn--3-rj42h.xn--2-13k746cq465x; 򗆧3.⒈᩶2򠘌; [V6]; xn--3-rj42h.xn--2-13k746cq465x; ; ;  # 3.⒈᩶2
-‍₅⒈。≯𝟴‍; ‍5⒈.≯8‍; [C2, P1, V6]; xn--5-tgnz5r.xn--8-ugn00i; ; xn--5-ecp.xn--8-ogo; [P1, V6] # 5⒈.≯8
-‍₅⒈。≯𝟴‍; ‍5⒈.≯8‍; [C2, P1, V6]; xn--5-tgnz5r.xn--8-ugn00i; ; xn--5-ecp.xn--8-ogo; [P1, V6] # 5⒈.≯8
-‍51.。≯8‍; ‍51..≯8‍; [C2, P1, V6, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, P1, V6, A4_2]; 51..xn--8-ogo; [P1, V6, A4_2] # 51..≯8
-‍51.。≯8‍; ‍51..≯8‍; [C2, P1, V6, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, P1, V6, A4_2]; 51..xn--8-ogo; [P1, V6, A4_2] # 51..≯8
-51..xn--8-ogo; 51..≯8; [V6, X4_2]; 51..xn--8-ogo; [V6, A4_2]; ;  # 51..≯8
-xn--51-l1t..xn--8-ugn00i; ‍51..≯8‍; [C2, V6, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, V6, A4_2]; ;  # 51..≯8
-xn--5-ecp.xn--8-ogo; 5⒈.≯8; [V6]; xn--5-ecp.xn--8-ogo; ; ;  # 5⒈.≯8
-xn--5-tgnz5r.xn--8-ugn00i; ‍5⒈.≯8‍; [C2, V6]; xn--5-tgnz5r.xn--8-ugn00i; ; ;  # 5⒈.≯8
-ꡰڗႆ．򪘙ܯ≠‌; ꡰڗႆ.򪘙ܯ≠‌; [B5, B6, C1, P1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, P1, V6] # ꡰڗႆ.ܯ≠
-ꡰڗႆ．򪘙ܯ≠‌; ꡰڗႆ.򪘙ܯ≠‌; [B5, B6, C1, P1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, P1, V6] # ꡰڗႆ.ܯ≠
-ꡰڗႆ.򪘙ܯ≠‌; ; [B5, B6, C1, P1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, P1, V6] # ꡰڗႆ.ܯ≠
-ꡰڗႆ.򪘙ܯ≠‌; ꡰڗႆ.򪘙ܯ≠‌; [B5, B6, C1, P1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, P1, V6] # ꡰڗႆ.ܯ≠
-xn--tjb002cn51k.xn--5nb630lbj91q; ꡰڗႆ.򪘙ܯ≠; [B5, B6, V6]; xn--tjb002cn51k.xn--5nb630lbj91q; ; ;  # ꡰڗႆ.ܯ≠
-xn--tjb002cn51k.xn--5nb448jcubcz547b; ꡰڗႆ.򪘙ܯ≠‌; [B5, B6, C1, V6]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; ;  # ꡰڗႆ.ܯ≠
-𑄱｡򪌿𐹵; 𑄱.򪌿𐹵; [B1, B3, B5, B6, P1, V5, V6]; xn--t80d.xn--to0d14792b; ; ;  # 𑄱.𐹵
-𑄱。򪌿𐹵; 𑄱.򪌿𐹵; [B1, B3, B5, B6, P1, V5, V6]; xn--t80d.xn--to0d14792b; ; ;  # 𑄱.𐹵
-xn--t80d.xn--to0d14792b; 𑄱.򪌿𐹵; [B1, B3, B5, B6, V5, V6]; xn--t80d.xn--to0d14792b; ; ;  # 𑄱.𐹵
-𝟥؀。ܽ; 3؀.ܽ; [B1, B3, B6, P1, V5, V6]; xn--3-rkc.xn--kob; ; ;  # 3.ܽ
-3؀。ܽ; 3؀.ܽ; [B1, B3, B6, P1, V5, V6]; xn--3-rkc.xn--kob; ; ;  # 3.ܽ
-xn--3-rkc.xn--kob; 3؀.ܽ; [B1, B3, B6, V5, V6]; xn--3-rkc.xn--kob; ; ;  # 3.ܽ
-ط𐹣٦.ݭ긷; ; [B2, B3]; xn--2gb8gu829f.xn--xpb0156f; ; ;  # ط𐹣٦.ݭ긷
-ط𐹣٦.ݭ긷; ط𐹣٦.ݭ긷; [B2, B3]; xn--2gb8gu829f.xn--xpb0156f; ; ;  # ط𐹣٦.ݭ긷
-xn--2gb8gu829f.xn--xpb0156f; ط𐹣٦.ݭ긷; [B2, B3]; xn--2gb8gu829f.xn--xpb0156f; ; ;  # ط𐹣٦.ݭ긷
-︒Ↄⷧ򾀃．Ⴗ𐣞; ︒Ↄⷧ򾀃.Ⴗ𐣞; [B1, B5, B6, P1, V6]; xn--q5g000c056n0226g.xn--vnd8618j; ; ;  # ︒Ↄⷧ.Ⴗ
-。Ↄⷧ򾀃.Ⴗ𐣞; .Ↄⷧ򾀃.Ⴗ𐣞; [B5, B6, P1, V6, X4_2]; .xn--q5g000cll06u.xn--vnd8618j; [B5, B6, P1, V6, A4_2]; ;  # .Ↄⷧ.Ⴗ
-。ↄⷧ򾀃.ⴗ𐣞; .ↄⷧ򾀃.ⴗ𐣞; [B5, B6, P1, V6, X4_2]; .xn--r5gy00cll06u.xn--flj4541e; [B5, B6, P1, V6, A4_2]; ;  # .ↄⷧ.ⴗ
-.xn--r5gy00cll06u.xn--flj4541e; .ↄⷧ򾀃.ⴗ𐣞; [B5, B6, V6, X4_2]; .xn--r5gy00cll06u.xn--flj4541e; [B5, B6, V6, A4_2]; ;  # .ↄⷧ.ⴗ
-.xn--q5g000cll06u.xn--vnd8618j; .Ↄⷧ򾀃.Ⴗ𐣞; [B5, B6, V6, X4_2]; .xn--q5g000cll06u.xn--vnd8618j; [B5, B6, V6, A4_2]; ;  # .Ↄⷧ.Ⴗ
-︒ↄⷧ򾀃．ⴗ𐣞; ︒ↄⷧ򾀃.ⴗ𐣞; [B1, B5, B6, P1, V6]; xn--r5gy00c056n0226g.xn--flj4541e; ; ;  # ︒ↄⷧ.ⴗ
-xn--r5gy00c056n0226g.xn--flj4541e; ︒ↄⷧ򾀃.ⴗ𐣞; [B1, B5, B6, V6]; xn--r5gy00c056n0226g.xn--flj4541e; ; ;  # ︒ↄⷧ.ⴗ
-xn--q5g000c056n0226g.xn--vnd8618j; ︒Ↄⷧ򾀃.Ⴗ𐣞; [B1, B5, B6, V6]; xn--q5g000c056n0226g.xn--vnd8618j; ; ;  # ︒Ↄⷧ.Ⴗ
-؀.ֱ; ; [B1, B3, B6, P1, V5, V6]; xn--ifb.xn--8cb; ; ;  # .ֱ
-xn--ifb.xn--8cb; ؀.ֱ; [B1, B3, B6, V5, V6]; xn--ifb.xn--8cb; ; ;  # .ֱ
-ς≯｡𐹽; ς≯.𐹽; [B1, B6, P1, V6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d;  # ς≯.𐹽
-ς≯｡𐹽; ς≯.𐹽; [B1, B6, P1, V6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d;  # ς≯.𐹽
-ς≯。𐹽; ς≯.𐹽; [B1, B6, P1, V6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d;  # ς≯.𐹽
-ς≯。𐹽; ς≯.𐹽; [B1, B6, P1, V6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d;  # ς≯.𐹽
-Σ≯。𐹽; σ≯.𐹽; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
-Σ≯。𐹽; σ≯.𐹽; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
-σ≯。𐹽; σ≯.𐹽; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
-σ≯。𐹽; σ≯.𐹽; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
-xn--4xa818m.xn--1o0d; σ≯.𐹽; [B1, B6, V6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
-xn--3xa028m.xn--1o0d; ς≯.𐹽; [B1, B6, V6]; xn--3xa028m.xn--1o0d; ; ;  # ς≯.𐹽
-Σ≯｡𐹽; σ≯.𐹽; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
-Σ≯｡𐹽; σ≯.𐹽; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
-σ≯｡𐹽; σ≯.𐹽; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
-σ≯｡𐹽; σ≯.𐹽; [B1, B6, P1, V6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
-្‍ݟ。𐹶; ្‍ݟ.𐹶; [B1, V5]; xn--jpb535fv9f.xn--uo0d; ; xn--jpb535f.xn--uo0d;  # ្ݟ.𐹶
-xn--jpb535f.xn--uo0d; ្ݟ.𐹶; [B1, V5]; xn--jpb535f.xn--uo0d; ; ;  # ្ݟ.𐹶
-xn--jpb535fv9f.xn--uo0d; ្‍ݟ.𐹶; [B1, V5]; xn--jpb535fv9f.xn--uo0d; ; ;  # ្ݟ.𐹶
-𾷂ੂႪ񂂟.≮; ; [P1, V6]; xn--nbc493aro75ggskb.xn--gdh; ; ;  # ੂႪ.≮
-𾷂ੂႪ񂂟.≮; 𾷂ੂႪ񂂟.≮; [P1, V6]; xn--nbc493aro75ggskb.xn--gdh; ; ;  # ੂႪ.≮
-𾷂ੂⴊ񂂟.≮; 𾷂ੂⴊ񂂟.≮; [P1, V6]; xn--nbc229o4y27dgskb.xn--gdh; ; ;  # ੂⴊ.≮
-𾷂ੂⴊ񂂟.≮; ; [P1, V6]; xn--nbc229o4y27dgskb.xn--gdh; ; ;  # ੂⴊ.≮
-xn--nbc229o4y27dgskb.xn--gdh; 𾷂ੂⴊ񂂟.≮; [V6]; xn--nbc229o4y27dgskb.xn--gdh; ; ;  # ੂⴊ.≮
-xn--nbc493aro75ggskb.xn--gdh; 𾷂ੂႪ񂂟.≮; [V6]; xn--nbc493aro75ggskb.xn--gdh; ; ;  # ੂႪ.≮
+xn---3-p9o.xn--ss---276a; ᡲ-3.ss-\u200C-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; ;  # ᡲ-3.ss--
+xn---3-p9o.xn-----fia9303a; ᡲ-3.ß-\u200C-; [C1, V3]; xn---3-p9o.xn-----fia9303a; ; ;  # ᡲ-3.ß--
+ᡲ-𝟹.SS-\u200C-; ᡲ-3.ss-\u200C-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
+ᡲ-𝟹.ss-\u200C-; ᡲ-3.ss-\u200C-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
+ᡲ-𝟹.Ss-\u200C-; ᡲ-3.ss-\u200C-; [C1, V3]; xn---3-p9o.xn--ss---276a; ; xn---3-p9o.ss--; [V2, V3] # ᡲ-3.ss--
+\uFD08𝟦\u0647󎊯｡Ӏ; \u0636\u064A4\u0647󎊯.ӏ; [B2, B3, V7]; xn--4-tnc6ck183523b.xn--s5a; ; ;  # ضي4ه.ӏ
+\u0636\u064A4\u0647󎊯。Ӏ; \u0636\u064A4\u0647󎊯.ӏ; [B2, B3, V7]; xn--4-tnc6ck183523b.xn--s5a; ; ;  # ضي4ه.ӏ
+\u0636\u064A4\u0647󎊯。ӏ; \u0636\u064A4\u0647󎊯.ӏ; [B2, B3, V7]; xn--4-tnc6ck183523b.xn--s5a; ; ;  # ضي4ه.ӏ
+xn--4-tnc6ck183523b.xn--s5a; \u0636\u064A4\u0647󎊯.ӏ; [B2, B3, V7]; xn--4-tnc6ck183523b.xn--s5a; ; ;  # ضي4ه.ӏ
+\uFD08𝟦\u0647󎊯｡ӏ; \u0636\u064A4\u0647󎊯.ӏ; [B2, B3, V7]; xn--4-tnc6ck183523b.xn--s5a; ; ;  # ضي4ه.ӏ
+xn--4-tnc6ck183523b.xn--d5a; \u0636\u064A4\u0647󎊯.Ӏ; [B2, B3, V7]; xn--4-tnc6ck183523b.xn--d5a; ; ;  # ضي4ه.Ӏ
+-.\u0602\u0622𑆾🐹; ; [B1, V3, V7]; -.xn--kfb8dy983hgl7g; ; ;  # -.آ𑆾🐹
+-.\u0602\u0627\u0653𑆾🐹; -.\u0602\u0622𑆾🐹; [B1, V3, V7]; -.xn--kfb8dy983hgl7g; ; ;  # -.آ𑆾🐹
+-.xn--kfb8dy983hgl7g; -.\u0602\u0622𑆾🐹; [B1, V3, V7]; -.xn--kfb8dy983hgl7g; ; ;  # -.آ𑆾🐹
+󙶜ᢘ。\u1A7F⺢; 󙶜ᢘ.\u1A7F⺢; [V6, V7]; xn--ibf35138o.xn--fpfz94g; ; ;  # ᢘ.᩿⺢
+xn--ibf35138o.xn--fpfz94g; 󙶜ᢘ.\u1A7F⺢; [V6, V7]; xn--ibf35138o.xn--fpfz94g; ; ;  # ᢘ.᩿⺢
+≠ႷᠤႫ｡?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+=\u0338ႷᠤႫ｡?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+≠ႷᠤႫ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+=\u0338ႷᠤႫ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+=\u0338ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+≠ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+≠Ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+=\u0338Ⴗᠤⴋ。?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+xn--66e353ce0ilb.xn--?-7fb34t0u7s; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+=\u0338ⴗᠤⴋ｡?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+≠ⴗᠤⴋ｡?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+≠Ⴗᠤⴋ｡?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+=\u0338Ⴗᠤⴋ｡?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V7, U1]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ;  # ≠Ⴗᠤⴋ.?͌س觴
+xn--jndx718cnnl.xn--?-7fb34t0u7s; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V7, U1]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ;  # ≠ႷᠤႫ.?͌س觴
+xn--vnd619as6ig6k.?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V7, U1]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ;  # ≠Ⴗᠤⴋ.?͌س觴
+XN--VND619AS6IG6K.?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V7, U1]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ;  # ≠Ⴗᠤⴋ.?͌س觴
+Xn--Vnd619as6ig6k.?\u034C\u0633觴; ≠Ⴗᠤⴋ.?\u034C\u0633觴; [B1, V7, U1]; xn--vnd619as6ig6k.xn--?-7fb34t0u7s; ; ;  # ≠Ⴗᠤⴋ.?͌س觴
+xn--66e353ce0ilb.?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+XN--66E353CE0ILB.?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+Xn--66e353ce0ilb.?\u034C\u0633觴; ≠ⴗᠤⴋ.?\u034C\u0633觴; [B1, U1]; xn--66e353ce0ilb.xn--?-7fb34t0u7s; ; ;  # ≠ⴗᠤⴋ.?͌س觴
+xn--jndx718cnnl.?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V7, U1]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ;  # ≠ႷᠤႫ.?͌س觴
+XN--JNDX718CNNL.?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V7, U1]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ;  # ≠ႷᠤႫ.?͌س觴
+Xn--Jndx718cnnl.?\u034C\u0633觴; ≠ႷᠤႫ.?\u034C\u0633觴; [B1, V7, U1]; xn--jndx718cnnl.xn--?-7fb34t0u7s; ; ;  # ≠ႷᠤႫ.?͌س觴
+\u0667.𐥨; ; [B1, V7]; xn--gib.xn--vm9c; ; ;  # ٧.
+xn--gib.xn--vm9c; \u0667.𐥨; [B1, V7]; xn--gib.xn--vm9c; ; ;  # ٧.
+\uA9C0𝟯｡\u200D񼑥𐹪\u1BF3; \uA9C03.\u200D񼑥𐹪\u1BF3; [B1, C2, V6, V7]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; xn--3-5z4e.xn--1zfz754hncv8b; [B5, V6, V7] # ꧀3.𐹪᯳
+\uA9C03。\u200D񼑥𐹪\u1BF3; \uA9C03.\u200D񼑥𐹪\u1BF3; [B1, C2, V6, V7]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; xn--3-5z4e.xn--1zfz754hncv8b; [B5, V6, V7] # ꧀3.𐹪᯳
+xn--3-5z4e.xn--1zfz754hncv8b; \uA9C03.񼑥𐹪\u1BF3; [B5, V6, V7]; xn--3-5z4e.xn--1zfz754hncv8b; ; ;  # ꧀3.𐹪᯳
+xn--3-5z4e.xn--1zf96ony8ygd68c; \uA9C03.\u200D񼑥𐹪\u1BF3; [B1, C2, V6, V7]; xn--3-5z4e.xn--1zf96ony8ygd68c; ; ;  # ꧀3.𐹪᯳
+򣕄4񠖽.≯\u0664𑀾󠸌; ; [B1, V7]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ;  # 4.≯٤𑀾
+򣕄4񠖽.>\u0338\u0664𑀾󠸌; 򣕄4񠖽.≯\u0664𑀾󠸌; [B1, V7]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ;  # 4.≯٤𑀾
+xn--4-fg85dl688i.xn--dib174li86ntdy0i; 򣕄4񠖽.≯\u0664𑀾󠸌; [B1, V7]; xn--4-fg85dl688i.xn--dib174li86ntdy0i; ; ;  # 4.≯٤𑀾
+򗆧𝟯。⒈\u1A76𝟚򠘌; 򗆧3.⒈\u1A762򠘌; [V7]; xn--3-rj42h.xn--2-13k746cq465x; ; ;  # 3.⒈᩶2
+򗆧3。1.\u1A762򠘌; 򗆧3.1.\u1A762򠘌; [V6, V7]; xn--3-rj42h.1.xn--2-13k96240l; ; ;  # 3.1.᩶2
+xn--3-rj42h.1.xn--2-13k96240l; 򗆧3.1.\u1A762򠘌; [V6, V7]; xn--3-rj42h.1.xn--2-13k96240l; ; ;  # 3.1.᩶2
+xn--3-rj42h.xn--2-13k746cq465x; 򗆧3.⒈\u1A762򠘌; [V7]; xn--3-rj42h.xn--2-13k746cq465x; ; ;  # 3.⒈᩶2
+\u200D₅⒈。≯𝟴\u200D; \u200D5⒈.≯8\u200D; [C2, V7]; xn--5-tgnz5r.xn--8-ugn00i; ; xn--5-ecp.xn--8-ogo; [V7] # 5⒈.≯8
+\u200D₅⒈。>\u0338𝟴\u200D; \u200D5⒈.≯8\u200D; [C2, V7]; xn--5-tgnz5r.xn--8-ugn00i; ; xn--5-ecp.xn--8-ogo; [V7] # 5⒈.≯8
+\u200D51.。≯8\u200D; \u200D51..≯8\u200D; [C2, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, A4_2]; 51..xn--8-ogo; [A4_2] # 51..≯8
+\u200D51.。>\u03388\u200D; \u200D51..≯8\u200D; [C2, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, A4_2]; 51..xn--8-ogo; [A4_2] # 51..≯8
+51..xn--8-ogo; 51..≯8; [X4_2]; 51..xn--8-ogo; [A4_2]; ;  # 51..≯8
+xn--51-l1t..xn--8-ugn00i; \u200D51..≯8\u200D; [C2, X4_2]; xn--51-l1t..xn--8-ugn00i; [C2, A4_2]; ;  # 51..≯8
+xn--5-ecp.xn--8-ogo; 5⒈.≯8; [V7]; xn--5-ecp.xn--8-ogo; ; ;  # 5⒈.≯8
+xn--5-tgnz5r.xn--8-ugn00i; \u200D5⒈.≯8\u200D; [C2, V7]; xn--5-tgnz5r.xn--8-ugn00i; ; ;  # 5⒈.≯8
+ꡰ\u0697\u1086．򪘙\u072F≠\u200C; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, V7]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, V7] # ꡰڗႆ.ܯ≠
+ꡰ\u0697\u1086．򪘙\u072F=\u0338\u200C; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, V7]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, V7] # ꡰڗႆ.ܯ≠
+ꡰ\u0697\u1086.򪘙\u072F≠\u200C; ; [B5, B6, C1, V7]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, V7] # ꡰڗႆ.ܯ≠
+ꡰ\u0697\u1086.򪘙\u072F=\u0338\u200C; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, V7]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; xn--tjb002cn51k.xn--5nb630lbj91q; [B5, B6, V7] # ꡰڗႆ.ܯ≠
+xn--tjb002cn51k.xn--5nb630lbj91q; ꡰ\u0697\u1086.򪘙\u072F≠; [B5, B6, V7]; xn--tjb002cn51k.xn--5nb630lbj91q; ; ;  # ꡰڗႆ.ܯ≠
+xn--tjb002cn51k.xn--5nb448jcubcz547b; ꡰ\u0697\u1086.򪘙\u072F≠\u200C; [B5, B6, C1, V7]; xn--tjb002cn51k.xn--5nb448jcubcz547b; ; ;  # ꡰڗႆ.ܯ≠
+𑄱｡򪌿𐹵; 𑄱.򪌿𐹵; [B1, B5, B6, V6, V7]; xn--t80d.xn--to0d14792b; ; ;  # 𑄱.𐹵
+𑄱。򪌿𐹵; 𑄱.򪌿𐹵; [B1, B5, B6, V6, V7]; xn--t80d.xn--to0d14792b; ; ;  # 𑄱.𐹵
+xn--t80d.xn--to0d14792b; 𑄱.򪌿𐹵; [B1, B5, B6, V6, V7]; xn--t80d.xn--to0d14792b; ; ;  # 𑄱.𐹵
+𝟥\u0600。\u073D; 3\u0600.\u073D; [B1, V6, V7]; xn--3-rkc.xn--kob; ; ;  # 3.ܽ
+3\u0600。\u073D; 3\u0600.\u073D; [B1, V6, V7]; xn--3-rkc.xn--kob; ; ;  # 3.ܽ
+xn--3-rkc.xn--kob; 3\u0600.\u073D; [B1, V6, V7]; xn--3-rkc.xn--kob; ; ;  # 3.ܽ
+\u0637𐹣\u0666.\u076D긷; ; [B2, B3]; xn--2gb8gu829f.xn--xpb0156f; ; ;  # ط𐹣٦.ݭ긷
+\u0637𐹣\u0666.\u076D긷; \u0637𐹣\u0666.\u076D긷; [B2, B3]; xn--2gb8gu829f.xn--xpb0156f; ; ;  # ط𐹣٦.ݭ긷
+xn--2gb8gu829f.xn--xpb0156f; \u0637𐹣\u0666.\u076D긷; [B2, B3]; xn--2gb8gu829f.xn--xpb0156f; ; ;  # ط𐹣٦.ݭ긷
+︒Ↄ\u2DE7򾀃．Ⴗ𐣞; ︒ↄ\u2DE7򾀃.ⴗ𐣞; [B1, B5, B6, V7]; xn--r5gy00c056n0226g.xn--flj4541e; ; ;  # ︒ↄⷧ.ⴗ
+。Ↄ\u2DE7򾀃.Ⴗ𐣞; .ↄ\u2DE7򾀃.ⴗ𐣞; [B5, B6, V7, X4_2]; .xn--r5gy00cll06u.xn--flj4541e; [B5, B6, V7, A4_2]; ;  # .ↄⷧ.ⴗ
+。ↄ\u2DE7򾀃.ⴗ𐣞; .ↄ\u2DE7򾀃.ⴗ𐣞; [B5, B6, V7, X4_2]; .xn--r5gy00cll06u.xn--flj4541e; [B5, B6, V7, A4_2]; ;  # .ↄⷧ.ⴗ
+.xn--r5gy00cll06u.xn--flj4541e; .ↄ\u2DE7򾀃.ⴗ𐣞; [B5, B6, V7, X4_2]; .xn--r5gy00cll06u.xn--flj4541e; [B5, B6, V7, A4_2]; ;  # .ↄⷧ.ⴗ
+︒ↄ\u2DE7򾀃．ⴗ𐣞; ︒ↄ\u2DE7򾀃.ⴗ𐣞; [B1, B5, B6, V7]; xn--r5gy00c056n0226g.xn--flj4541e; ; ;  # ︒ↄⷧ.ⴗ
+xn--r5gy00c056n0226g.xn--flj4541e; ︒ↄ\u2DE7򾀃.ⴗ𐣞; [B1, B5, B6, V7]; xn--r5gy00c056n0226g.xn--flj4541e; ; ;  # ︒ↄⷧ.ⴗ
+.xn--q5g000cll06u.xn--vnd8618j; .Ↄ\u2DE7򾀃.Ⴗ𐣞; [B5, B6, V7, X4_2]; .xn--q5g000cll06u.xn--vnd8618j; [B5, B6, V7, A4_2]; ;  # .Ↄⷧ.Ⴗ
+xn--q5g000c056n0226g.xn--vnd8618j; ︒Ↄ\u2DE7򾀃.Ⴗ𐣞; [B1, B5, B6, V7]; xn--q5g000c056n0226g.xn--vnd8618j; ; ;  # ︒Ↄⷧ.Ⴗ
+\u0600.\u05B1; ; [B1, V6, V7]; xn--ifb.xn--8cb; ; ;  # .ֱ
+xn--ifb.xn--8cb; \u0600.\u05B1; [B1, V6, V7]; xn--ifb.xn--8cb; ; ;  # .ֱ
+ς≯｡𐹽; ς≯.𐹽; [B1, B6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d;  # ς≯.𐹽
+ς>\u0338｡𐹽; ς≯.𐹽; [B1, B6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d;  # ς≯.𐹽
+ς≯。𐹽; ς≯.𐹽; [B1, B6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d;  # ς≯.𐹽
+ς>\u0338。𐹽; ς≯.𐹽; [B1, B6]; xn--3xa028m.xn--1o0d; ; xn--4xa818m.xn--1o0d;  # ς≯.𐹽
+Σ>\u0338。𐹽; σ≯.𐹽; [B1, B6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
+Σ≯。𐹽; σ≯.𐹽; [B1, B6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
+σ≯。𐹽; σ≯.𐹽; [B1, B6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
+σ>\u0338。𐹽; σ≯.𐹽; [B1, B6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
+xn--4xa818m.xn--1o0d; σ≯.𐹽; [B1, B6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
+xn--3xa028m.xn--1o0d; ς≯.𐹽; [B1, B6]; xn--3xa028m.xn--1o0d; ; ;  # ς≯.𐹽
+Σ>\u0338｡𐹽; σ≯.𐹽; [B1, B6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
+Σ≯｡𐹽; σ≯.𐹽; [B1, B6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
+σ≯｡𐹽; σ≯.𐹽; [B1, B6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
+σ>\u0338｡𐹽; σ≯.𐹽; [B1, B6]; xn--4xa818m.xn--1o0d; ; ;  # σ≯.𐹽
+\u17D2\u200D\u075F。𐹶; \u17D2\u200D\u075F.𐹶; [B1, V6]; xn--jpb535fv9f.xn--uo0d; ; xn--jpb535f.xn--uo0d;  # ្ݟ.𐹶
+xn--jpb535f.xn--uo0d; \u17D2\u075F.𐹶; [B1, V6]; xn--jpb535f.xn--uo0d; ; ;  # ្ݟ.𐹶
+xn--jpb535fv9f.xn--uo0d; \u17D2\u200D\u075F.𐹶; [B1, V6]; xn--jpb535fv9f.xn--uo0d; ; ;  # ្ݟ.𐹶
+𾷂\u0A42Ⴊ񂂟.≮; 𾷂\u0A42ⴊ񂂟.≮; [V7]; xn--nbc229o4y27dgskb.xn--gdh; ; ;  # ੂⴊ.≮
+𾷂\u0A42Ⴊ񂂟.<\u0338; 𾷂\u0A42ⴊ񂂟.≮; [V7]; xn--nbc229o4y27dgskb.xn--gdh; ; ;  # ੂⴊ.≮
+𾷂\u0A42ⴊ񂂟.<\u0338; 𾷂\u0A42ⴊ񂂟.≮; [V7]; xn--nbc229o4y27dgskb.xn--gdh; ; ;  # ੂⴊ.≮
+𾷂\u0A42ⴊ񂂟.≮; ; [V7]; xn--nbc229o4y27dgskb.xn--gdh; ; ;  # ੂⴊ.≮
+xn--nbc229o4y27dgskb.xn--gdh; 𾷂\u0A42ⴊ񂂟.≮; [V7]; xn--nbc229o4y27dgskb.xn--gdh; ; ;  # ੂⴊ.≮
+xn--nbc493aro75ggskb.xn--gdh; 𾷂\u0A42Ⴊ񂂟.≮; [V7]; xn--nbc493aro75ggskb.xn--gdh; ; ;  # ੂႪ.≮
 ꡠ．۲; ꡠ.۲; ; xn--5c9a.xn--fmb; ; ;  # ꡠ.۲
 ꡠ.۲; ; ; xn--5c9a.xn--fmb; ; ;  # ꡠ.۲
 xn--5c9a.xn--fmb; ꡠ.۲; ; xn--5c9a.xn--fmb; ; ;  # ꡠ.۲
-𐹣񄷄｡ꡬ🄄; 𐹣񄷄.ꡬ🄄; [B1, P1, V6]; xn--bo0d0203l.xn--id9a4443d; ; ;  # 𐹣.ꡬ🄄
-𐹣񄷄。ꡬ3,; 𐹣񄷄.ꡬ3,; [B1, B6, P1, V6]; xn--bo0d0203l.xn--3,-yj9h; ; ;  # 𐹣.ꡬ3,
-xn--bo0d0203l.xn--3,-yj9h; 𐹣񄷄.ꡬ3,; [B1, B6, P1, V6]; xn--bo0d0203l.xn--3,-yj9h; ; ;  # 𐹣.ꡬ3,
-xn--bo0d0203l.xn--id9a4443d; 𐹣񄷄.ꡬ🄄; [B1, V6]; xn--bo0d0203l.xn--id9a4443d; ; ;  # 𐹣.ꡬ🄄
--్𞾀𑲓｡‍്; -్𞾀𑲓.‍്; [B1, C2, P1, V3, V6]; xn----x6e0220sclug.xn--wxc317g; ; xn----x6e0220sclug.xn--wxc; [B1, B3, B6, P1, V3, V5, V6] # -్𑲓.്
--్𞾀𑲓。‍്; -్𞾀𑲓.‍്; [B1, C2, P1, V3, V6]; xn----x6e0220sclug.xn--wxc317g; ; xn----x6e0220sclug.xn--wxc; [B1, B3, B6, P1, V3, V5, V6] # -్𑲓.്
-xn----x6e0220sclug.xn--wxc; -్𞾀𑲓.്; [B1, B3, B6, V3, V5, V6]; xn----x6e0220sclug.xn--wxc; ; ;  # -్𑲓.്
-xn----x6e0220sclug.xn--wxc317g; -్𞾀𑲓.‍്; [B1, C2, V3, V6]; xn----x6e0220sclug.xn--wxc317g; ; ;  # -్𑲓.്
-꙽‌霣🄆｡‌𑁂ᬁ; ꙽‌霣🄆.‌𑁂ᬁ; [C1, P1, V5, V6]; xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; ; xn--2q5a751a653w.xn--4sf0725i; [P1, V5, V6] # ꙽霣🄆.𑁂ᬁ
-꙽‌霣🄆｡‌𑁂ᬁ; ꙽‌霣🄆.‌𑁂ᬁ; [C1, P1, V5, V6]; xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; ; xn--2q5a751a653w.xn--4sf0725i; [P1, V5, V6] # ꙽霣🄆.𑁂ᬁ
-꙽‌霣5,。‌𑁂ᬁ; ꙽‌霣5,.‌𑁂ᬁ; [C1, P1, V5, V6]; xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ; xn--5,-op8g373c.xn--4sf0725i; [P1, V5, V6] # ꙽霣5,.𑁂ᬁ
-xn--5,-op8g373c.xn--4sf0725i; ꙽霣5,.𑁂ᬁ; [P1, V5, V6]; xn--5,-op8g373c.xn--4sf0725i; ; ;  # ꙽霣5,.𑁂ᬁ
-xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ꙽‌霣5,.‌𑁂ᬁ; [C1, P1, V5, V6]; xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ; ;  # ꙽霣5,.𑁂ᬁ
-xn--2q5a751a653w.xn--4sf0725i; ꙽霣🄆.𑁂ᬁ; [V5, V6]; xn--2q5a751a653w.xn--4sf0725i; ; ;  # ꙽霣🄆.𑁂ᬁ
-xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; ꙽‌霣🄆.‌𑁂ᬁ; [C1, V5, V6]; xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; ; ;  # ꙽霣🄆.𑁂ᬁ
-兎｡ᠼ󠴜𑚶𑰿; 兎.ᠼ󠴜𑚶𑰿; [P1, V6]; xn--b5q.xn--v7e6041kqqd4m251b; ; ;  # 兎.ᠼ𑚶𑰿
-兎。ᠼ󠴜𑚶𑰿; 兎.ᠼ󠴜𑚶𑰿; [P1, V6]; xn--b5q.xn--v7e6041kqqd4m251b; ; ;  # 兎.ᠼ𑚶𑰿
-xn--b5q.xn--v7e6041kqqd4m251b; 兎.ᠼ󠴜𑚶𑰿; [V6]; xn--b5q.xn--v7e6041kqqd4m251b; ; ;  # 兎.ᠼ𑚶𑰿
-𝟙｡‍𝟸‍⁷; 1.‍2‍7; [C2]; 1.xn--27-l1tb; ; 1.27; [] # 1.27
-1。‍2‍7; 1.‍2‍7; [C2]; 1.xn--27-l1tb; ; 1.27; [] # 1.27
-1.27; ; ; ; ; ;  # 1.27
-1.xn--27-l1tb; 1.‍2‍7; [C2]; 1.xn--27-l1tb; ; ;  # 1.27
-ᡨ-｡󠻋𝟷; ᡨ-.󠻋1; [P1, V3, V6]; xn----z8j.xn--1-5671m; ; ;  # ᡨ-.1
-ᡨ-。󠻋1; ᡨ-.󠻋1; [P1, V3, V6]; xn----z8j.xn--1-5671m; ; ;  # ᡨ-.1
-xn----z8j.xn--1-5671m; ᡨ-.󠻋1; [V3, V6]; xn----z8j.xn--1-5671m; ; ;  # ᡨ-.1
-𑰻񵀐𐫚．٨⁹; 𑰻񵀐𐫚.٨9; [B1, P1, V5, V6]; xn--gx9cr01aul57i.xn--9-oqc; ; ;  # 𑰻𐫚.٨9
-𑰻񵀐𐫚.٨9; ; [B1, P1, V5, V6]; xn--gx9cr01aul57i.xn--9-oqc; ; ;  # 𑰻𐫚.٨9
-xn--gx9cr01aul57i.xn--9-oqc; 𑰻񵀐𐫚.٨9; [B1, V5, V6]; xn--gx9cr01aul57i.xn--9-oqc; ; ;  # 𑰻𐫚.٨9
-Ⴜ򈷭ྀ⾇。Ⴏ♀‌‌; Ⴜ򈷭ྀ舛.Ⴏ♀‌‌; [C1, P1, V6]; xn--zed54dz10wo343g.xn--nnd089ea464d; ; xn--zed54dz10wo343g.xn--nnd651i; [P1, V6] # Ⴜྀ舛.Ⴏ♀
-Ⴜ򈷭ྀ舛。Ⴏ♀‌‌; Ⴜ򈷭ྀ舛.Ⴏ♀‌‌; [C1, P1, V6]; xn--zed54dz10wo343g.xn--nnd089ea464d; ; xn--zed54dz10wo343g.xn--nnd651i; [P1, V6] # Ⴜྀ舛.Ⴏ♀
-ⴜ򈷭ྀ舛。ⴏ♀‌‌; ⴜ򈷭ྀ舛.ⴏ♀‌‌; [C1, P1, V6]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; xn--zed372mdj2do3v4h.xn--e5h11w; [P1, V6] # ⴜྀ舛.ⴏ♀
-xn--zed372mdj2do3v4h.xn--e5h11w; ⴜ򈷭ྀ舛.ⴏ♀; [V6]; xn--zed372mdj2do3v4h.xn--e5h11w; ; ;  # ⴜྀ舛.ⴏ♀
-xn--zed372mdj2do3v4h.xn--0uga678bgyh; ⴜ򈷭ྀ舛.ⴏ♀‌‌; [C1, V6]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; ;  # ⴜྀ舛.ⴏ♀
-xn--zed54dz10wo343g.xn--nnd651i; Ⴜ򈷭ྀ舛.Ⴏ♀; [V6]; xn--zed54dz10wo343g.xn--nnd651i; ; ;  # Ⴜྀ舛.Ⴏ♀
-xn--zed54dz10wo343g.xn--nnd089ea464d; Ⴜ򈷭ྀ舛.Ⴏ♀‌‌; [C1, V6]; xn--zed54dz10wo343g.xn--nnd089ea464d; ; ;  # Ⴜྀ舛.Ⴏ♀
-ⴜ򈷭ྀ⾇。ⴏ♀‌‌; ⴜ򈷭ྀ舛.ⴏ♀‌‌; [C1, P1, V6]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; xn--zed372mdj2do3v4h.xn--e5h11w; [P1, V6] # ⴜྀ舛.ⴏ♀
-𑁆𝟰.‍; 𑁆4.‍; [C2, V5]; xn--4-xu7i.xn--1ug; ; xn--4-xu7i.; [V5] # 𑁆4.
-𑁆4.‍; ; [C2, V5]; xn--4-xu7i.xn--1ug; ; xn--4-xu7i.; [V5] # 𑁆4.
-xn--4-xu7i.; 𑁆4.; [V5]; xn--4-xu7i.; ; ;  # 𑁆4.
-xn--4-xu7i.xn--1ug; 𑁆4.‍; [C2, V5]; xn--4-xu7i.xn--1ug; ; ;  # 𑁆4.
-񮴘Ⴞ癀｡𑘿‍‌붼; 񮴘Ⴞ癀.𑘿‍‌붼; [C1, P1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [P1, V5, V6] # Ⴞ癀.𑘿붼
-񮴘Ⴞ癀｡𑘿‍‌붼; 񮴘Ⴞ癀.𑘿‍‌붼; [C1, P1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [P1, V5, V6] # Ⴞ癀.𑘿붼
-񮴘Ⴞ癀。𑘿‍‌붼; 񮴘Ⴞ癀.𑘿‍‌붼; [C1, P1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [P1, V5, V6] # Ⴞ癀.𑘿붼
-񮴘Ⴞ癀。𑘿‍‌붼; 񮴘Ⴞ癀.𑘿‍‌붼; [C1, P1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; xn--2nd6803c7q37d.xn--et3bn23n; [P1, V5, V6] # Ⴞ癀.𑘿붼
-񮴘ⴞ癀。𑘿‍‌붼; 񮴘ⴞ癀.𑘿‍‌붼; [C1, P1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [P1, V5, V6] # ⴞ癀.𑘿붼
-񮴘ⴞ癀。𑘿‍‌붼; 񮴘ⴞ癀.𑘿‍‌붼; [C1, P1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [P1, V5, V6] # ⴞ癀.𑘿붼
-xn--mlju35u7qx2f.xn--et3bn23n; 񮴘ⴞ癀.𑘿붼; [V5, V6]; xn--mlju35u7qx2f.xn--et3bn23n; ; ;  # ⴞ癀.𑘿붼
-xn--mlju35u7qx2f.xn--0ugb6122js83c; 񮴘ⴞ癀.𑘿‍‌붼; [C1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; ;  # ⴞ癀.𑘿붼
-xn--2nd6803c7q37d.xn--et3bn23n; 񮴘Ⴞ癀.𑘿붼; [V5, V6]; xn--2nd6803c7q37d.xn--et3bn23n; ; ;  # Ⴞ癀.𑘿붼
-xn--2nd6803c7q37d.xn--0ugb6122js83c; 񮴘Ⴞ癀.𑘿‍‌붼; [C1, V5, V6]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; ;  # Ⴞ癀.𑘿붼
-񮴘ⴞ癀｡𑘿‍‌붼; 񮴘ⴞ癀.𑘿‍‌붼; [C1, P1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [P1, V5, V6] # ⴞ癀.𑘿붼
-񮴘ⴞ癀｡𑘿‍‌붼; 񮴘ⴞ癀.𑘿‍‌붼; [C1, P1, V5, V6]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [P1, V5, V6] # ⴞ癀.𑘿붼
-󚀅-்。ڹ; 󚀅-்.ڹ; [B6, P1, V6]; xn----mze84808x.xn--skb; ; ;  # -்.ڹ
-xn----mze84808x.xn--skb; 󚀅-்.ڹ; [B6, V6]; xn----mze84808x.xn--skb; ; ;  # -்.ڹ
-ᡃ𝟧≯ᠣ．氁񨏱ꁫ; ᡃ5≯ᠣ.氁񨏱ꁫ; [P1, V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ;  # ᡃ5≯ᠣ.氁ꁫ
-ᡃ𝟧≯ᠣ．氁񨏱ꁫ; ᡃ5≯ᠣ.氁񨏱ꁫ; [P1, V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ;  # ᡃ5≯ᠣ.氁ꁫ
-ᡃ5≯ᠣ.氁񨏱ꁫ; ; [P1, V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ;  # ᡃ5≯ᠣ.氁ꁫ
-ᡃ5≯ᠣ.氁񨏱ꁫ; ᡃ5≯ᠣ.氁񨏱ꁫ; [P1, V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ;  # ᡃ5≯ᠣ.氁ꁫ
-xn--5-24jyf768b.xn--lqw213ime95g; ᡃ5≯ᠣ.氁񨏱ꁫ; [V6]; xn--5-24jyf768b.xn--lqw213ime95g; ; ;  # ᡃ5≯ᠣ.氁ꁫ
-𐹬𝩇．ྲྀ; 𐹬𝩇.ྲྀ; [B1, B3, B6, V5]; xn--ko0d8295a.xn--zed3h; ; ;  # 𐹬𝩇.ྲྀ
-𐹬𝩇．ྲྀ; 𐹬𝩇.ྲྀ; [B1, B3, B6, V5]; xn--ko0d8295a.xn--zed3h; ; ;  # 𐹬𝩇.ྲྀ
-𐹬𝩇.ྲྀ; ; [B1, B3, B6, V5]; xn--ko0d8295a.xn--zed3h; ; ;  # 𐹬𝩇.ྲྀ
-xn--ko0d8295a.xn--zed3h; 𐹬𝩇.ྲྀ; [B1, B3, B6, V5]; xn--ko0d8295a.xn--zed3h; ; ;  # 𐹬𝩇.ྲྀ
--𑈶⒏．⒎𰛢󠎭; -𑈶⒏.⒎𰛢󠎭; [P1, V3, V6]; xn----scp6252h.xn--zshy411yzpx2d; ; ;  # -𑈶⒏.⒎𰛢
--𑈶8..7.𰛢󠎭; ; [P1, V3, V6, X4_2]; xn---8-bv5o..7.xn--c35nf1622b; [P1, V3, V6, A4_2]; ;  # -𑈶8..7.𰛢
-xn---8-bv5o..7.xn--c35nf1622b; -𑈶8..7.𰛢󠎭; [V3, V6, X4_2]; xn---8-bv5o..7.xn--c35nf1622b; [V3, V6, A4_2]; ;  # -𑈶8..7.𰛢
-xn----scp6252h.xn--zshy411yzpx2d; -𑈶⒏.⒎𰛢󠎭; [V3, V6]; xn----scp6252h.xn--zshy411yzpx2d; ; ;  # -𑈶⒏.⒎𰛢
-‌Ⴁ畝‍．≮; ‌Ⴁ畝‍.≮; [C1, C2, P1, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [P1, V6] # Ⴁ畝.≮
-‌Ⴁ畝‍．≮; ‌Ⴁ畝‍.≮; [C1, C2, P1, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [P1, V6] # Ⴁ畝.≮
-‌Ⴁ畝‍.≮; ; [C1, C2, P1, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [P1, V6] # Ⴁ畝.≮
-‌Ⴁ畝‍.≮; ‌Ⴁ畝‍.≮; [C1, C2, P1, V6]; xn--8md700fea3748f.xn--gdh; ; xn--8md0962c.xn--gdh; [P1, V6] # Ⴁ畝.≮
-‌ⴁ畝‍.≮; ‌ⴁ畝‍.≮; [C1, C2, P1, V6]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [P1, V6] # ⴁ畝.≮
-‌ⴁ畝‍.≮; ; [C1, C2, P1, V6]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [P1, V6] # ⴁ畝.≮
-xn--skjy82u.xn--gdh; ⴁ畝.≮; [V6]; xn--skjy82u.xn--gdh; ; ;  # ⴁ畝.≮
-xn--0ugc160hb36e.xn--gdh; ‌ⴁ畝‍.≮; [C1, C2, V6]; xn--0ugc160hb36e.xn--gdh; ; ;  # ⴁ畝.≮
-xn--8md0962c.xn--gdh; Ⴁ畝.≮; [V6]; xn--8md0962c.xn--gdh; ; ;  # Ⴁ畝.≮
-xn--8md700fea3748f.xn--gdh; ‌Ⴁ畝‍.≮; [C1, C2, V6]; xn--8md700fea3748f.xn--gdh; ; ;  # Ⴁ畝.≮
-‌ⴁ畝‍．≮; ‌ⴁ畝‍.≮; [C1, C2, P1, V6]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [P1, V6] # ⴁ畝.≮
-‌ⴁ畝‍．≮; ‌ⴁ畝‍.≮; [C1, C2, P1, V6]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [P1, V6] # ⴁ畝.≮
-歷｡𐹻≯󳛽‍; 歷.𐹻≯󳛽‍; [B1, C2, P1, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, P1, V6] # 歷.𐹻≯
-歷｡𐹻≯󳛽‍; 歷.𐹻≯󳛽‍; [B1, C2, P1, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, P1, V6] # 歷.𐹻≯
-歷。𐹻≯󳛽‍; 歷.𐹻≯󳛽‍; [B1, C2, P1, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, P1, V6] # 歷.𐹻≯
-歷。𐹻≯󳛽‍; 歷.𐹻≯󳛽‍; [B1, C2, P1, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, P1, V6] # 歷.𐹻≯
-xn--nmw.xn--hdh7804gdms2h; 歷.𐹻≯󳛽; [B1, V6]; xn--nmw.xn--hdh7804gdms2h; ; ;  # 歷.𐹻≯
-xn--nmw.xn--1ugx6gs128a1134j; 歷.𐹻≯󳛽‍; [B1, C2, V6]; xn--nmw.xn--1ugx6gs128a1134j; ; ;  # 歷.𐹻≯
-໋‍．鎁󠰑; ໋‍.鎁󠰑; [C2, P1, V5, V6]; xn--t8c059f.xn--iz4a43209d; ; xn--t8c.xn--iz4a43209d; [P1, V5, V6] # ໋.鎁
-໋‍.鎁󠰑; ; [C2, P1, V5, V6]; xn--t8c059f.xn--iz4a43209d; ; xn--t8c.xn--iz4a43209d; [P1, V5, V6] # ໋.鎁
-xn--t8c.xn--iz4a43209d; ໋.鎁󠰑; [V5, V6]; xn--t8c.xn--iz4a43209d; ; ;  # ໋.鎁
-xn--t8c059f.xn--iz4a43209d; ໋‍.鎁󠰑; [C2, V5, V6]; xn--t8c059f.xn--iz4a43209d; ; ;  # ໋.鎁
-‍‌𞤀｡𱘅𐶃; ‍‌𞤢.𱘅𐶃; [B1, B5, B6, C1, C2, P1, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, P1, V6] # 𞤢.
-‍‌𞤀。𱘅𐶃; ‍‌𞤢.𱘅𐶃; [B1, B5, B6, C1, C2, P1, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, P1, V6] # 𞤢.
-‍‌𞤢。𱘅𐶃; ‍‌𞤢.𱘅𐶃; [B1, B5, B6, C1, C2, P1, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, P1, V6] # 𞤢.
-xn--9d6h.xn--wh0dj799f; 𞤢.𱘅𐶃; [B5, B6, V6]; xn--9d6h.xn--wh0dj799f; ; ;  # 𞤢.
-xn--0ugb45126a.xn--wh0dj799f; ‍‌𞤢.𱘅𐶃; [B1, B5, B6, C1, C2, V6]; xn--0ugb45126a.xn--wh0dj799f; ; ;  # 𞤢.
-‍‌𞤢｡𱘅𐶃; ‍‌𞤢.𱘅𐶃; [B1, B5, B6, C1, C2, P1, V6]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6, P1, V6] # 𞤢.
-ب≠𝟫-.ς⒍𐹦≠; ب≠9-.ς⒍𐹦≠; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; xn--9--etd0100a.xn--4xa887mzpbzz04b;  # ب≠9-.ς⒍𐹦≠
-ب≠𝟫-.ς⒍𐹦≠; ب≠9-.ς⒍𐹦≠; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; xn--9--etd0100a.xn--4xa887mzpbzz04b;  # ب≠9-.ς⒍𐹦≠
-ب≠9-.ς6.𐹦≠; ; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g;  # ب≠9-.ς6.𐹦≠
-ب≠9-.ς6.𐹦≠; ب≠9-.ς6.𐹦≠; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g;  # ب≠9-.ς6.𐹦≠
-ب≠9-.Σ6.𐹦≠; ب≠9-.σ6.𐹦≠; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ;  # ب≠9-.σ6.𐹦≠
-ب≠9-.Σ6.𐹦≠; ب≠9-.σ6.𐹦≠; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ;  # ب≠9-.σ6.𐹦≠
-ب≠9-.σ6.𐹦≠; ; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ;  # ب≠9-.σ6.𐹦≠
-ب≠9-.σ6.𐹦≠; ب≠9-.σ6.𐹦≠; [B1, B3, P1, V3, V6]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ;  # ب≠9-.σ6.𐹦≠
-xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ب≠9-.σ6.𐹦≠; [B1, B3, V3, V6]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ;  # ب≠9-.σ6.𐹦≠
-xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ب≠9-.ς6.𐹦≠; [B1, B3, V3, V6]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; ;  # ب≠9-.ς6.𐹦≠
-ب≠𝟫-.Σ⒍𐹦≠; ب≠9-.σ⒍𐹦≠; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ;  # ب≠9-.σ⒍𐹦≠
-ب≠𝟫-.Σ⒍𐹦≠; ب≠9-.σ⒍𐹦≠; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ;  # ب≠9-.σ⒍𐹦≠
-ب≠𝟫-.σ⒍𐹦≠; ب≠9-.σ⒍𐹦≠; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ;  # ب≠9-.σ⒍𐹦≠
-ب≠𝟫-.σ⒍𐹦≠; ب≠9-.σ⒍𐹦≠; [B3, B5, B6, P1, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ;  # ب≠9-.σ⒍𐹦≠
-xn--9--etd0100a.xn--4xa887mzpbzz04b; ب≠9-.σ⒍𐹦≠; [B3, B5, B6, V3, V6]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ;  # ب≠9-.σ⒍𐹦≠
-xn--9--etd0100a.xn--3xa097mzpbzz04b; ب≠9-.ς⒍𐹦≠; [B3, B5, B6, V3, V6]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; ;  # ب≠9-.ς⒍𐹦≠
-򉛴.-ᡢ֒𝨠; ; [P1, V3, V6]; xn--ep37b.xn----hec165lho83b; ; ;  # .-ᡢ֒𝨠
-xn--ep37b.xn----hec165lho83b; 򉛴.-ᡢ֒𝨠; [V3, V6]; xn--ep37b.xn----hec165lho83b; ; ;  # .-ᡢ֒𝨠
-ۋ⒈ß󠄽。񷋍-; ۋ⒈ß.񷋍-; [B2, B3, B6, P1, V3, V6]; xn--zca541ato3a.xn----q001f; ; xn--ss-d7d6651a.xn----q001f;  # ۋ⒈ß.-
-ۋ1.ß󠄽。񷋍-; ۋ1.ß.񷋍-; [B6, P1, V3, V6]; xn--1-cwc.xn--zca.xn----q001f; ; xn--1-cwc.ss.xn----q001f;  # ۋ1.ß.-
-ۋ1.SS󠄽。񷋍-; ۋ1.ss.񷋍-; [B6, P1, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ;  # ۋ1.ss.-
-ۋ1.ss󠄽。񷋍-; ۋ1.ss.񷋍-; [B6, P1, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ;  # ۋ1.ss.-
-ۋ1.Ss󠄽。񷋍-; ۋ1.ss.񷋍-; [B6, P1, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ;  # ۋ1.ss.-
-xn--1-cwc.ss.xn----q001f; ۋ1.ss.񷋍-; [B6, V3, V6]; xn--1-cwc.ss.xn----q001f; ; ;  # ۋ1.ss.-
-xn--1-cwc.xn--zca.xn----q001f; ۋ1.ß.񷋍-; [B6, V3, V6]; xn--1-cwc.xn--zca.xn----q001f; ; ;  # ۋ1.ß.-
-ۋ⒈SS󠄽。񷋍-; ۋ⒈ss.񷋍-; [B2, B3, B6, P1, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ;  # ۋ⒈ss.-
-ۋ⒈ss󠄽。񷋍-; ۋ⒈ss.񷋍-; [B2, B3, B6, P1, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ;  # ۋ⒈ss.-
-ۋ⒈Ss󠄽。񷋍-; ۋ⒈ss.񷋍-; [B2, B3, B6, P1, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ;  # ۋ⒈ss.-
-xn--ss-d7d6651a.xn----q001f; ۋ⒈ss.񷋍-; [B2, B3, B6, V3, V6]; xn--ss-d7d6651a.xn----q001f; ; ;  # ۋ⒈ss.-
-xn--zca541ato3a.xn----q001f; ۋ⒈ß.񷋍-; [B2, B3, B6, V3, V6]; xn--zca541ato3a.xn----q001f; ; ;  # ۋ⒈ß.-
-𿀫．᮪ςႦ‍; 𿀫.᮪ςႦ‍; [C2, P1, V5, V6]; xn--nu4s.xn--3xa417dxriome; ; xn--nu4s.xn--4xa217dxri; [P1, V5, V6] # .᮪ςႦ
-𿀫.᮪ςႦ‍; ; [C2, P1, V5, V6]; xn--nu4s.xn--3xa417dxriome; ; xn--nu4s.xn--4xa217dxri; [P1, V5, V6] # .᮪ςႦ
-𿀫.᮪ςⴆ‍; ; [C2, P1, V5, V6]; xn--nu4s.xn--3xa353jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪ςⴆ
-𿀫.᮪ΣႦ‍; 𿀫.᮪σႦ‍; [C2, P1, V5, V6]; xn--nu4s.xn--4xa217dxriome; ; xn--nu4s.xn--4xa217dxri; [P1, V5, V6] # .᮪σႦ
-𿀫.᮪σⴆ‍; ; [C2, P1, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪σⴆ
-𿀫.᮪Σⴆ‍; 𿀫.᮪σⴆ‍; [C2, P1, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪σⴆ
-xn--nu4s.xn--4xa153j7im; 𿀫.᮪σⴆ; [V5, V6]; xn--nu4s.xn--4xa153j7im; ; ;  # .᮪σⴆ
-xn--nu4s.xn--4xa153jk8cs1q; 𿀫.᮪σⴆ‍; [C2, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; ;  # .᮪σⴆ
-xn--nu4s.xn--4xa217dxri; 𿀫.᮪σႦ; [V5, V6]; xn--nu4s.xn--4xa217dxri; ; ;  # .᮪σႦ
-xn--nu4s.xn--4xa217dxriome; 𿀫.᮪σႦ‍; [C2, V5, V6]; xn--nu4s.xn--4xa217dxriome; ; ;  # .᮪σႦ
-xn--nu4s.xn--3xa353jk8cs1q; 𿀫.᮪ςⴆ‍; [C2, V5, V6]; xn--nu4s.xn--3xa353jk8cs1q; ; ;  # .᮪ςⴆ
-xn--nu4s.xn--3xa417dxriome; 𿀫.᮪ςႦ‍; [C2, V5, V6]; xn--nu4s.xn--3xa417dxriome; ; ;  # .᮪ςႦ
-𿀫．᮪ςⴆ‍; 𿀫.᮪ςⴆ‍; [C2, P1, V5, V6]; xn--nu4s.xn--3xa353jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪ςⴆ
-𿀫．᮪ΣႦ‍; 𿀫.᮪σႦ‍; [C2, P1, V5, V6]; xn--nu4s.xn--4xa217dxriome; ; xn--nu4s.xn--4xa217dxri; [P1, V5, V6] # .᮪σႦ
-𿀫．᮪σⴆ‍; 𿀫.᮪σⴆ‍; [C2, P1, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪σⴆ
-𿀫．᮪Σⴆ‍; 𿀫.᮪σⴆ‍; [C2, P1, V5, V6]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [P1, V5, V6] # .᮪σⴆ
-⾆࣢.𝈴; 舌࣢.𝈴; [B1, B5, B6, P1, V6]; xn--l0b9413d.xn--kl1h; ; ;  # 舌.𝈴
-舌࣢.𝈴; ; [B1, B5, B6, P1, V6]; xn--l0b9413d.xn--kl1h; ; ;  # 舌.𝈴
-xn--l0b9413d.xn--kl1h; 舌࣢.𝈴; [B1, B5, B6, V6]; xn--l0b9413d.xn--kl1h; ; ;  # 舌.𝈴
-⫞𐹶𖫴。⭠⒈; ⫞𐹶𖫴.⭠⒈; [B1, P1, V6]; xn--53ix188et88b.xn--tsh52w; ; ;  # ⫞𐹶𖫴.⭠⒈
-⫞𐹶𖫴。⭠1.; ⫞𐹶𖫴.⭠1.; [B1]; xn--53ix188et88b.xn--1-h6r.; ; ;  # ⫞𐹶𖫴.⭠1.
-xn--53ix188et88b.xn--1-h6r.; ⫞𐹶𖫴.⭠1.; [B1]; xn--53ix188et88b.xn--1-h6r.; ; ;  # ⫞𐹶𖫴.⭠1.
-xn--53ix188et88b.xn--tsh52w; ⫞𐹶𖫴.⭠⒈; [B1, V6]; xn--53ix188et88b.xn--tsh52w; ; ;  # ⫞𐹶𖫴.⭠⒈
-⒈‌ꫬ︒．્; ⒈‌ꫬ︒.્; [C1, P1, V5, V6]; xn--0ug78o720myr1c.xn--mfc; ; xn--tsh0720cse8b.xn--mfc; [P1, V5, V6] # ⒈ꫬ︒.્
-1.‌ꫬ。.્; 1.‌ꫬ..્; [C1, V5, X4_2]; 1.xn--0ug7185c..xn--mfc; [C1, V5, A4_2]; 1.xn--sv9a..xn--mfc; [V5, A4_2] # 1.ꫬ..્
-1.xn--sv9a..xn--mfc; 1.ꫬ..્; [V5, X4_2]; 1.xn--sv9a..xn--mfc; [V5, A4_2]; ;  # 1.ꫬ..્
-1.xn--0ug7185c..xn--mfc; 1.‌ꫬ..્; [C1, V5, X4_2]; 1.xn--0ug7185c..xn--mfc; [C1, V5, A4_2]; ;  # 1.ꫬ..્
-xn--tsh0720cse8b.xn--mfc; ⒈ꫬ︒.્; [V5, V6]; xn--tsh0720cse8b.xn--mfc; ; ;  # ⒈ꫬ︒.્
-xn--0ug78o720myr1c.xn--mfc; ⒈‌ꫬ︒.્; [C1, V5, V6]; xn--0ug78o720myr1c.xn--mfc; ; ;  # ⒈ꫬ︒.્
-ె。䰀٨𞭅󠅼; ె.䰀٨𞭅; [B1, B3, B5, B6, P1, V5, V6]; xn--eqc.xn--hib5476aim6t; ; ;  # ె.䰀٨
-xn--eqc.xn--hib5476aim6t; ె.䰀٨𞭅; [B1, B3, B5, B6, V5, V6]; xn--eqc.xn--hib5476aim6t; ; ;  # ె.䰀٨
-ß‍.᯲񄾼; ; [C2, P1, V5, V6]; xn--zca870n.xn--0zf22107b; ; ss.xn--0zf22107b; [P1, V5, V6] # ß.᯲
-SS‍.᯲񄾼; ss‍.᯲񄾼; [C2, P1, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [P1, V5, V6] # ss.᯲
-ss‍.᯲񄾼; ; [C2, P1, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [P1, V5, V6] # ss.᯲
-Ss‍.᯲񄾼; ss‍.᯲񄾼; [C2, P1, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [P1, V5, V6] # ss.᯲
-ss.xn--0zf22107b; ss.᯲񄾼; [V5, V6]; ss.xn--0zf22107b; ; ;  # ss.᯲
-xn--ss-n1t.xn--0zf22107b; ss‍.᯲񄾼; [C2, V5, V6]; xn--ss-n1t.xn--0zf22107b; ; ;  # ss.᯲
-xn--zca870n.xn--0zf22107b; ß‍.᯲񄾼; [C2, V5, V6]; xn--zca870n.xn--0zf22107b; ; ;  # ß.᯲
-𑓂‌≮.≮; ; [P1, V5, V6]; xn--0ugy6glz29a.xn--gdh; ; xn--gdhz656g.xn--gdh;  # 𑓂≮.≮
-𑓂‌≮.≮; 𑓂‌≮.≮; [P1, V5, V6]; xn--0ugy6glz29a.xn--gdh; ; xn--gdhz656g.xn--gdh;  # 𑓂≮.≮
-xn--gdhz656g.xn--gdh; 𑓂≮.≮; [V5, V6]; xn--gdhz656g.xn--gdh; ; ;  # 𑓂≮.≮
-xn--0ugy6glz29a.xn--gdh; 𑓂‌≮.≮; [V5, V6]; xn--0ugy6glz29a.xn--gdh; ; ;  # 𑓂≮.≮
-🕼．ﾠ; 🕼.ﾠ; [P1, V6]; xn--my8h.xn--cl7c; ; ;  # 🕼.
-🕼.ᅠ; ; [P1, V6]; xn--my8h.xn--psd; ; ;  # 🕼.
-xn--my8h.xn--psd; 🕼.ᅠ; [V6]; xn--my8h.xn--psd; ; ;  # 🕼.
-xn--my8h.xn--cl7c; 🕼.ﾠ; [V6]; xn--my8h.xn--cl7c; ; ;  # 🕼.
-ᡔﶂ。񷘎; ᡔلحى.񷘎; [B5, B6, P1, V6]; xn--sgb9bq785p.xn--bc31b; ; ;  # ᡔلحى.
-ᡔلحى。񷘎; ᡔلحى.񷘎; [B5, B6, P1, V6]; xn--sgb9bq785p.xn--bc31b; ; ;  # ᡔلحى.
-xn--sgb9bq785p.xn--bc31b; ᡔلحى.񷘎; [B5, B6, V6]; xn--sgb9bq785p.xn--bc31b; ; ;  # ᡔلحى.
-爕򳙑．𝟰気; 爕򳙑.4気; [P1, V6]; xn--1zxq3199c.xn--4-678b; ; ;  # 爕.4気
-爕򳙑.4気; ; [P1, V6]; xn--1zxq3199c.xn--4-678b; ; ;  # 爕.4気
-xn--1zxq3199c.xn--4-678b; 爕򳙑.4気; [V6]; xn--1zxq3199c.xn--4-678b; ; ;  # 爕.4気
-⒋𑍍Ⴝ-．𞬪්ֵ; ⒋𑍍Ⴝ-.𞬪්ֵ; [B1, P1, V3, V6]; xn----t1g323mnk9t.xn--ddb152b7y23b; ; ;  # ⒋𑍍Ⴝ-.්ֵ
-4.𑍍Ⴝ-.𞬪්ֵ; ; [B1, B6, P1, V3, V5, V6]; 4.xn----t1g9869q.xn--ddb152b7y23b; ; ;  # 4.𑍍Ⴝ-.්ֵ
-4.𑍍ⴝ-.𞬪්ֵ; ; [B1, B6, P1, V3, V5, V6]; 4.xn----wwsx259f.xn--ddb152b7y23b; ; ;  # 4.𑍍ⴝ-.්ֵ
-4.xn----wwsx259f.xn--ddb152b7y23b; 4.𑍍ⴝ-.𞬪්ֵ; [B1, B6, V3, V5, V6]; 4.xn----wwsx259f.xn--ddb152b7y23b; ; ;  # 4.𑍍ⴝ-.්ֵ
-4.xn----t1g9869q.xn--ddb152b7y23b; 4.𑍍Ⴝ-.𞬪්ֵ; [B1, B6, V3, V5, V6]; 4.xn----t1g9869q.xn--ddb152b7y23b; ; ;  # 4.𑍍Ⴝ-.්ֵ
-⒋𑍍ⴝ-．𞬪්ֵ; ⒋𑍍ⴝ-.𞬪්ֵ; [B1, P1, V3, V6]; xn----jcp487avl3w.xn--ddb152b7y23b; ; ;  # ⒋𑍍ⴝ-.්ֵ
-xn----jcp487avl3w.xn--ddb152b7y23b; ⒋𑍍ⴝ-.𞬪්ֵ; [B1, V3, V6]; xn----jcp487avl3w.xn--ddb152b7y23b; ; ;  # ⒋𑍍ⴝ-.්ֵ
-xn----t1g323mnk9t.xn--ddb152b7y23b; ⒋𑍍Ⴝ-.𞬪්ֵ; [B1, V3, V6]; xn----t1g323mnk9t.xn--ddb152b7y23b; ; ;  # ⒋𑍍Ⴝ-.්ֵ
-󞝃。򑆃񉢗--; 󞝃.򑆃񉢗--; [P1, V2, V3, V6]; xn--2y75e.xn-----1l15eer88n; ; ;  # .--
-xn--2y75e.xn-----1l15eer88n; 󞝃.򑆃񉢗--; [V2, V3, V6]; xn--2y75e.xn-----1l15eer88n; ; ;  # .--
-‍ߟ｡‌꯭; ‍ߟ.‌꯭; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; xn--6sb.xn--429a; [B1, B3, B6, V5] # ߟ.꯭
-‍ߟ。‌꯭; ‍ߟ.‌꯭; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; xn--6sb.xn--429a; [B1, B3, B6, V5] # ߟ.꯭
-xn--6sb.xn--429a; ߟ.꯭; [B1, B3, B6, V5]; xn--6sb.xn--429a; ; ;  # ߟ.꯭
-xn--6sb394j.xn--0ug1126c; ‍ߟ.‌꯭; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; ;  # ߟ.꯭
-𞮽߿ࡎ｡ᢍ򝹁𐫘; 𞮽߿ࡎ.ᢍ򝹁𐫘; [B5, B6, P1, V6]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ;  # ߿ࡎ.ᢍ𐫘
-𞮽߿ࡎ。ᢍ򝹁𐫘; 𞮽߿ࡎ.ᢍ򝹁𐫘; [B5, B6, P1, V6]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ;  # ߿ࡎ.ᢍ𐫘
-xn--3tb2nz468k.xn--69e8615j5rn5d; 𞮽߿ࡎ.ᢍ򝹁𐫘; [B5, B6, V6]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ;  # ߿ࡎ.ᢍ𐫘
-ۭ𞺌𑄚᜔.ꡞࢷ; ۭم𑄚᜔.ꡞࢷ; [B1, B5, B6, V5]; xn--hhb94ag41b739u.xn--dzb5582f; ; ;  # ۭم𑄚᜔.ꡞࢷ
-ۭم𑄚᜔.ꡞࢷ; ; [B1, B5, B6, V5]; xn--hhb94ag41b739u.xn--dzb5582f; ; ;  # ۭم𑄚᜔.ꡞࢷ
-xn--hhb94ag41b739u.xn--dzb5582f; ۭم𑄚᜔.ꡞࢷ; [B1, B5, B6, V5]; xn--hhb94ag41b739u.xn--dzb5582f; ; ;  # ۭم𑄚᜔.ꡞࢷ
-񻂵킃𑘶ߜ｡ςؼς; 񻂵킃𑘶ߜ.ςؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.ςؼς
-񻂵킃𑘶ߜ｡ςؼς; 񻂵킃𑘶ߜ.ςؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.ςؼς
-񻂵킃𑘶ߜ。ςؼς; 񻂵킃𑘶ߜ.ςؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.ςؼς
-񻂵킃𑘶ߜ。ςؼς; 񻂵킃𑘶ߜ.ςؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.ςؼς
-񻂵킃𑘶ߜ。ΣؼΣ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ。ΣؼΣ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ。σؼσ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ。σؼσ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ。Σؼσ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ。Σؼσ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-xn--3sb7483hoyvbbe76g.xn--4xaa21q; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ。Σؼς; 񻂵킃𑘶ߜ.σؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
-񻂵킃𑘶ߜ。Σؼς; 񻂵킃𑘶ߜ.σؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
-񻂵킃𑘶ߜ。σؼς; 񻂵킃𑘶ߜ.σؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
-񻂵킃𑘶ߜ。σؼς; 񻂵킃𑘶ߜ.σؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
-xn--3sb7483hoyvbbe76g.xn--3xab31q; 񻂵킃𑘶ߜ.σؼς; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; ;  # 킃𑘶ߜ.σؼς
-xn--3sb7483hoyvbbe76g.xn--3xaa51q; 񻂵킃𑘶ߜ.ςؼς; [B5, B6, V6]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; ;  # 킃𑘶ߜ.ςؼς
-񻂵킃𑘶ߜ｡ΣؼΣ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ｡ΣؼΣ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ｡σؼσ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ｡σؼσ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ｡Σؼσ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ｡Σؼσ; 񻂵킃𑘶ߜ.σؼσ; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
-񻂵킃𑘶ߜ｡Σؼς; 񻂵킃𑘶ߜ.σؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
-񻂵킃𑘶ߜ｡Σؼς; 񻂵킃𑘶ߜ.σؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
-񻂵킃𑘶ߜ｡σؼς; 񻂵킃𑘶ߜ.σؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
-񻂵킃𑘶ߜ｡σؼς; 񻂵킃𑘶ߜ.σؼς; [B5, B6, P1, V6]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
-蔰。󠁹ࣝ-𑈵; 蔰.󠁹ࣝ-𑈵; [P1, V6]; xn--sz1a.xn----mrd9984r3dl0i; ; ;  # 蔰.ࣝ-𑈵
-xn--sz1a.xn----mrd9984r3dl0i; 蔰.󠁹ࣝ-𑈵; [V6]; xn--sz1a.xn----mrd9984r3dl0i; ; ;  # 蔰.ࣝ-𑈵
-ςჅ。ݚ; ςჅ.ݚ; [P1, V6]; xn--3xa677d.xn--epb; ; xn--4xa477d.xn--epb;  # ςჅ.ݚ
-ςⴥ。ݚ; ςⴥ.ݚ; ; xn--3xa403s.xn--epb; ; xn--4xa203s.xn--epb;  # ςⴥ.ݚ
-ΣჅ。ݚ; σჅ.ݚ; [P1, V6]; xn--4xa477d.xn--epb; ; ;  # σჅ.ݚ
-σⴥ。ݚ; σⴥ.ݚ; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
-Σⴥ。ݚ; σⴥ.ݚ; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
-xn--4xa203s.xn--epb; σⴥ.ݚ; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
-σⴥ.ݚ; ; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
-ΣჅ.ݚ; σჅ.ݚ; [P1, V6]; xn--4xa477d.xn--epb; ; ;  # σჅ.ݚ
-Σⴥ.ݚ; σⴥ.ݚ; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
-xn--4xa477d.xn--epb; σჅ.ݚ; [V6]; xn--4xa477d.xn--epb; ; ;  # σჅ.ݚ
-xn--3xa403s.xn--epb; ςⴥ.ݚ; ; xn--3xa403s.xn--epb; ; ;  # ςⴥ.ݚ
-ςⴥ.ݚ; ; ; xn--3xa403s.xn--epb; ; xn--4xa203s.xn--epb;  # ςⴥ.ݚ
-xn--3xa677d.xn--epb; ςჅ.ݚ; [V6]; xn--3xa677d.xn--epb; ; ;  # ςჅ.ݚ
-్Ⴉ𞰓．᭲; ్Ⴉ𞰓.᭲; [B1, B3, B6, P1, V5, V6]; xn--lqc64t7t26c.xn--dwf; ; ;  # ్Ⴉ.᭲
-్Ⴉ𞰓.᭲; ; [B1, B3, B6, P1, V5, V6]; xn--lqc64t7t26c.xn--dwf; ; ;  # ్Ⴉ.᭲
-్ⴉ𞰓.᭲; ; [B1, B3, B6, P1, V5, V6]; xn--lqc478nlr02a.xn--dwf; ; ;  # ్ⴉ.᭲
-xn--lqc478nlr02a.xn--dwf; ్ⴉ𞰓.᭲; [B1, B3, B6, V5, V6]; xn--lqc478nlr02a.xn--dwf; ; ;  # ్ⴉ.᭲
-xn--lqc64t7t26c.xn--dwf; ్Ⴉ𞰓.᭲; [B1, B3, B6, V5, V6]; xn--lqc64t7t26c.xn--dwf; ; ;  # ్Ⴉ.᭲
-్ⴉ𞰓．᭲; ్ⴉ𞰓.᭲; [B1, B3, B6, P1, V5, V6]; xn--lqc478nlr02a.xn--dwf; ; ;  # ్ⴉ.᭲
-⮷≮񎈴󠄟。𐠄; ⮷≮񎈴.𐠄; [B1, P1, V6]; xn--gdh877a3513h.xn--pc9c; ; ;  # ⮷≮.𐠄
-⮷≮񎈴󠄟。𐠄; ⮷≮񎈴.𐠄; [B1, P1, V6]; xn--gdh877a3513h.xn--pc9c; ; ;  # ⮷≮.𐠄
-xn--gdh877a3513h.xn--pc9c; ⮷≮񎈴.𐠄; [B1, V6]; xn--gdh877a3513h.xn--pc9c; ; ;  # ⮷≮.𐠄
-ڼ｡‍ẏ‌ᡤ; ڼ.‍ẏ‌ᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
-ڼ｡‍ẏ‌ᡤ; ڼ.‍ẏ‌ᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
-ڼ。‍ẏ‌ᡤ; ڼ.‍ẏ‌ᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
-ڼ。‍ẏ‌ᡤ; ڼ.‍ẏ‌ᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
-ڼ。‍Ẏ‌ᡤ; ڼ.‍ẏ‌ᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
-ڼ。‍Ẏ‌ᡤ; ڼ.‍ẏ‌ᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
-xn--vkb.xn--08e172a; ڼ.ẏᡤ; ; xn--vkb.xn--08e172a; ; ;  # ڼ.ẏᡤ
-ڼ.ẏᡤ; ; ; xn--vkb.xn--08e172a; ; ;  # ڼ.ẏᡤ
-ڼ.ẏᡤ; ڼ.ẏᡤ; ; xn--vkb.xn--08e172a; ; ;  # ڼ.ẏᡤ
-ڼ.Ẏᡤ; ڼ.ẏᡤ; ; xn--vkb.xn--08e172a; ; ;  # ڼ.ẏᡤ
-ڼ.Ẏᡤ; ڼ.ẏᡤ; ; xn--vkb.xn--08e172a; ; ;  # ڼ.ẏᡤ
-xn--vkb.xn--08e172ax6aca; ڼ.‍ẏ‌ᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; ;  # ڼ.ẏᡤ
-ڼ｡‍Ẏ‌ᡤ; ڼ.‍ẏ‌ᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
-ڼ｡‍Ẏ‌ᡤ; ڼ.‍ẏ‌ᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
-𐹹𑲛。񑂐්; 𐹹𑲛.񑂐්; [B1, P1, V6]; xn--xo0dg5v.xn--h1c39876d; ; ;  # 𐹹𑲛.්
-xn--xo0dg5v.xn--h1c39876d; 𐹹𑲛.񑂐්; [B1, V6]; xn--xo0dg5v.xn--h1c39876d; ; ;  # 𐹹𑲛.්
--≠𑈵｡嵕ﻱ۴꥓; -≠𑈵.嵕ي۴꥓; [B1, B5, P1, V3, V6]; xn----ufo4749h.xn--mhb45a235sns3c; ; ;  # -≠𑈵.嵕ي۴꥓
--≠𑈵｡嵕ﻱ۴꥓; -≠𑈵.嵕ي۴꥓; [B1, B5, P1, V3, V6]; xn----ufo4749h.xn--mhb45a235sns3c; ; ;  # -≠𑈵.嵕ي۴꥓
--≠𑈵。嵕ي۴꥓; -≠𑈵.嵕ي۴꥓; [B1, B5, P1, V3, V6]; xn----ufo4749h.xn--mhb45a235sns3c; ; ;  # -≠𑈵.嵕ي۴꥓
--≠𑈵。嵕ي۴꥓; -≠𑈵.嵕ي۴꥓; [B1, B5, P1, V3, V6]; xn----ufo4749h.xn--mhb45a235sns3c; ; ;  # -≠𑈵.嵕ي۴꥓
-xn----ufo4749h.xn--mhb45a235sns3c; -≠𑈵.嵕ي۴꥓; [B1, B5, V3, V6]; xn----ufo4749h.xn--mhb45a235sns3c; ; ;  # -≠𑈵.嵕ي۴꥓
-‌񍸰𐹶ݮ．ہ‍≯‍; ‌񍸰𐹶ݮ.ہ‍≯‍; [B1, B3, C1, C2, P1, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, P1, V6] # 𐹶ݮ.ہ≯
-‌񍸰𐹶ݮ．ہ‍≯‍; ‌񍸰𐹶ݮ.ہ‍≯‍; [B1, B3, C1, C2, P1, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, P1, V6] # 𐹶ݮ.ہ≯
-‌񍸰𐹶ݮ.ہ‍≯‍; ; [B1, B3, C1, C2, P1, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, P1, V6] # 𐹶ݮ.ہ≯
-‌񍸰𐹶ݮ.ہ‍≯‍; ‌񍸰𐹶ݮ.ہ‍≯‍; [B1, B3, C1, C2, P1, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, P1, V6] # 𐹶ݮ.ہ≯
-xn--ypb5875khz9y.xn--0kb682l; 񍸰𐹶ݮ.ہ≯; [B3, B5, B6, V6]; xn--ypb5875khz9y.xn--0kb682l; ; ;  # 𐹶ݮ.ہ≯
-xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ‌񍸰𐹶ݮ.ہ‍≯‍; [B1, B3, C1, C2, V6]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; ;  # 𐹶ݮ.ہ≯
-≮．឵ࡕ𐫔; ≮.឵ࡕ𐫔; [B1, P1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ;  # ≮.ࡕ𐫔
-≮．឵ࡕ𐫔; ≮.឵ࡕ𐫔; [B1, P1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ;  # ≮.ࡕ𐫔
-≮.឵ࡕ𐫔; ; [B1, P1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ;  # ≮.ࡕ𐫔
-≮.឵ࡕ𐫔; ≮.឵ࡕ𐫔; [B1, P1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ;  # ≮.ࡕ𐫔
-xn--gdh.xn--kwb589e217p; ≮.឵ࡕ𐫔; [B1, V5, V6]; xn--gdh.xn--kwb589e217p; ; ;  # ≮.ࡕ𐫔
-𐩗‍｡ႩႵ; 𐩗‍.ႩႵ; [B3, C2, P1, V6]; xn--1ug4933g.xn--hndy; ; xn--pt9c.xn--hndy; [P1, V6] # 𐩗.ႩႵ
-𐩗‍。ႩႵ; 𐩗‍.ႩႵ; [B3, C2, P1, V6]; xn--1ug4933g.xn--hndy; ; xn--pt9c.xn--hndy; [P1, V6] # 𐩗.ႩႵ
-𐩗‍。ⴉⴕ; 𐩗‍.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; xn--pt9c.xn--0kjya; [] # 𐩗.ⴉⴕ
-𐩗‍。Ⴉⴕ; 𐩗‍.Ⴉⴕ; [B3, C2, P1, V6]; xn--1ug4933g.xn--hnd666l; ; xn--pt9c.xn--hnd666l; [P1, V6] # 𐩗.Ⴉⴕ
-xn--pt9c.xn--hnd666l; 𐩗.Ⴉⴕ; [V6]; xn--pt9c.xn--hnd666l; ; ;  # 𐩗.Ⴉⴕ
-xn--1ug4933g.xn--hnd666l; 𐩗‍.Ⴉⴕ; [B3, C2, V6]; xn--1ug4933g.xn--hnd666l; ; ;  # 𐩗.Ⴉⴕ
+𐹣񄷄｡ꡬ🄄; 𐹣񄷄.ꡬ3,; [B1, B6, V7, U1]; xn--bo0d0203l.xn--3,-yj9h; ; ;  # 𐹣.ꡬ3,
+𐹣񄷄。ꡬ3,; 𐹣񄷄.ꡬ3,; [B1, B6, V7, U1]; xn--bo0d0203l.xn--3,-yj9h; ; ;  # 𐹣.ꡬ3,
+xn--bo0d0203l.xn--3,-yj9h; 𐹣񄷄.ꡬ3,; [B1, B6, V7, U1]; xn--bo0d0203l.xn--3,-yj9h; ; ;  # 𐹣.ꡬ3,
+xn--bo0d0203l.xn--id9a4443d; 𐹣񄷄.ꡬ🄄; [B1, V7]; xn--bo0d0203l.xn--id9a4443d; ; ;  # 𐹣.ꡬ🄄
+-\u0C4D𞾀𑲓｡\u200D\u0D4D; -\u0C4D𞾀𑲓.\u200D\u0D4D; [B1, C2, V3, V7]; xn----x6e0220sclug.xn--wxc317g; ; xn----x6e0220sclug.xn--wxc; [B1, V3, V6, V7] # -్𑲓.്
+-\u0C4D𞾀𑲓。\u200D\u0D4D; -\u0C4D𞾀𑲓.\u200D\u0D4D; [B1, C2, V3, V7]; xn----x6e0220sclug.xn--wxc317g; ; xn----x6e0220sclug.xn--wxc; [B1, V3, V6, V7] # -్𑲓.്
+xn----x6e0220sclug.xn--wxc; -\u0C4D𞾀𑲓.\u0D4D; [B1, V3, V6, V7]; xn----x6e0220sclug.xn--wxc; ; ;  # -్𑲓.്
+xn----x6e0220sclug.xn--wxc317g; -\u0C4D𞾀𑲓.\u200D\u0D4D; [B1, C2, V3, V7]; xn----x6e0220sclug.xn--wxc317g; ; ;  # -్𑲓.്
+\uA67D\u200C霣🄆｡\u200C𑁂\u1B01; \uA67D\u200C霣5,.\u200C𑁂\u1B01; [C1, V6, U1]; xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ; xn--5,-op8g373c.xn--4sf0725i; [V6, U1] # ꙽霣5,.𑁂ᬁ
+\uA67D\u200C霣🄆｡\u200C𑁂\u1B01; \uA67D\u200C霣5,.\u200C𑁂\u1B01; [C1, V6, U1]; xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ; xn--5,-op8g373c.xn--4sf0725i; [V6, U1] # ꙽霣5,.𑁂ᬁ
+\uA67D\u200C霣5,。\u200C𑁂\u1B01; \uA67D\u200C霣5,.\u200C𑁂\u1B01; [C1, V6, U1]; xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ; xn--5,-op8g373c.xn--4sf0725i; [V6, U1] # ꙽霣5,.𑁂ᬁ
+xn--5,-op8g373c.xn--4sf0725i; \uA67D霣5,.𑁂\u1B01; [V6, U1]; xn--5,-op8g373c.xn--4sf0725i; ; ;  # ꙽霣5,.𑁂ᬁ
+xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; \uA67D\u200C霣5,.\u200C𑁂\u1B01; [C1, V6, U1]; xn--5,-i1tz135dnbqa.xn--4sf36u6u4w; ; ;  # ꙽霣5,.𑁂ᬁ
+xn--2q5a751a653w.xn--4sf0725i; \uA67D霣🄆.𑁂\u1B01; [V6, V7]; xn--2q5a751a653w.xn--4sf0725i; ; ;  # ꙽霣🄆.𑁂ᬁ
+xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; \uA67D\u200C霣🄆.\u200C𑁂\u1B01; [C1, V6, V7]; xn--0ug4208b2vjuk63a.xn--4sf36u6u4w; ; ;  # ꙽霣🄆.𑁂ᬁ
+兎｡ᠼ󠴜𑚶𑰿; 兎.ᠼ󠴜𑚶𑰿; [V7]; xn--b5q.xn--v7e6041kqqd4m251b; ; ;  # 兎.ᠼ𑚶𑰿
+兎。ᠼ󠴜𑚶𑰿; 兎.ᠼ󠴜𑚶𑰿; [V7]; xn--b5q.xn--v7e6041kqqd4m251b; ; ;  # 兎.ᠼ𑚶𑰿
+xn--b5q.xn--v7e6041kqqd4m251b; 兎.ᠼ󠴜𑚶𑰿; [V7]; xn--b5q.xn--v7e6041kqqd4m251b; ; ;  # 兎.ᠼ𑚶𑰿
+𝟙｡\u200D𝟸\u200D⁷; 1.\u200D2\u200D7; [C2]; 1.xn--27-l1tb; ; 1.27; [] # 1.27
+1。\u200D2\u200D7; 1.\u200D2\u200D7; [C2]; 1.xn--27-l1tb; ; 1.27; [] # 1.27
+1.2h; ; ; ; ; ;  # 1.2h
+1.xn--27-l1tb; 1.\u200D2\u200D7; [C2]; 1.xn--27-l1tb; ; ;  # 1.27
+ᡨ-｡󠻋𝟷; ᡨ-.󠻋1; [V3, V7]; xn----z8j.xn--1-5671m; ; ;  # ᡨ-.1
+ᡨ-。󠻋1; ᡨ-.󠻋1; [V3, V7]; xn----z8j.xn--1-5671m; ; ;  # ᡨ-.1
+xn----z8j.xn--1-5671m; ᡨ-.󠻋1; [V3, V7]; xn----z8j.xn--1-5671m; ; ;  # ᡨ-.1
+𑰻񵀐𐫚．\u0668⁹; 𑰻񵀐𐫚.\u06689; [B1, V6, V7]; xn--gx9cr01aul57i.xn--9-oqc; ; ;  # 𑰻𐫚.٨9
+𑰻񵀐𐫚.\u06689; ; [B1, V6, V7]; xn--gx9cr01aul57i.xn--9-oqc; ; ;  # 𑰻𐫚.٨9
+xn--gx9cr01aul57i.xn--9-oqc; 𑰻񵀐𐫚.\u06689; [B1, V6, V7]; xn--gx9cr01aul57i.xn--9-oqc; ; ;  # 𑰻𐫚.٨9
+Ⴜ򈷭\u0F80⾇。Ⴏ♀\u200C\u200C; ⴜ򈷭\u0F80舛.ⴏ♀\u200C\u200C; [C1, V7]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; xn--zed372mdj2do3v4h.xn--e5h11w; [V7] # ⴜྀ舛.ⴏ♀
+Ⴜ򈷭\u0F80舛。Ⴏ♀\u200C\u200C; ⴜ򈷭\u0F80舛.ⴏ♀\u200C\u200C; [C1, V7]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; xn--zed372mdj2do3v4h.xn--e5h11w; [V7] # ⴜྀ舛.ⴏ♀
+ⴜ򈷭\u0F80舛。ⴏ♀\u200C\u200C; ⴜ򈷭\u0F80舛.ⴏ♀\u200C\u200C; [C1, V7]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; xn--zed372mdj2do3v4h.xn--e5h11w; [V7] # ⴜྀ舛.ⴏ♀
+xn--zed372mdj2do3v4h.xn--e5h11w; ⴜ򈷭\u0F80舛.ⴏ♀; [V7]; xn--zed372mdj2do3v4h.xn--e5h11w; ; ;  # ⴜྀ舛.ⴏ♀
+xn--zed372mdj2do3v4h.xn--0uga678bgyh; ⴜ򈷭\u0F80舛.ⴏ♀\u200C\u200C; [C1, V7]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; ;  # ⴜྀ舛.ⴏ♀
+ⴜ򈷭\u0F80⾇。ⴏ♀\u200C\u200C; ⴜ򈷭\u0F80舛.ⴏ♀\u200C\u200C; [C1, V7]; xn--zed372mdj2do3v4h.xn--0uga678bgyh; ; xn--zed372mdj2do3v4h.xn--e5h11w; [V7] # ⴜྀ舛.ⴏ♀
+xn--zed54dz10wo343g.xn--nnd651i; Ⴜ򈷭\u0F80舛.Ⴏ♀; [V7]; xn--zed54dz10wo343g.xn--nnd651i; ; ;  # Ⴜྀ舛.Ⴏ♀
+xn--zed54dz10wo343g.xn--nnd089ea464d; Ⴜ򈷭\u0F80舛.Ⴏ♀\u200C\u200C; [C1, V7]; xn--zed54dz10wo343g.xn--nnd089ea464d; ; ;  # Ⴜྀ舛.Ⴏ♀
+𑁆𝟰.\u200D; 𑁆4.\u200D; [C2, V6]; xn--4-xu7i.xn--1ug; ; xn--4-xu7i.; [V6, A4_2] # 𑁆4.
+𑁆4.\u200D; ; [C2, V6]; xn--4-xu7i.xn--1ug; ; xn--4-xu7i.; [V6, A4_2] # 𑁆4.
+xn--4-xu7i.; 𑁆4.; [V6]; xn--4-xu7i.; [V6, A4_2]; ;  # 𑁆4.
+xn--4-xu7i.xn--1ug; 𑁆4.\u200D; [C2, V6]; xn--4-xu7i.xn--1ug; ; ;  # 𑁆4.
+񮴘Ⴞ癀｡𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V6, V7]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V6, V7] # ⴞ癀.𑘿붼
+񮴘Ⴞ癀｡𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V6, V7]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V6, V7] # ⴞ癀.𑘿붼
+񮴘Ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V6, V7]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V6, V7] # ⴞ癀.𑘿붼
+񮴘Ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V6, V7]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V6, V7] # ⴞ癀.𑘿붼
+񮴘ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V6, V7]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V6, V7] # ⴞ癀.𑘿붼
+񮴘ⴞ癀。𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V6, V7]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V6, V7] # ⴞ癀.𑘿붼
+xn--mlju35u7qx2f.xn--et3bn23n; 񮴘ⴞ癀.𑘿붼; [V6, V7]; xn--mlju35u7qx2f.xn--et3bn23n; ; ;  # ⴞ癀.𑘿붼
+xn--mlju35u7qx2f.xn--0ugb6122js83c; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V6, V7]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; ;  # ⴞ癀.𑘿붼
+񮴘ⴞ癀｡𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V6, V7]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V6, V7] # ⴞ癀.𑘿붼
+񮴘ⴞ癀｡𑘿\u200D\u200C붼; 񮴘ⴞ癀.𑘿\u200D\u200C붼; [C1, V6, V7]; xn--mlju35u7qx2f.xn--0ugb6122js83c; ; xn--mlju35u7qx2f.xn--et3bn23n; [V6, V7] # ⴞ癀.𑘿붼
+xn--2nd6803c7q37d.xn--et3bn23n; 񮴘Ⴞ癀.𑘿붼; [V6, V7]; xn--2nd6803c7q37d.xn--et3bn23n; ; ;  # Ⴞ癀.𑘿붼
+xn--2nd6803c7q37d.xn--0ugb6122js83c; 񮴘Ⴞ癀.𑘿\u200D\u200C붼; [C1, V6, V7]; xn--2nd6803c7q37d.xn--0ugb6122js83c; ; ;  # Ⴞ癀.𑘿붼
+󚀅-\u0BCD。\u06B9; 󚀅-\u0BCD.\u06B9; [B6, V7]; xn----mze84808x.xn--skb; ; ;  # -்.ڹ
+xn----mze84808x.xn--skb; 󚀅-\u0BCD.\u06B9; [B6, V7]; xn----mze84808x.xn--skb; ; ;  # -்.ڹ
+ᡃ𝟧≯ᠣ．氁񨏱ꁫ; ᡃ5≯ᠣ.氁񨏱ꁫ; [V7]; xn--5-24jyf768b.xn--lqw213ime95g; ; ;  # ᡃ5≯ᠣ.氁ꁫ
+ᡃ𝟧>\u0338ᠣ．氁񨏱ꁫ; ᡃ5≯ᠣ.氁񨏱ꁫ; [V7]; xn--5-24jyf768b.xn--lqw213ime95g; ; ;  # ᡃ5≯ᠣ.氁ꁫ
+ᡃ5≯ᠣ.氁񨏱ꁫ; ; [V7]; xn--5-24jyf768b.xn--lqw213ime95g; ; ;  # ᡃ5≯ᠣ.氁ꁫ
+ᡃ5>\u0338ᠣ.氁񨏱ꁫ; ᡃ5≯ᠣ.氁񨏱ꁫ; [V7]; xn--5-24jyf768b.xn--lqw213ime95g; ; ;  # ᡃ5≯ᠣ.氁ꁫ
+xn--5-24jyf768b.xn--lqw213ime95g; ᡃ5≯ᠣ.氁񨏱ꁫ; [V7]; xn--5-24jyf768b.xn--lqw213ime95g; ; ;  # ᡃ5≯ᠣ.氁ꁫ
+𐹬𝩇．\u0F76; 𐹬𝩇.\u0FB2\u0F80; [B1, V6]; xn--ko0d8295a.xn--zed3h; ; ;  # 𐹬𝩇.ྲྀ
+𐹬𝩇．\u0FB2\u0F80; 𐹬𝩇.\u0FB2\u0F80; [B1, V6]; xn--ko0d8295a.xn--zed3h; ; ;  # 𐹬𝩇.ྲྀ
+𐹬𝩇.\u0FB2\u0F80; ; [B1, V6]; xn--ko0d8295a.xn--zed3h; ; ;  # 𐹬𝩇.ྲྀ
+xn--ko0d8295a.xn--zed3h; 𐹬𝩇.\u0FB2\u0F80; [B1, V6]; xn--ko0d8295a.xn--zed3h; ; ;  # 𐹬𝩇.ྲྀ
+-𑈶⒏．⒎𰛢󠎭; -𑈶⒏.⒎𰛢󠎭; [V3, V7]; xn----scp6252h.xn--zshy411yzpx2d; ; ;  # -𑈶⒏.⒎𰛢
+-𑈶8..7.𰛢󠎭; ; [V3, V7, X4_2]; xn---8-bv5o..7.xn--c35nf1622b; [V3, V7, A4_2]; ;  # -𑈶8..7.𰛢
+xn---8-bv5o..7.xn--c35nf1622b; -𑈶8..7.𰛢󠎭; [V3, V7, X4_2]; xn---8-bv5o..7.xn--c35nf1622b; [V3, V7, A4_2]; ;  # -𑈶8..7.𰛢
+xn----scp6252h.xn--zshy411yzpx2d; -𑈶⒏.⒎𰛢󠎭; [V3, V7]; xn----scp6252h.xn--zshy411yzpx2d; ; ;  # -𑈶⒏.⒎𰛢
+\u200CႡ畝\u200D．≮; \u200Cⴁ畝\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # ⴁ畝.≮
+\u200CႡ畝\u200D．<\u0338; \u200Cⴁ畝\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # ⴁ畝.≮
+\u200CႡ畝\u200D.≮; \u200Cⴁ畝\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # ⴁ畝.≮
+\u200CႡ畝\u200D.<\u0338; \u200Cⴁ畝\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # ⴁ畝.≮
+\u200Cⴁ畝\u200D.<\u0338; \u200Cⴁ畝\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # ⴁ畝.≮
+\u200Cⴁ畝\u200D.≮; ; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # ⴁ畝.≮
+xn--skjy82u.xn--gdh; ⴁ畝.≮; ; xn--skjy82u.xn--gdh; ; ;  # ⴁ畝.≮
+ⴁ畝.≮; ; ; xn--skjy82u.xn--gdh; ; ;  # ⴁ畝.≮
+ⴁ畝.<\u0338; ⴁ畝.≮; ; xn--skjy82u.xn--gdh; ; ;  # ⴁ畝.≮
+Ⴁ畝.<\u0338; ⴁ畝.≮; ; xn--skjy82u.xn--gdh; ; ;  # ⴁ畝.≮
+Ⴁ畝.≮; ⴁ畝.≮; ; xn--skjy82u.xn--gdh; ; ;  # ⴁ畝.≮
+xn--0ugc160hb36e.xn--gdh; \u200Cⴁ畝\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; ;  # ⴁ畝.≮
+\u200Cⴁ畝\u200D．<\u0338; \u200Cⴁ畝\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # ⴁ畝.≮
+\u200Cⴁ畝\u200D．≮; \u200Cⴁ畝\u200D.≮; [C1, C2]; xn--0ugc160hb36e.xn--gdh; ; xn--skjy82u.xn--gdh; [] # ⴁ畝.≮
+xn--8md0962c.xn--gdh; Ⴁ畝.≮; [V7]; xn--8md0962c.xn--gdh; ; ;  # Ⴁ畝.≮
+xn--8md700fea3748f.xn--gdh; \u200CႡ畝\u200D.≮; [C1, C2, V7]; xn--8md700fea3748f.xn--gdh; ; ;  # Ⴁ畝.≮
+歷｡𐹻≯󳛽\u200D; 歷.𐹻≯󳛽\u200D; [B1, C2, V7]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, V7] # 歷.𐹻≯
+歷｡𐹻>\u0338󳛽\u200D; 歷.𐹻≯󳛽\u200D; [B1, C2, V7]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, V7] # 歷.𐹻≯
+歷。𐹻≯󳛽\u200D; 歷.𐹻≯󳛽\u200D; [B1, C2, V7]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, V7] # 歷.𐹻≯
+歷。𐹻>\u0338󳛽\u200D; 歷.𐹻≯󳛽\u200D; [B1, C2, V7]; xn--nmw.xn--1ugx6gs128a1134j; ; xn--nmw.xn--hdh7804gdms2h; [B1, V7] # 歷.𐹻≯
+xn--nmw.xn--hdh7804gdms2h; 歷.𐹻≯󳛽; [B1, V7]; xn--nmw.xn--hdh7804gdms2h; ; ;  # 歷.𐹻≯
+xn--nmw.xn--1ugx6gs128a1134j; 歷.𐹻≯󳛽\u200D; [B1, C2, V7]; xn--nmw.xn--1ugx6gs128a1134j; ; ;  # 歷.𐹻≯
+\u0ECB\u200D．鎁󠰑; \u0ECB\u200D.鎁󠰑; [C2, V6, V7]; xn--t8c059f.xn--iz4a43209d; ; xn--t8c.xn--iz4a43209d; [V6, V7] # ໋.鎁
+\u0ECB\u200D.鎁󠰑; ; [C2, V6, V7]; xn--t8c059f.xn--iz4a43209d; ; xn--t8c.xn--iz4a43209d; [V6, V7] # ໋.鎁
+xn--t8c.xn--iz4a43209d; \u0ECB.鎁󠰑; [V6, V7]; xn--t8c.xn--iz4a43209d; ; ;  # ໋.鎁
+xn--t8c059f.xn--iz4a43209d; \u0ECB\u200D.鎁󠰑; [C2, V6, V7]; xn--t8c059f.xn--iz4a43209d; ; ;  # ໋.鎁
+\u200D\u200C𞤀｡𱘅𐶃; \u200D\u200C𞤢.𱘅𐶃; [B1, B5, B6, C1, C2]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6] # 𞤢.𱘅𐶃
+\u200D\u200C𞤀。𱘅𐶃; \u200D\u200C𞤢.𱘅𐶃; [B1, B5, B6, C1, C2]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6] # 𞤢.𱘅𐶃
+\u200D\u200C𞤢。𱘅𐶃; \u200D\u200C𞤢.𱘅𐶃; [B1, B5, B6, C1, C2]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6] # 𞤢.𱘅𐶃
+\u200D\u200C𞤀。𱘅𐵣; \u200D\u200C𞤢.𱘅𐶃; [B1, B5, B6, C1, C2]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6] # 𞤢.𱘅𐶃
+xn--9d6h.xn--wh0dj799f; 𞤢.𱘅𐶃; [B5, B6]; xn--9d6h.xn--wh0dj799f; ; ;  # 𞤢.𱘅𐶃
+xn--0ugb45126a.xn--wh0dj799f; \u200D\u200C𞤢.𱘅𐶃; [B1, B5, B6, C1, C2]; xn--0ugb45126a.xn--wh0dj799f; ; ;  # 𞤢.𱘅𐶃
+\u200D\u200C𞤢｡𱘅𐶃; \u200D\u200C𞤢.𱘅𐶃; [B1, B5, B6, C1, C2]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6] # 𞤢.𱘅𐶃
+\u200D\u200C𞤀｡𱘅𐵣; \u200D\u200C𞤢.𱘅𐶃; [B1, B5, B6, C1, C2]; xn--0ugb45126a.xn--wh0dj799f; ; xn--9d6h.xn--wh0dj799f; [B5, B6] # 𞤢.𱘅𐶃
+\u0628≠𝟫-.ς⒍𐹦≠; \u0628≠9-.ς⒍𐹦≠; [B3, B5, B6, V3, V7]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; xn--9--etd0100a.xn--4xa887mzpbzz04b;  # ب≠9-.ς⒍𐹦≠
+\u0628=\u0338𝟫-.ς⒍𐹦=\u0338; \u0628≠9-.ς⒍𐹦≠; [B3, B5, B6, V3, V7]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; xn--9--etd0100a.xn--4xa887mzpbzz04b;  # ب≠9-.ς⒍𐹦≠
+\u0628≠9-.ς6.𐹦≠; ; [B1, B3, V3]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g;  # ب≠9-.ς6.𐹦≠
+\u0628=\u03389-.ς6.𐹦=\u0338; \u0628≠9-.ς6.𐹦≠; [B1, B3, V3]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g;  # ب≠9-.ς6.𐹦≠
+\u0628=\u03389-.Σ6.𐹦=\u0338; \u0628≠9-.σ6.𐹦≠; [B1, B3, V3]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ;  # ب≠9-.σ6.𐹦≠
+\u0628≠9-.Σ6.𐹦≠; \u0628≠9-.σ6.𐹦≠; [B1, B3, V3]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ;  # ب≠9-.σ6.𐹦≠
+\u0628≠9-.σ6.𐹦≠; ; [B1, B3, V3]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ;  # ب≠9-.σ6.𐹦≠
+\u0628=\u03389-.σ6.𐹦=\u0338; \u0628≠9-.σ6.𐹦≠; [B1, B3, V3]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ;  # ب≠9-.σ6.𐹦≠
+xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; \u0628≠9-.σ6.𐹦≠; [B1, B3, V3]; xn--9--etd0100a.xn--6-zmb.xn--1ch8704g; ; ;  # ب≠9-.σ6.𐹦≠
+xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; \u0628≠9-.ς6.𐹦≠; [B1, B3, V3]; xn--9--etd0100a.xn--6-xmb.xn--1ch8704g; ; ;  # ب≠9-.ς6.𐹦≠
+\u0628=\u0338𝟫-.Σ⒍𐹦=\u0338; \u0628≠9-.σ⒍𐹦≠; [B3, B5, B6, V3, V7]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ;  # ب≠9-.σ⒍𐹦≠
+\u0628≠𝟫-.Σ⒍𐹦≠; \u0628≠9-.σ⒍𐹦≠; [B3, B5, B6, V3, V7]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ;  # ب≠9-.σ⒍𐹦≠
+\u0628≠𝟫-.σ⒍𐹦≠; \u0628≠9-.σ⒍𐹦≠; [B3, B5, B6, V3, V7]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ;  # ب≠9-.σ⒍𐹦≠
+\u0628=\u0338𝟫-.σ⒍𐹦=\u0338; \u0628≠9-.σ⒍𐹦≠; [B3, B5, B6, V3, V7]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ;  # ب≠9-.σ⒍𐹦≠
+xn--9--etd0100a.xn--4xa887mzpbzz04b; \u0628≠9-.σ⒍𐹦≠; [B3, B5, B6, V3, V7]; xn--9--etd0100a.xn--4xa887mzpbzz04b; ; ;  # ب≠9-.σ⒍𐹦≠
+xn--9--etd0100a.xn--3xa097mzpbzz04b; \u0628≠9-.ς⒍𐹦≠; [B3, B5, B6, V3, V7]; xn--9--etd0100a.xn--3xa097mzpbzz04b; ; ;  # ب≠9-.ς⒍𐹦≠
+򉛴.-ᡢ\u0592𝨠; ; [V3, V7]; xn--ep37b.xn----hec165lho83b; ; ;  # .-ᡢ֒𝨠
+xn--ep37b.xn----hec165lho83b; 򉛴.-ᡢ\u0592𝨠; [V3, V7]; xn--ep37b.xn----hec165lho83b; ; ;  # .-ᡢ֒𝨠
+\u06CB⒈ß󠄽。񷋍-; \u06CB⒈ß.񷋍-; [B2, B3, B6, V3, V7]; xn--zca541ato3a.xn----q001f; ; xn--ss-d7d6651a.xn----q001f;  # ۋ⒈ß.-
+\u06CB1.ß󠄽。񷋍-; \u06CB1.ß.񷋍-; [B6, V3, V7]; xn--1-cwc.xn--zca.xn----q001f; ; xn--1-cwc.ss.xn----q001f;  # ۋ1.ß.-
+\u06CB1.SS󠄽。񷋍-; \u06CB1.ss.񷋍-; [B6, V3, V7]; xn--1-cwc.ss.xn----q001f; ; ;  # ۋ1.ss.-
+\u06CB1.ss󠄽。񷋍-; \u06CB1.ss.񷋍-; [B6, V3, V7]; xn--1-cwc.ss.xn----q001f; ; ;  # ۋ1.ss.-
+\u06CB1.Ss󠄽。񷋍-; \u06CB1.ss.񷋍-; [B6, V3, V7]; xn--1-cwc.ss.xn----q001f; ; ;  # ۋ1.ss.-
+xn--1-cwc.ss.xn----q001f; \u06CB1.ss.񷋍-; [B6, V3, V7]; xn--1-cwc.ss.xn----q001f; ; ;  # ۋ1.ss.-
+xn--1-cwc.xn--zca.xn----q001f; \u06CB1.ß.񷋍-; [B6, V3, V7]; xn--1-cwc.xn--zca.xn----q001f; ; ;  # ۋ1.ß.-
+\u06CB⒈SS󠄽。񷋍-; \u06CB⒈ss.񷋍-; [B2, B3, B6, V3, V7]; xn--ss-d7d6651a.xn----q001f; ; ;  # ۋ⒈ss.-
+\u06CB⒈ss󠄽。񷋍-; \u06CB⒈ss.񷋍-; [B2, B3, B6, V3, V7]; xn--ss-d7d6651a.xn----q001f; ; ;  # ۋ⒈ss.-
+\u06CB⒈Ss󠄽。񷋍-; \u06CB⒈ss.񷋍-; [B2, B3, B6, V3, V7]; xn--ss-d7d6651a.xn----q001f; ; ;  # ۋ⒈ss.-
+xn--ss-d7d6651a.xn----q001f; \u06CB⒈ss.񷋍-; [B2, B3, B6, V3, V7]; xn--ss-d7d6651a.xn----q001f; ; ;  # ۋ⒈ss.-
+xn--zca541ato3a.xn----q001f; \u06CB⒈ß.񷋍-; [B2, B3, B6, V3, V7]; xn--zca541ato3a.xn----q001f; ; ;  # ۋ⒈ß.-
+𿀫．\u1BAAςႦ\u200D; 𿀫.\u1BAAςⴆ\u200D; [C2, V6, V7]; xn--nu4s.xn--3xa353jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V6, V7] # .᮪ςⴆ
+𿀫.\u1BAAςႦ\u200D; 𿀫.\u1BAAςⴆ\u200D; [C2, V6, V7]; xn--nu4s.xn--3xa353jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V6, V7] # .᮪ςⴆ
+𿀫.\u1BAAςⴆ\u200D; ; [C2, V6, V7]; xn--nu4s.xn--3xa353jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V6, V7] # .᮪ςⴆ
+𿀫.\u1BAAΣႦ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, V6, V7]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V6, V7] # .᮪σⴆ
+𿀫.\u1BAAσⴆ\u200D; ; [C2, V6, V7]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V6, V7] # .᮪σⴆ
+𿀫.\u1BAAΣⴆ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, V6, V7]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V6, V7] # .᮪σⴆ
+xn--nu4s.xn--4xa153j7im; 𿀫.\u1BAAσⴆ; [V6, V7]; xn--nu4s.xn--4xa153j7im; ; ;  # .᮪σⴆ
+xn--nu4s.xn--4xa153jk8cs1q; 𿀫.\u1BAAσⴆ\u200D; [C2, V6, V7]; xn--nu4s.xn--4xa153jk8cs1q; ; ;  # .᮪σⴆ
+xn--nu4s.xn--3xa353jk8cs1q; 𿀫.\u1BAAςⴆ\u200D; [C2, V6, V7]; xn--nu4s.xn--3xa353jk8cs1q; ; ;  # .᮪ςⴆ
+𿀫．\u1BAAςⴆ\u200D; 𿀫.\u1BAAςⴆ\u200D; [C2, V6, V7]; xn--nu4s.xn--3xa353jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V6, V7] # .᮪ςⴆ
+𿀫．\u1BAAΣႦ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, V6, V7]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V6, V7] # .᮪σⴆ
+𿀫．\u1BAAσⴆ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, V6, V7]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V6, V7] # .᮪σⴆ
+𿀫．\u1BAAΣⴆ\u200D; 𿀫.\u1BAAσⴆ\u200D; [C2, V6, V7]; xn--nu4s.xn--4xa153jk8cs1q; ; xn--nu4s.xn--4xa153j7im; [V6, V7] # .᮪σⴆ
+xn--nu4s.xn--4xa217dxri; 𿀫.\u1BAAσႦ; [V6, V7]; xn--nu4s.xn--4xa217dxri; ; ;  # .᮪σႦ
+xn--nu4s.xn--4xa217dxriome; 𿀫.\u1BAAσႦ\u200D; [C2, V6, V7]; xn--nu4s.xn--4xa217dxriome; ; ;  # .᮪σႦ
+xn--nu4s.xn--3xa417dxriome; 𿀫.\u1BAAςႦ\u200D; [C2, V6, V7]; xn--nu4s.xn--3xa417dxriome; ; ;  # .᮪ςႦ
+⾆\u08E2.𝈴; 舌\u08E2.𝈴; [B1, B5, B6, V7]; xn--l0b9413d.xn--kl1h; ; ;  # 舌.𝈴
+舌\u08E2.𝈴; ; [B1, B5, B6, V7]; xn--l0b9413d.xn--kl1h; ; ;  # 舌.𝈴
+xn--l0b9413d.xn--kl1h; 舌\u08E2.𝈴; [B1, B5, B6, V7]; xn--l0b9413d.xn--kl1h; ; ;  # 舌.𝈴
+⫞𐹶𖫴。⭠⒈; ⫞𐹶𖫴.⭠⒈; [B1, V7]; xn--53ix188et88b.xn--tsh52w; ; ;  # ⫞𐹶𖫴.⭠⒈
+⫞𐹶𖫴。⭠1.; ⫞𐹶𖫴.⭠1.; [B1]; xn--53ix188et88b.xn--1-h6r.; [B1, A4_2]; ;  # ⫞𐹶𖫴.⭠1.
+xn--53ix188et88b.xn--1-h6r.; ⫞𐹶𖫴.⭠1.; [B1]; xn--53ix188et88b.xn--1-h6r.; [B1, A4_2]; ;  # ⫞𐹶𖫴.⭠1.
+xn--53ix188et88b.xn--tsh52w; ⫞𐹶𖫴.⭠⒈; [B1, V7]; xn--53ix188et88b.xn--tsh52w; ; ;  # ⫞𐹶𖫴.⭠⒈
+⒈\u200C\uAAEC︒．\u0ACD; ⒈\u200C\uAAEC︒.\u0ACD; [C1, V6, V7]; xn--0ug78o720myr1c.xn--mfc; ; xn--tsh0720cse8b.xn--mfc; [V6, V7] # ⒈ꫬ︒.્
+1.\u200C\uAAEC。.\u0ACD; 1.\u200C\uAAEC..\u0ACD; [C1, V6, X4_2]; 1.xn--0ug7185c..xn--mfc; [C1, V6, A4_2]; 1.xn--sv9a..xn--mfc; [V6, A4_2] # 1.ꫬ..્
+1.xn--sv9a..xn--mfc; 1.\uAAEC..\u0ACD; [V6, X4_2]; 1.xn--sv9a..xn--mfc; [V6, A4_2]; ;  # 1.ꫬ..્
+1.xn--0ug7185c..xn--mfc; 1.\u200C\uAAEC..\u0ACD; [C1, V6, X4_2]; 1.xn--0ug7185c..xn--mfc; [C1, V6, A4_2]; ;  # 1.ꫬ..્
+xn--tsh0720cse8b.xn--mfc; ⒈\uAAEC︒.\u0ACD; [V6, V7]; xn--tsh0720cse8b.xn--mfc; ; ;  # ⒈ꫬ︒.્
+xn--0ug78o720myr1c.xn--mfc; ⒈\u200C\uAAEC︒.\u0ACD; [C1, V6, V7]; xn--0ug78o720myr1c.xn--mfc; ; ;  # ⒈ꫬ︒.્
+\u0C46。䰀\u0668𞭅󠅼; \u0C46.䰀\u0668𞭅; [B1, B5, B6, V6, V7]; xn--eqc.xn--hib5476aim6t; ; ;  # ె.䰀٨
+xn--eqc.xn--hib5476aim6t; \u0C46.䰀\u0668𞭅; [B1, B5, B6, V6, V7]; xn--eqc.xn--hib5476aim6t; ; ;  # ె.䰀٨
+ß\u200D.\u1BF2񄾼; ; [C2, V6, V7]; xn--zca870n.xn--0zf22107b; ; ss.xn--0zf22107b; [V6, V7] # ß.᯲
+SS\u200D.\u1BF2񄾼; ss\u200D.\u1BF2񄾼; [C2, V6, V7]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [V6, V7] # ss.᯲
+ss\u200D.\u1BF2񄾼; ; [C2, V6, V7]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [V6, V7] # ss.᯲
+Ss\u200D.\u1BF2񄾼; ss\u200D.\u1BF2񄾼; [C2, V6, V7]; xn--ss-n1t.xn--0zf22107b; ; ss.xn--0zf22107b; [V6, V7] # ss.᯲
+ss.xn--0zf22107b; ss.\u1BF2񄾼; [V6, V7]; ss.xn--0zf22107b; ; ;  # ss.᯲
+xn--ss-n1t.xn--0zf22107b; ss\u200D.\u1BF2񄾼; [C2, V6, V7]; xn--ss-n1t.xn--0zf22107b; ; ;  # ss.᯲
+xn--zca870n.xn--0zf22107b; ß\u200D.\u1BF2񄾼; [C2, V6, V7]; xn--zca870n.xn--0zf22107b; ; ;  # ß.᯲
+𑓂\u200C≮.≮; ; [V6]; xn--0ugy6glz29a.xn--gdh; ; xn--gdhz656g.xn--gdh;  # 𑓂≮.≮
+𑓂\u200C<\u0338.<\u0338; 𑓂\u200C≮.≮; [V6]; xn--0ugy6glz29a.xn--gdh; ; xn--gdhz656g.xn--gdh;  # 𑓂≮.≮
+xn--gdhz656g.xn--gdh; 𑓂≮.≮; [V6]; xn--gdhz656g.xn--gdh; ; ;  # 𑓂≮.≮
+xn--0ugy6glz29a.xn--gdh; 𑓂\u200C≮.≮; [V6]; xn--0ugy6glz29a.xn--gdh; ; ;  # 𑓂≮.≮
+🕼．\uFFA0; 🕼.; ; xn--my8h.; [A4_2]; ;  # 🕼.
+🕼.\u1160; 🕼.; ; xn--my8h.; [A4_2]; ;  # 🕼.
+xn--my8h.; 🕼.; ; xn--my8h.; [A4_2]; ;  # 🕼.
+🕼.; ; ; xn--my8h.; [A4_2]; ;  # 🕼.
+xn--my8h.xn--psd; 🕼.\u1160; [V7]; xn--my8h.xn--psd; ; ;  # 🕼.
+xn--my8h.xn--cl7c; 🕼.\uFFA0; [V7]; xn--my8h.xn--cl7c; ; ;  # 🕼.
+ᡔ\uFD82。񷘎; ᡔ\u0644\u062D\u0649.񷘎; [B5, B6, V7]; xn--sgb9bq785p.xn--bc31b; ; ;  # ᡔلحى.
+ᡔ\u0644\u062D\u0649。񷘎; ᡔ\u0644\u062D\u0649.񷘎; [B5, B6, V7]; xn--sgb9bq785p.xn--bc31b; ; ;  # ᡔلحى.
+xn--sgb9bq785p.xn--bc31b; ᡔ\u0644\u062D\u0649.񷘎; [B5, B6, V7]; xn--sgb9bq785p.xn--bc31b; ; ;  # ᡔلحى.
+爕򳙑．𝟰気; 爕򳙑.4気; [V7]; xn--1zxq3199c.xn--4-678b; ; ;  # 爕.4気
+爕򳙑.4気; ; [V7]; xn--1zxq3199c.xn--4-678b; ; ;  # 爕.4気
+xn--1zxq3199c.xn--4-678b; 爕򳙑.4気; [V7]; xn--1zxq3199c.xn--4-678b; ; ;  # 爕.4気
+⒋𑍍Ⴝ-．𞬪\u0DCA\u05B5; ⒋𑍍ⴝ-.𞬪\u0DCA\u05B5; [B1, V3, V7]; xn----jcp487avl3w.xn--ddb152b7y23b; ; ;  # ⒋𑍍ⴝ-.්ֵ
+4.𑍍Ⴝ-.𞬪\u0DCA\u05B5; 4.𑍍ⴝ-.𞬪\u0DCA\u05B5; [B1, B6, V3, V6, V7]; 4.xn----wwsx259f.xn--ddb152b7y23b; ; ;  # 4.𑍍ⴝ-.්ֵ
+4.𑍍ⴝ-.𞬪\u0DCA\u05B5; ; [B1, B6, V3, V6, V7]; 4.xn----wwsx259f.xn--ddb152b7y23b; ; ;  # 4.𑍍ⴝ-.්ֵ
+4.xn----wwsx259f.xn--ddb152b7y23b; 4.𑍍ⴝ-.𞬪\u0DCA\u05B5; [B1, B6, V3, V6, V7]; 4.xn----wwsx259f.xn--ddb152b7y23b; ; ;  # 4.𑍍ⴝ-.්ֵ
+⒋𑍍ⴝ-．𞬪\u0DCA\u05B5; ⒋𑍍ⴝ-.𞬪\u0DCA\u05B5; [B1, V3, V7]; xn----jcp487avl3w.xn--ddb152b7y23b; ; ;  # ⒋𑍍ⴝ-.්ֵ
+xn----jcp487avl3w.xn--ddb152b7y23b; ⒋𑍍ⴝ-.𞬪\u0DCA\u05B5; [B1, V3, V7]; xn----jcp487avl3w.xn--ddb152b7y23b; ; ;  # ⒋𑍍ⴝ-.්ֵ
+4.xn----t1g9869q.xn--ddb152b7y23b; 4.𑍍Ⴝ-.𞬪\u0DCA\u05B5; [B1, B6, V3, V6, V7]; 4.xn----t1g9869q.xn--ddb152b7y23b; ; ;  # 4.𑍍Ⴝ-.්ֵ
+xn----t1g323mnk9t.xn--ddb152b7y23b; ⒋𑍍Ⴝ-.𞬪\u0DCA\u05B5; [B1, V3, V7]; xn----t1g323mnk9t.xn--ddb152b7y23b; ; ;  # ⒋𑍍Ⴝ-.්ֵ
+󞝃。򑆃񉢗--; 󞝃.򑆃񉢗--; [V2, V3, V7]; xn--2y75e.xn-----1l15eer88n; ; ;  # .--
+xn--2y75e.xn-----1l15eer88n; 󞝃.򑆃񉢗--; [V2, V3, V7]; xn--2y75e.xn-----1l15eer88n; ; ;  # .--
+\u200D\u07DF｡\u200C\uABED; \u200D\u07DF.\u200C\uABED; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; xn--6sb.xn--429a; [B1, V6] # ߟ.꯭
+\u200D\u07DF。\u200C\uABED; \u200D\u07DF.\u200C\uABED; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; xn--6sb.xn--429a; [B1, V6] # ߟ.꯭
+xn--6sb.xn--429a; \u07DF.\uABED; [B1, V6]; xn--6sb.xn--429a; ; ;  # ߟ.꯭
+xn--6sb394j.xn--0ug1126c; \u200D\u07DF.\u200C\uABED; [B1, C1, C2]; xn--6sb394j.xn--0ug1126c; ; ;  # ߟ.꯭
+𞮽\u07FF\u084E｡ᢍ򝹁𐫘; 𞮽\u07FF\u084E.ᢍ򝹁𐫘; [B5, B6, V7]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ;  # ߿ࡎ.ᢍ𐫘
+𞮽\u07FF\u084E。ᢍ򝹁𐫘; 𞮽\u07FF\u084E.ᢍ򝹁𐫘; [B5, B6, V7]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ;  # ߿ࡎ.ᢍ𐫘
+xn--3tb2nz468k.xn--69e8615j5rn5d; 𞮽\u07FF\u084E.ᢍ򝹁𐫘; [B5, B6, V7]; xn--3tb2nz468k.xn--69e8615j5rn5d; ; ;  # ߿ࡎ.ᢍ𐫘
+\u06ED𞺌𑄚\u1714.ꡞ\u08B7; \u06ED\u0645𑄚\u1714.ꡞ\u08B7; [B1, B5, B6, V6]; xn--hhb94ag41b739u.xn--dzb5582f; ; ;  # ۭم𑄚᜔.ꡞࢷ
+\u06ED\u0645𑄚\u1714.ꡞ\u08B7; ; [B1, B5, B6, V6]; xn--hhb94ag41b739u.xn--dzb5582f; ; ;  # ۭم𑄚᜔.ꡞࢷ
+xn--hhb94ag41b739u.xn--dzb5582f; \u06ED\u0645𑄚\u1714.ꡞ\u08B7; [B1, B5, B6, V6]; xn--hhb94ag41b739u.xn--dzb5582f; ; ;  # ۭم𑄚᜔.ꡞࢷ
+񻂵킃𑘶\u07DC｡ς\u063Cς; 񻂵킃𑘶\u07DC.ς\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.ςؼς
+񻂵킃𑘶\u07DC｡ς\u063Cς; 񻂵킃𑘶\u07DC.ς\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.ςؼς
+񻂵킃𑘶\u07DC。ς\u063Cς; 񻂵킃𑘶\u07DC.ς\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.ςؼς
+񻂵킃𑘶\u07DC。ς\u063Cς; 񻂵킃𑘶\u07DC.ς\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.ςؼς
+񻂵킃𑘶\u07DC。Σ\u063CΣ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。Σ\u063CΣ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。Σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。Σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+xn--3sb7483hoyvbbe76g.xn--4xaa21q; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC。Σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
+񻂵킃𑘶\u07DC。Σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
+񻂵킃𑘶\u07DC。σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
+񻂵킃𑘶\u07DC。σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
+xn--3sb7483hoyvbbe76g.xn--3xab31q; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; ;  # 킃𑘶ߜ.σؼς
+xn--3sb7483hoyvbbe76g.xn--3xaa51q; 񻂵킃𑘶\u07DC.ς\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xaa51q; ; ;  # 킃𑘶ߜ.ςؼς
+񻂵킃𑘶\u07DC｡Σ\u063CΣ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC｡Σ\u063CΣ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC｡σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC｡σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC｡Σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC｡Σ\u063Cσ; 񻂵킃𑘶\u07DC.σ\u063Cσ; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--4xaa21q; ; ;  # 킃𑘶ߜ.σؼσ
+񻂵킃𑘶\u07DC｡Σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
+񻂵킃𑘶\u07DC｡Σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
+񻂵킃𑘶\u07DC｡σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
+񻂵킃𑘶\u07DC｡σ\u063Cς; 񻂵킃𑘶\u07DC.σ\u063Cς; [B5, B6, V7]; xn--3sb7483hoyvbbe76g.xn--3xab31q; ; xn--3sb7483hoyvbbe76g.xn--4xaa21q;  # 킃𑘶ߜ.σؼς
+蔰。󠁹\u08DD-𑈵; 蔰.󠁹\u08DD-𑈵; [V7]; xn--sz1a.xn----mrd9984r3dl0i; ; ;  # 蔰.ࣝ-𑈵
+xn--sz1a.xn----mrd9984r3dl0i; 蔰.󠁹\u08DD-𑈵; [V7]; xn--sz1a.xn----mrd9984r3dl0i; ; ;  # 蔰.ࣝ-𑈵
+ςჅ。\u075A; ςⴥ.\u075A; ; xn--3xa403s.xn--epb; ; xn--4xa203s.xn--epb;  # ςⴥ.ݚ
+ςⴥ。\u075A; ςⴥ.\u075A; ; xn--3xa403s.xn--epb; ; xn--4xa203s.xn--epb;  # ςⴥ.ݚ
+ΣჅ。\u075A; σⴥ.\u075A; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
+σⴥ。\u075A; σⴥ.\u075A; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
+Σⴥ。\u075A; σⴥ.\u075A; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
+xn--4xa203s.xn--epb; σⴥ.\u075A; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
+σⴥ.\u075A; ; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
+ΣჅ.\u075A; σⴥ.\u075A; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
+Σⴥ.\u075A; σⴥ.\u075A; ; xn--4xa203s.xn--epb; ; ;  # σⴥ.ݚ
+xn--3xa403s.xn--epb; ςⴥ.\u075A; ; xn--3xa403s.xn--epb; ; ;  # ςⴥ.ݚ
+ςⴥ.\u075A; ; ; xn--3xa403s.xn--epb; ; xn--4xa203s.xn--epb;  # ςⴥ.ݚ
+xn--4xa477d.xn--epb; σჅ.\u075A; [V7]; xn--4xa477d.xn--epb; ; ;  # σჅ.ݚ
+xn--3xa677d.xn--epb; ςჅ.\u075A; [V7]; xn--3xa677d.xn--epb; ; ;  # ςჅ.ݚ
+\u0C4DႩ𞰓．\u1B72; \u0C4Dⴉ𞰓.\u1B72; [B1, V6, V7]; xn--lqc478nlr02a.xn--dwf; ; ;  # ్ⴉ.᭲
+\u0C4DႩ𞰓.\u1B72; \u0C4Dⴉ𞰓.\u1B72; [B1, V6, V7]; xn--lqc478nlr02a.xn--dwf; ; ;  # ్ⴉ.᭲
+\u0C4Dⴉ𞰓.\u1B72; ; [B1, V6, V7]; xn--lqc478nlr02a.xn--dwf; ; ;  # ్ⴉ.᭲
+xn--lqc478nlr02a.xn--dwf; \u0C4Dⴉ𞰓.\u1B72; [B1, V6, V7]; xn--lqc478nlr02a.xn--dwf; ; ;  # ్ⴉ.᭲
+\u0C4Dⴉ𞰓．\u1B72; \u0C4Dⴉ𞰓.\u1B72; [B1, V6, V7]; xn--lqc478nlr02a.xn--dwf; ; ;  # ్ⴉ.᭲
+xn--lqc64t7t26c.xn--dwf; \u0C4DႩ𞰓.\u1B72; [B1, V6, V7]; xn--lqc64t7t26c.xn--dwf; ; ;  # ్Ⴉ.᭲
+⮷≮񎈴󠄟。𐠄; ⮷≮񎈴.𐠄; [B1, V7]; xn--gdh877a3513h.xn--pc9c; ; ;  # ⮷≮.𐠄
+⮷<\u0338񎈴󠄟。𐠄; ⮷≮񎈴.𐠄; [B1, V7]; xn--gdh877a3513h.xn--pc9c; ; ;  # ⮷≮.𐠄
+xn--gdh877a3513h.xn--pc9c; ⮷≮񎈴.𐠄; [B1, V7]; xn--gdh877a3513h.xn--pc9c; ; ;  # ⮷≮.𐠄
+\u06BC｡\u200Dẏ\u200Cᡤ; \u06BC.\u200Dẏ\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
+\u06BC｡\u200Dy\u0307\u200Cᡤ; \u06BC.\u200Dẏ\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
+\u06BC。\u200Dẏ\u200Cᡤ; \u06BC.\u200Dẏ\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
+\u06BC。\u200Dy\u0307\u200Cᡤ; \u06BC.\u200Dẏ\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
+\u06BC。\u200DY\u0307\u200Cᡤ; \u06BC.\u200Dẏ\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
+\u06BC。\u200DẎ\u200Cᡤ; \u06BC.\u200Dẏ\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
+xn--vkb.xn--08e172a; \u06BC.ẏᡤ; ; xn--vkb.xn--08e172a; ; ;  # ڼ.ẏᡤ
+\u06BC.ẏᡤ; ; ; xn--vkb.xn--08e172a; ; ;  # ڼ.ẏᡤ
+\u06BC.y\u0307ᡤ; \u06BC.ẏᡤ; ; xn--vkb.xn--08e172a; ; ;  # ڼ.ẏᡤ
+\u06BC.Y\u0307ᡤ; \u06BC.ẏᡤ; ; xn--vkb.xn--08e172a; ; ;  # ڼ.ẏᡤ
+\u06BC.Ẏᡤ; \u06BC.ẏᡤ; ; xn--vkb.xn--08e172a; ; ;  # ڼ.ẏᡤ
+xn--vkb.xn--08e172ax6aca; \u06BC.\u200Dẏ\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; ;  # ڼ.ẏᡤ
+\u06BC｡\u200DY\u0307\u200Cᡤ; \u06BC.\u200Dẏ\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
+\u06BC｡\u200DẎ\u200Cᡤ; \u06BC.\u200Dẏ\u200Cᡤ; [B1, C1, C2]; xn--vkb.xn--08e172ax6aca; ; xn--vkb.xn--08e172a; [] # ڼ.ẏᡤ
+𐹹𑲛。񑂐\u0DCA; 𐹹𑲛.񑂐\u0DCA; [B1, V7]; xn--xo0dg5v.xn--h1c39876d; ; ;  # 𐹹𑲛.්
+xn--xo0dg5v.xn--h1c39876d; 𐹹𑲛.񑂐\u0DCA; [B1, V7]; xn--xo0dg5v.xn--h1c39876d; ; ;  # 𐹹𑲛.්
+-≠𑈵｡嵕\uFEF1۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3]; xn----ufo4749h.xn--mhb45a235sns3c; ; ;  # -≠𑈵.嵕ي۴꥓
+-=\u0338𑈵｡嵕\uFEF1۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3]; xn----ufo4749h.xn--mhb45a235sns3c; ; ;  # -≠𑈵.嵕ي۴꥓
+-≠𑈵。嵕\u064A۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3]; xn----ufo4749h.xn--mhb45a235sns3c; ; ;  # -≠𑈵.嵕ي۴꥓
+-=\u0338𑈵。嵕\u064A۴\uA953; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3]; xn----ufo4749h.xn--mhb45a235sns3c; ; ;  # -≠𑈵.嵕ي۴꥓
+xn----ufo4749h.xn--mhb45a235sns3c; -≠𑈵.嵕\u064A۴\uA953; [B1, B5, V3]; xn----ufo4749h.xn--mhb45a235sns3c; ; ;  # -≠𑈵.嵕ي۴꥓
+\u200C񍸰𐹶\u076E．\u06C1\u200D≯\u200D; \u200C񍸰𐹶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, V7]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, V7] # 𐹶ݮ.ہ≯
+\u200C񍸰𐹶\u076E．\u06C1\u200D>\u0338\u200D; \u200C񍸰𐹶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, V7]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, V7] # 𐹶ݮ.ہ≯
+\u200C񍸰𐹶\u076E.\u06C1\u200D≯\u200D; ; [B1, B3, C1, C2, V7]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, V7] # 𐹶ݮ.ہ≯
+\u200C񍸰𐹶\u076E.\u06C1\u200D>\u0338\u200D; \u200C񍸰𐹶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, V7]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; xn--ypb5875khz9y.xn--0kb682l; [B3, B5, B6, V7] # 𐹶ݮ.ہ≯
+xn--ypb5875khz9y.xn--0kb682l; 񍸰𐹶\u076E.\u06C1≯; [B3, B5, B6, V7]; xn--ypb5875khz9y.xn--0kb682l; ; ;  # 𐹶ݮ.ہ≯
+xn--ypb717jrx2o7v94a.xn--0kb660ka35v; \u200C񍸰𐹶\u076E.\u06C1\u200D≯\u200D; [B1, B3, C1, C2, V7]; xn--ypb717jrx2o7v94a.xn--0kb660ka35v; ; ;  # 𐹶ݮ.ہ≯
+≮．\u17B5\u0855𐫔; ≮.\u0855𐫔; [B1]; xn--gdh.xn--kwb4643k; ; ;  # ≮.ࡕ𐫔
+<\u0338．\u17B5\u0855𐫔; ≮.\u0855𐫔; [B1]; xn--gdh.xn--kwb4643k; ; ;  # ≮.ࡕ𐫔
+≮.\u17B5\u0855𐫔; ≮.\u0855𐫔; [B1]; xn--gdh.xn--kwb4643k; ; ;  # ≮.ࡕ𐫔
+<\u0338.\u17B5\u0855𐫔; ≮.\u0855𐫔; [B1]; xn--gdh.xn--kwb4643k; ; ;  # ≮.ࡕ𐫔
+xn--gdh.xn--kwb4643k; ≮.\u0855𐫔; [B1]; xn--gdh.xn--kwb4643k; ; ;  # ≮.ࡕ𐫔
+xn--gdh.xn--kwb589e217p; ≮.\u17B5\u0855𐫔; [B1, V6, V7]; xn--gdh.xn--kwb589e217p; ; ;  # ≮.ࡕ𐫔
+𐩗\u200D｡ႩႵ; 𐩗\u200D.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; xn--pt9c.xn--0kjya; [] # 𐩗.ⴉⴕ
+𐩗\u200D。ႩႵ; 𐩗\u200D.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; xn--pt9c.xn--0kjya; [] # 𐩗.ⴉⴕ
+𐩗\u200D。ⴉⴕ; 𐩗\u200D.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; xn--pt9c.xn--0kjya; [] # 𐩗.ⴉⴕ
+𐩗\u200D。Ⴉⴕ; 𐩗\u200D.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; xn--pt9c.xn--0kjya; [] # 𐩗.ⴉⴕ
 xn--pt9c.xn--0kjya; 𐩗.ⴉⴕ; ; xn--pt9c.xn--0kjya; ; ;  # 𐩗.ⴉⴕ
 𐩗.ⴉⴕ; ; ; xn--pt9c.xn--0kjya; ; ;  # 𐩗.ⴉⴕ
-𐩗.ႩႵ; ; [P1, V6]; xn--pt9c.xn--hndy; ; ;  # 𐩗.ႩႵ
-𐩗.Ⴉⴕ; ; [P1, V6]; xn--pt9c.xn--hnd666l; ; ;  # 𐩗.Ⴉⴕ
-xn--pt9c.xn--hndy; 𐩗.ႩႵ; [V6]; xn--pt9c.xn--hndy; ; ;  # 𐩗.ႩႵ
-xn--1ug4933g.xn--0kjya; 𐩗‍.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; ;  # 𐩗.ⴉⴕ
-xn--1ug4933g.xn--hndy; 𐩗‍.ႩႵ; [B3, C2, V6]; xn--1ug4933g.xn--hndy; ; ;  # 𐩗.ႩႵ
-𐩗‍｡ⴉⴕ; 𐩗‍.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; xn--pt9c.xn--0kjya; [] # 𐩗.ⴉⴕ
-𐩗‍｡Ⴉⴕ; 𐩗‍.Ⴉⴕ; [B3, C2, P1, V6]; xn--1ug4933g.xn--hnd666l; ; xn--pt9c.xn--hnd666l; [P1, V6] # 𐩗.Ⴉⴕ
-‌‌ㄤ．̮󕨑ূ; ‌‌ㄤ.̮󕨑ূ; [C1, P1, V5, V6]; xn--0uga242k.xn--vta284a9o563a; ; xn--1fk.xn--vta284a9o563a; [P1, V5, V6] # ㄤ.̮ূ
-‌‌ㄤ.̮󕨑ূ; ; [C1, P1, V5, V6]; xn--0uga242k.xn--vta284a9o563a; ; xn--1fk.xn--vta284a9o563a; [P1, V5, V6] # ㄤ.̮ূ
-xn--1fk.xn--vta284a9o563a; ㄤ.̮󕨑ূ; [V5, V6]; xn--1fk.xn--vta284a9o563a; ; ;  # ㄤ.̮ূ
-xn--0uga242k.xn--vta284a9o563a; ‌‌ㄤ.̮󕨑ূ; [C1, V5, V6]; xn--0uga242k.xn--vta284a9o563a; ; ;  # ㄤ.̮ূ
-𐋻｡-‌𐫄Ⴗ; 𐋻.-‌𐫄Ⴗ; [B1, C1, P1, V3, V6]; xn--v97c.xn----i1g888ih12u; ; xn--v97c.xn----i1g2513q; [B1, P1, V3, V6] # 𐋻.-𐫄Ⴗ
-𐋻。-‌𐫄Ⴗ; 𐋻.-‌𐫄Ⴗ; [B1, C1, P1, V3, V6]; xn--v97c.xn----i1g888ih12u; ; xn--v97c.xn----i1g2513q; [B1, P1, V3, V6] # 𐋻.-𐫄Ⴗ
-𐋻。-‌𐫄ⴗ; 𐋻.-‌𐫄ⴗ; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; xn--v97c.xn----lws0526f; [B1, V3] # 𐋻.-𐫄ⴗ
+𐩗.ႩႵ; 𐩗.ⴉⴕ; ; xn--pt9c.xn--0kjya; ; ;  # 𐩗.ⴉⴕ
+𐩗.Ⴉⴕ; 𐩗.ⴉⴕ; ; xn--pt9c.xn--0kjya; ; ;  # 𐩗.ⴉⴕ
+xn--1ug4933g.xn--0kjya; 𐩗\u200D.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; ;  # 𐩗.ⴉⴕ
+𐩗\u200D｡ⴉⴕ; 𐩗\u200D.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; xn--pt9c.xn--0kjya; [] # 𐩗.ⴉⴕ
+𐩗\u200D｡Ⴉⴕ; 𐩗\u200D.ⴉⴕ; [B3, C2]; xn--1ug4933g.xn--0kjya; ; xn--pt9c.xn--0kjya; [] # 𐩗.ⴉⴕ
+xn--pt9c.xn--hnd666l; 𐩗.Ⴉⴕ; [V7]; xn--pt9c.xn--hnd666l; ; ;  # 𐩗.Ⴉⴕ
+xn--1ug4933g.xn--hnd666l; 𐩗\u200D.Ⴉⴕ; [B3, C2, V7]; xn--1ug4933g.xn--hnd666l; ; ;  # 𐩗.Ⴉⴕ
+xn--pt9c.xn--hndy; 𐩗.ႩႵ; [V7]; xn--pt9c.xn--hndy; ; ;  # 𐩗.ႩႵ
+xn--1ug4933g.xn--hndy; 𐩗\u200D.ႩႵ; [B3, C2, V7]; xn--1ug4933g.xn--hndy; ; ;  # 𐩗.ႩႵ
+\u200C\u200Cㄤ．\u032E󕨑\u09C2; \u200C\u200Cㄤ.\u032E󕨑\u09C2; [C1, V6, V7]; xn--0uga242k.xn--vta284a9o563a; ; xn--1fk.xn--vta284a9o563a; [V6, V7] # ㄤ.̮ূ
+\u200C\u200Cㄤ.\u032E󕨑\u09C2; ; [C1, V6, V7]; xn--0uga242k.xn--vta284a9o563a; ; xn--1fk.xn--vta284a9o563a; [V6, V7] # ㄤ.̮ূ
+xn--1fk.xn--vta284a9o563a; ㄤ.\u032E󕨑\u09C2; [V6, V7]; xn--1fk.xn--vta284a9o563a; ; ;  # ㄤ.̮ূ
+xn--0uga242k.xn--vta284a9o563a; \u200C\u200Cㄤ.\u032E󕨑\u09C2; [C1, V6, V7]; xn--0uga242k.xn--vta284a9o563a; ; ;  # ㄤ.̮ূ
+𐋻｡-\u200C𐫄Ⴗ; 𐋻.-\u200C𐫄ⴗ; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; xn--v97c.xn----lws0526f; [B1, V3] # 𐋻.-𐫄ⴗ
+𐋻。-\u200C𐫄Ⴗ; 𐋻.-\u200C𐫄ⴗ; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; xn--v97c.xn----lws0526f; [B1, V3] # 𐋻.-𐫄ⴗ
+𐋻。-\u200C𐫄ⴗ; 𐋻.-\u200C𐫄ⴗ; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; xn--v97c.xn----lws0526f; [B1, V3] # 𐋻.-𐫄ⴗ
 xn--v97c.xn----lws0526f; 𐋻.-𐫄ⴗ; [B1, V3]; xn--v97c.xn----lws0526f; ; ;  # 𐋻.-𐫄ⴗ
-xn--v97c.xn----sgnv20du99s; 𐋻.-‌𐫄ⴗ; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; ;  # 𐋻.-𐫄ⴗ
-xn--v97c.xn----i1g2513q; 𐋻.-𐫄Ⴗ; [B1, V3, V6]; xn--v97c.xn----i1g2513q; ; ;  # 𐋻.-𐫄Ⴗ
-xn--v97c.xn----i1g888ih12u; 𐋻.-‌𐫄Ⴗ; [B1, C1, V3, V6]; xn--v97c.xn----i1g888ih12u; ; ;  # 𐋻.-𐫄Ⴗ
-𐋻｡-‌𐫄ⴗ; 𐋻.-‌𐫄ⴗ; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; xn--v97c.xn----lws0526f; [B1, V3] # 𐋻.-𐫄ⴗ
-🙑𐷺．≠‌; 🙑𐷺.≠‌; [B1, C1, P1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, P1, V6] # 🙑.≠
-🙑𐷺．≠‌; 🙑𐷺.≠‌; [B1, C1, P1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, P1, V6] # 🙑.≠
-🙑𐷺.≠‌; ; [B1, C1, P1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, P1, V6] # 🙑.≠
-🙑𐷺.≠‌; 🙑𐷺.≠‌; [B1, C1, P1, V6]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, P1, V6] # 🙑.≠
-xn--bl0dh970b.xn--1ch; 🙑𐷺.≠; [B1, V6]; xn--bl0dh970b.xn--1ch; ; ;  # 🙑.≠
-xn--bl0dh970b.xn--0ug83g; 🙑𐷺.≠‌; [B1, C1, V6]; xn--bl0dh970b.xn--0ug83g; ; ;  # 🙑.≠
-ٌ᳒｡𞮞⵿⧎; ٌ᳒.𞮞⵿⧎; [B1, B3, B6, P1, V5, V6]; xn--ohb646i.xn--ewi38jf765c; ; ;  # ٌ᳒.⵿⧎
-ٌ᳒。𞮞⵿⧎; ٌ᳒.𞮞⵿⧎; [B1, B3, B6, P1, V5, V6]; xn--ohb646i.xn--ewi38jf765c; ; ;  # ٌ᳒.⵿⧎
-xn--ohb646i.xn--ewi38jf765c; ٌ᳒.𞮞⵿⧎; [B1, B3, B6, V5, V6]; xn--ohb646i.xn--ewi38jf765c; ; ;  # ٌ᳒.⵿⧎
-Ⴔ𝨨₃󠁦．𝟳𑂹ஂ; Ⴔ𝨨3󠁦.7𑂹ஂ; [P1, V6]; xn--3-b1g83426a35t0g.xn--7-cve6271r; ; ;  # Ⴔ𝨨3.7𑂹ஂ
-Ⴔ𝨨3󠁦.7𑂹ஂ; ; [P1, V6]; xn--3-b1g83426a35t0g.xn--7-cve6271r; ; ;  # Ⴔ𝨨3.7𑂹ஂ
-ⴔ𝨨3󠁦.7𑂹ஂ; ; [P1, V6]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ;  # ⴔ𝨨3.7𑂹ஂ
-xn--3-ews6985n35s3g.xn--7-cve6271r; ⴔ𝨨3󠁦.7𑂹ஂ; [V6]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ;  # ⴔ𝨨3.7𑂹ஂ
-xn--3-b1g83426a35t0g.xn--7-cve6271r; Ⴔ𝨨3󠁦.7𑂹ஂ; [V6]; xn--3-b1g83426a35t0g.xn--7-cve6271r; ; ;  # Ⴔ𝨨3.7𑂹ஂ
-ⴔ𝨨₃󠁦．𝟳𑂹ஂ; ⴔ𝨨3󠁦.7𑂹ஂ; [P1, V6]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ;  # ⴔ𝨨3.7𑂹ஂ
-䏈‌。‌⒈񱢕; 䏈‌.‌⒈񱢕; [C1, P1, V6]; xn--0ug491l.xn--0ug88oot66q; ; xn--eco.xn--tsh21126d; [P1, V6] # 䏈.⒈
-䏈‌。‌1.񱢕; 䏈‌.‌1.񱢕; [C1, P1, V6]; xn--0ug491l.xn--1-rgn.xn--ms39a; ; xn--eco.1.xn--ms39a; [P1, V6] # 䏈.1.
-xn--eco.1.xn--ms39a; 䏈.1.񱢕; [V6]; xn--eco.1.xn--ms39a; ; ;  # 䏈.1.
-xn--0ug491l.xn--1-rgn.xn--ms39a; 䏈‌.‌1.񱢕; [C1, V6]; xn--0ug491l.xn--1-rgn.xn--ms39a; ; ;  # 䏈.1.
-xn--eco.xn--tsh21126d; 䏈.⒈񱢕; [V6]; xn--eco.xn--tsh21126d; ; ;  # 䏈.⒈
-xn--0ug491l.xn--0ug88oot66q; 䏈‌.‌⒈񱢕; [C1, V6]; xn--0ug491l.xn--0ug88oot66q; ; ;  # 䏈.⒈
-１꫶ß𑲥｡ᷘ; 1꫶ß𑲥.ᷘ; [V5]; xn--1-qfa2471kdb0d.xn--weg; ; xn--1ss-ir6ln166b.xn--weg;  # 1꫶ß𑲥.ᷘ
-1꫶ß𑲥。ᷘ; 1꫶ß𑲥.ᷘ; [V5]; xn--1-qfa2471kdb0d.xn--weg; ; xn--1ss-ir6ln166b.xn--weg;  # 1꫶ß𑲥.ᷘ
-1꫶SS𑲥。ᷘ; 1꫶ss𑲥.ᷘ; [V5]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
-1꫶ss𑲥。ᷘ; 1꫶ss𑲥.ᷘ; [V5]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
-xn--1ss-ir6ln166b.xn--weg; 1꫶ss𑲥.ᷘ; [V5]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
-xn--1-qfa2471kdb0d.xn--weg; 1꫶ß𑲥.ᷘ; [V5]; xn--1-qfa2471kdb0d.xn--weg; ; ;  # 1꫶ß𑲥.ᷘ
-１꫶SS𑲥｡ᷘ; 1꫶ss𑲥.ᷘ; [V5]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
-１꫶ss𑲥｡ᷘ; 1꫶ss𑲥.ᷘ; [V5]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
-1꫶Ss𑲥。ᷘ; 1꫶ss𑲥.ᷘ; [V5]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
-１꫶Ss𑲥｡ᷘ; 1꫶ss𑲥.ᷘ; [V5]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
-‍񫶩𞪯್｡ݼ⒈; ‍񫶩𞪯್.ݼ⒈; [B1, C2, P1, V6]; xn--8tc969gzn94a4lm8a.xn--dqb689l; ; xn--8tc9875v5is1a.xn--dqb689l; [B5, B6, P1, V6] # ್.ݼ⒈
-‍񫶩𞪯್。ݼ1.; ‍񫶩𞪯್.ݼ1.; [B1, C2, P1, V6]; xn--8tc969gzn94a4lm8a.xn--1-g6c.; ; xn--8tc9875v5is1a.xn--1-g6c.; [B5, B6, P1, V6] # ್.ݼ1.
-xn--8tc9875v5is1a.xn--1-g6c.; 񫶩𞪯್.ݼ1.; [B5, B6, V6]; xn--8tc9875v5is1a.xn--1-g6c.; ; ;  # ್.ݼ1.
-xn--8tc969gzn94a4lm8a.xn--1-g6c.; ‍񫶩𞪯್.ݼ1.; [B1, C2, V6]; xn--8tc969gzn94a4lm8a.xn--1-g6c.; ; ;  # ್.ݼ1.
-xn--8tc9875v5is1a.xn--dqb689l; 񫶩𞪯್.ݼ⒈; [B5, B6, V6]; xn--8tc9875v5is1a.xn--dqb689l; ; ;  # ್.ݼ⒈
-xn--8tc969gzn94a4lm8a.xn--dqb689l; ‍񫶩𞪯್.ݼ⒈; [B1, C2, V6]; xn--8tc969gzn94a4lm8a.xn--dqb689l; ; ;  # ್.ݼ⒈
-᪶．𞤳򓢖򻉒ߗ; ᪶.𞤳򓢖򻉒ߗ; [B1, B2, B3, B6, P1, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ;  # ᪶.𞤳ߗ
-᪶.𞤳򓢖򻉒ߗ; ; [B1, B2, B3, B6, P1, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ;  # ᪶.𞤳ߗ
-᪶.𞤑򓢖򻉒ߗ; ᪶.𞤳򓢖򻉒ߗ; [B1, B2, B3, B6, P1, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ;  # ᪶.𞤳ߗ
-xn--zqf.xn--ysb9657vuiz5bj0ep; ᪶.𞤳򓢖򻉒ߗ; [B1, B2, B3, B6, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ;  # ᪶.𞤳ߗ
-᪶．𞤑򓢖򻉒ߗ; ᪶.𞤳򓢖򻉒ߗ; [B1, B2, B3, B6, P1, V5, V6]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ;  # ᪶.𞤳ߗ
-ࡂ𞩚⒈．󠬌８򏳏ݰ; ࡂ𞩚⒈.󠬌8򏳏ݰ; [B1, P1, V6]; xn--0vb095ldg52a.xn--8-s5c22427ox454a; ; ;  # ࡂ⒈.8ݰ
-ࡂ𞩚1..󠬌8򏳏ݰ; ; [B1, P1, V6, X4_2]; xn--1-rid26318a..xn--8-s5c22427ox454a; [B1, P1, V6, A4_2]; ;  # ࡂ1..8ݰ
-xn--1-rid26318a..xn--8-s5c22427ox454a; ࡂ𞩚1..󠬌8򏳏ݰ; [B1, V6, X4_2]; xn--1-rid26318a..xn--8-s5c22427ox454a; [B1, V6, A4_2]; ;  # ࡂ1..8ݰ
-xn--0vb095ldg52a.xn--8-s5c22427ox454a; ࡂ𞩚⒈.󠬌8򏳏ݰ; [B1, V6]; xn--0vb095ldg52a.xn--8-s5c22427ox454a; ; ;  # ࡂ⒈.8ݰ
-͡𐫫ͩᡷ。-󠰛鞰; ͡𐫫ͩᡷ.-󠰛鞰; [B1, P1, V3, V5, V6]; xn--cvaq482npv5t.xn----yg7dt1332g; ; ;  # ͡𐫫ͩᡷ.-鞰
-xn--cvaq482npv5t.xn----yg7dt1332g; ͡𐫫ͩᡷ.-󠰛鞰; [B1, V3, V5, V6]; xn--cvaq482npv5t.xn----yg7dt1332g; ; ;  # ͡𐫫ͩᡷ.-鞰
--.્剘ß𐫃; ; [B1, V3, V5]; -.xn--zca791c493duf8i; ; -.xn--ss-bqg4734erywk;  # -.્剘ß𐫃
--.્剘SS𐫃; -.્剘ss𐫃; [B1, V3, V5]; -.xn--ss-bqg4734erywk; ; ;  # -.્剘ss𐫃
--.્剘ss𐫃; ; [B1, V3, V5]; -.xn--ss-bqg4734erywk; ; ;  # -.્剘ss𐫃
--.્剘Ss𐫃; -.્剘ss𐫃; [B1, V3, V5]; -.xn--ss-bqg4734erywk; ; ;  # -.્剘ss𐫃
--.xn--ss-bqg4734erywk; -.્剘ss𐫃; [B1, V3, V5]; -.xn--ss-bqg4734erywk; ; ;  # -.્剘ss𐫃
--.xn--zca791c493duf8i; -.્剘ß𐫃; [B1, V3, V5]; -.xn--zca791c493duf8i; ; ;  # -.્剘ß𐫃
-ࣻ𞵸｡-; ࣻ𞵸.-; [B1, P1, V3, V5, V6]; xn--b1b2719v.-; ; ;  # ࣻ.-
-ࣻ𞵸。-; ࣻ𞵸.-; [B1, P1, V3, V5, V6]; xn--b1b2719v.-; ; ;  # ࣻ.-
-xn--b1b2719v.-; ࣻ𞵸.-; [B1, V3, V5, V6]; xn--b1b2719v.-; ; ;  # ࣻ.-
-⒈󠈻𐹲｡≠؃𐹽; ⒈󠈻𐹲.≠؃𐹽; [B1, P1, V6]; xn--tshw766f1153g.xn--lfb536lb35n; ; ;  # ⒈𐹲.≠𐹽
-⒈󠈻𐹲｡≠؃𐹽; ⒈󠈻𐹲.≠؃𐹽; [B1, P1, V6]; xn--tshw766f1153g.xn--lfb536lb35n; ; ;  # ⒈𐹲.≠𐹽
-1.󠈻𐹲。≠؃𐹽; 1.󠈻𐹲.≠؃𐹽; [B1, P1, V6]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ;  # 1.𐹲.≠𐹽
-1.󠈻𐹲。≠؃𐹽; 1.󠈻𐹲.≠؃𐹽; [B1, P1, V6]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ;  # 1.𐹲.≠𐹽
-1.xn--qo0dl3077c.xn--lfb536lb35n; 1.󠈻𐹲.≠؃𐹽; [B1, V6]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ;  # 1.𐹲.≠𐹽
-xn--tshw766f1153g.xn--lfb536lb35n; ⒈󠈻𐹲.≠؃𐹽; [B1, V6]; xn--tshw766f1153g.xn--lfb536lb35n; ; ;  # ⒈𐹲.≠𐹽
-𐹢󠈚Ⴎ‌.㖾𐹡; ; [B1, B5, B6, C1, P1, V6]; xn--mnd289ezj4pqxp0i.xn--pelu572d; ; xn--mnd9001km0o0g.xn--pelu572d; [B1, B5, B6, P1, V6] # 𐹢Ⴎ.㖾𐹡
-𐹢󠈚ⴎ‌.㖾𐹡; ; [B1, B5, B6, C1, P1, V6]; xn--0ug342clq0pqxv4i.xn--pelu572d; ; xn--5kjx323em053g.xn--pelu572d; [B1, B5, B6, P1, V6] # 𐹢ⴎ.㖾𐹡
-xn--5kjx323em053g.xn--pelu572d; 𐹢󠈚ⴎ.㖾𐹡; [B1, B5, B6, V6]; xn--5kjx323em053g.xn--pelu572d; ; ;  # 𐹢ⴎ.㖾𐹡
-xn--0ug342clq0pqxv4i.xn--pelu572d; 𐹢󠈚ⴎ‌.㖾𐹡; [B1, B5, B6, C1, V6]; xn--0ug342clq0pqxv4i.xn--pelu572d; ; ;  # 𐹢ⴎ.㖾𐹡
-xn--mnd9001km0o0g.xn--pelu572d; 𐹢󠈚Ⴎ.㖾𐹡; [B1, B5, B6, V6]; xn--mnd9001km0o0g.xn--pelu572d; ; ;  # 𐹢Ⴎ.㖾𐹡
-xn--mnd289ezj4pqxp0i.xn--pelu572d; 𐹢󠈚Ⴎ‌.㖾𐹡; [B1, B5, B6, C1, V6]; xn--mnd289ezj4pqxp0i.xn--pelu572d; ; ;  # 𐹢Ⴎ.㖾𐹡
-򩼗．߇ᡖႳႧ; 򩼗.߇ᡖႳႧ; [B2, B3, P1, V6]; xn--te28c.xn--isb856b9a631d; ; ;  # .߇ᡖႳႧ
-򩼗.߇ᡖႳႧ; ; [B2, B3, P1, V6]; xn--te28c.xn--isb856b9a631d; ; ;  # .߇ᡖႳႧ
-򩼗.߇ᡖⴓⴇ; ; [B2, B3, P1, V6]; xn--te28c.xn--isb295fbtpmb; ; ;  # .߇ᡖⴓⴇ
-xn--te28c.xn--isb295fbtpmb; 򩼗.߇ᡖⴓⴇ; [B2, B3, V6]; xn--te28c.xn--isb295fbtpmb; ; ;  # .߇ᡖⴓⴇ
-xn--te28c.xn--isb856b9a631d; 򩼗.߇ᡖႳႧ; [B2, B3, V6]; xn--te28c.xn--isb856b9a631d; ; ;  # .߇ᡖႳႧ
-򩼗．߇ᡖⴓⴇ; 򩼗.߇ᡖⴓⴇ; [B2, B3, P1, V6]; xn--te28c.xn--isb295fbtpmb; ; ;  # .߇ᡖⴓⴇ
-򩼗.߇ᡖႳⴇ; ; [B2, B3, P1, V6]; xn--te28c.xn--isb286btrgo7w; ; ;  # .߇ᡖႳⴇ
-xn--te28c.xn--isb286btrgo7w; 򩼗.߇ᡖႳⴇ; [B2, B3, V6]; xn--te28c.xn--isb286btrgo7w; ; ;  # .߇ᡖႳⴇ
-򩼗．߇ᡖႳⴇ; 򩼗.߇ᡖႳⴇ; [B2, B3, P1, V6]; xn--te28c.xn--isb286btrgo7w; ; ;  # .߇ᡖႳⴇ
-‍􅍉.ڳݵ; ; [B1, C2, P1, V6]; xn--1ug39444n.xn--mkb20b; ; xn--3j78f.xn--mkb20b; [P1, V6] # .ڳݵ
-xn--3j78f.xn--mkb20b; 􅍉.ڳݵ; [V6]; xn--3j78f.xn--mkb20b; ; ;  # .ڳݵ
-xn--1ug39444n.xn--mkb20b; ‍􅍉.ڳݵ; [B1, C2, V6]; xn--1ug39444n.xn--mkb20b; ; ;  # .ڳݵ
-𲤱⒛⾳．ꡦ⒈; 𲤱⒛音.ꡦ⒈; [P1, V6]; xn--dth6033bzbvx.xn--tsh9439b; ; ;  # ⒛音.ꡦ⒈
-𲤱20.音.ꡦ1.; ; [P1, V6]; xn--20-9802c.xn--0w5a.xn--1-eg4e.; ; ;  # 20.音.ꡦ1.
-xn--20-9802c.xn--0w5a.xn--1-eg4e.; 𲤱20.音.ꡦ1.; [V6]; xn--20-9802c.xn--0w5a.xn--1-eg4e.; ; ;  # 20.音.ꡦ1.
-xn--dth6033bzbvx.xn--tsh9439b; 𲤱⒛音.ꡦ⒈; [V6]; xn--dth6033bzbvx.xn--tsh9439b; ; ;  # ⒛音.ꡦ⒈
-ߜ８񳦓-｡򞲙𑁿𐩥্; ߜ8񳦓-.򞲙𑁿𐩥্; [B2, B3, B5, B6, P1, V3, V6]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ;  # ߜ8-.𑁿𐩥্
-ߜ8񳦓-。򞲙𑁿𐩥্; ߜ8񳦓-.򞲙𑁿𐩥্; [B2, B3, B5, B6, P1, V3, V6]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ;  # ߜ8-.𑁿𐩥্
-xn--8--rve13079p.xn--b7b9842k42df776x; ߜ8񳦓-.򞲙𑁿𐩥্; [B2, B3, B5, B6, V3, V6]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ;  # ߜ8-.𑁿𐩥্
-Ⴕ。۰≮ß݅; Ⴕ.۰≮ß݅; [P1, V6]; xn--tnd.xn--zca912alh227g; ; xn--tnd.xn--ss-jbe65aw27i;  # Ⴕ.۰≮ß݅
-Ⴕ。۰≮ß݅; Ⴕ.۰≮ß݅; [P1, V6]; xn--tnd.xn--zca912alh227g; ; xn--tnd.xn--ss-jbe65aw27i;  # Ⴕ.۰≮ß݅
-ⴕ。۰≮ß݅; ⴕ.۰≮ß݅; [P1, V6]; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i;  # ⴕ.۰≮ß݅
-ⴕ。۰≮ß݅; ⴕ.۰≮ß݅; [P1, V6]; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i;  # ⴕ.۰≮ß݅
-Ⴕ。۰≮SS݅; Ⴕ.۰≮ss݅; [P1, V6]; xn--tnd.xn--ss-jbe65aw27i; ; ;  # Ⴕ.۰≮ss݅
-Ⴕ。۰≮SS݅; Ⴕ.۰≮ss݅; [P1, V6]; xn--tnd.xn--ss-jbe65aw27i; ; ;  # Ⴕ.۰≮ss݅
-ⴕ。۰≮ss݅; ⴕ.۰≮ss݅; [P1, V6]; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
-ⴕ。۰≮ss݅; ⴕ.۰≮ss݅; [P1, V6]; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
-Ⴕ。۰≮Ss݅; Ⴕ.۰≮ss݅; [P1, V6]; xn--tnd.xn--ss-jbe65aw27i; ; ;  # Ⴕ.۰≮ss݅
-Ⴕ。۰≮Ss݅; Ⴕ.۰≮ss݅; [P1, V6]; xn--tnd.xn--ss-jbe65aw27i; ; ;  # Ⴕ.۰≮ss݅
-xn--tnd.xn--ss-jbe65aw27i; Ⴕ.۰≮ss݅; [V6]; xn--tnd.xn--ss-jbe65aw27i; ; ;  # Ⴕ.۰≮ss݅
-xn--dlj.xn--ss-jbe65aw27i; ⴕ.۰≮ss݅; [V6]; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
-xn--dlj.xn--zca912alh227g; ⴕ.۰≮ß݅; [V6]; xn--dlj.xn--zca912alh227g; ; ;  # ⴕ.۰≮ß݅
-xn--tnd.xn--zca912alh227g; Ⴕ.۰≮ß݅; [V6]; xn--tnd.xn--zca912alh227g; ; ;  # Ⴕ.۰≮ß݅
-ߩ-.𝨗꒱᭲; ; [B1, B3, V3, V5]; xn----odd.xn--dwf8994dc8wj; ; ;  # ߩ-.𝨗꒱᭲
-xn----odd.xn--dwf8994dc8wj; ߩ-.𝨗꒱᭲; [B1, B3, V3, V5]; xn----odd.xn--dwf8994dc8wj; ; ;  # ߩ-.𝨗꒱᭲
-𞼸‌.≯䕵⫧; ; [B1, B3, C1, P1, V6]; xn--0ugx453p.xn--hdh754ax6w; ; xn--sn7h.xn--hdh754ax6w; [B1, P1, V6] # .≯䕵⫧
-𞼸‌.≯䕵⫧; 𞼸‌.≯䕵⫧; [B1, B3, C1, P1, V6]; xn--0ugx453p.xn--hdh754ax6w; ; xn--sn7h.xn--hdh754ax6w; [B1, P1, V6] # .≯䕵⫧
-xn--sn7h.xn--hdh754ax6w; 𞼸.≯䕵⫧; [B1, V6]; xn--sn7h.xn--hdh754ax6w; ; ;  # .≯䕵⫧
-xn--0ugx453p.xn--hdh754ax6w; 𞼸‌.≯䕵⫧; [B1, B3, C1, V6]; xn--0ugx453p.xn--hdh754ax6w; ; ;  # .≯䕵⫧
-𐨅ßﱗ.ڬ۳︒; 𐨅ßيخ.ڬ۳︒; [B1, B3, P1, V5, V6]; xn--zca23yncs877j.xn--fkb6lp314e; ; xn--ss-ytd5i7765l.xn--fkb6lp314e;  # 𐨅ßيخ.ڬ۳︒
-𐨅ßيخ.ڬ۳。; 𐨅ßيخ.ڬ۳.; [B1, V5]; xn--zca23yncs877j.xn--fkb6l.; ; xn--ss-ytd5i7765l.xn--fkb6l.;  # 𐨅ßيخ.ڬ۳.
-𐨅SSيخ.ڬ۳。; 𐨅ssيخ.ڬ۳.; [B1, V5]; xn--ss-ytd5i7765l.xn--fkb6l.; ; ;  # 𐨅ssيخ.ڬ۳.
-𐨅ssيخ.ڬ۳。; 𐨅ssيخ.ڬ۳.; [B1, V5]; xn--ss-ytd5i7765l.xn--fkb6l.; ; ;  # 𐨅ssيخ.ڬ۳.
-𐨅Ssيخ.ڬ۳。; 𐨅ssيخ.ڬ۳.; [B1, V5]; xn--ss-ytd5i7765l.xn--fkb6l.; ; ;  # 𐨅ssيخ.ڬ۳.
-xn--ss-ytd5i7765l.xn--fkb6l.; 𐨅ssيخ.ڬ۳.; [B1, V5]; xn--ss-ytd5i7765l.xn--fkb6l.; ; ;  # 𐨅ssيخ.ڬ۳.
-xn--zca23yncs877j.xn--fkb6l.; 𐨅ßيخ.ڬ۳.; [B1, V5]; xn--zca23yncs877j.xn--fkb6l.; ; ;  # 𐨅ßيخ.ڬ۳.
-𐨅SSﱗ.ڬ۳︒; 𐨅ssيخ.ڬ۳︒; [B1, B3, P1, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ;  # 𐨅ssيخ.ڬ۳︒
-𐨅ssﱗ.ڬ۳︒; 𐨅ssيخ.ڬ۳︒; [B1, B3, P1, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ;  # 𐨅ssيخ.ڬ۳︒
-𐨅Ssﱗ.ڬ۳︒; 𐨅ssيخ.ڬ۳︒; [B1, B3, P1, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ;  # 𐨅ssيخ.ڬ۳︒
-xn--ss-ytd5i7765l.xn--fkb6lp314e; 𐨅ssيخ.ڬ۳︒; [B1, B3, V5, V6]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ;  # 𐨅ssيخ.ڬ۳︒
-xn--zca23yncs877j.xn--fkb6lp314e; 𐨅ßيخ.ڬ۳︒; [B1, B3, V5, V6]; xn--zca23yncs877j.xn--fkb6lp314e; ; ;  # 𐨅ßيخ.ڬ۳︒
--≮🡒᳭.񏿾Ⴁܔ; ; [B1, P1, V3, V6]; xn----44l04zxt68c.xn--enb300c1597h; ; ;  # -≮🡒᳭.Ⴁܔ
--≮🡒᳭.񏿾Ⴁܔ; -≮🡒᳭.񏿾Ⴁܔ; [B1, P1, V3, V6]; xn----44l04zxt68c.xn--enb300c1597h; ; ;  # -≮🡒᳭.Ⴁܔ
--≮🡒᳭.񏿾ⴁܔ; -≮🡒᳭.񏿾ⴁܔ; [B1, P1, V3, V6]; xn----44l04zxt68c.xn--enb135qf106f; ; ;  # -≮🡒᳭.ⴁܔ
--≮🡒᳭.񏿾ⴁܔ; ; [B1, P1, V3, V6]; xn----44l04zxt68c.xn--enb135qf106f; ; ;  # -≮🡒᳭.ⴁܔ
-xn----44l04zxt68c.xn--enb135qf106f; -≮🡒᳭.񏿾ⴁܔ; [B1, V3, V6]; xn----44l04zxt68c.xn--enb135qf106f; ; ;  # -≮🡒᳭.ⴁܔ
-xn----44l04zxt68c.xn--enb300c1597h; -≮🡒᳭.񏿾Ⴁܔ; [B1, V3, V6]; xn----44l04zxt68c.xn--enb300c1597h; ; ;  # -≮🡒᳭.Ⴁܔ
-𞤨｡ꡏ‍‌; 𞤨.ꡏ‍‌; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; xn--ge6h.xn--oc9a; [] # 𞤨.ꡏ
-𞤨。ꡏ‍‌; 𞤨.ꡏ‍‌; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; xn--ge6h.xn--oc9a; [] # 𞤨.ꡏ
-𞤆。ꡏ‍‌; 𞤨.ꡏ‍‌; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; xn--ge6h.xn--oc9a; [] # 𞤨.ꡏ
+xn--v97c.xn----sgnv20du99s; 𐋻.-\u200C𐫄ⴗ; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; ;  # 𐋻.-𐫄ⴗ
+𐋻｡-\u200C𐫄ⴗ; 𐋻.-\u200C𐫄ⴗ; [B1, C1, V3]; xn--v97c.xn----sgnv20du99s; ; xn--v97c.xn----lws0526f; [B1, V3] # 𐋻.-𐫄ⴗ
+xn--v97c.xn----i1g2513q; 𐋻.-𐫄Ⴗ; [B1, V3, V7]; xn--v97c.xn----i1g2513q; ; ;  # 𐋻.-𐫄Ⴗ
+xn--v97c.xn----i1g888ih12u; 𐋻.-\u200C𐫄Ⴗ; [B1, C1, V3, V7]; xn--v97c.xn----i1g888ih12u; ; ;  # 𐋻.-𐫄Ⴗ
+🙑𐷺．≠\u200C; 🙑𐷺.≠\u200C; [B1, C1, V7]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, V7] # 🙑.≠
+🙑𐷺．=\u0338\u200C; 🙑𐷺.≠\u200C; [B1, C1, V7]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, V7] # 🙑.≠
+🙑𐷺.≠\u200C; ; [B1, C1, V7]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, V7] # 🙑.≠
+🙑𐷺.=\u0338\u200C; 🙑𐷺.≠\u200C; [B1, C1, V7]; xn--bl0dh970b.xn--0ug83g; ; xn--bl0dh970b.xn--1ch; [B1, V7] # 🙑.≠
+xn--bl0dh970b.xn--1ch; 🙑𐷺.≠; [B1, V7]; xn--bl0dh970b.xn--1ch; ; ;  # 🙑.≠
+xn--bl0dh970b.xn--0ug83g; 🙑𐷺.≠\u200C; [B1, C1, V7]; xn--bl0dh970b.xn--0ug83g; ; ;  # 🙑.≠
+\u064C\u1CD2｡𞮞\u2D7F⧎; \u064C\u1CD2.𞮞\u2D7F⧎; [B1, B3, V6, V7]; xn--ohb646i.xn--ewi38jf765c; ; ;  # ٌ᳒.⵿⧎
+\u064C\u1CD2。𞮞\u2D7F⧎; \u064C\u1CD2.𞮞\u2D7F⧎; [B1, B3, V6, V7]; xn--ohb646i.xn--ewi38jf765c; ; ;  # ٌ᳒.⵿⧎
+xn--ohb646i.xn--ewi38jf765c; \u064C\u1CD2.𞮞\u2D7F⧎; [B1, B3, V6, V7]; xn--ohb646i.xn--ewi38jf765c; ; ;  # ٌ᳒.⵿⧎
+Ⴔ𝨨₃󠁦．𝟳𑂹\u0B82; ⴔ𝨨3󠁦.7𑂹\u0B82; [V7]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ;  # ⴔ𝨨3.7𑂹ஂ
+Ⴔ𝨨3󠁦.7𑂹\u0B82; ⴔ𝨨3󠁦.7𑂹\u0B82; [V7]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ;  # ⴔ𝨨3.7𑂹ஂ
+ⴔ𝨨3󠁦.7𑂹\u0B82; ; [V7]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ;  # ⴔ𝨨3.7𑂹ஂ
+xn--3-ews6985n35s3g.xn--7-cve6271r; ⴔ𝨨3󠁦.7𑂹\u0B82; [V7]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ;  # ⴔ𝨨3.7𑂹ஂ
+ⴔ𝨨₃󠁦．𝟳𑂹\u0B82; ⴔ𝨨3󠁦.7𑂹\u0B82; [V7]; xn--3-ews6985n35s3g.xn--7-cve6271r; ; ;  # ⴔ𝨨3.7𑂹ஂ
+xn--3-b1g83426a35t0g.xn--7-cve6271r; Ⴔ𝨨3󠁦.7𑂹\u0B82; [V7]; xn--3-b1g83426a35t0g.xn--7-cve6271r; ; ;  # Ⴔ𝨨3.7𑂹ஂ
+䏈\u200C。\u200C⒈񱢕; 䏈\u200C.\u200C⒈񱢕; [C1, V7]; xn--0ug491l.xn--0ug88oot66q; ; xn--eco.xn--tsh21126d; [V7] # 䏈.⒈
+䏈\u200C。\u200C1.񱢕; 䏈\u200C.\u200C1.񱢕; [C1, V7]; xn--0ug491l.xn--1-rgn.xn--ms39a; ; xn--eco.1.xn--ms39a; [V7] # 䏈.1.
+xn--eco.1.xn--ms39a; 䏈.1.񱢕; [V7]; xn--eco.1.xn--ms39a; ; ;  # 䏈.1.
+xn--0ug491l.xn--1-rgn.xn--ms39a; 䏈\u200C.\u200C1.񱢕; [C1, V7]; xn--0ug491l.xn--1-rgn.xn--ms39a; ; ;  # 䏈.1.
+xn--eco.xn--tsh21126d; 䏈.⒈񱢕; [V7]; xn--eco.xn--tsh21126d; ; ;  # 䏈.⒈
+xn--0ug491l.xn--0ug88oot66q; 䏈\u200C.\u200C⒈񱢕; [C1, V7]; xn--0ug491l.xn--0ug88oot66q; ; ;  # 䏈.⒈
+１\uAAF6ß𑲥｡\u1DD8; 1\uAAF6ß𑲥.\u1DD8; [V6]; xn--1-qfa2471kdb0d.xn--weg; ; xn--1ss-ir6ln166b.xn--weg;  # 1꫶ß𑲥.ᷘ
+1\uAAF6ß𑲥。\u1DD8; 1\uAAF6ß𑲥.\u1DD8; [V6]; xn--1-qfa2471kdb0d.xn--weg; ; xn--1ss-ir6ln166b.xn--weg;  # 1꫶ß𑲥.ᷘ
+1\uAAF6SS𑲥。\u1DD8; 1\uAAF6ss𑲥.\u1DD8; [V6]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
+1\uAAF6ss𑲥。\u1DD8; 1\uAAF6ss𑲥.\u1DD8; [V6]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
+xn--1ss-ir6ln166b.xn--weg; 1\uAAF6ss𑲥.\u1DD8; [V6]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
+xn--1-qfa2471kdb0d.xn--weg; 1\uAAF6ß𑲥.\u1DD8; [V6]; xn--1-qfa2471kdb0d.xn--weg; ; ;  # 1꫶ß𑲥.ᷘ
+１\uAAF6SS𑲥｡\u1DD8; 1\uAAF6ss𑲥.\u1DD8; [V6]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
+１\uAAF6ss𑲥｡\u1DD8; 1\uAAF6ss𑲥.\u1DD8; [V6]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
+1\uAAF6Ss𑲥。\u1DD8; 1\uAAF6ss𑲥.\u1DD8; [V6]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
+１\uAAF6Ss𑲥｡\u1DD8; 1\uAAF6ss𑲥.\u1DD8; [V6]; xn--1ss-ir6ln166b.xn--weg; ; ;  # 1꫶ss𑲥.ᷘ
+\u200D񫶩𞪯\u0CCD｡\u077C⒈; \u200D񫶩𞪯\u0CCD.\u077C⒈; [B1, C2, V7]; xn--8tc969gzn94a4lm8a.xn--dqb689l; ; xn--8tc9875v5is1a.xn--dqb689l; [B5, B6, V7] # ್.ݼ⒈
+\u200D񫶩𞪯\u0CCD。\u077C1.; \u200D񫶩𞪯\u0CCD.\u077C1.; [B1, C2, V7]; xn--8tc969gzn94a4lm8a.xn--1-g6c.; [B1, C2, V7, A4_2]; xn--8tc9875v5is1a.xn--1-g6c.; [B5, B6, V7, A4_2] # ್.ݼ1.
+xn--8tc9875v5is1a.xn--1-g6c.; 񫶩𞪯\u0CCD.\u077C1.; [B5, B6, V7]; xn--8tc9875v5is1a.xn--1-g6c.; [B5, B6, V7, A4_2]; ;  # ್.ݼ1.
+xn--8tc969gzn94a4lm8a.xn--1-g6c.; \u200D񫶩𞪯\u0CCD.\u077C1.; [B1, C2, V7]; xn--8tc969gzn94a4lm8a.xn--1-g6c.; [B1, C2, V7, A4_2]; ;  # ್.ݼ1.
+xn--8tc9875v5is1a.xn--dqb689l; 񫶩𞪯\u0CCD.\u077C⒈; [B5, B6, V7]; xn--8tc9875v5is1a.xn--dqb689l; ; ;  # ್.ݼ⒈
+xn--8tc969gzn94a4lm8a.xn--dqb689l; \u200D񫶩𞪯\u0CCD.\u077C⒈; [B1, C2, V7]; xn--8tc969gzn94a4lm8a.xn--dqb689l; ; ;  # ್.ݼ⒈
+\u1AB6．𞤳򓢖򻉒\u07D7; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, V6, V7]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ;  # ᪶.𞤳ߗ
+\u1AB6.𞤳򓢖򻉒\u07D7; ; [B1, B2, V6, V7]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ;  # ᪶.𞤳ߗ
+\u1AB6.𞤑򓢖򻉒\u07D7; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, V6, V7]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ;  # ᪶.𞤳ߗ
+xn--zqf.xn--ysb9657vuiz5bj0ep; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, V6, V7]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ;  # ᪶.𞤳ߗ
+\u1AB6．𞤑򓢖򻉒\u07D7; \u1AB6.𞤳򓢖򻉒\u07D7; [B1, B2, V6, V7]; xn--zqf.xn--ysb9657vuiz5bj0ep; ; ;  # ᪶.𞤳ߗ
+\u0842𞩚⒈．󠬌８򏳏\u0770; \u0842𞩚⒈.󠬌8򏳏\u0770; [B1, V7]; xn--0vb095ldg52a.xn--8-s5c22427ox454a; ; ;  # ࡂ⒈.8ݰ
+\u0842𞩚1..󠬌8򏳏\u0770; ; [B1, V7, X4_2]; xn--1-rid26318a..xn--8-s5c22427ox454a; [B1, V7, A4_2]; ;  # ࡂ1..8ݰ
+xn--1-rid26318a..xn--8-s5c22427ox454a; \u0842𞩚1..󠬌8򏳏\u0770; [B1, V7, X4_2]; xn--1-rid26318a..xn--8-s5c22427ox454a; [B1, V7, A4_2]; ;  # ࡂ1..8ݰ
+xn--0vb095ldg52a.xn--8-s5c22427ox454a; \u0842𞩚⒈.󠬌8򏳏\u0770; [B1, V7]; xn--0vb095ldg52a.xn--8-s5c22427ox454a; ; ;  # ࡂ⒈.8ݰ
+\u0361𐫫\u0369ᡷ。-󠰛鞰; \u0361𐫫\u0369ᡷ.-󠰛鞰; [B1, V3, V6, V7]; xn--cvaq482npv5t.xn----yg7dt1332g; ; ;  # ͡𐫫ͩᡷ.-鞰
+xn--cvaq482npv5t.xn----yg7dt1332g; \u0361𐫫\u0369ᡷ.-󠰛鞰; [B1, V3, V6, V7]; xn--cvaq482npv5t.xn----yg7dt1332g; ; ;  # ͡𐫫ͩᡷ.-鞰
+-.\u0ACD剘ß𐫃; ; [B1, V3, V6]; -.xn--zca791c493duf8i; ; -.xn--ss-bqg4734erywk;  # -.્剘ß𐫃
+-.\u0ACD剘SS𐫃; -.\u0ACD剘ss𐫃; [B1, V3, V6]; -.xn--ss-bqg4734erywk; ; ;  # -.્剘ss𐫃
+-.\u0ACD剘ss𐫃; ; [B1, V3, V6]; -.xn--ss-bqg4734erywk; ; ;  # -.્剘ss𐫃
+-.\u0ACD剘Ss𐫃; -.\u0ACD剘ss𐫃; [B1, V3, V6]; -.xn--ss-bqg4734erywk; ; ;  # -.્剘ss𐫃
+-.xn--ss-bqg4734erywk; -.\u0ACD剘ss𐫃; [B1, V3, V6]; -.xn--ss-bqg4734erywk; ; ;  # -.્剘ss𐫃
+-.xn--zca791c493duf8i; -.\u0ACD剘ß𐫃; [B1, V3, V6]; -.xn--zca791c493duf8i; ; ;  # -.્剘ß𐫃
+\u08FB𞵸｡-; \u08FB𞵸.-; [B1, V3, V6, V7]; xn--b1b2719v.-; ; ;  # ࣻ.-
+\u08FB𞵸。-; \u08FB𞵸.-; [B1, V3, V6, V7]; xn--b1b2719v.-; ; ;  # ࣻ.-
+xn--b1b2719v.-; \u08FB𞵸.-; [B1, V3, V6, V7]; xn--b1b2719v.-; ; ;  # ࣻ.-
+⒈󠈻𐹲｡≠\u0603𐹽; ⒈󠈻𐹲.≠\u0603𐹽; [B1, V7]; xn--tshw766f1153g.xn--lfb536lb35n; ; ;  # ⒈𐹲.≠𐹽
+⒈󠈻𐹲｡=\u0338\u0603𐹽; ⒈󠈻𐹲.≠\u0603𐹽; [B1, V7]; xn--tshw766f1153g.xn--lfb536lb35n; ; ;  # ⒈𐹲.≠𐹽
+1.󠈻𐹲。≠\u0603𐹽; 1.󠈻𐹲.≠\u0603𐹽; [B1, V7]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ;  # 1.𐹲.≠𐹽
+1.󠈻𐹲。=\u0338\u0603𐹽; 1.󠈻𐹲.≠\u0603𐹽; [B1, V7]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ;  # 1.𐹲.≠𐹽
+1.xn--qo0dl3077c.xn--lfb536lb35n; 1.󠈻𐹲.≠\u0603𐹽; [B1, V7]; 1.xn--qo0dl3077c.xn--lfb536lb35n; ; ;  # 1.𐹲.≠𐹽
+xn--tshw766f1153g.xn--lfb536lb35n; ⒈󠈻𐹲.≠\u0603𐹽; [B1, V7]; xn--tshw766f1153g.xn--lfb536lb35n; ; ;  # ⒈𐹲.≠𐹽
+𐹢󠈚Ⴎ\u200C.㖾𐹡; 𐹢󠈚ⴎ\u200C.㖾𐹡; [B1, B5, B6, C1, V7]; xn--0ug342clq0pqxv4i.xn--pelu572d; ; xn--5kjx323em053g.xn--pelu572d; [B1, B5, B6, V7] # 𐹢ⴎ.㖾𐹡
+𐹢󠈚ⴎ\u200C.㖾𐹡; ; [B1, B5, B6, C1, V7]; xn--0ug342clq0pqxv4i.xn--pelu572d; ; xn--5kjx323em053g.xn--pelu572d; [B1, B5, B6, V7] # 𐹢ⴎ.㖾𐹡
+xn--5kjx323em053g.xn--pelu572d; 𐹢󠈚ⴎ.㖾𐹡; [B1, B5, B6, V7]; xn--5kjx323em053g.xn--pelu572d; ; ;  # 𐹢ⴎ.㖾𐹡
+xn--0ug342clq0pqxv4i.xn--pelu572d; 𐹢󠈚ⴎ\u200C.㖾𐹡; [B1, B5, B6, C1, V7]; xn--0ug342clq0pqxv4i.xn--pelu572d; ; ;  # 𐹢ⴎ.㖾𐹡
+xn--mnd9001km0o0g.xn--pelu572d; 𐹢󠈚Ⴎ.㖾𐹡; [B1, B5, B6, V7]; xn--mnd9001km0o0g.xn--pelu572d; ; ;  # 𐹢Ⴎ.㖾𐹡
+xn--mnd289ezj4pqxp0i.xn--pelu572d; 𐹢󠈚Ⴎ\u200C.㖾𐹡; [B1, B5, B6, C1, V7]; xn--mnd289ezj4pqxp0i.xn--pelu572d; ; ;  # 𐹢Ⴎ.㖾𐹡
+򩼗．\u07C7ᡖႳႧ; 򩼗.\u07C7ᡖⴓⴇ; [B2, B3, V7]; xn--te28c.xn--isb295fbtpmb; ; ;  # .߇ᡖⴓⴇ
+򩼗.\u07C7ᡖႳႧ; 򩼗.\u07C7ᡖⴓⴇ; [B2, B3, V7]; xn--te28c.xn--isb295fbtpmb; ; ;  # .߇ᡖⴓⴇ
+򩼗.\u07C7ᡖⴓⴇ; ; [B2, B3, V7]; xn--te28c.xn--isb295fbtpmb; ; ;  # .߇ᡖⴓⴇ
+xn--te28c.xn--isb295fbtpmb; 򩼗.\u07C7ᡖⴓⴇ; [B2, B3, V7]; xn--te28c.xn--isb295fbtpmb; ; ;  # .߇ᡖⴓⴇ
+򩼗．\u07C7ᡖⴓⴇ; 򩼗.\u07C7ᡖⴓⴇ; [B2, B3, V7]; xn--te28c.xn--isb295fbtpmb; ; ;  # .߇ᡖⴓⴇ
+xn--te28c.xn--isb856b9a631d; 򩼗.\u07C7ᡖႳႧ; [B2, B3, V7]; xn--te28c.xn--isb856b9a631d; ; ;  # .߇ᡖႳႧ
+򩼗.\u07C7ᡖႳⴇ; 򩼗.\u07C7ᡖⴓⴇ; [B2, B3, V7]; xn--te28c.xn--isb295fbtpmb; ; ;  # .߇ᡖⴓⴇ
+xn--te28c.xn--isb286btrgo7w; 򩼗.\u07C7ᡖႳⴇ; [B2, B3, V7]; xn--te28c.xn--isb286btrgo7w; ; ;  # .߇ᡖႳⴇ
+򩼗．\u07C7ᡖႳⴇ; 򩼗.\u07C7ᡖⴓⴇ; [B2, B3, V7]; xn--te28c.xn--isb295fbtpmb; ; ;  # .߇ᡖⴓⴇ
+\u200D􅍉.\u06B3\u0775; ; [B1, C2, V7]; xn--1ug39444n.xn--mkb20b; ; xn--3j78f.xn--mkb20b; [V7] # .ڳݵ
+xn--3j78f.xn--mkb20b; 􅍉.\u06B3\u0775; [V7]; xn--3j78f.xn--mkb20b; ; ;  # .ڳݵ
+xn--1ug39444n.xn--mkb20b; \u200D􅍉.\u06B3\u0775; [B1, C2, V7]; xn--1ug39444n.xn--mkb20b; ; ;  # .ڳݵ
+𲤱⒛⾳．ꡦ⒈; 𲤱⒛音.ꡦ⒈; [V7]; xn--dth6033bzbvx.xn--tsh9439b; ; ;  # ⒛音.ꡦ⒈
+𲤱20.音.ꡦ1.; ; [V7]; xn--20-9802c.xn--0w5a.xn--1-eg4e.; [V7, A4_2]; ;  # 20.音.ꡦ1.
+xn--20-9802c.xn--0w5a.xn--1-eg4e.; 𲤱20.音.ꡦ1.; [V7]; xn--20-9802c.xn--0w5a.xn--1-eg4e.; [V7, A4_2]; ;  # 20.音.ꡦ1.
+xn--dth6033bzbvx.xn--tsh9439b; 𲤱⒛音.ꡦ⒈; [V7]; xn--dth6033bzbvx.xn--tsh9439b; ; ;  # ⒛音.ꡦ⒈
+\u07DC８񳦓-｡򞲙𑁿𐩥\u09CD; \u07DC8񳦓-.򞲙𑁿𐩥\u09CD; [B2, B3, B5, B6, V3, V7]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ;  # ߜ8-.𑁿𐩥্
+\u07DC8񳦓-。򞲙𑁿𐩥\u09CD; \u07DC8񳦓-.򞲙𑁿𐩥\u09CD; [B2, B3, B5, B6, V3, V7]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ;  # ߜ8-.𑁿𐩥্
+xn--8--rve13079p.xn--b7b9842k42df776x; \u07DC8񳦓-.򞲙𑁿𐩥\u09CD; [B2, B3, B5, B6, V3, V7]; xn--8--rve13079p.xn--b7b9842k42df776x; ; ;  # ߜ8-.𑁿𐩥্
+Ⴕ。۰≮ß\u0745; ⴕ.۰≮ß\u0745; ; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i;  # ⴕ.۰≮ß݅
+Ⴕ。۰<\u0338ß\u0745; ⴕ.۰≮ß\u0745; ; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i;  # ⴕ.۰≮ß݅
+ⴕ。۰<\u0338ß\u0745; ⴕ.۰≮ß\u0745; ; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i;  # ⴕ.۰≮ß݅
+ⴕ。۰≮ß\u0745; ⴕ.۰≮ß\u0745; ; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i;  # ⴕ.۰≮ß݅
+Ⴕ。۰≮SS\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+Ⴕ。۰<\u0338SS\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+ⴕ。۰<\u0338ss\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+ⴕ。۰≮ss\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+Ⴕ。۰≮Ss\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+Ⴕ。۰<\u0338Ss\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+xn--dlj.xn--ss-jbe65aw27i; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+ⴕ.۰≮ss\u0745; ; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+ⴕ.۰<\u0338ss\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+Ⴕ.۰<\u0338SS\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+Ⴕ.۰≮SS\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+Ⴕ.۰≮Ss\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+Ⴕ.۰<\u0338Ss\u0745; ⴕ.۰≮ss\u0745; ; xn--dlj.xn--ss-jbe65aw27i; ; ;  # ⴕ.۰≮ss݅
+xn--dlj.xn--zca912alh227g; ⴕ.۰≮ß\u0745; ; xn--dlj.xn--zca912alh227g; ; ;  # ⴕ.۰≮ß݅
+ⴕ.۰≮ß\u0745; ; ; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i;  # ⴕ.۰≮ß݅
+ⴕ.۰<\u0338ß\u0745; ⴕ.۰≮ß\u0745; ; xn--dlj.xn--zca912alh227g; ; xn--dlj.xn--ss-jbe65aw27i;  # ⴕ.۰≮ß݅
+xn--tnd.xn--ss-jbe65aw27i; Ⴕ.۰≮ss\u0745; [V7]; xn--tnd.xn--ss-jbe65aw27i; ; ;  # Ⴕ.۰≮ss݅
+xn--tnd.xn--zca912alh227g; Ⴕ.۰≮ß\u0745; [V7]; xn--tnd.xn--zca912alh227g; ; ;  # Ⴕ.۰≮ß݅
+\u07E9-.𝨗꒱\u1B72; ; [B1, B3, V3, V6]; xn----odd.xn--dwf8994dc8wj; ; ;  # ߩ-.𝨗꒱᭲
+xn----odd.xn--dwf8994dc8wj; \u07E9-.𝨗꒱\u1B72; [B1, B3, V3, V6]; xn----odd.xn--dwf8994dc8wj; ; ;  # ߩ-.𝨗꒱᭲
+𞼸\u200C.≯䕵⫧; ; [B1, B3, C1, V7]; xn--0ugx453p.xn--hdh754ax6w; ; xn--sn7h.xn--hdh754ax6w; [B1, V7] # .≯䕵⫧
+𞼸\u200C.>\u0338䕵⫧; 𞼸\u200C.≯䕵⫧; [B1, B3, C1, V7]; xn--0ugx453p.xn--hdh754ax6w; ; xn--sn7h.xn--hdh754ax6w; [B1, V7] # .≯䕵⫧
+xn--sn7h.xn--hdh754ax6w; 𞼸.≯䕵⫧; [B1, V7]; xn--sn7h.xn--hdh754ax6w; ; ;  # .≯䕵⫧
+xn--0ugx453p.xn--hdh754ax6w; 𞼸\u200C.≯䕵⫧; [B1, B3, C1, V7]; xn--0ugx453p.xn--hdh754ax6w; ; ;  # .≯䕵⫧
+𐨅ß\uFC57.\u06AC۳︒; 𐨅ß\u064A\u062E.\u06AC۳︒; [B1, B3, V6, V7]; xn--zca23yncs877j.xn--fkb6lp314e; ; xn--ss-ytd5i7765l.xn--fkb6lp314e;  # 𐨅ßيخ.ڬ۳︒
+𐨅ß\u064A\u062E.\u06AC۳。; 𐨅ß\u064A\u062E.\u06AC۳.; [B1, V6]; xn--zca23yncs877j.xn--fkb6l.; [B1, V6, A4_2]; xn--ss-ytd5i7765l.xn--fkb6l.;  # 𐨅ßيخ.ڬ۳.
+𐨅SS\u064A\u062E.\u06AC۳。; 𐨅ss\u064A\u062E.\u06AC۳.; [B1, V6]; xn--ss-ytd5i7765l.xn--fkb6l.; [B1, V6, A4_2]; ;  # 𐨅ssيخ.ڬ۳.
+𐨅ss\u064A\u062E.\u06AC۳。; 𐨅ss\u064A\u062E.\u06AC۳.; [B1, V6]; xn--ss-ytd5i7765l.xn--fkb6l.; [B1, V6, A4_2]; ;  # 𐨅ssيخ.ڬ۳.
+𐨅Ss\u064A\u062E.\u06AC۳。; 𐨅ss\u064A\u062E.\u06AC۳.; [B1, V6]; xn--ss-ytd5i7765l.xn--fkb6l.; [B1, V6, A4_2]; ;  # 𐨅ssيخ.ڬ۳.
+xn--ss-ytd5i7765l.xn--fkb6l.; 𐨅ss\u064A\u062E.\u06AC۳.; [B1, V6]; xn--ss-ytd5i7765l.xn--fkb6l.; [B1, V6, A4_2]; ;  # 𐨅ssيخ.ڬ۳.
+xn--zca23yncs877j.xn--fkb6l.; 𐨅ß\u064A\u062E.\u06AC۳.; [B1, V6]; xn--zca23yncs877j.xn--fkb6l.; [B1, V6, A4_2]; ;  # 𐨅ßيخ.ڬ۳.
+𐨅SS\uFC57.\u06AC۳︒; 𐨅ss\u064A\u062E.\u06AC۳︒; [B1, B3, V6, V7]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ;  # 𐨅ssيخ.ڬ۳︒
+𐨅ss\uFC57.\u06AC۳︒; 𐨅ss\u064A\u062E.\u06AC۳︒; [B1, B3, V6, V7]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ;  # 𐨅ssيخ.ڬ۳︒
+𐨅Ss\uFC57.\u06AC۳︒; 𐨅ss\u064A\u062E.\u06AC۳︒; [B1, B3, V6, V7]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ;  # 𐨅ssيخ.ڬ۳︒
+xn--ss-ytd5i7765l.xn--fkb6lp314e; 𐨅ss\u064A\u062E.\u06AC۳︒; [B1, B3, V6, V7]; xn--ss-ytd5i7765l.xn--fkb6lp314e; ; ;  # 𐨅ssيخ.ڬ۳︒
+xn--zca23yncs877j.xn--fkb6lp314e; 𐨅ß\u064A\u062E.\u06AC۳︒; [B1, B3, V6, V7]; xn--zca23yncs877j.xn--fkb6lp314e; ; ;  # 𐨅ßيخ.ڬ۳︒
+-≮🡒\u1CED.񏿾Ⴁ\u0714; -≮🡒\u1CED.񏿾ⴁ\u0714; [B1, V3, V7]; xn----44l04zxt68c.xn--enb135qf106f; ; ;  # -≮🡒᳭.ⴁܔ
+-<\u0338🡒\u1CED.񏿾Ⴁ\u0714; -≮🡒\u1CED.񏿾ⴁ\u0714; [B1, V3, V7]; xn----44l04zxt68c.xn--enb135qf106f; ; ;  # -≮🡒᳭.ⴁܔ
+-<\u0338🡒\u1CED.񏿾ⴁ\u0714; -≮🡒\u1CED.񏿾ⴁ\u0714; [B1, V3, V7]; xn----44l04zxt68c.xn--enb135qf106f; ; ;  # -≮🡒᳭.ⴁܔ
+-≮🡒\u1CED.񏿾ⴁ\u0714; ; [B1, V3, V7]; xn----44l04zxt68c.xn--enb135qf106f; ; ;  # -≮🡒᳭.ⴁܔ
+xn----44l04zxt68c.xn--enb135qf106f; -≮🡒\u1CED.񏿾ⴁ\u0714; [B1, V3, V7]; xn----44l04zxt68c.xn--enb135qf106f; ; ;  # -≮🡒᳭.ⴁܔ
+xn----44l04zxt68c.xn--enb300c1597h; -≮🡒\u1CED.񏿾Ⴁ\u0714; [B1, V3, V7]; xn----44l04zxt68c.xn--enb300c1597h; ; ;  # -≮🡒᳭.Ⴁܔ
+𞤨｡ꡏ\u200D\u200C; 𞤨.ꡏ\u200D\u200C; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; xn--ge6h.xn--oc9a; [] # 𞤨.ꡏ
+𞤨。ꡏ\u200D\u200C; 𞤨.ꡏ\u200D\u200C; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; xn--ge6h.xn--oc9a; [] # 𞤨.ꡏ
+𞤆。ꡏ\u200D\u200C; 𞤨.ꡏ\u200D\u200C; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; xn--ge6h.xn--oc9a; [] # 𞤨.ꡏ
 xn--ge6h.xn--oc9a; 𞤨.ꡏ; ; xn--ge6h.xn--oc9a; ; ;  # 𞤨.ꡏ
 𞤨.ꡏ; ; ; xn--ge6h.xn--oc9a; ; ;  # 𞤨.ꡏ
 𞤆.ꡏ; 𞤨.ꡏ; ; xn--ge6h.xn--oc9a; ; ;  # 𞤨.ꡏ
-xn--ge6h.xn--0ugb9575h; 𞤨.ꡏ‍‌; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; ;  # 𞤨.ꡏ
-𞤆｡ꡏ‍‌; 𞤨.ꡏ‍‌; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; xn--ge6h.xn--oc9a; [] # 𞤨.ꡏ
-󠅹𑂶．ᢌ𑂹٩; 𑂶.ᢌ𑂹٩; [B1, B3, B5, B6, V5]; xn--b50d.xn--iib993gyp5p; ; ;  # 𑂶.ᢌ𑂹٩
-󠅹𑂶.ᢌ𑂹٩; 𑂶.ᢌ𑂹٩; [B1, B3, B5, B6, V5]; xn--b50d.xn--iib993gyp5p; ; ;  # 𑂶.ᢌ𑂹٩
-xn--b50d.xn--iib993gyp5p; 𑂶.ᢌ𑂹٩; [B1, B3, B5, B6, V5]; xn--b50d.xn--iib993gyp5p; ; ;  # 𑂶.ᢌ𑂹٩
-Ⅎ󠅺񝵒。≯⾑; Ⅎ񝵒.≯襾; [P1, V6]; xn--f3g73398c.xn--hdhz171b; ; ;  # Ⅎ.≯襾
-Ⅎ󠅺񝵒。≯⾑; Ⅎ񝵒.≯襾; [P1, V6]; xn--f3g73398c.xn--hdhz171b; ; ;  # Ⅎ.≯襾
-Ⅎ󠅺񝵒。≯襾; Ⅎ񝵒.≯襾; [P1, V6]; xn--f3g73398c.xn--hdhz171b; ; ;  # Ⅎ.≯襾
-Ⅎ󠅺񝵒。≯襾; Ⅎ񝵒.≯襾; [P1, V6]; xn--f3g73398c.xn--hdhz171b; ; ;  # Ⅎ.≯襾
-ⅎ󠅺񝵒。≯襾; ⅎ񝵒.≯襾; [P1, V6]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
-ⅎ󠅺񝵒。≯襾; ⅎ񝵒.≯襾; [P1, V6]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
-xn--73g39298c.xn--hdhz171b; ⅎ񝵒.≯襾; [V6]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
-xn--f3g73398c.xn--hdhz171b; Ⅎ񝵒.≯襾; [V6]; xn--f3g73398c.xn--hdhz171b; ; ;  # Ⅎ.≯襾
-ⅎ󠅺񝵒。≯⾑; ⅎ񝵒.≯襾; [P1, V6]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
-ⅎ󠅺񝵒。≯⾑; ⅎ񝵒.≯襾; [P1, V6]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
-ς‍ු٠｡-; ς‍ු٠.-; [B1, B5, B6, C2, V3]; xn--3xa45ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # ςු٠.-
-ς‍ු٠。-; ς‍ු٠.-; [B1, B5, B6, C2, V3]; xn--3xa45ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # ςු٠.-
-Σ‍ු٠。-; σ‍ු٠.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
-σ‍ු٠。-; σ‍ු٠.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
-xn--4xa25ks2j.-; σු٠.-; [B1, B5, B6, V3]; xn--4xa25ks2j.-; ; ;  # σු٠.-
-xn--4xa25ks2jenu.-; σ‍ු٠.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; ;  # σු٠.-
-xn--3xa45ks2jenu.-; ς‍ු٠.-; [B1, B5, B6, C2, V3]; xn--3xa45ks2jenu.-; ; ;  # ςු٠.-
-Σ‍ු٠｡-; σ‍ු٠.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
-σ‍ු٠｡-; σ‍ු٠.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
-‌.ßႩ-; ; [C1, P1, V3, V6]; xn--0ug.xn----pfa042j; ; .xn--ss--4rn; [P1, V3, V6, A4_2] # .ßႩ-
-‌.ßⴉ-; ; [C1, V3]; xn--0ug.xn----pfa2305a; ; .xn--ss--bi1b; [V3, A4_2] # .ßⴉ-
-‌.SSႩ-; ‌.ssႩ-; [C1, P1, V3, V6]; xn--0ug.xn--ss--4rn; ; .xn--ss--4rn; [P1, V3, V6, A4_2] # .ssႩ-
-‌.ssⴉ-; ; [C1, V3]; xn--0ug.xn--ss--bi1b; ; .xn--ss--bi1b; [V3, A4_2] # .ssⴉ-
-‌.Ssⴉ-; ‌.ssⴉ-; [C1, V3]; xn--0ug.xn--ss--bi1b; ; .xn--ss--bi1b; [V3, A4_2] # .ssⴉ-
+xn--ge6h.xn--0ugb9575h; 𞤨.ꡏ\u200D\u200C; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; ;  # 𞤨.ꡏ
+𞤆｡ꡏ\u200D\u200C; 𞤨.ꡏ\u200D\u200C; [B6, C1, C2]; xn--ge6h.xn--0ugb9575h; ; xn--ge6h.xn--oc9a; [] # 𞤨.ꡏ
+󠅹𑂶．ᢌ𑂹\u0669; 𑂶.ᢌ𑂹\u0669; [B1, B5, B6, V6]; xn--b50d.xn--iib993gyp5p; ; ;  # 𑂶.ᢌ𑂹٩
+󠅹𑂶.ᢌ𑂹\u0669; 𑂶.ᢌ𑂹\u0669; [B1, B5, B6, V6]; xn--b50d.xn--iib993gyp5p; ; ;  # 𑂶.ᢌ𑂹٩
+xn--b50d.xn--iib993gyp5p; 𑂶.ᢌ𑂹\u0669; [B1, B5, B6, V6]; xn--b50d.xn--iib993gyp5p; ; ;  # 𑂶.ᢌ𑂹٩
+Ⅎ󠅺񝵒。≯⾑; ⅎ񝵒.≯襾; [V7]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
+Ⅎ󠅺񝵒。>\u0338⾑; ⅎ񝵒.≯襾; [V7]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
+Ⅎ󠅺񝵒。≯襾; ⅎ񝵒.≯襾; [V7]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
+Ⅎ󠅺񝵒。>\u0338襾; ⅎ񝵒.≯襾; [V7]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
+ⅎ󠅺񝵒。>\u0338襾; ⅎ񝵒.≯襾; [V7]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
+ⅎ󠅺񝵒。≯襾; ⅎ񝵒.≯襾; [V7]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
+xn--73g39298c.xn--hdhz171b; ⅎ񝵒.≯襾; [V7]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
+ⅎ󠅺񝵒。>\u0338⾑; ⅎ񝵒.≯襾; [V7]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
+ⅎ󠅺񝵒。≯⾑; ⅎ񝵒.≯襾; [V7]; xn--73g39298c.xn--hdhz171b; ; ;  # ⅎ.≯襾
+xn--f3g73398c.xn--hdhz171b; Ⅎ񝵒.≯襾; [V7]; xn--f3g73398c.xn--hdhz171b; ; ;  # Ⅎ.≯襾
+ς\u200D\u0DD4\u0660｡-; ς\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--3xa45ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # ςු٠.-
+ς\u200D\u0DD4\u0660。-; ς\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--3xa45ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # ςු٠.-
+Σ\u200D\u0DD4\u0660。-; σ\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
+σ\u200D\u0DD4\u0660。-; σ\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
+xn--4xa25ks2j.-; σ\u0DD4\u0660.-; [B1, B5, B6, V3]; xn--4xa25ks2j.-; ; ;  # σු٠.-
+xn--4xa25ks2jenu.-; σ\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; ;  # σු٠.-
+xn--3xa45ks2jenu.-; ς\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--3xa45ks2jenu.-; ; ;  # ςු٠.-
+Σ\u200D\u0DD4\u0660｡-; σ\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
+σ\u200D\u0DD4\u0660｡-; σ\u200D\u0DD4\u0660.-; [B1, B5, B6, C2, V3]; xn--4xa25ks2jenu.-; ; xn--4xa25ks2j.-; [B1, B5, B6, V3] # σු٠.-
+\u200C.ßႩ-; \u200C.ßⴉ-; [C1, V3]; xn--0ug.xn----pfa2305a; ; .xn--ss--bi1b; [V3, A4_2] # .ßⴉ-
+\u200C.ßⴉ-; ; [C1, V3]; xn--0ug.xn----pfa2305a; ; .xn--ss--bi1b; [V3, A4_2] # .ßⴉ-
+\u200C.SSႩ-; \u200C.ssⴉ-; [C1, V3]; xn--0ug.xn--ss--bi1b; ; .xn--ss--bi1b; [V3, A4_2] # .ssⴉ-
+\u200C.ssⴉ-; ; [C1, V3]; xn--0ug.xn--ss--bi1b; ; .xn--ss--bi1b; [V3, A4_2] # .ssⴉ-
+\u200C.Ssⴉ-; \u200C.ssⴉ-; [C1, V3]; xn--0ug.xn--ss--bi1b; ; .xn--ss--bi1b; [V3, A4_2] # .ssⴉ-
 .xn--ss--bi1b; .ssⴉ-; [V3, X4_2]; .xn--ss--bi1b; [V3, A4_2]; ;  # .ssⴉ-
-xn--0ug.xn--ss--bi1b; ‌.ssⴉ-; [C1, V3]; xn--0ug.xn--ss--bi1b; ; ;  # .ssⴉ-
-.xn--ss--4rn; .ssႩ-; [V3, V6, X4_2]; .xn--ss--4rn; [V3, V6, A4_2]; ;  # .ssႩ-
-xn--0ug.xn--ss--4rn; ‌.ssႩ-; [C1, V3, V6]; xn--0ug.xn--ss--4rn; ; ;  # .ssႩ-
-xn--0ug.xn----pfa2305a; ‌.ßⴉ-; [C1, V3]; xn--0ug.xn----pfa2305a; ; ;  # .ßⴉ-
-xn--0ug.xn----pfa042j; ‌.ßႩ-; [C1, V3, V6]; xn--0ug.xn----pfa042j; ; ;  # .ßႩ-
-󍭲𐫍㓱。⾑; 󍭲𐫍㓱.襾; [B5, P1, V6]; xn--u7kt691dlj09f.xn--9v2a; ; ;  # 𐫍㓱.襾
-󍭲𐫍㓱。襾; 󍭲𐫍㓱.襾; [B5, P1, V6]; xn--u7kt691dlj09f.xn--9v2a; ; ;  # 𐫍㓱.襾
-xn--u7kt691dlj09f.xn--9v2a; 󍭲𐫍㓱.襾; [B5, V6]; xn--u7kt691dlj09f.xn--9v2a; ; ;  # 𐫍㓱.襾
-ڠ𐮋𐹰≮。≯󠦗‍; ڠ𐮋𐹰≮.≯󠦗‍; [B1, B3, C2, P1, V6]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; xn--2jb053lf13nyoc.xn--hdh08821l; [B1, B3, P1, V6] # ڠ𐮋𐹰≮.≯
-ڠ𐮋𐹰≮。≯󠦗‍; ڠ𐮋𐹰≮.≯󠦗‍; [B1, B3, C2, P1, V6]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; xn--2jb053lf13nyoc.xn--hdh08821l; [B1, B3, P1, V6] # ڠ𐮋𐹰≮.≯
-xn--2jb053lf13nyoc.xn--hdh08821l; ڠ𐮋𐹰≮.≯󠦗; [B1, B3, V6]; xn--2jb053lf13nyoc.xn--hdh08821l; ; ;  # ڠ𐮋𐹰≮.≯
-xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ڠ𐮋𐹰≮.≯󠦗‍; [B1, B3, C2, V6]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; ;  # ڠ𐮋𐹰≮.≯
-𝟞｡񃰶ݷࢰ⩋; 6.񃰶ݷࢰ⩋; [B1, B5, B6, P1, V6]; 6.xn--7pb04do15eq748f; ; ;  # 6.ݷࢰ⩋
-6。񃰶ݷࢰ⩋; 6.񃰶ݷࢰ⩋; [B1, B5, B6, P1, V6]; 6.xn--7pb04do15eq748f; ; ;  # 6.ݷࢰ⩋
-6.xn--7pb04do15eq748f; 6.񃰶ݷࢰ⩋; [B1, B5, B6, V6]; 6.xn--7pb04do15eq748f; ; ;  # 6.ݷࢰ⩋
--ﳽ。𑇀𑍴; -شى.𑇀𑍴; [B1, V3, V5]; xn----qnc7d.xn--wd1d62a; ; ;  # -شى.𑇀𑍴
--ﳽ。𑇀𑍴; -شى.𑇀𑍴; [B1, V3, V5]; xn----qnc7d.xn--wd1d62a; ; ;  # -شى.𑇀𑍴
--شى。𑇀𑍴; -شى.𑇀𑍴; [B1, V3, V5]; xn----qnc7d.xn--wd1d62a; ; ;  # -شى.𑇀𑍴
-xn----qnc7d.xn--wd1d62a; -شى.𑇀𑍴; [B1, V3, V5]; xn----qnc7d.xn--wd1d62a; ; ;  # -شى.𑇀𑍴
-‌󠊶𝟏.ൃ򪥐𐹬󊓶; ‌󠊶1.ൃ򪥐𐹬󊓶; [B1, C1, P1, V5, V6]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; xn--1-f521m.xn--mxc0872kcu37dnmem; [B1, P1, V5, V6] # 1.ൃ𐹬
-‌󠊶1.ൃ򪥐𐹬󊓶; ; [B1, C1, P1, V5, V6]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; xn--1-f521m.xn--mxc0872kcu37dnmem; [B1, P1, V5, V6] # 1.ൃ𐹬
-xn--1-f521m.xn--mxc0872kcu37dnmem; 󠊶1.ൃ򪥐𐹬󊓶; [B1, V5, V6]; xn--1-f521m.xn--mxc0872kcu37dnmem; ; ;  # 1.ൃ𐹬
-xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ‌󠊶1.ൃ򪥐𐹬󊓶; [B1, C1, V5, V6]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; ;  # 1.ൃ𐹬
+xn--0ug.xn--ss--bi1b; \u200C.ssⴉ-; [C1, V3]; xn--0ug.xn--ss--bi1b; ; ;  # .ssⴉ-
+xn--0ug.xn----pfa2305a; \u200C.ßⴉ-; [C1, V3]; xn--0ug.xn----pfa2305a; ; ;  # .ßⴉ-
+.xn--ss--4rn; .ssႩ-; [V3, V7, X4_2]; .xn--ss--4rn; [V3, V7, A4_2]; ;  # .ssႩ-
+xn--0ug.xn--ss--4rn; \u200C.ssႩ-; [C1, V3, V7]; xn--0ug.xn--ss--4rn; ; ;  # .ssႩ-
+xn--0ug.xn----pfa042j; \u200C.ßႩ-; [C1, V3, V7]; xn--0ug.xn----pfa042j; ; ;  # .ßႩ-
+󍭲𐫍㓱。⾑; 󍭲𐫍㓱.襾; [B5, V7]; xn--u7kt691dlj09f.xn--9v2a; ; ;  # 𐫍㓱.襾
+󍭲𐫍㓱。襾; 󍭲𐫍㓱.襾; [B5, V7]; xn--u7kt691dlj09f.xn--9v2a; ; ;  # 𐫍㓱.襾
+xn--u7kt691dlj09f.xn--9v2a; 󍭲𐫍㓱.襾; [B5, V7]; xn--u7kt691dlj09f.xn--9v2a; ; ;  # 𐫍㓱.襾
+\u06A0𐮋𐹰≮。≯󠦗\u200D; \u06A0𐮋𐹰≮.≯󠦗\u200D; [B1, B3, C2, V7]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; xn--2jb053lf13nyoc.xn--hdh08821l; [B1, B3, V7] # ڠ𐮋𐹰≮.≯
+\u06A0𐮋𐹰<\u0338。>\u0338󠦗\u200D; \u06A0𐮋𐹰≮.≯󠦗\u200D; [B1, B3, C2, V7]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; xn--2jb053lf13nyoc.xn--hdh08821l; [B1, B3, V7] # ڠ𐮋𐹰≮.≯
+xn--2jb053lf13nyoc.xn--hdh08821l; \u06A0𐮋𐹰≮.≯󠦗; [B1, B3, V7]; xn--2jb053lf13nyoc.xn--hdh08821l; ; ;  # ڠ𐮋𐹰≮.≯
+xn--2jb053lf13nyoc.xn--1ugx6gc8096c; \u06A0𐮋𐹰≮.≯󠦗\u200D; [B1, B3, C2, V7]; xn--2jb053lf13nyoc.xn--1ugx6gc8096c; ; ;  # ڠ𐮋𐹰≮.≯
+𝟞｡񃰶\u0777\u08B0⩋; 6.񃰶\u0777\u08B0⩋; [B1, B5, B6, V7]; 6.xn--7pb04do15eq748f; ; ;  # 6.ݷࢰ⩋
+6。񃰶\u0777\u08B0⩋; 6.񃰶\u0777\u08B0⩋; [B1, B5, B6, V7]; 6.xn--7pb04do15eq748f; ; ;  # 6.ݷࢰ⩋
+6.xn--7pb04do15eq748f; 6.񃰶\u0777\u08B0⩋; [B1, B5, B6, V7]; 6.xn--7pb04do15eq748f; ; ;  # 6.ݷࢰ⩋
+-\uFCFD。𑇀𑍴; -\u0634\u0649.𑇀𑍴; [B1, V3, V6]; xn----qnc7d.xn--wd1d62a; ; ;  # -شى.𑇀𑍴
+-\uFCFD。𑇀𑍴; -\u0634\u0649.𑇀𑍴; [B1, V3, V6]; xn----qnc7d.xn--wd1d62a; ; ;  # -شى.𑇀𑍴
+-\u0634\u0649。𑇀𑍴; -\u0634\u0649.𑇀𑍴; [B1, V3, V6]; xn----qnc7d.xn--wd1d62a; ; ;  # -شى.𑇀𑍴
+xn----qnc7d.xn--wd1d62a; -\u0634\u0649.𑇀𑍴; [B1, V3, V6]; xn----qnc7d.xn--wd1d62a; ; ;  # -شى.𑇀𑍴
+\u200C󠊶𝟏.\u0D43򪥐𐹬󊓶; \u200C󠊶1.\u0D43򪥐𐹬󊓶; [B1, C1, V6, V7]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; xn--1-f521m.xn--mxc0872kcu37dnmem; [B1, V6, V7] # 1.ൃ𐹬
+\u200C󠊶1.\u0D43򪥐𐹬󊓶; ; [B1, C1, V6, V7]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; xn--1-f521m.xn--mxc0872kcu37dnmem; [B1, V6, V7] # 1.ൃ𐹬
+xn--1-f521m.xn--mxc0872kcu37dnmem; 󠊶1.\u0D43򪥐𐹬󊓶; [B1, V6, V7]; xn--1-f521m.xn--mxc0872kcu37dnmem; ; ;  # 1.ൃ𐹬
+xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; \u200C󠊶1.\u0D43򪥐𐹬󊓶; [B1, C1, V6, V7]; xn--1-rgnu0071n.xn--mxc0872kcu37dnmem; ; ;  # 1.ൃ𐹬
 齙--𝟰.ß; 齙--4.ß; ; xn----4-p16k.xn--zca; ; xn----4-p16k.ss;  # 齙--4.ß
 齙--4.ß; ; ; xn----4-p16k.xn--zca; ; xn----4-p16k.ss;  # 齙--4.ß
 齙--4.SS; 齙--4.ss; ; xn----4-p16k.ss; ; ;  # 齙--4.ss
@@ -4208,2127 +4337,2170 @@ xn----4-p16k.xn--zca; 齙--4.ß; ; xn----4-p16k.xn--zca; ; ;  # 齙--4.ß
 齙--𝟰.SS; 齙--4.ss; ; xn----4-p16k.ss; ; ;  # 齙--4.ss
 齙--𝟰.ss; 齙--4.ss; ; xn----4-p16k.ss; ; ;  # 齙--4.ss
 齙--𝟰.Ss; 齙--4.ss; ; xn----4-p16k.ss; ; ;  # 齙--4.ss
-᯲.𐹢𞀖‌; ; [B1, C1, V5]; xn--0zf.xn--0ug9894grqqf; ; xn--0zf.xn--9n0d2296a; [B1, V5] # ᯲.𐹢𞀖
-xn--0zf.xn--9n0d2296a; ᯲.𐹢𞀖; [B1, V5]; xn--0zf.xn--9n0d2296a; ; ;  # ᯲.𐹢𞀖
-xn--0zf.xn--0ug9894grqqf; ᯲.𐹢𞀖‌; [B1, C1, V5]; xn--0zf.xn--0ug9894grqqf; ; ;  # ᯲.𐹢𞀖
-󃲙󠋘｡?-‍; 󃲙󠋘.?-‍; [C2, P1, V6]; xn--ct86d8w51a.?-‍; [C2, P1, V6, A3]; xn--ct86d8w51a.?-; [P1, V3, V6, A3] # .-
-󃲙󠋘。?-‍; 󃲙󠋘.?-‍; [C2, P1, V6]; xn--ct86d8w51a.?-‍; [C2, P1, V6, A3]; xn--ct86d8w51a.?-; [P1, V3, V6, A3] # .-
-xn--ct86d8w51a.?-; 󃲙󠋘.?-; [P1, V3, V6]; xn--ct86d8w51a.?-; [P1, V3, V6, A3]; ;  # .-
-XN--CT86D8W51A.?-; 󃲙󠋘.?-; [P1, V3, V6]; xn--ct86d8w51a.?-; [P1, V3, V6, A3]; ;  # .-
-Xn--Ct86d8w51a.?-; 󃲙󠋘.?-; [P1, V3, V6]; xn--ct86d8w51a.?-; [P1, V3, V6, A3]; ;  # .-
-xn--ct86d8w51a.?-‍; 󃲙󠋘.?-‍; [C2, P1, V6]; xn--ct86d8w51a.?-‍; [C2, P1, V6, A3]; xn--ct86d8w51a.?-; [P1, V3, V6, A3] # .-
-XN--CT86D8W51A.?-‍; 󃲙󠋘.?-‍; [C2, P1, V6]; xn--ct86d8w51a.?-‍; [C2, P1, V6, A3]; xn--ct86d8w51a.?-; [P1, V3, V6, A3] # .-
-Xn--Ct86d8w51a.?-‍; 󃲙󠋘.?-‍; [C2, P1, V6]; xn--ct86d8w51a.?-‍; [C2, P1, V6, A3]; xn--ct86d8w51a.?-; [P1, V3, V6, A3] # .-
-᩠．𞵷-𝪩悎; ᩠.𞵷-𝪩悎; [B1, B2, B3, B6, P1, V5, V6]; xn--jof.xn----gf4bq282iezpa; ; ;  # ᩠.-𝪩悎
-᩠.𞵷-𝪩悎; ; [B1, B2, B3, B6, P1, V5, V6]; xn--jof.xn----gf4bq282iezpa; ; ;  # ᩠.-𝪩悎
-xn--jof.xn----gf4bq282iezpa; ᩠.𞵷-𝪩悎; [B1, B2, B3, B6, V5, V6]; xn--jof.xn----gf4bq282iezpa; ; ;  # ᩠.-𝪩悎
-𛜯󠊛．𞤳񏥾; 𛜯󠊛.𞤳񏥾; [B2, B3, B6, P1, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ;  # .𞤳
-𛜯󠊛.𞤳񏥾; ; [B2, B3, B6, P1, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ;  # .𞤳
-𛜯󠊛.𞤑񏥾; 𛜯󠊛.𞤳񏥾; [B2, B3, B6, P1, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ;  # .𞤳
-xn--xx5gy2741c.xn--re6hw266j; 𛜯󠊛.𞤳񏥾; [B2, B3, B6, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ;  # .𞤳
-𛜯󠊛．𞤑񏥾; 𛜯󠊛.𞤳񏥾; [B2, B3, B6, P1, V6]; xn--xx5gy2741c.xn--re6hw266j; ; ;  # .𞤳
-ܜ𐫒خ.𐋲; ; [B1]; xn--tgb98b8643d.xn--m97c; ; ;  # ܜ𐫒خ.𐋲
-xn--tgb98b8643d.xn--m97c; ܜ𐫒خ.𐋲; [B1]; xn--tgb98b8643d.xn--m97c; ; ;  # ܜ𐫒خ.𐋲
-𐼑𞤓ط࣢.?; 𐼑𞤵ط࣢.?; [P1, V6]; xn--2gb08k9w69agm0g.?; [P1, V6, A3]; ;  # 𐼑𞤵ط.
-𐼑𞤵ط࣢.?; ; [P1, V6]; xn--2gb08k9w69agm0g.?; [P1, V6, A3]; ;  # 𐼑𞤵ط.
-xn--2gb08k9w69agm0g.?; 𐼑𞤵ط࣢.?; [P1, V6]; xn--2gb08k9w69agm0g.?; [P1, V6, A3]; ;  # 𐼑𞤵ط.
-XN--2GB08K9W69AGM0G.?; 𐼑𞤵ط࣢.?; [P1, V6]; xn--2gb08k9w69agm0g.?; [P1, V6, A3]; ;  # 𐼑𞤵ط.
-Xn--2gb08k9w69agm0g.?; 𐼑𞤵ط࣢.?; [P1, V6]; xn--2gb08k9w69agm0g.?; [P1, V6, A3]; ;  # 𐼑𞤵ط.
-Ↄ。᳔੍𞷣; Ↄ.᳔੍𞷣; [B1, P1, V5, V6]; xn--q5g.xn--ybc995g0835a; ; ;  # Ↄ.᳔੍
-Ↄ。᳔੍𞷣; Ↄ.᳔੍𞷣; [B1, P1, V5, V6]; xn--q5g.xn--ybc995g0835a; ; ;  # Ↄ.᳔੍
-ↄ。᳔੍𞷣; ↄ.᳔੍𞷣; [B1, P1, V5, V6]; xn--r5g.xn--ybc995g0835a; ; ;  # ↄ.᳔੍
-xn--r5g.xn--ybc995g0835a; ↄ.᳔੍𞷣; [B1, V5, V6]; xn--r5g.xn--ybc995g0835a; ; ;  # ↄ.᳔੍
-xn--q5g.xn--ybc995g0835a; Ↄ.᳔੍𞷣; [B1, V5, V6]; xn--q5g.xn--ybc995g0835a; ; ;  # Ↄ.᳔੍
-ↄ。᳔੍𞷣; ↄ.᳔੍𞷣; [B1, P1, V5, V6]; xn--r5g.xn--ybc995g0835a; ; ;  # ↄ.᳔੍
-󠪢-。򛂏≮𑜫; 󠪢-.򛂏≮𑜫; [P1, V3, V6]; xn----bh61m.xn--gdhz157g0em1d; ; ;  # -.≮𑜫
-󠪢-。򛂏≮𑜫; 󠪢-.򛂏≮𑜫; [P1, V3, V6]; xn----bh61m.xn--gdhz157g0em1d; ; ;  # -.≮𑜫
-xn----bh61m.xn--gdhz157g0em1d; 󠪢-.򛂏≮𑜫; [V3, V6]; xn----bh61m.xn--gdhz157g0em1d; ; ;  # -.≮𑜫
-‌󠉹‍。򌿧≮Ⴉ; ‌󠉹‍.򌿧≮Ⴉ; [C1, C2, P1, V6]; xn--0ugc90904y.xn--hnd112gpz83n; ; xn--3n36e.xn--hnd112gpz83n; [P1, V6] # .≮Ⴉ
-‌󠉹‍。򌿧≮Ⴉ; ‌󠉹‍.򌿧≮Ⴉ; [C1, C2, P1, V6]; xn--0ugc90904y.xn--hnd112gpz83n; ; xn--3n36e.xn--hnd112gpz83n; [P1, V6] # .≮Ⴉ
-‌󠉹‍。򌿧≮ⴉ; ‌󠉹‍.򌿧≮ⴉ; [C1, C2, P1, V6]; xn--0ugc90904y.xn--gdh992byu01p; ; xn--3n36e.xn--gdh992byu01p; [P1, V6] # .≮ⴉ
-‌󠉹‍。򌿧≮ⴉ; ‌󠉹‍.򌿧≮ⴉ; [C1, C2, P1, V6]; xn--0ugc90904y.xn--gdh992byu01p; ; xn--3n36e.xn--gdh992byu01p; [P1, V6] # .≮ⴉ
-xn--3n36e.xn--gdh992byu01p; 󠉹.򌿧≮ⴉ; [V6]; xn--3n36e.xn--gdh992byu01p; ; ;  # .≮ⴉ
-xn--0ugc90904y.xn--gdh992byu01p; ‌󠉹‍.򌿧≮ⴉ; [C1, C2, V6]; xn--0ugc90904y.xn--gdh992byu01p; ; ;  # .≮ⴉ
-xn--3n36e.xn--hnd112gpz83n; 󠉹.򌿧≮Ⴉ; [V6]; xn--3n36e.xn--hnd112gpz83n; ; ;  # .≮Ⴉ
-xn--0ugc90904y.xn--hnd112gpz83n; ‌󠉹‍.򌿧≮Ⴉ; [C1, C2, V6]; xn--0ugc90904y.xn--hnd112gpz83n; ; ;  # .≮Ⴉ
-𐹯-𑄴ࢼ。︒䖐⾆; 𐹯-𑄴ࢼ.︒䖐舌; [B1, P1, V6]; xn----rpd7902rclc.xn--fpo216mn07e; ; ;  # 𐹯-𑄴ࢼ.︒䖐舌
-𐹯-𑄴ࢼ。。䖐舌; 𐹯-𑄴ࢼ..䖐舌; [B1, X4_2]; xn----rpd7902rclc..xn--fpo216m; [B1, A4_2]; ;  # 𐹯-𑄴ࢼ..䖐舌
-xn----rpd7902rclc..xn--fpo216m; 𐹯-𑄴ࢼ..䖐舌; [B1, X4_2]; xn----rpd7902rclc..xn--fpo216m; [B1, A4_2]; ;  # 𐹯-𑄴ࢼ..䖐舌
-xn----rpd7902rclc.xn--fpo216mn07e; 𐹯-𑄴ࢼ.︒䖐舌; [B1, V6]; xn----rpd7902rclc.xn--fpo216mn07e; ; ;  # 𐹯-𑄴ࢼ.︒䖐舌
-𝪞Ⴐ｡쪡; 𝪞Ⴐ.쪡; [P1, V5, V6]; xn--ond3755u.xn--pi6b; ; ;  # 𝪞Ⴐ.쪡
-𝪞Ⴐ｡쪡; 𝪞Ⴐ.쪡; [P1, V5, V6]; xn--ond3755u.xn--pi6b; ; ;  # 𝪞Ⴐ.쪡
-𝪞Ⴐ。쪡; 𝪞Ⴐ.쪡; [P1, V5, V6]; xn--ond3755u.xn--pi6b; ; ;  # 𝪞Ⴐ.쪡
-𝪞Ⴐ。쪡; 𝪞Ⴐ.쪡; [P1, V5, V6]; xn--ond3755u.xn--pi6b; ; ;  # 𝪞Ⴐ.쪡
-𝪞ⴐ。쪡; 𝪞ⴐ.쪡; [V5]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
-𝪞ⴐ。쪡; 𝪞ⴐ.쪡; [V5]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
-xn--7kj1858k.xn--pi6b; 𝪞ⴐ.쪡; [V5]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
-xn--ond3755u.xn--pi6b; 𝪞Ⴐ.쪡; [V5, V6]; xn--ond3755u.xn--pi6b; ; ;  # 𝪞Ⴐ.쪡
-𝪞ⴐ｡쪡; 𝪞ⴐ.쪡; [V5]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
-𝪞ⴐ｡쪡; 𝪞ⴐ.쪡; [V5]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
-ฺ쩁𐹬.􋉳; ; [B1, P1, V5, V6]; xn--o4c4837g2zvb.xn--5f70g; ; ;  # ฺ쩁𐹬.
-ฺ쩁𐹬.􋉳; ฺ쩁𐹬.􋉳; [B1, P1, V5, V6]; xn--o4c4837g2zvb.xn--5f70g; ; ;  # ฺ쩁𐹬.
-xn--o4c4837g2zvb.xn--5f70g; ฺ쩁𐹬.􋉳; [B1, V5, V6]; xn--o4c4837g2zvb.xn--5f70g; ; ;  # ฺ쩁𐹬.
-ᡅ０‌｡⎢󤨄; ᡅ0‌.⎢󤨄; [C1, P1, V6]; xn--0-z6jy93b.xn--8lh28773l; ; xn--0-z6j.xn--8lh28773l; [P1, V6] # ᡅ0.⎢
-ᡅ0‌。⎢󤨄; ᡅ0‌.⎢󤨄; [C1, P1, V6]; xn--0-z6jy93b.xn--8lh28773l; ; xn--0-z6j.xn--8lh28773l; [P1, V6] # ᡅ0.⎢
-xn--0-z6j.xn--8lh28773l; ᡅ0.⎢󤨄; [V6]; xn--0-z6j.xn--8lh28773l; ; ;  # ᡅ0.⎢
-xn--0-z6jy93b.xn--8lh28773l; ᡅ0‌.⎢󤨄; [C1, V6]; xn--0-z6jy93b.xn--8lh28773l; ; ;  # ᡅ0.⎢
-𲮚９ꍩ៓．‍ß; 𲮚9ꍩ៓.‍ß; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--zca770n; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ꍩ៓.ß
-𲮚9ꍩ៓.‍ß; ; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--zca770n; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ꍩ៓.ß
-𲮚9ꍩ៓.‍SS; 𲮚9ꍩ៓.‍ss; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ꍩ៓.ss
-𲮚9ꍩ៓.‍ss; ; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ꍩ៓.ss
-xn--9-i0j5967eg3qz.ss; 𲮚9ꍩ៓.ss; [V6]; xn--9-i0j5967eg3qz.ss; ; ;  # 9ꍩ៓.ss
-xn--9-i0j5967eg3qz.xn--ss-l1t; 𲮚9ꍩ៓.‍ss; [C2, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; ;  # 9ꍩ៓.ss
-xn--9-i0j5967eg3qz.xn--zca770n; 𲮚9ꍩ៓.‍ß; [C2, V6]; xn--9-i0j5967eg3qz.xn--zca770n; ; ;  # 9ꍩ៓.ß
-𲮚９ꍩ៓．‍SS; 𲮚9ꍩ៓.‍ss; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ꍩ៓.ss
-𲮚９ꍩ៓．‍ss; 𲮚9ꍩ៓.‍ss; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ꍩ៓.ss
-𲮚9ꍩ៓.‍Ss; 𲮚9ꍩ៓.‍ss; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ꍩ៓.ss
-𲮚９ꍩ៓．‍Ss; 𲮚9ꍩ៓.‍ss; [C2, P1, V6]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [P1, V6] # 9ꍩ៓.ss
-ꗷ𑆀.ݝ𐩒; ; ; xn--ju8a625r.xn--hpb0073k; ; ;  # ꗷ𑆀.ݝ𐩒
-xn--ju8a625r.xn--hpb0073k; ꗷ𑆀.ݝ𐩒; ; xn--ju8a625r.xn--hpb0073k; ; ;  # ꗷ𑆀.ݝ𐩒
-⒐≯-。︒򩑣-񞛠; ⒐≯-.︒򩑣-񞛠; [P1, V3, V6]; xn----ogot9g.xn----n89hl0522az9u2a; ; ;  # ⒐≯-.︒-
-⒐≯-。︒򩑣-񞛠; ⒐≯-.︒򩑣-񞛠; [P1, V3, V6]; xn----ogot9g.xn----n89hl0522az9u2a; ; ;  # ⒐≯-.︒-
-9.≯-。。򩑣-񞛠; 9.≯-..򩑣-񞛠; [P1, V3, V6, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [P1, V3, V6, A4_2]; ;  # 9.≯-..-
-9.≯-。。򩑣-񞛠; 9.≯-..򩑣-񞛠; [P1, V3, V6, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [P1, V3, V6, A4_2]; ;  # 9.≯-..-
-9.xn----ogo..xn----xj54d1s69k; 9.≯-..򩑣-񞛠; [V3, V6, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [V3, V6, A4_2]; ;  # 9.≯-..-
-xn----ogot9g.xn----n89hl0522az9u2a; ⒐≯-.︒򩑣-񞛠; [V3, V6]; xn----ogot9g.xn----n89hl0522az9u2a; ; ;  # ⒐≯-.︒-
-򈪚ೣჁ󠢏．؝; 򈪚ೣჁ󠢏.؝; [B6, P1, V6]; xn--vuc49qvu85xmju7a.xn--cgb; ; ;  # ೣჁ.
-򈪚ೣჁ󠢏.؝; ; [B6, P1, V6]; xn--vuc49qvu85xmju7a.xn--cgb; ; ;  # ೣჁ.
-򈪚ೣⴡ󠢏.؝; ; [B6, P1, V6]; xn--vuc226n8n28lmju7a.xn--cgb; ; ;  # ೣⴡ.
-xn--vuc226n8n28lmju7a.xn--cgb; 򈪚ೣⴡ󠢏.؝; [B6, V6]; xn--vuc226n8n28lmju7a.xn--cgb; ; ;  # ೣⴡ.
-xn--vuc49qvu85xmju7a.xn--cgb; 򈪚ೣჁ󠢏.؝; [B6, V6]; xn--vuc49qvu85xmju7a.xn--cgb; ; ;  # ೣჁ.
-򈪚ೣⴡ󠢏．؝; 򈪚ೣⴡ󠢏.؝; [B6, P1, V6]; xn--vuc226n8n28lmju7a.xn--cgb; ; ;  # ೣⴡ.
-ᷫ。𐋩ظ-𐫮; ᷫ.𐋩ظ-𐫮; [B1, B3, B6, V5]; xn--gfg.xn----xnc0815qyyg; ; ;  # ᷫ.𐋩ظ-𐫮
-xn--gfg.xn----xnc0815qyyg; ᷫ.𐋩ظ-𐫮; [B1, B3, B6, V5]; xn--gfg.xn----xnc0815qyyg; ; ;  # ᷫ.𐋩ظ-𐫮
-싇。⾇𐳋Ⴝ; 싇.舛𐳋Ⴝ; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ;  # 싇.舛𐳋Ⴝ
-싇。⾇𐳋Ⴝ; 싇.舛𐳋Ⴝ; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ;  # 싇.舛𐳋Ⴝ
-싇。舛𐳋Ⴝ; 싇.舛𐳋Ⴝ; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ;  # 싇.舛𐳋Ⴝ
-싇。舛𐳋Ⴝ; 싇.舛𐳋Ⴝ; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ;  # 싇.舛𐳋Ⴝ
+\u1BF2.𐹢𞀖\u200C; ; [B1, C1, V6]; xn--0zf.xn--0ug9894grqqf; ; xn--0zf.xn--9n0d2296a; [B1, V6] # ᯲.𐹢𞀖
+xn--0zf.xn--9n0d2296a; \u1BF2.𐹢𞀖; [B1, V6]; xn--0zf.xn--9n0d2296a; ; ;  # ᯲.𐹢𞀖
+xn--0zf.xn--0ug9894grqqf; \u1BF2.𐹢𞀖\u200C; [B1, C1, V6]; xn--0zf.xn--0ug9894grqqf; ; ;  # ᯲.𐹢𞀖
+󃲙󠋘｡?-\u200D; 󃲙󠋘.?-\u200D; [C2, V7, U1]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [V3, V7, U1] # .?-
+󃲙󠋘。?-\u200D; 󃲙󠋘.?-\u200D; [C2, V7, U1]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [V3, V7, U1] # .?-
+xn--ct86d8w51a.?-; 󃲙󠋘.?-; [V3, V7, U1]; xn--ct86d8w51a.?-; ; ;  # .?-
+xn--ct86d8w51a.xn--?--n1t; 󃲙󠋘.?-\u200D; [C2, V7, U1]; xn--ct86d8w51a.xn--?--n1t; ; ;  # .?-
+xn--ct86d8w51a.?-\u200D; 󃲙󠋘.?-\u200D; [C2, V7, U1]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [V3, V7, U1] # .?-
+XN--CT86D8W51A.?-\u200D; 󃲙󠋘.?-\u200D; [C2, V7, U1]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [V3, V7, U1] # .?-
+Xn--Ct86d8w51a.?-\u200D; 󃲙󠋘.?-\u200D; [C2, V7, U1]; xn--ct86d8w51a.xn--?--n1t; ; xn--ct86d8w51a.?-; [V3, V7, U1] # .?-
+\u1A60．𞵷-𝪩悎; \u1A60.𞵷-𝪩悎; [B1, B2, B3, V6, V7]; xn--jof.xn----gf4bq282iezpa; ; ;  # ᩠.-𝪩悎
+\u1A60.𞵷-𝪩悎; ; [B1, B2, B3, V6, V7]; xn--jof.xn----gf4bq282iezpa; ; ;  # ᩠.-𝪩悎
+xn--jof.xn----gf4bq282iezpa; \u1A60.𞵷-𝪩悎; [B1, B2, B3, V6, V7]; xn--jof.xn----gf4bq282iezpa; ; ;  # ᩠.-𝪩悎
+𛜯󠊛．𞤳񏥾; 𛜯󠊛.𞤳񏥾; [B2, B3, B6, V7]; xn--xx5gy2741c.xn--re6hw266j; ; ;  # .𞤳
+𛜯󠊛.𞤳񏥾; ; [B2, B3, B6, V7]; xn--xx5gy2741c.xn--re6hw266j; ; ;  # .𞤳
+𛜯󠊛.𞤑񏥾; 𛜯󠊛.𞤳񏥾; [B2, B3, B6, V7]; xn--xx5gy2741c.xn--re6hw266j; ; ;  # .𞤳
+xn--xx5gy2741c.xn--re6hw266j; 𛜯󠊛.𞤳񏥾; [B2, B3, B6, V7]; xn--xx5gy2741c.xn--re6hw266j; ; ;  # .𞤳
+𛜯󠊛．𞤑񏥾; 𛜯󠊛.𞤳񏥾; [B2, B3, B6, V7]; xn--xx5gy2741c.xn--re6hw266j; ; ;  # .𞤳
+\u071C𐫒\u062E.𐋲; ; [B1]; xn--tgb98b8643d.xn--m97c; ; ;  # ܜ𐫒خ.𐋲
+xn--tgb98b8643d.xn--m97c; \u071C𐫒\u062E.𐋲; [B1]; xn--tgb98b8643d.xn--m97c; ; ;  # ܜ𐫒خ.𐋲
+𐼑𞤓\u0637\u08E2.?; 𐼑𞤵\u0637\u08E2.?; [B1, V7, U1]; xn--2gb08k9w69agm0g.?; ; ;  # 𐼑𞤵ط.?
+𐼑𞤵\u0637\u08E2.?; ; [B1, V7, U1]; xn--2gb08k9w69agm0g.?; ; ;  # 𐼑𞤵ط.?
+xn--2gb08k9w69agm0g.?; 𐼑𞤵\u0637\u08E2.?; [B1, V7, U1]; xn--2gb08k9w69agm0g.?; ; ;  # 𐼑𞤵ط.?
+Ↄ。\u0A4D\u1CD4𞷣; ↄ.\u1CD4\u0A4D𞷣; [B1, V6, V7]; xn--r5g.xn--ybc995g0835a; ; ;  # ↄ.᳔੍
+Ↄ。\u1CD4\u0A4D𞷣; ↄ.\u1CD4\u0A4D𞷣; [B1, V6, V7]; xn--r5g.xn--ybc995g0835a; ; ;  # ↄ.᳔੍
+ↄ。\u1CD4\u0A4D𞷣; ↄ.\u1CD4\u0A4D𞷣; [B1, V6, V7]; xn--r5g.xn--ybc995g0835a; ; ;  # ↄ.᳔੍
+xn--r5g.xn--ybc995g0835a; ↄ.\u1CD4\u0A4D𞷣; [B1, V6, V7]; xn--r5g.xn--ybc995g0835a; ; ;  # ↄ.᳔੍
+ↄ。\u0A4D\u1CD4𞷣; ↄ.\u1CD4\u0A4D𞷣; [B1, V6, V7]; xn--r5g.xn--ybc995g0835a; ; ;  # ↄ.᳔੍
+xn--q5g.xn--ybc995g0835a; Ↄ.\u1CD4\u0A4D𞷣; [B1, V6, V7]; xn--q5g.xn--ybc995g0835a; ; ;  # Ↄ.᳔੍
+󠪢-。򛂏≮𑜫; 󠪢-.򛂏≮𑜫; [V3, V7]; xn----bh61m.xn--gdhz157g0em1d; ; ;  # -.≮𑜫
+󠪢-。򛂏<\u0338𑜫; 󠪢-.򛂏≮𑜫; [V3, V7]; xn----bh61m.xn--gdhz157g0em1d; ; ;  # -.≮𑜫
+xn----bh61m.xn--gdhz157g0em1d; 󠪢-.򛂏≮𑜫; [V3, V7]; xn----bh61m.xn--gdhz157g0em1d; ; ;  # -.≮𑜫
+\u200C󠉹\u200D。򌿧≮Ⴉ; \u200C󠉹\u200D.򌿧≮ⴉ; [C1, C2, V7]; xn--0ugc90904y.xn--gdh992byu01p; ; xn--3n36e.xn--gdh992byu01p; [V7] # .≮ⴉ
+\u200C󠉹\u200D。򌿧<\u0338Ⴉ; \u200C󠉹\u200D.򌿧≮ⴉ; [C1, C2, V7]; xn--0ugc90904y.xn--gdh992byu01p; ; xn--3n36e.xn--gdh992byu01p; [V7] # .≮ⴉ
+\u200C󠉹\u200D。򌿧<\u0338ⴉ; \u200C󠉹\u200D.򌿧≮ⴉ; [C1, C2, V7]; xn--0ugc90904y.xn--gdh992byu01p; ; xn--3n36e.xn--gdh992byu01p; [V7] # .≮ⴉ
+\u200C󠉹\u200D。򌿧≮ⴉ; \u200C󠉹\u200D.򌿧≮ⴉ; [C1, C2, V7]; xn--0ugc90904y.xn--gdh992byu01p; ; xn--3n36e.xn--gdh992byu01p; [V7] # .≮ⴉ
+xn--3n36e.xn--gdh992byu01p; 󠉹.򌿧≮ⴉ; [V7]; xn--3n36e.xn--gdh992byu01p; ; ;  # .≮ⴉ
+xn--0ugc90904y.xn--gdh992byu01p; \u200C󠉹\u200D.򌿧≮ⴉ; [C1, C2, V7]; xn--0ugc90904y.xn--gdh992byu01p; ; ;  # .≮ⴉ
+xn--3n36e.xn--hnd112gpz83n; 󠉹.򌿧≮Ⴉ; [V7]; xn--3n36e.xn--hnd112gpz83n; ; ;  # .≮Ⴉ
+xn--0ugc90904y.xn--hnd112gpz83n; \u200C󠉹\u200D.򌿧≮Ⴉ; [C1, C2, V7]; xn--0ugc90904y.xn--hnd112gpz83n; ; ;  # .≮Ⴉ
+𐹯-𑄴\u08BC。︒䖐⾆; 𐹯-𑄴\u08BC.︒䖐舌; [B1, V7]; xn----rpd7902rclc.xn--fpo216mn07e; ; ;  # 𐹯-𑄴ࢼ.︒䖐舌
+𐹯-𑄴\u08BC。。䖐舌; 𐹯-𑄴\u08BC..䖐舌; [B1, X4_2]; xn----rpd7902rclc..xn--fpo216m; [B1, A4_2]; ;  # 𐹯-𑄴ࢼ..䖐舌
+xn----rpd7902rclc..xn--fpo216m; 𐹯-𑄴\u08BC..䖐舌; [B1, X4_2]; xn----rpd7902rclc..xn--fpo216m; [B1, A4_2]; ;  # 𐹯-𑄴ࢼ..䖐舌
+xn----rpd7902rclc.xn--fpo216mn07e; 𐹯-𑄴\u08BC.︒䖐舌; [B1, V7]; xn----rpd7902rclc.xn--fpo216mn07e; ; ;  # 𐹯-𑄴ࢼ.︒䖐舌
+𝪞Ⴐ｡쪡; 𝪞ⴐ.쪡; [V6]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
+𝪞Ⴐ｡쪡; 𝪞ⴐ.쪡; [V6]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
+𝪞Ⴐ。쪡; 𝪞ⴐ.쪡; [V6]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
+𝪞Ⴐ。쪡; 𝪞ⴐ.쪡; [V6]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
+𝪞ⴐ。쪡; 𝪞ⴐ.쪡; [V6]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
+𝪞ⴐ。쪡; 𝪞ⴐ.쪡; [V6]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
+xn--7kj1858k.xn--pi6b; 𝪞ⴐ.쪡; [V6]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
+𝪞ⴐ｡쪡; 𝪞ⴐ.쪡; [V6]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
+𝪞ⴐ｡쪡; 𝪞ⴐ.쪡; [V6]; xn--7kj1858k.xn--pi6b; ; ;  # 𝪞ⴐ.쪡
+xn--ond3755u.xn--pi6b; 𝪞Ⴐ.쪡; [V6, V7]; xn--ond3755u.xn--pi6b; ; ;  # 𝪞Ⴐ.쪡
+\u0E3A쩁𐹬.􋉳; ; [B1, V6, V7]; xn--o4c4837g2zvb.xn--5f70g; ; ;  # ฺ쩁𐹬.
+\u0E3A쩁𐹬.􋉳; \u0E3A쩁𐹬.􋉳; [B1, V6, V7]; xn--o4c4837g2zvb.xn--5f70g; ; ;  # ฺ쩁𐹬.
+xn--o4c4837g2zvb.xn--5f70g; \u0E3A쩁𐹬.􋉳; [B1, V6, V7]; xn--o4c4837g2zvb.xn--5f70g; ; ;  # ฺ쩁𐹬.
+ᡅ０\u200C｡⎢󤨄; ᡅ0\u200C.⎢󤨄; [C1, V7]; xn--0-z6jy93b.xn--8lh28773l; ; xn--0-z6j.xn--8lh28773l; [V7] # ᡅ0.⎢
+ᡅ0\u200C。⎢󤨄; ᡅ0\u200C.⎢󤨄; [C1, V7]; xn--0-z6jy93b.xn--8lh28773l; ; xn--0-z6j.xn--8lh28773l; [V7] # ᡅ0.⎢
+xn--0-z6j.xn--8lh28773l; ᡅ0.⎢󤨄; [V7]; xn--0-z6j.xn--8lh28773l; ; ;  # ᡅ0.⎢
+xn--0-z6jy93b.xn--8lh28773l; ᡅ0\u200C.⎢󤨄; [C1, V7]; xn--0-z6jy93b.xn--8lh28773l; ; ;  # ᡅ0.⎢
+𲮚９ꍩ\u17D3．\u200Dß; 𲮚9ꍩ\u17D3.\u200Dß; [C2, V7]; xn--9-i0j5967eg3qz.xn--zca770n; ; xn--9-i0j5967eg3qz.ss; [V7] # 9ꍩ៓.ß
+𲮚9ꍩ\u17D3.\u200Dß; ; [C2, V7]; xn--9-i0j5967eg3qz.xn--zca770n; ; xn--9-i0j5967eg3qz.ss; [V7] # 9ꍩ៓.ß
+𲮚9ꍩ\u17D3.\u200DSS; 𲮚9ꍩ\u17D3.\u200Dss; [C2, V7]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V7] # 9ꍩ៓.ss
+𲮚9ꍩ\u17D3.\u200Dss; ; [C2, V7]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V7] # 9ꍩ៓.ss
+xn--9-i0j5967eg3qz.ss; 𲮚9ꍩ\u17D3.ss; [V7]; xn--9-i0j5967eg3qz.ss; ; ;  # 9ꍩ៓.ss
+xn--9-i0j5967eg3qz.xn--ss-l1t; 𲮚9ꍩ\u17D3.\u200Dss; [C2, V7]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; ;  # 9ꍩ៓.ss
+xn--9-i0j5967eg3qz.xn--zca770n; 𲮚9ꍩ\u17D3.\u200Dß; [C2, V7]; xn--9-i0j5967eg3qz.xn--zca770n; ; ;  # 9ꍩ៓.ß
+𲮚９ꍩ\u17D3．\u200DSS; 𲮚9ꍩ\u17D3.\u200Dss; [C2, V7]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V7] # 9ꍩ៓.ss
+𲮚９ꍩ\u17D3．\u200Dss; 𲮚9ꍩ\u17D3.\u200Dss; [C2, V7]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V7] # 9ꍩ៓.ss
+𲮚9ꍩ\u17D3.\u200DSs; 𲮚9ꍩ\u17D3.\u200Dss; [C2, V7]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V7] # 9ꍩ៓.ss
+𲮚９ꍩ\u17D3．\u200DSs; 𲮚9ꍩ\u17D3.\u200Dss; [C2, V7]; xn--9-i0j5967eg3qz.xn--ss-l1t; ; xn--9-i0j5967eg3qz.ss; [V7] # 9ꍩ៓.ss
+ꗷ𑆀.\u075D𐩒; ; ; xn--ju8a625r.xn--hpb0073k; ; ;  # ꗷ𑆀.ݝ𐩒
+xn--ju8a625r.xn--hpb0073k; ꗷ𑆀.\u075D𐩒; ; xn--ju8a625r.xn--hpb0073k; ; ;  # ꗷ𑆀.ݝ𐩒
+⒐≯-。︒򩑣-񞛠; ⒐≯-.︒򩑣-񞛠; [V3, V7]; xn----ogot9g.xn----n89hl0522az9u2a; ; ;  # ⒐≯-.︒-
+⒐>\u0338-。︒򩑣-񞛠; ⒐≯-.︒򩑣-񞛠; [V3, V7]; xn----ogot9g.xn----n89hl0522az9u2a; ; ;  # ⒐≯-.︒-
+9.≯-。。򩑣-񞛠; 9.≯-..򩑣-񞛠; [V3, V7, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [V3, V7, A4_2]; ;  # 9.≯-..-
+9.>\u0338-。。򩑣-񞛠; 9.≯-..򩑣-񞛠; [V3, V7, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [V3, V7, A4_2]; ;  # 9.≯-..-
+9.xn----ogo..xn----xj54d1s69k; 9.≯-..򩑣-񞛠; [V3, V7, X4_2]; 9.xn----ogo..xn----xj54d1s69k; [V3, V7, A4_2]; ;  # 9.≯-..-
+xn----ogot9g.xn----n89hl0522az9u2a; ⒐≯-.︒򩑣-񞛠; [V3, V7]; xn----ogot9g.xn----n89hl0522az9u2a; ; ;  # ⒐≯-.︒-
+򈪚\u0CE3Ⴡ󠢏．\u061D; 򈪚\u0CE3ⴡ󠢏.\u061D; [B6, V7]; xn--vuc226n8n28lmju7a.xn--cgb; ; ;  # ೣⴡ.؝
+򈪚\u0CE3Ⴡ󠢏.\u061D; 򈪚\u0CE3ⴡ󠢏.\u061D; [B6, V7]; xn--vuc226n8n28lmju7a.xn--cgb; ; ;  # ೣⴡ.؝
+򈪚\u0CE3ⴡ󠢏.\u061D; ; [B6, V7]; xn--vuc226n8n28lmju7a.xn--cgb; ; ;  # ೣⴡ.؝
+xn--vuc226n8n28lmju7a.xn--cgb; 򈪚\u0CE3ⴡ󠢏.\u061D; [B6, V7]; xn--vuc226n8n28lmju7a.xn--cgb; ; ;  # ೣⴡ.؝
+򈪚\u0CE3ⴡ󠢏．\u061D; 򈪚\u0CE3ⴡ󠢏.\u061D; [B6, V7]; xn--vuc226n8n28lmju7a.xn--cgb; ; ;  # ೣⴡ.؝
+xn--vuc49qvu85xmju7a.xn--cgb; 򈪚\u0CE3Ⴡ󠢏.\u061D; [B6, V7]; xn--vuc49qvu85xmju7a.xn--cgb; ; ;  # ೣჁ.؝
+\u1DEB。𐋩\u0638-𐫮; \u1DEB.𐋩\u0638-𐫮; [B1, V6]; xn--gfg.xn----xnc0815qyyg; ; ;  # ᷫ.𐋩ظ-𐫮
+xn--gfg.xn----xnc0815qyyg; \u1DEB.𐋩\u0638-𐫮; [B1, V6]; xn--gfg.xn----xnc0815qyyg; ; ;  # ᷫ.𐋩ظ-𐫮
+싇。⾇𐳋Ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
+싇。⾇𐳋Ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
+싇。舛𐳋Ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
+싇。舛𐳋Ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
 싇。舛𐳋ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
 싇。舛𐳋ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
-싇。舛𐲋Ⴝ; 싇.舛𐳋Ⴝ; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ;  # 싇.舛𐳋Ⴝ
-싇。舛𐲋Ⴝ; 싇.舛𐳋Ⴝ; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ;  # 싇.舛𐳋Ⴝ
+싇。舛𐲋Ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
+싇。舛𐲋Ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
 싇。舛𐲋ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
 싇。舛𐲋ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
 xn--9u4b.xn--llj123yh74e; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
-xn--9u4b.xn--1nd7519ch79d; 싇.舛𐳋Ⴝ; [B5, V6]; xn--9u4b.xn--1nd7519ch79d; ; ;  # 싇.舛𐳋Ⴝ
 싇。⾇𐳋ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
 싇。⾇𐳋ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
-싇。⾇𐲋Ⴝ; 싇.舛𐳋Ⴝ; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ;  # 싇.舛𐳋Ⴝ
-싇。⾇𐲋Ⴝ; 싇.舛𐳋Ⴝ; [B5, P1, V6]; xn--9u4b.xn--1nd7519ch79d; ; ;  # 싇.舛𐳋Ⴝ
+싇。⾇𐲋Ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
+싇。⾇𐲋Ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
 싇。⾇𐲋ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
 싇。⾇𐲋ⴝ; 싇.舛𐳋ⴝ; [B5]; xn--9u4b.xn--llj123yh74e; ; ;  # 싇.舛𐳋ⴝ
-𐹠ς。‌ڿჀ; 𐹠ς.‌ڿჀ; [B1, C1, P1, V6]; xn--3xa1267k.xn--ykb632cvxm; ; xn--4xa9167k.xn--ykb632c; [B1, B2, B3, P1, V6] # 𐹠ς.ڿჀ
-𐹠ς。‌ڿⴠ; 𐹠ς.‌ڿⴠ; [B1, C1]; xn--3xa1267k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # 𐹠ς.ڿⴠ
-𐹠Σ。‌ڿჀ; 𐹠σ.‌ڿჀ; [B1, C1, P1, V6]; xn--4xa9167k.xn--ykb632cvxm; ; xn--4xa9167k.xn--ykb632c; [B1, B2, B3, P1, V6] # 𐹠σ.ڿჀ
-𐹠σ。‌ڿⴠ; 𐹠σ.‌ڿⴠ; [B1, C1]; xn--4xa9167k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # 𐹠σ.ڿⴠ
-𐹠Σ。‌ڿⴠ; 𐹠σ.‌ڿⴠ; [B1, C1]; xn--4xa9167k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # 𐹠σ.ڿⴠ
-xn--4xa9167k.xn--ykb467q; 𐹠σ.ڿⴠ; [B1, B2, B3]; xn--4xa9167k.xn--ykb467q; ; ;  # 𐹠σ.ڿⴠ
-xn--4xa9167k.xn--ykb760k9hj; 𐹠σ.‌ڿⴠ; [B1, C1]; xn--4xa9167k.xn--ykb760k9hj; ; ;  # 𐹠σ.ڿⴠ
-xn--4xa9167k.xn--ykb632c; 𐹠σ.ڿჀ; [B1, B2, B3, V6]; xn--4xa9167k.xn--ykb632c; ; ;  # 𐹠σ.ڿჀ
-xn--4xa9167k.xn--ykb632cvxm; 𐹠σ.‌ڿჀ; [B1, C1, V6]; xn--4xa9167k.xn--ykb632cvxm; ; ;  # 𐹠σ.ڿჀ
-xn--3xa1267k.xn--ykb760k9hj; 𐹠ς.‌ڿⴠ; [B1, C1]; xn--3xa1267k.xn--ykb760k9hj; ; ;  # 𐹠ς.ڿⴠ
-xn--3xa1267k.xn--ykb632cvxm; 𐹠ς.‌ڿჀ; [B1, C1, V6]; xn--3xa1267k.xn--ykb632cvxm; ; ;  # 𐹠ς.ڿჀ
-򇒐‌؄.ښ-ß; ; [B2, B3, B5, B6, C1, P1, V6]; xn--mfb144kqo32m.xn----qfa315b; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, P1, V6] # .ښ-ß
-򇒐‌؄.ښ-SS; 򇒐‌؄.ښ-ss; [B2, B3, B5, B6, C1, P1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, P1, V6] # .ښ-ss
-򇒐‌؄.ښ-ss; ; [B2, B3, B5, B6, C1, P1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, P1, V6] # .ښ-ss
-򇒐‌؄.ښ-Ss; 򇒐‌؄.ښ-ss; [B2, B3, B5, B6, C1, P1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, P1, V6] # .ښ-ss
-xn--mfb98261i.xn---ss-sdf; 򇒐؄.ښ-ss; [B2, B3, B5, B6, V6]; xn--mfb98261i.xn---ss-sdf; ; ;  # .ښ-ss
-xn--mfb144kqo32m.xn---ss-sdf; 򇒐‌؄.ښ-ss; [B2, B3, B5, B6, C1, V6]; xn--mfb144kqo32m.xn---ss-sdf; ; ;  # .ښ-ss
-xn--mfb144kqo32m.xn----qfa315b; 򇒐‌؄.ښ-ß; [B2, B3, B5, B6, C1, V6]; xn--mfb144kqo32m.xn----qfa315b; ; ;  # .ښ-ß
-‌‍឵ٺ.-ﮰ󅄞𐸚; ‌‍឵ٺ.-ۓ󅄞𐸚; [B1, C1, C2, P1, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; xn--zib539f.xn----twc1133r17r6g; [B1, P1, V3, V5, V6] # ٺ.-ۓ
-‌‍឵ٺ.-ۓ󅄞𐸚; ; [B1, C1, C2, P1, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; xn--zib539f.xn----twc1133r17r6g; [B1, P1, V3, V5, V6] # ٺ.-ۓ
-‌‍឵ٺ.-ۓ󅄞𐸚; ‌‍឵ٺ.-ۓ󅄞𐸚; [B1, C1, C2, P1, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; xn--zib539f.xn----twc1133r17r6g; [B1, P1, V3, V5, V6] # ٺ.-ۓ
-xn--zib539f.xn----twc1133r17r6g; ឵ٺ.-ۓ󅄞𐸚; [B1, V3, V5, V6]; xn--zib539f.xn----twc1133r17r6g; ; ;  # ٺ.-ۓ
-xn--zib539f8igea.xn----twc1133r17r6g; ‌‍឵ٺ.-ۓ󅄞𐸚; [B1, C1, C2, V3, V6]; xn--zib539f8igea.xn----twc1133r17r6g; ; ;  # ٺ.-ۓ
-򡶱｡𐮬≠; 򡶱.𐮬≠; [B3, P1, V6]; xn--dd55c.xn--1ch3003g; ; ;  # .𐮬≠
-򡶱｡𐮬≠; 򡶱.𐮬≠; [B3, P1, V6]; xn--dd55c.xn--1ch3003g; ; ;  # .𐮬≠
-򡶱。𐮬≠; 򡶱.𐮬≠; [B3, P1, V6]; xn--dd55c.xn--1ch3003g; ; ;  # .𐮬≠
-򡶱。𐮬≠; 򡶱.𐮬≠; [B3, P1, V6]; xn--dd55c.xn--1ch3003g; ; ;  # .𐮬≠
-xn--dd55c.xn--1ch3003g; 򡶱.𐮬≠; [B3, V6]; xn--dd55c.xn--1ch3003g; ; ;  # .𐮬≠
-ྲ𞶅｡𐹮𐹷덝۵; ྲ𞶅.𐹮𐹷덝۵; [B1, P1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ;  # ྲ.𐹮𐹷덝۵
-ྲ𞶅｡𐹮𐹷덝۵; ྲ𞶅.𐹮𐹷덝۵; [B1, P1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ;  # ྲ.𐹮𐹷덝۵
-ྲ𞶅。𐹮𐹷덝۵; ྲ𞶅.𐹮𐹷덝۵; [B1, P1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ;  # ྲ.𐹮𐹷덝۵
-ྲ𞶅。𐹮𐹷덝۵; ྲ𞶅.𐹮𐹷덝۵; [B1, P1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ;  # ྲ.𐹮𐹷덝۵
-xn--fgd0675v.xn--imb5839fidpcbba; ྲ𞶅.𐹮𐹷덝۵; [B1, V5, V6]; xn--fgd0675v.xn--imb5839fidpcbba; ; ;  # ྲ.𐹮𐹷덝۵
-Ⴏ󠅋-．‍Ⴉ; Ⴏ-.‍Ⴉ; [C2, P1, V3, V6]; xn----00g.xn--hnd399e; ; xn----00g.xn--hnd; [P1, V3, V6] # Ⴏ-.Ⴉ
-Ⴏ󠅋-.‍Ⴉ; Ⴏ-.‍Ⴉ; [C2, P1, V3, V6]; xn----00g.xn--hnd399e; ; xn----00g.xn--hnd; [P1, V3, V6] # Ⴏ-.Ⴉ
-ⴏ󠅋-.‍ⴉ; ⴏ-.‍ⴉ; [C2, V3]; xn----3vs.xn--1ug532c; ; xn----3vs.xn--0kj; [V3] # ⴏ-.ⴉ
+xn--9u4b.xn--1nd7519ch79d; 싇.舛𐳋Ⴝ; [B5, V7]; xn--9u4b.xn--1nd7519ch79d; ; ;  # 싇.舛𐳋Ⴝ
+𐹠ς。\u200C\u06BFჀ; 𐹠ς.\u200C\u06BFⴠ; [B1, C1]; xn--3xa1267k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # 𐹠ς.ڿⴠ
+𐹠ς。\u200C\u06BFⴠ; 𐹠ς.\u200C\u06BFⴠ; [B1, C1]; xn--3xa1267k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # 𐹠ς.ڿⴠ
+𐹠Σ。\u200C\u06BFჀ; 𐹠σ.\u200C\u06BFⴠ; [B1, C1]; xn--4xa9167k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # 𐹠σ.ڿⴠ
+𐹠σ。\u200C\u06BFⴠ; 𐹠σ.\u200C\u06BFⴠ; [B1, C1]; xn--4xa9167k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # 𐹠σ.ڿⴠ
+𐹠Σ。\u200C\u06BFⴠ; 𐹠σ.\u200C\u06BFⴠ; [B1, C1]; xn--4xa9167k.xn--ykb760k9hj; ; xn--4xa9167k.xn--ykb467q; [B1, B2, B3] # 𐹠σ.ڿⴠ
+xn--4xa9167k.xn--ykb467q; 𐹠σ.\u06BFⴠ; [B1, B2, B3]; xn--4xa9167k.xn--ykb467q; ; ;  # 𐹠σ.ڿⴠ
+xn--4xa9167k.xn--ykb760k9hj; 𐹠σ.\u200C\u06BFⴠ; [B1, C1]; xn--4xa9167k.xn--ykb760k9hj; ; ;  # 𐹠σ.ڿⴠ
+xn--3xa1267k.xn--ykb760k9hj; 𐹠ς.\u200C\u06BFⴠ; [B1, C1]; xn--3xa1267k.xn--ykb760k9hj; ; ;  # 𐹠ς.ڿⴠ
+xn--4xa9167k.xn--ykb632c; 𐹠σ.\u06BFჀ; [B1, B2, B3, V7]; xn--4xa9167k.xn--ykb632c; ; ;  # 𐹠σ.ڿჀ
+xn--4xa9167k.xn--ykb632cvxm; 𐹠σ.\u200C\u06BFჀ; [B1, C1, V7]; xn--4xa9167k.xn--ykb632cvxm; ; ;  # 𐹠σ.ڿჀ
+xn--3xa1267k.xn--ykb632cvxm; 𐹠ς.\u200C\u06BFჀ; [B1, C1, V7]; xn--3xa1267k.xn--ykb632cvxm; ; ;  # 𐹠ς.ڿჀ
+򇒐\u200C\u0604.\u069A-ß; ; [B2, B3, B5, B6, C1, V7]; xn--mfb144kqo32m.xn----qfa315b; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, V7] # .ښ-ß
+򇒐\u200C\u0604.\u069A-SS; 򇒐\u200C\u0604.\u069A-ss; [B2, B3, B5, B6, C1, V7]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, V7] # .ښ-ss
+򇒐\u200C\u0604.\u069A-ss; ; [B2, B3, B5, B6, C1, V7]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, V7] # .ښ-ss
+򇒐\u200C\u0604.\u069A-Ss; 򇒐\u200C\u0604.\u069A-ss; [B2, B3, B5, B6, C1, V7]; xn--mfb144kqo32m.xn---ss-sdf; ; xn--mfb98261i.xn---ss-sdf; [B2, B3, B5, B6, V7] # .ښ-ss
+xn--mfb98261i.xn---ss-sdf; 򇒐\u0604.\u069A-ss; [B2, B3, B5, B6, V7]; xn--mfb98261i.xn---ss-sdf; ; ;  # .ښ-ss
+xn--mfb144kqo32m.xn---ss-sdf; 򇒐\u200C\u0604.\u069A-ss; [B2, B3, B5, B6, C1, V7]; xn--mfb144kqo32m.xn---ss-sdf; ; ;  # .ښ-ss
+xn--mfb144kqo32m.xn----qfa315b; 򇒐\u200C\u0604.\u069A-ß; [B2, B3, B5, B6, C1, V7]; xn--mfb144kqo32m.xn----qfa315b; ; ;  # .ښ-ß
+\u200C\u200D\u17B5\u067A.-\uFBB0󅄞𐸚; \u200C\u200D\u067A.-\u06D3󅄞𐸚; [B1, C1, C2, V3, V7]; xn--zib502kda.xn----twc1133r17r6g; ; xn--zib.xn----twc1133r17r6g; [B1, V3, V7] # ٺ.-ۓ
+\u200C\u200D\u17B5\u067A.-\u06D3󅄞𐸚; \u200C\u200D\u067A.-\u06D3󅄞𐸚; [B1, C1, C2, V3, V7]; xn--zib502kda.xn----twc1133r17r6g; ; xn--zib.xn----twc1133r17r6g; [B1, V3, V7] # ٺ.-ۓ
+\u200C\u200D\u17B5\u067A.-\u06D2\u0654󅄞𐸚; \u200C\u200D\u067A.-\u06D3󅄞𐸚; [B1, C1, C2, V3, V7]; xn--zib502kda.xn----twc1133r17r6g; ; xn--zib.xn----twc1133r17r6g; [B1, V3, V7] # ٺ.-ۓ
+xn--zib.xn----twc1133r17r6g; \u067A.-\u06D3󅄞𐸚; [B1, V3, V7]; xn--zib.xn----twc1133r17r6g; ; ;  # ٺ.-ۓ
+xn--zib502kda.xn----twc1133r17r6g; \u200C\u200D\u067A.-\u06D3󅄞𐸚; [B1, C1, C2, V3, V7]; xn--zib502kda.xn----twc1133r17r6g; ; ;  # ٺ.-ۓ
+xn--zib539f.xn----twc1133r17r6g; \u17B5\u067A.-\u06D3󅄞𐸚; [B1, V3, V6, V7]; xn--zib539f.xn----twc1133r17r6g; ; ;  # ٺ.-ۓ
+xn--zib539f8igea.xn----twc1133r17r6g; \u200C\u200D\u17B5\u067A.-\u06D3󅄞𐸚; [B1, C1, C2, V3, V7]; xn--zib539f8igea.xn----twc1133r17r6g; ; ;  # ٺ.-ۓ
+򡶱｡𐮬≠; 򡶱.𐮬≠; [B3, V7]; xn--dd55c.xn--1ch3003g; ; ;  # .𐮬≠
+򡶱｡𐮬=\u0338; 򡶱.𐮬≠; [B3, V7]; xn--dd55c.xn--1ch3003g; ; ;  # .𐮬≠
+򡶱。𐮬≠; 򡶱.𐮬≠; [B3, V7]; xn--dd55c.xn--1ch3003g; ; ;  # .𐮬≠
+򡶱。𐮬=\u0338; 򡶱.𐮬≠; [B3, V7]; xn--dd55c.xn--1ch3003g; ; ;  # .𐮬≠
+xn--dd55c.xn--1ch3003g; 򡶱.𐮬≠; [B3, V7]; xn--dd55c.xn--1ch3003g; ; ;  # .𐮬≠
+\u0FB2𞶅｡𐹮𐹷덝۵; \u0FB2𞶅.𐹮𐹷덝۵; [B1, V6, V7]; xn--fgd0675v.xn--imb5839fidpcbba; ; ;  # ྲ.𐹮𐹷덝۵
+\u0FB2𞶅｡𐹮𐹷덝۵; \u0FB2𞶅.𐹮𐹷덝۵; [B1, V6, V7]; xn--fgd0675v.xn--imb5839fidpcbba; ; ;  # ྲ.𐹮𐹷덝۵
+\u0FB2𞶅。𐹮𐹷덝۵; \u0FB2𞶅.𐹮𐹷덝۵; [B1, V6, V7]; xn--fgd0675v.xn--imb5839fidpcbba; ; ;  # ྲ.𐹮𐹷덝۵
+\u0FB2𞶅。𐹮𐹷덝۵; \u0FB2𞶅.𐹮𐹷덝۵; [B1, V6, V7]; xn--fgd0675v.xn--imb5839fidpcbba; ; ;  # ྲ.𐹮𐹷덝۵
+xn--fgd0675v.xn--imb5839fidpcbba; \u0FB2𞶅.𐹮𐹷덝۵; [B1, V6, V7]; xn--fgd0675v.xn--imb5839fidpcbba; ; ;  # ྲ.𐹮𐹷덝۵
+Ⴏ󠅋-．\u200DႩ; ⴏ-.\u200Dⴉ; [C2, V3]; xn----3vs.xn--1ug532c; ; xn----3vs.xn--0kj; [V3] # ⴏ-.ⴉ
+Ⴏ󠅋-.\u200DႩ; ⴏ-.\u200Dⴉ; [C2, V3]; xn----3vs.xn--1ug532c; ; xn----3vs.xn--0kj; [V3] # ⴏ-.ⴉ
+ⴏ󠅋-.\u200Dⴉ; ⴏ-.\u200Dⴉ; [C2, V3]; xn----3vs.xn--1ug532c; ; xn----3vs.xn--0kj; [V3] # ⴏ-.ⴉ
 xn----3vs.xn--0kj; ⴏ-.ⴉ; [V3]; xn----3vs.xn--0kj; ; ;  # ⴏ-.ⴉ
-xn----3vs.xn--1ug532c; ⴏ-.‍ⴉ; [C2, V3]; xn----3vs.xn--1ug532c; ; ;  # ⴏ-.ⴉ
-xn----00g.xn--hnd; Ⴏ-.Ⴉ; [V3, V6]; xn----00g.xn--hnd; ; ;  # Ⴏ-.Ⴉ
-xn----00g.xn--hnd399e; Ⴏ-.‍Ⴉ; [C2, V3, V6]; xn----00g.xn--hnd399e; ; ;  # Ⴏ-.Ⴉ
-ⴏ󠅋-．‍ⴉ; ⴏ-.‍ⴉ; [C2, V3]; xn----3vs.xn--1ug532c; ; xn----3vs.xn--0kj; [V3] # ⴏ-.ⴉ
-⇧𐨏󠾈󯶅。؀󠈵󠆉; ⇧𐨏󠾈󯶅.؀󠈵; [B1, P1, V6]; xn--l8g5552g64t4g46xf.xn--ifb08144p; ; ;  # ⇧𐨏.
-xn--l8g5552g64t4g46xf.xn--ifb08144p; ⇧𐨏󠾈󯶅.؀󠈵; [B1, V6]; xn--l8g5552g64t4g46xf.xn--ifb08144p; ; ;  # ⇧𐨏.
-≠𐮂.↑🄇⒈; ; [B1, P1, V6]; xn--1chy492g.xn--45gx9iuy44d; ; ;  # ≠𐮂.↑🄇⒈
-≠𐮂.↑🄇⒈; ≠𐮂.↑🄇⒈; [B1, P1, V6]; xn--1chy492g.xn--45gx9iuy44d; ; ;  # ≠𐮂.↑🄇⒈
-≠𐮂.↑6,1.; ; [B1, P1, V6]; xn--1chy492g.xn--6,1-pw1a.; ; ;  # ≠𐮂.↑6,1.
-≠𐮂.↑6,1.; ≠𐮂.↑6,1.; [B1, P1, V6]; xn--1chy492g.xn--6,1-pw1a.; ; ;  # ≠𐮂.↑6,1.
-xn--1chy492g.xn--6,1-pw1a.; ≠𐮂.↑6,1.; [B1, P1, V6]; xn--1chy492g.xn--6,1-pw1a.; ; ;  # ≠𐮂.↑6,1.
-xn--1chy492g.xn--45gx9iuy44d; ≠𐮂.↑🄇⒈; [B1, V6]; xn--1chy492g.xn--45gx9iuy44d; ; ;  # ≠𐮂.↑🄇⒈
-𝩏󠲉ß.ᢤ򄦌‌𐹫; ; [B1, B5, B6, C1, P1, V5, V6]; xn--zca3153vupz3e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, P1, V5, V6] # 𝩏ß.ᢤ𐹫
-𝩏󠲉SS.ᢤ򄦌‌𐹫; 𝩏󠲉ss.ᢤ򄦌‌𐹫; [B1, B5, B6, C1, P1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, P1, V5, V6] # 𝩏ss.ᢤ𐹫
-𝩏󠲉ss.ᢤ򄦌‌𐹫; ; [B1, B5, B6, C1, P1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, P1, V5, V6] # 𝩏ss.ᢤ𐹫
-𝩏󠲉Ss.ᢤ򄦌‌𐹫; 𝩏󠲉ss.ᢤ򄦌‌𐹫; [B1, B5, B6, C1, P1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, P1, V5, V6] # 𝩏ss.ᢤ𐹫
-xn--ss-zb11ap1427e.xn--ubf2596jbt61c; 𝩏󠲉ss.ᢤ򄦌𐹫; [B1, B5, B6, V5, V6]; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; ; ;  # 𝩏ss.ᢤ𐹫
-xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; 𝩏󠲉ss.ᢤ򄦌‌𐹫; [B1, B5, B6, C1, V5, V6]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; ;  # 𝩏ss.ᢤ𐹫
-xn--zca3153vupz3e.xn--ubf609atw1tynn3d; 𝩏󠲉ß.ᢤ򄦌‌𐹫; [B1, B5, B6, C1, V5, V6]; xn--zca3153vupz3e.xn--ubf609atw1tynn3d; ; ;  # 𝩏ß.ᢤ𐹫
-ß𐵳񗘁Ⴇ｡ꙺ; ß𐵳񗘁Ⴇ.ꙺ; [B1, B3, B5, B6, P1, V5, V6]; xn--zca491fci5qkn79a.xn--9x8a; ; xn--ss-rek7420r4hs7b.xn--9x8a;  # ßႧ.ꙺ
-ß𐵳񗘁Ⴇ。ꙺ; ß𐵳񗘁Ⴇ.ꙺ; [B1, B3, B5, B6, P1, V5, V6]; xn--zca491fci5qkn79a.xn--9x8a; ; xn--ss-rek7420r4hs7b.xn--9x8a;  # ßႧ.ꙺ
-ß𐵳񗘁ⴇ。ꙺ; ß𐵳񗘁ⴇ.ꙺ; [B1, B3, B5, B6, P1, V5, V6]; xn--zca227tpy4lkns1b.xn--9x8a; ; xn--ss-e61ar955h4hs7b.xn--9x8a;  # ßⴇ.ꙺ
-SS𐵳񗘁Ⴇ。ꙺ; ss𐵳񗘁Ⴇ.ꙺ; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ;  # ssႧ.ꙺ
-ss𐵳񗘁ⴇ。ꙺ; ss𐵳񗘁ⴇ.ꙺ; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ssⴇ.ꙺ
-Ss𐵳񗘁Ⴇ。ꙺ; ss𐵳񗘁Ⴇ.ꙺ; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ;  # ssႧ.ꙺ
-xn--ss-rek7420r4hs7b.xn--9x8a; ss𐵳񗘁Ⴇ.ꙺ; [B1, B3, B5, B6, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ;  # ssႧ.ꙺ
-xn--ss-e61ar955h4hs7b.xn--9x8a; ss𐵳񗘁ⴇ.ꙺ; [B1, B3, B5, B6, V5, V6]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ssⴇ.ꙺ
-xn--zca227tpy4lkns1b.xn--9x8a; ß𐵳񗘁ⴇ.ꙺ; [B1, B3, B5, B6, V5, V6]; xn--zca227tpy4lkns1b.xn--9x8a; ; ;  # ßⴇ.ꙺ
-xn--zca491fci5qkn79a.xn--9x8a; ß𐵳񗘁Ⴇ.ꙺ; [B1, B3, B5, B6, V5, V6]; xn--zca491fci5qkn79a.xn--9x8a; ; ;  # ßႧ.ꙺ
-ß𐵳񗘁ⴇ｡ꙺ; ß𐵳񗘁ⴇ.ꙺ; [B1, B3, B5, B6, P1, V5, V6]; xn--zca227tpy4lkns1b.xn--9x8a; ; xn--ss-e61ar955h4hs7b.xn--9x8a;  # ßⴇ.ꙺ
-SS𐵳񗘁Ⴇ｡ꙺ; ss𐵳񗘁Ⴇ.ꙺ; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ;  # ssႧ.ꙺ
-ss𐵳񗘁ⴇ｡ꙺ; ss𐵳񗘁ⴇ.ꙺ; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ssⴇ.ꙺ
-Ss𐵳񗘁Ⴇ｡ꙺ; ss𐵳񗘁Ⴇ.ꙺ; [B1, B3, B5, B6, P1, V5, V6]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ;  # ssႧ.ꙺ
-᜔。󠆣-𑋪; ᜔.-𑋪; [V3, V5]; xn--fze.xn----ly8i; ; ;  # ᜔.-𑋪
-xn--fze.xn----ly8i; ᜔.-𑋪; [V3, V5]; xn--fze.xn----ly8i; ; ;  # ᜔.-𑋪
-ꯨ-．򨏜ֽß; ꯨ-.򨏜ֽß; [P1, V3, V5, V6]; xn----pw5e.xn--zca50wfv060a; ; xn----pw5e.xn--ss-7jd10716y;  # ꯨ-.ֽß
-ꯨ-.򨏜ֽß; ; [P1, V3, V5, V6]; xn----pw5e.xn--zca50wfv060a; ; xn----pw5e.xn--ss-7jd10716y;  # ꯨ-.ֽß
-ꯨ-.򨏜ֽSS; ꯨ-.򨏜ֽss; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
-ꯨ-.򨏜ֽss; ; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
-ꯨ-.򨏜ֽSs; ꯨ-.򨏜ֽss; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
-xn----pw5e.xn--ss-7jd10716y; ꯨ-.򨏜ֽss; [V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
-xn----pw5e.xn--zca50wfv060a; ꯨ-.򨏜ֽß; [V3, V5, V6]; xn----pw5e.xn--zca50wfv060a; ; ;  # ꯨ-.ֽß
-ꯨ-．򨏜ֽSS; ꯨ-.򨏜ֽss; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
-ꯨ-．򨏜ֽss; ꯨ-.򨏜ֽss; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
-ꯨ-．򨏜ֽSs; ꯨ-.򨏜ֽss; [P1, V3, V5, V6]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
-ᡓ-≮。٫󠅱ᡄ; ᡓ-≮.٫ᡄ; [B1, B6, P1, V6]; xn----s7j866c.xn--kib252g; ; ;  # ᡓ-≮.٫ᡄ
-ᡓ-≮。٫󠅱ᡄ; ᡓ-≮.٫ᡄ; [B1, B6, P1, V6]; xn----s7j866c.xn--kib252g; ; ;  # ᡓ-≮.٫ᡄ
-xn----s7j866c.xn--kib252g; ᡓ-≮.٫ᡄ; [B1, B6, V6]; xn----s7j866c.xn--kib252g; ; ;  # ᡓ-≮.٫ᡄ
-𝟥♮𑜫࣭．្𑜫8󠆏; 3♮𑜫࣭.្𑜫8; [V5]; xn--3-ksd277tlo7s.xn--8-f0jx021l; ; ;  # 3♮𑜫࣭.្𑜫8
-3♮𑜫࣭.្𑜫8󠆏; 3♮𑜫࣭.្𑜫8; [V5]; xn--3-ksd277tlo7s.xn--8-f0jx021l; ; ;  # 3♮𑜫࣭.្𑜫8
-xn--3-ksd277tlo7s.xn--8-f0jx021l; 3♮𑜫࣭.្𑜫8; [V5]; xn--3-ksd277tlo7s.xn--8-f0jx021l; ; ;  # 3♮𑜫࣭.្𑜫8
--｡򕌀‍❡; -.򕌀‍❡; [C2, P1, V3, V6]; -.xn--1ug800aq795s; ; -.xn--nei54421f; [P1, V3, V6] # -.❡
--。򕌀‍❡; -.򕌀‍❡; [C2, P1, V3, V6]; -.xn--1ug800aq795s; ; -.xn--nei54421f; [P1, V3, V6] # -.❡
--.xn--nei54421f; -.򕌀❡; [V3, V6]; -.xn--nei54421f; ; ;  # -.❡
--.xn--1ug800aq795s; -.򕌀‍❡; [C2, V3, V6]; -.xn--1ug800aq795s; ; ;  # -.❡
-𝟓☱𝟐򥰵｡𝪮񐡳; 5☱2򥰵.𝪮񐡳; [P1, V5, V6]; xn--52-dwx47758j.xn--kd3hk431k; ; ;  # 5☱2.𝪮
-5☱2򥰵。𝪮񐡳; 5☱2򥰵.𝪮񐡳; [P1, V5, V6]; xn--52-dwx47758j.xn--kd3hk431k; ; ;  # 5☱2.𝪮
-xn--52-dwx47758j.xn--kd3hk431k; 5☱2򥰵.𝪮񐡳; [V5, V6]; xn--52-dwx47758j.xn--kd3hk431k; ; ;  # 5☱2.𝪮
--.-├򖦣; ; [P1, V3, V6]; -.xn----ukp70432h; ; ;  # -.-├
--.xn----ukp70432h; -.-├򖦣; [V3, V6]; -.xn----ukp70432h; ; ;  # -.-├
-֥ݭ｡‍󠀘; ֥ݭ.‍󠀘; [B1, C2, P1, V5, V6]; xn--wcb62g.xn--1ugy8001l; ; xn--wcb62g.xn--p526e; [B1, P1, V5, V6] # ֥ݭ.
-֥ݭ。‍󠀘; ֥ݭ.‍󠀘; [B1, C2, P1, V5, V6]; xn--wcb62g.xn--1ugy8001l; ; xn--wcb62g.xn--p526e; [B1, P1, V5, V6] # ֥ݭ.
-xn--wcb62g.xn--p526e; ֥ݭ.󠀘; [B1, V5, V6]; xn--wcb62g.xn--p526e; ; ;  # ֥ݭ.
-xn--wcb62g.xn--1ugy8001l; ֥ݭ.‍󠀘; [B1, C2, V5, V6]; xn--wcb62g.xn--1ugy8001l; ; ;  # ֥ݭ.
-쥥󔏉Ⴎ．‌⒈⒈𐫒; 쥥󔏉Ⴎ.‌⒈⒈𐫒; [B1, C1, P1, V6]; xn--mnd7865gcy28g.xn--0ug88oa0396u; ; xn--mnd7865gcy28g.xn--tsha6797o; [B1, P1, V6] # 쥥Ⴎ.⒈⒈𐫒
-쥥󔏉Ⴎ．‌⒈⒈𐫒; 쥥󔏉Ⴎ.‌⒈⒈𐫒; [B1, C1, P1, V6]; xn--mnd7865gcy28g.xn--0ug88oa0396u; ; xn--mnd7865gcy28g.xn--tsha6797o; [B1, P1, V6] # 쥥Ⴎ.⒈⒈𐫒
-쥥󔏉Ⴎ.‌1.1.𐫒; ; [B1, C1, P1, V6]; xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; ; xn--mnd7865gcy28g.1.1.xn--7w9c; [B1, P1, V6] # 쥥Ⴎ.1.1.𐫒
-쥥󔏉Ⴎ.‌1.1.𐫒; 쥥󔏉Ⴎ.‌1.1.𐫒; [B1, C1, P1, V6]; xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; ; xn--mnd7865gcy28g.1.1.xn--7w9c; [B1, P1, V6] # 쥥Ⴎ.1.1.𐫒
-쥥󔏉ⴎ.‌1.1.𐫒; 쥥󔏉ⴎ.‌1.1.𐫒; [B1, C1, P1, V6]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; xn--5kj3511ccyw3h.1.1.xn--7w9c; [B1, P1, V6] # 쥥ⴎ.1.1.𐫒
-쥥󔏉ⴎ.‌1.1.𐫒; ; [B1, C1, P1, V6]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; xn--5kj3511ccyw3h.1.1.xn--7w9c; [B1, P1, V6] # 쥥ⴎ.1.1.𐫒
-xn--5kj3511ccyw3h.1.1.xn--7w9c; 쥥󔏉ⴎ.1.1.𐫒; [B1, V6]; xn--5kj3511ccyw3h.1.1.xn--7w9c; ; ;  # 쥥ⴎ.1.1.𐫒
-xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; 쥥󔏉ⴎ.‌1.1.𐫒; [B1, C1, V6]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; ;  # 쥥ⴎ.1.1.𐫒
-xn--mnd7865gcy28g.1.1.xn--7w9c; 쥥󔏉Ⴎ.1.1.𐫒; [B1, V6]; xn--mnd7865gcy28g.1.1.xn--7w9c; ; ;  # 쥥Ⴎ.1.1.𐫒
-xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; 쥥󔏉Ⴎ.‌1.1.𐫒; [B1, C1, V6]; xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; ; ;  # 쥥Ⴎ.1.1.𐫒
-쥥󔏉ⴎ．‌⒈⒈𐫒; 쥥󔏉ⴎ.‌⒈⒈𐫒; [B1, C1, P1, V6]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; xn--5kj3511ccyw3h.xn--tsha6797o; [B1, P1, V6] # 쥥ⴎ.⒈⒈𐫒
-쥥󔏉ⴎ．‌⒈⒈𐫒; 쥥󔏉ⴎ.‌⒈⒈𐫒; [B1, C1, P1, V6]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; xn--5kj3511ccyw3h.xn--tsha6797o; [B1, P1, V6] # 쥥ⴎ.⒈⒈𐫒
-xn--5kj3511ccyw3h.xn--tsha6797o; 쥥󔏉ⴎ.⒈⒈𐫒; [B1, V6]; xn--5kj3511ccyw3h.xn--tsha6797o; ; ;  # 쥥ⴎ.⒈⒈𐫒
-xn--5kj3511ccyw3h.xn--0ug88oa0396u; 쥥󔏉ⴎ.‌⒈⒈𐫒; [B1, C1, V6]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; ;  # 쥥ⴎ.⒈⒈𐫒
-xn--mnd7865gcy28g.xn--tsha6797o; 쥥󔏉Ⴎ.⒈⒈𐫒; [B1, V6]; xn--mnd7865gcy28g.xn--tsha6797o; ; ;  # 쥥Ⴎ.⒈⒈𐫒
-xn--mnd7865gcy28g.xn--0ug88oa0396u; 쥥󔏉Ⴎ.‌⒈⒈𐫒; [B1, C1, V6]; xn--mnd7865gcy28g.xn--0ug88oa0396u; ; ;  # 쥥Ⴎ.⒈⒈𐫒
-ࠧ𝟶ڠ-。𑄳; ࠧ0ڠ-.𑄳; [B1, B3, B6, V3, V5]; xn--0--p3d67m.xn--v80d; ; ;  # ࠧ0ڠ-.𑄳
-ࠧ0ڠ-。𑄳; ࠧ0ڠ-.𑄳; [B1, B3, B6, V3, V5]; xn--0--p3d67m.xn--v80d; ; ;  # ࠧ0ڠ-.𑄳
-xn--0--p3d67m.xn--v80d; ࠧ0ڠ-.𑄳; [B1, B3, B6, V3, V5]; xn--0--p3d67m.xn--v80d; ; ;  # ࠧ0ڠ-.𑄳
-ς．ﷁ🞛⒈; ς.فمي🞛⒈; [P1, V6]; xn--3xa.xn--dhbip2802atb20c; ; xn--4xa.xn--dhbip2802atb20c;  # ς.فمي🞛⒈
-ς.فمي🞛1.; ; ; xn--3xa.xn--1-gocmu97674d.; ; xn--4xa.xn--1-gocmu97674d.;  # ς.فمي🞛1.
-Σ.فمي🞛1.; σ.فمي🞛1.; ; xn--4xa.xn--1-gocmu97674d.; ; ;  # σ.فمي🞛1.
-σ.فمي🞛1.; ; ; xn--4xa.xn--1-gocmu97674d.; ; ;  # σ.فمي🞛1.
-xn--4xa.xn--1-gocmu97674d.; σ.فمي🞛1.; ; xn--4xa.xn--1-gocmu97674d.; ; ;  # σ.فمي🞛1.
-xn--3xa.xn--1-gocmu97674d.; ς.فمي🞛1.; ; xn--3xa.xn--1-gocmu97674d.; ; ;  # ς.فمي🞛1.
-Σ．ﷁ🞛⒈; σ.فمي🞛⒈; [P1, V6]; xn--4xa.xn--dhbip2802atb20c; ; ;  # σ.فمي🞛⒈
-σ．ﷁ🞛⒈; σ.فمي🞛⒈; [P1, V6]; xn--4xa.xn--dhbip2802atb20c; ; ;  # σ.فمي🞛⒈
-xn--4xa.xn--dhbip2802atb20c; σ.فمي🞛⒈; [V6]; xn--4xa.xn--dhbip2802atb20c; ; ;  # σ.فمي🞛⒈
-xn--3xa.xn--dhbip2802atb20c; ς.فمي🞛⒈; [V6]; xn--3xa.xn--dhbip2802atb20c; ; ;  # ς.فمي🞛⒈
-🗩-｡𐹻󐞆񥉮; 🗩-.𐹻󐞆񥉮; [B1, P1, V3, V6]; xn----6t3s.xn--zo0d4811u6ru6a; ; ;  # 🗩-.𐹻
-🗩-。𐹻󐞆񥉮; 🗩-.𐹻󐞆񥉮; [B1, P1, V3, V6]; xn----6t3s.xn--zo0d4811u6ru6a; ; ;  # 🗩-.𐹻
-xn----6t3s.xn--zo0d4811u6ru6a; 🗩-.𐹻󐞆񥉮; [B1, V3, V6]; xn----6t3s.xn--zo0d4811u6ru6a; ; ;  # 🗩-.𐹻
-𐡜-🔪｡𝟻‌𐿀; 𐡜-🔪.5‌𐿀; [B1, B3, C1, P1, V6]; xn----5j4iv089c.xn--5-sgn7149h; ; xn----5j4iv089c.xn--5-bn7i; [B1, B3, P1, V6] # 𐡜-🔪.5𐿀
-𐡜-🔪。5‌𐿀; 𐡜-🔪.5‌𐿀; [B1, B3, C1, P1, V6]; xn----5j4iv089c.xn--5-sgn7149h; ; xn----5j4iv089c.xn--5-bn7i; [B1, B3, P1, V6] # 𐡜-🔪.5𐿀
-xn----5j4iv089c.xn--5-bn7i; 𐡜-🔪.5𐿀; [B1, B3, V6]; xn----5j4iv089c.xn--5-bn7i; ; ;  # 𐡜-🔪.5𐿀
-xn----5j4iv089c.xn--5-sgn7149h; 𐡜-🔪.5‌𐿀; [B1, B3, C1, V6]; xn----5j4iv089c.xn--5-sgn7149h; ; ;  # 𐡜-🔪.5𐿀
-𐹣늿‍ß．ߏ0ּ; 𐹣늿‍ß.ߏ0ּ; [B1, C2]; xn--zca770n5s4hev6c.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ß.ߏ0ּ
-𐹣늿‍ß．ߏ0ּ; 𐹣늿‍ß.ߏ0ּ; [B1, C2]; xn--zca770n5s4hev6c.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ß.ߏ0ּ
-𐹣늿‍ß.ߏ0ּ; ; [B1, C2]; xn--zca770n5s4hev6c.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ß.ߏ0ּ
-𐹣늿‍ß.ߏ0ּ; 𐹣늿‍ß.ߏ0ּ; [B1, C2]; xn--zca770n5s4hev6c.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ß.ߏ0ּ
-𐹣늿‍SS.ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-𐹣늿‍SS.ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-𐹣늿‍ss.ߏ0ּ; ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-𐹣늿‍ss.ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-xn--ss-i05i7041a.xn--0-vgc50n; 𐹣늿ss.ߏ0ּ; [B1]; xn--ss-i05i7041a.xn--0-vgc50n; ; ;  # 𐹣늿ss.ߏ0ּ
-xn--ss-l1tu910fo0xd.xn--0-vgc50n; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; ;  # 𐹣늿ss.ߏ0ּ
-𐹣늿‍Ss.ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-𐹣늿‍Ss.ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-xn--zca770n5s4hev6c.xn--0-vgc50n; 𐹣늿‍ß.ߏ0ּ; [B1, C2]; xn--zca770n5s4hev6c.xn--0-vgc50n; ; ;  # 𐹣늿ß.ߏ0ּ
-𐹣늿‍SS．ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-𐹣늿‍SS．ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-𐹣늿‍ss．ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-𐹣늿‍ss．ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-𐹣늿‍Ss．ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-𐹣늿‍Ss．ߏ0ּ; 𐹣늿‍ss.ߏ0ּ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
-9󠇥．󪴴ᢓ; 9.󪴴ᢓ; [P1, V6]; 9.xn--dbf91222q; ; ;  # 9.ᢓ
-9󠇥.󪴴ᢓ; 9.󪴴ᢓ; [P1, V6]; 9.xn--dbf91222q; ; ;  # 9.ᢓ
-9.xn--dbf91222q; 9.󪴴ᢓ; [V6]; 9.xn--dbf91222q; ; ;  # 9.ᢓ
-‌ﾠ.𐫭🠗ß⽟; ‌ﾠ.𐫭🠗ß玉; [B1, B2, B3, C1, P1, V6]; xn--0ug7719f.xn--zca2289c550e0iwi; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .𐫭🠗ß玉
-‌ᅠ.𐫭🠗ß玉; ; [B1, B2, B3, C1, P1, V6]; xn--psd526e.xn--zca2289c550e0iwi; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .𐫭🠗ß玉
-‌ᅠ.𐫭🠗SS玉; ‌ᅠ.𐫭🠗ss玉; [B1, B2, B3, C1, P1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .𐫭🠗ss玉
-‌ᅠ.𐫭🠗ss玉; ; [B1, B2, B3, C1, P1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .𐫭🠗ss玉
-‌ᅠ.𐫭🠗Ss玉; ‌ᅠ.𐫭🠗ss玉; [B1, B2, B3, C1, P1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; xn--psd.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .𐫭🠗ss玉
-xn--psd.xn--ss-je6eq954cp25j; ᅠ.𐫭🠗ss玉; [B2, B3, V6]; xn--psd.xn--ss-je6eq954cp25j; ; ;  # .𐫭🠗ss玉
-xn--psd526e.xn--ss-je6eq954cp25j; ‌ᅠ.𐫭🠗ss玉; [B1, B2, B3, C1, V6]; xn--psd526e.xn--ss-je6eq954cp25j; ; ;  # .𐫭🠗ss玉
-xn--psd526e.xn--zca2289c550e0iwi; ‌ᅠ.𐫭🠗ß玉; [B1, B2, B3, C1, V6]; xn--psd526e.xn--zca2289c550e0iwi; ; ;  # .𐫭🠗ß玉
-‌ﾠ.𐫭🠗SS⽟; ‌ﾠ.𐫭🠗ss玉; [B1, B2, B3, C1, P1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .𐫭🠗ss玉
-‌ﾠ.𐫭🠗ss⽟; ‌ﾠ.𐫭🠗ss玉; [B1, B2, B3, C1, P1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .𐫭🠗ss玉
-‌ﾠ.𐫭🠗Ss⽟; ‌ﾠ.𐫭🠗ss玉; [B1, B2, B3, C1, P1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; xn--cl7c.xn--ss-je6eq954cp25j; [B2, B3, P1, V6] # .𐫭🠗ss玉
-xn--cl7c.xn--ss-je6eq954cp25j; ﾠ.𐫭🠗ss玉; [B2, B3, V6]; xn--cl7c.xn--ss-je6eq954cp25j; ; ;  # .𐫭🠗ss玉
-xn--0ug7719f.xn--ss-je6eq954cp25j; ‌ﾠ.𐫭🠗ss玉; [B1, B2, B3, C1, V6]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; ;  # .𐫭🠗ss玉
-xn--0ug7719f.xn--zca2289c550e0iwi; ‌ﾠ.𐫭🠗ß玉; [B1, B2, B3, C1, V6]; xn--0ug7719f.xn--zca2289c550e0iwi; ; ;  # .𐫭🠗ß玉
-︒Ⴖͦ．‌; ︒Ⴖͦ.‌; [C1, P1, V6]; xn--hva929dl29p.xn--0ug; ; xn--hva929dl29p.; [P1, V6] # ︒Ⴖͦ.
-。Ⴖͦ.‌; .Ⴖͦ.‌; [C1, P1, V6, X4_2]; .xn--hva929d.xn--0ug; [C1, P1, V6, A4_2]; .xn--hva929d.; [P1, V6, A4_2] # .Ⴖͦ.
-。ⴖͦ.‌; .ⴖͦ.‌; [C1, X4_2]; .xn--hva754s.xn--0ug; [C1, A4_2]; .xn--hva754s.; [A4_2] # .ⴖͦ.
-.xn--hva754s.; .ⴖͦ.; [X4_2]; .xn--hva754s.; [A4_2]; ;  # .ⴖͦ.
-.xn--hva754s.xn--0ug; .ⴖͦ.‌; [C1, X4_2]; .xn--hva754s.xn--0ug; [C1, A4_2]; ;  # .ⴖͦ.
-.xn--hva929d.; .Ⴖͦ.; [V6, X4_2]; .xn--hva929d.; [V6, A4_2]; ;  # .Ⴖͦ.
-.xn--hva929d.xn--0ug; .Ⴖͦ.‌; [C1, V6, X4_2]; .xn--hva929d.xn--0ug; [C1, V6, A4_2]; ;  # .Ⴖͦ.
-︒ⴖͦ．‌; ︒ⴖͦ.‌; [C1, P1, V6]; xn--hva754sy94k.xn--0ug; ; xn--hva754sy94k.; [P1, V6] # ︒ⴖͦ.
-xn--hva754sy94k.; ︒ⴖͦ.; [V6]; xn--hva754sy94k.; ; ;  # ︒ⴖͦ.
-xn--hva754sy94k.xn--0ug; ︒ⴖͦ.‌; [C1, V6]; xn--hva754sy94k.xn--0ug; ; ;  # ︒ⴖͦ.
-xn--hva929dl29p.; ︒Ⴖͦ.; [V6]; xn--hva929dl29p.; ; ;  # ︒Ⴖͦ.
-xn--hva929dl29p.xn--0ug; ︒Ⴖͦ.‌; [C1, V6]; xn--hva929dl29p.xn--0ug; ; ;  # ︒Ⴖͦ.
-xn--hva754s.; ⴖͦ.; ; xn--hva754s.; ; ;  # ⴖͦ.
-ⴖͦ.; ; ; xn--hva754s.; ; ;  # ⴖͦ.
-Ⴖͦ.; ; [P1, V6]; xn--hva929d.; ; ;  # Ⴖͦ.
-xn--hva929d.; Ⴖͦ.; [V6]; xn--hva929d.; ; ;  # Ⴖͦ.
-ࢻ．‌Ⴃ𞀒; ࢻ.‌Ⴃ𞀒; [B1, C1, P1, V6]; xn--hzb.xn--bnd300f7225a; ; xn--hzb.xn--bnd2938u; [P1, V6] # ࢻ.Ⴃ𞀒
-ࢻ.‌Ⴃ𞀒; ; [B1, C1, P1, V6]; xn--hzb.xn--bnd300f7225a; ; xn--hzb.xn--bnd2938u; [P1, V6] # ࢻ.Ⴃ𞀒
-ࢻ.‌ⴃ𞀒; ; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; xn--hzb.xn--ukj4430l; [] # ࢻ.ⴃ𞀒
-xn--hzb.xn--ukj4430l; ࢻ.ⴃ𞀒; ; xn--hzb.xn--ukj4430l; ; ;  # ࢻ.ⴃ𞀒
-ࢻ.ⴃ𞀒; ; ; xn--hzb.xn--ukj4430l; ; ;  # ࢻ.ⴃ𞀒
-ࢻ.Ⴃ𞀒; ; [P1, V6]; xn--hzb.xn--bnd2938u; ; ;  # ࢻ.Ⴃ𞀒
-xn--hzb.xn--bnd2938u; ࢻ.Ⴃ𞀒; [V6]; xn--hzb.xn--bnd2938u; ; ;  # ࢻ.Ⴃ𞀒
-xn--hzb.xn--0ug822cp045a; ࢻ.‌ⴃ𞀒; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; ;  # ࢻ.ⴃ𞀒
-xn--hzb.xn--bnd300f7225a; ࢻ.‌Ⴃ𞀒; [B1, C1, V6]; xn--hzb.xn--bnd300f7225a; ; ;  # ࢻ.Ⴃ𞀒
-ࢻ．‌ⴃ𞀒; ࢻ.‌ⴃ𞀒; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; xn--hzb.xn--ukj4430l; [] # ࢻ.ⴃ𞀒
-‍‌。２䫷󠧷; ‍‌.2䫷󠧷; [C1, C2, P1, V6]; xn--0ugb.xn--2-me5ay1273i; ; .xn--2-me5ay1273i; [P1, V6, A4_2] # .2䫷
-‍‌。2䫷󠧷; ‍‌.2䫷󠧷; [C1, C2, P1, V6]; xn--0ugb.xn--2-me5ay1273i; ; .xn--2-me5ay1273i; [P1, V6, A4_2] # .2䫷
-.xn--2-me5ay1273i; .2䫷󠧷; [V6, X4_2]; .xn--2-me5ay1273i; [V6, A4_2]; ;  # .2䫷
-xn--0ugb.xn--2-me5ay1273i; ‍‌.2䫷󠧷; [C1, C2, V6]; xn--0ugb.xn--2-me5ay1273i; ; ;  # .2䫷
--𞀤󜠐。򈬖; -𞀤󜠐.򈬖; [P1, V3, V6]; xn----rq4re4997d.xn--l707b; ; ;  # -𞀤.
-xn----rq4re4997d.xn--l707b; -𞀤󜠐.򈬖; [V3, V6]; xn----rq4re4997d.xn--l707b; ; ;  # -𞀤.
-󳛂︒‌㟀．ؤ⒈; 󳛂︒‌㟀.ؤ⒈; [C1, P1, V6]; xn--0ug754gxl4ldlt0k.xn--jgb476m; ; xn--etlt457ccrq7h.xn--jgb476m; [P1, V6] # ︒㟀.ؤ⒈
-󳛂︒‌㟀．ؤ⒈; 󳛂︒‌㟀.ؤ⒈; [C1, P1, V6]; xn--0ug754gxl4ldlt0k.xn--jgb476m; ; xn--etlt457ccrq7h.xn--jgb476m; [P1, V6] # ︒㟀.ؤ⒈
-󳛂。‌㟀.ؤ1.; 󳛂.‌㟀.ؤ1.; [B1, C1, P1, V6]; xn--z272f.xn--0ug754g.xn--1-smc.; ; xn--z272f.xn--etl.xn--1-smc.; [P1, V6] # .㟀.ؤ1.
-󳛂。‌㟀.ؤ1.; 󳛂.‌㟀.ؤ1.; [B1, C1, P1, V6]; xn--z272f.xn--0ug754g.xn--1-smc.; ; xn--z272f.xn--etl.xn--1-smc.; [P1, V6] # .㟀.ؤ1.
-xn--z272f.xn--etl.xn--1-smc.; 󳛂.㟀.ؤ1.; [V6]; xn--z272f.xn--etl.xn--1-smc.; ; ;  # .㟀.ؤ1.
-xn--z272f.xn--0ug754g.xn--1-smc.; 󳛂.‌㟀.ؤ1.; [B1, C1, V6]; xn--z272f.xn--0ug754g.xn--1-smc.; ; ;  # .㟀.ؤ1.
-xn--etlt457ccrq7h.xn--jgb476m; 󳛂︒㟀.ؤ⒈; [V6]; xn--etlt457ccrq7h.xn--jgb476m; ; ;  # ︒㟀.ؤ⒈
-xn--0ug754gxl4ldlt0k.xn--jgb476m; 󳛂︒‌㟀.ؤ⒈; [C1, V6]; xn--0ug754gxl4ldlt0k.xn--jgb476m; ; ;  # ︒㟀.ؤ⒈
-𑲜ߊ𝅼。-‍; 𑲜ߊ𝅼.-‍; [B1, C2, V3, V5]; xn--lsb5482l7nre.xn----ugn; ; xn--lsb5482l7nre.-; [B1, V3, V5] # 𑲜ߊ𝅼.-
-xn--lsb5482l7nre.-; 𑲜ߊ𝅼.-; [B1, V3, V5]; xn--lsb5482l7nre.-; ; ;  # 𑲜ߊ𝅼.-
-xn--lsb5482l7nre.xn----ugn; 𑲜ߊ𝅼.-‍; [B1, C2, V3, V5]; xn--lsb5482l7nre.xn----ugn; ; ;  # 𑲜ߊ𝅼.-
-‌．Ⴉ≠𐫶; ‌.Ⴉ≠𐫶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, P1, V6, A4_2] # .Ⴉ≠𐫶
-‌．Ⴉ≠𐫶; ‌.Ⴉ≠𐫶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, P1, V6, A4_2] # .Ⴉ≠𐫶
-‌.Ⴉ≠𐫶; ; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, P1, V6, A4_2] # .Ⴉ≠𐫶
-‌.Ⴉ≠𐫶; ‌.Ⴉ≠𐫶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--hnd481gv73o; ; .xn--hnd481gv73o; [B5, B6, P1, V6, A4_2] # .Ⴉ≠𐫶
-‌.ⴉ≠𐫶; ‌.ⴉ≠𐫶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, P1, V6, A4_2] # .ⴉ≠𐫶
-‌.ⴉ≠𐫶; ; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, P1, V6, A4_2] # .ⴉ≠𐫶
-.xn--1chx23bzj4p; .ⴉ≠𐫶; [B5, B6, V6, X4_2]; .xn--1chx23bzj4p; [B5, B6, V6, A4_2]; ;  # .ⴉ≠𐫶
-xn--0ug.xn--1chx23bzj4p; ‌.ⴉ≠𐫶; [B1, B5, B6, C1, V6]; xn--0ug.xn--1chx23bzj4p; ; ;  # .ⴉ≠𐫶
-.xn--hnd481gv73o; .Ⴉ≠𐫶; [B5, B6, V6, X4_2]; .xn--hnd481gv73o; [B5, B6, V6, A4_2]; ;  # .Ⴉ≠𐫶
-xn--0ug.xn--hnd481gv73o; ‌.Ⴉ≠𐫶; [B1, B5, B6, C1, V6]; xn--0ug.xn--hnd481gv73o; ; ;  # .Ⴉ≠𐫶
-‌．ⴉ≠𐫶; ‌.ⴉ≠𐫶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, P1, V6, A4_2] # .ⴉ≠𐫶
-‌．ⴉ≠𐫶; ‌.ⴉ≠𐫶; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, P1, V6, A4_2] # .ⴉ≠𐫶
-ݐ。≯ς; ݐ.≯ς; [B1, P1, V6]; xn--3ob.xn--3xa918m; ; xn--3ob.xn--4xa718m;  # ݐ.≯ς
-ݐ。≯ς; ݐ.≯ς; [B1, P1, V6]; xn--3ob.xn--3xa918m; ; xn--3ob.xn--4xa718m;  # ݐ.≯ς
-ݐ。≯Σ; ݐ.≯σ; [B1, P1, V6]; xn--3ob.xn--4xa718m; ; ;  # ݐ.≯σ
-ݐ。≯Σ; ݐ.≯σ; [B1, P1, V6]; xn--3ob.xn--4xa718m; ; ;  # ݐ.≯σ
-ݐ。≯σ; ݐ.≯σ; [B1, P1, V6]; xn--3ob.xn--4xa718m; ; ;  # ݐ.≯σ
-ݐ。≯σ; ݐ.≯σ; [B1, P1, V6]; xn--3ob.xn--4xa718m; ; ;  # ݐ.≯σ
-xn--3ob.xn--4xa718m; ݐ.≯σ; [B1, V6]; xn--3ob.xn--4xa718m; ; ;  # ݐ.≯σ
-xn--3ob.xn--3xa918m; ݐ.≯ς; [B1, V6]; xn--3ob.xn--3xa918m; ; ;  # ݐ.≯ς
-߼𐸆.𓖏︒񊨩Ⴐ; ; [P1, V6]; xn--0tb8725k.xn--ond3562jt18a7py9c; ; ;  # .︒Ⴐ
-߼𐸆.𓖏。񊨩Ⴐ; ߼𐸆.𓖏.񊨩Ⴐ; [P1, V6]; xn--0tb8725k.xn--tu8d.xn--ond97931d; ; ;  # ..Ⴐ
-߼𐸆.𓖏。񊨩ⴐ; ߼𐸆.𓖏.񊨩ⴐ; [P1, V6]; xn--0tb8725k.xn--tu8d.xn--7kj73887a; ; ;  # ..ⴐ
-xn--0tb8725k.xn--tu8d.xn--7kj73887a; ߼𐸆.𓖏.񊨩ⴐ; [V6]; xn--0tb8725k.xn--tu8d.xn--7kj73887a; ; ;  # ..ⴐ
-xn--0tb8725k.xn--tu8d.xn--ond97931d; ߼𐸆.𓖏.񊨩Ⴐ; [V6]; xn--0tb8725k.xn--tu8d.xn--ond97931d; ; ;  # ..Ⴐ
-߼𐸆.𓖏︒񊨩ⴐ; ; [P1, V6]; xn--0tb8725k.xn--7kj9008dt18a7py9c; ; ;  # .︒ⴐ
-xn--0tb8725k.xn--7kj9008dt18a7py9c; ߼𐸆.𓖏︒񊨩ⴐ; [V6]; xn--0tb8725k.xn--7kj9008dt18a7py9c; ; ;  # .︒ⴐ
-xn--0tb8725k.xn--ond3562jt18a7py9c; ߼𐸆.𓖏︒񊨩Ⴐ; [V6]; xn--0tb8725k.xn--ond3562jt18a7py9c; ; ;  # .︒Ⴐ
-Ⴥ⚭󠖫⋃｡𑌼; Ⴥ⚭󠖫⋃.𑌼; [P1, V5, V6]; xn--9nd623g4zc5z060c.xn--ro1d; ; ;  # Ⴥ⚭⋃.𑌼
-Ⴥ⚭󠖫⋃。𑌼; Ⴥ⚭󠖫⋃.𑌼; [P1, V5, V6]; xn--9nd623g4zc5z060c.xn--ro1d; ; ;  # Ⴥ⚭⋃.𑌼
-ⴥ⚭󠖫⋃。𑌼; ⴥ⚭󠖫⋃.𑌼; [P1, V5, V6]; xn--vfh16m67gx1162b.xn--ro1d; ; ;  # ⴥ⚭⋃.𑌼
-xn--vfh16m67gx1162b.xn--ro1d; ⴥ⚭󠖫⋃.𑌼; [V5, V6]; xn--vfh16m67gx1162b.xn--ro1d; ; ;  # ⴥ⚭⋃.𑌼
-xn--9nd623g4zc5z060c.xn--ro1d; Ⴥ⚭󠖫⋃.𑌼; [V5, V6]; xn--9nd623g4zc5z060c.xn--ro1d; ; ;  # Ⴥ⚭⋃.𑌼
-ⴥ⚭󠖫⋃｡𑌼; ⴥ⚭󠖫⋃.𑌼; [P1, V5, V6]; xn--vfh16m67gx1162b.xn--ro1d; ; ;  # ⴥ⚭⋃.𑌼
-🄈。󠷳ࡄ; 🄈.󠷳ࡄ; [B1, P1, V6]; xn--107h.xn--2vb13094p; ; ;  # 🄈.ࡄ
-7,。󠷳ࡄ; 7,.󠷳ࡄ; [B1, P1, V6]; 7,.xn--2vb13094p; ; ;  # 7,.ࡄ
-7,.xn--2vb13094p; 7,.󠷳ࡄ; [B1, P1, V6]; 7,.xn--2vb13094p; ; ;  # 7,.ࡄ
-xn--107h.xn--2vb13094p; 🄈.󠷳ࡄ; [B1, V6]; xn--107h.xn--2vb13094p; ; ;  # 🄈.ࡄ
-≮ࡆ。섖쮖ß; ≮ࡆ.섖쮖ß; [B1, P1, V6]; xn--4vb505k.xn--zca7259goug; ; xn--4vb505k.xn--ss-5z4j006a;  # ≮ࡆ.섖쮖ß
-≮ࡆ。섖쮖ß; ≮ࡆ.섖쮖ß; [B1, P1, V6]; xn--4vb505k.xn--zca7259goug; ; xn--4vb505k.xn--ss-5z4j006a;  # ≮ࡆ.섖쮖ß
-≮ࡆ。섖쮖SS; ≮ࡆ.섖쮖ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
-≮ࡆ。섖쮖SS; ≮ࡆ.섖쮖ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
-≮ࡆ。섖쮖ss; ≮ࡆ.섖쮖ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
-≮ࡆ。섖쮖ss; ≮ࡆ.섖쮖ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
-xn--4vb505k.xn--ss-5z4j006a; ≮ࡆ.섖쮖ss; [B1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
-≮ࡆ。섖쮖Ss; ≮ࡆ.섖쮖ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
-≮ࡆ。섖쮖Ss; ≮ࡆ.섖쮖ss; [B1, P1, V6]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
-xn--4vb505k.xn--zca7259goug; ≮ࡆ.섖쮖ß; [B1, V6]; xn--4vb505k.xn--zca7259goug; ; ;  # ≮ࡆ.섖쮖ß
+xn----3vs.xn--1ug532c; ⴏ-.\u200Dⴉ; [C2, V3]; xn----3vs.xn--1ug532c; ; ;  # ⴏ-.ⴉ
+ⴏ󠅋-．\u200Dⴉ; ⴏ-.\u200Dⴉ; [C2, V3]; xn----3vs.xn--1ug532c; ; xn----3vs.xn--0kj; [V3] # ⴏ-.ⴉ
+xn----00g.xn--hnd; Ⴏ-.Ⴉ; [V3, V7]; xn----00g.xn--hnd; ; ;  # Ⴏ-.Ⴉ
+xn----00g.xn--hnd399e; Ⴏ-.\u200DႩ; [C2, V3, V7]; xn----00g.xn--hnd399e; ; ;  # Ⴏ-.Ⴉ
+⇧𐨏󠾈󯶅。\u0600󠈵󠆉; ⇧𐨏󠾈󯶅.\u0600󠈵; [B1, V7]; xn--l8g5552g64t4g46xf.xn--ifb08144p; ; ;  # ⇧𐨏.
+xn--l8g5552g64t4g46xf.xn--ifb08144p; ⇧𐨏󠾈󯶅.\u0600󠈵; [B1, V7]; xn--l8g5552g64t4g46xf.xn--ifb08144p; ; ;  # ⇧𐨏.
+≠𐮂.↑🄇⒈; ≠𐮂.↑6,⒈; [B1, V7, U1]; xn--1chy492g.xn--6,-uzus5m; ; ;  # ≠𐮂.↑6,⒈
+=\u0338𐮂.↑🄇⒈; ≠𐮂.↑6,⒈; [B1, V7, U1]; xn--1chy492g.xn--6,-uzus5m; ; ;  # ≠𐮂.↑6,⒈
+≠𐮂.↑6,1.; ; [B1, U1]; xn--1chy492g.xn--6,1-pw1a.; [B1, U1, A4_2]; ;  # ≠𐮂.↑6,1.
+=\u0338𐮂.↑6,1.; ≠𐮂.↑6,1.; [B1, U1]; xn--1chy492g.xn--6,1-pw1a.; [B1, U1, A4_2]; ;  # ≠𐮂.↑6,1.
+xn--1chy492g.xn--6,1-pw1a.; ≠𐮂.↑6,1.; [B1, U1]; xn--1chy492g.xn--6,1-pw1a.; [B1, U1, A4_2]; ;  # ≠𐮂.↑6,1.
+xn--1chy492g.xn--6,-uzus5m; ≠𐮂.↑6,⒈; [B1, V7, U1]; xn--1chy492g.xn--6,-uzus5m; ; ;  # ≠𐮂.↑6,⒈
+xn--1chy492g.xn--45gx9iuy44d; ≠𐮂.↑🄇⒈; [B1, V7]; xn--1chy492g.xn--45gx9iuy44d; ; ;  # ≠𐮂.↑🄇⒈
+𝩏󠲉ß.ᢤ򄦌\u200C𐹫; ; [B1, B5, B6, C1, V6, V7]; xn--zca3153vupz3e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, V6, V7] # 𝩏ß.ᢤ𐹫
+𝩏󠲉SS.ᢤ򄦌\u200C𐹫; 𝩏󠲉ss.ᢤ򄦌\u200C𐹫; [B1, B5, B6, C1, V6, V7]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, V6, V7] # 𝩏ss.ᢤ𐹫
+𝩏󠲉ss.ᢤ򄦌\u200C𐹫; ; [B1, B5, B6, C1, V6, V7]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, V6, V7] # 𝩏ss.ᢤ𐹫
+𝩏󠲉Ss.ᢤ򄦌\u200C𐹫; 𝩏󠲉ss.ᢤ򄦌\u200C𐹫; [B1, B5, B6, C1, V6, V7]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; [B1, B5, B6, V6, V7] # 𝩏ss.ᢤ𐹫
+xn--ss-zb11ap1427e.xn--ubf2596jbt61c; 𝩏󠲉ss.ᢤ򄦌𐹫; [B1, B5, B6, V6, V7]; xn--ss-zb11ap1427e.xn--ubf2596jbt61c; ; ;  # 𝩏ss.ᢤ𐹫
+xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; 𝩏󠲉ss.ᢤ򄦌\u200C𐹫; [B1, B5, B6, C1, V6, V7]; xn--ss-zb11ap1427e.xn--ubf609atw1tynn3d; ; ;  # 𝩏ss.ᢤ𐹫
+xn--zca3153vupz3e.xn--ubf609atw1tynn3d; 𝩏󠲉ß.ᢤ򄦌\u200C𐹫; [B1, B5, B6, C1, V6, V7]; xn--zca3153vupz3e.xn--ubf609atw1tynn3d; ; ;  # 𝩏ß.ᢤ𐹫
+ß𐵳񗘁Ⴇ｡\uA67A; ß𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--zca227tpy4lkns1b.xn--9x8a; ; xn--ss-e61ar955h4hs7b.xn--9x8a;  # ß𐵳ⴇ.ꙺ
+ß𐵳񗘁Ⴇ。\uA67A; ß𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--zca227tpy4lkns1b.xn--9x8a; ; xn--ss-e61ar955h4hs7b.xn--9x8a;  # ß𐵳ⴇ.ꙺ
+ß𐵳񗘁ⴇ。\uA67A; ß𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--zca227tpy4lkns1b.xn--9x8a; ; xn--ss-e61ar955h4hs7b.xn--9x8a;  # ß𐵳ⴇ.ꙺ
+SS𐵓񗘁Ⴇ。\uA67A; ss𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ss𐵳ⴇ.ꙺ
+ss𐵳񗘁ⴇ。\uA67A; ss𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ss𐵳ⴇ.ꙺ
+Ss𐵳񗘁Ⴇ。\uA67A; ss𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ss𐵳ⴇ.ꙺ
+xn--ss-e61ar955h4hs7b.xn--9x8a; ss𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ss𐵳ⴇ.ꙺ
+xn--zca227tpy4lkns1b.xn--9x8a; ß𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--zca227tpy4lkns1b.xn--9x8a; ; ;  # ß𐵳ⴇ.ꙺ
+ß𐵳񗘁ⴇ｡\uA67A; ß𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--zca227tpy4lkns1b.xn--9x8a; ; xn--ss-e61ar955h4hs7b.xn--9x8a;  # ß𐵳ⴇ.ꙺ
+SS𐵓񗘁Ⴇ｡\uA67A; ss𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ss𐵳ⴇ.ꙺ
+ss𐵳񗘁ⴇ｡\uA67A; ss𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ss𐵳ⴇ.ꙺ
+Ss𐵳񗘁Ⴇ｡\uA67A; ss𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ss𐵳ⴇ.ꙺ
+SS𐵳񗘁Ⴇ。\uA67A; ss𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ss𐵳ⴇ.ꙺ
+xn--ss-rek7420r4hs7b.xn--9x8a; ss𐵳񗘁Ⴇ.\uA67A; [B1, B5, V6, V7]; xn--ss-rek7420r4hs7b.xn--9x8a; ; ;  # ss𐵳Ⴇ.ꙺ
+xn--zca491fci5qkn79a.xn--9x8a; ß𐵳񗘁Ⴇ.\uA67A; [B1, B5, V6, V7]; xn--zca491fci5qkn79a.xn--9x8a; ; ;  # ß𐵳Ⴇ.ꙺ
+SS𐵳񗘁Ⴇ｡\uA67A; ss𐵳񗘁ⴇ.\uA67A; [B1, B5, V6, V7]; xn--ss-e61ar955h4hs7b.xn--9x8a; ; ;  # ss𐵳ⴇ.ꙺ
+\u1714。󠆣-𑋪; \u1714.-𑋪; [V3, V6]; xn--fze.xn----ly8i; ; ;  # ᜔.-𑋪
+xn--fze.xn----ly8i; \u1714.-𑋪; [V3, V6]; xn--fze.xn----ly8i; ; ;  # ᜔.-𑋪
+\uABE8-．򨏜\u05BDß; \uABE8-.򨏜\u05BDß; [V3, V6, V7]; xn----pw5e.xn--zca50wfv060a; ; xn----pw5e.xn--ss-7jd10716y;  # ꯨ-.ֽß
+\uABE8-.򨏜\u05BDß; ; [V3, V6, V7]; xn----pw5e.xn--zca50wfv060a; ; xn----pw5e.xn--ss-7jd10716y;  # ꯨ-.ֽß
+\uABE8-.򨏜\u05BDSS; \uABE8-.򨏜\u05BDss; [V3, V6, V7]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
+\uABE8-.򨏜\u05BDss; ; [V3, V6, V7]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
+\uABE8-.򨏜\u05BDSs; \uABE8-.򨏜\u05BDss; [V3, V6, V7]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
+xn----pw5e.xn--ss-7jd10716y; \uABE8-.򨏜\u05BDss; [V3, V6, V7]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
+xn----pw5e.xn--zca50wfv060a; \uABE8-.򨏜\u05BDß; [V3, V6, V7]; xn----pw5e.xn--zca50wfv060a; ; ;  # ꯨ-.ֽß
+\uABE8-．򨏜\u05BDSS; \uABE8-.򨏜\u05BDss; [V3, V6, V7]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
+\uABE8-．򨏜\u05BDss; \uABE8-.򨏜\u05BDss; [V3, V6, V7]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
+\uABE8-．򨏜\u05BDSs; \uABE8-.򨏜\u05BDss; [V3, V6, V7]; xn----pw5e.xn--ss-7jd10716y; ; ;  # ꯨ-.ֽss
+ᡓ-≮。\u066B󠅱ᡄ; ᡓ-≮.\u066Bᡄ; [B1, B6]; xn----s7j866c.xn--kib252g; ; ;  # ᡓ-≮.٫ᡄ
+ᡓ-<\u0338。\u066B󠅱ᡄ; ᡓ-≮.\u066Bᡄ; [B1, B6]; xn----s7j866c.xn--kib252g; ; ;  # ᡓ-≮.٫ᡄ
+xn----s7j866c.xn--kib252g; ᡓ-≮.\u066Bᡄ; [B1, B6]; xn----s7j866c.xn--kib252g; ; ;  # ᡓ-≮.٫ᡄ
+𝟥♮𑜫\u08ED．\u17D2𑜫8󠆏; 3♮𑜫\u08ED.\u17D2𑜫8; [V6]; xn--3-ksd277tlo7s.xn--8-f0jx021l; ; ;  # 3♮𑜫࣭.្𑜫8
+3♮𑜫\u08ED.\u17D2𑜫8󠆏; 3♮𑜫\u08ED.\u17D2𑜫8; [V6]; xn--3-ksd277tlo7s.xn--8-f0jx021l; ; ;  # 3♮𑜫࣭.្𑜫8
+xn--3-ksd277tlo7s.xn--8-f0jx021l; 3♮𑜫\u08ED.\u17D2𑜫8; [V6]; xn--3-ksd277tlo7s.xn--8-f0jx021l; ; ;  # 3♮𑜫࣭.្𑜫8
+-｡򕌀\u200D❡; -.򕌀\u200D❡; [C2, V3, V7]; -.xn--1ug800aq795s; ; -.xn--nei54421f; [V3, V7] # -.❡
+-。򕌀\u200D❡; -.򕌀\u200D❡; [C2, V3, V7]; -.xn--1ug800aq795s; ; -.xn--nei54421f; [V3, V7] # -.❡
+-.xn--nei54421f; -.򕌀❡; [V3, V7]; -.xn--nei54421f; ; ;  # -.❡
+-.xn--1ug800aq795s; -.򕌀\u200D❡; [C2, V3, V7]; -.xn--1ug800aq795s; ; ;  # -.❡
+𝟓☱𝟐򥰵｡𝪮񐡳; 5☱2򥰵.𝪮񐡳; [V6, V7]; xn--52-dwx47758j.xn--kd3hk431k; ; ;  # 5☱2.𝪮
+5☱2򥰵。𝪮񐡳; 5☱2򥰵.𝪮񐡳; [V6, V7]; xn--52-dwx47758j.xn--kd3hk431k; ; ;  # 5☱2.𝪮
+xn--52-dwx47758j.xn--kd3hk431k; 5☱2򥰵.𝪮񐡳; [V6, V7]; xn--52-dwx47758j.xn--kd3hk431k; ; ;  # 5☱2.𝪮
+-.-├򖦣; ; [V3, V7]; -.xn----ukp70432h; ; ;  # -.-├
+-.xn----ukp70432h; -.-├򖦣; [V3, V7]; -.xn----ukp70432h; ; ;  # -.-├
+\u05A5\u076D｡\u200D󠀘; \u05A5\u076D.\u200D󠀘; [B1, C2, V6, V7]; xn--wcb62g.xn--1ugy8001l; ; xn--wcb62g.xn--p526e; [B1, V6, V7] # ֥ݭ.
+\u05A5\u076D。\u200D󠀘; \u05A5\u076D.\u200D󠀘; [B1, C2, V6, V7]; xn--wcb62g.xn--1ugy8001l; ; xn--wcb62g.xn--p526e; [B1, V6, V7] # ֥ݭ.
+xn--wcb62g.xn--p526e; \u05A5\u076D.󠀘; [B1, V6, V7]; xn--wcb62g.xn--p526e; ; ;  # ֥ݭ.
+xn--wcb62g.xn--1ugy8001l; \u05A5\u076D.\u200D󠀘; [B1, C2, V6, V7]; xn--wcb62g.xn--1ugy8001l; ; ;  # ֥ݭ.
+쥥󔏉Ⴎ．\u200C⒈⒈𐫒; 쥥󔏉ⴎ.\u200C⒈⒈𐫒; [B1, C1, V7]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; xn--5kj3511ccyw3h.xn--tsha6797o; [B1, V7] # 쥥ⴎ.⒈⒈𐫒
+쥥󔏉Ⴎ．\u200C⒈⒈𐫒; 쥥󔏉ⴎ.\u200C⒈⒈𐫒; [B1, C1, V7]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; xn--5kj3511ccyw3h.xn--tsha6797o; [B1, V7] # 쥥ⴎ.⒈⒈𐫒
+쥥󔏉Ⴎ.\u200C1.1.𐫒; 쥥󔏉ⴎ.\u200C1.1.𐫒; [B1, C1, V7]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; xn--5kj3511ccyw3h.1.1.xn--7w9c; [B1, V7] # 쥥ⴎ.1.1.𐫒
+쥥󔏉Ⴎ.\u200C1.1.𐫒; 쥥󔏉ⴎ.\u200C1.1.𐫒; [B1, C1, V7]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; xn--5kj3511ccyw3h.1.1.xn--7w9c; [B1, V7] # 쥥ⴎ.1.1.𐫒
+쥥󔏉ⴎ.\u200C1.1.𐫒; 쥥󔏉ⴎ.\u200C1.1.𐫒; [B1, C1, V7]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; xn--5kj3511ccyw3h.1.1.xn--7w9c; [B1, V7] # 쥥ⴎ.1.1.𐫒
+쥥󔏉ⴎ.\u200C1.1.𐫒; ; [B1, C1, V7]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; xn--5kj3511ccyw3h.1.1.xn--7w9c; [B1, V7] # 쥥ⴎ.1.1.𐫒
+xn--5kj3511ccyw3h.1.1.xn--7w9c; 쥥󔏉ⴎ.1.1.𐫒; [B1, V7]; xn--5kj3511ccyw3h.1.1.xn--7w9c; ; ;  # 쥥ⴎ.1.1.𐫒
+xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; 쥥󔏉ⴎ.\u200C1.1.𐫒; [B1, C1, V7]; xn--5kj3511ccyw3h.xn--1-rgn.1.xn--7w9c; ; ;  # 쥥ⴎ.1.1.𐫒
+쥥󔏉ⴎ．\u200C⒈⒈𐫒; 쥥󔏉ⴎ.\u200C⒈⒈𐫒; [B1, C1, V7]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; xn--5kj3511ccyw3h.xn--tsha6797o; [B1, V7] # 쥥ⴎ.⒈⒈𐫒
+쥥󔏉ⴎ．\u200C⒈⒈𐫒; 쥥󔏉ⴎ.\u200C⒈⒈𐫒; [B1, C1, V7]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; xn--5kj3511ccyw3h.xn--tsha6797o; [B1, V7] # 쥥ⴎ.⒈⒈𐫒
+xn--5kj3511ccyw3h.xn--tsha6797o; 쥥󔏉ⴎ.⒈⒈𐫒; [B1, V7]; xn--5kj3511ccyw3h.xn--tsha6797o; ; ;  # 쥥ⴎ.⒈⒈𐫒
+xn--5kj3511ccyw3h.xn--0ug88oa0396u; 쥥󔏉ⴎ.\u200C⒈⒈𐫒; [B1, C1, V7]; xn--5kj3511ccyw3h.xn--0ug88oa0396u; ; ;  # 쥥ⴎ.⒈⒈𐫒
+xn--mnd7865gcy28g.1.1.xn--7w9c; 쥥󔏉Ⴎ.1.1.𐫒; [B1, V7]; xn--mnd7865gcy28g.1.1.xn--7w9c; ; ;  # 쥥Ⴎ.1.1.𐫒
+xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; 쥥󔏉Ⴎ.\u200C1.1.𐫒; [B1, C1, V7]; xn--mnd7865gcy28g.xn--1-rgn.1.xn--7w9c; ; ;  # 쥥Ⴎ.1.1.𐫒
+xn--mnd7865gcy28g.xn--tsha6797o; 쥥󔏉Ⴎ.⒈⒈𐫒; [B1, V7]; xn--mnd7865gcy28g.xn--tsha6797o; ; ;  # 쥥Ⴎ.⒈⒈𐫒
+xn--mnd7865gcy28g.xn--0ug88oa0396u; 쥥󔏉Ⴎ.\u200C⒈⒈𐫒; [B1, C1, V7]; xn--mnd7865gcy28g.xn--0ug88oa0396u; ; ;  # 쥥Ⴎ.⒈⒈𐫒
+\u0827𝟶\u06A0-。𑄳; \u08270\u06A0-.𑄳; [B1, V3, V6]; xn--0--p3d67m.xn--v80d; ; ;  # ࠧ0ڠ-.𑄳
+\u08270\u06A0-。𑄳; \u08270\u06A0-.𑄳; [B1, V3, V6]; xn--0--p3d67m.xn--v80d; ; ;  # ࠧ0ڠ-.𑄳
+xn--0--p3d67m.xn--v80d; \u08270\u06A0-.𑄳; [B1, V3, V6]; xn--0--p3d67m.xn--v80d; ; ;  # ࠧ0ڠ-.𑄳
+ς．\uFDC1🞛⒈; ς.\u0641\u0645\u064A🞛⒈; [V7]; xn--3xa.xn--dhbip2802atb20c; ; xn--4xa.xn--dhbip2802atb20c;  # ς.فمي🞛⒈
+ς.\u0641\u0645\u064A🞛1.; ; ; xn--3xa.xn--1-gocmu97674d.; [A4_2]; xn--4xa.xn--1-gocmu97674d.;  # ς.فمي🞛1.
+Σ.\u0641\u0645\u064A🞛1.; σ.\u0641\u0645\u064A🞛1.; ; xn--4xa.xn--1-gocmu97674d.; [A4_2]; ;  # σ.فمي🞛1.
+σ.\u0641\u0645\u064A🞛1.; ; ; xn--4xa.xn--1-gocmu97674d.; [A4_2]; ;  # σ.فمي🞛1.
+xn--4xa.xn--1-gocmu97674d.; σ.\u0641\u0645\u064A🞛1.; ; xn--4xa.xn--1-gocmu97674d.; [A4_2]; ;  # σ.فمي🞛1.
+xn--3xa.xn--1-gocmu97674d.; ς.\u0641\u0645\u064A🞛1.; ; xn--3xa.xn--1-gocmu97674d.; [A4_2]; ;  # ς.فمي🞛1.
+Σ．\uFDC1🞛⒈; σ.\u0641\u0645\u064A🞛⒈; [V7]; xn--4xa.xn--dhbip2802atb20c; ; ;  # σ.فمي🞛⒈
+σ．\uFDC1🞛⒈; σ.\u0641\u0645\u064A🞛⒈; [V7]; xn--4xa.xn--dhbip2802atb20c; ; ;  # σ.فمي🞛⒈
+xn--4xa.xn--dhbip2802atb20c; σ.\u0641\u0645\u064A🞛⒈; [V7]; xn--4xa.xn--dhbip2802atb20c; ; ;  # σ.فمي🞛⒈
+xn--3xa.xn--dhbip2802atb20c; ς.\u0641\u0645\u064A🞛⒈; [V7]; xn--3xa.xn--dhbip2802atb20c; ; ;  # ς.فمي🞛⒈
+🗩-｡𐹻󐞆񥉮; 🗩-.𐹻󐞆񥉮; [B1, V3, V7]; xn----6t3s.xn--zo0d4811u6ru6a; ; ;  # 🗩-.𐹻
+🗩-。𐹻󐞆񥉮; 🗩-.𐹻󐞆񥉮; [B1, V3, V7]; xn----6t3s.xn--zo0d4811u6ru6a; ; ;  # 🗩-.𐹻
+xn----6t3s.xn--zo0d4811u6ru6a; 🗩-.𐹻󐞆񥉮; [B1, V3, V7]; xn----6t3s.xn--zo0d4811u6ru6a; ; ;  # 🗩-.𐹻
+𐡜-🔪｡𝟻\u200C𐿀; 𐡜-🔪.5\u200C𐿀; [B1, B3, C1]; xn----5j4iv089c.xn--5-sgn7149h; ; xn----5j4iv089c.xn--5-bn7i; [B1, B3] # 𐡜-🔪.5𐿀
+𐡜-🔪。5\u200C𐿀; 𐡜-🔪.5\u200C𐿀; [B1, B3, C1]; xn----5j4iv089c.xn--5-sgn7149h; ; xn----5j4iv089c.xn--5-bn7i; [B1, B3] # 𐡜-🔪.5𐿀
+xn----5j4iv089c.xn--5-bn7i; 𐡜-🔪.5𐿀; [B1, B3]; xn----5j4iv089c.xn--5-bn7i; ; ;  # 𐡜-🔪.5𐿀
+xn----5j4iv089c.xn--5-sgn7149h; 𐡜-🔪.5\u200C𐿀; [B1, B3, C1]; xn----5j4iv089c.xn--5-sgn7149h; ; ;  # 𐡜-🔪.5𐿀
+𐹣늿\u200Dß．\u07CF0\u05BC; 𐹣늿\u200Dß.\u07CF0\u05BC; [B1, C2]; xn--zca770n5s4hev6c.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ß.ߏ0ּ
+𐹣늿\u200Dß．\u07CF0\u05BC; 𐹣늿\u200Dß.\u07CF0\u05BC; [B1, C2]; xn--zca770n5s4hev6c.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ß.ߏ0ּ
+𐹣늿\u200Dß.\u07CF0\u05BC; ; [B1, C2]; xn--zca770n5s4hev6c.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ß.ߏ0ּ
+𐹣늿\u200Dß.\u07CF0\u05BC; 𐹣늿\u200Dß.\u07CF0\u05BC; [B1, C2]; xn--zca770n5s4hev6c.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ß.ߏ0ּ
+𐹣늿\u200DSS.\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+𐹣늿\u200DSS.\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+𐹣늿\u200Dss.\u07CF0\u05BC; ; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+𐹣늿\u200Dss.\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+xn--ss-i05i7041a.xn--0-vgc50n; 𐹣늿ss.\u07CF0\u05BC; [B1]; xn--ss-i05i7041a.xn--0-vgc50n; ; ;  # 𐹣늿ss.ߏ0ּ
+xn--ss-l1tu910fo0xd.xn--0-vgc50n; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; ;  # 𐹣늿ss.ߏ0ּ
+𐹣늿\u200DSs.\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+𐹣늿\u200DSs.\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+xn--zca770n5s4hev6c.xn--0-vgc50n; 𐹣늿\u200Dß.\u07CF0\u05BC; [B1, C2]; xn--zca770n5s4hev6c.xn--0-vgc50n; ; ;  # 𐹣늿ß.ߏ0ּ
+𐹣늿\u200DSS．\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+𐹣늿\u200DSS．\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+𐹣늿\u200Dss．\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+𐹣늿\u200Dss．\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+𐹣늿\u200DSs．\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+𐹣늿\u200DSs．\u07CF0\u05BC; 𐹣늿\u200Dss.\u07CF0\u05BC; [B1, C2]; xn--ss-l1tu910fo0xd.xn--0-vgc50n; ; xn--ss-i05i7041a.xn--0-vgc50n; [B1] # 𐹣늿ss.ߏ0ּ
+9󠇥．󪴴ᢓ; 9.󪴴ᢓ; [V7]; 9.xn--dbf91222q; ; ;  # 9.ᢓ
+9󠇥.󪴴ᢓ; 9.󪴴ᢓ; [V7]; 9.xn--dbf91222q; ; ;  # 9.ᢓ
+9.xn--dbf91222q; 9.󪴴ᢓ; [V7]; 9.xn--dbf91222q; ; ;  # 9.ᢓ
+\u200C\uFFA0.𐫭🠗ß⽟; \u200C.𐫭🠗ß玉; [B1, B2, B3, C1]; xn--0ug.xn--zca2289c550e0iwi; ; .xn--ss-je6eq954cp25j; [B2, B3, A4_2] # .𐫭🠗ß玉
+\u200C\u1160.𐫭🠗ß玉; \u200C.𐫭🠗ß玉; [B1, B2, B3, C1]; xn--0ug.xn--zca2289c550e0iwi; ; .xn--ss-je6eq954cp25j; [B2, B3, A4_2] # .𐫭🠗ß玉
+\u200C\u1160.𐫭🠗SS玉; \u200C.𐫭🠗ss玉; [B1, B2, B3, C1]; xn--0ug.xn--ss-je6eq954cp25j; ; .xn--ss-je6eq954cp25j; [B2, B3, A4_2] # .𐫭🠗ss玉
+\u200C\u1160.𐫭🠗ss玉; \u200C.𐫭🠗ss玉; [B1, B2, B3, C1]; xn--0ug.xn--ss-je6eq954cp25j; ; .xn--ss-je6eq954cp25j; [B2, B3, A4_2] # .𐫭🠗ss玉
+\u200C\u1160.𐫭🠗Ss玉; \u200C.𐫭🠗ss玉; [B1, B2, B3, C1]; xn--0ug.xn--ss-je6eq954cp25j; ; .xn--ss-je6eq954cp25j; [B2, B3, A4_2] # .𐫭🠗ss玉
+.xn--ss-je6eq954cp25j; .𐫭🠗ss玉; [B2, B3, X4_2]; .xn--ss-je6eq954cp25j; [B2, B3, A4_2]; ;  # .𐫭🠗ss玉
+xn--0ug.xn--ss-je6eq954cp25j; \u200C.𐫭🠗ss玉; [B1, B2, B3, C1]; xn--0ug.xn--ss-je6eq954cp25j; ; ;  # .𐫭🠗ss玉
+xn--0ug.xn--zca2289c550e0iwi; \u200C.𐫭🠗ß玉; [B1, B2, B3, C1]; xn--0ug.xn--zca2289c550e0iwi; ; ;  # .𐫭🠗ß玉
+\u200C\uFFA0.𐫭🠗SS⽟; \u200C.𐫭🠗ss玉; [B1, B2, B3, C1]; xn--0ug.xn--ss-je6eq954cp25j; ; .xn--ss-je6eq954cp25j; [B2, B3, A4_2] # .𐫭🠗ss玉
+\u200C\uFFA0.𐫭🠗ss⽟; \u200C.𐫭🠗ss玉; [B1, B2, B3, C1]; xn--0ug.xn--ss-je6eq954cp25j; ; .xn--ss-je6eq954cp25j; [B2, B3, A4_2] # .𐫭🠗ss玉
+\u200C\uFFA0.𐫭🠗Ss⽟; \u200C.𐫭🠗ss玉; [B1, B2, B3, C1]; xn--0ug.xn--ss-je6eq954cp25j; ; .xn--ss-je6eq954cp25j; [B2, B3, A4_2] # .𐫭🠗ss玉
+xn--psd.xn--ss-je6eq954cp25j; \u1160.𐫭🠗ss玉; [B2, B3, V7]; xn--psd.xn--ss-je6eq954cp25j; ; ;  # .𐫭🠗ss玉
+xn--psd526e.xn--ss-je6eq954cp25j; \u200C\u1160.𐫭🠗ss玉; [B1, B2, B3, C1, V7]; xn--psd526e.xn--ss-je6eq954cp25j; ; ;  # .𐫭🠗ss玉
+xn--psd526e.xn--zca2289c550e0iwi; \u200C\u1160.𐫭🠗ß玉; [B1, B2, B3, C1, V7]; xn--psd526e.xn--zca2289c550e0iwi; ; ;  # .𐫭🠗ß玉
+xn--cl7c.xn--ss-je6eq954cp25j; \uFFA0.𐫭🠗ss玉; [B2, B3, V7]; xn--cl7c.xn--ss-je6eq954cp25j; ; ;  # .𐫭🠗ss玉
+xn--0ug7719f.xn--ss-je6eq954cp25j; \u200C\uFFA0.𐫭🠗ss玉; [B1, B2, B3, C1, V7]; xn--0ug7719f.xn--ss-je6eq954cp25j; ; ;  # .𐫭🠗ss玉
+xn--0ug7719f.xn--zca2289c550e0iwi; \u200C\uFFA0.𐫭🠗ß玉; [B1, B2, B3, C1, V7]; xn--0ug7719f.xn--zca2289c550e0iwi; ; ;  # .𐫭🠗ß玉
+︒Ⴖ\u0366．\u200C; ︒ⴖ\u0366.\u200C; [C1, V7]; xn--hva754sy94k.xn--0ug; ; xn--hva754sy94k.; [V7, A4_2] # ︒ⴖͦ.
+。Ⴖ\u0366.\u200C; .ⴖ\u0366.\u200C; [C1, X4_2]; .xn--hva754s.xn--0ug; [C1, A4_2]; .xn--hva754s.; [A4_2] # .ⴖͦ.
+。ⴖ\u0366.\u200C; .ⴖ\u0366.\u200C; [C1, X4_2]; .xn--hva754s.xn--0ug; [C1, A4_2]; .xn--hva754s.; [A4_2] # .ⴖͦ.
+.xn--hva754s.; .ⴖ\u0366.; [X4_2]; .xn--hva754s.; [A4_2]; ;  # .ⴖͦ.
+.xn--hva754s.xn--0ug; .ⴖ\u0366.\u200C; [C1, X4_2]; .xn--hva754s.xn--0ug; [C1, A4_2]; ;  # .ⴖͦ.
+︒ⴖ\u0366．\u200C; ︒ⴖ\u0366.\u200C; [C1, V7]; xn--hva754sy94k.xn--0ug; ; xn--hva754sy94k.; [V7, A4_2] # ︒ⴖͦ.
+xn--hva754sy94k.; ︒ⴖ\u0366.; [V7]; xn--hva754sy94k.; [V7, A4_2]; ;  # ︒ⴖͦ.
+xn--hva754sy94k.xn--0ug; ︒ⴖ\u0366.\u200C; [C1, V7]; xn--hva754sy94k.xn--0ug; ; ;  # ︒ⴖͦ.
+.xn--hva929d.; .Ⴖ\u0366.; [V7, X4_2]; .xn--hva929d.; [V7, A4_2]; ;  # .Ⴖͦ.
+.xn--hva929d.xn--0ug; .Ⴖ\u0366.\u200C; [C1, V7, X4_2]; .xn--hva929d.xn--0ug; [C1, V7, A4_2]; ;  # .Ⴖͦ.
+xn--hva929dl29p.; ︒Ⴖ\u0366.; [V7]; xn--hva929dl29p.; [V7, A4_2]; ;  # ︒Ⴖͦ.
+xn--hva929dl29p.xn--0ug; ︒Ⴖ\u0366.\u200C; [C1, V7]; xn--hva929dl29p.xn--0ug; ; ;  # ︒Ⴖͦ.
+xn--hva754s.; ⴖ\u0366.; ; xn--hva754s.; [A4_2]; ;  # ⴖͦ.
+ⴖ\u0366.; ; ; xn--hva754s.; [A4_2]; ;  # ⴖͦ.
+Ⴖ\u0366.; ⴖ\u0366.; ; xn--hva754s.; [A4_2]; ;  # ⴖͦ.
+xn--hva929d.; Ⴖ\u0366.; [V7]; xn--hva929d.; [V7, A4_2]; ;  # Ⴖͦ.
+\u08BB．\u200CႣ𞀒; \u08BB.\u200Cⴃ𞀒; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; xn--hzb.xn--ukj4430l; [] # ࢻ.ⴃ𞀒
+\u08BB.\u200CႣ𞀒; \u08BB.\u200Cⴃ𞀒; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; xn--hzb.xn--ukj4430l; [] # ࢻ.ⴃ𞀒
+\u08BB.\u200Cⴃ𞀒; ; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; xn--hzb.xn--ukj4430l; [] # ࢻ.ⴃ𞀒
+xn--hzb.xn--ukj4430l; \u08BB.ⴃ𞀒; ; xn--hzb.xn--ukj4430l; ; ;  # ࢻ.ⴃ𞀒
+\u08BB.ⴃ𞀒; ; ; xn--hzb.xn--ukj4430l; ; ;  # ࢻ.ⴃ𞀒
+\u08BB.Ⴃ𞀒; \u08BB.ⴃ𞀒; ; xn--hzb.xn--ukj4430l; ; ;  # ࢻ.ⴃ𞀒
+xn--hzb.xn--0ug822cp045a; \u08BB.\u200Cⴃ𞀒; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; ;  # ࢻ.ⴃ𞀒
+\u08BB．\u200Cⴃ𞀒; \u08BB.\u200Cⴃ𞀒; [B1, C1]; xn--hzb.xn--0ug822cp045a; ; xn--hzb.xn--ukj4430l; [] # ࢻ.ⴃ𞀒
+xn--hzb.xn--bnd2938u; \u08BB.Ⴃ𞀒; [V7]; xn--hzb.xn--bnd2938u; ; ;  # ࢻ.Ⴃ𞀒
+xn--hzb.xn--bnd300f7225a; \u08BB.\u200CႣ𞀒; [B1, C1, V7]; xn--hzb.xn--bnd300f7225a; ; ;  # ࢻ.Ⴃ𞀒
+\u200D\u200C。２䫷󠧷; \u200D\u200C.2䫷󠧷; [C1, C2, V7]; xn--0ugb.xn--2-me5ay1273i; ; .xn--2-me5ay1273i; [V7, A4_2] # .2䫷
+\u200D\u200C。2䫷󠧷; \u200D\u200C.2䫷󠧷; [C1, C2, V7]; xn--0ugb.xn--2-me5ay1273i; ; .xn--2-me5ay1273i; [V7, A4_2] # .2䫷
+.xn--2-me5ay1273i; .2䫷󠧷; [V7, X4_2]; .xn--2-me5ay1273i; [V7, A4_2]; ;  # .2䫷
+xn--0ugb.xn--2-me5ay1273i; \u200D\u200C.2䫷󠧷; [C1, C2, V7]; xn--0ugb.xn--2-me5ay1273i; ; ;  # .2䫷
+-𞀤󜠐。򈬖; -𞀤󜠐.򈬖; [V3, V7]; xn----rq4re4997d.xn--l707b; ; ;  # -𞀤.
+xn----rq4re4997d.xn--l707b; -𞀤󜠐.򈬖; [V3, V7]; xn----rq4re4997d.xn--l707b; ; ;  # -𞀤.
+󳛂︒\u200C㟀．\u0624⒈; 󳛂︒\u200C㟀.\u0624⒈; [C1, V7]; xn--0ug754gxl4ldlt0k.xn--jgb476m; ; xn--etlt457ccrq7h.xn--jgb476m; [V7] # ︒㟀.ؤ⒈
+󳛂︒\u200C㟀．\u0648\u0654⒈; 󳛂︒\u200C㟀.\u0624⒈; [C1, V7]; xn--0ug754gxl4ldlt0k.xn--jgb476m; ; xn--etlt457ccrq7h.xn--jgb476m; [V7] # ︒㟀.ؤ⒈
+󳛂。\u200C㟀.\u06241.; 󳛂.\u200C㟀.\u06241.; [B1, C1, V7]; xn--z272f.xn--0ug754g.xn--1-smc.; [B1, C1, V7, A4_2]; xn--z272f.xn--etl.xn--1-smc.; [V7, A4_2] # .㟀.ؤ1.
+󳛂。\u200C㟀.\u0648\u06541.; 󳛂.\u200C㟀.\u06241.; [B1, C1, V7]; xn--z272f.xn--0ug754g.xn--1-smc.; [B1, C1, V7, A4_2]; xn--z272f.xn--etl.xn--1-smc.; [V7, A4_2] # .㟀.ؤ1.
+xn--z272f.xn--etl.xn--1-smc.; 󳛂.㟀.\u06241.; [V7]; xn--z272f.xn--etl.xn--1-smc.; [V7, A4_2]; ;  # .㟀.ؤ1.
+xn--z272f.xn--0ug754g.xn--1-smc.; 󳛂.\u200C㟀.\u06241.; [B1, C1, V7]; xn--z272f.xn--0ug754g.xn--1-smc.; [B1, C1, V7, A4_2]; ;  # .㟀.ؤ1.
+xn--etlt457ccrq7h.xn--jgb476m; 󳛂︒㟀.\u0624⒈; [V7]; xn--etlt457ccrq7h.xn--jgb476m; ; ;  # ︒㟀.ؤ⒈
+xn--0ug754gxl4ldlt0k.xn--jgb476m; 󳛂︒\u200C㟀.\u0624⒈; [C1, V7]; xn--0ug754gxl4ldlt0k.xn--jgb476m; ; ;  # ︒㟀.ؤ⒈
+𑲜\u07CA𝅼。-\u200D; 𑲜\u07CA𝅼.-\u200D; [B1, C2, V3, V6]; xn--lsb5482l7nre.xn----ugn; ; xn--lsb5482l7nre.-; [B1, V3, V6] # 𑲜ߊ𝅼.-
+xn--lsb5482l7nre.-; 𑲜\u07CA𝅼.-; [B1, V3, V6]; xn--lsb5482l7nre.-; ; ;  # 𑲜ߊ𝅼.-
+xn--lsb5482l7nre.xn----ugn; 𑲜\u07CA𝅼.-\u200D; [B1, C2, V3, V6]; xn--lsb5482l7nre.xn----ugn; ; ;  # 𑲜ߊ𝅼.-
+\u200C．Ⴉ≠𐫶; \u200C.ⴉ≠𐫶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠𐫶
+\u200C．Ⴉ=\u0338𐫶; \u200C.ⴉ≠𐫶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠𐫶
+\u200C.Ⴉ≠𐫶; \u200C.ⴉ≠𐫶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠𐫶
+\u200C.Ⴉ=\u0338𐫶; \u200C.ⴉ≠𐫶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠𐫶
+\u200C.ⴉ=\u0338𐫶; \u200C.ⴉ≠𐫶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠𐫶
+\u200C.ⴉ≠𐫶; ; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠𐫶
+.xn--1chx23bzj4p; .ⴉ≠𐫶; [B5, B6, X4_2]; .xn--1chx23bzj4p; [B5, B6, A4_2]; ;  # .ⴉ≠𐫶
+xn--0ug.xn--1chx23bzj4p; \u200C.ⴉ≠𐫶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; ;  # .ⴉ≠𐫶
+\u200C．ⴉ=\u0338𐫶; \u200C.ⴉ≠𐫶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠𐫶
+\u200C．ⴉ≠𐫶; \u200C.ⴉ≠𐫶; [B1, B5, B6, C1]; xn--0ug.xn--1chx23bzj4p; ; .xn--1chx23bzj4p; [B5, B6, A4_2] # .ⴉ≠𐫶
+.xn--hnd481gv73o; .Ⴉ≠𐫶; [B5, B6, V7, X4_2]; .xn--hnd481gv73o; [B5, B6, V7, A4_2]; ;  # .Ⴉ≠𐫶
+xn--0ug.xn--hnd481gv73o; \u200C.Ⴉ≠𐫶; [B1, B5, B6, C1, V7]; xn--0ug.xn--hnd481gv73o; ; ;  # .Ⴉ≠𐫶
+\u0750。≯ς; \u0750.≯ς; [B1]; xn--3ob.xn--3xa918m; ; xn--3ob.xn--4xa718m;  # ݐ.≯ς
+\u0750。>\u0338ς; \u0750.≯ς; [B1]; xn--3ob.xn--3xa918m; ; xn--3ob.xn--4xa718m;  # ݐ.≯ς
+\u0750。>\u0338Σ; \u0750.≯σ; [B1]; xn--3ob.xn--4xa718m; ; ;  # ݐ.≯σ
+\u0750。≯Σ; \u0750.≯σ; [B1]; xn--3ob.xn--4xa718m; ; ;  # ݐ.≯σ
+\u0750。≯σ; \u0750.≯σ; [B1]; xn--3ob.xn--4xa718m; ; ;  # ݐ.≯σ
+\u0750。>\u0338σ; \u0750.≯σ; [B1]; xn--3ob.xn--4xa718m; ; ;  # ݐ.≯σ
+xn--3ob.xn--4xa718m; \u0750.≯σ; [B1]; xn--3ob.xn--4xa718m; ; ;  # ݐ.≯σ
+xn--3ob.xn--3xa918m; \u0750.≯ς; [B1]; xn--3ob.xn--3xa918m; ; ;  # ݐ.≯ς
+\u07FC𐸆.𓖏︒񊨩Ⴐ; \u07FC𐸆.𓖏︒񊨩ⴐ; [V7]; xn--0tb8725k.xn--7kj9008dt18a7py9c; ; ;  # .𓖏︒ⴐ
+\u07FC𐸆.𓖏。񊨩Ⴐ; \u07FC𐸆.𓖏.񊨩ⴐ; [V7]; xn--0tb8725k.xn--tu8d.xn--7kj73887a; ; ;  # .𓖏.ⴐ
+\u07FC𐸆.𓖏。񊨩ⴐ; \u07FC𐸆.𓖏.񊨩ⴐ; [V7]; xn--0tb8725k.xn--tu8d.xn--7kj73887a; ; ;  # .𓖏.ⴐ
+xn--0tb8725k.xn--tu8d.xn--7kj73887a; \u07FC𐸆.𓖏.񊨩ⴐ; [V7]; xn--0tb8725k.xn--tu8d.xn--7kj73887a; ; ;  # .𓖏.ⴐ
+\u07FC𐸆.𓖏︒񊨩ⴐ; ; [V7]; xn--0tb8725k.xn--7kj9008dt18a7py9c; ; ;  # .𓖏︒ⴐ
+xn--0tb8725k.xn--7kj9008dt18a7py9c; \u07FC𐸆.𓖏︒񊨩ⴐ; [V7]; xn--0tb8725k.xn--7kj9008dt18a7py9c; ; ;  # .𓖏︒ⴐ
+xn--0tb8725k.xn--tu8d.xn--ond97931d; \u07FC𐸆.𓖏.񊨩Ⴐ; [V7]; xn--0tb8725k.xn--tu8d.xn--ond97931d; ; ;  # .𓖏.Ⴐ
+xn--0tb8725k.xn--ond3562jt18a7py9c; \u07FC𐸆.𓖏︒񊨩Ⴐ; [V7]; xn--0tb8725k.xn--ond3562jt18a7py9c; ; ;  # .𓖏︒Ⴐ
+Ⴥ⚭󠖫⋃｡𑌼; ⴥ⚭󠖫⋃.𑌼; [V6, V7]; xn--vfh16m67gx1162b.xn--ro1d; ; ;  # ⴥ⚭⋃.𑌼
+Ⴥ⚭󠖫⋃。𑌼; ⴥ⚭󠖫⋃.𑌼; [V6, V7]; xn--vfh16m67gx1162b.xn--ro1d; ; ;  # ⴥ⚭⋃.𑌼
+ⴥ⚭󠖫⋃。𑌼; ⴥ⚭󠖫⋃.𑌼; [V6, V7]; xn--vfh16m67gx1162b.xn--ro1d; ; ;  # ⴥ⚭⋃.𑌼
+xn--vfh16m67gx1162b.xn--ro1d; ⴥ⚭󠖫⋃.𑌼; [V6, V7]; xn--vfh16m67gx1162b.xn--ro1d; ; ;  # ⴥ⚭⋃.𑌼
+ⴥ⚭󠖫⋃｡𑌼; ⴥ⚭󠖫⋃.𑌼; [V6, V7]; xn--vfh16m67gx1162b.xn--ro1d; ; ;  # ⴥ⚭⋃.𑌼
+xn--9nd623g4zc5z060c.xn--ro1d; Ⴥ⚭󠖫⋃.𑌼; [V6, V7]; xn--9nd623g4zc5z060c.xn--ro1d; ; ;  # Ⴥ⚭⋃.𑌼
+🄈。󠷳\u0844; 7,.󠷳\u0844; [B1, V7, U1]; 7,.xn--2vb13094p; ; ;  # 7,.ࡄ
+7,。󠷳\u0844; 7,.󠷳\u0844; [B1, V7, U1]; 7,.xn--2vb13094p; ; ;  # 7,.ࡄ
+7,.xn--2vb13094p; 7,.󠷳\u0844; [B1, V7, U1]; 7,.xn--2vb13094p; ; ;  # 7,.ࡄ
+xn--107h.xn--2vb13094p; 🄈.󠷳\u0844; [B1, V7]; xn--107h.xn--2vb13094p; ; ;  # 🄈.ࡄ
+≮\u0846。섖쮖ß; ≮\u0846.섖쮖ß; [B1]; xn--4vb505k.xn--zca7259goug; ; xn--4vb505k.xn--ss-5z4j006a;  # ≮ࡆ.섖쮖ß
+<\u0338\u0846。섖쮖ß; ≮\u0846.섖쮖ß; [B1]; xn--4vb505k.xn--zca7259goug; ; xn--4vb505k.xn--ss-5z4j006a;  # ≮ࡆ.섖쮖ß
+<\u0338\u0846。섖쮖SS; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
+≮\u0846。섖쮖SS; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
+≮\u0846。섖쮖ss; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
+<\u0338\u0846。섖쮖ss; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
+xn--4vb505k.xn--ss-5z4j006a; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
+≮\u0846。섖쮖Ss; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
+<\u0338\u0846。섖쮖Ss; ≮\u0846.섖쮖ss; [B1]; xn--4vb505k.xn--ss-5z4j006a; ; ;  # ≮ࡆ.섖쮖ss
+xn--4vb505k.xn--zca7259goug; ≮\u0846.섖쮖ß; [B1]; xn--4vb505k.xn--zca7259goug; ; ;  # ≮ࡆ.섖쮖ß
 󠆓⛏-。ꡒ; ⛏-.ꡒ; [V3]; xn----o9p.xn--rc9a; ; ;  # ⛏-.ꡒ
 xn----o9p.xn--rc9a; ⛏-.ꡒ; [V3]; xn----o9p.xn--rc9a; ; ;  # ⛏-.ꡒ
-޻𐹳ئ𑁆。ࢧڰ‌ᢒ; ޻𐹳ئ𑁆.ࢧڰ‌ᢒ; [B2, B3, P1, V6]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; xn--lgb32f2753cosb.xn--jkb91hlz1a;  # 𐹳ئ𑁆.ࢧڰᢒ
-޻𐹳ئ𑁆。ࢧڰ‌ᢒ; ޻𐹳ئ𑁆.ࢧڰ‌ᢒ; [B2, B3, P1, V6]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; xn--lgb32f2753cosb.xn--jkb91hlz1a;  # 𐹳ئ𑁆.ࢧڰᢒ
-xn--lgb32f2753cosb.xn--jkb91hlz1a; ޻𐹳ئ𑁆.ࢧڰᢒ; [B2, B3, V6]; xn--lgb32f2753cosb.xn--jkb91hlz1a; ; ;  # 𐹳ئ𑁆.ࢧڰᢒ
-xn--lgb32f2753cosb.xn--jkb91hlz1azih; ޻𐹳ئ𑁆.ࢧڰ‌ᢒ; [B2, B3, V6]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; ;  # 𐹳ئ𑁆.ࢧڰᢒ
-ࠖ.𐨕𚚕; ; [B1, B2, B3, B6, P1, V5, V6]; xn--rub.xn--tr9c248x; ; ;  # ࠖ.𐨕
-xn--rub.xn--tr9c248x; ࠖ.𐨕𚚕; [B1, B2, B3, B6, V5, V6]; xn--rub.xn--tr9c248x; ; ;  # ࠖ.𐨕
---。𽊆ݧ𐽋𞠬; --.𽊆ݧ𐽋𞠬; [B1, B5, B6, P1, V3, V6]; --.xn--rpb6226k77pfh58p; ; ;  # --.ݧ𐽋𞠬
---.xn--rpb6226k77pfh58p; --.𽊆ݧ𐽋𞠬; [B1, B5, B6, V3, V6]; --.xn--rpb6226k77pfh58p; ; ;  # --.ݧ𐽋𞠬
-򛭦𐋥𹸐.≯ࢰࢦ󔛣; ; [B1, P1, V6]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ;  # 𐋥.≯ࢰࢦ
-򛭦𐋥𹸐.≯ࢰࢦ󔛣; 򛭦𐋥𹸐.≯ࢰࢦ󔛣; [B1, P1, V6]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ;  # 𐋥.≯ࢰࢦ
-xn--887c2298i5mv6a.xn--vybt688qm8981a; 򛭦𐋥𹸐.≯ࢰࢦ󔛣; [B1, V6]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ;  # 𐋥.≯ࢰࢦ
-䔛󠇒򤸞𐹧．-䤷; 䔛򤸞𐹧.-䤷; [B1, B5, B6, P1, V3, V6]; xn--2loy662coo60e.xn----0n4a; ; ;  # 䔛𐹧.-䤷
-䔛󠇒򤸞𐹧.-䤷; 䔛򤸞𐹧.-䤷; [B1, B5, B6, P1, V3, V6]; xn--2loy662coo60e.xn----0n4a; ; ;  # 䔛𐹧.-䤷
-xn--2loy662coo60e.xn----0n4a; 䔛򤸞𐹧.-䤷; [B1, B5, B6, V3, V6]; xn--2loy662coo60e.xn----0n4a; ; ;  # 䔛𐹧.-䤷
-𐹩．‍-; 𐹩.‍-; [B1, C2, V3]; xn--ho0d.xn----tgn; ; xn--ho0d.-; [B1, V3] # 𐹩.-
-𐹩.‍-; ; [B1, C2, V3]; xn--ho0d.xn----tgn; ; xn--ho0d.-; [B1, V3] # 𐹩.-
+\u07BB𐹳\u0626𑁆。\u08A7\u06B0\u200Cᢒ; \u07BB𐹳\u0626𑁆.\u08A7\u06B0\u200Cᢒ; [B2, B3, V7]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; xn--lgb32f2753cosb.xn--jkb91hlz1a;  # 𐹳ئ𑁆.ࢧڰᢒ
+\u07BB𐹳\u064A𑁆\u0654。\u08A7\u06B0\u200Cᢒ; \u07BB𐹳\u0626𑁆.\u08A7\u06B0\u200Cᢒ; [B2, B3, V7]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; xn--lgb32f2753cosb.xn--jkb91hlz1a;  # 𐹳ئ𑁆.ࢧڰᢒ
+xn--lgb32f2753cosb.xn--jkb91hlz1a; \u07BB𐹳\u0626𑁆.\u08A7\u06B0ᢒ; [B2, B3, V7]; xn--lgb32f2753cosb.xn--jkb91hlz1a; ; ;  # 𐹳ئ𑁆.ࢧڰᢒ
+xn--lgb32f2753cosb.xn--jkb91hlz1azih; \u07BB𐹳\u0626𑁆.\u08A7\u06B0\u200Cᢒ; [B2, B3, V7]; xn--lgb32f2753cosb.xn--jkb91hlz1azih; ; ;  # 𐹳ئ𑁆.ࢧڰᢒ
+\u0816.𐨕𚚕; ; [B1, B2, B3, V6, V7]; xn--rub.xn--tr9c248x; ; ;  # ࠖ.𐨕
+xn--rub.xn--tr9c248x; \u0816.𐨕𚚕; [B1, B2, B3, V6, V7]; xn--rub.xn--tr9c248x; ; ;  # ࠖ.𐨕
+--。𽊆\u0767𐽋𞠬; --.𽊆\u0767𐽋𞠬; [B1, B5, B6, V3, V7]; --.xn--rpb6226k77pfh58p; ; ;  # --.ݧ𐽋𞠬
+--.xn--rpb6226k77pfh58p; --.𽊆\u0767𐽋𞠬; [B1, B5, B6, V3, V7]; --.xn--rpb6226k77pfh58p; ; ;  # --.ݧ𐽋𞠬
+򛭦𐋥𹸐.≯\u08B0\u08A6󔛣; ; [B1, V7]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ;  # 𐋥.≯ࢰࢦ
+򛭦𐋥𹸐.>\u0338\u08B0\u08A6󔛣; 򛭦𐋥𹸐.≯\u08B0\u08A6󔛣; [B1, V7]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ;  # 𐋥.≯ࢰࢦ
+xn--887c2298i5mv6a.xn--vybt688qm8981a; 򛭦𐋥𹸐.≯\u08B0\u08A6󔛣; [B1, V7]; xn--887c2298i5mv6a.xn--vybt688qm8981a; ; ;  # 𐋥.≯ࢰࢦ
+䔛󠇒򤸞𐹧．-䤷; 䔛򤸞𐹧.-䤷; [B1, B5, B6, V3, V7]; xn--2loy662coo60e.xn----0n4a; ; ;  # 䔛𐹧.-䤷
+䔛󠇒򤸞𐹧.-䤷; 䔛򤸞𐹧.-䤷; [B1, B5, B6, V3, V7]; xn--2loy662coo60e.xn----0n4a; ; ;  # 䔛𐹧.-䤷
+xn--2loy662coo60e.xn----0n4a; 䔛򤸞𐹧.-䤷; [B1, B5, B6, V3, V7]; xn--2loy662coo60e.xn----0n4a; ; ;  # 䔛𐹧.-䤷
+𐹩．\u200D-; 𐹩.\u200D-; [B1, C2, V3]; xn--ho0d.xn----tgn; ; xn--ho0d.-; [B1, V3] # 𐹩.-
+𐹩.\u200D-; ; [B1, C2, V3]; xn--ho0d.xn----tgn; ; xn--ho0d.-; [B1, V3] # 𐹩.-
 xn--ho0d.-; 𐹩.-; [B1, V3]; xn--ho0d.-; ; ;  # 𐹩.-
-xn--ho0d.xn----tgn; 𐹩.‍-; [B1, C2, V3]; xn--ho0d.xn----tgn; ; ;  # 𐹩.-
-񂈦帷｡≯萺᷈-; 񂈦帷.≯萺᷈-; [P1, V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ;  # 帷.≯萺᷈-
-񂈦帷｡≯萺᷈-; 񂈦帷.≯萺᷈-; [P1, V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ;  # 帷.≯萺᷈-
-񂈦帷。≯萺᷈-; 񂈦帷.≯萺᷈-; [P1, V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ;  # 帷.≯萺᷈-
-񂈦帷。≯萺᷈-; 񂈦帷.≯萺᷈-; [P1, V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ;  # 帷.≯萺᷈-
-xn--qutw175s.xn----mimu6tf67j; 񂈦帷.≯萺᷈-; [V3, V6]; xn--qutw175s.xn----mimu6tf67j; ; ;  # 帷.≯萺᷈-
-‍攌꯭。ᢖ-Ⴘ; ‍攌꯭.ᢖ-Ⴘ; [C2, P1, V6]; xn--1ug592ykp6b.xn----k1g451d; ; xn--p9ut19m.xn----k1g451d; [P1, V6] # 攌꯭.ᢖ-Ⴘ
-‍攌꯭。ᢖ-ⴘ; ‍攌꯭.ᢖ-ⴘ; [C2]; xn--1ug592ykp6b.xn----mck373i; ; xn--p9ut19m.xn----mck373i; [] # 攌꯭.ᢖ-ⴘ
-xn--p9ut19m.xn----mck373i; 攌꯭.ᢖ-ⴘ; ; xn--p9ut19m.xn----mck373i; ; ;  # 攌꯭.ᢖ-ⴘ
-攌꯭.ᢖ-ⴘ; ; ; xn--p9ut19m.xn----mck373i; ; ;  # 攌꯭.ᢖ-ⴘ
-攌꯭.ᢖ-Ⴘ; ; [P1, V6]; xn--p9ut19m.xn----k1g451d; ; ;  # 攌꯭.ᢖ-Ⴘ
-xn--p9ut19m.xn----k1g451d; 攌꯭.ᢖ-Ⴘ; [V6]; xn--p9ut19m.xn----k1g451d; ; ;  # 攌꯭.ᢖ-Ⴘ
-xn--1ug592ykp6b.xn----mck373i; ‍攌꯭.ᢖ-ⴘ; [C2]; xn--1ug592ykp6b.xn----mck373i; ; ;  # 攌꯭.ᢖ-ⴘ
-xn--1ug592ykp6b.xn----k1g451d; ‍攌꯭.ᢖ-Ⴘ; [C2, V6]; xn--1ug592ykp6b.xn----k1g451d; ; ;  # 攌꯭.ᢖ-Ⴘ
-‌ꖨ．⒗３툒۳; ‌ꖨ.⒗3툒۳; [C1, P1, V6]; xn--0ug2473c.xn--3-nyc678tu07m; ; xn--9r8a.xn--3-nyc678tu07m; [P1, V6] # ꖨ.⒗3툒۳
-‌ꖨ．⒗３툒۳; ‌ꖨ.⒗3툒۳; [C1, P1, V6]; xn--0ug2473c.xn--3-nyc678tu07m; ; xn--9r8a.xn--3-nyc678tu07m; [P1, V6] # ꖨ.⒗3툒۳
-‌ꖨ.16.3툒۳; ; [C1]; xn--0ug2473c.16.xn--3-nyc0117m; ; xn--9r8a.16.xn--3-nyc0117m; [] # ꖨ.16.3툒۳
-‌ꖨ.16.3툒۳; ‌ꖨ.16.3툒۳; [C1]; xn--0ug2473c.16.xn--3-nyc0117m; ; xn--9r8a.16.xn--3-nyc0117m; [] # ꖨ.16.3툒۳
+xn--ho0d.xn----tgn; 𐹩.\u200D-; [B1, C2, V3]; xn--ho0d.xn----tgn; ; ;  # 𐹩.-
+񂈦帷｡≯萺\u1DC8-; 񂈦帷.≯萺\u1DC8-; [V3, V7]; xn--qutw175s.xn----mimu6tf67j; ; ;  # 帷.≯萺᷈-
+񂈦帷｡>\u0338萺\u1DC8-; 񂈦帷.≯萺\u1DC8-; [V3, V7]; xn--qutw175s.xn----mimu6tf67j; ; ;  # 帷.≯萺᷈-
+񂈦帷。≯萺\u1DC8-; 񂈦帷.≯萺\u1DC8-; [V3, V7]; xn--qutw175s.xn----mimu6tf67j; ; ;  # 帷.≯萺᷈-
+񂈦帷。>\u0338萺\u1DC8-; 񂈦帷.≯萺\u1DC8-; [V3, V7]; xn--qutw175s.xn----mimu6tf67j; ; ;  # 帷.≯萺᷈-
+xn--qutw175s.xn----mimu6tf67j; 񂈦帷.≯萺\u1DC8-; [V3, V7]; xn--qutw175s.xn----mimu6tf67j; ; ;  # 帷.≯萺᷈-
+\u200D攌\uABED。ᢖ-Ⴘ; \u200D攌\uABED.ᢖ-ⴘ; [C2]; xn--1ug592ykp6b.xn----mck373i; ; xn--p9ut19m.xn----mck373i; [] # 攌꯭.ᢖ-ⴘ
+\u200D攌\uABED。ᢖ-ⴘ; \u200D攌\uABED.ᢖ-ⴘ; [C2]; xn--1ug592ykp6b.xn----mck373i; ; xn--p9ut19m.xn----mck373i; [] # 攌꯭.ᢖ-ⴘ
+xn--p9ut19m.xn----mck373i; 攌\uABED.ᢖ-ⴘ; ; xn--p9ut19m.xn----mck373i; ; ;  # 攌꯭.ᢖ-ⴘ
+攌\uABED.ᢖ-ⴘ; ; ; xn--p9ut19m.xn----mck373i; ; ;  # 攌꯭.ᢖ-ⴘ
+攌\uABED.ᢖ-Ⴘ; 攌\uABED.ᢖ-ⴘ; ; xn--p9ut19m.xn----mck373i; ; ;  # 攌꯭.ᢖ-ⴘ
+xn--1ug592ykp6b.xn----mck373i; \u200D攌\uABED.ᢖ-ⴘ; [C2]; xn--1ug592ykp6b.xn----mck373i; ; ;  # 攌꯭.ᢖ-ⴘ
+xn--p9ut19m.xn----k1g451d; 攌\uABED.ᢖ-Ⴘ; [V7]; xn--p9ut19m.xn----k1g451d; ; ;  # 攌꯭.ᢖ-Ⴘ
+xn--1ug592ykp6b.xn----k1g451d; \u200D攌\uABED.ᢖ-Ⴘ; [C2, V7]; xn--1ug592ykp6b.xn----k1g451d; ; ;  # 攌꯭.ᢖ-Ⴘ
+\u200Cꖨ．⒗３툒۳; \u200Cꖨ.⒗3툒۳; [C1, V7]; xn--0ug2473c.xn--3-nyc678tu07m; ; xn--9r8a.xn--3-nyc678tu07m; [V7] # ꖨ.⒗3툒۳
+\u200Cꖨ．⒗３툒۳; \u200Cꖨ.⒗3툒۳; [C1, V7]; xn--0ug2473c.xn--3-nyc678tu07m; ; xn--9r8a.xn--3-nyc678tu07m; [V7] # ꖨ.⒗3툒۳
+\u200Cꖨ.16.3툒۳; ; [C1]; xn--0ug2473c.16.xn--3-nyc0117m; ; xn--9r8a.16.xn--3-nyc0117m; [] # ꖨ.16.3툒۳
+\u200Cꖨ.16.3툒۳; \u200Cꖨ.16.3툒۳; [C1]; xn--0ug2473c.16.xn--3-nyc0117m; ; xn--9r8a.16.xn--3-nyc0117m; [] # ꖨ.16.3툒۳
 xn--9r8a.16.xn--3-nyc0117m; ꖨ.16.3툒۳; ; xn--9r8a.16.xn--3-nyc0117m; ; ;  # ꖨ.16.3툒۳
 ꖨ.16.3툒۳; ; ; xn--9r8a.16.xn--3-nyc0117m; ; ;  # ꖨ.16.3툒۳
 ꖨ.16.3툒۳; ꖨ.16.3툒۳; ; xn--9r8a.16.xn--3-nyc0117m; ; ;  # ꖨ.16.3툒۳
-xn--0ug2473c.16.xn--3-nyc0117m; ‌ꖨ.16.3툒۳; [C1]; xn--0ug2473c.16.xn--3-nyc0117m; ; ;  # ꖨ.16.3툒۳
-xn--9r8a.xn--3-nyc678tu07m; ꖨ.⒗3툒۳; [V6]; xn--9r8a.xn--3-nyc678tu07m; ; ;  # ꖨ.⒗3툒۳
-xn--0ug2473c.xn--3-nyc678tu07m; ‌ꖨ.⒗3툒۳; [C1, V6]; xn--0ug2473c.xn--3-nyc678tu07m; ; ;  # ꖨ.⒗3툒۳
-⒈걾6.𐱁ې; ; [B1, P1, V6]; xn--6-dcps419c.xn--glb1794k; ; ;  # ⒈걾6.𐱁ې
-⒈걾6.𐱁ې; ⒈걾6.𐱁ې; [B1, P1, V6]; xn--6-dcps419c.xn--glb1794k; ; ;  # ⒈걾6.𐱁ې
-1.걾6.𐱁ې; ; [B1]; 1.xn--6-945e.xn--glb1794k; ; ;  # 1.걾6.𐱁ې
-1.걾6.𐱁ې; 1.걾6.𐱁ې; [B1]; 1.xn--6-945e.xn--glb1794k; ; ;  # 1.걾6.𐱁ې
-1.xn--6-945e.xn--glb1794k; 1.걾6.𐱁ې; [B1]; 1.xn--6-945e.xn--glb1794k; ; ;  # 1.걾6.𐱁ې
-xn--6-dcps419c.xn--glb1794k; ⒈걾6.𐱁ې; [B1, V6]; xn--6-dcps419c.xn--glb1794k; ; ;  # ⒈걾6.𐱁ې
-𐲞𝟶≮≮.󠀧ع; 𐳞0≮≮.󠀧ع; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
-𐲞𝟶≮≮.󠀧ع; 𐳞0≮≮.󠀧ع; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
-𐲞0≮≮.󠀧ع; 𐳞0≮≮.󠀧ع; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
-𐲞0≮≮.󠀧ع; 𐳞0≮≮.󠀧ع; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
-𐳞0≮≮.󠀧ع; 𐳞0≮≮.󠀧ع; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
-𐳞0≮≮.󠀧ع; ; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
-xn--0-ngoa5711v.xn--4gb31034p; 𐳞0≮≮.󠀧ع; [B1, B3, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
-𐳞𝟶≮≮.󠀧ع; 𐳞0≮≮.󠀧ع; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
-𐳞𝟶≮≮.󠀧ع; 𐳞0≮≮.󠀧ع; [B1, B3, P1, V6]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
-ૣ.𐹺ᅟ; ; [B1, B3, B6, P1, V5, V6]; xn--8fc.xn--osd3070k; ; ;  # ૣ.𐹺
-xn--8fc.xn--osd3070k; ૣ.𐹺ᅟ; [B1, B3, B6, V5, V6]; xn--8fc.xn--osd3070k; ; ;  # ૣ.𐹺
-𝟏𝨙⸖.‍; 1𝨙⸖.‍; [C2]; xn--1-5bt6845n.xn--1ug; ; xn--1-5bt6845n.; [] # 1𝨙⸖.
-1𝨙⸖.‍; ; [C2]; xn--1-5bt6845n.xn--1ug; ; xn--1-5bt6845n.; [] # 1𝨙⸖.
-xn--1-5bt6845n.; 1𝨙⸖.; ; xn--1-5bt6845n.; ; ;  # 1𝨙⸖.
-1𝨙⸖.; ; ; xn--1-5bt6845n.; ; ;  # 1𝨙⸖.
-xn--1-5bt6845n.xn--1ug; 1𝨙⸖.‍; [C2]; xn--1-5bt6845n.xn--1ug; ; ;  # 1𝨙⸖.
-𞤐≠ܦ᩠｡-‌ߕ; 𞤲≠ܦ᩠.-‌ߕ; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-𞤐≠ܦ᩠｡-‌ߕ; 𞤲≠ܦ᩠.-‌ߕ; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-𞤐≠ܦ᩠。-‌ߕ; 𞤲≠ܦ᩠.-‌ߕ; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-𞤐≠ܦ᩠。-‌ߕ; 𞤲≠ܦ᩠.-‌ߕ; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-𞤲≠ܦ᩠。-‌ߕ; 𞤲≠ܦ᩠.-‌ߕ; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-𞤲≠ܦ᩠。-‌ߕ; 𞤲≠ܦ᩠.-‌ߕ; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-xn--wnb859grzfzw60c.xn----kcd; 𞤲≠ܦ᩠.-ߕ; [B1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd; ; ;  # 𞤲≠ܦ᩠.-ߕ
-xn--wnb859grzfzw60c.xn----kcd017p; 𞤲≠ܦ᩠.-‌ߕ; [B1, C1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; ;  # 𞤲≠ܦ᩠.-ߕ
-𞤲≠ܦ᩠｡-‌ߕ; 𞤲≠ܦ᩠.-‌ߕ; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-𞤲≠ܦ᩠｡-‌ߕ; 𞤲≠ܦ᩠.-‌ߕ; [B1, C1, P1, V3, V6]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, P1, V3, V6] # 𞤲≠ܦ᩠.-ߕ
-𐹰ͨ-ꡧ｡ٵ; 𐹰ͨ-ꡧ.اٴ; [B1]; xn----shb2387jgkqd.xn--mgb8m; ; ;  # 𐹰ͨ-ꡧ.اٴ
-𐹰ͨ-ꡧ。اٴ; 𐹰ͨ-ꡧ.اٴ; [B1]; xn----shb2387jgkqd.xn--mgb8m; ; ;  # 𐹰ͨ-ꡧ.اٴ
-xn----shb2387jgkqd.xn--mgb8m; 𐹰ͨ-ꡧ.اٴ; [B1]; xn----shb2387jgkqd.xn--mgb8m; ; ;  # 𐹰ͨ-ꡧ.اٴ
-F󠅟｡򏗅♚; f.򏗅♚; [P1, V6]; f.xn--45hz6953f; ; ;  # f.♚
-F󠅟。򏗅♚; f.򏗅♚; [P1, V6]; f.xn--45hz6953f; ; ;  # f.♚
-f󠅟。򏗅♚; f.򏗅♚; [P1, V6]; f.xn--45hz6953f; ; ;  # f.♚
-f.xn--45hz6953f; f.򏗅♚; [V6]; f.xn--45hz6953f; ; ;  # f.♚
-f󠅟｡򏗅♚; f.򏗅♚; [P1, V6]; f.xn--45hz6953f; ; ;  # f.♚
-୍𑄴ᷩ。𝟮Ⴘ𞀨񃥇; ୍𑄴ᷩ.2Ⴘ𞀨񃥇; [P1, V5, V6]; xn--9ic246gs21p.xn--2-k1g43076adrwq; ; ;  # ୍𑄴ᷩ.2Ⴘ𞀨
-୍𑄴ᷩ。2Ⴘ𞀨񃥇; ୍𑄴ᷩ.2Ⴘ𞀨񃥇; [P1, V5, V6]; xn--9ic246gs21p.xn--2-k1g43076adrwq; ; ;  # ୍𑄴ᷩ.2Ⴘ𞀨
-୍𑄴ᷩ。2ⴘ𞀨񃥇; ୍𑄴ᷩ.2ⴘ𞀨񃥇; [P1, V5, V6]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ;  # ୍𑄴ᷩ.2ⴘ𞀨
-xn--9ic246gs21p.xn--2-nws2918ndrjr; ୍𑄴ᷩ.2ⴘ𞀨񃥇; [V5, V6]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ;  # ୍𑄴ᷩ.2ⴘ𞀨
-xn--9ic246gs21p.xn--2-k1g43076adrwq; ୍𑄴ᷩ.2Ⴘ𞀨񃥇; [V5, V6]; xn--9ic246gs21p.xn--2-k1g43076adrwq; ; ;  # ୍𑄴ᷩ.2Ⴘ𞀨
-୍𑄴ᷩ。𝟮ⴘ𞀨񃥇; ୍𑄴ᷩ.2ⴘ𞀨񃥇; [P1, V5, V6]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ;  # ୍𑄴ᷩ.2ⴘ𞀨
-򓠭‌‌⒈。勉𑁅; 򓠭‌‌⒈.勉𑁅; [C1, P1, V6]; xn--0uga855aez302a.xn--4grs325b; ; xn--tsh11906f.xn--4grs325b; [P1, V6] # ⒈.勉𑁅
-򓠭‌‌1.。勉𑁅; 򓠭‌‌1..勉𑁅; [C1, P1, V6, X4_2]; xn--1-rgna61159u..xn--4grs325b; [C1, P1, V6, A4_2]; xn--1-yi00h..xn--4grs325b; [P1, V6, A4_2] # 1..勉𑁅
-xn--1-yi00h..xn--4grs325b; 򓠭1..勉𑁅; [V6, X4_2]; xn--1-yi00h..xn--4grs325b; [V6, A4_2]; ;  # 1..勉𑁅
-xn--1-rgna61159u..xn--4grs325b; 򓠭‌‌1..勉𑁅; [C1, V6, X4_2]; xn--1-rgna61159u..xn--4grs325b; [C1, V6, A4_2]; ;  # 1..勉𑁅
-xn--tsh11906f.xn--4grs325b; 򓠭⒈.勉𑁅; [V6]; xn--tsh11906f.xn--4grs325b; ; ;  # ⒈.勉𑁅
-xn--0uga855aez302a.xn--4grs325b; 򓠭‌‌⒈.勉𑁅; [C1, V6]; xn--0uga855aez302a.xn--4grs325b; ; ;  # ⒈.勉𑁅
-ᡃ.玿񫈜󕞐; ; [P1, V6]; xn--27e.xn--7cy81125a0yq4a; ; ;  # ᡃ.玿
-xn--27e.xn--7cy81125a0yq4a; ᡃ.玿񫈜󕞐; [V6]; xn--27e.xn--7cy81125a0yq4a; ; ;  # ᡃ.玿
-‌‌｡⒈≯𝟵; ‌‌.⒈≯9; [C1, P1, V6]; xn--0uga.xn--9-ogo37g; ; .xn--9-ogo37g; [P1, V6, A4_2] # .⒈≯9
-‌‌｡⒈≯𝟵; ‌‌.⒈≯9; [C1, P1, V6]; xn--0uga.xn--9-ogo37g; ; .xn--9-ogo37g; [P1, V6, A4_2] # .⒈≯9
-‌‌。1.≯9; ‌‌.1.≯9; [C1, P1, V6]; xn--0uga.1.xn--9-ogo; ; .1.xn--9-ogo; [P1, V6, A4_2] # .1.≯9
-‌‌。1.≯9; ‌‌.1.≯9; [C1, P1, V6]; xn--0uga.1.xn--9-ogo; ; .1.xn--9-ogo; [P1, V6, A4_2] # .1.≯9
-.1.xn--9-ogo; .1.≯9; [V6, X4_2]; .1.xn--9-ogo; [V6, A4_2]; ;  # .1.≯9
-xn--0uga.1.xn--9-ogo; ‌‌.1.≯9; [C1, V6]; xn--0uga.1.xn--9-ogo; ; ;  # .1.≯9
-.xn--9-ogo37g; .⒈≯9; [V6, X4_2]; .xn--9-ogo37g; [V6, A4_2]; ;  # .⒈≯9
-xn--0uga.xn--9-ogo37g; ‌‌.⒈≯9; [C1, V6]; xn--0uga.xn--9-ogo37g; ; ;  # .⒈≯9
-ᅟᷠ򐀁.𺻆≯𐮁; ; [B5, B6, P1, V6]; xn--osd615d5659o.xn--hdh5192gkm6r; ; ;  # ᷠ.≯𐮁
-ᅟᷠ򐀁.𺻆≯𐮁; ᅟᷠ򐀁.𺻆≯𐮁; [B5, B6, P1, V6]; xn--osd615d5659o.xn--hdh5192gkm6r; ; ;  # ᷠ.≯𐮁
-xn--osd615d5659o.xn--hdh5192gkm6r; ᅟᷠ򐀁.𺻆≯𐮁; [B5, B6, V6]; xn--osd615d5659o.xn--hdh5192gkm6r; ; ;  # ᷠ.≯𐮁
-󠄫𝩤‍ؾ.𝩩-ࠞ󑼩; 𝩤‍ؾ.𝩩-ࠞ󑼩; [B1, C2, P1, V5, V6]; xn--9gb723kg862a.xn----qgd52296avol4f; ; xn--9gb5080v.xn----qgd52296avol4f; [B1, P1, V5, V6] # 𝩤ؾ.𝩩-ࠞ
-xn--9gb5080v.xn----qgd52296avol4f; 𝩤ؾ.𝩩-ࠞ󑼩; [B1, V5, V6]; xn--9gb5080v.xn----qgd52296avol4f; ; ;  # 𝩤ؾ.𝩩-ࠞ
-xn--9gb723kg862a.xn----qgd52296avol4f; 𝩤‍ؾ.𝩩-ࠞ󑼩; [B1, C2, V5, V6]; xn--9gb723kg862a.xn----qgd52296avol4f; ; ;  # 𝩤ؾ.𝩩-ࠞ
-⃚．𑘿-; ⃚.𑘿-; [V3, V5]; xn--w0g.xn----bd0j; ; ;  # ⃚.𑘿-
-⃚.𑘿-; ; [V3, V5]; xn--w0g.xn----bd0j; ; ;  # ⃚.𑘿-
-xn--w0g.xn----bd0j; ⃚.𑘿-; [V3, V5]; xn--w0g.xn----bd0j; ; ;  # ⃚.𑘿-
-䮸ß.󠵟󠭎紙ࢨ; ; [B1, P1, V6]; xn--zca5349a.xn--xyb1370div70kpzba; ; xn--ss-sf1c.xn--xyb1370div70kpzba;  # 䮸ß.紙ࢨ
-䮸SS.󠵟󠭎紙ࢨ; 䮸ss.󠵟󠭎紙ࢨ; [B1, P1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ;  # 䮸ss.紙ࢨ
-䮸ss.󠵟󠭎紙ࢨ; ; [B1, P1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ;  # 䮸ss.紙ࢨ
-䮸Ss.󠵟󠭎紙ࢨ; 䮸ss.󠵟󠭎紙ࢨ; [B1, P1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ;  # 䮸ss.紙ࢨ
-xn--ss-sf1c.xn--xyb1370div70kpzba; 䮸ss.󠵟󠭎紙ࢨ; [B1, V6]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ;  # 䮸ss.紙ࢨ
-xn--zca5349a.xn--xyb1370div70kpzba; 䮸ß.󠵟󠭎紙ࢨ; [B1, V6]; xn--zca5349a.xn--xyb1370div70kpzba; ; ;  # 䮸ß.紙ࢨ
--Ⴞ.-𝩨⅔𐦕; -Ⴞ.-𝩨2⁄3𐦕; [B1, P1, V3, V6]; xn----w1g.xn---23-pt0a0433lk3jj; ; ;  # -Ⴞ.-𝩨2⁄3𐦕
--Ⴞ.-𝩨2⁄3𐦕; ; [B1, P1, V3, V6]; xn----w1g.xn---23-pt0a0433lk3jj; ; ;  # -Ⴞ.-𝩨2⁄3𐦕
+xn--0ug2473c.16.xn--3-nyc0117m; \u200Cꖨ.16.3툒۳; [C1]; xn--0ug2473c.16.xn--3-nyc0117m; ; ;  # ꖨ.16.3툒۳
+xn--9r8a.xn--3-nyc678tu07m; ꖨ.⒗3툒۳; [V7]; xn--9r8a.xn--3-nyc678tu07m; ; ;  # ꖨ.⒗3툒۳
+xn--0ug2473c.xn--3-nyc678tu07m; \u200Cꖨ.⒗3툒۳; [C1, V7]; xn--0ug2473c.xn--3-nyc678tu07m; ; ;  # ꖨ.⒗3툒۳
+⒈걾6.𐱁\u06D0; ; [B1, V7]; xn--6-dcps419c.xn--glb1794k; ; ;  # ⒈걾6.𐱁ې
+⒈걾6.𐱁\u06D0; ⒈걾6.𐱁\u06D0; [B1, V7]; xn--6-dcps419c.xn--glb1794k; ; ;  # ⒈걾6.𐱁ې
+1.걾6.𐱁\u06D0; ; [B1]; 1.xn--6-945e.xn--glb1794k; ; ;  # 1.걾6.𐱁ې
+1.걾6.𐱁\u06D0; 1.걾6.𐱁\u06D0; [B1]; 1.xn--6-945e.xn--glb1794k; ; ;  # 1.걾6.𐱁ې
+1.xn--6-945e.xn--glb1794k; 1.걾6.𐱁\u06D0; [B1]; 1.xn--6-945e.xn--glb1794k; ; ;  # 1.걾6.𐱁ې
+xn--6-dcps419c.xn--glb1794k; ⒈걾6.𐱁\u06D0; [B1, V7]; xn--6-dcps419c.xn--glb1794k; ; ;  # ⒈걾6.𐱁ې
+𐲞𝟶≮≮.󠀧\u0639; 𐳞0≮≮.󠀧\u0639; [B1, B3, V7]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
+𐲞𝟶<\u0338<\u0338.󠀧\u0639; 𐳞0≮≮.󠀧\u0639; [B1, B3, V7]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
+𐲞0≮≮.󠀧\u0639; 𐳞0≮≮.󠀧\u0639; [B1, B3, V7]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
+𐲞0<\u0338<\u0338.󠀧\u0639; 𐳞0≮≮.󠀧\u0639; [B1, B3, V7]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
+𐳞0<\u0338<\u0338.󠀧\u0639; 𐳞0≮≮.󠀧\u0639; [B1, B3, V7]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
+𐳞0≮≮.󠀧\u0639; ; [B1, B3, V7]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
+xn--0-ngoa5711v.xn--4gb31034p; 𐳞0≮≮.󠀧\u0639; [B1, B3, V7]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
+𐳞𝟶<\u0338<\u0338.󠀧\u0639; 𐳞0≮≮.󠀧\u0639; [B1, B3, V7]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
+𐳞𝟶≮≮.󠀧\u0639; 𐳞0≮≮.󠀧\u0639; [B1, B3, V7]; xn--0-ngoa5711v.xn--4gb31034p; ; ;  # 𐳞0≮≮.ع
+\u0AE3.𐹺\u115F; \u0AE3.𐹺; [B1, V6]; xn--8fc.xn--yo0d; ; ;  # ૣ.𐹺
+xn--8fc.xn--yo0d; \u0AE3.𐹺; [B1, V6]; xn--8fc.xn--yo0d; ; ;  # ૣ.𐹺
+xn--8fc.xn--osd3070k; \u0AE3.𐹺\u115F; [B1, V6, V7]; xn--8fc.xn--osd3070k; ; ;  # ૣ.𐹺
+𝟏𝨙⸖.\u200D; 1𝨙⸖.\u200D; [C2]; xn--1-5bt6845n.xn--1ug; ; xn--1-5bt6845n.; [A4_2] # 1𝨙⸖.
+1𝨙⸖.\u200D; ; [C2]; xn--1-5bt6845n.xn--1ug; ; xn--1-5bt6845n.; [A4_2] # 1𝨙⸖.
+xn--1-5bt6845n.; 1𝨙⸖.; ; xn--1-5bt6845n.; [A4_2]; ;  # 1𝨙⸖.
+1𝨙⸖.; ; ; xn--1-5bt6845n.; [A4_2]; ;  # 1𝨙⸖.
+xn--1-5bt6845n.xn--1ug; 1𝨙⸖.\u200D; [C2]; xn--1-5bt6845n.xn--1ug; ; ;  # 1𝨙⸖.
+𞤐≠\u0726\u1A60｡-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+𞤐=\u0338\u0726\u1A60｡-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+𞤐≠\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+𞤐=\u0338\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+𞤲=\u0338\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+𞤲≠\u0726\u1A60。-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+xn--wnb859grzfzw60c.xn----kcd; 𞤲≠\u0726\u1A60.-\u07D5; [B1, V3]; xn--wnb859grzfzw60c.xn----kcd; ; ;  # 𞤲≠ܦ᩠.-ߕ
+xn--wnb859grzfzw60c.xn----kcd017p; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; ;  # 𞤲≠ܦ᩠.-ߕ
+𞤲=\u0338\u0726\u1A60｡-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+𞤲≠\u0726\u1A60｡-\u200C\u07D5; 𞤲≠\u0726\u1A60.-\u200C\u07D5; [B1, C1, V3]; xn--wnb859grzfzw60c.xn----kcd017p; ; xn--wnb859grzfzw60c.xn----kcd; [B1, V3] # 𞤲≠ܦ᩠.-ߕ
+𐹰\u0368-ꡧ｡\u0675; 𐹰\u0368-ꡧ.\u0627\u0674; [B1]; xn----shb2387jgkqd.xn--mgb8m; ; ;  # 𐹰ͨ-ꡧ.اٴ
+𐹰\u0368-ꡧ。\u0627\u0674; 𐹰\u0368-ꡧ.\u0627\u0674; [B1]; xn----shb2387jgkqd.xn--mgb8m; ; ;  # 𐹰ͨ-ꡧ.اٴ
+xn----shb2387jgkqd.xn--mgb8m; 𐹰\u0368-ꡧ.\u0627\u0674; [B1]; xn----shb2387jgkqd.xn--mgb8m; ; ;  # 𐹰ͨ-ꡧ.اٴ
+F󠅟｡򏗅♚; f.򏗅♚; [V7]; f.xn--45hz6953f; ; ;  # f.♚
+F󠅟。򏗅♚; f.򏗅♚; [V7]; f.xn--45hz6953f; ; ;  # f.♚
+f󠅟。򏗅♚; f.򏗅♚; [V7]; f.xn--45hz6953f; ; ;  # f.♚
+f.xn--45hz6953f; f.򏗅♚; [V7]; f.xn--45hz6953f; ; ;  # f.♚
+f󠅟｡򏗅♚; f.򏗅♚; [V7]; f.xn--45hz6953f; ; ;  # f.♚
+\u0B4D𑄴\u1DE9。𝟮Ⴘ𞀨񃥇; \u0B4D𑄴\u1DE9.2ⴘ𞀨񃥇; [V6, V7]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ;  # ୍𑄴ᷩ.2ⴘ𞀨
+\u0B4D𑄴\u1DE9。2Ⴘ𞀨񃥇; \u0B4D𑄴\u1DE9.2ⴘ𞀨񃥇; [V6, V7]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ;  # ୍𑄴ᷩ.2ⴘ𞀨
+\u0B4D𑄴\u1DE9。2ⴘ𞀨񃥇; \u0B4D𑄴\u1DE9.2ⴘ𞀨񃥇; [V6, V7]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ;  # ୍𑄴ᷩ.2ⴘ𞀨
+xn--9ic246gs21p.xn--2-nws2918ndrjr; \u0B4D𑄴\u1DE9.2ⴘ𞀨񃥇; [V6, V7]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ;  # ୍𑄴ᷩ.2ⴘ𞀨
+\u0B4D𑄴\u1DE9。𝟮ⴘ𞀨񃥇; \u0B4D𑄴\u1DE9.2ⴘ𞀨񃥇; [V6, V7]; xn--9ic246gs21p.xn--2-nws2918ndrjr; ; ;  # ୍𑄴ᷩ.2ⴘ𞀨
+xn--9ic246gs21p.xn--2-k1g43076adrwq; \u0B4D𑄴\u1DE9.2Ⴘ𞀨񃥇; [V6, V7]; xn--9ic246gs21p.xn--2-k1g43076adrwq; ; ;  # ୍𑄴ᷩ.2Ⴘ𞀨
+򓠭\u200C\u200C⒈。勉𑁅; 򓠭\u200C\u200C⒈.勉𑁅; [C1, V7]; xn--0uga855aez302a.xn--4grs325b; ; xn--tsh11906f.xn--4grs325b; [V7] # ⒈.勉𑁅
+򓠭\u200C\u200C1.。勉𑁅; 򓠭\u200C\u200C1..勉𑁅; [C1, V7, X4_2]; xn--1-rgna61159u..xn--4grs325b; [C1, V7, A4_2]; xn--1-yi00h..xn--4grs325b; [V7, A4_2] # 1..勉𑁅
+xn--1-yi00h..xn--4grs325b; 򓠭1..勉𑁅; [V7, X4_2]; xn--1-yi00h..xn--4grs325b; [V7, A4_2]; ;  # 1..勉𑁅
+xn--1-rgna61159u..xn--4grs325b; 򓠭\u200C\u200C1..勉𑁅; [C1, V7, X4_2]; xn--1-rgna61159u..xn--4grs325b; [C1, V7, A4_2]; ;  # 1..勉𑁅
+xn--tsh11906f.xn--4grs325b; 򓠭⒈.勉𑁅; [V7]; xn--tsh11906f.xn--4grs325b; ; ;  # ⒈.勉𑁅
+xn--0uga855aez302a.xn--4grs325b; 򓠭\u200C\u200C⒈.勉𑁅; [C1, V7]; xn--0uga855aez302a.xn--4grs325b; ; ;  # ⒈.勉𑁅
+ᡃ.玿񫈜󕞐; ; [V7]; xn--27e.xn--7cy81125a0yq4a; ; ;  # ᡃ.玿
+xn--27e.xn--7cy81125a0yq4a; ᡃ.玿񫈜󕞐; [V7]; xn--27e.xn--7cy81125a0yq4a; ; ;  # ᡃ.玿
+\u200C\u200C｡⒈≯𝟵; \u200C\u200C.⒈≯9; [C1, V7]; xn--0uga.xn--9-ogo37g; ; .xn--9-ogo37g; [V7, A4_2] # .⒈≯9
+\u200C\u200C｡⒈>\u0338𝟵; \u200C\u200C.⒈≯9; [C1, V7]; xn--0uga.xn--9-ogo37g; ; .xn--9-ogo37g; [V7, A4_2] # .⒈≯9
+\u200C\u200C。1.≯9; \u200C\u200C.1.≯9; [C1]; xn--0uga.1.xn--9-ogo; ; .1.xn--9-ogo; [A4_2] # .1.≯9
+\u200C\u200C。1.>\u03389; \u200C\u200C.1.≯9; [C1]; xn--0uga.1.xn--9-ogo; ; .1.xn--9-ogo; [A4_2] # .1.≯9
+.1.xn--9-ogo; .1.≯9; [X4_2]; .1.xn--9-ogo; [A4_2]; ;  # .1.≯9
+xn--0uga.1.xn--9-ogo; \u200C\u200C.1.≯9; [C1]; xn--0uga.1.xn--9-ogo; ; ;  # .1.≯9
+.xn--9-ogo37g; .⒈≯9; [V7, X4_2]; .xn--9-ogo37g; [V7, A4_2]; ;  # .⒈≯9
+xn--0uga.xn--9-ogo37g; \u200C\u200C.⒈≯9; [C1, V7]; xn--0uga.xn--9-ogo37g; ; ;  # .⒈≯9
+\u115F\u1DE0򐀁.𺻆≯𐮁; \u1DE0򐀁.𺻆≯𐮁; [B1, B5, B6, V6, V7]; xn--4eg41418g.xn--hdh5192gkm6r; ; ;  # ᷠ.≯𐮁
+\u115F\u1DE0򐀁.𺻆>\u0338𐮁; \u1DE0򐀁.𺻆≯𐮁; [B1, B5, B6, V6, V7]; xn--4eg41418g.xn--hdh5192gkm6r; ; ;  # ᷠ.≯𐮁
+xn--4eg41418g.xn--hdh5192gkm6r; \u1DE0򐀁.𺻆≯𐮁; [B1, B5, B6, V6, V7]; xn--4eg41418g.xn--hdh5192gkm6r; ; ;  # ᷠ.≯𐮁
+xn--osd615d5659o.xn--hdh5192gkm6r; \u115F\u1DE0򐀁.𺻆≯𐮁; [B5, B6, V7]; xn--osd615d5659o.xn--hdh5192gkm6r; ; ;  # ᷠ.≯𐮁
+󠄫𝩤\u200D\u063E.𝩩-\u081E󑼩; 𝩤\u200D\u063E.𝩩-\u081E󑼩; [B1, C2, V6, V7]; xn--9gb723kg862a.xn----qgd52296avol4f; ; xn--9gb5080v.xn----qgd52296avol4f; [B1, V6, V7] # 𝩤ؾ.𝩩-ࠞ
+xn--9gb5080v.xn----qgd52296avol4f; 𝩤\u063E.𝩩-\u081E󑼩; [B1, V6, V7]; xn--9gb5080v.xn----qgd52296avol4f; ; ;  # 𝩤ؾ.𝩩-ࠞ
+xn--9gb723kg862a.xn----qgd52296avol4f; 𝩤\u200D\u063E.𝩩-\u081E󑼩; [B1, C2, V6, V7]; xn--9gb723kg862a.xn----qgd52296avol4f; ; ;  # 𝩤ؾ.𝩩-ࠞ
+\u20DA．𑘿-; \u20DA.𑘿-; [V3, V6]; xn--w0g.xn----bd0j; ; ;  # ⃚.𑘿-
+\u20DA.𑘿-; ; [V3, V6]; xn--w0g.xn----bd0j; ; ;  # ⃚.𑘿-
+xn--w0g.xn----bd0j; \u20DA.𑘿-; [V3, V6]; xn--w0g.xn----bd0j; ; ;  # ⃚.𑘿-
+䮸ß.󠵟󠭎紙\u08A8; ; [B1, V7]; xn--zca5349a.xn--xyb1370div70kpzba; ; xn--ss-sf1c.xn--xyb1370div70kpzba;  # 䮸ß.紙ࢨ
+䮸SS.󠵟󠭎紙\u08A8; 䮸ss.󠵟󠭎紙\u08A8; [B1, V7]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ;  # 䮸ss.紙ࢨ
+䮸ss.󠵟󠭎紙\u08A8; ; [B1, V7]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ;  # 䮸ss.紙ࢨ
+䮸Ss.󠵟󠭎紙\u08A8; 䮸ss.󠵟󠭎紙\u08A8; [B1, V7]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ;  # 䮸ss.紙ࢨ
+xn--ss-sf1c.xn--xyb1370div70kpzba; 䮸ss.󠵟󠭎紙\u08A8; [B1, V7]; xn--ss-sf1c.xn--xyb1370div70kpzba; ; ;  # 䮸ss.紙ࢨ
+xn--zca5349a.xn--xyb1370div70kpzba; 䮸ß.󠵟󠭎紙\u08A8; [B1, V7]; xn--zca5349a.xn--xyb1370div70kpzba; ; ;  # 䮸ß.紙ࢨ
+-Ⴞ.-𝩨⅔𐦕; -ⴞ.-𝩨2⁄3𐦕; [B1, V3]; xn----zws.xn---23-pt0a0433lk3jj; ; ;  # -ⴞ.-𝩨2⁄3𐦕
+-Ⴞ.-𝩨2⁄3𐦕; -ⴞ.-𝩨2⁄3𐦕; [B1, V3]; xn----zws.xn---23-pt0a0433lk3jj; ; ;  # -ⴞ.-𝩨2⁄3𐦕
 -ⴞ.-𝩨2⁄3𐦕; ; [B1, V3]; xn----zws.xn---23-pt0a0433lk3jj; ; ;  # -ⴞ.-𝩨2⁄3𐦕
 xn----zws.xn---23-pt0a0433lk3jj; -ⴞ.-𝩨2⁄3𐦕; [B1, V3]; xn----zws.xn---23-pt0a0433lk3jj; ; ;  # -ⴞ.-𝩨2⁄3𐦕
-xn----w1g.xn---23-pt0a0433lk3jj; -Ⴞ.-𝩨2⁄3𐦕; [B1, V3, V6]; xn----w1g.xn---23-pt0a0433lk3jj; ; ;  # -Ⴞ.-𝩨2⁄3𐦕
 -ⴞ.-𝩨⅔𐦕; -ⴞ.-𝩨2⁄3𐦕; [B1, V3]; xn----zws.xn---23-pt0a0433lk3jj; ; ;  # -ⴞ.-𝩨2⁄3𐦕
-󧈯𐹯ૂ｡򖢨𐮁񇼖ᡂ; 󧈯𐹯ૂ.򖢨𐮁񇼖ᡂ; [B5, B6, P1, V6]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ;  # 𐹯ૂ.𐮁ᡂ
-󧈯𐹯ૂ。򖢨𐮁񇼖ᡂ; 󧈯𐹯ૂ.򖢨𐮁񇼖ᡂ; [B5, B6, P1, V6]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ;  # 𐹯ૂ.𐮁ᡂ
-xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; 󧈯𐹯ૂ.򖢨𐮁񇼖ᡂ; [B5, B6, V6]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ;  # 𐹯ૂ.𐮁ᡂ
-ႂ-‍꣪．ꡊ‍񼸳; ႂ-‍꣪.ꡊ‍񼸳; [C2, P1, V5, V6]; xn----gyg250jio7k.xn--1ug8774cri56d; ; xn----gyg3618i.xn--jc9ao4185a; [P1, V5, V6] # ႂ-꣪.ꡊ
-ႂ-‍꣪.ꡊ‍񼸳; ; [C2, P1, V5, V6]; xn----gyg250jio7k.xn--1ug8774cri56d; ; xn----gyg3618i.xn--jc9ao4185a; [P1, V5, V6] # ႂ-꣪.ꡊ
-xn----gyg3618i.xn--jc9ao4185a; ႂ-꣪.ꡊ񼸳; [V5, V6]; xn----gyg3618i.xn--jc9ao4185a; ; ;  # ႂ-꣪.ꡊ
-xn----gyg250jio7k.xn--1ug8774cri56d; ႂ-‍꣪.ꡊ‍񼸳; [C2, V5, V6]; xn----gyg250jio7k.xn--1ug8774cri56d; ; ;  # ႂ-꣪.ꡊ
-۱。≠٨; ۱.≠٨; [B1, P1, V6]; xn--emb.xn--hib334l; ; ;  # ۱.≠٨
-۱。≠٨; ۱.≠٨; [B1, P1, V6]; xn--emb.xn--hib334l; ; ;  # ۱.≠٨
-xn--emb.xn--hib334l; ۱.≠٨; [B1, V6]; xn--emb.xn--hib334l; ; ;  # ۱.≠٨
-𑈵廊.𐠍; ; [V5]; xn--xytw701b.xn--yc9c; ; ;  # 𑈵廊.𐠍
-xn--xytw701b.xn--yc9c; 𑈵廊.𐠍; [V5]; xn--xytw701b.xn--yc9c; ; ;  # 𑈵廊.𐠍
-‍͖-．-Ⴐ١; ‍͖-.-Ⴐ١; [B1, C2, P1, V3, V6]; xn----rgb661t.xn----bqc030f; ; xn----rgb.xn----bqc030f; [B1, P1, V3, V5, V6] # ͖-.-Ⴐ١
-‍͖-.-Ⴐ١; ; [B1, C2, P1, V3, V6]; xn----rgb661t.xn----bqc030f; ; xn----rgb.xn----bqc030f; [B1, P1, V3, V5, V6] # ͖-.-Ⴐ١
-‍͖-.-ⴐ١; ; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; xn----rgb.xn----bqc2280a; [B1, V3, V5] # ͖-.-ⴐ١
-xn----rgb.xn----bqc2280a; ͖-.-ⴐ١; [B1, V3, V5]; xn----rgb.xn----bqc2280a; ; ;  # ͖-.-ⴐ١
-xn----rgb661t.xn----bqc2280a; ‍͖-.-ⴐ١; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; ;  # ͖-.-ⴐ١
-xn----rgb.xn----bqc030f; ͖-.-Ⴐ١; [B1, V3, V5, V6]; xn----rgb.xn----bqc030f; ; ;  # ͖-.-Ⴐ١
-xn----rgb661t.xn----bqc030f; ‍͖-.-Ⴐ١; [B1, C2, V3, V6]; xn----rgb661t.xn----bqc030f; ; ;  # ͖-.-Ⴐ١
-‍͖-．-ⴐ١; ‍͖-.-ⴐ١; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; xn----rgb.xn----bqc2280a; [B1, V3, V5] # ͖-.-ⴐ١
-غ١挏󾯐.-; ; [B1, B2, B3, P1, V3, V6]; xn--5gb2f4205aqi47p.-; ; ;  # غ١挏.-
-xn--5gb2f4205aqi47p.-; غ١挏󾯐.-; [B1, B2, B3, V3, V6]; xn--5gb2f4205aqi47p.-; ; ;  # غ١挏.-
-ۯ｡𐹧𞤽; ۯ.𐹧𞤽; [B1]; xn--cmb.xn--fo0dy848a; ; ;  # ۯ.𐹧𞤽
-ۯ。𐹧𞤽; ۯ.𐹧𞤽; [B1]; xn--cmb.xn--fo0dy848a; ; ;  # ۯ.𐹧𞤽
-ۯ。𐹧𞤛; ۯ.𐹧𞤽; [B1]; xn--cmb.xn--fo0dy848a; ; ;  # ۯ.𐹧𞤽
-xn--cmb.xn--fo0dy848a; ۯ.𐹧𞤽; [B1]; xn--cmb.xn--fo0dy848a; ; ;  # ۯ.𐹧𞤽
-ۯ｡𐹧𞤛; ۯ.𐹧𞤽; [B1]; xn--cmb.xn--fo0dy848a; ; ;  # ۯ.𐹧𞤽
-Ⴞ𶛀𛗻．ᢗ릫; Ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ;  # Ⴞ.ᢗ릫
-Ⴞ𶛀𛗻．ᢗ릫; Ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ;  # Ⴞ.ᢗ릫
-Ⴞ𶛀𛗻.ᢗ릫; ; [P1, V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ;  # Ⴞ.ᢗ릫
-Ⴞ𶛀𛗻.ᢗ릫; Ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ;  # Ⴞ.ᢗ릫
-ⴞ𶛀𛗻.ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
-ⴞ𶛀𛗻.ᢗ릫; ; [P1, V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
-xn--mlj0486jgl2j.xn--hbf6853f; ⴞ𶛀𛗻.ᢗ릫; [V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
-xn--2nd8876sgl2j.xn--hbf6853f; Ⴞ𶛀𛗻.ᢗ릫; [V6]; xn--2nd8876sgl2j.xn--hbf6853f; ; ;  # Ⴞ.ᢗ릫
-ⴞ𶛀𛗻．ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
-ⴞ𶛀𛗻．ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [P1, V6]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
-󠎃󗭞ڷ𐹷｡≯‌᷾; 󠎃󗭞ڷ𐹷.≯‌᷾; [B1, C1, P1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, P1, V6] # ڷ𐹷.≯᷾
-󠎃󗭞ڷ𐹷｡≯‌᷾; 󠎃󗭞ڷ𐹷.≯‌᷾; [B1, C1, P1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, P1, V6] # ڷ𐹷.≯᷾
-󠎃󗭞ڷ𐹷。≯‌᷾; 󠎃󗭞ڷ𐹷.≯‌᷾; [B1, C1, P1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, P1, V6] # ڷ𐹷.≯᷾
-󠎃󗭞ڷ𐹷。≯‌᷾; 󠎃󗭞ڷ𐹷.≯‌᷾; [B1, C1, P1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, P1, V6] # ڷ𐹷.≯᷾
-xn--qkb4516kbi06fg2id.xn--zfg31q; 󠎃󗭞ڷ𐹷.≯᷾; [B1, V6]; xn--qkb4516kbi06fg2id.xn--zfg31q; ; ;  # ڷ𐹷.≯᷾
-xn--qkb4516kbi06fg2id.xn--zfg59fm0c; 󠎃󗭞ڷ𐹷.≯‌᷾; [B1, C1, V6]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; ;  # ڷ𐹷.≯᷾
-ᛎ󠅍󠐕‍｡𐹾𐹪𐻝-; ᛎ󠐕‍.𐹾𐹪𐻝-; [B1, B6, C2, P1, V3, V6]; xn--fxe848bq3411a.xn----q26i2bvu; ; xn--fxe63563p.xn----q26i2bvu; [B1, B6, P1, V3, V6] # ᛎ.𐹾𐹪-
-ᛎ󠅍󠐕‍。𐹾𐹪𐻝-; ᛎ󠐕‍.𐹾𐹪𐻝-; [B1, B6, C2, P1, V3, V6]; xn--fxe848bq3411a.xn----q26i2bvu; ; xn--fxe63563p.xn----q26i2bvu; [B1, B6, P1, V3, V6] # ᛎ.𐹾𐹪-
-xn--fxe63563p.xn----q26i2bvu; ᛎ󠐕.𐹾𐹪𐻝-; [B1, B6, V3, V6]; xn--fxe63563p.xn----q26i2bvu; ; ;  # ᛎ.𐹾𐹪-
-xn--fxe848bq3411a.xn----q26i2bvu; ᛎ󠐕‍.𐹾𐹪𐻝-; [B1, B6, C2, V3, V6]; xn--fxe848bq3411a.xn----q26i2bvu; ; ;  # ᛎ.𐹾𐹪-
+xn----w1g.xn---23-pt0a0433lk3jj; -Ⴞ.-𝩨2⁄3𐦕; [B1, V3, V7]; xn----w1g.xn---23-pt0a0433lk3jj; ; ;  # -Ⴞ.-𝩨2⁄3𐦕
+󧈯𐹯\u0AC2｡򖢨𐮁񇼖ᡂ; 󧈯𐹯\u0AC2.򖢨𐮁񇼖ᡂ; [B5, B6, V7]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ;  # 𐹯ૂ.𐮁ᡂ
+󧈯𐹯\u0AC2。򖢨𐮁񇼖ᡂ; 󧈯𐹯\u0AC2.򖢨𐮁񇼖ᡂ; [B5, B6, V7]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ;  # 𐹯ૂ.𐮁ᡂ
+xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; 󧈯𐹯\u0AC2.򖢨𐮁񇼖ᡂ; [B5, B6, V7]; xn--bfc7604kv8m3g.xn--17e5565jl7zw4h16a; ; ;  # 𐹯ૂ.𐮁ᡂ
+\u1082-\u200D\uA8EA．ꡊ\u200D񼸳; \u1082-\u200D\uA8EA.ꡊ\u200D񼸳; [C2, V6, V7]; xn----gyg250jio7k.xn--1ug8774cri56d; ; xn----gyg3618i.xn--jc9ao4185a; [V6, V7] # ႂ-꣪.ꡊ
+\u1082-\u200D\uA8EA.ꡊ\u200D񼸳; ; [C2, V6, V7]; xn----gyg250jio7k.xn--1ug8774cri56d; ; xn----gyg3618i.xn--jc9ao4185a; [V6, V7] # ႂ-꣪.ꡊ
+xn----gyg3618i.xn--jc9ao4185a; \u1082-\uA8EA.ꡊ񼸳; [V6, V7]; xn----gyg3618i.xn--jc9ao4185a; ; ;  # ႂ-꣪.ꡊ
+xn----gyg250jio7k.xn--1ug8774cri56d; \u1082-\u200D\uA8EA.ꡊ\u200D񼸳; [C2, V6, V7]; xn----gyg250jio7k.xn--1ug8774cri56d; ; ;  # ႂ-꣪.ꡊ
+۱。≠\u0668; ۱.≠\u0668; [B1]; xn--emb.xn--hib334l; ; ;  # ۱.≠٨
+۱。=\u0338\u0668; ۱.≠\u0668; [B1]; xn--emb.xn--hib334l; ; ;  # ۱.≠٨
+xn--emb.xn--hib334l; ۱.≠\u0668; [B1]; xn--emb.xn--hib334l; ; ;  # ۱.≠٨
+𑈵廊.𐠍; ; [V6]; xn--xytw701b.xn--yc9c; ; ;  # 𑈵廊.𐠍
+xn--xytw701b.xn--yc9c; 𑈵廊.𐠍; [V6]; xn--xytw701b.xn--yc9c; ; ;  # 𑈵廊.𐠍
+\u200D\u0356-．-Ⴐ\u0661; \u200D\u0356-.-ⴐ\u0661; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; xn----rgb.xn----bqc2280a; [B1, V3, V6] # ͖-.-ⴐ١
+\u200D\u0356-.-Ⴐ\u0661; \u200D\u0356-.-ⴐ\u0661; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; xn----rgb.xn----bqc2280a; [B1, V3, V6] # ͖-.-ⴐ١
+\u200D\u0356-.-ⴐ\u0661; ; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; xn----rgb.xn----bqc2280a; [B1, V3, V6] # ͖-.-ⴐ١
+xn----rgb.xn----bqc2280a; \u0356-.-ⴐ\u0661; [B1, V3, V6]; xn----rgb.xn----bqc2280a; ; ;  # ͖-.-ⴐ١
+xn----rgb661t.xn----bqc2280a; \u200D\u0356-.-ⴐ\u0661; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; ;  # ͖-.-ⴐ١
+\u200D\u0356-．-ⴐ\u0661; \u200D\u0356-.-ⴐ\u0661; [B1, C2, V3]; xn----rgb661t.xn----bqc2280a; ; xn----rgb.xn----bqc2280a; [B1, V3, V6] # ͖-.-ⴐ١
+xn----rgb.xn----bqc030f; \u0356-.-Ⴐ\u0661; [B1, V3, V6, V7]; xn----rgb.xn----bqc030f; ; ;  # ͖-.-Ⴐ١
+xn----rgb661t.xn----bqc030f; \u200D\u0356-.-Ⴐ\u0661; [B1, C2, V3, V7]; xn----rgb661t.xn----bqc030f; ; ;  # ͖-.-Ⴐ١
+\u063A\u0661挏󾯐.-; ; [B1, B2, B3, V3, V7]; xn--5gb2f4205aqi47p.-; ; ;  # غ١挏.-
+xn--5gb2f4205aqi47p.-; \u063A\u0661挏󾯐.-; [B1, B2, B3, V3, V7]; xn--5gb2f4205aqi47p.-; ; ;  # غ١挏.-
+\u06EF｡𐹧𞤽; \u06EF.𐹧𞤽; [B1]; xn--cmb.xn--fo0dy848a; ; ;  # ۯ.𐹧𞤽
+\u06EF。𐹧𞤽; \u06EF.𐹧𞤽; [B1]; xn--cmb.xn--fo0dy848a; ; ;  # ۯ.𐹧𞤽
+\u06EF。𐹧𞤛; \u06EF.𐹧𞤽; [B1]; xn--cmb.xn--fo0dy848a; ; ;  # ۯ.𐹧𞤽
+xn--cmb.xn--fo0dy848a; \u06EF.𐹧𞤽; [B1]; xn--cmb.xn--fo0dy848a; ; ;  # ۯ.𐹧𞤽
+\u06EF｡𐹧𞤛; \u06EF.𐹧𞤽; [B1]; xn--cmb.xn--fo0dy848a; ; ;  # ۯ.𐹧𞤽
+Ⴞ𶛀𛗻．ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [V7]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
+Ⴞ𶛀𛗻．ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [V7]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
+Ⴞ𶛀𛗻.ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [V7]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
+Ⴞ𶛀𛗻.ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [V7]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
+ⴞ𶛀𛗻.ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [V7]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
+ⴞ𶛀𛗻.ᢗ릫; ; [V7]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
+xn--mlj0486jgl2j.xn--hbf6853f; ⴞ𶛀𛗻.ᢗ릫; [V7]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
+ⴞ𶛀𛗻．ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [V7]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
+ⴞ𶛀𛗻．ᢗ릫; ⴞ𶛀𛗻.ᢗ릫; [V7]; xn--mlj0486jgl2j.xn--hbf6853f; ; ;  # ⴞ.ᢗ릫
+xn--2nd8876sgl2j.xn--hbf6853f; Ⴞ𶛀𛗻.ᢗ릫; [V7]; xn--2nd8876sgl2j.xn--hbf6853f; ; ;  # Ⴞ.ᢗ릫
+󠎃󗭞\u06B7𐹷｡≯\u200C\u1DFE; 󠎃󗭞\u06B7𐹷.≯\u200C\u1DFE; [B1, C1, V7]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, V7] # ڷ𐹷.≯᷾
+󠎃󗭞\u06B7𐹷｡>\u0338\u200C\u1DFE; 󠎃󗭞\u06B7𐹷.≯\u200C\u1DFE; [B1, C1, V7]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, V7] # ڷ𐹷.≯᷾
+󠎃󗭞\u06B7𐹷。≯\u200C\u1DFE; 󠎃󗭞\u06B7𐹷.≯\u200C\u1DFE; [B1, C1, V7]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, V7] # ڷ𐹷.≯᷾
+󠎃󗭞\u06B7𐹷。>\u0338\u200C\u1DFE; 󠎃󗭞\u06B7𐹷.≯\u200C\u1DFE; [B1, C1, V7]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; xn--qkb4516kbi06fg2id.xn--zfg31q; [B1, V7] # ڷ𐹷.≯᷾
+xn--qkb4516kbi06fg2id.xn--zfg31q; 󠎃󗭞\u06B7𐹷.≯\u1DFE; [B1, V7]; xn--qkb4516kbi06fg2id.xn--zfg31q; ; ;  # ڷ𐹷.≯᷾
+xn--qkb4516kbi06fg2id.xn--zfg59fm0c; 󠎃󗭞\u06B7𐹷.≯\u200C\u1DFE; [B1, C1, V7]; xn--qkb4516kbi06fg2id.xn--zfg59fm0c; ; ;  # ڷ𐹷.≯᷾
+ᛎ󠅍󠐕\u200D｡𐹾𐹪𐻝-; ᛎ󠐕\u200D.𐹾𐹪𐻝-; [B1, B6, C2, V3, V7]; xn--fxe848bq3411a.xn----q26i2bvu; ; xn--fxe63563p.xn----q26i2bvu; [B1, B6, V3, V7] # ᛎ.𐹾𐹪-
+ᛎ󠅍󠐕\u200D。𐹾𐹪𐻝-; ᛎ󠐕\u200D.𐹾𐹪𐻝-; [B1, B6, C2, V3, V7]; xn--fxe848bq3411a.xn----q26i2bvu; ; xn--fxe63563p.xn----q26i2bvu; [B1, B6, V3, V7] # ᛎ.𐹾𐹪-
+xn--fxe63563p.xn----q26i2bvu; ᛎ󠐕.𐹾𐹪𐻝-; [B1, B6, V3, V7]; xn--fxe63563p.xn----q26i2bvu; ; ;  # ᛎ.𐹾𐹪-
+xn--fxe848bq3411a.xn----q26i2bvu; ᛎ󠐕\u200D.𐹾𐹪𐻝-; [B1, B6, C2, V3, V7]; xn--fxe848bq3411a.xn----q26i2bvu; ; ;  # ᛎ.𐹾𐹪-
 𐹶.𐫂; ; [B1]; xn--uo0d.xn--rw9c; ; ;  # 𐹶.𐫂
 xn--uo0d.xn--rw9c; 𐹶.𐫂; [B1]; xn--uo0d.xn--rw9c; ; ;  # 𐹶.𐫂
-ß‍်｡⒈; ß‍်.⒈; [C2, P1, V6]; xn--zca679eh2l.xn--tsh; ; xn--ss-f4j.xn--tsh; [P1, V6] # ß်.⒈
-ß‍်。1.; ß‍်.1.; [C2]; xn--zca679eh2l.1.; ; xn--ss-f4j.1.; [] # ß်.1.
-SS‍်。1.; ss‍်.1.; [C2]; xn--ss-f4j585j.1.; ; xn--ss-f4j.1.; [] # ss်.1.
-ss‍်。1.; ss‍်.1.; [C2]; xn--ss-f4j585j.1.; ; xn--ss-f4j.1.; [] # ss်.1.
-Ss‍်。1.; ss‍်.1.; [C2]; xn--ss-f4j585j.1.; ; xn--ss-f4j.1.; [] # ss်.1.
-xn--ss-f4j.1.; ss်.1.; ; xn--ss-f4j.1.; ; ;  # ss်.1.
-ss်.1.; ; ; xn--ss-f4j.1.; ; ;  # ss်.1.
-SS်.1.; ss်.1.; ; xn--ss-f4j.1.; ; ;  # ss်.1.
-Ss်.1.; ss်.1.; ; xn--ss-f4j.1.; ; ;  # ss်.1.
-xn--ss-f4j585j.1.; ss‍်.1.; [C2]; xn--ss-f4j585j.1.; ; ;  # ss်.1.
-xn--zca679eh2l.1.; ß‍်.1.; [C2]; xn--zca679eh2l.1.; ; ;  # ß်.1.
-SS‍်｡⒈; ss‍်.⒈; [C2, P1, V6]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [P1, V6] # ss်.⒈
-ss‍်｡⒈; ss‍်.⒈; [C2, P1, V6]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [P1, V6] # ss်.⒈
-Ss‍်｡⒈; ss‍်.⒈; [C2, P1, V6]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [P1, V6] # ss်.⒈
-xn--ss-f4j.xn--tsh; ss်.⒈; [V6]; xn--ss-f4j.xn--tsh; ; ;  # ss်.⒈
-xn--ss-f4j585j.xn--tsh; ss‍်.⒈; [C2, V6]; xn--ss-f4j585j.xn--tsh; ; ;  # ss်.⒈
-xn--zca679eh2l.xn--tsh; ß‍်.⒈; [C2, V6]; xn--zca679eh2l.xn--tsh; ; ;  # ß်.⒈
-୍‌𙶵𞻘。‍; ୍‌𙶵𞻘.‍; [B1, C2, P1, V5, V6]; xn--9ic637hz82z32jc.xn--1ug; ; xn--9ic6417rn4xb.; [B1, P1, V5, V6] # ୍.
-xn--9ic6417rn4xb.; ୍𙶵𞻘.; [B1, V5, V6]; xn--9ic6417rn4xb.; ; ;  # ୍.
-xn--9ic637hz82z32jc.xn--1ug; ୍‌𙶵𞻘.‍; [B1, C2, V5, V6]; xn--9ic637hz82z32jc.xn--1ug; ; ;  # ୍.
-𐮅｡ڼ🁕; 𐮅.ڼ🁕; [B3]; xn--c29c.xn--vkb8871w; ; ;  # 𐮅.ڼ🁕
-𐮅。ڼ🁕; 𐮅.ڼ🁕; [B3]; xn--c29c.xn--vkb8871w; ; ;  # 𐮅.ڼ🁕
-xn--c29c.xn--vkb8871w; 𐮅.ڼ🁕; [B3]; xn--c29c.xn--vkb8871w; ; ;  # 𐮅.ڼ🁕
-ؠ្。𐫔󠀧‌𑈵; ؠ្.𐫔󠀧‌𑈵; [B2, B3, C1, P1, V6]; xn--fgb471g.xn--0ug9853g7verp838a; ; xn--fgb471g.xn--9w9c29jw3931a; [B2, B3, P1, V6] # ؠ្.𐫔𑈵
-xn--fgb471g.xn--9w9c29jw3931a; ؠ្.𐫔󠀧𑈵; [B2, B3, V6]; xn--fgb471g.xn--9w9c29jw3931a; ; ;  # ؠ្.𐫔𑈵
-xn--fgb471g.xn--0ug9853g7verp838a; ؠ្.𐫔󠀧‌𑈵; [B2, B3, C1, V6]; xn--fgb471g.xn--0ug9853g7verp838a; ; ;  # ؠ្.𐫔𑈵
-񋉕.𞣕𞤊; 񋉕.𞣕𞤬; [B1, P1, V5, V6]; xn--tf5w.xn--2b6hof; ; ;  # .𞣕𞤬
-񋉕.𞣕𞤬; ; [B1, P1, V5, V6]; xn--tf5w.xn--2b6hof; ; ;  # .𞣕𞤬
-xn--tf5w.xn--2b6hof; 񋉕.𞣕𞤬; [B1, V5, V6]; xn--tf5w.xn--2b6hof; ; ;  # .𞣕𞤬
-ی𐨿．ß྄𑍬; ی𐨿.ß྄𑍬; ; xn--clb2593k.xn--zca216edt0r; ; xn--clb2593k.xn--ss-toj6092t;  # ی𐨿.ß྄𑍬
-ی𐨿.ß྄𑍬; ; ; xn--clb2593k.xn--zca216edt0r; ; xn--clb2593k.xn--ss-toj6092t;  # ی𐨿.ß྄𑍬
-ی𐨿.SS྄𑍬; ی𐨿.ss྄𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
-ی𐨿.ss྄𑍬; ; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
-xn--clb2593k.xn--ss-toj6092t; ی𐨿.ss྄𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
-xn--clb2593k.xn--zca216edt0r; ی𐨿.ß྄𑍬; ; xn--clb2593k.xn--zca216edt0r; ; ;  # ی𐨿.ß྄𑍬
-ی𐨿．SS྄𑍬; ی𐨿.ss྄𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
-ی𐨿．ss྄𑍬; ی𐨿.ss྄𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
-ی𐨿.Ss྄𑍬; ی𐨿.ss྄𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
-ی𐨿．Ss྄𑍬; ی𐨿.ss྄𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
-𝟠≮‌｡󠅱឴; 8≮‌.឴; [C1, P1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [P1, V5, V6] # 8≮.
-𝟠≮‌｡󠅱឴; 8≮‌.឴; [C1, P1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [P1, V5, V6] # 8≮.
-8≮‌。󠅱឴; 8≮‌.឴; [C1, P1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [P1, V5, V6] # 8≮.
-8≮‌。󠅱឴; 8≮‌.឴; [C1, P1, V5, V6]; xn--8-sgn10i.xn--z3e; ; xn--8-ngo.xn--z3e; [P1, V5, V6] # 8≮.
-xn--8-ngo.xn--z3e; 8≮.឴; [V5, V6]; xn--8-ngo.xn--z3e; ; ;  # 8≮.
-xn--8-sgn10i.xn--z3e; 8≮‌.឴; [C1, V5, V6]; xn--8-sgn10i.xn--z3e; ; ;  # 8≮.
-ᢕ≯︒񄂯．Ⴀ; ᢕ≯︒񄂯.Ⴀ; [P1, V6]; xn--fbf851cq98poxw1a.xn--7md; ; ;  # ᢕ≯︒.Ⴀ
-ᢕ≯︒񄂯．Ⴀ; ᢕ≯︒񄂯.Ⴀ; [P1, V6]; xn--fbf851cq98poxw1a.xn--7md; ; ;  # ᢕ≯︒.Ⴀ
-ᢕ≯。񄂯.Ⴀ; ᢕ≯.񄂯.Ⴀ; [P1, V6]; xn--fbf851c.xn--ko1u.xn--7md; ; ;  # ᢕ≯..Ⴀ
-ᢕ≯。񄂯.Ⴀ; ᢕ≯.񄂯.Ⴀ; [P1, V6]; xn--fbf851c.xn--ko1u.xn--7md; ; ;  # ᢕ≯..Ⴀ
-ᢕ≯。񄂯.ⴀ; ᢕ≯.񄂯.ⴀ; [P1, V6]; xn--fbf851c.xn--ko1u.xn--rkj; ; ;  # ᢕ≯..ⴀ
-ᢕ≯。񄂯.ⴀ; ᢕ≯.񄂯.ⴀ; [P1, V6]; xn--fbf851c.xn--ko1u.xn--rkj; ; ;  # ᢕ≯..ⴀ
-xn--fbf851c.xn--ko1u.xn--rkj; ᢕ≯.񄂯.ⴀ; [V6]; xn--fbf851c.xn--ko1u.xn--rkj; ; ;  # ᢕ≯..ⴀ
-xn--fbf851c.xn--ko1u.xn--7md; ᢕ≯.񄂯.Ⴀ; [V6]; xn--fbf851c.xn--ko1u.xn--7md; ; ;  # ᢕ≯..Ⴀ
-ᢕ≯︒񄂯．ⴀ; ᢕ≯︒񄂯.ⴀ; [P1, V6]; xn--fbf851cq98poxw1a.xn--rkj; ; ;  # ᢕ≯︒.ⴀ
-ᢕ≯︒񄂯．ⴀ; ᢕ≯︒񄂯.ⴀ; [P1, V6]; xn--fbf851cq98poxw1a.xn--rkj; ; ;  # ᢕ≯︒.ⴀ
-xn--fbf851cq98poxw1a.xn--rkj; ᢕ≯︒񄂯.ⴀ; [V6]; xn--fbf851cq98poxw1a.xn--rkj; ; ;  # ᢕ≯︒.ⴀ
-xn--fbf851cq98poxw1a.xn--7md; ᢕ≯︒񄂯.Ⴀ; [V6]; xn--fbf851cq98poxw1a.xn--7md; ; ;  # ᢕ≯︒.Ⴀ
-ྟ．-ࠪ; ྟ.-ࠪ; [V3, V5]; xn--vfd.xn----fhd; ; ;  # ྟ.-ࠪ
-ྟ.-ࠪ; ; [V3, V5]; xn--vfd.xn----fhd; ; ;  # ྟ.-ࠪ
-xn--vfd.xn----fhd; ྟ.-ࠪ; [V3, V5]; xn--vfd.xn----fhd; ; ;  # ྟ.-ࠪ
-ᵬ󠆠．핒⒒⒈􈄦; ᵬ.핒⒒⒈􈄦; [P1, V6]; xn--tbg.xn--tsht7586kyts9l; ; ;  # ᵬ.핒⒒⒈
-ᵬ󠆠．핒⒒⒈􈄦; ᵬ.핒⒒⒈􈄦; [P1, V6]; xn--tbg.xn--tsht7586kyts9l; ; ;  # ᵬ.핒⒒⒈
-ᵬ󠆠.핒11.1.􈄦; ᵬ.핒11.1.􈄦; [P1, V6]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ;  # ᵬ.핒11.1.
-ᵬ󠆠.핒11.1.􈄦; ᵬ.핒11.1.􈄦; [P1, V6]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ;  # ᵬ.핒11.1.
-xn--tbg.xn--11-5o7k.1.xn--k469f; ᵬ.핒11.1.􈄦; [V6]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ;  # ᵬ.핒11.1.
-xn--tbg.xn--tsht7586kyts9l; ᵬ.핒⒒⒈􈄦; [V6]; xn--tbg.xn--tsht7586kyts9l; ; ;  # ᵬ.핒⒒⒈
-ς𑓂𐋢．٨; ς𑓂𐋢.٨; [B1]; xn--3xa8371khhl.xn--hib; ; xn--4xa6371khhl.xn--hib;  # ς𑓂𐋢.٨
-ς𑓂𐋢.٨; ; [B1]; xn--3xa8371khhl.xn--hib; ; xn--4xa6371khhl.xn--hib;  # ς𑓂𐋢.٨
-Σ𑓂𐋢.٨; σ𑓂𐋢.٨; [B1]; xn--4xa6371khhl.xn--hib; ; ;  # σ𑓂𐋢.٨
-σ𑓂𐋢.٨; ; [B1]; xn--4xa6371khhl.xn--hib; ; ;  # σ𑓂𐋢.٨
-xn--4xa6371khhl.xn--hib; σ𑓂𐋢.٨; [B1]; xn--4xa6371khhl.xn--hib; ; ;  # σ𑓂𐋢.٨
-xn--3xa8371khhl.xn--hib; ς𑓂𐋢.٨; [B1]; xn--3xa8371khhl.xn--hib; ; ;  # ς𑓂𐋢.٨
-Σ𑓂𐋢．٨; σ𑓂𐋢.٨; [B1]; xn--4xa6371khhl.xn--hib; ; ;  # σ𑓂𐋢.٨
-σ𑓂𐋢．٨; σ𑓂𐋢.٨; [B1]; xn--4xa6371khhl.xn--hib; ; ;  # σ𑓂𐋢.٨
-꥓‌𐋻‍.ⷸ𞿄𐹲; ; [B1, B6, C2, P1, V5, V6]; xn--0ugc8356he76c.xn--urju692efj0f; ; xn--3j9a531o.xn--urju692efj0f; [B1, P1, V5, V6] # ꥓𐋻.ⷸ𐹲
-xn--3j9a531o.xn--urju692efj0f; ꥓𐋻.ⷸ𞿄𐹲; [B1, V5, V6]; xn--3j9a531o.xn--urju692efj0f; ; ;  # ꥓𐋻.ⷸ𐹲
-xn--0ugc8356he76c.xn--urju692efj0f; ꥓‌𐋻‍.ⷸ𞿄𐹲; [B1, B6, C2, V5, V6]; xn--0ugc8356he76c.xn--urju692efj0f; ; ;  # ꥓𐋻.ⷸ𐹲
-⊼。񪧖ڕ; ⊼.񪧖ڕ; [B1, B5, B6, P1, V6]; xn--ofh.xn--rjb13118f; ; ;  # ⊼.ڕ
-xn--ofh.xn--rjb13118f; ⊼.񪧖ڕ; [B1, B5, B6, V6]; xn--ofh.xn--rjb13118f; ; ;  # ⊼.ڕ
-𐯬񖋔。󜳥; 𐯬񖋔.󜳥; [B2, B3, P1, V6]; xn--949co370q.xn--7g25e; ; ;  # .
-xn--949co370q.xn--7g25e; 𐯬񖋔.󜳥; [B2, B3, V6]; xn--949co370q.xn--7g25e; ; ;  # .
-؁𑍧ߝ。ς򬍘🀞឵; ؁𑍧ߝ.ς򬍘🀞឵; [B1, B6, P1, V6]; xn--jfb66gt010c.xn--3xa823h9p95ars26d; ; xn--jfb66gt010c.xn--4xa623h9p95ars26d;  # 𑍧ߝ.ς🀞
-؁𑍧ߝ。Σ򬍘🀞឵; ؁𑍧ߝ.σ򬍘🀞឵; [B1, B6, P1, V6]; xn--jfb66gt010c.xn--4xa623h9p95ars26d; ; ;  # 𑍧ߝ.σ🀞
-؁𑍧ߝ。σ򬍘🀞឵; ؁𑍧ߝ.σ򬍘🀞឵; [B1, B6, P1, V6]; xn--jfb66gt010c.xn--4xa623h9p95ars26d; ; ;  # 𑍧ߝ.σ🀞
-xn--jfb66gt010c.xn--4xa623h9p95ars26d; ؁𑍧ߝ.σ򬍘🀞឵; [B1, B6, V6]; xn--jfb66gt010c.xn--4xa623h9p95ars26d; ; ;  # 𑍧ߝ.σ🀞
-xn--jfb66gt010c.xn--3xa823h9p95ars26d; ؁𑍧ߝ.ς򬍘🀞឵; [B1, B6, V6]; xn--jfb66gt010c.xn--3xa823h9p95ars26d; ; ;  # 𑍧ߝ.ς🀞
--𐳲ن󠺐。꯭𝟥; -𐳲ن󠺐.꯭3; [B1, P1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ;  # -𐳲ن.꯭3
--𐳲ن󠺐。꯭3; -𐳲ن󠺐.꯭3; [B1, P1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ;  # -𐳲ن.꯭3
--𐲲ن󠺐。꯭3; -𐳲ن󠺐.꯭3; [B1, P1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ;  # -𐳲ن.꯭3
-xn----roc5482rek10i.xn--3-zw5e; -𐳲ن󠺐.꯭3; [B1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ;  # -𐳲ن.꯭3
--𐲲ن󠺐。꯭𝟥; -𐳲ن󠺐.꯭3; [B1, P1, V3, V5, V6]; xn----roc5482rek10i.xn--3-zw5e; ; ;  # -𐳲ن.꯭3
-‌󠴦｡񲨕≮𐦜; ‌󠴦.񲨕≮𐦜; [B1, B5, B6, C1, P1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, P1, V6] # .≮𐦜
-‌󠴦｡񲨕≮𐦜; ‌󠴦.񲨕≮𐦜; [B1, B5, B6, C1, P1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, P1, V6] # .≮𐦜
-‌󠴦。񲨕≮𐦜; ‌󠴦.񲨕≮𐦜; [B1, B5, B6, C1, P1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, P1, V6] # .≮𐦜
-‌󠴦。񲨕≮𐦜; ‌󠴦.񲨕≮𐦜; [B1, B5, B6, C1, P1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, P1, V6] # .≮𐦜
-xn--6v56e.xn--gdhz712gzlr6b; 󠴦.񲨕≮𐦜; [B1, B5, B6, V6]; xn--6v56e.xn--gdhz712gzlr6b; ; ;  # .≮𐦜
-xn--0ug22251l.xn--gdhz712gzlr6b; ‌󠴦.񲨕≮𐦜; [B1, B5, B6, C1, V6]; xn--0ug22251l.xn--gdhz712gzlr6b; ; ;  # .≮𐦜
-⒈✌򟬟．𝟡񠱣; ⒈✌򟬟.9񠱣; [P1, V6]; xn--tsh24g49550b.xn--9-o706d; ; ;  # ⒈✌.9
-1.✌򟬟.9񠱣; ; [P1, V6]; 1.xn--7bi44996f.xn--9-o706d; ; ;  # 1.✌.9
-1.xn--7bi44996f.xn--9-o706d; 1.✌򟬟.9񠱣; [V6]; 1.xn--7bi44996f.xn--9-o706d; ; ;  # 1.✌.9
-xn--tsh24g49550b.xn--9-o706d; ⒈✌򟬟.9񠱣; [V6]; xn--tsh24g49550b.xn--9-o706d; ; ;  # ⒈✌.9
-𑆾𞤬𐮆.٦ᷔ; ; [B1, V5]; xn--d29c79hf98r.xn--fib011j; ; ;  # 𑆾𞤬𐮆.٦ᷔ
-𑆾𞤊𐮆.٦ᷔ; 𑆾𞤬𐮆.٦ᷔ; [B1, V5]; xn--d29c79hf98r.xn--fib011j; ; ;  # 𑆾𞤬𐮆.٦ᷔ
-xn--d29c79hf98r.xn--fib011j; 𑆾𞤬𐮆.٦ᷔ; [B1, V5]; xn--d29c79hf98r.xn--fib011j; ; ;  # 𑆾𞤬𐮆.٦ᷔ
-ς．꧀꣄; ς.꧀꣄; [V5]; xn--3xa.xn--0f9ars; ; xn--4xa.xn--0f9ars;  # ς.꧀꣄
-ς.꧀꣄; ; [V5]; xn--3xa.xn--0f9ars; ; xn--4xa.xn--0f9ars;  # ς.꧀꣄
-Σ.꧀꣄; σ.꧀꣄; [V5]; xn--4xa.xn--0f9ars; ; ;  # σ.꧀꣄
-σ.꧀꣄; ; [V5]; xn--4xa.xn--0f9ars; ; ;  # σ.꧀꣄
-xn--4xa.xn--0f9ars; σ.꧀꣄; [V5]; xn--4xa.xn--0f9ars; ; ;  # σ.꧀꣄
-xn--3xa.xn--0f9ars; ς.꧀꣄; [V5]; xn--3xa.xn--0f9ars; ; ;  # ς.꧀꣄
-Σ．꧀꣄; σ.꧀꣄; [V5]; xn--4xa.xn--0f9ars; ; ;  # σ.꧀꣄
-σ．꧀꣄; σ.꧀꣄; [V5]; xn--4xa.xn--0f9ars; ; ;  # σ.꧀꣄
-𑰶‌≯𐳐．࡛; 𑰶‌≯𐳐.࡛; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯𐳐.࡛
-𑰶‌≯𐳐．࡛; 𑰶‌≯𐳐.࡛; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯𐳐.࡛
-𑰶‌≯𐳐.࡛; ; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯𐳐.࡛
-𑰶‌≯𐳐.࡛; 𑰶‌≯𐳐.࡛; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯𐳐.࡛
-𑰶‌≯𐲐.࡛; 𑰶‌≯𐳐.࡛; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯𐳐.࡛
-𑰶‌≯𐲐.࡛; 𑰶‌≯𐳐.࡛; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯𐳐.࡛
-xn--hdhz343g3wj.xn--qwb; 𑰶≯𐳐.࡛; [B1, B3, B6, V5, V6]; xn--hdhz343g3wj.xn--qwb; ; ;  # 𑰶≯𐳐.࡛
-xn--0ug06g7697ap4ma.xn--qwb; 𑰶‌≯𐳐.࡛; [B1, B3, B6, C1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; ;  # 𑰶≯𐳐.࡛
-𑰶‌≯𐲐．࡛; 𑰶‌≯𐳐.࡛; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯𐳐.࡛
-𑰶‌≯𐲐．࡛; 𑰶‌≯𐳐.࡛; [B1, B3, B6, C1, P1, V5, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, B3, B6, P1, V5, V6] # 𑰶≯𐳐.࡛
-羚｡≯; 羚.≯; [P1, V6]; xn--xt0a.xn--hdh; ; ;  # 羚.≯
-羚｡≯; 羚.≯; [P1, V6]; xn--xt0a.xn--hdh; ; ;  # 羚.≯
-羚。≯; 羚.≯; [P1, V6]; xn--xt0a.xn--hdh; ; ;  # 羚.≯
-羚。≯; 羚.≯; [P1, V6]; xn--xt0a.xn--hdh; ; ;  # 羚.≯
-xn--xt0a.xn--hdh; 羚.≯; [V6]; xn--xt0a.xn--hdh; ; ;  # 羚.≯
-𑓂᝙．ࢨ; 𑓂᝙.ࢨ; [B1, P1, V5, V6]; xn--e1e9580k.xn--xyb; ; ;  # 𑓂.ࢨ
-𑓂᝙.ࢨ; ; [B1, P1, V5, V6]; xn--e1e9580k.xn--xyb; ; ;  # 𑓂.ࢨ
-xn--e1e9580k.xn--xyb; 𑓂᝙.ࢨ; [B1, V5, V6]; xn--e1e9580k.xn--xyb; ; ;  # 𑓂.ࢨ
-󨣿󠇀‍｡٣ҠჀ𝟑; 󨣿‍.٣ҡჀ3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36kixu; ; xn--1r19e.xn--3-ozb36kixu; [B1, P1, V6] # .٣ҡჀ3
-󨣿󠇀‍。٣ҠჀ3; 󨣿‍.٣ҡჀ3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36kixu; ; xn--1r19e.xn--3-ozb36kixu; [B1, P1, V6] # .٣ҡჀ3
-󨣿󠇀‍。٣ҡⴠ3; 󨣿‍.٣ҡⴠ3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, P1, V6] # .٣ҡⴠ3
-xn--1r19e.xn--3-ozb36ko13f; 󨣿.٣ҡⴠ3; [B1, V6]; xn--1r19e.xn--3-ozb36ko13f; ; ;  # .٣ҡⴠ3
-xn--1ug89936l.xn--3-ozb36ko13f; 󨣿‍.٣ҡⴠ3; [B1, B6, C2, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; ;  # .٣ҡⴠ3
-xn--1r19e.xn--3-ozb36kixu; 󨣿.٣ҡჀ3; [B1, V6]; xn--1r19e.xn--3-ozb36kixu; ; ;  # .٣ҡჀ3
-xn--1ug89936l.xn--3-ozb36kixu; 󨣿‍.٣ҡჀ3; [B1, B6, C2, V6]; xn--1ug89936l.xn--3-ozb36kixu; ; ;  # .٣ҡჀ3
-󨣿󠇀‍｡٣ҡⴠ𝟑; 󨣿‍.٣ҡⴠ3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, P1, V6] # .٣ҡⴠ3
-󨣿󠇀‍。٣Ҡⴠ3; 󨣿‍.٣ҡⴠ3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, P1, V6] # .٣ҡⴠ3
-󨣿󠇀‍｡٣Ҡⴠ𝟑; 󨣿‍.٣ҡⴠ3; [B1, B6, C2, P1, V6]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, P1, V6] # .٣ҡⴠ3
-ᡷ。𐹢࣠; ᡷ.𐹢࣠; [B1]; xn--k9e.xn--j0b5005k; ; ;  # ᡷ.𐹢࣠
-xn--k9e.xn--j0b5005k; ᡷ.𐹢࣠; [B1]; xn--k9e.xn--j0b5005k; ; ;  # ᡷ.𐹢࣠
-򕮇᯳｡٦񗜼្ß; 򕮇᯳.٦񗜼្ß; [B1, P1, V6]; xn--1zf58212h.xn--zca34zk4qx711k; ; xn--1zf58212h.xn--ss-pyd459o3258m;  # ᯳.٦្ß
-򕮇᯳。٦񗜼្ß; 򕮇᯳.٦񗜼្ß; [B1, P1, V6]; xn--1zf58212h.xn--zca34zk4qx711k; ; xn--1zf58212h.xn--ss-pyd459o3258m;  # ᯳.٦្ß
-򕮇᯳。٦񗜼្SS; 򕮇᯳.٦񗜼្ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
-򕮇᯳。٦񗜼្ss; 򕮇᯳.٦񗜼្ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
-򕮇᯳。٦񗜼្Ss; 򕮇᯳.٦񗜼្ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
-xn--1zf58212h.xn--ss-pyd459o3258m; 򕮇᯳.٦񗜼្ss; [B1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
-xn--1zf58212h.xn--zca34zk4qx711k; 򕮇᯳.٦񗜼្ß; [B1, V6]; xn--1zf58212h.xn--zca34zk4qx711k; ; ;  # ᯳.٦្ß
-򕮇᯳｡٦񗜼្SS; 򕮇᯳.٦񗜼្ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
-򕮇᯳｡٦񗜼្ss; 򕮇᯳.٦񗜼្ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
-򕮇᯳｡٦񗜼្Ss; 򕮇᯳.٦񗜼្ss; [B1, P1, V6]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
-٤򤽎𑲛.󠔢︒≠; ; [B1, P1, V6]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ;  # ٤𑲛.︒≠
-٤򤽎𑲛.󠔢︒≠; ٤򤽎𑲛.󠔢︒≠; [B1, P1, V6]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ;  # ٤𑲛.︒≠
-٤򤽎𑲛.󠔢。≠; ٤򤽎𑲛.󠔢.≠; [B1, P1, V6]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ;  # ٤𑲛..≠
-٤򤽎𑲛.󠔢。≠; ٤򤽎𑲛.󠔢.≠; [B1, P1, V6]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ;  # ٤𑲛..≠
-xn--dib0653l2i02d.xn--k736e.xn--1ch; ٤򤽎𑲛.󠔢.≠; [B1, V6]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ;  # ٤𑲛..≠
-xn--dib0653l2i02d.xn--1ch7467f14u4g; ٤򤽎𑲛.󠔢︒≠; [B1, V6]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ;  # ٤𑲛.︒≠
-➆񷧕ỗ⒈．򑬒񡘮࡛𝟫; ➆񷧕ỗ⒈.򑬒񡘮࡛9; [P1, V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ;  # ➆ỗ⒈.࡛9
-➆񷧕ỗ⒈．򑬒񡘮࡛𝟫; ➆񷧕ỗ⒈.򑬒񡘮࡛9; [P1, V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ;  # ➆ỗ⒈.࡛9
-➆񷧕ỗ1..򑬒񡘮࡛9; ; [P1, V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [P1, V6, A4_2]; ;  # ➆ỗ1..࡛9
-➆񷧕ỗ1..򑬒񡘮࡛9; ➆񷧕ỗ1..򑬒񡘮࡛9; [P1, V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [P1, V6, A4_2]; ;  # ➆ỗ1..࡛9
-➆񷧕Ỗ1..򑬒񡘮࡛9; ➆񷧕ỗ1..򑬒񡘮࡛9; [P1, V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [P1, V6, A4_2]; ;  # ➆ỗ1..࡛9
-➆񷧕Ỗ1..򑬒񡘮࡛9; ➆񷧕ỗ1..򑬒񡘮࡛9; [P1, V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [P1, V6, A4_2]; ;  # ➆ỗ1..࡛9
-xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; ➆񷧕ỗ1..򑬒񡘮࡛9; [V6, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V6, A4_2]; ;  # ➆ỗ1..࡛9
-➆񷧕Ỗ⒈．򑬒񡘮࡛𝟫; ➆񷧕ỗ⒈.򑬒񡘮࡛9; [P1, V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ;  # ➆ỗ⒈.࡛9
-➆񷧕Ỗ⒈．򑬒񡘮࡛𝟫; ➆񷧕ỗ⒈.򑬒񡘮࡛9; [P1, V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ;  # ➆ỗ⒈.࡛9
-xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ➆񷧕ỗ⒈.򑬒񡘮࡛9; [V6]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ;  # ➆ỗ⒈.࡛9
-‍｡𞤘; ‍.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; .xn--ye6h; [A4_2] # .𞤺
-‍。𞤘; ‍.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; .xn--ye6h; [A4_2] # .𞤺
-‍。𞤺; ‍.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; .xn--ye6h; [A4_2] # .𞤺
+ß\u200D\u103A｡⒈; ß\u200D\u103A.⒈; [C2, V7]; xn--zca679eh2l.xn--tsh; ; xn--ss-f4j.xn--tsh; [V7] # ß်.⒈
+ß\u200D\u103A。1.; ß\u200D\u103A.1.; [C2]; xn--zca679eh2l.1.; [C2, A4_2]; xn--ss-f4j.1.; [A4_2] # ß်.1.
+SS\u200D\u103A。1.; ss\u200D\u103A.1.; [C2]; xn--ss-f4j585j.1.; [C2, A4_2]; xn--ss-f4j.1.; [A4_2] # ss်.1.
+ss\u200D\u103A。1.; ss\u200D\u103A.1.; [C2]; xn--ss-f4j585j.1.; [C2, A4_2]; xn--ss-f4j.1.; [A4_2] # ss်.1.
+Ss\u200D\u103A。1.; ss\u200D\u103A.1.; [C2]; xn--ss-f4j585j.1.; [C2, A4_2]; xn--ss-f4j.1.; [A4_2] # ss်.1.
+xn--ss-f4j.b.; ss\u103A.b.; ; xn--ss-f4j.b.; [A4_2]; ;  # ss်.b.
+ss\u103A.b.; ; ; xn--ss-f4j.b.; [A4_2]; ;  # ss်.b.
+SS\u103A.B.; ss\u103A.b.; ; xn--ss-f4j.b.; [A4_2]; ;  # ss်.b.
+Ss\u103A.b.; ss\u103A.b.; ; xn--ss-f4j.b.; [A4_2]; ;  # ss်.b.
+xn--ss-f4j585j.b.; ss\u200D\u103A.b.; [C2]; xn--ss-f4j585j.b.; [C2, A4_2]; ;  # ss်.b.
+xn--zca679eh2l.b.; ß\u200D\u103A.b.; [C2]; xn--zca679eh2l.b.; [C2, A4_2]; ;  # ß်.b.
+SS\u200D\u103A｡⒈; ss\u200D\u103A.⒈; [C2, V7]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [V7] # ss်.⒈
+ss\u200D\u103A｡⒈; ss\u200D\u103A.⒈; [C2, V7]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [V7] # ss်.⒈
+Ss\u200D\u103A｡⒈; ss\u200D\u103A.⒈; [C2, V7]; xn--ss-f4j585j.xn--tsh; ; xn--ss-f4j.xn--tsh; [V7] # ss်.⒈
+xn--ss-f4j.xn--tsh; ss\u103A.⒈; [V7]; xn--ss-f4j.xn--tsh; ; ;  # ss်.⒈
+xn--ss-f4j585j.xn--tsh; ss\u200D\u103A.⒈; [C2, V7]; xn--ss-f4j585j.xn--tsh; ; ;  # ss်.⒈
+xn--zca679eh2l.xn--tsh; ß\u200D\u103A.⒈; [C2, V7]; xn--zca679eh2l.xn--tsh; ; ;  # ß်.⒈
+SS\u103A.b.; ss\u103A.b.; ; xn--ss-f4j.b.; [A4_2]; ;  # ss်.b.
+\u0B4D\u200C𙶵𞻘。\u200D; \u0B4D\u200C𙶵𞻘.\u200D; [B1, C2, V6, V7]; xn--9ic637hz82z32jc.xn--1ug; ; xn--9ic6417rn4xb.; [B1, V6, V7, A4_2] # ୍.
+xn--9ic6417rn4xb.; \u0B4D𙶵𞻘.; [B1, V6, V7]; xn--9ic6417rn4xb.; [B1, V6, V7, A4_2]; ;  # ୍.
+xn--9ic637hz82z32jc.xn--1ug; \u0B4D\u200C𙶵𞻘.\u200D; [B1, C2, V6, V7]; xn--9ic637hz82z32jc.xn--1ug; ; ;  # ୍.
+𐮅｡\u06BC🁕; 𐮅.\u06BC🁕; [B3]; xn--c29c.xn--vkb8871w; ; ;  # 𐮅.ڼ🁕
+𐮅。\u06BC🁕; 𐮅.\u06BC🁕; [B3]; xn--c29c.xn--vkb8871w; ; ;  # 𐮅.ڼ🁕
+xn--c29c.xn--vkb8871w; 𐮅.\u06BC🁕; [B3]; xn--c29c.xn--vkb8871w; ; ;  # 𐮅.ڼ🁕
+\u0620\u17D2。𐫔󠀧\u200C𑈵; \u0620\u17D2.𐫔󠀧\u200C𑈵; [B2, B3, C1, V7]; xn--fgb471g.xn--0ug9853g7verp838a; ; xn--fgb471g.xn--9w9c29jw3931a; [B2, B3, V7] # ؠ្.𐫔𑈵
+xn--fgb471g.xn--9w9c29jw3931a; \u0620\u17D2.𐫔󠀧𑈵; [B2, B3, V7]; xn--fgb471g.xn--9w9c29jw3931a; ; ;  # ؠ្.𐫔𑈵
+xn--fgb471g.xn--0ug9853g7verp838a; \u0620\u17D2.𐫔󠀧\u200C𑈵; [B2, B3, C1, V7]; xn--fgb471g.xn--0ug9853g7verp838a; ; ;  # ؠ្.𐫔𑈵
+񋉕.𞣕𞤊; 񋉕.𞣕𞤬; [B1, V6, V7]; xn--tf5w.xn--2b6hof; ; ;  # .𞣕𞤬
+񋉕.𞣕𞤬; ; [B1, V6, V7]; xn--tf5w.xn--2b6hof; ; ;  # .𞣕𞤬
+xn--tf5w.xn--2b6hof; 񋉕.𞣕𞤬; [B1, V6, V7]; xn--tf5w.xn--2b6hof; ; ;  # .𞣕𞤬
+\u06CC𐨿．ß\u0F84𑍬; \u06CC𐨿.ß\u0F84𑍬; ; xn--clb2593k.xn--zca216edt0r; ; xn--clb2593k.xn--ss-toj6092t;  # ی𐨿.ß྄𑍬
+\u06CC𐨿.ß\u0F84𑍬; ; ; xn--clb2593k.xn--zca216edt0r; ; xn--clb2593k.xn--ss-toj6092t;  # ی𐨿.ß྄𑍬
+\u06CC𐨿.SS\u0F84𑍬; \u06CC𐨿.ss\u0F84𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
+\u06CC𐨿.ss\u0F84𑍬; ; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
+xn--clb2593k.xn--ss-toj6092t; \u06CC𐨿.ss\u0F84𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
+xn--clb2593k.xn--zca216edt0r; \u06CC𐨿.ß\u0F84𑍬; ; xn--clb2593k.xn--zca216edt0r; ; ;  # ی𐨿.ß྄𑍬
+\u06CC𐨿．SS\u0F84𑍬; \u06CC𐨿.ss\u0F84𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
+\u06CC𐨿．ss\u0F84𑍬; \u06CC𐨿.ss\u0F84𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
+\u06CC𐨿.Ss\u0F84𑍬; \u06CC𐨿.ss\u0F84𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
+\u06CC𐨿．Ss\u0F84𑍬; \u06CC𐨿.ss\u0F84𑍬; ; xn--clb2593k.xn--ss-toj6092t; ; ;  # ی𐨿.ss྄𑍬
+𝟠≮\u200C｡󠅱\u17B4; 8≮\u200C.; [C1]; xn--8-sgn10i.; [C1, A4_2]; xn--8-ngo.; [A4_2] # 8≮.
+𝟠<\u0338\u200C｡󠅱\u17B4; 8≮\u200C.; [C1]; xn--8-sgn10i.; [C1, A4_2]; xn--8-ngo.; [A4_2] # 8≮.
+8≮\u200C。󠅱\u17B4; 8≮\u200C.; [C1]; xn--8-sgn10i.; [C1, A4_2]; xn--8-ngo.; [A4_2] # 8≮.
+8<\u0338\u200C。󠅱\u17B4; 8≮\u200C.; [C1]; xn--8-sgn10i.; [C1, A4_2]; xn--8-ngo.; [A4_2] # 8≮.
+xn--8-ngo.; 8≮.; ; xn--8-ngo.; [A4_2]; ;  # 8≮.
+8≮.; ; ; xn--8-ngo.; [A4_2]; ;  # 8≮.
+8<\u0338.; 8≮.; ; xn--8-ngo.; [A4_2]; ;  # 8≮.
+xn--8-sgn10i.; 8≮\u200C.; [C1]; xn--8-sgn10i.; [C1, A4_2]; ;  # 8≮.
+xn--8-ngo.xn--z3e; 8≮.\u17B4; [V6, V7]; xn--8-ngo.xn--z3e; ; ;  # 8≮.
+xn--8-sgn10i.xn--z3e; 8≮\u200C.\u17B4; [C1, V6, V7]; xn--8-sgn10i.xn--z3e; ; ;  # 8≮.
+ᢕ≯︒񄂯．Ⴀ; ᢕ≯︒񄂯.ⴀ; [V7]; xn--fbf851cq98poxw1a.xn--rkj; ; ;  # ᢕ≯︒.ⴀ
+ᢕ>\u0338︒񄂯．Ⴀ; ᢕ≯︒񄂯.ⴀ; [V7]; xn--fbf851cq98poxw1a.xn--rkj; ; ;  # ᢕ≯︒.ⴀ
+ᢕ≯。񄂯.Ⴀ; ᢕ≯.񄂯.ⴀ; [V7]; xn--fbf851c.xn--ko1u.xn--rkj; ; ;  # ᢕ≯..ⴀ
+ᢕ>\u0338。񄂯.Ⴀ; ᢕ≯.񄂯.ⴀ; [V7]; xn--fbf851c.xn--ko1u.xn--rkj; ; ;  # ᢕ≯..ⴀ
+ᢕ>\u0338。񄂯.ⴀ; ᢕ≯.񄂯.ⴀ; [V7]; xn--fbf851c.xn--ko1u.xn--rkj; ; ;  # ᢕ≯..ⴀ
+ᢕ≯。񄂯.ⴀ; ᢕ≯.񄂯.ⴀ; [V7]; xn--fbf851c.xn--ko1u.xn--rkj; ; ;  # ᢕ≯..ⴀ
+xn--fbf851c.xn--ko1u.xn--rkj; ᢕ≯.񄂯.ⴀ; [V7]; xn--fbf851c.xn--ko1u.xn--rkj; ; ;  # ᢕ≯..ⴀ
+ᢕ>\u0338︒񄂯．ⴀ; ᢕ≯︒񄂯.ⴀ; [V7]; xn--fbf851cq98poxw1a.xn--rkj; ; ;  # ᢕ≯︒.ⴀ
+ᢕ≯︒񄂯．ⴀ; ᢕ≯︒񄂯.ⴀ; [V7]; xn--fbf851cq98poxw1a.xn--rkj; ; ;  # ᢕ≯︒.ⴀ
+xn--fbf851cq98poxw1a.xn--rkj; ᢕ≯︒񄂯.ⴀ; [V7]; xn--fbf851cq98poxw1a.xn--rkj; ; ;  # ᢕ≯︒.ⴀ
+xn--fbf851c.xn--ko1u.xn--7md; ᢕ≯.񄂯.Ⴀ; [V7]; xn--fbf851c.xn--ko1u.xn--7md; ; ;  # ᢕ≯..Ⴀ
+xn--fbf851cq98poxw1a.xn--7md; ᢕ≯︒񄂯.Ⴀ; [V7]; xn--fbf851cq98poxw1a.xn--7md; ; ;  # ᢕ≯︒.Ⴀ
+\u0F9F．-\u082A; \u0F9F.-\u082A; [V3, V6]; xn--vfd.xn----fhd; ; ;  # ྟ.-ࠪ
+\u0F9F.-\u082A; ; [V3, V6]; xn--vfd.xn----fhd; ; ;  # ྟ.-ࠪ
+xn--vfd.xn----fhd; \u0F9F.-\u082A; [V3, V6]; xn--vfd.xn----fhd; ; ;  # ྟ.-ࠪ
+ᵬ󠆠．핒⒒⒈􈄦; ᵬ.핒⒒⒈􈄦; [V7]; xn--tbg.xn--tsht7586kyts9l; ; ;  # ᵬ.핒⒒⒈
+ᵬ󠆠．핒⒒⒈􈄦; ᵬ.핒⒒⒈􈄦; [V7]; xn--tbg.xn--tsht7586kyts9l; ; ;  # ᵬ.핒⒒⒈
+ᵬ󠆠.핒11.1.􈄦; ᵬ.핒11.1.􈄦; [V7]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ;  # ᵬ.핒11.1.
+ᵬ󠆠.핒11.1.􈄦; ᵬ.핒11.1.􈄦; [V7]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ;  # ᵬ.핒11.1.
+xn--tbg.xn--11-5o7k.1.xn--k469f; ᵬ.핒11.1.􈄦; [V7]; xn--tbg.xn--11-5o7k.1.xn--k469f; ; ;  # ᵬ.핒11.1.
+xn--tbg.xn--tsht7586kyts9l; ᵬ.핒⒒⒈􈄦; [V7]; xn--tbg.xn--tsht7586kyts9l; ; ;  # ᵬ.핒⒒⒈
+ς𑓂𐋢．\u0668; ς𑓂𐋢.\u0668; [B1]; xn--3xa8371khhl.xn--hib; ; xn--4xa6371khhl.xn--hib;  # ς𑓂𐋢.٨
+ς𑓂𐋢.\u0668; ; [B1]; xn--3xa8371khhl.xn--hib; ; xn--4xa6371khhl.xn--hib;  # ς𑓂𐋢.٨
+Σ𑓂𐋢.\u0668; σ𑓂𐋢.\u0668; [B1]; xn--4xa6371khhl.xn--hib; ; ;  # σ𑓂𐋢.٨
+σ𑓂𐋢.\u0668; ; [B1]; xn--4xa6371khhl.xn--hib; ; ;  # σ𑓂𐋢.٨
+xn--4xa6371khhl.xn--hib; σ𑓂𐋢.\u0668; [B1]; xn--4xa6371khhl.xn--hib; ; ;  # σ𑓂𐋢.٨
+xn--3xa8371khhl.xn--hib; ς𑓂𐋢.\u0668; [B1]; xn--3xa8371khhl.xn--hib; ; ;  # ς𑓂𐋢.٨
+Σ𑓂𐋢．\u0668; σ𑓂𐋢.\u0668; [B1]; xn--4xa6371khhl.xn--hib; ; ;  # σ𑓂𐋢.٨
+σ𑓂𐋢．\u0668; σ𑓂𐋢.\u0668; [B1]; xn--4xa6371khhl.xn--hib; ; ;  # σ𑓂𐋢.٨
+\uA953\u200C𐋻\u200D.\u2DF8𞿄𐹲; ; [B1, B6, C2, V6, V7]; xn--0ugc8356he76c.xn--urju692efj0f; ; xn--3j9a531o.xn--urju692efj0f; [B1, V6, V7] # ꥓𐋻.ⷸ𐹲
+xn--3j9a531o.xn--urju692efj0f; \uA953𐋻.\u2DF8𞿄𐹲; [B1, V6, V7]; xn--3j9a531o.xn--urju692efj0f; ; ;  # ꥓𐋻.ⷸ𐹲
+xn--0ugc8356he76c.xn--urju692efj0f; \uA953\u200C𐋻\u200D.\u2DF8𞿄𐹲; [B1, B6, C2, V6, V7]; xn--0ugc8356he76c.xn--urju692efj0f; ; ;  # ꥓𐋻.ⷸ𐹲
+⊼。񪧖\u0695; ⊼.񪧖\u0695; [B1, B5, B6, V7]; xn--ofh.xn--rjb13118f; ; ;  # ⊼.ڕ
+xn--ofh.xn--rjb13118f; ⊼.񪧖\u0695; [B1, B5, B6, V7]; xn--ofh.xn--rjb13118f; ; ;  # ⊼.ڕ
+𐯬񖋔。󜳥; 𐯬񖋔.󜳥; [B2, B3, V7]; xn--949co370q.xn--7g25e; ; ;  # .
+xn--949co370q.xn--7g25e; 𐯬񖋔.󜳥; [B2, B3, V7]; xn--949co370q.xn--7g25e; ; ;  # .
+\u0601𑍧\u07DD。ς򬍘🀞\u17B5; \u0601𑍧\u07DD.ς򬍘🀞; [B1, B6, V7]; xn--jfb66gt010c.xn--3xa2023w4nq4c; ; xn--jfb66gt010c.xn--4xa0023w4nq4c;  # 𑍧ߝ.ς🀞
+\u0601𑍧\u07DD。Σ򬍘🀞\u17B5; \u0601𑍧\u07DD.σ򬍘🀞; [B1, B6, V7]; xn--jfb66gt010c.xn--4xa0023w4nq4c; ; ;  # 𑍧ߝ.σ🀞
+\u0601𑍧\u07DD。σ򬍘🀞\u17B5; \u0601𑍧\u07DD.σ򬍘🀞; [B1, B6, V7]; xn--jfb66gt010c.xn--4xa0023w4nq4c; ; ;  # 𑍧ߝ.σ🀞
+xn--jfb66gt010c.xn--4xa0023w4nq4c; \u0601𑍧\u07DD.σ򬍘🀞; [B1, B6, V7]; xn--jfb66gt010c.xn--4xa0023w4nq4c; ; ;  # 𑍧ߝ.σ🀞
+xn--jfb66gt010c.xn--3xa2023w4nq4c; \u0601𑍧\u07DD.ς򬍘🀞; [B1, B6, V7]; xn--jfb66gt010c.xn--3xa2023w4nq4c; ; ;  # 𑍧ߝ.ς🀞
+xn--jfb66gt010c.xn--4xa623h9p95ars26d; \u0601𑍧\u07DD.σ򬍘🀞\u17B5; [B1, B6, V7]; xn--jfb66gt010c.xn--4xa623h9p95ars26d; ; ;  # 𑍧ߝ.σ🀞
+xn--jfb66gt010c.xn--3xa823h9p95ars26d; \u0601𑍧\u07DD.ς򬍘🀞\u17B5; [B1, B6, V7]; xn--jfb66gt010c.xn--3xa823h9p95ars26d; ; ;  # 𑍧ߝ.ς🀞
+-𐳲\u0646󠺐。\uABED𝟥; -𐳲\u0646󠺐.\uABED3; [B1, V3, V6, V7]; xn----roc5482rek10i.xn--3-zw5e; ; ;  # -𐳲ن.꯭3
+-𐳲\u0646󠺐。\uABED3; -𐳲\u0646󠺐.\uABED3; [B1, V3, V6, V7]; xn----roc5482rek10i.xn--3-zw5e; ; ;  # -𐳲ن.꯭3
+-𐲲\u0646󠺐。\uABED3; -𐳲\u0646󠺐.\uABED3; [B1, V3, V6, V7]; xn----roc5482rek10i.xn--3-zw5e; ; ;  # -𐳲ن.꯭3
+xn----roc5482rek10i.xn--3-zw5e; -𐳲\u0646󠺐.\uABED3; [B1, V3, V6, V7]; xn----roc5482rek10i.xn--3-zw5e; ; ;  # -𐳲ن.꯭3
+-𐲲\u0646󠺐。\uABED𝟥; -𐳲\u0646󠺐.\uABED3; [B1, V3, V6, V7]; xn----roc5482rek10i.xn--3-zw5e; ; ;  # -𐳲ن.꯭3
+\u200C󠴦｡񲨕≮𐦜; \u200C󠴦.񲨕≮𐦜; [B1, B5, B6, C1, V7]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, V7] # .≮𐦜
+\u200C󠴦｡񲨕<\u0338𐦜; \u200C󠴦.񲨕≮𐦜; [B1, B5, B6, C1, V7]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, V7] # .≮𐦜
+\u200C󠴦。񲨕≮𐦜; \u200C󠴦.񲨕≮𐦜; [B1, B5, B6, C1, V7]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, V7] # .≮𐦜
+\u200C󠴦。񲨕<\u0338𐦜; \u200C󠴦.񲨕≮𐦜; [B1, B5, B6, C1, V7]; xn--0ug22251l.xn--gdhz712gzlr6b; ; xn--6v56e.xn--gdhz712gzlr6b; [B1, B5, B6, V7] # .≮𐦜
+xn--6v56e.xn--gdhz712gzlr6b; 󠴦.񲨕≮𐦜; [B1, B5, B6, V7]; xn--6v56e.xn--gdhz712gzlr6b; ; ;  # .≮𐦜
+xn--0ug22251l.xn--gdhz712gzlr6b; \u200C󠴦.񲨕≮𐦜; [B1, B5, B6, C1, V7]; xn--0ug22251l.xn--gdhz712gzlr6b; ; ;  # .≮𐦜
+⒈✌򟬟．𝟡񠱣; ⒈✌򟬟.9񠱣; [V7]; xn--tsh24g49550b.xn--9-o706d; ; ;  # ⒈✌.9
+1.✌򟬟.9񠱣; ; [V7]; 1.xn--7bi44996f.xn--9-o706d; ; ;  # 1.✌.9
+1.xn--7bi44996f.xn--9-o706d; 1.✌򟬟.9񠱣; [V7]; 1.xn--7bi44996f.xn--9-o706d; ; ;  # 1.✌.9
+xn--tsh24g49550b.xn--9-o706d; ⒈✌򟬟.9񠱣; [V7]; xn--tsh24g49550b.xn--9-o706d; ; ;  # ⒈✌.9
+𑆾𞤬𐮆.\u0666\u1DD4; ; [B1, V6]; xn--d29c79hf98r.xn--fib011j; ; ;  # 𑆾𞤬𐮆.٦ᷔ
+𑆾𞤊𐮆.\u0666\u1DD4; 𑆾𞤬𐮆.\u0666\u1DD4; [B1, V6]; xn--d29c79hf98r.xn--fib011j; ; ;  # 𑆾𞤬𐮆.٦ᷔ
+xn--d29c79hf98r.xn--fib011j; 𑆾𞤬𐮆.\u0666\u1DD4; [B1, V6]; xn--d29c79hf98r.xn--fib011j; ; ;  # 𑆾𞤬𐮆.٦ᷔ
+ς．\uA9C0\uA8C4; ς.\uA9C0\uA8C4; [V6]; xn--3xa.xn--0f9ars; ; xn--4xa.xn--0f9ars;  # ς.꧀꣄
+ς.\uA9C0\uA8C4; ; [V6]; xn--3xa.xn--0f9ars; ; xn--4xa.xn--0f9ars;  # ς.꧀꣄
+Σ.\uA9C0\uA8C4; σ.\uA9C0\uA8C4; [V6]; xn--4xa.xn--0f9ars; ; ;  # σ.꧀꣄
+σ.\uA9C0\uA8C4; ; [V6]; xn--4xa.xn--0f9ars; ; ;  # σ.꧀꣄
+xn--4xa.xn--0f9ars; σ.\uA9C0\uA8C4; [V6]; xn--4xa.xn--0f9ars; ; ;  # σ.꧀꣄
+xn--3xa.xn--0f9ars; ς.\uA9C0\uA8C4; [V6]; xn--3xa.xn--0f9ars; ; ;  # ς.꧀꣄
+Σ．\uA9C0\uA8C4; σ.\uA9C0\uA8C4; [V6]; xn--4xa.xn--0f9ars; ; ;  # σ.꧀꣄
+σ．\uA9C0\uA8C4; σ.\uA9C0\uA8C4; [V6]; xn--4xa.xn--0f9ars; ; ;  # σ.꧀꣄
+𑰶\u200C≯𐳐．\u085B; 𑰶\u200C≯𐳐.\u085B; [B1, C1, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V6] # 𑰶≯𐳐.࡛
+𑰶\u200C>\u0338𐳐．\u085B; 𑰶\u200C≯𐳐.\u085B; [B1, C1, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V6] # 𑰶≯𐳐.࡛
+𑰶\u200C≯𐳐.\u085B; ; [B1, C1, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V6] # 𑰶≯𐳐.࡛
+𑰶\u200C>\u0338𐳐.\u085B; 𑰶\u200C≯𐳐.\u085B; [B1, C1, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V6] # 𑰶≯𐳐.࡛
+𑰶\u200C>\u0338𐲐.\u085B; 𑰶\u200C≯𐳐.\u085B; [B1, C1, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V6] # 𑰶≯𐳐.࡛
+𑰶\u200C≯𐲐.\u085B; 𑰶\u200C≯𐳐.\u085B; [B1, C1, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V6] # 𑰶≯𐳐.࡛
+xn--hdhz343g3wj.xn--qwb; 𑰶≯𐳐.\u085B; [B1, V6]; xn--hdhz343g3wj.xn--qwb; ; ;  # 𑰶≯𐳐.࡛
+xn--0ug06g7697ap4ma.xn--qwb; 𑰶\u200C≯𐳐.\u085B; [B1, C1, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; ;  # 𑰶≯𐳐.࡛
+𑰶\u200C>\u0338𐲐．\u085B; 𑰶\u200C≯𐳐.\u085B; [B1, C1, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V6] # 𑰶≯𐳐.࡛
+𑰶\u200C≯𐲐．\u085B; 𑰶\u200C≯𐳐.\u085B; [B1, C1, V6]; xn--0ug06g7697ap4ma.xn--qwb; ; xn--hdhz343g3wj.xn--qwb; [B1, V6] # 𑰶≯𐳐.࡛
+羚｡≯; 羚.≯; ; xn--xt0a.xn--hdh; ; ;  # 羚.≯
+羚｡>\u0338; 羚.≯; ; xn--xt0a.xn--hdh; ; ;  # 羚.≯
+羚。≯; 羚.≯; ; xn--xt0a.xn--hdh; ; ;  # 羚.≯
+羚。>\u0338; 羚.≯; ; xn--xt0a.xn--hdh; ; ;  # 羚.≯
+xn--xt0a.xn--hdh; 羚.≯; ; xn--xt0a.xn--hdh; ; ;  # 羚.≯
+羚.≯; ; ; xn--xt0a.xn--hdh; ; ;  # 羚.≯
+羚.>\u0338; 羚.≯; ; xn--xt0a.xn--hdh; ; ;  # 羚.≯
+𑓂\u1759．\u08A8; 𑓂\u1759.\u08A8; [B1, V6, V7]; xn--e1e9580k.xn--xyb; ; ;  # 𑓂.ࢨ
+𑓂\u1759.\u08A8; ; [B1, V6, V7]; xn--e1e9580k.xn--xyb; ; ;  # 𑓂.ࢨ
+xn--e1e9580k.xn--xyb; 𑓂\u1759.\u08A8; [B1, V6, V7]; xn--e1e9580k.xn--xyb; ; ;  # 𑓂.ࢨ
+󨣿󠇀\u200D｡\u0663ҠჀ𝟑; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, V7]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, V7] # .٣ҡⴠ3
+󨣿󠇀\u200D。\u0663ҠჀ3; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, V7]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, V7] # .٣ҡⴠ3
+󨣿󠇀\u200D。\u0663ҡⴠ3; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, V7]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, V7] # .٣ҡⴠ3
+xn--1r19e.xn--3-ozb36ko13f; 󨣿.\u0663ҡⴠ3; [B1, V7]; xn--1r19e.xn--3-ozb36ko13f; ; ;  # .٣ҡⴠ3
+xn--1ug89936l.xn--3-ozb36ko13f; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, V7]; xn--1ug89936l.xn--3-ozb36ko13f; ; ;  # .٣ҡⴠ3
+󨣿󠇀\u200D｡\u0663ҡⴠ𝟑; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, V7]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, V7] # .٣ҡⴠ3
+xn--1r19e.xn--3-ozb36kixu; 󨣿.\u0663ҡჀ3; [B1, V7]; xn--1r19e.xn--3-ozb36kixu; ; ;  # .٣ҡჀ3
+xn--1ug89936l.xn--3-ozb36kixu; 󨣿\u200D.\u0663ҡჀ3; [B1, B6, C2, V7]; xn--1ug89936l.xn--3-ozb36kixu; ; ;  # .٣ҡჀ3
+󨣿󠇀\u200D。\u0663Ҡⴠ3; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, V7]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, V7] # .٣ҡⴠ3
+󨣿󠇀\u200D｡\u0663Ҡⴠ𝟑; 󨣿\u200D.\u0663ҡⴠ3; [B1, B6, C2, V7]; xn--1ug89936l.xn--3-ozb36ko13f; ; xn--1r19e.xn--3-ozb36ko13f; [B1, V7] # .٣ҡⴠ3
+ᡷ。𐹢\u08E0; ᡷ.𐹢\u08E0; [B1]; xn--k9e.xn--j0b5005k; ; ;  # ᡷ.𐹢࣠
+xn--k9e.xn--j0b5005k; ᡷ.𐹢\u08E0; [B1]; xn--k9e.xn--j0b5005k; ; ;  # ᡷ.𐹢࣠
+򕮇\u1BF3｡\u0666񗜼\u17D2ß; 򕮇\u1BF3.\u0666񗜼\u17D2ß; [B1, V7]; xn--1zf58212h.xn--zca34zk4qx711k; ; xn--1zf58212h.xn--ss-pyd459o3258m;  # ᯳.٦្ß
+򕮇\u1BF3。\u0666񗜼\u17D2ß; 򕮇\u1BF3.\u0666񗜼\u17D2ß; [B1, V7]; xn--1zf58212h.xn--zca34zk4qx711k; ; xn--1zf58212h.xn--ss-pyd459o3258m;  # ᯳.٦្ß
+򕮇\u1BF3。\u0666񗜼\u17D2SS; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V7]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
+򕮇\u1BF3。\u0666񗜼\u17D2ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V7]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
+򕮇\u1BF3。\u0666񗜼\u17D2Ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V7]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
+xn--1zf58212h.xn--ss-pyd459o3258m; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V7]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
+xn--1zf58212h.xn--zca34zk4qx711k; 򕮇\u1BF3.\u0666񗜼\u17D2ß; [B1, V7]; xn--1zf58212h.xn--zca34zk4qx711k; ; ;  # ᯳.٦្ß
+򕮇\u1BF3｡\u0666񗜼\u17D2SS; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V7]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
+򕮇\u1BF3｡\u0666񗜼\u17D2ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V7]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
+򕮇\u1BF3｡\u0666񗜼\u17D2Ss; 򕮇\u1BF3.\u0666񗜼\u17D2ss; [B1, V7]; xn--1zf58212h.xn--ss-pyd459o3258m; ; ;  # ᯳.٦្ss
+\u0664򤽎𑲛.󠔢︒≠; ; [B1, V7]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ;  # ٤𑲛.︒≠
+\u0664򤽎𑲛.󠔢︒=\u0338; \u0664򤽎𑲛.󠔢︒≠; [B1, V7]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ;  # ٤𑲛.︒≠
+\u0664򤽎𑲛.󠔢。≠; \u0664򤽎𑲛.󠔢.≠; [B1, V7]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ;  # ٤𑲛..≠
+\u0664򤽎𑲛.󠔢。=\u0338; \u0664򤽎𑲛.󠔢.≠; [B1, V7]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ;  # ٤𑲛..≠
+xn--dib0653l2i02d.xn--k736e.xn--1ch; \u0664򤽎𑲛.󠔢.≠; [B1, V7]; xn--dib0653l2i02d.xn--k736e.xn--1ch; ; ;  # ٤𑲛..≠
+xn--dib0653l2i02d.xn--1ch7467f14u4g; \u0664򤽎𑲛.󠔢︒≠; [B1, V7]; xn--dib0653l2i02d.xn--1ch7467f14u4g; ; ;  # ٤𑲛.︒≠
+➆񷧕ỗ⒈．򑬒񡘮\u085B𝟫; ➆񷧕ỗ⒈.򑬒񡘮\u085B9; [V7]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ;  # ➆ỗ⒈.࡛9
+➆񷧕o\u0302\u0303⒈．򑬒񡘮\u085B𝟫; ➆񷧕ỗ⒈.򑬒񡘮\u085B9; [V7]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ;  # ➆ỗ⒈.࡛9
+➆񷧕ỗ1..򑬒񡘮\u085B9; ; [V7, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V7, A4_2]; ;  # ➆ỗ1..࡛9
+➆񷧕o\u0302\u03031..򑬒񡘮\u085B9; ➆񷧕ỗ1..򑬒񡘮\u085B9; [V7, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V7, A4_2]; ;  # ➆ỗ1..࡛9
+➆񷧕O\u0302\u03031..򑬒񡘮\u085B9; ➆񷧕ỗ1..򑬒񡘮\u085B9; [V7, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V7, A4_2]; ;  # ➆ỗ1..࡛9
+➆񷧕Ỗ1..򑬒񡘮\u085B9; ➆񷧕ỗ1..򑬒񡘮\u085B9; [V7, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V7, A4_2]; ;  # ➆ỗ1..࡛9
+xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; ➆񷧕ỗ1..򑬒񡘮\u085B9; [V7, X4_2]; xn--1-3xm292b6044r..xn--9-6jd87310jtcqs; [V7, A4_2]; ;  # ➆ỗ1..࡛9
+➆񷧕O\u0302\u0303⒈．򑬒񡘮\u085B𝟫; ➆񷧕ỗ⒈.򑬒񡘮\u085B9; [V7]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ;  # ➆ỗ⒈.࡛9
+➆񷧕Ỗ⒈．򑬒񡘮\u085B𝟫; ➆񷧕ỗ⒈.򑬒񡘮\u085B9; [V7]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ;  # ➆ỗ⒈.࡛9
+xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ➆񷧕ỗ⒈.򑬒񡘮\u085B9; [V7]; xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs; ; ;  # ➆ỗ⒈.࡛9
+\u200D｡𞤘; \u200D.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; .xn--ye6h; [A4_2] # .𞤺
+\u200D。𞤘; \u200D.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; .xn--ye6h; [A4_2] # .𞤺
+\u200D。𞤺; \u200D.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; .xn--ye6h; [A4_2] # .𞤺
 .xn--ye6h; .𞤺; [X4_2]; .xn--ye6h; [A4_2]; ;  # .𞤺
-xn--1ug.xn--ye6h; ‍.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; ;  # .𞤺
-‍｡𞤺; ‍.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; .xn--ye6h; [A4_2] # .𞤺
+xn--1ug.xn--ye6h; \u200D.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; ;  # .𞤺
+\u200D｡𞤺; \u200D.𞤺; [B1, C2]; xn--1ug.xn--ye6h; ; .xn--ye6h; [A4_2] # .𞤺
 xn--ye6h; 𞤺; ; xn--ye6h; ; ;  # 𞤺
 𞤺; ; ; xn--ye6h; ; ;  # 𞤺
 𞤘; 𞤺; ; xn--ye6h; ; ;  # 𞤺
-ࠩܤ.ᢣ; ; [B1, V5]; xn--unb53c.xn--tbf; ; ;  # ࠩܤ.ᢣ
-xn--unb53c.xn--tbf; ࠩܤ.ᢣ; [B1, V5]; xn--unb53c.xn--tbf; ; ;  # ࠩܤ.ᢣ
-ܼ‌-。𓐾ß; ܼ‌-.𓐾ß; [C1, P1, V3, V5, V6]; xn----s2c071q.xn--zca7848m; ; xn----s2c.xn--ss-066q; [P1, V3, V5, V6] # ܼ-.ß
-ܼ‌-。𓐾SS; ܼ‌-.𓐾ss; [C1, P1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [P1, V3, V5, V6] # ܼ-.ss
-ܼ‌-。𓐾ss; ܼ‌-.𓐾ss; [C1, P1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [P1, V3, V5, V6] # ܼ-.ss
-ܼ‌-。𓐾Ss; ܼ‌-.𓐾ss; [C1, P1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [P1, V3, V5, V6] # ܼ-.ss
-xn----s2c.xn--ss-066q; ܼ-.𓐾ss; [V3, V5, V6]; xn----s2c.xn--ss-066q; ; ;  # ܼ-.ss
-xn----s2c071q.xn--ss-066q; ܼ‌-.𓐾ss; [C1, V3, V5, V6]; xn----s2c071q.xn--ss-066q; ; ;  # ܼ-.ss
-xn----s2c071q.xn--zca7848m; ܼ‌-.𓐾ß; [C1, V3, V5, V6]; xn----s2c071q.xn--zca7848m; ; ;  # ܼ-.ß
-‌ς🃡⒗.ೆ仧ݖ; ; [B1, B5, B6, C1, P1, V5, V6]; xn--3xa795lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, P1, V5, V6] # ς🃡⒗.ೆ仧ݖ
-‌ς🃡16..ೆ仧ݖ; ; [B1, B5, B6, C1, V5, X4_2]; xn--16-rbc1800avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V5, A4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V5, A4_2] # ς🃡16..ೆ仧ݖ
-‌Σ🃡16..ೆ仧ݖ; ‌σ🃡16..ೆ仧ݖ; [B1, B5, B6, C1, V5, X4_2]; xn--16-ubc7700avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V5, A4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V5, A4_2] # σ🃡16..ೆ仧ݖ
-‌σ🃡16..ೆ仧ݖ; ; [B1, B5, B6, C1, V5, X4_2]; xn--16-ubc7700avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V5, A4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V5, A4_2] # σ🃡16..ೆ仧ݖ
-xn--16-ubc66061c..xn--9ob79ycx2e; σ🃡16..ೆ仧ݖ; [B5, B6, V5, X4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V5, A4_2]; ;  # σ🃡16..ೆ仧ݖ
-xn--16-ubc7700avy99b..xn--9ob79ycx2e; ‌σ🃡16..ೆ仧ݖ; [B1, B5, B6, C1, V5, X4_2]; xn--16-ubc7700avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V5, A4_2]; ;  # σ🃡16..ೆ仧ݖ
-xn--16-rbc1800avy99b..xn--9ob79ycx2e; ‌ς🃡16..ೆ仧ݖ; [B1, B5, B6, C1, V5, X4_2]; xn--16-rbc1800avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V5, A4_2]; ;  # ς🃡16..ೆ仧ݖ
-‌Σ🃡⒗.ೆ仧ݖ; ‌σ🃡⒗.ೆ仧ݖ; [B1, B5, B6, C1, P1, V5, V6]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, P1, V5, V6] # σ🃡⒗.ೆ仧ݖ
-‌σ🃡⒗.ೆ仧ݖ; ; [B1, B5, B6, C1, P1, V5, V6]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, P1, V5, V6] # σ🃡⒗.ೆ仧ݖ
-xn--4xa229nbu92a.xn--9ob79ycx2e; σ🃡⒗.ೆ仧ݖ; [B5, B6, V5, V6]; xn--4xa229nbu92a.xn--9ob79ycx2e; ; ;  # σ🃡⒗.ೆ仧ݖ
-xn--4xa595lz9czy52d.xn--9ob79ycx2e; ‌σ🃡⒗.ೆ仧ݖ; [B1, B5, B6, C1, V5, V6]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; ;  # σ🃡⒗.ೆ仧ݖ
-xn--3xa795lz9czy52d.xn--9ob79ycx2e; ‌ς🃡⒗.ೆ仧ݖ; [B1, B5, B6, C1, V5, V6]; xn--3xa795lz9czy52d.xn--9ob79ycx2e; ; ;  # ς🃡⒗.ೆ仧ݖ
--.𞸚; -.ظ; [B1, V3]; -.xn--3gb; ; ;  # -.ظ
--.ظ; ; [B1, V3]; -.xn--3gb; ; ;  # -.ظ
--.xn--3gb; -.ظ; [B1, V3]; -.xn--3gb; ; ;  # -.ظ
-򏛓ڃ.ཾش; ; [B1, B5, B6, P1, V5, V6]; xn--8ib92728i.xn--zgb968b; ; ;  # ڃ.ཾش
-xn--8ib92728i.xn--zgb968b; 򏛓ڃ.ཾش; [B1, B5, B6, V5, V6]; xn--8ib92728i.xn--zgb968b; ; ;  # ڃ.ཾش
-࿦ࡃ񽶬.𐮏; ; [B5, P1, V6]; xn--1vb320b5m04p.xn--m29c; ; ;  # ࡃ.𐮏
-xn--1vb320b5m04p.xn--m29c; ࿦ࡃ񽶬.𐮏; [B5, V6]; xn--1vb320b5m04p.xn--m29c; ; ;  # ࡃ.𐮏
-2񎨠ߋß。ᠽ; 2񎨠ߋß.ᠽ; [B1, P1, V6]; xn--2-qfa924cez02l.xn--w7e; ; xn--2ss-odg83511n.xn--w7e;  # 2ߋß.ᠽ
-2񎨠ߋSS。ᠽ; 2񎨠ߋss.ᠽ; [B1, P1, V6]; xn--2ss-odg83511n.xn--w7e; ; ;  # 2ߋss.ᠽ
-2񎨠ߋss。ᠽ; 2񎨠ߋss.ᠽ; [B1, P1, V6]; xn--2ss-odg83511n.xn--w7e; ; ;  # 2ߋss.ᠽ
-xn--2ss-odg83511n.xn--w7e; 2񎨠ߋss.ᠽ; [B1, V6]; xn--2ss-odg83511n.xn--w7e; ; ;  # 2ߋss.ᠽ
-xn--2-qfa924cez02l.xn--w7e; 2񎨠ߋß.ᠽ; [B1, V6]; xn--2-qfa924cez02l.xn--w7e; ; ;  # 2ߋß.ᠽ
-2񎨠ߋSs。ᠽ; 2񎨠ߋss.ᠽ; [B1, P1, V6]; xn--2ss-odg83511n.xn--w7e; ; ;  # 2ߋss.ᠽ
-㸳ߊ≮．ێß-‍; 㸳ߊ≮.ێß-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێß-
-㸳ߊ≮．ێß-‍; 㸳ߊ≮.ێß-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێß-
-㸳ߊ≮.ێß-‍; ; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێß-
-㸳ߊ≮.ێß-‍; 㸳ߊ≮.ێß-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێß-
-㸳ߊ≮.ێSS-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳ߊ≮.ێSS-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳ߊ≮.ێss-‍; ; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳ߊ≮.ێss-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-xn--lsb457kkut.xn--ss--qjf; 㸳ߊ≮.ێss-; [B2, B3, B5, B6, V3, V6]; xn--lsb457kkut.xn--ss--qjf; ; ;  # 㸳ߊ≮.ێss-
-xn--lsb457kkut.xn--ss--qjf2343a; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; ;  # 㸳ߊ≮.ێss-
-xn--lsb457kkut.xn----pfa076bys4a; 㸳ߊ≮.ێß-‍; [B2, B3, B5, B6, C2, V6]; xn--lsb457kkut.xn----pfa076bys4a; ; ;  # 㸳ߊ≮.ێß-
-㸳ߊ≮．ێSS-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳ߊ≮．ێSS-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳ߊ≮．ێss-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳ߊ≮．ێss-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳ߊ≮.ێSs-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳ߊ≮.ێSs-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳ߊ≮．ێSs-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
-㸳ߊ≮．ێSs-‍; 㸳ߊ≮.ێss-‍; [B2, B3, B5, B6, C2, P1, V6]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, P1, V3, V6] # 㸳ߊ≮.ێss-
--򷝬፞𑜧.ᷫ-︒; ; [P1, V3, V5, V6]; xn----b5h1837n2ok9f.xn----mkmw278h; ; ;  # -፞𑜧.ᷫ-︒
--򷝬፞𑜧.ᷫ-。; -򷝬፞𑜧.ᷫ-.; [P1, V3, V5, V6]; xn----b5h1837n2ok9f.xn----mkm.; ; ;  # -፞𑜧.ᷫ-.
-xn----b5h1837n2ok9f.xn----mkm.; -򷝬፞𑜧.ᷫ-.; [V3, V5, V6]; xn----b5h1837n2ok9f.xn----mkm.; ; ;  # -፞𑜧.ᷫ-.
-xn----b5h1837n2ok9f.xn----mkmw278h; -򷝬፞𑜧.ᷫ-︒; [V3, V5, V6]; xn----b5h1837n2ok9f.xn----mkmw278h; ; ;  # -፞𑜧.ᷫ-︒
-︒.򚠡ᩙ; ; [P1, V6]; xn--y86c.xn--cof61594i; ; ;  # ︒.ᩙ
-。.򚠡ᩙ; ..򚠡ᩙ; [P1, V6, X4_2]; ..xn--cof61594i; [P1, V6, A4_2]; ;  # ..ᩙ
-..xn--cof61594i; ..򚠡ᩙ; [V6, X4_2]; ..xn--cof61594i; [V6, A4_2]; ;  # ..ᩙ
-xn--y86c.xn--cof61594i; ︒.򚠡ᩙ; [V6]; xn--y86c.xn--cof61594i; ; ;  # ︒.ᩙ
-̣ⷡ。‌⓾‌ڹ; ̣ⷡ.‌⓾‌ڹ; [B1, B3, B6, C1, V5]; xn--kta899s.xn--skb970ka771c; ; xn--kta899s.xn--skb116m; [B1, B3, B6, V5] # ̣ⷡ.⓾ڹ
-xn--kta899s.xn--skb116m; ̣ⷡ.⓾ڹ; [B1, B3, B6, V5]; xn--kta899s.xn--skb116m; ; ;  # ̣ⷡ.⓾ڹ
-xn--kta899s.xn--skb970ka771c; ̣ⷡ.‌⓾‌ڹ; [B1, B3, B6, C1, V5]; xn--kta899s.xn--skb970ka771c; ; ;  # ̣ⷡ.⓾ڹ
-𞠶ᠴ۝｡ၴ𞤵󠅦; 𞠶ᠴ۝.ၴ𞤵; [B1, B2, P1, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ;  # 𞠶ᠴ.ၴ𞤵
-𞠶ᠴ۝。ၴ𞤵󠅦; 𞠶ᠴ۝.ၴ𞤵; [B1, B2, P1, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ;  # 𞠶ᠴ.ၴ𞤵
-𞠶ᠴ۝。ၴ𞤓󠅦; 𞠶ᠴ۝.ၴ𞤵; [B1, B2, P1, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ;  # 𞠶ᠴ.ၴ𞤵
-xn--tlb199fwl35a.xn--yld4613v; 𞠶ᠴ۝.ၴ𞤵; [B1, B2, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ;  # 𞠶ᠴ.ၴ𞤵
-𞠶ᠴ۝｡ၴ𞤓󠅦; 𞠶ᠴ۝.ၴ𞤵; [B1, B2, P1, V5, V6]; xn--tlb199fwl35a.xn--yld4613v; ; ;  # 𞠶ᠴ.ၴ𞤵
-𑰺.-򑟏; ; [P1, V3, V5, V6]; xn--jk3d.xn----iz68g; ; ;  # 𑰺.-
-xn--jk3d.xn----iz68g; 𑰺.-򑟏; [V3, V5, V6]; xn--jk3d.xn----iz68g; ; ;  # 𑰺.-
-󠻩．赏; 󠻩.赏; [P1, V6]; xn--2856e.xn--6o3a; ; ;  # .赏
-󠻩.赏; ; [P1, V6]; xn--2856e.xn--6o3a; ; ;  # .赏
-xn--2856e.xn--6o3a; 󠻩.赏; [V6]; xn--2856e.xn--6o3a; ; ;  # .赏
-ڰᠡ｡Ⴁ; ڰᠡ.Ⴁ; [B2, B3, P1, V6]; xn--jkb440g.xn--8md; ; ;  # ڰᠡ.Ⴁ
-ڰᠡ。Ⴁ; ڰᠡ.Ⴁ; [B2, B3, P1, V6]; xn--jkb440g.xn--8md; ; ;  # ڰᠡ.Ⴁ
-ڰᠡ。ⴁ; ڰᠡ.ⴁ; [B2, B3]; xn--jkb440g.xn--skj; ; ;  # ڰᠡ.ⴁ
-xn--jkb440g.xn--skj; ڰᠡ.ⴁ; [B2, B3]; xn--jkb440g.xn--skj; ; ;  # ڰᠡ.ⴁ
-xn--jkb440g.xn--8md; ڰᠡ.Ⴁ; [B2, B3, V6]; xn--jkb440g.xn--8md; ; ;  # ڰᠡ.Ⴁ
-ڰᠡ｡ⴁ; ڰᠡ.ⴁ; [B2, B3]; xn--jkb440g.xn--skj; ; ;  # ڰᠡ.ⴁ
-⃞Ⴊڻς｡-; ⃞Ⴊڻς.-; [B1, P1, V3, V5, V6]; xn--3xa53m7zmb0q.-; ; xn--4xa33m7zmb0q.-;  # ⃞Ⴊڻς.-
-⃞Ⴊڻς。-; ⃞Ⴊڻς.-; [B1, P1, V3, V5, V6]; xn--3xa53m7zmb0q.-; ; xn--4xa33m7zmb0q.-;  # ⃞Ⴊڻς.-
-⃞ⴊڻς。-; ⃞ⴊڻς.-; [B1, V3, V5]; xn--3xa53mr38aeel.-; ; xn--4xa33mr38aeel.-;  # ⃞ⴊڻς.-
-⃞ႪڻΣ。-; ⃞Ⴊڻσ.-; [B1, P1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ;  # ⃞Ⴊڻσ.-
-⃞ⴊڻσ。-; ⃞ⴊڻσ.-; [B1, V3, V5]; xn--4xa33mr38aeel.-; ; ;  # ⃞ⴊڻσ.-
-⃞Ⴊڻσ。-; ⃞Ⴊڻσ.-; [B1, P1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ;  # ⃞Ⴊڻσ.-
-xn--4xa33m7zmb0q.-; ⃞Ⴊڻσ.-; [B1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ;  # ⃞Ⴊڻσ.-
-xn--4xa33mr38aeel.-; ⃞ⴊڻσ.-; [B1, V3, V5]; xn--4xa33mr38aeel.-; ; ;  # ⃞ⴊڻσ.-
-xn--3xa53mr38aeel.-; ⃞ⴊڻς.-; [B1, V3, V5]; xn--3xa53mr38aeel.-; ; ;  # ⃞ⴊڻς.-
-xn--3xa53m7zmb0q.-; ⃞Ⴊڻς.-; [B1, V3, V5, V6]; xn--3xa53m7zmb0q.-; ; ;  # ⃞Ⴊڻς.-
-⃞ⴊڻς｡-; ⃞ⴊڻς.-; [B1, V3, V5]; xn--3xa53mr38aeel.-; ; xn--4xa33mr38aeel.-;  # ⃞ⴊڻς.-
-⃞ႪڻΣ｡-; ⃞Ⴊڻσ.-; [B1, P1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ;  # ⃞Ⴊڻσ.-
-⃞ⴊڻσ｡-; ⃞ⴊڻσ.-; [B1, V3, V5]; xn--4xa33mr38aeel.-; ; ;  # ⃞ⴊڻσ.-
-⃞Ⴊڻσ｡-; ⃞Ⴊڻσ.-; [B1, P1, V3, V5, V6]; xn--4xa33m7zmb0q.-; ; ;  # ⃞Ⴊڻσ.-
-Ⴍ．񍇦‌; Ⴍ.񍇦‌; [C1, P1, V6]; xn--lnd.xn--0ug56448b; ; xn--lnd.xn--p01x; [P1, V6] # Ⴍ.
-Ⴍ.񍇦‌; ; [C1, P1, V6]; xn--lnd.xn--0ug56448b; ; xn--lnd.xn--p01x; [P1, V6] # Ⴍ.
-ⴍ.񍇦‌; ; [C1, P1, V6]; xn--4kj.xn--0ug56448b; ; xn--4kj.xn--p01x; [P1, V6] # ⴍ.
-xn--4kj.xn--p01x; ⴍ.񍇦; [V6]; xn--4kj.xn--p01x; ; ;  # ⴍ.
-xn--4kj.xn--0ug56448b; ⴍ.񍇦‌; [C1, V6]; xn--4kj.xn--0ug56448b; ; ;  # ⴍ.
-xn--lnd.xn--p01x; Ⴍ.񍇦; [V6]; xn--lnd.xn--p01x; ; ;  # Ⴍ.
-xn--lnd.xn--0ug56448b; Ⴍ.񍇦‌; [C1, V6]; xn--lnd.xn--0ug56448b; ; ;  # Ⴍ.
-ⴍ．񍇦‌; ⴍ.񍇦‌; [C1, P1, V6]; xn--4kj.xn--0ug56448b; ; xn--4kj.xn--p01x; [P1, V6] # ⴍ.
-򉟂󠵣.𐫫᩠󴺖᭄; ; [B2, B3, B6, P1, V6]; xn--9u37blu98h.xn--jof13bt568cork1j; ; ;  # .𐫫᩠᭄
-xn--9u37blu98h.xn--jof13bt568cork1j; 򉟂󠵣.𐫫᩠󴺖᭄; [B2, B3, B6, V6]; xn--9u37blu98h.xn--jof13bt568cork1j; ; ;  # .𐫫᩠᭄
-≯❊ᠯ｡𐹱⺨; ≯❊ᠯ.𐹱⺨; [B1, P1, V6]; xn--i7e163ct2d.xn--vwj7372e; ; ;  # ≯❊ᠯ.𐹱⺨
-≯❊ᠯ｡𐹱⺨; ≯❊ᠯ.𐹱⺨; [B1, P1, V6]; xn--i7e163ct2d.xn--vwj7372e; ; ;  # ≯❊ᠯ.𐹱⺨
-≯❊ᠯ。𐹱⺨; ≯❊ᠯ.𐹱⺨; [B1, P1, V6]; xn--i7e163ct2d.xn--vwj7372e; ; ;  # ≯❊ᠯ.𐹱⺨
-≯❊ᠯ。𐹱⺨; ≯❊ᠯ.𐹱⺨; [B1, P1, V6]; xn--i7e163ct2d.xn--vwj7372e; ; ;  # ≯❊ᠯ.𐹱⺨
-xn--i7e163ct2d.xn--vwj7372e; ≯❊ᠯ.𐹱⺨; [B1, V6]; xn--i7e163ct2d.xn--vwj7372e; ; ;  # ≯❊ᠯ.𐹱⺨
-􁕜𐹧𞭁𐹩。Ⴈ𐫮Ⴏ; 􁕜𐹧𞭁𐹩.Ⴈ𐫮Ⴏ; [B5, B6, P1, V6]; xn--fo0de1270ope54j.xn--gndo2033q; ; ;  # 𐹧𐹩.Ⴈ𐫮Ⴏ
-􁕜𐹧𞭁𐹩。ⴈ𐫮ⴏ; 􁕜𐹧𞭁𐹩.ⴈ𐫮ⴏ; [B5, B6, P1, V6]; xn--fo0de1270ope54j.xn--zkjo0151o; ; ;  # 𐹧𐹩.ⴈ𐫮ⴏ
-xn--fo0de1270ope54j.xn--zkjo0151o; 􁕜𐹧𞭁𐹩.ⴈ𐫮ⴏ; [B5, B6, V6]; xn--fo0de1270ope54j.xn--zkjo0151o; ; ;  # 𐹧𐹩.ⴈ𐫮ⴏ
-xn--fo0de1270ope54j.xn--gndo2033q; 􁕜𐹧𞭁𐹩.Ⴈ𐫮Ⴏ; [B5, B6, V6]; xn--fo0de1270ope54j.xn--gndo2033q; ; ;  # 𐹧𐹩.Ⴈ𐫮Ⴏ
-𞠂。ꤦ; 𞠂.ꤦ; [B1, B3, B6, V5]; xn--145h.xn--ti9a; ; ;  # 𞠂.ꤦ
-xn--145h.xn--ti9a; 𞠂.ꤦ; [B1, B3, B6, V5]; xn--145h.xn--ti9a; ; ;  # 𞠂.ꤦ
-𝟔𐹫．့ܳ９ꡇ; 6𐹫.့ܳ9ꡇ; [B1, V5]; xn--6-t26i.xn--9-91c730e8u8n; ; ;  # 6𐹫.့ܳ9ꡇ
-𝟔𐹫．့ܳ９ꡇ; 6𐹫.့ܳ9ꡇ; [B1, V5]; xn--6-t26i.xn--9-91c730e8u8n; ; ;  # 6𐹫.့ܳ9ꡇ
-6𐹫.့ܳ9ꡇ; ; [B1, V5]; xn--6-t26i.xn--9-91c730e8u8n; ; ;  # 6𐹫.့ܳ9ꡇ
-xn--6-t26i.xn--9-91c730e8u8n; 6𐹫.့ܳ9ꡇ; [B1, V5]; xn--6-t26i.xn--9-91c730e8u8n; ; ;  # 6𐹫.့ܳ9ꡇ
-ܤ؃𞲶．ۘ; ܤ؃𞲶.ۘ; [B1, B3, B6, P1, V5, V6]; xn--lfb19ct414i.xn--olb; ; ;  # ܤ.ۘ
-ܤ؃𞲶.ۘ; ; [B1, B3, B6, P1, V5, V6]; xn--lfb19ct414i.xn--olb; ; ;  # ܤ.ۘ
-xn--lfb19ct414i.xn--olb; ܤ؃𞲶.ۘ; [B1, B3, B6, V5, V6]; xn--lfb19ct414i.xn--olb; ; ;  # ܤ.ۘ
-✆񱔩ꡋ．ز‍𞣴; ✆񱔩ꡋ.ز‍𞣴; [B1, C2, P1, V6]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; xn--1biv525bcix0d.xn--xgb6828v; [B1, P1, V6] # ✆ꡋ.ز
-✆񱔩ꡋ.ز‍𞣴; ; [B1, C2, P1, V6]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; xn--1biv525bcix0d.xn--xgb6828v; [B1, P1, V6] # ✆ꡋ.ز
-xn--1biv525bcix0d.xn--xgb6828v; ✆񱔩ꡋ.ز𞣴; [B1, V6]; xn--1biv525bcix0d.xn--xgb6828v; ; ;  # ✆ꡋ.ز
-xn--1biv525bcix0d.xn--xgb253k0m73a; ✆񱔩ꡋ.ز‍𞣴; [B1, C2, V6]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; ;  # ✆ꡋ.ز
-ࡅ񃾰𞸍-．≠򃁟𑋪; ࡅ񃾰ن-.≠򃁟𑋪; [B1, B2, B3, P1, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ;  # ࡅن-.≠𑋪
-ࡅ񃾰𞸍-．≠򃁟𑋪; ࡅ񃾰ن-.≠򃁟𑋪; [B1, B2, B3, P1, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ;  # ࡅن-.≠𑋪
-ࡅ񃾰ن-.≠򃁟𑋪; ; [B1, B2, B3, P1, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ;  # ࡅن-.≠𑋪
-ࡅ񃾰ن-.≠򃁟𑋪; ࡅ񃾰ن-.≠򃁟𑋪; [B1, B2, B3, P1, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ;  # ࡅن-.≠𑋪
-xn----qoc64my971s.xn--1ch7585g76o3c; ࡅ񃾰ن-.≠򃁟𑋪; [B1, B2, B3, V3, V6]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ;  # ࡅن-.≠𑋪
+\u0829\u0724.ᢣ; ; [B1, V6]; xn--unb53c.xn--tbf; ; ;  # ࠩܤ.ᢣ
+xn--unb53c.xn--tbf; \u0829\u0724.ᢣ; [B1, V6]; xn--unb53c.xn--tbf; ; ;  # ࠩܤ.ᢣ
+\u073C\u200C-。𓐾ß; \u073C\u200C-.𓐾ß; [C1, V3, V6, V7]; xn----s2c071q.xn--zca7848m; ; xn----s2c.xn--ss-066q; [V3, V6, V7] # ܼ-.ß
+\u073C\u200C-。𓐾SS; \u073C\u200C-.𓐾ss; [C1, V3, V6, V7]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [V3, V6, V7] # ܼ-.ss
+\u073C\u200C-。𓐾ss; \u073C\u200C-.𓐾ss; [C1, V3, V6, V7]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [V3, V6, V7] # ܼ-.ss
+\u073C\u200C-。𓐾Ss; \u073C\u200C-.𓐾ss; [C1, V3, V6, V7]; xn----s2c071q.xn--ss-066q; ; xn----s2c.xn--ss-066q; [V3, V6, V7] # ܼ-.ss
+xn----s2c.xn--ss-066q; \u073C-.𓐾ss; [V3, V6, V7]; xn----s2c.xn--ss-066q; ; ;  # ܼ-.ss
+xn----s2c071q.xn--ss-066q; \u073C\u200C-.𓐾ss; [C1, V3, V6, V7]; xn----s2c071q.xn--ss-066q; ; ;  # ܼ-.ss
+xn----s2c071q.xn--zca7848m; \u073C\u200C-.𓐾ß; [C1, V3, V6, V7]; xn----s2c071q.xn--zca7848m; ; ;  # ܼ-.ß
+\u200Cς🃡⒗.\u0CC6仧\u0756; ; [B1, B5, B6, C1, V6, V7]; xn--3xa795lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, V6, V7] # ς🃡⒗.ೆ仧ݖ
+\u200Cς🃡16..\u0CC6仧\u0756; ; [B1, B5, B6, C1, V6, X4_2]; xn--16-rbc1800avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V6, A4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V6, A4_2] # ς🃡16..ೆ仧ݖ
+\u200CΣ🃡16..\u0CC6仧\u0756; \u200Cσ🃡16..\u0CC6仧\u0756; [B1, B5, B6, C1, V6, X4_2]; xn--16-ubc7700avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V6, A4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V6, A4_2] # σ🃡16..ೆ仧ݖ
+\u200Cσ🃡16..\u0CC6仧\u0756; ; [B1, B5, B6, C1, V6, X4_2]; xn--16-ubc7700avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V6, A4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V6, A4_2] # σ🃡16..ೆ仧ݖ
+xn--16-ubc66061c..xn--9ob79ycx2e; σ🃡16..\u0CC6仧\u0756; [B5, B6, V6, X4_2]; xn--16-ubc66061c..xn--9ob79ycx2e; [B5, B6, V6, A4_2]; ;  # σ🃡16..ೆ仧ݖ
+xn--16-ubc7700avy99b..xn--9ob79ycx2e; \u200Cσ🃡16..\u0CC6仧\u0756; [B1, B5, B6, C1, V6, X4_2]; xn--16-ubc7700avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V6, A4_2]; ;  # σ🃡16..ೆ仧ݖ
+xn--16-rbc1800avy99b..xn--9ob79ycx2e; \u200Cς🃡16..\u0CC6仧\u0756; [B1, B5, B6, C1, V6, X4_2]; xn--16-rbc1800avy99b..xn--9ob79ycx2e; [B1, B5, B6, C1, V6, A4_2]; ;  # ς🃡16..ೆ仧ݖ
+\u200CΣ🃡⒗.\u0CC6仧\u0756; \u200Cσ🃡⒗.\u0CC6仧\u0756; [B1, B5, B6, C1, V6, V7]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, V6, V7] # σ🃡⒗.ೆ仧ݖ
+\u200Cσ🃡⒗.\u0CC6仧\u0756; ; [B1, B5, B6, C1, V6, V7]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; xn--4xa229nbu92a.xn--9ob79ycx2e; [B5, B6, V6, V7] # σ🃡⒗.ೆ仧ݖ
+xn--4xa229nbu92a.xn--9ob79ycx2e; σ🃡⒗.\u0CC6仧\u0756; [B5, B6, V6, V7]; xn--4xa229nbu92a.xn--9ob79ycx2e; ; ;  # σ🃡⒗.ೆ仧ݖ
+xn--4xa595lz9czy52d.xn--9ob79ycx2e; \u200Cσ🃡⒗.\u0CC6仧\u0756; [B1, B5, B6, C1, V6, V7]; xn--4xa595lz9czy52d.xn--9ob79ycx2e; ; ;  # σ🃡⒗.ೆ仧ݖ
+xn--3xa795lz9czy52d.xn--9ob79ycx2e; \u200Cς🃡⒗.\u0CC6仧\u0756; [B1, B5, B6, C1, V6, V7]; xn--3xa795lz9czy52d.xn--9ob79ycx2e; ; ;  # ς🃡⒗.ೆ仧ݖ
+-.𞸚; -.\u0638; [B1, V3]; -.xn--3gb; ; ;  # -.ظ
+-.\u0638; ; [B1, V3]; -.xn--3gb; ; ;  # -.ظ
+-.xn--3gb; -.\u0638; [B1, V3]; -.xn--3gb; ; ;  # -.ظ
+򏛓\u0683.\u0F7E\u0634; ; [B1, B5, B6, V6, V7]; xn--8ib92728i.xn--zgb968b; ; ;  # ڃ.ཾش
+xn--8ib92728i.xn--zgb968b; 򏛓\u0683.\u0F7E\u0634; [B1, B5, B6, V6, V7]; xn--8ib92728i.xn--zgb968b; ; ;  # ڃ.ཾش
+\u0FE6\u0843񽶬.𐮏; ; [B5, V7]; xn--1vb320b5m04p.xn--m29c; ; ;  # ࡃ.𐮏
+xn--1vb320b5m04p.xn--m29c; \u0FE6\u0843񽶬.𐮏; [B5, V7]; xn--1vb320b5m04p.xn--m29c; ; ;  # ࡃ.𐮏
+2񎨠\u07CBß。ᠽ; 2񎨠\u07CBß.ᠽ; [B1, V7]; xn--2-qfa924cez02l.xn--w7e; ; xn--2ss-odg83511n.xn--w7e;  # 2ߋß.ᠽ
+2񎨠\u07CBSS。ᠽ; 2񎨠\u07CBss.ᠽ; [B1, V7]; xn--2ss-odg83511n.xn--w7e; ; ;  # 2ߋss.ᠽ
+2񎨠\u07CBss。ᠽ; 2񎨠\u07CBss.ᠽ; [B1, V7]; xn--2ss-odg83511n.xn--w7e; ; ;  # 2ߋss.ᠽ
+xn--2ss-odg83511n.xn--w7e; 2񎨠\u07CBss.ᠽ; [B1, V7]; xn--2ss-odg83511n.xn--w7e; ; ;  # 2ߋss.ᠽ
+xn--2-qfa924cez02l.xn--w7e; 2񎨠\u07CBß.ᠽ; [B1, V7]; xn--2-qfa924cez02l.xn--w7e; ; ;  # 2ߋß.ᠽ
+2񎨠\u07CBSs。ᠽ; 2񎨠\u07CBss.ᠽ; [B1, V7]; xn--2ss-odg83511n.xn--w7e; ; ;  # 2ߋss.ᠽ
+㸳\u07CA≮．\u06CEß-\u200D; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێß-
+㸳\u07CA<\u0338．\u06CEß-\u200D; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێß-
+㸳\u07CA≮.\u06CEß-\u200D; ; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێß-
+㸳\u07CA<\u0338.\u06CEß-\u200D; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn----pfa076bys4a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێß-
+㸳\u07CA<\u0338.\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮.\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮.\u06CEss-\u200D; ; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA<\u0338.\u06CEss-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+xn--lsb457kkut.xn--ss--qjf; 㸳\u07CA≮.\u06CEss-; [B2, B3, B5, B6, V3]; xn--lsb457kkut.xn--ss--qjf; ; ;  # 㸳ߊ≮.ێss-
+xn--lsb457kkut.xn--ss--qjf2343a; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; ;  # 㸳ߊ≮.ێss-
+xn--lsb457kkut.xn----pfa076bys4a; 㸳\u07CA≮.\u06CEß-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn----pfa076bys4a; ; ;  # 㸳ߊ≮.ێß-
+㸳\u07CA<\u0338．\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮．\u06CESS-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮．\u06CEss-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA<\u0338．\u06CEss-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA<\u0338.\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮.\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA<\u0338．\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+㸳\u07CA≮．\u06CESs-\u200D; 㸳\u07CA≮.\u06CEss-\u200D; [B2, B3, B5, B6, C2]; xn--lsb457kkut.xn--ss--qjf2343a; ; xn--lsb457kkut.xn--ss--qjf; [B2, B3, B5, B6, V3] # 㸳ߊ≮.ێss-
+-򷝬\u135E𑜧.\u1DEB-︒; ; [V3, V6, V7]; xn----b5h1837n2ok9f.xn----mkmw278h; ; ;  # -፞𑜧.ᷫ-︒
+-򷝬\u135E𑜧.\u1DEB-。; -򷝬\u135E𑜧.\u1DEB-.; [V3, V6, V7]; xn----b5h1837n2ok9f.xn----mkm.; [V3, V6, V7, A4_2]; ;  # -፞𑜧.ᷫ-.
+xn----b5h1837n2ok9f.xn----mkm.; -򷝬\u135E𑜧.\u1DEB-.; [V3, V6, V7]; xn----b5h1837n2ok9f.xn----mkm.; [V3, V6, V7, A4_2]; ;  # -፞𑜧.ᷫ-.
+xn----b5h1837n2ok9f.xn----mkmw278h; -򷝬\u135E𑜧.\u1DEB-︒; [V3, V6, V7]; xn----b5h1837n2ok9f.xn----mkmw278h; ; ;  # -፞𑜧.ᷫ-︒
+︒.򚠡\u1A59; ; [V7]; xn--y86c.xn--cof61594i; ; ;  # ︒.ᩙ
+。.򚠡\u1A59; ..򚠡\u1A59; [V7, X4_2]; ..xn--cof61594i; [V7, A4_2]; ;  # ..ᩙ
+..xn--cof61594i; ..򚠡\u1A59; [V7, X4_2]; ..xn--cof61594i; [V7, A4_2]; ;  # ..ᩙ
+xn--y86c.xn--cof61594i; ︒.򚠡\u1A59; [V7]; xn--y86c.xn--cof61594i; ; ;  # ︒.ᩙ
+\u0323\u2DE1。\u200C⓾\u200C\u06B9; \u0323\u2DE1.\u200C⓾\u200C\u06B9; [B1, C1, V6]; xn--kta899s.xn--skb970ka771c; ; xn--kta899s.xn--skb116m; [B1, V6] # ̣ⷡ.⓾ڹ
+xn--kta899s.xn--skb116m; \u0323\u2DE1.⓾\u06B9; [B1, V6]; xn--kta899s.xn--skb116m; ; ;  # ̣ⷡ.⓾ڹ
+xn--kta899s.xn--skb970ka771c; \u0323\u2DE1.\u200C⓾\u200C\u06B9; [B1, C1, V6]; xn--kta899s.xn--skb970ka771c; ; ;  # ̣ⷡ.⓾ڹ
+𞠶ᠴ\u06DD｡\u1074𞤵󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, V6, V7]; xn--tlb199fwl35a.xn--yld4613v; ; ;  # 𞠶ᠴ.ၴ𞤵
+𞠶ᠴ\u06DD。\u1074𞤵󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, V6, V7]; xn--tlb199fwl35a.xn--yld4613v; ; ;  # 𞠶ᠴ.ၴ𞤵
+𞠶ᠴ\u06DD。\u1074𞤓󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, V6, V7]; xn--tlb199fwl35a.xn--yld4613v; ; ;  # 𞠶ᠴ.ၴ𞤵
+xn--tlb199fwl35a.xn--yld4613v; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, V6, V7]; xn--tlb199fwl35a.xn--yld4613v; ; ;  # 𞠶ᠴ.ၴ𞤵
+𞠶ᠴ\u06DD｡\u1074𞤓󠅦; 𞠶ᠴ\u06DD.\u1074𞤵; [B1, B2, V6, V7]; xn--tlb199fwl35a.xn--yld4613v; ; ;  # 𞠶ᠴ.ၴ𞤵
+𑰺.-򑟏; ; [V3, V6, V7]; xn--jk3d.xn----iz68g; ; ;  # 𑰺.-
+xn--jk3d.xn----iz68g; 𑰺.-򑟏; [V3, V6, V7]; xn--jk3d.xn----iz68g; ; ;  # 𑰺.-
+󠻩．赏; 󠻩.赏; [V7]; xn--2856e.xn--6o3a; ; ;  # .赏
+󠻩.赏; ; [V7]; xn--2856e.xn--6o3a; ; ;  # .赏
+xn--2856e.xn--6o3a; 󠻩.赏; [V7]; xn--2856e.xn--6o3a; ; ;  # .赏
+\u06B0ᠡ｡Ⴁ; \u06B0ᠡ.ⴁ; [B2, B3]; xn--jkb440g.xn--skj; ; ;  # ڰᠡ.ⴁ
+\u06B0ᠡ。Ⴁ; \u06B0ᠡ.ⴁ; [B2, B3]; xn--jkb440g.xn--skj; ; ;  # ڰᠡ.ⴁ
+\u06B0ᠡ。ⴁ; \u06B0ᠡ.ⴁ; [B2, B3]; xn--jkb440g.xn--skj; ; ;  # ڰᠡ.ⴁ
+xn--jkb440g.xn--skj; \u06B0ᠡ.ⴁ; [B2, B3]; xn--jkb440g.xn--skj; ; ;  # ڰᠡ.ⴁ
+\u06B0ᠡ｡ⴁ; \u06B0ᠡ.ⴁ; [B2, B3]; xn--jkb440g.xn--skj; ; ;  # ڰᠡ.ⴁ
+xn--jkb440g.xn--8md; \u06B0ᠡ.Ⴁ; [B2, B3, V7]; xn--jkb440g.xn--8md; ; ;  # ڰᠡ.Ⴁ
+\u20DEႪ\u06BBς｡-; \u20DEⴊ\u06BBς.-; [B1, V3, V6]; xn--3xa53mr38aeel.-; ; xn--4xa33mr38aeel.-;  # ⃞ⴊڻς.-
+\u20DEႪ\u06BBς。-; \u20DEⴊ\u06BBς.-; [B1, V3, V6]; xn--3xa53mr38aeel.-; ; xn--4xa33mr38aeel.-;  # ⃞ⴊڻς.-
+\u20DEⴊ\u06BBς。-; \u20DEⴊ\u06BBς.-; [B1, V3, V6]; xn--3xa53mr38aeel.-; ; xn--4xa33mr38aeel.-;  # ⃞ⴊڻς.-
+\u20DEႪ\u06BBΣ。-; \u20DEⴊ\u06BBσ.-; [B1, V3, V6]; xn--4xa33mr38aeel.-; ; ;  # ⃞ⴊڻσ.-
+\u20DEⴊ\u06BBσ。-; \u20DEⴊ\u06BBσ.-; [B1, V3, V6]; xn--4xa33mr38aeel.-; ; ;  # ⃞ⴊڻσ.-
+\u20DEႪ\u06BBσ。-; \u20DEⴊ\u06BBσ.-; [B1, V3, V6]; xn--4xa33mr38aeel.-; ; ;  # ⃞ⴊڻσ.-
+xn--4xa33mr38aeel.-; \u20DEⴊ\u06BBσ.-; [B1, V3, V6]; xn--4xa33mr38aeel.-; ; ;  # ⃞ⴊڻσ.-
+xn--3xa53mr38aeel.-; \u20DEⴊ\u06BBς.-; [B1, V3, V6]; xn--3xa53mr38aeel.-; ; ;  # ⃞ⴊڻς.-
+\u20DEⴊ\u06BBς｡-; \u20DEⴊ\u06BBς.-; [B1, V3, V6]; xn--3xa53mr38aeel.-; ; xn--4xa33mr38aeel.-;  # ⃞ⴊڻς.-
+\u20DEႪ\u06BBΣ｡-; \u20DEⴊ\u06BBσ.-; [B1, V3, V6]; xn--4xa33mr38aeel.-; ; ;  # ⃞ⴊڻσ.-
+\u20DEⴊ\u06BBσ｡-; \u20DEⴊ\u06BBσ.-; [B1, V3, V6]; xn--4xa33mr38aeel.-; ; ;  # ⃞ⴊڻσ.-
+\u20DEႪ\u06BBσ｡-; \u20DEⴊ\u06BBσ.-; [B1, V3, V6]; xn--4xa33mr38aeel.-; ; ;  # ⃞ⴊڻσ.-
+xn--4xa33m7zmb0q.-; \u20DEႪ\u06BBσ.-; [B1, V3, V6, V7]; xn--4xa33m7zmb0q.-; ; ;  # ⃞Ⴊڻσ.-
+xn--3xa53m7zmb0q.-; \u20DEႪ\u06BBς.-; [B1, V3, V6, V7]; xn--3xa53m7zmb0q.-; ; ;  # ⃞Ⴊڻς.-
+Ⴍ．񍇦\u200C; ⴍ.񍇦\u200C; [C1, V7]; xn--4kj.xn--0ug56448b; ; xn--4kj.xn--p01x; [V7] # ⴍ.
+Ⴍ.񍇦\u200C; ⴍ.񍇦\u200C; [C1, V7]; xn--4kj.xn--0ug56448b; ; xn--4kj.xn--p01x; [V7] # ⴍ.
+ⴍ.񍇦\u200C; ; [C1, V7]; xn--4kj.xn--0ug56448b; ; xn--4kj.xn--p01x; [V7] # ⴍ.
+xn--4kj.xn--p01x; ⴍ.񍇦; [V7]; xn--4kj.xn--p01x; ; ;  # ⴍ.
+xn--4kj.xn--0ug56448b; ⴍ.񍇦\u200C; [C1, V7]; xn--4kj.xn--0ug56448b; ; ;  # ⴍ.
+ⴍ．񍇦\u200C; ⴍ.񍇦\u200C; [C1, V7]; xn--4kj.xn--0ug56448b; ; xn--4kj.xn--p01x; [V7] # ⴍ.
+xn--lnd.xn--p01x; Ⴍ.񍇦; [V7]; xn--lnd.xn--p01x; ; ;  # Ⴍ.
+xn--lnd.xn--0ug56448b; Ⴍ.񍇦\u200C; [C1, V7]; xn--lnd.xn--0ug56448b; ; ;  # Ⴍ.
+򉟂󠵣.𐫫\u1A60󴺖\u1B44; ; [B2, B3, B6, V7]; xn--9u37blu98h.xn--jof13bt568cork1j; ; ;  # .𐫫᩠᭄
+xn--9u37blu98h.xn--jof13bt568cork1j; 򉟂󠵣.𐫫\u1A60󴺖\u1B44; [B2, B3, B6, V7]; xn--9u37blu98h.xn--jof13bt568cork1j; ; ;  # .𐫫᩠᭄
+≯❊ᠯ｡𐹱⺨; ≯❊ᠯ.𐹱⺨; [B1]; xn--i7e163ct2d.xn--vwj7372e; ; ;  # ≯❊ᠯ.𐹱⺨
+>\u0338❊ᠯ｡𐹱⺨; ≯❊ᠯ.𐹱⺨; [B1]; xn--i7e163ct2d.xn--vwj7372e; ; ;  # ≯❊ᠯ.𐹱⺨
+≯❊ᠯ。𐹱⺨; ≯❊ᠯ.𐹱⺨; [B1]; xn--i7e163ct2d.xn--vwj7372e; ; ;  # ≯❊ᠯ.𐹱⺨
+>\u0338❊ᠯ。𐹱⺨; ≯❊ᠯ.𐹱⺨; [B1]; xn--i7e163ct2d.xn--vwj7372e; ; ;  # ≯❊ᠯ.𐹱⺨
+xn--i7e163ct2d.xn--vwj7372e; ≯❊ᠯ.𐹱⺨; [B1]; xn--i7e163ct2d.xn--vwj7372e; ; ;  # ≯❊ᠯ.𐹱⺨
+􁕜𐹧𞭁𐹩。Ⴈ𐫮Ⴏ; 􁕜𐹧𞭁𐹩.ⴈ𐫮ⴏ; [B5, B6, V7]; xn--fo0de1270ope54j.xn--zkjo0151o; ; ;  # 𐹧𐹩.ⴈ𐫮ⴏ
+􁕜𐹧𞭁𐹩。ⴈ𐫮ⴏ; 􁕜𐹧𞭁𐹩.ⴈ𐫮ⴏ; [B5, B6, V7]; xn--fo0de1270ope54j.xn--zkjo0151o; ; ;  # 𐹧𐹩.ⴈ𐫮ⴏ
+xn--fo0de1270ope54j.xn--zkjo0151o; 􁕜𐹧𞭁𐹩.ⴈ𐫮ⴏ; [B5, B6, V7]; xn--fo0de1270ope54j.xn--zkjo0151o; ; ;  # 𐹧𐹩.ⴈ𐫮ⴏ
+xn--fo0de1270ope54j.xn--gndo2033q; 􁕜𐹧𞭁𐹩.Ⴈ𐫮Ⴏ; [B5, B6, V7]; xn--fo0de1270ope54j.xn--gndo2033q; ; ;  # 𐹧𐹩.Ⴈ𐫮Ⴏ
+𞠂。\uA926; 𞠂.\uA926; [B1, V6]; xn--145h.xn--ti9a; ; ;  # 𞠂.ꤦ
+xn--145h.xn--ti9a; 𞠂.\uA926; [B1, V6]; xn--145h.xn--ti9a; ; ;  # 𞠂.ꤦ
+𝟔𐹫．\u0733\u1037９ꡇ; 6𐹫.\u1037\u07339ꡇ; [B1, V6]; xn--6-t26i.xn--9-91c730e8u8n; ; ;  # 6𐹫.့ܳ9ꡇ
+𝟔𐹫．\u1037\u0733９ꡇ; 6𐹫.\u1037\u07339ꡇ; [B1, V6]; xn--6-t26i.xn--9-91c730e8u8n; ; ;  # 6𐹫.့ܳ9ꡇ
+6𐹫.\u1037\u07339ꡇ; ; [B1, V6]; xn--6-t26i.xn--9-91c730e8u8n; ; ;  # 6𐹫.့ܳ9ꡇ
+xn--6-t26i.xn--9-91c730e8u8n; 6𐹫.\u1037\u07339ꡇ; [B1, V6]; xn--6-t26i.xn--9-91c730e8u8n; ; ;  # 6𐹫.့ܳ9ꡇ
+\u0724\u0603𞲶．\u06D8; \u0724\u0603𞲶.\u06D8; [B1, V6, V7]; xn--lfb19ct414i.xn--olb; ; ;  # ܤ.ۘ
+\u0724\u0603𞲶.\u06D8; ; [B1, V6, V7]; xn--lfb19ct414i.xn--olb; ; ;  # ܤ.ۘ
+xn--lfb19ct414i.xn--olb; \u0724\u0603𞲶.\u06D8; [B1, V6, V7]; xn--lfb19ct414i.xn--olb; ; ;  # ܤ.ۘ
+✆񱔩ꡋ．\u0632\u200D𞣴; ✆񱔩ꡋ.\u0632\u200D𞣴; [B1, C2, V7]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; xn--1biv525bcix0d.xn--xgb6828v; [B1, V7] # ✆ꡋ.ز
+✆񱔩ꡋ.\u0632\u200D𞣴; ; [B1, C2, V7]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; xn--1biv525bcix0d.xn--xgb6828v; [B1, V7] # ✆ꡋ.ز
+xn--1biv525bcix0d.xn--xgb6828v; ✆񱔩ꡋ.\u0632𞣴; [B1, V7]; xn--1biv525bcix0d.xn--xgb6828v; ; ;  # ✆ꡋ.ز
+xn--1biv525bcix0d.xn--xgb253k0m73a; ✆񱔩ꡋ.\u0632\u200D𞣴; [B1, C2, V7]; xn--1biv525bcix0d.xn--xgb253k0m73a; ; ;  # ✆ꡋ.ز
+\u0845񃾰𞸍-．≠򃁟𑋪; \u0845񃾰\u0646-.≠򃁟𑋪; [B1, B2, B3, V3, V7]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ;  # ࡅن-.≠𑋪
+\u0845񃾰𞸍-．=\u0338򃁟𑋪; \u0845񃾰\u0646-.≠򃁟𑋪; [B1, B2, B3, V3, V7]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ;  # ࡅن-.≠𑋪
+\u0845񃾰\u0646-.≠򃁟𑋪; ; [B1, B2, B3, V3, V7]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ;  # ࡅن-.≠𑋪
+\u0845񃾰\u0646-.=\u0338򃁟𑋪; \u0845񃾰\u0646-.≠򃁟𑋪; [B1, B2, B3, V3, V7]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ;  # ࡅن-.≠𑋪
+xn----qoc64my971s.xn--1ch7585g76o3c; \u0845񃾰\u0646-.≠򃁟𑋪; [B1, B2, B3, V3, V7]; xn----qoc64my971s.xn--1ch7585g76o3c; ; ;  # ࡅن-.≠𑋪
 𝟛．笠; 3.笠; ; 3.xn--6vz; ; ;  # 3.笠
 𝟛．笠; 3.笠; ; 3.xn--6vz; ; ;  # 3.笠
 3.笠; ; ; 3.xn--6vz; ; ;  # 3.笠
 3.xn--6vz; 3.笠; ; 3.xn--6vz; ; ;  # 3.笠
--‍.Ⴞ𐋷; ; [C2, P1, V3, V6]; xn----ugn.xn--2nd2315j; ; -.xn--2nd2315j; [P1, V3, V6] # -.Ⴞ𐋷
--‍.ⴞ𐋷; ; [C2, V3]; xn----ugn.xn--mlj8559d; ; -.xn--mlj8559d; [V3] # -.ⴞ𐋷
+-\u200D.Ⴞ𐋷; -\u200D.ⴞ𐋷; [C2, V3]; xn----ugn.xn--mlj8559d; ; -.xn--mlj8559d; [V3] # -.ⴞ𐋷
+-\u200D.ⴞ𐋷; ; [C2, V3]; xn----ugn.xn--mlj8559d; ; -.xn--mlj8559d; [V3] # -.ⴞ𐋷
 -.xn--mlj8559d; -.ⴞ𐋷; [V3]; -.xn--mlj8559d; ; ;  # -.ⴞ𐋷
-xn----ugn.xn--mlj8559d; -‍.ⴞ𐋷; [C2, V3]; xn----ugn.xn--mlj8559d; ; ;  # -.ⴞ𐋷
--.xn--2nd2315j; -.Ⴞ𐋷; [V3, V6]; -.xn--2nd2315j; ; ;  # -.Ⴞ𐋷
-xn----ugn.xn--2nd2315j; -‍.Ⴞ𐋷; [C2, V3, V6]; xn----ugn.xn--2nd2315j; ; ;  # -.Ⴞ𐋷
-‍ςßܱ．்; ‍ςßܱ.்; [C2, V5]; xn--zca19ln1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # ςßܱ.்
-‍ςßܱ.்; ; [C2, V5]; xn--zca19ln1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # ςßܱ.்
-‍ΣSSܱ.்; ‍σssܱ.்; [C2, V5]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σssܱ.்
-‍σssܱ.்; ; [C2, V5]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σssܱ.்
-‍Σssܱ.்; ‍σssܱ.்; [C2, V5]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σssܱ.்
-xn--ss-ubc826a.xn--xmc; σssܱ.்; [V5]; xn--ss-ubc826a.xn--xmc; ; ;  # σssܱ.்
-xn--ss-ubc826ab34b.xn--xmc; ‍σssܱ.்; [C2, V5]; xn--ss-ubc826ab34b.xn--xmc; ; ;  # σssܱ.்
-‍Σßܱ.்; ‍σßܱ.்; [C2, V5]; xn--zca39lk1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σßܱ.்
-‍σßܱ.்; ; [C2, V5]; xn--zca39lk1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σßܱ.்
-xn--zca39lk1di19a.xn--xmc; ‍σßܱ.்; [C2, V5]; xn--zca39lk1di19a.xn--xmc; ; ;  # σßܱ.்
-xn--zca19ln1di19a.xn--xmc; ‍ςßܱ.்; [C2, V5]; xn--zca19ln1di19a.xn--xmc; ; ;  # ςßܱ.்
-‍ΣSSܱ．்; ‍σssܱ.்; [C2, V5]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σssܱ.்
-‍σssܱ．்; ‍σssܱ.்; [C2, V5]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σssܱ.்
-‍Σssܱ．்; ‍σssܱ.்; [C2, V5]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σssܱ.்
-‍Σßܱ．்; ‍σßܱ.்; [C2, V5]; xn--zca39lk1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σßܱ.்
-‍σßܱ．்; ‍σßܱ.்; [C2, V5]; xn--zca39lk1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V5] # σßܱ.்
-≠．‍; ≠.‍; [C2, P1, V6]; xn--1ch.xn--1ug; ; xn--1ch.; [P1, V6] # ≠.
-≠．‍; ≠.‍; [C2, P1, V6]; xn--1ch.xn--1ug; ; xn--1ch.; [P1, V6] # ≠.
-≠.‍; ; [C2, P1, V6]; xn--1ch.xn--1ug; ; xn--1ch.; [P1, V6] # ≠.
-≠.‍; ≠.‍; [C2, P1, V6]; xn--1ch.xn--1ug; ; xn--1ch.; [P1, V6] # ≠.
-xn--1ch.; ≠.; [V6]; xn--1ch.; ; ;  # ≠.
-xn--1ch.xn--1ug; ≠.‍; [C2, V6]; xn--1ch.xn--1ug; ; ;  # ≠.
-ﰁ｡ಁᠼ▗򒁋; ئح.ಁᠼ▗򒁋; [B1, P1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ;  # ئح.ಁᠼ▗
-ئح。ಁᠼ▗򒁋; ئح.ಁᠼ▗򒁋; [B1, P1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ;  # ئح.ಁᠼ▗
-ئح。ಁᠼ▗򒁋; ئح.ಁᠼ▗򒁋; [B1, P1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ;  # ئح.ಁᠼ▗
-xn--lgbo.xn--2rc021dcxkrx55t; ئح.ಁᠼ▗򒁋; [B1, V5, V6]; xn--lgbo.xn--2rc021dcxkrx55t; ; ;  # ئح.ಁᠼ▗
-󧋵্ς．ς𐨿; 󧋵্ς.ς𐨿; [P1, V6]; xn--3xa702av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্ς.ς𐨿
-󧋵্ς.ς𐨿; ; [P1, V6]; xn--3xa702av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্ς.ς𐨿
-󧋵্Σ.Σ𐨿; 󧋵্σ.σ𐨿; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
-󧋵্σ.ς𐨿; ; [P1, V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্σ.ς𐨿
-󧋵্σ.σ𐨿; ; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
-󧋵্Σ.σ𐨿; 󧋵্σ.σ𐨿; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
-xn--4xa502av8297a.xn--4xa6055k; 󧋵্σ.σ𐨿; [V6]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
-󧋵্Σ.ς𐨿; 󧋵্σ.ς𐨿; [P1, V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্σ.ς𐨿
-xn--4xa502av8297a.xn--3xa8055k; 󧋵্σ.ς𐨿; [V6]; xn--4xa502av8297a.xn--3xa8055k; ; ;  # ্σ.ς𐨿
-xn--3xa702av8297a.xn--3xa8055k; 󧋵্ς.ς𐨿; [V6]; xn--3xa702av8297a.xn--3xa8055k; ; ;  # ্ς.ς𐨿
-󧋵্Σ．Σ𐨿; 󧋵্σ.σ𐨿; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
-󧋵্σ．ς𐨿; 󧋵্σ.ς𐨿; [P1, V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্σ.ς𐨿
-󧋵্σ．σ𐨿; 󧋵্σ.σ𐨿; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
-󧋵্Σ．σ𐨿; 󧋵্σ.σ𐨿; [P1, V6]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
-󧋵্Σ．ς𐨿; 󧋵্σ.ς𐨿; [P1, V6]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্σ.ς𐨿
-𐫓ߘ牅ࣸ｡𞦤ᨗ򱍰Ⴙ; 𐫓ߘ牅ࣸ.𞦤ᨗ򱍰Ⴙ; [B2, B3, P1, V6]; xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; ; ;  # 𐫓ߘ牅ࣸ.ᨗႹ
-𐫓ߘ牅ࣸ。𞦤ᨗ򱍰Ⴙ; 𐫓ߘ牅ࣸ.𞦤ᨗ򱍰Ⴙ; [B2, B3, P1, V6]; xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; ; ;  # 𐫓ߘ牅ࣸ.ᨗႹ
-𐫓ߘ牅ࣸ。𞦤ᨗ򱍰ⴙ; 𐫓ߘ牅ࣸ.𞦤ᨗ򱍰ⴙ; [B2, B3, P1, V6]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ;  # 𐫓ߘ牅ࣸ.ᨗⴙ
-xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; 𐫓ߘ牅ࣸ.𞦤ᨗ򱍰ⴙ; [B2, B3, V6]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ;  # 𐫓ߘ牅ࣸ.ᨗⴙ
-xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; 𐫓ߘ牅ࣸ.𞦤ᨗ򱍰Ⴙ; [B2, B3, V6]; xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; ; ;  # 𐫓ߘ牅ࣸ.ᨗႹ
-𐫓ߘ牅ࣸ｡𞦤ᨗ򱍰ⴙ; 𐫓ߘ牅ࣸ.𞦤ᨗ򱍰ⴙ; [B2, B3, P1, V6]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ;  # 𐫓ߘ牅ࣸ.ᨗⴙ
-񣤒｡륧; 񣤒.륧; [P1, V6]; xn--s264a.xn--pw2b; ; ;  # .륧
-񣤒｡륧; 񣤒.륧; [P1, V6]; xn--s264a.xn--pw2b; ; ;  # .륧
-񣤒。륧; 񣤒.륧; [P1, V6]; xn--s264a.xn--pw2b; ; ;  # .륧
-񣤒。륧; 񣤒.륧; [P1, V6]; xn--s264a.xn--pw2b; ; ;  # .륧
-xn--s264a.xn--pw2b; 񣤒.륧; [V6]; xn--s264a.xn--pw2b; ; ;  # .륧
-𐹷‍。󉵢; 𐹷‍.󉵢; [B1, C2, P1, V6]; xn--1ugx205g.xn--8088d; ; xn--vo0d.xn--8088d; [B1, P1, V6] # 𐹷.
-xn--vo0d.xn--8088d; 𐹷.󉵢; [B1, V6]; xn--vo0d.xn--8088d; ; ;  # 𐹷.
-xn--1ugx205g.xn--8088d; 𐹷‍.󉵢; [B1, C2, V6]; xn--1ugx205g.xn--8088d; ; ;  # 𐹷.
-Ⴘۂ𑲭｡-; Ⴘۂ𑲭.-; [B1, B5, B6, P1, V3, V6]; xn--1kb312c139t.-; ; ;  # Ⴘۂ𑲭.-
-Ⴘۂ𑲭｡-; Ⴘۂ𑲭.-; [B1, B5, B6, P1, V3, V6]; xn--1kb312c139t.-; ; ;  # Ⴘۂ𑲭.-
-Ⴘۂ𑲭。-; Ⴘۂ𑲭.-; [B1, B5, B6, P1, V3, V6]; xn--1kb312c139t.-; ; ;  # Ⴘۂ𑲭.-
-Ⴘۂ𑲭。-; Ⴘۂ𑲭.-; [B1, B5, B6, P1, V3, V6]; xn--1kb312c139t.-; ; ;  # Ⴘۂ𑲭.-
-ⴘۂ𑲭。-; ⴘۂ𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
-ⴘۂ𑲭。-; ⴘۂ𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
-xn--1kb147qfk3n.-; ⴘۂ𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
-xn--1kb312c139t.-; Ⴘۂ𑲭.-; [B1, B5, B6, V3, V6]; xn--1kb312c139t.-; ; ;  # Ⴘۂ𑲭.-
-ⴘۂ𑲭｡-; ⴘۂ𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
-ⴘۂ𑲭｡-; ⴘۂ𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
-꠆ٻ₆ᡐ。🛇ﳝ; ꠆ٻ6ᡐ.🛇يم; [B1, V5]; xn--6-rrc018krt9k.xn--hhbj61429a; ; ;  # ꠆ٻ6ᡐ.🛇يم
-꠆ٻ6ᡐ。🛇يم; ꠆ٻ6ᡐ.🛇يم; [B1, V5]; xn--6-rrc018krt9k.xn--hhbj61429a; ; ;  # ꠆ٻ6ᡐ.🛇يم
-xn--6-rrc018krt9k.xn--hhbj61429a; ꠆ٻ6ᡐ.🛇يم; [B1, V5]; xn--6-rrc018krt9k.xn--hhbj61429a; ; ;  # ꠆ٻ6ᡐ.🛇يم
-򸍂.㇄ᡟ𐫂آ; ; [B1, P1, V6]; xn--p292d.xn--hgb154ghrsvm2r; ; ;  # .㇄ᡟ𐫂آ
-򸍂.㇄ᡟ𐫂آ; 򸍂.㇄ᡟ𐫂آ; [B1, P1, V6]; xn--p292d.xn--hgb154ghrsvm2r; ; ;  # .㇄ᡟ𐫂آ
-xn--p292d.xn--hgb154ghrsvm2r; 򸍂.㇄ᡟ𐫂آ; [B1, V6]; xn--p292d.xn--hgb154ghrsvm2r; ; ;  # .㇄ᡟ𐫂آ
-ߟ򵚌。-ߩ; ߟ򵚌.-ߩ; [B1, B2, B3, P1, V3, V6]; xn--6sb88139l.xn----pdd; ; ;  # ߟ.-ߩ
-xn--6sb88139l.xn----pdd; ߟ򵚌.-ߩ; [B1, B2, B3, V3, V6]; xn--6sb88139l.xn----pdd; ; ;  # ߟ.-ߩ
-ςك⾑．‌ᢟ‌⒈; ςك襾.‌ᢟ‌⒈; [B1, B5, C1, P1, V6]; xn--3xa69jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, P1, V6] # ςك襾.ᢟ⒈
-ςك襾.‌ᢟ‌1.; ; [B1, B5, C1]; xn--3xa69jux8r.xn--1-4ck691bba.; ; xn--4xa49jux8r.xn--1-4ck.; [B5] # ςك襾.ᢟ1.
-Σك襾.‌ᢟ‌1.; σك襾.‌ᢟ‌1.; [B1, B5, C1]; xn--4xa49jux8r.xn--1-4ck691bba.; ; xn--4xa49jux8r.xn--1-4ck.; [B5] # σك襾.ᢟ1.
-σك襾.‌ᢟ‌1.; ; [B1, B5, C1]; xn--4xa49jux8r.xn--1-4ck691bba.; ; xn--4xa49jux8r.xn--1-4ck.; [B5] # σك襾.ᢟ1.
-xn--4xa49jux8r.xn--1-4ck.; σك襾.ᢟ1.; [B5]; xn--4xa49jux8r.xn--1-4ck.; ; ;  # σك襾.ᢟ1.
-xn--4xa49jux8r.xn--1-4ck691bba.; σك襾.‌ᢟ‌1.; [B1, B5, C1]; xn--4xa49jux8r.xn--1-4ck691bba.; ; ;  # σك襾.ᢟ1.
-xn--3xa69jux8r.xn--1-4ck691bba.; ςك襾.‌ᢟ‌1.; [B1, B5, C1]; xn--3xa69jux8r.xn--1-4ck691bba.; ; ;  # ςك襾.ᢟ1.
-Σك⾑．‌ᢟ‌⒈; σك襾.‌ᢟ‌⒈; [B1, B5, C1, P1, V6]; xn--4xa49jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, P1, V6] # σك襾.ᢟ⒈
-σك⾑．‌ᢟ‌⒈; σك襾.‌ᢟ‌⒈; [B1, B5, C1, P1, V6]; xn--4xa49jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, P1, V6] # σك襾.ᢟ⒈
-xn--4xa49jux8r.xn--pbf212d; σك襾.ᢟ⒈; [B5, V6]; xn--4xa49jux8r.xn--pbf212d; ; ;  # σك襾.ᢟ⒈
-xn--4xa49jux8r.xn--pbf519aba607b; σك襾.‌ᢟ‌⒈; [B1, B5, C1, V6]; xn--4xa49jux8r.xn--pbf519aba607b; ; ;  # σك襾.ᢟ⒈
-xn--3xa69jux8r.xn--pbf519aba607b; ςك襾.‌ᢟ‌⒈; [B1, B5, C1, V6]; xn--3xa69jux8r.xn--pbf519aba607b; ; ;  # ςك襾.ᢟ⒈
-ᡆ𑓝．𞵆; ᡆ𑓝.𞵆; [P1, V6]; xn--57e0440k.xn--k86h; ; ;  # ᡆ.
-ᡆ𑓝.𞵆; ; [P1, V6]; xn--57e0440k.xn--k86h; ; ;  # ᡆ.
-xn--57e0440k.xn--k86h; ᡆ𑓝.𞵆; [V6]; xn--57e0440k.xn--k86h; ; ;  # ᡆ.
-੍𦍓ᷮ｡‌ࢽ񝹲; ੍𦍓ᷮ.‌ࢽ񝹲; [B1, C1, P1, V5, V6]; xn--ybc461hph93b.xn--jzb740j1y45h; ; xn--ybc461hph93b.xn--jzb29857e; [B1, B2, B3, P1, V5, V6] # ੍𦍓ᷮ.ࢽ
-੍𦍓ᷮ。‌ࢽ񝹲; ੍𦍓ᷮ.‌ࢽ񝹲; [B1, C1, P1, V5, V6]; xn--ybc461hph93b.xn--jzb740j1y45h; ; xn--ybc461hph93b.xn--jzb29857e; [B1, B2, B3, P1, V5, V6] # ੍𦍓ᷮ.ࢽ
-xn--ybc461hph93b.xn--jzb29857e; ੍𦍓ᷮ.ࢽ񝹲; [B1, B2, B3, V5, V6]; xn--ybc461hph93b.xn--jzb29857e; ; ;  # ੍𦍓ᷮ.ࢽ
-xn--ybc461hph93b.xn--jzb740j1y45h; ੍𦍓ᷮ.‌ࢽ񝹲; [B1, C1, V5, V6]; xn--ybc461hph93b.xn--jzb740j1y45h; ; ;  # ੍𦍓ᷮ.ࢽ
-خ݈񅪪-．‌먿; خ݈񅪪-.‌먿; [B1, B2, B3, C1, P1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, P1, V3, V6] # خ݈-.먿
-خ݈񅪪-．‌먿; خ݈񅪪-.‌먿; [B1, B2, B3, C1, P1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, P1, V3, V6] # خ݈-.먿
-خ݈񅪪-.‌먿; ; [B1, B2, B3, C1, P1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, P1, V3, V6] # خ݈-.먿
-خ݈񅪪-.‌먿; خ݈񅪪-.‌먿; [B1, B2, B3, C1, P1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, P1, V3, V6] # خ݈-.먿
-xn----dnc06f42153a.xn--v22b; خ݈񅪪-.먿; [B2, B3, V3, V6]; xn----dnc06f42153a.xn--v22b; ; ;  # خ݈-.먿
-xn----dnc06f42153a.xn--0ug1581d; خ݈񅪪-.‌먿; [B1, B2, B3, C1, V3, V6]; xn----dnc06f42153a.xn--0ug1581d; ; ;  # خ݈-.먿
-􋿦｡ᠽ; 􋿦.ᠽ; [P1, V6]; xn--j890g.xn--w7e; ; ;  # .ᠽ
-􋿦。ᠽ; 􋿦.ᠽ; [P1, V6]; xn--j890g.xn--w7e; ; ;  # .ᠽ
-xn--j890g.xn--w7e; 􋿦.ᠽ; [V6]; xn--j890g.xn--w7e; ; ;  # .ᠽ
-嬃𝍌．‍ୄ; 嬃𝍌.‍ୄ; [C2]; xn--b6s0078f.xn--0ic557h; ; xn--b6s0078f.xn--0ic; [V5] # 嬃𝍌.ୄ
-嬃𝍌.‍ୄ; ; [C2]; xn--b6s0078f.xn--0ic557h; ; xn--b6s0078f.xn--0ic; [V5] # 嬃𝍌.ୄ
-xn--b6s0078f.xn--0ic; 嬃𝍌.ୄ; [V5]; xn--b6s0078f.xn--0ic; ; ;  # 嬃𝍌.ୄ
-xn--b6s0078f.xn--0ic557h; 嬃𝍌.‍ୄ; [C2]; xn--b6s0078f.xn--0ic557h; ; ;  # 嬃𝍌.ୄ
-؂𝌪≯．𚋲򵁨; ؂𝌪≯.𚋲򵁨; [B1, P1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ;  # 𝌪≯.
-؂𝌪≯．𚋲򵁨; ؂𝌪≯.𚋲򵁨; [B1, P1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ;  # 𝌪≯.
-؂𝌪≯.𚋲򵁨; ; [B1, P1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ;  # 𝌪≯.
-؂𝌪≯.𚋲򵁨; ؂𝌪≯.𚋲򵁨; [B1, P1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ;  # 𝌪≯.
-xn--kfb866llx01a.xn--wp1gm3570b; ؂𝌪≯.𚋲򵁨; [B1, V6]; xn--kfb866llx01a.xn--wp1gm3570b; ; ;  # 𝌪≯.
-򫾥ࢷ៌꧀.𞼠; ; [B5, P1, V6]; xn--dzb638ewm4i1iy1h.xn--3m7h; ; ;  # ࢷ៌꧀.
-xn--dzb638ewm4i1iy1h.xn--3m7h; 򫾥ࢷ៌꧀.𞼠; [B5, V6]; xn--dzb638ewm4i1iy1h.xn--3m7h; ; ;  # ࢷ៌꧀.
-‌.񟛤; ; [C1, P1, V6]; xn--0ug.xn--q823a; ; .xn--q823a; [P1, V6, A4_2] # .
-.xn--q823a; .񟛤; [V6, X4_2]; .xn--q823a; [V6, A4_2]; ;  # .
-xn--0ug.xn--q823a; ‌.񟛤; [C1, V6]; xn--0ug.xn--q823a; ; ;  # .
-򺛕Ⴃ䠅．𐸑; 򺛕Ⴃ䠅.𐸑; [P1, V6]; xn--bnd074zr557n.xn--yl0d; ; ;  # Ⴃ䠅.
-򺛕Ⴃ䠅.𐸑; ; [P1, V6]; xn--bnd074zr557n.xn--yl0d; ; ;  # Ⴃ䠅.
-򺛕ⴃ䠅.𐸑; ; [P1, V6]; xn--ukju77frl47r.xn--yl0d; ; ;  # ⴃ䠅.
-xn--ukju77frl47r.xn--yl0d; 򺛕ⴃ䠅.𐸑; [V6]; xn--ukju77frl47r.xn--yl0d; ; ;  # ⴃ䠅.
-xn--bnd074zr557n.xn--yl0d; 򺛕Ⴃ䠅.𐸑; [V6]; xn--bnd074zr557n.xn--yl0d; ; ;  # Ⴃ䠅.
-򺛕ⴃ䠅．𐸑; 򺛕ⴃ䠅.𐸑; [P1, V6]; xn--ukju77frl47r.xn--yl0d; ; ;  # ⴃ䠅.
-ᯱ𐹳𐹵𞤚｡𝟨Ⴅ; ᯱ𐹳𐹵𞤼.6Ⴅ; [B1, P1, V5, V6]; xn--zzfy954hga2415t.xn--6-h0g; ; ;  # ᯱ𐹳𐹵𞤼.6Ⴅ
-ᯱ𐹳𐹵𞤚。6Ⴅ; ᯱ𐹳𐹵𞤼.6Ⴅ; [B1, P1, V5, V6]; xn--zzfy954hga2415t.xn--6-h0g; ; ;  # ᯱ𐹳𐹵𞤼.6Ⴅ
-ᯱ𐹳𐹵𞤼。6ⴅ; ᯱ𐹳𐹵𞤼.6ⴅ; [B1, V5]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
-ᯱ𐹳𐹵𞤚。6ⴅ; ᯱ𐹳𐹵𞤼.6ⴅ; [B1, V5]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
-xn--zzfy954hga2415t.xn--6-kvs; ᯱ𐹳𐹵𞤼.6ⴅ; [B1, V5]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
-xn--zzfy954hga2415t.xn--6-h0g; ᯱ𐹳𐹵𞤼.6Ⴅ; [B1, V5, V6]; xn--zzfy954hga2415t.xn--6-h0g; ; ;  # ᯱ𐹳𐹵𞤼.6Ⴅ
-ᯱ𐹳𐹵𞤼｡𝟨ⴅ; ᯱ𐹳𐹵𞤼.6ⴅ; [B1, V5]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
-ᯱ𐹳𐹵𞤚｡𝟨ⴅ; ᯱ𐹳𐹵𞤼.6ⴅ; [B1, V5]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
--｡︒; -.︒; [P1, V3, V6]; -.xn--y86c; ; ;  # -.︒
+xn----ugn.xn--mlj8559d; -\u200D.ⴞ𐋷; [C2, V3]; xn----ugn.xn--mlj8559d; ; ;  # -.ⴞ𐋷
+-.xn--2nd2315j; -.Ⴞ𐋷; [V3, V7]; -.xn--2nd2315j; ; ;  # -.Ⴞ𐋷
+xn----ugn.xn--2nd2315j; -\u200D.Ⴞ𐋷; [C2, V3, V7]; xn----ugn.xn--2nd2315j; ; ;  # -.Ⴞ𐋷
+\u200Dςß\u0731．\u0BCD; \u200Dςß\u0731.\u0BCD; [C2, V6]; xn--zca19ln1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # ςßܱ.்
+\u200Dςß\u0731.\u0BCD; ; [C2, V6]; xn--zca19ln1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # ςßܱ.்
+\u200DΣSS\u0731.\u0BCD; \u200Dσss\u0731.\u0BCD; [C2, V6]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # σssܱ.்
+\u200Dσss\u0731.\u0BCD; ; [C2, V6]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # σssܱ.்
+\u200DΣss\u0731.\u0BCD; \u200Dσss\u0731.\u0BCD; [C2, V6]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # σssܱ.்
+xn--ss-ubc826a.xn--xmc; σss\u0731.\u0BCD; [V6]; xn--ss-ubc826a.xn--xmc; ; ;  # σssܱ.்
+xn--ss-ubc826ab34b.xn--xmc; \u200Dσss\u0731.\u0BCD; [C2, V6]; xn--ss-ubc826ab34b.xn--xmc; ; ;  # σssܱ.்
+\u200DΣß\u0731.\u0BCD; \u200Dσß\u0731.\u0BCD; [C2, V6]; xn--zca39lk1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # σßܱ.்
+\u200Dσß\u0731.\u0BCD; ; [C2, V6]; xn--zca39lk1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # σßܱ.்
+xn--zca39lk1di19a.xn--xmc; \u200Dσß\u0731.\u0BCD; [C2, V6]; xn--zca39lk1di19a.xn--xmc; ; ;  # σßܱ.்
+xn--zca19ln1di19a.xn--xmc; \u200Dςß\u0731.\u0BCD; [C2, V6]; xn--zca19ln1di19a.xn--xmc; ; ;  # ςßܱ.்
+\u200DΣSS\u0731．\u0BCD; \u200Dσss\u0731.\u0BCD; [C2, V6]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # σssܱ.்
+\u200Dσss\u0731．\u0BCD; \u200Dσss\u0731.\u0BCD; [C2, V6]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # σssܱ.்
+\u200DΣss\u0731．\u0BCD; \u200Dσss\u0731.\u0BCD; [C2, V6]; xn--ss-ubc826ab34b.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # σssܱ.்
+\u200DΣß\u0731．\u0BCD; \u200Dσß\u0731.\u0BCD; [C2, V6]; xn--zca39lk1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # σßܱ.்
+\u200Dσß\u0731．\u0BCD; \u200Dσß\u0731.\u0BCD; [C2, V6]; xn--zca39lk1di19a.xn--xmc; ; xn--ss-ubc826a.xn--xmc; [V6] # σßܱ.்
+≠．\u200D; ≠.\u200D; [C2]; xn--1ch.xn--1ug; ; xn--1ch.; [A4_2] # ≠.
+=\u0338．\u200D; ≠.\u200D; [C2]; xn--1ch.xn--1ug; ; xn--1ch.; [A4_2] # ≠.
+≠.\u200D; ; [C2]; xn--1ch.xn--1ug; ; xn--1ch.; [A4_2] # ≠.
+=\u0338.\u200D; ≠.\u200D; [C2]; xn--1ch.xn--1ug; ; xn--1ch.; [A4_2] # ≠.
+xn--1ch.; ≠.; ; xn--1ch.; [A4_2]; ;  # ≠.
+≠.; ; ; xn--1ch.; [A4_2]; ;  # ≠.
+=\u0338.; ≠.; ; xn--1ch.; [A4_2]; ;  # ≠.
+xn--1ch.xn--1ug; ≠.\u200D; [C2]; xn--1ch.xn--1ug; ; ;  # ≠.
+\uFC01｡\u0C81ᠼ▗򒁋; \u0626\u062D.\u0C81ᠼ▗򒁋; [B1, V6, V7]; xn--lgbo.xn--2rc021dcxkrx55t; ; ;  # ئح.ಁᠼ▗
+\u0626\u062D。\u0C81ᠼ▗򒁋; \u0626\u062D.\u0C81ᠼ▗򒁋; [B1, V6, V7]; xn--lgbo.xn--2rc021dcxkrx55t; ; ;  # ئح.ಁᠼ▗
+\u064A\u0654\u062D。\u0C81ᠼ▗򒁋; \u0626\u062D.\u0C81ᠼ▗򒁋; [B1, V6, V7]; xn--lgbo.xn--2rc021dcxkrx55t; ; ;  # ئح.ಁᠼ▗
+xn--lgbo.xn--2rc021dcxkrx55t; \u0626\u062D.\u0C81ᠼ▗򒁋; [B1, V6, V7]; xn--lgbo.xn--2rc021dcxkrx55t; ; ;  # ئح.ಁᠼ▗
+󧋵\u09CDς．ς𐨿; 󧋵\u09CDς.ς𐨿; [V7]; xn--3xa702av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্ς.ς𐨿
+󧋵\u09CDς.ς𐨿; ; [V7]; xn--3xa702av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্ς.ς𐨿
+󧋵\u09CDΣ.Σ𐨿; 󧋵\u09CDσ.σ𐨿; [V7]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
+󧋵\u09CDσ.ς𐨿; ; [V7]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্σ.ς𐨿
+󧋵\u09CDσ.σ𐨿; ; [V7]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
+󧋵\u09CDΣ.σ𐨿; 󧋵\u09CDσ.σ𐨿; [V7]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
+xn--4xa502av8297a.xn--4xa6055k; 󧋵\u09CDσ.σ𐨿; [V7]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
+󧋵\u09CDΣ.ς𐨿; 󧋵\u09CDσ.ς𐨿; [V7]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্σ.ς𐨿
+xn--4xa502av8297a.xn--3xa8055k; 󧋵\u09CDσ.ς𐨿; [V7]; xn--4xa502av8297a.xn--3xa8055k; ; ;  # ্σ.ς𐨿
+xn--3xa702av8297a.xn--3xa8055k; 󧋵\u09CDς.ς𐨿; [V7]; xn--3xa702av8297a.xn--3xa8055k; ; ;  # ্ς.ς𐨿
+󧋵\u09CDΣ．Σ𐨿; 󧋵\u09CDσ.σ𐨿; [V7]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
+󧋵\u09CDσ．ς𐨿; 󧋵\u09CDσ.ς𐨿; [V7]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্σ.ς𐨿
+󧋵\u09CDσ．σ𐨿; 󧋵\u09CDσ.σ𐨿; [V7]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
+󧋵\u09CDΣ．σ𐨿; 󧋵\u09CDσ.σ𐨿; [V7]; xn--4xa502av8297a.xn--4xa6055k; ; ;  # ্σ.σ𐨿
+󧋵\u09CDΣ．ς𐨿; 󧋵\u09CDσ.ς𐨿; [V7]; xn--4xa502av8297a.xn--3xa8055k; ; xn--4xa502av8297a.xn--4xa6055k;  # ্σ.ς𐨿
+𐫓\u07D8牅\u08F8｡𞦤\u1A17򱍰Ⴙ; 𐫓\u07D8牅\u08F8.𞦤\u1A17򱍰ⴙ; [B2, B3, V7]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ;  # 𐫓ߘ牅ࣸ.ᨗⴙ
+𐫓\u07D8牅\u08F8。𞦤\u1A17򱍰Ⴙ; 𐫓\u07D8牅\u08F8.𞦤\u1A17򱍰ⴙ; [B2, B3, V7]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ;  # 𐫓ߘ牅ࣸ.ᨗⴙ
+𐫓\u07D8牅\u08F8。𞦤\u1A17򱍰ⴙ; 𐫓\u07D8牅\u08F8.𞦤\u1A17򱍰ⴙ; [B2, B3, V7]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ;  # 𐫓ߘ牅ࣸ.ᨗⴙ
+xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; 𐫓\u07D8牅\u08F8.𞦤\u1A17򱍰ⴙ; [B2, B3, V7]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ;  # 𐫓ߘ牅ࣸ.ᨗⴙ
+𐫓\u07D8牅\u08F8｡𞦤\u1A17򱍰ⴙ; 𐫓\u07D8牅\u08F8.𞦤\u1A17򱍰ⴙ; [B2, B3, V7]; xn--zsb09cu46vjs6f.xn--gmf469fr883am5r1e; ; ;  # 𐫓ߘ牅ࣸ.ᨗⴙ
+xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; 𐫓\u07D8牅\u08F8.𞦤\u1A17򱍰Ⴙ; [B2, B3, V7]; xn--zsb09cu46vjs6f.xn--xnd909bv540bm5k9d; ; ;  # 𐫓ߘ牅ࣸ.ᨗႹ
+񣤒｡륧; 񣤒.륧; [V7]; xn--s264a.xn--pw2b; ; ;  # .륧
+񣤒｡륧; 񣤒.륧; [V7]; xn--s264a.xn--pw2b; ; ;  # .륧
+񣤒。륧; 񣤒.륧; [V7]; xn--s264a.xn--pw2b; ; ;  # .륧
+񣤒。륧; 񣤒.륧; [V7]; xn--s264a.xn--pw2b; ; ;  # .륧
+xn--s264a.xn--pw2b; 񣤒.륧; [V7]; xn--s264a.xn--pw2b; ; ;  # .륧
+𐹷\u200D。󉵢; 𐹷\u200D.󉵢; [B1, C2, V7]; xn--1ugx205g.xn--8088d; ; xn--vo0d.xn--8088d; [B1, V7] # 𐹷.
+xn--vo0d.xn--8088d; 𐹷.󉵢; [B1, V7]; xn--vo0d.xn--8088d; ; ;  # 𐹷.
+xn--1ugx205g.xn--8088d; 𐹷\u200D.󉵢; [B1, C2, V7]; xn--1ugx205g.xn--8088d; ; ;  # 𐹷.
+Ⴘ\u06C2𑲭｡-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
+Ⴘ\u06C1\u0654𑲭｡-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
+Ⴘ\u06C2𑲭。-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
+Ⴘ\u06C1\u0654𑲭。-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
+ⴘ\u06C1\u0654𑲭。-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
+ⴘ\u06C2𑲭。-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
+xn--1kb147qfk3n.-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
+ⴘ\u06C1\u0654𑲭｡-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
+ⴘ\u06C2𑲭｡-; ⴘ\u06C2𑲭.-; [B1, B5, B6, V3]; xn--1kb147qfk3n.-; ; ;  # ⴘۂ𑲭.-
+xn--1kb312c139t.-; Ⴘ\u06C2𑲭.-; [B1, B5, B6, V3, V7]; xn--1kb312c139t.-; ; ;  # Ⴘۂ𑲭.-
+\uA806\u067B₆ᡐ。🛇\uFCDD; \uA806\u067B6ᡐ.🛇\u064A\u0645; [B1, V6]; xn--6-rrc018krt9k.xn--hhbj61429a; ; ;  # ꠆ٻ6ᡐ.🛇يم
+\uA806\u067B6ᡐ。🛇\u064A\u0645; \uA806\u067B6ᡐ.🛇\u064A\u0645; [B1, V6]; xn--6-rrc018krt9k.xn--hhbj61429a; ; ;  # ꠆ٻ6ᡐ.🛇يم
+xn--6-rrc018krt9k.xn--hhbj61429a; \uA806\u067B6ᡐ.🛇\u064A\u0645; [B1, V6]; xn--6-rrc018krt9k.xn--hhbj61429a; ; ;  # ꠆ٻ6ᡐ.🛇يم
+򸍂.㇄ᡟ𐫂\u0622; ; [B1, V7]; xn--p292d.xn--hgb154ghrsvm2r; ; ;  # .㇄ᡟ𐫂آ
+򸍂.㇄ᡟ𐫂\u0627\u0653; 򸍂.㇄ᡟ𐫂\u0622; [B1, V7]; xn--p292d.xn--hgb154ghrsvm2r; ; ;  # .㇄ᡟ𐫂آ
+xn--p292d.xn--hgb154ghrsvm2r; 򸍂.㇄ᡟ𐫂\u0622; [B1, V7]; xn--p292d.xn--hgb154ghrsvm2r; ; ;  # .㇄ᡟ𐫂آ
+\u07DF򵚌。-\u07E9; \u07DF򵚌.-\u07E9; [B1, B2, B3, V3, V7]; xn--6sb88139l.xn----pdd; ; ;  # ߟ.-ߩ
+xn--6sb88139l.xn----pdd; \u07DF򵚌.-\u07E9; [B1, B2, B3, V3, V7]; xn--6sb88139l.xn----pdd; ; ;  # ߟ.-ߩ
+ς\u0643⾑．\u200Cᢟ\u200C⒈; ς\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, V7]; xn--3xa69jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, V7] # ςك襾.ᢟ⒈
+ς\u0643襾.\u200Cᢟ\u200C1.; ; [B1, B5, C1]; xn--3xa69jux8r.xn--1-4ck691bba.; [B1, B5, C1, A4_2]; xn--4xa49jux8r.xn--1-4ck.; [B5, A4_2] # ςك襾.ᢟ1.
+Σ\u0643襾.\u200Cᢟ\u200C1.; σ\u0643襾.\u200Cᢟ\u200C1.; [B1, B5, C1]; xn--4xa49jux8r.xn--1-4ck691bba.; [B1, B5, C1, A4_2]; xn--4xa49jux8r.xn--1-4ck.; [B5, A4_2] # σك襾.ᢟ1.
+σ\u0643襾.\u200Cᢟ\u200C1.; ; [B1, B5, C1]; xn--4xa49jux8r.xn--1-4ck691bba.; [B1, B5, C1, A4_2]; xn--4xa49jux8r.xn--1-4ck.; [B5, A4_2] # σك襾.ᢟ1.
+xn--4xa49jux8r.xn--1-4ck.; σ\u0643襾.ᢟ1.; [B5]; xn--4xa49jux8r.xn--1-4ck.; [B5, A4_2]; ;  # σك襾.ᢟ1.
+xn--4xa49jux8r.xn--1-4ck691bba.; σ\u0643襾.\u200Cᢟ\u200C1.; [B1, B5, C1]; xn--4xa49jux8r.xn--1-4ck691bba.; [B1, B5, C1, A4_2]; ;  # σك襾.ᢟ1.
+xn--3xa69jux8r.xn--1-4ck691bba.; ς\u0643襾.\u200Cᢟ\u200C1.; [B1, B5, C1]; xn--3xa69jux8r.xn--1-4ck691bba.; [B1, B5, C1, A4_2]; ;  # ςك襾.ᢟ1.
+Σ\u0643⾑．\u200Cᢟ\u200C⒈; σ\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, V7]; xn--4xa49jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, V7] # σك襾.ᢟ⒈
+σ\u0643⾑．\u200Cᢟ\u200C⒈; σ\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, V7]; xn--4xa49jux8r.xn--pbf519aba607b; ; xn--4xa49jux8r.xn--pbf212d; [B5, V7] # σك襾.ᢟ⒈
+xn--4xa49jux8r.xn--pbf212d; σ\u0643襾.ᢟ⒈; [B5, V7]; xn--4xa49jux8r.xn--pbf212d; ; ;  # σك襾.ᢟ⒈
+xn--4xa49jux8r.xn--pbf519aba607b; σ\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, V7]; xn--4xa49jux8r.xn--pbf519aba607b; ; ;  # σك襾.ᢟ⒈
+xn--3xa69jux8r.xn--pbf519aba607b; ς\u0643襾.\u200Cᢟ\u200C⒈; [B1, B5, C1, V7]; xn--3xa69jux8r.xn--pbf519aba607b; ; ;  # ςك襾.ᢟ⒈
+ᡆ𑓝．𞵆; ᡆ𑓝.𞵆; [V7]; xn--57e0440k.xn--k86h; ; ;  # ᡆ.
+ᡆ𑓝.𞵆; ; [V7]; xn--57e0440k.xn--k86h; ; ;  # ᡆ.
+xn--57e0440k.xn--k86h; ᡆ𑓝.𞵆; [V7]; xn--57e0440k.xn--k86h; ; ;  # ᡆ.
+\u0A4D𦍓\u1DEE｡\u200C\u08BD񝹲; \u0A4D𦍓\u1DEE.\u200C\u08BD񝹲; [B1, C1, V6, V7]; xn--ybc461hph93b.xn--jzb740j1y45h; ; xn--ybc461hph93b.xn--jzb29857e; [B1, B2, B3, V6, V7] # ੍𦍓ᷮ.ࢽ
+\u0A4D𦍓\u1DEE。\u200C\u08BD񝹲; \u0A4D𦍓\u1DEE.\u200C\u08BD񝹲; [B1, C1, V6, V7]; xn--ybc461hph93b.xn--jzb740j1y45h; ; xn--ybc461hph93b.xn--jzb29857e; [B1, B2, B3, V6, V7] # ੍𦍓ᷮ.ࢽ
+xn--ybc461hph93b.xn--jzb29857e; \u0A4D𦍓\u1DEE.\u08BD񝹲; [B1, B2, B3, V6, V7]; xn--ybc461hph93b.xn--jzb29857e; ; ;  # ੍𦍓ᷮ.ࢽ
+xn--ybc461hph93b.xn--jzb740j1y45h; \u0A4D𦍓\u1DEE.\u200C\u08BD񝹲; [B1, C1, V6, V7]; xn--ybc461hph93b.xn--jzb740j1y45h; ; ;  # ੍𦍓ᷮ.ࢽ
+\u062E\u0748񅪪-．\u200C먿; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, V3, V7]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, V3, V7] # خ݈-.먿
+\u062E\u0748񅪪-．\u200C먿; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, V3, V7]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, V3, V7] # خ݈-.먿
+\u062E\u0748񅪪-.\u200C먿; ; [B1, B2, B3, C1, V3, V7]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, V3, V7] # خ݈-.먿
+\u062E\u0748񅪪-.\u200C먿; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, V3, V7]; xn----dnc06f42153a.xn--0ug1581d; ; xn----dnc06f42153a.xn--v22b; [B2, B3, V3, V7] # خ݈-.먿
+xn----dnc06f42153a.xn--v22b; \u062E\u0748񅪪-.먿; [B2, B3, V3, V7]; xn----dnc06f42153a.xn--v22b; ; ;  # خ݈-.먿
+xn----dnc06f42153a.xn--0ug1581d; \u062E\u0748񅪪-.\u200C먿; [B1, B2, B3, C1, V3, V7]; xn----dnc06f42153a.xn--0ug1581d; ; ;  # خ݈-.먿
+􋿦｡ᠽ; 􋿦.ᠽ; [V7]; xn--j890g.xn--w7e; ; ;  # .ᠽ
+􋿦。ᠽ; 􋿦.ᠽ; [V7]; xn--j890g.xn--w7e; ; ;  # .ᠽ
+xn--j890g.xn--w7e; 􋿦.ᠽ; [V7]; xn--j890g.xn--w7e; ; ;  # .ᠽ
+嬃𝍌．\u200D\u0B44; 嬃𝍌.\u200D\u0B44; [C2]; xn--b6s0078f.xn--0ic557h; ; xn--b6s0078f.xn--0ic; [V6] # 嬃𝍌.ୄ
+嬃𝍌.\u200D\u0B44; ; [C2]; xn--b6s0078f.xn--0ic557h; ; xn--b6s0078f.xn--0ic; [V6] # 嬃𝍌.ୄ
+xn--b6s0078f.xn--0ic; 嬃𝍌.\u0B44; [V6]; xn--b6s0078f.xn--0ic; ; ;  # 嬃𝍌.ୄ
+xn--b6s0078f.xn--0ic557h; 嬃𝍌.\u200D\u0B44; [C2]; xn--b6s0078f.xn--0ic557h; ; ;  # 嬃𝍌.ୄ
+\u0602𝌪≯．𚋲򵁨; \u0602𝌪≯.𚋲򵁨; [B1, V7]; xn--kfb866llx01a.xn--wp1gm3570b; ; ;  # 𝌪≯.
+\u0602𝌪>\u0338．𚋲򵁨; \u0602𝌪≯.𚋲򵁨; [B1, V7]; xn--kfb866llx01a.xn--wp1gm3570b; ; ;  # 𝌪≯.
+\u0602𝌪≯.𚋲򵁨; ; [B1, V7]; xn--kfb866llx01a.xn--wp1gm3570b; ; ;  # 𝌪≯.
+\u0602𝌪>\u0338.𚋲򵁨; \u0602𝌪≯.𚋲򵁨; [B1, V7]; xn--kfb866llx01a.xn--wp1gm3570b; ; ;  # 𝌪≯.
+xn--kfb866llx01a.xn--wp1gm3570b; \u0602𝌪≯.𚋲򵁨; [B1, V7]; xn--kfb866llx01a.xn--wp1gm3570b; ; ;  # 𝌪≯.
+򫾥\u08B7\u17CC\uA9C0.𞼠; ; [B5, V7]; xn--dzb638ewm4i1iy1h.xn--3m7h; ; ;  # ࢷ៌꧀.
+xn--dzb638ewm4i1iy1h.xn--3m7h; 򫾥\u08B7\u17CC\uA9C0.𞼠; [B5, V7]; xn--dzb638ewm4i1iy1h.xn--3m7h; ; ;  # ࢷ៌꧀.
+\u200C.񟛤; ; [C1, V7]; xn--0ug.xn--q823a; ; .xn--q823a; [V7, A4_2] # .
+.xn--q823a; .񟛤; [V7, X4_2]; .xn--q823a; [V7, A4_2]; ;  # .
+xn--0ug.xn--q823a; \u200C.񟛤; [C1, V7]; xn--0ug.xn--q823a; ; ;  # .
+򺛕Ⴃ䠅．𐸑; 򺛕ⴃ䠅.𐸑; [V7]; xn--ukju77frl47r.xn--yl0d; ; ;  # ⴃ䠅.
+򺛕Ⴃ䠅.𐸑; 򺛕ⴃ䠅.𐸑; [V7]; xn--ukju77frl47r.xn--yl0d; ; ;  # ⴃ䠅.
+򺛕ⴃ䠅.𐸑; ; [V7]; xn--ukju77frl47r.xn--yl0d; ; ;  # ⴃ䠅.
+xn--ukju77frl47r.xn--yl0d; 򺛕ⴃ䠅.𐸑; [V7]; xn--ukju77frl47r.xn--yl0d; ; ;  # ⴃ䠅.
+򺛕ⴃ䠅．𐸑; 򺛕ⴃ䠅.𐸑; [V7]; xn--ukju77frl47r.xn--yl0d; ; ;  # ⴃ䠅.
+xn--bnd074zr557n.xn--yl0d; 򺛕Ⴃ䠅.𐸑; [V7]; xn--bnd074zr557n.xn--yl0d; ; ;  # Ⴃ䠅.
+\u1BF1𐹳𐹵𞤚｡𝟨Ⴅ; \u1BF1𐹳𐹵𞤼.6ⴅ; [B1, V6]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
+\u1BF1𐹳𐹵𞤚。6Ⴅ; \u1BF1𐹳𐹵𞤼.6ⴅ; [B1, V6]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
+\u1BF1𐹳𐹵𞤼。6ⴅ; \u1BF1𐹳𐹵𞤼.6ⴅ; [B1, V6]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
+\u1BF1𐹳𐹵𞤚。6ⴅ; \u1BF1𐹳𐹵𞤼.6ⴅ; [B1, V6]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
+xn--zzfy954hga2415t.xn--6-kvs; \u1BF1𐹳𐹵𞤼.6ⴅ; [B1, V6]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
+\u1BF1𐹳𐹵𞤼｡𝟨ⴅ; \u1BF1𐹳𐹵𞤼.6ⴅ; [B1, V6]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
+\u1BF1𐹳𐹵𞤚｡𝟨ⴅ; \u1BF1𐹳𐹵𞤼.6ⴅ; [B1, V6]; xn--zzfy954hga2415t.xn--6-kvs; ; ;  # ᯱ𐹳𐹵𞤼.6ⴅ
+xn--zzfy954hga2415t.xn--6-h0g; \u1BF1𐹳𐹵𞤼.6Ⴅ; [B1, V6, V7]; xn--zzfy954hga2415t.xn--6-h0g; ; ;  # ᯱ𐹳𐹵𞤼.6Ⴅ
+-｡︒; -.︒; [V3, V7]; -.xn--y86c; ; ;  # -.︒
 -。。; -..; [V3, X4_2]; ; [V3, A4_2]; ;  # -..
 -..; ; [V3, X4_2]; ; [V3, A4_2]; ;  # -..
--.xn--y86c; -.︒; [V3, V6]; -.xn--y86c; ; ;  # -.︒
-ߛჀ｡-⁵--; ߛჀ.-5--; [B1, B2, B3, P1, V2, V3, V6]; xn--2sb866b.-5--; ; ;  # ߛჀ.-5--
-ߛჀ。-5--; ߛჀ.-5--; [B1, B2, B3, P1, V2, V3, V6]; xn--2sb866b.-5--; ; ;  # ߛჀ.-5--
-ߛⴠ。-5--; ߛⴠ.-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ;  # ߛⴠ.-5--
-xn--2sb691q.-5--; ߛⴠ.-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ;  # ߛⴠ.-5--
-xn--2sb866b.-5--; ߛჀ.-5--; [B1, B2, B3, V2, V3, V6]; xn--2sb866b.-5--; ; ;  # ߛჀ.-5--
-ߛⴠ｡-⁵--; ߛⴠ.-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ;  # ߛⴠ.-5--
-≯?󠑕｡𐹷𐹻≯𐷒; ≯?󠑕.𐹷𐹻≯𐷒; [B1, P1, V6]; ≯?󠑕.xn--hdh8283gdoaqa; [B1, P1, V6, A3]; ;  # ≯.𐹷𐹻≯
-≯?󠑕｡𐹷𐹻≯𐷒; ≯?󠑕.𐹷𐹻≯𐷒; [B1, P1, V6]; ≯?󠑕.xn--hdh8283gdoaqa; [B1, P1, V6, A3]; ;  # ≯.𐹷𐹻≯
-≯?󠑕。𐹷𐹻≯𐷒; ≯?󠑕.𐹷𐹻≯𐷒; [B1, P1, V6]; ≯?󠑕.xn--hdh8283gdoaqa; [B1, P1, V6, A3]; ;  # ≯.𐹷𐹻≯
-≯?󠑕。𐹷𐹻≯𐷒; ≯?󠑕.𐹷𐹻≯𐷒; [B1, P1, V6]; ≯?󠑕.xn--hdh8283gdoaqa; [B1, P1, V6, A3]; ;  # ≯.𐹷𐹻≯
-≯?󠑕.xn--hdh8283gdoaqa; ≯?󠑕.𐹷𐹻≯𐷒; [B1, P1, V6]; ≯?󠑕.xn--hdh8283gdoaqa; [B1, P1, V6, A3]; ;  # ≯.𐹷𐹻≯
-≯?󠑕.xn--hdh8283gdoaqa; ≯?󠑕.𐹷𐹻≯𐷒; [B1, P1, V6]; ≯?󠑕.xn--hdh8283gdoaqa; [B1, P1, V6, A3]; ;  # ≯.𐹷𐹻≯
-≯?󠑕.XN--HDH8283GDOAQA; ≯?󠑕.𐹷𐹻≯𐷒; [B1, P1, V6]; ≯?󠑕.xn--hdh8283gdoaqa; [B1, P1, V6, A3]; ;  # ≯.𐹷𐹻≯
-≯?󠑕.XN--HDH8283GDOAQA; ≯?󠑕.𐹷𐹻≯𐷒; [B1, P1, V6]; ≯?󠑕.xn--hdh8283gdoaqa; [B1, P1, V6, A3]; ;  # ≯.𐹷𐹻≯
-≯?󠑕.Xn--Hdh8283gdoaqa; ≯?󠑕.𐹷𐹻≯𐷒; [B1, P1, V6]; ≯?󠑕.xn--hdh8283gdoaqa; [B1, P1, V6, A3]; ;  # ≯.𐹷𐹻≯
-≯?󠑕.Xn--Hdh8283gdoaqa; ≯?󠑕.𐹷𐹻≯𐷒; [B1, P1, V6]; ≯?󠑕.xn--hdh8283gdoaqa; [B1, P1, V6, A3]; ;  # ≯.𐹷𐹻≯
-㍔ࣦݼ‍。͆򁳊𝅶؄; ルーブルࣦݼ‍.͆򁳊𝅶؄; [B1, B5, B6, C2, P1, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; [B1, B5, B6, P1, V5, V6] # ルーブルࣦݼ.͆
-ルーブルࣦݼ‍。͆򁳊𝅶؄; ルーブルࣦݼ‍.͆򁳊𝅶؄; [B1, B5, B6, C2, P1, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; [B1, B5, B6, P1, V5, V6] # ルーブルࣦݼ.͆
-ルーブルࣦݼ‍。͆򁳊𝅶؄; ルーブルࣦݼ‍.͆򁳊𝅶؄; [B1, B5, B6, C2, P1, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; [B1, B5, B6, P1, V5, V6] # ルーブルࣦݼ.͆
-xn--dqb73el09fncab4h.xn--kua81ls548d3608b; ルーブルࣦݼ.͆򁳊𝅶؄; [B1, B5, B6, V5, V6]; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; ; ;  # ルーブルࣦݼ.͆
-xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ルーブルࣦݼ‍.͆򁳊𝅶؄; [B1, B5, B6, C2, V5, V6]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; ;  # ルーブルࣦݼ.͆
-‍.F; ‍.f; [C2]; xn--1ug.f; ; .f; [A4_2] # .f
-‍.f; ; [C2]; xn--1ug.f; ; .f; [A4_2] # .f
+-.xn--y86c; -.︒; [V3, V7]; -.xn--y86c; ; ;  # -.︒
+\u07DBჀ｡-⁵--; \u07DBⴠ.-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ;  # ߛⴠ.-5--
+\u07DBჀ。-5--; \u07DBⴠ.-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ;  # ߛⴠ.-5--
+\u07DBⴠ。-5--; \u07DBⴠ.-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ;  # ߛⴠ.-5--
+xn--2sb691q.-5--; \u07DBⴠ.-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ;  # ߛⴠ.-5--
+\u07DBⴠ｡-⁵--; \u07DBⴠ.-5--; [B1, B2, B3, V2, V3]; xn--2sb691q.-5--; ; ;  # ߛⴠ.-5--
+xn--2sb866b.-5--; \u07DBჀ.-5--; [B1, B2, B3, V2, V3, V7]; xn--2sb866b.-5--; ; ;  # ߛჀ.-5--
+≯?󠑕｡𐹷𐹻≯𐷒; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+>\u0338?󠑕｡𐹷𐹻>\u0338𐷒; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+≯?󠑕。𐹷𐹻≯𐷒; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+>\u0338?󠑕。𐹷𐹻>\u0338𐷒; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+xn--?-ogo25661n.xn--hdh8283gdoaqa; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+≯?󠑕.xn--hdh8283gdoaqa; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+>\u0338?󠑕.xn--hdh8283gdoaqa; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+>\u0338?󠑕.XN--HDH8283GDOAQA; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+≯?󠑕.XN--HDH8283GDOAQA; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+≯?󠑕.Xn--Hdh8283gdoaqa; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+>\u0338?󠑕.Xn--Hdh8283gdoaqa; ≯?󠑕.𐹷𐹻≯𐷒; [B1, V7, U1]; xn--?-ogo25661n.xn--hdh8283gdoaqa; ; ;  # ≯?.𐹷𐹻≯
+㍔\u08E6\u077C\u200D。\u0346򁳊𝅶\u0604; ルーブル\u08E6\u077C\u200D.\u0346򁳊\u0604; [B1, B5, B6, C2, V6, V7]; xn--dqb73ec22c9kp8cb1j.xn--kua81lx7141a; ; xn--dqb73el09fncab4h.xn--kua81lx7141a; [B1, B5, B6, V6, V7] # ルーブルࣦݼ.͆
+ルーブル\u08E6\u077C\u200D。\u0346򁳊𝅶\u0604; ルーブル\u08E6\u077C\u200D.\u0346򁳊\u0604; [B1, B5, B6, C2, V6, V7]; xn--dqb73ec22c9kp8cb1j.xn--kua81lx7141a; ; xn--dqb73el09fncab4h.xn--kua81lx7141a; [B1, B5, B6, V6, V7] # ルーブルࣦݼ.͆
+ルーフ\u3099ル\u08E6\u077C\u200D。\u0346򁳊𝅶\u0604; ルーブル\u08E6\u077C\u200D.\u0346򁳊\u0604; [B1, B5, B6, C2, V6, V7]; xn--dqb73ec22c9kp8cb1j.xn--kua81lx7141a; ; xn--dqb73el09fncab4h.xn--kua81lx7141a; [B1, B5, B6, V6, V7] # ルーブルࣦݼ.͆
+xn--dqb73el09fncab4h.xn--kua81lx7141a; ルーブル\u08E6\u077C.\u0346򁳊\u0604; [B1, B5, B6, V6, V7]; xn--dqb73el09fncab4h.xn--kua81lx7141a; ; ;  # ルーブルࣦݼ.͆
+xn--dqb73ec22c9kp8cb1j.xn--kua81lx7141a; ルーブル\u08E6\u077C\u200D.\u0346򁳊\u0604; [B1, B5, B6, C2, V6, V7]; xn--dqb73ec22c9kp8cb1j.xn--kua81lx7141a; ; ;  # ルーブルࣦݼ.͆
+xn--dqb73el09fncab4h.xn--kua81ls548d3608b; ルーブル\u08E6\u077C.\u0346򁳊𝅶\u0604; [B1, B5, B6, V6, V7]; xn--dqb73el09fncab4h.xn--kua81ls548d3608b; ; ;  # ルーブルࣦݼ.͆
+xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ルーブル\u08E6\u077C\u200D.\u0346򁳊𝅶\u0604; [B1, B5, B6, C2, V6, V7]; xn--dqb73ec22c9kp8cb1j.xn--kua81ls548d3608b; ; ;  # ルーブルࣦݼ.͆
+\u200D.F; \u200D.f; [C2]; xn--1ug.f; ; .f; [A4_2] # .f
+\u200D.f; ; [C2]; xn--1ug.f; ; .f; [A4_2] # .f
 .f; ; [X4_2]; ; [A4_2]; ;  # .f
-xn--1ug.f; ‍.f; [C2]; xn--1ug.f; ; ;  # .f
+xn--1ug.f; \u200D.f; [C2]; xn--1ug.f; ; ;  # .f
 f; ; ; ; ; ;  # f
-‍㨲｡ß; ‍㨲.ß; [C2]; xn--1ug914h.xn--zca; ; xn--9bm.ss; [] # 㨲.ß
-‍㨲。ß; ‍㨲.ß; [C2]; xn--1ug914h.xn--zca; ; xn--9bm.ss; [] # 㨲.ß
-‍㨲。SS; ‍㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
-‍㨲。ss; ‍㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
-‍㨲。Ss; ‍㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
+\u200D㨲｡ß; \u200D㨲.ß; [C2]; xn--1ug914h.xn--zca; ; xn--9bm.ss; [] # 㨲.ß
+\u200D㨲。ß; \u200D㨲.ß; [C2]; xn--1ug914h.xn--zca; ; xn--9bm.ss; [] # 㨲.ß
+\u200D㨲。SS; \u200D㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
+\u200D㨲。ss; \u200D㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
+\u200D㨲。Ss; \u200D㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
 xn--9bm.ss; 㨲.ss; ; xn--9bm.ss; ; ;  # 㨲.ss
 㨲.ss; ; ; xn--9bm.ss; ; ;  # 㨲.ss
 㨲.SS; 㨲.ss; ; xn--9bm.ss; ; ;  # 㨲.ss
 㨲.Ss; 㨲.ss; ; xn--9bm.ss; ; ;  # 㨲.ss
-xn--1ug914h.ss; ‍㨲.ss; [C2]; xn--1ug914h.ss; ; ;  # 㨲.ss
-xn--1ug914h.xn--zca; ‍㨲.ß; [C2]; xn--1ug914h.xn--zca; ; ;  # 㨲.ß
-‍㨲｡SS; ‍㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
-‍㨲｡ss; ‍㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
-‍㨲｡Ss; ‍㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
-؅پ｡ࢨ; ؅پ.ࢨ; [B1, P1, V6]; xn--nfb6v.xn--xyb; ; ;  # پ.ࢨ
-؅پ。ࢨ; ؅پ.ࢨ; [B1, P1, V6]; xn--nfb6v.xn--xyb; ; ;  # پ.ࢨ
-xn--nfb6v.xn--xyb; ؅پ.ࢨ; [B1, V6]; xn--nfb6v.xn--xyb; ; ;  # پ.ࢨ
-⾑ݓ𞤁。𐹵ڂ; 襾ݓ𞤣.𐹵ڂ; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ;  # 襾ݓ𞤣.𐹵ڂ
-襾ݓ𞤁。𐹵ڂ; 襾ݓ𞤣.𐹵ڂ; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ;  # 襾ݓ𞤣.𐹵ڂ
-襾ݓ𞤣。𐹵ڂ; 襾ݓ𞤣.𐹵ڂ; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ;  # 襾ݓ𞤣.𐹵ڂ
-xn--6ob9577deqwl.xn--7ib5526k; 襾ݓ𞤣.𐹵ڂ; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ;  # 襾ݓ𞤣.𐹵ڂ
-⾑ݓ𞤣。𐹵ڂ; 襾ݓ𞤣.𐹵ڂ; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ;  # 襾ݓ𞤣.𐹵ڂ
-񦴻ς-⃫｡ݔ-ꡛ; 񦴻ς-⃫.ݔ-ꡛ; [B2, B3, B6, P1, V6]; xn----xmb015tuo34l.xn----53c4874j; ; xn----zmb705tuo34l.xn----53c4874j;  # ς-⃫.ݔ-ꡛ
-񦴻ς-⃫。ݔ-ꡛ; 񦴻ς-⃫.ݔ-ꡛ; [B2, B3, B6, P1, V6]; xn----xmb015tuo34l.xn----53c4874j; ; xn----zmb705tuo34l.xn----53c4874j;  # ς-⃫.ݔ-ꡛ
-񦴻Σ-⃫。ݔ-ꡛ; 񦴻σ-⃫.ݔ-ꡛ; [B2, B3, B6, P1, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ;  # σ-⃫.ݔ-ꡛ
-񦴻σ-⃫。ݔ-ꡛ; 񦴻σ-⃫.ݔ-ꡛ; [B2, B3, B6, P1, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ;  # σ-⃫.ݔ-ꡛ
-xn----zmb705tuo34l.xn----53c4874j; 񦴻σ-⃫.ݔ-ꡛ; [B2, B3, B6, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ;  # σ-⃫.ݔ-ꡛ
-xn----xmb015tuo34l.xn----53c4874j; 񦴻ς-⃫.ݔ-ꡛ; [B2, B3, B6, V6]; xn----xmb015tuo34l.xn----53c4874j; ; ;  # ς-⃫.ݔ-ꡛ
-񦴻Σ-⃫｡ݔ-ꡛ; 񦴻σ-⃫.ݔ-ꡛ; [B2, B3, B6, P1, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ;  # σ-⃫.ݔ-ꡛ
-񦴻σ-⃫｡ݔ-ꡛ; 񦴻σ-⃫.ݔ-ꡛ; [B2, B3, B6, P1, V6]; xn----zmb705tuo34l.xn----53c4874j; ; ;  # σ-⃫.ݔ-ꡛ
-‍．􀸨; ‍.􀸨; [C2, P1, V6]; xn--1ug.xn--h327f; ; .xn--h327f; [P1, V6, A4_2] # .
-‍.􀸨; ; [C2, P1, V6]; xn--1ug.xn--h327f; ; .xn--h327f; [P1, V6, A4_2] # .
-.xn--h327f; .􀸨; [V6, X4_2]; .xn--h327f; [V6, A4_2]; ;  # .
-xn--1ug.xn--h327f; ‍.􀸨; [C2, V6]; xn--1ug.xn--h327f; ; ;  # .
-񣭻񌥁｡≠𝟲; 񣭻񌥁.≠6; [P1, V6]; xn--h79w4z99a.xn--6-tfo; ; ;  # .≠6
-񣭻񌥁｡≠𝟲; 񣭻񌥁.≠6; [P1, V6]; xn--h79w4z99a.xn--6-tfo; ; ;  # .≠6
-񣭻񌥁。≠6; 񣭻񌥁.≠6; [P1, V6]; xn--h79w4z99a.xn--6-tfo; ; ;  # .≠6
-񣭻񌥁。≠6; 񣭻񌥁.≠6; [P1, V6]; xn--h79w4z99a.xn--6-tfo; ; ;  # .≠6
-xn--h79w4z99a.xn--6-tfo; 񣭻񌥁.≠6; [V6]; xn--h79w4z99a.xn--6-tfo; ; ;  # .≠6
-󠅊ᡭ‍.𐥡; ᡭ‍.𐥡; [B6, C2, P1, V6]; xn--98e810b.xn--om9c; ; xn--98e.xn--om9c; [P1, V6] # ᡭ.
-xn--98e.xn--om9c; ᡭ.𐥡; [V6]; xn--98e.xn--om9c; ; ;  # ᡭ.
-xn--98e810b.xn--om9c; ᡭ‍.𐥡; [B6, C2, V6]; xn--98e810b.xn--om9c; ; ;  # ᡭ.
-ీࡕ𐥛𑄴．󭰵; ీࡕ𐥛𑄴.󭰵; [B1, P1, V5, V6]; xn--kwb91r5112avtg.xn--o580f; ; ;  # ీࡕ𑄴.
-ీࡕ𐥛𑄴.󭰵; ; [B1, P1, V5, V6]; xn--kwb91r5112avtg.xn--o580f; ; ;  # ీࡕ𑄴.
-xn--kwb91r5112avtg.xn--o580f; ీࡕ𐥛𑄴.󭰵; [B1, V5, V6]; xn--kwb91r5112avtg.xn--o580f; ; ;  # ీࡕ𑄴.
-𞤮。𑇊‌≯᳦; 𞤮.𑇊‌≯᳦; [B1, C1, P1, V5, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, P1, V5, V6] # 𞤮.𑇊≯᳦
-𞤮。𑇊‌≯᳦; 𞤮.𑇊‌≯᳦; [B1, C1, P1, V5, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, P1, V5, V6] # 𞤮.𑇊≯᳦
-𞤌。𑇊‌≯᳦; 𞤮.𑇊‌≯᳦; [B1, C1, P1, V5, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, P1, V5, V6] # 𞤮.𑇊≯᳦
-𞤌。𑇊‌≯᳦; 𞤮.𑇊‌≯᳦; [B1, C1, P1, V5, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, P1, V5, V6] # 𞤮.𑇊≯᳦
-xn--me6h.xn--z6fz8ueq2v; 𞤮.𑇊≯᳦; [B1, V5, V6]; xn--me6h.xn--z6fz8ueq2v; ; ;  # 𞤮.𑇊≯᳦
-xn--me6h.xn--z6f16kn9b2642b; 𞤮.𑇊‌≯᳦; [B1, C1, V5, V6]; xn--me6h.xn--z6f16kn9b2642b; ; ;  # 𞤮.𑇊≯᳦
-󠄀𝟕.𞤌񛗓Ⴉ; 7.𞤮񛗓Ⴉ; [B1, B2, B3, P1, V6]; 7.xn--hnd3403vv1vv; ; ;  # 7.𞤮Ⴉ
-󠄀7.𞤌񛗓Ⴉ; 7.𞤮񛗓Ⴉ; [B1, B2, B3, P1, V6]; 7.xn--hnd3403vv1vv; ; ;  # 7.𞤮Ⴉ
-󠄀7.𞤮񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, P1, V6]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
-7.xn--0kjz523lv1vv; 7.𞤮񛗓ⴉ; [B1, B2, B3, V6]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
-7.xn--hnd3403vv1vv; 7.𞤮񛗓Ⴉ; [B1, B2, B3, V6]; 7.xn--hnd3403vv1vv; ; ;  # 7.𞤮Ⴉ
-󠄀𝟕.𞤮񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, P1, V6]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
-󠄀7.𞤌񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, P1, V6]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
-󠄀𝟕.𞤌񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, P1, V6]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
-閃9𝩍。Ↄ٩ࢱ୍; 閃9𝩍.Ↄ٩ࢱ୍; [B5, B6, P1, V6]; xn--9-3j6dk517f.xn--iib28ij3c0t9a; ; ;  # 閃9𝩍.Ↄ٩ࢱ୍
-閃9𝩍。ↄ٩ࢱ୍; 閃9𝩍.ↄ٩ࢱ୍; [B5, B6]; xn--9-3j6dk517f.xn--iib28ij3c4t9a; ; ;  # 閃9𝩍.ↄ٩ࢱ୍
-xn--9-3j6dk517f.xn--iib28ij3c4t9a; 閃9𝩍.ↄ٩ࢱ୍; [B5, B6]; xn--9-3j6dk517f.xn--iib28ij3c4t9a; ; ;  # 閃9𝩍.ↄ٩ࢱ୍
-xn--9-3j6dk517f.xn--iib28ij3c0t9a; 閃9𝩍.Ↄ٩ࢱ୍; [B5, B6, V6]; xn--9-3j6dk517f.xn--iib28ij3c0t9a; ; ;  # 閃9𝩍.Ↄ٩ࢱ୍
-꫶ᢏฺ２.𐋢݅ྟ︒; ꫶ᢏฺ2.𐋢݅ྟ︒; [P1, V5, V6]; xn--2-2zf840fk16m.xn--sob093bj62sz9d; ; ;  # ꫶ᢏฺ2.𐋢݅ྟ︒
-꫶ᢏฺ2.𐋢݅ྟ。; ꫶ᢏฺ2.𐋢݅ྟ.; [V5]; xn--2-2zf840fk16m.xn--sob093b2m7s.; ; ;  # ꫶ᢏฺ2.𐋢݅ྟ.
-xn--2-2zf840fk16m.xn--sob093b2m7s.; ꫶ᢏฺ2.𐋢݅ྟ.; [V5]; xn--2-2zf840fk16m.xn--sob093b2m7s.; ; ;  # ꫶ᢏฺ2.𐋢݅ྟ.
-xn--2-2zf840fk16m.xn--sob093bj62sz9d; ꫶ᢏฺ2.𐋢݅ྟ︒; [V5, V6]; xn--2-2zf840fk16m.xn--sob093bj62sz9d; ; ;  # ꫶ᢏฺ2.𐋢݅ྟ︒
-󅴧｡≠-󠙄⾛; 󅴧.≠-󠙄走; [P1, V6]; xn--gm57d.xn----tfo4949b3664m; ; ;  # .≠-走
-󅴧｡≠-󠙄⾛; 󅴧.≠-󠙄走; [P1, V6]; xn--gm57d.xn----tfo4949b3664m; ; ;  # .≠-走
-󅴧。≠-󠙄走; 󅴧.≠-󠙄走; [P1, V6]; xn--gm57d.xn----tfo4949b3664m; ; ;  # .≠-走
-󅴧。≠-󠙄走; 󅴧.≠-󠙄走; [P1, V6]; xn--gm57d.xn----tfo4949b3664m; ; ;  # .≠-走
-xn--gm57d.xn----tfo4949b3664m; 󅴧.≠-󠙄走; [V6]; xn--gm57d.xn----tfo4949b3664m; ; ;  # .≠-走
-ݮ؄Ⴊ。-≠ᅠ; ݮ؄Ⴊ.-≠ᅠ; [B1, B2, B3, P1, V3, V6]; xn--mfb73ex6r.xn----5bh589i; ; ;  # ݮႪ.-≠
-ݮ؄Ⴊ。-≠ᅠ; ݮ؄Ⴊ.-≠ᅠ; [B1, B2, B3, P1, V3, V6]; xn--mfb73ex6r.xn----5bh589i; ; ;  # ݮႪ.-≠
-ݮ؄ⴊ。-≠ᅠ; ݮ؄ⴊ.-≠ᅠ; [B1, B2, B3, P1, V3, V6]; xn--mfb73ek93f.xn----5bh589i; ; ;  # ݮⴊ.-≠
-ݮ؄ⴊ。-≠ᅠ; ݮ؄ⴊ.-≠ᅠ; [B1, B2, B3, P1, V3, V6]; xn--mfb73ek93f.xn----5bh589i; ; ;  # ݮⴊ.-≠
-xn--mfb73ek93f.xn----5bh589i; ݮ؄ⴊ.-≠ᅠ; [B1, B2, B3, V3, V6]; xn--mfb73ek93f.xn----5bh589i; ; ;  # ݮⴊ.-≠
-xn--mfb73ex6r.xn----5bh589i; ݮ؄Ⴊ.-≠ᅠ; [B1, B2, B3, V3, V6]; xn--mfb73ex6r.xn----5bh589i; ; ;  # ݮႪ.-≠
-ﭏ𐹧𝟒≯｡‌; אל𐹧4≯.‌; [B1, B3, B4, C1, P1, V6]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, P1, V6] # אל𐹧4≯.
-ﭏ𐹧𝟒≯｡‌; אל𐹧4≯.‌; [B1, B3, B4, C1, P1, V6]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, P1, V6] # אל𐹧4≯.
-אל𐹧4≯。‌; אל𐹧4≯.‌; [B1, B3, B4, C1, P1, V6]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, P1, V6] # אל𐹧4≯.
-אל𐹧4≯。‌; אל𐹧4≯.‌; [B1, B3, B4, C1, P1, V6]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, P1, V6] # אל𐹧4≯.
-xn--4-zhc0by36txt0w.; אל𐹧4≯.; [B3, B4, V6]; xn--4-zhc0by36txt0w.; ; ;  # אל𐹧4≯.
-xn--4-zhc0by36txt0w.xn--0ug; אל𐹧4≯.‌; [B1, B3, B4, C1, V6]; xn--4-zhc0by36txt0w.xn--0ug; ; ;  # אל𐹧4≯.
+xn--1ug914h.ss; \u200D㨲.ss; [C2]; xn--1ug914h.ss; ; ;  # 㨲.ss
+xn--1ug914h.xn--zca; \u200D㨲.ß; [C2]; xn--1ug914h.xn--zca; ; ;  # 㨲.ß
+\u200D㨲｡SS; \u200D㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
+\u200D㨲｡ss; \u200D㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
+\u200D㨲｡Ss; \u200D㨲.ss; [C2]; xn--1ug914h.ss; ; xn--9bm.ss; [] # 㨲.ss
+\u0605\u067E｡\u08A8; \u0605\u067E.\u08A8; [B1, V7]; xn--nfb6v.xn--xyb; ; ;  # پ.ࢨ
+\u0605\u067E。\u08A8; \u0605\u067E.\u08A8; [B1, V7]; xn--nfb6v.xn--xyb; ; ;  # پ.ࢨ
+xn--nfb6v.xn--xyb; \u0605\u067E.\u08A8; [B1, V7]; xn--nfb6v.xn--xyb; ; ;  # پ.ࢨ
+⾑\u0753𞤁。𐹵\u0682; 襾\u0753𞤣.𐹵\u0682; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ;  # 襾ݓ𞤣.𐹵ڂ
+襾\u0753𞤁。𐹵\u0682; 襾\u0753𞤣.𐹵\u0682; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ;  # 襾ݓ𞤣.𐹵ڂ
+襾\u0753𞤣。𐹵\u0682; 襾\u0753𞤣.𐹵\u0682; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ;  # 襾ݓ𞤣.𐹵ڂ
+xn--6ob9577deqwl.xn--7ib5526k; 襾\u0753𞤣.𐹵\u0682; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ;  # 襾ݓ𞤣.𐹵ڂ
+⾑\u0753𞤣。𐹵\u0682; 襾\u0753𞤣.𐹵\u0682; [B1, B5, B6]; xn--6ob9577deqwl.xn--7ib5526k; ; ;  # 襾ݓ𞤣.𐹵ڂ
+񦴻ς-\u20EB｡\u0754-ꡛ; 񦴻ς-\u20EB.\u0754-ꡛ; [B2, B3, B6, V7]; xn----xmb015tuo34l.xn----53c4874j; ; xn----zmb705tuo34l.xn----53c4874j;  # ς-⃫.ݔ-ꡛ
+񦴻ς-\u20EB。\u0754-ꡛ; 񦴻ς-\u20EB.\u0754-ꡛ; [B2, B3, B6, V7]; xn----xmb015tuo34l.xn----53c4874j; ; xn----zmb705tuo34l.xn----53c4874j;  # ς-⃫.ݔ-ꡛ
+񦴻Σ-\u20EB。\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, V7]; xn----zmb705tuo34l.xn----53c4874j; ; ;  # σ-⃫.ݔ-ꡛ
+񦴻σ-\u20EB。\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, V7]; xn----zmb705tuo34l.xn----53c4874j; ; ;  # σ-⃫.ݔ-ꡛ
+xn----zmb705tuo34l.xn----53c4874j; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, V7]; xn----zmb705tuo34l.xn----53c4874j; ; ;  # σ-⃫.ݔ-ꡛ
+xn----xmb015tuo34l.xn----53c4874j; 񦴻ς-\u20EB.\u0754-ꡛ; [B2, B3, B6, V7]; xn----xmb015tuo34l.xn----53c4874j; ; ;  # ς-⃫.ݔ-ꡛ
+񦴻Σ-\u20EB｡\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, V7]; xn----zmb705tuo34l.xn----53c4874j; ; ;  # σ-⃫.ݔ-ꡛ
+񦴻σ-\u20EB｡\u0754-ꡛ; 񦴻σ-\u20EB.\u0754-ꡛ; [B2, B3, B6, V7]; xn----zmb705tuo34l.xn----53c4874j; ; ;  # σ-⃫.ݔ-ꡛ
+\u200D．􀸨; \u200D.􀸨; [C2, V7]; xn--1ug.xn--h327f; ; .xn--h327f; [V7, A4_2] # .
+\u200D.􀸨; ; [C2, V7]; xn--1ug.xn--h327f; ; .xn--h327f; [V7, A4_2] # .
+.xn--h327f; .􀸨; [V7, X4_2]; .xn--h327f; [V7, A4_2]; ;  # .
+xn--1ug.xn--h327f; \u200D.􀸨; [C2, V7]; xn--1ug.xn--h327f; ; ;  # .
+񣭻񌥁｡≠𝟲; 񣭻񌥁.≠6; [V7]; xn--h79w4z99a.xn--6-tfo; ; ;  # .≠6
+񣭻񌥁｡=\u0338𝟲; 񣭻񌥁.≠6; [V7]; xn--h79w4z99a.xn--6-tfo; ; ;  # .≠6
+񣭻񌥁。≠6; 񣭻񌥁.≠6; [V7]; xn--h79w4z99a.xn--6-tfo; ; ;  # .≠6
+񣭻񌥁。=\u03386; 񣭻񌥁.≠6; [V7]; xn--h79w4z99a.xn--6-tfo; ; ;  # .≠6
+xn--h79w4z99a.xn--6-tfo; 񣭻񌥁.≠6; [V7]; xn--h79w4z99a.xn--6-tfo; ; ;  # .≠6
+󠅊ᡭ\u200D.𐥡; ᡭ\u200D.𐥡; [B6, C2, V7]; xn--98e810b.xn--om9c; ; xn--98e.xn--om9c; [V7] # ᡭ.
+xn--98e.xn--om9c; ᡭ.𐥡; [V7]; xn--98e.xn--om9c; ; ;  # ᡭ.
+xn--98e810b.xn--om9c; ᡭ\u200D.𐥡; [B6, C2, V7]; xn--98e810b.xn--om9c; ; ;  # ᡭ.
+\u0C40\u0855𐥛𑄴．󭰵; \u0C40\u0855𐥛𑄴.󭰵; [B1, V6, V7]; xn--kwb91r5112avtg.xn--o580f; ; ;  # ీࡕ𑄴.
+\u0C40\u0855𐥛𑄴.󭰵; ; [B1, V6, V7]; xn--kwb91r5112avtg.xn--o580f; ; ;  # ీࡕ𑄴.
+xn--kwb91r5112avtg.xn--o580f; \u0C40\u0855𐥛𑄴.󭰵; [B1, V6, V7]; xn--kwb91r5112avtg.xn--o580f; ; ;  # ీࡕ𑄴.
+𞤮。𑇊\u200C≯\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, V6] # 𞤮.𑇊≯᳦
+𞤮。𑇊\u200C>\u0338\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, V6] # 𞤮.𑇊≯᳦
+𞤌。𑇊\u200C>\u0338\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, V6] # 𞤮.𑇊≯᳦
+𞤌。𑇊\u200C≯\u1CE6; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V6]; xn--me6h.xn--z6f16kn9b2642b; ; xn--me6h.xn--z6fz8ueq2v; [B1, V6] # 𞤮.𑇊≯᳦
+xn--me6h.xn--z6fz8ueq2v; 𞤮.𑇊≯\u1CE6; [B1, V6]; xn--me6h.xn--z6fz8ueq2v; ; ;  # 𞤮.𑇊≯᳦
+xn--me6h.xn--z6f16kn9b2642b; 𞤮.𑇊\u200C≯\u1CE6; [B1, C1, V6]; xn--me6h.xn--z6f16kn9b2642b; ; ;  # 𞤮.𑇊≯᳦
+󠄀𝟕.𞤌񛗓Ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, V7]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
+󠄀7.𞤌񛗓Ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, V7]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
+󠄀7.𞤮񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, V7]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
+7.xn--0kjz523lv1vv; 7.𞤮񛗓ⴉ; [B1, B2, B3, V7]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
+󠄀𝟕.𞤮񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, V7]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
+7.xn--hnd3403vv1vv; 7.𞤮񛗓Ⴉ; [B1, B2, B3, V7]; 7.xn--hnd3403vv1vv; ; ;  # 7.𞤮Ⴉ
+󠄀7.𞤌񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, V7]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
+󠄀𝟕.𞤌񛗓ⴉ; 7.𞤮񛗓ⴉ; [B1, B2, B3, V7]; 7.xn--0kjz523lv1vv; ; ;  # 7.𞤮ⴉ
+閃9𝩍。Ↄ\u0669\u08B1\u0B4D; 閃9𝩍.ↄ\u0669\u08B1\u0B4D; [B5, B6]; xn--9-3j6dk517f.xn--iib28ij3c4t9a; ; ;  # 閃9𝩍.ↄ٩ࢱ୍
+閃9𝩍。ↄ\u0669\u08B1\u0B4D; 閃9𝩍.ↄ\u0669\u08B1\u0B4D; [B5, B6]; xn--9-3j6dk517f.xn--iib28ij3c4t9a; ; ;  # 閃9𝩍.ↄ٩ࢱ୍
+xn--9-3j6dk517f.xn--iib28ij3c4t9a; 閃9𝩍.ↄ\u0669\u08B1\u0B4D; [B5, B6]; xn--9-3j6dk517f.xn--iib28ij3c4t9a; ; ;  # 閃9𝩍.ↄ٩ࢱ୍
+xn--9-3j6dk517f.xn--iib28ij3c0t9a; 閃9𝩍.Ↄ\u0669\u08B1\u0B4D; [B5, B6, V7]; xn--9-3j6dk517f.xn--iib28ij3c0t9a; ; ;  # 閃9𝩍.Ↄ٩ࢱ୍
+\uAAF6ᢏ\u0E3A２.𐋢\u0745\u0F9F︒; \uAAF6ᢏ\u0E3A2.𐋢\u0745\u0F9F︒; [V6, V7]; xn--2-2zf840fk16m.xn--sob093bj62sz9d; ; ;  # ꫶ᢏฺ2.𐋢݅ྟ︒
+\uAAF6ᢏ\u0E3A2.𐋢\u0745\u0F9F。; \uAAF6ᢏ\u0E3A2.𐋢\u0745\u0F9F.; [V6]; xn--2-2zf840fk16m.xn--sob093b2m7s.; [V6, A4_2]; ;  # ꫶ᢏฺ2.𐋢݅ྟ.
+xn--2-2zf840fk16m.xn--sob093b2m7s.; \uAAF6ᢏ\u0E3A2.𐋢\u0745\u0F9F.; [V6]; xn--2-2zf840fk16m.xn--sob093b2m7s.; [V6, A4_2]; ;  # ꫶ᢏฺ2.𐋢݅ྟ.
+xn--2-2zf840fk16m.xn--sob093bj62sz9d; \uAAF6ᢏ\u0E3A2.𐋢\u0745\u0F9F︒; [V6, V7]; xn--2-2zf840fk16m.xn--sob093bj62sz9d; ; ;  # ꫶ᢏฺ2.𐋢݅ྟ︒
+󅴧｡≠-󠙄⾛; 󅴧.≠-󠙄走; [V7]; xn--gm57d.xn----tfo4949b3664m; ; ;  # .≠-走
+󅴧｡=\u0338-󠙄⾛; 󅴧.≠-󠙄走; [V7]; xn--gm57d.xn----tfo4949b3664m; ; ;  # .≠-走
+󅴧。≠-󠙄走; 󅴧.≠-󠙄走; [V7]; xn--gm57d.xn----tfo4949b3664m; ; ;  # .≠-走
+󅴧。=\u0338-󠙄走; 󅴧.≠-󠙄走; [V7]; xn--gm57d.xn----tfo4949b3664m; ; ;  # .≠-走
+xn--gm57d.xn----tfo4949b3664m; 󅴧.≠-󠙄走; [V7]; xn--gm57d.xn----tfo4949b3664m; ; ;  # .≠-走
+\u076E\u0604Ⴊ。-≠\u1160; \u076E\u0604ⴊ.-≠; [B1, B2, B3, V3, V7]; xn--mfb73ek93f.xn----ufo; ; ;  # ݮⴊ.-≠
+\u076E\u0604Ⴊ。-=\u0338\u1160; \u076E\u0604ⴊ.-≠; [B1, B2, B3, V3, V7]; xn--mfb73ek93f.xn----ufo; ; ;  # ݮⴊ.-≠
+\u076E\u0604ⴊ。-=\u0338\u1160; \u076E\u0604ⴊ.-≠; [B1, B2, B3, V3, V7]; xn--mfb73ek93f.xn----ufo; ; ;  # ݮⴊ.-≠
+\u076E\u0604ⴊ。-≠\u1160; \u076E\u0604ⴊ.-≠; [B1, B2, B3, V3, V7]; xn--mfb73ek93f.xn----ufo; ; ;  # ݮⴊ.-≠
+xn--mfb73ek93f.xn----ufo; \u076E\u0604ⴊ.-≠; [B1, B2, B3, V3, V7]; xn--mfb73ek93f.xn----ufo; ; ;  # ݮⴊ.-≠
+xn--mfb73ek93f.xn----5bh589i; \u076E\u0604ⴊ.-≠\u1160; [B1, B2, B3, V3, V7]; xn--mfb73ek93f.xn----5bh589i; ; ;  # ݮⴊ.-≠
+xn--mfb73ex6r.xn----5bh589i; \u076E\u0604Ⴊ.-≠\u1160; [B1, B2, B3, V3, V7]; xn--mfb73ex6r.xn----5bh589i; ; ;  # ݮႪ.-≠
+\uFB4F𐹧𝟒≯｡\u200C; \u05D0\u05DC𐹧4≯.\u200C; [B1, B3, B4, C1]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, A4_2] # אל𐹧4≯.
+\uFB4F𐹧𝟒>\u0338｡\u200C; \u05D0\u05DC𐹧4≯.\u200C; [B1, B3, B4, C1]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, A4_2] # אל𐹧4≯.
+\u05D0\u05DC𐹧4≯。\u200C; \u05D0\u05DC𐹧4≯.\u200C; [B1, B3, B4, C1]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, A4_2] # אל𐹧4≯.
+\u05D0\u05DC𐹧4>\u0338。\u200C; \u05D0\u05DC𐹧4≯.\u200C; [B1, B3, B4, C1]; xn--4-zhc0by36txt0w.xn--0ug; ; xn--4-zhc0by36txt0w.; [B3, B4, A4_2] # אל𐹧4≯.
+xn--4-zhc0by36txt0w.; \u05D0\u05DC𐹧4≯.; [B3, B4]; xn--4-zhc0by36txt0w.; [B3, B4, A4_2]; ;  # אל𐹧4≯.
+xn--4-zhc0by36txt0w.xn--0ug; \u05D0\u05DC𐹧4≯.\u200C; [B1, B3, B4, C1]; xn--4-zhc0by36txt0w.xn--0ug; ; ;  # אל𐹧4≯.
 𝟎。甯; 0.甯; ; 0.xn--qny; ; ;  # 0.甯
 0。甯; 0.甯; ; 0.xn--qny; ; ;  # 0.甯
 0.xn--qny; 0.甯; ; 0.xn--qny; ; ;  # 0.甯
 0.甯; ; ; 0.xn--qny; ; ;  # 0.甯
--⾆．꫶; -舌.꫶; [V3, V5]; xn----ef8c.xn--2v9a; ; ;  # -舌.꫶
--舌.꫶; ; [V3, V5]; xn----ef8c.xn--2v9a; ; ;  # -舌.꫶
-xn----ef8c.xn--2v9a; -舌.꫶; [V3, V5]; xn----ef8c.xn--2v9a; ; ;  # -舌.꫶
+-⾆．\uAAF6; -舌.\uAAF6; [V3, V6]; xn----ef8c.xn--2v9a; ; ;  # -舌.꫶
+-舌.\uAAF6; ; [V3, V6]; xn----ef8c.xn--2v9a; ; ;  # -舌.꫶
+xn----ef8c.xn--2v9a; -舌.\uAAF6; [V3, V6]; xn----ef8c.xn--2v9a; ; ;  # -舌.꫶
 -｡ᢘ; -.ᢘ; [V3]; -.xn--ibf; ; ;  # -.ᢘ
 -。ᢘ; -.ᢘ; [V3]; -.xn--ibf; ; ;  # -.ᢘ
 -.xn--ibf; -.ᢘ; [V3]; -.xn--ibf; ; ;  # -.ᢘ
-🂴Ⴋ.≮; ; [P1, V6]; xn--jnd1986v.xn--gdh; ; ;  # 🂴Ⴋ.≮
-🂴Ⴋ.≮; 🂴Ⴋ.≮; [P1, V6]; xn--jnd1986v.xn--gdh; ; ;  # 🂴Ⴋ.≮
-🂴ⴋ.≮; 🂴ⴋ.≮; [P1, V6]; xn--2kj7565l.xn--gdh; ; ;  # 🂴ⴋ.≮
-🂴ⴋ.≮; ; [P1, V6]; xn--2kj7565l.xn--gdh; ; ;  # 🂴ⴋ.≮
-xn--2kj7565l.xn--gdh; 🂴ⴋ.≮; [V6]; xn--2kj7565l.xn--gdh; ; ;  # 🂴ⴋ.≮
-xn--jnd1986v.xn--gdh; 🂴Ⴋ.≮; [V6]; xn--jnd1986v.xn--gdh; ; ;  # 🂴Ⴋ.≮
-璼𝨭｡‌󠇟; 璼𝨭.‌; [C1]; xn--gky8837e.xn--0ug; ; xn--gky8837e.; [] # 璼𝨭.
-璼𝨭。‌󠇟; 璼𝨭.‌; [C1]; xn--gky8837e.xn--0ug; ; xn--gky8837e.; [] # 璼𝨭.
-xn--gky8837e.; 璼𝨭.; ; xn--gky8837e.; ; ;  # 璼𝨭.
-璼𝨭.; ; ; xn--gky8837e.; ; ;  # 璼𝨭.
-xn--gky8837e.xn--0ug; 璼𝨭.‌; [C1]; xn--gky8837e.xn--0ug; ; ;  # 璼𝨭.
-٩8񂍽｡-5🞥; ٩8񂍽.-5🞥; [B1, P1, V3, V6]; xn--8-qqc97891f.xn---5-rp92a; ; ;  # ٩8.-5🞥
-٩8񂍽。-5🞥; ٩8񂍽.-5🞥; [B1, P1, V3, V6]; xn--8-qqc97891f.xn---5-rp92a; ; ;  # ٩8.-5🞥
-xn--8-qqc97891f.xn---5-rp92a; ٩8񂍽.-5🞥; [B1, V3, V6]; xn--8-qqc97891f.xn---5-rp92a; ; ;  # ٩8.-5🞥
-‌.‌; ; [C1]; xn--0ug.xn--0ug; ; .; [A4_2] # .
-xn--0ug.xn--0ug; ‌.‌; [C1]; xn--0ug.xn--0ug; ; ;  # .
-‍튛.ܖ; ; [B1, C2]; xn--1ug4441e.xn--gnb; ; xn--157b.xn--gnb; [] # 튛.ܖ
-‍튛.ܖ; ‍튛.ܖ; [B1, C2]; xn--1ug4441e.xn--gnb; ; xn--157b.xn--gnb; [] # 튛.ܖ
-xn--157b.xn--gnb; 튛.ܖ; ; xn--157b.xn--gnb; ; ;  # 튛.ܖ
-튛.ܖ; ; ; xn--157b.xn--gnb; ; ;  # 튛.ܖ
-튛.ܖ; 튛.ܖ; ; xn--157b.xn--gnb; ; ;  # 튛.ܖ
-xn--1ug4441e.xn--gnb; ‍튛.ܖ; [B1, C2]; xn--1ug4441e.xn--gnb; ; ;  # 튛.ܖ
-ᡋ𐹰𞽳.ݹⴞ; ; [B2, B3, B5, B6, P1, V6]; xn--b8e0417jocvf.xn--9pb883q; ; ;  # ᡋ𐹰.ݹⴞ
-ᡋ𐹰𞽳.ݹႾ; ; [B2, B3, B5, B6, P1, V6]; xn--b8e0417jocvf.xn--9pb068b; ; ;  # ᡋ𐹰.ݹႾ
-xn--b8e0417jocvf.xn--9pb068b; ᡋ𐹰𞽳.ݹႾ; [B2, B3, B5, B6, V6]; xn--b8e0417jocvf.xn--9pb068b; ; ;  # ᡋ𐹰.ݹႾ
-xn--b8e0417jocvf.xn--9pb883q; ᡋ𐹰𞽳.ݹⴞ; [B2, B3, B5, B6, V6]; xn--b8e0417jocvf.xn--9pb883q; ; ;  # ᡋ𐹰.ݹⴞ
-𐷃٢𝅻𝟧．𐹮𐹬Ⴇ; 𐷃٢𝅻5.𐹮𐹬Ⴇ; [B1, B4, P1, V6]; xn--5-cqc8833rhv7f.xn--fnd3401kfa; ; ;  # ٢𝅻5.𐹮𐹬Ⴇ
-𐷃٢𝅻5.𐹮𐹬Ⴇ; ; [B1, B4, P1, V6]; xn--5-cqc8833rhv7f.xn--fnd3401kfa; ; ;  # ٢𝅻5.𐹮𐹬Ⴇ
-𐷃٢𝅻5.𐹮𐹬ⴇ; ; [B1, B4, P1, V6]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ;  # ٢𝅻5.𐹮𐹬ⴇ
-xn--5-cqc8833rhv7f.xn--ykjz523efa; 𐷃٢𝅻5.𐹮𐹬ⴇ; [B1, B4, V6]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ;  # ٢𝅻5.𐹮𐹬ⴇ
-xn--5-cqc8833rhv7f.xn--fnd3401kfa; 𐷃٢𝅻5.𐹮𐹬Ⴇ; [B1, B4, V6]; xn--5-cqc8833rhv7f.xn--fnd3401kfa; ; ;  # ٢𝅻5.𐹮𐹬Ⴇ
-𐷃٢𝅻𝟧．𐹮𐹬ⴇ; 𐷃٢𝅻5.𐹮𐹬ⴇ; [B1, B4, P1, V6]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ;  # ٢𝅻5.𐹮𐹬ⴇ
-Ⴗ．𑄴ׂꦷ񘃨; Ⴗ.𑄴ׂꦷ񘃨; [P1, V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ;  # Ⴗ.𑄴ׂꦷ
-Ⴗ．𑄴ׂꦷ񘃨; Ⴗ.𑄴ׂꦷ񘃨; [P1, V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ;  # Ⴗ.𑄴ׂꦷ
-Ⴗ.𑄴ׂꦷ񘃨; ; [P1, V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ;  # Ⴗ.𑄴ׂꦷ
-ⴗ.𑄴ׂꦷ񘃨; ; [P1, V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
-xn--flj.xn--qdb0605f14ycrms3c; ⴗ.𑄴ׂꦷ񘃨; [V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
-xn--vnd.xn--qdb0605f14ycrms3c; Ⴗ.𑄴ׂꦷ񘃨; [V5, V6]; xn--vnd.xn--qdb0605f14ycrms3c; ; ;  # Ⴗ.𑄴ׂꦷ
-ⴗ．𑄴ׂꦷ񘃨; ⴗ.𑄴ׂꦷ񘃨; [P1, V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
-ⴗ．𑄴ׂꦷ񘃨; ⴗ.𑄴ׂꦷ񘃨; [P1, V5, V6]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
-𝟾𾤘．򇕛٬; 8𾤘.򇕛٬; [B1, B5, B6, P1, V6]; xn--8-kh23b.xn--lib78461i; ; ;  # 8.٬
-8𾤘.򇕛٬; ; [B1, B5, B6, P1, V6]; xn--8-kh23b.xn--lib78461i; ; ;  # 8.٬
-xn--8-kh23b.xn--lib78461i; 8𾤘.򇕛٬; [B1, B5, B6, V6]; xn--8-kh23b.xn--lib78461i; ; ;  # 8.٬
-⒈酫︒。ࣖ; ⒈酫︒.ࣖ; [P1, V5, V6]; xn--tsh4490bfe8c.xn--8zb; ; ;  # ⒈酫︒.ࣖ
-1.酫。。ࣖ; 1.酫..ࣖ; [V5, X4_2]; 1.xn--8j4a..xn--8zb; [V5, A4_2]; ;  # 1.酫..ࣖ
-1.xn--8j4a..xn--8zb; 1.酫..ࣖ; [V5, X4_2]; 1.xn--8j4a..xn--8zb; [V5, A4_2]; ;  # 1.酫..ࣖ
-xn--tsh4490bfe8c.xn--8zb; ⒈酫︒.ࣖ; [V5, V6]; xn--tsh4490bfe8c.xn--8zb; ; ;  # ⒈酫︒.ࣖ
-ⷣ‌≮ᩫ.‌ฺ; ; [C1, P1, V5, V6]; xn--uof63xk4bf3s.xn--o4c732g; ; xn--uof548an0j.xn--o4c; [P1, V5, V6] # ⷣ≮ᩫ.ฺ
-ⷣ‌≮ᩫ.‌ฺ; ⷣ‌≮ᩫ.‌ฺ; [C1, P1, V5, V6]; xn--uof63xk4bf3s.xn--o4c732g; ; xn--uof548an0j.xn--o4c; [P1, V5, V6] # ⷣ≮ᩫ.ฺ
-xn--uof548an0j.xn--o4c; ⷣ≮ᩫ.ฺ; [V5, V6]; xn--uof548an0j.xn--o4c; ; ;  # ⷣ≮ᩫ.ฺ
-xn--uof63xk4bf3s.xn--o4c732g; ⷣ‌≮ᩫ.‌ฺ; [C1, V5, V6]; xn--uof63xk4bf3s.xn--o4c732g; ; ;  # ⷣ≮ᩫ.ฺ
-𞪂。ႷႽ¹‍; 𞪂.ႷႽ1‍; [B6, C2, P1, V6]; xn--co6h.xn--1-h1gs597m; ; xn--co6h.xn--1-h1gs; [P1, V6] # .ႷႽ1
-𞪂。ႷႽ1‍; 𞪂.ႷႽ1‍; [B6, C2, P1, V6]; xn--co6h.xn--1-h1gs597m; ; xn--co6h.xn--1-h1gs; [P1, V6] # .ႷႽ1
-𞪂。ⴗⴝ1‍; 𞪂.ⴗⴝ1‍; [B6, C2, P1, V6]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [P1, V6] # .ⴗⴝ1
-𞪂。Ⴗⴝ1‍; 𞪂.Ⴗⴝ1‍; [B6, C2, P1, V6]; xn--co6h.xn--1-h1g398iewm; ; xn--co6h.xn--1-h1g429s; [P1, V6] # .Ⴗⴝ1
-xn--co6h.xn--1-h1g429s; 𞪂.Ⴗⴝ1; [V6]; xn--co6h.xn--1-h1g429s; ; ;  # .Ⴗⴝ1
-xn--co6h.xn--1-h1g398iewm; 𞪂.Ⴗⴝ1‍; [B6, C2, V6]; xn--co6h.xn--1-h1g398iewm; ; ;  # .Ⴗⴝ1
-xn--co6h.xn--1-kwssa; 𞪂.ⴗⴝ1; [V6]; xn--co6h.xn--1-kwssa; ; ;  # .ⴗⴝ1
-xn--co6h.xn--1-ugn710dya; 𞪂.ⴗⴝ1‍; [B6, C2, V6]; xn--co6h.xn--1-ugn710dya; ; ;  # .ⴗⴝ1
-xn--co6h.xn--1-h1gs; 𞪂.ႷႽ1; [V6]; xn--co6h.xn--1-h1gs; ; ;  # .ႷႽ1
-xn--co6h.xn--1-h1gs597m; 𞪂.ႷႽ1‍; [B6, C2, V6]; xn--co6h.xn--1-h1gs597m; ; ;  # .ႷႽ1
-𞪂。ⴗⴝ¹‍; 𞪂.ⴗⴝ1‍; [B6, C2, P1, V6]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [P1, V6] # .ⴗⴝ1
-𞪂。Ⴗⴝ¹‍; 𞪂.Ⴗⴝ1‍; [B6, C2, P1, V6]; xn--co6h.xn--1-h1g398iewm; ; xn--co6h.xn--1-h1g429s; [P1, V6] # .Ⴗⴝ1
-𑄴𑄳2.𞳿󠀳-; ; [B1, B3, P1, V3, V5, V6]; xn--2-h87ic.xn----s39r33498d; ; ;  # 𑄴𑄳2.-
-xn--2-h87ic.xn----s39r33498d; 𑄴𑄳2.𞳿󠀳-; [B1, B3, V3, V5, V6]; xn--2-h87ic.xn----s39r33498d; ; ;  # 𑄴𑄳2.-
-󠕲󟶶٥｡񀁁𑄳𞤃ܐ; 󠕲󟶶٥.񀁁𑄳𞤥ܐ; [B1, B5, B6, P1, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ;  # ٥.𑄳𞤥ܐ
-󠕲󟶶٥。񀁁𑄳𞤃ܐ; 󠕲󟶶٥.񀁁𑄳𞤥ܐ; [B1, B5, B6, P1, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ;  # ٥.𑄳𞤥ܐ
-󠕲󟶶٥。񀁁𑄳𞤥ܐ; 󠕲󟶶٥.񀁁𑄳𞤥ܐ; [B1, B5, B6, P1, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ;  # ٥.𑄳𞤥ܐ
-xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; 󠕲󟶶٥.񀁁𑄳𞤥ܐ; [B1, B5, B6, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ;  # ٥.𑄳𞤥ܐ
-󠕲󟶶٥｡񀁁𑄳𞤥ܐ; 󠕲󟶶٥.񀁁𑄳𞤥ܐ; [B1, B5, B6, P1, V6]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ;  # ٥.𑄳𞤥ܐ
-ܠ򲠽𐹢ុ｡ςᢈ🝭‌; ܠ򲠽𐹢ុ.ςᢈ🝭‌; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # ܠ𐹢ុ.ςᢈ🝭
-ܠ򲠽𐹢ុ。ςᢈ🝭‌; ܠ򲠽𐹢ុ.ςᢈ🝭‌; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # ܠ𐹢ុ.ςᢈ🝭
-ܠ򲠽𐹢ុ。Σᢈ🝭‌; ܠ򲠽𐹢ុ.σᢈ🝭‌; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # ܠ𐹢ុ.σᢈ🝭
-ܠ򲠽𐹢ុ。σᢈ🝭‌; ܠ򲠽𐹢ុ.σᢈ🝭‌; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # ܠ𐹢ុ.σᢈ🝭
-xn--qnb616fis0qzt36f.xn--4xa847hli46a; ܠ򲠽𐹢ុ.σᢈ🝭; [B2, B6, V6]; xn--qnb616fis0qzt36f.xn--4xa847hli46a; ; ;  # ܠ𐹢ុ.σᢈ🝭
-xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ܠ򲠽𐹢ុ.σᢈ🝭‌; [B2, B6, C1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; ;  # ܠ𐹢ុ.σᢈ🝭
-xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ܠ򲠽𐹢ុ.ςᢈ🝭‌; [B2, B6, C1, V6]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; ;  # ܠ𐹢ុ.ςᢈ🝭
-ܠ򲠽𐹢ុ｡Σᢈ🝭‌; ܠ򲠽𐹢ុ.σᢈ🝭‌; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # ܠ𐹢ុ.σᢈ🝭
-ܠ򲠽𐹢ុ｡σᢈ🝭‌; ܠ򲠽𐹢ុ.σᢈ🝭‌; [B2, B6, C1, P1, V6]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, P1, V6] # ܠ𐹢ុ.σᢈ🝭
-‍--≮。𐹧; ‍--≮.𐹧; [B1, C2, P1, V6]; xn-----l1tz1k.xn--fo0d; ; xn-----ujv.xn--fo0d; [B1, P1, V3, V6] # --≮.𐹧
-‍--≮。𐹧; ‍--≮.𐹧; [B1, C2, P1, V6]; xn-----l1tz1k.xn--fo0d; ; xn-----ujv.xn--fo0d; [B1, P1, V3, V6] # --≮.𐹧
-xn-----ujv.xn--fo0d; --≮.𐹧; [B1, V3, V6]; xn-----ujv.xn--fo0d; ; ;  # --≮.𐹧
-xn-----l1tz1k.xn--fo0d; ‍--≮.𐹧; [B1, C2, V6]; xn-----l1tz1k.xn--fo0d; ; ;  # --≮.𐹧
-꠆。𻚏ྰ⒕; ꠆.𻚏ྰ⒕; [P1, V5, V6]; xn--l98a.xn--dgd218hhp28d; ; ;  # ꠆.ྰ⒕
-꠆。𻚏ྰ14.; ꠆.𻚏ྰ14.; [P1, V5, V6]; xn--l98a.xn--14-jsj57880f.; ; ;  # ꠆.ྰ14.
-xn--l98a.xn--14-jsj57880f.; ꠆.𻚏ྰ14.; [V5, V6]; xn--l98a.xn--14-jsj57880f.; ; ;  # ꠆.ྰ14.
-xn--l98a.xn--dgd218hhp28d; ꠆.𻚏ྰ⒕; [V5, V6]; xn--l98a.xn--dgd218hhp28d; ; ;  # ꠆.ྰ⒕
-򮉂ڼ．𑆺٩; 򮉂ڼ.𑆺٩; [B1, B5, B6, P1, V5, V6]; xn--vkb92243l.xn--iib9797k; ; ;  # ڼ.𑆺٩
-򮉂ڼ.𑆺٩; ; [B1, B5, B6, P1, V5, V6]; xn--vkb92243l.xn--iib9797k; ; ;  # ڼ.𑆺٩
-xn--vkb92243l.xn--iib9797k; 򮉂ڼ.𑆺٩; [B1, B5, B6, V5, V6]; xn--vkb92243l.xn--iib9797k; ; ;  # ڼ.𑆺٩
-󠁎ې-。𞤴; 󠁎ې-.𞤴; [B1, P1, V3, V6]; xn----mwc72685y.xn--se6h; ; ;  # ې-.𞤴
-󠁎ې-。𞤒; 󠁎ې-.𞤴; [B1, P1, V3, V6]; xn----mwc72685y.xn--se6h; ; ;  # ې-.𞤴
-xn----mwc72685y.xn--se6h; 󠁎ې-.𞤴; [B1, V3, V6]; xn----mwc72685y.xn--se6h; ; ;  # ې-.𞤴
-𝟠4󠇗𝈻．‍𐋵⛧‍; 84𝈻.‍𐋵⛧‍; [C2]; xn--84-s850a.xn--1uga573cfq1w; ; xn--84-s850a.xn--59h6326e; [] # 84𝈻.𐋵⛧
-84󠇗𝈻.‍𐋵⛧‍; 84𝈻.‍𐋵⛧‍; [C2]; xn--84-s850a.xn--1uga573cfq1w; ; xn--84-s850a.xn--59h6326e; [] # 84𝈻.𐋵⛧
+🂴Ⴋ.≮; 🂴ⴋ.≮; ; xn--2kj7565l.xn--gdh; ; ;  # 🂴ⴋ.≮
+🂴Ⴋ.<\u0338; 🂴ⴋ.≮; ; xn--2kj7565l.xn--gdh; ; ;  # 🂴ⴋ.≮
+🂴ⴋ.<\u0338; 🂴ⴋ.≮; ; xn--2kj7565l.xn--gdh; ; ;  # 🂴ⴋ.≮
+🂴ⴋ.≮; ; ; xn--2kj7565l.xn--gdh; ; ;  # 🂴ⴋ.≮
+xn--2kj7565l.xn--gdh; 🂴ⴋ.≮; ; xn--2kj7565l.xn--gdh; ; ;  # 🂴ⴋ.≮
+xn--jnd1986v.xn--gdh; 🂴Ⴋ.≮; [V7]; xn--jnd1986v.xn--gdh; ; ;  # 🂴Ⴋ.≮
+璼𝨭｡\u200C󠇟; 璼𝨭.\u200C; [C1]; xn--gky8837e.xn--0ug; ; xn--gky8837e.; [A4_2] # 璼𝨭.
+璼𝨭。\u200C󠇟; 璼𝨭.\u200C; [C1]; xn--gky8837e.xn--0ug; ; xn--gky8837e.; [A4_2] # 璼𝨭.
+xn--gky8837e.; 璼𝨭.; ; xn--gky8837e.; [A4_2]; ;  # 璼𝨭.
+璼𝨭.; ; ; xn--gky8837e.; [A4_2]; ;  # 璼𝨭.
+xn--gky8837e.xn--0ug; 璼𝨭.\u200C; [C1]; xn--gky8837e.xn--0ug; ; ;  # 璼𝨭.
+\u06698񂍽｡-5🞥; \u06698񂍽.-5🞥; [B1, V3, V7]; xn--8-qqc97891f.xn---5-rp92a; ; ;  # ٩8.-5🞥
+\u06698񂍽。-5🞥; \u06698񂍽.-5🞥; [B1, V3, V7]; xn--8-qqc97891f.xn---5-rp92a; ; ;  # ٩8.-5🞥
+xn--8-qqc97891f.xn---5-rp92a; \u06698񂍽.-5🞥; [B1, V3, V7]; xn--8-qqc97891f.xn---5-rp92a; ; ;  # ٩8.-5🞥
+\u200C.\u200C; ; [C1]; xn--0ug.xn--0ug; ; .; [A4_1, A4_2] # .
+xn--0ug.xn--0ug; \u200C.\u200C; [C1]; xn--0ug.xn--0ug; ; ;  # .
+\u200D튛.\u0716; ; [B1, C2]; xn--1ug4441e.xn--gnb; ; xn--157b.xn--gnb; [] # 튛.ܖ
+\u200D튛.\u0716; \u200D튛.\u0716; [B1, C2]; xn--1ug4441e.xn--gnb; ; xn--157b.xn--gnb; [] # 튛.ܖ
+xn--157b.xn--gnb; 튛.\u0716; ; xn--157b.xn--gnb; ; ;  # 튛.ܖ
+튛.\u0716; ; ; xn--157b.xn--gnb; ; ;  # 튛.ܖ
+튛.\u0716; 튛.\u0716; ; xn--157b.xn--gnb; ; ;  # 튛.ܖ
+xn--1ug4441e.xn--gnb; \u200D튛.\u0716; [B1, C2]; xn--1ug4441e.xn--gnb; ; ;  # 튛.ܖ
+ᡋ𐹰𞽳.\u0779ⴞ; ; [B2, B3, B5, B6, V7]; xn--b8e0417jocvf.xn--9pb883q; ; ;  # ᡋ𐹰.ݹⴞ
+ᡋ𐹰𞽳.\u0779Ⴞ; ᡋ𐹰𞽳.\u0779ⴞ; [B2, B3, B5, B6, V7]; xn--b8e0417jocvf.xn--9pb883q; ; ;  # ᡋ𐹰.ݹⴞ
+xn--b8e0417jocvf.xn--9pb883q; ᡋ𐹰𞽳.\u0779ⴞ; [B2, B3, B5, B6, V7]; xn--b8e0417jocvf.xn--9pb883q; ; ;  # ᡋ𐹰.ݹⴞ
+xn--b8e0417jocvf.xn--9pb068b; ᡋ𐹰𞽳.\u0779Ⴞ; [B2, B3, B5, B6, V7]; xn--b8e0417jocvf.xn--9pb068b; ; ;  # ᡋ𐹰.ݹႾ
+𐷃\u0662𝅻𝟧．𐹮𐹬Ⴇ; 𐷃\u0662𝅻5.𐹮𐹬ⴇ; [B1, B4, V7]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ;  # ٢𝅻5.𐹮𐹬ⴇ
+𐷃\u0662𝅻5.𐹮𐹬Ⴇ; 𐷃\u0662𝅻5.𐹮𐹬ⴇ; [B1, B4, V7]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ;  # ٢𝅻5.𐹮𐹬ⴇ
+𐷃\u0662𝅻5.𐹮𐹬ⴇ; ; [B1, B4, V7]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ;  # ٢𝅻5.𐹮𐹬ⴇ
+xn--5-cqc8833rhv7f.xn--ykjz523efa; 𐷃\u0662𝅻5.𐹮𐹬ⴇ; [B1, B4, V7]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ;  # ٢𝅻5.𐹮𐹬ⴇ
+𐷃\u0662𝅻𝟧．𐹮𐹬ⴇ; 𐷃\u0662𝅻5.𐹮𐹬ⴇ; [B1, B4, V7]; xn--5-cqc8833rhv7f.xn--ykjz523efa; ; ;  # ٢𝅻5.𐹮𐹬ⴇ
+xn--5-cqc8833rhv7f.xn--fnd3401kfa; 𐷃\u0662𝅻5.𐹮𐹬Ⴇ; [B1, B4, V7]; xn--5-cqc8833rhv7f.xn--fnd3401kfa; ; ;  # ٢𝅻5.𐹮𐹬Ⴇ
+Ⴗ．\u05C2𑄴\uA9B7񘃨; ⴗ.𑄴\u05C2\uA9B7񘃨; [V6, V7]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
+Ⴗ．𑄴\u05C2\uA9B7񘃨; ⴗ.𑄴\u05C2\uA9B7񘃨; [V6, V7]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
+Ⴗ.𑄴\u05C2\uA9B7񘃨; ⴗ.𑄴\u05C2\uA9B7񘃨; [V6, V7]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
+ⴗ.𑄴\u05C2\uA9B7񘃨; ; [V6, V7]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
+xn--flj.xn--qdb0605f14ycrms3c; ⴗ.𑄴\u05C2\uA9B7񘃨; [V6, V7]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
+ⴗ．𑄴\u05C2\uA9B7񘃨; ⴗ.𑄴\u05C2\uA9B7񘃨; [V6, V7]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
+ⴗ．\u05C2𑄴\uA9B7񘃨; ⴗ.𑄴\u05C2\uA9B7񘃨; [V6, V7]; xn--flj.xn--qdb0605f14ycrms3c; ; ;  # ⴗ.𑄴ׂꦷ
+xn--vnd.xn--qdb0605f14ycrms3c; Ⴗ.𑄴\u05C2\uA9B7񘃨; [V6, V7]; xn--vnd.xn--qdb0605f14ycrms3c; ; ;  # Ⴗ.𑄴ׂꦷ
+𝟾𾤘．򇕛\u066C; 8𾤘.򇕛\u066C; [B1, B5, B6, V7]; xn--8-kh23b.xn--lib78461i; ; ;  # 8.٬
+8𾤘.򇕛\u066C; ; [B1, B5, B6, V7]; xn--8-kh23b.xn--lib78461i; ; ;  # 8.٬
+xn--8-kh23b.xn--lib78461i; 8𾤘.򇕛\u066C; [B1, B5, B6, V7]; xn--8-kh23b.xn--lib78461i; ; ;  # 8.٬
+⒈酫︒。\u08D6; ⒈酫︒.\u08D6; [V6, V7]; xn--tsh4490bfe8c.xn--8zb; ; ;  # ⒈酫︒.ࣖ
+1.酫。。\u08D6; 1.酫..\u08D6; [V6, X4_2]; 1.xn--8j4a..xn--8zb; [V6, A4_2]; ;  # 1.酫..ࣖ
+1.xn--8j4a..xn--8zb; 1.酫..\u08D6; [V6, X4_2]; 1.xn--8j4a..xn--8zb; [V6, A4_2]; ;  # 1.酫..ࣖ
+xn--tsh4490bfe8c.xn--8zb; ⒈酫︒.\u08D6; [V6, V7]; xn--tsh4490bfe8c.xn--8zb; ; ;  # ⒈酫︒.ࣖ
+\u2DE3\u200C≮\u1A6B.\u200C\u0E3A; ; [C1, V6]; xn--uof63xk4bf3s.xn--o4c732g; ; xn--uof548an0j.xn--o4c; [V6] # ⷣ≮ᩫ.ฺ
+\u2DE3\u200C<\u0338\u1A6B.\u200C\u0E3A; \u2DE3\u200C≮\u1A6B.\u200C\u0E3A; [C1, V6]; xn--uof63xk4bf3s.xn--o4c732g; ; xn--uof548an0j.xn--o4c; [V6] # ⷣ≮ᩫ.ฺ
+xn--uof548an0j.xn--o4c; \u2DE3≮\u1A6B.\u0E3A; [V6]; xn--uof548an0j.xn--o4c; ; ;  # ⷣ≮ᩫ.ฺ
+xn--uof63xk4bf3s.xn--o4c732g; \u2DE3\u200C≮\u1A6B.\u200C\u0E3A; [C1, V6]; xn--uof63xk4bf3s.xn--o4c732g; ; ;  # ⷣ≮ᩫ.ฺ
+𞪂。ႷႽ¹\u200D; 𞪂.ⴗⴝ1\u200D; [B6, C2, V7]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [V7] # .ⴗⴝ1
+𞪂。ႷႽ1\u200D; 𞪂.ⴗⴝ1\u200D; [B6, C2, V7]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [V7] # .ⴗⴝ1
+𞪂。ⴗⴝ1\u200D; 𞪂.ⴗⴝ1\u200D; [B6, C2, V7]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [V7] # .ⴗⴝ1
+𞪂。Ⴗⴝ1\u200D; 𞪂.ⴗⴝ1\u200D; [B6, C2, V7]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [V7] # .ⴗⴝ1
+xn--co6h.xn--1-kwssa; 𞪂.ⴗⴝ1; [V7]; xn--co6h.xn--1-kwssa; ; ;  # .ⴗⴝ1
+xn--co6h.xn--1-ugn710dya; 𞪂.ⴗⴝ1\u200D; [B6, C2, V7]; xn--co6h.xn--1-ugn710dya; ; ;  # .ⴗⴝ1
+𞪂。ⴗⴝ¹\u200D; 𞪂.ⴗⴝ1\u200D; [B6, C2, V7]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [V7] # .ⴗⴝ1
+𞪂。Ⴗⴝ¹\u200D; 𞪂.ⴗⴝ1\u200D; [B6, C2, V7]; xn--co6h.xn--1-ugn710dya; ; xn--co6h.xn--1-kwssa; [V7] # .ⴗⴝ1
+xn--co6h.xn--1-h1g429s; 𞪂.Ⴗⴝ1; [V7]; xn--co6h.xn--1-h1g429s; ; ;  # .Ⴗⴝ1
+xn--co6h.xn--1-h1g398iewm; 𞪂.Ⴗⴝ1\u200D; [B6, C2, V7]; xn--co6h.xn--1-h1g398iewm; ; ;  # .Ⴗⴝ1
+xn--co6h.xn--1-h1gs; 𞪂.ႷႽ1; [V7]; xn--co6h.xn--1-h1gs; ; ;  # .ႷႽ1
+xn--co6h.xn--1-h1gs597m; 𞪂.ႷႽ1\u200D; [B6, C2, V7]; xn--co6h.xn--1-h1gs597m; ; ;  # .ႷႽ1
+𑄴𑄳2.𞳿󠀳-; ; [B1, B3, V3, V6, V7]; xn--2-h87ic.xn----s39r33498d; ; ;  # 𑄴𑄳2.-
+xn--2-h87ic.xn----s39r33498d; 𑄴𑄳2.𞳿󠀳-; [B1, B3, V3, V6, V7]; xn--2-h87ic.xn----s39r33498d; ; ;  # 𑄴𑄳2.-
+󠕲󟶶\u0665｡񀁁𑄳𞤃\u0710; 󠕲󟶶\u0665.񀁁𑄳𞤥\u0710; [B1, B5, B6, V7]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ;  # ٥.𑄳𞤥ܐ
+󠕲󟶶\u0665。񀁁𑄳𞤃\u0710; 󠕲󟶶\u0665.񀁁𑄳𞤥\u0710; [B1, B5, B6, V7]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ;  # ٥.𑄳𞤥ܐ
+󠕲󟶶\u0665。񀁁𑄳𞤥\u0710; 󠕲󟶶\u0665.񀁁𑄳𞤥\u0710; [B1, B5, B6, V7]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ;  # ٥.𑄳𞤥ܐ
+xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; 󠕲󟶶\u0665.񀁁𑄳𞤥\u0710; [B1, B5, B6, V7]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ;  # ٥.𑄳𞤥ܐ
+󠕲󟶶\u0665｡񀁁𑄳𞤥\u0710; 󠕲󟶶\u0665.񀁁𑄳𞤥\u0710; [B1, B5, B6, V7]; xn--eib57614py3ea.xn--9mb5737kqnpfzkwr; ; ;  # ٥.𑄳𞤥ܐ
+\u0720򲠽𐹢\u17BB｡ςᢈ🝭\u200C; \u0720򲠽𐹢\u17BB.ςᢈ🝭\u200C; [B2, B6, C1, V7]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V7] # ܠ𐹢ុ.ςᢈ🝭
+\u0720򲠽𐹢\u17BB。ςᢈ🝭\u200C; \u0720򲠽𐹢\u17BB.ςᢈ🝭\u200C; [B2, B6, C1, V7]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V7] # ܠ𐹢ុ.ςᢈ🝭
+\u0720򲠽𐹢\u17BB。Σᢈ🝭\u200C; \u0720򲠽𐹢\u17BB.σᢈ🝭\u200C; [B2, B6, C1, V7]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V7] # ܠ𐹢ុ.σᢈ🝭
+\u0720򲠽𐹢\u17BB。σᢈ🝭\u200C; \u0720򲠽𐹢\u17BB.σᢈ🝭\u200C; [B2, B6, C1, V7]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V7] # ܠ𐹢ុ.σᢈ🝭
+xn--qnb616fis0qzt36f.xn--4xa847hli46a; \u0720򲠽𐹢\u17BB.σᢈ🝭; [B2, B6, V7]; xn--qnb616fis0qzt36f.xn--4xa847hli46a; ; ;  # ܠ𐹢ុ.σᢈ🝭
+xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; \u0720򲠽𐹢\u17BB.σᢈ🝭\u200C; [B2, B6, C1, V7]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; ;  # ܠ𐹢ុ.σᢈ🝭
+xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; \u0720򲠽𐹢\u17BB.ςᢈ🝭\u200C; [B2, B6, C1, V7]; xn--qnb616fis0qzt36f.xn--3xa057h6ofgl44c; ; ;  # ܠ𐹢ុ.ςᢈ🝭
+\u0720򲠽𐹢\u17BB｡Σᢈ🝭\u200C; \u0720򲠽𐹢\u17BB.σᢈ🝭\u200C; [B2, B6, C1, V7]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V7] # ܠ𐹢ុ.σᢈ🝭
+\u0720򲠽𐹢\u17BB｡σᢈ🝭\u200C; \u0720򲠽𐹢\u17BB.σᢈ🝭\u200C; [B2, B6, C1, V7]; xn--qnb616fis0qzt36f.xn--4xa847h6ofgl44c; ; xn--qnb616fis0qzt36f.xn--4xa847hli46a; [B2, B6, V7] # ܠ𐹢ុ.σᢈ🝭
+\u200D--≮。𐹧; \u200D--≮.𐹧; [B1, C2]; xn-----l1tz1k.xn--fo0d; ; xn-----ujv.xn--fo0d; [B1, V3] # --≮.𐹧
+\u200D--<\u0338。𐹧; \u200D--≮.𐹧; [B1, C2]; xn-----l1tz1k.xn--fo0d; ; xn-----ujv.xn--fo0d; [B1, V3] # --≮.𐹧
+xn-----ujv.xn--fo0d; --≮.𐹧; [B1, V3]; xn-----ujv.xn--fo0d; ; ;  # --≮.𐹧
+xn-----l1tz1k.xn--fo0d; \u200D--≮.𐹧; [B1, C2]; xn-----l1tz1k.xn--fo0d; ; ;  # --≮.𐹧
+\uA806。𻚏\u0FB0⒕; \uA806.𻚏\u0FB0⒕; [V6, V7]; xn--l98a.xn--dgd218hhp28d; ; ;  # ꠆.ྰ⒕
+\uA806。𻚏\u0FB014.; \uA806.𻚏\u0FB014.; [V6, V7]; xn--l98a.xn--14-jsj57880f.; [V6, V7, A4_2]; ;  # ꠆.ྰ14.
+xn--l98a.xn--14-jsj57880f.; \uA806.𻚏\u0FB014.; [V6, V7]; xn--l98a.xn--14-jsj57880f.; [V6, V7, A4_2]; ;  # ꠆.ྰ14.
+xn--l98a.xn--dgd218hhp28d; \uA806.𻚏\u0FB0⒕; [V6, V7]; xn--l98a.xn--dgd218hhp28d; ; ;  # ꠆.ྰ⒕
+򮉂\u06BC．𑆺\u0669; 򮉂\u06BC.𑆺\u0669; [B1, B5, B6, V6, V7]; xn--vkb92243l.xn--iib9797k; ; ;  # ڼ.𑆺٩
+򮉂\u06BC.𑆺\u0669; ; [B1, B5, B6, V6, V7]; xn--vkb92243l.xn--iib9797k; ; ;  # ڼ.𑆺٩
+xn--vkb92243l.xn--iib9797k; 򮉂\u06BC.𑆺\u0669; [B1, B5, B6, V6, V7]; xn--vkb92243l.xn--iib9797k; ; ;  # ڼ.𑆺٩
+󠁎\u06D0-。𞤴; 󠁎\u06D0-.𞤴; [B1, V3, V7]; xn----mwc72685y.xn--se6h; ; ;  # ې-.𞤴
+󠁎\u06D0-。𞤒; 󠁎\u06D0-.𞤴; [B1, V3, V7]; xn----mwc72685y.xn--se6h; ; ;  # ې-.𞤴
+xn----mwc72685y.xn--se6h; 󠁎\u06D0-.𞤴; [B1, V3, V7]; xn----mwc72685y.xn--se6h; ; ;  # ې-.𞤴
+𝟠4󠇗𝈻．\u200D𐋵⛧\u200D; 84𝈻.\u200D𐋵⛧\u200D; [C2]; xn--84-s850a.xn--1uga573cfq1w; ; xn--84-s850a.xn--59h6326e; [] # 84𝈻.𐋵⛧
+84󠇗𝈻.\u200D𐋵⛧\u200D; 84𝈻.\u200D𐋵⛧\u200D; [C2]; xn--84-s850a.xn--1uga573cfq1w; ; xn--84-s850a.xn--59h6326e; [] # 84𝈻.𐋵⛧
 xn--84-s850a.xn--59h6326e; 84𝈻.𐋵⛧; ; xn--84-s850a.xn--59h6326e; ; ;  # 84𝈻.𐋵⛧
 84𝈻.𐋵⛧; ; ; xn--84-s850a.xn--59h6326e; ; ;  # 84𝈻.𐋵⛧
-xn--84-s850a.xn--1uga573cfq1w; 84𝈻.‍𐋵⛧‍; [C2]; xn--84-s850a.xn--1uga573cfq1w; ; ;  # 84𝈻.𐋵⛧
--؁｡ᡪ; -؁.ᡪ; [B1, P1, V3, V6]; xn----tkc.xn--68e; ; ;  # -.ᡪ
--؁。ᡪ; -؁.ᡪ; [B1, P1, V3, V6]; xn----tkc.xn--68e; ; ;  # -.ᡪ
-xn----tkc.xn--68e; -؁.ᡪ; [B1, V3, V6]; xn----tkc.xn--68e; ; ;  # -.ᡪ
-≮𝟕．謖ß≯; ≮7.謖ß≯; [P1, V6]; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c;  # ≮7.謖ß≯
-≮𝟕．謖ß≯; ≮7.謖ß≯; [P1, V6]; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c;  # ≮7.謖ß≯
-≮7.謖ß≯; ; [P1, V6]; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c;  # ≮7.謖ß≯
-≮7.謖ß≯; ≮7.謖ß≯; [P1, V6]; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c;  # ≮7.謖ß≯
-≮7.謖SS≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-≮7.謖SS≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-≮7.謖ss≯; ; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-≮7.謖ss≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-≮7.謖Ss≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-≮7.謖Ss≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-xn--7-mgo.xn--ss-xjvv174c; ≮7.謖ss≯; [V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-xn--7-mgo.xn--zca892oly5e; ≮7.謖ß≯; [V6]; xn--7-mgo.xn--zca892oly5e; ; ;  # ≮7.謖ß≯
-≮𝟕．謖SS≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-≮𝟕．謖SS≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-≮𝟕．謖ss≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-≮𝟕．謖ss≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-≮𝟕．謖Ss≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-≮𝟕．謖Ss≯; ≮7.謖ss≯; [P1, V6]; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
-朶Ⴉ𞪡.𝨽ࠥ📻-; ; [B1, B5, B6, P1, V3, V5, V6]; xn--hnd7245bd56p.xn----3gd37096apmwa; ; ;  # 朶Ⴉ.𝨽ࠥ📻-
-朶ⴉ𞪡.𝨽ࠥ📻-; ; [B1, B5, B6, P1, V3, V5, V6]; xn--0kjz47pd57t.xn----3gd37096apmwa; ; ;  # 朶ⴉ.𝨽ࠥ📻-
-xn--0kjz47pd57t.xn----3gd37096apmwa; 朶ⴉ𞪡.𝨽ࠥ📻-; [B1, B5, B6, V3, V5, V6]; xn--0kjz47pd57t.xn----3gd37096apmwa; ; ;  # 朶ⴉ.𝨽ࠥ📻-
-xn--hnd7245bd56p.xn----3gd37096apmwa; 朶Ⴉ𞪡.𝨽ࠥ📻-; [B1, B5, B6, V3, V5, V6]; xn--hnd7245bd56p.xn----3gd37096apmwa; ; ;  # 朶Ⴉ.𝨽ࠥ📻-
-𐤎。󑿰‌≮‍; 𐤎.󑿰‌≮‍; [B6, C1, C2, P1, V6]; xn--bk9c.xn--0ugc04p2u638c; ; xn--bk9c.xn--gdhx6802k; [B6, P1, V6] # 𐤎.≮
-𐤎。󑿰‌≮‍; 𐤎.󑿰‌≮‍; [B6, C1, C2, P1, V6]; xn--bk9c.xn--0ugc04p2u638c; ; xn--bk9c.xn--gdhx6802k; [B6, P1, V6] # 𐤎.≮
-xn--bk9c.xn--gdhx6802k; 𐤎.󑿰≮; [B6, V6]; xn--bk9c.xn--gdhx6802k; ; ;  # 𐤎.≮
-xn--bk9c.xn--0ugc04p2u638c; 𐤎.󑿰‌≮‍; [B6, C1, C2, V6]; xn--bk9c.xn--0ugc04p2u638c; ; ;  # 𐤎.≮
-񭜎⒈｡‌𝟤; 񭜎⒈.‌2; [C1, P1, V6]; xn--tsh94183d.xn--2-rgn; ; xn--tsh94183d.2; [P1, V6] # ⒈.2
-񭜎1.。‌2; 񭜎1..‌2; [C1, P1, V6, X4_2]; xn--1-ex54e..xn--2-rgn; [C1, P1, V6, A4_2]; xn--1-ex54e..2; [P1, V6, A4_2] # 1..2
-xn--1-ex54e..2; 񭜎1..2; [V6, X4_2]; xn--1-ex54e..2; [V6, A4_2]; ;  # 1..2
-xn--1-ex54e..xn--2-rgn; 񭜎1..‌2; [C1, V6, X4_2]; xn--1-ex54e..xn--2-rgn; [C1, V6, A4_2]; ;  # 1..2
-xn--tsh94183d.2; 񭜎⒈.2; [V6]; xn--tsh94183d.2; ; ;  # ⒈.2
-xn--tsh94183d.xn--2-rgn; 񭜎⒈.‌2; [C1, V6]; xn--tsh94183d.xn--2-rgn; ; ;  # ⒈.2
-󠟊𐹤‍．𐹳󙄵𐹶; 󠟊𐹤‍.𐹳󙄵𐹶; [B1, C2, P1, V6]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; xn--co0d98977c.xn--ro0dga22807v; [B1, P1, V6] # 𐹤.𐹳𐹶
-󠟊𐹤‍.𐹳󙄵𐹶; ; [B1, C2, P1, V6]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; xn--co0d98977c.xn--ro0dga22807v; [B1, P1, V6] # 𐹤.𐹳𐹶
-xn--co0d98977c.xn--ro0dga22807v; 󠟊𐹤.𐹳󙄵𐹶; [B1, V6]; xn--co0d98977c.xn--ro0dga22807v; ; ;  # 𐹤.𐹳𐹶
-xn--1ugy994g7k93g.xn--ro0dga22807v; 󠟊𐹤‍.𐹳󙄵𐹶; [B1, C2, V6]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; ;  # 𐹤.𐹳𐹶
-𞤴𐹻𑓂𐭝．्︇􉛯; 𞤴𐹻𑓂𐭝.्􉛯; [B1, P1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ;  # 𞤴𐹻𑓂𐭝.्
-𞤴𐹻𑓂𐭝.्︇􉛯; 𞤴𐹻𑓂𐭝.्􉛯; [B1, P1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ;  # 𞤴𐹻𑓂𐭝.्
-𞤒𐹻𑓂𐭝.्︇􉛯; 𞤴𐹻𑓂𐭝.्􉛯; [B1, P1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ;  # 𞤴𐹻𑓂𐭝.्
-xn--609c96c09grp2w.xn--n3b28708s; 𞤴𐹻𑓂𐭝.्􉛯; [B1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ;  # 𞤴𐹻𑓂𐭝.्
-𞤒𐹻𑓂𐭝．्︇􉛯; 𞤴𐹻𑓂𐭝.्􉛯; [B1, P1, V5, V6]; xn--609c96c09grp2w.xn--n3b28708s; ; ;  # 𞤴𐹻𑓂𐭝.्
-٨｡𐹠𐹽񗮶; ٨.𐹠𐹽񗮶; [B1, P1, V6]; xn--hib.xn--7n0d2bu9196b; ; ;  # ٨.𐹠𐹽
-٨。𐹠𐹽񗮶; ٨.𐹠𐹽񗮶; [B1, P1, V6]; xn--hib.xn--7n0d2bu9196b; ; ;  # ٨.𐹠𐹽
-xn--hib.xn--7n0d2bu9196b; ٨.𐹠𐹽񗮶; [B1, V6]; xn--hib.xn--7n0d2bu9196b; ; ;  # ٨.𐹠𐹽
-ᅠ񍀜.8򶾵ڜ; ; [B1, P1, V6]; xn--psd85033d.xn--8-otc61545t; ; ;  # .8ڜ
-xn--psd85033d.xn--8-otc61545t; ᅠ񍀜.8򶾵ڜ; [B1, V6]; xn--psd85033d.xn--8-otc61545t; ; ;  # .8ڜ
-‍‌󠆪｡ß𑓃; ‍‌.ß𑓃; [C1, C2]; xn--0ugb.xn--zca0732l; ; .xn--ss-bh7o; [A4_2] # .ß𑓃
-‍‌󠆪。ß𑓃; ‍‌.ß𑓃; [C1, C2]; xn--0ugb.xn--zca0732l; ; .xn--ss-bh7o; [A4_2] # .ß𑓃
-‍‌󠆪。SS𑓃; ‍‌.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
-‍‌󠆪。ss𑓃; ‍‌.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
-‍‌󠆪。Ss𑓃; ‍‌.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
+xn--84-s850a.xn--1uga573cfq1w; 84𝈻.\u200D𐋵⛧\u200D; [C2]; xn--84-s850a.xn--1uga573cfq1w; ; ;  # 84𝈻.𐋵⛧
+-\u0601｡ᡪ; -\u0601.ᡪ; [B1, V3, V7]; xn----tkc.xn--68e; ; ;  # -.ᡪ
+-\u0601。ᡪ; -\u0601.ᡪ; [B1, V3, V7]; xn----tkc.xn--68e; ; ;  # -.ᡪ
+xn----tkc.xn--68e; -\u0601.ᡪ; [B1, V3, V7]; xn----tkc.xn--68e; ; ;  # -.ᡪ
+≮𝟕．謖ß≯; ≮7.謖ß≯; ; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c;  # ≮7.謖ß≯
+<\u0338𝟕．謖ß>\u0338; ≮7.謖ß≯; ; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c;  # ≮7.謖ß≯
+≮7.謖ß≯; ; ; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c;  # ≮7.謖ß≯
+<\u03387.謖ß>\u0338; ≮7.謖ß≯; ; xn--7-mgo.xn--zca892oly5e; ; xn--7-mgo.xn--ss-xjvv174c;  # ≮7.謖ß≯
+<\u03387.謖SS>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+≮7.謖SS≯; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+≮7.謖ss≯; ; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+<\u03387.謖ss>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+<\u03387.謖Ss>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+≮7.謖Ss≯; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+xn--7-mgo.xn--ss-xjvv174c; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+xn--7-mgo.xn--zca892oly5e; ≮7.謖ß≯; ; xn--7-mgo.xn--zca892oly5e; ; ;  # ≮7.謖ß≯
+<\u0338𝟕．謖SS>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+≮𝟕．謖SS≯; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+≮𝟕．謖ss≯; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+<\u0338𝟕．謖ss>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+<\u0338𝟕．謖Ss>\u0338; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+≮𝟕．謖Ss≯; ≮7.謖ss≯; ; xn--7-mgo.xn--ss-xjvv174c; ; ;  # ≮7.謖ss≯
+朶Ⴉ𞪡.𝨽\u0825📻-; 朶ⴉ𞪡.𝨽\u0825📻-; [B1, B5, B6, V3, V6, V7]; xn--0kjz47pd57t.xn----3gd37096apmwa; ; ;  # 朶ⴉ.𝨽ࠥ📻-
+朶ⴉ𞪡.𝨽\u0825📻-; ; [B1, B5, B6, V3, V6, V7]; xn--0kjz47pd57t.xn----3gd37096apmwa; ; ;  # 朶ⴉ.𝨽ࠥ📻-
+xn--0kjz47pd57t.xn----3gd37096apmwa; 朶ⴉ𞪡.𝨽\u0825📻-; [B1, B5, B6, V3, V6, V7]; xn--0kjz47pd57t.xn----3gd37096apmwa; ; ;  # 朶ⴉ.𝨽ࠥ📻-
+xn--hnd7245bd56p.xn----3gd37096apmwa; 朶Ⴉ𞪡.𝨽\u0825📻-; [B1, B5, B6, V3, V6, V7]; xn--hnd7245bd56p.xn----3gd37096apmwa; ; ;  # 朶Ⴉ.𝨽ࠥ📻-
+𐤎。󑿰\u200C≮\u200D; 𐤎.󑿰\u200C≮\u200D; [B6, C1, C2, V7]; xn--bk9c.xn--0ugc04p2u638c; ; xn--bk9c.xn--gdhx6802k; [B6, V7] # 𐤎.≮
+𐤎。󑿰\u200C<\u0338\u200D; 𐤎.󑿰\u200C≮\u200D; [B6, C1, C2, V7]; xn--bk9c.xn--0ugc04p2u638c; ; xn--bk9c.xn--gdhx6802k; [B6, V7] # 𐤎.≮
+xn--bk9c.xn--gdhx6802k; 𐤎.󑿰≮; [B6, V7]; xn--bk9c.xn--gdhx6802k; ; ;  # 𐤎.≮
+xn--bk9c.xn--0ugc04p2u638c; 𐤎.󑿰\u200C≮\u200D; [B6, C1, C2, V7]; xn--bk9c.xn--0ugc04p2u638c; ; ;  # 𐤎.≮
+񭜎⒈｡\u200C𝟤; 񭜎⒈.\u200C2; [C1, V7]; xn--tsh94183d.xn--2-rgn; ; xn--tsh94183d.2; [V7] # ⒈.2
+񭜎1.。\u200C2; 񭜎1..\u200C2; [C1, V7, X4_2]; xn--1-ex54e..xn--2-rgn; [C1, V7, A4_2]; xn--1-ex54e..2; [V7, A4_2] # 1..2
+xn--1-ex54e..c; 񭜎1..c; [V7, X4_2]; xn--1-ex54e..c; [V7, A4_2]; ;  # 1..c
+xn--1-ex54e..xn--2-rgn; 񭜎1..\u200C2; [C1, V7, X4_2]; xn--1-ex54e..xn--2-rgn; [C1, V7, A4_2]; ;  # 1..2
+xn--tsh94183d.c; 񭜎⒈.c; [V7]; xn--tsh94183d.c; ; ;  # ⒈.c
+xn--tsh94183d.xn--2-rgn; 񭜎⒈.\u200C2; [C1, V7]; xn--tsh94183d.xn--2-rgn; ; ;  # ⒈.2
+󠟊𐹤\u200D．𐹳󙄵𐹶; 󠟊𐹤\u200D.𐹳󙄵𐹶; [B1, C2, V7]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; xn--co0d98977c.xn--ro0dga22807v; [B1, V7] # 𐹤.𐹳𐹶
+󠟊𐹤\u200D.𐹳󙄵𐹶; ; [B1, C2, V7]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; xn--co0d98977c.xn--ro0dga22807v; [B1, V7] # 𐹤.𐹳𐹶
+xn--co0d98977c.xn--ro0dga22807v; 󠟊𐹤.𐹳󙄵𐹶; [B1, V7]; xn--co0d98977c.xn--ro0dga22807v; ; ;  # 𐹤.𐹳𐹶
+xn--1ugy994g7k93g.xn--ro0dga22807v; 󠟊𐹤\u200D.𐹳󙄵𐹶; [B1, C2, V7]; xn--1ugy994g7k93g.xn--ro0dga22807v; ; ;  # 𐹤.𐹳𐹶
+𞤴𐹻𑓂𐭝．\u094D\uFE07􉛯; 𞤴𐹻𑓂𐭝.\u094D􉛯; [B1, V6, V7]; xn--609c96c09grp2w.xn--n3b28708s; ; ;  # 𞤴𐹻𑓂𐭝.्
+𞤴𐹻𑓂𐭝.\u094D\uFE07􉛯; 𞤴𐹻𑓂𐭝.\u094D􉛯; [B1, V6, V7]; xn--609c96c09grp2w.xn--n3b28708s; ; ;  # 𞤴𐹻𑓂𐭝.्
+𞤒𐹻𑓂𐭝.\u094D\uFE07􉛯; 𞤴𐹻𑓂𐭝.\u094D􉛯; [B1, V6, V7]; xn--609c96c09grp2w.xn--n3b28708s; ; ;  # 𞤴𐹻𑓂𐭝.्
+xn--609c96c09grp2w.xn--n3b28708s; 𞤴𐹻𑓂𐭝.\u094D􉛯; [B1, V6, V7]; xn--609c96c09grp2w.xn--n3b28708s; ; ;  # 𞤴𐹻𑓂𐭝.्
+𞤒𐹻𑓂𐭝．\u094D\uFE07􉛯; 𞤴𐹻𑓂𐭝.\u094D􉛯; [B1, V6, V7]; xn--609c96c09grp2w.xn--n3b28708s; ; ;  # 𞤴𐹻𑓂𐭝.्
+\u0668｡𐹠𐹽񗮶; \u0668.𐹠𐹽񗮶; [B1, V7]; xn--hib.xn--7n0d2bu9196b; ; ;  # ٨.𐹠𐹽
+\u0668。𐹠𐹽񗮶; \u0668.𐹠𐹽񗮶; [B1, V7]; xn--hib.xn--7n0d2bu9196b; ; ;  # ٨.𐹠𐹽
+xn--hib.xn--7n0d2bu9196b; \u0668.𐹠𐹽񗮶; [B1, V7]; xn--hib.xn--7n0d2bu9196b; ; ;  # ٨.𐹠𐹽
+\u1160񍀜.8򶾵\u069C; 񍀜.8򶾵\u069C; [B1, V7]; xn--mn1x.xn--8-otc61545t; ; ;  # .8ڜ
+xn--mn1x.xn--8-otc61545t; 񍀜.8򶾵\u069C; [B1, V7]; xn--mn1x.xn--8-otc61545t; ; ;  # .8ڜ
+xn--psd85033d.xn--8-otc61545t; \u1160񍀜.8򶾵\u069C; [B1, V7]; xn--psd85033d.xn--8-otc61545t; ; ;  # .8ڜ
+\u200D\u200C󠆪｡ß𑓃; \u200D\u200C.ß𑓃; [C1, C2]; xn--0ugb.xn--zca0732l; ; .xn--ss-bh7o; [A4_2] # .ß𑓃
+\u200D\u200C󠆪。ß𑓃; \u200D\u200C.ß𑓃; [C1, C2]; xn--0ugb.xn--zca0732l; ; .xn--ss-bh7o; [A4_2] # .ß𑓃
+\u200D\u200C󠆪。SS𑓃; \u200D\u200C.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
+\u200D\u200C󠆪。ss𑓃; \u200D\u200C.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
+\u200D\u200C󠆪。Ss𑓃; \u200D\u200C.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
 .xn--ss-bh7o; .ss𑓃; [X4_2]; .xn--ss-bh7o; [A4_2]; ;  # .ss𑓃
-xn--0ugb.xn--ss-bh7o; ‍‌.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; ;  # .ss𑓃
-xn--0ugb.xn--zca0732l; ‍‌.ß𑓃; [C1, C2]; xn--0ugb.xn--zca0732l; ; ;  # .ß𑓃
-‍‌󠆪｡SS𑓃; ‍‌.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
-‍‌󠆪｡ss𑓃; ‍‌.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
-‍‌󠆪｡Ss𑓃; ‍‌.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
+xn--0ugb.xn--ss-bh7o; \u200D\u200C.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; ;  # .ss𑓃
+xn--0ugb.xn--zca0732l; \u200D\u200C.ß𑓃; [C1, C2]; xn--0ugb.xn--zca0732l; ; ;  # .ß𑓃
+\u200D\u200C󠆪｡SS𑓃; \u200D\u200C.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
+\u200D\u200C󠆪｡ss𑓃; \u200D\u200C.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
+\u200D\u200C󠆪｡Ss𑓃; \u200D\u200C.ss𑓃; [C1, C2]; xn--0ugb.xn--ss-bh7o; ; .xn--ss-bh7o; [A4_2] # .ss𑓃
 xn--ss-bh7o; ss𑓃; ; xn--ss-bh7o; ; ;  # ss𑓃
 ss𑓃; ; ; xn--ss-bh7o; ; ;  # ss𑓃
 SS𑓃; ss𑓃; ; xn--ss-bh7o; ; ;  # ss𑓃
 Ss𑓃; ss𑓃; ; xn--ss-bh7o; ; ;  # ss𑓃
-︒‌ヶ䒩.ꡪ; ; [C1, P1, V6]; xn--0ug287dj0or48o.xn--gd9a; ; xn--qekw60dns9k.xn--gd9a; [P1, V6] # ︒ヶ䒩.ꡪ
-。‌ヶ䒩.ꡪ; .‌ヶ䒩.ꡪ; [C1, X4_2]; .xn--0ug287dj0o.xn--gd9a; [C1, A4_2]; .xn--qekw60d.xn--gd9a; [A4_2] # .ヶ䒩.ꡪ
+︒\u200Cヶ䒩.ꡪ; ; [C1, V7]; xn--0ug287dj0or48o.xn--gd9a; ; xn--qekw60dns9k.xn--gd9a; [V7] # ︒ヶ䒩.ꡪ
+。\u200Cヶ䒩.ꡪ; .\u200Cヶ䒩.ꡪ; [C1, X4_2]; .xn--0ug287dj0o.xn--gd9a; [C1, A4_2]; .xn--qekw60d.xn--gd9a; [A4_2] # .ヶ䒩.ꡪ
 .xn--qekw60d.xn--gd9a; .ヶ䒩.ꡪ; [X4_2]; .xn--qekw60d.xn--gd9a; [A4_2]; ;  # .ヶ䒩.ꡪ
-.xn--0ug287dj0o.xn--gd9a; .‌ヶ䒩.ꡪ; [C1, X4_2]; .xn--0ug287dj0o.xn--gd9a; [C1, A4_2]; ;  # .ヶ䒩.ꡪ
-xn--qekw60dns9k.xn--gd9a; ︒ヶ䒩.ꡪ; [V6]; xn--qekw60dns9k.xn--gd9a; ; ;  # ︒ヶ䒩.ꡪ
-xn--0ug287dj0or48o.xn--gd9a; ︒‌ヶ䒩.ꡪ; [C1, V6]; xn--0ug287dj0or48o.xn--gd9a; ; ;  # ︒ヶ䒩.ꡪ
+.xn--0ug287dj0o.xn--gd9a; .\u200Cヶ䒩.ꡪ; [C1, X4_2]; .xn--0ug287dj0o.xn--gd9a; [C1, A4_2]; ;  # .ヶ䒩.ꡪ
+xn--qekw60dns9k.xn--gd9a; ︒ヶ䒩.ꡪ; [V7]; xn--qekw60dns9k.xn--gd9a; ; ;  # ︒ヶ䒩.ꡪ
+xn--0ug287dj0or48o.xn--gd9a; ︒\u200Cヶ䒩.ꡪ; [C1, V7]; xn--0ug287dj0or48o.xn--gd9a; ; ;  # ︒ヶ䒩.ꡪ
 xn--qekw60d.xn--gd9a; ヶ䒩.ꡪ; ; xn--qekw60d.xn--gd9a; ; ;  # ヶ䒩.ꡪ
 ヶ䒩.ꡪ; ; ; xn--qekw60d.xn--gd9a; ; ;  # ヶ䒩.ꡪ
-‌⒈𤮍.󢓋᩠; ; [C1, P1, V6]; xn--0ug88o7471d.xn--jof45148n; ; xn--tshw462r.xn--jof45148n; [P1, V6] # ⒈𤮍.᩠
-‌1.𤮍.󢓋᩠; ; [C1, P1, V6]; xn--1-rgn.xn--4x6j.xn--jof45148n; ; 1.xn--4x6j.xn--jof45148n; [P1, V6] # 1.𤮍.᩠
-1.xn--4x6j.xn--jof45148n; 1.𤮍.󢓋᩠; [V6]; 1.xn--4x6j.xn--jof45148n; ; ;  # 1.𤮍.᩠
-xn--1-rgn.xn--4x6j.xn--jof45148n; ‌1.𤮍.󢓋᩠; [C1, V6]; xn--1-rgn.xn--4x6j.xn--jof45148n; ; ;  # 1.𤮍.᩠
-xn--tshw462r.xn--jof45148n; ⒈𤮍.󢓋᩠; [V6]; xn--tshw462r.xn--jof45148n; ; ;  # ⒈𤮍.᩠
-xn--0ug88o7471d.xn--jof45148n; ‌⒈𤮍.󢓋᩠; [C1, V6]; xn--0ug88o7471d.xn--jof45148n; ; ;  # ⒈𤮍.᩠
-⒈‌𐫓󠀺。᩠񤰵‍; ⒈‌𐫓󠀺.᩠񤰵‍; [B1, C1, C2, P1, V5, V6]; xn--0ug78ol75wzcx4i.xn--jof95xex98m; ; xn--tsh4435fk263g.xn--jofz5294e; [B1, P1, V5, V6] # ⒈𐫓.᩠
-1.‌𐫓󠀺。᩠񤰵‍; 1.‌𐫓󠀺.᩠񤰵‍; [B1, C1, C2, P1, V5, V6]; 1.xn--0ug8853gk263g.xn--jof95xex98m; ; 1.xn--8w9c40377c.xn--jofz5294e; [B1, B3, P1, V5, V6] # 1.𐫓.᩠
-1.xn--8w9c40377c.xn--jofz5294e; 1.𐫓󠀺.᩠񤰵; [B1, B3, V5, V6]; 1.xn--8w9c40377c.xn--jofz5294e; ; ;  # 1.𐫓.᩠
-1.xn--0ug8853gk263g.xn--jof95xex98m; 1.‌𐫓󠀺.᩠񤰵‍; [B1, C1, C2, V5, V6]; 1.xn--0ug8853gk263g.xn--jof95xex98m; ; ;  # 1.𐫓.᩠
-xn--tsh4435fk263g.xn--jofz5294e; ⒈𐫓󠀺.᩠񤰵; [B1, V5, V6]; xn--tsh4435fk263g.xn--jofz5294e; ; ;  # ⒈𐫓.᩠
-xn--0ug78ol75wzcx4i.xn--jof95xex98m; ⒈‌𐫓󠀺.᩠񤰵‍; [B1, C1, C2, V5, V6]; xn--0ug78ol75wzcx4i.xn--jof95xex98m; ; ;  # ⒈𐫓.᩠
-𝅵｡𝟫𞀈䬺⒈; 𝅵.9𞀈䬺⒈; [P1, V6]; xn--3f1h.xn--9-ecp936non25a; ; ;  # .9𞀈䬺⒈
-𝅵。9𞀈䬺1.; 𝅵.9𞀈䬺1.; [P1, V6]; xn--3f1h.xn--91-030c1650n.; ; ;  # .9𞀈䬺1.
-xn--3f1h.xn--91-030c1650n.; 𝅵.9𞀈䬺1.; [V6]; xn--3f1h.xn--91-030c1650n.; ; ;  # .9𞀈䬺1.
-xn--3f1h.xn--9-ecp936non25a; 𝅵.9𞀈䬺⒈; [V6]; xn--3f1h.xn--9-ecp936non25a; ; ;  # .9𞀈䬺⒈
-򡼺≯。盚ص; 򡼺≯.盚ص; [B5, B6, P1, V6]; xn--hdh30181h.xn--0gb7878c; ; ;  # ≯.盚ص
-򡼺≯。盚ص; 򡼺≯.盚ص; [B5, B6, P1, V6]; xn--hdh30181h.xn--0gb7878c; ; ;  # ≯.盚ص
-xn--hdh30181h.xn--0gb7878c; 򡼺≯.盚ص; [B5, B6, V6]; xn--hdh30181h.xn--0gb7878c; ; ;  # ≯.盚ص
--񿰭ִ。-󠁊𐢸≯; -񿰭ִ.-󠁊𐢸≯; [B1, P1, V3, V6]; xn----fgc06667m.xn----pgoy615he5y4i; ; ;  # -ִ.-≯
--񿰭ִ。-󠁊𐢸≯; -񿰭ִ.-󠁊𐢸≯; [B1, P1, V3, V6]; xn----fgc06667m.xn----pgoy615he5y4i; ; ;  # -ִ.-≯
-xn----fgc06667m.xn----pgoy615he5y4i; -񿰭ִ.-󠁊𐢸≯; [B1, V3, V6]; xn----fgc06667m.xn----pgoy615he5y4i; ; ;  # -ִ.-≯
-󿭓᭄‌੍．𐭛񳋔; 󿭓᭄‌੍.𐭛񳋔; [B2, B3, B6, P1, V6]; xn--ybc997f6rd2n772c.xn--409c6100y; ; xn--ybc997fb5881a.xn--409c6100y; [B2, B3, P1, V6] # ᭄੍.𐭛
-󿭓᭄‌੍.𐭛񳋔; ; [B2, B3, B6, P1, V6]; xn--ybc997f6rd2n772c.xn--409c6100y; ; xn--ybc997fb5881a.xn--409c6100y; [B2, B3, P1, V6] # ᭄੍.𐭛
-xn--ybc997fb5881a.xn--409c6100y; 󿭓᭄੍.𐭛񳋔; [B2, B3, V6]; xn--ybc997fb5881a.xn--409c6100y; ; ;  # ᭄੍.𐭛
-xn--ybc997f6rd2n772c.xn--409c6100y; 󿭓᭄‌੍.𐭛񳋔; [B2, B3, B6, V6]; xn--ybc997f6rd2n772c.xn--409c6100y; ; ;  # ᭄੍.𐭛
-⾇.ٽ𞤴ڻ‍; 舛.ٽ𞤴ڻ‍; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; xn--8c1a.xn--2ib8jn539l; [] # 舛.ٽ𞤴ڻ
-舛.ٽ𞤴ڻ‍; ; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; xn--8c1a.xn--2ib8jn539l; [] # 舛.ٽ𞤴ڻ
-舛.ٽ𞤒ڻ‍; 舛.ٽ𞤴ڻ‍; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; xn--8c1a.xn--2ib8jn539l; [] # 舛.ٽ𞤴ڻ
-xn--8c1a.xn--2ib8jn539l; 舛.ٽ𞤴ڻ; ; xn--8c1a.xn--2ib8jn539l; ; ;  # 舛.ٽ𞤴ڻ
-舛.ٽ𞤴ڻ; ; ; xn--8c1a.xn--2ib8jn539l; ; ;  # 舛.ٽ𞤴ڻ
-舛.ٽ𞤒ڻ; 舛.ٽ𞤴ڻ; ; xn--8c1a.xn--2ib8jn539l; ; ;  # 舛.ٽ𞤴ڻ
-xn--8c1a.xn--2ib8jv19e6413b; 舛.ٽ𞤴ڻ‍; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; ;  # 舛.ٽ𞤴ڻ
-⾇.ٽ𞤒ڻ‍; 舛.ٽ𞤴ڻ‍; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; xn--8c1a.xn--2ib8jn539l; [] # 舛.ٽ𞤴ڻ
-4򭆥。ݧ≯; 4򭆥.ݧ≯; [B1, B3, P1, V6]; xn--4-xn17i.xn--rpb459k; ; ;  # 4.ݧ≯
-4򭆥。ݧ≯; 4򭆥.ݧ≯; [B1, B3, P1, V6]; xn--4-xn17i.xn--rpb459k; ; ;  # 4.ݧ≯
-xn--4-xn17i.xn--rpb459k; 4򭆥.ݧ≯; [B1, B3, V6]; xn--4-xn17i.xn--rpb459k; ; ;  # 4.ݧ≯
-𲔏𞫨񺿂硲．ڭ; 𲔏𞫨񺿂硲.ڭ; [B5, P1, V6]; xn--lcz1610fn78gk609a.xn--gkb; ; ;  # 硲.ڭ
-𲔏𞫨񺿂硲.ڭ; ; [B5, P1, V6]; xn--lcz1610fn78gk609a.xn--gkb; ; ;  # 硲.ڭ
-xn--lcz1610fn78gk609a.xn--gkb; 𲔏𞫨񺿂硲.ڭ; [B5, V6]; xn--lcz1610fn78gk609a.xn--gkb; ; ;  # 硲.ڭ
-‌.︈٦Ⴆ℮; ‌.٦Ⴆ℮; [B1, C1, P1, V6]; xn--0ug.xn--fib263c0yn; ; .xn--fib263c0yn; [B1, P1, V6, A4_2] # .٦Ⴆ℮
-‌.︈٦ⴆ℮; ‌.٦ⴆ℮; [B1, C1]; xn--0ug.xn--fib628k4li; ; .xn--fib628k4li; [B1, A4_2] # .٦ⴆ℮
-.xn--fib628k4li; .٦ⴆ℮; [B1, X4_2]; .xn--fib628k4li; [B1, A4_2]; ;  # .٦ⴆ℮
-xn--0ug.xn--fib628k4li; ‌.٦ⴆ℮; [B1, C1]; xn--0ug.xn--fib628k4li; ; ;  # .٦ⴆ℮
-.xn--fib263c0yn; .٦Ⴆ℮; [B1, V6, X4_2]; .xn--fib263c0yn; [B1, V6, A4_2]; ;  # .٦Ⴆ℮
-xn--0ug.xn--fib263c0yn; ‌.٦Ⴆ℮; [B1, C1, V6]; xn--0ug.xn--fib263c0yn; ; ;  # .٦Ⴆ℮
-ڣ．്‍Ϟ; ڣ.്‍ϟ; [B1, V5]; xn--5jb.xn--xya149bpvp; ; xn--5jb.xn--xya149b;  # ڣ.്ϟ
-ڣ.്‍Ϟ; ڣ.്‍ϟ; [B1, V5]; xn--5jb.xn--xya149bpvp; ; xn--5jb.xn--xya149b;  # ڣ.്ϟ
-ڣ.്‍ϟ; ; [B1, V5]; xn--5jb.xn--xya149bpvp; ; xn--5jb.xn--xya149b;  # ڣ.്ϟ
-xn--5jb.xn--xya149b; ڣ.്ϟ; [B1, V5]; xn--5jb.xn--xya149b; ; ;  # ڣ.്ϟ
-xn--5jb.xn--xya149bpvp; ڣ.്‍ϟ; [B1, V5]; xn--5jb.xn--xya149bpvp; ; ;  # ڣ.്ϟ
-ڣ．്‍ϟ; ڣ.്‍ϟ; [B1, V5]; xn--5jb.xn--xya149bpvp; ; xn--5jb.xn--xya149b;  # ڣ.്ϟ
-‌𞸇𑘿。أ𐮂-腍; ‌ح𑘿.أ𐮂-腍; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; xn--sgb4140l.xn----qmc5075grs9e; [B2, B3] # ح𑘿.أ𐮂-腍
-‌𞸇𑘿。أ𐮂-腍; ‌ح𑘿.أ𐮂-腍; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; xn--sgb4140l.xn----qmc5075grs9e; [B2, B3] # ح𑘿.أ𐮂-腍
-‌ح𑘿。أ𐮂-腍; ‌ح𑘿.أ𐮂-腍; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; xn--sgb4140l.xn----qmc5075grs9e; [B2, B3] # ح𑘿.أ𐮂-腍
-‌ح𑘿。أ𐮂-腍; ‌ح𑘿.أ𐮂-腍; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; xn--sgb4140l.xn----qmc5075grs9e; [B2, B3] # ح𑘿.أ𐮂-腍
-xn--sgb4140l.xn----qmc5075grs9e; ح𑘿.أ𐮂-腍; [B2, B3]; xn--sgb4140l.xn----qmc5075grs9e; ; ;  # ح𑘿.أ𐮂-腍
-xn--sgb953kmi8o.xn----qmc5075grs9e; ‌ح𑘿.أ𐮂-腍; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; ;  # ح𑘿.أ𐮂-腍
--򭷙٫纛｡𝟛񭤇🄅; -򭷙٫纛.3񭤇🄅; [B1, P1, V3, V6]; xn----vqc8143g0tt4i.xn--3-os1sn476y; ; ;  # -٫纛.3🄅
--򭷙٫纛。3񭤇4,; -򭷙٫纛.3񭤇4,; [B1, P1, V3, V6]; xn----vqc8143g0tt4i.xn--34,-8787l; ; ;  # -٫纛.34,
-xn----vqc8143g0tt4i.xn--34,-8787l; -򭷙٫纛.3񭤇4,; [B1, P1, V3, V6]; xn----vqc8143g0tt4i.xn--34,-8787l; ; ;  # -٫纛.34,
-xn----vqc8143g0tt4i.xn--3-os1sn476y; -򭷙٫纛.3񭤇🄅; [B1, V3, V6]; xn----vqc8143g0tt4i.xn--3-os1sn476y; ; ;  # -٫纛.3🄅
-🔔．Ⴂߌ்𐋮; 🔔.Ⴂߌ்𐋮; [B1, B5, P1, V6]; xn--nv8h.xn--nsb46r83e8112a; ; ;  # 🔔.Ⴂߌ்𐋮
-🔔.Ⴂߌ்𐋮; ; [B1, B5, P1, V6]; xn--nv8h.xn--nsb46r83e8112a; ; ;  # 🔔.Ⴂߌ்𐋮
-🔔.ⴂߌ்𐋮; ; [B1, B5]; xn--nv8h.xn--nsb46rvz1b222p; ; ;  # 🔔.ⴂߌ்𐋮
-xn--nv8h.xn--nsb46rvz1b222p; 🔔.ⴂߌ்𐋮; [B1, B5]; xn--nv8h.xn--nsb46rvz1b222p; ; ;  # 🔔.ⴂߌ்𐋮
-xn--nv8h.xn--nsb46r83e8112a; 🔔.Ⴂߌ்𐋮; [B1, B5, V6]; xn--nv8h.xn--nsb46r83e8112a; ; ;  # 🔔.Ⴂߌ்𐋮
-🔔．ⴂߌ்𐋮; 🔔.ⴂߌ்𐋮; [B1, B5]; xn--nv8h.xn--nsb46rvz1b222p; ; ;  # 🔔.ⴂߌ்𐋮
-軥ڳ.-𖬵; ; [B1, B5, B6, V3]; xn--mkb5480e.xn----6u5m; ; ;  # 軥ڳ.-𖬵
-xn--mkb5480e.xn----6u5m; 軥ڳ.-𖬵; [B1, B5, B6, V3]; xn--mkb5480e.xn----6u5m; ; ;  # 軥ڳ.-𖬵
-𐹤ߊڶ.𐨂-; ; [B1, V3, V5]; xn--pkb56cn614d.xn----974i; ; ;  # 𐹤ߊڶ.𐨂-
-xn--pkb56cn614d.xn----974i; 𐹤ߊڶ.𐨂-; [B1, V3, V5]; xn--pkb56cn614d.xn----974i; ; ;  # 𐹤ߊڶ.𐨂-
--󠅱0｡៏᷽톇십; -0.៏᷽톇십; [V3, V5]; -0.xn--r4e872ah77nghm; ; ;  # -0.៏᷽톇십
--󠅱0｡៏᷽톇십; -0.៏᷽톇십; [V3, V5]; -0.xn--r4e872ah77nghm; ; ;  # -0.៏᷽톇십
--󠅱0。៏᷽톇십; -0.៏᷽톇십; [V3, V5]; -0.xn--r4e872ah77nghm; ; ;  # -0.៏᷽톇십
--󠅱0。៏᷽톇십; -0.៏᷽톇십; [V3, V5]; -0.xn--r4e872ah77nghm; ; ;  # -0.៏᷽톇십
--0.xn--r4e872ah77nghm; -0.៏᷽톇십; [V3, V5]; -0.xn--r4e872ah77nghm; ; ;  # -0.៏᷽톇십
-ꡰ︒--｡៌靈𐹢񘳮; ꡰ︒--.៌靈𐹢񘳮; [B1, B6, P1, V2, V3, V5, V6]; xn-----bk9hu24z.xn--o4e6836dpxudz0v1c; ; ;  # ꡰ︒--.៌靈𐹢
-ꡰ。--。៌靈𐹢񘳮; ꡰ.--.៌靈𐹢񘳮; [B1, P1, V3, V5, V6]; xn--md9a.--.xn--o4e6836dpxudz0v1c; ; ;  # ꡰ.--.៌靈𐹢
-xn--md9a.--.xn--o4e6836dpxudz0v1c; ꡰ.--.៌靈𐹢񘳮; [B1, V3, V5, V6]; xn--md9a.--.xn--o4e6836dpxudz0v1c; ; ;  # ꡰ.--.៌靈𐹢
-xn-----bk9hu24z.xn--o4e6836dpxudz0v1c; ꡰ︒--.៌靈𐹢񘳮; [B1, B6, V2, V3, V5, V6]; xn-----bk9hu24z.xn--o4e6836dpxudz0v1c; ; ;  # ꡰ︒--.៌靈𐹢
-ᅟႿႵრ｡୍; ᅟႿႵრ.୍; [P1, V5, V6]; xn--tndt4hvw.xn--9ic; ; ;  # ႿႵრ.୍
-ᅟႿႵრ。୍; ᅟႿႵრ.୍; [P1, V5, V6]; xn--tndt4hvw.xn--9ic; ; ;  # ႿႵრ.୍
-ᅟⴟⴕრ。୍; ᅟⴟⴕრ.୍; [P1, V5, V6]; xn--1od7wz74eeb.xn--9ic; ; ;  # ⴟⴕრ.୍
-ᅟႿႵᲠ。୍; ᅟႿႵრ.୍; [P1, V5, V6]; xn--tndt4hvw.xn--9ic; ; ;  # ႿႵრ.୍
-xn--tndt4hvw.xn--9ic; ᅟႿႵრ.୍; [V5, V6]; xn--tndt4hvw.xn--9ic; ; ;  # ႿႵრ.୍
-xn--1od7wz74eeb.xn--9ic; ᅟⴟⴕრ.୍; [V5, V6]; xn--1od7wz74eeb.xn--9ic; ; ;  # ⴟⴕრ.୍
-ᅟⴟⴕრ｡୍; ᅟⴟⴕრ.୍; [P1, V5, V6]; xn--1od7wz74eeb.xn--9ic; ; ;  # ⴟⴕრ.୍
-ᅟႿႵᲠ｡୍; ᅟႿႵრ.୍; [P1, V5, V6]; xn--tndt4hvw.xn--9ic; ; ;  # ႿႵრ.୍
-ᅟႿⴕრ。୍; ᅟႿⴕრ.୍; [P1, V5, V6]; xn--3nd0etsm92g.xn--9ic; ; ;  # Ⴟⴕრ.୍
-xn--3nd0etsm92g.xn--9ic; ᅟႿⴕრ.୍; [V5, V6]; xn--3nd0etsm92g.xn--9ic; ; ;  # Ⴟⴕრ.୍
-ᅟႿⴕრ｡୍; ᅟႿⴕრ.୍; [P1, V5, V6]; xn--3nd0etsm92g.xn--9ic; ; ;  # Ⴟⴕრ.୍
-🄃𐹠.٤󠅇; 🄃𐹠.٤; [B1, P1, V6]; xn--7n0d1189a.xn--dib; ; ;  # 🄃𐹠.٤
-2,𐹠.٤󠅇; 2,𐹠.٤; [B1, P1, V6]; xn--2,-5g3o.xn--dib; ; ;  # 2,𐹠.٤
-xn--2,-5g3o.xn--dib; 2,𐹠.٤; [B1, P1, V6]; xn--2,-5g3o.xn--dib; ; ;  # 2,𐹠.٤
-xn--7n0d1189a.xn--dib; 🄃𐹠.٤; [B1, V6]; xn--7n0d1189a.xn--dib; ; ;  # 🄃𐹠.٤
-򻲼‌ﱛ．ߒࡈ᯳; 򻲼‌ذٰ.ߒࡈ᯳; [B2, B3, B5, B6, C1, P1, V6]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; xn--vgb2kp1223g.xn--tsb0vz43c; [B2, B3, B5, B6, P1, V6] # ذٰ.ߒࡈ᯳
-򻲼‌ذٰ.ߒࡈ᯳; ; [B2, B3, B5, B6, C1, P1, V6]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; xn--vgb2kp1223g.xn--tsb0vz43c; [B2, B3, B5, B6, P1, V6] # ذٰ.ߒࡈ᯳
-xn--vgb2kp1223g.xn--tsb0vz43c; 򻲼ذٰ.ߒࡈ᯳; [B2, B3, B5, B6, V6]; xn--vgb2kp1223g.xn--tsb0vz43c; ; ;  # ذٰ.ߒࡈ᯳
-xn--vgb2kq00fl213y.xn--tsb0vz43c; 򻲼‌ذٰ.ߒࡈ᯳; [B2, B3, B5, B6, C1, V6]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; ;  # ذٰ.ߒࡈ᯳
-‍‍𞵪‌。ᡘ𑲭឵; ‍‍𞵪‌.ᡘ𑲭឵; [B1, C1, C2, P1, V6]; xn--0ugba05538b.xn--03e93aq365d; ; xn--l96h.xn--03e93aq365d; [P1, V6] # .ᡘ𑲭
-xn--l96h.xn--03e93aq365d; 𞵪.ᡘ𑲭឵; [V6]; xn--l96h.xn--03e93aq365d; ; ;  # .ᡘ𑲭
-xn--0ugba05538b.xn--03e93aq365d; ‍‍𞵪‌.ᡘ𑲭឵; [B1, C1, C2, V6]; xn--0ugba05538b.xn--03e93aq365d; ; ;  # .ᡘ𑲭
-𞷻。⚄񗑇𑁿; 𞷻.⚄񗑇𑁿; [B1, P1, V6]; xn--qe7h.xn--c7h2966f7so4a; ; ;  # .⚄𑁿
-xn--qe7h.xn--c7h2966f7so4a; 𞷻.⚄񗑇𑁿; [B1, V6]; xn--qe7h.xn--c7h2966f7so4a; ; ;  # .⚄𑁿
-꣄≠．𞠨٧; ꣄≠.𞠨٧; [B1, P1, V5, V6]; xn--1chy504c.xn--gib1777v; ; ;  # ꣄≠.𞠨٧
-꣄≠．𞠨٧; ꣄≠.𞠨٧; [B1, P1, V5, V6]; xn--1chy504c.xn--gib1777v; ; ;  # ꣄≠.𞠨٧
-꣄≠.𞠨٧; ; [B1, P1, V5, V6]; xn--1chy504c.xn--gib1777v; ; ;  # ꣄≠.𞠨٧
-꣄≠.𞠨٧; ꣄≠.𞠨٧; [B1, P1, V5, V6]; xn--1chy504c.xn--gib1777v; ; ;  # ꣄≠.𞠨٧
-xn--1chy504c.xn--gib1777v; ꣄≠.𞠨٧; [B1, V5, V6]; xn--1chy504c.xn--gib1777v; ; ;  # ꣄≠.𞠨٧
-𝟛꣄𝆪｡꣪-; 3꣄𝆪.꣪-; [V3, V5]; xn--3-sl4eu679e.xn----xn4e; ; ;  # 3꣄𝆪.꣪-
-𝟛꣄𝆪｡꣪-; 3꣄𝆪.꣪-; [V3, V5]; xn--3-sl4eu679e.xn----xn4e; ; ;  # 3꣄𝆪.꣪-
-3꣄𝆪。꣪-; 3꣄𝆪.꣪-; [V3, V5]; xn--3-sl4eu679e.xn----xn4e; ; ;  # 3꣄𝆪.꣪-
-xn--3-sl4eu679e.xn----xn4e; 3꣄𝆪.꣪-; [V3, V5]; xn--3-sl4eu679e.xn----xn4e; ; ;  # 3꣄𝆪.꣪-
-ݟᮢ်Ⴇ.4; ; [B1, B2, B3, P1, V6]; xn--jpb846bmjw88a.4; ; ;  # ݟᮢ်Ⴇ.4
-ݟᮢ်ⴇ.4; ; [B1, B2, B3]; xn--jpb846bjzj7pr.4; ; ;  # ݟᮢ်ⴇ.4
-xn--jpb846bjzj7pr.4; ݟᮢ်ⴇ.4; [B1, B2, B3]; xn--jpb846bjzj7pr.4; ; ;  # ݟᮢ်ⴇ.4
-xn--jpb846bmjw88a.4; ݟᮢ်Ⴇ.4; [B1, B2, B3, V6]; xn--jpb846bmjw88a.4; ; ;  # ݟᮢ်Ⴇ.4
-ᄹ｡໊򠯤󠄞; ᄹ.໊򠯤; [P1, V5, V6]; xn--lrd.xn--s8c05302k; ; ;  # ᄹ.໊
-ᄹ。໊򠯤󠄞; ᄹ.໊򠯤; [P1, V5, V6]; xn--lrd.xn--s8c05302k; ; ;  # ᄹ.໊
-xn--lrd.xn--s8c05302k; ᄹ.໊򠯤; [V5, V6]; xn--lrd.xn--s8c05302k; ; ;  # ᄹ.໊
-Ⴆ򻢩．󠆡︉𞤍; Ⴆ򻢩.𞤯; [P1, V6]; xn--end82983m.xn--ne6h; ; ;  # Ⴆ.𞤯
-Ⴆ򻢩.󠆡︉𞤍; Ⴆ򻢩.𞤯; [P1, V6]; xn--end82983m.xn--ne6h; ; ;  # Ⴆ.𞤯
-ⴆ򻢩.󠆡︉𞤯; ⴆ򻢩.𞤯; [P1, V6]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
-xn--xkjw3965g.xn--ne6h; ⴆ򻢩.𞤯; [V6]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
-xn--end82983m.xn--ne6h; Ⴆ򻢩.𞤯; [V6]; xn--end82983m.xn--ne6h; ; ;  # Ⴆ.𞤯
-ⴆ򻢩．󠆡︉𞤯; ⴆ򻢩.𞤯; [P1, V6]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
-ⴆ򻢩.󠆡︉𞤍; ⴆ򻢩.𞤯; [P1, V6]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
-ⴆ򻢩．󠆡︉𞤍; ⴆ򻢩.𞤯; [P1, V6]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
-ßࠋ︒ٻ．帼F∬‌; ßࠋ︒ٻ.帼f∫∫‌; [B5, B6, C1, P1, V6]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, P1, V6] # ßࠋ︒ٻ.帼f∫∫
-ßࠋ。ٻ.帼F∫∫‌; ßࠋ.ٻ.帼f∫∫‌; [B5, B6, C1]; xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ßࠋ.ٻ.帼f∫∫
-ßࠋ。ٻ.帼f∫∫‌; ßࠋ.ٻ.帼f∫∫‌; [B5, B6, C1]; xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ßࠋ.ٻ.帼f∫∫
-SSࠋ。ٻ.帼F∫∫‌; ssࠋ.ٻ.帼f∫∫‌; [B5, B6, C1]; xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ssࠋ.ٻ.帼f∫∫
-ssࠋ。ٻ.帼f∫∫‌; ssࠋ.ٻ.帼f∫∫‌; [B5, B6, C1]; xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ssࠋ.ٻ.帼f∫∫
-Ssࠋ。ٻ.帼F∫∫‌; ssࠋ.ٻ.帼f∫∫‌; [B5, B6, C1]; xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ssࠋ.ٻ.帼f∫∫
-xn--ss-uze.xn--0ib.xn--f-tcoa9162d; ssࠋ.ٻ.帼f∫∫; [B5, B6]; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; ; ;  # ssࠋ.ٻ.帼f∫∫
-xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ssࠋ.ٻ.帼f∫∫‌; [B5, B6, C1]; xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ; ;  # ssࠋ.ٻ.帼f∫∫
-xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ßࠋ.ٻ.帼f∫∫‌; [B5, B6, C1]; xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ; ;  # ßࠋ.ٻ.帼f∫∫
-ßࠋ︒ٻ．帼f∬‌; ßࠋ︒ٻ.帼f∫∫‌; [B5, B6, C1, P1, V6]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, P1, V6] # ßࠋ︒ٻ.帼f∫∫
-SSࠋ︒ٻ．帼F∬‌; ssࠋ︒ٻ.帼f∫∫‌; [B5, B6, C1, P1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, P1, V6] # ssࠋ︒ٻ.帼f∫∫
-ssࠋ︒ٻ．帼f∬‌; ssࠋ︒ٻ.帼f∫∫‌; [B5, B6, C1, P1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, P1, V6] # ssࠋ︒ٻ.帼f∫∫
-Ssࠋ︒ٻ．帼F∬‌; ssࠋ︒ٻ.帼f∫∫‌; [B5, B6, C1, P1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, P1, V6] # ssࠋ︒ٻ.帼f∫∫
-xn--ss-k0d31nu121d.xn--f-tcoa9162d; ssࠋ︒ٻ.帼f∫∫; [B5, B6, V6]; xn--ss-k0d31nu121d.xn--f-tcoa9162d; ; ;  # ssࠋ︒ٻ.帼f∫∫
-xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ssࠋ︒ٻ.帼f∫∫‌; [B5, B6, C1, V6]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; ;  # ssࠋ︒ٻ.帼f∫∫
-xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ßࠋ︒ٻ.帼f∫∫‌; [B5, B6, C1, V6]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; ;  # ßࠋ︒ٻ.帼f∫∫
-󘪗｡𐹴𞨌‍; 󘪗.𐹴𞨌‍; [B1, C2, P1, V6]; xn--8l83e.xn--1ug4105gsxwf; ; xn--8l83e.xn--so0dw168a; [B1, P1, V6] # .𐹴
-󘪗。𐹴𞨌‍; 󘪗.𐹴𞨌‍; [B1, C2, P1, V6]; xn--8l83e.xn--1ug4105gsxwf; ; xn--8l83e.xn--so0dw168a; [B1, P1, V6] # .𐹴
-xn--8l83e.xn--so0dw168a; 󘪗.𐹴𞨌; [B1, V6]; xn--8l83e.xn--so0dw168a; ; ;  # .𐹴
-xn--8l83e.xn--1ug4105gsxwf; 󘪗.𐹴𞨌‍; [B1, C2, V6]; xn--8l83e.xn--1ug4105gsxwf; ; ;  # .𐹴
-񗛨.򅟢𝟨꣄; 񗛨.򅟢6꣄; [P1, V6]; xn--mi60a.xn--6-sl4es8023c; ; ;  # .6꣄
-񗛨.򅟢6꣄; ; [P1, V6]; xn--mi60a.xn--6-sl4es8023c; ; ;  # .6꣄
-xn--mi60a.xn--6-sl4es8023c; 񗛨.򅟢6꣄; [V6]; xn--mi60a.xn--6-sl4es8023c; ; ;  # .6꣄
-᪲ﶎ。-۹ႱႨ; ᪲مخج.-۹ႱႨ; [B1, P1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc155e9a; ; ;  # ᪲مخج.-۹ႱႨ
-᪲مخج。-۹ႱႨ; ᪲مخج.-۹ႱႨ; [B1, P1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc155e9a; ; ;  # ᪲مخج.-۹ႱႨ
-᪲مخج。-۹ⴑⴈ; ᪲مخج.-۹ⴑⴈ; [B1, V3, V5]; xn--rgbd2e831i.xn----zyc3430a9a; ; ;  # ᪲مخج.-۹ⴑⴈ
-xn--rgbd2e831i.xn----zyc3430a9a; ᪲مخج.-۹ⴑⴈ; [B1, V3, V5]; xn--rgbd2e831i.xn----zyc3430a9a; ; ;  # ᪲مخج.-۹ⴑⴈ
-xn--rgbd2e831i.xn----zyc155e9a; ᪲مخج.-۹ႱႨ; [B1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc155e9a; ; ;  # ᪲مخج.-۹ႱႨ
-᪲ﶎ。-۹ⴑⴈ; ᪲مخج.-۹ⴑⴈ; [B1, V3, V5]; xn--rgbd2e831i.xn----zyc3430a9a; ; ;  # ᪲مخج.-۹ⴑⴈ
-᪲مخج。-۹Ⴑⴈ; ᪲مخج.-۹Ⴑⴈ; [B1, P1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc875efr3a; ; ;  # ᪲مخج.-۹Ⴑⴈ
-xn--rgbd2e831i.xn----zyc875efr3a; ᪲مخج.-۹Ⴑⴈ; [B1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc875efr3a; ; ;  # ᪲مخج.-۹Ⴑⴈ
-᪲ﶎ。-۹Ⴑⴈ; ᪲مخج.-۹Ⴑⴈ; [B1, P1, V3, V5, V6]; xn--rgbd2e831i.xn----zyc875efr3a; ; ;  # ᪲مخج.-۹Ⴑⴈ
-𞤤．-ࢣ︒; 𞤤.-ࢣ︒; [B1, P1, V3, V6]; xn--ce6h.xn----cod7069p; ; ;  # 𞤤.-ࢣ︒
-𞤤.-ࢣ。; 𞤤.-ࢣ.; [B1, V3]; xn--ce6h.xn----cod.; ; ;  # 𞤤.-ࢣ.
-𞤂.-ࢣ。; 𞤤.-ࢣ.; [B1, V3]; xn--ce6h.xn----cod.; ; ;  # 𞤤.-ࢣ.
-xn--ce6h.xn----cod.; 𞤤.-ࢣ.; [B1, V3]; xn--ce6h.xn----cod.; ; ;  # 𞤤.-ࢣ.
-𞤂．-ࢣ︒; 𞤤.-ࢣ︒; [B1, P1, V3, V6]; xn--ce6h.xn----cod7069p; ; ;  # 𞤤.-ࢣ︒
-xn--ce6h.xn----cod7069p; 𞤤.-ࢣ︒; [B1, V3, V6]; xn--ce6h.xn----cod7069p; ; ;  # 𞤤.-ࢣ︒
-‌𐺨.࡙--; ; [B1, C1, P1, V3, V5, V6]; xn--0ug7905g.xn-----h6e; ; xn--9p0d.xn-----h6e; [B1, P1, V3, V5, V6] # 𐺨.࡙--
-xn--9p0d.xn-----h6e; 𐺨.࡙--; [B1, V3, V5, V6]; xn--9p0d.xn-----h6e; ; ;  # 𐺨.࡙--
-xn--0ug7905g.xn-----h6e; ‌𐺨.࡙--; [B1, C1, V3, V5, V6]; xn--0ug7905g.xn-----h6e; ; ;  # 𐺨.࡙--
-𐋸󮘋Ⴢ.Ⴁ; ; [P1, V6]; xn--6nd5215jr2u0h.xn--8md; ; ;  # 𐋸Ⴢ.Ⴁ
-𐋸󮘋ⴢ.ⴁ; ; [P1, V6]; xn--qlj1559dr224h.xn--skj; ; ;  # 𐋸ⴢ.ⴁ
-𐋸󮘋Ⴢ.ⴁ; ; [P1, V6]; xn--6nd5215jr2u0h.xn--skj; ; ;  # 𐋸Ⴢ.ⴁ
-xn--6nd5215jr2u0h.xn--skj; 𐋸󮘋Ⴢ.ⴁ; [V6]; xn--6nd5215jr2u0h.xn--skj; ; ;  # 𐋸Ⴢ.ⴁ
-xn--qlj1559dr224h.xn--skj; 𐋸󮘋ⴢ.ⴁ; [V6]; xn--qlj1559dr224h.xn--skj; ; ;  # 𐋸ⴢ.ⴁ
-xn--6nd5215jr2u0h.xn--8md; 𐋸󮘋Ⴢ.Ⴁ; [V6]; xn--6nd5215jr2u0h.xn--8md; ; ;  # 𐋸Ⴢ.Ⴁ
-񗑿꠆₄򩞆｡𲩧󠒹ς; 񗑿꠆4򩞆.𲩧󠒹ς; [P1, V6]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d;  # ꠆4.ς
-񗑿꠆4򩞆。𲩧󠒹ς; 񗑿꠆4򩞆.𲩧󠒹ς; [P1, V6]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d;  # ꠆4.ς
-񗑿꠆4򩞆。𲩧󠒹Σ; 񗑿꠆4򩞆.𲩧󠒹σ; [P1, V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ;  # ꠆4.σ
-񗑿꠆4򩞆。𲩧󠒹σ; 񗑿꠆4򩞆.𲩧󠒹σ; [P1, V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ;  # ꠆4.σ
-xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; 񗑿꠆4򩞆.𲩧󠒹σ; [V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ;  # ꠆4.σ
-xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; 񗑿꠆4򩞆.𲩧󠒹ς; [V6]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; ;  # ꠆4.ς
-񗑿꠆₄򩞆｡𲩧󠒹Σ; 񗑿꠆4򩞆.𲩧󠒹σ; [P1, V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ;  # ꠆4.σ
-񗑿꠆₄򩞆｡𲩧󠒹σ; 񗑿꠆4򩞆.𲩧󠒹σ; [P1, V6]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ;  # ꠆4.σ
-󠆀ܣ。ᷴݵ; ܣ.ᷴݵ; [B1, V5]; xn--tnb.xn--5pb136i; ; ;  # ܣ.ᷴݵ
-xn--tnb.xn--5pb136i; ܣ.ᷴݵ; [B1, V5]; xn--tnb.xn--5pb136i; ; ;  # ܣ.ᷴݵ
-𐹱ࡂ𝪨｡𬼖Ⴑ‍; 𐹱ࡂ𝪨.𬼖Ⴑ‍; [B1, B6, C2, P1, V6]; xn--0vb1535kdb6e.xn--pnd879eqy33c; ; xn--0vb1535kdb6e.xn--pnd93707a; [B1, P1, V6] # 𐹱ࡂ𝪨.𬼖Ⴑ
-𐹱ࡂ𝪨。𬼖Ⴑ‍; 𐹱ࡂ𝪨.𬼖Ⴑ‍; [B1, B6, C2, P1, V6]; xn--0vb1535kdb6e.xn--pnd879eqy33c; ; xn--0vb1535kdb6e.xn--pnd93707a; [B1, P1, V6] # 𐹱ࡂ𝪨.𬼖Ⴑ
-𐹱ࡂ𝪨。𬼖ⴑ‍; 𐹱ࡂ𝪨.𬼖ⴑ‍; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; xn--0vb1535kdb6e.xn--8kjz186s; [B1] # 𐹱ࡂ𝪨.𬼖ⴑ
-xn--0vb1535kdb6e.xn--8kjz186s; 𐹱ࡂ𝪨.𬼖ⴑ; [B1]; xn--0vb1535kdb6e.xn--8kjz186s; ; ;  # 𐹱ࡂ𝪨.𬼖ⴑ
-xn--0vb1535kdb6e.xn--1ug742c5714c; 𐹱ࡂ𝪨.𬼖ⴑ‍; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; ;  # 𐹱ࡂ𝪨.𬼖ⴑ
-xn--0vb1535kdb6e.xn--pnd93707a; 𐹱ࡂ𝪨.𬼖Ⴑ; [B1, V6]; xn--0vb1535kdb6e.xn--pnd93707a; ; ;  # 𐹱ࡂ𝪨.𬼖Ⴑ
-xn--0vb1535kdb6e.xn--pnd879eqy33c; 𐹱ࡂ𝪨.𬼖Ⴑ‍; [B1, B6, C2, V6]; xn--0vb1535kdb6e.xn--pnd879eqy33c; ; ;  # 𐹱ࡂ𝪨.𬼖Ⴑ
-𐹱ࡂ𝪨｡𬼖ⴑ‍; 𐹱ࡂ𝪨.𬼖ⴑ‍; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; xn--0vb1535kdb6e.xn--8kjz186s; [B1] # 𐹱ࡂ𝪨.𬼖ⴑ
-᜔𐭪󠙘‍｡-𐹴; ᜔𐭪󠙘‍.-𐹴; [B1, C2, P1, V3, V5, V6]; xn--fze807bso0spy14i.xn----c36i; ; xn--fze4126jujt0g.xn----c36i; [B1, P1, V3, V5, V6] # ᜔𐭪.-𐹴
-᜔𐭪󠙘‍。-𐹴; ᜔𐭪󠙘‍.-𐹴; [B1, C2, P1, V3, V5, V6]; xn--fze807bso0spy14i.xn----c36i; ; xn--fze4126jujt0g.xn----c36i; [B1, P1, V3, V5, V6] # ᜔𐭪.-𐹴
-xn--fze4126jujt0g.xn----c36i; ᜔𐭪󠙘.-𐹴; [B1, V3, V5, V6]; xn--fze4126jujt0g.xn----c36i; ; ;  # ᜔𐭪.-𐹴
-xn--fze807bso0spy14i.xn----c36i; ᜔𐭪󠙘‍.-𐹴; [B1, C2, V3, V5, V6]; xn--fze807bso0spy14i.xn----c36i; ; ;  # ᜔𐭪.-𐹴
-𾢬｡ܩ︒쯙𝟧; 𾢬.ܩ︒쯙5; [B2, P1, V6]; xn--t92s.xn--5-p1c0712mm8rb; ; ;  # .ܩ︒쯙5
-𾢬｡ܩ︒쯙𝟧; 𾢬.ܩ︒쯙5; [B2, P1, V6]; xn--t92s.xn--5-p1c0712mm8rb; ; ;  # .ܩ︒쯙5
-𾢬。ܩ。쯙5; 𾢬.ܩ.쯙5; [P1, V6]; xn--t92s.xn--znb.xn--5-y88f; ; ;  # .ܩ.쯙5
-𾢬。ܩ。쯙5; 𾢬.ܩ.쯙5; [P1, V6]; xn--t92s.xn--znb.xn--5-y88f; ; ;  # .ܩ.쯙5
-xn--t92s.xn--znb.xn--5-y88f; 𾢬.ܩ.쯙5; [V6]; xn--t92s.xn--znb.xn--5-y88f; ; ;  # .ܩ.쯙5
-xn--t92s.xn--5-p1c0712mm8rb; 𾢬.ܩ︒쯙5; [B2, V6]; xn--t92s.xn--5-p1c0712mm8rb; ; ;  # .ܩ︒쯙5
-𞤟-。ݢ≮뻐; 𞥁-.ݢ≮뻐; [B2, B3, P1, V3, V6]; xn----1j8r.xn--mpb269krv4i; ; ;  # 𞥁-.ݢ≮뻐
-𞤟-。ݢ≮뻐; 𞥁-.ݢ≮뻐; [B2, B3, P1, V3, V6]; xn----1j8r.xn--mpb269krv4i; ; ;  # 𞥁-.ݢ≮뻐
-𞥁-。ݢ≮뻐; 𞥁-.ݢ≮뻐; [B2, B3, P1, V3, V6]; xn----1j8r.xn--mpb269krv4i; ; ;  # 𞥁-.ݢ≮뻐
-𞥁-。ݢ≮뻐; 𞥁-.ݢ≮뻐; [B2, B3, P1, V3, V6]; xn----1j8r.xn--mpb269krv4i; ; ;  # 𞥁-.ݢ≮뻐
-xn----1j8r.xn--mpb269krv4i; 𞥁-.ݢ≮뻐; [B2, B3, V3, V6]; xn----1j8r.xn--mpb269krv4i; ; ;  # 𞥁-.ݢ≮뻐
-𞥩-򊫠．ࢴ≠; 𞥩-򊫠.ࢴ≠; [B2, B3, P1, V6]; xn----cm8rp3609a.xn--9yb852k; ; ;  # -.ࢴ≠
-𞥩-򊫠．ࢴ≠; 𞥩-򊫠.ࢴ≠; [B2, B3, P1, V6]; xn----cm8rp3609a.xn--9yb852k; ; ;  # -.ࢴ≠
-𞥩-򊫠.ࢴ≠; ; [B2, B3, P1, V6]; xn----cm8rp3609a.xn--9yb852k; ; ;  # -.ࢴ≠
-𞥩-򊫠.ࢴ≠; 𞥩-򊫠.ࢴ≠; [B2, B3, P1, V6]; xn----cm8rp3609a.xn--9yb852k; ; ;  # -.ࢴ≠
-xn----cm8rp3609a.xn--9yb852k; 𞥩-򊫠.ࢴ≠; [B2, B3, V6]; xn----cm8rp3609a.xn--9yb852k; ; ;  # -.ࢴ≠
--񅂏ςႼ．١; -񅂏ςႼ.١; [B1, P1, V3, V6]; xn----ymb080hun11i.xn--9hb; ; xn----0mb770hun11i.xn--9hb;  # -ςႼ.١
--񅂏ςႼ.١; ; [B1, P1, V3, V6]; xn----ymb080hun11i.xn--9hb; ; xn----0mb770hun11i.xn--9hb;  # -ςႼ.١
--񅂏ςⴜ.١; ; [B1, P1, V3, V6]; xn----ymb2782aov12f.xn--9hb; ; xn----0mb9682aov12f.xn--9hb;  # -ςⴜ.١
--񅂏ΣႼ.١; -񅂏σႼ.١; [B1, P1, V3, V6]; xn----0mb770hun11i.xn--9hb; ; ;  # -σႼ.١
--񅂏σⴜ.١; ; [B1, P1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
--񅂏Σⴜ.١; -񅂏σⴜ.١; [B1, P1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
-xn----0mb9682aov12f.xn--9hb; -񅂏σⴜ.١; [B1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
-xn----0mb770hun11i.xn--9hb; -񅂏σႼ.١; [B1, V3, V6]; xn----0mb770hun11i.xn--9hb; ; ;  # -σႼ.١
-xn----ymb2782aov12f.xn--9hb; -񅂏ςⴜ.١; [B1, V3, V6]; xn----ymb2782aov12f.xn--9hb; ; ;  # -ςⴜ.١
-xn----ymb080hun11i.xn--9hb; -񅂏ςႼ.١; [B1, V3, V6]; xn----ymb080hun11i.xn--9hb; ; ;  # -ςႼ.١
--񅂏ςⴜ．١; -񅂏ςⴜ.١; [B1, P1, V3, V6]; xn----ymb2782aov12f.xn--9hb; ; xn----0mb9682aov12f.xn--9hb;  # -ςⴜ.١
--񅂏ΣႼ．١; -񅂏σႼ.١; [B1, P1, V3, V6]; xn----0mb770hun11i.xn--9hb; ; ;  # -σႼ.١
--񅂏σⴜ．١; -񅂏σⴜ.١; [B1, P1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
--񅂏Σⴜ．١; -񅂏σⴜ.١; [B1, P1, V3, V6]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
-៊.‍𝟮𑀿; ៊.‍2𑀿; [C2, V5]; xn--m4e.xn--2-tgnv469h; ; xn--m4e.xn--2-ku7i; [V5] # ៊.2𑀿
-៊.‍2𑀿; ; [C2, V5]; xn--m4e.xn--2-tgnv469h; ; xn--m4e.xn--2-ku7i; [V5] # ៊.2𑀿
-xn--m4e.xn--2-ku7i; ៊.2𑀿; [V5]; xn--m4e.xn--2-ku7i; ; ;  # ៊.2𑀿
-xn--m4e.xn--2-tgnv469h; ៊.‍2𑀿; [C2, V5]; xn--m4e.xn--2-tgnv469h; ; ;  # ៊.2𑀿
-≯𝟖｡᩠𐫓򟇑; ≯8.᩠𐫓򟇑; [B1, P1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ;  # ≯8.᩠𐫓
-≯𝟖｡᩠𐫓򟇑; ≯8.᩠𐫓򟇑; [B1, P1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ;  # ≯8.᩠𐫓
-≯8。᩠𐫓򟇑; ≯8.᩠𐫓򟇑; [B1, P1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ;  # ≯8.᩠𐫓
-≯8。᩠𐫓򟇑; ≯8.᩠𐫓򟇑; [B1, P1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ;  # ≯8.᩠𐫓
-xn--8-ogo.xn--jof5303iv1z5d; ≯8.᩠𐫓򟇑; [B1, V5, V6]; xn--8-ogo.xn--jof5303iv1z5d; ; ;  # ≯8.᩠𐫓
-𑲫Ↄ٤｡‌; 𑲫Ↄ٤.‌; [B1, C1, P1, V5, V6]; xn--dib999kcy1p.xn--0ug; ; xn--dib999kcy1p.; [B1, P1, V5, V6] # 𑲫Ↄ٤.
-𑲫Ↄ٤。‌; 𑲫Ↄ٤.‌; [B1, C1, P1, V5, V6]; xn--dib999kcy1p.xn--0ug; ; xn--dib999kcy1p.; [B1, P1, V5, V6] # 𑲫Ↄ٤.
-𑲫ↄ٤。‌; 𑲫ↄ٤.‌; [B1, C1, V5]; xn--dib100l8x1p.xn--0ug; ; xn--dib100l8x1p.; [B1, V5] # 𑲫ↄ٤.
-xn--dib100l8x1p.; 𑲫ↄ٤.; [B1, V5]; xn--dib100l8x1p.; ; ;  # 𑲫ↄ٤.
-xn--dib100l8x1p.xn--0ug; 𑲫ↄ٤.‌; [B1, C1, V5]; xn--dib100l8x1p.xn--0ug; ; ;  # 𑲫ↄ٤.
-xn--dib999kcy1p.; 𑲫Ↄ٤.; [B1, V5, V6]; xn--dib999kcy1p.; ; ;  # 𑲫Ↄ٤.
-xn--dib999kcy1p.xn--0ug; 𑲫Ↄ٤.‌; [B1, C1, V5, V6]; xn--dib999kcy1p.xn--0ug; ; ;  # 𑲫Ↄ٤.
-𑲫ↄ٤｡‌; 𑲫ↄ٤.‌; [B1, C1, V5]; xn--dib100l8x1p.xn--0ug; ; xn--dib100l8x1p.; [B1, V5] # 𑲫ↄ٤.
-ఀ𝟵‍ﲝ.‍ݐ⒈; ఀ9‍بح.‍ݐ⒈; [B1, C2, P1, V5, V6]; xn--9-1mcp570dl51a.xn--3ob977jmfd; ; xn--9-1mcp570d.xn--3ob470m; [B1, P1, V5, V6] # ఀ9بح.ݐ⒈
-ఀ9‍بح.‍ݐ1.; ; [B1, C2, V5]; xn--9-1mcp570dl51a.xn--1-x3c211q.; ; xn--9-1mcp570d.xn--1-x3c.; [B1, V5] # ఀ9بح.ݐ1.
-xn--9-1mcp570d.xn--1-x3c.; ఀ9بح.ݐ1.; [B1, V5]; xn--9-1mcp570d.xn--1-x3c.; ; ;  # ఀ9بح.ݐ1.
-xn--9-1mcp570dl51a.xn--1-x3c211q.; ఀ9‍بح.‍ݐ1.; [B1, C2, V5]; xn--9-1mcp570dl51a.xn--1-x3c211q.; ; ;  # ఀ9بح.ݐ1.
-xn--9-1mcp570d.xn--3ob470m; ఀ9بح.ݐ⒈; [B1, V5, V6]; xn--9-1mcp570d.xn--3ob470m; ; ;  # ఀ9بح.ݐ⒈
-xn--9-1mcp570dl51a.xn--3ob977jmfd; ఀ9‍بح.‍ݐ⒈; [B1, C2, V5, V6]; xn--9-1mcp570dl51a.xn--3ob977jmfd; ; ;  # ఀ9بح.ݐ⒈
-꫶。嬶ß葽; ꫶.嬶ß葽; [V5]; xn--2v9a.xn--zca7637b14za; ; xn--2v9a.xn--ss-q40dp97m;  # ꫶.嬶ß葽
-꫶。嬶SS葽; ꫶.嬶ss葽; [V5]; xn--2v9a.xn--ss-q40dp97m; ; ;  # ꫶.嬶ss葽
-꫶。嬶ss葽; ꫶.嬶ss葽; [V5]; xn--2v9a.xn--ss-q40dp97m; ; ;  # ꫶.嬶ss葽
-꫶。嬶Ss葽; ꫶.嬶ss葽; [V5]; xn--2v9a.xn--ss-q40dp97m; ; ;  # ꫶.嬶ss葽
-xn--2v9a.xn--ss-q40dp97m; ꫶.嬶ss葽; [V5]; xn--2v9a.xn--ss-q40dp97m; ; ;  # ꫶.嬶ss葽
-xn--2v9a.xn--zca7637b14za; ꫶.嬶ß葽; [V5]; xn--2v9a.xn--zca7637b14za; ; ;  # ꫶.嬶ß葽
-𑚶⒈。񞻡𐹺; 𑚶⒈.񞻡𐹺; [B5, B6, P1, V5, V6]; xn--tshz969f.xn--yo0d5914s; ; ;  # 𑚶⒈.𐹺
-𑚶1.。񞻡𐹺; 𑚶1..񞻡𐹺; [B5, B6, P1, V5, V6, X4_2]; xn--1-3j0j..xn--yo0d5914s; [B5, B6, P1, V5, V6, A4_2]; ;  # 𑚶1..𐹺
-xn--1-3j0j..xn--yo0d5914s; 𑚶1..񞻡𐹺; [B5, B6, V5, V6, X4_2]; xn--1-3j0j..xn--yo0d5914s; [B5, B6, V5, V6, A4_2]; ;  # 𑚶1..𐹺
-xn--tshz969f.xn--yo0d5914s; 𑚶⒈.񞻡𐹺; [B5, B6, V5, V6]; xn--tshz969f.xn--yo0d5914s; ; ;  # 𑚶⒈.𐹺
-𑜤︒≮．񚕽ט𞾩; 𑜤︒≮.񚕽ט𞾩; [B1, B5, B6, P1, V5, V6]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ;  # 𑜤︒≮.ט
-𑜤︒≮．񚕽ט𞾩; 𑜤︒≮.񚕽ט𞾩; [B1, B5, B6, P1, V5, V6]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ;  # 𑜤︒≮.ט
-𑜤。≮.񚕽ט𞾩; 𑜤.≮.񚕽ט𞾩; [B1, B3, B5, B6, P1, V5, V6]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ;  # 𑜤.≮.ט
-𑜤。≮.񚕽ט𞾩; 𑜤.≮.񚕽ט𞾩; [B1, B3, B5, B6, P1, V5, V6]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ;  # 𑜤.≮.ט
-xn--ci2d.xn--gdh.xn--deb0091w5q9u; 𑜤.≮.񚕽ט𞾩; [B1, B3, B5, B6, V5, V6]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ;  # 𑜤.≮.ט
-xn--gdh5267fdzpa.xn--deb0091w5q9u; 𑜤︒≮.񚕽ט𞾩; [B1, B5, B6, V5, V6]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ;  # 𑜤︒≮.ט
-󠆋؃񏦤.⇁ς򏋈򺇥; ؃񏦤.⇁ς򏋈򺇥; [B1, P1, V6]; xn--lfb04106d.xn--3xa174mxv16m8moq; ; xn--lfb04106d.xn--4xa964mxv16m8moq;  # .⇁ς
-󠆋؃񏦤.⇁Σ򏋈򺇥; ؃񏦤.⇁σ򏋈򺇥; [B1, P1, V6]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ;  # .⇁σ
-󠆋؃񏦤.⇁σ򏋈򺇥; ؃񏦤.⇁σ򏋈򺇥; [B1, P1, V6]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ;  # .⇁σ
-xn--lfb04106d.xn--4xa964mxv16m8moq; ؃񏦤.⇁σ򏋈򺇥; [B1, V6]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ;  # .⇁σ
-xn--lfb04106d.xn--3xa174mxv16m8moq; ؃񏦤.⇁ς򏋈򺇥; [B1, V6]; xn--lfb04106d.xn--3xa174mxv16m8moq; ; ;  # .⇁ς
-ς𑐽𵢈𑜫｡𞬩‌𐫄; ς𑐽𵢈𑜫.𞬩‌𐫄; [C1, P1, V6]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # ς𑐽𑜫.𐫄
-ς𑐽𵢈𑜫。𞬩‌𐫄; ς𑐽𵢈𑜫.𞬩‌𐫄; [C1, P1, V6]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # ς𑐽𑜫.𐫄
-Σ𑐽𵢈𑜫。𞬩‌𐫄; σ𑐽𵢈𑜫.𞬩‌𐫄; [C1, P1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # σ𑐽𑜫.𐫄
-σ𑐽𵢈𑜫。𞬩‌𐫄; σ𑐽𵢈𑜫.𞬩‌𐫄; [C1, P1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # σ𑐽𑜫.𐫄
-xn--4xa2260lk3b8z15g.xn--tw9ct349a; σ𑐽𵢈𑜫.𞬩𐫄; [V6]; xn--4xa2260lk3b8z15g.xn--tw9ct349a; ; ;  # σ𑐽𑜫.𐫄
-xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; σ𑐽𵢈𑜫.𞬩‌𐫄; [C1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; ;  # σ𑐽𑜫.𐫄
-xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ς𑐽𵢈𑜫.𞬩‌𐫄; [C1, V6]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; ;  # ς𑐽𑜫.𐫄
-Σ𑐽𵢈𑜫｡𞬩‌𐫄; σ𑐽𵢈𑜫.𞬩‌𐫄; [C1, P1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # σ𑐽𑜫.𐫄
-σ𑐽𵢈𑜫｡𞬩‌𐫄; σ𑐽𵢈𑜫.𞬩‌𐫄; [C1, P1, V6]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [P1, V6] # σ𑐽𑜫.𐫄
--򵏽｡-ﱌݛ; -򵏽.-نحݛ; [B1, P1, V3, V6]; xn----o452j.xn----cnc8e38c; ; ;  # -.-نحݛ
--򵏽。-نحݛ; -򵏽.-نحݛ; [B1, P1, V3, V6]; xn----o452j.xn----cnc8e38c; ; ;  # -.-نحݛ
-xn----o452j.xn----cnc8e38c; -򵏽.-نحݛ; [B1, V3, V6]; xn----o452j.xn----cnc8e38c; ; ;  # -.-نحݛ
-⺢򇺅𝟤｡‍🚷; ⺢򇺅2.‍🚷; [C2, P1, V6]; xn--2-4jtr4282f.xn--1ugz946p; ; xn--2-4jtr4282f.xn--m78h; [P1, V6] # ⺢2.🚷
-⺢򇺅2。‍🚷; ⺢򇺅2.‍🚷; [C2, P1, V6]; xn--2-4jtr4282f.xn--1ugz946p; ; xn--2-4jtr4282f.xn--m78h; [P1, V6] # ⺢2.🚷
-xn--2-4jtr4282f.xn--m78h; ⺢򇺅2.🚷; [V6]; xn--2-4jtr4282f.xn--m78h; ; ;  # ⺢2.🚷
-xn--2-4jtr4282f.xn--1ugz946p; ⺢򇺅2.‍🚷; [C2, V6]; xn--2-4jtr4282f.xn--1ugz946p; ; ;  # ⺢2.🚷
-೸‍ⷾ𐹲｡򤐶; ೸‍ⷾ𐹲.򤐶; [B5, B6, C2, P1, V6]; xn--hvc488g69j402t.xn--3e36c; ; xn--hvc220of37m.xn--3e36c; [B5, B6, P1, V6] # ⷾ𐹲.
-೸‍ⷾ𐹲。򤐶; ೸‍ⷾ𐹲.򤐶; [B5, B6, C2, P1, V6]; xn--hvc488g69j402t.xn--3e36c; ; xn--hvc220of37m.xn--3e36c; [B5, B6, P1, V6] # ⷾ𐹲.
-xn--hvc220of37m.xn--3e36c; ೸ⷾ𐹲.򤐶; [B5, B6, V6]; xn--hvc220of37m.xn--3e36c; ; ;  # ⷾ𐹲.
-xn--hvc488g69j402t.xn--3e36c; ೸‍ⷾ𐹲.򤐶; [B5, B6, C2, V6]; xn--hvc488g69j402t.xn--3e36c; ; ;  # ⷾ𐹲.
-𐹢．Ⴍ₉⁸; 𐹢.Ⴍ98; [B1, P1, V6]; xn--9n0d.xn--98-7ek; ; ;  # 𐹢.Ⴍ98
-𐹢.Ⴍ98; ; [B1, P1, V6]; xn--9n0d.xn--98-7ek; ; ;  # 𐹢.Ⴍ98
+\u200C⒈𤮍.󢓋\u1A60; ; [C1, V7]; xn--0ug88o7471d.xn--jof45148n; ; xn--tshw462r.xn--jof45148n; [V7] # ⒈𤮍.᩠
+\u200C1.𤮍.󢓋\u1A60; ; [C1, V7]; xn--1-rgn.xn--4x6j.xn--jof45148n; ; 1.xn--4x6j.xn--jof45148n; [V7] # 1.𤮍.᩠
+1.xn--4x6j.xn--jof45148n; 1.𤮍.󢓋\u1A60; [V7]; 1.xn--4x6j.xn--jof45148n; ; ;  # 1.𤮍.᩠
+xn--1-rgn.xn--4x6j.xn--jof45148n; \u200C1.𤮍.󢓋\u1A60; [C1, V7]; xn--1-rgn.xn--4x6j.xn--jof45148n; ; ;  # 1.𤮍.᩠
+xn--tshw462r.xn--jof45148n; ⒈𤮍.󢓋\u1A60; [V7]; xn--tshw462r.xn--jof45148n; ; ;  # ⒈𤮍.᩠
+xn--0ug88o7471d.xn--jof45148n; \u200C⒈𤮍.󢓋\u1A60; [C1, V7]; xn--0ug88o7471d.xn--jof45148n; ; ;  # ⒈𤮍.᩠
+⒈\u200C𐫓󠀺。\u1A60񤰵\u200D; ⒈\u200C𐫓󠀺.\u1A60񤰵\u200D; [B1, C1, C2, V6, V7]; xn--0ug78ol75wzcx4i.xn--jof95xex98m; ; xn--tsh4435fk263g.xn--jofz5294e; [B1, V6, V7] # ⒈𐫓.᩠
+1.\u200C𐫓󠀺。\u1A60񤰵\u200D; 1.\u200C𐫓󠀺.\u1A60񤰵\u200D; [B1, C1, C2, V6, V7]; 1.xn--0ug8853gk263g.xn--jof95xex98m; ; 1.xn--8w9c40377c.xn--jofz5294e; [B1, B3, V6, V7] # 1.𐫓.᩠
+1.xn--8w9c40377c.xn--jofz5294e; 1.𐫓󠀺.\u1A60񤰵; [B1, B3, V6, V7]; 1.xn--8w9c40377c.xn--jofz5294e; ; ;  # 1.𐫓.᩠
+1.xn--0ug8853gk263g.xn--jof95xex98m; 1.\u200C𐫓󠀺.\u1A60񤰵\u200D; [B1, C1, C2, V6, V7]; 1.xn--0ug8853gk263g.xn--jof95xex98m; ; ;  # 1.𐫓.᩠
+xn--tsh4435fk263g.xn--jofz5294e; ⒈𐫓󠀺.\u1A60񤰵; [B1, V6, V7]; xn--tsh4435fk263g.xn--jofz5294e; ; ;  # ⒈𐫓.᩠
+xn--0ug78ol75wzcx4i.xn--jof95xex98m; ⒈\u200C𐫓󠀺.\u1A60񤰵\u200D; [B1, C1, C2, V6, V7]; xn--0ug78ol75wzcx4i.xn--jof95xex98m; ; ;  # ⒈𐫓.᩠
+𝅵｡𝟫𞀈䬺⒈; .9𞀈䬺⒈; [V7, X4_2]; .xn--9-ecp936non25a; [V7, A4_2]; ;  # .9𞀈䬺⒈
+𝅵。9𞀈䬺1.; .9𞀈䬺1.; [X4_2]; .xn--91-030c1650n.; [A4_2]; ;  # .9𞀈䬺1.
+.xn--91-030c1650n.; .9𞀈䬺1.; [X4_2]; .xn--91-030c1650n.; [A4_2]; ;  # .9𞀈䬺1.
+.xn--9-ecp936non25a; .9𞀈䬺⒈; [V7, X4_2]; .xn--9-ecp936non25a; [V7, A4_2]; ;  # .9𞀈䬺⒈
+xn--3f1h.xn--91-030c1650n.; 𝅵.9𞀈䬺1.; [V7]; xn--3f1h.xn--91-030c1650n.; [V7, A4_2]; ;  # .9𞀈䬺1.
+xn--3f1h.xn--9-ecp936non25a; 𝅵.9𞀈䬺⒈; [V7]; xn--3f1h.xn--9-ecp936non25a; ; ;  # .9𞀈䬺⒈
+򡼺≯。盚\u0635; 򡼺≯.盚\u0635; [B5, B6, V7]; xn--hdh30181h.xn--0gb7878c; ; ;  # ≯.盚ص
+򡼺>\u0338。盚\u0635; 򡼺≯.盚\u0635; [B5, B6, V7]; xn--hdh30181h.xn--0gb7878c; ; ;  # ≯.盚ص
+xn--hdh30181h.xn--0gb7878c; 򡼺≯.盚\u0635; [B5, B6, V7]; xn--hdh30181h.xn--0gb7878c; ; ;  # ≯.盚ص
+-񿰭\u05B4。-󠁊𐢸≯; -񿰭\u05B4.-󠁊𐢸≯; [B1, V3, V7]; xn----fgc06667m.xn----pgoy615he5y4i; ; ;  # -ִ.-≯
+-񿰭\u05B4。-󠁊𐢸>\u0338; -񿰭\u05B4.-󠁊𐢸≯; [B1, V3, V7]; xn----fgc06667m.xn----pgoy615he5y4i; ; ;  # -ִ.-≯
+xn----fgc06667m.xn----pgoy615he5y4i; -񿰭\u05B4.-󠁊𐢸≯; [B1, V3, V7]; xn----fgc06667m.xn----pgoy615he5y4i; ; ;  # -ִ.-≯
+󿭓\u1B44\u200C\u0A4D．𐭛񳋔; 󿭓\u1B44\u200C\u0A4D.𐭛񳋔; [B2, B3, B6, V7]; xn--ybc997f6rd2n772c.xn--409c6100y; ; xn--ybc997fb5881a.xn--409c6100y; [B2, B3, V7] # ᭄੍.𐭛
+󿭓\u1B44\u200C\u0A4D.𐭛񳋔; ; [B2, B3, B6, V7]; xn--ybc997f6rd2n772c.xn--409c6100y; ; xn--ybc997fb5881a.xn--409c6100y; [B2, B3, V7] # ᭄੍.𐭛
+xn--ybc997fb5881a.xn--409c6100y; 󿭓\u1B44\u0A4D.𐭛񳋔; [B2, B3, V7]; xn--ybc997fb5881a.xn--409c6100y; ; ;  # ᭄੍.𐭛
+xn--ybc997f6rd2n772c.xn--409c6100y; 󿭓\u1B44\u200C\u0A4D.𐭛񳋔; [B2, B3, B6, V7]; xn--ybc997f6rd2n772c.xn--409c6100y; ; ;  # ᭄੍.𐭛
+⾇.\u067D𞤴\u06BB\u200D; 舛.\u067D𞤴\u06BB\u200D; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; xn--8c1a.xn--2ib8jn539l; [] # 舛.ٽ𞤴ڻ
+舛.\u067D𞤴\u06BB\u200D; ; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; xn--8c1a.xn--2ib8jn539l; [] # 舛.ٽ𞤴ڻ
+舛.\u067D𞤒\u06BB\u200D; 舛.\u067D𞤴\u06BB\u200D; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; xn--8c1a.xn--2ib8jn539l; [] # 舛.ٽ𞤴ڻ
+xn--8c1a.xn--2ib8jn539l; 舛.\u067D𞤴\u06BB; ; xn--8c1a.xn--2ib8jn539l; ; ;  # 舛.ٽ𞤴ڻ
+舛.\u067D𞤴\u06BB; ; ; xn--8c1a.xn--2ib8jn539l; ; ;  # 舛.ٽ𞤴ڻ
+舛.\u067D𞤒\u06BB; 舛.\u067D𞤴\u06BB; ; xn--8c1a.xn--2ib8jn539l; ; ;  # 舛.ٽ𞤴ڻ
+xn--8c1a.xn--2ib8jv19e6413b; 舛.\u067D𞤴\u06BB\u200D; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; ;  # 舛.ٽ𞤴ڻ
+⾇.\u067D𞤒\u06BB\u200D; 舛.\u067D𞤴\u06BB\u200D; [B3, C2]; xn--8c1a.xn--2ib8jv19e6413b; ; xn--8c1a.xn--2ib8jn539l; [] # 舛.ٽ𞤴ڻ
+4򭆥。\u0767≯; 4򭆥.\u0767≯; [B1, B3, V7]; xn--4-xn17i.xn--rpb459k; ; ;  # 4.ݧ≯
+4򭆥。\u0767>\u0338; 4򭆥.\u0767≯; [B1, B3, V7]; xn--4-xn17i.xn--rpb459k; ; ;  # 4.ݧ≯
+xn--4-xn17i.xn--rpb459k; 4򭆥.\u0767≯; [B1, B3, V7]; xn--4-xn17i.xn--rpb459k; ; ;  # 4.ݧ≯
+𲔏𞫨񺿂硲．\u06AD; 𲔏𞫨񺿂硲.\u06AD; [B5, V7]; xn--lcz1610fn78gk609a.xn--gkb; ; ;  # 硲.ڭ
+𲔏𞫨񺿂硲.\u06AD; ; [B5, V7]; xn--lcz1610fn78gk609a.xn--gkb; ; ;  # 硲.ڭ
+xn--lcz1610fn78gk609a.xn--gkb; 𲔏𞫨񺿂硲.\u06AD; [B5, V7]; xn--lcz1610fn78gk609a.xn--gkb; ; ;  # 硲.ڭ
+\u200C.\uFE08\u0666Ⴆ℮; \u200C.\u0666ⴆ℮; [B1, C1]; xn--0ug.xn--fib628k4li; ; .xn--fib628k4li; [B1, A4_2] # .٦ⴆ℮
+\u200C.\uFE08\u0666ⴆ℮; \u200C.\u0666ⴆ℮; [B1, C1]; xn--0ug.xn--fib628k4li; ; .xn--fib628k4li; [B1, A4_2] # .٦ⴆ℮
+.xn--fib628k4li; .\u0666ⴆ℮; [B1, X4_2]; .xn--fib628k4li; [B1, A4_2]; ;  # .٦ⴆ℮
+xn--0ug.xn--fib628k4li; \u200C.\u0666ⴆ℮; [B1, C1]; xn--0ug.xn--fib628k4li; ; ;  # .٦ⴆ℮
+.xn--fib263c0yn; .\u0666Ⴆ℮; [B1, V7, X4_2]; .xn--fib263c0yn; [B1, V7, A4_2]; ;  # .٦Ⴆ℮
+xn--0ug.xn--fib263c0yn; \u200C.\u0666Ⴆ℮; [B1, C1, V7]; xn--0ug.xn--fib263c0yn; ; ;  # .٦Ⴆ℮
+\u06A3．\u0D4D\u200DϞ; \u06A3.\u0D4D\u200Dϟ; [B1, V6]; xn--5jb.xn--xya149bpvp; ; xn--5jb.xn--xya149b;  # ڣ.്ϟ
+\u06A3.\u0D4D\u200DϞ; \u06A3.\u0D4D\u200Dϟ; [B1, V6]; xn--5jb.xn--xya149bpvp; ; xn--5jb.xn--xya149b;  # ڣ.്ϟ
+\u06A3.\u0D4D\u200Dϟ; ; [B1, V6]; xn--5jb.xn--xya149bpvp; ; xn--5jb.xn--xya149b;  # ڣ.്ϟ
+xn--5jb.xn--xya149b; \u06A3.\u0D4Dϟ; [B1, V6]; xn--5jb.xn--xya149b; ; ;  # ڣ.്ϟ
+xn--5jb.xn--xya149bpvp; \u06A3.\u0D4D\u200Dϟ; [B1, V6]; xn--5jb.xn--xya149bpvp; ; ;  # ڣ.്ϟ
+\u06A3．\u0D4D\u200Dϟ; \u06A3.\u0D4D\u200Dϟ; [B1, V6]; xn--5jb.xn--xya149bpvp; ; xn--5jb.xn--xya149b;  # ڣ.്ϟ
+\u200C𞸇𑘿。\u0623𐮂-腍; \u200C\u062D𑘿.\u0623𐮂-腍; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; xn--sgb4140l.xn----qmc5075grs9e; [B2, B3] # ح𑘿.أ𐮂-腍
+\u200C𞸇𑘿。\u0627\u0654𐮂-腍; \u200C\u062D𑘿.\u0623𐮂-腍; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; xn--sgb4140l.xn----qmc5075grs9e; [B2, B3] # ح𑘿.أ𐮂-腍
+\u200C\u062D𑘿。\u0623𐮂-腍; \u200C\u062D𑘿.\u0623𐮂-腍; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; xn--sgb4140l.xn----qmc5075grs9e; [B2, B3] # ح𑘿.أ𐮂-腍
+\u200C\u062D𑘿。\u0627\u0654𐮂-腍; \u200C\u062D𑘿.\u0623𐮂-腍; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; xn--sgb4140l.xn----qmc5075grs9e; [B2, B3] # ح𑘿.أ𐮂-腍
+xn--sgb4140l.xn----qmc5075grs9e; \u062D𑘿.\u0623𐮂-腍; [B2, B3]; xn--sgb4140l.xn----qmc5075grs9e; ; ;  # ح𑘿.أ𐮂-腍
+xn--sgb953kmi8o.xn----qmc5075grs9e; \u200C\u062D𑘿.\u0623𐮂-腍; [B1, B2, B3, C1]; xn--sgb953kmi8o.xn----qmc5075grs9e; ; ;  # ح𑘿.أ𐮂-腍
+-򭷙\u066B纛｡𝟛񭤇🄅; -򭷙\u066B纛.3񭤇4,; [B1, V3, V7, U1]; xn----vqc8143g0tt4i.xn--34,-8787l; ; ;  # -٫纛.34,
+-򭷙\u066B纛。3񭤇4,; -򭷙\u066B纛.3񭤇4,; [B1, V3, V7, U1]; xn----vqc8143g0tt4i.xn--34,-8787l; ; ;  # -٫纛.34,
+xn----vqc8143g0tt4i.xn--34,-8787l; -򭷙\u066B纛.3񭤇4,; [B1, V3, V7, U1]; xn----vqc8143g0tt4i.xn--34,-8787l; ; ;  # -٫纛.34,
+xn----vqc8143g0tt4i.xn--3-os1sn476y; -򭷙\u066B纛.3񭤇🄅; [B1, V3, V7]; xn----vqc8143g0tt4i.xn--3-os1sn476y; ; ;  # -٫纛.3🄅
+🔔．Ⴂ\u07CC\u0BCD𐋮; 🔔.ⴂ\u07CC\u0BCD𐋮; [B1, B5]; xn--nv8h.xn--nsb46rvz1b222p; ; ;  # 🔔.ⴂߌ்𐋮
+🔔.Ⴂ\u07CC\u0BCD𐋮; 🔔.ⴂ\u07CC\u0BCD𐋮; [B1, B5]; xn--nv8h.xn--nsb46rvz1b222p; ; ;  # 🔔.ⴂߌ்𐋮
+🔔.ⴂ\u07CC\u0BCD𐋮; ; [B1, B5]; xn--nv8h.xn--nsb46rvz1b222p; ; ;  # 🔔.ⴂߌ்𐋮
+xn--nv8h.xn--nsb46rvz1b222p; 🔔.ⴂ\u07CC\u0BCD𐋮; [B1, B5]; xn--nv8h.xn--nsb46rvz1b222p; ; ;  # 🔔.ⴂߌ்𐋮
+🔔．ⴂ\u07CC\u0BCD𐋮; 🔔.ⴂ\u07CC\u0BCD𐋮; [B1, B5]; xn--nv8h.xn--nsb46rvz1b222p; ; ;  # 🔔.ⴂߌ்𐋮
+xn--nv8h.xn--nsb46r83e8112a; 🔔.Ⴂ\u07CC\u0BCD𐋮; [B1, B5, V7]; xn--nv8h.xn--nsb46r83e8112a; ; ;  # 🔔.Ⴂߌ்𐋮
+軥\u06B3.-𖬵; ; [B1, B5, B6, V3]; xn--mkb5480e.xn----6u5m; ; ;  # 軥ڳ.-𖬵
+xn--mkb5480e.xn----6u5m; 軥\u06B3.-𖬵; [B1, B5, B6, V3]; xn--mkb5480e.xn----6u5m; ; ;  # 軥ڳ.-𖬵
+𐹤\u07CA\u06B6.𐨂-; ; [B1, V3, V6]; xn--pkb56cn614d.xn----974i; ; ;  # 𐹤ߊڶ.𐨂-
+xn--pkb56cn614d.xn----974i; 𐹤\u07CA\u06B6.𐨂-; [B1, V3, V6]; xn--pkb56cn614d.xn----974i; ; ;  # 𐹤ߊڶ.𐨂-
+-󠅱0｡\u17CF\u1DFD톇십; -0.\u17CF\u1DFD톇십; [V3, V6]; -0.xn--r4e872ah77nghm; ; ;  # -0.៏᷽톇십
+-󠅱0｡\u17CF\u1DFD톇십; -0.\u17CF\u1DFD톇십; [V3, V6]; -0.xn--r4e872ah77nghm; ; ;  # -0.៏᷽톇십
+-󠅱0。\u17CF\u1DFD톇십; -0.\u17CF\u1DFD톇십; [V3, V6]; -0.xn--r4e872ah77nghm; ; ;  # -0.៏᷽톇십
+-󠅱0。\u17CF\u1DFD톇십; -0.\u17CF\u1DFD톇십; [V3, V6]; -0.xn--r4e872ah77nghm; ; ;  # -0.៏᷽톇십
+-0.xn--r4e872ah77nghm; -0.\u17CF\u1DFD톇십; [V3, V6]; -0.xn--r4e872ah77nghm; ; ;  # -0.៏᷽톇십
+ꡰ︒--｡\u17CC靈𐹢񘳮; ꡰ︒--.\u17CC靈𐹢񘳮; [B1, B6, V2, V3, V6, V7]; xn-----bk9hu24z.xn--o4e6836dpxudz0v1c; ; ;  # ꡰ︒--.៌靈𐹢
+ꡰ。--。\u17CC靈𐹢񘳮; ꡰ.--.\u17CC靈𐹢񘳮; [B1, V3, V6, V7]; xn--md9a.--.xn--o4e6836dpxudz0v1c; ; ;  # ꡰ.--.៌靈𐹢
+xn--md9a.--.xn--o4e6836dpxudz0v1c; ꡰ.--.\u17CC靈𐹢񘳮; [B1, V3, V6, V7]; xn--md9a.--.xn--o4e6836dpxudz0v1c; ; ;  # ꡰ.--.៌靈𐹢
+xn-----bk9hu24z.xn--o4e6836dpxudz0v1c; ꡰ︒--.\u17CC靈𐹢񘳮; [B1, B6, V2, V3, V6, V7]; xn-----bk9hu24z.xn--o4e6836dpxudz0v1c; ; ;  # ꡰ︒--.៌靈𐹢
+\u115FႿႵრ｡\u0B4D; ⴟⴕრ.\u0B4D; [V6]; xn--1od555l3a.xn--9ic; ; ;  # ⴟⴕრ.୍
+\u115FႿႵრ。\u0B4D; ⴟⴕრ.\u0B4D; [V6]; xn--1od555l3a.xn--9ic; ; ;  # ⴟⴕრ.୍
+\u115Fⴟⴕრ。\u0B4D; ⴟⴕრ.\u0B4D; [V6]; xn--1od555l3a.xn--9ic; ; ;  # ⴟⴕრ.୍
+\u115FႿႵᲠ。\u0B4D; ⴟⴕრ.\u0B4D; [V6]; xn--1od555l3a.xn--9ic; ; ;  # ⴟⴕრ.୍
+xn--1od555l3a.xn--9ic; ⴟⴕრ.\u0B4D; [V6]; xn--1od555l3a.xn--9ic; ; ;  # ⴟⴕრ.୍
+\u115Fⴟⴕრ｡\u0B4D; ⴟⴕრ.\u0B4D; [V6]; xn--1od555l3a.xn--9ic; ; ;  # ⴟⴕრ.୍
+\u115FႿႵᲠ｡\u0B4D; ⴟⴕრ.\u0B4D; [V6]; xn--1od555l3a.xn--9ic; ; ;  # ⴟⴕრ.୍
+xn--tndt4hvw.xn--9ic; \u115FႿႵრ.\u0B4D; [V6, V7]; xn--tndt4hvw.xn--9ic; ; ;  # ႿႵრ.୍
+xn--1od7wz74eeb.xn--9ic; \u115Fⴟⴕრ.\u0B4D; [V6, V7]; xn--1od7wz74eeb.xn--9ic; ; ;  # ⴟⴕრ.୍
+\u115FႿⴕრ。\u0B4D; ⴟⴕრ.\u0B4D; [V6]; xn--1od555l3a.xn--9ic; ; ;  # ⴟⴕრ.୍
+xn--3nd0etsm92g.xn--9ic; \u115FႿⴕრ.\u0B4D; [V6, V7]; xn--3nd0etsm92g.xn--9ic; ; ;  # Ⴟⴕრ.୍
+\u115FႿⴕრ｡\u0B4D; ⴟⴕრ.\u0B4D; [V6]; xn--1od555l3a.xn--9ic; ; ;  # ⴟⴕრ.୍
+🄃𐹠.\u0664󠅇; 2,𐹠.\u0664; [B1, U1]; xn--2,-5g3o.xn--dib; ; ;  # 2,𐹠.٤
+2,𐹠.\u0664󠅇; 2,𐹠.\u0664; [B1, U1]; xn--2,-5g3o.xn--dib; ; ;  # 2,𐹠.٤
+xn--2,-5g3o.xn--dib; 2,𐹠.\u0664; [B1, U1]; xn--2,-5g3o.xn--dib; ; ;  # 2,𐹠.٤
+xn--7n0d1189a.xn--dib; 🄃𐹠.\u0664; [B1, V7]; xn--7n0d1189a.xn--dib; ; ;  # 🄃𐹠.٤
+򻲼\u200C\uFC5B．\u07D2\u0848\u1BF3; 򻲼\u200C\u0630\u0670.\u07D2\u0848\u1BF3; [B2, B3, B5, B6, C1, V7]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; xn--vgb2kp1223g.xn--tsb0vz43c; [B2, B3, B5, B6, V7] # ذٰ.ߒࡈ᯳
+򻲼\u200C\u0630\u0670.\u07D2\u0848\u1BF3; ; [B2, B3, B5, B6, C1, V7]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; xn--vgb2kp1223g.xn--tsb0vz43c; [B2, B3, B5, B6, V7] # ذٰ.ߒࡈ᯳
+xn--vgb2kp1223g.xn--tsb0vz43c; 򻲼\u0630\u0670.\u07D2\u0848\u1BF3; [B2, B3, B5, B6, V7]; xn--vgb2kp1223g.xn--tsb0vz43c; ; ;  # ذٰ.ߒࡈ᯳
+xn--vgb2kq00fl213y.xn--tsb0vz43c; 򻲼\u200C\u0630\u0670.\u07D2\u0848\u1BF3; [B2, B3, B5, B6, C1, V7]; xn--vgb2kq00fl213y.xn--tsb0vz43c; ; ;  # ذٰ.ߒࡈ᯳
+\u200D\u200D𞵪\u200C。ᡘ𑲭\u17B5; \u200D\u200D𞵪\u200C.ᡘ𑲭; [B1, C1, C2, V7]; xn--0ugba05538b.xn--o8e4044k; ; xn--l96h.xn--o8e4044k; [V7] # .ᡘ𑲭
+xn--l96h.xn--o8e4044k; 𞵪.ᡘ𑲭; [V7]; xn--l96h.xn--o8e4044k; ; ;  # .ᡘ𑲭
+xn--0ugba05538b.xn--o8e4044k; \u200D\u200D𞵪\u200C.ᡘ𑲭; [B1, C1, C2, V7]; xn--0ugba05538b.xn--o8e4044k; ; ;  # .ᡘ𑲭
+xn--l96h.xn--03e93aq365d; 𞵪.ᡘ𑲭\u17B5; [V7]; xn--l96h.xn--03e93aq365d; ; ;  # .ᡘ𑲭
+xn--0ugba05538b.xn--03e93aq365d; \u200D\u200D𞵪\u200C.ᡘ𑲭\u17B5; [B1, C1, C2, V7]; xn--0ugba05538b.xn--03e93aq365d; ; ;  # .ᡘ𑲭
+𞷻。⚄񗑇𑁿; 𞷻.⚄񗑇𑁿; [B1, V7]; xn--qe7h.xn--c7h2966f7so4a; ; ;  # .⚄𑁿
+xn--qe7h.xn--c7h2966f7so4a; 𞷻.⚄񗑇𑁿; [B1, V7]; xn--qe7h.xn--c7h2966f7so4a; ; ;  # .⚄𑁿
+\uA8C4≠．𞠨\u0667; \uA8C4≠.𞠨\u0667; [B1, V6]; xn--1chy504c.xn--gib1777v; ; ;  # ꣄≠.𞠨٧
+\uA8C4=\u0338．𞠨\u0667; \uA8C4≠.𞠨\u0667; [B1, V6]; xn--1chy504c.xn--gib1777v; ; ;  # ꣄≠.𞠨٧
+\uA8C4≠.𞠨\u0667; ; [B1, V6]; xn--1chy504c.xn--gib1777v; ; ;  # ꣄≠.𞠨٧
+\uA8C4=\u0338.𞠨\u0667; \uA8C4≠.𞠨\u0667; [B1, V6]; xn--1chy504c.xn--gib1777v; ; ;  # ꣄≠.𞠨٧
+xn--1chy504c.xn--gib1777v; \uA8C4≠.𞠨\u0667; [B1, V6]; xn--1chy504c.xn--gib1777v; ; ;  # ꣄≠.𞠨٧
+𝟛𝆪\uA8C4｡\uA8EA-; 3\uA8C4𝆪.\uA8EA-; [V3, V6]; xn--3-sl4eu679e.xn----xn4e; ; ;  # 3꣄𝆪.꣪-
+𝟛\uA8C4𝆪｡\uA8EA-; 3\uA8C4𝆪.\uA8EA-; [V3, V6]; xn--3-sl4eu679e.xn----xn4e; ; ;  # 3꣄𝆪.꣪-
+3\uA8C4𝆪。\uA8EA-; 3\uA8C4𝆪.\uA8EA-; [V3, V6]; xn--3-sl4eu679e.xn----xn4e; ; ;  # 3꣄𝆪.꣪-
+xn--3-sl4eu679e.xn----xn4e; 3\uA8C4𝆪.\uA8EA-; [V3, V6]; xn--3-sl4eu679e.xn----xn4e; ; ;  # 3꣄𝆪.꣪-
+\u075F\u1BA2\u103AႧ.e; \u075F\u1BA2\u103Aⴇ.e; [B2, B3]; xn--jpb846bjzj7pr.e; ; ;  # ݟᮢ်ⴇ.e
+\u075F\u1BA2\u103Aⴇ.e; ; [B2, B3]; xn--jpb846bjzj7pr.e; ; ;  # ݟᮢ်ⴇ.e
+\u075F\u1BA2\u103AႧ.E; \u075F\u1BA2\u103Aⴇ.e; [B2, B3]; xn--jpb846bjzj7pr.e; ; ;  # ݟᮢ်ⴇ.e
+xn--jpb846bjzj7pr.e; \u075F\u1BA2\u103Aⴇ.e; [B2, B3]; xn--jpb846bjzj7pr.e; ; ;  # ݟᮢ်ⴇ.e
+xn--jpb846bmjw88a.e; \u075F\u1BA2\u103AႧ.e; [B2, B3, V7]; xn--jpb846bmjw88a.e; ; ;  # ݟᮢ်Ⴇ.e
+ᄹ｡\u0ECA򠯤󠄞; ᄹ.\u0ECA򠯤; [V6, V7]; xn--lrd.xn--s8c05302k; ; ;  # ᄹ.໊
+ᄹ。\u0ECA򠯤󠄞; ᄹ.\u0ECA򠯤; [V6, V7]; xn--lrd.xn--s8c05302k; ; ;  # ᄹ.໊
+xn--lrd.xn--s8c05302k; ᄹ.\u0ECA򠯤; [V6, V7]; xn--lrd.xn--s8c05302k; ; ;  # ᄹ.໊
+Ⴆ򻢩．󠆡\uFE09𞤍; ⴆ򻢩.𞤯; [V7]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
+Ⴆ򻢩.󠆡\uFE09𞤍; ⴆ򻢩.𞤯; [V7]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
+ⴆ򻢩.󠆡\uFE09𞤯; ⴆ򻢩.𞤯; [V7]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
+xn--xkjw3965g.xn--ne6h; ⴆ򻢩.𞤯; [V7]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
+ⴆ򻢩．󠆡\uFE09𞤯; ⴆ򻢩.𞤯; [V7]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
+xn--end82983m.xn--ne6h; Ⴆ򻢩.𞤯; [V7]; xn--end82983m.xn--ne6h; ; ;  # Ⴆ.𞤯
+ⴆ򻢩.󠆡\uFE09𞤍; ⴆ򻢩.𞤯; [V7]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
+ⴆ򻢩．󠆡\uFE09𞤍; ⴆ򻢩.𞤯; [V7]; xn--xkjw3965g.xn--ne6h; ; ;  # ⴆ.𞤯
+ß\u080B︒\u067B．帼F∬\u200C; ß\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V7]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, V7] # ßࠋ︒ٻ.帼f∫∫
+ß\u080B。\u067B.帼F∫∫\u200C; ß\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ßࠋ.ٻ.帼f∫∫
+ß\u080B。\u067B.帼f∫∫\u200C; ß\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ßࠋ.ٻ.帼f∫∫
+SS\u080B。\u067B.帼F∫∫\u200C; ss\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ssࠋ.ٻ.帼f∫∫
+ss\u080B。\u067B.帼f∫∫\u200C; ss\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ssࠋ.ٻ.帼f∫∫
+Ss\u080B。\u067B.帼F∫∫\u200C; ss\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; [B5, B6] # ssࠋ.ٻ.帼f∫∫
+xn--ss-uze.xn--0ib.xn--f-tcoa9162d; ss\u080B.\u067B.帼f∫∫; [B5, B6]; xn--ss-uze.xn--0ib.xn--f-tcoa9162d; ; ;  # ssࠋ.ٻ.帼f∫∫
+xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ss\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--ss-uze.xn--0ib.xn--f-sgn48ga6997e; ; ;  # ssࠋ.ٻ.帼f∫∫
+xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ß\u080B.\u067B.帼f∫∫\u200C; [B5, B6, C1]; xn--zca687a.xn--0ib.xn--f-sgn48ga6997e; ; ;  # ßࠋ.ٻ.帼f∫∫
+ß\u080B︒\u067B．帼f∬\u200C; ß\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V7]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, V7] # ßࠋ︒ٻ.帼f∫∫
+SS\u080B︒\u067B．帼F∬\u200C; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V7]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, V7] # ssࠋ︒ٻ.帼f∫∫
+ss\u080B︒\u067B．帼f∬\u200C; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V7]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, V7] # ssࠋ︒ٻ.帼f∫∫
+Ss\u080B︒\u067B．帼F∬\u200C; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V7]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; xn--ss-k0d31nu121d.xn--f-tcoa9162d; [B5, B6, V7] # ssࠋ︒ٻ.帼f∫∫
+xn--ss-k0d31nu121d.xn--f-tcoa9162d; ss\u080B︒\u067B.帼f∫∫; [B5, B6, V7]; xn--ss-k0d31nu121d.xn--f-tcoa9162d; ; ;  # ssࠋ︒ٻ.帼f∫∫
+xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ss\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V7]; xn--ss-k0d31nu121d.xn--f-sgn48ga6997e; ; ;  # ssࠋ︒ٻ.帼f∫∫
+xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ß\u080B︒\u067B.帼f∫∫\u200C; [B5, B6, C1, V7]; xn--zca68zj8ac956c.xn--f-sgn48ga6997e; ; ;  # ßࠋ︒ٻ.帼f∫∫
+󘪗｡𐹴𞨌\u200D; 󘪗.𐹴𞨌\u200D; [B1, C2, V7]; xn--8l83e.xn--1ug4105gsxwf; ; xn--8l83e.xn--so0dw168a; [B1, V7] # .𐹴
+󘪗。𐹴𞨌\u200D; 󘪗.𐹴𞨌\u200D; [B1, C2, V7]; xn--8l83e.xn--1ug4105gsxwf; ; xn--8l83e.xn--so0dw168a; [B1, V7] # .𐹴
+xn--8l83e.xn--so0dw168a; 󘪗.𐹴𞨌; [B1, V7]; xn--8l83e.xn--so0dw168a; ; ;  # .𐹴
+xn--8l83e.xn--1ug4105gsxwf; 󘪗.𐹴𞨌\u200D; [B1, C2, V7]; xn--8l83e.xn--1ug4105gsxwf; ; ;  # .𐹴
+񗛨.򅟢𝟨\uA8C4; 񗛨.򅟢6\uA8C4; [V7]; xn--mi60a.xn--6-sl4es8023c; ; ;  # .6꣄
+񗛨.򅟢6\uA8C4; ; [V7]; xn--mi60a.xn--6-sl4es8023c; ; ;  # .6꣄
+xn--mi60a.xn--6-sl4es8023c; 񗛨.򅟢6\uA8C4; [V7]; xn--mi60a.xn--6-sl4es8023c; ; ;  # .6꣄
+\u1AB2\uFD8E。-۹ႱႨ; \u1AB2\u0645\u062E\u062C.-۹ⴑⴈ; [B1, V3, V6]; xn--rgbd2e831i.xn----zyc3430a9a; ; ;  # ᪲مخج.-۹ⴑⴈ
+\u1AB2\u0645\u062E\u062C。-۹ႱႨ; \u1AB2\u0645\u062E\u062C.-۹ⴑⴈ; [B1, V3, V6]; xn--rgbd2e831i.xn----zyc3430a9a; ; ;  # ᪲مخج.-۹ⴑⴈ
+\u1AB2\u0645\u062E\u062C。-۹ⴑⴈ; \u1AB2\u0645\u062E\u062C.-۹ⴑⴈ; [B1, V3, V6]; xn--rgbd2e831i.xn----zyc3430a9a; ; ;  # ᪲مخج.-۹ⴑⴈ
+xn--rgbd2e831i.xn----zyc3430a9a; \u1AB2\u0645\u062E\u062C.-۹ⴑⴈ; [B1, V3, V6]; xn--rgbd2e831i.xn----zyc3430a9a; ; ;  # ᪲مخج.-۹ⴑⴈ
+\u1AB2\uFD8E。-۹ⴑⴈ; \u1AB2\u0645\u062E\u062C.-۹ⴑⴈ; [B1, V3, V6]; xn--rgbd2e831i.xn----zyc3430a9a; ; ;  # ᪲مخج.-۹ⴑⴈ
+xn--rgbd2e831i.xn----zyc155e9a; \u1AB2\u0645\u062E\u062C.-۹ႱႨ; [B1, V3, V6, V7]; xn--rgbd2e831i.xn----zyc155e9a; ; ;  # ᪲مخج.-۹ႱႨ
+\u1AB2\u0645\u062E\u062C。-۹Ⴑⴈ; \u1AB2\u0645\u062E\u062C.-۹ⴑⴈ; [B1, V3, V6]; xn--rgbd2e831i.xn----zyc3430a9a; ; ;  # ᪲مخج.-۹ⴑⴈ
+xn--rgbd2e831i.xn----zyc875efr3a; \u1AB2\u0645\u062E\u062C.-۹Ⴑⴈ; [B1, V3, V6, V7]; xn--rgbd2e831i.xn----zyc875efr3a; ; ;  # ᪲مخج.-۹Ⴑⴈ
+\u1AB2\uFD8E。-۹Ⴑⴈ; \u1AB2\u0645\u062E\u062C.-۹ⴑⴈ; [B1, V3, V6]; xn--rgbd2e831i.xn----zyc3430a9a; ; ;  # ᪲مخج.-۹ⴑⴈ
+𞤤．-\u08A3︒; 𞤤.-\u08A3︒; [B1, V3, V7]; xn--ce6h.xn----cod7069p; ; ;  # 𞤤.-ࢣ︒
+𞤤.-\u08A3。; 𞤤.-\u08A3.; [B1, V3]; xn--ce6h.xn----cod.; [B1, V3, A4_2]; ;  # 𞤤.-ࢣ.
+𞤂.-\u08A3。; 𞤤.-\u08A3.; [B1, V3]; xn--ce6h.xn----cod.; [B1, V3, A4_2]; ;  # 𞤤.-ࢣ.
+xn--ce6h.xn----cod.; 𞤤.-\u08A3.; [B1, V3]; xn--ce6h.xn----cod.; [B1, V3, A4_2]; ;  # 𞤤.-ࢣ.
+𞤂．-\u08A3︒; 𞤤.-\u08A3︒; [B1, V3, V7]; xn--ce6h.xn----cod7069p; ; ;  # 𞤤.-ࢣ︒
+xn--ce6h.xn----cod7069p; 𞤤.-\u08A3︒; [B1, V3, V7]; xn--ce6h.xn----cod7069p; ; ;  # 𞤤.-ࢣ︒
+\u200C𐺨.\u0859--; ; [B1, C1, V3, V6]; xn--0ug7905g.xn-----h6e; ; xn--9p0d.xn-----h6e; [B1, V3, V6] # 𐺨.࡙--
+xn--9p0d.xn-----h6e; 𐺨.\u0859--; [B1, V3, V6]; xn--9p0d.xn-----h6e; ; ;  # 𐺨.࡙--
+xn--0ug7905g.xn-----h6e; \u200C𐺨.\u0859--; [B1, C1, V3, V6]; xn--0ug7905g.xn-----h6e; ; ;  # 𐺨.࡙--
+𐋸󮘋Ⴢ.Ⴁ; 𐋸󮘋ⴢ.ⴁ; [V7]; xn--qlj1559dr224h.xn--skj; ; ;  # 𐋸ⴢ.ⴁ
+𐋸󮘋ⴢ.ⴁ; ; [V7]; xn--qlj1559dr224h.xn--skj; ; ;  # 𐋸ⴢ.ⴁ
+𐋸󮘋Ⴢ.ⴁ; 𐋸󮘋ⴢ.ⴁ; [V7]; xn--qlj1559dr224h.xn--skj; ; ;  # 𐋸ⴢ.ⴁ
+xn--qlj1559dr224h.xn--skj; 𐋸󮘋ⴢ.ⴁ; [V7]; xn--qlj1559dr224h.xn--skj; ; ;  # 𐋸ⴢ.ⴁ
+xn--6nd5215jr2u0h.xn--skj; 𐋸󮘋Ⴢ.ⴁ; [V7]; xn--6nd5215jr2u0h.xn--skj; ; ;  # 𐋸Ⴢ.ⴁ
+xn--6nd5215jr2u0h.xn--8md; 𐋸󮘋Ⴢ.Ⴁ; [V7]; xn--6nd5215jr2u0h.xn--8md; ; ;  # 𐋸Ⴢ.Ⴁ
+񗑿\uA806₄򩞆｡𲩧󠒹ς; 񗑿\uA8064򩞆.𲩧󠒹ς; [V7]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d;  # ꠆4.ς
+񗑿\uA8064򩞆。𲩧󠒹ς; 񗑿\uA8064򩞆.𲩧󠒹ς; [V7]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d;  # ꠆4.ς
+񗑿\uA8064򩞆。𲩧󠒹Σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [V7]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ;  # ꠆4.σ
+񗑿\uA8064򩞆。𲩧󠒹σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [V7]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ;  # ꠆4.σ
+xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; 񗑿\uA8064򩞆.𲩧󠒹σ; [V7]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ;  # ꠆4.σ
+xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; 񗑿\uA8064򩞆.𲩧󠒹ς; [V7]; xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d; ; ;  # ꠆4.ς
+񗑿\uA806₄򩞆｡𲩧󠒹Σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [V7]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ;  # ꠆4.σ
+񗑿\uA806₄򩞆｡𲩧󠒹σ; 񗑿\uA8064򩞆.𲩧󠒹σ; [V7]; xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d; ; ;  # ꠆4.σ
+󠆀\u0723。\u1DF4\u0775; \u0723.\u1DF4\u0775; [B1, V6]; xn--tnb.xn--5pb136i; ; ;  # ܣ.ᷴݵ
+xn--tnb.xn--5pb136i; \u0723.\u1DF4\u0775; [B1, V6]; xn--tnb.xn--5pb136i; ; ;  # ܣ.ᷴݵ
+𐹱\u0842𝪨｡𬼖Ⴑ\u200D; 𐹱\u0842𝪨.𬼖ⴑ\u200D; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; xn--0vb1535kdb6e.xn--8kjz186s; [B1] # 𐹱ࡂ𝪨.𬼖ⴑ
+𐹱\u0842𝪨。𬼖Ⴑ\u200D; 𐹱\u0842𝪨.𬼖ⴑ\u200D; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; xn--0vb1535kdb6e.xn--8kjz186s; [B1] # 𐹱ࡂ𝪨.𬼖ⴑ
+𐹱\u0842𝪨。𬼖ⴑ\u200D; 𐹱\u0842𝪨.𬼖ⴑ\u200D; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; xn--0vb1535kdb6e.xn--8kjz186s; [B1] # 𐹱ࡂ𝪨.𬼖ⴑ
+xn--0vb1535kdb6e.xn--8kjz186s; 𐹱\u0842𝪨.𬼖ⴑ; [B1]; xn--0vb1535kdb6e.xn--8kjz186s; ; ;  # 𐹱ࡂ𝪨.𬼖ⴑ
+xn--0vb1535kdb6e.xn--1ug742c5714c; 𐹱\u0842𝪨.𬼖ⴑ\u200D; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; ;  # 𐹱ࡂ𝪨.𬼖ⴑ
+𐹱\u0842𝪨｡𬼖ⴑ\u200D; 𐹱\u0842𝪨.𬼖ⴑ\u200D; [B1, B6, C2]; xn--0vb1535kdb6e.xn--1ug742c5714c; ; xn--0vb1535kdb6e.xn--8kjz186s; [B1] # 𐹱ࡂ𝪨.𬼖ⴑ
+xn--0vb1535kdb6e.xn--pnd93707a; 𐹱\u0842𝪨.𬼖Ⴑ; [B1, V7]; xn--0vb1535kdb6e.xn--pnd93707a; ; ;  # 𐹱ࡂ𝪨.𬼖Ⴑ
+xn--0vb1535kdb6e.xn--pnd879eqy33c; 𐹱\u0842𝪨.𬼖Ⴑ\u200D; [B1, B6, C2, V7]; xn--0vb1535kdb6e.xn--pnd879eqy33c; ; ;  # 𐹱ࡂ𝪨.𬼖Ⴑ
+\u1714𐭪󠙘\u200D｡-𐹴; \u1714𐭪󠙘\u200D.-𐹴; [B1, C2, V3, V6, V7]; xn--fze807bso0spy14i.xn----c36i; ; xn--fze4126jujt0g.xn----c36i; [B1, V3, V6, V7] # ᜔𐭪.-𐹴
+\u1714𐭪󠙘\u200D。-𐹴; \u1714𐭪󠙘\u200D.-𐹴; [B1, C2, V3, V6, V7]; xn--fze807bso0spy14i.xn----c36i; ; xn--fze4126jujt0g.xn----c36i; [B1, V3, V6, V7] # ᜔𐭪.-𐹴
+xn--fze4126jujt0g.xn----c36i; \u1714𐭪󠙘.-𐹴; [B1, V3, V6, V7]; xn--fze4126jujt0g.xn----c36i; ; ;  # ᜔𐭪.-𐹴
+xn--fze807bso0spy14i.xn----c36i; \u1714𐭪󠙘\u200D.-𐹴; [B1, C2, V3, V6, V7]; xn--fze807bso0spy14i.xn----c36i; ; ;  # ᜔𐭪.-𐹴
+𾢬｡\u0729︒쯙𝟧; 𾢬.\u0729︒쯙5; [B2, V7]; xn--t92s.xn--5-p1c0712mm8rb; ; ;  # .ܩ︒쯙5
+𾢬｡\u0729︒쯙𝟧; 𾢬.\u0729︒쯙5; [B2, V7]; xn--t92s.xn--5-p1c0712mm8rb; ; ;  # .ܩ︒쯙5
+𾢬。\u0729。쯙5; 𾢬.\u0729.쯙5; [V7]; xn--t92s.xn--znb.xn--5-y88f; ; ;  # .ܩ.쯙5
+𾢬。\u0729。쯙5; 𾢬.\u0729.쯙5; [V7]; xn--t92s.xn--znb.xn--5-y88f; ; ;  # .ܩ.쯙5
+xn--t92s.xn--znb.xn--5-y88f; 𾢬.\u0729.쯙5; [V7]; xn--t92s.xn--znb.xn--5-y88f; ; ;  # .ܩ.쯙5
+xn--t92s.xn--5-p1c0712mm8rb; 𾢬.\u0729︒쯙5; [B2, V7]; xn--t92s.xn--5-p1c0712mm8rb; ; ;  # .ܩ︒쯙5
+𞤟-。\u0762≮뻐; 𞥁-.\u0762≮뻐; [B2, B3, V3]; xn----1j8r.xn--mpb269krv4i; ; ;  # 𞥁-.ݢ≮뻐
+𞤟-。\u0762<\u0338뻐; 𞥁-.\u0762≮뻐; [B2, B3, V3]; xn----1j8r.xn--mpb269krv4i; ; ;  # 𞥁-.ݢ≮뻐
+𞥁-。\u0762<\u0338뻐; 𞥁-.\u0762≮뻐; [B2, B3, V3]; xn----1j8r.xn--mpb269krv4i; ; ;  # 𞥁-.ݢ≮뻐
+𞥁-。\u0762≮뻐; 𞥁-.\u0762≮뻐; [B2, B3, V3]; xn----1j8r.xn--mpb269krv4i; ; ;  # 𞥁-.ݢ≮뻐
+xn----1j8r.xn--mpb269krv4i; 𞥁-.\u0762≮뻐; [B2, B3, V3]; xn----1j8r.xn--mpb269krv4i; ; ;  # 𞥁-.ݢ≮뻐
+𞥩-򊫠．\u08B4≠; 𞥩-򊫠.\u08B4≠; [B2, B3, V7]; xn----cm8rp3609a.xn--9yb852k; ; ;  # -.ࢴ≠
+𞥩-򊫠．\u08B4=\u0338; 𞥩-򊫠.\u08B4≠; [B2, B3, V7]; xn----cm8rp3609a.xn--9yb852k; ; ;  # -.ࢴ≠
+𞥩-򊫠.\u08B4≠; ; [B2, B3, V7]; xn----cm8rp3609a.xn--9yb852k; ; ;  # -.ࢴ≠
+𞥩-򊫠.\u08B4=\u0338; 𞥩-򊫠.\u08B4≠; [B2, B3, V7]; xn----cm8rp3609a.xn--9yb852k; ; ;  # -.ࢴ≠
+xn----cm8rp3609a.xn--9yb852k; 𞥩-򊫠.\u08B4≠; [B2, B3, V7]; xn----cm8rp3609a.xn--9yb852k; ; ;  # -.ࢴ≠
+-񅂏ςႼ．\u0661; -񅂏ςⴜ.\u0661; [B1, V3, V7]; xn----ymb2782aov12f.xn--9hb; ; xn----0mb9682aov12f.xn--9hb;  # -ςⴜ.١
+-񅂏ςႼ.\u0661; -񅂏ςⴜ.\u0661; [B1, V3, V7]; xn----ymb2782aov12f.xn--9hb; ; xn----0mb9682aov12f.xn--9hb;  # -ςⴜ.١
+-񅂏ςⴜ.\u0661; ; [B1, V3, V7]; xn----ymb2782aov12f.xn--9hb; ; xn----0mb9682aov12f.xn--9hb;  # -ςⴜ.١
+-񅂏ΣႼ.\u0661; -񅂏σⴜ.\u0661; [B1, V3, V7]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
+-񅂏σⴜ.\u0661; ; [B1, V3, V7]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
+-񅂏Σⴜ.\u0661; -񅂏σⴜ.\u0661; [B1, V3, V7]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
+xn----0mb9682aov12f.xn--9hb; -񅂏σⴜ.\u0661; [B1, V3, V7]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
+xn----ymb2782aov12f.xn--9hb; -񅂏ςⴜ.\u0661; [B1, V3, V7]; xn----ymb2782aov12f.xn--9hb; ; ;  # -ςⴜ.١
+-񅂏ςⴜ．\u0661; -񅂏ςⴜ.\u0661; [B1, V3, V7]; xn----ymb2782aov12f.xn--9hb; ; xn----0mb9682aov12f.xn--9hb;  # -ςⴜ.١
+-񅂏ΣႼ．\u0661; -񅂏σⴜ.\u0661; [B1, V3, V7]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
+-񅂏σⴜ．\u0661; -񅂏σⴜ.\u0661; [B1, V3, V7]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
+-񅂏Σⴜ．\u0661; -񅂏σⴜ.\u0661; [B1, V3, V7]; xn----0mb9682aov12f.xn--9hb; ; ;  # -σⴜ.١
+xn----0mb770hun11i.xn--9hb; -񅂏σႼ.\u0661; [B1, V3, V7]; xn----0mb770hun11i.xn--9hb; ; ;  # -σႼ.١
+xn----ymb080hun11i.xn--9hb; -񅂏ςႼ.\u0661; [B1, V3, V7]; xn----ymb080hun11i.xn--9hb; ; ;  # -ςႼ.١
+\u17CA.\u200D𝟮𑀿; \u17CA.\u200D2𑀿; [C2, V6]; xn--m4e.xn--2-tgnv469h; ; xn--m4e.xn--2-ku7i; [V6] # ៊.2𑀿
+\u17CA.\u200D2𑀿; ; [C2, V6]; xn--m4e.xn--2-tgnv469h; ; xn--m4e.xn--2-ku7i; [V6] # ៊.2𑀿
+xn--m4e.xn--2-ku7i; \u17CA.2𑀿; [V6]; xn--m4e.xn--2-ku7i; ; ;  # ៊.2𑀿
+xn--m4e.xn--2-tgnv469h; \u17CA.\u200D2𑀿; [C2, V6]; xn--m4e.xn--2-tgnv469h; ; ;  # ៊.2𑀿
+≯𝟖｡\u1A60𐫓򟇑; ≯8.\u1A60𐫓򟇑; [B1, V6, V7]; xn--8-ogo.xn--jof5303iv1z5d; ; ;  # ≯8.᩠𐫓
+>\u0338𝟖｡\u1A60𐫓򟇑; ≯8.\u1A60𐫓򟇑; [B1, V6, V7]; xn--8-ogo.xn--jof5303iv1z5d; ; ;  # ≯8.᩠𐫓
+≯8。\u1A60𐫓򟇑; ≯8.\u1A60𐫓򟇑; [B1, V6, V7]; xn--8-ogo.xn--jof5303iv1z5d; ; ;  # ≯8.᩠𐫓
+>\u03388。\u1A60𐫓򟇑; ≯8.\u1A60𐫓򟇑; [B1, V6, V7]; xn--8-ogo.xn--jof5303iv1z5d; ; ;  # ≯8.᩠𐫓
+xn--8-ogo.xn--jof5303iv1z5d; ≯8.\u1A60𐫓򟇑; [B1, V6, V7]; xn--8-ogo.xn--jof5303iv1z5d; ; ;  # ≯8.᩠𐫓
+𑲫Ↄ\u0664｡\u200C; 𑲫ↄ\u0664.\u200C; [B1, C1, V6]; xn--dib100l8x1p.xn--0ug; ; xn--dib100l8x1p.; [B1, V6, A4_2] # 𑲫ↄ٤.
+𑲫Ↄ\u0664。\u200C; 𑲫ↄ\u0664.\u200C; [B1, C1, V6]; xn--dib100l8x1p.xn--0ug; ; xn--dib100l8x1p.; [B1, V6, A4_2] # 𑲫ↄ٤.
+𑲫ↄ\u0664。\u200C; 𑲫ↄ\u0664.\u200C; [B1, C1, V6]; xn--dib100l8x1p.xn--0ug; ; xn--dib100l8x1p.; [B1, V6, A4_2] # 𑲫ↄ٤.
+xn--dib100l8x1p.; 𑲫ↄ\u0664.; [B1, V6]; xn--dib100l8x1p.; [B1, V6, A4_2]; ;  # 𑲫ↄ٤.
+xn--dib100l8x1p.xn--0ug; 𑲫ↄ\u0664.\u200C; [B1, C1, V6]; xn--dib100l8x1p.xn--0ug; ; ;  # 𑲫ↄ٤.
+𑲫ↄ\u0664｡\u200C; 𑲫ↄ\u0664.\u200C; [B1, C1, V6]; xn--dib100l8x1p.xn--0ug; ; xn--dib100l8x1p.; [B1, V6, A4_2] # 𑲫ↄ٤.
+xn--dib999kcy1p.; 𑲫Ↄ\u0664.; [B1, V6, V7]; xn--dib999kcy1p.; [B1, V6, V7, A4_2]; ;  # 𑲫Ↄ٤.
+xn--dib999kcy1p.xn--0ug; 𑲫Ↄ\u0664.\u200C; [B1, C1, V6, V7]; xn--dib999kcy1p.xn--0ug; ; ;  # 𑲫Ↄ٤.
+\u0C00𝟵\u200D\uFC9D.\u200D\u0750⒈; \u0C009\u200D\u0628\u062D.\u200D\u0750⒈; [B1, C2, V6, V7]; xn--9-1mcp570dl51a.xn--3ob977jmfd; ; xn--9-1mcp570d.xn--3ob470m; [B1, V6, V7] # ఀ9بح.ݐ⒈
+\u0C009\u200D\u0628\u062D.\u200D\u07501.; ; [B1, C2, V6]; xn--9-1mcp570dl51a.xn--1-x3c211q.; [B1, C2, V6, A4_2]; xn--9-1mcp570d.xn--1-x3c.; [B1, V6, A4_2] # ఀ9بح.ݐ1.
+xn--9-1mcp570d.xn--1-x3c.; \u0C009\u0628\u062D.\u07501.; [B1, V6]; xn--9-1mcp570d.xn--1-x3c.; [B1, V6, A4_2]; ;  # ఀ9بح.ݐ1.
+xn--9-1mcp570dl51a.xn--1-x3c211q.; \u0C009\u200D\u0628\u062D.\u200D\u07501.; [B1, C2, V6]; xn--9-1mcp570dl51a.xn--1-x3c211q.; [B1, C2, V6, A4_2]; ;  # ఀ9بح.ݐ1.
+xn--9-1mcp570d.xn--3ob470m; \u0C009\u0628\u062D.\u0750⒈; [B1, V6, V7]; xn--9-1mcp570d.xn--3ob470m; ; ;  # ఀ9بح.ݐ⒈
+xn--9-1mcp570dl51a.xn--3ob977jmfd; \u0C009\u200D\u0628\u062D.\u200D\u0750⒈; [B1, C2, V6, V7]; xn--9-1mcp570dl51a.xn--3ob977jmfd; ; ;  # ఀ9بح.ݐ⒈
+\uAAF6。嬶ß葽; \uAAF6.嬶ß葽; [V6]; xn--2v9a.xn--zca7637b14za; ; xn--2v9a.xn--ss-q40dp97m;  # ꫶.嬶ß葽
+\uAAF6。嬶SS葽; \uAAF6.嬶ss葽; [V6]; xn--2v9a.xn--ss-q40dp97m; ; ;  # ꫶.嬶ss葽
+\uAAF6。嬶ss葽; \uAAF6.嬶ss葽; [V6]; xn--2v9a.xn--ss-q40dp97m; ; ;  # ꫶.嬶ss葽
+\uAAF6。嬶Ss葽; \uAAF6.嬶ss葽; [V6]; xn--2v9a.xn--ss-q40dp97m; ; ;  # ꫶.嬶ss葽
+xn--2v9a.xn--ss-q40dp97m; \uAAF6.嬶ss葽; [V6]; xn--2v9a.xn--ss-q40dp97m; ; ;  # ꫶.嬶ss葽
+xn--2v9a.xn--zca7637b14za; \uAAF6.嬶ß葽; [V6]; xn--2v9a.xn--zca7637b14za; ; ;  # ꫶.嬶ß葽
+𑚶⒈。񞻡𐹺; 𑚶⒈.񞻡𐹺; [B5, B6, V6, V7]; xn--tshz969f.xn--yo0d5914s; ; ;  # 𑚶⒈.𐹺
+𑚶1.。񞻡𐹺; 𑚶1..񞻡𐹺; [B5, B6, V6, V7, X4_2]; xn--1-3j0j..xn--yo0d5914s; [B5, B6, V6, V7, A4_2]; ;  # 𑚶1..𐹺
+xn--1-3j0j..xn--yo0d5914s; 𑚶1..񞻡𐹺; [B5, B6, V6, V7, X4_2]; xn--1-3j0j..xn--yo0d5914s; [B5, B6, V6, V7, A4_2]; ;  # 𑚶1..𐹺
+xn--tshz969f.xn--yo0d5914s; 𑚶⒈.񞻡𐹺; [B5, B6, V6, V7]; xn--tshz969f.xn--yo0d5914s; ; ;  # 𑚶⒈.𐹺
+𑜤︒≮．񚕽\u05D8𞾩; 𑜤︒≮.񚕽\u05D8𞾩; [B1, B5, B6, V6, V7]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ;  # 𑜤︒≮.ט
+𑜤︒<\u0338．񚕽\u05D8𞾩; 𑜤︒≮.񚕽\u05D8𞾩; [B1, B5, B6, V6, V7]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ;  # 𑜤︒≮.ט
+𑜤。≮.񚕽\u05D8𞾩; 𑜤.≮.񚕽\u05D8𞾩; [B1, B5, B6, V6, V7]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ;  # 𑜤.≮.ט
+𑜤。<\u0338.񚕽\u05D8𞾩; 𑜤.≮.񚕽\u05D8𞾩; [B1, B5, B6, V6, V7]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ;  # 𑜤.≮.ט
+xn--ci2d.xn--gdh.xn--deb0091w5q9u; 𑜤.≮.񚕽\u05D8𞾩; [B1, B5, B6, V6, V7]; xn--ci2d.xn--gdh.xn--deb0091w5q9u; ; ;  # 𑜤.≮.ט
+xn--gdh5267fdzpa.xn--deb0091w5q9u; 𑜤︒≮.񚕽\u05D8𞾩; [B1, B5, B6, V6, V7]; xn--gdh5267fdzpa.xn--deb0091w5q9u; ; ;  # 𑜤︒≮.ט
+󠆋\u0603񏦤.⇁ς򏋈򺇥; \u0603񏦤.⇁ς򏋈򺇥; [B1, V7]; xn--lfb04106d.xn--3xa174mxv16m8moq; ; xn--lfb04106d.xn--4xa964mxv16m8moq;  # .⇁ς
+󠆋\u0603񏦤.⇁Σ򏋈򺇥; \u0603񏦤.⇁σ򏋈򺇥; [B1, V7]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ;  # .⇁σ
+󠆋\u0603񏦤.⇁σ򏋈򺇥; \u0603񏦤.⇁σ򏋈򺇥; [B1, V7]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ;  # .⇁σ
+xn--lfb04106d.xn--4xa964mxv16m8moq; \u0603񏦤.⇁σ򏋈򺇥; [B1, V7]; xn--lfb04106d.xn--4xa964mxv16m8moq; ; ;  # .⇁σ
+xn--lfb04106d.xn--3xa174mxv16m8moq; \u0603񏦤.⇁ς򏋈򺇥; [B1, V7]; xn--lfb04106d.xn--3xa174mxv16m8moq; ; ;  # .⇁ς
+ς𑐽𵢈𑜫｡𞬩\u200C𐫄; ς𑐽𵢈𑜫.𞬩\u200C𐫄; [C1, V7]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V7] # ς𑐽𑜫.𐫄
+ς𑐽𵢈𑜫。𞬩\u200C𐫄; ς𑐽𵢈𑜫.𞬩\u200C𐫄; [C1, V7]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V7] # ς𑐽𑜫.𐫄
+Σ𑐽𵢈𑜫。𞬩\u200C𐫄; σ𑐽𵢈𑜫.𞬩\u200C𐫄; [C1, V7]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V7] # σ𑐽𑜫.𐫄
+σ𑐽𵢈𑜫。𞬩\u200C𐫄; σ𑐽𵢈𑜫.𞬩\u200C𐫄; [C1, V7]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V7] # σ𑐽𑜫.𐫄
+xn--4xa2260lk3b8z15g.xn--tw9ct349a; σ𑐽𵢈𑜫.𞬩𐫄; [V7]; xn--4xa2260lk3b8z15g.xn--tw9ct349a; ; ;  # σ𑐽𑜫.𐫄
+xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; σ𑐽𵢈𑜫.𞬩\u200C𐫄; [C1, V7]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; ;  # σ𑐽𑜫.𐫄
+xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ς𑐽𵢈𑜫.𞬩\u200C𐫄; [C1, V7]; xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf; ; ;  # ς𑐽𑜫.𐫄
+Σ𑐽𵢈𑜫｡𞬩\u200C𐫄; σ𑐽𵢈𑜫.𞬩\u200C𐫄; [C1, V7]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V7] # σ𑐽𑜫.𐫄
+σ𑐽𵢈𑜫｡𞬩\u200C𐫄; σ𑐽𵢈𑜫.𞬩\u200C𐫄; [C1, V7]; xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf; ; xn--4xa2260lk3b8z15g.xn--tw9ct349a; [V7] # σ𑐽𑜫.𐫄
+-򵏽｡-\uFC4C\u075B; -򵏽.-\u0646\u062D\u075B; [B1, V3, V7]; xn----o452j.xn----cnc8e38c; ; ;  # -.-نحݛ
+-򵏽。-\u0646\u062D\u075B; -򵏽.-\u0646\u062D\u075B; [B1, V3, V7]; xn----o452j.xn----cnc8e38c; ; ;  # -.-نحݛ
+xn----o452j.xn----cnc8e38c; -򵏽.-\u0646\u062D\u075B; [B1, V3, V7]; xn----o452j.xn----cnc8e38c; ; ;  # -.-نحݛ
+⺢򇺅𝟤｡\u200D🚷; ⺢򇺅2.\u200D🚷; [C2, V7]; xn--2-4jtr4282f.xn--1ugz946p; ; xn--2-4jtr4282f.xn--m78h; [V7] # ⺢2.🚷
+⺢򇺅2。\u200D🚷; ⺢򇺅2.\u200D🚷; [C2, V7]; xn--2-4jtr4282f.xn--1ugz946p; ; xn--2-4jtr4282f.xn--m78h; [V7] # ⺢2.🚷
+xn--2-4jtr4282f.xn--m78h; ⺢򇺅2.🚷; [V7]; xn--2-4jtr4282f.xn--m78h; ; ;  # ⺢2.🚷
+xn--2-4jtr4282f.xn--1ugz946p; ⺢򇺅2.\u200D🚷; [C2, V7]; xn--2-4jtr4282f.xn--1ugz946p; ; ;  # ⺢2.🚷
+\u0CF8\u200D\u2DFE𐹲｡򤐶; \u0CF8\u200D\u2DFE𐹲.򤐶; [B5, B6, C2, V7]; xn--hvc488g69j402t.xn--3e36c; ; xn--hvc220of37m.xn--3e36c; [B5, B6, V7] # ⷾ𐹲.
+\u0CF8\u200D\u2DFE𐹲。򤐶; \u0CF8\u200D\u2DFE𐹲.򤐶; [B5, B6, C2, V7]; xn--hvc488g69j402t.xn--3e36c; ; xn--hvc220of37m.xn--3e36c; [B5, B6, V7] # ⷾ𐹲.
+xn--hvc220of37m.xn--3e36c; \u0CF8\u2DFE𐹲.򤐶; [B5, B6, V7]; xn--hvc220of37m.xn--3e36c; ; ;  # ⷾ𐹲.
+xn--hvc488g69j402t.xn--3e36c; \u0CF8\u200D\u2DFE𐹲.򤐶; [B5, B6, C2, V7]; xn--hvc488g69j402t.xn--3e36c; ; ;  # ⷾ𐹲.
+𐹢．Ⴍ₉⁸; 𐹢.ⴍ98; [B1]; xn--9n0d.xn--98-u61a; ; ;  # 𐹢.ⴍ98
+𐹢.Ⴍ98; 𐹢.ⴍ98; [B1]; xn--9n0d.xn--98-u61a; ; ;  # 𐹢.ⴍ98
 𐹢.ⴍ98; ; [B1]; xn--9n0d.xn--98-u61a; ; ;  # 𐹢.ⴍ98
 xn--9n0d.xn--98-u61a; 𐹢.ⴍ98; [B1]; xn--9n0d.xn--98-u61a; ; ;  # 𐹢.ⴍ98
-xn--9n0d.xn--98-7ek; 𐹢.Ⴍ98; [B1, V6]; xn--9n0d.xn--98-7ek; ; ;  # 𐹢.Ⴍ98
 𐹢．ⴍ₉⁸; 𐹢.ⴍ98; [B1]; xn--9n0d.xn--98-u61a; ; ;  # 𐹢.ⴍ98
-‌͏｡ß࣢⒚≯; ‌.ß࣢⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--zca612bx9vo5b; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ß⒚≯
-‌͏｡ß࣢⒚≯; ‌.ß࣢⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--zca612bx9vo5b; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ß⒚≯
-‌͏。ß࣢19.≯; ‌.ß࣢19.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--19-fia813f.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ß19.≯
-‌͏。ß࣢19.≯; ‌.ß࣢19.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--19-fia813f.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ß19.≯
-‌͏。SS࣢19.≯; ‌.ss࣢19.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-‌͏。SS࣢19.≯; ‌.ss࣢19.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-‌͏。ss࣢19.≯; ‌.ss࣢19.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-‌͏。ss࣢19.≯; ‌.ss࣢19.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-‌͏。Ss࣢19.≯; ‌.ss࣢19.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-‌͏。Ss࣢19.≯; ‌.ss࣢19.≯; [B1, B5, C1, P1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, P1, V6, A4_2] # .ss19.≯
-.xn--ss19-w0i.xn--hdh; .ss࣢19.≯; [B1, B5, V6, X4_2]; .xn--ss19-w0i.xn--hdh; [B1, B5, V6, A4_2]; ;  # .ss19.≯
-xn--0ug.xn--ss19-w0i.xn--hdh; ‌.ss࣢19.≯; [B1, B5, C1, V6]; xn--0ug.xn--ss19-w0i.xn--hdh; ; ;  # .ss19.≯
-xn--0ug.xn--19-fia813f.xn--hdh; ‌.ß࣢19.≯; [B1, B5, C1, V6]; xn--0ug.xn--19-fia813f.xn--hdh; ; ;  # .ß19.≯
-‌͏｡SS࣢⒚≯; ‌.ss࣢⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-‌͏｡SS࣢⒚≯; ‌.ss࣢⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-‌͏｡ss࣢⒚≯; ‌.ss࣢⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-‌͏｡ss࣢⒚≯; ‌.ss࣢⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-‌͏｡Ss࣢⒚≯; ‌.ss࣢⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-‌͏｡Ss࣢⒚≯; ‌.ss࣢⒚≯; [B1, B5, B6, C1, P1, V6]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, P1, V6, A4_2] # .ss⒚≯
-.xn--ss-9if872xjjc; .ss࣢⒚≯; [B5, B6, V6, X4_2]; .xn--ss-9if872xjjc; [B5, B6, V6, A4_2]; ;  # .ss⒚≯
-xn--0ug.xn--ss-9if872xjjc; ‌.ss࣢⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--ss-9if872xjjc; ; ;  # .ss⒚≯
-xn--0ug.xn--zca612bx9vo5b; ‌.ß࣢⒚≯; [B1, B5, B6, C1, V6]; xn--0ug.xn--zca612bx9vo5b; ; ;  # .ß⒚≯
-‌𞥍ᡌ．𣃔; ‌𞥍ᡌ.𣃔; [B1, C1, P1, V6]; xn--c8e180bqz13b.xn--od1j; ; xn--c8e5919u.xn--od1j; [B2, B3, P1, V6] # ᡌ.𣃔
-‌𞥍ᡌ.𣃔; ; [B1, C1, P1, V6]; xn--c8e180bqz13b.xn--od1j; ; xn--c8e5919u.xn--od1j; [B2, B3, P1, V6] # ᡌ.𣃔
-xn--c8e5919u.xn--od1j; 𞥍ᡌ.𣃔; [B2, B3, V6]; xn--c8e5919u.xn--od1j; ; ;  # ᡌ.𣃔
-xn--c8e180bqz13b.xn--od1j; ‌𞥍ᡌ.𣃔; [B1, C1, V6]; xn--c8e180bqz13b.xn--od1j; ; ;  # ᡌ.𣃔
-ߐ򜬝-񡢬。ྠႻ𞷏𝆬; ߐ򜬝-񡢬.ྠႻ𞷏𝆬; [B1, B2, B3, P1, V5, V6]; xn----8bd11730jefvw.xn--wfd08cd265hgsxa; ; ;  # ߐ-.ྠႻ𝆬
-ߐ򜬝-񡢬。ྠⴛ𞷏𝆬; ߐ򜬝-񡢬.ྠⴛ𞷏𝆬; [B1, B2, B3, P1, V5, V6]; xn----8bd11730jefvw.xn--wfd802mpm20agsxa; ; ;  # ߐ-.ྠⴛ𝆬
-xn----8bd11730jefvw.xn--wfd802mpm20agsxa; ߐ򜬝-񡢬.ྠⴛ𞷏𝆬; [B1, B2, B3, V5, V6]; xn----8bd11730jefvw.xn--wfd802mpm20agsxa; ; ;  # ߐ-.ྠⴛ𝆬
-xn----8bd11730jefvw.xn--wfd08cd265hgsxa; ߐ򜬝-񡢬.ྠႻ𞷏𝆬; [B1, B2, B3, V5, V6]; xn----8bd11730jefvw.xn--wfd08cd265hgsxa; ; ;  # ߐ-.ྠႻ𝆬
-𝨥。⫟𑈾; 𝨥.⫟𑈾; [V5]; xn--n82h.xn--63iw010f; ; ;  # 𝨥.⫟𑈾
-xn--n82h.xn--63iw010f; 𝨥.⫟𑈾; [V5]; xn--n82h.xn--63iw010f; ; ;  # 𝨥.⫟𑈾
-⾛ݓ.Ⴕ𞠬؄‍; 走ݓ.Ⴕ𞠬؄‍; [B5, B6, C2, P1, V6]; xn--6ob9779d.xn--mfb785czmm0y85b; ; xn--6ob9779d.xn--mfb785ck569a; [B5, B6, P1, V6] # 走ݓ.Ⴕ𞠬
-走ݓ.Ⴕ𞠬؄‍; ; [B5, B6, C2, P1, V6]; xn--6ob9779d.xn--mfb785czmm0y85b; ; xn--6ob9779d.xn--mfb785ck569a; [B5, B6, P1, V6] # 走ݓ.Ⴕ𞠬
-走ݓ.ⴕ𞠬؄‍; ; [B5, B6, C2, P1, V6]; xn--6ob9779d.xn--mfb444k5gjt754b; ; xn--6ob9779d.xn--mfb511rxu80a; [B5, B6, P1, V6] # 走ݓ.ⴕ𞠬
-xn--6ob9779d.xn--mfb511rxu80a; 走ݓ.ⴕ𞠬؄; [B5, B6, V6]; xn--6ob9779d.xn--mfb511rxu80a; ; ;  # 走ݓ.ⴕ𞠬
-xn--6ob9779d.xn--mfb444k5gjt754b; 走ݓ.ⴕ𞠬؄‍; [B5, B6, C2, V6]; xn--6ob9779d.xn--mfb444k5gjt754b; ; ;  # 走ݓ.ⴕ𞠬
-xn--6ob9779d.xn--mfb785ck569a; 走ݓ.Ⴕ𞠬؄; [B5, B6, V6]; xn--6ob9779d.xn--mfb785ck569a; ; ;  # 走ݓ.Ⴕ𞠬
-xn--6ob9779d.xn--mfb785czmm0y85b; 走ݓ.Ⴕ𞠬؄‍; [B5, B6, C2, V6]; xn--6ob9779d.xn--mfb785czmm0y85b; ; ;  # 走ݓ.Ⴕ𞠬
-⾛ݓ.ⴕ𞠬؄‍; 走ݓ.ⴕ𞠬؄‍; [B5, B6, C2, P1, V6]; xn--6ob9779d.xn--mfb444k5gjt754b; ; xn--6ob9779d.xn--mfb511rxu80a; [B5, B6, P1, V6] # 走ݓ.ⴕ𞠬
--ᢗ‌🄄.𑜢; ; [C1, P1, V3, V5, V6]; xn----pck312bx563c.xn--9h2d; ; xn----pck1820x.xn--9h2d; [P1, V3, V5, V6] # -ᢗ🄄.𑜢
--ᢗ‌3,.𑜢; ; [C1, P1, V3, V5, V6]; xn---3,-3eu051c.xn--9h2d; ; xn---3,-3eu.xn--9h2d; [P1, V3, V5, V6] # -ᢗ3,.𑜢
-xn---3,-3eu.xn--9h2d; -ᢗ3,.𑜢; [P1, V3, V5, V6]; xn---3,-3eu.xn--9h2d; ; ;  # -ᢗ3,.𑜢
-xn---3,-3eu051c.xn--9h2d; -ᢗ‌3,.𑜢; [C1, P1, V3, V5, V6]; xn---3,-3eu051c.xn--9h2d; ; ;  # -ᢗ3,.𑜢
-xn----pck1820x.xn--9h2d; -ᢗ🄄.𑜢; [V3, V5, V6]; xn----pck1820x.xn--9h2d; ; ;  # -ᢗ🄄.𑜢
-xn----pck312bx563c.xn--9h2d; -ᢗ‌🄄.𑜢; [C1, V3, V5, V6]; xn----pck312bx563c.xn--9h2d; ; ;  # -ᢗ🄄.𑜢
-≠𐸁𹏁‌.Ⴚ򳄠; ; [B1, C1, P1, V6]; xn--0ug83gn618a21ov.xn--ynd49496l; ; xn--1ch2293gv3nr.xn--ynd49496l; [B1, P1, V6] # ≠.Ⴚ
-≠𐸁𹏁‌.Ⴚ򳄠; ≠𐸁𹏁‌.Ⴚ򳄠; [B1, C1, P1, V6]; xn--0ug83gn618a21ov.xn--ynd49496l; ; xn--1ch2293gv3nr.xn--ynd49496l; [B1, P1, V6] # ≠.Ⴚ
-≠𐸁𹏁‌.ⴚ򳄠; ≠𐸁𹏁‌.ⴚ򳄠; [B1, C1, P1, V6]; xn--0ug83gn618a21ov.xn--ilj23531g; ; xn--1ch2293gv3nr.xn--ilj23531g; [B1, P1, V6] # ≠.ⴚ
-≠𐸁𹏁‌.ⴚ򳄠; ; [B1, C1, P1, V6]; xn--0ug83gn618a21ov.xn--ilj23531g; ; xn--1ch2293gv3nr.xn--ilj23531g; [B1, P1, V6] # ≠.ⴚ
-xn--1ch2293gv3nr.xn--ilj23531g; ≠𐸁𹏁.ⴚ򳄠; [B1, V6]; xn--1ch2293gv3nr.xn--ilj23531g; ; ;  # ≠.ⴚ
-xn--0ug83gn618a21ov.xn--ilj23531g; ≠𐸁𹏁‌.ⴚ򳄠; [B1, C1, V6]; xn--0ug83gn618a21ov.xn--ilj23531g; ; ;  # ≠.ⴚ
-xn--1ch2293gv3nr.xn--ynd49496l; ≠𐸁𹏁.Ⴚ򳄠; [B1, V6]; xn--1ch2293gv3nr.xn--ynd49496l; ; ;  # ≠.Ⴚ
-xn--0ug83gn618a21ov.xn--ynd49496l; ≠𐸁𹏁‌.Ⴚ򳄠; [B1, C1, V6]; xn--0ug83gn618a21ov.xn--ynd49496l; ; ;  # ≠.Ⴚ
-٩｡󠇀𑇊; ٩.𑇊; [B1, B3, B6, V5]; xn--iib.xn--6d1d; ; ;  # ٩.𑇊
-٩。󠇀𑇊; ٩.𑇊; [B1, B3, B6, V5]; xn--iib.xn--6d1d; ; ;  # ٩.𑇊
-xn--iib.xn--6d1d; ٩.𑇊; [B1, B3, B6, V5]; xn--iib.xn--6d1d; ; ;  # ٩.𑇊
-ႆ𞶀≯⒍。-; ႆ𞶀≯⒍.-; [B1, P1, V3, V5, V6]; xn--hmd482gqqb8730g.-; ; ;  # ႆ≯⒍.-
-ႆ𞶀≯⒍。-; ႆ𞶀≯⒍.-; [B1, P1, V3, V5, V6]; xn--hmd482gqqb8730g.-; ; ;  # ႆ≯⒍.-
-ႆ𞶀≯6.。-; ႆ𞶀≯6..-; [B1, P1, V3, V5, V6, X4_2]; xn--6-oyg968k7h74b..-; [B1, P1, V3, V5, V6, A4_2]; ;  # ႆ≯6..-
-ႆ𞶀≯6.。-; ႆ𞶀≯6..-; [B1, P1, V3, V5, V6, X4_2]; xn--6-oyg968k7h74b..-; [B1, P1, V3, V5, V6, A4_2]; ;  # ႆ≯6..-
-xn--6-oyg968k7h74b..-; ႆ𞶀≯6..-; [B1, V3, V5, V6, X4_2]; xn--6-oyg968k7h74b..-; [B1, V3, V5, V6, A4_2]; ;  # ႆ≯6..-
-xn--hmd482gqqb8730g.-; ႆ𞶀≯⒍.-; [B1, V3, V5, V6]; xn--hmd482gqqb8730g.-; ; ;  # ႆ≯⒍.-
-឴.쮇-; ; [P1, V3, V5, V6]; xn--z3e.xn----938f; ; ;  # .쮇-
-឴.쮇-; ឴.쮇-; [P1, V3, V5, V6]; xn--z3e.xn----938f; ; ;  # .쮇-
-xn--z3e.xn----938f; ឴.쮇-; [V3, V5, V6]; xn--z3e.xn----938f; ; ;  # .쮇-
-‌𑓂。⒈-􀪛; ‌𑓂.⒈-􀪛; [C1, P1, V6]; xn--0ugy057g.xn----dcp29674o; ; xn--wz1d.xn----dcp29674o; [P1, V5, V6] # 𑓂.⒈-
-‌𑓂。1.-􀪛; ‌𑓂.1.-􀪛; [C1, P1, V3, V6]; xn--0ugy057g.1.xn----rg03o; ; xn--wz1d.1.xn----rg03o; [P1, V3, V5, V6] # 𑓂.1.-
-xn--wz1d.1.xn----rg03o; 𑓂.1.-􀪛; [V3, V5, V6]; xn--wz1d.1.xn----rg03o; ; ;  # 𑓂.1.-
-xn--0ugy057g.1.xn----rg03o; ‌𑓂.1.-􀪛; [C1, V3, V6]; xn--0ugy057g.1.xn----rg03o; ; ;  # 𑓂.1.-
-xn--wz1d.xn----dcp29674o; 𑓂.⒈-􀪛; [V5, V6]; xn--wz1d.xn----dcp29674o; ; ;  # 𑓂.⒈-
-xn--0ugy057g.xn----dcp29674o; ‌𑓂.⒈-􀪛; [C1, V6]; xn--0ugy057g.xn----dcp29674o; ; ;  # 𑓂.⒈-
-⒈ﺮ‌。⃩🖞‌𖬴; ⒈ر‌.⃩🖞‌𖬴; [B1, C1, P1, V5, V6]; xn--wgb253kmfd.xn--0ugz6a8040fty5d; ; xn--wgb746m.xn--c1g6021kg18c; [B1, P1, V5, V6] # ⒈ر.⃩🖞𖬴
-1.ر‌。⃩🖞‌𖬴; 1.ر‌.⃩🖞‌𖬴; [B1, B3, C1, V5]; 1.xn--wgb253k.xn--0ugz6a8040fty5d; ; 1.xn--wgb.xn--c1g6021kg18c; [B1, V5] # 1.ر.⃩🖞𖬴
-1.xn--wgb.xn--c1g6021kg18c; 1.ر.⃩🖞𖬴; [B1, V5]; 1.xn--wgb.xn--c1g6021kg18c; ; ;  # 1.ر.⃩🖞𖬴
-1.xn--wgb253k.xn--0ugz6a8040fty5d; 1.ر‌.⃩🖞‌𖬴; [B1, B3, C1, V5]; 1.xn--wgb253k.xn--0ugz6a8040fty5d; ; ;  # 1.ر.⃩🖞𖬴
-xn--wgb746m.xn--c1g6021kg18c; ⒈ر.⃩🖞𖬴; [B1, V5, V6]; xn--wgb746m.xn--c1g6021kg18c; ; ;  # ⒈ر.⃩🖞𖬴
-xn--wgb253kmfd.xn--0ugz6a8040fty5d; ⒈ر‌.⃩🖞‌𖬴; [B1, C1, V5, V6]; xn--wgb253kmfd.xn--0ugz6a8040fty5d; ; ;  # ⒈ر.⃩🖞𖬴
-󌭇｡𝟐ᮨߔ; 󌭇.2ᮨߔ; [B1, P1, V6]; xn--xm89d.xn--2-icd143m; ; ;  # .2ᮨߔ
-󌭇。2ᮨߔ; 󌭇.2ᮨߔ; [B1, P1, V6]; xn--xm89d.xn--2-icd143m; ; ;  # .2ᮨߔ
-xn--xm89d.xn--2-icd143m; 󌭇.2ᮨߔ; [B1, V6]; xn--xm89d.xn--2-icd143m; ; ;  # .2ᮨߔ
-ﶏ򫳺.ς‍𐹷; مخم򫳺.ς‍𐹷; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.ς𐹷
-مخم򫳺.ς‍𐹷; ; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.ς𐹷
-مخم򫳺.Σ‍𐹷; مخم򫳺.σ‍𐹷; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.σ𐹷
-مخم򫳺.σ‍𐹷; ; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.σ𐹷
-xn--tgb9bb64691z.xn--4xa6667k; مخم򫳺.σ𐹷; [B2, B3, B5, B6, V6]; xn--tgb9bb64691z.xn--4xa6667k; ; ;  # مخم.σ𐹷
-xn--tgb9bb64691z.xn--4xa895lrp7n; مخم򫳺.σ‍𐹷; [B2, B3, B5, B6, C2, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; ;  # مخم.σ𐹷
-xn--tgb9bb64691z.xn--3xa006lrp7n; مخم򫳺.ς‍𐹷; [B2, B3, B5, B6, C2, V6]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; ;  # مخم.ς𐹷
-ﶏ򫳺.Σ‍𐹷; مخم򫳺.σ‍𐹷; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.σ𐹷
-ﶏ򫳺.σ‍𐹷; مخم򫳺.σ‍𐹷; [B2, B3, B5, B6, C2, P1, V6]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, P1, V6] # مخم.σ𐹷
-⒎ہ؅｡꫶۵𐇽; ⒎ہ؅.꫶۵𐇽; [B1, P1, V5, V6]; xn--nfb98ai25e.xn--imb3805fxt8b; ; ;  # ⒎ہ.꫶۵𐇽
-7.ہ؅。꫶۵𐇽; 7.ہ؅.꫶۵𐇽; [B1, P1, V5, V6]; 7.xn--nfb98a.xn--imb3805fxt8b; ; ;  # 7.ہ.꫶۵𐇽
-7.xn--nfb98a.xn--imb3805fxt8b; 7.ہ؅.꫶۵𐇽; [B1, V5, V6]; 7.xn--nfb98a.xn--imb3805fxt8b; ; ;  # 7.ہ.꫶۵𐇽
-xn--nfb98ai25e.xn--imb3805fxt8b; ⒎ہ؅.꫶۵𐇽; [B1, V5, V6]; xn--nfb98ai25e.xn--imb3805fxt8b; ; ;  # ⒎ہ.꫶۵𐇽
--ᡥ᠆󍲭。؅ᩝ𐹡; -ᡥ᠆󍲭.؅ᩝ𐹡; [B1, P1, V3, V6]; xn----f3j6s87156i.xn--nfb035hoo2p; ; ;  # -ᡥ᠆.ᩝ𐹡
-xn----f3j6s87156i.xn--nfb035hoo2p; -ᡥ᠆󍲭.؅ᩝ𐹡; [B1, V3, V6]; xn----f3j6s87156i.xn--nfb035hoo2p; ; ;  # -ᡥ᠆.ᩝ𐹡
-‍.ڽ٣֖; ; [B1, C2]; xn--1ug.xn--hcb32bni; ; .xn--hcb32bni; [A4_2] # .ڽ٣֖
-.xn--hcb32bni; .ڽ٣֖; [X4_2]; .xn--hcb32bni; [A4_2]; ;  # .ڽ٣֖
-xn--1ug.xn--hcb32bni; ‍.ڽ٣֖; [B1, C2]; xn--1ug.xn--hcb32bni; ; ;  # .ڽ٣֖
-xn--hcb32bni; ڽ٣֖; ; xn--hcb32bni; ; ;  # ڽ٣֖
-ڽ٣֖; ; ; xn--hcb32bni; ; ;  # ڽ٣֖
-㒧۱.Ⴚٸ‍; 㒧۱.Ⴚيٴ‍; [B5, B6, C2, P1, V6]; xn--emb715u.xn--mhb8f817ao2p; ; xn--emb715u.xn--mhb8f817a; [B5, B6, P1, V6] # 㒧۱.Ⴚيٴ
-㒧۱.Ⴚيٴ‍; ; [B5, B6, C2, P1, V6]; xn--emb715u.xn--mhb8f817ao2p; ; xn--emb715u.xn--mhb8f817a; [B5, B6, P1, V6] # 㒧۱.Ⴚيٴ
-㒧۱.ⴚيٴ‍; ; [B5, B6, C2]; xn--emb715u.xn--mhb8f960g03l; ; xn--emb715u.xn--mhb8fy26k; [B5, B6] # 㒧۱.ⴚيٴ
-xn--emb715u.xn--mhb8fy26k; 㒧۱.ⴚيٴ; [B5, B6]; xn--emb715u.xn--mhb8fy26k; ; ;  # 㒧۱.ⴚيٴ
-xn--emb715u.xn--mhb8f960g03l; 㒧۱.ⴚيٴ‍; [B5, B6, C2]; xn--emb715u.xn--mhb8f960g03l; ; ;  # 㒧۱.ⴚيٴ
-xn--emb715u.xn--mhb8f817a; 㒧۱.Ⴚيٴ; [B5, B6, V6]; xn--emb715u.xn--mhb8f817a; ; ;  # 㒧۱.Ⴚيٴ
-xn--emb715u.xn--mhb8f817ao2p; 㒧۱.Ⴚيٴ‍; [B5, B6, C2, V6]; xn--emb715u.xn--mhb8f817ao2p; ; ;  # 㒧۱.Ⴚيٴ
-㒧۱.ⴚٸ‍; 㒧۱.ⴚيٴ‍; [B5, B6, C2]; xn--emb715u.xn--mhb8f960g03l; ; xn--emb715u.xn--mhb8fy26k; [B5, B6] # 㒧۱.ⴚيٴ
-ྔꡋ-．-𖬴; ྔꡋ-.-𖬴; [V3, V5]; xn----ukg9938i.xn----4u5m; ; ;  # ྔꡋ-.-𖬴
-ྔꡋ-.-𖬴; ; [V3, V5]; xn----ukg9938i.xn----4u5m; ; ;  # ྔꡋ-.-𖬴
-xn----ukg9938i.xn----4u5m; ྔꡋ-.-𖬴; [V3, V5]; xn----ukg9938i.xn----4u5m; ; ;  # ྔꡋ-.-𖬴
-񿒳-⋢‌．标-; 񿒳-⋢‌.标-; [C1, P1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [P1, V3, V6] # -⋢.标-
-񿒳-⋢‌．标-; 񿒳-⋢‌.标-; [C1, P1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [P1, V3, V6] # -⋢.标-
-񿒳-⋢‌.标-; ; [C1, P1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [P1, V3, V6] # -⋢.标-
-񿒳-⋢‌.标-; 񿒳-⋢‌.标-; [C1, P1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [P1, V3, V6] # -⋢.标-
-xn----9mo67451g.xn----qj7b; 񿒳-⋢.标-; [V3, V6]; xn----9mo67451g.xn----qj7b; ; ;  # -⋢.标-
-xn----sgn90kn5663a.xn----qj7b; 񿒳-⋢‌.标-; [C1, V3, V6]; xn----sgn90kn5663a.xn----qj7b; ; ;  # -⋢.标-
-ٱ．ςߜ; ٱ.ςߜ; [B5, B6]; xn--qib.xn--3xa41s; ; xn--qib.xn--4xa21s;  # ٱ.ςߜ
-ٱ.ςߜ; ; [B5, B6]; xn--qib.xn--3xa41s; ; xn--qib.xn--4xa21s;  # ٱ.ςߜ
-ٱ.Σߜ; ٱ.σߜ; [B5, B6]; xn--qib.xn--4xa21s; ; ;  # ٱ.σߜ
-ٱ.σߜ; ; [B5, B6]; xn--qib.xn--4xa21s; ; ;  # ٱ.σߜ
-xn--qib.xn--4xa21s; ٱ.σߜ; [B5, B6]; xn--qib.xn--4xa21s; ; ;  # ٱ.σߜ
-xn--qib.xn--3xa41s; ٱ.ςߜ; [B5, B6]; xn--qib.xn--3xa41s; ; ;  # ٱ.ςߜ
-ٱ．Σߜ; ٱ.σߜ; [B5, B6]; xn--qib.xn--4xa21s; ; ;  # ٱ.σߜ
-ٱ．σߜ; ٱ.σߜ; [B5, B6]; xn--qib.xn--4xa21s; ; ;  # ٱ.σߜ
-񼈶؅．ࣁ‍𑑂𱼱; 񼈶؅.ࣁ‍𑑂𱼱; [B2, B3, B5, B6, C2, P1, V6]; xn--nfb17942h.xn--nzb240jv06otevq; ; xn--nfb17942h.xn--nzb6708kx3pn; [B2, B3, B5, B6, P1, V6] # .ࣁ𑑂
-񼈶؅.ࣁ‍𑑂𱼱; ; [B2, B3, B5, B6, C2, P1, V6]; xn--nfb17942h.xn--nzb240jv06otevq; ; xn--nfb17942h.xn--nzb6708kx3pn; [B2, B3, B5, B6, P1, V6] # .ࣁ𑑂
-xn--nfb17942h.xn--nzb6708kx3pn; 񼈶؅.ࣁ𑑂𱼱; [B2, B3, B5, B6, V6]; xn--nfb17942h.xn--nzb6708kx3pn; ; ;  # .ࣁ𑑂
-xn--nfb17942h.xn--nzb240jv06otevq; 񼈶؅.ࣁ‍𑑂𱼱; [B2, B3, B5, B6, C2, V6]; xn--nfb17942h.xn--nzb240jv06otevq; ; ;  # .ࣁ𑑂
-𐹾𐋩𞵜｡᯲; 𐹾𐋩𞵜.᯲; [B1, P1, V5, V6]; xn--d97cn8rn44p.xn--0zf; ; ;  # 𐹾𐋩.᯲
-𐹾𐋩𞵜。᯲; 𐹾𐋩𞵜.᯲; [B1, P1, V5, V6]; xn--d97cn8rn44p.xn--0zf; ; ;  # 𐹾𐋩.᯲
-xn--d97cn8rn44p.xn--0zf; 𐹾𐋩𞵜.᯲; [B1, V5, V6]; xn--d97cn8rn44p.xn--0zf; ; ;  # 𐹾𐋩.᯲
-6ᅠᰳ󠸧.򟜊锰ܬς; ; [B1, B5, P1, V6]; xn--6-5bh476ewr517a.xn--3xa16ohw6pk078g; ; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g;  # 6ᰳ.锰ܬς
-6ᅠᰳ󠸧.򟜊锰ܬΣ; 6ᅠᰳ󠸧.򟜊锰ܬσ; [B1, B5, P1, V6]; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; ; ;  # 6ᰳ.锰ܬσ
-6ᅠᰳ󠸧.򟜊锰ܬσ; ; [B1, B5, P1, V6]; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; ; ;  # 6ᰳ.锰ܬσ
-xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; 6ᅠᰳ󠸧.򟜊锰ܬσ; [B1, B5, V6]; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; ; ;  # 6ᰳ.锰ܬσ
-xn--6-5bh476ewr517a.xn--3xa16ohw6pk078g; 6ᅠᰳ󠸧.򟜊锰ܬς; [B1, B5, V6]; xn--6-5bh476ewr517a.xn--3xa16ohw6pk078g; ; ;  # 6ᰳ.锰ܬς
-ڳ︄񅎦𝟽｡𐹽; ڳ񅎦7.𐹽; [B1, B2, P1, V6]; xn--7-yuc34665f.xn--1o0d; ; ;  # ڳ7.𐹽
-ڳ︄񅎦7。𐹽; ڳ񅎦7.𐹽; [B1, B2, P1, V6]; xn--7-yuc34665f.xn--1o0d; ; ;  # ڳ7.𐹽
-xn--7-yuc34665f.xn--1o0d; ڳ񅎦7.𐹽; [B1, B2, V6]; xn--7-yuc34665f.xn--1o0d; ; ;  # ڳ7.𐹽
-𞮧．‌⫞; 𞮧.‌⫞; [B1, C1, P1, V6]; xn--pw6h.xn--0ug283b; ; xn--pw6h.xn--53i; [B1, P1, V6] # .⫞
-𞮧.‌⫞; ; [B1, C1, P1, V6]; xn--pw6h.xn--0ug283b; ; xn--pw6h.xn--53i; [B1, P1, V6] # .⫞
-xn--pw6h.xn--53i; 𞮧.⫞; [B1, V6]; xn--pw6h.xn--53i; ; ;  # .⫞
-xn--pw6h.xn--0ug283b; 𞮧.‌⫞; [B1, C1, V6]; xn--pw6h.xn--0ug283b; ; ;  # .⫞
--񕉴.۠ᢚ-; ; [P1, V3, V5, V6]; xn----qi38c.xn----jxc827k; ; ;  # -.۠ᢚ-
-xn----qi38c.xn----jxc827k; -񕉴.۠ᢚ-; [V3, V5, V6]; xn----qi38c.xn----jxc827k; ; ;  # -.۠ᢚ-
-⌁‍𑄴．‌𝟩٬; ⌁‍𑄴.‌7٬; [B1, C1, C2]; xn--1ug38i2093a.xn--7-xqc297q; ; xn--nhh5394g.xn--7-xqc; [B1] # ⌁𑄴.7٬
-⌁‍𑄴.‌7٬; ; [B1, C1, C2]; xn--1ug38i2093a.xn--7-xqc297q; ; xn--nhh5394g.xn--7-xqc; [B1] # ⌁𑄴.7٬
-xn--nhh5394g.xn--7-xqc; ⌁𑄴.7٬; [B1]; xn--nhh5394g.xn--7-xqc; ; ;  # ⌁𑄴.7٬
-xn--1ug38i2093a.xn--7-xqc297q; ⌁‍𑄴.‌7٬; [B1, C1, C2]; xn--1ug38i2093a.xn--7-xqc297q; ; ;  # ⌁𑄴.7٬
-︒ﴅืﻼ。岓᯲󠾃ᡂ; ︒صىืلا.岓᯲󠾃ᡂ; [B1, P1, V6]; xn--mgb1a7bt462hf267a.xn--17e10qe61f9r71s; ; ;  # ︒صىืلا.岓᯲ᡂ
-。صىืلا。岓᯲󠾃ᡂ; .صىืلا.岓᯲󠾃ᡂ; [P1, V6, X4_2]; .xn--mgb1a7bt462h.xn--17e10qe61f9r71s; [P1, V6, A4_2]; ;  # .صىืلا.岓᯲ᡂ
-.xn--mgb1a7bt462h.xn--17e10qe61f9r71s; .صىืلا.岓᯲󠾃ᡂ; [V6, X4_2]; .xn--mgb1a7bt462h.xn--17e10qe61f9r71s; [V6, A4_2]; ;  # .صىืلا.岓᯲ᡂ
-xn--mgb1a7bt462hf267a.xn--17e10qe61f9r71s; ︒صىืلا.岓᯲󠾃ᡂ; [B1, V6]; xn--mgb1a7bt462hf267a.xn--17e10qe61f9r71s; ; ;  # ︒صىืلا.岓᯲ᡂ
+xn--9n0d.xn--98-7ek; 𐹢.Ⴍ98; [B1, V7]; xn--9n0d.xn--98-7ek; ; ;  # 𐹢.Ⴍ98
+\u200C\u034F｡ß\u08E2⒚≯; \u200C.ß\u08E2⒚≯; [B1, B5, B6, C1, V7]; xn--0ug.xn--zca612bx9vo5b; ; .xn--ss-9if872xjjc; [B5, B6, V7, A4_2] # .ß⒚≯
+\u200C\u034F｡ß\u08E2⒚>\u0338; \u200C.ß\u08E2⒚≯; [B1, B5, B6, C1, V7]; xn--0ug.xn--zca612bx9vo5b; ; .xn--ss-9if872xjjc; [B5, B6, V7, A4_2] # .ß⒚≯
+\u200C\u034F。ß\u08E219.≯; \u200C.ß\u08E219.≯; [B1, B5, C1, V7]; xn--0ug.xn--19-fia813f.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V7, A4_2] # .ß19.≯
+\u200C\u034F。ß\u08E219.>\u0338; \u200C.ß\u08E219.≯; [B1, B5, C1, V7]; xn--0ug.xn--19-fia813f.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V7, A4_2] # .ß19.≯
+\u200C\u034F。SS\u08E219.>\u0338; \u200C.ss\u08E219.≯; [B1, B5, C1, V7]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V7, A4_2] # .ss19.≯
+\u200C\u034F。SS\u08E219.≯; \u200C.ss\u08E219.≯; [B1, B5, C1, V7]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V7, A4_2] # .ss19.≯
+\u200C\u034F。ss\u08E219.≯; \u200C.ss\u08E219.≯; [B1, B5, C1, V7]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V7, A4_2] # .ss19.≯
+\u200C\u034F。ss\u08E219.>\u0338; \u200C.ss\u08E219.≯; [B1, B5, C1, V7]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V7, A4_2] # .ss19.≯
+\u200C\u034F。Ss\u08E219.>\u0338; \u200C.ss\u08E219.≯; [B1, B5, C1, V7]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V7, A4_2] # .ss19.≯
+\u200C\u034F。Ss\u08E219.≯; \u200C.ss\u08E219.≯; [B1, B5, C1, V7]; xn--0ug.xn--ss19-w0i.xn--hdh; ; .xn--ss19-w0i.xn--hdh; [B1, B5, V7, A4_2] # .ss19.≯
+.xn--ss19-w0i.xn--hdh; .ss\u08E219.≯; [B1, B5, V7, X4_2]; .xn--ss19-w0i.xn--hdh; [B1, B5, V7, A4_2]; ;  # .ss19.≯
+xn--0ug.xn--ss19-w0i.xn--hdh; \u200C.ss\u08E219.≯; [B1, B5, C1, V7]; xn--0ug.xn--ss19-w0i.xn--hdh; ; ;  # .ss19.≯
+xn--0ug.xn--19-fia813f.xn--hdh; \u200C.ß\u08E219.≯; [B1, B5, C1, V7]; xn--0ug.xn--19-fia813f.xn--hdh; ; ;  # .ß19.≯
+\u200C\u034F｡SS\u08E2⒚>\u0338; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V7]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V7, A4_2] # .ss⒚≯
+\u200C\u034F｡SS\u08E2⒚≯; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V7]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V7, A4_2] # .ss⒚≯
+\u200C\u034F｡ss\u08E2⒚≯; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V7]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V7, A4_2] # .ss⒚≯
+\u200C\u034F｡ss\u08E2⒚>\u0338; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V7]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V7, A4_2] # .ss⒚≯
+\u200C\u034F｡Ss\u08E2⒚>\u0338; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V7]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V7, A4_2] # .ss⒚≯
+\u200C\u034F｡Ss\u08E2⒚≯; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V7]; xn--0ug.xn--ss-9if872xjjc; ; .xn--ss-9if872xjjc; [B5, B6, V7, A4_2] # .ss⒚≯
+.xn--ss-9if872xjjc; .ss\u08E2⒚≯; [B5, B6, V7, X4_2]; .xn--ss-9if872xjjc; [B5, B6, V7, A4_2]; ;  # .ss⒚≯
+xn--0ug.xn--ss-9if872xjjc; \u200C.ss\u08E2⒚≯; [B1, B5, B6, C1, V7]; xn--0ug.xn--ss-9if872xjjc; ; ;  # .ss⒚≯
+xn--0ug.xn--zca612bx9vo5b; \u200C.ß\u08E2⒚≯; [B1, B5, B6, C1, V7]; xn--0ug.xn--zca612bx9vo5b; ; ;  # .ß⒚≯
+\u200C𞥍ᡌ．𣃔; \u200C𞥍ᡌ.𣃔; [B1, C1, V7]; xn--c8e180bqz13b.xn--od1j; ; xn--c8e5919u.xn--od1j; [B2, B3, V7] # ᡌ.𣃔
+\u200C𞥍ᡌ.𣃔; ; [B1, C1, V7]; xn--c8e180bqz13b.xn--od1j; ; xn--c8e5919u.xn--od1j; [B2, B3, V7] # ᡌ.𣃔
+xn--c8e5919u.xn--od1j; 𞥍ᡌ.𣃔; [B2, B3, V7]; xn--c8e5919u.xn--od1j; ; ;  # ᡌ.𣃔
+xn--c8e180bqz13b.xn--od1j; \u200C𞥍ᡌ.𣃔; [B1, C1, V7]; xn--c8e180bqz13b.xn--od1j; ; ;  # ᡌ.𣃔
+\u07D0򜬝-񡢬。\u0FA0Ⴛ𞷏𝆬; \u07D0򜬝-񡢬.\u0FA0ⴛ𞷏𝆬; [B1, B2, B3, V6, V7]; xn----8bd11730jefvw.xn--wfd802mpm20agsxa; ; ;  # ߐ-.ྠⴛ𝆬
+\u07D0򜬝-񡢬。\u0FA0ⴛ𞷏𝆬; \u07D0򜬝-񡢬.\u0FA0ⴛ𞷏𝆬; [B1, B2, B3, V6, V7]; xn----8bd11730jefvw.xn--wfd802mpm20agsxa; ; ;  # ߐ-.ྠⴛ𝆬
+xn----8bd11730jefvw.xn--wfd802mpm20agsxa; \u07D0򜬝-񡢬.\u0FA0ⴛ𞷏𝆬; [B1, B2, B3, V6, V7]; xn----8bd11730jefvw.xn--wfd802mpm20agsxa; ; ;  # ߐ-.ྠⴛ𝆬
+xn----8bd11730jefvw.xn--wfd08cd265hgsxa; \u07D0򜬝-񡢬.\u0FA0Ⴛ𞷏𝆬; [B1, B2, B3, V6, V7]; xn----8bd11730jefvw.xn--wfd08cd265hgsxa; ; ;  # ߐ-.ྠႻ𝆬
+𝨥。⫟𑈾; 𝨥.⫟𑈾; [V6]; xn--n82h.xn--63iw010f; ; ;  # 𝨥.⫟𑈾
+xn--n82h.xn--63iw010f; 𝨥.⫟𑈾; [V6]; xn--n82h.xn--63iw010f; ; ;  # 𝨥.⫟𑈾
+⾛\u0753.Ⴕ𞠬\u0604\u200D; 走\u0753.ⴕ𞠬\u0604\u200D; [B5, B6, C2, V7]; xn--6ob9779d.xn--mfb444k5gjt754b; ; xn--6ob9779d.xn--mfb511rxu80a; [B5, B6, V7] # 走ݓ.ⴕ𞠬
+走\u0753.Ⴕ𞠬\u0604\u200D; 走\u0753.ⴕ𞠬\u0604\u200D; [B5, B6, C2, V7]; xn--6ob9779d.xn--mfb444k5gjt754b; ; xn--6ob9779d.xn--mfb511rxu80a; [B5, B6, V7] # 走ݓ.ⴕ𞠬
+走\u0753.ⴕ𞠬\u0604\u200D; ; [B5, B6, C2, V7]; xn--6ob9779d.xn--mfb444k5gjt754b; ; xn--6ob9779d.xn--mfb511rxu80a; [B5, B6, V7] # 走ݓ.ⴕ𞠬
+xn--6ob9779d.xn--mfb511rxu80a; 走\u0753.ⴕ𞠬\u0604; [B5, B6, V7]; xn--6ob9779d.xn--mfb511rxu80a; ; ;  # 走ݓ.ⴕ𞠬
+xn--6ob9779d.xn--mfb444k5gjt754b; 走\u0753.ⴕ𞠬\u0604\u200D; [B5, B6, C2, V7]; xn--6ob9779d.xn--mfb444k5gjt754b; ; ;  # 走ݓ.ⴕ𞠬
+⾛\u0753.ⴕ𞠬\u0604\u200D; 走\u0753.ⴕ𞠬\u0604\u200D; [B5, B6, C2, V7]; xn--6ob9779d.xn--mfb444k5gjt754b; ; xn--6ob9779d.xn--mfb511rxu80a; [B5, B6, V7] # 走ݓ.ⴕ𞠬
+xn--6ob9779d.xn--mfb785ck569a; 走\u0753.Ⴕ𞠬\u0604; [B5, B6, V7]; xn--6ob9779d.xn--mfb785ck569a; ; ;  # 走ݓ.Ⴕ𞠬
+xn--6ob9779d.xn--mfb785czmm0y85b; 走\u0753.Ⴕ𞠬\u0604\u200D; [B5, B6, C2, V7]; xn--6ob9779d.xn--mfb785czmm0y85b; ; ;  # 走ݓ.Ⴕ𞠬
+-ᢗ\u200C🄄.𑜢; -ᢗ\u200C3,.𑜢; [C1, V3, V6, U1]; xn---3,-3eu051c.xn--9h2d; ; xn---3,-3eu.xn--9h2d; [V3, V6, U1] # -ᢗ3,.𑜢
+-ᢗ\u200C3,.𑜢; ; [C1, V3, V6, U1]; xn---3,-3eu051c.xn--9h2d; ; xn---3,-3eu.xn--9h2d; [V3, V6, U1] # -ᢗ3,.𑜢
+xn---3,-3eu.xn--9h2d; -ᢗ3,.𑜢; [V3, V6, U1]; xn---3,-3eu.xn--9h2d; ; ;  # -ᢗ3,.𑜢
+xn---3,-3eu051c.xn--9h2d; -ᢗ\u200C3,.𑜢; [C1, V3, V6, U1]; xn---3,-3eu051c.xn--9h2d; ; ;  # -ᢗ3,.𑜢
+xn----pck1820x.xn--9h2d; -ᢗ🄄.𑜢; [V3, V6, V7]; xn----pck1820x.xn--9h2d; ; ;  # -ᢗ🄄.𑜢
+xn----pck312bx563c.xn--9h2d; -ᢗ\u200C🄄.𑜢; [C1, V3, V6, V7]; xn----pck312bx563c.xn--9h2d; ; ;  # -ᢗ🄄.𑜢
+≠𐸁𹏁\u200C.Ⴚ򳄠; ≠𐸁𹏁\u200C.ⴚ򳄠; [B1, C1, V7]; xn--0ug83gn618a21ov.xn--ilj23531g; ; xn--1ch2293gv3nr.xn--ilj23531g; [B1, V7] # ≠.ⴚ
+=\u0338𐸁𹏁\u200C.Ⴚ򳄠; ≠𐸁𹏁\u200C.ⴚ򳄠; [B1, C1, V7]; xn--0ug83gn618a21ov.xn--ilj23531g; ; xn--1ch2293gv3nr.xn--ilj23531g; [B1, V7] # ≠.ⴚ
+=\u0338𐸁𹏁\u200C.ⴚ򳄠; ≠𐸁𹏁\u200C.ⴚ򳄠; [B1, C1, V7]; xn--0ug83gn618a21ov.xn--ilj23531g; ; xn--1ch2293gv3nr.xn--ilj23531g; [B1, V7] # ≠.ⴚ
+≠𐸁𹏁\u200C.ⴚ򳄠; ; [B1, C1, V7]; xn--0ug83gn618a21ov.xn--ilj23531g; ; xn--1ch2293gv3nr.xn--ilj23531g; [B1, V7] # ≠.ⴚ
+xn--1ch2293gv3nr.xn--ilj23531g; ≠𐸁𹏁.ⴚ򳄠; [B1, V7]; xn--1ch2293gv3nr.xn--ilj23531g; ; ;  # ≠.ⴚ
+xn--0ug83gn618a21ov.xn--ilj23531g; ≠𐸁𹏁\u200C.ⴚ򳄠; [B1, C1, V7]; xn--0ug83gn618a21ov.xn--ilj23531g; ; ;  # ≠.ⴚ
+xn--1ch2293gv3nr.xn--ynd49496l; ≠𐸁𹏁.Ⴚ򳄠; [B1, V7]; xn--1ch2293gv3nr.xn--ynd49496l; ; ;  # ≠.Ⴚ
+xn--0ug83gn618a21ov.xn--ynd49496l; ≠𐸁𹏁\u200C.Ⴚ򳄠; [B1, C1, V7]; xn--0ug83gn618a21ov.xn--ynd49496l; ; ;  # ≠.Ⴚ
+\u0669｡󠇀𑇊; \u0669.𑇊; [B1, V6]; xn--iib.xn--6d1d; ; ;  # ٩.𑇊
+\u0669。󠇀𑇊; \u0669.𑇊; [B1, V6]; xn--iib.xn--6d1d; ; ;  # ٩.𑇊
+xn--iib.xn--6d1d; \u0669.𑇊; [B1, V6]; xn--iib.xn--6d1d; ; ;  # ٩.𑇊
+\u1086𞶀≯⒍。-; \u1086𞶀≯⒍.-; [B1, V3, V6, V7]; xn--hmd482gqqb8730g.-; ; ;  # ႆ≯⒍.-
+\u1086𞶀>\u0338⒍。-; \u1086𞶀≯⒍.-; [B1, V3, V6, V7]; xn--hmd482gqqb8730g.-; ; ;  # ႆ≯⒍.-
+\u1086𞶀≯6.。-; \u1086𞶀≯6..-; [B1, V3, V6, V7, X4_2]; xn--6-oyg968k7h74b..-; [B1, V3, V6, V7, A4_2]; ;  # ႆ≯6..-
+\u1086𞶀>\u03386.。-; \u1086𞶀≯6..-; [B1, V3, V6, V7, X4_2]; xn--6-oyg968k7h74b..-; [B1, V3, V6, V7, A4_2]; ;  # ႆ≯6..-
+xn--6-oyg968k7h74b..-; \u1086𞶀≯6..-; [B1, V3, V6, V7, X4_2]; xn--6-oyg968k7h74b..-; [B1, V3, V6, V7, A4_2]; ;  # ႆ≯6..-
+xn--hmd482gqqb8730g.-; \u1086𞶀≯⒍.-; [B1, V3, V6, V7]; xn--hmd482gqqb8730g.-; ; ;  # ႆ≯⒍.-
+\u17B4.쮇-; .쮇-; [V3, X4_2]; .xn----938f; [V3, A4_2]; ;  # .쮇-
+\u17B4.쮇-; .쮇-; [V3, X4_2]; .xn----938f; [V3, A4_2]; ;  # .쮇-
+.xn----938f; .쮇-; [V3, X4_2]; .xn----938f; [V3, A4_2]; ;  # .쮇-
+xn--z3e.xn----938f; \u17B4.쮇-; [V3, V6, V7]; xn--z3e.xn----938f; ; ;  # .쮇-
+\u200C𑓂。⒈-􀪛; \u200C𑓂.⒈-􀪛; [C1, V7]; xn--0ugy057g.xn----dcp29674o; ; xn--wz1d.xn----dcp29674o; [V6, V7] # 𑓂.⒈-
+\u200C𑓂。1.-􀪛; \u200C𑓂.1.-􀪛; [C1, V3, V7]; xn--0ugy057g.1.xn----rg03o; ; xn--wz1d.1.xn----rg03o; [V3, V6, V7] # 𑓂.1.-
+xn--wz1d.1.xn----rg03o; 𑓂.1.-􀪛; [V3, V6, V7]; xn--wz1d.1.xn----rg03o; ; ;  # 𑓂.1.-
+xn--0ugy057g.1.xn----rg03o; \u200C𑓂.1.-􀪛; [C1, V3, V7]; xn--0ugy057g.1.xn----rg03o; ; ;  # 𑓂.1.-
+xn--wz1d.xn----dcp29674o; 𑓂.⒈-􀪛; [V6, V7]; xn--wz1d.xn----dcp29674o; ; ;  # 𑓂.⒈-
+xn--0ugy057g.xn----dcp29674o; \u200C𑓂.⒈-􀪛; [C1, V7]; xn--0ugy057g.xn----dcp29674o; ; ;  # 𑓂.⒈-
+⒈\uFEAE\u200C。\u20E9🖞\u200C𖬴; ⒈\u0631\u200C.\u20E9🖞\u200C𖬴; [B1, C1, V6, V7]; xn--wgb253kmfd.xn--0ugz6a8040fty5d; ; xn--wgb746m.xn--c1g6021kg18c; [B1, V6, V7] # ⒈ر.⃩🖞𖬴
+1.\u0631\u200C。\u20E9🖞\u200C𖬴; 1.\u0631\u200C.\u20E9🖞\u200C𖬴; [B1, B3, C1, V6]; 1.xn--wgb253k.xn--0ugz6a8040fty5d; ; 1.xn--wgb.xn--c1g6021kg18c; [B1, V6] # 1.ر.⃩🖞𖬴
+1.xn--wgb.xn--c1g6021kg18c; 1.\u0631.\u20E9🖞𖬴; [B1, V6]; 1.xn--wgb.xn--c1g6021kg18c; ; ;  # 1.ر.⃩🖞𖬴
+1.xn--wgb253k.xn--0ugz6a8040fty5d; 1.\u0631\u200C.\u20E9🖞\u200C𖬴; [B1, B3, C1, V6]; 1.xn--wgb253k.xn--0ugz6a8040fty5d; ; ;  # 1.ر.⃩🖞𖬴
+xn--wgb746m.xn--c1g6021kg18c; ⒈\u0631.\u20E9🖞𖬴; [B1, V6, V7]; xn--wgb746m.xn--c1g6021kg18c; ; ;  # ⒈ر.⃩🖞𖬴
+xn--wgb253kmfd.xn--0ugz6a8040fty5d; ⒈\u0631\u200C.\u20E9🖞\u200C𖬴; [B1, C1, V6, V7]; xn--wgb253kmfd.xn--0ugz6a8040fty5d; ; ;  # ⒈ر.⃩🖞𖬴
+󌭇｡𝟐\u1BA8\u07D4; 󌭇.2\u1BA8\u07D4; [B1, V7]; xn--xm89d.xn--2-icd143m; ; ;  # .2ᮨߔ
+󌭇。2\u1BA8\u07D4; 󌭇.2\u1BA8\u07D4; [B1, V7]; xn--xm89d.xn--2-icd143m; ; ;  # .2ᮨߔ
+xn--xm89d.xn--2-icd143m; 󌭇.2\u1BA8\u07D4; [B1, V7]; xn--xm89d.xn--2-icd143m; ; ;  # .2ᮨߔ
+\uFD8F򫳺.ς\u200D𐹷; \u0645\u062E\u0645򫳺.ς\u200D𐹷; [B2, B3, B5, B6, C2, V7]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V7] # مخم.ς𐹷
+\u0645\u062E\u0645򫳺.ς\u200D𐹷; ; [B2, B3, B5, B6, C2, V7]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V7] # مخم.ς𐹷
+\u0645\u062E\u0645򫳺.Σ\u200D𐹷; \u0645\u062E\u0645򫳺.σ\u200D𐹷; [B2, B3, B5, B6, C2, V7]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V7] # مخم.σ𐹷
+\u0645\u062E\u0645򫳺.σ\u200D𐹷; ; [B2, B3, B5, B6, C2, V7]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V7] # مخم.σ𐹷
+xn--tgb9bb64691z.xn--4xa6667k; \u0645\u062E\u0645򫳺.σ𐹷; [B2, B3, B5, B6, V7]; xn--tgb9bb64691z.xn--4xa6667k; ; ;  # مخم.σ𐹷
+xn--tgb9bb64691z.xn--4xa895lrp7n; \u0645\u062E\u0645򫳺.σ\u200D𐹷; [B2, B3, B5, B6, C2, V7]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; ;  # مخم.σ𐹷
+xn--tgb9bb64691z.xn--3xa006lrp7n; \u0645\u062E\u0645򫳺.ς\u200D𐹷; [B2, B3, B5, B6, C2, V7]; xn--tgb9bb64691z.xn--3xa006lrp7n; ; ;  # مخم.ς𐹷
+\uFD8F򫳺.Σ\u200D𐹷; \u0645\u062E\u0645򫳺.σ\u200D𐹷; [B2, B3, B5, B6, C2, V7]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V7] # مخم.σ𐹷
+\uFD8F򫳺.σ\u200D𐹷; \u0645\u062E\u0645򫳺.σ\u200D𐹷; [B2, B3, B5, B6, C2, V7]; xn--tgb9bb64691z.xn--4xa895lrp7n; ; xn--tgb9bb64691z.xn--4xa6667k; [B2, B3, B5, B6, V7] # مخم.σ𐹷
+⒎\u06C1\u0605｡\uAAF6۵𐇽; ⒎\u06C1\u0605.\uAAF6۵𐇽; [B1, V6, V7]; xn--nfb98ai25e.xn--imb3805fxt8b; ; ;  # ⒎ہ.꫶۵𐇽
+7.\u06C1\u0605。\uAAF6۵𐇽; 7.\u06C1\u0605.\uAAF6۵𐇽; [B1, V6, V7]; 7.xn--nfb98a.xn--imb3805fxt8b; ; ;  # 7.ہ.꫶۵𐇽
+7.xn--nfb98a.xn--imb3805fxt8b; 7.\u06C1\u0605.\uAAF6۵𐇽; [B1, V6, V7]; 7.xn--nfb98a.xn--imb3805fxt8b; ; ;  # 7.ہ.꫶۵𐇽
+xn--nfb98ai25e.xn--imb3805fxt8b; ⒎\u06C1\u0605.\uAAF6۵𐇽; [B1, V6, V7]; xn--nfb98ai25e.xn--imb3805fxt8b; ; ;  # ⒎ہ.꫶۵𐇽
+-ᡥ᠆󍲭。\u0605\u1A5D𐹡; -ᡥ᠆󍲭.\u0605\u1A5D𐹡; [B1, V3, V7]; xn----f3j6s87156i.xn--nfb035hoo2p; ; ;  # -ᡥ᠆.ᩝ𐹡
+xn----f3j6s87156i.xn--nfb035hoo2p; -ᡥ᠆󍲭.\u0605\u1A5D𐹡; [B1, V3, V7]; xn----f3j6s87156i.xn--nfb035hoo2p; ; ;  # -ᡥ᠆.ᩝ𐹡
+\u200D.\u06BD\u0663\u0596; ; [B1, C2]; xn--1ug.xn--hcb32bni; ; .xn--hcb32bni; [A4_2] # .ڽ٣֖
+.xn--hcb32bni; .\u06BD\u0663\u0596; [X4_2]; .xn--hcb32bni; [A4_2]; ;  # .ڽ٣֖
+xn--1ug.xn--hcb32bni; \u200D.\u06BD\u0663\u0596; [B1, C2]; xn--1ug.xn--hcb32bni; ; ;  # .ڽ٣֖
+xn--hcb32bni; \u06BD\u0663\u0596; ; xn--hcb32bni; ; ;  # ڽ٣֖
+\u06BD\u0663\u0596; ; ; xn--hcb32bni; ; ;  # ڽ٣֖
+㒧۱.Ⴚ\u0678\u200D; 㒧۱.ⴚ\u064A\u0674\u200D; [B5, B6, C2]; xn--emb715u.xn--mhb8f960g03l; ; xn--emb715u.xn--mhb8fy26k; [B5, B6] # 㒧۱.ⴚيٴ
+㒧۱.Ⴚ\u064A\u0674\u200D; 㒧۱.ⴚ\u064A\u0674\u200D; [B5, B6, C2]; xn--emb715u.xn--mhb8f960g03l; ; xn--emb715u.xn--mhb8fy26k; [B5, B6] # 㒧۱.ⴚيٴ
+㒧۱.ⴚ\u064A\u0674\u200D; ; [B5, B6, C2]; xn--emb715u.xn--mhb8f960g03l; ; xn--emb715u.xn--mhb8fy26k; [B5, B6] # 㒧۱.ⴚيٴ
+xn--emb715u.xn--mhb8fy26k; 㒧۱.ⴚ\u064A\u0674; [B5, B6]; xn--emb715u.xn--mhb8fy26k; ; ;  # 㒧۱.ⴚيٴ
+xn--emb715u.xn--mhb8f960g03l; 㒧۱.ⴚ\u064A\u0674\u200D; [B5, B6, C2]; xn--emb715u.xn--mhb8f960g03l; ; ;  # 㒧۱.ⴚيٴ
+㒧۱.ⴚ\u0678\u200D; 㒧۱.ⴚ\u064A\u0674\u200D; [B5, B6, C2]; xn--emb715u.xn--mhb8f960g03l; ; xn--emb715u.xn--mhb8fy26k; [B5, B6] # 㒧۱.ⴚيٴ
+xn--emb715u.xn--mhb8f817a; 㒧۱.Ⴚ\u064A\u0674; [B5, B6, V7]; xn--emb715u.xn--mhb8f817a; ; ;  # 㒧۱.Ⴚيٴ
+xn--emb715u.xn--mhb8f817ao2p; 㒧۱.Ⴚ\u064A\u0674\u200D; [B5, B6, C2, V7]; xn--emb715u.xn--mhb8f817ao2p; ; ;  # 㒧۱.Ⴚيٴ
+\u0F94ꡋ-．-𖬴; \u0F94ꡋ-.-𖬴; [V3, V6]; xn----ukg9938i.xn----4u5m; ; ;  # ྔꡋ-.-𖬴
+\u0F94ꡋ-.-𖬴; ; [V3, V6]; xn----ukg9938i.xn----4u5m; ; ;  # ྔꡋ-.-𖬴
+xn----ukg9938i.xn----4u5m; \u0F94ꡋ-.-𖬴; [V3, V6]; xn----ukg9938i.xn----4u5m; ; ;  # ྔꡋ-.-𖬴
+񿒳-⋢\u200C．标-; 񿒳-⋢\u200C.标-; [C1, V3, V7]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [V3, V7] # -⋢.标-
+񿒳-⊑\u0338\u200C．标-; 񿒳-⋢\u200C.标-; [C1, V3, V7]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [V3, V7] # -⋢.标-
+񿒳-⋢\u200C.标-; ; [C1, V3, V7]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [V3, V7] # -⋢.标-
+񿒳-⊑\u0338\u200C.标-; 񿒳-⋢\u200C.标-; [C1, V3, V7]; xn----sgn90kn5663a.xn----qj7b; ; xn----9mo67451g.xn----qj7b; [V3, V7] # -⋢.标-
+xn----9mo67451g.xn----qj7b; 񿒳-⋢.标-; [V3, V7]; xn----9mo67451g.xn----qj7b; ; ;  # -⋢.标-
+xn----sgn90kn5663a.xn----qj7b; 񿒳-⋢\u200C.标-; [C1, V3, V7]; xn----sgn90kn5663a.xn----qj7b; ; ;  # -⋢.标-
+\u0671．ς\u07DC; \u0671.ς\u07DC; [B5, B6]; xn--qib.xn--3xa41s; ; xn--qib.xn--4xa21s;  # ٱ.ςߜ
+\u0671.ς\u07DC; ; [B5, B6]; xn--qib.xn--3xa41s; ; xn--qib.xn--4xa21s;  # ٱ.ςߜ
+\u0671.Σ\u07DC; \u0671.σ\u07DC; [B5, B6]; xn--qib.xn--4xa21s; ; ;  # ٱ.σߜ
+\u0671.σ\u07DC; ; [B5, B6]; xn--qib.xn--4xa21s; ; ;  # ٱ.σߜ
+xn--qib.xn--4xa21s; \u0671.σ\u07DC; [B5, B6]; xn--qib.xn--4xa21s; ; ;  # ٱ.σߜ
+xn--qib.xn--3xa41s; \u0671.ς\u07DC; [B5, B6]; xn--qib.xn--3xa41s; ; ;  # ٱ.ςߜ
+\u0671．Σ\u07DC; \u0671.σ\u07DC; [B5, B6]; xn--qib.xn--4xa21s; ; ;  # ٱ.σߜ
+\u0671．σ\u07DC; \u0671.σ\u07DC; [B5, B6]; xn--qib.xn--4xa21s; ; ;  # ٱ.σߜ
+񼈶\u0605．\u08C1\u200D𑑂𱼱; 񼈶\u0605.\u08C1\u200D𑑂𱼱; [B2, B3, B5, B6, C2, V7]; xn--nfb17942h.xn--nzb240jv06otevq; ; xn--nfb17942h.xn--nzb6708kx3pn; [B2, B3, B5, B6, V7] # .ࣁ𑑂𱼱
+񼈶\u0605.\u08C1\u200D𑑂𱼱; ; [B2, B3, B5, B6, C2, V7]; xn--nfb17942h.xn--nzb240jv06otevq; ; xn--nfb17942h.xn--nzb6708kx3pn; [B2, B3, B5, B6, V7] # .ࣁ𑑂𱼱
+xn--nfb17942h.xn--nzb6708kx3pn; 񼈶\u0605.\u08C1𑑂𱼱; [B2, B3, B5, B6, V7]; xn--nfb17942h.xn--nzb6708kx3pn; ; ;  # .ࣁ𑑂𱼱
+xn--nfb17942h.xn--nzb240jv06otevq; 񼈶\u0605.\u08C1\u200D𑑂𱼱; [B2, B3, B5, B6, C2, V7]; xn--nfb17942h.xn--nzb240jv06otevq; ; ;  # .ࣁ𑑂𱼱
+𐹾𐋩𞵜｡\u1BF2; 𐹾𐋩𞵜.\u1BF2; [B1, V6, V7]; xn--d97cn8rn44p.xn--0zf; ; ;  # 𐹾𐋩.᯲
+𐹾𐋩𞵜。\u1BF2; 𐹾𐋩𞵜.\u1BF2; [B1, V6, V7]; xn--d97cn8rn44p.xn--0zf; ; ;  # 𐹾𐋩.᯲
+xn--d97cn8rn44p.xn--0zf; 𐹾𐋩𞵜.\u1BF2; [B1, V6, V7]; xn--d97cn8rn44p.xn--0zf; ; ;  # 𐹾𐋩.᯲
+6\u1160\u1C33󠸧.򟜊锰\u072Cς; 6\u1C33󠸧.򟜊锰\u072Cς; [B1, B5, V7]; xn--6-iuly4983p.xn--3xa16ohw6pk078g; ; xn--6-iuly4983p.xn--4xa95ohw6pk078g;  # 6ᰳ.锰ܬς
+6\u1160\u1C33󠸧.򟜊锰\u072CΣ; 6\u1C33󠸧.򟜊锰\u072Cσ; [B1, B5, V7]; xn--6-iuly4983p.xn--4xa95ohw6pk078g; ; ;  # 6ᰳ.锰ܬσ
+6\u1160\u1C33󠸧.򟜊锰\u072Cσ; 6\u1C33󠸧.򟜊锰\u072Cσ; [B1, B5, V7]; xn--6-iuly4983p.xn--4xa95ohw6pk078g; ; ;  # 6ᰳ.锰ܬσ
+xn--6-iuly4983p.xn--4xa95ohw6pk078g; 6\u1C33󠸧.򟜊锰\u072Cσ; [B1, B5, V7]; xn--6-iuly4983p.xn--4xa95ohw6pk078g; ; ;  # 6ᰳ.锰ܬσ
+xn--6-iuly4983p.xn--3xa16ohw6pk078g; 6\u1C33󠸧.򟜊锰\u072Cς; [B1, B5, V7]; xn--6-iuly4983p.xn--3xa16ohw6pk078g; ; ;  # 6ᰳ.锰ܬς
+xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; 6\u1160\u1C33󠸧.򟜊锰\u072Cσ; [B1, B5, V7]; xn--6-5bh476ewr517a.xn--4xa95ohw6pk078g; ; ;  # 6ᰳ.锰ܬσ
+xn--6-5bh476ewr517a.xn--3xa16ohw6pk078g; 6\u1160\u1C33󠸧.򟜊锰\u072Cς; [B1, B5, V7]; xn--6-5bh476ewr517a.xn--3xa16ohw6pk078g; ; ;  # 6ᰳ.锰ܬς
+\u06B3\uFE04񅎦𝟽｡𐹽; \u06B3񅎦7.𐹽; [B1, B2, V7]; xn--7-yuc34665f.xn--1o0d; ; ;  # ڳ7.𐹽
+\u06B3\uFE04񅎦7。𐹽; \u06B3񅎦7.𐹽; [B1, B2, V7]; xn--7-yuc34665f.xn--1o0d; ; ;  # ڳ7.𐹽
+xn--7-yuc34665f.xn--1o0d; \u06B3񅎦7.𐹽; [B1, B2, V7]; xn--7-yuc34665f.xn--1o0d; ; ;  # ڳ7.𐹽
+𞮧．\u200C⫞; 𞮧.\u200C⫞; [B1, C1, V7]; xn--pw6h.xn--0ug283b; ; xn--pw6h.xn--53i; [B1, V7] # .⫞
+𞮧.\u200C⫞; ; [B1, C1, V7]; xn--pw6h.xn--0ug283b; ; xn--pw6h.xn--53i; [B1, V7] # .⫞
+xn--pw6h.xn--53i; 𞮧.⫞; [B1, V7]; xn--pw6h.xn--53i; ; ;  # .⫞
+xn--pw6h.xn--0ug283b; 𞮧.\u200C⫞; [B1, C1, V7]; xn--pw6h.xn--0ug283b; ; ;  # .⫞
+-񕉴.\u06E0ᢚ-; ; [V3, V6, V7]; xn----qi38c.xn----jxc827k; ; ;  # -.۠ᢚ-
+xn----qi38c.xn----jxc827k; -񕉴.\u06E0ᢚ-; [V3, V6, V7]; xn----qi38c.xn----jxc827k; ; ;  # -.۠ᢚ-
+⌁\u200D𑄴．\u200C𝟩\u066C; ⌁\u200D𑄴.\u200C7\u066C; [B1, C1, C2]; xn--1ug38i2093a.xn--7-xqc297q; ; xn--nhh5394g.xn--7-xqc; [B1] # ⌁𑄴.7٬
+⌁\u200D𑄴.\u200C7\u066C; ; [B1, C1, C2]; xn--1ug38i2093a.xn--7-xqc297q; ; xn--nhh5394g.xn--7-xqc; [B1] # ⌁𑄴.7٬
+xn--nhh5394g.xn--7-xqc; ⌁𑄴.7\u066C; [B1]; xn--nhh5394g.xn--7-xqc; ; ;  # ⌁𑄴.7٬
+xn--1ug38i2093a.xn--7-xqc297q; ⌁\u200D𑄴.\u200C7\u066C; [B1, C1, C2]; xn--1ug38i2093a.xn--7-xqc297q; ; ;  # ⌁𑄴.7٬
+︒\uFD05\u0E37\uFEFC。岓\u1BF2󠾃ᡂ; ︒\u0635\u0649\u0E37\u0644\u0627.岓\u1BF2󠾃ᡂ; [B1, V7]; xn--mgb1a7bt462hf267a.xn--17e10qe61f9r71s; ; ;  # ︒صىืلا.岓᯲ᡂ
+。\u0635\u0649\u0E37\u0644\u0627。岓\u1BF2󠾃ᡂ; .\u0635\u0649\u0E37\u0644\u0627.岓\u1BF2󠾃ᡂ; [V7, X4_2]; .xn--mgb1a7bt462h.xn--17e10qe61f9r71s; [V7, A4_2]; ;  # .صىืلا.岓᯲ᡂ
+.xn--mgb1a7bt462h.xn--17e10qe61f9r71s; .\u0635\u0649\u0E37\u0644\u0627.岓\u1BF2󠾃ᡂ; [V7, X4_2]; .xn--mgb1a7bt462h.xn--17e10qe61f9r71s; [V7, A4_2]; ;  # .صىืلا.岓᯲ᡂ
+xn--mgb1a7bt462hf267a.xn--17e10qe61f9r71s; ︒\u0635\u0649\u0E37\u0644\u0627.岓\u1BF2󠾃ᡂ; [B1, V7]; xn--mgb1a7bt462hf267a.xn--17e10qe61f9r71s; ; ;  # ︒صىืلا.岓᯲ᡂ
 𐹨。8𑁆; 𐹨.8𑁆; [B1]; xn--go0d.xn--8-yu7i; ; ;  # 𐹨.8𑁆
 xn--go0d.xn--8-yu7i; 𐹨.8𑁆; [B1]; xn--go0d.xn--8-yu7i; ; ;  # 𐹨.8𑁆
-𞀕ൃ．ꡚࣺ𐹰ൄ; 𞀕ൃ.ꡚࣺ𐹰ൄ; [B1, B3, B5, B6, V5]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ;  # 𞀕ൃ.ꡚࣺ𐹰ൄ
-𞀕ൃ.ꡚࣺ𐹰ൄ; ; [B1, B3, B5, B6, V5]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ;  # 𞀕ൃ.ꡚࣺ𐹰ൄ
-xn--mxc5210v.xn--90b01t8u2p1ltd; 𞀕ൃ.ꡚࣺ𐹰ൄ; [B1, B3, B5, B6, V5]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ;  # 𞀕ൃ.ꡚࣺ𐹰ൄ
-󆩏𐦹̃｡󠍅; 󆩏𐦹̃.󠍅; [B1, B5, B6, P1, V6]; xn--nsa1265kp9z9e.xn--xt36e; ; ;  # ̃.
-󆩏𐦹̃。󠍅; 󆩏𐦹̃.󠍅; [B1, B5, B6, P1, V6]; xn--nsa1265kp9z9e.xn--xt36e; ; ;  # ̃.
-xn--nsa1265kp9z9e.xn--xt36e; 󆩏𐦹̃.󠍅; [B1, B5, B6, V6]; xn--nsa1265kp9z9e.xn--xt36e; ; ;  # ̃.
-ᢌ．-࡚; ᢌ.-࡚; [V3]; xn--59e.xn----5jd; ; ;  # ᢌ.-࡚
-ᢌ.-࡚; ; [V3]; xn--59e.xn----5jd; ; ;  # ᢌ.-࡚
-xn--59e.xn----5jd; ᢌ.-࡚; [V3]; xn--59e.xn----5jd; ; ;  # ᢌ.-࡚
-𥛛𑘶｡𐹬𐲸்; 𥛛𑘶.𐹬𐲸்; [B1, P1, V6]; xn--jb2dj685c.xn--xmc5562kmcb; ; ;  # 𥛛𑘶.𐹬்
-𥛛𑘶。𐹬𐲸்; 𥛛𑘶.𐹬𐲸்; [B1, P1, V6]; xn--jb2dj685c.xn--xmc5562kmcb; ; ;  # 𥛛𑘶.𐹬்
-xn--jb2dj685c.xn--xmc5562kmcb; 𥛛𑘶.𐹬𐲸்; [B1, V6]; xn--jb2dj685c.xn--xmc5562kmcb; ; ;  # 𥛛𑘶.𐹬்
-Ⴐݿ．‌; Ⴐݿ.‌; [B1, B5, B6, C1, P1, V6]; xn--gqb918b.xn--0ug; ; xn--gqb918b.; [B5, B6, P1, V6] # Ⴐݿ.
-Ⴐݿ.‌; ; [B1, B5, B6, C1, P1, V6]; xn--gqb918b.xn--0ug; ; xn--gqb918b.; [B5, B6, P1, V6] # Ⴐݿ.
-ⴐݿ.‌; ; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; xn--gqb743q.; [B5, B6] # ⴐݿ.
-xn--gqb743q.; ⴐݿ.; [B5, B6]; xn--gqb743q.; ; ;  # ⴐݿ.
-xn--gqb743q.xn--0ug; ⴐݿ.‌; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; ;  # ⴐݿ.
-xn--gqb918b.; Ⴐݿ.; [B5, B6, V6]; xn--gqb918b.; ; ;  # Ⴐݿ.
-xn--gqb918b.xn--0ug; Ⴐݿ.‌; [B1, B5, B6, C1, V6]; xn--gqb918b.xn--0ug; ; ;  # Ⴐݿ.
-ⴐݿ．‌; ⴐݿ.‌; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; xn--gqb743q.; [B5, B6] # ⴐݿ.
-🄅𑲞-⒈。‍ᠩڥ; 🄅𑲞-⒈.‍ᠩڥ; [B1, C2, P1, V6]; xn----ecp8796hjtvg.xn--7jb180gexf; ; xn----ecp8796hjtvg.xn--7jb180g; [B1, B5, B6, P1, V6] # 🄅𑲞-⒈.ᠩڥ
-4,𑲞-1.。‍ᠩڥ; 4,𑲞-1..‍ᠩڥ; [B1, C2, P1, V6, X4_2]; xn--4,-1-w401a..xn--7jb180gexf; [B1, C2, P1, V6, A4_2]; xn--4,-1-w401a..xn--7jb180g; [B1, B5, B6, P1, V6, A4_2] # 4,𑲞-1..ᠩڥ
-xn--4,-1-w401a..xn--7jb180g; 4,𑲞-1..ᠩڥ; [B1, B5, B6, P1, V6, X4_2]; xn--4,-1-w401a..xn--7jb180g; [B1, B5, B6, P1, V6, A4_2]; ;  # 4,𑲞-1..ᠩڥ
-xn--4,-1-w401a..xn--7jb180gexf; 4,𑲞-1..‍ᠩڥ; [B1, C2, P1, V6, X4_2]; xn--4,-1-w401a..xn--7jb180gexf; [B1, C2, P1, V6, A4_2]; ;  # 4,𑲞-1..ᠩڥ
-xn----ecp8796hjtvg.xn--7jb180g; 🄅𑲞-⒈.ᠩڥ; [B1, B5, B6, V6]; xn----ecp8796hjtvg.xn--7jb180g; ; ;  # 🄅𑲞-⒈.ᠩڥ
-xn----ecp8796hjtvg.xn--7jb180gexf; 🄅𑲞-⒈.‍ᠩڥ; [B1, C2, V6]; xn----ecp8796hjtvg.xn--7jb180gexf; ; ;  # 🄅𑲞-⒈.ᠩڥ
-񗀤。𞤪򮿋; 񗀤.𞤪򮿋; [B2, B3, P1, V6]; xn--4240a.xn--ie6h83808a; ; ;  # .𞤪
-񗀤。𞤈򮿋; 񗀤.𞤪򮿋; [B2, B3, P1, V6]; xn--4240a.xn--ie6h83808a; ; ;  # .𞤪
-xn--4240a.xn--ie6h83808a; 񗀤.𞤪򮿋; [B2, B3, V6]; xn--4240a.xn--ie6h83808a; ; ;  # .𞤪
-ׁ۲｡𐮊٬𝨊鄨; ׁ۲.𐮊٬𝨊鄨; [B1, B2, B3, V5]; xn--pdb42d.xn--lib6412enztdwv6h; ; ;  # ׁ۲.𐮊٬𝨊鄨
-ׁ۲。𐮊٬𝨊鄨; ׁ۲.𐮊٬𝨊鄨; [B1, B2, B3, V5]; xn--pdb42d.xn--lib6412enztdwv6h; ; ;  # ׁ۲.𐮊٬𝨊鄨
-xn--pdb42d.xn--lib6412enztdwv6h; ׁ۲.𐮊٬𝨊鄨; [B1, B2, B3, V5]; xn--pdb42d.xn--lib6412enztdwv6h; ; ;  # ׁ۲.𐮊٬𝨊鄨
-𞭳-ꡁ。ᩩ்-; 𞭳-ꡁ.ᩩ்-; [B1, B2, B3, P1, V3, V5, V6]; xn----be4e4276f.xn----lze333i; ; ;  # -ꡁ.ᩩ்-
-xn----be4e4276f.xn----lze333i; 𞭳-ꡁ.ᩩ்-; [B1, B2, B3, V3, V5, V6]; xn----be4e4276f.xn----lze333i; ; ;  # -ꡁ.ᩩ்-
-္-𚮭🞢．ß; ္-𚮭🞢.ß; [P1, V5, V6]; xn----9tg11172akr8b.xn--zca; ; xn----9tg11172akr8b.ss;  # ္-🞢.ß
-္-𚮭🞢.ß; ; [P1, V5, V6]; xn----9tg11172akr8b.xn--zca; ; xn----9tg11172akr8b.ss;  # ္-🞢.ß
-္-𚮭🞢.SS; ္-𚮭🞢.ss; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
-္-𚮭🞢.ss; ; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
-္-𚮭🞢.Ss; ္-𚮭🞢.ss; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
-xn----9tg11172akr8b.ss; ္-𚮭🞢.ss; [V5, V6]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
-xn----9tg11172akr8b.xn--zca; ္-𚮭🞢.ß; [V5, V6]; xn----9tg11172akr8b.xn--zca; ; ;  # ္-🞢.ß
-္-𚮭🞢．SS; ္-𚮭🞢.ss; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
-္-𚮭🞢．ss; ္-𚮭🞢.ss; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
-္-𚮭🞢．Ss; ္-𚮭🞢.ss; [P1, V5, V6]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
-ﳲ-‌｡Ⴟ‌␣; ـَّ-‌.Ⴟ‌␣; [B3, B6, C1, P1, V6]; xn----eoc6bm0504a.xn--3nd849e05c; ; xn----eoc6bm.xn--3nd240h; [B3, B6, P1, V3, V6] # ـَّ-.Ⴟ␣
-ـَّ-‌。Ⴟ‌␣; ـَّ-‌.Ⴟ‌␣; [B3, B6, C1, P1, V6]; xn----eoc6bm0504a.xn--3nd849e05c; ; xn----eoc6bm.xn--3nd240h; [B3, B6, P1, V3, V6] # ـَّ-.Ⴟ␣
-ـَّ-‌。ⴟ‌␣; ـَّ-‌.ⴟ‌␣; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; xn----eoc6bm.xn--xph904a; [B3, B6, V3] # ـَّ-.ⴟ␣
-xn----eoc6bm.xn--xph904a; ـَّ-.ⴟ␣; [B3, B6, V3]; xn----eoc6bm.xn--xph904a; ; ;  # ـَّ-.ⴟ␣
-xn----eoc6bm0504a.xn--0ug13nd0j; ـَّ-‌.ⴟ‌␣; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; ;  # ـَّ-.ⴟ␣
-xn----eoc6bm.xn--3nd240h; ـَّ-.Ⴟ␣; [B3, B6, V3, V6]; xn----eoc6bm.xn--3nd240h; ; ;  # ـَّ-.Ⴟ␣
-xn----eoc6bm0504a.xn--3nd849e05c; ـَّ-‌.Ⴟ‌␣; [B3, B6, C1, V6]; xn----eoc6bm0504a.xn--3nd849e05c; ; ;  # ـَّ-.Ⴟ␣
-ﳲ-‌｡ⴟ‌␣; ـَّ-‌.ⴟ‌␣; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; xn----eoc6bm.xn--xph904a; [B3, B6, V3] # ـَّ-.ⴟ␣
-്-‍‌｡񥞧₅≠; ്-‍‌.񥞧5≠; [C1, C2, P1, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [P1, V3, V5, V6] # ്-.5≠
-്-‍‌｡񥞧₅≠; ്-‍‌.񥞧5≠; [C1, C2, P1, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [P1, V3, V5, V6] # ്-.5≠
-്-‍‌。񥞧5≠; ്-‍‌.񥞧5≠; [C1, C2, P1, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [P1, V3, V5, V6] # ്-.5≠
-്-‍‌。񥞧5≠; ്-‍‌.񥞧5≠; [C1, C2, P1, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [P1, V3, V5, V6] # ്-.5≠
-xn----jmf.xn--5-ufo50192e; ്-.񥞧5≠; [V3, V5, V6]; xn----jmf.xn--5-ufo50192e; ; ;  # ്-.5≠
-xn----jmf215lda.xn--5-ufo50192e; ്-‍‌.񥞧5≠; [C1, C2, V5, V6]; xn----jmf215lda.xn--5-ufo50192e; ; ;  # ്-.5≠
-锣。੍󠘻󠚆; 锣.੍󠘻󠚆; [P1, V5, V6]; xn--gc5a.xn--ybc83044ppga; ; ;  # 锣.੍
-xn--gc5a.xn--ybc83044ppga; 锣.੍󠘻󠚆; [V5, V6]; xn--gc5a.xn--ybc83044ppga; ; ;  # 锣.੍
-ؽ𑈾．ى‍꤫; ؽ𑈾.ى‍꤫; [B3, C2]; xn--8gb2338k.xn--lhb603k060h; ; xn--8gb2338k.xn--lhb0154f; [] # ؽ𑈾.ى꤫
-ؽ𑈾.ى‍꤫; ; [B3, C2]; xn--8gb2338k.xn--lhb603k060h; ; xn--8gb2338k.xn--lhb0154f; [] # ؽ𑈾.ى꤫
-xn--8gb2338k.xn--lhb0154f; ؽ𑈾.ى꤫; ; xn--8gb2338k.xn--lhb0154f; ; ;  # ؽ𑈾.ى꤫
-ؽ𑈾.ى꤫; ; ; xn--8gb2338k.xn--lhb0154f; ; ;  # ؽ𑈾.ى꤫
-xn--8gb2338k.xn--lhb603k060h; ؽ𑈾.ى‍꤫; [B3, C2]; xn--8gb2338k.xn--lhb603k060h; ; ;  # ؽ𑈾.ى꤫
-٦⁴Ⴅ．ࢽ‌; ٦4Ⴅ.ࢽ‌; [B1, B3, C1, P1, V6]; xn--4-kqc489e.xn--jzb840j; ; xn--4-kqc489e.xn--jzb; [B1, P1, V6] # ٦4Ⴅ.ࢽ
-٦4Ⴅ.ࢽ‌; ; [B1, B3, C1, P1, V6]; xn--4-kqc489e.xn--jzb840j; ; xn--4-kqc489e.xn--jzb; [B1, P1, V6] # ٦4Ⴅ.ࢽ
-٦4ⴅ.ࢽ‌; ; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; xn--4-kqc6770a.xn--jzb; [B1] # ٦4ⴅ.ࢽ
-xn--4-kqc6770a.xn--jzb; ٦4ⴅ.ࢽ; [B1]; xn--4-kqc6770a.xn--jzb; ; ;  # ٦4ⴅ.ࢽ
-xn--4-kqc6770a.xn--jzb840j; ٦4ⴅ.ࢽ‌; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; ;  # ٦4ⴅ.ࢽ
-xn--4-kqc489e.xn--jzb; ٦4Ⴅ.ࢽ; [B1, V6]; xn--4-kqc489e.xn--jzb; ; ;  # ٦4Ⴅ.ࢽ
-xn--4-kqc489e.xn--jzb840j; ٦4Ⴅ.ࢽ‌; [B1, B3, C1, V6]; xn--4-kqc489e.xn--jzb840j; ; ;  # ٦4Ⴅ.ࢽ
-٦⁴ⴅ．ࢽ‌; ٦4ⴅ.ࢽ‌; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; xn--4-kqc6770a.xn--jzb; [B1] # ٦4ⴅ.ࢽ
-ჁႱ6̘。ßᬃ; ჁႱ6̘.ßᬃ; [P1, V6]; xn--6-8cb555h2b.xn--zca894k; ; xn--6-8cb555h2b.xn--ss-2vq;  # ჁႱ6̘.ßᬃ
-ⴡⴑ6̘。ßᬃ; ⴡⴑ6̘.ßᬃ; ; xn--6-8cb7433a2ba.xn--zca894k; ; xn--6-8cb7433a2ba.xn--ss-2vq;  # ⴡⴑ6̘.ßᬃ
-ჁႱ6̘。SSᬃ; ჁႱ6̘.ssᬃ; [P1, V6]; xn--6-8cb555h2b.xn--ss-2vq; ; ;  # ჁႱ6̘.ssᬃ
-ⴡⴑ6̘。ssᬃ; ⴡⴑ6̘.ssᬃ; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ;  # ⴡⴑ6̘.ssᬃ
-Ⴡⴑ6̘。Ssᬃ; Ⴡⴑ6̘.ssᬃ; [P1, V6]; xn--6-8cb306hms1a.xn--ss-2vq; ; ;  # Ⴡⴑ6̘.ssᬃ
-xn--6-8cb306hms1a.xn--ss-2vq; Ⴡⴑ6̘.ssᬃ; [V6]; xn--6-8cb306hms1a.xn--ss-2vq; ; ;  # Ⴡⴑ6̘.ssᬃ
-xn--6-8cb7433a2ba.xn--ss-2vq; ⴡⴑ6̘.ssᬃ; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ;  # ⴡⴑ6̘.ssᬃ
-ⴡⴑ6̘.ssᬃ; ; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ;  # ⴡⴑ6̘.ssᬃ
-ჁႱ6̘.SSᬃ; ჁႱ6̘.ssᬃ; [P1, V6]; xn--6-8cb555h2b.xn--ss-2vq; ; ;  # ჁႱ6̘.ssᬃ
-Ⴡⴑ6̘.Ssᬃ; Ⴡⴑ6̘.ssᬃ; [P1, V6]; xn--6-8cb306hms1a.xn--ss-2vq; ; ;  # Ⴡⴑ6̘.ssᬃ
-xn--6-8cb555h2b.xn--ss-2vq; ჁႱ6̘.ssᬃ; [V6]; xn--6-8cb555h2b.xn--ss-2vq; ; ;  # ჁႱ6̘.ssᬃ
-xn--6-8cb7433a2ba.xn--zca894k; ⴡⴑ6̘.ßᬃ; ; xn--6-8cb7433a2ba.xn--zca894k; ; ;  # ⴡⴑ6̘.ßᬃ
-ⴡⴑ6̘.ßᬃ; ; ; xn--6-8cb7433a2ba.xn--zca894k; ; xn--6-8cb7433a2ba.xn--ss-2vq;  # ⴡⴑ6̘.ßᬃ
-xn--6-8cb555h2b.xn--zca894k; ჁႱ6̘.ßᬃ; [V6]; xn--6-8cb555h2b.xn--zca894k; ; ;  # ჁႱ6̘.ßᬃ
-򋡐｡≯𑋪; 򋡐.≯𑋪; [P1, V6]; xn--eo08b.xn--hdh3385g; ; ;  # .≯𑋪
-򋡐｡≯𑋪; 򋡐.≯𑋪; [P1, V6]; xn--eo08b.xn--hdh3385g; ; ;  # .≯𑋪
-򋡐。≯𑋪; 򋡐.≯𑋪; [P1, V6]; xn--eo08b.xn--hdh3385g; ; ;  # .≯𑋪
-򋡐。≯𑋪; 򋡐.≯𑋪; [P1, V6]; xn--eo08b.xn--hdh3385g; ; ;  # .≯𑋪
-xn--eo08b.xn--hdh3385g; 򋡐.≯𑋪; [V6]; xn--eo08b.xn--hdh3385g; ; ;  # .≯𑋪
-ٚ۲。‌-᯳࣢; ٚ۲.‌-᯳࣢; [B1, C1, P1, V5, V6]; xn--2hb81a.xn----xrd657l30d; ; xn--2hb81a.xn----xrd657l; [B1, P1, V3, V5, V6] # ٚ۲.-᯳
-xn--2hb81a.xn----xrd657l; ٚ۲.-᯳࣢; [B1, V3, V5, V6]; xn--2hb81a.xn----xrd657l; ; ;  # ٚ۲.-᯳
-xn--2hb81a.xn----xrd657l30d; ٚ۲.‌-᯳࣢; [B1, C1, V5, V6]; xn--2hb81a.xn----xrd657l30d; ; ;  # ٚ۲.-᯳
-󠄏𖬴󠲽｡ﾠ; 𖬴󠲽.ﾠ; [P1, V5, V6]; xn--619ep9154c.xn--cl7c; ; ;  # 𖬴.
-󠄏𖬴󠲽。ᅠ; 𖬴󠲽.ᅠ; [P1, V5, V6]; xn--619ep9154c.xn--psd; ; ;  # 𖬴.
-xn--619ep9154c.xn--psd; 𖬴󠲽.ᅠ; [V5, V6]; xn--619ep9154c.xn--psd; ; ;  # 𖬴.
-xn--619ep9154c.xn--cl7c; 𖬴󠲽.ﾠ; [V5, V6]; xn--619ep9154c.xn--cl7c; ; ;  # 𖬴.
-ß⒈ݠ힮．􉖲󠅄؅򉔯; ß⒈ݠ힮.􉖲؅򉔯; [B5, P1, V6]; xn--zca444a0s1ao12n.xn--nfb09923ifkyyb; ; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb;  # ß⒈ݠ.
-ß1.ݠ힮.􉖲󠅄؅򉔯; ß1.ݠ힮.􉖲؅򉔯; [B2, B3, B5, P1, V6]; xn--1-pfa.xn--kpb6677h.xn--nfb09923ifkyyb; ; ss1.xn--kpb6677h.xn--nfb09923ifkyyb;  # ß1.ݠ.
-SS1.ݠ힮.􉖲󠅄؅򉔯; ss1.ݠ힮.􉖲؅򉔯; [B2, B3, B5, P1, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ;  # ss1.ݠ.
-ss1.ݠ힮.􉖲󠅄؅򉔯; ss1.ݠ힮.􉖲؅򉔯; [B2, B3, B5, P1, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ;  # ss1.ݠ.
-Ss1.ݠ힮.􉖲󠅄؅򉔯; ss1.ݠ힮.􉖲؅򉔯; [B2, B3, B5, P1, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ;  # ss1.ݠ.
-ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ss1.ݠ힮.􉖲؅򉔯; [B2, B3, B5, V6]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ;  # ss1.ݠ.
-xn--1-pfa.xn--kpb6677h.xn--nfb09923ifkyyb; ß1.ݠ힮.􉖲؅򉔯; [B2, B3, B5, V6]; xn--1-pfa.xn--kpb6677h.xn--nfb09923ifkyyb; ; ;  # ß1.ݠ.
-SS⒈ݠ힮．􉖲󠅄؅򉔯; ss⒈ݠ힮.􉖲؅򉔯; [B5, P1, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ;  # ss⒈ݠ.
-ss⒈ݠ힮．􉖲󠅄؅򉔯; ss⒈ݠ힮.􉖲؅򉔯; [B5, P1, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ;  # ss⒈ݠ.
-Ss⒈ݠ힮．􉖲󠅄؅򉔯; ss⒈ݠ힮.􉖲؅򉔯; [B5, P1, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ;  # ss⒈ݠ.
-xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ss⒈ݠ힮.􉖲؅򉔯; [B5, V6]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ;  # ss⒈ݠ.
-xn--zca444a0s1ao12n.xn--nfb09923ifkyyb; ß⒈ݠ힮.􉖲؅򉔯; [B5, V6]; xn--zca444a0s1ao12n.xn--nfb09923ifkyyb; ; ;  # ß⒈ݠ.
-󠭔.𐋱₂; 󠭔.𐋱2; [P1, V6]; xn--vi56e.xn--2-w91i; ; ;  # .𐋱2
-󠭔.𐋱2; ; [P1, V6]; xn--vi56e.xn--2-w91i; ; ;  # .𐋱2
-xn--vi56e.xn--2-w91i; 󠭔.𐋱2; [V6]; xn--vi56e.xn--2-w91i; ; ;  # .𐋱2
-ܖे。-ßڥ‌; ܖे.-ßڥ‌; [B1, C1, V3]; xn--gnb63i.xn----qfa845bhx4a; ; xn--gnb63i.xn---ss-4ef; [B1, V3] # ܖे.-ßڥ
-ܖे。-SSڥ‌; ܖे.-ssڥ‌; [B1, C1, V3]; xn--gnb63i.xn---ss-4ef9263a; ; xn--gnb63i.xn---ss-4ef; [B1, V3] # ܖे.-ssڥ
-ܖे。-ssڥ‌; ܖे.-ssڥ‌; [B1, C1, V3]; xn--gnb63i.xn---ss-4ef9263a; ; xn--gnb63i.xn---ss-4ef; [B1, V3] # ܖे.-ssڥ
-ܖे。-Ssڥ‌; ܖे.-ssڥ‌; [B1, C1, V3]; xn--gnb63i.xn---ss-4ef9263a; ; xn--gnb63i.xn---ss-4ef; [B1, V3] # ܖे.-ssڥ
-xn--gnb63i.xn---ss-4ef; ܖे.-ssڥ; [B1, V3]; xn--gnb63i.xn---ss-4ef; ; ;  # ܖे.-ssڥ
-xn--gnb63i.xn---ss-4ef9263a; ܖे.-ssڥ‌; [B1, C1, V3]; xn--gnb63i.xn---ss-4ef9263a; ; ;  # ܖे.-ssڥ
-xn--gnb63i.xn----qfa845bhx4a; ܖे.-ßڥ‌; [B1, C1, V3]; xn--gnb63i.xn----qfa845bhx4a; ; ;  # ܖे.-ßڥ
-ᮩ‍ت񡚈．᳕䷉Ⴡ; ᮩ‍ت񡚈.᳕䷉Ⴡ; [B1, C2, P1, V5, V6]; xn--pgb911imgdrw34r.xn--5nd792dgv3b; ; xn--pgb911izv33i.xn--5nd792dgv3b; [B1, P1, V5, V6] # ᮩت.᳕䷉Ⴡ
-ᮩ‍ت񡚈.᳕䷉Ⴡ; ; [B1, C2, P1, V5, V6]; xn--pgb911imgdrw34r.xn--5nd792dgv3b; ; xn--pgb911izv33i.xn--5nd792dgv3b; [B1, P1, V5, V6] # ᮩت.᳕䷉Ⴡ
-ᮩ‍ت񡚈.᳕䷉ⴡ; ; [B1, C2, P1, V5, V6]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; xn--pgb911izv33i.xn--i6f270etuy; [B1, P1, V5, V6] # ᮩت.᳕䷉ⴡ
-xn--pgb911izv33i.xn--i6f270etuy; ᮩت񡚈.᳕䷉ⴡ; [B1, V5, V6]; xn--pgb911izv33i.xn--i6f270etuy; ; ;  # ᮩت.᳕䷉ⴡ
-xn--pgb911imgdrw34r.xn--i6f270etuy; ᮩ‍ت񡚈.᳕䷉ⴡ; [B1, C2, V5, V6]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; ;  # ᮩت.᳕䷉ⴡ
-xn--pgb911izv33i.xn--5nd792dgv3b; ᮩت񡚈.᳕䷉Ⴡ; [B1, V5, V6]; xn--pgb911izv33i.xn--5nd792dgv3b; ; ;  # ᮩت.᳕䷉Ⴡ
-xn--pgb911imgdrw34r.xn--5nd792dgv3b; ᮩ‍ت񡚈.᳕䷉Ⴡ; [B1, C2, V5, V6]; xn--pgb911imgdrw34r.xn--5nd792dgv3b; ; ;  # ᮩت.᳕䷉Ⴡ
-ᮩ‍ت񡚈．᳕䷉ⴡ; ᮩ‍ت񡚈.᳕䷉ⴡ; [B1, C2, P1, V5, V6]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; xn--pgb911izv33i.xn--i6f270etuy; [B1, P1, V5, V6] # ᮩت.᳕䷉ⴡ
-⶿.ß‍; ; [C2, P1, V6]; xn--7pj.xn--zca870n; ; xn--7pj.ss; [P1, V6] # .ß
-⶿.SS‍; ⶿.ss‍; [C2, P1, V6]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [P1, V6] # .ss
-⶿.ss‍; ; [C2, P1, V6]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [P1, V6] # .ss
-⶿.Ss‍; ⶿.ss‍; [C2, P1, V6]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [P1, V6] # .ss
-xn--7pj.ss; ⶿.ss; [V6]; xn--7pj.ss; ; ;  # .ss
-xn--7pj.xn--ss-n1t; ⶿.ss‍; [C2, V6]; xn--7pj.xn--ss-n1t; ; ;  # .ss
-xn--7pj.xn--zca870n; ⶿.ß‍; [C2, V6]; xn--7pj.xn--zca870n; ; ;  # .ß
-᯳︒.ت≯ꡂ; ; [B2, B3, B6, P1, V5, V6]; xn--1zf8957g.xn--pgb885lry5g; ; ;  # ᯳︒.ت≯ꡂ
-᯳︒.ت≯ꡂ; ᯳︒.ت≯ꡂ; [B2, B3, B6, P1, V5, V6]; xn--1zf8957g.xn--pgb885lry5g; ; ;  # ᯳︒.ت≯ꡂ
-᯳。.ت≯ꡂ; ᯳..ت≯ꡂ; [B2, B3, P1, V5, V6, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, P1, V5, V6, A4_2]; ;  # ᯳..ت≯ꡂ
-᯳。.ت≯ꡂ; ᯳..ت≯ꡂ; [B2, B3, P1, V5, V6, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, P1, V5, V6, A4_2]; ;  # ᯳..ت≯ꡂ
-xn--1zf..xn--pgb885lry5g; ᯳..ت≯ꡂ; [B2, B3, V5, V6, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, V5, V6, A4_2]; ;  # ᯳..ت≯ꡂ
-xn--1zf8957g.xn--pgb885lry5g; ᯳︒.ت≯ꡂ; [B2, B3, B6, V5, V6]; xn--1zf8957g.xn--pgb885lry5g; ; ;  # ᯳︒.ت≯ꡂ
-≮≠񏻃｡-𫠆ڷ𐹪; ≮≠񏻃.-𫠆ڷ𐹪; [B1, P1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ;  # ≮≠.-𫠆ڷ𐹪
-≮≠񏻃｡-𫠆ڷ𐹪; ≮≠񏻃.-𫠆ڷ𐹪; [B1, P1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ;  # ≮≠.-𫠆ڷ𐹪
-≮≠񏻃。-𫠆ڷ𐹪; ≮≠񏻃.-𫠆ڷ𐹪; [B1, P1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ;  # ≮≠.-𫠆ڷ𐹪
-≮≠񏻃。-𫠆ڷ𐹪; ≮≠񏻃.-𫠆ڷ𐹪; [B1, P1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ;  # ≮≠.-𫠆ڷ𐹪
-xn--1ch1a29470f.xn----7uc5363rc1rn; ≮≠񏻃.-𫠆ڷ𐹪; [B1, V3, V6]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ;  # ≮≠.-𫠆ڷ𐹪
-𐹡ݷ。ꡂ; 𐹡ݷ.ꡂ; [B1]; xn--7pb5275k.xn--bc9a; ; ;  # 𐹡ݷ.ꡂ
-xn--7pb5275k.xn--bc9a; 𐹡ݷ.ꡂ; [B1]; xn--7pb5275k.xn--bc9a; ; ;  # 𐹡ݷ.ꡂ
-Ⴉ𝆅񔻅ؙ.ß𐧦𐹳ݵ; ; [B5, B6, P1, V6]; xn--7fb125cjv87a7xvz.xn--zca684a699vf2d; ; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e;  # Ⴉؙ𝆅.ß𐧦𐹳ݵ
-ⴉ𝆅񔻅ؙ.ß𐧦𐹳ݵ; ; [B5, B6, P1, V6]; xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; ; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e;  # ⴉؙ𝆅.ß𐧦𐹳ݵ
-Ⴉ𝆅񔻅ؙ.SS𐧦𐹳ݵ; Ⴉ𝆅񔻅ؙ.ss𐧦𐹳ݵ; [B5, B6, P1, V6]; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; ; ;  # Ⴉؙ𝆅.ss𐧦𐹳ݵ
-ⴉ𝆅񔻅ؙ.ss𐧦𐹳ݵ; ; [B5, B6, P1, V6]; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ; ;  # ⴉؙ𝆅.ss𐧦𐹳ݵ
-Ⴉ𝆅񔻅ؙ.Ss𐧦𐹳ݵ; Ⴉ𝆅񔻅ؙ.ss𐧦𐹳ݵ; [B5, B6, P1, V6]; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; ; ;  # Ⴉؙ𝆅.ss𐧦𐹳ݵ
-xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; Ⴉ𝆅񔻅ؙ.ss𐧦𐹳ݵ; [B5, B6, V6]; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; ; ;  # Ⴉؙ𝆅.ss𐧦𐹳ݵ
-xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ⴉ𝆅񔻅ؙ.ss𐧦𐹳ݵ; [B5, B6, V6]; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ; ;  # ⴉؙ𝆅.ss𐧦𐹳ݵ
-xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; ⴉ𝆅񔻅ؙ.ß𐧦𐹳ݵ; [B5, B6, V6]; xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; ; ;  # ⴉؙ𝆅.ß𐧦𐹳ݵ
-xn--7fb125cjv87a7xvz.xn--zca684a699vf2d; Ⴉ𝆅񔻅ؙ.ß𐧦𐹳ݵ; [B5, B6, V6]; xn--7fb125cjv87a7xvz.xn--zca684a699vf2d; ; ;  # Ⴉؙ𝆅.ß𐧦𐹳ݵ
-‍ك𐧾↙.񊽡; ; [B1, C2, P1, V6]; xn--fhb713k87ag053c.xn--7s4w; ; xn--fhb011lnp8n.xn--7s4w; [B3, P1, V6] # ك𐧾↙.
-xn--fhb011lnp8n.xn--7s4w; ك𐧾↙.񊽡; [B3, V6]; xn--fhb011lnp8n.xn--7s4w; ; ;  # ك𐧾↙.
-xn--fhb713k87ag053c.xn--7s4w; ‍ك𐧾↙.񊽡; [B1, C2, V6]; xn--fhb713k87ag053c.xn--7s4w; ; ;  # ك𐧾↙.
-梉。‌; 梉.‌; [C1]; xn--7zv.xn--0ug; ; xn--7zv.; [] # 梉.
-xn--7zv.; 梉.; ; xn--7zv.; ; ;  # 梉.
-梉.; ; ; xn--7zv.; ; ;  # 梉.
-xn--7zv.xn--0ug; 梉.‌; [C1]; xn--7zv.xn--0ug; ; ;  # 梉.
-ꡣ-≠.‍𞤗𐅢Ↄ; ꡣ-≠.‍𞤹𐅢Ↄ; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug79cm620c71sh; ; xn----ufo9661d.xn--q5g0929fhm4f; [B2, B3, B6, P1, V6] # ꡣ-≠.𞤹𐅢Ↄ
-ꡣ-≠.‍𞤗𐅢Ↄ; ꡣ-≠.‍𞤹𐅢Ↄ; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug79cm620c71sh; ; xn----ufo9661d.xn--q5g0929fhm4f; [B2, B3, B6, P1, V6] # ꡣ-≠.𞤹𐅢Ↄ
-ꡣ-≠.‍𞤹𐅢ↄ; ꡣ-≠.‍𞤹𐅢ↄ; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6, P1, V6] # ꡣ-≠.𞤹𐅢ↄ
-ꡣ-≠.‍𞤹𐅢ↄ; ; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6, P1, V6] # ꡣ-≠.𞤹𐅢ↄ
-ꡣ-≠.‍𞤗𐅢ↄ; ꡣ-≠.‍𞤹𐅢ↄ; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6, P1, V6] # ꡣ-≠.𞤹𐅢ↄ
-ꡣ-≠.‍𞤗𐅢ↄ; ꡣ-≠.‍𞤹𐅢ↄ; [B1, B6, C2, P1, V6]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6, P1, V6] # ꡣ-≠.𞤹𐅢ↄ
-xn----ufo9661d.xn--r5gy929fhm4f; ꡣ-≠.𞤹𐅢ↄ; [B2, B3, B6, V6]; xn----ufo9661d.xn--r5gy929fhm4f; ; ;  # ꡣ-≠.𞤹𐅢ↄ
-xn----ufo9661d.xn--1ug99cj620c71sh; ꡣ-≠.‍𞤹𐅢ↄ; [B1, B6, C2, V6]; xn----ufo9661d.xn--1ug99cj620c71sh; ; ;  # ꡣ-≠.𞤹𐅢ↄ
-xn----ufo9661d.xn--q5g0929fhm4f; ꡣ-≠.𞤹𐅢Ↄ; [B2, B3, B6, V6]; xn----ufo9661d.xn--q5g0929fhm4f; ; ;  # ꡣ-≠.𞤹𐅢Ↄ
-xn----ufo9661d.xn--1ug79cm620c71sh; ꡣ-≠.‍𞤹𐅢Ↄ; [B1, B6, C2, V6]; xn----ufo9661d.xn--1ug79cm620c71sh; ; ;  # ꡣ-≠.𞤹𐅢Ↄ
-ς⒐𝆫⸵｡𐱢🄊𝟳; ς⒐𝆫⸵.𐱢🄊7; [B6, P1, V6]; xn--3xa019nwtghi25b.xn--7-075iy877c; ; xn--4xa809nwtghi25b.xn--7-075iy877c;  # ς⒐𝆫⸵.🄊7
-ς9.𝆫⸵。𐱢9,7; ς9.𝆫⸵.𐱢9,7; [B1, P1, V5, V6]; xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; ; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t;  # ς9.𝆫⸵.9,7
-Σ9.𝆫⸵。𐱢9,7; σ9.𝆫⸵.𐱢9,7; [B1, P1, V5, V6]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ;  # σ9.𝆫⸵.9,7
-σ9.𝆫⸵。𐱢9,7; σ9.𝆫⸵.𐱢9,7; [B1, P1, V5, V6]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ;  # σ9.𝆫⸵.9,7
-xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; σ9.𝆫⸵.𐱢9,7; [B1, P1, V5, V6]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ;  # σ9.𝆫⸵.9,7
-xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; ς9.𝆫⸵.𐱢9,7; [B1, P1, V5, V6]; xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; ; ;  # ς9.𝆫⸵.9,7
-Σ⒐𝆫⸵｡𐱢🄊𝟳; σ⒐𝆫⸵.𐱢🄊7; [B6, P1, V6]; xn--4xa809nwtghi25b.xn--7-075iy877c; ; ;  # σ⒐𝆫⸵.🄊7
-σ⒐𝆫⸵｡𐱢🄊𝟳; σ⒐𝆫⸵.𐱢🄊7; [B6, P1, V6]; xn--4xa809nwtghi25b.xn--7-075iy877c; ; ;  # σ⒐𝆫⸵.🄊7
-xn--4xa809nwtghi25b.xn--7-075iy877c; σ⒐𝆫⸵.𐱢🄊7; [B6, V6]; xn--4xa809nwtghi25b.xn--7-075iy877c; ; ;  # σ⒐𝆫⸵.🄊7
-xn--3xa019nwtghi25b.xn--7-075iy877c; ς⒐𝆫⸵.𐱢🄊7; [B6, V6]; xn--3xa019nwtghi25b.xn--7-075iy877c; ; ;  # ς⒐𝆫⸵.🄊7
-ࡓ．‌ß; ࡓ.‌ß; [B1, C1]; xn--iwb.xn--zca570n; ; xn--iwb.ss; [] # ࡓ.ß
-ࡓ.‌ß; ; [B1, C1]; xn--iwb.xn--zca570n; ; xn--iwb.ss; [] # ࡓ.ß
-ࡓ.‌SS; ࡓ.‌ss; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
-ࡓ.‌ss; ; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
-xn--iwb.ss; ࡓ.ss; ; xn--iwb.ss; ; ;  # ࡓ.ss
-ࡓ.ss; ; ; xn--iwb.ss; ; ;  # ࡓ.ss
-ࡓ.SS; ࡓ.ss; ; xn--iwb.ss; ; ;  # ࡓ.ss
-xn--iwb.xn--ss-i1t; ࡓ.‌ss; [B1, C1]; xn--iwb.xn--ss-i1t; ; ;  # ࡓ.ss
-xn--iwb.xn--zca570n; ࡓ.‌ß; [B1, C1]; xn--iwb.xn--zca570n; ; ;  # ࡓ.ß
-ࡓ．‌SS; ࡓ.‌ss; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
-ࡓ．‌ss; ࡓ.‌ss; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
-ࡓ.‌Ss; ࡓ.‌ss; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
-ࡓ．‌Ss; ࡓ.‌ss; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
-񯶣-.‍ݎꥍ󠻨; ; [B1, B6, C2, P1, V3, V6]; xn----s116e.xn--1ob387jy90hq459k; ; xn----s116e.xn--1ob6504fmf40i; [B3, B6, P1, V3, V6] # -.ݎꥍ
-xn----s116e.xn--1ob6504fmf40i; 񯶣-.ݎꥍ󠻨; [B3, B6, V3, V6]; xn----s116e.xn--1ob6504fmf40i; ; ;  # -.ݎꥍ
-xn----s116e.xn--1ob387jy90hq459k; 񯶣-.‍ݎꥍ󠻨; [B1, B6, C2, V3, V6]; xn----s116e.xn--1ob387jy90hq459k; ; ;  # -.ݎꥍ
-䃚蟥-。-񽒘⒈; 䃚蟥-.-񽒘⒈; [P1, V3, V6]; xn----n50a258u.xn----ecp33805f; ; ;  # 䃚蟥-.-⒈
-䃚蟥-。-񽒘1.; 䃚蟥-.-񽒘1.; [P1, V3, V6]; xn----n50a258u.xn---1-up07j.; ; ;  # 䃚蟥-.-1.
-xn----n50a258u.xn---1-up07j.; 䃚蟥-.-񽒘1.; [V3, V6]; xn----n50a258u.xn---1-up07j.; ; ;  # 䃚蟥-.-1.
-xn----n50a258u.xn----ecp33805f; 䃚蟥-.-񽒘⒈; [V3, V6]; xn----n50a258u.xn----ecp33805f; ; ;  # 䃚蟥-.-⒈
+𞀕\u0D43．ꡚ\u08FA𐹰\u0D44; 𞀕\u0D43.ꡚ\u08FA𐹰\u0D44; [B1, B5, B6, V6]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ;  # 𞀕ൃ.ꡚࣺ𐹰ൄ
+𞀕\u0D43.ꡚ\u08FA𐹰\u0D44; ; [B1, B5, B6, V6]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ;  # 𞀕ൃ.ꡚࣺ𐹰ൄ
+xn--mxc5210v.xn--90b01t8u2p1ltd; 𞀕\u0D43.ꡚ\u08FA𐹰\u0D44; [B1, B5, B6, V6]; xn--mxc5210v.xn--90b01t8u2p1ltd; ; ;  # 𞀕ൃ.ꡚࣺ𐹰ൄ
+󆩏𐦹\u0303｡󠍅; 󆩏𐦹\u0303.󠍅; [B1, B5, B6, V7]; xn--nsa1265kp9z9e.xn--xt36e; ; ;  # ̃.
+󆩏𐦹\u0303。󠍅; 󆩏𐦹\u0303.󠍅; [B1, B5, B6, V7]; xn--nsa1265kp9z9e.xn--xt36e; ; ;  # ̃.
+xn--nsa1265kp9z9e.xn--xt36e; 󆩏𐦹\u0303.󠍅; [B1, B5, B6, V7]; xn--nsa1265kp9z9e.xn--xt36e; ; ;  # ̃.
+ᢌ．-\u085A; ᢌ.-\u085A; [V3]; xn--59e.xn----5jd; ; ;  # ᢌ.-࡚
+ᢌ.-\u085A; ; [V3]; xn--59e.xn----5jd; ; ;  # ᢌ.-࡚
+xn--59e.xn----5jd; ᢌ.-\u085A; [V3]; xn--59e.xn----5jd; ; ;  # ᢌ.-࡚
+𥛛𑘶｡𐹬𐲸\u0BCD; 𥛛𑘶.𐹬𐲸\u0BCD; [B1, V7]; xn--jb2dj685c.xn--xmc5562kmcb; ; ;  # 𥛛𑘶.𐹬்
+𥛛𑘶。𐹬𐲸\u0BCD; 𥛛𑘶.𐹬𐲸\u0BCD; [B1, V7]; xn--jb2dj685c.xn--xmc5562kmcb; ; ;  # 𥛛𑘶.𐹬்
+xn--jb2dj685c.xn--xmc5562kmcb; 𥛛𑘶.𐹬𐲸\u0BCD; [B1, V7]; xn--jb2dj685c.xn--xmc5562kmcb; ; ;  # 𥛛𑘶.𐹬்
+Ⴐ\u077F．\u200C; ⴐ\u077F.\u200C; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; xn--gqb743q.; [B5, B6, A4_2] # ⴐݿ.
+Ⴐ\u077F.\u200C; ⴐ\u077F.\u200C; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; xn--gqb743q.; [B5, B6, A4_2] # ⴐݿ.
+ⴐ\u077F.\u200C; ; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; xn--gqb743q.; [B5, B6, A4_2] # ⴐݿ.
+xn--gqb743q.; ⴐ\u077F.; [B5, B6]; xn--gqb743q.; [B5, B6, A4_2]; ;  # ⴐݿ.
+xn--gqb743q.xn--0ug; ⴐ\u077F.\u200C; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; ;  # ⴐݿ.
+ⴐ\u077F．\u200C; ⴐ\u077F.\u200C; [B1, B5, B6, C1]; xn--gqb743q.xn--0ug; ; xn--gqb743q.; [B5, B6, A4_2] # ⴐݿ.
+xn--gqb918b.; Ⴐ\u077F.; [B5, B6, V7]; xn--gqb918b.; [B5, B6, V7, A4_2]; ;  # Ⴐݿ.
+xn--gqb918b.xn--0ug; Ⴐ\u077F.\u200C; [B1, B5, B6, C1, V7]; xn--gqb918b.xn--0ug; ; ;  # Ⴐݿ.
+🄅𑲞-⒈。\u200Dᠩ\u06A5; 4,𑲞-⒈.\u200Dᠩ\u06A5; [B1, C2, V7, U1]; xn--4,--je4aw745l.xn--7jb180gexf; ; xn--4,--je4aw745l.xn--7jb180g; [B1, B5, B6, V7, U1] # 4,𑲞-⒈.ᠩڥ
+4,𑲞-1.。\u200Dᠩ\u06A5; 4,𑲞-1..\u200Dᠩ\u06A5; [B1, C2, U1, X4_2]; xn--4,-1-w401a..xn--7jb180gexf; [B1, C2, U1, A4_2]; xn--4,-1-w401a..xn--7jb180g; [B1, B5, B6, U1, A4_2] # 4,𑲞-1..ᠩڥ
+xn--4,-1-w401a..xn--7jb180g; 4,𑲞-1..ᠩ\u06A5; [B1, B5, B6, U1, X4_2]; xn--4,-1-w401a..xn--7jb180g; [B1, B5, B6, U1, A4_2]; ;  # 4,𑲞-1..ᠩڥ
+xn--4,-1-w401a..xn--7jb180gexf; 4,𑲞-1..\u200Dᠩ\u06A5; [B1, C2, U1, X4_2]; xn--4,-1-w401a..xn--7jb180gexf; [B1, C2, U1, A4_2]; ;  # 4,𑲞-1..ᠩڥ
+xn--4,--je4aw745l.xn--7jb180g; 4,𑲞-⒈.ᠩ\u06A5; [B1, B5, B6, V7, U1]; xn--4,--je4aw745l.xn--7jb180g; ; ;  # 4,𑲞-⒈.ᠩڥ
+xn--4,--je4aw745l.xn--7jb180gexf; 4,𑲞-⒈.\u200Dᠩ\u06A5; [B1, C2, V7, U1]; xn--4,--je4aw745l.xn--7jb180gexf; ; ;  # 4,𑲞-⒈.ᠩڥ
+xn----ecp8796hjtvg.xn--7jb180g; 🄅𑲞-⒈.ᠩ\u06A5; [B1, B5, B6, V7]; xn----ecp8796hjtvg.xn--7jb180g; ; ;  # 🄅𑲞-⒈.ᠩڥ
+xn----ecp8796hjtvg.xn--7jb180gexf; 🄅𑲞-⒈.\u200Dᠩ\u06A5; [B1, C2, V7]; xn----ecp8796hjtvg.xn--7jb180gexf; ; ;  # 🄅𑲞-⒈.ᠩڥ
+񗀤。𞤪򮿋; 񗀤.𞤪򮿋; [B2, B3, V7]; xn--4240a.xn--ie6h83808a; ; ;  # .𞤪
+񗀤。𞤈򮿋; 񗀤.𞤪򮿋; [B2, B3, V7]; xn--4240a.xn--ie6h83808a; ; ;  # .𞤪
+xn--4240a.xn--ie6h83808a; 񗀤.𞤪򮿋; [B2, B3, V7]; xn--4240a.xn--ie6h83808a; ; ;  # .𞤪
+\u05C1۲｡𐮊\u066C𝨊鄨; \u05C1۲.𐮊\u066C𝨊鄨; [B1, B2, B3, V6]; xn--pdb42d.xn--lib6412enztdwv6h; ; ;  # ׁ۲.𐮊٬𝨊鄨
+\u05C1۲。𐮊\u066C𝨊鄨; \u05C1۲.𐮊\u066C𝨊鄨; [B1, B2, B3, V6]; xn--pdb42d.xn--lib6412enztdwv6h; ; ;  # ׁ۲.𐮊٬𝨊鄨
+xn--pdb42d.xn--lib6412enztdwv6h; \u05C1۲.𐮊\u066C𝨊鄨; [B1, B2, B3, V6]; xn--pdb42d.xn--lib6412enztdwv6h; ; ;  # ׁ۲.𐮊٬𝨊鄨
+𞭳-ꡁ。\u1A69\u0BCD-; 𞭳-ꡁ.\u1A69\u0BCD-; [B1, B2, B3, V3, V6, V7]; xn----be4e4276f.xn----lze333i; ; ;  # -ꡁ.ᩩ்-
+xn----be4e4276f.xn----lze333i; 𞭳-ꡁ.\u1A69\u0BCD-; [B1, B2, B3, V3, V6, V7]; xn----be4e4276f.xn----lze333i; ; ;  # -ꡁ.ᩩ்-
+\u1039-𚮭🞢．ß; \u1039-𚮭🞢.ß; [V6, V7]; xn----9tg11172akr8b.xn--zca; ; xn----9tg11172akr8b.ss;  # ္-🞢.ß
+\u1039-𚮭🞢.ß; ; [V6, V7]; xn----9tg11172akr8b.xn--zca; ; xn----9tg11172akr8b.ss;  # ္-🞢.ß
+\u1039-𚮭🞢.SS; \u1039-𚮭🞢.ss; [V6, V7]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
+\u1039-𚮭🞢.ss; ; [V6, V7]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
+\u1039-𚮭🞢.Ss; \u1039-𚮭🞢.ss; [V6, V7]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
+xn----9tg11172akr8b.ss; \u1039-𚮭🞢.ss; [V6, V7]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
+xn----9tg11172akr8b.xn--zca; \u1039-𚮭🞢.ß; [V6, V7]; xn----9tg11172akr8b.xn--zca; ; ;  # ္-🞢.ß
+\u1039-𚮭🞢．SS; \u1039-𚮭🞢.ss; [V6, V7]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
+\u1039-𚮭🞢．ss; \u1039-𚮭🞢.ss; [V6, V7]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
+\u1039-𚮭🞢．Ss; \u1039-𚮭🞢.ss; [V6, V7]; xn----9tg11172akr8b.ss; ; ;  # ္-🞢.ss
+\uFCF2-\u200C｡Ⴟ\u200C␣; \u0640\u064E\u0651-\u200C.ⴟ\u200C␣; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; xn----eoc6bm.xn--xph904a; [B3, B6, V3] # ـَّ-.ⴟ␣
+\u0640\u064E\u0651-\u200C。Ⴟ\u200C␣; \u0640\u064E\u0651-\u200C.ⴟ\u200C␣; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; xn----eoc6bm.xn--xph904a; [B3, B6, V3] # ـَّ-.ⴟ␣
+\u0640\u064E\u0651-\u200C。ⴟ\u200C␣; \u0640\u064E\u0651-\u200C.ⴟ\u200C␣; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; xn----eoc6bm.xn--xph904a; [B3, B6, V3] # ـَّ-.ⴟ␣
+xn----eoc6bm.xn--xph904a; \u0640\u064E\u0651-.ⴟ␣; [B3, B6, V3]; xn----eoc6bm.xn--xph904a; ; ;  # ـَّ-.ⴟ␣
+xn----eoc6bm0504a.xn--0ug13nd0j; \u0640\u064E\u0651-\u200C.ⴟ\u200C␣; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; ;  # ـَّ-.ⴟ␣
+\uFCF2-\u200C｡ⴟ\u200C␣; \u0640\u064E\u0651-\u200C.ⴟ\u200C␣; [B3, B6, C1]; xn----eoc6bm0504a.xn--0ug13nd0j; ; xn----eoc6bm.xn--xph904a; [B3, B6, V3] # ـَّ-.ⴟ␣
+xn----eoc6bm.xn--3nd240h; \u0640\u064E\u0651-.Ⴟ␣; [B3, B6, V3, V7]; xn----eoc6bm.xn--3nd240h; ; ;  # ـَّ-.Ⴟ␣
+xn----eoc6bm0504a.xn--3nd849e05c; \u0640\u064E\u0651-\u200C.Ⴟ\u200C␣; [B3, B6, C1, V7]; xn----eoc6bm0504a.xn--3nd849e05c; ; ;  # ـَّ-.Ⴟ␣
+\u0D4D-\u200D\u200C｡񥞧₅≠; \u0D4D-\u200D\u200C.񥞧5≠; [C1, C2, V6, V7]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [V3, V6, V7] # ്-.5≠
+\u0D4D-\u200D\u200C｡񥞧₅=\u0338; \u0D4D-\u200D\u200C.񥞧5≠; [C1, C2, V6, V7]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [V3, V6, V7] # ്-.5≠
+\u0D4D-\u200D\u200C。񥞧5≠; \u0D4D-\u200D\u200C.񥞧5≠; [C1, C2, V6, V7]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [V3, V6, V7] # ്-.5≠
+\u0D4D-\u200D\u200C。񥞧5=\u0338; \u0D4D-\u200D\u200C.񥞧5≠; [C1, C2, V6, V7]; xn----jmf215lda.xn--5-ufo50192e; ; xn----jmf.xn--5-ufo50192e; [V3, V6, V7] # ്-.5≠
+xn----jmf.xn--5-ufo50192e; \u0D4D-.񥞧5≠; [V3, V6, V7]; xn----jmf.xn--5-ufo50192e; ; ;  # ്-.5≠
+xn----jmf215lda.xn--5-ufo50192e; \u0D4D-\u200D\u200C.񥞧5≠; [C1, C2, V6, V7]; xn----jmf215lda.xn--5-ufo50192e; ; ;  # ്-.5≠
+锣。\u0A4D󠘻󠚆; 锣.\u0A4D󠘻󠚆; [V6, V7]; xn--gc5a.xn--ybc83044ppga; ; ;  # 锣.੍
+xn--gc5a.xn--ybc83044ppga; 锣.\u0A4D󠘻󠚆; [V6, V7]; xn--gc5a.xn--ybc83044ppga; ; ;  # 锣.੍
+\u063D𑈾．\u0649\u200D\uA92B; \u063D𑈾.\u0649\u200D\uA92B; [B3, C2]; xn--8gb2338k.xn--lhb603k060h; ; xn--8gb2338k.xn--lhb0154f; [] # ؽ𑈾.ى꤫
+\u063D𑈾.\u0649\u200D\uA92B; ; [B3, C2]; xn--8gb2338k.xn--lhb603k060h; ; xn--8gb2338k.xn--lhb0154f; [] # ؽ𑈾.ى꤫
+xn--8gb2338k.xn--lhb0154f; \u063D𑈾.\u0649\uA92B; ; xn--8gb2338k.xn--lhb0154f; ; ;  # ؽ𑈾.ى꤫
+\u063D𑈾.\u0649\uA92B; ; ; xn--8gb2338k.xn--lhb0154f; ; ;  # ؽ𑈾.ى꤫
+xn--8gb2338k.xn--lhb603k060h; \u063D𑈾.\u0649\u200D\uA92B; [B3, C2]; xn--8gb2338k.xn--lhb603k060h; ; ;  # ؽ𑈾.ى꤫
+\u0666⁴Ⴅ．\u08BD\u200C; \u06664ⴅ.\u08BD\u200C; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; xn--4-kqc6770a.xn--jzb; [B1] # ٦4ⴅ.ࢽ
+\u06664Ⴅ.\u08BD\u200C; \u06664ⴅ.\u08BD\u200C; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; xn--4-kqc6770a.xn--jzb; [B1] # ٦4ⴅ.ࢽ
+\u06664ⴅ.\u08BD\u200C; ; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; xn--4-kqc6770a.xn--jzb; [B1] # ٦4ⴅ.ࢽ
+xn--4-kqc6770a.xn--jzb; \u06664ⴅ.\u08BD; [B1]; xn--4-kqc6770a.xn--jzb; ; ;  # ٦4ⴅ.ࢽ
+xn--4-kqc6770a.xn--jzb840j; \u06664ⴅ.\u08BD\u200C; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; ;  # ٦4ⴅ.ࢽ
+\u0666⁴ⴅ．\u08BD\u200C; \u06664ⴅ.\u08BD\u200C; [B1, B3, C1]; xn--4-kqc6770a.xn--jzb840j; ; xn--4-kqc6770a.xn--jzb; [B1] # ٦4ⴅ.ࢽ
+xn--4-kqc489e.xn--jzb; \u06664Ⴅ.\u08BD; [B1, V7]; xn--4-kqc489e.xn--jzb; ; ;  # ٦4Ⴅ.ࢽ
+xn--4-kqc489e.xn--jzb840j; \u06664Ⴅ.\u08BD\u200C; [B1, B3, C1, V7]; xn--4-kqc489e.xn--jzb840j; ; ;  # ٦4Ⴅ.ࢽ
+ჁႱ6\u0318。ß\u1B03; ⴡⴑ6\u0318.ß\u1B03; ; xn--6-8cb7433a2ba.xn--zca894k; ; xn--6-8cb7433a2ba.xn--ss-2vq;  # ⴡⴑ6̘.ßᬃ
+ⴡⴑ6\u0318。ß\u1B03; ⴡⴑ6\u0318.ß\u1B03; ; xn--6-8cb7433a2ba.xn--zca894k; ; xn--6-8cb7433a2ba.xn--ss-2vq;  # ⴡⴑ6̘.ßᬃ
+ჁႱ6\u0318。SS\u1B03; ⴡⴑ6\u0318.ss\u1B03; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ;  # ⴡⴑ6̘.ssᬃ
+ⴡⴑ6\u0318。ss\u1B03; ⴡⴑ6\u0318.ss\u1B03; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ;  # ⴡⴑ6̘.ssᬃ
+Ⴡⴑ6\u0318。Ss\u1B03; ⴡⴑ6\u0318.ss\u1B03; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ;  # ⴡⴑ6̘.ssᬃ
+xn--6-8cb7433a2ba.xn--ss-2vq; ⴡⴑ6\u0318.ss\u1B03; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ;  # ⴡⴑ6̘.ssᬃ
+ⴡⴑ6\u0318.ss\u1B03; ; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ;  # ⴡⴑ6̘.ssᬃ
+ჁႱ6\u0318.SS\u1B03; ⴡⴑ6\u0318.ss\u1B03; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ;  # ⴡⴑ6̘.ssᬃ
+Ⴡⴑ6\u0318.Ss\u1B03; ⴡⴑ6\u0318.ss\u1B03; ; xn--6-8cb7433a2ba.xn--ss-2vq; ; ;  # ⴡⴑ6̘.ssᬃ
+xn--6-8cb7433a2ba.xn--zca894k; ⴡⴑ6\u0318.ß\u1B03; ; xn--6-8cb7433a2ba.xn--zca894k; ; ;  # ⴡⴑ6̘.ßᬃ
+ⴡⴑ6\u0318.ß\u1B03; ; ; xn--6-8cb7433a2ba.xn--zca894k; ; xn--6-8cb7433a2ba.xn--ss-2vq;  # ⴡⴑ6̘.ßᬃ
+xn--6-8cb306hms1a.xn--ss-2vq; Ⴡⴑ6\u0318.ss\u1B03; [V7]; xn--6-8cb306hms1a.xn--ss-2vq; ; ;  # Ⴡⴑ6̘.ssᬃ
+xn--6-8cb555h2b.xn--ss-2vq; ჁႱ6\u0318.ss\u1B03; [V7]; xn--6-8cb555h2b.xn--ss-2vq; ; ;  # ჁႱ6̘.ssᬃ
+xn--6-8cb555h2b.xn--zca894k; ჁႱ6\u0318.ß\u1B03; [V7]; xn--6-8cb555h2b.xn--zca894k; ; ;  # ჁႱ6̘.ßᬃ
+򋡐｡≯𑋪; 򋡐.≯𑋪; [V7]; xn--eo08b.xn--hdh3385g; ; ;  # .≯𑋪
+򋡐｡>\u0338𑋪; 򋡐.≯𑋪; [V7]; xn--eo08b.xn--hdh3385g; ; ;  # .≯𑋪
+򋡐。≯𑋪; 򋡐.≯𑋪; [V7]; xn--eo08b.xn--hdh3385g; ; ;  # .≯𑋪
+򋡐。>\u0338𑋪; 򋡐.≯𑋪; [V7]; xn--eo08b.xn--hdh3385g; ; ;  # .≯𑋪
+xn--eo08b.xn--hdh3385g; 򋡐.≯𑋪; [V7]; xn--eo08b.xn--hdh3385g; ; ;  # .≯𑋪
+\u065A۲。\u200C-\u1BF3\u08E2; \u065A۲.\u200C-\u1BF3\u08E2; [B1, C1, V6, V7]; xn--2hb81a.xn----xrd657l30d; ; xn--2hb81a.xn----xrd657l; [B1, V3, V6, V7] # ٚ۲.-᯳
+xn--2hb81a.xn----xrd657l; \u065A۲.-\u1BF3\u08E2; [B1, V3, V6, V7]; xn--2hb81a.xn----xrd657l; ; ;  # ٚ۲.-᯳
+xn--2hb81a.xn----xrd657l30d; \u065A۲.\u200C-\u1BF3\u08E2; [B1, C1, V6, V7]; xn--2hb81a.xn----xrd657l30d; ; ;  # ٚ۲.-᯳
+󠄏𖬴󠲽｡\uFFA0; 𖬴󠲽.; [V6, V7]; xn--619ep9154c.; [V6, V7, A4_2]; ;  # 𖬴.
+󠄏𖬴󠲽。\u1160; 𖬴󠲽.; [V6, V7]; xn--619ep9154c.; [V6, V7, A4_2]; ;  # 𖬴.
+xn--619ep9154c.; 𖬴󠲽.; [V6, V7]; xn--619ep9154c.; [V6, V7, A4_2]; ;  # 𖬴.
+xn--619ep9154c.xn--psd; 𖬴󠲽.\u1160; [V6, V7]; xn--619ep9154c.xn--psd; ; ;  # 𖬴.
+xn--619ep9154c.xn--cl7c; 𖬴󠲽.\uFFA0; [V6, V7]; xn--619ep9154c.xn--cl7c; ; ;  # 𖬴.
+ß⒈\u0760\uD7AE．􉖲󠅄\u0605򉔯; ß⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V7]; xn--zca444a0s1ao12n.xn--nfb09923ifkyyb; ; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb;  # ß⒈ݠ.
+ß1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ß1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V7]; xn--1-pfa.xn--kpb6677h.xn--nfb09923ifkyyb; ; ss1.xn--kpb6677h.xn--nfb09923ifkyyb;  # ß1.ݠ.
+SS1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V7]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ;  # ss1.ݠ.
+ss1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V7]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ;  # ss1.ݠ.
+Ss1.\u0760\uD7AE.􉖲󠅄\u0605򉔯; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V7]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ;  # ss1.ݠ.
+ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ss1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V7]; ss1.xn--kpb6677h.xn--nfb09923ifkyyb; ; ;  # ss1.ݠ.
+xn--1-pfa.xn--kpb6677h.xn--nfb09923ifkyyb; ß1.\u0760\uD7AE.􉖲\u0605򉔯; [B2, B3, B5, V7]; xn--1-pfa.xn--kpb6677h.xn--nfb09923ifkyyb; ; ;  # ß1.ݠ.
+SS⒈\u0760\uD7AE．􉖲󠅄\u0605򉔯; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V7]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ;  # ss⒈ݠ.
+ss⒈\u0760\uD7AE．􉖲󠅄\u0605򉔯; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V7]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ;  # ss⒈ݠ.
+Ss⒈\u0760\uD7AE．􉖲󠅄\u0605򉔯; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V7]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ;  # ss⒈ݠ.
+xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ss⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V7]; xn--ss-6ke9690a0g1q.xn--nfb09923ifkyyb; ; ;  # ss⒈ݠ.
+xn--zca444a0s1ao12n.xn--nfb09923ifkyyb; ß⒈\u0760\uD7AE.􉖲\u0605򉔯; [B5, V7]; xn--zca444a0s1ao12n.xn--nfb09923ifkyyb; ; ;  # ß⒈ݠ.
+󠭔.𐋱₂; 󠭔.𐋱2; [V7]; xn--vi56e.xn--2-w91i; ; ;  # .𐋱2
+󠭔.𐋱2; ; [V7]; xn--vi56e.xn--2-w91i; ; ;  # .𐋱2
+xn--vi56e.xn--2-w91i; 󠭔.𐋱2; [V7]; xn--vi56e.xn--2-w91i; ; ;  # .𐋱2
+\u0716\u0947。-ß\u06A5\u200C; \u0716\u0947.-ß\u06A5\u200C; [B1, C1, V3]; xn--gnb63i.xn----qfa845bhx4a; ; xn--gnb63i.xn---ss-4ef; [B1, V3] # ܖे.-ßڥ
+\u0716\u0947。-SS\u06A5\u200C; \u0716\u0947.-ss\u06A5\u200C; [B1, C1, V3]; xn--gnb63i.xn---ss-4ef9263a; ; xn--gnb63i.xn---ss-4ef; [B1, V3] # ܖे.-ssڥ
+\u0716\u0947。-ss\u06A5\u200C; \u0716\u0947.-ss\u06A5\u200C; [B1, C1, V3]; xn--gnb63i.xn---ss-4ef9263a; ; xn--gnb63i.xn---ss-4ef; [B1, V3] # ܖे.-ssڥ
+\u0716\u0947。-Ss\u06A5\u200C; \u0716\u0947.-ss\u06A5\u200C; [B1, C1, V3]; xn--gnb63i.xn---ss-4ef9263a; ; xn--gnb63i.xn---ss-4ef; [B1, V3] # ܖे.-ssڥ
+xn--gnb63i.xn---ss-4ef; \u0716\u0947.-ss\u06A5; [B1, V3]; xn--gnb63i.xn---ss-4ef; ; ;  # ܖे.-ssڥ
+xn--gnb63i.xn---ss-4ef9263a; \u0716\u0947.-ss\u06A5\u200C; [B1, C1, V3]; xn--gnb63i.xn---ss-4ef9263a; ; ;  # ܖे.-ssڥ
+xn--gnb63i.xn----qfa845bhx4a; \u0716\u0947.-ß\u06A5\u200C; [B1, C1, V3]; xn--gnb63i.xn----qfa845bhx4a; ; ;  # ܖे.-ßڥ
+\u1BA9\u200D\u062A񡚈．\u1CD5䷉Ⴡ; \u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; [B1, C2, V6, V7]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; xn--pgb911izv33i.xn--i6f270etuy; [B1, V6, V7] # ᮩت.᳕䷉ⴡ
+\u1BA9\u200D\u062A񡚈.\u1CD5䷉Ⴡ; \u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; [B1, C2, V6, V7]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; xn--pgb911izv33i.xn--i6f270etuy; [B1, V6, V7] # ᮩت.᳕䷉ⴡ
+\u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; ; [B1, C2, V6, V7]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; xn--pgb911izv33i.xn--i6f270etuy; [B1, V6, V7] # ᮩت.᳕䷉ⴡ
+xn--pgb911izv33i.xn--i6f270etuy; \u1BA9\u062A񡚈.\u1CD5䷉ⴡ; [B1, V6, V7]; xn--pgb911izv33i.xn--i6f270etuy; ; ;  # ᮩت.᳕䷉ⴡ
+xn--pgb911imgdrw34r.xn--i6f270etuy; \u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; [B1, C2, V6, V7]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; ;  # ᮩت.᳕䷉ⴡ
+\u1BA9\u200D\u062A񡚈．\u1CD5䷉ⴡ; \u1BA9\u200D\u062A񡚈.\u1CD5䷉ⴡ; [B1, C2, V6, V7]; xn--pgb911imgdrw34r.xn--i6f270etuy; ; xn--pgb911izv33i.xn--i6f270etuy; [B1, V6, V7] # ᮩت.᳕䷉ⴡ
+xn--pgb911izv33i.xn--5nd792dgv3b; \u1BA9\u062A񡚈.\u1CD5䷉Ⴡ; [B1, V6, V7]; xn--pgb911izv33i.xn--5nd792dgv3b; ; ;  # ᮩت.᳕䷉Ⴡ
+xn--pgb911imgdrw34r.xn--5nd792dgv3b; \u1BA9\u200D\u062A񡚈.\u1CD5䷉Ⴡ; [B1, C2, V6, V7]; xn--pgb911imgdrw34r.xn--5nd792dgv3b; ; ;  # ᮩت.᳕䷉Ⴡ
+\u2DBF.ß\u200D; ; [C2, V7]; xn--7pj.xn--zca870n; ; xn--7pj.ss; [V7] # .ß
+\u2DBF.SS\u200D; \u2DBF.ss\u200D; [C2, V7]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [V7] # .ss
+\u2DBF.ss\u200D; ; [C2, V7]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [V7] # .ss
+\u2DBF.Ss\u200D; \u2DBF.ss\u200D; [C2, V7]; xn--7pj.xn--ss-n1t; ; xn--7pj.ss; [V7] # .ss
+xn--7pj.ss; \u2DBF.ss; [V7]; xn--7pj.ss; ; ;  # .ss
+xn--7pj.xn--ss-n1t; \u2DBF.ss\u200D; [C2, V7]; xn--7pj.xn--ss-n1t; ; ;  # .ss
+xn--7pj.xn--zca870n; \u2DBF.ß\u200D; [C2, V7]; xn--7pj.xn--zca870n; ; ;  # .ß
+\u1BF3︒.\u062A≯ꡂ; ; [B2, B3, B6, V6, V7]; xn--1zf8957g.xn--pgb885lry5g; ; ;  # ᯳︒.ت≯ꡂ
+\u1BF3︒.\u062A>\u0338ꡂ; \u1BF3︒.\u062A≯ꡂ; [B2, B3, B6, V6, V7]; xn--1zf8957g.xn--pgb885lry5g; ; ;  # ᯳︒.ت≯ꡂ
+\u1BF3。.\u062A≯ꡂ; \u1BF3..\u062A≯ꡂ; [B2, B3, V6, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, V6, A4_2]; ;  # ᯳..ت≯ꡂ
+\u1BF3。.\u062A>\u0338ꡂ; \u1BF3..\u062A≯ꡂ; [B2, B3, V6, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, V6, A4_2]; ;  # ᯳..ت≯ꡂ
+xn--1zf..xn--pgb885lry5g; \u1BF3..\u062A≯ꡂ; [B2, B3, V6, X4_2]; xn--1zf..xn--pgb885lry5g; [B2, B3, V6, A4_2]; ;  # ᯳..ت≯ꡂ
+xn--1zf8957g.xn--pgb885lry5g; \u1BF3︒.\u062A≯ꡂ; [B2, B3, B6, V6, V7]; xn--1zf8957g.xn--pgb885lry5g; ; ;  # ᯳︒.ت≯ꡂ
+≮≠񏻃｡-𫠆\u06B7𐹪; ≮≠񏻃.-𫠆\u06B7𐹪; [B1, V3, V7]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ;  # ≮≠.-𫠆ڷ𐹪
+<\u0338=\u0338񏻃｡-𫠆\u06B7𐹪; ≮≠񏻃.-𫠆\u06B7𐹪; [B1, V3, V7]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ;  # ≮≠.-𫠆ڷ𐹪
+≮≠񏻃。-𫠆\u06B7𐹪; ≮≠񏻃.-𫠆\u06B7𐹪; [B1, V3, V7]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ;  # ≮≠.-𫠆ڷ𐹪
+<\u0338=\u0338񏻃。-𫠆\u06B7𐹪; ≮≠񏻃.-𫠆\u06B7𐹪; [B1, V3, V7]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ;  # ≮≠.-𫠆ڷ𐹪
+xn--1ch1a29470f.xn----7uc5363rc1rn; ≮≠񏻃.-𫠆\u06B7𐹪; [B1, V3, V7]; xn--1ch1a29470f.xn----7uc5363rc1rn; ; ;  # ≮≠.-𫠆ڷ𐹪
+𐹡\u0777。ꡂ; 𐹡\u0777.ꡂ; [B1]; xn--7pb5275k.xn--bc9a; ; ;  # 𐹡ݷ.ꡂ
+xn--7pb5275k.xn--bc9a; 𐹡\u0777.ꡂ; [B1]; xn--7pb5275k.xn--bc9a; ; ;  # 𐹡ݷ.ꡂ
+Ⴉ𝆅񔻅\u0619.ß𐧦𐹳\u0775; ⴉ𝆅񔻅\u0619.ß𐧦𐹳\u0775; [B5, B6, V7]; xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; ; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e;  # ⴉؙ𝆅.ß𐧦𐹳ݵ
+ⴉ𝆅񔻅\u0619.ß𐧦𐹳\u0775; ; [B5, B6, V7]; xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; ; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e;  # ⴉؙ𝆅.ß𐧦𐹳ݵ
+Ⴉ𝆅񔻅\u0619.SS𐧦𐹳\u0775; ⴉ𝆅񔻅\u0619.ss𐧦𐹳\u0775; [B5, B6, V7]; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ; ;  # ⴉؙ𝆅.ss𐧦𐹳ݵ
+ⴉ𝆅񔻅\u0619.ss𐧦𐹳\u0775; ; [B5, B6, V7]; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ; ;  # ⴉؙ𝆅.ss𐧦𐹳ݵ
+Ⴉ𝆅񔻅\u0619.Ss𐧦𐹳\u0775; ⴉ𝆅񔻅\u0619.ss𐧦𐹳\u0775; [B5, B6, V7]; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ; ;  # ⴉؙ𝆅.ss𐧦𐹳ݵ
+xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ⴉ𝆅񔻅\u0619.ss𐧦𐹳\u0775; [B5, B6, V7]; xn--7fb940rwt3z7xvz.xn--ss-zme7575xp0e; ; ;  # ⴉؙ𝆅.ss𐧦𐹳ݵ
+xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; ⴉ𝆅񔻅\u0619.ß𐧦𐹳\u0775; [B5, B6, V7]; xn--7fb940rwt3z7xvz.xn--zca684a699vf2d; ; ;  # ⴉؙ𝆅.ß𐧦𐹳ݵ
+xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; Ⴉ𝆅񔻅\u0619.ss𐧦𐹳\u0775; [B5, B6, V7]; xn--7fb125cjv87a7xvz.xn--ss-zme7575xp0e; ; ;  # Ⴉؙ𝆅.ss𐧦𐹳ݵ
+xn--7fb125cjv87a7xvz.xn--zca684a699vf2d; Ⴉ𝆅񔻅\u0619.ß𐧦𐹳\u0775; [B5, B6, V7]; xn--7fb125cjv87a7xvz.xn--zca684a699vf2d; ; ;  # Ⴉؙ𝆅.ß𐧦𐹳ݵ
+\u200D\u0643𐧾↙.񊽡; ; [B1, C2, V7]; xn--fhb713k87ag053c.xn--7s4w; ; xn--fhb011lnp8n.xn--7s4w; [B3, V7] # ك𐧾↙.
+xn--fhb011lnp8n.xn--7s4w; \u0643𐧾↙.񊽡; [B3, V7]; xn--fhb011lnp8n.xn--7s4w; ; ;  # ك𐧾↙.
+xn--fhb713k87ag053c.xn--7s4w; \u200D\u0643𐧾↙.񊽡; [B1, C2, V7]; xn--fhb713k87ag053c.xn--7s4w; ; ;  # ك𐧾↙.
+梉。\u200C; 梉.\u200C; [C1]; xn--7zv.xn--0ug; ; xn--7zv.; [A4_2] # 梉.
+xn--7zv.; 梉.; ; xn--7zv.; [A4_2]; ;  # 梉.
+梉.; ; ; xn--7zv.; [A4_2]; ;  # 梉.
+xn--7zv.xn--0ug; 梉.\u200C; [C1]; xn--7zv.xn--0ug; ; ;  # 梉.
+ꡣ-≠.\u200D𞤗𐅢Ↄ; ꡣ-≠.\u200D𞤹𐅢ↄ; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6] # ꡣ-≠.𞤹𐅢ↄ
+ꡣ-=\u0338.\u200D𞤗𐅢Ↄ; ꡣ-≠.\u200D𞤹𐅢ↄ; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6] # ꡣ-≠.𞤹𐅢ↄ
+ꡣ-=\u0338.\u200D𞤹𐅢ↄ; ꡣ-≠.\u200D𞤹𐅢ↄ; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6] # ꡣ-≠.𞤹𐅢ↄ
+ꡣ-≠.\u200D𞤹𐅢ↄ; ; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6] # ꡣ-≠.𞤹𐅢ↄ
+ꡣ-≠.\u200D𞤗𐅢ↄ; ꡣ-≠.\u200D𞤹𐅢ↄ; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6] # ꡣ-≠.𞤹𐅢ↄ
+ꡣ-=\u0338.\u200D𞤗𐅢ↄ; ꡣ-≠.\u200D𞤹𐅢ↄ; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; xn----ufo9661d.xn--r5gy929fhm4f; [B2, B3, B6] # ꡣ-≠.𞤹𐅢ↄ
+xn----ufo9661d.xn--r5gy929fhm4f; ꡣ-≠.𞤹𐅢ↄ; [B2, B3, B6]; xn----ufo9661d.xn--r5gy929fhm4f; ; ;  # ꡣ-≠.𞤹𐅢ↄ
+xn----ufo9661d.xn--1ug99cj620c71sh; ꡣ-≠.\u200D𞤹𐅢ↄ; [B1, B6, C2]; xn----ufo9661d.xn--1ug99cj620c71sh; ; ;  # ꡣ-≠.𞤹𐅢ↄ
+xn----ufo9661d.xn--q5g0929fhm4f; ꡣ-≠.𞤹𐅢Ↄ; [B2, B3, B6, V7]; xn----ufo9661d.xn--q5g0929fhm4f; ; ;  # ꡣ-≠.𞤹𐅢Ↄ
+xn----ufo9661d.xn--1ug79cm620c71sh; ꡣ-≠.\u200D𞤹𐅢Ↄ; [B1, B6, C2, V7]; xn----ufo9661d.xn--1ug79cm620c71sh; ; ;  # ꡣ-≠.𞤹𐅢Ↄ
+ς⒐𝆫⸵｡𐱢🄊𝟳; ς⒐𝆫⸵.𐱢9,7; [B6, V7, U1]; xn--3xa019nwtghi25b.xn--9,7-r67t; ; xn--4xa809nwtghi25b.xn--9,7-r67t;  # ς⒐𝆫⸵.9,7
+ς9.𝆫⸵。𐱢9,7; ς9.𝆫⸵.𐱢9,7; [B1, V6, V7, U1]; xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; ; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t;  # ς9.𝆫⸵.9,7
+Σ9.𝆫⸵。𐱢9,7; σ9.𝆫⸵.𐱢9,7; [B1, V6, V7, U1]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ;  # σ9.𝆫⸵.9,7
+σ9.𝆫⸵。𐱢9,7; σ9.𝆫⸵.𐱢9,7; [B1, V6, V7, U1]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ;  # σ9.𝆫⸵.9,7
+xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; σ9.𝆫⸵.𐱢9,7; [B1, V6, V7, U1]; xn--9-zmb.xn--ltj1535k.xn--9,7-r67t; ; ;  # σ9.𝆫⸵.9,7
+xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; ς9.𝆫⸵.𐱢9,7; [B1, V6, V7, U1]; xn--9-xmb.xn--ltj1535k.xn--9,7-r67t; ; ;  # ς9.𝆫⸵.9,7
+Σ⒐𝆫⸵｡𐱢🄊𝟳; σ⒐𝆫⸵.𐱢9,7; [B6, V7, U1]; xn--4xa809nwtghi25b.xn--9,7-r67t; ; ;  # σ⒐𝆫⸵.9,7
+σ⒐𝆫⸵｡𐱢🄊𝟳; σ⒐𝆫⸵.𐱢9,7; [B6, V7, U1]; xn--4xa809nwtghi25b.xn--9,7-r67t; ; ;  # σ⒐𝆫⸵.9,7
+xn--4xa809nwtghi25b.xn--9,7-r67t; σ⒐𝆫⸵.𐱢9,7; [B6, V7, U1]; xn--4xa809nwtghi25b.xn--9,7-r67t; ; ;  # σ⒐𝆫⸵.9,7
+xn--3xa019nwtghi25b.xn--9,7-r67t; ς⒐𝆫⸵.𐱢9,7; [B6, V7, U1]; xn--3xa019nwtghi25b.xn--9,7-r67t; ; ;  # ς⒐𝆫⸵.9,7
+xn--4xa809nwtghi25b.xn--7-075iy877c; σ⒐𝆫⸵.𐱢🄊7; [B6, V7]; xn--4xa809nwtghi25b.xn--7-075iy877c; ; ;  # σ⒐𝆫⸵.🄊7
+xn--3xa019nwtghi25b.xn--7-075iy877c; ς⒐𝆫⸵.𐱢🄊7; [B6, V7]; xn--3xa019nwtghi25b.xn--7-075iy877c; ; ;  # ς⒐𝆫⸵.🄊7
+\u0853．\u200Cß; \u0853.\u200Cß; [B1, C1]; xn--iwb.xn--zca570n; ; xn--iwb.ss; [] # ࡓ.ß
+\u0853.\u200Cß; ; [B1, C1]; xn--iwb.xn--zca570n; ; xn--iwb.ss; [] # ࡓ.ß
+\u0853.\u200CSS; \u0853.\u200Css; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
+\u0853.\u200Css; ; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
+xn--iwb.ss; \u0853.ss; ; xn--iwb.ss; ; ;  # ࡓ.ss
+\u0853.ss; ; ; xn--iwb.ss; ; ;  # ࡓ.ss
+\u0853.SS; \u0853.ss; ; xn--iwb.ss; ; ;  # ࡓ.ss
+xn--iwb.xn--ss-i1t; \u0853.\u200Css; [B1, C1]; xn--iwb.xn--ss-i1t; ; ;  # ࡓ.ss
+xn--iwb.xn--zca570n; \u0853.\u200Cß; [B1, C1]; xn--iwb.xn--zca570n; ; ;  # ࡓ.ß
+\u0853．\u200CSS; \u0853.\u200Css; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
+\u0853．\u200Css; \u0853.\u200Css; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
+\u0853.\u200CSs; \u0853.\u200Css; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
+\u0853．\u200CSs; \u0853.\u200Css; [B1, C1]; xn--iwb.xn--ss-i1t; ; xn--iwb.ss; [] # ࡓ.ss
+񯶣-.\u200D\u074E\uA94D󠻨; ; [B1, B6, C2, V3, V7]; xn----s116e.xn--1ob387jy90hq459k; ; xn----s116e.xn--1ob6504fmf40i; [B3, B6, V3, V7] # -.ݎꥍ
+xn----s116e.xn--1ob6504fmf40i; 񯶣-.\u074E\uA94D󠻨; [B3, B6, V3, V7]; xn----s116e.xn--1ob6504fmf40i; ; ;  # -.ݎꥍ
+xn----s116e.xn--1ob387jy90hq459k; 񯶣-.\u200D\u074E\uA94D󠻨; [B1, B6, C2, V3, V7]; xn----s116e.xn--1ob387jy90hq459k; ; ;  # -.ݎꥍ
+䃚蟥-。-񽒘⒈; 䃚蟥-.-񽒘⒈; [V3, V7]; xn----n50a258u.xn----ecp33805f; ; ;  # 䃚蟥-.-⒈
+䃚蟥-。-񽒘1.; 䃚蟥-.-񽒘1.; [V3, V7]; xn----n50a258u.xn---1-up07j.; [V3, V7, A4_2]; ;  # 䃚蟥-.-1.
+xn----n50a258u.xn---1-up07j.; 䃚蟥-.-񽒘1.; [V3, V7]; xn----n50a258u.xn---1-up07j.; [V3, V7, A4_2]; ;  # 䃚蟥-.-1.
+xn----n50a258u.xn----ecp33805f; 䃚蟥-.-񽒘⒈; [V3, V7]; xn----n50a258u.xn----ecp33805f; ; ;  # 䃚蟥-.-⒈
 𐹸䚵-ꡡ。⺇; 𐹸䚵-ꡡ.⺇; [B1]; xn----bm3an932a1l5d.xn--xvj; ; ;  # 𐹸䚵-ꡡ.⺇
 xn----bm3an932a1l5d.xn--xvj; 𐹸䚵-ꡡ.⺇; [B1]; xn----bm3an932a1l5d.xn--xvj; ; ;  # 𐹸䚵-ꡡ.⺇
-𑄳。᫜𐹻; 𑄳.᫜𐹻; [B1, B3, B5, B6, P1, V5, V6]; xn--v80d.xn--2rf1154i; ; ;  # 𑄳.𐹻
-xn--v80d.xn--2rf1154i; 𑄳.᫜𐹻; [B1, B3, B5, B6, V5, V6]; xn--v80d.xn--2rf1154i; ; ;  # 𑄳.𐹻
-≮𐹻.⒎𑂵ں؂; ; [B1, P1, V6]; xn--gdhx904g.xn--kfb18a325efm3s; ; ;  # ≮𐹻.⒎𑂵ں
-≮𐹻.⒎𑂵ں؂; ≮𐹻.⒎𑂵ں؂; [B1, P1, V6]; xn--gdhx904g.xn--kfb18a325efm3s; ; ;  # ≮𐹻.⒎𑂵ں
-≮𐹻.7.𑂵ں؂; ; [B1, P1, V5, V6]; xn--gdhx904g.7.xn--kfb18an307d; ; ;  # ≮𐹻.7.𑂵ں
-≮𐹻.7.𑂵ں؂; ≮𐹻.7.𑂵ں؂; [B1, P1, V5, V6]; xn--gdhx904g.7.xn--kfb18an307d; ; ;  # ≮𐹻.7.𑂵ں
-xn--gdhx904g.7.xn--kfb18an307d; ≮𐹻.7.𑂵ں؂; [B1, V5, V6]; xn--gdhx904g.7.xn--kfb18an307d; ; ;  # ≮𐹻.7.𑂵ں
-xn--gdhx904g.xn--kfb18a325efm3s; ≮𐹻.⒎𑂵ں؂; [B1, V6]; xn--gdhx904g.xn--kfb18a325efm3s; ; ;  # ≮𐹻.⒎𑂵ں
-ᢔ≠􋉂.‍𐋢; ; [C2, P1, V6]; xn--ebf031cf7196a.xn--1ug9540g; ; xn--ebf031cf7196a.xn--587c; [P1, V6] # ᢔ≠.𐋢
-ᢔ≠􋉂.‍𐋢; ᢔ≠􋉂.‍𐋢; [C2, P1, V6]; xn--ebf031cf7196a.xn--1ug9540g; ; xn--ebf031cf7196a.xn--587c; [P1, V6] # ᢔ≠.𐋢
-xn--ebf031cf7196a.xn--587c; ᢔ≠􋉂.𐋢; [V6]; xn--ebf031cf7196a.xn--587c; ; ;  # ᢔ≠.𐋢
-xn--ebf031cf7196a.xn--1ug9540g; ᢔ≠􋉂.‍𐋢; [C2, V6]; xn--ebf031cf7196a.xn--1ug9540g; ; ;  # ᢔ≠.𐋢
-𐩁≮񣊛≯．٬𞵕⳿; 𐩁≮񣊛≯.٬𞵕⳿; [B1, B2, B3, P1, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ;  # 𐩁≮≯.٬⳿
-𐩁≮񣊛≯．٬𞵕⳿; 𐩁≮񣊛≯.٬𞵕⳿; [B1, B2, B3, P1, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ;  # 𐩁≮≯.٬⳿
-𐩁≮񣊛≯.٬𞵕⳿; ; [B1, B2, B3, P1, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ;  # 𐩁≮≯.٬⳿
-𐩁≮񣊛≯.٬𞵕⳿; 𐩁≮񣊛≯.٬𞵕⳿; [B1, B2, B3, P1, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ;  # 𐩁≮≯.٬⳿
-xn--gdhc0519o0y27b.xn--lib468q0d21a; 𐩁≮񣊛≯.٬𞵕⳿; [B1, B2, B3, V6]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ;  # 𐩁≮≯.٬⳿
+𑄳。\u1ADC𐹻; 𑄳.\u1ADC𐹻; [B1, B5, B6, V6, V7]; xn--v80d.xn--2rf1154i; ; ;  # 𑄳.𐹻
+xn--v80d.xn--2rf1154i; 𑄳.\u1ADC𐹻; [B1, B5, B6, V6, V7]; xn--v80d.xn--2rf1154i; ; ;  # 𑄳.𐹻
+≮𐹻.⒎𑂵\u06BA\u0602; ; [B1, V7]; xn--gdhx904g.xn--kfb18a325efm3s; ; ;  # ≮𐹻.⒎𑂵ں
+<\u0338𐹻.⒎𑂵\u06BA\u0602; ≮𐹻.⒎𑂵\u06BA\u0602; [B1, V7]; xn--gdhx904g.xn--kfb18a325efm3s; ; ;  # ≮𐹻.⒎𑂵ں
+≮𐹻.7.𑂵\u06BA\u0602; ; [B1, V6, V7]; xn--gdhx904g.7.xn--kfb18an307d; ; ;  # ≮𐹻.7.𑂵ں
+<\u0338𐹻.7.𑂵\u06BA\u0602; ≮𐹻.7.𑂵\u06BA\u0602; [B1, V6, V7]; xn--gdhx904g.7.xn--kfb18an307d; ; ;  # ≮𐹻.7.𑂵ں
+xn--gdhx904g.7.xn--kfb18an307d; ≮𐹻.7.𑂵\u06BA\u0602; [B1, V6, V7]; xn--gdhx904g.7.xn--kfb18an307d; ; ;  # ≮𐹻.7.𑂵ں
+xn--gdhx904g.xn--kfb18a325efm3s; ≮𐹻.⒎𑂵\u06BA\u0602; [B1, V7]; xn--gdhx904g.xn--kfb18a325efm3s; ; ;  # ≮𐹻.⒎𑂵ں
+ᢔ≠􋉂.\u200D𐋢; ; [C2, V7]; xn--ebf031cf7196a.xn--1ug9540g; ; xn--ebf031cf7196a.xn--587c; [V7] # ᢔ≠.𐋢
+ᢔ=\u0338􋉂.\u200D𐋢; ᢔ≠􋉂.\u200D𐋢; [C2, V7]; xn--ebf031cf7196a.xn--1ug9540g; ; xn--ebf031cf7196a.xn--587c; [V7] # ᢔ≠.𐋢
+xn--ebf031cf7196a.xn--587c; ᢔ≠􋉂.𐋢; [V7]; xn--ebf031cf7196a.xn--587c; ; ;  # ᢔ≠.𐋢
+xn--ebf031cf7196a.xn--1ug9540g; ᢔ≠􋉂.\u200D𐋢; [C2, V7]; xn--ebf031cf7196a.xn--1ug9540g; ; ;  # ᢔ≠.𐋢
+𐩁≮񣊛≯．\u066C𞵕⳿; 𐩁≮񣊛≯.\u066C𞵕⳿; [B1, B2, B3, V7]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ;  # 𐩁≮≯.٬⳿
+𐩁<\u0338񣊛>\u0338．\u066C𞵕⳿; 𐩁≮񣊛≯.\u066C𞵕⳿; [B1, B2, B3, V7]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ;  # 𐩁≮≯.٬⳿
+𐩁≮񣊛≯.\u066C𞵕⳿; ; [B1, B2, B3, V7]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ;  # 𐩁≮≯.٬⳿
+𐩁<\u0338񣊛>\u0338.\u066C𞵕⳿; 𐩁≮񣊛≯.\u066C𞵕⳿; [B1, B2, B3, V7]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ;  # 𐩁≮≯.٬⳿
+xn--gdhc0519o0y27b.xn--lib468q0d21a; 𐩁≮񣊛≯.\u066C𞵕⳿; [B1, B2, B3, V7]; xn--gdhc0519o0y27b.xn--lib468q0d21a; ; ;  # 𐩁≮≯.٬⳿
 -｡⺐; -.⺐; [V3]; -.xn--6vj; ; ;  # -.⺐
 -。⺐; -.⺐; [V3]; -.xn--6vj; ; ;  # -.⺐
 -.xn--6vj; -.⺐; [V3]; -.xn--6vj; ; ;  # -.⺐
-󠰩𑲬．ٜ; 󠰩𑲬.ٜ; [P1, V5, V6]; xn--sn3d59267c.xn--4hb; ; ;  # 𑲬.ٜ
-󠰩𑲬.ٜ; ; [P1, V5, V6]; xn--sn3d59267c.xn--4hb; ; ;  # 𑲬.ٜ
-xn--sn3d59267c.xn--4hb; 󠰩𑲬.ٜ; [V5, V6]; xn--sn3d59267c.xn--4hb; ; ;  # 𑲬.ٜ
-𐍺.񚇃‌; ; [C1, P1, V5, V6]; xn--ie8c.xn--0ug03366c; ; xn--ie8c.xn--2g51a; [P1, V5, V6] # 𐍺.
-xn--ie8c.xn--2g51a; 𐍺.񚇃; [V5, V6]; xn--ie8c.xn--2g51a; ; ;  # 𐍺.
-xn--ie8c.xn--0ug03366c; 𐍺.񚇃‌; [C1, V5, V6]; xn--ie8c.xn--0ug03366c; ; ;  # 𐍺.
-ؽۣ.𐨎; ; [B1, B3, B6, V5]; xn--8gb64a.xn--mr9c; ; ;  # ؽۣ.𐨎
-xn--8gb64a.xn--mr9c; ؽۣ.𐨎; [B1, B3, B6, V5]; xn--8gb64a.xn--mr9c; ; ;  # ؽۣ.𐨎
-漦Ⴙς.񡻀𐴄; ; [B5, B6, P1, V6]; xn--3xa157d717e.xn--9d0d3162t; ; xn--4xa947d717e.xn--9d0d3162t;  # 漦Ⴙς.𐴄
-漦ⴙς.񡻀𐴄; ; [B5, B6, P1, V6]; xn--3xa972sl47b.xn--9d0d3162t; ; xn--4xa772sl47b.xn--9d0d3162t;  # 漦ⴙς.𐴄
-漦ႹΣ.񡻀𐴄; 漦Ⴙσ.񡻀𐴄; [B5, B6, P1, V6]; xn--4xa947d717e.xn--9d0d3162t; ; ;  # 漦Ⴙσ.𐴄
-漦ⴙσ.񡻀𐴄; ; [B5, B6, P1, V6]; xn--4xa772sl47b.xn--9d0d3162t; ; ;  # 漦ⴙσ.𐴄
-漦Ⴙσ.񡻀𐴄; ; [B5, B6, P1, V6]; xn--4xa947d717e.xn--9d0d3162t; ; ;  # 漦Ⴙσ.𐴄
-xn--4xa947d717e.xn--9d0d3162t; 漦Ⴙσ.񡻀𐴄; [B5, B6, V6]; xn--4xa947d717e.xn--9d0d3162t; ; ;  # 漦Ⴙσ.𐴄
-xn--4xa772sl47b.xn--9d0d3162t; 漦ⴙσ.񡻀𐴄; [B5, B6, V6]; xn--4xa772sl47b.xn--9d0d3162t; ; ;  # 漦ⴙσ.𐴄
-xn--3xa972sl47b.xn--9d0d3162t; 漦ⴙς.񡻀𐴄; [B5, B6, V6]; xn--3xa972sl47b.xn--9d0d3162t; ; ;  # 漦ⴙς.𐴄
-xn--3xa157d717e.xn--9d0d3162t; 漦Ⴙς.񡻀𐴄; [B5, B6, V6]; xn--3xa157d717e.xn--9d0d3162t; ; ;  # 漦Ⴙς.𐴄
-𐹫踧್򫚇.󜀃⒈𝨤; ; [B1, P1, V6]; xn--8tc1437dro0d6q06h.xn--tsh2611ncu71e; ; ;  # 𐹫踧್.⒈𝨤
-𐹫踧್򫚇.󜀃1.𝨤; ; [B1, B3, B6, P1, V5, V6]; xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; ; ;  # 𐹫踧್.1.𝨤
-xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; 𐹫踧್򫚇.󜀃1.𝨤; [B1, B3, B6, V5, V6]; xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; ; ;  # 𐹫踧್.1.𝨤
-xn--8tc1437dro0d6q06h.xn--tsh2611ncu71e; 𐹫踧್򫚇.󜀃⒈𝨤; [B1, V6]; xn--8tc1437dro0d6q06h.xn--tsh2611ncu71e; ; ;  # 𐹫踧್.⒈𝨤
-‍≮．󠟪𹫏-; ‍≮.󠟪𹫏-; [C2, P1, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [P1, V3, V6] # ≮.-
-‍≮．󠟪𹫏-; ‍≮.󠟪𹫏-; [C2, P1, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [P1, V3, V6] # ≮.-
-‍≮.󠟪𹫏-; ; [C2, P1, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [P1, V3, V6] # ≮.-
-‍≮.󠟪𹫏-; ‍≮.󠟪𹫏-; [C2, P1, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [P1, V3, V6] # ≮.-
-xn--gdh.xn----cr99a1w710b; ≮.󠟪𹫏-; [V3, V6]; xn--gdh.xn----cr99a1w710b; ; ;  # ≮.-
-xn--1ug95g.xn----cr99a1w710b; ‍≮.󠟪𹫏-; [C2, V3, V6]; xn--1ug95g.xn----cr99a1w710b; ; ;  # ≮.-
-‍‍襔。Ⴜ5ꡮ񵝏; ‍‍襔.Ⴜ5ꡮ񵝏; [C2, P1, V6]; xn--1uga7691f.xn--5-r1g7167ipfw8d; ; xn--2u2a.xn--5-r1g7167ipfw8d; [P1, V6] # 襔.Ⴜ5ꡮ
-‍‍襔。ⴜ5ꡮ񵝏; ‍‍襔.ⴜ5ꡮ񵝏; [C2, P1, V6]; xn--1uga7691f.xn--5-uws5848bpf44e; ; xn--2u2a.xn--5-uws5848bpf44e; [P1, V6] # 襔.ⴜ5ꡮ
-xn--2u2a.xn--5-uws5848bpf44e; 襔.ⴜ5ꡮ񵝏; [V6]; xn--2u2a.xn--5-uws5848bpf44e; ; ;  # 襔.ⴜ5ꡮ
-xn--1uga7691f.xn--5-uws5848bpf44e; ‍‍襔.ⴜ5ꡮ񵝏; [C2, V6]; xn--1uga7691f.xn--5-uws5848bpf44e; ; ;  # 襔.ⴜ5ꡮ
-xn--2u2a.xn--5-r1g7167ipfw8d; 襔.Ⴜ5ꡮ񵝏; [V6]; xn--2u2a.xn--5-r1g7167ipfw8d; ; ;  # 襔.Ⴜ5ꡮ
-xn--1uga7691f.xn--5-r1g7167ipfw8d; ‍‍襔.Ⴜ5ꡮ񵝏; [C2, V6]; xn--1uga7691f.xn--5-r1g7167ipfw8d; ; ;  # 襔.Ⴜ5ꡮ
-𐫜𑌼‍．婀; 𐫜𑌼‍.婀; [B3, C2]; xn--1ugx063g1if.xn--q0s; ; xn--ix9c26l.xn--q0s; [] # 𐫜𑌼.婀
-𐫜𑌼‍.婀; ; [B3, C2]; xn--1ugx063g1if.xn--q0s; ; xn--ix9c26l.xn--q0s; [] # 𐫜𑌼.婀
+󠰩𑲬．\u065C; 󠰩𑲬.\u065C; [V6, V7]; xn--sn3d59267c.xn--4hb; ; ;  # 𑲬.ٜ
+󠰩𑲬.\u065C; ; [V6, V7]; xn--sn3d59267c.xn--4hb; ; ;  # 𑲬.ٜ
+xn--sn3d59267c.xn--4hb; 󠰩𑲬.\u065C; [V6, V7]; xn--sn3d59267c.xn--4hb; ; ;  # 𑲬.ٜ
+𐍺.񚇃\u200C; ; [C1, V6, V7]; xn--ie8c.xn--0ug03366c; ; xn--ie8c.xn--2g51a; [V6, V7] # 𐍺.
+xn--ie8c.xn--2g51a; 𐍺.񚇃; [V6, V7]; xn--ie8c.xn--2g51a; ; ;  # 𐍺.
+xn--ie8c.xn--0ug03366c; 𐍺.񚇃\u200C; [C1, V6, V7]; xn--ie8c.xn--0ug03366c; ; ;  # 𐍺.
+\u063D\u06E3.𐨎; ; [B1, V6]; xn--8gb64a.xn--mr9c; ; ;  # ؽۣ.𐨎
+xn--8gb64a.xn--mr9c; \u063D\u06E3.𐨎; [B1, V6]; xn--8gb64a.xn--mr9c; ; ;  # ؽۣ.𐨎
+漦Ⴙς.񡻀𐴄; 漦ⴙς.񡻀𐴄; [B5, B6, V7]; xn--3xa972sl47b.xn--9d0d3162t; ; xn--4xa772sl47b.xn--9d0d3162t;  # 漦ⴙς.𐴄
+漦ⴙς.񡻀𐴄; ; [B5, B6, V7]; xn--3xa972sl47b.xn--9d0d3162t; ; xn--4xa772sl47b.xn--9d0d3162t;  # 漦ⴙς.𐴄
+漦ႹΣ.񡻀𐴄; 漦ⴙσ.񡻀𐴄; [B5, B6, V7]; xn--4xa772sl47b.xn--9d0d3162t; ; ;  # 漦ⴙσ.𐴄
+漦ⴙσ.񡻀𐴄; ; [B5, B6, V7]; xn--4xa772sl47b.xn--9d0d3162t; ; ;  # 漦ⴙσ.𐴄
+漦Ⴙσ.񡻀𐴄; 漦ⴙσ.񡻀𐴄; [B5, B6, V7]; xn--4xa772sl47b.xn--9d0d3162t; ; ;  # 漦ⴙσ.𐴄
+xn--4xa772sl47b.xn--9d0d3162t; 漦ⴙσ.񡻀𐴄; [B5, B6, V7]; xn--4xa772sl47b.xn--9d0d3162t; ; ;  # 漦ⴙσ.𐴄
+xn--3xa972sl47b.xn--9d0d3162t; 漦ⴙς.񡻀𐴄; [B5, B6, V7]; xn--3xa972sl47b.xn--9d0d3162t; ; ;  # 漦ⴙς.𐴄
+xn--4xa947d717e.xn--9d0d3162t; 漦Ⴙσ.񡻀𐴄; [B5, B6, V7]; xn--4xa947d717e.xn--9d0d3162t; ; ;  # 漦Ⴙσ.𐴄
+xn--3xa157d717e.xn--9d0d3162t; 漦Ⴙς.񡻀𐴄; [B5, B6, V7]; xn--3xa157d717e.xn--9d0d3162t; ; ;  # 漦Ⴙς.𐴄
+𐹫踧\u0CCD򫚇.󜀃⒈𝨤; ; [B1, V7]; xn--8tc1437dro0d6q06h.xn--tsh2611ncu71e; ; ;  # 𐹫踧್.⒈𝨤
+𐹫踧\u0CCD򫚇.󜀃1.𝨤; ; [B1, V6, V7]; xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; ; ;  # 𐹫踧್.1.𝨤
+xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; 𐹫踧\u0CCD򫚇.󜀃1.𝨤; [B1, V6, V7]; xn--8tc1437dro0d6q06h.xn--1-p948l.xn--m82h; ; ;  # 𐹫踧್.1.𝨤
+xn--8tc1437dro0d6q06h.xn--tsh2611ncu71e; 𐹫踧\u0CCD򫚇.󜀃⒈𝨤; [B1, V7]; xn--8tc1437dro0d6q06h.xn--tsh2611ncu71e; ; ;  # 𐹫踧್.⒈𝨤
+\u200D≮．󠟪𹫏-; \u200D≮.󠟪𹫏-; [C2, V3, V7]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [V3, V7] # ≮.-
+\u200D<\u0338．󠟪𹫏-; \u200D≮.󠟪𹫏-; [C2, V3, V7]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [V3, V7] # ≮.-
+\u200D≮.󠟪𹫏-; ; [C2, V3, V7]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [V3, V7] # ≮.-
+\u200D<\u0338.󠟪𹫏-; \u200D≮.󠟪𹫏-; [C2, V3, V7]; xn--1ug95g.xn----cr99a1w710b; ; xn--gdh.xn----cr99a1w710b; [V3, V7] # ≮.-
+xn--gdh.xn----cr99a1w710b; ≮.󠟪𹫏-; [V3, V7]; xn--gdh.xn----cr99a1w710b; ; ;  # ≮.-
+xn--1ug95g.xn----cr99a1w710b; \u200D≮.󠟪𹫏-; [C2, V3, V7]; xn--1ug95g.xn----cr99a1w710b; ; ;  # ≮.-
+\u200D\u200D襔。Ⴜ5ꡮ񵝏; \u200D\u200D襔.ⴜ5ꡮ񵝏; [C2, V7]; xn--1uga7691f.xn--5-uws5848bpf44e; ; xn--2u2a.xn--5-uws5848bpf44e; [V7] # 襔.ⴜ5ꡮ
+\u200D\u200D襔。ⴜ5ꡮ񵝏; \u200D\u200D襔.ⴜ5ꡮ񵝏; [C2, V7]; xn--1uga7691f.xn--5-uws5848bpf44e; ; xn--2u2a.xn--5-uws5848bpf44e; [V7] # 襔.ⴜ5ꡮ
+xn--2u2a.xn--5-uws5848bpf44e; 襔.ⴜ5ꡮ񵝏; [V7]; xn--2u2a.xn--5-uws5848bpf44e; ; ;  # 襔.ⴜ5ꡮ
+xn--1uga7691f.xn--5-uws5848bpf44e; \u200D\u200D襔.ⴜ5ꡮ񵝏; [C2, V7]; xn--1uga7691f.xn--5-uws5848bpf44e; ; ;  # 襔.ⴜ5ꡮ
+xn--2u2a.xn--5-r1g7167ipfw8d; 襔.Ⴜ5ꡮ񵝏; [V7]; xn--2u2a.xn--5-r1g7167ipfw8d; ; ;  # 襔.Ⴜ5ꡮ
+xn--1uga7691f.xn--5-r1g7167ipfw8d; \u200D\u200D襔.Ⴜ5ꡮ񵝏; [C2, V7]; xn--1uga7691f.xn--5-r1g7167ipfw8d; ; ;  # 襔.Ⴜ5ꡮ
+𐫜𑌼\u200D．婀; 𐫜𑌼\u200D.婀; [B3, C2]; xn--1ugx063g1if.xn--q0s; ; xn--ix9c26l.xn--q0s; [] # 𐫜𑌼.婀
+𐫜𑌼\u200D.婀; ; [B3, C2]; xn--1ugx063g1if.xn--q0s; ; xn--ix9c26l.xn--q0s; [] # 𐫜𑌼.婀
 xn--ix9c26l.xn--q0s; 𐫜𑌼.婀; ; xn--ix9c26l.xn--q0s; ; ;  # 𐫜𑌼.婀
 𐫜𑌼.婀; ; ; xn--ix9c26l.xn--q0s; ; ;  # 𐫜𑌼.婀
-xn--1ugx063g1if.xn--q0s; 𐫜𑌼‍.婀; [B3, C2]; xn--1ugx063g1if.xn--q0s; ; ;  # 𐫜𑌼.婀
-󠅽︒︒𐹯｡⬳᩸; ︒︒𐹯.⬳᩸; [B1, P1, V6]; xn--y86ca186j.xn--7of309e; ; ;  # ︒︒𐹯.⬳᩸
-󠅽。。𐹯。⬳᩸; ..𐹯.⬳᩸; [B1, X4_2]; ..xn--no0d.xn--7of309e; [B1, A4_2]; ;  # ..𐹯.⬳᩸
-..xn--no0d.xn--7of309e; ..𐹯.⬳᩸; [B1, X4_2]; ..xn--no0d.xn--7of309e; [B1, A4_2]; ;  # ..𐹯.⬳᩸
-xn--y86ca186j.xn--7of309e; ︒︒𐹯.⬳᩸; [B1, V6]; xn--y86ca186j.xn--7of309e; ; ;  # ︒︒𐹯.⬳᩸
-𝟖ß．󠄐-?Ⴏ; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.-?Ⴏ; [P1, V3, V6, A3]; 8ss.-?Ⴏ;  # 8ß.-Ⴏ
-8ß.󠄐-?Ⴏ; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.-?Ⴏ; [P1, V3, V6, A3]; 8ss.-?Ⴏ;  # 8ß.-Ⴏ
-8ß.󠄐-?ⴏ; 8ß.-?ⴏ; [P1, V3, V6]; xn--8-qfa.-?ⴏ; [P1, V3, V6, A3]; 8ss.-?ⴏ;  # 8ß.-ⴏ
-8SS.󠄐-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-Ⴏ
-8ss.󠄐-?ⴏ; 8ss.-?ⴏ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-ⴏ
-8ss.󠄐-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-Ⴏ
-8ss.-?Ⴏ; ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-Ⴏ
-8ss.-?ⴏ; ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-ⴏ
-8SS.-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-Ⴏ
-xn--8-qfa.-?ⴏ; 8ß.-?ⴏ; [P1, V3, V6]; xn--8-qfa.-?ⴏ; [P1, V3, V6, A3]; ;  # 8ß.-ⴏ
-XN--8-QFA.-?Ⴏ; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.-?Ⴏ; [P1, V3, V6, A3]; ;  # 8ß.-Ⴏ
-Xn--8-Qfa.-?Ⴏ; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.-?Ⴏ; [P1, V3, V6, A3]; ;  # 8ß.-Ⴏ
-xn--8-qfa.-?Ⴏ; 8ß.-?Ⴏ; [P1, V3, V6]; xn--8-qfa.-?Ⴏ; [P1, V3, V6, A3]; ;  # 8ß.-Ⴏ
-𝟖ß．󠄐-?ⴏ; 8ß.-?ⴏ; [P1, V3, V6]; xn--8-qfa.-?ⴏ; [P1, V3, V6, A3]; 8ss.-?ⴏ;  # 8ß.-ⴏ
-𝟖SS．󠄐-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-Ⴏ
-𝟖ss．󠄐-?ⴏ; 8ss.-?ⴏ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-ⴏ
-𝟖ss．󠄐-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-Ⴏ
-𝟖Ss．󠄐-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-Ⴏ
-8Ss.󠄐-?Ⴏ; 8ss.-?Ⴏ; [P1, V3, V6]; ; [P1, V3, V6, A3]; ;  # 8ss.-Ⴏ
--‍󠋟.‌𐹣Ⴅ; ; [B1, C1, C2, P1, V3, V6]; xn----ugnv7071n.xn--dnd999e4j4p; ; xn----s721m.xn--dnd9201k; [B1, P1, V3, V6] # -.𐹣Ⴅ
--‍󠋟.‌𐹣ⴅ; ; [B1, C1, C2, P1, V3, V6]; xn----ugnv7071n.xn--0ugz32cgr0p; ; xn----s721m.xn--wkj1423e; [B1, P1, V3, V6] # -.𐹣ⴅ
-xn----s721m.xn--wkj1423e; -󠋟.𐹣ⴅ; [B1, V3, V6]; xn----s721m.xn--wkj1423e; ; ;  # -.𐹣ⴅ
-xn----ugnv7071n.xn--0ugz32cgr0p; -‍󠋟.‌𐹣ⴅ; [B1, C1, C2, V3, V6]; xn----ugnv7071n.xn--0ugz32cgr0p; ; ;  # -.𐹣ⴅ
-xn----s721m.xn--dnd9201k; -󠋟.𐹣Ⴅ; [B1, V3, V6]; xn----s721m.xn--dnd9201k; ; ;  # -.𐹣Ⴅ
-xn----ugnv7071n.xn--dnd999e4j4p; -‍󠋟.‌𐹣Ⴅ; [B1, C1, C2, V3, V6]; xn----ugnv7071n.xn--dnd999e4j4p; ; ;  # -.𐹣Ⴅ
-ꦹ‍큷𻶡｡₂; ꦹ‍큷𻶡.2; [C2, P1, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [P1, V5, V6] # ꦹ큷.2
-ꦹ‍큷𻶡｡₂; ꦹ‍큷𻶡.2; [C2, P1, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [P1, V5, V6] # ꦹ큷.2
-ꦹ‍큷𻶡。2; ꦹ‍큷𻶡.2; [C2, P1, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [P1, V5, V6] # ꦹ큷.2
-ꦹ‍큷𻶡。2; ꦹ‍큷𻶡.2; [C2, P1, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [P1, V5, V6] # ꦹ큷.2
-xn--0m9as84e2e21c.2; ꦹ큷𻶡.2; [V5, V6]; xn--0m9as84e2e21c.2; ; ;  # ꦹ큷.2
-xn--1ug1435cfkyaoi04d.2; ꦹ‍큷𻶡.2; [C2, V5, V6]; xn--1ug1435cfkyaoi04d.2; ; ;  # ꦹ큷.2
-?.🄄𞯘; ; [B1, P1, V6]; ?.xn--3x6hx6f; [B1, P1, V6, A3]; ;  # .🄄
-?.3,𞯘; ; [B1, P1, V6]; ?.xn--3,-tb22a; [B1, P1, V6, A3]; ;  # .3,
-?.xn--3,-tb22a; ?.3,𞯘; [B1, P1, V6]; ?.xn--3,-tb22a; [B1, P1, V6, A3]; ;  # .3,
-?.XN--3,-TB22A; ?.3,𞯘; [B1, P1, V6]; ?.xn--3,-tb22a; [B1, P1, V6, A3]; ;  # .3,
-?.Xn--3,-Tb22a; ?.3,𞯘; [B1, P1, V6]; ?.xn--3,-tb22a; [B1, P1, V6, A3]; ;  # .3,
-?.xn--3x6hx6f; ?.🄄𞯘; [B1, P1, V6]; ?.xn--3x6hx6f; [B1, P1, V6, A3]; ;  # .🄄
-?.XN--3X6HX6F; ?.🄄𞯘; [B1, P1, V6]; ?.xn--3x6hx6f; [B1, P1, V6, A3]; ;  # .🄄
-?.Xn--3x6hx6f; ?.🄄𞯘; [B1, P1, V6]; ?.xn--3x6hx6f; [B1, P1, V6, A3]; ;  # .🄄
-𝨖𐩙。۝󀡶ꣅ⒈; 𝨖𐩙.۝󀡶ꣅ⒈; [B1, P1, V5, V6]; xn--rt9cl956a.xn--tlb403mxv4g06s9i; ; ;  # 𝨖.ꣅ⒈
-𝨖𐩙。۝󀡶ꣅ1.; 𝨖𐩙.۝󀡶ꣅ1.; [B1, P1, V5, V6]; xn--rt9cl956a.xn--1-dxc8545j0693i.; ; ;  # 𝨖.ꣅ1.
-xn--rt9cl956a.xn--1-dxc8545j0693i.; 𝨖𐩙.۝󀡶ꣅ1.; [B1, V5, V6]; xn--rt9cl956a.xn--1-dxc8545j0693i.; ; ;  # 𝨖.ꣅ1.
-xn--rt9cl956a.xn--tlb403mxv4g06s9i; 𝨖𐩙.۝󀡶ꣅ⒈; [B1, V5, V6]; xn--rt9cl956a.xn--tlb403mxv4g06s9i; ; ;  # 𝨖.ꣅ⒈
-򒈣סڸ。Ⴈ‍; 򒈣סڸ.Ⴈ‍; [B5, B6, C2, P1, V6]; xn--meb44b57607c.xn--gnd699e; ; xn--meb44b57607c.xn--gnd; [B5, B6, P1, V6] # סڸ.Ⴈ
-򒈣סڸ。ⴈ‍; 򒈣סڸ.ⴈ‍; [B5, B6, C2, P1, V6]; xn--meb44b57607c.xn--1ug232c; ; xn--meb44b57607c.xn--zkj; [B5, B6, P1, V6] # סڸ.ⴈ
-xn--meb44b57607c.xn--zkj; 򒈣סڸ.ⴈ; [B5, B6, V6]; xn--meb44b57607c.xn--zkj; ; ;  # סڸ.ⴈ
-xn--meb44b57607c.xn--1ug232c; 򒈣סڸ.ⴈ‍; [B5, B6, C2, V6]; xn--meb44b57607c.xn--1ug232c; ; ;  # סڸ.ⴈ
-xn--meb44b57607c.xn--gnd; 򒈣סڸ.Ⴈ; [B5, B6, V6]; xn--meb44b57607c.xn--gnd; ; ;  # סڸ.Ⴈ
-xn--meb44b57607c.xn--gnd699e; 򒈣סڸ.Ⴈ‍; [B5, B6, C2, V6]; xn--meb44b57607c.xn--gnd699e; ; ;  # סڸ.Ⴈ
-󀚶𝨱ߦ⒈．𑗝髯‌; 󀚶𝨱ߦ⒈.𑗝髯‌; [B1, B5, C1, P1, V5, V6]; xn--etb477lq931a1f58e.xn--0ugx259bocxd; ; xn--etb477lq931a1f58e.xn--uj6at43v; [B1, B5, P1, V5, V6] # 𝨱ߦ⒈.𑗝髯
-󀚶𝨱ߦ1..𑗝髯‌; ; [B1, B5, C1, P1, V5, V6, X4_2]; xn--1-idd62296a1fr6e..xn--0ugx259bocxd; [B1, B5, C1, P1, V5, V6, A4_2]; xn--1-idd62296a1fr6e..xn--uj6at43v; [B1, B5, P1, V5, V6, A4_2] # 𝨱ߦ1..𑗝髯
-xn--1-idd62296a1fr6e..xn--uj6at43v; 󀚶𝨱ߦ1..𑗝髯; [B1, B5, V5, V6, X4_2]; xn--1-idd62296a1fr6e..xn--uj6at43v; [B1, B5, V5, V6, A4_2]; ;  # 𝨱ߦ1..𑗝髯
-xn--1-idd62296a1fr6e..xn--0ugx259bocxd; 󀚶𝨱ߦ1..𑗝髯‌; [B1, B5, C1, V5, V6, X4_2]; xn--1-idd62296a1fr6e..xn--0ugx259bocxd; [B1, B5, C1, V5, V6, A4_2]; ;  # 𝨱ߦ1..𑗝髯
-xn--etb477lq931a1f58e.xn--uj6at43v; 󀚶𝨱ߦ⒈.𑗝髯; [B1, B5, V5, V6]; xn--etb477lq931a1f58e.xn--uj6at43v; ; ;  # 𝨱ߦ⒈.𑗝髯
-xn--etb477lq931a1f58e.xn--0ugx259bocxd; 󀚶𝨱ߦ⒈.𑗝髯‌; [B1, B5, C1, V5, V6]; xn--etb477lq931a1f58e.xn--0ugx259bocxd; ; ;  # 𝨱ߦ⒈.𑗝髯
-𐫀．ډ𑌀; 𐫀.ډ𑌀; ; xn--pw9c.xn--fjb8658k; ; ;  # 𐫀.ډ𑌀
-𐫀.ډ𑌀; ; ; xn--pw9c.xn--fjb8658k; ; ;  # 𐫀.ډ𑌀
-xn--pw9c.xn--fjb8658k; 𐫀.ډ𑌀; ; xn--pw9c.xn--fjb8658k; ; ;  # 𐫀.ډ𑌀
-𑋪．𐳝; 𑋪.𐳝; [B1, B3, B6, V5]; xn--fm1d.xn--5c0d; ; ;  # 𑋪.𐳝
-𑋪.𐳝; ; [B1, B3, B6, V5]; xn--fm1d.xn--5c0d; ; ;  # 𑋪.𐳝
-𑋪.𐲝; 𑋪.𐳝; [B1, B3, B6, V5]; xn--fm1d.xn--5c0d; ; ;  # 𑋪.𐳝
-xn--fm1d.xn--5c0d; 𑋪.𐳝; [B1, B3, B6, V5]; xn--fm1d.xn--5c0d; ; ;  # 𑋪.𐳝
-𑋪．𐲝; 𑋪.𐳝; [B1, B3, B6, V5]; xn--fm1d.xn--5c0d; ; ;  # 𑋪.𐳝
-≠膣。ྃ; ≠膣.ྃ; [P1, V5, V6]; xn--1chy468a.xn--2ed; ; ;  # ≠膣.ྃ
-≠膣。ྃ; ≠膣.ྃ; [P1, V5, V6]; xn--1chy468a.xn--2ed; ; ;  # ≠膣.ྃ
-xn--1chy468a.xn--2ed; ≠膣.ྃ; [V5, V6]; xn--1chy468a.xn--2ed; ; ;  # ≠膣.ྃ
-񰀎-ݽ｡ß; 񰀎-ݽ.ß; [B5, B6, P1, V6]; xn----j6c95618k.xn--zca; ; xn----j6c95618k.ss;  # -ݽ.ß
-񰀎-ݽ。ß; 񰀎-ݽ.ß; [B5, B6, P1, V6]; xn----j6c95618k.xn--zca; ; xn----j6c95618k.ss;  # -ݽ.ß
-񰀎-ݽ。SS; 񰀎-ݽ.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
-񰀎-ݽ。ss; 񰀎-ݽ.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
-񰀎-ݽ。Ss; 񰀎-ݽ.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
-xn----j6c95618k.ss; 񰀎-ݽ.ss; [B5, B6, V6]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
-xn----j6c95618k.xn--zca; 񰀎-ݽ.ß; [B5, B6, V6]; xn----j6c95618k.xn--zca; ; ;  # -ݽ.ß
-񰀎-ݽ｡SS; 񰀎-ݽ.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
-񰀎-ݽ｡ss; 񰀎-ݽ.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
-񰀎-ݽ｡Ss; 񰀎-ݽ.ss; [B5, B6, P1, V6]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
-ς𐹠ᡚ𑄳．⾭𐹽𽐖𐫜; ς𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, P1, V6]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h;  # ς𐹠ᡚ𑄳.靑𐹽𐫜
-ς𐹠ᡚ𑄳.靑𐹽𽐖𐫜; ; [B5, B6, P1, V6]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h;  # ς𐹠ᡚ𑄳.靑𐹽𐫜
-Σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, P1, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # σ𐹠ᡚ𑄳.靑𐹽𐫜
-σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; ; [B5, B6, P1, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # σ𐹠ᡚ𑄳.靑𐹽𐫜
-xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # σ𐹠ᡚ𑄳.靑𐹽𐫜
-xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ς𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, V6]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # ς𐹠ᡚ𑄳.靑𐹽𐫜
-Σ𐹠ᡚ𑄳．⾭𐹽𽐖𐫜; σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, P1, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # σ𐹠ᡚ𑄳.靑𐹽𐫜
-σ𐹠ᡚ𑄳．⾭𐹽𽐖𐫜; σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, P1, V6]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # σ𐹠ᡚ𑄳.靑𐹽𐫜
-𐋷。‍; 𐋷.‍; [C2]; xn--r97c.xn--1ug; ; xn--r97c.; [] # 𐋷.
-xn--r97c.; 𐋷.; ; xn--r97c.; ; ;  # 𐋷.
-𐋷.; ; ; xn--r97c.; ; ;  # 𐋷.
-xn--r97c.xn--1ug; 𐋷.‍; [C2]; xn--r97c.xn--1ug; ; ;  # 𐋷.
-𑰳𑈯。⥪; 𑰳𑈯.⥪; [V5]; xn--2g1d14o.xn--jti; ; ;  # 𑰳𑈯.⥪
-xn--2g1d14o.xn--jti; 𑰳𑈯.⥪; [V5]; xn--2g1d14o.xn--jti; ; ;  # 𑰳𑈯.⥪
-𑆀䁴񤧣．Ⴕ𝟜‌͈; 𑆀䁴񤧣.Ⴕ4‌͈; [C1, P1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb324h32o; ; xn--1mnx647cg3x1b.xn--4-zfb324h; [P1, V5, V6] # 𑆀䁴.Ⴕ4͈
-𑆀䁴񤧣.Ⴕ4‌͈; ; [C1, P1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb324h32o; ; xn--1mnx647cg3x1b.xn--4-zfb324h; [P1, V5, V6] # 𑆀䁴.Ⴕ4͈
-𑆀䁴񤧣.ⴕ4‌͈; ; [C1, P1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; xn--1mnx647cg3x1b.xn--4-zfb5123a; [P1, V5, V6] # 𑆀䁴.ⴕ4͈
-xn--1mnx647cg3x1b.xn--4-zfb5123a; 𑆀䁴񤧣.ⴕ4͈; [V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb5123a; ; ;  # 𑆀䁴.ⴕ4͈
-xn--1mnx647cg3x1b.xn--4-zfb502tlsl; 𑆀䁴񤧣.ⴕ4‌͈; [C1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; ;  # 𑆀䁴.ⴕ4͈
-xn--1mnx647cg3x1b.xn--4-zfb324h; 𑆀䁴񤧣.Ⴕ4͈; [V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb324h; ; ;  # 𑆀䁴.Ⴕ4͈
-xn--1mnx647cg3x1b.xn--4-zfb324h32o; 𑆀䁴񤧣.Ⴕ4‌͈; [C1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb324h32o; ; ;  # 𑆀䁴.Ⴕ4͈
-𑆀䁴񤧣．ⴕ𝟜‌͈; 𑆀䁴񤧣.ⴕ4‌͈; [C1, P1, V5, V6]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; xn--1mnx647cg3x1b.xn--4-zfb5123a; [P1, V5, V6] # 𑆀䁴.ⴕ4͈
-憡?‌Ⴔ.𐋮‍≠; ; [C1, C2, P1, V6]; 憡?‌Ⴔ.xn--1ug73gl146a; [C1, C2, P1, V6, A3]; 憡?Ⴔ.xn--1chz659f; [P1, V6, A3] # 憡Ⴔ.𐋮≠
-憡?‌Ⴔ.𐋮‍≠; 憡?‌Ⴔ.𐋮‍≠; [C1, C2, P1, V6]; 憡?‌Ⴔ.xn--1ug73gl146a; [C1, C2, P1, V6, A3]; 憡?Ⴔ.xn--1chz659f; [P1, V6, A3] # 憡Ⴔ.𐋮≠
-憡?‌ⴔ.𐋮‍≠; 憡?‌ⴔ.𐋮‍≠; [C1, C2, P1, V6]; 憡?‌ⴔ.xn--1ug73gl146a; [C1, C2, P1, V6, A3]; 憡?ⴔ.xn--1chz659f; [P1, V6, A3] # 憡ⴔ.𐋮≠
-憡?‌ⴔ.𐋮‍≠; ; [C1, C2, P1, V6]; 憡?‌ⴔ.xn--1ug73gl146a; [C1, C2, P1, V6, A3]; 憡?ⴔ.xn--1chz659f; [P1, V6, A3] # 憡ⴔ.𐋮≠
-憡?ⴔ.xn--1chz659f; 憡?ⴔ.𐋮≠; [P1, V6]; 憡?ⴔ.xn--1chz659f; [P1, V6, A3]; ;  # 憡ⴔ.𐋮≠
-憡?Ⴔ.XN--1CHZ659F; 憡?Ⴔ.𐋮≠; [P1, V6]; 憡?Ⴔ.xn--1chz659f; [P1, V6, A3]; ;  # 憡Ⴔ.𐋮≠
-憡?Ⴔ.xn--1chz659f; 憡?Ⴔ.𐋮≠; [P1, V6]; 憡?Ⴔ.xn--1chz659f; [P1, V6, A3]; ;  # 憡Ⴔ.𐋮≠
-憡?‌ⴔ.xn--1ug73gl146a; 憡?‌ⴔ.𐋮‍≠; [C1, C2, P1, V6]; 憡?‌ⴔ.xn--1ug73gl146a; [C1, C2, P1, V6, A3]; 憡?ⴔ.xn--1ug73gl146a; [C2, P1, V6, A3] # 憡ⴔ.𐋮≠
-憡?‌Ⴔ.XN--1UG73GL146A; 憡?‌Ⴔ.𐋮‍≠; [C1, C2, P1, V6]; 憡?‌Ⴔ.xn--1ug73gl146a; [C1, C2, P1, V6, A3]; 憡?Ⴔ.xn--1ug73gl146a; [C2, P1, V6, A3] # 憡Ⴔ.𐋮≠
-憡?‌Ⴔ.xn--1ug73gl146a; 憡?‌Ⴔ.𐋮‍≠; [C1, C2, P1, V6]; 憡?‌Ⴔ.xn--1ug73gl146a; [C1, C2, P1, V6, A3]; 憡?Ⴔ.xn--1ug73gl146a; [C2, P1, V6, A3] # 憡Ⴔ.𐋮≠
-憡?Ⴔ.xn--1ug73gl146a; 憡?Ⴔ.𐋮‍≠; [C2, P1, V6]; 憡?Ⴔ.xn--1ug73gl146a; [C2, P1, V6, A3]; ;  # 憡Ⴔ.𐋮≠
-憡?ⴔ.xn--1ug73gl146a; 憡?ⴔ.𐋮‍≠; [C2, P1, V6]; 憡?ⴔ.xn--1ug73gl146a; [C2, P1, V6, A3]; ;  # 憡ⴔ.𐋮≠
-憡?Ⴔ.XN--1UG73GL146A; 憡?Ⴔ.𐋮‍≠; [C2, P1, V6]; 憡?Ⴔ.xn--1ug73gl146a; [C2, P1, V6, A3]; ;  # 憡Ⴔ.𐋮≠
+xn--1ugx063g1if.xn--q0s; 𐫜𑌼\u200D.婀; [B3, C2]; xn--1ugx063g1if.xn--q0s; ; ;  # 𐫜𑌼.婀
+󠅽︒︒𐹯｡⬳\u1A78; ︒︒𐹯.⬳\u1A78; [B1, V7]; xn--y86ca186j.xn--7of309e; ; ;  # ︒︒𐹯.⬳᩸
+󠅽。。𐹯。⬳\u1A78; ..𐹯.⬳\u1A78; [B1, X4_2]; ..xn--no0d.xn--7of309e; [B1, A4_2]; ;  # ..𐹯.⬳᩸
+..xn--no0d.xn--7of309e; ..𐹯.⬳\u1A78; [B1, X4_2]; ..xn--no0d.xn--7of309e; [B1, A4_2]; ;  # ..𐹯.⬳᩸
+xn--y86ca186j.xn--7of309e; ︒︒𐹯.⬳\u1A78; [B1, V7]; xn--y86ca186j.xn--7of309e; ; ;  # ︒︒𐹯.⬳᩸
+𝟖ß．󠄐-?Ⴏ; 8ß.-?ⴏ; [V3, U1]; xn--8-qfa.xn---?-261a; ; 8ss.xn---?-261a;  # 8ß.-?ⴏ
+8ß.󠄐-?Ⴏ; 8ß.-?ⴏ; [V3, U1]; xn--8-qfa.xn---?-261a; ; 8ss.xn---?-261a;  # 8ß.-?ⴏ
+8ß.󠄐-?ⴏ; 8ß.-?ⴏ; [V3, U1]; xn--8-qfa.xn---?-261a; ; 8ss.xn---?-261a;  # 8ß.-?ⴏ
+8SS.󠄐-?Ⴏ; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+8ss.󠄐-?ⴏ; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+8ss.󠄐-?Ⴏ; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+8ss.xn---?-261a; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+xn--8-qfa.xn---?-261a; 8ß.-?ⴏ; [V3, U1]; xn--8-qfa.xn---?-261a; ; ;  # 8ß.-?ⴏ
+𝟖ß．󠄐-?ⴏ; 8ß.-?ⴏ; [V3, U1]; xn--8-qfa.xn---?-261a; ; 8ss.xn---?-261a;  # 8ß.-?ⴏ
+𝟖SS．󠄐-?Ⴏ; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+𝟖ss．󠄐-?ⴏ; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+𝟖ss．󠄐-?Ⴏ; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+8ss.xn---?-gfk; 8ss.-?Ⴏ; [V3, V7, U1]; 8ss.xn---?-gfk; ; ;  # 8ss.-?Ⴏ
+xn--8-qfa.xn---?-gfk; 8ß.-?Ⴏ; [V3, V7, U1]; xn--8-qfa.xn---?-gfk; ; ;  # 8ß.-?Ⴏ
+8ss.-?Ⴏ; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+8ss.-?ⴏ; ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+8SS.-?Ⴏ; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+xn--8-qfa.-?ⴏ; 8ß.-?ⴏ; [V3, U1]; xn--8-qfa.xn---?-261a; ; ;  # 8ß.-?ⴏ
+XN--8-QFA.-?Ⴏ; 8ß.-?ⴏ; [V3, U1]; xn--8-qfa.xn---?-261a; ; ;  # 8ß.-?ⴏ
+Xn--8-Qfa.-?Ⴏ; 8ß.-?ⴏ; [V3, U1]; xn--8-qfa.xn---?-261a; ; ;  # 8ß.-?ⴏ
+xn--8-qfa.-?Ⴏ; 8ß.-?ⴏ; [V3, U1]; xn--8-qfa.xn---?-261a; ; ;  # 8ß.-?ⴏ
+𝟖Ss．󠄐-?Ⴏ; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+8Ss.󠄐-?Ⴏ; 8ss.-?ⴏ; [V3, U1]; 8ss.xn---?-261a; ; ;  # 8ss.-?ⴏ
+-\u200D󠋟.\u200C𐹣Ⴅ; -\u200D󠋟.\u200C𐹣ⴅ; [B1, C1, C2, V3, V7]; xn----ugnv7071n.xn--0ugz32cgr0p; ; xn----s721m.xn--wkj1423e; [B1, V3, V7] # -.𐹣ⴅ
+-\u200D󠋟.\u200C𐹣ⴅ; ; [B1, C1, C2, V3, V7]; xn----ugnv7071n.xn--0ugz32cgr0p; ; xn----s721m.xn--wkj1423e; [B1, V3, V7] # -.𐹣ⴅ
+xn----s721m.xn--wkj1423e; -󠋟.𐹣ⴅ; [B1, V3, V7]; xn----s721m.xn--wkj1423e; ; ;  # -.𐹣ⴅ
+xn----ugnv7071n.xn--0ugz32cgr0p; -\u200D󠋟.\u200C𐹣ⴅ; [B1, C1, C2, V3, V7]; xn----ugnv7071n.xn--0ugz32cgr0p; ; ;  # -.𐹣ⴅ
+xn----s721m.xn--dnd9201k; -󠋟.𐹣Ⴅ; [B1, V3, V7]; xn----s721m.xn--dnd9201k; ; ;  # -.𐹣Ⴅ
+xn----ugnv7071n.xn--dnd999e4j4p; -\u200D󠋟.\u200C𐹣Ⴅ; [B1, C1, C2, V3, V7]; xn----ugnv7071n.xn--dnd999e4j4p; ; ;  # -.𐹣Ⴅ
+\uA9B9\u200D큷𻶡｡₂; \uA9B9\u200D큷𻶡.2; [C2, V6, V7]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [V6, V7] # ꦹ큷.2
+\uA9B9\u200D큷𻶡｡₂; \uA9B9\u200D큷𻶡.2; [C2, V6, V7]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [V6, V7] # ꦹ큷.2
+\uA9B9\u200D큷𻶡。2; \uA9B9\u200D큷𻶡.2; [C2, V6, V7]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [V6, V7] # ꦹ큷.2
+\uA9B9\u200D큷𻶡。2; \uA9B9\u200D큷𻶡.2; [C2, V6, V7]; xn--1ug1435cfkyaoi04d.2; ; xn--0m9as84e2e21c.2; [V6, V7] # ꦹ큷.2
+xn--0m9as84e2e21c.c; \uA9B9큷𻶡.c; [V6, V7]; xn--0m9as84e2e21c.c; ; ;  # ꦹ큷.c
+xn--1ug1435cfkyaoi04d.c; \uA9B9\u200D큷𻶡.c; [C2, V6, V7]; xn--1ug1435cfkyaoi04d.c; ; ;  # ꦹ큷.c
+?.🄄𞯘; ?.3,𞯘; [B1, V7, U1]; ?.xn--3,-tb22a; ; ;  # ?.3,
+?.3,𞯘; ; [B1, V7, U1]; ?.xn--3,-tb22a; ; ;  # ?.3,
+?.xn--3,-tb22a; ?.3,𞯘; [B1, V7, U1]; ?.xn--3,-tb22a; ; ;  # ?.3,
+?.xn--3x6hx6f; ?.🄄𞯘; [B1, V7, U1]; ?.xn--3x6hx6f; ; ;  # ?.🄄
+𝨖𐩙。\u06DD󀡶\uA8C5⒈; 𝨖𐩙.\u06DD󀡶\uA8C5⒈; [B1, V6, V7]; xn--rt9cl956a.xn--tlb403mxv4g06s9i; ; ;  # 𝨖.ꣅ⒈
+𝨖𐩙。\u06DD󀡶\uA8C51.; 𝨖𐩙.\u06DD󀡶\uA8C51.; [B1, V6, V7]; xn--rt9cl956a.xn--1-dxc8545j0693i.; [B1, V6, V7, A4_2]; ;  # 𝨖.ꣅ1.
+xn--rt9cl956a.xn--1-dxc8545j0693i.; 𝨖𐩙.\u06DD󀡶\uA8C51.; [B1, V6, V7]; xn--rt9cl956a.xn--1-dxc8545j0693i.; [B1, V6, V7, A4_2]; ;  # 𝨖.ꣅ1.
+xn--rt9cl956a.xn--tlb403mxv4g06s9i; 𝨖𐩙.\u06DD󀡶\uA8C5⒈; [B1, V6, V7]; xn--rt9cl956a.xn--tlb403mxv4g06s9i; ; ;  # 𝨖.ꣅ⒈
+򒈣\u05E1\u06B8。Ⴈ\u200D; 򒈣\u05E1\u06B8.ⴈ\u200D; [B5, B6, C2, V7]; xn--meb44b57607c.xn--1ug232c; ; xn--meb44b57607c.xn--zkj; [B5, B6, V7] # סڸ.ⴈ
+򒈣\u05E1\u06B8。ⴈ\u200D; 򒈣\u05E1\u06B8.ⴈ\u200D; [B5, B6, C2, V7]; xn--meb44b57607c.xn--1ug232c; ; xn--meb44b57607c.xn--zkj; [B5, B6, V7] # סڸ.ⴈ
+xn--meb44b57607c.xn--zkj; 򒈣\u05E1\u06B8.ⴈ; [B5, B6, V7]; xn--meb44b57607c.xn--zkj; ; ;  # סڸ.ⴈ
+xn--meb44b57607c.xn--1ug232c; 򒈣\u05E1\u06B8.ⴈ\u200D; [B5, B6, C2, V7]; xn--meb44b57607c.xn--1ug232c; ; ;  # סڸ.ⴈ
+xn--meb44b57607c.xn--gnd; 򒈣\u05E1\u06B8.Ⴈ; [B5, B6, V7]; xn--meb44b57607c.xn--gnd; ; ;  # סڸ.Ⴈ
+xn--meb44b57607c.xn--gnd699e; 򒈣\u05E1\u06B8.Ⴈ\u200D; [B5, B6, C2, V7]; xn--meb44b57607c.xn--gnd699e; ; ;  # סڸ.Ⴈ
+󀚶𝨱\u07E6⒈．𑗝髯\u200C; 󀚶𝨱\u07E6⒈.𑗝髯\u200C; [B1, B5, C1, V6, V7]; xn--etb477lq931a1f58e.xn--0ugx259bocxd; ; xn--etb477lq931a1f58e.xn--uj6at43v; [B1, B5, V6, V7] # 𝨱ߦ⒈.𑗝髯
+󀚶𝨱\u07E61..𑗝髯\u200C; ; [B1, B5, C1, V6, V7, X4_2]; xn--1-idd62296a1fr6e..xn--0ugx259bocxd; [B1, B5, C1, V6, V7, A4_2]; xn--1-idd62296a1fr6e..xn--uj6at43v; [B1, B5, V6, V7, A4_2] # 𝨱ߦ1..𑗝髯
+xn--1-idd62296a1fr6e..xn--uj6at43v; 󀚶𝨱\u07E61..𑗝髯; [B1, B5, V6, V7, X4_2]; xn--1-idd62296a1fr6e..xn--uj6at43v; [B1, B5, V6, V7, A4_2]; ;  # 𝨱ߦ1..𑗝髯
+xn--1-idd62296a1fr6e..xn--0ugx259bocxd; 󀚶𝨱\u07E61..𑗝髯\u200C; [B1, B5, C1, V6, V7, X4_2]; xn--1-idd62296a1fr6e..xn--0ugx259bocxd; [B1, B5, C1, V6, V7, A4_2]; ;  # 𝨱ߦ1..𑗝髯
+xn--etb477lq931a1f58e.xn--uj6at43v; 󀚶𝨱\u07E6⒈.𑗝髯; [B1, B5, V6, V7]; xn--etb477lq931a1f58e.xn--uj6at43v; ; ;  # 𝨱ߦ⒈.𑗝髯
+xn--etb477lq931a1f58e.xn--0ugx259bocxd; 󀚶𝨱\u07E6⒈.𑗝髯\u200C; [B1, B5, C1, V6, V7]; xn--etb477lq931a1f58e.xn--0ugx259bocxd; ; ;  # 𝨱ߦ⒈.𑗝髯
+𐫀．\u0689𑌀; 𐫀.\u0689𑌀; ; xn--pw9c.xn--fjb8658k; ; ;  # 𐫀.ډ𑌀
+𐫀.\u0689𑌀; ; ; xn--pw9c.xn--fjb8658k; ; ;  # 𐫀.ډ𑌀
+xn--pw9c.xn--fjb8658k; 𐫀.\u0689𑌀; ; xn--pw9c.xn--fjb8658k; ; ;  # 𐫀.ډ𑌀
+𑋪．𐳝; 𑋪.𐳝; [B1, V6]; xn--fm1d.xn--5c0d; ; ;  # 𑋪.𐳝
+𑋪.𐳝; ; [B1, V6]; xn--fm1d.xn--5c0d; ; ;  # 𑋪.𐳝
+𑋪.𐲝; 𑋪.𐳝; [B1, V6]; xn--fm1d.xn--5c0d; ; ;  # 𑋪.𐳝
+xn--fm1d.xn--5c0d; 𑋪.𐳝; [B1, V6]; xn--fm1d.xn--5c0d; ; ;  # 𑋪.𐳝
+𑋪．𐲝; 𑋪.𐳝; [B1, V6]; xn--fm1d.xn--5c0d; ; ;  # 𑋪.𐳝
+≠膣。\u0F83; ≠膣.\u0F83; [V6]; xn--1chy468a.xn--2ed; ; ;  # ≠膣.ྃ
+=\u0338膣。\u0F83; ≠膣.\u0F83; [V6]; xn--1chy468a.xn--2ed; ; ;  # ≠膣.ྃ
+xn--1chy468a.xn--2ed; ≠膣.\u0F83; [V6]; xn--1chy468a.xn--2ed; ; ;  # ≠膣.ྃ
+񰀎-\u077D｡ß; 񰀎-\u077D.ß; [B5, B6, V7]; xn----j6c95618k.xn--zca; ; xn----j6c95618k.ss;  # -ݽ.ß
+񰀎-\u077D。ß; 񰀎-\u077D.ß; [B5, B6, V7]; xn----j6c95618k.xn--zca; ; xn----j6c95618k.ss;  # -ݽ.ß
+񰀎-\u077D。SS; 񰀎-\u077D.ss; [B5, B6, V7]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
+񰀎-\u077D。ss; 񰀎-\u077D.ss; [B5, B6, V7]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
+񰀎-\u077D。Ss; 񰀎-\u077D.ss; [B5, B6, V7]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
+xn----j6c95618k.ss; 񰀎-\u077D.ss; [B5, B6, V7]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
+xn----j6c95618k.xn--zca; 񰀎-\u077D.ß; [B5, B6, V7]; xn----j6c95618k.xn--zca; ; ;  # -ݽ.ß
+񰀎-\u077D｡SS; 񰀎-\u077D.ss; [B5, B6, V7]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
+񰀎-\u077D｡ss; 񰀎-\u077D.ss; [B5, B6, V7]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
+񰀎-\u077D｡Ss; 񰀎-\u077D.ss; [B5, B6, V7]; xn----j6c95618k.ss; ; ;  # -ݽ.ss
+ς𐹠ᡚ𑄳．⾭𐹽𽐖𐫜; ς𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, V7]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h;  # ς𐹠ᡚ𑄳.靑𐹽𐫜
+ς𐹠ᡚ𑄳.靑𐹽𽐖𐫜; ; [B5, B6, V7]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h;  # ς𐹠ᡚ𑄳.靑𐹽𐫜
+Σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, V7]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # σ𐹠ᡚ𑄳.靑𐹽𐫜
+σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; ; [B5, B6, V7]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # σ𐹠ᡚ𑄳.靑𐹽𐫜
+xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, V7]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # σ𐹠ᡚ𑄳.靑𐹽𐫜
+xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ς𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, V7]; xn--3xa856hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # ς𐹠ᡚ𑄳.靑𐹽𐫜
+Σ𐹠ᡚ𑄳．⾭𐹽𽐖𐫜; σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, V7]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # σ𐹠ᡚ𑄳.靑𐹽𐫜
+σ𐹠ᡚ𑄳．⾭𐹽𽐖𐫜; σ𐹠ᡚ𑄳.靑𐹽𽐖𐫜; [B5, B6, V7]; xn--4xa656hp23pxmc.xn--es5a888tvjc2u15h; ; ;  # σ𐹠ᡚ𑄳.靑𐹽𐫜
+𐋷。\u200D; 𐋷.\u200D; [C2]; xn--r97c.xn--1ug; ; xn--r97c.; [A4_2] # 𐋷.
+xn--r97c.; 𐋷.; ; xn--r97c.; [A4_2]; ;  # 𐋷.
+𐋷.; ; ; xn--r97c.; [A4_2]; ;  # 𐋷.
+xn--r97c.xn--1ug; 𐋷.\u200D; [C2]; xn--r97c.xn--1ug; ; ;  # 𐋷.
+𑰳𑈯。⥪; 𑰳𑈯.⥪; [V6]; xn--2g1d14o.xn--jti; ; ;  # 𑰳𑈯.⥪
+xn--2g1d14o.xn--jti; 𑰳𑈯.⥪; [V6]; xn--2g1d14o.xn--jti; ; ;  # 𑰳𑈯.⥪
+𑆀䁴񤧣．Ⴕ𝟜\u200C\u0348; 𑆀䁴񤧣.ⴕ4\u200C\u0348; [C1, V6, V7]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; xn--1mnx647cg3x1b.xn--4-zfb5123a; [V6, V7] # 𑆀䁴.ⴕ4͈
+𑆀䁴񤧣.Ⴕ4\u200C\u0348; 𑆀䁴񤧣.ⴕ4\u200C\u0348; [C1, V6, V7]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; xn--1mnx647cg3x1b.xn--4-zfb5123a; [V6, V7] # 𑆀䁴.ⴕ4͈
+𑆀䁴񤧣.ⴕ4\u200C\u0348; ; [C1, V6, V7]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; xn--1mnx647cg3x1b.xn--4-zfb5123a; [V6, V7] # 𑆀䁴.ⴕ4͈
+xn--1mnx647cg3x1b.xn--4-zfb5123a; 𑆀䁴񤧣.ⴕ4\u0348; [V6, V7]; xn--1mnx647cg3x1b.xn--4-zfb5123a; ; ;  # 𑆀䁴.ⴕ4͈
+xn--1mnx647cg3x1b.xn--4-zfb502tlsl; 𑆀䁴񤧣.ⴕ4\u200C\u0348; [C1, V6, V7]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; ;  # 𑆀䁴.ⴕ4͈
+𑆀䁴񤧣．ⴕ𝟜\u200C\u0348; 𑆀䁴񤧣.ⴕ4\u200C\u0348; [C1, V6, V7]; xn--1mnx647cg3x1b.xn--4-zfb502tlsl; ; xn--1mnx647cg3x1b.xn--4-zfb5123a; [V6, V7] # 𑆀䁴.ⴕ4͈
+xn--1mnx647cg3x1b.xn--4-zfb324h; 𑆀䁴񤧣.Ⴕ4\u0348; [V6, V7]; xn--1mnx647cg3x1b.xn--4-zfb324h; ; ;  # 𑆀䁴.Ⴕ4͈
+xn--1mnx647cg3x1b.xn--4-zfb324h32o; 𑆀䁴񤧣.Ⴕ4\u200C\u0348; [C1, V6, V7]; xn--1mnx647cg3x1b.xn--4-zfb324h32o; ; ;  # 𑆀䁴.Ⴕ4͈
+憡?\u200CႴ.𐋮\u200D≠; 憡?\u200Cⴔ.𐋮\u200D≠; [C1, C2, U1]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1chz659f; [U1] # 憡?ⴔ.𐋮≠
+憡?\u200CႴ.𐋮\u200D=\u0338; 憡?\u200Cⴔ.𐋮\u200D≠; [C1, C2, U1]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1chz659f; [U1] # 憡?ⴔ.𐋮≠
+憡?\u200Cⴔ.𐋮\u200D=\u0338; 憡?\u200Cⴔ.𐋮\u200D≠; [C1, C2, U1]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1chz659f; [U1] # 憡?ⴔ.𐋮≠
+憡?\u200Cⴔ.𐋮\u200D≠; ; [C1, C2, U1]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1chz659f; [U1] # 憡?ⴔ.𐋮≠
+xn--?-fwsr13r.xn--1chz659f; 憡?ⴔ.𐋮≠; [U1]; xn--?-fwsr13r.xn--1chz659f; ; ;  # 憡?ⴔ.𐋮≠
+xn--?-sgn310doh5c.xn--1ug73gl146a; 憡?\u200Cⴔ.𐋮\u200D≠; [C1, C2, U1]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; ;  # 憡?ⴔ.𐋮≠
+xn--?-c1g3623d.xn--1chz659f; 憡?Ⴔ.𐋮≠; [V7, U1]; xn--?-c1g3623d.xn--1chz659f; ; ;  # 憡?Ⴔ.𐋮≠
+xn--?-c1g798iy27d.xn--1ug73gl146a; 憡?\u200CႴ.𐋮\u200D≠; [C1, C2, V7, U1]; xn--?-c1g798iy27d.xn--1ug73gl146a; ; ;  # 憡?Ⴔ.𐋮≠
+憡?ⴔ.xn--1chz659f; 憡?ⴔ.𐋮≠; [U1]; xn--?-fwsr13r.xn--1chz659f; ; ;  # 憡?ⴔ.𐋮≠
+憡?Ⴔ.XN--1CHZ659F; 憡?ⴔ.𐋮≠; [U1]; xn--?-fwsr13r.xn--1chz659f; ; ;  # 憡?ⴔ.𐋮≠
+憡?Ⴔ.xn--1chz659f; 憡?ⴔ.𐋮≠; [U1]; xn--?-fwsr13r.xn--1chz659f; ; ;  # 憡?ⴔ.𐋮≠
+憡?\u200Cⴔ.xn--1ug73gl146a; 憡?\u200Cⴔ.𐋮\u200D≠; [C1, C2, U1]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1ug73gl146a; [C2, U1] # 憡?ⴔ.𐋮≠
+憡?\u200CႴ.XN--1UG73GL146A; 憡?\u200Cⴔ.𐋮\u200D≠; [C1, C2, U1]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1ug73gl146a; [C2, U1] # 憡?ⴔ.𐋮≠
+憡?\u200CႴ.xn--1ug73gl146a; 憡?\u200Cⴔ.𐋮\u200D≠; [C1, C2, U1]; xn--?-sgn310doh5c.xn--1ug73gl146a; ; xn--?-fwsr13r.xn--1ug73gl146a; [C2, U1] # 憡?ⴔ.𐋮≠
+xn--?-fwsr13r.xn--1ug73gl146a; 憡?ⴔ.𐋮\u200D≠; [C2, U1]; xn--?-fwsr13r.xn--1ug73gl146a; ; ;  # 憡?ⴔ.𐋮≠
+xn--?-c1g3623d.xn--1ug73gl146a; 憡?Ⴔ.𐋮\u200D≠; [C2, V7, U1]; xn--?-c1g3623d.xn--1ug73gl146a; ; ;  # 憡?Ⴔ.𐋮≠
+憡?Ⴔ.xn--1ug73gl146a; 憡?ⴔ.𐋮\u200D≠; [C2, U1]; xn--?-fwsr13r.xn--1ug73gl146a; ; ;  # 憡?ⴔ.𐋮≠
+憡?ⴔ.xn--1ug73gl146a; 憡?ⴔ.𐋮\u200D≠; [C2, U1]; xn--?-fwsr13r.xn--1ug73gl146a; ; ;  # 憡?ⴔ.𐋮≠
+憡?Ⴔ.XN--1UG73GL146A; 憡?ⴔ.𐋮\u200D≠; [C2, U1]; xn--?-fwsr13r.xn--1ug73gl146a; ; ;  # 憡?ⴔ.𐋮≠
diff --git a/vendor/idna/tests/deprecated.rs b/vendor/idna/tests/deprecated.rs
new file mode 100644
index 00000000..da316d41
--- /dev/null
+++ b/vendor/idna/tests/deprecated.rs
@@ -0,0 +1,197 @@
+// Copyright 2013-2014 The rust-url developers.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(clippy::assigning_clones)]
+#![allow(deprecated)]
+
+use crate::test::TestFn;
+use std::char;
+use std::fmt::Write;
+
+use idna::Errors;
+
+pub fn collect_tests<F: FnMut(String, TestFn)>(add_test: &mut F) {
+    // https://www.unicode.org/Public/idna/13.0.0/IdnaTestV2.txt
+    for (i, line) in include_str!("IdnaTestV2.txt").lines().enumerate() {
+        if line.is_empty() || line.starts_with('#') {
+            continue;
+        }
+
+        // Remove comments
+        let line = match line.find('#') {
+            Some(index) => &line[0..index],
+            None => line,
+        };
+
+        let mut pieces = line.split(';').map(|x| x.trim()).collect::<Vec<&str>>();
+        let source = unescape(pieces.remove(0));
+
+        // ToUnicode
+        let mut to_unicode = unescape(pieces.remove(0));
+        if to_unicode.is_empty() {
+            to_unicode = source.clone();
+        }
+        let to_unicode_status = status(pieces.remove(0));
+
+        // ToAsciiN
+        let to_ascii_n = pieces.remove(0);
+        let to_ascii_n = if to_ascii_n.is_empty() {
+            to_unicode.clone()
+        } else {
+            to_ascii_n.to_owned()
+        };
+        let to_ascii_n_status = pieces.remove(0);
+        let to_ascii_n_status = if to_ascii_n_status.is_empty() {
+            to_unicode_status.clone()
+        } else {
+            status(to_ascii_n_status)
+        };
+
+        // ToAsciiT
+        let to_ascii_t = pieces.remove(0);
+        let to_ascii_t = if to_ascii_t.is_empty() {
+            to_ascii_n.clone()
+        } else {
+            to_ascii_t.to_owned()
+        };
+        let to_ascii_t_status = pieces.remove(0);
+        let to_ascii_t_status = if to_ascii_t_status.is_empty() {
+            to_ascii_n_status.clone()
+        } else {
+            status(to_ascii_t_status)
+        };
+
+        let test_name = format!("UTS #46 (deprecated API) line {}", i + 1);
+        add_test(
+            test_name,
+            TestFn::DynTestFn(Box::new(move || {
+                let config = idna::Config::default()
+                    .use_std3_ascii_rules(true)
+                    .verify_dns_length(true)
+                    .check_hyphens(true);
+
+                // http://unicode.org/reports/tr46/#Deviations
+                // applications that perform IDNA2008 lookup are not required to check
+                // for these contexts, so we skip all tests annotated with C*
+
+                // Everybody ignores V2
+                // https://github.com/servo/rust-url/pull/240
+                // https://github.com/whatwg/url/issues/53#issuecomment-181528158
+                // http://www.unicode.org/review/pri317/
+
+                // "The special error codes X3 and X4_2 are now returned where a toASCII error code
+                // was formerly being generated in toUnicode due to an empty label."
+                // This is not implemented yet, so we skip toUnicode X4_2 tests for now, too.
+
+                let (to_unicode_value, to_unicode_result) =
+                    config.transitional_processing(false).to_unicode(&source);
+                let to_unicode_result = to_unicode_result.map(|()| to_unicode_value);
+                check(
+                    &source,
+                    (&to_unicode, &to_unicode_status),
+                    to_unicode_result,
+                    |e| e == "X4_2" || e == "V2",
+                );
+
+                let to_ascii_n_result = config.transitional_processing(false).to_ascii(&source);
+                check(
+                    &source,
+                    (&to_ascii_n, &to_ascii_n_status),
+                    to_ascii_n_result,
+                    |e| e == "V2" || e == "A4_2",
+                );
+
+                let to_ascii_t_result = config.transitional_processing(true).to_ascii(&source);
+                check(
+                    &source,
+                    (&to_ascii_t, &to_ascii_t_status),
+                    to_ascii_t_result,
+                    |e| e == "V2" || e == "A4_2",
+                );
+            })),
+        )
+    }
+}
+
+#[allow(clippy::redundant_clone)]
+fn check<F>(source: &str, expected: (&str, &[&str]), actual: Result<String, Errors>, ignore: F)
+where
+    F: Fn(&str) -> bool,
+{
+    if !expected.1.is_empty() {
+        if !expected.1.iter().copied().any(ignore) {
+            let res = actual.ok();
+            assert_eq!(
+                res.clone(),
+                None,
+                "Expected error {:?}. result: {} | source: {}",
+                expected.1,
+                res.unwrap(),
+                source,
+            );
+        }
+    } else {
+        assert!(
+            actual.is_ok(),
+            "Couldn't parse {} | error: {:?}",
+            source,
+            actual.err().unwrap(),
+        );
+        assert_eq!(actual.unwrap(), expected.0, "source: {}", source);
+    }
+}
+
+fn unescape(input: &str) -> String {
+    let mut output = String::new();
+    let mut chars = input.chars();
+    loop {
+        match chars.next() {
+            None => return output,
+            Some(c) => {
+                if c == '\\' {
+                    match chars.next().unwrap() {
+                        '\\' => output.push('\\'),
+                        'u' => {
+                            let c1 = chars.next().unwrap().to_digit(16).unwrap();
+                            let c2 = chars.next().unwrap().to_digit(16).unwrap();
+                            let c3 = chars.next().unwrap().to_digit(16).unwrap();
+                            let c4 = chars.next().unwrap().to_digit(16).unwrap();
+                            match char::from_u32(((c1 * 16 + c2) * 16 + c3) * 16 + c4) {
+                                Some(c) => output.push(c),
+                                None => {
+                                    write!(&mut output, "\\u{:X}{:X}{:X}{:X}", c1, c2, c3, c4)
+                                        .expect("Could not write to output");
+                                }
+                            };
+                        }
+                        _ => panic!("Invalid test data input"),
+                    }
+                } else {
+                    output.push(c);
+                }
+            }
+        }
+    }
+}
+
+fn status(status: &str) -> Vec<&str> {
+    if status.is_empty() || status == "[]" {
+        return Vec::new();
+    }
+
+    let mut result = status.split(", ").collect::<Vec<_>>();
+    assert!(result[0].starts_with('['));
+    result[0] = &result[0][1..];
+
+    let idx = result.len() - 1;
+    let last = &mut result[idx];
+    assert!(last.ends_with(']'));
+    *last = &last[..last.len() - 1];
+
+    result
+}
diff --git a/vendor/idna/tests/punycode.rs b/vendor/idna/tests/punycode.rs
index 2867e496..475f611d 100644
--- a/vendor/idna/tests/punycode.rs
+++ b/vendor/idna/tests/punycode.rs
@@ -7,7 +7,7 @@
 // except according to those terms.
 
 use crate::test::TestFn;
-use idna::punycode::{decode, encode_str};
+use idna::punycode::{decode, decode_to_string, encode_str};
 use serde_json::map::Map;
 use serde_json::Value;
 use std::panic::catch_unwind;
@@ -28,6 +28,17 @@ fn one_test(decoded: &str, encoded: &str) {
         }
     }
 
+    match decode_to_string(encoded) {
+        None => panic!("Decoding {} failed.", encoded),
+        Some(result) => assert!(
+            result == decoded,
+            "Incorrect decoding of \"{}\":\n   \"{}\"\n!= \"{}\"\n",
+            encoded,
+            result,
+            decoded
+        ),
+    }
+
     match encode_str(decoded) {
         None => panic!("Encoding {} failed.", decoded),
         Some(result) => assert!(
diff --git a/vendor/idna/tests/punycode_tests.json b/vendor/idna/tests/punycode_tests.json
index 86785b12..d7b2544c 100644
--- a/vendor/idna/tests/punycode_tests.json
+++ b/vendor/idna/tests/punycode_tests.json
@@ -1,6 +1,6 @@
 [
 {
-    "description": "These tests are copied from https://github.com/bestiejs/punycode.js/blob/master/tests/tests.js , used under the MIT license.",
+    "description": "These tests are copied from https://github.com/mathiasbynens/punycode.js/blob/main/tests/tests.js , used under the MIT license.",
     "decoded": "",
     "encoded": ""
 },
diff --git a/vendor/idna/tests/tests.rs b/vendor/idna/tests/tests.rs
index 0704c81c..4f346d44 100644
--- a/vendor/idna/tests/tests.rs
+++ b/vendor/idna/tests/tests.rs
@@ -1,5 +1,6 @@
 use tester as test;
 
+mod deprecated;
 mod punycode;
 mod uts46;
 
@@ -19,6 +20,7 @@ fn main() {
             })
         };
         punycode::collect_tests(&mut add_test);
+        deprecated::collect_tests(&mut add_test);
         uts46::collect_tests(&mut add_test);
     }
     test::test_main(&std::env::args().collect::<Vec<_>>(), tests, None)
diff --git a/vendor/idna/tests/unit.rs b/vendor/idna/tests/unit.rs
index 297c8cfc..d0b24127 100644
--- a/vendor/idna/tests/unit.rs
+++ b/vendor/idna/tests/unit.rs
@@ -1,5 +1,6 @@
+#![allow(deprecated)]
+
 use assert_matches::assert_matches;
-use unicode_normalization::char::is_combining_mark;
 
 /// https://github.com/servo/rust-url/issues/373
 #[test]
@@ -28,15 +29,21 @@ fn test_punycode_prefix_without_length_check() {
         .check_hyphens(true)
         .use_std3_ascii_rules(true);
 
-    assert_eq!(config.to_ascii("xn--").unwrap(), "");
+    assert!(config.to_ascii("xn--").is_err());
     assert!(config.to_ascii("xn---").is_err());
     assert!(config.to_ascii("xn-----").is_err());
-    assert_eq!(config.to_ascii("xn--.").unwrap(), ".");
-    assert_eq!(config.to_ascii("xn--...").unwrap(), "...");
-    assert_eq!(config.to_ascii(".xn--").unwrap(), ".");
-    assert_eq!(config.to_ascii("...xn--").unwrap(), "...");
-    assert_eq!(config.to_ascii("xn--.xn--").unwrap(), ".");
-    assert_eq!(config.to_ascii("xn--.example.org").unwrap(), ".example.org");
+    assert!(config.to_ascii("xn--.").is_err());
+    assert!(config.to_ascii("xn--...").is_err());
+    assert!(config.to_ascii(".xn--").is_err());
+    assert!(config.to_ascii("...xn--").is_err());
+    assert!(config.to_ascii("xn--.xn--").is_err());
+    assert!(config.to_ascii("xn--.example.org").is_err());
+}
+
+#[test]
+fn test_punycode_invalid_encoding() {
+    let config = idna::Config::default();
+    assert!(config.to_ascii("xn--55555577").is_err());
 }
 
 // http://www.unicode.org/reports/tr46/#Table_Example_Processing
@@ -85,10 +92,10 @@ fn test_examples() {
 fn test_v5() {
     let config = idna::Config::default()
         .verify_dns_length(true)
-        .use_std3_ascii_rules(true);
+        .use_std3_ascii_rules(true)
+        .check_hyphens(true);
 
     // IdnaTest:784 蔏｡𑰺
-    assert!(is_combining_mark('\u{11C3A}'));
     assert!(config.to_ascii("\u{11C3A}").is_err());
     assert!(config.to_ascii("\u{850f}.\u{11C3A}").is_err());
     assert!(config.to_ascii("\u{850f}\u{ff61}\u{11C3A}").is_err());
@@ -98,7 +105,8 @@ fn test_v5() {
 fn test_v8_bidi_rules() {
     let config = idna::Config::default()
         .verify_dns_length(true)
-        .use_std3_ascii_rules(true);
+        .use_std3_ascii_rules(true)
+        .check_hyphens(true);
 
     assert_eq!(config.to_ascii("abc").unwrap(), "abc");
     assert_eq!(config.to_ascii("123").unwrap(), "123");
@@ -118,18 +126,11 @@ fn test_v8_bidi_rules() {
 #[test]
 fn emoji_domains() {
     // HOT BEVERAGE is allowed here...
-    let config = idna::Config::default()
-        .verify_dns_length(true)
-        .use_std3_ascii_rules(true);
-    assert_eq!(config.to_ascii("☕.com").unwrap(), "xn--53h.com");
-
-    // ... but not here
     let config = idna::Config::default()
         .verify_dns_length(true)
         .use_std3_ascii_rules(true)
-        .use_idna_2008_rules(true);
-    let error = format!("{:?}", config.to_ascii("☕.com").unwrap_err());
-    assert!(error.contains("disallowed_in_idna_2008"));
+        .check_hyphens(true);
+    assert_eq!(config.to_ascii("☕.com").unwrap(), "xn--53h.com");
 }
 
 #[test]
diff --git a/vendor/idna/tests/unitbis.rs b/vendor/idna/tests/unitbis.rs
new file mode 100644
index 00000000..fc40d507
--- /dev/null
+++ b/vendor/idna/tests/unitbis.rs
@@ -0,0 +1,374 @@
+use idna::uts46::AsciiDenyList;
+use idna::uts46::DnsLength;
+use idna::uts46::Hyphens;
+
+/// https://github.com/servo/rust-url/issues/373
+#[test]
+fn test_punycode_prefix_with_length_check() {
+    let config = idna::uts46::Uts46::new();
+
+    assert!(config
+        .to_ascii(
+            b"xn--",
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn---",
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn-----",
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn--.",
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn--...",
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b".xn--",
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"...xn--",
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn--.xn--",
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn--.example.org",
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+}
+
+/// https://github.com/servo/rust-url/issues/373
+#[test]
+fn test_punycode_prefix_without_length_check() {
+    let config = idna::uts46::Uts46::new();
+
+    assert!(config
+        .to_ascii(
+            b"xn--",
+            AsciiDenyList::URL,
+            Hyphens::Allow,
+            DnsLength::Ignore
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn---",
+            AsciiDenyList::URL,
+            Hyphens::Allow,
+            DnsLength::Ignore
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn-----",
+            AsciiDenyList::URL,
+            Hyphens::Allow,
+            DnsLength::Ignore
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn--.",
+            AsciiDenyList::URL,
+            Hyphens::Allow,
+            DnsLength::Ignore
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn--...",
+            AsciiDenyList::URL,
+            Hyphens::Allow,
+            DnsLength::Ignore
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b".xn--",
+            AsciiDenyList::URL,
+            Hyphens::Allow,
+            DnsLength::Ignore
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"...xn--",
+            AsciiDenyList::URL,
+            Hyphens::Allow,
+            DnsLength::Ignore
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn--.xn--",
+            AsciiDenyList::URL,
+            Hyphens::Allow,
+            DnsLength::Ignore
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            b"xn--.example.org",
+            AsciiDenyList::URL,
+            Hyphens::Allow,
+            DnsLength::Ignore
+        )
+        .is_err());
+}
+/*
+// http://www.unicode.org/reports/tr46/#Table_Example_Processing
+#[test]
+fn test_examples() {
+    let codec = idna::uts46bis::Uts46::new();
+    let mut out = String::new();
+
+    assert_matches!(codec.to_unicode("Bloß.de", &mut out), Ok(()));
+    assert_eq!(out, "bloß.de");
+
+    out.clear();
+    assert_matches!(codec.to_unicode("xn--blo-7ka.de", &mut out), Ok(()));
+    assert_eq!(out, "bloß.de");
+
+    out.clear();
+    assert_matches!(codec.to_unicode("u\u{308}.com", &mut out), Ok(()));
+    assert_eq!(out, "ü.com");
+
+    out.clear();
+    assert_matches!(codec.to_unicode("xn--tda.com", &mut out), Ok(()));
+    assert_eq!(out, "ü.com");
+
+    out.clear();
+    assert_matches!(codec.to_unicode("xn--u-ccb.com", &mut out), Err(_));
+
+    out.clear();
+    assert_matches!(codec.to_unicode("a⒈com", &mut out), Err(_));
+
+    out.clear();
+    assert_matches!(codec.to_unicode("xn--a-ecp.ru", &mut out), Err(_));
+
+    out.clear();
+    assert_matches!(codec.to_unicode("xn--0.pt", &mut out), Err(_));
+
+    out.clear();
+    assert_matches!(codec.to_unicode("日本語。ＪＰ", &mut out), Ok(()));
+    assert_eq!(out, "日本語.jp");
+
+    out.clear();
+    assert_matches!(codec.to_unicode("☕.us", &mut out), Ok(()));
+    assert_eq!(out, "☕.us");
+}
+*/
+
+#[test]
+fn test_v5() {
+    let config = idna::uts46::Uts46::new();
+
+    // IdnaTest:784 蔏｡𑰺
+    assert!(config
+        .to_ascii(
+            "\u{11C3A}".as_bytes(),
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            "\u{850f}.\u{11C3A}".as_bytes(),
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            "\u{850f}\u{ff61}\u{11C3A}".as_bytes(),
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+}
+
+#[test]
+fn test_v8_bidi_rules() {
+    let config = idna::uts46::Uts46::new();
+
+    assert_eq!(
+        config
+            .to_ascii(
+                b"abc",
+                AsciiDenyList::STD3,
+                Hyphens::Check,
+                DnsLength::Verify,
+            )
+            .unwrap(),
+        "abc"
+    );
+    assert_eq!(
+        config
+            .to_ascii(
+                b"123",
+                AsciiDenyList::STD3,
+                Hyphens::Check,
+                DnsLength::Verify,
+            )
+            .unwrap(),
+        "123"
+    );
+    assert_eq!(
+        config
+            .to_ascii(
+                "אבּג".as_bytes(),
+                AsciiDenyList::STD3,
+                Hyphens::Check,
+                DnsLength::Verify,
+            )
+            .unwrap(),
+        "xn--kdb3bdf"
+    );
+    assert_eq!(
+        config
+            .to_ascii(
+                "ابج".as_bytes(),
+                AsciiDenyList::STD3,
+                Hyphens::Check,
+                DnsLength::Verify,
+            )
+            .unwrap(),
+        "xn--mgbcm"
+    );
+    assert_eq!(
+        config
+            .to_ascii(
+                "abc.ابج".as_bytes(),
+                AsciiDenyList::STD3,
+                Hyphens::Check,
+                DnsLength::Verify,
+            )
+            .unwrap(),
+        "abc.xn--mgbcm"
+    );
+    assert_eq!(
+        config
+            .to_ascii(
+                "אבּג.ابج".as_bytes(),
+                AsciiDenyList::STD3,
+                Hyphens::Check,
+                DnsLength::Verify,
+            )
+            .unwrap(),
+        "xn--kdb3bdf.xn--mgbcm"
+    );
+
+    // Bidi domain names cannot start with digits
+    assert!(config
+        .to_ascii(
+            "0a.\u{05D0}".as_bytes(),
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+    assert!(config
+        .to_ascii(
+            "0à.\u{05D0}".as_bytes(),
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+
+    // Bidi chars may be punycode-encoded
+    assert!(config
+        .to_ascii(
+            b"xn--0ca24w",
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+}
+
+#[test]
+fn emoji_domains() {
+    // HOT BEVERAGE is allowed here...
+    let config = idna::uts46::Uts46::new();
+    assert_eq!(
+        config
+            .to_ascii(
+                "☕.com".as_bytes(),
+                AsciiDenyList::STD3,
+                Hyphens::Check,
+                DnsLength::Verify,
+            )
+            .unwrap(),
+        "xn--53h.com"
+    );
+}
+
+#[test]
+fn unicode_before_delimiter() {
+    let config = idna::uts46::Uts46::new();
+    assert!(config
+        .to_ascii(
+            "xn--f\u{34a}-PTP".as_bytes(),
+            AsciiDenyList::STD3,
+            Hyphens::Check,
+            DnsLength::Verify,
+        )
+        .is_err());
+}
+
+#[test]
+fn upper_case_ascii_in_punycode() {
+    let config = idna::uts46::Uts46::new();
+    let (unicode, result) =
+        config.to_unicode("xn--A-1ga".as_bytes(), AsciiDenyList::STD3, Hyphens::Check);
+    assert!(result.is_ok());
+    assert_eq!(&unicode, "aö");
+}
diff --git a/vendor/idna/tests/uts46.rs b/vendor/idna/tests/uts46.rs
index bd402ce9..f9be320a 100644
--- a/vendor/idna/tests/uts46.rs
+++ b/vendor/idna/tests/uts46.rs
@@ -6,10 +6,16 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#![allow(clippy::assigning_clones)]
+
 use crate::test::TestFn;
 use std::char;
 use std::fmt::Write;
 
+use idna::uts46::verify_dns_length;
+use idna::uts46::ProcessingError;
+use idna::uts46::ProcessingSuccess;
+use idna::uts46::{AsciiDenyList, DnsLength, ErrorPolicy, Hyphens};
 use idna::Errors;
 
 pub fn collect_tests<F: FnMut(String, TestFn)>(add_test: &mut F) {
@@ -49,28 +55,11 @@ pub fn collect_tests<F: FnMut(String, TestFn)>(add_test: &mut F) {
             status(to_ascii_n_status)
         };
 
-        // ToAsciiT
-        let to_ascii_t = pieces.remove(0);
-        let to_ascii_t = if to_ascii_t.is_empty() {
-            to_ascii_n.clone()
-        } else {
-            to_ascii_t.to_owned()
-        };
-        let to_ascii_t_status = pieces.remove(0);
-        let to_ascii_t_status = if to_ascii_t_status.is_empty() {
-            to_ascii_n_status.clone()
-        } else {
-            status(to_ascii_t_status)
-        };
-
         let test_name = format!("UTS #46 line {}", i + 1);
         add_test(
             test_name,
             TestFn::DynTestFn(Box::new(move || {
-                let config = idna::Config::default()
-                    .use_std3_ascii_rules(true)
-                    .verify_dns_length(true)
-                    .check_hyphens(true);
+                let config = idna::uts46::Uts46::new();
 
                 // http://unicode.org/reports/tr46/#Deviations
                 // applications that perform IDNA2008 lookup are not required to check
@@ -86,29 +75,85 @@ pub fn collect_tests<F: FnMut(String, TestFn)>(add_test: &mut F) {
                 // This is not implemented yet, so we skip toUnicode X4_2 tests for now, too.
 
                 let (to_unicode_value, to_unicode_result) =
-                    config.transitional_processing(false).to_unicode(&source);
-                let to_unicode_result = to_unicode_result.map(|()| to_unicode_value);
+                    config.to_unicode(source.as_bytes(), AsciiDenyList::STD3, Hyphens::Check);
+                let to_unicode_result = to_unicode_result.map(|()| to_unicode_value.into_owned());
                 check(
                     &source,
                     (&to_unicode, &to_unicode_status),
                     to_unicode_result,
-                    |e| e.starts_with('C') || e == "V2" || e == "X4_2",
+                    |e| e == "X4_2",
                 );
 
-                let to_ascii_n_result = config.transitional_processing(false).to_ascii(&source);
+                let to_ascii_n_result = config.to_ascii(
+                    source.as_bytes(),
+                    AsciiDenyList::STD3,
+                    Hyphens::Check,
+                    DnsLength::Verify,
+                );
                 check(
                     &source,
                     (&to_ascii_n, &to_ascii_n_status),
-                    to_ascii_n_result,
-                    |e| e.starts_with('C') || e == "V2",
+                    to_ascii_n_result.map(|cow| cow.into_owned()),
+                    |_| false,
                 );
 
-                let to_ascii_t_result = config.transitional_processing(true).to_ascii(&source);
+                let mut to_unicode_simultaneous = String::new();
+                let mut to_ascii_simultaneous = String::new();
+                let (to_unicode_simultaneous_result, to_ascii_simultaneous_result) = match config
+                    .process(
+                        source.as_bytes(),
+                        AsciiDenyList::STD3,
+                        Hyphens::Check,
+                        ErrorPolicy::MarkErrors,
+                        |_, _, _| true,
+                        &mut to_unicode_simultaneous,
+                        Some(&mut to_ascii_simultaneous),
+                    ) {
+                    Ok(ProcessingSuccess::Passthrough) => (
+                        Ok(source.to_string()),
+                        if verify_dns_length(&source, false) {
+                            Ok(source.to_string())
+                        } else {
+                            Err(Errors::default())
+                        },
+                    ),
+                    Ok(ProcessingSuccess::WroteToSink) => {
+                        if to_ascii_simultaneous.is_empty() {
+                            (
+                                Ok(to_unicode_simultaneous.clone()),
+                                if verify_dns_length(&to_unicode_simultaneous, false) {
+                                    Ok(to_unicode_simultaneous)
+                                } else {
+                                    Err(Errors::default())
+                                },
+                            )
+                        } else {
+                            (
+                                Ok(to_unicode_simultaneous),
+                                if verify_dns_length(&to_ascii_simultaneous, false) {
+                                    Ok(to_ascii_simultaneous)
+                                } else {
+                                    Err(Errors::default())
+                                },
+                            )
+                        }
+                    }
+                    Err(ProcessingError::ValidityError) => {
+                        (Err(Errors::default()), Err(Errors::default()))
+                    }
+                    Err(ProcessingError::SinkError) => unreachable!(),
+                };
                 check(
                     &source,
-                    (&to_ascii_t, &to_ascii_t_status),
-                    to_ascii_t_result,
-                    |e| e.starts_with('C') || e == "V2",
+                    (&to_unicode, &to_unicode_status),
+                    to_unicode_simultaneous_result,
+                    |e| e == "X4_2",
+                );
+                check(
+                    &source,
+                    (&to_ascii_n, &to_ascii_n_status),
+                    to_ascii_simultaneous_result,
+                    |_| false,
                 );
             })),
         )
diff --git a/vendor/idna_adapter/.cargo-checksum.json b/vendor/idna_adapter/.cargo-checksum.json
new file mode 100644
index 00000000..0b382244
--- /dev/null
+++ b/vendor/idna_adapter/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"5bc0d786570fd2b9be3d1eb4a08825b43735a13d5f5fa83c38664d974bd50e18","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8b43ce8accd61e9d370b5ca9e9c4f953279b5c239926c62315b40e24df51b726","README.md":"48fbe86bdf574cdfb76c6eabaa8134549ad40d0e3c6c1a3b29000fc8d92c8426","src/lib.rs":"c78c1c3bdfae97fb13ec121f4460eaf8f6a0466c54a5ab629724cfc4bac2d5f1"},"package":"3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"}
\ No newline at end of file
diff --git a/vendor/idna_adapter/Cargo.toml b/vendor/idna_adapter/Cargo.toml
new file mode 100644
index 00000000..07d8a8c7
--- /dev/null
+++ b/vendor/idna_adapter/Cargo.toml
@@ -0,0 +1,56 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "idna_adapter"
+version = "1.2.1"
+authors = ["The rust-url developers"]
+build = false
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Back end adapter for idna"
+homepage = "https://docs.rs/crate/idna_adapter/latest"
+documentation = "https://docs.rs/idna_adapter/latest/idna_adapter/"
+readme = "README.md"
+keywords = [
+    "unicode",
+    "dns",
+    "idna",
+]
+categories = [
+    "no-std",
+    "internationalization",
+]
+license = "Apache-2.0 OR MIT"
+repository = "https://github.com/hsivonen/idna_adapter"
+
+[features]
+compiled_data = [
+    "icu_normalizer/compiled_data",
+    "icu_properties/compiled_data",
+]
+
+[lib]
+name = "idna_adapter"
+path = "src/lib.rs"
+
+[dependencies.icu_normalizer]
+version = "2"
+default-features = false
+
+[dependencies.icu_properties]
+version = "2"
+default-features = false
diff --git a/vendor/unicode-normalization/LICENSE-APACHE b/vendor/idna_adapter/LICENSE-APACHE
similarity index 100%
rename from vendor/unicode-normalization/LICENSE-APACHE
rename to vendor/idna_adapter/LICENSE-APACHE
diff --git a/vendor/unicode-bidi/LICENSE-MIT b/vendor/idna_adapter/LICENSE-MIT
similarity index 95%
rename from vendor/unicode-bidi/LICENSE-MIT
rename to vendor/idna_adapter/LICENSE-MIT
index e69282e3..d794388a 100644
--- a/vendor/unicode-bidi/LICENSE-MIT
+++ b/vendor/idna_adapter/LICENSE-MIT
@@ -1,4 +1,4 @@
-Copyright (c) 2015 The Rust Project Developers
+Copyright (c) The rust-url developers
 
 Permission is hereby granted, free of charge, to any
 person obtaining a copy of this software and associated
diff --git a/vendor/idna_adapter/README.md b/vendor/idna_adapter/README.md
new file mode 100644
index 00000000..5e86ed94
--- /dev/null
+++ b/vendor/idna_adapter/README.md
@@ -0,0 +1,35 @@
+# idna_adapter
+
+This crate abstracts over a Unicode back end for the [`idna`](https://docs.rs/crate/idna/latest) crate.
+
+To work around the lack of [`global-features`](https://internals.rust-lang.org/t/pre-rfc-mutually-excusive-global-features/19618) in Cargo, this crate allows the top level `Cargo.lock` to choose an alternative Unicode back end for the `idna` crate by pinning a version of this crate.
+
+`idna` depends on version 1 of this crate. The version stream 1.2.x uses ICU4X, the version stream 1.1.x uses unicode-rs, and the version stream 1.0.x has a stub implementation without an actual Unicode back end.
+
+It is generally a good idea to refer to the [README of the latest version](https://docs.rs/crate/idna_adapter/latest) instead of the guidance below for up-to-date information about what options are available.
+
+## ICU4X as the default
+
+If you take no action, Cargo will choose the 1.2.x version stream i.e. latest ICU4X (2.0 as of writing).
+
+### Opting to use ICU4X 1.x
+
+To choose ICU4X 1.x, run `cargo update -p idna_adapter --precise 1.2.0` in the top-level directory of your application.
+
+This may make sense if your application has other ways of depending on ICU4X 1.x, and you are not ready to update those dependencies to ICU4X 2.0 just yet.
+
+## Opting to use unicode-rs
+
+To choose unicode-rs, run `cargo update -p idna_adapter --precise 1.1.0` in the top-level directory of your application.
+
+Compared to ICU4X, this makes build times faster, MSRV lower, binary size larger, and run-time performance slower.
+
+## Turning off IDNA support
+
+Since the ability to turn off actual IDNA processing has been requested again and again, an option to have no Unicode back end is provided. Choosing this option obviously breaks the `idna` crate in the sense that it cannot provide a proper implementation of UTS 46 without any Unicode data. Choosing this option makes your application reject non-ASCII domain name inputs and will fail to enforce the UTS 46 requirements on domain names that have labels in the Punycode form.
+
+Using this option is not recommended, but to make the `idna` crate not actually support IDNA, run `cargo update -p idna_adapter --precise 1.0.0` in the top-level directory of your application.
+
+## License
+
+Apache-2.0 OR MIT
diff --git a/vendor/idna_adapter/src/lib.rs b/vendor/idna_adapter/src/lib.rs
new file mode 100644
index 00000000..22df6d31
--- /dev/null
+++ b/vendor/idna_adapter/src/lib.rs
@@ -0,0 +1,282 @@
+// Copyright The rust-url developers.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! This crate abstracts over a Unicode back end for the [`idna`][1]
+//! crate.
+//!
+//! To work around the lack of [`global-features`][2] in Cargo, this
+//! crate allows the top level `Cargo.lock` to choose an alternative
+//! Unicode back end for the `idna` crate by pinning a version of this
+//! crate.
+//!
+//! See the [README of the latest version][3] for more details.
+//!
+//! [1]: https://docs.rs/crate/idna/latest
+//! [2]: https://internals.rust-lang.org/t/pre-rfc-mutually-excusive-global-features/19618
+//! [3]: https://docs.rs/crate/idna_adapter/latest
+
+#![no_std]
+
+use icu_normalizer::properties::CanonicalCombiningClassMapBorrowed;
+use icu_normalizer::uts46::Uts46MapperBorrowed;
+use icu_properties::props::GeneralCategory;
+use icu_properties::CodePointMapDataBorrowed;
+
+/// Turns a joining type into a mask for comparing with multiple type at once.
+const fn joining_type_to_mask(jt: icu_properties::props::JoiningType) -> u32 {
+    1u32 << jt.to_icu4c_value()
+}
+
+/// Mask for checking for both left and dual joining.
+pub const LEFT_OR_DUAL_JOINING_MASK: JoiningTypeMask = JoiningTypeMask(
+    joining_type_to_mask(icu_properties::props::JoiningType::LeftJoining)
+        | joining_type_to_mask(icu_properties::props::JoiningType::DualJoining),
+);
+
+/// Mask for checking for both left and dual joining.
+pub const RIGHT_OR_DUAL_JOINING_MASK: JoiningTypeMask = JoiningTypeMask(
+    joining_type_to_mask(icu_properties::props::JoiningType::RightJoining)
+        | joining_type_to_mask(icu_properties::props::JoiningType::DualJoining),
+);
+
+/// Turns a bidi class into a mask for comparing with multiple classes at once.
+const fn bidi_class_to_mask(bc: icu_properties::props::BidiClass) -> u32 {
+    1u32 << bc.to_icu4c_value()
+}
+
+/// Mask for checking if the domain is a bidi domain.
+pub const RTL_MASK: BidiClassMask = BidiClassMask(
+    bidi_class_to_mask(icu_properties::props::BidiClass::RightToLeft)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::ArabicLetter)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::ArabicNumber),
+);
+
+/// Mask for allowable bidi classes in the first character of a label
+/// (either LTR or RTL) in a bidi domain.
+pub const FIRST_BC_MASK: BidiClassMask = BidiClassMask(
+    bidi_class_to_mask(icu_properties::props::BidiClass::LeftToRight)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::RightToLeft)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::ArabicLetter),
+);
+
+// Mask for allowable bidi classes of the last (non-Non-Spacing Mark)
+// character in an LTR label in a bidi domain.
+pub const LAST_LTR_MASK: BidiClassMask = BidiClassMask(
+    bidi_class_to_mask(icu_properties::props::BidiClass::LeftToRight)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::EuropeanNumber),
+);
+
+// Mask for allowable bidi classes of the last (non-Non-Spacing Mark)
+// character in an RTL label in a bidi domain.
+pub const LAST_RTL_MASK: BidiClassMask = BidiClassMask(
+    bidi_class_to_mask(icu_properties::props::BidiClass::RightToLeft)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::ArabicLetter)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::EuropeanNumber)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::ArabicNumber),
+);
+
+// Mask for allowable bidi classes of the middle characters in an LTR label in a bidi domain.
+pub const MIDDLE_LTR_MASK: BidiClassMask = BidiClassMask(
+    bidi_class_to_mask(icu_properties::props::BidiClass::LeftToRight)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::EuropeanNumber)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::EuropeanSeparator)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::CommonSeparator)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::EuropeanTerminator)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::OtherNeutral)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::BoundaryNeutral)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::NonspacingMark),
+);
+
+// Mask for allowable bidi classes of the middle characters in an RTL label in a bidi domain.
+pub const MIDDLE_RTL_MASK: BidiClassMask = BidiClassMask(
+    bidi_class_to_mask(icu_properties::props::BidiClass::RightToLeft)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::ArabicLetter)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::ArabicNumber)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::EuropeanNumber)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::EuropeanSeparator)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::CommonSeparator)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::EuropeanTerminator)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::OtherNeutral)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::BoundaryNeutral)
+        | bidi_class_to_mask(icu_properties::props::BidiClass::NonspacingMark),
+);
+
+/// Turns a genecal category into a mask for comparing with multiple categories at once.
+const fn general_category_to_mask(gc: GeneralCategory) -> u32 {
+    1 << (gc as u32)
+}
+
+/// Mask for the disallowed general categories of the first character in a label.
+const MARK_MASK: u32 = general_category_to_mask(GeneralCategory::NonspacingMark)
+    | general_category_to_mask(GeneralCategory::SpacingMark)
+    | general_category_to_mask(GeneralCategory::EnclosingMark);
+
+/// Value for the Joining_Type Unicode property.
+#[repr(transparent)]
+#[derive(Clone, Copy)]
+pub struct JoiningType(icu_properties::props::JoiningType);
+
+impl JoiningType {
+    /// Returns the corresponding `JoiningTypeMask`.
+    #[inline(always)]
+    pub fn to_mask(self) -> JoiningTypeMask {
+        JoiningTypeMask(joining_type_to_mask(self.0))
+    }
+
+    // `true` iff this value is the Transparent value.
+    #[inline(always)]
+    pub fn is_transparent(self) -> bool {
+        self.0 == icu_properties::props::JoiningType::Transparent
+    }
+}
+
+/// A mask representing potentially multiple `JoiningType`
+/// values.
+#[repr(transparent)]
+#[derive(Clone, Copy)]
+pub struct JoiningTypeMask(u32);
+
+impl JoiningTypeMask {
+    /// `true` iff both masks have at `JoiningType` in common.
+    #[inline(always)]
+    pub fn intersects(self, other: JoiningTypeMask) -> bool {
+        self.0 & other.0 != 0
+    }
+}
+
+/// Value for the Bidi_Class Unicode property.
+#[repr(transparent)]
+#[derive(Clone, Copy)]
+pub struct BidiClass(icu_properties::props::BidiClass);
+
+impl BidiClass {
+    /// Returns the corresponding `BidiClassMask`.
+    #[inline(always)]
+    pub fn to_mask(self) -> BidiClassMask {
+        BidiClassMask(bidi_class_to_mask(self.0))
+    }
+
+    /// `true` iff this value is Left_To_Right
+    #[inline(always)]
+    pub fn is_ltr(self) -> bool {
+        self.0 == icu_properties::props::BidiClass::LeftToRight
+    }
+
+    /// `true` iff this value is Nonspacing_Mark
+    #[inline(always)]
+    pub fn is_nonspacing_mark(self) -> bool {
+        self.0 == icu_properties::props::BidiClass::NonspacingMark
+    }
+
+    /// `true` iff this value is European_Number
+    #[inline(always)]
+    pub fn is_european_number(self) -> bool {
+        self.0 == icu_properties::props::BidiClass::EuropeanNumber
+    }
+
+    /// `true` iff this value is Arabic_Number
+    #[inline(always)]
+    pub fn is_arabic_number(self) -> bool {
+        self.0 == icu_properties::props::BidiClass::ArabicNumber
+    }
+}
+
+/// A mask representing potentially multiple `BidiClass`
+/// values.
+#[repr(transparent)]
+#[derive(Clone, Copy)]
+pub struct BidiClassMask(u32);
+
+impl BidiClassMask {
+    /// `true` iff both masks have at `BidiClass` in common.
+    #[inline(always)]
+    pub fn intersects(self, other: BidiClassMask) -> bool {
+        self.0 & other.0 != 0
+    }
+}
+
+/// An adapter between a Unicode back end an the `idna` crate.
+pub struct Adapter {
+    mapper: Uts46MapperBorrowed<'static>,
+    canonical_combining_class: CanonicalCombiningClassMapBorrowed<'static>,
+    general_category: CodePointMapDataBorrowed<'static, GeneralCategory>,
+    bidi_class: CodePointMapDataBorrowed<'static, icu_properties::props::BidiClass>,
+    joining_type: CodePointMapDataBorrowed<'static, icu_properties::props::JoiningType>,
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for Adapter {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl Adapter {
+    /// Constructor using data compiled into the binary.
+    #[cfg(feature = "compiled_data")]
+    #[inline(always)]
+    pub const fn new() -> Self {
+        Self {
+            mapper: Uts46MapperBorrowed::new(),
+            canonical_combining_class: CanonicalCombiningClassMapBorrowed::new(),
+            general_category: icu_properties::CodePointMapData::<GeneralCategory>::new(),
+            bidi_class: icu_properties::CodePointMapData::<icu_properties::props::BidiClass>::new(),
+            joining_type:
+                icu_properties::CodePointMapData::<icu_properties::props::JoiningType>::new(),
+        }
+    }
+
+    /// `true` iff the Canonical_Combining_Class of `c` is Virama.
+    #[inline(always)]
+    pub fn is_virama(&self, c: char) -> bool {
+        self.canonical_combining_class.get_u8(c) == 9
+    }
+
+    /// `true` iff the General_Category of `c` is Mark, i.e. any of Nonspacing_Mark,
+    /// Spacing_Mark, or Enclosing_Mark.
+    #[inline(always)]
+    pub fn is_mark(&self, c: char) -> bool {
+        (general_category_to_mask(self.general_category.get(c)) & MARK_MASK) != 0
+    }
+
+    /// Returns the Bidi_Class of `c`.
+    #[inline(always)]
+    pub fn bidi_class(&self, c: char) -> BidiClass {
+        BidiClass(self.bidi_class.get(c))
+    }
+
+    /// Returns the Joining_Type of `c`.
+    #[inline(always)]
+    pub fn joining_type(&self, c: char) -> JoiningType {
+        JoiningType(self.joining_type.get(c))
+    }
+
+    /// See the [method of the same name in `icu_normalizer`][1] for the
+    /// exact semantics.
+    ///
+    /// [1]: https://docs.rs/icu_normalizer/latest/icu_normalizer/uts46/struct.Uts46Mapper.html#method.map_normalize
+    #[inline(always)]
+    pub fn map_normalize<'delegate, I: Iterator<Item = char> + 'delegate>(
+        &'delegate self,
+        iter: I,
+    ) -> impl Iterator<Item = char> + 'delegate {
+        self.mapper.map_normalize(iter)
+    }
+
+    /// See the [method of the same name in `icu_normalizer`][1] for the
+    /// exact semantics.
+    ///
+    /// [1]: https://docs.rs/icu_normalizer/latest/icu_normalizer/uts46/struct.Uts46Mapper.html#method.normalize_validate
+    #[inline(always)]
+    pub fn normalize_validate<'delegate, I: Iterator<Item = char> + 'delegate>(
+        &'delegate self,
+        iter: I,
+    ) -> impl Iterator<Item = char> + 'delegate {
+        self.mapper.normalize_validate(iter)
+    }
+}
diff --git a/vendor/litemap/.cargo-checksum.json b/vendor/litemap/.cargo-checksum.json
new file mode 100644
index 00000000..626f6708
--- /dev/null
+++ b/vendor/litemap/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"785c9468b16bc9e35562fe984122d39239054fc2581838d57dbfa5b0c8084b11","Cargo.toml":"fd3c09014ccc46d152b6753d8d05492c4751cdd7074a816cb437182ff90d4695","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"34cd913e9410be17d4f8ada19fb1d3660d8415e2e92b59ad2bd38e30f18b1de3","benches/litemap.rs":"72bc3e9b2fadd9fd2cf9fb45bb305ce0aa7fa47c12be11c53a4ebacbccf2cb0c","examples/language_names_hash_map.rs":"fdc55380773f37c3ef0b5c6f4c1cedcfc446f1df39a55e011c5b69784b2fd528","examples/language_names_lite_map.rs":"b00b8b2e6dc6384296617b3db427a408a898d239cf1f4f3f6ae4daf9031c1e94","examples/litemap_bincode.rs":"73ef1a6160f8af9c1d804a2963a2e947ab6e4be7d8deda29b7656ecd8125d3b4","examples/litemap_postcard.rs":"e016fdb56640d2292e2981b2d3e313b8df16b2272787829189a3f736d84d525b","src/databake.rs":"e6190c1db3495623fbe25e5ccebb4f58d95c4908745114fab56a5e077344a116","src/lib.rs":"7e1c202d1580a68f8e5723e862522519d6577ac17604c0793851dd43fc5d0716","src/map.rs":"f9c6ea2e41894bfbd38d3f362b66736dfb53459c6a33220bf519639b1e11da72","src/serde.rs":"8ded97e14380d981af12be2b3f937a2ce0afd4cfde2d3d7804c2bf6fba96f172","src/serde_helpers.rs":"72787005972b93e49b9dc17aa47d30699364e6da9dc95aadb820ce58e4bf5c54","src/store/mod.rs":"cfccec951bd9792fe7a8e2186d649815fc437cc5e15f62b15ab9db6c79d89929","src/store/slice_impl.rs":"e5bd0d4bfd7ab5957ec6979f2a29c12f29ba199b4c17a9cf64bb3866e3b6a00e","src/store/vec_impl.rs":"54e6fa06512310f2fd5fc69b51ce71ec4c85b63c8591278fd857b004179a4842","src/testing.rs":"1987b845e40f4a5eaf2de8b6284927b71568af01a8c27dc52265ad468a747ad9","tests/rkyv.rs":"4490722330b801bff654594aec29526a7e6fb67744e6b7c1e03ac238e4128e12","tests/serde.rs":"0051274f8490c5837d88447bf72fc7266e970fa95c6e4ca540eeba45b7947ce6","tests/store.rs":"ac47119be831db60e360d2faa9788becf68270c497c80507a809a344ad5f5179"},"package":"241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"}
\ No newline at end of file
diff --git a/vendor/litemap/Cargo.lock b/vendor/litemap/Cargo.lock
new file mode 100644
index 00000000..c5c096ec
--- /dev/null
+++ b/vendor/litemap/Cargo.lock
@@ -0,0 +1,1036 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "ahash"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9"
+dependencies = [
+ "getrandom 0.2.16",
+ "once_cell",
+ "version_check",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anes"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+
+[[package]]
+name = "anstyle"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+
+[[package]]
+name = "autocfg"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitflags"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+
+[[package]]
+name = "bitvec"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
+dependencies = [
+ "funty",
+ "radium",
+ "tap",
+ "wyz",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+
+[[package]]
+name = "bytecheck"
+version = "0.6.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2"
+dependencies = [
+ "bytecheck_derive",
+ "ptr_meta",
+ "simdutf8",
+]
+
+[[package]]
+name = "bytecheck_derive"
+version = "0.6.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "bytes"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "ciborium"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
+dependencies = [
+ "ciborium-io",
+ "ciborium-ll",
+ "serde",
+]
+
+[[package]]
+name = "ciborium-io"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
+
+[[package]]
+name = "ciborium-ll"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
+dependencies = [
+ "ciborium-io",
+ "half",
+]
+
+[[package]]
+name = "clap"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c"
+dependencies = [
+ "clap_builder",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7"
+dependencies = [
+ "anstyle",
+ "clap_lex",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+
+[[package]]
+name = "cobs"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
+
+[[package]]
+name = "criterion"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
+dependencies = [
+ "anes",
+ "cast",
+ "ciborium",
+ "clap",
+ "criterion-plot",
+ "is-terminal",
+ "itertools",
+ "num-traits",
+ "once_cell",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
+dependencies = [
+ "cast",
+ "itertools",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+
+[[package]]
+name = "crunchy"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
+
+[[package]]
+name = "databake"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff6ee9e2d2afb173bcdeee45934c89ec341ab26f91c9933774fc15c2b58f83ef"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "either"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+
+[[package]]
+name = "embedded-io"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
+
+[[package]]
+name = "embedded-io"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
+
+[[package]]
+name = "funty"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
+
+[[package]]
+name = "getrandom"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi",
+ "wasi 0.14.2+wasi-0.2.4",
+]
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+dependencies = [
+ "ahash",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08"
+
+[[package]]
+name = "is-terminal"
+version = "0.4.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.172"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
+
+[[package]]
+name = "litemap"
+version = "0.8.0"
+dependencies = [
+ "bincode",
+ "criterion",
+ "databake",
+ "postcard",
+ "rand",
+ "rkyv",
+ "serde",
+ "serde_json",
+ "yoke",
+]
+
+[[package]]
+name = "log"
+version = "0.4.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "oorandom"
+version = "11.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
+
+[[package]]
+name = "plotters"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "postcard"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8"
+dependencies = [
+ "cobs",
+ "embedded-io 0.4.0",
+ "embedded-io 0.6.1",
+ "serde",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "ptr_meta"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1"
+dependencies = [
+ "ptr_meta_derive",
+]
+
+[[package]]
+name = "ptr_meta_derive"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+
+[[package]]
+name = "radium"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
+
+[[package]]
+name = "rand"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
+dependencies = [
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
+dependencies = [
+ "getrandom 0.3.2",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+
+[[package]]
+name = "rend"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c"
+dependencies = [
+ "bytecheck",
+]
+
+[[package]]
+name = "rkyv"
+version = "0.7.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b"
+dependencies = [
+ "bitvec",
+ "bytecheck",
+ "bytes",
+ "hashbrown",
+ "ptr_meta",
+ "rend",
+ "rkyv_derive",
+ "seahash",
+ "tinyvec",
+ "uuid",
+]
+
+[[package]]
+name = "rkyv_derive"
+version = "0.7.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "seahash"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
+
+[[package]]
+name = "serde"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.101",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.140"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "simdutf8"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.101",
+]
+
+[[package]]
+name = "tap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+
+[[package]]
+name = "uuid"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasi"
+version = "0.14.2+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+dependencies = [
+ "wit-bindgen-rt",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.101",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.101",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "wit-bindgen-rt"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "wyz"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
+dependencies = [
+ "tap",
+]
+
+[[package]]
+name = "yoke"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
+dependencies = [
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.101",
+ "synstructure",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.8.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.101",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.101",
+ "synstructure",
+]
diff --git a/vendor/litemap/Cargo.toml b/vendor/litemap/Cargo.toml
new file mode 100644
index 00000000..85fb98ee
--- /dev/null
+++ b/vendor/litemap/Cargo.toml
@@ -0,0 +1,148 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "litemap"
+version = "0.8.0"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+    "build.rs",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "A key-value Map implementation based on a flat, sorted Vec."
+documentation = "https://docs.rs/litemap"
+readme = "README.md"
+keywords = [
+    "sorted",
+    "vec",
+    "map",
+    "hashmap",
+    "btreemap",
+]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.docs.rs]
+all-features = true
+
+[package.metadata.workspaces]
+independent = true
+
+[features]
+alloc = []
+databake = ["dep:databake"]
+default = ["alloc"]
+serde = [
+    "dep:serde",
+    "alloc",
+]
+testing = ["alloc"]
+yoke = ["dep:yoke"]
+
+[lib]
+name = "litemap"
+path = "src/lib.rs"
+bench = false
+
+[[example]]
+name = "language_names_hash_map"
+path = "examples/language_names_hash_map.rs"
+
+[[example]]
+name = "language_names_lite_map"
+path = "examples/language_names_lite_map.rs"
+
+[[example]]
+name = "litemap_bincode"
+path = "examples/litemap_bincode.rs"
+required-features = ["serde"]
+
+[[example]]
+name = "litemap_postcard"
+path = "examples/litemap_postcard.rs"
+required-features = ["serde"]
+
+[[test]]
+name = "rkyv"
+path = "tests/rkyv.rs"
+
+[[test]]
+name = "serde"
+path = "tests/serde.rs"
+required-features = ["serde"]
+
+[[test]]
+name = "store"
+path = "tests/store.rs"
+required-features = ["testing"]
+
+[[bench]]
+name = "litemap"
+path = "benches/litemap.rs"
+harness = false
+required-features = ["serde"]
+
+[dependencies.databake]
+version = "0.2.0"
+optional = true
+default-features = false
+
+[dependencies.serde]
+version = "1.0.110"
+features = ["alloc"]
+optional = true
+default-features = false
+
+[dependencies.yoke]
+version = "0.8.0"
+features = ["derive"]
+optional = true
+default-features = false
+
+[dev-dependencies.bincode]
+version = "1.3.1"
+
+[dev-dependencies.postcard]
+version = "1.0.3"
+features = ["use-std"]
+default-features = false
+
+[dev-dependencies.rand]
+version = "0.9"
+
+[dev-dependencies.rkyv]
+version = "0.7"
+features = ["validation"]
+
+[dev-dependencies.serde]
+version = "1.0.110"
+default-features = false
+
+[dev-dependencies.serde_json]
+version = "1.0.45"
+
+[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
+version = "0.5.0"
diff --git a/vendor/litemap/LICENSE b/vendor/litemap/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/litemap/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/litemap/README.md b/vendor/litemap/README.md
new file mode 100644
index 00000000..d0ae0602
--- /dev/null
+++ b/vendor/litemap/README.md
@@ -0,0 +1,51 @@
+# litemap [![crates.io](https://img.shields.io/crates/v/litemap)](https://crates.io/crates/litemap)
+
+<!-- cargo-rdme start -->
+
+## `litemap`
+
+`litemap` is a crate providing [`LiteMap`], a highly simplistic "flat" key-value map
+based off of a single sorted vector.
+
+The main goal of this crate is to provide a map that is good enough for small
+sizes, and does not carry the binary size impact of [`HashMap`](std::collections::HashMap)
+or [`BTreeMap`](alloc::collections::BTreeMap).
+
+If binary size is not a concern, [`std::collections::BTreeMap`] may be a better choice
+for your use case. It behaves very similarly to [`LiteMap`] for less than 12 elements,
+and upgrades itself gracefully for larger inputs.
+
+### Performance characteristics
+
+[`LiteMap`] is a data structure with similar characteristics as [`std::collections::BTreeMap`] but
+with slightly different trade-offs as it's implemented on top of a flat storage (e.g. Vec).
+
+* [`LiteMap`] iteration is generally faster than `BTreeMap` because of the flat storage.
+* [`LiteMap`] can be pre-allocated whereas `BTreeMap` can't.
+* [`LiteMap`] has a smaller memory footprint than `BTreeMap` for small collections (< 20 items).
+* Lookup is `O(log(n))` like `BTreeMap`.
+* Insertion is generally `O(n)`, but optimized to `O(1)` if the new item sorts greater than the current items. In `BTreeMap` it's `O(log(n))`.
+* Deletion is `O(n)` whereas `BTreeMap` is `O(log(n))`.
+* Bulk operations like `from_iter`, `extend` and deserialization have an optimized `O(n)` path
+  for inputs that are ordered and `O(n*log(n))` complexity otherwise.
+
+### Pluggable Backends
+
+By default, [`LiteMap`] is backed by a [`Vec`]; however, it can be backed by any appropriate
+random-access data store, giving that data store a map-like interface. See the [`store`]
+module for more details.
+
+### Const construction
+
+[`LiteMap`] supports const construction from any store that is const-constructible, such as a
+static slice, via [`LiteMap::from_sorted_store_unchecked()`]. This also makes [`LiteMap`]
+suitable for use with [`databake`]. See [`impl Bake for LiteMap`] for more details.
+
+[`impl Bake for LiteMap`]: ./struct.LiteMap.html#impl-Bake-for-LiteMap<K,+V,+S>
+[`Vec`]: alloc::vec::Vec
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/litemap/benches/litemap.rs b/vendor/litemap/benches/litemap.rs
new file mode 100644
index 00000000..8b25e84c
--- /dev/null
+++ b/vendor/litemap/benches/litemap.rs
@@ -0,0 +1,218 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+use litemap::LiteMap;
+use rand::seq::SliceRandom;
+
+const DATA: [(&str, &str); 16] = [
+    ("ar", "Arabic"),
+    ("bn", "Bangla"),
+    ("ccp", "Chakma"),
+    ("chr", "Cherokee"),
+    ("el", "Greek"),
+    ("en", "English"),
+    ("eo", "Esperanto"),
+    ("es", "Spanish"),
+    ("fr", "French"),
+    ("iu", "Inuktitut"),
+    ("ja", "Japanese"),
+    ("ru", "Russian"),
+    ("sr", "Serbian"),
+    ("th", "Thai"),
+    ("tr", "Turkish"),
+    ("zh", "Chinese"),
+];
+
+const POSTCARD: [u8; 176] = [
+    16, 2, 97, 114, 6, 65, 114, 97, 98, 105, 99, 2, 98, 110, 6, 66, 97, 110, 103, 108, 97, 3, 99,
+    99, 112, 6, 67, 104, 97, 107, 109, 97, 3, 99, 104, 114, 8, 67, 104, 101, 114, 111, 107, 101,
+    101, 2, 101, 108, 5, 71, 114, 101, 101, 107, 2, 101, 110, 7, 69, 110, 103, 108, 105, 115, 104,
+    2, 101, 111, 9, 69, 115, 112, 101, 114, 97, 110, 116, 111, 2, 101, 115, 7, 83, 112, 97, 110,
+    105, 115, 104, 2, 102, 114, 6, 70, 114, 101, 110, 99, 104, 2, 105, 117, 9, 73, 110, 117, 107,
+    116, 105, 116, 117, 116, 2, 106, 97, 8, 74, 97, 112, 97, 110, 101, 115, 101, 2, 114, 117, 7,
+    82, 117, 115, 115, 105, 97, 110, 2, 115, 114, 7, 83, 101, 114, 98, 105, 97, 110, 2, 116, 104,
+    4, 84, 104, 97, 105, 2, 116, 114, 7, 84, 117, 114, 107, 105, 115, 104, 2, 122, 104, 7, 67, 104,
+    105, 110, 101, 115, 101,
+];
+
+/// Run this function to print new data to the console.
+#[allow(dead_code)]
+fn generate() {
+    let map = build_litemap(false);
+    let buf = postcard::to_stdvec(&map).unwrap();
+    println!("{buf:?}");
+}
+
+fn large_litemap_postcard_bytes() -> Vec<u8> {
+    postcard::to_stdvec(&build_litemap(true)).unwrap()
+}
+
+fn overview_bench(c: &mut Criterion) {
+    // Uncomment the following line to re-generate the binary data.
+    // generate();
+
+    bench_deserialize(c);
+    bench_deserialize_large(c);
+    bench_lookup(c);
+    bench_lookup_large(c);
+    bench_from_iter(c);
+    bench_from_iter_rand_large(c);
+    bench_from_iter_sorted(c);
+    bench_from_iter_large_sorted(c);
+    bench_extend_rand(c);
+    bench_extend_rand_dups(c);
+    bench_extend_from_litemap_rand(c);
+}
+
+fn build_litemap(large: bool) -> LiteMap<String, String> {
+    let mut map: LiteMap<String, String> = LiteMap::new();
+    for (key, value) in DATA.into_iter() {
+        if large {
+            for n in 0..8192 {
+                map.insert(format!("{key}{n}"), value.to_owned());
+            }
+        } else {
+            map.insert(key.to_owned(), value.to_owned());
+        }
+    }
+    map
+}
+
+fn bench_deserialize(c: &mut Criterion) {
+    c.bench_function("litemap/deserialize/small", |b| {
+        b.iter(|| {
+            let map: LiteMap<String, String> = postcard::from_bytes(black_box(&POSTCARD)).unwrap();
+            assert_eq!(map.get("iu"), Some(&"Inuktitut".to_owned()));
+        })
+    });
+}
+
+fn bench_deserialize_large(c: &mut Criterion) {
+    let buf = large_litemap_postcard_bytes();
+    c.bench_function("litemap/deseralize/large", |b| {
+        b.iter(|| {
+            let map: LiteMap<String, String> = postcard::from_bytes(black_box(&buf)).unwrap();
+            assert_eq!(map.get("iu3333"), Some(&"Inuktitut".to_owned()));
+        });
+    });
+}
+
+fn bench_from_iter(c: &mut Criterion) {
+    c.bench_function("litemap/from_iter_rand/small", |b| {
+        let mut ff = build_litemap(false).into_iter().collect::<Vec<_>>();
+        ff[..].shuffle(&mut rand::rng());
+        b.iter(|| {
+            let map: LiteMap<&String, &String> = LiteMap::from_iter(ff.iter().map(|(k, v)| (k, v)));
+            black_box(map)
+        })
+    });
+}
+
+fn bench_from_iter_rand_large(c: &mut Criterion) {
+    c.bench_function("litemap/from_iter_rand/large", |b| {
+        let mut ff = build_litemap(true).into_iter().collect::<Vec<_>>();
+        ff[..].shuffle(&mut rand::rng());
+        b.iter(|| {
+            let map: LiteMap<&String, &String> = LiteMap::from_iter(ff.iter().map(|(k, v)| (k, v)));
+            black_box(map)
+        })
+    });
+}
+
+fn bench_from_iter_sorted(c: &mut Criterion) {
+    c.bench_function("litemap/from_iter_sorted/small", |b| {
+        let ff = build_litemap(false).into_iter().collect::<Vec<_>>();
+        b.iter(|| {
+            let map: LiteMap<&String, &String> = LiteMap::from_iter(ff.iter().map(|(k, v)| (k, v)));
+            black_box(map)
+        })
+    });
+}
+
+fn bench_from_iter_large_sorted(c: &mut Criterion) {
+    c.bench_function("litemap/from_iter_sorted/large", |b| {
+        let ff = build_litemap(true).into_iter().collect::<Vec<_>>();
+        b.iter(|| {
+            let map: LiteMap<&String, &String> = LiteMap::from_iter(ff.iter().map(|(k, v)| (k, v)));
+            black_box(map)
+        })
+    });
+}
+
+fn bench_extend_rand(c: &mut Criterion) {
+    c.bench_function("litemap/extend_rand/large", |b| {
+        let mut ff = build_litemap(true).into_iter().collect::<Vec<_>>();
+        ff[..].shuffle(&mut rand::rng());
+        b.iter(|| {
+            let mut map: LiteMap<&String, &String> = LiteMap::with_capacity(0);
+            let mut iter = ff.iter().map(|(k, v)| (k, v));
+            let step = ff.len().div_ceil(10);
+            for _ in 0..10 {
+                map.extend(iter.by_ref().take(step));
+            }
+            black_box(map)
+        })
+    });
+}
+
+fn bench_extend_rand_dups(c: &mut Criterion) {
+    c.bench_function("litemap/extend_rand_dups/large", |b| {
+        let mut ff = build_litemap(true).into_iter().collect::<Vec<_>>();
+        ff[..].shuffle(&mut rand::rng());
+        b.iter(|| {
+            let mut map: LiteMap<&String, &String> = LiteMap::with_capacity(0);
+            for _ in 0..2 {
+                let mut iter = ff.iter().map(|(k, v)| (k, v));
+                let step = ff.len().div_ceil(10);
+                for _ in 0..10 {
+                    map.extend(iter.by_ref().take(step));
+                }
+            }
+            black_box(map)
+        })
+    });
+}
+
+fn bench_extend_from_litemap_rand(c: &mut Criterion) {
+    c.bench_function("litemap/extend_from_litemap_rand/large", |b| {
+        let mut ff = build_litemap(true).into_iter().collect::<Vec<_>>();
+        ff[..].shuffle(&mut rand::rng());
+        b.iter(|| {
+            let mut map: LiteMap<&String, &String> = LiteMap::with_capacity(0);
+            let mut iter = ff.iter().map(|(k, v)| (k, v));
+            let step = ff.len().div_ceil(10);
+            for _ in 0..10 {
+                let tmp: LiteMap<&String, &String> = LiteMap::from_iter(iter.by_ref().take(step));
+                map.extend_from_litemap(tmp);
+            }
+            black_box(map)
+        })
+    });
+}
+
+fn bench_lookup(c: &mut Criterion) {
+    let map: LiteMap<String, String> = postcard::from_bytes(&POSTCARD).unwrap();
+    c.bench_function("litemap/lookup/small", |b| {
+        b.iter(|| {
+            assert_eq!(map.get(black_box("iu")), Some(&"Inuktitut".to_owned()));
+            assert_eq!(map.get(black_box("zz")), None);
+        });
+    });
+}
+
+fn bench_lookup_large(c: &mut Criterion) {
+    let buf = large_litemap_postcard_bytes();
+    let map: LiteMap<String, String> = postcard::from_bytes(&buf).unwrap();
+    c.bench_function("litemap/lookup/large", |b| {
+        b.iter(|| {
+            assert_eq!(map.get(black_box("iu3333")), Some(&"Inuktitut".to_owned()));
+            assert_eq!(map.get(black_box("zz")), None);
+        });
+    });
+}
+
+criterion_group!(benches, overview_bench);
+criterion_main!(benches);
diff --git a/vendor/litemap/examples/language_names_hash_map.rs b/vendor/litemap/examples/language_names_hash_map.rs
new file mode 100644
index 00000000..6e3566b1
--- /dev/null
+++ b/vendor/litemap/examples/language_names_hash_map.rs
@@ -0,0 +1,36 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// LiteMap is intended as a small and low-memory drop-in replacement for HashMap.
+//
+// This example does not use LiteMap. The reader may compare this HashMap example to the
+// LiteMap example to showcase analogous operations between HashMap and LiteMap.
+
+#![no_main] // https://github.com/unicode-org/icu4x/issues/395
+icu_benchmark_macros::instrument!();
+
+use icu_locale_core::subtags::{language, Language};
+use std::collections::HashMap;
+
+const DATA: [(Language, &str); 11] = [
+    (language!("ar"), "Arabic"),
+    (language!("bn"), "Bangla"),
+    (language!("ccp"), "Chakma"),
+    (language!("en"), "English"),
+    (language!("es"), "Spanish"),
+    (language!("fr"), "French"),
+    (language!("ja"), "Japanese"),
+    (language!("ru"), "Russian"),
+    (language!("sr"), "Serbian"),
+    (language!("th"), "Thai"),
+    (language!("tr"), "Turkish"),
+];
+
+fn main() {
+    let map = HashMap::<Language, &str>::from_iter(DATA);
+
+    assert!(map.len() == 11);
+    assert!(map.get(&language!("th")) == Some(&"Thai"));
+    assert!(!map.contains_key(&language!("de")));
+}
diff --git a/vendor/litemap/examples/language_names_lite_map.rs b/vendor/litemap/examples/language_names_lite_map.rs
new file mode 100644
index 00000000..83bff93d
--- /dev/null
+++ b/vendor/litemap/examples/language_names_lite_map.rs
@@ -0,0 +1,36 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// LiteMap is intended as a small and low-memory drop-in replacement for HashMap.
+//
+// The reader may compare this LiteMap example with the HashMap example to see analogous
+// operations between LiteMap and HashMap.
+
+#![no_main] // https://github.com/unicode-org/icu4x/issues/395
+icu_benchmark_macros::instrument!();
+
+use icu_locale_core::subtags::{language, Language};
+use litemap::LiteMap;
+
+const DATA: [(Language, &str); 11] = [
+    (language!("ar"), "Arabic"),
+    (language!("bn"), "Bangla"),
+    (language!("ccp"), "Chakma"),
+    (language!("en"), "English"),
+    (language!("es"), "Spanish"),
+    (language!("fr"), "French"),
+    (language!("ja"), "Japanese"),
+    (language!("ru"), "Russian"),
+    (language!("sr"), "Serbian"),
+    (language!("th"), "Thai"),
+    (language!("tr"), "Turkish"),
+];
+
+fn main() {
+    let map = LiteMap::<Language, &str>::from_iter(DATA);
+
+    assert!(map.len() == 11);
+    assert!(map.get(&language!("th")) == Some(&"Thai"));
+    assert!(map.get(&language!("de")).is_none());
+}
diff --git a/vendor/litemap/examples/litemap_bincode.rs b/vendor/litemap/examples/litemap_bincode.rs
new file mode 100644
index 00000000..3e27e2b6
--- /dev/null
+++ b/vendor/litemap/examples/litemap_bincode.rs
@@ -0,0 +1,60 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// LiteMap is intended as a small and low-memory drop-in replacement for
+// HashMap. This example demonstrates how it works with Serde.
+
+#![no_main] // https://github.com/unicode-org/icu4x/issues/395
+icu_benchmark_macros::instrument!();
+
+use litemap::LiteMap;
+
+const DATA: [(&str, &str); 11] = [
+    ("ar", "Arabic"),
+    ("bn", "Bangla"),
+    ("ccp", "Chakma"),
+    ("en", "English"),
+    ("es", "Spanish"),
+    ("fr", "French"),
+    ("ja", "Japanese"),
+    ("ru", "Russian"),
+    ("sr", "Serbian"),
+    ("th", "Thai"),
+    ("tr", "Turkish"),
+];
+
+#[allow(dead_code)]
+const BINCODE: [u8; 278] = [
+    11, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 97, 114, 6, 0, 0, 0, 0, 0, 0, 0, 65, 114, 97,
+    98, 105, 99, 2, 0, 0, 0, 0, 0, 0, 0, 98, 110, 6, 0, 0, 0, 0, 0, 0, 0, 66, 97, 110, 103, 108,
+    97, 3, 0, 0, 0, 0, 0, 0, 0, 99, 99, 112, 6, 0, 0, 0, 0, 0, 0, 0, 67, 104, 97, 107, 109, 97, 2,
+    0, 0, 0, 0, 0, 0, 0, 101, 110, 7, 0, 0, 0, 0, 0, 0, 0, 69, 110, 103, 108, 105, 115, 104, 2, 0,
+    0, 0, 0, 0, 0, 0, 101, 115, 7, 0, 0, 0, 0, 0, 0, 0, 83, 112, 97, 110, 105, 115, 104, 2, 0, 0,
+    0, 0, 0, 0, 0, 102, 114, 6, 0, 0, 0, 0, 0, 0, 0, 70, 114, 101, 110, 99, 104, 2, 0, 0, 0, 0, 0,
+    0, 0, 106, 97, 8, 0, 0, 0, 0, 0, 0, 0, 74, 97, 112, 97, 110, 101, 115, 101, 2, 0, 0, 0, 0, 0,
+    0, 0, 114, 117, 7, 0, 0, 0, 0, 0, 0, 0, 82, 117, 115, 115, 105, 97, 110, 2, 0, 0, 0, 0, 0, 0,
+    0, 115, 114, 7, 0, 0, 0, 0, 0, 0, 0, 83, 101, 114, 98, 105, 97, 110, 2, 0, 0, 0, 0, 0, 0, 0,
+    116, 104, 4, 0, 0, 0, 0, 0, 0, 0, 84, 104, 97, 105, 2, 0, 0, 0, 0, 0, 0, 0, 116, 114, 7, 0, 0,
+    0, 0, 0, 0, 0, 84, 117, 114, 107, 105, 115, 104,
+];
+
+/// Run this function to print new data to the console.
+#[allow(dead_code)]
+fn generate() {
+    let mut map = LiteMap::new_vec();
+    for (lang, name) in DATA.iter() {
+        map.try_append(lang, name).ok_or(()).unwrap_err();
+    }
+
+    let buf = bincode::serialize(&map).unwrap();
+    println!("{buf:?}");
+}
+
+fn main() {
+    // Uncomment the following line to re-generate the binary data.
+    // generate();
+
+    let map: LiteMap<&str, &str> = bincode::deserialize(&BINCODE).unwrap();
+    assert_eq!(map.get("tr"), Some(&"Turkish"));
+}
diff --git a/vendor/litemap/examples/litemap_postcard.rs b/vendor/litemap/examples/litemap_postcard.rs
new file mode 100644
index 00000000..7c1f0147
--- /dev/null
+++ b/vendor/litemap/examples/litemap_postcard.rs
@@ -0,0 +1,54 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// LiteMap is intended as a small and low-memory drop-in replacement for
+// HashMap. This example demonstrates how it works with Serde.
+
+#![no_main] // https://github.com/unicode-org/icu4x/issues/395
+icu_benchmark_macros::instrument!();
+
+use litemap::LiteMap;
+
+const DATA: [(&str, &str); 11] = [
+    ("ar", "Arabic"),
+    ("bn", "Bangla"),
+    ("ccp", "Chakma"),
+    ("en", "English"),
+    ("es", "Spanish"),
+    ("fr", "French"),
+    ("ja", "Japanese"),
+    ("ru", "Russian"),
+    ("sr", "Serbian"),
+    ("th", "Thai"),
+    ("tr", "Turkish"),
+];
+
+const POSTCARD: [u8; 117] = [
+    11, 2, 97, 114, 6, 65, 114, 97, 98, 105, 99, 2, 98, 110, 6, 66, 97, 110, 103, 108, 97, 3, 99,
+    99, 112, 6, 67, 104, 97, 107, 109, 97, 2, 101, 110, 7, 69, 110, 103, 108, 105, 115, 104, 2,
+    101, 115, 7, 83, 112, 97, 110, 105, 115, 104, 2, 102, 114, 6, 70, 114, 101, 110, 99, 104, 2,
+    106, 97, 8, 74, 97, 112, 97, 110, 101, 115, 101, 2, 114, 117, 7, 82, 117, 115, 115, 105, 97,
+    110, 2, 115, 114, 7, 83, 101, 114, 98, 105, 97, 110, 2, 116, 104, 4, 84, 104, 97, 105, 2, 116,
+    114, 7, 84, 117, 114, 107, 105, 115, 104,
+];
+
+/// Run this function to print new data to the console.
+#[allow(dead_code)]
+fn generate() {
+    let mut map = LiteMap::new_vec();
+    for (lang, name) in DATA.iter() {
+        map.try_append(lang, name).ok_or(()).unwrap_err();
+    }
+
+    let buf = postcard::to_stdvec(&map).unwrap();
+    println!("{buf:?}");
+}
+
+fn main() {
+    // Uncomment the following line to re-generate the binary data.
+    // generate();
+
+    let map: LiteMap<&str, &str> = postcard::from_bytes(&POSTCARD).unwrap();
+    assert_eq!(map.get("tr"), Some(&"Turkish"));
+}
diff --git a/vendor/litemap/src/databake.rs b/vendor/litemap/src/databake.rs
new file mode 100644
index 00000000..ab7f3190
--- /dev/null
+++ b/vendor/litemap/src/databake.rs
@@ -0,0 +1,81 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::LiteMap;
+use databake::*;
+
+/// Bakes a LiteMap into Rust code for fast runtime construction from data. Use this impl during
+/// code generation, such as in a `build.rs` script.
+///
+/// For the most efficient bake, bake the [`LiteMap`] with a slice store. Use functions such as
+/// the following for converting an allocated [`LiteMap`] to a borrowing [`LiteMap`]:
+///
+/// - [`LiteMap::to_borrowed_keys()`]
+/// - [`LiteMap::to_borrowed_values()`]
+/// - [`LiteMap::to_borrowed_keys_values()`]
+/// - [`LiteMap::as_sliced()`]
+///
+/// # Examples
+///
+/// ```
+/// use databake::*;
+/// use litemap::LiteMap;
+///
+/// // Construct the LiteMap fully owned and allocated:
+/// let mut litemap_alloc: LiteMap<usize, String, Vec<_>> = LiteMap::new_vec();
+/// litemap_alloc.insert(1usize, "one".to_string());
+/// litemap_alloc.insert(2usize, "two".to_string());
+/// litemap_alloc.insert(10usize, "ten".to_string());
+///
+/// // Convert to a borrowed type for baking:
+/// let litemap_str: LiteMap<usize, &str, Vec<_>> =
+///     litemap_alloc.to_borrowed_values();
+/// let litemap_slice: LiteMap<usize, &str, &[_]> = litemap_str.as_sliced();
+///
+/// // The bake will now work for const construction:
+/// let mut ctx = Default::default();
+/// println!(
+///     "const FOO: LiteMap<usize, &str, &[(usize, &str)]> = {};",
+///     litemap_slice.bake(&mut ctx)
+/// );
+/// ```
+impl<K, V, S> Bake for LiteMap<K, V, S>
+where
+    S: Bake,
+{
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("litemap");
+        let store = self.values.bake(env);
+        quote! { litemap::LiteMap::from_sorted_store_unchecked(#store) }
+    }
+}
+
+#[test]
+fn test_baked_map() {
+    // Const construction:
+    test_bake!(
+        LiteMap<usize, &str, &[(usize, &str)]>,
+        const,
+        crate::LiteMap::from_sorted_store_unchecked(
+            &[
+                (1usize, "one"),
+                (2usize, "two"),
+                (10usize, "ten"),
+            ]
+        ),
+        litemap
+    );
+    // Non-const construction:
+    test_bake!(
+        LiteMap<usize, String, Vec<(usize, String)>>,
+        crate::LiteMap::from_sorted_store_unchecked(
+            alloc::vec![
+                (1usize, "one".to_owned()),
+                (2usize, "two".to_owned()),
+                (10usize, "ten".to_owned()),
+            ]
+        ),
+        litemap
+    );
+}
diff --git a/vendor/litemap/src/lib.rs b/vendor/litemap/src/lib.rs
new file mode 100644
index 00000000..cd276311
--- /dev/null
+++ b/vendor/litemap/src/lib.rs
@@ -0,0 +1,83 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! # `litemap`
+//!
+//! `litemap` is a crate providing [`LiteMap`], a highly simplistic "flat" key-value map
+//! based off of a single sorted vector.
+//!
+//! The main goal of this crate is to provide a map that is good enough for small
+//! sizes, and does not carry the binary size impact of [`HashMap`](std::collections::HashMap)
+//! or [`BTreeMap`](alloc::collections::BTreeMap).
+//!
+//! If binary size is not a concern, [`std::collections::BTreeMap`] may be a better choice
+//! for your use case. It behaves very similarly to [`LiteMap`] for less than 12 elements,
+//! and upgrades itself gracefully for larger inputs.
+//!
+//! ## Performance characteristics
+//!
+//! [`LiteMap`] is a data structure with similar characteristics as [`std::collections::BTreeMap`] but
+//! with slightly different trade-offs as it's implemented on top of a flat storage (e.g. Vec).
+//!
+//! * [`LiteMap`] iteration is generally faster than `BTreeMap` because of the flat storage.
+//! * [`LiteMap`] can be pre-allocated whereas `BTreeMap` can't.
+//! * [`LiteMap`] has a smaller memory footprint than `BTreeMap` for small collections (< 20 items).
+//! * Lookup is `O(log(n))` like `BTreeMap`.
+//! * Insertion is generally `O(n)`, but optimized to `O(1)` if the new item sorts greater than the current items. In `BTreeMap` it's `O(log(n))`.
+//! * Deletion is `O(n)` whereas `BTreeMap` is `O(log(n))`.
+//! * Bulk operations like `from_iter`, `extend` and deserialization have an optimized `O(n)` path
+//!   for inputs that are ordered and `O(n*log(n))` complexity otherwise.
+//!
+//! ## Pluggable Backends
+//!
+//! By default, [`LiteMap`] is backed by a [`Vec`]; however, it can be backed by any appropriate
+//! random-access data store, giving that data store a map-like interface. See the [`store`]
+//! module for more details.
+//!
+//! ## Const construction
+//!
+//! [`LiteMap`] supports const construction from any store that is const-constructible, such as a
+//! static slice, via [`LiteMap::from_sorted_store_unchecked()`]. This also makes [`LiteMap`]
+//! suitable for use with [`databake`]. See [`impl Bake for LiteMap`] for more details.
+//!
+//! [`impl Bake for LiteMap`]: ./struct.LiteMap.html#impl-Bake-for-LiteMap<K,+V,+S>
+//! [`Vec`]: alloc::vec::Vec
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+
+// for intra doc links
+#[cfg(doc)]
+extern crate std;
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+#[cfg(feature = "databake")]
+#[path = "databake.rs"] // to not conflict with `databake` as used in the docs
+mod databake_impls;
+mod map;
+#[cfg(feature = "serde")]
+mod serde;
+#[cfg(feature = "serde")]
+mod serde_helpers;
+pub mod store;
+
+#[cfg(any(test, feature = "testing"))]
+pub mod testing;
+
+pub use map::{Entry, LiteMap, OccupiedEntry, VacantEntry};
diff --git a/vendor/litemap/src/map.rs b/vendor/litemap/src/map.rs
new file mode 100644
index 00000000..ee78c08f
--- /dev/null
+++ b/vendor/litemap/src/map.rs
@@ -0,0 +1,1661 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::store::*;
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+use core::borrow::Borrow;
+use core::cmp::Ordering;
+use core::fmt::Debug;
+use core::iter::FromIterator;
+use core::marker::PhantomData;
+use core::mem;
+use core::ops::{Index, IndexMut, Range};
+
+macro_rules! litemap_impl(
+    ($cfg:meta, $store:ident $(=$defaultty:ty)?) => {
+        /// A simple "flat" map based on a sorted vector
+        ///
+        /// See the [module level documentation][super] for why one should use this.
+        ///
+        /// The API is roughly similar to that of [`std::collections::BTreeMap`].
+        #[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
+        #[cfg_attr(feature = "yoke", derive(yoke::Yokeable))]
+        #[cfg($cfg)]
+        pub struct LiteMap<K: ?Sized, V: ?Sized, $store $(= $defaultty)?> {
+            pub(crate) values: $store,
+            pub(crate) _key_type: PhantomData<K>,
+            pub(crate) _value_type: PhantomData<V>,
+        }
+    };
+
+);
+// You can't `cfg()` a default generic parameter, and we don't want to write this type twice
+// and keep them in sync so we use a small macro
+litemap_impl!(feature = "alloc", S = alloc::vec::Vec<(K, V)>);
+litemap_impl!(not(feature = "alloc"), S);
+
+#[cfg(feature = "alloc")]
+impl<K, V> LiteMap<K, V> {
+    /// Construct a new [`LiteMap`] backed by Vec    
+    pub const fn new_vec() -> Self {
+        Self {
+            values: alloc::vec::Vec::new(),
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+}
+
+impl<K, V, S> LiteMap<K, V, S> {
+    /// Construct a new [`LiteMap`] using the given values
+    ///
+    /// The store must be sorted and have no duplicate keys.
+    pub const fn from_sorted_store_unchecked(values: S) -> Self {
+        Self {
+            values,
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<K, V> LiteMap<K, V, Vec<(K, V)>> {
+    /// Convert a [`LiteMap`] into a sorted `Vec<(K, V)>`.
+    #[inline]
+    pub fn into_tuple_vec(self) -> Vec<(K, V)> {
+        self.values
+    }
+}
+
+impl<K: ?Sized, V: ?Sized, S> LiteMap<K, V, S>
+where
+    S: StoreConstEmpty<K, V>,
+{
+    /// Create a new empty [`LiteMap`]
+    pub const fn new() -> Self {
+        Self {
+            values: S::EMPTY,
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+}
+
+impl<K: ?Sized, V: ?Sized, S> LiteMap<K, V, S>
+where
+    S: Store<K, V>,
+{
+    /// The number of elements in the [`LiteMap`]
+    pub fn len(&self) -> usize {
+        self.values.lm_len()
+    }
+
+    /// Whether the [`LiteMap`] is empty
+    pub fn is_empty(&self) -> bool {
+        self.values.lm_is_empty()
+    }
+
+    /// Get the key-value pair residing at a particular index
+    ///
+    /// In most cases, prefer [`LiteMap::get()`] over this method.
+    #[inline]
+    pub fn get_indexed(&self, index: usize) -> Option<(&K, &V)> {
+        self.values.lm_get(index)
+    }
+
+    /// Get the lowest-rank key/value pair from the `LiteMap`, if it exists.
+    ///
+    /// # Examples
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map =
+    ///     LiteMap::<i32, &str, Vec<_>>::from_iter([(1, "uno"), (3, "tres")]);
+    ///
+    /// assert_eq!(map.first(), Some((&1, &"uno")));
+    /// ```
+    #[inline]
+    pub fn first(&self) -> Option<(&K, &V)> {
+        self.values.lm_get(0)
+    }
+
+    /// Get the highest-rank key/value pair from the `LiteMap`, if it exists.
+    ///
+    /// # Examples
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map =
+    ///     LiteMap::<i32, &str, Vec<_>>::from_iter([(1, "uno"), (3, "tres")]);
+    ///
+    /// assert_eq!(map.last(), Some((&3, &"tres")));
+    /// ```
+    #[inline]
+    pub fn last(&self) -> Option<(&K, &V)> {
+        self.values.lm_last()
+    }
+
+    /// Returns a new [`LiteMap`] with owned keys and values.
+    ///
+    /// The trait bounds allow transforming most slice and string types.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map: LiteMap<&str, &str> = LiteMap::new_vec();
+    /// map.insert("one", "uno");
+    /// map.insert("two", "dos");
+    ///
+    /// let boxed_map: LiteMap<Box<str>, Box<str>> = map.to_boxed_keys_values();
+    ///
+    /// assert_eq!(boxed_map.get("one"), Some(&Box::from("uno")));
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn to_boxed_keys_values<KB: ?Sized, VB: ?Sized, SB>(&self) -> LiteMap<Box<KB>, Box<VB>, SB>
+    where
+        SB: StoreMut<Box<KB>, Box<VB>>,
+        K: Borrow<KB>,
+        V: Borrow<VB>,
+        Box<KB>: for<'a> From<&'a KB>,
+        Box<VB>: for<'a> From<&'a VB>,
+    {
+        let mut values = SB::lm_with_capacity(self.len());
+        for i in 0..self.len() {
+            #[allow(clippy::unwrap_used)] // iterating over our own length
+            let (k, v) = self.values.lm_get(i).unwrap();
+            values.lm_push(Box::from(k.borrow()), Box::from(v.borrow()))
+        }
+        LiteMap {
+            values,
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+
+    /// Returns a new [`LiteMap`] with owned keys and cloned values.
+    ///
+    /// The trait bounds allow transforming most slice and string types.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map: LiteMap<&str, usize> = LiteMap::new_vec();
+    /// map.insert("one", 11);
+    /// map.insert("two", 22);
+    ///
+    /// let boxed_map: LiteMap<Box<str>, usize> = map.to_boxed_keys();
+    ///
+    /// assert_eq!(boxed_map.get("one"), Some(&11));
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn to_boxed_keys<KB: ?Sized, SB>(&self) -> LiteMap<Box<KB>, V, SB>
+    where
+        V: Clone,
+        SB: StoreMut<Box<KB>, V>,
+        K: Borrow<KB>,
+        Box<KB>: for<'a> From<&'a KB>,
+    {
+        let mut values = SB::lm_with_capacity(self.len());
+        for i in 0..self.len() {
+            #[allow(clippy::unwrap_used)] // iterating over our own length
+            let (k, v) = self.values.lm_get(i).unwrap();
+            values.lm_push(Box::from(k.borrow()), v.clone())
+        }
+        LiteMap {
+            values,
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+
+    /// Returns a new [`LiteMap`] with cloned keys and owned values.
+    ///
+    /// The trait bounds allow transforming most slice and string types.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map: LiteMap<usize, &str> = LiteMap::new_vec();
+    /// map.insert(11, "uno");
+    /// map.insert(22, "dos");
+    ///
+    /// let boxed_map: LiteMap<usize, Box<str>> = map.to_boxed_values();
+    ///
+    /// assert_eq!(boxed_map.get(&11), Some(&Box::from("uno")));
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn to_boxed_values<VB: ?Sized, SB>(&self) -> LiteMap<K, Box<VB>, SB>
+    where
+        K: Clone,
+        SB: StoreMut<K, Box<VB>>,
+        V: Borrow<VB>,
+        Box<VB>: for<'a> From<&'a VB>,
+    {
+        let mut values = SB::lm_with_capacity(self.len());
+        for i in 0..self.len() {
+            #[allow(clippy::unwrap_used)] // iterating over our own length
+            let (k, v) = self.values.lm_get(i).unwrap();
+            values.lm_push(k.clone(), Box::from(v.borrow()))
+        }
+        LiteMap {
+            values,
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+}
+
+impl<K: ?Sized, V: ?Sized, S> LiteMap<K, V, S>
+where
+    K: Ord,
+    S: Store<K, V>,
+{
+    /// Get the value associated with `key`, if it exists.
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(2, "two");
+    /// assert_eq!(map.get(&1), Some(&"one"));
+    /// assert_eq!(map.get(&3), None);
+    /// ```
+    pub fn get<Q>(&self, key: &Q) -> Option<&V>
+    where
+        K: Borrow<Q>,
+        Q: Ord + ?Sized,
+    {
+        match self.find_index(key) {
+            #[allow(clippy::unwrap_used)] // find_index returns a valid index
+            Ok(found) => Some(self.values.lm_get(found).unwrap().1),
+            Err(_) => None,
+        }
+    }
+
+    /// Binary search the map with `predicate` to find a key, returning the value.
+    pub fn get_by(&self, predicate: impl FnMut(&K) -> Ordering) -> Option<&V> {
+        let index = self.values.lm_binary_search_by(predicate).ok()?;
+        self.values.lm_get(index).map(|(_, v)| v)
+    }
+
+    /// Returns whether `key` is contained in this map
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(2, "two");
+    /// assert!(map.contains_key(&1));
+    /// assert!(!map.contains_key(&3));
+    /// ```
+    pub fn contains_key<Q>(&self, key: &Q) -> bool
+    where
+        K: Borrow<Q>,
+        Q: Ord + ?Sized,
+    {
+        self.find_index(key).is_ok()
+    }
+
+    /// Obtain the index for a given key, or if the key is not found, the index
+    /// at which it would be inserted.
+    ///
+    /// (The return value works equivalently to [`slice::binary_search_by()`])
+    ///
+    /// The indices returned can be used with [`Self::get_indexed()`]. Prefer using
+    /// [`Self::get()`] directly where possible.
+    #[inline]
+    pub fn find_index<Q>(&self, key: &Q) -> Result<usize, usize>
+    where
+        K: Borrow<Q>,
+        Q: Ord + ?Sized,
+    {
+        self.values.lm_binary_search_by(|k| k.borrow().cmp(key))
+    }
+}
+
+impl<K: ?Sized, V: ?Sized, S> LiteMap<K, V, S>
+where
+    S: StoreSlice<K, V>,
+{
+    /// Creates a new [`LiteMap`] from a range of the current [`LiteMap`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(2, "two");
+    /// map.insert(3, "three");
+    ///
+    /// let mut sub_map = map.get_indexed_range(1..3).expect("valid range");
+    /// assert_eq!(sub_map.get(&1), None);
+    /// assert_eq!(sub_map.get(&2), Some(&"two"));
+    /// assert_eq!(sub_map.get(&3), Some(&"three"));
+    /// ```
+    pub fn get_indexed_range(&self, range: Range<usize>) -> Option<LiteMap<K, V, &S::Slice>> {
+        let subslice = self.values.lm_get_range(range)?;
+        Some(LiteMap {
+            values: subslice,
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        })
+    }
+
+    /// Borrows this [`LiteMap`] as one of its slice type.
+    ///
+    /// This can be useful in situations where you need a `LiteMap` by value but do not want
+    /// to clone the owned version.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(2, "two");
+    ///
+    /// let borrowed_map = map.as_sliced();
+    /// assert_eq!(borrowed_map.get(&1), Some(&"one"));
+    /// assert_eq!(borrowed_map.get(&2), Some(&"two"));
+    /// ```
+    pub fn as_sliced(&self) -> LiteMap<K, V, &S::Slice> {
+        // Won't panic: 0..self.len() is within range
+        #[allow(clippy::unwrap_used)]
+        let subslice = self.values.lm_get_range(0..self.len()).unwrap();
+        LiteMap {
+            values: subslice,
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+
+    /// Borrows the backing buffer of this [`LiteMap`] as its slice type.
+    ///
+    /// The slice will be sorted.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(2, "two");
+    ///
+    /// let slice = map.as_slice();
+    /// assert_eq!(slice, &[(1, "one"), (2, "two")]);
+    /// ```
+    pub fn as_slice(&self) -> &S::Slice {
+        // Won't panic: 0..self.len() is within range
+        #[allow(clippy::unwrap_used)]
+        self.values.lm_get_range(0..self.len()).unwrap()
+    }
+}
+
+impl<'a, K: 'a, V: 'a, S> LiteMap<K, V, S>
+where
+    S: Store<K, V>,
+{
+    /// Returns a new [`LiteMap`] with keys and values borrowed from this one.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map: LiteMap<Box<usize>, String> = LiteMap::new_vec();
+    /// map.insert(Box::new(1), "one".to_string());
+    /// map.insert(Box::new(2), "two".to_string());
+    ///
+    /// let borrowed_map: LiteMap<&usize, &str> = map.to_borrowed_keys_values();
+    ///
+    /// assert_eq!(borrowed_map.get(&1), Some(&"one"));
+    /// ```
+    pub fn to_borrowed_keys_values<KB: ?Sized, VB: ?Sized, SB>(
+        &'a self,
+    ) -> LiteMap<&'a KB, &'a VB, SB>
+    where
+        K: Borrow<KB>,
+        V: Borrow<VB>,
+        SB: StoreMut<&'a KB, &'a VB>,
+    {
+        let mut values = SB::lm_with_capacity(self.len());
+        for i in 0..self.len() {
+            #[allow(clippy::unwrap_used)] // iterating over our own length
+            let (k, v) = self.values.lm_get(i).unwrap();
+            values.lm_push(k.borrow(), v.borrow())
+        }
+        LiteMap {
+            values,
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+
+    /// Returns a new [`LiteMap`] with keys borrowed from this one and cloned values.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map: LiteMap<Box<usize>, String> = LiteMap::new_vec();
+    /// map.insert(Box::new(1), "one".to_string());
+    /// map.insert(Box::new(2), "two".to_string());
+    ///
+    /// let borrowed_map: LiteMap<&usize, String> = map.to_borrowed_keys();
+    ///
+    /// assert_eq!(borrowed_map.get(&1), Some(&"one".to_string()));
+    /// ```
+    pub fn to_borrowed_keys<KB: ?Sized, SB>(&'a self) -> LiteMap<&'a KB, V, SB>
+    where
+        K: Borrow<KB>,
+        V: Clone,
+        SB: StoreMut<&'a KB, V>,
+    {
+        let mut values = SB::lm_with_capacity(self.len());
+        for i in 0..self.len() {
+            #[allow(clippy::unwrap_used)] // iterating over our own length
+            let (k, v) = self.values.lm_get(i).unwrap();
+            values.lm_push(k.borrow(), v.clone())
+        }
+        LiteMap {
+            values,
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+
+    /// Returns a new [`LiteMap`] with values borrowed from this one and cloned keys.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map: LiteMap<Box<usize>, String> = LiteMap::new_vec();
+    /// map.insert(Box::new(1), "one".to_string());
+    /// map.insert(Box::new(2), "two".to_string());
+    ///
+    /// let borrowed_map: LiteMap<Box<usize>, &str> = map.to_borrowed_values();
+    ///
+    /// assert_eq!(borrowed_map.get(&1), Some(&"one"));
+    /// ```
+    pub fn to_borrowed_values<VB: ?Sized, SB>(&'a self) -> LiteMap<K, &'a VB, SB>
+    where
+        K: Clone,
+        V: Borrow<VB>,
+        SB: StoreMut<K, &'a VB>,
+    {
+        let mut values = SB::lm_with_capacity(self.len());
+        for i in 0..self.len() {
+            #[allow(clippy::unwrap_used)] // iterating over our own length
+            let (k, v) = self.values.lm_get(i).unwrap();
+            values.lm_push(k.clone(), v.borrow())
+        }
+        LiteMap {
+            values,
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+}
+
+impl<K, V, S> LiteMap<K, V, S>
+where
+    S: StoreMut<K, V>,
+{
+    /// Construct a new [`LiteMap`] with a given capacity
+    pub fn with_capacity(capacity: usize) -> Self {
+        Self {
+            values: S::lm_with_capacity(capacity),
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+
+    /// Remove all elements from the [`LiteMap`]
+    pub fn clear(&mut self) {
+        self.values.lm_clear()
+    }
+
+    /// Reserve capacity for `additional` more elements to be inserted into
+    /// the [`LiteMap`] to avoid frequent reallocations.
+    ///
+    /// See [`Vec::reserve()`] for more information.
+    ///
+    /// [`Vec::reserve()`]: alloc::vec::Vec::reserve
+    pub fn reserve(&mut self, additional: usize) {
+        self.values.lm_reserve(additional)
+    }
+}
+
+impl<K, V, S> LiteMap<K, V, S>
+where
+    K: Ord,
+    S: StoreMut<K, V>,
+{
+    /// Get the value associated with `key`, if it exists, as a mutable reference.
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(2, "two");
+    /// if let Some(mut v) = map.get_mut(&1) {
+    ///     *v = "uno";
+    /// }
+    /// assert_eq!(map.get(&1), Some(&"uno"));
+    /// ```
+    pub fn get_mut<Q>(&mut self, key: &Q) -> Option<&mut V>
+    where
+        K: Borrow<Q>,
+        Q: Ord + ?Sized,
+    {
+        match self.find_index(key) {
+            #[allow(clippy::unwrap_used)] // find_index returns a valid index
+            Ok(found) => Some(self.values.lm_get_mut(found).unwrap().1),
+            Err(_) => None,
+        }
+    }
+
+    /// Appends `value` with `key` to the end of the underlying vector, returning
+    /// `key` and `value` _if it failed_. Useful for extending with an existing
+    /// sorted list.
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// assert!(map.try_append(1, "uno").is_none());
+    /// assert!(map.try_append(3, "tres").is_none());
+    ///
+    /// assert!(
+    ///     matches!(map.try_append(3, "tres-updated"), Some((3, "tres-updated"))),
+    ///     "append duplicate of last key",
+    /// );
+    ///
+    /// assert!(
+    ///     matches!(map.try_append(2, "dos"), Some((2, "dos"))),
+    ///     "append out of order"
+    /// );
+    ///
+    /// assert_eq!(map.get(&1), Some(&"uno"));
+    ///
+    /// // contains the original value for the key: 3
+    /// assert_eq!(map.get(&3), Some(&"tres"));
+    ///
+    /// // not appended since it wasn't in order
+    /// assert_eq!(map.get(&2), None);
+    /// ```
+    #[must_use]
+    pub fn try_append(&mut self, key: K, value: V) -> Option<(K, V)> {
+        if let Some(last) = self.values.lm_last() {
+            if last.0 >= &key {
+                return Some((key, value));
+            }
+        }
+
+        self.values.lm_push(key, value);
+        None
+    }
+
+    /// Insert `value` with `key`, returning the existing value if it exists.
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(2, "two");
+    /// assert_eq!(map.get(&1), Some(&"one"));
+    /// assert_eq!(map.get(&3), None);
+    /// ```
+    pub fn insert(&mut self, key: K, value: V) -> Option<V> {
+        self.insert_save_key(key, value).map(|(_, v)| v)
+    }
+
+    /// Version of [`Self::insert()`] that returns both the key and the old value.
+    fn insert_save_key(&mut self, key: K, value: V) -> Option<(K, V)> {
+        match self.values.lm_binary_search_by(|k| k.cmp(&key)) {
+            #[allow(clippy::unwrap_used)] // Index came from binary_search
+            Ok(found) => Some((
+                key,
+                mem::replace(self.values.lm_get_mut(found).unwrap().1, value),
+            )),
+            Err(ins) => {
+                self.values.lm_insert(ins, key, value);
+                None
+            }
+        }
+    }
+
+    /// Attempts to insert a unique entry into the map.
+    ///
+    /// If `key` is not already in the map, inserts it with the corresponding `value`
+    /// and returns `None`.
+    ///
+    /// If `key` is already in the map, no change is made to the map, and the key and value
+    /// are returned back to the caller.
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(3, "three");
+    ///
+    /// // 2 is not yet in the map...
+    /// assert_eq!(map.try_insert(2, "two"), None);
+    /// assert_eq!(map.len(), 3);
+    ///
+    /// // ...but now it is.
+    /// assert_eq!(map.try_insert(2, "TWO"), Some((2, "TWO")));
+    /// assert_eq!(map.len(), 3);
+    /// ```
+    pub fn try_insert(&mut self, key: K, value: V) -> Option<(K, V)> {
+        match self.values.lm_binary_search_by(|k| k.cmp(&key)) {
+            Ok(_) => Some((key, value)),
+            Err(ins) => {
+                self.values.lm_insert(ins, key, value);
+                None
+            }
+        }
+    }
+
+    /// Attempts to insert a unique entry into the map.
+    ///
+    /// If `key` is not already in the map, invokes the closure to compute `value`, inserts
+    /// the pair into the map, and returns a reference to the value. The closure is passed
+    /// a reference to the `key` argument.
+    ///
+    /// If `key` is already in the map, a reference to the existing value is returned.
+    ///
+    /// Additionally, the index of the value in the map is returned. If it is not desirable
+    /// to hold on to the mutable reference's lifetime, the index can be used to access the
+    /// element via [`LiteMap::get_indexed()`].
+    ///
+    /// The closure returns a `Result` to allow for a fallible insertion function. If the
+    /// creation of `value` is infallible, you can use [`core::convert::Infallible`].
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// /// Helper function to unwrap an `Infallible` result from the insertion function
+    /// fn unwrap_infallible<T>(result: Result<T, core::convert::Infallible>) -> T {
+    ///     result.unwrap_or_else(|never| match never {})
+    /// }
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(3, "three");
+    ///
+    /// // 2 is not yet in the map...
+    /// let result1 = unwrap_infallible(
+    ///     map.try_get_or_insert(2, |_| Ok("two"))
+    /// );
+    /// assert_eq!(result1.1, &"two");
+    /// assert_eq!(map.len(), 3);
+    ///
+    /// // ...but now it is.
+    /// let result1 = unwrap_infallible(
+    ///     map.try_get_or_insert(2, |_| Ok("TWO"))
+    /// );
+    /// assert_eq!(result1.1, &"two");
+    /// assert_eq!(map.len(), 3);
+    /// ```
+    pub fn try_get_or_insert<E>(
+        &mut self,
+        key: K,
+        value: impl FnOnce(&K) -> Result<V, E>,
+    ) -> Result<(usize, &V), E> {
+        let idx = match self.values.lm_binary_search_by(|k| k.cmp(&key)) {
+            Ok(idx) => idx,
+            Err(idx) => {
+                let value = value(&key)?;
+                self.values.lm_insert(idx, key, value);
+                idx
+            }
+        };
+        #[allow(clippy::unwrap_used)] // item at idx found or inserted above
+        Ok((idx, self.values.lm_get(idx).unwrap().1))
+    }
+
+    /// Remove the value at `key`, returning it if it exists.
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(2, "two");
+    /// assert_eq!(map.remove(&1), Some("one"));
+    /// assert_eq!(map.get(&1), None);
+    /// ```
+    pub fn remove<Q>(&mut self, key: &Q) -> Option<V>
+    where
+        K: Borrow<Q>,
+        Q: Ord + ?Sized,
+    {
+        match self.values.lm_binary_search_by(|k| k.borrow().cmp(key)) {
+            Ok(found) => Some(self.values.lm_remove(found).1),
+            Err(_) => None,
+        }
+    }
+}
+
+impl<K, V, S> LiteMap<K, V, S>
+where
+    K: Ord,
+    S: StoreIntoIterator<K, V> + StoreFromIterator<K, V>,
+{
+    /// Insert all elements from `other` into this `LiteMap`.
+    ///
+    /// If `other` contains keys that already exist in `self`, the values in `other` replace the
+    /// corresponding ones in `self`, and the rejected items from `self` are returned as a new
+    /// `LiteMap`. Otherwise, `None` is returned.
+    ///
+    /// The implementation of this function is optimized if `self` and `other` have no overlap.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map1 = LiteMap::new_vec();
+    /// map1.insert(1, "one");
+    /// map1.insert(2, "two");
+    ///
+    /// let mut map2 = LiteMap::new_vec();
+    /// map2.insert(2, "TWO");
+    /// map2.insert(4, "FOUR");
+    ///
+    /// let leftovers = map1.extend_from_litemap(map2);
+    ///
+    /// assert_eq!(map1.len(), 3);
+    /// assert_eq!(map1.get(&1), Some("one").as_ref());
+    /// assert_eq!(map1.get(&2), Some("TWO").as_ref());
+    /// assert_eq!(map1.get(&4), Some("FOUR").as_ref());
+    ///
+    /// let map3 = leftovers.expect("Duplicate keys");
+    /// assert_eq!(map3.len(), 1);
+    /// assert_eq!(map3.get(&2), Some("two").as_ref());
+    /// ```
+    pub fn extend_from_litemap(&mut self, other: Self) -> Option<Self> {
+        if self.is_empty() {
+            self.values = other.values;
+            return None;
+        }
+        if other.is_empty() {
+            return None;
+        }
+        if self.last().map(|(k, _)| k) < other.first().map(|(k, _)| k) {
+            // append other to self
+            self.values.lm_extend_end(other.values);
+            None
+        } else if self.first().map(|(k, _)| k) > other.last().map(|(k, _)| k) {
+            // prepend other to self
+            self.values.lm_extend_start(other.values);
+            None
+        } else {
+            // insert every element
+            let leftover_tuples = other
+                .values
+                .lm_into_iter()
+                .filter_map(|(k, v)| self.insert_save_key(k, v))
+                .collect();
+            let ret = LiteMap {
+                values: leftover_tuples,
+                _key_type: PhantomData,
+                _value_type: PhantomData,
+            };
+            if ret.is_empty() {
+                None
+            } else {
+                Some(ret)
+            }
+        }
+    }
+}
+
+impl<K, V, S> Default for LiteMap<K, V, S>
+where
+    S: Store<K, V> + Default,
+{
+    fn default() -> Self {
+        Self {
+            values: S::default(),
+            _key_type: PhantomData,
+            _value_type: PhantomData,
+        }
+    }
+}
+impl<K, V, S> Index<&'_ K> for LiteMap<K, V, S>
+where
+    K: Ord,
+    S: Store<K, V>,
+{
+    type Output = V;
+    fn index(&self, key: &K) -> &V {
+        #[allow(clippy::panic)] // documented
+        match self.get(key) {
+            Some(v) => v,
+            None => panic!("no entry found for key"),
+        }
+    }
+}
+impl<K, V, S> IndexMut<&'_ K> for LiteMap<K, V, S>
+where
+    K: Ord,
+    S: StoreMut<K, V>,
+{
+    fn index_mut(&mut self, key: &K) -> &mut V {
+        #[allow(clippy::panic)] // documented
+        match self.get_mut(key) {
+            Some(v) => v,
+            None => panic!("no entry found for key"),
+        }
+    }
+}
+impl<K, V, S> FromIterator<(K, V)> for LiteMap<K, V, S>
+where
+    K: Ord,
+    S: StoreFromIterable<K, V>,
+{
+    fn from_iter<I: IntoIterator<Item = (K, V)>>(iter: I) -> Self {
+        let values = S::lm_sort_from_iter(iter);
+        Self::from_sorted_store_unchecked(values)
+    }
+}
+
+impl<'a, K: 'a, V: 'a, S> LiteMap<K, V, S>
+where
+    S: StoreIterable<'a, K, V>,
+{
+    /// Produce an ordered iterator over key-value pairs
+    pub fn iter(&'a self) -> impl DoubleEndedIterator<Item = (&'a K, &'a V)> {
+        self.values.lm_iter()
+    }
+
+    /// Produce an ordered iterator over keys
+    #[deprecated = "use keys() instead"]
+    pub fn iter_keys(&'a self) -> impl DoubleEndedIterator<Item = &'a K> {
+        self.values.lm_iter().map(|val| val.0)
+    }
+
+    /// Produce an iterator over values, ordered by their keys
+    #[deprecated = "use values() instead"]
+    pub fn iter_values(&'a self) -> impl DoubleEndedIterator<Item = &'a V> {
+        self.values.lm_iter().map(|val| val.1)
+    }
+
+    /// Produce an ordered iterator over keys
+    pub fn keys(&'a self) -> impl DoubleEndedIterator<Item = &'a K> {
+        self.values.lm_iter().map(|val| val.0)
+    }
+
+    /// Produce an iterator over values, ordered by their keys
+    pub fn values(&'a self) -> impl DoubleEndedIterator<Item = &'a V> {
+        self.values.lm_iter().map(|val| val.1)
+    }
+}
+
+impl<'a, K: 'a, V: 'a, S> LiteMap<K, V, S>
+where
+    S: StoreIterableMut<'a, K, V>,
+{
+    /// Produce an ordered mutable iterator over key-value pairs
+    pub fn iter_mut(&'a mut self) -> impl DoubleEndedIterator<Item = (&'a K, &'a mut V)> {
+        self.values.lm_iter_mut()
+    }
+}
+
+impl<K, V, S> IntoIterator for LiteMap<K, V, S>
+where
+    S: StoreIntoIterator<K, V>,
+{
+    type Item = (K, V);
+    type IntoIter = S::KeyValueIntoIter;
+
+    fn into_iter(self) -> Self::IntoIter {
+        self.values.lm_into_iter()
+    }
+}
+
+impl<'a, K, V, S> IntoIterator for &'a LiteMap<K, V, S>
+where
+    S: StoreIterable<'a, K, V>,
+{
+    type Item = (&'a K, &'a V);
+    type IntoIter = S::KeyValueIter;
+
+    fn into_iter(self) -> Self::IntoIter {
+        self.values.lm_iter()
+    }
+}
+
+impl<'a, K, V, S> IntoIterator for &'a mut LiteMap<K, V, S>
+where
+    S: StoreIterableMut<'a, K, V>,
+{
+    type Item = (&'a K, &'a mut V);
+    type IntoIter = S::KeyValueIterMut;
+
+    fn into_iter(self) -> Self::IntoIter {
+        self.values.lm_iter_mut()
+    }
+}
+
+impl<K, V, S> LiteMap<K, V, S>
+where
+    S: StoreBulkMut<K, V>,
+{
+    /// Retains only the elements specified by the predicate.
+    ///
+    /// In other words, remove all elements such that `f((&k, &v))` returns `false`.
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// let mut map = LiteMap::new_vec();
+    /// map.insert(1, "one");
+    /// map.insert(2, "two");
+    /// map.insert(3, "three");
+    ///
+    /// // Retain elements with odd keys
+    /// map.retain(|k, _| k % 2 == 1);
+    ///
+    /// assert_eq!(map.get(&1), Some(&"one"));
+    /// assert_eq!(map.get(&2), None);
+    /// ```
+    #[inline]
+    pub fn retain<F>(&mut self, predicate: F)
+    where
+        F: FnMut(&K, &V) -> bool,
+    {
+        self.values.lm_retain(predicate)
+    }
+}
+
+impl<'a, K, V> LiteMap<K, V, &'a [(K, V)]> {
+    /// Const version of [`LiteMap::len()`] for a slice store.
+    ///
+    /// Note: This function will no longer be needed if const trait behavior is stabilized.
+    ///
+    /// # Examples
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// static map: LiteMap<&str, usize, &[(&str, usize)]> =
+    ///     LiteMap::from_sorted_store_unchecked(&[("a", 11), ("b", 22)]);
+    /// static len: usize = map.const_len();
+    /// assert_eq!(len, 2);
+    /// ```
+    #[inline]
+    pub const fn const_len(&self) -> usize {
+        self.values.len()
+    }
+
+    /// Const version of [`LiteMap::is_empty()`] for a slice store.
+    ///
+    /// Note: This function will no longer be needed if const trait behavior is stabilized.
+    ///
+    /// # Examples
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// static map: LiteMap<&str, usize, &[(&str, usize)]> =
+    ///     LiteMap::from_sorted_store_unchecked(&[]);
+    /// static is_empty: bool = map.const_is_empty();
+    /// assert!(is_empty);
+    /// ```
+    #[inline]
+    pub const fn const_is_empty(&self) -> bool {
+        self.values.is_empty()
+    }
+
+    /// Const version of [`LiteMap::get_indexed()`] for a slice store.
+    ///
+    /// Note: This function will no longer be needed if const trait behavior is stabilized.
+    ///
+    /// # Panics
+    ///
+    /// Panics if the index is out of bounds.
+    ///
+    /// # Examples
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// static map: LiteMap<&str, usize, &[(&str, usize)]> =
+    ///     LiteMap::from_sorted_store_unchecked(&[("a", 11), ("b", 22)]);
+    /// static t: &(&str, usize) = map.const_get_indexed_or_panic(0);
+    /// assert_eq!(t.0, "a");
+    /// assert_eq!(t.1, 11);
+    /// ```
+    #[inline]
+    #[allow(clippy::indexing_slicing)] // documented
+    pub const fn const_get_indexed_or_panic(&self, index: usize) -> &'a (K, V) {
+        &self.values[index]
+    }
+}
+
+const fn const_cmp_bytes(a: &[u8], b: &[u8]) -> Ordering {
+    let (max, default) = if a.len() == b.len() {
+        (a.len(), Ordering::Equal)
+    } else if a.len() < b.len() {
+        (a.len(), Ordering::Less)
+    } else {
+        (b.len(), Ordering::Greater)
+    };
+    let mut i = 0;
+    #[allow(clippy::indexing_slicing)] // indexes in range by above checks
+    while i < max {
+        if a[i] == b[i] {
+            i += 1;
+            continue;
+        } else if a[i] < b[i] {
+            return Ordering::Less;
+        } else {
+            return Ordering::Greater;
+        }
+    }
+    default
+}
+
+impl<'a, V> LiteMap<&'a str, V, &'a [(&'a str, V)]> {
+    /// Const function to get the value associated with a `&str` key, if it exists.
+    ///
+    /// Also returns the index of the value.
+    ///
+    /// Note: This function will no longer be needed if const trait behavior is stabilized.
+    ///
+    /// # Examples
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// static map: LiteMap<&str, usize, &[(&str, usize)]> =
+    ///     LiteMap::from_sorted_store_unchecked(&[
+    ///         ("abc", 11),
+    ///         ("bcd", 22),
+    ///         ("cde", 33),
+    ///         ("def", 44),
+    ///         ("efg", 55),
+    ///     ]);
+    ///
+    /// static d: Option<(usize, &usize)> = map.const_get_with_index("def");
+    /// assert_eq!(d, Some((3, &44)));
+    ///
+    /// static n: Option<(usize, &usize)> = map.const_get_with_index("dng");
+    /// assert_eq!(n, None);
+    /// ```
+    pub const fn const_get_with_index(&self, key: &str) -> Option<(usize, &'a V)> {
+        let mut i = 0;
+        let mut j = self.const_len();
+        while i < j {
+            let mid = (i + j) / 2;
+            #[allow(clippy::indexing_slicing)] // in range
+            let x = &self.values[mid];
+            match const_cmp_bytes(key.as_bytes(), x.0.as_bytes()) {
+                Ordering::Equal => return Some((mid, &x.1)),
+                Ordering::Greater => i = mid + 1,
+                Ordering::Less => j = mid,
+            };
+        }
+        None
+    }
+}
+
+impl<'a, V> LiteMap<&'a [u8], V, &'a [(&'a [u8], V)]> {
+    /// Const function to get the value associated with a `&[u8]` key, if it exists.
+    ///
+    /// Also returns the index of the value.
+    ///
+    /// Note: This function will no longer be needed if const trait behavior is stabilized.
+    ///
+    /// # Examples
+    ///
+    /// ```rust
+    /// use litemap::LiteMap;
+    ///
+    /// static map: LiteMap<&[u8], usize, &[(&[u8], usize)]> =
+    ///     LiteMap::from_sorted_store_unchecked(&[
+    ///         (b"abc", 11),
+    ///         (b"bcd", 22),
+    ///         (b"cde", 33),
+    ///         (b"def", 44),
+    ///         (b"efg", 55),
+    ///     ]);
+    ///
+    /// static d: Option<(usize, &usize)> = map.const_get_with_index(b"def");
+    /// assert_eq!(d, Some((3, &44)));
+    ///
+    /// static n: Option<(usize, &usize)> = map.const_get_with_index(b"dng");
+    /// assert_eq!(n, None);
+    /// ```
+    pub const fn const_get_with_index(&self, key: &[u8]) -> Option<(usize, &'a V)> {
+        let mut i = 0;
+        let mut j = self.const_len();
+        while i < j {
+            let mid = (i + j) / 2;
+            #[allow(clippy::indexing_slicing)] // in range
+            let x = &self.values[mid];
+            match const_cmp_bytes(key, x.0) {
+                Ordering::Equal => return Some((mid, &x.1)),
+                Ordering::Greater => i = mid + 1,
+                Ordering::Less => j = mid,
+            };
+        }
+        None
+    }
+}
+
+macro_rules! impl_const_get_with_index_for_integer {
+    ($integer:ty) => {
+        impl<'a, V> LiteMap<$integer, V, &'a [($integer, V)]> {
+            /// Const function to get the value associated with an integer key, if it exists.
+            ///
+            /// Note: This function will no longer be needed if const trait behavior is stabilized.
+            ///
+            /// Also returns the index of the value.
+            pub const fn const_get_with_index(&self, key: $integer) -> Option<(usize, &'a V)> {
+                let mut i = 0;
+                let mut j = self.const_len();
+                while i < j {
+                    let mid = (i + j) / 2;
+                    #[allow(clippy::indexing_slicing)] // in range
+                    let x = &self.values[mid];
+                    if key == x.0 {
+                        return Some((mid, &x.1));
+                    } else if key > x.0 {
+                        i = mid + 1;
+                    } else {
+                        j = mid;
+                    }
+                }
+                return None;
+            }
+        }
+    };
+}
+
+impl_const_get_with_index_for_integer!(u8);
+impl_const_get_with_index_for_integer!(u16);
+impl_const_get_with_index_for_integer!(u32);
+impl_const_get_with_index_for_integer!(u64);
+impl_const_get_with_index_for_integer!(u128);
+impl_const_get_with_index_for_integer!(usize);
+impl_const_get_with_index_for_integer!(i8);
+impl_const_get_with_index_for_integer!(i16);
+impl_const_get_with_index_for_integer!(i32);
+impl_const_get_with_index_for_integer!(i64);
+impl_const_get_with_index_for_integer!(i128);
+impl_const_get_with_index_for_integer!(isize);
+
+/// An entry in a `LiteMap`, which may be either occupied or vacant.
+#[allow(clippy::exhaustive_enums)]
+pub enum Entry<'a, K, V, S> {
+    Occupied(OccupiedEntry<'a, K, V, S>),
+    Vacant(VacantEntry<'a, K, V, S>),
+}
+
+impl<K, V, S> Debug for Entry<'_, K, V, S> {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        match self {
+            Self::Occupied(arg0) => f.debug_tuple("Occupied").field(arg0).finish(),
+            Self::Vacant(arg0) => f.debug_tuple("Vacant").field(arg0).finish(),
+        }
+    }
+}
+
+/// A view into an occupied entry in a `LiteMap`.
+pub struct OccupiedEntry<'a, K, V, S> {
+    map: &'a mut LiteMap<K, V, S>,
+    index: usize,
+}
+
+impl<K, V, S> Debug for OccupiedEntry<'_, K, V, S> {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        f.debug_struct("OccupiedEntry")
+            .field("index", &self.index)
+            .finish()
+    }
+}
+
+/// A view into a vacant entry in a `LiteMap`.
+pub struct VacantEntry<'a, K, V, S> {
+    map: &'a mut LiteMap<K, V, S>,
+    key: K,
+    index: usize,
+}
+
+impl<K, V, S> Debug for VacantEntry<'_, K, V, S> {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        f.debug_struct("VacantEntry")
+            .field("index", &self.index)
+            .finish()
+    }
+}
+
+impl<'a, K, V, S> Entry<'a, K, V, S>
+where
+    K: Ord,
+    S: StoreMut<K, V>,
+{
+    /// Ensures a value is in the entry by inserting the default value if empty,
+    /// and returns a mutable reference to the value in the entry.
+    pub fn or_insert(self, default: V) -> &'a mut V {
+        match self {
+            Entry::Occupied(entry) => entry.into_mut(),
+            Entry::Vacant(entry) => entry.insert(default),
+        }
+    }
+
+    /// Ensures a value is in the entry by inserting the result of the default function if empty,
+    /// and returns a mutable reference to the value in the entry.
+    pub fn or_default(self) -> &'a mut V
+    where
+        V: Default,
+    {
+        self.or_insert(V::default())
+    }
+
+    /// Ensures a value is in the entry by inserting the result of the default function if empty,
+    /// and returns a mutable reference to the value in the entry.
+    pub fn or_insert_with<F: FnOnce() -> V>(self, default: F) -> &'a mut V {
+        match self {
+            Entry::Occupied(entry) => entry.into_mut(),
+            Entry::Vacant(entry) => entry.insert(default()),
+        }
+    }
+
+    /// Provides in-place mutable access to an occupied entry before any
+    /// potential inserts into the map.
+    pub fn and_modify<F>(self, f: F) -> Self
+    where
+        F: FnOnce(&mut V),
+    {
+        match self {
+            Entry::Occupied(mut entry) => {
+                f(entry.get_mut());
+                Entry::Occupied(entry)
+            }
+            Entry::Vacant(entry) => Entry::Vacant(entry),
+        }
+    }
+}
+
+impl<'a, K, V, S> OccupiedEntry<'a, K, V, S>
+where
+    K: Ord,
+    S: StoreMut<K, V>,
+{
+    /// Gets a reference to the key in the entry.
+    pub fn key(&self) -> &K {
+        #[allow(clippy::unwrap_used)] // index is valid while we have a reference to the map
+        self.map.values.lm_get(self.index).unwrap().0
+    }
+
+    /// Gets a reference to the value in the entry.
+    pub fn get(&self) -> &V {
+        #[allow(clippy::unwrap_used)] // index is valid while we have a reference to the map
+        self.map.values.lm_get(self.index).unwrap().1
+    }
+
+    /// Gets a mutable reference to the value in the entry.
+    pub fn get_mut(&mut self) -> &mut V {
+        #[allow(clippy::unwrap_used)] // index is valid while we have a reference to the map
+        self.map.values.lm_get_mut(self.index).unwrap().1
+    }
+
+    /// Converts the entry into a mutable reference to the value in the entry with a lifetime bound to the map.
+    pub fn into_mut(self) -> &'a mut V {
+        #[allow(clippy::unwrap_used)] // index is valid while we have a reference to the map
+        self.map.values.lm_get_mut(self.index).unwrap().1
+    }
+
+    /// Sets the value of the entry, and returns the entry's old value.
+    pub fn insert(&mut self, value: V) -> V {
+        mem::replace(self.get_mut(), value)
+    }
+
+    /// Takes the value out of the entry, and returns it.
+    pub fn remove(self) -> V {
+        self.map.values.lm_remove(self.index).1
+    }
+}
+
+impl<'a, K, V, S> VacantEntry<'a, K, V, S>
+where
+    K: Ord,
+    S: StoreMut<K, V>,
+{
+    /// Gets a reference to the key that would be used when inserting a value through the `VacantEntry`.
+    pub fn key(&self) -> &K {
+        &self.key
+    }
+
+    /// Sets the value of the entry with the `VacantEntry`'s key, and returns a mutable reference to it.
+    pub fn insert(self, value: V) -> &'a mut V {
+        // index is valid insert index that was found via binary search
+        // it's valid while we have a reference to the map
+        self.map.values.lm_insert(self.index, self.key, value);
+        #[allow(clippy::unwrap_used)] // we inserted at self.index above
+        self.map.values.lm_get_mut(self.index).unwrap().1
+    }
+}
+
+impl<K, V, S> LiteMap<K, V, S>
+where
+    K: Ord,
+    S: StoreMut<K, V>,
+{
+    /// Gets the entry for the given key in the map for in-place manipulation.
+    pub fn entry(&mut self, key: K) -> Entry<K, V, S> {
+        match self.values.lm_binary_search_by(|k| k.cmp(&key)) {
+            Ok(index) => Entry::Occupied(OccupiedEntry { map: self, index }),
+            Err(index) => Entry::Vacant(VacantEntry {
+                map: self,
+                key,
+                index,
+            }),
+        }
+    }
+}
+
+impl<K, V, S> Extend<(K, V)> for LiteMap<K, V, S>
+where
+    K: Ord,
+    S: StoreBulkMut<K, V>,
+{
+    fn extend<T: IntoIterator<Item = (K, V)>>(&mut self, iter: T) {
+        self.values.lm_extend(iter)
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::*;
+
+    #[test]
+    fn from_iterator() {
+        let mut expected = LiteMap::with_capacity(4);
+        expected.insert(1, "updated-one");
+        expected.insert(2, "original-two");
+        expected.insert(3, "original-three");
+        expected.insert(4, "updated-four");
+
+        let actual = [
+            (1, "original-one"),
+            (2, "original-two"),
+            (4, "original-four"),
+            (4, "updated-four"),
+            (1, "updated-one"),
+            (3, "original-three"),
+        ]
+        .into_iter()
+        .collect::<LiteMap<_, _>>();
+
+        assert_eq!(expected, actual);
+    }
+
+    #[test]
+    fn extend() {
+        let mut expected: LiteMap<i32, &str> = LiteMap::with_capacity(4);
+        expected.insert(1, "updated-one");
+        expected.insert(2, "original-two");
+        expected.insert(3, "original-three");
+        expected.insert(4, "updated-four");
+
+        let mut actual: LiteMap<i32, &str> = LiteMap::new();
+        actual.insert(1, "original-one");
+        actual.extend([
+            (2, "original-two"),
+            (4, "original-four"),
+            (4, "updated-four"),
+            (1, "updated-one"),
+            (3, "original-three"),
+        ]);
+
+        assert_eq!(expected, actual);
+    }
+
+    #[test]
+    fn extend2() {
+        let mut map: LiteMap<usize, &str> = LiteMap::new();
+        map.extend(make_13());
+        map.extend(make_24());
+        map.extend(make_24());
+        map.extend(make_46());
+        map.extend(make_13());
+        map.extend(make_46());
+        assert_eq!(map.len(), 5);
+    }
+
+    fn make_13() -> LiteMap<usize, &'static str> {
+        let mut result = LiteMap::new();
+        result.insert(1, "one");
+        result.insert(3, "three");
+        result
+    }
+
+    fn make_24() -> LiteMap<usize, &'static str> {
+        let mut result = LiteMap::new();
+        result.insert(2, "TWO");
+        result.insert(4, "FOUR");
+        result
+    }
+
+    fn make_46() -> LiteMap<usize, &'static str> {
+        let mut result = LiteMap::new();
+        result.insert(4, "four");
+        result.insert(6, "six");
+        result
+    }
+
+    #[test]
+    fn extend_from_litemap_append() {
+        let mut map = LiteMap::new();
+        map.extend_from_litemap(make_13())
+            .ok_or(())
+            .expect_err("Append to empty map");
+        map.extend_from_litemap(make_46())
+            .ok_or(())
+            .expect_err("Append to lesser map");
+        assert_eq!(map.len(), 4);
+    }
+
+    #[test]
+    fn extend_from_litemap_prepend() {
+        let mut map = LiteMap::new();
+        map.extend_from_litemap(make_46())
+            .ok_or(())
+            .expect_err("Prepend to empty map");
+        map.extend_from_litemap(make_13())
+            .ok_or(())
+            .expect_err("Prepend to lesser map");
+        assert_eq!(map.len(), 4);
+    }
+
+    #[test]
+    fn extend_from_litemap_insert() {
+        let mut map = LiteMap::new();
+        map.extend_from_litemap(make_13())
+            .ok_or(())
+            .expect_err("Append to empty map");
+        map.extend_from_litemap(make_24())
+            .ok_or(())
+            .expect_err("Insert with no conflict");
+        map.extend_from_litemap(make_46())
+            .ok_or(())
+            .expect("Insert with conflict");
+        assert_eq!(map.len(), 5);
+    }
+
+    #[test]
+    fn test_const_cmp_bytes() {
+        let strs = &["a", "aa", "abc", "abde", "bcd", "bcde"];
+        for i in 0..strs.len() {
+            for j in 0..strs.len() {
+                let a = strs[i].as_bytes();
+                let b = strs[j].as_bytes();
+                assert_eq!(a.cmp(b), const_cmp_bytes(a, b));
+            }
+        }
+    }
+
+    #[test]
+    fn into_iterator() {
+        let mut map = LiteMap::<_, _, Vec<(_, _)>>::new();
+        map.insert(4, "four");
+        map.insert(6, "six");
+        let mut reference = vec![(6, "six"), (4, "four")];
+
+        for i in map {
+            let r = reference.pop().unwrap();
+            assert_eq!(r, i);
+        }
+        assert!(reference.is_empty());
+    }
+
+    #[test]
+    fn entry_insert() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        assert!(matches!(map.entry(1), Entry::Vacant(_)));
+        map.entry(1).or_insert("one");
+        assert!(matches!(map.entry(1), Entry::Occupied(_)));
+        assert_eq!(map.get(&1), Some(&"one"));
+    }
+
+    #[test]
+    fn entry_insert_with() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        assert!(matches!(map.entry(1), Entry::Vacant(_)));
+        map.entry(1).or_insert_with(|| "one");
+        assert!(matches!(map.entry(1), Entry::Occupied(_)));
+        assert_eq!(map.get(&1), Some(&"one"));
+    }
+
+    #[test]
+    fn entry_vacant_insert() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        if let Entry::Vacant(entry) = map.entry(1) {
+            entry.insert("one");
+        }
+        assert_eq!(map.get(&1), Some(&"one"));
+    }
+
+    #[test]
+    fn entry_occupied_get_mut() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        map.insert(1, "one");
+        if let Entry::Occupied(mut entry) = map.entry(1) {
+            *entry.get_mut() = "uno";
+        }
+        assert_eq!(map.get(&1), Some(&"uno"));
+    }
+
+    #[test]
+    fn entry_occupied_remove() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        map.insert(1, "one");
+        if let Entry::Occupied(entry) = map.entry(1) {
+            entry.remove();
+        }
+        assert_eq!(map.get(&1), None);
+    }
+
+    #[test]
+    fn entry_occupied_key() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        map.insert(1, "one");
+        if let Entry::Occupied(entry) = map.entry(1) {
+            assert_eq!(entry.key(), &1);
+        }
+    }
+
+    #[test]
+    fn entry_occupied_get() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        map.insert(1, "one");
+        if let Entry::Occupied(entry) = map.entry(1) {
+            assert_eq!(entry.get(), &"one");
+        }
+    }
+
+    #[test]
+    fn entry_occupied_insert() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        map.insert(1, "one");
+        if let Entry::Occupied(mut entry) = map.entry(1) {
+            assert_eq!(entry.insert("uno"), "one");
+        }
+        assert_eq!(map.get(&1), Some(&"uno"));
+    }
+
+    #[test]
+    fn entry_vacant_key() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        if let Entry::Vacant(entry) = map.entry(1) {
+            assert_eq!(entry.key(), &1);
+        }
+    }
+
+    #[test]
+    fn entry_or_insert() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        map.entry(1).or_insert("one");
+        assert_eq!(map.get(&1), Some(&"one"));
+        map.entry(1).or_insert("uno");
+        assert_eq!(map.get(&1), Some(&"one"));
+    }
+
+    #[test]
+    fn entry_or_insert_with() {
+        let mut map: LiteMap<i32, &str> = LiteMap::new();
+        map.entry(1).or_insert_with(|| "one");
+        assert_eq!(map.get(&1), Some(&"one"));
+        map.entry(1).or_insert_with(|| "uno");
+        assert_eq!(map.get(&1), Some(&"one"));
+    }
+
+    #[test]
+    fn entry_or_default() {
+        let mut map: LiteMap<i32, String> = LiteMap::new();
+        map.entry(1).or_default();
+        assert_eq!(map.get(&1), Some(&String::new()));
+    }
+
+    #[test]
+    fn entry_and_modify() {
+        let mut map: LiteMap<i32, i32> = LiteMap::new();
+        map.entry(1).or_insert(10);
+        map.entry(1).and_modify(|v| *v += 5);
+        assert_eq!(map.get(&1), Some(&15));
+        map.entry(2).and_modify(|v| *v += 5).or_insert(20);
+        assert_eq!(map.get(&2), Some(&20));
+    }
+}
diff --git a/vendor/litemap/src/serde.rs b/vendor/litemap/src/serde.rs
new file mode 100644
index 00000000..7aca645f
--- /dev/null
+++ b/vendor/litemap/src/serde.rs
@@ -0,0 +1,245 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::LiteMap;
+use crate::store::*;
+use alloc::vec::Vec;
+use core::fmt;
+use core::marker::PhantomData;
+use serde::{
+    de::{MapAccess, SeqAccess, Visitor},
+    ser::{SerializeMap, SerializeSeq},
+    Deserialize, Deserializer, Serialize, Serializer,
+};
+
+impl<K, V, R> Serialize for LiteMap<K, V, R>
+where
+    K: Serialize,
+    V: Serialize,
+    R: Store<K, V>,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        // Many human-readable formats don't support values other
+        // than numbers and strings as map keys. For them, we can serialize
+        // as a sequence of tuples instead
+        if serializer.is_human_readable() {
+            let k_is_num_or_string = self
+                .values
+                .lm_get(0)
+                .is_some_and(|(k, _)| super::serde_helpers::is_num_or_string(k));
+            if !k_is_num_or_string {
+                let mut seq = serializer.serialize_seq(Some(self.len()))?;
+                // Note that we can't require StoreIterable for R, see below.
+                for index in 0..self.len() {
+                    #[allow(clippy::unwrap_used)] // looping over 0..len
+                    seq.serialize_element(&self.get_indexed(index).unwrap())?;
+                }
+                return seq.end();
+            }
+            // continue to regular serialization
+        }
+
+        // Note that we can't require StoreIterable for R, because the Higher-Rank Trait Bounds (HRTBs)
+        // `R: for<'a> StoreIterable<'a, K, V>` would end up being too strict for some use cases
+        // as it would require Self, K and V to be 'static. See https://github.com/rust-lang/types-team/blob/master/minutes/2022-07-08-implied-bounds-and-wf-checking.md#problem-fora-shouldnt-really-mean-for-all-a
+        // Instead, we require only R: Store and manually iterate over the items.
+        // For some R types this is equivalent to StoreIterable after compiler optimizations but retains
+        // flexibility for other types.
+        let mut map = serializer.serialize_map(Some(self.len()))?;
+        for index in 0..self.len() {
+            #[allow(clippy::unwrap_used)] // looping over 0..len
+            let (k, v) = self.get_indexed(index).unwrap();
+            map.serialize_entry(k, v)?;
+        }
+        map.end()
+    }
+}
+
+/// Modified example from https://serde.rs/deserialize-map.html
+#[allow(clippy::type_complexity)]
+struct LiteMapVisitor<K, V, R> {
+    marker: PhantomData<fn() -> LiteMap<K, V, R>>,
+}
+
+impl<K, V, R> LiteMapVisitor<K, V, R> {
+    fn new() -> Self {
+        Self {
+            marker: PhantomData,
+        }
+    }
+}
+
+impl<'de, K, V, R> Visitor<'de> for LiteMapVisitor<K, V, R>
+where
+    K: Deserialize<'de> + Ord,
+    V: Deserialize<'de>,
+    R: StoreBulkMut<K, V>,
+{
+    type Value = LiteMap<K, V, R>;
+
+    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+        formatter.write_str("a map produced by LiteMap")
+    }
+
+    fn visit_seq<S>(self, mut access: S) -> Result<Self::Value, S::Error>
+    where
+        S: SeqAccess<'de>,
+    {
+        // See visit_map for an explanation of the fast-path and out-of-order handling
+        let mut map = LiteMap::with_capacity(access.size_hint().unwrap_or(0));
+        let mut out_of_order = Vec::new();
+
+        while let Some((key, value)) = access.next_element()? {
+            if let Some((key, value)) = map.try_append(key, value) {
+                out_of_order.push((key, value));
+            }
+        }
+
+        if !out_of_order.is_empty() {
+            map.extend(out_of_order);
+        }
+
+        Ok(map)
+    }
+
+    fn visit_map<M>(self, mut access: M) -> Result<Self::Value, M::Error>
+    where
+        M: MapAccess<'de>,
+    {
+        let mut map = LiteMap::with_capacity(access.size_hint().unwrap_or(0));
+        let mut out_of_order = Vec::new();
+
+        // While there are entries remaining in the input, add them
+        // into our map.
+        while let Some((key, value)) = access.next_entry()? {
+            // Try to append it at the end, hoping for a sorted map. Otherwise, collect
+            // out of order items and extend the map with them later. This way, we give
+            // the implementation an opportunity to avoid quadratic costs from calling
+            // insert() with out of order items.
+            // Handling ordered inputs first allows for arbitrary maps (e.g. from user JSON)
+            // to be deserialized into LiteMap without impacting performance in the case of
+            // deserializing a serialized map that came from another LiteMap.
+            if let Some((key, value)) = map.try_append(key, value) {
+                out_of_order.push((key, value));
+            }
+        }
+
+        if !out_of_order.is_empty() {
+            map.extend(out_of_order);
+        }
+
+        Ok(map)
+    }
+}
+
+impl<'de, K, V, R> Deserialize<'de> for LiteMap<K, V, R>
+where
+    K: Ord + Deserialize<'de>,
+    V: Deserialize<'de>,
+    R: StoreBulkMut<K, V>,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            // deserialize_any only works on self-describing (human-readable)
+            // formats
+            deserializer.deserialize_any(LiteMapVisitor::new())
+        } else {
+            deserializer.deserialize_map(LiteMapVisitor::new())
+        }
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use crate::LiteMap;
+    use alloc::borrow::ToOwned;
+    use alloc::string::String;
+
+    fn get_simple_map() -> LiteMap<u32, String> {
+        [
+            (1, "one".to_owned()),
+            (2, "two".to_owned()),
+            (4, "four".to_owned()),
+            (5, "five".to_owned()),
+        ]
+        .into_iter()
+        .collect()
+    }
+
+    fn get_tuple_map() -> LiteMap<(u32, String), String> {
+        [
+            ((1, "en".to_owned()), "one".to_owned()),
+            ((1, "zh".to_owned()), "一".to_owned()),
+            ((2, "en".to_owned()), "two".to_owned()),
+            ((2, "zh".to_owned()), "二".to_owned()),
+            ((4, "en".to_owned()), "four".to_owned()),
+            ((5, "en".to_owned()), "five".to_owned()),
+            ((5, "zh".to_owned()), "五".to_owned()),
+            ((7, "zh".to_owned()), "七".to_owned()),
+        ]
+        .into_iter()
+        .collect()
+    }
+
+    #[test]
+    fn test_roundtrip_json() {
+        let map = get_simple_map();
+        let json = serde_json::to_string(&map).unwrap();
+        assert_eq!(
+            json,
+            "{\"1\":\"one\",\"2\":\"two\",\"4\":\"four\",\"5\":\"five\"}"
+        );
+        let deserialized: LiteMap<u32, String> = serde_json::from_str(&json).unwrap();
+        assert_eq!(map, deserialized);
+
+        let map = get_tuple_map();
+        let json = serde_json::to_string(&map).unwrap();
+        assert_eq!(
+            json,
+            "[[[1,\"en\"],\"one\"],[[1,\"zh\"],\"一\"],[[2,\"en\"],\"two\"],\
+                          [[2,\"zh\"],\"二\"],[[4,\"en\"],\"four\"],[[5,\"en\"],\"five\"],\
+                          [[5,\"zh\"],\"五\"],[[7,\"zh\"],\"七\"]]"
+        );
+        let deserialized: LiteMap<(u32, String), String> = serde_json::from_str(&json).unwrap();
+        assert_eq!(map, deserialized);
+    }
+
+    #[test]
+    fn test_roundtrip_postcard() {
+        let map = get_simple_map();
+        let postcard = postcard::to_stdvec(&map).unwrap();
+        let deserialized: LiteMap<u32, String> = postcard::from_bytes(&postcard).unwrap();
+        assert_eq!(map, deserialized);
+
+        let map = get_tuple_map();
+        let postcard = postcard::to_stdvec(&map).unwrap();
+        let deserialized: LiteMap<(u32, String), String> = postcard::from_bytes(&postcard).unwrap();
+        assert_eq!(map, deserialized);
+    }
+
+    /// Test that a LiteMap<_, _, Vec> is deserialized with an exact capacity
+    /// if the deserializer provides a size hint information, like postcard here.
+    #[test]
+    fn test_deserialize_capacity() {
+        for len in 0..50 {
+            let mut map = (0..len).map(|i| (i, i.to_string())).collect::<Vec<_>>();
+            let postcard = postcard::to_stdvec(&map).unwrap();
+            let deserialized: LiteMap<u32, String> = postcard::from_bytes(&postcard).unwrap();
+            assert_eq!(deserialized.values.capacity(), len);
+            assert_eq!(deserialized.values.len(), len);
+            // again, but with a shuffled map
+            rand::seq::SliceRandom::shuffle(&mut map[..], &mut rand::rng());
+            let postcard = postcard::to_stdvec(&map).unwrap();
+            let deserialized: LiteMap<u32, String> = postcard::from_bytes(&postcard).unwrap();
+            assert_eq!(deserialized.values.capacity(), len);
+            assert_eq!(deserialized.values.len(), len);
+        }
+    }
+}
diff --git a/vendor/litemap/src/serde_helpers.rs b/vendor/litemap/src/serde_helpers.rs
new file mode 100644
index 00000000..b1ead938
--- /dev/null
+++ b/vendor/litemap/src/serde_helpers.rs
@@ -0,0 +1,168 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// @@@@@@@@@@@@@@@@
+// THIS FILE IS SHARED BETWEEN LITEMAP AND ZEROVEC. PLEASE KEEP IT IN SYNC FOR ALL EDITS
+// @@@@@@@@@@@@@@@@
+
+use serde::ser::{Impossible, Serialize, Serializer};
+
+pub fn is_num_or_string<T: Serialize + ?Sized>(k: &T) -> bool {
+    // Serializer that errors in the same cases as serde_json::ser::MapKeySerializer
+    struct MapKeySerializerDryRun;
+    impl Serializer for MapKeySerializerDryRun {
+        type Ok = ();
+        // Singleton error type that implements serde::ser::Error
+        type Error = core::fmt::Error;
+
+        type SerializeSeq = Impossible<(), Self::Error>;
+        type SerializeTuple = Impossible<(), Self::Error>;
+        type SerializeTupleStruct = Impossible<(), Self::Error>;
+        type SerializeTupleVariant = Impossible<(), Self::Error>;
+        type SerializeMap = Impossible<(), Self::Error>;
+        type SerializeStruct = Impossible<(), Self::Error>;
+        type SerializeStructVariant = Impossible<(), Self::Error>;
+
+        fn serialize_str(self, _value: &str) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_unit_variant(
+            self,
+            _name: &'static str,
+            _variant_index: u32,
+            _variant: &'static str,
+        ) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_newtype_struct<T: Serialize + ?Sized>(
+            self,
+            _name: &'static str,
+            value: &T,
+        ) -> Result<Self::Ok, Self::Error> {
+            // Recurse
+            value.serialize(self)
+        }
+        fn serialize_bool(self, _value: bool) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_i8(self, _value: i8) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_i16(self, _value: i16) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_i32(self, _value: i32) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_i64(self, _value: i64) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        serde::serde_if_integer128! {
+            fn serialize_i128(self, _value: i128) -> Result<Self::Ok, Self::Error> {
+                Ok(())
+            }
+        }
+        fn serialize_u8(self, _value: u8) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_u16(self, _value: u16) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_u32(self, _value: u32) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_u64(self, _value: u64) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        serde::serde_if_integer128! {
+            fn serialize_u128(self, _value: u128) -> Result<Self::Ok, Self::Error> {
+                Ok(())
+            }
+        }
+        fn serialize_f32(self, _value: f32) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_f64(self, _value: f64) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_char(self, _value: char) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_bytes(self, _value: &[u8]) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_unit(self) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_unit_struct(self, _name: &'static str) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_newtype_variant<T: Serialize + ?Sized>(
+            self,
+            _name: &'static str,
+            _variant_index: u32,
+            _variant: &'static str,
+            _value: &T,
+        ) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_none(self) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_some<T: Serialize + ?Sized>(
+            self,
+            _value: &T,
+        ) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_seq(self, _len: Option<usize>) -> Result<Self::SerializeSeq, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_tuple(self, _len: usize) -> Result<Self::SerializeTuple, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_tuple_struct(
+            self,
+            _name: &'static str,
+            _len: usize,
+        ) -> Result<Self::SerializeTupleStruct, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_tuple_variant(
+            self,
+            _name: &'static str,
+            _variant_index: u32,
+            _variant: &'static str,
+            _len: usize,
+        ) -> Result<Self::SerializeTupleVariant, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_struct(
+            self,
+            _name: &'static str,
+            _len: usize,
+        ) -> Result<Self::SerializeStruct, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_struct_variant(
+            self,
+            _name: &'static str,
+            _variant_index: u32,
+            _variant: &'static str,
+            _len: usize,
+        ) -> Result<Self::SerializeStructVariant, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn collect_str<T: core::fmt::Display + ?Sized>(
+            self,
+            _value: &T,
+        ) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+    }
+    k.serialize(MapKeySerializerDryRun).is_ok()
+}
diff --git a/vendor/litemap/src/store/mod.rs b/vendor/litemap/src/store/mod.rs
new file mode 100644
index 00000000..85cf8de2
--- /dev/null
+++ b/vendor/litemap/src/store/mod.rs
@@ -0,0 +1,176 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Traits for pluggable LiteMap backends.
+//!
+//! By default, LiteMap is backed by a `Vec`. However, in some environments, it may be desirable
+//! to use a different data store while still using LiteMap to manage proper ordering of items.
+//!
+//! The general guidelines for a performant data store are:
+//!
+//! 1. Must support efficient random access for binary search
+//! 2. Should support efficient append operations for deserialization
+//!
+//! To plug a custom data store into LiteMap, implement:
+//!
+//! - [`Store`] for most of the methods
+//! - [`StoreIterable`] for methods that return iterators
+//! - [`StoreFromIterator`] to enable `FromIterator` for LiteMap
+//!
+//! To test your implementation, enable the `"testing"` Cargo feature and use [`check_store()`].
+//!
+//! [`check_store()`]: crate::testing::check_store
+
+mod slice_impl;
+#[cfg(feature = "alloc")]
+mod vec_impl;
+
+use core::cmp::Ordering;
+use core::iter::DoubleEndedIterator;
+use core::iter::FromIterator;
+use core::iter::Iterator;
+use core::ops::Range;
+
+/// Trait to enable const construction of empty store.
+pub trait StoreConstEmpty<K: ?Sized, V: ?Sized> {
+    /// An empty store
+    const EMPTY: Self;
+}
+
+/// Trait to enable pluggable backends for LiteMap.
+///
+/// Some methods have default implementations provided for convenience; however, it is generally
+/// better to implement all methods that your data store supports.
+pub trait Store<K: ?Sized, V: ?Sized>: Sized {
+    /// Returns the number of elements in the store.
+    fn lm_len(&self) -> usize;
+
+    /// Returns whether the store is empty (contains 0 elements).
+    fn lm_is_empty(&self) -> bool {
+        self.lm_len() == 0
+    }
+
+    /// Gets a key/value pair at the specified index.
+    fn lm_get(&self, index: usize) -> Option<(&K, &V)>;
+
+    /// Gets the last element in the store, or `None` if the store is empty.
+    fn lm_last(&self) -> Option<(&K, &V)> {
+        let len = self.lm_len();
+        if len == 0 {
+            None
+        } else {
+            self.lm_get(len - 1)
+        }
+    }
+
+    /// Searches the store for a particular element with a comparator function.
+    ///
+    /// See the binary search implementation on `slice` for more information.
+    fn lm_binary_search_by<F>(&self, cmp: F) -> Result<usize, usize>
+    where
+        F: FnMut(&K) -> Ordering;
+}
+
+pub trait StoreFromIterable<K, V>: Store<K, V> {
+    /// Create a sorted store from `iter`.
+    fn lm_sort_from_iter<I: IntoIterator<Item = (K, V)>>(iter: I) -> Self;
+}
+
+pub trait StoreSlice<K: ?Sized, V: ?Sized>: Store<K, V> {
+    type Slice: ?Sized;
+
+    fn lm_get_range(&self, range: Range<usize>) -> Option<&Self::Slice>;
+}
+
+pub trait StoreMut<K, V>: Store<K, V> {
+    /// Creates a new store with the specified capacity hint.
+    ///
+    /// Implementations may ignore the argument if they do not support pre-allocating capacity.
+    fn lm_with_capacity(capacity: usize) -> Self;
+
+    /// Reserves additional capacity in the store.
+    ///
+    /// Implementations may ignore the argument if they do not support pre-allocating capacity.
+    fn lm_reserve(&mut self, additional: usize);
+
+    /// Gets a key/value pair at the specified index, with a mutable value.
+    fn lm_get_mut(&mut self, index: usize) -> Option<(&K, &mut V)>;
+
+    /// Pushes one additional item onto the store.
+    fn lm_push(&mut self, key: K, value: V);
+
+    /// Inserts an item at a specific index in the store.
+    ///
+    /// # Panics
+    ///
+    /// Panics if `index` is greater than the length.
+    fn lm_insert(&mut self, index: usize, key: K, value: V);
+
+    /// Removes an item at a specific index in the store.
+    ///
+    /// # Panics
+    ///
+    /// Panics if `index` is greater than the length.
+    fn lm_remove(&mut self, index: usize) -> (K, V);
+
+    /// Removes all items from the store.
+    fn lm_clear(&mut self);
+}
+
+pub trait StoreBulkMut<K, V>: StoreMut<K, V> {
+    /// Retains items satisfying a predicate in this store.
+    fn lm_retain<F>(&mut self, predicate: F)
+    where
+        F: FnMut(&K, &V) -> bool;
+
+    /// Extends this store with items from an iterator.
+    fn lm_extend<I>(&mut self, other: I)
+    where
+        I: IntoIterator<Item = (K, V)>;
+}
+
+/// Iterator methods for the LiteMap store.
+pub trait StoreIterable<'a, K: 'a + ?Sized, V: 'a + ?Sized>: Store<K, V> {
+    type KeyValueIter: Iterator<Item = (&'a K, &'a V)> + DoubleEndedIterator + 'a;
+
+    /// Returns an iterator over key/value pairs.
+    fn lm_iter(&'a self) -> Self::KeyValueIter;
+}
+
+pub trait StoreIterableMut<'a, K: 'a, V: 'a>: StoreMut<K, V> + StoreIterable<'a, K, V> {
+    type KeyValueIterMut: Iterator<Item = (&'a K, &'a mut V)> + DoubleEndedIterator + 'a;
+
+    /// Returns an iterator over key/value pairs, with a mutable value.
+    fn lm_iter_mut(&'a mut self) -> Self::KeyValueIterMut;
+}
+
+pub trait StoreIntoIterator<K, V>: StoreMut<K, V> {
+    type KeyValueIntoIter: Iterator<Item = (K, V)>;
+
+    /// Returns an iterator that moves every item from this store.
+    fn lm_into_iter(self) -> Self::KeyValueIntoIter;
+
+    /// Adds items from another store to the end of this store.
+    fn lm_extend_end(&mut self, other: Self)
+    where
+        Self: Sized,
+    {
+        for item in other.lm_into_iter() {
+            self.lm_push(item.0, item.1);
+        }
+    }
+
+    /// Adds items from another store to the beginning of this store.
+    fn lm_extend_start(&mut self, other: Self)
+    where
+        Self: Sized,
+    {
+        for (i, item) in other.lm_into_iter().enumerate() {
+            self.lm_insert(i, item.0, item.1);
+        }
+    }
+}
+
+/// A store that can be built from a tuple iterator.
+pub trait StoreFromIterator<K, V>: FromIterator<(K, V)> {}
diff --git a/vendor/litemap/src/store/slice_impl.rs b/vendor/litemap/src/store/slice_impl.rs
new file mode 100644
index 00000000..0200b4c1
--- /dev/null
+++ b/vendor/litemap/src/store/slice_impl.rs
@@ -0,0 +1,63 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+
+type MapF<K, V> = fn(&(K, V)) -> (&K, &V);
+
+#[inline]
+fn map_f<K, V>(input: &(K, V)) -> (&K, &V) {
+    (&input.0, &input.1)
+}
+
+impl<'a, K: 'a, V: 'a> StoreConstEmpty<K, V> for &'a [(K, V)] {
+    const EMPTY: &'a [(K, V)] = &[];
+}
+
+impl<'a, K: 'a, V: 'a> Store<K, V> for &'a [(K, V)] {
+    #[inline]
+    fn lm_len(&self) -> usize {
+        self.len()
+    }
+
+    #[inline]
+    fn lm_is_empty(&self) -> bool {
+        self.is_empty()
+    }
+
+    #[inline]
+    fn lm_get(&self, index: usize) -> Option<(&K, &V)> {
+        self.get(index).map(map_f)
+    }
+
+    #[inline]
+    fn lm_last(&self) -> Option<(&K, &V)> {
+        self.last().map(map_f)
+    }
+
+    #[inline]
+    fn lm_binary_search_by<F>(&self, mut cmp: F) -> Result<usize, usize>
+    where
+        F: FnMut(&K) -> Ordering,
+    {
+        self.binary_search_by(|(k, _)| cmp(k))
+    }
+}
+
+impl<K, V> StoreSlice<K, V> for &[(K, V)] {
+    type Slice = [(K, V)];
+
+    fn lm_get_range(&self, range: Range<usize>) -> Option<&Self::Slice> {
+        self.get(range)
+    }
+}
+
+impl<'a, K: 'a, V: 'a> StoreIterable<'a, K, V> for &'a [(K, V)] {
+    type KeyValueIter = core::iter::Map<core::slice::Iter<'a, (K, V)>, MapF<K, V>>;
+
+    #[inline]
+    fn lm_iter(&'a self) -> Self::KeyValueIter {
+        self.iter().map(map_f)
+    }
+}
diff --git a/vendor/litemap/src/store/vec_impl.rs b/vendor/litemap/src/store/vec_impl.rs
new file mode 100644
index 00000000..6bd34237
--- /dev/null
+++ b/vendor/litemap/src/store/vec_impl.rs
@@ -0,0 +1,306 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use alloc::vec::Vec;
+
+type MapF<K, V> = fn(&(K, V)) -> (&K, &V);
+
+#[inline]
+fn map_f<K, V>(input: &(K, V)) -> (&K, &V) {
+    (&input.0, &input.1)
+}
+
+type MapFMut<K, V> = fn(&mut (K, V)) -> (&K, &mut V);
+
+#[inline]
+fn map_f_mut<K, V>(input: &mut (K, V)) -> (&K, &mut V) {
+    (&input.0, &mut input.1)
+}
+
+impl<K, V> StoreConstEmpty<K, V> for Vec<(K, V)> {
+    const EMPTY: Vec<(K, V)> = Vec::new();
+}
+
+impl<K, V> Store<K, V> for Vec<(K, V)> {
+    #[inline]
+    fn lm_len(&self) -> usize {
+        self.as_slice().len()
+    }
+
+    #[inline]
+    fn lm_is_empty(&self) -> bool {
+        self.as_slice().is_empty()
+    }
+
+    #[inline]
+    fn lm_get(&self, index: usize) -> Option<(&K, &V)> {
+        self.as_slice().get(index).map(map_f)
+    }
+
+    #[inline]
+    fn lm_last(&self) -> Option<(&K, &V)> {
+        self.as_slice().last().map(map_f)
+    }
+
+    #[inline]
+    fn lm_binary_search_by<F>(&self, mut cmp: F) -> Result<usize, usize>
+    where
+        F: FnMut(&K) -> Ordering,
+    {
+        self.as_slice().binary_search_by(|(k, _)| cmp(k))
+    }
+}
+
+impl<K, V> StoreSlice<K, V> for Vec<(K, V)> {
+    type Slice = [(K, V)];
+
+    fn lm_get_range(&self, range: Range<usize>) -> Option<&Self::Slice> {
+        self.get(range)
+    }
+}
+
+impl<K, V> StoreMut<K, V> for Vec<(K, V)> {
+    #[inline]
+    fn lm_with_capacity(capacity: usize) -> Self {
+        Self::with_capacity(capacity)
+    }
+
+    #[inline]
+    fn lm_reserve(&mut self, additional: usize) {
+        self.reserve(additional)
+    }
+
+    #[inline]
+    fn lm_get_mut(&mut self, index: usize) -> Option<(&K, &mut V)> {
+        self.as_mut_slice().get_mut(index).map(map_f_mut)
+    }
+
+    #[inline]
+    fn lm_push(&mut self, key: K, value: V) {
+        self.push((key, value))
+    }
+
+    #[inline]
+    fn lm_insert(&mut self, index: usize, key: K, value: V) {
+        self.insert(index, (key, value))
+    }
+
+    #[inline]
+    fn lm_remove(&mut self, index: usize) -> (K, V) {
+        self.remove(index)
+    }
+
+    #[inline]
+    fn lm_clear(&mut self) {
+        self.clear()
+    }
+}
+
+impl<K: Ord, V> StoreBulkMut<K, V> for Vec<(K, V)> {
+    #[inline]
+    fn lm_retain<F>(&mut self, mut predicate: F)
+    where
+        F: FnMut(&K, &V) -> bool,
+    {
+        self.retain(|(k, v)| predicate(k, v))
+    }
+
+    /// Extends this store with items from an iterator.
+    ///
+    /// It uses a two-pass (sort + dedup) approach to avoid any potential quadratic costs.
+    ///
+    /// The asymptotic worst case complexity is O((n + m) log(n + m)), where `n`
+    /// is the number of elements already in `self` and `m` is the number of elements
+    /// in the iterator. The best case complexity is O(m), when the input iterator is
+    /// already sorted, keys aren't duplicated and all keys sort after the existing ones.
+    #[inline]
+    fn lm_extend<I>(&mut self, iter: I)
+    where
+        I: IntoIterator<Item = (K, V)>,
+        K: Ord,
+    {
+        // First N elements in self that are already sorted and not duplicated.
+        let mut sorted_len = self.len();
+        // Use Vec::extend as it has a specialized code for slice and trusted-len iterators.
+        self.extend(iter);
+        // `sorted_len` is the length of the sorted run before extension
+        // window slice `w` is guaranteed to have a length of 2.
+        #[allow(clippy::indexing_slicing)]
+        {
+            // Count new elements that are sorted and non-duplicated.
+            // Starting from the end of the existing sorted run, if any.
+            // Thus, start the slice at sorted_len.saturating_sub(1).
+            sorted_len += self[sorted_len.saturating_sub(1)..]
+                .windows(2)
+                .take_while(|w| w[0].0 < w[1].0)
+                .count();
+        }
+        // `windows(2)` only yields `slice len - 1` times, or none if the slice is empty.
+        // In other words, the first extended element of the slice won't be counted as sorted
+        // if self was initially empty (sorted_len == 0). We adjust this by adding 1 if the
+        // original slice was empty but became not empty after extend.
+        sorted_len += (sorted_len == 0 && !self.is_empty()) as usize;
+
+        // If everything was in order, we're done
+        if sorted_len >= self.len() {
+            return;
+        }
+
+        // Use stable sort to keep relative order of duplicates.
+        self.sort_by(|a, b| a.0.cmp(&b.0));
+        // Deduplicate by keeping the last element of the run in the first slice.
+        let (dedup, _merged_dup) = partition_dedup_by(self);
+        sorted_len = dedup.len();
+        self.truncate(sorted_len);
+    }
+}
+
+/// Moves all but the _last_ of consecutive elements to the end of the slice satisfying
+/// equality on K.
+///
+/// Returns two slices. The first contains no consecutive repeated elements.
+/// The second contains all the duplicates in no specified order.
+///
+/// This is based on std::slice::partition_dedup_by (currently unstable) but retains the
+/// _last_ element of the duplicate run in the first slice (instead of first).
+#[inline]
+#[allow(clippy::type_complexity)]
+fn partition_dedup_by<K: Eq, V>(v: &mut [(K, V)]) -> (&mut [(K, V)], &mut [(K, V)]) {
+    // Although we have a mutable reference to `self`, we cannot make
+    // *arbitrary* changes. The comparison could panic, so we
+    // must ensure that the slice is in a valid state at all times.
+    //
+    // The way that we handle this is by using swaps; we iterate
+    // over all the elements, swapping as we go so that at the end
+    // the elements we wish to keep are in the front, and those we
+    // wish to reject are at the back. We can then split the slice.
+    // This operation is still `O(n)`.
+    //
+    // Example:
+    // Assume (K, V) is (char, u8):
+    //
+    // We start in this state, where `r` represents "next
+    // read" and `w` represents "next_write".
+    //
+    //              r
+    //     | a,0 | b,0 | b,1 | c,0 | d,0 | d,1 |
+    //              w
+    //
+    // Comparing self[r] against self[w-1], this is not a duplicate, so
+    // we swap self[r] and self[w] (no effect as r==w) and then increment both
+    // r and w, leaving us with:
+    //
+    //                    r
+    //     | a,0 | b,0 | b,1 | c,0 | d,0 | d,0 |
+    //                    w
+    //
+    // Comparing self[r] against self[w-1], this value is a duplicate,
+    // we swap self[r] and self[w-1] and then increment `r`:
+    //
+    //                          r
+    //     | a,0 | b,1 | b,0 | c,0 | d,0 | d,1 |
+    //                    w
+    //
+    // Comparing self[r] against self[w-1], this is not a duplicate,
+    // so swap self[r] and self[w] and advance r and w:
+    //
+    //                                r
+    //     | a,0 | b,1 | c,0 | b,0 | d,0 | d,1 |
+    //                          w
+    //
+    // Comparing self[r] against self[w-1], this is not a duplicate,
+    // so swap self[r] and self[w] and advance r and w:
+    //
+    //                                      r
+    //     | a,0 | b,1 | c,0 | d,0 | b,0 | d,1 |
+    //                                w
+    //
+    // Comparing self[r] against self[w-1], this value is a duplicate,
+    // we swap self[r] and self[w-1] and then increment `r`:
+    //                                             r
+    //     | a,0 | b,1 | c,0 | d,1 | b,0 | d,0 |
+    //                                w
+    //
+    // End of slice, as r > len. Split at w.
+
+    if v.len() <= 1 {
+        return (v, &mut []);
+    }
+
+    let mut read_idx: usize = 1;
+    let mut write_idx: usize = 1;
+
+    while let Some((before_read, [read, ..])) = v.split_at_mut_checked(read_idx) {
+        // First, `read_idx >= write_idx` is always true as `read_idx` is always incremented
+        // whereas `write_idx` is only incremented when a distinct element is found.
+        // Second, before_read is always at least 1 length due to read_idx being initialized to 1.
+        // Thus it is safe to index before_read with `write_idx - 1`.
+        #[allow(clippy::indexing_slicing)]
+        let prev_write = &mut before_read[write_idx - 1];
+        if read.0 == prev_write.0 {
+            core::mem::swap(read, prev_write);
+        } else {
+            // Equivalent to checking if write_idx == read_idx
+            if let Some(write) = before_read.get_mut(write_idx) {
+                core::mem::swap(read, write);
+            }
+            write_idx += 1;
+        }
+        read_idx += 1;
+    }
+    v.split_at_mut(write_idx)
+}
+
+impl<K: Ord, V> StoreFromIterable<K, V> for Vec<(K, V)> {
+    fn lm_sort_from_iter<I: IntoIterator<Item = (K, V)>>(iter: I) -> Self {
+        let mut v = Self::new();
+        v.lm_extend(iter);
+        v
+    }
+}
+
+impl<'a, K: 'a, V: 'a> StoreIterable<'a, K, V> for Vec<(K, V)> {
+    type KeyValueIter = core::iter::Map<core::slice::Iter<'a, (K, V)>, MapF<K, V>>;
+
+    #[inline]
+    fn lm_iter(&'a self) -> Self::KeyValueIter {
+        self.as_slice().iter().map(map_f)
+    }
+}
+
+impl<'a, K: 'a, V: 'a> StoreIterableMut<'a, K, V> for Vec<(K, V)> {
+    type KeyValueIterMut = core::iter::Map<core::slice::IterMut<'a, (K, V)>, MapFMut<K, V>>;
+
+    #[inline]
+    fn lm_iter_mut(&'a mut self) -> Self::KeyValueIterMut {
+        self.as_mut_slice().iter_mut().map(map_f_mut)
+    }
+}
+
+impl<K, V> StoreIntoIterator<K, V> for Vec<(K, V)> {
+    type KeyValueIntoIter = alloc::vec::IntoIter<(K, V)>;
+
+    #[inline]
+    fn lm_into_iter(self) -> Self::KeyValueIntoIter {
+        IntoIterator::into_iter(self)
+    }
+
+    #[inline]
+    fn lm_extend_end(&mut self, other: Self) {
+        self.extend(other)
+    }
+
+    #[inline]
+    fn lm_extend_start(&mut self, other: Self) {
+        self.splice(0..0, other);
+    }
+}
+
+impl<K, V> StoreFromIterator<K, V> for Vec<(K, V)> {}
+
+#[test]
+fn test_vec_impl() {
+    crate::testing::check_store_full::<Vec<(u32, u64)>>();
+}
diff --git a/vendor/litemap/src/testing.rs b/vendor/litemap/src/testing.rs
new file mode 100644
index 00000000..cf683e5c
--- /dev/null
+++ b/vendor/litemap/src/testing.rs
@@ -0,0 +1,301 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Test utilities, primarily targeted to custom LiteMap stores.
+
+use crate::store::*;
+use crate::LiteMap;
+use alloc::vec::Vec;
+use core::fmt::Debug;
+
+// Test code
+#[allow(clippy::expect_used)]
+fn check_equivalence<'a, K, V, S0, S1>(mut a: S0, mut b: S1)
+where
+    K: Ord + Debug + PartialEq + 'a,
+    V: Debug + PartialEq + 'a,
+    S0: StoreMut<K, V> + StoreIterable<'a, K, V>,
+    S1: StoreMut<K, V> + StoreIterable<'a, K, V>,
+{
+    let len = a.lm_len();
+    assert_eq!(len, b.lm_len());
+    if len == 0 {
+        assert!(a.lm_is_empty());
+        assert!(b.lm_is_empty());
+    }
+    for i in 0..len {
+        let a_kv = a.lm_get(i);
+        let b_kv = b.lm_get(i);
+        assert!(a_kv.is_some());
+        assert_eq!(a_kv, b_kv);
+        let a_kv_mut = a.lm_get_mut(i);
+        let b_kv_mut = b.lm_get_mut(i);
+        assert!(a_kv_mut.is_some());
+        assert_eq!(a_kv_mut, b_kv_mut);
+    }
+    for j in 0..len {
+        let needle = a.lm_get(j).expect("j is in range").0;
+        let a_binary = a.lm_binary_search_by(|k| k.cmp(needle));
+        let b_binary = a.lm_binary_search_by(|k| k.cmp(needle));
+        assert_eq!(Ok(j), a_binary);
+        assert_eq!(Ok(j), b_binary);
+    }
+    assert!(a.lm_get(len).is_none());
+    assert!(b.lm_get(len).is_none());
+    assert_eq!(a.lm_last(), b.lm_last());
+}
+
+// Test code
+#[allow(clippy::expect_used)]
+fn check_into_iter_equivalence<K, V, S0, S1>(a: S0, b: S1)
+where
+    K: Ord + Debug + PartialEq,
+    V: Debug + PartialEq,
+    S0: StoreIntoIterator<K, V>,
+    S1: StoreIntoIterator<K, V>,
+{
+    let a_vec = a.lm_into_iter().collect::<Vec<_>>();
+    let b_vec = b.lm_into_iter().collect::<Vec<_>>();
+    assert_eq!(a_vec, b_vec);
+}
+
+const SORTED_DATA: &[(u32, u64)] = &[
+    (106, 4816),
+    (147, 9864),
+    (188, 8588),
+    (252, 6031),
+    (434, 2518),
+    (574, 8500),
+    (607, 3756),
+    (619, 4965),
+    (663, 2669),
+    (724, 9211),
+];
+
+const RANDOM_DATA: &[(u32, u64)] = &[
+    (546, 7490),
+    (273, 4999),
+    (167, 8078),
+    (176, 2101),
+    (373, 1304),
+    (339, 9613),
+    (561, 3620),
+    (301, 1214),
+    (483, 4453),
+    (704, 5359),
+];
+
+// Test code
+#[allow(clippy::expect_used)]
+#[allow(clippy::panic)]
+fn populate_litemap<S>(map: &mut LiteMap<u32, u64, S>)
+where
+    S: StoreMut<u32, u64> + Debug,
+{
+    assert_eq!(0, map.len());
+    assert!(map.is_empty());
+    for (k, v) in SORTED_DATA.iter() {
+        #[allow(clippy::single_match)] // for clarity
+        match map.try_append(*k, *v) {
+            Some(_) => panic!("appending sorted data: {k:?} to {map:?}"),
+            None => (), // OK
+        };
+    }
+    assert_eq!(10, map.len());
+    for (k, v) in RANDOM_DATA.iter() {
+        #[allow(clippy::single_match)] // for clarity
+        match map.try_append(*k, *v) {
+            Some(_) => (), // OK
+            None => panic!("cannot append random data: {k:?} to{map:?}"),
+        };
+    }
+    assert_eq!(10, map.len());
+    for (k, v) in RANDOM_DATA.iter() {
+        map.insert(*k, *v);
+    }
+    assert_eq!(20, map.len());
+}
+
+/// Tests that a litemap that uses the given store as backend has behavior consistent with the
+/// reference impl.
+///
+/// Call this function in a test with the store impl to test as a valid backend for LiteMap.
+// Test code
+#[allow(clippy::expect_used)]
+pub fn check_store<'a, S>()
+where
+    S: StoreConstEmpty<u32, u64>
+        + StoreMut<u32, u64>
+        + StoreIterable<'a, u32, u64>
+        + StoreFromIterator<u32, u64>
+        + Clone
+        + Debug
+        + PartialEq
+        + 'a,
+{
+    let mut litemap_test: LiteMap<u32, u64, S> = LiteMap::new();
+    assert!(litemap_test.is_empty());
+    let mut litemap_std = LiteMap::<u32, u64>::new();
+    populate_litemap(&mut litemap_test);
+    populate_litemap(&mut litemap_std);
+    check_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+
+    litemap_test
+        .remove(&175)
+        .ok_or(())
+        .expect_err("does not exist");
+    litemap_test.remove(&147).ok_or(()).expect("exists");
+    litemap_std
+        .remove(&175)
+        .ok_or(())
+        .expect_err("does not exist");
+    litemap_std.remove(&147).ok_or(()).expect("exists");
+
+    assert_eq!(19, litemap_test.len());
+    assert_eq!(19, litemap_std.len());
+    check_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+
+    litemap_test.clear();
+    litemap_std.clear();
+    check_equivalence(litemap_test.values, litemap_std.values);
+}
+
+/// Similar to [`check_store`] function, but also checks the validitiy of [`StoreIterableMut`]
+/// and [`StoreBulkMut`] traits.
+// Test code
+#[allow(clippy::expect_used)]
+pub fn check_store_full<'a, S>()
+where
+    S: StoreConstEmpty<u32, u64>
+        + StoreIterableMut<'a, u32, u64>
+        + StoreIntoIterator<u32, u64>
+        + StoreFromIterator<u32, u64>
+        + StoreBulkMut<u32, u64>
+        + Clone
+        + Debug
+        + PartialEq
+        + 'a,
+{
+    let mut litemap_test: LiteMap<u32, u64, S> = LiteMap::new();
+    assert!(litemap_test.is_empty());
+    let mut litemap_std = LiteMap::<u32, u64>::new();
+    populate_litemap(&mut litemap_test);
+    populate_litemap(&mut litemap_std);
+    check_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+    check_into_iter_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+
+    let extras_test = litemap_test.clone();
+    let extras_test = litemap_test
+        .extend_from_litemap(extras_test)
+        .expect("duplicates");
+    assert_eq!(extras_test, litemap_test);
+    let extras_std = litemap_std.clone();
+    check_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+    check_into_iter_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+
+    assert_eq!(20, litemap_test.len());
+    litemap_test.retain(|_, v| v % 2 == 0);
+    litemap_std.retain(|_, v| v % 2 == 0);
+    assert_eq!(11, litemap_test.len());
+    assert_eq!(11, litemap_std.len());
+    check_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+    check_into_iter_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+
+    let extras_test = litemap_test
+        .extend_from_litemap(extras_test)
+        .expect("duplicates");
+    let extras_std = litemap_std
+        .extend_from_litemap(extras_std)
+        .expect("duplicates");
+    assert_eq!(11, extras_test.len());
+    assert_eq!(11, extras_std.len());
+    assert_eq!(20, litemap_test.len());
+    assert_eq!(20, litemap_std.len());
+    check_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+
+    assert_eq!(20, litemap_test.len());
+    litemap_test.retain(|_, v| v % 2 == 0);
+    litemap_std.retain(|_, v| v % 2 == 0);
+    assert_eq!(11, litemap_test.len());
+    assert_eq!(11, litemap_std.len());
+    let mut extras = LiteMap::<u32, u64>::new();
+    populate_litemap(&mut extras);
+    litemap_test.extend(extras.clone());
+    litemap_std.extend(extras);
+    assert_eq!(20, litemap_test.len());
+    assert_eq!(20, litemap_std.len());
+
+    check_into_iter_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+    litemap_test
+        .remove(&175)
+        .ok_or(())
+        .expect_err("does not exist");
+    litemap_test.remove(&176).ok_or(()).expect("exists");
+    litemap_std
+        .remove(&175)
+        .ok_or(())
+        .expect_err("does not exist");
+    litemap_std.remove(&176).ok_or(()).expect("exists");
+    assert_eq!(19, litemap_test.len());
+    assert_eq!(19, litemap_std.len());
+    check_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+    check_into_iter_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+
+    litemap_test.clear();
+    litemap_std.clear();
+    check_equivalence(litemap_test.clone().values, litemap_std.clone().values);
+    check_into_iter_equivalence(litemap_test.values, litemap_std.values);
+
+    test_extend::<S>();
+}
+
+fn test_extend<'a, S>()
+where
+    S: StoreConstEmpty<u32, u64>
+        + StoreIterableMut<'a, u32, u64>
+        + StoreIntoIterator<u32, u64>
+        + StoreFromIterator<u32, u64>
+        + StoreBulkMut<u32, u64>
+        + Clone
+        + Debug
+        + PartialEq
+        + 'a,
+{
+    // Extend an empty BTreeMap with initial entries.
+    let mut map: LiteMap<u32, u64, S> = LiteMap::new();
+    let initial_entries = [(1, 1), (2, 2), (3, 3)];
+    map.extend(initial_entries);
+    assert_eq!(map.len(), 3);
+    assert_eq!(map.get(&1), Some(&1));
+    assert_eq!(map.get(&2), Some(&2));
+    assert_eq!(map.get(&3), Some(&3));
+
+    // Extend with entries that contain keys already present.
+    // For repeated keys, the last value should remain.
+    let overlapping_entries = [(2, 22), (4, 44), (1, 11)];
+    map.extend(overlapping_entries);
+    assert_eq!(map.len(), 4);
+    assert_eq!(map.get(&1), Some(&11));
+    assert_eq!(map.get(&2), Some(&22));
+    assert_eq!(map.get(&3), Some(&3));
+    assert_eq!(map.get(&4), Some(&44));
+
+    // Extend with an iterator that includes duplicate key entries.
+    // The very last occurrence for a key should be the final value.
+    let duplicate_entries = [(3, 333), (3, 3333), (5, 5)];
+    map.extend(duplicate_entries);
+    assert_eq!(map.len(), 5);
+    assert_eq!(map.get(&3), Some(&3333));
+    assert_eq!(map.get(&5), Some(&5));
+
+    // Extend with an empty iterator: the map should remain unchanged.
+    let empty_entries: Vec<(u32, u64)> = Vec::new();
+    let map_clone = map.clone();
+    map.extend(empty_entries);
+    check_equivalence(map.values.clone(), map_clone.values.clone());
+
+    // Extend with the same values: the map should remain unchanged.
+    map.extend(map_clone.clone());
+    check_equivalence(map.values.clone(), map_clone.values);
+}
diff --git a/vendor/litemap/tests/rkyv.rs b/vendor/litemap/tests/rkyv.rs
new file mode 100644
index 00000000..1e6a2d72
--- /dev/null
+++ b/vendor/litemap/tests/rkyv.rs
@@ -0,0 +1,98 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use litemap::LiteMap;
+use rkyv::archived_root;
+use rkyv::check_archived_root;
+use rkyv::ser::serializers::AllocSerializer;
+use rkyv::ser::Serializer;
+use rkyv::util::AlignedBytes;
+use rkyv::util::AlignedVec;
+use rkyv::Deserialize;
+use rkyv::Infallible;
+
+const DATA: [(&str, &str); 11] = [
+    ("ar", "Arabic"),
+    ("bn", "Bangla"),
+    ("ccp", "Chakma"),
+    ("en", "English"),
+    ("es", "Spanish"),
+    ("fr", "French"),
+    ("ja", "Japanese"),
+    ("ru", "Russian"),
+    ("sr", "Serbian"),
+    ("th", "Thai"),
+    ("tr", "Turkish"),
+];
+
+const RKYV: AlignedBytes<192> = AlignedBytes(if cfg!(target_endian = "little") {
+    [
+        74, 97, 112, 97, 110, 101, 115, 101, 97, 114, 0, 0, 0, 0, 0, 2, 65, 114, 97, 98, 105, 99,
+        0, 6, 98, 110, 0, 0, 0, 0, 0, 2, 66, 97, 110, 103, 108, 97, 0, 6, 99, 99, 112, 0, 0, 0, 0,
+        3, 67, 104, 97, 107, 109, 97, 0, 6, 101, 110, 0, 0, 0, 0, 0, 2, 69, 110, 103, 108, 105,
+        115, 104, 7, 101, 115, 0, 0, 0, 0, 0, 2, 83, 112, 97, 110, 105, 115, 104, 7, 102, 114, 0,
+        0, 0, 0, 0, 2, 70, 114, 101, 110, 99, 104, 0, 6, 106, 97, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0,
+        144, 255, 255, 255, 114, 117, 0, 0, 0, 0, 0, 2, 82, 117, 115, 115, 105, 97, 110, 7, 115,
+        114, 0, 0, 0, 0, 0, 2, 83, 101, 114, 98, 105, 97, 110, 7, 116, 104, 0, 0, 0, 0, 0, 2, 84,
+        104, 97, 105, 0, 0, 0, 4, 116, 114, 0, 0, 0, 0, 0, 2, 84, 117, 114, 107, 105, 115, 104, 7,
+        80, 255, 255, 255, 11, 0, 0, 0,
+    ]
+} else {
+    [
+        74, 97, 112, 97, 110, 101, 115, 101, 97, 114, 0, 0, 0, 0, 0, 2, 65, 114, 97, 98, 105, 99,
+        0, 6, 98, 110, 0, 0, 0, 0, 0, 2, 66, 97, 110, 103, 108, 97, 0, 6, 99, 99, 112, 0, 0, 0, 0,
+        3, 67, 104, 97, 107, 109, 97, 0, 6, 101, 110, 0, 0, 0, 0, 0, 2, 69, 110, 103, 108, 105,
+        115, 104, 7, 101, 115, 0, 0, 0, 0, 0, 2, 83, 112, 97, 110, 105, 115, 104, 7, 102, 114, 0,
+        0, 0, 0, 0, 2, 70, 114, 101, 110, 99, 104, 0, 6, 106, 97, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8,
+        144, 255, 255, 255, 114, 117, 0, 0, 0, 0, 0, 2, 82, 117, 115, 115, 105, 97, 110, 7, 115,
+        114, 0, 0, 0, 0, 0, 2, 83, 101, 114, 98, 105, 97, 110, 7, 116, 104, 0, 0, 0, 0, 0, 2, 84,
+        104, 97, 105, 0, 0, 0, 4, 116, 114, 0, 0, 0, 0, 0, 2, 84, 117, 114, 107, 105, 115, 104, 7,
+        255, 255, 255, 80, 0, 0, 0, 11,
+    ]
+});
+
+type LiteMapOfStrings = LiteMap<String, String>;
+type TupleVecOfStrings = Vec<(String, String)>;
+
+fn generate() -> AlignedVec {
+    let map = DATA
+        .iter()
+        .map(|&(k, v)| (k.to_owned(), v.to_owned()))
+        .collect::<LiteMapOfStrings>();
+
+    let mut serializer = AllocSerializer::<4096>::default();
+    serializer
+        .serialize_value(&map.into_tuple_vec())
+        .expect("failed to archive test");
+    serializer.into_serializer().into_inner()
+}
+
+#[test]
+fn rkyv_serialize() {
+    let serialized = generate();
+    assert_eq!(RKYV.0, serialized.as_slice());
+}
+
+#[test]
+fn rkyv_archive() {
+    let archived = unsafe { archived_root::<TupleVecOfStrings>(&RKYV.0) };
+    let s = archived[0].1.as_str();
+    assert_eq!(s, "Arabic");
+}
+
+#[test]
+fn rkyv_checked_archive() {
+    let archived = check_archived_root::<TupleVecOfStrings>(&RKYV.0).unwrap();
+    let s = archived[0].1.as_str();
+    assert_eq!(s, "Arabic");
+}
+
+#[test]
+fn rkyv_deserialize() {
+    let archived = unsafe { archived_root::<TupleVecOfStrings>(&RKYV.0) };
+    let deserialized = archived.deserialize(&mut Infallible).unwrap();
+    // Safe because we are deserializing a buffer from a trusted source
+    let deserialized: LiteMapOfStrings = LiteMap::from_sorted_store_unchecked(deserialized);
+    assert_eq!(deserialized.get("tr").map(String::as_str), Some("Turkish"));
+}
diff --git a/vendor/litemap/tests/serde.rs b/vendor/litemap/tests/serde.rs
new file mode 100644
index 00000000..72aa67ec
--- /dev/null
+++ b/vendor/litemap/tests/serde.rs
@@ -0,0 +1,22 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use litemap::LiteMap;
+
+#[test]
+fn test_ser() {
+    let mut map = LiteMap::new_vec();
+    map.insert(1, "jat");
+    map.insert(4, "sei");
+    map.insert(3, "saam");
+    map.insert(2, "ji");
+
+    let json_string = serde_json::to_string(&map).unwrap();
+
+    assert_eq!(json_string, r#"{"1":"jat","2":"ji","3":"saam","4":"sei"}"#);
+
+    let new_map = serde_json::from_str(&json_string).unwrap();
+
+    assert_eq!(map, new_map);
+}
diff --git a/vendor/litemap/tests/store.rs b/vendor/litemap/tests/store.rs
new file mode 100644
index 00000000..212e31b6
--- /dev/null
+++ b/vendor/litemap/tests/store.rs
@@ -0,0 +1,158 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use litemap::store::*;
+use litemap::testing::check_store_full;
+use std::cmp::Ordering;
+
+/// A Vec wrapper that leverages the default function impls from `Store`
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
+struct VecWithDefaults<T>(Vec<T>);
+
+type MapF<K, V> = fn(&(K, V)) -> (&K, &V);
+
+#[inline]
+fn map_f<K, V>(input: &(K, V)) -> (&K, &V) {
+    (&input.0, &input.1)
+}
+
+type MapFMut<K, V> = fn(&mut (K, V)) -> (&K, &mut V);
+
+#[inline]
+fn map_f_mut<K, V>(input: &mut (K, V)) -> (&K, &mut V) {
+    (&input.0, &mut input.1)
+}
+
+impl<K, V> StoreConstEmpty<K, V> for VecWithDefaults<(K, V)> {
+    const EMPTY: VecWithDefaults<(K, V)> = VecWithDefaults(Vec::new());
+}
+
+impl<K, V> Store<K, V> for VecWithDefaults<(K, V)> {
+    #[inline]
+    fn lm_len(&self) -> usize {
+        self.0.as_slice().len()
+    }
+
+    // leave lm_is_empty as default
+
+    #[inline]
+    fn lm_get(&self, index: usize) -> Option<(&K, &V)> {
+        self.0.as_slice().get(index).map(map_f)
+    }
+
+    // leave lm_last as default
+
+    #[inline]
+    fn lm_binary_search_by<F>(&self, mut cmp: F) -> Result<usize, usize>
+    where
+        F: FnMut(&K) -> Ordering,
+    {
+        self.0.as_slice().binary_search_by(|(k, _)| cmp(k))
+    }
+}
+
+impl<K: Ord, V> StoreFromIterable<K, V> for VecWithDefaults<(K, V)> {
+    fn lm_sort_from_iter<I: IntoIterator<Item = (K, V)>>(iter: I) -> Self {
+        let v: Vec<_> = Vec::lm_sort_from_iter(iter);
+        Self(v)
+    }
+}
+
+impl<K, V> StoreMut<K, V> for VecWithDefaults<(K, V)> {
+    #[inline]
+    fn lm_with_capacity(capacity: usize) -> Self {
+        Self(Vec::with_capacity(capacity))
+    }
+
+    #[inline]
+    fn lm_reserve(&mut self, additional: usize) {
+        self.0.reserve(additional)
+    }
+
+    #[inline]
+    fn lm_get_mut(&mut self, index: usize) -> Option<(&K, &mut V)> {
+        self.0.as_mut_slice().get_mut(index).map(map_f_mut)
+    }
+
+    #[inline]
+    fn lm_push(&mut self, key: K, value: V) {
+        self.0.push((key, value))
+    }
+
+    #[inline]
+    fn lm_insert(&mut self, index: usize, key: K, value: V) {
+        self.0.insert(index, (key, value))
+    }
+
+    #[inline]
+    fn lm_remove(&mut self, index: usize) -> (K, V) {
+        self.0.remove(index)
+    }
+    #[inline]
+    fn lm_clear(&mut self) {
+        self.0.clear()
+    }
+
+    // leave lm_retain as default
+}
+
+impl<'a, K: 'a, V: 'a> StoreIterable<'a, K, V> for VecWithDefaults<(K, V)> {
+    type KeyValueIter = core::iter::Map<core::slice::Iter<'a, (K, V)>, MapF<K, V>>;
+
+    #[inline]
+    fn lm_iter(&'a self) -> Self::KeyValueIter {
+        self.0.as_slice().iter().map(map_f)
+    }
+}
+
+impl<'a, K: 'a, V: 'a> StoreIterableMut<'a, K, V> for VecWithDefaults<(K, V)> {
+    type KeyValueIterMut = core::iter::Map<core::slice::IterMut<'a, (K, V)>, MapFMut<K, V>>;
+
+    #[inline]
+    fn lm_iter_mut(&'a mut self) -> Self::KeyValueIterMut {
+        self.0.as_mut_slice().iter_mut().map(map_f_mut)
+    }
+}
+
+impl<K, V> StoreIntoIterator<K, V> for VecWithDefaults<(K, V)> {
+    type KeyValueIntoIter = std::vec::IntoIter<(K, V)>;
+
+    #[inline]
+    fn lm_into_iter(self) -> Self::KeyValueIntoIter {
+        IntoIterator::into_iter(self.0)
+    }
+
+    // leave lm_extend_end as default
+
+    // leave lm_extend_start as default
+}
+
+impl<A> std::iter::FromIterator<A> for VecWithDefaults<A> {
+    fn from_iter<I: IntoIterator<Item = A>>(iter: I) -> Self {
+        Self(Vec::from_iter(iter))
+    }
+}
+
+impl<K, V> StoreFromIterator<K, V> for VecWithDefaults<(K, V)> {}
+
+impl<K: Ord, V> StoreBulkMut<K, V> for VecWithDefaults<(K, V)> {
+    fn lm_retain<F>(&mut self, predicate: F)
+    where
+        F: FnMut(&K, &V) -> bool,
+    {
+        self.0.lm_retain(predicate)
+    }
+
+    fn lm_extend<I>(&mut self, other: I)
+    where
+        I: IntoIterator<Item = (K, V)>,
+    {
+        self.0.lm_extend(other)
+    }
+}
+
+#[test]
+fn test_default_impl() {
+    check_store_full::<VecWithDefaults<(u32, u64)>>();
+}
diff --git a/vendor/potential_utf/.cargo-checksum.json b/vendor/potential_utf/.cargo-checksum.json
new file mode 100644
index 00000000..e6b3f978
--- /dev/null
+++ b/vendor/potential_utf/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"82fd80e6633b773f2c8c72016c7966f4dec32f36a27c6ae634490cfec34e0445","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"693ab95a7920db4ca6655b352efe33cfe5ee42792369f591257a3f5af735e918","src/lib.rs":"58fe437a809c113ce98e30c92ed4ccf9a78a31374e033bf56bb3384d76a0827d","src/uchar.rs":"157d4dd70360083d9d3e2f3f67d004ce282bcec0f378608dfac33835ffaf0e95","src/ustr.rs":"3b9cbec56c5cfa233335220e459e9be1c3ef48e18ee07691c4bf3e29152a5e70","src/writeable.rs":"9c381775e40a47db29f0601b6090897b5e649d9294ef74f11ac76dbf42c6448c"},"package":"e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"}
\ No newline at end of file
diff --git a/vendor/potential_utf/Cargo.toml b/vendor/potential_utf/Cargo.toml
new file mode 100644
index 00000000..a0328ef4
--- /dev/null
+++ b/vendor/potential_utf/Cargo.toml
@@ -0,0 +1,82 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.81"
+name = "potential_utf"
+version = "0.1.2"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Unvalidated string and character types"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[features]
+alloc = [
+    "serde?/alloc",
+    "zerovec?/alloc",
+]
+databake = ["dep:databake"]
+serde = ["dep:serde"]
+writeable = [
+    "dep:writeable",
+    "alloc",
+]
+zerovec = ["dep:zerovec"]
+
+[lib]
+name = "potential_utf"
+path = "src/lib.rs"
+
+[dependencies.databake]
+version = "0.2.0"
+optional = true
+default-features = false
+
+[dependencies.serde]
+version = "1.0.110"
+optional = true
+default-features = false
+
+[dependencies.writeable]
+version = "0.6.0"
+optional = true
+default-features = false
+
+[dependencies.zerovec]
+version = "0.11.1"
+optional = true
+default-features = false
+
+[dev-dependencies.bincode]
+version = "1.3.1"
+
+[dev-dependencies.serde_json]
+version = "1.0.45"
diff --git a/vendor/potential_utf/LICENSE b/vendor/potential_utf/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/potential_utf/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/potential_utf/README.md b/vendor/potential_utf/README.md
new file mode 100644
index 00000000..5251f098
--- /dev/null
+++ b/vendor/potential_utf/README.md
@@ -0,0 +1,11 @@
+# unvalidated_utf [![crates.io](https://img.shields.io/crates/v/unvalidated_utf)](https://crates.io/crates/unvalidated_utf)
+
+<!-- cargo-rdme start -->
+
+A crate providing unvalidated string and character types.
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/potential_utf/src/lib.rs b/vendor/potential_utf/src/lib.rs
new file mode 100644
index 00000000..2b343c9c
--- /dev/null
+++ b/vendor/potential_utf/src/lib.rs
@@ -0,0 +1,33 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+
+//! A crate providing unvalidated string and character types.
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+mod uchar;
+mod ustr;
+
+pub use uchar::PotentialCodePoint;
+pub use ustr::PotentialUtf16;
+pub use ustr::PotentialUtf8;
+
+#[cfg(feature = "writeable")]
+mod writeable;
diff --git a/vendor/potential_utf/src/uchar.rs b/vendor/potential_utf/src/uchar.rs
new file mode 100644
index 00000000..280964ca
--- /dev/null
+++ b/vendor/potential_utf/src/uchar.rs
@@ -0,0 +1,375 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::cmp::Ordering;
+use core::fmt;
+
+/// A 24-bit numeric data type that is expected to be a Unicode scalar value, but is not
+/// validated as such.
+///
+/// Use this type instead of `char` when you want to deal with data that is expected to be valid
+/// Unicode scalar values, but you want control over when or if you validate that assumption.
+///
+/// # Examples
+///
+/// ```
+/// use potential_utf::PotentialCodePoint;
+///
+/// assert_eq!(PotentialCodePoint::from_u24(0x68).try_to_char(), Ok('h'));
+/// assert_eq!(PotentialCodePoint::from_char('i').try_to_char(), Ok('i'));
+/// assert_eq!(
+///     PotentialCodePoint::from_u24(0x1F44B).try_to_char(),
+///     Ok('👋')
+/// );
+///
+/// assert!(PotentialCodePoint::from_u24(0xDE01).try_to_char().is_err());
+/// assert_eq!(
+///     PotentialCodePoint::from_u24(0xDE01).to_char_lossy(),
+///     char::REPLACEMENT_CHARACTER
+/// );
+/// ```
+#[repr(transparent)]
+#[allow(clippy::exhaustive_structs)] // transparent newtype
+#[derive(PartialEq, Eq, Clone, Copy, Hash)]
+pub struct PotentialCodePoint([u8; 3]);
+
+impl PotentialCodePoint {
+    /// Create a [`PotentialCodePoint`] from a `char`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use potential_utf::PotentialCodePoint;
+    ///
+    /// let a = PotentialCodePoint::from_char('a');
+    /// assert_eq!(a.try_to_char().unwrap(), 'a');
+    /// ```
+    #[inline]
+    pub const fn from_char(c: char) -> Self {
+        let [u0, u1, u2, _u3] = (c as u32).to_le_bytes();
+        Self([u0, u1, u2])
+    }
+
+    /// Create [`PotentialCodePoint`] from a u32 value, ignoring the most significant 8 bits.
+    #[inline]
+    pub const fn from_u24(c: u32) -> Self {
+        let [u0, u1, u2, _u3] = c.to_le_bytes();
+        Self([u0, u1, u2])
+    }
+
+    /// Attempt to convert a [`PotentialCodePoint`] to a `char`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use potential_utf::PotentialCodePoint;
+    /// use zerovec::ule::AsULE;
+    ///
+    /// let a = PotentialCodePoint::from_char('a');
+    /// assert_eq!(a.try_to_char(), Ok('a'));
+    ///
+    /// let b = PotentialCodePoint::from_unaligned([0xFF, 0xFF, 0xFF].into());
+    /// assert!(matches!(b.try_to_char(), Err(_)));
+    /// ```
+    #[inline]
+    pub fn try_to_char(self) -> Result<char, core::char::CharTryFromError> {
+        char::try_from(u32::from(self))
+    }
+
+    /// Convert a [`PotentialCodePoint`] to a `char', returning [`char::REPLACEMENT_CHARACTER`]
+    /// if the `PotentialCodePoint` does not represent a valid Unicode scalar value.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use potential_utf::PotentialCodePoint;
+    /// use zerovec::ule::AsULE;
+    ///
+    /// let a = PotentialCodePoint::from_unaligned([0xFF, 0xFF, 0xFF].into());
+    /// assert_eq!(a.to_char_lossy(), char::REPLACEMENT_CHARACTER);
+    /// ```
+    #[inline]
+    pub fn to_char_lossy(self) -> char {
+        self.try_to_char().unwrap_or(char::REPLACEMENT_CHARACTER)
+    }
+
+    /// Convert a [`PotentialCodePoint`] to a `char` without checking that it is
+    /// a valid Unicode scalar value.
+    ///
+    /// # Safety
+    ///
+    /// The `PotentialCodePoint` must be a valid Unicode scalar value in little-endian order.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use potential_utf::PotentialCodePoint;
+    ///
+    /// let a = PotentialCodePoint::from_char('a');
+    /// assert_eq!(unsafe { a.to_char_unchecked() }, 'a');
+    /// ```
+    #[inline]
+    pub unsafe fn to_char_unchecked(self) -> char {
+        char::from_u32_unchecked(u32::from(self))
+    }
+
+    /// For converting to the ULE type in a const context
+    ///
+    /// Can be removed once const traits are a thing
+    #[inline]
+    #[cfg(feature = "zerovec")]
+    pub const fn to_unaligned(self) -> zerovec::ule::RawBytesULE<3> {
+        zerovec::ule::RawBytesULE(self.0)
+    }
+}
+
+/// This impl requires enabling the optional `zerovec` Cargo feature
+#[cfg(feature = "zerovec")]
+impl zerovec::ule::AsULE for PotentialCodePoint {
+    type ULE = zerovec::ule::RawBytesULE<3>;
+
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        zerovec::ule::RawBytesULE(self.0)
+    }
+
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        Self(unaligned.0)
+    }
+}
+
+// Safety: PotentialCodePoint is always the little-endian representation of a char,
+// which corresponds to its AsULE::ULE type
+/// This impl requires enabling the optional `zerovec` Cargo feature
+#[cfg(feature = "zerovec")]
+unsafe impl zerovec::ule::EqULE for PotentialCodePoint {}
+
+impl fmt::Debug for PotentialCodePoint {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        // Debug as a char if possible
+        match self.try_to_char() {
+            Ok(c) => fmt::Debug::fmt(&c, f),
+            Err(_) => fmt::Debug::fmt(&self.0, f),
+        }
+    }
+}
+
+impl PartialOrd for PotentialCodePoint {
+    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+        Some(self.cmp(other))
+    }
+}
+
+impl PartialEq<char> for PotentialCodePoint {
+    fn eq(&self, other: &char) -> bool {
+        self.eq(&Self::from_char(*other))
+    }
+}
+
+impl PartialOrd<char> for PotentialCodePoint {
+    fn partial_cmp(&self, other: &char) -> Option<Ordering> {
+        self.partial_cmp(&Self::from_char(*other))
+    }
+}
+
+impl PartialEq<PotentialCodePoint> for char {
+    fn eq(&self, other: &PotentialCodePoint) -> bool {
+        PotentialCodePoint::from_char(*self).eq(other)
+    }
+}
+
+impl PartialOrd<PotentialCodePoint> for char {
+    fn partial_cmp(&self, other: &PotentialCodePoint) -> Option<Ordering> {
+        PotentialCodePoint::from_char(*self).partial_cmp(other)
+    }
+}
+
+impl Ord for PotentialCodePoint {
+    // custom implementation, as derived Ord would compare lexicographically
+    fn cmp(&self, other: &Self) -> Ordering {
+        let a = u32::from(*self);
+        let b = u32::from(*other);
+        a.cmp(&b)
+    }
+}
+
+impl From<PotentialCodePoint> for u32 {
+    fn from(x: PotentialCodePoint) -> Self {
+        let [a0, a1, a2] = x.0;
+        u32::from_le_bytes([a0, a1, a2, 0])
+    }
+}
+
+impl TryFrom<u32> for PotentialCodePoint {
+    type Error = ();
+    fn try_from(x: u32) -> Result<Self, ()> {
+        let [u0, u1, u2, u3] = x.to_le_bytes();
+        if u3 != 0 {
+            return Err(());
+        }
+        Ok(Self([u0, u1, u2]))
+    }
+}
+
+impl From<char> for PotentialCodePoint {
+    #[inline]
+    fn from(value: char) -> Self {
+        Self::from_char(value)
+    }
+}
+
+impl TryFrom<PotentialCodePoint> for char {
+    type Error = core::char::CharTryFromError;
+
+    #[inline]
+    fn try_from(value: PotentialCodePoint) -> Result<char, Self::Error> {
+        value.try_to_char()
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature
+#[cfg(feature = "serde")]
+impl serde::Serialize for PotentialCodePoint {
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: serde::Serializer,
+    {
+        use serde::ser::Error;
+        let c = self
+            .try_to_char()
+            .map_err(|_| S::Error::custom("invalid Unicode scalar value in PotentialCodePoint"))?;
+        if serializer.is_human_readable() {
+            serializer.serialize_char(c)
+        } else {
+            self.0.serialize(serializer)
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature
+#[cfg(feature = "serde")]
+impl<'de> serde::Deserialize<'de> for PotentialCodePoint {
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: serde::Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let c = <char>::deserialize(deserializer)?;
+            Ok(PotentialCodePoint::from_char(c))
+        } else {
+            let bytes = <[u8; 3]>::deserialize(deserializer)?;
+            Ok(PotentialCodePoint(bytes))
+        }
+    }
+}
+
+/// This impl requires enabling the optional `databake` Cargo feature
+#[cfg(feature = "databake")]
+impl databake::Bake for PotentialCodePoint {
+    fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+        match self.try_to_char() {
+            Ok(ch) => {
+                env.insert("potential_utf");
+                let ch = ch.bake(env);
+                databake::quote! {
+                    potential_utf::PotentialCodePoint::from_char(#ch)
+                }
+            }
+            Err(_) => {
+                env.insert("potential_utf");
+                let u24 = u32::from_le_bytes([self.0[0], self.0[1], self.0[2], 0]);
+                databake::quote! {
+                    potential_utf::PotentialCodePoint::from_u24(#u24)
+                }
+            }
+        }
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::*;
+    use zerovec::ZeroVec;
+
+    #[test]
+    fn test_serde_fail() {
+        let uc = PotentialCodePoint([0xFF, 0xFF, 0xFF]);
+        serde_json::to_string(&uc).expect_err("serialize invalid char bytes");
+        bincode::serialize(&uc).expect_err("serialize invalid char bytes");
+    }
+
+    #[test]
+    fn test_serde_json() {
+        let c = '🙃';
+        let uc = PotentialCodePoint::from_char(c);
+        let json_ser = serde_json::to_string(&uc).unwrap();
+
+        assert_eq!(json_ser, r#""🙃""#);
+
+        let json_de: PotentialCodePoint = serde_json::from_str(&json_ser).unwrap();
+
+        assert_eq!(uc, json_de);
+    }
+
+    #[test]
+    fn test_serde_bincode() {
+        let c = '🙃';
+        let uc = PotentialCodePoint::from_char(c);
+        let bytes_ser = bincode::serialize(&uc).unwrap();
+
+        assert_eq!(bytes_ser, [0x43, 0xF6, 0x01]);
+
+        let bytes_de: PotentialCodePoint = bincode::deserialize(&bytes_ser).unwrap();
+
+        assert_eq!(uc, bytes_de);
+    }
+
+    #[test]
+    fn test_representation() {
+        let chars = ['w', 'ω', '文', '𑄃', '🙃'];
+
+        // backed by [PotentialCodePoint]
+        let uvchars: Vec<_> = chars
+            .iter()
+            .copied()
+            .map(PotentialCodePoint::from_char)
+            .collect();
+        // backed by [RawBytesULE<3>]
+        let zvec: ZeroVec<_> = uvchars.clone().into_iter().collect();
+
+        let ule_bytes = zvec.as_bytes();
+        let uvbytes;
+        unsafe {
+            let ptr = &uvchars[..] as *const _ as *const u8;
+            uvbytes = core::slice::from_raw_parts(ptr, ule_bytes.len());
+        }
+
+        // PotentialCodePoint is defined as little-endian, so this must be true on all platforms
+        // also asserts that to_unaligned/from_unaligned are no-ops
+        assert_eq!(uvbytes, ule_bytes);
+
+        assert_eq!(
+            &[119, 0, 0, 201, 3, 0, 135, 101, 0, 3, 17, 1, 67, 246, 1],
+            ule_bytes
+        );
+    }
+
+    #[test]
+    fn test_char_bake() {
+        databake::test_bake!(
+            PotentialCodePoint,
+            const,
+            crate::PotentialCodePoint::from_char('b'),
+            potential_utf
+        );
+        // surrogate code point
+        databake::test_bake!(
+            PotentialCodePoint,
+            const,
+            crate::PotentialCodePoint::from_u24(55296u32),
+            potential_utf
+        );
+    }
+}
diff --git a/vendor/potential_utf/src/ustr.rs b/vendor/potential_utf/src/ustr.rs
new file mode 100644
index 00000000..216f629b
--- /dev/null
+++ b/vendor/potential_utf/src/ustr.rs
@@ -0,0 +1,270 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+use core::cmp::Ordering;
+use core::fmt;
+use core::ops::Deref;
+
+/// A byte slice that is expected to be a UTF-8 string but does not enforce that invariant.
+///
+/// Use this type instead of `str` if you don't need to enforce UTF-8 during deserialization. For
+/// example, strings that are keys of a map don't need to ever be reified as `str`s.
+///
+/// [`PotentialUtf8`] derefs to `[u8]`. To obtain a `str`, use [`Self::try_as_str()`].
+///
+/// The main advantage of this type over `[u8]` is that it serializes as a string in
+/// human-readable formats like JSON.
+///
+/// # Examples
+///
+/// Using an [`PotentialUtf8`] as the key of a [`ZeroMap`]:
+///
+/// ```
+/// use potential_utf::PotentialUtf8;
+/// use zerovec::ZeroMap;
+///
+/// // This map is cheap to deserialize, as we don't need to perform UTF-8 validation.
+/// let map: ZeroMap<PotentialUtf8, u8> = [
+///     (PotentialUtf8::from_bytes(b"abc"), 11),
+///     (PotentialUtf8::from_bytes(b"def"), 22),
+///     (PotentialUtf8::from_bytes(b"ghi"), 33),
+/// ]
+/// .into_iter()
+/// .collect();
+///
+/// let key = "abc";
+/// let value = map.get_copied(PotentialUtf8::from_str(key));
+/// assert_eq!(Some(11), value);
+/// ```
+///
+/// [`ZeroMap`]: zerovec::ZeroMap
+#[repr(transparent)]
+#[derive(PartialEq, Eq, PartialOrd, Ord)]
+#[allow(clippy::exhaustive_structs)] // transparent newtype
+pub struct PotentialUtf8(pub [u8]);
+
+impl fmt::Debug for PotentialUtf8 {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        // Debug as a string if possible
+        match self.try_as_str() {
+            Ok(s) => fmt::Debug::fmt(s, f),
+            Err(_) => fmt::Debug::fmt(&self.0, f),
+        }
+    }
+}
+
+impl PotentialUtf8 {
+    /// Create a [`PotentialUtf8`] from a byte slice.
+    #[inline]
+    pub const fn from_bytes(other: &[u8]) -> &Self {
+        // Safety: PotentialUtf8 is transparent over [u8]
+        unsafe { core::mem::transmute(other) }
+    }
+
+    /// Create a [`PotentialUtf8`] from a string slice.
+    #[inline]
+    pub const fn from_str(s: &str) -> &Self {
+        Self::from_bytes(s.as_bytes())
+    }
+
+    /// Create a [`PotentialUtf8`] from boxed bytes.
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn from_boxed_bytes(other: Box<[u8]>) -> Box<Self> {
+        // Safety: PotentialUtf8 is transparent over [u8]
+        unsafe { core::mem::transmute(other) }
+    }
+
+    /// Create a [`PotentialUtf8`] from a boxed `str`.
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn from_boxed_str(other: Box<str>) -> Box<Self> {
+        Self::from_boxed_bytes(other.into_boxed_bytes())
+    }
+
+    /// Get the bytes from a [`PotentialUtf8].
+    #[inline]
+    pub const fn as_bytes(&self) -> &[u8] {
+        &self.0
+    }
+
+    /// Attempt to convert a [`PotentialUtf8`] to a `str`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use potential_utf::PotentialUtf8;
+    ///
+    /// static A: &PotentialUtf8 = PotentialUtf8::from_bytes(b"abc");
+    ///
+    /// let b = A.try_as_str().unwrap();
+    /// assert_eq!(b, "abc");
+    /// ```
+    // Note: this is const starting in 1.63
+    #[inline]
+    pub fn try_as_str(&self) -> Result<&str, core::str::Utf8Error> {
+        core::str::from_utf8(&self.0)
+    }
+}
+
+impl<'a> From<&'a str> for &'a PotentialUtf8 {
+    #[inline]
+    fn from(other: &'a str) -> Self {
+        PotentialUtf8::from_str(other)
+    }
+}
+
+impl PartialEq<str> for PotentialUtf8 {
+    fn eq(&self, other: &str) -> bool {
+        self.eq(Self::from_str(other))
+    }
+}
+
+impl PartialOrd<str> for PotentialUtf8 {
+    fn partial_cmp(&self, other: &str) -> Option<Ordering> {
+        self.partial_cmp(Self::from_str(other))
+    }
+}
+
+impl PartialEq<PotentialUtf8> for str {
+    fn eq(&self, other: &PotentialUtf8) -> bool {
+        PotentialUtf8::from_str(self).eq(other)
+    }
+}
+
+impl PartialOrd<PotentialUtf8> for str {
+    fn partial_cmp(&self, other: &PotentialUtf8) -> Option<Ordering> {
+        PotentialUtf8::from_str(self).partial_cmp(other)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl From<Box<str>> for Box<PotentialUtf8> {
+    #[inline]
+    fn from(other: Box<str>) -> Self {
+        PotentialUtf8::from_boxed_str(other)
+    }
+}
+
+impl Deref for PotentialUtf8 {
+    type Target = [u8];
+    fn deref(&self) -> &Self::Target {
+        &self.0
+    }
+}
+
+/// This impl requires enabling the optional `zerovec` Cargo feature
+#[cfg(all(feature = "zerovec", feature = "alloc"))]
+impl<'a> zerovec::maps::ZeroMapKV<'a> for PotentialUtf8 {
+    type Container = zerovec::VarZeroVec<'a, PotentialUtf8>;
+    type Slice = zerovec::VarZeroSlice<PotentialUtf8>;
+    type GetType = PotentialUtf8;
+    type OwnedType = Box<PotentialUtf8>;
+}
+
+// Safety (based on the safety checklist on the VarULE trait):
+//  1. PotentialUtf8 does not include any uninitialized or padding bytes (transparent over a ULE)
+//  2. PotentialUtf8 is aligned to 1 byte (transparent over a ULE)
+//  3. The impl of `validate_bytes()` returns an error if any byte is not valid (impossible)
+//  4. The impl of `validate_bytes()` returns an error if the slice cannot be used in its entirety (impossible)
+//  5. The impl of `from_bytes_unchecked()` returns a reference to the same data (returns the argument directly)
+//  6. All other methods are defaulted
+//  7. `[T]` byte equality is semantic equality (transparent over a ULE)
+/// This impl requires enabling the optional `zerovec` Cargo feature
+#[cfg(feature = "zerovec")]
+unsafe impl zerovec::ule::VarULE for PotentialUtf8 {
+    #[inline]
+    fn validate_bytes(_: &[u8]) -> Result<(), zerovec::ule::UleError> {
+        Ok(())
+    }
+    #[inline]
+    unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        PotentialUtf8::from_bytes(bytes)
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature
+#[cfg(feature = "serde")]
+impl serde::Serialize for PotentialUtf8 {
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: serde::Serializer,
+    {
+        use serde::ser::Error;
+        let s = self
+            .try_as_str()
+            .map_err(|_| S::Error::custom("invalid UTF-8 in PotentialUtf8"))?;
+        if serializer.is_human_readable() {
+            serializer.serialize_str(s)
+        } else {
+            serializer.serialize_bytes(s.as_bytes())
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature
+#[cfg(all(feature = "serde", feature = "alloc"))]
+impl<'de> serde::Deserialize<'de> for Box<PotentialUtf8> {
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: serde::Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let boxed_str = Box::<str>::deserialize(deserializer)?;
+            Ok(PotentialUtf8::from_boxed_str(boxed_str))
+        } else {
+            let boxed_bytes = Box::<[u8]>::deserialize(deserializer)?;
+            Ok(PotentialUtf8::from_boxed_bytes(boxed_bytes))
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature
+#[cfg(feature = "serde")]
+impl<'de, 'a> serde::Deserialize<'de> for &'a PotentialUtf8
+where
+    'de: 'a,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: serde::Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let s = <&str>::deserialize(deserializer)?;
+            Ok(PotentialUtf8::from_str(s))
+        } else {
+            let bytes = <&[u8]>::deserialize(deserializer)?;
+            Ok(PotentialUtf8::from_bytes(bytes))
+        }
+    }
+}
+
+#[repr(transparent)]
+#[derive(PartialEq, Eq, PartialOrd, Ord)]
+#[allow(clippy::exhaustive_structs)] // transparent newtype
+pub struct PotentialUtf16(pub [u16]);
+
+impl fmt::Debug for PotentialUtf16 {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        // Debug as a string if possible
+        for c in char::decode_utf16(self.0.iter().copied()) {
+            match c {
+                Ok(c) => write!(f, "{c}")?,
+                Err(e) => write!(f, "\\0x{:x}", e.unpaired_surrogate())?,
+            }
+        }
+        Ok(())
+    }
+}
+
+impl PotentialUtf16 {
+    /// Create a [`PotentialUtf16`] from a u16 slice.
+    #[inline]
+    pub const fn from_slice(other: &[u16]) -> &Self {
+        // Safety: PotentialUtf16 is transparent over [u16]
+        unsafe { core::mem::transmute(other) }
+    }
+}
diff --git a/vendor/potential_utf/src/writeable.rs b/vendor/potential_utf/src/writeable.rs
new file mode 100644
index 00000000..cd489914
--- /dev/null
+++ b/vendor/potential_utf/src/writeable.rs
@@ -0,0 +1,159 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::{PotentialUtf16, PotentialUtf8};
+use alloc::borrow::Cow;
+use core::fmt::Write;
+use writeable::{LengthHint, Part, PartsWrite, TryWriteable};
+
+use core::{char::DecodeUtf16Error, fmt, str::Utf8Error};
+
+/// This impl requires enabling the optional `writeable` Cargo feature
+impl TryWriteable for &'_ PotentialUtf8 {
+    type Error = Utf8Error;
+
+    fn try_write_to_parts<S: PartsWrite + ?Sized>(
+        &self,
+        sink: &mut S,
+    ) -> Result<Result<(), Self::Error>, fmt::Error> {
+        let mut remaining = &self.0;
+        let mut r = Ok(());
+        loop {
+            match core::str::from_utf8(remaining) {
+                Ok(valid) => {
+                    sink.write_str(valid)?;
+                    return Ok(r);
+                }
+                Err(e) => {
+                    // SAFETY: By Utf8Error invariants
+                    let valid = unsafe {
+                        core::str::from_utf8_unchecked(remaining.get_unchecked(..e.valid_up_to()))
+                    };
+                    sink.write_str(valid)?;
+                    sink.with_part(Part::ERROR, |s| s.write_char(char::REPLACEMENT_CHARACTER))?;
+                    if r.is_ok() {
+                        r = Err(e);
+                    }
+                    let Some(error_len) = e.error_len() else {
+                        return Ok(r); // end of string
+                    };
+                    // SAFETY: By Utf8Error invariants
+                    remaining = unsafe { remaining.get_unchecked(e.valid_up_to() + error_len..) }
+                }
+            }
+        }
+    }
+
+    fn writeable_length_hint(&self) -> LengthHint {
+        // Lower bound is all valid UTF-8, upper bound is all bytes with the high bit, which become replacement characters.
+        LengthHint::between(self.0.len(), self.0.len() * 3)
+    }
+
+    fn try_write_to_string(&self) -> Result<Cow<str>, (Self::Error, Cow<str>)> {
+        match core::str::from_utf8(&self.0) {
+            Ok(valid) => Ok(Cow::Borrowed(valid)),
+            Err(e) => {
+                // SAFETY: By Utf8Error invariants
+                let valid = unsafe {
+                    core::str::from_utf8_unchecked(self.0.get_unchecked(..e.valid_up_to()))
+                };
+
+                // Let's assume this is the only error
+                let mut out = alloc::string::String::with_capacity(
+                    self.0.len() + char::REPLACEMENT_CHARACTER.len_utf8()
+                        - e.error_len().unwrap_or(0),
+                );
+
+                out.push_str(valid);
+                out.push(char::REPLACEMENT_CHARACTER);
+
+                // If there's more, we can use `try_write_to`
+                if let Some(error_len) = e.error_len() {
+                    // SAFETY: By Utf8Error invariants
+                    let remaining = unsafe { self.0.get_unchecked(e.valid_up_to() + error_len..) };
+                    let _discard = PotentialUtf8::from_bytes(remaining).try_write_to(&mut out);
+                }
+
+                Err((e, Cow::Owned(out)))
+            }
+        }
+    }
+}
+
+/// This impl requires enabling the optional `writeable` Cargo feature
+impl TryWriteable for &'_ PotentialUtf16 {
+    type Error = DecodeUtf16Error;
+
+    fn try_write_to_parts<S: PartsWrite + ?Sized>(
+        &self,
+        sink: &mut S,
+    ) -> Result<Result<(), Self::Error>, fmt::Error> {
+        let mut r = Ok(());
+        for c in core::char::decode_utf16(self.0.iter().copied()) {
+            match c {
+                Ok(c) => sink.write_char(c)?,
+                Err(e) => {
+                    if r.is_ok() {
+                        r = Err(e);
+                    }
+                    sink.with_part(Part::ERROR, |s| s.write_char(char::REPLACEMENT_CHARACTER))?;
+                }
+            }
+        }
+        Ok(r)
+    }
+
+    fn writeable_length_hint(&self) -> LengthHint {
+        // Lower bound is all ASCII, upper bound is all 3-byte code points (including replacement character)
+        LengthHint::between(self.0.len(), self.0.len() * 3)
+    }
+}
+
+#[cfg(test)]
+mod test {
+    #![allow(invalid_from_utf8)] // only way to construct the error
+    use super::*;
+    use writeable::assert_try_writeable_parts_eq;
+
+    #[test]
+    fn test_utf8() {
+        assert_try_writeable_parts_eq!(
+            PotentialUtf8::from_bytes(b"Foo Bar"),
+            "Foo Bar",
+            Ok(()),
+            []
+        );
+        assert_try_writeable_parts_eq!(
+            PotentialUtf8::from_bytes(b"Foo\xFDBar"),
+            "Foo�Bar",
+            Err(core::str::from_utf8(b"Foo\xFDBar").unwrap_err()),
+            [(3, 6, Part::ERROR)]
+        );
+        assert_try_writeable_parts_eq!(
+            PotentialUtf8::from_bytes(b"Foo\xFDBar\xff"),
+            "Foo�Bar�",
+            Err(core::str::from_utf8(b"Foo\xFDBar\xff").unwrap_err()),
+            [(3, 6, Part::ERROR), (9, 12, Part::ERROR)],
+        );
+    }
+
+    #[test]
+    fn test_utf16() {
+        assert_try_writeable_parts_eq!(
+            PotentialUtf16::from_slice(&[0xD83E, 0xDD73]),
+            "🥳",
+            Ok(()),
+            []
+        );
+        assert_try_writeable_parts_eq!(
+            PotentialUtf16::from_slice(&[0xD83E, 0x20, 0xDD73]),
+            "� �",
+            Err(core::char::decode_utf16([0xD83E].into_iter())
+                .next()
+                .unwrap()
+                .unwrap_err()),
+            [(0, 3, Part::ERROR), (4, 7, Part::ERROR)]
+        );
+    }
+}
diff --git a/vendor/smallvec/.cargo-checksum.json b/vendor/smallvec/.cargo-checksum.json
new file mode 100644
index 00000000..2a8e0dd2
--- /dev/null
+++ b/vendor/smallvec/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"23b775d343d15c7c212134c69a791d75fcdfb4527224b20daf401b494dd4f0c9","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0b28172679e0009b655da42797c03fd163a3379d5cfa67ba1f1655e974a2a1a9","README.md":"a01127c37308457e8d396b176fb790846be0978c173be3f13260b62efcef011b","benches/bench.rs":"d82015eae942ee5cf74ace8c3c260ee2c6b5bcbeeb87254d2c72622c747a708a","debug_metadata/README.md":"4d7f1c1b2c25ce2231ef71864d06e54323867459035b53bc9e00f66a0a44f82e","debug_metadata/smallvec.natvis":"3092ddebd8fffc3486536d7f27f8c5eae3a8a093d45cd8eeb3946ea2b0c35a15","scripts/run_miri.sh":"74a9f9adc43f986e81977b03846f7dd00122a0150bd8ec3fe4842a1a787e0f07","src/arbitrary.rs":"22e55cfbf60374945b30e6d0855129eff67cd8b878cef6fa997e1f4be67b9e3d","src/lib.rs":"881e5b2c9afecd0091df0d1232fd557edbb9d58304d073356b066728af14ab2e","src/specialization.rs":"46433586203399251cba496d67b88d34e1be3c2b591986b77463513da1c66471","src/tests.rs":"77d7dac593a3d4228b99de547fb81de8c451da5fe4f409c48670c6d463ef6f49","tests/debugger_visualizer.rs":"185456ad253957fc0c9e904ff8a1135397ac991c29fa3c60f75d8d81f7463022","tests/macro.rs":"22ad4f6f104a599fdcba19cad8834105b8656b212fb6c7573a427d447f5db14f"},"package":"67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"}
\ No newline at end of file
diff --git a/vendor/smallvec/Cargo.toml b/vendor/smallvec/Cargo.toml
new file mode 100644
index 00000000..d9a4f3b2
--- /dev/null
+++ b/vendor/smallvec/Cargo.toml
@@ -0,0 +1,110 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+name = "smallvec"
+version = "1.15.1"
+authors = ["The Servo Project Developers"]
+build = false
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "'Small vector' optimization: store up to a small number of items on the stack"
+documentation = "https://docs.rs/smallvec/"
+readme = "README.md"
+keywords = [
+    "small",
+    "vec",
+    "vector",
+    "stack",
+    "no_std",
+]
+categories = ["data-structures"]
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/servo/rust-smallvec"
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = [
+    "--cfg",
+    "docsrs",
+    "--generate-link-to-definition",
+]
+
+[features]
+const_generics = []
+const_new = ["const_generics"]
+debugger_visualizer = []
+drain_filter = []
+drain_keep_rest = ["drain_filter"]
+impl_bincode = [
+    "bincode",
+    "unty",
+]
+may_dangle = []
+specialization = []
+union = []
+write = []
+
+[lib]
+name = "smallvec"
+path = "src/lib.rs"
+
+[[test]]
+name = "debugger_visualizer"
+path = "tests/debugger_visualizer.rs"
+test = false
+required-features = ["debugger_visualizer"]
+
+[[test]]
+name = "macro"
+path = "tests/macro.rs"
+
+[[bench]]
+name = "bench"
+path = "benches/bench.rs"
+
+[dependencies.arbitrary]
+version = "1"
+optional = true
+
+[dependencies.bincode]
+version = "2"
+optional = true
+default-features = false
+
+[dependencies.malloc_size_of]
+version = "0.1"
+optional = true
+default-features = false
+
+[dependencies.serde]
+version = "1"
+optional = true
+default-features = false
+
+[dependencies.unty]
+version = "0.0.4"
+optional = true
+default-features = false
+
+[dev-dependencies.bincode1]
+version = "1.0.1"
+package = "bincode"
+
+[dev-dependencies.debugger_test]
+version = "0.1.0"
+
+[dev-dependencies.debugger_test_parser]
+version = "0.1.0"
diff --git a/vendor/smallvec/LICENSE-APACHE b/vendor/smallvec/LICENSE-APACHE
new file mode 100644
index 00000000..16fe87b0
--- /dev/null
+++ b/vendor/smallvec/LICENSE-APACHE
@@ -0,0 +1,201 @@
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+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.
diff --git a/vendor/smallvec/LICENSE-MIT b/vendor/smallvec/LICENSE-MIT
new file mode 100644
index 00000000..9729c128
--- /dev/null
+++ b/vendor/smallvec/LICENSE-MIT
@@ -0,0 +1,25 @@
+Copyright (c) 2018 The Servo Project Developers
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/vendor/smallvec/README.md b/vendor/smallvec/README.md
new file mode 100644
index 00000000..724637c6
--- /dev/null
+++ b/vendor/smallvec/README.md
@@ -0,0 +1,26 @@
+rust-smallvec
+=============
+
+[Documentation](https://docs.rs/smallvec/)
+
+[Release notes](https://github.com/servo/rust-smallvec/releases)
+
+"Small vector" optimization for Rust: store up to a small number of items on the stack
+
+## Example
+
+```rust
+use smallvec::{SmallVec, smallvec};
+    
+// This SmallVec can hold up to 4 items on the stack:
+let mut v: SmallVec<[i32; 4]> = smallvec![1, 2, 3, 4];
+
+// It will automatically move its contents to the heap if
+// contains more than four items:
+v.push(5);
+
+// SmallVec points to a slice, so you can use normal slice
+// indexing and other methods to access its contents:
+v[0] = v[1] + v[2];
+v.sort();
+```
diff --git a/vendor/smallvec/benches/bench.rs b/vendor/smallvec/benches/bench.rs
new file mode 100644
index 00000000..b6a8b857
--- /dev/null
+++ b/vendor/smallvec/benches/bench.rs
@@ -0,0 +1,312 @@
+#![feature(test)]
+#![allow(deprecated)]
+
+extern crate test;
+
+use self::test::Bencher;
+use smallvec::{ExtendFromSlice, smallvec, SmallVec};
+
+const VEC_SIZE: usize = 16;
+const SPILLED_SIZE: usize = 100;
+
+trait Vector<T>: for<'a> From<&'a [T]> + Extend<T> + ExtendFromSlice<T> {
+    fn new() -> Self;
+    fn push(&mut self, val: T);
+    fn pop(&mut self) -> Option<T>;
+    fn remove(&mut self, p: usize) -> T;
+    fn insert(&mut self, n: usize, val: T);
+    fn from_elem(val: T, n: usize) -> Self;
+    fn from_elems(val: &[T]) -> Self;
+}
+
+impl<T: Copy> Vector<T> for Vec<T> {
+    fn new() -> Self {
+        Self::with_capacity(VEC_SIZE)
+    }
+
+    fn push(&mut self, val: T) {
+        self.push(val)
+    }
+
+    fn pop(&mut self) -> Option<T> {
+        self.pop()
+    }
+
+    fn remove(&mut self, p: usize) -> T {
+        self.remove(p)
+    }
+
+    fn insert(&mut self, n: usize, val: T) {
+        self.insert(n, val)
+    }
+
+    fn from_elem(val: T, n: usize) -> Self {
+        vec![val; n]
+    }
+
+    fn from_elems(val: &[T]) -> Self {
+        val.to_owned()
+    }
+}
+
+impl<T: Copy> Vector<T> for SmallVec<[T; VEC_SIZE]> {
+    fn new() -> Self {
+        Self::new()
+    }
+
+    fn push(&mut self, val: T) {
+        self.push(val)
+    }
+
+    fn pop(&mut self) -> Option<T> {
+        self.pop()
+    }
+
+    fn remove(&mut self, p: usize) -> T {
+        self.remove(p)
+    }
+
+    fn insert(&mut self, n: usize, val: T) {
+        self.insert(n, val)
+    }
+
+    fn from_elem(val: T, n: usize) -> Self {
+        smallvec![val; n]
+    }
+
+    fn from_elems(val: &[T]) -> Self {
+        SmallVec::from_slice(val)
+    }
+}
+
+macro_rules! make_benches {
+    ($typ:ty { $($b_name:ident => $g_name:ident($($args:expr),*),)* }) => {
+        $(
+            #[bench]
+            fn $b_name(b: &mut Bencher) {
+                $g_name::<$typ>($($args,)* b)
+            }
+        )*
+    }
+}
+
+make_benches! {
+    SmallVec<[u64; VEC_SIZE]> {
+        bench_push => gen_push(SPILLED_SIZE as _),
+        bench_push_small => gen_push(VEC_SIZE as _),
+        bench_insert_push => gen_insert_push(SPILLED_SIZE as _),
+        bench_insert_push_small => gen_insert_push(VEC_SIZE as _),
+        bench_insert => gen_insert(SPILLED_SIZE as _),
+        bench_insert_small => gen_insert(VEC_SIZE as _),
+        bench_remove => gen_remove(SPILLED_SIZE as _),
+        bench_remove_small => gen_remove(VEC_SIZE as _),
+        bench_extend => gen_extend(SPILLED_SIZE as _),
+        bench_extend_small => gen_extend(VEC_SIZE as _),
+        bench_from_iter => gen_from_iter(SPILLED_SIZE as _),
+        bench_from_iter_small => gen_from_iter(VEC_SIZE as _),
+        bench_from_slice => gen_from_slice(SPILLED_SIZE as _),
+        bench_from_slice_small => gen_from_slice(VEC_SIZE as _),
+        bench_extend_from_slice => gen_extend_from_slice(SPILLED_SIZE as _),
+        bench_extend_from_slice_small => gen_extend_from_slice(VEC_SIZE as _),
+        bench_macro_from_elem => gen_from_elem(SPILLED_SIZE as _),
+        bench_macro_from_elem_small => gen_from_elem(VEC_SIZE as _),
+        bench_pushpop => gen_pushpop(),
+    }
+}
+
+make_benches! {
+    Vec<u64> {
+        bench_push_vec => gen_push(SPILLED_SIZE as _),
+        bench_push_vec_small => gen_push(VEC_SIZE as _),
+        bench_insert_push_vec => gen_insert_push(SPILLED_SIZE as _),
+        bench_insert_push_vec_small => gen_insert_push(VEC_SIZE as _),
+        bench_insert_vec => gen_insert(SPILLED_SIZE as _),
+        bench_insert_vec_small => gen_insert(VEC_SIZE as _),
+        bench_remove_vec => gen_remove(SPILLED_SIZE as _),
+        bench_remove_vec_small => gen_remove(VEC_SIZE as _),
+        bench_extend_vec => gen_extend(SPILLED_SIZE as _),
+        bench_extend_vec_small => gen_extend(VEC_SIZE as _),
+        bench_from_iter_vec => gen_from_iter(SPILLED_SIZE as _),
+        bench_from_iter_vec_small => gen_from_iter(VEC_SIZE as _),
+        bench_from_slice_vec => gen_from_slice(SPILLED_SIZE as _),
+        bench_from_slice_vec_small => gen_from_slice(VEC_SIZE as _),
+        bench_extend_from_slice_vec => gen_extend_from_slice(SPILLED_SIZE as _),
+        bench_extend_from_slice_vec_small => gen_extend_from_slice(VEC_SIZE as _),
+        bench_macro_from_elem_vec => gen_from_elem(SPILLED_SIZE as _),
+        bench_macro_from_elem_vec_small => gen_from_elem(VEC_SIZE as _),
+        bench_pushpop_vec => gen_pushpop(),
+    }
+}
+
+fn gen_push<V: Vector<u64>>(n: u64, b: &mut Bencher) {
+    #[inline(never)]
+    fn push_noinline<V: Vector<u64>>(vec: &mut V, x: u64) {
+        vec.push(x);
+    }
+
+    b.iter(|| {
+        let mut vec = V::new();
+        for x in 0..n {
+            push_noinline(&mut vec, x);
+        }
+        vec
+    });
+}
+
+fn gen_insert_push<V: Vector<u64>>(n: u64, b: &mut Bencher) {
+    #[inline(never)]
+    fn insert_push_noinline<V: Vector<u64>>(vec: &mut V, x: u64) {
+        vec.insert(x as usize, x);
+    }
+
+    b.iter(|| {
+        let mut vec = V::new();
+        for x in 0..n {
+            insert_push_noinline(&mut vec, x);
+        }
+        vec
+    });
+}
+
+fn gen_insert<V: Vector<u64>>(n: u64, b: &mut Bencher) {
+    #[inline(never)]
+    fn insert_noinline<V: Vector<u64>>(vec: &mut V, p: usize, x: u64) {
+        vec.insert(p, x)
+    }
+
+    b.iter(|| {
+        let mut vec = V::new();
+        // Always insert at position 0 so that we are subject to shifts of
+        // many different lengths.
+        vec.push(0);
+        for x in 0..n {
+            insert_noinline(&mut vec, 0, x);
+        }
+        vec
+    });
+}
+
+fn gen_remove<V: Vector<u64>>(n: usize, b: &mut Bencher) {
+    #[inline(never)]
+    fn remove_noinline<V: Vector<u64>>(vec: &mut V, p: usize) -> u64 {
+        vec.remove(p)
+    }
+
+    b.iter(|| {
+        let mut vec = V::from_elem(0, n as _);
+
+        for _ in 0..n {
+            remove_noinline(&mut vec, 0);
+        }
+    });
+}
+
+fn gen_extend<V: Vector<u64>>(n: u64, b: &mut Bencher) {
+    b.iter(|| {
+        let mut vec = V::new();
+        vec.extend(0..n);
+        vec
+    });
+}
+
+fn gen_from_iter<V: Vector<u64>>(n: u64, b: &mut Bencher) {
+    let v: Vec<u64> = (0..n).collect();
+    b.iter(|| {
+        let vec = V::from(&v);
+        vec
+    });
+}
+
+fn gen_from_slice<V: Vector<u64>>(n: u64, b: &mut Bencher) {
+    let v: Vec<u64> = (0..n).collect();
+    b.iter(|| {
+        let vec = V::from_elems(&v);
+        vec
+    });
+}
+
+fn gen_extend_from_slice<V: Vector<u64>>(n: u64, b: &mut Bencher) {
+    let v: Vec<u64> = (0..n).collect();
+    b.iter(|| {
+        let mut vec = V::new();
+        vec.extend_from_slice(&v);
+        vec
+    });
+}
+
+fn gen_pushpop<V: Vector<u64>>(b: &mut Bencher) {
+    #[inline(never)]
+    fn pushpop_noinline<V: Vector<u64>>(vec: &mut V, x: u64) -> Option<u64> {
+        vec.push(x);
+        vec.pop()
+    }
+
+    b.iter(|| {
+        let mut vec = V::new();
+        for x in 0..SPILLED_SIZE as _ {
+            pushpop_noinline(&mut vec, x);
+        }
+        vec
+    });
+}
+
+fn gen_from_elem<V: Vector<u64>>(n: usize, b: &mut Bencher) {
+    b.iter(|| {
+        let vec = V::from_elem(42, n);
+        vec
+    });
+}
+
+#[bench]
+fn bench_insert_many(b: &mut Bencher) {
+    #[inline(never)]
+    fn insert_many_noinline<I: IntoIterator<Item = u64>>(
+        vec: &mut SmallVec<[u64; VEC_SIZE]>,
+        index: usize,
+        iterable: I,
+    ) {
+        vec.insert_many(index, iterable)
+    }
+
+    b.iter(|| {
+        let mut vec = SmallVec::<[u64; VEC_SIZE]>::new();
+        insert_many_noinline(&mut vec, 0, 0..SPILLED_SIZE as _);
+        insert_many_noinline(&mut vec, 0, 0..SPILLED_SIZE as _);
+        vec
+    });
+}
+
+#[bench]
+fn bench_insert_from_slice(b: &mut Bencher) {
+    let v: Vec<u64> = (0..SPILLED_SIZE as _).collect();
+    b.iter(|| {
+        let mut vec = SmallVec::<[u64; VEC_SIZE]>::new();
+        vec.insert_from_slice(0, &v);
+        vec.insert_from_slice(0, &v);
+        vec
+    });
+}
+
+#[bench]
+fn bench_macro_from_list(b: &mut Bencher) {
+    b.iter(|| {
+        let vec: SmallVec<[u64; 16]> = smallvec![
+            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 24, 32, 36, 0x40, 0x80,
+            0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x20000, 0x40000,
+            0x80000, 0x100000,
+        ];
+        vec
+    });
+}
+
+#[bench]
+fn bench_macro_from_list_vec(b: &mut Bencher) {
+    b.iter(|| {
+        let vec: Vec<u64> = vec![
+            0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 20, 24, 32, 36, 0x40, 0x80,
+            0x100, 0x200, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000, 0x10000, 0x20000, 0x40000,
+            0x80000, 0x100000,
+        ];
+        vec
+    });
+}
diff --git a/vendor/tinyvec/debug_metadata/README.md b/vendor/smallvec/debug_metadata/README.md
similarity index 95%
rename from vendor/tinyvec/debug_metadata/README.md
rename to vendor/smallvec/debug_metadata/README.md
index 369844a7..9a5596ba 100644
--- a/vendor/tinyvec/debug_metadata/README.md
+++ b/vendor/smallvec/debug_metadata/README.md
@@ -22,7 +22,7 @@ types, describe how to display those types. (For writing a pretty printer, see:
 
 ### Embedding Visualizers
 
-Through the use of the currently unstable `#[debugger_visualizer]` attribute, the `tinyvec`
+Through the use of the currently unstable `#[debugger_visualizer]` attribute, the `smallvec`
 crate can embed debugger visualizers into the crate metadata.
 
 Currently the two types of visualizers supported are Natvis and Pretty printers.
@@ -35,11 +35,11 @@ in the `.debug_gdb_scripts` section of the `ELF` generated.
 
 ### Testing Visualizers
 
-The `tinyvec` crate supports testing debugger visualizers defined for this crate. The entry point for
+The `smallvec` crate supports testing debugger visualizers defined for this crate. The entry point for
 these tests are `tests/debugger_visualizer.rs`. These tests are defined using the `debugger_test` and
 `debugger_test_parser` crates. The `debugger_test` crate is a proc macro crate which defines a
 single proc macro attribute, `#[debugger_test]`. For more detailed information about this crate,
-see https://crates.io/crates/debugger_test. The CI pipeline for the `tinyvec` crate has been updated
+see https://crates.io/crates/debugger_test. The CI pipeline for the `smallvec` crate has been updated
 to run the debugger visualizer tests to ensure debugger visualizers do not become broken/stale.
 
 The `#[debugger_test]` proc macro attribute may only be used on test functions and will run the
@@ -89,7 +89,7 @@ by using the `pattern:` prefix.
 
 #### Testing Locally
 
-Currently, only Natvis visualizations have been defined for the `tinyvec` crate via `debug_metadata/tinyvec.natvis`,
+Currently, only Natvis visualizations have been defined for the `smallvec` crate via `debug_metadata/smallvec.natvis`,
 which means the `tests/debugger_visualizer.rs` tests need to be run on Windows using the `*-pc-windows-msvc` targets.
 To run these tests locally, first ensure the debugging tools for Windows are installed or install them following
 the steps listed here, [Debugging Tools for Windows](https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/).
diff --git a/vendor/smallvec/debug_metadata/smallvec.natvis b/vendor/smallvec/debug_metadata/smallvec.natvis
new file mode 100644
index 00000000..8731860f
--- /dev/null
+++ b/vendor/smallvec/debug_metadata/smallvec.natvis
@@ -0,0 +1,35 @@
+<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+  <Type Name="smallvec::SmallVec&lt;array$&lt;*,*&gt;&gt;" Priority="Medium">
+    <Intrinsic Name="is_inline" Expression="$T2 &gt;= capacity" />
+    <Intrinsic Name="len" Expression="is_inline() ? capacity : data.variant1.value.len" />
+    <Intrinsic Name="data_ptr" Expression="is_inline() ? data.variant0.value.__0.value.value : data.variant1.value.ptr.pointer" />
+
+    <DisplayString>{{ len={len()} is_inline={is_inline()} }}</DisplayString>
+    <Expand>
+        <Item Name="[capacity]">is_inline() ? $T2 : capacity</Item>
+        <Item Name="[len]">len()</Item>
+        <Item Name="[data_ptr]">data_ptr()</Item>
+
+        <ArrayItems>
+            <Size>len()</Size>
+            <ValuePointer>data_ptr()</ValuePointer>
+        </ArrayItems>
+    </Expand>
+  </Type>
+
+  <Type Name="smallvec::SmallVec&lt;array$&lt;*,*&gt;&gt;" Priority="MediumLow">
+    <Intrinsic Name="is_inline" Expression="$T2 &gt;= capacity" />
+    <Intrinsic Name="len" Expression="is_inline() ? capacity : data.heap.__1" />
+    <Intrinsic Name="data_ptr" Expression="is_inline() ? data.inline.value.value.value : data.heap.__0.pointer" />
+    <DisplayString>{{ len={len()} is_inline={is_inline()} }}</DisplayString>
+    <Expand>
+        <Item Name="[capacity]">is_inline() ? $T2 : capacity</Item>
+        <Item Name="[len]">len()</Item>
+
+        <ArrayItems>
+            <Size>len()</Size>
+            <ValuePointer>data_ptr()</ValuePointer>
+        </ArrayItems>
+    </Expand>
+  </Type>
+</AutoVisualizer>
\ No newline at end of file
diff --git a/vendor/smallvec/scripts/run_miri.sh b/vendor/smallvec/scripts/run_miri.sh
new file mode 100644
index 00000000..010ceb06
--- /dev/null
+++ b/vendor/smallvec/scripts/run_miri.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/bash
+
+set -ex
+
+# Clean out our target dir, which may have artifacts compiled by a version of
+# rust different from the one we're about to download.
+cargo clean
+
+# Install and run the latest version of nightly where miri built successfully.
+# Taken from: https://github.com/rust-lang/miri#running-miri-on-ci
+
+MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)
+echo "Installing latest nightly with Miri: $MIRI_NIGHTLY"
+rustup override unset
+rustup default "$MIRI_NIGHTLY"
+
+rustup component add miri
+cargo miri setup
+
+cargo miri test --verbose
+cargo miri test --verbose --features union
+cargo miri test --verbose --all-features
+
+rustup override set nightly
diff --git a/vendor/smallvec/src/arbitrary.rs b/vendor/smallvec/src/arbitrary.rs
new file mode 100644
index 00000000..cbdfcb0e
--- /dev/null
+++ b/vendor/smallvec/src/arbitrary.rs
@@ -0,0 +1,19 @@
+use crate::{Array, SmallVec};
+use arbitrary::{Arbitrary, Unstructured};
+
+impl<'a, A: Array> Arbitrary<'a> for SmallVec<A>
+where
+    <A as Array>::Item: Arbitrary<'a>,
+{
+    fn arbitrary(u: &mut Unstructured<'a>) -> arbitrary::Result<Self> {
+        u.arbitrary_iter()?.collect()
+    }
+
+    fn arbitrary_take_rest(u: Unstructured<'a>) -> arbitrary::Result<Self> {
+        u.arbitrary_take_rest_iter()?.collect()
+    }
+
+    fn size_hint(depth: usize) -> (usize, Option<usize>) {
+        arbitrary::size_hint::and(<usize as Arbitrary>::size_hint(depth), (0, None))
+    }
+}
diff --git a/vendor/smallvec/src/lib.rs b/vendor/smallvec/src/lib.rs
new file mode 100644
index 00000000..3259774a
--- /dev/null
+++ b/vendor/smallvec/src/lib.rs
@@ -0,0 +1,2605 @@
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Small vectors in various sizes. These store a certain number of elements inline, and fall back
+//! to the heap for larger allocations.  This can be a useful optimization for improving cache
+//! locality and reducing allocator traffic for workloads that fit within the inline buffer.
+//!
+//! ## `no_std` support
+//!
+//! By default, `smallvec` does not depend on `std`.  However, the optional
+//! `write` feature implements the `std::io::Write` trait for vectors of `u8`.
+//! When this feature is enabled, `smallvec` depends on `std`.
+//!
+//! ## Optional features
+//!
+//! ### `serde`
+//!
+//! When this optional dependency is enabled, `SmallVec` implements the `serde::Serialize` and
+//! `serde::Deserialize` traits.
+//!
+//! ### `write`
+//!
+//! When this feature is enabled, `SmallVec<[u8; _]>` implements the `std::io::Write` trait.
+//! This feature is not compatible with `#![no_std]` programs.
+//!
+//! ### `union`
+//!
+//! **This feature requires Rust 1.49.**
+//!
+//! When the `union` feature is enabled `smallvec` will track its state (inline or spilled)
+//! without the use of an enum tag, reducing the size of the `smallvec` by one machine word.
+//! This means that there is potentially no space overhead compared to `Vec`.
+//! Note that `smallvec` can still be larger than `Vec` if the inline buffer is larger than two
+//! machine words.
+//!
+//! To use this feature add `features = ["union"]` in the `smallvec` section of Cargo.toml.
+//! Note that this feature requires Rust 1.49.
+//!
+//! Tracking issue: [rust-lang/rust#55149](https://github.com/rust-lang/rust/issues/55149)
+//!
+//! ### `const_generics`
+//!
+//! **This feature requires Rust 1.51.**
+//!
+//! When this feature is enabled, `SmallVec` works with any arrays of any size, not just a fixed
+//! list of sizes.
+//!
+//! ### `const_new`
+//!
+//! **This feature requires Rust 1.51.**
+//!
+//! This feature exposes the functions [`SmallVec::new_const`], [`SmallVec::from_const`], and [`smallvec_inline`] which enables the `SmallVec` to be initialized from a const context.
+//! For details, see the
+//! [Rust Reference](https://doc.rust-lang.org/reference/const_eval.html#const-functions).
+//!
+//! ### `drain_filter`
+//!
+//! **This feature is unstable.** It may change to match the unstable `drain_filter` method in libstd.
+//!
+//! Enables the `drain_filter` method, which produces an iterator that calls a user-provided
+//! closure to determine which elements of the vector to remove and yield from the iterator.
+//!
+//! ### `drain_keep_rest`
+//!
+//! **This feature is unstable.** It may change to match the unstable `drain_keep_rest` method in libstd.
+//!
+//! Enables the `DrainFilter::keep_rest` method.
+//!
+//! ### `specialization`
+//!
+//! **This feature is unstable and requires a nightly build of the Rust toolchain.**
+//!
+//! When this feature is enabled, `SmallVec::from(slice)` has improved performance for slices
+//! of `Copy` types.  (Without this feature, you can use `SmallVec::from_slice` to get optimal
+//! performance for `Copy` types.)
+//!
+//! Tracking issue: [rust-lang/rust#31844](https://github.com/rust-lang/rust/issues/31844)
+//!
+//! ### `may_dangle`
+//!
+//! **This feature is unstable and requires a nightly build of the Rust toolchain.**
+//!
+//! This feature makes the Rust compiler less strict about use of vectors that contain borrowed
+//! references. For details, see the
+//! [Rustonomicon](https://doc.rust-lang.org/1.42.0/nomicon/dropck.html#an-escape-hatch).
+//!
+//! Tracking issue: [rust-lang/rust#34761](https://github.com/rust-lang/rust/issues/34761)
+
+#![no_std]
+#![cfg_attr(docsrs, feature(doc_cfg))]
+#![cfg_attr(feature = "specialization", allow(incomplete_features))]
+#![cfg_attr(feature = "specialization", feature(specialization))]
+#![cfg_attr(feature = "may_dangle", feature(dropck_eyepatch))]
+#![cfg_attr(
+    feature = "debugger_visualizer",
+    feature(debugger_visualizer),
+    debugger_visualizer(natvis_file = "../debug_metadata/smallvec.natvis")
+)]
+#![deny(missing_docs)]
+
+#[doc(hidden)]
+pub extern crate alloc;
+
+#[cfg(any(test, feature = "write"))]
+extern crate std;
+
+#[cfg(test)]
+mod tests;
+
+#[allow(deprecated)]
+use alloc::alloc::{Layout, LayoutErr};
+use alloc::boxed::Box;
+use alloc::{vec, vec::Vec};
+use core::borrow::{Borrow, BorrowMut};
+use core::cmp;
+use core::fmt;
+use core::hash::{Hash, Hasher};
+use core::hint::unreachable_unchecked;
+use core::iter::{repeat, FromIterator, FusedIterator, IntoIterator};
+use core::mem;
+use core::mem::MaybeUninit;
+use core::ops::{self, Range, RangeBounds};
+use core::ptr::{self, NonNull};
+use core::slice::{self, SliceIndex};
+
+#[cfg(feature = "malloc_size_of")]
+use malloc_size_of::{MallocShallowSizeOf, MallocSizeOf, MallocSizeOfOps};
+
+#[cfg(feature = "serde")]
+use serde::{
+    de::{Deserialize, Deserializer, SeqAccess, Visitor},
+    ser::{Serialize, SerializeSeq, Serializer},
+};
+
+#[cfg(feature = "serde")]
+use core::marker::PhantomData;
+
+#[cfg(feature = "write")]
+use std::io;
+
+#[cfg(feature = "drain_keep_rest")]
+use core::mem::ManuallyDrop;
+
+/// Creates a [`SmallVec`] containing the arguments.
+///
+/// `smallvec!` allows `SmallVec`s to be defined with the same syntax as array expressions.
+/// There are two forms of this macro:
+///
+/// - Create a [`SmallVec`] containing a given list of elements:
+///
+/// ```
+/// # use smallvec::{smallvec, SmallVec};
+/// # fn main() {
+/// let v: SmallVec<[_; 128]> = smallvec![1, 2, 3];
+/// assert_eq!(v[0], 1);
+/// assert_eq!(v[1], 2);
+/// assert_eq!(v[2], 3);
+/// # }
+/// ```
+///
+/// - Create a [`SmallVec`] from a given element and size:
+///
+/// ```
+/// # use smallvec::{smallvec, SmallVec};
+/// # fn main() {
+/// let v: SmallVec<[_; 0x8000]> = smallvec![1; 3];
+/// assert_eq!(v, SmallVec::from_buf([1, 1, 1]));
+/// # }
+/// ```
+///
+/// Note that unlike array expressions this syntax supports all elements
+/// which implement [`Clone`] and the number of elements doesn't have to be
+/// a constant.
+///
+/// This will use `clone` to duplicate an expression, so one should be careful
+/// using this with types having a nonstandard `Clone` implementation. For
+/// example, `smallvec![Rc::new(1); 5]` will create a vector of five references
+/// to the same boxed integer value, not five references pointing to independently
+/// boxed integers.
+#[macro_export]
+macro_rules! smallvec {
+    // count helper: transform any expression into 1
+    (@one $x:expr) => (1usize);
+    () => (
+        $crate::SmallVec::new()
+    );
+    ($elem:expr; $n:expr) => ({
+        $crate::SmallVec::from_elem($elem, $n)
+    });
+    ($($x:expr),+$(,)?) => ({
+        let count = 0usize $(+ $crate::smallvec!(@one $x))+;
+        let mut vec = $crate::SmallVec::new();
+        if count <= vec.inline_size() {
+            $(vec.push($x);)*
+            vec
+        } else {
+            $crate::SmallVec::from_vec($crate::alloc::vec![$($x,)+])
+        }
+    });
+}
+
+/// Creates an inline [`SmallVec`] containing the arguments. This macro is enabled by the feature `const_new`.
+///
+/// `smallvec_inline!` allows `SmallVec`s to be defined with the same syntax as array expressions in `const` contexts.
+/// The inline storage `A` will always be an array of the size specified by the arguments.
+/// There are two forms of this macro:
+///
+/// - Create a [`SmallVec`] containing a given list of elements:
+///
+/// ```
+/// # use smallvec::{smallvec_inline, SmallVec};
+/// # fn main() {
+/// const V: SmallVec<[i32; 3]> = smallvec_inline![1, 2, 3];
+/// assert_eq!(V[0], 1);
+/// assert_eq!(V[1], 2);
+/// assert_eq!(V[2], 3);
+/// # }
+/// ```
+///
+/// - Create a [`SmallVec`] from a given element and size:
+///
+/// ```
+/// # use smallvec::{smallvec_inline, SmallVec};
+/// # fn main() {
+/// const V: SmallVec<[i32; 3]> = smallvec_inline![1; 3];
+/// assert_eq!(V, SmallVec::from_buf([1, 1, 1]));
+/// # }
+/// ```
+///
+/// Note that the behavior mimics that of array expressions, in contrast to [`smallvec`].
+#[cfg(feature = "const_new")]
+#[cfg_attr(docsrs, doc(cfg(feature = "const_new")))]
+#[macro_export]
+macro_rules! smallvec_inline {
+    // count helper: transform any expression into 1
+    (@one $x:expr) => (1usize);
+    ($elem:expr; $n:expr) => ({
+        $crate::SmallVec::<[_; $n]>::from_const([$elem; $n])
+    });
+    ($($x:expr),+ $(,)?) => ({
+        const N: usize = 0usize $(+ $crate::smallvec_inline!(@one $x))*;
+        $crate::SmallVec::<[_; N]>::from_const([$($x,)*])
+    });
+}
+
+/// `panic!()` in debug builds, optimization hint in release.
+#[cfg(not(feature = "union"))]
+macro_rules! debug_unreachable {
+    () => {
+        debug_unreachable!("entered unreachable code")
+    };
+    ($e:expr) => {
+        if cfg!(debug_assertions) {
+            panic!($e);
+        } else {
+            unreachable_unchecked();
+        }
+    };
+}
+
+/// Trait to be implemented by a collection that can be extended from a slice
+///
+/// ## Example
+///
+/// ```rust
+/// use smallvec::{ExtendFromSlice, SmallVec};
+///
+/// fn initialize<V: ExtendFromSlice<u8>>(v: &mut V) {
+///     v.extend_from_slice(b"Test!");
+/// }
+///
+/// let mut vec = Vec::new();
+/// initialize(&mut vec);
+/// assert_eq!(&vec, b"Test!");
+///
+/// let mut small_vec = SmallVec::<[u8; 8]>::new();
+/// initialize(&mut small_vec);
+/// assert_eq!(&small_vec as &[_], b"Test!");
+/// ```
+#[doc(hidden)]
+#[deprecated]
+pub trait ExtendFromSlice<T> {
+    /// Extends a collection from a slice of its element type
+    fn extend_from_slice(&mut self, other: &[T]);
+}
+
+#[allow(deprecated)]
+impl<T: Clone> ExtendFromSlice<T> for Vec<T> {
+    fn extend_from_slice(&mut self, other: &[T]) {
+        Vec::extend_from_slice(self, other)
+    }
+}
+
+/// Error type for APIs with fallible heap allocation
+#[derive(Debug)]
+pub enum CollectionAllocErr {
+    /// Overflow `usize::MAX` or other error during size computation
+    CapacityOverflow,
+    /// The allocator return an error
+    AllocErr {
+        /// The layout that was passed to the allocator
+        layout: Layout,
+    },
+}
+
+impl fmt::Display for CollectionAllocErr {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        write!(f, "Allocation error: {:?}", self)
+    }
+}
+
+#[allow(deprecated)]
+impl From<LayoutErr> for CollectionAllocErr {
+    fn from(_: LayoutErr) -> Self {
+        CollectionAllocErr::CapacityOverflow
+    }
+}
+
+fn infallible<T>(result: Result<T, CollectionAllocErr>) -> T {
+    match result {
+        Ok(x) => x,
+        Err(CollectionAllocErr::CapacityOverflow) => panic!("capacity overflow"),
+        Err(CollectionAllocErr::AllocErr { layout }) => alloc::alloc::handle_alloc_error(layout),
+    }
+}
+
+/// FIXME: use `Layout::array` when we require a Rust version where it’s stable
+/// <https://github.com/rust-lang/rust/issues/55724>
+fn layout_array<T>(n: usize) -> Result<Layout, CollectionAllocErr> {
+    let size = mem::size_of::<T>()
+        .checked_mul(n)
+        .ok_or(CollectionAllocErr::CapacityOverflow)?;
+    let align = mem::align_of::<T>();
+    Layout::from_size_align(size, align).map_err(|_| CollectionAllocErr::CapacityOverflow)
+}
+
+unsafe fn deallocate<T>(ptr: NonNull<T>, capacity: usize) {
+    // This unwrap should succeed since the same did when allocating.
+    let layout = layout_array::<T>(capacity).unwrap();
+    alloc::alloc::dealloc(ptr.as_ptr() as *mut u8, layout)
+}
+
+/// An iterator that removes the items from a `SmallVec` and yields them by value.
+///
+/// Returned from [`SmallVec::drain`][1].
+///
+/// [1]: struct.SmallVec.html#method.drain
+pub struct Drain<'a, T: 'a + Array> {
+    tail_start: usize,
+    tail_len: usize,
+    iter: slice::Iter<'a, T::Item>,
+    vec: NonNull<SmallVec<T>>,
+}
+
+impl<'a, T: 'a + Array> fmt::Debug for Drain<'a, T>
+where
+    T::Item: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_tuple("Drain").field(&self.iter.as_slice()).finish()
+    }
+}
+
+unsafe impl<'a, T: Sync + Array> Sync for Drain<'a, T> {}
+unsafe impl<'a, T: Send + Array> Send for Drain<'a, T> {}
+
+impl<'a, T: 'a + Array> Iterator for Drain<'a, T> {
+    type Item = T::Item;
+
+    #[inline]
+    fn next(&mut self) -> Option<T::Item> {
+        self.iter
+            .next()
+            .map(|reference| unsafe { ptr::read(reference) })
+    }
+
+    #[inline]
+    fn size_hint(&self) -> (usize, Option<usize>) {
+        self.iter.size_hint()
+    }
+}
+
+impl<'a, T: 'a + Array> DoubleEndedIterator for Drain<'a, T> {
+    #[inline]
+    fn next_back(&mut self) -> Option<T::Item> {
+        self.iter
+            .next_back()
+            .map(|reference| unsafe { ptr::read(reference) })
+    }
+}
+
+impl<'a, T: Array> ExactSizeIterator for Drain<'a, T> {
+    #[inline]
+    fn len(&self) -> usize {
+        self.iter.len()
+    }
+}
+
+impl<'a, T: Array> FusedIterator for Drain<'a, T> {}
+
+impl<'a, T: 'a + Array> Drop for Drain<'a, T> {
+    fn drop(&mut self) {
+        self.for_each(drop);
+
+        if self.tail_len > 0 {
+            unsafe {
+                let source_vec = self.vec.as_mut();
+
+                // memmove back untouched tail, update to new length
+                let start = source_vec.len();
+                let tail = self.tail_start;
+                if tail != start {
+                    // as_mut_ptr creates a &mut, invalidating other pointers.
+                    // This pattern avoids calling it with a pointer already present.
+                    let ptr = source_vec.as_mut_ptr();
+                    let src = ptr.add(tail);
+                    let dst = ptr.add(start);
+                    ptr::copy(src, dst, self.tail_len);
+                }
+                source_vec.set_len(start + self.tail_len);
+            }
+        }
+    }
+}
+
+#[cfg(feature = "drain_filter")]
+/// An iterator which uses a closure to determine if an element should be removed.
+///
+/// Returned from [`SmallVec::drain_filter`][1].
+///
+/// [1]: struct.SmallVec.html#method.drain_filter
+pub struct DrainFilter<'a, T, F>
+where
+    F: FnMut(&mut T::Item) -> bool,
+    T: Array,
+{
+    vec: &'a mut SmallVec<T>,
+    /// The index of the item that will be inspected by the next call to `next`.
+    idx: usize,
+    /// The number of items that have been drained (removed) thus far.
+    del: usize,
+    /// The original length of `vec` prior to draining.
+    old_len: usize,
+    /// The filter test predicate.
+    pred: F,
+    /// A flag that indicates a panic has occurred in the filter test predicate.
+    /// This is used as a hint in the drop implementation to prevent consumption
+    /// of the remainder of the `DrainFilter`. Any unprocessed items will be
+    /// backshifted in the `vec`, but no further items will be dropped or
+    /// tested by the filter predicate.
+    panic_flag: bool,
+}
+
+#[cfg(feature = "drain_filter")]
+impl <T, F> fmt::Debug for DrainFilter<'_, T, F>
+where
+    F: FnMut(&mut T::Item) -> bool,
+    T: Array,
+    T::Item: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_tuple("DrainFilter").field(&self.vec.as_slice()).finish()
+    }
+}
+
+#[cfg(feature = "drain_filter")]
+impl <T, F> Iterator for DrainFilter<'_, T, F>
+where
+    F: FnMut(&mut T::Item) -> bool,
+    T: Array,
+{
+    type Item = T::Item;
+
+    fn next(&mut self) -> Option<T::Item>
+    {
+        unsafe {
+            while self.idx < self.old_len {
+                let i = self.idx;
+                let v = slice::from_raw_parts_mut(self.vec.as_mut_ptr(), self.old_len);
+                self.panic_flag = true;
+                let drained = (self.pred)(&mut v[i]);
+                self.panic_flag = false;
+                // Update the index *after* the predicate is called. If the index
+                // is updated prior and the predicate panics, the element at this
+                // index would be leaked.
+                self.idx += 1;
+                if drained {
+                    self.del += 1;
+                    return Some(ptr::read(&v[i]));
+                } else if self.del > 0 {
+                    let del = self.del;
+                    let src: *const Self::Item = &v[i];
+                    let dst: *mut Self::Item = &mut v[i - del];
+                    ptr::copy_nonoverlapping(src, dst, 1);
+                }
+            }
+            None
+        }
+    }
+
+    fn size_hint(&self) -> (usize, Option<usize>) {
+        (0, Some(self.old_len - self.idx))
+    }
+}
+
+#[cfg(feature = "drain_filter")]
+impl <T, F> Drop for DrainFilter<'_, T, F>
+where
+    F: FnMut(&mut T::Item) -> bool,
+    T: Array,
+{
+    fn drop(&mut self) {
+        struct BackshiftOnDrop<'a, 'b, T, F>
+        where
+            F: FnMut(&mut T::Item) -> bool,
+            T: Array
+        {
+            drain: &'b mut DrainFilter<'a, T, F>,
+        }
+
+        impl<'a, 'b, T, F> Drop for BackshiftOnDrop<'a, 'b, T, F>
+        where
+            F: FnMut(&mut T::Item) -> bool,
+            T: Array
+        {
+            fn drop(&mut self) {
+                unsafe {
+                    if self.drain.idx < self.drain.old_len && self.drain.del > 0 {
+                        // This is a pretty messed up state, and there isn't really an
+                        // obviously right thing to do. We don't want to keep trying
+                        // to execute `pred`, so we just backshift all the unprocessed
+                        // elements and tell the vec that they still exist. The backshift
+                        // is required to prevent a double-drop of the last successfully
+                        // drained item prior to a panic in the predicate.
+                        let ptr = self.drain.vec.as_mut_ptr();
+                        let src = ptr.add(self.drain.idx);
+                        let dst = src.sub(self.drain.del);
+                        let tail_len = self.drain.old_len - self.drain.idx;
+                        src.copy_to(dst, tail_len);
+                    }
+                    self.drain.vec.set_len(self.drain.old_len - self.drain.del);
+                }
+            }
+        }
+
+        let backshift = BackshiftOnDrop { drain: self };
+
+        // Attempt to consume any remaining elements if the filter predicate
+        // has not yet panicked. We'll backshift any remaining elements
+        // whether we've already panicked or if the consumption here panics.
+        if !backshift.drain.panic_flag {
+            backshift.drain.for_each(drop);
+        }
+    }
+}
+
+#[cfg(feature = "drain_keep_rest")]
+impl <T, F> DrainFilter<'_, T, F>
+where
+    F: FnMut(&mut T::Item) -> bool,
+    T: Array
+{
+    /// Keep unyielded elements in the source `Vec`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// # use smallvec::{smallvec, SmallVec};
+    ///
+    /// let mut vec: SmallVec<[char; 2]> = smallvec!['a', 'b', 'c'];
+    /// let mut drain = vec.drain_filter(|_| true);
+    ///
+    /// assert_eq!(drain.next().unwrap(), 'a');
+    ///
+    /// // This call keeps 'b' and 'c' in the vec.
+    /// drain.keep_rest();
+    ///
+    /// // If we wouldn't call `keep_rest()`,
+    /// // `vec` would be empty.
+    /// assert_eq!(vec, SmallVec::<[char; 2]>::from_slice(&['b', 'c']));
+    /// ```
+    pub fn keep_rest(self)
+    {
+        // At this moment layout looks like this:
+        //
+        //  _____________________/-- old_len
+        // /                     \
+        // [kept] [yielded] [tail]
+        //        \_______/ ^-- idx
+        //                \-- del
+        //
+        // Normally `Drop` impl would drop [tail] (via .for_each(drop), ie still calling `pred`)
+        //
+        // 1. Move [tail] after [kept]
+        // 2. Update length of the original vec to `old_len - del`
+        //    a. In case of ZST, this is the only thing we want to do
+        // 3. Do *not* drop self, as everything is put in a consistent state already, there is nothing to do
+        let mut this = ManuallyDrop::new(self);
+
+        unsafe {
+            // ZSTs have no identity, so we don't need to move them around.
+            let needs_move = mem::size_of::<T>() != 0;
+
+            if needs_move && this.idx < this.old_len && this.del > 0 {
+                let ptr = this.vec.as_mut_ptr();
+                let src = ptr.add(this.idx);
+                let dst = src.sub(this.del);
+                let tail_len = this.old_len - this.idx;
+                src.copy_to(dst, tail_len);
+            }
+
+            let new_len = this.old_len - this.del;
+            this.vec.set_len(new_len);
+        }
+    }
+}
+
+#[cfg(feature = "union")]
+union SmallVecData<A: Array> {
+    inline: core::mem::ManuallyDrop<MaybeUninit<A>>,
+    heap: (NonNull<A::Item>, usize),
+}
+
+#[cfg(all(feature = "union", feature = "const_new"))]
+impl<T, const N: usize> SmallVecData<[T; N]> {
+    #[cfg_attr(docsrs, doc(cfg(feature = "const_new")))]
+    #[inline]
+    const fn from_const(inline: MaybeUninit<[T; N]>) -> Self {
+        SmallVecData {
+            inline: core::mem::ManuallyDrop::new(inline),
+        }
+    }
+}
+
+#[cfg(feature = "union")]
+impl<A: Array> SmallVecData<A> {
+    #[inline]
+    unsafe fn inline(&self) -> ConstNonNull<A::Item> {
+        ConstNonNull::new(self.inline.as_ptr() as *const A::Item).unwrap()
+    }
+    #[inline]
+    unsafe fn inline_mut(&mut self) -> NonNull<A::Item> {
+        NonNull::new(self.inline.as_mut_ptr() as *mut A::Item).unwrap()
+    }
+    #[inline]
+    fn from_inline(inline: MaybeUninit<A>) -> SmallVecData<A> {
+        SmallVecData {
+            inline: core::mem::ManuallyDrop::new(inline),
+        }
+    }
+    #[inline]
+    unsafe fn into_inline(self) -> MaybeUninit<A> {
+        core::mem::ManuallyDrop::into_inner(self.inline)
+    }
+    #[inline]
+    unsafe fn heap(&self) -> (ConstNonNull<A::Item>, usize) {
+        (ConstNonNull(self.heap.0), self.heap.1)
+    }
+    #[inline]
+    unsafe fn heap_mut(&mut self) -> (NonNull<A::Item>, &mut usize) {
+        let h = &mut self.heap;
+        (h.0, &mut h.1)
+    }
+    #[inline]
+    fn from_heap(ptr: NonNull<A::Item>, len: usize) -> SmallVecData<A> {
+        SmallVecData { heap: (ptr, len) }
+    }
+}
+
+#[cfg(not(feature = "union"))]
+enum SmallVecData<A: Array> {
+    Inline(MaybeUninit<A>),
+    // Using NonNull and NonZero here allows to reduce size of `SmallVec`.
+    Heap {
+        // Since we never allocate on heap
+        // unless our capacity is bigger than inline capacity
+        // heap capacity cannot be less than 1.
+        // Therefore, pointer cannot be null too.
+        ptr: NonNull<A::Item>,
+        len: usize,
+    },
+}
+
+#[cfg(all(not(feature = "union"), feature = "const_new"))]
+impl<T, const N: usize> SmallVecData<[T; N]> {
+    #[cfg_attr(docsrs, doc(cfg(feature = "const_new")))]
+    #[inline]
+    const fn from_const(inline: MaybeUninit<[T; N]>) -> Self {
+        SmallVecData::Inline(inline)
+    }
+}
+
+#[cfg(not(feature = "union"))]
+impl<A: Array> SmallVecData<A> {
+    #[inline]
+    unsafe fn inline(&self) -> ConstNonNull<A::Item> {
+        match self {
+            SmallVecData::Inline(a) => ConstNonNull::new(a.as_ptr() as *const A::Item).unwrap(),
+            _ => debug_unreachable!(),
+        }
+    }
+    #[inline]
+    unsafe fn inline_mut(&mut self) -> NonNull<A::Item> {
+        match self {
+            SmallVecData::Inline(a) => NonNull::new(a.as_mut_ptr() as *mut A::Item).unwrap(),
+            _ => debug_unreachable!(),
+        }
+    }
+    #[inline]
+    fn from_inline(inline: MaybeUninit<A>) -> SmallVecData<A> {
+        SmallVecData::Inline(inline)
+    }
+    #[inline]
+    unsafe fn into_inline(self) -> MaybeUninit<A> {
+        match self {
+            SmallVecData::Inline(a) => a,
+            _ => debug_unreachable!(),
+        }
+    }
+    #[inline]
+    unsafe fn heap(&self) -> (ConstNonNull<A::Item>, usize) {
+        match self {
+            SmallVecData::Heap { ptr, len } => (ConstNonNull(*ptr), *len),
+            _ => debug_unreachable!(),
+        }
+    }
+    #[inline]
+    unsafe fn heap_mut(&mut self) -> (NonNull<A::Item>, &mut usize) {
+        match self {
+            SmallVecData::Heap { ptr, len } => (*ptr, len),
+            _ => debug_unreachable!(),
+        }
+    }
+    #[inline]
+    fn from_heap(ptr: NonNull<A::Item>, len: usize) -> SmallVecData<A> {
+        SmallVecData::Heap { ptr, len }
+    }
+}
+
+unsafe impl<A: Array + Send> Send for SmallVecData<A> {}
+unsafe impl<A: Array + Sync> Sync for SmallVecData<A> {}
+
+/// A `Vec`-like container that can store a small number of elements inline.
+///
+/// `SmallVec` acts like a vector, but can store a limited amount of data inline within the
+/// `SmallVec` struct rather than in a separate allocation.  If the data exceeds this limit, the
+/// `SmallVec` will "spill" its data onto the heap, allocating a new buffer to hold it.
+///
+/// The amount of data that a `SmallVec` can store inline depends on its backing store. The backing
+/// store can be any type that implements the `Array` trait; usually it is a small fixed-sized
+/// array.  For example a `SmallVec<[u64; 8]>` can hold up to eight 64-bit integers inline.
+///
+/// ## Example
+///
+/// ```rust
+/// use smallvec::SmallVec;
+/// let mut v = SmallVec::<[u8; 4]>::new(); // initialize an empty vector
+///
+/// // The vector can hold up to 4 items without spilling onto the heap.
+/// v.extend(0..4);
+/// assert_eq!(v.len(), 4);
+/// assert!(!v.spilled());
+///
+/// // Pushing another element will force the buffer to spill:
+/// v.push(4);
+/// assert_eq!(v.len(), 5);
+/// assert!(v.spilled());
+/// ```
+pub struct SmallVec<A: Array> {
+    // The capacity field is used to determine which of the storage variants is active:
+    // If capacity <= Self::inline_capacity() then the inline variant is used and capacity holds the current length of the vector (number of elements actually in use).
+    // If capacity > Self::inline_capacity() then the heap variant is used and capacity holds the size of the memory allocation.
+    capacity: usize,
+    data: SmallVecData<A>,
+}
+
+impl<A: Array> SmallVec<A> {
+    /// Construct an empty vector
+    #[inline]
+    pub fn new() -> SmallVec<A> {
+        // Try to detect invalid custom implementations of `Array`. Hopefully,
+        // this check should be optimized away entirely for valid ones.
+        assert!(
+            mem::size_of::<A>() == A::size() * mem::size_of::<A::Item>()
+                && mem::align_of::<A>() >= mem::align_of::<A::Item>()
+        );
+        SmallVec {
+            capacity: 0,
+            data: SmallVecData::from_inline(MaybeUninit::uninit()),
+        }
+    }
+
+    /// Construct an empty vector with enough capacity pre-allocated to store at least `n`
+    /// elements.
+    ///
+    /// Will create a heap allocation only if `n` is larger than the inline capacity.
+    ///
+    /// ```
+    /// # use smallvec::SmallVec;
+    ///
+    /// let v: SmallVec<[u8; 3]> = SmallVec::with_capacity(100);
+    ///
+    /// assert!(v.is_empty());
+    /// assert!(v.capacity() >= 100);
+    /// ```
+    #[inline]
+    pub fn with_capacity(n: usize) -> Self {
+        let mut v = SmallVec::new();
+        v.reserve_exact(n);
+        v
+    }
+
+    /// Construct a new `SmallVec` from a `Vec<A::Item>`.
+    ///
+    /// Elements will be copied to the inline buffer if `vec.capacity() <= Self::inline_capacity()`.
+    ///
+    /// ```rust
+    /// use smallvec::SmallVec;
+    ///
+    /// let vec = vec![1, 2, 3, 4, 5];
+    /// let small_vec: SmallVec<[_; 3]> = SmallVec::from_vec(vec);
+    ///
+    /// assert_eq!(&*small_vec, &[1, 2, 3, 4, 5]);
+    /// ```
+    #[inline]
+    pub fn from_vec(mut vec: Vec<A::Item>) -> SmallVec<A> {
+        if vec.capacity() <= Self::inline_capacity() {
+            // Cannot use Vec with smaller capacity
+            // because we use value of `Self::capacity` field as indicator.
+            unsafe {
+                let mut data = SmallVecData::<A>::from_inline(MaybeUninit::uninit());
+                let len = vec.len();
+                vec.set_len(0);
+                ptr::copy_nonoverlapping(vec.as_ptr(), data.inline_mut().as_ptr(), len);
+
+                SmallVec {
+                    capacity: len,
+                    data,
+                }
+            }
+        } else {
+            let (ptr, cap, len) = (vec.as_mut_ptr(), vec.capacity(), vec.len());
+            mem::forget(vec);
+            let ptr = NonNull::new(ptr)
+                // See docs: https://doc.rust-lang.org/std/vec/struct.Vec.html#method.as_mut_ptr
+                .expect("Cannot be null by `Vec` invariant");
+
+            SmallVec {
+                capacity: cap,
+                data: SmallVecData::from_heap(ptr, len),
+            }
+        }
+    }
+
+    /// Constructs a new `SmallVec` on the stack from an `A` without
+    /// copying elements.
+    ///
+    /// ```rust
+    /// use smallvec::SmallVec;
+    ///
+    /// let buf = [1, 2, 3, 4, 5];
+    /// let small_vec: SmallVec<_> = SmallVec::from_buf(buf);
+    ///
+    /// assert_eq!(&*small_vec, &[1, 2, 3, 4, 5]);
+    /// ```
+    #[inline]
+    pub fn from_buf(buf: A) -> SmallVec<A> {
+        SmallVec {
+            capacity: A::size(),
+            data: SmallVecData::from_inline(MaybeUninit::new(buf)),
+        }
+    }
+
+    /// Constructs a new `SmallVec` on the stack from an `A` without
+    /// copying elements. Also sets the length, which must be less or
+    /// equal to the size of `buf`.
+    ///
+    /// ```rust
+    /// use smallvec::SmallVec;
+    ///
+    /// let buf = [1, 2, 3, 4, 5, 0, 0, 0];
+    /// let small_vec: SmallVec<_> = SmallVec::from_buf_and_len(buf, 5);
+    ///
+    /// assert_eq!(&*small_vec, &[1, 2, 3, 4, 5]);
+    /// ```
+    #[inline]
+    pub fn from_buf_and_len(buf: A, len: usize) -> SmallVec<A> {
+        assert!(len <= A::size());
+        unsafe { SmallVec::from_buf_and_len_unchecked(MaybeUninit::new(buf), len) }
+    }
+
+    /// Constructs a new `SmallVec` on the stack from an `A` without
+    /// copying elements. Also sets the length. The user is responsible
+    /// for ensuring that `len <= A::size()`.
+    ///
+    /// ```rust
+    /// use smallvec::SmallVec;
+    /// use std::mem::MaybeUninit;
+    ///
+    /// let buf = [1, 2, 3, 4, 5, 0, 0, 0];
+    /// let small_vec: SmallVec<_> = unsafe {
+    ///     SmallVec::from_buf_and_len_unchecked(MaybeUninit::new(buf), 5)
+    /// };
+    ///
+    /// assert_eq!(&*small_vec, &[1, 2, 3, 4, 5]);
+    /// ```
+    #[inline]
+    pub unsafe fn from_buf_and_len_unchecked(buf: MaybeUninit<A>, len: usize) -> SmallVec<A> {
+        SmallVec {
+            capacity: len,
+            data: SmallVecData::from_inline(buf),
+        }
+    }
+
+    /// Sets the length of a vector.
+    ///
+    /// This will explicitly set the size of the vector, without actually
+    /// modifying its buffers, so it is up to the caller to ensure that the
+    /// vector is actually the specified size.
+    pub unsafe fn set_len(&mut self, new_len: usize) {
+        let (_, len_ptr, _) = self.triple_mut();
+        *len_ptr = new_len;
+    }
+
+    /// The maximum number of elements this vector can hold inline
+    #[inline]
+    fn inline_capacity() -> usize {
+        if mem::size_of::<A::Item>() > 0 {
+            A::size()
+        } else {
+            // For zero-size items code like `ptr.add(offset)` always returns the same pointer.
+            // Therefore all items are at the same address,
+            // and any array size has capacity for infinitely many items.
+            // The capacity is limited by the bit width of the length field.
+            //
+            // `Vec` also does this:
+            // https://github.com/rust-lang/rust/blob/1.44.0/src/liballoc/raw_vec.rs#L186
+            //
+            // In our case, this also ensures that a smallvec of zero-size items never spills,
+            // and we never try to allocate zero bytes which `std::alloc::alloc` disallows.
+            core::usize::MAX
+        }
+    }
+
+    /// The maximum number of elements this vector can hold inline
+    #[inline]
+    pub fn inline_size(&self) -> usize {
+        Self::inline_capacity()
+    }
+
+    /// The number of elements stored in the vector
+    #[inline]
+    pub fn len(&self) -> usize {
+        self.triple().1
+    }
+
+    /// Returns `true` if the vector is empty
+    #[inline]
+    pub fn is_empty(&self) -> bool {
+        self.len() == 0
+    }
+
+    /// The number of items the vector can hold without reallocating
+    #[inline]
+    pub fn capacity(&self) -> usize {
+        self.triple().2
+    }
+
+    /// Returns a tuple with (data ptr, len, capacity)
+    /// Useful to get all `SmallVec` properties with a single check of the current storage variant.
+    #[inline]
+    fn triple(&self) -> (ConstNonNull<A::Item>, usize, usize) {
+        unsafe {
+            if self.spilled() {
+                let (ptr, len) = self.data.heap();
+                (ptr, len, self.capacity)
+            } else {
+                (self.data.inline(), self.capacity, Self::inline_capacity())
+            }
+        }
+    }
+
+    /// Returns a tuple with (data ptr, len ptr, capacity)
+    #[inline]
+    fn triple_mut(&mut self) -> (NonNull<A::Item>, &mut usize, usize) {
+        unsafe {
+            if self.spilled() {
+                let (ptr, len_ptr) = self.data.heap_mut();
+                (ptr, len_ptr, self.capacity)
+            } else {
+                (
+                    self.data.inline_mut(),
+                    &mut self.capacity,
+                    Self::inline_capacity(),
+                )
+            }
+        }
+    }
+
+    /// Returns `true` if the data has spilled into a separate heap-allocated buffer.
+    #[inline]
+    pub fn spilled(&self) -> bool {
+        self.capacity > Self::inline_capacity()
+    }
+
+    /// Creates a draining iterator that removes the specified range in the vector
+    /// and yields the removed items.
+    ///
+    /// Note 1: The element range is removed even if the iterator is only
+    /// partially consumed or not consumed at all.
+    ///
+    /// Note 2: It is unspecified how many elements are removed from the vector
+    /// if the `Drain` value is leaked.
+    ///
+    /// # Panics
+    ///
+    /// Panics if the starting point is greater than the end point or if
+    /// the end point is greater than the length of the vector.
+    pub fn drain<R>(&mut self, range: R) -> Drain<'_, A>
+    where
+        R: RangeBounds<usize>,
+    {
+        use core::ops::Bound::*;
+
+        let len = self.len();
+        let start = match range.start_bound() {
+            Included(&n) => n,
+            Excluded(&n) => n.checked_add(1).expect("Range start out of bounds"),
+            Unbounded => 0,
+        };
+        let end = match range.end_bound() {
+            Included(&n) => n.checked_add(1).expect("Range end out of bounds"),
+            Excluded(&n) => n,
+            Unbounded => len,
+        };
+
+        assert!(start <= end);
+        assert!(end <= len);
+
+        unsafe {
+            self.set_len(start);
+
+            let range_slice = slice::from_raw_parts(self.as_ptr().add(start), end - start);
+
+            Drain {
+                tail_start: end,
+                tail_len: len - end,
+                iter: range_slice.iter(),
+                // Since self is a &mut, passing it to a function would invalidate the slice iterator.
+                vec: NonNull::new_unchecked(self as *mut _),
+            }
+        }
+    }
+
+    #[cfg(feature = "drain_filter")]
+    /// Creates an iterator which uses a closure to determine if an element should be removed.
+    ///
+    /// If the closure returns true, the element is removed and yielded. If the closure returns
+    /// false, the element will remain in the vector and will not be yielded by the iterator.
+    ///
+    /// Using this method is equivalent to the following code:
+    /// ```
+    /// # use smallvec::SmallVec;
+    /// # let some_predicate = |x: &mut i32| { *x == 2 || *x == 3 || *x == 6 };
+    /// # let mut vec: SmallVec<[i32; 8]> = SmallVec::from_slice(&[1i32, 2, 3, 4, 5, 6]);
+    /// let mut i = 0;
+    /// while i < vec.len() {
+    ///     if some_predicate(&mut vec[i]) {
+    ///         let val = vec.remove(i);
+    ///         // your code here
+    ///     } else {
+    ///         i += 1;
+    ///     }
+    /// }
+    ///
+    /// # assert_eq!(vec, SmallVec::<[i32; 8]>::from_slice(&[1i32, 4, 5]));
+    /// ```
+    /// ///
+    /// But `drain_filter` is easier to use. `drain_filter` is also more efficient,
+    /// because it can backshift the elements of the array in bulk.
+    ///
+    /// Note that `drain_filter` also lets you mutate every element in the filter closure,
+    /// regardless of whether you choose to keep or remove it.
+    ///
+    /// # Examples
+    ///
+    /// Splitting an array into evens and odds, reusing the original allocation:
+    ///
+    /// ```
+    /// # use smallvec::SmallVec;
+    /// let mut numbers: SmallVec<[i32; 16]> = SmallVec::from_slice(&[1i32, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15]);
+    ///
+    /// let evens = numbers.drain_filter(|x| *x % 2 == 0).collect::<SmallVec<[i32; 16]>>();
+    /// let odds = numbers;
+    ///
+    /// assert_eq!(evens, SmallVec::<[i32; 16]>::from_slice(&[2i32, 4, 6, 8, 14]));
+    /// assert_eq!(odds, SmallVec::<[i32; 16]>::from_slice(&[1i32, 3, 5, 9, 11, 13, 15]));
+    /// ```
+    pub fn drain_filter<F>(&mut self, filter: F) -> DrainFilter<'_, A, F,>
+    where
+        F: FnMut(&mut A::Item) -> bool,
+    {
+        let old_len = self.len();
+
+        // Guard against us getting leaked (leak amplification)
+        unsafe {
+            self.set_len(0);
+        }
+
+        DrainFilter { vec: self, idx: 0, del: 0, old_len, pred: filter, panic_flag: false }
+    }
+
+    /// Append an item to the vector.
+    #[inline]
+    pub fn push(&mut self, value: A::Item) {
+        unsafe {
+            let (mut ptr, mut len, cap) = self.triple_mut();
+            if *len == cap {
+                self.reserve_one_unchecked();
+                let (heap_ptr, heap_len) = self.data.heap_mut();
+                ptr = heap_ptr;
+                len = heap_len;
+            }
+            ptr::write(ptr.as_ptr().add(*len), value);
+            *len += 1;
+        }
+    }
+
+    /// Remove an item from the end of the vector and return it, or None if empty.
+    #[inline]
+    pub fn pop(&mut self) -> Option<A::Item> {
+        unsafe {
+            let (ptr, len_ptr, _) = self.triple_mut();
+            let ptr: *const _ = ptr.as_ptr();
+            if *len_ptr == 0 {
+                return None;
+            }
+            let last_index = *len_ptr - 1;
+            *len_ptr = last_index;
+            Some(ptr::read(ptr.add(last_index)))
+        }
+    }
+
+    /// Moves all the elements of `other` into `self`, leaving `other` empty.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// # use smallvec::{SmallVec, smallvec};
+    /// let mut v0: SmallVec<[u8; 16]> = smallvec![1, 2, 3];
+    /// let mut v1: SmallVec<[u8; 32]> = smallvec![4, 5, 6];
+    /// v0.append(&mut v1);
+    /// assert_eq!(*v0, [1, 2, 3, 4, 5, 6]);
+    /// assert_eq!(*v1, []);
+    /// ```
+    pub fn append<B>(&mut self, other: &mut SmallVec<B>)
+    where
+        B: Array<Item = A::Item>,
+    {
+        self.extend(other.drain(..))
+    }
+
+    /// Re-allocate to set the capacity to `max(new_cap, inline_size())`.
+    ///
+    /// Panics if `new_cap` is less than the vector's length
+    /// or if the capacity computation overflows `usize`.
+    pub fn grow(&mut self, new_cap: usize) {
+        infallible(self.try_grow(new_cap))
+    }
+
+    /// Re-allocate to set the capacity to `max(new_cap, inline_size())`.
+    ///
+    /// Panics if `new_cap` is less than the vector's length
+    pub fn try_grow(&mut self, new_cap: usize) -> Result<(), CollectionAllocErr> {
+        unsafe {
+            let unspilled = !self.spilled();
+            let (ptr, &mut len, cap) = self.triple_mut();
+            assert!(new_cap >= len);
+            if new_cap <= Self::inline_capacity() {
+                if unspilled {
+                    return Ok(());
+                }
+                self.data = SmallVecData::from_inline(MaybeUninit::uninit());
+                ptr::copy_nonoverlapping(ptr.as_ptr(), self.data.inline_mut().as_ptr(), len);
+                self.capacity = len;
+                deallocate(ptr, cap);
+            } else if new_cap != cap {
+                let layout = layout_array::<A::Item>(new_cap)?;
+                debug_assert!(layout.size() > 0);
+                let new_alloc;
+                if unspilled {
+                    new_alloc = NonNull::new(alloc::alloc::alloc(layout))
+                        .ok_or(CollectionAllocErr::AllocErr { layout })?
+                        .cast();
+                    ptr::copy_nonoverlapping(ptr.as_ptr(), new_alloc.as_ptr(), len);
+                } else {
+                    // This should never fail since the same succeeded
+                    // when previously allocating `ptr`.
+                    let old_layout = layout_array::<A::Item>(cap)?;
+
+                    let new_ptr =
+                        alloc::alloc::realloc(ptr.as_ptr() as *mut u8, old_layout, layout.size());
+                    new_alloc = NonNull::new(new_ptr)
+                        .ok_or(CollectionAllocErr::AllocErr { layout })?
+                        .cast();
+                }
+                self.data = SmallVecData::from_heap(new_alloc, len);
+                self.capacity = new_cap;
+            }
+            Ok(())
+        }
+    }
+
+    /// Reserve capacity for `additional` more elements to be inserted.
+    ///
+    /// May reserve more space to avoid frequent reallocations.
+    ///
+    /// Panics if the capacity computation overflows `usize`.
+    #[inline]
+    pub fn reserve(&mut self, additional: usize) {
+        infallible(self.try_reserve(additional))
+    }
+
+    /// Internal method used to grow in push() and insert(), where we know already we have to grow.
+    #[cold]
+    fn reserve_one_unchecked(&mut self) {
+        debug_assert_eq!(self.len(), self.capacity());
+        let new_cap = self.len()
+            .checked_add(1)
+            .and_then(usize::checked_next_power_of_two)
+            .expect("capacity overflow");
+        infallible(self.try_grow(new_cap))
+    }
+
+    /// Reserve capacity for `additional` more elements to be inserted.
+    ///
+    /// May reserve more space to avoid frequent reallocations.
+    pub fn try_reserve(&mut self, additional: usize) -> Result<(), CollectionAllocErr> {
+        // prefer triple_mut() even if triple() would work so that the optimizer removes duplicated
+        // calls to it from callers.
+        let (_, &mut len, cap) = self.triple_mut();
+        if cap - len >= additional {
+            return Ok(());
+        }
+        let new_cap = len
+            .checked_add(additional)
+            .and_then(usize::checked_next_power_of_two)
+            .ok_or(CollectionAllocErr::CapacityOverflow)?;
+        self.try_grow(new_cap)
+    }
+
+    /// Reserve the minimum capacity for `additional` more elements to be inserted.
+    ///
+    /// Panics if the new capacity overflows `usize`.
+    pub fn reserve_exact(&mut self, additional: usize) {
+        infallible(self.try_reserve_exact(additional))
+    }
+
+    /// Reserve the minimum capacity for `additional` more elements to be inserted.
+    pub fn try_reserve_exact(&mut self, additional: usize) -> Result<(), CollectionAllocErr> {
+        let (_, &mut len, cap) = self.triple_mut();
+        if cap - len >= additional {
+            return Ok(());
+        }
+        let new_cap = len
+            .checked_add(additional)
+            .ok_or(CollectionAllocErr::CapacityOverflow)?;
+        self.try_grow(new_cap)
+    }
+
+    /// Shrink the capacity of the vector as much as possible.
+    ///
+    /// When possible, this will move data from an external heap buffer to the vector's inline
+    /// storage.
+    pub fn shrink_to_fit(&mut self) {
+        if !self.spilled() {
+            return;
+        }
+        let len = self.len();
+        if self.inline_size() >= len {
+            unsafe {
+                let (ptr, len) = self.data.heap();
+                self.data = SmallVecData::from_inline(MaybeUninit::uninit());
+                ptr::copy_nonoverlapping(ptr.as_ptr(), self.data.inline_mut().as_ptr(), len);
+                deallocate(ptr.0, self.capacity);
+                self.capacity = len;
+            }
+        } else if self.capacity() > len {
+            self.grow(len);
+        }
+    }
+
+    /// Shorten the vector, keeping the first `len` elements and dropping the rest.
+    ///
+    /// If `len` is greater than or equal to the vector's current length, this has no
+    /// effect.
+    ///
+    /// This does not re-allocate.  If you want the vector's capacity to shrink, call
+    /// `shrink_to_fit` after truncating.
+    pub fn truncate(&mut self, len: usize) {
+        unsafe {
+            let (ptr, len_ptr, _) = self.triple_mut();
+            let ptr = ptr.as_ptr();
+            while len < *len_ptr {
+                let last_index = *len_ptr - 1;
+                *len_ptr = last_index;
+                ptr::drop_in_place(ptr.add(last_index));
+            }
+        }
+    }
+
+    /// Extracts a slice containing the entire vector.
+    ///
+    /// Equivalent to `&s[..]`.
+    pub fn as_slice(&self) -> &[A::Item] {
+        self
+    }
+
+    /// Extracts a mutable slice of the entire vector.
+    ///
+    /// Equivalent to `&mut s[..]`.
+    pub fn as_mut_slice(&mut self) -> &mut [A::Item] {
+        self
+    }
+
+    /// Remove the element at position `index`, replacing it with the last element.
+    ///
+    /// This does not preserve ordering, but is O(1).
+    ///
+    /// Panics if `index` is out of bounds.
+    #[inline]
+    pub fn swap_remove(&mut self, index: usize) -> A::Item {
+        let len = self.len();
+        self.swap(len - 1, index);
+        self.pop()
+            .unwrap_or_else(|| unsafe { unreachable_unchecked() })
+    }
+
+    /// Remove all elements from the vector.
+    #[inline]
+    pub fn clear(&mut self) {
+        self.truncate(0);
+    }
+
+    /// Remove and return the element at position `index`, shifting all elements after it to the
+    /// left.
+    ///
+    /// Panics if `index` is out of bounds.
+    pub fn remove(&mut self, index: usize) -> A::Item {
+        unsafe {
+            let (ptr, len_ptr, _) = self.triple_mut();
+            let len = *len_ptr;
+            assert!(index < len);
+            *len_ptr = len - 1;
+            let ptr = ptr.as_ptr().add(index);
+            let item = ptr::read(ptr);
+            ptr::copy(ptr.add(1), ptr, len - index - 1);
+            item
+        }
+    }
+
+    /// Insert an element at position `index`, shifting all elements after it to the right.
+    ///
+    /// Panics if `index > len`.
+    pub fn insert(&mut self, index: usize, element: A::Item) {
+        unsafe {
+            let (mut ptr, mut len_ptr, cap) = self.triple_mut();
+            if *len_ptr == cap {
+                self.reserve_one_unchecked();
+                let (heap_ptr, heap_len_ptr) = self.data.heap_mut();
+                ptr = heap_ptr;
+                len_ptr = heap_len_ptr;
+            }
+            let mut ptr = ptr.as_ptr();
+            let len = *len_ptr;
+            if index > len {
+                panic!("index exceeds length");
+            }
+            // SAFETY: add is UB if index > len, but we panicked first
+            ptr = ptr.add(index);
+            if index < len {
+                // Shift element to the right of `index`.
+                ptr::copy(ptr, ptr.add(1), len - index);
+            }
+            *len_ptr = len + 1;
+            ptr::write(ptr, element);
+        }
+    }
+
+    /// Insert multiple elements at position `index`, shifting all following elements toward the
+    /// back.
+    pub fn insert_many<I: IntoIterator<Item = A::Item>>(&mut self, index: usize, iterable: I) {
+        let mut iter = iterable.into_iter();
+        if index == self.len() {
+            return self.extend(iter);
+        }
+
+        let (lower_size_bound, _) = iter.size_hint();
+        assert!(lower_size_bound <= core::isize::MAX as usize); // Ensure offset is indexable
+        assert!(index + lower_size_bound >= index); // Protect against overflow
+
+        let mut num_added = 0;
+        let old_len = self.len();
+        assert!(index <= old_len);
+
+        unsafe {
+            // Reserve space for `lower_size_bound` elements.
+            self.reserve(lower_size_bound);
+            let start = self.as_mut_ptr();
+            let ptr = start.add(index);
+
+            // Move the trailing elements.
+            ptr::copy(ptr, ptr.add(lower_size_bound), old_len - index);
+
+            // In case the iterator panics, don't double-drop the items we just copied above.
+            self.set_len(0);
+            let mut guard = DropOnPanic {
+                start,
+                skip: index..(index + lower_size_bound),
+                len: old_len + lower_size_bound,
+            };
+
+            // The set_len above invalidates the previous pointers, so we must re-create them.
+            let start = self.as_mut_ptr();
+            let ptr = start.add(index);
+
+            while num_added < lower_size_bound {
+                let element = match iter.next() {
+                    Some(x) => x,
+                    None => break,
+                };
+                let cur = ptr.add(num_added);
+                ptr::write(cur, element);
+                guard.skip.start += 1;
+                num_added += 1;
+            }
+
+            if num_added < lower_size_bound {
+                // Iterator provided fewer elements than the hint. Move the tail backward.
+                ptr::copy(
+                    ptr.add(lower_size_bound),
+                    ptr.add(num_added),
+                    old_len - index,
+                );
+            }
+            // There are no more duplicate or uninitialized slots, so the guard is not needed.
+            self.set_len(old_len + num_added);
+            mem::forget(guard);
+        }
+
+        // Insert any remaining elements one-by-one.
+        for element in iter {
+            self.insert(index + num_added, element);
+            num_added += 1;
+        }
+
+        struct DropOnPanic<T> {
+            start: *mut T,
+            skip: Range<usize>, // Space we copied-out-of, but haven't written-to yet.
+            len: usize,
+        }
+
+        impl<T> Drop for DropOnPanic<T> {
+            fn drop(&mut self) {
+                for i in 0..self.len {
+                    if !self.skip.contains(&i) {
+                        unsafe {
+                            ptr::drop_in_place(self.start.add(i));
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /// Convert a `SmallVec` to a `Vec`, without reallocating if the `SmallVec` has already spilled onto
+    /// the heap.
+    pub fn into_vec(mut self) -> Vec<A::Item> {
+        if self.spilled() {
+            unsafe {
+                let (ptr, &mut len) = self.data.heap_mut();
+                let v = Vec::from_raw_parts(ptr.as_ptr(), len, self.capacity);
+                mem::forget(self);
+                v
+            }
+        } else {
+            self.into_iter().collect()
+        }
+    }
+
+    /// Converts a `SmallVec` into a `Box<[T]>` without reallocating if the `SmallVec` has already spilled
+    /// onto the heap.
+    ///
+    /// Note that this will drop any excess capacity.
+    pub fn into_boxed_slice(self) -> Box<[A::Item]> {
+        self.into_vec().into_boxed_slice()
+    }
+
+    /// Convert the `SmallVec` into an `A` if possible. Otherwise return `Err(Self)`.
+    ///
+    /// This method returns `Err(Self)` if the `SmallVec` is too short (and the `A` contains uninitialized elements),
+    /// or if the `SmallVec` is too long (and all the elements were spilled to the heap).
+    pub fn into_inner(self) -> Result<A, Self> {
+        if self.spilled() || self.len() != A::size() {
+            // Note: A::size, not Self::inline_capacity
+            Err(self)
+        } else {
+            unsafe {
+                let data = ptr::read(&self.data);
+                mem::forget(self);
+                Ok(data.into_inline().assume_init())
+            }
+        }
+    }
+
+    /// Retains only the elements specified by the predicate.
+    ///
+    /// In other words, remove all elements `e` such that `f(&e)` returns `false`.
+    /// This method operates in place and preserves the order of the retained
+    /// elements.
+    pub fn retain<F: FnMut(&mut A::Item) -> bool>(&mut self, mut f: F) {
+        let mut del = 0;
+        let len = self.len();
+        for i in 0..len {
+            if !f(&mut self[i]) {
+                del += 1;
+            } else if del > 0 {
+                self.swap(i - del, i);
+            }
+        }
+        self.truncate(len - del);
+    }
+
+    /// Retains only the elements specified by the predicate.
+    ///
+    /// This method is identical in behaviour to [`retain`]; it is included only
+    /// to maintain api-compatibility with `std::Vec`, where the methods are
+    /// separate for historical reasons.
+    pub fn retain_mut<F: FnMut(&mut A::Item) -> bool>(&mut self, f: F) {
+        self.retain(f)
+    }
+
+    /// Removes consecutive duplicate elements.
+    pub fn dedup(&mut self)
+    where
+        A::Item: PartialEq<A::Item>,
+    {
+        self.dedup_by(|a, b| a == b);
+    }
+
+    /// Removes consecutive duplicate elements using the given equality relation.
+    pub fn dedup_by<F>(&mut self, mut same_bucket: F)
+    where
+        F: FnMut(&mut A::Item, &mut A::Item) -> bool,
+    {
+        // See the implementation of Vec::dedup_by in the
+        // standard library for an explanation of this algorithm.
+        let len = self.len();
+        if len <= 1 {
+            return;
+        }
+
+        let ptr = self.as_mut_ptr();
+        let mut w: usize = 1;
+
+        unsafe {
+            for r in 1..len {
+                let p_r = ptr.add(r);
+                let p_wm1 = ptr.add(w - 1);
+                if !same_bucket(&mut *p_r, &mut *p_wm1) {
+                    if r != w {
+                        let p_w = p_wm1.add(1);
+                        mem::swap(&mut *p_r, &mut *p_w);
+                    }
+                    w += 1;
+                }
+            }
+        }
+
+        self.truncate(w);
+    }
+
+    /// Removes consecutive elements that map to the same key.
+    pub fn dedup_by_key<F, K>(&mut self, mut key: F)
+    where
+        F: FnMut(&mut A::Item) -> K,
+        K: PartialEq<K>,
+    {
+        self.dedup_by(|a, b| key(a) == key(b));
+    }
+
+    /// Resizes the `SmallVec` in-place so that `len` is equal to `new_len`.
+    ///
+    /// If `new_len` is greater than `len`, the `SmallVec` is extended by the difference, with each
+    /// additional slot filled with the result of calling the closure `f`. The return values from `f`
+    /// will end up in the `SmallVec` in the order they have been generated.
+    ///
+    /// If `new_len` is less than `len`, the `SmallVec` is simply truncated.
+    ///
+    /// This method uses a closure to create new values on every push. If you'd rather `Clone` a given
+    /// value, use `resize`. If you want to use the `Default` trait to generate values, you can pass
+    /// `Default::default()` as the second argument.
+    ///
+    /// Added for `std::vec::Vec` compatibility (added in Rust 1.33.0)
+    ///
+    /// ```
+    /// # use smallvec::{smallvec, SmallVec};
+    /// let mut vec : SmallVec<[_; 4]> = smallvec![1, 2, 3];
+    /// vec.resize_with(5, Default::default);
+    /// assert_eq!(&*vec, &[1, 2, 3, 0, 0]);
+    ///
+    /// let mut vec : SmallVec<[_; 4]> = smallvec![];
+    /// let mut p = 1;
+    /// vec.resize_with(4, || { p *= 2; p });
+    /// assert_eq!(&*vec, &[2, 4, 8, 16]);
+    /// ```
+    pub fn resize_with<F>(&mut self, new_len: usize, f: F)
+    where
+        F: FnMut() -> A::Item,
+    {
+        let old_len = self.len();
+        if old_len < new_len {
+            let mut f = f;
+            let additional = new_len - old_len;
+            self.reserve(additional);
+            for _ in 0..additional {
+                self.push(f());
+            }
+        } else if old_len > new_len {
+            self.truncate(new_len);
+        }
+    }
+
+    /// Creates a `SmallVec` directly from the raw components of another
+    /// `SmallVec`.
+    ///
+    /// # Safety
+    ///
+    /// This is highly unsafe, due to the number of invariants that aren't
+    /// checked:
+    ///
+    /// * `ptr` needs to have been previously allocated via `SmallVec` for its
+    ///   spilled storage (at least, it's highly likely to be incorrect if it
+    ///   wasn't).
+    /// * `ptr`'s `A::Item` type needs to be the same size and alignment that
+    ///   it was allocated with
+    /// * `length` needs to be less than or equal to `capacity`.
+    /// * `capacity` needs to be the capacity that the pointer was allocated
+    ///   with.
+    ///
+    /// Violating these may cause problems like corrupting the allocator's
+    /// internal data structures.
+    ///
+    /// Additionally, `capacity` must be greater than the amount of inline
+    /// storage `A` has; that is, the new `SmallVec` must need to spill over
+    /// into heap allocated storage. This condition is asserted against.
+    ///
+    /// The ownership of `ptr` is effectively transferred to the
+    /// `SmallVec` which may then deallocate, reallocate or change the
+    /// contents of memory pointed to by the pointer at will. Ensure
+    /// that nothing else uses the pointer after calling this
+    /// function.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// # use smallvec::{smallvec, SmallVec};
+    /// use std::mem;
+    /// use std::ptr;
+    ///
+    /// fn main() {
+    ///     let mut v: SmallVec<[_; 1]> = smallvec![1, 2, 3];
+    ///
+    ///     // Pull out the important parts of `v`.
+    ///     let p = v.as_mut_ptr();
+    ///     let len = v.len();
+    ///     let cap = v.capacity();
+    ///     let spilled = v.spilled();
+    ///
+    ///     unsafe {
+    ///         // Forget all about `v`. The heap allocation that stored the
+    ///         // three values won't be deallocated.
+    ///         mem::forget(v);
+    ///
+    ///         // Overwrite memory with [4, 5, 6].
+    ///         //
+    ///         // This is only safe if `spilled` is true! Otherwise, we are
+    ///         // writing into the old `SmallVec`'s inline storage on the
+    ///         // stack.
+    ///         assert!(spilled);
+    ///         for i in 0..len {
+    ///             ptr::write(p.add(i), 4 + i);
+    ///         }
+    ///
+    ///         // Put everything back together into a SmallVec with a different
+    ///         // amount of inline storage, but which is still less than `cap`.
+    ///         let rebuilt = SmallVec::<[_; 2]>::from_raw_parts(p, len, cap);
+    ///         assert_eq!(&*rebuilt, &[4, 5, 6]);
+    ///     }
+    /// }
+    #[inline]
+    pub unsafe fn from_raw_parts(ptr: *mut A::Item, length: usize, capacity: usize) -> SmallVec<A> {
+        // SAFETY: We require caller to provide same ptr as we alloc
+        // and we never alloc null pointer.
+        let ptr = unsafe {
+            debug_assert!(!ptr.is_null(), "Called `from_raw_parts` with null pointer.");
+            NonNull::new_unchecked(ptr)
+        };
+        assert!(capacity > Self::inline_capacity());
+        SmallVec {
+            capacity,
+            data: SmallVecData::from_heap(ptr, length),
+        }
+    }
+
+    /// Returns a raw pointer to the vector's buffer.
+    pub fn as_ptr(&self) -> *const A::Item {
+        // We shadow the slice method of the same name to avoid going through
+        // `deref`, which creates an intermediate reference that may place
+        // additional safety constraints on the contents of the slice.
+        self.triple().0.as_ptr()
+    }
+
+    /// Returns a raw mutable pointer to the vector's buffer.
+    pub fn as_mut_ptr(&mut self) -> *mut A::Item {
+        // We shadow the slice method of the same name to avoid going through
+        // `deref_mut`, which creates an intermediate reference that may place
+        // additional safety constraints on the contents of the slice.
+        self.triple_mut().0.as_ptr()
+    }
+}
+
+impl<A: Array> SmallVec<A>
+where
+    A::Item: Copy,
+{
+    /// Copy the elements from a slice into a new `SmallVec`.
+    ///
+    /// For slices of `Copy` types, this is more efficient than `SmallVec::from(slice)`.
+    pub fn from_slice(slice: &[A::Item]) -> Self {
+        let len = slice.len();
+        if len <= Self::inline_capacity() {
+            SmallVec {
+                capacity: len,
+                data: SmallVecData::from_inline(unsafe {
+                    let mut data: MaybeUninit<A> = MaybeUninit::uninit();
+                    ptr::copy_nonoverlapping(
+                        slice.as_ptr(),
+                        data.as_mut_ptr() as *mut A::Item,
+                        len,
+                    );
+                    data
+                }),
+            }
+        } else {
+            let mut b = slice.to_vec();
+            let cap = b.capacity();
+            let ptr = NonNull::new(b.as_mut_ptr()).expect("Vec always contain non null pointers.");
+            mem::forget(b);
+            SmallVec {
+                capacity: cap,
+                data: SmallVecData::from_heap(ptr, len),
+            }
+        }
+    }
+
+    /// Copy elements from a slice into the vector at position `index`, shifting any following
+    /// elements toward the back.
+    ///
+    /// For slices of `Copy` types, this is more efficient than `insert`.
+    #[inline]
+    pub fn insert_from_slice(&mut self, index: usize, slice: &[A::Item]) {
+        self.reserve(slice.len());
+
+        let len = self.len();
+        assert!(index <= len);
+
+        unsafe {
+            let slice_ptr = slice.as_ptr();
+            let ptr = self.as_mut_ptr().add(index);
+            ptr::copy(ptr, ptr.add(slice.len()), len - index);
+            ptr::copy_nonoverlapping(slice_ptr, ptr, slice.len());
+            self.set_len(len + slice.len());
+        }
+    }
+
+    /// Copy elements from a slice and append them to the vector.
+    ///
+    /// For slices of `Copy` types, this is more efficient than `extend`.
+    #[inline]
+    pub fn extend_from_slice(&mut self, slice: &[A::Item]) {
+        let len = self.len();
+        self.insert_from_slice(len, slice);
+    }
+}
+
+impl<A: Array> SmallVec<A>
+where
+    A::Item: Clone,
+{
+    /// Resizes the vector so that its length is equal to `len`.
+    ///
+    /// If `len` is less than the current length, the vector simply truncated.
+    ///
+    /// If `len` is greater than the current length, `value` is appended to the
+    /// vector until its length equals `len`.
+    pub fn resize(&mut self, len: usize, value: A::Item) {
+        let old_len = self.len();
+
+        if len > old_len {
+            self.extend(repeat(value).take(len - old_len));
+        } else {
+            self.truncate(len);
+        }
+    }
+
+    /// Creates a `SmallVec` with `n` copies of `elem`.
+    /// ```
+    /// use smallvec::SmallVec;
+    ///
+    /// let v = SmallVec::<[char; 128]>::from_elem('d', 2);
+    /// assert_eq!(v, SmallVec::from_buf(['d', 'd']));
+    /// ```
+    pub fn from_elem(elem: A::Item, n: usize) -> Self {
+        if n > Self::inline_capacity() {
+            vec![elem; n].into()
+        } else {
+            let mut v = SmallVec::<A>::new();
+            unsafe {
+                let (ptr, len_ptr, _) = v.triple_mut();
+                let ptr = ptr.as_ptr();
+                let mut local_len = SetLenOnDrop::new(len_ptr);
+
+                for i in 0..n {
+                    ::core::ptr::write(ptr.add(i), elem.clone());
+                    local_len.increment_len(1);
+                }
+            }
+            v
+        }
+    }
+}
+
+impl<A: Array> ops::Deref for SmallVec<A> {
+    type Target = [A::Item];
+    #[inline]
+    fn deref(&self) -> &[A::Item] {
+        unsafe {
+            let (ptr, len, _) = self.triple();
+            slice::from_raw_parts(ptr.as_ptr(), len)
+        }
+    }
+}
+
+impl<A: Array> ops::DerefMut for SmallVec<A> {
+    #[inline]
+    fn deref_mut(&mut self) -> &mut [A::Item] {
+        unsafe {
+            let (ptr, &mut len, _) = self.triple_mut();
+            slice::from_raw_parts_mut(ptr.as_ptr(), len)
+        }
+    }
+}
+
+impl<A: Array> AsRef<[A::Item]> for SmallVec<A> {
+    #[inline]
+    fn as_ref(&self) -> &[A::Item] {
+        self
+    }
+}
+
+impl<A: Array> AsMut<[A::Item]> for SmallVec<A> {
+    #[inline]
+    fn as_mut(&mut self) -> &mut [A::Item] {
+        self
+    }
+}
+
+impl<A: Array> Borrow<[A::Item]> for SmallVec<A> {
+    #[inline]
+    fn borrow(&self) -> &[A::Item] {
+        self
+    }
+}
+
+impl<A: Array> BorrowMut<[A::Item]> for SmallVec<A> {
+    #[inline]
+    fn borrow_mut(&mut self) -> &mut [A::Item] {
+        self
+    }
+}
+
+#[cfg(feature = "write")]
+#[cfg_attr(docsrs, doc(cfg(feature = "write")))]
+impl<A: Array<Item = u8>> io::Write for SmallVec<A> {
+    #[inline]
+    fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+        self.extend_from_slice(buf);
+        Ok(buf.len())
+    }
+
+    #[inline]
+    fn write_all(&mut self, buf: &[u8]) -> io::Result<()> {
+        self.extend_from_slice(buf);
+        Ok(())
+    }
+
+    #[inline]
+    fn flush(&mut self) -> io::Result<()> {
+        Ok(())
+    }
+}
+
+#[cfg(feature = "serde")]
+#[cfg_attr(docsrs, doc(cfg(feature = "serde")))]
+impl<A: Array> Serialize for SmallVec<A>
+where
+    A::Item: Serialize,
+{
+    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
+        let mut state = serializer.serialize_seq(Some(self.len()))?;
+        for item in self {
+            state.serialize_element(&item)?;
+        }
+        state.end()
+    }
+}
+
+#[cfg(feature = "serde")]
+#[cfg_attr(docsrs, doc(cfg(feature = "serde")))]
+impl<'de, A: Array> Deserialize<'de> for SmallVec<A>
+where
+    A::Item: Deserialize<'de>,
+{
+    fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
+        deserializer.deserialize_seq(SmallVecVisitor {
+            phantom: PhantomData,
+        })
+    }
+}
+
+#[cfg(feature = "serde")]
+struct SmallVecVisitor<A> {
+    phantom: PhantomData<A>,
+}
+
+#[cfg(feature = "serde")]
+impl<'de, A: Array> Visitor<'de> for SmallVecVisitor<A>
+where
+    A::Item: Deserialize<'de>,
+{
+    type Value = SmallVec<A>;
+
+    fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
+        formatter.write_str("a sequence")
+    }
+
+    fn visit_seq<B>(self, mut seq: B) -> Result<Self::Value, B::Error>
+    where
+        B: SeqAccess<'de>,
+    {
+        use serde::de::Error;
+        let len = seq.size_hint().unwrap_or(0);
+        let mut values = SmallVec::new();
+        values.try_reserve(len).map_err(B::Error::custom)?;
+
+        while let Some(value) = seq.next_element()? {
+            values.push(value);
+        }
+
+        Ok(values)
+    }
+}
+
+#[cfg(feature = "malloc_size_of")]
+impl<A: Array> MallocShallowSizeOf for SmallVec<A> {
+    fn shallow_size_of(&self, ops: &mut MallocSizeOfOps) -> usize {
+        if self.spilled() {
+            unsafe { ops.malloc_size_of(self.as_ptr()) }
+        } else {
+            0
+        }
+    }
+}
+
+#[cfg(feature = "malloc_size_of")]
+impl<A> MallocSizeOf for SmallVec<A>
+where
+    A: Array,
+    A::Item: MallocSizeOf,
+{
+    fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize {
+        let mut n = self.shallow_size_of(ops);
+        for elem in self.iter() {
+            n += elem.size_of(ops);
+        }
+        n
+    }
+}
+
+#[cfg(feature = "specialization")]
+trait SpecFrom<A: Array, S> {
+    fn spec_from(slice: S) -> SmallVec<A>;
+}
+
+#[cfg(feature = "specialization")]
+mod specialization;
+
+#[cfg(feature = "arbitrary")]
+mod arbitrary;
+
+#[cfg(feature = "specialization")]
+impl<'a, A: Array> SpecFrom<A, &'a [A::Item]> for SmallVec<A>
+where
+    A::Item: Copy,
+{
+    #[inline]
+    fn spec_from(slice: &'a [A::Item]) -> SmallVec<A> {
+        SmallVec::from_slice(slice)
+    }
+}
+
+impl<'a, A: Array> From<&'a [A::Item]> for SmallVec<A>
+where
+    A::Item: Clone,
+{
+    #[cfg(not(feature = "specialization"))]
+    #[inline]
+    fn from(slice: &'a [A::Item]) -> SmallVec<A> {
+        slice.iter().cloned().collect()
+    }
+
+    #[cfg(feature = "specialization")]
+    #[inline]
+    fn from(slice: &'a [A::Item]) -> SmallVec<A> {
+        SmallVec::spec_from(slice)
+    }
+}
+
+impl<A: Array> From<Vec<A::Item>> for SmallVec<A> {
+    #[inline]
+    fn from(vec: Vec<A::Item>) -> SmallVec<A> {
+        SmallVec::from_vec(vec)
+    }
+}
+
+impl<A: Array> From<A> for SmallVec<A> {
+    #[inline]
+    fn from(array: A) -> SmallVec<A> {
+        SmallVec::from_buf(array)
+    }
+}
+
+impl<A: Array, I: SliceIndex<[A::Item]>> ops::Index<I> for SmallVec<A> {
+    type Output = I::Output;
+
+    fn index(&self, index: I) -> &I::Output {
+        &(**self)[index]
+    }
+}
+
+impl<A: Array, I: SliceIndex<[A::Item]>> ops::IndexMut<I> for SmallVec<A> {
+    fn index_mut(&mut self, index: I) -> &mut I::Output {
+        &mut (&mut **self)[index]
+    }
+}
+
+#[allow(deprecated)]
+impl<A: Array> ExtendFromSlice<A::Item> for SmallVec<A>
+where
+    A::Item: Copy,
+{
+    fn extend_from_slice(&mut self, other: &[A::Item]) {
+        SmallVec::extend_from_slice(self, other)
+    }
+}
+
+impl<A: Array> FromIterator<A::Item> for SmallVec<A> {
+    #[inline]
+    fn from_iter<I: IntoIterator<Item = A::Item>>(iterable: I) -> SmallVec<A> {
+        let mut v = SmallVec::new();
+        v.extend(iterable);
+        v
+    }
+}
+
+impl<A: Array> Extend<A::Item> for SmallVec<A> {
+    fn extend<I: IntoIterator<Item = A::Item>>(&mut self, iterable: I) {
+        let mut iter = iterable.into_iter();
+        let (lower_size_bound, _) = iter.size_hint();
+        self.reserve(lower_size_bound);
+
+        unsafe {
+            let (ptr, len_ptr, cap) = self.triple_mut();
+            let ptr = ptr.as_ptr();
+            let mut len = SetLenOnDrop::new(len_ptr);
+            while len.get() < cap {
+                if let Some(out) = iter.next() {
+                    ptr::write(ptr.add(len.get()), out);
+                    len.increment_len(1);
+                } else {
+                    return;
+                }
+            }
+        }
+
+        for elem in iter {
+            self.push(elem);
+        }
+    }
+}
+
+impl<A: Array> fmt::Debug for SmallVec<A>
+where
+    A::Item: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_list().entries(self.iter()).finish()
+    }
+}
+
+impl<A: Array> Default for SmallVec<A> {
+    #[inline]
+    fn default() -> SmallVec<A> {
+        SmallVec::new()
+    }
+}
+
+#[cfg(feature = "may_dangle")]
+unsafe impl<#[may_dangle] A: Array> Drop for SmallVec<A> {
+    fn drop(&mut self) {
+        unsafe {
+            if self.spilled() {
+                let (ptr, &mut len) = self.data.heap_mut();
+                Vec::from_raw_parts(ptr.as_ptr(), len, self.capacity);
+            } else {
+                ptr::drop_in_place(&mut self[..]);
+            }
+        }
+    }
+}
+
+#[cfg(not(feature = "may_dangle"))]
+impl<A: Array> Drop for SmallVec<A> {
+    fn drop(&mut self) {
+        unsafe {
+            if self.spilled() {
+                let (ptr, &mut len) = self.data.heap_mut();
+                drop(Vec::from_raw_parts(ptr.as_ptr(), len, self.capacity));
+            } else {
+                ptr::drop_in_place(&mut self[..]);
+            }
+        }
+    }
+}
+
+impl<A: Array> Clone for SmallVec<A>
+where
+    A::Item: Clone,
+{
+    #[inline]
+    fn clone(&self) -> SmallVec<A> {
+        SmallVec::from(self.as_slice())
+    }
+
+    fn clone_from(&mut self, source: &Self) {
+        // Inspired from `impl Clone for Vec`.
+
+        // drop anything that will not be overwritten
+        self.truncate(source.len());
+
+        // self.len <= other.len due to the truncate above, so the
+        // slices here are always in-bounds.
+        let (init, tail) = source.split_at(self.len());
+
+        // reuse the contained values' allocations/resources.
+        self.clone_from_slice(init);
+        self.extend(tail.iter().cloned());
+    }
+}
+
+impl<A: Array, B: Array> PartialEq<SmallVec<B>> for SmallVec<A>
+where
+    A::Item: PartialEq<B::Item>,
+{
+    #[inline]
+    fn eq(&self, other: &SmallVec<B>) -> bool {
+        self[..] == other[..]
+    }
+}
+
+impl<A: Array> Eq for SmallVec<A> where A::Item: Eq {}
+
+impl<A: Array> PartialOrd for SmallVec<A>
+where
+    A::Item: PartialOrd,
+{
+    #[inline]
+    fn partial_cmp(&self, other: &SmallVec<A>) -> Option<cmp::Ordering> {
+        PartialOrd::partial_cmp(&**self, &**other)
+    }
+}
+
+impl<A: Array> Ord for SmallVec<A>
+where
+    A::Item: Ord,
+{
+    #[inline]
+    fn cmp(&self, other: &SmallVec<A>) -> cmp::Ordering {
+        Ord::cmp(&**self, &**other)
+    }
+}
+
+impl<A: Array> Hash for SmallVec<A>
+where
+    A::Item: Hash,
+{
+    fn hash<H: Hasher>(&self, state: &mut H) {
+        (**self).hash(state)
+    }
+}
+
+unsafe impl<A: Array> Send for SmallVec<A> where A::Item: Send {}
+
+/// An iterator that consumes a `SmallVec` and yields its items by value.
+///
+/// Returned from [`SmallVec::into_iter`][1].
+///
+/// [1]: struct.SmallVec.html#method.into_iter
+pub struct IntoIter<A: Array> {
+    data: SmallVec<A>,
+    current: usize,
+    end: usize,
+}
+
+impl<A: Array> fmt::Debug for IntoIter<A>
+where
+    A::Item: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_tuple("IntoIter").field(&self.as_slice()).finish()
+    }
+}
+
+impl<A: Array + Clone> Clone for IntoIter<A>
+where
+    A::Item: Clone,
+{
+    fn clone(&self) -> IntoIter<A> {
+        SmallVec::from(self.as_slice()).into_iter()
+    }
+}
+
+impl<A: Array> Drop for IntoIter<A> {
+    fn drop(&mut self) {
+        for _ in self {}
+    }
+}
+
+impl<A: Array> Iterator for IntoIter<A> {
+    type Item = A::Item;
+
+    #[inline]
+    fn next(&mut self) -> Option<A::Item> {
+        if self.current == self.end {
+            None
+        } else {
+            unsafe {
+                let current = self.current;
+                self.current += 1;
+                Some(ptr::read(self.data.as_ptr().add(current)))
+            }
+        }
+    }
+
+    #[inline]
+    fn size_hint(&self) -> (usize, Option<usize>) {
+        let size = self.end - self.current;
+        (size, Some(size))
+    }
+}
+
+impl<A: Array> DoubleEndedIterator for IntoIter<A> {
+    #[inline]
+    fn next_back(&mut self) -> Option<A::Item> {
+        if self.current == self.end {
+            None
+        } else {
+            unsafe {
+                self.end -= 1;
+                Some(ptr::read(self.data.as_ptr().add(self.end)))
+            }
+        }
+    }
+}
+
+impl<A: Array> ExactSizeIterator for IntoIter<A> {}
+impl<A: Array> FusedIterator for IntoIter<A> {}
+
+impl<A: Array> IntoIter<A> {
+    /// Returns the remaining items of this iterator as a slice.
+    pub fn as_slice(&self) -> &[A::Item] {
+        let len = self.end - self.current;
+        unsafe { core::slice::from_raw_parts(self.data.as_ptr().add(self.current), len) }
+    }
+
+    /// Returns the remaining items of this iterator as a mutable slice.
+    pub fn as_mut_slice(&mut self) -> &mut [A::Item] {
+        let len = self.end - self.current;
+        unsafe { core::slice::from_raw_parts_mut(self.data.as_mut_ptr().add(self.current), len) }
+    }
+}
+
+impl<A: Array> IntoIterator for SmallVec<A> {
+    type IntoIter = IntoIter<A>;
+    type Item = A::Item;
+    fn into_iter(mut self) -> Self::IntoIter {
+        unsafe {
+            // Set SmallVec len to zero as `IntoIter` drop handles dropping of the elements
+            let len = self.len();
+            self.set_len(0);
+            IntoIter {
+                data: self,
+                current: 0,
+                end: len,
+            }
+        }
+    }
+}
+
+impl<'a, A: Array> IntoIterator for &'a SmallVec<A> {
+    type IntoIter = slice::Iter<'a, A::Item>;
+    type Item = &'a A::Item;
+    fn into_iter(self) -> Self::IntoIter {
+        self.iter()
+    }
+}
+
+impl<'a, A: Array> IntoIterator for &'a mut SmallVec<A> {
+    type IntoIter = slice::IterMut<'a, A::Item>;
+    type Item = &'a mut A::Item;
+    fn into_iter(self) -> Self::IntoIter {
+        self.iter_mut()
+    }
+}
+
+/// Types that can be used as the backing store for a [`SmallVec`].
+pub unsafe trait Array {
+    /// The type of the array's elements.
+    type Item;
+    /// Returns the number of items the array can hold.
+    fn size() -> usize;
+}
+
+/// Set the length of the vec when the `SetLenOnDrop` value goes out of scope.
+///
+/// Copied from <https://github.com/rust-lang/rust/pull/36355>
+struct SetLenOnDrop<'a> {
+    len: &'a mut usize,
+    local_len: usize,
+}
+
+impl<'a> SetLenOnDrop<'a> {
+    #[inline]
+    fn new(len: &'a mut usize) -> Self {
+        SetLenOnDrop {
+            local_len: *len,
+            len,
+        }
+    }
+
+    #[inline]
+    fn get(&self) -> usize {
+        self.local_len
+    }
+
+    #[inline]
+    fn increment_len(&mut self, increment: usize) {
+        self.local_len += increment;
+    }
+}
+
+impl<'a> Drop for SetLenOnDrop<'a> {
+    #[inline]
+    fn drop(&mut self) {
+        *self.len = self.local_len;
+    }
+}
+
+#[cfg(feature = "const_new")]
+impl<T, const N: usize> SmallVec<[T; N]> {
+    /// Construct an empty vector.
+    ///
+    /// This is a `const` version of [`SmallVec::new`] that is enabled by the feature `const_new`, with the limitation that it only works for arrays.
+    #[cfg_attr(docsrs, doc(cfg(feature = "const_new")))]
+    #[inline]
+    pub const fn new_const() -> Self {
+        SmallVec {
+            capacity: 0,
+            data: SmallVecData::from_const(MaybeUninit::uninit()),
+        }
+    }
+
+    /// The array passed as an argument is moved to be an inline version of `SmallVec`.
+    ///
+    /// This is a `const` version of [`SmallVec::from_buf`] that is enabled by the feature `const_new`, with the limitation that it only works for arrays.
+    #[cfg_attr(docsrs, doc(cfg(feature = "const_new")))]
+    #[inline]
+    pub const fn from_const(items: [T; N]) -> Self {
+        SmallVec {
+            capacity: N,
+            data: SmallVecData::from_const(MaybeUninit::new(items)),
+        }
+    }
+
+    /// Constructs a new `SmallVec` on the stack from an array without
+    /// copying elements. Also sets the length. The user is responsible
+    /// for ensuring that `len <= N`.
+    /// 
+    /// This is a `const` version of [`SmallVec::from_buf_and_len_unchecked`] that is enabled by the feature `const_new`, with the limitation that it only works for arrays.
+    #[cfg_attr(docsrs, doc(cfg(feature = "const_new")))]
+    #[inline]
+    pub const unsafe fn from_const_with_len_unchecked(items: [T; N], len: usize) -> Self {
+        SmallVec {
+            capacity: len,
+            data: SmallVecData::from_const(MaybeUninit::new(items)),
+        }
+    }
+}
+
+#[cfg(feature = "const_generics")]
+#[cfg_attr(docsrs, doc(cfg(feature = "const_generics")))]
+unsafe impl<T, const N: usize> Array for [T; N] {
+    type Item = T;
+    #[inline]
+    fn size() -> usize {
+        N
+    }
+}
+
+#[cfg(not(feature = "const_generics"))]
+macro_rules! impl_array(
+    ($($size:expr),+) => {
+        $(
+            unsafe impl<T> Array for [T; $size] {
+                type Item = T;
+                #[inline]
+                fn size() -> usize { $size }
+            }
+        )+
+    }
+);
+
+#[cfg(not(feature = "const_generics"))]
+impl_array!(
+    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+    26, 27, 28, 29, 30, 31, 32, 36, 0x40, 0x60, 0x80, 0x100, 0x200, 0x400, 0x600, 0x800, 0x1000,
+    0x2000, 0x4000, 0x6000, 0x8000, 0x10000, 0x20000, 0x40000, 0x60000, 0x80000, 0x10_0000
+);
+
+/// Convenience trait for constructing a `SmallVec`
+pub trait ToSmallVec<A: Array> {
+    /// Construct a new `SmallVec` from a slice.
+    fn to_smallvec(&self) -> SmallVec<A>;
+}
+
+impl<A: Array> ToSmallVec<A> for [A::Item]
+where
+    A::Item: Copy,
+{
+    #[inline]
+    fn to_smallvec(&self) -> SmallVec<A> {
+        SmallVec::from_slice(self)
+    }
+}
+
+// Immutable counterpart for `NonNull<T>`.
+#[repr(transparent)]
+struct ConstNonNull<T>(NonNull<T>);
+
+impl<T> ConstNonNull<T> {
+    #[inline]
+    fn new(ptr: *const T) -> Option<Self> {
+        NonNull::new(ptr as *mut T).map(Self)
+    }
+    #[inline]
+    fn as_ptr(self) -> *const T {
+        self.0.as_ptr()
+    }
+}
+
+impl<T> Clone for ConstNonNull<T> {
+    #[inline]
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+
+impl<T> Copy for ConstNonNull<T> {}
+
+#[cfg(feature = "impl_bincode")]
+use bincode::{
+    de::{BorrowDecoder, Decode, Decoder, read::Reader},
+    enc::{Encode, Encoder, write::Writer},
+    error::{DecodeError, EncodeError},
+    BorrowDecode,
+};
+
+#[cfg(feature = "impl_bincode")]
+impl<A, Context> Decode<Context> for SmallVec<A>
+where
+    A: Array,
+    A::Item: Decode<Context>,
+{
+    fn decode<D: Decoder<Context = Context>>(decoder: &mut D) -> Result<Self, DecodeError> {
+        use core::convert::TryInto;
+        let len = u64::decode(decoder)?;
+        let len = len.try_into().map_err(|_| DecodeError::OutsideUsizeRange(len))?;
+        decoder.claim_container_read::<A::Item>(len)?;
+
+        let mut vec = SmallVec::with_capacity(len);
+        if unty::type_equal::<A::Item, u8>() {
+            // Initialize the smallvec's buffer.  Note that we need to do this through
+            // the raw pointer as we cannot name the type [u8; N] even though A::Item is u8.
+            let ptr = vec.as_mut_ptr();
+            // SAFETY: A::Item is u8 and the smallvec has been allocated with enough capacity
+            unsafe {
+                core::ptr::write_bytes(ptr, 0, len);
+                vec.set_len(len);
+            }
+            // Read the data into the smallvec's buffer.
+            let slice = vec.as_mut_slice();
+            // SAFETY: A::Item is u8
+            let slice = unsafe { core::mem::transmute::<&mut [A::Item], &mut [u8]>(slice) };
+            decoder.reader().read(slice)?;
+        } else {
+            for _ in 0..len {
+                decoder.unclaim_bytes_read(core::mem::size_of::<A::Item>());
+                vec.push(A::Item::decode(decoder)?);
+            }
+        }
+        Ok(vec)
+    }
+}
+
+#[cfg(feature = "impl_bincode")]
+impl<'de, A, Context> BorrowDecode<'de, Context> for SmallVec<A>
+where
+    A: Array,
+    A::Item: BorrowDecode<'de, Context>,
+{
+    fn borrow_decode<D: BorrowDecoder<'de, Context = Context>>(decoder: &mut D) -> Result<Self, DecodeError> {
+        use core::convert::TryInto;
+        let len = u64::decode(decoder)?;
+        let len = len.try_into().map_err(|_| DecodeError::OutsideUsizeRange(len))?;
+        decoder.claim_container_read::<A::Item>(len)?;
+
+        let mut vec = SmallVec::with_capacity(len);
+        if unty::type_equal::<A::Item, u8>() {
+            // Initialize the smallvec's buffer.  Note that we need to do this through
+            // the raw pointer as we cannot name the type [u8; N] even though A::Item is u8.
+            let ptr = vec.as_mut_ptr();
+            // SAFETY: A::Item is u8 and the smallvec has been allocated with enough capacity
+            unsafe {
+                core::ptr::write_bytes(ptr, 0, len);
+                vec.set_len(len);
+            }
+            // Read the data into the smallvec's buffer.
+            let slice = vec.as_mut_slice();
+            // SAFETY: A::Item is u8
+            let slice = unsafe { core::mem::transmute::<&mut [A::Item], &mut [u8]>(slice) };
+            decoder.reader().read(slice)?;
+        } else {
+            for _ in 0..len {
+                decoder.unclaim_bytes_read(core::mem::size_of::<A::Item>());
+                vec.push(A::Item::borrow_decode(decoder)?);
+            }
+        }
+        Ok(vec)
+    }
+}
+
+#[cfg(feature = "impl_bincode")]
+impl<A> Encode for SmallVec<A>
+where
+    A: Array,
+    A::Item: Encode,
+{
+    fn encode<E: Encoder>(&self, encoder: &mut E) -> Result<(), EncodeError> {
+        (self.len() as u64).encode(encoder)?;
+        if unty::type_equal::<A::Item, u8>() {
+            // Safety: A::Item is u8
+            let slice: &[u8] = unsafe { core::mem::transmute(self.as_slice()) };
+            encoder.writer().write(slice)?;
+        } else {
+            for item in self.iter() {
+                item.encode(encoder)?;
+            }
+        }
+        Ok(())
+    }
+}
diff --git a/vendor/smallvec/src/specialization.rs b/vendor/smallvec/src/specialization.rs
new file mode 100644
index 00000000..658fa77a
--- /dev/null
+++ b/vendor/smallvec/src/specialization.rs
@@ -0,0 +1,19 @@
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Implementations that require `default fn`.
+
+use super::{Array, SmallVec, SpecFrom};
+
+impl<'a, A: Array> SpecFrom<A, &'a [A::Item]> for SmallVec<A>
+where
+    A::Item: Clone,
+{
+    #[inline]
+    default fn spec_from(slice: &'a [A::Item]) -> SmallVec<A> {
+        slice.into_iter().cloned().collect()
+    }
+}
diff --git a/vendor/smallvec/src/tests.rs b/vendor/smallvec/src/tests.rs
new file mode 100644
index 00000000..88c5f32b
--- /dev/null
+++ b/vendor/smallvec/src/tests.rs
@@ -0,0 +1,1136 @@
+use crate::{smallvec, SmallVec};
+
+use std::iter::FromIterator;
+
+use alloc::borrow::ToOwned;
+use alloc::boxed::Box;
+use alloc::rc::Rc;
+use alloc::{vec, vec::Vec};
+
+#[test]
+pub fn test_zero() {
+    let mut v = SmallVec::<[_; 0]>::new();
+    assert!(!v.spilled());
+    v.push(0usize);
+    assert!(v.spilled());
+    assert_eq!(&*v, &[0]);
+}
+
+// We heap allocate all these strings so that double frees will show up under valgrind.
+
+#[test]
+pub fn test_inline() {
+    let mut v = SmallVec::<[_; 16]>::new();
+    v.push("hello".to_owned());
+    v.push("there".to_owned());
+    assert_eq!(&*v, &["hello".to_owned(), "there".to_owned(),][..]);
+}
+
+#[test]
+pub fn test_spill() {
+    let mut v = SmallVec::<[_; 2]>::new();
+    v.push("hello".to_owned());
+    assert_eq!(v[0], "hello");
+    v.push("there".to_owned());
+    v.push("burma".to_owned());
+    assert_eq!(v[0], "hello");
+    v.push("shave".to_owned());
+    assert_eq!(
+        &*v,
+        &[
+            "hello".to_owned(),
+            "there".to_owned(),
+            "burma".to_owned(),
+            "shave".to_owned(),
+        ][..]
+    );
+}
+
+#[test]
+pub fn test_double_spill() {
+    let mut v = SmallVec::<[_; 2]>::new();
+    v.push("hello".to_owned());
+    v.push("there".to_owned());
+    v.push("burma".to_owned());
+    v.push("shave".to_owned());
+    v.push("hello".to_owned());
+    v.push("there".to_owned());
+    v.push("burma".to_owned());
+    v.push("shave".to_owned());
+    assert_eq!(
+        &*v,
+        &[
+            "hello".to_owned(),
+            "there".to_owned(),
+            "burma".to_owned(),
+            "shave".to_owned(),
+            "hello".to_owned(),
+            "there".to_owned(),
+            "burma".to_owned(),
+            "shave".to_owned(),
+        ][..]
+    );
+}
+
+// https://github.com/servo/rust-smallvec/issues/4
+#[test]
+fn issue_4() {
+    SmallVec::<[Box<u32>; 2]>::new();
+}
+
+// https://github.com/servo/rust-smallvec/issues/5
+#[test]
+fn issue_5() {
+    assert!(Some(SmallVec::<[&u32; 2]>::new()).is_some());
+}
+
+#[test]
+fn test_with_capacity() {
+    let v: SmallVec<[u8; 3]> = SmallVec::with_capacity(1);
+    assert!(v.is_empty());
+    assert!(!v.spilled());
+    assert_eq!(v.capacity(), 3);
+
+    let v: SmallVec<[u8; 3]> = SmallVec::with_capacity(10);
+    assert!(v.is_empty());
+    assert!(v.spilled());
+    assert_eq!(v.capacity(), 10);
+}
+
+#[test]
+fn drain() {
+    let mut v: SmallVec<[u8; 2]> = SmallVec::new();
+    v.push(3);
+    assert_eq!(v.drain(..).collect::<Vec<_>>(), &[3]);
+
+    // spilling the vec
+    v.push(3);
+    v.push(4);
+    v.push(5);
+    let old_capacity = v.capacity();
+    assert_eq!(v.drain(1..).collect::<Vec<_>>(), &[4, 5]);
+    // drain should not change the capacity
+    assert_eq!(v.capacity(), old_capacity);
+
+    // Exercise the tail-shifting code when in the inline state
+    // This has the potential to produce UB due to aliasing
+    let mut v: SmallVec<[u8; 2]> = SmallVec::new();
+    v.push(1);
+    v.push(2);
+    assert_eq!(v.drain(..1).collect::<Vec<_>>(), &[1]);
+}
+
+#[test]
+fn drain_rev() {
+    let mut v: SmallVec<[u8; 2]> = SmallVec::new();
+    v.push(3);
+    assert_eq!(v.drain(..).rev().collect::<Vec<_>>(), &[3]);
+
+    // spilling the vec
+    v.push(3);
+    v.push(4);
+    v.push(5);
+    assert_eq!(v.drain(..).rev().collect::<Vec<_>>(), &[5, 4, 3]);
+}
+
+#[test]
+fn drain_forget() {
+    let mut v: SmallVec<[u8; 1]> = smallvec![0, 1, 2, 3, 4, 5, 6, 7];
+    std::mem::forget(v.drain(2..5));
+    assert_eq!(v.len(), 2);
+}
+
+#[test]
+fn into_iter() {
+    let mut v: SmallVec<[u8; 2]> = SmallVec::new();
+    v.push(3);
+    assert_eq!(v.into_iter().collect::<Vec<_>>(), &[3]);
+
+    // spilling the vec
+    let mut v: SmallVec<[u8; 2]> = SmallVec::new();
+    v.push(3);
+    v.push(4);
+    v.push(5);
+    assert_eq!(v.into_iter().collect::<Vec<_>>(), &[3, 4, 5]);
+}
+
+#[test]
+fn into_iter_rev() {
+    let mut v: SmallVec<[u8; 2]> = SmallVec::new();
+    v.push(3);
+    assert_eq!(v.into_iter().rev().collect::<Vec<_>>(), &[3]);
+
+    // spilling the vec
+    let mut v: SmallVec<[u8; 2]> = SmallVec::new();
+    v.push(3);
+    v.push(4);
+    v.push(5);
+    assert_eq!(v.into_iter().rev().collect::<Vec<_>>(), &[5, 4, 3]);
+}
+
+#[test]
+fn into_iter_drop() {
+    use std::cell::Cell;
+
+    struct DropCounter<'a>(&'a Cell<i32>);
+
+    impl<'a> Drop for DropCounter<'a> {
+        fn drop(&mut self) {
+            self.0.set(self.0.get() + 1);
+        }
+    }
+
+    {
+        let cell = Cell::new(0);
+        let mut v: SmallVec<[DropCounter<'_>; 2]> = SmallVec::new();
+        v.push(DropCounter(&cell));
+        v.into_iter();
+        assert_eq!(cell.get(), 1);
+    }
+
+    {
+        let cell = Cell::new(0);
+        let mut v: SmallVec<[DropCounter<'_>; 2]> = SmallVec::new();
+        v.push(DropCounter(&cell));
+        v.push(DropCounter(&cell));
+        assert!(v.into_iter().next().is_some());
+        assert_eq!(cell.get(), 2);
+    }
+
+    {
+        let cell = Cell::new(0);
+        let mut v: SmallVec<[DropCounter<'_>; 2]> = SmallVec::new();
+        v.push(DropCounter(&cell));
+        v.push(DropCounter(&cell));
+        v.push(DropCounter(&cell));
+        assert!(v.into_iter().next().is_some());
+        assert_eq!(cell.get(), 3);
+    }
+    {
+        let cell = Cell::new(0);
+        let mut v: SmallVec<[DropCounter<'_>; 2]> = SmallVec::new();
+        v.push(DropCounter(&cell));
+        v.push(DropCounter(&cell));
+        v.push(DropCounter(&cell));
+        {
+            let mut it = v.into_iter();
+            assert!(it.next().is_some());
+            assert!(it.next_back().is_some());
+        }
+        assert_eq!(cell.get(), 3);
+    }
+}
+
+#[test]
+fn test_capacity() {
+    let mut v: SmallVec<[u8; 2]> = SmallVec::new();
+    v.reserve(1);
+    assert_eq!(v.capacity(), 2);
+    assert!(!v.spilled());
+
+    v.reserve_exact(0x100);
+    assert!(v.capacity() >= 0x100);
+
+    v.push(0);
+    v.push(1);
+    v.push(2);
+    v.push(3);
+
+    v.shrink_to_fit();
+    assert!(v.capacity() < 0x100);
+}
+
+#[test]
+fn test_truncate() {
+    let mut v: SmallVec<[Box<u8>; 8]> = SmallVec::new();
+
+    for x in 0..8 {
+        v.push(Box::new(x));
+    }
+    v.truncate(4);
+
+    assert_eq!(v.len(), 4);
+    assert!(!v.spilled());
+
+    assert_eq!(*v.swap_remove(1), 1);
+    assert_eq!(*v.remove(1), 3);
+    v.insert(1, Box::new(3));
+
+    assert_eq!(&v.iter().map(|v| **v).collect::<Vec<_>>(), &[0, 3, 2]);
+}
+
+#[test]
+fn test_insert_many() {
+    let mut v: SmallVec<[u8; 8]> = SmallVec::new();
+    for x in 0..4 {
+        v.push(x);
+    }
+    assert_eq!(v.len(), 4);
+    v.insert_many(1, [5, 6].iter().cloned());
+    assert_eq!(
+        &v.iter().map(|v| *v).collect::<Vec<_>>(),
+        &[0, 5, 6, 1, 2, 3]
+    );
+}
+
+struct MockHintIter<T: Iterator> {
+    x: T,
+    hint: usize,
+}
+impl<T: Iterator> Iterator for MockHintIter<T> {
+    type Item = T::Item;
+    fn next(&mut self) -> Option<Self::Item> {
+        self.x.next()
+    }
+    fn size_hint(&self) -> (usize, Option<usize>) {
+        (self.hint, None)
+    }
+}
+
+#[test]
+fn test_insert_many_short_hint() {
+    let mut v: SmallVec<[u8; 8]> = SmallVec::new();
+    for x in 0..4 {
+        v.push(x);
+    }
+    assert_eq!(v.len(), 4);
+    v.insert_many(
+        1,
+        MockHintIter {
+            x: [5, 6].iter().cloned(),
+            hint: 5,
+        },
+    );
+    assert_eq!(
+        &v.iter().map(|v| *v).collect::<Vec<_>>(),
+        &[0, 5, 6, 1, 2, 3]
+    );
+}
+
+#[test]
+fn test_insert_many_long_hint() {
+    let mut v: SmallVec<[u8; 8]> = SmallVec::new();
+    for x in 0..4 {
+        v.push(x);
+    }
+    assert_eq!(v.len(), 4);
+    v.insert_many(
+        1,
+        MockHintIter {
+            x: [5, 6].iter().cloned(),
+            hint: 1,
+        },
+    );
+    assert_eq!(
+        &v.iter().map(|v| *v).collect::<Vec<_>>(),
+        &[0, 5, 6, 1, 2, 3]
+    );
+}
+
+// https://github.com/servo/rust-smallvec/issues/96
+mod insert_many_panic {
+    use crate::{smallvec, SmallVec};
+    use alloc::boxed::Box;
+
+    struct PanicOnDoubleDrop {
+        dropped: Box<bool>,
+    }
+
+    impl PanicOnDoubleDrop {
+        fn new() -> Self {
+            Self {
+                dropped: Box::new(false),
+            }
+        }
+    }
+
+    impl Drop for PanicOnDoubleDrop {
+        fn drop(&mut self) {
+            assert!(!*self.dropped, "already dropped");
+            *self.dropped = true;
+        }
+    }
+
+    /// Claims to yield `hint` items, but actually yields `count`, then panics.
+    struct BadIter {
+        hint: usize,
+        count: usize,
+    }
+
+    impl Iterator for BadIter {
+        type Item = PanicOnDoubleDrop;
+        fn size_hint(&self) -> (usize, Option<usize>) {
+            (self.hint, None)
+        }
+        fn next(&mut self) -> Option<Self::Item> {
+            if self.count == 0 {
+                panic!()
+            }
+            self.count -= 1;
+            Some(PanicOnDoubleDrop::new())
+        }
+    }
+
+    #[test]
+    fn panic_early_at_start() {
+        let mut vec: SmallVec<[PanicOnDoubleDrop; 0]> =
+            smallvec![PanicOnDoubleDrop::new(), PanicOnDoubleDrop::new(),];
+        let result = ::std::panic::catch_unwind(move || {
+            vec.insert_many(0, BadIter { hint: 1, count: 0 });
+        });
+        assert!(result.is_err());
+    }
+
+    #[test]
+    fn panic_early_in_middle() {
+        let mut vec: SmallVec<[PanicOnDoubleDrop; 0]> =
+            smallvec![PanicOnDoubleDrop::new(), PanicOnDoubleDrop::new(),];
+        let result = ::std::panic::catch_unwind(move || {
+            vec.insert_many(1, BadIter { hint: 4, count: 2 });
+        });
+        assert!(result.is_err());
+    }
+
+    #[test]
+    fn panic_early_at_end() {
+        let mut vec: SmallVec<[PanicOnDoubleDrop; 0]> =
+            smallvec![PanicOnDoubleDrop::new(), PanicOnDoubleDrop::new(),];
+        let result = ::std::panic::catch_unwind(move || {
+            vec.insert_many(2, BadIter { hint: 3, count: 1 });
+        });
+        assert!(result.is_err());
+    }
+
+    #[test]
+    fn panic_late_at_start() {
+        let mut vec: SmallVec<[PanicOnDoubleDrop; 0]> =
+            smallvec![PanicOnDoubleDrop::new(), PanicOnDoubleDrop::new(),];
+        let result = ::std::panic::catch_unwind(move || {
+            vec.insert_many(0, BadIter { hint: 3, count: 5 });
+        });
+        assert!(result.is_err());
+    }
+
+    #[test]
+    fn panic_late_at_end() {
+        let mut vec: SmallVec<[PanicOnDoubleDrop; 0]> =
+            smallvec![PanicOnDoubleDrop::new(), PanicOnDoubleDrop::new(),];
+        let result = ::std::panic::catch_unwind(move || {
+            vec.insert_many(2, BadIter { hint: 3, count: 5 });
+        });
+        assert!(result.is_err());
+    }
+}
+
+#[test]
+#[should_panic]
+fn test_invalid_grow() {
+    let mut v: SmallVec<[u8; 8]> = SmallVec::new();
+    v.extend(0..8);
+    v.grow(5);
+}
+
+#[test]
+#[should_panic]
+fn drain_overflow() {
+    let mut v: SmallVec<[u8; 8]> = smallvec![0];
+    v.drain(..=std::usize::MAX);
+}
+
+#[test]
+fn test_insert_from_slice() {
+    let mut v: SmallVec<[u8; 8]> = SmallVec::new();
+    for x in 0..4 {
+        v.push(x);
+    }
+    assert_eq!(v.len(), 4);
+    v.insert_from_slice(1, &[5, 6]);
+    assert_eq!(
+        &v.iter().map(|v| *v).collect::<Vec<_>>(),
+        &[0, 5, 6, 1, 2, 3]
+    );
+}
+
+#[test]
+fn test_extend_from_slice() {
+    let mut v: SmallVec<[u8; 8]> = SmallVec::new();
+    for x in 0..4 {
+        v.push(x);
+    }
+    assert_eq!(v.len(), 4);
+    v.extend_from_slice(&[5, 6]);
+    assert_eq!(
+        &v.iter().map(|v| *v).collect::<Vec<_>>(),
+        &[0, 1, 2, 3, 5, 6]
+    );
+}
+
+#[test]
+#[should_panic]
+fn test_drop_panic_smallvec() {
+    // This test should only panic once, and not double panic,
+    // which would mean a double drop
+    struct DropPanic;
+
+    impl Drop for DropPanic {
+        fn drop(&mut self) {
+            panic!("drop");
+        }
+    }
+
+    let mut v = SmallVec::<[_; 1]>::new();
+    v.push(DropPanic);
+}
+
+#[test]
+fn test_eq() {
+    let mut a: SmallVec<[u32; 2]> = SmallVec::new();
+    let mut b: SmallVec<[u32; 2]> = SmallVec::new();
+    let mut c: SmallVec<[u32; 2]> = SmallVec::new();
+    // a = [1, 2]
+    a.push(1);
+    a.push(2);
+    // b = [1, 2]
+    b.push(1);
+    b.push(2);
+    // c = [3, 4]
+    c.push(3);
+    c.push(4);
+
+    assert!(a == b);
+    assert!(a != c);
+}
+
+#[test]
+fn test_ord() {
+    let mut a: SmallVec<[u32; 2]> = SmallVec::new();
+    let mut b: SmallVec<[u32; 2]> = SmallVec::new();
+    let mut c: SmallVec<[u32; 2]> = SmallVec::new();
+    // a = [1]
+    a.push(1);
+    // b = [1, 1]
+    b.push(1);
+    b.push(1);
+    // c = [1, 2]
+    c.push(1);
+    c.push(2);
+
+    assert!(a < b);
+    assert!(b > a);
+    assert!(b < c);
+    assert!(c > b);
+}
+
+#[test]
+fn test_hash() {
+    use std::collections::hash_map::DefaultHasher;
+    use std::hash::Hash;
+
+    {
+        let mut a: SmallVec<[u32; 2]> = SmallVec::new();
+        let b = [1, 2];
+        a.extend(b.iter().cloned());
+        let mut hasher = DefaultHasher::new();
+        assert_eq!(a.hash(&mut hasher), b.hash(&mut hasher));
+    }
+    {
+        let mut a: SmallVec<[u32; 2]> = SmallVec::new();
+        let b = [1, 2, 11, 12];
+        a.extend(b.iter().cloned());
+        let mut hasher = DefaultHasher::new();
+        assert_eq!(a.hash(&mut hasher), b.hash(&mut hasher));
+    }
+}
+
+#[test]
+fn test_as_ref() {
+    let mut a: SmallVec<[u32; 2]> = SmallVec::new();
+    a.push(1);
+    assert_eq!(a.as_ref(), [1]);
+    a.push(2);
+    assert_eq!(a.as_ref(), [1, 2]);
+    a.push(3);
+    assert_eq!(a.as_ref(), [1, 2, 3]);
+}
+
+#[test]
+fn test_as_mut() {
+    let mut a: SmallVec<[u32; 2]> = SmallVec::new();
+    a.push(1);
+    assert_eq!(a.as_mut(), [1]);
+    a.push(2);
+    assert_eq!(a.as_mut(), [1, 2]);
+    a.push(3);
+    assert_eq!(a.as_mut(), [1, 2, 3]);
+    a.as_mut()[1] = 4;
+    assert_eq!(a.as_mut(), [1, 4, 3]);
+}
+
+#[test]
+fn test_borrow() {
+    use std::borrow::Borrow;
+
+    let mut a: SmallVec<[u32; 2]> = SmallVec::new();
+    a.push(1);
+    assert_eq!(a.borrow(), [1]);
+    a.push(2);
+    assert_eq!(a.borrow(), [1, 2]);
+    a.push(3);
+    assert_eq!(a.borrow(), [1, 2, 3]);
+}
+
+#[test]
+fn test_borrow_mut() {
+    use std::borrow::BorrowMut;
+
+    let mut a: SmallVec<[u32; 2]> = SmallVec::new();
+    a.push(1);
+    assert_eq!(a.borrow_mut(), [1]);
+    a.push(2);
+    assert_eq!(a.borrow_mut(), [1, 2]);
+    a.push(3);
+    assert_eq!(a.borrow_mut(), [1, 2, 3]);
+    BorrowMut::<[u32]>::borrow_mut(&mut a)[1] = 4;
+    assert_eq!(a.borrow_mut(), [1, 4, 3]);
+}
+
+#[test]
+fn test_from() {
+    assert_eq!(&SmallVec::<[u32; 2]>::from(&[1][..])[..], [1]);
+    assert_eq!(&SmallVec::<[u32; 2]>::from(&[1, 2, 3][..])[..], [1, 2, 3]);
+
+    let vec = vec![];
+    let small_vec: SmallVec<[u8; 3]> = SmallVec::from(vec);
+    assert_eq!(&*small_vec, &[]);
+    drop(small_vec);
+
+    let vec = vec![1, 2, 3, 4, 5];
+    let small_vec: SmallVec<[u8; 3]> = SmallVec::from(vec);
+    assert_eq!(&*small_vec, &[1, 2, 3, 4, 5]);
+    drop(small_vec);
+
+    let vec = vec![1, 2, 3, 4, 5];
+    let small_vec: SmallVec<[u8; 1]> = SmallVec::from(vec);
+    assert_eq!(&*small_vec, &[1, 2, 3, 4, 5]);
+    drop(small_vec);
+
+    let array = [1];
+    let small_vec: SmallVec<[u8; 1]> = SmallVec::from(array);
+    assert_eq!(&*small_vec, &[1]);
+    drop(small_vec);
+
+    let array = [99; 128];
+    let small_vec: SmallVec<[u8; 128]> = SmallVec::from(array);
+    assert_eq!(&*small_vec, vec![99u8; 128].as_slice());
+    drop(small_vec);
+}
+
+#[test]
+fn test_from_slice() {
+    assert_eq!(&SmallVec::<[u32; 2]>::from_slice(&[1][..])[..], [1]);
+    assert_eq!(
+        &SmallVec::<[u32; 2]>::from_slice(&[1, 2, 3][..])[..],
+        [1, 2, 3]
+    );
+}
+
+#[test]
+fn test_exact_size_iterator() {
+    let mut vec = SmallVec::<[u32; 2]>::from(&[1, 2, 3][..]);
+    assert_eq!(vec.clone().into_iter().len(), 3);
+    assert_eq!(vec.drain(..2).len(), 2);
+    assert_eq!(vec.into_iter().len(), 1);
+}
+
+#[test]
+fn test_into_iter_as_slice() {
+    let vec = SmallVec::<[u32; 2]>::from(&[1, 2, 3][..]);
+    let mut iter = vec.clone().into_iter();
+    assert_eq!(iter.as_slice(), &[1, 2, 3]);
+    assert_eq!(iter.as_mut_slice(), &[1, 2, 3]);
+    iter.next();
+    assert_eq!(iter.as_slice(), &[2, 3]);
+    assert_eq!(iter.as_mut_slice(), &[2, 3]);
+    iter.next_back();
+    assert_eq!(iter.as_slice(), &[2]);
+    assert_eq!(iter.as_mut_slice(), &[2]);
+}
+
+#[test]
+fn test_into_iter_clone() {
+    // Test that the cloned iterator yields identical elements and that it owns its own copy
+    // (i.e. no use after move errors).
+    let mut iter = SmallVec::<[u8; 2]>::from_iter(0..3).into_iter();
+    let mut clone_iter = iter.clone();
+    while let Some(x) = iter.next() {
+        assert_eq!(x, clone_iter.next().unwrap());
+    }
+    assert_eq!(clone_iter.next(), None);
+}
+
+#[test]
+fn test_into_iter_clone_partially_consumed_iterator() {
+    // Test that the cloned iterator only contains the remaining elements of the original iterator.
+    let mut iter = SmallVec::<[u8; 2]>::from_iter(0..3).into_iter().skip(1);
+    let mut clone_iter = iter.clone();
+    while let Some(x) = iter.next() {
+        assert_eq!(x, clone_iter.next().unwrap());
+    }
+    assert_eq!(clone_iter.next(), None);
+}
+
+#[test]
+fn test_into_iter_clone_empty_smallvec() {
+    let mut iter = SmallVec::<[u8; 2]>::new().into_iter();
+    let mut clone_iter = iter.clone();
+    assert_eq!(iter.next(), None);
+    assert_eq!(clone_iter.next(), None);
+}
+
+#[test]
+fn shrink_to_fit_unspill() {
+    let mut vec = SmallVec::<[u8; 2]>::from_iter(0..3);
+    vec.pop();
+    assert!(vec.spilled());
+    vec.shrink_to_fit();
+    assert!(!vec.spilled(), "shrink_to_fit will un-spill if possible");
+}
+
+#[test]
+fn test_into_vec() {
+    let vec = SmallVec::<[u8; 2]>::from_iter(0..2);
+    assert_eq!(vec.into_vec(), vec![0, 1]);
+
+    let vec = SmallVec::<[u8; 2]>::from_iter(0..3);
+    assert_eq!(vec.into_vec(), vec![0, 1, 2]);
+}
+
+#[test]
+fn test_into_inner() {
+    let vec = SmallVec::<[u8; 2]>::from_iter(0..2);
+    assert_eq!(vec.into_inner(), Ok([0, 1]));
+
+    let vec = SmallVec::<[u8; 2]>::from_iter(0..1);
+    assert_eq!(vec.clone().into_inner(), Err(vec));
+
+    let vec = SmallVec::<[u8; 2]>::from_iter(0..3);
+    assert_eq!(vec.clone().into_inner(), Err(vec));
+}
+
+#[test]
+fn test_from_vec() {
+    let vec = vec![];
+    let small_vec: SmallVec<[u8; 3]> = SmallVec::from_vec(vec);
+    assert_eq!(&*small_vec, &[]);
+    drop(small_vec);
+
+    let vec = vec![];
+    let small_vec: SmallVec<[u8; 1]> = SmallVec::from_vec(vec);
+    assert_eq!(&*small_vec, &[]);
+    drop(small_vec);
+
+    let vec = vec![1];
+    let small_vec: SmallVec<[u8; 3]> = SmallVec::from_vec(vec);
+    assert_eq!(&*small_vec, &[1]);
+    drop(small_vec);
+
+    let vec = vec![1, 2, 3];
+    let small_vec: SmallVec<[u8; 3]> = SmallVec::from_vec(vec);
+    assert_eq!(&*small_vec, &[1, 2, 3]);
+    drop(small_vec);
+
+    let vec = vec![1, 2, 3, 4, 5];
+    let small_vec: SmallVec<[u8; 3]> = SmallVec::from_vec(vec);
+    assert_eq!(&*small_vec, &[1, 2, 3, 4, 5]);
+    drop(small_vec);
+
+    let vec = vec![1, 2, 3, 4, 5];
+    let small_vec: SmallVec<[u8; 1]> = SmallVec::from_vec(vec);
+    assert_eq!(&*small_vec, &[1, 2, 3, 4, 5]);
+    drop(small_vec);
+}
+
+#[test]
+fn test_retain() {
+    // Test inline data storage
+    let mut sv: SmallVec<[i32; 5]> = SmallVec::from_slice(&[1, 2, 3, 3, 4]);
+    sv.retain(|&mut i| i != 3);
+    assert_eq!(sv.pop(), Some(4));
+    assert_eq!(sv.pop(), Some(2));
+    assert_eq!(sv.pop(), Some(1));
+    assert_eq!(sv.pop(), None);
+
+    // Test spilled data storage
+    let mut sv: SmallVec<[i32; 3]> = SmallVec::from_slice(&[1, 2, 3, 3, 4]);
+    sv.retain(|&mut i| i != 3);
+    assert_eq!(sv.pop(), Some(4));
+    assert_eq!(sv.pop(), Some(2));
+    assert_eq!(sv.pop(), Some(1));
+    assert_eq!(sv.pop(), None);
+
+    // Test that drop implementations are called for inline.
+    let one = Rc::new(1);
+    let mut sv: SmallVec<[Rc<i32>; 3]> = SmallVec::new();
+    sv.push(Rc::clone(&one));
+    assert_eq!(Rc::strong_count(&one), 2);
+    sv.retain(|_| false);
+    assert_eq!(Rc::strong_count(&one), 1);
+
+    // Test that drop implementations are called for spilled data.
+    let mut sv: SmallVec<[Rc<i32>; 1]> = SmallVec::new();
+    sv.push(Rc::clone(&one));
+    sv.push(Rc::new(2));
+    assert_eq!(Rc::strong_count(&one), 2);
+    sv.retain(|_| false);
+    assert_eq!(Rc::strong_count(&one), 1);
+}
+
+#[test]
+fn test_dedup() {
+    let mut dupes: SmallVec<[i32; 5]> = SmallVec::from_slice(&[1, 1, 2, 3, 3]);
+    dupes.dedup();
+    assert_eq!(&*dupes, &[1, 2, 3]);
+
+    let mut empty: SmallVec<[i32; 5]> = SmallVec::new();
+    empty.dedup();
+    assert!(empty.is_empty());
+
+    let mut all_ones: SmallVec<[i32; 5]> = SmallVec::from_slice(&[1, 1, 1, 1, 1]);
+    all_ones.dedup();
+    assert_eq!(all_ones.len(), 1);
+
+    let mut no_dupes: SmallVec<[i32; 5]> = SmallVec::from_slice(&[1, 2, 3, 4, 5]);
+    no_dupes.dedup();
+    assert_eq!(no_dupes.len(), 5);
+}
+
+#[test]
+fn test_resize() {
+    let mut v: SmallVec<[i32; 8]> = SmallVec::new();
+    v.push(1);
+    v.resize(5, 0);
+    assert_eq!(v[..], [1, 0, 0, 0, 0][..]);
+
+    v.resize(2, -1);
+    assert_eq!(v[..], [1, 0][..]);
+}
+
+#[cfg(feature = "write")]
+#[test]
+fn test_write() {
+    use std::io::Write;
+
+    let data = [1, 2, 3, 4, 5];
+
+    let mut small_vec: SmallVec<[u8; 2]> = SmallVec::new();
+    let len = small_vec.write(&data[..]).unwrap();
+    assert_eq!(len, 5);
+    assert_eq!(small_vec.as_ref(), data.as_ref());
+
+    let mut small_vec: SmallVec<[u8; 2]> = SmallVec::new();
+    small_vec.write_all(&data[..]).unwrap();
+    assert_eq!(small_vec.as_ref(), data.as_ref());
+}
+
+#[cfg(feature = "serde")]
+#[test]
+fn test_serde() {
+    use bincode1::{config, deserialize};
+    let mut small_vec: SmallVec<[i32; 2]> = SmallVec::new();
+    small_vec.push(1);
+    let encoded = config().limit(100).serialize(&small_vec).unwrap();
+    let decoded: SmallVec<[i32; 2]> = deserialize(&encoded).unwrap();
+    assert_eq!(small_vec, decoded);
+    small_vec.push(2);
+    // Spill the vec
+    small_vec.push(3);
+    small_vec.push(4);
+    // Check again after spilling.
+    let encoded = config().limit(100).serialize(&small_vec).unwrap();
+    let decoded: SmallVec<[i32; 2]> = deserialize(&encoded).unwrap();
+    assert_eq!(small_vec, decoded);
+}
+
+#[test]
+fn grow_to_shrink() {
+    let mut v: SmallVec<[u8; 2]> = SmallVec::new();
+    v.push(1);
+    v.push(2);
+    v.push(3);
+    assert!(v.spilled());
+    v.clear();
+    // Shrink to inline.
+    v.grow(2);
+    assert!(!v.spilled());
+    assert_eq!(v.capacity(), 2);
+    assert_eq!(v.len(), 0);
+    v.push(4);
+    assert_eq!(v[..], [4]);
+}
+
+#[test]
+fn resumable_extend() {
+    let s = "a b c";
+    // This iterator yields: (Some('a'), None, Some('b'), None, Some('c')), None
+    let it = s
+        .chars()
+        .scan(0, |_, ch| if ch.is_whitespace() { None } else { Some(ch) });
+    let mut v: SmallVec<[char; 4]> = SmallVec::new();
+    v.extend(it);
+    assert_eq!(v[..], ['a']);
+}
+
+// #139
+#[test]
+fn uninhabited() {
+    enum Void {}
+    let _sv = SmallVec::<[Void; 8]>::new();
+}
+
+#[test]
+fn grow_spilled_same_size() {
+    let mut v: SmallVec<[u8; 2]> = SmallVec::new();
+    v.push(0);
+    v.push(1);
+    v.push(2);
+    assert!(v.spilled());
+    assert_eq!(v.capacity(), 4);
+    // grow with the same capacity
+    v.grow(4);
+    assert_eq!(v.capacity(), 4);
+    assert_eq!(v[..], [0, 1, 2]);
+}
+
+#[cfg(feature = "const_generics")]
+#[test]
+fn const_generics() {
+    let _v = SmallVec::<[i32; 987]>::default();
+}
+
+#[cfg(feature = "const_new")]
+#[test]
+fn const_new() {
+    let v = const_new_inner();
+    assert_eq!(v.capacity(), 4);
+    assert_eq!(v.len(), 0);
+    let v = const_new_inline_sized();
+    assert_eq!(v.capacity(), 4);
+    assert_eq!(v.len(), 4);
+    assert_eq!(v[0], 1);
+    let v = const_new_inline_args();
+    assert_eq!(v.capacity(), 2);
+    assert_eq!(v.len(), 2);
+    assert_eq!(v[0], 1);
+    assert_eq!(v[1], 4);
+    let v = const_new_with_len();
+    assert_eq!(v.capacity(), 4);
+    assert_eq!(v.len(), 3);
+    assert_eq!(v[0], 2);
+    assert_eq!(v[1], 5);
+    assert_eq!(v[2], 7);
+}
+#[cfg(feature = "const_new")]
+const fn const_new_inner() -> SmallVec<[i32; 4]> {
+    SmallVec::<[i32; 4]>::new_const()
+}
+#[cfg(feature = "const_new")]
+const fn const_new_inline_sized() -> SmallVec<[i32; 4]> {
+    crate::smallvec_inline![1; 4]
+}
+#[cfg(feature = "const_new")]
+const fn const_new_inline_args() -> SmallVec<[i32; 2]> {
+    crate::smallvec_inline![1, 4]
+}
+#[cfg(feature = "const_new")]
+const fn const_new_with_len() -> SmallVec<[i32; 4]> {
+    unsafe {
+        SmallVec::<[i32; 4]>::from_const_with_len_unchecked([2, 5, 7, 0], 3)
+    }
+}
+
+#[test]
+fn empty_macro() {
+    let _v: SmallVec<[u8; 1]> = smallvec![];
+}
+
+#[test]
+fn zero_size_items() {
+    SmallVec::<[(); 0]>::new().push(());
+}
+
+#[test]
+fn test_insert_many_overflow() {
+    let mut v: SmallVec<[u8; 1]> = SmallVec::new();
+    v.push(123);
+
+    // Prepare an iterator with small lower bound
+    let iter = (0u8..5).filter(|n| n % 2 == 0);
+    assert_eq!(iter.size_hint().0, 0);
+
+    v.insert_many(0, iter);
+    assert_eq!(&*v, &[0, 2, 4, 123]);
+}
+
+#[test]
+fn test_clone_from() {
+    let mut a: SmallVec<[u8; 2]> = SmallVec::new();
+    a.push(1);
+    a.push(2);
+    a.push(3);
+
+    let mut b: SmallVec<[u8; 2]> = SmallVec::new();
+    b.push(10);
+
+    let mut c: SmallVec<[u8; 2]> = SmallVec::new();
+    c.push(20);
+    c.push(21);
+    c.push(22);
+
+    a.clone_from(&b);
+    assert_eq!(&*a, &[10]);
+
+    b.clone_from(&c);
+    assert_eq!(&*b, &[20, 21, 22]);
+}
+
+#[test]
+fn test_size() {
+    use core::mem::size_of;
+    const PTR_SIZE: usize = size_of::<usize>();
+    #[cfg(feature = "union")]
+    {
+        assert_eq!(3 * PTR_SIZE, size_of::<SmallVec<[u8; 0]>>());
+        assert_eq!(3 * PTR_SIZE, size_of::<SmallVec<[u8; 1]>>());
+        assert_eq!(3 * PTR_SIZE, size_of::<SmallVec<[u8; PTR_SIZE]>>());
+        assert_eq!(3 * PTR_SIZE, size_of::<SmallVec<[u8; PTR_SIZE + 1]>>());
+        assert_eq!(3 * PTR_SIZE, size_of::<SmallVec<[u8; 2 * PTR_SIZE]>>());
+        assert_eq!(4 * PTR_SIZE, size_of::<SmallVec<[u8; 2 * PTR_SIZE + 1]>>());
+    }
+    #[cfg(not(feature = "union"))]
+    {
+        assert_eq!(3 * PTR_SIZE, size_of::<SmallVec<[u8; 0]>>());
+        assert_eq!(3 * PTR_SIZE, size_of::<SmallVec<[u8; 1]>>());
+        assert_eq!(3 * PTR_SIZE, size_of::<SmallVec<[u8; PTR_SIZE]>>());
+        assert_eq!(4 * PTR_SIZE, size_of::<SmallVec<[u8; PTR_SIZE + 1]>>());
+    }
+}
+
+#[cfg(feature = "drain_filter")]
+#[test]
+fn drain_filter() {
+    let mut a: SmallVec<[u8; 2]> = smallvec![1u8, 2, 3, 4, 5, 6, 7, 8];
+
+    let b: SmallVec<[u8; 2]> = a.drain_filter(|x| *x % 3 == 0).collect();
+
+    assert_eq!(a, SmallVec::<[u8; 2]>::from_slice(&[1u8, 2, 4, 5, 7, 8]));
+    assert_eq!(b, SmallVec::<[u8; 2]>::from_slice(&[3u8, 6]));
+}
+
+#[cfg(feature = "drain_keep_rest")]
+#[test]
+fn drain_keep_rest() {
+    let mut a: SmallVec<[i32; 3]> = smallvec![1i32, 2, 3, 4, 5, 6, 7, 8];
+    let mut df = a.drain_filter(|x| *x % 2 == 0);
+
+    assert_eq!(df.next().unwrap(), 2);
+    assert_eq!(df.next().unwrap(), 4);
+
+    df.keep_rest();
+
+    assert_eq!(a, SmallVec::<[i32; 3]>::from_slice(&[1i32, 3, 5, 6, 7, 8]));
+}
+
+/// This assortment of tests, in combination with miri, verifies we handle UB on fishy arguments
+/// given to SmallVec. Draining and extending the allocation are fairly well-tested earlier, but
+/// `smallvec.insert(usize::MAX, val)` once slipped by!
+///
+/// All code that indexes into SmallVecs should be tested with such "trivially wrong" args.
+#[test]
+fn max_dont_panic() {
+    let mut sv: SmallVec<[i32; 2]> = smallvec![0];
+    let _ = sv.get(usize::MAX);
+    sv.truncate(usize::MAX);
+}
+
+#[test]
+#[should_panic]
+fn max_remove() {
+    let mut sv: SmallVec<[i32; 2]> = smallvec![0];
+    sv.remove(usize::MAX);
+}
+
+#[test]
+#[should_panic]
+fn max_swap_remove() {
+    let mut sv: SmallVec<[i32; 2]> = smallvec![0];
+    sv.swap_remove(usize::MAX);
+}
+
+#[test]
+#[should_panic]
+fn test_insert_out_of_bounds() {
+    let mut v: SmallVec<[i32; 4]> = SmallVec::new();
+    v.insert(10, 6);
+}
+
+#[cfg(feature = "impl_bincode")]
+#[test]
+fn test_bincode() {
+    let config = bincode::config::standard();
+    let mut small_vec: SmallVec<[i32; 2]> = SmallVec::new();
+    let mut buffer = [0u8; 128];
+    small_vec.push(1);
+    let bytes_written = bincode::encode_into_slice(&small_vec, &mut buffer, config).unwrap();
+    let (decoded, bytes_read) =
+        bincode::decode_from_slice::<SmallVec<[i32; 2]>, _>(&buffer, config).unwrap();
+    assert_eq!(bytes_written, bytes_read);
+    assert_eq!(small_vec, decoded);
+    let (decoded, bytes_read) =
+        bincode::borrow_decode_from_slice::<SmallVec<[i32; 2]>, _>(&buffer, config).unwrap();
+    assert_eq!(bytes_written, bytes_read);
+    assert_eq!(small_vec, decoded);
+    // Spill the vec
+    small_vec.push(2);
+    small_vec.push(3);
+    small_vec.push(4);
+    // Check again after spilling.
+    let bytes_written = bincode::encode_into_slice(&small_vec, &mut buffer, config).unwrap();
+    let (decoded, bytes_read) =
+        bincode::decode_from_slice::<SmallVec<[i32; 2]>, _>(&buffer, config).unwrap();
+    assert_eq!(bytes_written, bytes_read);
+    assert_eq!(small_vec, decoded);
+    let (decoded, bytes_read) =
+        bincode::borrow_decode_from_slice::<SmallVec<[i32; 2]>, _>(&buffer, config).unwrap();
+    assert_eq!(bytes_written, bytes_read);
+    assert_eq!(small_vec, decoded);
+}
+
+#[cfg(feature = "impl_bincode")]
+#[test]
+fn test_bincode_u8() {
+    let config = bincode::config::standard();
+    let mut small_vec: SmallVec<[u8; 16]> = SmallVec::new();
+    let mut buffer = [0u8; 128];
+    small_vec.extend_from_slice(b"testing test");
+    let bytes_written = bincode::encode_into_slice(&small_vec, &mut buffer, config).unwrap();
+    let (decoded, bytes_read) =
+        bincode::decode_from_slice::<SmallVec<[u8; 16]>, _>(&buffer, config).unwrap();
+    assert_eq!(bytes_written, bytes_read);
+    assert_eq!(small_vec, decoded);
+    let (decoded, bytes_read) =
+        bincode::borrow_decode_from_slice::<SmallVec<[u8; 16]>, _>(&buffer, config).unwrap();
+    assert_eq!(bytes_written, bytes_read);
+    assert_eq!(small_vec, decoded);
+    // Spill the vec
+    small_vec.extend_from_slice(b"some more testing");
+    // Check again after spilling.
+    let bytes_written = bincode::encode_into_slice(&small_vec, &mut buffer, config).unwrap();
+    let (decoded, bytes_read) =
+        bincode::decode_from_slice::<SmallVec<[u8; 16]>, _>(&buffer, config).unwrap();
+    assert_eq!(bytes_written, bytes_read);
+    assert_eq!(small_vec, decoded);
+    let (decoded, bytes_read) =
+        bincode::borrow_decode_from_slice::<SmallVec<[u8; 16]>, _>(&buffer, config).unwrap();
+    assert_eq!(bytes_written, bytes_read);
+    assert_eq!(small_vec, decoded);
+}
diff --git a/vendor/smallvec/tests/debugger_visualizer.rs b/vendor/smallvec/tests/debugger_visualizer.rs
new file mode 100644
index 00000000..b39aa9d9
--- /dev/null
+++ b/vendor/smallvec/tests/debugger_visualizer.rs
@@ -0,0 +1,68 @@
+use debugger_test::debugger_test;
+use smallvec::{smallvec, SmallVec};
+
+#[inline(never)]
+fn __break() {}
+
+#[debugger_test(
+    debugger = "cdb",
+    commands = r#"
+.nvlist
+dx sv
+
+g
+
+dx sv
+
+g
+
+dx sv
+"#,
+    expected_statements = r#"
+sv               : { len=0x2 is_inline=true } [Type: smallvec::SmallVec<array$<i32,4> >]
+    [<Raw View>]     [Type: smallvec::SmallVec<array$<i32,4> >]
+    [capacity]       : 4
+    [len]            : 0x2 [Type: unsigned __int64]
+    [0]              : 1 [Type: int]
+    [1]              : 2 [Type: int]
+
+sv               : { len=0x5 is_inline=false } [Type: smallvec::SmallVec<array$<i32,4> >]
+    [<Raw View>]     [Type: smallvec::SmallVec<array$<i32,4> >]
+    [capacity]       : 0x8 [Type: unsigned __int64]
+    [len]            : 0x5 [Type: unsigned __int64]
+    [0]              : 5 [Type: int]
+    [1]              : 2 [Type: int]
+    [2]              : 3 [Type: int]
+    [3]              : 4 [Type: int]
+    [4]              : 5 [Type: int]
+
+sv               : { len=0x5 is_inline=false } [Type: smallvec::SmallVec<array$<i32,4> >]
+    [<Raw View>]     [Type: smallvec::SmallVec<array$<i32,4> >]
+    [capacity]       : 0x8 [Type: unsigned __int64]
+    [len]            : 0x5 [Type: unsigned __int64]
+    [0]              : 2 [Type: int]
+    [1]              : 3 [Type: int]
+    [2]              : 4 [Type: int]
+    [3]              : 5 [Type: int]
+    [4]              : 5 [Type: int]
+"#
+)]
+#[inline(never)]
+fn test_debugger_visualizer() {
+    // This SmallVec can hold up to 4 items on the stack:
+    let mut sv: SmallVec<[i32; 4]> = smallvec![1, 2];
+    __break();
+
+    // Overfill the SmallVec to move its contents to the heap
+    for i in 3..6 {
+        sv.push(i);
+    }
+
+    // Update the contents of the first value of the SmallVec.
+    sv[0] = sv[1] + sv[2];
+    __break();
+
+    // Sort the SmallVec in place.
+    sv.sort();
+    __break();
+}
diff --git a/vendor/smallvec/tests/macro.rs b/vendor/smallvec/tests/macro.rs
new file mode 100644
index 00000000..fa52e79b
--- /dev/null
+++ b/vendor/smallvec/tests/macro.rs
@@ -0,0 +1,24 @@
+/// This file tests `smallvec!` without actually having the macro in scope.
+/// This forces any recursion to use a `$crate` prefix to reliably find itself.
+
+#[test]
+fn smallvec() {
+    let mut vec: smallvec::SmallVec<[i32; 2]>;
+
+    macro_rules! check {
+        ($init:tt) => {
+            vec = smallvec::smallvec! $init;
+            assert_eq!(*vec, *vec! $init);
+        }
+    }
+
+    check!([0; 0]);
+    check!([1; 1]);
+    check!([2; 2]);
+    check!([3; 3]);
+
+    check!([]);
+    check!([1]);
+    check!([1, 2]);
+    check!([1, 2, 3]);
+}
diff --git a/vendor/stable_deref_trait/.cargo-checksum.json b/vendor/stable_deref_trait/.cargo-checksum.json
new file mode 100644
index 00000000..4070feb6
--- /dev/null
+++ b/vendor/stable_deref_trait/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"5a8352eba01791ecee28b37cfe1324fa48db52e35023b23a4f07ca84267abfd6","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5e05b024f653a5ce199e77cbbbd42fb5553562ec714b819421ed0c3e552a75d7","README.md":"750fc2d57412de57566289e567b5674a666cc7a8a054f8c7129b8553f9003de7","src/lib.rs":"c68d43e0ec2727653cc2d37c396c8e60c9ed315b71aab331da8177b129887591"},"package":"a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"}
\ No newline at end of file
diff --git a/vendor/stable_deref_trait/Cargo.toml b/vendor/stable_deref_trait/Cargo.toml
new file mode 100644
index 00000000..6bc26c3d
--- /dev/null
+++ b/vendor/stable_deref_trait/Cargo.toml
@@ -0,0 +1,27 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies
+#
+# If you believe there's an error in this file please file an
+# issue against the rust-lang/cargo repository. If you're
+# editing this file be aware that the upstream Cargo.toml
+# will likely look very different (and much more reasonable)
+
+[package]
+name = "stable_deref_trait"
+version = "1.2.0"
+authors = ["Robert Grosse <n210241048576@gmail.com>"]
+description = "An unsafe marker trait for types like Box and Rc that dereference to a stable address even when moved, and hence can be used with libraries such as owning_ref and rental.\n"
+documentation = "https://docs.rs/stable_deref_trait/1.2.0/stable_deref_trait"
+readme = "README.md"
+categories = ["memory-management", "no-std"]
+license = "MIT/Apache-2.0"
+repository = "https://github.com/storyyeller/stable_deref_trait"
+
+[features]
+alloc = []
+default = ["std"]
+std = ["alloc"]
diff --git a/vendor/stable_deref_trait/LICENSE-APACHE b/vendor/stable_deref_trait/LICENSE-APACHE
new file mode 100644
index 00000000..16fe87b0
--- /dev/null
+++ b/vendor/stable_deref_trait/LICENSE-APACHE
@@ -0,0 +1,201 @@
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+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.
diff --git a/vendor/stable_deref_trait/LICENSE-MIT b/vendor/stable_deref_trait/LICENSE-MIT
new file mode 100644
index 00000000..3bf61a09
--- /dev/null
+++ b/vendor/stable_deref_trait/LICENSE-MIT
@@ -0,0 +1,25 @@
+Copyright (c) 2017 Robert Grosse
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/vendor/stable_deref_trait/README.md b/vendor/stable_deref_trait/README.md
new file mode 100644
index 00000000..24fd4b09
--- /dev/null
+++ b/vendor/stable_deref_trait/README.md
@@ -0,0 +1,23 @@
+This crate defines an unsafe marker trait, StableDeref, for container types which deref to a fixed address which is valid even when the containing type is moved. For example, Box, Vec, Rc, Arc and String implement this trait. Additionally, it defines CloneStableDeref for types like Rc where clones deref to the same address.
+
+It is intended to be used by crates such as [owning_ref](https://crates.io/crates/owning_ref) and [rental](https://crates.io/crates/rental), as well as library authors who wish to make their code interoperable with such crates. For example, if you write a custom Vec type, you can implement StableDeref, and then users will be able to use your custom Vec type together with owning_ref and rental.
+
+no_std support can be enabled by disabling default features (specifically "std"). In this case, the trait will not be implemented for the std types mentioned above, but you can still use it for your own types.
+
+Enable the "alloc" feature (with default-features disabled) to have this trait be implemented for the above types from the built-in `alloc` crate, specifically
+* `alloc::boxed::Box`
+* `alloc::vec::Vec`
+* `alloc::rc::Rc`
+* `alloc::arc::Arc`
+* `alloc::string::String`
+
+For example, this crate can be built with alloc support via the following command:
+`cargo build --no-default-features --features alloc`
+
+Or added as a `Cargo.toml` dependency as follows:
+```
+[dependencies.stable_deref_trait]
+version = "<version>"
+default-features = false
+features = [ "alloc" ]
+```
diff --git a/vendor/stable_deref_trait/src/lib.rs b/vendor/stable_deref_trait/src/lib.rs
new file mode 100644
index 00000000..069f6cc2
--- /dev/null
+++ b/vendor/stable_deref_trait/src/lib.rs
@@ -0,0 +1,189 @@
+// Copyright 2017 Robert Grosse
+
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+/*!
+This module defines an unsafe marker trait, StableDeref, for container types that deref to a fixed address which is valid even when the containing type is moved. For example, Box, Vec, Rc, Arc and String implement this trait. Additionally, it defines CloneStableDeref for types like Rc where clones deref to the same address.
+
+It is intended to be used by crates such as [owning_ref](https://crates.io/crates/owning_ref) and [rental](https://crates.io/crates/rental), as well as library authors who wish to make their code interoperable with such crates. For example, if you write a custom Vec type, you can implement StableDeref, and then users will be able to use your custom type together with owning_ref and rental.
+
+no_std support can be enabled by disabling default features (specifically "std"). In this case, the trait will not be implemented for the std types mentioned above, but you can still use it for your own types.
+*/
+
+#![cfg_attr(not(feature = "std"), no_std)]
+
+#[cfg(feature = "std")]
+extern crate core;
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+use core::ops::Deref;
+
+
+/**
+An unsafe marker trait for types that deref to a stable address, even when moved. For example, this is implemented by Box, Vec, Rc, Arc and String, among others. Even when a Box is moved, the underlying storage remains at a fixed location.
+
+More specifically, implementors must ensure that the result of calling deref() is valid for the lifetime of the object, not just the lifetime of the borrow, and that the deref is valid even if the object is moved. Also, it must be valid even after invoking arbitrary &self methods or doing anything transitively accessible from &Self. If Self also implements DerefMut, the same restrictions apply to deref_mut() and it must remain valid if anything transitively accessible from the result of deref_mut() is mutated/called. Additionally, multiple calls to deref, (and deref_mut if implemented) must return the same address. No requirements are placed on &mut self methods other than deref_mut() and drop(), if applicable.
+
+Basically, it must be valid to convert the result of deref() to a pointer, and later dereference that pointer, as long as the original object is still live, even if it has been moved or &self methods have been called on it. If DerefMut is also implemented, it must be valid to get pointers from deref() and deref_mut() and dereference them while the object is live, as long as you don't simultaneously dereference both of them.
+
+Additionally, Deref and DerefMut implementations must not panic, but users of the trait are not allowed to rely on this fact (so that this restriction can be removed later without breaking backwards compatibility, should the need arise).
+
+Here are some examples to help illustrate the requirements for implementing this trait:
+
+```
+# use std::ops::Deref;
+struct Foo(u8);
+impl Deref for Foo {
+    type Target = u8;
+    fn deref(&self) -> &Self::Target { &self.0 }
+}
+```
+
+Foo cannot implement StableDeref because the int will move when Foo is moved, invalidating the result of deref().
+
+```
+# use std::ops::Deref;
+struct Foo(Box<u8>);
+impl Deref for Foo {
+    type Target = u8;
+    fn deref(&self) -> &Self::Target { &*self.0 }
+}
+```
+
+Foo can safely implement StableDeref, due to the use of Box.
+
+
+```
+# use std::ops::Deref;
+# use std::ops::DerefMut;
+# use std::rc::Rc;
+#[derive(Clone)]
+struct Foo(Rc<u8>);
+impl Deref for Foo {
+    type Target = u8;
+    fn deref(&self) -> &Self::Target { &*self.0 }
+}
+impl DerefMut for Foo {
+    fn deref_mut(&mut self) -> &mut Self::Target { Rc::make_mut(&mut self.0) }
+}
+```
+
+This is a simple implementation of copy-on-write: Foo's deref_mut will copy the underlying int if it is not uniquely owned, ensuring unique access at the point where deref_mut() returns. However, Foo cannot implement StableDeref because calling deref_mut(), followed by clone().deref() will result in mutable and immutable references to the same location. Note that if the DerefMut implementation were removed, Foo could safely implement StableDeref. Likewise, if the Clone implementation were removed, it would be safe to implement StableDeref, although Foo would not be very useful in that case, (without clones, the rc will always be uniquely owned).
+
+
+```
+# use std::ops::Deref;
+struct Foo;
+impl Deref for Foo {
+    type Target = str;
+    fn deref(&self) -> &Self::Target { &"Hello" }
+}
+```
+Foo can safely implement StableDeref. It doesn't own the data being derefed, but the data is gaurenteed to live long enough, due to it being 'static.
+
+```
+# use std::ops::Deref;
+# use std::cell::Cell;
+struct Foo(Cell<bool>);
+impl Deref for Foo {
+    type Target = str;
+    fn deref(&self) -> &Self::Target {
+        let b = self.0.get();
+        self.0.set(!b);
+        if b { &"Hello" } else { &"World" }
+    }
+}
+```
+Foo cannot safely implement StableDeref, even though every possible result of deref lives long enough. In order to safely implement StableAddress, multiple calls to deref must return the same result.
+
+```
+# use std::ops::Deref;
+# use std::ops::DerefMut;
+struct Foo(Box<(u8, u8)>);
+impl Deref for Foo {
+    type Target = u8;
+    fn deref(&self) -> &Self::Target { &self.0.deref().0 }
+}
+impl DerefMut for Foo {
+    fn deref_mut(&mut self) -> &mut Self::Target { &mut self.0.deref_mut().1 }
+}
+```
+
+Foo cannot implement StableDeref because deref and deref_mut return different addresses.
+
+
+*/
+pub unsafe trait StableDeref: Deref {}
+
+/**
+An unsafe marker trait for types where clones deref to the same address. This has all the requirements of StableDeref, and additionally requires that after calling clone(), both the old and new value deref to the same address. For example, Rc and Arc implement CloneStableDeref, but Box and Vec do not.
+
+Note that a single type should never implement both DerefMut and CloneStableDeref. If it did, this would let you get two mutable references to the same location, by cloning and then calling deref_mut() on both values.
+*/
+pub unsafe trait CloneStableDeref: StableDeref + Clone {}
+
+/////////////////////////////////////////////////////////////////////////////
+// std types integration
+/////////////////////////////////////////////////////////////////////////////
+
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+#[cfg(feature = "alloc")]
+use alloc::rc::Rc;
+#[cfg(feature = "alloc")]
+use alloc::sync::Arc;
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+#[cfg(feature = "alloc")]
+use alloc::string::String;
+
+#[cfg(feature = "std")]
+use std::ffi::{CString, OsString};
+#[cfg(feature = "std")]
+use std::path::PathBuf;
+#[cfg(feature = "std")]
+use std::sync::{MutexGuard, RwLockReadGuard, RwLockWriteGuard};
+
+use core::cell::{Ref, RefMut};
+
+
+#[cfg(feature = "alloc")]
+unsafe impl<T: ?Sized> StableDeref for Box<T> {}
+#[cfg(feature = "alloc")]
+unsafe impl<T> StableDeref for Vec<T> {}
+#[cfg(feature = "alloc")]
+unsafe impl StableDeref for String {}
+#[cfg(feature = "std")]
+unsafe impl StableDeref for CString {}
+#[cfg(feature = "std")]
+unsafe impl StableDeref for OsString {}
+#[cfg(feature = "std")]
+unsafe impl StableDeref for PathBuf {}
+
+#[cfg(feature = "alloc")]
+unsafe impl<T: ?Sized> StableDeref for Rc<T> {}
+#[cfg(feature = "alloc")]
+unsafe impl<T: ?Sized> CloneStableDeref for Rc<T> {}
+#[cfg(feature = "alloc")]
+unsafe impl<T: ?Sized> StableDeref for Arc<T> {}
+#[cfg(feature = "alloc")]
+unsafe impl<T: ?Sized> CloneStableDeref for Arc<T> {}
+
+unsafe impl<'a, T: ?Sized> StableDeref for Ref<'a, T> {}
+unsafe impl<'a, T: ?Sized> StableDeref for RefMut<'a, T> {}
+#[cfg(feature = "std")]
+unsafe impl<'a, T: ?Sized> StableDeref for MutexGuard<'a, T> {}
+#[cfg(feature = "std")]
+unsafe impl<'a, T: ?Sized> StableDeref for RwLockReadGuard<'a, T> {}
+#[cfg(feature = "std")]
+unsafe impl<'a, T: ?Sized> StableDeref for RwLockWriteGuard<'a, T> {}
+
+unsafe impl<'a, T: ?Sized> StableDeref for &'a T {}
+unsafe impl<'a, T: ?Sized> CloneStableDeref for &'a T {}
+unsafe impl<'a, T: ?Sized> StableDeref for &'a mut T {}
diff --git a/vendor/synstructure/.cargo-checksum.json b/vendor/synstructure/.cargo-checksum.json
new file mode 100644
index 00000000..9e92ada8
--- /dev/null
+++ b/vendor/synstructure/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"a1cc9f5d8a95afc23a3e514e52bc5e2d3f59e30f28c0803eb084e3f2f16dfd3c","LICENSE":"219920e865eee70b7dcfc948a86b099e7f4fe2de01bcca2ca9a20c0a033f2b59","README.md":"d814fda4bf729aa194392480ef0aa0d02f2b6d24cb4a5a421e62c199e1313eae","src/lib.rs":"3b5257f913626d42994c3d7e93a2a7c37aa7b918ac74c52a9bcd013fdfffd631","src/macros.rs":"aeb108a0cc8e536286eef6bf041e21716a04116303ec233920f221e2df7f7d40"},"package":"728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"}
\ No newline at end of file
diff --git a/vendor/synstructure/Cargo.toml b/vendor/synstructure/Cargo.toml
new file mode 100644
index 00000000..095a18e0
--- /dev/null
+++ b/vendor/synstructure/Cargo.toml
@@ -0,0 +1,75 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+name = "synstructure"
+version = "0.13.2"
+authors = ["Nika Layzell <nika@thelayzells.com>"]
+build = false
+include = [
+    "src/**/*",
+    "Cargo.toml",
+    "README.md",
+    "LICENSE",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Helper methods and macros for custom derives"
+documentation = "https://docs.rs/synstructure"
+readme = "README.md"
+keywords = [
+    "syn",
+    "macros",
+    "derive",
+    "expand_substructure",
+    "enum",
+]
+license = "MIT"
+repository = "https://github.com/mystor/synstructure"
+
+[lib]
+name = "synstructure"
+path = "src/lib.rs"
+
+[dependencies.proc-macro2]
+version = "1.0.60"
+default-features = false
+
+[dependencies.quote]
+version = "1"
+default-features = false
+
+[dependencies.syn]
+version = "2"
+features = [
+    "derive",
+    "parsing",
+    "printing",
+    "clone-impls",
+    "visit",
+    "extra-traits",
+]
+default-features = false
+
+[dev-dependencies.synstructure_test_traits]
+version = "0.1"
+
+[features]
+default = ["proc-macro"]
+proc-macro = [
+    "proc-macro2/proc-macro",
+    "syn/proc-macro",
+    "quote/proc-macro",
+]
diff --git a/vendor/tinyvec/LICENSE-MIT.md b/vendor/synstructure/LICENSE
similarity index 97%
rename from vendor/tinyvec/LICENSE-MIT.md
rename to vendor/synstructure/LICENSE
index 1f95d26c..f78f1c15 100644
--- a/vendor/tinyvec/LICENSE-MIT.md
+++ b/vendor/synstructure/LICENSE
@@ -1,3 +1,5 @@
+Copyright 2016 Nika Layzell
+
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
diff --git a/vendor/synstructure/README.md b/vendor/synstructure/README.md
new file mode 100644
index 00000000..c7a6c5fd
--- /dev/null
+++ b/vendor/synstructure/README.md
@@ -0,0 +1,157 @@
+# synstructure
+
+[![Latest Version](https://img.shields.io/crates/v/synstructure.svg)](https://crates.io/crates/synstructure)
+[![Documentation](https://docs.rs/synstructure/badge.svg)](https://docs.rs/synstructure)
+[![Build Status](https://github.com/mystor/synstructure/actions/workflows/ci.yml/badge.svg)](https://github.com/mystor/synstructure/actions)
+[![Rustc Version 1.31+](https://img.shields.io/badge/rustc-1.31+-lightgray.svg)](https://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html)
+
+> NOTE: What follows is an exerpt from the module level documentation. For full
+> details read the docs on [docs.rs](https://docs.rs/synstructure/)
+
+This crate provides helper types for matching against enum variants, and
+extracting bindings to each of the fields in the deriving Struct or Enum in
+a generic way.
+
+If you are writing a `#[derive]` which needs to perform some operation on
+every field, then you have come to the right place!
+
+# Example: `WalkFields`
+### Trait Implementation
+```rust
+pub trait WalkFields: std::any::Any {
+    fn walk_fields(&self, walk: &mut FnMut(&WalkFields));
+}
+impl WalkFields for i32 {
+    fn walk_fields(&self, _walk: &mut FnMut(&WalkFields)) {}
+}
+```
+
+### Custom Derive
+```rust
+#[macro_use]
+extern crate synstructure;
+#[macro_use]
+extern crate quote;
+extern crate proc_macro2;
+
+fn walkfields_derive(s: synstructure::Structure) -> proc_macro2::TokenStream {
+    let body = s.each(|bi| quote!{
+        walk(#bi)
+    });
+
+    s.bound_impl(quote!(example_traits::WalkFields), quote!{
+        fn walk_fields(&self, walk: &mut FnMut(&example_traits::WalkFields)) {
+            match *self { #body }
+        }
+    })
+}
+decl_derive!([WalkFields] => walkfields_derive);
+
+/*
+ * Test Case
+ */
+fn main() {
+    test_derive! {
+        walkfields_derive {
+            enum A<T> {
+                B(i32, T),
+                C(i32),
+            }
+        }
+        expands to {
+            const _: () = {
+                extern crate example_traits;
+                impl<T> example_traits::WalkFields for A<T>
+                    where T: example_traits::WalkFields
+                {
+                    fn walk_fields(&self, walk: &mut FnMut(&example_traits::WalkFields)) {
+                        match *self {
+                            A::B(ref __binding_0, ref __binding_1,) => {
+                                { walk(__binding_0) }
+                                { walk(__binding_1) }
+                            }
+                            A::C(ref __binding_0,) => {
+                                { walk(__binding_0) }
+                            }
+                        }
+                    }
+                }
+            };
+        }
+    }
+}
+```
+
+# Example: `Interest`
+### Trait Implementation
+```rust
+pub trait Interest {
+    fn interesting(&self) -> bool;
+}
+impl Interest for i32 {
+    fn interesting(&self) -> bool { *self > 0 }
+}
+```
+
+### Custom Derive
+```rust
+#[macro_use]
+extern crate synstructure;
+#[macro_use]
+extern crate quote;
+extern crate proc_macro2;
+
+fn interest_derive(mut s: synstructure::Structure) -> proc_macro2::TokenStream {
+    let body = s.fold(false, |acc, bi| quote!{
+        #acc || example_traits::Interest::interesting(#bi)
+    });
+
+    s.bound_impl(quote!(example_traits::Interest), quote!{
+        fn interesting(&self) -> bool {
+            match *self {
+                #body
+            }
+        }
+    })
+}
+decl_derive!([Interest] => interest_derive);
+
+/*
+ * Test Case
+ */
+fn main() {
+    test_derive!{
+        interest_derive {
+            enum A<T> {
+                B(i32, T),
+                C(i32),
+            }
+        }
+        expands to {
+            const _: () = {
+                extern crate example_traits;
+                impl<T> example_traits::Interest for A<T>
+                    where T: example_traits::Interest
+                {
+                    fn interesting(&self) -> bool {
+                        match *self {
+                            A::B(ref __binding_0, ref __binding_1,) => {
+                                false ||
+                                    example_traits::Interest::interesting(__binding_0) ||
+                                    example_traits::Interest::interesting(__binding_1)
+                            }
+                            A::C(ref __binding_0,) => {
+                                false ||
+                                    example_traits::Interest::interesting(__binding_0)
+                            }
+                        }
+                    }
+                }
+            };
+        }
+    }
+}
+```
+
+For more example usage, consider investigating the `abomonation_derive` crate,
+which makes use of this crate, and is fairly simple.
diff --git a/vendor/synstructure/src/lib.rs b/vendor/synstructure/src/lib.rs
new file mode 100644
index 00000000..a1f1c2d3
--- /dev/null
+++ b/vendor/synstructure/src/lib.rs
@@ -0,0 +1,2559 @@
+//! This crate provides helper types for matching against enum variants, and
+//! extracting bindings to each of the fields in the deriving Struct or Enum in
+//! a generic way.
+//!
+//! If you are writing a `#[derive]` which needs to perform some operation on
+//! every field, then you have come to the right place!
+//!
+//! # Example: `WalkFields`
+//! ### Trait Implementation
+//! ```
+//! pub trait WalkFields: std::any::Any {
+//!     fn walk_fields(&self, walk: &mut FnMut(&WalkFields));
+//! }
+//! impl WalkFields for i32 {
+//!     fn walk_fields(&self, _walk: &mut FnMut(&WalkFields)) {}
+//! }
+//! ```
+//!
+//! ### Custom Derive
+//! ```
+//! # use quote::quote;
+//! fn walkfields_derive(s: synstructure::Structure) -> proc_macro2::TokenStream {
+//!     let body = s.each(|bi| quote!{
+//!         walk(#bi)
+//!     });
+//!
+//!     s.gen_impl(quote! {
+//!         extern crate synstructure_test_traits;
+//!
+//!         gen impl synstructure_test_traits::WalkFields for @Self {
+//!             fn walk_fields(&self, walk: &mut FnMut(&synstructure_test_traits::WalkFields)) {
+//!                 match *self { #body }
+//!             }
+//!         }
+//!     })
+//! }
+//! # const _IGNORE: &'static str = stringify!(
+//! synstructure::decl_derive!([WalkFields] => walkfields_derive);
+//! # );
+//!
+//! /*
+//!  * Test Case
+//!  */
+//! fn main() {
+//!     synstructure::test_derive! {
+//!         walkfields_derive {
+//!             enum A<T> {
+//!                 B(i32, T),
+//!                 C(i32),
+//!             }
+//!         }
+//!         expands to {
+//!             const _: () = {
+//!                 extern crate synstructure_test_traits;
+//!                 impl<T> synstructure_test_traits::WalkFields for A<T>
+//!                     where T: synstructure_test_traits::WalkFields
+//!                 {
+//!                     fn walk_fields(&self, walk: &mut FnMut(&synstructure_test_traits::WalkFields)) {
+//!                         match *self {
+//!                             A::B(ref __binding_0, ref __binding_1,) => {
+//!                                 { walk(__binding_0) }
+//!                                 { walk(__binding_1) }
+//!                             }
+//!                             A::C(ref __binding_0,) => {
+//!                                 { walk(__binding_0) }
+//!                             }
+//!                         }
+//!                     }
+//!                 }
+//!             };
+//!         }
+//!     }
+//! }
+//! ```
+//!
+//! # Example: `Interest`
+//! ### Trait Implementation
+//! ```
+//! pub trait Interest {
+//!     fn interesting(&self) -> bool;
+//! }
+//! impl Interest for i32 {
+//!     fn interesting(&self) -> bool { *self > 0 }
+//! }
+//! ```
+//!
+//! ### Custom Derive
+//! ```
+//! # use quote::quote;
+//! fn interest_derive(mut s: synstructure::Structure) -> proc_macro2::TokenStream {
+//!     let body = s.fold(false, |acc, bi| quote!{
+//!         #acc || synstructure_test_traits::Interest::interesting(#bi)
+//!     });
+//!
+//!     s.gen_impl(quote! {
+//!         extern crate synstructure_test_traits;
+//!         gen impl synstructure_test_traits::Interest for @Self {
+//!             fn interesting(&self) -> bool {
+//!                 match *self {
+//!                     #body
+//!                 }
+//!             }
+//!         }
+//!     })
+//! }
+//! # const _IGNORE: &'static str = stringify!(
+//! synstructure::decl_derive!([Interest] => interest_derive);
+//! # );
+//!
+//! /*
+//!  * Test Case
+//!  */
+//! fn main() {
+//!     synstructure::test_derive!{
+//!         interest_derive {
+//!             enum A<T> {
+//!                 B(i32, T),
+//!                 C(i32),
+//!             }
+//!         }
+//!         expands to {
+//!             const _: () = {
+//!                 extern crate synstructure_test_traits;
+//!                 impl<T> synstructure_test_traits::Interest for A<T>
+//!                     where T: synstructure_test_traits::Interest
+//!                 {
+//!                     fn interesting(&self) -> bool {
+//!                         match *self {
+//!                             A::B(ref __binding_0, ref __binding_1,) => {
+//!                                 false ||
+//!                                     synstructure_test_traits::Interest::interesting(__binding_0) ||
+//!                                     synstructure_test_traits::Interest::interesting(__binding_1)
+//!                             }
+//!                             A::C(ref __binding_0,) => {
+//!                                 false ||
+//!                                     synstructure_test_traits::Interest::interesting(__binding_0)
+//!                             }
+//!                         }
+//!                     }
+//!                 }
+//!             };
+//!         }
+//!     }
+//! }
+//! ```
+//!
+//! For more example usage, consider investigating the `abomonation_derive` crate,
+//! which makes use of this crate, and is fairly simple.
+
+#![allow(
+    clippy::default_trait_access,
+    clippy::missing_errors_doc,
+    clippy::missing_panics_doc,
+    clippy::must_use_candidate,
+    clippy::needless_pass_by_value
+)]
+
+#[cfg(all(
+    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
+    feature = "proc-macro"
+))]
+extern crate proc_macro;
+
+use std::collections::HashSet;
+
+use syn::parse::{ParseStream, Parser};
+use syn::spanned::Spanned;
+use syn::visit::{self, Visit};
+use syn::{
+    braced, punctuated, token, Attribute, Data, DeriveInput, Error, Expr, Field, Fields,
+    FieldsNamed, FieldsUnnamed, GenericParam, Generics, Ident, PredicateType, Result, Token,
+    TraitBound, Type, TypeMacro, TypeParamBound, TypePath, WhereClause, WherePredicate,
+};
+
+use quote::{format_ident, quote_spanned, ToTokens};
+// re-export the quote! macro so we can depend on it being around in our macro's
+// implementations.
+#[doc(hidden)]
+pub use quote::quote;
+
+use proc_macro2::{Span, TokenStream, TokenTree};
+
+// NOTE: This module has documentation hidden, as it only exports macros (which
+// always appear in the root of the crate) and helper methods / re-exports used
+// in the implementation of those macros.
+#[doc(hidden)]
+pub mod macros;
+
+/// Changes how bounds are added
+#[allow(clippy::manual_non_exhaustive)]
+#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
+pub enum AddBounds {
+    /// Add for fields and generics
+    Both,
+    /// Fields only
+    Fields,
+    /// Generics only
+    Generics,
+    /// None
+    None,
+    #[doc(hidden)]
+    __Nonexhaustive,
+}
+
+/// The type of binding to use when generating a pattern.
+#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
+pub enum BindStyle {
+    /// `x`
+    Move,
+    /// `mut x`
+    MoveMut,
+    /// `ref x`
+    Ref,
+    /// `ref mut x`
+    RefMut,
+}
+
+impl ToTokens for BindStyle {
+    fn to_tokens(&self, tokens: &mut TokenStream) {
+        match self {
+            BindStyle::Move => {}
+            BindStyle::MoveMut => quote_spanned!(Span::call_site() => mut).to_tokens(tokens),
+            BindStyle::Ref => quote_spanned!(Span::call_site() => ref).to_tokens(tokens),
+            BindStyle::RefMut => quote_spanned!(Span::call_site() => ref mut).to_tokens(tokens),
+        }
+    }
+}
+
+// Internal method for merging seen_generics arrays together.
+fn generics_fuse(res: &mut Vec<bool>, new: &[bool]) {
+    for (i, &flag) in new.iter().enumerate() {
+        if i == res.len() {
+            res.push(false);
+        }
+        if flag {
+            res[i] = true;
+        }
+    }
+}
+
+// Internal method for extracting the set of generics which have been matched.
+fn fetch_generics<'a>(set: &[bool], generics: &'a Generics) -> Vec<&'a Ident> {
+    let mut tys = vec![];
+    for (&seen, param) in set.iter().zip(generics.params.iter()) {
+        if seen {
+            if let GenericParam::Type(tparam) = param {
+                tys.push(&tparam.ident);
+            }
+        }
+    }
+    tys
+}
+
+// Internal method to merge two Generics objects together intelligently.
+fn merge_generics(into: &mut Generics, from: &Generics) -> Result<()> {
+    // Try to add the param into `into`, and merge parmas with identical names.
+    for p in &from.params {
+        for op in &into.params {
+            match (op, p) {
+                (GenericParam::Type(otp), GenericParam::Type(tp)) => {
+                    // NOTE: This is only OK because syn ignores the span for equality purposes.
+                    if otp.ident == tp.ident {
+                        return Err(Error::new_spanned(
+                            p,
+                            format!(
+                                "Attempted to merge conflicting generic parameters: {} and {}",
+                                quote!(#op),
+                                quote!(#p)
+                            ),
+                        ));
+                    }
+                }
+                (GenericParam::Lifetime(olp), GenericParam::Lifetime(lp)) => {
+                    // NOTE: This is only OK because syn ignores the span for equality purposes.
+                    if olp.lifetime == lp.lifetime {
+                        return Err(Error::new_spanned(
+                            p,
+                            format!(
+                                "Attempted to merge conflicting generic parameters: {} and {}",
+                                quote!(#op),
+                                quote!(#p)
+                            ),
+                        ));
+                    }
+                }
+                // We don't support merging Const parameters, because that wouldn't make much sense.
+                _ => (),
+            }
+        }
+        into.params.push(p.clone());
+    }
+
+    // Add any where clauses from the input generics object.
+    if let Some(from_clause) = &from.where_clause {
+        into.make_where_clause()
+            .predicates
+            .extend(from_clause.predicates.iter().cloned());
+    }
+
+    Ok(())
+}
+
+/// Helper method which does the same thing as rustc 1.20's
+/// `Option::get_or_insert_with`. This method is used to keep backwards
+/// compatibility with rustc 1.15.
+fn get_or_insert_with<T, F>(opt: &mut Option<T>, f: F) -> &mut T
+where
+    F: FnOnce() -> T,
+{
+    if opt.is_none() {
+        *opt = Some(f());
+    }
+
+    match opt {
+        Some(v) => v,
+        None => unreachable!(),
+    }
+}
+
+/// Information about a specific binding. This contains both an `Ident`
+/// reference to the given field, and the syn `&'a Field` descriptor for that
+/// field.
+///
+/// This type supports `quote::ToTokens`, so can be directly used within the
+/// `quote!` macro. It expands to a reference to the matched field.
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct BindingInfo<'a> {
+    /// The name which this `BindingInfo` will bind to.
+    pub binding: Ident,
+
+    /// The type of binding which this `BindingInfo` will create.
+    pub style: BindStyle,
+
+    field: &'a Field,
+
+    // These are used to determine which type parameters are avaliable.
+    generics: &'a Generics,
+    seen_generics: Vec<bool>,
+    // The original index of the binding
+    // this will not change when .filter() is called
+    index: usize,
+}
+
+impl ToTokens for BindingInfo<'_> {
+    fn to_tokens(&self, tokens: &mut TokenStream) {
+        self.binding.to_tokens(tokens);
+    }
+}
+
+impl<'a> BindingInfo<'a> {
+    /// Returns a reference to the underlying `syn` AST node which this
+    /// `BindingInfo` references
+    pub fn ast(&self) -> &'a Field {
+        self.field
+    }
+
+    /// Generates the pattern fragment for this field binding.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B{ a: i32, b: i32 },
+    ///         C(u32),
+    ///     }
+    /// };
+    /// let s = Structure::new(&di);
+    ///
+    /// assert_eq!(
+    ///     s.variants()[0].bindings()[0].pat().to_string(),
+    ///     quote! {
+    ///         ref __binding_0
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn pat(&self) -> TokenStream {
+        let BindingInfo { binding, style, .. } = self;
+        quote!(#style #binding)
+    }
+
+    /// Returns a list of the type parameters which are referenced in this
+    /// field's type.
+    ///
+    /// # Caveat
+    ///
+    /// If the field contains any macros in type position, all parameters will
+    /// be considered bound. This is because we cannot determine which type
+    /// parameters are bound by type macros.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     struct A<T, U> {
+    ///         a: Option<T>,
+    ///         b: U,
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// assert_eq!(
+    ///     s.variants()[0].bindings()[0].referenced_ty_params(),
+    ///     &[&quote::format_ident!("T")]
+    /// );
+    /// ```
+    pub fn referenced_ty_params(&self) -> Vec<&'a Ident> {
+        fetch_generics(&self.seen_generics, self.generics)
+    }
+}
+
+/// This type is similar to `syn`'s `Variant` type, however each of the fields
+/// are references rather than owned. When this is used as the AST for a real
+/// variant, this struct simply borrows the fields of the `syn::Variant`,
+/// however this type may also be used as the sole variant for a struct.
+#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
+pub struct VariantAst<'a> {
+    pub attrs: &'a [Attribute],
+    pub ident: &'a Ident,
+    pub fields: &'a Fields,
+    pub discriminant: &'a Option<(token::Eq, Expr)>,
+}
+
+/// A wrapper around a `syn::DeriveInput`'s variant which provides utilities
+/// for destructuring `Variant`s with `match` expressions.
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct VariantInfo<'a> {
+    pub prefix: Option<&'a Ident>,
+    bindings: Vec<BindingInfo<'a>>,
+    ast: VariantAst<'a>,
+    generics: &'a Generics,
+    // The original length of `bindings` before any `.filter()` calls
+    original_length: usize,
+}
+
+/// Helper function used by the `VariantInfo` constructor. Walks all of the types
+/// in `field` and returns a list of the type parameters from `ty_params` which
+/// are referenced in the field.
+fn get_ty_params(field: &Field, generics: &Generics) -> Vec<bool> {
+    // Helper type. Discovers all identifiers inside of the visited type,
+    // and calls a callback with them.
+    struct BoundTypeLocator<'a> {
+        result: Vec<bool>,
+        generics: &'a Generics,
+    }
+
+    impl<'a> Visit<'a> for BoundTypeLocator<'a> {
+        // XXX: This also (intentionally) captures paths like T::SomeType. Is
+        // this desirable?
+        fn visit_ident(&mut self, id: &Ident) {
+            for (idx, i) in self.generics.params.iter().enumerate() {
+                if let GenericParam::Type(tparam) = i {
+                    if tparam.ident == *id {
+                        self.result[idx] = true;
+                    }
+                }
+            }
+        }
+
+        fn visit_type_macro(&mut self, x: &'a TypeMacro) {
+            // If we see a type_mac declaration, then we can't know what type parameters
+            // it might be binding, so we presume it binds all of them.
+            for r in &mut self.result {
+                *r = true;
+            }
+            visit::visit_type_macro(self, x);
+        }
+    }
+
+    let mut btl = BoundTypeLocator {
+        result: vec![false; generics.params.len()],
+        generics,
+    };
+
+    btl.visit_type(&field.ty);
+
+    btl.result
+}
+
+impl<'a> VariantInfo<'a> {
+    fn new(ast: VariantAst<'a>, prefix: Option<&'a Ident>, generics: &'a Generics) -> Self {
+        let bindings = match ast.fields {
+            Fields::Unit => vec![],
+            Fields::Unnamed(FieldsUnnamed {
+                unnamed: fields, ..
+            })
+            | Fields::Named(FieldsNamed { named: fields, .. }) => {
+                fields
+                    .into_iter()
+                    .enumerate()
+                    .map(|(i, field)| {
+                        // XXX: binding_span has to be call_site to avoid privacy
+                        // when deriving on private fields, but be located at the field
+                        // span for nicer diagnostics.
+                        let binding_span = Span::call_site().located_at(field.span());
+                        BindingInfo {
+                            binding: format_ident!("__binding_{}", i, span = binding_span),
+                            style: BindStyle::Ref,
+                            field,
+                            generics,
+                            seen_generics: get_ty_params(field, generics),
+                            index: i,
+                        }
+                    })
+                    .collect::<Vec<_>>()
+            }
+        };
+
+        let original_length = bindings.len();
+        VariantInfo {
+            prefix,
+            bindings,
+            ast,
+            generics,
+            original_length,
+        }
+    }
+
+    /// Returns a slice of the bindings in this Variant.
+    pub fn bindings(&self) -> &[BindingInfo<'a>] {
+        &self.bindings
+    }
+
+    /// Returns a mut slice of the bindings in this Variant.
+    pub fn bindings_mut(&mut self) -> &mut [BindingInfo<'a>] {
+        &mut self.bindings
+    }
+
+    /// Returns a `VariantAst` object which contains references to the
+    /// underlying `syn` AST node which this `Variant` was created from.
+    pub fn ast(&self) -> VariantAst<'a> {
+        self.ast
+    }
+
+    /// True if any bindings were omitted due to a `filter` call.
+    pub fn omitted_bindings(&self) -> bool {
+        self.original_length != self.bindings.len()
+    }
+
+    /// Generates the match-arm pattern which could be used to match against this Variant.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(i32, i32),
+    ///         C(u32),
+    ///     }
+    /// };
+    /// let s = Structure::new(&di);
+    ///
+    /// assert_eq!(
+    ///     s.variants()[0].pat().to_string(),
+    ///     quote!{
+    ///         A::B(ref __binding_0, ref __binding_1,)
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn pat(&self) -> TokenStream {
+        let mut t = TokenStream::new();
+        if let Some(prefix) = self.prefix {
+            prefix.to_tokens(&mut t);
+            quote!(::).to_tokens(&mut t);
+        }
+        self.ast.ident.to_tokens(&mut t);
+        match self.ast.fields {
+            Fields::Unit => {
+                assert!(self.bindings.is_empty());
+            }
+            Fields::Unnamed(..) => token::Paren(Span::call_site()).surround(&mut t, |t| {
+                let mut expected_index = 0;
+                for binding in &self.bindings {
+                    while expected_index < binding.index {
+                        quote!(_,).to_tokens(t);
+                        expected_index += 1;
+                    }
+                    binding.pat().to_tokens(t);
+                    quote!(,).to_tokens(t);
+                    expected_index += 1;
+                }
+                if expected_index != self.original_length {
+                    quote!(..).to_tokens(t);
+                }
+            }),
+            Fields::Named(..) => token::Brace(Span::call_site()).surround(&mut t, |t| {
+                for binding in &self.bindings {
+                    binding.field.ident.to_tokens(t);
+                    quote!(:).to_tokens(t);
+                    binding.pat().to_tokens(t);
+                    quote!(,).to_tokens(t);
+                }
+                if self.omitted_bindings() {
+                    quote!(..).to_tokens(t);
+                }
+            }),
+        }
+        t
+    }
+
+    /// Generates the token stream required to construct the current variant.
+    ///
+    /// The init array initializes each of the fields in the order they are
+    /// written in `variant.ast().fields`.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(usize, usize),
+    ///         C{ v: usize },
+    ///     }
+    /// };
+    /// let s = Structure::new(&di);
+    ///
+    /// assert_eq!(
+    ///     s.variants()[0].construct(|_, i| quote!(#i)).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B(0usize, 1usize,)
+    ///     }.to_string()
+    /// );
+    ///
+    /// assert_eq!(
+    ///     s.variants()[1].construct(|_, i| quote!(#i)).to_string(),
+    ///
+    ///     quote!{
+    ///         A::C{ v: 0usize, }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn construct<F, T>(&self, mut func: F) -> TokenStream
+    where
+        F: FnMut(&Field, usize) -> T,
+        T: ToTokens,
+    {
+        let mut t = TokenStream::new();
+        if let Some(prefix) = self.prefix {
+            quote!(#prefix ::).to_tokens(&mut t);
+        }
+        self.ast.ident.to_tokens(&mut t);
+
+        match &self.ast.fields {
+            Fields::Unit => (),
+            Fields::Unnamed(FieldsUnnamed { unnamed, .. }) => {
+                token::Paren::default().surround(&mut t, |t| {
+                    for (i, field) in unnamed.into_iter().enumerate() {
+                        func(field, i).to_tokens(t);
+                        quote!(,).to_tokens(t);
+                    }
+                });
+            }
+            Fields::Named(FieldsNamed { named, .. }) => {
+                token::Brace::default().surround(&mut t, |t| {
+                    for (i, field) in named.into_iter().enumerate() {
+                        field.ident.to_tokens(t);
+                        quote!(:).to_tokens(t);
+                        func(field, i).to_tokens(t);
+                        quote!(,).to_tokens(t);
+                    }
+                });
+            }
+        }
+        t
+    }
+
+    /// Runs the passed-in function once for each bound field, passing in a `BindingInfo`.
+    /// and generating a `match` arm which evaluates the returned tokens.
+    ///
+    /// This method will ignore fields which are ignored through the `filter`
+    /// method.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(i32, i32),
+    ///         C(u32),
+    ///     }
+    /// };
+    /// let s = Structure::new(&di);
+    ///
+    /// assert_eq!(
+    ///     s.variants()[0].each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B(ref __binding_0, ref __binding_1,) => {
+    ///             { println!("{:?}", __binding_0) }
+    ///             { println!("{:?}", __binding_1) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn each<F, R>(&self, mut f: F) -> TokenStream
+    where
+        F: FnMut(&BindingInfo<'_>) -> R,
+        R: ToTokens,
+    {
+        let pat = self.pat();
+        let mut body = TokenStream::new();
+        for binding in &self.bindings {
+            token::Brace::default().surround(&mut body, |body| {
+                f(binding).to_tokens(body);
+            });
+        }
+        quote!(#pat => { #body })
+    }
+
+    /// Runs the passed-in function once for each bound field, passing in the
+    /// result of the previous call, and a `BindingInfo`. generating a `match`
+    /// arm which evaluates to the resulting tokens.
+    ///
+    /// This method will ignore fields which are ignored through the `filter`
+    /// method.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(i32, i32),
+    ///         C(u32),
+    ///     }
+    /// };
+    /// let s = Structure::new(&di);
+    ///
+    /// assert_eq!(
+    ///     s.variants()[0].fold(quote!(0), |acc, bi| quote!(#acc + #bi)).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B(ref __binding_0, ref __binding_1,) => {
+    ///             0 + __binding_0 + __binding_1
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn fold<F, I, R>(&self, init: I, mut f: F) -> TokenStream
+    where
+        F: FnMut(TokenStream, &BindingInfo<'_>) -> R,
+        I: ToTokens,
+        R: ToTokens,
+    {
+        let pat = self.pat();
+        let body = self.bindings.iter().fold(quote!(#init), |i, bi| {
+            let r = f(i, bi);
+            quote!(#r)
+        });
+        quote!(#pat => { #body })
+    }
+
+    /// Filter the bindings created by this `Variant` object. This has 2 effects:
+    ///
+    /// * The bindings will no longer appear in match arms generated by methods
+    ///   on this `Variant` or its subobjects.
+    ///
+    /// * Impl blocks created with the `bound_impl` or `unsafe_bound_impl`
+    ///   method only consider type parameters referenced in the types of
+    ///   non-filtered fields.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B{ a: i32, b: i32 },
+    ///         C{ a: u32 },
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.variants_mut()[0].filter(|bi| {
+    ///     bi.ast().ident == Some(quote::format_ident!("b"))
+    /// });
+    ///
+    /// assert_eq!(
+    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B{ b: ref __binding_1, .. } => {
+    ///             { println!("{:?}", __binding_1) }
+    ///         }
+    ///         A::C{ a: ref __binding_0, } => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn filter<F>(&mut self, f: F) -> &mut Self
+    where
+        F: FnMut(&BindingInfo<'_>) -> bool,
+    {
+        self.bindings.retain(f);
+        self
+    }
+
+    /// Iterates all the bindings of this `Variant` object and uses a closure to determine if a
+    /// binding should be removed. If the closure returns `true` the binding is removed from the
+    /// variant. If the closure returns `false`, the binding remains in the variant.
+    ///
+    /// All the removed bindings are moved to a new `Variant` object which is otherwise identical
+    /// to the current one. To understand the effects of removing a binding from a variant check
+    /// the [`VariantInfo::filter`] documentation.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B{ a: i32, b: i32 },
+    ///         C{ a: u32 },
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// let mut with_b = &mut s.variants_mut()[0];
+    ///
+    /// let with_a = with_b.drain_filter(|bi| {
+    ///     bi.ast().ident == Some(quote::format_ident!("a"))
+    /// });
+    ///
+    /// assert_eq!(
+    ///     with_a.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B{ a: ref __binding_0, .. } => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    ///
+    /// assert_eq!(
+    ///     with_b.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B{ b: ref __binding_1, .. } => {
+    ///             { println!("{:?}", __binding_1) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    #[allow(clippy::return_self_not_must_use)]
+    pub fn drain_filter<F>(&mut self, mut f: F) -> Self
+    where
+        F: FnMut(&BindingInfo<'_>) -> bool,
+    {
+        let mut other = VariantInfo {
+            prefix: self.prefix,
+            bindings: vec![],
+            ast: self.ast,
+            generics: self.generics,
+            original_length: self.original_length,
+        };
+
+        let (other_bindings, self_bindings) = self.bindings.drain(..).partition(&mut f);
+        other.bindings = other_bindings;
+        self.bindings = self_bindings;
+
+        other
+    }
+
+    /// Remove the binding at the given index.
+    ///
+    /// # Panics
+    ///
+    /// Panics if the index is out of range.
+    pub fn remove_binding(&mut self, idx: usize) -> &mut Self {
+        self.bindings.remove(idx);
+        self
+    }
+
+    /// Updates the `BindStyle` for each of the passed-in fields by calling the
+    /// passed-in function for each `BindingInfo`.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(i32, i32),
+    ///         C(u32),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.variants_mut()[0].bind_with(|bi| BindStyle::RefMut);
+    ///
+    /// assert_eq!(
+    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B(ref mut __binding_0, ref mut __binding_1,) => {
+    ///             { println!("{:?}", __binding_0) }
+    ///             { println!("{:?}", __binding_1) }
+    ///         }
+    ///         A::C(ref __binding_0,) => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn bind_with<F>(&mut self, mut f: F) -> &mut Self
+    where
+        F: FnMut(&BindingInfo<'_>) -> BindStyle,
+    {
+        for binding in &mut self.bindings {
+            binding.style = f(binding);
+        }
+        self
+    }
+
+    /// Updates the binding name for each fo the passed-in fields by calling the
+    /// passed-in function for each `BindingInfo`.
+    ///
+    /// The function will be called with the `BindingInfo` and its index in the
+    /// enclosing variant.
+    ///
+    /// The default name is `__binding_{}` where `{}` is replaced with an
+    /// increasing number.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B{ a: i32, b: i32 },
+    ///         C{ a: u32 },
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.variants_mut()[0].binding_name(|bi, i| bi.ident.clone().unwrap());
+    ///
+    /// assert_eq!(
+    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B{ a: ref a, b: ref b, } => {
+    ///             { println!("{:?}", a) }
+    ///             { println!("{:?}", b) }
+    ///         }
+    ///         A::C{ a: ref __binding_0, } => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn binding_name<F>(&mut self, mut f: F) -> &mut Self
+    where
+        F: FnMut(&Field, usize) -> Ident,
+    {
+        for (it, binding) in self.bindings.iter_mut().enumerate() {
+            binding.binding = f(binding.field, it);
+        }
+        self
+    }
+
+    /// Returns a list of the type parameters which are referenced in this
+    /// field's type.
+    ///
+    /// # Caveat
+    ///
+    /// If the field contains any macros in type position, all parameters will
+    /// be considered bound. This is because we cannot determine which type
+    /// parameters are bound by type macros.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     struct A<T, U> {
+    ///         a: Option<T>,
+    ///         b: U,
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// assert_eq!(
+    ///     s.variants()[0].bindings()[0].referenced_ty_params(),
+    ///     &[&quote::format_ident!("T")]
+    /// );
+    /// ```
+    pub fn referenced_ty_params(&self) -> Vec<&'a Ident> {
+        let mut flags = Vec::new();
+        for binding in &self.bindings {
+            generics_fuse(&mut flags, &binding.seen_generics);
+        }
+        fetch_generics(&flags, self.generics)
+    }
+}
+
+/// A wrapper around a `syn::DeriveInput` which provides utilities for creating
+/// custom derive trait implementations.
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct Structure<'a> {
+    variants: Vec<VariantInfo<'a>>,
+    omitted_variants: bool,
+    ast: &'a DeriveInput,
+    extra_impl: Vec<GenericParam>,
+    extra_predicates: Vec<WherePredicate>,
+    add_bounds: AddBounds,
+}
+
+impl<'a> Structure<'a> {
+    /// Create a new `Structure` with the variants and fields from the passed-in
+    /// `DeriveInput`.
+    ///
+    /// # Panics
+    ///
+    /// This method will panic if the provided AST node represents an untagged
+    /// union.
+    pub fn new(ast: &'a DeriveInput) -> Self {
+        Self::try_new(ast).expect("Unable to create synstructure::Structure")
+    }
+
+    /// Create a new `Structure` with the variants and fields from the passed-in
+    /// `DeriveInput`.
+    ///
+    /// Unlike `Structure::new`, this method does not panic if the provided AST
+    /// node represents an untagged union.
+    pub fn try_new(ast: &'a DeriveInput) -> Result<Self> {
+        let variants = match &ast.data {
+            Data::Enum(data) => (&data.variants)
+                .into_iter()
+                .map(|v| {
+                    VariantInfo::new(
+                        VariantAst {
+                            attrs: &v.attrs,
+                            ident: &v.ident,
+                            fields: &v.fields,
+                            discriminant: &v.discriminant,
+                        },
+                        Some(&ast.ident),
+                        &ast.generics,
+                    )
+                })
+                .collect::<Vec<_>>(),
+            Data::Struct(data) => {
+                vec![VariantInfo::new(
+                    VariantAst {
+                        attrs: &ast.attrs,
+                        ident: &ast.ident,
+                        fields: &data.fields,
+                        discriminant: &None,
+                    },
+                    None,
+                    &ast.generics,
+                )]
+            }
+            Data::Union(_) => {
+                return Err(Error::new_spanned(
+                    ast,
+                    "unexpected unsupported untagged union",
+                ));
+            }
+        };
+
+        Ok(Structure {
+            variants,
+            omitted_variants: false,
+            ast,
+            extra_impl: vec![],
+            extra_predicates: vec![],
+            add_bounds: AddBounds::Both,
+        })
+    }
+
+    /// Returns a slice of the variants in this Structure.
+    pub fn variants(&self) -> &[VariantInfo<'a>] {
+        &self.variants
+    }
+
+    /// Returns a mut slice of the variants in this Structure.
+    pub fn variants_mut(&mut self) -> &mut [VariantInfo<'a>] {
+        &mut self.variants
+    }
+
+    /// Returns a reference to the underlying `syn` AST node which this
+    /// `Structure` was created from.
+    pub fn ast(&self) -> &'a DeriveInput {
+        self.ast
+    }
+
+    /// True if any variants were omitted due to a `filter_variants` call.
+    pub fn omitted_variants(&self) -> bool {
+        self.omitted_variants
+    }
+
+    /// Runs the passed-in function once for each bound field, passing in a `BindingInfo`.
+    /// and generating `match` arms which evaluate the returned tokens.
+    ///
+    /// This method will ignore variants or fields which are ignored through the
+    /// `filter` and `filter_variant` methods.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(i32, i32),
+    ///         C(u32),
+    ///     }
+    /// };
+    /// let s = Structure::new(&di);
+    ///
+    /// assert_eq!(
+    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B(ref __binding_0, ref __binding_1,) => {
+    ///             { println!("{:?}", __binding_0) }
+    ///             { println!("{:?}", __binding_1) }
+    ///         }
+    ///         A::C(ref __binding_0,) => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn each<F, R>(&self, mut f: F) -> TokenStream
+    where
+        F: FnMut(&BindingInfo<'_>) -> R,
+        R: ToTokens,
+    {
+        let mut t = TokenStream::new();
+        for variant in &self.variants {
+            variant.each(&mut f).to_tokens(&mut t);
+        }
+        if self.omitted_variants {
+            quote!(_ => {}).to_tokens(&mut t);
+        }
+        t
+    }
+
+    /// Runs the passed-in function once for each bound field, passing in the
+    /// result of the previous call, and a `BindingInfo`. generating `match`
+    /// arms which evaluate to the resulting tokens.
+    ///
+    /// This method will ignore variants or fields which are ignored through the
+    /// `filter` and `filter_variant` methods.
+    ///
+    /// If a variant has been ignored, it will return the `init` value.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(i32, i32),
+    ///         C(u32),
+    ///     }
+    /// };
+    /// let s = Structure::new(&di);
+    ///
+    /// assert_eq!(
+    ///     s.fold(quote!(0), |acc, bi| quote!(#acc + #bi)).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B(ref __binding_0, ref __binding_1,) => {
+    ///             0 + __binding_0 + __binding_1
+    ///         }
+    ///         A::C(ref __binding_0,) => {
+    ///             0 + __binding_0
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn fold<F, I, R>(&self, init: I, mut f: F) -> TokenStream
+    where
+        F: FnMut(TokenStream, &BindingInfo<'_>) -> R,
+        I: ToTokens,
+        R: ToTokens,
+    {
+        let mut t = TokenStream::new();
+        for variant in &self.variants {
+            variant.fold(&init, &mut f).to_tokens(&mut t);
+        }
+        if self.omitted_variants {
+            quote!(_ => { #init }).to_tokens(&mut t);
+        }
+        t
+    }
+
+    /// Runs the passed-in function once for each variant, passing in a
+    /// `VariantInfo`. and generating `match` arms which evaluate the returned
+    /// tokens.
+    ///
+    /// This method will ignore variants and not bind fields which are ignored
+    /// through the `filter` and `filter_variant` methods.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(i32, i32),
+    ///         C(u32),
+    ///     }
+    /// };
+    /// let s = Structure::new(&di);
+    ///
+    /// assert_eq!(
+    ///     s.each_variant(|v| {
+    ///         let name = &v.ast().ident;
+    ///         quote!(println!(stringify!(#name)))
+    ///     }).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B(ref __binding_0, ref __binding_1,) => {
+    ///             println!(stringify!(B))
+    ///         }
+    ///         A::C(ref __binding_0,) => {
+    ///             println!(stringify!(C))
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn each_variant<F, R>(&self, mut f: F) -> TokenStream
+    where
+        F: FnMut(&VariantInfo<'_>) -> R,
+        R: ToTokens,
+    {
+        let mut t = TokenStream::new();
+        for variant in &self.variants {
+            let pat = variant.pat();
+            let body = f(variant);
+            quote!(#pat => { #body }).to_tokens(&mut t);
+        }
+        if self.omitted_variants {
+            quote!(_ => {}).to_tokens(&mut t);
+        }
+        t
+    }
+
+    /// Filter the bindings created by this `Structure` object. This has 2 effects:
+    ///
+    /// * The bindings will no longer appear in match arms generated by methods
+    ///   on this `Structure` or its subobjects.
+    ///
+    /// * Impl blocks created with the `bound_impl` or `unsafe_bound_impl`
+    ///   method only consider type parameters referenced in the types of
+    ///   non-filtered fields.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B{ a: i32, b: i32 },
+    ///         C{ a: u32 },
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.filter(|bi| {
+    ///     bi.ast().ident == Some(quote::format_ident!("a"))
+    /// });
+    ///
+    /// assert_eq!(
+    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B{ a: ref __binding_0, .. } => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///         A::C{ a: ref __binding_0, } => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn filter<F>(&mut self, mut f: F) -> &mut Self
+    where
+        F: FnMut(&BindingInfo<'_>) -> bool,
+    {
+        for variant in &mut self.variants {
+            variant.filter(&mut f);
+        }
+        self
+    }
+
+    /// Iterates all the bindings of this `Structure` object and uses a closure to determine if a
+    /// binding should be removed. If the closure returns `true` the binding is removed from the
+    /// structure. If the closure returns `false`, the binding remains in the structure.
+    ///
+    /// All the removed bindings are moved to a new `Structure` object which is otherwise identical
+    /// to the current one. To understand the effects of removing a binding from a structure check
+    /// the [`Structure::filter`] documentation.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B{ a: i32, b: i32 },
+    ///         C{ a: u32 },
+    ///     }
+    /// };
+    /// let mut with_b = Structure::new(&di);
+    ///
+    /// let with_a = with_b.drain_filter(|bi| {
+    ///     bi.ast().ident == Some(quote::format_ident!("a"))
+    /// });
+    ///
+    /// assert_eq!(
+    ///     with_a.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B{ a: ref __binding_0, .. } => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///         A::C{ a: ref __binding_0, } => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    ///
+    /// assert_eq!(
+    ///     with_b.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B{ b: ref __binding_1, .. } => {
+    ///             { println!("{:?}", __binding_1) }
+    ///         }
+    ///         A::C{ .. } => {
+    ///
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    #[allow(clippy::return_self_not_must_use)]
+    pub fn drain_filter<F>(&mut self, mut f: F) -> Self
+    where
+        F: FnMut(&BindingInfo<'_>) -> bool,
+    {
+        Self {
+            variants: self
+                .variants
+                .iter_mut()
+                .map(|variant| variant.drain_filter(&mut f))
+                .collect(),
+            omitted_variants: self.omitted_variants,
+            ast: self.ast,
+            extra_impl: self.extra_impl.clone(),
+            extra_predicates: self.extra_predicates.clone(),
+            add_bounds: self.add_bounds,
+        }
+    }
+
+    /// Specify additional where predicate bounds which should be generated by
+    /// impl-generating functions such as `gen_impl`, `bound_impl`, and
+    /// `unsafe_bound_impl`.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A<T, U> {
+    ///         B(T),
+    ///         C(Option<U>),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// // Add an additional where predicate.
+    /// s.add_where_predicate(syn::parse_quote!(T: std::fmt::Display));
+    ///
+    /// assert_eq!(
+    ///     s.bound_impl(quote!(krate::Trait), quote!{
+    ///         fn a() {}
+    ///     }).to_string(),
+    ///     quote!{
+    ///         const _: () = {
+    ///             extern crate krate;
+    ///             impl<T, U> krate::Trait for A<T, U>
+    ///                 where T: std::fmt::Display,
+    ///                       T: krate::Trait,
+    ///                       Option<U>: krate::Trait,
+    ///                       U: krate::Trait
+    ///             {
+    ///                 fn a() {}
+    ///             }
+    ///         };
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn add_where_predicate(&mut self, pred: WherePredicate) -> &mut Self {
+        self.extra_predicates.push(pred);
+        self
+    }
+
+    /// Specify which bounds should be generated by impl-generating functions
+    /// such as `gen_impl`, `bound_impl`, and `unsafe_bound_impl`.
+    ///
+    /// The default behaviour is to generate both field and generic bounds from
+    /// type parameters.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A<T, U> {
+    ///         B(T),
+    ///         C(Option<U>),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// // Limit bounds to only generics.
+    /// s.add_bounds(AddBounds::Generics);
+    ///
+    /// assert_eq!(
+    ///     s.bound_impl(quote!(krate::Trait), quote!{
+    ///         fn a() {}
+    ///     }).to_string(),
+    ///     quote!{
+    ///         const _: () = {
+    ///             extern crate krate;
+    ///             impl<T, U> krate::Trait for A<T, U>
+    ///                 where T: krate::Trait,
+    ///                       U: krate::Trait
+    ///             {
+    ///                 fn a() {}
+    ///             }
+    ///         };
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn add_bounds(&mut self, mode: AddBounds) -> &mut Self {
+        self.add_bounds = mode;
+        self
+    }
+
+    /// Filter the variants matched by this `Structure` object. This has 2 effects:
+    ///
+    /// * Match arms destructuring these variants will no longer be generated by
+    ///   methods on this `Structure`
+    ///
+    /// * Impl blocks created with the `bound_impl` or `unsafe_bound_impl`
+    ///   method only consider type parameters referenced in the types of
+    ///   fields in non-fitered variants.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(i32, i32),
+    ///         C(u32),
+    ///     }
+    /// };
+    ///
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.filter_variants(|v| v.ast().ident != "B");
+    ///
+    /// assert_eq!(
+    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::C(ref __binding_0,) => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///         _ => {}
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn filter_variants<F>(&mut self, f: F) -> &mut Self
+    where
+        F: FnMut(&VariantInfo<'_>) -> bool,
+    {
+        let before_len = self.variants.len();
+        self.variants.retain(f);
+        if self.variants.len() != before_len {
+            self.omitted_variants = true;
+        }
+        self
+    }
+    /// Iterates all the variants of this `Structure` object and uses a closure to determine if a
+    /// variant should be removed. If the closure returns `true` the variant is removed from the
+    /// structure. If the closure returns `false`, the variant remains in the structure.
+    ///
+    /// All the removed variants are moved to a new `Structure` object which is otherwise identical
+    /// to the current one. To understand the effects of removing a variant from a structure check
+    /// the [`Structure::filter_variants`] documentation.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(i32, i32),
+    ///         C(u32),
+    ///     }
+    /// };
+    ///
+    /// let mut with_c = Structure::new(&di);
+    ///
+    /// let with_b = with_c.drain_filter_variants(|v| v.ast().ident == "B");
+    ///
+    /// assert_eq!(
+    ///     with_c.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::C(ref __binding_0,) => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    ///
+    /// assert_eq!(
+    ///     with_b.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B(ref __binding_0, ref __binding_1,) => {
+    ///             { println!("{:?}", __binding_0) }
+    ///             { println!("{:?}", __binding_1) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    #[allow(clippy::return_self_not_must_use)]
+    pub fn drain_filter_variants<F>(&mut self, mut f: F) -> Self
+    where
+        F: FnMut(&VariantInfo<'_>) -> bool,
+    {
+        let mut other = Self {
+            variants: vec![],
+            omitted_variants: self.omitted_variants,
+            ast: self.ast,
+            extra_impl: self.extra_impl.clone(),
+            extra_predicates: self.extra_predicates.clone(),
+            add_bounds: self.add_bounds,
+        };
+
+        let (other_variants, self_variants) = self.variants.drain(..).partition(&mut f);
+        other.variants = other_variants;
+        self.variants = self_variants;
+
+        other
+    }
+
+    /// Remove the variant at the given index.
+    ///
+    /// # Panics
+    ///
+    /// Panics if the index is out of range.
+    pub fn remove_variant(&mut self, idx: usize) -> &mut Self {
+        self.variants.remove(idx);
+        self.omitted_variants = true;
+        self
+    }
+
+    /// Updates the `BindStyle` for each of the passed-in fields by calling the
+    /// passed-in function for each `BindingInfo`.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B(i32, i32),
+    ///         C(u32),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.bind_with(|bi| BindStyle::RefMut);
+    ///
+    /// assert_eq!(
+    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B(ref mut __binding_0, ref mut __binding_1,) => {
+    ///             { println!("{:?}", __binding_0) }
+    ///             { println!("{:?}", __binding_1) }
+    ///         }
+    ///         A::C(ref mut __binding_0,) => {
+    ///             { println!("{:?}", __binding_0) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn bind_with<F>(&mut self, mut f: F) -> &mut Self
+    where
+        F: FnMut(&BindingInfo<'_>) -> BindStyle,
+    {
+        for variant in &mut self.variants {
+            variant.bind_with(&mut f);
+        }
+        self
+    }
+
+    /// Updates the binding name for each fo the passed-in fields by calling the
+    /// passed-in function for each `BindingInfo`.
+    ///
+    /// The function will be called with the `BindingInfo` and its index in the
+    /// enclosing variant.
+    ///
+    /// The default name is `__binding_{}` where `{}` is replaced with an
+    /// increasing number.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A {
+    ///         B{ a: i32, b: i32 },
+    ///         C{ a: u32 },
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.binding_name(|bi, i| bi.ident.clone().unwrap());
+    ///
+    /// assert_eq!(
+    ///     s.each(|bi| quote!(println!("{:?}", #bi))).to_string(),
+    ///
+    ///     quote!{
+    ///         A::B{ a: ref a, b: ref b, } => {
+    ///             { println!("{:?}", a) }
+    ///             { println!("{:?}", b) }
+    ///         }
+    ///         A::C{ a: ref a, } => {
+    ///             { println!("{:?}", a) }
+    ///         }
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn binding_name<F>(&mut self, mut f: F) -> &mut Self
+    where
+        F: FnMut(&Field, usize) -> Ident,
+    {
+        for variant in &mut self.variants {
+            variant.binding_name(&mut f);
+        }
+        self
+    }
+
+    /// Returns a list of the type parameters which are refrenced in the types
+    /// of non-filtered fields / variants.
+    ///
+    /// # Caveat
+    ///
+    /// If the struct contains any macros in type position, all parameters will
+    /// be considered bound. This is because we cannot determine which type
+    /// parameters are bound by type macros.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A<T, U> {
+    ///         B(T, i32),
+    ///         C(Option<U>),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.filter_variants(|v| v.ast().ident != "C");
+    ///
+    /// assert_eq!(
+    ///     s.referenced_ty_params(),
+    ///     &[&quote::format_ident!("T")]
+    /// );
+    /// ```
+    pub fn referenced_ty_params(&self) -> Vec<&'a Ident> {
+        let mut flags = Vec::new();
+        for variant in &self.variants {
+            for binding in &variant.bindings {
+                generics_fuse(&mut flags, &binding.seen_generics);
+            }
+        }
+        fetch_generics(&flags, &self.ast.generics)
+    }
+
+    /// Adds an `impl<>` generic parameter.
+    /// This can be used when the trait to be derived needs some extra generic parameters.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A<T, U> {
+    ///         B(T),
+    ///         C(Option<U>),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    /// let generic: syn::GenericParam = syn::parse_quote!(X: krate::AnotherTrait);
+    ///
+    /// assert_eq!(
+    ///     s.add_impl_generic(generic)
+    ///         .bound_impl(quote!(krate::Trait<X>),
+    ///         quote!{
+    ///                 fn a() {}
+    ///         }
+    ///     ).to_string(),
+    ///     quote!{
+    ///         const _: () = {
+    ///             extern crate krate;
+    ///             impl<T, U, X: krate::AnotherTrait> krate::Trait<X> for A<T, U>
+    ///                 where T : krate :: Trait < X >,
+    ///                       Option<U>: krate::Trait<X>,
+    ///                       U: krate::Trait<X>
+    ///             {
+    ///                 fn a() {}
+    ///             }
+    ///         };
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn add_impl_generic(&mut self, param: GenericParam) -> &mut Self {
+        self.extra_impl.push(param);
+        self
+    }
+
+    /// Add trait bounds for a trait with the given path for each type parmaeter
+    /// referenced in the types of non-filtered fields.
+    ///
+    /// # Caveat
+    ///
+    /// If the method contains any macros in type position, all parameters will
+    /// be considered bound. This is because we cannot determine which type
+    /// parameters are bound by type macros.
+    pub fn add_trait_bounds(
+        &self,
+        bound: &TraitBound,
+        where_clause: &mut Option<WhereClause>,
+        mode: AddBounds,
+    ) {
+        // If we have any explicit where predicates, make sure to add them first.
+        if !self.extra_predicates.is_empty() {
+            let clause = get_or_insert_with(&mut *where_clause, || WhereClause {
+                where_token: Default::default(),
+                predicates: punctuated::Punctuated::new(),
+            });
+            clause
+                .predicates
+                .extend(self.extra_predicates.iter().cloned());
+        }
+
+        let mut seen = HashSet::new();
+        let mut pred = |ty: Type| {
+            if !seen.contains(&ty) {
+                seen.insert(ty.clone());
+
+                // Add a predicate.
+                let clause = get_or_insert_with(&mut *where_clause, || WhereClause {
+                    where_token: Default::default(),
+                    predicates: punctuated::Punctuated::new(),
+                });
+                clause.predicates.push(WherePredicate::Type(PredicateType {
+                    lifetimes: None,
+                    bounded_ty: ty,
+                    colon_token: Default::default(),
+                    bounds: Some(punctuated::Pair::End(TypeParamBound::Trait(bound.clone())))
+                        .into_iter()
+                        .collect(),
+                }));
+            }
+        };
+
+        for variant in &self.variants {
+            for binding in &variant.bindings {
+                match mode {
+                    AddBounds::Both | AddBounds::Fields => {
+                        for &seen in &binding.seen_generics {
+                            if seen {
+                                pred(binding.ast().ty.clone());
+                                break;
+                            }
+                        }
+                    }
+                    _ => {}
+                }
+
+                match mode {
+                    AddBounds::Both | AddBounds::Generics => {
+                        for param in binding.referenced_ty_params() {
+                            pred(Type::Path(TypePath {
+                                qself: None,
+                                path: (*param).clone().into(),
+                            }));
+                        }
+                    }
+                    _ => {}
+                }
+            }
+        }
+    }
+
+    /// This method is a no-op, underscore consts are used by default now.
+    pub fn underscore_const(&mut self, _enabled: bool) -> &mut Self {
+        self
+    }
+
+    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
+    ///
+    /// Creates an `impl` block with the required generic type fields filled in
+    /// to implement the trait `path`.
+    ///
+    /// This method also adds where clauses to the impl requiring that all
+    /// referenced type parmaeters implement the trait `path`.
+    ///
+    /// # Hygiene and Paths
+    ///
+    /// This method wraps the impl block inside of a `const` (see the example
+    /// below). In this scope, the first segment of the passed-in path is
+    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
+    /// item, use a global path.
+    ///
+    /// This means that if you are implementing `my_crate::Trait`, you simply
+    /// write `s.bound_impl(quote!(my_crate::Trait), quote!(...))`, and for the
+    /// entirety of the definition, you can refer to your crate as `my_crate`.
+    ///
+    /// # Caveat
+    ///
+    /// If the method contains any macros in type position, all parameters will
+    /// be considered bound. This is because we cannot determine which type
+    /// parameters are bound by type macros.
+    ///
+    /// # Panics
+    ///
+    /// Panics if the path string parameter is not a valid `TraitBound`.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A<T, U> {
+    ///         B(T),
+    ///         C(Option<U>),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.filter_variants(|v| v.ast().ident != "B");
+    ///
+    /// assert_eq!(
+    ///     s.bound_impl(quote!(krate::Trait), quote!{
+    ///         fn a() {}
+    ///     }).to_string(),
+    ///     quote!{
+    ///         const _: () = {
+    ///             extern crate krate;
+    ///             impl<T, U> krate::Trait for A<T, U>
+    ///                 where Option<U>: krate::Trait,
+    ///                       U: krate::Trait
+    ///             {
+    ///                 fn a() {}
+    ///             }
+    ///         };
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn bound_impl<P: ToTokens, B: ToTokens>(&self, path: P, body: B) -> TokenStream {
+        self.impl_internal(
+            path.into_token_stream(),
+            body.into_token_stream(),
+            quote!(),
+            None,
+        )
+    }
+
+    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
+    ///
+    /// Creates an `impl` block with the required generic type fields filled in
+    /// to implement the unsafe trait `path`.
+    ///
+    /// This method also adds where clauses to the impl requiring that all
+    /// referenced type parmaeters implement the trait `path`.
+    ///
+    /// # Hygiene and Paths
+    ///
+    /// This method wraps the impl block inside of a `const` (see the example
+    /// below). In this scope, the first segment of the passed-in path is
+    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
+    /// item, use a global path.
+    ///
+    /// This means that if you are implementing `my_crate::Trait`, you simply
+    /// write `s.bound_impl(quote!(my_crate::Trait), quote!(...))`, and for the
+    /// entirety of the definition, you can refer to your crate as `my_crate`.
+    ///
+    /// # Caveat
+    ///
+    /// If the method contains any macros in type position, all parameters will
+    /// be considered bound. This is because we cannot determine which type
+    /// parameters are bound by type macros.
+    ///
+    /// # Panics
+    ///
+    /// Panics if the path string parameter is not a valid `TraitBound`.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A<T, U> {
+    ///         B(T),
+    ///         C(Option<U>),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.filter_variants(|v| v.ast().ident != "B");
+    ///
+    /// assert_eq!(
+    ///     s.unsafe_bound_impl(quote!(krate::Trait), quote!{
+    ///         fn a() {}
+    ///     }).to_string(),
+    ///     quote!{
+    ///         const _: () = {
+    ///             extern crate krate;
+    ///             unsafe impl<T, U> krate::Trait for A<T, U>
+    ///                 where Option<U>: krate::Trait,
+    ///                       U: krate::Trait
+    ///             {
+    ///                 fn a() {}
+    ///             }
+    ///         };
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn unsafe_bound_impl<P: ToTokens, B: ToTokens>(&self, path: P, body: B) -> TokenStream {
+        self.impl_internal(
+            path.into_token_stream(),
+            body.into_token_stream(),
+            quote!(unsafe),
+            None,
+        )
+    }
+
+    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
+    ///
+    /// Creates an `impl` block with the required generic type fields filled in
+    /// to implement the trait `path`.
+    ///
+    /// This method will not add any where clauses to the impl.
+    ///
+    /// # Hygiene and Paths
+    ///
+    /// This method wraps the impl block inside of a `const` (see the example
+    /// below). In this scope, the first segment of the passed-in path is
+    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
+    /// item, use a global path.
+    ///
+    /// This means that if you are implementing `my_crate::Trait`, you simply
+    /// write `s.bound_impl(quote!(my_crate::Trait), quote!(...))`, and for the
+    /// entirety of the definition, you can refer to your crate as `my_crate`.
+    ///
+    /// # Panics
+    ///
+    /// Panics if the path string parameter is not a valid `TraitBound`.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A<T, U> {
+    ///         B(T),
+    ///         C(Option<U>),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.filter_variants(|v| v.ast().ident != "B");
+    ///
+    /// assert_eq!(
+    ///     s.unbound_impl(quote!(krate::Trait), quote!{
+    ///         fn a() {}
+    ///     }).to_string(),
+    ///     quote!{
+    ///         const _: () = {
+    ///             extern crate krate;
+    ///             impl<T, U> krate::Trait for A<T, U> {
+    ///                 fn a() {}
+    ///             }
+    ///         };
+    ///     }.to_string()
+    /// );
+    /// ```
+    pub fn unbound_impl<P: ToTokens, B: ToTokens>(&self, path: P, body: B) -> TokenStream {
+        self.impl_internal(
+            path.into_token_stream(),
+            body.into_token_stream(),
+            quote!(),
+            Some(AddBounds::None),
+        )
+    }
+
+    /// > NOTE: This methods' features are superceded by `Structure::gen_impl`.
+    ///
+    /// Creates an `impl` block with the required generic type fields filled in
+    /// to implement the unsafe trait `path`.
+    ///
+    /// This method will not add any where clauses to the impl.
+    ///
+    /// # Hygiene and Paths
+    ///
+    /// This method wraps the impl block inside of a `const` (see the example
+    /// below). In this scope, the first segment of the passed-in path is
+    /// `extern crate`-ed in. If you don't want to generate that `extern crate`
+    /// item, use a global path.
+    ///
+    /// This means that if you are implementing `my_crate::Trait`, you simply
+    /// write `s.bound_impl(quote!(my_crate::Trait), quote!(...))`, and for the
+    /// entirety of the definition, you can refer to your crate as `my_crate`.
+    ///
+    /// # Panics
+    ///
+    /// Panics if the path string parameter is not a valid `TraitBound`.
+    ///
+    /// # Example
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A<T, U> {
+    ///         B(T),
+    ///         C(Option<U>),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.filter_variants(|v| v.ast().ident != "B");
+    ///
+    /// assert_eq!(
+    ///     s.unsafe_unbound_impl(quote!(krate::Trait), quote!{
+    ///         fn a() {}
+    ///     }).to_string(),
+    ///     quote!{
+    ///         const _: () = {
+    ///             extern crate krate;
+    ///             unsafe impl<T, U> krate::Trait for A<T, U> {
+    ///                 fn a() {}
+    ///             }
+    ///         };
+    ///     }.to_string()
+    /// );
+    /// ```
+    #[deprecated]
+    pub fn unsafe_unbound_impl<P: ToTokens, B: ToTokens>(&self, path: P, body: B) -> TokenStream {
+        self.impl_internal(
+            path.into_token_stream(),
+            body.into_token_stream(),
+            quote!(unsafe),
+            Some(AddBounds::None),
+        )
+    }
+
+    fn impl_internal(
+        &self,
+        path: TokenStream,
+        body: TokenStream,
+        safety: TokenStream,
+        mode: Option<AddBounds>,
+    ) -> TokenStream {
+        let mode = mode.unwrap_or(self.add_bounds);
+        let name = &self.ast.ident;
+        let mut gen_clone = self.ast.generics.clone();
+        gen_clone.params.extend(self.extra_impl.iter().cloned());
+        let (impl_generics, _, _) = gen_clone.split_for_impl();
+        let (_, ty_generics, where_clause) = self.ast.generics.split_for_impl();
+
+        let bound = syn::parse2::<TraitBound>(path)
+            .expect("`path` argument must be a valid rust trait bound");
+
+        let mut where_clause = where_clause.cloned();
+        self.add_trait_bounds(&bound, &mut where_clause, mode);
+
+        // This function is smart. If a global path is passed, no extern crate
+        // statement will be generated, however, a relative path will cause the
+        // crate which it is relative to to be imported within the current
+        // scope.
+        let mut extern_crate = quote!();
+        if bound.path.leading_colon.is_none() {
+            if let Some(seg) = bound.path.segments.first() {
+                let seg = &seg.ident;
+                extern_crate = quote! { extern crate #seg; };
+            }
+        }
+
+        let generated = quote! {
+            #extern_crate
+            #safety impl #impl_generics #bound for #name #ty_generics #where_clause {
+                #body
+            }
+        };
+
+        quote! {
+            const _: () = { #generated };
+        }
+    }
+
+    /// Generate an impl block for the given struct. This impl block will
+    /// automatically use hygiene tricks to avoid polluting the caller's
+    /// namespace, and will automatically add trait bounds for generic type
+    /// parameters.
+    ///
+    /// # Syntax
+    ///
+    /// This function accepts its arguments as a `TokenStream`. The recommended way
+    /// to call this function is passing the result of invoking the `quote!`
+    /// macro to it.
+    ///
+    /// ```ignore
+    /// s.gen_impl(quote! {
+    ///     // You can write any items which you want to import into scope here.
+    ///     // For example, you may want to include an `extern crate` for the
+    ///     // crate which implements your trait. These items will only be
+    ///     // visible to the code you generate, and won't be exposed to the
+    ///     // consuming crate
+    ///     extern crate krate;
+    ///
+    ///     // You can also add `use` statements here to bring types or traits
+    ///     // into scope.
+    ///     //
+    ///     // WARNING: Try not to use common names here, because the stable
+    ///     // version of syn does not support hygiene and you could accidentally
+    ///     // shadow types from the caller crate.
+    ///     use krate::Trait as MyTrait;
+    ///
+    ///     // The actual impl block is a `gen impl` or `gen unsafe impl` block.
+    ///     // You can use `@Self` to refer to the structure's type.
+    ///     gen impl MyTrait for @Self {
+    ///         fn f(&self) { ... }
+    ///     }
+    /// })
+    /// ```
+    ///
+    /// The most common usage of this trait involves loading the crate the
+    /// target trait comes from with `extern crate`, and then invoking a `gen
+    /// impl` block.
+    ///
+    /// # Hygiene
+    ///
+    /// This method tries to handle hygiene intelligently for both stable and
+    /// unstable proc-macro implementations, however there are visible
+    /// differences.
+    ///
+    /// The output of every `gen_impl` function is wrapped in a dummy `const`
+    /// value, to ensure that it is given its own scope, and any values brought
+    /// into scope are not leaked to the calling crate.
+    ///
+    /// By default, the above invocation may generate an output like the
+    /// following:
+    ///
+    /// ```ignore
+    /// const _: () = {
+    ///     extern crate krate;
+    ///     use krate::Trait as MyTrait;
+    ///     impl<T> MyTrait for Struct<T> where T: MyTrait {
+    ///         fn f(&self) { ... }
+    ///     }
+    /// };
+    /// ```
+    ///
+    /// ### Using the `std` crate
+    ///
+    /// If you are using `quote!()` to implement your trait, with the
+    /// `proc-macro2/nightly` feature, `std` isn't considered to be in scope for
+    /// your macro. This means that if you use types from `std` in your
+    /// procedural macro, you'll want to explicitly load it with an `extern
+    /// crate std;`.
+    ///
+    /// ### Absolute paths
+    ///
+    /// You should generally avoid using absolute paths in your generated code,
+    /// as they will resolve very differently when using the stable and nightly
+    /// versions of `proc-macro2`. Instead, load the crates you need to use
+    /// explictly with `extern crate` and
+    ///
+    /// # Trait Bounds
+    ///
+    /// This method will automatically add trait bounds for any type parameters
+    /// which are referenced within the types of non-ignored fields.
+    ///
+    /// Additional type parameters may be added with the generics syntax after
+    /// the `impl` keyword.
+    ///
+    /// ### Type Macro Caveat
+    ///
+    /// If the method contains any macros in type position, all parameters will
+    /// be considered bound. This is because we cannot determine which type
+    /// parameters are bound by type macros.
+    ///
+    /// # Errors
+    ///
+    /// This function will generate a `compile_error!` if additional type
+    /// parameters added by `impl<..>` conflict with generic type parameters on
+    /// the original struct.
+    ///
+    /// # Panics
+    ///
+    /// This function will panic if the input `TokenStream` is not well-formed.
+    ///
+    /// # Example Usage
+    ///
+    /// ```
+    /// # use synstructure::*;
+    /// let di: syn::DeriveInput = syn::parse_quote! {
+    ///     enum A<T, U> {
+    ///         B(T),
+    ///         C(Option<U>),
+    ///     }
+    /// };
+    /// let mut s = Structure::new(&di);
+    ///
+    /// s.filter_variants(|v| v.ast().ident != "B");
+    ///
+    /// assert_eq!(
+    ///     s.gen_impl(quote! {
+    ///         extern crate krate;
+    ///         gen impl krate::Trait for @Self {
+    ///             fn a() {}
+    ///         }
+    ///     }).to_string(),
+    ///     quote!{
+    ///         const _: () = {
+    ///             extern crate krate;
+    ///             impl<T, U> krate::Trait for A<T, U>
+    ///             where
+    ///                 Option<U>: krate::Trait,
+    ///                 U: krate::Trait
+    ///             {
+    ///                 fn a() {}
+    ///             }
+    ///         };
+    ///     }.to_string()
+    /// );
+    ///
+    /// // NOTE: You can also add extra generics after the impl
+    /// assert_eq!(
+    ///     s.gen_impl(quote! {
+    ///         extern crate krate;
+    ///         gen impl<X: krate::OtherTrait> krate::Trait<X> for @Self
+    ///         where
+    ///             X: Send + Sync,
+    ///         {
+    ///             fn a() {}
+    ///         }
+    ///     }).to_string(),
+    ///     quote!{
+    ///         const _: () = {
+    ///             extern crate krate;
+    ///             impl<X: krate::OtherTrait, T, U> krate::Trait<X> for A<T, U>
+    ///             where
+    ///                 X: Send + Sync,
+    ///                 Option<U>: krate::Trait<X>,
+    ///                 U: krate::Trait<X>
+    ///             {
+    ///                 fn a() {}
+    ///             }
+    ///         };
+    ///     }.to_string()
+    /// );
+    ///
+    /// // NOTE: you can generate multiple traits with a single call
+    /// assert_eq!(
+    ///     s.gen_impl(quote! {
+    ///         extern crate krate;
+    ///
+    ///         gen impl krate::Trait for @Self {
+    ///             fn a() {}
+    ///         }
+    ///
+    ///         gen impl krate::OtherTrait for @Self {
+    ///             fn b() {}
+    ///         }
+    ///     }).to_string(),
+    ///     quote!{
+    ///         const _: () = {
+    ///             extern crate krate;
+    ///             impl<T, U> krate::Trait for A<T, U>
+    ///             where
+    ///                 Option<U>: krate::Trait,
+    ///                 U: krate::Trait
+    ///             {
+    ///                 fn a() {}
+    ///             }
+    ///
+    ///             impl<T, U> krate::OtherTrait for A<T, U>
+    ///             where
+    ///                 Option<U>: krate::OtherTrait,
+    ///                 U: krate::OtherTrait
+    ///             {
+    ///                 fn b() {}
+    ///             }
+    ///         };
+    ///     }.to_string()
+    /// );
+    /// ```
+    ///
+    /// Use `add_bounds` to change which bounds are generated.
+    pub fn gen_impl(&self, cfg: TokenStream) -> TokenStream {
+        Parser::parse2(
+            |input: ParseStream<'_>| -> Result<TokenStream> { self.gen_impl_parse(input, true) },
+            cfg,
+        )
+        .expect("Failed to parse gen_impl")
+    }
+
+    fn gen_impl_parse(&self, input: ParseStream<'_>, wrap: bool) -> Result<TokenStream> {
+        fn parse_prefix(input: ParseStream<'_>) -> Result<Option<Token![unsafe]>> {
+            if input.parse::<Ident>()? != "gen" {
+                return Err(input.error("Expected keyword `gen`"));
+            }
+            let safety = input.parse::<Option<Token![unsafe]>>()?;
+            let _ = input.parse::<Token![impl]>()?;
+            Ok(safety)
+        }
+
+        let mut before = vec![];
+        loop {
+            if parse_prefix(&input.fork()).is_ok() {
+                break;
+            }
+            before.push(input.parse::<TokenTree>()?);
+        }
+
+        // Parse the prefix "for real"
+        let safety = parse_prefix(input)?;
+
+        // optional `<>`
+        let mut generics = input.parse::<Generics>()?;
+
+        // @bound
+        let bound = input.parse::<TraitBound>()?;
+
+        // `for @Self`
+        let _ = input.parse::<Token![for]>()?;
+        let _ = input.parse::<Token![@]>()?;
+        let _ = input.parse::<Token![Self]>()?;
+
+        // optional `where ...`
+        generics.where_clause = input.parse()?;
+
+        // Body of the impl
+        let body;
+        braced!(body in input);
+        let body = body.parse::<TokenStream>()?;
+
+        // Try to parse the next entry in sequence. If this fails, we'll fall
+        // back to just parsing the entire rest of the TokenStream.
+        let maybe_next_impl = self.gen_impl_parse(&input.fork(), false);
+
+        // Eat tokens to the end. Whether or not our speculative nested parse
+        // succeeded, we're going to want to consume the rest of our input.
+        let mut after = input.parse::<TokenStream>()?;
+        if let Ok(stream) = maybe_next_impl {
+            after = stream;
+        }
+        assert!(input.is_empty(), "Should've consumed the rest of our input");
+
+        /* Codegen Logic */
+        let name = &self.ast.ident;
+
+        // Add the generics from the original struct in, and then add any
+        // additional trait bounds which we need on the type.
+        if let Err(err) = merge_generics(&mut generics, &self.ast.generics) {
+            // Report the merge error as a `compile_error!`, as it may be
+            // triggerable by an end-user.
+            return Ok(err.to_compile_error());
+        }
+
+        self.add_trait_bounds(&bound, &mut generics.where_clause, self.add_bounds);
+        let (impl_generics, _, where_clause) = generics.split_for_impl();
+        let (_, ty_generics, _) = self.ast.generics.split_for_impl();
+
+        let generated = quote! {
+            #(#before)*
+            #safety impl #impl_generics #bound for #name #ty_generics #where_clause {
+                #body
+            }
+            #after
+        };
+
+        if wrap {
+            Ok(quote! {
+                const _: () = { #generated };
+            })
+        } else {
+            Ok(generated)
+        }
+    }
+}
+
+/// Dumps an unpretty version of a tokenstream. Takes any type which implements
+/// `Display`.
+///
+/// This is mostly useful for visualizing the output of a procedural macro, as
+/// it makes it marginally more readable. It is used in the implementation of
+/// `test_derive!` to unprettily print the output.
+///
+/// # Stability
+///
+/// The stability of the output of this function is not guaranteed. Do not
+/// assert that the output of this function does not change between minor
+/// versions.
+///
+/// # Example
+///
+/// ```
+/// # use quote::quote;
+/// assert_eq!(
+///     synstructure::unpretty_print(quote! {
+///         const _: () = {
+///             extern crate krate;
+///             impl<T, U> krate::Trait for A<T, U>
+///             where
+///                 Option<U>: krate::Trait,
+///                 U: krate::Trait
+///             {
+///                 fn a() {}
+///             }
+///         };
+///     }),
+///     "const _ : (
+///     )
+/// = {
+///     extern crate krate ;
+///     impl < T , U > krate :: Trait for A < T , U > where Option < U > : krate :: Trait , U : krate :: Trait {
+///         fn a (
+///             )
+///         {
+///             }
+///         }
+///     }
+/// ;
+/// "
+/// )
+/// ```
+pub fn unpretty_print<T: std::fmt::Display>(ts: T) -> String {
+    let mut res = String::new();
+
+    let raw_s = ts.to_string();
+    let mut s = &raw_s[..];
+    let mut indent = 0;
+    while let Some(i) = s.find(&['(', '{', '[', ')', '}', ']', ';'][..]) {
+        match &s[i..=i] {
+            "(" | "{" | "[" => indent += 1,
+            ")" | "}" | "]" => indent -= 1,
+            _ => {}
+        }
+        res.push_str(&s[..=i]);
+        res.push('\n');
+        for _ in 0..indent {
+            res.push_str("    ");
+        }
+        s = trim_start_matches(&s[i + 1..], ' ');
+    }
+    res.push_str(s);
+    res
+}
+
+/// `trim_left_matches` has been deprecated in favor of `trim_start_matches`.
+/// This helper silences the warning, as we need to continue using
+/// `trim_left_matches` for rust 1.15 support.
+#[allow(deprecated)]
+fn trim_start_matches(s: &str, c: char) -> &str {
+    s.trim_left_matches(c)
+}
+
+/// Helper trait describing values which may be returned by macro implementation
+/// methods used by this crate's macros.
+pub trait MacroResult {
+    /// Convert this result into a `Result` for further processing / validation.
+    fn into_result(self) -> Result<TokenStream>;
+
+    /// Convert this result into a `proc_macro::TokenStream`, ready to return
+    /// from a native `proc_macro` implementation.
+    ///
+    /// If `into_result()` would return an `Err`, this method should instead
+    /// generate a `compile_error!` invocation to nicely report the error.
+    ///
+    /// *This method is available if `synstructure` is built with the
+    /// `"proc-macro"` feature.*
+    #[cfg(all(
+        not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
+        feature = "proc-macro"
+    ))]
+    fn into_stream(self) -> proc_macro::TokenStream
+    where
+        Self: Sized,
+    {
+        match self.into_result() {
+            Ok(ts) => ts.into(),
+            Err(err) => err.to_compile_error().into(),
+        }
+    }
+}
+
+#[cfg(all(
+    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
+    feature = "proc-macro"
+))]
+impl MacroResult for proc_macro::TokenStream {
+    fn into_result(self) -> Result<TokenStream> {
+        Ok(self.into())
+    }
+
+    fn into_stream(self) -> proc_macro::TokenStream {
+        self
+    }
+}
+
+impl MacroResult for TokenStream {
+    fn into_result(self) -> Result<TokenStream> {
+        Ok(self)
+    }
+}
+
+impl<T: MacroResult> MacroResult for Result<T> {
+    fn into_result(self) -> Result<TokenStream> {
+        match self {
+            Ok(v) => v.into_result(),
+            Err(err) => Err(err),
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    // Regression test for #48
+    #[test]
+    fn test_each_enum() {
+        let di: syn::DeriveInput = syn::parse_quote! {
+         enum A {
+             Foo(usize, bool),
+             Bar(bool, usize),
+             Baz(usize, bool, usize),
+             Quux(bool, usize, bool)
+         }
+        };
+        let mut s = Structure::new(&di);
+
+        s.filter(|bi| bi.ast().ty.to_token_stream().to_string() == "bool");
+
+        assert_eq!(
+            s.each(|bi| quote!(do_something(#bi))).to_string(),
+            quote! {
+                A::Foo(_, ref __binding_1,) => { { do_something(__binding_1) } }
+                A::Bar(ref __binding_0, ..) => { { do_something(__binding_0) } }
+                A::Baz(_, ref __binding_1, ..) => { { do_something(__binding_1) } }
+                A::Quux(ref __binding_0, _, ref __binding_2,) => {
+                    {
+                        do_something(__binding_0)
+                    }
+                    {
+                        do_something(__binding_2)
+                    }
+                }
+            }
+            .to_string()
+        );
+    }
+}
diff --git a/vendor/synstructure/src/macros.rs b/vendor/synstructure/src/macros.rs
new file mode 100644
index 00000000..64cbc1bc
--- /dev/null
+++ b/vendor/synstructure/src/macros.rs
@@ -0,0 +1,262 @@
+//! This module provides two utility macros for testing custom derives. They can
+//! be used together to eliminate some of the boilerplate required in order to
+//! declare and test custom derive implementations.
+
+// Re-exports used by the decl_derive! and test_derive!
+pub use proc_macro2::TokenStream as TokenStream2;
+pub use quote::quote;
+pub use syn::{parse2, parse_str, DeriveInput};
+
+#[cfg(all(
+    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
+    feature = "proc-macro"
+))]
+pub use proc_macro::TokenStream;
+#[cfg(all(
+    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
+    feature = "proc-macro"
+))]
+pub use syn::parse;
+
+/// The `decl_derive!` macro declares a custom derive wrapper. It will parse the
+/// incoming `TokenStream` into a `synstructure::Structure` object, and pass it
+/// into the inner function.
+///
+/// Your inner function should take a `synstructure::Structure` by value, and
+/// return a type implementing `synstructure::MacroResult`, for example:
+///
+/// ```
+/// fn derive_simple(input: synstructure::Structure) -> proc_macro2::TokenStream {
+///     unimplemented!()
+/// }
+///
+/// fn derive_result(input: synstructure::Structure)
+///     -> syn::Result<proc_macro2::TokenStream>
+/// {
+///     unimplemented!()
+/// }
+/// ```
+///
+/// # Usage
+///
+/// ### Without Attributes
+/// ```
+/// fn derive_interesting(_input: synstructure::Structure) -> proc_macro2::TokenStream {
+///     quote::quote! { ... }
+/// }
+///
+/// # const _IGNORE: &'static str = stringify! {
+/// decl_derive!([Interesting] => derive_interesting);
+/// # };
+/// ```
+///
+/// ### With Attributes
+/// ```
+/// # fn main() {}
+/// fn derive_interesting(_input: synstructure::Structure) -> proc_macro2::TokenStream {
+///     quote::quote! { ... }
+/// }
+///
+/// # const _IGNORE: &'static str = stringify! {
+/// decl_derive!([Interesting, attributes(interesting_ignore)] => derive_interesting);
+/// # };
+/// ```
+///
+/// ### Decl Attributes & Doc Comments
+/// ```
+/// # fn main() {}
+/// fn derive_interesting(_input: synstructure::Structure) -> proc_macro2::TokenStream {
+///     quote::quote! { ... }
+/// }
+///
+/// # const _IGNORE: &'static str = stringify! {
+/// decl_derive! {
+///     [Interesting] =>
+///     #[allow(some_lint)]
+///     /// Documentation Comments
+///     derive_interesting
+/// }
+/// # };
+/// ```
+///
+/// *This macro is available if `synstructure` is built with the `"proc-macro"`
+/// feature.*
+#[cfg(all(
+    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
+    feature = "proc-macro"
+))]
+#[macro_export]
+macro_rules! decl_derive {
+    // XXX: Switch to using this variant everywhere?
+    ([$derives:ident $($derive_t:tt)*] => $(#[$($attrs:tt)*])* $inner:path) => {
+        #[proc_macro_derive($derives $($derive_t)*)]
+        #[allow(non_snake_case)]
+        $(#[$($attrs)*])*
+        pub fn $derives(
+            i: $crate::macros::TokenStream
+        ) -> $crate::macros::TokenStream {
+            match $crate::macros::parse::<$crate::macros::DeriveInput>(i) {
+                ::core::result::Result::Ok(p) => {
+                    match $crate::Structure::try_new(&p) {
+                        ::core::result::Result::Ok(s) => $crate::MacroResult::into_stream($inner(s)),
+                        ::core::result::Result::Err(e) => {
+                            ::core::convert::Into::into(e.to_compile_error())
+                        }
+                    }
+                }
+                ::core::result::Result::Err(e) => {
+                    ::core::convert::Into::into(e.to_compile_error())
+                }
+            }
+        }
+    };
+}
+
+/// The `decl_attribute!` macro declares a custom attribute wrapper. It will
+/// parse the incoming `TokenStream` into a `synstructure::Structure` object,
+/// and pass it into the inner function.
+///
+/// Your inner function should have the following type:
+///
+/// ```
+/// fn attribute(
+///     attr: proc_macro2::TokenStream,
+///     structure: synstructure::Structure,
+/// ) -> proc_macro2::TokenStream {
+///     unimplemented!()
+/// }
+/// ```
+///
+/// # Usage
+///
+/// ```
+/// fn attribute_interesting(
+///     _attr: proc_macro2::TokenStream,
+///     _structure: synstructure::Structure,
+/// ) -> proc_macro2::TokenStream {
+///     quote::quote! { ... }
+/// }
+///
+/// # const _IGNORE: &'static str = stringify! {
+/// decl_attribute!([interesting] => attribute_interesting);
+/// # };
+/// ```
+///
+/// *This macro is available if `synstructure` is built with the `"proc-macro"`
+/// feature.*
+#[cfg(all(
+    not(all(target_arch = "wasm32", any(target_os = "unknown", target_os = "wasi"))),
+    feature = "proc-macro"
+))]
+#[macro_export]
+macro_rules! decl_attribute {
+    ([$attribute:ident] => $(#[$($attrs:tt)*])* $inner:path) => {
+        #[proc_macro_attribute]
+        $(#[$($attrs)*])*
+        pub fn $attribute(
+            attr: $crate::macros::TokenStream,
+            i: $crate::macros::TokenStream,
+        ) -> $crate::macros::TokenStream {
+            match $crate::macros::parse::<$crate::macros::DeriveInput>(i) {
+                ::core::result::Result::Ok(p) => match $crate::Structure::try_new(&p) {
+                    ::core::result::Result::Ok(s) => {
+                        $crate::MacroResult::into_stream(
+                            $inner(::core::convert::Into::into(attr), s)
+                        )
+                    }
+                    ::core::result::Result::Err(e) => {
+                        ::core::convert::Into::into(e.to_compile_error())
+                    }
+                },
+                ::core::result::Result::Err(e) => {
+                    ::core::convert::Into::into(e.to_compile_error())
+                }
+            }
+        }
+    };
+}
+
+/// Run a test on a custom derive. This macro expands both the original struct
+/// and the expansion to ensure that they compile correctly, and confirms that
+/// feeding the original struct into the named derive will produce the written
+/// output.
+///
+/// You can add `no_build` to the end of the macro invocation to disable
+/// checking that the written code compiles. This is useful in contexts where
+/// the procedural macro cannot depend on the crate where it is used during
+/// tests.
+///
+/// # Usage
+///
+/// ```
+/// fn test_derive_example(_s: synstructure::Structure)
+///     -> Result<proc_macro2::TokenStream, syn::Error>
+/// {
+///     Ok(quote::quote! { const YOUR_OUTPUT: &'static str = "here"; })
+/// }
+///
+/// fn main() {
+///     synstructure::test_derive!{
+///         test_derive_example {
+///             struct A;
+///         }
+///         expands to {
+///             const YOUR_OUTPUT: &'static str = "here";
+///         }
+///     }
+/// }
+/// ```
+#[macro_export]
+macro_rules! test_derive {
+    ($name:path { $($i:tt)* } expands to { $($o:tt)* }) => {
+        {
+            #[allow(dead_code)]
+            fn ensure_compiles() {
+                $($i)*
+                $($o)*
+            }
+
+            $crate::test_derive!($name { $($i)* } expands to { $($o)* } no_build);
+        }
+    };
+
+    ($name:path { $($i:tt)* } expands to { $($o:tt)* } no_build) => {
+        {
+            let i = $crate::macros::quote!( $($i)* );
+            let parsed = $crate::macros::parse2::<$crate::macros::DeriveInput>(i)
+                .expect(::core::concat!(
+                    "Failed to parse input to `#[derive(",
+                    ::core::stringify!($name),
+                    ")]`",
+                ));
+
+            let raw_res = $name($crate::Structure::new(&parsed));
+            let res = $crate::MacroResult::into_result(raw_res)
+                .expect(::core::concat!(
+                    "Procedural macro failed for `#[derive(",
+                    ::core::stringify!($name),
+                    ")]`",
+                ));
+
+            let expected_toks = $crate::macros::quote!( $($o)* );
+            if <$crate::macros::TokenStream2 as ::std::string::ToString>::to_string(&res)
+                != <$crate::macros::TokenStream2 as ::std::string::ToString>::to_string(&expected_toks)
+            {
+                panic!("\
+test_derive failed:
+expected:
+```
+{}
+```
+
+got:
+```
+{}
+```\n",
+                    $crate::unpretty_print(&expected_toks),
+                    $crate::unpretty_print(&res),
+                );
+            }
+        }
+    };
+}
diff --git a/vendor/tinystr/.cargo-checksum.json b/vendor/tinystr/.cargo-checksum.json
new file mode 100644
index 00000000..4447f6be
--- /dev/null
+++ b/vendor/tinystr/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"3d9722213fe432999bc943056f9c51eefa21023b6b069122ae7e3890a4d0e76f","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"b7b7a33a29865bc653a6696b079c1527ba61cd58a815fc792ed6fa5bfc680ad5","benches/common/mod.rs":"7e709fcabc2f96b10d3db8968ef3ea7fcc25e88211ce97b64b2126c7a0d7387a","benches/construct.rs":"718c4207e07091d8c16e78824f1850dbb218a02e10300117036742a6e52d2f61","benches/overview.rs":"3e5cb89dccff91ce8d53e36a6db8e548a07dd440bc6b79fb53c7b1734512dd1b","benches/read.rs":"cbf349393a50eb90e7ba53906f98a689d585242292f867a37acf6842263af4d9","benches/serde.rs":"5c88866d08c07088b82dbd5472e6276c632d11e064417f5d8f2025a5ade867f0","src/ascii.rs":"0edd0e37be444363806d571c642001c15693f5d5b76a7fb2579533993fb5d2b5","src/asciibyte.rs":"fa29de7403c0424c52c2f30bb47002b9abf4bd08b302c411ffe679d3decfb8de","src/databake.rs":"86d4ee8fd748a2a78dfd4ca4cfc7c3b5abdaee8c0a40f582a234793af4c459fe","src/error.rs":"69719fd65981c5f6ac633da60a075bbbd98a02f60e10db48f9dc626ed9b6e498","src/int_ops.rs":"0687e550ff1386aa0bfb936de8344b4161622d346c18abb332ccce4163c03183","src/lib.rs":"f453563c4415f8598c287bd938d450d7326ee03c99e9276316308a3b22edba62","src/macros.rs":"c6fe247da7a7477dab2549727fca78d7476167b383628b0876fe8e3d71165507","src/serde.rs":"d45712df0dd81a7c9e07cb57d445b1d746192db90c954159aeeb59bef4ce85a0","src/ule.rs":"193b183c34269e2c6c0438c2f5e2a89edec441a7b8f5bc465f3a3b8d52af1ca8","src/unvalidated.rs":"7887cf36d4d8ed87f8352ebe188bcd1ddd89f26818a97a212eee12718c810db9","tests/serde.rs":"cf8cee82f731928375888d1b5e7e5e50368d3e16ce372fced230c9b1ee2a7451"},"package":"5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"}
\ No newline at end of file
diff --git a/vendor/tinystr/Cargo.toml b/vendor/tinystr/Cargo.toml
new file mode 100644
index 00000000..a44b5bd9
--- /dev/null
+++ b/vendor/tinystr/Cargo.toml
@@ -0,0 +1,129 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.81"
+name = "tinystr"
+version = "0.8.1"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "A small ASCII-only bounded length string representation."
+readme = "README.md"
+keywords = [
+    "string",
+    "str",
+    "small",
+    "tiny",
+    "no_std",
+]
+categories = ["data-structures"]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.docs.rs]
+all-features = true
+
+[package.metadata.workspaces]
+independent = true
+
+[features]
+alloc = ["zerovec?/alloc"]
+databake = ["dep:databake"]
+default = ["alloc"]
+serde = ["dep:serde"]
+std = []
+zerovec = ["dep:zerovec"]
+
+[lib]
+name = "tinystr"
+path = "src/lib.rs"
+bench = false
+
+[[test]]
+name = "serde"
+path = "tests/serde.rs"
+required-features = ["serde"]
+
+[[bench]]
+name = "construct"
+path = "benches/construct.rs"
+harness = false
+
+[[bench]]
+name = "overview"
+path = "benches/overview.rs"
+harness = false
+
+[[bench]]
+name = "read"
+path = "benches/read.rs"
+harness = false
+
+[[bench]]
+name = "serde"
+path = "benches/serde.rs"
+harness = false
+required-features = ["serde"]
+
+[dependencies.databake]
+version = "0.2.0"
+optional = true
+default-features = false
+
+[dependencies.displaydoc]
+version = "0.2.3"
+default-features = false
+
+[dependencies.serde]
+version = "1.0.110"
+features = ["alloc"]
+optional = true
+default-features = false
+
+[dependencies.zerovec]
+version = "0.11.1"
+optional = true
+default-features = false
+
+[dev-dependencies.bincode]
+version = "1.3.1"
+
+[dev-dependencies.postcard]
+version = "1.0.3"
+features = ["use-std"]
+default-features = false
+
+[dev-dependencies.rand]
+version = "0.8"
+features = ["small_rng"]
+
+[dev-dependencies.serde_json]
+version = "1.0.45"
+features = ["alloc"]
+
+[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
+version = "0.5.0"
diff --git a/vendor/tinystr/LICENSE b/vendor/tinystr/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/tinystr/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/tinystr/README.md b/vendor/tinystr/README.md
new file mode 100644
index 00000000..92b74c0d
--- /dev/null
+++ b/vendor/tinystr/README.md
@@ -0,0 +1,57 @@
+# tinystr [![crates.io](https://img.shields.io/crates/v/tinystr)](https://crates.io/crates/tinystr)
+
+<!-- cargo-rdme start -->
+
+`tinystr` is a utility crate of the [`ICU4X`] project.
+
+It includes [`TinyAsciiStr`], a core API for representing small ASCII-only bounded length strings.
+
+It is optimized for operations on strings of size 8 or smaller. When use cases involve comparison
+and conversion of strings for lowercase/uppercase/titlecase, or checking
+numeric/alphabetic/alphanumeric, `TinyAsciiStr` is the edge performance library.
+
+## Examples
+
+```rust
+use tinystr::TinyAsciiStr;
+
+let s1: TinyAsciiStr<4> = "tEsT".parse().expect("Failed to parse.");
+
+assert_eq!(s1, "tEsT");
+assert_eq!(s1.to_ascii_uppercase(), "TEST");
+assert_eq!(s1.to_ascii_lowercase(), "test");
+assert_eq!(s1.to_ascii_titlecase(), "Test");
+assert!(s1.is_ascii_alphanumeric());
+assert!(!s1.is_ascii_numeric());
+
+let s2 = TinyAsciiStr::<8>::try_from_raw(*b"New York")
+    .expect("Failed to parse.");
+
+assert_eq!(s2, "New York");
+assert_eq!(s2.to_ascii_uppercase(), "NEW YORK");
+assert_eq!(s2.to_ascii_lowercase(), "new york");
+assert_eq!(s2.to_ascii_titlecase(), "New york");
+assert!(!s2.is_ascii_alphanumeric());
+```
+
+## Details
+
+When strings are of size 8 or smaller, the struct transforms the strings as `u32`/`u64` and uses
+bitmasking to provide basic string manipulation operations:
+* `is_ascii_numeric`
+* `is_ascii_alphabetic`
+* `is_ascii_alphanumeric`
+* `to_ascii_lowercase`
+* `to_ascii_uppercase`
+* `to_ascii_titlecase`
+* `PartialEq`
+
+`TinyAsciiStr` will fall back to `u8` character manipulation for strings of length greater than 8.
+
+[`ICU4X`]: ../icu/index.html
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/tinystr/benches/common/mod.rs b/vendor/tinystr/benches/common/mod.rs
new file mode 100644
index 00000000..84090b6c
--- /dev/null
+++ b/vendor/tinystr/benches/common/mod.rs
@@ -0,0 +1,55 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// This file was adapted from parts of https://github.com/zbraniecki/tinystr
+
+pub static STRINGS_4: &[&str] = &[
+    "US", "GB", "AR", "Hans", "CN", "AT", "PL", "FR", "AT", "Cyrl", "SR", "NO", "FR", "MK", "UK",
+];
+
+pub static STRINGS_8: &[&str] = &[
+    "Latn", "windows", "AR", "Hans", "macos", "AT", "pl", "FR", "en", "Cyrl", "SR", "NO", "419",
+    "und", "UK",
+];
+
+pub static STRINGS_16: &[&str] = &[
+    "Latn",
+    "windows",
+    "AR",
+    "Hans",
+    "macos",
+    "AT",
+    "infiniband",
+    "FR",
+    "en",
+    "Cyrl",
+    "FromIntegral",
+    "NO",
+    "419",
+    "MacintoshOSX2019",
+    "UK",
+];
+
+#[macro_export]
+macro_rules! bench_block {
+    ($c:expr, $name:expr, $action:ident) => {
+        let mut group4 = $c.benchmark_group(&format!("{}/4", $name));
+        group4.bench_function("String", $action!(String, STRINGS_4));
+        group4.bench_function("TinyAsciiStr<4>", $action!(TinyAsciiStr<4>, STRINGS_4));
+        group4.bench_function("TinyAsciiStr<8>", $action!(TinyAsciiStr<8>, STRINGS_4));
+        group4.bench_function("TinyAsciiStr<16>", $action!(TinyAsciiStr<16>, STRINGS_4));
+        group4.finish();
+
+        let mut group8 = $c.benchmark_group(&format!("{}/8", $name));
+        group8.bench_function("String", $action!(String, STRINGS_8));
+        group8.bench_function("TinyAsciiStr<8>", $action!(TinyAsciiStr<8>, STRINGS_8));
+        group8.bench_function("TinyAsciiStr<16>", $action!(TinyAsciiStr<16>, STRINGS_8));
+        group8.finish();
+
+        let mut group16 = $c.benchmark_group(&format!("{}/16", $name));
+        group16.bench_function("String", $action!(String, STRINGS_16));
+        group16.bench_function("TinyAsciiStr<16>", $action!(TinyAsciiStr<16>, STRINGS_16));
+        group16.finish();
+    };
+}
diff --git a/vendor/tinystr/benches/construct.rs b/vendor/tinystr/benches/construct.rs
new file mode 100644
index 00000000..09180298
--- /dev/null
+++ b/vendor/tinystr/benches/construct.rs
@@ -0,0 +1,65 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// This file was adapted from https://github.com/zbraniecki/tinystr
+
+mod common;
+use common::*;
+
+use criterion::black_box;
+use criterion::criterion_group;
+use criterion::criterion_main;
+use criterion::Bencher;
+use criterion::Criterion;
+
+use tinystr::TinyAsciiStr;
+
+fn construct_from_str(c: &mut Criterion) {
+    macro_rules! cfs {
+        ($r:ty, $inputs:expr) => {
+            |b: &mut Bencher| {
+                b.iter(|| {
+                    for s in $inputs {
+                        let _: $r = black_box(s.parse().unwrap());
+                    }
+                })
+            }
+        };
+    }
+
+    bench_block!(c, "construct_from_str", cfs);
+}
+
+fn construct_from_utf8(c: &mut Criterion) {
+    macro_rules! cfu {
+        ($r:ty, $inputs:expr) => {
+            |b| {
+                let raw: Vec<&[u8]> = $inputs.iter().map(|s| s.as_bytes()).collect();
+                b.iter(move || {
+                    for u in &raw {
+                        let _ = black_box(<$r>::try_from_utf8(*u).unwrap());
+                    }
+                })
+            }
+        };
+    }
+
+    let mut group4 = c.benchmark_group("construct_from_utf8/4");
+    group4.bench_function("TinyAsciiStr<4>", cfu!(TinyAsciiStr<4>, STRINGS_4));
+    group4.bench_function("TinyAsciiStr<8>", cfu!(TinyAsciiStr<8>, STRINGS_4));
+    group4.bench_function("TinyAsciiStr<16>", cfu!(TinyAsciiStr<16>, STRINGS_4));
+    group4.finish();
+
+    let mut group8 = c.benchmark_group("construct_from_utf8/8");
+    group8.bench_function("TinyAsciiStr<8>", cfu!(TinyAsciiStr<8>, STRINGS_8));
+    group8.bench_function("TinyAsciiStr<16>", cfu!(TinyAsciiStr<16>, STRINGS_8));
+    group8.finish();
+
+    let mut group16 = c.benchmark_group("construct_from_utf8/16");
+    group16.bench_function("TinyAsciiStr<16>", cfu!(TinyAsciiStr<16>, STRINGS_16));
+    group16.finish();
+}
+
+criterion_group!(benches, construct_from_str, construct_from_utf8,);
+criterion_main!(benches);
diff --git a/vendor/tinystr/benches/overview.rs b/vendor/tinystr/benches/overview.rs
new file mode 100644
index 00000000..474ff4b9
--- /dev/null
+++ b/vendor/tinystr/benches/overview.rs
@@ -0,0 +1,129 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod common;
+use common::*;
+
+use criterion::black_box;
+use criterion::criterion_group;
+use criterion::criterion_main;
+use criterion::Criterion;
+
+use tinystr::TinyAsciiStr;
+
+fn overview(c: &mut Criterion) {
+    let mut g = c.benchmark_group("overview");
+
+    g.bench_function("construct/utf8/TinyAsciiStr", |b| {
+        b.iter(|| {
+            for s in STRINGS_4 {
+                let _: TinyAsciiStr<4> =
+                    TinyAsciiStr::try_from_utf8(black_box(s.as_bytes())).unwrap();
+                let _: TinyAsciiStr<8> =
+                    TinyAsciiStr::try_from_utf8(black_box(s.as_bytes())).unwrap();
+                let _: TinyAsciiStr<16> =
+                    TinyAsciiStr::try_from_utf8(black_box(s.as_bytes())).unwrap();
+            }
+            for s in STRINGS_8 {
+                let _: TinyAsciiStr<8> =
+                    TinyAsciiStr::try_from_utf8(black_box(s.as_bytes())).unwrap();
+                let _: TinyAsciiStr<16> =
+                    TinyAsciiStr::try_from_utf8(black_box(s.as_bytes())).unwrap();
+            }
+            for s in STRINGS_16 {
+                let _: TinyAsciiStr<16> =
+                    TinyAsciiStr::try_from_utf8(black_box(s.as_bytes())).unwrap();
+            }
+        });
+    });
+
+    let strings_4_utf16: Vec<Vec<u16>> = STRINGS_4
+        .iter()
+        .map(|s| s.encode_utf16().collect())
+        .collect();
+
+    let strings_8_utf16: Vec<Vec<u16>> = STRINGS_8
+        .iter()
+        .map(|s| s.encode_utf16().collect())
+        .collect();
+
+    let strings_16_utf16: Vec<Vec<u16>> = STRINGS_16
+        .iter()
+        .map(|s| s.encode_utf16().collect())
+        .collect();
+
+    g.bench_function("construct/utf16/TinyAsciiStr", |b| {
+        b.iter(|| {
+            for s in strings_4_utf16.iter() {
+                let _: TinyAsciiStr<4> = TinyAsciiStr::try_from_utf16(black_box(s)).unwrap();
+                let _: TinyAsciiStr<8> = TinyAsciiStr::try_from_utf16(black_box(s)).unwrap();
+                let _: TinyAsciiStr<16> = TinyAsciiStr::try_from_utf16(black_box(s)).unwrap();
+            }
+            for s in strings_8_utf16.iter() {
+                let _: TinyAsciiStr<8> = TinyAsciiStr::try_from_utf16(black_box(s)).unwrap();
+                let _: TinyAsciiStr<16> = TinyAsciiStr::try_from_utf16(black_box(s)).unwrap();
+            }
+            for s in strings_16_utf16.iter() {
+                let _: TinyAsciiStr<16> = TinyAsciiStr::try_from_utf16(black_box(s)).unwrap();
+            }
+        });
+    });
+
+    let parsed_ascii_4: Vec<TinyAsciiStr<4>> = STRINGS_4
+        .iter()
+        .map(|s| s.parse::<TinyAsciiStr<4>>().unwrap())
+        .collect();
+    let parsed_ascii_8: Vec<TinyAsciiStr<8>> = STRINGS_4
+        .iter()
+        .chain(STRINGS_8)
+        .map(|s| s.parse::<TinyAsciiStr<8>>().unwrap())
+        .collect();
+    let parsed_ascii_16: Vec<TinyAsciiStr<16>> = STRINGS_4
+        .iter()
+        .chain(STRINGS_8)
+        .chain(STRINGS_16)
+        .map(|s| s.parse::<TinyAsciiStr<16>>().unwrap())
+        .collect();
+
+    g.bench_function("read/TinyAsciiStr", |b| {
+        b.iter(|| {
+            let mut collector: usize = 0;
+            for t in black_box(&parsed_ascii_4) {
+                let s: &str = t;
+                collector += s.bytes().map(usize::from).sum::<usize>();
+            }
+            for t in black_box(&parsed_ascii_8) {
+                let s: &str = t;
+                collector += s.bytes().map(usize::from).sum::<usize>();
+            }
+            for t in black_box(&parsed_ascii_16) {
+                let s: &str = t;
+                collector += s.bytes().map(usize::from).sum::<usize>();
+            }
+            collector
+        });
+    });
+
+    g.bench_function("compare/TinyAsciiStr", |b| {
+        b.iter(|| {
+            let mut collector: usize = 0;
+            for ts in black_box(&parsed_ascii_4).windows(2) {
+                let o = ts[0].cmp(&ts[1]);
+                collector ^= o as usize;
+            }
+            for ts in black_box(&parsed_ascii_8).windows(2) {
+                let o = ts[0].cmp(&ts[1]);
+                collector ^= o as usize;
+            }
+            for ts in black_box(&parsed_ascii_16).windows(2) {
+                let o = ts[0].cmp(&ts[1]);
+                collector ^= o as usize;
+            }
+            collector
+        });
+    });
+}
+
+criterion_group!(benches, overview,);
+criterion_main!(benches);
diff --git a/vendor/tinystr/benches/read.rs b/vendor/tinystr/benches/read.rs
new file mode 100644
index 00000000..793bb14f
--- /dev/null
+++ b/vendor/tinystr/benches/read.rs
@@ -0,0 +1,34 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod common;
+use common::*;
+
+use criterion::black_box;
+use criterion::criterion_group;
+use criterion::criterion_main;
+use criterion::Bencher;
+use criterion::Criterion;
+
+use tinystr::TinyAsciiStr;
+
+fn read(c: &mut Criterion) {
+    macro_rules! cfs {
+        ($r:ty, $inputs:expr) => {
+            |b: &mut Bencher| {
+                let parsed: Vec<$r> = $inputs.iter().map(|s| s.parse().unwrap()).collect();
+                b.iter(|| {
+                    for s in &parsed {
+                        let _: &str = black_box(&**s);
+                    }
+                })
+            }
+        };
+    }
+
+    bench_block!(c, "read", cfs);
+}
+
+criterion_group!(benches, read,);
+criterion_main!(benches);
diff --git a/vendor/tinystr/benches/serde.rs b/vendor/tinystr/benches/serde.rs
new file mode 100644
index 00000000..b0341221
--- /dev/null
+++ b/vendor/tinystr/benches/serde.rs
@@ -0,0 +1,37 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod common;
+use common::*;
+
+use criterion::black_box;
+use criterion::criterion_group;
+use criterion::criterion_main;
+use criterion::Bencher;
+use criterion::Criterion;
+
+use tinystr::TinyAsciiStr;
+
+fn deserialize(c: &mut Criterion) {
+    macro_rules! cfs {
+        ($r:ty, $inputs:expr) => {
+            |b: &mut Bencher| {
+                let serialized: Vec<Vec<u8>> = $inputs
+                    .iter()
+                    .map(|s| postcard::to_stdvec(&s.parse::<$r>().unwrap()).unwrap())
+                    .collect();
+                b.iter(|| {
+                    for bytes in &serialized {
+                        let _: Result<$r, _> = black_box(postcard::from_bytes(bytes));
+                    }
+                })
+            }
+        };
+    }
+
+    bench_block!(c, "deserialize", cfs);
+}
+
+criterion_group!(benches, deserialize,);
+criterion_main!(benches);
diff --git a/vendor/tinystr/src/ascii.rs b/vendor/tinystr/src/ascii.rs
new file mode 100644
index 00000000..89ec742b
--- /dev/null
+++ b/vendor/tinystr/src/ascii.rs
@@ -0,0 +1,1175 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::asciibyte::AsciiByte;
+use crate::int_ops::{Aligned4, Aligned8};
+use crate::ParseError;
+use core::borrow::Borrow;
+use core::fmt;
+use core::ops::Deref;
+use core::str::{self, FromStr};
+
+#[repr(transparent)]
+#[derive(PartialEq, Eq, Ord, PartialOrd, Copy, Clone, Hash)]
+pub struct TinyAsciiStr<const N: usize> {
+    bytes: [AsciiByte; N],
+}
+
+impl<const N: usize> TinyAsciiStr<N> {
+    #[inline]
+    pub const fn try_from_str(s: &str) -> Result<Self, ParseError> {
+        Self::try_from_utf8(s.as_bytes())
+    }
+
+    /// Creates a `TinyAsciiStr<N>` from the given UTF-8 slice.
+    /// `code_units` may contain at most `N` non-null ASCII code points.
+    #[inline]
+    pub const fn try_from_utf8(code_units: &[u8]) -> Result<Self, ParseError> {
+        Self::try_from_utf8_inner(code_units, false)
+    }
+
+    /// Creates a `TinyAsciiStr<N>` from the given UTF-16 slice.
+    /// `code_units` may contain at most `N` non-null ASCII code points.
+    #[inline]
+    pub const fn try_from_utf16(code_units: &[u16]) -> Result<Self, ParseError> {
+        Self::try_from_utf16_inner(code_units, 0, code_units.len(), false)
+    }
+
+    /// Creates a `TinyAsciiStr<N>` from a UTF-8 slice, replacing invalid code units.
+    ///
+    /// Invalid code units, as well as null or non-ASCII code points
+    /// (i.e. those outside the range U+0001..=U+007F`)
+    /// will be replaced with the replacement byte.
+    ///
+    /// The input slice will be truncated if its length exceeds `N`.
+    pub const fn from_utf8_lossy(code_units: &[u8], replacement: u8) -> Self {
+        let mut out = [0; N];
+        let mut i = 0;
+        // Ord is not available in const, so no `.min(N)`
+        let len = if code_units.len() > N {
+            N
+        } else {
+            code_units.len()
+        };
+
+        // Indexing is protected by the len check above
+        #[allow(clippy::indexing_slicing)]
+        while i < len {
+            let b = code_units[i];
+            if b > 0 && b < 0x80 {
+                out[i] = b;
+            } else {
+                out[i] = replacement;
+            }
+            i += 1;
+        }
+
+        Self {
+            // SAFETY: `out` only contains ASCII bytes and has same size as `self.bytes`
+            bytes: unsafe { AsciiByte::to_ascii_byte_array(&out) },
+        }
+    }
+
+    /// Creates a `TinyAsciiStr<N>` from a UTF-16 slice, replacing invalid code units.
+    ///
+    /// Invalid code units, as well as null or non-ASCII code points
+    /// (i.e. those outside the range U+0001..=U+007F`)
+    /// will be replaced with the replacement byte.
+    ///
+    /// The input slice will be truncated if its length exceeds `N`.
+    pub const fn from_utf16_lossy(code_units: &[u16], replacement: u8) -> Self {
+        let mut out = [0; N];
+        let mut i = 0;
+        // Ord is not available in const, so no `.min(N)`
+        let len = if code_units.len() > N {
+            N
+        } else {
+            code_units.len()
+        };
+
+        // Indexing is protected by the len check above
+        #[allow(clippy::indexing_slicing)]
+        while i < len {
+            let b = code_units[i];
+            if b > 0 && b < 0x80 {
+                out[i] = b as u8;
+            } else {
+                out[i] = replacement;
+            }
+            i += 1;
+        }
+
+        Self {
+            // SAFETY: `out` only contains ASCII bytes and has same size as `self.bytes`
+            bytes: unsafe { AsciiByte::to_ascii_byte_array(&out) },
+        }
+    }
+
+    /// Attempts to parse a fixed-length byte array to a `TinyAsciiStr`.
+    ///
+    /// The byte array may contain trailing NUL bytes.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use tinystr::tinystr;
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// assert_eq!(
+    ///     TinyAsciiStr::<3>::try_from_raw(*b"GB\0"),
+    ///     Ok(tinystr!(3, "GB"))
+    /// );
+    /// assert_eq!(
+    ///     TinyAsciiStr::<3>::try_from_raw(*b"USD"),
+    ///     Ok(tinystr!(3, "USD"))
+    /// );
+    /// assert!(matches!(TinyAsciiStr::<3>::try_from_raw(*b"\0A\0"), Err(_)));
+    /// ```
+    pub const fn try_from_raw(raw: [u8; N]) -> Result<Self, ParseError> {
+        Self::try_from_utf8_inner(&raw, true)
+    }
+
+    pub(crate) const fn try_from_utf8_inner(
+        code_units: &[u8],
+        allow_trailing_null: bool,
+    ) -> Result<Self, ParseError> {
+        if code_units.len() > N {
+            return Err(ParseError::TooLong {
+                max: N,
+                len: code_units.len(),
+            });
+        }
+
+        let mut out = [0; N];
+        let mut i = 0;
+        let mut found_null = false;
+        // Indexing is protected by TinyStrError::TooLarge
+        #[allow(clippy::indexing_slicing)]
+        while i < code_units.len() {
+            let b = code_units[i];
+
+            if b == 0 {
+                found_null = true;
+            } else if b >= 0x80 {
+                return Err(ParseError::NonAscii);
+            } else if found_null {
+                // Error if there are contentful bytes after null
+                return Err(ParseError::ContainsNull);
+            }
+            out[i] = b;
+
+            i += 1;
+        }
+
+        if !allow_trailing_null && found_null {
+            // We found some trailing nulls, error
+            return Err(ParseError::ContainsNull);
+        }
+
+        Ok(Self {
+            // SAFETY: `out` only contains ASCII bytes and has same size as `self.bytes`
+            bytes: unsafe { AsciiByte::to_ascii_byte_array(&out) },
+        })
+    }
+
+    pub(crate) const fn try_from_utf16_inner(
+        code_units: &[u16],
+        start: usize,
+        end: usize,
+        allow_trailing_null: bool,
+    ) -> Result<Self, ParseError> {
+        let len = end - start;
+        if len > N {
+            return Err(ParseError::TooLong { max: N, len });
+        }
+
+        let mut out = [0; N];
+        let mut i = 0;
+        let mut found_null = false;
+        // Indexing is protected by TinyStrError::TooLarge
+        #[allow(clippy::indexing_slicing)]
+        while i < len {
+            let b = code_units[start + i];
+
+            if b == 0 {
+                found_null = true;
+            } else if b >= 0x80 {
+                return Err(ParseError::NonAscii);
+            } else if found_null {
+                // Error if there are contentful bytes after null
+                return Err(ParseError::ContainsNull);
+            }
+            out[i] = b as u8;
+
+            i += 1;
+        }
+
+        if !allow_trailing_null && found_null {
+            // We found some trailing nulls, error
+            return Err(ParseError::ContainsNull);
+        }
+
+        Ok(Self {
+            // SAFETY: `out` only contains ASCII bytes and has same size as `self.bytes`
+            bytes: unsafe { AsciiByte::to_ascii_byte_array(&out) },
+        })
+    }
+
+    #[inline]
+    pub const fn as_str(&self) -> &str {
+        // as_utf8 is valid utf8
+        unsafe { str::from_utf8_unchecked(self.as_utf8()) }
+    }
+
+    #[inline]
+    #[must_use]
+    pub const fn len(&self) -> usize {
+        if N <= 4 {
+            Aligned4::from_ascii_bytes(&self.bytes).len()
+        } else if N <= 8 {
+            Aligned8::from_ascii_bytes(&self.bytes).len()
+        } else {
+            let mut i = 0;
+            #[allow(clippy::indexing_slicing)] // < N is safe
+            while i < N && self.bytes[i] as u8 != AsciiByte::B0 as u8 {
+                i += 1
+            }
+            i
+        }
+    }
+
+    #[inline]
+    #[must_use]
+    pub const fn is_empty(&self) -> bool {
+        self.bytes[0] as u8 == AsciiByte::B0 as u8
+    }
+
+    #[inline]
+    #[must_use]
+    pub const fn as_utf8(&self) -> &[u8] {
+        // Safe because `self.bytes.as_slice()` pointer-casts to `&[u8]`,
+        // and changing the length of that slice to self.len() < N is safe.
+        unsafe {
+            core::slice::from_raw_parts(self.bytes.as_slice().as_ptr() as *const u8, self.len())
+        }
+    }
+
+    #[inline]
+    #[must_use]
+    pub const fn all_bytes(&self) -> &[u8; N] {
+        // SAFETY: `self.bytes` has same size as [u8; N]
+        unsafe { &*(self.bytes.as_ptr() as *const [u8; N]) }
+    }
+
+    #[inline]
+    #[must_use]
+    /// Resizes a `TinyAsciiStr<N>` to a `TinyAsciiStr<M>`.
+    ///
+    /// If `M < len()` the string gets truncated, otherwise only the
+    /// memory representation changes.
+    pub const fn resize<const M: usize>(self) -> TinyAsciiStr<M> {
+        let mut bytes = [0; M];
+        let mut i = 0;
+        // Indexing is protected by the loop guard
+        #[allow(clippy::indexing_slicing)]
+        while i < M && i < N {
+            bytes[i] = self.bytes[i] as u8;
+            i += 1;
+        }
+        // `self.bytes` only contains ASCII bytes, with no null bytes between
+        // ASCII characters, so this also holds for `bytes`.
+        unsafe { TinyAsciiStr::from_utf8_unchecked(bytes) }
+    }
+
+    #[inline]
+    #[must_use]
+    /// Returns a `TinyAsciiStr<Q>` with the concatenation of this string,
+    /// `TinyAsciiStr<N>`, and another string, `TinyAsciiStr<M>`.
+    ///
+    /// If `Q < N + M`, the string gets truncated.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::tinystr;
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let abc = tinystr!(6, "abc");
+    /// let defg = tinystr!(6, "defg");
+    ///
+    /// // The concatenation is successful if Q is large enough...
+    /// assert_eq!(abc.concat(defg), tinystr!(16, "abcdefg"));
+    /// assert_eq!(abc.concat(defg), tinystr!(12, "abcdefg"));
+    /// assert_eq!(abc.concat(defg), tinystr!(8, "abcdefg"));
+    /// assert_eq!(abc.concat(defg), tinystr!(7, "abcdefg"));
+    ///
+    /// /// ...but it truncates of Q is too small.
+    /// assert_eq!(abc.concat(defg), tinystr!(6, "abcdef"));
+    /// assert_eq!(abc.concat(defg), tinystr!(2, "ab"));
+    /// ```
+    pub const fn concat<const M: usize, const Q: usize>(
+        self,
+        other: TinyAsciiStr<M>,
+    ) -> TinyAsciiStr<Q> {
+        let mut result = self.resize::<Q>();
+        let mut i = self.len();
+        let mut j = 0;
+        // Indexing is protected by the loop guard
+        #[allow(clippy::indexing_slicing)]
+        while i < Q && j < M {
+            result.bytes[i] = other.bytes[j];
+            i += 1;
+            j += 1;
+        }
+        result
+    }
+
+    /// # Safety
+    /// Must be called with a bytes array made of valid ASCII bytes, with no null bytes
+    /// between ASCII characters
+    #[must_use]
+    pub const unsafe fn from_utf8_unchecked(code_units: [u8; N]) -> Self {
+        Self {
+            bytes: AsciiByte::to_ascii_byte_array(&code_units),
+        }
+    }
+}
+
+macro_rules! check_is {
+    ($self:ident, $check_int:ident, $check_u8:ident) => {
+        if N <= 4 {
+            Aligned4::from_ascii_bytes(&$self.bytes).$check_int()
+        } else if N <= 8 {
+            Aligned8::from_ascii_bytes(&$self.bytes).$check_int()
+        } else {
+            let mut i = 0;
+            // Won't panic because self.bytes has length N
+            #[allow(clippy::indexing_slicing)]
+            while i < N && $self.bytes[i] as u8 != AsciiByte::B0 as u8 {
+                if !($self.bytes[i] as u8).$check_u8() {
+                    return false;
+                }
+                i += 1;
+            }
+            true
+        }
+    };
+    ($self:ident, $check_int:ident, !$check_u8_0_inv:ident, !$check_u8_1_inv:ident) => {
+        if N <= 4 {
+            Aligned4::from_ascii_bytes(&$self.bytes).$check_int()
+        } else if N <= 8 {
+            Aligned8::from_ascii_bytes(&$self.bytes).$check_int()
+        } else {
+            // Won't panic because N is > 8
+            if ($self.bytes[0] as u8).$check_u8_0_inv() {
+                return false;
+            }
+            let mut i = 1;
+            // Won't panic because self.bytes has length N
+            #[allow(clippy::indexing_slicing)]
+            while i < N && $self.bytes[i] as u8 != AsciiByte::B0 as u8 {
+                if ($self.bytes[i] as u8).$check_u8_1_inv() {
+                    return false;
+                }
+                i += 1;
+            }
+            true
+        }
+    };
+    ($self:ident, $check_int:ident, $check_u8_0_inv:ident, $check_u8_1_inv:ident) => {
+        if N <= 4 {
+            Aligned4::from_ascii_bytes(&$self.bytes).$check_int()
+        } else if N <= 8 {
+            Aligned8::from_ascii_bytes(&$self.bytes).$check_int()
+        } else {
+            // Won't panic because N is > 8
+            if !($self.bytes[0] as u8).$check_u8_0_inv() {
+                return false;
+            }
+            let mut i = 1;
+            // Won't panic because self.bytes has length N
+            #[allow(clippy::indexing_slicing)]
+            while i < N && $self.bytes[i] as u8 != AsciiByte::B0 as u8 {
+                if !($self.bytes[i] as u8).$check_u8_1_inv() {
+                    return false;
+                }
+                i += 1;
+            }
+            true
+        }
+    };
+}
+
+impl<const N: usize> TinyAsciiStr<N> {
+    /// Checks if the value is composed of ASCII alphabetic characters:
+    ///
+    ///  * U+0041 'A' ..= U+005A 'Z', or
+    ///  * U+0061 'a' ..= U+007A 'z'.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "Test".parse().expect("Failed to parse.");
+    /// let s2: TinyAsciiStr<4> = "Te3t".parse().expect("Failed to parse.");
+    ///
+    /// assert!(s1.is_ascii_alphabetic());
+    /// assert!(!s2.is_ascii_alphabetic());
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn is_ascii_alphabetic(&self) -> bool {
+        check_is!(self, is_ascii_alphabetic, is_ascii_alphabetic)
+    }
+
+    /// Checks if the value is composed of ASCII alphanumeric characters:
+    ///
+    ///  * U+0041 'A' ..= U+005A 'Z', or
+    ///  * U+0061 'a' ..= U+007A 'z', or
+    ///  * U+0030 '0' ..= U+0039 '9'.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "A15b".parse().expect("Failed to parse.");
+    /// let s2: TinyAsciiStr<4> = "[3@w".parse().expect("Failed to parse.");
+    ///
+    /// assert!(s1.is_ascii_alphanumeric());
+    /// assert!(!s2.is_ascii_alphanumeric());
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn is_ascii_alphanumeric(&self) -> bool {
+        check_is!(self, is_ascii_alphanumeric, is_ascii_alphanumeric)
+    }
+
+    /// Checks if the value is composed of ASCII decimal digits:
+    ///
+    ///  * U+0030 '0' ..= U+0039 '9'.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "312".parse().expect("Failed to parse.");
+    /// let s2: TinyAsciiStr<4> = "3d".parse().expect("Failed to parse.");
+    ///
+    /// assert!(s1.is_ascii_numeric());
+    /// assert!(!s2.is_ascii_numeric());
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn is_ascii_numeric(&self) -> bool {
+        check_is!(self, is_ascii_numeric, is_ascii_digit)
+    }
+
+    /// Checks if the value is in ASCII lower case.
+    ///
+    /// All letter characters are checked for case. Non-letter characters are ignored.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "teSt".parse().expect("Failed to parse.");
+    /// let s2: TinyAsciiStr<4> = "test".parse().expect("Failed to parse.");
+    /// let s3: TinyAsciiStr<4> = "001z".parse().expect("Failed to parse.");
+    ///
+    /// assert!(!s1.is_ascii_lowercase());
+    /// assert!(s2.is_ascii_lowercase());
+    /// assert!(s3.is_ascii_lowercase());
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn is_ascii_lowercase(&self) -> bool {
+        check_is!(
+            self,
+            is_ascii_lowercase,
+            !is_ascii_uppercase,
+            !is_ascii_uppercase
+        )
+    }
+
+    /// Checks if the value is in ASCII title case.
+    ///
+    /// This verifies that the first character is ASCII uppercase and all others ASCII lowercase.
+    /// Non-letter characters are ignored.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "teSt".parse().expect("Failed to parse.");
+    /// let s2: TinyAsciiStr<4> = "Test".parse().expect("Failed to parse.");
+    /// let s3: TinyAsciiStr<4> = "001z".parse().expect("Failed to parse.");
+    ///
+    /// assert!(!s1.is_ascii_titlecase());
+    /// assert!(s2.is_ascii_titlecase());
+    /// assert!(s3.is_ascii_titlecase());
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn is_ascii_titlecase(&self) -> bool {
+        check_is!(
+            self,
+            is_ascii_titlecase,
+            !is_ascii_lowercase,
+            !is_ascii_uppercase
+        )
+    }
+
+    /// Checks if the value is in ASCII upper case.
+    ///
+    /// All letter characters are checked for case. Non-letter characters are ignored.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "teSt".parse().expect("Failed to parse.");
+    /// let s2: TinyAsciiStr<4> = "TEST".parse().expect("Failed to parse.");
+    /// let s3: TinyAsciiStr<4> = "001z".parse().expect("Failed to parse.");
+    ///
+    /// assert!(!s1.is_ascii_uppercase());
+    /// assert!(s2.is_ascii_uppercase());
+    /// assert!(!s3.is_ascii_uppercase());
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn is_ascii_uppercase(&self) -> bool {
+        check_is!(
+            self,
+            is_ascii_uppercase,
+            !is_ascii_lowercase,
+            !is_ascii_lowercase
+        )
+    }
+
+    /// Checks if the value is composed of ASCII alphabetic lower case characters:
+    ///
+    ///  * U+0061 'a' ..= U+007A 'z',
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "Test".parse().expect("Failed to parse.");
+    /// let s2: TinyAsciiStr<4> = "Te3t".parse().expect("Failed to parse.");
+    /// let s3: TinyAsciiStr<4> = "teSt".parse().expect("Failed to parse.");
+    /// let s4: TinyAsciiStr<4> = "test".parse().expect("Failed to parse.");
+    /// let s5: TinyAsciiStr<4> = "001z".parse().expect("Failed to parse.");
+    ///
+    /// assert!(!s1.is_ascii_alphabetic_lowercase());
+    /// assert!(!s2.is_ascii_alphabetic_lowercase());
+    /// assert!(!s3.is_ascii_alphabetic_lowercase());
+    /// assert!(s4.is_ascii_alphabetic_lowercase());
+    /// assert!(!s5.is_ascii_alphabetic_lowercase());
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn is_ascii_alphabetic_lowercase(&self) -> bool {
+        check_is!(
+            self,
+            is_ascii_alphabetic_lowercase,
+            is_ascii_lowercase,
+            is_ascii_lowercase
+        )
+    }
+
+    /// Checks if the value is composed of ASCII alphabetic, with the first character being ASCII uppercase, and all others ASCII lowercase.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "Test".parse().expect("Failed to parse.");
+    /// let s2: TinyAsciiStr<4> = "Te3t".parse().expect("Failed to parse.");
+    /// let s3: TinyAsciiStr<4> = "teSt".parse().expect("Failed to parse.");
+    /// let s4: TinyAsciiStr<4> = "test".parse().expect("Failed to parse.");
+    /// let s5: TinyAsciiStr<4> = "001z".parse().expect("Failed to parse.");
+    ///
+    /// assert!(s1.is_ascii_alphabetic_titlecase());
+    /// assert!(!s2.is_ascii_alphabetic_titlecase());
+    /// assert!(!s3.is_ascii_alphabetic_titlecase());
+    /// assert!(!s4.is_ascii_alphabetic_titlecase());
+    /// assert!(!s5.is_ascii_alphabetic_titlecase());
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn is_ascii_alphabetic_titlecase(&self) -> bool {
+        check_is!(
+            self,
+            is_ascii_alphabetic_titlecase,
+            is_ascii_uppercase,
+            is_ascii_lowercase
+        )
+    }
+
+    /// Checks if the value is composed of ASCII alphabetic upper case characters:
+    ///
+    ///  * U+0041 'A' ..= U+005A 'Z',
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "Test".parse().expect("Failed to parse.");
+    /// let s2: TinyAsciiStr<4> = "Te3t".parse().expect("Failed to parse.");
+    /// let s3: TinyAsciiStr<4> = "teSt".parse().expect("Failed to parse.");
+    /// let s4: TinyAsciiStr<4> = "TEST".parse().expect("Failed to parse.");
+    /// let s5: TinyAsciiStr<4> = "001z".parse().expect("Failed to parse.");
+    ///
+    /// assert!(!s1.is_ascii_alphabetic_uppercase());
+    /// assert!(!s2.is_ascii_alphabetic_uppercase());
+    /// assert!(!s3.is_ascii_alphabetic_uppercase());
+    /// assert!(s4.is_ascii_alphabetic_uppercase());
+    /// assert!(!s5.is_ascii_alphabetic_uppercase());
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn is_ascii_alphabetic_uppercase(&self) -> bool {
+        check_is!(
+            self,
+            is_ascii_alphabetic_uppercase,
+            is_ascii_uppercase,
+            is_ascii_uppercase
+        )
+    }
+}
+
+macro_rules! to {
+    ($self:ident, $to:ident, $later_char_to:ident $(,$first_char_to:ident)?) => {{
+        let mut i = 0;
+        if N <= 4 {
+            let aligned = Aligned4::from_ascii_bytes(&$self.bytes).$to().to_ascii_bytes();
+            // Won't panic because self.bytes has length N and aligned has length >= N
+            #[allow(clippy::indexing_slicing)]
+            while i < N {
+                $self.bytes[i] = aligned[i];
+                i += 1;
+            }
+        } else if N <= 8 {
+            let aligned = Aligned8::from_ascii_bytes(&$self.bytes).$to().to_ascii_bytes();
+            // Won't panic because self.bytes has length N and aligned has length >= N
+            #[allow(clippy::indexing_slicing)]
+            while i < N {
+                $self.bytes[i] = aligned[i];
+                i += 1;
+            }
+        } else {
+            // Won't panic because self.bytes has length N
+            #[allow(clippy::indexing_slicing)]
+            while i < N && $self.bytes[i] as u8 != AsciiByte::B0 as u8 {
+                // SAFETY: AsciiByte is repr(u8) and has same size as u8
+                unsafe {
+                    $self.bytes[i] = core::mem::transmute::<u8, AsciiByte>(
+                        ($self.bytes[i] as u8).$later_char_to()
+                    );
+                }
+                i += 1;
+            }
+            // SAFETY: AsciiByte is repr(u8) and has same size as u8
+            $(
+                $self.bytes[0] = unsafe {
+                    core::mem::transmute::<u8, AsciiByte>(($self.bytes[0] as u8).$first_char_to())
+                };
+            )?
+        }
+        $self
+    }};
+}
+
+impl<const N: usize> TinyAsciiStr<N> {
+    /// Converts this type to its ASCII lower case equivalent in-place.
+    ///
+    /// ASCII letters 'A' to 'Z' are mapped to 'a' to 'z', other characters are unchanged.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "TeS3".parse().expect("Failed to parse.");
+    ///
+    /// assert_eq!(&*s1.to_ascii_lowercase(), "tes3");
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn to_ascii_lowercase(mut self) -> Self {
+        to!(self, to_ascii_lowercase, to_ascii_lowercase)
+    }
+
+    /// Converts this type to its ASCII title case equivalent in-place.
+    ///
+    /// The first character is converted to ASCII uppercase; the remaining characters
+    /// are converted to ASCII lowercase.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "teSt".parse().expect("Failed to parse.");
+    ///
+    /// assert_eq!(&*s1.to_ascii_titlecase(), "Test");
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn to_ascii_titlecase(mut self) -> Self {
+        to!(
+            self,
+            to_ascii_titlecase,
+            to_ascii_lowercase,
+            to_ascii_uppercase
+        )
+    }
+
+    /// Converts this type to its ASCII upper case equivalent in-place.
+    ///
+    /// ASCII letters 'a' to 'z' are mapped to 'A' to 'Z', other characters are unchanged.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use tinystr::TinyAsciiStr;
+    ///
+    /// let s1: TinyAsciiStr<4> = "Tes3".parse().expect("Failed to parse.");
+    ///
+    /// assert_eq!(&*s1.to_ascii_uppercase(), "TES3");
+    /// ```
+    #[inline]
+    #[must_use]
+    pub const fn to_ascii_uppercase(mut self) -> Self {
+        to!(self, to_ascii_uppercase, to_ascii_uppercase)
+    }
+}
+
+impl<const N: usize> fmt::Debug for TinyAsciiStr<N> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        fmt::Debug::fmt(self.as_str(), f)
+    }
+}
+
+impl<const N: usize> fmt::Display for TinyAsciiStr<N> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        fmt::Display::fmt(self.as_str(), f)
+    }
+}
+
+impl<const N: usize> Deref for TinyAsciiStr<N> {
+    type Target = str;
+    #[inline]
+    fn deref(&self) -> &str {
+        self.as_str()
+    }
+}
+
+impl<const N: usize> Borrow<str> for TinyAsciiStr<N> {
+    #[inline]
+    fn borrow(&self) -> &str {
+        self.as_str()
+    }
+}
+
+impl<const N: usize> FromStr for TinyAsciiStr<N> {
+    type Err = ParseError;
+    #[inline]
+    fn from_str(s: &str) -> Result<Self, Self::Err> {
+        Self::try_from_str(s)
+    }
+}
+
+impl<const N: usize> PartialEq<str> for TinyAsciiStr<N> {
+    fn eq(&self, other: &str) -> bool {
+        self.deref() == other
+    }
+}
+
+impl<const N: usize> PartialEq<&str> for TinyAsciiStr<N> {
+    fn eq(&self, other: &&str) -> bool {
+        self.deref() == *other
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<const N: usize> PartialEq<alloc::string::String> for TinyAsciiStr<N> {
+    fn eq(&self, other: &alloc::string::String) -> bool {
+        self.deref() == other.deref()
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<const N: usize> PartialEq<TinyAsciiStr<N>> for alloc::string::String {
+    fn eq(&self, other: &TinyAsciiStr<N>) -> bool {
+        self.deref() == other.deref()
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::*;
+    use rand::distributions::Distribution;
+    use rand::distributions::Standard;
+    use rand::rngs::SmallRng;
+    use rand::seq::SliceRandom;
+    use rand::SeedableRng;
+
+    const STRINGS: [&str; 26] = [
+        "Latn",
+        "laTn",
+        "windows",
+        "AR",
+        "Hans",
+        "macos",
+        "AT",
+        "infiniband",
+        "FR",
+        "en",
+        "Cyrl",
+        "FromIntegral",
+        "NO",
+        "419",
+        "MacintoshOSX2019",
+        "a3z",
+        "A3z",
+        "A3Z",
+        "a3Z",
+        "3A",
+        "3Z",
+        "3a",
+        "3z",
+        "@@[`{",
+        "UK",
+        "E12",
+    ];
+
+    fn gen_strings(num_strings: usize, allowed_lengths: &[usize]) -> Vec<String> {
+        let mut rng = SmallRng::seed_from_u64(2022);
+        // Need to do this in 2 steps since the RNG is needed twice
+        let string_lengths = core::iter::repeat_with(|| *allowed_lengths.choose(&mut rng).unwrap())
+            .take(num_strings)
+            .collect::<Vec<usize>>();
+        string_lengths
+            .iter()
+            .map(|len| {
+                Standard
+                    .sample_iter(&mut rng)
+                    .filter(|b: &u8| *b > 0 && *b < 0x80)
+                    .take(*len)
+                    .collect::<Vec<u8>>()
+            })
+            .map(|byte_vec| String::from_utf8(byte_vec).expect("All ASCII"))
+            .collect()
+    }
+
+    fn check_operation<T, F1, F2, const N: usize>(reference_f: F1, tinystr_f: F2)
+    where
+        F1: Fn(&str) -> T,
+        F2: Fn(TinyAsciiStr<N>) -> T,
+        T: core::fmt::Debug + core::cmp::PartialEq,
+    {
+        for s in STRINGS
+            .into_iter()
+            .map(str::to_owned)
+            .chain(gen_strings(100, &[3, 4, 5, 8, 12]))
+        {
+            let t = match TinyAsciiStr::<N>::from_str(&s) {
+                Ok(t) => t,
+                Err(ParseError::TooLong { .. }) => continue,
+                Err(e) => panic!("{}", e),
+            };
+            let expected = reference_f(&s);
+            let actual = tinystr_f(t);
+            assert_eq!(expected, actual, "TinyAsciiStr<{N}>: {s:?}");
+
+            let s_utf16: Vec<u16> = s.encode_utf16().collect();
+            let t = match TinyAsciiStr::<N>::try_from_utf16(&s_utf16) {
+                Ok(t) => t,
+                Err(ParseError::TooLong { .. }) => continue,
+                Err(e) => panic!("{}", e),
+            };
+            let expected = reference_f(&s);
+            let actual = tinystr_f(t);
+            assert_eq!(expected, actual, "TinyAsciiStr<{N}>: {s:?}");
+        }
+    }
+
+    #[test]
+    fn test_is_ascii_alphabetic() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| s.chars().all(|c| c.is_ascii_alphabetic()),
+                |t: TinyAsciiStr<N>| TinyAsciiStr::is_ascii_alphabetic(&t),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_is_ascii_alphanumeric() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| s.chars().all(|c| c.is_ascii_alphanumeric()),
+                |t: TinyAsciiStr<N>| TinyAsciiStr::is_ascii_alphanumeric(&t),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_is_ascii_numeric() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| s.chars().all(|c| c.is_ascii_digit()),
+                |t: TinyAsciiStr<N>| TinyAsciiStr::is_ascii_numeric(&t),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_is_ascii_lowercase() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| {
+                    s == TinyAsciiStr::<16>::try_from_str(s)
+                        .unwrap()
+                        .to_ascii_lowercase()
+                        .as_str()
+                },
+                |t: TinyAsciiStr<N>| TinyAsciiStr::is_ascii_lowercase(&t),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_is_ascii_titlecase() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| {
+                    s == TinyAsciiStr::<16>::try_from_str(s)
+                        .unwrap()
+                        .to_ascii_titlecase()
+                        .as_str()
+                },
+                |t: TinyAsciiStr<N>| TinyAsciiStr::is_ascii_titlecase(&t),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_is_ascii_uppercase() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| {
+                    s == TinyAsciiStr::<16>::try_from_str(s)
+                        .unwrap()
+                        .to_ascii_uppercase()
+                        .as_str()
+                },
+                |t: TinyAsciiStr<N>| TinyAsciiStr::is_ascii_uppercase(&t),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_is_ascii_alphabetic_lowercase() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| {
+                    // Check alphabetic
+                    s.chars().all(|c| c.is_ascii_alphabetic()) &&
+                    // Check lowercase
+                    s == TinyAsciiStr::<16>::try_from_str(s)
+                        .unwrap()
+                        .to_ascii_lowercase()
+                        .as_str()
+                },
+                |t: TinyAsciiStr<N>| TinyAsciiStr::is_ascii_alphabetic_lowercase(&t),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_is_ascii_alphabetic_titlecase() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| {
+                    // Check alphabetic
+                    s.chars().all(|c| c.is_ascii_alphabetic()) &&
+                    // Check titlecase
+                    s == TinyAsciiStr::<16>::try_from_str(s)
+                        .unwrap()
+                        .to_ascii_titlecase()
+                        .as_str()
+                },
+                |t: TinyAsciiStr<N>| TinyAsciiStr::is_ascii_alphabetic_titlecase(&t),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_is_ascii_alphabetic_uppercase() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| {
+                    // Check alphabetic
+                    s.chars().all(|c| c.is_ascii_alphabetic()) &&
+                    // Check uppercase
+                    s == TinyAsciiStr::<16>::try_from_str(s)
+                        .unwrap()
+                        .to_ascii_uppercase()
+                        .as_str()
+                },
+                |t: TinyAsciiStr<N>| TinyAsciiStr::is_ascii_alphabetic_uppercase(&t),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_to_ascii_lowercase() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| {
+                    s.chars()
+                        .map(|c| c.to_ascii_lowercase())
+                        .collect::<String>()
+                },
+                |t: TinyAsciiStr<N>| TinyAsciiStr::to_ascii_lowercase(t).as_str().to_owned(),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_to_ascii_titlecase() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| {
+                    let mut r = s
+                        .chars()
+                        .map(|c| c.to_ascii_lowercase())
+                        .collect::<String>();
+                    // Safe because the string is nonempty and an ASCII string
+                    unsafe { r.as_bytes_mut()[0].make_ascii_uppercase() };
+                    r
+                },
+                |t: TinyAsciiStr<N>| TinyAsciiStr::to_ascii_titlecase(t).as_str().to_owned(),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn test_to_ascii_uppercase() {
+        fn check<const N: usize>() {
+            check_operation(
+                |s| {
+                    s.chars()
+                        .map(|c| c.to_ascii_uppercase())
+                        .collect::<String>()
+                },
+                |t: TinyAsciiStr<N>| TinyAsciiStr::to_ascii_uppercase(t).as_str().to_owned(),
+            )
+        }
+        check::<2>();
+        check::<3>();
+        check::<4>();
+        check::<5>();
+        check::<8>();
+        check::<16>();
+    }
+
+    #[test]
+    fn lossy_constructor() {
+        assert_eq!(TinyAsciiStr::<4>::from_utf8_lossy(b"", b'?').as_str(), "");
+        assert_eq!(
+            TinyAsciiStr::<4>::from_utf8_lossy(b"oh\0o", b'?').as_str(),
+            "oh?o"
+        );
+        assert_eq!(
+            TinyAsciiStr::<4>::from_utf8_lossy(b"\0", b'?').as_str(),
+            "?"
+        );
+        assert_eq!(
+            TinyAsciiStr::<4>::from_utf8_lossy(b"toolong", b'?').as_str(),
+            "tool"
+        );
+        assert_eq!(
+            TinyAsciiStr::<4>::from_utf8_lossy(&[b'a', 0x80, 0xFF, b'1'], b'?').as_str(),
+            "a??1"
+        );
+    }
+}
diff --git a/vendor/tinystr/src/asciibyte.rs b/vendor/tinystr/src/asciibyte.rs
new file mode 100644
index 00000000..f41a0334
--- /dev/null
+++ b/vendor/tinystr/src/asciibyte.rs
@@ -0,0 +1,145 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[repr(u8)]
+#[allow(dead_code)]
+#[derive(PartialEq, Eq, Ord, PartialOrd, Copy, Clone, Hash)]
+pub enum AsciiByte {
+    B0 = 0,
+    B1 = 1,
+    B2 = 2,
+    B3 = 3,
+    B4 = 4,
+    B5 = 5,
+    B6 = 6,
+    B7 = 7,
+    B8 = 8,
+    B9 = 9,
+    B10 = 10,
+    B11 = 11,
+    B12 = 12,
+    B13 = 13,
+    B14 = 14,
+    B15 = 15,
+    B16 = 16,
+    B17 = 17,
+    B18 = 18,
+    B19 = 19,
+    B20 = 20,
+    B21 = 21,
+    B22 = 22,
+    B23 = 23,
+    B24 = 24,
+    B25 = 25,
+    B26 = 26,
+    B27 = 27,
+    B28 = 28,
+    B29 = 29,
+    B30 = 30,
+    B31 = 31,
+    B32 = 32,
+    B33 = 33,
+    B34 = 34,
+    B35 = 35,
+    B36 = 36,
+    B37 = 37,
+    B38 = 38,
+    B39 = 39,
+    B40 = 40,
+    B41 = 41,
+    B42 = 42,
+    B43 = 43,
+    B44 = 44,
+    B45 = 45,
+    B46 = 46,
+    B47 = 47,
+    B48 = 48,
+    B49 = 49,
+    B50 = 50,
+    B51 = 51,
+    B52 = 52,
+    B53 = 53,
+    B54 = 54,
+    B55 = 55,
+    B56 = 56,
+    B57 = 57,
+    B58 = 58,
+    B59 = 59,
+    B60 = 60,
+    B61 = 61,
+    B62 = 62,
+    B63 = 63,
+    B64 = 64,
+    B65 = 65,
+    B66 = 66,
+    B67 = 67,
+    B68 = 68,
+    B69 = 69,
+    B70 = 70,
+    B71 = 71,
+    B72 = 72,
+    B73 = 73,
+    B74 = 74,
+    B75 = 75,
+    B76 = 76,
+    B77 = 77,
+    B78 = 78,
+    B79 = 79,
+    B80 = 80,
+    B81 = 81,
+    B82 = 82,
+    B83 = 83,
+    B84 = 84,
+    B85 = 85,
+    B86 = 86,
+    B87 = 87,
+    B88 = 88,
+    B89 = 89,
+    B90 = 90,
+    B91 = 91,
+    B92 = 92,
+    B93 = 93,
+    B94 = 94,
+    B95 = 95,
+    B96 = 96,
+    B97 = 97,
+    B98 = 98,
+    B99 = 99,
+    B100 = 100,
+    B101 = 101,
+    B102 = 102,
+    B103 = 103,
+    B104 = 104,
+    B105 = 105,
+    B106 = 106,
+    B107 = 107,
+    B108 = 108,
+    B109 = 109,
+    B110 = 110,
+    B111 = 111,
+    B112 = 112,
+    B113 = 113,
+    B114 = 114,
+    B115 = 115,
+    B116 = 116,
+    B117 = 117,
+    B118 = 118,
+    B119 = 119,
+    B120 = 120,
+    B121 = 121,
+    B122 = 122,
+    B123 = 123,
+    B124 = 124,
+    B125 = 125,
+    B126 = 126,
+    B127 = 127,
+}
+
+impl AsciiByte {
+    // Convert [u8; N] to [AsciiByte; N]
+    #[inline]
+    pub const unsafe fn to_ascii_byte_array<const N: usize>(bytes: &[u8; N]) -> [AsciiByte; N] {
+        *(bytes as *const [u8; N] as *const [AsciiByte; N])
+    }
+}
diff --git a/vendor/tinystr/src/databake.rs b/vendor/tinystr/src/databake.rs
new file mode 100644
index 00000000..748d23ac
--- /dev/null
+++ b/vendor/tinystr/src/databake.rs
@@ -0,0 +1,75 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::TinyAsciiStr;
+use crate::UnvalidatedTinyAsciiStr;
+use databake::*;
+
+impl<const N: usize> Bake for TinyAsciiStr<N> {
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("tinystr");
+        let string = self.as_str();
+        quote! {
+            tinystr::tinystr!(#N, #string)
+        }
+    }
+}
+
+impl<const N: usize> BakeSize for TinyAsciiStr<N> {
+    fn borrows_size(&self) -> usize {
+        0
+    }
+}
+
+impl<const N: usize> databake::Bake for UnvalidatedTinyAsciiStr<N> {
+    fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+        match self.try_into_tinystr() {
+            Ok(tiny) => {
+                let tiny = tiny.bake(env);
+                databake::quote! {
+                    #tiny.to_unvalidated()
+                }
+            }
+            Err(_) => {
+                let bytes = self.0.bake(env);
+                env.insert("tinystr");
+                databake::quote! {
+                    tinystr::UnvalidatedTinyAsciiStr::from_utf8_unchecked(#bytes)
+                }
+            }
+        }
+    }
+}
+
+impl<const N: usize> databake::BakeSize for UnvalidatedTinyAsciiStr<N> {
+    fn borrows_size(&self) -> usize {
+        0
+    }
+}
+
+#[test]
+fn test() {
+    test_bake!(
+        TinyAsciiStr<10>,
+        const,
+        crate::tinystr!(10usize, "foo"),
+        tinystr
+    );
+}
+
+#[test]
+fn test_unvalidated() {
+    test_bake!(
+        UnvalidatedTinyAsciiStr<10>,
+        const,
+        crate::tinystr!(10usize, "foo").to_unvalidated(),
+        tinystr
+    );
+    test_bake!(
+        UnvalidatedTinyAsciiStr<3>,
+        const,
+        crate::UnvalidatedTinyAsciiStr::from_utf8_unchecked(*b"AB\xCD"),
+        tinystr
+    );
+}
diff --git a/vendor/tinystr/src/error.rs b/vendor/tinystr/src/error.rs
new file mode 100644
index 00000000..ea1ab212
--- /dev/null
+++ b/vendor/tinystr/src/error.rs
@@ -0,0 +1,18 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use displaydoc::Display;
+
+impl core::error::Error for ParseError {}
+
+#[derive(Display, Debug, PartialEq, Eq)]
+#[non_exhaustive]
+pub enum ParseError {
+    #[displaydoc("found string of larger length {len} when constructing string of length {max}")]
+    TooLong { max: usize, len: usize },
+    #[displaydoc("tinystr types do not support strings with null bytes")]
+    ContainsNull,
+    #[displaydoc("attempted to construct TinyAsciiStr from a non-ASCII string")]
+    NonAscii,
+}
diff --git a/vendor/tinystr/src/int_ops.rs b/vendor/tinystr/src/int_ops.rs
new file mode 100644
index 00000000..7bdb3633
--- /dev/null
+++ b/vendor/tinystr/src/int_ops.rs
@@ -0,0 +1,315 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::asciibyte::AsciiByte;
+
+/// Internal helper struct that performs operations on aligned integers.
+/// Supports strings up to 4 bytes long.
+#[repr(transparent)]
+pub struct Aligned4(u32);
+
+impl Aligned4 {
+    /// # Panics
+    /// Panics if N is greater than 4
+    #[inline]
+    pub const fn from_utf8<const N: usize>(src: &[u8; N]) -> Self {
+        let mut bytes = [0; 4];
+        let mut i = 0;
+        // The function documentation defines when panics may occur
+        #[allow(clippy::indexing_slicing)]
+        while i < N {
+            bytes[i] = src[i];
+            i += 1;
+        }
+        Self(u32::from_ne_bytes(bytes))
+    }
+
+    #[inline]
+    pub const fn from_ascii_bytes<const N: usize>(src: &[AsciiByte; N]) -> Self {
+        Self::from_utf8::<N>(unsafe { core::mem::transmute::<&[AsciiByte; N], &[u8; N]>(src) })
+    }
+
+    #[inline]
+    pub const fn to_bytes(&self) -> [u8; 4] {
+        self.0.to_ne_bytes()
+    }
+
+    #[inline]
+    pub const fn to_ascii_bytes(&self) -> [AsciiByte; 4] {
+        unsafe { core::mem::transmute(self.to_bytes()) }
+    }
+
+    pub const fn len(&self) -> usize {
+        let word = self.0;
+        #[cfg(target_endian = "little")]
+        let len = (4 - word.leading_zeros() / 8) as usize;
+        #[cfg(target_endian = "big")]
+        let len = (4 - word.trailing_zeros() / 8) as usize;
+        len
+    }
+
+    pub const fn is_ascii_alphabetic(&self) -> bool {
+        let word = self.0;
+        // Each of the following bitmasks set *the high bit* (0x8) to 0 for valid and 1 for invalid.
+        // `mask` sets all NUL bytes to 0.
+        let mask = (word + 0x7f7f_7f7f) & 0x8080_8080;
+        // `lower` converts the string to lowercase. It may also change the value of non-alpha
+        // characters, but this does not matter for the alphabetic test that follows.
+        let lower = word | 0x2020_2020;
+        // `alpha` sets all alphabetic bytes to 0. We only need check for lowercase characters.
+        let alpha = !(lower + 0x1f1f_1f1f) | (lower + 0x0505_0505);
+        // The overall string is valid if every character passes at least one test.
+        // We performed two tests here: non-NUL (`mask`) and alphabetic (`alpha`).
+        (alpha & mask) == 0
+    }
+
+    pub const fn is_ascii_alphanumeric(&self) -> bool {
+        let word = self.0;
+        // See explanatory comments in is_ascii_alphabetic
+        let mask = (word + 0x7f7f_7f7f) & 0x8080_8080;
+        let numeric = !(word + 0x5050_5050) | (word + 0x4646_4646);
+        let lower = word | 0x2020_2020;
+        let alpha = !(lower + 0x1f1f_1f1f) | (lower + 0x0505_0505);
+        (alpha & numeric & mask) == 0
+    }
+
+    pub const fn is_ascii_numeric(&self) -> bool {
+        let word = self.0;
+        // See explanatory comments in is_ascii_alphabetic
+        let mask = (word + 0x7f7f_7f7f) & 0x8080_8080;
+        let numeric = !(word + 0x5050_5050) | (word + 0x4646_4646);
+        (numeric & mask) == 0
+    }
+
+    pub const fn is_ascii_lowercase(&self) -> bool {
+        let word = self.0;
+        // For efficiency, this function tests for an invalid string rather than a valid string.
+        // A string is ASCII lowercase iff it contains no uppercase ASCII characters.
+        // `invalid_case` sets all uppercase ASCII characters to 0 and all others to 1.
+        let invalid_case = !(word + 0x3f3f_3f3f) | (word + 0x2525_2525);
+        // The string is valid if it contains no invalid characters (if all high bits are 1).
+        (invalid_case & 0x8080_8080) == 0x8080_8080
+    }
+
+    pub const fn is_ascii_titlecase(&self) -> bool {
+        let word = self.0;
+        // See explanatory comments in is_ascii_lowercase
+        let invalid_case = if cfg!(target_endian = "little") {
+            !(word + 0x3f3f_3f1f) | (word + 0x2525_2505)
+        } else {
+            !(word + 0x1f3f_3f3f) | (word + 0x0525_2525)
+        };
+        (invalid_case & 0x8080_8080) == 0x8080_8080
+    }
+
+    pub const fn is_ascii_uppercase(&self) -> bool {
+        let word = self.0;
+        // See explanatory comments in is_ascii_lowercase
+        let invalid_case = !(word + 0x1f1f_1f1f) | (word + 0x0505_0505);
+        (invalid_case & 0x8080_8080) == 0x8080_8080
+    }
+
+    pub const fn is_ascii_alphabetic_lowercase(&self) -> bool {
+        let word = self.0;
+        // `mask` sets all NUL bytes to 0.
+        let mask = (word + 0x7f7f_7f7f) & 0x8080_8080;
+        // `lower_alpha` sets all lowercase ASCII characters to 0 and all others to 1.
+        let lower_alpha = !(word + 0x1f1f_1f1f) | (word + 0x0505_0505);
+        // The overall string is valid if every character passes at least one test.
+        // We performed two tests here: non-NUL (`mask`) and lowercase ASCII character (`alpha`).
+        (lower_alpha & mask) == 0
+    }
+
+    pub const fn is_ascii_alphabetic_titlecase(&self) -> bool {
+        let word = self.0;
+        // See explanatory comments in is_ascii_alphabetic_lowercase
+        let mask = (word + 0x7f7f_7f7f) & 0x8080_8080;
+        let title_case = if cfg!(target_endian = "little") {
+            !(word + 0x1f1f_1f3f) | (word + 0x0505_0525)
+        } else {
+            !(word + 0x3f1f_1f1f) | (word + 0x2505_0505)
+        };
+        (title_case & mask) == 0
+    }
+
+    pub const fn is_ascii_alphabetic_uppercase(&self) -> bool {
+        let word = self.0;
+        // See explanatory comments in is_ascii_alphabetic_lowercase
+        let mask = (word + 0x7f7f_7f7f) & 0x8080_8080;
+        let upper_alpha = !(word + 0x3f3f_3f3f) | (word + 0x2525_2525);
+        (upper_alpha & mask) == 0
+    }
+
+    pub const fn to_ascii_lowercase(&self) -> Self {
+        let word = self.0;
+        let result = word | (((word + 0x3f3f_3f3f) & !(word + 0x2525_2525) & 0x8080_8080) >> 2);
+        Self(result)
+    }
+
+    pub const fn to_ascii_titlecase(&self) -> Self {
+        let word = self.0.to_le();
+        let mask = ((word + 0x3f3f_3f1f) & !(word + 0x2525_2505) & 0x8080_8080) >> 2;
+        let result = (word | mask) & !(0x20 & mask);
+        Self(u32::from_le(result))
+    }
+
+    pub const fn to_ascii_uppercase(&self) -> Self {
+        let word = self.0;
+        let result = word & !(((word + 0x1f1f_1f1f) & !(word + 0x0505_0505) & 0x8080_8080) >> 2);
+        Self(result)
+    }
+}
+
+/// Internal helper struct that performs operations on aligned integers.
+/// Supports strings up to 8 bytes long.
+#[repr(transparent)]
+pub struct Aligned8(u64);
+
+impl Aligned8 {
+    /// # Panics
+    /// Panics if N is greater than 8
+    #[inline]
+    pub const fn from_utf8<const N: usize>(src: &[u8; N]) -> Self {
+        let mut bytes = [0; 8];
+        let mut i = 0;
+        // The function documentation defines when panics may occur
+        #[allow(clippy::indexing_slicing)]
+        while i < N {
+            bytes[i] = src[i];
+            i += 1;
+        }
+        Self(u64::from_ne_bytes(bytes))
+    }
+
+    #[inline]
+    pub const fn from_ascii_bytes<const N: usize>(src: &[AsciiByte; N]) -> Self {
+        Self::from_utf8::<N>(unsafe { core::mem::transmute::<&[AsciiByte; N], &[u8; N]>(src) })
+    }
+
+    #[inline]
+    pub const fn to_bytes(&self) -> [u8; 8] {
+        self.0.to_ne_bytes()
+    }
+
+    #[inline]
+    pub const fn to_ascii_bytes(&self) -> [AsciiByte; 8] {
+        unsafe { core::mem::transmute(self.to_bytes()) }
+    }
+
+    pub const fn len(&self) -> usize {
+        let word = self.0;
+        #[cfg(target_endian = "little")]
+        let len = (8 - word.leading_zeros() / 8) as usize;
+        #[cfg(target_endian = "big")]
+        let len = (8 - word.trailing_zeros() / 8) as usize;
+        len
+    }
+
+    pub const fn is_ascii_alphabetic(&self) -> bool {
+        let word = self.0;
+        let mask = (word + 0x7f7f_7f7f_7f7f_7f7f) & 0x8080_8080_8080_8080;
+        let lower = word | 0x2020_2020_2020_2020;
+        let alpha = !(lower + 0x1f1f_1f1f_1f1f_1f1f) | (lower + 0x0505_0505_0505_0505);
+        (alpha & mask) == 0
+    }
+
+    pub const fn is_ascii_alphanumeric(&self) -> bool {
+        let word = self.0;
+        let mask = (word + 0x7f7f_7f7f_7f7f_7f7f) & 0x8080_8080_8080_8080;
+        let numeric = !(word + 0x5050_5050_5050_5050) | (word + 0x4646_4646_4646_4646);
+        let lower = word | 0x2020_2020_2020_2020;
+        let alpha = !(lower + 0x1f1f_1f1f_1f1f_1f1f) | (lower + 0x0505_0505_0505_0505);
+        (alpha & numeric & mask) == 0
+    }
+
+    pub const fn is_ascii_numeric(&self) -> bool {
+        let word = self.0;
+        let mask = (word + 0x7f7f_7f7f_7f7f_7f7f) & 0x8080_8080_8080_8080;
+        let numeric = !(word + 0x5050_5050_5050_5050) | (word + 0x4646_4646_4646_4646);
+        (numeric & mask) == 0
+    }
+
+    pub const fn is_ascii_lowercase(&self) -> bool {
+        let word = self.0;
+        let invalid_case = !(word + 0x3f3f_3f3f_3f3f_3f3f) | (word + 0x2525_2525_2525_2525);
+        (invalid_case & 0x8080_8080_8080_8080) == 0x8080_8080_8080_8080
+    }
+
+    pub const fn is_ascii_titlecase(&self) -> bool {
+        let word = self.0;
+        let invalid_case = if cfg!(target_endian = "little") {
+            !(word + 0x3f3f_3f3f_3f3f_3f1f) | (word + 0x2525_2525_2525_2505)
+        } else {
+            !(word + 0x1f3f_3f3f_3f3f_3f3f) | (word + 0x0525_2525_2525_2525)
+        };
+        (invalid_case & 0x8080_8080_8080_8080) == 0x8080_8080_8080_8080
+    }
+
+    pub const fn is_ascii_uppercase(&self) -> bool {
+        let word = self.0;
+        let invalid_case = !(word + 0x1f1f_1f1f_1f1f_1f1f) | (word + 0x0505_0505_0505_0505);
+        (invalid_case & 0x8080_8080_8080_8080) == 0x8080_8080_8080_8080
+    }
+
+    pub const fn is_ascii_alphabetic_lowercase(&self) -> bool {
+        let word = self.0;
+        // `mask` sets all NUL bytes to 0.
+        let mask = (word + 0x7f7f_7f7f_7f7f_7f7f) & 0x8080_8080_8080_8080;
+        // `lower_alpha` sets all lowercase ASCII characters to 0 and all others to 1.
+        let lower_alpha = !(word + 0x1f1f_1f1f_1f1f_1f1f) | (word + 0x0505_0505_0505_0505);
+        // The overall string is valid if every character passes at least one test.
+        // We performed two tests here: non-NUL (`mask`) and lowercase ASCII character (`alpha`).
+        (lower_alpha & mask) == 0
+    }
+
+    pub const fn is_ascii_alphabetic_titlecase(&self) -> bool {
+        let word = self.0;
+        // See explanatory comments in is_ascii_alphabetic_lowercase
+        let mask = (word + 0x7f7f_7f7f_7f7f_7f7f) & 0x8080_8080_8080_8080;
+        let title_case = if cfg!(target_endian = "little") {
+            !(word + 0x1f1f_1f1f_1f1f_1f3f) | (word + 0x0505_0505_0505_0525)
+        } else {
+            !(word + 0x3f1f_1f1f_1f1f_1f1f) | (word + 0x2505_0505_0505_0505)
+        };
+        (title_case & mask) == 0
+    }
+
+    pub const fn is_ascii_alphabetic_uppercase(&self) -> bool {
+        let word = self.0;
+        // See explanatory comments in is_ascii_alphabetic_lowercase
+        let mask = (word + 0x7f7f_7f7f_7f7f_7f7f) & 0x8080_8080_8080_8080;
+        let upper_alpha = !(word + 0x3f3f_3f3f_3f3f_3f3f) | (word + 0x2525_2525_2525_2525);
+        (upper_alpha & mask) == 0
+    }
+
+    pub const fn to_ascii_lowercase(&self) -> Self {
+        let word = self.0;
+        let result = word
+            | (((word + 0x3f3f_3f3f_3f3f_3f3f)
+                & !(word + 0x2525_2525_2525_2525)
+                & 0x8080_8080_8080_8080)
+                >> 2);
+        Self(result)
+    }
+
+    pub const fn to_ascii_titlecase(&self) -> Self {
+        let word = self.0.to_le();
+        let mask = ((word + 0x3f3f_3f3f_3f3f_3f1f)
+            & !(word + 0x2525_2525_2525_2505)
+            & 0x8080_8080_8080_8080)
+            >> 2;
+        let result = (word | mask) & !(0x20 & mask);
+        Self(u64::from_le(result))
+    }
+
+    pub const fn to_ascii_uppercase(&self) -> Self {
+        let word = self.0;
+        let result = word
+            & !(((word + 0x1f1f_1f1f_1f1f_1f1f)
+                & !(word + 0x0505_0505_0505_0505)
+                & 0x8080_8080_8080_8080)
+                >> 2);
+        Self(result)
+    }
+}
diff --git a/vendor/tinystr/src/lib.rs b/vendor/tinystr/src/lib.rs
new file mode 100644
index 00000000..19440720
--- /dev/null
+++ b/vendor/tinystr/src/lib.rs
@@ -0,0 +1,114 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! `tinystr` is a utility crate of the [`ICU4X`] project.
+//!
+//! It includes [`TinyAsciiStr`], a core API for representing small ASCII-only bounded length strings.
+//!
+//! It is optimized for operations on strings of size 8 or smaller. When use cases involve comparison
+//! and conversion of strings for lowercase/uppercase/titlecase, or checking
+//! numeric/alphabetic/alphanumeric, `TinyAsciiStr` is the edge performance library.
+//!
+//! # Examples
+//!
+//! ```rust
+//! use tinystr::TinyAsciiStr;
+//!
+//! let s1: TinyAsciiStr<4> = "tEsT".parse().expect("Failed to parse.");
+//!
+//! assert_eq!(s1, "tEsT");
+//! assert_eq!(s1.to_ascii_uppercase(), "TEST");
+//! assert_eq!(s1.to_ascii_lowercase(), "test");
+//! assert_eq!(s1.to_ascii_titlecase(), "Test");
+//! assert!(s1.is_ascii_alphanumeric());
+//! assert!(!s1.is_ascii_numeric());
+//!
+//! let s2 = TinyAsciiStr::<8>::try_from_raw(*b"New York")
+//!     .expect("Failed to parse.");
+//!
+//! assert_eq!(s2, "New York");
+//! assert_eq!(s2.to_ascii_uppercase(), "NEW YORK");
+//! assert_eq!(s2.to_ascii_lowercase(), "new york");
+//! assert_eq!(s2.to_ascii_titlecase(), "New york");
+//! assert!(!s2.is_ascii_alphanumeric());
+//! ```
+//!
+//! # Details
+//!
+//! When strings are of size 8 or smaller, the struct transforms the strings as `u32`/`u64` and uses
+//! bitmasking to provide basic string manipulation operations:
+//! * `is_ascii_numeric`
+//! * `is_ascii_alphabetic`
+//! * `is_ascii_alphanumeric`
+//! * `to_ascii_lowercase`
+//! * `to_ascii_uppercase`
+//! * `to_ascii_titlecase`
+//! * `PartialEq`
+//!
+//! `TinyAsciiStr` will fall back to `u8` character manipulation for strings of length greater than 8.
+
+//!
+//! [`ICU4X`]: ../icu/index.html
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+
+mod macros;
+
+mod ascii;
+mod asciibyte;
+mod error;
+mod int_ops;
+mod unvalidated;
+
+#[cfg(feature = "serde")]
+mod serde;
+
+#[cfg(feature = "databake")]
+mod databake;
+
+#[cfg(feature = "zerovec")]
+mod ule;
+
+#[cfg(any(feature = "serde", feature = "alloc"))]
+extern crate alloc;
+
+pub use ascii::TinyAsciiStr;
+pub use error::ParseError;
+pub use unvalidated::UnvalidatedTinyAsciiStr;
+
+/// These are temporary compatability reexports that will be removed
+/// in a future version.
+pub type TinyStr4 = TinyAsciiStr<4>;
+/// These are temporary compatability reexports that will be removed
+/// in a future version.
+pub type TinyStr8 = TinyAsciiStr<8>;
+/// These are temporary compatability reexports that will be removed
+/// in a future version.
+pub type TinyStr16 = TinyAsciiStr<16>;
+
+#[test]
+fn test_size() {
+    assert_eq!(
+        core::mem::size_of::<TinyStr4>(),
+        core::mem::size_of::<Option<TinyStr4>>()
+    );
+    assert_eq!(
+        core::mem::size_of::<TinyStr8>(),
+        core::mem::size_of::<Option<TinyStr8>>()
+    );
+}
diff --git a/vendor/tinystr/src/macros.rs b/vendor/tinystr/src/macros.rs
new file mode 100644
index 00000000..30dc445e
--- /dev/null
+++ b/vendor/tinystr/src/macros.rs
@@ -0,0 +1,32 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[macro_export]
+macro_rules! tinystr {
+    ($n:literal, $s:literal) => {{
+        // Force it into a const context; otherwise it may get evaluated at runtime instead.
+        const TINYSTR_MACRO_CONST: $crate::TinyAsciiStr<$n> = {
+            match $crate::TinyAsciiStr::try_from_utf8($s.as_bytes()) {
+                Ok(s) => s,
+                // We are okay with panicking here because this is in a const context
+                #[allow(clippy::panic)]
+                // Cannot format the error since formatting isn't const yet
+                Err(_) => panic!(concat!("Failed to construct tinystr from ", $s)),
+            }
+        };
+        TINYSTR_MACRO_CONST
+    }};
+}
+
+#[cfg(test)]
+mod tests {
+    #[test]
+    fn test_macro_construction() {
+        let s1 = tinystr!(8, "foobar");
+        assert_eq!(&*s1, "foobar");
+
+        let s1 = tinystr!(12, "foobarbaz");
+        assert_eq!(&*s1, "foobarbaz");
+    }
+}
diff --git a/vendor/tinystr/src/serde.rs b/vendor/tinystr/src/serde.rs
new file mode 100644
index 00000000..529902b5
--- /dev/null
+++ b/vendor/tinystr/src/serde.rs
@@ -0,0 +1,91 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::TinyAsciiStr;
+use alloc::borrow::Cow;
+use alloc::string::ToString;
+use core::fmt;
+use core::marker::PhantomData;
+use core::ops::Deref;
+use serde::de::{Error, SeqAccess, Visitor};
+use serde::ser::SerializeTuple;
+use serde::{Deserialize, Deserializer, Serialize, Serializer};
+
+impl<const N: usize> Serialize for TinyAsciiStr<N> {
+    #[inline]
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        if serializer.is_human_readable() {
+            self.deref().serialize(serializer)
+        } else {
+            let mut seq = serializer.serialize_tuple(N)?;
+            for byte in self.all_bytes() {
+                seq.serialize_element(byte)?;
+            }
+            seq.end()
+        }
+    }
+}
+
+struct TinyAsciiStrVisitor<const N: usize> {
+    marker: PhantomData<TinyAsciiStr<N>>,
+}
+
+impl<const N: usize> TinyAsciiStrVisitor<N> {
+    fn new() -> Self {
+        TinyAsciiStrVisitor {
+            marker: PhantomData,
+        }
+    }
+}
+
+impl<'de, const N: usize> Visitor<'de> for TinyAsciiStrVisitor<N> {
+    type Value = TinyAsciiStr<N>;
+
+    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+        write!(formatter, "a TinyAsciiStr<{N}>")
+    }
+
+    #[inline]
+    fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
+    where
+        A: SeqAccess<'de>,
+    {
+        let mut bytes = [0u8; N];
+        let mut zeroes = false;
+        for out in &mut bytes.iter_mut().take(N) {
+            let byte = seq
+                .next_element()?
+                .ok_or_else(|| Error::invalid_length(N, &self))?;
+            if byte == 0 {
+                zeroes = true;
+            } else if zeroes {
+                return Err(Error::custom("TinyAsciiStr cannot contain null bytes"));
+            }
+
+            if byte >= 0x80 {
+                return Err(Error::custom("TinyAsciiStr cannot contain non-ascii bytes"));
+            }
+            *out = byte;
+        }
+
+        Ok(unsafe { TinyAsciiStr::from_utf8_unchecked(bytes) })
+    }
+}
+
+impl<'de, const N: usize> Deserialize<'de> for TinyAsciiStr<N> {
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let x: Cow<'de, str> = Deserialize::deserialize(deserializer)?;
+            TinyAsciiStr::try_from_str(&x).map_err(|e| Error::custom(e.to_string()))
+        } else {
+            deserializer.deserialize_tuple(N, TinyAsciiStrVisitor::<N>::new())
+        }
+    }
+}
diff --git a/vendor/tinystr/src/ule.rs b/vendor/tinystr/src/ule.rs
new file mode 100644
index 00000000..0dd10ff7
--- /dev/null
+++ b/vendor/tinystr/src/ule.rs
@@ -0,0 +1,125 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::{TinyAsciiStr, UnvalidatedTinyAsciiStr};
+#[cfg(feature = "alloc")]
+use zerovec::maps::ZeroMapKV;
+use zerovec::ule::*;
+#[cfg(feature = "alloc")]
+use zerovec::{ZeroSlice, ZeroVec};
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. TinyAsciiStr does not include any uninitialized or padding bytes.
+//     (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+//  2. TinyAsciiStr is aligned to 1 byte.
+//     (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+//  3. The impl of validate_bytes() returns an error if any byte is not valid.
+//  4. The impl of validate_bytes() returns an error if there are extra bytes.
+//  5. The other ULE methods use the default impl.
+//  6. TinyAsciiStr byte equality is semantic equality
+unsafe impl<const N: usize> ULE for TinyAsciiStr<N> {
+    #[inline]
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        if bytes.len() % N != 0 {
+            return Err(UleError::length::<Self>(bytes.len()));
+        }
+        // Validate the bytes
+        for chunk in bytes.chunks_exact(N) {
+            let _ = TinyAsciiStr::<N>::try_from_utf8_inner(chunk, true)
+                .map_err(|_| UleError::parse::<Self>())?;
+        }
+        Ok(())
+    }
+}
+
+impl<const N: usize> NicheBytes<N> for TinyAsciiStr<N> {
+    // AsciiByte is 0..128
+    const NICHE_BIT_PATTERN: [u8; N] = [255; N];
+}
+
+impl<const N: usize> AsULE for TinyAsciiStr<N> {
+    type ULE = Self;
+
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self
+    }
+
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        unaligned
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'a, const N: usize> ZeroMapKV<'a> for TinyAsciiStr<N> {
+    type Container = ZeroVec<'a, TinyAsciiStr<N>>;
+    type Slice = ZeroSlice<TinyAsciiStr<N>>;
+    type GetType = TinyAsciiStr<N>;
+    type OwnedType = TinyAsciiStr<N>;
+}
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. UnvalidatedTinyAsciiStr does not include any uninitialized or padding bytes.
+//     (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+//  2. UnvalidatedTinyAsciiStr is aligned to 1 byte.
+//     (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+//  3. The impl of validate_bytes() returns an error if any byte is not valid.
+//  4. The impl of validate_bytes() returns an error if there are extra bytes.
+//  5. The other ULE methods use the default impl.
+//  6. UnvalidatedTinyAsciiStr byte equality is semantic equality
+unsafe impl<const N: usize> ULE for UnvalidatedTinyAsciiStr<N> {
+    #[inline]
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        if bytes.len() % N != 0 {
+            return Err(UleError::length::<Self>(bytes.len()));
+        }
+        Ok(())
+    }
+}
+
+impl<const N: usize> AsULE for UnvalidatedTinyAsciiStr<N> {
+    type ULE = Self;
+
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self
+    }
+
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        unaligned
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'a, const N: usize> ZeroMapKV<'a> for UnvalidatedTinyAsciiStr<N> {
+    type Container = ZeroVec<'a, UnvalidatedTinyAsciiStr<N>>;
+    type Slice = ZeroSlice<UnvalidatedTinyAsciiStr<N>>;
+    type GetType = UnvalidatedTinyAsciiStr<N>;
+    type OwnedType = UnvalidatedTinyAsciiStr<N>;
+}
+
+#[cfg(test)]
+mod test {
+    use crate::*;
+    use zerovec::*;
+
+    #[test]
+    fn test_zerovec() {
+        let mut vec = ZeroVec::<TinyAsciiStr<7>>::new();
+
+        vec.with_mut(|v| v.push("foobar".parse().unwrap()));
+        vec.with_mut(|v| v.push("baz".parse().unwrap()));
+        vec.with_mut(|v| v.push("quux".parse().unwrap()));
+
+        let bytes = vec.as_bytes();
+
+        let vec: ZeroVec<TinyAsciiStr<7>> = ZeroVec::parse_bytes(bytes).unwrap();
+
+        assert_eq!(&*vec.get(0).unwrap(), "foobar");
+        assert_eq!(&*vec.get(1).unwrap(), "baz");
+        assert_eq!(&*vec.get(2).unwrap(), "quux");
+    }
+}
diff --git a/vendor/tinystr/src/unvalidated.rs b/vendor/tinystr/src/unvalidated.rs
new file mode 100644
index 00000000..3758b64f
--- /dev/null
+++ b/vendor/tinystr/src/unvalidated.rs
@@ -0,0 +1,122 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::ParseError;
+use crate::TinyAsciiStr;
+use core::fmt;
+
+/// A fixed-length bytes array that is expected to be an ASCII string but does not enforce that invariant.
+///
+/// Use this type instead of `TinyAsciiStr` if you don't need to enforce ASCII during deserialization. For
+/// example, strings that are keys of a map don't need to ever be reified as `TinyAsciiStr`s.
+///
+/// The main advantage of this type over `[u8; N]` is that it serializes as a string in
+/// human-readable formats like JSON.
+#[derive(PartialEq, PartialOrd, Eq, Ord, Clone, Copy)]
+pub struct UnvalidatedTinyAsciiStr<const N: usize>(pub(crate) [u8; N]);
+
+impl<const N: usize> fmt::Debug for UnvalidatedTinyAsciiStr<N> {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        // Debug as a string if possible
+        match self.try_into_tinystr() {
+            Ok(s) => fmt::Debug::fmt(&s, f),
+            Err(_) => fmt::Debug::fmt(&self.0, f),
+        }
+    }
+}
+
+impl<const N: usize> UnvalidatedTinyAsciiStr<N> {
+    #[inline]
+    /// Converts into a [`TinyAsciiStr`]. Fails if the bytes are not valid ASCII.
+    pub fn try_into_tinystr(self) -> Result<TinyAsciiStr<N>, ParseError> {
+        TinyAsciiStr::try_from_raw(self.0)
+    }
+
+    #[inline]
+    /// Unsafely converts into a [`TinyAsciiStr`].
+    pub const fn from_utf8_unchecked(bytes: [u8; N]) -> Self {
+        Self(bytes)
+    }
+}
+
+impl<const N: usize> TinyAsciiStr<N> {
+    #[inline]
+    // Converts into a [`UnvalidatedTinyAsciiStr`]
+    pub const fn to_unvalidated(self) -> UnvalidatedTinyAsciiStr<N> {
+        UnvalidatedTinyAsciiStr(*self.all_bytes())
+    }
+}
+
+impl<const N: usize> From<TinyAsciiStr<N>> for UnvalidatedTinyAsciiStr<N> {
+    fn from(other: TinyAsciiStr<N>) -> Self {
+        other.to_unvalidated()
+    }
+}
+
+#[cfg(feature = "serde")]
+impl<const N: usize> serde::Serialize for UnvalidatedTinyAsciiStr<N> {
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: serde::Serializer,
+    {
+        use serde::ser::Error;
+        self.try_into_tinystr()
+            .map_err(|_| S::Error::custom("invalid ascii in UnvalidatedTinyAsciiStr"))?
+            .serialize(serializer)
+    }
+}
+
+macro_rules! deserialize {
+    ($size:literal) => {
+        #[cfg(feature = "serde")]
+        impl<'de, 'a> serde::Deserialize<'de> for UnvalidatedTinyAsciiStr<$size>
+        where
+            'de: 'a,
+        {
+            fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+            where
+                D: serde::Deserializer<'de>,
+            {
+                if deserializer.is_human_readable() {
+                    Ok(TinyAsciiStr::deserialize(deserializer)?.to_unvalidated())
+                } else {
+                    Ok(Self(<[u8; $size]>::deserialize(deserializer)?))
+                }
+            }
+        }
+    };
+}
+
+deserialize!(1);
+deserialize!(2);
+deserialize!(3);
+deserialize!(4);
+deserialize!(5);
+deserialize!(6);
+deserialize!(7);
+deserialize!(8);
+deserialize!(9);
+deserialize!(10);
+deserialize!(11);
+deserialize!(12);
+deserialize!(13);
+deserialize!(14);
+deserialize!(15);
+deserialize!(16);
+deserialize!(17);
+deserialize!(18);
+deserialize!(19);
+deserialize!(20);
+deserialize!(21);
+deserialize!(22);
+deserialize!(23);
+deserialize!(24);
+deserialize!(25);
+deserialize!(26);
+deserialize!(27);
+deserialize!(28);
+deserialize!(29);
+deserialize!(30);
+deserialize!(31);
+deserialize!(32);
diff --git a/vendor/tinystr/tests/serde.rs b/vendor/tinystr/tests/serde.rs
new file mode 100644
index 00000000..282914e6
--- /dev/null
+++ b/vendor/tinystr/tests/serde.rs
@@ -0,0 +1,39 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use tinystr::*;
+
+// Tests largely adapted from `tinystr` crate
+// https://github.com/zbraniecki/tinystr/blob/4e4eab55dd6bded7f29a18b41452c506c461716c/tests/serde.rs
+
+macro_rules! test_roundtrip {
+    ($f:ident, $n:literal, $val:expr) => {
+        #[test]
+        fn $f() {
+            let tiny: TinyAsciiStr<$n> = $val.parse().unwrap();
+            let json_string = serde_json::to_string(&tiny).unwrap();
+            let expected_json = concat!("\"", $val, "\"");
+            assert_eq!(json_string, expected_json);
+            let recover: TinyAsciiStr<$n> = serde_json::from_str(&json_string).unwrap();
+            assert_eq!(&*tiny, &*recover);
+
+            let bin = bincode::serialize(&tiny).unwrap();
+            assert_eq!(bin, &tiny.all_bytes()[..]);
+            let debin: TinyAsciiStr<$n> = bincode::deserialize(&bin).unwrap();
+            assert_eq!(&*tiny, &*debin);
+
+            let post = postcard::to_stdvec(&tiny).unwrap();
+            assert_eq!(post, &tiny.all_bytes()[..]);
+            let unpost: TinyAsciiStr<$n> = postcard::from_bytes(&post).unwrap();
+            assert_eq!(&*tiny, &*unpost);
+        }
+    };
+}
+
+test_roundtrip!(test_roundtrip4_1, 4, "en");
+test_roundtrip!(test_roundtrip4_2, 4, "Latn");
+test_roundtrip!(test_roundtrip8, 8, "calendar");
+test_roundtrip!(test_roundtrip16, 16, "verylongstring");
+test_roundtrip!(test_roundtrip10, 11, "shortstring");
+test_roundtrip!(test_roundtrip30, 24, "veryveryverylongstring");
diff --git a/vendor/tinyvec/.cargo-checksum.json b/vendor/tinyvec/.cargo-checksum.json
deleted file mode 100644
index 67c25902..00000000
--- a/vendor/tinyvec/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CHANGELOG.md":"a5906792b5a2953db3e47ec6c64eef004fb40849795bca69f0430a843d996e5b","Cargo.toml":"f69b2a2493b02d8278fe23017ac62f8fb20dba2175428179bfa5bf074b015d32","LICENSE-APACHE.md":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT.md":"fd80a26fbb3f644af1fa994134446702932968519797227e07a1368dea80f0bc","LICENSE-ZLIB.md":"84b34dd7608f7fb9b17bd588a6bf392bf7de504e2716f024a77d89f1b145a151","README.md":"3e1fb710657302adceca0f3a5ca37670503fa376fdc60f1abfd441a023d1489b","benches/macros.rs":"5a5a6f260dec23ccd52de69b6ec5996db66c5deb67a47398cdf1f06a777580b3","benches/smallvec.rs":"7db69f165cf6ca2da1b4f306eb912aa50d7218b3120489a25fa1f0317a7f9fda","debug_metadata/README.md":"28d60ba44609690415f49d3dfddb199f04f2e7404bfbfcc1655b723447428c52","debug_metadata/tinyvec.natvis":"8161c399a4aeec63a1077b4f99ced085e8815c4dda548e93441f17ebedb8be11","rustfmt.toml":"c41ed86ba202d525e9163deeb2d9bb8fc7e3a8fbeab720def088317445add5ef","src/array.rs":"3ce5e89c628a0690e912f0c2cfb18d86d6316726071d5f70429bc1f1c7a66e65","src/array/const_generic_impl.rs":"3972d876f1b08dedd7915c62e8f60259168b2d7cd29b01b8834812bab96f47fb","src/array/generated_impl.rs":"e80c770c3702a7ff3efeb2a7bafd56102a3f5d8847180085de980f58693c8019","src/arrayvec.rs":"d9fd821108e020323cdf2150f0b839361cbfff0bb423a8e476f2342f4180e442","src/arrayvec_drain.rs":"dce67509b43f0e35cf0e20920983b04b17d0eb20272ed07c37b0d1b764d35094","src/lib.rs":"0e2c6f8a54b56804252898f72c366979093b30743acb1a48cb021dc2c91c3d6f","src/slicevec.rs":"98d8b19b731d0f91a75f7e5b514c7b9384b63fd4a7ff9abda698d217eb425b62","src/tinyvec.rs":"ad0815f95a69254c1d676d3d42ec2d152d41f043903d274acdb990761c547438","tests/arrayvec.rs":"2c90c7ee6da97b18d826fa685642e5a84320bb9b8b7393ad8d6014cfabd76655","tests/debugger_visualizer.rs":"d4de73d4875a6febaa317f103886eab0a95780124f746b218885559a0269beb0","tests/tinyvec.rs":"856c61421b1164b79f0e2560191555280d3153c7e91341359ab2074bfa9479fb"},"package":"445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"}
\ No newline at end of file
diff --git a/vendor/tinyvec/CHANGELOG.md b/vendor/tinyvec/CHANGELOG.md
deleted file mode 100644
index 6430aa33..00000000
--- a/vendor/tinyvec/CHANGELOG.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# Changelog
-
-## 1.8
-
-* [Fuuzetsu](https://github.com/Fuuzetsu) added the `ArrayVec::as_inner` method.
-  [pr 197](https://github.com/Lokathor/tinyvec/pull/197)
-
-## 1.7
-
-* [Fuuzetsu](https://github.com/Fuuzetsu) added the `rustc_1_61` cargo feature, which adds the `retain_mut` method.
-  [pr 198](https://github.com/Lokathor/tinyvec/pull/198) 
-
-## 1.6.1
-
-* [e00E](https://github.com/e00E) fixed the Arbitrary impl to work on Stable
-  without using a feature gate.
-  [pr 180](https://github.com/Lokathor/tinyvec/pull/180)
-
-## 1.6.0
-
-* [i509VCB](https://github.com/i509VCB) added the `try_` functions for fallable reallocation.
-  [pr 158](https://github.com/Lokathor/tinyvec/pull/158)
-* [ajtribick](https://github.com/ajtribick) added more error impls to `TryFromSliceError`.
-  [pr 160](https://github.com/Lokathor/tinyvec/pull/160)
-* The `std` feature now automatically enables the `alloc` feature as well.
-
-## 1.5.1
-
-* [madsmtm](https://github.com/madsmtm) fixed an error with the `alloc` feature on very old rustc versions.
-  [pr 154](https://github.com/Lokathor/tinyvec/pull/154)
-
-## 1.5.0
-
-* [eeeebbbbrrrr](https://github.com/eeeebbbbrrrr) added an impl for [std::io::Write](https://doc.rust-lang.org/std/io/trait.Write.html) to `TinyVec` when the element type is `u8`.
-  This is gated behind the new `std` feature.
-  [pr 152](https://github.com/Lokathor/tinyvec/pull/152)
-
-## 1.4.0
-
-* [saethlin](https://github.com/saethlin) stabilized the usage of const generics and array map with the `rustc_1_55` feature.
-  [pr 149](https://github.com/Lokathor/tinyvec/pull/149)
-
-## 1.3.1
-
-* Improved the performance of the `clone_from` method [pr 144](https://github.com/Lokathor/tinyvec/pull/144)
-
-## 1.3.0
-
-* [jeffa5](https://github.com/jeffa5) added arbitrary implementations for `TinyVec` and `ArrayVec` [pr 146](https://github.com/Lokathor/tinyvec/pull/146).
-* [elomatreb](https://github.com/elomatreb) implemented `DoubleEndedIterator` for `TinyVecIterator` [pr 145](https://github.com/Lokathor/tinyvec/pull/145).
-
-## 1.2.0
-
-* [Cryptjar](https://github.com/Cryptjar) removed the `A:Array` bound on the struct of `ArrayVec<A:Array>`,
-  and added the `from_array_empty` method, which is a `const fn` constructor
-  [pr 141](https://github.com/Lokathor/tinyvec/pull/141).
-
-## 1.1.1
-
-* [saethlin](https://github.com/saethlin) contributed many PRs (
-  [127](https://github.com/Lokathor/tinyvec/pull/127),
-  [128](https://github.com/Lokathor/tinyvec/pull/128),
-  [129](https://github.com/Lokathor/tinyvec/pull/129),
-  [131](https://github.com/Lokathor/tinyvec/pull/131),
-  [132](https://github.com/Lokathor/tinyvec/pull/132)
-  ) to help in several benchmarks.
-
-## 1.1.0
-
-* [slightlyoutofphase](https://github.com/slightlyoutofphase)
-added "array splat" style syntax to the `array_vec!` and `tiny_vec!` macros.
-You can now write `array_vec![true; 5]` and get a length 5 array vec full of `true`,
-just like normal array initialization allows. Same goes for `tiny_vec!`.
-([pr 118](https://github.com/Lokathor/tinyvec/pull/118))
-* [not-a-seagull](https://github.com/not-a-seagull)
-added `ArrayVec::into_inner` so that you can get the array out of an `ArrayVec`.
-([pr 124](https://github.com/Lokathor/tinyvec/pull/124))
-
-## 1.0.2
-
-* Added license files for the MIT and Apache-2.0 license options.
-
-## 1.0.1
-
-* Display additional features in the [docs.rs/tinyvec](https://docs.rs/tinyvec) documentation.
-
-## 1.0.0
-
-Initial Stable Release.
diff --git a/vendor/tinyvec/Cargo.toml b/vendor/tinyvec/Cargo.toml
deleted file mode 100644
index 8423ac1c..00000000
--- a/vendor/tinyvec/Cargo.toml
+++ /dev/null
@@ -1,144 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies.
-#
-# If you are reading this file be aware that the original Cargo.toml
-# will likely look very different (and much more reasonable).
-# See Cargo.toml.orig for the original contents.
-
-[package]
-edition = "2018"
-name = "tinyvec"
-version = "1.8.0"
-authors = ["Lokathor <zefria@gmail.com>"]
-build = false
-exclude = [
-    "/.github",
-    "/*.py",
-    "/*.sh",
-    "/src-backup",
-]
-autobins = false
-autoexamples = false
-autotests = false
-autobenches = false
-description = "`tinyvec` provides 100% safe vec-like data structures."
-readme = "README.md"
-keywords = [
-    "vec",
-    "no_std",
-    "no-std",
-]
-categories = [
-    "data-structures",
-    "no-std",
-]
-license = "Zlib OR Apache-2.0 OR MIT"
-repository = "https://github.com/Lokathor/tinyvec"
-
-[package.metadata.docs.rs]
-features = [
-    "alloc",
-    "std",
-    "grab_spare_slice",
-    "rustc_1_55",
-    "serde",
-]
-rustdoc-args = [
-    "--cfg",
-    "docs_rs",
-]
-
-[package.metadata.playground]
-features = [
-    "alloc",
-    "std",
-    "grab_spare_slice",
-    "rustc_1_55",
-    "serde",
-]
-
-[profile.bench]
-debug = 2
-
-[lib]
-name = "tinyvec"
-path = "src/lib.rs"
-
-[[test]]
-name = "tinyvec"
-path = "tests/tinyvec.rs"
-required-features = [
-    "alloc",
-    "std",
-]
-
-[[test]]
-name = "debugger_visualizer"
-path = "tests/debugger_visualizer.rs"
-test = false
-required-features = ["debugger_visualizer"]
-
-[[test]]
-name = "arrayvec"
-path = "tests/arrayvec.rs"
-
-[[bench]]
-name = "macros"
-path = "benches/macros.rs"
-harness = false
-required-features = ["alloc"]
-
-[[bench]]
-name = "smallvec"
-path = "benches/smallvec.rs"
-harness = false
-required-features = [
-    "alloc",
-    "real_blackbox",
-]
-
-[dependencies.arbitrary]
-version = "1"
-optional = true
-
-[dependencies.serde]
-version = "1.0"
-optional = true
-default-features = false
-
-[dependencies.tinyvec_macros]
-version = "0.1"
-optional = true
-
-[dev-dependencies.criterion]
-version = "0.3.0"
-
-[dev-dependencies.debugger_test]
-version = "0.1"
-
-[dev-dependencies.debugger_test_parser]
-version = "0.1"
-
-[dev-dependencies.serde_test]
-version = "1.0"
-
-[dev-dependencies.smallvec]
-version = "1"
-
-[features]
-alloc = ["tinyvec_macros"]
-debugger_visualizer = []
-default = []
-experimental_write_impl = []
-grab_spare_slice = []
-nightly_slice_partition_dedup = []
-real_blackbox = ["criterion/real_blackbox"]
-rustc_1_40 = []
-rustc_1_55 = []
-rustc_1_57 = ["rustc_1_55"]
-rustc_1_61 = []
-std = ["alloc"]
diff --git a/vendor/tinyvec/LICENSE-ZLIB.md b/vendor/tinyvec/LICENSE-ZLIB.md
deleted file mode 100644
index d70707c7..00000000
--- a/vendor/tinyvec/LICENSE-ZLIB.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Copyright (c) 2019 Daniel "Lokathor" Gee.
-
-This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:
-
-1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
-
-2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
-
-3. This notice may not be removed or altered from any source distribution.
diff --git a/vendor/tinyvec/README.md b/vendor/tinyvec/README.md
deleted file mode 100644
index 403c5c6f..00000000
--- a/vendor/tinyvec/README.md
+++ /dev/null
@@ -1,34 +0,0 @@
-[![License:Zlib](https://img.shields.io/badge/License-Zlib-brightgreen.svg)](https://opensource.org/licenses/Zlib)
-![Minimum Rust Version](https://img.shields.io/badge/Min%20Rust-1.47-green.svg)
-[![crates.io](https://img.shields.io/crates/v/tinyvec.svg)](https://crates.io/crates/tinyvec)
-[![docs.rs](https://docs.rs/tinyvec/badge.svg)](https://docs.rs/tinyvec/)
-
-![Unsafe-Zero-Percent](https://img.shields.io/badge/Unsafety-0%25-brightgreen.svg)
-
-# tinyvec
-
-A 100% safe crate of vec-like types.
-Not just safe at the public API boundary, fully safe for all internal code too: `#![forbid(unsafe_code)]`
-
-The provided types are as follows:
-* `ArrayVec` is an array-backed vec-like data structure. It panics on overflow.
-* `SliceVec` is similar, but using a `&mut [T]` as the data backing.
-* `TinyVec` (`alloc` feature) is an enum that's either an `Inline(ArrayVec)` or a `Heap(Vec)`.
-  If a `TinyVec` is `Inline` and would overflow its array it automatically transitions to `Heap` and continues whatever it was doing.
-
-To attain this "100% safe code" status there is one compromise: the element type of the vecs must implement `Default`.
-
-For more API details, please see [the docs.rs documentation](https://docs.rs/tinyvec/)
-
-## `tinyvec` Alternatives?
-
-Maybe you don't want to use `tinyvec`, there's other crates you might use instead!
-
-* [arrayvec](https://docs.rs/arrayvec) is a crate with array-backed structures.
-* [smallvec](https://docs.rs/smallvec) is a crate where the array-backed data can be moved to the heap on overflow.
-
-The main difference is that both of those crates use `unsafe` code.
-This mostly allows them to get rid of the `Default` limitation for elements that `tinyvec` imposes.
-The `smallvec` and `arrayvec` crates are generally correct, but there's been occasional bugs leading to UB.
-With `tinyvec`, any uncaught bugs *can't* lead to UB, because the crate is safe code all the way through.
-If you want that absolute level of assurance against UB, use `tinyvec`.
diff --git a/vendor/tinyvec/benches/macros.rs b/vendor/tinyvec/benches/macros.rs
deleted file mode 100644
index e41a2d2c..00000000
--- a/vendor/tinyvec/benches/macros.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-use criterion::{criterion_group, criterion_main, Criterion};
-
-use tinyvec::tiny_vec;
-
-fn bench_tinyvec_macro(c: &mut Criterion) {
-  let mut g = c.benchmark_group("tinyvec_macro");
-
-  g.bench_function("0 of 32", |b| {
-    b.iter(|| tiny_vec!([u8; 32]));
-  });
-
-  g.bench_function("16 of 32", |b| {
-    b.iter(|| {
-      tiny_vec!([u8; 32]=>
-        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
-      )
-    });
-  });
-
-  g.bench_function("32 of 32", |b| {
-    b.iter(|| {
-      tiny_vec!([u8; 32]=>
-        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
-        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
-      )
-    });
-  });
-
-  g.bench_function("33 of 32", |b| {
-    b.iter(|| {
-      tiny_vec!([u8; 32]=>
-        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
-        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
-        33,
-      )
-    });
-  });
-
-  g.bench_function("64 of 32", |b| {
-    b.iter(|| {
-      tiny_vec!([u8; 32]=>
-        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
-        17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
-        33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
-        49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
-      )
-    });
-  });
-}
-
-criterion_group!(benches, bench_tinyvec_macro);
-criterion_main!(benches);
diff --git a/vendor/tinyvec/benches/smallvec.rs b/vendor/tinyvec/benches/smallvec.rs
deleted file mode 100644
index 504ffaf3..00000000
--- a/vendor/tinyvec/benches/smallvec.rs
+++ /dev/null
@@ -1,500 +0,0 @@
-//! Benchmarks that compare TinyVec to SmallVec
-//!
-//! All the following commentary is based on the latest nightly at the time:
-//! rustc 1.55.0 (c8dfcfe04 2021-09-06).
-//!
-//! Some of these benchmarks are just a few instructions, so we put our own for loop inside
-//! the criterion::Bencher::iter call. This seems to improve the stability of measurements, and it
-//! has the wonderful side effect of making the emitted assembly easier to follow. Some of these
-//! benchmarks are totally inlined so that there are no calls at all in the hot path, so finding
-//! this for loop is an easy way to find your way around the emitted assembly.
-//!
-//! The clear method is cheaper to call for arrays of elements without a Drop impl, so wherever
-//! possible we reuse a single object in the benchmark loop, with a clear + black_box on each
-//! iteration in an attempt to not make that visible to the optimizer.
-//!
-//! We always call black_box(&v), instead of v = black_box(v) because the latter does a move of the
-//! inline array, which is linear in the size of the array and thus varies based on the array type
-//! being benchmarked, and this move can be more expensive than the function we're trying to
-//! benchmark.
-//!
-//! We also black_box the input to each method call. This has a significant effect on the assembly
-//! emitted, for example if we do not black_box the range we iterate over in the ::push benchmarks,
-//! the loop is unrolled. It's not entirely clear if it's better to black_box the iterator that
-//! yields the items being pushed, or to black_box at a deeper level: v.push(black_box(i)) for
-//! example. Anecdotally, it seems like the latter approach produces unreasonably bad assembly.
-//!
-
-use criterion::{black_box, criterion_group, criterion_main, Criterion};
-use smallvec::SmallVec;
-use std::iter::FromIterator;
-use tinyvec::TinyVec;
-
-const ITERS: usize = 10_000;
-
-macro_rules! tinyvec_benches {
-  ($c:expr, $type:ty ; $len:expr) => {{
-    let mut g = $c.benchmark_group(concat!(
-      "TinyVec_",
-      stringify!($type),
-      "_",
-      stringify!($len)
-    ));
-
-    g.bench_function(
-      concat!(
-        "TinyVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::default"
-      ),
-      |b| {
-        b.iter(|| {
-          for _ in 0..ITERS {
-            let v: TinyVec<[$type; $len]> = TinyVec::default();
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "TinyVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::clone"
-      ),
-      |b| {
-        b.iter(|| {
-          let outer: TinyVec<[$type; $len]> =
-            black_box(TinyVec::from_iter(0..=($len as usize - 1) as _));
-          for _ in 0..ITERS {
-            let v = outer.clone();
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "TinyVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::clear"
-      ),
-      |b| {
-        b.iter(|| {
-          let mut v: TinyVec<[$type; $len]> = TinyVec::default();
-          for _ in 0..ITERS {
-            v.clear();
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "TinyVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::push"
-      ),
-      |b| {
-        b.iter(|| {
-          let mut v: TinyVec<[$type; $len]> = TinyVec::default();
-          for _ in 0..ITERS {
-            v.clear();
-            black_box(&v);
-            for i in black_box(0..=($len as usize - 1) as _) {
-              v.push(i);
-            }
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "TinyVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::from_iter"
-      ),
-      |b| {
-        b.iter(|| {
-          for _ in 0..ITERS {
-            let v: TinyVec<[$type; $len]> =
-              TinyVec::from_iter(black_box(0..=($len as usize - 1) as _));
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "TinyVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::from_slice"
-      ),
-      |b| {
-        b.iter(|| {
-          let data: &[$type] = &[0, 1, 2, 3, 4, 5, 6, 7];
-          for _ in 0..ITERS {
-            let v: TinyVec<[$type; $len]> = TinyVec::from(black_box(data));
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "TinyVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::extend"
-      ),
-      |b| {
-        b.iter(|| {
-          let mut v: TinyVec<[$type; $len]> = black_box(TinyVec::default());
-          for _ in 0..ITERS {
-            v.clear();
-            black_box(&v);
-            v.extend(black_box(0..=($len as usize - 1) as _));
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "TinyVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::extend_from_slice"
-      ),
-      |b| {
-        b.iter(|| {
-          let data: &[$type] = black_box(&[0, 1, 2, 3, 4, 5, 6, 7]);
-          let mut v: TinyVec<[$type; $len]> = black_box(TinyVec::default());
-          for _ in 0..ITERS {
-            v.clear();
-            black_box(&v);
-            v.extend_from_slice(data);
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "TinyVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::insert"
-      ),
-      |b| {
-        b.iter(|| {
-          let mut v: TinyVec<[$type; $len]> = TinyVec::default();
-          for _ in 0..ITERS {
-            v.clear();
-            black_box(&v);
-            for i in black_box(0..=($len as usize - 1) as _) {
-              v.insert(i as usize, i);
-            }
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "TinyVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::remove"
-      ),
-      |b| {
-        b.iter(|| {
-          let outer: TinyVec<[$type; $len]> =
-            black_box(TinyVec::from_iter(0..=($len as usize - 1) as _));
-          for _ in 0..ITERS {
-            let mut v = outer.clone();
-            for i in black_box((0..=($len as usize - 1) as _).rev()) {
-              v.remove(i);
-            }
-            black_box(&v);
-          }
-        });
-      },
-    );
-  }};
-}
-
-fn tinyvec_benches(c: &mut Criterion) {
-  tinyvec_benches!(c, u8; 8);
-  tinyvec_benches!(c, u8; 16);
-  tinyvec_benches!(c, u8; 32);
-  tinyvec_benches!(c, u8; 64);
-  tinyvec_benches!(c, u8; 128);
-  tinyvec_benches!(c, u8; 256);
-  tinyvec_benches!(c, u64; 2);
-  tinyvec_benches!(c, u64; 4);
-  tinyvec_benches!(c, u64; 8);
-  tinyvec_benches!(c, u64; 16);
-  tinyvec_benches!(c, u64; 32);
-}
-
-macro_rules! smallvec_benches {
-  ($c:expr, $type:ty ; $len:expr) => {{
-    let mut g = $c.benchmark_group(concat!(
-      "SmallVec_",
-      stringify!($type),
-      "_",
-      stringify!($len)
-    ));
-
-    g.bench_function(
-      concat!(
-        "SmallVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::default"
-      ),
-      |b| {
-        b.iter(|| {
-          for _ in 0..ITERS {
-            let v: SmallVec<[$type; $len]> = SmallVec::default();
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "SmallVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::clone"
-      ),
-      |b| {
-        b.iter(|| {
-          let outer: SmallVec<[$type; $len]> =
-            black_box(SmallVec::from_iter(0..=($len as usize - 1) as _));
-          for _ in 0..ITERS {
-            let v = outer.clone();
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "SmallVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::clear"
-      ),
-      |b| {
-        b.iter(|| {
-          let mut v: SmallVec<[$type; $len]> = SmallVec::default();
-          for _ in 0..ITERS {
-            v.clear();
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "SmallVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::push"
-      ),
-      |b| {
-        b.iter(|| {
-          let mut v: SmallVec<[$type; $len]> = SmallVec::default();
-          for _ in 0..ITERS {
-            v.clear();
-            black_box(&v);
-            for i in black_box(0..=($len as usize - 1) as _) {
-              v.push(i);
-            }
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "SmallVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::from_iter"
-      ),
-      |b| {
-        b.iter(|| {
-          for _ in 0..ITERS {
-            let v: SmallVec<[$type; $len]> =
-              SmallVec::from_iter(black_box(0..=($len as usize - 1) as _));
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "SmallVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::from_slice"
-      ),
-      |b| {
-        b.iter(|| {
-          let data: &[$type] = &[0, 1, 2, 3, 4, 5, 6, 7];
-          for _ in 0..ITERS {
-            let v: SmallVec<[$type; $len]> = SmallVec::from(black_box(data));
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "SmallVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::extend"
-      ),
-      |b| {
-        b.iter(|| {
-          let mut v: SmallVec<[$type; $len]> = black_box(SmallVec::default());
-          for _ in 0..ITERS {
-            v.clear();
-            black_box(&v);
-            v.extend(black_box(0..=($len as usize - 1) as _));
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "SmallVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::extend_from_slice"
-      ),
-      |b| {
-        b.iter(|| {
-          let data: &[$type] = black_box(&[0, 1, 2, 3, 4, 5, 6, 7]);
-          let mut v: SmallVec<[$type; $len]> = black_box(SmallVec::default());
-          for _ in 0..ITERS {
-            v.clear();
-            black_box(&v);
-            v.extend_from_slice(data);
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "SmallVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::insert"
-      ),
-      |b| {
-        b.iter(|| {
-          let mut v: SmallVec<[$type; $len]> = SmallVec::default();
-          for _ in 0..ITERS {
-            v.clear();
-            black_box(&v);
-            for i in black_box(0..=($len as usize - 1) as _) {
-              v.insert(i as usize, i);
-            }
-            black_box(&v);
-          }
-        });
-      },
-    );
-
-    g.bench_function(
-      concat!(
-        "SmallVec<[",
-        stringify!($type),
-        "; ",
-        stringify!($len),
-        "]>::remove"
-      ),
-      |b| {
-        b.iter(|| {
-          let outer: SmallVec<[$type; $len]> =
-            black_box(SmallVec::from_iter(0..=($len as usize - 1) as _));
-          for _ in 0..ITERS {
-            let mut v = outer.clone();
-            for i in black_box((0..=($len as usize - 1) as _).rev()) {
-              v.remove(i);
-            }
-            black_box(&v);
-          }
-        });
-      },
-    );
-  }};
-}
-
-fn smallvec_benches(c: &mut Criterion) {
-  smallvec_benches!(c, u8; 8);
-  smallvec_benches!(c, u8; 16);
-  smallvec_benches!(c, u8; 32);
-  smallvec_benches!(c, u8; 64);
-  smallvec_benches!(c, u8; 128);
-  smallvec_benches!(c, u8; 256);
-  smallvec_benches!(c, u64; 2);
-  smallvec_benches!(c, u64; 4);
-  smallvec_benches!(c, u64; 8);
-  smallvec_benches!(c, u64; 16);
-  smallvec_benches!(c, u64; 32);
-}
-
-criterion_group!(benches, tinyvec_benches, smallvec_benches);
-criterion_main!(benches);
diff --git a/vendor/tinyvec/debug_metadata/tinyvec.natvis b/vendor/tinyvec/debug_metadata/tinyvec.natvis
deleted file mode 100644
index 873581df..00000000
--- a/vendor/tinyvec/debug_metadata/tinyvec.natvis
+++ /dev/null
@@ -1,24 +0,0 @@
-<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
-  <Type Name="tinyvec::arrayvec::ArrayVec&lt;array$&lt;*,*&gt;&gt;">
-    <DisplayString>{{ len={len} }}</DisplayString>
-    <Expand>
-      <Item Name="[len]">len</Item>
-      <Item Name="[capacity]">$T2</Item>
-      <ArrayItems>
-        <Size>len</Size>
-        <ValuePointer>($T1*)data</ValuePointer>
-      </ArrayItems>
-    </Expand>
-  </Type>
-
-  <Type Name="tinyvec::slicevec::SliceVec&lt;*&gt;">
-    <DisplayString>{{ len={len} }}</DisplayString>
-    <Expand>
-      <Item Name="[len]">len</Item>
-      <ArrayItems>
-        <Size>len</Size>
-        <ValuePointer>data.data_ptr</ValuePointer>
-      </ArrayItems>
-    </Expand>
-  </Type>
-</AutoVisualizer>
\ No newline at end of file
diff --git a/vendor/tinyvec/rustfmt.toml b/vendor/tinyvec/rustfmt.toml
deleted file mode 100644
index 777bb3de..00000000
--- a/vendor/tinyvec/rustfmt.toml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# Stable
-edition = "2018"
-fn_args_layout = "Compressed"
-max_width = 80
-tab_spaces = 2
-use_field_init_shorthand = true
-use_try_shorthand = true
-use_small_heuristics = "Max"
-
-# Unstable
-format_code_in_doc_comments = true
-wrap_comments = true
-imports_granularity="Crate"
diff --git a/vendor/tinyvec/src/array.rs b/vendor/tinyvec/src/array.rs
deleted file mode 100644
index 9a209847..00000000
--- a/vendor/tinyvec/src/array.rs
+++ /dev/null
@@ -1,48 +0,0 @@
-/// A trait for types that are an array.
-///
-/// An "array", for our purposes, has the following properties:
-/// * Owns some number of elements.
-/// * The element type can be generic, but must implement [`Default`].
-/// * The capacity is fixed at compile time, based on the implementing type.
-/// * You can get a shared or mutable slice to the elements.
-///
-/// You are generally **not** expected to need to implement this yourself. It is
-/// already implemented for all the major array lengths (`0..=32` and the powers
-/// of 2 up to 4,096), or for all array lengths with the feature `rustc_1_55`.
-///
-/// **Additional lengths can easily be added upon request.**
-///
-/// ## Safety Reminder
-///
-/// Just a reminder: this trait is 100% safe, which means that `unsafe` code
-/// **must not** rely on an instance of this trait being correct.
-pub trait Array {
-  /// The type of the items in the thing.
-  type Item: Default;
-
-  /// The number of slots in the thing.
-  const CAPACITY: usize;
-
-  /// Gives a shared slice over the whole thing.
-  ///
-  /// A correct implementation will return a slice with a length equal to the
-  /// `CAPACITY` value.
-  fn as_slice(&self) -> &[Self::Item];
-
-  /// Gives a unique slice over the whole thing.
-  ///
-  /// A correct implementation will return a slice with a length equal to the
-  /// `CAPACITY` value.
-  fn as_slice_mut(&mut self) -> &mut [Self::Item];
-
-  /// Create a default-initialized instance of ourself, similar to the
-  /// [`Default`] trait, but implemented for the same range of sizes as
-  /// [`Array`].
-  fn default() -> Self;
-}
-
-#[cfg(feature = "rustc_1_55")]
-mod const_generic_impl;
-
-#[cfg(not(feature = "rustc_1_55"))]
-mod generated_impl;
diff --git a/vendor/tinyvec/src/array/const_generic_impl.rs b/vendor/tinyvec/src/array/const_generic_impl.rs
deleted file mode 100644
index 2d9f1b1d..00000000
--- a/vendor/tinyvec/src/array/const_generic_impl.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-use super::Array;
-
-impl<T: Default, const N: usize> Array for [T; N] {
-  type Item = T;
-  const CAPACITY: usize = N;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [(); N].map(|_| Default::default())
-  }
-}
diff --git a/vendor/tinyvec/src/array/generated_impl.rs b/vendor/tinyvec/src/array/generated_impl.rs
deleted file mode 100644
index e7979ac0..00000000
--- a/vendor/tinyvec/src/array/generated_impl.rs
+++ /dev/null
@@ -1,9616 +0,0 @@
-// Generated file, to regenerate run
-//     ./gen-array-impls.sh > src/array/generated_impl.rs
-// from the repo root
-
-use super::Array;
-
-impl<T: Default> Array for [T; 0] {
-  type Item = T;
-  const CAPACITY: usize = 0;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    []
-  }
-}
-
-impl<T: Default> Array for [T; 1] {
-  type Item = T;
-  const CAPACITY: usize = 1;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [T::default()]
-  }
-}
-
-impl<T: Default> Array for [T; 2] {
-  type Item = T;
-  const CAPACITY: usize = 2;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [T::default(), T::default()]
-  }
-}
-
-impl<T: Default> Array for [T; 3] {
-  type Item = T;
-  const CAPACITY: usize = 3;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [T::default(), T::default(), T::default()]
-  }
-}
-
-impl<T: Default> Array for [T; 4] {
-  type Item = T;
-  const CAPACITY: usize = 4;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [T::default(), T::default(), T::default(), T::default()]
-  }
-}
-
-impl<T: Default> Array for [T; 5] {
-  type Item = T;
-  const CAPACITY: usize = 5;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [T::default(), T::default(), T::default(), T::default(), T::default()]
-  }
-}
-
-impl<T: Default> Array for [T; 6] {
-  type Item = T;
-  const CAPACITY: usize = 6;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 7] {
-  type Item = T;
-  const CAPACITY: usize = 7;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 8] {
-  type Item = T;
-  const CAPACITY: usize = 8;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 9] {
-  type Item = T;
-  const CAPACITY: usize = 9;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 10] {
-  type Item = T;
-  const CAPACITY: usize = 10;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 11] {
-  type Item = T;
-  const CAPACITY: usize = 11;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 12] {
-  type Item = T;
-  const CAPACITY: usize = 12;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 13] {
-  type Item = T;
-  const CAPACITY: usize = 13;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 14] {
-  type Item = T;
-  const CAPACITY: usize = 14;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 15] {
-  type Item = T;
-  const CAPACITY: usize = 15;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 16] {
-  type Item = T;
-  const CAPACITY: usize = 16;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 17] {
-  type Item = T;
-  const CAPACITY: usize = 17;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 18] {
-  type Item = T;
-  const CAPACITY: usize = 18;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 19] {
-  type Item = T;
-  const CAPACITY: usize = 19;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 20] {
-  type Item = T;
-  const CAPACITY: usize = 20;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 21] {
-  type Item = T;
-  const CAPACITY: usize = 21;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 22] {
-  type Item = T;
-  const CAPACITY: usize = 22;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 23] {
-  type Item = T;
-  const CAPACITY: usize = 23;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 24] {
-  type Item = T;
-  const CAPACITY: usize = 24;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 25] {
-  type Item = T;
-  const CAPACITY: usize = 25;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 26] {
-  type Item = T;
-  const CAPACITY: usize = 26;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 27] {
-  type Item = T;
-  const CAPACITY: usize = 27;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 28] {
-  type Item = T;
-  const CAPACITY: usize = 28;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 29] {
-  type Item = T;
-  const CAPACITY: usize = 29;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 30] {
-  type Item = T;
-  const CAPACITY: usize = 30;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 31] {
-  type Item = T;
-  const CAPACITY: usize = 31;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 32] {
-  type Item = T;
-  const CAPACITY: usize = 32;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 33] {
-  type Item = T;
-  const CAPACITY: usize = 33;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 64] {
-  type Item = T;
-  const CAPACITY: usize = 64;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 128] {
-  type Item = T;
-  const CAPACITY: usize = 128;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 256] {
-  type Item = T;
-  const CAPACITY: usize = 256;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 512] {
-  type Item = T;
-  const CAPACITY: usize = 512;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 1024] {
-  type Item = T;
-  const CAPACITY: usize = 1024;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 2048] {
-  type Item = T;
-  const CAPACITY: usize = 2048;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
-
-impl<T: Default> Array for [T; 4096] {
-  type Item = T;
-  const CAPACITY: usize = 4096;
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice(&self) -> &[T] {
-    &*self
-  }
-
-  #[inline(always)]
-  #[must_use]
-  fn as_slice_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-
-  #[inline(always)]
-  fn default() -> Self {
-    [
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-      T::default(),
-    ]
-  }
-}
diff --git a/vendor/tinyvec/src/arrayvec.rs b/vendor/tinyvec/src/arrayvec.rs
deleted file mode 100644
index f40b6170..00000000
--- a/vendor/tinyvec/src/arrayvec.rs
+++ /dev/null
@@ -1,2006 +0,0 @@
-use super::*;
-use core::convert::{TryFrom, TryInto};
-
-#[cfg(feature = "serde")]
-use core::marker::PhantomData;
-#[cfg(feature = "serde")]
-use serde::de::{
-  Deserialize, Deserializer, Error as DeserializeError, SeqAccess, Visitor,
-};
-#[cfg(feature = "serde")]
-use serde::ser::{Serialize, SerializeSeq, Serializer};
-
-/// Helper to make an `ArrayVec`.
-///
-/// You specify the backing array type, and optionally give all the elements you
-/// want to initially place into the array.
-///
-/// ```rust
-/// use tinyvec::*;
-///
-/// // The backing array type can be specified in the macro call
-/// let empty_av = array_vec!([u8; 16]);
-/// let some_ints = array_vec!([i32; 4] => 1, 2, 3);
-///
-/// // Or left to inference
-/// let empty_av: ArrayVec<[u8; 10]> = array_vec!();
-/// let some_ints: ArrayVec<[u8; 10]> = array_vec!(5, 6, 7, 8);
-/// ```
-#[macro_export]
-macro_rules! array_vec {
-  ($array_type:ty => $($elem:expr),* $(,)?) => {
-    {
-      let mut av: $crate::ArrayVec<$array_type> = Default::default();
-      $( av.push($elem); )*
-      av
-    }
-  };
-  ($array_type:ty) => {
-    $crate::ArrayVec::<$array_type>::default()
-  };
-  ($($elem:expr),*) => {
-    $crate::array_vec!(_ => $($elem),*)
-  };
-  ($elem:expr; $n:expr) => {
-    $crate::ArrayVec::from([$elem; $n])
-  };
-  () => {
-    $crate::array_vec!(_)
-  };
-}
-
-/// An array-backed, vector-like data structure.
-///
-/// * `ArrayVec` has a fixed capacity, equal to the minimum of the array size
-/// and `u16::MAX`. Note that not all capacities are necessarily supported by
-/// default. See comments in [`Array`].
-/// * `ArrayVec` has a variable length, as you add and remove elements. Attempts
-///   to fill the vec beyond its capacity will cause a panic.
-/// * All of the vec's array slots are always initialized in terms of Rust's
-///   memory model. When you remove a element from a location, the old value at
-///   that location is replaced with the type's default value.
-///
-/// The overall API of this type is intended to, as much as possible, emulate
-/// the API of the [`Vec`](https://doc.rust-lang.org/alloc/vec/struct.Vec.html)
-/// type.
-///
-/// ## Construction
-///
-/// You can use the `array_vec!` macro similarly to how you might use the `vec!`
-/// macro. Specify the array type, then optionally give all the initial values
-/// you want to have.
-/// ```rust
-/// # use tinyvec::*;
-/// let some_ints = array_vec!([i32; 4] => 1, 2, 3);
-/// assert_eq!(some_ints.len(), 3);
-/// ```
-///
-/// The [`default`](ArrayVec::new) for an `ArrayVec` is to have a default
-/// array with length 0. The [`new`](ArrayVec::new) method is the same as
-/// calling `default`
-/// ```rust
-/// # use tinyvec::*;
-/// let some_ints = ArrayVec::<[i32; 7]>::default();
-/// assert_eq!(some_ints.len(), 0);
-///
-/// let more_ints = ArrayVec::<[i32; 7]>::new();
-/// assert_eq!(some_ints, more_ints);
-/// ```
-///
-/// If you have an array and want the _whole thing_ so count as being "in" the
-/// new `ArrayVec` you can use one of the `from` implementations. If you want
-/// _part of_ the array then you can use
-/// [`from_array_len`](ArrayVec::from_array_len):
-/// ```rust
-/// # use tinyvec::*;
-/// let some_ints = ArrayVec::from([5, 6, 7, 8]);
-/// assert_eq!(some_ints.len(), 4);
-///
-/// let more_ints = ArrayVec::from_array_len([5, 6, 7, 8], 2);
-/// assert_eq!(more_ints.len(), 2);
-///
-/// let no_ints: ArrayVec<[u8; 5]> = ArrayVec::from_array_empty([1, 2, 3, 4, 5]);
-/// assert_eq!(no_ints.len(), 0);
-/// ```
-#[repr(C)]
-pub struct ArrayVec<A> {
-  len: u16,
-  pub(crate) data: A,
-}
-
-impl<A> Clone for ArrayVec<A>
-where
-  A: Array + Clone,
-  A::Item: Clone,
-{
-  #[inline]
-  fn clone(&self) -> Self {
-    Self { data: self.data.clone(), len: self.len }
-  }
-
-  #[inline]
-  fn clone_from(&mut self, o: &Self) {
-    let iter = self
-      .data
-      .as_slice_mut()
-      .iter_mut()
-      .zip(o.data.as_slice())
-      .take(self.len.max(o.len) as usize);
-    for (dst, src) in iter {
-      dst.clone_from(src)
-    }
-    if let Some(to_drop) =
-      self.data.as_slice_mut().get_mut((o.len as usize)..(self.len as usize))
-    {
-      to_drop.iter_mut().for_each(|x| drop(core::mem::take(x)));
-    }
-    self.len = o.len;
-  }
-}
-
-impl<A> Copy for ArrayVec<A>
-where
-  A: Array + Copy,
-  A::Item: Copy,
-{
-}
-
-impl<A: Array> Default for ArrayVec<A> {
-  #[inline]
-  fn default() -> Self {
-    Self { len: 0, data: A::default() }
-  }
-}
-
-impl<A: Array> Deref for ArrayVec<A> {
-  type Target = [A::Item];
-  #[inline(always)]
-  #[must_use]
-  fn deref(&self) -> &Self::Target {
-    &self.data.as_slice()[..self.len as usize]
-  }
-}
-
-impl<A: Array> DerefMut for ArrayVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn deref_mut(&mut self) -> &mut Self::Target {
-    &mut self.data.as_slice_mut()[..self.len as usize]
-  }
-}
-
-impl<A: Array, I: SliceIndex<[A::Item]>> Index<I> for ArrayVec<A> {
-  type Output = <I as SliceIndex<[A::Item]>>::Output;
-  #[inline(always)]
-  #[must_use]
-  fn index(&self, index: I) -> &Self::Output {
-    &self.deref()[index]
-  }
-}
-
-impl<A: Array, I: SliceIndex<[A::Item]>> IndexMut<I> for ArrayVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn index_mut(&mut self, index: I) -> &mut Self::Output {
-    &mut self.deref_mut()[index]
-  }
-}
-
-#[cfg(feature = "serde")]
-#[cfg_attr(docs_rs, doc(cfg(feature = "serde")))]
-impl<A: Array> Serialize for ArrayVec<A>
-where
-  A::Item: Serialize,
-{
-  #[must_use]
-  fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
-  where
-    S: Serializer,
-  {
-    let mut seq = serializer.serialize_seq(Some(self.len()))?;
-    for element in self.iter() {
-      seq.serialize_element(element)?;
-    }
-    seq.end()
-  }
-}
-
-#[cfg(feature = "serde")]
-#[cfg_attr(docs_rs, doc(cfg(feature = "serde")))]
-impl<'de, A: Array> Deserialize<'de> for ArrayVec<A>
-where
-  A::Item: Deserialize<'de>,
-{
-  fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
-  where
-    D: Deserializer<'de>,
-  {
-    deserializer.deserialize_seq(ArrayVecVisitor(PhantomData))
-  }
-}
-
-#[cfg(feature = "arbitrary")]
-#[cfg_attr(docs_rs, doc(cfg(feature = "arbitrary")))]
-impl<'a, A> arbitrary::Arbitrary<'a> for ArrayVec<A>
-where
-  A: Array,
-  A::Item: arbitrary::Arbitrary<'a>,
-{
-  fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result<Self> {
-    let max_len = A::CAPACITY.min(u16::MAX as usize) as u16;
-    let len = u.int_in_range::<u16>(0..=max_len)?;
-    let mut self_: Self = Default::default();
-    for _ in 0..len {
-      self_.push(u.arbitrary()?);
-    }
-    Ok(self_)
-  }
-
-  fn size_hint(depth: usize) -> (usize, Option<usize>) {
-    arbitrary::size_hint::recursion_guard(depth, |depth| {
-      let max_len = A::CAPACITY.min(u16::MAX as usize);
-      let inner = A::Item::size_hint(depth).1;
-      (0, inner.map(|inner| 2 + max_len * inner))
-    })
-  }
-}
-
-impl<A: Array> ArrayVec<A> {
-  /// Move all values from `other` into this vec.
-  ///
-  /// ## Panics
-  /// * If the vec overflows its capacity
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 10] => 1, 2, 3);
-  /// let mut av2 = array_vec!([i32; 10] => 4, 5, 6);
-  /// av.append(&mut av2);
-  /// assert_eq!(av, &[1, 2, 3, 4, 5, 6][..]);
-  /// assert_eq!(av2, &[][..]);
-  /// ```
-  #[inline]
-  pub fn append(&mut self, other: &mut Self) {
-    assert!(
-      self.try_append(other).is_none(),
-      "ArrayVec::append> total length {} exceeds capacity {}!",
-      self.len() + other.len(),
-      A::CAPACITY
-    );
-  }
-
-  /// Move all values from `other` into this vec.
-  /// If appending would overflow the capacity, Some(other) is returned.
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 7] => 1, 2, 3);
-  /// let mut av2 = array_vec!([i32; 7] => 4, 5, 6);
-  /// av.append(&mut av2);
-  /// assert_eq!(av, &[1, 2, 3, 4, 5, 6][..]);
-  /// assert_eq!(av2, &[][..]);
-  ///
-  /// let mut av3 = array_vec!([i32; 7] => 7, 8, 9);
-  /// assert!(av.try_append(&mut av3).is_some());
-  /// assert_eq!(av, &[1, 2, 3, 4, 5, 6][..]);
-  /// assert_eq!(av3, &[7, 8, 9][..]);
-  /// ```
-  #[inline]
-  pub fn try_append<'other>(
-    &mut self, other: &'other mut Self,
-  ) -> Option<&'other mut Self> {
-    let new_len = self.len() + other.len();
-    if new_len > A::CAPACITY {
-      return Some(other);
-    }
-
-    let iter = other.iter_mut().map(core::mem::take);
-    for item in iter {
-      self.push(item);
-    }
-
-    other.set_len(0);
-
-    return None;
-  }
-
-  /// A `*mut` pointer to the backing array.
-  ///
-  /// ## Safety
-  ///
-  /// This pointer has provenance over the _entire_ backing array.
-  #[inline(always)]
-  #[must_use]
-  pub fn as_mut_ptr(&mut self) -> *mut A::Item {
-    self.data.as_slice_mut().as_mut_ptr()
-  }
-
-  /// Performs a `deref_mut`, into unique slice form.
-  #[inline(always)]
-  #[must_use]
-  pub fn as_mut_slice(&mut self) -> &mut [A::Item] {
-    self.deref_mut()
-  }
-
-  /// A `*const` pointer to the backing array.
-  ///
-  /// ## Safety
-  ///
-  /// This pointer has provenance over the _entire_ backing array.
-  #[inline(always)]
-  #[must_use]
-  pub fn as_ptr(&self) -> *const A::Item {
-    self.data.as_slice().as_ptr()
-  }
-
-  /// Performs a `deref`, into shared slice form.
-  #[inline(always)]
-  #[must_use]
-  pub fn as_slice(&self) -> &[A::Item] {
-    self.deref()
-  }
-
-  /// The capacity of the `ArrayVec`.
-  ///
-  /// This is fixed based on the array type, but can't yet be made a `const fn`
-  /// on Stable Rust.
-  #[inline(always)]
-  #[must_use]
-  pub fn capacity(&self) -> usize {
-    // Note: This shouldn't use A::CAPACITY, because unsafe code can't rely on
-    // any Array invariants. This ensures that at the very least, the returned
-    // value is a valid length for a subslice of the backing array.
-    self.data.as_slice().len().min(u16::MAX as usize)
-  }
-
-  /// Truncates the `ArrayVec` down to length 0.
-  #[inline(always)]
-  pub fn clear(&mut self) {
-    self.truncate(0)
-  }
-
-  /// Creates a draining iterator that removes the specified range in the vector
-  /// and yields the removed items.
-  ///
-  /// ## Panics
-  /// * If the start is greater than the end
-  /// * If the end is past the edge of the vec.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 4] => 1, 2, 3);
-  /// let av2: ArrayVec<[i32; 4]> = av.drain(1..).collect();
-  /// assert_eq!(av.as_slice(), &[1][..]);
-  /// assert_eq!(av2.as_slice(), &[2, 3][..]);
-  ///
-  /// av.drain(..);
-  /// assert_eq!(av.as_slice(), &[]);
-  /// ```
-  #[inline]
-  pub fn drain<R>(&mut self, range: R) -> ArrayVecDrain<'_, A::Item>
-  where
-    R: RangeBounds<usize>,
-  {
-    ArrayVecDrain::new(self, range)
-  }
-
-  /// Returns the inner array of the `ArrayVec`.
-  ///
-  /// This returns the full array, even if the `ArrayVec` length is currently
-  /// less than that.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::{array_vec, ArrayVec};
-  /// let mut favorite_numbers = array_vec!([i32; 5] => 87, 48, 33, 9, 26);
-  /// assert_eq!(favorite_numbers.clone().into_inner(), [87, 48, 33, 9, 26]);
-  ///
-  /// favorite_numbers.pop();
-  /// assert_eq!(favorite_numbers.into_inner(), [87, 48, 33, 9, 0]);
-  /// ```
-  ///
-  /// A use for this function is to build an array from an iterator by first
-  /// collecting it into an `ArrayVec`.
-  ///
-  /// ```rust
-  /// # use tinyvec::ArrayVec;
-  /// let arr_vec: ArrayVec<[i32; 10]> = (1..=3).cycle().take(10).collect();
-  /// let inner = arr_vec.into_inner();
-  /// assert_eq!(inner, [1, 2, 3, 1, 2, 3, 1, 2, 3, 1]);
-  /// ```
-  #[inline]
-  pub fn into_inner(self) -> A {
-    self.data
-  }
-
-  /// Clone each element of the slice into this `ArrayVec`.
-  ///
-  /// ## Panics
-  /// * If the `ArrayVec` would overflow, this will panic.
-  #[inline]
-  pub fn extend_from_slice(&mut self, sli: &[A::Item])
-  where
-    A::Item: Clone,
-  {
-    if sli.is_empty() {
-      return;
-    }
-
-    let new_len = self.len as usize + sli.len();
-    assert!(
-      new_len <= A::CAPACITY,
-      "ArrayVec::extend_from_slice> total length {} exceeds capacity {}!",
-      new_len,
-      A::CAPACITY
-    );
-
-    let target = &mut self.data.as_slice_mut()[self.len as usize..new_len];
-    target.clone_from_slice(sli);
-    self.set_len(new_len);
-  }
-
-  /// Fill the vector until its capacity has been reached.
-  ///
-  /// Successively fills unused space in the spare slice of the vector with
-  /// elements from the iterator. It then returns the remaining iterator
-  /// without exhausting it. This also allows appending the head of an
-  /// infinite iterator.
-  ///
-  /// This is an alternative to `Extend::extend` method for cases where the
-  /// length of the iterator can not be checked. Since this vector can not
-  /// reallocate to increase its capacity, it is unclear what to do with
-  /// remaining elements in the iterator and the iterator itself. The
-  /// interface also provides no way to communicate this to the caller.
-  ///
-  /// ## Panics
-  /// * If the `next` method of the provided iterator panics.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 4]);
-  /// let mut to_inf = av.fill(0..);
-  /// assert_eq!(&av[..], [0, 1, 2, 3]);
-  /// assert_eq!(to_inf.next(), Some(4));
-  /// ```
-  #[inline]
-  pub fn fill<I: IntoIterator<Item = A::Item>>(
-    &mut self, iter: I,
-  ) -> I::IntoIter {
-    // If this is written as a call to push for each element in iter, the
-    // compiler emits code that updates the length for every element. The
-    // additional complexity from that length update is worth nearly 2x in
-    // the runtime of this function.
-    let mut iter = iter.into_iter();
-    let mut pushed = 0;
-    let to_take = self.capacity() - self.len();
-    let target = &mut self.data.as_slice_mut()[self.len as usize..];
-    for element in iter.by_ref().take(to_take) {
-      target[pushed] = element;
-      pushed += 1;
-    }
-    self.len += pushed as u16;
-    iter
-  }
-
-  /// Wraps up an array and uses the given length as the initial length.
-  ///
-  /// If you want to simply use the full array, use `from` instead.
-  ///
-  /// ## Panics
-  ///
-  /// * The length specified must be less than or equal to the capacity of the
-  ///   array.
-  #[inline]
-  #[must_use]
-  #[allow(clippy::match_wild_err_arm)]
-  pub fn from_array_len(data: A, len: usize) -> Self {
-    match Self::try_from_array_len(data, len) {
-      Ok(out) => out,
-      Err(_) => panic!(
-        "ArrayVec::from_array_len> length {} exceeds capacity {}!",
-        len,
-        A::CAPACITY
-      ),
-    }
-  }
-
-  /// Inserts an item at the position given, moving all following elements +1
-  /// index.
-  ///
-  /// ## Panics
-  /// * If `index` > `len`
-  /// * If the capacity is exhausted
-  ///
-  /// ## Example
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut av = array_vec!([i32; 10] => 1, 2, 3);
-  /// av.insert(1, 4);
-  /// assert_eq!(av.as_slice(), &[1, 4, 2, 3]);
-  /// av.insert(4, 5);
-  /// assert_eq!(av.as_slice(), &[1, 4, 2, 3, 5]);
-  /// ```
-  #[inline]
-  pub fn insert(&mut self, index: usize, item: A::Item) {
-    let x = self.try_insert(index, item);
-    assert!(x.is_none(), "ArrayVec::insert> capacity overflow!");
-  }
-
-  /// Tries to insert an item at the position given, moving all following
-  /// elements +1 index.
-  /// Returns back the element if the capacity is exhausted,
-  /// otherwise returns None.
-  ///
-  /// ## Panics
-  /// * If `index` > `len`
-  ///
-  /// ## Example
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut av = array_vec!([&'static str; 4] => "one", "two", "three");
-  /// av.insert(1, "four");
-  /// assert_eq!(av.as_slice(), &["one", "four", "two", "three"]);
-  /// assert_eq!(av.try_insert(4, "five"), Some("five"));
-  /// ```
-  #[inline]
-  pub fn try_insert(
-    &mut self, index: usize, mut item: A::Item,
-  ) -> Option<A::Item> {
-    assert!(
-      index <= self.len as usize,
-      "ArrayVec::try_insert> index {} is out of bounds {}",
-      index,
-      self.len
-    );
-
-    // A previous implementation used self.try_push and slice::rotate_right
-    // rotate_right and rotate_left generate a huge amount of code and fail to
-    // inline; calling them here incurs the cost of all the cases they
-    // handle even though we're rotating a usually-small array by a constant
-    // 1 offset. This swap-based implementation benchmarks much better for
-    // small array lengths in particular.
-
-    if (self.len as usize) < A::CAPACITY {
-      self.len += 1;
-    } else {
-      return Some(item);
-    }
-
-    let target = &mut self.as_mut_slice()[index..];
-    for i in 0..target.len() {
-      core::mem::swap(&mut item, &mut target[i]);
-    }
-    return None;
-  }
-
-  /// Checks if the length is 0.
-  #[inline(always)]
-  #[must_use]
-  pub fn is_empty(&self) -> bool {
-    self.len == 0
-  }
-
-  /// The length of the `ArrayVec` (in elements).
-  #[inline(always)]
-  #[must_use]
-  pub fn len(&self) -> usize {
-    self.len as usize
-  }
-
-  /// Makes a new, empty `ArrayVec`.
-  #[inline(always)]
-  #[must_use]
-  pub fn new() -> Self {
-    Self::default()
-  }
-
-  /// Remove and return the last element of the vec, if there is one.
-  ///
-  /// ## Failure
-  /// * If the vec is empty you get `None`.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 10] => 1, 2);
-  /// assert_eq!(av.pop(), Some(2));
-  /// assert_eq!(av.pop(), Some(1));
-  /// assert_eq!(av.pop(), None);
-  /// ```
-  #[inline]
-  pub fn pop(&mut self) -> Option<A::Item> {
-    if self.len > 0 {
-      self.len -= 1;
-      let out =
-        core::mem::take(&mut self.data.as_slice_mut()[self.len as usize]);
-      Some(out)
-    } else {
-      None
-    }
-  }
-
-  /// Place an element onto the end of the vec.
-  ///
-  /// ## Panics
-  /// * If the length of the vec would overflow the capacity.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 2]);
-  /// assert_eq!(&av[..], []);
-  /// av.push(1);
-  /// assert_eq!(&av[..], [1]);
-  /// av.push(2);
-  /// assert_eq!(&av[..], [1, 2]);
-  /// // av.push(3); this would overflow the ArrayVec and panic!
-  /// ```
-  #[inline(always)]
-  pub fn push(&mut self, val: A::Item) {
-    let x = self.try_push(val);
-    assert!(x.is_none(), "ArrayVec::push> capacity overflow!");
-  }
-
-  /// Tries to place an element onto the end of the vec.\
-  /// Returns back the element if the capacity is exhausted,
-  /// otherwise returns None.
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 2]);
-  /// assert_eq!(av.as_slice(), []);
-  /// assert_eq!(av.try_push(1), None);
-  /// assert_eq!(&av[..], [1]);
-  /// assert_eq!(av.try_push(2), None);
-  /// assert_eq!(&av[..], [1, 2]);
-  /// assert_eq!(av.try_push(3), Some(3));
-  /// ```
-  #[inline(always)]
-  pub fn try_push(&mut self, val: A::Item) -> Option<A::Item> {
-    debug_assert!(self.len as usize <= A::CAPACITY);
-
-    let itemref = match self.data.as_slice_mut().get_mut(self.len as usize) {
-      None => return Some(val),
-      Some(x) => x,
-    };
-
-    *itemref = val;
-    self.len += 1;
-    return None;
-  }
-
-  /// Removes the item at `index`, shifting all others down by one index.
-  ///
-  /// Returns the removed element.
-  ///
-  /// ## Panics
-  ///
-  /// * If the index is out of bounds.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 4] => 1, 2, 3);
-  /// assert_eq!(av.remove(1), 2);
-  /// assert_eq!(&av[..], [1, 3]);
-  /// ```
-  #[inline]
-  pub fn remove(&mut self, index: usize) -> A::Item {
-    let targets: &mut [A::Item] = &mut self.deref_mut()[index..];
-    let item = core::mem::take(&mut targets[0]);
-
-    // A previous implementation used rotate_left
-    // rotate_right and rotate_left generate a huge amount of code and fail to
-    // inline; calling them here incurs the cost of all the cases they
-    // handle even though we're rotating a usually-small array by a constant
-    // 1 offset. This swap-based implementation benchmarks much better for
-    // small array lengths in particular.
-
-    for i in 0..targets.len() - 1 {
-      targets.swap(i, i + 1);
-    }
-    self.len -= 1;
-    item
-  }
-
-  /// As [`resize_with`](ArrayVec::resize_with)
-  /// and it clones the value as the closure.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  ///
-  /// let mut av = array_vec!([&str; 10] => "hello");
-  /// av.resize(3, "world");
-  /// assert_eq!(&av[..], ["hello", "world", "world"]);
-  ///
-  /// let mut av = array_vec!([i32; 10] => 1, 2, 3, 4);
-  /// av.resize(2, 0);
-  /// assert_eq!(&av[..], [1, 2]);
-  /// ```
-  #[inline]
-  pub fn resize(&mut self, new_len: usize, new_val: A::Item)
-  where
-    A::Item: Clone,
-  {
-    self.resize_with(new_len, || new_val.clone())
-  }
-
-  /// Resize the vec to the new length.
-  ///
-  /// If it needs to be longer, it's filled with repeated calls to the provided
-  /// function. If it needs to be shorter, it's truncated.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  ///
-  /// let mut av = array_vec!([i32; 10] => 1, 2, 3);
-  /// av.resize_with(5, Default::default);
-  /// assert_eq!(&av[..], [1, 2, 3, 0, 0]);
-  ///
-  /// let mut av = array_vec!([i32; 10]);
-  /// let mut p = 1;
-  /// av.resize_with(4, || {
-  ///   p *= 2;
-  ///   p
-  /// });
-  /// assert_eq!(&av[..], [2, 4, 8, 16]);
-  /// ```
-  #[inline]
-  pub fn resize_with<F: FnMut() -> A::Item>(
-    &mut self, new_len: usize, mut f: F,
-  ) {
-    match new_len.checked_sub(self.len as usize) {
-      None => self.truncate(new_len),
-      Some(new_elements) => {
-        for _ in 0..new_elements {
-          self.push(f());
-        }
-      }
-    }
-  }
-
-  /// Walk the vec and keep only the elements that pass the predicate given.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  ///
-  /// let mut av = array_vec!([i32; 10] => 1, 1, 2, 3, 3, 4);
-  /// av.retain(|&x| x % 2 == 0);
-  /// assert_eq!(&av[..], [2, 4]);
-  /// ```
-  #[inline]
-  pub fn retain<F: FnMut(&A::Item) -> bool>(&mut self, mut acceptable: F) {
-    // Drop guard to contain exactly the remaining elements when the test
-    // panics.
-    struct JoinOnDrop<'vec, Item> {
-      items: &'vec mut [Item],
-      done_end: usize,
-      // Start of tail relative to `done_end`.
-      tail_start: usize,
-    }
-
-    impl<Item> Drop for JoinOnDrop<'_, Item> {
-      fn drop(&mut self) {
-        self.items[self.done_end..].rotate_left(self.tail_start);
-      }
-    }
-
-    let mut rest = JoinOnDrop {
-      items: &mut self.data.as_slice_mut()[..self.len as usize],
-      done_end: 0,
-      tail_start: 0,
-    };
-
-    let len = self.len as usize;
-    for idx in 0..len {
-      // Loop start invariant: idx = rest.done_end + rest.tail_start
-      if !acceptable(&rest.items[idx]) {
-        let _ = core::mem::take(&mut rest.items[idx]);
-        self.len -= 1;
-        rest.tail_start += 1;
-      } else {
-        rest.items.swap(rest.done_end, idx);
-        rest.done_end += 1;
-      }
-    }
-  }
-
-  /// Retains only the elements specified by the predicate, passing a mutable
-  /// reference to it.
-  ///
-  /// In other words, remove all elements e such that f(&mut e) returns false.
-  /// This method operates in place, visiting each element exactly once in the
-  /// original order, and preserves the order of the retained elements.
-  ///
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  ///
-  /// let mut av = array_vec!([i32; 10] => 1, 1, 2, 3, 3, 4);
-  /// av.retain_mut(|x| if *x % 2 == 0 { *x *= 2; true } else { false });
-  /// assert_eq!(&av[..], [4, 8]);
-  /// ```
-  #[inline]
-  pub fn retain_mut<F>(&mut self, mut acceptable: F)
-  where
-    F: FnMut(&mut A::Item) -> bool,
-  {
-    // Drop guard to contain exactly the remaining elements when the test
-    // panics.
-    struct JoinOnDrop<'vec, Item> {
-      items: &'vec mut [Item],
-      done_end: usize,
-      // Start of tail relative to `done_end`.
-      tail_start: usize,
-    }
-
-    impl<Item> Drop for JoinOnDrop<'_, Item> {
-      fn drop(&mut self) {
-        self.items[self.done_end..].rotate_left(self.tail_start);
-      }
-    }
-
-    let mut rest = JoinOnDrop {
-      items: &mut self.data.as_slice_mut()[..self.len as usize],
-      done_end: 0,
-      tail_start: 0,
-    };
-
-    let len = self.len as usize;
-    for idx in 0..len {
-      // Loop start invariant: idx = rest.done_end + rest.tail_start
-      if !acceptable(&mut rest.items[idx]) {
-        let _ = core::mem::take(&mut rest.items[idx]);
-        self.len -= 1;
-        rest.tail_start += 1;
-      } else {
-        rest.items.swap(rest.done_end, idx);
-        rest.done_end += 1;
-      }
-    }
-  }
-
-  /// Forces the length of the vector to `new_len`.
-  ///
-  /// ## Panics
-  /// * If `new_len` is greater than the vec's capacity.
-  ///
-  /// ## Safety
-  /// * This is a fully safe operation! The inactive memory already counts as
-  ///   "initialized" by Rust's rules.
-  /// * Other than "the memory is initialized" there are no other guarantees
-  ///   regarding what you find in the inactive portion of the vec.
-  #[inline(always)]
-  pub fn set_len(&mut self, new_len: usize) {
-    if new_len > A::CAPACITY {
-      // Note(Lokathor): Technically we don't have to panic here, and we could
-      // just let some other call later on trigger a panic on accident when the
-      // length is wrong. However, it's a lot easier to catch bugs when things
-      // are more "fail-fast".
-      panic!(
-        "ArrayVec::set_len> new length {} exceeds capacity {}",
-        new_len,
-        A::CAPACITY
-      )
-    }
-
-    let new_len: u16 = new_len
-      .try_into()
-      .expect("ArrayVec::set_len> new length is not in range 0..=u16::MAX");
-    self.len = new_len;
-  }
-
-  /// Splits the collection at the point given.
-  ///
-  /// * `[0, at)` stays in this vec
-  /// * `[at, len)` ends up in the new vec.
-  ///
-  /// ## Panics
-  /// * if at > len
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 4] => 1, 2, 3);
-  /// let av2 = av.split_off(1);
-  /// assert_eq!(&av[..], [1]);
-  /// assert_eq!(&av2[..], [2, 3]);
-  /// ```
-  #[inline]
-  pub fn split_off(&mut self, at: usize) -> Self {
-    // FIXME: should this just use drain into the output?
-    if at > self.len() {
-      panic!(
-        "ArrayVec::split_off> at value {} exceeds length of {}",
-        at, self.len
-      );
-    }
-    let mut new = Self::default();
-    let moves = &mut self.as_mut_slice()[at..];
-    let split_len = moves.len();
-    let targets = &mut new.data.as_slice_mut()[..split_len];
-    moves.swap_with_slice(targets);
-
-    /* moves.len() <= u16::MAX, so these are surely in u16 range */
-    new.len = split_len as u16;
-    self.len = at as u16;
-    new
-  }
-
-  /// Creates a splicing iterator that removes the specified range in the
-  /// vector, yields the removed items, and replaces them with elements from
-  /// the provided iterator.
-  ///
-  /// `splice` fuses the provided iterator, so elements after the first `None`
-  /// are ignored.
-  ///
-  /// ## Panics
-  /// * If the start is greater than the end.
-  /// * If the end is past the edge of the vec.
-  /// * If the provided iterator panics.
-  /// * If the new length would overflow the capacity of the array. Because
-  ///   `ArrayVecSplice` adds elements to this vec in its destructor when
-  ///   necessary, this panic would occur when it is dropped.
-  ///
-  /// ## Example
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut av = array_vec!([i32; 4] => 1, 2, 3);
-  /// let av2: ArrayVec<[i32; 4]> = av.splice(1.., 4..=6).collect();
-  /// assert_eq!(av.as_slice(), &[1, 4, 5, 6][..]);
-  /// assert_eq!(av2.as_slice(), &[2, 3][..]);
-  ///
-  /// av.splice(.., None);
-  /// assert_eq!(av.as_slice(), &[]);
-  /// ```
-  #[inline]
-  pub fn splice<R, I>(
-    &mut self, range: R, replacement: I,
-  ) -> ArrayVecSplice<'_, A, core::iter::Fuse<I::IntoIter>>
-  where
-    R: RangeBounds<usize>,
-    I: IntoIterator<Item = A::Item>,
-  {
-    use core::ops::Bound;
-    let start = match range.start_bound() {
-      Bound::Included(x) => *x,
-      Bound::Excluded(x) => x.saturating_add(1),
-      Bound::Unbounded => 0,
-    };
-    let end = match range.end_bound() {
-      Bound::Included(x) => x.saturating_add(1),
-      Bound::Excluded(x) => *x,
-      Bound::Unbounded => self.len(),
-    };
-    assert!(
-      start <= end,
-      "ArrayVec::splice> Illegal range, {} to {}",
-      start,
-      end
-    );
-    assert!(
-      end <= self.len(),
-      "ArrayVec::splice> Range ends at {} but length is only {}!",
-      end,
-      self.len()
-    );
-
-    ArrayVecSplice {
-      removal_start: start,
-      removal_end: end,
-      parent: self,
-      replacement: replacement.into_iter().fuse(),
-    }
-  }
-
-  /// Remove an element, swapping the end of the vec into its place.
-  ///
-  /// ## Panics
-  /// * If the index is out of bounds.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([&str; 4] => "foo", "bar", "quack", "zap");
-  ///
-  /// assert_eq!(av.swap_remove(1), "bar");
-  /// assert_eq!(&av[..], ["foo", "zap", "quack"]);
-  ///
-  /// assert_eq!(av.swap_remove(0), "foo");
-  /// assert_eq!(&av[..], ["quack", "zap"]);
-  /// ```
-  #[inline]
-  pub fn swap_remove(&mut self, index: usize) -> A::Item {
-    assert!(
-      index < self.len(),
-      "ArrayVec::swap_remove> index {} is out of bounds {}",
-      index,
-      self.len
-    );
-    if index == self.len() - 1 {
-      self.pop().unwrap()
-    } else {
-      let i = self.pop().unwrap();
-      replace(&mut self[index], i)
-    }
-  }
-
-  /// Reduces the vec's length to the given value.
-  ///
-  /// If the vec is already shorter than the input, nothing happens.
-  #[inline]
-  pub fn truncate(&mut self, new_len: usize) {
-    if new_len >= self.len as usize {
-      return;
-    }
-
-    if needs_drop::<A::Item>() {
-      let len = self.len as usize;
-      self.data.as_slice_mut()[new_len..len]
-        .iter_mut()
-        .map(core::mem::take)
-        .for_each(drop);
-    }
-
-    /* new_len is less than self.len */
-    self.len = new_len as u16;
-  }
-
-  /// Wraps an array, using the given length as the starting length.
-  ///
-  /// If you want to use the whole length of the array, you can just use the
-  /// `From` impl.
-  ///
-  /// ## Failure
-  ///
-  /// If the given length is greater than the capacity of the array this will
-  /// error, and you'll get the array back in the `Err`.
-  #[inline]
-  pub fn try_from_array_len(data: A, len: usize) -> Result<Self, A> {
-    /* Note(Soveu): Should we allow A::CAPACITY > u16::MAX for now? */
-    if len <= A::CAPACITY {
-      Ok(Self { data, len: len as u16 })
-    } else {
-      Err(data)
-    }
-  }
-}
-
-impl<A> ArrayVec<A> {
-  /// Wraps up an array as a new empty `ArrayVec`.
-  ///
-  /// If you want to simply use the full array, use `from` instead.
-  ///
-  /// ## Examples
-  ///
-  /// This method in particular allows to create values for statics:
-  ///
-  /// ```rust
-  /// # use tinyvec::ArrayVec;
-  /// static DATA: ArrayVec<[u8; 5]> = ArrayVec::from_array_empty([0; 5]);
-  /// assert_eq!(DATA.len(), 0);
-  /// ```
-  ///
-  /// But of course it is just an normal empty `ArrayVec`:
-  ///
-  /// ```rust
-  /// # use tinyvec::ArrayVec;
-  /// let mut data = ArrayVec::from_array_empty([1, 2, 3, 4]);
-  /// assert_eq!(&data[..], &[]);
-  /// data.push(42);
-  /// assert_eq!(&data[..], &[42]);
-  /// ```
-  #[inline]
-  #[must_use]
-  pub const fn from_array_empty(data: A) -> Self {
-    Self { data, len: 0 }
-  }
-}
-
-#[cfg(feature = "grab_spare_slice")]
-impl<A: Array> ArrayVec<A> {
-  /// Obtain the shared slice of the array _after_ the active memory.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 4]);
-  /// assert_eq!(av.grab_spare_slice().len(), 4);
-  /// av.push(10);
-  /// av.push(11);
-  /// av.push(12);
-  /// av.push(13);
-  /// assert_eq!(av.grab_spare_slice().len(), 0);
-  /// ```
-  #[inline(always)]
-  pub fn grab_spare_slice(&self) -> &[A::Item] {
-    &self.data.as_slice()[self.len as usize..]
-  }
-
-  /// Obtain the mutable slice of the array _after_ the active memory.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 4]);
-  /// assert_eq!(av.grab_spare_slice_mut().len(), 4);
-  /// av.push(10);
-  /// av.push(11);
-  /// assert_eq!(av.grab_spare_slice_mut().len(), 2);
-  /// ```
-  #[inline(always)]
-  pub fn grab_spare_slice_mut(&mut self) -> &mut [A::Item] {
-    &mut self.data.as_slice_mut()[self.len as usize..]
-  }
-}
-
-#[cfg(feature = "nightly_slice_partition_dedup")]
-impl<A: Array> ArrayVec<A> {
-  /// De-duplicates the vec contents.
-  #[inline(always)]
-  pub fn dedup(&mut self)
-  where
-    A::Item: PartialEq,
-  {
-    self.dedup_by(|a, b| a == b)
-  }
-
-  /// De-duplicates the vec according to the predicate given.
-  #[inline(always)]
-  pub fn dedup_by<F>(&mut self, same_bucket: F)
-  where
-    F: FnMut(&mut A::Item, &mut A::Item) -> bool,
-  {
-    let len = {
-      let (dedup, _) = self.as_mut_slice().partition_dedup_by(same_bucket);
-      dedup.len()
-    };
-    self.truncate(len);
-  }
-
-  /// De-duplicates the vec according to the key selector given.
-  #[inline(always)]
-  pub fn dedup_by_key<F, K>(&mut self, mut key: F)
-  where
-    F: FnMut(&mut A::Item) -> K,
-    K: PartialEq,
-  {
-    self.dedup_by(|a, b| key(a) == key(b))
-  }
-}
-
-impl<A> ArrayVec<A> {
-  /// Returns the reference to the inner array of the `ArrayVec`.
-  ///
-  /// This returns the full array, even if the `ArrayVec` length is currently
-  /// less than that.
-  #[inline(always)]
-  #[must_use]
-  pub const fn as_inner(&self) -> &A {
-    &self.data
-  }
-}
-
-/// Splicing iterator for `ArrayVec`
-/// See [`ArrayVec::splice`](ArrayVec::<A>::splice)
-pub struct ArrayVecSplice<'p, A: Array, I: Iterator<Item = A::Item>> {
-  parent: &'p mut ArrayVec<A>,
-  removal_start: usize,
-  removal_end: usize,
-  replacement: I,
-}
-
-impl<'p, A: Array, I: Iterator<Item = A::Item>> Iterator
-  for ArrayVecSplice<'p, A, I>
-{
-  type Item = A::Item;
-
-  #[inline]
-  fn next(&mut self) -> Option<A::Item> {
-    if self.removal_start < self.removal_end {
-      match self.replacement.next() {
-        Some(replacement) => {
-          let removed = core::mem::replace(
-            &mut self.parent[self.removal_start],
-            replacement,
-          );
-          self.removal_start += 1;
-          Some(removed)
-        }
-        None => {
-          let removed = self.parent.remove(self.removal_start);
-          self.removal_end -= 1;
-          Some(removed)
-        }
-      }
-    } else {
-      None
-    }
-  }
-
-  #[inline]
-  fn size_hint(&self) -> (usize, Option<usize>) {
-    let len = self.len();
-    (len, Some(len))
-  }
-}
-
-impl<'p, A, I> ExactSizeIterator for ArrayVecSplice<'p, A, I>
-where
-  A: Array,
-  I: Iterator<Item = A::Item>,
-{
-  #[inline]
-  fn len(&self) -> usize {
-    self.removal_end - self.removal_start
-  }
-}
-
-impl<'p, A, I> FusedIterator for ArrayVecSplice<'p, A, I>
-where
-  A: Array,
-  I: Iterator<Item = A::Item>,
-{
-}
-
-impl<'p, A, I> DoubleEndedIterator for ArrayVecSplice<'p, A, I>
-where
-  A: Array,
-  I: Iterator<Item = A::Item> + DoubleEndedIterator,
-{
-  #[inline]
-  fn next_back(&mut self) -> Option<A::Item> {
-    if self.removal_start < self.removal_end {
-      match self.replacement.next_back() {
-        Some(replacement) => {
-          let removed = core::mem::replace(
-            &mut self.parent[self.removal_end - 1],
-            replacement,
-          );
-          self.removal_end -= 1;
-          Some(removed)
-        }
-        None => {
-          let removed = self.parent.remove(self.removal_end - 1);
-          self.removal_end -= 1;
-          Some(removed)
-        }
-      }
-    } else {
-      None
-    }
-  }
-}
-
-impl<'p, A: Array, I: Iterator<Item = A::Item>> Drop
-  for ArrayVecSplice<'p, A, I>
-{
-  #[inline]
-  fn drop(&mut self) {
-    for _ in self.by_ref() {}
-
-    // FIXME: reserve lower bound of size_hint
-
-    for replacement in self.replacement.by_ref() {
-      self.parent.insert(self.removal_end, replacement);
-      self.removal_end += 1;
-    }
-  }
-}
-
-impl<A: Array> AsMut<[A::Item]> for ArrayVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn as_mut(&mut self) -> &mut [A::Item] {
-    &mut *self
-  }
-}
-
-impl<A: Array> AsRef<[A::Item]> for ArrayVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn as_ref(&self) -> &[A::Item] {
-    &*self
-  }
-}
-
-impl<A: Array> Borrow<[A::Item]> for ArrayVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn borrow(&self) -> &[A::Item] {
-    &*self
-  }
-}
-
-impl<A: Array> BorrowMut<[A::Item]> for ArrayVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn borrow_mut(&mut self) -> &mut [A::Item] {
-    &mut *self
-  }
-}
-
-impl<A: Array> Extend<A::Item> for ArrayVec<A> {
-  #[inline]
-  fn extend<T: IntoIterator<Item = A::Item>>(&mut self, iter: T) {
-    for t in iter {
-      self.push(t)
-    }
-  }
-}
-
-impl<A: Array> From<A> for ArrayVec<A> {
-  #[inline(always)]
-  #[must_use]
-  /// The output has a length equal to the full array.
-  ///
-  /// If you want to select a length, use
-  /// [`from_array_len`](ArrayVec::from_array_len)
-  fn from(data: A) -> Self {
-    let len: u16 = data
-      .as_slice()
-      .len()
-      .try_into()
-      .expect("ArrayVec::from> length must be in range 0..=u16::MAX");
-    Self { len, data }
-  }
-}
-
-/// The error type returned when a conversion from a slice to an [`ArrayVec`]
-/// fails.
-#[derive(Debug, Copy, Clone)]
-pub struct TryFromSliceError(());
-
-impl core::fmt::Display for TryFromSliceError {
-  #[inline]
-  fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
-    f.write_str("could not convert slice to ArrayVec")
-  }
-}
-
-#[cfg(feature = "std")]
-impl std::error::Error for TryFromSliceError {}
-
-impl<T, A> TryFrom<&'_ [T]> for ArrayVec<A>
-where
-  T: Clone + Default,
-  A: Array<Item = T>,
-{
-  type Error = TryFromSliceError;
-
-  #[inline]
-  /// The output has a length equal to that of the slice, with the same capacity
-  /// as `A`.
-  fn try_from(slice: &[T]) -> Result<Self, Self::Error> {
-    if slice.len() > A::CAPACITY {
-      Err(TryFromSliceError(()))
-    } else {
-      let mut arr = ArrayVec::new();
-      // We do not use ArrayVec::extend_from_slice, because it looks like LLVM
-      // fails to deduplicate all the length-checking logic between the
-      // above if and the contents of that method, thus producing much
-      // slower code. Unlike many of the other optimizations in this
-      // crate, this one is worth keeping an eye on. I see no reason, for
-      // any element type, that these should produce different code. But
-      // they do. (rustc 1.51.0)
-      arr.set_len(slice.len());
-      arr.as_mut_slice().clone_from_slice(slice);
-      Ok(arr)
-    }
-  }
-}
-
-impl<A: Array> FromIterator<A::Item> for ArrayVec<A> {
-  #[inline]
-  #[must_use]
-  fn from_iter<T: IntoIterator<Item = A::Item>>(iter: T) -> Self {
-    let mut av = Self::default();
-    for i in iter {
-      av.push(i)
-    }
-    av
-  }
-}
-
-/// Iterator for consuming an `ArrayVec` and returning owned elements.
-pub struct ArrayVecIterator<A: Array> {
-  base: u16,
-  tail: u16,
-  data: A,
-}
-
-impl<A: Array> ArrayVecIterator<A> {
-  /// Returns the remaining items of this iterator as a slice.
-  #[inline]
-  #[must_use]
-  pub fn as_slice(&self) -> &[A::Item] {
-    &self.data.as_slice()[self.base as usize..self.tail as usize]
-  }
-}
-impl<A: Array> FusedIterator for ArrayVecIterator<A> {}
-impl<A: Array> Iterator for ArrayVecIterator<A> {
-  type Item = A::Item;
-  #[inline]
-  fn next(&mut self) -> Option<Self::Item> {
-    let slice =
-      &mut self.data.as_slice_mut()[self.base as usize..self.tail as usize];
-    let itemref = slice.first_mut()?;
-    self.base += 1;
-    return Some(core::mem::take(itemref));
-  }
-  #[inline(always)]
-  #[must_use]
-  fn size_hint(&self) -> (usize, Option<usize>) {
-    let s = self.tail - self.base;
-    let s = s as usize;
-    (s, Some(s))
-  }
-  #[inline(always)]
-  fn count(self) -> usize {
-    self.size_hint().0
-  }
-  #[inline]
-  fn last(mut self) -> Option<Self::Item> {
-    self.next_back()
-  }
-  #[inline]
-  fn nth(&mut self, n: usize) -> Option<A::Item> {
-    let slice = &mut self.data.as_slice_mut();
-    let slice = &mut slice[self.base as usize..self.tail as usize];
-
-    if let Some(x) = slice.get_mut(n) {
-      /* n is in range [0 .. self.tail - self.base) so in u16 range */
-      self.base += n as u16 + 1;
-      return Some(core::mem::take(x));
-    }
-
-    self.base = self.tail;
-    return None;
-  }
-}
-
-impl<A: Array> DoubleEndedIterator for ArrayVecIterator<A> {
-  #[inline]
-  fn next_back(&mut self) -> Option<Self::Item> {
-    let slice =
-      &mut self.data.as_slice_mut()[self.base as usize..self.tail as usize];
-    let item = slice.last_mut()?;
-    self.tail -= 1;
-    return Some(core::mem::take(item));
-  }
-
-  #[inline]
-  fn nth_back(&mut self, n: usize) -> Option<Self::Item> {
-    let base = self.base as usize;
-    let tail = self.tail as usize;
-    let slice = &mut self.data.as_slice_mut()[base..tail];
-    let n = n.saturating_add(1);
-
-    if let Some(n) = slice.len().checked_sub(n) {
-      let item = &mut slice[n];
-      /* n is in [0..self.tail - self.base] range, so in u16 range */
-      self.tail = self.base + n as u16;
-      return Some(core::mem::take(item));
-    }
-
-    self.tail = self.base;
-    return None;
-  }
-}
-
-impl<A: Array> ExactSizeIterator for ArrayVecIterator<A> {
-  #[inline]
-  fn len(&self) -> usize {
-    self.size_hint().0
-  }
-}
-
-impl<A: Array> Debug for ArrayVecIterator<A>
-where
-  A::Item: Debug,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
-    f.debug_tuple("ArrayVecIterator").field(&self.as_slice()).finish()
-  }
-}
-
-impl<A: Array> IntoIterator for ArrayVec<A> {
-  type Item = A::Item;
-  type IntoIter = ArrayVecIterator<A>;
-  #[inline(always)]
-  #[must_use]
-  fn into_iter(self) -> Self::IntoIter {
-    ArrayVecIterator { base: 0, tail: self.len, data: self.data }
-  }
-}
-
-impl<'a, A: Array> IntoIterator for &'a mut ArrayVec<A> {
-  type Item = &'a mut A::Item;
-  type IntoIter = core::slice::IterMut<'a, A::Item>;
-  #[inline(always)]
-  #[must_use]
-  fn into_iter(self) -> Self::IntoIter {
-    self.iter_mut()
-  }
-}
-
-impl<'a, A: Array> IntoIterator for &'a ArrayVec<A> {
-  type Item = &'a A::Item;
-  type IntoIter = core::slice::Iter<'a, A::Item>;
-  #[inline(always)]
-  #[must_use]
-  fn into_iter(self) -> Self::IntoIter {
-    self.iter()
-  }
-}
-
-impl<A: Array> PartialEq for ArrayVec<A>
-where
-  A::Item: PartialEq,
-{
-  #[inline]
-  #[must_use]
-  fn eq(&self, other: &Self) -> bool {
-    self.as_slice().eq(other.as_slice())
-  }
-}
-impl<A: Array> Eq for ArrayVec<A> where A::Item: Eq {}
-
-impl<A: Array> PartialOrd for ArrayVec<A>
-where
-  A::Item: PartialOrd,
-{
-  #[inline]
-  #[must_use]
-  fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
-    self.as_slice().partial_cmp(other.as_slice())
-  }
-}
-impl<A: Array> Ord for ArrayVec<A>
-where
-  A::Item: Ord,
-{
-  #[inline]
-  #[must_use]
-  fn cmp(&self, other: &Self) -> core::cmp::Ordering {
-    self.as_slice().cmp(other.as_slice())
-  }
-}
-
-impl<A: Array> PartialEq<&A> for ArrayVec<A>
-where
-  A::Item: PartialEq,
-{
-  #[inline]
-  #[must_use]
-  fn eq(&self, other: &&A) -> bool {
-    self.as_slice().eq(other.as_slice())
-  }
-}
-
-impl<A: Array> PartialEq<&[A::Item]> for ArrayVec<A>
-where
-  A::Item: PartialEq,
-{
-  #[inline]
-  #[must_use]
-  fn eq(&self, other: &&[A::Item]) -> bool {
-    self.as_slice().eq(*other)
-  }
-}
-
-impl<A: Array> Hash for ArrayVec<A>
-where
-  A::Item: Hash,
-{
-  #[inline]
-  fn hash<H: Hasher>(&self, state: &mut H) {
-    self.as_slice().hash(state)
-  }
-}
-
-#[cfg(feature = "experimental_write_impl")]
-impl<A: Array<Item = u8>> core::fmt::Write for ArrayVec<A> {
-  fn write_str(&mut self, s: &str) -> core::fmt::Result {
-    let my_len = self.len();
-    let str_len = s.as_bytes().len();
-    if my_len + str_len <= A::CAPACITY {
-      let remainder = &mut self.data.as_slice_mut()[my_len..];
-      let target = &mut remainder[..str_len];
-      target.copy_from_slice(s.as_bytes());
-      Ok(())
-    } else {
-      Err(core::fmt::Error)
-    }
-  }
-}
-
-// // // // // // // //
-// Formatting impls
-// // // // // // // //
-
-impl<A: Array> Binary for ArrayVec<A>
-where
-  A::Item: Binary,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Binary::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> Debug for ArrayVec<A>
-where
-  A::Item: Debug,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() && !self.is_empty() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Debug::fmt(elem, f)?;
-    }
-    if f.alternate() && !self.is_empty() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> Display for ArrayVec<A>
-where
-  A::Item: Display,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Display::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> LowerExp for ArrayVec<A>
-where
-  A::Item: LowerExp,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      LowerExp::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> LowerHex for ArrayVec<A>
-where
-  A::Item: LowerHex,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      LowerHex::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> Octal for ArrayVec<A>
-where
-  A::Item: Octal,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Octal::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> Pointer for ArrayVec<A>
-where
-  A::Item: Pointer,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Pointer::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> UpperExp for ArrayVec<A>
-where
-  A::Item: UpperExp,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      UpperExp::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> UpperHex for ArrayVec<A>
-where
-  A::Item: UpperHex,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      UpperHex::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-#[cfg(feature = "alloc")]
-use alloc::vec::Vec;
-
-#[cfg(all(feature = "alloc", feature = "rustc_1_57"))]
-use alloc::collections::TryReserveError;
-
-#[cfg(feature = "alloc")]
-impl<A: Array> ArrayVec<A> {
-  /// Drains all elements to a Vec, but reserves additional space
-  /// ```
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 7] => 1, 2, 3);
-  /// let v = av.drain_to_vec_and_reserve(10);
-  /// assert_eq!(v, &[1, 2, 3]);
-  /// assert_eq!(v.capacity(), 13);
-  /// ```
-  pub fn drain_to_vec_and_reserve(&mut self, n: usize) -> Vec<A::Item> {
-    let cap = n + self.len();
-    let mut v = Vec::with_capacity(cap);
-    let iter = self.iter_mut().map(core::mem::take);
-    v.extend(iter);
-    self.set_len(0);
-    return v;
-  }
-
-  /// Tries to drain all elements to a Vec, but reserves additional space.
-  ///
-  /// # Errors
-  ///
-  /// If the allocator reports a failure, then an error is returned.
-  ///
-  /// ```
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 7] => 1, 2, 3);
-  /// let v = av.try_drain_to_vec_and_reserve(10);
-  /// assert!(matches!(v, Ok(_)));
-  /// let v = v.unwrap();
-  /// assert_eq!(v, &[1, 2, 3]);
-  /// assert_eq!(v.capacity(), 13);
-  /// ```
-  #[cfg(feature = "rustc_1_57")]
-  pub fn try_drain_to_vec_and_reserve(
-    &mut self, n: usize,
-  ) -> Result<Vec<A::Item>, TryReserveError> {
-    let cap = n + self.len();
-    let mut v = Vec::new();
-    v.try_reserve(cap)?;
-    let iter = self.iter_mut().map(core::mem::take);
-    v.extend(iter);
-    self.set_len(0);
-    return Ok(v);
-  }
-
-  /// Drains all elements to a Vec
-  /// ```
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 7] => 1, 2, 3);
-  /// let v = av.drain_to_vec();
-  /// assert_eq!(v, &[1, 2, 3]);
-  /// assert_eq!(v.capacity(), 3);
-  /// ```
-  pub fn drain_to_vec(&mut self) -> Vec<A::Item> {
-    self.drain_to_vec_and_reserve(0)
-  }
-
-  /// Tries to drain all elements to a Vec.
-  ///
-  /// # Errors
-  ///
-  /// If the allocator reports a failure, then an error is returned.
-  ///
-  /// ```
-  /// # use tinyvec::*;
-  /// let mut av = array_vec!([i32; 7] => 1, 2, 3);
-  /// let v = av.try_drain_to_vec();
-  /// assert!(matches!(v, Ok(_)));
-  /// let v = v.unwrap();
-  /// assert_eq!(v, &[1, 2, 3]);
-  /// // Vec may reserve more than necessary in order to prevent more future allocations.
-  /// assert!(v.capacity() >= 3);
-  /// ```
-  #[cfg(feature = "rustc_1_57")]
-  pub fn try_drain_to_vec(&mut self) -> Result<Vec<A::Item>, TryReserveError> {
-    self.try_drain_to_vec_and_reserve(0)
-  }
-}
-
-#[cfg(feature = "serde")]
-struct ArrayVecVisitor<A: Array>(PhantomData<A>);
-
-#[cfg(feature = "serde")]
-impl<'de, A: Array> Visitor<'de> for ArrayVecVisitor<A>
-where
-  A::Item: Deserialize<'de>,
-{
-  type Value = ArrayVec<A>;
-
-  fn expecting(
-    &self, formatter: &mut core::fmt::Formatter,
-  ) -> core::fmt::Result {
-    formatter.write_str("a sequence")
-  }
-
-  fn visit_seq<S>(self, mut seq: S) -> Result<Self::Value, S::Error>
-  where
-    S: SeqAccess<'de>,
-  {
-    let mut new_arrayvec: ArrayVec<A> = Default::default();
-
-    let mut idx = 0usize;
-    while let Some(value) = seq.next_element()? {
-      if new_arrayvec.len() >= new_arrayvec.capacity() {
-        return Err(DeserializeError::invalid_length(idx, &self));
-      }
-      new_arrayvec.push(value);
-      idx = idx + 1;
-    }
-
-    Ok(new_arrayvec)
-  }
-}
-
-#[cfg(test)]
-mod test {
-  use super::*;
-
-  #[test]
-  fn retain_mut_empty_vec() {
-    let mut av: ArrayVec<[i32; 4]> = ArrayVec::new();
-    av.retain_mut(|&mut x| x % 2 == 0);
-    assert_eq!(av.len(), 0);
-  }
-
-  #[test]
-  fn retain_mut_all_elements() {
-    let mut av: ArrayVec<[i32; 4]> = array_vec!([i32; 4] => 2, 4, 6, 8);
-    av.retain_mut(|&mut x| x % 2 == 0);
-    assert_eq!(av.len(), 4);
-    assert_eq!(av.as_slice(), &[2, 4, 6, 8]);
-  }
-
-  #[test]
-  fn retain_mut_some_elements() {
-    let mut av: ArrayVec<[i32; 4]> = array_vec!([i32; 4] => 1, 2, 3, 4);
-    av.retain_mut(|&mut x| x % 2 == 0);
-    assert_eq!(av.len(), 2);
-    assert_eq!(av.as_slice(), &[2, 4]);
-  }
-
-  #[test]
-  fn retain_mut_no_elements() {
-    let mut av: ArrayVec<[i32; 4]> = array_vec!([i32; 4] => 1, 3, 5, 7);
-    av.retain_mut(|&mut x| x % 2 == 0);
-    assert_eq!(av.len(), 0);
-  }
-
-  #[test]
-  fn retain_mut_zero_capacity() {
-    let mut av: ArrayVec<[i32; 0]> = ArrayVec::new();
-    av.retain_mut(|&mut x| x % 2 == 0);
-    assert_eq!(av.len(), 0);
-  }
-}
diff --git a/vendor/tinyvec/src/arrayvec_drain.rs b/vendor/tinyvec/src/arrayvec_drain.rs
deleted file mode 100644
index 4b673456..00000000
--- a/vendor/tinyvec/src/arrayvec_drain.rs
+++ /dev/null
@@ -1,99 +0,0 @@
-use super::*;
-
-use core::{
-  ops::{Bound, RangeBounds},
-  slice,
-};
-
-/// Draining iterator for [`ArrayVec`]
-///
-/// See [`ArrayVec::drain`](ArrayVec::drain)
-pub struct ArrayVecDrain<'a, T: 'a + Default> {
-  iter: slice::IterMut<'a, T>,
-}
-
-impl<'a, T: 'a + Default> ArrayVecDrain<'a, T> {
-  pub(crate) fn new<A, R>(arr: &'a mut ArrayVec<A>, range: R) -> Self
-  where
-    A: Array<Item = T>,
-    R: RangeBounds<usize>,
-  {
-    let start = match range.start_bound() {
-      Bound::Unbounded => 0,
-      Bound::Included(&n) => n,
-      Bound::Excluded(&n) => n.saturating_add(1),
-    };
-    let end = match range.end_bound() {
-      Bound::Unbounded => arr.len(),
-      Bound::Included(&n) => n.saturating_add(1),
-      Bound::Excluded(&n) => n,
-    };
-
-    assert!(
-      start <= end,
-      "ArrayVec::drain> Illegal range, {} to {}",
-      start,
-      end
-    );
-    assert!(
-      end <= arr.len(),
-      "ArrayVec::drain> Range ends at {}, but length is only {}",
-      end,
-      arr.len()
-    );
-
-    let len = end - start;
-    let to_rotate = &mut arr[start..];
-    to_rotate.rotate_left(len);
-
-    let oldlen = arr.len();
-    let newlen = oldlen - len;
-    arr.set_len(newlen);
-    let slice = &mut arr.data.as_slice_mut()[newlen..oldlen];
-    let iter = slice.iter_mut();
-    Self { iter }
-  }
-}
-
-impl<'a, T: 'a + Default> DoubleEndedIterator for ArrayVecDrain<'a, T> {
-  #[inline]
-  fn next_back(&mut self) -> Option<Self::Item> {
-    self.iter.next_back().map(core::mem::take)
-  }
-
-  #[inline]
-  fn nth_back(&mut self, n: usize) -> Option<Self::Item> {
-    self.iter.nth_back(n).map(core::mem::take)
-  }
-}
-
-impl<'a, T: 'a + Default> Iterator for ArrayVecDrain<'a, T> {
-  type Item = T;
-  #[inline]
-  fn next(&mut self) -> Option<Self::Item> {
-    self.iter.next().map(core::mem::take)
-  }
-  #[inline]
-  fn size_hint(&self) -> (usize, Option<usize>) {
-    self.iter.size_hint()
-  }
-  #[inline]
-  fn nth(&mut self, n: usize) -> Option<Self::Item> {
-    self.iter.nth(n).map(core::mem::take)
-  }
-  #[inline]
-  fn last(self) -> Option<Self::Item> {
-    self.iter.last().map(core::mem::take)
-  }
-  #[inline]
-  fn for_each<F>(self, f: F)
-  where
-    F: FnMut(Self::Item),
-  {
-    self.iter.map(core::mem::take).for_each(f)
-  }
-}
-
-impl<'a, T: 'a + Default> FusedIterator for ArrayVecDrain<'a, T> {}
-impl<'a, T: 'a + Default> ExactSizeIterator for ArrayVecDrain<'a, T> {}
-/* No need to impl Drop! */
diff --git a/vendor/tinyvec/src/lib.rs b/vendor/tinyvec/src/lib.rs
deleted file mode 100644
index 3b9f00c0..00000000
--- a/vendor/tinyvec/src/lib.rs
+++ /dev/null
@@ -1,108 +0,0 @@
-#![cfg_attr(not(feature = "std"), no_std)]
-#![forbid(unsafe_code)]
-#![cfg_attr(
-  feature = "nightly_slice_partition_dedup",
-  feature(slice_partition_dedup)
-)]
-#![cfg_attr(
-  feature = "debugger_visualizer",
-  feature(debugger_visualizer),
-  debugger_visualizer(natvis_file = "../debug_metadata/tinyvec.natvis")
-)]
-#![cfg_attr(docs_rs, feature(doc_cfg))]
-#![warn(clippy::missing_inline_in_public_items)]
-#![warn(clippy::must_use_candidate)]
-#![warn(missing_docs)]
-#![allow(clippy::borrow_deref_ref)]
-#![allow(unused_imports)]
-#![allow(clippy::write_with_newline)]
-#![allow(clippy::needless_return)]
-
-//! `tinyvec` provides 100% safe vec-like data structures.
-//!
-//! ## Provided Types
-//! With no features enabled, this crate provides the [`ArrayVec`] type, which
-//! is an array-backed storage. You can push values into the array and pop them
-//! out of the array and so on. If the array is made to overflow it will panic.
-//!
-//! Similarly, there is also a [`SliceVec`] type available, which is a vec-like
-//! that's backed by a slice you provide. You can add and remove elements, but
-//! if you overflow the slice it will panic.
-//!
-//! With the `alloc` feature enabled, the crate also has a [`TinyVec`] type.
-//! This is an enum type which is either an `Inline(ArrayVec)` or a `Heap(Vec)`.
-//! If a `TinyVec` is `Inline` and would overflow it automatically transitions
-//! itself into being `Heap` mode instead of a panic.
-//!
-//! All of this is done with no `unsafe` code within the crate. Technically the
-//! `Vec` type from the standard library uses `unsafe` internally, but *this
-//! crate* introduces no new `unsafe` code into your project.
-//!
-//! The limitation is that the element type of a vec from this crate must
-//! support the [`Default`] trait. This means that this crate isn't suitable for
-//! all situations, but a very surprising number of types do support `Default`.
-//!
-//! ## Other Features
-//! * `grab_spare_slice` lets you get access to the "inactive" portions of an
-//!   ArrayVec.
-//! * `serde` provides a `Serialize` and `Deserialize` implementation for
-//!   [`TinyVec`] and [`ArrayVec`] types, provided the inner item also has an
-//!   implementation.
-//!
-//! ## API
-//! The general goal of the crate is that, as much as possible, the vecs here
-//! should be a "drop in" replacement for the standard library `Vec` type. We
-//! strive to provide all of the `Vec` methods with the same names and
-//! signatures. The exception is that the element type of some methods will have
-//! a `Default` bound that's not part of the normal `Vec` type.
-//!
-//! The vecs here also have a few additional methods that aren't on the `Vec`
-//! type. In this case, the names tend to be fairly long so that they are
-//! unlikely to clash with any future methods added to `Vec`.
-//!
-//! ## Stability
-//! * The `1.0` series of the crate works with Rustc `1.34.0` or later, though
-//!   you still need to have Rustc `1.36.0` to use the `alloc` feature.
-//! * The `2.0` version of the crate is planned for some time after the
-//!   `min_const_generics` stuff becomes stable. This would greatly raise the
-//!   minimum rust version and also allow us to totally eliminate the need for
-//!   the `Array` trait. The actual usage of the crate is not expected to break
-//!   significantly in this transition.
-
-#[allow(unused_imports)]
-use core::{
-  borrow::{Borrow, BorrowMut},
-  cmp::PartialEq,
-  convert::AsMut,
-  default::Default,
-  fmt::{
-    Binary, Debug, Display, Formatter, LowerExp, LowerHex, Octal, Pointer,
-    UpperExp, UpperHex,
-  },
-  hash::{Hash, Hasher},
-  iter::{Extend, FromIterator, FusedIterator, IntoIterator, Iterator},
-  mem::{needs_drop, replace},
-  ops::{Deref, DerefMut, Index, IndexMut, RangeBounds},
-  slice::SliceIndex,
-};
-
-#[cfg(feature = "alloc")]
-#[doc(hidden)] // re-export for macros
-pub extern crate alloc;
-
-mod array;
-pub use array::*;
-
-mod arrayvec;
-pub use arrayvec::*;
-
-mod arrayvec_drain;
-pub use arrayvec_drain::*;
-
-mod slicevec;
-pub use slicevec::*;
-
-#[cfg(feature = "alloc")]
-mod tinyvec;
-#[cfg(feature = "alloc")]
-pub use crate::tinyvec::*;
diff --git a/vendor/tinyvec/src/slicevec.rs b/vendor/tinyvec/src/slicevec.rs
deleted file mode 100644
index 8856b533..00000000
--- a/vendor/tinyvec/src/slicevec.rs
+++ /dev/null
@@ -1,1082 +0,0 @@
-#![allow(unused_variables)]
-#![allow(missing_docs)]
-
-use super::*;
-
-/// A slice-backed vector-like data structure.
-///
-/// This is a very similar concept to `ArrayVec`, but instead
-/// of the backing memory being an owned array, the backing
-/// memory is a unique-borrowed slice. You can thus create
-/// one of these structures "around" some slice that you're
-/// working with to make it easier to manipulate.
-///
-/// * Has a fixed capacity (the initial slice size).
-/// * Has a variable length.
-pub struct SliceVec<'s, T> {
-  data: &'s mut [T],
-  len: usize,
-}
-
-impl<'s, T> Default for SliceVec<'s, T> {
-  #[inline(always)]
-  #[must_use]
-  fn default() -> Self {
-    Self { data: &mut [], len: 0 }
-  }
-}
-
-impl<'s, T> Deref for SliceVec<'s, T> {
-  type Target = [T];
-  #[inline(always)]
-  #[must_use]
-  fn deref(&self) -> &Self::Target {
-    &self.data[..self.len]
-  }
-}
-
-impl<'s, T> DerefMut for SliceVec<'s, T> {
-  #[inline(always)]
-  #[must_use]
-  fn deref_mut(&mut self) -> &mut Self::Target {
-    &mut self.data[..self.len]
-  }
-}
-
-impl<'s, T, I> Index<I> for SliceVec<'s, T>
-where
-  I: SliceIndex<[T]>,
-{
-  type Output = <I as SliceIndex<[T]>>::Output;
-  #[inline(always)]
-  #[must_use]
-  fn index(&self, index: I) -> &Self::Output {
-    &self.deref()[index]
-  }
-}
-
-impl<'s, T, I> IndexMut<I> for SliceVec<'s, T>
-where
-  I: SliceIndex<[T]>,
-{
-  #[inline(always)]
-  #[must_use]
-  fn index_mut(&mut self, index: I) -> &mut Self::Output {
-    &mut self.deref_mut()[index]
-  }
-}
-
-impl<'s, T> SliceVec<'s, T> {
-  #[inline]
-  pub fn append(&mut self, other: &mut Self)
-  where
-    T: Default,
-  {
-    for item in other.drain(..) {
-      self.push(item)
-    }
-  }
-
-  /// A `*mut` pointer to the backing slice.
-  ///
-  /// ## Safety
-  ///
-  /// This pointer has provenance over the _entire_ backing slice.
-  #[inline(always)]
-  #[must_use]
-  pub fn as_mut_ptr(&mut self) -> *mut T {
-    self.data.as_mut_ptr()
-  }
-
-  /// Performs a `deref_mut`, into unique slice form.
-  #[inline(always)]
-  #[must_use]
-  pub fn as_mut_slice(&mut self) -> &mut [T] {
-    self.deref_mut()
-  }
-
-  /// A `*const` pointer to the backing slice.
-  ///
-  /// ## Safety
-  ///
-  /// This pointer has provenance over the _entire_ backing slice.
-  #[inline(always)]
-  #[must_use]
-  pub fn as_ptr(&self) -> *const T {
-    self.data.as_ptr()
-  }
-
-  /// Performs a `deref`, into shared slice form.
-  #[inline(always)]
-  #[must_use]
-  pub fn as_slice(&self) -> &[T] {
-    self.deref()
-  }
-
-  /// The capacity of the `SliceVec`.
-  ///
-  /// This the length of the initial backing slice.
-  #[inline(always)]
-  #[must_use]
-  pub fn capacity(&self) -> usize {
-    self.data.len()
-  }
-
-  /// Truncates the `SliceVec` down to length 0.
-  #[inline(always)]
-  pub fn clear(&mut self)
-  where
-    T: Default,
-  {
-    self.truncate(0)
-  }
-
-  /// Creates a draining iterator that removes the specified range in the vector
-  /// and yields the removed items.
-  ///
-  /// ## Panics
-  /// * If the start is greater than the end
-  /// * If the end is past the edge of the vec.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [6, 7, 8];
-  /// let mut sv = SliceVec::from(&mut arr);
-  /// let drained_values: ArrayVec<[i32; 4]> = sv.drain(1..).collect();
-  /// assert_eq!(sv.as_slice(), &[6][..]);
-  /// assert_eq!(drained_values.as_slice(), &[7, 8][..]);
-  ///
-  /// sv.drain(..);
-  /// assert_eq!(sv.as_slice(), &[]);
-  /// ```
-  #[inline]
-  pub fn drain<'p, R: RangeBounds<usize>>(
-    &'p mut self, range: R,
-  ) -> SliceVecDrain<'p, 's, T>
-  where
-    T: Default,
-  {
-    use core::ops::Bound;
-    let start = match range.start_bound() {
-      Bound::Included(x) => *x,
-      Bound::Excluded(x) => x.saturating_add(1),
-      Bound::Unbounded => 0,
-    };
-    let end = match range.end_bound() {
-      Bound::Included(x) => x.saturating_add(1),
-      Bound::Excluded(x) => *x,
-      Bound::Unbounded => self.len,
-    };
-    assert!(
-      start <= end,
-      "SliceVec::drain> Illegal range, {} to {}",
-      start,
-      end
-    );
-    assert!(
-      end <= self.len,
-      "SliceVec::drain> Range ends at {} but length is only {}!",
-      end,
-      self.len
-    );
-    SliceVecDrain {
-      parent: self,
-      target_start: start,
-      target_index: start,
-      target_end: end,
-    }
-  }
-
-  #[inline]
-  pub fn extend_from_slice(&mut self, sli: &[T])
-  where
-    T: Clone,
-  {
-    if sli.is_empty() {
-      return;
-    }
-
-    let new_len = self.len + sli.len();
-    if new_len > self.capacity() {
-      panic!(
-        "SliceVec::extend_from_slice> total length {} exceeds capacity {}",
-        new_len,
-        self.capacity()
-      )
-    }
-
-    let target = &mut self.data[self.len..new_len];
-    target.clone_from_slice(sli);
-    self.set_len(new_len);
-  }
-
-  /// Fill the vector until its capacity has been reached.
-  ///
-  /// Successively fills unused space in the spare slice of the vector with
-  /// elements from the iterator. It then returns the remaining iterator
-  /// without exhausting it. This also allows appending the head of an
-  /// infinite iterator.
-  ///
-  /// This is an alternative to `Extend::extend` method for cases where the
-  /// length of the iterator can not be checked. Since this vector can not
-  /// reallocate to increase its capacity, it is unclear what to do with
-  /// remaining elements in the iterator and the iterator itself. The
-  /// interface also provides no way to communicate this to the caller.
-  ///
-  /// ## Panics
-  /// * If the `next` method of the provided iterator panics.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [7, 7, 7, 7];
-  /// let mut sv = SliceVec::from_slice_len(&mut arr, 0);
-  /// let mut to_inf = sv.fill(0..);
-  /// assert_eq!(&sv[..], [0, 1, 2, 3]);
-  /// assert_eq!(to_inf.next(), Some(4));
-  /// ```
-  #[inline]
-  pub fn fill<I: IntoIterator<Item = T>>(&mut self, iter: I) -> I::IntoIter {
-    let mut iter = iter.into_iter();
-    for element in iter.by_ref().take(self.capacity() - self.len()) {
-      self.push(element);
-    }
-    iter
-  }
-
-  /// Wraps up a slice and uses the given length as the initial length.
-  ///
-  /// If you want to simply use the full slice, use `from` instead.
-  ///
-  /// ## Panics
-  ///
-  /// * The length specified must be less than or equal to the capacity of the
-  ///   slice.
-  #[inline]
-  #[must_use]
-  #[allow(clippy::match_wild_err_arm)]
-  pub fn from_slice_len(data: &'s mut [T], len: usize) -> Self {
-    assert!(len <= data.len());
-    Self { data, len }
-  }
-
-  /// Inserts an item at the position given, moving all following elements +1
-  /// index.
-  ///
-  /// ## Panics
-  /// * If `index` > `len`
-  /// * If the capacity is exhausted
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [1, 2, 3, 0, 0];
-  /// let mut sv = SliceVec::from_slice_len(&mut arr, 3);
-  /// sv.insert(1, 4);
-  /// assert_eq!(sv.as_slice(), &[1, 4, 2, 3]);
-  /// sv.insert(4, 5);
-  /// assert_eq!(sv.as_slice(), &[1, 4, 2, 3, 5]);
-  /// ```
-  #[inline]
-  pub fn insert(&mut self, index: usize, item: T) {
-    if index > self.len {
-      panic!("SliceVec::insert> index {} is out of bounds {}", index, self.len);
-    }
-
-    // Try to push the element.
-    self.push(item);
-    // And move it into its place.
-    self.as_mut_slice()[index..].rotate_right(1);
-  }
-
-  /// Checks if the length is 0.
-  #[inline(always)]
-  #[must_use]
-  pub fn is_empty(&self) -> bool {
-    self.len == 0
-  }
-
-  /// The length of the `SliceVec` (in elements).
-  #[inline(always)]
-  #[must_use]
-  pub fn len(&self) -> usize {
-    self.len
-  }
-
-  /// Remove and return the last element of the vec, if there is one.
-  ///
-  /// ## Failure
-  /// * If the vec is empty you get `None`.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [1, 2];
-  /// let mut sv = SliceVec::from(&mut arr);
-  /// assert_eq!(sv.pop(), Some(2));
-  /// assert_eq!(sv.pop(), Some(1));
-  /// assert_eq!(sv.pop(), None);
-  /// ```
-  #[inline]
-  pub fn pop(&mut self) -> Option<T>
-  where
-    T: Default,
-  {
-    if self.len > 0 {
-      self.len -= 1;
-      let out = core::mem::take(&mut self.data[self.len]);
-      Some(out)
-    } else {
-      None
-    }
-  }
-
-  /// Place an element onto the end of the vec.
-  ///
-  /// ## Panics
-  /// * If the length of the vec would overflow the capacity.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [0, 0];
-  /// let mut sv = SliceVec::from_slice_len(&mut arr, 0);
-  /// assert_eq!(&sv[..], []);
-  /// sv.push(1);
-  /// assert_eq!(&sv[..], [1]);
-  /// sv.push(2);
-  /// assert_eq!(&sv[..], [1, 2]);
-  /// // sv.push(3); this would overflow the ArrayVec and panic!
-  /// ```
-  #[inline(always)]
-  pub fn push(&mut self, val: T) {
-    if self.len < self.capacity() {
-      self.data[self.len] = val;
-      self.len += 1;
-    } else {
-      panic!("SliceVec::push> capacity overflow")
-    }
-  }
-
-  /// Removes the item at `index`, shifting all others down by one index.
-  ///
-  /// Returns the removed element.
-  ///
-  /// ## Panics
-  ///
-  /// * If the index is out of bounds.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [1, 2, 3];
-  /// let mut sv = SliceVec::from(&mut arr);
-  /// assert_eq!(sv.remove(1), 2);
-  /// assert_eq!(&sv[..], [1, 3]);
-  /// ```
-  #[inline]
-  pub fn remove(&mut self, index: usize) -> T
-  where
-    T: Default,
-  {
-    let targets: &mut [T] = &mut self.deref_mut()[index..];
-    let item = core::mem::take(&mut targets[0]);
-    targets.rotate_left(1);
-    self.len -= 1;
-    item
-  }
-
-  /// As [`resize_with`](SliceVec::resize_with)
-  /// and it clones the value as the closure.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  /// // bigger
-  /// let mut arr = ["hello", "", "", "", ""];
-  /// let mut sv = SliceVec::from_slice_len(&mut arr, 1);
-  /// sv.resize(3, "world");
-  /// assert_eq!(&sv[..], ["hello", "world", "world"]);
-  ///
-  /// // smaller
-  /// let mut arr = ['a', 'b', 'c', 'd'];
-  /// let mut sv = SliceVec::from(&mut arr);
-  /// sv.resize(2, 'z');
-  /// assert_eq!(&sv[..], ['a', 'b']);
-  /// ```
-  #[inline]
-  pub fn resize(&mut self, new_len: usize, new_val: T)
-  where
-    T: Clone,
-  {
-    self.resize_with(new_len, || new_val.clone())
-  }
-
-  /// Resize the vec to the new length.
-  ///
-  /// * If it needs to be longer, it's filled with repeated calls to the
-  ///   provided function.
-  /// * If it needs to be shorter, it's truncated.
-  ///   * If the type needs to drop the truncated slots are filled with calls to
-  ///     the provided function.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [1, 2, 3, 7, 7, 7, 7];
-  /// let mut sv = SliceVec::from_slice_len(&mut arr, 3);
-  /// sv.resize_with(5, Default::default);
-  /// assert_eq!(&sv[..], [1, 2, 3, 0, 0]);
-  ///
-  /// let mut arr = [0, 0, 0, 0];
-  /// let mut sv = SliceVec::from_slice_len(&mut arr, 0);
-  /// let mut p = 1;
-  /// sv.resize_with(4, || {
-  ///   p *= 2;
-  ///   p
-  /// });
-  /// assert_eq!(&sv[..], [2, 4, 8, 16]);
-  /// ```
-  #[inline]
-  pub fn resize_with<F: FnMut() -> T>(&mut self, new_len: usize, mut f: F) {
-    match new_len.checked_sub(self.len) {
-      None => {
-        if needs_drop::<T>() {
-          while self.len() > new_len {
-            self.len -= 1;
-            self.data[self.len] = f();
-          }
-        } else {
-          self.len = new_len;
-        }
-      }
-      Some(new_elements) => {
-        for _ in 0..new_elements {
-          self.push(f());
-        }
-      }
-    }
-  }
-
-  /// Walk the vec and keep only the elements that pass the predicate given.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  ///
-  /// let mut arr = [1, 1, 2, 3, 3, 4];
-  /// let mut sv = SliceVec::from(&mut arr);
-  /// sv.retain(|&x| x % 2 == 0);
-  /// assert_eq!(&sv[..], [2, 4]);
-  /// ```
-  #[inline]
-  pub fn retain<F: FnMut(&T) -> bool>(&mut self, mut acceptable: F)
-  where
-    T: Default,
-  {
-    // Drop guard to contain exactly the remaining elements when the test
-    // panics.
-    struct JoinOnDrop<'vec, Item> {
-      items: &'vec mut [Item],
-      done_end: usize,
-      // Start of tail relative to `done_end`.
-      tail_start: usize,
-    }
-
-    impl<Item> Drop for JoinOnDrop<'_, Item> {
-      fn drop(&mut self) {
-        self.items[self.done_end..].rotate_left(self.tail_start);
-      }
-    }
-
-    let mut rest = JoinOnDrop { items: self.data, done_end: 0, tail_start: 0 };
-
-    for idx in 0..self.len {
-      // Loop start invariant: idx = rest.done_end + rest.tail_start
-      if !acceptable(&rest.items[idx]) {
-        let _ = core::mem::take(&mut rest.items[idx]);
-        self.len -= 1;
-        rest.tail_start += 1;
-      } else {
-        rest.items.swap(rest.done_end, idx);
-        rest.done_end += 1;
-      }
-    }
-  }
-
-  /// Forces the length of the vector to `new_len`.
-  ///
-  /// ## Panics
-  /// * If `new_len` is greater than the vec's capacity.
-  ///
-  /// ## Safety
-  /// * This is a fully safe operation! The inactive memory already counts as
-  ///   "initialized" by Rust's rules.
-  /// * Other than "the memory is initialized" there are no other guarantees
-  ///   regarding what you find in the inactive portion of the vec.
-  #[inline(always)]
-  pub fn set_len(&mut self, new_len: usize) {
-    if new_len > self.capacity() {
-      // Note(Lokathor): Technically we don't have to panic here, and we could
-      // just let some other call later on trigger a panic on accident when the
-      // length is wrong. However, it's a lot easier to catch bugs when things
-      // are more "fail-fast".
-      panic!(
-        "SliceVec::set_len> new length {} exceeds capacity {}",
-        new_len,
-        self.capacity()
-      )
-    } else {
-      self.len = new_len;
-    }
-  }
-
-  /// Splits the collection at the point given.
-  ///
-  /// * `[0, at)` stays in this vec (and this vec is now full).
-  /// * `[at, len)` ends up in the new vec (with any spare capacity).
-  ///
-  /// ## Panics
-  /// * if `at` > `self.len()`
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [1, 2, 3];
-  /// let mut sv = SliceVec::from(&mut arr);
-  /// let sv2 = sv.split_off(1);
-  /// assert_eq!(&sv[..], [1]);
-  /// assert_eq!(&sv2[..], [2, 3]);
-  /// ```
-  #[inline]
-  pub fn split_off<'a>(&'a mut self, at: usize) -> SliceVec<'s, T> {
-    let mut new = Self::default();
-    let backing: &'s mut [T] = core::mem::take(&mut self.data);
-    let (me, other) = backing.split_at_mut(at);
-    new.len = self.len - at;
-    new.data = other;
-    self.len = me.len();
-    self.data = me;
-    new
-  }
-
-  /// Remove an element, swapping the end of the vec into its place.
-  ///
-  /// ## Panics
-  /// * If the index is out of bounds.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = ["foo", "bar", "quack", "zap"];
-  /// let mut sv = SliceVec::from(&mut arr);
-  ///
-  /// assert_eq!(sv.swap_remove(1), "bar");
-  /// assert_eq!(&sv[..], ["foo", "zap", "quack"]);
-  ///
-  /// assert_eq!(sv.swap_remove(0), "foo");
-  /// assert_eq!(&sv[..], ["quack", "zap"]);
-  /// ```
-  #[inline]
-  pub fn swap_remove(&mut self, index: usize) -> T
-  where
-    T: Default,
-  {
-    assert!(
-      index < self.len,
-      "SliceVec::swap_remove> index {} is out of bounds {}",
-      index,
-      self.len
-    );
-    if index == self.len - 1 {
-      self.pop().unwrap()
-    } else {
-      let i = self.pop().unwrap();
-      replace(&mut self[index], i)
-    }
-  }
-
-  /// Reduces the vec's length to the given value.
-  ///
-  /// If the vec is already shorter than the input, nothing happens.
-  #[inline]
-  pub fn truncate(&mut self, new_len: usize)
-  where
-    T: Default,
-  {
-    if needs_drop::<T>() {
-      while self.len > new_len {
-        self.pop();
-      }
-    } else {
-      self.len = self.len.min(new_len);
-    }
-  }
-
-  /// Wraps a slice, using the given length as the starting length.
-  ///
-  /// If you want to use the whole length of the slice, you can just use the
-  /// `From` impl.
-  ///
-  /// ## Failure
-  ///
-  /// If the given length is greater than the length of the slice you get
-  /// `None`.
-  #[inline]
-  pub fn try_from_slice_len(data: &'s mut [T], len: usize) -> Option<Self> {
-    if len <= data.len() {
-      Some(Self { data, len })
-    } else {
-      None
-    }
-  }
-}
-
-#[cfg(feature = "grab_spare_slice")]
-impl<'s, T> SliceVec<'s, T> {
-  /// Obtain the shared slice of the array _after_ the active memory.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [0; 4];
-  /// let mut sv = SliceVec::from_slice_len(&mut arr, 0);
-  /// assert_eq!(sv.grab_spare_slice().len(), 4);
-  /// sv.push(10);
-  /// sv.push(11);
-  /// sv.push(12);
-  /// sv.push(13);
-  /// assert_eq!(sv.grab_spare_slice().len(), 0);
-  /// ```
-  #[inline(always)]
-  pub fn grab_spare_slice(&self) -> &[T] {
-    &self.data[self.len..]
-  }
-
-  /// Obtain the mutable slice of the array _after_ the active memory.
-  ///
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [0; 4];
-  /// let mut sv = SliceVec::from_slice_len(&mut arr, 0);
-  /// assert_eq!(sv.grab_spare_slice_mut().len(), 4);
-  /// sv.push(10);
-  /// sv.push(11);
-  /// assert_eq!(sv.grab_spare_slice_mut().len(), 2);
-  /// ```
-  #[inline(always)]
-  pub fn grab_spare_slice_mut(&mut self) -> &mut [T] {
-    &mut self.data[self.len..]
-  }
-}
-
-impl<'s, T> From<&'s mut [T]> for SliceVec<'s, T> {
-  /// Uses the full slice as the initial length.
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [0_i32; 2];
-  /// let mut sv = SliceVec::from(&mut arr[..]);
-  /// ```
-  #[inline]
-  fn from(data: &'s mut [T]) -> Self {
-    let len = data.len();
-    Self { data, len }
-  }
-}
-
-impl<'s, T, A> From<&'s mut A> for SliceVec<'s, T>
-where
-  A: AsMut<[T]>,
-{
-  /// Calls `AsRef::as_mut` then uses the full slice as the initial length.
-  /// ## Example
-  /// ```rust
-  /// # use tinyvec::*;
-  /// let mut arr = [0, 0];
-  /// let mut sv = SliceVec::from(&mut arr);
-  /// ```
-  #[inline]
-  fn from(a: &'s mut A) -> Self {
-    let data = a.as_mut();
-    let len = data.len();
-    Self { data, len }
-  }
-}
-
-/// Draining iterator for [`SliceVec`]
-///
-/// See [`SliceVec::drain`](SliceVec::drain)
-pub struct SliceVecDrain<'p, 's, T: Default> {
-  parent: &'p mut SliceVec<'s, T>,
-  target_start: usize,
-  target_index: usize,
-  target_end: usize,
-}
-impl<'p, 's, T: Default> Iterator for SliceVecDrain<'p, 's, T> {
-  type Item = T;
-  #[inline]
-  fn next(&mut self) -> Option<Self::Item> {
-    if self.target_index != self.target_end {
-      let out = core::mem::take(&mut self.parent[self.target_index]);
-      self.target_index += 1;
-      Some(out)
-    } else {
-      None
-    }
-  }
-}
-impl<'p, 's, T: Default> FusedIterator for SliceVecDrain<'p, 's, T> {}
-impl<'p, 's, T: Default> Drop for SliceVecDrain<'p, 's, T> {
-  #[inline]
-  fn drop(&mut self) {
-    // Changed because it was moving `self`, it's also more clear and the std
-    // does the same
-    self.for_each(drop);
-    // Implementation very similar to [`SliceVec::remove`](SliceVec::remove)
-    let count = self.target_end - self.target_start;
-    let targets: &mut [T] = &mut self.parent.deref_mut()[self.target_start..];
-    targets.rotate_left(count);
-    self.parent.len -= count;
-  }
-}
-
-impl<'s, T> AsMut<[T]> for SliceVec<'s, T> {
-  #[inline(always)]
-  #[must_use]
-  fn as_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-}
-
-impl<'s, T> AsRef<[T]> for SliceVec<'s, T> {
-  #[inline(always)]
-  #[must_use]
-  fn as_ref(&self) -> &[T] {
-    &*self
-  }
-}
-
-impl<'s, T> Borrow<[T]> for SliceVec<'s, T> {
-  #[inline(always)]
-  #[must_use]
-  fn borrow(&self) -> &[T] {
-    &*self
-  }
-}
-
-impl<'s, T> BorrowMut<[T]> for SliceVec<'s, T> {
-  #[inline(always)]
-  #[must_use]
-  fn borrow_mut(&mut self) -> &mut [T] {
-    &mut *self
-  }
-}
-
-impl<'s, T> Extend<T> for SliceVec<'s, T> {
-  #[inline]
-  fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I) {
-    for t in iter {
-      self.push(t)
-    }
-  }
-}
-
-impl<'s, T> IntoIterator for SliceVec<'s, T> {
-  type Item = &'s mut T;
-  type IntoIter = core::slice::IterMut<'s, T>;
-  #[inline(always)]
-  #[must_use]
-  fn into_iter(self) -> Self::IntoIter {
-    self.data.iter_mut()
-  }
-}
-
-impl<'s, T> PartialEq for SliceVec<'s, T>
-where
-  T: PartialEq,
-{
-  #[inline]
-  #[must_use]
-  fn eq(&self, other: &Self) -> bool {
-    self.as_slice().eq(other.as_slice())
-  }
-}
-impl<'s, T> Eq for SliceVec<'s, T> where T: Eq {}
-
-impl<'s, T> PartialOrd for SliceVec<'s, T>
-where
-  T: PartialOrd,
-{
-  #[inline]
-  #[must_use]
-  fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
-    self.as_slice().partial_cmp(other.as_slice())
-  }
-}
-impl<'s, T> Ord for SliceVec<'s, T>
-where
-  T: Ord,
-{
-  #[inline]
-  #[must_use]
-  fn cmp(&self, other: &Self) -> core::cmp::Ordering {
-    self.as_slice().cmp(other.as_slice())
-  }
-}
-
-impl<'s, T> PartialEq<&[T]> for SliceVec<'s, T>
-where
-  T: PartialEq,
-{
-  #[inline]
-  #[must_use]
-  fn eq(&self, other: &&[T]) -> bool {
-    self.as_slice().eq(*other)
-  }
-}
-
-impl<'s, T> Hash for SliceVec<'s, T>
-where
-  T: Hash,
-{
-  #[inline]
-  fn hash<H: Hasher>(&self, state: &mut H) {
-    self.as_slice().hash(state)
-  }
-}
-
-#[cfg(feature = "experimental_write_impl")]
-impl<'s> core::fmt::Write for SliceVec<'s, u8> {
-  fn write_str(&mut self, s: &str) -> core::fmt::Result {
-    let my_len = self.len();
-    let str_len = s.as_bytes().len();
-    if my_len + str_len <= self.capacity() {
-      let remainder = &mut self.data[my_len..];
-      let target = &mut remainder[..str_len];
-      target.copy_from_slice(s.as_bytes());
-      Ok(())
-    } else {
-      Err(core::fmt::Error)
-    }
-  }
-}
-
-// // // // // // // //
-// Formatting impls
-// // // // // // // //
-
-impl<'s, T> Binary for SliceVec<'s, T>
-where
-  T: Binary,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Binary::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<'s, T> Debug for SliceVec<'s, T>
-where
-  T: Debug,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() && !self.is_empty() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Debug::fmt(elem, f)?;
-    }
-    if f.alternate() && !self.is_empty() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<'s, T> Display for SliceVec<'s, T>
-where
-  T: Display,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Display::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<'s, T> LowerExp for SliceVec<'s, T>
-where
-  T: LowerExp,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      LowerExp::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<'s, T> LowerHex for SliceVec<'s, T>
-where
-  T: LowerHex,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      LowerHex::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<'s, T> Octal for SliceVec<'s, T>
-where
-  T: Octal,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Octal::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<'s, T> Pointer for SliceVec<'s, T>
-where
-  T: Pointer,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Pointer::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<'s, T> UpperExp for SliceVec<'s, T>
-where
-  T: UpperExp,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      UpperExp::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<'s, T> UpperHex for SliceVec<'s, T>
-where
-  T: UpperHex,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      UpperHex::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
diff --git a/vendor/tinyvec/src/tinyvec.rs b/vendor/tinyvec/src/tinyvec.rs
deleted file mode 100644
index 974d0a82..00000000
--- a/vendor/tinyvec/src/tinyvec.rs
+++ /dev/null
@@ -1,1748 +0,0 @@
-#![cfg(feature = "alloc")]
-
-use super::*;
-
-use alloc::vec::{self, Vec};
-use core::convert::TryFrom;
-use tinyvec_macros::impl_mirrored;
-
-#[cfg(feature = "rustc_1_57")]
-use alloc::collections::TryReserveError;
-
-#[cfg(feature = "serde")]
-use core::marker::PhantomData;
-#[cfg(feature = "serde")]
-use serde::de::{Deserialize, Deserializer, SeqAccess, Visitor};
-#[cfg(feature = "serde")]
-use serde::ser::{Serialize, SerializeSeq, Serializer};
-
-/// Helper to make a `TinyVec`.
-///
-/// You specify the backing array type, and optionally give all the elements you
-/// want to initially place into the array.
-///
-/// ```rust
-/// use tinyvec::*;
-///
-/// // The backing array type can be specified in the macro call
-/// let empty_tv = tiny_vec!([u8; 16]);
-/// let some_ints = tiny_vec!([i32; 4] => 1, 2, 3);
-/// let many_ints = tiny_vec!([i32; 4] => 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
-///
-/// // Or left to inference
-/// let empty_tv: TinyVec<[u8; 16]> = tiny_vec!();
-/// let some_ints: TinyVec<[i32; 4]> = tiny_vec!(1, 2, 3);
-/// let many_ints: TinyVec<[i32; 4]> = tiny_vec!(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
-/// ```
-#[macro_export]
-#[cfg_attr(docs_rs, doc(cfg(feature = "alloc")))]
-macro_rules! tiny_vec {
-  ($array_type:ty => $($elem:expr),* $(,)?) => {
-    {
-      // https://github.com/rust-lang/lang-team/issues/28
-      const INVOKED_ELEM_COUNT: usize = 0 $( + { let _ = stringify!($elem); 1 })*;
-      // If we have more `$elem` than the `CAPACITY` we will simply go directly
-      // to constructing on the heap.
-      match $crate::TinyVec::constructor_for_capacity(INVOKED_ELEM_COUNT) {
-        $crate::TinyVecConstructor::Inline(f) => {
-          f($crate::array_vec!($array_type => $($elem),*))
-        }
-        $crate::TinyVecConstructor::Heap(f) => {
-          f(vec!($($elem),*))
-        }
-      }
-    }
-  };
-  ($array_type:ty) => {
-    $crate::TinyVec::<$array_type>::default()
-  };
-  ($($elem:expr),*) => {
-    $crate::tiny_vec!(_ => $($elem),*)
-  };
-  ($elem:expr; $n:expr) => {
-    $crate::TinyVec::from([$elem; $n])
-  };
-  () => {
-    $crate::tiny_vec!(_)
-  };
-}
-
-#[doc(hidden)] // Internal implementation details of `tiny_vec!`
-pub enum TinyVecConstructor<A: Array> {
-  Inline(fn(ArrayVec<A>) -> TinyVec<A>),
-  Heap(fn(Vec<A::Item>) -> TinyVec<A>),
-}
-
-/// A vector that starts inline, but can automatically move to the heap.
-///
-/// * Requires the `alloc` feature
-///
-/// A `TinyVec` is either an Inline([`ArrayVec`](crate::ArrayVec::<A>)) or
-/// Heap([`Vec`](https://doc.rust-lang.org/alloc/vec/struct.Vec.html)). The
-/// interface for the type as a whole is a bunch of methods that just match on
-/// the enum variant and then call the same method on the inner vec.
-///
-/// ## Construction
-///
-/// Because it's an enum, you can construct a `TinyVec` simply by making an
-/// `ArrayVec` or `Vec` and then putting it into the enum.
-///
-/// There is also a macro
-///
-/// ```rust
-/// # use tinyvec::*;
-/// let empty_tv = tiny_vec!([u8; 16]);
-/// let some_ints = tiny_vec!([i32; 4] => 1, 2, 3);
-/// ```
-#[cfg_attr(docs_rs, doc(cfg(feature = "alloc")))]
-pub enum TinyVec<A: Array> {
-  #[allow(missing_docs)]
-  Inline(ArrayVec<A>),
-  #[allow(missing_docs)]
-  Heap(Vec<A::Item>),
-}
-
-impl<A> Clone for TinyVec<A>
-where
-  A: Array + Clone,
-  A::Item: Clone,
-{
-  #[inline]
-  fn clone(&self) -> Self {
-    match self {
-      TinyVec::Heap(v) => TinyVec::Heap(v.clone()),
-      TinyVec::Inline(v) => TinyVec::Inline(v.clone()),
-    }
-  }
-
-  #[inline]
-  fn clone_from(&mut self, o: &Self) {
-    if o.len() > self.len() {
-      self.reserve(o.len() - self.len());
-    } else {
-      self.truncate(o.len());
-    }
-    let (start, end) = o.split_at(self.len());
-    for (dst, src) in self.iter_mut().zip(start) {
-      dst.clone_from(src);
-    }
-    self.extend_from_slice(end);
-  }
-}
-
-impl<A: Array> Default for TinyVec<A> {
-  #[inline]
-  #[must_use]
-  fn default() -> Self {
-    TinyVec::Inline(ArrayVec::default())
-  }
-}
-
-impl<A: Array> Deref for TinyVec<A> {
-  type Target = [A::Item];
-
-  impl_mirrored! {
-    type Mirror = TinyVec;
-    #[inline(always)]
-    #[must_use]
-    fn deref(self: &Self) -> &Self::Target;
-  }
-}
-
-impl<A: Array> DerefMut for TinyVec<A> {
-  impl_mirrored! {
-    type Mirror = TinyVec;
-    #[inline(always)]
-    #[must_use]
-    fn deref_mut(self: &mut Self) -> &mut Self::Target;
-  }
-}
-
-impl<A: Array, I: SliceIndex<[A::Item]>> Index<I> for TinyVec<A> {
-  type Output = <I as SliceIndex<[A::Item]>>::Output;
-  #[inline(always)]
-  #[must_use]
-  fn index(&self, index: I) -> &Self::Output {
-    &self.deref()[index]
-  }
-}
-
-impl<A: Array, I: SliceIndex<[A::Item]>> IndexMut<I> for TinyVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn index_mut(&mut self, index: I) -> &mut Self::Output {
-    &mut self.deref_mut()[index]
-  }
-}
-
-#[cfg(feature = "std")]
-#[cfg_attr(docs_rs, doc(cfg(feature = "std")))]
-impl<A: Array<Item = u8>> std::io::Write for TinyVec<A> {
-  #[inline(always)]
-  fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
-    self.extend_from_slice(buf);
-    Ok(buf.len())
-  }
-
-  #[inline(always)]
-  fn flush(&mut self) -> std::io::Result<()> {
-    Ok(())
-  }
-}
-
-#[cfg(feature = "serde")]
-#[cfg_attr(docs_rs, doc(cfg(feature = "serde")))]
-impl<A: Array> Serialize for TinyVec<A>
-where
-  A::Item: Serialize,
-{
-  #[must_use]
-  fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
-  where
-    S: Serializer,
-  {
-    let mut seq = serializer.serialize_seq(Some(self.len()))?;
-    for element in self.iter() {
-      seq.serialize_element(element)?;
-    }
-    seq.end()
-  }
-}
-
-#[cfg(feature = "serde")]
-#[cfg_attr(docs_rs, doc(cfg(feature = "serde")))]
-impl<'de, A: Array> Deserialize<'de> for TinyVec<A>
-where
-  A::Item: Deserialize<'de>,
-{
-  fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
-  where
-    D: Deserializer<'de>,
-  {
-    deserializer.deserialize_seq(TinyVecVisitor(PhantomData))
-  }
-}
-
-#[cfg(feature = "arbitrary")]
-#[cfg_attr(docs_rs, doc(cfg(feature = "arbitrary")))]
-impl<'a, A> arbitrary::Arbitrary<'a> for TinyVec<A>
-where
-  A: Array,
-  A::Item: arbitrary::Arbitrary<'a>,
-{
-  fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result<Self> {
-    let v = Vec::arbitrary(u)?;
-    let mut tv = TinyVec::Heap(v);
-    tv.shrink_to_fit();
-    Ok(tv)
-  }
-}
-
-impl<A: Array> TinyVec<A> {
-  /// Returns whether elements are on heap
-  #[inline(always)]
-  #[must_use]
-  pub fn is_heap(&self) -> bool {
-    match self {
-      TinyVec::Heap(_) => true,
-      TinyVec::Inline(_) => false,
-    }
-  }
-  /// Returns whether elements are on stack
-  #[inline(always)]
-  #[must_use]
-  pub fn is_inline(&self) -> bool {
-    !self.is_heap()
-  }
-
-  /// Shrinks the capacity of the vector as much as possible.\
-  /// It is inlined if length is less than `A::CAPACITY`.
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 2] => 1, 2, 3);
-  /// assert!(tv.is_heap());
-  /// let _ = tv.pop();
-  /// assert!(tv.is_heap());
-  /// tv.shrink_to_fit();
-  /// assert!(tv.is_inline());
-  /// ```
-  pub fn shrink_to_fit(&mut self) {
-    let vec = match self {
-      TinyVec::Inline(_) => return,
-      TinyVec::Heap(h) => h,
-    };
-
-    if vec.len() > A::CAPACITY {
-      return vec.shrink_to_fit();
-    }
-
-    let moved_vec = core::mem::replace(vec, Vec::new());
-
-    let mut av = ArrayVec::default();
-    let mut rest = av.fill(moved_vec);
-    debug_assert!(rest.next().is_none());
-    *self = TinyVec::Inline(av);
-  }
-
-  /// Moves the content of the TinyVec to the heap, if it's inline.
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3);
-  /// assert!(tv.is_inline());
-  /// tv.move_to_the_heap();
-  /// assert!(tv.is_heap());
-  /// ```
-  #[allow(clippy::missing_inline_in_public_items)]
-  pub fn move_to_the_heap(&mut self) {
-    let arr = match self {
-      TinyVec::Heap(_) => return,
-      TinyVec::Inline(a) => a,
-    };
-
-    let v = arr.drain_to_vec();
-    *self = TinyVec::Heap(v);
-  }
-
-  /// Tries to move the content of the TinyVec to the heap, if it's inline.
-  ///
-  /// # Errors
-  ///
-  /// If the allocator reports a failure, then an error is returned and the
-  /// content is kept on the stack.
-  ///
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3);
-  /// assert!(tv.is_inline());
-  /// assert_eq!(Ok(()), tv.try_move_to_the_heap());
-  /// assert!(tv.is_heap());
-  /// ```
-  #[cfg(feature = "rustc_1_57")]
-  pub fn try_move_to_the_heap(&mut self) -> Result<(), TryReserveError> {
-    let arr = match self {
-      TinyVec::Heap(_) => return Ok(()),
-      TinyVec::Inline(a) => a,
-    };
-
-    let v = arr.try_drain_to_vec()?;
-    *self = TinyVec::Heap(v);
-    return Ok(());
-  }
-
-  /// If TinyVec is inline, moves the content of it to the heap.
-  /// Also reserves additional space.
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3);
-  /// assert!(tv.is_inline());
-  /// tv.move_to_the_heap_and_reserve(32);
-  /// assert!(tv.is_heap());
-  /// assert!(tv.capacity() >= 35);
-  /// ```
-  pub fn move_to_the_heap_and_reserve(&mut self, n: usize) {
-    let arr = match self {
-      TinyVec::Heap(h) => return h.reserve(n),
-      TinyVec::Inline(a) => a,
-    };
-
-    let v = arr.drain_to_vec_and_reserve(n);
-    *self = TinyVec::Heap(v);
-  }
-
-  /// If TinyVec is inline, try to move the content of it to the heap.
-  /// Also reserves additional space.
-  ///
-  /// # Errors
-  ///
-  /// If the allocator reports a failure, then an error is returned.
-  ///
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3);
-  /// assert!(tv.is_inline());
-  /// assert_eq!(Ok(()), tv.try_move_to_the_heap_and_reserve(32));
-  /// assert!(tv.is_heap());
-  /// assert!(tv.capacity() >= 35);
-  /// ```
-  #[cfg(feature = "rustc_1_57")]
-  pub fn try_move_to_the_heap_and_reserve(
-    &mut self, n: usize,
-  ) -> Result<(), TryReserveError> {
-    let arr = match self {
-      TinyVec::Heap(h) => return h.try_reserve(n),
-      TinyVec::Inline(a) => a,
-    };
-
-    let v = arr.try_drain_to_vec_and_reserve(n)?;
-    *self = TinyVec::Heap(v);
-    return Ok(());
-  }
-
-  /// Reserves additional space.
-  /// Moves to the heap if array can't hold `n` more items
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3, 4);
-  /// assert!(tv.is_inline());
-  /// tv.reserve(1);
-  /// assert!(tv.is_heap());
-  /// assert!(tv.capacity() >= 5);
-  /// ```
-  pub fn reserve(&mut self, n: usize) {
-    let arr = match self {
-      TinyVec::Heap(h) => return h.reserve(n),
-      TinyVec::Inline(a) => a,
-    };
-
-    if n > arr.capacity() - arr.len() {
-      let v = arr.drain_to_vec_and_reserve(n);
-      *self = TinyVec::Heap(v);
-    }
-
-    /* In this place array has enough place, so no work is needed more */
-    return;
-  }
-
-  /// Tries to reserve additional space.
-  /// Moves to the heap if array can't hold `n` more items.
-  ///
-  /// # Errors
-  ///
-  /// If the allocator reports a failure, then an error is returned.
-  ///
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3, 4);
-  /// assert!(tv.is_inline());
-  /// assert_eq!(Ok(()), tv.try_reserve(1));
-  /// assert!(tv.is_heap());
-  /// assert!(tv.capacity() >= 5);
-  /// ```
-  #[cfg(feature = "rustc_1_57")]
-  pub fn try_reserve(&mut self, n: usize) -> Result<(), TryReserveError> {
-    let arr = match self {
-      TinyVec::Heap(h) => return h.try_reserve(n),
-      TinyVec::Inline(a) => a,
-    };
-
-    if n > arr.capacity() - arr.len() {
-      let v = arr.try_drain_to_vec_and_reserve(n)?;
-      *self = TinyVec::Heap(v);
-    }
-
-    /* In this place array has enough place, so no work is needed more */
-    return Ok(());
-  }
-
-  /// Reserves additional space.
-  /// Moves to the heap if array can't hold `n` more items
-  ///
-  /// From [Vec::reserve_exact](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.reserve_exact)
-  /// ```text
-  /// Note that the allocator may give the collection more space than it requests.
-  /// Therefore, capacity can not be relied upon to be precisely minimal.
-  /// Prefer `reserve` if future insertions are expected.
-  /// ```
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3, 4);
-  /// assert!(tv.is_inline());
-  /// tv.reserve_exact(1);
-  /// assert!(tv.is_heap());
-  /// assert!(tv.capacity() >= 5);
-  /// ```
-  pub fn reserve_exact(&mut self, n: usize) {
-    let arr = match self {
-      TinyVec::Heap(h) => return h.reserve_exact(n),
-      TinyVec::Inline(a) => a,
-    };
-
-    if n > arr.capacity() - arr.len() {
-      let v = arr.drain_to_vec_and_reserve(n);
-      *self = TinyVec::Heap(v);
-    }
-
-    /* In this place array has enough place, so no work is needed more */
-    return;
-  }
-
-  /// Tries to reserve additional space.
-  /// Moves to the heap if array can't hold `n` more items
-  ///
-  /// # Errors
-  ///
-  /// If the allocator reports a failure, then an error is returned.
-  ///
-  /// From [Vec::try_reserve_exact](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve_exact)
-  /// ```text
-  /// Note that the allocator may give the collection more space than it requests.
-  /// Therefore, capacity can not be relied upon to be precisely minimal.
-  /// Prefer `reserve` if future insertions are expected.
-  /// ```
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3, 4);
-  /// assert!(tv.is_inline());
-  /// assert_eq!(Ok(()), tv.try_reserve_exact(1));
-  /// assert!(tv.is_heap());
-  /// assert!(tv.capacity() >= 5);
-  /// ```
-  #[cfg(feature = "rustc_1_57")]
-  pub fn try_reserve_exact(&mut self, n: usize) -> Result<(), TryReserveError> {
-    let arr = match self {
-      TinyVec::Heap(h) => return h.try_reserve_exact(n),
-      TinyVec::Inline(a) => a,
-    };
-
-    if n > arr.capacity() - arr.len() {
-      let v = arr.try_drain_to_vec_and_reserve(n)?;
-      *self = TinyVec::Heap(v);
-    }
-
-    /* In this place array has enough place, so no work is needed more */
-    return Ok(());
-  }
-
-  /// Makes a new TinyVec with _at least_ the given capacity.
-  ///
-  /// If the requested capacity is less than or equal to the array capacity you
-  /// get an inline vec. If it's greater than you get a heap vec.
-  /// ```
-  /// # use tinyvec::*;
-  /// let t = TinyVec::<[u8; 10]>::with_capacity(5);
-  /// assert!(t.is_inline());
-  /// assert!(t.capacity() >= 5);
-  ///
-  /// let t = TinyVec::<[u8; 10]>::with_capacity(20);
-  /// assert!(t.is_heap());
-  /// assert!(t.capacity() >= 20);
-  /// ```
-  #[inline]
-  #[must_use]
-  pub fn with_capacity(cap: usize) -> Self {
-    if cap <= A::CAPACITY {
-      TinyVec::Inline(ArrayVec::default())
-    } else {
-      TinyVec::Heap(Vec::with_capacity(cap))
-    }
-  }
-}
-
-impl<A: Array> TinyVec<A> {
-  /// Move all values from `other` into this vec.
-  #[inline]
-  pub fn append(&mut self, other: &mut Self) {
-    self.reserve(other.len());
-
-    /* Doing append should be faster, because it is effectively a memcpy */
-    match (self, other) {
-      (TinyVec::Heap(sh), TinyVec::Heap(oh)) => sh.append(oh),
-      (TinyVec::Inline(a), TinyVec::Heap(h)) => a.extend(h.drain(..)),
-      (ref mut this, TinyVec::Inline(arr)) => this.extend(arr.drain(..)),
-    }
-  }
-
-  impl_mirrored! {
-    type Mirror = TinyVec;
-
-    /// Remove an element, swapping the end of the vec into its place.
-    ///
-    /// ## Panics
-    /// * If the index is out of bounds.
-    ///
-    /// ## Example
-    /// ```rust
-    /// use tinyvec::*;
-    /// let mut tv = tiny_vec!([&str; 4] => "foo", "bar", "quack", "zap");
-    ///
-    /// assert_eq!(tv.swap_remove(1), "bar");
-    /// assert_eq!(tv.as_slice(), &["foo", "zap", "quack"][..]);
-    ///
-    /// assert_eq!(tv.swap_remove(0), "foo");
-    /// assert_eq!(tv.as_slice(), &["quack", "zap"][..]);
-    /// ```
-    #[inline]
-    pub fn swap_remove(self: &mut Self, index: usize) -> A::Item;
-
-    /// Remove and return the last element of the vec, if there is one.
-    ///
-    /// ## Failure
-    /// * If the vec is empty you get `None`.
-    #[inline]
-    pub fn pop(self: &mut Self) -> Option<A::Item>;
-
-    /// Removes the item at `index`, shifting all others down by one index.
-    ///
-    /// Returns the removed element.
-    ///
-    /// ## Panics
-    ///
-    /// If the index is out of bounds.
-    ///
-    /// ## Example
-    ///
-    /// ```rust
-    /// use tinyvec::*;
-    /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3);
-    /// assert_eq!(tv.remove(1), 2);
-    /// assert_eq!(tv.as_slice(), &[1, 3][..]);
-    /// ```
-    #[inline]
-    pub fn remove(self: &mut Self, index: usize) -> A::Item;
-
-    /// The length of the vec (in elements).
-    #[inline(always)]
-    #[must_use]
-    pub fn len(self: &Self) -> usize;
-
-    /// The capacity of the `TinyVec`.
-    ///
-    /// When not heap allocated this is fixed based on the array type.
-    /// Otherwise its the result of the underlying Vec::capacity.
-    #[inline(always)]
-    #[must_use]
-    pub fn capacity(self: &Self) -> usize;
-
-    /// Reduces the vec's length to the given value.
-    ///
-    /// If the vec is already shorter than the input, nothing happens.
-    #[inline]
-    pub fn truncate(self: &mut Self, new_len: usize);
-
-    /// A mutable pointer to the backing array.
-    ///
-    /// ## Safety
-    ///
-    /// This pointer has provenance over the _entire_ backing array/buffer.
-    #[inline(always)]
-    #[must_use]
-    pub fn as_mut_ptr(self: &mut Self) -> *mut A::Item;
-
-    /// A const pointer to the backing array.
-    ///
-    /// ## Safety
-    ///
-    /// This pointer has provenance over the _entire_ backing array/buffer.
-    #[inline(always)]
-    #[must_use]
-    pub fn as_ptr(self: &Self) -> *const A::Item;
-  }
-
-  /// Walk the vec and keep only the elements that pass the predicate given.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// use tinyvec::*;
-  ///
-  /// let mut tv = tiny_vec!([i32; 10] => 1, 2, 3, 4);
-  /// tv.retain(|&x| x % 2 == 0);
-  /// assert_eq!(tv.as_slice(), &[2, 4][..]);
-  /// ```
-  #[inline]
-  pub fn retain<F: FnMut(&A::Item) -> bool>(self: &mut Self, acceptable: F) {
-    match self {
-      TinyVec::Inline(i) => i.retain(acceptable),
-      TinyVec::Heap(h) => h.retain(acceptable),
-    }
-  }
-
-  /// Walk the vec and keep only the elements that pass the predicate given,
-  /// having the opportunity to modify the elements at the same time.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// use tinyvec::*;
-  ///
-  /// let mut tv = tiny_vec!([i32; 10] => 1, 2, 3, 4);
-  /// tv.retain_mut(|x| if *x % 2 == 0 { *x *= 2; true } else { false });
-  /// assert_eq!(tv.as_slice(), &[4, 8][..]);
-  /// ```
-  #[inline]
-  #[cfg(feature = "rustc_1_61")]
-  pub fn retain_mut<F: FnMut(&mut A::Item) -> bool>(&mut self, acceptable: F) {
-    match self {
-      TinyVec::Inline(i) => i.retain_mut(acceptable),
-      TinyVec::Heap(h) => h.retain_mut(acceptable),
-    }
-  }
-
-  /// Helper for getting the mut slice.
-  #[inline(always)]
-  #[must_use]
-  pub fn as_mut_slice(self: &mut Self) -> &mut [A::Item] {
-    self.deref_mut()
-  }
-
-  /// Helper for getting the shared slice.
-  #[inline(always)]
-  #[must_use]
-  pub fn as_slice(self: &Self) -> &[A::Item] {
-    self.deref()
-  }
-
-  /// Removes all elements from the vec.
-  #[inline(always)]
-  pub fn clear(&mut self) {
-    self.truncate(0)
-  }
-
-  /// De-duplicates the vec.
-  #[cfg(feature = "nightly_slice_partition_dedup")]
-  #[inline(always)]
-  pub fn dedup(&mut self)
-  where
-    A::Item: PartialEq,
-  {
-    self.dedup_by(|a, b| a == b)
-  }
-
-  /// De-duplicates the vec according to the predicate given.
-  #[cfg(feature = "nightly_slice_partition_dedup")]
-  #[inline(always)]
-  pub fn dedup_by<F>(&mut self, same_bucket: F)
-  where
-    F: FnMut(&mut A::Item, &mut A::Item) -> bool,
-  {
-    let len = {
-      let (dedup, _) = self.as_mut_slice().partition_dedup_by(same_bucket);
-      dedup.len()
-    };
-    self.truncate(len);
-  }
-
-  /// De-duplicates the vec according to the key selector given.
-  #[cfg(feature = "nightly_slice_partition_dedup")]
-  #[inline(always)]
-  pub fn dedup_by_key<F, K>(&mut self, mut key: F)
-  where
-    F: FnMut(&mut A::Item) -> K,
-    K: PartialEq,
-  {
-    self.dedup_by(|a, b| key(a) == key(b))
-  }
-
-  /// Creates a draining iterator that removes the specified range in the vector
-  /// and yields the removed items.
-  ///
-  /// **Note: This method has significant performance issues compared to
-  /// matching on the TinyVec and then calling drain on the Inline or Heap value
-  /// inside. The draining iterator has to branch on every single access. It is
-  /// provided for simplicity and compatibility only.**
-  ///
-  /// ## Panics
-  /// * If the start is greater than the end
-  /// * If the end is past the edge of the vec.
-  ///
-  /// ## Example
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3);
-  /// let tv2: TinyVec<[i32; 4]> = tv.drain(1..).collect();
-  /// assert_eq!(tv.as_slice(), &[1][..]);
-  /// assert_eq!(tv2.as_slice(), &[2, 3][..]);
-  ///
-  /// tv.drain(..);
-  /// assert_eq!(tv.as_slice(), &[]);
-  /// ```
-  #[inline]
-  pub fn drain<R: RangeBounds<usize>>(
-    &mut self, range: R,
-  ) -> TinyVecDrain<'_, A> {
-    match self {
-      TinyVec::Inline(i) => TinyVecDrain::Inline(i.drain(range)),
-      TinyVec::Heap(h) => TinyVecDrain::Heap(h.drain(range)),
-    }
-  }
-
-  /// Clone each element of the slice into this vec.
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2);
-  /// tv.extend_from_slice(&[3, 4]);
-  /// assert_eq!(tv.as_slice(), [1, 2, 3, 4]);
-  /// ```
-  #[inline]
-  pub fn extend_from_slice(&mut self, sli: &[A::Item])
-  where
-    A::Item: Clone,
-  {
-    self.reserve(sli.len());
-    match self {
-      TinyVec::Inline(a) => a.extend_from_slice(sli),
-      TinyVec::Heap(h) => h.extend_from_slice(sli),
-    }
-  }
-
-  /// Wraps up an array and uses the given length as the initial length.
-  ///
-  /// Note that the `From` impl for arrays assumes the full length is used.
-  ///
-  /// ## Panics
-  ///
-  /// The length must be less than or equal to the capacity of the array.
-  #[inline]
-  #[must_use]
-  #[allow(clippy::match_wild_err_arm)]
-  pub fn from_array_len(data: A, len: usize) -> Self {
-    match Self::try_from_array_len(data, len) {
-      Ok(out) => out,
-      Err(_) => {
-        panic!("TinyVec: length {} exceeds capacity {}!", len, A::CAPACITY)
-      }
-    }
-  }
-
-  /// This is an internal implementation detail of the `tiny_vec!` macro, and
-  /// using it other than from that macro is not supported by this crate's
-  /// SemVer guarantee.
-  #[inline(always)]
-  #[doc(hidden)]
-  pub fn constructor_for_capacity(cap: usize) -> TinyVecConstructor<A> {
-    if cap <= A::CAPACITY {
-      TinyVecConstructor::Inline(TinyVec::Inline)
-    } else {
-      TinyVecConstructor::Heap(TinyVec::Heap)
-    }
-  }
-
-  /// Inserts an item at the position given, moving all following elements +1
-  /// index.
-  ///
-  /// ## Panics
-  /// * If `index` > `len`
-  ///
-  /// ## Example
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 10] => 1, 2, 3);
-  /// tv.insert(1, 4);
-  /// assert_eq!(tv.as_slice(), &[1, 4, 2, 3]);
-  /// tv.insert(4, 5);
-  /// assert_eq!(tv.as_slice(), &[1, 4, 2, 3, 5]);
-  /// ```
-  #[inline]
-  pub fn insert(&mut self, index: usize, item: A::Item) {
-    assert!(
-      index <= self.len(),
-      "insertion index (is {}) should be <= len (is {})",
-      index,
-      self.len()
-    );
-
-    let arr = match self {
-      TinyVec::Heap(v) => return v.insert(index, item),
-      TinyVec::Inline(a) => a,
-    };
-
-    if let Some(x) = arr.try_insert(index, item) {
-      let mut v = Vec::with_capacity(arr.len() * 2);
-      let mut it =
-        arr.iter_mut().map(|r| core::mem::replace(r, Default::default()));
-      v.extend(it.by_ref().take(index));
-      v.push(x);
-      v.extend(it);
-      *self = TinyVec::Heap(v);
-    }
-  }
-
-  /// If the vec is empty.
-  #[inline(always)]
-  #[must_use]
-  pub fn is_empty(&self) -> bool {
-    self.len() == 0
-  }
-
-  /// Makes a new, empty vec.
-  #[inline(always)]
-  #[must_use]
-  pub fn new() -> Self {
-    Self::default()
-  }
-
-  /// Place an element onto the end of the vec.
-  #[inline]
-  pub fn push(&mut self, val: A::Item) {
-    // The code path for moving the inline contents to the heap produces a lot
-    // of instructions, but we have a strong guarantee that this is a cold
-    // path. LLVM doesn't know this, inlines it, and this tends to cause a
-    // cascade of other bad inlining decisions because the body of push looks
-    // huge even though nearly every call executes the same few instructions.
-    //
-    // Moving the logic out of line with #[cold] causes the hot code to  be
-    // inlined together, and we take the extra cost of a function call only
-    // in rare cases.
-    #[cold]
-    fn drain_to_heap_and_push<A: Array>(
-      arr: &mut ArrayVec<A>, val: A::Item,
-    ) -> TinyVec<A> {
-      /* Make the Vec twice the size to amortize the cost of draining */
-      let mut v = arr.drain_to_vec_and_reserve(arr.len());
-      v.push(val);
-      TinyVec::Heap(v)
-    }
-
-    match self {
-      TinyVec::Heap(v) => v.push(val),
-      TinyVec::Inline(arr) => {
-        if let Some(x) = arr.try_push(val) {
-          *self = drain_to_heap_and_push(arr, x);
-        }
-      }
-    }
-  }
-
-  /// Resize the vec to the new length.
-  ///
-  /// If it needs to be longer, it's filled with clones of the provided value.
-  /// If it needs to be shorter, it's truncated.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// use tinyvec::*;
-  ///
-  /// let mut tv = tiny_vec!([&str; 10] => "hello");
-  /// tv.resize(3, "world");
-  /// assert_eq!(tv.as_slice(), &["hello", "world", "world"][..]);
-  ///
-  /// let mut tv = tiny_vec!([i32; 10] => 1, 2, 3, 4);
-  /// tv.resize(2, 0);
-  /// assert_eq!(tv.as_slice(), &[1, 2][..]);
-  /// ```
-  #[inline]
-  pub fn resize(&mut self, new_len: usize, new_val: A::Item)
-  where
-    A::Item: Clone,
-  {
-    self.resize_with(new_len, || new_val.clone());
-  }
-
-  /// Resize the vec to the new length.
-  ///
-  /// If it needs to be longer, it's filled with repeated calls to the provided
-  /// function. If it needs to be shorter, it's truncated.
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// use tinyvec::*;
-  ///
-  /// let mut tv = tiny_vec!([i32; 3] => 1, 2, 3);
-  /// tv.resize_with(5, Default::default);
-  /// assert_eq!(tv.as_slice(), &[1, 2, 3, 0, 0][..]);
-  ///
-  /// let mut tv = tiny_vec!([i32; 2]);
-  /// let mut p = 1;
-  /// tv.resize_with(4, || {
-  ///   p *= 2;
-  ///   p
-  /// });
-  /// assert_eq!(tv.as_slice(), &[2, 4, 8, 16][..]);
-  /// ```
-  #[inline]
-  pub fn resize_with<F: FnMut() -> A::Item>(&mut self, new_len: usize, f: F) {
-    match new_len.checked_sub(self.len()) {
-      None => return self.truncate(new_len),
-      Some(n) => self.reserve(n),
-    }
-
-    match self {
-      TinyVec::Inline(a) => a.resize_with(new_len, f),
-      TinyVec::Heap(v) => v.resize_with(new_len, f),
-    }
-  }
-
-  /// Splits the collection at the point given.
-  ///
-  /// * `[0, at)` stays in this vec
-  /// * `[at, len)` ends up in the new vec.
-  ///
-  /// ## Panics
-  /// * if at > len
-  ///
-  /// ## Example
-  ///
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3);
-  /// let tv2 = tv.split_off(1);
-  /// assert_eq!(tv.as_slice(), &[1][..]);
-  /// assert_eq!(tv2.as_slice(), &[2, 3][..]);
-  /// ```
-  #[inline]
-  pub fn split_off(&mut self, at: usize) -> Self {
-    match self {
-      TinyVec::Inline(a) => TinyVec::Inline(a.split_off(at)),
-      TinyVec::Heap(v) => TinyVec::Heap(v.split_off(at)),
-    }
-  }
-
-  /// Creates a splicing iterator that removes the specified range in the
-  /// vector, yields the removed items, and replaces them with elements from
-  /// the provided iterator.
-  ///
-  /// `splice` fuses the provided iterator, so elements after the first `None`
-  /// are ignored.
-  ///
-  /// ## Panics
-  /// * If the start is greater than the end.
-  /// * If the end is past the edge of the vec.
-  /// * If the provided iterator panics.
-  ///
-  /// ## Example
-  /// ```rust
-  /// use tinyvec::*;
-  /// let mut tv = tiny_vec!([i32; 4] => 1, 2, 3);
-  /// let tv2: TinyVec<[i32; 4]> = tv.splice(1.., 4..=6).collect();
-  /// assert_eq!(tv.as_slice(), &[1, 4, 5, 6][..]);
-  /// assert_eq!(tv2.as_slice(), &[2, 3][..]);
-  ///
-  /// tv.splice(.., None);
-  /// assert_eq!(tv.as_slice(), &[]);
-  /// ```
-  #[inline]
-  pub fn splice<R, I>(
-    &mut self, range: R, replacement: I,
-  ) -> TinyVecSplice<'_, A, core::iter::Fuse<I::IntoIter>>
-  where
-    R: RangeBounds<usize>,
-    I: IntoIterator<Item = A::Item>,
-  {
-    use core::ops::Bound;
-    let start = match range.start_bound() {
-      Bound::Included(x) => *x,
-      Bound::Excluded(x) => x.saturating_add(1),
-      Bound::Unbounded => 0,
-    };
-    let end = match range.end_bound() {
-      Bound::Included(x) => x.saturating_add(1),
-      Bound::Excluded(x) => *x,
-      Bound::Unbounded => self.len(),
-    };
-    assert!(
-      start <= end,
-      "TinyVec::splice> Illegal range, {} to {}",
-      start,
-      end
-    );
-    assert!(
-      end <= self.len(),
-      "TinyVec::splice> Range ends at {} but length is only {}!",
-      end,
-      self.len()
-    );
-
-    TinyVecSplice {
-      removal_start: start,
-      removal_end: end,
-      parent: self,
-      replacement: replacement.into_iter().fuse(),
-    }
-  }
-
-  /// Wraps an array, using the given length as the starting length.
-  ///
-  /// If you want to use the whole length of the array, you can just use the
-  /// `From` impl.
-  ///
-  /// ## Failure
-  ///
-  /// If the given length is greater than the capacity of the array this will
-  /// error, and you'll get the array back in the `Err`.
-  #[inline]
-  pub fn try_from_array_len(data: A, len: usize) -> Result<Self, A> {
-    let arr = ArrayVec::try_from_array_len(data, len)?;
-    Ok(TinyVec::Inline(arr))
-  }
-}
-
-/// Draining iterator for `TinyVecDrain`
-///
-/// See [`TinyVecDrain::drain`](TinyVecDrain::<A>::drain)
-#[cfg_attr(docs_rs, doc(cfg(feature = "alloc")))]
-pub enum TinyVecDrain<'p, A: Array> {
-  #[allow(missing_docs)]
-  Inline(ArrayVecDrain<'p, A::Item>),
-  #[allow(missing_docs)]
-  Heap(vec::Drain<'p, A::Item>),
-}
-
-impl<'p, A: Array> Iterator for TinyVecDrain<'p, A> {
-  type Item = A::Item;
-
-  impl_mirrored! {
-    type Mirror = TinyVecDrain;
-
-    #[inline]
-    fn next(self: &mut Self) -> Option<Self::Item>;
-    #[inline]
-    fn nth(self: &mut Self, n: usize) -> Option<Self::Item>;
-    #[inline]
-    fn size_hint(self: &Self) -> (usize, Option<usize>);
-    #[inline]
-    fn last(self: Self) -> Option<Self::Item>;
-    #[inline]
-    fn count(self: Self) -> usize;
-  }
-
-  #[inline]
-  fn for_each<F: FnMut(Self::Item)>(self, f: F) {
-    match self {
-      TinyVecDrain::Inline(i) => i.for_each(f),
-      TinyVecDrain::Heap(h) => h.for_each(f),
-    }
-  }
-}
-
-impl<'p, A: Array> DoubleEndedIterator for TinyVecDrain<'p, A> {
-  impl_mirrored! {
-    type Mirror = TinyVecDrain;
-
-    #[inline]
-    fn next_back(self: &mut Self) -> Option<Self::Item>;
-
-    #[inline]
-    fn nth_back(self: &mut Self, n: usize) -> Option<Self::Item>;
-  }
-}
-
-/// Splicing iterator for `TinyVec`
-/// See [`TinyVec::splice`](TinyVec::<A>::splice)
-#[cfg_attr(docs_rs, doc(cfg(feature = "alloc")))]
-pub struct TinyVecSplice<'p, A: Array, I: Iterator<Item = A::Item>> {
-  parent: &'p mut TinyVec<A>,
-  removal_start: usize,
-  removal_end: usize,
-  replacement: I,
-}
-
-impl<'p, A, I> Iterator for TinyVecSplice<'p, A, I>
-where
-  A: Array,
-  I: Iterator<Item = A::Item>,
-{
-  type Item = A::Item;
-
-  #[inline]
-  fn next(&mut self) -> Option<A::Item> {
-    if self.removal_start < self.removal_end {
-      match self.replacement.next() {
-        Some(replacement) => {
-          let removed = core::mem::replace(
-            &mut self.parent[self.removal_start],
-            replacement,
-          );
-          self.removal_start += 1;
-          Some(removed)
-        }
-        None => {
-          let removed = self.parent.remove(self.removal_start);
-          self.removal_end -= 1;
-          Some(removed)
-        }
-      }
-    } else {
-      None
-    }
-  }
-
-  #[inline]
-  fn size_hint(&self) -> (usize, Option<usize>) {
-    let len = self.len();
-    (len, Some(len))
-  }
-}
-
-impl<'p, A, I> ExactSizeIterator for TinyVecSplice<'p, A, I>
-where
-  A: Array,
-  I: Iterator<Item = A::Item>,
-{
-  #[inline]
-  fn len(&self) -> usize {
-    self.removal_end - self.removal_start
-  }
-}
-
-impl<'p, A, I> FusedIterator for TinyVecSplice<'p, A, I>
-where
-  A: Array,
-  I: Iterator<Item = A::Item>,
-{
-}
-
-impl<'p, A, I> DoubleEndedIterator for TinyVecSplice<'p, A, I>
-where
-  A: Array,
-  I: Iterator<Item = A::Item> + DoubleEndedIterator,
-{
-  #[inline]
-  fn next_back(&mut self) -> Option<A::Item> {
-    if self.removal_start < self.removal_end {
-      match self.replacement.next_back() {
-        Some(replacement) => {
-          let removed = core::mem::replace(
-            &mut self.parent[self.removal_end - 1],
-            replacement,
-          );
-          self.removal_end -= 1;
-          Some(removed)
-        }
-        None => {
-          let removed = self.parent.remove(self.removal_end - 1);
-          self.removal_end -= 1;
-          Some(removed)
-        }
-      }
-    } else {
-      None
-    }
-  }
-}
-
-impl<'p, A: Array, I: Iterator<Item = A::Item>> Drop
-  for TinyVecSplice<'p, A, I>
-{
-  fn drop(&mut self) {
-    for _ in self.by_ref() {}
-
-    let (lower_bound, _) = self.replacement.size_hint();
-    self.parent.reserve(lower_bound);
-
-    for replacement in self.replacement.by_ref() {
-      self.parent.insert(self.removal_end, replacement);
-      self.removal_end += 1;
-    }
-  }
-}
-
-impl<A: Array> AsMut<[A::Item]> for TinyVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn as_mut(&mut self) -> &mut [A::Item] {
-    &mut *self
-  }
-}
-
-impl<A: Array> AsRef<[A::Item]> for TinyVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn as_ref(&self) -> &[A::Item] {
-    &*self
-  }
-}
-
-impl<A: Array> Borrow<[A::Item]> for TinyVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn borrow(&self) -> &[A::Item] {
-    &*self
-  }
-}
-
-impl<A: Array> BorrowMut<[A::Item]> for TinyVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn borrow_mut(&mut self) -> &mut [A::Item] {
-    &mut *self
-  }
-}
-
-impl<A: Array> Extend<A::Item> for TinyVec<A> {
-  #[inline]
-  fn extend<T: IntoIterator<Item = A::Item>>(&mut self, iter: T) {
-    let iter = iter.into_iter();
-    let (lower_bound, _) = iter.size_hint();
-    self.reserve(lower_bound);
-
-    let a = match self {
-      TinyVec::Heap(h) => return h.extend(iter),
-      TinyVec::Inline(a) => a,
-    };
-
-    let mut iter = a.fill(iter);
-    let maybe = iter.next();
-
-    let surely = match maybe {
-      Some(x) => x,
-      None => return,
-    };
-
-    let mut v = a.drain_to_vec_and_reserve(a.len());
-    v.push(surely);
-    v.extend(iter);
-    *self = TinyVec::Heap(v);
-  }
-}
-
-impl<A: Array> From<ArrayVec<A>> for TinyVec<A> {
-  #[inline(always)]
-  #[must_use]
-  fn from(arr: ArrayVec<A>) -> Self {
-    TinyVec::Inline(arr)
-  }
-}
-
-impl<A: Array> From<A> for TinyVec<A> {
-  fn from(array: A) -> Self {
-    TinyVec::Inline(ArrayVec::from(array))
-  }
-}
-
-impl<T, A> From<&'_ [T]> for TinyVec<A>
-where
-  T: Clone + Default,
-  A: Array<Item = T>,
-{
-  #[inline]
-  #[must_use]
-  fn from(slice: &[T]) -> Self {
-    if let Ok(arr) = ArrayVec::try_from(slice) {
-      TinyVec::Inline(arr)
-    } else {
-      TinyVec::Heap(slice.into())
-    }
-  }
-}
-
-impl<T, A> From<&'_ mut [T]> for TinyVec<A>
-where
-  T: Clone + Default,
-  A: Array<Item = T>,
-{
-  #[inline]
-  #[must_use]
-  fn from(slice: &mut [T]) -> Self {
-    Self::from(&*slice)
-  }
-}
-
-impl<A: Array> FromIterator<A::Item> for TinyVec<A> {
-  #[inline]
-  #[must_use]
-  fn from_iter<T: IntoIterator<Item = A::Item>>(iter: T) -> Self {
-    let mut av = Self::default();
-    av.extend(iter);
-    av
-  }
-}
-
-/// Iterator for consuming an `TinyVec` and returning owned elements.
-#[cfg_attr(docs_rs, doc(cfg(feature = "alloc")))]
-pub enum TinyVecIterator<A: Array> {
-  #[allow(missing_docs)]
-  Inline(ArrayVecIterator<A>),
-  #[allow(missing_docs)]
-  Heap(alloc::vec::IntoIter<A::Item>),
-}
-
-impl<A: Array> TinyVecIterator<A> {
-  impl_mirrored! {
-    type Mirror = TinyVecIterator;
-    /// Returns the remaining items of this iterator as a slice.
-    #[inline]
-    #[must_use]
-    pub fn as_slice(self: &Self) -> &[A::Item];
-  }
-}
-
-impl<A: Array> FusedIterator for TinyVecIterator<A> {}
-
-impl<A: Array> Iterator for TinyVecIterator<A> {
-  type Item = A::Item;
-
-  impl_mirrored! {
-    type Mirror = TinyVecIterator;
-
-    #[inline]
-    fn next(self: &mut Self) -> Option<Self::Item>;
-
-    #[inline(always)]
-    #[must_use]
-    fn size_hint(self: &Self) -> (usize, Option<usize>);
-
-    #[inline(always)]
-    fn count(self: Self) -> usize;
-
-    #[inline]
-    fn last(self: Self) -> Option<Self::Item>;
-
-    #[inline]
-    fn nth(self: &mut Self, n: usize) -> Option<A::Item>;
-  }
-}
-
-impl<A: Array> DoubleEndedIterator for TinyVecIterator<A> {
-  impl_mirrored! {
-    type Mirror = TinyVecIterator;
-
-    #[inline]
-    fn next_back(self: &mut Self) -> Option<Self::Item>;
-
-    #[inline]
-    fn nth_back(self: &mut Self, n: usize) -> Option<Self::Item>;
-  }
-}
-
-impl<A: Array> ExactSizeIterator for TinyVecIterator<A> {
-  impl_mirrored! {
-    type Mirror = TinyVecIterator;
-    #[inline]
-    fn len(self: &Self) -> usize;
-  }
-}
-
-impl<A: Array> Debug for TinyVecIterator<A>
-where
-  A::Item: Debug,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
-    f.debug_tuple("TinyVecIterator").field(&self.as_slice()).finish()
-  }
-}
-
-impl<A: Array> IntoIterator for TinyVec<A> {
-  type Item = A::Item;
-  type IntoIter = TinyVecIterator<A>;
-  #[inline(always)]
-  #[must_use]
-  fn into_iter(self) -> Self::IntoIter {
-    match self {
-      TinyVec::Inline(a) => TinyVecIterator::Inline(a.into_iter()),
-      TinyVec::Heap(v) => TinyVecIterator::Heap(v.into_iter()),
-    }
-  }
-}
-
-impl<'a, A: Array> IntoIterator for &'a mut TinyVec<A> {
-  type Item = &'a mut A::Item;
-  type IntoIter = core::slice::IterMut<'a, A::Item>;
-  #[inline(always)]
-  #[must_use]
-  fn into_iter(self) -> Self::IntoIter {
-    self.iter_mut()
-  }
-}
-
-impl<'a, A: Array> IntoIterator for &'a TinyVec<A> {
-  type Item = &'a A::Item;
-  type IntoIter = core::slice::Iter<'a, A::Item>;
-  #[inline(always)]
-  #[must_use]
-  fn into_iter(self) -> Self::IntoIter {
-    self.iter()
-  }
-}
-
-impl<A: Array> PartialEq for TinyVec<A>
-where
-  A::Item: PartialEq,
-{
-  #[inline]
-  #[must_use]
-  fn eq(&self, other: &Self) -> bool {
-    self.as_slice().eq(other.as_slice())
-  }
-}
-impl<A: Array> Eq for TinyVec<A> where A::Item: Eq {}
-
-impl<A: Array> PartialOrd for TinyVec<A>
-where
-  A::Item: PartialOrd,
-{
-  #[inline]
-  #[must_use]
-  fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
-    self.as_slice().partial_cmp(other.as_slice())
-  }
-}
-impl<A: Array> Ord for TinyVec<A>
-where
-  A::Item: Ord,
-{
-  #[inline]
-  #[must_use]
-  fn cmp(&self, other: &Self) -> core::cmp::Ordering {
-    self.as_slice().cmp(other.as_slice())
-  }
-}
-
-impl<A: Array> PartialEq<&A> for TinyVec<A>
-where
-  A::Item: PartialEq,
-{
-  #[inline]
-  #[must_use]
-  fn eq(&self, other: &&A) -> bool {
-    self.as_slice().eq(other.as_slice())
-  }
-}
-
-impl<A: Array> PartialEq<&[A::Item]> for TinyVec<A>
-where
-  A::Item: PartialEq,
-{
-  #[inline]
-  #[must_use]
-  fn eq(&self, other: &&[A::Item]) -> bool {
-    self.as_slice().eq(*other)
-  }
-}
-
-impl<A: Array> Hash for TinyVec<A>
-where
-  A::Item: Hash,
-{
-  #[inline]
-  fn hash<H: Hasher>(&self, state: &mut H) {
-    self.as_slice().hash(state)
-  }
-}
-
-// // // // // // // //
-// Formatting impls
-// // // // // // // //
-
-impl<A: Array> Binary for TinyVec<A>
-where
-  A::Item: Binary,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Binary::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> Debug for TinyVec<A>
-where
-  A::Item: Debug,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() && !self.is_empty() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Debug::fmt(elem, f)?;
-    }
-    if f.alternate() && !self.is_empty() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> Display for TinyVec<A>
-where
-  A::Item: Display,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Display::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> LowerExp for TinyVec<A>
-where
-  A::Item: LowerExp,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      LowerExp::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> LowerHex for TinyVec<A>
-where
-  A::Item: LowerHex,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      LowerHex::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> Octal for TinyVec<A>
-where
-  A::Item: Octal,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Octal::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> Pointer for TinyVec<A>
-where
-  A::Item: Pointer,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      Pointer::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> UpperExp for TinyVec<A>
-where
-  A::Item: UpperExp,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      UpperExp::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-impl<A: Array> UpperHex for TinyVec<A>
-where
-  A::Item: UpperHex,
-{
-  #[allow(clippy::missing_inline_in_public_items)]
-  fn fmt(&self, f: &mut Formatter) -> core::fmt::Result {
-    write!(f, "[")?;
-    if f.alternate() {
-      write!(f, "\n    ")?;
-    }
-    for (i, elem) in self.iter().enumerate() {
-      if i > 0 {
-        write!(f, ",{}", if f.alternate() { "\n    " } else { " " })?;
-      }
-      UpperHex::fmt(elem, f)?;
-    }
-    if f.alternate() {
-      write!(f, ",\n")?;
-    }
-    write!(f, "]")
-  }
-}
-
-#[cfg(feature = "serde")]
-#[cfg_attr(docs_rs, doc(cfg(feature = "alloc")))]
-struct TinyVecVisitor<A: Array>(PhantomData<A>);
-
-#[cfg(feature = "serde")]
-impl<'de, A: Array> Visitor<'de> for TinyVecVisitor<A>
-where
-  A::Item: Deserialize<'de>,
-{
-  type Value = TinyVec<A>;
-
-  fn expecting(
-    &self, formatter: &mut core::fmt::Formatter,
-  ) -> core::fmt::Result {
-    formatter.write_str("a sequence")
-  }
-
-  fn visit_seq<S>(self, mut seq: S) -> Result<Self::Value, S::Error>
-  where
-    S: SeqAccess<'de>,
-  {
-    let mut new_tinyvec = match seq.size_hint() {
-      Some(expected_size) => TinyVec::with_capacity(expected_size),
-      None => Default::default(),
-    };
-
-    while let Some(value) = seq.next_element()? {
-      new_tinyvec.push(value);
-    }
-
-    Ok(new_tinyvec)
-  }
-}
diff --git a/vendor/tinyvec/tests/arrayvec.rs b/vendor/tinyvec/tests/arrayvec.rs
deleted file mode 100644
index 518b6e0b..00000000
--- a/vendor/tinyvec/tests/arrayvec.rs
+++ /dev/null
@@ -1,478 +0,0 @@
-#![allow(bad_style)]
-#![allow(clippy::clone_on_copy)]
-
-#[cfg(feature = "serde")]
-use serde_test::{assert_tokens, Token};
-use std::iter::FromIterator;
-use tinyvec::*;
-
-#[test]
-fn test_a_vec() {
-  let mut expected: ArrayVec<[i32; 4]> = Default::default();
-  expected.push(1);
-  expected.push(2);
-  expected.push(3);
-
-  let actual = array_vec!(1, 2, 3);
-
-  assert_eq!(expected, actual);
-
-  assert_eq!(array_vec![0u8; 4], array_vec!(0u8, 0u8, 0u8, 0u8));
-  assert_eq!(array_vec![0u8; 4], array_vec!([u8; 4] => 0, 0, 0, 0));
-  assert_eq!(array_vec![0; 4], array_vec!(0, 0, 0, 0));
-  assert_eq!(array_vec![0; 4], array_vec!([u8; 4] => 0, 0, 0, 0));
-
-  let expected2 = array_vec![1.1; 3];
-  let actual2 = array_vec!([f32; 3] => 1.1, 1.1, 1.1);
-  assert_eq!(expected2, actual2);
-}
-
-#[test]
-fn ArrayVec_push_pop() {
-  let mut av: ArrayVec<[i32; 4]> = Default::default();
-  assert_eq!(av.len(), 0);
-  assert_eq!(av.pop(), None);
-
-  av.push(10_i32);
-  assert_eq!(av.len(), 1);
-  assert_eq!(av[0], 10);
-  assert_eq!(av.pop(), Some(10));
-  assert_eq!(av.len(), 0);
-  assert_eq!(av.pop(), None);
-
-  av.push(10);
-  av.push(11);
-  av.push(12);
-  av.push(13);
-  assert_eq!(av[0], 10);
-  assert_eq!(av[1], 11);
-  assert_eq!(av[2], 12);
-  assert_eq!(av[3], 13);
-  assert_eq!(av.len(), 4);
-  assert_eq!(av.pop(), Some(13));
-  assert_eq!(av.len(), 3);
-  assert_eq!(av.pop(), Some(12));
-  assert_eq!(av.len(), 2);
-  assert_eq!(av.pop(), Some(11));
-  assert_eq!(av.len(), 1);
-  assert_eq!(av.pop(), Some(10));
-  assert_eq!(av.len(), 0);
-  assert_eq!(av.pop(), None);
-}
-
-#[test]
-#[should_panic]
-fn ArrayVec_push_overflow() {
-  let mut av: ArrayVec<[i32; 0]> = Default::default();
-  av.push(7);
-}
-
-#[test]
-fn ArrayVec_formatting() {
-  // check that we get the comma placement correct
-
-  let mut av: ArrayVec<[i32; 4]> = Default::default();
-  assert_eq!(format!("{:?}", av), "[]");
-  av.push(10);
-  assert_eq!(format!("{:?}", av), "[10]");
-  av.push(11);
-  assert_eq!(format!("{:?}", av), "[10, 11]");
-  av.push(12);
-  assert_eq!(format!("{:?}", av), "[10, 11, 12]");
-
-  // below here just asserts that the impls exist.
-
-  //
-  let av: ArrayVec<[i32; 4]> = Default::default();
-  assert_eq!(format!("{:b}", av), "[]");
-  assert_eq!(format!("{:o}", av), "[]");
-  assert_eq!(format!("{:x}", av), "[]");
-  assert_eq!(format!("{:X}", av), "[]");
-  assert_eq!(format!("{}", av), "[]");
-  //
-  let av: ArrayVec<[f32; 4]> = Default::default();
-  assert_eq!(format!("{:e}", av), "[]");
-  assert_eq!(format!("{:E}", av), "[]");
-  //
-  let av: ArrayVec<[&'static str; 4]> = Default::default();
-  assert_eq!(format!("{:p}", av), "[]");
-}
-
-#[test]
-fn ArrayVec_iteration() {
-  let av = array_vec!([i32; 4] => 10, 11, 12, 13);
-
-  let mut i = av.into_iter();
-  assert_eq!(i.next(), Some(10));
-  assert_eq!(i.next(), Some(11));
-  assert_eq!(i.next(), Some(12));
-  assert_eq!(i.next(), Some(13));
-  assert_eq!(i.next(), None);
-
-  let av = array_vec!([i32; 4] => 10, 11, 12, 13);
-
-  let mut av2: ArrayVec<[i32; 4]> = av.clone().into_iter().collect();
-  assert_eq!(av, av2);
-
-  // IntoIterator for &mut ArrayVec
-  for x in &mut av2 {
-    *x = -*x;
-  }
-
-  // IntoIterator for &ArrayVec
-  assert!(av.iter().zip(&av2).all(|(&a, &b)| a == -b));
-}
-
-#[test]
-fn ArrayVec_append() {
-  let mut av = array_vec!([i32; 8] => 1, 2, 3);
-  let mut av2 = array_vec!([i32; 8] => 4, 5, 6);
-  //
-  av.append(&mut av2);
-  assert_eq!(av.as_slice(), &[1_i32, 2, 3, 4, 5, 6]);
-  assert_eq!(av2.as_slice(), &[]);
-}
-
-#[test]
-fn ArrayVec_remove() {
-  let mut av: ArrayVec<[i32; 10]> = Default::default();
-  av.push(1);
-  av.push(2);
-  av.push(3);
-  assert_eq!(av.remove(1), 2);
-  assert_eq!(&av[..], &[1, 3][..]);
-}
-
-#[test]
-#[should_panic]
-fn ArrayVec_remove_invalid() {
-  let mut av: ArrayVec<[i32; 1]> = Default::default();
-  av.push(1);
-  av.remove(1);
-}
-
-#[test]
-fn ArrayVec_swap_remove() {
-  let mut av: ArrayVec<[i32; 10]> = Default::default();
-  av.push(1);
-  av.push(2);
-  av.push(3);
-  av.push(4);
-  assert_eq!(av.swap_remove(3), 4);
-  assert_eq!(&av[..], &[1, 2, 3][..]);
-  assert_eq!(av.swap_remove(0), 1);
-  assert_eq!(&av[..], &[3, 2][..]);
-  assert_eq!(av.swap_remove(0), 3);
-  assert_eq!(&av[..], &[2][..]);
-  assert_eq!(av.swap_remove(0), 2);
-  assert_eq!(&av[..], &[][..]);
-}
-
-#[test]
-fn ArrayVec_drain() {
-  let mut av: ArrayVec<[i32; 10]> = Default::default();
-  av.push(1);
-  av.push(2);
-  av.push(3);
-
-  assert_eq!(Vec::from_iter(av.clone().drain(..)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(av.clone().drain(..2)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(av.clone().drain(..3)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(av.clone().drain(..=1)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(av.clone().drain(..=2)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(av.clone().drain(0..)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(av.clone().drain(1..)), vec![2, 3]);
-
-  assert_eq!(Vec::from_iter(av.clone().drain(0..2)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(av.clone().drain(0..3)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(av.clone().drain(1..2)), vec![2]);
-  assert_eq!(Vec::from_iter(av.clone().drain(1..3)), vec![2, 3]);
-
-  assert_eq!(Vec::from_iter(av.clone().drain(0..=1)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(av.clone().drain(0..=2)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(av.clone().drain(1..=1)), vec![2]);
-  assert_eq!(Vec::from_iter(av.clone().drain(1..=2)), vec![2, 3]);
-}
-
-#[test]
-fn ArrayVec_splice() {
-  let mut av: ArrayVec<[i32; 10]> = Default::default();
-  av.push(1);
-  av.push(2);
-  av.push(3);
-
-  // splice returns the same things as drain
-  assert_eq!(Vec::from_iter(av.clone().splice(.., None)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(av.clone().splice(..2, None)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(av.clone().splice(..3, None)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(av.clone().splice(..=1, None)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(av.clone().splice(..=2, None)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(av.clone().splice(0.., None)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(av.clone().splice(1.., None)), vec![2, 3]);
-
-  assert_eq!(Vec::from_iter(av.clone().splice(0..2, None)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(av.clone().splice(0..3, None)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(av.clone().splice(1..2, None)), vec![2]);
-  assert_eq!(Vec::from_iter(av.clone().splice(1..3, None)), vec![2, 3]);
-
-  assert_eq!(Vec::from_iter(av.clone().splice(0..=1, None)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(av.clone().splice(0..=2, None)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(av.clone().splice(1..=1, None)), vec![2]);
-  assert_eq!(Vec::from_iter(av.clone().splice(1..=2, None)), vec![2, 3]);
-
-  // splice removes the same things as drain
-  let mut av2 = av.clone();
-  av2.splice(.., None);
-  assert_eq!(av2, array_vec![]);
-
-  let mut av2 = av.clone();
-  av2.splice(..2, None);
-  assert_eq!(av2, array_vec![3]);
-
-  let mut av2 = av.clone();
-  av2.splice(..3, None);
-  assert_eq!(av2, array_vec![]);
-
-  let mut av2 = av.clone();
-  av2.splice(..=1, None);
-  assert_eq!(av2, array_vec![3]);
-  let mut av2 = av.clone();
-  av2.splice(..=2, None);
-  assert_eq!(av2, array_vec![]);
-
-  let mut av2 = av.clone();
-  av2.splice(0.., None);
-  assert_eq!(av2, array_vec![]);
-  let mut av2 = av.clone();
-  av2.splice(1.., None);
-  assert_eq!(av2, array_vec![1]);
-
-  let mut av2 = av.clone();
-  av2.splice(0..2, None);
-  assert_eq!(av2, array_vec![3]);
-
-  let mut av2 = av.clone();
-  av2.splice(0..3, None);
-  assert_eq!(av2, array_vec![]);
-  let mut av2 = av.clone();
-  av2.splice(1..2, None);
-  assert_eq!(av2, array_vec![1, 3]);
-
-  let mut av2 = av.clone();
-  av2.splice(1..3, None);
-  assert_eq!(av2, array_vec![1]);
-
-  let mut av2 = av.clone();
-  av2.splice(0..=1, None);
-  assert_eq!(av2, array_vec![3]);
-
-  let mut av2 = av.clone();
-  av2.splice(0..=2, None);
-  assert_eq!(av2, array_vec![]);
-
-  let mut av2 = av.clone();
-  av2.splice(1..=1, None);
-  assert_eq!(av2, array_vec![1, 3]);
-
-  let mut av2 = av.clone();
-  av2.splice(1..=2, None);
-  assert_eq!(av2, array_vec![1]);
-
-  // splice adds the elements correctly
-  let mut av2 = av.clone();
-  av2.splice(.., 4..=6);
-  assert_eq!(av2, array_vec![4, 5, 6]);
-
-  let mut av2 = av.clone();
-  av2.splice(..2, 4..=6);
-  assert_eq!(av2, array_vec![4, 5, 6, 3]);
-
-  let mut av2 = av.clone();
-  av2.splice(..3, 4..=6);
-  assert_eq!(av2, array_vec![4, 5, 6]);
-
-  let mut av2 = av.clone();
-  av2.splice(..=1, 4..=6);
-  assert_eq!(av2, array_vec![4, 5, 6, 3]);
-
-  let mut av2 = av.clone();
-  av2.splice(..=2, 4..=6);
-  assert_eq!(av2, array_vec![4, 5, 6]);
-
-  let mut av2 = av.clone();
-  av2.splice(0.., 4..=6);
-  assert_eq!(av2, array_vec![4, 5, 6]);
-
-  let mut av2 = av.clone();
-  av2.splice(1.., 4..=6);
-  assert_eq!(av2, array_vec![1, 4, 5, 6]);
-
-  let mut av2 = av.clone();
-  av2.splice(0..2, 4..=6);
-  assert_eq!(av2, array_vec![4, 5, 6, 3]);
-
-  let mut av2 = av.clone();
-  av2.splice(0..3, 4..=6);
-  assert_eq!(av2, array_vec![4, 5, 6]);
-
-  let mut av2 = av.clone();
-  av2.splice(1..2, 4..=6);
-  assert_eq!(av2, array_vec![1, 4, 5, 6, 3]);
-
-  let mut av2 = av.clone();
-  av2.splice(1..3, 4..=6);
-  assert_eq!(av2, array_vec![1, 4, 5, 6]);
-
-  let mut av2 = av.clone();
-  av2.splice(0..=1, 4..=6);
-  assert_eq!(av2, array_vec![4, 5, 6, 3]);
-
-  let mut av2 = av.clone();
-  av2.splice(0..=2, 4..=6);
-  assert_eq!(av2, array_vec![4, 5, 6]);
-
-  let mut av2 = av.clone();
-  av2.splice(1..=1, 4..=6);
-  assert_eq!(av2, array_vec![1, 4, 5, 6, 3]);
-
-  let mut av2 = av.clone();
-  av2.splice(1..=2, 4..=6);
-  assert_eq!(av2, array_vec![1, 4, 5, 6]);
-
-  // splice adds the elements correctly when the replacement is smaller
-  let mut av2 = av.clone();
-  av2.splice(.., Some(4));
-  assert_eq!(av2, array_vec![4]);
-
-  let mut av2 = av.clone();
-  av2.splice(..2, Some(4));
-  assert_eq!(av2, array_vec![4, 3]);
-
-  let mut av2 = av.clone();
-  av2.splice(1.., Some(4));
-  assert_eq!(av2, array_vec![1, 4]);
-
-  let mut av2 = av.clone();
-  av2.splice(1..=1, Some(4));
-  assert_eq!(av2, array_vec![1, 4, 3]);
-}
-
-#[test]
-fn iter_last_nth() {
-  let mut av: ArrayVec<[i32; 10]> = Default::default();
-  av.push(1);
-  av.push(2);
-  av.push(3);
-  av.push(4);
-  assert_eq!(av.len(), 4);
-  let mut iter = av.into_iter();
-  assert_eq!(iter.next(), Some(1));
-  assert_eq!(iter.next(), Some(2));
-  assert_eq!(iter.next(), Some(3));
-  assert_eq!(iter.next(), Some(4));
-  assert_eq!(iter.next(), None);
-  assert_eq!(iter.last(), None);
-
-  let mut av: ArrayVec<[i32; 10]> = Default::default();
-  av.push(1);
-  av.push(2);
-  av.push(3);
-
-  assert_eq!(av.into_iter().next(), Some(1));
-}
-
-#[test]
-#[cfg(feature = "rustc_1_40")]
-fn reviter() {
-  let mut av: ArrayVec<[i32; 10]> = Default::default();
-  av.push(1);
-  av.push(2);
-  av.push(3);
-  av.push(4);
-
-  let mut iter = av.into_iter();
-
-  assert_eq!(iter.next(), Some(1));
-  assert_eq!(iter.next_back(), Some(4));
-  assert_eq!(iter.next(), Some(2));
-  assert_eq!(iter.next_back(), Some(3));
-  assert_eq!(iter.next(), None);
-  assert_eq!(iter.next_back(), None);
-
-  let mut av: ArrayVec<[i32; 32]> = Default::default();
-  av.extend(0..32);
-
-  let mut iter = av.into_iter();
-
-  assert_eq!(iter.nth_back(0), Some(31));
-  assert_eq!(iter.nth_back(2), Some(28));
-  assert_eq!(iter.nth_back(0), Some(27));
-  assert_eq!(iter.nth_back(99), None);
-  assert_eq!(iter.nth_back(99), None);
-}
-
-#[cfg(feature = "serde")]
-#[test]
-fn ArrayVec_ser_de_empty() {
-  let tv: ArrayVec<[i32; 0]> = Default::default();
-
-  assert_tokens(&tv, &[Token::Seq { len: Some(0) }, Token::SeqEnd]);
-}
-
-#[cfg(feature = "serde")]
-#[test]
-fn ArrayVec_ser_de() {
-  let mut tv: ArrayVec<[i32; 4]> = Default::default();
-  tv.push(1);
-  tv.push(2);
-  tv.push(3);
-  tv.push(4);
-
-  assert_tokens(
-    &tv,
-    &[
-      Token::Seq { len: Some(4) },
-      Token::I32(1),
-      Token::I32(2),
-      Token::I32(3),
-      Token::I32(4),
-      Token::SeqEnd,
-    ],
-  );
-}
-
-#[test]
-fn ArrayVec_try_from_slice() {
-  use std::convert::TryFrom;
-
-  let nums = [1, 2, 3, 4];
-
-  let empty: Result<ArrayVec<[i32; 2]>, _> = ArrayVec::try_from(&nums[..0]);
-  assert!(empty.is_ok());
-  assert_eq!(empty.unwrap().as_slice(), &[]);
-
-  let fits: Result<ArrayVec<[i32; 2]>, _> = ArrayVec::try_from(&nums[..2]);
-  assert!(fits.is_ok());
-  assert_eq!(fits.unwrap().as_slice(), &[1, 2]);
-
-  let does_not_fit: Result<ArrayVec<[i32; 2]>, _> =
-    ArrayVec::try_from(&nums[..4]);
-  assert!(does_not_fit.is_err());
-}
-
-#[test]
-fn ArrayVec_pretty_debug() {
-  let arr: [i32; 3] = [1, 2, 3];
-  let expect = format!("{:#?}", arr);
-
-  let arr: ArrayVec<[i32; 3]> = array_vec![1, 2, 3];
-  let got = format!("{:#?}", arr);
-
-  assert_eq!(got, expect);
-}
diff --git a/vendor/tinyvec/tests/debugger_visualizer.rs b/vendor/tinyvec/tests/debugger_visualizer.rs
deleted file mode 100644
index 1b55328b..00000000
--- a/vendor/tinyvec/tests/debugger_visualizer.rs
+++ /dev/null
@@ -1,91 +0,0 @@
-use debugger_test::debugger_test;
-use tinyvec::*;
-
-#[inline(never)]
-fn __break() {
-  println!("breakpoint hit");
-}
-
-#[debugger_test(
-  debugger = "cdb",
-  commands = r#"
-dx strings
-dx inline_tv
-dx inline_tv.__0
-g
-dx slice_vec
-g
-dx strings
-"#,
-  expected_statements = r#"
-pattern:strings          : \{ len=0x3 \} \[Type: tinyvec::arrayvec::ArrayVec<array\$<.*str.*,7> >\]
-pattern:\[<Raw View>\]     \[Type: tinyvec::arrayvec::ArrayVec<array\$<.*str.*,7> >\]
-pattern:\[len\]            : 0x3 \[Type: unsigned short\]
-pattern:\[capacity\]       : 7
-pattern:\[0\]              : "a" \[Type: .*str.*\]
-pattern:\[1\]              : "b" \[Type: .*str.*\]
-pattern:\[2\]              : "c" \[Type: .*str.*\]
-
-inline_tv        : Inline [Type: enum2$<tinyvec::tinyvec::TinyVec<array$<i32,4> > >]
-    [<Raw View>]     [Type: enum2$<tinyvec::tinyvec::TinyVec<array$<i32,4> > >]
-    [+0x004] __0              : { len=0x4 } [Type: tinyvec::arrayvec::ArrayVec<array$<i32,4> >]
-
-inline_tv.__0    : { len=0x4 } [Type: tinyvec::arrayvec::ArrayVec<array$<i32,4> >]
-    [<Raw View>]     [Type: tinyvec::arrayvec::ArrayVec<array$<i32,4> >]
-    [len]            : 0x4 [Type: unsigned short]
-    [capacity]       : 4
-    [0]              : 1 [Type: i32]
-    [1]              : 2 [Type: i32]
-    [2]              : 3 [Type: i32]
-    [3]              : 4 [Type: i32]
-
-pattern:slice_vec        : \{ len=0x3 \} \[Type: tinyvec::slicevec::SliceVec<.*str.*>\]
-pattern:\[<Raw View>\]     \[Type: tinyvec::slicevec::SliceVec<.*str.*>\]
-pattern:\[len\]            : 0x3 \[Type: unsigned __int64\]
-pattern:\[0\]              : "a" \[Type: .*str.*\]
-pattern:\[1\]              : "b" \[Type: .*str.*\]
-pattern:\[2\]              : "d" \[Type: .*str.*\]
-
-pattern:strings          : \{ len=0x6 \} \[Type: tinyvec::arrayvec::ArrayVec<array\$<.*str.*,7> >\]
-pattern:\[<Raw View>\]     \[Type: tinyvec::arrayvec::ArrayVec<array\$<.*str.*,7> >\]
-pattern:\[len\]            : 0x6 \[Type: unsigned short\]
-pattern:\[capacity\]       : 7
-pattern:\[0\]              : "a" \[Type: .*str.*\]
-pattern:\[1\]              : "b" \[Type: .*str.*\]
-pattern:\[2\]              : "d" \[Type: .*str.*\]
-pattern:\[3\]              : "e" \[Type: .*str.*\]
-pattern:\[4\]              : "f" \[Type: .*str.*\]
-pattern:\[5\]              : "g" \[Type: .*str.*\]
-"#
-)]
-#[inline(never)]
-fn test_debugger_visualizer() {
-  let mut strings = ArrayVec::<[&str; 7]>::default();
-  strings.push("a");
-  strings.push("b");
-  strings.push("c");
-  assert_eq!(["a", "b", "c"], &strings[..]);
-
-  let mut inline_tv = tiny_vec!([i32; 4] => 1, 2, 3);
-  assert!(inline_tv.is_inline());
-
-  inline_tv.push(4);
-  __break();
-
-  {
-    let mut slice_vec = SliceVec::from(strings.as_mut_slice());
-    assert_eq!(3, slice_vec.capacity());
-    assert_eq!("c", slice_vec.remove(2));
-    slice_vec.push("d");
-    println!("{:?}", slice_vec);
-    __break();
-
-    assert_eq!(["a", "b", "d"], &slice_vec[..]);
-  }
-
-  strings.push("e");
-  strings.push("f");
-  strings.push("g");
-  assert_eq!(["a", "b", "d", "e", "f", "g"], &strings[..]);
-  __break();
-}
diff --git a/vendor/tinyvec/tests/tinyvec.rs b/vendor/tinyvec/tests/tinyvec.rs
deleted file mode 100644
index 32e2a012..00000000
--- a/vendor/tinyvec/tests/tinyvec.rs
+++ /dev/null
@@ -1,468 +0,0 @@
-#![cfg(feature = "alloc")]
-#![allow(bad_style)]
-#![allow(clippy::redundant_clone)]
-
-#[cfg(feature = "serde")]
-use serde_test::{assert_tokens, Token};
-use std::iter::FromIterator;
-use tinyvec::*;
-
-#[test]
-fn TinyVec_swap_remove() {
-  let mut tv: TinyVec<[i32; 10]> = Default::default();
-  tv.push(1);
-  tv.push(2);
-  tv.push(3);
-  tv.push(4);
-  assert_eq!(tv.swap_remove(3), 4);
-  assert_eq!(&tv[..], &[1, 2, 3][..]);
-  assert_eq!(tv.swap_remove(0), 1);
-  assert_eq!(&tv[..], &[3, 2][..]);
-  assert_eq!(tv.swap_remove(0), 3);
-  assert_eq!(&tv[..], &[2][..]);
-  assert_eq!(tv.swap_remove(0), 2);
-  assert_eq!(&tv[..], &[][..]);
-}
-
-#[test]
-fn TinyVec_capacity() {
-  let mut tv: TinyVec<[i32; 1]> = Default::default();
-  assert_eq!(tv.capacity(), 1);
-  tv.move_to_the_heap();
-  tv.extend_from_slice(&[1, 2, 3, 4]);
-  assert_eq!(tv.capacity(), 4);
-}
-
-#[test]
-fn TinyVec_drain() {
-  let mut tv: TinyVec<[i32; 10]> = Default::default();
-  tv.push(1);
-  tv.push(2);
-  tv.push(3);
-
-  assert_eq!(Vec::from_iter(tv.clone().drain(..)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(tv.clone().drain(..2)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(tv.clone().drain(..3)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(tv.clone().drain(..=1)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(tv.clone().drain(..=2)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(tv.clone().drain(0..)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(tv.clone().drain(1..)), vec![2, 3]);
-
-  assert_eq!(Vec::from_iter(tv.clone().drain(0..2)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(tv.clone().drain(0..3)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(tv.clone().drain(1..2)), vec![2]);
-  assert_eq!(Vec::from_iter(tv.clone().drain(1..3)), vec![2, 3]);
-
-  assert_eq!(Vec::from_iter(tv.clone().drain(0..=1)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(tv.clone().drain(0..=2)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(tv.clone().drain(1..=1)), vec![2]);
-  assert_eq!(Vec::from_iter(tv.clone().drain(1..=2)), vec![2, 3]);
-}
-
-#[test]
-fn TinyVec_splice() {
-  let mut tv: TinyVec<[i32; 10]> = Default::default();
-  tv.push(1);
-  tv.push(2);
-  tv.push(3);
-
-  // splice returns the same things as drain
-  assert_eq!(Vec::from_iter(tv.clone().splice(.., None)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(tv.clone().splice(..2, None)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(tv.clone().splice(..3, None)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(tv.clone().splice(..=1, None)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(tv.clone().splice(..=2, None)), vec![1, 2, 3]);
-
-  assert_eq!(Vec::from_iter(tv.clone().splice(0.., None)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(tv.clone().splice(1.., None)), vec![2, 3]);
-
-  assert_eq!(Vec::from_iter(tv.clone().splice(0..2, None)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(tv.clone().splice(0..3, None)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(tv.clone().splice(1..2, None)), vec![2]);
-  assert_eq!(Vec::from_iter(tv.clone().splice(1..3, None)), vec![2, 3]);
-
-  assert_eq!(Vec::from_iter(tv.clone().splice(0..=1, None)), vec![1, 2]);
-  assert_eq!(Vec::from_iter(tv.clone().splice(0..=2, None)), vec![1, 2, 3]);
-  assert_eq!(Vec::from_iter(tv.clone().splice(1..=1, None)), vec![2]);
-  assert_eq!(Vec::from_iter(tv.clone().splice(1..=2, None)), vec![2, 3]);
-
-  // splice removes the same things as drain
-  let mut tv2 = tv.clone();
-  tv2.splice(.., None);
-  assert_eq!(tv2, tiny_vec![]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(..2, None);
-  assert_eq!(tv2, tiny_vec![3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(..3, None);
-  assert_eq!(tv2, tiny_vec![]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(..=1, None);
-  assert_eq!(tv2, tiny_vec![3]);
-  let mut tv2 = tv.clone();
-  tv2.splice(..=2, None);
-  assert_eq!(tv2, tiny_vec![]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(0.., None);
-  assert_eq!(tv2, tiny_vec![]);
-  let mut tv2 = tv.clone();
-  tv2.splice(1.., None);
-  assert_eq!(tv2, tiny_vec![1]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(0..2, None);
-  assert_eq!(tv2, tiny_vec![3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(0..3, None);
-  assert_eq!(tv2, tiny_vec![]);
-  let mut tv2 = tv.clone();
-  tv2.splice(1..2, None);
-  assert_eq!(tv2, tiny_vec![1, 3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(1..3, None);
-  assert_eq!(tv2, tiny_vec![1]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(0..=1, None);
-  assert_eq!(tv2, tiny_vec![3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(0..=2, None);
-  assert_eq!(tv2, tiny_vec![]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(1..=1, None);
-  assert_eq!(tv2, tiny_vec![1, 3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(1..=2, None);
-  assert_eq!(tv2, tiny_vec![1]);
-
-  // splice adds the elements correctly
-  let mut tv2 = tv.clone();
-  tv2.splice(.., 4..=6);
-  assert_eq!(tv2, tiny_vec![4, 5, 6]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(..2, 4..=6);
-  assert_eq!(tv2, tiny_vec![4, 5, 6, 3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(..3, 4..=6);
-  assert_eq!(tv2, tiny_vec![4, 5, 6]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(..=1, 4..=6);
-  assert_eq!(tv2, tiny_vec![4, 5, 6, 3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(..=2, 4..=6);
-  assert_eq!(tv2, tiny_vec![4, 5, 6]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(0.., 4..=6);
-  assert_eq!(tv2, tiny_vec![4, 5, 6]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(1.., 4..=6);
-  assert_eq!(tv2, tiny_vec![1, 4, 5, 6]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(0..2, 4..=6);
-  assert_eq!(tv2, tiny_vec![4, 5, 6, 3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(0..3, 4..=6);
-  assert_eq!(tv2, tiny_vec![4, 5, 6]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(1..2, 4..=6);
-  assert_eq!(tv2, tiny_vec![1, 4, 5, 6, 3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(1..3, 4..=6);
-  assert_eq!(tv2, tiny_vec![1, 4, 5, 6]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(0..=1, 4..=6);
-  assert_eq!(tv2, tiny_vec![4, 5, 6, 3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(0..=2, 4..=6);
-  assert_eq!(tv2, tiny_vec![4, 5, 6]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(1..=1, 4..=6);
-  assert_eq!(tv2, tiny_vec![1, 4, 5, 6, 3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(1..=2, 4..=6);
-  assert_eq!(tv2, tiny_vec![1, 4, 5, 6]);
-
-  // splice adds the elements correctly when the replacement is smaller
-  let mut tv2 = tv.clone();
-  tv2.splice(.., Some(4));
-  assert_eq!(tv2, tiny_vec![4]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(..2, Some(4));
-  assert_eq!(tv2, tiny_vec![4, 3]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(1.., Some(4));
-  assert_eq!(tv2, tiny_vec![1, 4]);
-
-  let mut tv2 = tv.clone();
-  tv2.splice(1..=1, Some(4));
-  assert_eq!(tv2, tiny_vec![1, 4, 3]);
-}
-
-#[test]
-fn TinyVec_resize() {
-  let mut tv: TinyVec<[i32; 10]> = Default::default();
-  tv.resize(20, 5);
-  assert_eq!(&tv[..], &[5; 20]);
-}
-
-#[test]
-fn TinyVec_from_slice_impl() {
-  let bigger_slice: [u8; 11] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
-  let tinyvec: TinyVec<[u8; 10]> = TinyVec::Heap((&bigger_slice[..]).into());
-  assert_eq!(TinyVec::from(&bigger_slice[..]), tinyvec);
-
-  let smaller_slice: [u8; 5] = [0, 1, 2, 3, 4];
-  let tinyvec: TinyVec<[u8; 10]> = TinyVec::Inline(ArrayVec::from_array_len(
-    [0, 1, 2, 3, 4, 0, 0, 0, 0, 0],
-    5,
-  ));
-  assert_eq!(TinyVec::from(&smaller_slice[..]), tinyvec);
-
-  let same_size: [u8; 4] = [0, 1, 2, 3];
-  let tinyvec: TinyVec<[u8; 4]> =
-    TinyVec::Inline(ArrayVec::from_array_len(same_size, 4));
-  assert_eq!(TinyVec::from(&same_size[..]), tinyvec);
-}
-
-#[test]
-fn TinyVec_from_array() {
-  let array = [9, 8, 7, 6, 5, 4, 3, 2, 1];
-  let tv = TinyVec::from(array);
-  assert_eq!(&array, &tv[..]);
-}
-
-#[test]
-fn TinyVec_macro() {
-  let mut expected: TinyVec<[i32; 4]> = Default::default();
-  expected.push(1);
-  expected.push(2);
-  expected.push(3);
-
-  let actual = tiny_vec!(1, 2, 3);
-
-  assert_eq!(expected, actual);
-
-  assert_eq!(tiny_vec![0u8; 4], tiny_vec!(0u8, 0u8, 0u8, 0u8));
-  assert_eq!(tiny_vec![0u8; 4], tiny_vec!([u8; 4] => 0, 0, 0, 0));
-  assert_eq!(tiny_vec![0; 4], tiny_vec!(0, 0, 0, 0));
-  assert_eq!(tiny_vec![0; 4], tiny_vec!([u8; 4] => 0, 0, 0, 0));
-
-  let expected2 = tiny_vec![1.1; 3];
-  let actual2 = tiny_vec!([f32; 3] => 1.1, 1.1, 1.1);
-  assert_eq!(expected2, actual2);
-}
-
-#[test]
-fn TinyVec_macro_non_copy() {
-  // must use a variable here to avoid macro shenanigans
-  let s = String::new();
-  let _: TinyVec<[String; 10]> = tiny_vec!([String; 10] => s);
-}
-
-#[test]
-fn TinyVec_reserve() {
-  let mut tv: TinyVec<[i32; 4]> = Default::default();
-  assert_eq!(tv.capacity(), 4);
-  tv.extend_from_slice(&[1, 2]);
-  assert_eq!(tv.capacity(), 4);
-  tv.reserve(2);
-  assert_eq!(tv.capacity(), 4);
-  tv.reserve(4);
-  assert!(tv.capacity() >= 6);
-  tv.extend_from_slice(&[3, 4, 5, 6]);
-  tv.reserve(4);
-  assert!(tv.capacity() >= 10);
-}
-
-#[cfg(feature = "rustc_1_57")]
-#[test]
-fn TinyVec_try_reserve() {
-  let mut tv: TinyVec<[i32; 4]> = Default::default();
-  assert_eq!(tv.capacity(), 4);
-  tv.extend_from_slice(&[1, 2]);
-  assert_eq!(tv.capacity(), 4);
-  assert!(tv.try_reserve(2).is_ok());
-  assert_eq!(tv.capacity(), 4);
-  assert!(tv.try_reserve(4).is_ok());
-  assert!(tv.capacity() >= 6);
-  tv.extend_from_slice(&[3, 4, 5, 6]);
-  assert!(tv.try_reserve(4).is_ok());
-  assert!(tv.capacity() >= 10);
-}
-
-#[test]
-fn TinyVec_reserve_exact() {
-  let mut tv: TinyVec<[i32; 4]> = Default::default();
-  assert_eq!(tv.capacity(), 4);
-
-  tv.extend_from_slice(&[1, 2]);
-  assert_eq!(tv.capacity(), 4);
-  tv.reserve_exact(2);
-  assert_eq!(tv.capacity(), 4);
-  tv.reserve_exact(4);
-  assert!(tv.capacity() >= 6);
-  tv.extend_from_slice(&[3, 4, 5, 6]);
-  tv.reserve_exact(4);
-  assert!(tv.capacity() >= 10);
-}
-
-#[cfg(feature = "rustc_1_57")]
-#[test]
-fn TinyVec_try_reserve_exact() {
-  let mut tv: TinyVec<[i32; 4]> = Default::default();
-  assert_eq!(tv.capacity(), 4);
-
-  tv.extend_from_slice(&[1, 2]);
-  assert_eq!(tv.capacity(), 4);
-  assert!(tv.try_reserve_exact(2).is_ok());
-  assert_eq!(tv.capacity(), 4);
-  assert!(tv.try_reserve_exact(4).is_ok());
-  assert!(tv.capacity() >= 6);
-  tv.extend_from_slice(&[3, 4, 5, 6]);
-  assert!(tv.try_reserve_exact(4).is_ok());
-  assert!(tv.capacity() >= 10);
-}
-
-#[test]
-fn TinyVec_move_to_heap_and_shrink() {
-  let mut tv: TinyVec<[i32; 4]> = Default::default();
-  assert!(tv.is_inline());
-  tv.move_to_the_heap();
-  assert!(tv.is_heap());
-  assert_eq!(tv.capacity(), 0);
-
-  tv.push(1);
-  tv.shrink_to_fit();
-  assert!(tv.is_inline());
-  assert_eq!(tv.capacity(), 4);
-
-  tv.move_to_the_heap_and_reserve(3);
-  assert!(tv.is_heap());
-  assert_eq!(tv.capacity(), 4);
-  tv.extend(2..=4);
-  assert_eq!(tv.capacity(), 4);
-  assert_eq!(tv.as_slice(), [1, 2, 3, 4]);
-}
-
-#[cfg(feature = "rustc_1_57")]
-#[test]
-fn TinyVec_try_move_to_heap_and_shrink() {
-  let mut tv: TinyVec<[i32; 4]> = Default::default();
-  assert!(tv.is_inline());
-  assert!(tv.try_move_to_the_heap().is_ok());
-  assert!(tv.is_heap());
-  assert_eq!(tv.capacity(), 0);
-
-  assert!(tv.try_reserve_exact(1).is_ok());
-  assert_eq!(tv.capacity(), 1);
-  tv.push(1);
-  tv.shrink_to_fit();
-  assert!(tv.is_inline());
-  assert_eq!(tv.capacity(), 4);
-
-  assert!(tv.try_move_to_the_heap_and_reserve(3).is_ok());
-  assert!(tv.is_heap());
-  assert_eq!(tv.capacity(), 4);
-  tv.extend(2..=4);
-  assert_eq!(tv.capacity(), 4);
-  assert_eq!(tv.as_slice(), [1, 2, 3, 4]);
-}
-
-#[cfg(feature = "serde")]
-#[test]
-fn TinyVec_ser_de_empty() {
-  let tv: TinyVec<[i32; 0]> = tiny_vec![];
-
-  assert_tokens(&tv, &[Token::Seq { len: Some(0) }, Token::SeqEnd]);
-}
-
-#[cfg(feature = "serde")]
-#[test]
-fn TinyVec_ser_de() {
-  let tv: TinyVec<[i32; 4]> = tiny_vec![1, 2, 3, 4];
-
-  assert_tokens(
-    &tv,
-    &[
-      Token::Seq { len: Some(4) },
-      Token::I32(1),
-      Token::I32(2),
-      Token::I32(3),
-      Token::I32(4),
-      Token::SeqEnd,
-    ],
-  );
-}
-
-#[cfg(feature = "serde")]
-#[test]
-fn TinyVec_ser_de_heap() {
-  let mut tv: TinyVec<[i32; 4]> = tiny_vec![1, 2, 3, 4];
-  tv.move_to_the_heap();
-
-  assert_tokens(
-    &tv,
-    &[
-      Token::Seq { len: Some(4) },
-      Token::I32(1),
-      Token::I32(2),
-      Token::I32(3),
-      Token::I32(4),
-      Token::SeqEnd,
-    ],
-  );
-}
-
-#[test]
-fn TinyVec_pretty_debug() {
-  let tv: TinyVec<[i32; 6]> = tiny_vec![1, 2, 3];
-  let s = format!("{:#?}", tv);
-  let expected = format!("{:#?}", tv.as_slice());
-
-  assert_eq!(s, expected);
-}
-
-#[cfg(feature = "std")]
-#[test]
-fn TinyVec_std_io_write() {
-  use std::io::Write;
-  let mut tv: TinyVec<[u8; 3]> = TinyVec::new();
-
-  tv.write_all(b"foo").ok();
-  assert!(tv.is_inline());
-  assert_eq!(tv, tiny_vec![b'f', b'o', b'o']);
-
-  tv.write_all(b"bar").ok();
-  assert!(tv.is_heap());
-  assert_eq!(tv, tiny_vec![b'f', b'o', b'o', b'b', b'a', b'r']);
-}
diff --git a/vendor/tinyvec_macros/.cargo-checksum.json b/vendor/tinyvec_macros/.cargo-checksum.json
deleted file mode 100644
index 1a77eeb1..00000000
--- a/vendor/tinyvec_macros/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"104cb36d7a1c9f2b345883f74e8d49f6cdfab9b44d00516934cdc1476ed1cc44","LICENSE-APACHE.md":"4f44572785f35152c1fd2eadf565b7e079c0f300b4324f0af653419f9d76b735","LICENSE-MIT.md":"1dd8eca0f83669e75fa119e34fb9e1be9d16e3e9b6368962b8019db6e8ae5f7b","LICENSE-ZLIB.md":"41ace205715d9f19a3214218cc1c01d57c533e02cd0fef7c8e51a49a7fce5ac5","src/lib.rs":"8e79346da033b3441987b45e8d8530dd48441aa5d5addaeec5650ce7a0f64dc0"},"package":"1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"}
\ No newline at end of file
diff --git a/vendor/tinyvec_macros/Cargo.toml b/vendor/tinyvec_macros/Cargo.toml
deleted file mode 100644
index 61362866..00000000
--- a/vendor/tinyvec_macros/Cargo.toml
+++ /dev/null
@@ -1,19 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies.
-#
-# If you are reading this file be aware that the original Cargo.toml
-# will likely look very different (and much more reasonable).
-# See Cargo.toml.orig for the original contents.
-
-[package]
-edition = "2018"
-name = "tinyvec_macros"
-version = "0.1.1"
-authors = ["Soveu <marx.tomasz@gmail.com>"]
-description = "Some macros for tiny containers"
-license = "MIT OR Apache-2.0 OR Zlib"
-repository = "https://github.com/Soveu/tinyvec_macros"
diff --git a/vendor/tinyvec_macros/LICENSE-APACHE.md b/vendor/tinyvec_macros/LICENSE-APACHE.md
deleted file mode 100644
index 69a59b41..00000000
--- a/vendor/tinyvec_macros/LICENSE-APACHE.md
+++ /dev/null
@@ -1,202 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright 2020 Tomasz "Soveu" Marx
-
-   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.
-
diff --git a/vendor/tinyvec_macros/LICENSE-MIT.md b/vendor/tinyvec_macros/LICENSE-MIT.md
deleted file mode 100644
index 4a8554df..00000000
--- a/vendor/tinyvec_macros/LICENSE-MIT.md
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 Soveu
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/tinyvec_macros/LICENSE-ZLIB.md b/vendor/tinyvec_macros/LICENSE-ZLIB.md
deleted file mode 100644
index f43568b0..00000000
--- a/vendor/tinyvec_macros/LICENSE-ZLIB.md
+++ /dev/null
@@ -1,20 +0,0 @@
-zlib License
-
-(C) 2020 Tomasz "Soveu" Marx
-
-This software is provided 'as-is', without any express or implied
-warranty.  In no event will the authors be held liable for any damages
-arising from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute it
-freely, subject to the following restrictions:
-
-1. The origin of this software must not be misrepresented; you must not
-   claim that you wrote the original software. If you use this software
-   in a product, an acknowledgment in the product documentation would be
-   appreciated but is not required.
-2. Altered source versions must be plainly marked as such, and must not be
-   misrepresented as being the original software.
-3. This notice may not be removed or altered from any source distribution.
-
diff --git a/vendor/tinyvec_macros/src/lib.rs b/vendor/tinyvec_macros/src/lib.rs
deleted file mode 100644
index 3c15b19d..00000000
--- a/vendor/tinyvec_macros/src/lib.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-#![no_std]
-#![forbid(unsafe_code)]
-
-#[macro_export]
-macro_rules! impl_mirrored {
-    {
-    type Mirror = $tinyname:ident;
-    $(
-        $(#[$attr:meta])*
-        $v:vis fn $fname:ident ($seif:ident : $seifty:ty $(,$argname:ident : $argtype:ty)*) $(-> $ret:ty)? ;
-    )*
-    } => {
-        $(
-        $(#[$attr])*
-        #[inline(always)]
-        $v fn $fname($seif : $seifty, $($argname: $argtype),*) $(-> $ret)? {
-            match $seif {
-                $tinyname::Inline(i) => i.$fname($($argname),*),
-                $tinyname::Heap(h) => h.$fname($($argname),*),
-            }
-        }
-        )*
-    };
-}
-
diff --git a/vendor/unicode-bidi/.cargo-checksum.json b/vendor/unicode-bidi/.cargo-checksum.json
deleted file mode 100644
index 3628dc8f..00000000
--- a/vendor/unicode-bidi/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"AUTHORS":"1ff3a7c8519b29544bb28ba9b1e7502df0cb764051fb9a1172e60006aa2b8dcc","COPYRIGHT":"edb20b474f6cbd4f4db066b54a9e0f687d0009d309412a63431189b59b8e2a07","Cargo.toml":"9cd0be282dbaeacf5d1fdf07096114c7b3f16f275755f30a0d2e873ab1fbc150","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"81d3dc6d894a68894d982760b0a907f9dcbb0da179a8063ed9de1d2257518957","src/char_data/mod.rs":"0622df8ce4b4de60aea7e4787635d3187f79f7a3f9001e3d209f58fd07d03887","src/char_data/tables.rs":"50faf4eef73c831a38b735309ff3415e9f65992a0474ff5c055138f91c91ee16","src/data_source.rs":"36fa0785e51c549c1f72f09040cfe515b848d1b23fb30d469770a6b4b17b49df","src/deprecated.rs":"46c5a8bb1e6aa6193eec8269891d4cbbb5fd92214eb55eac7ea5e7ca193386aa","src/explicit.rs":"afa7599674fc8daad2939e5987ec5d937ed9fdbb78b8492b1e137db88d0a3af7","src/format_chars.rs":"678399fec3f4bfaf4093f38cfdb8956288313386dc3511dab9fb58164e8dc01b","src/implicit.rs":"e96484178d1bab97439b2c0cf4b3a8d6ee18459b9de64499aa07607aa304be0c","src/level.rs":"921fb7b8960f6cc703a51936075302db513927b8c5d5d760536b6ff70ddab0dd","src/lib.rs":"ca09c7dedc56ec139fa92fec26c3983346a3b6456992acdfbfe18b324174e0d8","src/prepare.rs":"c4aaad603f5c1be5c4364265aac7590335dc234288a4151e0f30bcefe532e14d","src/utf16.rs":"30d31c4d8c814315b48b56a2dfb755b8b442dde23f76429c6df1af754999fe3b"},"package":"08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"}
\ No newline at end of file
diff --git a/vendor/unicode-bidi/AUTHORS b/vendor/unicode-bidi/AUTHORS
deleted file mode 100644
index 81b0362e..00000000
--- a/vendor/unicode-bidi/AUTHORS
+++ /dev/null
@@ -1,4 +0,0 @@
-This software was written by the following people:
-
-Matt Brubeck <mbrubeck@limpet.net>
-Behnam Esfahbod <behnam@zwnj.org>
diff --git a/vendor/unicode-bidi/COPYRIGHT b/vendor/unicode-bidi/COPYRIGHT
deleted file mode 100644
index d84c4658..00000000
--- a/vendor/unicode-bidi/COPYRIGHT
+++ /dev/null
@@ -1,8 +0,0 @@
-This project is copyright 2015, The Servo Project Developers (given in the
-file AUTHORS).
-
-Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-http://www.apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
-http://opensource.org/licenses/MIT>, at your option. All files in the project
-carrying such notice may not be copied, modified, or distributed except
-according to those terms.
diff --git a/vendor/unicode-bidi/Cargo.toml b/vendor/unicode-bidi/Cargo.toml
deleted file mode 100644
index 29be4e5a..00000000
--- a/vendor/unicode-bidi/Cargo.toml
+++ /dev/null
@@ -1,83 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies.
-#
-# If you are reading this file be aware that the original Cargo.toml
-# will likely look very different (and much more reasonable).
-# See Cargo.toml.orig for the original contents.
-
-[package]
-edition = "2018"
-name = "unicode-bidi"
-version = "0.3.15"
-authors = ["The Servo Project Developers"]
-exclude = [
-    "benches/**",
-    "data/**",
-    "examples/**",
-    "tests/**",
-    "tools/**",
-]
-description = "Implementation of the Unicode Bidirectional Algorithm"
-documentation = "https://docs.rs/unicode-bidi/"
-readme = "README.md"
-keywords = [
-    "rtl",
-    "unicode",
-    "text",
-    "layout",
-    "bidi",
-]
-categories = [
-    "no-std",
-    "encoding",
-    "text-processing",
-]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/servo/unicode-bidi"
-
-[lib]
-name = "unicode_bidi"
-
-[[test]]
-name = "conformance_tests"
-path = "tests/conformance_tests.rs"
-required-features = ["hardcoded-data"]
-
-[dependencies.flame]
-version = "0.2"
-optional = true
-
-[dependencies.flamer]
-version = "0.4"
-optional = true
-
-[dependencies.serde]
-version = ">=0.8, <2.0"
-features = ["derive"]
-optional = true
-default-features = false
-
-[dev-dependencies.serde_test]
-version = ">=0.8, <2.0"
-
-[features]
-bench_it = []
-default = [
-    "std",
-    "hardcoded-data",
-]
-flame_it = [
-    "flame",
-    "flamer",
-]
-hardcoded-data = []
-std = []
-unstable = []
-with_serde = ["serde"]
-
-[badges.appveyor]
-repository = "servo/unicode-bidi"
diff --git a/vendor/unicode-bidi/README.md b/vendor/unicode-bidi/README.md
deleted file mode 100644
index 6c65abcc..00000000
--- a/vendor/unicode-bidi/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# unicode-bidi
-
-This crate implements the [Unicode Bidirectional Algorithm][tr9] for display
-of mixed right-to-left and left-to-right text.  It is written in safe Rust,
-compatible with the current stable release.
-
-[Documentation](https://docs.rs/unicode-bidi/)
-
-[![CI](https://github.com/servo/unicode-bidi/actions/workflows/main.yml/badge.svg)](https://github.com/servo/unicode-bidi/actions)
-[![AppVeyor](https://img.shields.io/appveyor/ci/servo/unicode-bidi/master.svg)](https://ci.appveyor.com/project/servo/unicode-bidi)
-
-[tr9]: https://www.unicode.org/reports/tr9/
diff --git a/vendor/unicode-bidi/src/char_data/mod.rs b/vendor/unicode-bidi/src/char_data/mod.rs
deleted file mode 100644
index 4edf5b8f..00000000
--- a/vendor/unicode-bidi/src/char_data/mod.rs
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright 2015 The Servo Project Developers. See the
-// COPYRIGHT file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! Accessor for `Bidi_Class` property from Unicode Character Database (UCD)
-
-mod tables;
-
-pub use self::tables::{BidiClass, UNICODE_VERSION};
-#[cfg(feature = "hardcoded-data")]
-use core::char;
-#[cfg(feature = "hardcoded-data")]
-use core::cmp::Ordering::{Equal, Greater, Less};
-
-#[cfg(feature = "hardcoded-data")]
-use self::tables::bidi_class_table;
-use crate::data_source::BidiMatchedOpeningBracket;
-use crate::BidiClass::*;
-#[cfg(feature = "hardcoded-data")]
-use crate::BidiDataSource;
-/// Hardcoded Bidi data that ships with the unicode-bidi crate.
-///
-/// This can be enabled with the default `hardcoded-data` Cargo feature.
-#[cfg(feature = "hardcoded-data")]
-pub struct HardcodedBidiData;
-
-#[cfg(feature = "hardcoded-data")]
-impl BidiDataSource for HardcodedBidiData {
-    fn bidi_class(&self, c: char) -> BidiClass {
-        bsearch_range_value_table(c, bidi_class_table)
-    }
-}
-
-/// Find the `BidiClass` of a single char.
-#[cfg(feature = "hardcoded-data")]
-pub fn bidi_class(c: char) -> BidiClass {
-    bsearch_range_value_table(c, bidi_class_table)
-}
-
-/// If this character is a bracket according to BidiBrackets.txt,
-/// return the corresponding *normalized* *opening bracket* of the pair,
-/// and whether or not it itself is an opening bracket.
-pub(crate) fn bidi_matched_opening_bracket(c: char) -> Option<BidiMatchedOpeningBracket> {
-    for pair in self::tables::bidi_pairs_table {
-        if pair.0 == c || pair.1 == c {
-            let skeleton = pair.2.unwrap_or(pair.0);
-            return Some(BidiMatchedOpeningBracket {
-                opening: skeleton,
-                is_open: pair.0 == c,
-            });
-        }
-    }
-    None
-}
-
-pub fn is_rtl(bidi_class: BidiClass) -> bool {
-    match bidi_class {
-        RLE | RLO | RLI => true,
-        _ => false,
-    }
-}
-
-#[cfg(feature = "hardcoded-data")]
-fn bsearch_range_value_table(c: char, r: &'static [(char, char, BidiClass)]) -> BidiClass {
-    match r.binary_search_by(|&(lo, hi, _)| {
-        if lo <= c && c <= hi {
-            Equal
-        } else if hi < c {
-            Less
-        } else {
-            Greater
-        }
-    }) {
-        Ok(idx) => {
-            let (_, _, cat) = r[idx];
-            cat
-        }
-        // UCD/extracted/DerivedBidiClass.txt: "All code points not explicitly listed
-        // for Bidi_Class have the value Left_To_Right (L)."
-        Err(_) => L,
-    }
-}
-
-#[cfg(all(test, feature = "hardcoded-data"))]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn test_ascii() {
-        assert_eq!(bidi_class('\u{0000}'), BN);
-        assert_eq!(bidi_class('\u{0040}'), ON);
-        assert_eq!(bidi_class('\u{0041}'), L);
-        assert_eq!(bidi_class('\u{0062}'), L);
-        assert_eq!(bidi_class('\u{007F}'), BN);
-    }
-
-    #[test]
-    fn test_bmp() {
-        // Hebrew
-        assert_eq!(bidi_class('\u{0590}'), R);
-        assert_eq!(bidi_class('\u{05D0}'), R);
-        assert_eq!(bidi_class('\u{05D1}'), R);
-        assert_eq!(bidi_class('\u{05FF}'), R);
-
-        // Arabic
-        assert_eq!(bidi_class('\u{0600}'), AN);
-        assert_eq!(bidi_class('\u{0627}'), AL);
-        assert_eq!(bidi_class('\u{07BF}'), AL);
-
-        // Default R + Arabic Extras
-        assert_eq!(bidi_class('\u{07C0}'), R);
-        assert_eq!(bidi_class('\u{085F}'), R);
-        assert_eq!(bidi_class('\u{0860}'), AL);
-        assert_eq!(bidi_class('\u{0870}'), AL);
-        assert_eq!(bidi_class('\u{089F}'), NSM);
-        assert_eq!(bidi_class('\u{08A0}'), AL);
-        assert_eq!(bidi_class('\u{089F}'), NSM);
-        assert_eq!(bidi_class('\u{08FF}'), NSM);
-
-        // Default ET
-        assert_eq!(bidi_class('\u{20A0}'), ET);
-        assert_eq!(bidi_class('\u{20CF}'), ET);
-
-        // Arabic Presentation Forms
-        assert_eq!(bidi_class('\u{FB1D}'), R);
-        assert_eq!(bidi_class('\u{FB4F}'), R);
-        assert_eq!(bidi_class('\u{FB50}'), AL);
-        assert_eq!(bidi_class('\u{FDCF}'), ON);
-        assert_eq!(bidi_class('\u{FDF0}'), AL);
-        assert_eq!(bidi_class('\u{FDFF}'), ON);
-        assert_eq!(bidi_class('\u{FE70}'), AL);
-        assert_eq!(bidi_class('\u{FEFE}'), AL);
-        assert_eq!(bidi_class('\u{FEFF}'), BN);
-
-        // noncharacters
-        assert_eq!(bidi_class('\u{FDD0}'), L);
-        assert_eq!(bidi_class('\u{FDD1}'), L);
-        assert_eq!(bidi_class('\u{FDEE}'), L);
-        assert_eq!(bidi_class('\u{FDEF}'), L);
-        assert_eq!(bidi_class('\u{FFFE}'), L);
-        assert_eq!(bidi_class('\u{FFFF}'), L);
-    }
-
-    #[test]
-    fn test_smp() {
-        // Default AL + R
-        assert_eq!(bidi_class('\u{10800}'), R);
-        assert_eq!(bidi_class('\u{10FFF}'), R);
-        assert_eq!(bidi_class('\u{1E800}'), R);
-        assert_eq!(bidi_class('\u{1EDFF}'), R);
-        assert_eq!(bidi_class('\u{1EE00}'), AL);
-        assert_eq!(bidi_class('\u{1EEFF}'), AL);
-        assert_eq!(bidi_class('\u{1EF00}'), R);
-        assert_eq!(bidi_class('\u{1EFFF}'), R);
-    }
-
-    #[test]
-    fn test_unassigned_planes() {
-        assert_eq!(bidi_class('\u{30000}'), L);
-        assert_eq!(bidi_class('\u{40000}'), L);
-        assert_eq!(bidi_class('\u{50000}'), L);
-        assert_eq!(bidi_class('\u{60000}'), L);
-        assert_eq!(bidi_class('\u{70000}'), L);
-        assert_eq!(bidi_class('\u{80000}'), L);
-        assert_eq!(bidi_class('\u{90000}'), L);
-        assert_eq!(bidi_class('\u{a0000}'), L);
-    }
-}
diff --git a/vendor/unicode-bidi/src/char_data/tables.rs b/vendor/unicode-bidi/src/char_data/tables.rs
deleted file mode 100644
index ecdcf496..00000000
--- a/vendor/unicode-bidi/src/char_data/tables.rs
+++ /dev/null
@@ -1,543 +0,0 @@
-// NOTE:
-// The following code was generated by "tools/generate.py". do not edit directly
-
-#![allow(missing_docs, non_upper_case_globals, non_snake_case)]
-#![cfg_attr(rustfmt, rustfmt_skip)]
-
-/// The [Unicode version](http://www.unicode.org/versions/) of data
-pub const UNICODE_VERSION: (u64, u64, u64) = (15, 0, 0);
-
-#[allow(non_camel_case_types)]
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-/// Represents values of the Unicode character property
-/// [`Bidi_Class`](http://www.unicode.org/reports/tr44/#Bidi_Class), also
-/// known as the *bidirectional character type*.
-///
-/// * <http://www.unicode.org/reports/tr9/#Bidirectional_Character_Types>
-/// * <http://www.unicode.org/reports/tr44/#Bidi_Class_Values>
-pub enum BidiClass {
-    AL,
-    AN,
-    B,
-    BN,
-    CS,
-    EN,
-    ES,
-    ET,
-    FSI,
-    L,
-    LRE,
-    LRI,
-    LRO,
-    NSM,
-    ON,
-    PDF,
-    PDI,
-    R,
-    RLE,
-    RLI,
-    RLO,
-    S,
-    WS,
-}
-
-#[cfg(feature = "hardcoded-data")]
-use self::BidiClass::*;
-
-#[cfg(feature = "hardcoded-data")]
-pub const bidi_class_table: &'static [(char, char, BidiClass)] = &[
-    ('\u{0}', '\u{8}', BN), ('\u{9}', '\u{9}', S), ('\u{a}', '\u{a}', B), ('\u{b}', '\u{b}', S),
-    ('\u{c}', '\u{c}', WS), ('\u{d}', '\u{d}', B), ('\u{e}', '\u{1b}', BN), ('\u{1c}', '\u{1e}', B),
-    ('\u{1f}', '\u{1f}', S), ('\u{20}', '\u{20}', WS), ('\u{21}', '\u{22}', ON), ('\u{23}',
-    '\u{25}', ET), ('\u{26}', '\u{2a}', ON), ('\u{2b}', '\u{2b}', ES), ('\u{2c}', '\u{2c}', CS),
-    ('\u{2d}', '\u{2d}', ES), ('\u{2e}', '\u{2f}', CS), ('\u{30}', '\u{39}', EN), ('\u{3a}',
-    '\u{3a}', CS), ('\u{3b}', '\u{40}', ON), ('\u{41}', '\u{5a}', L), ('\u{5b}', '\u{60}', ON),
-    ('\u{61}', '\u{7a}', L), ('\u{7b}', '\u{7e}', ON), ('\u{7f}', '\u{84}', BN), ('\u{85}',
-    '\u{85}', B), ('\u{86}', '\u{9f}', BN), ('\u{a0}', '\u{a0}', CS), ('\u{a1}', '\u{a1}', ON),
-    ('\u{a2}', '\u{a5}', ET), ('\u{a6}', '\u{a9}', ON), ('\u{aa}', '\u{aa}', L), ('\u{ab}',
-    '\u{ac}', ON), ('\u{ad}', '\u{ad}', BN), ('\u{ae}', '\u{af}', ON), ('\u{b0}', '\u{b1}', ET),
-    ('\u{b2}', '\u{b3}', EN), ('\u{b4}', '\u{b4}', ON), ('\u{b5}', '\u{b5}', L), ('\u{b6}',
-    '\u{b8}', ON), ('\u{b9}', '\u{b9}', EN), ('\u{ba}', '\u{ba}', L), ('\u{bb}', '\u{bf}', ON),
-    ('\u{c0}', '\u{d6}', L), ('\u{d7}', '\u{d7}', ON), ('\u{d8}', '\u{f6}', L), ('\u{f7}', '\u{f7}',
-    ON), ('\u{f8}', '\u{2b8}', L), ('\u{2b9}', '\u{2ba}', ON), ('\u{2bb}', '\u{2c1}', L),
-    ('\u{2c2}', '\u{2cf}', ON), ('\u{2d0}', '\u{2d1}', L), ('\u{2d2}', '\u{2df}', ON), ('\u{2e0}',
-    '\u{2e4}', L), ('\u{2e5}', '\u{2ed}', ON), ('\u{2ee}', '\u{2ee}', L), ('\u{2ef}', '\u{2ff}',
-    ON), ('\u{300}', '\u{36f}', NSM), ('\u{370}', '\u{373}', L), ('\u{374}', '\u{375}', ON),
-    ('\u{376}', '\u{377}', L), ('\u{37a}', '\u{37d}', L), ('\u{37e}', '\u{37e}', ON), ('\u{37f}',
-    '\u{37f}', L), ('\u{384}', '\u{385}', ON), ('\u{386}', '\u{386}', L), ('\u{387}', '\u{387}',
-    ON), ('\u{388}', '\u{38a}', L), ('\u{38c}', '\u{38c}', L), ('\u{38e}', '\u{3a1}', L),
-    ('\u{3a3}', '\u{3f5}', L), ('\u{3f6}', '\u{3f6}', ON), ('\u{3f7}', '\u{482}', L), ('\u{483}',
-    '\u{489}', NSM), ('\u{48a}', '\u{52f}', L), ('\u{531}', '\u{556}', L), ('\u{559}', '\u{589}',
-    L), ('\u{58a}', '\u{58a}', ON), ('\u{58d}', '\u{58e}', ON), ('\u{58f}', '\u{58f}', ET),
-    ('\u{590}', '\u{590}', R), ('\u{591}', '\u{5bd}', NSM), ('\u{5be}', '\u{5be}', R), ('\u{5bf}',
-    '\u{5bf}', NSM), ('\u{5c0}', '\u{5c0}', R), ('\u{5c1}', '\u{5c2}', NSM), ('\u{5c3}', '\u{5c3}',
-    R), ('\u{5c4}', '\u{5c5}', NSM), ('\u{5c6}', '\u{5c6}', R), ('\u{5c7}', '\u{5c7}', NSM),
-    ('\u{5c8}', '\u{5ff}', R), ('\u{600}', '\u{605}', AN), ('\u{606}', '\u{607}', ON), ('\u{608}',
-    '\u{608}', AL), ('\u{609}', '\u{60a}', ET), ('\u{60b}', '\u{60b}', AL), ('\u{60c}', '\u{60c}',
-    CS), ('\u{60d}', '\u{60d}', AL), ('\u{60e}', '\u{60f}', ON), ('\u{610}', '\u{61a}', NSM),
-    ('\u{61b}', '\u{64a}', AL), ('\u{64b}', '\u{65f}', NSM), ('\u{660}', '\u{669}', AN), ('\u{66a}',
-    '\u{66a}', ET), ('\u{66b}', '\u{66c}', AN), ('\u{66d}', '\u{66f}', AL), ('\u{670}', '\u{670}',
-    NSM), ('\u{671}', '\u{6d5}', AL), ('\u{6d6}', '\u{6dc}', NSM), ('\u{6dd}', '\u{6dd}', AN),
-    ('\u{6de}', '\u{6de}', ON), ('\u{6df}', '\u{6e4}', NSM), ('\u{6e5}', '\u{6e6}', AL), ('\u{6e7}',
-    '\u{6e8}', NSM), ('\u{6e9}', '\u{6e9}', ON), ('\u{6ea}', '\u{6ed}', NSM), ('\u{6ee}', '\u{6ef}',
-    AL), ('\u{6f0}', '\u{6f9}', EN), ('\u{6fa}', '\u{710}', AL), ('\u{711}', '\u{711}', NSM),
-    ('\u{712}', '\u{72f}', AL), ('\u{730}', '\u{74a}', NSM), ('\u{74b}', '\u{7a5}', AL), ('\u{7a6}',
-    '\u{7b0}', NSM), ('\u{7b1}', '\u{7bf}', AL), ('\u{7c0}', '\u{7ea}', R), ('\u{7eb}', '\u{7f3}',
-    NSM), ('\u{7f4}', '\u{7f5}', R), ('\u{7f6}', '\u{7f9}', ON), ('\u{7fa}', '\u{7fc}', R),
-    ('\u{7fd}', '\u{7fd}', NSM), ('\u{7fe}', '\u{815}', R), ('\u{816}', '\u{819}', NSM), ('\u{81a}',
-    '\u{81a}', R), ('\u{81b}', '\u{823}', NSM), ('\u{824}', '\u{824}', R), ('\u{825}', '\u{827}',
-    NSM), ('\u{828}', '\u{828}', R), ('\u{829}', '\u{82d}', NSM), ('\u{82e}', '\u{858}', R),
-    ('\u{859}', '\u{85b}', NSM), ('\u{85c}', '\u{85f}', R), ('\u{860}', '\u{86a}', AL), ('\u{86b}',
-    '\u{86f}', R), ('\u{870}', '\u{88e}', AL), ('\u{88f}', '\u{88f}', R), ('\u{890}', '\u{891}',
-    AN), ('\u{892}', '\u{897}', R), ('\u{898}', '\u{89f}', NSM), ('\u{8a0}', '\u{8c9}', AL),
-    ('\u{8ca}', '\u{8e1}', NSM), ('\u{8e2}', '\u{8e2}', AN), ('\u{8e3}', '\u{902}', NSM),
-    ('\u{903}', '\u{939}', L), ('\u{93a}', '\u{93a}', NSM), ('\u{93b}', '\u{93b}', L), ('\u{93c}',
-    '\u{93c}', NSM), ('\u{93d}', '\u{940}', L), ('\u{941}', '\u{948}', NSM), ('\u{949}', '\u{94c}',
-    L), ('\u{94d}', '\u{94d}', NSM), ('\u{94e}', '\u{950}', L), ('\u{951}', '\u{957}', NSM),
-    ('\u{958}', '\u{961}', L), ('\u{962}', '\u{963}', NSM), ('\u{964}', '\u{980}', L), ('\u{981}',
-    '\u{981}', NSM), ('\u{982}', '\u{983}', L), ('\u{985}', '\u{98c}', L), ('\u{98f}', '\u{990}',
-    L), ('\u{993}', '\u{9a8}', L), ('\u{9aa}', '\u{9b0}', L), ('\u{9b2}', '\u{9b2}', L), ('\u{9b6}',
-    '\u{9b9}', L), ('\u{9bc}', '\u{9bc}', NSM), ('\u{9bd}', '\u{9c0}', L), ('\u{9c1}', '\u{9c4}',
-    NSM), ('\u{9c7}', '\u{9c8}', L), ('\u{9cb}', '\u{9cc}', L), ('\u{9cd}', '\u{9cd}', NSM),
-    ('\u{9ce}', '\u{9ce}', L), ('\u{9d7}', '\u{9d7}', L), ('\u{9dc}', '\u{9dd}', L), ('\u{9df}',
-    '\u{9e1}', L), ('\u{9e2}', '\u{9e3}', NSM), ('\u{9e6}', '\u{9f1}', L), ('\u{9f2}', '\u{9f3}',
-    ET), ('\u{9f4}', '\u{9fa}', L), ('\u{9fb}', '\u{9fb}', ET), ('\u{9fc}', '\u{9fd}', L),
-    ('\u{9fe}', '\u{9fe}', NSM), ('\u{a01}', '\u{a02}', NSM), ('\u{a03}', '\u{a03}', L), ('\u{a05}',
-    '\u{a0a}', L), ('\u{a0f}', '\u{a10}', L), ('\u{a13}', '\u{a28}', L), ('\u{a2a}', '\u{a30}', L),
-    ('\u{a32}', '\u{a33}', L), ('\u{a35}', '\u{a36}', L), ('\u{a38}', '\u{a39}', L), ('\u{a3c}',
-    '\u{a3c}', NSM), ('\u{a3e}', '\u{a40}', L), ('\u{a41}', '\u{a42}', NSM), ('\u{a47}', '\u{a48}',
-    NSM), ('\u{a4b}', '\u{a4d}', NSM), ('\u{a51}', '\u{a51}', NSM), ('\u{a59}', '\u{a5c}', L),
-    ('\u{a5e}', '\u{a5e}', L), ('\u{a66}', '\u{a6f}', L), ('\u{a70}', '\u{a71}', NSM), ('\u{a72}',
-    '\u{a74}', L), ('\u{a75}', '\u{a75}', NSM), ('\u{a76}', '\u{a76}', L), ('\u{a81}', '\u{a82}',
-    NSM), ('\u{a83}', '\u{a83}', L), ('\u{a85}', '\u{a8d}', L), ('\u{a8f}', '\u{a91}', L),
-    ('\u{a93}', '\u{aa8}', L), ('\u{aaa}', '\u{ab0}', L), ('\u{ab2}', '\u{ab3}', L), ('\u{ab5}',
-    '\u{ab9}', L), ('\u{abc}', '\u{abc}', NSM), ('\u{abd}', '\u{ac0}', L), ('\u{ac1}', '\u{ac5}',
-    NSM), ('\u{ac7}', '\u{ac8}', NSM), ('\u{ac9}', '\u{ac9}', L), ('\u{acb}', '\u{acc}', L),
-    ('\u{acd}', '\u{acd}', NSM), ('\u{ad0}', '\u{ad0}', L), ('\u{ae0}', '\u{ae1}', L), ('\u{ae2}',
-    '\u{ae3}', NSM), ('\u{ae6}', '\u{af0}', L), ('\u{af1}', '\u{af1}', ET), ('\u{af9}', '\u{af9}',
-    L), ('\u{afa}', '\u{aff}', NSM), ('\u{b01}', '\u{b01}', NSM), ('\u{b02}', '\u{b03}', L),
-    ('\u{b05}', '\u{b0c}', L), ('\u{b0f}', '\u{b10}', L), ('\u{b13}', '\u{b28}', L), ('\u{b2a}',
-    '\u{b30}', L), ('\u{b32}', '\u{b33}', L), ('\u{b35}', '\u{b39}', L), ('\u{b3c}', '\u{b3c}',
-    NSM), ('\u{b3d}', '\u{b3e}', L), ('\u{b3f}', '\u{b3f}', NSM), ('\u{b40}', '\u{b40}', L),
-    ('\u{b41}', '\u{b44}', NSM), ('\u{b47}', '\u{b48}', L), ('\u{b4b}', '\u{b4c}', L), ('\u{b4d}',
-    '\u{b4d}', NSM), ('\u{b55}', '\u{b56}', NSM), ('\u{b57}', '\u{b57}', L), ('\u{b5c}', '\u{b5d}',
-    L), ('\u{b5f}', '\u{b61}', L), ('\u{b62}', '\u{b63}', NSM), ('\u{b66}', '\u{b77}', L),
-    ('\u{b82}', '\u{b82}', NSM), ('\u{b83}', '\u{b83}', L), ('\u{b85}', '\u{b8a}', L), ('\u{b8e}',
-    '\u{b90}', L), ('\u{b92}', '\u{b95}', L), ('\u{b99}', '\u{b9a}', L), ('\u{b9c}', '\u{b9c}', L),
-    ('\u{b9e}', '\u{b9f}', L), ('\u{ba3}', '\u{ba4}', L), ('\u{ba8}', '\u{baa}', L), ('\u{bae}',
-    '\u{bb9}', L), ('\u{bbe}', '\u{bbf}', L), ('\u{bc0}', '\u{bc0}', NSM), ('\u{bc1}', '\u{bc2}',
-    L), ('\u{bc6}', '\u{bc8}', L), ('\u{bca}', '\u{bcc}', L), ('\u{bcd}', '\u{bcd}', NSM),
-    ('\u{bd0}', '\u{bd0}', L), ('\u{bd7}', '\u{bd7}', L), ('\u{be6}', '\u{bf2}', L), ('\u{bf3}',
-    '\u{bf8}', ON), ('\u{bf9}', '\u{bf9}', ET), ('\u{bfa}', '\u{bfa}', ON), ('\u{c00}', '\u{c00}',
-    NSM), ('\u{c01}', '\u{c03}', L), ('\u{c04}', '\u{c04}', NSM), ('\u{c05}', '\u{c0c}', L),
-    ('\u{c0e}', '\u{c10}', L), ('\u{c12}', '\u{c28}', L), ('\u{c2a}', '\u{c39}', L), ('\u{c3c}',
-    '\u{c3c}', NSM), ('\u{c3d}', '\u{c3d}', L), ('\u{c3e}', '\u{c40}', NSM), ('\u{c41}', '\u{c44}',
-    L), ('\u{c46}', '\u{c48}', NSM), ('\u{c4a}', '\u{c4d}', NSM), ('\u{c55}', '\u{c56}', NSM),
-    ('\u{c58}', '\u{c5a}', L), ('\u{c5d}', '\u{c5d}', L), ('\u{c60}', '\u{c61}', L), ('\u{c62}',
-    '\u{c63}', NSM), ('\u{c66}', '\u{c6f}', L), ('\u{c77}', '\u{c77}', L), ('\u{c78}', '\u{c7e}',
-    ON), ('\u{c7f}', '\u{c80}', L), ('\u{c81}', '\u{c81}', NSM), ('\u{c82}', '\u{c8c}', L),
-    ('\u{c8e}', '\u{c90}', L), ('\u{c92}', '\u{ca8}', L), ('\u{caa}', '\u{cb3}', L), ('\u{cb5}',
-    '\u{cb9}', L), ('\u{cbc}', '\u{cbc}', NSM), ('\u{cbd}', '\u{cc4}', L), ('\u{cc6}', '\u{cc8}',
-    L), ('\u{cca}', '\u{ccb}', L), ('\u{ccc}', '\u{ccd}', NSM), ('\u{cd5}', '\u{cd6}', L),
-    ('\u{cdd}', '\u{cde}', L), ('\u{ce0}', '\u{ce1}', L), ('\u{ce2}', '\u{ce3}', NSM), ('\u{ce6}',
-    '\u{cef}', L), ('\u{cf1}', '\u{cf3}', L), ('\u{d00}', '\u{d01}', NSM), ('\u{d02}', '\u{d0c}',
-    L), ('\u{d0e}', '\u{d10}', L), ('\u{d12}', '\u{d3a}', L), ('\u{d3b}', '\u{d3c}', NSM),
-    ('\u{d3d}', '\u{d40}', L), ('\u{d41}', '\u{d44}', NSM), ('\u{d46}', '\u{d48}', L), ('\u{d4a}',
-    '\u{d4c}', L), ('\u{d4d}', '\u{d4d}', NSM), ('\u{d4e}', '\u{d4f}', L), ('\u{d54}', '\u{d61}',
-    L), ('\u{d62}', '\u{d63}', NSM), ('\u{d66}', '\u{d7f}', L), ('\u{d81}', '\u{d81}', NSM),
-    ('\u{d82}', '\u{d83}', L), ('\u{d85}', '\u{d96}', L), ('\u{d9a}', '\u{db1}', L), ('\u{db3}',
-    '\u{dbb}', L), ('\u{dbd}', '\u{dbd}', L), ('\u{dc0}', '\u{dc6}', L), ('\u{dca}', '\u{dca}',
-    NSM), ('\u{dcf}', '\u{dd1}', L), ('\u{dd2}', '\u{dd4}', NSM), ('\u{dd6}', '\u{dd6}', NSM),
-    ('\u{dd8}', '\u{ddf}', L), ('\u{de6}', '\u{def}', L), ('\u{df2}', '\u{df4}', L), ('\u{e01}',
-    '\u{e30}', L), ('\u{e31}', '\u{e31}', NSM), ('\u{e32}', '\u{e33}', L), ('\u{e34}', '\u{e3a}',
-    NSM), ('\u{e3f}', '\u{e3f}', ET), ('\u{e40}', '\u{e46}', L), ('\u{e47}', '\u{e4e}', NSM),
-    ('\u{e4f}', '\u{e5b}', L), ('\u{e81}', '\u{e82}', L), ('\u{e84}', '\u{e84}', L), ('\u{e86}',
-    '\u{e8a}', L), ('\u{e8c}', '\u{ea3}', L), ('\u{ea5}', '\u{ea5}', L), ('\u{ea7}', '\u{eb0}', L),
-    ('\u{eb1}', '\u{eb1}', NSM), ('\u{eb2}', '\u{eb3}', L), ('\u{eb4}', '\u{ebc}', NSM), ('\u{ebd}',
-    '\u{ebd}', L), ('\u{ec0}', '\u{ec4}', L), ('\u{ec6}', '\u{ec6}', L), ('\u{ec8}', '\u{ece}',
-    NSM), ('\u{ed0}', '\u{ed9}', L), ('\u{edc}', '\u{edf}', L), ('\u{f00}', '\u{f17}', L),
-    ('\u{f18}', '\u{f19}', NSM), ('\u{f1a}', '\u{f34}', L), ('\u{f35}', '\u{f35}', NSM), ('\u{f36}',
-    '\u{f36}', L), ('\u{f37}', '\u{f37}', NSM), ('\u{f38}', '\u{f38}', L), ('\u{f39}', '\u{f39}',
-    NSM), ('\u{f3a}', '\u{f3d}', ON), ('\u{f3e}', '\u{f47}', L), ('\u{f49}', '\u{f6c}', L),
-    ('\u{f71}', '\u{f7e}', NSM), ('\u{f7f}', '\u{f7f}', L), ('\u{f80}', '\u{f84}', NSM), ('\u{f85}',
-    '\u{f85}', L), ('\u{f86}', '\u{f87}', NSM), ('\u{f88}', '\u{f8c}', L), ('\u{f8d}', '\u{f97}',
-    NSM), ('\u{f99}', '\u{fbc}', NSM), ('\u{fbe}', '\u{fc5}', L), ('\u{fc6}', '\u{fc6}', NSM),
-    ('\u{fc7}', '\u{fcc}', L), ('\u{fce}', '\u{fda}', L), ('\u{1000}', '\u{102c}', L), ('\u{102d}',
-    '\u{1030}', NSM), ('\u{1031}', '\u{1031}', L), ('\u{1032}', '\u{1037}', NSM), ('\u{1038}',
-    '\u{1038}', L), ('\u{1039}', '\u{103a}', NSM), ('\u{103b}', '\u{103c}', L), ('\u{103d}',
-    '\u{103e}', NSM), ('\u{103f}', '\u{1057}', L), ('\u{1058}', '\u{1059}', NSM), ('\u{105a}',
-    '\u{105d}', L), ('\u{105e}', '\u{1060}', NSM), ('\u{1061}', '\u{1070}', L), ('\u{1071}',
-    '\u{1074}', NSM), ('\u{1075}', '\u{1081}', L), ('\u{1082}', '\u{1082}', NSM), ('\u{1083}',
-    '\u{1084}', L), ('\u{1085}', '\u{1086}', NSM), ('\u{1087}', '\u{108c}', L), ('\u{108d}',
-    '\u{108d}', NSM), ('\u{108e}', '\u{109c}', L), ('\u{109d}', '\u{109d}', NSM), ('\u{109e}',
-    '\u{10c5}', L), ('\u{10c7}', '\u{10c7}', L), ('\u{10cd}', '\u{10cd}', L), ('\u{10d0}',
-    '\u{1248}', L), ('\u{124a}', '\u{124d}', L), ('\u{1250}', '\u{1256}', L), ('\u{1258}',
-    '\u{1258}', L), ('\u{125a}', '\u{125d}', L), ('\u{1260}', '\u{1288}', L), ('\u{128a}',
-    '\u{128d}', L), ('\u{1290}', '\u{12b0}', L), ('\u{12b2}', '\u{12b5}', L), ('\u{12b8}',
-    '\u{12be}', L), ('\u{12c0}', '\u{12c0}', L), ('\u{12c2}', '\u{12c5}', L), ('\u{12c8}',
-    '\u{12d6}', L), ('\u{12d8}', '\u{1310}', L), ('\u{1312}', '\u{1315}', L), ('\u{1318}',
-    '\u{135a}', L), ('\u{135d}', '\u{135f}', NSM), ('\u{1360}', '\u{137c}', L), ('\u{1380}',
-    '\u{138f}', L), ('\u{1390}', '\u{1399}', ON), ('\u{13a0}', '\u{13f5}', L), ('\u{13f8}',
-    '\u{13fd}', L), ('\u{1400}', '\u{1400}', ON), ('\u{1401}', '\u{167f}', L), ('\u{1680}',
-    '\u{1680}', WS), ('\u{1681}', '\u{169a}', L), ('\u{169b}', '\u{169c}', ON), ('\u{16a0}',
-    '\u{16f8}', L), ('\u{1700}', '\u{1711}', L), ('\u{1712}', '\u{1714}', NSM), ('\u{1715}',
-    '\u{1715}', L), ('\u{171f}', '\u{1731}', L), ('\u{1732}', '\u{1733}', NSM), ('\u{1734}',
-    '\u{1736}', L), ('\u{1740}', '\u{1751}', L), ('\u{1752}', '\u{1753}', NSM), ('\u{1760}',
-    '\u{176c}', L), ('\u{176e}', '\u{1770}', L), ('\u{1772}', '\u{1773}', NSM), ('\u{1780}',
-    '\u{17b3}', L), ('\u{17b4}', '\u{17b5}', NSM), ('\u{17b6}', '\u{17b6}', L), ('\u{17b7}',
-    '\u{17bd}', NSM), ('\u{17be}', '\u{17c5}', L), ('\u{17c6}', '\u{17c6}', NSM), ('\u{17c7}',
-    '\u{17c8}', L), ('\u{17c9}', '\u{17d3}', NSM), ('\u{17d4}', '\u{17da}', L), ('\u{17db}',
-    '\u{17db}', ET), ('\u{17dc}', '\u{17dc}', L), ('\u{17dd}', '\u{17dd}', NSM), ('\u{17e0}',
-    '\u{17e9}', L), ('\u{17f0}', '\u{17f9}', ON), ('\u{1800}', '\u{180a}', ON), ('\u{180b}',
-    '\u{180d}', NSM), ('\u{180e}', '\u{180e}', BN), ('\u{180f}', '\u{180f}', NSM), ('\u{1810}',
-    '\u{1819}', L), ('\u{1820}', '\u{1878}', L), ('\u{1880}', '\u{1884}', L), ('\u{1885}',
-    '\u{1886}', NSM), ('\u{1887}', '\u{18a8}', L), ('\u{18a9}', '\u{18a9}', NSM), ('\u{18aa}',
-    '\u{18aa}', L), ('\u{18b0}', '\u{18f5}', L), ('\u{1900}', '\u{191e}', L), ('\u{1920}',
-    '\u{1922}', NSM), ('\u{1923}', '\u{1926}', L), ('\u{1927}', '\u{1928}', NSM), ('\u{1929}',
-    '\u{192b}', L), ('\u{1930}', '\u{1931}', L), ('\u{1932}', '\u{1932}', NSM), ('\u{1933}',
-    '\u{1938}', L), ('\u{1939}', '\u{193b}', NSM), ('\u{1940}', '\u{1940}', ON), ('\u{1944}',
-    '\u{1945}', ON), ('\u{1946}', '\u{196d}', L), ('\u{1970}', '\u{1974}', L), ('\u{1980}',
-    '\u{19ab}', L), ('\u{19b0}', '\u{19c9}', L), ('\u{19d0}', '\u{19da}', L), ('\u{19de}',
-    '\u{19ff}', ON), ('\u{1a00}', '\u{1a16}', L), ('\u{1a17}', '\u{1a18}', NSM), ('\u{1a19}',
-    '\u{1a1a}', L), ('\u{1a1b}', '\u{1a1b}', NSM), ('\u{1a1e}', '\u{1a55}', L), ('\u{1a56}',
-    '\u{1a56}', NSM), ('\u{1a57}', '\u{1a57}', L), ('\u{1a58}', '\u{1a5e}', NSM), ('\u{1a60}',
-    '\u{1a60}', NSM), ('\u{1a61}', '\u{1a61}', L), ('\u{1a62}', '\u{1a62}', NSM), ('\u{1a63}',
-    '\u{1a64}', L), ('\u{1a65}', '\u{1a6c}', NSM), ('\u{1a6d}', '\u{1a72}', L), ('\u{1a73}',
-    '\u{1a7c}', NSM), ('\u{1a7f}', '\u{1a7f}', NSM), ('\u{1a80}', '\u{1a89}', L), ('\u{1a90}',
-    '\u{1a99}', L), ('\u{1aa0}', '\u{1aad}', L), ('\u{1ab0}', '\u{1ace}', NSM), ('\u{1b00}',
-    '\u{1b03}', NSM), ('\u{1b04}', '\u{1b33}', L), ('\u{1b34}', '\u{1b34}', NSM), ('\u{1b35}',
-    '\u{1b35}', L), ('\u{1b36}', '\u{1b3a}', NSM), ('\u{1b3b}', '\u{1b3b}', L), ('\u{1b3c}',
-    '\u{1b3c}', NSM), ('\u{1b3d}', '\u{1b41}', L), ('\u{1b42}', '\u{1b42}', NSM), ('\u{1b43}',
-    '\u{1b4c}', L), ('\u{1b50}', '\u{1b6a}', L), ('\u{1b6b}', '\u{1b73}', NSM), ('\u{1b74}',
-    '\u{1b7e}', L), ('\u{1b80}', '\u{1b81}', NSM), ('\u{1b82}', '\u{1ba1}', L), ('\u{1ba2}',
-    '\u{1ba5}', NSM), ('\u{1ba6}', '\u{1ba7}', L), ('\u{1ba8}', '\u{1ba9}', NSM), ('\u{1baa}',
-    '\u{1baa}', L), ('\u{1bab}', '\u{1bad}', NSM), ('\u{1bae}', '\u{1be5}', L), ('\u{1be6}',
-    '\u{1be6}', NSM), ('\u{1be7}', '\u{1be7}', L), ('\u{1be8}', '\u{1be9}', NSM), ('\u{1bea}',
-    '\u{1bec}', L), ('\u{1bed}', '\u{1bed}', NSM), ('\u{1bee}', '\u{1bee}', L), ('\u{1bef}',
-    '\u{1bf1}', NSM), ('\u{1bf2}', '\u{1bf3}', L), ('\u{1bfc}', '\u{1c2b}', L), ('\u{1c2c}',
-    '\u{1c33}', NSM), ('\u{1c34}', '\u{1c35}', L), ('\u{1c36}', '\u{1c37}', NSM), ('\u{1c3b}',
-    '\u{1c49}', L), ('\u{1c4d}', '\u{1c88}', L), ('\u{1c90}', '\u{1cba}', L), ('\u{1cbd}',
-    '\u{1cc7}', L), ('\u{1cd0}', '\u{1cd2}', NSM), ('\u{1cd3}', '\u{1cd3}', L), ('\u{1cd4}',
-    '\u{1ce0}', NSM), ('\u{1ce1}', '\u{1ce1}', L), ('\u{1ce2}', '\u{1ce8}', NSM), ('\u{1ce9}',
-    '\u{1cec}', L), ('\u{1ced}', '\u{1ced}', NSM), ('\u{1cee}', '\u{1cf3}', L), ('\u{1cf4}',
-    '\u{1cf4}', NSM), ('\u{1cf5}', '\u{1cf7}', L), ('\u{1cf8}', '\u{1cf9}', NSM), ('\u{1cfa}',
-    '\u{1cfa}', L), ('\u{1d00}', '\u{1dbf}', L), ('\u{1dc0}', '\u{1dff}', NSM), ('\u{1e00}',
-    '\u{1f15}', L), ('\u{1f18}', '\u{1f1d}', L), ('\u{1f20}', '\u{1f45}', L), ('\u{1f48}',
-    '\u{1f4d}', L), ('\u{1f50}', '\u{1f57}', L), ('\u{1f59}', '\u{1f59}', L), ('\u{1f5b}',
-    '\u{1f5b}', L), ('\u{1f5d}', '\u{1f5d}', L), ('\u{1f5f}', '\u{1f7d}', L), ('\u{1f80}',
-    '\u{1fb4}', L), ('\u{1fb6}', '\u{1fbc}', L), ('\u{1fbd}', '\u{1fbd}', ON), ('\u{1fbe}',
-    '\u{1fbe}', L), ('\u{1fbf}', '\u{1fc1}', ON), ('\u{1fc2}', '\u{1fc4}', L), ('\u{1fc6}',
-    '\u{1fcc}', L), ('\u{1fcd}', '\u{1fcf}', ON), ('\u{1fd0}', '\u{1fd3}', L), ('\u{1fd6}',
-    '\u{1fdb}', L), ('\u{1fdd}', '\u{1fdf}', ON), ('\u{1fe0}', '\u{1fec}', L), ('\u{1fed}',
-    '\u{1fef}', ON), ('\u{1ff2}', '\u{1ff4}', L), ('\u{1ff6}', '\u{1ffc}', L), ('\u{1ffd}',
-    '\u{1ffe}', ON), ('\u{2000}', '\u{200a}', WS), ('\u{200b}', '\u{200d}', BN), ('\u{200e}',
-    '\u{200e}', L), ('\u{200f}', '\u{200f}', R), ('\u{2010}', '\u{2027}', ON), ('\u{2028}',
-    '\u{2028}', WS), ('\u{2029}', '\u{2029}', B), ('\u{202a}', '\u{202a}', LRE), ('\u{202b}',
-    '\u{202b}', RLE), ('\u{202c}', '\u{202c}', PDF), ('\u{202d}', '\u{202d}', LRO), ('\u{202e}',
-    '\u{202e}', RLO), ('\u{202f}', '\u{202f}', CS), ('\u{2030}', '\u{2034}', ET), ('\u{2035}',
-    '\u{2043}', ON), ('\u{2044}', '\u{2044}', CS), ('\u{2045}', '\u{205e}', ON), ('\u{205f}',
-    '\u{205f}', WS), ('\u{2060}', '\u{2064}', BN), ('\u{2066}', '\u{2066}', LRI), ('\u{2067}',
-    '\u{2067}', RLI), ('\u{2068}', '\u{2068}', FSI), ('\u{2069}', '\u{2069}', PDI), ('\u{206a}',
-    '\u{206f}', BN), ('\u{2070}', '\u{2070}', EN), ('\u{2071}', '\u{2071}', L), ('\u{2074}',
-    '\u{2079}', EN), ('\u{207a}', '\u{207b}', ES), ('\u{207c}', '\u{207e}', ON), ('\u{207f}',
-    '\u{207f}', L), ('\u{2080}', '\u{2089}', EN), ('\u{208a}', '\u{208b}', ES), ('\u{208c}',
-    '\u{208e}', ON), ('\u{2090}', '\u{209c}', L), ('\u{20a0}', '\u{20cf}', ET), ('\u{20d0}',
-    '\u{20f0}', NSM), ('\u{2100}', '\u{2101}', ON), ('\u{2102}', '\u{2102}', L), ('\u{2103}',
-    '\u{2106}', ON), ('\u{2107}', '\u{2107}', L), ('\u{2108}', '\u{2109}', ON), ('\u{210a}',
-    '\u{2113}', L), ('\u{2114}', '\u{2114}', ON), ('\u{2115}', '\u{2115}', L), ('\u{2116}',
-    '\u{2118}', ON), ('\u{2119}', '\u{211d}', L), ('\u{211e}', '\u{2123}', ON), ('\u{2124}',
-    '\u{2124}', L), ('\u{2125}', '\u{2125}', ON), ('\u{2126}', '\u{2126}', L), ('\u{2127}',
-    '\u{2127}', ON), ('\u{2128}', '\u{2128}', L), ('\u{2129}', '\u{2129}', ON), ('\u{212a}',
-    '\u{212d}', L), ('\u{212e}', '\u{212e}', ET), ('\u{212f}', '\u{2139}', L), ('\u{213a}',
-    '\u{213b}', ON), ('\u{213c}', '\u{213f}', L), ('\u{2140}', '\u{2144}', ON), ('\u{2145}',
-    '\u{2149}', L), ('\u{214a}', '\u{214d}', ON), ('\u{214e}', '\u{214f}', L), ('\u{2150}',
-    '\u{215f}', ON), ('\u{2160}', '\u{2188}', L), ('\u{2189}', '\u{218b}', ON), ('\u{2190}',
-    '\u{2211}', ON), ('\u{2212}', '\u{2212}', ES), ('\u{2213}', '\u{2213}', ET), ('\u{2214}',
-    '\u{2335}', ON), ('\u{2336}', '\u{237a}', L), ('\u{237b}', '\u{2394}', ON), ('\u{2395}',
-    '\u{2395}', L), ('\u{2396}', '\u{2426}', ON), ('\u{2440}', '\u{244a}', ON), ('\u{2460}',
-    '\u{2487}', ON), ('\u{2488}', '\u{249b}', EN), ('\u{249c}', '\u{24e9}', L), ('\u{24ea}',
-    '\u{26ab}', ON), ('\u{26ac}', '\u{26ac}', L), ('\u{26ad}', '\u{27ff}', ON), ('\u{2800}',
-    '\u{28ff}', L), ('\u{2900}', '\u{2b73}', ON), ('\u{2b76}', '\u{2b95}', ON), ('\u{2b97}',
-    '\u{2bff}', ON), ('\u{2c00}', '\u{2ce4}', L), ('\u{2ce5}', '\u{2cea}', ON), ('\u{2ceb}',
-    '\u{2cee}', L), ('\u{2cef}', '\u{2cf1}', NSM), ('\u{2cf2}', '\u{2cf3}', L), ('\u{2cf9}',
-    '\u{2cff}', ON), ('\u{2d00}', '\u{2d25}', L), ('\u{2d27}', '\u{2d27}', L), ('\u{2d2d}',
-    '\u{2d2d}', L), ('\u{2d30}', '\u{2d67}', L), ('\u{2d6f}', '\u{2d70}', L), ('\u{2d7f}',
-    '\u{2d7f}', NSM), ('\u{2d80}', '\u{2d96}', L), ('\u{2da0}', '\u{2da6}', L), ('\u{2da8}',
-    '\u{2dae}', L), ('\u{2db0}', '\u{2db6}', L), ('\u{2db8}', '\u{2dbe}', L), ('\u{2dc0}',
-    '\u{2dc6}', L), ('\u{2dc8}', '\u{2dce}', L), ('\u{2dd0}', '\u{2dd6}', L), ('\u{2dd8}',
-    '\u{2dde}', L), ('\u{2de0}', '\u{2dff}', NSM), ('\u{2e00}', '\u{2e5d}', ON), ('\u{2e80}',
-    '\u{2e99}', ON), ('\u{2e9b}', '\u{2ef3}', ON), ('\u{2f00}', '\u{2fd5}', ON), ('\u{2ff0}',
-    '\u{2ffb}', ON), ('\u{3000}', '\u{3000}', WS), ('\u{3001}', '\u{3004}', ON), ('\u{3005}',
-    '\u{3007}', L), ('\u{3008}', '\u{3020}', ON), ('\u{3021}', '\u{3029}', L), ('\u{302a}',
-    '\u{302d}', NSM), ('\u{302e}', '\u{302f}', L), ('\u{3030}', '\u{3030}', ON), ('\u{3031}',
-    '\u{3035}', L), ('\u{3036}', '\u{3037}', ON), ('\u{3038}', '\u{303c}', L), ('\u{303d}',
-    '\u{303f}', ON), ('\u{3041}', '\u{3096}', L), ('\u{3099}', '\u{309a}', NSM), ('\u{309b}',
-    '\u{309c}', ON), ('\u{309d}', '\u{309f}', L), ('\u{30a0}', '\u{30a0}', ON), ('\u{30a1}',
-    '\u{30fa}', L), ('\u{30fb}', '\u{30fb}', ON), ('\u{30fc}', '\u{30ff}', L), ('\u{3105}',
-    '\u{312f}', L), ('\u{3131}', '\u{318e}', L), ('\u{3190}', '\u{31bf}', L), ('\u{31c0}',
-    '\u{31e3}', ON), ('\u{31f0}', '\u{321c}', L), ('\u{321d}', '\u{321e}', ON), ('\u{3220}',
-    '\u{324f}', L), ('\u{3250}', '\u{325f}', ON), ('\u{3260}', '\u{327b}', L), ('\u{327c}',
-    '\u{327e}', ON), ('\u{327f}', '\u{32b0}', L), ('\u{32b1}', '\u{32bf}', ON), ('\u{32c0}',
-    '\u{32cb}', L), ('\u{32cc}', '\u{32cf}', ON), ('\u{32d0}', '\u{3376}', L), ('\u{3377}',
-    '\u{337a}', ON), ('\u{337b}', '\u{33dd}', L), ('\u{33de}', '\u{33df}', ON), ('\u{33e0}',
-    '\u{33fe}', L), ('\u{33ff}', '\u{33ff}', ON), ('\u{3400}', '\u{4dbf}', L), ('\u{4dc0}',
-    '\u{4dff}', ON), ('\u{4e00}', '\u{a48c}', L), ('\u{a490}', '\u{a4c6}', ON), ('\u{a4d0}',
-    '\u{a60c}', L), ('\u{a60d}', '\u{a60f}', ON), ('\u{a610}', '\u{a62b}', L), ('\u{a640}',
-    '\u{a66e}', L), ('\u{a66f}', '\u{a672}', NSM), ('\u{a673}', '\u{a673}', ON), ('\u{a674}',
-    '\u{a67d}', NSM), ('\u{a67e}', '\u{a67f}', ON), ('\u{a680}', '\u{a69d}', L), ('\u{a69e}',
-    '\u{a69f}', NSM), ('\u{a6a0}', '\u{a6ef}', L), ('\u{a6f0}', '\u{a6f1}', NSM), ('\u{a6f2}',
-    '\u{a6f7}', L), ('\u{a700}', '\u{a721}', ON), ('\u{a722}', '\u{a787}', L), ('\u{a788}',
-    '\u{a788}', ON), ('\u{a789}', '\u{a7ca}', L), ('\u{a7d0}', '\u{a7d1}', L), ('\u{a7d3}',
-    '\u{a7d3}', L), ('\u{a7d5}', '\u{a7d9}', L), ('\u{a7f2}', '\u{a801}', L), ('\u{a802}',
-    '\u{a802}', NSM), ('\u{a803}', '\u{a805}', L), ('\u{a806}', '\u{a806}', NSM), ('\u{a807}',
-    '\u{a80a}', L), ('\u{a80b}', '\u{a80b}', NSM), ('\u{a80c}', '\u{a824}', L), ('\u{a825}',
-    '\u{a826}', NSM), ('\u{a827}', '\u{a827}', L), ('\u{a828}', '\u{a82b}', ON), ('\u{a82c}',
-    '\u{a82c}', NSM), ('\u{a830}', '\u{a837}', L), ('\u{a838}', '\u{a839}', ET), ('\u{a840}',
-    '\u{a873}', L), ('\u{a874}', '\u{a877}', ON), ('\u{a880}', '\u{a8c3}', L), ('\u{a8c4}',
-    '\u{a8c5}', NSM), ('\u{a8ce}', '\u{a8d9}', L), ('\u{a8e0}', '\u{a8f1}', NSM), ('\u{a8f2}',
-    '\u{a8fe}', L), ('\u{a8ff}', '\u{a8ff}', NSM), ('\u{a900}', '\u{a925}', L), ('\u{a926}',
-    '\u{a92d}', NSM), ('\u{a92e}', '\u{a946}', L), ('\u{a947}', '\u{a951}', NSM), ('\u{a952}',
-    '\u{a953}', L), ('\u{a95f}', '\u{a97c}', L), ('\u{a980}', '\u{a982}', NSM), ('\u{a983}',
-    '\u{a9b2}', L), ('\u{a9b3}', '\u{a9b3}', NSM), ('\u{a9b4}', '\u{a9b5}', L), ('\u{a9b6}',
-    '\u{a9b9}', NSM), ('\u{a9ba}', '\u{a9bb}', L), ('\u{a9bc}', '\u{a9bd}', NSM), ('\u{a9be}',
-    '\u{a9cd}', L), ('\u{a9cf}', '\u{a9d9}', L), ('\u{a9de}', '\u{a9e4}', L), ('\u{a9e5}',
-    '\u{a9e5}', NSM), ('\u{a9e6}', '\u{a9fe}', L), ('\u{aa00}', '\u{aa28}', L), ('\u{aa29}',
-    '\u{aa2e}', NSM), ('\u{aa2f}', '\u{aa30}', L), ('\u{aa31}', '\u{aa32}', NSM), ('\u{aa33}',
-    '\u{aa34}', L), ('\u{aa35}', '\u{aa36}', NSM), ('\u{aa40}', '\u{aa42}', L), ('\u{aa43}',
-    '\u{aa43}', NSM), ('\u{aa44}', '\u{aa4b}', L), ('\u{aa4c}', '\u{aa4c}', NSM), ('\u{aa4d}',
-    '\u{aa4d}', L), ('\u{aa50}', '\u{aa59}', L), ('\u{aa5c}', '\u{aa7b}', L), ('\u{aa7c}',
-    '\u{aa7c}', NSM), ('\u{aa7d}', '\u{aaaf}', L), ('\u{aab0}', '\u{aab0}', NSM), ('\u{aab1}',
-    '\u{aab1}', L), ('\u{aab2}', '\u{aab4}', NSM), ('\u{aab5}', '\u{aab6}', L), ('\u{aab7}',
-    '\u{aab8}', NSM), ('\u{aab9}', '\u{aabd}', L), ('\u{aabe}', '\u{aabf}', NSM), ('\u{aac0}',
-    '\u{aac0}', L), ('\u{aac1}', '\u{aac1}', NSM), ('\u{aac2}', '\u{aac2}', L), ('\u{aadb}',
-    '\u{aaeb}', L), ('\u{aaec}', '\u{aaed}', NSM), ('\u{aaee}', '\u{aaf5}', L), ('\u{aaf6}',
-    '\u{aaf6}', NSM), ('\u{ab01}', '\u{ab06}', L), ('\u{ab09}', '\u{ab0e}', L), ('\u{ab11}',
-    '\u{ab16}', L), ('\u{ab20}', '\u{ab26}', L), ('\u{ab28}', '\u{ab2e}', L), ('\u{ab30}',
-    '\u{ab69}', L), ('\u{ab6a}', '\u{ab6b}', ON), ('\u{ab70}', '\u{abe4}', L), ('\u{abe5}',
-    '\u{abe5}', NSM), ('\u{abe6}', '\u{abe7}', L), ('\u{abe8}', '\u{abe8}', NSM), ('\u{abe9}',
-    '\u{abec}', L), ('\u{abed}', '\u{abed}', NSM), ('\u{abf0}', '\u{abf9}', L), ('\u{ac00}',
-    '\u{d7a3}', L), ('\u{d7b0}', '\u{d7c6}', L), ('\u{d7cb}', '\u{d7fb}', L), ('\u{e000}',
-    '\u{fa6d}', L), ('\u{fa70}', '\u{fad9}', L), ('\u{fb00}', '\u{fb06}', L), ('\u{fb13}',
-    '\u{fb17}', L), ('\u{fb1d}', '\u{fb1d}', R), ('\u{fb1e}', '\u{fb1e}', NSM), ('\u{fb1f}',
-    '\u{fb28}', R), ('\u{fb29}', '\u{fb29}', ES), ('\u{fb2a}', '\u{fb4f}', R), ('\u{fb50}',
-    '\u{fd3d}', AL), ('\u{fd3e}', '\u{fd4f}', ON), ('\u{fd50}', '\u{fdce}', AL), ('\u{fdcf}',
-    '\u{fdcf}', ON), ('\u{fdf0}', '\u{fdfc}', AL), ('\u{fdfd}', '\u{fdff}', ON), ('\u{fe00}',
-    '\u{fe0f}', NSM), ('\u{fe10}', '\u{fe19}', ON), ('\u{fe20}', '\u{fe2f}', NSM), ('\u{fe30}',
-    '\u{fe4f}', ON), ('\u{fe50}', '\u{fe50}', CS), ('\u{fe51}', '\u{fe51}', ON), ('\u{fe52}',
-    '\u{fe52}', CS), ('\u{fe54}', '\u{fe54}', ON), ('\u{fe55}', '\u{fe55}', CS), ('\u{fe56}',
-    '\u{fe5e}', ON), ('\u{fe5f}', '\u{fe5f}', ET), ('\u{fe60}', '\u{fe61}', ON), ('\u{fe62}',
-    '\u{fe63}', ES), ('\u{fe64}', '\u{fe66}', ON), ('\u{fe68}', '\u{fe68}', ON), ('\u{fe69}',
-    '\u{fe6a}', ET), ('\u{fe6b}', '\u{fe6b}', ON), ('\u{fe70}', '\u{fefe}', AL), ('\u{feff}',
-    '\u{feff}', BN), ('\u{ff01}', '\u{ff02}', ON), ('\u{ff03}', '\u{ff05}', ET), ('\u{ff06}',
-    '\u{ff0a}', ON), ('\u{ff0b}', '\u{ff0b}', ES), ('\u{ff0c}', '\u{ff0c}', CS), ('\u{ff0d}',
-    '\u{ff0d}', ES), ('\u{ff0e}', '\u{ff0f}', CS), ('\u{ff10}', '\u{ff19}', EN), ('\u{ff1a}',
-    '\u{ff1a}', CS), ('\u{ff1b}', '\u{ff20}', ON), ('\u{ff21}', '\u{ff3a}', L), ('\u{ff3b}',
-    '\u{ff40}', ON), ('\u{ff41}', '\u{ff5a}', L), ('\u{ff5b}', '\u{ff65}', ON), ('\u{ff66}',
-    '\u{ffbe}', L), ('\u{ffc2}', '\u{ffc7}', L), ('\u{ffca}', '\u{ffcf}', L), ('\u{ffd2}',
-    '\u{ffd7}', L), ('\u{ffda}', '\u{ffdc}', L), ('\u{ffe0}', '\u{ffe1}', ET), ('\u{ffe2}',
-    '\u{ffe4}', ON), ('\u{ffe5}', '\u{ffe6}', ET), ('\u{ffe8}', '\u{ffee}', ON), ('\u{fff9}',
-    '\u{fffd}', ON), ('\u{10000}', '\u{1000b}', L), ('\u{1000d}', '\u{10026}', L), ('\u{10028}',
-    '\u{1003a}', L), ('\u{1003c}', '\u{1003d}', L), ('\u{1003f}', '\u{1004d}', L), ('\u{10050}',
-    '\u{1005d}', L), ('\u{10080}', '\u{100fa}', L), ('\u{10100}', '\u{10100}', L), ('\u{10101}',
-    '\u{10101}', ON), ('\u{10102}', '\u{10102}', L), ('\u{10107}', '\u{10133}', L), ('\u{10137}',
-    '\u{1013f}', L), ('\u{10140}', '\u{1018c}', ON), ('\u{1018d}', '\u{1018e}', L), ('\u{10190}',
-    '\u{1019c}', ON), ('\u{101a0}', '\u{101a0}', ON), ('\u{101d0}', '\u{101fc}', L), ('\u{101fd}',
-    '\u{101fd}', NSM), ('\u{10280}', '\u{1029c}', L), ('\u{102a0}', '\u{102d0}', L), ('\u{102e0}',
-    '\u{102e0}', NSM), ('\u{102e1}', '\u{102fb}', EN), ('\u{10300}', '\u{10323}', L), ('\u{1032d}',
-    '\u{1034a}', L), ('\u{10350}', '\u{10375}', L), ('\u{10376}', '\u{1037a}', NSM), ('\u{10380}',
-    '\u{1039d}', L), ('\u{1039f}', '\u{103c3}', L), ('\u{103c8}', '\u{103d5}', L), ('\u{10400}',
-    '\u{1049d}', L), ('\u{104a0}', '\u{104a9}', L), ('\u{104b0}', '\u{104d3}', L), ('\u{104d8}',
-    '\u{104fb}', L), ('\u{10500}', '\u{10527}', L), ('\u{10530}', '\u{10563}', L), ('\u{1056f}',
-    '\u{1057a}', L), ('\u{1057c}', '\u{1058a}', L), ('\u{1058c}', '\u{10592}', L), ('\u{10594}',
-    '\u{10595}', L), ('\u{10597}', '\u{105a1}', L), ('\u{105a3}', '\u{105b1}', L), ('\u{105b3}',
-    '\u{105b9}', L), ('\u{105bb}', '\u{105bc}', L), ('\u{10600}', '\u{10736}', L), ('\u{10740}',
-    '\u{10755}', L), ('\u{10760}', '\u{10767}', L), ('\u{10780}', '\u{10785}', L), ('\u{10787}',
-    '\u{107b0}', L), ('\u{107b2}', '\u{107ba}', L), ('\u{10800}', '\u{1091e}', R), ('\u{1091f}',
-    '\u{1091f}', ON), ('\u{10920}', '\u{10a00}', R), ('\u{10a01}', '\u{10a03}', NSM), ('\u{10a04}',
-    '\u{10a04}', R), ('\u{10a05}', '\u{10a06}', NSM), ('\u{10a07}', '\u{10a0b}', R), ('\u{10a0c}',
-    '\u{10a0f}', NSM), ('\u{10a10}', '\u{10a37}', R), ('\u{10a38}', '\u{10a3a}', NSM), ('\u{10a3b}',
-    '\u{10a3e}', R), ('\u{10a3f}', '\u{10a3f}', NSM), ('\u{10a40}', '\u{10ae4}', R), ('\u{10ae5}',
-    '\u{10ae6}', NSM), ('\u{10ae7}', '\u{10b38}', R), ('\u{10b39}', '\u{10b3f}', ON), ('\u{10b40}',
-    '\u{10cff}', R), ('\u{10d00}', '\u{10d23}', AL), ('\u{10d24}', '\u{10d27}', NSM), ('\u{10d28}',
-    '\u{10d2f}', R), ('\u{10d30}', '\u{10d39}', AN), ('\u{10d3a}', '\u{10e5f}', R), ('\u{10e60}',
-    '\u{10e7e}', AN), ('\u{10e7f}', '\u{10eaa}', R), ('\u{10eab}', '\u{10eac}', NSM), ('\u{10ead}',
-    '\u{10efc}', R), ('\u{10efd}', '\u{10eff}', NSM), ('\u{10f00}', '\u{10f2f}', R), ('\u{10f30}',
-    '\u{10f45}', AL), ('\u{10f46}', '\u{10f50}', NSM), ('\u{10f51}', '\u{10f59}', AL), ('\u{10f5a}',
-    '\u{10f81}', R), ('\u{10f82}', '\u{10f85}', NSM), ('\u{10f86}', '\u{10fff}', R), ('\u{11000}',
-    '\u{11000}', L), ('\u{11001}', '\u{11001}', NSM), ('\u{11002}', '\u{11037}', L), ('\u{11038}',
-    '\u{11046}', NSM), ('\u{11047}', '\u{1104d}', L), ('\u{11052}', '\u{11065}', ON), ('\u{11066}',
-    '\u{1106f}', L), ('\u{11070}', '\u{11070}', NSM), ('\u{11071}', '\u{11072}', L), ('\u{11073}',
-    '\u{11074}', NSM), ('\u{11075}', '\u{11075}', L), ('\u{1107f}', '\u{11081}', NSM), ('\u{11082}',
-    '\u{110b2}', L), ('\u{110b3}', '\u{110b6}', NSM), ('\u{110b7}', '\u{110b8}', L), ('\u{110b9}',
-    '\u{110ba}', NSM), ('\u{110bb}', '\u{110c1}', L), ('\u{110c2}', '\u{110c2}', NSM), ('\u{110cd}',
-    '\u{110cd}', L), ('\u{110d0}', '\u{110e8}', L), ('\u{110f0}', '\u{110f9}', L), ('\u{11100}',
-    '\u{11102}', NSM), ('\u{11103}', '\u{11126}', L), ('\u{11127}', '\u{1112b}', NSM), ('\u{1112c}',
-    '\u{1112c}', L), ('\u{1112d}', '\u{11134}', NSM), ('\u{11136}', '\u{11147}', L), ('\u{11150}',
-    '\u{11172}', L), ('\u{11173}', '\u{11173}', NSM), ('\u{11174}', '\u{11176}', L), ('\u{11180}',
-    '\u{11181}', NSM), ('\u{11182}', '\u{111b5}', L), ('\u{111b6}', '\u{111be}', NSM), ('\u{111bf}',
-    '\u{111c8}', L), ('\u{111c9}', '\u{111cc}', NSM), ('\u{111cd}', '\u{111ce}', L), ('\u{111cf}',
-    '\u{111cf}', NSM), ('\u{111d0}', '\u{111df}', L), ('\u{111e1}', '\u{111f4}', L), ('\u{11200}',
-    '\u{11211}', L), ('\u{11213}', '\u{1122e}', L), ('\u{1122f}', '\u{11231}', NSM), ('\u{11232}',
-    '\u{11233}', L), ('\u{11234}', '\u{11234}', NSM), ('\u{11235}', '\u{11235}', L), ('\u{11236}',
-    '\u{11237}', NSM), ('\u{11238}', '\u{1123d}', L), ('\u{1123e}', '\u{1123e}', NSM), ('\u{1123f}',
-    '\u{11240}', L), ('\u{11241}', '\u{11241}', NSM), ('\u{11280}', '\u{11286}', L), ('\u{11288}',
-    '\u{11288}', L), ('\u{1128a}', '\u{1128d}', L), ('\u{1128f}', '\u{1129d}', L), ('\u{1129f}',
-    '\u{112a9}', L), ('\u{112b0}', '\u{112de}', L), ('\u{112df}', '\u{112df}', NSM), ('\u{112e0}',
-    '\u{112e2}', L), ('\u{112e3}', '\u{112ea}', NSM), ('\u{112f0}', '\u{112f9}', L), ('\u{11300}',
-    '\u{11301}', NSM), ('\u{11302}', '\u{11303}', L), ('\u{11305}', '\u{1130c}', L), ('\u{1130f}',
-    '\u{11310}', L), ('\u{11313}', '\u{11328}', L), ('\u{1132a}', '\u{11330}', L), ('\u{11332}',
-    '\u{11333}', L), ('\u{11335}', '\u{11339}', L), ('\u{1133b}', '\u{1133c}', NSM), ('\u{1133d}',
-    '\u{1133f}', L), ('\u{11340}', '\u{11340}', NSM), ('\u{11341}', '\u{11344}', L), ('\u{11347}',
-    '\u{11348}', L), ('\u{1134b}', '\u{1134d}', L), ('\u{11350}', '\u{11350}', L), ('\u{11357}',
-    '\u{11357}', L), ('\u{1135d}', '\u{11363}', L), ('\u{11366}', '\u{1136c}', NSM), ('\u{11370}',
-    '\u{11374}', NSM), ('\u{11400}', '\u{11437}', L), ('\u{11438}', '\u{1143f}', NSM), ('\u{11440}',
-    '\u{11441}', L), ('\u{11442}', '\u{11444}', NSM), ('\u{11445}', '\u{11445}', L), ('\u{11446}',
-    '\u{11446}', NSM), ('\u{11447}', '\u{1145b}', L), ('\u{1145d}', '\u{1145d}', L), ('\u{1145e}',
-    '\u{1145e}', NSM), ('\u{1145f}', '\u{11461}', L), ('\u{11480}', '\u{114b2}', L), ('\u{114b3}',
-    '\u{114b8}', NSM), ('\u{114b9}', '\u{114b9}', L), ('\u{114ba}', '\u{114ba}', NSM), ('\u{114bb}',
-    '\u{114be}', L), ('\u{114bf}', '\u{114c0}', NSM), ('\u{114c1}', '\u{114c1}', L), ('\u{114c2}',
-    '\u{114c3}', NSM), ('\u{114c4}', '\u{114c7}', L), ('\u{114d0}', '\u{114d9}', L), ('\u{11580}',
-    '\u{115b1}', L), ('\u{115b2}', '\u{115b5}', NSM), ('\u{115b8}', '\u{115bb}', L), ('\u{115bc}',
-    '\u{115bd}', NSM), ('\u{115be}', '\u{115be}', L), ('\u{115bf}', '\u{115c0}', NSM), ('\u{115c1}',
-    '\u{115db}', L), ('\u{115dc}', '\u{115dd}', NSM), ('\u{11600}', '\u{11632}', L), ('\u{11633}',
-    '\u{1163a}', NSM), ('\u{1163b}', '\u{1163c}', L), ('\u{1163d}', '\u{1163d}', NSM), ('\u{1163e}',
-    '\u{1163e}', L), ('\u{1163f}', '\u{11640}', NSM), ('\u{11641}', '\u{11644}', L), ('\u{11650}',
-    '\u{11659}', L), ('\u{11660}', '\u{1166c}', ON), ('\u{11680}', '\u{116aa}', L), ('\u{116ab}',
-    '\u{116ab}', NSM), ('\u{116ac}', '\u{116ac}', L), ('\u{116ad}', '\u{116ad}', NSM), ('\u{116ae}',
-    '\u{116af}', L), ('\u{116b0}', '\u{116b5}', NSM), ('\u{116b6}', '\u{116b6}', L), ('\u{116b7}',
-    '\u{116b7}', NSM), ('\u{116b8}', '\u{116b9}', L), ('\u{116c0}', '\u{116c9}', L), ('\u{11700}',
-    '\u{1171a}', L), ('\u{1171d}', '\u{1171f}', NSM), ('\u{11720}', '\u{11721}', L), ('\u{11722}',
-    '\u{11725}', NSM), ('\u{11726}', '\u{11726}', L), ('\u{11727}', '\u{1172b}', NSM), ('\u{11730}',
-    '\u{11746}', L), ('\u{11800}', '\u{1182e}', L), ('\u{1182f}', '\u{11837}', NSM), ('\u{11838}',
-    '\u{11838}', L), ('\u{11839}', '\u{1183a}', NSM), ('\u{1183b}', '\u{1183b}', L), ('\u{118a0}',
-    '\u{118f2}', L), ('\u{118ff}', '\u{11906}', L), ('\u{11909}', '\u{11909}', L), ('\u{1190c}',
-    '\u{11913}', L), ('\u{11915}', '\u{11916}', L), ('\u{11918}', '\u{11935}', L), ('\u{11937}',
-    '\u{11938}', L), ('\u{1193b}', '\u{1193c}', NSM), ('\u{1193d}', '\u{1193d}', L), ('\u{1193e}',
-    '\u{1193e}', NSM), ('\u{1193f}', '\u{11942}', L), ('\u{11943}', '\u{11943}', NSM), ('\u{11944}',
-    '\u{11946}', L), ('\u{11950}', '\u{11959}', L), ('\u{119a0}', '\u{119a7}', L), ('\u{119aa}',
-    '\u{119d3}', L), ('\u{119d4}', '\u{119d7}', NSM), ('\u{119da}', '\u{119db}', NSM), ('\u{119dc}',
-    '\u{119df}', L), ('\u{119e0}', '\u{119e0}', NSM), ('\u{119e1}', '\u{119e4}', L), ('\u{11a00}',
-    '\u{11a00}', L), ('\u{11a01}', '\u{11a06}', NSM), ('\u{11a07}', '\u{11a08}', L), ('\u{11a09}',
-    '\u{11a0a}', NSM), ('\u{11a0b}', '\u{11a32}', L), ('\u{11a33}', '\u{11a38}', NSM), ('\u{11a39}',
-    '\u{11a3a}', L), ('\u{11a3b}', '\u{11a3e}', NSM), ('\u{11a3f}', '\u{11a46}', L), ('\u{11a47}',
-    '\u{11a47}', NSM), ('\u{11a50}', '\u{11a50}', L), ('\u{11a51}', '\u{11a56}', NSM), ('\u{11a57}',
-    '\u{11a58}', L), ('\u{11a59}', '\u{11a5b}', NSM), ('\u{11a5c}', '\u{11a89}', L), ('\u{11a8a}',
-    '\u{11a96}', NSM), ('\u{11a97}', '\u{11a97}', L), ('\u{11a98}', '\u{11a99}', NSM), ('\u{11a9a}',
-    '\u{11aa2}', L), ('\u{11ab0}', '\u{11af8}', L), ('\u{11b00}', '\u{11b09}', L), ('\u{11c00}',
-    '\u{11c08}', L), ('\u{11c0a}', '\u{11c2f}', L), ('\u{11c30}', '\u{11c36}', NSM), ('\u{11c38}',
-    '\u{11c3d}', NSM), ('\u{11c3e}', '\u{11c45}', L), ('\u{11c50}', '\u{11c6c}', L), ('\u{11c70}',
-    '\u{11c8f}', L), ('\u{11c92}', '\u{11ca7}', NSM), ('\u{11ca9}', '\u{11ca9}', L), ('\u{11caa}',
-    '\u{11cb0}', NSM), ('\u{11cb1}', '\u{11cb1}', L), ('\u{11cb2}', '\u{11cb3}', NSM), ('\u{11cb4}',
-    '\u{11cb4}', L), ('\u{11cb5}', '\u{11cb6}', NSM), ('\u{11d00}', '\u{11d06}', L), ('\u{11d08}',
-    '\u{11d09}', L), ('\u{11d0b}', '\u{11d30}', L), ('\u{11d31}', '\u{11d36}', NSM), ('\u{11d3a}',
-    '\u{11d3a}', NSM), ('\u{11d3c}', '\u{11d3d}', NSM), ('\u{11d3f}', '\u{11d45}', NSM),
-    ('\u{11d46}', '\u{11d46}', L), ('\u{11d47}', '\u{11d47}', NSM), ('\u{11d50}', '\u{11d59}', L),
-    ('\u{11d60}', '\u{11d65}', L), ('\u{11d67}', '\u{11d68}', L), ('\u{11d6a}', '\u{11d8e}', L),
-    ('\u{11d90}', '\u{11d91}', NSM), ('\u{11d93}', '\u{11d94}', L), ('\u{11d95}', '\u{11d95}', NSM),
-    ('\u{11d96}', '\u{11d96}', L), ('\u{11d97}', '\u{11d97}', NSM), ('\u{11d98}', '\u{11d98}', L),
-    ('\u{11da0}', '\u{11da9}', L), ('\u{11ee0}', '\u{11ef2}', L), ('\u{11ef3}', '\u{11ef4}', NSM),
-    ('\u{11ef5}', '\u{11ef8}', L), ('\u{11f00}', '\u{11f01}', NSM), ('\u{11f02}', '\u{11f10}', L),
-    ('\u{11f12}', '\u{11f35}', L), ('\u{11f36}', '\u{11f3a}', NSM), ('\u{11f3e}', '\u{11f3f}', L),
-    ('\u{11f40}', '\u{11f40}', NSM), ('\u{11f41}', '\u{11f41}', L), ('\u{11f42}', '\u{11f42}', NSM),
-    ('\u{11f43}', '\u{11f59}', L), ('\u{11fb0}', '\u{11fb0}', L), ('\u{11fc0}', '\u{11fd4}', L),
-    ('\u{11fd5}', '\u{11fdc}', ON), ('\u{11fdd}', '\u{11fe0}', ET), ('\u{11fe1}', '\u{11ff1}', ON),
-    ('\u{11fff}', '\u{12399}', L), ('\u{12400}', '\u{1246e}', L), ('\u{12470}', '\u{12474}', L),
-    ('\u{12480}', '\u{12543}', L), ('\u{12f90}', '\u{12ff2}', L), ('\u{13000}', '\u{1343f}', L),
-    ('\u{13440}', '\u{13440}', NSM), ('\u{13441}', '\u{13446}', L), ('\u{13447}', '\u{13455}', NSM),
-    ('\u{14400}', '\u{14646}', L), ('\u{16800}', '\u{16a38}', L), ('\u{16a40}', '\u{16a5e}', L),
-    ('\u{16a60}', '\u{16a69}', L), ('\u{16a6e}', '\u{16abe}', L), ('\u{16ac0}', '\u{16ac9}', L),
-    ('\u{16ad0}', '\u{16aed}', L), ('\u{16af0}', '\u{16af4}', NSM), ('\u{16af5}', '\u{16af5}', L),
-    ('\u{16b00}', '\u{16b2f}', L), ('\u{16b30}', '\u{16b36}', NSM), ('\u{16b37}', '\u{16b45}', L),
-    ('\u{16b50}', '\u{16b59}', L), ('\u{16b5b}', '\u{16b61}', L), ('\u{16b63}', '\u{16b77}', L),
-    ('\u{16b7d}', '\u{16b8f}', L), ('\u{16e40}', '\u{16e9a}', L), ('\u{16f00}', '\u{16f4a}', L),
-    ('\u{16f4f}', '\u{16f4f}', NSM), ('\u{16f50}', '\u{16f87}', L), ('\u{16f8f}', '\u{16f92}', NSM),
-    ('\u{16f93}', '\u{16f9f}', L), ('\u{16fe0}', '\u{16fe1}', L), ('\u{16fe2}', '\u{16fe2}', ON),
-    ('\u{16fe3}', '\u{16fe3}', L), ('\u{16fe4}', '\u{16fe4}', NSM), ('\u{16ff0}', '\u{16ff1}', L),
-    ('\u{17000}', '\u{187f7}', L), ('\u{18800}', '\u{18cd5}', L), ('\u{18d00}', '\u{18d08}', L),
-    ('\u{1aff0}', '\u{1aff3}', L), ('\u{1aff5}', '\u{1affb}', L), ('\u{1affd}', '\u{1affe}', L),
-    ('\u{1b000}', '\u{1b122}', L), ('\u{1b132}', '\u{1b132}', L), ('\u{1b150}', '\u{1b152}', L),
-    ('\u{1b155}', '\u{1b155}', L), ('\u{1b164}', '\u{1b167}', L), ('\u{1b170}', '\u{1b2fb}', L),
-    ('\u{1bc00}', '\u{1bc6a}', L), ('\u{1bc70}', '\u{1bc7c}', L), ('\u{1bc80}', '\u{1bc88}', L),
-    ('\u{1bc90}', '\u{1bc99}', L), ('\u{1bc9c}', '\u{1bc9c}', L), ('\u{1bc9d}', '\u{1bc9e}', NSM),
-    ('\u{1bc9f}', '\u{1bc9f}', L), ('\u{1bca0}', '\u{1bca3}', BN), ('\u{1cf00}', '\u{1cf2d}', NSM),
-    ('\u{1cf30}', '\u{1cf46}', NSM), ('\u{1cf50}', '\u{1cfc3}', L), ('\u{1d000}', '\u{1d0f5}', L),
-    ('\u{1d100}', '\u{1d126}', L), ('\u{1d129}', '\u{1d166}', L), ('\u{1d167}', '\u{1d169}', NSM),
-    ('\u{1d16a}', '\u{1d172}', L), ('\u{1d173}', '\u{1d17a}', BN), ('\u{1d17b}', '\u{1d182}', NSM),
-    ('\u{1d183}', '\u{1d184}', L), ('\u{1d185}', '\u{1d18b}', NSM), ('\u{1d18c}', '\u{1d1a9}', L),
-    ('\u{1d1aa}', '\u{1d1ad}', NSM), ('\u{1d1ae}', '\u{1d1e8}', L), ('\u{1d1e9}', '\u{1d1ea}', ON),
-    ('\u{1d200}', '\u{1d241}', ON), ('\u{1d242}', '\u{1d244}', NSM), ('\u{1d245}', '\u{1d245}', ON),
-    ('\u{1d2c0}', '\u{1d2d3}', L), ('\u{1d2e0}', '\u{1d2f3}', L), ('\u{1d300}', '\u{1d356}', ON),
-    ('\u{1d360}', '\u{1d378}', L), ('\u{1d400}', '\u{1d454}', L), ('\u{1d456}', '\u{1d49c}', L),
-    ('\u{1d49e}', '\u{1d49f}', L), ('\u{1d4a2}', '\u{1d4a2}', L), ('\u{1d4a5}', '\u{1d4a6}', L),
-    ('\u{1d4a9}', '\u{1d4ac}', L), ('\u{1d4ae}', '\u{1d4b9}', L), ('\u{1d4bb}', '\u{1d4bb}', L),
-    ('\u{1d4bd}', '\u{1d4c3}', L), ('\u{1d4c5}', '\u{1d505}', L), ('\u{1d507}', '\u{1d50a}', L),
-    ('\u{1d50d}', '\u{1d514}', L), ('\u{1d516}', '\u{1d51c}', L), ('\u{1d51e}', '\u{1d539}', L),
-    ('\u{1d53b}', '\u{1d53e}', L), ('\u{1d540}', '\u{1d544}', L), ('\u{1d546}', '\u{1d546}', L),
-    ('\u{1d54a}', '\u{1d550}', L), ('\u{1d552}', '\u{1d6a5}', L), ('\u{1d6a8}', '\u{1d6da}', L),
-    ('\u{1d6db}', '\u{1d6db}', ON), ('\u{1d6dc}', '\u{1d714}', L), ('\u{1d715}', '\u{1d715}', ON),
-    ('\u{1d716}', '\u{1d74e}', L), ('\u{1d74f}', '\u{1d74f}', ON), ('\u{1d750}', '\u{1d788}', L),
-    ('\u{1d789}', '\u{1d789}', ON), ('\u{1d78a}', '\u{1d7c2}', L), ('\u{1d7c3}', '\u{1d7c3}', ON),
-    ('\u{1d7c4}', '\u{1d7cb}', L), ('\u{1d7ce}', '\u{1d7ff}', EN), ('\u{1d800}', '\u{1d9ff}', L),
-    ('\u{1da00}', '\u{1da36}', NSM), ('\u{1da37}', '\u{1da3a}', L), ('\u{1da3b}', '\u{1da6c}', NSM),
-    ('\u{1da6d}', '\u{1da74}', L), ('\u{1da75}', '\u{1da75}', NSM), ('\u{1da76}', '\u{1da83}', L),
-    ('\u{1da84}', '\u{1da84}', NSM), ('\u{1da85}', '\u{1da8b}', L), ('\u{1da9b}', '\u{1da9f}', NSM),
-    ('\u{1daa1}', '\u{1daaf}', NSM), ('\u{1df00}', '\u{1df1e}', L), ('\u{1df25}', '\u{1df2a}', L),
-    ('\u{1e000}', '\u{1e006}', NSM), ('\u{1e008}', '\u{1e018}', NSM), ('\u{1e01b}', '\u{1e021}',
-    NSM), ('\u{1e023}', '\u{1e024}', NSM), ('\u{1e026}', '\u{1e02a}', NSM), ('\u{1e030}',
-    '\u{1e06d}', L), ('\u{1e08f}', '\u{1e08f}', NSM), ('\u{1e100}', '\u{1e12c}', L), ('\u{1e130}',
-    '\u{1e136}', NSM), ('\u{1e137}', '\u{1e13d}', L), ('\u{1e140}', '\u{1e149}', L), ('\u{1e14e}',
-    '\u{1e14f}', L), ('\u{1e290}', '\u{1e2ad}', L), ('\u{1e2ae}', '\u{1e2ae}', NSM), ('\u{1e2c0}',
-    '\u{1e2eb}', L), ('\u{1e2ec}', '\u{1e2ef}', NSM), ('\u{1e2f0}', '\u{1e2f9}', L), ('\u{1e2ff}',
-    '\u{1e2ff}', ET), ('\u{1e4d0}', '\u{1e4eb}', L), ('\u{1e4ec}', '\u{1e4ef}', NSM), ('\u{1e4f0}',
-    '\u{1e4f9}', L), ('\u{1e7e0}', '\u{1e7e6}', L), ('\u{1e7e8}', '\u{1e7eb}', L), ('\u{1e7ed}',
-    '\u{1e7ee}', L), ('\u{1e7f0}', '\u{1e7fe}', L), ('\u{1e800}', '\u{1e8cf}', R), ('\u{1e8d0}',
-    '\u{1e8d6}', NSM), ('\u{1e8d7}', '\u{1e943}', R), ('\u{1e944}', '\u{1e94a}', NSM), ('\u{1e94b}',
-    '\u{1ec70}', R), ('\u{1ec71}', '\u{1ecb4}', AL), ('\u{1ecb5}', '\u{1ed00}', R), ('\u{1ed01}',
-    '\u{1ed3d}', AL), ('\u{1ed3e}', '\u{1edff}', R), ('\u{1ee00}', '\u{1eeef}', AL), ('\u{1eef0}',
-    '\u{1eef1}', ON), ('\u{1eef2}', '\u{1eeff}', AL), ('\u{1ef00}', '\u{1efff}', R), ('\u{1f000}',
-    '\u{1f02b}', ON), ('\u{1f030}', '\u{1f093}', ON), ('\u{1f0a0}', '\u{1f0ae}', ON), ('\u{1f0b1}',
-    '\u{1f0bf}', ON), ('\u{1f0c1}', '\u{1f0cf}', ON), ('\u{1f0d1}', '\u{1f0f5}', ON), ('\u{1f100}',
-    '\u{1f10a}', EN), ('\u{1f10b}', '\u{1f10f}', ON), ('\u{1f110}', '\u{1f12e}', L), ('\u{1f12f}',
-    '\u{1f12f}', ON), ('\u{1f130}', '\u{1f169}', L), ('\u{1f16a}', '\u{1f16f}', ON), ('\u{1f170}',
-    '\u{1f1ac}', L), ('\u{1f1ad}', '\u{1f1ad}', ON), ('\u{1f1e6}', '\u{1f202}', L), ('\u{1f210}',
-    '\u{1f23b}', L), ('\u{1f240}', '\u{1f248}', L), ('\u{1f250}', '\u{1f251}', L), ('\u{1f260}',
-    '\u{1f265}', ON), ('\u{1f300}', '\u{1f6d7}', ON), ('\u{1f6dc}', '\u{1f6ec}', ON), ('\u{1f6f0}',
-    '\u{1f6fc}', ON), ('\u{1f700}', '\u{1f776}', ON), ('\u{1f77b}', '\u{1f7d9}', ON), ('\u{1f7e0}',
-    '\u{1f7eb}', ON), ('\u{1f7f0}', '\u{1f7f0}', ON), ('\u{1f800}', '\u{1f80b}', ON), ('\u{1f810}',
-    '\u{1f847}', ON), ('\u{1f850}', '\u{1f859}', ON), ('\u{1f860}', '\u{1f887}', ON), ('\u{1f890}',
-    '\u{1f8ad}', ON), ('\u{1f8b0}', '\u{1f8b1}', ON), ('\u{1f900}', '\u{1fa53}', ON), ('\u{1fa60}',
-    '\u{1fa6d}', ON), ('\u{1fa70}', '\u{1fa7c}', ON), ('\u{1fa80}', '\u{1fa88}', ON), ('\u{1fa90}',
-    '\u{1fabd}', ON), ('\u{1fabf}', '\u{1fac5}', ON), ('\u{1face}', '\u{1fadb}', ON), ('\u{1fae0}',
-    '\u{1fae8}', ON), ('\u{1faf0}', '\u{1faf8}', ON), ('\u{1fb00}', '\u{1fb92}', ON), ('\u{1fb94}',
-    '\u{1fbca}', ON), ('\u{1fbf0}', '\u{1fbf9}', EN), ('\u{20000}', '\u{2a6df}', L), ('\u{2a700}',
-    '\u{2b739}', L), ('\u{2b740}', '\u{2b81d}', L), ('\u{2b820}', '\u{2cea1}', L), ('\u{2ceb0}',
-    '\u{2ebe0}', L), ('\u{2f800}', '\u{2fa1d}', L), ('\u{30000}', '\u{3134a}', L), ('\u{31350}',
-    '\u{323af}', L), ('\u{e0001}', '\u{e0001}', BN), ('\u{e0020}', '\u{e007f}', BN), ('\u{e0100}',
-    '\u{e01ef}', NSM), ('\u{f0000}', '\u{ffffd}', L), ('\u{100000}', '\u{10fffd}', L)
-];
-
-pub const bidi_pairs_table: &'static [(char, char, Option<char>)] = &[
-    ('\u{28}', '\u{29}', None), ('\u{5b}', '\u{5d}', None), ('\u{7b}', '\u{7d}', None), ('\u{f3a}',
-    '\u{f3b}', None), ('\u{f3c}', '\u{f3d}', None), ('\u{169b}', '\u{169c}', None), ('\u{2045}',
-    '\u{2046}', None), ('\u{207d}', '\u{207e}', None), ('\u{208d}', '\u{208e}', None), ('\u{2308}',
-    '\u{2309}', None), ('\u{230a}', '\u{230b}', None), ('\u{2329}', '\u{232a}', Some('\u{3008}')),
-    ('\u{2768}', '\u{2769}', None), ('\u{276a}', '\u{276b}', None), ('\u{276c}', '\u{276d}', None),
-    ('\u{276e}', '\u{276f}', None), ('\u{2770}', '\u{2771}', None), ('\u{2772}', '\u{2773}', None),
-    ('\u{2774}', '\u{2775}', None), ('\u{27c5}', '\u{27c6}', None), ('\u{27e6}', '\u{27e7}', None),
-    ('\u{27e8}', '\u{27e9}', None), ('\u{27ea}', '\u{27eb}', None), ('\u{27ec}', '\u{27ed}', None),
-    ('\u{27ee}', '\u{27ef}', None), ('\u{2983}', '\u{2984}', None), ('\u{2985}', '\u{2986}', None),
-    ('\u{2987}', '\u{2988}', None), ('\u{2989}', '\u{298a}', None), ('\u{298b}', '\u{298c}', None),
-    ('\u{298d}', '\u{2990}', None), ('\u{298f}', '\u{298e}', None), ('\u{2991}', '\u{2992}', None),
-    ('\u{2993}', '\u{2994}', None), ('\u{2995}', '\u{2996}', None), ('\u{2997}', '\u{2998}', None),
-    ('\u{29d8}', '\u{29d9}', None), ('\u{29da}', '\u{29db}', None), ('\u{29fc}', '\u{29fd}', None),
-    ('\u{2e22}', '\u{2e23}', None), ('\u{2e24}', '\u{2e25}', None), ('\u{2e26}', '\u{2e27}', None),
-    ('\u{2e28}', '\u{2e29}', None), ('\u{2e55}', '\u{2e56}', None), ('\u{2e57}', '\u{2e58}', None),
-    ('\u{2e59}', '\u{2e5a}', None), ('\u{2e5b}', '\u{2e5c}', None), ('\u{3008}', '\u{3009}', None),
-    ('\u{300a}', '\u{300b}', None), ('\u{300c}', '\u{300d}', None), ('\u{300e}', '\u{300f}', None),
-    ('\u{3010}', '\u{3011}', None), ('\u{3014}', '\u{3015}', None), ('\u{3016}', '\u{3017}', None),
-    ('\u{3018}', '\u{3019}', None), ('\u{301a}', '\u{301b}', None), ('\u{fe59}', '\u{fe5a}', None),
-    ('\u{fe5b}', '\u{fe5c}', None), ('\u{fe5d}', '\u{fe5e}', None), ('\u{ff08}', '\u{ff09}', None),
-    ('\u{ff3b}', '\u{ff3d}', None), ('\u{ff5b}', '\u{ff5d}', None), ('\u{ff5f}', '\u{ff60}', None),
-    ('\u{ff62}', '\u{ff63}', None)
-];
-
diff --git a/vendor/unicode-bidi/src/data_source.rs b/vendor/unicode-bidi/src/data_source.rs
deleted file mode 100644
index 319ad53b..00000000
--- a/vendor/unicode-bidi/src/data_source.rs
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2015 The Servo Project Developers. See the
-// COPYRIGHT file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-use crate::BidiClass;
-
-/// This is the return value of [`BidiDataSource::bidi_matched_opening_bracket()`].
-///
-/// It represents the matching *normalized* opening bracket for a given bracket in a bracket pair,
-/// and whether or not that bracket is opening.
-#[derive(Debug, Copy, Clone)]
-pub struct BidiMatchedOpeningBracket {
-    /// The corresponding opening bracket in this bracket pair, normalized
-    ///
-    /// In case of opening brackets, this will be the bracket itself, except for when the bracket
-    /// is not normalized, in which case it will be the normalized form.
-    pub opening: char,
-    /// Whether or not the requested bracket was an opening bracket. True for opening
-    pub is_open: bool,
-}
-
-/// This trait abstracts over a data source that is able to produce the Unicode Bidi class for a given
-/// character
-pub trait BidiDataSource {
-    fn bidi_class(&self, c: char) -> BidiClass;
-    /// If this character is a bracket according to BidiBrackets.txt,
-    /// return the corresponding *normalized* *opening bracket* of the pair,
-    /// and whether or not it itself is an opening bracket.
-    ///
-    /// This effectively buckets brackets into equivalence classes keyed on the
-    /// normalized opening bracket.
-    ///
-    /// The default implementation will pull in a small amount of hardcoded data,
-    /// regardless of the `hardcoded-data` feature. This is in part for convenience
-    /// (since this data is small and changes less often), and in part so that this method can be
-    /// added without needing a breaking version bump.
-    /// Override this method in your custom data source to prevent the use of hardcoded data.
-    fn bidi_matched_opening_bracket(&self, c: char) -> Option<BidiMatchedOpeningBracket> {
-        crate::char_data::bidi_matched_opening_bracket(c)
-    }
-}
diff --git a/vendor/unicode-bidi/src/deprecated.rs b/vendor/unicode-bidi/src/deprecated.rs
deleted file mode 100644
index 74a24f5b..00000000
--- a/vendor/unicode-bidi/src/deprecated.rs
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2015 The Servo Project Developers. See the
-// COPYRIGHT file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! This module holds deprecated assets only.
-
-use alloc::vec::Vec;
-
-use super::*;
-
-/// Find the level runs within a line and return them in visual order.
-///
-/// NOTE: This implementation is incomplete. The algorithm needs information about the text,
-/// including original `BidiClass` property of each character, to be able to perform correctly.
-/// Please see [`BidiInfo::visual_runs()`](../struct.BidiInfo.html#method.visual_runs) for the
-/// improved implementation.
-///
-/// `line` is a range of bytes indices within `levels`.
-///
-/// <http://www.unicode.org/reports/tr9/#Reordering_Resolved_Levels>
-#[deprecated(
-    since = "0.3.0",
-    note = "please use `BidiInfo::visual_runs()` instead."
-)]
-pub fn visual_runs(line: Range<usize>, levels: &[Level]) -> Vec<LevelRun> {
-    assert!(line.start <= levels.len());
-    assert!(line.end <= levels.len());
-
-    let mut runs = Vec::new();
-
-    // Find consecutive level runs.
-    let mut start = line.start;
-    let mut run_level = levels[start];
-    let mut min_level = run_level;
-    let mut max_level = run_level;
-
-    for (i, &new_level) in levels.iter().enumerate().take(line.end).skip(start + 1) {
-        if new_level != run_level {
-            // End of the previous run, start of a new one.
-            runs.push(start..i);
-            start = i;
-            run_level = new_level;
-
-            min_level = cmp::min(run_level, min_level);
-            max_level = cmp::max(run_level, max_level);
-        }
-    }
-    runs.push(start..line.end);
-
-    let run_count = runs.len();
-
-    // Re-order the odd runs.
-    // <http://www.unicode.org/reports/tr9/#L2>
-
-    // Stop at the lowest *odd* level.
-    min_level = min_level.new_lowest_ge_rtl().expect("Level error");
-
-    while max_level >= min_level {
-        // Look for the start of a sequence of consecutive runs of max_level or higher.
-        let mut seq_start = 0;
-        while seq_start < run_count {
-            if levels[runs[seq_start].start] < max_level {
-                seq_start += 1;
-                continue;
-            }
-
-            // Found the start of a sequence. Now find the end.
-            let mut seq_end = seq_start + 1;
-            while seq_end < run_count {
-                if levels[runs[seq_end].start] < max_level {
-                    break;
-                }
-                seq_end += 1;
-            }
-
-            // Reverse the runs within this sequence.
-            runs[seq_start..seq_end].reverse();
-
-            seq_start = seq_end;
-        }
-        max_level
-            .lower(1)
-            .expect("Lowering embedding level below zero");
-    }
-
-    runs
-}
diff --git a/vendor/unicode-bidi/src/explicit.rs b/vendor/unicode-bidi/src/explicit.rs
deleted file mode 100644
index d4ad897b..00000000
--- a/vendor/unicode-bidi/src/explicit.rs
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2015 The Servo Project Developers. See the
-// COPYRIGHT file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! 3.3.2 Explicit Levels and Directions
-//!
-//! <http://www.unicode.org/reports/tr9/#Explicit_Levels_and_Directions>
-
-use alloc::vec::Vec;
-
-use super::char_data::{
-    is_rtl,
-    BidiClass::{self, *},
-};
-use super::level::Level;
-use super::TextSource;
-
-/// Compute explicit embedding levels for one paragraph of text (X1-X8).
-///
-/// `processing_classes[i]` must contain the `BidiClass` of the char at byte index `i`,
-/// for each char in `text`.
-#[cfg_attr(feature = "flame_it", flamer::flame)]
-pub fn compute<'a, T: TextSource<'a> + ?Sized>(
-    text: &'a T,
-    para_level: Level,
-    original_classes: &[BidiClass],
-    levels: &mut [Level],
-    processing_classes: &mut [BidiClass],
-) {
-    assert_eq!(text.len(), original_classes.len());
-
-    // <http://www.unicode.org/reports/tr9/#X1>
-    let mut stack = DirectionalStatusStack::new();
-    stack.push(para_level, OverrideStatus::Neutral);
-
-    let mut overflow_isolate_count = 0u32;
-    let mut overflow_embedding_count = 0u32;
-    let mut valid_isolate_count = 0u32;
-
-    for (i, len) in text.indices_lengths() {
-        match original_classes[i] {
-            // Rules X2-X5c
-            RLE | LRE | RLO | LRO | RLI | LRI | FSI => {
-                let last_level = stack.last().level;
-
-                // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-                levels[i] = last_level;
-
-                // X5a-X5c: Isolate initiators get the level of the last entry on the stack.
-                let is_isolate = match original_classes[i] {
-                    RLI | LRI | FSI => true,
-                    _ => false,
-                };
-                if is_isolate {
-                    // Redundant due to "Retaining explicit formatting characters" step.
-                    // levels[i] = last_level;
-                    match stack.last().status {
-                        OverrideStatus::RTL => processing_classes[i] = R,
-                        OverrideStatus::LTR => processing_classes[i] = L,
-                        _ => {}
-                    }
-                }
-
-                let new_level = if is_rtl(original_classes[i]) {
-                    last_level.new_explicit_next_rtl()
-                } else {
-                    last_level.new_explicit_next_ltr()
-                };
-                if new_level.is_ok() && overflow_isolate_count == 0 && overflow_embedding_count == 0
-                {
-                    let new_level = new_level.unwrap();
-                    stack.push(
-                        new_level,
-                        match original_classes[i] {
-                            RLO => OverrideStatus::RTL,
-                            LRO => OverrideStatus::LTR,
-                            RLI | LRI | FSI => OverrideStatus::Isolate,
-                            _ => OverrideStatus::Neutral,
-                        },
-                    );
-                    if is_isolate {
-                        valid_isolate_count += 1;
-                    } else {
-                        // The spec doesn't explicitly mention this step, but it is necessary.
-                        // See the reference implementations for comparison.
-                        levels[i] = new_level;
-                    }
-                } else if is_isolate {
-                    overflow_isolate_count += 1;
-                } else if overflow_isolate_count == 0 {
-                    overflow_embedding_count += 1;
-                }
-
-                if !is_isolate {
-                    // X9 +
-                    // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-                    // (PDF handled below)
-                    processing_classes[i] = BN;
-                }
-            }
-
-            // <http://www.unicode.org/reports/tr9/#X6a>
-            PDI => {
-                if overflow_isolate_count > 0 {
-                    overflow_isolate_count -= 1;
-                } else if valid_isolate_count > 0 {
-                    overflow_embedding_count = 0;
-                    loop {
-                        // Pop everything up to and including the last Isolate status.
-                        match stack.vec.pop() {
-                            None
-                            | Some(Status {
-                                status: OverrideStatus::Isolate,
-                                ..
-                            }) => break,
-                            _ => continue,
-                        }
-                    }
-                    valid_isolate_count -= 1;
-                }
-                let last = stack.last();
-                levels[i] = last.level;
-                match last.status {
-                    OverrideStatus::RTL => processing_classes[i] = R,
-                    OverrideStatus::LTR => processing_classes[i] = L,
-                    _ => {}
-                }
-            }
-
-            // <http://www.unicode.org/reports/tr9/#X7>
-            PDF => {
-                if overflow_isolate_count > 0 {
-                    // do nothing
-                } else if overflow_embedding_count > 0 {
-                    overflow_embedding_count -= 1;
-                } else if stack.last().status != OverrideStatus::Isolate && stack.vec.len() >= 2 {
-                    stack.vec.pop();
-                }
-                // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-                levels[i] = stack.last().level;
-                // X9 part of retaining explicit formatting characters.
-                processing_classes[i] = BN;
-            }
-
-            // Nothing.
-            // BN case moved down to X6, see <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-            B => {}
-
-            // <http://www.unicode.org/reports/tr9/#X6>
-            _ => {
-                let last = stack.last();
-                levels[i] = last.level;
-                // This condition is not in the spec, but I am pretty sure that is a spec bug.
-                // https://www.unicode.org/L2/L2023/23014-amd-to-uax9.pdf
-                if original_classes[i] != BN {
-                    match last.status {
-                        OverrideStatus::RTL => processing_classes[i] = R,
-                        OverrideStatus::LTR => processing_classes[i] = L,
-                        _ => {}
-                    }
-                }
-            }
-        }
-
-        // Handle multi-byte characters.
-        for j in 1..len {
-            levels[i + j] = levels[i];
-            processing_classes[i + j] = processing_classes[i];
-        }
-    }
-}
-
-/// Entries in the directional status stack:
-struct Status {
-    level: Level,
-    status: OverrideStatus,
-}
-
-#[derive(PartialEq)]
-enum OverrideStatus {
-    Neutral,
-    RTL,
-    LTR,
-    Isolate,
-}
-
-struct DirectionalStatusStack {
-    vec: Vec<Status>,
-}
-
-impl DirectionalStatusStack {
-    fn new() -> Self {
-        DirectionalStatusStack {
-            vec: Vec::with_capacity(Level::max_explicit_depth() as usize + 2),
-        }
-    }
-
-    fn push(&mut self, level: Level, status: OverrideStatus) {
-        self.vec.push(Status { level, status });
-    }
-
-    fn last(&self) -> &Status {
-        self.vec.last().unwrap()
-    }
-}
diff --git a/vendor/unicode-bidi/src/format_chars.rs b/vendor/unicode-bidi/src/format_chars.rs
deleted file mode 100644
index 5b19b5e7..00000000
--- a/vendor/unicode-bidi/src/format_chars.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2017 The Servo Project Developers. See the
-// COPYRIGHT file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! Directional Formatting Characters
-//!
-//! <http://www.unicode.org/reports/tr9/#Directional_Formatting_Characters>
-
-// == Implicit ==
-/// ARABIC LETTER MARK
-pub const ALM: char = '\u{061C}';
-/// LEFT-TO-RIGHT MARK
-pub const LRM: char = '\u{200E}';
-/// RIGHT-TO-LEFT MARK
-pub const RLM: char = '\u{200F}';
-
-// == Explicit Isolates ==
-/// LEFT‑TO‑RIGHT ISOLATE
-pub const LRI: char = '\u{2066}';
-/// RIGHT‑TO‑LEFT ISOLATE
-pub const RLI: char = '\u{2067}';
-/// FIRST STRONG ISOLATE
-pub const FSI: char = '\u{2068}';
-/// POP DIRECTIONAL ISOLATE
-pub const PDI: char = '\u{2069}';
-
-// == Explicit Embeddings and Overrides ==
-/// LEFT-TO-RIGHT EMBEDDING
-pub const LRE: char = '\u{202A}';
-/// RIGHT-TO-LEFT EMBEDDING
-pub const RLE: char = '\u{202B}';
-/// POP DIRECTIONAL FORMATTING
-pub const PDF: char = '\u{202C}';
-/// LEFT-TO-RIGHT OVERRIDE
-pub const LRO: char = '\u{202D}';
-/// RIGHT-TO-LEFT OVERRIDE
-pub const RLO: char = '\u{202E}';
diff --git a/vendor/unicode-bidi/src/implicit.rs b/vendor/unicode-bidi/src/implicit.rs
deleted file mode 100644
index 0311053c..00000000
--- a/vendor/unicode-bidi/src/implicit.rs
+++ /dev/null
@@ -1,585 +0,0 @@
-// Copyright 2015 The Servo Project Developers. See the
-// COPYRIGHT file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! 3.3.4 - 3.3.6. Resolve implicit levels and types.
-
-use alloc::vec::Vec;
-use core::cmp::max;
-
-use super::char_data::BidiClass::{self, *};
-use super::level::Level;
-use super::prepare::{not_removed_by_x9, IsolatingRunSequence};
-use super::{BidiDataSource, TextSource};
-
-/// 3.3.4 Resolving Weak Types
-///
-/// <http://www.unicode.org/reports/tr9/#Resolving_Weak_Types>
-#[cfg_attr(feature = "flame_it", flamer::flame)]
-pub fn resolve_weak<'a, T: TextSource<'a> + ?Sized>(
-    text: &'a T,
-    sequence: &IsolatingRunSequence,
-    processing_classes: &mut [BidiClass],
-) {
-    // Note: The spec treats these steps as individual passes that are applied one after the other
-    // on the entire IsolatingRunSequence at once. We instead collapse it into a single iteration,
-    // which is straightforward for rules that are based on the state of the current character, but not
-    // for rules that care about surrounding characters. To deal with them, we retain additional state
-    // about previous character classes that may have since been changed by later rules.
-
-    // The previous class for the purposes of rule W4/W6, not tracking changes made after or during W4.
-    let mut prev_class_before_w4 = sequence.sos;
-    // The previous class for the purposes of rule W5.
-    let mut prev_class_before_w5 = sequence.sos;
-    // The previous class for the purposes of rule W1, not tracking changes from any other rules.
-    let mut prev_class_before_w1 = sequence.sos;
-    let mut last_strong_is_al = false;
-    let mut et_run_indices = Vec::new(); // for W5
-    let mut bn_run_indices = Vec::new(); // for W5 +  <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-
-    for (run_index, level_run) in sequence.runs.iter().enumerate() {
-        for i in &mut level_run.clone() {
-            if processing_classes[i] == BN {
-                // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-                // Keeps track of bn runs for W5 in case we see an ET.
-                bn_run_indices.push(i);
-                // BNs aren't real, skip over them.
-                continue;
-            }
-
-            // Store the processing class of all rules before W2/W1.
-            // Used to keep track of the last strong character for W2. W3 is able to insert new strong
-            // characters, so we don't want to be misled by it.
-            let mut w2_processing_class = processing_classes[i];
-
-            // <http://www.unicode.org/reports/tr9/#W1>
-            //
-
-            if processing_classes[i] == NSM {
-                processing_classes[i] = match prev_class_before_w1 {
-                    RLI | LRI | FSI | PDI => ON,
-                    _ => prev_class_before_w1,
-                };
-                // W1 occurs before W2, update this.
-                w2_processing_class = processing_classes[i];
-            }
-
-            prev_class_before_w1 = processing_classes[i];
-
-            // <http://www.unicode.org/reports/tr9/#W2>
-            // <http://www.unicode.org/reports/tr9/#W3>
-            //
-            match processing_classes[i] {
-                EN => {
-                    if last_strong_is_al {
-                        // W2. If previous strong char was AL, change EN to AN.
-                        processing_classes[i] = AN;
-                    }
-                }
-                // W3.
-                AL => processing_classes[i] = R,
-                _ => {}
-            }
-
-            // update last_strong_is_al.
-            match w2_processing_class {
-                L | R => {
-                    last_strong_is_al = false;
-                }
-                AL => {
-                    last_strong_is_al = true;
-                }
-                _ => {}
-            }
-
-            let class_before_w456 = processing_classes[i];
-
-            // <http://www.unicode.org/reports/tr9/#W4>
-            // <http://www.unicode.org/reports/tr9/#W5>
-            // <http://www.unicode.org/reports/tr9/#W6> (separators only)
-            // (see below for W6 terminator code)
-            //
-            match processing_classes[i] {
-                // <http://www.unicode.org/reports/tr9/#W6>
-                EN => {
-                    // W5. If a run of ETs is adjacent to an EN, change the ETs to EN.
-                    for j in &et_run_indices {
-                        processing_classes[*j] = EN;
-                    }
-                    et_run_indices.clear();
-                }
-
-                // <http://www.unicode.org/reports/tr9/#W4>
-                // <http://www.unicode.org/reports/tr9/#W6>
-                ES | CS => {
-                    // See https://github.com/servo/unicode-bidi/issues/86 for improving this.
-                    // We want to make sure we check the correct next character by skipping past the rest
-                    // of this one.
-                    if let Some((_, char_len)) = text.char_at(i) {
-                        let mut next_class = sequence
-                            .iter_forwards_from(i + char_len, run_index)
-                            .map(|j| processing_classes[j])
-                            // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-                            .find(not_removed_by_x9)
-                            .unwrap_or(sequence.eos);
-                        if next_class == EN && last_strong_is_al {
-                            // Apply W2 to next_class. We know that last_strong_is_al
-                            // has no chance of changing on this character so we can still assume its value
-                            // will be the same by the time we get to it.
-                            next_class = AN;
-                        }
-                        processing_classes[i] =
-                            match (prev_class_before_w4, processing_classes[i], next_class) {
-                                // W4
-                                (EN, ES, EN) | (EN, CS, EN) => EN,
-                                // W4
-                                (AN, CS, AN) => AN,
-                                // W6 (separators only)
-                                (_, _, _) => ON,
-                            };
-
-                        // W6 + <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-                        // We have to do this before W5 gets its grubby hands on these characters and thinks
-                        // they're part of an ET run.
-                        // We check for ON to ensure that we had hit the W6 branch above, since this `ES | CS` match
-                        // arm handles both W4 and W6.
-                        if processing_classes[i] == ON {
-                            for idx in sequence.iter_backwards_from(i, run_index) {
-                                let class = &mut processing_classes[idx];
-                                if *class != BN {
-                                    break;
-                                }
-                                *class = ON;
-                            }
-                            for idx in sequence.iter_forwards_from(i + char_len, run_index) {
-                                let class = &mut processing_classes[idx];
-                                if *class != BN {
-                                    break;
-                                }
-                                *class = ON;
-                            }
-                        }
-                    } else {
-                        // We're in the middle of a character, copy over work done for previous bytes
-                        // since it's going to be the same answer.
-                        processing_classes[i] = processing_classes[i - 1];
-                    }
-                }
-                // <http://www.unicode.org/reports/tr9/#W5>
-                ET => {
-                    match prev_class_before_w5 {
-                        EN => processing_classes[i] = EN,
-                        _ => {
-                            // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-                            // If there was a BN run before this, that's now a part of this ET run.
-                            et_run_indices.extend(&bn_run_indices);
-
-                            // In case this is followed by an EN.
-                            et_run_indices.push(i);
-                        }
-                    }
-                }
-                _ => {}
-            }
-
-            // Common loop iteration code
-            //
-
-            // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-            // BN runs would have already continued the loop, clear them before we get to the next one.
-            bn_run_indices.clear();
-
-            // W6 above only deals with separators, so it doesn't change anything W5 cares about,
-            // so we still can update this after running that part of W6.
-            prev_class_before_w5 = processing_classes[i];
-
-            // <http://www.unicode.org/reports/tr9/#W6> (terminators only)
-            // (see above for W6 separator code)
-            //
-            if prev_class_before_w5 != ET {
-                // W6. If we didn't find an adjacent EN, turn any ETs into ON instead.
-                for j in &et_run_indices {
-                    processing_classes[*j] = ON;
-                }
-                et_run_indices.clear();
-            }
-
-            // We stashed this before W4/5/6 could get their grubby hands on it, and it's not
-            // used in the W6 terminator code below so we can update it now.
-            prev_class_before_w4 = class_before_w456;
-        }
-    }
-    // Rerun this check in case we ended with a sequence of BNs (i.e., we'd never
-    // hit the end of the for loop above).
-    // W6. If we didn't find an adjacent EN, turn any ETs into ON instead.
-    for j in &et_run_indices {
-        processing_classes[*j] = ON;
-    }
-    et_run_indices.clear();
-
-    // W7. If the previous strong char was L, change EN to L.
-    let mut last_strong_is_l = sequence.sos == L;
-    for run in &sequence.runs {
-        for i in run.clone() {
-            match processing_classes[i] {
-                EN if last_strong_is_l => {
-                    processing_classes[i] = L;
-                }
-                L => {
-                    last_strong_is_l = true;
-                }
-                R | AL => {
-                    last_strong_is_l = false;
-                }
-                // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-                // Already scanning past BN here.
-                _ => {}
-            }
-        }
-    }
-}
-
-/// 3.3.5 Resolving Neutral Types
-///
-/// <http://www.unicode.org/reports/tr9/#Resolving_Neutral_Types>
-#[cfg_attr(feature = "flame_it", flamer::flame)]
-pub fn resolve_neutral<'a, D: BidiDataSource, T: TextSource<'a> + ?Sized>(
-    text: &'a T,
-    data_source: &D,
-    sequence: &IsolatingRunSequence,
-    levels: &[Level],
-    original_classes: &[BidiClass],
-    processing_classes: &mut [BidiClass],
-) {
-    // e = embedding direction
-    let e: BidiClass = levels[sequence.runs[0].start].bidi_class();
-    let not_e = if e == BidiClass::L {
-        BidiClass::R
-    } else {
-        BidiClass::L
-    };
-    // N0. Process bracket pairs.
-
-    // > Identify the bracket pairs in the current isolating run sequence according to BD16.
-    // We use processing_classes, not original_classes, due to BD14/BD15
-    let bracket_pairs = identify_bracket_pairs(text, data_source, sequence, processing_classes);
-
-    // > For each bracket-pair element in the list of pairs of text positions
-    //
-    // Note: Rust ranges are interpreted as [start..end), be careful using `pair` directly
-    // for indexing as it will include the opening bracket pair but not the closing one.
-    for pair in bracket_pairs {
-        #[cfg(feature = "std")]
-        debug_assert!(
-            pair.start < processing_classes.len(),
-            "identify_bracket_pairs returned a range that is out of bounds!"
-        );
-        #[cfg(feature = "std")]
-        debug_assert!(
-            pair.end < processing_classes.len(),
-            "identify_bracket_pairs returned a range that is out of bounds!"
-        );
-        let mut found_e = false;
-        let mut found_not_e = false;
-        let mut class_to_set = None;
-
-        let start_char_len =
-            T::char_len(text.subrange(pair.start..pair.end).chars().next().unwrap());
-        // > Inspect the bidirectional types of the characters enclosed within the bracket pair.
-        //
-        // `pair` is [start, end) so we will end up processing the opening character but not the closing one.
-        //
-        for enclosed_i in sequence.iter_forwards_from(pair.start + start_char_len, pair.start_run) {
-            if enclosed_i >= pair.end {
-                #[cfg(feature = "std")]
-                debug_assert!(
-                    enclosed_i == pair.end,
-                    "If we skipped past this, the iterator is broken"
-                );
-                break;
-            }
-            let class = processing_classes[enclosed_i];
-            if class == e {
-                found_e = true;
-            } else if class == not_e {
-                found_not_e = true;
-            } else if class == BidiClass::EN || class == BidiClass::AN {
-                // > Within this scope, bidirectional types EN and AN are treated as R.
-                if e == BidiClass::L {
-                    found_not_e = true;
-                } else {
-                    found_e = true;
-                }
-            }
-
-            // If we have found a character with the class of the embedding direction
-            // we can bail early.
-            if found_e {
-                break;
-            }
-        }
-        // > If any strong type (either L or R) matching the embedding direction is found
-        if found_e {
-            // > .. set the type for both brackets in the pair to match the embedding direction
-            class_to_set = Some(e);
-        // > Otherwise, if there is a strong type it must be opposite the embedding direction
-        } else if found_not_e {
-            // > Therefore, test for an established context with a preceding strong type by
-            // > checking backwards before the opening paired bracket
-            // > until the first strong type (L, R, or sos) is found.
-            // (see note above about processing_classes and character boundaries)
-            let mut previous_strong = sequence
-                .iter_backwards_from(pair.start, pair.start_run)
-                .map(|i| processing_classes[i])
-                .find(|class| {
-                    *class == BidiClass::L
-                        || *class == BidiClass::R
-                        || *class == BidiClass::EN
-                        || *class == BidiClass::AN
-                })
-                .unwrap_or(sequence.sos);
-
-            // > Within this scope, bidirectional types EN and AN are treated as R.
-            if previous_strong == BidiClass::EN || previous_strong == BidiClass::AN {
-                previous_strong = BidiClass::R;
-            }
-
-            // > If the preceding strong type is also opposite the embedding direction,
-            // > context is established,
-            // > so set the type for both brackets in the pair to that direction.
-            // AND
-            // > Otherwise set the type for both brackets in the pair to the embedding direction.
-            // > Either way it gets set to previous_strong
-            //
-            // Both branches amount to setting the type to the strong type.
-            class_to_set = Some(previous_strong);
-        }
-
-        if let Some(class_to_set) = class_to_set {
-            // Update all processing classes corresponding to the start and end elements, as requested.
-            // We should include all bytes of the character, not the first one.
-            let end_char_len =
-                T::char_len(text.subrange(pair.end..text.len()).chars().next().unwrap());
-            for class in &mut processing_classes[pair.start..pair.start + start_char_len] {
-                *class = class_to_set;
-            }
-            for class in &mut processing_classes[pair.end..pair.end + end_char_len] {
-                *class = class_to_set;
-            }
-            // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-            for idx in sequence.iter_backwards_from(pair.start, pair.start_run) {
-                let class = &mut processing_classes[idx];
-                if *class != BN {
-                    break;
-                }
-                *class = class_to_set;
-            }
-            // > Any number of characters that had original bidirectional character type NSM prior to the application of
-            // > W1 that immediately follow a paired bracket which changed to L or R under N0 should change to match the type of their preceding bracket.
-
-            // This rule deals with sequences of NSMs, so we can just update them all at once, we don't need to worry
-            // about character boundaries. We do need to be careful to skip the full set of bytes for the parentheses characters.
-            let nsm_start = pair.start + start_char_len;
-            for idx in sequence.iter_forwards_from(nsm_start, pair.start_run) {
-                let class = original_classes[idx];
-                if class == BidiClass::NSM || processing_classes[idx] == BN {
-                    processing_classes[idx] = class_to_set;
-                } else {
-                    break;
-                }
-            }
-            let nsm_end = pair.end + end_char_len;
-            for idx in sequence.iter_forwards_from(nsm_end, pair.end_run) {
-                let class = original_classes[idx];
-                if class == BidiClass::NSM || processing_classes[idx] == BN {
-                    processing_classes[idx] = class_to_set;
-                } else {
-                    break;
-                }
-            }
-        }
-        // > Otherwise, there are no strong types within the bracket pair
-        // > Therefore, do not set the type for that bracket pair
-    }
-
-    // N1 and N2.
-    // Indices of every byte in this isolating run sequence
-    let mut indices = sequence.runs.iter().flat_map(Clone::clone);
-    let mut prev_class = sequence.sos;
-    while let Some(mut i) = indices.next() {
-        // Process sequences of NI characters.
-        let mut ni_run = Vec::new();
-        // The BN is for <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-        if is_NI(processing_classes[i]) || processing_classes[i] == BN {
-            // Consume a run of consecutive NI characters.
-            ni_run.push(i);
-            let mut next_class;
-            loop {
-                match indices.next() {
-                    Some(j) => {
-                        i = j;
-                        next_class = processing_classes[j];
-                        // The BN is for <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-                        if is_NI(next_class) || next_class == BN {
-                            ni_run.push(i);
-                        } else {
-                            break;
-                        }
-                    }
-                    None => {
-                        next_class = sequence.eos;
-                        break;
-                    }
-                };
-            }
-            // N1-N2.
-            //
-            // <http://www.unicode.org/reports/tr9/#N1>
-            // <http://www.unicode.org/reports/tr9/#N2>
-            let new_class = match (prev_class, next_class) {
-                (L, L) => L,
-                (R, R)
-                | (R, AN)
-                | (R, EN)
-                | (AN, R)
-                | (AN, AN)
-                | (AN, EN)
-                | (EN, R)
-                | (EN, AN)
-                | (EN, EN) => R,
-                (_, _) => e,
-            };
-            for j in &ni_run {
-                processing_classes[*j] = new_class;
-            }
-            ni_run.clear();
-        }
-        prev_class = processing_classes[i];
-    }
-}
-
-struct BracketPair {
-    /// The text-relative index of the opening bracket.
-    start: usize,
-    /// The text-relative index of the closing bracket.
-    end: usize,
-    /// The index of the run (in the run sequence) that the opening bracket is in.
-    start_run: usize,
-    /// The index of the run (in the run sequence) that the closing bracket is in.
-    end_run: usize,
-}
-/// 3.1.3 Identifying Bracket Pairs
-///
-/// Returns all paired brackets in the source, as indices into the
-/// text source.
-///
-/// <https://www.unicode.org/reports/tr9/#BD16>
-fn identify_bracket_pairs<'a, T: TextSource<'a> + ?Sized, D: BidiDataSource>(
-    text: &'a T,
-    data_source: &D,
-    run_sequence: &IsolatingRunSequence,
-    original_classes: &[BidiClass],
-) -> Vec<BracketPair> {
-    let mut ret = vec![];
-    let mut stack = vec![];
-
-    for (run_index, level_run) in run_sequence.runs.iter().enumerate() {
-        for (i, ch) in text.subrange(level_run.clone()).char_indices() {
-            let actual_index = level_run.start + i;
-
-            // All paren characters are ON.
-            // From BidiBrackets.txt:
-            // > The Unicode property value stability policy guarantees that characters
-            // > which have bpt=o or bpt=c also have bc=ON and Bidi_M=Y
-            if original_classes[actual_index] != BidiClass::ON {
-                continue;
-            }
-
-            if let Some(matched) = data_source.bidi_matched_opening_bracket(ch) {
-                if matched.is_open {
-                    // > If an opening paired bracket is found ...
-
-                    // > ... and there is no room in the stack,
-                    // > stop processing BD16 for the remainder of the isolating run sequence.
-                    if stack.len() >= 63 {
-                        break;
-                    }
-                    // > ... push its Bidi_Paired_Bracket property value and its text position onto the stack
-                    stack.push((matched.opening, actual_index, run_index))
-                } else {
-                    // > If a closing paired bracket is found, do the following
-
-                    // > Declare a variable that holds a reference to the current stack element
-                    // > and initialize it with the top element of the stack.
-                    // AND
-                    // > Else, if the current stack element is not at the bottom of the stack
-                    for (stack_index, element) in stack.iter().enumerate().rev() {
-                        // > Compare the closing paired bracket being inspected or its canonical
-                        // > equivalent to the bracket in the current stack element.
-                        if element.0 == matched.opening {
-                            // > If the values match, meaning the two characters form a bracket pair, then
-
-                            // > Append the text position in the current stack element together with the
-                            // > text position of the closing paired bracket to the list.
-                            let pair = BracketPair {
-                                start: element.1,
-                                end: actual_index,
-                                start_run: element.2,
-                                end_run: run_index,
-                            };
-                            ret.push(pair);
-
-                            // > Pop the stack through the current stack element inclusively.
-                            stack.truncate(stack_index);
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-    }
-    // > Sort the list of pairs of text positions in ascending order based on
-    // > the text position of the opening paired bracket.
-    ret.sort_by_key(|r| r.start);
-    ret
-}
-
-/// 3.3.6 Resolving Implicit Levels
-///
-/// Returns the maximum embedding level in the paragraph.
-///
-/// <http://www.unicode.org/reports/tr9/#Resolving_Implicit_Levels>
-#[cfg_attr(feature = "flame_it", flamer::flame)]
-pub fn resolve_levels(original_classes: &[BidiClass], levels: &mut [Level]) -> Level {
-    let mut max_level = Level::ltr();
-    assert_eq!(original_classes.len(), levels.len());
-    for i in 0..levels.len() {
-        match (levels[i].is_rtl(), original_classes[i]) {
-            (false, AN) | (false, EN) => levels[i].raise(2).expect("Level number error"),
-            (false, R) | (true, L) | (true, EN) | (true, AN) => {
-                levels[i].raise(1).expect("Level number error")
-            }
-            // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters> handled here
-            (_, _) => {}
-        }
-        max_level = max(max_level, levels[i]);
-    }
-
-    max_level
-}
-
-/// Neutral or Isolate formatting character (B, S, WS, ON, FSI, LRI, RLI, PDI)
-///
-/// <http://www.unicode.org/reports/tr9/#NI>
-#[allow(non_snake_case)]
-fn is_NI(class: BidiClass) -> bool {
-    match class {
-        B | S | WS | ON | FSI | LRI | RLI | PDI => true,
-        _ => false,
-    }
-}
diff --git a/vendor/unicode-bidi/src/level.rs b/vendor/unicode-bidi/src/level.rs
deleted file mode 100644
index ef4f6d9e..00000000
--- a/vendor/unicode-bidi/src/level.rs
+++ /dev/null
@@ -1,400 +0,0 @@
-// Copyright 2017 The Servo Project Developers. See the
-// COPYRIGHT file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! Bidi Embedding Level
-//!
-//! See [`Level`](struct.Level.html) for more details.
-//!
-//! <http://www.unicode.org/reports/tr9/#BD2>
-
-use alloc::string::{String, ToString};
-use alloc::vec::Vec;
-use core::convert::{From, Into};
-use core::slice;
-
-use super::char_data::BidiClass;
-
-/// Embedding Level
-///
-/// Embedding Levels are numbers between 0 and 126 (inclusive), where even values denote a
-/// left-to-right (LTR) direction and odd values a right-to-left (RTL) direction.
-///
-/// This struct maintains a *valid* status for level numbers, meaning that creating a new level, or
-/// mutating an existing level, with the value smaller than `0` (before conversion to `u8`) or
-/// larger than 125 results in an `Error`.
-///
-/// <http://www.unicode.org/reports/tr9/#BD2>
-#[derive(Copy, Clone, Debug, Eq, Ord, PartialEq, PartialOrd)]
-#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
-#[repr(transparent)]
-pub struct Level(u8);
-
-pub const LTR_LEVEL: Level = Level(0);
-pub const RTL_LEVEL: Level = Level(1);
-
-const MAX_DEPTH: u8 = 125;
-/// During explicit level resolution, embedding level can go as high as `max_depth`.
-pub const MAX_EXPLICIT_DEPTH: u8 = MAX_DEPTH;
-/// During implicit level resolution, embedding level can go as high as `max_depth + 1`.
-pub const MAX_IMPLICIT_DEPTH: u8 = MAX_DEPTH + 1;
-
-/// Errors that can occur on Level creation or mutation
-#[derive(Debug, PartialEq)]
-pub enum Error {
-    /// Out-of-range (invalid) embedding level number.
-    OutOfRangeNumber,
-}
-
-impl Level {
-    /// New LTR level with smallest number value (0).
-    #[inline]
-    pub fn ltr() -> Level {
-        LTR_LEVEL
-    }
-
-    /// New RTL level with smallest number value (1).
-    #[inline]
-    pub fn rtl() -> Level {
-        RTL_LEVEL
-    }
-
-    /// Maximum depth of the directional status stack during implicit resolutions.
-    pub fn max_implicit_depth() -> u8 {
-        MAX_IMPLICIT_DEPTH
-    }
-
-    /// Maximum depth of the directional status stack during explicit resolutions.
-    pub fn max_explicit_depth() -> u8 {
-        MAX_EXPLICIT_DEPTH
-    }
-
-    // == Inquiries ==
-
-    /// Create new level, fail if number is larger than `max_depth + 1`.
-    #[inline]
-    pub fn new(number: u8) -> Result<Level, Error> {
-        if number <= MAX_IMPLICIT_DEPTH {
-            Ok(Level(number))
-        } else {
-            Err(Error::OutOfRangeNumber)
-        }
-    }
-
-    /// Create new level, fail if number is larger than `max_depth`.
-    #[inline]
-    pub fn new_explicit(number: u8) -> Result<Level, Error> {
-        if number <= MAX_EXPLICIT_DEPTH {
-            Ok(Level(number))
-        } else {
-            Err(Error::OutOfRangeNumber)
-        }
-    }
-
-    // == Inquiries ==
-
-    /// The level number.
-    #[inline]
-    pub fn number(&self) -> u8 {
-        self.0
-    }
-
-    /// If this level is left-to-right.
-    #[inline]
-    pub fn is_ltr(&self) -> bool {
-        self.0 % 2 == 0
-    }
-
-    /// If this level is right-to-left.
-    #[inline]
-    pub fn is_rtl(&self) -> bool {
-        self.0 % 2 == 1
-    }
-
-    // == Mutators ==
-
-    /// Raise level by `amount`, fail if number is larger than `max_depth + 1`.
-    #[inline]
-    pub fn raise(&mut self, amount: u8) -> Result<(), Error> {
-        match self.0.checked_add(amount) {
-            Some(number) => {
-                if number <= MAX_IMPLICIT_DEPTH {
-                    self.0 = number;
-                    Ok(())
-                } else {
-                    Err(Error::OutOfRangeNumber)
-                }
-            }
-            None => Err(Error::OutOfRangeNumber),
-        }
-    }
-
-    /// Raise level by `amount`, fail if number is larger than `max_depth`.
-    #[inline]
-    pub fn raise_explicit(&mut self, amount: u8) -> Result<(), Error> {
-        match self.0.checked_add(amount) {
-            Some(number) => {
-                if number <= MAX_EXPLICIT_DEPTH {
-                    self.0 = number;
-                    Ok(())
-                } else {
-                    Err(Error::OutOfRangeNumber)
-                }
-            }
-            None => Err(Error::OutOfRangeNumber),
-        }
-    }
-
-    /// Lower level by `amount`, fail if number goes below zero.
-    #[inline]
-    pub fn lower(&mut self, amount: u8) -> Result<(), Error> {
-        match self.0.checked_sub(amount) {
-            Some(number) => {
-                self.0 = number;
-                Ok(())
-            }
-            None => Err(Error::OutOfRangeNumber),
-        }
-    }
-
-    // == Helpers ==
-
-    /// The next LTR (even) level greater than this, or fail if number is larger than `max_depth`.
-    #[inline]
-    pub fn new_explicit_next_ltr(&self) -> Result<Level, Error> {
-        Level::new_explicit((self.0 + 2) & !1)
-    }
-
-    /// The next RTL (odd) level greater than this, or fail if number is larger than `max_depth`.
-    #[inline]
-    pub fn new_explicit_next_rtl(&self) -> Result<Level, Error> {
-        Level::new_explicit((self.0 + 1) | 1)
-    }
-
-    /// The lowest RTL (odd) level greater than or equal to this, or fail if number is larger than
-    /// `max_depth + 1`.
-    #[inline]
-    pub fn new_lowest_ge_rtl(&self) -> Result<Level, Error> {
-        Level::new(self.0 | 1)
-    }
-
-    /// Generate a character type based on a level (as specified in steps X10 and N2).
-    #[inline]
-    pub fn bidi_class(&self) -> BidiClass {
-        if self.is_rtl() {
-            BidiClass::R
-        } else {
-            BidiClass::L
-        }
-    }
-
-    pub fn vec(v: &[u8]) -> Vec<Level> {
-        v.iter().map(|&x| x.into()).collect()
-    }
-
-    /// Converts a byte slice to a slice of Levels
-    ///
-    /// Does _not_ check if each level is within bounds (`<=` [`MAX_IMPLICIT_DEPTH`]),
-    /// which is not a requirement for safety but is a requirement for correctness of the algorithm.
-    pub fn from_slice_unchecked(v: &[u8]) -> &[Level] {
-        debug_assert_eq!(core::mem::size_of::<u8>(), core::mem::size_of::<Level>());
-        unsafe {
-            // Safety: The two arrays are the same size and layout-compatible since
-            // Level is `repr(transparent)` over `u8`
-            slice::from_raw_parts(v as *const [u8] as *const u8 as *const Level, v.len())
-        }
-    }
-}
-
-/// If levels has any RTL (odd) level
-///
-/// This information is usually used to skip re-ordering of text when no RTL level is present
-#[inline]
-pub fn has_rtl(levels: &[Level]) -> bool {
-    levels.iter().any(|&lvl| lvl.is_rtl())
-}
-
-impl Into<u8> for Level {
-    /// Convert to the level number
-    #[inline]
-    fn into(self) -> u8 {
-        self.number()
-    }
-}
-
-impl From<u8> for Level {
-    /// Create level by number
-    #[inline]
-    fn from(number: u8) -> Level {
-        Level::new(number).expect("Level number error")
-    }
-}
-
-/// Used for matching levels in conformance tests
-impl<'a> PartialEq<&'a str> for Level {
-    #[inline]
-    fn eq(&self, s: &&'a str) -> bool {
-        *s == "x" || *s == self.0.to_string()
-    }
-}
-
-/// Used for matching levels in conformance tests
-impl<'a> PartialEq<String> for Level {
-    #[inline]
-    fn eq(&self, s: &String) -> bool {
-        self == &s.as_str()
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn test_new() {
-        assert_eq!(Level::new(0), Ok(Level(0)));
-        assert_eq!(Level::new(1), Ok(Level(1)));
-        assert_eq!(Level::new(10), Ok(Level(10)));
-        assert_eq!(Level::new(125), Ok(Level(125)));
-        assert_eq!(Level::new(126), Ok(Level(126)));
-        assert_eq!(Level::new(127), Err(Error::OutOfRangeNumber));
-        assert_eq!(Level::new(255), Err(Error::OutOfRangeNumber));
-    }
-
-    #[test]
-    fn test_new_explicit() {
-        assert_eq!(Level::new_explicit(0), Ok(Level(0)));
-        assert_eq!(Level::new_explicit(1), Ok(Level(1)));
-        assert_eq!(Level::new_explicit(10), Ok(Level(10)));
-        assert_eq!(Level::new_explicit(125), Ok(Level(125)));
-        assert_eq!(Level::new_explicit(126), Err(Error::OutOfRangeNumber));
-        assert_eq!(Level::new_explicit(255), Err(Error::OutOfRangeNumber));
-    }
-
-    #[test]
-    fn test_is_ltr() {
-        assert_eq!(Level(0).is_ltr(), true);
-        assert_eq!(Level(1).is_ltr(), false);
-        assert_eq!(Level(10).is_ltr(), true);
-        assert_eq!(Level(11).is_ltr(), false);
-        assert_eq!(Level(124).is_ltr(), true);
-        assert_eq!(Level(125).is_ltr(), false);
-    }
-
-    #[test]
-    fn test_is_rtl() {
-        assert_eq!(Level(0).is_rtl(), false);
-        assert_eq!(Level(1).is_rtl(), true);
-        assert_eq!(Level(10).is_rtl(), false);
-        assert_eq!(Level(11).is_rtl(), true);
-        assert_eq!(Level(124).is_rtl(), false);
-        assert_eq!(Level(125).is_rtl(), true);
-    }
-
-    #[test]
-    fn test_raise() {
-        let mut level = Level::ltr();
-        assert_eq!(level.number(), 0);
-        assert!(level.raise(100).is_ok());
-        assert_eq!(level.number(), 100);
-        assert!(level.raise(26).is_ok());
-        assert_eq!(level.number(), 126);
-        assert!(level.raise(1).is_err()); // invalid!
-        assert!(level.raise(250).is_err()); // overflow!
-        assert_eq!(level.number(), 126);
-    }
-
-    #[test]
-    fn test_raise_explicit() {
-        let mut level = Level::ltr();
-        assert_eq!(level.number(), 0);
-        assert!(level.raise_explicit(100).is_ok());
-        assert_eq!(level.number(), 100);
-        assert!(level.raise_explicit(25).is_ok());
-        assert_eq!(level.number(), 125);
-        assert!(level.raise_explicit(1).is_err()); // invalid!
-        assert!(level.raise_explicit(250).is_err()); // overflow!
-        assert_eq!(level.number(), 125);
-    }
-
-    #[test]
-    fn test_lower() {
-        let mut level = Level::rtl();
-        assert_eq!(level.number(), 1);
-        assert!(level.lower(1).is_ok());
-        assert_eq!(level.number(), 0);
-        assert!(level.lower(1).is_err()); // underflow!
-        assert!(level.lower(250).is_err()); // underflow!
-        assert_eq!(level.number(), 0);
-    }
-
-    #[test]
-    fn test_has_rtl() {
-        assert_eq!(has_rtl(&Level::vec(&[0, 0, 0])), false);
-        assert_eq!(has_rtl(&Level::vec(&[0, 1, 0])), true);
-        assert_eq!(has_rtl(&Level::vec(&[0, 2, 0])), false);
-        assert_eq!(has_rtl(&Level::vec(&[0, 125, 0])), true);
-        assert_eq!(has_rtl(&Level::vec(&[0, 126, 0])), false);
-    }
-
-    #[test]
-    fn test_into() {
-        let level = Level::rtl();
-        let number: u8 = level.into();
-        assert_eq!(1u8, number);
-    }
-
-    #[test]
-    fn test_vec() {
-        assert_eq!(
-            Level::vec(&[0, 1, 125]),
-            vec![Level(0), Level(1), Level(125)]
-        );
-    }
-
-    #[test]
-    fn test_str_eq() {
-        assert_eq!(Level::vec(&[0, 1, 4, 125]), vec!["0", "1", "x", "125"]);
-        assert_ne!(Level::vec(&[0, 1, 4, 125]), vec!["0", "1", "5", "125"]);
-    }
-
-    #[test]
-    fn test_string_eq() {
-        assert_eq!(
-            Level::vec(&[0, 1, 4, 125]),
-            vec!["0".to_string(), "1".to_string(), "x".to_string(), "125".to_string()]
-        );
-    }
-}
-
-#[cfg(all(feature = "serde", test))]
-mod serde_tests {
-    use super::*;
-    use serde_test::{assert_tokens, Token};
-
-    #[test]
-    fn test_statics() {
-        assert_tokens(
-            &Level::ltr(),
-            &[Token::NewtypeStruct { name: "Level" }, Token::U8(0)],
-        );
-        assert_tokens(
-            &Level::rtl(),
-            &[Token::NewtypeStruct { name: "Level" }, Token::U8(1)],
-        );
-    }
-
-    #[test]
-    fn test_new() {
-        let level = Level::new(42).unwrap();
-        assert_tokens(
-            &level,
-            &[Token::NewtypeStruct { name: "Level" }, Token::U8(42)],
-        );
-    }
-}
diff --git a/vendor/unicode-bidi/src/lib.rs b/vendor/unicode-bidi/src/lib.rs
deleted file mode 100644
index 1072b67f..00000000
--- a/vendor/unicode-bidi/src/lib.rs
+++ /dev/null
@@ -1,2242 +0,0 @@
-// Copyright 2015 The Servo Project Developers. See the
-// COPYRIGHT file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! This crate implements the [Unicode Bidirectional Algorithm][tr9] for display of mixed
-//! right-to-left and left-to-right text.  It is written in safe Rust, compatible with the
-//! current stable release.
-//!
-//! ## Example
-//!
-//! ```rust
-//! # #[cfg(feature = "hardcoded-data")] {
-//! use unicode_bidi::BidiInfo;
-//!
-//! // This example text is defined using `concat!` because some browsers
-//! // and text editors have trouble displaying bidi strings.
-//! let text = concat![
-//!   "א",
-//!   "ב",
-//!   "ג",
-//!   "a",
-//!   "b",
-//!   "c",
-//! ];
-//!
-//! // Resolve embedding levels within the text.  Pass `None` to detect the
-//! // paragraph level automatically.
-//! let bidi_info = BidiInfo::new(&text, None);
-//!
-//! // This paragraph has embedding level 1 because its first strong character is RTL.
-//! assert_eq!(bidi_info.paragraphs.len(), 1);
-//! let para = &bidi_info.paragraphs[0];
-//! assert_eq!(para.level.number(), 1);
-//! assert_eq!(para.level.is_rtl(), true);
-//!
-//! // Re-ordering is done after wrapping each paragraph into a sequence of
-//! // lines. For this example, I'll just use a single line that spans the
-//! // entire paragraph.
-//! let line = para.range.clone();
-//!
-//! let display = bidi_info.reorder_line(para, line);
-//! assert_eq!(display, concat![
-//!   "a",
-//!   "b",
-//!   "c",
-//!   "ג",
-//!   "ב",
-//!   "א",
-//! ]);
-//! # } // feature = "hardcoded-data"
-//! ```
-//!
-//! # Features
-//!
-//! - `std`: Enabled by default, but can be disabled to make `unicode_bidi`
-//!   `#![no_std]` + `alloc` compatible.
-//! - `hardcoded-data`: Enabled by default. Includes hardcoded Unicode bidi data and more convenient APIs.
-//! - `serde`: Adds [`serde::Serialize`] and [`serde::Deserialize`]
-//!   implementations to relevant types.
-//!
-//! [tr9]: <http://www.unicode.org/reports/tr9/>
-
-#![no_std]
-// We need to link to std to make doc tests work on older Rust versions
-#[cfg(feature = "std")]
-extern crate std;
-#[macro_use]
-extern crate alloc;
-
-pub mod data_source;
-pub mod deprecated;
-pub mod format_chars;
-pub mod level;
-pub mod utf16;
-
-mod char_data;
-mod explicit;
-mod implicit;
-mod prepare;
-
-pub use crate::char_data::{BidiClass, UNICODE_VERSION};
-pub use crate::data_source::BidiDataSource;
-pub use crate::level::{Level, LTR_LEVEL, RTL_LEVEL};
-pub use crate::prepare::LevelRun;
-
-#[cfg(feature = "hardcoded-data")]
-pub use crate::char_data::{bidi_class, HardcodedBidiData};
-
-use alloc::borrow::Cow;
-use alloc::string::String;
-use alloc::vec::Vec;
-use core::char;
-use core::cmp;
-use core::iter::repeat;
-use core::ops::Range;
-use core::str::CharIndices;
-
-use crate::format_chars as chars;
-use crate::BidiClass::*;
-
-/// Trait that abstracts over a text source for use by the bidi algorithms.
-/// We implement this for str (UTF-8) and for [u16] (UTF-16, native-endian).
-/// (For internal unicode-bidi use; API may be unstable.)
-/// This trait is sealed and cannot be implemented for types outside this crate.
-pub trait TextSource<'text>: private::Sealed {
-    type CharIter: Iterator<Item = char>;
-    type CharIndexIter: Iterator<Item = (usize, char)>;
-    type IndexLenIter: Iterator<Item = (usize, usize)>;
-
-    /// Return the length of the text in code units.
-    #[doc(hidden)]
-    fn len(&self) -> usize;
-
-    /// Get the character at a given code unit index, along with its length in code units.
-    /// Returns None if index is out of range, or points inside a multi-code-unit character.
-    /// Returns REPLACEMENT_CHARACTER for any unpaired surrogates in UTF-16.
-    #[doc(hidden)]
-    fn char_at(&self, index: usize) -> Option<(char, usize)>;
-
-    /// Return a subrange of the text, indexed by code units.
-    /// (We don't implement all of the Index trait, just the minimum we use.)
-    #[doc(hidden)]
-    fn subrange(&self, range: Range<usize>) -> &Self;
-
-    /// An iterator over the text returning Unicode characters,
-    /// REPLACEMENT_CHAR for invalid code units.
-    #[doc(hidden)]
-    fn chars(&'text self) -> Self::CharIter;
-
-    /// An iterator over the text returning (index, char) tuples,
-    /// where index is the starting code-unit index of the character,
-    /// and char is its Unicode value (or REPLACEMENT_CHAR if invalid).
-    #[doc(hidden)]
-    fn char_indices(&'text self) -> Self::CharIndexIter;
-
-    /// An iterator over the text returning (index, length) tuples,
-    /// where index is the starting code-unit index of the character,
-    /// and length is its length in code units.
-    #[doc(hidden)]
-    fn indices_lengths(&'text self) -> Self::IndexLenIter;
-
-    /// Number of code units the given character uses.
-    #[doc(hidden)]
-    fn char_len(ch: char) -> usize;
-}
-
-mod private {
-    pub trait Sealed {}
-
-    // Implement for str and [u16] only.
-    impl Sealed for str {}
-    impl Sealed for [u16] {}
-}
-
-#[derive(PartialEq, Debug)]
-pub enum Direction {
-    Ltr,
-    Rtl,
-    Mixed,
-}
-
-/// Bidi information about a single paragraph
-#[derive(Clone, Debug, PartialEq)]
-pub struct ParagraphInfo {
-    /// The paragraphs boundaries within the text, as byte indices.
-    ///
-    /// TODO: Shrink this to only include the starting index?
-    pub range: Range<usize>,
-
-    /// The paragraph embedding level.
-    ///
-    /// <http://www.unicode.org/reports/tr9/#BD4>
-    pub level: Level,
-}
-
-impl ParagraphInfo {
-    /// Gets the length of the paragraph in the source text.
-    pub fn len(&self) -> usize {
-        self.range.end - self.range.start
-    }
-}
-
-/// Initial bidi information of the text.
-///
-/// Contains the text paragraphs and `BidiClass` of its characters.
-#[derive(PartialEq, Debug)]
-pub struct InitialInfo<'text> {
-    /// The text
-    pub text: &'text str,
-
-    /// The BidiClass of the character at each byte in the text.
-    /// If a character is multiple bytes, its class will appear multiple times in the vector.
-    pub original_classes: Vec<BidiClass>,
-
-    /// The boundaries and level of each paragraph within the text.
-    pub paragraphs: Vec<ParagraphInfo>,
-}
-
-impl<'text> InitialInfo<'text> {
-    /// Find the paragraphs and BidiClasses in a string of text.
-    ///
-    /// <http://www.unicode.org/reports/tr9/#The_Paragraph_Level>
-    ///
-    /// Also sets the class for each First Strong Isolate initiator (FSI) to LRI or RLI if a strong
-    /// character is found before the matching PDI.  If no strong character is found, the class will
-    /// remain FSI, and it's up to later stages to treat these as LRI when needed.
-    ///
-    /// The `hardcoded-data` Cargo feature (enabled by default) must be enabled to use this.
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[cfg(feature = "hardcoded-data")]
-    pub fn new(text: &str, default_para_level: Option<Level>) -> InitialInfo<'_> {
-        Self::new_with_data_source(&HardcodedBidiData, text, default_para_level)
-    }
-
-    /// Find the paragraphs and BidiClasses in a string of text, with a custom [`BidiDataSource`]
-    /// for Bidi data. If you just wish to use the hardcoded Bidi data, please use [`InitialInfo::new()`]
-    /// instead (enabled with tbe default `hardcoded-data` Cargo feature)
-    ///
-    /// <http://www.unicode.org/reports/tr9/#The_Paragraph_Level>
-    ///
-    /// Also sets the class for each First Strong Isolate initiator (FSI) to LRI or RLI if a strong
-    /// character is found before the matching PDI.  If no strong character is found, the class will
-    /// remain FSI, and it's up to later stages to treat these as LRI when needed.
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn new_with_data_source<'a, D: BidiDataSource>(
-        data_source: &D,
-        text: &'a str,
-        default_para_level: Option<Level>,
-    ) -> InitialInfo<'a> {
-        InitialInfoExt::new_with_data_source(data_source, text, default_para_level).base
-    }
-}
-
-/// Extended version of InitialInfo (not public API).
-#[derive(PartialEq, Debug)]
-struct InitialInfoExt<'text> {
-    /// The base InitialInfo for the text, recording its paragraphs and bidi classes.
-    base: InitialInfo<'text>,
-
-    /// Parallel to base.paragraphs, records whether each paragraph is "pure LTR" that
-    /// requires no further bidi processing (i.e. there are no RTL characters or bidi
-    /// control codes present).
-    pure_ltr: Vec<bool>,
-}
-
-impl<'text> InitialInfoExt<'text> {
-    /// Find the paragraphs and BidiClasses in a string of text, with a custom [`BidiDataSource`]
-    /// for Bidi data. If you just wish to use the hardcoded Bidi data, please use [`InitialInfo::new()`]
-    /// instead (enabled with tbe default `hardcoded-data` Cargo feature)
-    ///
-    /// <http://www.unicode.org/reports/tr9/#The_Paragraph_Level>
-    ///
-    /// Also sets the class for each First Strong Isolate initiator (FSI) to LRI or RLI if a strong
-    /// character is found before the matching PDI.  If no strong character is found, the class will
-    /// remain FSI, and it's up to later stages to treat these as LRI when needed.
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn new_with_data_source<'a, D: BidiDataSource>(
-        data_source: &D,
-        text: &'a str,
-        default_para_level: Option<Level>,
-    ) -> InitialInfoExt<'a> {
-        let mut paragraphs = Vec::<ParagraphInfo>::new();
-        let mut pure_ltr = Vec::<bool>::new();
-        let (original_classes, _, _) = compute_initial_info(
-            data_source,
-            text,
-            default_para_level,
-            Some((&mut paragraphs, &mut pure_ltr)),
-        );
-
-        InitialInfoExt {
-            base: InitialInfo {
-                text,
-                original_classes,
-                paragraphs,
-            },
-            pure_ltr,
-        }
-    }
-}
-
-/// Implementation of initial-info computation for both BidiInfo and ParagraphBidiInfo.
-/// To treat the text as (potentially) multiple paragraphs, the caller should pass the
-/// pair of optional outparam arrays to receive the ParagraphInfo and pure-ltr flags
-/// for each paragraph. Passing None for split_paragraphs will ignore any paragraph-
-/// separator characters in the text, treating it just as a single paragraph.
-/// Returns the array of BidiClass values for each code unit of the text, along with
-/// the embedding level and pure-ltr flag for the *last* (or only) paragraph.
-fn compute_initial_info<'a, D: BidiDataSource, T: TextSource<'a> + ?Sized>(
-    data_source: &D,
-    text: &'a T,
-    default_para_level: Option<Level>,
-    mut split_paragraphs: Option<(&mut Vec<ParagraphInfo>, &mut Vec<bool>)>,
-) -> (Vec<BidiClass>, Level, bool) {
-    let mut original_classes = Vec::with_capacity(text.len());
-
-    // The stack contains the starting code unit index for each nested isolate we're inside.
-    let mut isolate_stack = Vec::new();
-
-    debug_assert!(
-        if let Some((ref paragraphs, ref pure_ltr)) = split_paragraphs {
-            paragraphs.is_empty() && pure_ltr.is_empty()
-        } else {
-            true
-        }
-    );
-
-    let mut para_start = 0;
-    let mut para_level = default_para_level;
-
-    // Per-paragraph flag: can subsequent processing be skipped? Set to false if any
-    // RTL characters or bidi control characters are encountered in the paragraph.
-    let mut is_pure_ltr = true;
-
-    #[cfg(feature = "flame_it")]
-    flame::start("compute_initial_info(): iter text.char_indices()");
-
-    for (i, c) in text.char_indices() {
-        let class = data_source.bidi_class(c);
-
-        #[cfg(feature = "flame_it")]
-        flame::start("original_classes.extend()");
-
-        let len = T::char_len(c);
-        original_classes.extend(repeat(class).take(len));
-
-        #[cfg(feature = "flame_it")]
-        flame::end("original_classes.extend()");
-
-        match class {
-            B => {
-                if let Some((ref mut paragraphs, ref mut pure_ltr)) = split_paragraphs {
-                    // P1. Split the text into separate paragraphs. The paragraph separator is kept
-                    // with the previous paragraph.
-                    let para_end = i + len;
-                    paragraphs.push(ParagraphInfo {
-                        range: para_start..para_end,
-                        // P3. If no character is found in p2, set the paragraph level to zero.
-                        level: para_level.unwrap_or(LTR_LEVEL),
-                    });
-                    pure_ltr.push(is_pure_ltr);
-                    // Reset state for the start of the next paragraph.
-                    para_start = para_end;
-                    // TODO: Support defaulting to direction of previous paragraph
-                    //
-                    // <http://www.unicode.org/reports/tr9/#HL1>
-                    para_level = default_para_level;
-                    is_pure_ltr = true;
-                    isolate_stack.clear();
-                }
-            }
-
-            L | R | AL => {
-                if class != L {
-                    is_pure_ltr = false;
-                }
-                match isolate_stack.last() {
-                    Some(&start) => {
-                        if original_classes[start] == FSI {
-                            // X5c. If the first strong character between FSI and its matching
-                            // PDI is R or AL, treat it as RLI. Otherwise, treat it as LRI.
-                            for j in 0..T::char_len(chars::FSI) {
-                                original_classes[start + j] = if class == L { LRI } else { RLI };
-                            }
-                        }
-                    }
-
-                    None => {
-                        if para_level.is_none() {
-                            // P2. Find the first character of type L, AL, or R, while skipping
-                            // any characters between an isolate initiator and its matching
-                            // PDI.
-                            para_level = Some(if class != L { RTL_LEVEL } else { LTR_LEVEL });
-                        }
-                    }
-                }
-            }
-
-            AN | LRE | RLE | LRO | RLO => {
-                is_pure_ltr = false;
-            }
-
-            RLI | LRI | FSI => {
-                is_pure_ltr = false;
-                isolate_stack.push(i);
-            }
-
-            PDI => {
-                isolate_stack.pop();
-            }
-
-            _ => {}
-        }
-    }
-
-    if let Some((paragraphs, pure_ltr)) = split_paragraphs {
-        if para_start < text.len() {
-            paragraphs.push(ParagraphInfo {
-                range: para_start..text.len(),
-                level: para_level.unwrap_or(LTR_LEVEL),
-            });
-            pure_ltr.push(is_pure_ltr);
-        }
-        debug_assert_eq!(paragraphs.len(), pure_ltr.len());
-    }
-    debug_assert_eq!(original_classes.len(), text.len());
-
-    #[cfg(feature = "flame_it")]
-    flame::end("compute_initial_info(): iter text.char_indices()");
-
-    (
-        original_classes,
-        para_level.unwrap_or(LTR_LEVEL),
-        is_pure_ltr,
-    )
-}
-
-/// Bidi information of the text.
-///
-/// The `original_classes` and `levels` vectors are indexed by byte offsets into the text.  If a
-/// character is multiple bytes wide, then its class and level will appear multiple times in these
-/// vectors.
-// TODO: Impl `struct StringProperty<T> { values: Vec<T> }` and use instead of Vec<T>
-#[derive(Debug, PartialEq)]
-pub struct BidiInfo<'text> {
-    /// The text
-    pub text: &'text str,
-
-    /// The BidiClass of the character at each byte in the text.
-    pub original_classes: Vec<BidiClass>,
-
-    /// The directional embedding level of each byte in the text.
-    pub levels: Vec<Level>,
-
-    /// The boundaries and paragraph embedding level of each paragraph within the text.
-    ///
-    /// TODO: Use SmallVec or similar to avoid overhead when there are only one or two paragraphs?
-    /// Or just don't include the first paragraph, which always starts at 0?
-    pub paragraphs: Vec<ParagraphInfo>,
-}
-
-impl<'text> BidiInfo<'text> {
-    /// Split the text into paragraphs and determine the bidi embedding levels for each paragraph.
-    ///
-    ///
-    /// The `hardcoded-data` Cargo feature (enabled by default) must be enabled to use this.
-    ///
-    /// TODO: In early steps, check for special cases that allow later steps to be skipped. like
-    /// text that is entirely LTR.  See the `nsBidi` class from Gecko for comparison.
-    ///
-    /// TODO: Support auto-RTL base direction
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[cfg(feature = "hardcoded-data")]
-    #[inline]
-    pub fn new(text: &str, default_para_level: Option<Level>) -> BidiInfo<'_> {
-        Self::new_with_data_source(&HardcodedBidiData, text, default_para_level)
-    }
-
-    /// Split the text into paragraphs and determine the bidi embedding levels for each paragraph, with a custom [`BidiDataSource`]
-    /// for Bidi data. If you just wish to use the hardcoded Bidi data, please use [`BidiInfo::new()`]
-    /// instead (enabled with tbe default `hardcoded-data` Cargo feature).
-    ///
-    /// TODO: In early steps, check for special cases that allow later steps to be skipped. like
-    /// text that is entirely LTR.  See the `nsBidi` class from Gecko for comparison.
-    ///
-    /// TODO: Support auto-RTL base direction
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn new_with_data_source<'a, D: BidiDataSource>(
-        data_source: &D,
-        text: &'a str,
-        default_para_level: Option<Level>,
-    ) -> BidiInfo<'a> {
-        let InitialInfoExt { base, pure_ltr, .. } =
-            InitialInfoExt::new_with_data_source(data_source, text, default_para_level);
-
-        let mut levels = Vec::<Level>::with_capacity(text.len());
-        let mut processing_classes = base.original_classes.clone();
-
-        for (para, is_pure_ltr) in base.paragraphs.iter().zip(pure_ltr.iter()) {
-            let text = &text[para.range.clone()];
-            let original_classes = &base.original_classes[para.range.clone()];
-
-            compute_bidi_info_for_para(
-                data_source,
-                para,
-                *is_pure_ltr,
-                text,
-                original_classes,
-                &mut processing_classes,
-                &mut levels,
-            );
-        }
-
-        BidiInfo {
-            text,
-            original_classes: base.original_classes,
-            paragraphs: base.paragraphs,
-            levels,
-        }
-    }
-
-    /// Produce the levels for this paragraph as needed for reordering, one level per *byte*
-    /// in the paragraph. The returned vector includes bytes that are not included
-    /// in the `line`, but will not adjust them.
-    ///
-    /// This runs [Rule L1], you can run
-    /// [Rule L2] by calling [`Self::reorder_visual()`].
-    /// If doing so, you may prefer to use [`Self::reordered_levels_per_char()`] instead
-    /// to avoid non-byte indices.
-    ///
-    /// For an all-in-one reordering solution, consider using [`Self::reorder_visual()`].
-    ///
-    /// [Rule L1]: https://www.unicode.org/reports/tr9/#L1
-    /// [Rule L2]: https://www.unicode.org/reports/tr9/#L2
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reordered_levels(&self, para: &ParagraphInfo, line: Range<usize>) -> Vec<Level> {
-        assert!(line.start <= self.levels.len());
-        assert!(line.end <= self.levels.len());
-
-        let mut levels = self.levels.clone();
-        let line_classes = &self.original_classes[line.clone()];
-        let line_levels = &mut levels[line.clone()];
-
-        reorder_levels(
-            line_classes,
-            line_levels,
-            self.text.subrange(line),
-            para.level,
-        );
-
-        levels
-    }
-
-    /// Produce the levels for this paragraph as needed for reordering, one level per *character*
-    /// in the paragraph. The returned vector includes characters that are not included
-    /// in the `line`, but will not adjust them.
-    ///
-    /// This runs [Rule L1], you can run
-    /// [Rule L2] by calling [`Self::reorder_visual()`].
-    /// If doing so, you may prefer to use [`Self::reordered_levels_per_char()`] instead
-    /// to avoid non-byte indices.
-    ///
-    /// For an all-in-one reordering solution, consider using [`Self::reorder_visual()`].
-    ///
-    /// [Rule L1]: https://www.unicode.org/reports/tr9/#L1
-    /// [Rule L2]: https://www.unicode.org/reports/tr9/#L2
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reordered_levels_per_char(
-        &self,
-        para: &ParagraphInfo,
-        line: Range<usize>,
-    ) -> Vec<Level> {
-        let levels = self.reordered_levels(para, line);
-        self.text.char_indices().map(|(i, _)| levels[i]).collect()
-    }
-
-    /// Re-order a line based on resolved levels and return the line in display order.
-    ///
-    /// This does not apply [Rule L3] or [Rule L4] around combining characters or mirroring.
-    ///
-    /// [Rule L3]: https://www.unicode.org/reports/tr9/#L3
-    /// [Rule L4]: https://www.unicode.org/reports/tr9/#L4
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reorder_line(&self, para: &ParagraphInfo, line: Range<usize>) -> Cow<'text, str> {
-        if !level::has_rtl(&self.levels[line.clone()]) {
-            return self.text[line].into();
-        }
-        let (levels, runs) = self.visual_runs(para, line.clone());
-        reorder_line(self.text, line, levels, runs)
-    }
-
-    /// Reorders pre-calculated levels of a sequence of characters.
-    ///
-    /// NOTE: This is a convenience method that does not use a `Paragraph`  object. It is
-    /// intended to be used when an application has determined the levels of the objects (character sequences)
-    /// and just needs to have them reordered.
-    ///
-    /// the index map will result in `indexMap[visualIndex]==logicalIndex`.
-    ///
-    /// This only runs [Rule L2](http://www.unicode.org/reports/tr9/#L2) as it does not have
-    /// information about the actual text.
-    ///
-    /// Furthermore, if `levels` is an array that is aligned with code units, bytes within a codepoint may be
-    /// reversed. You may need to fix up the map to deal with this. Alternatively, only pass in arrays where each `Level`
-    /// is for a single code point.
-    ///
-    ///
-    ///   # # Example
-    /// ```
-    /// use unicode_bidi::BidiInfo;
-    /// use unicode_bidi::Level;
-    ///
-    /// let l0 = Level::from(0);
-    /// let l1 = Level::from(1);
-    /// let l2 = Level::from(2);
-    ///
-    /// let levels = vec![l0, l0, l0, l0];
-    /// let index_map = BidiInfo::reorder_visual(&levels);
-    /// assert_eq!(levels.len(), index_map.len());
-    /// assert_eq!(index_map, [0, 1, 2, 3]);
-    ///
-    /// let levels: Vec<Level> = vec![l0, l0, l0, l1, l1, l1, l2, l2];
-    /// let index_map = BidiInfo::reorder_visual(&levels);
-    /// assert_eq!(levels.len(), index_map.len());
-    /// assert_eq!(index_map, [0, 1, 2, 6, 7, 5, 4, 3]);
-    /// ```
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[inline]
-    pub fn reorder_visual(levels: &[Level]) -> Vec<usize> {
-        reorder_visual(levels)
-    }
-
-    /// Find the level runs within a line and return them in visual order.
-    ///
-    /// `line` is a range of bytes indices within `levels`.
-    ///
-    /// The first return value is a vector of levels used by the reordering algorithm,
-    /// i.e. the result of [Rule L1]. The second return value is a vector of level runs,
-    /// the result of [Rule L2], showing the visual order that each level run (a run of text with the
-    /// same level) should be displayed. Within each run, the display order can be checked
-    /// against the Level vector.
-    ///
-    /// This does not handle [Rule L3] (combining characters) or [Rule L4] (mirroring),
-    /// as that should be handled by the engine using this API.
-    ///
-    /// Conceptually, this is the same as running [`Self::reordered_levels()`] followed by
-    /// [`Self::reorder_visual()`], however it returns the result as a list of level runs instead
-    /// of producing a level map, since one may wish to deal with the fact that this is operating on
-    /// byte rather than character indices.
-    ///
-    /// <http://www.unicode.org/reports/tr9/#Reordering_Resolved_Levels>
-    ///
-    /// [Rule L1]: https://www.unicode.org/reports/tr9/#L1
-    /// [Rule L2]: https://www.unicode.org/reports/tr9/#L2
-    /// [Rule L3]: https://www.unicode.org/reports/tr9/#L3
-    /// [Rule L4]: https://www.unicode.org/reports/tr9/#L4
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[inline]
-    pub fn visual_runs(
-        &self,
-        para: &ParagraphInfo,
-        line: Range<usize>,
-    ) -> (Vec<Level>, Vec<LevelRun>) {
-        let levels = self.reordered_levels(para, line.clone());
-        visual_runs_for_line(levels, &line)
-    }
-
-    /// If processed text has any computed RTL levels
-    ///
-    /// This information is usually used to skip re-ordering of text when no RTL level is present
-    #[inline]
-    pub fn has_rtl(&self) -> bool {
-        level::has_rtl(&self.levels)
-    }
-}
-
-/// Bidi information of text treated as a single paragraph.
-///
-/// The `original_classes` and `levels` vectors are indexed by byte offsets into the text.  If a
-/// character is multiple bytes wide, then its class and level will appear multiple times in these
-/// vectors.
-#[derive(Debug, PartialEq)]
-pub struct ParagraphBidiInfo<'text> {
-    /// The text
-    pub text: &'text str,
-
-    /// The BidiClass of the character at each byte in the text.
-    pub original_classes: Vec<BidiClass>,
-
-    /// The directional embedding level of each byte in the text.
-    pub levels: Vec<Level>,
-
-    /// The paragraph embedding level.
-    pub paragraph_level: Level,
-
-    /// Whether the paragraph is purely LTR.
-    pub is_pure_ltr: bool,
-}
-
-impl<'text> ParagraphBidiInfo<'text> {
-    /// Determine the bidi embedding level.
-    ///
-    ///
-    /// The `hardcoded-data` Cargo feature (enabled by default) must be enabled to use this.
-    ///
-    /// TODO: In early steps, check for special cases that allow later steps to be skipped. like
-    /// text that is entirely LTR.  See the `nsBidi` class from Gecko for comparison.
-    ///
-    /// TODO: Support auto-RTL base direction
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[cfg(feature = "hardcoded-data")]
-    #[inline]
-    pub fn new(text: &str, default_para_level: Option<Level>) -> ParagraphBidiInfo<'_> {
-        Self::new_with_data_source(&HardcodedBidiData, text, default_para_level)
-    }
-
-    /// Determine the bidi embedding level, with a custom [`BidiDataSource`]
-    /// for Bidi data. If you just wish to use the hardcoded Bidi data, please use [`BidiInfo::new()`]
-    /// instead (enabled with tbe default `hardcoded-data` Cargo feature).
-    ///
-    /// (This is the single-paragraph equivalent of BidiInfo::new_with_data_source,
-    /// and should be kept in sync with it.
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn new_with_data_source<'a, D: BidiDataSource>(
-        data_source: &D,
-        text: &'a str,
-        default_para_level: Option<Level>,
-    ) -> ParagraphBidiInfo<'a> {
-        // Here we could create a ParagraphInitialInfo struct to parallel the one
-        // used by BidiInfo, but there doesn't seem any compelling reason for it.
-        let (original_classes, paragraph_level, is_pure_ltr) =
-            compute_initial_info(data_source, text, default_para_level, None);
-
-        let mut levels = Vec::<Level>::with_capacity(text.len());
-        let mut processing_classes = original_classes.clone();
-
-        let para_info = ParagraphInfo {
-            range: Range {
-                start: 0,
-                end: text.len(),
-            },
-            level: paragraph_level,
-        };
-
-        compute_bidi_info_for_para(
-            data_source,
-            &para_info,
-            is_pure_ltr,
-            text,
-            &original_classes,
-            &mut processing_classes,
-            &mut levels,
-        );
-
-        ParagraphBidiInfo {
-            text,
-            original_classes,
-            levels,
-            paragraph_level,
-            is_pure_ltr,
-        }
-    }
-
-    /// Produce the levels for this paragraph as needed for reordering, one level per *byte*
-    /// in the paragraph. The returned vector includes bytes that are not included
-    /// in the `line`, but will not adjust them.
-    ///
-    /// See BidiInfo::reordered_levels for details.
-    ///
-    /// (This should be kept in sync with BidiInfo::reordered_levels.)
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reordered_levels(&self, line: Range<usize>) -> Vec<Level> {
-        assert!(line.start <= self.levels.len());
-        assert!(line.end <= self.levels.len());
-
-        let mut levels = self.levels.clone();
-        let line_classes = &self.original_classes[line.clone()];
-        let line_levels = &mut levels[line.clone()];
-
-        reorder_levels(
-            line_classes,
-            line_levels,
-            self.text.subrange(line),
-            self.paragraph_level,
-        );
-
-        levels
-    }
-
-    /// Produce the levels for this paragraph as needed for reordering, one level per *character*
-    /// in the paragraph. The returned vector includes characters that are not included
-    /// in the `line`, but will not adjust them.
-    ///
-    /// See BidiInfo::reordered_levels_per_char for details.
-    ///
-    /// (This should be kept in sync with BidiInfo::reordered_levels_per_char.)
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reordered_levels_per_char(&self, line: Range<usize>) -> Vec<Level> {
-        let levels = self.reordered_levels(line);
-        self.text.char_indices().map(|(i, _)| levels[i]).collect()
-    }
-
-    /// Re-order a line based on resolved levels and return the line in display order.
-    ///
-    /// See BidiInfo::reorder_line for details.
-    ///
-    /// (This should be kept in sync with BidiInfo::reorder_line.)
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reorder_line(&self, line: Range<usize>) -> Cow<'text, str> {
-        if !level::has_rtl(&self.levels[line.clone()]) {
-            return self.text[line].into();
-        }
-
-        let (levels, runs) = self.visual_runs(line.clone());
-
-        reorder_line(self.text, line, levels, runs)
-    }
-
-    /// Reorders pre-calculated levels of a sequence of characters.
-    ///
-    /// See BidiInfo::reorder_visual for details.
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[inline]
-    pub fn reorder_visual(levels: &[Level]) -> Vec<usize> {
-        reorder_visual(levels)
-    }
-
-    /// Find the level runs within a line and return them in visual order.
-    ///
-    /// `line` is a range of bytes indices within `levels`.
-    ///
-    /// See BidiInfo::visual_runs for details.
-    ///
-    /// (This should be kept in sync with BidiInfo::visual_runs.)
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[inline]
-    pub fn visual_runs(&self, line: Range<usize>) -> (Vec<Level>, Vec<LevelRun>) {
-        let levels = self.reordered_levels(line.clone());
-        visual_runs_for_line(levels, &line)
-    }
-
-    /// If processed text has any computed RTL levels
-    ///
-    /// This information is usually used to skip re-ordering of text when no RTL level is present
-    #[inline]
-    pub fn has_rtl(&self) -> bool {
-        !self.is_pure_ltr
-    }
-
-    /// Return the paragraph's Direction (Ltr, Rtl, or Mixed) based on its levels.
-    #[inline]
-    pub fn direction(&self) -> Direction {
-        para_direction(&self.levels)
-    }
-}
-
-/// Return a line of the text in display order based on resolved levels.
-///
-/// `text`   the full text passed to the `BidiInfo` or `ParagraphBidiInfo` for analysis
-/// `line`   a range of byte indices within `text` corresponding to one line
-/// `levels` array of `Level` values, with `line`'s levels reordered into visual order
-/// `runs`   array of `LevelRun`s in visual order
-///
-/// (`levels` and `runs` are the result of calling `BidiInfo::visual_runs()` or
-/// `ParagraphBidiInfo::visual_runs()` for the line of interest.)
-///
-/// Returns: the reordered text of the line.
-///
-/// This does not apply [Rule L3] or [Rule L4] around combining characters or mirroring.
-///
-/// [Rule L3]: https://www.unicode.org/reports/tr9/#L3
-/// [Rule L4]: https://www.unicode.org/reports/tr9/#L4
-fn reorder_line<'text>(
-    text: &'text str,
-    line: Range<usize>,
-    levels: Vec<Level>,
-    runs: Vec<LevelRun>,
-) -> Cow<'text, str> {
-    // If all isolating run sequences are LTR, no reordering is needed
-    if runs.iter().all(|run| levels[run.start].is_ltr()) {
-        return text[line].into();
-    }
-
-    let mut result = String::with_capacity(line.len());
-    for run in runs {
-        if levels[run.start].is_rtl() {
-            result.extend(text[run].chars().rev());
-        } else {
-            result.push_str(&text[run]);
-        }
-    }
-    result.into()
-}
-
-/// Find the level runs within a line and return them in visual order.
-///
-/// `line` is a range of code-unit indices within `levels`.
-///
-/// The first return value is a vector of levels used by the reordering algorithm,
-/// i.e. the result of [Rule L1]. The second return value is a vector of level runs,
-/// the result of [Rule L2], showing the visual order that each level run (a run of text with the
-/// same level) should be displayed. Within each run, the display order can be checked
-/// against the Level vector.
-///
-/// This does not handle [Rule L3] (combining characters) or [Rule L4] (mirroring),
-/// as that should be handled by the engine using this API.
-///
-/// Conceptually, this is the same as running [`reordered_levels()`] followed by
-/// [`reorder_visual()`], however it returns the result as a list of level runs instead
-/// of producing a level map, since one may wish to deal with the fact that this is operating on
-/// byte rather than character indices.
-///
-/// <http://www.unicode.org/reports/tr9/#Reordering_Resolved_Levels>
-///
-/// [Rule L1]: https://www.unicode.org/reports/tr9/#L1
-/// [Rule L2]: https://www.unicode.org/reports/tr9/#L2
-/// [Rule L3]: https://www.unicode.org/reports/tr9/#L3
-/// [Rule L4]: https://www.unicode.org/reports/tr9/#L4
-fn visual_runs_for_line(levels: Vec<Level>, line: &Range<usize>) -> (Vec<Level>, Vec<LevelRun>) {
-    // Find consecutive level runs.
-    let mut runs = Vec::new();
-    let mut start = line.start;
-    let mut run_level = levels[start];
-    let mut min_level = run_level;
-    let mut max_level = run_level;
-
-    for (i, &new_level) in levels.iter().enumerate().take(line.end).skip(start + 1) {
-        if new_level != run_level {
-            // End of the previous run, start of a new one.
-            runs.push(start..i);
-            start = i;
-            run_level = new_level;
-            min_level = cmp::min(run_level, min_level);
-            max_level = cmp::max(run_level, max_level);
-        }
-    }
-    runs.push(start..line.end);
-
-    let run_count = runs.len();
-
-    // Re-order the odd runs.
-    // <http://www.unicode.org/reports/tr9/#L2>
-
-    // Stop at the lowest *odd* level.
-    min_level = min_level.new_lowest_ge_rtl().expect("Level error");
-    // This loop goes through contiguous chunks of level runs that have a level
-    // ≥ max_level and reverses their contents, reducing max_level by 1 each time.
-    while max_level >= min_level {
-        // Look for the start of a sequence of consecutive runs of max_level or higher.
-        let mut seq_start = 0;
-        while seq_start < run_count {
-            if levels[runs[seq_start].start] < max_level {
-                seq_start += 1;
-                continue;
-            }
-
-            // Found the start of a sequence. Now find the end.
-            let mut seq_end = seq_start + 1;
-            while seq_end < run_count {
-                if levels[runs[seq_end].start] < max_level {
-                    break;
-                }
-                seq_end += 1;
-            }
-            // Reverse the runs within this sequence.
-            runs[seq_start..seq_end].reverse();
-
-            seq_start = seq_end;
-        }
-        max_level
-            .lower(1)
-            .expect("Lowering embedding level below zero");
-    }
-    (levels, runs)
-}
-
-/// Reorders pre-calculated levels of a sequence of characters.
-///
-/// NOTE: This is a convenience method that does not use a `Paragraph`  object. It is
-/// intended to be used when an application has determined the levels of the objects (character sequences)
-/// and just needs to have them reordered.
-///
-/// the index map will result in `indexMap[visualIndex]==logicalIndex`.
-///
-/// This only runs [Rule L2](http://www.unicode.org/reports/tr9/#L2) as it does not have
-/// information about the actual text.
-///
-/// Furthermore, if `levels` is an array that is aligned with code units, bytes within a codepoint may be
-/// reversed. You may need to fix up the map to deal with this. Alternatively, only pass in arrays where each `Level`
-/// is for a single code point.
-fn reorder_visual(levels: &[Level]) -> Vec<usize> {
-    // Gets the next range of characters after start_index with a level greater
-    // than or equal to `max`
-    fn next_range(levels: &[level::Level], mut start_index: usize, max: Level) -> Range<usize> {
-        if levels.is_empty() || start_index >= levels.len() {
-            return start_index..start_index;
-        }
-        while let Some(l) = levels.get(start_index) {
-            if *l >= max {
-                break;
-            }
-            start_index += 1;
-        }
-
-        if levels.get(start_index).is_none() {
-            // If at the end of the array, adding one will
-            // produce an out-of-range end element
-            return start_index..start_index;
-        }
-
-        let mut end_index = start_index + 1;
-        while let Some(l) = levels.get(end_index) {
-            if *l < max {
-                return start_index..end_index;
-            }
-            end_index += 1;
-        }
-
-        start_index..end_index
-    }
-
-    // This implementation is similar to the L2 implementation in `visual_runs()`
-    // but it cannot benefit from a precalculated LevelRun vector so needs to be different.
-
-    if levels.is_empty() {
-        return vec![];
-    }
-
-    // Get the min and max levels
-    let (mut min, mut max) = levels
-        .iter()
-        .fold((levels[0], levels[0]), |(min, max), &l| {
-            (cmp::min(min, l), cmp::max(max, l))
-        });
-
-    // Initialize an index map
-    let mut result: Vec<usize> = (0..levels.len()).collect();
-
-    if min == max && min.is_ltr() {
-        // Everything is LTR and at the same level, do nothing
-        return result;
-    }
-
-    // Stop at the lowest *odd* level, since everything below that
-    // is LTR and does not need further reordering
-    min = min.new_lowest_ge_rtl().expect("Level error");
-
-    // For each max level, take all contiguous chunks of
-    // levels ≥ max and reverse them
-    //
-    // We can do this check with the original levels instead of checking reorderings because all
-    // prior reorderings will have been for contiguous chunks of levels >> max, which will
-    // be a subset of these chunks anyway.
-    while min <= max {
-        let mut range = 0..0;
-        loop {
-            range = next_range(levels, range.end, max);
-            result[range.clone()].reverse();
-
-            if range.end >= levels.len() {
-                break;
-            }
-        }
-
-        max.lower(1).expect("Level error");
-    }
-
-    result
-}
-
-/// The core of BidiInfo initialization, factored out into a function that both
-/// the utf-8 and utf-16 versions of BidiInfo can use.
-fn compute_bidi_info_for_para<'a, D: BidiDataSource, T: TextSource<'a> + ?Sized>(
-    data_source: &D,
-    para: &ParagraphInfo,
-    is_pure_ltr: bool,
-    text: &'a T,
-    original_classes: &[BidiClass],
-    processing_classes: &mut [BidiClass],
-    levels: &mut Vec<Level>,
-) {
-    let new_len = levels.len() + para.range.len();
-    levels.resize(new_len, para.level);
-    if para.level == LTR_LEVEL && is_pure_ltr {
-        return;
-    }
-
-    let processing_classes = &mut processing_classes[para.range.clone()];
-    let levels = &mut levels[para.range.clone()];
-
-    explicit::compute(
-        text,
-        para.level,
-        original_classes,
-        levels,
-        processing_classes,
-    );
-
-    let sequences = prepare::isolating_run_sequences(para.level, original_classes, levels);
-    for sequence in &sequences {
-        implicit::resolve_weak(text, sequence, processing_classes);
-        implicit::resolve_neutral(
-            text,
-            data_source,
-            sequence,
-            levels,
-            original_classes,
-            processing_classes,
-        );
-    }
-    implicit::resolve_levels(processing_classes, levels);
-
-    assign_levels_to_removed_chars(para.level, original_classes, levels);
-}
-
-/// Produce the levels for this paragraph as needed for reordering, one level per *code unit*
-/// in the paragraph. The returned vector includes code units that are not included
-/// in the `line`, but will not adjust them.
-///
-/// This runs [Rule L1]
-///
-/// [Rule L1]: https://www.unicode.org/reports/tr9/#L1
-fn reorder_levels<'a, T: TextSource<'a> + ?Sized>(
-    line_classes: &[BidiClass],
-    line_levels: &mut [Level],
-    line_text: &'a T,
-    para_level: Level,
-) {
-    // Reset some whitespace chars to paragraph level.
-    // <http://www.unicode.org/reports/tr9/#L1>
-    let mut reset_from: Option<usize> = Some(0);
-    let mut reset_to: Option<usize> = None;
-    let mut prev_level = para_level;
-    for (i, c) in line_text.char_indices() {
-        match line_classes[i] {
-            // Segment separator, Paragraph separator
-            B | S => {
-                assert_eq!(reset_to, None);
-                reset_to = Some(i + T::char_len(c));
-                if reset_from == None {
-                    reset_from = Some(i);
-                }
-            }
-            // Whitespace, isolate formatting
-            WS | FSI | LRI | RLI | PDI => {
-                if reset_from == None {
-                    reset_from = Some(i);
-                }
-            }
-            // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-            // same as above + set the level
-            RLE | LRE | RLO | LRO | PDF | BN => {
-                if reset_from == None {
-                    reset_from = Some(i);
-                }
-                // also set the level to previous
-                line_levels[i] = prev_level;
-            }
-            _ => {
-                reset_from = None;
-            }
-        }
-        if let (Some(from), Some(to)) = (reset_from, reset_to) {
-            for level in &mut line_levels[from..to] {
-                *level = para_level;
-            }
-            reset_from = None;
-            reset_to = None;
-        }
-        prev_level = line_levels[i];
-    }
-    if let Some(from) = reset_from {
-        for level in &mut line_levels[from..] {
-            *level = para_level;
-        }
-    }
-}
-
-/// Contains a reference of `BidiInfo` and one of its `paragraphs`.
-/// And it supports all operation in the `Paragraph` that needs also its
-/// `BidiInfo` such as `direction`.
-#[derive(Debug)]
-pub struct Paragraph<'a, 'text> {
-    pub info: &'a BidiInfo<'text>,
-    pub para: &'a ParagraphInfo,
-}
-
-impl<'a, 'text> Paragraph<'a, 'text> {
-    #[inline]
-    pub fn new(info: &'a BidiInfo<'text>, para: &'a ParagraphInfo) -> Paragraph<'a, 'text> {
-        Paragraph { info, para }
-    }
-
-    /// Returns if the paragraph is Left direction, right direction or mixed.
-    #[inline]
-    pub fn direction(&self) -> Direction {
-        para_direction(&self.info.levels[self.para.range.clone()])
-    }
-
-    /// Returns the `Level` of a certain character in the paragraph.
-    #[inline]
-    pub fn level_at(&self, pos: usize) -> Level {
-        let actual_position = self.para.range.start + pos;
-        self.info.levels[actual_position]
-    }
-}
-
-/// Return the directionality of the paragraph (Left, Right or Mixed) from its levels.
-#[cfg_attr(feature = "flame_it", flamer::flame)]
-fn para_direction(levels: &[Level]) -> Direction {
-    let mut ltr = false;
-    let mut rtl = false;
-    for level in levels {
-        if level.is_ltr() {
-            ltr = true;
-            if rtl {
-                return Direction::Mixed;
-            }
-        }
-
-        if level.is_rtl() {
-            rtl = true;
-            if ltr {
-                return Direction::Mixed;
-            }
-        }
-    }
-
-    if ltr {
-        return Direction::Ltr;
-    }
-
-    Direction::Rtl
-}
-
-/// Assign levels to characters removed by rule X9.
-///
-/// The levels assigned to these characters are not specified by the algorithm.  This function
-/// assigns each one the level of the previous character, to avoid breaking level runs.
-#[cfg_attr(feature = "flame_it", flamer::flame)]
-fn assign_levels_to_removed_chars(para_level: Level, classes: &[BidiClass], levels: &mut [Level]) {
-    for i in 0..levels.len() {
-        if prepare::removed_by_x9(classes[i]) {
-            levels[i] = if i > 0 { levels[i - 1] } else { para_level };
-        }
-    }
-}
-
-/// Get the base direction of the text provided according to the Unicode Bidirectional Algorithm.
-///
-/// See rules P2 and P3.
-///
-/// The base direction is derived from the first character in the string with bidi character type
-/// L, R, or AL. If the first such character has type L, Direction::Ltr is returned. If the first
-/// such character has type R or AL, Direction::Rtl is returned.
-///
-/// If the string does not contain any character of these types (outside of embedded isolate runs),
-/// then Direction::Mixed is returned (but should be considered as meaning "neutral" or "unknown",
-/// not in fact mixed directions).
-///
-/// This is a lightweight function for use when only the base direction is needed and no further
-/// bidi processing of the text is needed.
-///
-/// If the text contains paragraph separators, this function considers only the first paragraph.
-#[cfg(feature = "hardcoded-data")]
-#[inline]
-pub fn get_base_direction<'a, T: TextSource<'a> + ?Sized>(text: &'a T) -> Direction {
-    get_base_direction_with_data_source(&HardcodedBidiData, text)
-}
-
-/// Get the base direction of the text provided according to the Unicode Bidirectional Algorithm,
-/// considering the full text if the first paragraph is all-neutral.
-///
-/// This is the same as get_base_direction except that it does not stop at the first block
-/// separator, but just resets the embedding level and continues to look for a strongly-
-/// directional character. So the result will be the base direction of the first paragraph
-/// that is not purely neutral characters.
-#[cfg(feature = "hardcoded-data")]
-#[inline]
-pub fn get_base_direction_full<'a, T: TextSource<'a> + ?Sized>(text: &'a T) -> Direction {
-    get_base_direction_full_with_data_source(&HardcodedBidiData, text)
-}
-
-#[inline]
-pub fn get_base_direction_with_data_source<'a, D: BidiDataSource, T: TextSource<'a> + ?Sized>(
-    data_source: &D,
-    text: &'a T,
-) -> Direction {
-    get_base_direction_impl(data_source, text, false)
-}
-
-#[inline]
-pub fn get_base_direction_full_with_data_source<
-    'a,
-    D: BidiDataSource,
-    T: TextSource<'a> + ?Sized,
->(
-    data_source: &D,
-    text: &'a T,
-) -> Direction {
-    get_base_direction_impl(data_source, text, true)
-}
-
-fn get_base_direction_impl<'a, D: BidiDataSource, T: TextSource<'a> + ?Sized>(
-    data_source: &D,
-    text: &'a T,
-    use_full_text: bool,
-) -> Direction {
-    let mut isolate_level = 0;
-    for c in text.chars() {
-        match data_source.bidi_class(c) {
-            LRI | RLI | FSI => isolate_level = isolate_level + 1,
-            PDI if isolate_level > 0 => isolate_level = isolate_level - 1,
-            L if isolate_level == 0 => return Direction::Ltr,
-            R | AL if isolate_level == 0 => return Direction::Rtl,
-            B if !use_full_text => break,
-            B if use_full_text => isolate_level = 0,
-            _ => (),
-        }
-    }
-    // If no strong char was found, return Mixed. Normally this will be treated as Ltr by callers
-    // (see rule P3), but we don't map this to Ltr here so that a caller that wants to apply other
-    // heuristics to an all-neutral paragraph can tell the difference.
-    Direction::Mixed
-}
-
-/// Implementation of TextSource for UTF-8 text (a string slice).
-impl<'text> TextSource<'text> for str {
-    type CharIter = core::str::Chars<'text>;
-    type CharIndexIter = core::str::CharIndices<'text>;
-    type IndexLenIter = Utf8IndexLenIter<'text>;
-
-    #[inline]
-    fn len(&self) -> usize {
-        (self as &str).len()
-    }
-    #[inline]
-    fn char_at(&self, index: usize) -> Option<(char, usize)> {
-        if let Some(slice) = self.get(index..) {
-            if let Some(ch) = slice.chars().next() {
-                return Some((ch, ch.len_utf8()));
-            }
-        }
-        None
-    }
-    #[inline]
-    fn subrange(&self, range: Range<usize>) -> &Self {
-        &(self as &str)[range]
-    }
-    #[inline]
-    fn chars(&'text self) -> Self::CharIter {
-        (self as &str).chars()
-    }
-    #[inline]
-    fn char_indices(&'text self) -> Self::CharIndexIter {
-        (self as &str).char_indices()
-    }
-    #[inline]
-    fn indices_lengths(&'text self) -> Self::IndexLenIter {
-        Utf8IndexLenIter::new(&self)
-    }
-    #[inline]
-    fn char_len(ch: char) -> usize {
-        ch.len_utf8()
-    }
-}
-
-/// Iterator over (UTF-8) string slices returning (index, char_len) tuple.
-#[derive(Debug)]
-pub struct Utf8IndexLenIter<'text> {
-    iter: CharIndices<'text>,
-}
-
-impl<'text> Utf8IndexLenIter<'text> {
-    #[inline]
-    pub fn new(text: &'text str) -> Self {
-        Utf8IndexLenIter {
-            iter: text.char_indices(),
-        }
-    }
-}
-
-impl Iterator for Utf8IndexLenIter<'_> {
-    type Item = (usize, usize);
-
-    #[inline]
-    fn next(&mut self) -> Option<Self::Item> {
-        if let Some((pos, ch)) = self.iter.next() {
-            return Some((pos, ch.len_utf8()));
-        }
-        None
-    }
-}
-
-#[cfg(test)]
-fn to_utf16(s: &str) -> Vec<u16> {
-    s.encode_utf16().collect()
-}
-
-#[cfg(test)]
-#[cfg(feature = "hardcoded-data")]
-mod tests {
-    use super::*;
-
-    use utf16::{
-        BidiInfo as BidiInfoU16, InitialInfo as InitialInfoU16, Paragraph as ParagraphU16,
-        ParagraphBidiInfo as ParagraphBidiInfoU16,
-    };
-
-    #[test]
-    fn test_utf16_text_source() {
-        let text: &[u16] =
-            &[0x41, 0xD801, 0xDC01, 0x20, 0xD800, 0x20, 0xDFFF, 0x20, 0xDC00, 0xD800];
-        assert_eq!(text.char_at(0), Some(('A', 1)));
-        assert_eq!(text.char_at(1), Some(('\u{10401}', 2)));
-        assert_eq!(text.char_at(2), None);
-        assert_eq!(text.char_at(3), Some((' ', 1)));
-        assert_eq!(text.char_at(4), Some((char::REPLACEMENT_CHARACTER, 1)));
-        assert_eq!(text.char_at(5), Some((' ', 1)));
-        assert_eq!(text.char_at(6), Some((char::REPLACEMENT_CHARACTER, 1)));
-        assert_eq!(text.char_at(7), Some((' ', 1)));
-        assert_eq!(text.char_at(8), Some((char::REPLACEMENT_CHARACTER, 1)));
-        assert_eq!(text.char_at(9), Some((char::REPLACEMENT_CHARACTER, 1)));
-        assert_eq!(text.char_at(10), None);
-    }
-
-    #[test]
-    fn test_utf16_char_iter() {
-        let text: &[u16] =
-            &[0x41, 0xD801, 0xDC01, 0x20, 0xD800, 0x20, 0xDFFF, 0x20, 0xDC00, 0xD800];
-        assert_eq!(text.len(), 10);
-        assert_eq!(text.chars().count(), 9);
-        let mut chars = text.chars();
-        assert_eq!(chars.next(), Some('A'));
-        assert_eq!(chars.next(), Some('\u{10401}'));
-        assert_eq!(chars.next(), Some(' '));
-        assert_eq!(chars.next(), Some('\u{FFFD}'));
-        assert_eq!(chars.next(), Some(' '));
-        assert_eq!(chars.next(), Some('\u{FFFD}'));
-        assert_eq!(chars.next(), Some(' '));
-        assert_eq!(chars.next(), Some('\u{FFFD}'));
-        assert_eq!(chars.next(), Some('\u{FFFD}'));
-        assert_eq!(chars.next(), None);
-    }
-
-    #[test]
-    fn test_initial_text_info() {
-        let tests = vec![
-            (
-                // text
-                "a1",
-                // expected bidi classes per utf-8 byte
-                vec![L, EN],
-                // expected paragraph-info for utf-8
-                vec![ParagraphInfo {
-                    range: 0..2,
-                    level: LTR_LEVEL,
-                }],
-                // expected bidi classes per utf-16 code unit
-                vec![L, EN],
-                // expected paragraph-info for utf-16
-                vec![ParagraphInfo {
-                    range: 0..2,
-                    level: LTR_LEVEL,
-                }],
-            ),
-            (
-                // Arabic, space, Hebrew
-                "\u{0639} \u{05D0}",
-                vec![AL, AL, WS, R, R],
-                vec![ParagraphInfo {
-                    range: 0..5,
-                    level: RTL_LEVEL,
-                }],
-                vec![AL, WS, R],
-                vec![ParagraphInfo {
-                    range: 0..3,
-                    level: RTL_LEVEL,
-                }],
-            ),
-            (
-                // SMP characters from Kharoshthi, Cuneiform, Adlam:
-                "\u{10A00}\u{12000}\u{1E900}",
-                vec![R, R, R, R, L, L, L, L, R, R, R, R],
-                vec![ParagraphInfo {
-                    range: 0..12,
-                    level: RTL_LEVEL,
-                }],
-                vec![R, R, L, L, R, R],
-                vec![ParagraphInfo {
-                    range: 0..6,
-                    level: RTL_LEVEL,
-                }],
-            ),
-            (
-                "a\u{2029}b",
-                vec![L, B, B, B, L],
-                vec![
-                    ParagraphInfo {
-                        range: 0..4,
-                        level: LTR_LEVEL,
-                    },
-                    ParagraphInfo {
-                        range: 4..5,
-                        level: LTR_LEVEL,
-                    },
-                ],
-                vec![L, B, L],
-                vec![
-                    ParagraphInfo {
-                        range: 0..2,
-                        level: LTR_LEVEL,
-                    },
-                    ParagraphInfo {
-                        range: 2..3,
-                        level: LTR_LEVEL,
-                    },
-                ],
-            ),
-            (
-                "\u{2068}א\u{2069}a", // U+2068 FSI, U+2069 PDI
-                vec![RLI, RLI, RLI, R, R, PDI, PDI, PDI, L],
-                vec![ParagraphInfo {
-                    range: 0..9,
-                    level: LTR_LEVEL,
-                }],
-                vec![RLI, R, PDI, L],
-                vec![ParagraphInfo {
-                    range: 0..4,
-                    level: LTR_LEVEL,
-                }],
-            ),
-        ];
-
-        for t in tests {
-            assert_eq!(
-                InitialInfo::new(t.0, None),
-                InitialInfo {
-                    text: t.0,
-                    original_classes: t.1,
-                    paragraphs: t.2,
-                }
-            );
-            let text = &to_utf16(t.0);
-            assert_eq!(
-                InitialInfoU16::new(text, None),
-                InitialInfoU16 {
-                    text,
-                    original_classes: t.3,
-                    paragraphs: t.4,
-                }
-            );
-        }
-    }
-
-    #[test]
-    #[cfg(feature = "hardcoded-data")]
-    fn test_process_text() {
-        let tests = vec![
-            (
-                // text
-                "abc123",
-                // base level
-                Some(LTR_LEVEL),
-                // levels
-                Level::vec(&[0, 0, 0, 0, 0, 0]),
-                // original_classes
-                vec![L, L, L, EN, EN, EN],
-                // paragraphs
-                vec![ParagraphInfo {
-                    range: 0..6,
-                    level: LTR_LEVEL,
-                }],
-                // levels_u16
-                Level::vec(&[0, 0, 0, 0, 0, 0]),
-                // original_classes_u16
-                vec![L, L, L, EN, EN, EN],
-                // paragraphs_u16
-                vec![ParagraphInfo {
-                    range: 0..6,
-                    level: LTR_LEVEL,
-                }],
-            ),
-            (
-                "abc \u{05D0}\u{05D1}\u{05D2}",
-                Some(LTR_LEVEL),
-                Level::vec(&[0, 0, 0, 0, 1, 1, 1, 1, 1, 1]),
-                vec![L, L, L, WS, R, R, R, R, R, R],
-                vec![ParagraphInfo {
-                    range: 0..10,
-                    level: LTR_LEVEL,
-                }],
-                Level::vec(&[0, 0, 0, 0, 1, 1, 1]),
-                vec![L, L, L, WS, R, R, R],
-                vec![ParagraphInfo {
-                    range: 0..7,
-                    level: LTR_LEVEL,
-                }],
-            ),
-            (
-                "abc \u{05D0}\u{05D1}\u{05D2}",
-                Some(RTL_LEVEL),
-                Level::vec(&[2, 2, 2, 1, 1, 1, 1, 1, 1, 1]),
-                vec![L, L, L, WS, R, R, R, R, R, R],
-                vec![ParagraphInfo {
-                    range: 0..10,
-                    level: RTL_LEVEL,
-                }],
-                Level::vec(&[2, 2, 2, 1, 1, 1, 1]),
-                vec![L, L, L, WS, R, R, R],
-                vec![ParagraphInfo {
-                    range: 0..7,
-                    level: RTL_LEVEL,
-                }],
-            ),
-            (
-                "\u{05D0}\u{05D1}\u{05D2} abc",
-                Some(LTR_LEVEL),
-                Level::vec(&[1, 1, 1, 1, 1, 1, 0, 0, 0, 0]),
-                vec![R, R, R, R, R, R, WS, L, L, L],
-                vec![ParagraphInfo {
-                    range: 0..10,
-                    level: LTR_LEVEL,
-                }],
-                Level::vec(&[1, 1, 1, 0, 0, 0, 0]),
-                vec![R, R, R, WS, L, L, L],
-                vec![ParagraphInfo {
-                    range: 0..7,
-                    level: LTR_LEVEL,
-                }],
-            ),
-            (
-                "\u{05D0}\u{05D1}\u{05D2} abc",
-                None,
-                Level::vec(&[1, 1, 1, 1, 1, 1, 1, 2, 2, 2]),
-                vec![R, R, R, R, R, R, WS, L, L, L],
-                vec![ParagraphInfo {
-                    range: 0..10,
-                    level: RTL_LEVEL,
-                }],
-                Level::vec(&[1, 1, 1, 1, 2, 2, 2]),
-                vec![R, R, R, WS, L, L, L],
-                vec![ParagraphInfo {
-                    range: 0..7,
-                    level: RTL_LEVEL,
-                }],
-            ),
-            (
-                "\u{063A}2\u{0638} \u{05D0}2\u{05D2}",
-                Some(LTR_LEVEL),
-                Level::vec(&[1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1]),
-                vec![AL, AL, EN, AL, AL, WS, R, R, EN, R, R],
-                vec![ParagraphInfo {
-                    range: 0..11,
-                    level: LTR_LEVEL,
-                }],
-                Level::vec(&[1, 2, 1, 1, 1, 2, 1]),
-                vec![AL, EN, AL, WS, R, EN, R],
-                vec![ParagraphInfo {
-                    range: 0..7,
-                    level: LTR_LEVEL,
-                }],
-            ),
-            (
-                "a א.\nג",
-                None,
-                Level::vec(&[0, 0, 1, 1, 0, 0, 1, 1]),
-                vec![L, WS, R, R, CS, B, R, R],
-                vec![
-                    ParagraphInfo {
-                        range: 0..6,
-                        level: LTR_LEVEL,
-                    },
-                    ParagraphInfo {
-                        range: 6..8,
-                        level: RTL_LEVEL,
-                    },
-                ],
-                Level::vec(&[0, 0, 1, 0, 0, 1]),
-                vec![L, WS, R, CS, B, R],
-                vec![
-                    ParagraphInfo {
-                        range: 0..5,
-                        level: LTR_LEVEL,
-                    },
-                    ParagraphInfo {
-                        range: 5..6,
-                        level: RTL_LEVEL,
-                    },
-                ],
-            ),
-            // BidiTest:69635 (AL ET EN)
-            (
-                "\u{060B}\u{20CF}\u{06F9}",
-                None,
-                Level::vec(&[1, 1, 1, 1, 1, 2, 2]),
-                vec![AL, AL, ET, ET, ET, EN, EN],
-                vec![ParagraphInfo {
-                    range: 0..7,
-                    level: RTL_LEVEL,
-                }],
-                Level::vec(&[1, 1, 2]),
-                vec![AL, ET, EN],
-                vec![ParagraphInfo {
-                    range: 0..3,
-                    level: RTL_LEVEL,
-                }],
-            ),
-        ];
-
-        for t in tests {
-            assert_eq!(
-                BidiInfo::new(t.0, t.1),
-                BidiInfo {
-                    text: t.0,
-                    levels: t.2.clone(),
-                    original_classes: t.3.clone(),
-                    paragraphs: t.4.clone(),
-                }
-            );
-            // If it was a single paragraph, also test ParagraphBidiInfo.
-            if t.4.len() == 1 {
-                assert_eq!(
-                    ParagraphBidiInfo::new(t.0, t.1),
-                    ParagraphBidiInfo {
-                        text: t.0,
-                        original_classes: t.3,
-                        levels: t.2.clone(),
-                        paragraph_level: t.4[0].level,
-                        is_pure_ltr: !level::has_rtl(&t.2),
-                    }
-                )
-            }
-            let text = &to_utf16(t.0);
-            assert_eq!(
-                BidiInfoU16::new(text, t.1),
-                BidiInfoU16 {
-                    text,
-                    levels: t.5.clone(),
-                    original_classes: t.6.clone(),
-                    paragraphs: t.7.clone(),
-                }
-            );
-            if t.7.len() == 1 {
-                assert_eq!(
-                    ParagraphBidiInfoU16::new(text, t.1),
-                    ParagraphBidiInfoU16 {
-                        text: text,
-                        original_classes: t.6.clone(),
-                        levels: t.5.clone(),
-                        paragraph_level: t.7[0].level,
-                        is_pure_ltr: !level::has_rtl(&t.5),
-                    }
-                )
-            }
-        }
-    }
-
-    #[test]
-    #[cfg(feature = "hardcoded-data")]
-    fn test_paragraph_bidi_info() {
-        // Passing text that includes a paragraph break to the ParagraphBidiInfo API:
-        // this is a misuse of the API by the client, but our behavior is safe &
-        // consistent. The embedded paragraph break acts like a separator (tab) would.
-        let tests = vec![
-            (
-                "a א.\nג",
-                None,
-                // utf-8 results:
-                vec![L, WS, R, R, CS, B, R, R],
-                Level::vec(&[0, 0, 1, 1, 1, 1, 1, 1]),
-                // utf-16 results:
-                vec![L, WS, R, CS, B, R],
-                Level::vec(&[0, 0, 1, 1, 1, 1]),
-                // paragraph level; is_pure_ltr
-                LTR_LEVEL,
-                false,
-            ),
-            (
-                "\u{5d1} a.\nb.",
-                None,
-                // utf-8 results:
-                vec![R, R, WS, L, CS, B, L, CS],
-                Level::vec(&[1, 1, 1, 2, 2, 2, 2, 1]),
-                // utf-16 results:
-                vec![R, WS, L, CS, B, L, CS],
-                Level::vec(&[1, 1, 2, 2, 2, 2, 1]),
-                // paragraph level; is_pure_ltr
-                RTL_LEVEL,
-                false,
-            ),
-            (
-                "a א.\tג",
-                None,
-                // utf-8 results:
-                vec![L, WS, R, R, CS, S, R, R],
-                Level::vec(&[0, 0, 1, 1, 1, 1, 1, 1]),
-                // utf-16 results:
-                vec![L, WS, R, CS, S, R],
-                Level::vec(&[0, 0, 1, 1, 1, 1]),
-                // paragraph level; is_pure_ltr
-                LTR_LEVEL,
-                false,
-            ),
-            (
-                "\u{5d1} a.\tb.",
-                None,
-                // utf-8 results:
-                vec![R, R, WS, L, CS, S, L, CS],
-                Level::vec(&[1, 1, 1, 2, 2, 2, 2, 1]),
-                // utf-16 results:
-                vec![R, WS, L, CS, S, L, CS],
-                Level::vec(&[1, 1, 2, 2, 2, 2, 1]),
-                // paragraph level; is_pure_ltr
-                RTL_LEVEL,
-                false,
-            ),
-        ];
-
-        for t in tests {
-            assert_eq!(
-                ParagraphBidiInfo::new(t.0, t.1),
-                ParagraphBidiInfo {
-                    text: t.0,
-                    original_classes: t.2,
-                    levels: t.3,
-                    paragraph_level: t.6,
-                    is_pure_ltr: t.7,
-                }
-            );
-            let text = &to_utf16(t.0);
-            assert_eq!(
-                ParagraphBidiInfoU16::new(text, t.1),
-                ParagraphBidiInfoU16 {
-                    text: text,
-                    original_classes: t.4,
-                    levels: t.5,
-                    paragraph_level: t.6,
-                    is_pure_ltr: t.7,
-                }
-            );
-        }
-    }
-
-    #[test]
-    #[cfg(feature = "hardcoded-data")]
-    fn test_bidi_info_has_rtl() {
-        let tests = vec![
-            // ASCII only
-            ("123", None, false),
-            ("123", Some(LTR_LEVEL), false),
-            ("123", Some(RTL_LEVEL), false),
-            ("abc", None, false),
-            ("abc", Some(LTR_LEVEL), false),
-            ("abc", Some(RTL_LEVEL), false),
-            ("abc 123", None, false),
-            ("abc\n123", None, false),
-            // With Hebrew
-            ("\u{05D0}\u{05D1}\u{05BC}\u{05D2}", None, true),
-            ("\u{05D0}\u{05D1}\u{05BC}\u{05D2}", Some(LTR_LEVEL), true),
-            ("\u{05D0}\u{05D1}\u{05BC}\u{05D2}", Some(RTL_LEVEL), true),
-            ("abc \u{05D0}\u{05D1}\u{05BC}\u{05D2}", None, true),
-            ("abc\n\u{05D0}\u{05D1}\u{05BC}\u{05D2}", None, true),
-            ("\u{05D0}\u{05D1}\u{05BC}\u{05D2} abc", None, true),
-            ("\u{05D0}\u{05D1}\u{05BC}\u{05D2}\nabc", None, true),
-            ("\u{05D0}\u{05D1}\u{05BC}\u{05D2} 123", None, true),
-            ("\u{05D0}\u{05D1}\u{05BC}\u{05D2}\n123", None, true),
-        ];
-
-        for t in tests {
-            assert_eq!(BidiInfo::new(t.0, t.1).has_rtl(), t.2);
-            assert_eq!(BidiInfoU16::new(&to_utf16(t.0), t.1).has_rtl(), t.2);
-        }
-    }
-
-    #[cfg(feature = "hardcoded-data")]
-    fn reorder_paras(text: &str) -> Vec<Cow<'_, str>> {
-        let bidi_info = BidiInfo::new(text, None);
-        bidi_info
-            .paragraphs
-            .iter()
-            .map(|para| bidi_info.reorder_line(para, para.range.clone()))
-            .collect()
-    }
-
-    #[cfg(feature = "hardcoded-data")]
-    fn reorder_paras_u16(text: &[u16]) -> Vec<Cow<'_, [u16]>> {
-        let bidi_info = BidiInfoU16::new(text, None);
-        bidi_info
-            .paragraphs
-            .iter()
-            .map(|para| bidi_info.reorder_line(para, para.range.clone()))
-            .collect()
-    }
-
-    #[test]
-    #[cfg(feature = "hardcoded-data")]
-    fn test_reorder_line() {
-        let tests = vec![
-            // Bidi_Class: L L L B L L L B L L L
-            ("abc\ndef\nghi", vec!["abc\n", "def\n", "ghi"]),
-            // Bidi_Class: L L EN B L L EN B L L EN
-            ("ab1\nde2\ngh3", vec!["ab1\n", "de2\n", "gh3"]),
-            // Bidi_Class: L L L B AL AL AL
-            ("abc\nابج", vec!["abc\n", "جبا"]),
-            // Bidi_Class: AL AL AL B L L L
-            (
-                "\u{0627}\u{0628}\u{062C}\nabc",
-                vec!["\n\u{062C}\u{0628}\u{0627}", "abc"],
-            ),
-            ("1.-2", vec!["1.-2"]),
-            ("1-.2", vec!["1-.2"]),
-            ("abc אבג", vec!["abc גבא"]),
-            // Numbers being weak LTR characters, cannot reorder strong RTL
-            ("123 \u{05D0}\u{05D1}\u{05D2}", vec!["גבא 123"]),
-            ("abc\u{202A}def", vec!["abc\u{202A}def"]),
-            (
-                "abc\u{202A}def\u{202C}ghi",
-                vec!["abc\u{202A}def\u{202C}ghi"],
-            ),
-            (
-                "abc\u{2066}def\u{2069}ghi",
-                vec!["abc\u{2066}def\u{2069}ghi"],
-            ),
-            // Testing for RLE Character
-            ("\u{202B}abc אבג\u{202C}", vec!["\u{202b}גבא abc\u{202c}"]),
-            // Testing neutral characters
-            ("\u{05D0}בג? אבג", vec!["גבא ?גבא"]),
-            // Testing neutral characters with special case
-            ("A אבג?", vec!["A גבא?"]),
-            // Testing neutral characters with Implicit RTL Marker
-            ("A אבג?\u{200F}", vec!["A \u{200F}?גבא"]),
-            ("\u{05D0}בג abc", vec!["abc גבא"]),
-            ("abc\u{2067}.-\u{2069}ghi", vec!["abc\u{2067}-.\u{2069}ghi"]),
-            (
-                "Hello, \u{2068}\u{202E}world\u{202C}\u{2069}!",
-                vec!["Hello, \u{2068}\u{202E}\u{202C}dlrow\u{2069}!"],
-            ),
-            // With mirrorable characters in RTL run
-            ("\u{05D0}(ב)ג.", vec![".ג)ב(א"]),
-            // With mirrorable characters on level boundary
-            ("\u{05D0}ב(גד[&ef].)gh", vec!["gh).]ef&[דג(בא"]),
-        ];
-
-        for t in tests {
-            assert_eq!(reorder_paras(t.0), t.1);
-            let expect_utf16 = t.1.iter().map(|v| to_utf16(v)).collect::<Vec<_>>();
-            assert_eq!(reorder_paras_u16(&to_utf16(t.0)), expect_utf16);
-        }
-    }
-
-    fn reordered_levels_for_paras(text: &str) -> Vec<Vec<Level>> {
-        let bidi_info = BidiInfo::new(text, None);
-        bidi_info
-            .paragraphs
-            .iter()
-            .map(|para| bidi_info.reordered_levels(para, para.range.clone()))
-            .collect()
-    }
-
-    fn reordered_levels_per_char_for_paras(text: &str) -> Vec<Vec<Level>> {
-        let bidi_info = BidiInfo::new(text, None);
-        bidi_info
-            .paragraphs
-            .iter()
-            .map(|para| bidi_info.reordered_levels_per_char(para, para.range.clone()))
-            .collect()
-    }
-
-    fn reordered_levels_for_paras_u16(text: &[u16]) -> Vec<Vec<Level>> {
-        let bidi_info = BidiInfoU16::new(text, None);
-        bidi_info
-            .paragraphs
-            .iter()
-            .map(|para| bidi_info.reordered_levels(para, para.range.clone()))
-            .collect()
-    }
-
-    fn reordered_levels_per_char_for_paras_u16(text: &[u16]) -> Vec<Vec<Level>> {
-        let bidi_info = BidiInfoU16::new(text, None);
-        bidi_info
-            .paragraphs
-            .iter()
-            .map(|para| bidi_info.reordered_levels_per_char(para, para.range.clone()))
-            .collect()
-    }
-
-    #[test]
-    #[cfg(feature = "hardcoded-data")]
-    fn test_reordered_levels() {
-        let tests = vec![
-            // BidiTest:946 (LRI PDI)
-            (
-                "\u{2067}\u{2069}",
-                vec![Level::vec(&[0, 0, 0, 0, 0, 0])],
-                vec![Level::vec(&[0, 0])],
-                vec![Level::vec(&[0, 0])],
-            ),
-            // BidiTest:69635 (AL ET EN)
-            (
-                "\u{060B}\u{20CF}\u{06F9}",
-                vec![Level::vec(&[1, 1, 1, 1, 1, 2, 2])],
-                vec![Level::vec(&[1, 1, 2])],
-                vec![Level::vec(&[1, 1, 2])],
-            ),
-        ];
-
-        for t in tests {
-            assert_eq!(reordered_levels_for_paras(t.0), t.1);
-            assert_eq!(reordered_levels_per_char_for_paras(t.0), t.2);
-            let text = &to_utf16(t.0);
-            assert_eq!(reordered_levels_for_paras_u16(text), t.3);
-            assert_eq!(reordered_levels_per_char_for_paras_u16(text), t.2);
-        }
-
-        let tests = vec![
-            // BidiTest:291284 (AN RLI PDF R)
-            (
-                "\u{0605}\u{2067}\u{202C}\u{0590}",
-                vec![&["2", "2", "0", "0", "0", "x", "x", "x", "1", "1"]],
-                vec![&["2", "0", "x", "1"]],
-                vec![&["2", "0", "x", "1"]],
-            ),
-        ];
-
-        for t in tests {
-            assert_eq!(reordered_levels_for_paras(t.0), t.1);
-            assert_eq!(reordered_levels_per_char_for_paras(t.0), t.2);
-            let text = &to_utf16(t.0);
-            assert_eq!(reordered_levels_for_paras_u16(text), t.3);
-            assert_eq!(reordered_levels_per_char_for_paras_u16(text), t.2);
-        }
-
-        let text = "aa טֶ";
-        let bidi_info = BidiInfo::new(text, None);
-        assert_eq!(
-            bidi_info.reordered_levels(&bidi_info.paragraphs[0], 3..7),
-            Level::vec(&[0, 0, 0, 1, 1, 1, 1]),
-        );
-
-        let text = &to_utf16(text);
-        let bidi_info = BidiInfoU16::new(text, None);
-        assert_eq!(
-            bidi_info.reordered_levels(&bidi_info.paragraphs[0], 1..4),
-            Level::vec(&[0, 0, 0, 1, 1]),
-        );
-    }
-
-    #[test]
-    fn test_paragraph_info_len() {
-        let text = "hello world";
-        let bidi_info = BidiInfo::new(text, None);
-        assert_eq!(bidi_info.paragraphs.len(), 1);
-        assert_eq!(bidi_info.paragraphs[0].len(), text.len());
-
-        let text2 = "How are you";
-        let whole_text = format!("{}\n{}", text, text2);
-        let bidi_info = BidiInfo::new(&whole_text, None);
-        assert_eq!(bidi_info.paragraphs.len(), 2);
-
-        // The first paragraph include the paragraph separator.
-        // TODO: investigate if the paragraph separator character
-        // should not be part of any paragraph.
-        assert_eq!(bidi_info.paragraphs[0].len(), text.len() + 1);
-        assert_eq!(bidi_info.paragraphs[1].len(), text2.len());
-
-        let text = &to_utf16(text);
-        let bidi_info = BidiInfoU16::new(text, None);
-        assert_eq!(bidi_info.paragraphs.len(), 1);
-        assert_eq!(bidi_info.paragraphs[0].len(), text.len());
-
-        let text2 = &to_utf16(text2);
-        let whole_text = &to_utf16(&whole_text);
-        let bidi_info = BidiInfoU16::new(&whole_text, None);
-        assert_eq!(bidi_info.paragraphs.len(), 2);
-
-        assert_eq!(bidi_info.paragraphs[0].len(), text.len() + 1);
-        assert_eq!(bidi_info.paragraphs[1].len(), text2.len());
-    }
-
-    #[test]
-    fn test_direction() {
-        let ltr_text = "hello world";
-        let rtl_text = "أهلا بكم";
-        let all_paragraphs = format!("{}\n{}\n{}{}", ltr_text, rtl_text, ltr_text, rtl_text);
-        let bidi_info = BidiInfo::new(&all_paragraphs, None);
-        assert_eq!(bidi_info.paragraphs.len(), 3);
-        let p_ltr = Paragraph::new(&bidi_info, &bidi_info.paragraphs[0]);
-        let p_rtl = Paragraph::new(&bidi_info, &bidi_info.paragraphs[1]);
-        let p_mixed = Paragraph::new(&bidi_info, &bidi_info.paragraphs[2]);
-        assert_eq!(p_ltr.direction(), Direction::Ltr);
-        assert_eq!(p_rtl.direction(), Direction::Rtl);
-        assert_eq!(p_mixed.direction(), Direction::Mixed);
-
-        let all_paragraphs = &to_utf16(&all_paragraphs);
-        let bidi_info = BidiInfoU16::new(&all_paragraphs, None);
-        assert_eq!(bidi_info.paragraphs.len(), 3);
-        let p_ltr = ParagraphU16::new(&bidi_info, &bidi_info.paragraphs[0]);
-        let p_rtl = ParagraphU16::new(&bidi_info, &bidi_info.paragraphs[1]);
-        let p_mixed = ParagraphU16::new(&bidi_info, &bidi_info.paragraphs[2]);
-        assert_eq!(p_ltr.direction(), Direction::Ltr);
-        assert_eq!(p_rtl.direction(), Direction::Rtl);
-        assert_eq!(p_mixed.direction(), Direction::Mixed);
-    }
-
-    #[test]
-    fn test_edge_cases_direction() {
-        // No paragraphs for empty text.
-        let empty = "";
-        let bidi_info = BidiInfo::new(empty, Option::from(RTL_LEVEL));
-        assert_eq!(bidi_info.paragraphs.len(), 0);
-
-        let empty = &to_utf16(empty);
-        let bidi_info = BidiInfoU16::new(empty, Option::from(RTL_LEVEL));
-        assert_eq!(bidi_info.paragraphs.len(), 0);
-
-        let tests = vec![
-            // The paragraph separator will take the value of the default direction
-            // which is left to right.
-            ("\n", None, Direction::Ltr),
-            // The paragraph separator will take the value of the given initial direction
-            // which is left to right.
-            ("\n", Option::from(LTR_LEVEL), Direction::Ltr),
-            // The paragraph separator will take the value of the given initial direction
-            // which is right to left.
-            ("\n", Option::from(RTL_LEVEL), Direction::Rtl),
-        ];
-
-        for t in tests {
-            let bidi_info = BidiInfo::new(t.0, t.1);
-            assert_eq!(bidi_info.paragraphs.len(), 1);
-            let p = Paragraph::new(&bidi_info, &bidi_info.paragraphs[0]);
-            assert_eq!(p.direction(), t.2);
-            let text = &to_utf16(t.0);
-            let bidi_info = BidiInfoU16::new(text, t.1);
-            let p = ParagraphU16::new(&bidi_info, &bidi_info.paragraphs[0]);
-            assert_eq!(p.direction(), t.2);
-        }
-    }
-
-    #[test]
-    fn test_level_at() {
-        let ltr_text = "hello world";
-        let rtl_text = "أهلا بكم";
-        let all_paragraphs = format!("{}\n{}\n{}{}", ltr_text, rtl_text, ltr_text, rtl_text);
-        let bidi_info = BidiInfo::new(&all_paragraphs, None);
-        assert_eq!(bidi_info.paragraphs.len(), 3);
-
-        let p_ltr = Paragraph::new(&bidi_info, &bidi_info.paragraphs[0]);
-        let p_rtl = Paragraph::new(&bidi_info, &bidi_info.paragraphs[1]);
-        let p_mixed = Paragraph::new(&bidi_info, &bidi_info.paragraphs[2]);
-
-        assert_eq!(p_ltr.level_at(0), LTR_LEVEL);
-        assert_eq!(p_rtl.level_at(0), RTL_LEVEL);
-        assert_eq!(p_mixed.level_at(0), LTR_LEVEL);
-        assert_eq!(p_mixed.info.levels.len(), 54);
-        assert_eq!(p_mixed.para.range.start, 28);
-        assert_eq!(p_mixed.level_at(ltr_text.len()), RTL_LEVEL);
-
-        let all_paragraphs = &to_utf16(&all_paragraphs);
-        let bidi_info = BidiInfoU16::new(&all_paragraphs, None);
-        assert_eq!(bidi_info.paragraphs.len(), 3);
-
-        let p_ltr = ParagraphU16::new(&bidi_info, &bidi_info.paragraphs[0]);
-        let p_rtl = ParagraphU16::new(&bidi_info, &bidi_info.paragraphs[1]);
-        let p_mixed = ParagraphU16::new(&bidi_info, &bidi_info.paragraphs[2]);
-
-        assert_eq!(p_ltr.level_at(0), LTR_LEVEL);
-        assert_eq!(p_rtl.level_at(0), RTL_LEVEL);
-        assert_eq!(p_mixed.level_at(0), LTR_LEVEL);
-        assert_eq!(p_mixed.info.levels.len(), 40);
-        assert_eq!(p_mixed.para.range.start, 21);
-        assert_eq!(p_mixed.level_at(ltr_text.len()), RTL_LEVEL);
-    }
-
-    #[test]
-    fn test_get_base_direction() {
-        let tests = vec![
-            ("", Direction::Mixed), // return Mixed if no strong character found
-            ("123[]-+\u{2019}\u{2060}\u{00bf}?", Direction::Mixed),
-            ("3.14\npi", Direction::Mixed), // only first paragraph is considered
-            ("[123 'abc']", Direction::Ltr),
-            ("[123 '\u{0628}' abc", Direction::Rtl),
-            ("[123 '\u{2066}abc\u{2069}'\u{0628}]", Direction::Rtl), // embedded isolate is ignored
-            ("[123 '\u{2066}abc\u{2068}'\u{0628}]", Direction::Mixed),
-        ];
-
-        for t in tests {
-            assert_eq!(get_base_direction(t.0), t.1);
-            let text = &to_utf16(t.0);
-            assert_eq!(get_base_direction(text.as_slice()), t.1);
-        }
-    }
-
-    #[test]
-    fn test_get_base_direction_full() {
-        let tests = vec![
-            ("", Direction::Mixed), // return Mixed if no strong character found
-            ("123[]-+\u{2019}\u{2060}\u{00bf}?", Direction::Mixed),
-            ("3.14\npi", Direction::Ltr), // direction taken from the second paragraph
-            ("3.14\n\u{05D0}", Direction::Rtl), // direction taken from the second paragraph
-            ("[123 'abc']", Direction::Ltr),
-            ("[123 '\u{0628}' abc", Direction::Rtl),
-            ("[123 '\u{2066}abc\u{2069}'\u{0628}]", Direction::Rtl), // embedded isolate is ignored
-            ("[123 '\u{2066}abc\u{2068}'\u{0628}]", Direction::Mixed),
-            ("[123 '\u{2066}abc\u{2068}'\n\u{0628}]", Direction::Rtl), // \n resets embedding level
-        ];
-
-        for t in tests {
-            assert_eq!(get_base_direction_full(t.0), t.1);
-            let text = &to_utf16(t.0);
-            assert_eq!(get_base_direction_full(text.as_slice()), t.1);
-        }
-    }
-}
-
-#[cfg(all(feature = "serde", feature = "hardcoded-data", test))]
-mod serde_tests {
-    use super::*;
-    use serde_test::{assert_tokens, Token};
-
-    #[test]
-    fn test_levels() {
-        let text = "abc אבג";
-        let bidi_info = BidiInfo::new(text, None);
-        let levels = bidi_info.levels;
-        assert_eq!(text.as_bytes().len(), 10);
-        assert_eq!(levels.len(), 10);
-        assert_tokens(
-            &levels,
-            &[
-                Token::Seq { len: Some(10) },
-                Token::NewtypeStruct { name: "Level" },
-                Token::U8(0),
-                Token::NewtypeStruct { name: "Level" },
-                Token::U8(0),
-                Token::NewtypeStruct { name: "Level" },
-                Token::U8(0),
-                Token::NewtypeStruct { name: "Level" },
-                Token::U8(0),
-                Token::NewtypeStruct { name: "Level" },
-                Token::U8(1),
-                Token::NewtypeStruct { name: "Level" },
-                Token::U8(1),
-                Token::NewtypeStruct { name: "Level" },
-                Token::U8(1),
-                Token::NewtypeStruct { name: "Level" },
-                Token::U8(1),
-                Token::NewtypeStruct { name: "Level" },
-                Token::U8(1),
-                Token::NewtypeStruct { name: "Level" },
-                Token::U8(1),
-                Token::SeqEnd,
-            ],
-        );
-    }
-}
diff --git a/vendor/unicode-bidi/src/prepare.rs b/vendor/unicode-bidi/src/prepare.rs
deleted file mode 100644
index 9234e1aa..00000000
--- a/vendor/unicode-bidi/src/prepare.rs
+++ /dev/null
@@ -1,451 +0,0 @@
-// Copyright 2015 The Servo Project Developers. See the
-// COPYRIGHT file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! 3.3.3 Preparations for Implicit Processing
-//!
-//! <http://www.unicode.org/reports/tr9/#Preparations_for_Implicit_Processing>
-
-use alloc::vec::Vec;
-use core::cmp::max;
-use core::ops::Range;
-
-use super::level::Level;
-use super::BidiClass::{self, *};
-
-/// A maximal substring of characters with the same embedding level.
-///
-/// Represented as a range of byte indices.
-pub type LevelRun = Range<usize>;
-
-/// Output of `isolating_run_sequences` (steps X9-X10)
-#[derive(Debug, PartialEq)]
-pub struct IsolatingRunSequence {
-    pub runs: Vec<LevelRun>,
-    pub sos: BidiClass, // Start-of-sequence type.
-    pub eos: BidiClass, // End-of-sequence type.
-}
-
-/// Compute the set of isolating run sequences.
-///
-/// An isolating run sequence is a maximal sequence of level runs such that for all level runs
-/// except the last one in the sequence, the last character of the run is an isolate initiator
-/// whose matching PDI is the first character of the next level run in the sequence.
-///
-/// Note: This function does *not* return the sequences in order by their first characters.
-#[cfg_attr(feature = "flame_it", flamer::flame)]
-pub fn isolating_run_sequences(
-    para_level: Level,
-    original_classes: &[BidiClass],
-    levels: &[Level],
-) -> Vec<IsolatingRunSequence> {
-    let runs = level_runs(levels, original_classes);
-
-    // Compute the set of isolating run sequences.
-    // <http://www.unicode.org/reports/tr9/#BD13>
-    let mut sequences = Vec::with_capacity(runs.len());
-
-    // When we encounter an isolate initiator, we push the current sequence onto the
-    // stack so we can resume it after the matching PDI.
-    let mut stack = vec![Vec::new()];
-
-    for run in runs {
-        assert!(run.len() > 0);
-        assert!(!stack.is_empty());
-
-        let start_class = original_classes[run.start];
-        // > In rule X10, [..] skip over any BNs when [..].
-        // > Do the same when determining if the last character of the sequence is an isolate initiator.
-        //
-        // <https://www.unicode.org/reports/tr9/#Retaining_Explicit_Formatting_Characters>
-        let end_class = original_classes[run.start..run.end]
-            .iter()
-            .copied()
-            .rev()
-            .filter(not_removed_by_x9)
-            .next()
-            .unwrap_or(start_class);
-
-        let mut sequence = if start_class == PDI && stack.len() > 1 {
-            // Continue a previous sequence interrupted by an isolate.
-            stack.pop().unwrap()
-        } else {
-            // Start a new sequence.
-            Vec::new()
-        };
-
-        sequence.push(run);
-
-        if let RLI | LRI | FSI = end_class {
-            // Resume this sequence after the isolate.
-            stack.push(sequence);
-        } else {
-            // This sequence is finished.
-            sequences.push(sequence);
-        }
-    }
-    // Pop any remaning sequences off the stack.
-    sequences.extend(stack.into_iter().rev().filter(|seq| !seq.is_empty()));
-
-    // Determine the `sos` and `eos` class for each sequence.
-    // <http://www.unicode.org/reports/tr9/#X10>
-    sequences
-        .into_iter()
-        .map(|sequence: Vec<LevelRun>| {
-            assert!(!sequence.is_empty());
-
-            let mut result = IsolatingRunSequence {
-                runs: sequence,
-                sos: L,
-                eos: L,
-            };
-
-            let start_of_seq = result.runs[0].start;
-            let runs_len = result.runs.len();
-            let end_of_seq = result.runs[runs_len - 1].end;
-
-            // > (not counting characters removed by X9)
-            let seq_level = result
-                .iter_forwards_from(start_of_seq, 0)
-                .filter(|i| not_removed_by_x9(&original_classes[*i]))
-                .map(|i| levels[i])
-                .next()
-                .unwrap_or(levels[start_of_seq]);
-
-            // XXXManishearth the spec talks of a start and end level,
-            // but for a given IRS the two should be equivalent, yes?
-            let end_level = result
-                .iter_backwards_from(end_of_seq, runs_len - 1)
-                .filter(|i| not_removed_by_x9(&original_classes[*i]))
-                .map(|i| levels[i])
-                .next()
-                .unwrap_or(levels[end_of_seq - 1]);
-
-            #[cfg(test)]
-            for run in result.runs.clone() {
-                for idx in run {
-                    if not_removed_by_x9(&original_classes[idx]) {
-                        assert_eq!(seq_level, levels[idx]);
-                    }
-                }
-            }
-
-            // Get the level of the last non-removed char before the runs.
-            let pred_level = match original_classes[..start_of_seq]
-                .iter()
-                .rposition(not_removed_by_x9)
-            {
-                Some(idx) => levels[idx],
-                None => para_level,
-            };
-
-            // Get the last non-removed character to check if it is an isolate initiator.
-            // The spec calls for an unmatched one, but matched isolate initiators
-            // will never be at the end of a level run (otherwise there would be more to the run).
-            // We unwrap_or(BN) because BN marks removed classes and it won't matter for the check.
-            let last_non_removed = original_classes[..end_of_seq]
-                .iter()
-                .copied()
-                .rev()
-                .find(not_removed_by_x9)
-                .unwrap_or(BN);
-
-            // Get the level of the next non-removed char after the runs.
-            let succ_level = if let RLI | LRI | FSI = last_non_removed {
-                para_level
-            } else {
-                match original_classes[end_of_seq..]
-                    .iter()
-                    .position(not_removed_by_x9)
-                {
-                    Some(idx) => levels[end_of_seq + idx],
-                    None => para_level,
-                }
-            };
-
-            result.sos = max(seq_level, pred_level).bidi_class();
-            result.eos = max(end_level, succ_level).bidi_class();
-            result
-        })
-        .collect()
-}
-
-impl IsolatingRunSequence {
-    /// Given a text-relative position `pos` and an index of the level run it is in,
-    /// produce an iterator of all characters after and pos (`pos..`) that are in this
-    /// run sequence
-    pub(crate) fn iter_forwards_from(
-        &self,
-        pos: usize,
-        level_run_index: usize,
-    ) -> impl Iterator<Item = usize> + '_ {
-        let runs = &self.runs[level_run_index..];
-
-        // Check that it is in range
-        // (we can't use contains() since we want an inclusive range)
-        #[cfg(feature = "std")]
-        debug_assert!(runs[0].start <= pos && pos <= runs[0].end);
-
-        (pos..runs[0].end).chain(runs[1..].iter().flat_map(Clone::clone))
-    }
-
-    /// Given a text-relative position `pos` and an index of the level run it is in,
-    /// produce an iterator of all characters before and excludingpos (`..pos`) that are in this
-    /// run sequence
-    pub(crate) fn iter_backwards_from(
-        &self,
-        pos: usize,
-        level_run_index: usize,
-    ) -> impl Iterator<Item = usize> + '_ {
-        let prev_runs = &self.runs[..level_run_index];
-        let current = &self.runs[level_run_index];
-
-        // Check that it is in range
-        // (we can't use contains() since we want an inclusive range)
-        #[cfg(feature = "std")]
-        debug_assert!(current.start <= pos && pos <= current.end);
-
-        (current.start..pos)
-            .rev()
-            .chain(prev_runs.iter().rev().flat_map(Clone::clone))
-    }
-}
-
-/// Finds the level runs in a paragraph.
-///
-/// <http://www.unicode.org/reports/tr9/#BD7>
-fn level_runs(levels: &[Level], original_classes: &[BidiClass]) -> Vec<LevelRun> {
-    assert_eq!(levels.len(), original_classes.len());
-
-    let mut runs = Vec::new();
-    if levels.is_empty() {
-        return runs;
-    }
-
-    let mut current_run_level = levels[0];
-    let mut current_run_start = 0;
-    for i in 1..levels.len() {
-        if !removed_by_x9(original_classes[i]) && levels[i] != current_run_level {
-            // End the last run and start a new one.
-            runs.push(current_run_start..i);
-            current_run_level = levels[i];
-            current_run_start = i;
-        }
-    }
-    runs.push(current_run_start..levels.len());
-
-    runs
-}
-
-/// Should this character be ignored in steps after X9?
-///
-/// <http://www.unicode.org/reports/tr9/#X9>
-pub fn removed_by_x9(class: BidiClass) -> bool {
-    match class {
-        RLE | LRE | RLO | LRO | PDF | BN => true,
-        _ => false,
-    }
-}
-
-// For use as a predicate for `position` / `rposition`
-pub fn not_removed_by_x9(class: &BidiClass) -> bool {
-    !removed_by_x9(*class)
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn test_level_runs() {
-        assert_eq!(level_runs(&Level::vec(&[]), &[]), &[]);
-        assert_eq!(
-            level_runs(&Level::vec(&[0, 0, 0, 1, 1, 2, 0, 0]), &[L; 8]),
-            &[0..3, 3..5, 5..6, 6..8]
-        );
-    }
-
-    // From <http://www.unicode.org/reports/tr9/#BD13>
-    #[rustfmt::skip]
-    #[test]
-    fn test_isolating_run_sequences() {
-
-        // == Example 1 ==
-        // text1·RLE·text2·PDF·RLE·text3·PDF·text4
-        // index        0    1  2    3    4  5    6  7
-        let classes = &[L, RLE, L, PDF, RLE, L, PDF, L];
-        let levels =  &[0,   1, 1,   1,   1, 1,   1, 0];
-        let para_level = Level::ltr();
-        let mut sequences = isolating_run_sequences(para_level, classes, &Level::vec(levels));
-        sequences.sort_by(|a, b| a.runs[0].clone().cmp(b.runs[0].clone()));
-        assert_eq!(
-            sequences.iter().map(|s| s.runs.clone()).collect::<Vec<_>>(),
-            vec![vec![0..2], vec![2..7], vec![7..8]]
-        );
-
-        // == Example 2 ==
-        // text1·RLI·text2·PDI·RLI·text3·PDI·text4
-        // index        0    1  2    3    4  5    6  7
-        let classes = &[L, RLI, L, PDI, RLI, L, PDI, L];
-        let levels =  &[0,   0, 1,   0,   0, 1,   0, 0];
-        let para_level = Level::ltr();
-        let mut sequences = isolating_run_sequences(para_level, classes, &Level::vec(levels));
-        sequences.sort_by(|a, b| a.runs[0].clone().cmp(b.runs[0].clone()));
-        assert_eq!(
-            sequences.iter().map(|s| s.runs.clone()).collect::<Vec<_>>(),
-            vec![vec![0..2, 3..5, 6..8], vec![2..3], vec![5..6]]
-        );
-
-        // == Example 3 ==
-        // text1·RLI·text2·LRI·text3·RLE·text4·PDF·text5·PDI·text6·PDI·text7
-        // index        0    1  2    3  4    5  6    7  8    9  10  11  12
-        let classes = &[L, RLI, L, LRI, L, RLE, L, PDF, L, PDI, L, PDI,  L];
-        let levels =  &[0,   0, 1,   1, 2,   3, 3,   3, 2,   1, 1,   0,  0];
-        let para_level = Level::ltr();
-        let mut sequences = isolating_run_sequences(para_level, classes, &Level::vec(levels));
-        sequences.sort_by(|a, b| a.runs[0].clone().cmp(b.runs[0].clone()));
-        assert_eq!(
-            sequences.iter().map(|s| s.runs.clone()).collect::<Vec<_>>(),
-            vec![vec![0..2, 11..13], vec![2..4, 9..11], vec![4..6], vec![6..8], vec![8..9]]
-        );
-    }
-
-    // From <http://www.unicode.org/reports/tr9/#X10>
-    #[rustfmt::skip]
-    #[test]
-    fn test_isolating_run_sequences_sos_and_eos() {
-
-        // == Example 1 ==
-        // text1·RLE·text2·LRE·text3·PDF·text4·PDF·RLE·text5·PDF·text6
-        // index        0    1  2    3  4    5  6    7    8  9   10  11
-        let classes = &[L, RLE, L, LRE, L, PDF, L, PDF, RLE, L, PDF,  L];
-        let levels =  &[0,   1, 1,   2, 2,   2, 1,   1,   1, 1,   1,  0];
-        let para_level = Level::ltr();
-        let mut sequences = isolating_run_sequences(para_level, classes, &Level::vec(levels));
-        sequences.sort_by(|a, b| a.runs[0].clone().cmp(b.runs[0].clone()));
-
-        // text1
-        assert_eq!(
-            &sequences[0],
-            &IsolatingRunSequence {
-                runs: vec![0..2],
-                sos: L,
-                eos: R,
-            }
-        );
-
-        // text2
-        assert_eq!(
-            &sequences[1],
-            &IsolatingRunSequence {
-                runs: vec![2..4],
-                sos: R,
-                eos: L,
-            }
-        );
-
-        // text3
-        assert_eq!(
-            &sequences[2],
-            &IsolatingRunSequence {
-                runs: vec![4..6],
-                sos: L,
-                eos: L,
-            }
-        );
-
-        // text4 text5
-        assert_eq!(
-            &sequences[3],
-            &IsolatingRunSequence {
-                runs: vec![6..11],
-                sos: L,
-                eos: R,
-            }
-        );
-
-        // text6
-        assert_eq!(
-            &sequences[4],
-            &IsolatingRunSequence {
-                runs: vec![11..12],
-                sos: R,
-                eos: L,
-            }
-        );
-
-        // == Example 2 ==
-        // text1·RLI·text2·LRI·text3·PDI·text4·PDI·RLI·text5·PDI·text6
-        // index        0    1  2    3  4    5  6    7    8  9   10  11
-        let classes = &[L, RLI, L, LRI, L, PDI, L, PDI, RLI, L, PDI,  L];
-        let levels =  &[0,   0, 1,   1, 2,   1, 1,   0,   0, 1,   0,  0];
-        let para_level = Level::ltr();
-        let mut sequences = isolating_run_sequences(para_level, classes, &Level::vec(levels));
-        sequences.sort_by(|a, b| a.runs[0].clone().cmp(b.runs[0].clone()));
-
-        // text1·RLI·PDI·RLI·PDI·text6
-        assert_eq!(
-            &sequences[0],
-            &IsolatingRunSequence {
-                runs: vec![0..2, 7..9, 10..12],
-                sos: L,
-                eos: L,
-            }
-        );
-
-        // text2·LRI·PDI·text4
-        assert_eq!(
-            &sequences[1],
-            &IsolatingRunSequence {
-                runs: vec![2..4, 5..7],
-                sos: R,
-                eos: R,
-            }
-        );
-
-        // text3
-        assert_eq!(
-            &sequences[2],
-            &IsolatingRunSequence {
-                runs: vec![4..5],
-                sos: L,
-                eos: L,
-            }
-        );
-
-        // text5
-        assert_eq!(
-            &sequences[3],
-            &IsolatingRunSequence {
-                runs: vec![9..10],
-                sos: R,
-                eos: R,
-            }
-        );
-    }
-
-    #[test]
-    fn test_removed_by_x9() {
-        let rem_classes = &[RLE, LRE, RLO, LRO, PDF, BN];
-        let not_classes = &[L, RLI, AL, LRI, PDI];
-        for x in rem_classes {
-            assert_eq!(removed_by_x9(*x), true);
-        }
-        for x in not_classes {
-            assert_eq!(removed_by_x9(*x), false);
-        }
-    }
-
-    #[test]
-    fn test_not_removed_by_x9() {
-        let non_x9_classes = &[L, R, AL, EN, ES, ET, AN, CS, NSM, B, S, WS, ON, LRI, RLI, FSI, PDI];
-        for x in non_x9_classes {
-            assert_eq!(not_removed_by_x9(&x), true);
-        }
-    }
-}
diff --git a/vendor/unicode-bidi/src/utf16.rs b/vendor/unicode-bidi/src/utf16.rs
deleted file mode 100644
index dcd9baf2..00000000
--- a/vendor/unicode-bidi/src/utf16.rs
+++ /dev/null
@@ -1,791 +0,0 @@
-// Copyright 2023 The Mozilla Foundation. See the
-// COPYRIGHT file at the top-level directory of this distribution.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-use super::TextSource;
-
-use alloc::borrow::Cow;
-use alloc::vec::Vec;
-use core::char;
-use core::ops::Range;
-
-use crate::{
-    compute_bidi_info_for_para, compute_initial_info, level, para_direction, reorder_levels,
-    reorder_visual, visual_runs_for_line,
-};
-use crate::{BidiClass, BidiDataSource, Direction, Level, LevelRun, ParagraphInfo};
-
-#[cfg(feature = "hardcoded-data")]
-use crate::HardcodedBidiData;
-
-/// Initial bidi information of the text (UTF-16 version).
-///
-/// Contains the text paragraphs and `BidiClass` of its characters.
-#[derive(PartialEq, Debug)]
-pub struct InitialInfo<'text> {
-    /// The text
-    pub text: &'text [u16],
-
-    /// The BidiClass of the character at each code unit in the text.
-    /// If a character is multiple code units, its class will appear multiple times in the vector.
-    pub original_classes: Vec<BidiClass>,
-
-    /// The boundaries and level of each paragraph within the text.
-    pub paragraphs: Vec<ParagraphInfo>,
-}
-
-impl<'text> InitialInfo<'text> {
-    /// Find the paragraphs and BidiClasses in a string of text.
-    ///
-    /// <http://www.unicode.org/reports/tr9/#The_Paragraph_Level>
-    ///
-    /// Also sets the class for each First Strong Isolate initiator (FSI) to LRI or RLI if a strong
-    /// character is found before the matching PDI.  If no strong character is found, the class will
-    /// remain FSI, and it's up to later stages to treat these as LRI when needed.
-    ///
-    /// The `hardcoded-data` Cargo feature (enabled by default) must be enabled to use this.
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[cfg(feature = "hardcoded-data")]
-    pub fn new(text: &[u16], default_para_level: Option<Level>) -> InitialInfo<'_> {
-        Self::new_with_data_source(&HardcodedBidiData, text, default_para_level)
-    }
-
-    /// Find the paragraphs and BidiClasses in a string of text, with a custom [`BidiDataSource`]
-    /// for Bidi data. If you just wish to use the hardcoded Bidi data, please use [`InitialInfo::new()`]
-    /// instead (enabled with tbe default `hardcoded-data` Cargo feature)
-    ///
-    /// <http://www.unicode.org/reports/tr9/#The_Paragraph_Level>
-    ///
-    /// Also sets the class for each First Strong Isolate initiator (FSI) to LRI or RLI if a strong
-    /// character is found before the matching PDI.  If no strong character is found, the class will
-    /// remain FSI, and it's up to later stages to treat these as LRI when needed.
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn new_with_data_source<'a, D: BidiDataSource>(
-        data_source: &D,
-        text: &'a [u16],
-        default_para_level: Option<Level>,
-    ) -> InitialInfo<'a> {
-        InitialInfoExt::new_with_data_source(data_source, text, default_para_level).base
-    }
-}
-
-/// Extended version of InitialInfo (not public API).
-#[derive(PartialEq, Debug)]
-struct InitialInfoExt<'text> {
-    /// The base InitialInfo for the text, recording its paragraphs and bidi classes.
-    base: InitialInfo<'text>,
-
-    /// Parallel to base.paragraphs, records whether each paragraph is "pure LTR" that
-    /// requires no further bidi processing (i.e. there are no RTL characters or bidi
-    /// control codes present).
-    pure_ltr: Vec<bool>,
-}
-
-impl<'text> InitialInfoExt<'text> {
-    /// Find the paragraphs and BidiClasses in a string of text, with a custom [`BidiDataSource`]
-    /// for Bidi data. If you just wish to use the hardcoded Bidi data, please use [`InitialInfo::new()`]
-    /// instead (enabled with tbe default `hardcoded-data` Cargo feature)
-    ///
-    /// <http://www.unicode.org/reports/tr9/#The_Paragraph_Level>
-    ///
-    /// Also sets the class for each First Strong Isolate initiator (FSI) to LRI or RLI if a strong
-    /// character is found before the matching PDI.  If no strong character is found, the class will
-    /// remain FSI, and it's up to later stages to treat these as LRI when needed.
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn new_with_data_source<'a, D: BidiDataSource>(
-        data_source: &D,
-        text: &'a [u16],
-        default_para_level: Option<Level>,
-    ) -> InitialInfoExt<'a> {
-        let mut paragraphs = Vec::<ParagraphInfo>::new();
-        let mut pure_ltr = Vec::<bool>::new();
-        let (original_classes, _, _) = compute_initial_info(
-            data_source,
-            text,
-            default_para_level,
-            Some((&mut paragraphs, &mut pure_ltr)),
-        );
-
-        InitialInfoExt {
-            base: InitialInfo {
-                text,
-                original_classes,
-                paragraphs,
-            },
-            pure_ltr,
-        }
-    }
-}
-
-/// Bidi information of the text (UTF-16 version).
-///
-/// The `original_classes` and `levels` vectors are indexed by code unit offsets into the text.  If a
-/// character is multiple code units wide, then its class and level will appear multiple times in these
-/// vectors.
-// TODO: Impl `struct StringProperty<T> { values: Vec<T> }` and use instead of Vec<T>
-#[derive(Debug, PartialEq)]
-pub struct BidiInfo<'text> {
-    /// The text
-    pub text: &'text [u16],
-
-    /// The BidiClass of the character at each byte in the text.
-    pub original_classes: Vec<BidiClass>,
-
-    /// The directional embedding level of each byte in the text.
-    pub levels: Vec<Level>,
-
-    /// The boundaries and paragraph embedding level of each paragraph within the text.
-    ///
-    /// TODO: Use SmallVec or similar to avoid overhead when there are only one or two paragraphs?
-    /// Or just don't include the first paragraph, which always starts at 0?
-    pub paragraphs: Vec<ParagraphInfo>,
-}
-
-impl<'text> BidiInfo<'text> {
-    /// Split the text into paragraphs and determine the bidi embedding levels for each paragraph.
-    ///
-    ///
-    /// The `hardcoded-data` Cargo feature (enabled by default) must be enabled to use this.
-    ///
-    /// TODO: In early steps, check for special cases that allow later steps to be skipped. like
-    /// text that is entirely LTR.  See the `nsBidi` class from Gecko for comparison.
-    ///
-    /// TODO: Support auto-RTL base direction
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[cfg(feature = "hardcoded-data")]
-    #[inline]
-    pub fn new(text: &[u16], default_para_level: Option<Level>) -> BidiInfo<'_> {
-        Self::new_with_data_source(&HardcodedBidiData, text, default_para_level)
-    }
-
-    /// Split the text into paragraphs and determine the bidi embedding levels for each paragraph, with a custom [`BidiDataSource`]
-    /// for Bidi data. If you just wish to use the hardcoded Bidi data, please use [`BidiInfo::new()`]
-    /// instead (enabled with tbe default `hardcoded-data` Cargo feature).
-    ///
-    /// TODO: In early steps, check for special cases that allow later steps to be skipped. like
-    /// text that is entirely LTR.  See the `nsBidi` class from Gecko for comparison.
-    ///
-    /// TODO: Support auto-RTL base direction
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn new_with_data_source<'a, D: BidiDataSource>(
-        data_source: &D,
-        text: &'a [u16],
-        default_para_level: Option<Level>,
-    ) -> BidiInfo<'a> {
-        let InitialInfoExt { base, pure_ltr, .. } =
-            InitialInfoExt::new_with_data_source(data_source, text, default_para_level);
-
-        let mut levels = Vec::<Level>::with_capacity(text.len());
-        let mut processing_classes = base.original_classes.clone();
-
-        for (para, is_pure_ltr) in base.paragraphs.iter().zip(pure_ltr.iter()) {
-            let text = &text[para.range.clone()];
-            let original_classes = &base.original_classes[para.range.clone()];
-
-            compute_bidi_info_for_para(
-                data_source,
-                para,
-                *is_pure_ltr,
-                text,
-                original_classes,
-                &mut processing_classes,
-                &mut levels,
-            );
-        }
-
-        BidiInfo {
-            text,
-            original_classes: base.original_classes,
-            paragraphs: base.paragraphs,
-            levels,
-        }
-    }
-
-    /// Produce the levels for this paragraph as needed for reordering, one level per *byte*
-    /// in the paragraph. The returned vector includes bytes that are not included
-    /// in the `line`, but will not adjust them.
-    ///
-    /// This runs [Rule L1], you can run
-    /// [Rule L2] by calling [`Self::reorder_visual()`].
-    /// If doing so, you may prefer to use [`Self::reordered_levels_per_char()`] instead
-    /// to avoid non-byte indices.
-    ///
-    /// For an all-in-one reordering solution, consider using [`Self::reorder_visual()`].
-    ///
-    /// [Rule L1]: https://www.unicode.org/reports/tr9/#L1
-    /// [Rule L2]: https://www.unicode.org/reports/tr9/#L2
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reordered_levels(&self, para: &ParagraphInfo, line: Range<usize>) -> Vec<Level> {
-        assert!(line.start <= self.levels.len());
-        assert!(line.end <= self.levels.len());
-
-        let mut levels = self.levels.clone();
-        let line_classes = &self.original_classes[line.clone()];
-        let line_levels = &mut levels[line.clone()];
-        let line_str: &[u16] = &self.text[line.clone()];
-
-        reorder_levels(line_classes, line_levels, line_str, para.level);
-
-        levels
-    }
-
-    /// Produce the levels for this paragraph as needed for reordering, one level per *character*
-    /// in the paragraph. The returned vector includes characters that are not included
-    /// in the `line`, but will not adjust them.
-    ///
-    /// This runs [Rule L1], you can run
-    /// [Rule L2] by calling [`Self::reorder_visual()`].
-    /// If doing so, you may prefer to use [`Self::reordered_levels_per_char()`] instead
-    /// to avoid non-byte indices.
-    ///
-    /// For an all-in-one reordering solution, consider using [`Self::reorder_visual()`].
-    ///
-    /// [Rule L1]: https://www.unicode.org/reports/tr9/#L1
-    /// [Rule L2]: https://www.unicode.org/reports/tr9/#L2
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reordered_levels_per_char(
-        &self,
-        para: &ParagraphInfo,
-        line: Range<usize>,
-    ) -> Vec<Level> {
-        let levels = self.reordered_levels(para, line);
-        self.text.char_indices().map(|(i, _)| levels[i]).collect()
-    }
-
-    /// Re-order a line based on resolved levels and return the line in display order.
-    ///
-    /// This does not apply [Rule L3] or [Rule L4] around combining characters or mirroring.
-    ///
-    /// [Rule L3]: https://www.unicode.org/reports/tr9/#L3
-    /// [Rule L4]: https://www.unicode.org/reports/tr9/#L4
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reorder_line(&self, para: &ParagraphInfo, line: Range<usize>) -> Cow<'text, [u16]> {
-        if !level::has_rtl(&self.levels[line.clone()]) {
-            return self.text[line].into();
-        }
-        let (levels, runs) = self.visual_runs(para, line.clone());
-        reorder_line(self.text, line, levels, runs)
-    }
-
-    /// Reorders pre-calculated levels of a sequence of characters.
-    ///
-    /// NOTE: This is a convenience method that does not use a `Paragraph`  object. It is
-    /// intended to be used when an application has determined the levels of the objects (character sequences)
-    /// and just needs to have them reordered.
-    ///
-    /// the index map will result in `indexMap[visualIndex]==logicalIndex`.
-    ///
-    /// This only runs [Rule L2](http://www.unicode.org/reports/tr9/#L2) as it does not have
-    /// information about the actual text.
-    ///
-    /// Furthermore, if `levels` is an array that is aligned with code units, bytes within a codepoint may be
-    /// reversed. You may need to fix up the map to deal with this. Alternatively, only pass in arrays where each `Level`
-    /// is for a single code point.
-    ///
-    ///
-    ///   # # Example
-    /// ```
-    /// use unicode_bidi::BidiInfo;
-    /// use unicode_bidi::Level;
-    ///
-    /// let l0 = Level::from(0);
-    /// let l1 = Level::from(1);
-    /// let l2 = Level::from(2);
-    ///
-    /// let levels = vec![l0, l0, l0, l0];
-    /// let index_map = BidiInfo::reorder_visual(&levels);
-    /// assert_eq!(levels.len(), index_map.len());
-    /// assert_eq!(index_map, [0, 1, 2, 3]);
-    ///
-    /// let levels: Vec<Level> = vec![l0, l0, l0, l1, l1, l1, l2, l2];
-    /// let index_map = BidiInfo::reorder_visual(&levels);
-    /// assert_eq!(levels.len(), index_map.len());
-    /// assert_eq!(index_map, [0, 1, 2, 6, 7, 5, 4, 3]);
-    /// ```
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[inline]
-    pub fn reorder_visual(levels: &[Level]) -> Vec<usize> {
-        reorder_visual(levels)
-    }
-
-    /// Find the level runs within a line and return them in visual order.
-    ///
-    /// `line` is a range of bytes indices within `levels`.
-    ///
-    /// The first return value is a vector of levels used by the reordering algorithm,
-    /// i.e. the result of [Rule L1]. The second return value is a vector of level runs,
-    /// the result of [Rule L2], showing the visual order that each level run (a run of text with the
-    /// same level) should be displayed. Within each run, the display order can be checked
-    /// against the Level vector.
-    ///
-    /// This does not handle [Rule L3] (combining characters) or [Rule L4] (mirroring),
-    /// as that should be handled by the engine using this API.
-    ///
-    /// Conceptually, this is the same as running [`Self::reordered_levels()`] followed by
-    /// [`Self::reorder_visual()`], however it returns the result as a list of level runs instead
-    /// of producing a level map, since one may wish to deal with the fact that this is operating on
-    /// byte rather than character indices.
-    ///
-    /// <http://www.unicode.org/reports/tr9/#Reordering_Resolved_Levels>
-    ///
-    /// [Rule L1]: https://www.unicode.org/reports/tr9/#L1
-    /// [Rule L2]: https://www.unicode.org/reports/tr9/#L2
-    /// [Rule L3]: https://www.unicode.org/reports/tr9/#L3
-    /// [Rule L4]: https://www.unicode.org/reports/tr9/#L4
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[inline]
-    pub fn visual_runs(
-        &self,
-        para: &ParagraphInfo,
-        line: Range<usize>,
-    ) -> (Vec<Level>, Vec<LevelRun>) {
-        let levels = self.reordered_levels(para, line.clone());
-        visual_runs_for_line(levels, &line)
-    }
-
-    /// If processed text has any computed RTL levels
-    ///
-    /// This information is usually used to skip re-ordering of text when no RTL level is present
-    #[inline]
-    pub fn has_rtl(&self) -> bool {
-        level::has_rtl(&self.levels)
-    }
-}
-
-/// Bidi information of text treated as a single paragraph.
-///
-/// The `original_classes` and `levels` vectors are indexed by code unit offsets into the text.  If a
-/// character is multiple code units wide, then its class and level will appear multiple times in these
-/// vectors.
-#[derive(Debug, PartialEq)]
-pub struct ParagraphBidiInfo<'text> {
-    /// The text
-    pub text: &'text [u16],
-
-    /// The BidiClass of the character at each byte in the text.
-    pub original_classes: Vec<BidiClass>,
-
-    /// The directional embedding level of each byte in the text.
-    pub levels: Vec<Level>,
-
-    /// The paragraph embedding level.
-    pub paragraph_level: Level,
-
-    /// Whether the paragraph is purely LTR.
-    pub is_pure_ltr: bool,
-}
-
-impl<'text> ParagraphBidiInfo<'text> {
-    /// Determine the bidi embedding level.
-    ///
-    ///
-    /// The `hardcoded-data` Cargo feature (enabled by default) must be enabled to use this.
-    ///
-    /// TODO: In early steps, check for special cases that allow later steps to be skipped. like
-    /// text that is entirely LTR.  See the `nsBidi` class from Gecko for comparison.
-    ///
-    /// TODO: Support auto-RTL base direction
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[cfg(feature = "hardcoded-data")]
-    #[inline]
-    pub fn new(text: &[u16], default_para_level: Option<Level>) -> ParagraphBidiInfo<'_> {
-        Self::new_with_data_source(&HardcodedBidiData, text, default_para_level)
-    }
-
-    /// Determine the bidi embedding level, with a custom [`BidiDataSource`]
-    /// for Bidi data. If you just wish to use the hardcoded Bidi data, please use [`BidiInfo::new()`]
-    /// instead (enabled with tbe default `hardcoded-data` Cargo feature).
-    ///
-    /// (This is the single-paragraph equivalent of BidiInfo::new_with_data_source,
-    /// and should be kept in sync with it.
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn new_with_data_source<'a, D: BidiDataSource>(
-        data_source: &D,
-        text: &'a [u16],
-        default_para_level: Option<Level>,
-    ) -> ParagraphBidiInfo<'a> {
-        // Here we could create a ParagraphInitialInfo struct to parallel the one
-        // used by BidiInfo, but there doesn't seem any compelling reason for it.
-        let (original_classes, paragraph_level, is_pure_ltr) =
-            compute_initial_info(data_source, text, default_para_level, None);
-
-        let mut levels = Vec::<Level>::with_capacity(text.len());
-        let mut processing_classes = original_classes.clone();
-
-        let para_info = ParagraphInfo {
-            range: Range {
-                start: 0,
-                end: text.len(),
-            },
-            level: paragraph_level,
-        };
-
-        compute_bidi_info_for_para(
-            data_source,
-            &para_info,
-            is_pure_ltr,
-            text,
-            &original_classes,
-            &mut processing_classes,
-            &mut levels,
-        );
-
-        ParagraphBidiInfo {
-            text,
-            original_classes,
-            levels,
-            paragraph_level,
-            is_pure_ltr,
-        }
-    }
-
-    /// Produce the levels for this paragraph as needed for reordering, one level per *code unit*
-    /// in the paragraph. The returned vector includes code units that are not included
-    /// in the `line`, but will not adjust them.
-    ///
-    /// See BidiInfo::reordered_levels for details.
-    ///
-    /// (This should be kept in sync with BidiInfo::reordered_levels.)
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reordered_levels(&self, line: Range<usize>) -> Vec<Level> {
-        assert!(line.start <= self.levels.len());
-        assert!(line.end <= self.levels.len());
-
-        let mut levels = self.levels.clone();
-        let line_classes = &self.original_classes[line.clone()];
-        let line_levels = &mut levels[line.clone()];
-
-        reorder_levels(
-            line_classes,
-            line_levels,
-            self.text.subrange(line),
-            self.paragraph_level,
-        );
-
-        levels
-    }
-
-    /// Produce the levels for this paragraph as needed for reordering, one level per *character*
-    /// in the paragraph. The returned vector includes characters that are not included
-    /// in the `line`, but will not adjust them.
-    ///
-    /// See BidiInfo::reordered_levels_per_char for details.
-    ///
-    /// (This should be kept in sync with BidiInfo::reordered_levels_per_char.)
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reordered_levels_per_char(&self, line: Range<usize>) -> Vec<Level> {
-        let levels = self.reordered_levels(line);
-        self.text.char_indices().map(|(i, _)| levels[i]).collect()
-    }
-
-    /// Re-order a line based on resolved levels and return the line in display order.
-    ///
-    /// See BidiInfo::reorder_line for details.
-    ///
-    /// (This should be kept in sync with BidiInfo::reorder_line.)
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    pub fn reorder_line(&self, line: Range<usize>) -> Cow<'text, [u16]> {
-        if !level::has_rtl(&self.levels[line.clone()]) {
-            return self.text[line].into();
-        }
-        let (levels, runs) = self.visual_runs(line.clone());
-        reorder_line(self.text, line, levels, runs)
-    }
-
-    /// Reorders pre-calculated levels of a sequence of characters.
-    ///
-    /// See BidiInfo::reorder_visual for details.
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[inline]
-    pub fn reorder_visual(levels: &[Level]) -> Vec<usize> {
-        reorder_visual(levels)
-    }
-
-    /// Find the level runs within a line and return them in visual order.
-    ///
-    /// `line` is a range of code-unit indices within `levels`.
-    ///
-    /// See `BidiInfo::visual_runs` for details.
-    ///
-    /// (This should be kept in sync with BidiInfo::visual_runs.)
-    #[cfg_attr(feature = "flame_it", flamer::flame)]
-    #[inline]
-    pub fn visual_runs(&self, line: Range<usize>) -> (Vec<Level>, Vec<LevelRun>) {
-        let levels = self.reordered_levels(line.clone());
-        visual_runs_for_line(levels, &line)
-    }
-
-    /// If processed text has any computed RTL levels
-    ///
-    /// This information is usually used to skip re-ordering of text when no RTL level is present
-    #[inline]
-    pub fn has_rtl(&self) -> bool {
-        !self.is_pure_ltr
-    }
-
-    /// Return the paragraph's Direction (Ltr, Rtl, or Mixed) based on its levels.
-    #[inline]
-    pub fn direction(&self) -> Direction {
-        para_direction(&self.levels)
-    }
-}
-
-/// Return a line of the text in display order based on resolved levels.
-///
-/// `text`   the full text passed to the `BidiInfo` or `ParagraphBidiInfo` for analysis
-/// `line`   a range of byte indices within `text` corresponding to one line
-/// `levels` array of `Level` values, with `line`'s levels reordered into visual order
-/// `runs`   array of `LevelRun`s in visual order
-///
-/// (`levels` and `runs` are the result of calling `BidiInfo::visual_runs()` or
-/// `ParagraphBidiInfo::visual_runs()` for the line of interest.)
-///
-/// Returns: the reordered text of the line.
-///
-/// This does not apply [Rule L3] or [Rule L4] around combining characters or mirroring.
-///
-/// [Rule L3]: https://www.unicode.org/reports/tr9/#L3
-/// [Rule L4]: https://www.unicode.org/reports/tr9/#L4
-fn reorder_line<'text>(
-    text: &'text [u16],
-    line: Range<usize>,
-    levels: Vec<Level>,
-    runs: Vec<LevelRun>,
-) -> Cow<'text, [u16]> {
-    // If all isolating run sequences are LTR, no reordering is needed
-    if runs.iter().all(|run| levels[run.start].is_ltr()) {
-        return text[line].into();
-    }
-
-    let mut result = Vec::<u16>::with_capacity(line.len());
-    for run in runs {
-        if levels[run.start].is_rtl() {
-            let mut buf = [0; 2];
-            for c in text[run].chars().rev() {
-                result.extend(c.encode_utf16(&mut buf).iter());
-            }
-        } else {
-            result.extend(text[run].iter());
-        }
-    }
-    result.into()
-}
-
-/// Contains a reference of `BidiInfo` and one of its `paragraphs`.
-/// And it supports all operation in the `Paragraph` that needs also its
-/// `BidiInfo` such as `direction`.
-#[derive(Debug)]
-pub struct Paragraph<'a, 'text> {
-    pub info: &'a BidiInfo<'text>,
-    pub para: &'a ParagraphInfo,
-}
-
-impl<'a, 'text> Paragraph<'a, 'text> {
-    #[inline]
-    pub fn new(info: &'a BidiInfo<'text>, para: &'a ParagraphInfo) -> Paragraph<'a, 'text> {
-        Paragraph { info, para }
-    }
-
-    /// Returns if the paragraph is Left direction, right direction or mixed.
-    #[inline]
-    pub fn direction(&self) -> Direction {
-        para_direction(&self.info.levels[self.para.range.clone()])
-    }
-
-    /// Returns the `Level` of a certain character in the paragraph.
-    #[inline]
-    pub fn level_at(&self, pos: usize) -> Level {
-        let actual_position = self.para.range.start + pos;
-        self.info.levels[actual_position]
-    }
-}
-
-/// Implementation of TextSource for UTF-16 text in a [u16] array.
-/// Note that there could be unpaired surrogates present!
-
-// Convenience functions to check whether a UTF16 code unit is a surrogate.
-#[inline]
-fn is_high_surrogate(code: u16) -> bool {
-    (code & 0xFC00) == 0xD800
-}
-#[inline]
-fn is_low_surrogate(code: u16) -> bool {
-    (code & 0xFC00) == 0xDC00
-}
-
-impl<'text> TextSource<'text> for [u16] {
-    type CharIter = Utf16CharIter<'text>;
-    type CharIndexIter = Utf16CharIndexIter<'text>;
-    type IndexLenIter = Utf16IndexLenIter<'text>;
-
-    #[inline]
-    fn len(&self) -> usize {
-        (self as &[u16]).len()
-    }
-    fn char_at(&self, index: usize) -> Option<(char, usize)> {
-        if index >= self.len() {
-            return None;
-        }
-        // Get the indicated code unit and try simply converting it to a char;
-        // this will fail if it is half of a surrogate pair.
-        let c = self[index];
-        if let Some(ch) = char::from_u32(c.into()) {
-            return Some((ch, 1));
-        }
-        // If it's a low surrogate, and was immediately preceded by a high surrogate,
-        // then we're in the middle of a (valid) character, and should return None.
-        if is_low_surrogate(c) && index > 0 && is_high_surrogate(self[index - 1]) {
-            return None;
-        }
-        // Otherwise, try to decode, returning REPLACEMENT_CHARACTER for errors.
-        if let Some(ch) = char::decode_utf16(self[index..].iter().cloned()).next() {
-            if let Ok(ch) = ch {
-                // This must be a surrogate pair, otherwise char::from_u32() above should
-                // have succeeded!
-                debug_assert!(ch.len_utf16() == 2, "BMP should have already been handled");
-                return Some((ch, ch.len_utf16()));
-            }
-        } else {
-            debug_assert!(
-                false,
-                "Why did decode_utf16 return None when we're not at the end?"
-            );
-            return None;
-        }
-        // Failed to decode UTF-16: we must have encountered an unpaired surrogate.
-        // Return REPLACEMENT_CHARACTER (not None), to continue processing the following text
-        // and keep indexing correct.
-        Some((char::REPLACEMENT_CHARACTER, 1))
-    }
-    #[inline]
-    fn subrange(&self, range: Range<usize>) -> &Self {
-        &(self as &[u16])[range]
-    }
-    #[inline]
-    fn chars(&'text self) -> Self::CharIter {
-        Utf16CharIter::new(&self)
-    }
-    #[inline]
-    fn char_indices(&'text self) -> Self::CharIndexIter {
-        Utf16CharIndexIter::new(&self)
-    }
-    #[inline]
-    fn indices_lengths(&'text self) -> Self::IndexLenIter {
-        Utf16IndexLenIter::new(&self)
-    }
-    #[inline]
-    fn char_len(ch: char) -> usize {
-        ch.len_utf16()
-    }
-}
-
-/// Iterator over UTF-16 text in a [u16] slice, returning (index, char_len) tuple.
-#[derive(Debug)]
-pub struct Utf16IndexLenIter<'text> {
-    text: &'text [u16],
-    cur_pos: usize,
-}
-
-impl<'text> Utf16IndexLenIter<'text> {
-    #[inline]
-    pub fn new(text: &'text [u16]) -> Self {
-        Utf16IndexLenIter { text, cur_pos: 0 }
-    }
-}
-
-impl Iterator for Utf16IndexLenIter<'_> {
-    type Item = (usize, usize);
-
-    #[inline]
-    fn next(&mut self) -> Option<Self::Item> {
-        if let Some((_, char_len)) = self.text.char_at(self.cur_pos) {
-            let result = (self.cur_pos, char_len);
-            self.cur_pos += char_len;
-            return Some(result);
-        }
-        None
-    }
-}
-
-/// Iterator over UTF-16 text in a [u16] slice, returning (index, char) tuple.
-#[derive(Debug)]
-pub struct Utf16CharIndexIter<'text> {
-    text: &'text [u16],
-    cur_pos: usize,
-}
-
-impl<'text> Utf16CharIndexIter<'text> {
-    pub fn new(text: &'text [u16]) -> Self {
-        Utf16CharIndexIter { text, cur_pos: 0 }
-    }
-}
-
-impl Iterator for Utf16CharIndexIter<'_> {
-    type Item = (usize, char);
-
-    fn next(&mut self) -> Option<Self::Item> {
-        if let Some((ch, char_len)) = self.text.char_at(self.cur_pos) {
-            let result = (self.cur_pos, ch);
-            self.cur_pos += char_len;
-            return Some(result);
-        }
-        None
-    }
-}
-
-/// Iterator over UTF-16 text in a [u16] slice, returning Unicode chars.
-/// (Unlike the other iterators above, this also supports reverse iteration.)
-#[derive(Debug)]
-pub struct Utf16CharIter<'text> {
-    text: &'text [u16],
-    cur_pos: usize,
-    end_pos: usize,
-}
-
-impl<'text> Utf16CharIter<'text> {
-    pub fn new(text: &'text [u16]) -> Self {
-        Utf16CharIter {
-            text,
-            cur_pos: 0,
-            end_pos: text.len(),
-        }
-    }
-}
-
-impl Iterator for Utf16CharIter<'_> {
-    type Item = char;
-
-    fn next(&mut self) -> Option<Self::Item> {
-        if let Some((ch, char_len)) = self.text.char_at(self.cur_pos) {
-            self.cur_pos += char_len;
-            return Some(ch);
-        }
-        None
-    }
-}
-
-impl DoubleEndedIterator for Utf16CharIter<'_> {
-    fn next_back(&mut self) -> Option<Self::Item> {
-        if self.end_pos <= self.cur_pos {
-            return None;
-        }
-        self.end_pos -= 1;
-        if let Some(ch) = char::from_u32(self.text[self.end_pos] as u32) {
-            return Some(ch);
-        }
-        if self.end_pos > self.cur_pos {
-            if let Some((ch, char_len)) = self.text.char_at(self.end_pos - 1) {
-                if char_len == 2 {
-                    self.end_pos -= 1;
-                    return Some(ch);
-                }
-            }
-        }
-        Some(char::REPLACEMENT_CHARACTER)
-    }
-}
diff --git a/vendor/unicode-normalization/.cargo-checksum.json b/vendor/unicode-normalization/.cargo-checksum.json
deleted file mode 100644
index 07417aec..00000000
--- a/vendor/unicode-normalization/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"376feb646a85a5b2b5c45d5e817cdcf9fd79c0cb4b924fde03687da3e6ea0f39","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"5e6af58a3100ef18063422cb2fdf70afac62b5d60d828c6cde6344236d795be9","benches/bench.rs":"827e5343b059a732904be29717c2797203bfd0a633edf08042afea65372a3e2c","scripts/unicode.py":"648b5df0f5dd5db92ed17169456975aeca73d44cd83760bb68b7a7b6e70097c7","src/__test_api.rs":"78e21bfa0b98894f545c8ed3e31cec20d7a48951a7f3ed69a6130c4b3d463aee","src/decompose.rs":"c0eb774843a545356e63bbcd7fb926f80d3c97ef4601ca3701fc34154f2e9905","src/lib.rs":"1983769ea083caa36b0736c87cf2a98e91c2b900f1d5dec64e327360fa862386","src/lookups.rs":"962f9909b32e02b8a2a05836135d9cd39bb1ce01f7c659de99cbd8a3a3c78574","src/no_std_prelude.rs":"602e81e67b8952b6571826f431e3b6787be3073bc10f38a0d3374278f81a6a1f","src/normalize.rs":"de2670b4437d335d42884af844a750f70e541467ecd34077dfe032103cb9b041","src/perfect_hash.rs":"400c84e2f467f61bd55d55d08672da6a9ad7a57c938ce5d0c701a6994b1b273b","src/quick_check.rs":"9756312d75fc31b67fca954e44a4812945a7e436b03ba18b9a2441f6de570f6f","src/recompose.rs":"a6228ad7561a5c7a1ef1d510159bdde1eea8a161007c80e470432e9b844d5536","src/replace.rs":"b24c904f3e00851a78820e30ddfa4ff10c795f8925fd0ee7f5870f31fdfa770b","src/stream_safe.rs":"383d71f0da401af8e735877e43855c7e16cb06deb2263539cdec2a407dbe257d","src/tables.rs":"b3b3fb0784a3c8ec171135601f9e750825ced09ec6882aeb6692b19624ec81cb","src/test.rs":"3af8ad8c6bd2cc1ca44660bd265ad813c88d3074b448df4d9ff376b25fb77d26"},"package":"a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"}
\ No newline at end of file
diff --git a/vendor/unicode-normalization/COPYRIGHT b/vendor/unicode-normalization/COPYRIGHT
deleted file mode 100644
index b286ec16..00000000
--- a/vendor/unicode-normalization/COPYRIGHT
+++ /dev/null
@@ -1,7 +0,0 @@
-Licensed under the Apache License, Version 2.0
-<LICENSE-APACHE or
-http://www.apache.org/licenses/LICENSE-2.0> or the MIT
-license <LICENSE-MIT or http://opensource.org/licenses/MIT>,
-at your option. All files in the project carrying such
-notice may not be copied, modified, or distributed except
-according to those terms.
diff --git a/vendor/unicode-normalization/Cargo.toml b/vendor/unicode-normalization/Cargo.toml
deleted file mode 100644
index 0dede5db..00000000
--- a/vendor/unicode-normalization/Cargo.toml
+++ /dev/null
@@ -1,52 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies.
-#
-# If you are reading this file be aware that the original Cargo.toml
-# will likely look very different (and much more reasonable).
-# See Cargo.toml.orig for the original contents.
-
-[package]
-edition = "2018"
-name = "unicode-normalization"
-version = "0.1.23"
-authors = [
-    "kwantam <kwantam@gmail.com>",
-    "Manish Goregaokar <manishsmail@gmail.com>",
-]
-exclude = [
-    "target/*",
-    "Cargo.lock",
-    "scripts/tmp",
-    "*.txt",
-    "tests/*",
-]
-description = """
-This crate provides functions for normalization of
-Unicode strings, including Canonical and Compatible
-Decomposition and Recomposition, as described in
-Unicode Standard Annex #15.
-"""
-homepage = "https://github.com/unicode-rs/unicode-normalization"
-documentation = "https://docs.rs/unicode-normalization/"
-readme = "README.md"
-keywords = [
-    "text",
-    "unicode",
-    "normalization",
-    "decomposition",
-    "recomposition",
-]
-license = "MIT/Apache-2.0"
-repository = "https://github.com/unicode-rs/unicode-normalization"
-
-[dependencies.tinyvec]
-version = "1"
-features = ["alloc"]
-
-[features]
-default = ["std"]
-std = []
diff --git a/vendor/unicode-normalization/README.md b/vendor/unicode-normalization/README.md
deleted file mode 100644
index 7d10e4da..00000000
--- a/vendor/unicode-normalization/README.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# unicode-normalization
-
-[![Build Status](https://travis-ci.org/unicode-rs/unicode-normalization.svg)](https://travis-ci.org/unicode-rs/unicode-normalization)
-[![Docs](https://docs.rs/unicode-normalization/badge.svg)](https://docs.rs/unicode-normalization/)
-
-Unicode character composition and decomposition utilities
-as described in
-[Unicode Standard Annex #15](http://www.unicode.org/reports/tr15/).
-
-This crate requires Rust 1.36+.
-
-```rust
-extern crate unicode_normalization;
-
-use unicode_normalization::char::compose;
-use unicode_normalization::UnicodeNormalization;
-
-fn main() {
-    assert_eq!(compose('A','\u{30a}'), Some('Å'));
-
-    let s = "ÅΩ";
-    let c = s.nfc().collect::<String>();
-    assert_eq!(c, "ÅΩ");
-}
-```
-
-## crates.io
-
-You can use this package in your project by adding the following
-to your `Cargo.toml`:
-
-```toml
-[dependencies]
-unicode-normalization = "0.1.23"
-```
-
-## `no_std` + `alloc` support
-
-This crate is completely `no_std` + `alloc` compatible. This can be enabled by disabling the `std` feature, i.e. specifying `default-features = false` for this crate on your `Cargo.toml`.
diff --git a/vendor/unicode-normalization/benches/bench.rs b/vendor/unicode-normalization/benches/bench.rs
deleted file mode 100644
index a977156e..00000000
--- a/vendor/unicode-normalization/benches/bench.rs
+++ /dev/null
@@ -1,127 +0,0 @@
-#![feature(test)]
-
-extern crate test;
-extern crate unicode_normalization;
-
-use std::fs;
-use test::Bencher;
-use unicode_normalization::UnicodeNormalization;
-
-const ASCII: &'static str = "all types of normalized";
-const NFC: &'static str = "Introducci\u{00f3}n a Unicode.pdf";
-const NFD: &'static str = "Introduccio\u{0301}n a Unicode.pdf";
-
-#[bench]
-fn bench_is_nfc_ascii(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfc(ASCII));
-}
-
-#[bench]
-fn bench_is_nfc_normalized(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfc(NFC));
-}
-
-#[bench]
-fn bench_is_nfc_not_normalized(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfc(NFD));
-}
-
-#[bench]
-fn bench_is_nfd_ascii(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfd(ASCII));
-}
-
-#[bench]
-fn bench_is_nfd_normalized(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfd(NFD));
-}
-
-#[bench]
-fn bench_is_nfd_not_normalized(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfd(NFC));
-}
-
-#[bench]
-fn bench_is_nfc_stream_safe_ascii(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfc_stream_safe(ASCII));
-}
-
-#[bench]
-fn bench_is_nfc_stream_safe_normalized(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfc_stream_safe(NFC));
-}
-
-#[bench]
-fn bench_is_nfc_stream_safe_not_normalized(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfc_stream_safe(NFD));
-}
-
-#[bench]
-fn bench_is_nfd_stream_safe_ascii(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfd_stream_safe(ASCII));
-}
-
-#[bench]
-fn bench_is_nfd_stream_safe_normalized(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfd_stream_safe(NFD));
-}
-
-#[bench]
-fn bench_is_nfd_stream_safe_not_normalized(b: &mut Bencher) {
-    b.iter(|| unicode_normalization::is_nfd_stream_safe(NFC));
-}
-
-#[bench]
-fn bench_nfc_ascii(b: &mut Bencher) {
-    b.iter(|| ASCII.nfc().count());
-}
-
-#[bench]
-fn bench_nfd_ascii(b: &mut Bencher) {
-    b.iter(|| ASCII.nfd().count());
-}
-
-#[bench]
-fn bench_nfc_long(b: &mut Bencher) {
-    let long = fs::read_to_string("benches/long.txt").unwrap();
-    b.iter(|| long.nfc().count());
-}
-
-#[bench]
-fn bench_nfd_long(b: &mut Bencher) {
-    let long = fs::read_to_string("benches/long.txt").unwrap();
-    b.iter(|| long.nfd().count());
-}
-
-#[bench]
-fn bench_nfkc_ascii(b: &mut Bencher) {
-    b.iter(|| ASCII.nfkc().count());
-}
-
-#[bench]
-fn bench_nfkd_ascii(b: &mut Bencher) {
-    b.iter(|| ASCII.nfkd().count());
-}
-
-#[bench]
-fn bench_nfkc_long(b: &mut Bencher) {
-    let long = fs::read_to_string("benches/long.txt").unwrap();
-    b.iter(|| long.nfkc().count());
-}
-
-#[bench]
-fn bench_nfkd_long(b: &mut Bencher) {
-    let long = fs::read_to_string("benches/long.txt").unwrap();
-    b.iter(|| long.nfkd().count());
-}
-
-#[bench]
-fn bench_streamsafe_ascii(b: &mut Bencher) {
-    b.iter(|| ASCII.stream_safe().count());
-}
-
-#[bench]
-fn bench_streamsafe_adversarial(b: &mut Bencher) {
-    let s = "bo\u{0300}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{0316}\u{0317}\u{0318}\u{0319}\u{031a}\u{031b}\u{031c}\u{031d}\u{032e}oom";
-    b.iter(|| s.stream_safe().count());
-}
diff --git a/vendor/unicode-normalization/scripts/unicode.py b/vendor/unicode-normalization/scripts/unicode.py
deleted file mode 100644
index 6c1bd3a8..00000000
--- a/vendor/unicode-normalization/scripts/unicode.py
+++ /dev/null
@@ -1,621 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2011-2018 The Rust Project Developers. See the COPYRIGHT
-# file at the top-level directory of this distribution and at
-# http://rust-lang.org/COPYRIGHT.
-#
-# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-# option. This file may not be copied, modified, or distributed
-# except according to those terms.
-
-# This script uses the following Unicode tables:
-# - DerivedNormalizationProps.txt
-# - NormalizationTest.txt
-# - UnicodeData.txt
-# - StandardizedVariants.txt
-#
-# Since this should not require frequent updates, we just store this
-# out-of-line and check the tables.rs and normalization_tests.rs files into git.
-import collections
-import urllib.request
-
-UNICODE_VERSION = "15.1.0"
-UCD_URL = "https://www.unicode.org/Public/%s/ucd/" % UNICODE_VERSION
-
-PREAMBLE = """// Copyright 2012-2018 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// NOTE: The following code was generated by "scripts/unicode.py", do not edit directly
-
-#![allow(missing_docs)]
-"""
-
-NormalizationTest = collections.namedtuple(
-    "NormalizationTest",
-    ["source", "nfc", "nfd", "nfkc", "nfkd"],
-)
-
-# Mapping taken from Table 12 from:
-# http://www.unicode.org/reports/tr44/#General_Category_Values
-expanded_categories = {
-    'Lu': ['LC', 'L'], 'Ll': ['LC', 'L'], 'Lt': ['LC', 'L'],
-    'Lm': ['L'], 'Lo': ['L'],
-    'Mn': ['M'], 'Mc': ['M'], 'Me': ['M'],
-    'Nd': ['N'], 'Nl': ['N'], 'No': ['No'],
-    'Pc': ['P'], 'Pd': ['P'], 'Ps': ['P'], 'Pe': ['P'],
-    'Pi': ['P'], 'Pf': ['P'], 'Po': ['P'],
-    'Sm': ['S'], 'Sc': ['S'], 'Sk': ['S'], 'So': ['S'],
-    'Zs': ['Z'], 'Zl': ['Z'], 'Zp': ['Z'],
-    'Cc': ['C'], 'Cf': ['C'], 'Cs': ['C'], 'Co': ['C'], 'Cn': ['C'],
-}
-
-# Constants from Unicode 9.0.0 Section 3.12 Conjoining Jamo Behavior
-# http://www.unicode.org/versions/Unicode9.0.0/ch03.pdf#M9.32468.Heading.310.Combining.Jamo.Behavior
-S_BASE, L_COUNT, V_COUNT, T_COUNT = 0xAC00, 19, 21, 28
-S_COUNT = L_COUNT * V_COUNT * T_COUNT
-
-class UnicodeData(object):
-    def __init__(self):
-        self._load_unicode_data()
-        self.norm_props = self._load_norm_props()
-        self.norm_tests = self._load_norm_tests()
-
-        self.canon_comp = self._compute_canonical_comp()
-        self.canon_fully_decomp, self.compat_fully_decomp = self._compute_fully_decomposed()
-
-        self.cjk_compat_variants_fully_decomp = {}
-        self._load_cjk_compat_ideograph_variants()
-
-        def stats(name, table):
-            count = sum(len(v) for v in table.values())
-            print("%s: %d chars => %d decomposed chars" % (name, len(table), count))
-
-        print("Decomposition table stats:")
-        stats("Canonical decomp", self.canon_decomp)
-        stats("Compatible decomp", self.compat_decomp)
-        stats("Canonical fully decomp", self.canon_fully_decomp)
-        stats("Compatible fully decomp", self.compat_fully_decomp)
-        stats("CJK Compat Variants fully decomp", self.cjk_compat_variants_fully_decomp)
-
-        self.ss_leading, self.ss_trailing = self._compute_stream_safe_tables()
-
-    def _fetch(self, filename):
-        resp = urllib.request.urlopen(UCD_URL + filename)
-        return resp.read().decode('utf-8')
-
-    def _load_unicode_data(self):
-        self.name_to_char_int = {}
-        self.combining_classes = {}
-        self.compat_decomp = {}
-        self.canon_decomp = {}
-        self.general_category_mark = []
-        self.general_category_public_assigned = []
-
-        assigned_start = 0;
-        prev_char_int = -1;
-        prev_name = "";
-
-        for line in self._fetch("UnicodeData.txt").splitlines():
-            # See ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html
-            pieces = line.split(';')
-            assert len(pieces) == 15
-            char, name, category, cc, decomp = pieces[0], pieces[1], pieces[2], pieces[3], pieces[5]
-            char_int = int(char, 16)
-
-            name = pieces[1].strip()
-            self.name_to_char_int[name] = char_int
-
-            if cc != '0':
-                self.combining_classes[char_int] = cc
-
-            if decomp.startswith('<'):
-                self.compat_decomp[char_int] = [int(c, 16) for c in decomp.split()[1:]]
-            elif decomp != '':
-                self.canon_decomp[char_int] = [int(c, 16) for c in decomp.split()]
-
-            if category == 'M' or 'M' in expanded_categories.get(category, []):
-                self.general_category_mark.append(char_int)
-
-            assert category != 'Cn', "Unexpected: Unassigned codepoint in UnicodeData.txt"
-            if category not in ['Co', 'Cs']:
-                if char_int != prev_char_int + 1 and not is_first_and_last(prev_name, name):
-                    self.general_category_public_assigned.append((assigned_start, prev_char_int))
-                    assigned_start = char_int
-                prev_char_int = char_int
-                prev_name = name;
-
-        self.general_category_public_assigned.append((assigned_start, prev_char_int))
-
-    def _load_cjk_compat_ideograph_variants(self):
-        for line in self._fetch("StandardizedVariants.txt").splitlines():
-            strip_comments = line.split('#', 1)[0].strip()
-            if not strip_comments:
-                continue
-
-            variation_sequence, description, differences = strip_comments.split(';')
-            description = description.strip()
-
-            # Don't use variations that only apply in particular shaping environments.
-            if differences:
-                continue
-
-            # Look for entries where the description field is a codepoint name.
-            if description not in self.name_to_char_int:
-                continue
-
-            # Only consider the CJK Compatibility Ideographs.
-            if not description.startswith('CJK COMPATIBILITY IDEOGRAPH-'):
-                continue
-
-            char_int = self.name_to_char_int[description]
-
-            assert not char_int in self.combining_classes, "Unexpected: CJK compat variant with a combining class"
-            assert not char_int in self.compat_decomp, "Unexpected: CJK compat variant and compatibility decomposition"
-            assert len(self.canon_decomp[char_int]) == 1, "Unexpected: CJK compat variant and non-singleton canonical decomposition"
-            # If we ever need to handle Hangul here, we'll need to handle it separately.
-            assert not (S_BASE <= char_int < S_BASE + S_COUNT)
-
-            cjk_compat_variant_parts = [int(c, 16) for c in variation_sequence.split()]
-            for c in cjk_compat_variant_parts:
-                assert not c in self.canon_decomp, "Unexpected: CJK compat variant is unnormalized (canon)"
-                assert not c in self.compat_decomp, "Unexpected: CJK compat variant is unnormalized (compat)"
-            self.cjk_compat_variants_fully_decomp[char_int] = cjk_compat_variant_parts
-
-    def _load_norm_props(self):
-        props = collections.defaultdict(list)
-
-        for line in self._fetch("DerivedNormalizationProps.txt").splitlines():
-            (prop_data, _, _) = line.partition("#")
-            prop_pieces = prop_data.split(";")
-
-            if len(prop_pieces) < 2:
-                continue
-
-            assert len(prop_pieces) <= 3
-            (low, _, high) = prop_pieces[0].strip().partition("..")
-
-            prop = prop_pieces[1].strip()
-
-            data = None
-            if len(prop_pieces) == 3:
-                data = prop_pieces[2].strip()
-
-            props[prop].append((low, high, data))
-
-        return props
-
-    def _load_norm_tests(self):
-        tests = []
-        for line in self._fetch("NormalizationTest.txt").splitlines():
-            (test_data, _, _) = line.partition("#")
-            test_pieces = test_data.split(";")
-
-            if len(test_pieces) < 5:
-                continue
-
-            source, nfc, nfd, nfkc, nfkd = [[c.strip() for c in p.split()] for p in test_pieces[:5]]
-            tests.append(NormalizationTest(source, nfc, nfd, nfkc, nfkd))
-
-        return tests
-
-    def _compute_canonical_comp(self):
-        canon_comp = {}
-        comp_exclusions = [
-            (int(low, 16), int(high or low, 16))
-            for low, high, _ in self.norm_props["Full_Composition_Exclusion"]
-        ]
-        for char_int, decomp in self.canon_decomp.items():
-            if any(lo <= char_int <= hi for lo, hi in comp_exclusions):
-                continue
-
-            assert len(decomp) == 2
-            assert (decomp[0], decomp[1]) not in canon_comp
-            canon_comp[(decomp[0], decomp[1])] = char_int
-
-        return canon_comp
-
-    def _compute_fully_decomposed(self):
-        """
-        Even though the decomposition algorithm is recursive, it is possible
-        to precompute the recursion at table generation time with modest
-        increase to the table size.  Then, for these precomputed tables, we
-        note that 1) compatible decomposition is a subset of canonical
-        decomposition and 2) they mostly agree on their intersection.
-        Therefore, we don't store entries in the compatible table for
-        characters that decompose the same way under canonical decomposition.
-
-            Decomposition table stats:
-            Canonical decomp: 2060 chars => 3085 decomposed chars
-            Compatible decomp: 3662 chars => 5440 decomposed chars
-            Canonical fully decomp: 2060 chars => 3404 decomposed chars
-            Compatible fully decomp: 3678 chars => 5599 decomposed chars
-
-        The upshot is that decomposition code is very simple and easy to inline
-        at mild code size cost.
-        """
-        def _decompose(char_int, compatible):
-            # 7-bit ASCII never decomposes
-            if char_int <= 0x7f:
-                yield char_int
-                return
-
-            # Assert that we're handling Hangul separately.
-            assert not (S_BASE <= char_int < S_BASE + S_COUNT)
-
-            decomp = self.canon_decomp.get(char_int)
-            if decomp is not None:
-                for decomposed_ch in decomp:
-                    for fully_decomposed_ch in _decompose(decomposed_ch, compatible):
-                        yield fully_decomposed_ch
-                return
-
-            if compatible and char_int in self.compat_decomp:
-                for decomposed_ch in self.compat_decomp[char_int]:
-                    for fully_decomposed_ch in _decompose(decomposed_ch, compatible):
-                        yield fully_decomposed_ch
-                return
-
-            yield char_int
-            return
-
-        end_codepoint = max(
-            max(self.canon_decomp.keys()),
-            max(self.compat_decomp.keys()),
-        )
-
-        canon_fully_decomp = {}
-        compat_fully_decomp = {}
-
-        for char_int in range(0, end_codepoint + 1):
-            # Always skip Hangul, since it's more efficient to represent its
-            # decomposition programmatically.
-            if S_BASE <= char_int < S_BASE + S_COUNT:
-                continue
-
-            canon = list(_decompose(char_int, False))
-            if not (len(canon) == 1 and canon[0] == char_int):
-                canon_fully_decomp[char_int] = canon
-
-            compat = list(_decompose(char_int, True))
-            if not (len(compat) == 1 and compat[0] == char_int):
-                compat_fully_decomp[char_int] = compat
-
-        # Since canon_fully_decomp is a subset of compat_fully_decomp, we don't
-        # need to store their overlap when they agree.  When they don't agree,
-        # store the decomposition in the compatibility table since we'll check
-        # that first when normalizing to NFKD.
-        assert set(canon_fully_decomp) <= set(compat_fully_decomp)
-
-        for ch in set(canon_fully_decomp) & set(compat_fully_decomp):
-            if canon_fully_decomp[ch] == compat_fully_decomp[ch]:
-                del compat_fully_decomp[ch]
-
-        return canon_fully_decomp, compat_fully_decomp
-
-    def _compute_stream_safe_tables(self):
-        """
-        To make a text stream-safe with the Stream-Safe Text Process (UAX15-D4),
-        we need to be able to know the number of contiguous non-starters *after*
-        applying compatibility decomposition to each character.
-
-        We can do this incrementally by computing the number of leading and
-        trailing non-starters for each character's compatibility decomposition
-        with the following rules:
-
-        1) If a character is not affected by compatibility decomposition, look
-           up its canonical combining class to find out if it's a non-starter.
-        2) All Hangul characters are starters, even under decomposition.
-        3) Otherwise, very few decomposing characters have a nonzero count
-           of leading or trailing non-starters, so store these characters
-           with their associated counts in a separate table.
-        """
-        leading_nonstarters = {}
-        trailing_nonstarters = {}
-
-        for c in set(self.canon_fully_decomp) | set(self.compat_fully_decomp):
-            decomposed = self.compat_fully_decomp.get(c) or self.canon_fully_decomp[c]
-
-            num_leading = 0
-            for d in decomposed:
-                if d not in self.combining_classes:
-                    break
-                num_leading += 1
-
-            num_trailing = 0
-            for d in reversed(decomposed):
-                if d not in self.combining_classes:
-                    break
-                num_trailing += 1
-
-            if num_leading > 0:
-                leading_nonstarters[c] = num_leading
-            if num_trailing > 0:
-                trailing_nonstarters[c] = num_trailing
-
-        return leading_nonstarters, trailing_nonstarters
-
-hexify = lambda c: '{:04X}'.format(c)
-
-# Test whether `first` and `last` are corresponding "<..., First>" and
-# "<..., Last>" markers.
-def is_first_and_last(first, last):
-    if not first.startswith('<') or not first.endswith(', First>'):
-        return False
-    if not last.startswith('<') or not last.endswith(', Last>'):
-        return False
-    return first[1:-8] == last[1:-7]
-
-def gen_mph_data(name, d, kv_type, kv_callback):
-    (salt, keys) = minimal_perfect_hash(d)
-    out.write("pub(crate) const %s_SALT: &[u16] = &[\n" % name.upper())
-    for s in salt:
-        out.write("    0x{:x},\n".format(s))
-    out.write("];\n")
-    out.write("pub(crate) const {}_KV: &[{}] = &[\n".format(name.upper(), kv_type))
-    for k in keys:
-        out.write("    {},\n".format(kv_callback(k)))
-    out.write("];\n\n")
-
-def gen_combining_class(combining_classes, out):
-    gen_mph_data('canonical_combining_class', combining_classes, 'u32',
-        lambda k: "0x{:X}".format(int(combining_classes[k]) | (k << 8)))
-
-def gen_composition_table(canon_comp, out):
-    table = {}
-    for (c1, c2), c3 in canon_comp.items():
-        if c1 < 0x10000 and c2 < 0x10000:
-            table[(c1 << 16) | c2] = c3
-    (salt, keys) = minimal_perfect_hash(table)
-    gen_mph_data('COMPOSITION_TABLE', table, '(u32, char)',
-        lambda k: "(0x%s, '\\u{%s}')" % (hexify(k), hexify(table[k])))
-
-    out.write("pub(crate) fn composition_table_astral(c1: char, c2: char) -> Option<char> {\n")
-    out.write("    match (c1, c2) {\n")
-    for (c1, c2), c3 in sorted(canon_comp.items()):
-        if c1 >= 0x10000 and c2 >= 0x10000:
-            out.write("        ('\\u{%s}', '\\u{%s}') => Some('\\u{%s}'),\n" % (hexify(c1), hexify(c2), hexify(c3)))
-
-    out.write("        _ => None,\n")
-    out.write("    }\n")
-    out.write("}\n")
-
-def gen_decomposition_tables(canon_decomp, compat_decomp, cjk_compat_variants_decomp, out):
-    tables = [(canon_decomp, 'canonical'), (compat_decomp, 'compatibility'), (cjk_compat_variants_decomp, 'cjk_compat_variants')]
-    for table, name in tables:
-        offsets = {}
-        offset = 0
-        out.write("pub(crate) const %s_DECOMPOSED_CHARS: &[char] = &[\n" % name.upper())
-        for k, v in table.items():
-            offsets[k] = offset
-            offset += len(v)
-            for c in v:
-                out.write("    '\\u{%s}',\n" % hexify(c))
-        # The largest offset must fit in a u16.
-        assert offset < 65536
-        out.write("];\n")
-        gen_mph_data(name + '_decomposed', table, "(u32, (u16, u16))",
-            lambda k: "(0x{:x}, ({}, {}))".format(k, offsets[k], len(table[k])))
-
-def gen_qc_match(prop_table, out):
-    out.write("    match c {\n")
-
-    for low, high, data in prop_table:
-        assert data in ('N', 'M')
-        result = "No" if data == 'N' else "Maybe"
-        if high:
-            out.write(r"        '\u{%s}'...'\u{%s}' => %s," % (low, high, result))
-        else:
-            out.write(r"        '\u{%s}' => %s," % (low, result))
-        out.write("\n")
-
-    out.write("        _ => Yes,\n")
-    out.write("    }\n")
-
-def gen_nfc_qc(prop_tables, out):
-    out.write("#[inline]\n")
-    out.write("#[allow(ellipsis_inclusive_range_patterns)]\n")
-    out.write("pub fn qc_nfc(c: char) -> IsNormalized {\n")
-    gen_qc_match(prop_tables['NFC_QC'], out)
-    out.write("}\n")
-
-def gen_nfkc_qc(prop_tables, out):
-    out.write("#[inline]\n")
-    out.write("#[allow(ellipsis_inclusive_range_patterns)]\n")
-    out.write("pub fn qc_nfkc(c: char) -> IsNormalized {\n")
-    gen_qc_match(prop_tables['NFKC_QC'], out)
-    out.write("}\n")
-
-def gen_nfd_qc(prop_tables, out):
-    out.write("#[inline]\n")
-    out.write("#[allow(ellipsis_inclusive_range_patterns)]\n")
-    out.write("pub fn qc_nfd(c: char) -> IsNormalized {\n")
-    gen_qc_match(prop_tables['NFD_QC'], out)
-    out.write("}\n")
-
-def gen_nfkd_qc(prop_tables, out):
-    out.write("#[inline]\n")
-    out.write("#[allow(ellipsis_inclusive_range_patterns)]\n")
-    out.write("pub fn qc_nfkd(c: char) -> IsNormalized {\n")
-    gen_qc_match(prop_tables['NFKD_QC'], out)
-    out.write("}\n")
-
-def gen_combining_mark(general_category_mark, out):
-    gen_mph_data('combining_mark', general_category_mark, 'u32',
-        lambda k: '0x{:04x}'.format(k))
-
-def gen_public_assigned(general_category_public_assigned, out):
-    # This could be done as a hash but the table is somewhat small.
-    out.write("#[inline]\n")
-    out.write("pub fn is_public_assigned(c: char) -> bool {\n")
-    out.write("    match c {\n")
-
-    start = True
-    for first, last in general_category_public_assigned:
-        if start:
-            out.write("        ")
-            start = False
-        else:
-            out.write("        | ")
-        if first == last:
-            out.write("'\\u{%s}'\n" % hexify(first))
-        else:
-            out.write("'\\u{%s}'..='\\u{%s}'\n" % (hexify(first), hexify(last)))
-    out.write("        => true,\n")
-
-    out.write("        _ => false,\n")
-    out.write("    }\n")
-    out.write("}\n")
-    out.write("\n")
-
-def gen_stream_safe(leading, trailing, out):
-    # This could be done as a hash but the table is very small.
-    out.write("#[inline]\n")
-    out.write("pub fn stream_safe_leading_nonstarters(c: char) -> usize {\n")
-    out.write("    match c {\n")
-
-    for char, num_leading in sorted(leading.items()):
-        out.write("        '\\u{%s}' => %d,\n" % (hexify(char), num_leading))
-
-    out.write("        _ => 0,\n")
-    out.write("    }\n")
-    out.write("}\n")
-    out.write("\n")
-
-    gen_mph_data('trailing_nonstarters', trailing, 'u32',
-        lambda k: "0x{:X}".format(int(trailing[k]) | (k << 8)))
-
-def gen_tests(tests, out):
-    out.write("""#[derive(Debug)]
-pub struct NormalizationTest {
-    pub source: &'static str,
-    pub nfc: &'static str,
-    pub nfd: &'static str,
-    pub nfkc: &'static str,
-    pub nfkd: &'static str,
-}
-
-""")
-
-    out.write("pub const NORMALIZATION_TESTS: &[NormalizationTest] = &[\n")
-    str_literal = lambda s: '"%s"' % "".join("\\u{%s}" % c for c in s)
-
-    for test in tests:
-        out.write("    NormalizationTest {\n")
-        out.write("        source: %s,\n" % str_literal(test.source))
-        out.write("        nfc: %s,\n" % str_literal(test.nfc))
-        out.write("        nfd: %s,\n" % str_literal(test.nfd))
-        out.write("        nfkc: %s,\n" % str_literal(test.nfkc))
-        out.write("        nfkd: %s,\n" % str_literal(test.nfkd))
-        out.write("    },\n")
-
-    out.write("];\n")
-
-# Guaranteed to be less than n.
-def my_hash(x, salt, n):
-    # This is hash based on the theory that multiplication is efficient
-    mask_32 = 0xffffffff
-    y = ((x + salt) * 2654435769) & mask_32
-    y ^= (x * 0x31415926) & mask_32
-    return (y * n) >> 32
-
-# Compute minimal perfect hash function, d can be either a dict or list of keys.
-def minimal_perfect_hash(d):
-    n = len(d)
-    buckets = dict((h, []) for h in range(n))
-    for key in d:
-        h = my_hash(key, 0, n)
-        buckets[h].append(key)
-    bsorted = [(len(buckets[h]), h) for h in range(n)]
-    bsorted.sort(reverse = True)
-    claimed = [False] * n
-    salts = [0] * n
-    keys = [0] * n
-    for (bucket_size, h) in bsorted:
-        # Note: the traditional perfect hashing approach would also special-case
-        # bucket_size == 1 here and assign any empty slot, rather than iterating
-        # until rehash finds an empty slot. But we're not doing that so we can
-        # avoid the branch.
-        if bucket_size == 0:
-            break
-        else:
-            for salt in range(1, 32768):
-                rehashes = [my_hash(key, salt, n) for key in buckets[h]]
-                # Make sure there are no rehash collisions within this bucket.
-                if all(not claimed[hash] for hash in rehashes):
-                    if len(set(rehashes)) < bucket_size:
-                        continue
-                    salts[h] = salt
-                    for key in buckets[h]:
-                        rehash = my_hash(key, salt, n)
-                        claimed[rehash] = True
-                        keys[rehash] = key
-                    break
-            if salts[h] == 0:
-                print("minimal perfect hashing failed")
-                # Note: if this happens (because of unfortunate data), then there are
-                # a few things that could be done. First, the hash function could be
-                # tweaked. Second, the bucket order could be scrambled (especially the
-                # singletons). Right now, the buckets are sorted, which has the advantage
-                # of being deterministic.
-                #
-                # As a more extreme approach, the singleton bucket optimization could be
-                # applied (give the direct address for singleton buckets, rather than
-                # relying on a rehash). That is definitely the more standard approach in
-                # the minimal perfect hashing literature, but in testing the branch was a
-                # significant slowdown.
-                exit(1)
-    return (salts, keys)
-
-if __name__ == '__main__':
-    data = UnicodeData()
-    with open("tables.rs", "w", newline = "\n") as out:
-        out.write(PREAMBLE)
-        out.write("use crate::quick_check::IsNormalized;\n")
-        out.write("use crate::quick_check::IsNormalized::*;\n")
-        out.write("\n")
-
-        version = "(%s, %s, %s)" % tuple(UNICODE_VERSION.split("."))
-        out.write("#[allow(unused)]\n")
-        out.write("pub const UNICODE_VERSION: (u8, u8, u8) = %s;\n\n" % version)
-
-        gen_combining_class(data.combining_classes, out)
-        out.write("\n")
-
-        gen_composition_table(data.canon_comp, out)
-        out.write("\n")
-
-        gen_decomposition_tables(data.canon_fully_decomp, data.compat_fully_decomp, data.cjk_compat_variants_fully_decomp, out)
-
-        gen_combining_mark(data.general_category_mark, out)
-        out.write("\n")
-
-        gen_public_assigned(data.general_category_public_assigned, out)
-        out.write("\n")
-
-        gen_nfc_qc(data.norm_props, out)
-        out.write("\n")
-
-        gen_nfkc_qc(data.norm_props, out)
-        out.write("\n")
-
-        gen_nfd_qc(data.norm_props, out)
-        out.write("\n")
-
-        gen_nfkd_qc(data.norm_props, out)
-        out.write("\n")
-
-        gen_stream_safe(data.ss_leading, data.ss_trailing, out)
-        out.write("\n")
-
-    with open("normalization_tests.rs", "w", newline = "\n") as out:
-        out.write(PREAMBLE)
-        gen_tests(data.norm_tests, out)
diff --git a/vendor/unicode-normalization/src/__test_api.rs b/vendor/unicode-normalization/src/__test_api.rs
deleted file mode 100644
index f1a3f926..00000000
--- a/vendor/unicode-normalization/src/__test_api.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// This crate comprises hacks and glue required to test private functions from tests/
-//
-// Keep this as slim as possible.
-//
-// If you're caught using this outside this crates tests/, you get to clean up the mess.
-
-#[cfg(not(feature = "std"))]
-use crate::no_std_prelude::*;
-
-use crate::stream_safe::StreamSafe;
-
-pub fn stream_safe(s: &str) -> String {
-    StreamSafe::new(s.chars()).collect()
-}
-
-pub mod quick_check {
-    pub use crate::quick_check::*;
-}
diff --git a/vendor/unicode-normalization/src/decompose.rs b/vendor/unicode-normalization/src/decompose.rs
deleted file mode 100644
index 23cdb1a4..00000000
--- a/vendor/unicode-normalization/src/decompose.rs
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-use core::fmt::{self, Write};
-use core::iter::Fuse;
-use core::ops::Range;
-use tinyvec::TinyVec;
-
-#[derive(Clone)]
-enum DecompositionType {
-    Canonical,
-    Compatible,
-}
-
-/// External iterator for a string decomposition's characters.
-#[derive(Clone)]
-pub struct Decompositions<I> {
-    kind: DecompositionType,
-    iter: Fuse<I>,
-
-    // This buffer stores pairs of (canonical combining class, character),
-    // pushed onto the end in text order.
-    //
-    // It's divided into up to three sections:
-    // 1) A prefix that is free space;
-    // 2) "Ready" characters which are sorted and ready to emit on demand;
-    // 3) A "pending" block which stills needs more characters for us to be able
-    //    to sort in canonical order and is not safe to emit.
-    buffer: TinyVec<[(u8, char); 4]>,
-    ready: Range<usize>,
-}
-
-#[inline]
-pub fn new_canonical<I: Iterator<Item = char>>(iter: I) -> Decompositions<I> {
-    Decompositions {
-        kind: self::DecompositionType::Canonical,
-        iter: iter.fuse(),
-        buffer: TinyVec::new(),
-        ready: 0..0,
-    }
-}
-
-#[inline]
-pub fn new_compatible<I: Iterator<Item = char>>(iter: I) -> Decompositions<I> {
-    Decompositions {
-        kind: self::DecompositionType::Compatible,
-        iter: iter.fuse(),
-        buffer: TinyVec::new(),
-        ready: 0..0,
-    }
-}
-
-impl<I> Decompositions<I> {
-    #[inline]
-    fn push_back(&mut self, ch: char) {
-        let class = super::char::canonical_combining_class(ch);
-
-        if class == 0 {
-            self.sort_pending();
-            self.buffer.push((class, ch));
-            self.ready.end = self.buffer.len();
-        } else {
-            self.buffer.push((class, ch));
-        }
-    }
-
-    #[inline]
-    fn sort_pending(&mut self) {
-        // NB: `sort_by_key` is stable, so it will preserve the original text's
-        // order within a combining class.
-        self.buffer[self.ready.end..].sort_by_key(|k| k.0);
-    }
-
-    #[inline]
-    fn reset_buffer(&mut self) {
-        // Equivalent to `self.buffer.drain(0..self.ready.end)`
-        // but faster than drain() if the buffer is a SmallVec or TinyVec
-        let pending = self.buffer.len() - self.ready.end;
-        for i in 0..pending {
-            self.buffer[i] = self.buffer[i + self.ready.end];
-        }
-        self.buffer.truncate(pending);
-        self.ready = 0..0;
-    }
-
-    #[inline]
-    fn increment_next_ready(&mut self) {
-        let next = self.ready.start + 1;
-        if next == self.ready.end {
-            self.reset_buffer();
-        } else {
-            self.ready.start = next;
-        }
-    }
-}
-
-impl<I: Iterator<Item = char>> Iterator for Decompositions<I> {
-    type Item = char;
-
-    #[inline]
-    fn next(&mut self) -> Option<char> {
-        while self.ready.end == 0 {
-            match (self.iter.next(), &self.kind) {
-                (Some(ch), &DecompositionType::Canonical) => {
-                    super::char::decompose_canonical(ch, |d| self.push_back(d));
-                }
-                (Some(ch), &DecompositionType::Compatible) => {
-                    super::char::decompose_compatible(ch, |d| self.push_back(d));
-                }
-                (None, _) => {
-                    if self.buffer.is_empty() {
-                        return None;
-                    } else {
-                        self.sort_pending();
-                        self.ready.end = self.buffer.len();
-
-                        // This implementation means that we can call `next`
-                        // on an exhausted iterator; the last outer `next` call
-                        // will result in an inner `next` call. To make this
-                        // safe, we use `fuse`.
-                        break;
-                    }
-                }
-            }
-        }
-
-        // We can assume here that, if `self.ready.end` is greater than zero,
-        // it's also greater than `self.ready.start`. That's because we only
-        // increment `self.ready.start` inside `increment_next_ready`, and
-        // whenever it reaches equality with `self.ready.end`, we reset both
-        // to zero, maintaining the invariant that:
-        //      self.ready.start < self.ready.end || self.ready.end == self.ready.start == 0
-        //
-        // This less-than-obviously-safe implementation is chosen for performance,
-        // minimizing the number & complexity of branches in `next` in the common
-        // case of buffering then unbuffering a single character with each call.
-        let (_, ch) = self.buffer[self.ready.start];
-        self.increment_next_ready();
-        Some(ch)
-    }
-
-    fn size_hint(&self) -> (usize, Option<usize>) {
-        let (lower, _) = self.iter.size_hint();
-        (lower, None)
-    }
-}
-
-impl<I: Iterator<Item = char> + Clone> fmt::Display for Decompositions<I> {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        for c in self.clone() {
-            f.write_char(c)?;
-        }
-        Ok(())
-    }
-}
diff --git a/vendor/unicode-normalization/src/lib.rs b/vendor/unicode-normalization/src/lib.rs
deleted file mode 100644
index 21c3bf1f..00000000
--- a/vendor/unicode-normalization/src/lib.rs
+++ /dev/null
@@ -1,235 +0,0 @@
-// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! Unicode character composition and decomposition utilities
-//! as described in
-//! [Unicode Standard Annex #15](http://www.unicode.org/reports/tr15/).
-//!
-//! ```rust
-//! extern crate unicode_normalization;
-//!
-//! use unicode_normalization::char::compose;
-//! use unicode_normalization::UnicodeNormalization;
-//!
-//! fn main() {
-//!     assert_eq!(compose('A','\u{30a}'), Some('Å'));
-//!
-//!     let s = "ÅΩ";
-//!     let c = s.nfc().collect::<String>();
-//!     assert_eq!(c, "ÅΩ");
-//! }
-//! ```
-//!
-//! # crates.io
-//!
-//! You can use this package in your project by adding the following
-//! to your `Cargo.toml`:
-//!
-//! ```toml
-//! [dependencies]
-//! unicode-normalization = "0.1.20"
-//! ```
-
-#![deny(missing_docs, unsafe_code)]
-#![doc(
-    html_logo_url = "https://unicode-rs.github.io/unicode-rs_sm.png",
-    html_favicon_url = "https://unicode-rs.github.io/unicode-rs_sm.png"
-)]
-#![cfg_attr(not(feature = "std"), no_std)]
-
-#[cfg(not(feature = "std"))]
-extern crate alloc;
-
-#[cfg(feature = "std")]
-extern crate core;
-
-extern crate tinyvec;
-
-pub use crate::decompose::Decompositions;
-pub use crate::quick_check::{
-    is_nfc, is_nfc_quick, is_nfc_stream_safe, is_nfc_stream_safe_quick, is_nfd, is_nfd_quick,
-    is_nfd_stream_safe, is_nfd_stream_safe_quick, is_nfkc, is_nfkc_quick, is_nfkd, is_nfkd_quick,
-    IsNormalized,
-};
-pub use crate::recompose::Recompositions;
-pub use crate::replace::Replacements;
-pub use crate::stream_safe::StreamSafe;
-pub use crate::tables::UNICODE_VERSION;
-use core::{
-    str::Chars,
-    option,
-};
-
-mod no_std_prelude;
-
-mod decompose;
-mod lookups;
-mod normalize;
-mod perfect_hash;
-mod quick_check;
-mod recompose;
-mod replace;
-mod stream_safe;
-
-#[rustfmt::skip]
-mod tables;
-
-#[doc(hidden)]
-pub mod __test_api;
-#[cfg(test)]
-mod test;
-
-/// Methods for composing and decomposing characters.
-pub mod char {
-    pub use crate::normalize::{
-        compose, decompose_canonical, decompose_cjk_compat_variants, decompose_compatible,
-    };
-
-    pub use crate::lookups::{canonical_combining_class, is_combining_mark};
-
-    /// Return whether the given character is assigned (`General_Category` != `Unassigned`)
-    /// and not Private-Use (`General_Category` != `Private_Use`), in the supported version
-    /// of Unicode.
-    pub use crate::tables::is_public_assigned;
-}
-
-/// Methods for iterating over strings while applying Unicode normalizations
-/// as described in
-/// [Unicode Standard Annex #15](http://www.unicode.org/reports/tr15/).
-pub trait UnicodeNormalization<I: Iterator<Item = char>> {
-    /// Returns an iterator over the string in Unicode Normalization Form D
-    /// (canonical decomposition).
-    fn nfd(self) -> Decompositions<I>;
-
-    /// Returns an iterator over the string in Unicode Normalization Form KD
-    /// (compatibility decomposition).
-    fn nfkd(self) -> Decompositions<I>;
-
-    /// An Iterator over the string in Unicode Normalization Form C
-    /// (canonical decomposition followed by canonical composition).
-    fn nfc(self) -> Recompositions<I>;
-
-    /// An Iterator over the string in Unicode Normalization Form KC
-    /// (compatibility decomposition followed by canonical composition).
-    fn nfkc(self) -> Recompositions<I>;
-
-    /// A transformation which replaces CJK Compatibility Ideograph codepoints
-    /// with normal forms using Standardized Variation Sequences. This is not
-    /// part of the canonical or compatibility decomposition algorithms, but
-    /// performing it before those algorithms produces normalized output which
-    /// better preserves the intent of the original text.
-    ///
-    /// Note that many systems today ignore variation selectors, so these
-    /// may not immediately help text display as intended, but they at
-    /// least preserve the information in a standardized form, giving
-    /// implementations the option to recognize them.
-    fn cjk_compat_variants(self) -> Replacements<I>;
-
-    /// An Iterator over the string with Conjoining Grapheme Joiner characters
-    /// inserted according to the Stream-Safe Text Process (UAX15-D4)
-    fn stream_safe(self) -> StreamSafe<I>;
-}
-
-impl<'a> UnicodeNormalization<Chars<'a>> for &'a str {
-    #[inline]
-    fn nfd(self) -> Decompositions<Chars<'a>> {
-        decompose::new_canonical(self.chars())
-    }
-
-    #[inline]
-    fn nfkd(self) -> Decompositions<Chars<'a>> {
-        decompose::new_compatible(self.chars())
-    }
-
-    #[inline]
-    fn nfc(self) -> Recompositions<Chars<'a>> {
-        recompose::new_canonical(self.chars())
-    }
-
-    #[inline]
-    fn nfkc(self) -> Recompositions<Chars<'a>> {
-        recompose::new_compatible(self.chars())
-    }
-
-    #[inline]
-    fn cjk_compat_variants(self) -> Replacements<Chars<'a>> {
-        replace::new_cjk_compat_variants(self.chars())
-    }
-
-    #[inline]
-    fn stream_safe(self) -> StreamSafe<Chars<'a>> {
-        StreamSafe::new(self.chars())
-    }
-}
-
-
-impl UnicodeNormalization<option::IntoIter<char>> for char {
-    #[inline]
-    fn nfd(self) -> Decompositions<option::IntoIter<char>> {
-        decompose::new_canonical(Some(self).into_iter())
-    }
-
-    #[inline]
-    fn nfkd(self) -> Decompositions<option::IntoIter<char>> {
-        decompose::new_compatible(Some(self).into_iter())
-    }
-
-    #[inline]
-    fn nfc(self) -> Recompositions<option::IntoIter<char>> {
-        recompose::new_canonical(Some(self).into_iter())
-    }
-
-    #[inline]
-    fn nfkc(self) -> Recompositions<option::IntoIter<char>> {
-        recompose::new_compatible(Some(self).into_iter())
-    }
-
-    #[inline]
-    fn cjk_compat_variants(self) -> Replacements<option::IntoIter<char>> {
-        replace::new_cjk_compat_variants(Some(self).into_iter())
-    }
-
-    #[inline]
-    fn stream_safe(self) -> StreamSafe<option::IntoIter<char>> {
-        StreamSafe::new(Some(self).into_iter())
-    }
-}
-
-impl<I: Iterator<Item = char>> UnicodeNormalization<I> for I {
-    #[inline]
-    fn nfd(self) -> Decompositions<I> {
-        decompose::new_canonical(self)
-    }
-
-    #[inline]
-    fn nfkd(self) -> Decompositions<I> {
-        decompose::new_compatible(self)
-    }
-
-    #[inline]
-    fn nfc(self) -> Recompositions<I> {
-        recompose::new_canonical(self)
-    }
-
-    #[inline]
-    fn nfkc(self) -> Recompositions<I> {
-        recompose::new_compatible(self)
-    }
-
-    #[inline]
-    fn cjk_compat_variants(self) -> Replacements<I> {
-        replace::new_cjk_compat_variants(self)
-    }
-
-    #[inline]
-    fn stream_safe(self) -> StreamSafe<I> {
-        StreamSafe::new(self)
-    }
-}
diff --git a/vendor/unicode-normalization/src/lookups.rs b/vendor/unicode-normalization/src/lookups.rs
deleted file mode 100644
index ea7a96c4..00000000
--- a/vendor/unicode-normalization/src/lookups.rs
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright 2019 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! Lookups of unicode properties using minimal perfect hashing.
-
-use crate::perfect_hash::mph_lookup;
-use crate::tables::*;
-
-/// Look up the canonical combining class for a codepoint.
-///
-/// The value returned is as defined in the Unicode Character Database.
-pub fn canonical_combining_class(c: char) -> u8 {
-    mph_lookup(
-        c.into(),
-        CANONICAL_COMBINING_CLASS_SALT,
-        CANONICAL_COMBINING_CLASS_KV,
-        u8_lookup_fk,
-        u8_lookup_fv,
-        0,
-    )
-}
-
-pub(crate) fn composition_table(c1: char, c2: char) -> Option<char> {
-    if c1 < '\u{10000}' && c2 < '\u{10000}' {
-        mph_lookup(
-            (c1 as u32) << 16 | (c2 as u32),
-            COMPOSITION_TABLE_SALT,
-            COMPOSITION_TABLE_KV,
-            pair_lookup_fk,
-            pair_lookup_fv_opt,
-            None,
-        )
-    } else {
-        composition_table_astral(c1, c2)
-    }
-}
-
-pub(crate) fn canonical_fully_decomposed(c: char) -> Option<&'static [char]> {
-    mph_lookup(
-        c.into(),
-        CANONICAL_DECOMPOSED_SALT,
-        CANONICAL_DECOMPOSED_KV,
-        pair_lookup_fk,
-        pair_lookup_fv_opt,
-        None,
-    )
-    .map(|(start, len)| &CANONICAL_DECOMPOSED_CHARS[start as usize..][..len as usize])
-}
-
-pub(crate) fn compatibility_fully_decomposed(c: char) -> Option<&'static [char]> {
-    mph_lookup(
-        c.into(),
-        COMPATIBILITY_DECOMPOSED_SALT,
-        COMPATIBILITY_DECOMPOSED_KV,
-        pair_lookup_fk,
-        pair_lookup_fv_opt,
-        None,
-    )
-    .map(|(start, len)| &COMPATIBILITY_DECOMPOSED_CHARS[start as usize..][..len as usize])
-}
-
-pub(crate) fn cjk_compat_variants_fully_decomposed(c: char) -> Option<&'static [char]> {
-    mph_lookup(
-        c.into(),
-        CJK_COMPAT_VARIANTS_DECOMPOSED_SALT,
-        CJK_COMPAT_VARIANTS_DECOMPOSED_KV,
-        pair_lookup_fk,
-        pair_lookup_fv_opt,
-        None,
-    )
-    .map(|(start, len)| &CJK_COMPAT_VARIANTS_DECOMPOSED_CHARS[start as usize..][..len as usize])
-}
-
-/// Return whether the given character is a combining mark (`General_Category=Mark`)
-pub fn is_combining_mark(c: char) -> bool {
-    mph_lookup(
-        c.into(),
-        COMBINING_MARK_SALT,
-        COMBINING_MARK_KV,
-        bool_lookup_fk,
-        bool_lookup_fv,
-        false,
-    )
-}
-
-pub fn stream_safe_trailing_nonstarters(c: char) -> usize {
-    mph_lookup(
-        c.into(),
-        TRAILING_NONSTARTERS_SALT,
-        TRAILING_NONSTARTERS_KV,
-        u8_lookup_fk,
-        u8_lookup_fv,
-        0,
-    ) as usize
-}
-
-/// Extract the key in a 24 bit key and 8 bit value packed in a u32.
-#[inline]
-fn u8_lookup_fk(kv: u32) -> u32 {
-    kv >> 8
-}
-
-/// Extract the value in a 24 bit key and 8 bit value packed in a u32.
-#[inline]
-fn u8_lookup_fv(kv: u32) -> u8 {
-    (kv & 0xff) as u8
-}
-
-/// Extract the key for a boolean lookup.
-#[inline]
-fn bool_lookup_fk(kv: u32) -> u32 {
-    kv
-}
-
-/// Extract the value for a boolean lookup.
-#[inline]
-fn bool_lookup_fv(_kv: u32) -> bool {
-    true
-}
-
-/// Extract the key in a pair.
-#[inline]
-fn pair_lookup_fk<T>(kv: (u32, T)) -> u32 {
-    kv.0
-}
-
-/// Extract the value in a pair, returning an option.
-#[inline]
-fn pair_lookup_fv_opt<T>(kv: (u32, T)) -> Option<T> {
-    Some(kv.1)
-}
diff --git a/vendor/unicode-normalization/src/no_std_prelude.rs b/vendor/unicode-normalization/src/no_std_prelude.rs
deleted file mode 100755
index 838d122f..00000000
--- a/vendor/unicode-normalization/src/no_std_prelude.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-#[cfg(not(feature = "std"))]
-pub use alloc::{
-    str::Chars,
-    string::{String, ToString},
-    vec::Vec,
-};
diff --git a/vendor/unicode-normalization/src/normalize.rs b/vendor/unicode-normalization/src/normalize.rs
deleted file mode 100644
index b144bd7c..00000000
--- a/vendor/unicode-normalization/src/normalize.rs
+++ /dev/null
@@ -1,201 +0,0 @@
-// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! Functions for computing canonical and compatible decompositions for Unicode characters.
-use crate::lookups::{
-    canonical_fully_decomposed, cjk_compat_variants_fully_decomposed,
-    compatibility_fully_decomposed, composition_table,
-};
-
-use core::{char, ops::FnMut};
-
-/// Compute canonical Unicode decomposition for character.
-/// See [Unicode Standard Annex #15](http://www.unicode.org/reports/tr15/)
-/// for more information.
-#[inline]
-pub fn decompose_canonical<F>(c: char, emit_char: F)
-where
-    F: FnMut(char),
-{
-    decompose(c, canonical_fully_decomposed, emit_char)
-}
-
-/// Compute canonical or compatible Unicode decomposition for character.
-/// See [Unicode Standard Annex #15](http://www.unicode.org/reports/tr15/)
-/// for more information.
-#[inline]
-pub fn decompose_compatible<F: FnMut(char)>(c: char, emit_char: F) {
-    let decompose_char =
-        |c| compatibility_fully_decomposed(c).or_else(|| canonical_fully_decomposed(c));
-    decompose(c, decompose_char, emit_char)
-}
-
-/// Compute standard-variation decomposition for character.
-///
-/// [Standardized Variation Sequences] are used instead of the standard canonical
-/// decompositions, notably for CJK codepoints with singleton canonical decompositions,
-/// to avoid losing information. See the
-/// [Unicode Variation Sequence FAQ](http://unicode.org/faq/vs.html) and the
-/// "Other Enhancements" section of the
-/// [Unicode 6.3 Release Summary](https://www.unicode.org/versions/Unicode6.3.0/#Summary)
-/// for more information.
-#[inline]
-pub fn decompose_cjk_compat_variants<F>(c: char, mut emit_char: F)
-where
-    F: FnMut(char),
-{
-    // 7-bit ASCII never decomposes
-    if c <= '\x7f' {
-        emit_char(c);
-        return;
-    }
-
-    // Don't perform decomposition for Hangul
-
-    if let Some(decomposed) = cjk_compat_variants_fully_decomposed(c) {
-        for &d in decomposed {
-            emit_char(d);
-        }
-        return;
-    }
-
-    // Finally bottom out.
-    emit_char(c);
-}
-
-#[inline]
-fn decompose<D, F>(c: char, decompose_char: D, mut emit_char: F)
-where
-    D: Fn(char) -> Option<&'static [char]>,
-    F: FnMut(char),
-{
-    // 7-bit ASCII never decomposes
-    if c <= '\x7f' {
-        emit_char(c);
-        return;
-    }
-
-    // Perform decomposition for Hangul
-    if is_hangul_syllable(c) {
-        decompose_hangul(c, emit_char);
-        return;
-    }
-
-    if let Some(decomposed) = decompose_char(c) {
-        for &d in decomposed {
-            emit_char(d);
-        }
-        return;
-    }
-
-    // Finally bottom out.
-    emit_char(c);
-}
-
-/// Compose two characters into a single character, if possible.
-/// See [Unicode Standard Annex #15](http://www.unicode.org/reports/tr15/)
-/// for more information.
-pub fn compose(a: char, b: char) -> Option<char> {
-    compose_hangul(a, b).or_else(|| composition_table(a, b))
-}
-
-// Constants from Unicode 9.0.0 Section 3.12 Conjoining Jamo Behavior
-// http://www.unicode.org/versions/Unicode9.0.0/ch03.pdf#M9.32468.Heading.310.Combining.Jamo.Behavior
-const S_BASE: u32 = 0xAC00;
-const L_BASE: u32 = 0x1100;
-const V_BASE: u32 = 0x1161;
-const T_BASE: u32 = 0x11A7;
-const L_COUNT: u32 = 19;
-const V_COUNT: u32 = 21;
-const T_COUNT: u32 = 28;
-const N_COUNT: u32 = V_COUNT * T_COUNT;
-const S_COUNT: u32 = L_COUNT * N_COUNT;
-
-const S_LAST: u32 = S_BASE + S_COUNT - 1;
-const L_LAST: u32 = L_BASE + L_COUNT - 1;
-const V_LAST: u32 = V_BASE + V_COUNT - 1;
-const T_LAST: u32 = T_BASE + T_COUNT - 1;
-
-// Composition only occurs for `TPart`s in `U+11A8 ... U+11C2`,
-// i.e. `T_BASE + 1 ... T_LAST`.
-const T_FIRST: u32 = T_BASE + 1;
-
-pub(crate) fn is_hangul_syllable(c: char) -> bool {
-    (c as u32) >= S_BASE && (c as u32) < (S_BASE + S_COUNT)
-}
-
-// Decompose a precomposed Hangul syllable
-#[allow(unsafe_code)]
-#[inline(always)]
-fn decompose_hangul<F>(s: char, mut emit_char: F)
-where
-    F: FnMut(char),
-{
-    let s_index = s as u32 - S_BASE;
-    let l_index = s_index / N_COUNT;
-    unsafe {
-        emit_char(char::from_u32_unchecked(L_BASE + l_index));
-
-        let v_index = (s_index % N_COUNT) / T_COUNT;
-        emit_char(char::from_u32_unchecked(V_BASE + v_index));
-
-        let t_index = s_index % T_COUNT;
-        if t_index > 0 {
-            emit_char(char::from_u32_unchecked(T_BASE + t_index));
-        }
-    }
-}
-
-#[inline]
-pub(crate) fn hangul_decomposition_length(s: char) -> usize {
-    let si = s as u32 - S_BASE;
-    let ti = si % T_COUNT;
-    if ti > 0 {
-        3
-    } else {
-        2
-    }
-}
-
-// Compose a pair of Hangul Jamo
-#[allow(unsafe_code)]
-#[inline(always)]
-#[allow(ellipsis_inclusive_range_patterns)]
-fn compose_hangul(a: char, b: char) -> Option<char> {
-    let (a, b) = (a as u32, b as u32);
-    match (a, b) {
-        // Compose a leading consonant and a vowel together into an LV_Syllable
-        (L_BASE...L_LAST, V_BASE...V_LAST) => {
-            let l_index = a - L_BASE;
-            let v_index = b - V_BASE;
-            let lv_index = l_index * N_COUNT + v_index * T_COUNT;
-            let s = S_BASE + lv_index;
-            Some(unsafe { char::from_u32_unchecked(s) })
-        }
-        // Compose an LV_Syllable and a trailing consonant into an LVT_Syllable
-        (S_BASE...S_LAST, T_FIRST...T_LAST) if (a - S_BASE) % T_COUNT == 0 => {
-            Some(unsafe { char::from_u32_unchecked(a + (b - T_BASE)) })
-        }
-        _ => None,
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::compose_hangul;
-
-    // Regression test from a bugfix where we were composing an LV_Syllable with
-    // T_BASE directly. (We should only compose an LV_Syllable with a character
-    // in the range `T_BASE + 1 ... T_LAST`.)
-    #[test]
-    fn test_hangul_composition() {
-        assert_eq!(compose_hangul('\u{c8e0}', '\u{11a7}'), None);
-    }
-}
diff --git a/vendor/unicode-normalization/src/perfect_hash.rs b/vendor/unicode-normalization/src/perfect_hash.rs
deleted file mode 100644
index 3dbc1663..00000000
--- a/vendor/unicode-normalization/src/perfect_hash.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2019 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! Support for lookups based on minimal perfect hashing.
-
-// This function is based on multiplication being fast and is "good enough". Also
-// it can share some work between the unsalted and salted versions.
-#[inline]
-fn my_hash(key: u32, salt: u32, n: usize) -> usize {
-    let y = key.wrapping_add(salt).wrapping_mul(2654435769);
-    let y = y ^ key.wrapping_mul(0x31415926);
-    (((y as u64) * (n as u64)) >> 32) as usize
-}
-
-/// Do a lookup using minimal perfect hashing.
-///
-/// The table is stored as a sequence of "salt" values, then a sequence of
-/// values that contain packed key/value pairs. The strategy is to hash twice.
-/// The first hash retrieves a salt value that makes the second hash unique.
-/// The hash function doesn't have to be very good, just good enough that the
-/// resulting map is unique.
-#[inline]
-pub(crate) fn mph_lookup<KV, V, FK, FV>(
-    x: u32,
-    salt: &[u16],
-    kv: &[KV],
-    fk: FK,
-    fv: FV,
-    default: V,
-) -> V
-where
-    KV: Copy,
-    FK: Fn(KV) -> u32,
-    FV: Fn(KV) -> V,
-{
-    let s = salt[my_hash(x, 0, salt.len())] as u32;
-    let key_val = kv[my_hash(x, s, salt.len())];
-    if x == fk(key_val) {
-        fv(key_val)
-    } else {
-        default
-    }
-}
diff --git a/vendor/unicode-normalization/src/quick_check.rs b/vendor/unicode-normalization/src/quick_check.rs
deleted file mode 100644
index 4507b2ab..00000000
--- a/vendor/unicode-normalization/src/quick_check.rs
+++ /dev/null
@@ -1,187 +0,0 @@
-use crate::lookups::canonical_combining_class;
-use crate::stream_safe;
-use crate::tables;
-use crate::UnicodeNormalization;
-
-/// The QuickCheck algorithm can quickly determine if a text is or isn't
-/// normalized without any allocations in many cases, but it has to be able to
-/// return `Maybe` when a full decomposition and recomposition is necessary.
-#[derive(Debug, Eq, PartialEq)]
-pub enum IsNormalized {
-    /// The text is definitely normalized.
-    Yes,
-    /// The text is definitely not normalized.
-    No,
-    /// The text may be normalized.
-    Maybe,
-}
-
-// https://unicode.org/reports/tr15/#Detecting_Normalization_Forms
-#[inline]
-fn quick_check<F, I>(s: I, is_allowed: F, stream_safe: bool) -> IsNormalized
-where
-    I: Iterator<Item = char>,
-    F: Fn(char) -> IsNormalized,
-{
-    let mut last_cc = 0u8;
-    let mut nonstarter_count = 0;
-    let mut result = IsNormalized::Yes;
-    for ch in s {
-        // For ASCII we know it's always allowed and a starter
-        if ch <= '\x7f' {
-            last_cc = 0;
-            nonstarter_count = 0;
-            continue;
-        }
-
-        // Otherwise, lookup the combining class and QC property
-        let cc = canonical_combining_class(ch);
-        if last_cc > cc && cc != 0 {
-            return IsNormalized::No;
-        }
-        match is_allowed(ch) {
-            IsNormalized::Yes => (),
-            IsNormalized::No => return IsNormalized::No,
-            IsNormalized::Maybe => {
-                result = IsNormalized::Maybe;
-            }
-        }
-        if stream_safe {
-            let decomp = stream_safe::classify_nonstarters(ch);
-
-            // If we're above `MAX_NONSTARTERS`, we're definitely *not*
-            // stream-safe normalized.
-            if nonstarter_count + decomp.leading_nonstarters > stream_safe::MAX_NONSTARTERS {
-                return IsNormalized::No;
-            }
-            if decomp.leading_nonstarters == decomp.decomposition_len {
-                nonstarter_count += decomp.decomposition_len;
-            } else {
-                nonstarter_count = decomp.trailing_nonstarters;
-            }
-        }
-        last_cc = cc;
-    }
-    result
-}
-
-/// Quickly check if a string is in NFC, potentially returning
-/// `IsNormalized::Maybe` if further checks are necessary.  In this case a check
-/// like `s.chars().nfc().eq(s.chars())` should suffice.
-#[inline]
-pub fn is_nfc_quick<I: Iterator<Item = char>>(s: I) -> IsNormalized {
-    quick_check(s, tables::qc_nfc, false)
-}
-
-/// Quickly check if a string is in NFKC.
-#[inline]
-pub fn is_nfkc_quick<I: Iterator<Item = char>>(s: I) -> IsNormalized {
-    quick_check(s, tables::qc_nfkc, false)
-}
-
-/// Quickly check if a string is in NFD.
-#[inline]
-pub fn is_nfd_quick<I: Iterator<Item = char>>(s: I) -> IsNormalized {
-    quick_check(s, tables::qc_nfd, false)
-}
-
-/// Quickly check if a string is in NFKD.
-#[inline]
-pub fn is_nfkd_quick<I: Iterator<Item = char>>(s: I) -> IsNormalized {
-    quick_check(s, tables::qc_nfkd, false)
-}
-
-/// Quickly check if a string is Stream-Safe NFC.
-#[inline]
-pub fn is_nfc_stream_safe_quick<I: Iterator<Item = char>>(s: I) -> IsNormalized {
-    quick_check(s, tables::qc_nfc, true)
-}
-
-/// Quickly check if a string is Stream-Safe NFD.
-#[inline]
-pub fn is_nfd_stream_safe_quick<I: Iterator<Item = char>>(s: I) -> IsNormalized {
-    quick_check(s, tables::qc_nfd, true)
-}
-
-/// Authoritatively check if a string is in NFC.
-#[inline]
-pub fn is_nfc(s: &str) -> bool {
-    match is_nfc_quick(s.chars()) {
-        IsNormalized::Yes => true,
-        IsNormalized::No => false,
-        IsNormalized::Maybe => s.chars().eq(s.chars().nfc()),
-    }
-}
-
-/// Authoritatively check if a string is in NFKC.
-#[inline]
-pub fn is_nfkc(s: &str) -> bool {
-    match is_nfkc_quick(s.chars()) {
-        IsNormalized::Yes => true,
-        IsNormalized::No => false,
-        IsNormalized::Maybe => s.chars().eq(s.chars().nfkc()),
-    }
-}
-
-/// Authoritatively check if a string is in NFD.
-#[inline]
-pub fn is_nfd(s: &str) -> bool {
-    match is_nfd_quick(s.chars()) {
-        IsNormalized::Yes => true,
-        IsNormalized::No => false,
-        IsNormalized::Maybe => s.chars().eq(s.chars().nfd()),
-    }
-}
-
-/// Authoritatively check if a string is in NFKD.
-#[inline]
-pub fn is_nfkd(s: &str) -> bool {
-    match is_nfkd_quick(s.chars()) {
-        IsNormalized::Yes => true,
-        IsNormalized::No => false,
-        IsNormalized::Maybe => s.chars().eq(s.chars().nfkd()),
-    }
-}
-
-/// Authoritatively check if a string is Stream-Safe NFC.
-#[inline]
-pub fn is_nfc_stream_safe(s: &str) -> bool {
-    match is_nfc_stream_safe_quick(s.chars()) {
-        IsNormalized::Yes => true,
-        IsNormalized::No => false,
-        IsNormalized::Maybe => s.chars().eq(s.chars().stream_safe().nfc()),
-    }
-}
-
-/// Authoritatively check if a string is Stream-Safe NFD.
-#[inline]
-pub fn is_nfd_stream_safe(s: &str) -> bool {
-    match is_nfd_stream_safe_quick(s.chars()) {
-        IsNormalized::Yes => true,
-        IsNormalized::No => false,
-        IsNormalized::Maybe => s.chars().eq(s.chars().stream_safe().nfd()),
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::{is_nfc_stream_safe_quick, is_nfd_stream_safe_quick, IsNormalized};
-
-    #[test]
-    fn test_stream_safe_nfd() {
-        let okay = "Da\u{031b}\u{0316}\u{0317}\u{0318}\u{0319}\u{031c}\u{031d}\u{0300}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{031a}ngerzone";
-        assert_eq!(is_nfd_stream_safe_quick(okay.chars()), IsNormalized::Yes);
-
-        let too_much = "Da\u{031b}\u{0316}\u{0317}\u{0318}\u{0319}\u{031c}\u{031d}\u{031e}\u{0300}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{031a}ngerzone";
-        assert_eq!(is_nfd_stream_safe_quick(too_much.chars()), IsNormalized::No);
-    }
-
-    #[test]
-    fn test_stream_safe_nfc() {
-        let okay = "ok\u{e0}\u{031b}\u{0316}\u{0317}\u{0318}\u{0319}\u{031c}\u{031d}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{031a}y";
-        assert_eq!(is_nfc_stream_safe_quick(okay.chars()), IsNormalized::Maybe);
-
-        let too_much = "not ok\u{e0}\u{031b}\u{0316}\u{0317}\u{0318}\u{0319}\u{031c}\u{031d}\u{031e}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{031a}y";
-        assert_eq!(is_nfc_stream_safe_quick(too_much.chars()), IsNormalized::No);
-    }
-}
diff --git a/vendor/unicode-normalization/src/recompose.rs b/vendor/unicode-normalization/src/recompose.rs
deleted file mode 100644
index 2a1960af..00000000
--- a/vendor/unicode-normalization/src/recompose.rs
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-use crate::decompose::Decompositions;
-use core::fmt::{self, Write};
-use tinyvec::TinyVec;
-
-#[derive(Clone)]
-enum RecompositionState {
-    Composing,
-    Purging(usize),
-    Finished(usize),
-}
-
-/// External iterator for a string recomposition's characters.
-#[derive(Clone)]
-pub struct Recompositions<I> {
-    iter: Decompositions<I>,
-    state: RecompositionState,
-    buffer: TinyVec<[char; 4]>,
-    composee: Option<char>,
-    last_ccc: Option<u8>,
-}
-
-#[inline]
-pub fn new_canonical<I: Iterator<Item = char>>(iter: I) -> Recompositions<I> {
-    Recompositions {
-        iter: super::decompose::new_canonical(iter),
-        state: self::RecompositionState::Composing,
-        buffer: TinyVec::new(),
-        composee: None,
-        last_ccc: None,
-    }
-}
-
-#[inline]
-pub fn new_compatible<I: Iterator<Item = char>>(iter: I) -> Recompositions<I> {
-    Recompositions {
-        iter: super::decompose::new_compatible(iter),
-        state: self::RecompositionState::Composing,
-        buffer: TinyVec::new(),
-        composee: None,
-        last_ccc: None,
-    }
-}
-
-impl<I: Iterator<Item = char>> Iterator for Recompositions<I> {
-    type Item = char;
-
-    #[inline]
-    fn next(&mut self) -> Option<char> {
-        use self::RecompositionState::*;
-
-        loop {
-            match self.state {
-                Composing => {
-                    for ch in self.iter.by_ref() {
-                        let ch_class = super::char::canonical_combining_class(ch);
-                        let k = match self.composee {
-                            None => {
-                                if ch_class != 0 {
-                                    return Some(ch);
-                                }
-                                self.composee = Some(ch);
-                                continue;
-                            }
-                            Some(k) => k,
-                        };
-                        match self.last_ccc {
-                            None => match super::char::compose(k, ch) {
-                                Some(r) => {
-                                    self.composee = Some(r);
-                                    continue;
-                                }
-                                None => {
-                                    if ch_class == 0 {
-                                        self.composee = Some(ch);
-                                        return Some(k);
-                                    }
-                                    self.buffer.push(ch);
-                                    self.last_ccc = Some(ch_class);
-                                }
-                            },
-                            Some(l_class) => {
-                                if l_class >= ch_class {
-                                    // `ch` is blocked from `composee`
-                                    if ch_class == 0 {
-                                        self.composee = Some(ch);
-                                        self.last_ccc = None;
-                                        self.state = Purging(0);
-                                        return Some(k);
-                                    }
-                                    self.buffer.push(ch);
-                                    self.last_ccc = Some(ch_class);
-                                    continue;
-                                }
-                                match super::char::compose(k, ch) {
-                                    Some(r) => {
-                                        self.composee = Some(r);
-                                        continue;
-                                    }
-                                    None => {
-                                        self.buffer.push(ch);
-                                        self.last_ccc = Some(ch_class);
-                                    }
-                                }
-                            }
-                        }
-                    }
-                    self.state = Finished(0);
-                    if self.composee.is_some() {
-                        return self.composee.take();
-                    }
-                }
-                Purging(next) => match self.buffer.get(next).cloned() {
-                    None => {
-                        self.buffer.clear();
-                        self.state = Composing;
-                    }
-                    s => {
-                        self.state = Purging(next + 1);
-                        return s;
-                    }
-                },
-                Finished(next) => match self.buffer.get(next).cloned() {
-                    None => {
-                        self.buffer.clear();
-                        return self.composee.take();
-                    }
-                    s => {
-                        self.state = Finished(next + 1);
-                        return s;
-                    }
-                },
-            }
-        }
-    }
-}
-
-impl<I: Iterator<Item = char> + Clone> fmt::Display for Recompositions<I> {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        for c in self.clone() {
-            f.write_char(c)?;
-        }
-        Ok(())
-    }
-}
diff --git a/vendor/unicode-normalization/src/replace.rs b/vendor/unicode-normalization/src/replace.rs
deleted file mode 100644
index 8d8cb423..00000000
--- a/vendor/unicode-normalization/src/replace.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-use core::fmt::{self, Write};
-use tinyvec::ArrayVec;
-
-/// External iterator for replacements for a string's characters.
-#[derive(Clone)]
-pub struct Replacements<I> {
-    iter: I,
-    // At this time, the longest replacement sequence has length 2, so we just
-    // need buffer space for 1 codepoint.
-    buffer: Option<char>,
-}
-
-#[inline]
-pub fn new_cjk_compat_variants<I: Iterator<Item = char>>(iter: I) -> Replacements<I> {
-    Replacements { iter, buffer: None }
-}
-
-impl<I: Iterator<Item = char>> Iterator for Replacements<I> {
-    type Item = char;
-
-    #[inline]
-    fn next(&mut self) -> Option<char> {
-        if let Some(c) = self.buffer.take() {
-            return Some(c);
-        }
-
-        match self.iter.next() {
-            Some(ch) => {
-                // At this time, the longest replacement sequence has length 2.
-                let mut buffer = ArrayVec::<[char; 2]>::new();
-                super::char::decompose_cjk_compat_variants(ch, |d| buffer.push(d));
-                self.buffer = buffer.get(1).copied();
-                Some(buffer[0])
-            }
-            None => None,
-        }
-    }
-
-    fn size_hint(&self) -> (usize, Option<usize>) {
-        let (lower, _) = self.iter.size_hint();
-        (lower, None)
-    }
-}
-
-impl<I: Iterator<Item = char> + Clone> fmt::Display for Replacements<I> {
-    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-        for c in self.clone() {
-            f.write_char(c)?;
-        }
-        Ok(())
-    }
-}
diff --git a/vendor/unicode-normalization/src/stream_safe.rs b/vendor/unicode-normalization/src/stream_safe.rs
deleted file mode 100644
index 30fe8100..00000000
--- a/vendor/unicode-normalization/src/stream_safe.rs
+++ /dev/null
@@ -1,170 +0,0 @@
-use crate::lookups::{
-    canonical_combining_class, canonical_fully_decomposed, compatibility_fully_decomposed,
-    stream_safe_trailing_nonstarters,
-};
-use crate::normalize::{hangul_decomposition_length, is_hangul_syllable};
-use crate::tables::stream_safe_leading_nonstarters;
-
-pub(crate) const MAX_NONSTARTERS: usize = 30;
-const COMBINING_GRAPHEME_JOINER: char = '\u{034F}';
-
-/// UAX15-D4: This iterator keeps track of how many non-starters there have been
-/// since the last starter in *NFKD* and will emit a Combining Grapheme Joiner
-/// (U+034F) if the count exceeds 30.
-pub struct StreamSafe<I> {
-    iter: I,
-    nonstarter_count: usize,
-    buffer: Option<char>,
-}
-
-impl<I> StreamSafe<I> {
-    pub(crate) fn new(iter: I) -> Self {
-        Self {
-            iter,
-            nonstarter_count: 0,
-            buffer: None,
-        }
-    }
-}
-
-impl<I: Iterator<Item = char>> Iterator for StreamSafe<I> {
-    type Item = char;
-
-    #[inline]
-    fn next(&mut self) -> Option<char> {
-        let next_ch = match self.buffer.take().or_else(|| self.iter.next()) {
-            None => return None,
-            Some(c) => c,
-        };
-        let d = classify_nonstarters(next_ch);
-        if self.nonstarter_count + d.leading_nonstarters > MAX_NONSTARTERS {
-            // Since we're emitting a CGJ, the suffix of the emitted string in NFKD has no trailing
-            // nonstarters, so we can reset the counter to zero. Put `next_ch` back into the
-            // iterator (via `self.buffer`), and we'll reclassify it next iteration.
-            self.nonstarter_count = 0;
-            self.buffer = Some(next_ch);
-            return Some(COMBINING_GRAPHEME_JOINER);
-        }
-
-        // Is the character all nonstarters in NFKD? If so, increment our counter of contiguous
-        // nonstarters in NKFD.
-        if d.leading_nonstarters == d.decomposition_len {
-            self.nonstarter_count += d.decomposition_len;
-        }
-        // Otherwise, reset the counter to the decomposition's number of trailing nonstarters.
-        else {
-            self.nonstarter_count = d.trailing_nonstarters;
-        }
-        Some(next_ch)
-    }
-}
-
-#[derive(Debug)]
-pub(crate) struct Decomposition {
-    pub(crate) leading_nonstarters: usize,
-    pub(crate) trailing_nonstarters: usize,
-    pub(crate) decomposition_len: usize,
-}
-
-#[inline]
-pub(crate) fn classify_nonstarters(c: char) -> Decomposition {
-    // As usual, fast path for ASCII (which is always a starter)
-    if c <= '\x7f' {
-        return Decomposition {
-            leading_nonstarters: 0,
-            trailing_nonstarters: 0,
-            decomposition_len: 1,
-        };
-    }
-    // Next, special case Hangul, since it's not handled by our tables.
-    if is_hangul_syllable(c) {
-        return Decomposition {
-            leading_nonstarters: 0,
-            trailing_nonstarters: 0,
-            decomposition_len: hangul_decomposition_length(c),
-        };
-    }
-    let decomp = compatibility_fully_decomposed(c).or_else(|| canonical_fully_decomposed(c));
-    match decomp {
-        Some(decomp) => Decomposition {
-            leading_nonstarters: stream_safe_leading_nonstarters(c),
-            trailing_nonstarters: stream_safe_trailing_nonstarters(c),
-            decomposition_len: decomp.len(),
-        },
-        None => {
-            let is_nonstarter = canonical_combining_class(c) != 0;
-            let nonstarter = if is_nonstarter { 1 } else { 0 };
-            Decomposition {
-                leading_nonstarters: nonstarter,
-                trailing_nonstarters: nonstarter,
-                decomposition_len: 1,
-            }
-        }
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::{classify_nonstarters, StreamSafe};
-    use crate::lookups::canonical_combining_class;
-    use crate::normalize::decompose_compatible;
-
-    #[cfg(not(feature = "std"))]
-    use crate::no_std_prelude::*;
-
-    use core::char;
-
-    fn stream_safe(s: &str) -> String {
-        StreamSafe::new(s.chars()).collect()
-    }
-
-    #[test]
-    fn test_simple() {
-        let technically_okay = "Da\u{0300}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{0316}\u{0317}\u{0318}\u{0319}\u{031a}\u{031b}\u{031c}\u{031d}ngerzone";
-        assert_eq!(stream_safe(technically_okay), technically_okay);
-
-        let too_much = "Da\u{0300}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{0316}\u{0317}\u{0318}\u{0319}\u{031a}\u{031b}\u{031c}\u{031d}\u{032e}ngerzone";
-        let fixed_it = "Da\u{0300}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{0316}\u{0317}\u{0318}\u{0319}\u{031a}\u{031b}\u{031c}\u{031d}\u{034f}\u{032e}ngerzone";
-        assert_eq!(stream_safe(too_much), fixed_it);
-
-        let woah_nelly = "Da\u{0300}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{0316}\u{0317}\u{0318}\u{0319}\u{031a}\u{031b}\u{031c}\u{031d}\u{032e}\u{0300}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{0316}\u{0317}\u{0318}\u{0319}\u{031a}\u{031b}\u{031c}\u{031d}\u{032e}ngerzone";
-        let its_cool = "Da\u{0300}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{0316}\u{0317}\u{0318}\u{0319}\u{031a}\u{031b}\u{031c}\u{031d}\u{034f}\u{032e}\u{0300}\u{0301}\u{0302}\u{0303}\u{0304}\u{0305}\u{0306}\u{0307}\u{0308}\u{0309}\u{030a}\u{030b}\u{030c}\u{030d}\u{030e}\u{030f}\u{0310}\u{0311}\u{0312}\u{0313}\u{0314}\u{0315}\u{0316}\u{0317}\u{0318}\u{0319}\u{031a}\u{031b}\u{031c}\u{034f}\u{031d}\u{032e}ngerzone";
-        assert_eq!(stream_safe(woah_nelly), its_cool);
-    }
-
-    #[test]
-    fn test_all_nonstarters() {
-        let s = "\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}\u{0300}";
-        let expected = "\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{034F}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}\u{300}";
-        assert_eq!(stream_safe(s), expected);
-    }
-
-    #[test]
-    fn test_classify_nonstarters() {
-        // Highest character in the `compat_fully_decomp` table is 2FA1D
-        for ch in 0..0x2FA1E {
-            let ch = match char::from_u32(ch) {
-                Some(c) => c,
-                None => continue,
-            };
-            let c = classify_nonstarters(ch);
-            let mut s = Vec::new();
-            decompose_compatible(ch, |c| s.push(c));
-
-            assert_eq!(s.len(), c.decomposition_len);
-
-            let num_leading = s
-                .iter()
-                .take_while(|&c| canonical_combining_class(*c) != 0)
-                .count();
-            let num_trailing = s
-                .iter()
-                .rev()
-                .take_while(|&c| canonical_combining_class(*c) != 0)
-                .count();
-
-            assert_eq!(num_leading, c.leading_nonstarters);
-            assert_eq!(num_trailing, c.trailing_nonstarters);
-        }
-    }
-}
diff --git a/vendor/unicode-normalization/src/tables.rs b/vendor/unicode-normalization/src/tables.rs
deleted file mode 100644
index fd6d9913..00000000
--- a/vendor/unicode-normalization/src/tables.rs
+++ /dev/null
@@ -1,37863 +0,0 @@
-// Copyright 2012-2018 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// NOTE: The following code was generated by "scripts/unicode.py", do not edit directly
-
-#![allow(missing_docs)]
-use crate::quick_check::IsNormalized;
-use crate::quick_check::IsNormalized::*;
-
-#[allow(unused)]
-pub const UNICODE_VERSION: (u8, u8, u8) = (15, 1, 0);
-
-pub(crate) const CANONICAL_COMBINING_CLASS_SALT: &[u16] = &[
-    0x0,
-    0x1,
-    0x224,
-    0x197,
-    0x4,
-    0x0,
-    0x6f,
-    0x4,
-    0xaf,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x88,
-    0xa,
-    0x8,
-    0x0,
-    0x0,
-    0x0,
-    0x1c,
-    0x46,
-    0x1,
-    0xd,
-    0x1b,
-    0x0,
-    0x15,
-    0x12,
-    0x45,
-    0xec,
-    0x36,
-    0x10,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x94,
-    0x0,
-    0x57,
-    0x0,
-    0x8,
-    0x3,
-    0x7,
-    0x0,
-    0x16,
-    0x3a,
-    0x2,
-    0x23,
-    0x3,
-    0x4,
-    0x1c,
-    0x1,
-    0x0,
-    0x47,
-    0x11,
-    0x17,
-    0x4,
-    0x1b,
-    0x0,
-    0x13,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x7,
-    0x7,
-    0x4,
-    0x2e,
-    0x0,
-    0x0,
-    0x2c,
-    0x0,
-    0x0,
-    0x3,
-    0xf,
-    0x0,
-    0x0,
-    0x13,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x9,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x3,
-    0x2,
-    0x1e,
-    0x0,
-    0x8,
-    0x11,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0x79,
-    0x0,
-    0x4,
-    0x13,
-    0x0,
-    0x0,
-    0x5,
-    0x2,
-    0x0,
-    0x5,
-    0x1,
-    0x15,
-    0x1,
-    0x0,
-    0x3,
-    0xc,
-    0x0,
-    0x35,
-    0x3,
-    0x2,
-    0x5,
-    0x6,
-    0x0,
-    0x5,
-    0x4,
-    0x2,
-    0x1c,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x2,
-    0x9,
-    0x7,
-    0x0,
-    0x5,
-    0x0,
-    0x8,
-    0x7,
-    0x0,
-    0x12,
-    0x9,
-    0x0,
-    0x39,
-    0x2,
-    0x9,
-    0x0,
-    0x4,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x22,
-    0x2,
-    0x0,
-    0x1b,
-    0x13,
-    0xc,
-    0x14,
-    0x6,
-    0x4,
-    0x5,
-    0x13,
-    0x2,
-    0x0,
-    0x3,
-    0x4,
-    0x2,
-    0x0,
-    0x18,
-    0x0,
-    0x6,
-    0x4,
-    0x0,
-    0x0,
-    0xa,
-    0xa,
-    0x0,
-    0x1,
-    0x0,
-    0xf,
-    0x10,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0xf,
-    0x1,
-    0x4,
-    0x2,
-    0xa,
-    0xb,
-    0x9,
-    0x4,
-    0x1,
-    0x0,
-    0xb,
-    0x0,
-    0x3,
-    0x0,
-    0x6,
-    0x0,
-    0x6,
-    0x0,
-    0x3,
-    0x4,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x15,
-    0x0,
-    0x0,
-    0x0,
-    0x14,
-    0x1b,
-    0x0,
-    0xc,
-    0x0,
-    0x0,
-    0x8,
-    0x3,
-    0xc,
-    0x0,
-    0xe,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0xa,
-    0x2,
-    0x6,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x6,
-    0x2,
-    0x3,
-    0x2,
-    0x10,
-    0x0,
-    0xf,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x3,
-    0x4,
-    0xd,
-    0x6,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x18,
-    0xa,
-    0x6,
-    0x1,
-    0x1,
-    0x8,
-    0x0,
-    0x1,
-    0x1,
-    0x7,
-    0x0,
-    0x3,
-    0x9,
-    0x11,
-    0x5,
-    0x1,
-    0x5,
-    0x3,
-    0x16,
-    0x7,
-    0x5,
-    0x4,
-    0x0,
-    0xa,
-    0x6,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x7,
-    0x0,
-    0x6,
-    0x0,
-    0x5,
-    0x41,
-    0x9,
-    0x1,
-    0xa,
-    0x0,
-    0x5,
-    0x2,
-    0x11,
-    0xb,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x6,
-    0x18,
-    0x3,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x9,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x3,
-    0xc,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x5,
-    0x0,
-    0x1,
-    0xb,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xf,
-    0x0,
-    0x0,
-    0x2,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x9,
-    0x8,
-    0x0,
-    0x0,
-    0x3,
-    0x3,
-    0x1,
-    0x4,
-    0x3,
-    0x4,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x6,
-    0x1,
-    0x5,
-    0x1,
-    0x0,
-    0x3,
-    0x6,
-    0x8,
-    0x2,
-    0x2,
-    0x6,
-    0x3,
-    0x0,
-    0x10,
-    0x6,
-    0x6,
-    0x5,
-    0x1,
-    0x7,
-    0x0,
-    0x2,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x8,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0xc,
-    0x4,
-    0x1,
-    0x2,
-    0x1,
-    0x4,
-    0x2,
-    0x5,
-    0x4,
-    0x0,
-    0x3,
-    0x4,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x7,
-    0x6,
-    0x8,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x2,
-    0x2,
-    0x2,
-    0x4,
-    0x0,
-    0x0,
-    0x6,
-    0x6,
-    0x6,
-    0xc,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x9,
-    0x3,
-    0x2,
-    0x1,
-    0x1,
-    0x9,
-    0x1,
-    0x0,
-    0x8,
-    0x1,
-    0x6,
-    0x0,
-    0x3,
-    0x0,
-    0x5,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x4,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x6,
-    0x6,
-    0x2,
-    0x8,
-    0x5,
-    0x6,
-    0x5,
-    0x1,
-    0x6,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x9,
-    0x5,
-    0x5,
-    0xe,
-    0x0,
-    0x3,
-    0x5,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x2,
-    0x4,
-    0x6,
-    0x5,
-    0x6,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x5,
-    0x2,
-    0x8,
-    0x8,
-    0x1,
-    0x6,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x8,
-    0x0,
-    0x4,
-    0x7,
-    0xa,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x1,
-    0x4,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x3,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x4,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x5,
-    0x4,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0xd,
-    0x4,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x5,
-    0x3,
-    0x7,
-    0x3,
-    0x3,
-    0x3,
-    0x2,
-    0x0,
-    0x2,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x3,
-    0x4,
-    0x1,
-    0x0,
-    0x1,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x1,
-    0x8,
-    0x2,
-    0x4,
-    0x1,
-    0x1,
-    0x1,
-    0x5,
-    0x1,
-    0x4,
-    0x1,
-    0x1,
-    0x2,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x0,
-    0x6,
-    0x3,
-    0x1,
-    0x3,
-    0x2,
-    0x3,
-    0x5,
-    0x4,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x5,
-    0x8,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x5,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x7,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x2,
-    0x4,
-    0x1,
-    0x4,
-    0x0,
-    0x2,
-    0x2,
-    0x4,
-    0x4,
-    0x0,
-    0x8,
-    0x4,
-    0x6,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x6,
-    0x1,
-    0x0,
-    0x3,
-    0x2,
-    0x1,
-    0x0,
-    0x5,
-    0x4,
-    0x0,
-    0x0,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x4,
-    0x3,
-    0x0,
-    0x9,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x7,
-    0x0,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x2,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x4,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x4,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x2,
-    0x3,
-    0x5,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x3,
-    0x7,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x3,
-    0x1,
-];
-pub(crate) const CANONICAL_COMBINING_CLASS_KV: &[u32] = &[
-    0x34AE6,
-    0x2DFAE6,
-    0x1DFADA,
-    0x339DC,
-    0x1DFCE9,
-    0xA4D09,
-    0x20D0E6,
-    0x593E6,
-    0x102E0DC,
-    0x1CF4E6,
-    0x5A2DC,
-    0xFE26E6,
-    0x11D4509,
-    0x5C219,
-    0x6EADC,
-    0xA675E6,
-    0x10F4EDC,
-    0xA8EBE6,
-    0x332DC,
-    0xC4D09,
-    0x741E6,
-    0x1D171D8,
-    0xFE2DDC,
-    0x1DF2E6,
-    0x1DDEE6,
-    0xA8E1E6,
-    0x5BB14,
-    0x1DD5E6,
-    0x8CEE6,
-    0x1A7BE6,
-    0xF7484,
-    0xA8E6E6,
-    0x6191F,
-    0x114C307,
-    0x1A79E6,
-    0x65DE6,
-    0x8F11C,
-    0x1E020E6,
-    0xA8F1E6,
-    0x1DFDDC,
-    0xFE25E6,
-    0x1E947E6,
-    0x1A75E6,
-    0xEBA09,
-    0x1E02AE6,
-    0x64B1B,
-    0x6D9E6,
-    0x116B609,
-    0x1DECE6,
-    0xE3A09,
-    0x954E6,
-    0x2DE9E6,
-    0x1AB3E6,
-    0x8F3E6,
-    0x8F7E6,
-    0xA8E2E6,
-    0x1E00BE6,
-    0xFE28DC,
-    0x20D801,
-    0xAAB0E6,
-    0x10F4DDC,
-    0x825E6,
-    0x611E6,
-    0xAABEE6,
-    0x820E6,
-    0x8E8E6,
-    0x306E6,
-    0x2DE4E6,
-    0x11F4109,
-    0x111CA07,
-    0x2CF0E6,
-    0x1CD7DC,
-    0x10A3ADC,
-    0x1E131E6,
-    0x103A09,
-    0x73BDC,
-    0x358E8,
-    0x487E6,
-    0x1AB1E6,
-    0x11370E6,
-    0x1CD0E6,
-    0xA8EEE6,
-    0x33CDC,
-    0x20D5E6,
-    0x819E6,
-    0x16B30E6,
-    0x16AF301,
-    0x9BC07,
-    0x1DE9E6,
-    0x1DDAE6,
-    0x1136BE6,
-    0x82BE6,
-    0x173409,
-    0x1DDBE6,
-    0x5B40E,
-    0x1D16DE2,
-    0x1D16901,
-    0x34CE6,
-    0x2DF0E6,
-    0x33701,
-    0x11373E6,
-    0x112E907,
-    0x1AC0DC,
-    0x20EA01,
-    0x33EE6,
-    0xF7181,
-    0x1D16801,
-    0x346E6,
-    0x1E8D6DC,
-    0x1E8D0DC,
-    0xFE2CDC,
-    0x1CE0E6,
-    0x8EAE6,
-    0x20DBE6,
-    0x16B31E6,
-    0x735E6,
-    0x10EFDDC,
-    0x1D17EDC,
-    0x11A3409,
-    0x81FE6,
-    0x1E01CE6,
-    0x1DDFE6,
-    0x20E8DC,
-    0xABED09,
-    0x1DE1E6,
-    0x316DC,
-    0x1D182DC,
-    0x20D7E6,
-    0x64F1F,
-    0x8F5E6,
-    0xD4D09,
-    0x1AC9E6,
-    0x110B909,
-    0x1ABCE6,
-    0xA67AE6,
-    0x1D1AAE6,
-    0x1E4EEDC,
-    0x1E130E6,
-    0x59FE6,
-    0x1939DE,
-    0x357E6,
-    0x119E009,
-    0x16FF006,
-    0x733E6,
-    0xFE29DC,
-    0x1CF8E6,
-    0xF8409,
-    0x364E6,
-    0x317DC,
-    0x483E6,
-    0x36CE6,
-    0x5B10B,
-    0x1CD2E6,
-    0x307E6,
-    0x65121,
-    0x330DC,
-    0x319DC,
-    0x656DC,
-    0x1DE4E6,
-    0x952DC,
-    0x345F0,
-    0x2DF1E6,
-    0x193BDC,
-    0x659E6,
-    0x5ABE6,
-    0x1B73E6,
-    0x2CF1E6,
-    0xABC07,
-    0xF7C82,
-    0x1136AE6,
-    0xA8E4E6,
-    0x8FBE6,
-    0x5B20C,
-    0xFE21E6,
-    0x2DFBE6,
-    0x31AE8,
-    0x738DC,
-    0x20D301,
-    0xFE2ADC,
-    0x11369E6,
-    0xF7282,
-    0x1AC2E6,
-    0x1D17BDC,
-    0xF86E6,
-    0x327CA,
-    0x1DC0E6,
-    0x10F48E6,
-    0x1104609,
-    0x1B6BE6,
-    0x8E6DC,
-    0x1E134E6,
-    0x341E6,
-    0x1DF6E8,
-    0xA8ECE6,
-    0x1D1ABE6,
-    0x6ECE6,
-    0x1E2AEE6,
-    0x5B50F,
-    0x1AC7E6,
-    0x1E002E6,
-    0xFC6DC,
-    0x1E136E6,
-    0x8DFE6,
-    0x64C1C,
-    0x658E6,
-    0x6E1E6,
-    0x2DE7E6,
-    0x8CFDC,
-    0x302E6,
-    0x1AC4DC,
-    0xAABFE6,
-    0x5B913,
-    0x1D18BDC,
-    0x1172B09,
-    0x2DF3E6,
-    0x739DC,
-    0x2DE0E6,
-    0x1CDCDC,
-    0x1107009,
-    0xA92CDC,
-    0x823E6,
-    0x1DF3E6,
-    0xA67DE6,
-    0x10F46DC,
-    0x1DCCE6,
-    0x6DCE6,
-    0x11A4709,
-    0xEB976,
-    0x36BE6,
-    0x65EE6,
-    0x1CF9E6,
-    0x8D6E6,
-    0x8E0E6,
-    0x1B6EE6,
-    0x8D8E6,
-    0x1E026E6,
-    0x343E6,
-    0x20D901,
-    0x1E948E6,
-    0x5B610,
-    0x1E011E6,
-    0x1DE8E6,
-    0x1DF7E4,
-    0x2DFCE6,
-    0x11D9709,
-    0x486E6,
-    0x1DC1E6,
-    0x591DC,
-    0x11D4409,
-    0xA8C409,
-    0x1BAA09,
-    0x10EFFDC,
-    0x6EDDC,
-    0x356DC,
-    0x1DEEE6,
-    0x2DEDE6,
-    0x64D1D,
-    0x17D209,
-    0xD3C09,
-    0x1E945E6,
-    0x114C209,
-    0x303E6,
-    0xA6F0E6,
-    0x302FE0,
-    0x1E01BE6,
-    0x11368E6,
-    0x1163F09,
-    0x1CE301,
-    0x5A3DC,
-    0x8EFDC,
-    0x596DC,
-    0x1E028E6,
-    0x10F4FDC,
-    0xA82C09,
-    0x1D172D8,
-    0x2CEFE6,
-    0x10F49E6,
-    0xA8EAE6,
-    0x32CDC,
-    0xD3B09,
-    0x1E00FE6,
-    0x8EDDC,
-    0x171409,
-    0x1ABBE6,
-    0x1E8D3DC,
-    0xB3C07,
-    0x59DE6,
-    0x10AE6DC,
-    0x1DFBE6,
-    0x16FF106,
-    0x82AE6,
-    0x20EEDC,
-    0x1CDFDC,
-    0x1CDDDC,
-    0x8D2DC,
-    0x135FE6,
-    0xF7A82,
-    0x610E6,
-    0x1144209,
-    0x2DEEE6,
-    0x1145EE6,
-    0x73DE6,
-    0x35DEA,
-    0xFE2FE6,
-    0xCBC07,
-    0x1DC7E6,
-    0x6E7E6,
-    0x321CA,
-    0x5A6DC,
-    0xA8F0E6,
-    0x5BA13,
-    0x2DECE6,
-    0x8EEDC,
-    0x16AF201,
-    0x5C712,
-    0x612E6,
-    0x59CE6,
-    0x11D4207,
-    0x1ABADC,
-    0x1AB4E6,
-    0x1E8D2DC,
-    0x85BDC,
-    0x1B72E6,
-    0x1E000E6,
-    0x5B00A,
-    0x5C5DC,
-    0x10F47DC,
-    0x1A78E6,
-    0x1113409,
-    0x1144607,
-    0x10D26E6,
-    0x20DCE6,
-    0x350E6,
-    0xF7D82,
-    0x31FDC,
-    0x103909,
-    0x8D3DC,
-    0x1BE607,
-    0x731DC,
-    0x312E6,
-    0x829E6,
-    0x8FADC,
-    0x7EBE6,
-    0x1DDDE6,
-    0x1D165D8,
-    0x20E9E6,
-    0x1E01EE6,
-    0x1E135E6,
-    0x1DEDE6,
-    0xC565B,
-    0x1E012E6,
-    0x2DE3E6,
-    0xF7B82,
-    0x1CDEDC,
-    0x36DE6,
-    0x8F4E6,
-    0x1E8D4DC,
-    0x73CDC,
-    0x11374E6,
-    0x5ACE6,
-    0x1AC8E6,
-    0x2DEBE6,
-    0xA92BDC,
-    0x1117307,
-    0x111C009,
-    0x33601,
-    0xF8082,
-    0x20D4E6,
-    0x59BDC,
-    0x1E001E6,
-    0x827E6,
-    0x33401,
-    0x31BD8,
-    0x20D201,
-    0x1E003E6,
-    0x1DF0E6,
-    0x31DDC,
-    0x2DF4E6,
-    0x11372E6,
-    0x314E6,
-    0x18A9E4,
-    0x1136CE6,
-    0x2DE5E6,
-    0x1113309,
-    0x135DE6,
-    0x1A77E6,
-    0xE3967,
-    0x10D27E6,
-    0xCCD09,
-    0x32DDC,
-    0x592E6,
-    0x2DEFE6,
-    0x8CAE6,
-    0x2DE1E6,
-    0x657E6,
-    0x32BDC,
-    0x10EACE6,
-    0x309E6,
-    0x730E6,
-    0x65FDC,
-    0x1E014E6,
-    0x8DEE6,
-    0x2DFEE6,
-    0x16B33E6,
-    0x8CDE6,
-    0x329DC,
-    0x8F21D,
-    0x93C07,
-    0x747E6,
-    0x859DC,
-    0x736E6,
-    0x10A38E6,
-    0x81DE6,
-    0x1CD5DC,
-    0x743E6,
-    0x746DC,
-    0x899DC,
-    0x61A20,
-    0x1CE201,
-    0x301E6,
-    0x1E944E6,
-    0x1D186E6,
-    0x6E0E6,
-    0x1194307,
-    0x355DC,
-    0x6181E,
-    0xA66FE6,
-    0x8FFE6,
-    0x11100E6,
-    0x33DE6,
-    0x1DC2DC,
-    0x615E6,
-    0x342E6,
-    0x1A17E6,
-    0x11367E6,
-    0x10EABE6,
-    0x6EBE6,
-    0x1E01FE6,
-    0xE4A6B,
-    0x325DC,
-    0x349DC,
-    0xFE23E6,
-    0x10376E6,
-    0x2DFFE6,
-    0x1D16FD8,
-    0x30FE6,
-    0x1BAB09,
-    0x2DE2E6,
-    0x740E6,
-    0x1193E09,
-    0xF39D8,
-    0x20EFDC,
-    0x2DE6E6,
-    0x1D187E6,
-    0x1DD2E6,
-    0x10F4AE6,
-    0x6D8E6,
-    0x1B3407,
-    0x2DEAE6,
-    0xA679E6,
-    0x10F84E6,
-    0xF87E6,
-    0x35FE9,
-    0x300E6,
-    0x7EEE6,
-    0x2DF2E6,
-    0x11F4209,
-    0x73AE6,
-    0x31EDC,
-    0x1E00DE6,
-    0x1DCED6,
-    0x1AB7DC,
-    0x1D16ED8,
-    0x352E6,
-    0x8F6DC,
-    0xA677E6,
-    0x1A7CE6,
-    0x8E7E6,
-    0x16B32E6,
-    0x1DD9E6,
-    0x1DF9DC,
-    0x8E9DC,
-    0x11366E6,
-    0x1AC6E6,
-    0x1CE701,
-    0x1CD1E6,
-    0x35EEA,
-    0x16AF401,
-    0x1AB0E6,
-    0x34BE6,
-    0x33BDC,
-    0x67023,
-    0x366E6,
-    0x10D25E6,
-    0x9FEE6,
-    0xAAB4DC,
-    0xBCD09,
-    0x1DC9E6,
-    0x5BD16,
-    0x8D0DC,
-    0x816E6,
-    0x101FDDC,
-    0xA3C07,
-    0x1D17CDC,
-    0x732E6,
-    0x826E6,
-    0x1133B07,
-    0x1CD9DC,
-    0x81EE6,
-    0x10F83DC,
-    0x313E6,
-    0x1DFFDC,
-    0x1D17FDC,
-    0x1D16701,
-    0x1A6009,
-    0x1E949E6,
-    0x10A0DDC,
-    0x1183909,
-    0xF19DC,
-    0x1DE7E6,
-    0xB4D09,
-    0x89CE6,
-    0x2DFDE6,
-    0x367E6,
-    0xA9C009,
-    0xA67BE6,
-    0x333DC,
-    0x5A1E6,
-    0x8EBE6,
-    0x1E009E6,
-    0x1DEFE6,
-    0x324DC,
-    0xFE2BDC,
-    0xFE27DC,
-    0x10D24E6,
-    0x81BE6,
-    0x1E008E6,
-    0x1E01DE6,
-    0xA95309,
-    0x6DBE6,
-    0xC5554,
-    0x2D7F09,
-    0x1CDAE6,
-    0x5BC15,
-    0x59ADE,
-    0xA676E6,
-    0x2DF8E6,
-    0x20D6E6,
-    0x5B30D,
-    0x1D181DC,
-    0x1ACADC,
-    0x953E6,
-    0x328CA,
-    0x5A0E6,
-    0x595E6,
-    0x8D5E6,
-    0x308E6,
-    0xA674E6,
-    0x30CE6,
-    0x1A76E6,
-    0x1DC6E6,
-    0x6E2E6,
-    0x10F4CE6,
-    0x20F0E6,
-    0x8CBE6,
-    0x10A0FE6,
-    0x135EE6,
-    0x1B6FE6,
-    0x1AB2E6,
-    0x1DF8E4,
-    0x5AADC,
-    0x10AE5E6,
-    0x89FE6,
-    0x1E00CE6,
-    0x20E501,
-    0x8FCE6,
-    0x65020,
-    0x8ECE6,
-    0x898E6,
-    0x1E2EDE6,
-    0x1DD7E6,
-    0xE3867,
-    0x89DE6,
-    0x1B71E6,
-    0x85ADC,
-    0x1DC5E6,
-    0x1D189E6,
-    0xA69FE6,
-    0x348DC,
-    0x8DBE6,
-    0x1DC4E6,
-    0x320DC,
-    0xA8E3E6,
-    0x1E946E6,
-    0x1D170D8,
-    0xAAF609,
-    0x1ACCE6,
-    0x360EA,
-    0x1ABFDC,
-    0x1AC1E6,
-    0x302CE8,
-    0x2DF7E6,
-    0xEB876,
-    0x1E132E6,
-    0x1DFEE6,
-    0x33FE6,
-    0x20EB01,
-    0x82DE6,
-    0x347DC,
-    0x1123607,
-    0xA6F1E6,
-    0x749E6,
-    0x17DDE6,
-    0x7F1E6,
-    0x617E6,
-    0x1ACDE6,
-    0x1DE6E6,
-    0x8E4E6,
-    0x351E6,
-    0x89EE6,
-    0x613E6,
-    0x1DCDEA,
-    0x655DC,
-    0x20E1E6,
-    0x65CDC,
-    0x1ABDDC,
-    0x1AB9DC,
-    0xA678E6,
-    0x10A3F09,
-    0x32ADC,
-    0xA8EDE6,
-    0x302ADA,
-    0x20DA01,
-    0x30DE6,
-    0x302BE4,
-    0x8D7E6,
-    0x8F01B,
-    0x8DCE6,
-    0x5B711,
-    0xA80609,
-    0x1D1ADE6,
-    0x6E4E6,
-    0x1DE0E6,
-    0x5ADDE,
-    0x1DF1E6,
-    0x11102E6,
-    0x1E8D5DC,
-    0x30EE6,
-    0x7EFE6,
-    0x7F0E6,
-    0x597E6,
-    0x1E027E6,
-    0x1E2ECE6,
-    0x31CDC,
-    0x315E8,
-    0xAAB7E6,
-    0x616E6,
-    0x2DF6E6,
-    0x5BF17,
-    0x10A3901,
-    0x653E6,
-    0x1D166D8,
-    0x1AC5E6,
-    0x361EA,
-    0x8F8E6,
-    0x1AC3DC,
-    0x103707,
-    0x1123509,
-    0x36EE6,
-    0x1E004E6,
-    0x1E023E6,
-    0x368E6,
-    0x1DD6E6,
-    0x344E6,
-    0x742DC,
-    0x485E6,
-    0x110BA07,
-    0x1CD8DC,
-    0x1CD401,
-    0x8FEE6,
-    0x2DF5E6,
-    0x1E00EE6,
-    0xECB7A,
-    0x94D09,
-    0x1DEBE6,
-    0x1133C07,
-    0x1E4EFE6,
-    0x359DC,
-    0x1E010E6,
-    0x304E6,
-    0x5A8E6,
-    0x1CD6DC,
-    0xAAB3E6,
-    0x1B70E6,
-    0x6E8E6,
-    0xA92DDC,
-    0x8D9E6,
-    0x16B34E6,
-    0xF18DC,
-    0x30AE6,
-    0x20EDDC,
-    0x1E4ECE8,
-    0x1E2EFE6,
-    0x1D242E6,
-    0x354DC,
-    0x16AF101,
-    0x35BE6,
-    0x1DE3E6,
-    0x73EDC,
-    0x1E005E6,
-    0x115BF09,
-    0x1DC8E6,
-    0x484E6,
-    0x81CE6,
-    0x1E133E6,
-    0x5B812,
-    0x340E6,
-    0x598E6,
-    0x1BC9E01,
-    0x1DDCE6,
-    0x115C007,
-    0x8E3DC,
-    0x11C3F09,
-    0x10F85DC,
-    0x35CE9,
-    0x1CDBE6,
-    0x1D1ACE6,
-    0x1E8D1DC,
-    0x1AB5DC,
-    0xDCA09,
-    0x322CA,
-    0x10F4BDC,
-    0x1DC3E6,
-    0x35ADC,
-    0x7ECE6,
-    0x112EA09,
-    0xE4B6B,
-    0x7FDDC,
-    0x32EDC,
-    0x65BE6,
-    0xFE22E6,
-    0x1DD3E6,
-    0x89ADC,
-    0xA8E8E6,
-    0x8F9DC,
-    0x36FE6,
-    0x1B6DE6,
-    0x8CCE6,
-    0x1134D09,
-    0x193AE6,
-    0x309A08,
-    0xFE20E6,
-    0x1DE2E6,
-    0x1CEDDC,
-    0x10EFEDC,
-    0x1E013E6,
-    0x8D4E6,
-    0x34EDC,
-    0x16B35E6,
-    0x1037AE6,
-    0x1107F09,
-    0x8DDE6,
-    0x1DD1E6,
-    0x33801,
-    0xA67CE6,
-    0x1ACEE6,
-    0x1E08FE6,
-    0x1183A07,
-    0x1D244E6,
-    0x1E018E6,
-    0xACD09,
-    0x5A5DC,
-    0x64E1E,
-    0x1CE401,
-    0xF37DC,
-    0x745E6,
-    0xC3C07,
-    0x65222,
-    0x305E6,
-    0x33ADC,
-    0x1DF5E6,
-    0x1E017E6,
-    0x1CE801,
-    0x1193D09,
-    0x20D1E6,
-    0x318DC,
-    0x822E6,
-    0x116B707,
-    0x310E6,
-    0x821E6,
-    0x10378E6,
-    0x5A4DC,
-    0xF83E6,
-    0xAAC1E6,
-    0x1DD0CA,
-    0x1D185E6,
-    0x8D1DC,
-    0x5AFE6,
-    0x1DE5E6,
-    0x309908,
-    0x365E6,
-    0x951E6,
-    0x369E6,
-    0x748DC,
-    0xEC97A,
-    0x817E6,
-    0x6DAE6,
-    0x1E4EDE8,
-    0x1CE501,
-    0x737DC,
-    0x311E6,
-    0x6E3DC,
-    0x1BF309,
-    0x89BDC,
-    0x11101E6,
-    0x5C118,
-    0x2DE8E6,
-    0x614E6,
-    0xFE2EE6,
-    0x10379E6,
-    0x1DCFDC,
-    0x82CE6,
-    0x32FDC,
-    0x1B4409,
-    0x171509,
-    0x1ACBE6,
-    0x1B6CDC,
-    0xECA7A,
-    0x1E015E6,
-    0x20E601,
-    0xFE24E6,
-    0x1D243E6,
-    0x1E021E6,
-    0xE496B,
-    0x71124,
-    0x6DFE6,
-    0xA9B307,
-    0x65AE6,
-    0x1A7FDC,
-    0x8DAE6,
-    0x8E1E6,
-    0x11A9909,
-    0x1D180DC,
-    0xA8EFE6,
-    0x1DF4E6,
-    0x10377E6,
-    0x362E9,
-    0x594E6,
-    0x33501,
-    0x7F2DC,
-    0x1D18ADC,
-    0x1DCBE6,
-    0x5A9E6,
-    0x1CE601,
-    0x34DDC,
-    0xEC87A,
-    0x6D7E6,
-    0x108DDC,
-    0x5C4E6,
-    0x36AE6,
-    0x326DC,
-    0x1E00AE6,
-    0xA8E0E6,
-    0x5A7DC,
-    0x1DEAE6,
-    0x6D6E6,
-    0xA8E7E6,
-    0x30BE6,
-    0x16AF001,
-    0x1C3707,
-    0x302EE0,
-    0xE486B,
-    0x1DD8E6,
-    0x1AB8DC,
-    0x1A18DC,
-    0x2DF9E6,
-    0xFB1E1A,
-    0x363E6,
-    0x74AE6,
-    0x1E024E6,
-    0x599E6,
-    0x59EE6,
-    0x7F3E6,
-    0x1BF209,
-    0x818E6,
-    0xA8E9E6,
-    0x16B36E6,
-    0x10F50DC,
-    0x1DD4E6,
-    0xAAB2E6,
-    0xA8E5E6,
-    0x744DC,
-    0x10F82E6,
-    0x302DDE,
-    0x331DC,
-    0x1D188E6,
-    0x7EDE6,
-    0x1E006E6,
-    0xAAB8E6,
-    0x353DC,
-    0x1E016E6,
-    0x1DCADC,
-    0x73FE6,
-    0xF35DC,
-    0xA69EE6,
-    0x323DC,
-    0x8E5E6,
-    0x20ECDC,
-    0x1E2EEE6,
-    0x5AEE4,
-    0x11371E6,
-    0x1E029E6,
-    0x734DC,
-    0x1AB6DC,
-    0x20E7E6,
-    0x1D17DDC,
-    0x8FDE6,
-    0x9CD09,
-    0xF82E6,
-    0x1A7AE6,
-    0x654E6,
-    0x1E94A07,
-];
-
-
-pub(crate) const COMPOSITION_TABLE_SALT: &[u16] = &[
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x25d,
-    0x3,
-    0x5d,
-    0x0,
-    0x2,
-    0x9,
-    0x4,
-    0x87,
-    0x6,
-    0x135,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x3,
-    0xe1,
-    0x78,
-    0x0,
-    0x2,
-    0x29,
-    0x8,
-    0x8f,
-    0x24,
-    0x0,
-    0x0,
-    0x0,
-    0x31,
-    0x0,
-    0x0,
-    0x6d,
-    0x0,
-    0x33,
-    0x1,
-    0x4c,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x8,
-    0x7c,
-    0x6,
-    0x4c,
-    0x45,
-    0x2a,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0xa,
-    0x0,
-    0x0,
-    0x59,
-    0x0,
-    0x10,
-    0x3,
-    0x9,
-    0xe,
-    0x6,
-    0x1,
-    0xc,
-    0x10,
-    0x0,
-    0x0,
-    0x0,
-    0x3d,
-    0x0,
-    0x0,
-    0x2a,
-    0x0,
-    0x0,
-    0x1,
-    0x20,
-    0xa,
-    0x0,
-    0x1,
-    0xe,
-    0x2,
-    0x10,
-    0x22,
-    0x0,
-    0x61,
-    0x0,
-    0x4,
-    0x15,
-    0x0,
-    0x4,
-    0x3,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0xd,
-    0x1,
-    0x1,
-    0x24,
-    0x3,
-    0x4,
-    0x0,
-    0x0,
-    0x18,
-    0x58,
-    0x0,
-    0x0,
-    0xa,
-    0x19,
-    0x10,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x12,
-    0x15,
-    0x0,
-    0xc,
-    0x7,
-    0x3,
-    0x0,
-    0x1a,
-    0x7,
-    0xc,
-    0x1,
-    0x5,
-    0x4,
-    0x21,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0xa,
-    0x0,
-    0xa,
-    0x0,
-    0x4,
-    0x9,
-    0x5,
-    0xd,
-    0x5,
-    0x0,
-    0x3,
-    0x6,
-    0x26,
-    0xb,
-    0x0,
-    0x4,
-    0x6,
-    0x0,
-    0x13,
-    0x0,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x24,
-    0x1,
-    0x1d,
-    0x1,
-    0x0,
-    0x0,
-    0x10,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0xa,
-    0x0,
-    0xd,
-    0x0,
-    0x10,
-    0x0,
-    0x6,
-    0x5,
-    0x0,
-    0x0,
-    0x9,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x16,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x1,
-    0x25,
-    0x5,
-    0x0,
-    0xa,
-    0xd,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x12,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x9,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x4,
-    0x1,
-    0x6,
-    0xb,
-    0x3,
-    0x6,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0xd,
-    0xf,
-    0xe,
-    0x0,
-    0x1,
-    0x1,
-    0x4,
-    0xf,
-    0x10,
-    0x0,
-    0x5,
-    0x0,
-    0x19,
-    0x1,
-    0xe,
-    0x0,
-    0x8,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x11,
-    0x0,
-    0x4,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x5,
-    0x8,
-    0x0,
-    0x0,
-    0xc,
-    0xa,
-    0x0,
-    0x6,
-    0x9,
-    0x3,
-    0x1,
-    0x6,
-    0x1,
-    0x0,
-    0x1b,
-    0x1,
-    0xe,
-    0x0,
-    0x8,
-    0x5,
-    0x3,
-    0x15,
-    0x0,
-    0x2,
-    0x7,
-    0xb,
-    0x3,
-    0x0,
-    0xa,
-    0x3,
-    0x0,
-    0x6,
-    0x0,
-    0xa,
-    0x0,
-    0x1,
-    0x3,
-    0x8,
-    0x0,
-    0x9,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x17,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x5,
-    0x16,
-    0x0,
-    0x10,
-    0x3,
-    0x4,
-    0x11,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x12,
-    0x1,
-    0x4,
-    0xa,
-    0xb,
-    0x4,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x4,
-    0x5,
-    0x0,
-    0x0,
-    0x11,
-    0x1,
-    0x6,
-    0x6,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x7,
-    0x0,
-    0x3,
-    0xa,
-    0x0,
-    0x1,
-    0xa,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0xd,
-    0x5,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x5,
-    0x6,
-    0x8,
-    0x4,
-    0x5,
-    0x0,
-    0xb,
-    0x0,
-    0x4,
-    0xb,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0xb,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x7,
-    0x13,
-    0x4,
-    0x19,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x6,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xc,
-    0x2,
-    0x3,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x5,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x7,
-    0x1,
-    0x9,
-    0x6,
-    0x4,
-    0x1,
-    0x5,
-    0x0,
-    0x1,
-    0x2,
-    0x8,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0xb,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x6,
-    0x2,
-    0x5,
-    0x8,
-    0x12,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x3,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x4,
-    0xd,
-    0x0,
-    0x0,
-    0xb,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0xc,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x8,
-    0x2,
-    0x0,
-    0x2,
-    0x1,
-    0x6,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x5,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xe,
-    0x10,
-    0x0,
-    0x5,
-    0x4,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x1,
-    0x5,
-    0x2,
-    0x3,
-    0x4,
-    0x0,
-    0x3,
-    0x3,
-    0x6,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0xe,
-    0x1,
-    0x2,
-    0x1,
-    0x4,
-    0x2,
-    0x5,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x5,
-    0x6,
-    0x6,
-    0x5,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x4,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0x6,
-    0x2,
-    0x8,
-    0x0,
-    0x0,
-    0x7,
-    0x1,
-    0x2,
-    0x2,
-    0x5,
-    0x4,
-    0x11,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0xb,
-    0x6,
-    0x0,
-    0x6,
-    0x0,
-    0x4,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x2,
-    0x6,
-    0x0,
-    0x0,
-    0x2,
-    0x4,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xc,
-    0xc,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x4,
-    0x0,
-    0x8,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x3,
-    0x4,
-    0x1,
-    0x2,
-    0x3,
-    0x0,
-    0x1,
-    0x7,
-    0x0,
-    0x0,
-    0x7,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0xb,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x3,
-    0x6,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x1,
-    0x3,
-    0x3,
-    0xa,
-    0x7,
-    0x0,
-    0x4,
-    0x1,
-    0x6,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x4,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x2,
-    0x6,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x7,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x5,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x2,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x4,
-    0x2,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x2,
-    0x0,
-    0x8,
-    0x3,
-    0x1,
-    0x1,
-    0x1,
-    0x3,
-    0x4,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x3,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x4,
-    0x0,
-    0x5,
-    0x5,
-    0x0,
-    0x5,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x6,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-];
-pub(crate) const COMPOSITION_TABLE_KV: &[(u32, char)] = &[
-    (0x64A0654, '\u{0626}'),
-    (0x690309, '\u{1EC9}'),
-    (0x650306, '\u{0115}'),
-    (0x423030B, '\u{04F2}'),
-    (0x47030C, '\u{01E6}'),
-    (0x570301, '\u{1E82}'),
-    (0xC50301, '\u{01FA}'),
-    (0x21D20338, '\u{21CF}'),
-    (0x430307, '\u{010A}'),
-    (0x7A0307, '\u{017C}'),
-    (0x49030C, '\u{01CF}'),
-    (0x720307, '\u{1E59}'),
-    (0x304B3099, '\u{304C}'),
-    (0x1F610345, '\u{1FA1}'),
-    (0x410307, '\u{0226}'),
-    (0x6B0323, '\u{1E33}'),
-    (0x3990304, '\u{1FD9}'),
-    (0x1F490301, '\u{1F4D}'),
-    (0x3CA0342, '\u{1FD7}'),
-    (0x550304, '\u{016A}'),
-    (0x30DB309A, '\u{30DD}'),
-    (0x1F6E0345, '\u{1FAE}'),
-    (0x420331, '\u{1E06}'),
-    (0x41E0308, '\u{04E6}'),
-    (0x410325, '\u{1E00}'),
-    (0x520331, '\u{1E5E}'),
-    (0x1FF60345, '\u{1FF7}'),
-    (0x22720338, '\u{2274}'),
-    (0x22480338, '\u{2249}'),
-    (0x1FBF0301, '\u{1FCE}'),
-    (0x30C63099, '\u{30C7}'),
-    (0x760323, '\u{1E7F}'),
-    (0x700307, '\u{1E57}'),
-    (0x1F510301, '\u{1F55}'),
-    (0x750328, '\u{0173}'),
-    (0x305B3099, '\u{305C}'),
-    (0x41030A, '\u{00C5}'),
-    (0x1A10323, '\u{1EE3}'),
-    (0x550311, '\u{0216}'),
-    (0x530307, '\u{1E60}'),
-    (0xDC030C, '\u{01D9}'),
-    (0x4F0300, '\u{00D2}'),
-    (0x6F0307, '\u{022F}'),
-    (0x470301, '\u{01F4}'),
-    (0x610309, '\u{1EA3}'),
-    (0x1F080301, '\u{1F0C}'),
-    (0x3B90301, '\u{03AF}'),
-    (0x4330301, '\u{0453}'),
-    (0x1F200345, '\u{1F90}'),
-    (0x620307, '\u{1E03}'),
-    (0x1F030345, '\u{1F83}'),
-    (0x570308, '\u{1E84}'),
-    (0x5A0307, '\u{017B}'),
-    (0x30C13099, '\u{30C2}'),
-    (0x1A10309, '\u{1EDF}'),
-    (0x6270655, '\u{0625}'),
-    (0x3BF0314, '\u{1F41}'),
-    (0x670301, '\u{01F5}'),
-    (0x39F0301, '\u{038C}'),
-    (0xEA0301, '\u{1EBF}'),
-    (0x63030C, '\u{010D}'),
-    (0x1F000345, '\u{1F80}'),
-    (0x4130301, '\u{0403}'),
-    (0x4B0323, '\u{1E32}'),
-    (0x790301, '\u{00FD}'),
-    (0x770301, '\u{1E83}'),
-    (0x1F0E0345, '\u{1F8E}'),
-    (0x480308, '\u{1E26}'),
-    (0x30A63099, '\u{30F4}'),
-    (0x1020300, '\u{1EB0}'),
-    (0x6C0301, '\u{013A}'),
-    (0x450309, '\u{1EBA}'),
-    (0x1F390301, '\u{1F3D}'),
-    (0x690311, '\u{020B}'),
-    (0x4230304, '\u{04EE}'),
-    (0x61030C, '\u{01CE}'),
-    (0x1F100300, '\u{1F12}'),
-    (0x4380300, '\u{045D}'),
-    (0x480323, '\u{1E24}'),
-    (0x1B111B35, '\u{1B12}'),
-    (0x430301, '\u{0106}'),
-    (0x540323, '\u{1E6C}'),
-    (0x490303, '\u{0128}'),
-    (0x1EA10302, '\u{1EAD}'),
-    (0x4350308, '\u{0451}'),
-    (0x610307, '\u{0227}'),
-    (0x1F000300, '\u{1F02}'),
-    (0x6D0307, '\u{1E41}'),
-    (0x760303, '\u{1E7D}'),
-    (0x730327, '\u{015F}'),
-    (0x470304, '\u{1E20}'),
-    (0x470306, '\u{011E}'),
-    (0x1F6D0345, '\u{1FAD}'),
-    (0x6F0303, '\u{00F5}'),
-    (0x6B0331, '\u{1E35}'),
-    (0x720331, '\u{1E5F}'),
-    (0x1B00300, '\u{1EEB}'),
-    (0x1B0B1B35, '\u{1B0C}'),
-    (0x55032D, '\u{1E76}'),
-    (0x61030A, '\u{00E5}'),
-    (0x30463099, '\u{3094}'),
-    (0x1B3A1B35, '\u{1B3B}'),
-    (0x55030A, '\u{016E}'),
-    (0x928093C, '\u{0929}'),
-    (0x3C90313, '\u{1F60}'),
-    (0x650330, '\u{1E1B}'),
-    (0x590303, '\u{1EF8}'),
-    (0x450330, '\u{1E1A}'),
-    (0x640331, '\u{1E0F}'),
-    (0x3B90308, '\u{03CA}'),
-    (0x309D3099, '\u{309E}'),
-    (0x443030B, '\u{04F3}'),
-    (0xB470B3E, '\u{0B4B}'),
-    (0x6F030F, '\u{020D}'),
-    (0x6E0323, '\u{1E47}'),
-    (0x690308, '\u{00EF}'),
-    (0x65032D, '\u{1E19}'),
-    (0x15A0307, '\u{1E64}'),
-    (0x1F180301, '\u{1F1C}'),
-    (0x1F090301, '\u{1F0D}'),
-    (0x1F270345, '\u{1F97}'),
-    (0x7A0302, '\u{1E91}'),
-    (0x590301, '\u{00DD}'),
-    (0x4C0331, '\u{1E3A}'),
-    (0x1F640345, '\u{1FA4}'),
-    (0x1EB90302, '\u{1EC7}'),
-    (0x1F240345, '\u{1F94}'),
-    (0x1130300, '\u{1E15}'),
-    (0x69030F, '\u{0209}'),
-    (0x740331, '\u{1E6F}'),
-    (0x1F480301, '\u{1F4C}'),
-    (0x7A0331, '\u{1E95}'),
-    (0x1F290345, '\u{1F99}'),
-    (0xD40301, '\u{1ED0}'),
-    (0xC40304, '\u{01DE}'),
-    (0x3970301, '\u{0389}'),
-    (0x72030C, '\u{0159}'),
-    (0x1F110301, '\u{1F15}'),
-    (0xF40309, '\u{1ED5}'),
-    (0x450327, '\u{0228}'),
-    (0x6F031B, '\u{01A1}'),
-    (0xC60304, '\u{01E2}'),
-    (0x3990308, '\u{03AA}'),
-    (0x3CE0345, '\u{1FF4}'),
-    (0x6D0301, '\u{1E3F}'),
-    (0x1030309, '\u{1EB3}'),
-    (0x6F0302, '\u{00F4}'),
-    (0x73030C, '\u{0161}'),
-    (0x750301, '\u{00FA}'),
-    (0x1F690301, '\u{1F6D}'),
-    (0x3A90301, '\u{038F}'),
-    (0x3D0338, '\u{2260}'),
-    (0x1FC60345, '\u{1FC7}'),
-    (0x770300, '\u{1E81}'),
-    (0x2280306, '\u{1E1C}'),
-    (0x6C0331, '\u{1E3B}'),
-    (0x30AD3099, '\u{30AE}'),
-    (0x1EB80302, '\u{1EC6}'),
-    (0x550302, '\u{00DB}'),
-    (0xDD90DCF, '\u{0DDC}'),
-    (0x3A50304, '\u{1FE9}'),
-    (0x3A90314, '\u{1F69}'),
-    (0x740327, '\u{0163}'),
-    (0x530326, '\u{0218}'),
-    (0x55030B, '\u{0170}'),
-    (0x306F309A, '\u{3071}'),
-    (0x6B0327, '\u{0137}'),
-    (0x750330, '\u{1E75}'),
-    (0x730301, '\u{015B}'),
-    (0x1F300342, '\u{1F36}'),
-    (0x470307, '\u{0120}'),
-    (0xCC60CD5, '\u{0CC7}'),
-    (0x1F690300, '\u{1F6B}'),
-    (0x1030301, '\u{1EAF}'),
-    (0x750311, '\u{0217}'),
-    (0x930093C, '\u{0931}'),
-    (0x30613099, '\u{3062}'),
-    (0x770323, '\u{1E89}'),
-    (0xF50301, '\u{1E4D}'),
-    (0xFC0300, '\u{01DC}'),
-    (0x49030F, '\u{0208}'),
-    (0x690302, '\u{00EE}'),
-    (0x1F230345, '\u{1F93}'),
-    (0xF40300, '\u{1ED3}'),
-    (0x44B0308, '\u{04F9}'),
-    (0x1F2E0345, '\u{1F9E}'),
-    (0x650300, '\u{00E8}'),
-    (0x490308, '\u{00CF}'),
-    (0x1F280301, '\u{1F2C}'),
-    (0x1F180300, '\u{1F1A}'),
-    (0x6270653, '\u{0622}'),
-    (0x1F200301, '\u{1F24}'),
-    (0x22030338, '\u{2204}'),
-    (0x790304, '\u{0233}'),
-    (0x1F390300, '\u{1F3B}'),
-    (0x610325, '\u{1E01}'),
-    (0x790309, '\u{1EF7}'),
-    (0x1AF0303, '\u{1EEE}'),
-    (0x6F0301, '\u{00F3}'),
-    (0x640323, '\u{1E0D}'),
-    (0x304F3099, '\u{3050}'),
-    (0x1F010345, '\u{1F81}'),
-    (0xCA0309, '\u{1EC2}'),
-    (0x3D20308, '\u{03D4}'),
-    (0x1F500301, '\u{1F54}'),
-    (0x1F010300, '\u{1F03}'),
-    (0x3A90345, '\u{1FFC}'),
-    (0x4270308, '\u{04F4}'),
-    (0x530302, '\u{015C}'),
-    (0x520301, '\u{0154}'),
-    (0x450306, '\u{0114}'),
-    (0x530323, '\u{1E62}'),
-    (0x670306, '\u{011F}'),
-    (0x22760338, '\u{2278}'),
-    (0x4350300, '\u{0450}'),
-    (0x30B53099, '\u{30B6}'),
-    (0x6F030B, '\u{0151}'),
-    (0x4180304, '\u{04E2}'),
-    (0x630307, '\u{010B}'),
-    (0x3D20301, '\u{03D3}'),
-    (0x227C0338, '\u{22E0}'),
-    (0x610304, '\u{0101}'),
-    (0xA80300, '\u{1FED}'),
-    (0x440331, '\u{1E0E}'),
-    (0x650311, '\u{0207}'),
-    (0xF80301, '\u{01FF}'),
-    (0x75030C, '\u{01D4}'),
-    (0x530327, '\u{015E}'),
-    (0x30573099, '\u{3058}'),
-    (0x3B70345, '\u{1FC3}'),
-    (0x69030C, '\u{01D0}'),
-    (0x6E0327, '\u{0146}'),
-    (0x780307, '\u{1E8B}'),
-    (0x1F000342, '\u{1F06}'),
-    (0x1B00303, '\u{1EEF}'),
-    (0x470327, '\u{0122}'),
-    (0xC20309, '\u{1EA8}'),
-    (0x6C032D, '\u{1E3D}'),
-    (0x304D3099, '\u{304E}'),
-    (0x690303, '\u{0129}'),
-    (0x1AF0323, '\u{1EF0}'),
-    (0x4F0302, '\u{00D4}'),
-    (0x1020301, '\u{1EAE}'),
-    (0x4470308, '\u{04F5}'),
-    (0x22A80338, '\u{22AD}'),
-    (0x3C50300, '\u{1F7A}'),
-    (0x3910313, '\u{1F08}'),
-    (0x64032D, '\u{1E13}'),
-    (0xCF0301, '\u{1E2E}'),
-    (0x61030F, '\u{0201}'),
-    (0x1EA10306, '\u{1EB7}'),
-    (0x790323, '\u{1EF5}'),
-    (0x21900338, '\u{219A}'),
-    (0x1F250345, '\u{1F95}'),
-    (0x4F0304, '\u{014C}'),
-    (0x4F0306, '\u{014E}'),
-    (0x30B33099, '\u{30B4}'),
-    (0x440327, '\u{1E10}'),
-    (0xB920BD7, '\u{0B94}'),
-    (0x550308, '\u{00DC}'),
-    (0x650323, '\u{1EB9}'),
-    (0x307B3099, '\u{307C}'),
-    (0x4F030C, '\u{01D1}'),
-    (0x670304, '\u{1E21}'),
-    (0x6A030C, '\u{01F0}'),
-    (0x550323, '\u{1EE4}'),
-    (0x1A10301, '\u{1EDB}'),
-    (0x590323, '\u{1EF4}'),
-    (0x410300, '\u{00C0}'),
-    (0x30B93099, '\u{30BA}'),
-    (0x4230308, '\u{04F0}'),
-    (0x530301, '\u{015A}'),
-    (0x30D8309A, '\u{30DA}'),
-    (0x750309, '\u{1EE7}'),
-    (0x550330, '\u{1E74}'),
-    (0x520327, '\u{0156}'),
-    (0x4370308, '\u{04DF}'),
-    (0xCA0300, '\u{1EC0}'),
-    (0x21940338, '\u{21AE}'),
-    (0x3B10306, '\u{1FB0}'),
-    (0x1F610342, '\u{1F67}'),
-    (0x223C0338, '\u{2241}'),
-    (0x30D23099, '\u{30D3}'),
-    (0x1F6B0345, '\u{1FAB}'),
-    (0x490307, '\u{0130}'),
-    (0x410323, '\u{1EA0}'),
-    (0x550309, '\u{1EE6}'),
-    (0x75030B, '\u{0171}'),
-    (0x30533099, '\u{3054}'),
-    (0x305D3099, '\u{305E}'),
-    (0x4C0323, '\u{1E36}'),
-    (0x2260304, '\u{01E0}'),
-    (0x475030F, '\u{0477}'),
-    (0x490328, '\u{012E}'),
-    (0x1F210300, '\u{1F23}'),
-    (0x1F610301, '\u{1F65}'),
-    (0x1F210342, '\u{1F27}'),
-    (0x670302, '\u{011D}'),
-    (0x4E0301, '\u{0143}'),
-    (0x4E0303, '\u{00D1}'),
-    (0x3990300, '\u{1FDA}'),
-    (0x3BF0301, '\u{03CC}'),
-    (0x4150300, '\u{0400}'),
-    (0x3C90314, '\u{1F61}'),
-    (0x22A20338, '\u{22AC}'),
-    (0x30DB3099, '\u{30DC}'),
-    (0x3A50314, '\u{1F59}'),
-    (0x52030F, '\u{0210}'),
-    (0x4E0323, '\u{1E46}'),
-    (0x1F0D0345, '\u{1F8D}'),
-    (0x1ECD0302, '\u{1ED9}'),
-    (0xFC030C, '\u{01DA}'),
-    (0xD60304, '\u{022A}'),
-    (0x1F000301, '\u{1F04}'),
-    (0x30CF3099, '\u{30D0}'),
-    (0x4350306, '\u{04D7}'),
-    (0x220B0338, '\u{220C}'),
-    (0x590300, '\u{1EF2}'),
-    (0x4170308, '\u{04DE}'),
-    (0x6E030C, '\u{0148}'),
-    (0x4C030C, '\u{013D}'),
-    (0x1690301, '\u{1E79}'),
-    (0x4100308, '\u{04D2}'),
-    (0x1A00301, '\u{1EDA}'),
-    (0x41030F, '\u{0200}'),
-    (0x720301, '\u{0155}'),
-    (0x450303, '\u{1EBC}'),
-    (0x1B0D1B35, '\u{1B0E}'),
-    (0x1120301, '\u{1E16}'),
-    (0x4A0302, '\u{0134}'),
-    (0x3BF0300, '\u{1F78}'),
-    (0x30593099, '\u{305A}'),
-    (0x4F030B, '\u{0150}'),
-    (0x610328, '\u{0105}'),
-    (0x30D83099, '\u{30D9}'),
-    (0x1F2B0345, '\u{1F9B}'),
-    (0x1F400301, '\u{1F44}'),
-    (0x65030F, '\u{0205}'),
-    (0x3AE0345, '\u{1FC4}'),
-    (0x1680301, '\u{1E78}'),
-    (0x740326, '\u{021B}'),
-    (0x3B90342, '\u{1FD6}'),
-    (0x1F6F0345, '\u{1FAF}'),
-    (0x3A50301, '\u{038E}'),
-    (0x1F090345, '\u{1F89}'),
-    (0x550300, '\u{00D9}'),
-    (0x41030C, '\u{01CD}'),
-    (0x430327, '\u{00C7}'),
-    (0x460307, '\u{1E1E}'),
-    (0x3B50301, '\u{03AD}'),
-    (0xD470D3E, '\u{0D4B}'),
-    (0x610311, '\u{0203}'),
-    (0xD50308, '\u{1E4E}'),
-    (0x3C90300, '\u{1F7C}'),
-    (0x4430306, '\u{045E}'),
-    (0x1FFE0301, '\u{1FDE}'),
-    (0x3990301, '\u{038A}'),
-    (0x790307, '\u{1E8F}'),
-    (0x1E5A0304, '\u{1E5C}'),
-    (0x75030F, '\u{0215}'),
-    (0x9C709BE, '\u{09CB}'),
-    (0x1B071B35, '\u{1B08}'),
-    (0x690330, '\u{1E2D}'),
-    (0x307B309A, '\u{307D}'),
-    (0x30C83099, '\u{30C9}'),
-    (0x22B30338, '\u{22EB}'),
-    (0x1B00301, '\u{1EE9}'),
-    (0x790300, '\u{1EF3}'),
-    (0x570307, '\u{1E86}'),
-    (0x690328, '\u{012F}'),
-    (0x5A0323, '\u{1E92}'),
-    (0x3C50342, '\u{1FE6}'),
-    (0x4F0309, '\u{1ECE}'),
-    (0x1F290342, '\u{1F2F}'),
-    (0x1A00300, '\u{1EDC}'),
-    (0x1F2A0345, '\u{1F9A}'),
-    (0x14D0301, '\u{1E53}'),
-    (0x21D00338, '\u{21CD}'),
-    (0x550328, '\u{0172}'),
-    (0x680331, '\u{1E96}'),
-    (0x68030C, '\u{021F}'),
-    (0x4C0301, '\u{0139}'),
-    (0x22860338, '\u{2288}'),
-    (0x39F0314, '\u{1F49}'),
-    (0x3A50306, '\u{1FE8}'),
-    (0xB470B56, '\u{0B48}'),
-    (0x30753099, '\u{3076}'),
-    (0x1E5B0304, '\u{1E5D}'),
-    (0x1F6A0345, '\u{1FAA}'),
-    (0x540327, '\u{0162}'),
-    (0x1020303, '\u{1EB4}'),
-    (0x39F0313, '\u{1F48}'),
-    (0x1F090342, '\u{1F0F}'),
-    (0x4100306, '\u{04D0}'),
-    (0x14D0300, '\u{1E51}'),
-    (0x4430304, '\u{04EF}'),
-    (0x21920338, '\u{219B}'),
-    (0x22610338, '\u{2262}'),
-    (0xF50304, '\u{022D}'),
-    (0x3B90313, '\u{1F30}'),
-    (0x6F0308, '\u{00F6}'),
-    (0x730307, '\u{1E61}'),
-    (0x75031B, '\u{01B0}'),
-    (0x30B73099, '\u{30B8}'),
-    (0x1E620307, '\u{1E68}'),
-    (0x410306, '\u{0102}'),
-    (0x3970314, '\u{1F29}'),
-    (0x630302, '\u{0109}'),
-    (0x6A0302, '\u{0135}'),
-    (0xE50301, '\u{01FB}'),
-    (0x730326, '\u{0219}'),
-    (0x1F740345, '\u{1FC2}'),
-    (0x650309, '\u{1EBB}'),
-    (0x5A030C, '\u{017D}'),
-    (0x22250338, '\u{2226}'),
-    (0x3A90313, '\u{1F68}'),
-    (0x720327, '\u{0157}'),
-    (0x1F090300, '\u{1F0B}'),
-    (0x4360308, '\u{04DD}'),
-    (0x1F080345, '\u{1F88}'),
-    (0x620331, '\u{1E07}'),
-    (0x22730338, '\u{2275}'),
-    (0x560323, '\u{1E7E}'),
-    (0x4F0323, '\u{1ECC}'),
-    (0x22E0304, '\u{0230}'),
-    (0x6D50654, '\u{06C0}'),
-    (0x3B10313, '\u{1F00}'),
-    (0x4F0303, '\u{00D5}'),
-    (0x1F010301, '\u{1F05}'),
-    (0x650304, '\u{0113}'),
-    (0x450323, '\u{1EB8}'),
-    (0xBC60BBE, '\u{0BCA}'),
-    (0x22650338, '\u{2271}'),
-    (0x3910314, '\u{1F09}'),
-    (0x1120300, '\u{1E14}'),
-    (0x4E0307, '\u{1E44}'),
-    (0x680308, '\u{1E27}'),
-    (0x4F0311, '\u{020E}'),
-    (0x550303, '\u{0168}'),
-    (0x3A10314, '\u{1FEC}'),
-    (0x3B10301, '\u{03AC}'),
-    (0x55030F, '\u{0214}'),
-    (0x3E0338, '\u{226F}'),
-    (0x1610307, '\u{1E67}'),
-    (0x1F040345, '\u{1F84}'),
-    (0x450300, '\u{00C8}'),
-    (0x1B091B35, '\u{1B0A}'),
-    (0x30FD3099, '\u{30FE}'),
-    (0x1F680301, '\u{1F6C}'),
-    (0x650303, '\u{1EBD}'),
-    (0x3B90304, '\u{1FD1}'),
-    (0x9C709D7, '\u{09CC}'),
-    (0x42B0308, '\u{04F8}'),
-    (0x4E0327, '\u{0145}'),
-    (0x1F630345, '\u{1FA3}'),
-    (0x4380306, '\u{0439}'),
-    (0x3B10314, '\u{1F01}'),
-    (0x540326, '\u{021A}'),
-    (0x740307, '\u{1E6B}'),
-    (0x3C90301, '\u{03CE}'),
-    (0x3990314, '\u{1F39}'),
-    (0x30B13099, '\u{30B2}'),
-    (0x750302, '\u{00FB}'),
-    (0xCC60CD6, '\u{0CC8}'),
-    (0x30BD3099, '\u{30BE}'),
-    (0x6E0300, '\u{01F9}'),
-    (0x1F390342, '\u{1F3F}'),
-    (0x2270304, '\u{01E1}'),
-    (0x22080338, '\u{2209}'),
-    (0x4180306, '\u{0419}'),
-    (0x44030C, '\u{010E}'),
-    (0x75030A, '\u{016F}'),
-    (0x6270654, '\u{0623}'),
-    (0x750306, '\u{016D}'),
-    (0x3B70300, '\u{1F74}'),
-    (0x1F660345, '\u{1FA6}'),
-    (0x1F690345, '\u{1FA9}'),
-    (0x15B0307, '\u{1E65}'),
-    (0x1F280342, '\u{1F2E}'),
-    (0x1F700345, '\u{1FB2}'),
-    (0x1F0F0345, '\u{1F8F}'),
-    (0x540331, '\u{1E6E}'),
-    (0x227B0338, '\u{2281}'),
-    (0x22870338, '\u{2289}'),
-    (0x1F010342, '\u{1F07}'),
-    (0x3A50308, '\u{03AB}'),
-    (0x1F650345, '\u{1FA5}'),
-    (0xD40300, '\u{1ED2}'),
-    (0xF60304, '\u{022B}'),
-    (0xCBF0CD5, '\u{0CC0}'),
-    (0x1F380342, '\u{1F3E}'),
-    (0x22B20338, '\u{22EA}'),
-    (0x72030F, '\u{0211}'),
-    (0x30BF3099, '\u{30C0}'),
-    (0x4E90308, '\u{04EB}'),
-    (0x22830338, '\u{2285}'),
-    (0x3CB0300, '\u{1FE2}'),
-    (0xCA0301, '\u{1EBE}'),
-    (0x590304, '\u{0232}'),
-    (0x690301, '\u{00ED}'),
-    (0x305F3099, '\u{3060}'),
-    (0x440307, '\u{1E0A}'),
-    (0x1ECC0302, '\u{1ED8}'),
-    (0x1F210345, '\u{1F91}'),
-    (0x410311, '\u{0202}'),
-    (0x720311, '\u{0213}'),
-    (0x3A50300, '\u{1FEA}'),
-    (0x1F590300, '\u{1F5B}'),
-    (0xE40304, '\u{01DF}'),
-    (0x1F500300, '\u{1F52}'),
-    (0x224D0338, '\u{226D}'),
-    (0x6E0301, '\u{0144}'),
-    (0x75032D, '\u{1E77}'),
-    (0xF40301, '\u{1ED1}'),
-    (0x3C90342, '\u{1FF6}'),
-    (0x3B70301, '\u{03AE}'),
-    (0x6E0307, '\u{1E45}'),
-    (0x410304, '\u{0100}'),
-    (0x1F190301, '\u{1F1D}'),
-    (0x3B10304, '\u{1FB1}'),
-    (0x3078309A, '\u{307A}'),
-    (0x570323, '\u{1E88}'),
-    (0x4430308, '\u{04F1}'),
-    (0x45032D, '\u{1E18}'),
-    (0x4150308, '\u{0401}'),
-    (0x4F0328, '\u{01EA}'),
-    (0x4D90308, '\u{04DB}'),
-    (0x4060308, '\u{0407}'),
-    (0xF40303, '\u{1ED7}'),
-    (0x3B90306, '\u{1FD0}'),
-    (0x650307, '\u{0117}'),
-    (0x1F680342, '\u{1F6E}'),
-    (0x4380304, '\u{04E3}'),
-    (0x1F410300, '\u{1F43}'),
-    (0x1FFE0300, '\u{1FDD}'),
-    (0x4F0301, '\u{00D3}'),
-    (0x640327, '\u{1E11}'),
-    (0x2290306, '\u{1E1D}'),
-    (0x7A0301, '\u{017A}'),
-    (0x620323, '\u{1E05}'),
-    (0x1F7C0345, '\u{1FF2}'),
-    (0x1B00323, '\u{1EF1}'),
-    (0x1F600301, '\u{1F64}'),
-    (0x30663099, '\u{3067}'),
-    (0x22640338, '\u{2270}'),
-    (0x1F310300, '\u{1F33}'),
-    (0x610323, '\u{1EA1}'),
-    (0x1F480300, '\u{1F4A}'),
-    (0x550301, '\u{00DA}'),
-    (0xC460C56, '\u{0C48}'),
-    (0x3CA0300, '\u{1FD2}'),
-    (0x1B7030C, '\u{01EE}'),
-    (0x720323, '\u{1E5B}'),
-    (0x1F200342, '\u{1F26}'),
-    (0x4300308, '\u{04D3}'),
-    (0x22820338, '\u{2284}'),
-    (0x1F590301, '\u{1F5D}'),
-    (0x1F080342, '\u{1F0E}'),
-    (0x440323, '\u{1E0C}'),
-    (0x1025102E, '\u{1026}'),
-    (0x3910304, '\u{1FB9}'),
-    (0x4B0331, '\u{1E34}'),
-    (0x690300, '\u{00EC}'),
-    (0x48032E, '\u{1E2A}'),
-    (0x630301, '\u{0107}'),
-    (0x1F690342, '\u{1F6F}'),
-    (0x3B50313, '\u{1F10}'),
-    (0x30CF309A, '\u{30D1}'),
-    (0x4E030C, '\u{0147}'),
-    (0xB470B57, '\u{0B4C}'),
-    (0x3910301, '\u{0386}'),
-    (0x650328, '\u{0119}'),
-    (0x1FBF0300, '\u{1FCD}'),
-    (0x3B70342, '\u{1FC6}'),
-    (0x450307, '\u{0116}'),
-    (0x1F380301, '\u{1F3C}'),
-    (0x3075309A, '\u{3077}'),
-    (0x4B0301, '\u{1E30}'),
-    (0x1030300, '\u{1EB1}'),
-    (0xE20303, '\u{1EAB}'),
-    (0x410302, '\u{00C2}'),
-    (0x650308, '\u{00EB}'),
-    (0x580307, '\u{1E8A}'),
-    (0x54030C, '\u{0164}'),
-    (0x3C50313, '\u{1F50}'),
-    (0x3B50314, '\u{1F11}'),
-    (0x1B3E1B35, '\u{1B40}'),
-    (0x1F100301, '\u{1F14}'),
-    (0x3072309A, '\u{3074}'),
-    (0x1F280345, '\u{1F98}'),
-    (0x22770338, '\u{2279}'),
-    (0x227A0338, '\u{2280}'),
-    (0x470302, '\u{011C}'),
-    (0x450308, '\u{00CB}'),
-    (0x550324, '\u{1E72}'),
-    (0x1F2C0345, '\u{1F9C}'),
-    (0x4B0327, '\u{0136}'),
-    (0x490302, '\u{00CE}'),
-    (0x680302, '\u{0125}'),
-    (0x520307, '\u{1E58}'),
-    (0x610301, '\u{00E1}'),
-    (0x4B030C, '\u{01E8}'),
-    (0x490309, '\u{1EC8}'),
-    (0x6C030C, '\u{013E}'),
-    (0x4D0307, '\u{1E40}'),
-    (0x1E360304, '\u{1E38}'),
-    (0x3C50304, '\u{1FE1}'),
-    (0x79030A, '\u{1E99}'),
-    (0x3970313, '\u{1F28}'),
-    (0x54032D, '\u{1E70}'),
-    (0x1F490300, '\u{1F4B}'),
-    (0x1B421B35, '\u{1B43}'),
-    (0x3B70313, '\u{1F20}'),
-    (0xEF0301, '\u{1E2F}'),
-    (0xE70301, '\u{1E09}'),
-    (0x16A0308, '\u{1E7A}'),
-    (0xCA0303, '\u{1EC4}'),
-    (0x3B10300, '\u{1F70}'),
-    (0x6D20654, '\u{06D3}'),
-    (0x30D53099, '\u{30D6}'),
-    (0x1F2F0345, '\u{1F9F}'),
-    (0x3B50300, '\u{1F72}'),
-    (0x750324, '\u{1E73}'),
-    (0x4150306, '\u{04D6}'),
-    (0x65030C, '\u{011B}'),
-    (0x570302, '\u{0174}'),
-    (0x1EA00306, '\u{1EB6}'),
-    (0x1F070345, '\u{1F87}'),
-    (0xA80301, '\u{0385}'),
-    (0x790302, '\u{0177}'),
-    (0x6E032D, '\u{1E4B}'),
-    (0x6F030C, '\u{01D2}'),
-    (0x3C90345, '\u{1FF3}'),
-    (0x430302, '\u{0108}'),
-    (0x790303, '\u{1EF9}'),
-    (0x740323, '\u{1E6D}'),
-    (0xE20309, '\u{1EA9}'),
-    (0x1F300300, '\u{1F32}'),
-    (0x6B0301, '\u{1E31}'),
-    (0x22920338, '\u{22E3}'),
-    (0x3950314, '\u{1F19}'),
-    (0x1F290301, '\u{1F2D}'),
-    (0x450328, '\u{0118}'),
-    (0x1FB60345, '\u{1FB7}'),
-    (0xD50304, '\u{022C}'),
-    (0x4300306, '\u{04D1}'),
-    (0xF50308, '\u{1E4F}'),
-    (0x1EA00302, '\u{1EAC}'),
-    (0x1F680300, '\u{1F6A}'),
-    (0x3970300, '\u{1FCA}'),
-    (0x450301, '\u{00C9}'),
-    (0x690304, '\u{012B}'),
-    (0xBC60BD7, '\u{0BCC}'),
-    (0x6F0304, '\u{014D}'),
-    (0x4F0308, '\u{00D6}'),
-    (0xBC70BBE, '\u{0BCB}'),
-    (0x55030C, '\u{01D3}'),
-    (0x3AC0345, '\u{1FB4}'),
-    (0x1FBF0342, '\u{1FCF}'),
-    (0x30D2309A, '\u{30D4}'),
-    (0x660307, '\u{1E1F}'),
-    (0x4E0300, '\u{01F8}'),
-    (0x790308, '\u{00FF}'),
-    (0x68032E, '\u{1E2B}'),
-    (0x64030C, '\u{010F}'),
-    (0x4F0307, '\u{022E}'),
-    (0x1F590342, '\u{1F5F}'),
-    (0x30AF3099, '\u{30B0}'),
-    (0xE60304, '\u{01E3}'),
-    (0x3C50301, '\u{03CD}'),
-    (0x770308, '\u{1E85}'),
-    (0x3B90314, '\u{1F31}'),
-    (0x750323, '\u{1EE5}'),
-    (0x590309, '\u{1EF6}'),
-    (0x292030C, '\u{01EF}'),
-    (0x550306, '\u{016C}'),
-    (0xE60301, '\u{01FD}'),
-    (0x16B0308, '\u{1E7B}'),
-    (0x4F030F, '\u{020C}'),
-    (0x3BF0313, '\u{1F40}'),
-    (0xD80301, '\u{01FE}'),
-    (0xC20303, '\u{1EAA}'),
-    (0x1F510300, '\u{1F53}'),
-    (0x1B00309, '\u{1EED}'),
-    (0x4E032D, '\u{1E4A}'),
-    (0x6F0309, '\u{1ECF}'),
-    (0x4180300, '\u{040D}'),
-    (0x22A90338, '\u{22AE}'),
-    (0x1F680345, '\u{1FA8}'),
-    (0x1B3C1B35, '\u{1B3D}'),
-    (0x1F400300, '\u{1F42}'),
-    (0x1F0B0345, '\u{1F8B}'),
-    (0x3C50306, '\u{1FE0}'),
-    (0x44032D, '\u{1E12}'),
-    (0xCCA0CD5, '\u{0CCB}'),
-    (0xEA0303, '\u{1EC5}'),
-    (0x4230306, '\u{040E}'),
-    (0xC70301, '\u{1E08}'),
-    (0x7A030C, '\u{017E}'),
-    (0x670307, '\u{0121}'),
-    (0x450311, '\u{0206}'),
-    (0x6F0300, '\u{00F2}'),
-    (0x30BB3099, '\u{30BC}'),
-    (0x4180308, '\u{04E4}'),
-    (0x30513099, '\u{3052}'),
-    (0x6C0323, '\u{1E37}'),
-    (0x3B70314, '\u{1F21}'),
-    (0x77030A, '\u{1E98}'),
-    (0x690323, '\u{1ECB}'),
-    (0x610303, '\u{00E3}'),
-    (0x30F13099, '\u{30F9}'),
-    (0x3B10345, '\u{1FB3}'),
-    (0xD460D3E, '\u{0D4A}'),
-    (0x3B90300, '\u{1F76}'),
-    (0x21D40338, '\u{21CE}'),
-    (0x1F620345, '\u{1FA2}'),
-    (0x770302, '\u{0175}'),
-    (0xFC0304, '\u{01D6}'),
-    (0x1130301, '\u{1E17}'),
-    (0x30683099, '\u{3069}'),
-    (0x1F600342, '\u{1F66}'),
-    (0x680323, '\u{1E25}'),
-    (0x3950313, '\u{1F18}'),
-    (0xEA0300, '\u{1EC1}'),
-    (0x3CB0342, '\u{1FE7}'),
-    (0x22430338, '\u{2244}'),
-    (0x30783099, '\u{3079}'),
-    (0x3990313, '\u{1F38}'),
-    (0x490330, '\u{1E2C}'),
-    (0x770307, '\u{1E87}'),
-    (0x650301, '\u{00E9}'),
-    (0x680327, '\u{1E29}'),
-    (0x22B50338, '\u{22ED}'),
-    (0x3B10342, '\u{1FB6}'),
-    (0x3910306, '\u{1FB8}'),
-    (0x4D0301, '\u{1E3E}'),
-    (0x410309, '\u{1EA2}'),
-    (0x1B051B35, '\u{1B06}'),
-    (0x3C0338, '\u{226E}'),
-    (0x590308, '\u{0178}'),
-    (0x1030303, '\u{1EB5}'),
-    (0x480327, '\u{1E28}'),
-    (0x6D0323, '\u{1E43}'),
-    (0x30643099, '\u{3065}'),
-    (0x4560308, '\u{0457}'),
-    (0x590302, '\u{0176}'),
-    (0x6C10654, '\u{06C2}'),
-    (0x43A0301, '\u{045C}'),
-    (0xE20300, '\u{1EA7}'),
-    (0x3950301, '\u{0388}'),
-    (0x630327, '\u{00E7}'),
-    (0x17F0307, '\u{1E9B}'),
-    (0x6480654, '\u{0624}'),
-    (0x30AB3099, '\u{30AC}'),
-    (0x1A00323, '\u{1EE2}'),
-    (0x4D80308, '\u{04DA}'),
-    (0x5A0331, '\u{1E94}'),
-    (0x67030C, '\u{01E7}'),
-    (0x39F0300, '\u{1FF8}'),
-    (0x650327, '\u{0229}'),
-    (0x490323, '\u{1ECA}'),
-    (0x1F110300, '\u{1F13}'),
-    (0x1F510342, '\u{1F57}'),
-    (0x4D0323, '\u{1E42}'),
-    (0x1F300301, '\u{1F34}'),
-    (0x6C0327, '\u{013C}'),
-    (0x1F050345, '\u{1F85}'),
-    (0x1A10300, '\u{1EDD}'),
-    (0x4160308, '\u{04DC}'),
-    (0x640307, '\u{1E0B}'),
-    (0x4C032D, '\u{1E3C}'),
-    (0x3C10314, '\u{1FE5}'),
-    (0x1EA0304, '\u{01EC}'),
-    (0x1F080300, '\u{1F0A}'),
-    (0x650302, '\u{00EA}'),
-    (0x3910300, '\u{1FBA}'),
-    (0x700301, '\u{1E55}'),
-    (0x1F020345, '\u{1F82}'),
-    (0x1020309, '\u{1EB2}'),
-    (0x750303, '\u{0169}'),
-    (0x1F0C0345, '\u{1F8C}'),
-    (0x3CB0301, '\u{03B0}'),
-    (0x740308, '\u{1E97}'),
-    (0x3950300, '\u{1FC8}'),
-    (0x227D0338, '\u{22E1}'),
-    (0x7A0323, '\u{1E93}'),
-    (0x6F0311, '\u{020F}'),
-    (0x6F0328, '\u{01EB}'),
-    (0x1F200300, '\u{1F22}'),
-    (0x1F190300, '\u{1F1B}'),
-    (0x560303, '\u{1E7C}'),
-    (0x6B030C, '\u{01E9}'),
-    (0x4E80308, '\u{04EA}'),
-    (0x3A90300, '\u{1FFA}'),
-    (0xA80342, '\u{1FC1}'),
-    (0x4360306, '\u{04C2}'),
-    (0xDC0301, '\u{01D7}'),
-    (0x750304, '\u{016B}'),
-    (0x22450338, '\u{2247}'),
-    (0x490304, '\u{012A}'),
-    (0x4380308, '\u{04E5}'),
-    (0xD460D57, '\u{0D4C}'),
-    (0x750300, '\u{00F9}'),
-    (0x22B40338, '\u{22EC}'),
-    (0x750308, '\u{00FC}'),
-    (0x3C50314, '\u{1F51}'),
-    (0x1600307, '\u{1E66}'),
-    (0x4160306, '\u{04C1}'),
-    (0x55031B, '\u{01AF}'),
-    (0x22AB0338, '\u{22AF}'),
-    (0x14C0300, '\u{1E50}'),
-    (0x1F310342, '\u{1F37}'),
-    (0x1F260345, '\u{1F96}'),
-    (0x22910338, '\u{22E2}'),
-    (0x500301, '\u{1E54}'),
-    (0x4C0327, '\u{013B}'),
-    (0x5A0301, '\u{0179}'),
-    (0x420307, '\u{1E02}'),
-    (0x3C10313, '\u{1FE4}'),
-    (0x1F410301, '\u{1F45}'),
-    (0x500307, '\u{1E56}'),
-    (0x43030C, '\u{010C}'),
-    (0x730323, '\u{1E63}'),
-    (0x30553099, '\u{3056}'),
-    (0x306F3099, '\u{3070}'),
-    (0x44D0308, '\u{04ED}'),
-    (0x1F670345, '\u{1FA7}'),
-    (0x1AF0301, '\u{1EE8}'),
-    (0x1F290300, '\u{1F2B}'),
-    (0x1B3F1B35, '\u{1B41}'),
-    (0x450302, '\u{00CA}'),
-    (0x6F0306, '\u{014F}'),
-    (0xFC0301, '\u{01D8}'),
-    (0x30F23099, '\u{30FA}'),
-    (0x1F2D0345, '\u{1F9D}'),
-    (0x14C0301, '\u{1E52}'),
-    (0x610308, '\u{00E4}'),
-    (0x1F600345, '\u{1FA0}'),
-    (0x1F0A0345, '\u{1F8A}'),
-    (0x610306, '\u{0103}'),
-    (0x1F600300, '\u{1F62}'),
-    (0x1AF0300, '\u{1EEA}'),
-    (0x43E0308, '\u{04E7}'),
-    (0x22230338, '\u{2224}'),
-    (0x3CA0301, '\u{0390}'),
-    (0x30D5309A, '\u{30D7}'),
-    (0x1F220345, '\u{1F92}'),
-    (0xD50301, '\u{1E4C}'),
-    (0x1F6C0345, '\u{1FAC}'),
-    (0x540307, '\u{1E6A}'),
-    (0x1E370304, '\u{1E39}'),
-    (0xDD90DCA, '\u{0DDA}'),
-    (0x1A10303, '\u{1EE1}'),
-    (0x48030C, '\u{021E}'),
-    (0xEA0309, '\u{1EC3}'),
-    (0x52030C, '\u{0158}'),
-    (0xD40303, '\u{1ED6}'),
-    (0x45030C, '\u{011A}'),
-    (0x30EF3099, '\u{30F7}'),
-    (0x480302, '\u{0124}'),
-    (0x520323, '\u{1E5A}'),
-    (0xC20300, '\u{1EA6}'),
-    (0x74032D, '\u{1E71}'),
-    (0x42D0308, '\u{04EC}'),
-    (0xDD90DDF, '\u{0DDE}'),
-    (0x410308, '\u{00C4}'),
-    (0x474030F, '\u{0476}'),
-    (0xC60301, '\u{01FC}'),
-    (0x1F310301, '\u{1F35}'),
-    (0x1F610300, '\u{1F63}'),
-    (0xCC60CC2, '\u{0CCA}'),
-    (0xC20301, '\u{1EA4}'),
-    (0x3C50308, '\u{03CB}'),
-    (0xE20301, '\u{1EA5}'),
-    (0x1F500342, '\u{1F56}'),
-    (0x610300, '\u{00E0}'),
-    (0x490311, '\u{020A}'),
-    (0x670327, '\u{0123}'),
-    (0x590307, '\u{1E8E}'),
-    (0x3970345, '\u{1FCC}'),
-    (0xD40309, '\u{1ED4}'),
-    (0x1A00303, '\u{1EE0}'),
-    (0x1FFE0342, '\u{1FDF}'),
-    (0x41A0301, '\u{040C}'),
-    (0x74030C, '\u{0165}'),
-    (0xDC0300, '\u{01DB}'),
-    (0x780308, '\u{1E8D}'),
-    (0xDC0304, '\u{01D5}'),
-    (0x610302, '\u{00E2}'),
-    (0x5A0302, '\u{1E90}'),
-    (0x933093C, '\u{0934}'),
-    (0x4F031B, '\u{01A0}'),
-    (0x520311, '\u{0212}'),
-    (0x6E0303, '\u{00F1}'),
-    (0x45030F, '\u{0204}'),
-    (0x1AF0309, '\u{1EEC}'),
-    (0x450304, '\u{0112}'),
-    (0x1F210301, '\u{1F25}'),
-    (0x22F0304, '\u{0231}'),
-    (0x3990306, '\u{1FD8}'),
-    (0x4E0331, '\u{1E48}'),
-    (0x1F380300, '\u{1F3A}'),
-    (0x490306, '\u{012C}'),
-    (0x690306, '\u{012D}'),
-    (0x1F060345, '\u{1F86}'),
-    (0x490301, '\u{00CD}'),
-    (0x570300, '\u{1E80}'),
-    (0x30F03099, '\u{30F8}'),
-    (0x53030C, '\u{0160}'),
-    (0x490300, '\u{00CC}'),
-    (0x30723099, '\u{3073}'),
-    (0x1F280300, '\u{1F2A}'),
-    (0x480307, '\u{1E22}'),
-    (0x1A00309, '\u{1EDE}'),
-    (0x1EB0304, '\u{01ED}'),
-    (0x1E630307, '\u{1E69}'),
-    (0x6F0323, '\u{1ECD}'),
-    (0x410303, '\u{00C3}'),
-    (0x3910345, '\u{1FBC}'),
-    (0x410328, '\u{0104}'),
-    (0x680307, '\u{1E23}'),
-    (0x6E0331, '\u{1E49}'),
-    (0xDDC0DCA, '\u{0DDD}'),
-    (0x580308, '\u{1E8C}'),
-    (0x410301, '\u{00C1}'),
-    (0x30C43099, '\u{30C5}'),
-    (0x420323, '\u{1E04}'),
-    (0x730302, '\u{015D}'),
-];
-
-pub(crate) fn composition_table_astral(c1: char, c2: char) -> Option<char> {
-    match (c1, c2) {
-        ('\u{11099}', '\u{110BA}') => Some('\u{1109A}'),
-        ('\u{1109B}', '\u{110BA}') => Some('\u{1109C}'),
-        ('\u{110A5}', '\u{110BA}') => Some('\u{110AB}'),
-        ('\u{11131}', '\u{11127}') => Some('\u{1112E}'),
-        ('\u{11132}', '\u{11127}') => Some('\u{1112F}'),
-        ('\u{11347}', '\u{1133E}') => Some('\u{1134B}'),
-        ('\u{11347}', '\u{11357}') => Some('\u{1134C}'),
-        ('\u{114B9}', '\u{114B0}') => Some('\u{114BC}'),
-        ('\u{114B9}', '\u{114BA}') => Some('\u{114BB}'),
-        ('\u{114B9}', '\u{114BD}') => Some('\u{114BE}'),
-        ('\u{115B8}', '\u{115AF}') => Some('\u{115BA}'),
-        ('\u{115B9}', '\u{115AF}') => Some('\u{115BB}'),
-        ('\u{11935}', '\u{11930}') => Some('\u{11938}'),
-        _ => None,
-    }
-}
-
-pub(crate) const CANONICAL_DECOMPOSED_CHARS: &[char] = &[
-    '\u{0041}',
-    '\u{0300}',
-    '\u{0041}',
-    '\u{0301}',
-    '\u{0041}',
-    '\u{0302}',
-    '\u{0041}',
-    '\u{0303}',
-    '\u{0041}',
-    '\u{0308}',
-    '\u{0041}',
-    '\u{030A}',
-    '\u{0043}',
-    '\u{0327}',
-    '\u{0045}',
-    '\u{0300}',
-    '\u{0045}',
-    '\u{0301}',
-    '\u{0045}',
-    '\u{0302}',
-    '\u{0045}',
-    '\u{0308}',
-    '\u{0049}',
-    '\u{0300}',
-    '\u{0049}',
-    '\u{0301}',
-    '\u{0049}',
-    '\u{0302}',
-    '\u{0049}',
-    '\u{0308}',
-    '\u{004E}',
-    '\u{0303}',
-    '\u{004F}',
-    '\u{0300}',
-    '\u{004F}',
-    '\u{0301}',
-    '\u{004F}',
-    '\u{0302}',
-    '\u{004F}',
-    '\u{0303}',
-    '\u{004F}',
-    '\u{0308}',
-    '\u{0055}',
-    '\u{0300}',
-    '\u{0055}',
-    '\u{0301}',
-    '\u{0055}',
-    '\u{0302}',
-    '\u{0055}',
-    '\u{0308}',
-    '\u{0059}',
-    '\u{0301}',
-    '\u{0061}',
-    '\u{0300}',
-    '\u{0061}',
-    '\u{0301}',
-    '\u{0061}',
-    '\u{0302}',
-    '\u{0061}',
-    '\u{0303}',
-    '\u{0061}',
-    '\u{0308}',
-    '\u{0061}',
-    '\u{030A}',
-    '\u{0063}',
-    '\u{0327}',
-    '\u{0065}',
-    '\u{0300}',
-    '\u{0065}',
-    '\u{0301}',
-    '\u{0065}',
-    '\u{0302}',
-    '\u{0065}',
-    '\u{0308}',
-    '\u{0069}',
-    '\u{0300}',
-    '\u{0069}',
-    '\u{0301}',
-    '\u{0069}',
-    '\u{0302}',
-    '\u{0069}',
-    '\u{0308}',
-    '\u{006E}',
-    '\u{0303}',
-    '\u{006F}',
-    '\u{0300}',
-    '\u{006F}',
-    '\u{0301}',
-    '\u{006F}',
-    '\u{0302}',
-    '\u{006F}',
-    '\u{0303}',
-    '\u{006F}',
-    '\u{0308}',
-    '\u{0075}',
-    '\u{0300}',
-    '\u{0075}',
-    '\u{0301}',
-    '\u{0075}',
-    '\u{0302}',
-    '\u{0075}',
-    '\u{0308}',
-    '\u{0079}',
-    '\u{0301}',
-    '\u{0079}',
-    '\u{0308}',
-    '\u{0041}',
-    '\u{0304}',
-    '\u{0061}',
-    '\u{0304}',
-    '\u{0041}',
-    '\u{0306}',
-    '\u{0061}',
-    '\u{0306}',
-    '\u{0041}',
-    '\u{0328}',
-    '\u{0061}',
-    '\u{0328}',
-    '\u{0043}',
-    '\u{0301}',
-    '\u{0063}',
-    '\u{0301}',
-    '\u{0043}',
-    '\u{0302}',
-    '\u{0063}',
-    '\u{0302}',
-    '\u{0043}',
-    '\u{0307}',
-    '\u{0063}',
-    '\u{0307}',
-    '\u{0043}',
-    '\u{030C}',
-    '\u{0063}',
-    '\u{030C}',
-    '\u{0044}',
-    '\u{030C}',
-    '\u{0064}',
-    '\u{030C}',
-    '\u{0045}',
-    '\u{0304}',
-    '\u{0065}',
-    '\u{0304}',
-    '\u{0045}',
-    '\u{0306}',
-    '\u{0065}',
-    '\u{0306}',
-    '\u{0045}',
-    '\u{0307}',
-    '\u{0065}',
-    '\u{0307}',
-    '\u{0045}',
-    '\u{0328}',
-    '\u{0065}',
-    '\u{0328}',
-    '\u{0045}',
-    '\u{030C}',
-    '\u{0065}',
-    '\u{030C}',
-    '\u{0047}',
-    '\u{0302}',
-    '\u{0067}',
-    '\u{0302}',
-    '\u{0047}',
-    '\u{0306}',
-    '\u{0067}',
-    '\u{0306}',
-    '\u{0047}',
-    '\u{0307}',
-    '\u{0067}',
-    '\u{0307}',
-    '\u{0047}',
-    '\u{0327}',
-    '\u{0067}',
-    '\u{0327}',
-    '\u{0048}',
-    '\u{0302}',
-    '\u{0068}',
-    '\u{0302}',
-    '\u{0049}',
-    '\u{0303}',
-    '\u{0069}',
-    '\u{0303}',
-    '\u{0049}',
-    '\u{0304}',
-    '\u{0069}',
-    '\u{0304}',
-    '\u{0049}',
-    '\u{0306}',
-    '\u{0069}',
-    '\u{0306}',
-    '\u{0049}',
-    '\u{0328}',
-    '\u{0069}',
-    '\u{0328}',
-    '\u{0049}',
-    '\u{0307}',
-    '\u{004A}',
-    '\u{0302}',
-    '\u{006A}',
-    '\u{0302}',
-    '\u{004B}',
-    '\u{0327}',
-    '\u{006B}',
-    '\u{0327}',
-    '\u{004C}',
-    '\u{0301}',
-    '\u{006C}',
-    '\u{0301}',
-    '\u{004C}',
-    '\u{0327}',
-    '\u{006C}',
-    '\u{0327}',
-    '\u{004C}',
-    '\u{030C}',
-    '\u{006C}',
-    '\u{030C}',
-    '\u{004E}',
-    '\u{0301}',
-    '\u{006E}',
-    '\u{0301}',
-    '\u{004E}',
-    '\u{0327}',
-    '\u{006E}',
-    '\u{0327}',
-    '\u{004E}',
-    '\u{030C}',
-    '\u{006E}',
-    '\u{030C}',
-    '\u{004F}',
-    '\u{0304}',
-    '\u{006F}',
-    '\u{0304}',
-    '\u{004F}',
-    '\u{0306}',
-    '\u{006F}',
-    '\u{0306}',
-    '\u{004F}',
-    '\u{030B}',
-    '\u{006F}',
-    '\u{030B}',
-    '\u{0052}',
-    '\u{0301}',
-    '\u{0072}',
-    '\u{0301}',
-    '\u{0052}',
-    '\u{0327}',
-    '\u{0072}',
-    '\u{0327}',
-    '\u{0052}',
-    '\u{030C}',
-    '\u{0072}',
-    '\u{030C}',
-    '\u{0053}',
-    '\u{0301}',
-    '\u{0073}',
-    '\u{0301}',
-    '\u{0053}',
-    '\u{0302}',
-    '\u{0073}',
-    '\u{0302}',
-    '\u{0053}',
-    '\u{0327}',
-    '\u{0073}',
-    '\u{0327}',
-    '\u{0053}',
-    '\u{030C}',
-    '\u{0073}',
-    '\u{030C}',
-    '\u{0054}',
-    '\u{0327}',
-    '\u{0074}',
-    '\u{0327}',
-    '\u{0054}',
-    '\u{030C}',
-    '\u{0074}',
-    '\u{030C}',
-    '\u{0055}',
-    '\u{0303}',
-    '\u{0075}',
-    '\u{0303}',
-    '\u{0055}',
-    '\u{0304}',
-    '\u{0075}',
-    '\u{0304}',
-    '\u{0055}',
-    '\u{0306}',
-    '\u{0075}',
-    '\u{0306}',
-    '\u{0055}',
-    '\u{030A}',
-    '\u{0075}',
-    '\u{030A}',
-    '\u{0055}',
-    '\u{030B}',
-    '\u{0075}',
-    '\u{030B}',
-    '\u{0055}',
-    '\u{0328}',
-    '\u{0075}',
-    '\u{0328}',
-    '\u{0057}',
-    '\u{0302}',
-    '\u{0077}',
-    '\u{0302}',
-    '\u{0059}',
-    '\u{0302}',
-    '\u{0079}',
-    '\u{0302}',
-    '\u{0059}',
-    '\u{0308}',
-    '\u{005A}',
-    '\u{0301}',
-    '\u{007A}',
-    '\u{0301}',
-    '\u{005A}',
-    '\u{0307}',
-    '\u{007A}',
-    '\u{0307}',
-    '\u{005A}',
-    '\u{030C}',
-    '\u{007A}',
-    '\u{030C}',
-    '\u{004F}',
-    '\u{031B}',
-    '\u{006F}',
-    '\u{031B}',
-    '\u{0055}',
-    '\u{031B}',
-    '\u{0075}',
-    '\u{031B}',
-    '\u{0041}',
-    '\u{030C}',
-    '\u{0061}',
-    '\u{030C}',
-    '\u{0049}',
-    '\u{030C}',
-    '\u{0069}',
-    '\u{030C}',
-    '\u{004F}',
-    '\u{030C}',
-    '\u{006F}',
-    '\u{030C}',
-    '\u{0055}',
-    '\u{030C}',
-    '\u{0075}',
-    '\u{030C}',
-    '\u{0055}',
-    '\u{0308}',
-    '\u{0304}',
-    '\u{0075}',
-    '\u{0308}',
-    '\u{0304}',
-    '\u{0055}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{0075}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{0055}',
-    '\u{0308}',
-    '\u{030C}',
-    '\u{0075}',
-    '\u{0308}',
-    '\u{030C}',
-    '\u{0055}',
-    '\u{0308}',
-    '\u{0300}',
-    '\u{0075}',
-    '\u{0308}',
-    '\u{0300}',
-    '\u{0041}',
-    '\u{0308}',
-    '\u{0304}',
-    '\u{0061}',
-    '\u{0308}',
-    '\u{0304}',
-    '\u{0041}',
-    '\u{0307}',
-    '\u{0304}',
-    '\u{0061}',
-    '\u{0307}',
-    '\u{0304}',
-    '\u{00C6}',
-    '\u{0304}',
-    '\u{00E6}',
-    '\u{0304}',
-    '\u{0047}',
-    '\u{030C}',
-    '\u{0067}',
-    '\u{030C}',
-    '\u{004B}',
-    '\u{030C}',
-    '\u{006B}',
-    '\u{030C}',
-    '\u{004F}',
-    '\u{0328}',
-    '\u{006F}',
-    '\u{0328}',
-    '\u{004F}',
-    '\u{0328}',
-    '\u{0304}',
-    '\u{006F}',
-    '\u{0328}',
-    '\u{0304}',
-    '\u{01B7}',
-    '\u{030C}',
-    '\u{0292}',
-    '\u{030C}',
-    '\u{006A}',
-    '\u{030C}',
-    '\u{0047}',
-    '\u{0301}',
-    '\u{0067}',
-    '\u{0301}',
-    '\u{004E}',
-    '\u{0300}',
-    '\u{006E}',
-    '\u{0300}',
-    '\u{0041}',
-    '\u{030A}',
-    '\u{0301}',
-    '\u{0061}',
-    '\u{030A}',
-    '\u{0301}',
-    '\u{00C6}',
-    '\u{0301}',
-    '\u{00E6}',
-    '\u{0301}',
-    '\u{00D8}',
-    '\u{0301}',
-    '\u{00F8}',
-    '\u{0301}',
-    '\u{0041}',
-    '\u{030F}',
-    '\u{0061}',
-    '\u{030F}',
-    '\u{0041}',
-    '\u{0311}',
-    '\u{0061}',
-    '\u{0311}',
-    '\u{0045}',
-    '\u{030F}',
-    '\u{0065}',
-    '\u{030F}',
-    '\u{0045}',
-    '\u{0311}',
-    '\u{0065}',
-    '\u{0311}',
-    '\u{0049}',
-    '\u{030F}',
-    '\u{0069}',
-    '\u{030F}',
-    '\u{0049}',
-    '\u{0311}',
-    '\u{0069}',
-    '\u{0311}',
-    '\u{004F}',
-    '\u{030F}',
-    '\u{006F}',
-    '\u{030F}',
-    '\u{004F}',
-    '\u{0311}',
-    '\u{006F}',
-    '\u{0311}',
-    '\u{0052}',
-    '\u{030F}',
-    '\u{0072}',
-    '\u{030F}',
-    '\u{0052}',
-    '\u{0311}',
-    '\u{0072}',
-    '\u{0311}',
-    '\u{0055}',
-    '\u{030F}',
-    '\u{0075}',
-    '\u{030F}',
-    '\u{0055}',
-    '\u{0311}',
-    '\u{0075}',
-    '\u{0311}',
-    '\u{0053}',
-    '\u{0326}',
-    '\u{0073}',
-    '\u{0326}',
-    '\u{0054}',
-    '\u{0326}',
-    '\u{0074}',
-    '\u{0326}',
-    '\u{0048}',
-    '\u{030C}',
-    '\u{0068}',
-    '\u{030C}',
-    '\u{0041}',
-    '\u{0307}',
-    '\u{0061}',
-    '\u{0307}',
-    '\u{0045}',
-    '\u{0327}',
-    '\u{0065}',
-    '\u{0327}',
-    '\u{004F}',
-    '\u{0308}',
-    '\u{0304}',
-    '\u{006F}',
-    '\u{0308}',
-    '\u{0304}',
-    '\u{004F}',
-    '\u{0303}',
-    '\u{0304}',
-    '\u{006F}',
-    '\u{0303}',
-    '\u{0304}',
-    '\u{004F}',
-    '\u{0307}',
-    '\u{006F}',
-    '\u{0307}',
-    '\u{004F}',
-    '\u{0307}',
-    '\u{0304}',
-    '\u{006F}',
-    '\u{0307}',
-    '\u{0304}',
-    '\u{0059}',
-    '\u{0304}',
-    '\u{0079}',
-    '\u{0304}',
-    '\u{0300}',
-    '\u{0301}',
-    '\u{0313}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{02B9}',
-    '\u{003B}',
-    '\u{00A8}',
-    '\u{0301}',
-    '\u{0391}',
-    '\u{0301}',
-    '\u{00B7}',
-    '\u{0395}',
-    '\u{0301}',
-    '\u{0397}',
-    '\u{0301}',
-    '\u{0399}',
-    '\u{0301}',
-    '\u{039F}',
-    '\u{0301}',
-    '\u{03A5}',
-    '\u{0301}',
-    '\u{03A9}',
-    '\u{0301}',
-    '\u{03B9}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{0399}',
-    '\u{0308}',
-    '\u{03A5}',
-    '\u{0308}',
-    '\u{03B1}',
-    '\u{0301}',
-    '\u{03B5}',
-    '\u{0301}',
-    '\u{03B7}',
-    '\u{0301}',
-    '\u{03B9}',
-    '\u{0301}',
-    '\u{03C5}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{03B9}',
-    '\u{0308}',
-    '\u{03C5}',
-    '\u{0308}',
-    '\u{03BF}',
-    '\u{0301}',
-    '\u{03C5}',
-    '\u{0301}',
-    '\u{03C9}',
-    '\u{0301}',
-    '\u{03D2}',
-    '\u{0301}',
-    '\u{03D2}',
-    '\u{0308}',
-    '\u{0415}',
-    '\u{0300}',
-    '\u{0415}',
-    '\u{0308}',
-    '\u{0413}',
-    '\u{0301}',
-    '\u{0406}',
-    '\u{0308}',
-    '\u{041A}',
-    '\u{0301}',
-    '\u{0418}',
-    '\u{0300}',
-    '\u{0423}',
-    '\u{0306}',
-    '\u{0418}',
-    '\u{0306}',
-    '\u{0438}',
-    '\u{0306}',
-    '\u{0435}',
-    '\u{0300}',
-    '\u{0435}',
-    '\u{0308}',
-    '\u{0433}',
-    '\u{0301}',
-    '\u{0456}',
-    '\u{0308}',
-    '\u{043A}',
-    '\u{0301}',
-    '\u{0438}',
-    '\u{0300}',
-    '\u{0443}',
-    '\u{0306}',
-    '\u{0474}',
-    '\u{030F}',
-    '\u{0475}',
-    '\u{030F}',
-    '\u{0416}',
-    '\u{0306}',
-    '\u{0436}',
-    '\u{0306}',
-    '\u{0410}',
-    '\u{0306}',
-    '\u{0430}',
-    '\u{0306}',
-    '\u{0410}',
-    '\u{0308}',
-    '\u{0430}',
-    '\u{0308}',
-    '\u{0415}',
-    '\u{0306}',
-    '\u{0435}',
-    '\u{0306}',
-    '\u{04D8}',
-    '\u{0308}',
-    '\u{04D9}',
-    '\u{0308}',
-    '\u{0416}',
-    '\u{0308}',
-    '\u{0436}',
-    '\u{0308}',
-    '\u{0417}',
-    '\u{0308}',
-    '\u{0437}',
-    '\u{0308}',
-    '\u{0418}',
-    '\u{0304}',
-    '\u{0438}',
-    '\u{0304}',
-    '\u{0418}',
-    '\u{0308}',
-    '\u{0438}',
-    '\u{0308}',
-    '\u{041E}',
-    '\u{0308}',
-    '\u{043E}',
-    '\u{0308}',
-    '\u{04E8}',
-    '\u{0308}',
-    '\u{04E9}',
-    '\u{0308}',
-    '\u{042D}',
-    '\u{0308}',
-    '\u{044D}',
-    '\u{0308}',
-    '\u{0423}',
-    '\u{0304}',
-    '\u{0443}',
-    '\u{0304}',
-    '\u{0423}',
-    '\u{0308}',
-    '\u{0443}',
-    '\u{0308}',
-    '\u{0423}',
-    '\u{030B}',
-    '\u{0443}',
-    '\u{030B}',
-    '\u{0427}',
-    '\u{0308}',
-    '\u{0447}',
-    '\u{0308}',
-    '\u{042B}',
-    '\u{0308}',
-    '\u{044B}',
-    '\u{0308}',
-    '\u{0627}',
-    '\u{0653}',
-    '\u{0627}',
-    '\u{0654}',
-    '\u{0648}',
-    '\u{0654}',
-    '\u{0627}',
-    '\u{0655}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06D5}',
-    '\u{0654}',
-    '\u{06C1}',
-    '\u{0654}',
-    '\u{06D2}',
-    '\u{0654}',
-    '\u{0928}',
-    '\u{093C}',
-    '\u{0930}',
-    '\u{093C}',
-    '\u{0933}',
-    '\u{093C}',
-    '\u{0915}',
-    '\u{093C}',
-    '\u{0916}',
-    '\u{093C}',
-    '\u{0917}',
-    '\u{093C}',
-    '\u{091C}',
-    '\u{093C}',
-    '\u{0921}',
-    '\u{093C}',
-    '\u{0922}',
-    '\u{093C}',
-    '\u{092B}',
-    '\u{093C}',
-    '\u{092F}',
-    '\u{093C}',
-    '\u{09C7}',
-    '\u{09BE}',
-    '\u{09C7}',
-    '\u{09D7}',
-    '\u{09A1}',
-    '\u{09BC}',
-    '\u{09A2}',
-    '\u{09BC}',
-    '\u{09AF}',
-    '\u{09BC}',
-    '\u{0A32}',
-    '\u{0A3C}',
-    '\u{0A38}',
-    '\u{0A3C}',
-    '\u{0A16}',
-    '\u{0A3C}',
-    '\u{0A17}',
-    '\u{0A3C}',
-    '\u{0A1C}',
-    '\u{0A3C}',
-    '\u{0A2B}',
-    '\u{0A3C}',
-    '\u{0B47}',
-    '\u{0B56}',
-    '\u{0B47}',
-    '\u{0B3E}',
-    '\u{0B47}',
-    '\u{0B57}',
-    '\u{0B21}',
-    '\u{0B3C}',
-    '\u{0B22}',
-    '\u{0B3C}',
-    '\u{0B92}',
-    '\u{0BD7}',
-    '\u{0BC6}',
-    '\u{0BBE}',
-    '\u{0BC7}',
-    '\u{0BBE}',
-    '\u{0BC6}',
-    '\u{0BD7}',
-    '\u{0C46}',
-    '\u{0C56}',
-    '\u{0CBF}',
-    '\u{0CD5}',
-    '\u{0CC6}',
-    '\u{0CD5}',
-    '\u{0CC6}',
-    '\u{0CD6}',
-    '\u{0CC6}',
-    '\u{0CC2}',
-    '\u{0CC6}',
-    '\u{0CC2}',
-    '\u{0CD5}',
-    '\u{0D46}',
-    '\u{0D3E}',
-    '\u{0D47}',
-    '\u{0D3E}',
-    '\u{0D46}',
-    '\u{0D57}',
-    '\u{0DD9}',
-    '\u{0DCA}',
-    '\u{0DD9}',
-    '\u{0DCF}',
-    '\u{0DD9}',
-    '\u{0DCF}',
-    '\u{0DCA}',
-    '\u{0DD9}',
-    '\u{0DDF}',
-    '\u{0F42}',
-    '\u{0FB7}',
-    '\u{0F4C}',
-    '\u{0FB7}',
-    '\u{0F51}',
-    '\u{0FB7}',
-    '\u{0F56}',
-    '\u{0FB7}',
-    '\u{0F5B}',
-    '\u{0FB7}',
-    '\u{0F40}',
-    '\u{0FB5}',
-    '\u{0F71}',
-    '\u{0F72}',
-    '\u{0F71}',
-    '\u{0F74}',
-    '\u{0FB2}',
-    '\u{0F80}',
-    '\u{0FB3}',
-    '\u{0F80}',
-    '\u{0F71}',
-    '\u{0F80}',
-    '\u{0F92}',
-    '\u{0FB7}',
-    '\u{0F9C}',
-    '\u{0FB7}',
-    '\u{0FA1}',
-    '\u{0FB7}',
-    '\u{0FA6}',
-    '\u{0FB7}',
-    '\u{0FAB}',
-    '\u{0FB7}',
-    '\u{0F90}',
-    '\u{0FB5}',
-    '\u{1025}',
-    '\u{102E}',
-    '\u{1B05}',
-    '\u{1B35}',
-    '\u{1B07}',
-    '\u{1B35}',
-    '\u{1B09}',
-    '\u{1B35}',
-    '\u{1B0B}',
-    '\u{1B35}',
-    '\u{1B0D}',
-    '\u{1B35}',
-    '\u{1B11}',
-    '\u{1B35}',
-    '\u{1B3A}',
-    '\u{1B35}',
-    '\u{1B3C}',
-    '\u{1B35}',
-    '\u{1B3E}',
-    '\u{1B35}',
-    '\u{1B3F}',
-    '\u{1B35}',
-    '\u{1B42}',
-    '\u{1B35}',
-    '\u{0041}',
-    '\u{0325}',
-    '\u{0061}',
-    '\u{0325}',
-    '\u{0042}',
-    '\u{0307}',
-    '\u{0062}',
-    '\u{0307}',
-    '\u{0042}',
-    '\u{0323}',
-    '\u{0062}',
-    '\u{0323}',
-    '\u{0042}',
-    '\u{0331}',
-    '\u{0062}',
-    '\u{0331}',
-    '\u{0043}',
-    '\u{0327}',
-    '\u{0301}',
-    '\u{0063}',
-    '\u{0327}',
-    '\u{0301}',
-    '\u{0044}',
-    '\u{0307}',
-    '\u{0064}',
-    '\u{0307}',
-    '\u{0044}',
-    '\u{0323}',
-    '\u{0064}',
-    '\u{0323}',
-    '\u{0044}',
-    '\u{0331}',
-    '\u{0064}',
-    '\u{0331}',
-    '\u{0044}',
-    '\u{0327}',
-    '\u{0064}',
-    '\u{0327}',
-    '\u{0044}',
-    '\u{032D}',
-    '\u{0064}',
-    '\u{032D}',
-    '\u{0045}',
-    '\u{0304}',
-    '\u{0300}',
-    '\u{0065}',
-    '\u{0304}',
-    '\u{0300}',
-    '\u{0045}',
-    '\u{0304}',
-    '\u{0301}',
-    '\u{0065}',
-    '\u{0304}',
-    '\u{0301}',
-    '\u{0045}',
-    '\u{032D}',
-    '\u{0065}',
-    '\u{032D}',
-    '\u{0045}',
-    '\u{0330}',
-    '\u{0065}',
-    '\u{0330}',
-    '\u{0045}',
-    '\u{0327}',
-    '\u{0306}',
-    '\u{0065}',
-    '\u{0327}',
-    '\u{0306}',
-    '\u{0046}',
-    '\u{0307}',
-    '\u{0066}',
-    '\u{0307}',
-    '\u{0047}',
-    '\u{0304}',
-    '\u{0067}',
-    '\u{0304}',
-    '\u{0048}',
-    '\u{0307}',
-    '\u{0068}',
-    '\u{0307}',
-    '\u{0048}',
-    '\u{0323}',
-    '\u{0068}',
-    '\u{0323}',
-    '\u{0048}',
-    '\u{0308}',
-    '\u{0068}',
-    '\u{0308}',
-    '\u{0048}',
-    '\u{0327}',
-    '\u{0068}',
-    '\u{0327}',
-    '\u{0048}',
-    '\u{032E}',
-    '\u{0068}',
-    '\u{032E}',
-    '\u{0049}',
-    '\u{0330}',
-    '\u{0069}',
-    '\u{0330}',
-    '\u{0049}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{0069}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{004B}',
-    '\u{0301}',
-    '\u{006B}',
-    '\u{0301}',
-    '\u{004B}',
-    '\u{0323}',
-    '\u{006B}',
-    '\u{0323}',
-    '\u{004B}',
-    '\u{0331}',
-    '\u{006B}',
-    '\u{0331}',
-    '\u{004C}',
-    '\u{0323}',
-    '\u{006C}',
-    '\u{0323}',
-    '\u{004C}',
-    '\u{0323}',
-    '\u{0304}',
-    '\u{006C}',
-    '\u{0323}',
-    '\u{0304}',
-    '\u{004C}',
-    '\u{0331}',
-    '\u{006C}',
-    '\u{0331}',
-    '\u{004C}',
-    '\u{032D}',
-    '\u{006C}',
-    '\u{032D}',
-    '\u{004D}',
-    '\u{0301}',
-    '\u{006D}',
-    '\u{0301}',
-    '\u{004D}',
-    '\u{0307}',
-    '\u{006D}',
-    '\u{0307}',
-    '\u{004D}',
-    '\u{0323}',
-    '\u{006D}',
-    '\u{0323}',
-    '\u{004E}',
-    '\u{0307}',
-    '\u{006E}',
-    '\u{0307}',
-    '\u{004E}',
-    '\u{0323}',
-    '\u{006E}',
-    '\u{0323}',
-    '\u{004E}',
-    '\u{0331}',
-    '\u{006E}',
-    '\u{0331}',
-    '\u{004E}',
-    '\u{032D}',
-    '\u{006E}',
-    '\u{032D}',
-    '\u{004F}',
-    '\u{0303}',
-    '\u{0301}',
-    '\u{006F}',
-    '\u{0303}',
-    '\u{0301}',
-    '\u{004F}',
-    '\u{0303}',
-    '\u{0308}',
-    '\u{006F}',
-    '\u{0303}',
-    '\u{0308}',
-    '\u{004F}',
-    '\u{0304}',
-    '\u{0300}',
-    '\u{006F}',
-    '\u{0304}',
-    '\u{0300}',
-    '\u{004F}',
-    '\u{0304}',
-    '\u{0301}',
-    '\u{006F}',
-    '\u{0304}',
-    '\u{0301}',
-    '\u{0050}',
-    '\u{0301}',
-    '\u{0070}',
-    '\u{0301}',
-    '\u{0050}',
-    '\u{0307}',
-    '\u{0070}',
-    '\u{0307}',
-    '\u{0052}',
-    '\u{0307}',
-    '\u{0072}',
-    '\u{0307}',
-    '\u{0052}',
-    '\u{0323}',
-    '\u{0072}',
-    '\u{0323}',
-    '\u{0052}',
-    '\u{0323}',
-    '\u{0304}',
-    '\u{0072}',
-    '\u{0323}',
-    '\u{0304}',
-    '\u{0052}',
-    '\u{0331}',
-    '\u{0072}',
-    '\u{0331}',
-    '\u{0053}',
-    '\u{0307}',
-    '\u{0073}',
-    '\u{0307}',
-    '\u{0053}',
-    '\u{0323}',
-    '\u{0073}',
-    '\u{0323}',
-    '\u{0053}',
-    '\u{0301}',
-    '\u{0307}',
-    '\u{0073}',
-    '\u{0301}',
-    '\u{0307}',
-    '\u{0053}',
-    '\u{030C}',
-    '\u{0307}',
-    '\u{0073}',
-    '\u{030C}',
-    '\u{0307}',
-    '\u{0053}',
-    '\u{0323}',
-    '\u{0307}',
-    '\u{0073}',
-    '\u{0323}',
-    '\u{0307}',
-    '\u{0054}',
-    '\u{0307}',
-    '\u{0074}',
-    '\u{0307}',
-    '\u{0054}',
-    '\u{0323}',
-    '\u{0074}',
-    '\u{0323}',
-    '\u{0054}',
-    '\u{0331}',
-    '\u{0074}',
-    '\u{0331}',
-    '\u{0054}',
-    '\u{032D}',
-    '\u{0074}',
-    '\u{032D}',
-    '\u{0055}',
-    '\u{0324}',
-    '\u{0075}',
-    '\u{0324}',
-    '\u{0055}',
-    '\u{0330}',
-    '\u{0075}',
-    '\u{0330}',
-    '\u{0055}',
-    '\u{032D}',
-    '\u{0075}',
-    '\u{032D}',
-    '\u{0055}',
-    '\u{0303}',
-    '\u{0301}',
-    '\u{0075}',
-    '\u{0303}',
-    '\u{0301}',
-    '\u{0055}',
-    '\u{0304}',
-    '\u{0308}',
-    '\u{0075}',
-    '\u{0304}',
-    '\u{0308}',
-    '\u{0056}',
-    '\u{0303}',
-    '\u{0076}',
-    '\u{0303}',
-    '\u{0056}',
-    '\u{0323}',
-    '\u{0076}',
-    '\u{0323}',
-    '\u{0057}',
-    '\u{0300}',
-    '\u{0077}',
-    '\u{0300}',
-    '\u{0057}',
-    '\u{0301}',
-    '\u{0077}',
-    '\u{0301}',
-    '\u{0057}',
-    '\u{0308}',
-    '\u{0077}',
-    '\u{0308}',
-    '\u{0057}',
-    '\u{0307}',
-    '\u{0077}',
-    '\u{0307}',
-    '\u{0057}',
-    '\u{0323}',
-    '\u{0077}',
-    '\u{0323}',
-    '\u{0058}',
-    '\u{0307}',
-    '\u{0078}',
-    '\u{0307}',
-    '\u{0058}',
-    '\u{0308}',
-    '\u{0078}',
-    '\u{0308}',
-    '\u{0059}',
-    '\u{0307}',
-    '\u{0079}',
-    '\u{0307}',
-    '\u{005A}',
-    '\u{0302}',
-    '\u{007A}',
-    '\u{0302}',
-    '\u{005A}',
-    '\u{0323}',
-    '\u{007A}',
-    '\u{0323}',
-    '\u{005A}',
-    '\u{0331}',
-    '\u{007A}',
-    '\u{0331}',
-    '\u{0068}',
-    '\u{0331}',
-    '\u{0074}',
-    '\u{0308}',
-    '\u{0077}',
-    '\u{030A}',
-    '\u{0079}',
-    '\u{030A}',
-    '\u{017F}',
-    '\u{0307}',
-    '\u{0041}',
-    '\u{0323}',
-    '\u{0061}',
-    '\u{0323}',
-    '\u{0041}',
-    '\u{0309}',
-    '\u{0061}',
-    '\u{0309}',
-    '\u{0041}',
-    '\u{0302}',
-    '\u{0301}',
-    '\u{0061}',
-    '\u{0302}',
-    '\u{0301}',
-    '\u{0041}',
-    '\u{0302}',
-    '\u{0300}',
-    '\u{0061}',
-    '\u{0302}',
-    '\u{0300}',
-    '\u{0041}',
-    '\u{0302}',
-    '\u{0309}',
-    '\u{0061}',
-    '\u{0302}',
-    '\u{0309}',
-    '\u{0041}',
-    '\u{0302}',
-    '\u{0303}',
-    '\u{0061}',
-    '\u{0302}',
-    '\u{0303}',
-    '\u{0041}',
-    '\u{0323}',
-    '\u{0302}',
-    '\u{0061}',
-    '\u{0323}',
-    '\u{0302}',
-    '\u{0041}',
-    '\u{0306}',
-    '\u{0301}',
-    '\u{0061}',
-    '\u{0306}',
-    '\u{0301}',
-    '\u{0041}',
-    '\u{0306}',
-    '\u{0300}',
-    '\u{0061}',
-    '\u{0306}',
-    '\u{0300}',
-    '\u{0041}',
-    '\u{0306}',
-    '\u{0309}',
-    '\u{0061}',
-    '\u{0306}',
-    '\u{0309}',
-    '\u{0041}',
-    '\u{0306}',
-    '\u{0303}',
-    '\u{0061}',
-    '\u{0306}',
-    '\u{0303}',
-    '\u{0041}',
-    '\u{0323}',
-    '\u{0306}',
-    '\u{0061}',
-    '\u{0323}',
-    '\u{0306}',
-    '\u{0045}',
-    '\u{0323}',
-    '\u{0065}',
-    '\u{0323}',
-    '\u{0045}',
-    '\u{0309}',
-    '\u{0065}',
-    '\u{0309}',
-    '\u{0045}',
-    '\u{0303}',
-    '\u{0065}',
-    '\u{0303}',
-    '\u{0045}',
-    '\u{0302}',
-    '\u{0301}',
-    '\u{0065}',
-    '\u{0302}',
-    '\u{0301}',
-    '\u{0045}',
-    '\u{0302}',
-    '\u{0300}',
-    '\u{0065}',
-    '\u{0302}',
-    '\u{0300}',
-    '\u{0045}',
-    '\u{0302}',
-    '\u{0309}',
-    '\u{0065}',
-    '\u{0302}',
-    '\u{0309}',
-    '\u{0045}',
-    '\u{0302}',
-    '\u{0303}',
-    '\u{0065}',
-    '\u{0302}',
-    '\u{0303}',
-    '\u{0045}',
-    '\u{0323}',
-    '\u{0302}',
-    '\u{0065}',
-    '\u{0323}',
-    '\u{0302}',
-    '\u{0049}',
-    '\u{0309}',
-    '\u{0069}',
-    '\u{0309}',
-    '\u{0049}',
-    '\u{0323}',
-    '\u{0069}',
-    '\u{0323}',
-    '\u{004F}',
-    '\u{0323}',
-    '\u{006F}',
-    '\u{0323}',
-    '\u{004F}',
-    '\u{0309}',
-    '\u{006F}',
-    '\u{0309}',
-    '\u{004F}',
-    '\u{0302}',
-    '\u{0301}',
-    '\u{006F}',
-    '\u{0302}',
-    '\u{0301}',
-    '\u{004F}',
-    '\u{0302}',
-    '\u{0300}',
-    '\u{006F}',
-    '\u{0302}',
-    '\u{0300}',
-    '\u{004F}',
-    '\u{0302}',
-    '\u{0309}',
-    '\u{006F}',
-    '\u{0302}',
-    '\u{0309}',
-    '\u{004F}',
-    '\u{0302}',
-    '\u{0303}',
-    '\u{006F}',
-    '\u{0302}',
-    '\u{0303}',
-    '\u{004F}',
-    '\u{0323}',
-    '\u{0302}',
-    '\u{006F}',
-    '\u{0323}',
-    '\u{0302}',
-    '\u{004F}',
-    '\u{031B}',
-    '\u{0301}',
-    '\u{006F}',
-    '\u{031B}',
-    '\u{0301}',
-    '\u{004F}',
-    '\u{031B}',
-    '\u{0300}',
-    '\u{006F}',
-    '\u{031B}',
-    '\u{0300}',
-    '\u{004F}',
-    '\u{031B}',
-    '\u{0309}',
-    '\u{006F}',
-    '\u{031B}',
-    '\u{0309}',
-    '\u{004F}',
-    '\u{031B}',
-    '\u{0303}',
-    '\u{006F}',
-    '\u{031B}',
-    '\u{0303}',
-    '\u{004F}',
-    '\u{031B}',
-    '\u{0323}',
-    '\u{006F}',
-    '\u{031B}',
-    '\u{0323}',
-    '\u{0055}',
-    '\u{0323}',
-    '\u{0075}',
-    '\u{0323}',
-    '\u{0055}',
-    '\u{0309}',
-    '\u{0075}',
-    '\u{0309}',
-    '\u{0055}',
-    '\u{031B}',
-    '\u{0301}',
-    '\u{0075}',
-    '\u{031B}',
-    '\u{0301}',
-    '\u{0055}',
-    '\u{031B}',
-    '\u{0300}',
-    '\u{0075}',
-    '\u{031B}',
-    '\u{0300}',
-    '\u{0055}',
-    '\u{031B}',
-    '\u{0309}',
-    '\u{0075}',
-    '\u{031B}',
-    '\u{0309}',
-    '\u{0055}',
-    '\u{031B}',
-    '\u{0303}',
-    '\u{0075}',
-    '\u{031B}',
-    '\u{0303}',
-    '\u{0055}',
-    '\u{031B}',
-    '\u{0323}',
-    '\u{0075}',
-    '\u{031B}',
-    '\u{0323}',
-    '\u{0059}',
-    '\u{0300}',
-    '\u{0079}',
-    '\u{0300}',
-    '\u{0059}',
-    '\u{0323}',
-    '\u{0079}',
-    '\u{0323}',
-    '\u{0059}',
-    '\u{0309}',
-    '\u{0079}',
-    '\u{0309}',
-    '\u{0059}',
-    '\u{0303}',
-    '\u{0079}',
-    '\u{0303}',
-    '\u{03B1}',
-    '\u{0313}',
-    '\u{03B1}',
-    '\u{0314}',
-    '\u{03B1}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{03B1}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{03B1}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{03B1}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{03B1}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{03B1}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{0391}',
-    '\u{0313}',
-    '\u{0391}',
-    '\u{0314}',
-    '\u{0391}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0391}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0391}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0391}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0391}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{0391}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{03B5}',
-    '\u{0313}',
-    '\u{03B5}',
-    '\u{0314}',
-    '\u{03B5}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{03B5}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{03B5}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{03B5}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0395}',
-    '\u{0313}',
-    '\u{0395}',
-    '\u{0314}',
-    '\u{0395}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0395}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0395}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0395}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{03B7}',
-    '\u{0313}',
-    '\u{03B7}',
-    '\u{0314}',
-    '\u{03B7}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{03B7}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{03B7}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{03B7}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{03B7}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{03B7}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{0397}',
-    '\u{0313}',
-    '\u{0397}',
-    '\u{0314}',
-    '\u{0397}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0397}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0397}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0397}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0397}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{0397}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{03B9}',
-    '\u{0313}',
-    '\u{03B9}',
-    '\u{0314}',
-    '\u{03B9}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{03B9}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{03B9}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{03B9}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{03B9}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{03B9}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{0399}',
-    '\u{0313}',
-    '\u{0399}',
-    '\u{0314}',
-    '\u{0399}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0399}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0399}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0399}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0399}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{0399}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{03BF}',
-    '\u{0313}',
-    '\u{03BF}',
-    '\u{0314}',
-    '\u{03BF}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{03BF}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{03BF}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{03BF}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{039F}',
-    '\u{0313}',
-    '\u{039F}',
-    '\u{0314}',
-    '\u{039F}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{039F}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{039F}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{039F}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{03C5}',
-    '\u{0313}',
-    '\u{03C5}',
-    '\u{0314}',
-    '\u{03C5}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{03C5}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{03C5}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{03C5}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{03C5}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{03C5}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{03A5}',
-    '\u{0314}',
-    '\u{03A5}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{03A5}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{03A5}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{03C9}',
-    '\u{0313}',
-    '\u{03C9}',
-    '\u{0314}',
-    '\u{03C9}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{03C9}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{03C9}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{03C9}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{03C9}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{03C9}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{03A9}',
-    '\u{0313}',
-    '\u{03A9}',
-    '\u{0314}',
-    '\u{03A9}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{03A9}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{03A9}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{03A9}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{03A9}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{03A9}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{03B1}',
-    '\u{0300}',
-    '\u{03B1}',
-    '\u{0301}',
-    '\u{03B5}',
-    '\u{0300}',
-    '\u{03B5}',
-    '\u{0301}',
-    '\u{03B7}',
-    '\u{0300}',
-    '\u{03B7}',
-    '\u{0301}',
-    '\u{03B9}',
-    '\u{0300}',
-    '\u{03B9}',
-    '\u{0301}',
-    '\u{03BF}',
-    '\u{0300}',
-    '\u{03BF}',
-    '\u{0301}',
-    '\u{03C5}',
-    '\u{0300}',
-    '\u{03C5}',
-    '\u{0301}',
-    '\u{03C9}',
-    '\u{0300}',
-    '\u{03C9}',
-    '\u{0301}',
-    '\u{03B1}',
-    '\u{0313}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0314}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{0391}',
-    '\u{0313}',
-    '\u{0345}',
-    '\u{0391}',
-    '\u{0314}',
-    '\u{0345}',
-    '\u{0391}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{0391}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{0391}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{0391}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{0391}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{0391}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0313}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0314}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{0397}',
-    '\u{0313}',
-    '\u{0345}',
-    '\u{0397}',
-    '\u{0314}',
-    '\u{0345}',
-    '\u{0397}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{0397}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{0397}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{0397}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{0397}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{0397}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0313}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0314}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{03A9}',
-    '\u{0313}',
-    '\u{0345}',
-    '\u{03A9}',
-    '\u{0314}',
-    '\u{0345}',
-    '\u{03A9}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03A9}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03A9}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03A9}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03A9}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{03A9}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0306}',
-    '\u{03B1}',
-    '\u{0304}',
-    '\u{03B1}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03B1}',
-    '\u{0342}',
-    '\u{03B1}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{0391}',
-    '\u{0306}',
-    '\u{0391}',
-    '\u{0304}',
-    '\u{0391}',
-    '\u{0300}',
-    '\u{0391}',
-    '\u{0301}',
-    '\u{0391}',
-    '\u{0345}',
-    '\u{03B9}',
-    '\u{00A8}',
-    '\u{0342}',
-    '\u{03B7}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03B7}',
-    '\u{0342}',
-    '\u{03B7}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{0395}',
-    '\u{0300}',
-    '\u{0395}',
-    '\u{0301}',
-    '\u{0397}',
-    '\u{0300}',
-    '\u{0397}',
-    '\u{0301}',
-    '\u{0397}',
-    '\u{0345}',
-    '\u{1FBF}',
-    '\u{0300}',
-    '\u{1FBF}',
-    '\u{0301}',
-    '\u{1FBF}',
-    '\u{0342}',
-    '\u{03B9}',
-    '\u{0306}',
-    '\u{03B9}',
-    '\u{0304}',
-    '\u{03B9}',
-    '\u{0308}',
-    '\u{0300}',
-    '\u{03B9}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{03B9}',
-    '\u{0342}',
-    '\u{03B9}',
-    '\u{0308}',
-    '\u{0342}',
-    '\u{0399}',
-    '\u{0306}',
-    '\u{0399}',
-    '\u{0304}',
-    '\u{0399}',
-    '\u{0300}',
-    '\u{0399}',
-    '\u{0301}',
-    '\u{1FFE}',
-    '\u{0300}',
-    '\u{1FFE}',
-    '\u{0301}',
-    '\u{1FFE}',
-    '\u{0342}',
-    '\u{03C5}',
-    '\u{0306}',
-    '\u{03C5}',
-    '\u{0304}',
-    '\u{03C5}',
-    '\u{0308}',
-    '\u{0300}',
-    '\u{03C5}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{03C1}',
-    '\u{0313}',
-    '\u{03C1}',
-    '\u{0314}',
-    '\u{03C5}',
-    '\u{0342}',
-    '\u{03C5}',
-    '\u{0308}',
-    '\u{0342}',
-    '\u{03A5}',
-    '\u{0306}',
-    '\u{03A5}',
-    '\u{0304}',
-    '\u{03A5}',
-    '\u{0300}',
-    '\u{03A5}',
-    '\u{0301}',
-    '\u{03A1}',
-    '\u{0314}',
-    '\u{00A8}',
-    '\u{0300}',
-    '\u{00A8}',
-    '\u{0301}',
-    '\u{0060}',
-    '\u{03C9}',
-    '\u{0300}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0301}',
-    '\u{0345}',
-    '\u{03C9}',
-    '\u{0342}',
-    '\u{03C9}',
-    '\u{0342}',
-    '\u{0345}',
-    '\u{039F}',
-    '\u{0300}',
-    '\u{039F}',
-    '\u{0301}',
-    '\u{03A9}',
-    '\u{0300}',
-    '\u{03A9}',
-    '\u{0301}',
-    '\u{03A9}',
-    '\u{0345}',
-    '\u{00B4}',
-    '\u{2002}',
-    '\u{2003}',
-    '\u{03A9}',
-    '\u{004B}',
-    '\u{0041}',
-    '\u{030A}',
-    '\u{2190}',
-    '\u{0338}',
-    '\u{2192}',
-    '\u{0338}',
-    '\u{2194}',
-    '\u{0338}',
-    '\u{21D0}',
-    '\u{0338}',
-    '\u{21D4}',
-    '\u{0338}',
-    '\u{21D2}',
-    '\u{0338}',
-    '\u{2203}',
-    '\u{0338}',
-    '\u{2208}',
-    '\u{0338}',
-    '\u{220B}',
-    '\u{0338}',
-    '\u{2223}',
-    '\u{0338}',
-    '\u{2225}',
-    '\u{0338}',
-    '\u{223C}',
-    '\u{0338}',
-    '\u{2243}',
-    '\u{0338}',
-    '\u{2245}',
-    '\u{0338}',
-    '\u{2248}',
-    '\u{0338}',
-    '\u{003D}',
-    '\u{0338}',
-    '\u{2261}',
-    '\u{0338}',
-    '\u{224D}',
-    '\u{0338}',
-    '\u{003C}',
-    '\u{0338}',
-    '\u{003E}',
-    '\u{0338}',
-    '\u{2264}',
-    '\u{0338}',
-    '\u{2265}',
-    '\u{0338}',
-    '\u{2272}',
-    '\u{0338}',
-    '\u{2273}',
-    '\u{0338}',
-    '\u{2276}',
-    '\u{0338}',
-    '\u{2277}',
-    '\u{0338}',
-    '\u{227A}',
-    '\u{0338}',
-    '\u{227B}',
-    '\u{0338}',
-    '\u{2282}',
-    '\u{0338}',
-    '\u{2283}',
-    '\u{0338}',
-    '\u{2286}',
-    '\u{0338}',
-    '\u{2287}',
-    '\u{0338}',
-    '\u{22A2}',
-    '\u{0338}',
-    '\u{22A8}',
-    '\u{0338}',
-    '\u{22A9}',
-    '\u{0338}',
-    '\u{22AB}',
-    '\u{0338}',
-    '\u{227C}',
-    '\u{0338}',
-    '\u{227D}',
-    '\u{0338}',
-    '\u{2291}',
-    '\u{0338}',
-    '\u{2292}',
-    '\u{0338}',
-    '\u{22B2}',
-    '\u{0338}',
-    '\u{22B3}',
-    '\u{0338}',
-    '\u{22B4}',
-    '\u{0338}',
-    '\u{22B5}',
-    '\u{0338}',
-    '\u{3008}',
-    '\u{3009}',
-    '\u{2ADD}',
-    '\u{0338}',
-    '\u{304B}',
-    '\u{3099}',
-    '\u{304D}',
-    '\u{3099}',
-    '\u{304F}',
-    '\u{3099}',
-    '\u{3051}',
-    '\u{3099}',
-    '\u{3053}',
-    '\u{3099}',
-    '\u{3055}',
-    '\u{3099}',
-    '\u{3057}',
-    '\u{3099}',
-    '\u{3059}',
-    '\u{3099}',
-    '\u{305B}',
-    '\u{3099}',
-    '\u{305D}',
-    '\u{3099}',
-    '\u{305F}',
-    '\u{3099}',
-    '\u{3061}',
-    '\u{3099}',
-    '\u{3064}',
-    '\u{3099}',
-    '\u{3066}',
-    '\u{3099}',
-    '\u{3068}',
-    '\u{3099}',
-    '\u{306F}',
-    '\u{3099}',
-    '\u{306F}',
-    '\u{309A}',
-    '\u{3072}',
-    '\u{3099}',
-    '\u{3072}',
-    '\u{309A}',
-    '\u{3075}',
-    '\u{3099}',
-    '\u{3075}',
-    '\u{309A}',
-    '\u{3078}',
-    '\u{3099}',
-    '\u{3078}',
-    '\u{309A}',
-    '\u{307B}',
-    '\u{3099}',
-    '\u{307B}',
-    '\u{309A}',
-    '\u{3046}',
-    '\u{3099}',
-    '\u{309D}',
-    '\u{3099}',
-    '\u{30AB}',
-    '\u{3099}',
-    '\u{30AD}',
-    '\u{3099}',
-    '\u{30AF}',
-    '\u{3099}',
-    '\u{30B1}',
-    '\u{3099}',
-    '\u{30B3}',
-    '\u{3099}',
-    '\u{30B5}',
-    '\u{3099}',
-    '\u{30B7}',
-    '\u{3099}',
-    '\u{30B9}',
-    '\u{3099}',
-    '\u{30BB}',
-    '\u{3099}',
-    '\u{30BD}',
-    '\u{3099}',
-    '\u{30BF}',
-    '\u{3099}',
-    '\u{30C1}',
-    '\u{3099}',
-    '\u{30C4}',
-    '\u{3099}',
-    '\u{30C6}',
-    '\u{3099}',
-    '\u{30C8}',
-    '\u{3099}',
-    '\u{30CF}',
-    '\u{3099}',
-    '\u{30CF}',
-    '\u{309A}',
-    '\u{30D2}',
-    '\u{3099}',
-    '\u{30D2}',
-    '\u{309A}',
-    '\u{30D5}',
-    '\u{3099}',
-    '\u{30D5}',
-    '\u{309A}',
-    '\u{30D8}',
-    '\u{3099}',
-    '\u{30D8}',
-    '\u{309A}',
-    '\u{30DB}',
-    '\u{3099}',
-    '\u{30DB}',
-    '\u{309A}',
-    '\u{30A6}',
-    '\u{3099}',
-    '\u{30EF}',
-    '\u{3099}',
-    '\u{30F0}',
-    '\u{3099}',
-    '\u{30F1}',
-    '\u{3099}',
-    '\u{30F2}',
-    '\u{3099}',
-    '\u{30FD}',
-    '\u{3099}',
-    '\u{8C48}',
-    '\u{66F4}',
-    '\u{8ECA}',
-    '\u{8CC8}',
-    '\u{6ED1}',
-    '\u{4E32}',
-    '\u{53E5}',
-    '\u{9F9C}',
-    '\u{9F9C}',
-    '\u{5951}',
-    '\u{91D1}',
-    '\u{5587}',
-    '\u{5948}',
-    '\u{61F6}',
-    '\u{7669}',
-    '\u{7F85}',
-    '\u{863F}',
-    '\u{87BA}',
-    '\u{88F8}',
-    '\u{908F}',
-    '\u{6A02}',
-    '\u{6D1B}',
-    '\u{70D9}',
-    '\u{73DE}',
-    '\u{843D}',
-    '\u{916A}',
-    '\u{99F1}',
-    '\u{4E82}',
-    '\u{5375}',
-    '\u{6B04}',
-    '\u{721B}',
-    '\u{862D}',
-    '\u{9E1E}',
-    '\u{5D50}',
-    '\u{6FEB}',
-    '\u{85CD}',
-    '\u{8964}',
-    '\u{62C9}',
-    '\u{81D8}',
-    '\u{881F}',
-    '\u{5ECA}',
-    '\u{6717}',
-    '\u{6D6A}',
-    '\u{72FC}',
-    '\u{90CE}',
-    '\u{4F86}',
-    '\u{51B7}',
-    '\u{52DE}',
-    '\u{64C4}',
-    '\u{6AD3}',
-    '\u{7210}',
-    '\u{76E7}',
-    '\u{8001}',
-    '\u{8606}',
-    '\u{865C}',
-    '\u{8DEF}',
-    '\u{9732}',
-    '\u{9B6F}',
-    '\u{9DFA}',
-    '\u{788C}',
-    '\u{797F}',
-    '\u{7DA0}',
-    '\u{83C9}',
-    '\u{9304}',
-    '\u{9E7F}',
-    '\u{8AD6}',
-    '\u{58DF}',
-    '\u{5F04}',
-    '\u{7C60}',
-    '\u{807E}',
-    '\u{7262}',
-    '\u{78CA}',
-    '\u{8CC2}',
-    '\u{96F7}',
-    '\u{58D8}',
-    '\u{5C62}',
-    '\u{6A13}',
-    '\u{6DDA}',
-    '\u{6F0F}',
-    '\u{7D2F}',
-    '\u{7E37}',
-    '\u{964B}',
-    '\u{52D2}',
-    '\u{808B}',
-    '\u{51DC}',
-    '\u{51CC}',
-    '\u{7A1C}',
-    '\u{7DBE}',
-    '\u{83F1}',
-    '\u{9675}',
-    '\u{8B80}',
-    '\u{62CF}',
-    '\u{6A02}',
-    '\u{8AFE}',
-    '\u{4E39}',
-    '\u{5BE7}',
-    '\u{6012}',
-    '\u{7387}',
-    '\u{7570}',
-    '\u{5317}',
-    '\u{78FB}',
-    '\u{4FBF}',
-    '\u{5FA9}',
-    '\u{4E0D}',
-    '\u{6CCC}',
-    '\u{6578}',
-    '\u{7D22}',
-    '\u{53C3}',
-    '\u{585E}',
-    '\u{7701}',
-    '\u{8449}',
-    '\u{8AAA}',
-    '\u{6BBA}',
-    '\u{8FB0}',
-    '\u{6C88}',
-    '\u{62FE}',
-    '\u{82E5}',
-    '\u{63A0}',
-    '\u{7565}',
-    '\u{4EAE}',
-    '\u{5169}',
-    '\u{51C9}',
-    '\u{6881}',
-    '\u{7CE7}',
-    '\u{826F}',
-    '\u{8AD2}',
-    '\u{91CF}',
-    '\u{52F5}',
-    '\u{5442}',
-    '\u{5973}',
-    '\u{5EEC}',
-    '\u{65C5}',
-    '\u{6FFE}',
-    '\u{792A}',
-    '\u{95AD}',
-    '\u{9A6A}',
-    '\u{9E97}',
-    '\u{9ECE}',
-    '\u{529B}',
-    '\u{66C6}',
-    '\u{6B77}',
-    '\u{8F62}',
-    '\u{5E74}',
-    '\u{6190}',
-    '\u{6200}',
-    '\u{649A}',
-    '\u{6F23}',
-    '\u{7149}',
-    '\u{7489}',
-    '\u{79CA}',
-    '\u{7DF4}',
-    '\u{806F}',
-    '\u{8F26}',
-    '\u{84EE}',
-    '\u{9023}',
-    '\u{934A}',
-    '\u{5217}',
-    '\u{52A3}',
-    '\u{54BD}',
-    '\u{70C8}',
-    '\u{88C2}',
-    '\u{8AAA}',
-    '\u{5EC9}',
-    '\u{5FF5}',
-    '\u{637B}',
-    '\u{6BAE}',
-    '\u{7C3E}',
-    '\u{7375}',
-    '\u{4EE4}',
-    '\u{56F9}',
-    '\u{5BE7}',
-    '\u{5DBA}',
-    '\u{601C}',
-    '\u{73B2}',
-    '\u{7469}',
-    '\u{7F9A}',
-    '\u{8046}',
-    '\u{9234}',
-    '\u{96F6}',
-    '\u{9748}',
-    '\u{9818}',
-    '\u{4F8B}',
-    '\u{79AE}',
-    '\u{91B4}',
-    '\u{96B8}',
-    '\u{60E1}',
-    '\u{4E86}',
-    '\u{50DA}',
-    '\u{5BEE}',
-    '\u{5C3F}',
-    '\u{6599}',
-    '\u{6A02}',
-    '\u{71CE}',
-    '\u{7642}',
-    '\u{84FC}',
-    '\u{907C}',
-    '\u{9F8D}',
-    '\u{6688}',
-    '\u{962E}',
-    '\u{5289}',
-    '\u{677B}',
-    '\u{67F3}',
-    '\u{6D41}',
-    '\u{6E9C}',
-    '\u{7409}',
-    '\u{7559}',
-    '\u{786B}',
-    '\u{7D10}',
-    '\u{985E}',
-    '\u{516D}',
-    '\u{622E}',
-    '\u{9678}',
-    '\u{502B}',
-    '\u{5D19}',
-    '\u{6DEA}',
-    '\u{8F2A}',
-    '\u{5F8B}',
-    '\u{6144}',
-    '\u{6817}',
-    '\u{7387}',
-    '\u{9686}',
-    '\u{5229}',
-    '\u{540F}',
-    '\u{5C65}',
-    '\u{6613}',
-    '\u{674E}',
-    '\u{68A8}',
-    '\u{6CE5}',
-    '\u{7406}',
-    '\u{75E2}',
-    '\u{7F79}',
-    '\u{88CF}',
-    '\u{88E1}',
-    '\u{91CC}',
-    '\u{96E2}',
-    '\u{533F}',
-    '\u{6EBA}',
-    '\u{541D}',
-    '\u{71D0}',
-    '\u{7498}',
-    '\u{85FA}',
-    '\u{96A3}',
-    '\u{9C57}',
-    '\u{9E9F}',
-    '\u{6797}',
-    '\u{6DCB}',
-    '\u{81E8}',
-    '\u{7ACB}',
-    '\u{7B20}',
-    '\u{7C92}',
-    '\u{72C0}',
-    '\u{7099}',
-    '\u{8B58}',
-    '\u{4EC0}',
-    '\u{8336}',
-    '\u{523A}',
-    '\u{5207}',
-    '\u{5EA6}',
-    '\u{62D3}',
-    '\u{7CD6}',
-    '\u{5B85}',
-    '\u{6D1E}',
-    '\u{66B4}',
-    '\u{8F3B}',
-    '\u{884C}',
-    '\u{964D}',
-    '\u{898B}',
-    '\u{5ED3}',
-    '\u{5140}',
-    '\u{55C0}',
-    '\u{585A}',
-    '\u{6674}',
-    '\u{51DE}',
-    '\u{732A}',
-    '\u{76CA}',
-    '\u{793C}',
-    '\u{795E}',
-    '\u{7965}',
-    '\u{798F}',
-    '\u{9756}',
-    '\u{7CBE}',
-    '\u{7FBD}',
-    '\u{8612}',
-    '\u{8AF8}',
-    '\u{9038}',
-    '\u{90FD}',
-    '\u{98EF}',
-    '\u{98FC}',
-    '\u{9928}',
-    '\u{9DB4}',
-    '\u{90DE}',
-    '\u{96B7}',
-    '\u{4FAE}',
-    '\u{50E7}',
-    '\u{514D}',
-    '\u{52C9}',
-    '\u{52E4}',
-    '\u{5351}',
-    '\u{559D}',
-    '\u{5606}',
-    '\u{5668}',
-    '\u{5840}',
-    '\u{58A8}',
-    '\u{5C64}',
-    '\u{5C6E}',
-    '\u{6094}',
-    '\u{6168}',
-    '\u{618E}',
-    '\u{61F2}',
-    '\u{654F}',
-    '\u{65E2}',
-    '\u{6691}',
-    '\u{6885}',
-    '\u{6D77}',
-    '\u{6E1A}',
-    '\u{6F22}',
-    '\u{716E}',
-    '\u{722B}',
-    '\u{7422}',
-    '\u{7891}',
-    '\u{793E}',
-    '\u{7949}',
-    '\u{7948}',
-    '\u{7950}',
-    '\u{7956}',
-    '\u{795D}',
-    '\u{798D}',
-    '\u{798E}',
-    '\u{7A40}',
-    '\u{7A81}',
-    '\u{7BC0}',
-    '\u{7DF4}',
-    '\u{7E09}',
-    '\u{7E41}',
-    '\u{7F72}',
-    '\u{8005}',
-    '\u{81ED}',
-    '\u{8279}',
-    '\u{8279}',
-    '\u{8457}',
-    '\u{8910}',
-    '\u{8996}',
-    '\u{8B01}',
-    '\u{8B39}',
-    '\u{8CD3}',
-    '\u{8D08}',
-    '\u{8FB6}',
-    '\u{9038}',
-    '\u{96E3}',
-    '\u{97FF}',
-    '\u{983B}',
-    '\u{6075}',
-    '\u{242EE}',
-    '\u{8218}',
-    '\u{4E26}',
-    '\u{51B5}',
-    '\u{5168}',
-    '\u{4F80}',
-    '\u{5145}',
-    '\u{5180}',
-    '\u{52C7}',
-    '\u{52FA}',
-    '\u{559D}',
-    '\u{5555}',
-    '\u{5599}',
-    '\u{55E2}',
-    '\u{585A}',
-    '\u{58B3}',
-    '\u{5944}',
-    '\u{5954}',
-    '\u{5A62}',
-    '\u{5B28}',
-    '\u{5ED2}',
-    '\u{5ED9}',
-    '\u{5F69}',
-    '\u{5FAD}',
-    '\u{60D8}',
-    '\u{614E}',
-    '\u{6108}',
-    '\u{618E}',
-    '\u{6160}',
-    '\u{61F2}',
-    '\u{6234}',
-    '\u{63C4}',
-    '\u{641C}',
-    '\u{6452}',
-    '\u{6556}',
-    '\u{6674}',
-    '\u{6717}',
-    '\u{671B}',
-    '\u{6756}',
-    '\u{6B79}',
-    '\u{6BBA}',
-    '\u{6D41}',
-    '\u{6EDB}',
-    '\u{6ECB}',
-    '\u{6F22}',
-    '\u{701E}',
-    '\u{716E}',
-    '\u{77A7}',
-    '\u{7235}',
-    '\u{72AF}',
-    '\u{732A}',
-    '\u{7471}',
-    '\u{7506}',
-    '\u{753B}',
-    '\u{761D}',
-    '\u{761F}',
-    '\u{76CA}',
-    '\u{76DB}',
-    '\u{76F4}',
-    '\u{774A}',
-    '\u{7740}',
-    '\u{78CC}',
-    '\u{7AB1}',
-    '\u{7BC0}',
-    '\u{7C7B}',
-    '\u{7D5B}',
-    '\u{7DF4}',
-    '\u{7F3E}',
-    '\u{8005}',
-    '\u{8352}',
-    '\u{83EF}',
-    '\u{8779}',
-    '\u{8941}',
-    '\u{8986}',
-    '\u{8996}',
-    '\u{8ABF}',
-    '\u{8AF8}',
-    '\u{8ACB}',
-    '\u{8B01}',
-    '\u{8AFE}',
-    '\u{8AED}',
-    '\u{8B39}',
-    '\u{8B8A}',
-    '\u{8D08}',
-    '\u{8F38}',
-    '\u{9072}',
-    '\u{9199}',
-    '\u{9276}',
-    '\u{967C}',
-    '\u{96E3}',
-    '\u{9756}',
-    '\u{97DB}',
-    '\u{97FF}',
-    '\u{980B}',
-    '\u{983B}',
-    '\u{9B12}',
-    '\u{9F9C}',
-    '\u{2284A}',
-    '\u{22844}',
-    '\u{233D5}',
-    '\u{3B9D}',
-    '\u{4018}',
-    '\u{4039}',
-    '\u{25249}',
-    '\u{25CD0}',
-    '\u{27ED3}',
-    '\u{9F43}',
-    '\u{9F8E}',
-    '\u{05D9}',
-    '\u{05B4}',
-    '\u{05F2}',
-    '\u{05B7}',
-    '\u{05E9}',
-    '\u{05C1}',
-    '\u{05E9}',
-    '\u{05C2}',
-    '\u{05E9}',
-    '\u{05BC}',
-    '\u{05C1}',
-    '\u{05E9}',
-    '\u{05BC}',
-    '\u{05C2}',
-    '\u{05D0}',
-    '\u{05B7}',
-    '\u{05D0}',
-    '\u{05B8}',
-    '\u{05D0}',
-    '\u{05BC}',
-    '\u{05D1}',
-    '\u{05BC}',
-    '\u{05D2}',
-    '\u{05BC}',
-    '\u{05D3}',
-    '\u{05BC}',
-    '\u{05D4}',
-    '\u{05BC}',
-    '\u{05D5}',
-    '\u{05BC}',
-    '\u{05D6}',
-    '\u{05BC}',
-    '\u{05D8}',
-    '\u{05BC}',
-    '\u{05D9}',
-    '\u{05BC}',
-    '\u{05DA}',
-    '\u{05BC}',
-    '\u{05DB}',
-    '\u{05BC}',
-    '\u{05DC}',
-    '\u{05BC}',
-    '\u{05DE}',
-    '\u{05BC}',
-    '\u{05E0}',
-    '\u{05BC}',
-    '\u{05E1}',
-    '\u{05BC}',
-    '\u{05E3}',
-    '\u{05BC}',
-    '\u{05E4}',
-    '\u{05BC}',
-    '\u{05E6}',
-    '\u{05BC}',
-    '\u{05E7}',
-    '\u{05BC}',
-    '\u{05E8}',
-    '\u{05BC}',
-    '\u{05E9}',
-    '\u{05BC}',
-    '\u{05EA}',
-    '\u{05BC}',
-    '\u{05D5}',
-    '\u{05B9}',
-    '\u{05D1}',
-    '\u{05BF}',
-    '\u{05DB}',
-    '\u{05BF}',
-    '\u{05E4}',
-    '\u{05BF}',
-    '\u{11099}',
-    '\u{110BA}',
-    '\u{1109B}',
-    '\u{110BA}',
-    '\u{110A5}',
-    '\u{110BA}',
-    '\u{11131}',
-    '\u{11127}',
-    '\u{11132}',
-    '\u{11127}',
-    '\u{11347}',
-    '\u{1133E}',
-    '\u{11347}',
-    '\u{11357}',
-    '\u{114B9}',
-    '\u{114BA}',
-    '\u{114B9}',
-    '\u{114B0}',
-    '\u{114B9}',
-    '\u{114BD}',
-    '\u{115B8}',
-    '\u{115AF}',
-    '\u{115B9}',
-    '\u{115AF}',
-    '\u{11935}',
-    '\u{11930}',
-    '\u{1D157}',
-    '\u{1D165}',
-    '\u{1D158}',
-    '\u{1D165}',
-    '\u{1D158}',
-    '\u{1D165}',
-    '\u{1D16E}',
-    '\u{1D158}',
-    '\u{1D165}',
-    '\u{1D16F}',
-    '\u{1D158}',
-    '\u{1D165}',
-    '\u{1D170}',
-    '\u{1D158}',
-    '\u{1D165}',
-    '\u{1D171}',
-    '\u{1D158}',
-    '\u{1D165}',
-    '\u{1D172}',
-    '\u{1D1B9}',
-    '\u{1D165}',
-    '\u{1D1BA}',
-    '\u{1D165}',
-    '\u{1D1B9}',
-    '\u{1D165}',
-    '\u{1D16E}',
-    '\u{1D1BA}',
-    '\u{1D165}',
-    '\u{1D16E}',
-    '\u{1D1B9}',
-    '\u{1D165}',
-    '\u{1D16F}',
-    '\u{1D1BA}',
-    '\u{1D165}',
-    '\u{1D16F}',
-    '\u{4E3D}',
-    '\u{4E38}',
-    '\u{4E41}',
-    '\u{20122}',
-    '\u{4F60}',
-    '\u{4FAE}',
-    '\u{4FBB}',
-    '\u{5002}',
-    '\u{507A}',
-    '\u{5099}',
-    '\u{50E7}',
-    '\u{50CF}',
-    '\u{349E}',
-    '\u{2063A}',
-    '\u{514D}',
-    '\u{5154}',
-    '\u{5164}',
-    '\u{5177}',
-    '\u{2051C}',
-    '\u{34B9}',
-    '\u{5167}',
-    '\u{518D}',
-    '\u{2054B}',
-    '\u{5197}',
-    '\u{51A4}',
-    '\u{4ECC}',
-    '\u{51AC}',
-    '\u{51B5}',
-    '\u{291DF}',
-    '\u{51F5}',
-    '\u{5203}',
-    '\u{34DF}',
-    '\u{523B}',
-    '\u{5246}',
-    '\u{5272}',
-    '\u{5277}',
-    '\u{3515}',
-    '\u{52C7}',
-    '\u{52C9}',
-    '\u{52E4}',
-    '\u{52FA}',
-    '\u{5305}',
-    '\u{5306}',
-    '\u{5317}',
-    '\u{5349}',
-    '\u{5351}',
-    '\u{535A}',
-    '\u{5373}',
-    '\u{537D}',
-    '\u{537F}',
-    '\u{537F}',
-    '\u{537F}',
-    '\u{20A2C}',
-    '\u{7070}',
-    '\u{53CA}',
-    '\u{53DF}',
-    '\u{20B63}',
-    '\u{53EB}',
-    '\u{53F1}',
-    '\u{5406}',
-    '\u{549E}',
-    '\u{5438}',
-    '\u{5448}',
-    '\u{5468}',
-    '\u{54A2}',
-    '\u{54F6}',
-    '\u{5510}',
-    '\u{5553}',
-    '\u{5563}',
-    '\u{5584}',
-    '\u{5584}',
-    '\u{5599}',
-    '\u{55AB}',
-    '\u{55B3}',
-    '\u{55C2}',
-    '\u{5716}',
-    '\u{5606}',
-    '\u{5717}',
-    '\u{5651}',
-    '\u{5674}',
-    '\u{5207}',
-    '\u{58EE}',
-    '\u{57CE}',
-    '\u{57F4}',
-    '\u{580D}',
-    '\u{578B}',
-    '\u{5832}',
-    '\u{5831}',
-    '\u{58AC}',
-    '\u{214E4}',
-    '\u{58F2}',
-    '\u{58F7}',
-    '\u{5906}',
-    '\u{591A}',
-    '\u{5922}',
-    '\u{5962}',
-    '\u{216A8}',
-    '\u{216EA}',
-    '\u{59EC}',
-    '\u{5A1B}',
-    '\u{5A27}',
-    '\u{59D8}',
-    '\u{5A66}',
-    '\u{36EE}',
-    '\u{36FC}',
-    '\u{5B08}',
-    '\u{5B3E}',
-    '\u{5B3E}',
-    '\u{219C8}',
-    '\u{5BC3}',
-    '\u{5BD8}',
-    '\u{5BE7}',
-    '\u{5BF3}',
-    '\u{21B18}',
-    '\u{5BFF}',
-    '\u{5C06}',
-    '\u{5F53}',
-    '\u{5C22}',
-    '\u{3781}',
-    '\u{5C60}',
-    '\u{5C6E}',
-    '\u{5CC0}',
-    '\u{5C8D}',
-    '\u{21DE4}',
-    '\u{5D43}',
-    '\u{21DE6}',
-    '\u{5D6E}',
-    '\u{5D6B}',
-    '\u{5D7C}',
-    '\u{5DE1}',
-    '\u{5DE2}',
-    '\u{382F}',
-    '\u{5DFD}',
-    '\u{5E28}',
-    '\u{5E3D}',
-    '\u{5E69}',
-    '\u{3862}',
-    '\u{22183}',
-    '\u{387C}',
-    '\u{5EB0}',
-    '\u{5EB3}',
-    '\u{5EB6}',
-    '\u{5ECA}',
-    '\u{2A392}',
-    '\u{5EFE}',
-    '\u{22331}',
-    '\u{22331}',
-    '\u{8201}',
-    '\u{5F22}',
-    '\u{5F22}',
-    '\u{38C7}',
-    '\u{232B8}',
-    '\u{261DA}',
-    '\u{5F62}',
-    '\u{5F6B}',
-    '\u{38E3}',
-    '\u{5F9A}',
-    '\u{5FCD}',
-    '\u{5FD7}',
-    '\u{5FF9}',
-    '\u{6081}',
-    '\u{393A}',
-    '\u{391C}',
-    '\u{6094}',
-    '\u{226D4}',
-    '\u{60C7}',
-    '\u{6148}',
-    '\u{614C}',
-    '\u{614E}',
-    '\u{614C}',
-    '\u{617A}',
-    '\u{618E}',
-    '\u{61B2}',
-    '\u{61A4}',
-    '\u{61AF}',
-    '\u{61DE}',
-    '\u{61F2}',
-    '\u{61F6}',
-    '\u{6210}',
-    '\u{621B}',
-    '\u{625D}',
-    '\u{62B1}',
-    '\u{62D4}',
-    '\u{6350}',
-    '\u{22B0C}',
-    '\u{633D}',
-    '\u{62FC}',
-    '\u{6368}',
-    '\u{6383}',
-    '\u{63E4}',
-    '\u{22BF1}',
-    '\u{6422}',
-    '\u{63C5}',
-    '\u{63A9}',
-    '\u{3A2E}',
-    '\u{6469}',
-    '\u{647E}',
-    '\u{649D}',
-    '\u{6477}',
-    '\u{3A6C}',
-    '\u{654F}',
-    '\u{656C}',
-    '\u{2300A}',
-    '\u{65E3}',
-    '\u{66F8}',
-    '\u{6649}',
-    '\u{3B19}',
-    '\u{6691}',
-    '\u{3B08}',
-    '\u{3AE4}',
-    '\u{5192}',
-    '\u{5195}',
-    '\u{6700}',
-    '\u{669C}',
-    '\u{80AD}',
-    '\u{43D9}',
-    '\u{6717}',
-    '\u{671B}',
-    '\u{6721}',
-    '\u{675E}',
-    '\u{6753}',
-    '\u{233C3}',
-    '\u{3B49}',
-    '\u{67FA}',
-    '\u{6785}',
-    '\u{6852}',
-    '\u{6885}',
-    '\u{2346D}',
-    '\u{688E}',
-    '\u{681F}',
-    '\u{6914}',
-    '\u{3B9D}',
-    '\u{6942}',
-    '\u{69A3}',
-    '\u{69EA}',
-    '\u{6AA8}',
-    '\u{236A3}',
-    '\u{6ADB}',
-    '\u{3C18}',
-    '\u{6B21}',
-    '\u{238A7}',
-    '\u{6B54}',
-    '\u{3C4E}',
-    '\u{6B72}',
-    '\u{6B9F}',
-    '\u{6BBA}',
-    '\u{6BBB}',
-    '\u{23A8D}',
-    '\u{21D0B}',
-    '\u{23AFA}',
-    '\u{6C4E}',
-    '\u{23CBC}',
-    '\u{6CBF}',
-    '\u{6CCD}',
-    '\u{6C67}',
-    '\u{6D16}',
-    '\u{6D3E}',
-    '\u{6D77}',
-    '\u{6D41}',
-    '\u{6D69}',
-    '\u{6D78}',
-    '\u{6D85}',
-    '\u{23D1E}',
-    '\u{6D34}',
-    '\u{6E2F}',
-    '\u{6E6E}',
-    '\u{3D33}',
-    '\u{6ECB}',
-    '\u{6EC7}',
-    '\u{23ED1}',
-    '\u{6DF9}',
-    '\u{6F6E}',
-    '\u{23F5E}',
-    '\u{23F8E}',
-    '\u{6FC6}',
-    '\u{7039}',
-    '\u{701E}',
-    '\u{701B}',
-    '\u{3D96}',
-    '\u{704A}',
-    '\u{707D}',
-    '\u{7077}',
-    '\u{70AD}',
-    '\u{20525}',
-    '\u{7145}',
-    '\u{24263}',
-    '\u{719C}',
-    '\u{243AB}',
-    '\u{7228}',
-    '\u{7235}',
-    '\u{7250}',
-    '\u{24608}',
-    '\u{7280}',
-    '\u{7295}',
-    '\u{24735}',
-    '\u{24814}',
-    '\u{737A}',
-    '\u{738B}',
-    '\u{3EAC}',
-    '\u{73A5}',
-    '\u{3EB8}',
-    '\u{3EB8}',
-    '\u{7447}',
-    '\u{745C}',
-    '\u{7471}',
-    '\u{7485}',
-    '\u{74CA}',
-    '\u{3F1B}',
-    '\u{7524}',
-    '\u{24C36}',
-    '\u{753E}',
-    '\u{24C92}',
-    '\u{7570}',
-    '\u{2219F}',
-    '\u{7610}',
-    '\u{24FA1}',
-    '\u{24FB8}',
-    '\u{25044}',
-    '\u{3FFC}',
-    '\u{4008}',
-    '\u{76F4}',
-    '\u{250F3}',
-    '\u{250F2}',
-    '\u{25119}',
-    '\u{25133}',
-    '\u{771E}',
-    '\u{771F}',
-    '\u{771F}',
-    '\u{774A}',
-    '\u{4039}',
-    '\u{778B}',
-    '\u{4046}',
-    '\u{4096}',
-    '\u{2541D}',
-    '\u{784E}',
-    '\u{788C}',
-    '\u{78CC}',
-    '\u{40E3}',
-    '\u{25626}',
-    '\u{7956}',
-    '\u{2569A}',
-    '\u{256C5}',
-    '\u{798F}',
-    '\u{79EB}',
-    '\u{412F}',
-    '\u{7A40}',
-    '\u{7A4A}',
-    '\u{7A4F}',
-    '\u{2597C}',
-    '\u{25AA7}',
-    '\u{25AA7}',
-    '\u{7AEE}',
-    '\u{4202}',
-    '\u{25BAB}',
-    '\u{7BC6}',
-    '\u{7BC9}',
-    '\u{4227}',
-    '\u{25C80}',
-    '\u{7CD2}',
-    '\u{42A0}',
-    '\u{7CE8}',
-    '\u{7CE3}',
-    '\u{7D00}',
-    '\u{25F86}',
-    '\u{7D63}',
-    '\u{4301}',
-    '\u{7DC7}',
-    '\u{7E02}',
-    '\u{7E45}',
-    '\u{4334}',
-    '\u{26228}',
-    '\u{26247}',
-    '\u{4359}',
-    '\u{262D9}',
-    '\u{7F7A}',
-    '\u{2633E}',
-    '\u{7F95}',
-    '\u{7FFA}',
-    '\u{8005}',
-    '\u{264DA}',
-    '\u{26523}',
-    '\u{8060}',
-    '\u{265A8}',
-    '\u{8070}',
-    '\u{2335F}',
-    '\u{43D5}',
-    '\u{80B2}',
-    '\u{8103}',
-    '\u{440B}',
-    '\u{813E}',
-    '\u{5AB5}',
-    '\u{267A7}',
-    '\u{267B5}',
-    '\u{23393}',
-    '\u{2339C}',
-    '\u{8201}',
-    '\u{8204}',
-    '\u{8F9E}',
-    '\u{446B}',
-    '\u{8291}',
-    '\u{828B}',
-    '\u{829D}',
-    '\u{52B3}',
-    '\u{82B1}',
-    '\u{82B3}',
-    '\u{82BD}',
-    '\u{82E6}',
-    '\u{26B3C}',
-    '\u{82E5}',
-    '\u{831D}',
-    '\u{8363}',
-    '\u{83AD}',
-    '\u{8323}',
-    '\u{83BD}',
-    '\u{83E7}',
-    '\u{8457}',
-    '\u{8353}',
-    '\u{83CA}',
-    '\u{83CC}',
-    '\u{83DC}',
-    '\u{26C36}',
-    '\u{26D6B}',
-    '\u{26CD5}',
-    '\u{452B}',
-    '\u{84F1}',
-    '\u{84F3}',
-    '\u{8516}',
-    '\u{273CA}',
-    '\u{8564}',
-    '\u{26F2C}',
-    '\u{455D}',
-    '\u{4561}',
-    '\u{26FB1}',
-    '\u{270D2}',
-    '\u{456B}',
-    '\u{8650}',
-    '\u{865C}',
-    '\u{8667}',
-    '\u{8669}',
-    '\u{86A9}',
-    '\u{8688}',
-    '\u{870E}',
-    '\u{86E2}',
-    '\u{8779}',
-    '\u{8728}',
-    '\u{876B}',
-    '\u{8786}',
-    '\u{45D7}',
-    '\u{87E1}',
-    '\u{8801}',
-    '\u{45F9}',
-    '\u{8860}',
-    '\u{8863}',
-    '\u{27667}',
-    '\u{88D7}',
-    '\u{88DE}',
-    '\u{4635}',
-    '\u{88FA}',
-    '\u{34BB}',
-    '\u{278AE}',
-    '\u{27966}',
-    '\u{46BE}',
-    '\u{46C7}',
-    '\u{8AA0}',
-    '\u{8AED}',
-    '\u{8B8A}',
-    '\u{8C55}',
-    '\u{27CA8}',
-    '\u{8CAB}',
-    '\u{8CC1}',
-    '\u{8D1B}',
-    '\u{8D77}',
-    '\u{27F2F}',
-    '\u{20804}',
-    '\u{8DCB}',
-    '\u{8DBC}',
-    '\u{8DF0}',
-    '\u{208DE}',
-    '\u{8ED4}',
-    '\u{8F38}',
-    '\u{285D2}',
-    '\u{285ED}',
-    '\u{9094}',
-    '\u{90F1}',
-    '\u{9111}',
-    '\u{2872E}',
-    '\u{911B}',
-    '\u{9238}',
-    '\u{92D7}',
-    '\u{92D8}',
-    '\u{927C}',
-    '\u{93F9}',
-    '\u{9415}',
-    '\u{28BFA}',
-    '\u{958B}',
-    '\u{4995}',
-    '\u{95B7}',
-    '\u{28D77}',
-    '\u{49E6}',
-    '\u{96C3}',
-    '\u{5DB2}',
-    '\u{9723}',
-    '\u{29145}',
-    '\u{2921A}',
-    '\u{4A6E}',
-    '\u{4A76}',
-    '\u{97E0}',
-    '\u{2940A}',
-    '\u{4AB2}',
-    '\u{29496}',
-    '\u{980B}',
-    '\u{980B}',
-    '\u{9829}',
-    '\u{295B6}',
-    '\u{98E2}',
-    '\u{4B33}',
-    '\u{9929}',
-    '\u{99A7}',
-    '\u{99C2}',
-    '\u{99FE}',
-    '\u{4BCE}',
-    '\u{29B30}',
-    '\u{9B12}',
-    '\u{9C40}',
-    '\u{9CFD}',
-    '\u{4CCE}',
-    '\u{4CED}',
-    '\u{9D67}',
-    '\u{2A0CE}',
-    '\u{4CF8}',
-    '\u{2A105}',
-    '\u{2A20E}',
-    '\u{2A291}',
-    '\u{9EBB}',
-    '\u{4D56}',
-    '\u{9EF9}',
-    '\u{9EFE}',
-    '\u{9F05}',
-    '\u{9F0F}',
-    '\u{9F16}',
-    '\u{9F3B}',
-    '\u{2A600}',
-];
-pub(crate) const CANONICAL_DECOMPOSED_SALT: &[u16] = &[
-    0xcae,
-    0xe,
-    0x0,
-    0x0,
-    0x45a,
-    0x23f,
-    0x0,
-    0x1e8,
-    0x28,
-    0x280,
-    0x0,
-    0x6,
-    0x14c,
-    0x201,
-    0x6,
-    0x20,
-    0x3,
-    0x0,
-    0x71,
-    0x18b,
-    0xd,
-    0x14d,
-    0xd3,
-    0x0,
-    0x2,
-    0x85,
-    0x45,
-    0xa,
-    0x4,
-    0xe9,
-    0x21,
-    0x0,
-    0x0,
-    0xaa,
-    0x2,
-    0x105,
-    0x0,
-    0x1b5,
-    0xd,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x67,
-    0x8,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x47,
-    0x32,
-    0x0,
-    0x0,
-    0x3c,
-    0x45,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x10,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xce,
-    0x2c,
-    0x0,
-    0x1d,
-    0x0,
-    0x12,
-    0x0,
-    0x0,
-    0x11,
-    0x3,
-    0x1c,
-    0x7,
-    0x0,
-    0x1,
-    0x6a,
-    0x1,
-    0x16,
-    0x0,
-    0x6f,
-    0x0,
-    0x1,
-    0x25,
-    0x0,
-    0x27,
-    0x10,
-    0x0,
-    0x22,
-    0x0,
-    0xbc,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x15,
-    0x0,
-    0x0,
-    0x13,
-    0x0,
-    0x87,
-    0x0,
-    0x3a,
-    0x27,
-    0x0,
-    0x5,
-    0x16,
-    0x5,
-    0x14,
-    0x12,
-    0x21,
-    0x5,
-    0x2,
-    0x1,
-    0x0,
-    0x15,
-    0x26,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x17,
-    0x19,
-    0x0,
-    0x4,
-    0x0,
-    0x3,
-    0x0,
-    0x10,
-    0x1,
-    0x1,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x22,
-    0x0,
-    0x2,
-    0x4,
-    0x13,
-    0x0,
-    0x11,
-    0x5a,
-    0x5,
-    0x13,
-    0xd,
-    0x4e,
-    0x8,
-    0x4,
-    0x18,
-    0x9,
-    0x64,
-    0x26,
-    0x0,
-    0x11,
-    0x0,
-    0x5,
-    0x30,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x3e,
-    0x46,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x37,
-    0x0,
-    0x0,
-    0x5,
-    0x3,
-    0x0,
-    0x13,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0xb,
-    0x1c,
-    0x1,
-    0x0,
-    0x5,
-    0x2f,
-    0x1,
-    0x0,
-    0x8,
-    0x1d,
-    0x30,
-    0x0,
-    0x25,
-    0x2,
-    0x12,
-    0x0,
-    0x0,
-    0x23,
-    0x2,
-    0x0,
-    0x0,
-    0xb,
-    0x18,
-    0xe,
-    0x0,
-    0x11,
-    0xc,
-    0x15,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x8,
-    0x8,
-    0x8,
-    0x0,
-    0x0,
-    0x9,
-    0xe,
-    0x0,
-    0x1,
-    0x9,
-    0x2c,
-    0x3,
-    0x1,
-    0x16,
-    0x11,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x18,
-    0x1,
-    0x30,
-    0x4,
-    0xc,
-    0xe,
-    0x9,
-    0x0,
-    0x3,
-    0xb,
-    0x0,
-    0x2,
-    0x5,
-    0x0,
-    0x10,
-    0x3,
-    0x2,
-    0x6,
-    0xb,
-    0x8,
-    0xa,
-    0x0,
-    0x8,
-    0x3,
-    0x1,
-    0x25,
-    0x3,
-    0x1b,
-    0x2,
-    0x12,
-    0x5,
-    0x7,
-    0x12,
-    0x0,
-    0x10,
-    0x0,
-    0x11,
-    0x0,
-    0x9,
-    0x0,
-    0x9,
-    0x0,
-    0xc,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x17,
-    0x0,
-    0x0,
-    0x3,
-    0xc,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x43,
-    0x0,
-    0x0,
-    0xb,
-    0x5,
-    0x9,
-    0x0,
-    0x0,
-    0x22,
-    0x2,
-    0x4,
-    0x2,
-    0x2,
-    0x1,
-    0x1,
-    0x14,
-    0x1,
-    0x31,
-    0x0,
-    0x4,
-    0x20,
-    0x9,
-    0x7,
-    0x1,
-    0x21,
-    0x16,
-    0x1,
-    0x2,
-    0x0,
-    0x6,
-    0x0,
-    0xe,
-    0x0,
-    0x5,
-    0x12,
-    0xe,
-    0x4,
-    0x0,
-    0x0,
-    0x1d,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0xa,
-    0x0,
-    0x0,
-    0x0,
-    0x16,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x1,
-    0x0,
-    0xb,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x16,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1d,
-    0x7,
-    0x0,
-    0x1,
-    0x6,
-    0x4,
-    0x1,
-    0x3,
-    0xe,
-    0x9,
-    0x10,
-    0x8,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x2,
-    0x2,
-    0x22,
-    0x0,
-    0x0,
-    0x4,
-    0x13,
-    0x11,
-    0x0,
-    0x2,
-    0xd,
-    0x0,
-    0x1,
-    0x4,
-    0xc,
-    0x1,
-    0x16,
-    0xe,
-    0x2,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x15,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0xc,
-    0x0,
-    0x5,
-    0x4,
-    0x0,
-    0x0,
-    0x11,
-    0xd,
-    0x11,
-    0x0,
-    0x4,
-    0x0,
-    0x3,
-    0x2,
-    0x1,
-    0x3,
-    0x1,
-    0x2,
-    0x2,
-    0x2,
-    0x1,
-    0x1,
-    0x3,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x2,
-    0x1,
-    0xd,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x6,
-    0xd,
-    0x1,
-    0x1,
-    0x4,
-    0xc,
-    0x2,
-    0x6,
-    0x0,
-    0x4,
-    0x27,
-    0x1c,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xa,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xf,
-    0x7,
-    0x8,
-    0x0,
-    0x3,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xf,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x16,
-    0xb,
-    0x5,
-    0x0,
-    0x0,
-    0x2,
-    0x8,
-    0x4,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x4,
-    0x0,
-    0x1,
-    0xb,
-    0x1,
-    0x0,
-    0x0,
-    0x18,
-    0x9,
-    0x4,
-    0x7,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1e,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x3,
-    0xa,
-    0x2,
-    0x3,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x4,
-    0x1f,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x24,
-    0x7,
-    0x5,
-    0x2,
-    0x2,
-    0xa,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0xc,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0xb,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x6,
-    0x2,
-    0xc,
-    0xe,
-    0x1e,
-    0x0,
-    0x0,
-    0x10,
-    0x0,
-    0x1,
-    0x2,
-    0xd,
-    0x3,
-    0x0,
-    0x6,
-    0x0,
-    0x2,
-    0xa,
-    0x4,
-    0x0,
-    0xf,
-    0x10,
-    0x2,
-    0x1,
-    0x2,
-    0x6,
-    0x0,
-    0x0,
-    0xb,
-    0x0,
-    0x5,
-    0xd,
-    0x2,
-    0x0,
-    0x3,
-    0x7,
-    0x0,
-    0x5,
-    0x4,
-    0x0,
-    0x0,
-    0x6,
-    0x1,
-    0x0,
-    0x0,
-    0xf,
-    0x3,
-    0x0,
-    0x0,
-    0xc,
-    0x0,
-    0x17,
-    0x2,
-    0x9,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x7,
-    0x1,
-    0x3,
-    0xd,
-    0x0,
-    0x5,
-    0x7,
-    0x4,
-    0x8,
-    0x0,
-    0xb,
-    0x8,
-    0x9,
-    0x1,
-    0x0,
-    0x0,
-    0x9,
-    0x5,
-    0x0,
-    0x8,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x8,
-    0x0,
-    0x7,
-    0x0,
-    0x2,
-    0x2,
-    0x5,
-    0x4,
-    0x5,
-    0x0,
-    0x0,
-    0x1,
-    0x13,
-    0x8,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xa,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xc,
-    0x2,
-    0x4,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x4,
-    0x0,
-    0x3,
-    0x2,
-    0x7,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x7,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x9,
-    0x2,
-    0x2,
-    0x6,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x6,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0x4,
-    0x1,
-    0x2,
-    0x11,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0xe,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x10,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x2,
-    0x6,
-    0x0,
-    0x9,
-    0x0,
-    0x6,
-    0x0,
-    0x1,
-    0x6,
-    0x5,
-    0x1,
-    0x1,
-    0x2,
-    0x8,
-    0x2,
-    0x3,
-    0x1,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0xd,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x2f,
-    0x1,
-    0x2,
-    0x1,
-    0x6,
-    0x15,
-    0x0,
-    0x0,
-    0x0,
-    0xc,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1a,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x7,
-    0x0,
-    0x9,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x0,
-    0xa,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xe,
-    0x2,
-    0x2,
-    0x9,
-    0x2,
-    0xb,
-    0x2,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0xa,
-    0x3,
-    0x1,
-    0x1,
-    0x2,
-    0x2,
-    0x2,
-    0x0,
-    0x2,
-    0x9,
-    0x0,
-    0x0,
-    0x1,
-    0x6,
-    0x1,
-    0x0,
-    0x7,
-    0x18,
-    0x1,
-    0x0,
-    0x7,
-    0x1,
-    0x1,
-    0x0,
-    0x19,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xb,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x2,
-    0x6,
-    0x2,
-    0x1,
-    0x5,
-    0x1,
-    0x6,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x1c,
-    0x6,
-    0x2,
-    0x2,
-    0x3,
-    0x1,
-    0x8,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x16,
-    0x6,
-    0xb,
-    0x0,
-    0x4,
-    0x4,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x16,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x9,
-    0xf,
-    0x5,
-    0x0,
-    0x1,
-    0x1,
-    0x8,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x8,
-    0x1,
-    0x2,
-    0x1,
-    0x3,
-    0x2,
-    0x0,
-    0x2,
-    0x4,
-    0x1,
-    0x1,
-    0x4,
-    0x0,
-    0xf,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x9,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x4,
-    0x1,
-    0x0,
-    0x7,
-    0x5,
-    0x3,
-    0x2,
-    0xa,
-    0x2,
-    0x3,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x2,
-    0xa,
-    0x0,
-    0x1,
-    0x6,
-    0x5,
-    0x0,
-    0x2,
-    0x3,
-    0x1,
-    0x8,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x14,
-    0x0,
-    0x1,
-    0x2,
-    0x5,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x9,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0xd,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0xe,
-    0x0,
-    0x2,
-    0x17,
-    0x5,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x8,
-    0x0,
-    0x1,
-    0x9,
-    0x3,
-    0x0,
-    0x1,
-    0x7,
-    0x0,
-    0x4,
-    0x1,
-    0x8,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x5,
-    0x0,
-    0x5,
-    0x4,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x2,
-    0x3,
-    0x1,
-    0xf,
-    0x1,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0x2,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x8,
-    0x6,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0xa,
-    0x4,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x9,
-    0x1,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x10,
-    0x1,
-    0x2,
-    0x5,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x2,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x1,
-    0x3,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x6,
-    0x4,
-    0x1,
-    0x1,
-    0x2,
-    0x8,
-    0x3,
-    0x3,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x1,
-    0xe,
-    0x20,
-    0x0,
-    0x1,
-    0x1,
-    0xc,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0xa,
-    0x2,
-    0x1,
-    0x4,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x6,
-    0x0,
-    0x3,
-    0x0,
-    0x4,
-    0x1,
-    0x7,
-    0x1,
-    0x6,
-    0x8,
-    0x1,
-    0x7,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x3,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x1,
-    0x8,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x6,
-    0x2,
-    0x0,
-    0x2,
-    0x4,
-    0x6,
-    0x1,
-    0x4,
-    0x3,
-    0x6,
-    0x1,
-    0x3,
-    0x2,
-    0x4,
-    0x2,
-    0x0,
-    0x6,
-    0x2,
-    0x0,
-    0x5,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x2,
-    0x2,
-    0x7,
-    0x3,
-    0x3,
-    0x0,
-    0x1,
-    0x7,
-    0x1,
-    0xe,
-    0x0,
-    0x1,
-    0x0,
-    0xb,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x6,
-    0x3,
-    0x2,
-    0x6,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x2,
-    0x3,
-    0x0,
-    0x3,
-    0x1,
-    0x2,
-    0x4,
-    0x3,
-    0x0,
-    0x0,
-    0x10,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x5,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x4,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x7,
-    0xb,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x2,
-    0x1,
-    0x7,
-    0x1,
-    0x4,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x2,
-    0x2,
-    0x5,
-    0x1,
-    0x1,
-    0x9,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x8,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x4,
-    0x9,
-    0x6,
-    0x0,
-    0x9,
-    0x6,
-    0x2,
-    0x1,
-    0x3,
-    0x1,
-    0x1,
-    0x2,
-    0x4,
-    0x2,
-    0x3,
-    0x2,
-    0x0,
-    0x6,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x5,
-    0xa,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xd,
-    0x0,
-    0x0,
-    0x3,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x4,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x2,
-    0x3,
-    0x5,
-    0x5,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x1,
-    0x10,
-    0x1,
-    0x3,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x1,
-    0x6,
-    0x5,
-    0x1,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x7,
-    0x1,
-    0x2,
-    0x3,
-    0x0,
-    0x6,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x5,
-    0x2,
-    0x2,
-    0x2,
-    0x0,
-    0x2,
-    0x7,
-    0x5,
-    0x3,
-    0x1,
-    0x0,
-    0xa,
-    0x1,
-    0x1,
-    0x4,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x1,
-    0x3,
-    0x3,
-    0x1,
-    0x4,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x3,
-    0x1,
-    0x5,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xa,
-    0x1,
-    0x2,
-    0x2,
-    0x1,
-    0x3,
-    0x0,
-    0x6,
-    0x1,
-    0x3,
-    0x6,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x5,
-    0x4,
-    0x1,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-    0x4,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x4,
-    0xa,
-    0x0,
-    0x3,
-    0x4,
-    0x5,
-    0x5,
-    0x7,
-    0x3,
-    0x3,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x9,
-    0x3,
-    0x10,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x5,
-    0x2,
-    0x0,
-    0x5,
-    0x0,
-    0x1,
-    0x1,
-    0x4,
-    0x0,
-    0x7,
-    0x6,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x7,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x5,
-    0x2,
-    0x6,
-    0x1,
-    0x2,
-    0x5,
-    0x6,
-    0x2,
-    0x4,
-    0x0,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x3,
-    0x6,
-    0x1,
-    0x1,
-    0x1,
-    0x3,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x4,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x2,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x2,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x4,
-    0x2,
-    0xb,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x2,
-    0x0,
-    0x1,
-    0x4,
-    0x1,
-    0x2,
-    0x2,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x4,
-    0x4,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0xd,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x6,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x2,
-    0x9,
-    0x3,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x3,
-    0x1,
-    0x4,
-    0x0,
-    0x2,
-    0x7,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x5,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x7,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x6,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x2,
-    0x6,
-    0x1,
-    0x1,
-    0x7,
-    0x0,
-    0x1,
-    0x2,
-    0x5,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x3,
-    0x2,
-    0x2,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-];
-pub(crate) const CANONICAL_DECOMPOSED_KV: &[(u32, (u16, u16))] = &[
-    (0x4ee, (666, 2)),
-    (0x2f869, (2969, 1)),
-    (0x30b2, (2217, 2)),
-    (0x1f2e, (1546, 3)),
-    (0x120, (166, 2)),
-    (0xf905, (2278, 1)),
-    (0xf9e8, (2505, 1)),
-    (0x1e3a, (978, 2)),
-    (0xf965, (2374, 1)),
-    (0x1ebd, (1270, 2)),
-    (0x2f83a, (2922, 1)),
-    (0x101, (108, 2)),
-    (0xf986, (2407, 1)),
-    (0xfa57, (2604, 1)),
-    (0x1f91, (1796, 3)),
-    (0x4df, (644, 2)),
-    (0x1e2, (382, 2)),
-    (0x229, (498, 2)),
-    (0x1af, (326, 2)),
-    (0xfa66, (2619, 1)),
-    (0x1f39, (1576, 2)),
-    (0x1e7a, (1124, 3)),
-    (0x1f6c, (1693, 3)),
-    (0xfaa8, (2683, 1)),
-    (0x2f8ce, (3070, 1)),
-    (0x128, (178, 2)),
-    (0xfa4b, (2592, 1)),
-    (0x2f818, (2888, 1)),
-    (0x2f988, (3256, 1)),
-    (0xf974, (2389, 1)),
-    (0x1ea9, (1215, 3)),
-    (0x1f51, (1630, 2)),
-    (0x2f833, (2915, 1)),
-    (0x2f8fc, (3116, 1)),
-    (0x38f, (548, 2)),
-    (0xfa3e, (2579, 1)),
-    (0xfa5e, (2611, 1)),
-    (0xfa1e, (2554, 1)),
-    (0x2f9f7, (3367, 1)),
-    (0x15f, (262, 2)),
-    (0x1e35, (966, 2)),
-    (0xfb47, (2787, 2)),
-    (0x2f962, (3218, 1)),
-    (0xfa86, (2649, 1)),
-    (0xf92f, (2320, 1)),
-    (0x2f8dd, (3085, 1)),
-    (0xf73, (804, 2)),
-    (0x1e15, (895, 3)),
-    (0x1ed0, (1318, 3)),
-    (0xf9ca, (2475, 1)),
-    (0x4e6, (654, 2)),
-    (0x1fa2, (1859, 4)),
-    (0x2f999, (3273, 1)),
-    (0x1fc2, (1943, 3)),
-    (0x2f8c7, (3063, 1)),
-    (0xfabc, (2703, 1)),
-    (0x30b4, (2219, 2)),
-    (0x2f9b9, (3305, 1)),
-    (0x1e73, (1108, 2)),
-    (0xf95b, (2364, 1)),
-    (0x2f952, (3202, 1)),
-    (0xfa5f, (2612, 1)),
-    (0x1b08, (830, 2)),
-    (0x2204, (2077, 2)),
-    (0x1ea2, (1196, 2)),
-    (0x1ea, (394, 2)),
-    (0x129, (180, 2)),
-    (0xf920, (2305, 1)),
-    (0x1f85, (1751, 4)),
-    (0x1e93, (1176, 2)),
-    (0x2f9b2, (3298, 1)),
-    (0x2f821, (2897, 1)),
-    (0x2f9d6, (3334, 1)),
-    (0xfa65, (2618, 1)),
-    (0xf971, (2386, 1)),
-    (0x230, (516, 3)),
-    (0x16d, (286, 2)),
-    (0x21b, (486, 2)),
-    (0x2f9d4, (3332, 1)),
-    (0x1d161, (2836, 3)),
-    (0xfa94, (2663, 1)),
-    (0x403, (586, 2)),
-    (0x16a, (280, 2)),
-    (0x958, (708, 2)),
-    (0x2f922, (3154, 1)),
-    (0xf93d, (2334, 1)),
-    (0x1e39, (975, 3)),
-    (0x2f870, (2976, 1)),
-    (0x1eae, (1230, 3)),
-    (0x1f35, (1565, 3)),
-    (0xfa2f, (2564, 1)),
-    (0x15e, (260, 2)),
-    (0x1e43, (996, 2)),
-    (0x2f842, (2930, 1)),
-    (0xf9b1, (2450, 1)),
-    (0xfa5d, (2610, 1)),
-    (0xf9d2, (2483, 1)),
-    (0x1ed8, (1342, 3)),
-    (0xfaca, (2717, 1)),
-    (0x1edc, (1354, 3)),
-    (0x2f9fd, (3373, 1)),
-    (0x2f90b, (3131, 1)),
-    (0x1ec9, (1304, 2)),
-    (0x2329, (2153, 1)),
-    (0x1e96, (1182, 2)),
-    (0x2f9a0, (3280, 1)),
-    (0xf9d0, (2481, 1)),
-    (0x4ed, (664, 2)),
-    (0xc2, (4, 2)),
-    (0x1e79, (1121, 3)),
-    (0x4f1, (672, 2)),
-    (0x1fd0, (1972, 2)),
-    (0x1ef5, (1422, 2)),
-    (0x125, (176, 2)),
-    (0xfb2c, (2741, 3)),
-    (0x387, (537, 1)),
-    (0xf9ef, (2512, 1)),
-    (0x2f9f5, (3365, 1)),
-    (0x170, (292, 2)),
-    (0x2270, (2105, 2)),
-    (0x2f9cc, (3324, 1)),
-    (0xfa6d, (2626, 1)),
-    (0xf980, (2401, 1)),
-    (0xf907, (2280, 1)),
-    (0x2f857, (2951, 1)),
-    (0x1eb9, (1262, 2)),
-    (0x2f8d5, (3077, 1)),
-    (0xf9f9, (2522, 1)),
-    (0x2f8a2, (3026, 1)),
-    (0xf94b, (2348, 1)),
-    (0x2f87e, (2990, 1)),
-    (0xf91f, (2304, 1)),
-    (0xf9ec, (2509, 1)),
-    (0x4f4, (678, 2)),
-    (0x451, (602, 2)),
-    (0x22ad, (2131, 2)),
-    (0x2f917, (3143, 1)),
-    (0x2f861, (2961, 1)),
-    (0xf91d, (2302, 1)),
-    (0xfa96, (2665, 1)),
-    (0xf6, (92, 2)),
-    (0x1e27, (936, 2)),
-    (0x1f48, (1612, 2)),
-    (0x1feb, (2026, 2)),
-    (0x1ee5, (1380, 2)),
-    (0x2f99f, (3279, 1)),
-    (0x2f8e8, (3096, 1)),
-    (0xf9df, (2496, 1)),
-    (0x1eaf, (1233, 3)),
-    (0xf92a, (2315, 1)),
-    (0xfa78, (2635, 1)),
-    (0xfa6c, (2625, 1)),
-    (0x1e22, (926, 2)),
-    (0x1eea, (1392, 3)),
-    (0x2f850, (2944, 1)),
-    (0x2f9c9, (3321, 1)),
-    (0xf91c, (2301, 1)),
-    (0xa33, (734, 2)),
-    (0xe7, (64, 2)),
-    (0x2f80b, (2875, 1)),
-    (0xfa91, (2660, 1)),
-    (0x9dd, (730, 2)),
-    (0x2f848, (2936, 1)),
-    (0xf966, (2375, 1)),
-    (0xfb36, (2763, 2)),
-    (0xf957, (2360, 1)),
-    (0x2f88a, (3002, 1)),
-    (0x305c, (2173, 2)),
-    (0x2f982, (3250, 1)),
-    (0x122, (170, 2)),
-    (0xf95d, (2366, 1)),
-    (0x2f8cc, (3068, 1)),
-    (0x2f86a, (2970, 1)),
-    (0x1f81, (1736, 3)),
-    (0x212a, (2062, 1)),
-    (0x17e, (320, 2)),
-    (0xf9a9, (2442, 1)),
-    (0xfabd, (2704, 1)),
-    (0x2f91e, (3150, 1)),
-    (0xf9eb, (2508, 1)),
-    (0x2f937, (3175, 1)),
-    (0x2f8a6, (3030, 1)),
-    (0x1e42, (994, 2)),
-    (0x1112f, (2811, 2)),
-    (0x1fa8, (1883, 3)),
-    (0xc0, (0, 2)),
-    (0x2f8da, (3082, 1)),
-    (0x2f9b5, (3301, 1)),
-    (0x2f8c1, (3057, 1)),
-    (0xf9b4, (2453, 1)),
-    (0x171, (294, 2)),
-    (0xf952, (2355, 1)),
-    (0xfa08, (2537, 1)),
-    (0x1fac, (1897, 4)),
-    (0x1fb, (421, 3)),
-    (0xf912, (2291, 1)),
-    (0x1f11, (1478, 2)),
-    (0x201, (434, 2)),
-    (0x2f8b9, (3049, 1)),
-    (0x2fa1c, (3404, 1)),
-    (0x2f8b5, (3045, 1)),
-    (0x1e88, (1154, 2)),
-    (0xfab8, (2699, 1)),
-    (0xfa43, (2584, 1)),
-    (0x144, (218, 2)),
-    (0x1e8b, (1160, 2)),
-    (0x2f9e1, (3345, 1)),
-    (0xf97c, (2397, 1)),
-    (0xf985, (2406, 1)),
-    (0x1f06, (1448, 3)),
-    (0x1fb2, (1917, 3)),
-    (0x2f9db, (3339, 1)),
-    (0x1fe4, (2011, 2)),
-    (0xfac3, (2710, 1)),
-    (0x177, (306, 2)),
-    (0x2f948, (3192, 1)),
-    (0xcb, (20, 2)),
-    (0x1f9f, (1849, 4)),
-    (0xfa99, (2668, 1)),
-    (0x2f942, (3186, 1)),
-    (0x2f976, (3238, 1)),
-    (0xf988, (2409, 1)),
-    (0x1fe6, (2015, 2)),
-    (0x156, (244, 2)),
-    (0x1e8e, (1166, 2)),
-    (0x2f8fe, (3118, 1)),
-    (0x1e46, (1002, 2)),
-    (0x2f81e, (2894, 1)),
-    (0x45d, (610, 2)),
-    (0x1fcf, (1970, 2)),
-    (0x1ecf, (1316, 2)),
-    (0x1e48, (1006, 2)),
-    (0xf9cb, (2476, 1)),
-    (0x2f946, (3190, 1)),
-    (0xfacf, (2722, 1)),
-    (0x109, (124, 2)),
-    (0x22e3, (2143, 2)),
-    (0xf52, (796, 2)),
-    (0x304c, (2157, 2)),
-    (0xf9b2, (2451, 1)),
-    (0x12c, (186, 2)),
-    (0x2f969, (3225, 1)),
-    (0x2f9a5, (3285, 1)),
-    (0x307a, (2201, 2)),
-    (0x2f9be, (3310, 1)),
-    (0x1f1b, (1499, 3)),
-    (0x1f5d, (1655, 3)),
-    (0x2f9ab, (3291, 1)),
-    (0x2f8f1, (3105, 1)),
-    (0xf9be, (2463, 1)),
-    (0xf9b8, (2457, 1)),
-    (0x1fb4, (1922, 3)),
-    (0x1edf, (1363, 3)),
-    (0x22f, (514, 2)),
-    (0x934, (706, 2)),
-    (0x2f98a, (3258, 1)),
-    (0x1fe8, (2020, 2)),
-    (0xfaab, (2686, 1)),
-    (0xfa5b, (2608, 1)),
-    (0x4d3, (628, 2)),
-    (0x2226, (2085, 2)),
-    (0x2fa03, (3379, 1)),
-    (0xfa12, (2544, 1)),
-    (0x1ee4, (1378, 2)),
-    (0x1fd6, (1982, 2)),
-    (0xf931, (2322, 1)),
-    (0xfaa1, (2676, 1)),
-    (0x2f936, (3174, 1)),
-    (0x1fe9, (2022, 2)),
-    (0x1ff4, (2040, 3)),
-    (0x2f86c, (2972, 1)),
-    (0x2f911, (3137, 1)),
-    (0x95f, (722, 2)),
-    (0xcd, (24, 2)),
-    (0x2f95e, (3214, 1)),
-    (0xf98f, (2416, 1)),
-    (0x1e08, (866, 3)),
-    (0x30fa, (2269, 2)),
-    (0x4da, (634, 2)),
-    (0xf9c5, (2470, 1)),
-    (0x1d8, (355, 3)),
-    (0x1ec, (398, 3)),
-    (0xf95e, (2367, 1)),
-    (0xfb4e, (2801, 2)),
-    (0xc5, (10, 2)),
-    (0x2f87d, (2989, 1)),
-    (0x1b0c, (834, 2)),
-    (0x2f9c6, (3318, 1)),
-    (0x2f879, (2985, 1)),
-    (0x2f9f2, (3362, 1)),
-    (0x1ece, (1314, 2)),
-    (0xdda, (783, 2)),
-    (0x1f80, (1733, 3)),
-    (0x3074, (2193, 2)),
-    (0x2289, (2127, 2)),
-    (0x1d0, (336, 2)),
-    (0x1eac, (1224, 3)),
-    (0x2f851, (2945, 1)),
-    (0x22c, (506, 3)),
-    (0x1f9e, (1845, 4)),
-    (0x2f9d2, (3330, 1)),
-    (0xfa05, (2534, 1)),
-    (0x2f88c, (3004, 1)),
-    (0x1ffd, (2058, 1)),
-    (0x1f0b, (1461, 3)),
-    (0xfaba, (2701, 1)),
-    (0x1e82, (1142, 2)),
-    (0x2f8c2, (3058, 1)),
-    (0x1f30, (1552, 2)),
-    (0x1f87, (1759, 4)),
-    (0xfa61, (2614, 1)),
-    (0x1b06, (828, 2)),
-    (0x2f9e8, (3352, 1)),
-    (0x2f80e, (2878, 1)),
-    (0x1f00, (1432, 2)),
-    (0xfa03, (2532, 1)),
-    (0x202, (436, 2)),
-    (0x1ce, (332, 2)),
-    (0x2fa12, (3394, 1)),
-    (0x2f84f, (2943, 1)),
-    (0x4c1, (618, 2)),
-    (0xfa81, (2644, 1)),
-    (0xfac7, (2714, 1)),
-    (0xf9bb, (2460, 1)),
-    (0x16f, (290, 2)),
-    (0x114, (142, 2)),
-    (0xcc7, (768, 2)),
-    (0x1b0e, (836, 2)),
-    (0x2f9d1, (3329, 1)),
-    (0x139, (204, 2)),
-    (0x2f836, (2918, 1)),
-    (0xb48, (746, 2)),
-    (0x30f9, (2267, 2)),
-    (0xfa79, (2636, 1)),
-    (0x3058, (2169, 2)),
-    (0x2f971, (3233, 1)),
-    (0x2f928, (3160, 1)),
-    (0x1fc, (424, 2)),
-    (0x2224, (2083, 2)),
-    (0xfab3, (2694, 1)),
-    (0x2f8e7, (3095, 1)),
-    (0x1fde, (1997, 2)),
-    (0x1e7, (388, 2)),
-    (0x1e13, (890, 2)),
-    (0xfa5a, (2607, 1)),
-    (0x1fce, (1968, 2)),
-    (0x1e58, (1046, 2)),
-    (0x2f964, (3220, 1)),
-    (0xfabe, (2705, 1)),
-    (0x1e0f, (882, 2)),
-    (0x2f938, (3176, 1)),
-    (0x11d, (160, 2)),
-    (0xf994, (2421, 1)),
-    (0xf947, (2344, 1)),
-    (0x3aa, (553, 2)),
-    (0xf981, (2402, 1)),
-    (0x1e30, (956, 2)),
-    (0x1f14, (1486, 3)),
-    (0xf9f1, (2514, 1)),
-    (0x1fa9, (1886, 3)),
-    (0x1e62, (1068, 2)),
-    (0x2f85d, (2957, 1)),
-    (0xfa4e, (2595, 1)),
-    (0x1f22, (1512, 3)),
-    (0x2f838, (2920, 1)),
-    (0x2f9a6, (3286, 1)),
-    (0xf93f, (2336, 1)),
-    (0x2f9f3, (3363, 1)),
-    (0xfaad, (2688, 1)),
-    (0x2f87a, (2986, 1)),
-    (0x2f830, (2912, 1)),
-    (0x2f8c8, (3064, 1)),
-    (0x10a, (126, 2)),
-    (0x20b, (454, 2)),
-    (0x1f77, (1719, 2)),
-    (0xfab4, (2695, 1)),
-    (0x2f985, (3253, 1)),
-    (0xf9f7, (2520, 1)),
-    (0x2f94f, (3199, 1)),
-    (0xfa40, (2581, 1)),
-    (0x2f968, (3224, 1)),
-    (0xfa8c, (2655, 1)),
-    (0xce, (26, 2)),
-    (0xfac0, (2707, 1)),
-    (0x3062, (2179, 2)),
-    (0xf9, (94, 2)),
-    (0x1fb0, (1913, 2)),
-    (0xb94, (756, 2)),
-    (0x2f926, (3158, 1)),
-    (0x1f84, (1747, 4)),
-    (0x4ef, (668, 2)),
-    (0xf9d, (816, 2)),
-    (0x226d, (2099, 2)),
-    (0x1f28, (1530, 2)),
-    (0x2f955, (3205, 1)),
-    (0x2279, (2115, 2)),
-    (0xfab6, (2697, 1)),
-    (0xf935, (2326, 1)),
-    (0x439, (598, 2)),
-    (0x11938, (2827, 2)),
-    (0xee, (78, 2)),
-    (0x17b, (314, 2)),
-    (0x1e0c, (876, 2)),
-    (0x1e6a, (1090, 2)),
-    (0x214, (472, 2)),
-    (0xf57, (798, 2)),
-    (0x2f825, (2901, 1)),
-    (0x114bb, (2817, 2)),
-    (0x100, (106, 2)),
-    (0x1e6, (386, 2)),
-    (0x2f951, (3201, 1)),
-    (0x2f9ce, (3326, 1)),
-    (0x2f984, (3252, 1)),
-    (0x22eb, (2147, 2)),
-    (0x1f6b, (1690, 3)),
-    (0x13b, (208, 2)),
-    (0x2f9e9, (3353, 1)),
-    (0x2f8be, (3054, 1)),
-    (0x2f823, (2899, 1)),
-    (0x2f9d3, (3331, 1)),
-    (0x2f97c, (3244, 1)),
-    (0xfa49, (2590, 1)),
-    (0x1eb1, (1239, 3)),
-    (0x2f998, (3272, 1)),
-    (0x304e, (2159, 2)),
-    (0x1f0d, (1467, 3)),
-    (0xd4a, (777, 2)),
-    (0xfb39, (2767, 2)),
-    (0x305a, (2171, 2)),
-    (0xf9b0, (2449, 1)),
-    (0x2f8ff, (3119, 1)),
-    (0x30ae, (2213, 2)),
-    (0x2f977, (3239, 1)),
-    (0x1fa, (418, 3)),
-    (0x1e20, (922, 2)),
-    (0xf917, (2296, 1)),
-    (0xf989, (2410, 1)),
-    (0xf90e, (2287, 1)),
-    (0xfb34, (2759, 2)),
-    (0x2f889, (3001, 1)),
-    (0x2f866, (2966, 1)),
-    (0x2f865, (2965, 1)),
-    (0x12f, (192, 2)),
-    (0x2fa0e, (3390, 1)),
-    (0x1e61, (1066, 2)),
-    (0x1fd, (426, 2)),
-    (0x2f803, (2867, 1)),
-    (0x1fe3, (2008, 3)),
-    (0xfa44, (2585, 1)),
-    (0x1fa6, (1875, 4)),
-    (0x20f, (462, 2)),
-    (0x1fa4, (1867, 4)),
-    (0xccb, (774, 3)),
-    (0xfa4f, (2596, 1)),
-    (0x2f997, (3271, 1)),
-    (0x1e4b, (1012, 2)),
-    (0xfaa2, (2677, 1)),
-    (0x2f839, (2921, 1)),
-    (0x1f55, (1641, 3)),
-    (0x1e32, (960, 2)),
-    (0xf9f0, (2513, 1)),
-    (0xea, (70, 2)),
-    (0x2f8d4, (3076, 1)),
-    (0xf969, (2378, 1)),
-    (0xfa, (96, 2)),
-    (0x1e33, (962, 2)),
-    (0x1e6f, (1100, 2)),
-    (0xf9aa, (2443, 1)),
-    (0xf938, (2329, 1)),
-    (0x2f826, (2902, 1)),
-    (0xf93c, (2333, 1)),
-    (0x4e2, (646, 2)),
-    (0x1e5f, (1062, 2)),
-    (0x4c2, (620, 2)),
-    (0x4dd, (640, 2)),
-    (0x390, (550, 3)),
-    (0x2f923, (3155, 1)),
-    (0x419, (596, 2)),
-    (0x2f8e9, (3097, 1)),
-    (0x1b3b, (840, 2)),
-    (0x2f860, (2960, 1)),
-    (0x1ec0, (1278, 3)),
-    (0x124, (174, 2)),
-    (0x2f935, (3173, 1)),
-    (0x21cd, (2071, 2)),
-    (0x2f81f, (2895, 1)),
-    (0x1f95, (1811, 4)),
-    (0xfa59, (2606, 1)),
-    (0xfb4a, (2793, 2)),
-    (0x137, (202, 2)),
-    (0x2fa19, (3401, 1)),
-    (0x1e8c, (1162, 2)),
-    (0x2fa11, (3393, 1)),
-    (0xf992, (2419, 1)),
-    (0xf99b, (2428, 1)),
-    (0x226f, (2103, 2)),
-    (0x2f908, (3128, 1)),
-    (0x1ea1, (1194, 2)),
-    (0x30c7, (2237, 2)),
-    (0xf5c, (800, 2)),
-    (0x114bc, (2819, 2)),
-    (0xf91a, (2299, 1)),
-    (0xfb49, (2791, 2)),
-    (0x2f892, (3010, 1)),
-    (0x1d1bb, (2848, 2)),
-    (0x40e, (594, 2)),
-    (0x1e7e, (1134, 2)),
-    (0x1fd3, (1979, 3)),
-    (0x1fb6, (1925, 2)),
-    (0x164, (272, 2)),
-    (0x2f92b, (3163, 1)),
-    (0x1f3d, (1587, 3)),
-    (0x386, (535, 2)),
-    (0x1f24, (1518, 3)),
-    (0xfacd, (2720, 1)),
-    (0xfa17, (2547, 1)),
-    (0x1e17, (901, 3)),
-    (0xfa0b, (2540, 1)),
-    (0x2f980, (3248, 1)),
-    (0xfa2d, (2562, 1)),
-    (0x2f88e, (3006, 1)),
-    (0xfb2e, (2747, 2)),
-    (0xfa31, (2566, 1)),
-    (0x1f09, (1456, 2)),
-    (0x2f815, (2885, 1)),
-    (0x2f9ca, (3322, 1)),
-    (0xfa55, (2602, 1)),
-    (0x2f9f9, (3369, 1)),
-    (0x1f62, (1665, 3)),
-    (0x106, (118, 2)),
-    (0x1ebf, (1275, 3)),
-    (0x1f38, (1574, 2)),
-    (0x1f20, (1508, 2)),
-    (0x2f965, (3221, 1)),
-    (0x2f829, (2905, 1)),
-    (0x1ffb, (2054, 2)),
-    (0xc9, (16, 2)),
-    (0x147, (224, 2)),
-    (0x2f9c3, (3315, 1)),
-    (0x213, (470, 2)),
-    (0x1f9d, (1841, 4)),
-    (0x1f25, (1521, 3)),
-    (0x2f9af, (3295, 1)),
-    (0xfa77, (2634, 1)),
-    (0x2209, (2079, 2)),
-    (0xf76, (808, 2)),
-    (0xf956, (2359, 1)),
-    (0x1fcc, (1964, 2)),
-    (0x1fa0, (1853, 3)),
-    (0x13c, (210, 2)),
-    (0x1eb3, (1245, 3)),
-    (0x1e5a, (1050, 2)),
-    (0xfb35, (2761, 2)),
-    (0xf9b5, (2454, 1)),
-    (0xfa0a, (2539, 1)),
-    (0x1fa5, (1871, 4)),
-    (0x22e, (512, 2)),
-    (0x1eee, (1404, 3)),
-    (0x1d5, (346, 3)),
-    (0x15c, (256, 2)),
-    (0xe3, (58, 2)),
-    (0xfa8b, (2654, 1)),
-    (0x3079, (2199, 2)),
-    (0xfb38, (2765, 2)),
-    (0x2f855, (2949, 1)),
-    (0xfa9e, (2673, 1)),
-    (0x14e, (232, 2)),
-    (0x1e75, (1112, 2)),
-    (0xfa46, (2587, 1)),
-    (0x2fa0a, (3386, 1)),
-    (0x211, (466, 2)),
-    (0x2f8a9, (3033, 1)),
-    (0x115, (144, 2)),
-    (0x30d1, (2243, 2)),
-    (0x1e47, (1004, 2)),
-    (0x2f8e0, (3088, 1)),
-    (0xfa7e, (2641, 1)),
-    (0x1fd8, (1987, 2)),
-    (0x1e92, (1174, 2)),
-    (0x2f867, (2967, 1)),
-    (0xfb1d, (2733, 2)),
-    (0xf97d, (2398, 1)),
-    (0xfab9, (2700, 1)),
-    (0x2f846, (2934, 1)),
-    (0x1e7d, (1132, 2)),
-    (0xfac8, (2715, 1)),
-    (0x104, (114, 2)),
-    (0x4f5, (680, 2)),
-    (0x2fa10, (3392, 1)),
-    (0xf975, (2390, 1)),
-    (0xf96a, (2379, 1)),
-    (0xfa2b, (2560, 1)),
-    (0x1f73, (1711, 2)),
-    (0x2f957, (3207, 1)),
-    (0x1edd, (1357, 3)),
-    (0x3ad, (559, 2)),
-    (0x2f924, (3156, 1)),
-    (0xfad4, (2727, 1)),
-    (0x2f97b, (3243, 1)),
-    (0x2f853, (2947, 1)),
-    (0xfa3f, (2580, 1)),
-    (0xfa8a, (2653, 1)),
-    (0xfb4c, (2797, 2)),
-    (0x1f3b, (1581, 3)),
-    (0xc4, (8, 2)),
-    (0x1109a, (2803, 2)),
-    (0x341, (527, 1)),
-    (0x1e0d, (878, 2)),
-    (0x4dc, (638, 2)),
-    (0xfa10, (2543, 1)),
-    (0x1ef1, (1413, 3)),
-    (0x2f903, (3123, 1)),
-    (0x1fed, (2030, 2)),
-    (0x1fef, (2034, 1)),
-    (0x1ea4, (1200, 3)),
-    (0x21f, (490, 2)),
-    (0xfa92, (2661, 1)),
-    (0x2f8a4, (3028, 1)),
-    (0xf9c8, (2473, 1)),
-    (0xf9a0, (2433, 1)),
-    (0x1e31, (958, 2)),
-    (0xf903, (2276, 1)),
-    (0x3d4, (580, 2)),
-    (0x2f809, (2873, 1)),
-    (0x1e07, (864, 2)),
-    (0x1fb1, (1915, 2)),
-    (0x2f8d1, (3073, 1)),
-    (0x1e11, (886, 2)),
-    (0x1fd2, (1976, 3)),
-    (0x1d15e, (2829, 2)),
-    (0x2f941, (3185, 1)),
-    (0xf962, (2371, 1)),
-    (0x1ef0, (1410, 3)),
-    (0x1ee0, (1366, 3)),
-    (0x3052, (2163, 2)),
-    (0x148, (226, 2)),
-    (0x1f44, (1606, 3)),
-    (0x2f930, (3168, 1)),
-    (0x1e0b, (874, 2)),
-    (0x2f83e, (2926, 1)),
-    (0x3094, (2207, 2)),
-    (0x1e5b, (1052, 2)),
-    (0xfa54, (2601, 1)),
-    (0xf9fc, (2525, 1)),
-    (0x1de, (370, 3)),
-    (0x1e02, (854, 2)),
-    (0x2f9e4, (3348, 1)),
-    (0xf97f, (2400, 1)),
-    (0x1fe1, (2003, 2)),
-    (0x1ecb, (1308, 2)),
-    (0x2f947, (3191, 1)),
-    (0x2f82d, (2909, 1)),
-    (0x1f6d, (1696, 3)),
-    (0x1e4c, (1014, 3)),
-    (0x1e00, (850, 2)),
-    (0x2f93c, (3180, 1)),
-    (0x2f9c4, (3316, 1)),
-    (0x1f2d, (1543, 3)),
-    (0x38c, (544, 2)),
-    (0x115bb, (2825, 2)),
-    (0xfa0c, (2541, 1)),
-    (0x2f986, (3254, 1)),
-    (0x1f0a, (1458, 3)),
-    (0x1f83, (1743, 4)),
-    (0x1ee3, (1375, 3)),
-    (0x2f93e, (3182, 1)),
-    (0x2f8ed, (3101, 1)),
-    (0x2f981, (3249, 1)),
-    (0x1f54, (1638, 3)),
-    (0x1e16, (898, 3)),
-    (0xfa6a, (2623, 1)),
-    (0x179, (310, 2)),
-    (0xfb2d, (2744, 3)),
-    (0xf90b, (2284, 1)),
-    (0xfb3e, (2775, 2)),
-    (0x2f9b0, (3296, 1)),
-    (0xf932, (2323, 1)),
-    (0x1ee6, (1382, 2)),
-    (0x2f85e, (2958, 1)),
-    (0x2f8d7, (3079, 1)),
-    (0x1e40, (990, 2)),
-    (0x22ed, (2151, 2)),
-    (0x1f43, (1603, 3)),
-    (0x4e5, (652, 2)),
-    (0xfaa5, (2680, 1)),
-    (0x1fa3, (1863, 4)),
-    (0x2f967, (3223, 1)),
-    (0xf993, (2420, 1)),
-    (0x2f88d, (3005, 1)),
-    (0xed, (76, 2)),
-    (0x2f906, (3126, 1)),
-    (0xfa98, (2667, 1)),
-    (0x2f901, (3121, 1)),
-    (0x1ff7, (2045, 3)),
-    (0x95c, (716, 2)),
-    (0xfa60, (2613, 1)),
-    (0x3ca, (568, 2)),
-    (0xfa62, (2615, 1)),
-    (0x2f8c3, (3059, 1)),
-    (0x1eca, (1306, 2)),
-    (0xf950, (2353, 1)),
-    (0x173, (298, 2)),
-    (0x2f99a, (3274, 1)),
-    (0x2f970, (3232, 1)),
-    (0x2f85a, (2954, 1)),
-    (0x2fa13, (3395, 1)),
-    (0xf98b, (2412, 1)),
-    (0x2f913, (3139, 1)),
-    (0xfb9, (824, 2)),
-    (0xf919, (2298, 1)),
-    (0x1eba, (1264, 2)),
-    (0x2f890, (3008, 1)),
-    (0xf953, (2356, 1)),
-    (0x1eb2, (1242, 3)),
-    (0xf904, (2277, 1)),
-    (0x1dc, (367, 3)),
-    (0x3ab, (555, 2)),
-    (0xf94e, (2351, 1)),
-    (0x2f8df, (3087, 1)),
-    (0x1f19, (1494, 2)),
-    (0x30bc, (2227, 2)),
-    (0x305e, (2175, 2)),
-    (0x1e87, (1152, 2)),
-    (0xf9fa, (2523, 1)),
-    (0x2f82b, (2907, 1)),
-    (0x2f81d, (2893, 1)),
-    (0x2f8a3, (3027, 1)),
-    (0x2fa04, (3380, 1)),
-    (0xfa3a, (2575, 1)),
-    (0x4e4, (650, 2)),
-    (0x2f9d5, (3333, 1)),
-    (0x2f90d, (3133, 1)),
-    (0xf967, (2376, 1)),
-    (0xfad3, (2726, 1)),
-    (0x1ff2, (2035, 3)),
-    (0x1e86, (1150, 2)),
-    (0xf92d, (2318, 1)),
-    (0x1ef7, (1426, 2)),
-    (0xfa89, (2652, 1)),
-    (0x2f874, (2980, 1)),
-    (0x2f852, (2946, 1)),
-    (0xf9cd, (2478, 1)),
-    (0x2f854, (2948, 1)),
-    (0x1e25, (932, 2)),
-    (0x1ec1, (1281, 3)),
-    (0x1edb, (1351, 3)),
-    (0x205, (442, 2)),
-    (0x2f843, (2931, 1)),
-    (0x2f8b1, (3041, 1)),
-    (0x1fb8, (1930, 2)),
-    (0xbcb, (760, 2)),
-    (0x2f84c, (2940, 1)),
-    (0xfa30, (2565, 1)),
-    (0x9cb, (724, 2)),
-    (0x2f858, (2952, 1)),
-    (0x1f5b, (1652, 3)),
-    (0x6c2, (698, 2)),
-    (0x2f950, (3200, 1)),
-    (0xb5c, (752, 2)),
-    (0xfa4d, (2594, 1)),
-    (0x1f93, (1803, 4)),
-    (0xfa74, (2631, 1)),
-    (0x1f59, (1650, 2)),
-    (0x2fa1d, (3405, 1)),
-    (0xfa70, (2627, 1)),
-    (0xfa18, (2548, 1)),
-    (0x2f888, (3000, 1)),
-    (0x2f8b7, (3047, 1)),
-    (0xf99d, (2430, 1)),
-    (0xf9db, (2492, 1)),
-    (0xf940, (2337, 1)),
-    (0x1f8d, (1781, 4)),
-    (0x1f97, (1819, 4)),
-    (0x1e10, (884, 2)),
-    (0xf997, (2424, 1)),
-    (0x2f956, (3206, 1)),
-    (0x2f9aa, (3290, 1)),
-    (0x1e41, (992, 2)),
-    (0x2f90c, (3132, 1)),
-    (0x2f862, (2962, 1)),
-    (0x1e66, (1078, 3)),
-    (0x1ef8, (1428, 2)),
-    (0x2f849, (2937, 1)),
-    (0x2f894, (3012, 1)),
-    (0x1e7f, (1136, 2)),
-    (0x1f29, (1532, 2)),
-    (0xfa1c, (2552, 1)),
-    (0x1eb0, (1236, 3)),
-    (0x1f74, (1713, 2)),
-    (0x1ee9, (1389, 3)),
-    (0x1fbb, (1936, 2)),
-    (0x162, (268, 2)),
-    (0xd2, (32, 2)),
-    (0xfa97, (2666, 1)),
-    (0x2f824, (2900, 1)),
-    (0x233, (524, 2)),
-    (0x22af, (2135, 2)),
-    (0x1fec, (2028, 2)),
-    (0xfa7f, (2642, 1)),
-    (0x2f94a, (3194, 1)),
-    (0x2f887, (2999, 1)),
-    (0x2fa17, (3399, 1)),
-    (0x931, (704, 2)),
-    (0x130, (194, 2)),
-    (0x135, (198, 2)),
-    (0x3076, (2195, 2)),
-    (0xfa2, (818, 2)),
-    (0x4f8, (682, 2)),
-    (0x1f27, (1527, 3)),
-    (0xf963, (2372, 1)),
-    (0xf94d, (2350, 1)),
-    (0x340, (526, 1)),
-    (0x2f9cd, (3325, 1)),
-    (0x1e01, (852, 2)),
-    (0x1ed3, (1327, 3)),
-    (0x103, (112, 2)),
-    (0x200, (432, 2)),
-    (0x17c, (316, 2)),
-    (0xf92c, (2317, 1)),
-    (0x1e12, (888, 2)),
-    (0xfb33, (2757, 2)),
-    (0xfa93, (2662, 1)),
-    (0xf5, (90, 2)),
-    (0x30f8, (2265, 2)),
-    (0x210, (464, 2)),
-    (0xf3, (86, 2)),
-    (0x2f804, (2868, 1)),
-    (0x2f8c0, (3056, 1)),
-    (0x21a, (484, 2)),
-    (0x1e1c, (912, 3)),
-    (0x11e, (162, 2)),
-    (0x1f8f, (1789, 4)),
-    (0xfa4c, (2593, 1)),
-    (0x95b, (714, 2)),
-    (0xfa45, (2586, 1)),
-    (0xfad5, (2728, 1)),
-    (0x2f82e, (2910, 1)),
-    (0xfa5c, (2609, 1)),
-    (0xf9b7, (2456, 1)),
-    (0x206, (444, 2)),
-    (0x1fc7, (1953, 3)),
-    (0x3cb, (570, 2)),
-    (0xf9dc, (2493, 1)),
-    (0x22b, (503, 3)),
-    (0xf92e, (2319, 1)),
-    (0x1ee2, (1372, 3)),
-    (0x2f88f, (3007, 1)),
-    (0x2f94c, (3196, 1)),
-    (0xfa84, (2647, 1)),
-    (0x2f9e3, (3347, 1)),
-    (0xf9d6, (2487, 1)),
-    (0x15d, (258, 2)),
-    (0x1e24, (930, 2)),
-    (0x2f95c, (3212, 1)),
-    (0x1ea6, (1206, 3)),
-    (0x1ea8, (1212, 3)),
-    (0x30f7, (2263, 2)),
-    (0xf977, (2392, 1)),
-    (0xfac4, (2711, 1)),
-    (0xfa3b, (2576, 1)),
-    (0x2f904, (3124, 1)),
-    (0xf9ab, (2444, 1)),
-    (0x4eb, (660, 2)),
-    (0xfa20, (2555, 1)),
-    (0x2f907, (3127, 1)),
-    (0x1ec6, (1296, 3)),
-    (0x2fa05, (3381, 1)),
-    (0x110ab, (2807, 2)),
-    (0x1e3f, (988, 2)),
-    (0x2285, (2123, 2)),
-    (0x343, (528, 1)),
-    (0xf9da, (2491, 1)),
-    (0x2fa07, (3383, 1)),
-    (0x2fa15, (3397, 1)),
-    (0x4f3, (676, 2)),
-    (0x113, (140, 2)),
-    (0x1f7b, (1727, 2)),
-    (0x21cf, (2075, 2)),
-    (0x1f7a, (1725, 2)),
-    (0xe5, (62, 2)),
-    (0x307d, (2205, 2)),
-    (0x2fa14, (3396, 1)),
-    (0x2f891, (3009, 1)),
-    (0x2f9e5, (3349, 1)),
-    (0x2f983, (3251, 1)),
-    (0x1f90, (1793, 3)),
-    (0x1e85, (1148, 2)),
-    (0xd4, (36, 2)),
-    (0x22e0, (2137, 2)),
-    (0x3ae, (561, 2)),
-    (0x2f8ae, (3038, 1)),
-    (0xf9fb, (2524, 1)),
-    (0xf99c, (2429, 1)),
-    (0x217, (478, 2)),
-    (0x1eb7, (1257, 3)),
-    (0x2f8aa, (3034, 1)),
-    (0x385, (533, 2)),
-    (0xfa16, (2546, 1)),
-    (0x2f9e2, (3346, 1)),
-    (0x1e1, (379, 3)),
-    (0x2fa00, (3376, 1)),
-    (0x154, (240, 2)),
-    (0x1fb7, (1927, 3)),
-    (0x1eef, (1407, 3)),
-    (0xfa02, (2531, 1)),
-    (0x2f990, (3264, 1)),
-    (0x1e52, (1032, 3)),
-    (0x624, (690, 2)),
-    (0x2f99d, (3277, 1)),
-    (0x2f883, (2995, 1)),
-    (0x1fd7, (1984, 3)),
-    (0xf9cc, (2477, 1)),
-    (0xf926, (2311, 1)),
-    (0x1e56, (1042, 2)),
-    (0xfa06, (2535, 1)),
-    (0xfa51, (2598, 1)),
-    (0x1ef4, (1420, 2)),
-    (0x2f9da, (3338, 1)),
-    (0x1e36, (968, 2)),
-    (0x6d3, (700, 2)),
-    (0x2f9ff, (3375, 1)),
-    (0x2f8e2, (3090, 1)),
-    (0x1eaa, (1218, 3)),
-    (0x2f8ad, (3037, 1)),
-    (0xfa07, (2536, 1)),
-    (0x2f97a, (3242, 1)),
-    (0x2f966, (3222, 1)),
-    (0x1e80, (1138, 2)),
-    (0x1d2, (340, 2)),
-    (0x1f63, (1668, 3)),
-    (0x1fad, (1901, 4)),
-    (0xf91e, (2303, 1)),
-    (0xfaa0, (2675, 1)),
-    (0x2f863, (2963, 1)),
-    (0x30dd, (2259, 2)),
-    (0x45e, (612, 2)),
-    (0x2f91a, (3146, 1)),
-    (0x1e05, (860, 2)),
-    (0x11a, (154, 2)),
-    (0x1f61, (1663, 2)),
-    (0x2fa1b, (3403, 1)),
-    (0x2f9e0, (3344, 1)),
-    (0x13d, (212, 2)),
-    (0xfb32, (2755, 2)),
-    (0x1ea5, (1203, 3)),
-    (0xddd, (787, 3)),
-    (0x118, (150, 2)),
-    (0x207, (446, 2)),
-    (0x1ffa, (2052, 2)),
-    (0x2f93f, (3183, 1)),
-    (0x2f886, (2998, 1)),
-    (0xf9e0, (2497, 1)),
-    (0xf970, (2385, 1)),
-    (0x2f97e, (3246, 1)),
-    (0xf972, (2387, 1)),
-    (0x136, (200, 2)),
-    (0x1b0a, (832, 2)),
-    (0x3073, (2191, 2)),
-    (0xf916, (2295, 1)),
-    (0x22e2, (2141, 2)),
-    (0x2f921, (3153, 1)),
-    (0x2260, (2095, 2)),
-    (0x1f66, (1677, 3)),
-    (0x2f80f, (2879, 1)),
-    (0x2001, (2060, 1)),
-    (0x1f88, (1763, 3)),
-    (0xfaa6, (2681, 1)),
-    (0x1fae, (1905, 4)),
-    (0xfaa4, (2679, 1)),
-    (0x1f3a, (1578, 3)),
-    (0xfac1, (2708, 1)),
-    (0xfa8f, (2658, 1)),
-    (0x95d, (718, 2)),
-    (0xf9d1, (2482, 1)),
-    (0x1b41, (846, 2)),
-    (0xf948, (2345, 1)),
-    (0x1e3c, (982, 2)),
-    (0xfad9, (2732, 1)),
-    (0x400, (582, 2)),
-    (0xf96d, (2382, 1)),
-    (0x1e7c, (1130, 2)),
-    (0x3d3, (578, 2)),
-    (0x172, (296, 2)),
-    (0x1e1f, (920, 2)),
-    (0xfa9f, (2674, 1)),
-    (0x226e, (2101, 2)),
-    (0x2f822, (2898, 1)),
-    (0xf75, (806, 2)),
-    (0x2f871, (2977, 1)),
-    (0x2f812, (2882, 1)),
-    (0x2275, (2111, 2)),
-    (0x1f3f, (1593, 3)),
-    (0x30d7, (2251, 2)),
-    (0xd9, (42, 2)),
-    (0x2f8ab, (3035, 1)),
-    (0xfa7a, (2637, 1)),
-    (0xf915, (2294, 1)),
-    (0x1e1d, (915, 3)),
-    (0x1eb, (396, 2)),
-    (0x2f808, (2872, 1)),
-    (0x2f98e, (3262, 1)),
-    (0xfa53, (2600, 1)),
-    (0xf9a6, (2439, 1)),
-    (0x2f80c, (2876, 1)),
-    (0x2f8f5, (3109, 1)),
-    (0x2fa02, (3378, 1)),
-    (0x1e81, (1140, 2)),
-    (0xf930, (2321, 1)),
-    (0x3060, (2177, 2)),
-    (0x1fea, (2024, 2)),
-    (0x38a, (542, 2)),
-    (0x2f85c, (2956, 1)),
-    (0x1fc9, (1958, 2)),
-    (0x2f86f, (2975, 1)),
-    (0x2f90a, (3130, 1)),
-    (0x2f902, (3122, 1)),
-    (0x2f835, (2917, 1)),
-    (0x14d, (230, 2)),
-    (0x1d162, (2839, 3)),
-    (0xf923, (2308, 1)),
-    (0x2f896, (3014, 1)),
-    (0x22d, (509, 3)),
-    (0xf9f2, (2515, 1)),
-    (0x30c2, (2233, 2)),
-    (0x30d4, (2247, 2)),
-    (0xf97e, (2399, 1)),
-    (0x1fe2, (2005, 3)),
-    (0xec, (74, 2)),
-    (0x1f49, (1614, 2)),
-    (0xfa8d, (2656, 1)),
-    (0x2f898, (3016, 1)),
-    (0x1eb5, (1251, 3)),
-    (0x2f994, (3268, 1)),
-    (0x12b, (184, 2)),
-    (0x20e, (460, 2)),
-    (0x168, (276, 2)),
-    (0x1f56, (1644, 3)),
-    (0x2f8a0, (3024, 1)),
-    (0xfa52, (2599, 1)),
-    (0x2f93d, (3181, 1)),
-    (0xda, (44, 2)),
-    (0x1ec4, (1290, 3)),
-    (0x1e95, (1180, 2)),
-    (0x1f67, (1680, 3)),
-    (0x2f9c1, (3313, 1)),
-    (0xf9de, (2495, 1)),
-    (0x2f83d, (2925, 1)),
-    (0xf9ed, (2510, 1)),
-    (0xfabf, (2706, 1)),
-    (0x457, (606, 2)),
-    (0xfa0d, (2542, 1)),
-    (0xfab1, (2692, 1)),
-    (0x2f8fa, (3114, 1)),
-    (0x1e49, (1008, 2)),
-    (0xf91b, (2300, 1)),
-    (0x1e50, (1026, 3)),
-    (0xf94a, (2347, 1)),
-    (0xfa90, (2659, 1)),
-    (0x2284, (2121, 2)),
-    (0x1ea0, (1192, 2)),
-    (0x169, (278, 2)),
-    (0xf900, (2273, 1)),
-    (0x1eeb, (1395, 3)),
-    (0xf9e5, (2502, 1)),
-    (0x2f9ea, (3354, 1)),
-    (0x2f8ac, (3036, 1)),
-    (0x2f8f8, (3112, 1)),
-    (0xcc8, (770, 2)),
-    (0x2f8f6, (3110, 1)),
-    (0xf968, (2377, 1)),
-    (0x1e6c, (1094, 2)),
-    (0x2f8d8, (3080, 1)),
-    (0x1eb6, (1254, 3)),
-    (0x2f899, (3017, 1)),
-    (0xc3, (6, 2)),
-    (0x1b0, (328, 2)),
-    (0x1f13, (1483, 3)),
-    (0x1e63, (1070, 2)),
-    (0x112, (138, 2)),
-    (0x2f920, (3152, 1)),
-    (0xfa04, (2533, 1)),
-    (0x2f8d9, (3081, 1)),
-    (0x1e38, (972, 3)),
-    (0x1f94, (1807, 4)),
-    (0x2f940, (3184, 1)),
-    (0x2f97d, (3245, 1)),
-    (0x2f84e, (2942, 1)),
-    (0xf9a5, (2438, 1)),
-    (0x9dc, (728, 2)),
-    (0xfc, (100, 2)),
-    (0x1eec, (1398, 3)),
-    (0x1a0, (322, 2)),
-    (0x2f9b4, (3300, 1)),
-    (0xbca, (758, 2)),
-    (0x2f834, (2916, 1)),
-    (0x2fa0b, (3387, 1)),
-    (0xfad8, (2731, 1)),
-    (0x30c5, (2235, 2)),
-    (0xf9f5, (2518, 1)),
-    (0x2f84b, (2939, 1)),
-    (0x1e5e, (1060, 2)),
-    (0x2f8c6, (3062, 1)),
-    (0x2f93b, (3179, 1)),
-    (0x151, (238, 2)),
-    (0x1ffc, (2056, 2)),
-    (0xfa39, (2574, 1)),
-    (0x1e09, (869, 3)),
-    (0xf999, (2426, 1)),
-    (0x2f8e6, (3094, 1)),
-    (0x2f8ba, (3050, 1)),
-    (0x2f876, (2982, 1)),
-    (0x123, (172, 2)),
-    (0xfb3c, (2773, 2)),
-    (0xf996, (2423, 1)),
-    (0x1e8d, (1164, 2)),
-    (0x10c, (130, 2)),
-    (0x2f8ee, (3102, 1)),
-    (0xf909, (2282, 1)),
-    (0xfa4a, (2591, 1)),
-    (0x2f9a9, (3289, 1)),
-    (0x2f806, (2870, 1)),
-    (0x30d0, (2241, 2)),
-    (0x2f9bb, (3307, 1)),
-    (0x2f975, (3237, 1)),
-    (0x2fa18, (3400, 1)),
-    (0x2f989, (3257, 1)),
-    (0xf987, (2408, 1)),
-    (0x2f80a, (2874, 1)),
-    (0xf998, (2425, 1)),
-    (0xf979, (2394, 1)),
-    (0xf90d, (2286, 1)),
-    (0xf922, (2307, 1)),
-    (0x1f8c, (1777, 4)),
-    (0x1f37, (1571, 3)),
-    (0xfb48, (2789, 2)),
-    (0x3067, (2183, 2)),
-    (0x2f932, (3170, 1)),
-    (0x1ed2, (1324, 3)),
-    (0xd1, (30, 2)),
-    (0x1e28, (938, 2)),
-    (0x178, (308, 2)),
-    (0x2f9ac, (3292, 1)),
-    (0x161, (266, 2)),
-    (0xfad0, (2723, 1)),
-    (0x401, (584, 2)),
-    (0x2241, (2087, 2)),
-    (0xf9bd, (2462, 1)),
-    (0x2f8f0, (3104, 1)),
-    (0x1e45, (1000, 2)),
-    (0xf9d9, (2490, 1)),
-    (0xfaa9, (2684, 1)),
-    (0xfa35, (2570, 1)),
-    (0x4d2, (626, 2)),
-    (0x1e34, (964, 2)),
-    (0xf927, (2312, 1)),
-    (0x1ec3, (1287, 3)),
-    (0x2f8de, (3086, 1)),
-    (0x2f9a2, (3282, 1)),
-    (0xf943, (2340, 1)),
-    (0x1e8f, (1168, 2)),
-    (0xf9d5, (2486, 1)),
-    (0xf982, (2403, 1)),
-    (0x1f50, (1628, 2)),
-    (0x1f92, (1799, 4)),
-    (0xf81, (812, 2)),
-    (0xfa87, (2650, 1)),
-    (0x2f94e, (3198, 1)),
-    (0x1fab, (1893, 4)),
-    (0xfa3d, (2578, 1)),
-    (0x1d9, (358, 3)),
-    (0x2f996, (3270, 1)),
-    (0x1e8a, (1158, 2)),
-    (0xfa58, (2605, 1)),
-    (0x1fc1, (1941, 2)),
-    (0x2f961, (3217, 1)),
-    (0x344, (529, 2)),
-    (0x1f34, (1562, 3)),
-    (0xf9a8, (2441, 1)),
-    (0x163, (270, 2)),
-    (0xfb4b, (2795, 2)),
-    (0x9cc, (726, 2)),
-    (0x1e71, (1104, 2)),
-    (0xe2, (56, 2)),
-    (0xf9f3, (2516, 1)),
-    (0x2f89e, (3022, 1)),
-    (0x2f8b3, (3043, 1)),
-    (0x1f4d, (1625, 3)),
-    (0x1ef9, (1430, 2)),
-    (0x2f82f, (2911, 1)),
-    (0xfa2e, (2563, 1)),
-    (0x2f814, (2884, 1)),
-    (0xfad1, (2724, 1)),
-    (0x1ec5, (1293, 3)),
-    (0x9df, (732, 2)),
-    (0x2f8a1, (3025, 1)),
-    (0xf939, (2330, 1)),
-    (0x228, (496, 2)),
-    (0x2f8d2, (3074, 1)),
-    (0x1d1bd, (2852, 3)),
-    (0x1f86, (1755, 4)),
-    (0x2f868, (2968, 1)),
-    (0x22a, (500, 3)),
-    (0x2f8e3, (3091, 1)),
-    (0xa5a, (740, 2)),
-    (0x1fc8, (1956, 2)),
-    (0xfa22, (2556, 1)),
-    (0x1ed, (401, 3)),
-    (0xf99f, (2432, 1)),
-    (0x2f9b8, (3304, 1)),
-    (0x2f9e7, (3351, 1)),
-    (0xfabb, (2702, 1)),
-    (0x1d6, (349, 3)),
-    (0xfb31, (2753, 2)),
-    (0x146, (222, 2)),
-    (0x1ef2, (1416, 2)),
-    (0x1fa1, (1856, 3)),
-    (0x1e18, (904, 2)),
-    (0xfa9b, (2670, 1)),
-    (0xfa80, (2643, 1)),
-    (0xfacc, (2719, 1)),
-    (0x17a, (312, 2)),
-    (0x1e3b, (980, 2)),
-    (0x1e74, (1110, 2)),
-    (0x2f86b, (2971, 1)),
-    (0x1e23, (928, 2)),
-    (0x175, (302, 2)),
-    (0x1e3e, (986, 2)),
-    (0x4db, (636, 2)),
-    (0x219b, (2067, 2)),
-    (0x1e84, (1146, 2)),
-    (0xf9cf, (2480, 1)),
-    (0x1e44, (998, 2)),
-    (0x1e1a, (908, 2)),
-    (0x1f65, (1674, 3)),
-    (0xf929, (2314, 1)),
-    (0x2247, (2091, 2)),
-    (0x4f2, (674, 2)),
-    (0x2f87c, (2988, 1)),
-    (0x1e2f, (953, 3)),
-    (0x2f84a, (2938, 1)),
-    (0x2f98c, (3260, 1)),
-    (0x2f9a1, (3281, 1)),
-    (0x1ec8, (1302, 2)),
-    (0x157, (246, 2)),
-    (0x2f8bf, (3055, 1)),
-    (0xfb41, (2779, 2)),
-    (0x4f9, (684, 2)),
-    (0x2f995, (3269, 1)),
-    (0x12e, (190, 2)),
-    (0xf9b6, (2455, 1)),
-    (0x1ebc, (1268, 2)),
-    (0x1e21, (924, 2)),
-    (0x2f841, (2929, 1)),
-    (0x116, (146, 2)),
-    (0x453, (604, 2)),
-    (0x2f992, (3266, 1)),
-    (0x1d164, (2845, 3)),
-    (0x2f8e1, (3089, 1)),
-    (0xfa75, (2632, 1)),
-    (0xf902, (2275, 1)),
-    (0xf908, (2281, 1)),
-    (0x2f817, (2887, 1)),
-    (0xf95f, (2368, 1)),
-    (0x2f83b, (2923, 1)),
-    (0x10f, (136, 2)),
-    (0xd3, (34, 2)),
-    (0x3069, (2185, 2)),
-    (0x1e65, (1075, 3)),
-    (0xfb43, (2781, 2)),
-    (0x30ba, (2225, 2)),
-    (0x1f9b, (1833, 4)),
-    (0x16c, (284, 2)),
-    (0xc7, (12, 2)),
-    (0x2f96b, (3227, 1)),
-    (0xf9f8, (2521, 1)),
-    (0x158, (248, 2)),
-    (0x1d163, (2842, 3)),
-    (0x1ea7, (1209, 3)),
-    (0x2288, (2125, 2)),
-    (0xfacb, (2718, 1)),
-    (0xf901, (2274, 1)),
-    (0x1f8e, (1785, 4)),
-    (0x2fa09, (3385, 1)),
-    (0x2f9c8, (3320, 1)),
-    (0x1e0e, (880, 2)),
-    (0xf949, (2346, 1)),
-    (0xe8, (66, 2)),
-    (0xfa3c, (2577, 1)),
-    (0x2f8ec, (3100, 1)),
-    (0x2f8db, (3083, 1)),
-    (0x218, (480, 2)),
-    (0x3065, (2181, 2)),
-    (0xfa7c, (2639, 1)),
-    (0x1f82, (1739, 4)),
-    (0x1e9b, (1190, 2)),
-    (0x209, (450, 2)),
-    (0x1fd1, (1974, 2)),
-    (0x2f9fa, (3370, 1)),
-    (0x30f4, (2261, 2)),
-    (0x1f1a, (1496, 3)),
-    (0x1e5c, (1054, 3)),
-    (0xfa6b, (2624, 1)),
-    (0x2f9de, (3342, 1)),
-    (0xf9c6, (2471, 1)),
-    (0x1da, (361, 3)),
-    (0x1f0e, (1470, 3)),
-    (0xf97b, (2396, 1)),
-    (0xf9c3, (2468, 1)),
-    (0x117, (148, 2)),
-    (0xf945, (2342, 1)),
-    (0x2f9fe, (3374, 1)),
-    (0x1ed6, (1336, 3)),
-    (0x625, (692, 2)),
-    (0x2f9bc, (3308, 1)),
-    (0x2249, (2093, 2)),
-    (0x1d4, (344, 2)),
-    (0x2f9f0, (3360, 1)),
-    (0x2f931, (3169, 1)),
-    (0x2f92a, (3162, 1)),
-    (0x1fdb, (1993, 2)),
-    (0xfa7b, (2638, 1)),
-    (0x2f882, (2994, 1)),
-    (0x2f8ef, (3103, 1)),
-    (0xf94f, (2352, 1)),
-    (0xf93, (814, 2)),
-    (0x2f945, (3189, 1)),
-    (0x3056, (2167, 2)),
-    (0x959, (710, 2)),
-    (0x22ac, (2129, 2)),
-    (0x1ff6, (2043, 2)),
-    (0x2f801, (2865, 1)),
-    (0xf921, (2306, 1)),
-    (0xfa41, (2582, 1)),
-    (0xf9fe, (2527, 1)),
-    (0xfaa3, (2678, 1)),
-    (0x2f8b4, (3044, 1)),
-    (0x20c, (456, 2)),
-    (0xf9c1, (2466, 1)),
-    (0x2000, (2059, 1)),
-    (0x2f905, (3125, 1)),
-    (0x40d, (592, 2)),
-    (0x1f79, (1723, 2)),
-    (0x2f95b, (3211, 1)),
-    (0x1e72, (1106, 2)),
-    (0x2f91b, (3147, 1)),
-    (0xf9e1, (2498, 1)),
-    (0x2f9cb, (3323, 1)),
-    (0x2f84d, (2941, 1)),
-    (0x2f8a7, (3031, 1)),
-    (0x1f05, (1445, 3)),
-    (0xfb30, (2751, 2)),
-    (0xfa01, (2530, 1)),
-    (0xef, (80, 2)),
-    (0x1d1c0, (2861, 3)),
-    (0x2f819, (2889, 1)),
-    (0xca, (18, 2)),
-    (0x21ae, (2069, 2)),
-    (0x1e2e, (950, 3)),
-    (0x30da, (2255, 2)),
-    (0x2f880, (2992, 1)),
-    (0x2f832, (2914, 1)),
-    (0x1db, (364, 3)),
-    (0x4e7, (656, 2)),
-    (0x2f85b, (2955, 1)),
-    (0x1f0, (408, 2)),
-    (0x2f9c7, (3319, 1)),
-    (0x1e68, (1084, 3)),
-    (0xf90c, (2285, 1)),
-    (0xfb4d, (2799, 2)),
-    (0x2f8f4, (3108, 1)),
-    (0x3b0, (565, 3)),
-    (0xf90f, (2288, 1)),
-    (0x2f89f, (3023, 1)),
-    (0x1f9a, (1829, 4)),
-    (0xfa88, (2651, 1)),
-    (0x1d1bf, (2858, 3)),
-    (0x3071, (2189, 2)),
-    (0xfa69, (2622, 1)),
-    (0x1026, (826, 2)),
-    (0xfa1a, (2550, 1)),
-    (0x1e03, (856, 2)),
-    (0xf928, (2313, 1)),
-    (0x2f974, (3236, 1)),
-    (0xb4b, (748, 2)),
-    (0x1f1d, (1505, 3)),
-    (0x165, (274, 2)),
-    (0xfad2, (2725, 1)),
-    (0xfac9, (2716, 1)),
-    (0x2f897, (3015, 1)),
-    (0x2fa0f, (3391, 1)),
-    (0x2f9ae, (3294, 1)),
-    (0xc8, (14, 2)),
-    (0x2f8bc, (3052, 1)),
-    (0x2f96a, (3226, 1)),
-    (0x2f9fb, (3371, 1)),
-    (0x2f8cd, (3069, 1)),
-    (0xfb1f, (2735, 2)),
-    (0x2f94b, (3195, 1)),
-    (0x2f811, (2881, 1)),
-    (0x95a, (712, 2)),
-    (0x30dc, (2257, 2)),
-    (0xf78, (810, 2)),
-    (0x2f909, (3129, 1)),
-    (0x22ae, (2133, 2)),
-    (0xf9d8, (2489, 1)),
-    (0xfa8e, (2657, 1)),
-    (0x1e2a, (942, 2)),
-    (0x108, (122, 2)),
-    (0x2f9cf, (3327, 1)),
-    (0x1e7b, (1127, 3)),
-    (0x2f8cb, (3067, 1)),
-    (0xfac2, (2709, 1)),
-    (0x1d15f, (2831, 2)),
-    (0xf924, (2309, 1)),
-    (0xf96f, (2384, 1)),
-    (0x1ede, (1360, 3)),
-    (0x2f987, (3255, 1)),
-    (0x1f72, (1709, 2)),
-    (0x1ed4, (1330, 3)),
-    (0x2f8b2, (3042, 1)),
-    (0xfa42, (2583, 1)),
-    (0x626, (694, 2)),
-    (0xfa9d, (2672, 1)),
-    (0x2f9b3, (3299, 1)),
-    (0x2f919, (3145, 1)),
-    (0xf9d3, (2484, 1)),
-    (0xfa71, (2628, 1)),
-    (0x1f2f, (1549, 3)),
-    (0x1ed9, (1345, 3)),
-    (0xfb2f, (2749, 2)),
-    (0x2f8dc, (3084, 1)),
-    (0x1eb4, (1248, 3)),
-    (0xfa25, (2557, 1)),
-    (0x2f86d, (2973, 1)),
-    (0x4ea, (658, 2)),
-    (0x1ecd, (1312, 2)),
-    (0x1f01, (1434, 2)),
-    (0x2f8d0, (3072, 1)),
-    (0x2f93a, (3178, 1)),
-    (0x40c, (590, 2)),
-    (0xf93a, (2331, 1)),
-    (0xf9ff, (2528, 1)),
-    (0x1e26, (934, 2)),
-    (0x1f08, (1454, 2)),
-    (0x1f03, (1439, 3)),
-    (0xfad7, (2730, 1)),
-    (0x2f884, (2996, 1)),
-    (0x2f845, (2933, 1)),
-    (0x38e, (546, 2)),
-    (0x4d0, (622, 2)),
-    (0x30be, (2229, 2)),
-    (0x1f32, (1556, 3)),
-    (0x2fa08, (3384, 1)),
-    (0x17d, (318, 2)),
-    (0x1e3d, (984, 2)),
-    (0xfa2c, (2561, 1)),
-    (0x2f95f, (3215, 1)),
-    (0x2f99c, (3276, 1)),
-    (0x1f6f, (1702, 3)),
-    (0xf937, (2328, 1)),
-    (0xfa34, (2569, 1)),
-    (0x1f2a, (1534, 3)),
-    (0xf69, (802, 2)),
-    (0xe0, (52, 2)),
-    (0x2f978, (3240, 1)),
-    (0x2f97f, (3247, 1)),
-    (0x1ef, (406, 2)),
-    (0x1b43, (848, 2)),
-    (0x155, (242, 2)),
-    (0x1fc6, (1951, 2)),
-    (0x20a, (452, 2)),
-    (0x3077, (2197, 2)),
-    (0x1e1b, (910, 2)),
-    (0x2f885, (2997, 1)),
-    (0x20d, (458, 2)),
-    (0xf9c4, (2469, 1)),
-    (0xf9a7, (2440, 1)),
-    (0xf98e, (2415, 1)),
-    (0xf4d, (794, 2)),
-    (0x2f805, (2869, 1)),
-    (0x159, (250, 2)),
-    (0xf4, (88, 2)),
-    (0x1f40, (1596, 2)),
-    (0xfa00, (2529, 1)),
-    (0x2f9f6, (3366, 1)),
-    (0xfaae, (2689, 1)),
-    (0xfa15, (2545, 1)),
-    (0x212b, (2063, 2)),
-    (0x2fa06, (3382, 1)),
-    (0xd5, (38, 2)),
-    (0x1e2d, (948, 2)),
-    (0x1f0f, (1473, 3)),
-    (0x2271, (2107, 2)),
-    (0x1f71, (1707, 2)),
-    (0xfa47, (2588, 1)),
-    (0xd4b, (779, 2)),
-    (0x2f81c, (2892, 1)),
-    (0x1fb9, (1932, 2)),
-    (0xfa26, (2558, 1)),
-    (0x1ff9, (2050, 2)),
-    (0x134, (196, 2)),
-    (0xf991, (2418, 1)),
-    (0x1d160, (2833, 3)),
-    (0xf9ac, (2445, 1)),
-    (0x2f828, (2904, 1)),
-    (0x1fd9, (1989, 2)),
-    (0x2f8eb, (3099, 1)),
-    (0x2f88b, (3003, 1)),
-    (0x2f9b1, (3297, 1)),
-    (0xf9bc, (2461, 1)),
-    (0xfa2a, (2559, 1)),
-    (0x307c, (2203, 2)),
-    (0x1f5, (412, 2)),
-    (0x1f78, (1721, 2)),
-    (0xfa72, (2629, 1)),
-    (0x2280, (2117, 2)),
-    (0x2f918, (3144, 1)),
-    (0xe4, (60, 2)),
-    (0x2f802, (2866, 1)),
-    (0x2f8d6, (3078, 1)),
-    (0x388, (538, 2)),
-    (0xfac5, (2712, 1)),
-    (0x10d, (132, 2)),
-    (0xf958, (2361, 1)),
-    (0x1ebe, (1272, 3)),
-    (0xf90a, (2283, 1)),
-    (0x1f9, (416, 2)),
-    (0xb4c, (750, 2)),
-    (0x1f57, (1647, 3)),
-    (0x1e06, (862, 2)),
-    (0x1ed1, (1321, 3)),
-    (0x1ff3, (2038, 2)),
-    (0x1e2b, (944, 2)),
-    (0x1eb8, (1260, 2)),
-    (0x2f875, (2981, 1)),
-    (0xf942, (2339, 1)),
-    (0x1f6a, (1687, 3)),
-    (0x1e0, (376, 3)),
-    (0x2f94d, (3197, 1)),
-    (0xc48, (764, 2)),
-    (0x2f810, (2880, 1)),
-    (0x1f36, (1568, 3)),
-    (0x2f8f3, (3107, 1)),
-    (0xfd, (102, 2)),
-    (0xf961, (2370, 1)),
-    (0x2f873, (2979, 1)),
-    (0x37e, (532, 1)),
-    (0xf911, (2290, 1)),
-    (0xfac6, (2713, 1)),
-    (0x2f89d, (3021, 1)),
-    (0x2f960, (3216, 1)),
-    (0xfa82, (2645, 1)),
-    (0x2f96f, (3231, 1)),
-    (0x1f33, (1559, 3)),
-    (0x1f5f, (1658, 3)),
-    (0x1e67, (1081, 3)),
-    (0x30d9, (2253, 2)),
-    (0xf99a, (2427, 1)),
-    (0x22ec, (2149, 2)),
-    (0x204, (440, 2)),
-    (0xdc, (48, 2)),
-    (0x2f925, (3157, 1)),
-    (0xfa68, (2621, 1)),
-    (0x2f840, (2928, 1)),
-    (0x3cd, (574, 2)),
-    (0x1e90, (1170, 2)),
-    (0x1f75, (1715, 2)),
-    (0xddc, (785, 2)),
-    (0x2f83f, (2927, 1)),
-    (0xf976, (2391, 1)),
-    (0x2f86e, (2974, 1)),
-    (0x150, (236, 2)),
-    (0x1e99, (1188, 2)),
-    (0x1d1, (338, 2)),
-    (0x2f916, (3142, 1)),
-    (0x2f929, (3161, 1)),
-    (0x1f04, (1442, 3)),
-    (0x1fa7, (1879, 4)),
-    (0x1df, (373, 3)),
-    (0xfb44, (2783, 2)),
-    (0x11c, (158, 2)),
-    (0x13a, (206, 2)),
-    (0x1f10, (1476, 2)),
-    (0x2f8c4, (3060, 1)),
-    (0x1e97, (1184, 2)),
-    (0xf954, (2357, 1)),
-    (0x2f900, (3120, 1)),
-    (0x30fe, (2271, 2)),
-    (0x30b6, (2221, 2)),
-    (0x1f69, (1685, 2)),
-    (0xf9ad, (2446, 1)),
-    (0x1e77, (1116, 2)),
-    (0xfa37, (2572, 1)),
-    (0xf934, (2325, 1)),
-    (0xfab0, (2691, 1)),
-    (0x22ea, (2145, 2)),
-    (0x2f89c, (3020, 1)),
-    (0x227, (494, 2)),
-    (0x1f2b, (1537, 3)),
-    (0x2f979, (3241, 1)),
-    (0x2f954, (3204, 1)),
-    (0x1e1e, (918, 2)),
-    (0xf9ae, (2447, 1)),
-    (0x2f8e5, (3093, 1)),
-    (0x3af, (563, 2)),
-    (0x1f4c, (1622, 3)),
-    (0xf941, (2338, 1)),
-    (0x2f934, (3172, 1)),
-    (0xf9a3, (2436, 1)),
-    (0x929, (702, 2)),
-    (0x2f89b, (3019, 1)),
-    (0x2f8b0, (3040, 1)),
-    (0x1e83, (1144, 2)),
-    (0x2f9ec, (3356, 1)),
-    (0x1f60, (1661, 2)),
-    (0x623, (688, 2)),
-    (0x1e6e, (1098, 2)),
-    (0x1112e, (2809, 2)),
-    (0xb5d, (754, 2)),
-    (0x215, (474, 2)),
-    (0x2f9bd, (3309, 1)),
-    (0x176, (304, 2)),
-    (0x1eab, (1221, 3)),
-    (0x2f9e6, (3350, 1)),
-    (0x2f864, (2964, 1)),
-    (0x1f31, (1554, 2)),
-    (0x2f92f, (3167, 1)),
-    (0x2f820, (2896, 1)),
-    (0x1fda, (1991, 2)),
-    (0x2f82c, (2908, 1)),
-    (0x1f45, (1609, 3)),
-    (0x1f7c, (1729, 2)),
-    (0x1e53, (1035, 3)),
-    (0x2f972, (3234, 1)),
-    (0x2fa1a, (3402, 1)),
-    (0xf960, (2369, 1)),
-    (0x1d7, (352, 3)),
-    (0x1ee8, (1386, 3)),
-    (0xcca, (772, 2)),
-    (0x1f42, (1600, 3)),
-    (0x2f95d, (3213, 1)),
-    (0x1ee, (404, 2)),
-    (0x2f8d3, (3075, 1)),
-    (0x1e4d, (1017, 3)),
-    (0xd6, (40, 2)),
-    (0x1f96, (1815, 4)),
-    (0xf918, (2297, 1)),
-    (0xf9af, (2448, 1)),
-    (0x2f8fb, (3115, 1)),
-    (0x1e60, (1064, 2)),
-    (0x1b12, (838, 2)),
-    (0xf9fd, (2526, 1)),
-    (0x2f9eb, (3355, 1)),
-    (0x1e64, (1072, 3)),
-    (0xfb2b, (2739, 2)),
-    (0x1fe0, (2001, 2)),
-    (0x2f915, (3141, 1)),
-    (0x2f81b, (2891, 1)),
-    (0x1fdd, (1995, 2)),
-    (0x2f8b6, (3046, 1)),
-    (0x1e89, (1156, 2)),
-    (0xf9b9, (2458, 1)),
-    (0x1fb3, (1920, 2)),
-    (0x1e3, (384, 2)),
-    (0x4e3, (648, 2)),
-    (0xcf, (28, 2)),
-    (0xf1, (82, 2)),
-    (0x2f9bf, (3311, 1)),
-    (0x2f8c9, (3065, 1)),
-    (0x2f8a8, (3032, 1)),
-    (0x2f95a, (3210, 1)),
-    (0x2f9a8, (3288, 1)),
-    (0x1a1, (324, 2)),
-    (0xf99e, (2431, 1)),
-    (0xfb46, (2785, 2)),
-    (0xf9c7, (2472, 1)),
-    (0x476, (614, 2)),
-    (0x1cd, (330, 2)),
-    (0xf9bf, (2464, 1)),
-    (0x1ead, (1227, 3)),
-    (0x105, (116, 2)),
-    (0x2f9a4, (3284, 1)),
-    (0x15b, (254, 2)),
-    (0xf9c9, (2474, 1)),
-    (0x119, (152, 2)),
-    (0xf946, (2343, 1)),
-    (0x3054, (2165, 2)),
-    (0x2fa0c, (3388, 1)),
-    (0x1cf, (334, 2)),
-    (0xfa7d, (2640, 1)),
-    (0xf944, (2341, 1)),
-    (0xfa1d, (2553, 1)),
-    (0x2f9c2, (3314, 1)),
-    (0xf964, (2373, 1)),
-    (0x219, (482, 2)),
-    (0xf9dd, (2494, 1)),
-    (0x1f8b, (1773, 4)),
-    (0x2262, (2097, 2)),
-    (0xf9b3, (2452, 1)),
-    (0xf9a2, (2435, 1)),
-    (0x3050, (2161, 2)),
-    (0x1e8, (390, 2)),
-    (0x30d3, (2245, 2)),
-    (0x30c9, (2239, 2)),
-    (0xf95a, (2363, 1)),
-    (0xf98a, (2411, 1)),
-    (0xfa76, (2633, 1)),
-    (0x2f816, (2886, 1)),
-    (0x1b40, (844, 2)),
-    (0x212, (468, 2)),
-    (0x1e91, (1172, 2)),
-    (0xf9e4, (2501, 1)),
-    (0x1f98, (1823, 3)),
-    (0xf910, (2289, 1)),
-    (0x2f9d8, (3336, 1)),
-    (0x2f91d, (3149, 1)),
-    (0x1f9c, (1837, 4)),
-    (0xdb, (46, 2)),
-    (0x232, (522, 2)),
-    (0xf995, (2422, 1)),
-    (0xf9e2, (2499, 1)),
-    (0x1f23, (1515, 3)),
-    (0xdde, (790, 2)),
-    (0xf9ce, (2479, 1)),
-    (0x1eed, (1401, 3)),
-    (0x1f0c, (1464, 3)),
-    (0x2f91c, (3148, 1)),
-    (0x30b0, (2215, 2)),
-    (0xf990, (2417, 1)),
-    (0x1f68, (1683, 2)),
-    (0x1fbc, (1938, 2)),
-    (0x2f9b7, (3303, 1)),
-    (0xf96b, (2380, 1)),
-    (0xfa09, (2538, 1)),
-    (0x1ff, (430, 2)),
-    (0x2f910, (3136, 1)),
-    (0x2f9f4, (3364, 1)),
-    (0x2f87f, (2991, 1)),
-    (0x1e59, (1048, 2)),
-    (0x114be, (2821, 2)),
-    (0xf96c, (2381, 1)),
-    (0xfac, (822, 2)),
-    (0xf913, (2292, 1)),
-    (0x2f80d, (2877, 1)),
-    (0x2f927, (3159, 1)),
-    (0x2f837, (2919, 1)),
-    (0x30ac, (2211, 2)),
-    (0x1fee, (2032, 2)),
-    (0xf9a1, (2434, 1)),
-    (0x1e54, (1038, 2)),
-    (0x1f6e, (1699, 3)),
-    (0xfab7, (2698, 1)),
-    (0xfb3b, (2771, 2)),
-    (0x2f9f1, (3361, 1)),
-    (0xa36, (736, 2)),
-    (0x1f89, (1766, 3)),
-    (0x1ecc, (1310, 2)),
-    (0x2f958, (3208, 1)),
-    (0x16b, (282, 2)),
-    (0x2f944, (3188, 1)),
-    (0x2f8f9, (3113, 1)),
-    (0x407, (588, 2)),
-    (0x1ef6, (1424, 2)),
-    (0x2f9a3, (3283, 1)),
-    (0x2f881, (2993, 1)),
-    (0x1134c, (2815, 2)),
-    (0x2f81a, (2890, 1)),
-    (0x2f9dd, (3341, 1)),
-    (0xfa64, (2617, 1)),
-    (0x2f8af, (3039, 1)),
-    (0x2f9ed, (3357, 1)),
-    (0xf9ea, (2507, 1)),
-    (0x1109c, (2805, 2)),
-    (0x14f, (234, 2)),
-    (0xf97a, (2395, 1)),
-    (0x2f949, (3193, 1)),
-    (0xa5b, (742, 2)),
-    (0xf936, (2327, 1)),
-    (0xa5e, (744, 2)),
-    (0x2f89a, (3018, 1)),
-    (0x1f4b, (1619, 3)),
-    (0xf984, (2405, 1)),
-    (0x1e6d, (1096, 2)),
-    (0x2f90e, (3134, 1)),
-    (0x232a, (2154, 1)),
-    (0x2fa0d, (3389, 1)),
-    (0xfab2, (2693, 1)),
-    (0x450, (600, 2)),
-    (0x1f02, (1436, 3)),
-    (0xfa32, (2567, 1)),
-    (0x1f76, (1717, 2)),
-    (0x2f96d, (3229, 1)),
-    (0x2f9a7, (3287, 1)),
-    (0x1ea3, (1198, 2)),
-    (0xf9ba, (2459, 1)),
-    (0x1f15, (1489, 3)),
-    (0x1faf, (1909, 4)),
-    (0x160, (264, 2)),
-    (0x2f963, (3219, 1)),
-    (0xf925, (2310, 1)),
-    (0xf9f6, (2519, 1)),
-    (0x30c0, (2231, 2)),
-    (0x21e, (488, 2)),
-    (0xfa9c, (2671, 1)),
-    (0xfb3a, (2769, 2)),
-    (0x1fba, (1934, 2)),
-    (0x374, (531, 1)),
-    (0x2adc, (2155, 2)),
-    (0x2f91f, (3151, 1)),
-    (0xcc0, (766, 2)),
-    (0x1ef3, (1418, 2)),
-    (0x1fc3, (1946, 2)),
-    (0x2f8bd, (3053, 1)),
-    (0x11f, (164, 2)),
-    (0xfa7, (820, 2)),
-    (0xf9f4, (2517, 1)),
-    (0xbcc, (762, 2)),
-    (0x2f847, (2935, 1)),
-    (0x1f4a, (1616, 3)),
-    (0x2f98f, (3263, 1)),
-    (0xf96e, (2383, 1)),
-    (0xf9e6, (2503, 1)),
-    (0xf9e3, (2500, 1)),
-    (0x2f844, (2932, 1)),
-    (0x2f813, (2883, 1)),
-    (0xfab5, (2696, 1)),
-    (0x1faa, (1889, 4)),
-    (0xc1, (2, 2)),
-    (0x1e6b, (1092, 2)),
-    (0x1fe5, (2013, 2)),
-    (0x2f807, (2871, 1)),
-    (0x2f85f, (2959, 1)),
-    (0xf93b, (2332, 1)),
-    (0x1f8, (414, 2)),
-    (0x1e69, (1087, 3)),
-    (0x1fe7, (2017, 3)),
-    (0x1e57, (1044, 2)),
-    (0xcc, (22, 2)),
-    (0x2f99b, (3275, 1)),
-    (0x4f0, (670, 2)),
-    (0x2f8fd, (3117, 1)),
-    (0x121, (168, 2)),
-    (0xf2, (84, 2)),
-    (0xfa9a, (2669, 1)),
-    (0x2f9ef, (3359, 1)),
-    (0x2f878, (2984, 1)),
-    (0xf959, (2362, 1)),
-    (0x1134b, (2813, 2)),
-    (0x1fbe, (1940, 1)),
-    (0xfa56, (2603, 1)),
-    (0x1d1be, (2855, 3)),
-    (0x2f8bb, (3051, 1)),
-    (0x2f8e4, (3092, 1)),
-    (0x1e19, (906, 2)),
-    (0x2f92d, (3165, 1)),
-    (0x1f2c, (1540, 3)),
-    (0xe1, (54, 2)),
-    (0x2f9b6, (3302, 1)),
-    (0xf98d, (2414, 1)),
-    (0xf914, (2293, 1)),
-    (0xfa19, (2549, 1)),
-    (0xface, (2721, 1)),
-    (0x15a, (252, 2)),
-    (0x2274, (2109, 2)),
-    (0xf94c, (2349, 1)),
-    (0x1fc4, (1948, 3)),
-    (0x115ba, (2823, 2)),
-    (0x2f8b8, (3048, 1)),
-    (0x2fa01, (3377, 1)),
-    (0x2f8ea, (3098, 1)),
-    (0x1e98, (1186, 2)),
-    (0x2f98b, (3259, 1)),
-    (0x2f9dc, (3340, 1)),
-    (0x1f99, (1826, 3)),
-    (0x1f8a, (1769, 4)),
-    (0x1f1c, (1502, 3)),
-    (0xfa38, (2573, 1)),
-    (0x2f953, (3203, 1)),
-    (0x2f8f7, (3111, 1)),
-    (0x1f41, (1598, 2)),
-    (0x1ec7, (1299, 3)),
-    (0x2fa16, (3398, 1)),
-    (0x2f859, (2953, 1)),
-    (0x2f959, (3209, 1)),
-    (0x2f8cf, (3071, 1)),
-    (0x14c, (228, 2)),
-    (0x2f993, (3267, 1)),
-    (0x13e, (214, 2)),
-    (0x12a, (182, 2)),
-    (0x2f991, (3265, 1)),
-    (0x1fca, (1960, 2)),
-    (0x389, (540, 2)),
-    (0xfa73, (2630, 1)),
-    (0x2f9d9, (3337, 1)),
-    (0x143, (216, 2)),
-    (0x2f893, (3011, 1)),
-    (0x2f827, (2903, 1)),
-    (0xfa63, (2616, 1)),
-    (0x3ac, (557, 2)),
-    (0x1f07, (1451, 3)),
-    (0x1ebb, (1266, 2)),
-    (0x2f943, (3187, 1)),
-    (0xfa67, (2620, 1)),
-    (0x4d6, (630, 2)),
-    (0x1f12, (1480, 3)),
-    (0x1f4, (410, 2)),
-    (0x1e37, (970, 2)),
-    (0x2f90f, (3135, 1)),
-    (0x1f18, (1492, 2)),
-    (0x477, (616, 2)),
-    (0x102, (110, 2)),
-    (0x2f800, (2864, 1)),
-    (0xfaaf, (2690, 1)),
-    (0x6c0, (696, 2)),
-    (0xeb, (72, 2)),
-    (0x1eda, (1348, 3)),
-    (0x1f7d, (1731, 2)),
-    (0xa59, (738, 2)),
-    (0x2f8f2, (3106, 1)),
-    (0x309e, (2209, 2)),
-    (0x30d6, (2249, 2)),
-    (0x2f92e, (3166, 1)),
-    (0xf933, (2324, 1)),
-    (0x2f96e, (3230, 1)),
-    (0x1e55, (1040, 2)),
-    (0x2281, (2119, 2)),
-    (0x1e4e, (1020, 3)),
-    (0x2f872, (2978, 1)),
-    (0x2f9fc, (3372, 1)),
-    (0x1d1bc, (2850, 2)),
-    (0xfa50, (2597, 1)),
-    (0x2f92c, (3164, 1)),
-    (0x3070, (2187, 2)),
-    (0xf9e9, (2506, 1)),
-    (0x2f83c, (2924, 1)),
-    (0x2f9f8, (3368, 1)),
-    (0x1f52, (1632, 3)),
-    (0xfaac, (2687, 1)),
-    (0x1e94, (1178, 2)),
-    (0xfad6, (2729, 1)),
-    (0x1fcb, (1962, 2)),
-    (0xfa33, (2568, 1)),
-    (0xfa1b, (2551, 1)),
-    (0xf9ee, (2511, 1)),
-    (0x1e2c, (946, 2)),
-    (0x203, (438, 2)),
-    (0x2f877, (2983, 1)),
-    (0x1ff8, (2048, 2)),
-    (0x1e9, (392, 2)),
-    (0x1fe, (428, 2)),
-    (0x2f96c, (3228, 1)),
-    (0x1e51, (1029, 3)),
-    (0x4de, (642, 2)),
-    (0xf9a4, (2437, 1)),
-    (0xfb40, (2777, 2)),
-    (0x622, (686, 2)),
-    (0x3cc, (572, 2)),
-    (0x2f99e, (3278, 1)),
-    (0xf92b, (2316, 1)),
-    (0x22e1, (2139, 2)),
-    (0x174, (300, 2)),
-    (0x1e4a, (1010, 2)),
-    (0x2f939, (3177, 1)),
-    (0x3ce, (576, 2)),
-    (0xfaa7, (2682, 1)),
-    (0xfa85, (2648, 1)),
-    (0xf9e7, (2504, 1)),
-    (0x107, (120, 2)),
-    (0xfa95, (2664, 1)),
-    (0xf973, (2388, 1)),
-    (0x2f933, (3171, 1)),
-    (0xf9c2, (2467, 1)),
-    (0x1ee1, (1369, 3)),
-    (0x1d3, (342, 2)),
-    (0x2f9d0, (3328, 1)),
-    (0xfb2a, (2737, 2)),
-    (0xfb, (98, 2)),
-    (0x1e4f, (1023, 3)),
-    (0x1f26, (1524, 3)),
-    (0xdd, (50, 2)),
-    (0x226, (492, 2)),
-    (0x2f831, (2913, 1)),
-    (0x2f9ee, (3358, 1)),
-    (0xf955, (2358, 1)),
-    (0x16e, (288, 2)),
-    (0x2f8a5, (3029, 1)),
-    (0x11b, (156, 2)),
-    (0x1e76, (1114, 2)),
-    (0xd4c, (781, 2)),
-    (0x1f3c, (1584, 3)),
-    (0x1e0a, (872, 2)),
-    (0x1e78, (1118, 3)),
-    (0x2f82a, (2906, 1)),
-    (0x12d, (188, 2)),
-    (0x2f8c5, (3061, 1)),
-    (0x1f3e, (1590, 3)),
-    (0xf95c, (2365, 1)),
-    (0x1f21, (1510, 2)),
-    (0x2f9d7, (3335, 1)),
-    (0x1f70, (1705, 2)),
-    (0x2f914, (3140, 1)),
-    (0xfa83, (2646, 1)),
-    (0x1ed5, (1333, 3)),
-    (0x1ee7, (1384, 2)),
-    (0x2278, (2113, 2)),
-    (0xf9c0, (2465, 1)),
-    (0x1ed7, (1339, 3)),
-    (0x2f8ca, (3066, 1)),
-    (0x1b3d, (842, 2)),
-    (0x2f9ad, (3293, 1)),
-    (0x95e, (720, 2)),
-    (0x220c, (2081, 2)),
-    (0x1fdf, (1999, 2)),
-    (0xfa48, (2589, 1)),
-    (0x1e04, (858, 2)),
-    (0x4d7, (632, 2)),
-    (0x216, (476, 2)),
-    (0x1e70, (1102, 2)),
-    (0x2f856, (2950, 1)),
-    (0xe9, (68, 2)),
-    (0xf951, (2354, 1)),
-    (0x231, (519, 3)),
-    (0x1f53, (1635, 3)),
-    (0x1e14, (892, 3)),
-    (0xf983, (2404, 1)),
-    (0xf9d4, (2485, 1)),
-    (0x2f973, (3235, 1)),
-    (0x2f9df, (3343, 1)),
-    (0xf98c, (2413, 1)),
-    (0x208, (448, 2)),
-    (0x2f895, (3013, 1)),
-    (0xfaaa, (2685, 1)),
-    (0x45c, (608, 2)),
-    (0x30b8, (2223, 2)),
-    (0x2244, (2089, 2)),
-    (0xff, (104, 2)),
-    (0x4d1, (624, 2)),
-    (0x2126, (2061, 1)),
-    (0x10b, (128, 2)),
-    (0x145, (220, 2)),
-    (0xf978, (2393, 1)),
-    (0x1fcd, (1966, 2)),
-    (0x2f912, (3138, 1)),
-    (0xfa36, (2571, 1)),
-    (0x2f9c0, (3312, 1)),
-    (0x4ec, (662, 2)),
-    (0x10e, (134, 2)),
-    (0x2f98d, (3261, 1)),
-    (0x1e5d, (1057, 3)),
-    (0xf43, (792, 2)),
-    (0x1e29, (940, 2)),
-    (0xf93e, (2335, 1)),
-    (0x2f9c5, (3317, 1)),
-    (0x21ce, (2073, 2)),
-    (0x2f87b, (2987, 1)),
-    (0x2f9ba, (3306, 1)),
-    (0x1ec2, (1284, 3)),
-    (0x219a, (2065, 2)),
-    (0x1f64, (1671, 3)),
-    (0xf906, (2279, 1)),
-    (0xf9d7, (2488, 1)),
-];
-
-pub(crate) const COMPATIBILITY_DECOMPOSED_CHARS: &[char] = &[
-    '\u{0020}',
-    '\u{0020}',
-    '\u{0308}',
-    '\u{0061}',
-    '\u{0020}',
-    '\u{0304}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0020}',
-    '\u{0301}',
-    '\u{03BC}',
-    '\u{0020}',
-    '\u{0327}',
-    '\u{0031}',
-    '\u{006F}',
-    '\u{0031}',
-    '\u{2044}',
-    '\u{0034}',
-    '\u{0031}',
-    '\u{2044}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{2044}',
-    '\u{0034}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{004C}',
-    '\u{00B7}',
-    '\u{006C}',
-    '\u{00B7}',
-    '\u{02BC}',
-    '\u{006E}',
-    '\u{0073}',
-    '\u{0044}',
-    '\u{005A}',
-    '\u{030C}',
-    '\u{0044}',
-    '\u{007A}',
-    '\u{030C}',
-    '\u{0064}',
-    '\u{007A}',
-    '\u{030C}',
-    '\u{004C}',
-    '\u{004A}',
-    '\u{004C}',
-    '\u{006A}',
-    '\u{006C}',
-    '\u{006A}',
-    '\u{004E}',
-    '\u{004A}',
-    '\u{004E}',
-    '\u{006A}',
-    '\u{006E}',
-    '\u{006A}',
-    '\u{0044}',
-    '\u{005A}',
-    '\u{0044}',
-    '\u{007A}',
-    '\u{0064}',
-    '\u{007A}',
-    '\u{0068}',
-    '\u{0266}',
-    '\u{006A}',
-    '\u{0072}',
-    '\u{0279}',
-    '\u{027B}',
-    '\u{0281}',
-    '\u{0077}',
-    '\u{0079}',
-    '\u{0020}',
-    '\u{0306}',
-    '\u{0020}',
-    '\u{0307}',
-    '\u{0020}',
-    '\u{030A}',
-    '\u{0020}',
-    '\u{0328}',
-    '\u{0020}',
-    '\u{0303}',
-    '\u{0020}',
-    '\u{030B}',
-    '\u{0263}',
-    '\u{006C}',
-    '\u{0073}',
-    '\u{0078}',
-    '\u{0295}',
-    '\u{0020}',
-    '\u{0345}',
-    '\u{0020}',
-    '\u{0301}',
-    '\u{0020}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{03B2}',
-    '\u{03B8}',
-    '\u{03A5}',
-    '\u{03A5}',
-    '\u{0301}',
-    '\u{03A5}',
-    '\u{0308}',
-    '\u{03C6}',
-    '\u{03C0}',
-    '\u{03BA}',
-    '\u{03C1}',
-    '\u{03C2}',
-    '\u{0398}',
-    '\u{03B5}',
-    '\u{03A3}',
-    '\u{0565}',
-    '\u{0582}',
-    '\u{0627}',
-    '\u{0674}',
-    '\u{0648}',
-    '\u{0674}',
-    '\u{06C7}',
-    '\u{0674}',
-    '\u{064A}',
-    '\u{0674}',
-    '\u{0E4D}',
-    '\u{0E32}',
-    '\u{0ECD}',
-    '\u{0EB2}',
-    '\u{0EAB}',
-    '\u{0E99}',
-    '\u{0EAB}',
-    '\u{0EA1}',
-    '\u{0F0B}',
-    '\u{0FB2}',
-    '\u{0F71}',
-    '\u{0F80}',
-    '\u{0FB3}',
-    '\u{0F71}',
-    '\u{0F80}',
-    '\u{10DC}',
-    '\u{0041}',
-    '\u{00C6}',
-    '\u{0042}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{018E}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0222}',
-    '\u{0050}',
-    '\u{0052}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0057}',
-    '\u{0061}',
-    '\u{0250}',
-    '\u{0251}',
-    '\u{1D02}',
-    '\u{0062}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0259}',
-    '\u{025B}',
-    '\u{025C}',
-    '\u{0067}',
-    '\u{006B}',
-    '\u{006D}',
-    '\u{014B}',
-    '\u{006F}',
-    '\u{0254}',
-    '\u{1D16}',
-    '\u{1D17}',
-    '\u{0070}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{1D1D}',
-    '\u{026F}',
-    '\u{0076}',
-    '\u{1D25}',
-    '\u{03B2}',
-    '\u{03B3}',
-    '\u{03B4}',
-    '\u{03C6}',
-    '\u{03C7}',
-    '\u{0069}',
-    '\u{0072}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{03B2}',
-    '\u{03B3}',
-    '\u{03C1}',
-    '\u{03C6}',
-    '\u{03C7}',
-    '\u{043D}',
-    '\u{0252}',
-    '\u{0063}',
-    '\u{0255}',
-    '\u{00F0}',
-    '\u{025C}',
-    '\u{0066}',
-    '\u{025F}',
-    '\u{0261}',
-    '\u{0265}',
-    '\u{0268}',
-    '\u{0269}',
-    '\u{026A}',
-    '\u{1D7B}',
-    '\u{029D}',
-    '\u{026D}',
-    '\u{1D85}',
-    '\u{029F}',
-    '\u{0271}',
-    '\u{0270}',
-    '\u{0272}',
-    '\u{0273}',
-    '\u{0274}',
-    '\u{0275}',
-    '\u{0278}',
-    '\u{0282}',
-    '\u{0283}',
-    '\u{01AB}',
-    '\u{0289}',
-    '\u{028A}',
-    '\u{1D1C}',
-    '\u{028B}',
-    '\u{028C}',
-    '\u{007A}',
-    '\u{0290}',
-    '\u{0291}',
-    '\u{0292}',
-    '\u{03B8}',
-    '\u{0061}',
-    '\u{02BE}',
-    '\u{0073}',
-    '\u{0307}',
-    '\u{0020}',
-    '\u{0313}',
-    '\u{0020}',
-    '\u{0313}',
-    '\u{0020}',
-    '\u{0342}',
-    '\u{0020}',
-    '\u{0308}',
-    '\u{0342}',
-    '\u{0020}',
-    '\u{0313}',
-    '\u{0300}',
-    '\u{0020}',
-    '\u{0313}',
-    '\u{0301}',
-    '\u{0020}',
-    '\u{0313}',
-    '\u{0342}',
-    '\u{0020}',
-    '\u{0314}',
-    '\u{0300}',
-    '\u{0020}',
-    '\u{0314}',
-    '\u{0301}',
-    '\u{0020}',
-    '\u{0314}',
-    '\u{0342}',
-    '\u{0020}',
-    '\u{0308}',
-    '\u{0300}',
-    '\u{0020}',
-    '\u{0308}',
-    '\u{0301}',
-    '\u{0020}',
-    '\u{0301}',
-    '\u{0020}',
-    '\u{0314}',
-    '\u{0020}',
-    '\u{0020}',
-    '\u{0020}',
-    '\u{0020}',
-    '\u{0020}',
-    '\u{0020}',
-    '\u{0020}',
-    '\u{0020}',
-    '\u{0020}',
-    '\u{0020}',
-    '\u{0020}',
-    '\u{2010}',
-    '\u{0020}',
-    '\u{0333}',
-    '\u{002E}',
-    '\u{002E}',
-    '\u{002E}',
-    '\u{002E}',
-    '\u{002E}',
-    '\u{002E}',
-    '\u{0020}',
-    '\u{2032}',
-    '\u{2032}',
-    '\u{2032}',
-    '\u{2032}',
-    '\u{2032}',
-    '\u{2035}',
-    '\u{2035}',
-    '\u{2035}',
-    '\u{2035}',
-    '\u{2035}',
-    '\u{0021}',
-    '\u{0021}',
-    '\u{0020}',
-    '\u{0305}',
-    '\u{003F}',
-    '\u{003F}',
-    '\u{003F}',
-    '\u{0021}',
-    '\u{0021}',
-    '\u{003F}',
-    '\u{2032}',
-    '\u{2032}',
-    '\u{2032}',
-    '\u{2032}',
-    '\u{0020}',
-    '\u{0030}',
-    '\u{0069}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0036}',
-    '\u{0037}',
-    '\u{0038}',
-    '\u{0039}',
-    '\u{002B}',
-    '\u{2212}',
-    '\u{003D}',
-    '\u{0028}',
-    '\u{0029}',
-    '\u{006E}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0036}',
-    '\u{0037}',
-    '\u{0038}',
-    '\u{0039}',
-    '\u{002B}',
-    '\u{2212}',
-    '\u{003D}',
-    '\u{0028}',
-    '\u{0029}',
-    '\u{0061}',
-    '\u{0065}',
-    '\u{006F}',
-    '\u{0078}',
-    '\u{0259}',
-    '\u{0068}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{0070}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0052}',
-    '\u{0073}',
-    '\u{0061}',
-    '\u{002F}',
-    '\u{0063}',
-    '\u{0061}',
-    '\u{002F}',
-    '\u{0073}',
-    '\u{0043}',
-    '\u{00B0}',
-    '\u{0043}',
-    '\u{0063}',
-    '\u{002F}',
-    '\u{006F}',
-    '\u{0063}',
-    '\u{002F}',
-    '\u{0075}',
-    '\u{0190}',
-    '\u{00B0}',
-    '\u{0046}',
-    '\u{0067}',
-    '\u{0048}',
-    '\u{0048}',
-    '\u{0048}',
-    '\u{0068}',
-    '\u{0127}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{004C}',
-    '\u{006C}',
-    '\u{004E}',
-    '\u{004E}',
-    '\u{006F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0052}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{004D}',
-    '\u{0054}',
-    '\u{0045}',
-    '\u{004C}',
-    '\u{0054}',
-    '\u{004D}',
-    '\u{005A}',
-    '\u{005A}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0065}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{004D}',
-    '\u{006F}',
-    '\u{05D0}',
-    '\u{05D1}',
-    '\u{05D2}',
-    '\u{05D3}',
-    '\u{0069}',
-    '\u{0046}',
-    '\u{0041}',
-    '\u{0058}',
-    '\u{03C0}',
-    '\u{03B3}',
-    '\u{0393}',
-    '\u{03A0}',
-    '\u{2211}',
-    '\u{0044}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{0031}',
-    '\u{2044}',
-    '\u{0037}',
-    '\u{0031}',
-    '\u{2044}',
-    '\u{0039}',
-    '\u{0031}',
-    '\u{2044}',
-    '\u{0031}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{2044}',
-    '\u{0033}',
-    '\u{0032}',
-    '\u{2044}',
-    '\u{0033}',
-    '\u{0031}',
-    '\u{2044}',
-    '\u{0035}',
-    '\u{0032}',
-    '\u{2044}',
-    '\u{0035}',
-    '\u{0033}',
-    '\u{2044}',
-    '\u{0035}',
-    '\u{0034}',
-    '\u{2044}',
-    '\u{0035}',
-    '\u{0031}',
-    '\u{2044}',
-    '\u{0036}',
-    '\u{0035}',
-    '\u{2044}',
-    '\u{0036}',
-    '\u{0031}',
-    '\u{2044}',
-    '\u{0038}',
-    '\u{0033}',
-    '\u{2044}',
-    '\u{0038}',
-    '\u{0035}',
-    '\u{2044}',
-    '\u{0038}',
-    '\u{0037}',
-    '\u{2044}',
-    '\u{0038}',
-    '\u{0031}',
-    '\u{2044}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{0056}',
-    '\u{0056}',
-    '\u{0056}',
-    '\u{0049}',
-    '\u{0056}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{0056}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{0058}',
-    '\u{0058}',
-    '\u{0058}',
-    '\u{0049}',
-    '\u{0058}',
-    '\u{0049}',
-    '\u{0049}',
-    '\u{004C}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{004D}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{0076}',
-    '\u{0076}',
-    '\u{0076}',
-    '\u{0069}',
-    '\u{0076}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{0076}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{0078}',
-    '\u{0078}',
-    '\u{0078}',
-    '\u{0069}',
-    '\u{0078}',
-    '\u{0069}',
-    '\u{0069}',
-    '\u{006C}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{006D}',
-    '\u{0030}',
-    '\u{2044}',
-    '\u{0033}',
-    '\u{222B}',
-    '\u{222B}',
-    '\u{222B}',
-    '\u{222B}',
-    '\u{222B}',
-    '\u{222E}',
-    '\u{222E}',
-    '\u{222E}',
-    '\u{222E}',
-    '\u{222E}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0036}',
-    '\u{0037}',
-    '\u{0038}',
-    '\u{0039}',
-    '\u{0031}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{0031}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0031}',
-    '\u{0033}',
-    '\u{0031}',
-    '\u{0034}',
-    '\u{0031}',
-    '\u{0035}',
-    '\u{0031}',
-    '\u{0036}',
-    '\u{0031}',
-    '\u{0037}',
-    '\u{0031}',
-    '\u{0038}',
-    '\u{0031}',
-    '\u{0039}',
-    '\u{0032}',
-    '\u{0030}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0032}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0033}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0034}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0035}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0036}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0037}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0038}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0039}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0030}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0031}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0033}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0034}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0035}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0036}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0037}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0038}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0031}',
-    '\u{0039}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0032}',
-    '\u{0030}',
-    '\u{0029}',
-    '\u{0031}',
-    '\u{002E}',
-    '\u{0032}',
-    '\u{002E}',
-    '\u{0033}',
-    '\u{002E}',
-    '\u{0034}',
-    '\u{002E}',
-    '\u{0035}',
-    '\u{002E}',
-    '\u{0036}',
-    '\u{002E}',
-    '\u{0037}',
-    '\u{002E}',
-    '\u{0038}',
-    '\u{002E}',
-    '\u{0039}',
-    '\u{002E}',
-    '\u{0031}',
-    '\u{0030}',
-    '\u{002E}',
-    '\u{0031}',
-    '\u{0031}',
-    '\u{002E}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{002E}',
-    '\u{0031}',
-    '\u{0033}',
-    '\u{002E}',
-    '\u{0031}',
-    '\u{0034}',
-    '\u{002E}',
-    '\u{0031}',
-    '\u{0035}',
-    '\u{002E}',
-    '\u{0031}',
-    '\u{0036}',
-    '\u{002E}',
-    '\u{0031}',
-    '\u{0037}',
-    '\u{002E}',
-    '\u{0031}',
-    '\u{0038}',
-    '\u{002E}',
-    '\u{0031}',
-    '\u{0039}',
-    '\u{002E}',
-    '\u{0032}',
-    '\u{0030}',
-    '\u{002E}',
-    '\u{0028}',
-    '\u{0061}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0062}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0063}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0064}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0065}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0066}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0067}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0068}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0069}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{006A}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{006B}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{006C}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{006D}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{006E}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{006F}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0070}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0071}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0072}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0073}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0074}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0075}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0076}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0077}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0078}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0079}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{007A}',
-    '\u{0029}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0030}',
-    '\u{222B}',
-    '\u{222B}',
-    '\u{222B}',
-    '\u{222B}',
-    '\u{003A}',
-    '\u{003A}',
-    '\u{003D}',
-    '\u{003D}',
-    '\u{003D}',
-    '\u{003D}',
-    '\u{003D}',
-    '\u{003D}',
-    '\u{006A}',
-    '\u{0056}',
-    '\u{2D61}',
-    '\u{6BCD}',
-    '\u{9F9F}',
-    '\u{4E00}',
-    '\u{4E28}',
-    '\u{4E36}',
-    '\u{4E3F}',
-    '\u{4E59}',
-    '\u{4E85}',
-    '\u{4E8C}',
-    '\u{4EA0}',
-    '\u{4EBA}',
-    '\u{513F}',
-    '\u{5165}',
-    '\u{516B}',
-    '\u{5182}',
-    '\u{5196}',
-    '\u{51AB}',
-    '\u{51E0}',
-    '\u{51F5}',
-    '\u{5200}',
-    '\u{529B}',
-    '\u{52F9}',
-    '\u{5315}',
-    '\u{531A}',
-    '\u{5338}',
-    '\u{5341}',
-    '\u{535C}',
-    '\u{5369}',
-    '\u{5382}',
-    '\u{53B6}',
-    '\u{53C8}',
-    '\u{53E3}',
-    '\u{56D7}',
-    '\u{571F}',
-    '\u{58EB}',
-    '\u{5902}',
-    '\u{590A}',
-    '\u{5915}',
-    '\u{5927}',
-    '\u{5973}',
-    '\u{5B50}',
-    '\u{5B80}',
-    '\u{5BF8}',
-    '\u{5C0F}',
-    '\u{5C22}',
-    '\u{5C38}',
-    '\u{5C6E}',
-    '\u{5C71}',
-    '\u{5DDB}',
-    '\u{5DE5}',
-    '\u{5DF1}',
-    '\u{5DFE}',
-    '\u{5E72}',
-    '\u{5E7A}',
-    '\u{5E7F}',
-    '\u{5EF4}',
-    '\u{5EFE}',
-    '\u{5F0B}',
-    '\u{5F13}',
-    '\u{5F50}',
-    '\u{5F61}',
-    '\u{5F73}',
-    '\u{5FC3}',
-    '\u{6208}',
-    '\u{6236}',
-    '\u{624B}',
-    '\u{652F}',
-    '\u{6534}',
-    '\u{6587}',
-    '\u{6597}',
-    '\u{65A4}',
-    '\u{65B9}',
-    '\u{65E0}',
-    '\u{65E5}',
-    '\u{66F0}',
-    '\u{6708}',
-    '\u{6728}',
-    '\u{6B20}',
-    '\u{6B62}',
-    '\u{6B79}',
-    '\u{6BB3}',
-    '\u{6BCB}',
-    '\u{6BD4}',
-    '\u{6BDB}',
-    '\u{6C0F}',
-    '\u{6C14}',
-    '\u{6C34}',
-    '\u{706B}',
-    '\u{722A}',
-    '\u{7236}',
-    '\u{723B}',
-    '\u{723F}',
-    '\u{7247}',
-    '\u{7259}',
-    '\u{725B}',
-    '\u{72AC}',
-    '\u{7384}',
-    '\u{7389}',
-    '\u{74DC}',
-    '\u{74E6}',
-    '\u{7518}',
-    '\u{751F}',
-    '\u{7528}',
-    '\u{7530}',
-    '\u{758B}',
-    '\u{7592}',
-    '\u{7676}',
-    '\u{767D}',
-    '\u{76AE}',
-    '\u{76BF}',
-    '\u{76EE}',
-    '\u{77DB}',
-    '\u{77E2}',
-    '\u{77F3}',
-    '\u{793A}',
-    '\u{79B8}',
-    '\u{79BE}',
-    '\u{7A74}',
-    '\u{7ACB}',
-    '\u{7AF9}',
-    '\u{7C73}',
-    '\u{7CF8}',
-    '\u{7F36}',
-    '\u{7F51}',
-    '\u{7F8A}',
-    '\u{7FBD}',
-    '\u{8001}',
-    '\u{800C}',
-    '\u{8012}',
-    '\u{8033}',
-    '\u{807F}',
-    '\u{8089}',
-    '\u{81E3}',
-    '\u{81EA}',
-    '\u{81F3}',
-    '\u{81FC}',
-    '\u{820C}',
-    '\u{821B}',
-    '\u{821F}',
-    '\u{826E}',
-    '\u{8272}',
-    '\u{8278}',
-    '\u{864D}',
-    '\u{866B}',
-    '\u{8840}',
-    '\u{884C}',
-    '\u{8863}',
-    '\u{897E}',
-    '\u{898B}',
-    '\u{89D2}',
-    '\u{8A00}',
-    '\u{8C37}',
-    '\u{8C46}',
-    '\u{8C55}',
-    '\u{8C78}',
-    '\u{8C9D}',
-    '\u{8D64}',
-    '\u{8D70}',
-    '\u{8DB3}',
-    '\u{8EAB}',
-    '\u{8ECA}',
-    '\u{8F9B}',
-    '\u{8FB0}',
-    '\u{8FB5}',
-    '\u{9091}',
-    '\u{9149}',
-    '\u{91C6}',
-    '\u{91CC}',
-    '\u{91D1}',
-    '\u{9577}',
-    '\u{9580}',
-    '\u{961C}',
-    '\u{96B6}',
-    '\u{96B9}',
-    '\u{96E8}',
-    '\u{9751}',
-    '\u{975E}',
-    '\u{9762}',
-    '\u{9769}',
-    '\u{97CB}',
-    '\u{97ED}',
-    '\u{97F3}',
-    '\u{9801}',
-    '\u{98A8}',
-    '\u{98DB}',
-    '\u{98DF}',
-    '\u{9996}',
-    '\u{9999}',
-    '\u{99AC}',
-    '\u{9AA8}',
-    '\u{9AD8}',
-    '\u{9ADF}',
-    '\u{9B25}',
-    '\u{9B2F}',
-    '\u{9B32}',
-    '\u{9B3C}',
-    '\u{9B5A}',
-    '\u{9CE5}',
-    '\u{9E75}',
-    '\u{9E7F}',
-    '\u{9EA5}',
-    '\u{9EBB}',
-    '\u{9EC3}',
-    '\u{9ECD}',
-    '\u{9ED1}',
-    '\u{9EF9}',
-    '\u{9EFD}',
-    '\u{9F0E}',
-    '\u{9F13}',
-    '\u{9F20}',
-    '\u{9F3B}',
-    '\u{9F4A}',
-    '\u{9F52}',
-    '\u{9F8D}',
-    '\u{9F9C}',
-    '\u{9FA0}',
-    '\u{0020}',
-    '\u{3012}',
-    '\u{5341}',
-    '\u{5344}',
-    '\u{5345}',
-    '\u{0020}',
-    '\u{3099}',
-    '\u{0020}',
-    '\u{309A}',
-    '\u{3088}',
-    '\u{308A}',
-    '\u{30B3}',
-    '\u{30C8}',
-    '\u{1100}',
-    '\u{1101}',
-    '\u{11AA}',
-    '\u{1102}',
-    '\u{11AC}',
-    '\u{11AD}',
-    '\u{1103}',
-    '\u{1104}',
-    '\u{1105}',
-    '\u{11B0}',
-    '\u{11B1}',
-    '\u{11B2}',
-    '\u{11B3}',
-    '\u{11B4}',
-    '\u{11B5}',
-    '\u{111A}',
-    '\u{1106}',
-    '\u{1107}',
-    '\u{1108}',
-    '\u{1121}',
-    '\u{1109}',
-    '\u{110A}',
-    '\u{110B}',
-    '\u{110C}',
-    '\u{110D}',
-    '\u{110E}',
-    '\u{110F}',
-    '\u{1110}',
-    '\u{1111}',
-    '\u{1112}',
-    '\u{1161}',
-    '\u{1162}',
-    '\u{1163}',
-    '\u{1164}',
-    '\u{1165}',
-    '\u{1166}',
-    '\u{1167}',
-    '\u{1168}',
-    '\u{1169}',
-    '\u{116A}',
-    '\u{116B}',
-    '\u{116C}',
-    '\u{116D}',
-    '\u{116E}',
-    '\u{116F}',
-    '\u{1170}',
-    '\u{1171}',
-    '\u{1172}',
-    '\u{1173}',
-    '\u{1174}',
-    '\u{1175}',
-    '\u{1160}',
-    '\u{1114}',
-    '\u{1115}',
-    '\u{11C7}',
-    '\u{11C8}',
-    '\u{11CC}',
-    '\u{11CE}',
-    '\u{11D3}',
-    '\u{11D7}',
-    '\u{11D9}',
-    '\u{111C}',
-    '\u{11DD}',
-    '\u{11DF}',
-    '\u{111D}',
-    '\u{111E}',
-    '\u{1120}',
-    '\u{1122}',
-    '\u{1123}',
-    '\u{1127}',
-    '\u{1129}',
-    '\u{112B}',
-    '\u{112C}',
-    '\u{112D}',
-    '\u{112E}',
-    '\u{112F}',
-    '\u{1132}',
-    '\u{1136}',
-    '\u{1140}',
-    '\u{1147}',
-    '\u{114C}',
-    '\u{11F1}',
-    '\u{11F2}',
-    '\u{1157}',
-    '\u{1158}',
-    '\u{1159}',
-    '\u{1184}',
-    '\u{1185}',
-    '\u{1188}',
-    '\u{1191}',
-    '\u{1192}',
-    '\u{1194}',
-    '\u{119E}',
-    '\u{11A1}',
-    '\u{4E00}',
-    '\u{4E8C}',
-    '\u{4E09}',
-    '\u{56DB}',
-    '\u{4E0A}',
-    '\u{4E2D}',
-    '\u{4E0B}',
-    '\u{7532}',
-    '\u{4E59}',
-    '\u{4E19}',
-    '\u{4E01}',
-    '\u{5929}',
-    '\u{5730}',
-    '\u{4EBA}',
-    '\u{0028}',
-    '\u{1100}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1102}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1103}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1105}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1106}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1107}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1109}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110B}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110C}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110E}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110F}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1110}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1111}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1112}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1100}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1102}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1103}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1105}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1106}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1107}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1109}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110B}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110C}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110E}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110F}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1110}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1111}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{1112}',
-    '\u{1161}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110C}',
-    '\u{116E}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110B}',
-    '\u{1169}',
-    '\u{110C}',
-    '\u{1165}',
-    '\u{11AB}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{110B}',
-    '\u{1169}',
-    '\u{1112}',
-    '\u{116E}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{4E00}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{4E8C}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{4E09}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{56DB}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{4E94}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{516D}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{4E03}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{516B}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{4E5D}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{5341}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{6708}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{706B}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{6C34}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{6728}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{91D1}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{571F}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{65E5}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{682A}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{6709}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{793E}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{540D}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{7279}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{8CA1}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{795D}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{52B4}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{4EE3}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{547C}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{5B66}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{76E3}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{4F01}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{8CC7}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{5354}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{796D}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{4F11}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{81EA}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{81F3}',
-    '\u{0029}',
-    '\u{554F}',
-    '\u{5E7C}',
-    '\u{6587}',
-    '\u{7B8F}',
-    '\u{0050}',
-    '\u{0054}',
-    '\u{0045}',
-    '\u{0032}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0032}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0032}',
-    '\u{0034}',
-    '\u{0032}',
-    '\u{0035}',
-    '\u{0032}',
-    '\u{0036}',
-    '\u{0032}',
-    '\u{0037}',
-    '\u{0032}',
-    '\u{0038}',
-    '\u{0032}',
-    '\u{0039}',
-    '\u{0033}',
-    '\u{0030}',
-    '\u{0033}',
-    '\u{0031}',
-    '\u{0033}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0033}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0033}',
-    '\u{0035}',
-    '\u{1100}',
-    '\u{1102}',
-    '\u{1103}',
-    '\u{1105}',
-    '\u{1106}',
-    '\u{1107}',
-    '\u{1109}',
-    '\u{110B}',
-    '\u{110C}',
-    '\u{110E}',
-    '\u{110F}',
-    '\u{1110}',
-    '\u{1111}',
-    '\u{1112}',
-    '\u{1100}',
-    '\u{1161}',
-    '\u{1102}',
-    '\u{1161}',
-    '\u{1103}',
-    '\u{1161}',
-    '\u{1105}',
-    '\u{1161}',
-    '\u{1106}',
-    '\u{1161}',
-    '\u{1107}',
-    '\u{1161}',
-    '\u{1109}',
-    '\u{1161}',
-    '\u{110B}',
-    '\u{1161}',
-    '\u{110C}',
-    '\u{1161}',
-    '\u{110E}',
-    '\u{1161}',
-    '\u{110F}',
-    '\u{1161}',
-    '\u{1110}',
-    '\u{1161}',
-    '\u{1111}',
-    '\u{1161}',
-    '\u{1112}',
-    '\u{1161}',
-    '\u{110E}',
-    '\u{1161}',
-    '\u{11B7}',
-    '\u{1100}',
-    '\u{1169}',
-    '\u{110C}',
-    '\u{116E}',
-    '\u{110B}',
-    '\u{1174}',
-    '\u{110B}',
-    '\u{116E}',
-    '\u{4E00}',
-    '\u{4E8C}',
-    '\u{4E09}',
-    '\u{56DB}',
-    '\u{4E94}',
-    '\u{516D}',
-    '\u{4E03}',
-    '\u{516B}',
-    '\u{4E5D}',
-    '\u{5341}',
-    '\u{6708}',
-    '\u{706B}',
-    '\u{6C34}',
-    '\u{6728}',
-    '\u{91D1}',
-    '\u{571F}',
-    '\u{65E5}',
-    '\u{682A}',
-    '\u{6709}',
-    '\u{793E}',
-    '\u{540D}',
-    '\u{7279}',
-    '\u{8CA1}',
-    '\u{795D}',
-    '\u{52B4}',
-    '\u{79D8}',
-    '\u{7537}',
-    '\u{5973}',
-    '\u{9069}',
-    '\u{512A}',
-    '\u{5370}',
-    '\u{6CE8}',
-    '\u{9805}',
-    '\u{4F11}',
-    '\u{5199}',
-    '\u{6B63}',
-    '\u{4E0A}',
-    '\u{4E2D}',
-    '\u{4E0B}',
-    '\u{5DE6}',
-    '\u{53F3}',
-    '\u{533B}',
-    '\u{5B97}',
-    '\u{5B66}',
-    '\u{76E3}',
-    '\u{4F01}',
-    '\u{8CC7}',
-    '\u{5354}',
-    '\u{591C}',
-    '\u{0033}',
-    '\u{0036}',
-    '\u{0033}',
-    '\u{0037}',
-    '\u{0033}',
-    '\u{0038}',
-    '\u{0033}',
-    '\u{0039}',
-    '\u{0034}',
-    '\u{0030}',
-    '\u{0034}',
-    '\u{0031}',
-    '\u{0034}',
-    '\u{0032}',
-    '\u{0034}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0034}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0034}',
-    '\u{0036}',
-    '\u{0034}',
-    '\u{0037}',
-    '\u{0034}',
-    '\u{0038}',
-    '\u{0034}',
-    '\u{0039}',
-    '\u{0035}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{6708}',
-    '\u{0032}',
-    '\u{6708}',
-    '\u{0033}',
-    '\u{6708}',
-    '\u{0034}',
-    '\u{6708}',
-    '\u{0035}',
-    '\u{6708}',
-    '\u{0036}',
-    '\u{6708}',
-    '\u{0037}',
-    '\u{6708}',
-    '\u{0038}',
-    '\u{6708}',
-    '\u{0039}',
-    '\u{6708}',
-    '\u{0031}',
-    '\u{0030}',
-    '\u{6708}',
-    '\u{0031}',
-    '\u{0031}',
-    '\u{6708}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{6708}',
-    '\u{0048}',
-    '\u{0067}',
-    '\u{0065}',
-    '\u{0072}',
-    '\u{0067}',
-    '\u{0065}',
-    '\u{0056}',
-    '\u{004C}',
-    '\u{0054}',
-    '\u{0044}',
-    '\u{30A2}',
-    '\u{30A4}',
-    '\u{30A6}',
-    '\u{30A8}',
-    '\u{30AA}',
-    '\u{30AB}',
-    '\u{30AD}',
-    '\u{30AF}',
-    '\u{30B1}',
-    '\u{30B3}',
-    '\u{30B5}',
-    '\u{30B7}',
-    '\u{30B9}',
-    '\u{30BB}',
-    '\u{30BD}',
-    '\u{30BF}',
-    '\u{30C1}',
-    '\u{30C4}',
-    '\u{30C6}',
-    '\u{30C8}',
-    '\u{30CA}',
-    '\u{30CB}',
-    '\u{30CC}',
-    '\u{30CD}',
-    '\u{30CE}',
-    '\u{30CF}',
-    '\u{30D2}',
-    '\u{30D5}',
-    '\u{30D8}',
-    '\u{30DB}',
-    '\u{30DE}',
-    '\u{30DF}',
-    '\u{30E0}',
-    '\u{30E1}',
-    '\u{30E2}',
-    '\u{30E4}',
-    '\u{30E6}',
-    '\u{30E8}',
-    '\u{30E9}',
-    '\u{30EA}',
-    '\u{30EB}',
-    '\u{30EC}',
-    '\u{30ED}',
-    '\u{30EF}',
-    '\u{30F0}',
-    '\u{30F1}',
-    '\u{30F2}',
-    '\u{4EE4}',
-    '\u{548C}',
-    '\u{30A2}',
-    '\u{30CF}',
-    '\u{309A}',
-    '\u{30FC}',
-    '\u{30C8}',
-    '\u{30A2}',
-    '\u{30EB}',
-    '\u{30D5}',
-    '\u{30A1}',
-    '\u{30A2}',
-    '\u{30F3}',
-    '\u{30D8}',
-    '\u{309A}',
-    '\u{30A2}',
-    '\u{30A2}',
-    '\u{30FC}',
-    '\u{30EB}',
-    '\u{30A4}',
-    '\u{30CB}',
-    '\u{30F3}',
-    '\u{30AF}',
-    '\u{3099}',
-    '\u{30A4}',
-    '\u{30F3}',
-    '\u{30C1}',
-    '\u{30A6}',
-    '\u{30A9}',
-    '\u{30F3}',
-    '\u{30A8}',
-    '\u{30B9}',
-    '\u{30AF}',
-    '\u{30FC}',
-    '\u{30C8}',
-    '\u{3099}',
-    '\u{30A8}',
-    '\u{30FC}',
-    '\u{30AB}',
-    '\u{30FC}',
-    '\u{30AA}',
-    '\u{30F3}',
-    '\u{30B9}',
-    '\u{30AA}',
-    '\u{30FC}',
-    '\u{30E0}',
-    '\u{30AB}',
-    '\u{30A4}',
-    '\u{30EA}',
-    '\u{30AB}',
-    '\u{30E9}',
-    '\u{30C3}',
-    '\u{30C8}',
-    '\u{30AB}',
-    '\u{30ED}',
-    '\u{30EA}',
-    '\u{30FC}',
-    '\u{30AB}',
-    '\u{3099}',
-    '\u{30ED}',
-    '\u{30F3}',
-    '\u{30AB}',
-    '\u{3099}',
-    '\u{30F3}',
-    '\u{30DE}',
-    '\u{30AD}',
-    '\u{3099}',
-    '\u{30AB}',
-    '\u{3099}',
-    '\u{30AD}',
-    '\u{3099}',
-    '\u{30CB}',
-    '\u{30FC}',
-    '\u{30AD}',
-    '\u{30E5}',
-    '\u{30EA}',
-    '\u{30FC}',
-    '\u{30AD}',
-    '\u{3099}',
-    '\u{30EB}',
-    '\u{30BF}',
-    '\u{3099}',
-    '\u{30FC}',
-    '\u{30AD}',
-    '\u{30ED}',
-    '\u{30AD}',
-    '\u{30ED}',
-    '\u{30AF}',
-    '\u{3099}',
-    '\u{30E9}',
-    '\u{30E0}',
-    '\u{30AD}',
-    '\u{30ED}',
-    '\u{30E1}',
-    '\u{30FC}',
-    '\u{30C8}',
-    '\u{30EB}',
-    '\u{30AD}',
-    '\u{30ED}',
-    '\u{30EF}',
-    '\u{30C3}',
-    '\u{30C8}',
-    '\u{30AF}',
-    '\u{3099}',
-    '\u{30E9}',
-    '\u{30E0}',
-    '\u{30AF}',
-    '\u{3099}',
-    '\u{30E9}',
-    '\u{30E0}',
-    '\u{30C8}',
-    '\u{30F3}',
-    '\u{30AF}',
-    '\u{30EB}',
-    '\u{30BB}',
-    '\u{3099}',
-    '\u{30A4}',
-    '\u{30ED}',
-    '\u{30AF}',
-    '\u{30ED}',
-    '\u{30FC}',
-    '\u{30CD}',
-    '\u{30B1}',
-    '\u{30FC}',
-    '\u{30B9}',
-    '\u{30B3}',
-    '\u{30EB}',
-    '\u{30CA}',
-    '\u{30B3}',
-    '\u{30FC}',
-    '\u{30DB}',
-    '\u{309A}',
-    '\u{30B5}',
-    '\u{30A4}',
-    '\u{30AF}',
-    '\u{30EB}',
-    '\u{30B5}',
-    '\u{30F3}',
-    '\u{30C1}',
-    '\u{30FC}',
-    '\u{30E0}',
-    '\u{30B7}',
-    '\u{30EA}',
-    '\u{30F3}',
-    '\u{30AF}',
-    '\u{3099}',
-    '\u{30BB}',
-    '\u{30F3}',
-    '\u{30C1}',
-    '\u{30BB}',
-    '\u{30F3}',
-    '\u{30C8}',
-    '\u{30BF}',
-    '\u{3099}',
-    '\u{30FC}',
-    '\u{30B9}',
-    '\u{30C6}',
-    '\u{3099}',
-    '\u{30B7}',
-    '\u{30C8}',
-    '\u{3099}',
-    '\u{30EB}',
-    '\u{30C8}',
-    '\u{30F3}',
-    '\u{30CA}',
-    '\u{30CE}',
-    '\u{30CE}',
-    '\u{30C3}',
-    '\u{30C8}',
-    '\u{30CF}',
-    '\u{30A4}',
-    '\u{30C4}',
-    '\u{30CF}',
-    '\u{309A}',
-    '\u{30FC}',
-    '\u{30BB}',
-    '\u{30F3}',
-    '\u{30C8}',
-    '\u{30CF}',
-    '\u{309A}',
-    '\u{30FC}',
-    '\u{30C4}',
-    '\u{30CF}',
-    '\u{3099}',
-    '\u{30FC}',
-    '\u{30EC}',
-    '\u{30EB}',
-    '\u{30D2}',
-    '\u{309A}',
-    '\u{30A2}',
-    '\u{30B9}',
-    '\u{30C8}',
-    '\u{30EB}',
-    '\u{30D2}',
-    '\u{309A}',
-    '\u{30AF}',
-    '\u{30EB}',
-    '\u{30D2}',
-    '\u{309A}',
-    '\u{30B3}',
-    '\u{30D2}',
-    '\u{3099}',
-    '\u{30EB}',
-    '\u{30D5}',
-    '\u{30A1}',
-    '\u{30E9}',
-    '\u{30C3}',
-    '\u{30C8}',
-    '\u{3099}',
-    '\u{30D5}',
-    '\u{30A3}',
-    '\u{30FC}',
-    '\u{30C8}',
-    '\u{30D5}',
-    '\u{3099}',
-    '\u{30C3}',
-    '\u{30B7}',
-    '\u{30A7}',
-    '\u{30EB}',
-    '\u{30D5}',
-    '\u{30E9}',
-    '\u{30F3}',
-    '\u{30D8}',
-    '\u{30AF}',
-    '\u{30BF}',
-    '\u{30FC}',
-    '\u{30EB}',
-    '\u{30D8}',
-    '\u{309A}',
-    '\u{30BD}',
-    '\u{30D8}',
-    '\u{309A}',
-    '\u{30CB}',
-    '\u{30D2}',
-    '\u{30D8}',
-    '\u{30EB}',
-    '\u{30C4}',
-    '\u{30D8}',
-    '\u{309A}',
-    '\u{30F3}',
-    '\u{30B9}',
-    '\u{30D8}',
-    '\u{309A}',
-    '\u{30FC}',
-    '\u{30B7}',
-    '\u{3099}',
-    '\u{30D8}',
-    '\u{3099}',
-    '\u{30FC}',
-    '\u{30BF}',
-    '\u{30DB}',
-    '\u{309A}',
-    '\u{30A4}',
-    '\u{30F3}',
-    '\u{30C8}',
-    '\u{30DB}',
-    '\u{3099}',
-    '\u{30EB}',
-    '\u{30C8}',
-    '\u{30DB}',
-    '\u{30F3}',
-    '\u{30DB}',
-    '\u{309A}',
-    '\u{30F3}',
-    '\u{30C8}',
-    '\u{3099}',
-    '\u{30DB}',
-    '\u{30FC}',
-    '\u{30EB}',
-    '\u{30DB}',
-    '\u{30FC}',
-    '\u{30F3}',
-    '\u{30DE}',
-    '\u{30A4}',
-    '\u{30AF}',
-    '\u{30ED}',
-    '\u{30DE}',
-    '\u{30A4}',
-    '\u{30EB}',
-    '\u{30DE}',
-    '\u{30C3}',
-    '\u{30CF}',
-    '\u{30DE}',
-    '\u{30EB}',
-    '\u{30AF}',
-    '\u{30DE}',
-    '\u{30F3}',
-    '\u{30B7}',
-    '\u{30E7}',
-    '\u{30F3}',
-    '\u{30DF}',
-    '\u{30AF}',
-    '\u{30ED}',
-    '\u{30F3}',
-    '\u{30DF}',
-    '\u{30EA}',
-    '\u{30DF}',
-    '\u{30EA}',
-    '\u{30CF}',
-    '\u{3099}',
-    '\u{30FC}',
-    '\u{30EB}',
-    '\u{30E1}',
-    '\u{30AB}',
-    '\u{3099}',
-    '\u{30E1}',
-    '\u{30AB}',
-    '\u{3099}',
-    '\u{30C8}',
-    '\u{30F3}',
-    '\u{30E1}',
-    '\u{30FC}',
-    '\u{30C8}',
-    '\u{30EB}',
-    '\u{30E4}',
-    '\u{30FC}',
-    '\u{30C8}',
-    '\u{3099}',
-    '\u{30E4}',
-    '\u{30FC}',
-    '\u{30EB}',
-    '\u{30E6}',
-    '\u{30A2}',
-    '\u{30F3}',
-    '\u{30EA}',
-    '\u{30C3}',
-    '\u{30C8}',
-    '\u{30EB}',
-    '\u{30EA}',
-    '\u{30E9}',
-    '\u{30EB}',
-    '\u{30D2}',
-    '\u{309A}',
-    '\u{30FC}',
-    '\u{30EB}',
-    '\u{30FC}',
-    '\u{30D5}',
-    '\u{3099}',
-    '\u{30EB}',
-    '\u{30EC}',
-    '\u{30E0}',
-    '\u{30EC}',
-    '\u{30F3}',
-    '\u{30C8}',
-    '\u{30B1}',
-    '\u{3099}',
-    '\u{30F3}',
-    '\u{30EF}',
-    '\u{30C3}',
-    '\u{30C8}',
-    '\u{0030}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{70B9}',
-    '\u{0032}',
-    '\u{70B9}',
-    '\u{0033}',
-    '\u{70B9}',
-    '\u{0034}',
-    '\u{70B9}',
-    '\u{0035}',
-    '\u{70B9}',
-    '\u{0036}',
-    '\u{70B9}',
-    '\u{0037}',
-    '\u{70B9}',
-    '\u{0038}',
-    '\u{70B9}',
-    '\u{0039}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{0030}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{0031}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{0033}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{0034}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{0035}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{0036}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{0037}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{0038}',
-    '\u{70B9}',
-    '\u{0031}',
-    '\u{0039}',
-    '\u{70B9}',
-    '\u{0032}',
-    '\u{0030}',
-    '\u{70B9}',
-    '\u{0032}',
-    '\u{0031}',
-    '\u{70B9}',
-    '\u{0032}',
-    '\u{0032}',
-    '\u{70B9}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{70B9}',
-    '\u{0032}',
-    '\u{0034}',
-    '\u{70B9}',
-    '\u{0068}',
-    '\u{0050}',
-    '\u{0061}',
-    '\u{0064}',
-    '\u{0061}',
-    '\u{0041}',
-    '\u{0055}',
-    '\u{0062}',
-    '\u{0061}',
-    '\u{0072}',
-    '\u{006F}',
-    '\u{0056}',
-    '\u{0070}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{006D}',
-    '\u{0064}',
-    '\u{006D}',
-    '\u{0032}',
-    '\u{0064}',
-    '\u{006D}',
-    '\u{0033}',
-    '\u{0049}',
-    '\u{0055}',
-    '\u{5E73}',
-    '\u{6210}',
-    '\u{662D}',
-    '\u{548C}',
-    '\u{5927}',
-    '\u{6B63}',
-    '\u{660E}',
-    '\u{6CBB}',
-    '\u{682A}',
-    '\u{5F0F}',
-    '\u{4F1A}',
-    '\u{793E}',
-    '\u{0070}',
-    '\u{0041}',
-    '\u{006E}',
-    '\u{0041}',
-    '\u{03BC}',
-    '\u{0041}',
-    '\u{006D}',
-    '\u{0041}',
-    '\u{006B}',
-    '\u{0041}',
-    '\u{004B}',
-    '\u{0042}',
-    '\u{004D}',
-    '\u{0042}',
-    '\u{0047}',
-    '\u{0042}',
-    '\u{0063}',
-    '\u{0061}',
-    '\u{006C}',
-    '\u{006B}',
-    '\u{0063}',
-    '\u{0061}',
-    '\u{006C}',
-    '\u{0070}',
-    '\u{0046}',
-    '\u{006E}',
-    '\u{0046}',
-    '\u{03BC}',
-    '\u{0046}',
-    '\u{03BC}',
-    '\u{0067}',
-    '\u{006D}',
-    '\u{0067}',
-    '\u{006B}',
-    '\u{0067}',
-    '\u{0048}',
-    '\u{007A}',
-    '\u{006B}',
-    '\u{0048}',
-    '\u{007A}',
-    '\u{004D}',
-    '\u{0048}',
-    '\u{007A}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{007A}',
-    '\u{0054}',
-    '\u{0048}',
-    '\u{007A}',
-    '\u{03BC}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006C}',
-    '\u{0064}',
-    '\u{006C}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{0066}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006D}',
-    '\u{03BC}',
-    '\u{006D}',
-    '\u{006D}',
-    '\u{006D}',
-    '\u{0063}',
-    '\u{006D}',
-    '\u{006B}',
-    '\u{006D}',
-    '\u{006D}',
-    '\u{006D}',
-    '\u{0032}',
-    '\u{0063}',
-    '\u{006D}',
-    '\u{0032}',
-    '\u{006D}',
-    '\u{0032}',
-    '\u{006B}',
-    '\u{006D}',
-    '\u{0032}',
-    '\u{006D}',
-    '\u{006D}',
-    '\u{0033}',
-    '\u{0063}',
-    '\u{006D}',
-    '\u{0033}',
-    '\u{006D}',
-    '\u{0033}',
-    '\u{006B}',
-    '\u{006D}',
-    '\u{0033}',
-    '\u{006D}',
-    '\u{2215}',
-    '\u{0073}',
-    '\u{006D}',
-    '\u{2215}',
-    '\u{0073}',
-    '\u{0032}',
-    '\u{0050}',
-    '\u{0061}',
-    '\u{006B}',
-    '\u{0050}',
-    '\u{0061}',
-    '\u{004D}',
-    '\u{0050}',
-    '\u{0061}',
-    '\u{0047}',
-    '\u{0050}',
-    '\u{0061}',
-    '\u{0072}',
-    '\u{0061}',
-    '\u{0064}',
-    '\u{0072}',
-    '\u{0061}',
-    '\u{0064}',
-    '\u{2215}',
-    '\u{0073}',
-    '\u{0072}',
-    '\u{0061}',
-    '\u{0064}',
-    '\u{2215}',
-    '\u{0073}',
-    '\u{0032}',
-    '\u{0070}',
-    '\u{0073}',
-    '\u{006E}',
-    '\u{0073}',
-    '\u{03BC}',
-    '\u{0073}',
-    '\u{006D}',
-    '\u{0073}',
-    '\u{0070}',
-    '\u{0056}',
-    '\u{006E}',
-    '\u{0056}',
-    '\u{03BC}',
-    '\u{0056}',
-    '\u{006D}',
-    '\u{0056}',
-    '\u{006B}',
-    '\u{0056}',
-    '\u{004D}',
-    '\u{0056}',
-    '\u{0070}',
-    '\u{0057}',
-    '\u{006E}',
-    '\u{0057}',
-    '\u{03BC}',
-    '\u{0057}',
-    '\u{006D}',
-    '\u{0057}',
-    '\u{006B}',
-    '\u{0057}',
-    '\u{004D}',
-    '\u{0057}',
-    '\u{006B}',
-    '\u{03A9}',
-    '\u{004D}',
-    '\u{03A9}',
-    '\u{0061}',
-    '\u{002E}',
-    '\u{006D}',
-    '\u{002E}',
-    '\u{0042}',
-    '\u{0071}',
-    '\u{0063}',
-    '\u{0063}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0043}',
-    '\u{2215}',
-    '\u{006B}',
-    '\u{0067}',
-    '\u{0043}',
-    '\u{006F}',
-    '\u{002E}',
-    '\u{0064}',
-    '\u{0042}',
-    '\u{0047}',
-    '\u{0079}',
-    '\u{0068}',
-    '\u{0061}',
-    '\u{0048}',
-    '\u{0050}',
-    '\u{0069}',
-    '\u{006E}',
-    '\u{004B}',
-    '\u{004B}',
-    '\u{004B}',
-    '\u{004D}',
-    '\u{006B}',
-    '\u{0074}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006C}',
-    '\u{006E}',
-    '\u{006C}',
-    '\u{006F}',
-    '\u{0067}',
-    '\u{006C}',
-    '\u{0078}',
-    '\u{006D}',
-    '\u{0062}',
-    '\u{006D}',
-    '\u{0069}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006F}',
-    '\u{006C}',
-    '\u{0050}',
-    '\u{0048}',
-    '\u{0070}',
-    '\u{002E}',
-    '\u{006D}',
-    '\u{002E}',
-    '\u{0050}',
-    '\u{0050}',
-    '\u{004D}',
-    '\u{0050}',
-    '\u{0052}',
-    '\u{0073}',
-    '\u{0072}',
-    '\u{0053}',
-    '\u{0076}',
-    '\u{0057}',
-    '\u{0062}',
-    '\u{0056}',
-    '\u{2215}',
-    '\u{006D}',
-    '\u{0041}',
-    '\u{2215}',
-    '\u{006D}',
-    '\u{0031}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{65E5}',
-    '\u{0033}',
-    '\u{65E5}',
-    '\u{0034}',
-    '\u{65E5}',
-    '\u{0035}',
-    '\u{65E5}',
-    '\u{0036}',
-    '\u{65E5}',
-    '\u{0037}',
-    '\u{65E5}',
-    '\u{0038}',
-    '\u{65E5}',
-    '\u{0039}',
-    '\u{65E5}',
-    '\u{0031}',
-    '\u{0030}',
-    '\u{65E5}',
-    '\u{0031}',
-    '\u{0031}',
-    '\u{65E5}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{65E5}',
-    '\u{0031}',
-    '\u{0033}',
-    '\u{65E5}',
-    '\u{0031}',
-    '\u{0034}',
-    '\u{65E5}',
-    '\u{0031}',
-    '\u{0035}',
-    '\u{65E5}',
-    '\u{0031}',
-    '\u{0036}',
-    '\u{65E5}',
-    '\u{0031}',
-    '\u{0037}',
-    '\u{65E5}',
-    '\u{0031}',
-    '\u{0038}',
-    '\u{65E5}',
-    '\u{0031}',
-    '\u{0039}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{0030}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{0031}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{0032}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{0034}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{0035}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{0036}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{0037}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{0038}',
-    '\u{65E5}',
-    '\u{0032}',
-    '\u{0039}',
-    '\u{65E5}',
-    '\u{0033}',
-    '\u{0030}',
-    '\u{65E5}',
-    '\u{0033}',
-    '\u{0031}',
-    '\u{65E5}',
-    '\u{0067}',
-    '\u{0061}',
-    '\u{006C}',
-    '\u{044A}',
-    '\u{044C}',
-    '\u{A76F}',
-    '\u{0043}',
-    '\u{0046}',
-    '\u{0051}',
-    '\u{0126}',
-    '\u{0153}',
-    '\u{A727}',
-    '\u{AB37}',
-    '\u{026B}',
-    '\u{AB52}',
-    '\u{028D}',
-    '\u{0066}',
-    '\u{0066}',
-    '\u{0066}',
-    '\u{0069}',
-    '\u{0066}',
-    '\u{006C}',
-    '\u{0066}',
-    '\u{0066}',
-    '\u{0069}',
-    '\u{0066}',
-    '\u{0066}',
-    '\u{006C}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0574}',
-    '\u{0576}',
-    '\u{0574}',
-    '\u{0565}',
-    '\u{0574}',
-    '\u{056B}',
-    '\u{057E}',
-    '\u{0576}',
-    '\u{0574}',
-    '\u{056D}',
-    '\u{05E2}',
-    '\u{05D0}',
-    '\u{05D3}',
-    '\u{05D4}',
-    '\u{05DB}',
-    '\u{05DC}',
-    '\u{05DD}',
-    '\u{05E8}',
-    '\u{05EA}',
-    '\u{002B}',
-    '\u{05D0}',
-    '\u{05DC}',
-    '\u{0671}',
-    '\u{0671}',
-    '\u{067B}',
-    '\u{067B}',
-    '\u{067B}',
-    '\u{067B}',
-    '\u{067E}',
-    '\u{067E}',
-    '\u{067E}',
-    '\u{067E}',
-    '\u{0680}',
-    '\u{0680}',
-    '\u{0680}',
-    '\u{0680}',
-    '\u{067A}',
-    '\u{067A}',
-    '\u{067A}',
-    '\u{067A}',
-    '\u{067F}',
-    '\u{067F}',
-    '\u{067F}',
-    '\u{067F}',
-    '\u{0679}',
-    '\u{0679}',
-    '\u{0679}',
-    '\u{0679}',
-    '\u{06A4}',
-    '\u{06A4}',
-    '\u{06A4}',
-    '\u{06A4}',
-    '\u{06A6}',
-    '\u{06A6}',
-    '\u{06A6}',
-    '\u{06A6}',
-    '\u{0684}',
-    '\u{0684}',
-    '\u{0684}',
-    '\u{0684}',
-    '\u{0683}',
-    '\u{0683}',
-    '\u{0683}',
-    '\u{0683}',
-    '\u{0686}',
-    '\u{0686}',
-    '\u{0686}',
-    '\u{0686}',
-    '\u{0687}',
-    '\u{0687}',
-    '\u{0687}',
-    '\u{0687}',
-    '\u{068D}',
-    '\u{068D}',
-    '\u{068C}',
-    '\u{068C}',
-    '\u{068E}',
-    '\u{068E}',
-    '\u{0688}',
-    '\u{0688}',
-    '\u{0698}',
-    '\u{0698}',
-    '\u{0691}',
-    '\u{0691}',
-    '\u{06A9}',
-    '\u{06A9}',
-    '\u{06A9}',
-    '\u{06A9}',
-    '\u{06AF}',
-    '\u{06AF}',
-    '\u{06AF}',
-    '\u{06AF}',
-    '\u{06B3}',
-    '\u{06B3}',
-    '\u{06B3}',
-    '\u{06B3}',
-    '\u{06B1}',
-    '\u{06B1}',
-    '\u{06B1}',
-    '\u{06B1}',
-    '\u{06BA}',
-    '\u{06BA}',
-    '\u{06BB}',
-    '\u{06BB}',
-    '\u{06BB}',
-    '\u{06BB}',
-    '\u{06D5}',
-    '\u{0654}',
-    '\u{06D5}',
-    '\u{0654}',
-    '\u{06C1}',
-    '\u{06C1}',
-    '\u{06C1}',
-    '\u{06C1}',
-    '\u{06BE}',
-    '\u{06BE}',
-    '\u{06BE}',
-    '\u{06BE}',
-    '\u{06D2}',
-    '\u{06D2}',
-    '\u{06D2}',
-    '\u{0654}',
-    '\u{06D2}',
-    '\u{0654}',
-    '\u{06AD}',
-    '\u{06AD}',
-    '\u{06AD}',
-    '\u{06AD}',
-    '\u{06C7}',
-    '\u{06C7}',
-    '\u{06C6}',
-    '\u{06C6}',
-    '\u{06C8}',
-    '\u{06C8}',
-    '\u{06C7}',
-    '\u{0674}',
-    '\u{06CB}',
-    '\u{06CB}',
-    '\u{06C5}',
-    '\u{06C5}',
-    '\u{06C9}',
-    '\u{06C9}',
-    '\u{06D0}',
-    '\u{06D0}',
-    '\u{06D0}',
-    '\u{06D0}',
-    '\u{0649}',
-    '\u{0649}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0627}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0627}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06D5}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06D5}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0648}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0648}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06C7}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06C7}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06C6}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06C6}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06C8}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06C8}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06D0}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06D0}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{06D0}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0649}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0649}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0649}',
-    '\u{06CC}',
-    '\u{06CC}',
-    '\u{06CC}',
-    '\u{06CC}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0649}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{064A}',
-    '\u{0628}',
-    '\u{062C}',
-    '\u{0628}',
-    '\u{062D}',
-    '\u{0628}',
-    '\u{062E}',
-    '\u{0628}',
-    '\u{0645}',
-    '\u{0628}',
-    '\u{0649}',
-    '\u{0628}',
-    '\u{064A}',
-    '\u{062A}',
-    '\u{062C}',
-    '\u{062A}',
-    '\u{062D}',
-    '\u{062A}',
-    '\u{062E}',
-    '\u{062A}',
-    '\u{0645}',
-    '\u{062A}',
-    '\u{0649}',
-    '\u{062A}',
-    '\u{064A}',
-    '\u{062B}',
-    '\u{062C}',
-    '\u{062B}',
-    '\u{0645}',
-    '\u{062B}',
-    '\u{0649}',
-    '\u{062B}',
-    '\u{064A}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{062E}',
-    '\u{062C}',
-    '\u{062E}',
-    '\u{062D}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0633}',
-    '\u{062C}',
-    '\u{0633}',
-    '\u{062D}',
-    '\u{0633}',
-    '\u{062E}',
-    '\u{0633}',
-    '\u{0645}',
-    '\u{0635}',
-    '\u{062D}',
-    '\u{0635}',
-    '\u{0645}',
-    '\u{0636}',
-    '\u{062C}',
-    '\u{0636}',
-    '\u{062D}',
-    '\u{0636}',
-    '\u{062E}',
-    '\u{0636}',
-    '\u{0645}',
-    '\u{0637}',
-    '\u{062D}',
-    '\u{0637}',
-    '\u{0645}',
-    '\u{0638}',
-    '\u{0645}',
-    '\u{0639}',
-    '\u{062C}',
-    '\u{0639}',
-    '\u{0645}',
-    '\u{063A}',
-    '\u{062C}',
-    '\u{063A}',
-    '\u{0645}',
-    '\u{0641}',
-    '\u{062C}',
-    '\u{0641}',
-    '\u{062D}',
-    '\u{0641}',
-    '\u{062E}',
-    '\u{0641}',
-    '\u{0645}',
-    '\u{0641}',
-    '\u{0649}',
-    '\u{0641}',
-    '\u{064A}',
-    '\u{0642}',
-    '\u{062D}',
-    '\u{0642}',
-    '\u{0645}',
-    '\u{0642}',
-    '\u{0649}',
-    '\u{0642}',
-    '\u{064A}',
-    '\u{0643}',
-    '\u{0627}',
-    '\u{0643}',
-    '\u{062C}',
-    '\u{0643}',
-    '\u{062D}',
-    '\u{0643}',
-    '\u{062E}',
-    '\u{0643}',
-    '\u{0644}',
-    '\u{0643}',
-    '\u{0645}',
-    '\u{0643}',
-    '\u{0649}',
-    '\u{0643}',
-    '\u{064A}',
-    '\u{0644}',
-    '\u{062C}',
-    '\u{0644}',
-    '\u{062D}',
-    '\u{0644}',
-    '\u{062E}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{0644}',
-    '\u{0649}',
-    '\u{0644}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0649}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0646}',
-    '\u{062C}',
-    '\u{0646}',
-    '\u{062D}',
-    '\u{0646}',
-    '\u{062E}',
-    '\u{0646}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0649}',
-    '\u{0646}',
-    '\u{064A}',
-    '\u{0647}',
-    '\u{062C}',
-    '\u{0647}',
-    '\u{0645}',
-    '\u{0647}',
-    '\u{0649}',
-    '\u{0647}',
-    '\u{064A}',
-    '\u{064A}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{062E}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0649}',
-    '\u{064A}',
-    '\u{064A}',
-    '\u{0630}',
-    '\u{0670}',
-    '\u{0631}',
-    '\u{0670}',
-    '\u{0649}',
-    '\u{0670}',
-    '\u{0020}',
-    '\u{064C}',
-    '\u{0651}',
-    '\u{0020}',
-    '\u{064D}',
-    '\u{0651}',
-    '\u{0020}',
-    '\u{064E}',
-    '\u{0651}',
-    '\u{0020}',
-    '\u{064F}',
-    '\u{0651}',
-    '\u{0020}',
-    '\u{0650}',
-    '\u{0651}',
-    '\u{0020}',
-    '\u{0651}',
-    '\u{0670}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0631}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0632}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0646}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0649}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{064A}',
-    '\u{0628}',
-    '\u{0631}',
-    '\u{0628}',
-    '\u{0632}',
-    '\u{0628}',
-    '\u{0645}',
-    '\u{0628}',
-    '\u{0646}',
-    '\u{0628}',
-    '\u{0649}',
-    '\u{0628}',
-    '\u{064A}',
-    '\u{062A}',
-    '\u{0631}',
-    '\u{062A}',
-    '\u{0632}',
-    '\u{062A}',
-    '\u{0645}',
-    '\u{062A}',
-    '\u{0646}',
-    '\u{062A}',
-    '\u{0649}',
-    '\u{062A}',
-    '\u{064A}',
-    '\u{062B}',
-    '\u{0631}',
-    '\u{062B}',
-    '\u{0632}',
-    '\u{062B}',
-    '\u{0645}',
-    '\u{062B}',
-    '\u{0646}',
-    '\u{062B}',
-    '\u{0649}',
-    '\u{062B}',
-    '\u{064A}',
-    '\u{0641}',
-    '\u{0649}',
-    '\u{0641}',
-    '\u{064A}',
-    '\u{0642}',
-    '\u{0649}',
-    '\u{0642}',
-    '\u{064A}',
-    '\u{0643}',
-    '\u{0627}',
-    '\u{0643}',
-    '\u{0644}',
-    '\u{0643}',
-    '\u{0645}',
-    '\u{0643}',
-    '\u{0649}',
-    '\u{0643}',
-    '\u{064A}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{0644}',
-    '\u{0649}',
-    '\u{0644}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{0627}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0631}',
-    '\u{0646}',
-    '\u{0632}',
-    '\u{0646}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0646}',
-    '\u{0646}',
-    '\u{0649}',
-    '\u{0646}',
-    '\u{064A}',
-    '\u{0649}',
-    '\u{0670}',
-    '\u{064A}',
-    '\u{0631}',
-    '\u{064A}',
-    '\u{0632}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0646}',
-    '\u{064A}',
-    '\u{0649}',
-    '\u{064A}',
-    '\u{064A}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{062E}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0647}',
-    '\u{0628}',
-    '\u{062C}',
-    '\u{0628}',
-    '\u{062D}',
-    '\u{0628}',
-    '\u{062E}',
-    '\u{0628}',
-    '\u{0645}',
-    '\u{0628}',
-    '\u{0647}',
-    '\u{062A}',
-    '\u{062C}',
-    '\u{062A}',
-    '\u{062D}',
-    '\u{062A}',
-    '\u{062E}',
-    '\u{062A}',
-    '\u{0645}',
-    '\u{062A}',
-    '\u{0647}',
-    '\u{062B}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{062E}',
-    '\u{062C}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0633}',
-    '\u{062C}',
-    '\u{0633}',
-    '\u{062D}',
-    '\u{0633}',
-    '\u{062E}',
-    '\u{0633}',
-    '\u{0645}',
-    '\u{0635}',
-    '\u{062D}',
-    '\u{0635}',
-    '\u{062E}',
-    '\u{0635}',
-    '\u{0645}',
-    '\u{0636}',
-    '\u{062C}',
-    '\u{0636}',
-    '\u{062D}',
-    '\u{0636}',
-    '\u{062E}',
-    '\u{0636}',
-    '\u{0645}',
-    '\u{0637}',
-    '\u{062D}',
-    '\u{0638}',
-    '\u{0645}',
-    '\u{0639}',
-    '\u{062C}',
-    '\u{0639}',
-    '\u{0645}',
-    '\u{063A}',
-    '\u{062C}',
-    '\u{063A}',
-    '\u{0645}',
-    '\u{0641}',
-    '\u{062C}',
-    '\u{0641}',
-    '\u{062D}',
-    '\u{0641}',
-    '\u{062E}',
-    '\u{0641}',
-    '\u{0645}',
-    '\u{0642}',
-    '\u{062D}',
-    '\u{0642}',
-    '\u{0645}',
-    '\u{0643}',
-    '\u{062C}',
-    '\u{0643}',
-    '\u{062D}',
-    '\u{0643}',
-    '\u{062E}',
-    '\u{0643}',
-    '\u{0644}',
-    '\u{0643}',
-    '\u{0645}',
-    '\u{0644}',
-    '\u{062C}',
-    '\u{0644}',
-    '\u{062D}',
-    '\u{0644}',
-    '\u{062E}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{0644}',
-    '\u{0647}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{062C}',
-    '\u{0646}',
-    '\u{062D}',
-    '\u{0646}',
-    '\u{062E}',
-    '\u{0646}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0647}',
-    '\u{0647}',
-    '\u{062C}',
-    '\u{0647}',
-    '\u{0645}',
-    '\u{0647}',
-    '\u{0670}',
-    '\u{064A}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{062E}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0647}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0647}',
-    '\u{0628}',
-    '\u{0645}',
-    '\u{0628}',
-    '\u{0647}',
-    '\u{062A}',
-    '\u{0645}',
-    '\u{062A}',
-    '\u{0647}',
-    '\u{062B}',
-    '\u{0645}',
-    '\u{062B}',
-    '\u{0647}',
-    '\u{0633}',
-    '\u{0645}',
-    '\u{0633}',
-    '\u{0647}',
-    '\u{0634}',
-    '\u{0645}',
-    '\u{0634}',
-    '\u{0647}',
-    '\u{0643}',
-    '\u{0644}',
-    '\u{0643}',
-    '\u{0645}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0647}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0647}',
-    '\u{0640}',
-    '\u{064E}',
-    '\u{0651}',
-    '\u{0640}',
-    '\u{064F}',
-    '\u{0651}',
-    '\u{0640}',
-    '\u{0650}',
-    '\u{0651}',
-    '\u{0637}',
-    '\u{0649}',
-    '\u{0637}',
-    '\u{064A}',
-    '\u{0639}',
-    '\u{0649}',
-    '\u{0639}',
-    '\u{064A}',
-    '\u{063A}',
-    '\u{0649}',
-    '\u{063A}',
-    '\u{064A}',
-    '\u{0633}',
-    '\u{0649}',
-    '\u{0633}',
-    '\u{064A}',
-    '\u{0634}',
-    '\u{0649}',
-    '\u{0634}',
-    '\u{064A}',
-    '\u{062D}',
-    '\u{0649}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{062C}',
-    '\u{0649}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{062E}',
-    '\u{0649}',
-    '\u{062E}',
-    '\u{064A}',
-    '\u{0635}',
-    '\u{0649}',
-    '\u{0635}',
-    '\u{064A}',
-    '\u{0636}',
-    '\u{0649}',
-    '\u{0636}',
-    '\u{064A}',
-    '\u{0634}',
-    '\u{062C}',
-    '\u{0634}',
-    '\u{062D}',
-    '\u{0634}',
-    '\u{062E}',
-    '\u{0634}',
-    '\u{0645}',
-    '\u{0634}',
-    '\u{0631}',
-    '\u{0633}',
-    '\u{0631}',
-    '\u{0635}',
-    '\u{0631}',
-    '\u{0636}',
-    '\u{0631}',
-    '\u{0637}',
-    '\u{0649}',
-    '\u{0637}',
-    '\u{064A}',
-    '\u{0639}',
-    '\u{0649}',
-    '\u{0639}',
-    '\u{064A}',
-    '\u{063A}',
-    '\u{0649}',
-    '\u{063A}',
-    '\u{064A}',
-    '\u{0633}',
-    '\u{0649}',
-    '\u{0633}',
-    '\u{064A}',
-    '\u{0634}',
-    '\u{0649}',
-    '\u{0634}',
-    '\u{064A}',
-    '\u{062D}',
-    '\u{0649}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{062C}',
-    '\u{0649}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{062E}',
-    '\u{0649}',
-    '\u{062E}',
-    '\u{064A}',
-    '\u{0635}',
-    '\u{0649}',
-    '\u{0635}',
-    '\u{064A}',
-    '\u{0636}',
-    '\u{0649}',
-    '\u{0636}',
-    '\u{064A}',
-    '\u{0634}',
-    '\u{062C}',
-    '\u{0634}',
-    '\u{062D}',
-    '\u{0634}',
-    '\u{062E}',
-    '\u{0634}',
-    '\u{0645}',
-    '\u{0634}',
-    '\u{0631}',
-    '\u{0633}',
-    '\u{0631}',
-    '\u{0635}',
-    '\u{0631}',
-    '\u{0636}',
-    '\u{0631}',
-    '\u{0634}',
-    '\u{062C}',
-    '\u{0634}',
-    '\u{062D}',
-    '\u{0634}',
-    '\u{062E}',
-    '\u{0634}',
-    '\u{0645}',
-    '\u{0633}',
-    '\u{0647}',
-    '\u{0634}',
-    '\u{0647}',
-    '\u{0637}',
-    '\u{0645}',
-    '\u{0633}',
-    '\u{062C}',
-    '\u{0633}',
-    '\u{062D}',
-    '\u{0633}',
-    '\u{062E}',
-    '\u{0634}',
-    '\u{062C}',
-    '\u{0634}',
-    '\u{062D}',
-    '\u{0634}',
-    '\u{062E}',
-    '\u{0637}',
-    '\u{0645}',
-    '\u{0638}',
-    '\u{0645}',
-    '\u{0627}',
-    '\u{064B}',
-    '\u{0627}',
-    '\u{064B}',
-    '\u{062A}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{062A}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{062A}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{062A}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{062A}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{062A}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{062A}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{062A}',
-    '\u{0645}',
-    '\u{062E}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{0649}',
-    '\u{0633}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{0633}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{0633}',
-    '\u{062C}',
-    '\u{0649}',
-    '\u{0633}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0633}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0633}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{0633}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0633}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0635}',
-    '\u{062D}',
-    '\u{062D}',
-    '\u{0635}',
-    '\u{062D}',
-    '\u{062D}',
-    '\u{0635}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0634}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{0634}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{0634}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{0634}',
-    '\u{0645}',
-    '\u{062E}',
-    '\u{0634}',
-    '\u{0645}',
-    '\u{062E}',
-    '\u{0634}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0634}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0636}',
-    '\u{062D}',
-    '\u{0649}',
-    '\u{0636}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0636}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0637}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0637}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0637}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0637}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0639}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{0639}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0639}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0639}',
-    '\u{0645}',
-    '\u{0649}',
-    '\u{063A}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{063A}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{063A}',
-    '\u{0645}',
-    '\u{0649}',
-    '\u{0641}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0641}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0642}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0642}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0644}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{0644}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0644}',
-    '\u{062D}',
-    '\u{0649}',
-    '\u{0644}',
-    '\u{062C}',
-    '\u{062C}',
-    '\u{0644}',
-    '\u{062C}',
-    '\u{062C}',
-    '\u{0644}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0644}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{062E}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{062E}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{062E}',
-    '\u{0647}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{0647}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{062D}',
-    '\u{0649}',
-    '\u{0646}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{062C}',
-    '\u{0649}',
-    '\u{0646}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0646}',
-    '\u{0645}',
-    '\u{0649}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0628}',
-    '\u{062E}',
-    '\u{064A}',
-    '\u{062A}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{062A}',
-    '\u{062C}',
-    '\u{0649}',
-    '\u{062A}',
-    '\u{062E}',
-    '\u{064A}',
-    '\u{062A}',
-    '\u{062E}',
-    '\u{0649}',
-    '\u{062A}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{062A}',
-    '\u{0645}',
-    '\u{0649}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{0649}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{0649}',
-    '\u{0633}',
-    '\u{062E}',
-    '\u{0649}',
-    '\u{0635}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0634}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0636}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0644}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{064A}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{064A}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0642}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0646}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0642}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0644}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{0639}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0643}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0646}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{062E}',
-    '\u{064A}',
-    '\u{0644}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{0643}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0644}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{062D}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{0641}',
-    '\u{0645}',
-    '\u{064A}',
-    '\u{0628}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0643}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0639}',
-    '\u{062C}',
-    '\u{0645}',
-    '\u{0635}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0633}',
-    '\u{062E}',
-    '\u{064A}',
-    '\u{0646}',
-    '\u{062C}',
-    '\u{064A}',
-    '\u{0635}',
-    '\u{0644}',
-    '\u{06D2}',
-    '\u{0642}',
-    '\u{0644}',
-    '\u{06D2}',
-    '\u{0627}',
-    '\u{0644}',
-    '\u{0644}',
-    '\u{0647}',
-    '\u{0627}',
-    '\u{0643}',
-    '\u{0628}',
-    '\u{0631}',
-    '\u{0645}',
-    '\u{062D}',
-    '\u{0645}',
-    '\u{062F}',
-    '\u{0635}',
-    '\u{0644}',
-    '\u{0639}',
-    '\u{0645}',
-    '\u{0631}',
-    '\u{0633}',
-    '\u{0648}',
-    '\u{0644}',
-    '\u{0639}',
-    '\u{0644}',
-    '\u{064A}',
-    '\u{0647}',
-    '\u{0648}',
-    '\u{0633}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{0635}',
-    '\u{0644}',
-    '\u{0649}',
-    '\u{0635}',
-    '\u{0644}',
-    '\u{0649}',
-    '\u{0020}',
-    '\u{0627}',
-    '\u{0644}',
-    '\u{0644}',
-    '\u{0647}',
-    '\u{0020}',
-    '\u{0639}',
-    '\u{0644}',
-    '\u{064A}',
-    '\u{0647}',
-    '\u{0020}',
-    '\u{0648}',
-    '\u{0633}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{062C}',
-    '\u{0644}',
-    '\u{0020}',
-    '\u{062C}',
-    '\u{0644}',
-    '\u{0627}',
-    '\u{0644}',
-    '\u{0647}',
-    '\u{0631}',
-    '\u{06CC}',
-    '\u{0627}',
-    '\u{0644}',
-    '\u{002C}',
-    '\u{3001}',
-    '\u{3002}',
-    '\u{003A}',
-    '\u{003B}',
-    '\u{0021}',
-    '\u{003F}',
-    '\u{3016}',
-    '\u{3017}',
-    '\u{002E}',
-    '\u{002E}',
-    '\u{002E}',
-    '\u{002E}',
-    '\u{002E}',
-    '\u{2014}',
-    '\u{2013}',
-    '\u{005F}',
-    '\u{005F}',
-    '\u{0028}',
-    '\u{0029}',
-    '\u{007B}',
-    '\u{007D}',
-    '\u{3014}',
-    '\u{3015}',
-    '\u{3010}',
-    '\u{3011}',
-    '\u{300A}',
-    '\u{300B}',
-    '\u{3008}',
-    '\u{3009}',
-    '\u{300C}',
-    '\u{300D}',
-    '\u{300E}',
-    '\u{300F}',
-    '\u{005B}',
-    '\u{005D}',
-    '\u{0020}',
-    '\u{0305}',
-    '\u{0020}',
-    '\u{0305}',
-    '\u{0020}',
-    '\u{0305}',
-    '\u{0020}',
-    '\u{0305}',
-    '\u{005F}',
-    '\u{005F}',
-    '\u{005F}',
-    '\u{002C}',
-    '\u{3001}',
-    '\u{002E}',
-    '\u{003B}',
-    '\u{003A}',
-    '\u{003F}',
-    '\u{0021}',
-    '\u{2014}',
-    '\u{0028}',
-    '\u{0029}',
-    '\u{007B}',
-    '\u{007D}',
-    '\u{3014}',
-    '\u{3015}',
-    '\u{0023}',
-    '\u{0026}',
-    '\u{002A}',
-    '\u{002B}',
-    '\u{002D}',
-    '\u{003C}',
-    '\u{003E}',
-    '\u{003D}',
-    '\u{005C}',
-    '\u{0024}',
-    '\u{0025}',
-    '\u{0040}',
-    '\u{0020}',
-    '\u{064B}',
-    '\u{0640}',
-    '\u{064B}',
-    '\u{0020}',
-    '\u{064C}',
-    '\u{0020}',
-    '\u{064D}',
-    '\u{0020}',
-    '\u{064E}',
-    '\u{0640}',
-    '\u{064E}',
-    '\u{0020}',
-    '\u{064F}',
-    '\u{0640}',
-    '\u{064F}',
-    '\u{0020}',
-    '\u{0650}',
-    '\u{0640}',
-    '\u{0650}',
-    '\u{0020}',
-    '\u{0651}',
-    '\u{0640}',
-    '\u{0651}',
-    '\u{0020}',
-    '\u{0652}',
-    '\u{0640}',
-    '\u{0652}',
-    '\u{0621}',
-    '\u{0627}',
-    '\u{0653}',
-    '\u{0627}',
-    '\u{0653}',
-    '\u{0627}',
-    '\u{0654}',
-    '\u{0627}',
-    '\u{0654}',
-    '\u{0648}',
-    '\u{0654}',
-    '\u{0648}',
-    '\u{0654}',
-    '\u{0627}',
-    '\u{0655}',
-    '\u{0627}',
-    '\u{0655}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{064A}',
-    '\u{0654}',
-    '\u{0627}',
-    '\u{0627}',
-    '\u{0628}',
-    '\u{0628}',
-    '\u{0628}',
-    '\u{0628}',
-    '\u{0629}',
-    '\u{0629}',
-    '\u{062A}',
-    '\u{062A}',
-    '\u{062A}',
-    '\u{062A}',
-    '\u{062B}',
-    '\u{062B}',
-    '\u{062B}',
-    '\u{062B}',
-    '\u{062C}',
-    '\u{062C}',
-    '\u{062C}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{062D}',
-    '\u{062D}',
-    '\u{062D}',
-    '\u{062E}',
-    '\u{062E}',
-    '\u{062E}',
-    '\u{062E}',
-    '\u{062F}',
-    '\u{062F}',
-    '\u{0630}',
-    '\u{0630}',
-    '\u{0631}',
-    '\u{0631}',
-    '\u{0632}',
-    '\u{0632}',
-    '\u{0633}',
-    '\u{0633}',
-    '\u{0633}',
-    '\u{0633}',
-    '\u{0634}',
-    '\u{0634}',
-    '\u{0634}',
-    '\u{0634}',
-    '\u{0635}',
-    '\u{0635}',
-    '\u{0635}',
-    '\u{0635}',
-    '\u{0636}',
-    '\u{0636}',
-    '\u{0636}',
-    '\u{0636}',
-    '\u{0637}',
-    '\u{0637}',
-    '\u{0637}',
-    '\u{0637}',
-    '\u{0638}',
-    '\u{0638}',
-    '\u{0638}',
-    '\u{0638}',
-    '\u{0639}',
-    '\u{0639}',
-    '\u{0639}',
-    '\u{0639}',
-    '\u{063A}',
-    '\u{063A}',
-    '\u{063A}',
-    '\u{063A}',
-    '\u{0641}',
-    '\u{0641}',
-    '\u{0641}',
-    '\u{0641}',
-    '\u{0642}',
-    '\u{0642}',
-    '\u{0642}',
-    '\u{0642}',
-    '\u{0643}',
-    '\u{0643}',
-    '\u{0643}',
-    '\u{0643}',
-    '\u{0644}',
-    '\u{0644}',
-    '\u{0644}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0646}',
-    '\u{0646}',
-    '\u{0646}',
-    '\u{0647}',
-    '\u{0647}',
-    '\u{0647}',
-    '\u{0647}',
-    '\u{0648}',
-    '\u{0648}',
-    '\u{0649}',
-    '\u{0649}',
-    '\u{064A}',
-    '\u{064A}',
-    '\u{064A}',
-    '\u{064A}',
-    '\u{0644}',
-    '\u{0627}',
-    '\u{0653}',
-    '\u{0644}',
-    '\u{0627}',
-    '\u{0653}',
-    '\u{0644}',
-    '\u{0627}',
-    '\u{0654}',
-    '\u{0644}',
-    '\u{0627}',
-    '\u{0654}',
-    '\u{0644}',
-    '\u{0627}',
-    '\u{0655}',
-    '\u{0644}',
-    '\u{0627}',
-    '\u{0655}',
-    '\u{0644}',
-    '\u{0627}',
-    '\u{0644}',
-    '\u{0627}',
-    '\u{0021}',
-    '\u{0022}',
-    '\u{0023}',
-    '\u{0024}',
-    '\u{0025}',
-    '\u{0026}',
-    '\u{0027}',
-    '\u{0028}',
-    '\u{0029}',
-    '\u{002A}',
-    '\u{002B}',
-    '\u{002C}',
-    '\u{002D}',
-    '\u{002E}',
-    '\u{002F}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0036}',
-    '\u{0037}',
-    '\u{0038}',
-    '\u{0039}',
-    '\u{003A}',
-    '\u{003B}',
-    '\u{003C}',
-    '\u{003D}',
-    '\u{003E}',
-    '\u{003F}',
-    '\u{0040}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{005B}',
-    '\u{005C}',
-    '\u{005D}',
-    '\u{005E}',
-    '\u{005F}',
-    '\u{0060}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{007B}',
-    '\u{007C}',
-    '\u{007D}',
-    '\u{007E}',
-    '\u{2985}',
-    '\u{2986}',
-    '\u{3002}',
-    '\u{300C}',
-    '\u{300D}',
-    '\u{3001}',
-    '\u{30FB}',
-    '\u{30F2}',
-    '\u{30A1}',
-    '\u{30A3}',
-    '\u{30A5}',
-    '\u{30A7}',
-    '\u{30A9}',
-    '\u{30E3}',
-    '\u{30E5}',
-    '\u{30E7}',
-    '\u{30C3}',
-    '\u{30FC}',
-    '\u{30A2}',
-    '\u{30A4}',
-    '\u{30A6}',
-    '\u{30A8}',
-    '\u{30AA}',
-    '\u{30AB}',
-    '\u{30AD}',
-    '\u{30AF}',
-    '\u{30B1}',
-    '\u{30B3}',
-    '\u{30B5}',
-    '\u{30B7}',
-    '\u{30B9}',
-    '\u{30BB}',
-    '\u{30BD}',
-    '\u{30BF}',
-    '\u{30C1}',
-    '\u{30C4}',
-    '\u{30C6}',
-    '\u{30C8}',
-    '\u{30CA}',
-    '\u{30CB}',
-    '\u{30CC}',
-    '\u{30CD}',
-    '\u{30CE}',
-    '\u{30CF}',
-    '\u{30D2}',
-    '\u{30D5}',
-    '\u{30D8}',
-    '\u{30DB}',
-    '\u{30DE}',
-    '\u{30DF}',
-    '\u{30E0}',
-    '\u{30E1}',
-    '\u{30E2}',
-    '\u{30E4}',
-    '\u{30E6}',
-    '\u{30E8}',
-    '\u{30E9}',
-    '\u{30EA}',
-    '\u{30EB}',
-    '\u{30EC}',
-    '\u{30ED}',
-    '\u{30EF}',
-    '\u{30F3}',
-    '\u{3099}',
-    '\u{309A}',
-    '\u{1160}',
-    '\u{1100}',
-    '\u{1101}',
-    '\u{11AA}',
-    '\u{1102}',
-    '\u{11AC}',
-    '\u{11AD}',
-    '\u{1103}',
-    '\u{1104}',
-    '\u{1105}',
-    '\u{11B0}',
-    '\u{11B1}',
-    '\u{11B2}',
-    '\u{11B3}',
-    '\u{11B4}',
-    '\u{11B5}',
-    '\u{111A}',
-    '\u{1106}',
-    '\u{1107}',
-    '\u{1108}',
-    '\u{1121}',
-    '\u{1109}',
-    '\u{110A}',
-    '\u{110B}',
-    '\u{110C}',
-    '\u{110D}',
-    '\u{110E}',
-    '\u{110F}',
-    '\u{1110}',
-    '\u{1111}',
-    '\u{1112}',
-    '\u{1161}',
-    '\u{1162}',
-    '\u{1163}',
-    '\u{1164}',
-    '\u{1165}',
-    '\u{1166}',
-    '\u{1167}',
-    '\u{1168}',
-    '\u{1169}',
-    '\u{116A}',
-    '\u{116B}',
-    '\u{116C}',
-    '\u{116D}',
-    '\u{116E}',
-    '\u{116F}',
-    '\u{1170}',
-    '\u{1171}',
-    '\u{1172}',
-    '\u{1173}',
-    '\u{1174}',
-    '\u{1175}',
-    '\u{00A2}',
-    '\u{00A3}',
-    '\u{00AC}',
-    '\u{0020}',
-    '\u{0304}',
-    '\u{00A6}',
-    '\u{00A5}',
-    '\u{20A9}',
-    '\u{2502}',
-    '\u{2190}',
-    '\u{2191}',
-    '\u{2192}',
-    '\u{2193}',
-    '\u{25A0}',
-    '\u{25CB}',
-    '\u{02D0}',
-    '\u{02D1}',
-    '\u{00E6}',
-    '\u{0299}',
-    '\u{0253}',
-    '\u{02A3}',
-    '\u{AB66}',
-    '\u{02A5}',
-    '\u{02A4}',
-    '\u{0256}',
-    '\u{0257}',
-    '\u{1D91}',
-    '\u{0258}',
-    '\u{025E}',
-    '\u{02A9}',
-    '\u{0264}',
-    '\u{0262}',
-    '\u{0260}',
-    '\u{029B}',
-    '\u{0127}',
-    '\u{029C}',
-    '\u{0267}',
-    '\u{0284}',
-    '\u{02AA}',
-    '\u{02AB}',
-    '\u{026C}',
-    '\u{1DF04}',
-    '\u{A78E}',
-    '\u{026E}',
-    '\u{1DF05}',
-    '\u{028E}',
-    '\u{1DF06}',
-    '\u{00F8}',
-    '\u{0276}',
-    '\u{0277}',
-    '\u{0071}',
-    '\u{027A}',
-    '\u{1DF08}',
-    '\u{027D}',
-    '\u{027E}',
-    '\u{0280}',
-    '\u{02A8}',
-    '\u{02A6}',
-    '\u{AB67}',
-    '\u{02A7}',
-    '\u{0288}',
-    '\u{2C71}',
-    '\u{028F}',
-    '\u{02A1}',
-    '\u{02A2}',
-    '\u{0298}',
-    '\u{01C0}',
-    '\u{01C1}',
-    '\u{01C2}',
-    '\u{1DF0A}',
-    '\u{1DF1E}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0047}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0066}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004F}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0061}',
-    '\u{0062}',
-    '\u{0063}',
-    '\u{0064}',
-    '\u{0065}',
-    '\u{0066}',
-    '\u{0067}',
-    '\u{0068}',
-    '\u{0069}',
-    '\u{006A}',
-    '\u{006B}',
-    '\u{006C}',
-    '\u{006D}',
-    '\u{006E}',
-    '\u{006F}',
-    '\u{0070}',
-    '\u{0071}',
-    '\u{0072}',
-    '\u{0073}',
-    '\u{0074}',
-    '\u{0075}',
-    '\u{0076}',
-    '\u{0077}',
-    '\u{0078}',
-    '\u{0079}',
-    '\u{007A}',
-    '\u{0131}',
-    '\u{0237}',
-    '\u{0391}',
-    '\u{0392}',
-    '\u{0393}',
-    '\u{0394}',
-    '\u{0395}',
-    '\u{0396}',
-    '\u{0397}',
-    '\u{0398}',
-    '\u{0399}',
-    '\u{039A}',
-    '\u{039B}',
-    '\u{039C}',
-    '\u{039D}',
-    '\u{039E}',
-    '\u{039F}',
-    '\u{03A0}',
-    '\u{03A1}',
-    '\u{0398}',
-    '\u{03A3}',
-    '\u{03A4}',
-    '\u{03A5}',
-    '\u{03A6}',
-    '\u{03A7}',
-    '\u{03A8}',
-    '\u{03A9}',
-    '\u{2207}',
-    '\u{03B1}',
-    '\u{03B2}',
-    '\u{03B3}',
-    '\u{03B4}',
-    '\u{03B5}',
-    '\u{03B6}',
-    '\u{03B7}',
-    '\u{03B8}',
-    '\u{03B9}',
-    '\u{03BA}',
-    '\u{03BB}',
-    '\u{03BC}',
-    '\u{03BD}',
-    '\u{03BE}',
-    '\u{03BF}',
-    '\u{03C0}',
-    '\u{03C1}',
-    '\u{03C2}',
-    '\u{03C3}',
-    '\u{03C4}',
-    '\u{03C5}',
-    '\u{03C6}',
-    '\u{03C7}',
-    '\u{03C8}',
-    '\u{03C9}',
-    '\u{2202}',
-    '\u{03B5}',
-    '\u{03B8}',
-    '\u{03BA}',
-    '\u{03C6}',
-    '\u{03C1}',
-    '\u{03C0}',
-    '\u{0391}',
-    '\u{0392}',
-    '\u{0393}',
-    '\u{0394}',
-    '\u{0395}',
-    '\u{0396}',
-    '\u{0397}',
-    '\u{0398}',
-    '\u{0399}',
-    '\u{039A}',
-    '\u{039B}',
-    '\u{039C}',
-    '\u{039D}',
-    '\u{039E}',
-    '\u{039F}',
-    '\u{03A0}',
-    '\u{03A1}',
-    '\u{0398}',
-    '\u{03A3}',
-    '\u{03A4}',
-    '\u{03A5}',
-    '\u{03A6}',
-    '\u{03A7}',
-    '\u{03A8}',
-    '\u{03A9}',
-    '\u{2207}',
-    '\u{03B1}',
-    '\u{03B2}',
-    '\u{03B3}',
-    '\u{03B4}',
-    '\u{03B5}',
-    '\u{03B6}',
-    '\u{03B7}',
-    '\u{03B8}',
-    '\u{03B9}',
-    '\u{03BA}',
-    '\u{03BB}',
-    '\u{03BC}',
-    '\u{03BD}',
-    '\u{03BE}',
-    '\u{03BF}',
-    '\u{03C0}',
-    '\u{03C1}',
-    '\u{03C2}',
-    '\u{03C3}',
-    '\u{03C4}',
-    '\u{03C5}',
-    '\u{03C6}',
-    '\u{03C7}',
-    '\u{03C8}',
-    '\u{03C9}',
-    '\u{2202}',
-    '\u{03B5}',
-    '\u{03B8}',
-    '\u{03BA}',
-    '\u{03C6}',
-    '\u{03C1}',
-    '\u{03C0}',
-    '\u{0391}',
-    '\u{0392}',
-    '\u{0393}',
-    '\u{0394}',
-    '\u{0395}',
-    '\u{0396}',
-    '\u{0397}',
-    '\u{0398}',
-    '\u{0399}',
-    '\u{039A}',
-    '\u{039B}',
-    '\u{039C}',
-    '\u{039D}',
-    '\u{039E}',
-    '\u{039F}',
-    '\u{03A0}',
-    '\u{03A1}',
-    '\u{0398}',
-    '\u{03A3}',
-    '\u{03A4}',
-    '\u{03A5}',
-    '\u{03A6}',
-    '\u{03A7}',
-    '\u{03A8}',
-    '\u{03A9}',
-    '\u{2207}',
-    '\u{03B1}',
-    '\u{03B2}',
-    '\u{03B3}',
-    '\u{03B4}',
-    '\u{03B5}',
-    '\u{03B6}',
-    '\u{03B7}',
-    '\u{03B8}',
-    '\u{03B9}',
-    '\u{03BA}',
-    '\u{03BB}',
-    '\u{03BC}',
-    '\u{03BD}',
-    '\u{03BE}',
-    '\u{03BF}',
-    '\u{03C0}',
-    '\u{03C1}',
-    '\u{03C2}',
-    '\u{03C3}',
-    '\u{03C4}',
-    '\u{03C5}',
-    '\u{03C6}',
-    '\u{03C7}',
-    '\u{03C8}',
-    '\u{03C9}',
-    '\u{2202}',
-    '\u{03B5}',
-    '\u{03B8}',
-    '\u{03BA}',
-    '\u{03C6}',
-    '\u{03C1}',
-    '\u{03C0}',
-    '\u{0391}',
-    '\u{0392}',
-    '\u{0393}',
-    '\u{0394}',
-    '\u{0395}',
-    '\u{0396}',
-    '\u{0397}',
-    '\u{0398}',
-    '\u{0399}',
-    '\u{039A}',
-    '\u{039B}',
-    '\u{039C}',
-    '\u{039D}',
-    '\u{039E}',
-    '\u{039F}',
-    '\u{03A0}',
-    '\u{03A1}',
-    '\u{0398}',
-    '\u{03A3}',
-    '\u{03A4}',
-    '\u{03A5}',
-    '\u{03A6}',
-    '\u{03A7}',
-    '\u{03A8}',
-    '\u{03A9}',
-    '\u{2207}',
-    '\u{03B1}',
-    '\u{03B2}',
-    '\u{03B3}',
-    '\u{03B4}',
-    '\u{03B5}',
-    '\u{03B6}',
-    '\u{03B7}',
-    '\u{03B8}',
-    '\u{03B9}',
-    '\u{03BA}',
-    '\u{03BB}',
-    '\u{03BC}',
-    '\u{03BD}',
-    '\u{03BE}',
-    '\u{03BF}',
-    '\u{03C0}',
-    '\u{03C1}',
-    '\u{03C2}',
-    '\u{03C3}',
-    '\u{03C4}',
-    '\u{03C5}',
-    '\u{03C6}',
-    '\u{03C7}',
-    '\u{03C8}',
-    '\u{03C9}',
-    '\u{2202}',
-    '\u{03B5}',
-    '\u{03B8}',
-    '\u{03BA}',
-    '\u{03C6}',
-    '\u{03C1}',
-    '\u{03C0}',
-    '\u{0391}',
-    '\u{0392}',
-    '\u{0393}',
-    '\u{0394}',
-    '\u{0395}',
-    '\u{0396}',
-    '\u{0397}',
-    '\u{0398}',
-    '\u{0399}',
-    '\u{039A}',
-    '\u{039B}',
-    '\u{039C}',
-    '\u{039D}',
-    '\u{039E}',
-    '\u{039F}',
-    '\u{03A0}',
-    '\u{03A1}',
-    '\u{0398}',
-    '\u{03A3}',
-    '\u{03A4}',
-    '\u{03A5}',
-    '\u{03A6}',
-    '\u{03A7}',
-    '\u{03A8}',
-    '\u{03A9}',
-    '\u{2207}',
-    '\u{03B1}',
-    '\u{03B2}',
-    '\u{03B3}',
-    '\u{03B4}',
-    '\u{03B5}',
-    '\u{03B6}',
-    '\u{03B7}',
-    '\u{03B8}',
-    '\u{03B9}',
-    '\u{03BA}',
-    '\u{03BB}',
-    '\u{03BC}',
-    '\u{03BD}',
-    '\u{03BE}',
-    '\u{03BF}',
-    '\u{03C0}',
-    '\u{03C1}',
-    '\u{03C2}',
-    '\u{03C3}',
-    '\u{03C4}',
-    '\u{03C5}',
-    '\u{03C6}',
-    '\u{03C7}',
-    '\u{03C8}',
-    '\u{03C9}',
-    '\u{2202}',
-    '\u{03B5}',
-    '\u{03B8}',
-    '\u{03BA}',
-    '\u{03C6}',
-    '\u{03C1}',
-    '\u{03C0}',
-    '\u{03DC}',
-    '\u{03DD}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0036}',
-    '\u{0037}',
-    '\u{0038}',
-    '\u{0039}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0036}',
-    '\u{0037}',
-    '\u{0038}',
-    '\u{0039}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0036}',
-    '\u{0037}',
-    '\u{0038}',
-    '\u{0039}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0036}',
-    '\u{0037}',
-    '\u{0038}',
-    '\u{0039}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0036}',
-    '\u{0037}',
-    '\u{0038}',
-    '\u{0039}',
-    '\u{0430}',
-    '\u{0431}',
-    '\u{0432}',
-    '\u{0433}',
-    '\u{0434}',
-    '\u{0435}',
-    '\u{0436}',
-    '\u{0437}',
-    '\u{0438}',
-    '\u{043A}',
-    '\u{043B}',
-    '\u{043C}',
-    '\u{043E}',
-    '\u{043F}',
-    '\u{0440}',
-    '\u{0441}',
-    '\u{0442}',
-    '\u{0443}',
-    '\u{0444}',
-    '\u{0445}',
-    '\u{0446}',
-    '\u{0447}',
-    '\u{0448}',
-    '\u{044B}',
-    '\u{044D}',
-    '\u{044E}',
-    '\u{A689}',
-    '\u{04D9}',
-    '\u{0456}',
-    '\u{0458}',
-    '\u{04E9}',
-    '\u{04AF}',
-    '\u{04CF}',
-    '\u{0430}',
-    '\u{0431}',
-    '\u{0432}',
-    '\u{0433}',
-    '\u{0434}',
-    '\u{0435}',
-    '\u{0436}',
-    '\u{0437}',
-    '\u{0438}',
-    '\u{043A}',
-    '\u{043B}',
-    '\u{043E}',
-    '\u{043F}',
-    '\u{0441}',
-    '\u{0443}',
-    '\u{0444}',
-    '\u{0445}',
-    '\u{0446}',
-    '\u{0447}',
-    '\u{0448}',
-    '\u{044A}',
-    '\u{044B}',
-    '\u{0491}',
-    '\u{0456}',
-    '\u{0455}',
-    '\u{045F}',
-    '\u{04AB}',
-    '\u{A651}',
-    '\u{04B1}',
-    '\u{0627}',
-    '\u{0628}',
-    '\u{062C}',
-    '\u{062F}',
-    '\u{0648}',
-    '\u{0632}',
-    '\u{062D}',
-    '\u{0637}',
-    '\u{064A}',
-    '\u{0643}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0633}',
-    '\u{0639}',
-    '\u{0641}',
-    '\u{0635}',
-    '\u{0642}',
-    '\u{0631}',
-    '\u{0634}',
-    '\u{062A}',
-    '\u{062B}',
-    '\u{062E}',
-    '\u{0630}',
-    '\u{0636}',
-    '\u{0638}',
-    '\u{063A}',
-    '\u{066E}',
-    '\u{06BA}',
-    '\u{06A1}',
-    '\u{066F}',
-    '\u{0628}',
-    '\u{062C}',
-    '\u{0647}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0643}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0633}',
-    '\u{0639}',
-    '\u{0641}',
-    '\u{0635}',
-    '\u{0642}',
-    '\u{0634}',
-    '\u{062A}',
-    '\u{062B}',
-    '\u{062E}',
-    '\u{0636}',
-    '\u{063A}',
-    '\u{062C}',
-    '\u{062D}',
-    '\u{064A}',
-    '\u{0644}',
-    '\u{0646}',
-    '\u{0633}',
-    '\u{0639}',
-    '\u{0635}',
-    '\u{0642}',
-    '\u{0634}',
-    '\u{062E}',
-    '\u{0636}',
-    '\u{063A}',
-    '\u{06BA}',
-    '\u{066F}',
-    '\u{0628}',
-    '\u{062C}',
-    '\u{0647}',
-    '\u{062D}',
-    '\u{0637}',
-    '\u{064A}',
-    '\u{0643}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0633}',
-    '\u{0639}',
-    '\u{0641}',
-    '\u{0635}',
-    '\u{0642}',
-    '\u{0634}',
-    '\u{062A}',
-    '\u{062B}',
-    '\u{062E}',
-    '\u{0636}',
-    '\u{0638}',
-    '\u{063A}',
-    '\u{066E}',
-    '\u{06A1}',
-    '\u{0627}',
-    '\u{0628}',
-    '\u{062C}',
-    '\u{062F}',
-    '\u{0647}',
-    '\u{0648}',
-    '\u{0632}',
-    '\u{062D}',
-    '\u{0637}',
-    '\u{064A}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0633}',
-    '\u{0639}',
-    '\u{0641}',
-    '\u{0635}',
-    '\u{0642}',
-    '\u{0631}',
-    '\u{0634}',
-    '\u{062A}',
-    '\u{062B}',
-    '\u{062E}',
-    '\u{0630}',
-    '\u{0636}',
-    '\u{0638}',
-    '\u{063A}',
-    '\u{0628}',
-    '\u{062C}',
-    '\u{062F}',
-    '\u{0648}',
-    '\u{0632}',
-    '\u{062D}',
-    '\u{0637}',
-    '\u{064A}',
-    '\u{0644}',
-    '\u{0645}',
-    '\u{0646}',
-    '\u{0633}',
-    '\u{0639}',
-    '\u{0641}',
-    '\u{0635}',
-    '\u{0642}',
-    '\u{0631}',
-    '\u{0634}',
-    '\u{062A}',
-    '\u{062B}',
-    '\u{062E}',
-    '\u{0630}',
-    '\u{0636}',
-    '\u{0638}',
-    '\u{063A}',
-    '\u{0030}',
-    '\u{002E}',
-    '\u{0030}',
-    '\u{002C}',
-    '\u{0031}',
-    '\u{002C}',
-    '\u{0032}',
-    '\u{002C}',
-    '\u{0033}',
-    '\u{002C}',
-    '\u{0034}',
-    '\u{002C}',
-    '\u{0035}',
-    '\u{002C}',
-    '\u{0036}',
-    '\u{002C}',
-    '\u{0037}',
-    '\u{002C}',
-    '\u{0038}',
-    '\u{002C}',
-    '\u{0039}',
-    '\u{002C}',
-    '\u{0028}',
-    '\u{0041}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0042}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0043}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0044}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0045}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0046}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0047}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0048}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0049}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{004A}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{004B}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{004C}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{004D}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{004E}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{004F}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0050}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0051}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0052}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0053}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0054}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0055}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0056}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0057}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0058}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{0059}',
-    '\u{0029}',
-    '\u{0028}',
-    '\u{005A}',
-    '\u{0029}',
-    '\u{3014}',
-    '\u{0053}',
-    '\u{3015}',
-    '\u{0043}',
-    '\u{0052}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0057}',
-    '\u{005A}',
-    '\u{0041}',
-    '\u{0042}',
-    '\u{0043}',
-    '\u{0044}',
-    '\u{0045}',
-    '\u{0046}',
-    '\u{0047}',
-    '\u{0048}',
-    '\u{0049}',
-    '\u{004A}',
-    '\u{004B}',
-    '\u{004C}',
-    '\u{004D}',
-    '\u{004E}',
-    '\u{004F}',
-    '\u{0050}',
-    '\u{0051}',
-    '\u{0052}',
-    '\u{0053}',
-    '\u{0054}',
-    '\u{0055}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0058}',
-    '\u{0059}',
-    '\u{005A}',
-    '\u{0048}',
-    '\u{0056}',
-    '\u{004D}',
-    '\u{0056}',
-    '\u{0053}',
-    '\u{0044}',
-    '\u{0053}',
-    '\u{0053}',
-    '\u{0050}',
-    '\u{0050}',
-    '\u{0056}',
-    '\u{0057}',
-    '\u{0043}',
-    '\u{004D}',
-    '\u{0043}',
-    '\u{004D}',
-    '\u{0044}',
-    '\u{004D}',
-    '\u{0052}',
-    '\u{0044}',
-    '\u{004A}',
-    '\u{307B}',
-    '\u{304B}',
-    '\u{30B3}',
-    '\u{30B3}',
-    '\u{30B5}',
-    '\u{624B}',
-    '\u{5B57}',
-    '\u{53CC}',
-    '\u{30C6}',
-    '\u{3099}',
-    '\u{4E8C}',
-    '\u{591A}',
-    '\u{89E3}',
-    '\u{5929}',
-    '\u{4EA4}',
-    '\u{6620}',
-    '\u{7121}',
-    '\u{6599}',
-    '\u{524D}',
-    '\u{5F8C}',
-    '\u{518D}',
-    '\u{65B0}',
-    '\u{521D}',
-    '\u{7D42}',
-    '\u{751F}',
-    '\u{8CA9}',
-    '\u{58F0}',
-    '\u{5439}',
-    '\u{6F14}',
-    '\u{6295}',
-    '\u{6355}',
-    '\u{4E00}',
-    '\u{4E09}',
-    '\u{904A}',
-    '\u{5DE6}',
-    '\u{4E2D}',
-    '\u{53F3}',
-    '\u{6307}',
-    '\u{8D70}',
-    '\u{6253}',
-    '\u{7981}',
-    '\u{7A7A}',
-    '\u{5408}',
-    '\u{6E80}',
-    '\u{6709}',
-    '\u{6708}',
-    '\u{7533}',
-    '\u{5272}',
-    '\u{55B6}',
-    '\u{914D}',
-    '\u{3014}',
-    '\u{672C}',
-    '\u{3015}',
-    '\u{3014}',
-    '\u{4E09}',
-    '\u{3015}',
-    '\u{3014}',
-    '\u{4E8C}',
-    '\u{3015}',
-    '\u{3014}',
-    '\u{5B89}',
-    '\u{3015}',
-    '\u{3014}',
-    '\u{70B9}',
-    '\u{3015}',
-    '\u{3014}',
-    '\u{6253}',
-    '\u{3015}',
-    '\u{3014}',
-    '\u{76D7}',
-    '\u{3015}',
-    '\u{3014}',
-    '\u{52DD}',
-    '\u{3015}',
-    '\u{3014}',
-    '\u{6557}',
-    '\u{3015}',
-    '\u{5F97}',
-    '\u{53EF}',
-    '\u{0030}',
-    '\u{0031}',
-    '\u{0032}',
-    '\u{0033}',
-    '\u{0034}',
-    '\u{0035}',
-    '\u{0036}',
-    '\u{0037}',
-    '\u{0038}',
-    '\u{0039}',
-];
-pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x16c,
-    0xe,
-    0x4ef,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x97,
-    0x165,
-    0x0,
-    0x0,
-    0x185,
-    0x0,
-    0x1,
-    0x0,
-    0x3f4,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x91,
-    0x0,
-    0xdd,
-    0x1,
-    0x26c,
-    0x0,
-    0xb,
-    0x0,
-    0xe0,
-    0xbc,
-    0x3,
-    0x213,
-    0x1,
-    0x0,
-    0xc8,
-    0x3,
-    0x1c,
-    0xfc,
-    0x0,
-    0x0,
-    0x11,
-    0x132,
-    0x0,
-    0x0,
-    0x10b,
-    0x90,
-    0x474,
-    0xd6,
-    0x0,
-    0x0,
-    0x3,
-    0xd,
-    0x5,
-    0x0,
-    0x6,
-    0x19,
-    0x54,
-    0x132,
-    0x4c,
-    0x17,
-    0x6,
-    0x48,
-    0x3,
-    0x0,
-    0x0,
-    0x6,
-    0xc,
-    0x3,
-    0x0,
-    0xb1,
-    0x1,
-    0x8c,
-    0x0,
-    0x1b,
-    0xc0,
-    0x7,
-    0x2,
-    0x0,
-    0x12,
-    0x0,
-    0x0,
-    0x6,
-    0x1,
-    0x1be,
-    0xc8,
-    0x0,
-    0x7d,
-    0x0,
-    0xa,
-    0x0,
-    0x0,
-    0xb4,
-    0x2,
-    0x8,
-    0x5,
-    0x144,
-    0xdb,
-    0x1,
-    0x6,
-    0x0,
-    0x0,
-    0xd,
-    0x14,
-    0x0,
-    0x4f,
-    0x2,
-    0x0,
-    0x3,
-    0x32,
-    0x0,
-    0x5,
-    0xe,
-    0x7c,
-    0x2c,
-    0x6,
-    0x0,
-    0x0,
-    0x7,
-    0x0,
-    0x5f,
-    0x5,
-    0xf,
-    0x67,
-    0x0,
-    0x1,
-    0x34,
-    0x0,
-    0x0,
-    0x0,
-    0x90,
-    0x12,
-    0x0,
-    0x0,
-    0x1e,
-    0x4c,
-    0x89,
-    0xa8,
-    0x0,
-    0x4,
-    0x1f,
-    0x0,
-    0x0,
-    0x1,
-    0x99,
-    0x18,
-    0xd,
-    0x3,
-    0x7,
-    0x5,
-    0x19,
-    0x2,
-    0x0,
-    0x4,
-    0x1,
-    0x3,
-    0x90,
-    0xb,
-    0x29,
-    0x55,
-    0x0,
-    0x51,
-    0x0,
-    0x2,
-    0xd0,
-    0x7a,
-    0x66,
-    0x0,
-    0x95,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x8d,
-    0xf,
-    0x21,
-    0x56,
-    0xa,
-    0x1b,
-    0x0,
-    0x0,
-    0x8,
-    0x7,
-    0x7c,
-    0x5,
-    0x0,
-    0x62,
-    0x2,
-    0x13,
-    0x6,
-    0x0,
-    0x4f,
-    0x0,
-    0x0,
-    0x32,
-    0x2f,
-    0x4,
-    0xd,
-    0xa0,
-    0x4,
-    0x8,
-    0x24,
-    0x1f,
-    0x0,
-    0x0,
-    0x82,
-    0x45,
-    0x0,
-    0x61,
-    0x0,
-    0x1d,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x7,
-    0x17,
-    0xb,
-    0x0,
-    0x0,
-    0x0,
-    0xb,
-    0x8,
-    0x8,
-    0x0,
-    0x0,
-    0x3d,
-    0x0,
-    0x96,
-    0x0,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x3,
-    0x7,
-    0x2c,
-    0x0,
-    0x0,
-    0x14,
-    0x24,
-    0x2,
-    0x2,
-    0x0,
-    0x2,
-    0x0,
-    0x12,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x25,
-    0xa,
-    0x1,
-    0x66,
-    0xb,
-    0x8,
-    0x0,
-    0xc,
-    0x10,
-    0x2,
-    0x3,
-    0x8,
-    0x4,
-    0x6,
-    0x1,
-    0x4,
-    0xe3,
-    0x23,
-    0x20,
-    0x7,
-    0x0,
-    0xf,
-    0x1e,
-    0x23,
-    0x3d,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x25,
-    0x0,
-    0x1,
-    0x31,
-    0x9d,
-    0x0,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0x26,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x1b,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0xa,
-    0x3,
-    0x1,
-    0x2,
-    0xc,
-    0xc,
-    0x1,
-    0x1,
-    0x0,
-    0x11,
-    0x4,
-    0x3d,
-    0x2,
-    0x1b,
-    0x2,
-    0x0,
-    0xc,
-    0x6,
-    0x6,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x9,
-    0x2c,
-    0x0,
-    0x9,
-    0x37,
-    0x2d,
-    0x0,
-    0x12,
-    0x23,
-    0x0,
-    0x0,
-    0x1c,
-    0x0,
-    0x26,
-    0x10,
-    0x15,
-    0x2,
-    0x0,
-    0xb,
-    0x0,
-    0x4,
-    0x14,
-    0x5,
-    0x13,
-    0x7,
-    0x1c,
-    0x3,
-    0x36,
-    0x0,
-    0x8,
-    0x1,
-    0x19,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x1,
-    0x8,
-    0x2,
-    0xa,
-    0x6,
-    0x13,
-    0x0,
-    0x0,
-    0x0,
-    0x2f,
-    0x1,
-    0x0,
-    0x16,
-    0x5,
-    0xc,
-    0xc,
-    0x1,
-    0x10,
-    0x3,
-    0xe,
-    0x0,
-    0x1,
-    0xd,
-    0x28,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x10,
-    0x21,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x23,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0xd,
-    0x1,
-    0x0,
-    0x0,
-    0x6,
-    0x6b,
-    0x0,
-    0x14,
-    0x0,
-    0x0,
-    0x6,
-    0x12,
-    0x0,
-    0x2,
-    0x0,
-    0x2a,
-    0x1,
-    0xb,
-    0x1,
-    0x6,
-    0x9,
-    0x8,
-    0x1,
-    0x0,
-    0x2b,
-    0x0,
-    0x8,
-    0x7,
-    0x0,
-    0xf,
-    0x16,
-    0x0,
-    0x0,
-    0x44,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0xc,
-    0x19,
-    0x25,
-    0x2,
-    0x1f,
-    0xf,
-    0xc,
-    0x1,
-    0x1f,
-    0xa,
-    0x0,
-    0x38,
-    0xe,
-    0xf,
-    0xc,
-    0x25,
-    0x0,
-    0x6,
-    0xe,
-    0x0,
-    0x8,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x9,
-    0x1,
-    0x16,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x15,
-    0x62,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x3d,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x29,
-    0x4,
-    0x2c,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x22,
-    0x0,
-    0x14,
-    0x28,
-    0x0,
-    0x7,
-    0x4,
-    0x3,
-    0x6,
-    0x0,
-    0x1,
-    0xd,
-    0x2a,
-    0x0,
-    0x0,
-    0x44,
-    0x0,
-    0x8,
-    0x0,
-    0x2,
-    0x1,
-    0xb,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x3,
-    0x1c,
-    0x5,
-    0x0,
-    0x6,
-    0x2,
-    0x0,
-    0x11,
-    0x6,
-    0x7,
-    0x0,
-    0x2,
-    0x28,
-    0x7,
-    0x1d,
-    0xb,
-    0x5,
-    0x2e,
-    0x11,
-    0x0,
-    0x1,
-    0xc,
-    0x0,
-    0x7,
-    0x2f,
-    0x0,
-    0x0,
-    0x5,
-    0xa,
-    0x0,
-    0x8,
-    0x6,
-    0x0,
-    0x0,
-    0x7,
-    0x1,
-    0x8,
-    0x20,
-    0xc,
-    0x0,
-    0x1a,
-    0x5,
-    0x0,
-    0x26,
-    0x26,
-    0x2,
-    0xb,
-    0x8,
-    0x0,
-    0x4,
-    0x5,
-    0x2,
-    0x0,
-    0x5,
-    0x12,
-    0x0,
-    0x5,
-    0x0,
-    0x1,
-    0x6,
-    0x9,
-    0x1,
-    0x3,
-    0x15,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x16,
-    0x0,
-    0x10,
-    0x3,
-    0x0,
-    0x1b,
-    0x2,
-    0x0,
-    0x9,
-    0x0,
-    0x9,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0xc,
-    0x26,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0xc,
-    0x1e,
-    0x0,
-    0x1,
-    0x36,
-    0x6,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x8,
-    0xc,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x7,
-    0x1,
-    0x2,
-    0x7,
-    0xd,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x5,
-    0x0,
-    0x8,
-    0x5,
-    0x0,
-    0x0,
-    0x3,
-    0x6,
-    0x0,
-    0x0,
-    0x8,
-    0x1,
-    0x5,
-    0x1,
-    0x3,
-    0x3,
-    0x10,
-    0xb,
-    0x7,
-    0x0,
-    0xf,
-    0x11,
-    0x0,
-    0x18,
-    0x0,
-    0x0,
-    0xf,
-    0x2,
-    0x7,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0xc,
-    0x18,
-    0x0,
-    0x17,
-    0x0,
-    0x1,
-    0x0,
-    0x26,
-    0x3,
-    0x0,
-    0x1b,
-    0x0,
-    0x8,
-    0x3,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x6,
-    0x0,
-    0xb,
-    0x1b,
-    0x9,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x5,
-    0x0,
-    0x6,
-    0x0,
-    0x4,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x9,
-    0x0,
-    0x2,
-    0x7,
-    0xe,
-    0x23,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0xf,
-    0x0,
-    0x8,
-    0x22,
-    0xe,
-    0x10,
-    0x7,
-    0x3,
-    0xc,
-    0x19,
-    0x1,
-    0xa,
-    0x2,
-    0x0,
-    0x3,
-    0x18,
-    0x1,
-    0x16,
-    0xa,
-    0x0,
-    0x2,
-    0x8,
-    0x0,
-    0x23,
-    0x0,
-    0x0,
-    0x6,
-    0x2,
-    0x0,
-    0x4,
-    0xd,
-    0x1b,
-    0x0,
-    0x4,
-    0x38,
-    0x0,
-    0x0,
-    0x11,
-    0xe,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x0,
-    0x21,
-    0x13,
-    0x2,
-    0x18,
-    0x4,
-    0x1,
-    0x10,
-    0x0,
-    0x2,
-    0x0,
-    0x6,
-    0x14,
-    0xa,
-    0x0,
-    0x0,
-    0x4,
-    0xe,
-    0x0,
-    0x0,
-    0x5,
-    0x4,
-    0x0,
-    0x20,
-    0x1d,
-    0x1,
-    0x0,
-    0x9,
-    0x0,
-    0x1,
-    0x1,
-    0x4,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x24,
-    0x1,
-    0x0,
-    0x9,
-    0x8,
-    0x0,
-    0x1,
-    0xa,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x13,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x4,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x9,
-    0x2,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xa,
-    0x0,
-    0x0,
-    0x10,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x1,
-    0x2,
-    0x4,
-    0x3,
-    0x0,
-    0x4,
-    0x14,
-    0x7,
-    0xa,
-    0x2,
-    0x6,
-    0x0,
-    0x2,
-    0x1,
-    0x8,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x14,
-    0x1,
-    0x10,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x6,
-    0x5,
-    0x3,
-    0x0,
-    0x9,
-    0x2,
-    0x4,
-    0x2,
-    0x0,
-    0x0,
-    0xc,
-    0x19,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0xf,
-    0x8,
-    0xd,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x9,
-    0x14,
-    0x17,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x5,
-    0x15,
-    0x1,
-    0x19,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x6,
-    0x3,
-    0x0,
-    0x11,
-    0x5,
-    0x0,
-    0x4,
-    0xc,
-    0x3,
-    0x0,
-    0x7,
-    0x0,
-    0x0,
-    0x3,
-    0x4,
-    0x3,
-    0xb,
-    0x0,
-    0x0,
-    0x6,
-    0x8,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0xd,
-    0x3,
-    0x0,
-    0x7,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x9,
-    0xa,
-    0x8,
-    0x1,
-    0x7,
-    0x3,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x4,
-    0x1,
-    0xb,
-    0x0,
-    0x13,
-    0x6,
-    0x7,
-    0x0,
-    0x0,
-    0x8,
-    0x7,
-    0x7,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x1b,
-    0x3,
-    0x2,
-    0x9,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0xf,
-    0x1,
-    0x6,
-    0x8,
-    0x4,
-    0x0,
-    0x0,
-    0x3,
-    0xb,
-    0x2,
-    0x5,
-    0x1,
-    0x2,
-    0x13,
-    0x13,
-    0x0,
-    0x9,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x21,
-    0x0,
-    0x6,
-    0x3,
-    0x1,
-    0x1,
-    0x5,
-    0x3,
-    0x0,
-    0x10,
-    0x22,
-    0xb,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0x3,
-    0x4,
-    0x1,
-    0x1a,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x12,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x21,
-    0x0,
-    0x2,
-    0xd,
-    0x1,
-    0x3,
-    0x5,
-    0x1,
-    0xc,
-    0x10,
-    0x0,
-    0x24,
-    0x0,
-    0x0,
-    0x6,
-    0x6,
-    0x1b,
-    0x1,
-    0xd,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x7,
-    0x2,
-    0x0,
-    0x5,
-    0x24,
-    0x6,
-    0x1,
-    0xe,
-    0x0,
-    0xb,
-    0xe,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x18,
-    0x3,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x14,
-    0x6,
-    0xb,
-    0x0,
-    0x2,
-    0x1,
-    0x2,
-    0x6,
-    0x6,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x8,
-    0x1,
-    0xc,
-    0x0,
-    0x7,
-    0x2,
-    0x3,
-    0x1,
-    0x0,
-    0x6,
-    0x1,
-    0x7,
-    0x11,
-    0x3,
-    0x0,
-    0x1,
-    0xa,
-    0x2,
-    0x2,
-    0x8,
-    0x6,
-    0x8,
-    0x0,
-    0x0,
-    0x4,
-    0x8,
-    0x1,
-    0x7,
-    0x2,
-    0x2,
-    0x6,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x7,
-    0x1,
-    0xe,
-    0x2,
-    0x2,
-    0x32,
-    0x7,
-    0xb,
-    0x4,
-    0x4,
-    0x0,
-    0x6,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x2,
-    0x1b,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0xc,
-    0x2,
-    0x1,
-    0x2,
-    0xf,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0xc,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0xb,
-    0x0,
-    0x2,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x6,
-    0xa,
-    0x1,
-    0x0,
-    0x8,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0xe,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x7,
-    0x1,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x3,
-    0x2,
-    0x0,
-    0x11,
-    0x3,
-    0x2,
-    0x3,
-    0x0,
-    0x0,
-    0x3,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x20,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x7,
-    0x2,
-    0x0,
-    0x12,
-    0x0,
-    0xa,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x4,
-    0xf,
-    0x0,
-    0x7,
-    0x4,
-    0x2,
-    0x12,
-    0x0,
-    0x1,
-    0x4,
-    0x2,
-    0x3,
-    0x0,
-    0x1,
-    0x17,
-    0x1,
-    0x1,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0xb,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x9,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x4,
-    0xa,
-    0x0,
-    0x0,
-    0x6,
-    0x7,
-    0x2,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0xb,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xc,
-    0x8,
-    0x1,
-    0xd,
-    0xb,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x3,
-    0x3,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x1,
-    0x9,
-    0x11,
-    0x1,
-    0xc,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x17,
-    0x1,
-    0x0,
-    0x5,
-    0xb,
-    0x1,
-    0x4,
-    0x1,
-    0x6,
-    0x1d,
-    0x0,
-    0x1,
-    0x4,
-    0x2,
-    0x9,
-    0x2,
-    0xf,
-    0x14,
-    0x2,
-    0x1,
-    0x7,
-    0x1,
-    0x1,
-    0x7,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x13,
-    0x2,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x5,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0xa,
-    0x6,
-    0x1,
-    0x6,
-    0x7,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x7,
-    0x4,
-    0x0,
-    0x0,
-    0xc,
-    0x2,
-    0x0,
-    0xa,
-    0x1,
-    0x0,
-    0x0,
-    0xa,
-    0x0,
-    0x6,
-    0x3,
-    0x1,
-    0x0,
-    0xd,
-    0x3,
-    0x5,
-    0x0,
-    0x2,
-    0xa,
-    0x0,
-    0xb,
-    0x1,
-    0x6,
-    0x22,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x12,
-    0x4,
-    0x2,
-    0x0,
-    0x0,
-    0xc,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x2,
-    0x1,
-    0x8,
-    0x4,
-    0x6,
-    0x1,
-    0x0,
-    0x3,
-    0xa,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0xe,
-    0x1,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0xa,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x17,
-    0x4,
-    0x0,
-    0xb,
-    0x3,
-    0x5,
-    0x4,
-    0x0,
-    0x3,
-    0xf,
-    0x6,
-    0x1,
-    0x1,
-    0x7,
-    0x4,
-    0x3,
-    0x1,
-    0x3,
-    0x4,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0xd,
-    0x6,
-    0x1,
-    0x0,
-    0x0,
-    0x7,
-    0x0,
-    0x0,
-    0xa,
-    0x3,
-    0x2,
-    0xa,
-    0x1,
-    0x7,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x3,
-    0x0,
-    0x5,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x4,
-    0x9,
-    0x5,
-    0x1,
-    0x1,
-    0x6,
-    0x0,
-    0x9,
-    0x1,
-    0xa,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x7,
-    0x9,
-    0x0,
-    0x10,
-    0x1c,
-    0x4,
-    0x0,
-    0x0,
-    0x3,
-    0x3,
-    0xd,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0xc,
-    0x7,
-    0x1,
-    0x3,
-    0x7,
-    0x8,
-    0x3,
-    0x6,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x4,
-    0xa,
-    0x5,
-    0x0,
-    0x1,
-    0x13,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0xe,
-    0x1,
-    0xc,
-    0x1,
-    0x1,
-    0x9,
-    0x0,
-    0x0,
-    0x1,
-    0xc,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x4,
-    0x3,
-    0x1,
-    0xc,
-    0xc,
-    0x3,
-    0x0,
-    0xc,
-    0xb,
-    0x0,
-    0x1,
-    0x1,
-    0xa,
-    0x1,
-    0xb,
-    0x0,
-    0x0,
-    0x1c,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x8,
-    0x3,
-    0x0,
-    0x5,
-    0x0,
-    0x3,
-    0x3,
-    0x0,
-    0x4,
-    0x0,
-    0x2,
-    0x6,
-    0xf,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x11,
-    0xb,
-    0x4,
-    0x5,
-    0x4,
-    0x0,
-    0xd,
-    0x4,
-    0x4,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0xa,
-    0x1,
-    0x13,
-    0x6,
-    0x0,
-    0x7,
-    0x7,
-    0x1,
-    0x1,
-    0x4,
-    0x4,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x7,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x4,
-    0x5,
-    0x10,
-    0x0,
-    0x7,
-    0x0,
-    0xa,
-    0x11,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0xb,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0xa,
-    0x0,
-    0x3,
-    0x0,
-    0x7,
-    0x6,
-    0x1,
-    0x0,
-    0x4,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x3,
-    0x4,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x10,
-    0x5,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xa,
-    0x4,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0xb,
-    0xb,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x0,
-    0x2,
-    0x4,
-    0x0,
-    0x5,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x6,
-    0x1,
-    0x4,
-    0x1,
-    0x0,
-    0x1,
-    0x7,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x6,
-    0x5,
-    0x8,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x4,
-    0x7,
-    0x0,
-    0x1,
-    0x7,
-    0x0,
-    0x2,
-    0x2,
-    0xb,
-    0x1,
-    0x2,
-    0x6,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x4,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x7,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0xb,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0xc,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x4,
-    0xe,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x4,
-    0x3,
-    0x18,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x5,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x4,
-    0x0,
-    0x0,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x14,
-    0x4,
-    0xb,
-    0x12,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0xb,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x10,
-    0xd,
-    0x1,
-    0x1,
-    0x7,
-    0x6,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x2,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x8,
-    0x4,
-    0x2,
-    0x6,
-    0x9,
-    0x5,
-    0x0,
-    0x16,
-    0x1,
-    0x4,
-    0x0,
-    0x3,
-    0x3,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0xd,
-    0x2,
-    0x0,
-    0xb,
-    0x6,
-    0xa,
-    0x3,
-    0x0,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0xa,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x2,
-    0x5,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x2,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x19,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x5,
-    0x4,
-    0x1,
-    0x4,
-    0x0,
-    0x1,
-    0x3,
-    0x4,
-    0x6,
-    0x1,
-    0x1,
-    0x4,
-    0x3,
-    0x4,
-    0x0,
-    0x4,
-    0x5,
-    0x9,
-    0x0,
-    0x1,
-    0x9,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0xc,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x2,
-    0x3,
-    0x2,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x4,
-    0x7,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x6,
-    0x9,
-    0x0,
-    0x2,
-    0x1b,
-    0x2,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x6,
-    0x2,
-    0x1,
-    0x6,
-    0x1,
-    0xb,
-    0x3,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x3,
-    0x3,
-    0x5,
-    0xb,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0xb,
-    0x3,
-    0x2,
-    0x13,
-    0x1,
-    0x1,
-    0x8,
-    0x3,
-    0x2,
-    0x5,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x5,
-    0x0,
-    0x1,
-    0x3,
-    0x4,
-    0x5,
-    0x0,
-    0x2,
-    0x0,
-    0xe,
-    0x1,
-    0x0,
-    0x0,
-    0x5,
-    0x3,
-    0x5,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x3,
-    0x3,
-    0x9,
-    0x7,
-    0x0,
-    0x8,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x3,
-    0x5,
-    0x4,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x4,
-    0x3,
-    0x0,
-    0x7,
-    0x5,
-    0x3,
-    0x1,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x8,
-    0x2,
-    0x4,
-    0x4,
-    0x0,
-    0x9,
-    0x1,
-    0x4,
-    0x0,
-    0x6,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0xa,
-    0x1,
-    0x0,
-    0x1,
-    0x6,
-    0x0,
-    0x1,
-    0x6,
-    0x3,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x5,
-    0x0,
-    0x0,
-    0x2,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x6,
-    0x0,
-    0x5,
-    0x4,
-    0x4,
-    0x1,
-    0x1,
-    0x4,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x2,
-    0x5,
-    0xd,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x7,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x9,
-    0x2,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0xa,
-    0x0,
-    0x3,
-    0x1,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x5,
-    0xa,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x4,
-    0x9,
-    0x1,
-    0x4,
-    0x5,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x9,
-    0x2,
-    0x4,
-    0x8,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x8,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x3,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x9,
-    0x1,
-    0x1,
-    0x5,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x4,
-    0x2,
-    0x4,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0xa,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x3,
-    0x2,
-    0x5,
-    0x1,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x4,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x7,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x0,
-    0x9,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x7,
-    0x6,
-    0x2,
-    0x0,
-    0x6,
-    0x0,
-    0x4,
-    0x0,
-    0x2,
-    0x7,
-    0x4,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x4,
-    0x3,
-    0x0,
-    0xa,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x1,
-    0x1,
-    0x3,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x6,
-    0x1,
-    0x3,
-    0xb,
-    0xb,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x5,
-    0x3,
-    0x2,
-    0x3,
-    0x8,
-    0x1,
-    0x6,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x4,
-    0x5,
-    0x2,
-    0x0,
-    0x6,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x5,
-    0x2,
-    0x2,
-    0x6,
-    0x1,
-    0x5,
-    0x3,
-    0x2,
-    0x5,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x4,
-    0x2,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x15,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x7,
-    0x3,
-    0x3,
-    0x3,
-    0x1,
-    0x1,
-    0x2,
-    0x6,
-    0x1,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x5,
-    0x0,
-    0x1,
-    0x5,
-    0x4,
-    0x8,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x3,
-    0x1,
-    0x4,
-    0x0,
-    0x4,
-    0x0,
-    0x2,
-    0x2,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0x2,
-    0x4,
-    0x2,
-    0x1,
-    0x6,
-    0x0,
-    0x1,
-    0xf,
-    0x0,
-    0x2,
-    0x5,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x4,
-    0x2,
-    0x4,
-    0x3,
-    0x5,
-    0x1,
-    0x1,
-    0x1,
-    0x7,
-    0x0,
-    0x7,
-    0x2,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-    0x7,
-    0x1,
-    0x7,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x5,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x4,
-    0x2,
-    0x1,
-    0x2,
-    0x3,
-    0x0,
-    0x2,
-    0x2,
-    0x4,
-    0x2,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x7,
-    0x1,
-    0x0,
-    0x1,
-    0x4,
-    0x3,
-    0x3,
-    0x1,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x6,
-    0x1,
-    0x0,
-    0x2,
-    0xd,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0xf,
-    0x2,
-    0x0,
-    0xa,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x0,
-    0x7,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0xb,
-    0x0,
-    0x0,
-    0xa,
-    0x5,
-    0x9,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0xc,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x2,
-    0x0,
-    0x7,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x6,
-    0x2,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x7,
-    0x2,
-    0x4,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x3,
-    0x8,
-    0x1,
-    0x6,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x3,
-    0x5,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x3,
-    0x7,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x6,
-    0x5,
-    0x0,
-    0x5,
-    0x4,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x2,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x4,
-    0x1,
-    0x1,
-    0x4,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xb,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x3,
-    0x5,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x8,
-    0x1,
-    0x4,
-    0x3,
-    0x0,
-    0x7,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x3,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x4,
-    0x2,
-    0x5,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x5,
-    0x2,
-    0x4,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x7,
-    0x0,
-    0x6,
-    0x4,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x3,
-    0x5,
-    0x0,
-    0x8,
-    0x3,
-    0x3,
-    0x2,
-    0x1,
-    0x7,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x8,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x6,
-    0x7,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x4,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x2,
-    0x3,
-    0x1,
-    0x2,
-    0x0,
-    0x6,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x2,
-    0x7,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x2,
-    0x0,
-    0x11,
-    0x5,
-    0x4,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x7,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x1,
-    0x2,
-    0x2,
-    0xe,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0xa,
-    0x1,
-    0x4,
-    0x0,
-    0x5,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x8,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0xf,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x7,
-    0x2,
-    0x2,
-    0x6,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x4,
-    0x0,
-    0x2,
-    0x1,
-    0x3,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0x3,
-    0x2,
-    0x4,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x6,
-    0x5,
-    0x1,
-    0x9,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x8,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x4,
-    0x1,
-    0x2,
-    0x1,
-    0x5,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x3,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0x2,
-    0x6,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xb,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x2,
-    0x4,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-    0x3,
-    0x0,
-    0x0,
-    0x3,
-    0x2,
-    0x4,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0xd,
-    0x2,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0xd,
-    0x4,
-    0x1,
-    0x6,
-    0x2,
-    0x3,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x4,
-    0x1,
-    0x2,
-    0x3,
-    0x0,
-    0x2,
-    0x3,
-    0x2,
-    0x1,
-    0x1,
-    0x7,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x5,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x5,
-    0x5,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x6,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x4,
-    0x1,
-    0x2,
-    0x1,
-    0x8,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x1,
-    0x7,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x8,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x3,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x7,
-    0x4,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x3,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x4,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x8,
-    0x5,
-    0x1,
-    0x0,
-    0x8,
-    0x0,
-    0x6,
-    0x1,
-    0x0,
-    0xc,
-    0x3,
-    0x5,
-    0x0,
-    0x2,
-    0x1,
-    0x5,
-    0x1,
-    0x1,
-    0x4,
-    0x3,
-    0x1,
-    0x1,
-    0x5,
-    0x6,
-    0x1,
-    0x2,
-    0x7,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x2,
-    0x3,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x5,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x8,
-    0x1,
-    0x6,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x1,
-    0x4,
-    0x1,
-    0x8,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x3,
-    0x1,
-    0x2,
-    0x3,
-    0x1,
-    0xc,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x5,
-    0x3,
-    0x2,
-    0x1,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-];
-pub(crate) const COMPATIBILITY_DECOMPOSED_KV: &[(u32, (u16, u16))] = &[
-    (0x1d5e5, (4752, 1)),
-    (0x1d430, (4339, 1)),
-    (0xfca0, (3015, 2)),
-    (0x1d769, (5138, 1)),
-    (0xfe55, (3808, 1)),
-    (0xfd72, (3438, 3)),
-    (0xb2, (6, 1)),
-    (0x333b, (1909, 5)),
-    (0xfbae, (2585, 1)),
-    (0x1d727, (5072, 1)),
-    (0x246d, (573, 2)),
-    (0x332c, (1846, 4)),
-    (0x1d79a, (5187, 1)),
-    (0xfd81, (3483, 3)),
-    (0xff07, (4015, 1)),
-    (0x1d76b, (5140, 1)),
-    (0x2fb1, (1034, 1)),
-    (0x1d4ef, (4518, 1)),
-    (0x3193, (1179, 1)),
-    (0xfbec, (2621, 3)),
-    (0x1d410, (4307, 1)),
-    (0x2177, (527, 4)),
-    (0xfcfa, (3200, 2)),
-    (0x1ee8e, (5451, 1)),
-    (0xfed8, (3958, 1)),
-    (0x32b8, (1568, 2)),
-    (0xfb7f, (2536, 1)),
-    (0x1d5f4, (4767, 1)),
-    (0x33e0, (2351, 2)),
-    (0x1e055, (5324, 1)),
-    (0xffac, (4180, 1)),
-    (0x1e9a, (234, 2)),
-    (0xfdf7, (3716, 4)),
-    (0x1d493, (4437, 1)),
-    (0x2085, (340, 1)),
-    (0x2148, (433, 1)),
-    (0x1d4e9, (4512, 1)),
-    (0x1d73c, (5093, 1)),
-    (0x1da8, (210, 1)),
-    (0xfeba, (3928, 1)),
-    (0x1d48e, (4432, 1)),
-    (0x1ee6c, (5422, 1)),
-    (0x1d628, (4819, 1)),
-    (0x1d6d1, (4986, 1)),
-    (0x2130, (413, 1)),
-    (0xff6c, (4116, 1)),
-    (0x1d7b4, (5213, 1)),
-    (0x1da4, (206, 1)),
-    (0x1e061, (5336, 1)),
-    (0x3224, (1319, 3)),
-    (0x3229, (1334, 3)),
-    (0x1d7ff, (5286, 1)),
-    (0x1d657, (4866, 1)),
-    (0xfee9, (3975, 1)),
-    (0x32f6, (1659, 1)),
-    (0xfc13, (2716, 2)),
-    (0x1d46e, (4400, 1)),
-    (0x2472, (583, 2)),
-    (0x1d6ba, (4963, 1)),
-    (0xfd05, (3222, 2)),
-    (0x33d7, (2328, 2)),
-    (0xfc17, (2724, 2)),
-    (0x2170, (513, 1)),
-    (0xfd1c, (3268, 2)),
-    (0x3382, (2123, 2)),
-    (0x1d764, (5133, 1)),
-    (0x1ee95, (5458, 1)),
-    (0x2f24, (893, 1)),
-    (0x32e5, (1642, 1)),
-    (0x1d409, (4300, 1)),
-    (0x1d43, (157, 1)),
-    (0x1d597, (4674, 1)),
-    (0x2f81, (986, 1)),
-    (0xfc4a, (2826, 2)),
-    (0x1d713, (5052, 1)),
-    (0x1d7a1, (5194, 1)),
-    (0xff74, (4124, 1)),
-    (0xff7d, (4133, 1)),
-    (0x2483, (638, 4)),
-    (0x3323, (1817, 3)),
-    (0x1e059, (5328, 1)),
-    (0x1d558, (4611, 1)),
-    (0xfc37, (2788, 2)),
-    (0x2f64, (957, 1)),
-    (0xfe58, (3811, 1)),
-    (0x32ee, (1651, 1)),
-    (0xfc6a, (2902, 2)),
-    (0x1d466, (4392, 1)),
-    (0x207e, (333, 1)),
-    (0x1e050, (5319, 1)),
-    (0x1d5ed, (4760, 1)),
-    (0xfc97, (2992, 3)),
-    (0x1d791, (5178, 1)),
-    (0x1d7bd, (5222, 1)),
-    (0x314d, (1112, 1)),
-    (0x33aa, (2219, 3)),
-    (0xfc0c, (2702, 2)),
-    (0x2f47, (928, 1)),
-    (0x3230, (1355, 3)),
-    (0xfdc6, (3684, 3)),
-    (0x1d614, (4799, 1)),
-    (0x3291, (1522, 1)),
-    (0xfe31, (3771, 1)),
-    (0x1d706, (5039, 1)),
-    (0xfe78, (3842, 2)),
-    (0x325a, (1440, 2)),
-    (0x2f84, (989, 1)),
-    (0xfca1, (3017, 2)),
-    (0x24bb, (792, 1)),
-    (0x2094, (354, 1)),
-    (0x1d4f8, (4527, 1)),
-    (0xfcfe, (3208, 2)),
-    (0x1d487, (4425, 1)),
-    (0x1d6fd, (5030, 1)),
-    (0x1d559, (4612, 1)),
-    (0x2074, (323, 1)),
-    (0x2112, (391, 1)),
-    (0xfcd5, (3121, 2)),
-    (0x2f06, (863, 1)),
-    (0x107ba, (4290, 1)),
-    (0xa7f4, (2443, 1)),
-    (0x24bf, (796, 1)),
-    (0x1d49c, (4446, 1)),
-    (0x1d63c, (4839, 1)),
-    (0x32a2, (1539, 1)),
-    (0x1f220, (5668, 1)),
-    (0x1d60f, (4794, 1)),
-    (0x32d5, (1626, 1)),
-    (0xfcec, (3169, 2)),
-    (0xfc49, (2824, 2)),
-    (0xfe70, (3830, 2)),
-    (0x2f45, (926, 1)),
-    (0x33b8, (2258, 2)),
-    (0x2e2, (85, 1)),
-    (0x2fba, (1043, 1)),
-    (0x32c6, (1596, 2)),
-    (0x1ee87, (5445, 1)),
-    (0xffb3, (4187, 1)),
-    (0xfb71, (2522, 1)),
-    (0xff0b, (4019, 1)),
-    (0xfd26, (3288, 2)),
-    (0xfc63, (2881, 3)),
-    (0x3131, (1084, 1)),
-    (0xff6f, (4119, 1)),
-    (0x24b9, (790, 1)),
-    (0x32b1, (1554, 2)),
-    (0xfda0, (3570, 3)),
-    (0x1d72e, (5079, 1)),
-    (0x1d64d, (4856, 1)),
-    (0xfb8f, (2552, 1)),
-    (0x1e03c, (5299, 1)),
-    (0xfd39, (3326, 2)),
-    (0xfd8b, (3513, 3)),
-    (0x1079a, (4259, 1)),
-    (0xfb95, (2558, 1)),
-    (0x107af, (4280, 1)),
-    (0x1f16c, (5642, 2)),
-    (0x1d793, (5180, 1)),
-    (0x1d437, (4346, 1)),
-    (0x3282, (1507, 1)),
-    (0xbe, (21, 3)),
-    (0x2c7d, (853, 1)),
-    (0xfec8, (3942, 1)),
-    (0xfc99, (2998, 3)),
-    (0x337d, (2111, 2)),
-    (0x3290, (1521, 1)),
-    (0x2f0d, (870, 1)),
-    (0x1d6be, (4967, 1)),
-    (0x1d5c6, (4721, 1)),
-    (0xff38, (4064, 1)),
-    (0xfda9, (3597, 3)),
-    (0x1d690, (4923, 1)),
-    (0x1d42d, (4336, 1)),
-    (0x1d524, (4566, 1)),
-    (0x3f5, (108, 1)),
-    (0x1d68f, (4922, 1)),
-    (0x1d5af, (4698, 1)),
-    (0xfd5e, (3378, 3)),
-    (0xfef7, (3993, 3)),
-    (0x33e8, (2367, 2)),
-    (0x1d4cc, (4483, 1)),
-    (0x1d42f, (4338, 1)),
-    (0xfe10, (3757, 1)),
-    (0x1d57e, (4649, 1)),
-    (0x107b7, (4287, 1)),
-    (0x1d499, (4443, 1)),
-    (0x1ee0f, (5363, 1)),
-    (0xfc96, (2990, 2)),
-    (0x1d4d2, (4489, 1)),
-    (0xffe9, (4229, 1)),
-    (0xffa5, (4173, 1)),
-    (0x3299, (1530, 1)),
-    (0x1d5c4, (4719, 1)),
-    (0xfe5c, (3815, 1)),
-    (0x17f, (34, 1)),
-    (0x1d7ea, (5265, 1)),
-    (0x1d4b0, (4458, 1)),
-    (0x1d5be, (4713, 1)),
-    (0x33d9, (2334, 3)),
-    (0x32e7, (1644, 1)),
-    (0x1d6e2, (5003, 1)),
-    (0xffad, (4181, 1)),
-    (0xfcae, (3043, 2)),
-    (0xfcda, (3131, 2)),
-    (0xfc1b, (2732, 2)),
-    (0x2f62, (955, 1)),
-    (0x320a, (1222, 3)),
-    (0x3f9, (109, 1)),
-    (0xfdc1, (3669, 3)),
-    (0x2f72, (971, 1)),
-    (0x316d, (1144, 1)),
-    (0x322b, (1340, 3)),
-    (0x2157, (457, 3)),
-    (0x1d659, (4868, 1)),
-    (0x1d3c, (150, 1)),
-    (0x333e, (1923, 4)),
-    (0x217e, (541, 1)),
-    (0x1f11b, (5545, 3)),
-    (0x1ee74, (5429, 1)),
-    (0x1d458, (4378, 1)),
-    (0xfbfa, (2663, 3)),
-    (0xfeb3, (3921, 1)),
-    (0xfb5f, (2504, 1)),
-    (0x2fc9, (1058, 1)),
-    (0x315a, (1125, 1)),
-    (0x1d4a9, (4452, 1)),
-    (0xfd31, (3310, 2)),
-    (0x3139, (1092, 1)),
-    (0x1db0, (218, 1)),
-    (0x1d4f3, (4522, 1)),
-    (0xfccf, (3109, 2)),
-    (0xfb80, (2537, 1)),
-    (0xfc6e, (2910, 2)),
-    (0x1d768, (5137, 1)),
-    (0x2b6, (68, 1)),
-    (0x333a, (1905, 4)),
-    (0x1d7c9, (5234, 1)),
-    (0x1f13c, (5611, 1)),
-    (0x1d6a2, (4941, 1)),
-    (0x2006, (281, 1)),
-    (0x1d445, (4360, 1)),
-    (0x1d763, (5132, 1)),
-    (0x1d5fa, (4773, 1)),
-    (0x3241, (1406, 3)),
-    (0xfe4a, (3795, 2)),
-    (0x326d, (1465, 1)),
-    (0x1d6c2, (4971, 1)),
-    (0xfd7d, (3471, 3)),
-    (0x3370, (2080, 3)),
-    (0x1d6bb, (4964, 1)),
-    (0x1d78f, (5176, 1)),
-    (0x1d4e6, (4509, 1)),
-    (0xff12, (4026, 1)),
-    (0xfb05, (2463, 2)),
-    (0x1ee1b, (5375, 1)),
-    (0x1d609, (4788, 1)),
-    (0xfe79, (3844, 2)),
-    (0xfbf6, (2651, 3)),
-    (0x1d780, (5161, 1)),
-    (0xfd38, (3324, 2)),
-    (0x1d4de, (4501, 1)),
-    (0x3182, (1165, 1)),
-    (0xfe48, (3792, 1)),
-    (0xfe5e, (3817, 1)),
-    (0x1ee1c, (5376, 1)),
-    (0x3319, (1774, 6)),
-    (0x323f, (1400, 3)),
-    (0x2f03, (860, 1)),
-    (0x1d566, (4625, 1)),
-    (0xfcf3, (3184, 3)),
-    (0x1d581, (4652, 1)),
-    (0x1d6eb, (5012, 1)),
-    (0x1e047, (5310, 1)),
-    (0x3301, (1675, 4)),
-    (0x2fa8, (1025, 1)),
-    (0x249b, (706, 3)),
-    (0xff70, (4120, 1)),
-    (0x1f219, (5661, 1)),
-    (0x1d441, (4356, 1)),
-    (0xfce9, (3163, 2)),
-    (0x32cd, (1613, 3)),
-    (0x1d70d, (5046, 1)),
-    (0xff61, (4105, 1)),
-    (0x2496, (691, 3)),
-    (0x1d416, (4313, 1)),
-    (0x3390, (2154, 2)),
-    (0x1d756, (5119, 1)),
-    (0x1e04a, (5313, 1)),
-    (0xfc6b, (2904, 2)),
-    (0xfc50, (2838, 2)),
-    (0x1d572, (4637, 1)),
-    (0xffce, (4209, 1)),
-    (0x2f12, (875, 1)),
-    (0xff95, (4157, 1)),
-    (0xfb99, (2562, 1)),
-    (0xff46, (4078, 1)),
-    (0xfdb7, (3639, 3)),
-    (0x2156, (454, 3)),
-    (0xff52, (4090, 1)),
-    (0x1f241, (5699, 3)),
-    (0x1d40f, (4306, 1)),
-    (0x1d440, (4355, 1)),
-    (0x3f1, (105, 1)),
-    (0x2078, (327, 1)),
-    (0x1d66c, (4887, 1)),
-    (0x1f13e, (5613, 1)),
-    (0xfc24, (2750, 2)),
-    (0xfe96, (3892, 1)),
-    (0x1d460, (4386, 1)),
-    (0x1d6c9, (4978, 1)),
-    (0x3330, (1865, 3)),
-    (0x2f95, (1006, 1)),
-    (0x1d71e, (5063, 1)),
-    (0x1d51e, (4560, 1)),
-    (0x10782, (4236, 1)),
-    (0xfc26, (2754, 2)),
-    (0xfd1e, (3272, 2)),
-    (0x2145, (430, 1)),
-    (0x327b, (1492, 2)),
-    (0xfcbc, (3071, 2)),
-    (0xff39, (4065, 1)),
-    (0xfc9c, (3007, 2)),
-    (0xfe62, (3821, 1)),
-    (0x1d41c, (4319, 1)),
-    (0x1d691, (4924, 1)),
-    (0x1d488, (4426, 1)),
-    (0x1ee4f, (5406, 1)),
-    (0x1d5e4, (4751, 1)),
-    (0x1e03d, (5300, 1)),
-    (0xfd55, (3351, 3)),
-    (0xfcbd, (3073, 2)),
-    (0x3297, (1528, 1)),
-    (0x1d5e0, (4747, 1)),
-    (0x3192, (1178, 1)),
-    (0x32d2, (1623, 1)),
-    (0x2f9e, (1015, 1)),
-    (0xfd1a, (3264, 2)),
-    (0x32e6, (1643, 1)),
-    (0x1eeaf, (5477, 1)),
-    (0x24d6, (819, 1)),
-    (0xfef4, (3986, 1)),
-    (0x1ee72, (5428, 1)),
-    (0x1d5d3, (4734, 1)),
-    (0xfd0c, (3236, 2)),
-    (0x1d66b, (4886, 1)),
-    (0xff5a, (4098, 1)),
-    (0xfe57, (3810, 1)),
-    (0xfb6a, (2515, 1)),
-    (0x1d44c, (4367, 1)),
-    (0x2474, (587, 3)),
-    (0xfdb3, (3627, 3)),
-    (0xfb92, (2555, 1)),
-    (0x2098, (358, 1)),
-    (0x1d5a9, (4692, 1)),
-    (0x24b6, (787, 1)),
-    (0x1d626, (4817, 1)),
-    (0xab69, (2450, 1)),
-    (0x1d630, (4827, 1)),
-    (0xfb6c, (2517, 1)),
-    (0x1d76f, (5144, 1)),
-    (0x3155, (1120, 1)),
-    (0xfe97, (3893, 1)),
-    (0x1dbb, (229, 1)),
-    (0x33bd, (2268, 2)),
-    (0x1d54c, (4600, 1)),
-    (0x2124, (408, 1)),
-    (0x33d2, (2315, 3)),
-    (0x3236, (1373, 3)),
-    (0x1f112, (5518, 3)),
-    (0x1d37, (146, 1)),
-    (0x132, (24, 2)),
-    (0x329e, (1535, 1)),
-    (0x1d65a, (4869, 1)),
-    (0xfdf8, (3720, 4)),
-    (0x385, (92, 3)),
-    (0x2f71, (970, 1)),
-    (0x1ee61, (5415, 1)),
-    (0xfe3d, (3783, 1)),
-    (0x3153, (1118, 1)),
-    (0xfccc, (3103, 2)),
-    (0x3203, (1201, 3)),
-    (0xfe3f, (3785, 1)),
-    (0x1d550, (4604, 1)),
-    (0x1d6e9, (5010, 1)),
-    (0x1d675, (4896, 1)),
-    (0x3f4, (107, 1)),
-    (0x1d53e, (4591, 1)),
-    (0x315c, (1127, 1)),
-    (0x32ac, (1549, 1)),
-    (0x24cd, (810, 1)),
-    (0xffe6, (4227, 1)),
-    (0x3166, (1137, 1)),
-    (0x1ee6d, (5423, 1)),
-    (0x24d3, (816, 1)),
-    (0xffee, (4234, 1)),
-    (0x1d777, (5152, 1)),
-    (0xff55, (4093, 1)),
-    (0x1d5de, (4745, 1)),
-    (0x1d593, (4670, 1)),
-    (0x1ee2b, (5386, 1)),
-    (0x1d486, (4424, 1)),
-    (0xfd71, (3435, 3)),
-    (0xfef9, (3999, 3)),
-    (0x326a, (1462, 1)),
-    (0x33d6, (2325, 3)),
-    (0x3345, (1947, 3)),
-    (0x2d9, (73, 2)),
-    (0xfbe4, (2609, 1)),
-    (0x3149, (1108, 1)),
-    (0x1d40d, (4304, 1)),
-    (0x1f235, (5689, 1)),
-    (0x1d6de, (4999, 1)),
-    (0x677, (116, 2)),
-    (0x1d656, (4865, 1)),
-    (0x1d3d, (151, 1)),
-    (0x1d6f0, (5017, 1)),
-    (0xfe34, (3774, 1)),
-    (0x1d69c, (4935, 1)),
-    (0xfe76, (3838, 2)),
-    (0x1daf, (217, 1)),
-    (0x1c5, (38, 3)),
-    (0x1d739, (5090, 1)),
-    (0x33e4, (2359, 2)),
-    (0x1d6ed, (5014, 1)),
-    (0x1d6d8, (4993, 1)),
-    (0xfc81, (2948, 2)),
-    (0xfecd, (3947, 1)),
-    (0x1d726, (5071, 1)),
-    (0x1e051, (5320, 1)),
-    (0xfc2c, (2766, 2)),
-    (0x1d6f3, (5020, 1)),
-    (0xfc3b, (2796, 2)),
-    (0xfce7, (3159, 2)),
-    (0x33b1, (2244, 2)),
-    (0x2161, (484, 2)),
-    (0xfe89, (3875, 2)),
-    (0x1d63f, (4842, 1)),
-    (0x1d5c9, (4724, 1)),
-    (0x3266, (1458, 1)),
-    (0xfd00, (3212, 2)),
-    (0x1d4c, (166, 1)),
-    (0x1d7e3, (5258, 1)),
-    (0x1d62b, (4822, 1)),
-    (0xfdae, (3612, 3)),
-    (0x339c, (2182, 2)),
-    (0xfc8c, (2970, 2)),
-    (0x1d449, (4364, 1)),
-    (0xffe2, (4222, 1)),
-    (0x222f, (551, 2)),
-    (0xfc62, (2878, 3)),
-    (0x1d70a, (5043, 1)),
-    (0x2fb3, (1036, 1)),
-    (0x1f239, (5693, 1)),
-    (0x32dc, (1633, 1)),
-    (0x1d7ad, (5206, 1)),
-    (0x3303, (1684, 3)),
-    (0x248b, (664, 2)),
-    (0x3168, (1139, 1)),
-    (0xfdf0, (3690, 3)),
-    (0xff8b, (4147, 1)),
-    (0x1d5c1, (4716, 1)),
-    (0x320f, (1238, 4)),
-    (0x1f145, (5620, 1)),
-    (0x1f118, (5536, 3)),
-    (0xffa0, (4168, 1)),
-    (0x335a, (2022, 2)),
-    (0x1d632, (4829, 1)),
-    (0x33eb, (2375, 3)),
-    (0x2120, (401, 2)),
-    (0x24da, (823, 1)),
-    (0xff28, (4048, 1)),
-    (0xfeaa, (3912, 1)),
-    (0x2fad, (1030, 1)),
-    (0x20a8, (363, 2)),
-    (0x33f3, (2399, 3)),
-    (0x32e2, (1639, 1)),
-    (0x3318, (1770, 4)),
-    (0x1ee35, (5395, 1)),
-    (0x1d5cd, (4728, 1)),
-    (0x325f, (1450, 2)),
-    (0x3365, (2047, 3)),
-    (0x1d4f, (168, 1)),
-    (0x24e7, (836, 1)),
-    (0xfc76, (2926, 2)),
-    (0xfedd, (3963, 1)),
-    (0xfcca, (3099, 2)),
-    (0x208b, (346, 1)),
-    (0x1f14e, (5633, 3)),
-    (0x1ee89, (5447, 1)),
-    (0x217d, (540, 1)),
-    (0x1d770, (5145, 1)),
-    (0x1d4b8, (4466, 1)),
-    (0xfca5, (3025, 2)),
-    (0x1d701, (5034, 1)),
-    (0x3253, (1426, 2)),
-    (0xfe8e, (3884, 1)),
-    (0xfc56, (2850, 2)),
-    (0x1d469, (4395, 1)),
-    (0x3394, (2165, 3)),
-    (0xfbe2, (2607, 1)),
-    (0x2048, (312, 2)),
-    (0xfcf9, (3198, 2)),
-    (0xeb3, (122, 2)),
-    (0x2fc7, (1056, 1)),
-    (0x3376, (2095, 2)),
-    (0x10784, (4238, 1)),
-    (0x1d6ad, (4950, 1)),
-    (0xff80, (4136, 1)),
-    (0x1d498, (4442, 1)),
-    (0x1f141, (5616, 1)),
-    (0x33a5, (2205, 2)),
-    (0x1d683, (4910, 1)),
-    (0xfdba, (3648, 3)),
-    (0x2110, (389, 1)),
-    (0x1d6dc, (4997, 1)),
-    (0x1d4bf, (4471, 1)),
-    (0x1d7d6, (5245, 1)),
-    (0x1f226, (5674, 1)),
-    (0x1d60d, (4792, 1)),
-    (0x2025, (290, 2)),
-    (0x1f247, (5717, 3)),
-    (0xfe90, (3886, 1)),
-    (0x330d, (1721, 4)),
-    (0xfb5a, (2499, 1)),
-    (0x2fa7, (1024, 1)),
-    (0x33bb, (2264, 2)),
-    (0x1d70b, (5044, 1)),
-    (0x2dd, (81, 2)),
-    (0x1d795, (5182, 1)),
-    (0x2488, (658, 2)),
-    (0xfc4c, (2830, 2)),
-    (0x1d599, (4676, 1)),
-    (0xfce3, (3151, 2)),
-    (0x1d5bb, (4710, 1)),
-    (0x2f8c, (997, 1)),
-    (0x1d7fe, (5285, 1)),
-    (0x1d42c, (4335, 1)),
-    (0xff78, (4128, 1)),
-    (0x1d67a, (4901, 1)),
-    (0x1d72c, (5077, 1)),
-    (0xff68, (4112, 1)),
-    (0x317a, (1157, 1)),
-    (0x1d70f, (5048, 1)),
-    (0x32c9, (1602, 3)),
-    (0xedd, (126, 2)),
-    (0x1d5f1, (4764, 1)),
-    (0x1d4c2, (4474, 1)),
-    (0xff24, (4044, 1)),
-    (0xff9a, (4162, 1)),
-    (0x1d671, (4892, 1)),
-    (0xffcf, (4210, 1)),
-    (0x2f0b, (868, 1)),
-    (0x32cc, (1611, 2)),
-    (0x1d6fa, (5027, 1)),
-    (0x1d616, (4801, 1)),
-    (0xfb15, (2471, 2)),
-    (0xfee7, (3973, 1)),
-    (0xff96, (4158, 1)),
-    (0x3d2, (97, 1)),
-    (0x1d5d9, (4740, 1)),
-    (0x1ffd, (271, 2)),
-    (0xfbb1, (2589, 2)),
-    (0xfca3, (3021, 2)),
-    (0x2f7f, (984, 1)),
-    (0x2f42, (923, 1)),
-    (0xfc27, (2756, 2)),
-    (0x1eea7, (5470, 1)),
-    (0x212d, (411, 1)),
-    (0x1d35, (144, 1)),
-    (0x1e05c, (5331, 1)),
-    (0xfcb2, (3051, 2)),
-    (0xfc7e, (2942, 2)),
-    (0x2f9d, (1014, 1)),
-    (0x33f9, (2417, 3)),
-    (0x1d606, (4785, 1)),
-    (0x1d55b, (4614, 1)),
-    (0x1d62f, (4826, 1)),
-    (0x2f9f, (1016, 1)),
-    (0x1dbc, (230, 1)),
-    (0xff3b, (4067, 1)),
-    (0x32d8, (1629, 1)),
-    (0x1d568, (4627, 1)),
-    (0x33e5, (2361, 2)),
-    (0x2f82, (987, 1)),
-    (0xfea7, (3909, 1)),
-    (0x1d55d, (4616, 1)),
-    (0x1d4ac, (4455, 1)),
-    (0x24b2, (775, 3)),
-    (0xfd37, (3322, 2)),
-    (0x2f80, (985, 1)),
-    (0x1d4df, (4502, 1)),
-    (0xfb73, (2524, 1)),
-    (0xfdc7, (3687, 3)),
-    (0x1d48, (162, 1)),
-    (0xfbb0, (2587, 2)),
-    (0x1d704, (5037, 1)),
-    (0x1d481, (4419, 1)),
-    (0x2f5b, (948, 1)),
-    (0x1e034, (5291, 1)),
-    (0x2b2, (64, 1)),
-    (0x1d41d, (4320, 1)),
-    (0xfcce, (3107, 2)),
-    (0x33a8, (2213, 4)),
-    (0x1d6e4, (5005, 1)),
-    (0x1d7c7, (5232, 1)),
-    (0x32b6, (1564, 2)),
-    (0x3218, (1274, 4)),
-    (0xfdf9, (3724, 3)),
-    (0xfd07, (3226, 2)),
-    (0xff69, (4113, 1)),
-    (0x3196, (1182, 1)),
-    (0x1d7ec, (5267, 1)),
-    (0xfcde, (3139, 2)),
-    (0x3274, (1478, 2)),
-    (0xfd11, (3246, 2)),
-    (0xfdb9, (3645, 3)),
-    (0xfccd, (3105, 2)),
-    (0x2fa2, (1019, 1)),
-    (0xfb21, (2478, 1)),
-    (0x1d401, (4292, 1)),
-    (0x1ee0d, (5361, 1)),
-    (0x338d, (2148, 2)),
-    (0xfd36, (3320, 2)),
-    (0xfc44, (2814, 2)),
-    (0x1d573, (4638, 1)),
-    (0x327c, (1494, 5)),
-    (0x1d787, (5168, 1)),
-    (0x2f1d, (886, 1)),
-    (0x1d4ca, (4481, 1)),
-    (0x2f32, (907, 1)),
-    (0x1d443, (4358, 1)),
-    (0xfec5, (3939, 1)),
-    (0x1f237, (5691, 1)),
-    (0xfb9f, (2568, 1)),
-    (0x332e, (1855, 6)),
-    (0x24cc, (809, 1)),
-    (0x2162, (486, 3)),
-    (0xffb6, (4190, 1)),
-    (0xfb9b, (2564, 1)),
-    (0x1fce, (250, 3)),
-    (0x318e, (1177, 1)),
-    (0x32fa, (1663, 1)),
-    (0x32db, (1632, 1)),
-    (0xfee5, (3971, 1)),
-    (0xfe41, (3787, 1)),
-    (0x1d5df, (4746, 1)),
-    (0x33f6, (2408, 3)),
-    (0x1d585, (4656, 1)),
-    (0xfd92, (3528, 3)),
-    (0x1d5b, (180, 1)),
-    (0x1078a, (4243, 1)),
-    (0x337a, (2105, 2)),
-    (0xfdc3, (3675, 3)),
-    (0x1078e, (4247, 1)),
-    (0xff63, (4107, 1)),
-    (0xfedf, (3965, 1)),
-    (0xfd5c, (3372, 3)),
-    (0x1e043, (5306, 1)),
-    (0x1d47b, (4413, 1)),
-    (0xfe18, (3765, 1)),
-    (0x1d7c5, (5230, 1)),
-    (0xfbda, (2598, 1)),
-    (0x1d59d, (4680, 1)),
-    (0x1e058, (5327, 1)),
-    (0x216a, (504, 2)),
-    (0x1d798, (5185, 1)),
-    (0x1ee37, (5397, 1)),
-    (0xfc22, (2746, 2)),
-    (0x3171, (1148, 1)),
-    (0xfd66, (3402, 3)),
-    (0x1eea2, (5466, 1)),
-    (0xfb88, (2545, 1)),
-    (0x1d6b4, (4957, 1)),
-    (0x32e3, (1640, 1)),
-    (0x208e, (349, 1)),
-    (0x3223, (1316, 3)),
-    (0x3137, (1090, 1)),
-    (0x222c, (546, 2)),
-    (0x2f8b, (996, 1)),
-    (0x1f11a, (5542, 3)),
-    (0xfc4f, (2836, 2)),
-    (0x1d52b, (4573, 1)),
-    (0xfba5, (2575, 2)),
-    (0x1d465, (4391, 1)),
-    (0xff50, (4088, 1)),
-    (0xff2b, (4051, 1)),
-    (0xfc60, (2872, 3)),
-    (0x326e, (1466, 2)),
-    (0xfb78, (2529, 1)),
-    (0x2080, (335, 1)),
-    (0xfe37, (3777, 1)),
-    (0x1f243, (5705, 3)),
-    (0xfb01, (2453, 2)),
-    (0x32a1, (1538, 1)),
-    (0x1d6d9, (4994, 1)),
-    (0x2007, (282, 1)),
-    (0x321a, (1282, 4)),
-    (0x1d730, (5081, 1)),
-    (0xfb7a, (2531, 1)),
-    (0x3175, (1152, 1)),
-    (0x2136, (418, 1)),
-    (0x3355, (2007, 2)),
-    (0x32b5, (1562, 2)),
-    (0xfe3b, (3781, 1)),
-    (0xfd2a, (3296, 2)),
-    (0x24ad, (760, 3)),
-    (0x1d471, (4403, 1)),
-    (0x3272, (1474, 2)),
-    (0x1d77b, (5156, 1)),
-    (0xfd68, (3408, 3)),
-    (0x1d65d, (4872, 1)),
-    (0x1f138, (5607, 1)),
-    (0x1e066, (5341, 1)),
-    (0x217c, (539, 1)),
-    (0x1d586, (4657, 1)),
-    (0x1d785, (5166, 1)),
-    (0x1d73d, (5094, 1)),
-    (0xfd53, (3345, 3)),
-    (0x208c, (347, 1)),
-    (0x3326, (1827, 3)),
-    (0x1d517, (4554, 1)),
-    (0x1ee6f, (5425, 1)),
-    (0xfcb0, (3047, 2)),
-    (0xfe19, (3766, 3)),
-    (0xfb25, (2482, 1)),
-    (0xff3c, (4068, 1)),
-    (0xfc7f, (2944, 2)),
-    (0x1d680, (4907, 1)),
-    (0xff47, (4079, 1)),
-    (0x3361, (2036, 2)),
-    (0x1d5e7, (4754, 1)),
-    (0x1e031, (5288, 1)),
-    (0x10791, (4250, 1)),
-    (0x1f125, (5575, 3)),
-    (0x1d716, (5055, 1)),
-    (0xfe11, (3758, 1)),
-    (0x1d7cb, (5236, 1)),
-    (0x316a, (1141, 1)),
-    (0x1f16a, (5638, 2)),
-    (0x1d7af, (5208, 1)),
-    (0xfc2b, (2764, 2)),
-    (0xff1e, (4038, 1)),
-    (0x2fa6, (1023, 1)),
-    (0xfd6c, (3420, 3)),
-    (0x2116, (394, 2)),
-    (0x3327, (1830, 2)),
-    (0xfc21, (2744, 2)),
-    (0x1d30, (139, 1)),
-    (0x1d6fe, (5031, 1)),
-    (0xfc3c, (2798, 2)),
-    (0xfbf7, (2654, 3)),
-    (0x1d66e, (4889, 1)),
-    (0xfe36, (3776, 1)),
-    (0x1d600, (4779, 1)),
-    (0x32c4, (1592, 2)),
-    (0xfcee, (3173, 2)),
-    (0xfea8, (3910, 1)),
-    (0x1d7cf, (5238, 1)),
-    (0x1e05d, (5332, 1)),
-    (0x1d682, (4909, 1)),
-    (0x2498, (697, 3)),
-    (0xfedc, (3962, 1)),
-    (0x1d6ec, (5013, 1)),
-    (0x2f1e, (887, 1)),
-    (0x1d69d, (4936, 1)),
-    (0xfc55, (2848, 2)),
-    (0x1ee97, (5460, 1)),
-    (0x1d5bf, (4714, 1)),
-    (0x207f, (334, 1)),
-    (0x1eeb4, (5482, 1)),
-    (0xfc38, (2790, 2)),
-    (0x1da7, (209, 1)),
-    (0x1d705, (5038, 1)),
-    (0x1d720, (5065, 1)),
-    (0x215b, (469, 3)),
-    (0x1d4fc, (4531, 1)),
-    (0x1e03f, (5302, 1)),
-    (0x1d59a, (4677, 1)),
-    (0xfcfd, (3206, 2)),
-    (0x10781, (4235, 1)),
-    (0x2f9c, (1013, 1)),
-    (0x1d5b3, (4702, 1)),
-    (0x1d7a4, (5197, 1)),
-    (0x107a7, (4272, 1)),
-    (0xfb90, (2553, 1)),
-    (0x1d490, (4434, 1)),
-    (0x1d543, (4595, 1)),
-    (0x2f6a, (963, 1)),
-    (0x3366, (2050, 3)),
-    (0x1d414, (4311, 1)),
-    (0x1d633, (4830, 1)),
-    (0x335f, (2032, 2)),
-    (0x32a8, (1545, 1)),
-    (0x33cf, (2309, 2)),
-    (0xfefc, (4007, 2)),
-    (0x1d6a3, (4942, 1)),
-    (0xffba, (4194, 1)),
-    (0x1078d, (4246, 1)),
-    (0x1d6c4, (4973, 1)),
-    (0x1e044, (5307, 1)),
-    (0x1d4aa, (4453, 1)),
-    (0x1d595, (4672, 1)),
-    (0x3331, (1868, 3)),
-    (0x1d7f7, (5278, 1)),
-    (0x1d6fb, (5028, 1)),
-    (0x1d49, (163, 1)),
-    (0x1d49e, (4447, 1)),
-    (0x1d411, (4308, 1)),
-    (0x2107, (380, 1)),
-    (0x205f, (320, 1)),
-    (0x1e038, (5295, 1)),
-    (0xfb4f, (2487, 2)),
-    (0x1ee9a, (5463, 1)),
-    (0x1d43c, (4351, 1)),
-    (0x32ad, (1550, 1)),
-    (0x1d468, (4394, 1)),
-    (0x3184, (1167, 1)),
-    (0x3162, (1133, 1)),
-    (0x2f69, (962, 1)),
-    (0xfe81, (3859, 2)),
-    (0x1ee05, (5353, 1)),
-    (0xfea5, (3907, 1)),
-    (0x32ba, (1572, 2)),
-    (0x32f0, (1653, 1)),
-    (0x1d7d9, (5248, 1)),
-    (0x1d4c0, (4472, 1)),
-    (0xfea3, (3905, 1)),
-    (0x321d, (1294, 7)),
-    (0x1d6c7, (4976, 1)),
-    (0x1fcf, (253, 3)),
-    (0x33bf, (2272, 2)),
-    (0x1d718, (5057, 1)),
-    (0x10790, (4249, 1)),
-    (0x1d501, (4536, 1)),
-    (0x1d610, (4795, 1)),
-    (0x32e0, (1637, 1)),
-    (0xfd21, (3278, 2)),
-    (0x1d6db, (4996, 1)),
-    (0x1f13d, (5612, 1)),
-    (0x3038, (1073, 1)),
-    (0x33a7, (2210, 3)),
-    (0xfd25, (3286, 2)),
-    (0x1d7e1, (5256, 1)),
-    (0xffbd, (4197, 1)),
-    (0x1ee8c, (5449, 1)),
-    (0x1ee08, (5356, 1)),
-    (0x33c3, (2282, 2)),
-    (0x1d51a, (4557, 1)),
-    (0x32bf, (1582, 2)),
-    (0x249e, (715, 3)),
-    (0x33c8, (2295, 2)),
-    (0x1f210, (5651, 1)),
-    (0x2179, (533, 1)),
-    (0x3222, (1313, 3)),
-    (0x1d782, (5163, 1)),
-    (0x10789, (4242, 1)),
-    (0x3305, (1692, 3)),
-    (0xfe3a, (3780, 1)),
-    (0x1d631, (4828, 1)),
-    (0x3199, (1185, 1)),
-    (0xffd4, (4213, 1)),
-    (0x209c, (362, 1)),
-    (0x3247, (1418, 1)),
-    (0xfc88, (2962, 2)),
-    (0xffb9, (4193, 1)),
-    (0x1d46c, (4398, 1)),
-    (0x1d636, (4833, 1)),
-    (0x315f, (1130, 1)),
-    (0xfb8b, (2548, 1)),
-    (0xb5, (10, 1)),
-    (0x1d419, (4316, 1)),
-    (0xfed5, (3955, 1)),
-    (0x1d6ca, (4979, 1)),
-    (0x339e, (2186, 2)),
-    (0x1d641, (4844, 1)),
-    (0x1d6af, (4952, 1)),
-    (0x3288, (1513, 1)),
-    (0x2154, (448, 3)),
-    (0xfe8d, (3883, 1)),
-    (0x1d40b, (4302, 1)),
-    (0x1d607, (4786, 1)),
-    (0xff26, (4046, 1)),
-    (0x1d758, (5121, 1)),
-    (0xfc4e, (2834, 2)),
-    (0x3364, (2044, 3)),
-    (0x1d4f5, (4524, 1)),
-    (0x2fc6, (1055, 1)),
-    (0x1d5dc, (4743, 1)),
-    (0xfc5e, (2866, 3)),
-    (0xff36, (4062, 1)),
-    (0x24c5, (802, 1)),
-    (0x1d587, (4658, 1)),
-    (0x2091, (351, 1)),
-    (0x1d750, (5113, 1)),
-    (0x24b0, (769, 3)),
-    (0x1f122, (5566, 3)),
-    (0x3339, (1902, 3)),
-    (0x1e054, (5323, 1)),
-    (0x1d511, (4549, 1)),
-    (0x3335, (1887, 3)),
-    (0xffaa, (4178, 1)),
-    (0x1f240, (5696, 3)),
-    (0x1d612, (4797, 1)),
-    (0x1d553, (4606, 1)),
-    (0x1d5aa, (4693, 1)),
-    (0xaa, (3, 1)),
-    (0xff62, (4106, 1)),
-    (0x24de, (827, 1)),
-    (0x1d7e2, (5257, 1)),
-    (0xfe6a, (3828, 1)),
-    (0x2f6f, (968, 1)),
-    (0xfd59, (3363, 3)),
-    (0x1f1, (56, 2)),
-    (0x1d33, (142, 1)),
-    (0x1078f, (4248, 1)),
-    (0x1d536, (4584, 1)),
-    (0x2f0a, (867, 1)),
-    (0x3244, (1415, 1)),
-    (0x246e, (575, 2)),
-    (0xfc85, (2956, 2)),
-    (0x32f3, (1656, 1)),
-    (0x1fbf4, (5729, 1)),
-    (0x1d643, (4846, 1)),
-    (0xfba0, (2569, 1)),
-    (0x1db1, (219, 1)),
-    (0x1d457, (4377, 1)),
-    (0x1d7d7, (5246, 1)),
-    (0x3172, (1149, 1)),
-    (0x33b2, (2246, 2)),
-    (0x107aa, (4275, 1)),
-    (0x2f16, (879, 1)),
-    (0x1d731, (5082, 1)),
-    (0x1d725, (5070, 1)),
-    (0xfbf4, (2645, 3)),
-    (0x33f5, (2405, 3)),
-    (0x339d, (2184, 2)),
-    (0xfcc4, (3087, 2)),
-    (0xfc1c, (2734, 2)),
-    (0xff11, (4025, 1)),
-    (0x1d76d, (5142, 1)),
-    (0x1d61c, (4807, 1)),
-    (0x1d733, (5084, 1)),
-    (0x1d5c7, (4722, 1)),
-    (0xff81, (4137, 1)),
-    (0x2122, (406, 2)),
-    (0x1d4ae, (4456, 1)),
-    (0x1f21d, (5665, 1)),
-    (0x1d47f, (4417, 1)),
-    (0x1d757, (5120, 1)),
-    (0xbc, (15, 3)),
-    (0x1d621, (4812, 1)),
-    (0xffe4, (4225, 1)),
-    (0xfec9, (3943, 1)),
-    (0x1ee84, (5442, 1)),
-    (0xfd98, (3546, 3)),
-    (0x3161, (1132, 1)),
-    (0x213f, (428, 1)),
-    (0x1d9e, (200, 1)),
-    (0x1d619, (4804, 1)),
-    (0x1d4d6, (4493, 1)),
-    (0x1d5c0, (4715, 1)),
-    (0x2f7b, (980, 1)),
-    (0x1ee0b, (5359, 1)),
-    (0x1d746, (5103, 1)),
-    (0xfceb, (3167, 2)),
-    (0xfef3, (3985, 1)),
-    (0xfcf4, (3187, 3)),
-    (0xfe7a, (3846, 2)),
-    (0x215c, (472, 3)),
-    (0x1d4fd, (4532, 1)),
-    (0xfba7, (2578, 1)),
-    (0xfd3c, (3332, 2)),
-    (0x1d46a, (4396, 1)),
-    (0x2163, (489, 2)),
-    (0x1ee64, (5417, 1)),
-    (0x1d692, (4925, 1)),
-    (0x1d648, (4851, 1)),
-    (0x1d482, (4420, 1)),
-    (0x1d576, (4641, 1)),
-    (0x1d717, (5056, 1)),
-    (0xfe30, (3769, 2)),
-    (0x1f232, (5686, 1)),
-    (0xfc77, (2928, 2)),
-    (0x1d668, (4883, 1)),
-    (0x2146, (431, 1)),
-    (0xa8, (1, 2)),
-    (0xfb93, (2556, 1)),
-    (0x1d5ef, (4762, 1)),
-    (0xfbfd, (2670, 1)),
-    (0x107ab, (4276, 1)),
-    (0x1e063, (5338, 1)),
-    (0x1d470, (4402, 1)),
-    (0x3356, (2009, 6)),
-    (0x1d4c5, (4476, 1)),
-    (0xfbe7, (2612, 1)),
-    (0x24ea, (839, 1)),
-    (0x1d519, (4556, 1)),
-    (0x1d654, (4863, 1)),
-    (0x2f6d, (966, 1)),
-    (0x1d518, (4555, 1)),
-    (0x1d639, (4836, 1)),
-    (0xfd52, (3342, 3)),
-    (0x1d79f, (5192, 1)),
-    (0x1d775, (5150, 1)),
-    (0x3371, (2083, 3)),
-    (0x1e048, (5311, 1)),
-    (0x1d7ce, (5237, 1)),
-    (0xff65, (4109, 1)),
-    (0x33a0, (2191, 3)),
-    (0x313e, (1097, 1)),
-    (0x1d60a, (4789, 1)),
-    (0x1d591, (4668, 1)),
-    (0x1e04d, (5316, 1)),
-    (0x1d5c5, (4720, 1)),
-    (0x327a, (1490, 2)),
-    (0x1d68, (193, 1)),
-    (0xff71, (4121, 1)),
-    (0x1d42e, (4337, 1)),
-    (0x1d77a, (5155, 1)),
-    (0xfe44, (3790, 1)),
-    (0x1f132, (5601, 1)),
-    (0x1d5f6, (4769, 1)),
-    (0x1d77c, (5157, 1)),
-    (0x1d66f, (4890, 1)),
-    (0x1d7f5, (5276, 1)),
-    (0xfcd7, (3125, 2)),
-    (0x3188, (1171, 1)),
-    (0x1d7a0, (5193, 1)),
-    (0xfbe5, (2610, 1)),
-    (0xff8d, (4149, 1)),
-    (0x107a1, (4266, 1)),
-    (0x1d44e, (4369, 1)),
-    (0x1d528, (4570, 1)),
-    (0x2fc4, (1053, 1)),
-    (0x2024, (289, 1)),
-    (0x10fc, (135, 1)),
-    (0xfdb0, (3618, 3)),
-    (0xfcb4, (3055, 2)),
-    (0x330c, (1717, 4)),
-    (0x316b, (1142, 1)),
-    (0x1f111, (5515, 3)),
-    (0x2fb8, (1041, 1)),
-    (0x3385, (2129, 2)),
-    (0x1da9, (211, 1)),
-    (0x1d73a, (5091, 1)),
-    (0x3293, (1524, 1)),
-    (0x1d4cf, (4486, 1)),
-    (0x32d6, (1627, 1)),
-    (0x338b, (2144, 2)),
-    (0x314a, (1109, 1)),
-    (0x1f14d, (5631, 2)),
-    (0x1e9b, (236, 2)),
-    (0x1d64a, (4853, 1)),
-    (0x1d7da, (5249, 1)),
-    (0xfb17, (2475, 2)),
-    (0x1d761, (5130, 1)),
-    (0x2097, (357, 1)),
-    (0x1fc0, (242, 2)),
-    (0x33e3, (2357, 2)),
-    (0x1d6b3, (4956, 1)),
-    (0x1d5b4, (4703, 1)),
-    (0xfd17, (3258, 2)),
-    (0xfc2a, (2762, 2)),
-    (0x1d76a, (5139, 1)),
-    (0x1d68a, (4917, 1)),
-    (0x1e039, (5296, 1)),
-    (0xfbe9, (2614, 1)),
-    (0x1f107, (5504, 2)),
-    (0x107a4, (4269, 1)),
-    (0x216d, (510, 1)),
-    (0x2092, (352, 1)),
-    (0xff3d, (4069, 1)),
-    (0x107b3, (4283, 1)),
-    (0x2f51, (938, 1)),
-    (0xfc59, (2856, 2)),
-    (0x1d529, (4571, 1)),
-    (0x3237, (1376, 3)),
-    (0x3215, (1262, 4)),
-    (0x2465, (561, 1)),
-    (0x1d735, (5086, 1)),
-    (0x107b9, (4289, 1)),
-    (0xfed3, (3953, 1)),
-    (0x203c, (306, 2)),
-    (0x2f9b, (1012, 1)),
-    (0x2f66, (959, 1)),
-    (0xfd75, (3447, 3)),
-    (0x1d634, (4831, 1)),
-    (0xe33, (120, 2)),
-    (0x1dba, (228, 1)),
-    (0xfd5a, (3366, 3)),
-    (0x2494, (685, 3)),
-    (0x315d, (1128, 1)),
-    (0x1d509, (4543, 1)),
-    (0x1d797, (5184, 1)),
-    (0x334f, (1986, 3)),
-    (0x1d7fb, (5282, 1)),
-    (0x2463, (559, 1)),
-    (0xff02, (4010, 1)),
-    (0xfb61, (2506, 1)),
-    (0x33ec, (2378, 3)),
-    (0x1d5f7, (4770, 1)),
-    (0x33ae, (2231, 5)),
-    (0xfc89, (2964, 2)),
-    (0x1d738, (5089, 1)),
-    (0x1e030, (5287, 1)),
-    (0x1f22a, (5678, 1)),
-    (0x2f4b, (932, 1)),
-    (0x3302, (1679, 5)),
-    (0x1d4d, (167, 1)),
-    (0x1d4d7, (4494, 1)),
-    (0xfc4d, (2832, 2)),
-    (0x1d4e5, (4508, 1)),
-    (0x1d542, (4594, 1)),
-    (0x3336, (1890, 5)),
-    (0x2fb6, (1039, 1)),
-    (0x2fa1, (1018, 1)),
-    (0x1d71a, (5059, 1)),
-    (0xfca4, (3023, 2)),
-    (0x1d618, (4803, 1)),
-    (0xfcc2, (3083, 2)),
-    (0x1dac, (214, 1)),
-    (0xfcb8, (3063, 2)),
-    (0xfb7c, (2533, 1)),
-    (0x317f, (1162, 1)),
-    (0x1d7e0, (5255, 1)),
-    (0xffc6, (4203, 1)),
-    (0x3150, (1115, 1)),
-    (0x3276, (1482, 2)),
-    (0x328d, (1518, 1)),
-    (0x32bc, (1576, 2)),
-    (0x133, (26, 2)),
-    (0x1f245, (5711, 3)),
-    (0x213e, (427, 1)),
-    (0xfb66, (2511, 1)),
-    (0x2f89, (994, 1)),
-    (0x1f12e, (5597, 2)),
-    (0x1d4f1, (4520, 1)),
-    (0xfc91, (2980, 2)),
-    (0xff53, (4091, 1)),
-    (0x3306, (1695, 3)),
-    (0x2473, (585, 2)),
-    (0x1dae, (216, 1)),
-    (0xfbac, (2583, 1)),
-    (0x33b4, (2250, 2)),
-    (0x3214, (1258, 4)),
-    (0x32c2, (1588, 2)),
-    (0x24ca, (807, 1)),
-    (0x1d533, (4581, 1)),
-    (0x33f8, (2414, 3)),
-    (0xff44, (4076, 1)),
-    (0x1d4f7, (4526, 1)),
-    (0x1078c, (4245, 1)),
-    (0xffca, (4205, 1)),
-    (0xfe17, (3764, 1)),
-    (0xfbe1, (2606, 1)),
-    (0xfc32, (2778, 2)),
-    (0x1d625, (4816, 1)),
-    (0x140, (30, 2)),
-    (0xfeab, (3913, 1)),
-    (0x1d6d3, (4988, 1)),
-    (0x1d7a8, (5201, 1)),
-    (0xfb5d, (2502, 1)),
-    (0x3220, (1307, 3)),
-    (0x24a5, (736, 3)),
-    (0x1d4b3, (4461, 1)),
-    (0x107ad, (4278, 1)),
-    (0x3399, (2176, 2)),
-    (0x2f36, (911, 1)),
-    (0xfc74, (2922, 2)),
-    (0x1d5a5, (4688, 1)),
-    (0x2fc3, (1052, 1)),
-    (0x1e06c, (5347, 1)),
-    (0x32d9, (1630, 1)),
-    (0x1d544, (4596, 1)),
-    (0x3221, (1310, 3)),
-    (0x1d512, (4550, 1)),
-    (0xfece, (3948, 1)),
-    (0xfcf7, (3194, 2)),
-    (0xfb82, (2539, 1)),
-    (0x1d6b8, (4961, 1)),
-    (0x3194, (1180, 1)),
-    (0xffe5, (4226, 1)),
-    (0x32e8, (1645, 1)),
-    (0x24af, (766, 3)),
-    (0x1fbf1, (5726, 1)),
-    (0xfbfc, (2669, 1)),
-    (0xb3, (7, 1)),
-    (0x24c6, (803, 1)),
-    (0x1d749, (5106, 1)),
-    (0xfd9a, (3552, 3)),
-    (0x1d4b5, (4463, 1)),
-    (0xfede, (3964, 1)),
-    (0x1d6e7, (5008, 1)),
-    (0x2f48, (929, 1)),
-    (0x1d4e3, (4506, 1)),
-    (0x1eea6, (5469, 1)),
-    (0x2f97, (1008, 1)),
-    (0x24a8, (745, 3)),
-    (0x1d562, (4621, 1)),
-    (0x2102, (371, 1)),
-    (0x1d61b, (4806, 1)),
-    (0x3176, (1153, 1)),
-    (0x1d60, (185, 1)),
-    (0x1d698, (4931, 1)),
-    (0xfed9, (3959, 1)),
-    (0x1d61f, (4810, 1)),
-    (0x1ee6a, (5421, 1)),
-    (0xfd09, (3230, 2)),
-    (0x1d561, (4620, 1)),
-    (0x1d4e1, (4504, 1)),
-    (0x1d7f4, (5275, 1)),
-    (0x2f68, (961, 1)),
-    (0x1eeb3, (5481, 1)),
-    (0x1e062, (5337, 1)),
-    (0x2fbe, (1047, 1)),
-    (0x2047, (310, 2)),
-    (0xff23, (4043, 1)),
-    (0xfe77, (3840, 2)),
-    (0x1d75b, (5124, 1)),
-    (0x1d4b9, (4467, 1)),
-    (0x33ba, (2262, 2)),
-    (0x2482, (634, 4)),
-    (0xffb0, (4184, 1)),
-    (0x3164, (1135, 1)),
-    (0x24d1, (814, 1)),
-    (0x24db, (824, 1)),
-    (0x1d5bc, (4711, 1)),
-    (0x3396, (2170, 2)),
-    (0x1d590, (4667, 1)),
-    (0x1d5da, (4741, 1)),
-    (0x1d454, (4375, 1)),
-    (0x1ee24, (5382, 1)),
-    (0x2134, (416, 1)),
-    (0x1d7a5, (5198, 1)),
-    (0x1e056, (5325, 1)),
-    (0x32f7, (1660, 1)),
-    (0xfe72, (3834, 2)),
-    (0x1e04c, (5315, 1)),
-    (0xfef0, (3982, 1)),
-    (0x2f0f, (872, 1)),
-    (0x2f88, (993, 1)),
-    (0x1d4cd, (4484, 1)),
-    (0x1d54b, (4599, 1)),
-    (0x1d7ba, (5219, 1)),
-    (0x1fbf, (240, 2)),
-    (0xffeb, (4231, 1)),
-    (0x1d5ee, (4761, 1)),
-    (0xff72, (4122, 1)),
-    (0x1f218, (5660, 1)),
-    (0x3234, (1367, 3)),
-    (0x1d7ef, (5270, 1)),
-    (0x1d425, (4328, 1)),
-    (0x1d6ce, (4983, 1)),
-    (0x1ee83, (5441, 1)),
-    (0x1e04f, (5318, 1)),
-    (0x1d483, (4421, 1)),
-    (0xff73, (4123, 1)),
-    (0xff1c, (4036, 1)),
-    (0x33f2, (2396, 3)),
-    (0x217b, (536, 3)),
-    (0x2004, (279, 1)),
-    (0x1d6a4, (4943, 1)),
-    (0x326f, (1468, 2)),
-    (0xfc57, (2852, 2)),
-    (0x32f2, (1655, 1)),
-    (0x1d646, (4849, 1)),
-    (0x1d412, (4309, 1)),
-    (0x249a, (703, 3)),
-    (0x1f127, (5581, 3)),
-    (0x330b, (1714, 3)),
-    (0xfc5c, (2862, 2)),
-    (0x2f46, (927, 1)),
-    (0x1d40a, (4301, 1)),
-    (0x24d8, (821, 1)),
-    (0x1d77e, (5159, 1)),
-    (0xfd3a, (3328, 2)),
-    (0x1d64, (189, 1)),
-    (0x315e, (1129, 1)),
-    (0x319d, (1189, 1)),
-    (0x1ee3b, (5399, 1)),
-    (0xfb26, (2483, 1)),
-    (0x1d4fe, (4533, 1)),
-    (0x2480, (626, 4)),
-    (0x216e, (511, 1)),
-    (0x1e03b, (5298, 1)),
-    (0x1d6b6, (4959, 1)),
-    (0xbd, (18, 3)),
-    (0x1d42, (156, 1)),
-    (0x24a1, (724, 3)),
-    (0x33df, (2348, 3)),
-    (0xffb5, (4189, 1)),
-    (0x1e042, (5305, 1)),
-    (0xfc9a, (3001, 3)),
-    (0x1d5eb, (4758, 1)),
-    (0xfcbf, (3077, 2)),
-    (0xfd58, (3360, 3)),
-    (0x2464, (560, 1)),
-    (0xfe3c, (3782, 1)),
-    (0x3246, (1417, 1)),
-    (0x2a0c, (840, 4)),
-    (0xfdb4, (3630, 3)),
-    (0xfd96, (3540, 3)),
-    (0x1d407, (4298, 1)),
-    (0x3257, (1434, 2)),
-    (0x207a, (329, 1)),
-    (0x3d5, (102, 1)),
-    (0x336b, (2065, 3)),
-    (0x32d0, (1621, 1)),
-    (0x1eeae, (5476, 1)),
-    (0x1d5d5, (4736, 1)),
-    (0x1eead, (5475, 1)),
-    (0x2f1a, (883, 1)),
-    (0xfee0, (3966, 1)),
-    (0x2fa3, (1020, 1)),
-    (0x1eeb2, (5480, 1)),
-    (0xfbf5, (2648, 3)),
-    (0x1e067, (5342, 1)),
-    (0x3174, (1151, 1)),
-    (0xfbe0, (2605, 1)),
-    (0x1ee51, (5407, 1)),
-    (0xff3f, (4071, 1)),
-    (0x3165, (1136, 1)),
-    (0x323d, (1394, 3)),
-    (0x1d72d, (5078, 1)),
-    (0x1d79b, (5188, 1)),
-    (0x1d4b6, (4464, 1)),
-    (0xfc54, (2846, 2)),
-    (0x2fb0, (1033, 1)),
-    (0x3228, (1331, 3)),
-    (0x1d3a, (149, 1)),
-    (0x3213, (1254, 4)),
-    (0x1e065, (5340, 1)),
-    (0x1d4ff, (4534, 1)),
-    (0x1d734, (5085, 1)),
-    (0x1d78b, (5172, 1)),
-    (0xa69d, (2439, 1)),
-    (0x2f96, (1007, 1)),
-    (0xfc39, (2792, 2)),
-    (0x1f14c, (5629, 2)),
-    (0xfedb, (3961, 1)),
-    (0x2495, (688, 3)),
-    (0x1f124, (5572, 3)),
-    (0x1d7dc, (5251, 1)),
-    (0x1e053, (5322, 1)),
-    (0x2f9a, (1011, 1)),
-    (0xfd61, (3387, 3)),
-    (0xfd02, (3216, 2)),
-    (0x1eeab, (5473, 1)),
-    (0x1079f, (4264, 1)),
-    (0x1ee86, (5444, 1)),
-    (0xfd9b, (3555, 3)),
-    (0x1d50f, (4547, 1)),
-    (0xfc8e, (2974, 2)),
-    (0x1d513, (4551, 1)),
-    (0x1d54f, (4603, 1)),
-    (0x2173, (519, 2)),
-    (0x2f5a, (947, 1)),
-    (0x1d78c, (5173, 1)),
-    (0x1d767, (5136, 1)),
-    (0xfdab, (3603, 3)),
-    (0x2f01, (858, 1)),
-    (0xfc3f, (2804, 2)),
-    (0x33c6, (2288, 4)),
-    (0x1d6c0, (4969, 1)),
-    (0xfb98, (2561, 1)),
-    (0x3151, (1116, 1)),
-    (0x1ee09, (5357, 1)),
-    (0xfd8a, (3510, 3)),
-    (0xff4d, (4085, 1)),
-    (0x1d729, (5074, 1)),
-    (0xfeb4, (3922, 1)),
-    (0xfba4, (2573, 2)),
-    (0x1d6b9, (4962, 1)),
-    (0x1d6d0, (4985, 1)),
-    (0x318d, (1176, 1)),
-    (0x1f10a, (5510, 2)),
-    (0x2017, (287, 2)),
-    (0x1f121, (5563, 3)),
-    (0x1d41f, (4322, 1)),
-    (0x1d415, (4312, 1)),
-    (0x319b, (1187, 1)),
-    (0x1d6dd, (4998, 1)),
-    (0x337f, (2115, 4)),
-    (0x3260, (1452, 1)),
-    (0x1fbf6, (5731, 1)),
-    (0xfb7b, (2532, 1)),
-    (0x1d752, (5115, 1)),
-    (0x2f50, (937, 1)),
-    (0xfebf, (3933, 1)),
-    (0x1d658, (4867, 1)),
-    (0xfdfa, (3727, 18)),
-    (0x336e, (2074, 3)),
-    (0xff51, (4089, 1)),
-    (0xfc16, (2722, 2)),
-    (0x1d5d, (182, 1)),
-    (0x24b8, (789, 1)),
-    (0xab5d, (2447, 1)),
-    (0x1d41b, (4318, 1)),
-    (0xfb68, (2513, 1)),
-    (0x1f103, (5496, 2)),
-    (0x2f53, (940, 1)),
-    (0x3352, (1996, 2)),
-    (0x1d5f9, (4772, 1)),
-    (0x1d494, (4438, 1)),
-    (0x1d52c, (4574, 1)),
-    (0x24e6, (835, 1)),
-    (0x2faf, (1032, 1)),
-    (0x32c1, (1586, 2)),
-    (0x2b3, (65, 1)),
-    (0xfec1, (3935, 1)),
-    (0x1f147, (5622, 1)),
-    (0x384, (90, 2)),
-    (0x24ba, (791, 1)),
-    (0xff87, (4143, 1)),
-    (0x1d669, (4884, 1)),
-    (0xff35, (4061, 1)),
-    (0xfefb, (4005, 2)),
-    (0x1d7fa, (5281, 1)),
-    (0x1d50, (169, 1)),
-    (0xfef2, (3984, 1)),
-    (0x3245, (1416, 1)),
-    (0x1d78a, (5171, 1)),
-    (0xfb75, (2526, 1)),
-    (0x1ee91, (5454, 1)),
-    (0x33e9, (2369, 3)),
-    (0x2139, (421, 1)),
-    (0x3258, (1436, 2)),
-    (0x3287, (1512, 1)),
-    (0x317d, (1160, 1)),
-    (0x24ae, (763, 3)),
-    (0xff98, (4160, 1)),
-    (0x1d596, (4673, 1)),
-    (0x1d6b0, (4953, 1)),
-    (0x1e069, (5344, 1)),
-    (0x1f22c, (5680, 1)),
-    (0xff42, (4074, 1)),
-    (0xffbb, (4195, 1)),
-    (0xff1d, (4037, 1)),
-    (0x1d503, (4538, 1)),
-    (0x1d6e1, (5002, 1)),
-    (0xfcc7, (3093, 2)),
-    (0xff60, (4104, 1)),
-    (0x1ee5d, (5413, 1)),
-    (0x1f115, (5527, 3)),
-    (0x1d4c9, (4480, 1)),
-    (0x1d567, (4626, 1)),
-    (0x1d67e, (4905, 1)),
-    (0x33ed, (2381, 3)),
-    (0x1e068, (5343, 1)),
-    (0xfda6, (3588, 3)),
-    (0x33ca, (2299, 2)),
-    (0x1d7f8, (5279, 1)),
-    (0x33ef, (2387, 3)),
-    (0xfd50, (3336, 3)),
-    (0x248e, (670, 2)),
-    (0xfcd4, (3119, 2)),
-    (0xfe98, (3894, 1)),
-    (0x32a7, (1544, 1)),
-    (0xffa9, (4177, 1)),
-    (0x2172, (516, 3)),
-    (0x1d5a, (179, 1)),
-    (0xff27, (4047, 1)),
-    (0x1dad, (215, 1)),
-    (0x1d766, (5135, 1)),
-    (0x24df, (828, 1)),
-    (0xfeae, (3916, 1)),
-    (0xfe35, (3775, 1)),
-    (0x1d5a3, (4686, 1)),
-    (0x1d650, (4859, 1)),
-    (0x1d62a, (4821, 1)),
-    (0x1d4dd, (4500, 1)),
-    (0xff5b, (4099, 1)),
-    (0x1d464, (4390, 1)),
-    (0xfc34, (2782, 2)),
-    (0x1d6bc, (4965, 1)),
-    (0x1d71c, (5061, 1)),
-    (0x2128, (409, 1)),
-    (0xfb74, (2525, 1)),
-    (0xfced, (3171, 2)),
-    (0xa69c, (2438, 1)),
-    (0x2a74, (844, 3)),
-    (0xfef8, (3996, 3)),
-    (0x1d63a, (4837, 1)),
-    (0xfcb5, (3057, 2)),
-    (0x1d435, (4344, 1)),
-    (0x1ee69, (5420, 1)),
-    (0x2036, (301, 2)),
-    (0x1fbd, (238, 2)),
-    (0x1d5fb, (4774, 1)),
-    (0x1d5b9, (4708, 1)),
-    (0xfd57, (3357, 3)),
-    (0x318b, (1174, 1)),
-    (0xfdf5, (3708, 4)),
-    (0xfe7c, (3850, 2)),
-    (0xfc9b, (3004, 3)),
-    (0xfd14, (3252, 2)),
-    (0x1d51b, (4558, 1)),
-    (0x1ee67, (5418, 1)),
-    (0x338a, (2142, 2)),
-    (0xff40, (4072, 1)),
-    (0xfb50, (2489, 1)),
-    (0x1d4c7, (4478, 1)),
-    (0x1079c, (4261, 1)),
-    (0x1ee17, (5371, 1)),
-    (0x1f190, (5644, 2)),
-    (0x1d5f0, (4763, 1)),
-    (0x32b3, (1558, 2)),
-    (0x1d7d5, (5244, 1)),
-    (0xfe64, (3823, 1)),
-    (0xfb8e, (2551, 1)),
-    (0xfc07, (2692, 2)),
-    (0xfb58, (2497, 1)),
-    (0x1d75c, (5125, 1)),
-    (0x2168, (501, 2)),
-    (0x1d745, (5102, 1)),
-    (0x1ee4e, (5405, 1)),
-    (0x2fcc, (1061, 1)),
-    (0x1d781, (5162, 1)),
-    (0x313c, (1095, 1)),
-    (0x1fde, (259, 3)),
-    (0x2fbd, (1046, 1)),
-    (0x1d5d4, (4735, 1)),
-    (0x1d500, (4535, 1)),
-    (0xfc80, (2946, 2)),
-    (0x33a3, (2199, 3)),
-    (0x1d502, (4537, 1)),
-    (0x32d1, (1622, 1)),
-    (0xfd97, (3543, 3)),
-    (0x1d489, (4427, 1)),
-    (0xffd6, (4215, 1)),
-    (0xfcc3, (3085, 2)),
-    (0x2493, (682, 3)),
-    (0x1d6c6, (4975, 1)),
-    (0x208d, (348, 1)),
-    (0xfb06, (2465, 2)),
-    (0x319c, (1188, 1)),
-    (0x1da1, (203, 1)),
-    (0xff1b, (4035, 1)),
-    (0xfee1, (3967, 1)),
-    (0xfc65, (2887, 3)),
-    (0xfc14, (2718, 2)),
-    (0xfea2, (3904, 1)),
-    (0xfb91, (2554, 1)),
-    (0x3350, (1989, 3)),
-    (0x1d6c8, (4977, 1)),
-    (0x1d677, (4898, 1)),
-    (0x10783, (4237, 1)),
-    (0x1da3, (205, 1)),
-    (0x1d51, (170, 1)),
-    (0x3261, (1453, 1)),
-    (0xfc78, (2930, 2)),
-    (0x3363, (2041, 3)),
-    (0x2f3c, (917, 1)),
-    (0x2f27, (896, 1)),
-    (0x32a3, (1540, 1)),
-    (0x1fbf5, (5730, 1)),
-    (0x2b4, (66, 1)),
-    (0x3286, (1511, 1)),
-    (0x2f17, (880, 1)),
-    (0x1d5cc, (4727, 1)),
-    (0x1f230, (5684, 1)),
-    (0xfb03, (2457, 3)),
-    (0x24ce, (811, 1)),
-    (0x2f30, (905, 1)),
-    (0xfd60, (3384, 3)),
-    (0x1f123, (5569, 3)),
-    (0x1d532, (4580, 1)),
-    (0x1f21e, (5666, 1)),
-    (0x3353, (1998, 4)),
-    (0x1d9b, (197, 1)),
-    (0x1f104, (5498, 2)),
-    (0x1f21b, (5663, 1)),
-    (0xfe52, (3806, 1)),
-    (0xfd3b, (3330, 2)),
-    (0x2f61, (954, 1)),
-    (0xfc00, (2673, 3)),
-    (0x1ee71, (5427, 1)),
-    (0x3f0, (104, 1)),
-    (0x1d7e4, (5259, 1)),
-    (0xfc5d, (2864, 2)),
-    (0x1d670, (4891, 1)),
-    (0xfe33, (3773, 1)),
-    (0x1d57d, (4648, 1)),
-    (0xfe6b, (3829, 1)),
-    (0x3233, (1364, 3)),
-    (0x2f21, (890, 1)),
-    (0xfc15, (2720, 2)),
-    (0x1d55f, (4618, 1)),
-    (0xfd64, (3396, 3)),
-    (0x1d49a, (4444, 1)),
-    (0xfe7b, (3848, 2)),
-    (0x1d762, (5131, 1)),
-    (0x1d6e0, (5001, 1)),
-    (0xfeb5, (3923, 1)),
-    (0x1d46b, (4397, 1)),
-    (0x1db6, (224, 1)),
-    (0x3141, (1100, 1)),
-    (0xfe9c, (3898, 1)),
-    (0x1d484, (4422, 1)),
-    (0x329d, (1534, 1)),
-    (0x1d530, (4578, 1)),
-    (0xfd32, (3312, 2)),
-    (0xfc5f, (2869, 3)),
-    (0x1ee7b, (5435, 1)),
-    (0xf0c, (128, 1)),
-    (0x1d56f, (4634, 1)),
-    (0x1d6aa, (4947, 1)),
-    (0x33dc, (2341, 2)),
-    (0x24e3, (832, 1)),
-    (0x1f22e, (5682, 1)),
-    (0x1d4b7, (4465, 1)),
-    (0x1d5d1, (4732, 1)),
-    (0x1d7a6, (5199, 1)),
-    (0x2f4e, (935, 1)),
-    (0x1d6ae, (4951, 1)),
-    (0x3f2, (106, 1)),
-    (0x3280, (1505, 1)),
-    (0x1d3e, (152, 1)),
-    (0xfbef, (2630, 3)),
-    (0x1f102, (5494, 2)),
-    (0xfe54, (3807, 1)),
-    (0x3263, (1455, 1)),
-    (0xff9b, (4163, 1)),
-    (0x1d584, (4655, 1)),
-    (0x3351, (1992, 4)),
-    (0x3156, (1121, 1)),
-    (0xfbf2, (2639, 3)),
-    (0xfb02, (2455, 2)),
-    (0x317b, (1158, 1)),
-    (0x314c, (1111, 1)),
-    (0x1c6, (41, 3)),
-    (0x1d73f, (5096, 1)),
-    (0x1ee4d, (5404, 1)),
-    (0x1d53, (172, 1)),
-    (0x33d1, (2313, 2)),
-    (0x1d58a, (4661, 1)),
-    (0xfd83, (3489, 3)),
-    (0x2178, (531, 2)),
-    (0x1d751, (5114, 1)),
-    (0xfd77, (3453, 3)),
-    (0x1d479, (4411, 1)),
-    (0x215d, (475, 3)),
-    (0xfd87, (3501, 3)),
-    (0x318a, (1173, 1)),
-    (0x1d43f, (4354, 1)),
-    (0x2fcd, (1062, 1)),
-    (0x1d4f0, (4519, 1)),
-    (0x1d59, (178, 1)),
-    (0x1d65f, (4874, 1)),
-    (0x3393, (2162, 3)),
-    (0x1ee92, (5455, 1)),
-    (0xa770, (2440, 1)),
-    (0xfd0b, (3234, 2)),
-    (0x208a, (345, 1)),
-    (0xfe80, (3858, 1)),
-    (0x1d7f3, (5274, 1)),
-    (0xfd0d, (3238, 2)),
-    (0x1d54a, (4598, 1)),
-    (0x1d699, (4932, 1)),
-    (0xfe92, (3888, 1)),
-    (0xfe4c, (3799, 2)),
-    (0x1d653, (4862, 1)),
-    (0x1e04b, (5314, 1)),
-    (0x1d5b8, (4707, 1)),
-    (0x1d45a, (4380, 1)),
-    (0x335b, (2024, 2)),
-    (0x1d789, (5170, 1)),
-    (0xa7f2, (2441, 1)),
-    (0x1eea3, (5467, 1)),
-    (0xff7c, (4132, 1)),
-    (0x2176, (524, 3)),
-    (0xffa6, (4174, 1)),
-    (0xff57, (4095, 1)),
-    (0x1ee79, (5433, 1)),
-    (0x1d5ae, (4697, 1)),
-    (0x1d46f, (4401, 1)),
-    (0x2da, (75, 2)),
-    (0x2f4d, (934, 1)),
-    (0xfdc5, (3681, 3)),
-    (0x3384, (2127, 2)),
-    (0x24c0, (797, 1)),
-    (0x1d57c, (4647, 1)),
-    (0x1d7b0, (5209, 1)),
-    (0x1d5cb, (4726, 1)),
-    (0x1d783, (5164, 1)),
-    (0x1d4e8, (4511, 1)),
-    (0x1d58e, (4665, 1)),
-    (0xff0d, (4021, 1)),
-    (0x1d644, (4847, 1)),
-    (0x24c4, (801, 1)),
-    (0x2f52, (939, 1)),
-    (0x1d68e, (4921, 1)),
-    (0x1d50d, (4545, 1)),
-    (0xfb6b, (2516, 1)),
-    (0x2fcb, (1060, 1)),
-    (0xff32, (4058, 1)),
-    (0xffab, (4179, 1)),
-    (0x316c, (1143, 1)),
-    (0x2070, (321, 1)),
-    (0xfd8d, (3519, 3)),
-    (0xfe74, (3836, 2)),
-    (0x2131, (414, 1)),
-    (0xff64, (4108, 1)),
-    (0x339b, (2180, 2)),
-    (0x1e06a, (5345, 1)),
-    (0x1f224, (5672, 1)),
-    (0x1d405, (4296, 1)),
-    (0xff49, (4081, 1)),
-    (0xff37, (4063, 1)),
-    (0x2075, (324, 1)),
-    (0xfebe, (3932, 1)),
-    (0xfee8, (3974, 1)),
-    (0xa7f8, (2444, 1)),
-    (0x1d7be, (5223, 1)),
-    (0x1d9d, (199, 1)),
-    (0x107b6, (4286, 1)),
-    (0x2f79, (978, 1)),
-    (0x1f212, (5653, 1)),
-    (0xfcdf, (3141, 3)),
-    (0x1d5a1, (4684, 1)),
-    (0xfcc9, (3097, 2)),
-    (0x1ee11, (5365, 1)),
-    (0x339f, (2188, 3)),
-    (0xfb83, (2540, 1)),
-    (0x1f131, (5600, 1)),
-    (0xff08, (4016, 1)),
-    (0xfe9e, (3900, 1)),
-    (0xfe39, (3779, 1)),
-    (0x3386, (2131, 2)),
-    (0xfd6f, (3429, 3)),
-    (0x1d58b, (4662, 1)),
-    (0x1d5f3, (4766, 1)),
-    (0x1d5f, (184, 1)),
-    (0xfc30, (2774, 2)),
-    (0x33fa, (2420, 3)),
-    (0x1ee5b, (5412, 1)),
-    (0x2478, (599, 3)),
-    (0x1d747, (5104, 1)),
-    (0xfcf8, (3196, 2)),
-    (0x1d667, (4882, 1)),
-    (0x1d796, (5183, 1)),
-    (0x2011, (286, 1)),
-    (0x1f144, (5619, 1)),
-    (0xfd3d, (3334, 2)),
-    (0x3270, (1470, 2)),
-    (0x326c, (1464, 1)),
-    (0x1d5c8, (4723, 1)),
-    (0x1d68c, (4919, 1)),
-    (0xfdfb, (3745, 8)),
-    (0xfdb6, (3636, 3)),
-    (0x2095, (355, 1)),
-    (0x3219, (1278, 4)),
-    (0x2499, (700, 3)),
-    (0x1ee52, (5408, 1)),
-    (0x2dc, (79, 2)),
-    (0x210e, (387, 1)),
-    (0x1d5ce, (4729, 1)),
-    (0x1d687, (4914, 1)),
-    (0x1d702, (5035, 1)),
-    (0x2093, (353, 1)),
-    (0x1d615, (4800, 1)),
-    (0x2f0c, (869, 1)),
-    (0x3185, (1168, 1)),
-    (0x1d42a, (4333, 1)),
-    (0x247b, (608, 3)),
-    (0xfeee, (3980, 1)),
-    (0x10785, (4239, 1)),
-    (0x209a, (360, 1)),
-    (0xfb72, (2523, 1)),
-    (0x33e2, (2355, 2)),
-    (0xfc75, (2924, 2)),
-    (0x24d2, (815, 1)),
-    (0x1e05b, (5330, 1)),
-    (0x212c, (410, 1)),
-    (0x247f, (622, 4)),
-    (0x1d45e, (4384, 1)),
-    (0xfee3, (3969, 1)),
-    (0x2f19, (882, 1)),
-    (0x321e, (1301, 6)),
-    (0x2f05, (862, 1)),
-    (0xfb16, (2473, 2)),
-    (0x3142, (1101, 1)),
-    (0x107a5, (4270, 1)),
-    (0x2001, (276, 1)),
-    (0xfc84, (2954, 2)),
-    (0x1d55c, (4615, 1)),
-    (0x1d7c4, (5229, 1)),
-    (0x2fa0, (1017, 1)),
-    (0x1f143, (5618, 1)),
-    (0x2f8f, (1000, 1)),
-    (0x24c9, (806, 1)),
-    (0x32c5, (1594, 2)),
-    (0x248f, (672, 2)),
-    (0xff84, (4140, 1)),
-    (0x3324, (1820, 4)),
-    (0xfcb7, (3061, 2)),
-    (0x1e041, (5304, 1)),
-    (0x24d9, (822, 1)),
-    (0xfd16, (3256, 2)),
-    (0x3251, (1422, 2)),
-    (0xfc92, (2982, 2)),
-    (0xfe8f, (3885, 1)),
-    (0xfdc4, (3678, 3)),
-    (0x2f1c, (885, 1)),
-    (0x1f22b, (5679, 1)),
-    (0x1d5db, (4742, 1)),
-    (0x2f41, (922, 1)),
-    (0xfd1b, (3266, 2)),
-    (0x3217, (1270, 4)),
-    (0x1f250, (5723, 1)),
-    (0x3321, (1809, 5)),
-    (0x2f40, (921, 1)),
-    (0x2fca, (1059, 1)),
-    (0x107a6, (4271, 1)),
-    (0x1d589, (4660, 1)),
-    (0x3136, (1089, 1)),
-    (0xfc7d, (2940, 2)),
-    (0xfb87, (2544, 1)),
-    (0xfc0e, (2706, 2)),
-    (0x1f106, (5502, 2)),
-    (0x2f65, (958, 1)),
-    (0xfe56, (3809, 1)),
-    (0xfb9c, (2565, 1)),
-    (0xfee4, (3970, 1)),
-    (0x1ee06, (5354, 1)),
-    (0x1d6d2, (4987, 1)),
-    (0x1d45d, (4383, 1)),
-    (0x1d660, (4875, 1)),
-    (0x1f216, (5658, 1)),
-    (0x1d400, (4291, 1)),
-    (0xfb13, (2467, 2)),
-    (0xfc6f, (2912, 2)),
-    (0xfca7, (3029, 2)),
-    (0xfe13, (3760, 1)),
-    (0xfe4b, (3797, 2)),
-    (0x1d78d, (5174, 1)),
-    (0xff2e, (4054, 1)),
-    (0x2f6b, (964, 1)),
-    (0xfbe6, (2611, 1)),
-    (0x1d4f6, (4525, 1)),
-    (0x107a8, (4273, 1)),
-    (0x328b, (1516, 1)),
-    (0x1d5c, (181, 1)),
-    (0x246a, (567, 2)),
-    (0xfcb9, (3065, 2)),
-    (0xfbd6, (2594, 1)),
-    (0x33f7, (2411, 3)),
-    (0xfd08, (3228, 2)),
-    (0x32c7, (1598, 2)),
-    (0x1d684, (4911, 1)),
-    (0x1eea1, (5465, 1)),
-    (0xfd78, (3456, 3)),
-    (0x1ee80, (5438, 1)),
-    (0x1f225, (5673, 1)),
-    (0x1eeb6, (5484, 1)),
-    (0x1ee0c, (5360, 1)),
-    (0xab5c, (2446, 1)),
-    (0xfb5c, (2501, 1)),
-    (0x322e, (1349, 3)),
-    (0xfc4b, (2828, 2)),
-    (0x24c7, (804, 1)),
-    (0x3360, (2034, 2)),
-    (0x1d737, (5088, 1)),
-    (0x33d0, (2311, 2)),
-    (0xfc90, (2978, 2)),
-    (0x1eeb0, (5478, 1)),
-    (0xfda1, (3573, 3)),
-    (0x3375, (2093, 2)),
-    (0x2f00, (857, 1)),
-    (0xfb9a, (2563, 1)),
-    (0x322a, (1337, 3)),
-    (0x32a9, (1546, 1)),
-    (0x1d472, (4404, 1)),
-    (0x1d4d4, (4491, 1)),
-    (0x1f221, (5669, 1)),
-    (0xff7b, (4131, 1)),
-    (0x1d46, (160, 1)),
-    (0xffb1, (4185, 1)),
-    (0x1d436, (4345, 1)),
-    (0x3298, (1529, 1)),
-    (0xfc43, (2812, 2)),
-    (0xfc31, (2776, 2)),
-    (0x1d679, (4900, 1)),
-    (0x315b, (1126, 1)),
-    (0x1d712, (5051, 1)),
-    (0xfe99, (3895, 1)),
-    (0xfed1, (3951, 1)),
-    (0x339a, (2178, 2)),
-    (0x1d4a6, (4451, 1)),
-    (0xfbd5, (2593, 1)),
-    (0x210a, (383, 1)),
-    (0xfb96, (2559, 1)),
-    (0x2f8e, (999, 1)),
-    (0x1d7a9, (5202, 1)),
-    (0xfb5e, (2503, 1)),
-    (0x10793, (4252, 1)),
-    (0x2f56, (943, 1)),
-    (0x207d, (332, 1)),
-    (0x1f227, (5675, 1)),
-    (0xfc94, (2986, 2)),
-    (0x1d4d3, (4490, 1)),
-    (0xfd67, (3405, 3)),
-    (0xff09, (4017, 1)),
-    (0x1d5a4, (4687, 1)),
-    (0x1e06d, (5348, 1)),
-    (0x1d39, (148, 1)),
-    (0x3210, (1242, 4)),
-    (0x1d721, (5066, 1)),
-    (0xff91, (4153, 1)),
-    (0x1d62d, (4824, 1)),
-    (0x1d7c0, (5225, 1)),
-    (0x1f213, (5654, 2)),
-    (0x1f130, (5599, 1)),
-    (0x1d4d5, (4492, 1)),
-    (0x1db2, (220, 1)),
-    (0x2f98, (1009, 1)),
-    (0x1d56a, (4629, 1)),
-    (0x2477, (596, 3)),
-    (0x1d526, (4568, 1)),
-    (0x2475, (590, 3)),
-    (0x107b8, (4288, 1)),
-    (0x1f242, (5702, 3)),
-    (0x587, (110, 2)),
-    (0x1d7b3, (5212, 1)),
-    (0x2076, (325, 1)),
-    (0x1d6f2, (5019, 1)),
-    (0xfdbc, (3654, 3)),
-    (0x24a6, (739, 3)),
-    (0x33d4, (2320, 2)),
-    (0x1d4d8, (4495, 1)),
-    (0x320c, (1228, 3)),
-    (0x1d57b, (4646, 1)),
-    (0x1ee15, (5369, 1)),
-    (0x24a4, (733, 3)),
-    (0x2149, (434, 1)),
-    (0xfbf8, (2657, 3)),
-    (0x2f04, (861, 1)),
-    (0x1d5ca, (4725, 1)),
-    (0x1d57, (176, 1)),
-    (0xff22, (4042, 1)),
-    (0x1d68b, (4918, 1)),
-    (0x1d7b5, (5214, 1)),
-    (0x1d4c8, (4479, 1)),
-    (0x2088, (343, 1)),
-    (0x3340, (1929, 5)),
-    (0x1d507, (4541, 1)),
-    (0x325d, (1446, 2)),
-    (0x1d5fe, (4777, 1)),
-    (0x317c, (1159, 1)),
-    (0x1ee47, (5401, 1)),
-    (0x33b0, (2242, 2)),
-    (0x1d786, (5167, 1)),
-    (0xfc83, (2952, 2)),
-    (0x1d444, (4359, 1)),
-    (0x32f1, (1654, 1)),
-    (0x3152, (1117, 1)),
-    (0xff13, (4027, 1)),
-    (0xfe38, (3778, 1)),
-    (0x1d4ec, (4515, 1)),
-    (0xfd7e, (3474, 3)),
-    (0x336f, (2077, 3)),
-    (0x3d0, (95, 1)),
-    (0x1d7f1, (5272, 1)),
-    (0x1f251, (5724, 1)),
-    (0x1db3, (221, 1)),
-    (0x1d514, (4552, 1)),
-    (0x33fb, (2423, 3)),
-    (0xfbf1, (2636, 3)),
-    (0xfd84, (3492, 3)),
-    (0x1fbf3, (5728, 1)),
-    (0x328a, (1515, 1)),
-    (0x24ab, (754, 3)),
-    (0x1d7e7, (5262, 1)),
-    (0x335c, (2026, 2)),
-    (0xff85, (4141, 1)),
-    (0x1d4bd, (4469, 1)),
-    (0xfdb5, (3633, 3)),
-    (0xfdf2, (3696, 4)),
-    (0xfe83, (3863, 2)),
-    (0x1fdd, (256, 3)),
-    (0xfc7b, (2936, 2)),
-    (0x319a, (1186, 1)),
-    (0x3275, (1480, 2)),
-    (0xfd20, (3276, 2)),
-    (0x1d402, (4293, 1)),
-    (0xff67, (4111, 1)),
-    (0x1d7dd, (5252, 1)),
-    (0xfc2e, (2770, 2)),
-    (0xff04, (4012, 1)),
-    (0x1eeb1, (5479, 1)),
-    (0x3317, (1765, 5)),
-    (0x3367, (2053, 3)),
-    (0x1d652, (4861, 1)),
-    (0x337e, (2113, 2)),
-    (0x1d9c, (198, 1)),
-    (0x1079e, (4263, 1)),
-    (0x2f5f, (952, 1)),
-    (0xfea6, (3908, 1)),
-    (0x1d66, (191, 1)),
-    (0x1ee90, (5453, 1)),
-    (0x1d723, (5068, 1)),
-    (0x247e, (618, 4)),
-    (0x216b, (506, 3)),
-    (0x1d74c, (5109, 1)),
-    (0x1d68d, (4920, 1)),
-    (0x3211, (1246, 4)),
-    (0x1d77f, (5160, 1)),
-    (0xff86, (4142, 1)),
-    (0x2f18, (881, 1)),
-    (0x3347, (1953, 5)),
-    (0xfc72, (2918, 2)),
-    (0x1d496, (4440, 1)),
-    (0x1f129, (5587, 3)),
-    (0x210d, (386, 1)),
-    (0x1d40e, (4305, 1)),
-    (0x1d4e0, (4503, 1)),
-    (0x1d571, (4636, 1)),
-    (0x200a, (285, 1)),
-    (0x1d53d, (4590, 1)),
-    (0x2099, (359, 1)),
-    (0x2a75, (847, 2)),
-    (0xfe40, (3786, 1)),
-    (0xfebd, (3931, 1)),
-    (0x1d44b, (4366, 1)),
-    (0x32d3, (1624, 1)),
-    (0x1d666, (4881, 1)),
-    (0xfbaa, (2581, 1)),
-    (0x2f7e, (983, 1)),
-    (0xff77, (4127, 1)),
-    (0xff25, (4045, 1)),
-    (0x1d693, (4926, 1)),
-    (0xfeb6, (3924, 1)),
-    (0x1d695, (4928, 1)),
-    (0xffd5, (4214, 1)),
-    (0x1d491, (4435, 1)),
-    (0x3359, (2020, 2)),
-    (0x1d57f, (4650, 1)),
-    (0xffd7, (4216, 1)),
-    (0x1ee32, (5393, 1)),
-    (0x3267, (1459, 1)),
-    (0xfd30, (3308, 2)),
-    (0xfbed, (2624, 3)),
-    (0xfd94, (3534, 3)),
-    (0x3278, (1486, 2)),
-    (0xff97, (4159, 1)),
-    (0x1d686, (4913, 1)),
-    (0x1f108, (5506, 2)),
-    (0x2f2c, (901, 1)),
-    (0xfcd1, (3113, 2)),
-    (0x2468, (564, 1)),
-    (0xfe3e, (3784, 1)),
-    (0xff66, (4110, 1)),
-    (0xff14, (4028, 1)),
-    (0x1d74d, (5110, 1)),
-    (0x32f5, (1658, 1)),
-    (0x33cd, (2305, 2)),
-    (0x2469, (565, 2)),
-    (0x32b4, (1560, 2)),
-    (0x1d65b, (4870, 1)),
-    (0x1f113, (5521, 3)),
-    (0x2155, (451, 3)),
-    (0x1daa, (212, 1)),
-    (0xfed6, (3956, 1)),
-    (0x1d5bd, (4712, 1)),
-    (0x1e045, (5308, 1)),
-    (0xfdf3, (3700, 4)),
-    (0xfb8c, (2549, 1)),
-    (0x1d7d4, (5243, 1)),
-    (0x2b8, (70, 1)),
-    (0x1d565, (4624, 1)),
-    (0x2fd5, (1070, 1)),
-    (0x1d4af, (4457, 1)),
-    (0xfcf2, (3181, 3)),
-    (0x1f142, (5617, 1)),
-    (0x3195, (1181, 1)),
-    (0x1d56c, (4631, 1)),
-    (0xfd0e, (3240, 2)),
-    (0x1eeb7, (5485, 1)),
-    (0xff54, (4092, 1)),
-    (0x678, (118, 2)),
-    (0xfbee, (2627, 3)),
-    (0x1d540, (4592, 1)),
-    (0x33be, (2270, 2)),
-    (0xfead, (3915, 1)),
-    (0x1d40c, (4303, 1)),
-    (0xfb23, (2480, 1)),
-    (0xfee6, (3972, 1)),
-    (0xffa1, (4169, 1)),
-    (0x1d674, (4895, 1)),
-    (0x1d36, (145, 1)),
-    (0x2106, (377, 3)),
-    (0x3231, (1358, 3)),
-    (0x1ee59, (5411, 1)),
-    (0x3338, (1898, 4)),
-    (0x1d7c3, (5228, 1)),
-    (0x107b5, (4285, 1)),
-    (0x2b0, (62, 1)),
-    (0xfc36, (2786, 2)),
-    (0x1f234, (5688, 1)),
-    (0x1d473, (4405, 1)),
-    (0x313f, (1098, 1)),
-    (0xfd7b, (3465, 3)),
-    (0x3154, (1119, 1)),
-    (0x1ee31, (5392, 1)),
-    (0xffae, (4182, 1)),
-    (0x1d4b, (165, 1)),
-    (0x1ee4b, (5403, 1)),
-    (0x1d672, (4893, 1)),
-    (0x313b, (1094, 1)),
-    (0x1d7ae, (5207, 1)),
-    (0xfd35, (3318, 2)),
-    (0x3200, (1192, 3)),
-    (0xff19, (4033, 1)),
-    (0x1d538, (4586, 1)),
-    (0x1f105, (5500, 2)),
-    (0x2f3a, (915, 1)),
-    (0xff2d, (4053, 1)),
-    (0x1ee03, (5352, 1)),
-    (0x2fc5, (1054, 1)),
-    (0xfc19, (2728, 2)),
-    (0xfb27, (2484, 1)),
-    (0x2f31, (906, 1)),
-    (0x2a76, (849, 3)),
-    (0x1d655, (4864, 1)),
-    (0x1d47e, (4416, 1)),
-    (0x246f, (577, 2)),
-    (0x2f13, (876, 1)),
-    (0x1f233, (5687, 1)),
-    (0x1d59f, (4682, 1)),
-    (0x2497, (694, 3)),
-    (0x2e9f, (855, 1)),
-    (0x32dd, (1634, 1)),
-    (0xfd28, (3292, 2)),
-    (0x1d7bb, (5220, 1)),
-    (0x1d7d2, (5241, 1)),
-    (0x32e1, (1638, 1)),
-    (0x1d69b, (4934, 1)),
-    (0x107ac, (4277, 1)),
-    (0xfc93, (2984, 2)),
-    (0x2f34, (909, 1)),
-    (0x2490, (674, 2)),
-    (0xfb6e, (2519, 1)),
-    (0x1f12d, (5595, 2)),
-    (0xfba1, (2570, 1)),
-    (0x1d48d, (4431, 1)),
-    (0x1f228, (5676, 1)),
-    (0x2471, (581, 2)),
-    (0xfb59, (2498, 1)),
-    (0xfec3, (3937, 1)),
-    (0x329a, (1531, 1)),
-    (0x33c9, (2297, 2)),
-    (0x1dbd, (231, 1)),
-    (0x1d474, (4406, 1)),
-    (0x1d673, (4894, 1)),
-    (0xffe1, (4221, 1)),
-    (0x1d4c3, (4475, 1)),
-    (0x1d649, (4852, 1)),
-    (0xfed2, (3952, 1)),
-    (0x3205, (1207, 3)),
-    (0x1d537, (4585, 1)),
-    (0xfcd9, (3129, 2)),
-    (0x3140, (1099, 1)),
-    (0x309f, (1080, 2)),
-    (0xff58, (4096, 1)),
-    (0x1d707, (5040, 1)),
-    (0x1d5d8, (4739, 1)),
-    (0x2f5e, (951, 1)),
-    (0x329c, (1533, 1)),
-    (0x1ee8f, (5452, 1)),
-    (0x1f21a, (5662, 1)),
-    (0x1fc1, (244, 3)),
-    (0x1d71b, (5060, 1)),
-    (0x1ee29, (5384, 1)),
-    (0x2f5d, (950, 1)),
-    (0x3346, (1950, 3)),
-    (0x33cc, (2303, 2)),
-    (0x1d676, (4897, 1)),
-    (0x2fc1, (1050, 1)),
-    (0x1d604, (4783, 1)),
-    (0x1d4ed, (4516, 1)),
-    (0x1d508, (4542, 1)),
-    (0xfd5d, (3375, 3)),
-    (0x1d5a7, (4690, 1)),
-    (0x1e033, (5290, 1)),
-    (0xb8, (11, 2)),
-    (0xffda, (4217, 1)),
-    (0x3273, (1476, 2)),
-    (0xff21, (4041, 1)),
-    (0x24cf, (812, 1)),
-    (0x3332, (1871, 6)),
-    (0x1d413, (4310, 1)),
-    (0x249c, (709, 3)),
-    (0xff30, (4056, 1)),
-    (0x1ee68, (5419, 1)),
-    (0x1d5b0, (4699, 1)),
-    (0xfbd7, (2595, 1)),
-    (0x3133, (1086, 1)),
-    (0xfd33, (3314, 2)),
-    (0xfc12, (2714, 2)),
-    (0x334a, (1964, 6)),
-    (0x1d48f, (4433, 1)),
-    (0xff17, (4031, 1)),
-    (0x13f, (28, 2)),
-    (0x32c8, (1600, 2)),
-    (0xfe63, (3822, 1)),
-    (0x1d6f7, (5024, 1)),
-    (0x33e6, (2363, 2)),
-    (0x1d689, (4916, 1)),
-    (0x1d7fc, (5283, 1)),
-    (0x2167, (497, 4)),
-    (0x1da2, (204, 1)),
-    (0x1eea8, (5471, 1)),
-    (0x3169, (1140, 1)),
-    (0xaf, (4, 2)),
-    (0xfcb6, (3059, 2)),
-    (0xfbeb, (2618, 3)),
-    (0xfe61, (3820, 1)),
-    (0x1d6f5, (5022, 1)),
-    (0x3277, (1484, 2)),
-    (0x321b, (1286, 4)),
-    (0xfc28, (2758, 2)),
-    (0x1d51c, (4559, 1)),
-    (0xff92, (4154, 1)),
-    (0x3395, (2168, 2)),
-    (0x1d5fd, (4776, 1)),
-    (0x1d722, (5067, 1)),
-    (0x2f99, (1010, 1)),
-    (0x33a4, (2202, 3)),
-    (0x3d6, (103, 1)),
-    (0x24e8, (837, 1)),
-    (0x212f, (412, 1)),
-    (0x1f201, (5648, 2)),
-    (0xfec0, (3934, 1)),
-    (0x1d67d, (4904, 1)),
-    (0x33a1, (2194, 2)),
-    (0xfca6, (3027, 2)),
-    (0x2f85, (990, 1)),
-    (0x37a, (88, 2)),
-    (0x32cf, (1618, 3)),
-    (0x1f200, (5646, 2)),
-    (0x2e4, (87, 1)),
-    (0x1d75e, (5127, 1)),
-    (0x1d4a5, (4450, 1)),
-    (0xfed0, (3950, 1)),
-    (0x3269, (1461, 1)),
-    (0x1d55e, (4617, 1)),
-    (0x1d439, (4348, 1)),
-    (0x1d5b5, (4704, 1)),
-    (0xfc64, (2884, 3)),
-    (0xfeb0, (3918, 1)),
-    (0xfbd8, (2596, 1)),
-    (0x3147, (1106, 1)),
-    (0xfbe3, (2608, 1)),
-    (0x2113, (392, 1)),
-    (0x1e05f, (5334, 1)),
-    (0x3368, (2056, 3)),
-    (0xff4e, (4086, 1)),
-    (0x1d6a9, (4946, 1)),
-    (0xfb6d, (2518, 1)),
-    (0x332b, (1840, 6)),
-    (0x334c, (1973, 5)),
-    (0xfb52, (2491, 1)),
-    (0x1d426, (4329, 1)),
-    (0xab5f, (2449, 1)),
-    (0xfe5d, (3816, 1)),
-    (0x1d6bf, (4968, 1)),
-    (0x1d6b5, (4958, 1)),
-    (0xfba6, (2577, 1)),
-    (0x1ffe, (273, 2)),
-    (0xfbd4, (2592, 1)),
-    (0xfc6d, (2908, 2)),
-    (0xff20, (4040, 1)),
-    (0x1d5ab, (4694, 1)),
-    (0x1d5f2, (4765, 1)),
-    (0x325c, (1444, 2)),
-    (0xfe42, (3788, 1)),
-    (0x3383, (2125, 2)),
-    (0xfb22, (2479, 1)),
-    (0x1d5ec, (4759, 1)),
-    (0x1d63e, (4841, 1)),
-    (0xfc7a, (2934, 2)),
-    (0x1d4cb, (4482, 1)),
-    (0xfd9f, (3567, 3)),
-    (0x319f, (1191, 1)),
-    (0x1d521, (4563, 1)),
-    (0x217f, (542, 1)),
-    (0x3238, (1379, 3)),
-    (0x1d438, (4347, 1)),
-    (0xffa4, (4172, 1)),
-    (0x24aa, (751, 3)),
-    (0xba, (14, 1)),
-    (0xfc79, (2932, 2)),
-    (0xfe5b, (3814, 1)),
-    (0x1ee02, (5351, 1)),
-    (0x32fb, (1664, 1)),
-    (0x2d8, (71, 2)),
-    (0x32da, (1631, 1)),
-    (0x338c, (2146, 2)),
-    (0xfd2b, (3298, 2)),
-    (0xfd06, (3224, 2)),
-    (0x32b0, (1553, 1)),
-    (0x1e03e, (5301, 1)),
-    (0x2fab, (1028, 1)),
-    (0x210c, (385, 1)),
-    (0xfcd6, (3123, 2)),
-    (0x2164, (491, 1)),
-    (0xff83, (4139, 1)),
-    (0x24b4, (781, 3)),
-    (0x2f94, (1005, 1)),
-    (0x32ed, (1650, 1)),
-    (0x3232, (1361, 3)),
-    (0x2f59, (946, 1)),
-    (0xff33, (4059, 1)),
-    (0x3262, (1454, 1)),
-    (0x330e, (1725, 4)),
-    (0x2489, (660, 2)),
-    (0x2fb5, (1038, 1)),
-    (0xfeea, (3976, 1)),
-    (0x2fc8, (1057, 1)),
-    (0x215e, (478, 3)),
-    (0xff05, (4013, 1)),
-    (0x2f8a, (995, 1)),
-    (0x1ee1d, (5377, 1)),
-    (0xfebb, (3929, 1)),
-    (0x1d67f, (4906, 1)),
-    (0xfe93, (3889, 1)),
-    (0xfecf, (3949, 1)),
-    (0xfbfb, (2666, 3)),
-    (0x1d6d6, (4991, 1)),
-    (0x2152, (441, 4)),
-    (0x1db7, (225, 1)),
-    (0x1f14a, (5625, 2)),
-    (0xfbdc, (2600, 1)),
-    (0x1d694, (4927, 1)),
-    (0x2158, (460, 3)),
-    (0x1d63d, (4840, 1)),
-    (0x2101, (368, 3)),
-    (0x2137, (419, 1)),
-    (0xfdc0, (3666, 3)),
-    (0x1d7a3, (5196, 1)),
-    (0x1d54, (173, 1)),
-    (0x10797, (4256, 1)),
-    (0x3268, (1460, 1)),
-    (0x10795, (4254, 1)),
-    (0x33b9, (2260, 2)),
-    (0xfc02, (2679, 3)),
-    (0x332f, (1861, 4)),
-    (0x213d, (426, 1)),
-    (0x3283, (1508, 1)),
-    (0x2f15, (878, 1)),
-    (0x1d453, (4374, 1)),
-    (0x107b0, (4281, 1)),
-    (0x2f33, (908, 1)),
-    (0xfe7f, (3856, 2)),
-    (0x1d7eb, (5266, 1)),
-    (0x32ca, (1605, 3)),
-    (0xedc, (124, 2)),
-    (0xffed, (4233, 1)),
-    (0x1d7ca, (5235, 1)),
-    (0x3265, (1457, 1)),
-    (0x3389, (2138, 4)),
-    (0xfcaf, (3045, 2)),
-    (0xfd69, (3411, 3)),
-    (0x32a4, (1541, 1)),
-    (0x2f75, (974, 1)),
-    (0x2c7c, (852, 1)),
-    (0x2fae, (1031, 1)),
-    (0xff2c, (4052, 1)),
-    (0xfdf1, (3693, 3)),
-    (0x1d613, (4798, 1)),
-    (0xfc73, (2920, 2)),
-    (0x1d495, (4439, 1)),
-    (0x1d4ea, (4513, 1)),
-    (0xa7f3, (2442, 1)),
-    (0x1d7e5, (5260, 1)),
-    (0xfe85, (3867, 2)),
-    (0x1d4f2, (4521, 1)),
-    (0x1d65e, (4873, 1)),
-    (0x1d7c6, (5231, 1)),
-    (0x2103, (372, 2)),
-    (0x2083, (338, 1)),
-    (0xfc33, (2780, 2)),
-    (0x333d, (1918, 5)),
-    (0xfcef, (3175, 2)),
-    (0xfeb8, (3926, 1)),
-    (0x32fd, (1666, 1)),
-    (0x1d74b, (5108, 1)),
-    (0x247c, (611, 3)),
-    (0x1079d, (4262, 1)),
-    (0x1e052, (5321, 1)),
-    (0x1ee10, (5364, 1)),
-    (0x2f7d, (982, 1)),
-    (0xfda4, (3582, 3)),
-    (0x323a, (1385, 3)),
-    (0x3157, (1122, 1)),
-    (0x33c0, (2274, 2)),
-    (0x1f3, (60, 2)),
-    (0xfc51, (2840, 2)),
-    (0xfe15, (3762, 1)),
-    (0x3204, (1204, 3)),
-    (0x3397, (2172, 2)),
-    (0x1d4e2, (4505, 1)),
-    (0x32ce, (1616, 2)),
-    (0xfb69, (2514, 1)),
-    (0x1d6fc, (5029, 1)),
-    (0x32a5, (1542, 1)),
-    (0xfe9a, (3896, 1)),
-    (0x1dbe, (232, 1)),
-    (0x2090, (350, 1)),
-    (0xfbd9, (2597, 1)),
-    (0x1d778, (5153, 1)),
-    (0x1d6d7, (4992, 1)),
-    (0x1d7bf, (5224, 1)),
-    (0xfda8, (3594, 3)),
-    (0x3391, (2156, 3)),
-    (0xfc5b, (2860, 2)),
-    (0x2467, (563, 1)),
-    (0x1d7f0, (5271, 1)),
-    (0x3186, (1169, 1)),
-    (0x2f10, (873, 1)),
-    (0x1d5e3, (4750, 1)),
-    (0xfce5, (3155, 2)),
-    (0x1d75a, (5123, 1)),
-    (0xa7f9, (2445, 1)),
-    (0x1d580, (4651, 1)),
-    (0x1d49b, (4445, 1)),
-    (0x2151, (438, 3)),
-    (0x1f23b, (5695, 1)),
-    (0xfcad, (3041, 2)),
-    (0x32b7, (1566, 2)),
-    (0x1d5cf, (4730, 1)),
-    (0x1d790, (5177, 1)),
-    (0x1d6cd, (4982, 1)),
-    (0xffcc, (4207, 1)),
-    (0x3307, (1698, 6)),
-    (0x1d7df, (5254, 1)),
-    (0x2f07, (864, 1)),
-    (0x24d5, (818, 1)),
-    (0x1d5a0, (4683, 1)),
-    (0xfb85, (2542, 1)),
-    (0x1d520, (4562, 1)),
-    (0x1d4d1, (4488, 1)),
-    (0x2461, (557, 1)),
-    (0x1d452, (4373, 1)),
-    (0xfb70, (2521, 1)),
-    (0x1d69f, (4938, 1)),
-    (0x1d594, (4671, 1)),
-    (0x3271, (1472, 2)),
-    (0x1e057, (5326, 1)),
-    (0x1d40, (154, 1)),
-    (0x1ee27, (5383, 1)),
-    (0xfd34, (3316, 2)),
-    (0x209b, (361, 1)),
-    (0x1d578, (4643, 1)),
-    (0xff56, (4094, 1)),
-    (0x2121, (403, 3)),
-    (0x3148, (1107, 1)),
-    (0x2f3d, (918, 1)),
-    (0x1d724, (5069, 1)),
-    (0x2166, (494, 3)),
-    (0x2f1b, (884, 1)),
-    (0x1d5ea, (4757, 1)),
-    (0xfc05, (2688, 2)),
-    (0x336a, (2062, 3)),
-    (0x24a3, (730, 3)),
-    (0x3320, (1804, 5)),
-    (0x1ee82, (5440, 1)),
-    (0x3344, (1944, 3)),
-    (0x210b, (384, 1)),
-    (0x1d560, (4619, 1)),
-    (0x1ee30, (5391, 1)),
-    (0x24e5, (834, 1)),
-    (0xffea, (4230, 1)),
-    (0x1f236, (5690, 1)),
-    (0x2037, (303, 3)),
-    (0x1e05a, (5329, 1)),
-    (0x2000, (275, 1)),
-    (0x1d7e6, (5261, 1)),
-    (0xff6d, (4117, 1)),
-    (0x3036, (1072, 1)),
-    (0x1d6f4, (5021, 1)),
-    (0x1ee18, (5372, 1)),
-    (0x1ee00, (5349, 1)),
-    (0xffb4, (4188, 1)),
-    (0x1d6a8, (4945, 1)),
-    (0x3362, (2038, 3)),
-    (0xfec2, (3936, 1)),
-    (0x2f26, (895, 1)),
-    (0x33fe, (2432, 3)),
-    (0x2034, (298, 3)),
-    (0x1cc, (54, 2)),
-    (0x33e1, (2353, 2)),
-    (0xfcc0, (3079, 2)),
-    (0x33de, (2345, 3)),
-    (0x1d5ba, (4709, 1)),
-    (0x1d47d, (4415, 1)),
-    (0xff76, (4126, 1)),
-    (0xfce2, (3149, 2)),
-    (0x217a, (534, 2)),
-    (0xfc29, (2760, 2)),
-    (0x1d6e6, (5007, 1)),
-    (0x1f139, (5608, 1)),
-    (0xff2f, (4055, 1)),
-    (0x1d7a2, (5195, 1)),
-    (0x3000, (1071, 1)),
-    (0x1d6b2, (4955, 1)),
-    (0x107a9, (4274, 1)),
-    (0xfecb, (3945, 1)),
-    (0x2f09, (866, 1)),
-    (0xfe16, (3763, 1)),
-    (0x2100, (365, 3)),
-    (0x3369, (2059, 3)),
-    (0x3322, (1814, 3)),
-    (0xfca8, (3031, 2)),
-    (0x2e0, (83, 1)),
-    (0x1d6c3, (4972, 1)),
-    (0x2147, (432, 1)),
-    (0x1d57a, (4645, 1)),
-    (0x1d6ff, (5032, 1)),
-    (0x1d5d7, (4738, 1)),
-    (0xff0f, (4023, 1)),
-    (0x3259, (1438, 2)),
-    (0x1d45, (159, 1)),
-    (0xfef5, (3987, 3)),
-    (0x1ee94, (5457, 1)),
-    (0x1d76c, (5141, 1)),
-    (0x316f, (1146, 1)),
-    (0x2f11, (874, 1)),
-    (0xff1f, (4039, 1)),
-    (0x3212, (1250, 4)),
-    (0x32c0, (1584, 2)),
-    (0xffb8, (4192, 1)),
-    (0xfc0b, (2700, 2)),
-    (0xfc04, (2685, 3)),
-    (0x1d651, (4860, 1)),
-    (0x1f215, (5657, 1)),
-    (0x3325, (1824, 3)),
-    (0x1d753, (5116, 1)),
-    (0x2fbf, (1048, 1)),
-    (0x1d73e, (5095, 1)),
-    (0xff06, (4014, 1)),
-    (0xfb67, (2512, 1)),
-    (0x3242, (1409, 3)),
-    (0x1d6c1, (4970, 1)),
-    (0xfe14, (3761, 1)),
-    (0x1d743, (5100, 1)),
-    (0xfeca, (3944, 1)),
-    (0xfe43, (3789, 1)),
-    (0x1d7d1, (5240, 1)),
-    (0x1d563, (4622, 1)),
-    (0x1f21f, (5667, 1)),
-    (0xfc0d, (2704, 2)),
-    (0x2f7c, (981, 1)),
-    (0xff82, (4138, 1)),
-    (0x3250, (1419, 3)),
-    (0x1d6df, (5000, 1)),
-    (0x1d7c1, (5226, 1)),
-    (0xfcfb, (3202, 2)),
-    (0xfd51, (3339, 3)),
-    (0x3159, (1124, 1)),
-    (0x1d422, (4325, 1)),
-    (0xfb04, (2460, 3)),
-    (0x313a, (1093, 1)),
-    (0x1d638, (4835, 1)),
-    (0x33cb, (2301, 2)),
-    (0x107a0, (4265, 1)),
-    (0x1d492, (4436, 1)),
-    (0x2460, (556, 1)),
-    (0x1d510, (4548, 1)),
-    (0x3374, (2090, 3)),
-    (0x1e032, (5289, 1)),
-    (0xfb29, (2486, 1)),
-    (0x1ee01, (5350, 1)),
-    (0x1d623, (4814, 1)),
-    (0x331d, (1793, 3)),
-    (0xffe8, (4228, 1)),
-    (0x1d531, (4579, 1)),
-    (0x1ee2a, (5385, 1)),
-    (0x2fb9, (1042, 1)),
-    (0x24e9, (838, 1)),
-    (0xfcf0, (3177, 2)),
-    (0x1d4e7, (4510, 1)),
-    (0x2fd3, (1068, 1)),
-    (0xfd62, (3390, 3)),
-    (0x1d7de, (5253, 1)),
-    (0x1ee1e, (5378, 1)),
-    (0xfdb2, (3624, 3)),
-    (0x2fb4, (1037, 1)),
-    (0xffc2, (4199, 1)),
-    (0x322c, (1343, 3)),
-    (0xfe8c, (3881, 2)),
-    (0x1d6ef, (5016, 1)),
-    (0x329f, (1536, 1)),
-    (0x10796, (4255, 1)),
-    (0x1d38, (147, 1)),
-    (0x331e, (1796, 4)),
-    (0x1d65c, (4871, 1)),
-    (0xfb76, (2527, 1)),
-    (0x1f11d, (5551, 3)),
-    (0xfc95, (2988, 2)),
-    (0x1f12c, (5594, 1)),
-    (0x1d588, (4659, 1)),
-    (0x33ee, (2384, 3)),
-    (0x24a9, (748, 3)),
-    (0x3209, (1219, 3)),
-    (0x3202, (1198, 3)),
-    (0x1d72a, (5075, 1)),
-    (0x2230, (553, 3)),
-    (0x1ee21, (5380, 1)),
-    (0x3177, (1154, 1)),
-    (0x335e, (2030, 2)),
-    (0xfeed, (3979, 1)),
-    (0x3312, (1741, 4)),
-    (0x3392, (2159, 3)),
-    (0x1d41e, (4321, 1)),
-    (0x1d5a8, (4691, 1)),
-    (0xff6b, (4115, 1)),
-    (0xfef1, (3983, 1)),
-    (0x329b, (1532, 1)),
-    (0xfb9d, (2566, 1)),
-    (0x1d69a, (4933, 1)),
-    (0x32c3, (1590, 2)),
-    (0x32b2, (1556, 2)),
-    (0xfc8f, (2976, 2)),
-    (0x216c, (509, 1)),
-    (0x1ee99, (5462, 1)),
-    (0xfdbe, (3660, 3)),
-    (0x2fb7, (1040, 1)),
-    (0x1d760, (5129, 1)),
-    (0x33c4, (2284, 2)),
-    (0xfc8a, (2966, 2)),
-    (0x1d7f9, (5280, 1)),
-    (0x1d53c, (4589, 1)),
-    (0x32cb, (1608, 3)),
-    (0xfd29, (3294, 2)),
-    (0x1f128, (5584, 3)),
-    (0x1da0, (202, 1)),
-    (0xfe9f, (3901, 1)),
-    (0x2171, (514, 2)),
-    (0x1d56b, (4630, 1)),
-    (0x1d64e, (4857, 1)),
-    (0x1d432, (4341, 1)),
-    (0x3315, (1753, 6)),
-    (0xfb64, (2509, 1)),
-    (0x3284, (1509, 1)),
-    (0x3357, (2015, 3)),
-    (0xfc35, (2784, 2)),
-    (0x2f92, (1003, 1)),
-    (0x216f, (512, 1)),
-    (0x33ab, (2222, 3)),
-    (0x1d434, (4343, 1)),
-    (0x1d4c1, (4473, 1)),
-    (0xfdbd, (3657, 3)),
-    (0x1d6bd, (4966, 1)),
-    (0x1ee34, (5394, 1)),
-    (0x1d6cc, (4981, 1)),
-    (0x1f135, (5604, 1)),
-    (0xfc9f, (3013, 2)),
-    (0x1d556, (4609, 1)),
-    (0x33c7, (2292, 3)),
-    (0xfb00, (2451, 2)),
-    (0x1d765, (5134, 1)),
-    (0x1d748, (5105, 1)),
-    (0x2084, (339, 1)),
-    (0x1d44a, (4365, 1)),
-    (0x1d62, (187, 1)),
-    (0x318c, (1175, 1)),
-    (0x2049, (314, 2)),
-    (0x32e4, (1641, 1)),
-    (0x1d552, (4605, 1)),
-    (0x1d546, (4597, 1)),
-    (0x1d624, (4815, 1)),
-    (0x1eeb9, (5487, 1)),
-    (0x1d4da, (4497, 1)),
-    (0x1ca, (50, 2)),
-    (0x3240, (1403, 3)),
-    (0xfba8, (2579, 1)),
-    (0xffdc, (4219, 1)),
-    (0x3225, (1322, 3)),
-    (0x1d799, (5186, 1)),
-    (0x1d622, (4813, 1)),
-    (0xfb28, (2485, 1)),
-    (0x303a, (1075, 1)),
-    (0xffb2, (4186, 1)),
-    (0x1d592, (4669, 1)),
-    (0x207b, (330, 1)),
-    (0x1f12a, (5590, 3)),
-    (0xfd1f, (3274, 2)),
-    (0x1f217, (5659, 1)),
-    (0x1d575, (4640, 1)),
-    (0xfcf1, (3179, 2)),
-    (0xfd6e, (3426, 3)),
-    (0x24dd, (826, 1)),
-    (0x1d605, (4784, 1)),
-    (0x1ee2f, (5390, 1)),
-    (0xfd27, (3290, 2)),
-    (0x1d52e, (4576, 1)),
-    (0x1d428, (4331, 1)),
-    (0x1ee36, (5396, 1)),
-    (0x32eb, (1648, 1)),
-    (0x1d678, (4899, 1)),
-    (0xfb14, (2469, 2)),
-    (0xff10, (4024, 1)),
-    (0x1d60e, (4793, 1)),
-    (0xfbad, (2584, 1)),
-    (0x1d570, (4635, 1)),
-    (0x2f38, (913, 1)),
-    (0x2f4a, (931, 1)),
-    (0xff3a, (4066, 1)),
-    (0x1d741, (5098, 1)),
-    (0x1d788, (5169, 1)),
-    (0x320d, (1231, 3)),
-    (0x1d64b, (4854, 1)),
-    (0x2b1, (63, 1)),
-    (0x33a6, (2207, 3)),
-    (0x1d774, (5149, 1)),
-    (0xfd2c, (3300, 2)),
-    (0x2109, (381, 2)),
-    (0x1f100, (5490, 2)),
-    (0xfc03, (2682, 3)),
-    (0x1d61, (186, 1)),
-    (0x1d7f2, (5273, 1)),
-    (0xfbab, (2582, 1)),
-    (0xffa7, (4175, 1)),
-    (0x1d664, (4879, 1)),
-    (0xfcdd, (3137, 2)),
-    (0x1d4be, (4470, 1)),
-    (0x33da, (2337, 2)),
-    (0x1d67, (192, 1)),
-    (0x2f60, (953, 1)),
-    (0x24a0, (721, 3)),
-    (0xfb56, (2495, 1)),
-    (0x24bd, (794, 1)),
-    (0xfbdf, (2604, 1)),
-    (0xffb7, (4191, 1)),
-    (0x1d77d, (5158, 1)),
-    (0x3296, (1527, 1)),
-    (0x1d5b7, (4706, 1)),
-    (0x1f23a, (5694, 1)),
-    (0x316e, (1145, 1)),
-    (0x336d, (2071, 3)),
-    (0xff7e, (4134, 1)),
-    (0x1d534, (4582, 1)),
-    (0x32a6, (1543, 1)),
-    (0x1ee7c, (5436, 1)),
-    (0x1ee2d, (5388, 1)),
-    (0xfd5b, (3369, 3)),
-    (0x331a, (1780, 6)),
-    (0x32f4, (1657, 1)),
-    (0x32bb, (1574, 2)),
-    (0x3343, (1940, 4)),
-    (0x2fd4, (1069, 1)),
-    (0xfcd2, (3115, 2)),
-    (0x2189, (543, 3)),
-    (0x107ae, (4279, 1)),
-    (0xffd3, (4212, 1)),
-    (0x2f2d, (902, 1)),
-    (0xfd56, (3354, 3)),
-    (0x2105, (374, 3)),
-    (0xfbff, (2672, 1)),
-    (0xfbea, (2615, 3)),
-    (0x1d71d, (5062, 1)),
-    (0x1ee42, (5400, 1)),
-    (0xfdfc, (3753, 4)),
-    (0x33d8, (2330, 4)),
-    (0x675, (112, 2)),
-    (0x1cb, (52, 2)),
-    (0xfd6b, (3417, 3)),
-    (0x332a, (1837, 3)),
-    (0x1d7a7, (5200, 1)),
-    (0xfb51, (2490, 1)),
-    (0x33fd, (2429, 3)),
-    (0x1ee57, (5410, 1)),
-    (0xa0, (0, 1)),
-    (0x2f2b, (900, 1)),
-    (0x1d404, (4295, 1)),
-    (0x2081, (336, 1)),
-    (0xf79, (132, 3)),
-    (0xfeec, (3978, 1)),
-    (0xfc2f, (2772, 2)),
-    (0x1d52, (171, 1)),
-    (0xff41, (4073, 1)),
-    (0x1d5ad, (4696, 1)),
-    (0x2133, (415, 1)),
-    (0x1d7ab, (5204, 1)),
-    (0x1d463, (4389, 1)),
-    (0xfe71, (3832, 2)),
-    (0xfbaf, (2586, 1)),
-    (0x1d736, (5087, 1)),
-    (0x1d5e, (183, 1)),
-    (0x2e3, (86, 1)),
-    (0xfea4, (3906, 1)),
-    (0x1e035, (5292, 1)),
-    (0x3354, (2002, 5)),
-    (0x211a, (397, 1)),
-    (0xfe8b, (3879, 2)),
-    (0x1ee5f, (5414, 1)),
-    (0x1d74f, (5112, 1)),
-    (0x1d78, (196, 1)),
-    (0x1f13f, (5614, 1)),
-    (0xffc7, (4204, 1)),
-    (0x314b, (1110, 1)),
-    (0x1d5a6, (4689, 1)),
-    (0xfd0a, (3232, 2)),
-    (0x2476, (593, 3)),
-    (0x1e037, (5294, 1)),
-    (0x1d63, (188, 1)),
-    (0xfb62, (2507, 1)),
-    (0xfdf6, (3712, 4)),
-    (0xfd7a, (3462, 3)),
-    (0xffa2, (4170, 1)),
-    (0x1c4, (35, 3)),
-    (0x1d4f4, (4523, 1)),
-    (0x3388, (2135, 3)),
-    (0x1d5a2, (4685, 1)),
-    (0x2f90, (1001, 1)),
-    (0x3281, (1506, 1)),
-    (0x1d4b2, (4460, 1)),
-    (0x1d61a, (4805, 1)),
-    (0xfcc8, (3095, 2)),
-    (0x1d61e, (4809, 1)),
-    (0xfcb3, (3053, 2)),
-    (0xfd86, (3498, 3)),
-    (0x2096, (356, 1)),
-    (0x1d714, (5053, 1)),
-    (0xfed7, (3957, 1)),
-    (0xff8c, (4148, 1)),
-    (0x2f77, (976, 1)),
-    (0x107b4, (4284, 1)),
-    (0x2089, (344, 1)),
-    (0x3207, (1213, 3)),
-    (0xfd15, (3254, 2)),
-    (0x1d6b7, (4960, 1)),
-    (0x1f134, (5603, 1)),
-    (0xfe59, (3812, 1)),
-    (0x1d6d4, (4989, 1)),
-    (0x1d708, (5041, 1)),
-    (0x1d7f6, (5277, 1)),
-    (0x1d74e, (5111, 1)),
-    (0x1d7db, (5250, 1)),
-    (0xfcbe, (3075, 2)),
-    (0x2f86, (991, 1)),
-    (0x2f35, (910, 1)),
-    (0xfb81, (2538, 1)),
-    (0x1d569, (4628, 1)),
-    (0x3189, (1172, 1)),
-    (0xfc71, (2916, 2)),
-    (0x1d45b, (4381, 1)),
-    (0xff4b, (4083, 1)),
-    (0xfbdb, (2599, 1)),
-    (0x3243, (1412, 3)),
-    (0x2b5, (67, 1)),
-    (0x1d564, (4623, 1)),
-    (0x3170, (1147, 1)),
-    (0xfbdd, (2601, 2)),
-    (0x2fce, (1063, 1)),
-    (0x215a, (466, 3)),
-    (0x2175, (522, 2)),
-    (0xfd7f, (3477, 3)),
-    (0x3380, (2119, 2)),
-    (0xff4c, (4084, 1)),
-    (0x1d6cb, (4980, 1)),
-    (0xfee2, (3968, 1)),
-    (0xffc5, (4202, 1)),
-    (0x32ae, (1551, 1)),
-    (0xfe69, (3827, 1)),
-    (0x3235, (1370, 3)),
-    (0x24bc, (793, 1)),
-    (0x2fbb, (1044, 1)),
-    (0xffa3, (4171, 1)),
-    (0x3316, (1759, 6)),
-    (0x1f12b, (5593, 1)),
-    (0xfc11, (2712, 2)),
-    (0x2f44, (925, 1)),
-    (0xfbd3, (2591, 1)),
-    (0x1d63b, (4838, 1)),
-    (0xfd0f, (3242, 2)),
-    (0x1f146, (5621, 1)),
-    (0x328e, (1519, 1)),
-    (0x309c, (1078, 2)),
-    (0x1da6, (208, 1)),
-    (0x32bd, (1578, 2)),
-    (0xfba2, (2571, 1)),
-    (0x1d527, (4569, 1)),
-    (0xfcc5, (3089, 2)),
-    (0x332d, (1850, 5)),
-    (0xfe5a, (3813, 1)),
-    (0x1d60c, (4791, 1)),
-    (0x2481, (630, 4)),
-    (0xfe4e, (3802, 1)),
-    (0xff45, (4077, 1)),
-    (0x32ef, (1652, 1)),
-    (0x1d2d, (137, 1)),
-    (0x3135, (1088, 1)),
-    (0x3342, (1937, 3)),
-    (0x1f117, (5533, 3)),
-    (0x1d72b, (5076, 1)),
-    (0x1d41, (155, 1)),
-    (0xff5d, (4101, 1)),
-    (0xfd03, (3218, 2)),
-    (0xfecc, (3946, 1)),
-    (0x1d52f, (4577, 1)),
-    (0xfc23, (2748, 2)),
-    (0x1d522, (4564, 1)),
-    (0x32f8, (1661, 1)),
-    (0x3143, (1102, 1)),
-    (0x1d450, (4371, 1)),
-    (0x2db, (77, 2)),
-    (0xfccb, (3101, 2)),
-    (0x24b1, (772, 3)),
-    (0x1d7ee, (5269, 1)),
-    (0x1d52d, (4575, 1)),
-    (0x1d792, (5179, 1)),
-    (0x2fa9, (1026, 1)),
-    (0x3206, (1210, 3)),
-    (0x2f22, (891, 1)),
-    (0x2f14, (877, 1)),
-    (0x309b, (1076, 2)),
-    (0x1eea9, (5472, 1)),
-    (0xfd74, (3444, 3)),
-    (0x1d6a, (195, 1)),
-    (0x1e05e, (5333, 1)),
-    (0x1d5d6, (4737, 1)),
-    (0x1d504, (4539, 1)),
-    (0xfc9e, (3011, 2)),
-    (0x2153, (445, 3)),
-    (0x1d421, (4324, 1)),
-    (0x1eea5, (5468, 1)),
-    (0x2f67, (960, 1)),
-    (0x3d4, (100, 2)),
-    (0xfc82, (2950, 2)),
-    (0x1ee98, (5461, 1)),
-    (0x2f1f, (888, 1)),
-    (0x1d7d3, (5242, 1)),
-    (0x3313, (1745, 6)),
-    (0x325e, (1448, 2)),
-    (0x2f74, (973, 1)),
-    (0x336c, (2068, 3)),
-    (0x2484, (642, 4)),
-    (0xfe66, (3825, 1)),
-    (0x1078b, (4244, 1)),
-    (0xfef6, (3990, 3)),
-    (0xfd85, (3495, 3)),
-    (0x1d48b, (4429, 1)),
-    (0x2487, (654, 4)),
-    (0x1d64f, (4858, 1)),
-    (0xfe7d, (3852, 2)),
-    (0xfd7c, (3468, 3)),
-    (0xfcc1, (3081, 2)),
-    (0x1d4a2, (4449, 1)),
-    (0x203e, (308, 2)),
-    (0x1d598, (4675, 1)),
-    (0x323c, (1391, 3)),
-    (0x247a, (605, 3)),
-    (0xfd12, (3248, 2)),
-    (0x1d429, (4332, 1)),
-    (0x1ee13, (5367, 1)),
-    (0xfc8d, (2972, 2)),
-    (0x2f29, (898, 1)),
-    (0x1d6a1, (4940, 1)),
-    (0x1f110, (5512, 3)),
-    (0x1d2c, (136, 1)),
-    (0x1d7b8, (5217, 1)),
-    (0x32ec, (1649, 1)),
-    (0x3145, (1104, 1)),
-    (0xfdbf, (3663, 3)),
-    (0x1d54d, (4601, 1)),
-    (0x3181, (1164, 1)),
-    (0xfc67, (2893, 3)),
-    (0xff34, (4060, 1)),
-    (0x1d6e3, (5004, 1)),
-    (0xfd70, (3432, 3)),
-    (0x1d608, (4787, 1)),
-    (0x1d711, (5050, 1)),
-    (0xff9d, (4165, 1)),
-    (0x1d51f, (4561, 1)),
-    (0x1d773, (5148, 1)),
-    (0xfd95, (3537, 3)),
-    (0xff5f, (4103, 1)),
-    (0x2174, (521, 1)),
-    (0xfec4, (3938, 1)),
-    (0x1d523, (4565, 1)),
-    (0x207c, (331, 1)),
-    (0x2faa, (1027, 1)),
-    (0x1d69e, (4937, 1)),
-    (0x2f55, (942, 1)),
-    (0x1d582, (4653, 1)),
-    (0x1d601, (4780, 1)),
-    (0x1d7aa, (5203, 1)),
-    (0x215f, (481, 2)),
-    (0xff4a, (4082, 1)),
-    (0x1d477, (4409, 1)),
-    (0x1d525, (4567, 1)),
-    (0xfda2, (3576, 3)),
-    (0xff94, (4156, 1)),
-    (0xff8e, (4150, 1)),
-    (0x1d43b, (4350, 1)),
-    (0x1d709, (5042, 1)),
-    (0x1d56d, (4632, 1)),
-    (0x33ea, (2372, 3)),
-    (0x1ee77, (5432, 1)),
-    (0x1eeac, (5474, 1)),
-    (0x334d, (1978, 4)),
-    (0x1d6a5, (4944, 1)),
-    (0x33c2, (2278, 4)),
-    (0x1d661, (4876, 1)),
-    (0xfd01, (3214, 2)),
-    (0x1d5d2, (4733, 1)),
-    (0x2008, (283, 1)),
-    (0xfd8f, (3525, 3)),
-    (0x3227, (1328, 3)),
-    (0x1d447, (4362, 1)),
-    (0x249d, (712, 3)),
-    (0x1f14b, (5627, 2)),
-    (0x1d5fc, (4775, 1)),
-    (0x1d50a, (4544, 1)),
-    (0xfb86, (2543, 1)),
-    (0x1d719, (5058, 1)),
-    (0x330f, (1729, 4)),
-    (0xfd6a, (3414, 3)),
-    (0xfc9d, (3009, 2)),
-    (0xfc3e, (2802, 2)),
-    (0x1e064, (5339, 1)),
-    (0x3d1, (96, 1)),
-    (0xffaf, (4183, 1)),
-    (0x1d433, (4342, 1)),
-    (0xfbfe, (2671, 1)),
-    (0x1d4dc, (4499, 1)),
-    (0xfbf0, (2633, 3)),
-    (0x33dd, (2343, 2)),
-    (0xfcf5, (3190, 2)),
-    (0xfce6, (3157, 2)),
-    (0x1d554, (4607, 1)),
-    (0x1fdf, (262, 3)),
-    (0x2082, (337, 1)),
-    (0xfeaf, (3917, 1)),
-    (0x1d43d, (4352, 1)),
-    (0x1c9, (48, 2)),
-    (0x1e060, (5335, 1)),
-    (0xff29, (4049, 1)),
-    (0x33b6, (2254, 2)),
-    (0xfb57, (2496, 1)),
-    (0xfeb2, (3920, 1)),
-    (0x1d703, (5036, 1)),
-    (0x1d5e9, (4756, 1)),
-    (0x24e1, (830, 1)),
-    (0x10794, (4253, 1)),
-    (0x328f, (1520, 1)),
-    (0x1e049, (5312, 1)),
-    (0x1d58c, (4663, 1)),
-    (0x335d, (2028, 2)),
-    (0x3039, (1074, 1)),
-    (0x1d46d, (4399, 1)),
-    (0x2f49, (930, 1)),
-    (0x1f222, (5670, 1)),
-    (0x32fe, (1667, 1)),
-    (0x1d79c, (5189, 1)),
-    (0x3179, (1156, 1)),
-    (0x1d697, (4930, 1)),
-    (0x1c8, (46, 2)),
-    (0x2138, (420, 1)),
-    (0x1d6ac, (4949, 1)),
-    (0xfc20, (2742, 2)),
-    (0x327e, (1503, 2)),
-    (0xfd24, (3284, 2)),
-    (0x32df, (1636, 1)),
-    (0xfc53, (2844, 2)),
-    (0xfeb9, (3927, 1)),
-    (0x1d76e, (5143, 1)),
-    (0x3378, (2099, 3)),
-    (0xff9f, (4167, 1)),
-    (0x1ee19, (5373, 1)),
-    (0x1f119, (5539, 3)),
-    (0x1d480, (4418, 1)),
-    (0xfc1d, (2736, 2)),
-    (0x30ff, (1082, 2)),
-    (0xfb63, (2508, 1)),
-    (0x1f13a, (5609, 1)),
-    (0x333c, (1914, 4)),
-    (0xfc87, (2960, 2)),
-    (0x1d45c, (4382, 1)),
-    (0xfea9, (3911, 1)),
-    (0x1d41a, (4317, 1)),
-    (0x1eebb, (5489, 1)),
-    (0x1d54e, (4602, 1)),
-    (0xffc4, (4201, 1)),
-    (0x1d423, (4326, 1)),
-    (0xfcdc, (3135, 2)),
-    (0x1d58f, (4666, 1)),
-    (0x1d456, (4376, 1)),
-    (0xfd8c, (3516, 3)),
-    (0x1d5c2, (4717, 1)),
-    (0xfdbb, (3651, 3)),
-    (0x1d67c, (4903, 1)),
-    (0x1d4ab, (4454, 1)),
-    (0x1d557, (4610, 1)),
-    (0xfce4, (3153, 2)),
-    (0x322f, (1352, 3)),
-    (0x33bc, (2266, 2)),
-    (0xfe7e, (3854, 2)),
-    (0x1d44f, (4370, 1)),
-    (0x1d74a, (5107, 1)),
-    (0x3167, (1138, 1)),
-    (0xfb9e, (2567, 1)),
-    (0xff6e, (4118, 1)),
-    (0xff90, (4152, 1)),
-    (0x1d700, (5033, 1)),
-    (0x1d431, (4340, 1)),
-    (0x1d459, (4379, 1)),
-    (0x213b, (422, 3)),
-    (0x1d779, (5154, 1)),
-    (0xfc46, (2818, 2)),
-    (0x334b, (1970, 3)),
-    (0xfc41, (2808, 2)),
-    (0x3279, (1488, 2)),
-    (0x3294, (1525, 1)),
-    (0x1d4eb, (4514, 1)),
-    (0x1d71f, (5064, 1)),
-    (0x2f28, (897, 1)),
-    (0xfbe8, (2613, 1)),
-    (0x24a2, (727, 3)),
-    (0x1d759, (5122, 1)),
-    (0xfcba, (3067, 2)),
-    (0x1d2e, (138, 1)),
-    (0xfb97, (2560, 1)),
-    (0x248c, (666, 2)),
-    (0x1da5, (207, 1)),
-    (0x33d3, (2318, 2)),
-    (0xfdf4, (3704, 4)),
-    (0x107a3, (4268, 1)),
-    (0x2f8d, (998, 1)),
-    (0x1fbf7, (5732, 1)),
-    (0x1ee7e, (5437, 1)),
-    (0xff31, (4057, 1)),
-    (0xfd04, (3220, 2)),
-    (0x323e, (1397, 3)),
-    (0x246c, (571, 2)),
-    (0x1d7e9, (5264, 1)),
-    (0xfd76, (3450, 3)),
-    (0x3328, (1832, 2)),
-    (0x1d602, (4781, 1)),
-    (0xfe60, (3819, 1)),
-    (0x1d58, (177, 1)),
-    (0xfd8e, (3522, 3)),
-    (0x320b, (1225, 3)),
-    (0x2fa4, (1021, 1)),
-    (0xfcd8, (3127, 2)),
-    (0xfcd3, (3117, 2)),
-    (0x1d446, (4361, 1)),
-    (0x3310, (1733, 4)),
-    (0x1d66a, (4885, 1)),
-    (0x33ce, (2307, 2)),
-    (0xf77, (129, 3)),
-    (0x1d7b7, (5216, 1)),
-    (0xfb8a, (2547, 1)),
-    (0x2f2f, (904, 1)),
-    (0x3372, (2086, 2)),
-    (0x2479, (602, 3)),
-    (0x24c8, (805, 1)),
-    (0x1d485, (4423, 1)),
-    (0x1d476, (4408, 1)),
-    (0x33c1, (2276, 2)),
-    (0x2f7a, (979, 1)),
-    (0x1d6f9, (5026, 1)),
-    (0x1d42b, (4334, 1)),
-    (0x1d475, (4407, 1)),
-    (0xfe51, (3805, 1)),
-    (0x1dbf, (233, 1)),
-    (0x3180, (1163, 1)),
-    (0x1d427, (4330, 1)),
-    (0x2f08, (865, 1)),
-    (0x1e03a, (5297, 1)),
-    (0x3381, (2121, 2)),
-    (0xff5e, (4102, 1)),
-    (0x1d75f, (5128, 1)),
-    (0x1f2, (58, 2)),
-    (0x1d539, (4587, 1)),
-    (0x1d4f9, (4528, 1)),
-    (0x2f43, (924, 1)),
-    (0xfd1d, (3270, 2)),
-    (0xfc1f, (2740, 2)),
-    (0x247d, (614, 4)),
-    (0xff3e, (4070, 1)),
-    (0x1d776, (5151, 1)),
-    (0x1d9f, (201, 1)),
-    (0x1ee16, (5370, 1)),
-    (0x3256, (1432, 2)),
-    (0xff7a, (4130, 1)),
-    (0x1d629, (4820, 1)),
-    (0x1ee54, (5409, 1)),
-    (0xff59, (4097, 1)),
-    (0x1d6cf, (4984, 1)),
-    (0x1d6f6, (5023, 1)),
-    (0x33b5, (2252, 2)),
-    (0x1d7b9, (5218, 1)),
-    (0xffd2, (4211, 1)),
-    (0x3358, (2018, 2)),
-    (0x2f2a, (899, 1)),
-    (0x2e1, (84, 1)),
-    (0xfc68, (2896, 3)),
-    (0x3329, (1834, 3)),
-    (0xfce1, (3147, 2)),
-    (0x1d732, (5083, 1)),
-    (0xfb54, (2493, 1)),
-    (0x1d4e4, (4507, 1)),
-    (0x222d, (548, 3)),
-    (0xfdb1, (3621, 3)),
-    (0x1d794, (5181, 1)),
-    (0xfe88, (3873, 2)),
-    (0x1d7c8, (5233, 1)),
-    (0xff43, (4075, 1)),
-    (0x1d420, (4323, 1)),
-    (0xfc3d, (2800, 2)),
-    (0xfd18, (3260, 2)),
-    (0xfe87, (3871, 2)),
-    (0x2fd0, (1065, 1)),
-    (0xfbf9, (2660, 3)),
-    (0x323b, (1388, 3)),
-    (0x1d685, (4912, 1)),
-    (0x2087, (342, 1)),
-    (0x1d75d, (5126, 1)),
-    (0x1d47, (161, 1)),
-    (0xfc42, (2810, 2)),
-    (0x2f3f, (920, 1)),
-    (0xfe82, (3861, 2)),
-    (0x1d6c5, (4974, 1)),
-    (0x1ee88, (5446, 1)),
-    (0x32e9, (1646, 1)),
-    (0x1d44d, (4368, 1)),
-    (0xfc52, (2842, 2)),
-    (0x321c, (1290, 4)),
-    (0x1fee, (268, 3)),
-    (0x1d448, (4363, 1)),
-    (0x3349, (1962, 2)),
-    (0x1d5e2, (4749, 1)),
-    (0x1f214, (5656, 1)),
-    (0x3239, (1382, 3)),
-    (0x2005, (280, 1)),
-    (0x1f11e, (5554, 3)),
-    (0x1f238, (5692, 1)),
-    (0x2f3b, (916, 1)),
-    (0xfdaf, (3615, 3)),
-    (0x1d6da, (4995, 1)),
-    (0xffec, (4232, 1)),
-    (0x1d62c, (4823, 1)),
-    (0x3226, (1325, 3)),
-    (0xff93, (4155, 1)),
-    (0x3314, (1751, 2)),
-    (0x2079, (328, 1)),
-    (0xff8f, (4151, 1)),
-    (0x3173, (1150, 1)),
-    (0x1d583, (4654, 1)),
-    (0x1fbf9, (5734, 1)),
-    (0xb4, (8, 2)),
-    (0xfdc2, (3672, 3)),
-    (0x1d32, (141, 1)),
-    (0x1d418, (4315, 1)),
-    (0xff7f, (4135, 1)),
-    (0x1f133, (5602, 1)),
-    (0x32a0, (1537, 1)),
-    (0xfd63, (3393, 3)),
-    (0x1d771, (5146, 1)),
-    (0x33ad, (2228, 3)),
-    (0x2b7, (69, 1)),
-    (0x1f211, (5652, 1)),
-    (0x1f16b, (5640, 2)),
-    (0xfb77, (2528, 1)),
-    (0xfefa, (4002, 3)),
-    (0x1d461, (4387, 1)),
-    (0x32ea, (1647, 1)),
-    (0x1d555, (4608, 1)),
-    (0x1dab, (213, 1)),
-    (0xfebc, (3930, 1)),
-    (0x1d6b1, (4954, 1)),
-    (0x317e, (1161, 1)),
-    (0x1d5b1, (4700, 1)),
-    (0xfe95, (3891, 1)),
-    (0x331f, (1800, 4)),
-    (0x1d70c, (5045, 1)),
-    (0x1d662, (4877, 1)),
-    (0x1d70e, (5047, 1)),
-    (0x1d417, (4314, 1)),
-    (0xfc10, (2710, 2)),
-    (0xfc1a, (2730, 2)),
-    (0x1d755, (5118, 1)),
-    (0x3134, (1087, 1)),
-    (0x3308, (1704, 4)),
-    (0x1d541, (4593, 1)),
-    (0x10787, (4240, 1)),
-    (0xfeac, (3914, 1)),
-    (0x1f229, (5677, 1)),
-    (0x1e046, (5309, 1)),
-    (0x24c3, (800, 1)),
-    (0x2026, (292, 3)),
-    (0x149, (32, 2)),
-    (0x33e7, (2365, 2)),
-    (0x211c, (399, 1)),
-    (0x2f58, (945, 1)),
-    (0x1d5ff, (4778, 1)),
-    (0xfe9b, (3897, 1)),
-    (0xfd2f, (3306, 2)),
-    (0x1d710, (5049, 1)),
-    (0x1d65, (190, 1)),
-    (0xfc1e, (2738, 2)),
-    (0xfd9d, (3561, 3)),
-    (0x2077, (326, 1)),
-    (0x24cb, (808, 1)),
-    (0x1eeba, (5488, 1)),
-    (0xff0e, (4022, 1)),
-    (0xfb7e, (2535, 1)),
-    (0x3337, (1895, 3)),
-    (0x248d, (668, 2)),
-    (0xfd99, (3549, 3)),
-    (0xfd65, (3399, 3)),
-    (0x1d7ac, (5205, 1)),
-    (0x1f11c, (5548, 3)),
-    (0x32ff, (1668, 2)),
-    (0x1ee7a, (5434, 1)),
-    (0x1e06b, (5346, 1)),
-    (0xfe47, (3791, 1)),
-    (0x1d637, (4834, 1)),
-    (0x3264, (1456, 1)),
-    (0xfc58, (2854, 2)),
-    (0x1d603, (4782, 1)),
-    (0x1d478, (4410, 1)),
-    (0xff0a, (4018, 1)),
-    (0xfda3, (3579, 3)),
-    (0x1d44, (158, 1)),
-    (0x24d0, (813, 1)),
-    (0xab5e, (2448, 1)),
-    (0xfcfc, (3204, 2)),
-    (0xffe0, (4220, 1)),
-    (0x1ee0a, (5358, 1)),
-    (0x313d, (1096, 1)),
-    (0x3398, (2174, 2)),
-    (0xfcd0, (3111, 2)),
-    (0x2f6e, (967, 1)),
-    (0x202f, (295, 1)),
-    (0xfcaa, (3035, 2)),
-    (0x1d43a, (4349, 1)),
-    (0xfd23, (3282, 2)),
-    (0x2ef3, (856, 1)),
-    (0xfe5f, (3818, 1)),
-    (0x2f93, (1004, 1)),
-    (0x2086, (341, 1)),
-    (0xfd6d, (3423, 3)),
-    (0x249f, (718, 3)),
-    (0x1d424, (4327, 1)),
-    (0x1fbf8, (5733, 1)),
-    (0x1d462, (4388, 1)),
-    (0xfe4d, (3801, 1)),
-    (0x1d53b, (4588, 1)),
-    (0xfe49, (3793, 2)),
-    (0x1d6ab, (4948, 1)),
-    (0x3132, (1085, 1)),
-    (0x1d7c2, (5227, 1)),
-    (0xfd9c, (3558, 3)),
-    (0x2fc2, (1051, 1)),
-    (0x33f4, (2402, 3)),
-    (0x213c, (425, 1)),
-    (0x1d7e8, (5263, 1)),
-    (0xff88, (4144, 1)),
-    (0x1d79d, (5190, 1)),
-    (0x24c1, (798, 1)),
-    (0x24e0, (829, 1)),
-    (0x1eeb8, (5486, 1)),
-    (0xfc70, (2914, 2)),
-    (0xfc6c, (2906, 2)),
-    (0x2fac, (1029, 1)),
-    (0x1f202, (5650, 1)),
-    (0xfbf3, (2642, 3)),
-    (0x2f78, (977, 1)),
-    (0x3255, (1430, 2)),
-    (0x2f2e, (903, 1)),
-    (0xfb24, (2481, 1)),
-    (0x32af, (1552, 1)),
-    (0x1d4a, (164, 1)),
-    (0x2f25, (894, 1)),
-    (0x1ee6e, (5424, 1)),
-    (0xfd2d, (3302, 2)),
-    (0xff6a, (4114, 1)),
-    (0x2466, (562, 1)),
-    (0x1d579, (4644, 1)),
-    (0x1f231, (5685, 1)),
-    (0xfc61, (2875, 3)),
-    (0x1d7fd, (5284, 1)),
-    (0xfd5f, (3381, 3)),
-    (0x1ee1a, (5374, 1)),
-    (0x3348, (1958, 4)),
-    (0xfba9, (2580, 1)),
-    (0x1d45f, (4385, 1)),
-    (0x1d66d, (4888, 1)),
-    (0xfce8, (3161, 2)),
-    (0xfb5b, (2500, 1)),
-    (0x1ee62, (5416, 1)),
-    (0x3146, (1105, 1)),
-    (0x33ac, (2225, 3)),
-    (0x1f149, (5624, 1)),
-    (0x3295, (1526, 1)),
-    (0x3333, (1877, 4)),
-    (0xfc0f, (2708, 2)),
-    (0xff8a, (4146, 1)),
-    (0x3387, (2133, 2)),
-    (0x676, (114, 2)),
-    (0xffcd, (4208, 1)),
-    (0xfe86, (3869, 2)),
-    (0x1d6e8, (5009, 1)),
-    (0xfc40, (2806, 2)),
-    (0xfc0a, (2698, 2)),
-    (0x10788, (4241, 1)),
-    (0x2fc0, (1049, 1)),
-    (0x1d5b6, (4705, 1)),
-    (0xffa8, (4176, 1)),
-    (0x3289, (1514, 1)),
-    (0xfd79, (3459, 3)),
-    (0x3300, (1670, 5)),
-    (0x1d55, (174, 1)),
-    (0x24b5, (784, 3)),
-    (0x2f4c, (933, 1)),
-    (0x3163, (1134, 1)),
-    (0x2002, (277, 1)),
-    (0x2f57, (944, 1)),
-    (0xfcdb, (3133, 2)),
-    (0x1d49f, (4448, 1)),
-    (0x1d688, (4915, 1)),
-    (0xff18, (4032, 1)),
-    (0x2f54, (941, 1)),
-    (0x1ee85, (5443, 1)),
-    (0x2fd1, (1066, 1)),
-    (0x33c5, (2286, 2)),
-    (0xfb53, (2492, 1)),
-    (0x3197, (1183, 1)),
-    (0x2fcf, (1064, 1)),
-    (0x1d516, (4553, 1)),
-    (0x3201, (1195, 3)),
-    (0xfd82, (3486, 3)),
-    (0xff16, (4030, 1)),
-    (0x2150, (435, 3)),
-    (0x1f109, (5508, 2)),
-    (0xfe9d, (3899, 1)),
-    (0x210f, (388, 1)),
-    (0x320e, (1234, 4)),
-    (0x1e040, (5303, 1)),
-    (0x330a, (1711, 3)),
-    (0x1ee0e, (5362, 1)),
-    (0xfc45, (2816, 2)),
-    (0xff48, (4080, 1)),
-    (0xfc47, (2820, 2)),
-    (0x1d505, (4540, 1)),
-    (0x2169, (503, 1)),
-    (0x24dc, (825, 1)),
-    (0x1d7d8, (5247, 1)),
-    (0xfb55, (2494, 1)),
-    (0xfe84, (3865, 2)),
-    (0x1ee22, (5381, 1)),
-    (0x1d772, (5147, 1)),
-    (0x33f0, (2390, 3)),
-    (0x1d4b1, (4459, 1)),
-    (0xff99, (4161, 1)),
-    (0xfd2e, (3304, 2)),
-    (0x2159, (463, 3)),
-    (0x1d58d, (4664, 1)),
-    (0x1d627, (4818, 1)),
-    (0xfeeb, (3977, 1)),
-    (0x3334, (1881, 6)),
-    (0x1f126, (5578, 3)),
-    (0x3144, (1103, 1)),
-    (0x1e036, (5293, 1)),
-    (0x1db9, (227, 1)),
-    (0x1d6ea, (5011, 1)),
-    (0x1d6ee, (5015, 1)),
-    (0xfec6, (3940, 1)),
-    (0x1d64c, (4855, 1)),
-    (0xfcbb, (3069, 2)),
-    (0x2033, (296, 2)),
-    (0x2009, (284, 1)),
-    (0x3377, (2097, 2)),
-    (0x3160, (1131, 1)),
-    (0x1d48c, (4430, 1)),
-    (0x24b3, (778, 3)),
-    (0x1d4d0, (4487, 1)),
-    (0xffcb, (4206, 1)),
-    (0xfdad, (3609, 3)),
-    (0x1ee8b, (5448, 1)),
-    (0xfeb1, (3919, 1)),
-    (0xfcea, (3165, 2)),
-    (0x2f76, (975, 1)),
-    (0x32be, (1580, 2)),
-    (0x1d7b1, (5210, 1)),
-    (0x1d5f8, (4771, 1)),
-    (0xfd73, (3441, 3)),
-    (0xff1a, (4034, 1)),
-    (0xfca2, (3019, 2)),
-    (0x211b, (398, 1)),
-    (0x1d5b2, (4701, 1)),
-    (0xfb60, (2505, 1)),
-    (0x1ee2e, (5389, 1)),
-    (0x2071, (322, 1)),
-    (0x1d4bb, (4468, 1)),
-    (0x33fc, (2426, 3)),
-    (0xfeef, (3981, 1)),
-    (0x1d4fb, (4530, 1)),
-    (0x1d728, (5073, 1)),
-    (0xfcff, (3210, 2)),
-    (0x1d6f8, (5025, 1)),
-    (0x1d535, (4583, 1)),
-    (0x1d34, (143, 1)),
-    (0x2165, (492, 2)),
-    (0x1ee2c, (5387, 1)),
-    (0x1d5dd, (4744, 1)),
-    (0x2140, (429, 1)),
-    (0x322d, (1346, 3)),
-    (0x1ee96, (5459, 1)),
-    (0xffbe, (4198, 1)),
-    (0x1eeb5, (5483, 1)),
-    (0x3311, (1737, 4)),
-    (0xfd89, (3507, 3)),
-    (0x32d7, (1628, 1)),
-    (0x2f91, (1002, 1)),
-    (0x10798, (4257, 1)),
-    (0x246b, (569, 2)),
-    (0x24c2, (799, 1)),
-    (0x1d50e, (4546, 1)),
-    (0xffbc, (4196, 1)),
-    (0xfd9e, (3564, 3)),
-    (0x2115, (393, 1)),
-    (0x1d715, (5054, 1)),
-    (0xfcac, (3039, 2)),
-    (0xfc98, (2995, 3)),
-    (0xfc66, (2890, 3)),
-    (0x2d6f, (854, 1)),
-    (0x1d59c, (4679, 1)),
-    (0xfc01, (2676, 3)),
-    (0x1ee49, (5402, 1)),
-    (0x2119, (396, 1)),
-    (0x24d7, (820, 1)),
-    (0x1d642, (4845, 1)),
-    (0x3304, (1687, 5)),
-    (0x3198, (1184, 1)),
-    (0xfed4, (3954, 1)),
-    (0x2f6c, (965, 1)),
-    (0x1d406, (4297, 1)),
-    (0x1d61d, (4808, 1)),
-    (0x33d5, (2322, 3)),
-    (0x1ee07, (5355, 1)),
-    (0x1d4ce, (4485, 1)),
-    (0x1f101, (5492, 2)),
-    (0x10792, (4251, 1)),
-    (0x24be, (795, 1)),
-    (0x2fbc, (1045, 1)),
-    (0x1f14f, (5636, 2)),
-    (0xfe12, (3759, 1)),
-    (0xfec7, (3941, 1)),
-    (0xfc2d, (2768, 2)),
-    (0x248a, (662, 2)),
-    (0x1fed, (265, 3)),
-    (0x1d6d5, (4990, 1)),
-    (0x2fb2, (1035, 1)),
-    (0xfc8b, (2968, 2)),
-    (0x3158, (1123, 1)),
-    (0xffe3, (4223, 2)),
-    (0xfb84, (2541, 1)),
-    (0xfb65, (2510, 1)),
-    (0x1ee93, (5456, 1)),
-    (0x3208, (1216, 3)),
-    (0x32fc, (1665, 1)),
-    (0xfe94, (3890, 1)),
-    (0x2f4f, (936, 1)),
-    (0x2f87, (992, 1)),
-    (0x1ee75, (5430, 1)),
-    (0x2057, (316, 4)),
-    (0x1d617, (4802, 1)),
-    (0x1d5e1, (4748, 1)),
-    (0xfdac, (3606, 3)),
-    (0x2f0e, (871, 1)),
-    (0x211d, (400, 1)),
-    (0x331c, (1790, 3)),
-    (0x2f83, (988, 1)),
-    (0x1d5c3, (4718, 1)),
-    (0x3373, (2088, 2)),
-    (0x1f13b, (5610, 1)),
-    (0x2486, (650, 4)),
-    (0x1d665, (4880, 1)),
-    (0xfce0, (3144, 3)),
-    (0x3d3, (98, 2)),
-    (0x1d403, (4294, 1)),
-    (0x1d640, (4843, 1)),
-    (0x24ac, (757, 3)),
-    (0x2f39, (914, 1)),
-    (0x1f140, (5615, 1)),
-    (0xfb6f, (2520, 1)),
-    (0xfd13, (3250, 2)),
-    (0x1d4c6, (4477, 1)),
-    (0x1f248, (5720, 3)),
-    (0x3183, (1166, 1)),
-    (0x1d62e, (4825, 1)),
-    (0x1f148, (5623, 1)),
-    (0xfb89, (2546, 1)),
-    (0x1ee81, (5439, 1)),
-    (0xfc25, (2752, 2)),
-    (0x1f223, (5671, 1)),
-    (0x334e, (1982, 4)),
-    (0x2fd2, (1067, 1)),
-    (0xfd54, (3348, 3)),
-    (0xff01, (4009, 1)),
-    (0x1d740, (5097, 1)),
-    (0x1d7bc, (5221, 1)),
-    (0x1db4, (222, 1)),
-    (0x1d43e, (4353, 1)),
-    (0xfca9, (3033, 2)),
-    (0xfd22, (3280, 2)),
-    (0x2f23, (892, 1)),
-    (0x314e, (1113, 1)),
-    (0xfe8a, (3877, 2)),
-    (0xff03, (4011, 1)),
-    (0x3292, (1523, 1)),
-    (0xfcf6, (3192, 2)),
-    (0x1d3f, (153, 1)),
-    (0x1db8, (226, 1)),
-    (0xfe68, (3826, 1)),
-    (0x1d69, (194, 1)),
-    (0x1079b, (4260, 1)),
-    (0x331b, (1786, 4)),
-    (0xfda7, (3591, 3)),
-    (0xffdb, (4218, 1)),
-    (0xfc7c, (2938, 2)),
-    (0xfda5, (3585, 3)),
-    (0x3341, (1934, 3)),
-    (0x24a7, (742, 3)),
-    (0x3216, (1266, 4)),
-    (0x2f3e, (919, 1)),
-    (0xff9c, (4164, 1)),
-    (0xfb20, (2477, 1)),
-    (0x1f116, (5530, 3)),
-    (0x325b, (1442, 2)),
-    (0x1d5e6, (4753, 1)),
-    (0x1d79e, (5191, 1)),
-    (0x1ee14, (5368, 1)),
-    (0x333f, (1927, 2)),
-    (0x32d4, (1625, 1)),
-    (0x1f22d, (5681, 1)),
-    (0xfd88, (3504, 3)),
-    (0x1d4d9, (4496, 1)),
-    (0xfdaa, (3600, 3)),
-    (0xfcc6, (3091, 2)),
-    (0x1d56e, (4633, 1)),
-    (0x1ee39, (5398, 1)),
-    (0x1d48a, (4428, 1)),
-    (0x1d7d0, (5239, 1)),
-    (0xb9, (13, 1)),
-    (0x1f120, (5560, 3)),
-    (0x1d60b, (4790, 1)),
-    (0x2f70, (969, 1)),
-    (0x1d4fa, (4529, 1)),
-    (0x2f5c, (949, 1)),
-    (0x32ab, (1548, 1)),
-    (0xfba3, (2572, 1)),
-    (0x2f02, (859, 1)),
-    (0x1f11f, (5557, 3)),
-    (0xfc69, (2899, 3)),
-    (0x24d4, (817, 1)),
-    (0x2491, (676, 3)),
-    (0x326b, (1463, 1)),
-    (0xfc08, (2694, 2)),
-    (0x1d7b2, (5211, 1)),
-    (0x33ff, (2435, 3)),
-    (0xfb8d, (2550, 1)),
-    (0x1fbf0, (5725, 1)),
-    (0x3252, (1424, 2)),
-    (0x1d6e5, (5006, 1)),
-    (0x1d5ac, (4695, 1)),
-    (0xfb94, (2557, 1)),
-    (0x2f63, (956, 1)),
-    (0x107a2, (4267, 1)),
-    (0xfc06, (2690, 2)),
-    (0xfc5a, (2858, 2)),
-    (0xff75, (4125, 1)),
-    (0xfeda, (3960, 1)),
-    (0xff79, (4129, 1)),
-    (0x2462, (558, 1)),
-    (0xfc09, (2696, 2)),
-    (0x2111, (390, 1)),
-    (0x319e, (1190, 1)),
-    (0x1d451, (4372, 1)),
-    (0x2f20, (889, 1)),
-    (0x1d6a0, (4939, 1)),
-    (0x1d577, (4642, 1)),
-    (0x1d7b6, (5215, 1)),
-    (0xff15, (4029, 1)),
-    (0x1d744, (5101, 1)),
-    (0x1f21c, (5664, 1)),
-    (0x1fbf2, (5727, 1)),
-    (0xfc3a, (2794, 2)),
-    (0x337b, (2107, 2)),
-    (0xfdb8, (3642, 3)),
-    (0xffc3, (4200, 1)),
-    (0x33db, (2339, 2)),
-    (0xff0c, (4020, 1)),
-    (0x1d52a, (4572, 1)),
-    (0x1ee9b, (5464, 1)),
-    (0x24e2, (831, 1)),
-    (0xff9e, (4166, 1)),
-    (0x32de, (1635, 1)),
-    (0x1d574, (4639, 1)),
-    (0x1ee76, (5431, 1)),
-    (0x1d59e, (4681, 1)),
-    (0x1f244, (5708, 3)),
-    (0x1f137, (5606, 1)),
-    (0xfea0, (3902, 1)),
-    (0xff2a, (4050, 1)),
-    (0x314f, (1114, 1)),
-    (0x1d47c, (4414, 1)),
-    (0x1d467, (4393, 1)),
-    (0xff4f, (4087, 1)),
-    (0xfea1, (3903, 1)),
-    (0x33a9, (2217, 2)),
-    (0x10799, (4258, 1)),
-    (0x1ee12, (5366, 1)),
-    (0x2492, (679, 3)),
-    (0x1d696, (4929, 1)),
-    (0xfcab, (3037, 2)),
-    (0xfd19, (3262, 2)),
-    (0x1d5e8, (4755, 1)),
-    (0x1ee1f, (5379, 1)),
-    (0xfe91, (3887, 1)),
-    (0x1c7, (44, 2)),
-    (0x1d681, (4908, 1)),
-    (0x24b7, (788, 1)),
-    (0x1d784, (5165, 1)),
-    (0x1d742, (5099, 1)),
-    (0x33a2, (2196, 3)),
-    (0x1d645, (4848, 1)),
-    (0x1ee70, (5426, 1)),
-    (0x1d611, (4796, 1)),
-    (0x337c, (2109, 2)),
-    (0x1d442, (4357, 1)),
-    (0xfe32, (3772, 1)),
-    (0x1d31, (140, 1)),
-    (0x3138, (1091, 1)),
-    (0x2485, (646, 4)),
-    (0x1f114, (5524, 3)),
-    (0x1d5d0, (4731, 1)),
-    (0x1d635, (4832, 1)),
-    (0x3309, (1708, 3)),
-    (0x1d408, (4299, 1)),
-    (0xfe50, (3804, 1)),
-    (0x1ee8d, (5450, 1)),
-    (0xfd93, (3531, 3)),
-    (0x1d67b, (4902, 1)),
-    (0x1d4db, (4498, 1)),
-    (0x1f136, (5605, 1)),
-    (0x1f22f, (5683, 1)),
-    (0x1d7ed, (5268, 1)),
-    (0x32f9, (1662, 1)),
-    (0x32aa, (1547, 1)),
-    (0x33af, (2236, 6)),
-    (0x24e4, (833, 1)),
-    (0x2003, (278, 1)),
-    (0xfd80, (3480, 3)),
-    (0x1e04e, (5317, 1)),
-    (0x1d59b, (4678, 1)),
-    (0x3285, (1510, 1)),
-    (0x1d78e, (5175, 1)),
-    (0x3379, (2102, 3)),
-    (0x107b2, (4282, 1)),
-    (0xfeb7, (3925, 1)),
-    (0x2470, (579, 2)),
-    (0x1d620, (4811, 1)),
-    (0x1d4b4, (4462, 1)),
-    (0x1d754, (5117, 1)),
-    (0x1f246, (5714, 3)),
-    (0x2160, (483, 1)),
-    (0x1d72f, (5080, 1)),
-    (0xfe4f, (3803, 1)),
-    (0x1d47a, (4412, 1)),
-    (0x1fcd, (247, 3)),
-    (0x327d, (1499, 4)),
-    (0x338e, (2150, 2)),
-    (0x33b3, (2248, 2)),
-    (0xfd10, (3244, 2)),
-    (0x2f37, (912, 1)),
-    (0x3187, (1170, 1)),
-    (0xff5c, (4100, 1)),
-    (0x2135, (417, 1)),
-    (0x1d73b, (5092, 1)),
-    (0x3178, (1155, 1)),
-    (0xfc86, (2958, 2)),
-    (0x2fa5, (1022, 1)),
-    (0x1d6f1, (5018, 1)),
-    (0x1db5, (223, 1)),
-    (0xfb7d, (2534, 1)),
-    (0xfc48, (2822, 2)),
-    (0x1d56, (175, 1)),
-    (0x1d647, (4850, 1)),
-    (0xfe65, (3824, 1)),
-    (0xfc18, (2726, 2)),
-    (0x33f1, (2393, 3)),
-    (0x328c, (1517, 1)),
-    (0x32b9, (1570, 2)),
-    (0xfb79, (2530, 1)),
-    (0x1d4ee, (4517, 1)),
-    (0x338f, (2152, 2)),
-    (0x1d663, (4878, 1)),
-    (0x33b7, (2256, 2)),
-    (0x1d55a, (4613, 1)),
-    (0xfcb1, (3049, 2)),
-    (0x3254, (1428, 2)),
-    (0xfbde, (2603, 1)),
-    (0x2f73, (972, 1)),
-    (0x1d497, (4441, 1)),
-    (0xff89, (4145, 1)),
-    (0x1d5f5, (4768, 1)),
-];
-
-pub(crate) const CJK_COMPAT_VARIANTS_DECOMPOSED_CHARS: &[char] = &[
-    '\u{349E}',
-    '\u{FE00}',
-    '\u{34B9}',
-    '\u{FE00}',
-    '\u{34BB}',
-    '\u{FE00}',
-    '\u{34DF}',
-    '\u{FE00}',
-    '\u{3515}',
-    '\u{FE00}',
-    '\u{36EE}',
-    '\u{FE00}',
-    '\u{36FC}',
-    '\u{FE00}',
-    '\u{3781}',
-    '\u{FE00}',
-    '\u{382F}',
-    '\u{FE00}',
-    '\u{3862}',
-    '\u{FE00}',
-    '\u{387C}',
-    '\u{FE00}',
-    '\u{38C7}',
-    '\u{FE00}',
-    '\u{38E3}',
-    '\u{FE00}',
-    '\u{391C}',
-    '\u{FE00}',
-    '\u{393A}',
-    '\u{FE00}',
-    '\u{3A2E}',
-    '\u{FE00}',
-    '\u{3A6C}',
-    '\u{FE00}',
-    '\u{3AE4}',
-    '\u{FE00}',
-    '\u{3B08}',
-    '\u{FE00}',
-    '\u{3B19}',
-    '\u{FE00}',
-    '\u{3B49}',
-    '\u{FE00}',
-    '\u{3B9D}',
-    '\u{FE00}',
-    '\u{3B9D}',
-    '\u{FE01}',
-    '\u{3C18}',
-    '\u{FE00}',
-    '\u{3C4E}',
-    '\u{FE00}',
-    '\u{3D33}',
-    '\u{FE00}',
-    '\u{3D96}',
-    '\u{FE00}',
-    '\u{3EAC}',
-    '\u{FE00}',
-    '\u{3EB8}',
-    '\u{FE00}',
-    '\u{3EB8}',
-    '\u{FE01}',
-    '\u{3F1B}',
-    '\u{FE00}',
-    '\u{3FFC}',
-    '\u{FE00}',
-    '\u{4008}',
-    '\u{FE00}',
-    '\u{4018}',
-    '\u{FE00}',
-    '\u{4039}',
-    '\u{FE00}',
-    '\u{4039}',
-    '\u{FE01}',
-    '\u{4046}',
-    '\u{FE00}',
-    '\u{4096}',
-    '\u{FE00}',
-    '\u{40E3}',
-    '\u{FE00}',
-    '\u{412F}',
-    '\u{FE00}',
-    '\u{4202}',
-    '\u{FE00}',
-    '\u{4227}',
-    '\u{FE00}',
-    '\u{42A0}',
-    '\u{FE00}',
-    '\u{4301}',
-    '\u{FE00}',
-    '\u{4334}',
-    '\u{FE00}',
-    '\u{4359}',
-    '\u{FE00}',
-    '\u{43D5}',
-    '\u{FE00}',
-    '\u{43D9}',
-    '\u{FE00}',
-    '\u{440B}',
-    '\u{FE00}',
-    '\u{446B}',
-    '\u{FE00}',
-    '\u{452B}',
-    '\u{FE00}',
-    '\u{455D}',
-    '\u{FE00}',
-    '\u{4561}',
-    '\u{FE00}',
-    '\u{456B}',
-    '\u{FE00}',
-    '\u{45D7}',
-    '\u{FE00}',
-    '\u{45F9}',
-    '\u{FE00}',
-    '\u{4635}',
-    '\u{FE00}',
-    '\u{46BE}',
-    '\u{FE00}',
-    '\u{46C7}',
-    '\u{FE00}',
-    '\u{4995}',
-    '\u{FE00}',
-    '\u{49E6}',
-    '\u{FE00}',
-    '\u{4A6E}',
-    '\u{FE00}',
-    '\u{4A76}',
-    '\u{FE00}',
-    '\u{4AB2}',
-    '\u{FE00}',
-    '\u{4B33}',
-    '\u{FE00}',
-    '\u{4BCE}',
-    '\u{FE00}',
-    '\u{4CCE}',
-    '\u{FE00}',
-    '\u{4CED}',
-    '\u{FE00}',
-    '\u{4CF8}',
-    '\u{FE00}',
-    '\u{4D56}',
-    '\u{FE00}',
-    '\u{4E0D}',
-    '\u{FE00}',
-    '\u{4E26}',
-    '\u{FE00}',
-    '\u{4E32}',
-    '\u{FE00}',
-    '\u{4E38}',
-    '\u{FE00}',
-    '\u{4E39}',
-    '\u{FE00}',
-    '\u{4E3D}',
-    '\u{FE00}',
-    '\u{4E41}',
-    '\u{FE00}',
-    '\u{4E82}',
-    '\u{FE00}',
-    '\u{4E86}',
-    '\u{FE00}',
-    '\u{4EAE}',
-    '\u{FE00}',
-    '\u{4EC0}',
-    '\u{FE00}',
-    '\u{4ECC}',
-    '\u{FE00}',
-    '\u{4EE4}',
-    '\u{FE00}',
-    '\u{4F60}',
-    '\u{FE00}',
-    '\u{4F80}',
-    '\u{FE00}',
-    '\u{4F86}',
-    '\u{FE00}',
-    '\u{4F8B}',
-    '\u{FE00}',
-    '\u{4FAE}',
-    '\u{FE00}',
-    '\u{4FAE}',
-    '\u{FE01}',
-    '\u{4FBB}',
-    '\u{FE00}',
-    '\u{4FBF}',
-    '\u{FE00}',
-    '\u{5002}',
-    '\u{FE00}',
-    '\u{502B}',
-    '\u{FE00}',
-    '\u{507A}',
-    '\u{FE00}',
-    '\u{5099}',
-    '\u{FE00}',
-    '\u{50CF}',
-    '\u{FE00}',
-    '\u{50DA}',
-    '\u{FE00}',
-    '\u{50E7}',
-    '\u{FE00}',
-    '\u{50E7}',
-    '\u{FE01}',
-    '\u{5140}',
-    '\u{FE00}',
-    '\u{5145}',
-    '\u{FE00}',
-    '\u{514D}',
-    '\u{FE00}',
-    '\u{514D}',
-    '\u{FE01}',
-    '\u{5154}',
-    '\u{FE00}',
-    '\u{5164}',
-    '\u{FE00}',
-    '\u{5167}',
-    '\u{FE00}',
-    '\u{5168}',
-    '\u{FE00}',
-    '\u{5169}',
-    '\u{FE00}',
-    '\u{516D}',
-    '\u{FE00}',
-    '\u{5177}',
-    '\u{FE00}',
-    '\u{5180}',
-    '\u{FE00}',
-    '\u{518D}',
-    '\u{FE00}',
-    '\u{5192}',
-    '\u{FE00}',
-    '\u{5195}',
-    '\u{FE00}',
-    '\u{5197}',
-    '\u{FE00}',
-    '\u{51A4}',
-    '\u{FE00}',
-    '\u{51AC}',
-    '\u{FE00}',
-    '\u{51B5}',
-    '\u{FE00}',
-    '\u{51B5}',
-    '\u{FE01}',
-    '\u{51B7}',
-    '\u{FE00}',
-    '\u{51C9}',
-    '\u{FE00}',
-    '\u{51CC}',
-    '\u{FE00}',
-    '\u{51DC}',
-    '\u{FE00}',
-    '\u{51DE}',
-    '\u{FE00}',
-    '\u{51F5}',
-    '\u{FE00}',
-    '\u{5203}',
-    '\u{FE00}',
-    '\u{5207}',
-    '\u{FE00}',
-    '\u{5207}',
-    '\u{FE01}',
-    '\u{5217}',
-    '\u{FE00}',
-    '\u{5229}',
-    '\u{FE00}',
-    '\u{523A}',
-    '\u{FE00}',
-    '\u{523B}',
-    '\u{FE00}',
-    '\u{5246}',
-    '\u{FE00}',
-    '\u{5272}',
-    '\u{FE00}',
-    '\u{5277}',
-    '\u{FE00}',
-    '\u{5289}',
-    '\u{FE00}',
-    '\u{529B}',
-    '\u{FE00}',
-    '\u{52A3}',
-    '\u{FE00}',
-    '\u{52B3}',
-    '\u{FE00}',
-    '\u{52C7}',
-    '\u{FE00}',
-    '\u{52C7}',
-    '\u{FE01}',
-    '\u{52C9}',
-    '\u{FE00}',
-    '\u{52C9}',
-    '\u{FE01}',
-    '\u{52D2}',
-    '\u{FE00}',
-    '\u{52DE}',
-    '\u{FE00}',
-    '\u{52E4}',
-    '\u{FE00}',
-    '\u{52E4}',
-    '\u{FE01}',
-    '\u{52F5}',
-    '\u{FE00}',
-    '\u{52FA}',
-    '\u{FE00}',
-    '\u{52FA}',
-    '\u{FE01}',
-    '\u{5305}',
-    '\u{FE00}',
-    '\u{5306}',
-    '\u{FE00}',
-    '\u{5317}',
-    '\u{FE00}',
-    '\u{5317}',
-    '\u{FE01}',
-    '\u{533F}',
-    '\u{FE00}',
-    '\u{5349}',
-    '\u{FE00}',
-    '\u{5351}',
-    '\u{FE00}',
-    '\u{5351}',
-    '\u{FE01}',
-    '\u{535A}',
-    '\u{FE00}',
-    '\u{5373}',
-    '\u{FE00}',
-    '\u{5375}',
-    '\u{FE00}',
-    '\u{537D}',
-    '\u{FE00}',
-    '\u{537F}',
-    '\u{FE00}',
-    '\u{537F}',
-    '\u{FE01}',
-    '\u{537F}',
-    '\u{FE02}',
-    '\u{53C3}',
-    '\u{FE00}',
-    '\u{53CA}',
-    '\u{FE00}',
-    '\u{53DF}',
-    '\u{FE00}',
-    '\u{53E5}',
-    '\u{FE00}',
-    '\u{53EB}',
-    '\u{FE00}',
-    '\u{53F1}',
-    '\u{FE00}',
-    '\u{5406}',
-    '\u{FE00}',
-    '\u{540F}',
-    '\u{FE00}',
-    '\u{541D}',
-    '\u{FE00}',
-    '\u{5438}',
-    '\u{FE00}',
-    '\u{5442}',
-    '\u{FE00}',
-    '\u{5448}',
-    '\u{FE00}',
-    '\u{5468}',
-    '\u{FE00}',
-    '\u{549E}',
-    '\u{FE00}',
-    '\u{54A2}',
-    '\u{FE00}',
-    '\u{54BD}',
-    '\u{FE00}',
-    '\u{54F6}',
-    '\u{FE00}',
-    '\u{5510}',
-    '\u{FE00}',
-    '\u{5553}',
-    '\u{FE00}',
-    '\u{5555}',
-    '\u{FE00}',
-    '\u{5563}',
-    '\u{FE00}',
-    '\u{5584}',
-    '\u{FE00}',
-    '\u{5584}',
-    '\u{FE01}',
-    '\u{5587}',
-    '\u{FE00}',
-    '\u{5599}',
-    '\u{FE00}',
-    '\u{5599}',
-    '\u{FE01}',
-    '\u{559D}',
-    '\u{FE00}',
-    '\u{559D}',
-    '\u{FE01}',
-    '\u{55AB}',
-    '\u{FE00}',
-    '\u{55B3}',
-    '\u{FE00}',
-    '\u{55C0}',
-    '\u{FE00}',
-    '\u{55C2}',
-    '\u{FE00}',
-    '\u{55E2}',
-    '\u{FE00}',
-    '\u{5606}',
-    '\u{FE00}',
-    '\u{5606}',
-    '\u{FE01}',
-    '\u{5651}',
-    '\u{FE00}',
-    '\u{5668}',
-    '\u{FE00}',
-    '\u{5674}',
-    '\u{FE00}',
-    '\u{56F9}',
-    '\u{FE00}',
-    '\u{5716}',
-    '\u{FE00}',
-    '\u{5717}',
-    '\u{FE00}',
-    '\u{578B}',
-    '\u{FE00}',
-    '\u{57CE}',
-    '\u{FE00}',
-    '\u{57F4}',
-    '\u{FE00}',
-    '\u{580D}',
-    '\u{FE00}',
-    '\u{5831}',
-    '\u{FE00}',
-    '\u{5832}',
-    '\u{FE00}',
-    '\u{5840}',
-    '\u{FE00}',
-    '\u{585A}',
-    '\u{FE00}',
-    '\u{585A}',
-    '\u{FE01}',
-    '\u{585E}',
-    '\u{FE00}',
-    '\u{58A8}',
-    '\u{FE00}',
-    '\u{58AC}',
-    '\u{FE00}',
-    '\u{58B3}',
-    '\u{FE00}',
-    '\u{58D8}',
-    '\u{FE00}',
-    '\u{58DF}',
-    '\u{FE00}',
-    '\u{58EE}',
-    '\u{FE00}',
-    '\u{58F2}',
-    '\u{FE00}',
-    '\u{58F7}',
-    '\u{FE00}',
-    '\u{5906}',
-    '\u{FE00}',
-    '\u{591A}',
-    '\u{FE00}',
-    '\u{5922}',
-    '\u{FE00}',
-    '\u{5944}',
-    '\u{FE00}',
-    '\u{5948}',
-    '\u{FE00}',
-    '\u{5951}',
-    '\u{FE00}',
-    '\u{5954}',
-    '\u{FE00}',
-    '\u{5962}',
-    '\u{FE00}',
-    '\u{5973}',
-    '\u{FE00}',
-    '\u{59D8}',
-    '\u{FE00}',
-    '\u{59EC}',
-    '\u{FE00}',
-    '\u{5A1B}',
-    '\u{FE00}',
-    '\u{5A27}',
-    '\u{FE00}',
-    '\u{5A62}',
-    '\u{FE00}',
-    '\u{5A66}',
-    '\u{FE00}',
-    '\u{5AB5}',
-    '\u{FE00}',
-    '\u{5B08}',
-    '\u{FE00}',
-    '\u{5B28}',
-    '\u{FE00}',
-    '\u{5B3E}',
-    '\u{FE00}',
-    '\u{5B3E}',
-    '\u{FE01}',
-    '\u{5B85}',
-    '\u{FE00}',
-    '\u{5BC3}',
-    '\u{FE00}',
-    '\u{5BD8}',
-    '\u{FE00}',
-    '\u{5BE7}',
-    '\u{FE00}',
-    '\u{5BE7}',
-    '\u{FE01}',
-    '\u{5BE7}',
-    '\u{FE02}',
-    '\u{5BEE}',
-    '\u{FE00}',
-    '\u{5BF3}',
-    '\u{FE00}',
-    '\u{5BFF}',
-    '\u{FE00}',
-    '\u{5C06}',
-    '\u{FE00}',
-    '\u{5C22}',
-    '\u{FE00}',
-    '\u{5C3F}',
-    '\u{FE00}',
-    '\u{5C60}',
-    '\u{FE00}',
-    '\u{5C62}',
-    '\u{FE00}',
-    '\u{5C64}',
-    '\u{FE00}',
-    '\u{5C65}',
-    '\u{FE00}',
-    '\u{5C6E}',
-    '\u{FE00}',
-    '\u{5C6E}',
-    '\u{FE01}',
-    '\u{5C8D}',
-    '\u{FE00}',
-    '\u{5CC0}',
-    '\u{FE00}',
-    '\u{5D19}',
-    '\u{FE00}',
-    '\u{5D43}',
-    '\u{FE00}',
-    '\u{5D50}',
-    '\u{FE00}',
-    '\u{5D6B}',
-    '\u{FE00}',
-    '\u{5D6E}',
-    '\u{FE00}',
-    '\u{5D7C}',
-    '\u{FE00}',
-    '\u{5DB2}',
-    '\u{FE00}',
-    '\u{5DBA}',
-    '\u{FE00}',
-    '\u{5DE1}',
-    '\u{FE00}',
-    '\u{5DE2}',
-    '\u{FE00}',
-    '\u{5DFD}',
-    '\u{FE00}',
-    '\u{5E28}',
-    '\u{FE00}',
-    '\u{5E3D}',
-    '\u{FE00}',
-    '\u{5E69}',
-    '\u{FE00}',
-    '\u{5E74}',
-    '\u{FE00}',
-    '\u{5EA6}',
-    '\u{FE00}',
-    '\u{5EB0}',
-    '\u{FE00}',
-    '\u{5EB3}',
-    '\u{FE00}',
-    '\u{5EB6}',
-    '\u{FE00}',
-    '\u{5EC9}',
-    '\u{FE00}',
-    '\u{5ECA}',
-    '\u{FE00}',
-    '\u{5ECA}',
-    '\u{FE01}',
-    '\u{5ED2}',
-    '\u{FE00}',
-    '\u{5ED3}',
-    '\u{FE00}',
-    '\u{5ED9}',
-    '\u{FE00}',
-    '\u{5EEC}',
-    '\u{FE00}',
-    '\u{5EFE}',
-    '\u{FE00}',
-    '\u{5F04}',
-    '\u{FE00}',
-    '\u{5F22}',
-    '\u{FE00}',
-    '\u{5F22}',
-    '\u{FE01}',
-    '\u{5F53}',
-    '\u{FE00}',
-    '\u{5F62}',
-    '\u{FE00}',
-    '\u{5F69}',
-    '\u{FE00}',
-    '\u{5F6B}',
-    '\u{FE00}',
-    '\u{5F8B}',
-    '\u{FE00}',
-    '\u{5F9A}',
-    '\u{FE00}',
-    '\u{5FA9}',
-    '\u{FE00}',
-    '\u{5FAD}',
-    '\u{FE00}',
-    '\u{5FCD}',
-    '\u{FE00}',
-    '\u{5FD7}',
-    '\u{FE00}',
-    '\u{5FF5}',
-    '\u{FE00}',
-    '\u{5FF9}',
-    '\u{FE00}',
-    '\u{6012}',
-    '\u{FE00}',
-    '\u{601C}',
-    '\u{FE00}',
-    '\u{6075}',
-    '\u{FE00}',
-    '\u{6081}',
-    '\u{FE00}',
-    '\u{6094}',
-    '\u{FE00}',
-    '\u{6094}',
-    '\u{FE01}',
-    '\u{60C7}',
-    '\u{FE00}',
-    '\u{60D8}',
-    '\u{FE00}',
-    '\u{60E1}',
-    '\u{FE00}',
-    '\u{6108}',
-    '\u{FE00}',
-    '\u{6144}',
-    '\u{FE00}',
-    '\u{6148}',
-    '\u{FE00}',
-    '\u{614C}',
-    '\u{FE00}',
-    '\u{614C}',
-    '\u{FE01}',
-    '\u{614E}',
-    '\u{FE00}',
-    '\u{614E}',
-    '\u{FE01}',
-    '\u{6160}',
-    '\u{FE00}',
-    '\u{6168}',
-    '\u{FE00}',
-    '\u{617A}',
-    '\u{FE00}',
-    '\u{618E}',
-    '\u{FE00}',
-    '\u{618E}',
-    '\u{FE01}',
-    '\u{618E}',
-    '\u{FE02}',
-    '\u{6190}',
-    '\u{FE00}',
-    '\u{61A4}',
-    '\u{FE00}',
-    '\u{61AF}',
-    '\u{FE00}',
-    '\u{61B2}',
-    '\u{FE00}',
-    '\u{61DE}',
-    '\u{FE00}',
-    '\u{61F2}',
-    '\u{FE00}',
-    '\u{61F2}',
-    '\u{FE01}',
-    '\u{61F2}',
-    '\u{FE02}',
-    '\u{61F6}',
-    '\u{FE00}',
-    '\u{61F6}',
-    '\u{FE01}',
-    '\u{6200}',
-    '\u{FE00}',
-    '\u{6210}',
-    '\u{FE00}',
-    '\u{621B}',
-    '\u{FE00}',
-    '\u{622E}',
-    '\u{FE00}',
-    '\u{6234}',
-    '\u{FE00}',
-    '\u{625D}',
-    '\u{FE00}',
-    '\u{62B1}',
-    '\u{FE00}',
-    '\u{62C9}',
-    '\u{FE00}',
-    '\u{62CF}',
-    '\u{FE00}',
-    '\u{62D3}',
-    '\u{FE00}',
-    '\u{62D4}',
-    '\u{FE00}',
-    '\u{62FC}',
-    '\u{FE00}',
-    '\u{62FE}',
-    '\u{FE00}',
-    '\u{633D}',
-    '\u{FE00}',
-    '\u{6350}',
-    '\u{FE00}',
-    '\u{6368}',
-    '\u{FE00}',
-    '\u{637B}',
-    '\u{FE00}',
-    '\u{6383}',
-    '\u{FE00}',
-    '\u{63A0}',
-    '\u{FE00}',
-    '\u{63A9}',
-    '\u{FE00}',
-    '\u{63C4}',
-    '\u{FE00}',
-    '\u{63C5}',
-    '\u{FE00}',
-    '\u{63E4}',
-    '\u{FE00}',
-    '\u{641C}',
-    '\u{FE00}',
-    '\u{6422}',
-    '\u{FE00}',
-    '\u{6452}',
-    '\u{FE00}',
-    '\u{6469}',
-    '\u{FE00}',
-    '\u{6477}',
-    '\u{FE00}',
-    '\u{647E}',
-    '\u{FE00}',
-    '\u{649A}',
-    '\u{FE00}',
-    '\u{649D}',
-    '\u{FE00}',
-    '\u{64C4}',
-    '\u{FE00}',
-    '\u{654F}',
-    '\u{FE00}',
-    '\u{654F}',
-    '\u{FE01}',
-    '\u{6556}',
-    '\u{FE00}',
-    '\u{656C}',
-    '\u{FE00}',
-    '\u{6578}',
-    '\u{FE00}',
-    '\u{6599}',
-    '\u{FE00}',
-    '\u{65C5}',
-    '\u{FE00}',
-    '\u{65E2}',
-    '\u{FE00}',
-    '\u{65E3}',
-    '\u{FE00}',
-    '\u{6613}',
-    '\u{FE00}',
-    '\u{6649}',
-    '\u{FE00}',
-    '\u{6674}',
-    '\u{FE00}',
-    '\u{6674}',
-    '\u{FE01}',
-    '\u{6688}',
-    '\u{FE00}',
-    '\u{6691}',
-    '\u{FE00}',
-    '\u{6691}',
-    '\u{FE01}',
-    '\u{669C}',
-    '\u{FE00}',
-    '\u{66B4}',
-    '\u{FE00}',
-    '\u{66C6}',
-    '\u{FE00}',
-    '\u{66F4}',
-    '\u{FE00}',
-    '\u{66F8}',
-    '\u{FE00}',
-    '\u{6700}',
-    '\u{FE00}',
-    '\u{6717}',
-    '\u{FE00}',
-    '\u{6717}',
-    '\u{FE01}',
-    '\u{6717}',
-    '\u{FE02}',
-    '\u{671B}',
-    '\u{FE00}',
-    '\u{671B}',
-    '\u{FE01}',
-    '\u{6721}',
-    '\u{FE00}',
-    '\u{674E}',
-    '\u{FE00}',
-    '\u{6753}',
-    '\u{FE00}',
-    '\u{6756}',
-    '\u{FE00}',
-    '\u{675E}',
-    '\u{FE00}',
-    '\u{677B}',
-    '\u{FE00}',
-    '\u{6785}',
-    '\u{FE00}',
-    '\u{6797}',
-    '\u{FE00}',
-    '\u{67F3}',
-    '\u{FE00}',
-    '\u{67FA}',
-    '\u{FE00}',
-    '\u{6817}',
-    '\u{FE00}',
-    '\u{681F}',
-    '\u{FE00}',
-    '\u{6852}',
-    '\u{FE00}',
-    '\u{6881}',
-    '\u{FE00}',
-    '\u{6885}',
-    '\u{FE00}',
-    '\u{6885}',
-    '\u{FE01}',
-    '\u{688E}',
-    '\u{FE00}',
-    '\u{68A8}',
-    '\u{FE00}',
-    '\u{6914}',
-    '\u{FE00}',
-    '\u{6942}',
-    '\u{FE00}',
-    '\u{69A3}',
-    '\u{FE00}',
-    '\u{69EA}',
-    '\u{FE00}',
-    '\u{6A02}',
-    '\u{FE00}',
-    '\u{6A02}',
-    '\u{FE01}',
-    '\u{6A02}',
-    '\u{FE02}',
-    '\u{6A13}',
-    '\u{FE00}',
-    '\u{6AA8}',
-    '\u{FE00}',
-    '\u{6AD3}',
-    '\u{FE00}',
-    '\u{6ADB}',
-    '\u{FE00}',
-    '\u{6B04}',
-    '\u{FE00}',
-    '\u{6B21}',
-    '\u{FE00}',
-    '\u{6B54}',
-    '\u{FE00}',
-    '\u{6B72}',
-    '\u{FE00}',
-    '\u{6B77}',
-    '\u{FE00}',
-    '\u{6B79}',
-    '\u{FE00}',
-    '\u{6B9F}',
-    '\u{FE00}',
-    '\u{6BAE}',
-    '\u{FE00}',
-    '\u{6BBA}',
-    '\u{FE00}',
-    '\u{6BBA}',
-    '\u{FE01}',
-    '\u{6BBA}',
-    '\u{FE02}',
-    '\u{6BBB}',
-    '\u{FE00}',
-    '\u{6C4E}',
-    '\u{FE00}',
-    '\u{6C67}',
-    '\u{FE00}',
-    '\u{6C88}',
-    '\u{FE00}',
-    '\u{6CBF}',
-    '\u{FE00}',
-    '\u{6CCC}',
-    '\u{FE00}',
-    '\u{6CCD}',
-    '\u{FE00}',
-    '\u{6CE5}',
-    '\u{FE00}',
-    '\u{6D16}',
-    '\u{FE00}',
-    '\u{6D1B}',
-    '\u{FE00}',
-    '\u{6D1E}',
-    '\u{FE00}',
-    '\u{6D34}',
-    '\u{FE00}',
-    '\u{6D3E}',
-    '\u{FE00}',
-    '\u{6D41}',
-    '\u{FE00}',
-    '\u{6D41}',
-    '\u{FE01}',
-    '\u{6D41}',
-    '\u{FE02}',
-    '\u{6D69}',
-    '\u{FE00}',
-    '\u{6D6A}',
-    '\u{FE00}',
-    '\u{6D77}',
-    '\u{FE00}',
-    '\u{6D77}',
-    '\u{FE01}',
-    '\u{6D78}',
-    '\u{FE00}',
-    '\u{6D85}',
-    '\u{FE00}',
-    '\u{6DCB}',
-    '\u{FE00}',
-    '\u{6DDA}',
-    '\u{FE00}',
-    '\u{6DEA}',
-    '\u{FE00}',
-    '\u{6DF9}',
-    '\u{FE00}',
-    '\u{6E1A}',
-    '\u{FE00}',
-    '\u{6E2F}',
-    '\u{FE00}',
-    '\u{6E6E}',
-    '\u{FE00}',
-    '\u{6E9C}',
-    '\u{FE00}',
-    '\u{6EBA}',
-    '\u{FE00}',
-    '\u{6EC7}',
-    '\u{FE00}',
-    '\u{6ECB}',
-    '\u{FE00}',
-    '\u{6ECB}',
-    '\u{FE01}',
-    '\u{6ED1}',
-    '\u{FE00}',
-    '\u{6EDB}',
-    '\u{FE00}',
-    '\u{6F0F}',
-    '\u{FE00}',
-    '\u{6F22}',
-    '\u{FE00}',
-    '\u{6F22}',
-    '\u{FE01}',
-    '\u{6F23}',
-    '\u{FE00}',
-    '\u{6F6E}',
-    '\u{FE00}',
-    '\u{6FC6}',
-    '\u{FE00}',
-    '\u{6FEB}',
-    '\u{FE00}',
-    '\u{6FFE}',
-    '\u{FE00}',
-    '\u{701B}',
-    '\u{FE00}',
-    '\u{701E}',
-    '\u{FE00}',
-    '\u{701E}',
-    '\u{FE01}',
-    '\u{7039}',
-    '\u{FE00}',
-    '\u{704A}',
-    '\u{FE00}',
-    '\u{7070}',
-    '\u{FE00}',
-    '\u{7077}',
-    '\u{FE00}',
-    '\u{707D}',
-    '\u{FE00}',
-    '\u{7099}',
-    '\u{FE00}',
-    '\u{70AD}',
-    '\u{FE00}',
-    '\u{70C8}',
-    '\u{FE00}',
-    '\u{70D9}',
-    '\u{FE00}',
-    '\u{7145}',
-    '\u{FE00}',
-    '\u{7149}',
-    '\u{FE00}',
-    '\u{716E}',
-    '\u{FE00}',
-    '\u{716E}',
-    '\u{FE01}',
-    '\u{719C}',
-    '\u{FE00}',
-    '\u{71CE}',
-    '\u{FE00}',
-    '\u{71D0}',
-    '\u{FE00}',
-    '\u{7210}',
-    '\u{FE00}',
-    '\u{721B}',
-    '\u{FE00}',
-    '\u{7228}',
-    '\u{FE00}',
-    '\u{722B}',
-    '\u{FE00}',
-    '\u{7235}',
-    '\u{FE00}',
-    '\u{7235}',
-    '\u{FE01}',
-    '\u{7250}',
-    '\u{FE00}',
-    '\u{7262}',
-    '\u{FE00}',
-    '\u{7280}',
-    '\u{FE00}',
-    '\u{7295}',
-    '\u{FE00}',
-    '\u{72AF}',
-    '\u{FE00}',
-    '\u{72C0}',
-    '\u{FE00}',
-    '\u{72FC}',
-    '\u{FE00}',
-    '\u{732A}',
-    '\u{FE00}',
-    '\u{732A}',
-    '\u{FE01}',
-    '\u{7375}',
-    '\u{FE00}',
-    '\u{737A}',
-    '\u{FE00}',
-    '\u{7387}',
-    '\u{FE00}',
-    '\u{7387}',
-    '\u{FE01}',
-    '\u{738B}',
-    '\u{FE00}',
-    '\u{73A5}',
-    '\u{FE00}',
-    '\u{73B2}',
-    '\u{FE00}',
-    '\u{73DE}',
-    '\u{FE00}',
-    '\u{7406}',
-    '\u{FE00}',
-    '\u{7409}',
-    '\u{FE00}',
-    '\u{7422}',
-    '\u{FE00}',
-    '\u{7447}',
-    '\u{FE00}',
-    '\u{745C}',
-    '\u{FE00}',
-    '\u{7469}',
-    '\u{FE00}',
-    '\u{7471}',
-    '\u{FE00}',
-    '\u{7471}',
-    '\u{FE01}',
-    '\u{7485}',
-    '\u{FE00}',
-    '\u{7489}',
-    '\u{FE00}',
-    '\u{7498}',
-    '\u{FE00}',
-    '\u{74CA}',
-    '\u{FE00}',
-    '\u{7506}',
-    '\u{FE00}',
-    '\u{7524}',
-    '\u{FE00}',
-    '\u{753B}',
-    '\u{FE00}',
-    '\u{753E}',
-    '\u{FE00}',
-    '\u{7559}',
-    '\u{FE00}',
-    '\u{7565}',
-    '\u{FE00}',
-    '\u{7570}',
-    '\u{FE00}',
-    '\u{7570}',
-    '\u{FE01}',
-    '\u{75E2}',
-    '\u{FE00}',
-    '\u{7610}',
-    '\u{FE00}',
-    '\u{761D}',
-    '\u{FE00}',
-    '\u{761F}',
-    '\u{FE00}',
-    '\u{7642}',
-    '\u{FE00}',
-    '\u{7669}',
-    '\u{FE00}',
-    '\u{76CA}',
-    '\u{FE00}',
-    '\u{76CA}',
-    '\u{FE01}',
-    '\u{76DB}',
-    '\u{FE00}',
-    '\u{76E7}',
-    '\u{FE00}',
-    '\u{76F4}',
-    '\u{FE00}',
-    '\u{76F4}',
-    '\u{FE01}',
-    '\u{7701}',
-    '\u{FE00}',
-    '\u{771E}',
-    '\u{FE00}',
-    '\u{771F}',
-    '\u{FE00}',
-    '\u{771F}',
-    '\u{FE01}',
-    '\u{7740}',
-    '\u{FE00}',
-    '\u{774A}',
-    '\u{FE00}',
-    '\u{774A}',
-    '\u{FE01}',
-    '\u{778B}',
-    '\u{FE00}',
-    '\u{77A7}',
-    '\u{FE00}',
-    '\u{784E}',
-    '\u{FE00}',
-    '\u{786B}',
-    '\u{FE00}',
-    '\u{788C}',
-    '\u{FE00}',
-    '\u{788C}',
-    '\u{FE01}',
-    '\u{7891}',
-    '\u{FE00}',
-    '\u{78CA}',
-    '\u{FE00}',
-    '\u{78CC}',
-    '\u{FE00}',
-    '\u{78CC}',
-    '\u{FE01}',
-    '\u{78FB}',
-    '\u{FE00}',
-    '\u{792A}',
-    '\u{FE00}',
-    '\u{793C}',
-    '\u{FE00}',
-    '\u{793E}',
-    '\u{FE00}',
-    '\u{7948}',
-    '\u{FE00}',
-    '\u{7949}',
-    '\u{FE00}',
-    '\u{7950}',
-    '\u{FE00}',
-    '\u{7956}',
-    '\u{FE00}',
-    '\u{7956}',
-    '\u{FE01}',
-    '\u{795D}',
-    '\u{FE00}',
-    '\u{795E}',
-    '\u{FE00}',
-    '\u{7965}',
-    '\u{FE00}',
-    '\u{797F}',
-    '\u{FE00}',
-    '\u{798D}',
-    '\u{FE00}',
-    '\u{798E}',
-    '\u{FE00}',
-    '\u{798F}',
-    '\u{FE00}',
-    '\u{798F}',
-    '\u{FE01}',
-    '\u{79AE}',
-    '\u{FE00}',
-    '\u{79CA}',
-    '\u{FE00}',
-    '\u{79EB}',
-    '\u{FE00}',
-    '\u{7A1C}',
-    '\u{FE00}',
-    '\u{7A40}',
-    '\u{FE00}',
-    '\u{7A40}',
-    '\u{FE01}',
-    '\u{7A4A}',
-    '\u{FE00}',
-    '\u{7A4F}',
-    '\u{FE00}',
-    '\u{7A81}',
-    '\u{FE00}',
-    '\u{7AB1}',
-    '\u{FE00}',
-    '\u{7ACB}',
-    '\u{FE00}',
-    '\u{7AEE}',
-    '\u{FE00}',
-    '\u{7B20}',
-    '\u{FE00}',
-    '\u{7BC0}',
-    '\u{FE00}',
-    '\u{7BC0}',
-    '\u{FE01}',
-    '\u{7BC6}',
-    '\u{FE00}',
-    '\u{7BC9}',
-    '\u{FE00}',
-    '\u{7C3E}',
-    '\u{FE00}',
-    '\u{7C60}',
-    '\u{FE00}',
-    '\u{7C7B}',
-    '\u{FE00}',
-    '\u{7C92}',
-    '\u{FE00}',
-    '\u{7CBE}',
-    '\u{FE00}',
-    '\u{7CD2}',
-    '\u{FE00}',
-    '\u{7CD6}',
-    '\u{FE00}',
-    '\u{7CE3}',
-    '\u{FE00}',
-    '\u{7CE7}',
-    '\u{FE00}',
-    '\u{7CE8}',
-    '\u{FE00}',
-    '\u{7D00}',
-    '\u{FE00}',
-    '\u{7D10}',
-    '\u{FE00}',
-    '\u{7D22}',
-    '\u{FE00}',
-    '\u{7D2F}',
-    '\u{FE00}',
-    '\u{7D5B}',
-    '\u{FE00}',
-    '\u{7D63}',
-    '\u{FE00}',
-    '\u{7DA0}',
-    '\u{FE00}',
-    '\u{7DBE}',
-    '\u{FE00}',
-    '\u{7DC7}',
-    '\u{FE00}',
-    '\u{7DF4}',
-    '\u{FE00}',
-    '\u{7DF4}',
-    '\u{FE01}',
-    '\u{7DF4}',
-    '\u{FE02}',
-    '\u{7E02}',
-    '\u{FE00}',
-    '\u{7E09}',
-    '\u{FE00}',
-    '\u{7E37}',
-    '\u{FE00}',
-    '\u{7E41}',
-    '\u{FE00}',
-    '\u{7E45}',
-    '\u{FE00}',
-    '\u{7F3E}',
-    '\u{FE00}',
-    '\u{7F72}',
-    '\u{FE00}',
-    '\u{7F79}',
-    '\u{FE00}',
-    '\u{7F7A}',
-    '\u{FE00}',
-    '\u{7F85}',
-    '\u{FE00}',
-    '\u{7F95}',
-    '\u{FE00}',
-    '\u{7F9A}',
-    '\u{FE00}',
-    '\u{7FBD}',
-    '\u{FE00}',
-    '\u{7FFA}',
-    '\u{FE00}',
-    '\u{8001}',
-    '\u{FE00}',
-    '\u{8005}',
-    '\u{FE00}',
-    '\u{8005}',
-    '\u{FE01}',
-    '\u{8005}',
-    '\u{FE02}',
-    '\u{8046}',
-    '\u{FE00}',
-    '\u{8060}',
-    '\u{FE00}',
-    '\u{806F}',
-    '\u{FE00}',
-    '\u{8070}',
-    '\u{FE00}',
-    '\u{807E}',
-    '\u{FE00}',
-    '\u{808B}',
-    '\u{FE00}',
-    '\u{80AD}',
-    '\u{FE00}',
-    '\u{80B2}',
-    '\u{FE00}',
-    '\u{8103}',
-    '\u{FE00}',
-    '\u{813E}',
-    '\u{FE00}',
-    '\u{81D8}',
-    '\u{FE00}',
-    '\u{81E8}',
-    '\u{FE00}',
-    '\u{81ED}',
-    '\u{FE00}',
-    '\u{8201}',
-    '\u{FE00}',
-    '\u{8201}',
-    '\u{FE01}',
-    '\u{8204}',
-    '\u{FE00}',
-    '\u{8218}',
-    '\u{FE00}',
-    '\u{826F}',
-    '\u{FE00}',
-    '\u{8279}',
-    '\u{FE00}',
-    '\u{8279}',
-    '\u{FE01}',
-    '\u{828B}',
-    '\u{FE00}',
-    '\u{8291}',
-    '\u{FE00}',
-    '\u{829D}',
-    '\u{FE00}',
-    '\u{82B1}',
-    '\u{FE00}',
-    '\u{82B3}',
-    '\u{FE00}',
-    '\u{82BD}',
-    '\u{FE00}',
-    '\u{82E5}',
-    '\u{FE00}',
-    '\u{82E5}',
-    '\u{FE01}',
-    '\u{82E6}',
-    '\u{FE00}',
-    '\u{831D}',
-    '\u{FE00}',
-    '\u{8323}',
-    '\u{FE00}',
-    '\u{8336}',
-    '\u{FE00}',
-    '\u{8352}',
-    '\u{FE00}',
-    '\u{8353}',
-    '\u{FE00}',
-    '\u{8363}',
-    '\u{FE00}',
-    '\u{83AD}',
-    '\u{FE00}',
-    '\u{83BD}',
-    '\u{FE00}',
-    '\u{83C9}',
-    '\u{FE00}',
-    '\u{83CA}',
-    '\u{FE00}',
-    '\u{83CC}',
-    '\u{FE00}',
-    '\u{83DC}',
-    '\u{FE00}',
-    '\u{83E7}',
-    '\u{FE00}',
-    '\u{83EF}',
-    '\u{FE00}',
-    '\u{83F1}',
-    '\u{FE00}',
-    '\u{843D}',
-    '\u{FE00}',
-    '\u{8449}',
-    '\u{FE00}',
-    '\u{8457}',
-    '\u{FE00}',
-    '\u{8457}',
-    '\u{FE01}',
-    '\u{84EE}',
-    '\u{FE00}',
-    '\u{84F1}',
-    '\u{FE00}',
-    '\u{84F3}',
-    '\u{FE00}',
-    '\u{84FC}',
-    '\u{FE00}',
-    '\u{8516}',
-    '\u{FE00}',
-    '\u{8564}',
-    '\u{FE00}',
-    '\u{85CD}',
-    '\u{FE00}',
-    '\u{85FA}',
-    '\u{FE00}',
-    '\u{8606}',
-    '\u{FE00}',
-    '\u{8612}',
-    '\u{FE00}',
-    '\u{862D}',
-    '\u{FE00}',
-    '\u{863F}',
-    '\u{FE00}',
-    '\u{8650}',
-    '\u{FE00}',
-    '\u{865C}',
-    '\u{FE00}',
-    '\u{865C}',
-    '\u{FE01}',
-    '\u{8667}',
-    '\u{FE00}',
-    '\u{8669}',
-    '\u{FE00}',
-    '\u{8688}',
-    '\u{FE00}',
-    '\u{86A9}',
-    '\u{FE00}',
-    '\u{86E2}',
-    '\u{FE00}',
-    '\u{870E}',
-    '\u{FE00}',
-    '\u{8728}',
-    '\u{FE00}',
-    '\u{876B}',
-    '\u{FE00}',
-    '\u{8779}',
-    '\u{FE00}',
-    '\u{8779}',
-    '\u{FE01}',
-    '\u{8786}',
-    '\u{FE00}',
-    '\u{87BA}',
-    '\u{FE00}',
-    '\u{87E1}',
-    '\u{FE00}',
-    '\u{8801}',
-    '\u{FE00}',
-    '\u{881F}',
-    '\u{FE00}',
-    '\u{884C}',
-    '\u{FE00}',
-    '\u{8860}',
-    '\u{FE00}',
-    '\u{8863}',
-    '\u{FE00}',
-    '\u{88C2}',
-    '\u{FE00}',
-    '\u{88CF}',
-    '\u{FE00}',
-    '\u{88D7}',
-    '\u{FE00}',
-    '\u{88DE}',
-    '\u{FE00}',
-    '\u{88E1}',
-    '\u{FE00}',
-    '\u{88F8}',
-    '\u{FE00}',
-    '\u{88FA}',
-    '\u{FE00}',
-    '\u{8910}',
-    '\u{FE00}',
-    '\u{8941}',
-    '\u{FE00}',
-    '\u{8964}',
-    '\u{FE00}',
-    '\u{8986}',
-    '\u{FE00}',
-    '\u{898B}',
-    '\u{FE00}',
-    '\u{8996}',
-    '\u{FE00}',
-    '\u{8996}',
-    '\u{FE01}',
-    '\u{8AA0}',
-    '\u{FE00}',
-    '\u{8AAA}',
-    '\u{FE00}',
-    '\u{8AAA}',
-    '\u{FE01}',
-    '\u{8ABF}',
-    '\u{FE00}',
-    '\u{8ACB}',
-    '\u{FE00}',
-    '\u{8AD2}',
-    '\u{FE00}',
-    '\u{8AD6}',
-    '\u{FE00}',
-    '\u{8AED}',
-    '\u{FE00}',
-    '\u{8AED}',
-    '\u{FE01}',
-    '\u{8AF8}',
-    '\u{FE00}',
-    '\u{8AF8}',
-    '\u{FE01}',
-    '\u{8AFE}',
-    '\u{FE00}',
-    '\u{8AFE}',
-    '\u{FE01}',
-    '\u{8B01}',
-    '\u{FE00}',
-    '\u{8B01}',
-    '\u{FE01}',
-    '\u{8B39}',
-    '\u{FE00}',
-    '\u{8B39}',
-    '\u{FE01}',
-    '\u{8B58}',
-    '\u{FE00}',
-    '\u{8B80}',
-    '\u{FE00}',
-    '\u{8B8A}',
-    '\u{FE00}',
-    '\u{8B8A}',
-    '\u{FE01}',
-    '\u{8C48}',
-    '\u{FE00}',
-    '\u{8C55}',
-    '\u{FE00}',
-    '\u{8CAB}',
-    '\u{FE00}',
-    '\u{8CC1}',
-    '\u{FE00}',
-    '\u{8CC2}',
-    '\u{FE00}',
-    '\u{8CC8}',
-    '\u{FE00}',
-    '\u{8CD3}',
-    '\u{FE00}',
-    '\u{8D08}',
-    '\u{FE00}',
-    '\u{8D08}',
-    '\u{FE01}',
-    '\u{8D1B}',
-    '\u{FE00}',
-    '\u{8D77}',
-    '\u{FE00}',
-    '\u{8DBC}',
-    '\u{FE00}',
-    '\u{8DCB}',
-    '\u{FE00}',
-    '\u{8DEF}',
-    '\u{FE00}',
-    '\u{8DF0}',
-    '\u{FE00}',
-    '\u{8ECA}',
-    '\u{FE00}',
-    '\u{8ED4}',
-    '\u{FE00}',
-    '\u{8F26}',
-    '\u{FE00}',
-    '\u{8F2A}',
-    '\u{FE00}',
-    '\u{8F38}',
-    '\u{FE00}',
-    '\u{8F38}',
-    '\u{FE01}',
-    '\u{8F3B}',
-    '\u{FE00}',
-    '\u{8F62}',
-    '\u{FE00}',
-    '\u{8F9E}',
-    '\u{FE00}',
-    '\u{8FB0}',
-    '\u{FE00}',
-    '\u{8FB6}',
-    '\u{FE00}',
-    '\u{9023}',
-    '\u{FE00}',
-    '\u{9038}',
-    '\u{FE00}',
-    '\u{9038}',
-    '\u{FE01}',
-    '\u{9072}',
-    '\u{FE00}',
-    '\u{907C}',
-    '\u{FE00}',
-    '\u{908F}',
-    '\u{FE00}',
-    '\u{9094}',
-    '\u{FE00}',
-    '\u{90CE}',
-    '\u{FE00}',
-    '\u{90DE}',
-    '\u{FE00}',
-    '\u{90F1}',
-    '\u{FE00}',
-    '\u{90FD}',
-    '\u{FE00}',
-    '\u{9111}',
-    '\u{FE00}',
-    '\u{911B}',
-    '\u{FE00}',
-    '\u{916A}',
-    '\u{FE00}',
-    '\u{9199}',
-    '\u{FE00}',
-    '\u{91B4}',
-    '\u{FE00}',
-    '\u{91CC}',
-    '\u{FE00}',
-    '\u{91CF}',
-    '\u{FE00}',
-    '\u{91D1}',
-    '\u{FE00}',
-    '\u{9234}',
-    '\u{FE00}',
-    '\u{9238}',
-    '\u{FE00}',
-    '\u{9276}',
-    '\u{FE00}',
-    '\u{927C}',
-    '\u{FE00}',
-    '\u{92D7}',
-    '\u{FE00}',
-    '\u{92D8}',
-    '\u{FE00}',
-    '\u{9304}',
-    '\u{FE00}',
-    '\u{934A}',
-    '\u{FE00}',
-    '\u{93F9}',
-    '\u{FE00}',
-    '\u{9415}',
-    '\u{FE00}',
-    '\u{958B}',
-    '\u{FE00}',
-    '\u{95AD}',
-    '\u{FE00}',
-    '\u{95B7}',
-    '\u{FE00}',
-    '\u{962E}',
-    '\u{FE00}',
-    '\u{964B}',
-    '\u{FE00}',
-    '\u{964D}',
-    '\u{FE00}',
-    '\u{9675}',
-    '\u{FE00}',
-    '\u{9678}',
-    '\u{FE00}',
-    '\u{967C}',
-    '\u{FE00}',
-    '\u{9686}',
-    '\u{FE00}',
-    '\u{96A3}',
-    '\u{FE00}',
-    '\u{96B7}',
-    '\u{FE00}',
-    '\u{96B8}',
-    '\u{FE00}',
-    '\u{96C3}',
-    '\u{FE00}',
-    '\u{96E2}',
-    '\u{FE00}',
-    '\u{96E3}',
-    '\u{FE00}',
-    '\u{96E3}',
-    '\u{FE01}',
-    '\u{96F6}',
-    '\u{FE00}',
-    '\u{96F7}',
-    '\u{FE00}',
-    '\u{9723}',
-    '\u{FE00}',
-    '\u{9732}',
-    '\u{FE00}',
-    '\u{9748}',
-    '\u{FE00}',
-    '\u{9756}',
-    '\u{FE00}',
-    '\u{9756}',
-    '\u{FE01}',
-    '\u{97DB}',
-    '\u{FE00}',
-    '\u{97E0}',
-    '\u{FE00}',
-    '\u{97FF}',
-    '\u{FE00}',
-    '\u{97FF}',
-    '\u{FE01}',
-    '\u{980B}',
-    '\u{FE00}',
-    '\u{980B}',
-    '\u{FE01}',
-    '\u{980B}',
-    '\u{FE02}',
-    '\u{9818}',
-    '\u{FE00}',
-    '\u{9829}',
-    '\u{FE00}',
-    '\u{983B}',
-    '\u{FE00}',
-    '\u{983B}',
-    '\u{FE01}',
-    '\u{985E}',
-    '\u{FE00}',
-    '\u{98E2}',
-    '\u{FE00}',
-    '\u{98EF}',
-    '\u{FE00}',
-    '\u{98FC}',
-    '\u{FE00}',
-    '\u{9928}',
-    '\u{FE00}',
-    '\u{9929}',
-    '\u{FE00}',
-    '\u{99A7}',
-    '\u{FE00}',
-    '\u{99C2}',
-    '\u{FE00}',
-    '\u{99F1}',
-    '\u{FE00}',
-    '\u{99FE}',
-    '\u{FE00}',
-    '\u{9A6A}',
-    '\u{FE00}',
-    '\u{9B12}',
-    '\u{FE00}',
-    '\u{9B12}',
-    '\u{FE01}',
-    '\u{9B6F}',
-    '\u{FE00}',
-    '\u{9C40}',
-    '\u{FE00}',
-    '\u{9C57}',
-    '\u{FE00}',
-    '\u{9CFD}',
-    '\u{FE00}',
-    '\u{9D67}',
-    '\u{FE00}',
-    '\u{9DB4}',
-    '\u{FE00}',
-    '\u{9DFA}',
-    '\u{FE00}',
-    '\u{9E1E}',
-    '\u{FE00}',
-    '\u{9E7F}',
-    '\u{FE00}',
-    '\u{9E97}',
-    '\u{FE00}',
-    '\u{9E9F}',
-    '\u{FE00}',
-    '\u{9EBB}',
-    '\u{FE00}',
-    '\u{9ECE}',
-    '\u{FE00}',
-    '\u{9EF9}',
-    '\u{FE00}',
-    '\u{9EFE}',
-    '\u{FE00}',
-    '\u{9F05}',
-    '\u{FE00}',
-    '\u{9F0F}',
-    '\u{FE00}',
-    '\u{9F16}',
-    '\u{FE00}',
-    '\u{9F3B}',
-    '\u{FE00}',
-    '\u{9F43}',
-    '\u{FE00}',
-    '\u{9F8D}',
-    '\u{FE00}',
-    '\u{9F8E}',
-    '\u{FE00}',
-    '\u{9F9C}',
-    '\u{FE00}',
-    '\u{9F9C}',
-    '\u{FE01}',
-    '\u{9F9C}',
-    '\u{FE02}',
-    '\u{20122}',
-    '\u{FE00}',
-    '\u{2051C}',
-    '\u{FE00}',
-    '\u{20525}',
-    '\u{FE00}',
-    '\u{2054B}',
-    '\u{FE00}',
-    '\u{2063A}',
-    '\u{FE00}',
-    '\u{20804}',
-    '\u{FE00}',
-    '\u{208DE}',
-    '\u{FE00}',
-    '\u{20A2C}',
-    '\u{FE00}',
-    '\u{20B63}',
-    '\u{FE00}',
-    '\u{214E4}',
-    '\u{FE00}',
-    '\u{216A8}',
-    '\u{FE00}',
-    '\u{216EA}',
-    '\u{FE00}',
-    '\u{219C8}',
-    '\u{FE00}',
-    '\u{21B18}',
-    '\u{FE00}',
-    '\u{21D0B}',
-    '\u{FE00}',
-    '\u{21DE4}',
-    '\u{FE00}',
-    '\u{21DE6}',
-    '\u{FE00}',
-    '\u{22183}',
-    '\u{FE00}',
-    '\u{2219F}',
-    '\u{FE00}',
-    '\u{22331}',
-    '\u{FE00}',
-    '\u{22331}',
-    '\u{FE01}',
-    '\u{226D4}',
-    '\u{FE00}',
-    '\u{22844}',
-    '\u{FE00}',
-    '\u{2284A}',
-    '\u{FE00}',
-    '\u{22B0C}',
-    '\u{FE00}',
-    '\u{22BF1}',
-    '\u{FE00}',
-    '\u{2300A}',
-    '\u{FE00}',
-    '\u{232B8}',
-    '\u{FE00}',
-    '\u{2335F}',
-    '\u{FE00}',
-    '\u{23393}',
-    '\u{FE00}',
-    '\u{2339C}',
-    '\u{FE00}',
-    '\u{233C3}',
-    '\u{FE00}',
-    '\u{233D5}',
-    '\u{FE00}',
-    '\u{2346D}',
-    '\u{FE00}',
-    '\u{236A3}',
-    '\u{FE00}',
-    '\u{238A7}',
-    '\u{FE00}',
-    '\u{23A8D}',
-    '\u{FE00}',
-    '\u{23AFA}',
-    '\u{FE00}',
-    '\u{23CBC}',
-    '\u{FE00}',
-    '\u{23D1E}',
-    '\u{FE00}',
-    '\u{23ED1}',
-    '\u{FE00}',
-    '\u{23F5E}',
-    '\u{FE00}',
-    '\u{23F8E}',
-    '\u{FE00}',
-    '\u{24263}',
-    '\u{FE00}',
-    '\u{242EE}',
-    '\u{FE00}',
-    '\u{243AB}',
-    '\u{FE00}',
-    '\u{24608}',
-    '\u{FE00}',
-    '\u{24735}',
-    '\u{FE00}',
-    '\u{24814}',
-    '\u{FE00}',
-    '\u{24C36}',
-    '\u{FE00}',
-    '\u{24C92}',
-    '\u{FE00}',
-    '\u{24FA1}',
-    '\u{FE00}',
-    '\u{24FB8}',
-    '\u{FE00}',
-    '\u{25044}',
-    '\u{FE00}',
-    '\u{250F2}',
-    '\u{FE00}',
-    '\u{250F3}',
-    '\u{FE00}',
-    '\u{25119}',
-    '\u{FE00}',
-    '\u{25133}',
-    '\u{FE00}',
-    '\u{25249}',
-    '\u{FE00}',
-    '\u{2541D}',
-    '\u{FE00}',
-    '\u{25626}',
-    '\u{FE00}',
-    '\u{2569A}',
-    '\u{FE00}',
-    '\u{256C5}',
-    '\u{FE00}',
-    '\u{2597C}',
-    '\u{FE00}',
-    '\u{25AA7}',
-    '\u{FE00}',
-    '\u{25AA7}',
-    '\u{FE01}',
-    '\u{25BAB}',
-    '\u{FE00}',
-    '\u{25C80}',
-    '\u{FE00}',
-    '\u{25CD0}',
-    '\u{FE00}',
-    '\u{25F86}',
-    '\u{FE00}',
-    '\u{261DA}',
-    '\u{FE00}',
-    '\u{26228}',
-    '\u{FE00}',
-    '\u{26247}',
-    '\u{FE00}',
-    '\u{262D9}',
-    '\u{FE00}',
-    '\u{2633E}',
-    '\u{FE00}',
-    '\u{264DA}',
-    '\u{FE00}',
-    '\u{26523}',
-    '\u{FE00}',
-    '\u{265A8}',
-    '\u{FE00}',
-    '\u{267A7}',
-    '\u{FE00}',
-    '\u{267B5}',
-    '\u{FE00}',
-    '\u{26B3C}',
-    '\u{FE00}',
-    '\u{26C36}',
-    '\u{FE00}',
-    '\u{26CD5}',
-    '\u{FE00}',
-    '\u{26D6B}',
-    '\u{FE00}',
-    '\u{26F2C}',
-    '\u{FE00}',
-    '\u{26FB1}',
-    '\u{FE00}',
-    '\u{270D2}',
-    '\u{FE00}',
-    '\u{273CA}',
-    '\u{FE00}',
-    '\u{27667}',
-    '\u{FE00}',
-    '\u{278AE}',
-    '\u{FE00}',
-    '\u{27966}',
-    '\u{FE00}',
-    '\u{27CA8}',
-    '\u{FE00}',
-    '\u{27ED3}',
-    '\u{FE00}',
-    '\u{27F2F}',
-    '\u{FE00}',
-    '\u{285D2}',
-    '\u{FE00}',
-    '\u{285ED}',
-    '\u{FE00}',
-    '\u{2872E}',
-    '\u{FE00}',
-    '\u{28BFA}',
-    '\u{FE00}',
-    '\u{28D77}',
-    '\u{FE00}',
-    '\u{29145}',
-    '\u{FE00}',
-    '\u{291DF}',
-    '\u{FE00}',
-    '\u{2921A}',
-    '\u{FE00}',
-    '\u{2940A}',
-    '\u{FE00}',
-    '\u{29496}',
-    '\u{FE00}',
-    '\u{295B6}',
-    '\u{FE00}',
-    '\u{29B30}',
-    '\u{FE00}',
-    '\u{2A0CE}',
-    '\u{FE00}',
-    '\u{2A105}',
-    '\u{FE00}',
-    '\u{2A20E}',
-    '\u{FE00}',
-    '\u{2A291}',
-    '\u{FE00}',
-    '\u{2A392}',
-    '\u{FE00}',
-    '\u{2A600}',
-    '\u{FE00}',
-];
-pub(crate) const CJK_COMPAT_VARIANTS_DECOMPOSED_SALT: &[u16] = &[
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x162,
-    0x14,
-    0xb6,
-    0x0,
-    0x183,
-    0xd,
-    0x0,
-    0x0,
-    0x35,
-    0x11,
-    0x7,
-    0x0,
-    0x1c,
-    0x0,
-    0x1,
-    0x0,
-    0xd3,
-    0xb,
-    0xa,
-    0xe1,
-    0x0,
-    0x0,
-    0x0,
-    0x48,
-    0x72,
-    0xc7,
-    0x2,
-    0x21,
-    0x15,
-    0x2c,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x1f,
-    0x8,
-    0x7,
-    0x0,
-    0x4,
-    0x0,
-    0x7,
-    0x10,
-    0x0,
-    0x0,
-    0x0,
-    0x4e,
-    0x0,
-    0x6,
-    0x0,
-    0x11,
-    0x14,
-    0x4,
-    0x1a,
-    0x2,
-    0x58,
-    0x0,
-    0x17,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x6,
-    0x16,
-    0x20,
-    0x4,
-    0x0,
-    0x1e,
-    0x30,
-    0x0,
-    0x24,
-    0x1a,
-    0x17,
-    0x0,
-    0xa0,
-    0x29,
-    0x34,
-    0x2,
-    0x0,
-    0x4,
-    0x0,
-    0x23,
-    0x29,
-    0x21,
-    0x0,
-    0x0,
-    0xb,
-    0x0,
-    0x20,
-    0x1,
-    0x7,
-    0x8,
-    0x9,
-    0x8,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x4,
-    0x3,
-    0x1d,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x29,
-    0xd,
-    0x7,
-    0x0,
-    0x0,
-    0x2,
-    0xe,
-    0x9,
-    0x4,
-    0xc,
-    0x1,
-    0x13,
-    0x5,
-    0x6,
-    0x5,
-    0x1,
-    0x9,
-    0x1,
-    0xa,
-    0x2,
-    0x0,
-    0x8,
-    0x29,
-    0x0,
-    0x8,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xd,
-    0x0,
-    0x9,
-    0x10,
-    0xf,
-    0x0,
-    0x11,
-    0xf,
-    0x0,
-    0x8,
-    0x1,
-    0x1,
-    0x5,
-    0x0,
-    0x1,
-    0x26,
-    0x5,
-    0x39,
-    0x8,
-    0x1,
-    0x17,
-    0xd,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xe,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x2,
-    0x4,
-    0x3,
-    0x35,
-    0x1,
-    0x2,
-    0x1,
-    0x7,
-    0x0,
-    0x0,
-    0x3,
-    0x2,
-    0x11,
-    0x0,
-    0xd,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x5,
-    0x0,
-    0xe,
-    0x0,
-    0x0,
-    0x3,
-    0x6,
-    0x2,
-    0xb,
-    0x2,
-    0x1,
-    0x3,
-    0x12,
-    0xb,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0xb,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2f,
-    0x1,
-    0x13,
-    0xb,
-    0x4,
-    0x2,
-    0x4,
-    0x4,
-    0x0,
-    0xb,
-    0x4,
-    0x0,
-    0xb,
-    0x4,
-    0xd,
-    0xc,
-    0x0,
-    0x1e,
-    0x0,
-    0x21,
-    0xd,
-    0x2,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x20,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1f,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x11,
-    0x2,
-    0x8,
-    0x7,
-    0x0,
-    0x0,
-    0xc,
-    0x3,
-    0x0,
-    0x4,
-    0xe,
-    0x23,
-    0x4,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x4,
-    0x8,
-    0x10,
-    0x2,
-    0x0,
-    0x13,
-    0xd,
-    0x0,
-    0xb,
-    0x9,
-    0x6,
-    0x0,
-    0x0,
-    0x9,
-    0xc,
-    0xa,
-    0x4,
-    0x1a,
-    0x3,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x3,
-    0xa,
-    0x0,
-    0xa,
-    0x6,
-    0x8,
-    0x8,
-    0x3,
-    0x19,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xc,
-    0x5,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x8,
-    0x0,
-    0xc,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x15,
-    0x0,
-    0x4,
-    0x1,
-    0x12,
-    0x4,
-    0x3,
-    0xc,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x5,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x10,
-    0x4,
-    0x0,
-    0x5,
-    0x2,
-    0x1,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xa,
-    0x8,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x4,
-    0xc,
-    0x2,
-    0x0,
-    0x6,
-    0x3,
-    0x3,
-    0xf,
-    0x0,
-    0x3,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x2,
-    0x4,
-    0x2,
-    0x13,
-    0x0,
-    0x0,
-    0x0,
-    0xa,
-    0x6,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xa,
-    0x0,
-    0x5,
-    0x0,
-    0x5,
-    0x0,
-    0x6,
-    0x0,
-    0x1,
-    0x1,
-    0x5,
-    0x1,
-    0xa,
-    0x9,
-    0x5,
-    0x1,
-    0x0,
-    0x7,
-    0x1,
-    0x1,
-    0x7,
-    0x1,
-    0x1f,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x11,
-    0x5,
-    0x3,
-    0x5,
-    0x3,
-    0x1,
-    0x1,
-    0x0,
-    0x4,
-    0x1,
-    0x4,
-    0x1,
-    0x8,
-    0x0,
-    0x19,
-    0x0,
-    0x4,
-    0x3,
-    0x5,
-    0x6,
-    0x0,
-    0x11,
-    0xe,
-    0x5,
-    0x1,
-    0x0,
-    0x1a,
-    0x4,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x1,
-    0x17,
-    0x0,
-    0x6,
-    0x3,
-    0xf,
-    0x1,
-    0x6,
-    0x9,
-    0x0,
-    0x5,
-    0x0,
-    0x3,
-    0x1,
-    0x17,
-    0x7,
-    0x0,
-    0x2,
-    0x5,
-    0x3,
-    0x2,
-    0x0,
-    0x7,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x5,
-    0x15,
-    0x4,
-    0x0,
-    0x3,
-    0x1,
-    0x3,
-    0x7,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x8,
-    0x0,
-    0x2,
-    0x2,
-    0x3,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x8,
-    0x3,
-    0x2,
-    0x0,
-    0x9,
-    0x4,
-    0x0,
-    0x6,
-    0xf,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x2,
-    0x4,
-    0x4,
-    0xd,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x5,
-    0x0,
-    0x0,
-    0xc,
-    0x4,
-    0x9,
-    0x2,
-    0x8,
-    0x1,
-    0x0,
-    0x5,
-    0x4,
-    0x1,
-    0x2,
-    0x1,
-    0x5,
-    0x2,
-    0xb,
-    0x4,
-    0xd,
-    0x4,
-    0x0,
-    0x1,
-    0x18,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0xa,
-    0x2,
-    0x4,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xc,
-    0x1,
-    0xc,
-    0x1,
-    0x9,
-    0xb,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x7,
-    0x2,
-    0x0,
-    0x6,
-    0x4,
-    0xa,
-    0x1,
-    0x1,
-    0x5,
-    0x2,
-    0x6,
-    0x4,
-    0x3,
-    0xd,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x3,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-    0x5,
-    0x2,
-    0x5,
-    0x2,
-    0x1,
-    0x4,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x7,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x4,
-    0x8,
-    0x0,
-    0x3,
-    0x2,
-    0x2,
-    0x2,
-    0x2,
-    0x4,
-    0x1,
-    0x4,
-    0x2,
-    0x0,
-    0x1,
-    0x4,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0xc,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x6,
-    0x2,
-    0x0,
-    0x0,
-    0x8,
-    0x1,
-    0x9,
-    0x1,
-    0x3,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x3,
-    0x7,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-    0x2,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x3,
-    0x1,
-    0x3,
-    0x0,
-    0x5,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x2,
-    0x3,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x3,
-    0x2,
-    0x4,
-    0x3,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x4,
-    0x3,
-    0x0,
-    0x1,
-    0x6,
-    0x1,
-    0x4,
-    0x0,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0xd,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x3,
-    0x8,
-    0x5,
-    0x7,
-    0x6,
-    0x0,
-    0x1,
-    0x6,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x4,
-    0x2,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x3,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x2,
-    0x1,
-    0x2,
-    0x1,
-    0x9,
-    0x1,
-    0x0,
-    0x1,
-    0x3,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x4,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x6,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x5,
-    0x1,
-];
-pub(crate) const CJK_COMPAT_VARIANTS_DECOMPOSED_KV: &[(u32, (u16, u16))] = &[
-    (0xfa08, (1448, 2)),
-    (0x2f825, (280, 2)),
-    (0x2f838, (1796, 2)),
-    (0x2f95b, (1192, 2)),
-    (0x2f8fb, (1856, 2)),
-    (0x2f83a, (340, 2)),
-    (0x2f8a7, (636, 2)),
-    (0x2f856, (422, 2)),
-    (0x2f810, (208, 2)),
-    (0xfa8b, (668, 2)),
-    (0xfa7a, (378, 2)),
-    (0x2f9ef, (118, 2)),
-    (0x2f959, (1188, 2)),
-    (0xf9c8, (804, 2)),
-    (0xf9c4, (1770, 2)),
-    (0x2f833, (328, 2)),
-    (0xf96c, (430, 2)),
-    (0xf9a1, (1486, 2)),
-    (0xf906, (336, 2)),
-    (0x2fa01, (1988, 2)),
-    (0xf94c, (844, 2)),
-    (0xf90f, (1274, 2)),
-    (0x2f8dd, (1842, 2)),
-    (0xfa55, (1194, 2)),
-    (0x2f860, (1800, 2)),
-    (0x2f999, (1350, 2)),
-    (0xfabc, (1510, 2)),
-    (0x2f9b9, (1428, 2)),
-    (0xf943, (582, 2)),
-    (0x2f952, (1900, 2)),
-    (0x2f8f1, (856, 2)),
-    (0xf99c, (256, 2)),
-    (0xf969, (748, 2)),
-    (0xf98d, (1568, 2)),
-    (0xfa7f, (460, 2)),
-    (0x2f9d6, (1542, 2)),
-    (0x2f81b, (236, 2)),
-    (0xfa9d, (1126, 2)),
-    (0x2f8e4, (826, 2)),
-    (0xfa94, (800, 2)),
-    (0x2f890, (580, 2)),
-    (0xf93d, (1244, 2)),
-    (0x2f924, (1016, 2)),
-    (0x2f983, (1308, 2)),
-    (0xfa2f, (1656, 2)),
-    (0x2f891, (1818, 2)),
-    (0x2f934, (1072, 2)),
-    (0x2f835, (972, 2)),
-    (0x2f899, (590, 2)),
-    (0x2f8ae, (660, 2)),
-    (0xf9d6, (922, 2)),
-    (0x2f9a0, (1358, 2)),
-    (0xfac2, (1562, 2)),
-    (0x2f851, (442, 2)),
-    (0x2f804, (166, 2)),
-    (0x2f90d, (1860, 2)),
-    (0xf95e, (148, 2)),
-    (0x2f8da, (794, 2)),
-    (0x2f885, (550, 2)),
-    (0x2f96a, (1232, 2)),
-    (0xf907, (1774, 2)),
-    (0xf9f9, (1218, 2)),
-    (0xf94b, (514, 2)),
-    (0x2f915, (962, 2)),
-    (0xf9f1, (1654, 2)),
-    (0x2f86d, (490, 2)),
-    (0x2f921, (1010, 2)),
-    (0xfa96, (870, 2)),
-    (0xf9e0, (758, 2)),
-    (0xf921, (532, 2)),
-    (0x2f99f, (1386, 2)),
-    (0x2f8b2, (678, 2)),
-    (0xfab1, (1266, 2)),
-    (0xfa6c, (1868, 2)),
-    (0x2f819, (162, 2)),
-    (0x2f910, (1862, 2)),
-    (0x2f8dc, (798, 2)),
-    (0x2f9d3, (1962, 2)),
-    (0x2f8a3, (622, 2)),
-    (0xf915, (892, 2)),
-    (0x2f88a, (20, 2)),
-    (0xf9f6, (1314, 2)),
-    (0x2f9f1, (1976, 2)),
-    (0xf98e, (556, 2)),
-    (0xfad5, (1896, 2)),
-    (0xf93b, (1132, 2)),
-    (0x2f91e, (994, 2)),
-    (0xf9eb, (308, 2)),
-    (0xfa42, (754, 2)),
-    (0x2f958, (78, 2)),
-    (0xfa19, (1164, 2)),
-    (0xfaaa, (1118, 2)),
-    (0x2f949, (70, 2)),
-    (0x2f978, (1276, 2)),
-    (0x2f8a9, (638, 2)),
-    (0x2f90a, (50, 2)),
-    (0x2f89a, (594, 2)),
-    (0x2f8b5, (688, 2)),
-    (0x2f94c, (74, 2)),
-    (0xfa43, (768, 2)),
-    (0xf997, (1296, 2)),
-    (0x2f8ba, (698, 2)),
-    (0xfa00, (252, 2)),
-    (0xfac3, (1582, 2)),
-    (0x2f948, (1122, 2)),
-    (0x2f9f4, (540, 2)),
-    (0xfa99, (938, 2)),
-    (0x2f976, (1272, 2)),
-    (0xf978, (214, 2)),
-    (0x2f8fe, (878, 2)),
-    (0x2f8e3, (1846, 2)),
-    (0xf919, (1602, 2)),
-    (0x2f8ef, (854, 2)),
-    (0xf939, (1730, 2)),
-    (0x2f8c9, (746, 2)),
-    (0x2f844, (370, 2)),
-    (0xfabb, (1490, 2)),
-    (0x2f9c4, (1452, 2)),
-    (0x2f984, (96, 2)),
-    (0x2f802, (152, 2)),
-    (0xfa15, (246, 2)),
-    (0xf9be, (750, 2)),
-    (0xf942, (440, 2)),
-    (0x2f852, (414, 2)),
-    (0xfaae, (1216, 2)),
-    (0x2fa17, (1756, 2)),
-    (0x2f92d, (58, 2)),
-    (0x2f83f, (354, 2)),
-    (0xf90c, (456, 2)),
-    (0xf931, (848, 2)),
-    (0xf9c1, (1094, 2)),
-    (0x2f873, (506, 2)),
-    (0x2f965, (1914, 2)),
-    (0xf902, (1554, 2)),
-    (0x2f805, (176, 2)),
-    (0x2f8ca, (1832, 2)),
-    (0xf9c7, (270, 2)),
-    (0x2f8f4, (864, 2)),
-    (0xfa0d, (390, 2)),
-    (0xfa5c, (1316, 2)),
-    (0xfa4c, (1150, 2)),
-    (0x2f865, (466, 2)),
-    (0x2f876, (14, 2)),
-    (0x2f9d7, (1544, 2)),
-    (0xf975, (712, 2)),
-    (0x2f9bb, (1436, 2)),
-    (0x2f9d2, (1526, 2)),
-    (0xf9ed, (346, 2)),
-    (0x2f9b4, (1416, 2)),
-    (0xfa6d, (1324, 2)),
-    (0xf9e5, (1086, 2)),
-    (0x2f8d8, (788, 2)),
-    (0x2f93d, (1886, 2)),
-    (0xfa03, (1224, 2)),
-    (0xf9a0, (1454, 2)),
-    (0x2fa12, (1994, 2)),
-    (0xfa63, (1512, 2)),
-    (0xf920, (1744, 2)),
-    (0xf91f, (1408, 2)),
-    (0x2f97d, (1294, 2)),
-    (0xf990, (676, 2)),
-    (0xfa57, (1252, 2)),
-    (0x2f975, (1926, 2)),
-    (0xfad8, (1768, 2)),
-    (0xfab3, (1356, 2)),
-    (0x2f9f3, (1660, 2)),
-    (0xf9fb, (978, 2)),
-    (0xf918, (1380, 2)),
-    (0x2f8c3, (728, 2)),
-    (0xf9ca, (900, 2)),
-    (0xf952, (286, 2)),
-    (0x2fa0b, (1732, 2)),
-    (0x2f941, (1890, 2)),
-    (0x2f862, (468, 2)),
-    (0x2f8ff, (890, 2)),
-    (0x2f85d, (450, 2)),
-    (0xf9d9, (632, 2)),
-    (0x2f855, (412, 2)),
-    (0x2f98f, (1334, 2)),
-    (0xf9d4, (184, 2)),
-    (0xf99e, (360, 2)),
-    (0x2f850, (254, 2)),
-    (0xfa22, (1500, 2)),
-    (0x2f94f, (1134, 2)),
-    (0xfaa9, (1120, 2)),
-    (0xfa71, (234, 2)),
-    (0xf95d, (1504, 2)),
-    (0x2f8bd, (720, 2)),
-    (0x2fa02, (1706, 2)),
-    (0x2f93f, (64, 2)),
-    (0x2f808, (186, 2)),
-    (0x2f950, (1142, 2)),
-    (0x2f933, (60, 2)),
-    (0x2f853, (416, 2)),
-    (0x2f8f0, (1850, 2)),
-    (0xf967, (140, 2)),
-    (0xfa16, (1026, 2)),
-    (0xfaa6, (1100, 2)),
-    (0x2f8b3, (680, 2)),
-    (0x2f9f7, (1982, 2)),
-    (0xf986, (1636, 2)),
-    (0x2f99d, (1364, 2)),
-    (0x2f9b8, (1422, 2)),
-    (0xf998, (1558, 2)),
-    (0x2f82b, (306, 2)),
-    (0x2f872, (504, 2)),
-    (0xfab9, (1488, 2)),
-    (0xfa9b, (964, 2)),
-    (0xf9b0, (1292, 2)),
-    (0xf98b, (776, 2)),
-    (0xfad1, (1844, 2)),
-    (0xf917, (1044, 2)),
-    (0x2f989, (1838, 2)),
-    (0x2f866, (476, 2)),
-    (0xf932, (1000, 2)),
-    (0x2fa0e, (134, 2)),
-    (0xfa07, (1566, 2)),
-    (0xf9bd, (510, 2)),
-    (0x2f88c, (562, 2)),
-    (0xfa56, (1204, 2)),
-    (0xfa64, (1536, 2)),
-    (0xfa04, (488, 2)),
-    (0xfa9e, (1008, 2)),
-    (0x2f9e0, (1968, 2)),
-    (0x2f89d, (604, 2)),
-    (0x2f9ee, (1634, 2)),
-    (0xf9db, (1036, 2)),
-    (0xf923, (1400, 2)),
-    (0x2f841, (362, 2)),
-    (0x2f81a, (232, 2)),
-    (0xf911, (1440, 2)),
-    (0xfaad, (1206, 2)),
-    (0xfac1, (1540, 2)),
-    (0x2f928, (1032, 2)),
-    (0x2f935, (1878, 2)),
-    (0x2f8d5, (772, 2)),
-    (0xf92e, (238, 2)),
-    (0xfa59, (1262, 2)),
-    (0x2f96b, (1918, 2)),
-    (0x2f8b9, (702, 2)),
-    (0x2f877, (512, 2)),
-    (0x2fa00, (1698, 2)),
-    (0xfa05, (894, 2)),
-    (0xf9e8, (1462, 2)),
-    (0x2f8c6, (730, 2)),
-    (0xf97a, (820, 2)),
-    (0x2f9ea, (1620, 2)),
-    (0xf944, (1214, 2)),
-    (0x2f8c4, (732, 2)),
-    (0x2f9cd, (114, 2)),
-    (0x2f8e5, (816, 2)),
-    (0x2f9d9, (1790, 2)),
-    (0x2f980, (1836, 2)),
-    (0x2f9a8, (1390, 2)),
-    (0x2f92f, (1054, 2)),
-    (0x2f951, (76, 2)),
-    (0x2f9f9, (124, 2)),
-    (0xfab4, (1376, 2)),
-    (0xf985, (1146, 2)),
-    (0x2f829, (300, 2)),
-    (0x2f8a2, (26, 2)),
-    (0x2f9c3, (1450, 2)),
-    (0x2f936, (1076, 2)),
-    (0x2f9af, (104, 2)),
-    (0xfa77, (296, 2)),
-    (0xf956, (1184, 2)),
-    (0xfa5f, (1384, 2)),
-    (0x2f93b, (1882, 2)),
-    (0xf914, (838, 2)),
-    (0x2f994, (1340, 2)),
-    (0x2f91b, (1784, 2)),
-    (0x2f880, (538, 2)),
-    (0x2f956, (1176, 2)),
-    (0xf958, (1378, 2)),
-    (0x2f99b, (1362, 2)),
-    (0x2fa06, (1718, 2)),
-    (0xfabf, (1514, 2)),
-    (0x2f8b6, (696, 2)),
-    (0x2f8a0, (618, 2)),
-    (0xfa87, (640, 2)),
-    (0x2f8ea, (836, 2)),
-    (0x2f867, (10, 2)),
-    (0xf97d, (1492, 2)),
-    (0xf968, (884, 2)),
-    (0xfa5a, (1268, 2)),
-    (0xf97b, (1228, 2)),
-    (0x2fa10, (1992, 2)),
-    (0xfa2b, (1710, 2)),
-    (0xfa75, (220, 2)),
-    (0xf94d, (920, 2)),
-    (0xfad4, (68, 2)),
-    (0x2f8cc, (780, 2)),
-    (0xfa8a, (644, 2)),
-    (0xf9f4, (808, 2)),
-    (0xfac6, (1650, 2)),
-    (0xfa9c, (992, 2)),
-    (0xfa10, (426, 2)),
-    (0xf9e2, (828, 2)),
-    (0xf947, (1138, 2)),
-    (0xf941, (1494, 2)),
-    (0xfa4e, (1152, 2)),
-    (0x2f9da, (1548, 2)),
-    (0x2f893, (1318, 2)),
-    (0xf96f, (1484, 2)),
-    (0xf983, (752, 2)),
-    (0xf9f5, (918, 2)),
-    (0xf962, (1082, 2)),
-    (0x2f968, (1230, 2)),
-    (0x2f923, (1872, 2)),
-    (0x2fa18, (1758, 2)),
-    (0x2f930, (1060, 2)),
-    (0xfa90, (744, 2)),
-    (0xfa54, (1186, 2)),
-    (0xf9d8, (596, 2)),
-    (0x2f9e4, (1598, 2)),
-    (0x2fa05, (1716, 2)),
-    (0x2f964, (82, 2)),
-    (0xf99f, (982, 2)),
-    (0x2f94b, (72, 2)),
-    (0x2f9a9, (1392, 2)),
-    (0xfa0c, (198, 2)),
-    (0x2f986, (478, 2)),
-    (0xfa85, (602, 2)),
-    (0x2f95f, (1200, 2)),
-    (0xf9f8, (1202, 2)),
-    (0xf9b4, (1696, 2)),
-    (0x2f82e, (316, 2)),
-    (0xfad9, (1772, 2)),
-    (0x2f937, (1880, 2)),
-    (0xf9cf, (1234, 2)),
-    (0xfaa1, (1058, 2)),
-    (0x2f917, (970, 2)),
-    (0xfaa5, (1092, 2)),
-    (0xfa3b, (516, 2)),
-    (0x2f88d, (564, 2)),
-    (0x2f906, (1858, 2)),
-    (0x2f901, (912, 2)),
-    (0x2f97a, (1290, 2)),
-    (0xfa60, (1468, 2)),
-    (0x2f92c, (56, 2)),
-    (0x2f80a, (196, 2)),
-    (0x2f99a, (1360, 2)),
-    (0x2fa13, (1996, 2)),
-    (0x2f938, (1084, 2)),
-    (0x2f813, (2, 2)),
-    (0x2f831, (324, 2)),
-    (0xfa1c, (1678, 2)),
-    (0xfacc, (1702, 2)),
-    (0xfa5e, (1330, 2)),
-    (0x2f995, (1342, 2)),
-    (0x2f8d3, (226, 2)),
-    (0xfacd, (1726, 2)),
-    (0x2f81d, (248, 2)),
-    (0x2f97b, (1930, 2)),
-    (0xfa3a, (432, 2)),
-    (0xf9c6, (1640, 2)),
-    (0xfabd, (1506, 2)),
-    (0xf92d, (170, 2)),
-    (0xf99b, (1628, 2)),
-    (0xf91d, (852, 2)),
-    (0x2f84d, (410, 2)),
-    (0x2f8ad, (658, 2)),
-    (0xf9d3, (1648, 2)),
-    (0x2f843, (366, 2)),
-    (0xf97c, (1326, 2)),
-    (0xfa30, (174, 2)),
-    (0x2f858, (434, 2)),
-    (0x2f8a5, (624, 2)),
-    (0x2f988, (1938, 2)),
-    (0x2f9e1, (1970, 2)),
-    (0xfa74, (200, 2)),
-    (0x2f882, (546, 2)),
-    (0x2f879, (526, 2)),
-    (0x2f8b7, (704, 2)),
-    (0xf940, (1746, 2)),
-    (0x2f9e5, (1972, 2)),
-    (0x2f9cf, (1482, 2)),
-    (0xfa8e, (722, 2)),
-    (0x2f90c, (936, 2)),
-    (0x2f985, (1310, 2)),
-    (0x2f849, (388, 2)),
-    (0x2f960, (80, 2)),
-    (0x2f8c2, (30, 2)),
-    (0x2f85f, (462, 2)),
-    (0x2f916, (52, 2)),
-    (0xf9fa, (1022, 2)),
-    (0x2f824, (8, 2)),
-    (0xf936, (1414, 2)),
-    (0x2f94a, (1124, 2)),
-    (0x2f80e, (204, 2)),
-    (0x2f913, (968, 2)),
-    (0x2f94d, (1898, 2)),
-    (0xf999, (1388, 2)),
-    (0x2f979, (1282, 2)),
-    (0x2f926, (1874, 2)),
-    (0xf9ea, (1662, 2)),
-    (0xfa3f, (650, 2)),
-    (0x2f83b, (342, 2)),
-    (0xfa5b, (1286, 2)),
-    (0xfa93, (790, 2)),
-    (0xf913, (1586, 2)),
-    (0xf98c, (860, 2)),
-    (0x2f8c0, (718, 2)),
-    (0xfad7, (1964, 2)),
-    (0xf98a, (272, 2)),
-    (0xfa26, (1596, 2)),
-    (0xfabe, (1496, 2)),
-    (0x2f977, (1928, 2)),
-    (0xf954, (244, 2)),
-    (0xf91a, (1720, 2)),
-    (0x2f8cd, (760, 2)),
-    (0x2f8a4, (1822, 2)),
-    (0xfa84, (592, 2)),
-    (0x2f85e, (452, 2)),
-    (0xfa9f, (1020, 2)),
-    (0xf9b1, (1614, 2)),
-    (0x2f9ca, (4, 2)),
-    (0xfac4, (1604, 2)),
-    (0xf927, (1446, 2)),
-    (0xfa01, (558, 2)),
-    (0xf929, (784, 2)),
-    (0xf9f3, (1750, 2)),
-    (0x2f9e6, (1600, 2)),
-    (0xfa70, (142, 2)),
-    (0x2f820, (262, 2)),
-    (0xf9a9, (406, 2)),
-    (0x2f9bf, (108, 2)),
-    (0x2f922, (1012, 2)),
-    (0x2f9de, (1556, 2)),
-    (0x2f8ec, (1848, 2)),
-    (0xf9b5, (172, 2)),
-    (0x2f9b7, (1424, 2)),
-    (0x2f981, (92, 2)),
-    (0xfa31, (194, 2)),
-    (0x2f9c1, (1444, 2)),
-    (0x2f874, (588, 2)),
-    (0xf9d0, (1704, 2)),
-    (0xf94a, (438, 2)),
-    (0x2f998, (1346, 2)),
-    (0x2f91c, (986, 2)),
-    (0x2f9df, (1564, 2)),
-    (0x2f859, (1798, 2)),
-    (0x2f883, (16, 2)),
-    (0xf9cc, (1048, 2)),
-    (0x2f9b5, (1418, 2)),
-    (0x2f970, (1264, 2)),
-    (0x2f814, (210, 2)),
-    (0x2f9ff, (1694, 2)),
-    (0x2f84c, (398, 2)),
-    (0x2f9a4, (1942, 2)),
-    (0x2f966, (1222, 2)),
-    (0xfa1e, (1280, 2)),
-    (0x2fa0c, (1736, 2)),
-    (0x2f863, (470, 2)),
-    (0xfaa2, (1070, 2)),
-    (0x2f91a, (980, 2)),
-    (0x2f8f8, (1808, 2)),
-    (0x2f8a6, (634, 2)),
-    (0x2f895, (586, 2)),
-    (0xf90b, (376, 2)),
-    (0x2f993, (1338, 2)),
-    (0x2f8be, (1830, 2)),
-    (0xf948, (1532, 2)),
-    (0x2f80d, (1788, 2)),
-    (0x2f81f, (6, 2)),
-    (0xf9e4, (1046, 2)),
-    (0x2f823, (268, 2)),
-    (0x2f9fa, (1684, 2)),
-    (0x2f8fa, (876, 2)),
-    (0xfa6a, (1700, 2)),
-    (0x2f9f0, (1638, 2)),
-    (0x2f967, (84, 2)),
-    (0xfa8f, (726, 2)),
-    (0xfa06, (774, 2)),
-    (0xf982, (578, 2)),
-    (0xf989, (1754, 2)),
-    (0x2f990, (1332, 2)),
-    (0xfac9, (1682, 2)),
-    (0x2f8ed, (850, 2)),
-    (0x2f822, (266, 2)),
-    (0xf9cb, (932, 2)),
-    (0xfa4d, (1154, 2)),
-    (0x2f944, (1894, 2)),
-    (0x2f9e8, (1622, 2)),
-    (0x2f8d2, (224, 2)),
-    (0x2f97c, (1932, 2)),
-    (0xfa68, (1664, 2)),
-    (0xfa53, (1172, 2)),
-    (0x2f8f5, (872, 2)),
-    (0x2f945, (1112, 2)),
-    (0xfa95, (862, 2)),
-    (0xfa2e, (1592, 2)),
-    (0xf91b, (154, 2)),
-    (0x2f837, (334, 2)),
-    (0x2f894, (584, 2)),
-    (0x2fa09, (1990, 2)),
-    (0x2f974, (90, 2)),
-    (0xf9ba, (156, 2)),
-    (0x2f80b, (190, 2)),
-    (0xfaca, (1688, 2)),
-    (0x2f969, (1226, 2)),
-    (0x2f8b1, (674, 2)),
-    (0x2f8d1, (34, 2)),
-    (0x2f91d, (1866, 2)),
-    (0x2f9d4, (1528, 2)),
-    (0x2fa15, (1752, 2)),
-    (0x2f954, (1902, 2)),
-    (0xfa81, (482, 2)),
-    (0x2f9a5, (1946, 2)),
-    (0x2f90f, (954, 2)),
-    (0xf92a, (908, 2)),
-    (0x2fa19, (1760, 2)),
-    (0x2f943, (1892, 2)),
-    (0x2f947, (1116, 2)),
-    (0x2fa0a, (1728, 2)),
-    (0x2f963, (1210, 2)),
-    (0xf9bb, (192, 2)),
-    (0x2f8ac, (662, 2)),
-    (0xf9c5, (766, 2)),
-    (0x2f97e, (1934, 2)),
-    (0x2f889, (1814, 2)),
-    (0x2f8e9, (834, 2)),
-    (0xf9da, (814, 2)),
-    (0xface, (1778, 2)),
-    (0x2f920, (1004, 2)),
-    (0xf951, (1642, 2)),
-    (0xf9bc, (500, 2)),
-    (0x2f940, (1108, 2)),
-    (0x2f84e, (400, 2)),
-    (0xfa48, (990, 2)),
-    (0x2fa08, (130, 2)),
-    (0xf9e6, (1270, 2)),
-    (0x2f8c8, (742, 2)),
-    (0xf912, (1464, 2)),
-    (0x2f8f7, (1852, 2)),
-    (0x2f904, (914, 2)),
-    (0xfa76, (278, 2)),
-    (0x2f8e8, (832, 2)),
-    (0x2f9e2, (1588, 2)),
-    (0xf903, (1534, 2)),
-    (0xfa9a, (950, 2)),
-    (0xf996, (1250, 2)),
-    (0x2f8db, (802, 2)),
-    (0xfa4a, (1050, 2)),
-    (0xfa6b, (616, 2)),
-    (0x2f8fd, (886, 2)),
-    (0xfa79, (368, 2)),
-    (0xf987, (1724, 2)),
-    (0x2f8f2, (48, 2)),
-    (0xf90d, (672, 2)),
-    (0xf922, (958, 2)),
-    (0xfa88, (630, 2)),
-    (0xf91c, (320, 2)),
-    (0x2f870, (502, 2)),
-    (0x2f9ac, (1398, 2)),
-    (0x2f839, (338, 2)),
-    (0x2fa03, (128, 2)),
-    (0x2f854, (418, 2)),
-    (0x2f92a, (54, 2)),
-    (0xfa35, (312, 2)),
-    (0x2f9e7, (1616, 2)),
-    (0x2f9a6, (1944, 2)),
-    (0xfaaf, (1240, 2)),
-    (0x2f911, (1864, 2)),
-    (0x2f95d, (1908, 2)),
-    (0x2f89c, (598, 2)),
-    (0xfa45, (910, 2)),
-    (0xfa1b, (1174, 2)),
-    (0xfa3d, (620, 2)),
-    (0xf980, (350, 2)),
-    (0xfa8c, (684, 2)),
-    (0x2f9e9, (1624, 2)),
-    (0x2f9f8, (122, 2)),
-    (0x2f902, (904, 2)),
-    (0x2fa1d, (2002, 2)),
-    (0xfab6, (1470, 2)),
-    (0xf995, (1180, 2)),
-    (0x2f832, (326, 2)),
-    (0x2f955, (1904, 2)),
-    (0x2f8fc, (882, 2)),
-    (0x2f875, (508, 2)),
-    (0x2f82a, (302, 2)),
-    (0x2f811, (218, 2)),
-    (0x2f868, (12, 2)),
-    (0x2f925, (1018, 2)),
-    (0xfa20, (1406, 2)),
-    (0x2f83e, (352, 2)),
-    (0xf9af, (1278, 2)),
-    (0x2f997, (1940, 2)),
-    (0x2f9ec, (1632, 2)),
-    (0xf9ab, (542, 2)),
-    (0xf935, (1404, 2)),
-    (0xfa80, (474, 2)),
-    (0x2f95c, (1906, 2)),
-    (0xfa92, (786, 2)),
-    (0xf95b, (692, 2)),
-    (0xf93e, (1366, 2)),
-    (0xf9de, (344, 2)),
-    (0xf9f0, (1402, 2)),
-    (0x2f847, (380, 2)),
-    (0xfa98, (944, 2)),
-    (0xf90e, (1096, 2)),
-    (0xfa4f, (1156, 2)),
-    (0xfaa4, (1090, 2)),
-    (0x2f9c0, (1442, 2)),
-    (0x2f8bf, (724, 2)),
-    (0xfa62, (1508, 2)),
-    (0xf9b6, (1178, 2)),
-    (0x2f826, (284, 2)),
-    (0xf9c9, (810, 2)),
-    (0x2f992, (276, 2)),
-    (0x2f8e1, (818, 2)),
-    (0xf959, (1646, 2)),
-    (0x2f892, (1820, 2)),
-    (0xfa18, (1148, 2)),
-    (0x2f87d, (1812, 2)),
-    (0xf970, (868, 2)),
-    (0x2f92b, (1040, 2)),
-    (0x2fa04, (1714, 2)),
-    (0xfa89, (652, 2)),
-    (0x2f9e3, (1594, 2)),
-    (0x2f9c2, (110, 2)),
-    (0xfacb, (1690, 2)),
-    (0x2f9c8, (112, 2)),
-    (0x2f908, (928, 2)),
-    (0x2f86f, (498, 2)),
-    (0x2f98a, (1840, 2)),
-    (0xf9a8, (164, 2)),
-    (0x2f8c7, (32, 2)),
-    (0x2fa16, (138, 2)),
-    (0xfa4b, (1136, 2)),
-    (0x2f878, (522, 2)),
-    (0x2f8bb, (706, 2)),
-    (0x2f816, (1786, 2)),
-    (0x2f86a, (484, 2)),
-    (0xf9c3, (1584, 2)),
-    (0xf945, (1300, 2)),
-    (0x2f9fe, (1692, 2)),
-    (0xfa86, (626, 2)),
-    (0x2f82c, (310, 2)),
-    (0xf988, (1748, 2)),
-    (0xfac5, (1618, 2)),
-    (0xfa66, (1574, 2)),
-    (0x2f840, (358, 2)),
-    (0xf9ee, (998, 2)),
-    (0x2f830, (322, 2)),
-    (0x2f914, (966, 2)),
-    (0x2f942, (1888, 2)),
-    (0xfaa3, (1074, 2)),
-    (0xf974, (1344, 2)),
-    (0x2f807, (182, 2)),
-    (0x2f905, (916, 2)),
-    (0x2f9b2, (106, 2)),
-    (0x2f887, (554, 2)),
-    (0x2f912, (956, 2)),
-    (0xf9ae, (1056, 2)),
-    (0xf96a, (1236, 2)),
-    (0xf9b7, (1606, 2)),
-    (0x2f932, (1068, 2)),
-    (0x2f98d, (1570, 2)),
-    (0xfa25, (1578, 2)),
-    (0xf993, (988, 2)),
-    (0x2f9f5, (1672, 2)),
-    (0xf9df, (518, 2)),
-    (0x2f9c7, (1460, 2)),
-    (0x2f996, (1348, 2)),
-    (0x2f842, (364, 2)),
-    (0x2f869, (480, 2)),
-    (0x2f861, (1802, 2)),
-    (0x2f8af, (664, 2)),
-    (0x2f8c5, (736, 2)),
-    (0x2f962, (1208, 2)),
-    (0x2f98b, (1320, 2)),
-    (0x2f9a1, (1368, 2)),
-    (0xfad2, (42, 2)),
-    (0x2f9ae, (102, 2)),
-    (0x2f8bc, (710, 2)),
-    (0xf9b3, (1676, 2)),
-    (0x2f88f, (2000, 2)),
-    (0xf965, (180, 2)),
-    (0x2f953, (1160, 2)),
-    (0x2f84b, (408, 2)),
-    (0x2f90b, (940, 2)),
-    (0x2f834, (1794, 2)),
-    (0xfa2d, (1740, 2)),
-    (0x2f8e6, (830, 2)),
-    (0xf971, (1572, 2)),
-    (0x2fa1c, (1766, 2)),
-    (0xfa61, (1478, 2)),
-    (0x2f98e, (98, 2)),
-    (0x2f9c9, (1466, 2)),
-    (0xfa0b, (574, 2)),
-    (0x2f86b, (486, 2)),
-    (0xf949, (1670, 2)),
-    (0xfac7, (1666, 2)),
-    (0xf96e, (1382, 2)),
-    (0xf966, (600, 2)),
-    (0xf955, (242, 2)),
-    (0x2f8d0, (36, 2)),
-    (0x2f93a, (1088, 2)),
-    (0xf9ff, (260, 2)),
-    (0xfac8, (1680, 2)),
-    (0xf93c, (1168, 2)),
-    (0x2f845, (372, 2)),
-    (0x2f9ce, (116, 2)),
-    (0xfad6, (1916, 2)),
-    (0x2f95a, (1190, 2)),
-    (0xf9e9, (1608, 2)),
-    (0x2f91f, (1870, 2)),
-    (0xf950, (1260, 2)),
-    (0x2f8c1, (714, 2)),
-    (0x2f9ad, (1948, 2)),
-    (0x2f97f, (1298, 2)),
-    (0xfa83, (576, 2)),
-    (0x2f82d, (314, 2)),
-    (0x2f8df, (812, 2)),
-    (0x2f87c, (530, 2)),
-    (0xfa58, (1258, 2)),
-    (0x2f846, (374, 2)),
-    (0xfa37, (396, 2)),
-    (0xfa78, (384, 2)),
-    (0x2f9f6, (1978, 2)),
-    (0x2f99e, (1374, 2)),
-    (0xfad3, (66, 2)),
-    (0xfad0, (1824, 2)),
-    (0xf9d5, (528, 2)),
-    (0xfab7, (1474, 2)),
-    (0xfa09, (1644, 2)),
-    (0x2f8ce, (38, 2)),
-    (0xf957, (1246, 2)),
-    (0xf991, (734, 2)),
-    (0xfab8, (1480, 2)),
-    (0x2f8eb, (846, 2)),
-    (0x2f9b1, (1952, 2)),
-    (0xfa2a, (1708, 2)),
-    (0x2f93c, (1884, 2)),
-    (0xfa72, (212, 2)),
-    (0x2f96f, (1256, 2)),
-    (0x2f8d6, (1304, 2)),
-    (0x2f886, (552, 2)),
-    (0xf9fd, (160, 2)),
-    (0xf9c0, (996, 2)),
-    (0x2f9be, (1438, 2)),
-    (0xf9b8, (1658, 2)),
-    (0x2f81e, (250, 2)),
-    (0xf900, (1524, 2)),
-    (0x2f98c, (1322, 2)),
-    (0x2f93e, (62, 2)),
-    (0xfaa0, (1028, 2)),
-    (0x2f8f3, (858, 2)),
-    (0xf961, (1034, 2)),
-    (0x2f83d, (348, 2)),
-    (0x2f8f6, (874, 2)),
-    (0xf9d2, (682, 2)),
-    (0x2f84a, (392, 2)),
-    (0xf9e1, (796, 2)),
-    (0xfa7c, (428, 2)),
-    (0x2f9aa, (1396, 2)),
-    (0xfa51, (1162, 2)),
-    (0x2f8b8, (1828, 2)),
-    (0x2f931, (1062, 2)),
-    (0xfa7e, (454, 2)),
-    (0xf9a6, (1212, 2)),
-    (0xf976, (1080, 2)),
-    (0xfa97, (902, 2)),
-    (0x2f8e7, (44, 2)),
-    (0x2f88b, (560, 2)),
-    (0x2f9c6, (1458, 2)),
-    (0x2f8d9, (792, 2)),
-    (0xfa52, (1170, 2)),
-    (0x2fa0d, (132, 2)),
-    (0x2f900, (898, 2)),
-    (0x2f836, (332, 2)),
-    (0xf9ad, (1042, 2)),
-    (0xf934, (1284, 2)),
-    (0xfab0, (1254, 2)),
-    (0x2f809, (188, 2)),
-    (0x2f9f2, (120, 2)),
-    (0x2f86c, (1804, 2)),
-    (0xf9fc, (1516, 2)),
-    (0x2f95e, (1910, 2)),
-    (0xf9a3, (608, 2)),
-    (0x2f971, (88, 2)),
-    (0x2f89b, (24, 2)),
-    (0xf977, (158, 2)),
-    (0xfa1a, (1166, 2)),
-    (0xfa3c, (520, 2)),
-    (0x2f9bd, (1432, 2)),
-    (0xf928, (568, 2)),
-    (0x2f864, (472, 2)),
-    (0x2f9d1, (1522, 2)),
-    (0x2f982, (1306, 2)),
-    (0xf9dc, (1652, 2)),
-    (0x2f972, (1922, 2)),
-    (0x2f8cb, (756, 2)),
-    (0xf960, (612, 2)),
-    (0xf992, (952, 2)),
-    (0x2f8b4, (686, 2)),
-    (0x2f803, (1780, 2)),
-    (0x2f818, (230, 2)),
-    (0xf9f7, (1198, 2)),
-    (0x2f827, (292, 2)),
-    (0x2f9fb, (1984, 2)),
-    (0x2f987, (1936, 2)),
-    (0xfaab, (1140, 2)),
-    (0xfa39, (424, 2)),
-    (0x2fa07, (1722, 2)),
-    (0xf9b9, (628, 2)),
-    (0x2f86e, (492, 2)),
-    (0x2f8e0, (806, 2)),
-    (0xfaa7, (1102, 2)),
-    (0x2f8a8, (642, 2)),
-    (0xfa0a, (1476, 2)),
-    (0x2fa14, (1998, 2)),
-    (0x2f888, (18, 2)),
-    (0x2f9a2, (1370, 2)),
-    (0x2f848, (386, 2)),
-    (0xfaa8, (1106, 2)),
-    (0xfa67, (1580, 2)),
-    (0xf946, (1014, 2)),
-    (0x2f946, (1114, 2)),
-    (0xfa7d, (436, 2)),
-    (0xfa1d, (1220, 2)),
-    (0x2fa11, (136, 2)),
-    (0xfa2c, (1712, 2)),
-    (0xf924, (1472, 2)),
-    (0x2f96e, (1248, 2)),
-    (0xf96d, (1110, 2)),
-    (0xf95a, (1518, 2)),
-    (0x2f85c, (448, 2)),
-    (0xf92b, (1024, 2)),
-    (0xfac0, (1520, 2)),
-    (0xfa8d, (716, 2)),
-    (0x2f9d8, (1966, 2)),
-    (0xf938, (1674, 2)),
-    (0x2f821, (264, 2)),
-    (0xf9aa, (496, 2)),
-    (0xf9ce, (1130, 2)),
-    (0xfa47, (948, 2)),
-    (0x2f8aa, (648, 2)),
-    (0x2f918, (976, 2)),
-    (0x2f8ee, (46, 2)),
-    (0xf96b, (330, 2)),
-    (0xf909, (458, 2)),
-    (0x2f87f, (534, 2)),
-    (0xf908, (1776, 2)),
-    (0xfa5d, (1328, 2)),
-    (0xf9ac, (614, 2)),
-    (0x2f896, (22, 2)),
-    (0x2f9b0, (1950, 2)),
-    (0xf9a7, (1030, 2)),
-    (0xf99d, (274, 2)),
-    (0x2f957, (1182, 2)),
-    (0xf905, (144, 2)),
-    (0x2f9bc, (1430, 2)),
-    (0x2f8f9, (1854, 2)),
-    (0x2f8b0, (670, 2)),
-    (0x2f881, (544, 2)),
-    (0x2fa1b, (1764, 2)),
-    (0x2f9dd, (1792, 2)),
-    (0x2f9ed, (1974, 2)),
-    (0x2f871, (1806, 2)),
-    (0x2f8ab, (654, 2)),
-    (0x2f812, (1782, 2)),
-    (0xf933, (1104, 2)),
-    (0xf9f2, (1734, 2)),
-    (0xf984, (960, 2)),
-    (0x2f90e, (924, 2)),
-    (0xfab2, (1288, 2)),
-    (0xfa32, (202, 2)),
-    (0x2f96d, (86, 2)),
-    (0x2f9a7, (100, 2)),
-    (0xf94f, (1238, 2)),
-    (0x2fa0f, (1738, 2)),
-    (0xf925, (690, 2)),
-    (0xfa91, (764, 2)),
-    (0xf972, (880, 2)),
-    (0xf90a, (1612, 2)),
-    (0xfa02, (694, 2)),
-    (0xf92f, (288, 2)),
-    (0xf9dd, (258, 2)),
-    (0xfa17, (1098, 2)),
-    (0xf93f, (1626, 2)),
-    (0x2f898, (1920, 2)),
-    (0x2f907, (896, 2)),
-    (0xf9ec, (934, 2)),
-    (0xf9e3, (888, 2)),
-    (0xfab5, (1434, 2)),
-    (0xfa40, (666, 2)),
-    (0x2f815, (222, 2)),
-    (0x2f9db, (1546, 2)),
-    (0xf91e, (1002, 2)),
-    (0xf92c, (1590, 2)),
-    (0x2f884, (548, 2)),
-    (0xfa46, (926, 2)),
-    (0x2f9b3, (1412, 2)),
-    (0x2f85b, (446, 2)),
-    (0xf9cd, (1078, 2)),
-    (0xf93a, (1742, 2)),
-    (0xf97e, (1610, 2)),
-    (0xfa3e, (646, 2)),
-    (0x2f9eb, (1630, 2)),
-    (0x2f8e2, (824, 2)),
-    (0x2f9b6, (1420, 2)),
-    (0xf916, (984, 2)),
-    (0x2f8de, (40, 2)),
-    (0xf98f, (656, 2)),
-    (0xfa12, (762, 2)),
-    (0xfa44, (822, 2)),
-    (0xf981, (464, 2)),
-    (0x2f9dc, (1552, 2)),
-    (0xf95c, (840, 2)),
-    (0xf937, (1550, 2)),
-    (0x2f87a, (524, 2)),
-    (0x2f903, (906, 2)),
-    (0x2f9c5, (1956, 2)),
-    (0x2f8cf, (770, 2)),
-    (0x2f909, (930, 2)),
-    (0x2f991, (1336, 2)),
-    (0xfa65, (1538, 2)),
-    (0xfa73, (168, 2)),
-    (0x2f88e, (570, 2)),
-    (0xf9ef, (1066, 2)),
-    (0x2f9cb, (1958, 2)),
-    (0x2f9a3, (1372, 2)),
-    (0x2f99c, (1352, 2)),
-    (0x2f919, (974, 2)),
-    (0x2f857, (420, 2)),
-    (0x2f96c, (1242, 2)),
-    (0x2f800, (150, 2)),
-    (0x2fa1a, (1762, 2)),
-    (0xf97f, (294, 2)),
-    (0xfaba, (1502, 2)),
-    (0xfa82, (572, 2)),
-    (0x2f92e, (1052, 2)),
-    (0xf9fe, (1354, 2)),
-    (0xf994, (1064, 2)),
-    (0x2f83c, (356, 2)),
-    (0xfa50, (1158, 2)),
-    (0x2f817, (228, 2)),
-    (0xfa38, (402, 2)),
-    (0xfa69, (1686, 2)),
-    (0xfaac, (1196, 2)),
-    (0xf901, (778, 2)),
-    (0xfa33, (282, 2)),
-    (0xf9bf, (842, 2)),
-    (0xf9d1, (216, 2)),
-    (0xf95f, (494, 2)),
-    (0x2f82f, (318, 2)),
-    (0xf9a4, (708, 2)),
-    (0x2f89e, (606, 2)),
-    (0x2f801, (146, 2)),
-    (0x2f84f, (404, 2)),
-    (0x2f961, (1912, 2)),
-    (0x2f87e, (536, 2)),
-    (0x2f9d5, (1530, 2)),
-    (0xf9e7, (1456, 2)),
-    (0xf973, (700, 2)),
-    (0xf9c2, (1394, 2)),
-    (0x2f9d0, (1498, 2)),
-    (0xf9a5, (866, 2)),
-    (0x2f80c, (0, 2)),
-    (0xf930, (738, 2)),
-    (0x2f8a1, (28, 2)),
-    (0x2f828, (298, 2)),
-    (0x2f89f, (610, 2)),
-    (0xf964, (1144, 2)),
-    (0xf94e, (946, 2)),
-    (0x2f8d7, (94, 2)),
-    (0x2f806, (178, 2)),
-    (0x2f9cc, (1960, 2)),
-    (0x2f94e, (1128, 2)),
-    (0x2f929, (1038, 2)),
-    (0xfa34, (290, 2)),
-    (0x2f939, (1816, 2)),
-    (0xf910, (1410, 2)),
-    (0xf926, (1312, 2)),
-    (0xf9a2, (566, 2)),
-    (0xfa49, (1006, 2)),
-    (0xf953, (1302, 2)),
-    (0x2f80f, (206, 2)),
-    (0xf963, (304, 2)),
-    (0x2f8d4, (782, 2)),
-    (0xf9b2, (1668, 2)),
-    (0x2f973, (1924, 2)),
-    (0x2f897, (1834, 2)),
-    (0x2f9fc, (126, 2)),
-    (0xf99a, (1576, 2)),
-    (0x2f85a, (444, 2)),
-    (0xfacf, (1826, 2)),
-    (0x2f9ab, (1954, 2)),
-    (0x2f927, (1876, 2)),
-    (0x2f9fd, (1986, 2)),
-    (0xfa36, (382, 2)),
-    (0xf904, (942, 2)),
-    (0x2f81c, (1980, 2)),
-    (0xfa7b, (394, 2)),
-    (0xfa41, (740, 2)),
-    (0x2f87b, (1810, 2)),
-    (0x2f9ba, (1426, 2)),
-    (0xf979, (240, 2)),
-    (0xf9d7, (1560, 2)),
-];
-
-pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
-    0x0,
-    0x0,
-    0xd,
-    0x4,
-    0xc,
-    0x5,
-    0x689,
-    0x7,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x0,
-    0xab,
-    0x0,
-    0x158,
-    0x0,
-    0x5a,
-    0x1c6,
-    0x143,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x4,
-    0x0,
-    0x92,
-    0x0,
-    0x0,
-    0x24d,
-    0x0,
-    0x7,
-    0x0,
-    0x7f,
-    0xc,
-    0x0,
-    0xc7,
-    0x0,
-    0x16d,
-    0x0,
-    0x0,
-    0x0,
-    0xda,
-    0x4,
-    0x19,
-    0x5,
-    0x0,
-    0x93,
-    0x6,
-    0x7c,
-    0x13,
-    0x11b,
-    0x0,
-    0x1,
-    0x8,
-    0x58,
-    0x0,
-    0x5c,
-    0xa5,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0xb4,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x8,
-    0x0,
-    0x79,
-    0x7,
-    0x0,
-    0xa0,
-    0x37,
-    0x0,
-    0x7,
-    0x36,
-    0x5,
-    0x39,
-    0x0,
-    0x0,
-    0x2,
-    0x9,
-    0x0,
-    0x0,
-    0x73,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x3d,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x54,
-    0x1,
-    0x0,
-    0x27,
-    0x4d,
-    0xfa,
-    0x4d,
-    0x3,
-    0x1c,
-    0xdd,
-    0x6,
-    0x1,
-    0x24,
-    0x41,
-    0x0,
-    0x0,
-    0x0,
-    0xb,
-    0x0,
-    0x5,
-    0x3,
-    0xb6,
-    0x0,
-    0xf,
-    0x0,
-    0x1,
-    0x16,
-    0x0,
-    0x0,
-    0x9e,
-    0x1,
-    0x0,
-    0x21,
-    0x0,
-    0x25,
-    0x4,
-    0x10,
-    0x4,
-    0x15,
-    0x2,
-    0x1,
-    0x23,
-    0x5,
-    0x84,
-    0x0,
-    0x0,
-    0xf,
-    0xa,
-    0x2,
-    0x37,
-    0x1,
-    0x0,
-    0x46,
-    0xd,
-    0x12,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x24,
-    0xc,
-    0x4a,
-    0x2,
-    0x4,
-    0x0,
-    0x42,
-    0x0,
-    0x4,
-    0x13,
-    0x2,
-    0x13,
-    0x7b,
-    0x3e,
-    0x0,
-    0x11,
-    0x2,
-    0x7,
-    0x1,
-    0x0,
-    0x31,
-    0x3,
-    0x0,
-    0x12,
-    0x0,
-    0x0,
-    0x0,
-    0x35,
-    0x6,
-    0xe,
-    0x1e,
-    0xc1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x2,
-    0x1c,
-    0x0,
-    0x8,
-    0x0,
-    0x9,
-    0x3,
-    0x8d,
-    0x70,
-    0x54,
-    0x23,
-    0x11,
-    0x1f,
-    0x5,
-    0x17,
-    0x4,
-    0x2,
-    0x0,
-    0x47,
-    0x17,
-    0xc,
-    0x2a,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x38,
-    0x11,
-    0x15,
-    0x39,
-    0x6,
-    0x0,
-    0x3,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x53,
-    0x4,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0xf,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x28,
-    0x4,
-    0x0,
-    0x0,
-    0x11,
-    0x2e,
-    0x6,
-    0x4,
-    0x1,
-    0x1,
-    0x12,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x5,
-    0x0,
-    0x15,
-    0x2e,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0xd,
-    0x3,
-    0x0,
-    0x0,
-    0x3f,
-    0x8,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0x1a,
-    0x2,
-    0x0,
-    0x7,
-    0x0,
-    0xa,
-    0x0,
-    0x3,
-    0xc,
-    0x0,
-    0x14,
-    0x0,
-    0x6,
-    0x0,
-    0x19,
-    0x1,
-    0x3,
-    0x3,
-    0x6,
-    0x10,
-    0x12,
-    0x1,
-    0x16,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x2,
-    0x21,
-    0x1,
-    0x3,
-    0x13,
-    0x16,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0xe,
-    0x0,
-    0x0,
-    0x38,
-    0x2,
-    0x20,
-    0x3,
-    0x0,
-    0xa,
-    0xe,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0xa,
-    0x6,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x4,
-    0x18,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0xc,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0xb,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x1b,
-    0x6,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x5,
-    0x20,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0xc,
-    0x0,
-    0x16,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x7,
-    0x0,
-    0x8,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1f,
-    0xa,
-    0x28,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x8,
-    0xd,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x3a,
-    0x4,
-    0x8,
-    0xb,
-    0x0,
-    0x17,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x22,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x2,
-    0x6,
-    0x17,
-    0x7,
-    0x9,
-    0x27,
-    0x0,
-    0x1,
-    0x11,
-    0x7,
-    0x23,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x9,
-    0x8,
-    0x2,
-    0x27,
-    0x8,
-    0x0,
-    0x17,
-    0xc,
-    0x3b,
-    0x6,
-    0x0,
-    0x0,
-    0xc,
-    0x0,
-    0x4,
-    0x0,
-    0x2e,
-    0x5,
-    0x7,
-    0x7,
-    0x0,
-    0x3,
-    0xf,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x6,
-    0x2,
-    0x2,
-    0x4,
-    0x0,
-    0x3,
-    0xf,
-    0x0,
-    0x1,
-    0x12,
-    0x24,
-    0x0,
-    0x0,
-    0x0,
-    0xb,
-    0x1f,
-    0x15,
-    0xd,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0xc,
-    0x1,
-    0xe,
-    0x0,
-    0x4,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x2,
-    0x0,
-    0x2e,
-    0x0,
-    0x11,
-    0x0,
-    0x1b,
-    0xa,
-    0x13,
-    0x12,
-    0x2,
-    0x9,
-    0x1,
-    0xd,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0xd,
-    0x0,
-    0xb,
-    0x6,
-    0x0,
-    0x0,
-    0xb,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x13,
-    0x16,
-    0xd,
-    0xe,
-    0x4,
-    0xf,
-    0xb,
-    0x2,
-    0x0,
-    0x0,
-    0xa,
-    0x0,
-    0x3,
-    0x0,
-    0xd,
-    0x2,
-    0xb,
-    0x0,
-    0x1d,
-    0x0,
-    0x2,
-    0x7,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x7,
-    0x6,
-    0xe,
-    0x4,
-    0x0,
-    0x1,
-    0x8,
-    0x14,
-    0x0,
-    0x0,
-    0x15,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x10,
-    0x0,
-    0x0,
-    0x6,
-    0x17,
-    0x0,
-    0x1,
-    0x0,
-    0x10,
-    0x0,
-    0x0,
-    0x0,
-    0xa,
-    0x0,
-    0x0,
-    0x1,
-    0x6,
-    0x4,
-    0x0,
-    0x4,
-    0x1,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x7,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x7,
-    0x2,
-    0x1f,
-    0x9,
-    0x0,
-    0x4,
-    0x7,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x3,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x9,
-    0x17,
-    0x6,
-    0xf,
-    0xc,
-    0x0,
-    0x0,
-    0x0,
-    0x10,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x6,
-    0x2,
-    0x0,
-    0x3,
-    0x2,
-    0x9,
-    0x3,
-    0x2,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x12,
-    0x4,
-    0x0,
-    0x8,
-    0x0,
-    0x3,
-    0x18,
-    0x0,
-    0x3,
-    0xc,
-    0x0,
-    0x2,
-    0x26,
-    0x0,
-    0x0,
-    0x2,
-    0x6,
-    0x2,
-    0x0,
-    0x1,
-    0x9,
-    0x8,
-    0x16,
-    0x1,
-    0x3,
-    0x11,
-    0x0,
-    0x13,
-    0x0,
-    0x2,
-    0x7,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0xc,
-    0x1a,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x9,
-    0x4,
-    0x12,
-    0x0,
-    0x0,
-    0x11,
-    0x8,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x3,
-    0x6,
-    0xf,
-    0x4,
-    0x1,
-    0x3,
-    0x0,
-    0x7,
-    0x4,
-    0x9,
-    0x4,
-    0x1,
-    0x0,
-    0x5,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x2,
-    0x15,
-    0x2,
-    0x0,
-    0x8,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x11,
-    0x6,
-    0x6,
-    0xd,
-    0x1,
-    0x0,
-    0x1,
-    0x3,
-    0x6,
-    0x20,
-    0x4,
-    0x1,
-    0x2,
-    0xb,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x11,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x7,
-    0x4,
-    0x5,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x3,
-    0x0,
-    0x4,
-    0x4,
-    0x2,
-    0x0,
-    0x2,
-    0x19,
-    0x4,
-    0x1,
-    0x13,
-    0x1,
-    0x2,
-    0x9,
-    0xb,
-    0x6,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1a,
-    0x0,
-    0x2,
-    0x5,
-    0x0,
-    0xf,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0x2,
-    0x4,
-    0x10,
-    0x1,
-    0x1,
-    0x2,
-    0x12,
-    0x0,
-    0x0,
-    0x9,
-    0x0,
-    0x13,
-    0x1,
-    0x2,
-    0x4,
-    0x6,
-    0x4,
-    0x4,
-    0x0,
-    0x6,
-    0x2,
-    0x15,
-    0x0,
-    0x1,
-    0x9,
-    0xe,
-    0x2,
-    0x3,
-    0x3,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x5,
-    0xe,
-    0x0,
-    0x7,
-    0x0,
-    0x2,
-    0x0,
-    0xb,
-    0x2,
-    0x0,
-    0x1,
-    0x4,
-    0x9,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x4,
-    0x1,
-    0xd,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x3,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x5,
-    0x0,
-    0x3,
-    0x2c,
-    0xa,
-    0x3,
-    0x0,
-    0x9,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x27,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x15,
-    0x1,
-    0x2,
-    0x4,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x5,
-    0xa,
-    0x9,
-    0x1,
-    0x2,
-    0x3,
-    0x1,
-    0x5,
-    0x1,
-    0x8,
-    0x1,
-    0x1,
-    0xf,
-    0x0,
-    0x3,
-    0xa,
-    0x3,
-    0x4,
-    0xd,
-    0x3,
-    0x1,
-    0x0,
-    0xc,
-    0x1e,
-    0x1,
-    0x1,
-    0xa,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x3,
-    0x2,
-    0x7,
-    0x3,
-    0xe,
-    0x3,
-    0x4,
-    0xf,
-    0x4,
-    0x2,
-    0x3,
-    0x8,
-    0x0,
-    0x2,
-    0x3,
-    0x1,
-    0x10,
-    0x2,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x7,
-    0x8,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0xb,
-    0x7,
-    0x0,
-    0x3,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0xa,
-    0xa,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x9,
-    0x0,
-    0x2,
-    0xb,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x8,
-    0x1,
-    0xc,
-    0xc,
-    0x4,
-    0x0,
-    0x1,
-    0x4,
-    0x3,
-    0x4,
-    0x3,
-    0x1,
-    0x7,
-    0x5,
-    0x2,
-    0x4,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x8,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0xc,
-    0x5,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x6,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x6,
-    0x2,
-    0x7,
-    0x1,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0xa,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0xc,
-    0x0,
-    0x3,
-    0x2,
-    0x9,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x5,
-    0x4,
-    0x7,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x3,
-    0x3,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x6,
-    0x1,
-    0xa,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x5,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x7,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x10,
-    0x7,
-    0x1,
-    0x5,
-    0xe,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x7,
-    0x5,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x5,
-    0x3,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x9,
-    0x0,
-    0x4,
-    0x2,
-    0x3,
-    0x6,
-    0x5,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x3,
-    0x2,
-    0x4,
-    0x2,
-    0x2,
-    0x2,
-    0x0,
-    0x3,
-    0x6,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x14,
-    0x0,
-    0x0,
-    0x7,
-    0x5,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x6,
-    0xb,
-    0x5,
-    0x0,
-    0xf,
-    0x1,
-    0x0,
-    0x6,
-    0x9,
-    0x1,
-    0x7,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x5,
-    0x7,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x6,
-    0x0,
-    0x7,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x8,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x6,
-    0xb,
-    0x7,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x8,
-    0x1,
-    0x1,
-    0x5,
-    0x2,
-    0x1,
-    0x2,
-    0xa,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x6,
-    0x2,
-    0x0,
-    0x2,
-    0x1,
-    0x4,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x4,
-    0x3,
-    0x2,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x3,
-    0x3,
-    0x0,
-    0x5,
-    0x5,
-    0x1,
-    0x3,
-    0x6,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0xa,
-    0x3,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x4,
-    0x3,
-    0x2,
-    0x0,
-    0x2,
-    0x5,
-    0x1,
-    0x0,
-    0xb,
-    0xa,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x8,
-    0x2,
-    0x0,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x8,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x3,
-    0x6,
-    0x2,
-    0x14,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x3,
-    0x3,
-    0x1,
-    0x3,
-    0x6,
-    0x8,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x3,
-    0x8,
-    0x0,
-    0x0,
-    0x4,
-    0x6,
-    0x3,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x9,
-    0xa,
-    0x3,
-    0x3,
-    0x2,
-    0x5,
-    0x7,
-    0x2,
-    0x0,
-    0xa,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x6,
-    0x1,
-    0x0,
-    0x0,
-    0xb,
-    0x3,
-    0x2,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x2,
-    0x12,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0xf,
-    0x3,
-    0x2,
-    0xe,
-    0x9,
-    0x0,
-    0x1,
-    0x6,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x7,
-    0x5,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0xc,
-    0x0,
-    0x3,
-    0x0,
-    0x4,
-    0x6,
-    0x5,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x4,
-    0x3,
-    0x0,
-    0x3,
-    0x4,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x6,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x3,
-    0x3,
-    0x5,
-    0x1,
-    0x0,
-    0x5,
-    0x5,
-    0x3,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x7,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x5,
-    0x1,
-    0x2,
-    0x3,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x6,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x11,
-    0x0,
-    0x2,
-    0x5,
-    0x1,
-    0x9,
-    0x1,
-    0x0,
-    0x5,
-    0x3,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x4,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x7,
-    0x1,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0x1,
-    0x6,
-    0x2,
-    0x3,
-    0x5,
-    0x4,
-    0x2,
-    0x1,
-    0x1,
-    0x7,
-    0x3,
-    0x2,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x8,
-    0x4,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0xb,
-    0x2,
-    0x2,
-    0xf,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x6,
-    0x2,
-    0x2,
-    0x3,
-    0x1,
-    0xc,
-    0x0,
-    0x1,
-    0x6,
-    0x2,
-    0x3,
-    0x2,
-    0x1,
-    0x2,
-    0x1,
-    0x3,
-    0x2,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x4,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x4,
-    0x2,
-    0xb,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x4,
-    0x2,
-    0x5,
-    0x2,
-    0x7,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x5,
-    0x6,
-    0x1,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x4,
-    0x2,
-    0x3,
-    0x1,
-    0x0,
-    0xa,
-    0x3,
-    0xa,
-    0x2,
-    0x2,
-    0x1,
-    0x1,
-    0x2,
-    0x2,
-    0x3,
-    0x4,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x7,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x4,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x6,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0xa,
-    0x1,
-    0x6,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x3,
-    0x0,
-    0x2,
-    0x6,
-    0x3,
-    0x4,
-    0x0,
-    0xa,
-    0x0,
-    0x2,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x4,
-    0x3,
-    0x2,
-    0x2,
-    0x0,
-    0x8,
-    0x1,
-    0x4,
-    0x4,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0xa,
-    0x6,
-    0x1,
-    0x2,
-    0x4,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x5,
-    0x1,
-    0x3,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x6,
-    0x5,
-    0xc,
-    0x0,
-    0x0,
-    0xa,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x4,
-    0x1,
-    0x2,
-    0x3,
-    0x2,
-    0x4,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x7,
-    0x1,
-    0x4,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x5,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0xa,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x4,
-    0x1,
-    0x4,
-    0x4,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x4,
-    0x3,
-    0x1,
-    0x0,
-    0x6,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x3,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0xb,
-    0x7,
-    0x0,
-    0x1,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x9,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0xe,
-    0x2,
-    0x0,
-    0x4,
-    0x3,
-    0x1,
-    0x6,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x5,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x5,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x7,
-    0x1,
-    0x1,
-    0x2,
-    0x6,
-    0x4,
-    0x2,
-    0x3,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x6,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x4,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x2,
-    0x0,
-    0x4,
-    0x1,
-    0x4,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x5,
-    0x3,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x7,
-    0x4,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x2,
-    0x1,
-    0x2,
-    0x5,
-    0x2,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x3,
-    0x6,
-    0x0,
-    0x3,
-    0x2,
-    0x0,
-    0x5,
-    0x0,
-    0x4,
-    0x4,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x8,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x4,
-    0x1,
-    0x2,
-    0x2,
-    0x2,
-    0x2,
-    0x0,
-    0x2,
-    0x4,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x4,
-    0x4,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x4,
-    0x2,
-    0x3,
-    0x6,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x3,
-    0x1,
-    0x1,
-    0x9,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x5,
-    0x2,
-    0x4,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x8,
-    0x0,
-    0x3,
-    0x1,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x3,
-    0x3,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x2,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x4,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x5,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x8,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x11,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x6,
-    0x3,
-    0x0,
-    0x2,
-    0x2,
-    0x1,
-    0x1,
-    0x5,
-    0x3,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x4,
-    0x1,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x2,
-    0x1,
-    0x1,
-    0xa,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x1,
-    0x4,
-    0x6,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x4,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0xb,
-    0x1,
-    0x8,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0x3,
-    0xf,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x2,
-    0x8,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-];
-pub(crate) const COMBINING_MARK_KV: &[u32] = &[
-    0xe01cb,
-    0x115dd,
-    0x0e3a,
-    0x11441,
-    0xe0134,
-    0x11cb1,
-    0x115bd,
-    0x0faf,
-    0xe01dc,
-    0x11181,
-    0x11934,
-    0x11374,
-    0x0823,
-    0xa67c,
-    0x0a4d,
-    0xa952,
-    0x1e003,
-    0x0e49,
-    0x17b5,
-    0x1074,
-    0x2dfe,
-    0xa8be,
-    0x101fd,
-    0x102e0,
-    0x0fb1,
-    0xa9ba,
-    0x0c00,
-    0x1daa6,
-    0x05a2,
-    0xfe26,
-    0x0a41,
-    0x07a6,
-    0x0898,
-    0x0b82,
-    0x0afb,
-    0x0fbb,
-    0x1a7a,
-    0x1cf1a,
-    0x16f6b,
-    0xa675,
-    0x1cf45,
-    0xe012f,
-    0xe014f,
-    0x11c3b,
-    0x2df7,
-    0xa9bf,
-    0xa8eb,
-    0x1bc9e,
-    0x1a74,
-    0x0eb8,
-    0x302c,
-    0x0c4d,
-    0x064f,
-    0x105e,
-    0x0741,
-    0x1da44,
-    0x0b44,
-    0x1924,
-    0x1da1d,
-    0x09c0,
-    0xfe2d,
-    0x0330,
-    0xe01c3,
-    0x109d,
-    0x0322,
-    0x1cf18,
-    0x0c02,
-    0xe0128,
-    0x17cb,
-    0x1acb,
-    0xe01e3,
-    0xa802,
-    0x16f72,
-    0x11001,
-    0x11634,
-    0x1da9b,
-    0x08ce,
-    0x0eb7,
-    0x11041,
-    0x1a7b,
-    0x1057,
-    0xe0150,
-    0x1b6d,
-    0x0ce2,
-    0xa8e6,
-    0x1103e,
-    0x0619,
-    0x11081,
-    0x0fa3,
-    0x114c3,
-    0x11a90,
-    0x082c,
-    0x11173,
-    0x1a66,
-    0x1e8d4,
-    0x1d16e,
-    0x111b8,
-    0x1934,
-    0x1cf0c,
-    0xe01ce,
-    0x1cf39,
-    0x111be,
-    0xe01d2,
-    0x1da08,
-    0xe0141,
-    0x11236,
-    0x110c2,
-    0xfe25,
-    0x16b36,
-    0x0657,
-    0x0749,
-    0x0311,
-    0xe01c4,
-    0x20d3,
-    0x1da21,
-    0x1be9,
-    0x1cf0e,
-    0x16f5d,
-    0x1d182,
-    0x1cf41,
-    0x08fe,
-    0xfe05,
-    0x11a59,
-    0x1de6,
-    0x1ac6,
-    0xe0120,
-    0x11a38,
-    0x110b7,
-    0x1dec,
-    0x0351,
-    0x0309,
-    0x1dcd,
-    0x115bc,
-    0x114b5,
-    0x16f80,
-    0x11182,
-    0x16f6e,
-    0x11caa,
-    0xe0198,
-    0x0dd8,
-    0xa80b,
-    0x0eca,
-    0x1df0,
-    0xa8c5,
-    0x0fbc,
-    0x1136c,
-    0x1064,
-    0x1c29,
-    0x114c0,
-    0x1030,
-    0x1abd,
-    0x0e4c,
-    0x0a02,
-    0x1143d,
-    0x1e4ed,
-    0x20d8,
-    0x11a04,
-    0x1cf26,
-    0xe0116,
-    0x0acc,
-    0x10f4d,
-    0xaaed,
-    0x07aa,
-    0x0902,
-    0x11442,
-    0xe012c,
-    0x0ac7,
-    0xaabe,
-    0x1921,
-    0x11c9c,
-    0x11f3e,
-    0x11102,
-    0x0953,
-    0x1da5b,
-    0xa8e9,
-    0x11044,
-    0x16b33,
-    0x08e3,
-    0xe0158,
-    0xa826,
-    0x11f41,
-    0x0f19,
-    0x1058,
-    0xe01ef,
-    0xe011d,
-    0x17bb,
-    0x1171f,
-    0x11232,
-    0x1cd7,
-    0x0364,
-    0x1c35,
-    0x0a3f,
-    0x1a5a,
-    0x13453,
-    0x11a55,
-    0x1def,
-    0x0342,
-    0x0b4c,
-    0xe01ea,
-    0x1cf32,
-    0x1082,
-    0x0b63,
-    0x1ac5,
-    0x11635,
-    0x1a69,
-    0x0487,
-    0xe0164,
-    0x1da33,
-    0xe0107,
-    0x0bc0,
-    0x11c3e,
-    0xe01c1,
-    0x1daae,
-    0x0fa1,
-    0x11c95,
-    0xa671,
-    0x1c36,
-    0x1b71,
-    0x1b80,
-    0x033c,
-    0x20d5,
-    0x116ae,
-    0x1da54,
-    0x0819,
-    0x1e01f,
-    0x0301,
-    0x119dc,
-    0x11726,
-    0x031c,
-    0x17b8,
-    0xe015b,
-    0x1dd0,
-    0x0f9e,
-    0x0f94,
-    0x0f7f,
-    0x11d32,
-    0x11a8b,
-    0x1dda,
-    0xe017a,
-    0x116b6,
-    0x11c9b,
-    0x0f8e,
-    0x11720,
-    0xaa7d,
-    0x10f82,
-    0xa9b6,
-    0x0744,
-    0x11f01,
-    0x16f73,
-    0x11632,
-    0x0e38,
-    0x0bcc,
-    0x11f37,
-    0x07f1,
-    0x0340,
-    0x116b3,
-    0x11002,
-    0x1e946,
-    0x1cf1d,
-    0x1da49,
-    0x1da2e,
-    0x1b3e,
-    0xe010a,
-    0x09e2,
-    0x1cf2d,
-    0x0b03,
-    0x094f,
-    0x11373,
-    0x13449,
-    0x11838,
-    0xaa36,
-    0x0ccc,
-    0xe01b0,
-    0x07ad,
-    0x1df1,
-    0x17cd,
-    0x13455,
-    0x0ae2,
-    0x1cf3c,
-    0x1cf27,
-    0x16f85,
-    0x1e00a,
-    0x11c9f,
-    0x1d168,
-    0x119de,
-    0x11932,
-    0x1dc0,
-    0x110b0,
-    0x1e948,
-    0x1da27,
-    0x10378,
-    0x0310,
-    0x0df2,
-    0x11038,
-    0x114b4,
-    0x093a,
-    0x1ce0,
-    0x094c,
-    0x16f64,
-    0xa8ec,
-    0x111bf,
-    0x11133,
-    0x1bec,
-    0x1da35,
-    0xa94d,
-    0x1cf00,
-    0x032f,
-    0xa928,
-    0x05c7,
-    0x1a19,
-    0x0354,
-    0x11942,
-    0x1cf34,
-    0x07b0,
-    0x0afa,
-    0x1c32,
-    0x1da0d,
-    0x1cf25,
-    0x11d8b,
-    0x116b4,
-    0x1ac7,
-    0xa9bc,
-    0x1d18a,
-    0xfe21,
-    0xe0183,
-    0x07ac,
-    0x13450,
-    0xe012d,
-    0x119d6,
-    0x1de1,
-    0x0cbe,
-    0x065b,
-    0x0316,
-    0x1a59,
-    0x1e004,
-    0xa670,
-    0x1da4b,
-    0x17dd,
-    0x1e008,
-    0xe0191,
-    0x0f18,
-    0x1143f,
-    0xe0190,
-    0xabe3,
-    0x1da4d,
-    0x0cd5,
-    0x0dda,
-    0x0d63,
-    0x0e35,
-    0x1cf1e,
-    0x1da1e,
-    0xe01e8,
-    0x114bf,
-    0x0746,
-    0x1cd1,
-    0x1da75,
-    0x1e2ec,
-    0x0596,
-    0x1dfa,
-    0x0334,
-    0x16f77,
-    0x09e3,
-    0xe019f,
-    0x17ba,
-    0x0ac1,
-    0x1de3,
-    0x1e130,
-    0x1ba1,
-    0xe01a8,
-    0x1ac3,
-    0x11c38,
-    0x111b3,
-    0x0357,
-    0xe012a,
-    0x116ac,
-    0x0f76,
-    0x119e0,
-    0x1a72,
-    0x0fa2,
-    0x1772,
-    0x05b3,
-    0x1df7,
-    0x11cb6,
-    0x1da63,
-    0x16f70,
-    0x1cf8,
-    0x0747,
-    0x112e4,
-    0x1e8d3,
-    0xaa31,
-    0x0cc3,
-    0xfe0d,
-    0x11a37,
-    0x1dcb,
-    0x0317,
-    0x1dc8,
-    0x1c2b,
-    0x0eba,
-    0x085a,
-    0x11835,
-    0x036c,
-    0x05af,
-    0x1143b,
-    0x1da10,
-    0x11c9e,
-    0xa8e1,
-    0x035c,
-    0x1b03,
-    0x0366,
-    0x05c4,
-    0x1cf0d,
-    0x11a8a,
-    0xe01c8,
-    0xe01a9,
-    0x06e1,
-    0xfe24,
-    0xa926,
-    0xa824,
-    0xa92d,
-    0x111bc,
-    0xabea,
-    0x0afc,
-    0x1ded,
-    0x065a,
-    0x0952,
-    0x1da5d,
-    0x0956,
-    0x1ce1,
-    0x11933,
-    0x1d167,
-    0xa69f,
-    0x0d3e,
-    0x110b5,
-    0x116b2,
-    0x1e017,
-    0xe013e,
-    0x1d180,
-    0x1da67,
-    0xaaeb,
-    0x1dd1,
-    0xaab8,
-    0x1cf22,
-    0x2cf1,
-    0x06d7,
-    0x1930,
-    0x1da34,
-    0x0326,
-    0x1032,
-    0x1be7,
-    0x09c4,
-    0x1da57,
-    0x1136a,
-    0x1daa1,
-    0xe0179,
-    0x0cc1,
-    0x11129,
-    0x10f83,
-    0x1034,
-    0x0a82,
-    0xa951,
-    0x1344b,
-    0x2d7f,
-    0x09c7,
-    0x11f39,
-    0x11f34,
-    0x16f5b,
-    0x0bbe,
-    0x031a,
-    0x11d8e,
-    0x1e949,
-    0x1ab6,
-    0x1b40,
-    0x1d16d,
-    0x0d82,
-    0x1134c,
-    0x033f,
-    0x11d3f,
-    0x0dd6,
-    0x11445,
-    0x1a58,
-    0x08de,
-    0x1ac2,
-    0x1b34,
-    0x11ef4,
-    0x11d35,
-    0xe0195,
-    0x1c37,
-    0xa9e5,
-    0xa980,
-    0xe0185,
-    0xe018e,
-    0xa8ba,
-    0x193b,
-    0x1da3b,
-    0x094b,
-    0x10f48,
-    0x0d3c,
-    0x1dc9,
-    0x11046,
-    0x1926,
-    0x05b0,
-    0x0c55,
-    0x11c3c,
-    0x08e6,
-    0x0617,
-    0xe0109,
-    0x1e134,
-    0xfe2c,
-    0xabe6,
-    0xfe0f,
-    0x1df6,
-    0x1ac9,
-    0x103c,
-    0x093c,
-    0xe0154,
-    0x0ddb,
-    0x1cf13,
-    0x114c2,
-    0x20ea,
-    0xe01de,
-    0x06ec,
-    0x105f,
-    0x1d16f,
-    0xfe27,
-    0xe01c5,
-    0xe0182,
-    0x05b5,
-    0xe0104,
-    0xa9be,
-    0x1e002,
-    0x0cbf,
-    0x1886,
-    0x1b82,
-    0x0fc6,
-    0x032a,
-    0x0670,
-    0x0981,
-    0x0595,
-    0x08df,
-    0x08ca,
-    0x1715,
-    0x0b41,
-    0x0658,
-    0x1dc2,
-    0x065c,
-    0xe0130,
-    0x1bac,
-    0x1c24,
-    0x20de,
-    0x111bd,
-    0xa8b4,
-    0x0486,
-    0x0302,
-    0xe0102,
-    0x1145e,
-    0x1da3d,
-    0x1cf11,
-    0xe0151,
-    0xe01b4,
-    0x05b7,
-    0x1ab4,
-    0x1ba2,
-    0x1d1ad,
-    0x1182d,
-    0x1d18b,
-    0x17bd,
-    0x1cf1f,
-    0x0ac9,
-    0x11ca7,
-    0x1deb,
-    0x1d17b,
-    0x1da68,
-    0x0ecc,
-    0x1c30,
-    0x116b5,
-    0xa8e7,
-    0x1112a,
-    0x11a3d,
-    0x1136b,
-    0x05c5,
-    0x11363,
-    0x08f6,
-    0x1ab0,
-    0x1163d,
-    0x0c82,
-    0x1cf40,
-    0x0f3f,
-    0xe0100,
-    0x0dd3,
-    0x1035,
-    0x1a76,
-    0x1daa4,
-    0x0314,
-    0x10f46,
-    0x16f79,
-    0xe0159,
-    0x0f9c,
-    0xe013c,
-    0x1183a,
-    0x1e000,
-    0x1da41,
-    0x11a47,
-    0x0733,
-    0x1da60,
-    0x11440,
-    0x1b72,
-    0x07af,
-    0x0f73,
-    0xa827,
-    0xe01e9,
-    0x11a96,
-    0x1e012,
-    0x11830,
-    0x1da46,
-    0x2de6,
-    0x1cdb,
-    0x0616,
-    0xfe01,
-    0x11300,
-    0x0951,
-    0x0abc,
-    0xaa29,
-    0x1931,
-    0x1da17,
-    0x1a6d,
-    0x11723,
-    0x10f4a,
-    0xe011e,
-    0x06e4,
-    0x0343,
-    0x1cd2,
-    0x20d9,
-    0x1163e,
-    0x05a8,
-    0x1122e,
-    0x1de0,
-    0x103e,
-    0x102d,
-    0x1da0b,
-    0xaac1,
-    0x16f7c,
-    0x20da,
-    0xa948,
-    0xa67a,
-    0x1cf23,
-    0xaa35,
-    0xa8bc,
-    0x1da55,
-    0xe01b3,
-    0x16f57,
-    0x10a05,
-    0x1172a,
-    0x1a77,
-    0x116b1,
-    0x1dc1,
-    0x1cf06,
-    0x0a75,
-    0x16f75,
-    0x11d45,
-    0x1b3c,
-    0x1037,
-    0xe01be,
-    0xe01a5,
-    0x11833,
-    0x0954,
-    0xfe0b,
-    0x16f6f,
-    0x10eff,
-    0x064e,
-    0x0320,
-    0x1dcf,
-    0xfe29,
-    0x09be,
-    0x0f35,
-    0x0cd6,
-    0x0489,
-    0x0d4a,
-    0x17b7,
-    0x1dfc,
-    0xabe8,
-    0x1dce,
-    0x1b6c,
-    0x0ddf,
-    0x16f90,
-    0x11633,
-    0x11a94,
-    0xa94f,
-    0x11837,
-    0x0d00,
-    0x1d171,
-    0x108b,
-    0x0732,
-    0x11a99,
-    0x1d186,
-    0x0303,
-    0x10377,
-    0x114b3,
-    0x1e015,
-    0x0f9f,
-    0x0acd,
-    0xa8c1,
-    0x1daa3,
-    0x11c98,
-    0x115ba,
-    0xe017b,
-    0x0bc7,
-    0x11368,
-    0x08e7,
-    0x0ae3,
-    0x0c4c,
-    0x1cf37,
-    0x1cf3d,
-    0x112e3,
-    0x1bf1,
-    0x112e2,
-    0x1d170,
-    0xa9b3,
-    0x0362,
-    0x0f84,
-    0xe013f,
-    0x0483,
-    0x05b2,
-    0xe0160,
-    0x11cae,
-    0x10f4f,
-    0x16f61,
-    0xaaef,
-    0xe01d8,
-    0x11a06,
-    0x0339,
-    0x11636,
-    0x114b2,
-    0x11c2f,
-    0x0b3e,
-    0x1163a,
-    0x10f49,
-    0xa8ea,
-    0x0c41,
-    0x0655,
-    0x11234,
-    0x032c,
-    0xe01af,
-    0x1d17f,
-    0x0d3b,
-    0x1da23,
-    0xfb1e,
-    0x0ac2,
-    0x1bad,
-    0x1163c,
-    0x0f95,
-    0xa8bf,
-    0x1cf28,
-    0xe0139,
-    0x10f85,
-    0x1abb,
-    0x1da29,
-    0x1cf4,
-    0x06e8,
-    0x1e8d1,
-    0x0b3c,
-    0xe011c,
-    0x1e013,
-    0x1ace,
-    0x05ab,
-    0x10ae6,
-    0x20e1,
-    0x1cf3f,
-    0x1dfb,
-    0x08cd,
-    0x11c36,
-    0x073b,
-    0x082a,
-    0x17b6,
-    0x0e48,
-    0x20ee,
-    0x11937,
-    0x1cdf,
-    0xe0162,
-    0x1cf3a,
-    0x08d9,
-    0x11637,
-    0x2dfb,
-    0xe018c,
-    0x1df9,
-    0x11073,
-    0x135f,
-    0x08d7,
-    0x1773,
-    0x08e0,
-    0x16af3,
-    0x0610,
-    0xe019c,
-    0x0901,
-    0x1e018,
-    0x1e027,
-    0x1da2c,
-    0x0b43,
-    0x180c,
-    0x1753,
-    0x114b1,
-    0x115b2,
-    0xabe7,
-    0x031d,
-    0x0c01,
-    0x111b4,
-    0xe01e2,
-    0x08f5,
-    0x11cb5,
-    0x0cbc,
-    0x1a1a,
-    0x1da14,
-    0x1dc7,
-    0x1a18,
-    0x0d62,
-    0x0742,
-    0x1da58,
-    0x111b9,
-    0x11a35,
-    0x115b9,
-    0x0369,
-    0x05a6,
-    0xa8f0,
-    0xe0169,
-    0x116ab,
-    0x0ecb,
-    0x0599,
-    0x1da59,
-    0x2dec,
-    0x11c99,
-    0x0358,
-    0x11128,
-    0xa8b5,
-    0x1cf17,
-    0x16af2,
-    0x1133c,
-    0x0711,
-    0x11369,
-    0x1a70,
-    0x1062,
-    0xa94e,
-    0x1da11,
-    0x059c,
-    0x0fb9,
-    0x11d42,
-    0xa92a,
-    0x11d91,
-    0x1aba,
-    0x1a6b,
-    0x1122c,
-    0xe0136,
-    0x1086,
-    0x1067,
-    0xe01a2,
-    0x0afd,
-    0x1da15,
-    0x16f83,
-    0x1da2a,
-    0x1cf29,
-    0x1da28,
-    0x1b70,
-    0x17b4,
-    0x0ebb,
-    0x0947,
-    0x11371,
-    0x1a1b,
-    0x0361,
-    0x11d34,
-    0x1cd4,
-    0x1cf3e,
-    0x11935,
-    0x11130,
-    0x1a5b,
-    0x11134,
-    0xe0149,
-    0x11446,
-    0x0363,
-    0xe0180,
-    0xfe0c,
-    0x11c35,
-    0x0eb6,
-    0x0fa4,
-    0x0fa0,
-    0x08ff,
-    0x114ba,
-    0x11439,
-    0xe0170,
-    0x0d40,
-    0xe015f,
-    0x06dc,
-    0x111c9,
-    0x0c48,
-    0x1734,
-    0x1da43,
-    0xaa2c,
-    0x0ecd,
-    0xe01b1,
-    0x1e023,
-    0x16f60,
-    0x089d,
-    0x0e4d,
-    0x07ee,
-    0x0312,
-    0xa8c4,
-    0x034c,
-    0x1103c,
-    0x0829,
-    0x1cf42,
-    0x1daa2,
-    0x11729,
-    0x0957,
-    0x119d1,
-    0x1dc6,
-    0x1cf08,
-    0x1abf,
-    0x059e,
-    0x0d81,
-    0xe01d3,
-    0x1da09,
-    0x1d17d,
-    0x112e5,
-    0x11d90,
-    0x1e01e,
-    0x1e135,
-    0x030f,
-    0x110b2,
-    0x111ce,
-    0x17c6,
-    0xa8e3,
-    0x16f66,
-    0x0a3e,
-    0x1e132,
-    0xe0155,
-    0x1e4ee,
-    0x07ab,
-    0x20ed,
-    0x0963,
-    0xe01d0,
-    0xe01bf,
-    0x08d3,
-    0x1cde,
-    0x1ba4,
-    0x0ce3,
-    0x11437,
-    0x0b02,
-    0x0c40,
-    0x08f4,
-    0x11f38,
-    0x1088,
-    0xa950,
-    0x1bee,
-    0xa881,
-    0xe01a0,
-    0x0900,
-    0x1e8d6,
-    0x1171e,
-    0xe01b5,
-    0x05ac,
-    0xe0125,
-    0x20ef,
-    0x05b6,
-    0xe01a7,
-    0x11d8d,
-    0xe017c,
-    0x0ccb,
-    0x1b3f,
-    0x20eb,
-    0x0a3c,
-    0xe0157,
-    0x1a57,
-    0x1d1ac,
-    0xa8ef,
-    0x0598,
-    0x112e0,
-    0xe012b,
-    0x0f80,
-    0x1ddc,
-    0x034b,
-    0x1a68,
-    0xa6f0,
-    0x059b,
-    0x1b81,
-    0x16b32,
-    0x0faa,
-    0x109c,
-    0x034d,
-    0xe010c,
-    0x0319,
-    0x1925,
-    0x11a3b,
-    0x031b,
-    0x1a64,
-    0x08d4,
-    0xa677,
-    0x0b62,
-    0x11045,
-    0x0acb,
-    0x1112f,
-    0xe01d4,
-    0x1da0a,
-    0x115af,
-    0x0613,
-    0xaaf5,
-    0x08f1,
-    0x11a56,
-    0x0bbf,
-    0xaa4c,
-    0x1037a,
-    0x1dff,
-    0x0abe,
-    0x302e,
-    0x1b39,
-    0x1da9d,
-    0x1a6a,
-    0x11ef6,
-    0xe01aa,
-    0x112ea,
-    0x1e01c,
-    0x1039,
-    0x05b8,
-    0x11c34,
-    0x20db,
-    0x11230,
-    0x0c83,
-    0x1036,
-    0x0948,
-    0x119db,
-    0xe01ed,
-    0x1c31,
-    0x10a3f,
-    0x1ab5,
-    0x11d94,
-    0xa983,
-    0x0ccd,
-    0x17c4,
-    0x11931,
-    0x11f42,
-    0x1c28,
-    0x1da32,
-    0x11145,
-    0x302a,
-    0xe0135,
-    0x0ac8,
-    0x0cc7,
-    0xe01ad,
-    0x1da00,
-    0x1b37,
-    0x036f,
-    0x11d43,
-    0x116ad,
-    0x11ef5,
-    0xa8ff,
-    0x1da19,
-    0x030a,
-    0x09cc,
-    0x10eac,
-    0x11d8c,
-    0x11a0a,
-    0xaab4,
-    0xfe2f,
-    0x0ac0,
-    0xe0194,
-    0x065f,
-    0x11a07,
-    0xe015a,
-    0xe0173,
-    0x1c27,
-    0x17c8,
-    0x0820,
-    0x065d,
-    0x0bcb,
-    0xe01dd,
-    0x11343,
-    0x1e009,
-    0x0941,
-    0x1752,
-    0x1ce4,
-    0x0329,
-    0x1713,
-    0xe0118,
-    0x119da,
-    0x1da6a,
-    0x08f2,
-    0x0f71,
-    0x16f51,
-    0x089e,
-    0x2df8,
-    0x10a0e,
-    0x2de4,
-    0xaa2a,
-    0xe0192,
-    0x0dd2,
-    0x0c81,
-    0xe01c7,
-    0x10a38,
-    0xe0176,
-    0x20e9,
-    0xe019d,
-    0x20e7,
-    0x032e,
-    0x1e01d,
-    0x1cf24,
-    0x0731,
-    0x0ac4,
-    0xe017d,
-    0x16f7b,
-    0x1c34,
-    0x115b5,
-    0x0306,
-    0x16f76,
-    0x0bc8,
-    0x061a,
-    0xa949,
-    0x08f0,
-    0x11cb2,
-    0x1133f,
-    0x111b5,
-    0x11344,
-    0x082d,
-    0x1dd3,
-    0x1d172,
-    0xe010b,
-    0x2df6,
-    0x06e0,
-    0x1107f,
-    0x16f74,
-    0x11d47,
-    0x11943,
-    0x16b30,
-    0x11a01,
-    0x0d4b,
-    0xaa7b,
-    0x1da22,
-    0xe01ec,
-    0x13447,
-    0x1cf0b,
-    0x11c9a,
-    0x2dfa,
-    0xe01c2,
-    0x11724,
-    0x0485,
-    0x11a52,
-    0xe01cd,
-    0x1da03,
-    0xa8bb,
-    0x11722,
-    0x11930,
-    0x06ed,
-    0x0615,
-    0x1daa8,
-    0xe0132,
-    0x1cf33,
-    0x11042,
-    0x1cd8,
-    0x1a17,
-    0xe0171,
-    0x089f,
-    0x119dd,
-    0x1da5e,
-    0x1d1aa,
-    0x1da24,
-    0x0b01,
-    0x1a5e,
-    0x11d3d,
-    0xe0165,
-    0x0367,
-    0x110b6,
-    0x11074,
-    0x1cf38,
-    0x11237,
-    0x1df3,
-    0x1de5,
-    0xe0140,
-    0xa672,
-    0x074a,
-    0x10376,
-    0x180d,
-    0xe01c9,
-    0x0c63,
-    0x064c,
-    0x1ba8,
-    0x0f7c,
-    0x16f55,
-    0xe010d,
-    0x0484,
-    0x11caf,
-    0xe0106,
-    0x0318,
-    0x119e4,
-    0x032b,
-    0xe016e,
-    0x11438,
-    0x116af,
-    0x17cf,
-    0x1344d,
-    0x1e4ef,
-    0x11f03,
-    0x1da47,
-    0x106d,
-    0x1ddf,
-    0x0d47,
-    0x0c4a,
-    0x0a4c,
-    0x1cda,
-    0x0591,
-    0x0b56,
-    0x1d187,
-    0x0a47,
-    0x10a0c,
-    0x0a81,
-    0xa8b6,
-    0x11d95,
-    0x0cc0,
-    0x0a83,
-    0x1927,
-    0x06d8,
-    0xe011b,
-    0x06d6,
-    0x2dea,
-    0x1a61,
-    0xe0117,
-    0x20e4,
-    0xa9b8,
-    0x10f84,
-    0x08dd,
-    0xe01bb,
-    0x1dd2,
-    0x1da05,
-    0x0f87,
-    0x1bea,
-    0x17d1,
-    0x11728,
-    0x1dc3,
-    0x114b0,
-    0xa8b9,
-    0x073c,
-    0x0a48,
-    0x094e,
-    0xa94b,
-    0x0fb6,
-    0x17c1,
-    0x05a7,
-    0x1df2,
-    0x0bd7,
-    0x0d83,
-    0x1cf3b,
-    0x16fe4,
-    0x10efd,
-    0x0365,
-    0x089a,
-    0x0fa6,
-    0x1da3c,
-    0x11c9d,
-    0xe0114,
-    0x1ab7,
-    0x081f,
-    0xa8e8,
-    0x1193b,
-    0x0eb1,
-    0x032d,
-    0x1cf2c,
-    0xa8e4,
-    0xe01d7,
-    0x059d,
-    0xabed,
-    0x16f78,
-    0x1b04,
-    0x08f3,
-    0x11101,
-    0x115be,
-    0x11d31,
-    0x1c33,
-    0x1cf07,
-    0x0307,
-    0x0651,
-    0x1ce5,
-    0x1dd9,
-    0x115b8,
-    0xe01ac,
-    0x033e,
-    0x1920,
-    0x08e9,
-    0x2df9,
-    0x16f58,
-    0xe01d5,
-    0x16f6d,
-    0xe014a,
-    0x0d4d,
-    0x11ca0,
-    0x1cf0a,
-    0x1ce8,
-    0x1060,
-    0x11c96,
-    0x035e,
-    0xe0186,
-    0x115bb,
-    0x119d7,
-    0x16af4,
-    0x1daa9,
-    0x0982,
-    0x11cb3,
-    0x1cf2a,
-    0x11ca4,
-    0x033b,
-    0x135d,
-    0x11435,
-    0x114b8,
-    0x09bc,
-    0x1e005,
-    0x11082,
-    0x1d1ab,
-    0x10a03,
-    0xa8f1,
-    0x0e4a,
-    0x11ca2,
-    0xabec,
-    0x081c,
-    0x1ce2,
-    0x1da0e,
-    0x06df,
-    0xfe22,
-    0x1ce6,
-    0x1087,
-    0x0f8f,
-    0x11a8f,
-    0x09c2,
-    0x1da4e,
-    0x1e006,
-    0x08d0,
-    0x1dd8,
-    0x1714,
-    0x0a40,
-    0xe0126,
-    0x11a53,
-    0x13451,
-    0x1059,
-    0x1da61,
-    0x1e2ed,
-    0x1d17c,
-    0xa678,
-    0x3099,
-    0x16f65,
-    0xe0131,
-    0x0826,
-    0x11c3d,
-    0x0df3,
-    0x180f,
-    0x1a56,
-    0x11d8a,
-    0x1cd9,
-    0xa8e0,
-    0xe0129,
-    0x1938,
-    0x11f00,
-    0x0345,
-    0x1b02,
-    0xa9bd,
-    0x11443,
-    0xa806,
-    0xa9b9,
-    0x1da0c,
-    0xe01d6,
-    0x1e00f,
-    0x1932,
-    0x13454,
-    0x1134b,
-    0x192a,
-    0x0f79,
-    0x1a60,
-    0x0659,
-    0x11f3a,
-    0x1e8d5,
-    0x0d01,
-    0x0734,
-    0x11146,
-    0xe0108,
-    0xe0153,
-    0x06eb,
-    0xe013b,
-    0x1a73,
-    0xe0167,
-    0x11a98,
-    0x0f72,
-    0x11831,
-    0x1dcc,
-    0x0f81,
-    0x119d5,
-    0x16f68,
-    0x0f90,
-    0x114bb,
-    0x2dfd,
-    0xfe00,
-    0x08f7,
-    0x1da56,
-    0xe0187,
-    0xa9c0,
-    0x0f93,
-    0xa67b,
-    0x0344,
-    0x20e2,
-    0x08fa,
-    0x082b,
-    0x05a1,
-    0x1ba3,
-    0x1da42,
-    0x0313,
-    0x11366,
-    0x1a6c,
-    0xe01db,
-    0xa929,
-    0xe01e5,
-    0x1da1b,
-    0x116b0,
-    0x0324,
-    0x17be,
-    0x17c0,
-    0x20dd,
-    0x11836,
-    0x10f50,
-    0x073d,
-    0xe01bd,
-    0x0dd1,
-    0x1933,
-    0x1cf1b,
-    0x081b,
-    0xaa43,
-    0xe01ee,
-    0x115dc,
-    0x1de4,
-    0x0349,
-    0x11c32,
-    0xe0184,
-    0xa953,
-    0x20ec,
-    0xe0147,
-    0x1cf31,
-    0xaa2d,
-    0x0b47,
-    0x08cf,
-    0xa92c,
-    0x1e024,
-    0x1e01b,
-    0x1acd,
-    0xe0181,
-    0xe0124,
-    0x1a62,
-    0x09bf,
-    0x059a,
-    0x0d4c,
-    0x11727,
-    0x109b,
-    0x115c0,
-    0x2def,
-    0xe010e,
-    0x1ced,
-    0xaa30,
-    0x1baa,
-    0xaabf,
-    0x1da18,
-    0x1daaf,
-    0x1da1a,
-    0x1d181,
-    0x1ba6,
-    0x1cf02,
-    0x11ca9,
-    0xe01ba,
-    0x0903,
-    0x1cf05,
-    0x0abf,
-    0x108c,
-    0x115bf,
-    0x0d46,
-    0xe0111,
-    0x05a0,
-    0x11c3a,
-    0x11725,
-    0x0c04,
-    0x08d5,
-    0x10379,
-    0x0308,
-    0x1e020,
-    0x0f9a,
-    0x17c3,
-    0xfe06,
-    0x1a55,
-    0x115b0,
-    0x111b7,
-    0x20d4,
-    0x16f87,
-    0x0a03,
-    0xe0163,
-    0x102b,
-    0x06e2,
-    0xa9bb,
-    0x07a9,
-    0xaa4d,
-    0x10f4c,
-    0x11d97,
-    0x114bc,
-    0x2cf0,
-    0x1ab8,
-    0x1a67,
-    0x106b,
-    0x0f75,
-    0x11348,
-    0x1cf9,
-    0x11070,
-    0x065e,
-    0xe0199,
-    0x0f7b,
-    0xa679,
-    0x11a05,
-    0x1ab2,
-    0x034a,
-    0xa82c,
-    0x1e136,
-    0x10f4b,
-    0x20d2,
-    0x1cf46,
-    0x1da9e,
-    0x08db,
-    0x0f39,
-    0x111bb,
-    0x1da26,
-    0x10d26,
-    0x1e00c,
-    0x102c,
-    0x16f86,
-    0xe012e,
-    0x1e944,
-    0x0fb7,
-    0x1b36,
-    0x0c47,
-    0x180b,
-    0x0654,
-    0x11cad,
-    0x08ec,
-    0x16f6c,
-    0x1b44,
-    0x0ece,
-    0x0ddc,
-    0xe01e7,
-    0xe0177,
-    0x1dd7,
-    0xe015e,
-    0x0b55,
-    0x0aff,
-    0x0cca,
-    0x1163b,
-    0x1b01,
-    0x112e7,
-    0x10a01,
-    0x0f99,
-    0x11a3e,
-    0x1da01,
-    0x1143c,
-    0x11a97,
-    0xe019e,
-    0xe019a,
-    0x135e,
-    0xe018b,
-    0x034f,
-    0x1193d,
-    0x0368,
-    0xaaee,
-    0xaa2b,
-    0x10f47,
-    0x10f4e,
-    0x0f91,
-    0xe0112,
-    0x11640,
-    0x08ee,
-    0x11080,
-    0x11c33,
-    0x16f7f,
-    0x1dde,
-    0x1daab,
-    0xe017e,
-    0x0945,
-    0x0593,
-    0x1da5a,
-    0x05bb,
-    0x0942,
-    0x1da30,
-    0xaaf6,
-    0x1da50,
-    0x16ff0,
-    0xa8b7,
-    0x11940,
-    0x0360,
-    0x2df5,
-    0x073f,
-    0x1a78,
-    0x09fe,
-    0x08e5,
-    0x17ce,
-    0x16f52,
-    0xfe2e,
-    0x1c2f,
-    0x1182e,
-    0xe017f,
-    0x2df4,
-    0xe01a3,
-    0x11631,
-    0x07f0,
-    0x11ef3,
-    0x05bd,
-    0x1dfe,
-    0x1133e,
-    0x11a02,
-    0xe0110,
-    0x0afe,
-    0x2dee,
-    0x05a5,
-    0x0594,
-    0x1da04,
-    0x08ef,
-    0xe0145,
-    0x030e,
-    0x0347,
-    0x0c62,
-    0xfe09,
-    0x1133b,
-    0x114bd,
-    0x111b6,
-    0x1cf10,
-    0x1da3e,
-    0xe01b9,
-    0x1da48,
-    0x0b4d,
-    0x1dc5,
-    0x0dd4,
-    0x1e945,
-    0x0618,
-    0x0f74,
-    0x11043,
-    0x1a7f,
-    0x08d6,
-    0x1e08f,
-    0x11c30,
-    0x11a8c,
-    0xe01ca,
-    0x0332,
-    0x16af0,
-    0x0dde,
-    0x16f7a,
-    0x10a0f,
-    0x20d0,
-    0x11362,
-    0x1e00d,
-    0x1112b,
-    0x05a3,
-    0x0a70,
-    0x1da65,
-    0x11a5b,
-    0xa9b7,
-    0x11ca3,
-    0x0fb8,
-    0x1033,
-    0x111cf,
-    0xe011a,
-    0x0822,
-    0x05c2,
-    0x1733,
-    0xe0175,
-    0x1ab9,
-    0xe014e,
-    0x1e02a,
-    0x0f3e,
-    0x106c,
-    0x093b,
-    0x2de5,
-    0x17cc,
-    0x20e3,
-    0x1da9f,
-    0x11938,
-    0x0736,
-    0x1e029,
-    0x0d03,
-    0x0bcd,
-    0x11cab,
-    0x11039,
-    0x1e4ec,
-    0x1cf03,
-    0x030d,
-    0x1089,
-    0x302b,
-    0x11301,
-    0x11131,
-    0xa92b,
-    0x1d17e,
-    0x111ca,
-    0x1e8d0,
-    0x0650,
-    0x2df3,
-    0x08dc,
-    0x102e,
-    0xa94c,
-    0x0c03,
-    0xaab2,
-    0x0eb5,
-    0xa8e2,
-    0x0f77,
-    0xe0138,
-    0x1bed,
-    0xe01cf,
-    0x112e9,
-    0xe0144,
-    0x11d33,
-    0x1ac0,
-    0xe01b6,
-    0x17c2,
-    0x0ac5,
-    0x11d44,
-    0x0739,
-    0x11839,
-    0x1885,
-    0x11100,
-    0x064b,
-    0x1ba5,
-    0x110b3,
-    0x0e47,
-    0x08d2,
-    0x07ef,
-    0x0335,
-    0x0f86,
-    0x1a5d,
-    0x030c,
-    0xa67d,
-    0x1d165,
-    0x11cb0,
-    0x033d,
-    0x1beb,
-    0x16f8f,
-    0x11a5a,
-    0x10ae5,
-    0x1da13,
-    0x103d,
-    0x1cf12,
-    0x0e36,
-    0x11630,
-    0x0944,
-    0xaab7,
-    0x10a3a,
-    0x1da31,
-    0x1cf30,
-    0x07f2,
-    0x1cf09,
-    0xe014c,
-    0x1cf15,
-    0x0d42,
-    0x0946,
-    0x1da40,
-    0x0cc6,
-    0x09c1,
-    0x06e7,
-    0x0fa9,
-    0x1ba7,
-    0x0cf3,
-    0x0341,
-    0x05ba,
-    0x1acc,
-    0x0bc6,
-    0x1ddb,
-    0x0327,
-    0x1da2d,
-    0xe0178,
-    0x2dff,
-    0x16b34,
-    0x0bca,
-    0x1939,
-    0x1be6,
-    0x0fad,
-    0x119d3,
-    0xa9b4,
-    0x11d3a,
-    0x0488,
-    0x20e0,
-    0x1cf36,
-    0x0337,
-    0x1abe,
-    0x1031,
-    0x1dd4,
-    0x09d7,
-    0x1163f,
-    0x1cf21,
-    0x1dc4,
-    0xfe04,
-    0xe0189,
-    0x036a,
-    0x1ddd,
-    0x114b6,
-    0x11180,
-    0xe016a,
-    0x16f6a,
-    0x16ff1,
-    0xe0127,
-    0x11231,
-    0x11241,
-    0x0656,
-    0xe0161,
-    0x0346,
-    0x1143a,
-    0x1cd6,
-    0x0949,
-    0x1c26,
-    0x110b1,
-    0x11436,
-    0x11a03,
-    0x11367,
-    0x1e2ae,
-    0xfe0a,
-    0x1e00e,
-    0x0325,
-    0x1da9c,
-    0x1a65,
-    0x0983,
-    0x11a08,
-    0x17b9,
-    0x0c4b,
-    0xe0174,
-    0x1d244,
-    0x1344f,
-    0x2de7,
-    0x1b38,
-    0xe013a,
-    0x20dc,
-    0xe011f,
-    0x1cf19,
-    0x08d1,
-    0x1e010,
-    0x0955,
-    0x16f69,
-    0x10eab,
-    0x17c7,
-    0x11340,
-    0x081d,
-    0x0328,
-    0x1e028,
-    0x17bc,
-    0xaab3,
-    0xe01b7,
-    0x0e4e,
-    0x1abc,
-    0x1da66,
-    0x1732,
-    0xe01ae,
-    0x1cf43,
-    0x1d243,
-    0x1712,
-    0x0c42,
-    0x0b3f,
-    0x302d,
-    0xe01e6,
-    0x1da1c,
-    0x2ded,
-    0x1b41,
-    0x11cb4,
-    0xe0148,
-    0xe0123,
-    0x11d93,
-    0x1072,
-    0x1936,
-    0x1063,
-    0x0c56,
-    0x11a39,
-    0x1e2ef,
-    0xe01ab,
-    0x17d0,
-    0x1d242,
-    0x0359,
-    0x1123e,
-    0x11639,
-    0x1b73,
-    0xe0152,
-    0x11a8d,
-    0x16af1,
-    0x035b,
-    0x0bc2,
-    0x1da12,
-    0xe01da,
-    0x11c93,
-    0x094a,
-    0x073e,
-    0x11372,
-    0x0d48,
-    0x1de9,
-    0x114c1,
-    0x07ae,
-    0x11a54,
-    0x10a39,
-    0x11638,
-    0x2deb,
-    0x073a,
-    0x1cf0f,
-    0x0fab,
-    0x1aca,
-    0xa8c3,
-    0xa981,
-    0x1ac4,
-    0x1e133,
-    0xabe5,
-    0x1da52,
-    0x0e37,
-    0xe0105,
-    0x11357,
-    0x0336,
-    0x0c3e,
-    0xe010f,
-    0xe0188,
-    0x111cb,
-    0x11444,
-    0x0940,
-    0x11cac,
-    0xa8ed,
-    0x114b7,
-    0x11832,
-    0x0743,
-    0x08d8,
-    0x1e026,
-    0x1da53,
-    0x11c3f,
-    0x1da06,
-    0xe019b,
-    0x119d2,
-    0xaa34,
-    0x1b00,
-    0x0730,
-    0x13440,
-    0x0cc4,
-    0xe0146,
-    0x1c25,
-    0x030b,
-    0x11a95,
-    0x0323,
-    0x1e00b,
-    0x0943,
-    0x0f8d,
-    0x0dca,
-    0x10d25,
-    0x2de9,
-    0x1bab,
-    0x115b1,
-    0x1da2b,
-    0x0ebc,
-    0x1e131,
-    0xe018a,
-    0x1923,
-    0x05c1,
-    0x20df,
-    0x1103d,
-    0xa927,
-    0x1c2e,
-    0x07ec,
-    0x16f82,
-    0xe01e4,
-    0x1da25,
-    0x0f7a,
-    0x1cf20,
-    0x1171d,
-    0x11347,
-    0x112e6,
-    0x1d188,
-    0x11d41,
-    0x1068,
-    0x089c,
-    0x11f36,
-    0x11341,
-    0xaa2f,
-    0x0356,
-    0xe0137,
-    0x1344c,
-    0x0fb0,
-    0xe016b,
-    0x1df4,
-    0x1112d,
-    0x1de2,
-    0x1103b,
-    0x08f9,
-    0xe01c0,
-    0x11f40,
-    0x119df,
-    0x1083,
-    0xaa33,
-    0x13448,
-    0x0fb4,
-    0x0ac3,
-    0xabe4,
-    0x11a3c,
-    0x1134d,
-    0x114b9,
-    0x103a,
-    0x1da20,
-    0x08da,
-    0x16f56,
-    0x309a,
-    0x11127,
-    0x11a93,
-    0x192b,
-    0x0f97,
-    0x1cd5,
-    0x1da5f,
-    0x1084,
-    0x0eb4,
-    0x11370,
-    0x10efe,
-    0x1069,
-    0x111c0,
-    0x11834,
-    0x119d4,
-    0x1193c,
-    0x1cf1c,
-    0x1928,
-    0x17bf,
-    0x1da6c,
-    0xe0156,
-    0x1bf2,
-    0x0304,
-    0x11ca1,
-    0x11233,
-    0x0859,
-    0x0a42,
-    0x1c2d,
-    0x0738,
-    0x0592,
-    0x1b6f,
-    0x0355,
-    0x0ddd,
-    0x1a71,
-    0x0bc1,
-    0x112df,
-    0x1344e,
-    0x1daac,
-    0x1e014,
-    0x0d44,
-    0x1df8,
-    0x16f4f,
-    0xe01e0,
-    0x1da16,
-    0x11721,
-    0x0d02,
-    0x20e5,
-    0x115b4,
-    0x1b42,
-    0x1b43,
-    0x0b40,
-    0xe016c,
-    0x08ed,
-    0x109a,
-    0x11303,
-    0x1cf35,
-    0x1344a,
-    0x17c5,
-    0x11c39,
-    0xa66f,
-    0x093f,
-    0x20d7,
-    0x05ae,
-    0x1cf14,
-    0x1e016,
-    0x08eb,
-    0x16f53,
-    0x0745,
-    0x0353,
-    0x0c3c,
-    0x0315,
-    0x16f54,
-    0x0eb9,
-    0x114be,
-    0x08cb,
-    0x16f81,
-    0x06db,
-    0x07a7,
-    0x0a4b,
-    0x20e6,
-    0x1df5,
-    0xe01a4,
-    0xfe23,
-    0x1172b,
-    0x0dd9,
-    0x1929,
-    0x302f,
-    0x064d,
-    0x0a01,
-    0x09c8,
-    0x20d1,
-    0xe018f,
-    0xa8e5,
-    0xa8c2,
-    0x16b31,
-    0xa6f1,
-    0x0f92,
-    0x07fd,
-    0x094d,
-    0x0e4b,
-    0x1193e,
-    0xe0115,
-    0x093e,
-    0x0821,
-    0x1cd0,
-    0x1c2a,
-    0x0735,
-    0xa823,
-    0x05a4,
-    0xe0121,
-    0xe015c,
-    0x1a79,
-    0x0f83,
-    0x112e1,
-    0xa947,
-    0x16f5e,
-    0x10a06,
-    0x17d3,
-    0x1d185,
-    0x0d57,
-    0x16f62,
-    0x0f96,
-    0x115b3,
-    0x11f35,
-    0xe0119,
-    0x16f7d,
-    0xfe02,
-    0x0c46,
-    0x1cf44,
-    0x2de0,
-    0xaa2e,
-    0x111ba,
-    0x110b4,
-    0x1e8d2,
-    0x11c92,
-    0x1d169,
-    0x035f,
-    0x0740,
-    0x1cdc,
-    0x1122d,
-    0x2de8,
-    0x0748,
-    0x0ec9,
-    0x1a63,
-    0x1da5c,
-    0x1b35,
-    0x0cc2,
-    0x1112c,
-    0xe0113,
-    0x06da,
-    0x1922,
-    0x2de3,
-    0x18a9,
-    0x1ba9,
-    0x08cc,
-    0x11a57,
-    0x102f,
-    0x0737,
-    0x0652,
-    0x10a0d,
-    0x05b4,
-    0x11000,
-    0x0fa7,
-    0x06e3,
-    0x1bf3,
-    0xe01a6,
-    0x0352,
-    0x0305,
-    0x0f82,
-    0xe0172,
-    0x11235,
-    0x0d43,
-    0x106a,
-    0x20e8,
-    0x11c94,
-    0x1b6e,
-    0x05b1,
-    0x0614,
-    0x08fb,
-    0x11132,
-    0x103b,
-    0x110b9,
-    0x112e8,
-    0x1b6b,
-    0x1da6b,
-    0x1c2c,
-    0x1b3a,
-    0xe01bc,
-    0x1da64,
-    0x1085,
-    0x1da45,
-    0x11d36,
-    0x20f0,
-    0x1da0f,
-    0x0899,
-    0xe01d9,
-    0x031e,
-    0x0fa5,
-    0x1182c,
-    0xe01a1,
-    0xe01c6,
-    0x0350,
-    0x13452,
-    0x1ce3,
-    0x2de1,
-    0x2dfc,
-    0x1da4a,
-    0x1cf04,
-    0x16f63,
-    0x1d189,
-    0xe0101,
-    0xe014d,
-    0x11a92,
-    0x0817,
-    0x11c31,
-    0x11040,
-    0xe01df,
-    0x1e021,
-    0x11302,
-    0xe01e1,
-    0xe0166,
-    0x11a34,
-    0x111cc,
-    0xaaec,
-    0x0962,
-    0xfe07,
-    0x1cf16,
-    0x1bef,
-    0x08ea,
-    0x1e011,
-    0x0f7e,
-    0x1daa7,
-    0x1937,
-    0xe016d,
-    0x1dee,
-    0xfe28,
-    0x085b,
-    0xa94a,
-    0x1dd5,
-    0x1dea,
-    0x1a6f,
-    0xfe03,
-    0x1a75,
-    0x06ea,
-    0x16f7e,
-    0x0f37,
-    0x1182f,
-    0x059f,
-    0x1da69,
-    0x0fac,
-    0x0c3f,
-    0x0d41,
-    0x16f84,
-    0x0fae,
-    0xe0168,
-    0x0c44,
-    0x034e,
-    0x08fc,
-    0x05bf,
-    0x0dd0,
-    0x1bf0,
-    0x2cef,
-    0x1ab3,
-    0x0d3f,
-    0x1cf2b,
-    0xa8c0,
-    0x1a5c,
-    0x16f67,
-    0x1daaa,
-    0xe016f,
-    0x1da84,
-    0x2df2,
-    0x05a9,
-    0xe013d,
-    0x0c43,
-    0x1da36,
-    0xe0103,
-    0x08fd,
-    0x0fba,
-    0x0ec8,
-    0x1da1f,
-    0xa9b5,
-    0x1be8,
-    0xfe2b,
-    0x108d,
-    0x06d9,
-    0x1cdd,
-    0x0816,
-    0xa676,
-    0x0818,
-    0x16f5f,
-    0x0fa8,
-    0x0f9b,
-    0x0f9d,
-    0x0e31,
-    0x11a91,
-    0x0611,
-    0x0b4b,
-    0x0b57,
-    0xe015d,
-    0x108f,
-    0x1e001,
-    0x17ca,
-    0x08e1,
-    0x1bc9d,
-    0x2df1,
-    0x0b42,
-    0x081e,
-    0x16f59,
-    0xfe20,
-    0x0597,
-    0x1cf01,
-    0x1038,
-    0x035a,
-    0xe0196,
-    0x1a6e,
-    0x1daa5,
-    0x0321,
-    0x1da51,
-    0x17d2,
-    0x1daad,
-    0x033a,
-    0x1056,
-    0x1ab1,
-    0x0dcf,
-    0x1e947,
-    0x0300,
-    0x10d24,
-    0x10a02,
-    0x11342,
-    0x1ce7,
-    0x031f,
-    0x1073,
-    0x0653,
-    0x0fb2,
-    0x11a33,
-    0xe01cc,
-    0x1da02,
-    0xe0133,
-    0x2de2,
-    0x0333,
-    0x0a71,
-    0xe01eb,
-    0x11d96,
-    0x0612,
-    0xa8b8,
-    0x08e8,
-    0x11ca6,
-    0x1de8,
-    0x1da4f,
-    0x07a8,
-    0x0e39,
-    0xa982,
-    0x036e,
-    0x193a,
-    0x16f91,
-    0x10d27,
-    0x0f78,
-    0x035d,
-    0x1da2f,
-    0x11a36,
-    0xaab0,
-    0xfe0e,
-    0x05ad,
-    0x1dd6,
-    0xe0142,
-    0x1dfd,
-    0x1122f,
-    0x08e4,
-    0xaa7c,
-    0x1b3b,
-    0x0b48,
-    0x05bc,
-    0xa8ee,
-    0x11c97,
-    0x110b8,
-    0xe01b2,
-    0xe0122,
-    0x11a8e,
-    0x11a58,
-    0x036b,
-    0x0331,
-    0x16f71,
-    0x1143e,
-    0x110ba,
-    0x1112e,
-    0x089b,
-    0x1ac1,
-    0xe0143,
-    0x07ed,
-    0xa674,
-    0x2df0,
-    0x1da62,
-    0xa8bd,
-    0x1b3d,
-    0x11d3c,
-    0xe014b,
-    0xaa32,
-    0x11a51,
-    0x16f92,
-    0x1d166,
-    0x0cc8,
-    0x1dca,
-    0xe01b8,
-    0x1ac8,
-    0x17c9,
-    0xfe08,
-    0x0338,
-    0x1de7,
-    0xe018d,
-    0xa69e,
-    0x1da4c,
-    0x07f3,
-    0x16b35,
-    0x0a51,
-    0xa825,
-    0x1071,
-    0x11f3f,
-    0x0348,
-    0x116b7,
-    0x09c3,
-    0x1e2ee,
-    0x0e34,
-    0x036d,
-    0xabe9,
-    0x1cf7,
-    0x1935,
-    0x05aa,
-    0x1103f,
-    0x11a09,
-    0x1da3f,
-    0x108a,
-    0x16f5c,
-    0x20d6,
-    0x07eb,
-    0xfe2a,
-    0xe0193,
-    0x11d40,
-    0x05b9,
-    0x0f7d,
-    0x16f5a,
-    0xe0197,
-    0x09cd,
-    0x0fb5,
-    0x1da07,
-    0xe01d1,
-    0xa880,
-    0x1a7c,
-    0x11ca5,
-    0x09cb,
-    0x0fb3,
-    0x0825,
-    0x1103a,
-    0x0827,
-    0x1e94a,
-    0x08f8,
-];
-
-
-#[inline]
-pub fn is_public_assigned(c: char) -> bool {
-    match c {
-        '\u{0000}'..='\u{0377}'
-        | '\u{037A}'..='\u{037F}'
-        | '\u{0384}'..='\u{038A}'
-        | '\u{038C}'
-        | '\u{038E}'..='\u{03A1}'
-        | '\u{03A3}'..='\u{052F}'
-        | '\u{0531}'..='\u{0556}'
-        | '\u{0559}'..='\u{058A}'
-        | '\u{058D}'..='\u{058F}'
-        | '\u{0591}'..='\u{05C7}'
-        | '\u{05D0}'..='\u{05EA}'
-        | '\u{05EF}'..='\u{05F4}'
-        | '\u{0600}'..='\u{070D}'
-        | '\u{070F}'..='\u{074A}'
-        | '\u{074D}'..='\u{07B1}'
-        | '\u{07C0}'..='\u{07FA}'
-        | '\u{07FD}'..='\u{082D}'
-        | '\u{0830}'..='\u{083E}'
-        | '\u{0840}'..='\u{085B}'
-        | '\u{085E}'
-        | '\u{0860}'..='\u{086A}'
-        | '\u{0870}'..='\u{088E}'
-        | '\u{0890}'..='\u{0891}'
-        | '\u{0898}'..='\u{0983}'
-        | '\u{0985}'..='\u{098C}'
-        | '\u{098F}'..='\u{0990}'
-        | '\u{0993}'..='\u{09A8}'
-        | '\u{09AA}'..='\u{09B0}'
-        | '\u{09B2}'
-        | '\u{09B6}'..='\u{09B9}'
-        | '\u{09BC}'..='\u{09C4}'
-        | '\u{09C7}'..='\u{09C8}'
-        | '\u{09CB}'..='\u{09CE}'
-        | '\u{09D7}'
-        | '\u{09DC}'..='\u{09DD}'
-        | '\u{09DF}'..='\u{09E3}'
-        | '\u{09E6}'..='\u{09FE}'
-        | '\u{0A01}'..='\u{0A03}'
-        | '\u{0A05}'..='\u{0A0A}'
-        | '\u{0A0F}'..='\u{0A10}'
-        | '\u{0A13}'..='\u{0A28}'
-        | '\u{0A2A}'..='\u{0A30}'
-        | '\u{0A32}'..='\u{0A33}'
-        | '\u{0A35}'..='\u{0A36}'
-        | '\u{0A38}'..='\u{0A39}'
-        | '\u{0A3C}'
-        | '\u{0A3E}'..='\u{0A42}'
-        | '\u{0A47}'..='\u{0A48}'
-        | '\u{0A4B}'..='\u{0A4D}'
-        | '\u{0A51}'
-        | '\u{0A59}'..='\u{0A5C}'
-        | '\u{0A5E}'
-        | '\u{0A66}'..='\u{0A76}'
-        | '\u{0A81}'..='\u{0A83}'
-        | '\u{0A85}'..='\u{0A8D}'
-        | '\u{0A8F}'..='\u{0A91}'
-        | '\u{0A93}'..='\u{0AA8}'
-        | '\u{0AAA}'..='\u{0AB0}'
-        | '\u{0AB2}'..='\u{0AB3}'
-        | '\u{0AB5}'..='\u{0AB9}'
-        | '\u{0ABC}'..='\u{0AC5}'
-        | '\u{0AC7}'..='\u{0AC9}'
-        | '\u{0ACB}'..='\u{0ACD}'
-        | '\u{0AD0}'
-        | '\u{0AE0}'..='\u{0AE3}'
-        | '\u{0AE6}'..='\u{0AF1}'
-        | '\u{0AF9}'..='\u{0AFF}'
-        | '\u{0B01}'..='\u{0B03}'
-        | '\u{0B05}'..='\u{0B0C}'
-        | '\u{0B0F}'..='\u{0B10}'
-        | '\u{0B13}'..='\u{0B28}'
-        | '\u{0B2A}'..='\u{0B30}'
-        | '\u{0B32}'..='\u{0B33}'
-        | '\u{0B35}'..='\u{0B39}'
-        | '\u{0B3C}'..='\u{0B44}'
-        | '\u{0B47}'..='\u{0B48}'
-        | '\u{0B4B}'..='\u{0B4D}'
-        | '\u{0B55}'..='\u{0B57}'
-        | '\u{0B5C}'..='\u{0B5D}'
-        | '\u{0B5F}'..='\u{0B63}'
-        | '\u{0B66}'..='\u{0B77}'
-        | '\u{0B82}'..='\u{0B83}'
-        | '\u{0B85}'..='\u{0B8A}'
-        | '\u{0B8E}'..='\u{0B90}'
-        | '\u{0B92}'..='\u{0B95}'
-        | '\u{0B99}'..='\u{0B9A}'
-        | '\u{0B9C}'
-        | '\u{0B9E}'..='\u{0B9F}'
-        | '\u{0BA3}'..='\u{0BA4}'
-        | '\u{0BA8}'..='\u{0BAA}'
-        | '\u{0BAE}'..='\u{0BB9}'
-        | '\u{0BBE}'..='\u{0BC2}'
-        | '\u{0BC6}'..='\u{0BC8}'
-        | '\u{0BCA}'..='\u{0BCD}'
-        | '\u{0BD0}'
-        | '\u{0BD7}'
-        | '\u{0BE6}'..='\u{0BFA}'
-        | '\u{0C00}'..='\u{0C0C}'
-        | '\u{0C0E}'..='\u{0C10}'
-        | '\u{0C12}'..='\u{0C28}'
-        | '\u{0C2A}'..='\u{0C39}'
-        | '\u{0C3C}'..='\u{0C44}'
-        | '\u{0C46}'..='\u{0C48}'
-        | '\u{0C4A}'..='\u{0C4D}'
-        | '\u{0C55}'..='\u{0C56}'
-        | '\u{0C58}'..='\u{0C5A}'
-        | '\u{0C5D}'
-        | '\u{0C60}'..='\u{0C63}'
-        | '\u{0C66}'..='\u{0C6F}'
-        | '\u{0C77}'..='\u{0C8C}'
-        | '\u{0C8E}'..='\u{0C90}'
-        | '\u{0C92}'..='\u{0CA8}'
-        | '\u{0CAA}'..='\u{0CB3}'
-        | '\u{0CB5}'..='\u{0CB9}'
-        | '\u{0CBC}'..='\u{0CC4}'
-        | '\u{0CC6}'..='\u{0CC8}'
-        | '\u{0CCA}'..='\u{0CCD}'
-        | '\u{0CD5}'..='\u{0CD6}'
-        | '\u{0CDD}'..='\u{0CDE}'
-        | '\u{0CE0}'..='\u{0CE3}'
-        | '\u{0CE6}'..='\u{0CEF}'
-        | '\u{0CF1}'..='\u{0CF3}'
-        | '\u{0D00}'..='\u{0D0C}'
-        | '\u{0D0E}'..='\u{0D10}'
-        | '\u{0D12}'..='\u{0D44}'
-        | '\u{0D46}'..='\u{0D48}'
-        | '\u{0D4A}'..='\u{0D4F}'
-        | '\u{0D54}'..='\u{0D63}'
-        | '\u{0D66}'..='\u{0D7F}'
-        | '\u{0D81}'..='\u{0D83}'
-        | '\u{0D85}'..='\u{0D96}'
-        | '\u{0D9A}'..='\u{0DB1}'
-        | '\u{0DB3}'..='\u{0DBB}'
-        | '\u{0DBD}'
-        | '\u{0DC0}'..='\u{0DC6}'
-        | '\u{0DCA}'
-        | '\u{0DCF}'..='\u{0DD4}'
-        | '\u{0DD6}'
-        | '\u{0DD8}'..='\u{0DDF}'
-        | '\u{0DE6}'..='\u{0DEF}'
-        | '\u{0DF2}'..='\u{0DF4}'
-        | '\u{0E01}'..='\u{0E3A}'
-        | '\u{0E3F}'..='\u{0E5B}'
-        | '\u{0E81}'..='\u{0E82}'
-        | '\u{0E84}'
-        | '\u{0E86}'..='\u{0E8A}'
-        | '\u{0E8C}'..='\u{0EA3}'
-        | '\u{0EA5}'
-        | '\u{0EA7}'..='\u{0EBD}'
-        | '\u{0EC0}'..='\u{0EC4}'
-        | '\u{0EC6}'
-        | '\u{0EC8}'..='\u{0ECE}'
-        | '\u{0ED0}'..='\u{0ED9}'
-        | '\u{0EDC}'..='\u{0EDF}'
-        | '\u{0F00}'..='\u{0F47}'
-        | '\u{0F49}'..='\u{0F6C}'
-        | '\u{0F71}'..='\u{0F97}'
-        | '\u{0F99}'..='\u{0FBC}'
-        | '\u{0FBE}'..='\u{0FCC}'
-        | '\u{0FCE}'..='\u{0FDA}'
-        | '\u{1000}'..='\u{10C5}'
-        | '\u{10C7}'
-        | '\u{10CD}'
-        | '\u{10D0}'..='\u{1248}'
-        | '\u{124A}'..='\u{124D}'
-        | '\u{1250}'..='\u{1256}'
-        | '\u{1258}'
-        | '\u{125A}'..='\u{125D}'
-        | '\u{1260}'..='\u{1288}'
-        | '\u{128A}'..='\u{128D}'
-        | '\u{1290}'..='\u{12B0}'
-        | '\u{12B2}'..='\u{12B5}'
-        | '\u{12B8}'..='\u{12BE}'
-        | '\u{12C0}'
-        | '\u{12C2}'..='\u{12C5}'
-        | '\u{12C8}'..='\u{12D6}'
-        | '\u{12D8}'..='\u{1310}'
-        | '\u{1312}'..='\u{1315}'
-        | '\u{1318}'..='\u{135A}'
-        | '\u{135D}'..='\u{137C}'
-        | '\u{1380}'..='\u{1399}'
-        | '\u{13A0}'..='\u{13F5}'
-        | '\u{13F8}'..='\u{13FD}'
-        | '\u{1400}'..='\u{169C}'
-        | '\u{16A0}'..='\u{16F8}'
-        | '\u{1700}'..='\u{1715}'
-        | '\u{171F}'..='\u{1736}'
-        | '\u{1740}'..='\u{1753}'
-        | '\u{1760}'..='\u{176C}'
-        | '\u{176E}'..='\u{1770}'
-        | '\u{1772}'..='\u{1773}'
-        | '\u{1780}'..='\u{17DD}'
-        | '\u{17E0}'..='\u{17E9}'
-        | '\u{17F0}'..='\u{17F9}'
-        | '\u{1800}'..='\u{1819}'
-        | '\u{1820}'..='\u{1878}'
-        | '\u{1880}'..='\u{18AA}'
-        | '\u{18B0}'..='\u{18F5}'
-        | '\u{1900}'..='\u{191E}'
-        | '\u{1920}'..='\u{192B}'
-        | '\u{1930}'..='\u{193B}'
-        | '\u{1940}'
-        | '\u{1944}'..='\u{196D}'
-        | '\u{1970}'..='\u{1974}'
-        | '\u{1980}'..='\u{19AB}'
-        | '\u{19B0}'..='\u{19C9}'
-        | '\u{19D0}'..='\u{19DA}'
-        | '\u{19DE}'..='\u{1A1B}'
-        | '\u{1A1E}'..='\u{1A5E}'
-        | '\u{1A60}'..='\u{1A7C}'
-        | '\u{1A7F}'..='\u{1A89}'
-        | '\u{1A90}'..='\u{1A99}'
-        | '\u{1AA0}'..='\u{1AAD}'
-        | '\u{1AB0}'..='\u{1ACE}'
-        | '\u{1B00}'..='\u{1B4C}'
-        | '\u{1B50}'..='\u{1B7E}'
-        | '\u{1B80}'..='\u{1BF3}'
-        | '\u{1BFC}'..='\u{1C37}'
-        | '\u{1C3B}'..='\u{1C49}'
-        | '\u{1C4D}'..='\u{1C88}'
-        | '\u{1C90}'..='\u{1CBA}'
-        | '\u{1CBD}'..='\u{1CC7}'
-        | '\u{1CD0}'..='\u{1CFA}'
-        | '\u{1D00}'..='\u{1F15}'
-        | '\u{1F18}'..='\u{1F1D}'
-        | '\u{1F20}'..='\u{1F45}'
-        | '\u{1F48}'..='\u{1F4D}'
-        | '\u{1F50}'..='\u{1F57}'
-        | '\u{1F59}'
-        | '\u{1F5B}'
-        | '\u{1F5D}'
-        | '\u{1F5F}'..='\u{1F7D}'
-        | '\u{1F80}'..='\u{1FB4}'
-        | '\u{1FB6}'..='\u{1FC4}'
-        | '\u{1FC6}'..='\u{1FD3}'
-        | '\u{1FD6}'..='\u{1FDB}'
-        | '\u{1FDD}'..='\u{1FEF}'
-        | '\u{1FF2}'..='\u{1FF4}'
-        | '\u{1FF6}'..='\u{1FFE}'
-        | '\u{2000}'..='\u{2064}'
-        | '\u{2066}'..='\u{2071}'
-        | '\u{2074}'..='\u{208E}'
-        | '\u{2090}'..='\u{209C}'
-        | '\u{20A0}'..='\u{20C0}'
-        | '\u{20D0}'..='\u{20F0}'
-        | '\u{2100}'..='\u{218B}'
-        | '\u{2190}'..='\u{2426}'
-        | '\u{2440}'..='\u{244A}'
-        | '\u{2460}'..='\u{2B73}'
-        | '\u{2B76}'..='\u{2B95}'
-        | '\u{2B97}'..='\u{2CF3}'
-        | '\u{2CF9}'..='\u{2D25}'
-        | '\u{2D27}'
-        | '\u{2D2D}'
-        | '\u{2D30}'..='\u{2D67}'
-        | '\u{2D6F}'..='\u{2D70}'
-        | '\u{2D7F}'..='\u{2D96}'
-        | '\u{2DA0}'..='\u{2DA6}'
-        | '\u{2DA8}'..='\u{2DAE}'
-        | '\u{2DB0}'..='\u{2DB6}'
-        | '\u{2DB8}'..='\u{2DBE}'
-        | '\u{2DC0}'..='\u{2DC6}'
-        | '\u{2DC8}'..='\u{2DCE}'
-        | '\u{2DD0}'..='\u{2DD6}'
-        | '\u{2DD8}'..='\u{2DDE}'
-        | '\u{2DE0}'..='\u{2E5D}'
-        | '\u{2E80}'..='\u{2E99}'
-        | '\u{2E9B}'..='\u{2EF3}'
-        | '\u{2F00}'..='\u{2FD5}'
-        | '\u{2FF0}'..='\u{303F}'
-        | '\u{3041}'..='\u{3096}'
-        | '\u{3099}'..='\u{30FF}'
-        | '\u{3105}'..='\u{312F}'
-        | '\u{3131}'..='\u{318E}'
-        | '\u{3190}'..='\u{31E3}'
-        | '\u{31EF}'..='\u{321E}'
-        | '\u{3220}'..='\u{A48C}'
-        | '\u{A490}'..='\u{A4C6}'
-        | '\u{A4D0}'..='\u{A62B}'
-        | '\u{A640}'..='\u{A6F7}'
-        | '\u{A700}'..='\u{A7CA}'
-        | '\u{A7D0}'..='\u{A7D1}'
-        | '\u{A7D3}'
-        | '\u{A7D5}'..='\u{A7D9}'
-        | '\u{A7F2}'..='\u{A82C}'
-        | '\u{A830}'..='\u{A839}'
-        | '\u{A840}'..='\u{A877}'
-        | '\u{A880}'..='\u{A8C5}'
-        | '\u{A8CE}'..='\u{A8D9}'
-        | '\u{A8E0}'..='\u{A953}'
-        | '\u{A95F}'..='\u{A97C}'
-        | '\u{A980}'..='\u{A9CD}'
-        | '\u{A9CF}'..='\u{A9D9}'
-        | '\u{A9DE}'..='\u{A9FE}'
-        | '\u{AA00}'..='\u{AA36}'
-        | '\u{AA40}'..='\u{AA4D}'
-        | '\u{AA50}'..='\u{AA59}'
-        | '\u{AA5C}'..='\u{AAC2}'
-        | '\u{AADB}'..='\u{AAF6}'
-        | '\u{AB01}'..='\u{AB06}'
-        | '\u{AB09}'..='\u{AB0E}'
-        | '\u{AB11}'..='\u{AB16}'
-        | '\u{AB20}'..='\u{AB26}'
-        | '\u{AB28}'..='\u{AB2E}'
-        | '\u{AB30}'..='\u{AB6B}'
-        | '\u{AB70}'..='\u{ABED}'
-        | '\u{ABF0}'..='\u{ABF9}'
-        | '\u{AC00}'..='\u{D7A3}'
-        | '\u{D7B0}'..='\u{D7C6}'
-        | '\u{D7CB}'..='\u{D7FB}'
-        | '\u{F900}'..='\u{FA6D}'
-        | '\u{FA70}'..='\u{FAD9}'
-        | '\u{FB00}'..='\u{FB06}'
-        | '\u{FB13}'..='\u{FB17}'
-        | '\u{FB1D}'..='\u{FB36}'
-        | '\u{FB38}'..='\u{FB3C}'
-        | '\u{FB3E}'
-        | '\u{FB40}'..='\u{FB41}'
-        | '\u{FB43}'..='\u{FB44}'
-        | '\u{FB46}'..='\u{FBC2}'
-        | '\u{FBD3}'..='\u{FD8F}'
-        | '\u{FD92}'..='\u{FDC7}'
-        | '\u{FDCF}'
-        | '\u{FDF0}'..='\u{FE19}'
-        | '\u{FE20}'..='\u{FE52}'
-        | '\u{FE54}'..='\u{FE66}'
-        | '\u{FE68}'..='\u{FE6B}'
-        | '\u{FE70}'..='\u{FE74}'
-        | '\u{FE76}'..='\u{FEFC}'
-        | '\u{FEFF}'
-        | '\u{FF01}'..='\u{FFBE}'
-        | '\u{FFC2}'..='\u{FFC7}'
-        | '\u{FFCA}'..='\u{FFCF}'
-        | '\u{FFD2}'..='\u{FFD7}'
-        | '\u{FFDA}'..='\u{FFDC}'
-        | '\u{FFE0}'..='\u{FFE6}'
-        | '\u{FFE8}'..='\u{FFEE}'
-        | '\u{FFF9}'..='\u{FFFD}'
-        | '\u{10000}'..='\u{1000B}'
-        | '\u{1000D}'..='\u{10026}'
-        | '\u{10028}'..='\u{1003A}'
-        | '\u{1003C}'..='\u{1003D}'
-        | '\u{1003F}'..='\u{1004D}'
-        | '\u{10050}'..='\u{1005D}'
-        | '\u{10080}'..='\u{100FA}'
-        | '\u{10100}'..='\u{10102}'
-        | '\u{10107}'..='\u{10133}'
-        | '\u{10137}'..='\u{1018E}'
-        | '\u{10190}'..='\u{1019C}'
-        | '\u{101A0}'
-        | '\u{101D0}'..='\u{101FD}'
-        | '\u{10280}'..='\u{1029C}'
-        | '\u{102A0}'..='\u{102D0}'
-        | '\u{102E0}'..='\u{102FB}'
-        | '\u{10300}'..='\u{10323}'
-        | '\u{1032D}'..='\u{1034A}'
-        | '\u{10350}'..='\u{1037A}'
-        | '\u{10380}'..='\u{1039D}'
-        | '\u{1039F}'..='\u{103C3}'
-        | '\u{103C8}'..='\u{103D5}'
-        | '\u{10400}'..='\u{1049D}'
-        | '\u{104A0}'..='\u{104A9}'
-        | '\u{104B0}'..='\u{104D3}'
-        | '\u{104D8}'..='\u{104FB}'
-        | '\u{10500}'..='\u{10527}'
-        | '\u{10530}'..='\u{10563}'
-        | '\u{1056F}'..='\u{1057A}'
-        | '\u{1057C}'..='\u{1058A}'
-        | '\u{1058C}'..='\u{10592}'
-        | '\u{10594}'..='\u{10595}'
-        | '\u{10597}'..='\u{105A1}'
-        | '\u{105A3}'..='\u{105B1}'
-        | '\u{105B3}'..='\u{105B9}'
-        | '\u{105BB}'..='\u{105BC}'
-        | '\u{10600}'..='\u{10736}'
-        | '\u{10740}'..='\u{10755}'
-        | '\u{10760}'..='\u{10767}'
-        | '\u{10780}'..='\u{10785}'
-        | '\u{10787}'..='\u{107B0}'
-        | '\u{107B2}'..='\u{107BA}'
-        | '\u{10800}'..='\u{10805}'
-        | '\u{10808}'
-        | '\u{1080A}'..='\u{10835}'
-        | '\u{10837}'..='\u{10838}'
-        | '\u{1083C}'
-        | '\u{1083F}'..='\u{10855}'
-        | '\u{10857}'..='\u{1089E}'
-        | '\u{108A7}'..='\u{108AF}'
-        | '\u{108E0}'..='\u{108F2}'
-        | '\u{108F4}'..='\u{108F5}'
-        | '\u{108FB}'..='\u{1091B}'
-        | '\u{1091F}'..='\u{10939}'
-        | '\u{1093F}'
-        | '\u{10980}'..='\u{109B7}'
-        | '\u{109BC}'..='\u{109CF}'
-        | '\u{109D2}'..='\u{10A03}'
-        | '\u{10A05}'..='\u{10A06}'
-        | '\u{10A0C}'..='\u{10A13}'
-        | '\u{10A15}'..='\u{10A17}'
-        | '\u{10A19}'..='\u{10A35}'
-        | '\u{10A38}'..='\u{10A3A}'
-        | '\u{10A3F}'..='\u{10A48}'
-        | '\u{10A50}'..='\u{10A58}'
-        | '\u{10A60}'..='\u{10A9F}'
-        | '\u{10AC0}'..='\u{10AE6}'
-        | '\u{10AEB}'..='\u{10AF6}'
-        | '\u{10B00}'..='\u{10B35}'
-        | '\u{10B39}'..='\u{10B55}'
-        | '\u{10B58}'..='\u{10B72}'
-        | '\u{10B78}'..='\u{10B91}'
-        | '\u{10B99}'..='\u{10B9C}'
-        | '\u{10BA9}'..='\u{10BAF}'
-        | '\u{10C00}'..='\u{10C48}'
-        | '\u{10C80}'..='\u{10CB2}'
-        | '\u{10CC0}'..='\u{10CF2}'
-        | '\u{10CFA}'..='\u{10D27}'
-        | '\u{10D30}'..='\u{10D39}'
-        | '\u{10E60}'..='\u{10E7E}'
-        | '\u{10E80}'..='\u{10EA9}'
-        | '\u{10EAB}'..='\u{10EAD}'
-        | '\u{10EB0}'..='\u{10EB1}'
-        | '\u{10EFD}'..='\u{10F27}'
-        | '\u{10F30}'..='\u{10F59}'
-        | '\u{10F70}'..='\u{10F89}'
-        | '\u{10FB0}'..='\u{10FCB}'
-        | '\u{10FE0}'..='\u{10FF6}'
-        | '\u{11000}'..='\u{1104D}'
-        | '\u{11052}'..='\u{11075}'
-        | '\u{1107F}'..='\u{110C2}'
-        | '\u{110CD}'
-        | '\u{110D0}'..='\u{110E8}'
-        | '\u{110F0}'..='\u{110F9}'
-        | '\u{11100}'..='\u{11134}'
-        | '\u{11136}'..='\u{11147}'
-        | '\u{11150}'..='\u{11176}'
-        | '\u{11180}'..='\u{111DF}'
-        | '\u{111E1}'..='\u{111F4}'
-        | '\u{11200}'..='\u{11211}'
-        | '\u{11213}'..='\u{11241}'
-        | '\u{11280}'..='\u{11286}'
-        | '\u{11288}'
-        | '\u{1128A}'..='\u{1128D}'
-        | '\u{1128F}'..='\u{1129D}'
-        | '\u{1129F}'..='\u{112A9}'
-        | '\u{112B0}'..='\u{112EA}'
-        | '\u{112F0}'..='\u{112F9}'
-        | '\u{11300}'..='\u{11303}'
-        | '\u{11305}'..='\u{1130C}'
-        | '\u{1130F}'..='\u{11310}'
-        | '\u{11313}'..='\u{11328}'
-        | '\u{1132A}'..='\u{11330}'
-        | '\u{11332}'..='\u{11333}'
-        | '\u{11335}'..='\u{11339}'
-        | '\u{1133B}'..='\u{11344}'
-        | '\u{11347}'..='\u{11348}'
-        | '\u{1134B}'..='\u{1134D}'
-        | '\u{11350}'
-        | '\u{11357}'
-        | '\u{1135D}'..='\u{11363}'
-        | '\u{11366}'..='\u{1136C}'
-        | '\u{11370}'..='\u{11374}'
-        | '\u{11400}'..='\u{1145B}'
-        | '\u{1145D}'..='\u{11461}'
-        | '\u{11480}'..='\u{114C7}'
-        | '\u{114D0}'..='\u{114D9}'
-        | '\u{11580}'..='\u{115B5}'
-        | '\u{115B8}'..='\u{115DD}'
-        | '\u{11600}'..='\u{11644}'
-        | '\u{11650}'..='\u{11659}'
-        | '\u{11660}'..='\u{1166C}'
-        | '\u{11680}'..='\u{116B9}'
-        | '\u{116C0}'..='\u{116C9}'
-        | '\u{11700}'..='\u{1171A}'
-        | '\u{1171D}'..='\u{1172B}'
-        | '\u{11730}'..='\u{11746}'
-        | '\u{11800}'..='\u{1183B}'
-        | '\u{118A0}'..='\u{118F2}'
-        | '\u{118FF}'..='\u{11906}'
-        | '\u{11909}'
-        | '\u{1190C}'..='\u{11913}'
-        | '\u{11915}'..='\u{11916}'
-        | '\u{11918}'..='\u{11935}'
-        | '\u{11937}'..='\u{11938}'
-        | '\u{1193B}'..='\u{11946}'
-        | '\u{11950}'..='\u{11959}'
-        | '\u{119A0}'..='\u{119A7}'
-        | '\u{119AA}'..='\u{119D7}'
-        | '\u{119DA}'..='\u{119E4}'
-        | '\u{11A00}'..='\u{11A47}'
-        | '\u{11A50}'..='\u{11AA2}'
-        | '\u{11AB0}'..='\u{11AF8}'
-        | '\u{11B00}'..='\u{11B09}'
-        | '\u{11C00}'..='\u{11C08}'
-        | '\u{11C0A}'..='\u{11C36}'
-        | '\u{11C38}'..='\u{11C45}'
-        | '\u{11C50}'..='\u{11C6C}'
-        | '\u{11C70}'..='\u{11C8F}'
-        | '\u{11C92}'..='\u{11CA7}'
-        | '\u{11CA9}'..='\u{11CB6}'
-        | '\u{11D00}'..='\u{11D06}'
-        | '\u{11D08}'..='\u{11D09}'
-        | '\u{11D0B}'..='\u{11D36}'
-        | '\u{11D3A}'
-        | '\u{11D3C}'..='\u{11D3D}'
-        | '\u{11D3F}'..='\u{11D47}'
-        | '\u{11D50}'..='\u{11D59}'
-        | '\u{11D60}'..='\u{11D65}'
-        | '\u{11D67}'..='\u{11D68}'
-        | '\u{11D6A}'..='\u{11D8E}'
-        | '\u{11D90}'..='\u{11D91}'
-        | '\u{11D93}'..='\u{11D98}'
-        | '\u{11DA0}'..='\u{11DA9}'
-        | '\u{11EE0}'..='\u{11EF8}'
-        | '\u{11F00}'..='\u{11F10}'
-        | '\u{11F12}'..='\u{11F3A}'
-        | '\u{11F3E}'..='\u{11F59}'
-        | '\u{11FB0}'
-        | '\u{11FC0}'..='\u{11FF1}'
-        | '\u{11FFF}'..='\u{12399}'
-        | '\u{12400}'..='\u{1246E}'
-        | '\u{12470}'..='\u{12474}'
-        | '\u{12480}'..='\u{12543}'
-        | '\u{12F90}'..='\u{12FF2}'
-        | '\u{13000}'..='\u{13455}'
-        | '\u{14400}'..='\u{14646}'
-        | '\u{16800}'..='\u{16A38}'
-        | '\u{16A40}'..='\u{16A5E}'
-        | '\u{16A60}'..='\u{16A69}'
-        | '\u{16A6E}'..='\u{16ABE}'
-        | '\u{16AC0}'..='\u{16AC9}'
-        | '\u{16AD0}'..='\u{16AED}'
-        | '\u{16AF0}'..='\u{16AF5}'
-        | '\u{16B00}'..='\u{16B45}'
-        | '\u{16B50}'..='\u{16B59}'
-        | '\u{16B5B}'..='\u{16B61}'
-        | '\u{16B63}'..='\u{16B77}'
-        | '\u{16B7D}'..='\u{16B8F}'
-        | '\u{16E40}'..='\u{16E9A}'
-        | '\u{16F00}'..='\u{16F4A}'
-        | '\u{16F4F}'..='\u{16F87}'
-        | '\u{16F8F}'..='\u{16F9F}'
-        | '\u{16FE0}'..='\u{16FE4}'
-        | '\u{16FF0}'..='\u{16FF1}'
-        | '\u{17000}'..='\u{187F7}'
-        | '\u{18800}'..='\u{18CD5}'
-        | '\u{18D00}'..='\u{18D08}'
-        | '\u{1AFF0}'..='\u{1AFF3}'
-        | '\u{1AFF5}'..='\u{1AFFB}'
-        | '\u{1AFFD}'..='\u{1AFFE}'
-        | '\u{1B000}'..='\u{1B122}'
-        | '\u{1B132}'
-        | '\u{1B150}'..='\u{1B152}'
-        | '\u{1B155}'
-        | '\u{1B164}'..='\u{1B167}'
-        | '\u{1B170}'..='\u{1B2FB}'
-        | '\u{1BC00}'..='\u{1BC6A}'
-        | '\u{1BC70}'..='\u{1BC7C}'
-        | '\u{1BC80}'..='\u{1BC88}'
-        | '\u{1BC90}'..='\u{1BC99}'
-        | '\u{1BC9C}'..='\u{1BCA3}'
-        | '\u{1CF00}'..='\u{1CF2D}'
-        | '\u{1CF30}'..='\u{1CF46}'
-        | '\u{1CF50}'..='\u{1CFC3}'
-        | '\u{1D000}'..='\u{1D0F5}'
-        | '\u{1D100}'..='\u{1D126}'
-        | '\u{1D129}'..='\u{1D1EA}'
-        | '\u{1D200}'..='\u{1D245}'
-        | '\u{1D2C0}'..='\u{1D2D3}'
-        | '\u{1D2E0}'..='\u{1D2F3}'
-        | '\u{1D300}'..='\u{1D356}'
-        | '\u{1D360}'..='\u{1D378}'
-        | '\u{1D400}'..='\u{1D454}'
-        | '\u{1D456}'..='\u{1D49C}'
-        | '\u{1D49E}'..='\u{1D49F}'
-        | '\u{1D4A2}'
-        | '\u{1D4A5}'..='\u{1D4A6}'
-        | '\u{1D4A9}'..='\u{1D4AC}'
-        | '\u{1D4AE}'..='\u{1D4B9}'
-        | '\u{1D4BB}'
-        | '\u{1D4BD}'..='\u{1D4C3}'
-        | '\u{1D4C5}'..='\u{1D505}'
-        | '\u{1D507}'..='\u{1D50A}'
-        | '\u{1D50D}'..='\u{1D514}'
-        | '\u{1D516}'..='\u{1D51C}'
-        | '\u{1D51E}'..='\u{1D539}'
-        | '\u{1D53B}'..='\u{1D53E}'
-        | '\u{1D540}'..='\u{1D544}'
-        | '\u{1D546}'
-        | '\u{1D54A}'..='\u{1D550}'
-        | '\u{1D552}'..='\u{1D6A5}'
-        | '\u{1D6A8}'..='\u{1D7CB}'
-        | '\u{1D7CE}'..='\u{1DA8B}'
-        | '\u{1DA9B}'..='\u{1DA9F}'
-        | '\u{1DAA1}'..='\u{1DAAF}'
-        | '\u{1DF00}'..='\u{1DF1E}'
-        | '\u{1DF25}'..='\u{1DF2A}'
-        | '\u{1E000}'..='\u{1E006}'
-        | '\u{1E008}'..='\u{1E018}'
-        | '\u{1E01B}'..='\u{1E021}'
-        | '\u{1E023}'..='\u{1E024}'
-        | '\u{1E026}'..='\u{1E02A}'
-        | '\u{1E030}'..='\u{1E06D}'
-        | '\u{1E08F}'
-        | '\u{1E100}'..='\u{1E12C}'
-        | '\u{1E130}'..='\u{1E13D}'
-        | '\u{1E140}'..='\u{1E149}'
-        | '\u{1E14E}'..='\u{1E14F}'
-        | '\u{1E290}'..='\u{1E2AE}'
-        | '\u{1E2C0}'..='\u{1E2F9}'
-        | '\u{1E2FF}'
-        | '\u{1E4D0}'..='\u{1E4F9}'
-        | '\u{1E7E0}'..='\u{1E7E6}'
-        | '\u{1E7E8}'..='\u{1E7EB}'
-        | '\u{1E7ED}'..='\u{1E7EE}'
-        | '\u{1E7F0}'..='\u{1E7FE}'
-        | '\u{1E800}'..='\u{1E8C4}'
-        | '\u{1E8C7}'..='\u{1E8D6}'
-        | '\u{1E900}'..='\u{1E94B}'
-        | '\u{1E950}'..='\u{1E959}'
-        | '\u{1E95E}'..='\u{1E95F}'
-        | '\u{1EC71}'..='\u{1ECB4}'
-        | '\u{1ED01}'..='\u{1ED3D}'
-        | '\u{1EE00}'..='\u{1EE03}'
-        | '\u{1EE05}'..='\u{1EE1F}'
-        | '\u{1EE21}'..='\u{1EE22}'
-        | '\u{1EE24}'
-        | '\u{1EE27}'
-        | '\u{1EE29}'..='\u{1EE32}'
-        | '\u{1EE34}'..='\u{1EE37}'
-        | '\u{1EE39}'
-        | '\u{1EE3B}'
-        | '\u{1EE42}'
-        | '\u{1EE47}'
-        | '\u{1EE49}'
-        | '\u{1EE4B}'
-        | '\u{1EE4D}'..='\u{1EE4F}'
-        | '\u{1EE51}'..='\u{1EE52}'
-        | '\u{1EE54}'
-        | '\u{1EE57}'
-        | '\u{1EE59}'
-        | '\u{1EE5B}'
-        | '\u{1EE5D}'
-        | '\u{1EE5F}'
-        | '\u{1EE61}'..='\u{1EE62}'
-        | '\u{1EE64}'
-        | '\u{1EE67}'..='\u{1EE6A}'
-        | '\u{1EE6C}'..='\u{1EE72}'
-        | '\u{1EE74}'..='\u{1EE77}'
-        | '\u{1EE79}'..='\u{1EE7C}'
-        | '\u{1EE7E}'
-        | '\u{1EE80}'..='\u{1EE89}'
-        | '\u{1EE8B}'..='\u{1EE9B}'
-        | '\u{1EEA1}'..='\u{1EEA3}'
-        | '\u{1EEA5}'..='\u{1EEA9}'
-        | '\u{1EEAB}'..='\u{1EEBB}'
-        | '\u{1EEF0}'..='\u{1EEF1}'
-        | '\u{1F000}'..='\u{1F02B}'
-        | '\u{1F030}'..='\u{1F093}'
-        | '\u{1F0A0}'..='\u{1F0AE}'
-        | '\u{1F0B1}'..='\u{1F0BF}'
-        | '\u{1F0C1}'..='\u{1F0CF}'
-        | '\u{1F0D1}'..='\u{1F0F5}'
-        | '\u{1F100}'..='\u{1F1AD}'
-        | '\u{1F1E6}'..='\u{1F202}'
-        | '\u{1F210}'..='\u{1F23B}'
-        | '\u{1F240}'..='\u{1F248}'
-        | '\u{1F250}'..='\u{1F251}'
-        | '\u{1F260}'..='\u{1F265}'
-        | '\u{1F300}'..='\u{1F6D7}'
-        | '\u{1F6DC}'..='\u{1F6EC}'
-        | '\u{1F6F0}'..='\u{1F6FC}'
-        | '\u{1F700}'..='\u{1F776}'
-        | '\u{1F77B}'..='\u{1F7D9}'
-        | '\u{1F7E0}'..='\u{1F7EB}'
-        | '\u{1F7F0}'
-        | '\u{1F800}'..='\u{1F80B}'
-        | '\u{1F810}'..='\u{1F847}'
-        | '\u{1F850}'..='\u{1F859}'
-        | '\u{1F860}'..='\u{1F887}'
-        | '\u{1F890}'..='\u{1F8AD}'
-        | '\u{1F8B0}'..='\u{1F8B1}'
-        | '\u{1F900}'..='\u{1FA53}'
-        | '\u{1FA60}'..='\u{1FA6D}'
-        | '\u{1FA70}'..='\u{1FA7C}'
-        | '\u{1FA80}'..='\u{1FA88}'
-        | '\u{1FA90}'..='\u{1FABD}'
-        | '\u{1FABF}'..='\u{1FAC5}'
-        | '\u{1FACE}'..='\u{1FADB}'
-        | '\u{1FAE0}'..='\u{1FAE8}'
-        | '\u{1FAF0}'..='\u{1FAF8}'
-        | '\u{1FB00}'..='\u{1FB92}'
-        | '\u{1FB94}'..='\u{1FBCA}'
-        | '\u{1FBF0}'..='\u{1FBF9}'
-        | '\u{20000}'..='\u{2A6DF}'
-        | '\u{2A700}'..='\u{2B739}'
-        | '\u{2B740}'..='\u{2B81D}'
-        | '\u{2B820}'..='\u{2CEA1}'
-        | '\u{2CEB0}'..='\u{2EBE0}'
-        | '\u{2EBF0}'..='\u{2EE5D}'
-        | '\u{2F800}'..='\u{2FA1D}'
-        | '\u{30000}'..='\u{3134A}'
-        | '\u{31350}'..='\u{323AF}'
-        | '\u{E0001}'
-        | '\u{E0020}'..='\u{E007F}'
-        | '\u{E0100}'..='\u{E01EF}'
-        => true,
-        _ => false,
-    }
-}
-
-
-#[inline]
-#[allow(ellipsis_inclusive_range_patterns)]
-pub fn qc_nfc(c: char) -> IsNormalized {
-    match c {
-        '\u{0340}'...'\u{0341}' => No,
-        '\u{0343}'...'\u{0344}' => No,
-        '\u{0374}' => No,
-        '\u{037E}' => No,
-        '\u{0387}' => No,
-        '\u{0958}'...'\u{095F}' => No,
-        '\u{09DC}'...'\u{09DD}' => No,
-        '\u{09DF}' => No,
-        '\u{0A33}' => No,
-        '\u{0A36}' => No,
-        '\u{0A59}'...'\u{0A5B}' => No,
-        '\u{0A5E}' => No,
-        '\u{0B5C}'...'\u{0B5D}' => No,
-        '\u{0F43}' => No,
-        '\u{0F4D}' => No,
-        '\u{0F52}' => No,
-        '\u{0F57}' => No,
-        '\u{0F5C}' => No,
-        '\u{0F69}' => No,
-        '\u{0F73}' => No,
-        '\u{0F75}'...'\u{0F76}' => No,
-        '\u{0F78}' => No,
-        '\u{0F81}' => No,
-        '\u{0F93}' => No,
-        '\u{0F9D}' => No,
-        '\u{0FA2}' => No,
-        '\u{0FA7}' => No,
-        '\u{0FAC}' => No,
-        '\u{0FB9}' => No,
-        '\u{1F71}' => No,
-        '\u{1F73}' => No,
-        '\u{1F75}' => No,
-        '\u{1F77}' => No,
-        '\u{1F79}' => No,
-        '\u{1F7B}' => No,
-        '\u{1F7D}' => No,
-        '\u{1FBB}' => No,
-        '\u{1FBE}' => No,
-        '\u{1FC9}' => No,
-        '\u{1FCB}' => No,
-        '\u{1FD3}' => No,
-        '\u{1FDB}' => No,
-        '\u{1FE3}' => No,
-        '\u{1FEB}' => No,
-        '\u{1FEE}'...'\u{1FEF}' => No,
-        '\u{1FF9}' => No,
-        '\u{1FFB}' => No,
-        '\u{1FFD}' => No,
-        '\u{2000}'...'\u{2001}' => No,
-        '\u{2126}' => No,
-        '\u{212A}'...'\u{212B}' => No,
-        '\u{2329}' => No,
-        '\u{232A}' => No,
-        '\u{2ADC}' => No,
-        '\u{F900}'...'\u{FA0D}' => No,
-        '\u{FA10}' => No,
-        '\u{FA12}' => No,
-        '\u{FA15}'...'\u{FA1E}' => No,
-        '\u{FA20}' => No,
-        '\u{FA22}' => No,
-        '\u{FA25}'...'\u{FA26}' => No,
-        '\u{FA2A}'...'\u{FA6D}' => No,
-        '\u{FA70}'...'\u{FAD9}' => No,
-        '\u{FB1D}' => No,
-        '\u{FB1F}' => No,
-        '\u{FB2A}'...'\u{FB36}' => No,
-        '\u{FB38}'...'\u{FB3C}' => No,
-        '\u{FB3E}' => No,
-        '\u{FB40}'...'\u{FB41}' => No,
-        '\u{FB43}'...'\u{FB44}' => No,
-        '\u{FB46}'...'\u{FB4E}' => No,
-        '\u{1D15E}'...'\u{1D164}' => No,
-        '\u{1D1BB}'...'\u{1D1C0}' => No,
-        '\u{2F800}'...'\u{2FA1D}' => No,
-        '\u{0300}'...'\u{0304}' => Maybe,
-        '\u{0306}'...'\u{030C}' => Maybe,
-        '\u{030F}' => Maybe,
-        '\u{0311}' => Maybe,
-        '\u{0313}'...'\u{0314}' => Maybe,
-        '\u{031B}' => Maybe,
-        '\u{0323}'...'\u{0328}' => Maybe,
-        '\u{032D}'...'\u{032E}' => Maybe,
-        '\u{0330}'...'\u{0331}' => Maybe,
-        '\u{0338}' => Maybe,
-        '\u{0342}' => Maybe,
-        '\u{0345}' => Maybe,
-        '\u{0653}'...'\u{0655}' => Maybe,
-        '\u{093C}' => Maybe,
-        '\u{09BE}' => Maybe,
-        '\u{09D7}' => Maybe,
-        '\u{0B3E}' => Maybe,
-        '\u{0B56}' => Maybe,
-        '\u{0B57}' => Maybe,
-        '\u{0BBE}' => Maybe,
-        '\u{0BD7}' => Maybe,
-        '\u{0C56}' => Maybe,
-        '\u{0CC2}' => Maybe,
-        '\u{0CD5}'...'\u{0CD6}' => Maybe,
-        '\u{0D3E}' => Maybe,
-        '\u{0D57}' => Maybe,
-        '\u{0DCA}' => Maybe,
-        '\u{0DCF}' => Maybe,
-        '\u{0DDF}' => Maybe,
-        '\u{102E}' => Maybe,
-        '\u{1161}'...'\u{1175}' => Maybe,
-        '\u{11A8}'...'\u{11C2}' => Maybe,
-        '\u{1B35}' => Maybe,
-        '\u{3099}'...'\u{309A}' => Maybe,
-        '\u{110BA}' => Maybe,
-        '\u{11127}' => Maybe,
-        '\u{1133E}' => Maybe,
-        '\u{11357}' => Maybe,
-        '\u{114B0}' => Maybe,
-        '\u{114BA}' => Maybe,
-        '\u{114BD}' => Maybe,
-        '\u{115AF}' => Maybe,
-        '\u{11930}' => Maybe,
-        _ => Yes,
-    }
-}
-
-#[inline]
-#[allow(ellipsis_inclusive_range_patterns)]
-pub fn qc_nfkc(c: char) -> IsNormalized {
-    match c {
-        '\u{00A0}' => No,
-        '\u{00A8}' => No,
-        '\u{00AA}' => No,
-        '\u{00AF}' => No,
-        '\u{00B2}'...'\u{00B3}' => No,
-        '\u{00B4}' => No,
-        '\u{00B5}' => No,
-        '\u{00B8}' => No,
-        '\u{00B9}' => No,
-        '\u{00BA}' => No,
-        '\u{00BC}'...'\u{00BE}' => No,
-        '\u{0132}'...'\u{0133}' => No,
-        '\u{013F}'...'\u{0140}' => No,
-        '\u{0149}' => No,
-        '\u{017F}' => No,
-        '\u{01C4}'...'\u{01CC}' => No,
-        '\u{01F1}'...'\u{01F3}' => No,
-        '\u{02B0}'...'\u{02B8}' => No,
-        '\u{02D8}'...'\u{02DD}' => No,
-        '\u{02E0}'...'\u{02E4}' => No,
-        '\u{0340}'...'\u{0341}' => No,
-        '\u{0343}'...'\u{0344}' => No,
-        '\u{0374}' => No,
-        '\u{037A}' => No,
-        '\u{037E}' => No,
-        '\u{0384}'...'\u{0385}' => No,
-        '\u{0387}' => No,
-        '\u{03D0}'...'\u{03D6}' => No,
-        '\u{03F0}'...'\u{03F2}' => No,
-        '\u{03F4}'...'\u{03F5}' => No,
-        '\u{03F9}' => No,
-        '\u{0587}' => No,
-        '\u{0675}'...'\u{0678}' => No,
-        '\u{0958}'...'\u{095F}' => No,
-        '\u{09DC}'...'\u{09DD}' => No,
-        '\u{09DF}' => No,
-        '\u{0A33}' => No,
-        '\u{0A36}' => No,
-        '\u{0A59}'...'\u{0A5B}' => No,
-        '\u{0A5E}' => No,
-        '\u{0B5C}'...'\u{0B5D}' => No,
-        '\u{0E33}' => No,
-        '\u{0EB3}' => No,
-        '\u{0EDC}'...'\u{0EDD}' => No,
-        '\u{0F0C}' => No,
-        '\u{0F43}' => No,
-        '\u{0F4D}' => No,
-        '\u{0F52}' => No,
-        '\u{0F57}' => No,
-        '\u{0F5C}' => No,
-        '\u{0F69}' => No,
-        '\u{0F73}' => No,
-        '\u{0F75}'...'\u{0F79}' => No,
-        '\u{0F81}' => No,
-        '\u{0F93}' => No,
-        '\u{0F9D}' => No,
-        '\u{0FA2}' => No,
-        '\u{0FA7}' => No,
-        '\u{0FAC}' => No,
-        '\u{0FB9}' => No,
-        '\u{10FC}' => No,
-        '\u{1D2C}'...'\u{1D2E}' => No,
-        '\u{1D30}'...'\u{1D3A}' => No,
-        '\u{1D3C}'...'\u{1D4D}' => No,
-        '\u{1D4F}'...'\u{1D6A}' => No,
-        '\u{1D78}' => No,
-        '\u{1D9B}'...'\u{1DBF}' => No,
-        '\u{1E9A}'...'\u{1E9B}' => No,
-        '\u{1F71}' => No,
-        '\u{1F73}' => No,
-        '\u{1F75}' => No,
-        '\u{1F77}' => No,
-        '\u{1F79}' => No,
-        '\u{1F7B}' => No,
-        '\u{1F7D}' => No,
-        '\u{1FBB}' => No,
-        '\u{1FBD}' => No,
-        '\u{1FBE}' => No,
-        '\u{1FBF}'...'\u{1FC1}' => No,
-        '\u{1FC9}' => No,
-        '\u{1FCB}' => No,
-        '\u{1FCD}'...'\u{1FCF}' => No,
-        '\u{1FD3}' => No,
-        '\u{1FDB}' => No,
-        '\u{1FDD}'...'\u{1FDF}' => No,
-        '\u{1FE3}' => No,
-        '\u{1FEB}' => No,
-        '\u{1FED}'...'\u{1FEF}' => No,
-        '\u{1FF9}' => No,
-        '\u{1FFB}' => No,
-        '\u{1FFD}'...'\u{1FFE}' => No,
-        '\u{2000}'...'\u{200A}' => No,
-        '\u{2011}' => No,
-        '\u{2017}' => No,
-        '\u{2024}'...'\u{2026}' => No,
-        '\u{202F}' => No,
-        '\u{2033}'...'\u{2034}' => No,
-        '\u{2036}'...'\u{2037}' => No,
-        '\u{203C}' => No,
-        '\u{203E}' => No,
-        '\u{2047}'...'\u{2049}' => No,
-        '\u{2057}' => No,
-        '\u{205F}' => No,
-        '\u{2070}' => No,
-        '\u{2071}' => No,
-        '\u{2074}'...'\u{2079}' => No,
-        '\u{207A}'...'\u{207C}' => No,
-        '\u{207D}' => No,
-        '\u{207E}' => No,
-        '\u{207F}' => No,
-        '\u{2080}'...'\u{2089}' => No,
-        '\u{208A}'...'\u{208C}' => No,
-        '\u{208D}' => No,
-        '\u{208E}' => No,
-        '\u{2090}'...'\u{209C}' => No,
-        '\u{20A8}' => No,
-        '\u{2100}'...'\u{2101}' => No,
-        '\u{2102}' => No,
-        '\u{2103}' => No,
-        '\u{2105}'...'\u{2106}' => No,
-        '\u{2107}' => No,
-        '\u{2109}' => No,
-        '\u{210A}'...'\u{2113}' => No,
-        '\u{2115}' => No,
-        '\u{2116}' => No,
-        '\u{2119}'...'\u{211D}' => No,
-        '\u{2120}'...'\u{2122}' => No,
-        '\u{2124}' => No,
-        '\u{2126}' => No,
-        '\u{2128}' => No,
-        '\u{212A}'...'\u{212D}' => No,
-        '\u{212F}'...'\u{2131}' => No,
-        '\u{2133}'...'\u{2134}' => No,
-        '\u{2135}'...'\u{2138}' => No,
-        '\u{2139}' => No,
-        '\u{213B}' => No,
-        '\u{213C}'...'\u{213F}' => No,
-        '\u{2140}' => No,
-        '\u{2145}'...'\u{2149}' => No,
-        '\u{2150}'...'\u{215F}' => No,
-        '\u{2160}'...'\u{217F}' => No,
-        '\u{2189}' => No,
-        '\u{222C}'...'\u{222D}' => No,
-        '\u{222F}'...'\u{2230}' => No,
-        '\u{2329}' => No,
-        '\u{232A}' => No,
-        '\u{2460}'...'\u{249B}' => No,
-        '\u{249C}'...'\u{24E9}' => No,
-        '\u{24EA}' => No,
-        '\u{2A0C}' => No,
-        '\u{2A74}'...'\u{2A76}' => No,
-        '\u{2ADC}' => No,
-        '\u{2C7C}'...'\u{2C7D}' => No,
-        '\u{2D6F}' => No,
-        '\u{2E9F}' => No,
-        '\u{2EF3}' => No,
-        '\u{2F00}'...'\u{2FD5}' => No,
-        '\u{3000}' => No,
-        '\u{3036}' => No,
-        '\u{3038}'...'\u{303A}' => No,
-        '\u{309B}'...'\u{309C}' => No,
-        '\u{309F}' => No,
-        '\u{30FF}' => No,
-        '\u{3131}'...'\u{318E}' => No,
-        '\u{3192}'...'\u{3195}' => No,
-        '\u{3196}'...'\u{319F}' => No,
-        '\u{3200}'...'\u{321E}' => No,
-        '\u{3220}'...'\u{3229}' => No,
-        '\u{322A}'...'\u{3247}' => No,
-        '\u{3250}' => No,
-        '\u{3251}'...'\u{325F}' => No,
-        '\u{3260}'...'\u{327E}' => No,
-        '\u{3280}'...'\u{3289}' => No,
-        '\u{328A}'...'\u{32B0}' => No,
-        '\u{32B1}'...'\u{32BF}' => No,
-        '\u{32C0}'...'\u{33FF}' => No,
-        '\u{A69C}'...'\u{A69D}' => No,
-        '\u{A770}' => No,
-        '\u{A7F2}'...'\u{A7F4}' => No,
-        '\u{A7F8}'...'\u{A7F9}' => No,
-        '\u{AB5C}'...'\u{AB5F}' => No,
-        '\u{AB69}' => No,
-        '\u{F900}'...'\u{FA0D}' => No,
-        '\u{FA10}' => No,
-        '\u{FA12}' => No,
-        '\u{FA15}'...'\u{FA1E}' => No,
-        '\u{FA20}' => No,
-        '\u{FA22}' => No,
-        '\u{FA25}'...'\u{FA26}' => No,
-        '\u{FA2A}'...'\u{FA6D}' => No,
-        '\u{FA70}'...'\u{FAD9}' => No,
-        '\u{FB00}'...'\u{FB06}' => No,
-        '\u{FB13}'...'\u{FB17}' => No,
-        '\u{FB1D}' => No,
-        '\u{FB1F}'...'\u{FB28}' => No,
-        '\u{FB29}' => No,
-        '\u{FB2A}'...'\u{FB36}' => No,
-        '\u{FB38}'...'\u{FB3C}' => No,
-        '\u{FB3E}' => No,
-        '\u{FB40}'...'\u{FB41}' => No,
-        '\u{FB43}'...'\u{FB44}' => No,
-        '\u{FB46}'...'\u{FBB1}' => No,
-        '\u{FBD3}'...'\u{FD3D}' => No,
-        '\u{FD50}'...'\u{FD8F}' => No,
-        '\u{FD92}'...'\u{FDC7}' => No,
-        '\u{FDF0}'...'\u{FDFB}' => No,
-        '\u{FDFC}' => No,
-        '\u{FE10}'...'\u{FE16}' => No,
-        '\u{FE17}' => No,
-        '\u{FE18}' => No,
-        '\u{FE19}' => No,
-        '\u{FE30}' => No,
-        '\u{FE31}'...'\u{FE32}' => No,
-        '\u{FE33}'...'\u{FE34}' => No,
-        '\u{FE35}' => No,
-        '\u{FE36}' => No,
-        '\u{FE37}' => No,
-        '\u{FE38}' => No,
-        '\u{FE39}' => No,
-        '\u{FE3A}' => No,
-        '\u{FE3B}' => No,
-        '\u{FE3C}' => No,
-        '\u{FE3D}' => No,
-        '\u{FE3E}' => No,
-        '\u{FE3F}' => No,
-        '\u{FE40}' => No,
-        '\u{FE41}' => No,
-        '\u{FE42}' => No,
-        '\u{FE43}' => No,
-        '\u{FE44}' => No,
-        '\u{FE47}' => No,
-        '\u{FE48}' => No,
-        '\u{FE49}'...'\u{FE4C}' => No,
-        '\u{FE4D}'...'\u{FE4F}' => No,
-        '\u{FE50}'...'\u{FE52}' => No,
-        '\u{FE54}'...'\u{FE57}' => No,
-        '\u{FE58}' => No,
-        '\u{FE59}' => No,
-        '\u{FE5A}' => No,
-        '\u{FE5B}' => No,
-        '\u{FE5C}' => No,
-        '\u{FE5D}' => No,
-        '\u{FE5E}' => No,
-        '\u{FE5F}'...'\u{FE61}' => No,
-        '\u{FE62}' => No,
-        '\u{FE63}' => No,
-        '\u{FE64}'...'\u{FE66}' => No,
-        '\u{FE68}' => No,
-        '\u{FE69}' => No,
-        '\u{FE6A}'...'\u{FE6B}' => No,
-        '\u{FE70}'...'\u{FE72}' => No,
-        '\u{FE74}' => No,
-        '\u{FE76}'...'\u{FEFC}' => No,
-        '\u{FF01}'...'\u{FF03}' => No,
-        '\u{FF04}' => No,
-        '\u{FF05}'...'\u{FF07}' => No,
-        '\u{FF08}' => No,
-        '\u{FF09}' => No,
-        '\u{FF0A}' => No,
-        '\u{FF0B}' => No,
-        '\u{FF0C}' => No,
-        '\u{FF0D}' => No,
-        '\u{FF0E}'...'\u{FF0F}' => No,
-        '\u{FF10}'...'\u{FF19}' => No,
-        '\u{FF1A}'...'\u{FF1B}' => No,
-        '\u{FF1C}'...'\u{FF1E}' => No,
-        '\u{FF1F}'...'\u{FF20}' => No,
-        '\u{FF21}'...'\u{FF3A}' => No,
-        '\u{FF3B}' => No,
-        '\u{FF3C}' => No,
-        '\u{FF3D}' => No,
-        '\u{FF3E}' => No,
-        '\u{FF3F}' => No,
-        '\u{FF40}' => No,
-        '\u{FF41}'...'\u{FF5A}' => No,
-        '\u{FF5B}' => No,
-        '\u{FF5C}' => No,
-        '\u{FF5D}' => No,
-        '\u{FF5E}' => No,
-        '\u{FF5F}' => No,
-        '\u{FF60}' => No,
-        '\u{FF61}' => No,
-        '\u{FF62}' => No,
-        '\u{FF63}' => No,
-        '\u{FF64}'...'\u{FF65}' => No,
-        '\u{FF66}'...'\u{FF6F}' => No,
-        '\u{FF70}' => No,
-        '\u{FF71}'...'\u{FF9D}' => No,
-        '\u{FF9E}'...'\u{FF9F}' => No,
-        '\u{FFA0}'...'\u{FFBE}' => No,
-        '\u{FFC2}'...'\u{FFC7}' => No,
-        '\u{FFCA}'...'\u{FFCF}' => No,
-        '\u{FFD2}'...'\u{FFD7}' => No,
-        '\u{FFDA}'...'\u{FFDC}' => No,
-        '\u{FFE0}'...'\u{FFE1}' => No,
-        '\u{FFE2}' => No,
-        '\u{FFE3}' => No,
-        '\u{FFE4}' => No,
-        '\u{FFE5}'...'\u{FFE6}' => No,
-        '\u{FFE8}' => No,
-        '\u{FFE9}'...'\u{FFEC}' => No,
-        '\u{FFED}'...'\u{FFEE}' => No,
-        '\u{10781}'...'\u{10785}' => No,
-        '\u{10787}'...'\u{107B0}' => No,
-        '\u{107B2}'...'\u{107BA}' => No,
-        '\u{1D15E}'...'\u{1D164}' => No,
-        '\u{1D1BB}'...'\u{1D1C0}' => No,
-        '\u{1D400}'...'\u{1D454}' => No,
-        '\u{1D456}'...'\u{1D49C}' => No,
-        '\u{1D49E}'...'\u{1D49F}' => No,
-        '\u{1D4A2}' => No,
-        '\u{1D4A5}'...'\u{1D4A6}' => No,
-        '\u{1D4A9}'...'\u{1D4AC}' => No,
-        '\u{1D4AE}'...'\u{1D4B9}' => No,
-        '\u{1D4BB}' => No,
-        '\u{1D4BD}'...'\u{1D4C3}' => No,
-        '\u{1D4C5}'...'\u{1D505}' => No,
-        '\u{1D507}'...'\u{1D50A}' => No,
-        '\u{1D50D}'...'\u{1D514}' => No,
-        '\u{1D516}'...'\u{1D51C}' => No,
-        '\u{1D51E}'...'\u{1D539}' => No,
-        '\u{1D53B}'...'\u{1D53E}' => No,
-        '\u{1D540}'...'\u{1D544}' => No,
-        '\u{1D546}' => No,
-        '\u{1D54A}'...'\u{1D550}' => No,
-        '\u{1D552}'...'\u{1D6A5}' => No,
-        '\u{1D6A8}'...'\u{1D6C0}' => No,
-        '\u{1D6C1}' => No,
-        '\u{1D6C2}'...'\u{1D6DA}' => No,
-        '\u{1D6DB}' => No,
-        '\u{1D6DC}'...'\u{1D6FA}' => No,
-        '\u{1D6FB}' => No,
-        '\u{1D6FC}'...'\u{1D714}' => No,
-        '\u{1D715}' => No,
-        '\u{1D716}'...'\u{1D734}' => No,
-        '\u{1D735}' => No,
-        '\u{1D736}'...'\u{1D74E}' => No,
-        '\u{1D74F}' => No,
-        '\u{1D750}'...'\u{1D76E}' => No,
-        '\u{1D76F}' => No,
-        '\u{1D770}'...'\u{1D788}' => No,
-        '\u{1D789}' => No,
-        '\u{1D78A}'...'\u{1D7A8}' => No,
-        '\u{1D7A9}' => No,
-        '\u{1D7AA}'...'\u{1D7C2}' => No,
-        '\u{1D7C3}' => No,
-        '\u{1D7C4}'...'\u{1D7CB}' => No,
-        '\u{1D7CE}'...'\u{1D7FF}' => No,
-        '\u{1E030}'...'\u{1E06D}' => No,
-        '\u{1EE00}'...'\u{1EE03}' => No,
-        '\u{1EE05}'...'\u{1EE1F}' => No,
-        '\u{1EE21}'...'\u{1EE22}' => No,
-        '\u{1EE24}' => No,
-        '\u{1EE27}' => No,
-        '\u{1EE29}'...'\u{1EE32}' => No,
-        '\u{1EE34}'...'\u{1EE37}' => No,
-        '\u{1EE39}' => No,
-        '\u{1EE3B}' => No,
-        '\u{1EE42}' => No,
-        '\u{1EE47}' => No,
-        '\u{1EE49}' => No,
-        '\u{1EE4B}' => No,
-        '\u{1EE4D}'...'\u{1EE4F}' => No,
-        '\u{1EE51}'...'\u{1EE52}' => No,
-        '\u{1EE54}' => No,
-        '\u{1EE57}' => No,
-        '\u{1EE59}' => No,
-        '\u{1EE5B}' => No,
-        '\u{1EE5D}' => No,
-        '\u{1EE5F}' => No,
-        '\u{1EE61}'...'\u{1EE62}' => No,
-        '\u{1EE64}' => No,
-        '\u{1EE67}'...'\u{1EE6A}' => No,
-        '\u{1EE6C}'...'\u{1EE72}' => No,
-        '\u{1EE74}'...'\u{1EE77}' => No,
-        '\u{1EE79}'...'\u{1EE7C}' => No,
-        '\u{1EE7E}' => No,
-        '\u{1EE80}'...'\u{1EE89}' => No,
-        '\u{1EE8B}'...'\u{1EE9B}' => No,
-        '\u{1EEA1}'...'\u{1EEA3}' => No,
-        '\u{1EEA5}'...'\u{1EEA9}' => No,
-        '\u{1EEAB}'...'\u{1EEBB}' => No,
-        '\u{1F100}'...'\u{1F10A}' => No,
-        '\u{1F110}'...'\u{1F12E}' => No,
-        '\u{1F130}'...'\u{1F14F}' => No,
-        '\u{1F16A}'...'\u{1F16C}' => No,
-        '\u{1F190}' => No,
-        '\u{1F200}'...'\u{1F202}' => No,
-        '\u{1F210}'...'\u{1F23B}' => No,
-        '\u{1F240}'...'\u{1F248}' => No,
-        '\u{1F250}'...'\u{1F251}' => No,
-        '\u{1FBF0}'...'\u{1FBF9}' => No,
-        '\u{2F800}'...'\u{2FA1D}' => No,
-        '\u{0300}'...'\u{0304}' => Maybe,
-        '\u{0306}'...'\u{030C}' => Maybe,
-        '\u{030F}' => Maybe,
-        '\u{0311}' => Maybe,
-        '\u{0313}'...'\u{0314}' => Maybe,
-        '\u{031B}' => Maybe,
-        '\u{0323}'...'\u{0328}' => Maybe,
-        '\u{032D}'...'\u{032E}' => Maybe,
-        '\u{0330}'...'\u{0331}' => Maybe,
-        '\u{0338}' => Maybe,
-        '\u{0342}' => Maybe,
-        '\u{0345}' => Maybe,
-        '\u{0653}'...'\u{0655}' => Maybe,
-        '\u{093C}' => Maybe,
-        '\u{09BE}' => Maybe,
-        '\u{09D7}' => Maybe,
-        '\u{0B3E}' => Maybe,
-        '\u{0B56}' => Maybe,
-        '\u{0B57}' => Maybe,
-        '\u{0BBE}' => Maybe,
-        '\u{0BD7}' => Maybe,
-        '\u{0C56}' => Maybe,
-        '\u{0CC2}' => Maybe,
-        '\u{0CD5}'...'\u{0CD6}' => Maybe,
-        '\u{0D3E}' => Maybe,
-        '\u{0D57}' => Maybe,
-        '\u{0DCA}' => Maybe,
-        '\u{0DCF}' => Maybe,
-        '\u{0DDF}' => Maybe,
-        '\u{102E}' => Maybe,
-        '\u{1161}'...'\u{1175}' => Maybe,
-        '\u{11A8}'...'\u{11C2}' => Maybe,
-        '\u{1B35}' => Maybe,
-        '\u{3099}'...'\u{309A}' => Maybe,
-        '\u{110BA}' => Maybe,
-        '\u{11127}' => Maybe,
-        '\u{1133E}' => Maybe,
-        '\u{11357}' => Maybe,
-        '\u{114B0}' => Maybe,
-        '\u{114BA}' => Maybe,
-        '\u{114BD}' => Maybe,
-        '\u{115AF}' => Maybe,
-        '\u{11930}' => Maybe,
-        _ => Yes,
-    }
-}
-
-#[inline]
-#[allow(ellipsis_inclusive_range_patterns)]
-pub fn qc_nfd(c: char) -> IsNormalized {
-    match c {
-        '\u{00C0}'...'\u{00C5}' => No,
-        '\u{00C7}'...'\u{00CF}' => No,
-        '\u{00D1}'...'\u{00D6}' => No,
-        '\u{00D9}'...'\u{00DD}' => No,
-        '\u{00E0}'...'\u{00E5}' => No,
-        '\u{00E7}'...'\u{00EF}' => No,
-        '\u{00F1}'...'\u{00F6}' => No,
-        '\u{00F9}'...'\u{00FD}' => No,
-        '\u{00FF}'...'\u{010F}' => No,
-        '\u{0112}'...'\u{0125}' => No,
-        '\u{0128}'...'\u{0130}' => No,
-        '\u{0134}'...'\u{0137}' => No,
-        '\u{0139}'...'\u{013E}' => No,
-        '\u{0143}'...'\u{0148}' => No,
-        '\u{014C}'...'\u{0151}' => No,
-        '\u{0154}'...'\u{0165}' => No,
-        '\u{0168}'...'\u{017E}' => No,
-        '\u{01A0}'...'\u{01A1}' => No,
-        '\u{01AF}'...'\u{01B0}' => No,
-        '\u{01CD}'...'\u{01DC}' => No,
-        '\u{01DE}'...'\u{01E3}' => No,
-        '\u{01E6}'...'\u{01F0}' => No,
-        '\u{01F4}'...'\u{01F5}' => No,
-        '\u{01F8}'...'\u{021B}' => No,
-        '\u{021E}'...'\u{021F}' => No,
-        '\u{0226}'...'\u{0233}' => No,
-        '\u{0340}'...'\u{0341}' => No,
-        '\u{0343}'...'\u{0344}' => No,
-        '\u{0374}' => No,
-        '\u{037E}' => No,
-        '\u{0385}' => No,
-        '\u{0386}' => No,
-        '\u{0387}' => No,
-        '\u{0388}'...'\u{038A}' => No,
-        '\u{038C}' => No,
-        '\u{038E}'...'\u{0390}' => No,
-        '\u{03AA}'...'\u{03B0}' => No,
-        '\u{03CA}'...'\u{03CE}' => No,
-        '\u{03D3}'...'\u{03D4}' => No,
-        '\u{0400}'...'\u{0401}' => No,
-        '\u{0403}' => No,
-        '\u{0407}' => No,
-        '\u{040C}'...'\u{040E}' => No,
-        '\u{0419}' => No,
-        '\u{0439}' => No,
-        '\u{0450}'...'\u{0451}' => No,
-        '\u{0453}' => No,
-        '\u{0457}' => No,
-        '\u{045C}'...'\u{045E}' => No,
-        '\u{0476}'...'\u{0477}' => No,
-        '\u{04C1}'...'\u{04C2}' => No,
-        '\u{04D0}'...'\u{04D3}' => No,
-        '\u{04D6}'...'\u{04D7}' => No,
-        '\u{04DA}'...'\u{04DF}' => No,
-        '\u{04E2}'...'\u{04E7}' => No,
-        '\u{04EA}'...'\u{04F5}' => No,
-        '\u{04F8}'...'\u{04F9}' => No,
-        '\u{0622}'...'\u{0626}' => No,
-        '\u{06C0}' => No,
-        '\u{06C2}' => No,
-        '\u{06D3}' => No,
-        '\u{0929}' => No,
-        '\u{0931}' => No,
-        '\u{0934}' => No,
-        '\u{0958}'...'\u{095F}' => No,
-        '\u{09CB}'...'\u{09CC}' => No,
-        '\u{09DC}'...'\u{09DD}' => No,
-        '\u{09DF}' => No,
-        '\u{0A33}' => No,
-        '\u{0A36}' => No,
-        '\u{0A59}'...'\u{0A5B}' => No,
-        '\u{0A5E}' => No,
-        '\u{0B48}' => No,
-        '\u{0B4B}'...'\u{0B4C}' => No,
-        '\u{0B5C}'...'\u{0B5D}' => No,
-        '\u{0B94}' => No,
-        '\u{0BCA}'...'\u{0BCC}' => No,
-        '\u{0C48}' => No,
-        '\u{0CC0}' => No,
-        '\u{0CC7}'...'\u{0CC8}' => No,
-        '\u{0CCA}'...'\u{0CCB}' => No,
-        '\u{0D4A}'...'\u{0D4C}' => No,
-        '\u{0DDA}' => No,
-        '\u{0DDC}'...'\u{0DDE}' => No,
-        '\u{0F43}' => No,
-        '\u{0F4D}' => No,
-        '\u{0F52}' => No,
-        '\u{0F57}' => No,
-        '\u{0F5C}' => No,
-        '\u{0F69}' => No,
-        '\u{0F73}' => No,
-        '\u{0F75}'...'\u{0F76}' => No,
-        '\u{0F78}' => No,
-        '\u{0F81}' => No,
-        '\u{0F93}' => No,
-        '\u{0F9D}' => No,
-        '\u{0FA2}' => No,
-        '\u{0FA7}' => No,
-        '\u{0FAC}' => No,
-        '\u{0FB9}' => No,
-        '\u{1026}' => No,
-        '\u{1B06}' => No,
-        '\u{1B08}' => No,
-        '\u{1B0A}' => No,
-        '\u{1B0C}' => No,
-        '\u{1B0E}' => No,
-        '\u{1B12}' => No,
-        '\u{1B3B}' => No,
-        '\u{1B3D}' => No,
-        '\u{1B40}'...'\u{1B41}' => No,
-        '\u{1B43}' => No,
-        '\u{1E00}'...'\u{1E99}' => No,
-        '\u{1E9B}' => No,
-        '\u{1EA0}'...'\u{1EF9}' => No,
-        '\u{1F00}'...'\u{1F15}' => No,
-        '\u{1F18}'...'\u{1F1D}' => No,
-        '\u{1F20}'...'\u{1F45}' => No,
-        '\u{1F48}'...'\u{1F4D}' => No,
-        '\u{1F50}'...'\u{1F57}' => No,
-        '\u{1F59}' => No,
-        '\u{1F5B}' => No,
-        '\u{1F5D}' => No,
-        '\u{1F5F}'...'\u{1F7D}' => No,
-        '\u{1F80}'...'\u{1FB4}' => No,
-        '\u{1FB6}'...'\u{1FBC}' => No,
-        '\u{1FBE}' => No,
-        '\u{1FC1}' => No,
-        '\u{1FC2}'...'\u{1FC4}' => No,
-        '\u{1FC6}'...'\u{1FCC}' => No,
-        '\u{1FCD}'...'\u{1FCF}' => No,
-        '\u{1FD0}'...'\u{1FD3}' => No,
-        '\u{1FD6}'...'\u{1FDB}' => No,
-        '\u{1FDD}'...'\u{1FDF}' => No,
-        '\u{1FE0}'...'\u{1FEC}' => No,
-        '\u{1FED}'...'\u{1FEF}' => No,
-        '\u{1FF2}'...'\u{1FF4}' => No,
-        '\u{1FF6}'...'\u{1FFC}' => No,
-        '\u{1FFD}' => No,
-        '\u{2000}'...'\u{2001}' => No,
-        '\u{2126}' => No,
-        '\u{212A}'...'\u{212B}' => No,
-        '\u{219A}'...'\u{219B}' => No,
-        '\u{21AE}' => No,
-        '\u{21CD}' => No,
-        '\u{21CE}'...'\u{21CF}' => No,
-        '\u{2204}' => No,
-        '\u{2209}' => No,
-        '\u{220C}' => No,
-        '\u{2224}' => No,
-        '\u{2226}' => No,
-        '\u{2241}' => No,
-        '\u{2244}' => No,
-        '\u{2247}' => No,
-        '\u{2249}' => No,
-        '\u{2260}' => No,
-        '\u{2262}' => No,
-        '\u{226D}'...'\u{2271}' => No,
-        '\u{2274}'...'\u{2275}' => No,
-        '\u{2278}'...'\u{2279}' => No,
-        '\u{2280}'...'\u{2281}' => No,
-        '\u{2284}'...'\u{2285}' => No,
-        '\u{2288}'...'\u{2289}' => No,
-        '\u{22AC}'...'\u{22AF}' => No,
-        '\u{22E0}'...'\u{22E3}' => No,
-        '\u{22EA}'...'\u{22ED}' => No,
-        '\u{2329}' => No,
-        '\u{232A}' => No,
-        '\u{2ADC}' => No,
-        '\u{304C}' => No,
-        '\u{304E}' => No,
-        '\u{3050}' => No,
-        '\u{3052}' => No,
-        '\u{3054}' => No,
-        '\u{3056}' => No,
-        '\u{3058}' => No,
-        '\u{305A}' => No,
-        '\u{305C}' => No,
-        '\u{305E}' => No,
-        '\u{3060}' => No,
-        '\u{3062}' => No,
-        '\u{3065}' => No,
-        '\u{3067}' => No,
-        '\u{3069}' => No,
-        '\u{3070}'...'\u{3071}' => No,
-        '\u{3073}'...'\u{3074}' => No,
-        '\u{3076}'...'\u{3077}' => No,
-        '\u{3079}'...'\u{307A}' => No,
-        '\u{307C}'...'\u{307D}' => No,
-        '\u{3094}' => No,
-        '\u{309E}' => No,
-        '\u{30AC}' => No,
-        '\u{30AE}' => No,
-        '\u{30B0}' => No,
-        '\u{30B2}' => No,
-        '\u{30B4}' => No,
-        '\u{30B6}' => No,
-        '\u{30B8}' => No,
-        '\u{30BA}' => No,
-        '\u{30BC}' => No,
-        '\u{30BE}' => No,
-        '\u{30C0}' => No,
-        '\u{30C2}' => No,
-        '\u{30C5}' => No,
-        '\u{30C7}' => No,
-        '\u{30C9}' => No,
-        '\u{30D0}'...'\u{30D1}' => No,
-        '\u{30D3}'...'\u{30D4}' => No,
-        '\u{30D6}'...'\u{30D7}' => No,
-        '\u{30D9}'...'\u{30DA}' => No,
-        '\u{30DC}'...'\u{30DD}' => No,
-        '\u{30F4}' => No,
-        '\u{30F7}'...'\u{30FA}' => No,
-        '\u{30FE}' => No,
-        '\u{AC00}'...'\u{D7A3}' => No,
-        '\u{F900}'...'\u{FA0D}' => No,
-        '\u{FA10}' => No,
-        '\u{FA12}' => No,
-        '\u{FA15}'...'\u{FA1E}' => No,
-        '\u{FA20}' => No,
-        '\u{FA22}' => No,
-        '\u{FA25}'...'\u{FA26}' => No,
-        '\u{FA2A}'...'\u{FA6D}' => No,
-        '\u{FA70}'...'\u{FAD9}' => No,
-        '\u{FB1D}' => No,
-        '\u{FB1F}' => No,
-        '\u{FB2A}'...'\u{FB36}' => No,
-        '\u{FB38}'...'\u{FB3C}' => No,
-        '\u{FB3E}' => No,
-        '\u{FB40}'...'\u{FB41}' => No,
-        '\u{FB43}'...'\u{FB44}' => No,
-        '\u{FB46}'...'\u{FB4E}' => No,
-        '\u{1109A}' => No,
-        '\u{1109C}' => No,
-        '\u{110AB}' => No,
-        '\u{1112E}'...'\u{1112F}' => No,
-        '\u{1134B}'...'\u{1134C}' => No,
-        '\u{114BB}'...'\u{114BC}' => No,
-        '\u{114BE}' => No,
-        '\u{115BA}'...'\u{115BB}' => No,
-        '\u{11938}' => No,
-        '\u{1D15E}'...'\u{1D164}' => No,
-        '\u{1D1BB}'...'\u{1D1C0}' => No,
-        '\u{2F800}'...'\u{2FA1D}' => No,
-        _ => Yes,
-    }
-}
-
-#[inline]
-#[allow(ellipsis_inclusive_range_patterns)]
-pub fn qc_nfkd(c: char) -> IsNormalized {
-    match c {
-        '\u{00A0}' => No,
-        '\u{00A8}' => No,
-        '\u{00AA}' => No,
-        '\u{00AF}' => No,
-        '\u{00B2}'...'\u{00B3}' => No,
-        '\u{00B4}' => No,
-        '\u{00B5}' => No,
-        '\u{00B8}' => No,
-        '\u{00B9}' => No,
-        '\u{00BA}' => No,
-        '\u{00BC}'...'\u{00BE}' => No,
-        '\u{00C0}'...'\u{00C5}' => No,
-        '\u{00C7}'...'\u{00CF}' => No,
-        '\u{00D1}'...'\u{00D6}' => No,
-        '\u{00D9}'...'\u{00DD}' => No,
-        '\u{00E0}'...'\u{00E5}' => No,
-        '\u{00E7}'...'\u{00EF}' => No,
-        '\u{00F1}'...'\u{00F6}' => No,
-        '\u{00F9}'...'\u{00FD}' => No,
-        '\u{00FF}'...'\u{010F}' => No,
-        '\u{0112}'...'\u{0125}' => No,
-        '\u{0128}'...'\u{0130}' => No,
-        '\u{0132}'...'\u{0137}' => No,
-        '\u{0139}'...'\u{0140}' => No,
-        '\u{0143}'...'\u{0149}' => No,
-        '\u{014C}'...'\u{0151}' => No,
-        '\u{0154}'...'\u{0165}' => No,
-        '\u{0168}'...'\u{017F}' => No,
-        '\u{01A0}'...'\u{01A1}' => No,
-        '\u{01AF}'...'\u{01B0}' => No,
-        '\u{01C4}'...'\u{01DC}' => No,
-        '\u{01DE}'...'\u{01E3}' => No,
-        '\u{01E6}'...'\u{01F5}' => No,
-        '\u{01F8}'...'\u{021B}' => No,
-        '\u{021E}'...'\u{021F}' => No,
-        '\u{0226}'...'\u{0233}' => No,
-        '\u{02B0}'...'\u{02B8}' => No,
-        '\u{02D8}'...'\u{02DD}' => No,
-        '\u{02E0}'...'\u{02E4}' => No,
-        '\u{0340}'...'\u{0341}' => No,
-        '\u{0343}'...'\u{0344}' => No,
-        '\u{0374}' => No,
-        '\u{037A}' => No,
-        '\u{037E}' => No,
-        '\u{0384}'...'\u{0385}' => No,
-        '\u{0386}' => No,
-        '\u{0387}' => No,
-        '\u{0388}'...'\u{038A}' => No,
-        '\u{038C}' => No,
-        '\u{038E}'...'\u{0390}' => No,
-        '\u{03AA}'...'\u{03B0}' => No,
-        '\u{03CA}'...'\u{03CE}' => No,
-        '\u{03D0}'...'\u{03D6}' => No,
-        '\u{03F0}'...'\u{03F2}' => No,
-        '\u{03F4}'...'\u{03F5}' => No,
-        '\u{03F9}' => No,
-        '\u{0400}'...'\u{0401}' => No,
-        '\u{0403}' => No,
-        '\u{0407}' => No,
-        '\u{040C}'...'\u{040E}' => No,
-        '\u{0419}' => No,
-        '\u{0439}' => No,
-        '\u{0450}'...'\u{0451}' => No,
-        '\u{0453}' => No,
-        '\u{0457}' => No,
-        '\u{045C}'...'\u{045E}' => No,
-        '\u{0476}'...'\u{0477}' => No,
-        '\u{04C1}'...'\u{04C2}' => No,
-        '\u{04D0}'...'\u{04D3}' => No,
-        '\u{04D6}'...'\u{04D7}' => No,
-        '\u{04DA}'...'\u{04DF}' => No,
-        '\u{04E2}'...'\u{04E7}' => No,
-        '\u{04EA}'...'\u{04F5}' => No,
-        '\u{04F8}'...'\u{04F9}' => No,
-        '\u{0587}' => No,
-        '\u{0622}'...'\u{0626}' => No,
-        '\u{0675}'...'\u{0678}' => No,
-        '\u{06C0}' => No,
-        '\u{06C2}' => No,
-        '\u{06D3}' => No,
-        '\u{0929}' => No,
-        '\u{0931}' => No,
-        '\u{0934}' => No,
-        '\u{0958}'...'\u{095F}' => No,
-        '\u{09CB}'...'\u{09CC}' => No,
-        '\u{09DC}'...'\u{09DD}' => No,
-        '\u{09DF}' => No,
-        '\u{0A33}' => No,
-        '\u{0A36}' => No,
-        '\u{0A59}'...'\u{0A5B}' => No,
-        '\u{0A5E}' => No,
-        '\u{0B48}' => No,
-        '\u{0B4B}'...'\u{0B4C}' => No,
-        '\u{0B5C}'...'\u{0B5D}' => No,
-        '\u{0B94}' => No,
-        '\u{0BCA}'...'\u{0BCC}' => No,
-        '\u{0C48}' => No,
-        '\u{0CC0}' => No,
-        '\u{0CC7}'...'\u{0CC8}' => No,
-        '\u{0CCA}'...'\u{0CCB}' => No,
-        '\u{0D4A}'...'\u{0D4C}' => No,
-        '\u{0DDA}' => No,
-        '\u{0DDC}'...'\u{0DDE}' => No,
-        '\u{0E33}' => No,
-        '\u{0EB3}' => No,
-        '\u{0EDC}'...'\u{0EDD}' => No,
-        '\u{0F0C}' => No,
-        '\u{0F43}' => No,
-        '\u{0F4D}' => No,
-        '\u{0F52}' => No,
-        '\u{0F57}' => No,
-        '\u{0F5C}' => No,
-        '\u{0F69}' => No,
-        '\u{0F73}' => No,
-        '\u{0F75}'...'\u{0F79}' => No,
-        '\u{0F81}' => No,
-        '\u{0F93}' => No,
-        '\u{0F9D}' => No,
-        '\u{0FA2}' => No,
-        '\u{0FA7}' => No,
-        '\u{0FAC}' => No,
-        '\u{0FB9}' => No,
-        '\u{1026}' => No,
-        '\u{10FC}' => No,
-        '\u{1B06}' => No,
-        '\u{1B08}' => No,
-        '\u{1B0A}' => No,
-        '\u{1B0C}' => No,
-        '\u{1B0E}' => No,
-        '\u{1B12}' => No,
-        '\u{1B3B}' => No,
-        '\u{1B3D}' => No,
-        '\u{1B40}'...'\u{1B41}' => No,
-        '\u{1B43}' => No,
-        '\u{1D2C}'...'\u{1D2E}' => No,
-        '\u{1D30}'...'\u{1D3A}' => No,
-        '\u{1D3C}'...'\u{1D4D}' => No,
-        '\u{1D4F}'...'\u{1D6A}' => No,
-        '\u{1D78}' => No,
-        '\u{1D9B}'...'\u{1DBF}' => No,
-        '\u{1E00}'...'\u{1E9B}' => No,
-        '\u{1EA0}'...'\u{1EF9}' => No,
-        '\u{1F00}'...'\u{1F15}' => No,
-        '\u{1F18}'...'\u{1F1D}' => No,
-        '\u{1F20}'...'\u{1F45}' => No,
-        '\u{1F48}'...'\u{1F4D}' => No,
-        '\u{1F50}'...'\u{1F57}' => No,
-        '\u{1F59}' => No,
-        '\u{1F5B}' => No,
-        '\u{1F5D}' => No,
-        '\u{1F5F}'...'\u{1F7D}' => No,
-        '\u{1F80}'...'\u{1FB4}' => No,
-        '\u{1FB6}'...'\u{1FBC}' => No,
-        '\u{1FBD}' => No,
-        '\u{1FBE}' => No,
-        '\u{1FBF}'...'\u{1FC1}' => No,
-        '\u{1FC2}'...'\u{1FC4}' => No,
-        '\u{1FC6}'...'\u{1FCC}' => No,
-        '\u{1FCD}'...'\u{1FCF}' => No,
-        '\u{1FD0}'...'\u{1FD3}' => No,
-        '\u{1FD6}'...'\u{1FDB}' => No,
-        '\u{1FDD}'...'\u{1FDF}' => No,
-        '\u{1FE0}'...'\u{1FEC}' => No,
-        '\u{1FED}'...'\u{1FEF}' => No,
-        '\u{1FF2}'...'\u{1FF4}' => No,
-        '\u{1FF6}'...'\u{1FFC}' => No,
-        '\u{1FFD}'...'\u{1FFE}' => No,
-        '\u{2000}'...'\u{200A}' => No,
-        '\u{2011}' => No,
-        '\u{2017}' => No,
-        '\u{2024}'...'\u{2026}' => No,
-        '\u{202F}' => No,
-        '\u{2033}'...'\u{2034}' => No,
-        '\u{2036}'...'\u{2037}' => No,
-        '\u{203C}' => No,
-        '\u{203E}' => No,
-        '\u{2047}'...'\u{2049}' => No,
-        '\u{2057}' => No,
-        '\u{205F}' => No,
-        '\u{2070}' => No,
-        '\u{2071}' => No,
-        '\u{2074}'...'\u{2079}' => No,
-        '\u{207A}'...'\u{207C}' => No,
-        '\u{207D}' => No,
-        '\u{207E}' => No,
-        '\u{207F}' => No,
-        '\u{2080}'...'\u{2089}' => No,
-        '\u{208A}'...'\u{208C}' => No,
-        '\u{208D}' => No,
-        '\u{208E}' => No,
-        '\u{2090}'...'\u{209C}' => No,
-        '\u{20A8}' => No,
-        '\u{2100}'...'\u{2101}' => No,
-        '\u{2102}' => No,
-        '\u{2103}' => No,
-        '\u{2105}'...'\u{2106}' => No,
-        '\u{2107}' => No,
-        '\u{2109}' => No,
-        '\u{210A}'...'\u{2113}' => No,
-        '\u{2115}' => No,
-        '\u{2116}' => No,
-        '\u{2119}'...'\u{211D}' => No,
-        '\u{2120}'...'\u{2122}' => No,
-        '\u{2124}' => No,
-        '\u{2126}' => No,
-        '\u{2128}' => No,
-        '\u{212A}'...'\u{212D}' => No,
-        '\u{212F}'...'\u{2131}' => No,
-        '\u{2133}'...'\u{2134}' => No,
-        '\u{2135}'...'\u{2138}' => No,
-        '\u{2139}' => No,
-        '\u{213B}' => No,
-        '\u{213C}'...'\u{213F}' => No,
-        '\u{2140}' => No,
-        '\u{2145}'...'\u{2149}' => No,
-        '\u{2150}'...'\u{215F}' => No,
-        '\u{2160}'...'\u{217F}' => No,
-        '\u{2189}' => No,
-        '\u{219A}'...'\u{219B}' => No,
-        '\u{21AE}' => No,
-        '\u{21CD}' => No,
-        '\u{21CE}'...'\u{21CF}' => No,
-        '\u{2204}' => No,
-        '\u{2209}' => No,
-        '\u{220C}' => No,
-        '\u{2224}' => No,
-        '\u{2226}' => No,
-        '\u{222C}'...'\u{222D}' => No,
-        '\u{222F}'...'\u{2230}' => No,
-        '\u{2241}' => No,
-        '\u{2244}' => No,
-        '\u{2247}' => No,
-        '\u{2249}' => No,
-        '\u{2260}' => No,
-        '\u{2262}' => No,
-        '\u{226D}'...'\u{2271}' => No,
-        '\u{2274}'...'\u{2275}' => No,
-        '\u{2278}'...'\u{2279}' => No,
-        '\u{2280}'...'\u{2281}' => No,
-        '\u{2284}'...'\u{2285}' => No,
-        '\u{2288}'...'\u{2289}' => No,
-        '\u{22AC}'...'\u{22AF}' => No,
-        '\u{22E0}'...'\u{22E3}' => No,
-        '\u{22EA}'...'\u{22ED}' => No,
-        '\u{2329}' => No,
-        '\u{232A}' => No,
-        '\u{2460}'...'\u{249B}' => No,
-        '\u{249C}'...'\u{24E9}' => No,
-        '\u{24EA}' => No,
-        '\u{2A0C}' => No,
-        '\u{2A74}'...'\u{2A76}' => No,
-        '\u{2ADC}' => No,
-        '\u{2C7C}'...'\u{2C7D}' => No,
-        '\u{2D6F}' => No,
-        '\u{2E9F}' => No,
-        '\u{2EF3}' => No,
-        '\u{2F00}'...'\u{2FD5}' => No,
-        '\u{3000}' => No,
-        '\u{3036}' => No,
-        '\u{3038}'...'\u{303A}' => No,
-        '\u{304C}' => No,
-        '\u{304E}' => No,
-        '\u{3050}' => No,
-        '\u{3052}' => No,
-        '\u{3054}' => No,
-        '\u{3056}' => No,
-        '\u{3058}' => No,
-        '\u{305A}' => No,
-        '\u{305C}' => No,
-        '\u{305E}' => No,
-        '\u{3060}' => No,
-        '\u{3062}' => No,
-        '\u{3065}' => No,
-        '\u{3067}' => No,
-        '\u{3069}' => No,
-        '\u{3070}'...'\u{3071}' => No,
-        '\u{3073}'...'\u{3074}' => No,
-        '\u{3076}'...'\u{3077}' => No,
-        '\u{3079}'...'\u{307A}' => No,
-        '\u{307C}'...'\u{307D}' => No,
-        '\u{3094}' => No,
-        '\u{309B}'...'\u{309C}' => No,
-        '\u{309E}' => No,
-        '\u{309F}' => No,
-        '\u{30AC}' => No,
-        '\u{30AE}' => No,
-        '\u{30B0}' => No,
-        '\u{30B2}' => No,
-        '\u{30B4}' => No,
-        '\u{30B6}' => No,
-        '\u{30B8}' => No,
-        '\u{30BA}' => No,
-        '\u{30BC}' => No,
-        '\u{30BE}' => No,
-        '\u{30C0}' => No,
-        '\u{30C2}' => No,
-        '\u{30C5}' => No,
-        '\u{30C7}' => No,
-        '\u{30C9}' => No,
-        '\u{30D0}'...'\u{30D1}' => No,
-        '\u{30D3}'...'\u{30D4}' => No,
-        '\u{30D6}'...'\u{30D7}' => No,
-        '\u{30D9}'...'\u{30DA}' => No,
-        '\u{30DC}'...'\u{30DD}' => No,
-        '\u{30F4}' => No,
-        '\u{30F7}'...'\u{30FA}' => No,
-        '\u{30FE}' => No,
-        '\u{30FF}' => No,
-        '\u{3131}'...'\u{318E}' => No,
-        '\u{3192}'...'\u{3195}' => No,
-        '\u{3196}'...'\u{319F}' => No,
-        '\u{3200}'...'\u{321E}' => No,
-        '\u{3220}'...'\u{3229}' => No,
-        '\u{322A}'...'\u{3247}' => No,
-        '\u{3250}' => No,
-        '\u{3251}'...'\u{325F}' => No,
-        '\u{3260}'...'\u{327E}' => No,
-        '\u{3280}'...'\u{3289}' => No,
-        '\u{328A}'...'\u{32B0}' => No,
-        '\u{32B1}'...'\u{32BF}' => No,
-        '\u{32C0}'...'\u{33FF}' => No,
-        '\u{A69C}'...'\u{A69D}' => No,
-        '\u{A770}' => No,
-        '\u{A7F2}'...'\u{A7F4}' => No,
-        '\u{A7F8}'...'\u{A7F9}' => No,
-        '\u{AB5C}'...'\u{AB5F}' => No,
-        '\u{AB69}' => No,
-        '\u{AC00}'...'\u{D7A3}' => No,
-        '\u{F900}'...'\u{FA0D}' => No,
-        '\u{FA10}' => No,
-        '\u{FA12}' => No,
-        '\u{FA15}'...'\u{FA1E}' => No,
-        '\u{FA20}' => No,
-        '\u{FA22}' => No,
-        '\u{FA25}'...'\u{FA26}' => No,
-        '\u{FA2A}'...'\u{FA6D}' => No,
-        '\u{FA70}'...'\u{FAD9}' => No,
-        '\u{FB00}'...'\u{FB06}' => No,
-        '\u{FB13}'...'\u{FB17}' => No,
-        '\u{FB1D}' => No,
-        '\u{FB1F}'...'\u{FB28}' => No,
-        '\u{FB29}' => No,
-        '\u{FB2A}'...'\u{FB36}' => No,
-        '\u{FB38}'...'\u{FB3C}' => No,
-        '\u{FB3E}' => No,
-        '\u{FB40}'...'\u{FB41}' => No,
-        '\u{FB43}'...'\u{FB44}' => No,
-        '\u{FB46}'...'\u{FBB1}' => No,
-        '\u{FBD3}'...'\u{FD3D}' => No,
-        '\u{FD50}'...'\u{FD8F}' => No,
-        '\u{FD92}'...'\u{FDC7}' => No,
-        '\u{FDF0}'...'\u{FDFB}' => No,
-        '\u{FDFC}' => No,
-        '\u{FE10}'...'\u{FE16}' => No,
-        '\u{FE17}' => No,
-        '\u{FE18}' => No,
-        '\u{FE19}' => No,
-        '\u{FE30}' => No,
-        '\u{FE31}'...'\u{FE32}' => No,
-        '\u{FE33}'...'\u{FE34}' => No,
-        '\u{FE35}' => No,
-        '\u{FE36}' => No,
-        '\u{FE37}' => No,
-        '\u{FE38}' => No,
-        '\u{FE39}' => No,
-        '\u{FE3A}' => No,
-        '\u{FE3B}' => No,
-        '\u{FE3C}' => No,
-        '\u{FE3D}' => No,
-        '\u{FE3E}' => No,
-        '\u{FE3F}' => No,
-        '\u{FE40}' => No,
-        '\u{FE41}' => No,
-        '\u{FE42}' => No,
-        '\u{FE43}' => No,
-        '\u{FE44}' => No,
-        '\u{FE47}' => No,
-        '\u{FE48}' => No,
-        '\u{FE49}'...'\u{FE4C}' => No,
-        '\u{FE4D}'...'\u{FE4F}' => No,
-        '\u{FE50}'...'\u{FE52}' => No,
-        '\u{FE54}'...'\u{FE57}' => No,
-        '\u{FE58}' => No,
-        '\u{FE59}' => No,
-        '\u{FE5A}' => No,
-        '\u{FE5B}' => No,
-        '\u{FE5C}' => No,
-        '\u{FE5D}' => No,
-        '\u{FE5E}' => No,
-        '\u{FE5F}'...'\u{FE61}' => No,
-        '\u{FE62}' => No,
-        '\u{FE63}' => No,
-        '\u{FE64}'...'\u{FE66}' => No,
-        '\u{FE68}' => No,
-        '\u{FE69}' => No,
-        '\u{FE6A}'...'\u{FE6B}' => No,
-        '\u{FE70}'...'\u{FE72}' => No,
-        '\u{FE74}' => No,
-        '\u{FE76}'...'\u{FEFC}' => No,
-        '\u{FF01}'...'\u{FF03}' => No,
-        '\u{FF04}' => No,
-        '\u{FF05}'...'\u{FF07}' => No,
-        '\u{FF08}' => No,
-        '\u{FF09}' => No,
-        '\u{FF0A}' => No,
-        '\u{FF0B}' => No,
-        '\u{FF0C}' => No,
-        '\u{FF0D}' => No,
-        '\u{FF0E}'...'\u{FF0F}' => No,
-        '\u{FF10}'...'\u{FF19}' => No,
-        '\u{FF1A}'...'\u{FF1B}' => No,
-        '\u{FF1C}'...'\u{FF1E}' => No,
-        '\u{FF1F}'...'\u{FF20}' => No,
-        '\u{FF21}'...'\u{FF3A}' => No,
-        '\u{FF3B}' => No,
-        '\u{FF3C}' => No,
-        '\u{FF3D}' => No,
-        '\u{FF3E}' => No,
-        '\u{FF3F}' => No,
-        '\u{FF40}' => No,
-        '\u{FF41}'...'\u{FF5A}' => No,
-        '\u{FF5B}' => No,
-        '\u{FF5C}' => No,
-        '\u{FF5D}' => No,
-        '\u{FF5E}' => No,
-        '\u{FF5F}' => No,
-        '\u{FF60}' => No,
-        '\u{FF61}' => No,
-        '\u{FF62}' => No,
-        '\u{FF63}' => No,
-        '\u{FF64}'...'\u{FF65}' => No,
-        '\u{FF66}'...'\u{FF6F}' => No,
-        '\u{FF70}' => No,
-        '\u{FF71}'...'\u{FF9D}' => No,
-        '\u{FF9E}'...'\u{FF9F}' => No,
-        '\u{FFA0}'...'\u{FFBE}' => No,
-        '\u{FFC2}'...'\u{FFC7}' => No,
-        '\u{FFCA}'...'\u{FFCF}' => No,
-        '\u{FFD2}'...'\u{FFD7}' => No,
-        '\u{FFDA}'...'\u{FFDC}' => No,
-        '\u{FFE0}'...'\u{FFE1}' => No,
-        '\u{FFE2}' => No,
-        '\u{FFE3}' => No,
-        '\u{FFE4}' => No,
-        '\u{FFE5}'...'\u{FFE6}' => No,
-        '\u{FFE8}' => No,
-        '\u{FFE9}'...'\u{FFEC}' => No,
-        '\u{FFED}'...'\u{FFEE}' => No,
-        '\u{10781}'...'\u{10785}' => No,
-        '\u{10787}'...'\u{107B0}' => No,
-        '\u{107B2}'...'\u{107BA}' => No,
-        '\u{1109A}' => No,
-        '\u{1109C}' => No,
-        '\u{110AB}' => No,
-        '\u{1112E}'...'\u{1112F}' => No,
-        '\u{1134B}'...'\u{1134C}' => No,
-        '\u{114BB}'...'\u{114BC}' => No,
-        '\u{114BE}' => No,
-        '\u{115BA}'...'\u{115BB}' => No,
-        '\u{11938}' => No,
-        '\u{1D15E}'...'\u{1D164}' => No,
-        '\u{1D1BB}'...'\u{1D1C0}' => No,
-        '\u{1D400}'...'\u{1D454}' => No,
-        '\u{1D456}'...'\u{1D49C}' => No,
-        '\u{1D49E}'...'\u{1D49F}' => No,
-        '\u{1D4A2}' => No,
-        '\u{1D4A5}'...'\u{1D4A6}' => No,
-        '\u{1D4A9}'...'\u{1D4AC}' => No,
-        '\u{1D4AE}'...'\u{1D4B9}' => No,
-        '\u{1D4BB}' => No,
-        '\u{1D4BD}'...'\u{1D4C3}' => No,
-        '\u{1D4C5}'...'\u{1D505}' => No,
-        '\u{1D507}'...'\u{1D50A}' => No,
-        '\u{1D50D}'...'\u{1D514}' => No,
-        '\u{1D516}'...'\u{1D51C}' => No,
-        '\u{1D51E}'...'\u{1D539}' => No,
-        '\u{1D53B}'...'\u{1D53E}' => No,
-        '\u{1D540}'...'\u{1D544}' => No,
-        '\u{1D546}' => No,
-        '\u{1D54A}'...'\u{1D550}' => No,
-        '\u{1D552}'...'\u{1D6A5}' => No,
-        '\u{1D6A8}'...'\u{1D6C0}' => No,
-        '\u{1D6C1}' => No,
-        '\u{1D6C2}'...'\u{1D6DA}' => No,
-        '\u{1D6DB}' => No,
-        '\u{1D6DC}'...'\u{1D6FA}' => No,
-        '\u{1D6FB}' => No,
-        '\u{1D6FC}'...'\u{1D714}' => No,
-        '\u{1D715}' => No,
-        '\u{1D716}'...'\u{1D734}' => No,
-        '\u{1D735}' => No,
-        '\u{1D736}'...'\u{1D74E}' => No,
-        '\u{1D74F}' => No,
-        '\u{1D750}'...'\u{1D76E}' => No,
-        '\u{1D76F}' => No,
-        '\u{1D770}'...'\u{1D788}' => No,
-        '\u{1D789}' => No,
-        '\u{1D78A}'...'\u{1D7A8}' => No,
-        '\u{1D7A9}' => No,
-        '\u{1D7AA}'...'\u{1D7C2}' => No,
-        '\u{1D7C3}' => No,
-        '\u{1D7C4}'...'\u{1D7CB}' => No,
-        '\u{1D7CE}'...'\u{1D7FF}' => No,
-        '\u{1E030}'...'\u{1E06D}' => No,
-        '\u{1EE00}'...'\u{1EE03}' => No,
-        '\u{1EE05}'...'\u{1EE1F}' => No,
-        '\u{1EE21}'...'\u{1EE22}' => No,
-        '\u{1EE24}' => No,
-        '\u{1EE27}' => No,
-        '\u{1EE29}'...'\u{1EE32}' => No,
-        '\u{1EE34}'...'\u{1EE37}' => No,
-        '\u{1EE39}' => No,
-        '\u{1EE3B}' => No,
-        '\u{1EE42}' => No,
-        '\u{1EE47}' => No,
-        '\u{1EE49}' => No,
-        '\u{1EE4B}' => No,
-        '\u{1EE4D}'...'\u{1EE4F}' => No,
-        '\u{1EE51}'...'\u{1EE52}' => No,
-        '\u{1EE54}' => No,
-        '\u{1EE57}' => No,
-        '\u{1EE59}' => No,
-        '\u{1EE5B}' => No,
-        '\u{1EE5D}' => No,
-        '\u{1EE5F}' => No,
-        '\u{1EE61}'...'\u{1EE62}' => No,
-        '\u{1EE64}' => No,
-        '\u{1EE67}'...'\u{1EE6A}' => No,
-        '\u{1EE6C}'...'\u{1EE72}' => No,
-        '\u{1EE74}'...'\u{1EE77}' => No,
-        '\u{1EE79}'...'\u{1EE7C}' => No,
-        '\u{1EE7E}' => No,
-        '\u{1EE80}'...'\u{1EE89}' => No,
-        '\u{1EE8B}'...'\u{1EE9B}' => No,
-        '\u{1EEA1}'...'\u{1EEA3}' => No,
-        '\u{1EEA5}'...'\u{1EEA9}' => No,
-        '\u{1EEAB}'...'\u{1EEBB}' => No,
-        '\u{1F100}'...'\u{1F10A}' => No,
-        '\u{1F110}'...'\u{1F12E}' => No,
-        '\u{1F130}'...'\u{1F14F}' => No,
-        '\u{1F16A}'...'\u{1F16C}' => No,
-        '\u{1F190}' => No,
-        '\u{1F200}'...'\u{1F202}' => No,
-        '\u{1F210}'...'\u{1F23B}' => No,
-        '\u{1F240}'...'\u{1F248}' => No,
-        '\u{1F250}'...'\u{1F251}' => No,
-        '\u{1FBF0}'...'\u{1FBF9}' => No,
-        '\u{2F800}'...'\u{2FA1D}' => No,
-        _ => Yes,
-    }
-}
-
-#[inline]
-pub fn stream_safe_leading_nonstarters(c: char) -> usize {
-    match c {
-        '\u{0340}' => 1,
-        '\u{0341}' => 1,
-        '\u{0343}' => 1,
-        '\u{0344}' => 2,
-        '\u{0F73}' => 2,
-        '\u{0F75}' => 2,
-        '\u{0F81}' => 2,
-        '\u{FF9E}' => 1,
-        '\u{FF9F}' => 1,
-        _ => 0,
-    }
-}
-
-pub(crate) const TRAILING_NONSTARTERS_SALT: &[u16] = &[
-    0x1bb,
-    0x0,
-    0x8,
-    0x162,
-    0x0,
-    0x5,
-    0x0,
-    0x75,
-    0x4,
-    0x0,
-    0x0,
-    0x5,
-    0x18,
-    0x2,
-    0x0,
-    0x1,
-    0x90,
-    0x0,
-    0x2,
-    0x5f,
-    0xc6,
-    0x0,
-    0x0,
-    0x20,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x0,
-    0x39,
-    0x0,
-    0x0,
-    0x48,
-    0x3,
-    0x0,
-    0x95,
-    0xaf,
-    0x30,
-    0x6f,
-    0x0,
-    0x0,
-    0x4,
-    0x8,
-    0x10b,
-    0x13,
-    0x0,
-    0x2f,
-    0x16,
-    0x6d,
-    0x1,
-    0x3,
-    0xe,
-    0x0,
-    0x2c,
-    0x83,
-    0x37,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x2,
-    0x46,
-    0xa,
-    0xb,
-    0x16,
-    0x4c,
-    0x0,
-    0x0,
-    0x0,
-    0xe,
-    0x1,
-    0x0,
-    0x7,
-    0xf,
-    0x26,
-    0x2,
-    0xb,
-    0xb,
-    0x3,
-    0x6,
-    0x1a,
-    0x0,
-    0x1,
-    0x6,
-    0x5,
-    0x5c,
-    0x6,
-    0x8,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x59,
-    0x9,
-    0x20,
-    0x3,
-    0x0,
-    0x4,
-    0x1a,
-    0x1,
-    0x0,
-    0xb,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x23,
-    0x2,
-    0x8,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x29,
-    0x1a,
-    0x20,
-    0x6,
-    0x15,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x13,
-    0x14,
-    0x3,
-    0x1,
-    0x14,
-    0x1,
-    0x1,
-    0x0,
-    0x3,
-    0x4,
-    0x0,
-    0x5,
-    0x8,
-    0x3,
-    0x2,
-    0x1c,
-    0x5,
-    0x1,
-    0x0,
-    0x17,
-    0x0,
-    0x0,
-    0x1b,
-    0x0,
-    0x6,
-    0x0,
-    0x3a,
-    0x0,
-    0x23,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x1,
-    0x0,
-    0x0,
-    0x16,
-    0x2d,
-    0x3,
-    0x1,
-    0x4,
-    0x14,
-    0x0,
-    0x0,
-    0x16,
-    0x2,
-    0x3,
-    0x9,
-    0x0,
-    0x56,
-    0x0,
-    0xd,
-    0x0,
-    0x4,
-    0xd,
-    0x0,
-    0x2,
-    0x10,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x23,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x13,
-    0x10,
-    0xd,
-    0x5c,
-    0x0,
-    0x9,
-    0xe,
-    0x5,
-    0x1,
-    0x0,
-    0xc,
-    0xd,
-    0x1,
-    0x4,
-    0x1,
-    0x2,
-    0x13,
-    0x0,
-    0x0,
-    0x1,
-    0xc,
-    0xb,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0xc,
-    0x0,
-    0x7,
-    0x0,
-    0xf,
-    0x0,
-    0x5,
-    0x4,
-    0x4,
-    0x3,
-    0x2,
-    0x4,
-    0x1,
-    0x11,
-    0x11,
-    0xc,
-    0x5,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x2,
-    0xc,
-    0x0,
-    0x0,
-    0x11,
-    0x6,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x8,
-    0x0,
-    0x0,
-    0x2,
-    0x12,
-    0x9,
-    0x1,
-    0x0,
-    0x3,
-    0x9,
-    0x0,
-    0x0,
-    0x3,
-    0x9,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xc,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x2,
-    0x2,
-    0x8,
-    0x0,
-    0x0,
-    0x5,
-    0x13,
-    0x7,
-    0xc,
-    0x0,
-    0x9,
-    0x1,
-    0x3a,
-    0x1,
-    0x1,
-    0x9,
-    0x0,
-    0x0,
-    0x0,
-    0x9,
-    0x1,
-    0x4,
-    0x12,
-    0x0,
-    0x7,
-    0x4,
-    0x5,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x7,
-    0x1,
-    0x0,
-    0x12,
-    0x2,
-    0x1,
-    0x6,
-    0x1a,
-    0x4,
-    0x6,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x9,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x5,
-    0xb,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0xb,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x5,
-    0x4,
-    0xa,
-    0x0,
-    0x0,
-    0x9,
-    0x0,
-    0xa,
-    0x5,
-    0x8,
-    0x1,
-    0x0,
-    0x1c,
-    0x2,
-    0x1,
-    0x3,
-    0x0,
-    0x1a,
-    0x9,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x3,
-    0x0,
-    0x5,
-    0x4,
-    0x4,
-    0xe,
-    0x0,
-    0x9,
-    0x1,
-    0x8,
-    0x2,
-    0x0,
-    0x0,
-    0x4,
-    0x3,
-    0x0,
-    0x4,
-    0xf,
-    0x1,
-    0x0,
-    0x2,
-    0x3,
-    0x6,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x10,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x7,
-    0x2,
-    0x5,
-    0x1,
-    0x6,
-    0x0,
-    0x4,
-    0x3,
-    0xa,
-    0x1,
-    0xa,
-    0x1,
-    0x0,
-    0x7,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x2b,
-    0x8,
-    0x1,
-    0x0,
-    0xe,
-    0xa,
-    0x0,
-    0xb,
-    0x0,
-    0x0,
-    0x4,
-    0x1,
-    0xb,
-    0x6,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x6,
-    0x2,
-    0x2,
-    0x0,
-    0x1,
-    0x1e,
-    0x5,
-    0xa,
-    0x5,
-    0x7,
-    0x9,
-    0x0,
-    0x0,
-    0x0,
-    0xa,
-    0x3,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x5,
-    0x4,
-    0x4,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x8,
-    0x1,
-    0x5,
-    0x6,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x4,
-    0x6,
-    0x1,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x9,
-    0x1,
-    0xb,
-    0x0,
-    0x1,
-    0x0,
-    0x6,
-    0x1,
-    0x2,
-    0x3,
-    0x4,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x8,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x5,
-    0xa,
-    0x4,
-    0x1,
-    0x0,
-    0x1,
-    0x3,
-    0x1,
-    0x8,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0xc,
-    0x2,
-    0x2,
-    0x8,
-    0xd,
-    0x1,
-    0x1,
-    0x3,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x6,
-    0x4,
-    0x0,
-    0x0,
-    0x8,
-    0x6,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0xb,
-    0x3,
-    0x8,
-    0x5,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x7,
-    0x1,
-    0x5,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0xd,
-    0x0,
-    0x2,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x4,
-    0x8,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x7,
-    0x0,
-    0x1,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x7,
-    0x0,
-    0x1,
-    0x1,
-    0x9,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x4,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x7,
-    0x6,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x7,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x5,
-    0x3,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x2,
-    0x3,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x0,
-    0x6,
-    0x5,
-    0xa,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x2,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x3,
-    0x2,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x6,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x8,
-    0x0,
-    0x4,
-    0x5,
-    0x0,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x2,
-    0x9,
-    0x3,
-    0x0,
-    0x4,
-    0x1,
-    0x1,
-    0xc,
-    0x1,
-    0x1,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0xa,
-    0x9,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x4,
-    0x0,
-    0x8,
-    0x0,
-    0x8,
-    0x2,
-    0x5,
-    0x6,
-    0x3,
-    0x1,
-    0x0,
-    0x6,
-    0x0,
-    0x6,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x2,
-    0x4,
-    0x0,
-    0x7,
-    0x3,
-    0x0,
-    0xb,
-    0x1,
-    0x0,
-    0x4,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x6,
-    0x6,
-    0x2,
-    0x1,
-    0x2,
-    0x1,
-    0x9,
-    0x0,
-    0x0,
-    0x0,
-    0x8,
-    0x12,
-    0x0,
-    0x9,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x7,
-    0x0,
-    0x2,
-    0x1,
-    0x1,
-    0x3,
-    0x2,
-    0x1,
-    0x2,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x3,
-    0x5,
-    0x1,
-    0x0,
-    0x3,
-    0x7,
-    0x4,
-    0x1,
-    0x0,
-    0x1,
-    0x6,
-    0x3,
-    0x1,
-    0x0,
-    0x4,
-    0x2,
-    0x0,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x0,
-    0x2,
-    0x0,
-    0x7,
-    0x1,
-    0x1,
-    0x0,
-    0x4,
-    0x3,
-    0x3,
-    0x4,
-    0x6,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x3,
-    0x3,
-    0x2,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x8,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x3,
-    0x1,
-    0x2,
-    0x3,
-    0x3,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x3,
-    0x0,
-    0xe,
-    0x4,
-    0x5,
-    0x3,
-    0x0,
-    0x0,
-    0x3,
-    0x7,
-    0x1,
-    0x7,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x3,
-    0x2,
-    0x3,
-    0x3,
-    0x5,
-    0x1,
-    0x4,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x0,
-    0x3,
-    0x6,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x6,
-    0x3,
-    0x6,
-    0x4,
-    0x3,
-    0x0,
-    0x0,
-    0x2,
-    0x0,
-    0x3,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x2,
-    0x4,
-    0x1,
-    0x2,
-    0x1,
-    0x0,
-    0x8,
-    0x1,
-    0x1,
-    0x2,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x7,
-    0x6,
-    0x3,
-    0x9,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x5,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x3,
-    0x6,
-    0x0,
-    0x1,
-    0x4,
-    0x8,
-    0x0,
-    0x0,
-    0x5,
-    0x0,
-    0x3,
-    0x3,
-    0x1,
-    0x4,
-    0x1,
-    0x0,
-    0x1,
-    0x0,
-    0x4,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x2,
-    0x2,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x4,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x1,
-    0x0,
-    0x3,
-    0x1,
-    0x3,
-    0x1,
-    0x0,
-    0x0,
-    0x3,
-    0x1,
-    0x0,
-    0x2,
-    0x0,
-    0x1,
-    0x0,
-    0x1,
-    0x1,
-    0x2,
-    0x1,
-    0x1,
-    0x0,
-    0x2,
-    0x1,
-    0x3,
-    0x4,
-    0x0,
-    0x3,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x1,
-    0x1,
-    0x0,
-    0x5,
-    0x0,
-    0x0,
-    0x1,
-    0x3,
-    0x0,
-    0x0,
-    0x1,
-    0x0,
-    0x0,
-    0x2,
-    0x1,
-    0x5,
-    0x0,
-    0x4,
-    0x2,
-    0x1,
-    0x4,
-    0x3,
-    0x1,
-    0x0,
-    0x1,
-    0x2,
-    0x4,
-];
-pub(crate) const TRAILING_NONSTARTERS_KV: &[u32] = &[
-    0x4EE01,
-    0x1E4B01,
-    0x1F1D02,
-    0x1E3C01,
-    0x224901,
-    0x1FB101,
-    0x1E6902,
-    0xFE8401,
-    0x1E1A01,
-    0x22901,
-    0xFC6202,
-    0xFE7101,
-    0x1E5A01,
-    0xEC01,
-    0x15001,
-    0x1E8901,
-    0x21CF01,
-    0x1F1101,
-    0x1E5002,
-    0x1E7201,
-    0x1FB901,
-    0x34301,
-    0x1FD901,
-    0x1FF801,
-    0x1F8C03,
-    0xDA01,
-    0x1E5302,
-    0x1FA203,
-    0x1FC202,
-    0x334E01,
-    0x1F4502,
-    0x12B01,
-    0xFB4401,
-    0x220401,
-    0x13E01,
-    0x12901,
-    0x1E9301,
-    0x1F001,
-    0x307701,
-    0xFE7D01,
-    0x21B01,
-    0x1EA802,
-    0x1E6402,
-    0x40301,
-    0x95801,
-    0x1E3902,
-    0x30AC01,
-    0x1F3502,
-    0x4F501,
-    0x1E7101,
-    0x4E701,
-    0x10801,
-    0x334B01,
-    0x14E01,
-    0x1EC901,
-    0x1FA02,
-    0x4ED01,
-    0x4EB01,
-    0x21701,
-    0x1FD001,
-    0x14601,
-    0x1D101,
-    0x34101,
-    0x1E3401,
-    0x304C01,
-    0xE901,
-    0x1F9403,
-    0x330701,
-    0x1E4001,
-    0x1E3601,
-    0x1E3101,
-    0x22AD01,
-    0x1E0701,
-    0x1F5202,
-    0xF601,
-    0x1FEB01,
-    0x1EE501,
-    0x1F7201,
-    0x1EAF02,
-    0x1F6D02,
-    0x1E2201,
-    0x1EEA02,
-    0x1E4D02,
-    0xA3301,
-    0x4F901,
-    0x17401,
-    0x11D01,
-    0xFB3601,
-    0x305C01,
-    0x12201,
-    0x1F8802,
-    0x1E5D02,
-    0x1EC102,
-    0x13D01,
-    0x1EF102,
-    0x30F401,
-    0x40701,
-    0x1FA802,
-    0x1EB402,
-    0x1E5801,
-    0x1E0501,
-    0xE001,
-    0xFB3301,
-    0xEB01,
-    0xA5E01,
-    0x1F3202,
-    0x20A01,
-    0x20801,
-    0x1FF702,
-    0x1FC901,
-    0x228001,
-    0xE401,
-    0x1F2101,
-    0x21CE01,
-    0xCB01,
-    0x1F9F03,
-    0x14301,
-    0x306701,
-    0x1E601,
-    0x1E4601,
-    0x45D01,
-    0x1E1001,
-    0x1E4801,
-    0x1FF402,
-    0x30D701,
-    0x22E301,
-    0x1EB801,
-    0x12C01,
-    0x331E01,
-    0x1F7001,
-    0x1F5D02,
-    0x21901,
-    0x10D01,
-    0x1FB402,
-    0xA801,
-    0x1FE801,
-    0x15401,
-    0x4D301,
-    0xFC01,
-    0x1EE401,
-    0x1F0901,
-    0x16B01,
-    0x1E1201,
-    0x1E2E02,
-    0x4C201,
-    0xFB1F01,
-    0x1F5602,
-    0x4DA01,
-    0x1EC02,
-    0x228801,
-    0x1ECB01,
-    0x16101,
-    0x1E9101,
-    0x1ECE01,
-    0x1F8002,
-    0x307401,
-    0xFE4901,
-    0x307101,
-    0x1D16202,
-    0x1FC001,
-    0x3CB01,
-    0x1FCF02,
-    0x1FBF01,
-    0x1FBD01,
-    0xFB3501,
-    0x1D15E01,
-    0xFE7F01,
-    0x22E01,
-    0x1E7701,
-    0xFBB001,
-    0xE101,
-    0x30B001,
-    0x22EA01,
-    0x1F3F02,
-    0x1C601,
-    0x1E1E01,
-    0x9DC01,
-    0x1F6302,
-    0x1FC01,
-    0x4D001,
-    0x1FDE02,
-    0x1E1301,
-    0x1FCE02,
-    0x4F101,
-    0x228101,
-    0x1F0101,
-    0xFB1D01,
-    0xDB01,
-    0x1E8701,
-    0x224101,
-    0xFB3A01,
-    0x40101,
-    0x1FC402,
-    0xFE7B01,
-    0x30BA01,
-    0xFBA501,
-    0x30F701,
-    0x1FF301,
-    0x14C01,
-    0x1D16302,
-    0x15701,
-    0x17801,
-    0x1F7901,
-    0x306201,
-    0x1EAE02,
-    0x30B801,
-    0x1F2302,
-    0x1F4D02,
-    0x17C01,
-    0x15601,
-    0x22D02,
-    0xFC9001,
-    0x1E3B01,
-    0x1E6A01,
-    0x1EBE02,
-    0x17301,
-    0x22ED01,
-    0x10E01,
-    0x1E8A01,
-    0x1F6B02,
-    0x6C201,
-    0xFEF901,
-    0x1EB901,
-    0x1EB102,
-    0x1F5702,
-    0x1F0D02,
-    0x305A01,
-    0x1FD702,
-    0x30AE01,
-    0x1E2001,
-    0x17601,
-    0xFB3401,
-    0x1F8E03,
-    0xFB4D01,
-    0xFE8101,
-    0x1E6101,
-    0x1FE302,
-    0x1D201,
-    0x1FA403,
-    0x1EE002,
-    0x1F7A01,
-    0xFB2F01,
-    0x1F5502,
-    0xFEFA01,
-    0x1D602,
-    0xFA01,
-    0xFE8501,
-    0x22F01,
-    0x4DB01,
-    0x1E5F01,
-    0x1E2701,
-    0x39002,
-    0x41901,
-    0x30F801,
-    0x16C01,
-    0x12401,
-    0xC701,
-    0x1F9503,
-    0x228401,
-    0x1E8C01,
-    0xF7502,
-    0x1FC301,
-    0x1F7C01,
-    0xFE7201,
-    0x20C01,
-    0xFB4901,
-    0x1FBB01,
-    0x10F01,
-    0x1FB601,
-    0x1F8902,
-    0x1FF01,
-    0x1F2402,
-    0x1F5302,
-    0x1E1702,
-    0x1D802,
-    0x309E01,
-    0xFE7A01,
-    0x305E01,
-    0x226E01,
-    0x1FE702,
-    0x1EBF02,
-    0x1F3801,
-    0x1E3201,
-    0x1FFB01,
-    0x1E6B01,
-    0x1F9D03,
-    0x222401,
-    0x201701,
-    0xF7601,
-    0x1FCC01,
-    0x1FA002,
-    0x1F7401,
-    0x1F2C02,
-    0x40D01,
-    0x1EEE02,
-    0x15C01,
-    0xE301,
-    0xCC01,
-    0xFB3801,
-    0x333201,
-    0x1E7501,
-    0x334001,
-    0x11501,
-    0x1E3001,
-    0x34402,
-    0x17701,
-    0x1E9201,
-    0x1E2D01,
-    0xCA01,
-    0x1E7D01,
-    0x13001,
-    0x1F6801,
-    0x3AA01,
-    0x309C01,
-    0x1F4001,
-    0x3AC01,
-    0x1EBA01,
-    0x43901,
-    0xFB4C01,
-    0x1E201,
-    0x1109A01,
-    0x1DB02,
-    0x1E4101,
-    0x1FE001,
-    0xCE01,
-    0x21F01,
-    0x4DF01,
-    0x47701,
-    0x1F0302,
-    0x3D401,
-    0x23201,
-    0x1E1101,
-    0x1FD202,
-    0x14401,
-    0x1F4C02,
-    0x1EF301,
-    0x10C01,
-    0x30D001,
-    0x1E4C02,
-    0x1E2C01,
-    0x1F1C02,
-    0xFC5F02,
-    0x1FE101,
-    0x1EC502,
-    0x22801,
-    0x22E101,
-    0x1EC002,
-    0xEA01,
-    0x1E0802,
-    0x95A01,
-    0x1F8303,
-    0x1EE302,
-    0x306901,
-    0x17101,
-    0x1E1602,
-    0x212B01,
-    0x1E6001,
-    0x22EC01,
-    0x219B01,
-    0x1E8F01,
-    0x1F4302,
-    0x4E501,
-    0x1FA303,
-    0x1F3C02,
-    0x16D01,
-    0x30BE01,
-    0x1FA603,
-    0x1E9601,
-    0xFD01,
-    0x1F0602,
-    0x1ED402,
-    0x1D502,
-    0x1A001,
-    0x222601,
-    0x9DF01,
-    0xFB3201,
-    0xFB4701,
-    0x1E6301,
-    0x1DC02,
-    0x1E4701,
-    0x30BC01,
-    0x1D1BB01,
-    0x1FC702,
-    0x1D1BC01,
-    0x309B01,
-    0xF7702,
-    0xFF9E01,
-    0x1EA702,
-    0x95901,
-    0xE501,
-    0x30B601,
-    0xFCF402,
-    0x21601,
-    0x4EA01,
-    0x20501,
-    0x4F001,
-    0xC4801,
-    0x14701,
-    0x1EF801,
-    0x1F5B02,
-    0x1EA001,
-    0xE201,
-    0x1F9303,
-    0x1F5901,
-    0xFB4B01,
-    0x1F3001,
-    0x1E8401,
-    0x62401,
-    0x1F9703,
-    0xDC01,
-    0x1E8B01,
-    0x1EDF02,
-    0x3B002,
-    0x1C401,
-    0x1ED502,
-    0x1F2901,
-    0x1F7D01,
-    0x1EE902,
-    0x30DA01,
-    0xD201,
-    0x1F6A02,
-    0x1EA402,
-    0x1EB01,
-    0xFEF801,
-    0x93101,
-    0x307601,
-    0x1F0A02,
-    0x1F2702,
-    0x1FD601,
-    0x3AB01,
-    0x1E0101,
-    0xFB2C02,
-    0x11C01,
-    0x203E01,
-    0x16001,
-    0x21001,
-    0x1E0B01,
-    0xFE8901,
-    0x1E1C02,
-    0x1E1801,
-    0x1F9102,
-    0x1E9501,
-    0x11901,
-    0x45C01,
-    0x30DC01,
-    0xFB2D02,
-    0x22B02,
-    0x2D901,
-    0x1D001,
-    0xDDA01,
-    0x15D01,
-    0x1E6E01,
-    0x1EA602,
-    0x1E4A01,
-    0x1EDA02,
-    0x306501,
-    0x4F401,
-    0x306001,
-    0x110AB01,
-    0x228501,
-    0x1E8E01,
-    0x227801,
-    0x4F301,
-    0x1F0502,
-    0x1F7101,
-    0x1E5C02,
-    0xAF01,
-    0x1EC302,
-    0xFE8C01,
-    0x1E8501,
-    0x1F9802,
-    0x1EA01,
-    0xFB4801,
-    0xC801,
-    0xFE7901,
-    0x62501,
-    0x16501,
-    0xF101,
-    0x11601,
-    0x1FDF02,
-    0x1FEC01,
-    0x1F3E02,
-    0x331001,
-    0xE701,
-    0x1FB202,
-    0x22601,
-    0x6D301,
-    0x1EAA02,
-    0x1E1B01,
-    0x12301,
-    0x1F7701,
-    0x1FAD03,
-    0x1EDC02,
-    0x11401,
-    0x1F8B03,
-    0x14501,
-    0x1FBC01,
-    0x1E7902,
-    0x95F01,
-    0x1F2801,
-    0xDDD01,
-    0x1FFA01,
-    0x1CD01,
-    0xFE4A01,
-    0xFE7E01,
-    0x1AF01,
-    0x17E01,
-    0x1F8603,
-    0x227401,
-    0x1FB301,
-    0x13401,
-    0xFB4A01,
-    0x1F2502,
-    0x1FD302,
-    0x1F21301,
-    0x20B01,
-    0x38C01,
-    0xFE8701,
-    0x1F3101,
-    0x1F1402,
-    0x1E1F01,
-    0x1FB02,
-    0x1E7E01,
-    0x1E0201,
-    0xFE4B01,
-    0xD901,
-    0x1F0001,
-    0xF7302,
-    0xC501,
-    0x4E401,
-    0xFCF302,
-    0x1F5101,
-    0x1FE601,
-    0x30C001,
-    0x4F801,
-    0x12801,
-    0x1EB202,
-    0x1E0A01,
-    0x1E0C01,
-    0x1E4401,
-    0xEE01,
-    0x30C201,
-    0x16F01,
-    0x1EA502,
-    0x30FA01,
-    0x1EB502,
-    0x1D1BE02,
-    0x22E001,
-    0x22E201,
-    0x1D1C002,
-    0x1EC402,
-    0x1F6702,
-    0x30FE01,
-    0x1F3402,
-    0xFE7001,
-    0x1E2101,
-    0x1F5F02,
-    0x220C01,
-    0x1D902,
-    0x1E0601,
-    0x13B01,
-    0x1ED802,
-    0x1EEB02,
-    0xC201,
-    0x45001,
-    0x1FDD02,
-    0x1E7601,
-    0x1D16402,
-    0x1B001,
-    0x20401,
-    0x11201,
-    0x21301,
-    0x3D301,
-    0x1EC202,
-    0x1EAB02,
-    0x1FAE03,
-    0x1EE01,
-    0x1ED602,
-    0x1E3701,
-    0x309401,
-    0xD401,
-    0x1E5E01,
-    0x1E0D01,
-    0x30D601,
-    0x1ED702,
-    0x1F5001,
-    0x1D401,
-    0x1FFD01,
-    0xFB3C01,
-    0x1E8D01,
-    0x21501,
-    0x3AF01,
-    0x224701,
-    0x1ECA01,
-    0x305801,
-    0x1E7F01,
-    0x22AC01,
-    0x15B01,
-    0x4D601,
-    0x17A01,
-    0x1ED02,
-    0x1E6702,
-    0x1E2801,
-    0x20D01,
-    0x1EBD01,
-    0x1FD01,
-    0xFB2E01,
-    0x1E4501,
-    0x1EF701,
-    0x45E01,
-    0x1F3B02,
-    0x20001,
-    0x1FCD02,
-    0x38502,
-    0x13601,
-    0x20301,
-    0x21201,
-    0x1E9B01,
-    0x1F401,
-    0x1E8001,
-    0x1FC102,
-    0x1F7601,
-    0x3CA01,
-    0x16301,
-    0x1FCB01,
-    0x95C01,
-    0x21101,
-    0x1EF901,
-    0x1E7B02,
-    0x1E901,
-    0x1E1D02,
-    0x1EDE02,
-    0x15F01,
-    0x1F6402,
-    0x10001,
-    0x20F01,
-    0x1E6602,
-    0x40E01,
-    0x38E01,
-    0x1F0801,
-    0x11801,
-    0xFB3101,
-    0x1D702,
-    0x1ED102,
-    0x305201,
-    0x1E2A01,
-    0x227001,
-    0x1F8503,
-    0x1FFE01,
-    0x1EF002,
-    0x4DD01,
-    0x95D01,
-    0x1F6502,
-    0xF401,
-    0x4D701,
-    0x38601,
-    0x2D801,
-    0x1EC801,
-    0x45701,
-    0xFF01,
-    0x22AF01,
-    0x1EBC01,
-    0x11E01,
-    0x45301,
-    0xFE7801,
-    0x21E01,
-    0xB5D01,
-    0x12A01,
-    0xF501,
-    0xD301,
-    0x1E6502,
-    0x21A01,
-    0x1F6E02,
-    0x1FB001,
-    0x62201,
-    0x333B01,
-    0x30D301,
-    0x1EA101,
-    0x226F01,
-    0x1E0E01,
-    0x15E01,
-    0x1FF202,
-    0x21801,
-    0x1F8203,
-    0x20901,
-    0x1FD101,
-    0x2DB01,
-    0xF201,
-    0xF7902,
-    0xA5A01,
-    0x1F0E02,
-    0x1F1801,
-    0x307C01,
-    0xFC5C01,
-    0x2ADC01,
-    0xE801,
-    0x15801,
-    0x1FDB01,
-    0x1F6C02,
-    0x1EB002,
-    0x1E2301,
-    0x1F1502,
-    0x11F01,
-    0xFC6002,
-    0x1FA902,
-    0x1E5501,
-    0x23102,
-    0x1FE01,
-    0x1E3D01,
-    0x21AE01,
-    0xFD3C01,
-    0x38401,
-    0x1EE701,
-    0x13701,
-    0xFB3001,
-    0xEF01,
-    0x1FA703,
-    0x10A01,
-    0x1F2B02,
-    0x1D16002,
-    0xF901,
-    0xFEF501,
-    0x40C01,
-    0x22A02,
-    0xF301,
-    0x12D01,
-    0x1F9A03,
-    0x1E4201,
-    0x1E102,
-    0xA5B01,
-    0x1EAC02,
-    0x1E1502,
-    0x1F9E03,
-    0x1FD801,
-    0x1F4A02,
-    0x20201,
-    0x1E9801,
-    0x1E2401,
-    0x1EE601,
-    0x304E01,
-    0x1E6C01,
-    0xFE8A01,
-    0xFB4001,
-    0x1F2D02,
-    0xFD3D01,
-    0x1FC801,
-    0x1FB801,
-    0x1F3D02,
-    0x1EF501,
-    0x13901,
-    0x1E8101,
-    0x1F9C03,
-    0x10301,
-    0xA5901,
-    0x1F9002,
-    0x1ED902,
-    0x1EF201,
-    0x4E301,
-    0xFEF701,
-    0x1ECD01,
-    0x11A01,
-    0xFB2A01,
-    0x1E301,
-    0x1F6602,
-    0x1FB702,
-    0x1E2501,
-    0x30C701,
-    0x1F8102,
-    0xCF01,
-    0x1EEF02,
-    0x1E9701,
-    0x1F6F02,
-    0x1F2A02,
-    0x10901,
-    0x1E5601,
-    0x1E0001,
-    0xFB4E01,
-    0x1FC601,
-    0xC001,
-    0x220901,
-    0xFE8801,
-    0x1CE01,
-    0xED01,
-    0x15901,
-    0x15A01,
-    0x37A01,
-    0x227501,
-    0xD501,
-    0x4C101,
-    0x1E1901,
-    0x30D101,
-    0x10701,
-    0x1FAC03,
-    0x1EA301,
-    0x1F2E02,
-    0x14D01,
-    0x1F4901,
-    0x1E8801,
-    0x1EB302,
-    0x20701,
-    0x1F7801,
-    0x1F8D03,
-    0xFBA401,
-    0x1F9902,
-    0x38801,
-    0x1F2001,
-    0xFB4101,
-    0x1EC602,
-    0x40001,
-    0x1EB602,
-    0x1E2B01,
-    0x1E3A01,
-    0x1C501,
-    0x16201,
-    0x17D01,
-    0x1E8201,
-    0x1F1B02,
-    0x17001,
-    0x224401,
-    0x23301,
-    0x1E2601,
-    0x1F3302,
-    0x10401,
-    0x30D901,
-    0x30F901,
-    0x1F8A03,
-    0x93401,
-    0x3CD01,
-    0x1FFC01,
-    0x10101,
-    0x1F5402,
-    0xFB4601,
-    0x3AD01,
-    0x1F0402,
-    0x1FF601,
-    0x30B201,
-    0x1F1001,
-    0x1E7301,
-    0x20E01,
-    0x1E0301,
-    0x1F6901,
-    0xFEF601,
-    0x95B01,
-    0x227101,
-    0x22701,
-    0x1E3501,
-    0x34001,
-    0x1F0B02,
-    0x1E701,
-    0x1ED302,
-    0x1F8403,
-    0x1F2F02,
-    0x1E8301,
-    0x1F6001,
-    0x62301,
-    0xFC5D01,
-    0x226001,
-    0x22C02,
-    0x1E3F01,
-    0x1F7501,
-    0x226201,
-    0x1FDA01,
-    0x20601,
-    0xFE7701,
-    0x305601,
-    0x12101,
-    0x1F2602,
-    0x1E9001,
-    0x95E01,
-    0x12F01,
-    0x1F9603,
-    0x1E4901,
-    0x10B01,
-    0x1DF02,
-    0x1D16102,
-    0xFB2B01,
-    0x1E0902,
-    0x11701,
-    0xFF9F01,
-    0x1F7B01,
-    0x1E9901,
-    0x1F9203,
-    0x1FCA01,
-    0xB801,
-    0x1A101,
-    0x1F3901,
-    0xFE7401,
-    0xFC6102,
-    0x1E5B01,
-    0x92901,
-    0xFE8301,
-    0x1FE202,
-    0x305401,
-    0x1CF01,
-    0x2DC01,
-    0xFB01,
-    0x307A01,
-    0xFB3901,
-    0x17501,
-    0x305001,
-    0x1E801,
-    0x1FE901,
-    0x1D301,
-    0x307D01,
-    0x1E2F02,
-    0xFE4C01,
-    0xF8102,
-    0x1FA503,
-    0x1FAB03,
-    0x1EDB02,
-    0x1F4801,
-    0x1EED02,
-    0x1F4402,
-    0x1DA02,
-    0xD101,
-    0x1E6802,
-    0x2DA01,
-    0x30B401,
-    0x1ECF01,
-    0x1E5901,
-    0x1E002,
-    0x1E5701,
-    0x1F0F02,
-    0x17201,
-    0x1FEE02,
-    0x1E5401,
-    0xC901,
-    0xA3601,
-    0x228901,
-    0x1ECC01,
-    0xB401,
-    0x16901,
-    0x1EF601,
-    0x10501,
-    0x1E7C01,
-    0x1F8F03,
-    0x1E3301,
-    0x14F01,
-    0x1EE802,
-    0x1F4202,
-    0x1E3E01,
-    0xFC6302,
-    0x1F501,
-    0x16401,
-    0x4F201,
-    0x1F0202,
-    0x1E0F01,
-    0x1FEA01,
-    0x1F1901,
-    0xFC5B01,
-    0x1D1BD02,
-    0xC101,
-    0x38A01,
-    0x1EE102,
-    0xD601,
-    0x1E7802,
-    0x1F7301,
-    0x1E7A02,
-    0x1EA902,
-    0xFCD901,
-    0x1F9B03,
-    0x1F2202,
-    0x10601,
-    0x38F01,
-    0xF7801,
-    0x1D15F01,
-    0x1F8703,
-    0x1FE501,
-    0x1EE202,
-    0x1F801,
-    0x307901,
-    0xFE8201,
-    0x1ED002,
-    0x4E201,
-    0x13501,
-    0x1109C01,
-    0xFCF202,
-    0x1E6F01,
-    0x21CD01,
-    0x1EB702,
-    0x4EF01,
-    0x1E6201,
-    0x1EDD02,
-    0xFC5E02,
-    0xDD01,
-    0x1F6202,
-    0x1F4B02,
-    0x4E601,
-    0x14801,
-    0x1F3A02,
-    0x1FAF03,
-    0xC401,
-    0x1EEC02,
-    0x1F4101,
-    0x1EC702,
-    0x4DC01,
-    0x16E01,
-    0x1F1A02,
-    0x307301,
-    0x22AE01,
-    0x38901,
-    0x23002,
-    0x13C01,
-    0x1FF901,
-    0x1F0702,
-    0x1EBB01,
-    0x12501,
-    0x1F1202,
-    0x1E2901,
-    0x1E4301,
-    0x10201,
-    0x330401,
-    0x6C001,
-    0x11301,
-    0x1EA201,
-    0x1F3702,
-    0x1FED02,
-    0x4D201,
-    0xFFE301,
-    0x30D401,
-    0x15101,
-    0x307001,
-    0x3AE01,
-    0x1F901,
-    0x1FA102,
-    0x1E9401,
-    0x332101,
-    0xC301,
-    0x17901,
-    0x1DE02,
-    0xFB3E01,
-    0x1E5102,
-    0x4DE01,
-    0x62601,
-    0x3CC01,
-    0x2DD01,
-    0x1F6101,
-    0x15501,
-    0x3CE01,
-    0x30C901,
-    0x1E7001,
-    0x227901,
-    0x30C501,
-    0x12001,
-    0xFE8601,
-    0x1E4F02,
-    0x13A01,
-    0x1E7401,
-    0x1F1302,
-    0x1D1BF02,
-    0x11B01,
-    0x9DD01,
-    0x22EB01,
-    0x1E6D01,
-    0x1E5202,
-    0x1ED202,
-    0x1F3602,
-    0x1EAD02,
-    0x1FE401,
-    0xB5C01,
-    0x1FBA01,
-    0x1E4E02,
-    0x16801,
-    0xFE7C01,
-    0x1FAA03,
-    0x1E0401,
-    0x20101,
-    0x1EF01,
-    0x12E01,
-    0x1F0C02,
-    0x1E1402,
-    0xFE7601,
-    0x1E3802,
-    0xFB3B01,
-    0xCD01,
-    0x226D01,
-    0x4D101,
-    0x1E8601,
-    0x45101,
-    0x17B01,
-    0x47601,
-    0x4EC01,
-    0x21401,
-    0x1EF401,
-    0x16A01,
-    0x30DD01,
-    0xFE8B01,
-    0xFBB101,
-    0x219A01,
-    0xFB4301,
-];
-
-
diff --git a/vendor/unicode-normalization/src/test.rs b/vendor/unicode-normalization/src/test.rs
deleted file mode 100644
index 4c371497..00000000
--- a/vendor/unicode-normalization/src/test.rs
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-use super::char::is_combining_mark;
-use super::UnicodeNormalization;
-use core::char;
-
-#[cfg(not(feature = "std"))]
-use crate::no_std_prelude::*;
-
-#[test]
-fn test_nfd() {
-    macro_rules! t {
-        ($input: expr, $expected: expr) => {
-            assert_eq!($input.nfd().to_string(), $expected);
-            // A dummy iterator that is not std::str::Chars directly;
-            // note that `id_func` is used to ensure `Clone` implementation
-            assert_eq!(
-                $input.chars().map(|c| c).nfd().collect::<String>(),
-                $expected
-            );
-        };
-    }
-    t!("abc", "abc");
-    t!("\u{1e0b}\u{1c4}", "d\u{307}\u{1c4}");
-    t!("\u{2026}", "\u{2026}");
-    t!("\u{2126}", "\u{3a9}");
-    t!("\u{1e0b}\u{323}", "d\u{323}\u{307}");
-    t!("\u{1e0d}\u{307}", "d\u{323}\u{307}");
-    t!("a\u{301}", "a\u{301}");
-    t!("\u{301}a", "\u{301}a");
-    t!("\u{d4db}", "\u{1111}\u{1171}\u{11b6}");
-    t!("\u{ac1c}", "\u{1100}\u{1162}");
-}
-
-#[test]
-fn test_nfkd() {
-    macro_rules! t {
-        ($input: expr, $expected: expr) => {
-            assert_eq!($input.nfkd().to_string(), $expected);
-        };
-    }
-    t!("abc", "abc");
-    t!("\u{1e0b}\u{1c4}", "d\u{307}DZ\u{30c}");
-    t!("\u{2026}", "...");
-    t!("\u{2126}", "\u{3a9}");
-    t!("\u{1e0b}\u{323}", "d\u{323}\u{307}");
-    t!("\u{1e0d}\u{307}", "d\u{323}\u{307}");
-    t!("a\u{301}", "a\u{301}");
-    t!("\u{301}a", "\u{301}a");
-    t!("\u{d4db}", "\u{1111}\u{1171}\u{11b6}");
-    t!("\u{ac1c}", "\u{1100}\u{1162}");
-}
-
-#[test]
-fn test_nfc() {
-    macro_rules! t {
-        ($input: expr, $expected: expr) => {
-            assert_eq!($input.nfc().to_string(), $expected);
-        };
-    }
-    t!("abc", "abc");
-    t!("\u{1e0b}\u{1c4}", "\u{1e0b}\u{1c4}");
-    t!("\u{2026}", "\u{2026}");
-    t!("\u{2126}", "\u{3a9}");
-    t!("\u{1e0b}\u{323}", "\u{1e0d}\u{307}");
-    t!("\u{1e0d}\u{307}", "\u{1e0d}\u{307}");
-    t!("a\u{301}", "\u{e1}");
-    t!("\u{301}a", "\u{301}a");
-    t!("\u{d4db}", "\u{d4db}");
-    t!("\u{ac1c}", "\u{ac1c}");
-    t!(
-        "a\u{300}\u{305}\u{315}\u{5ae}b",
-        "\u{e0}\u{5ae}\u{305}\u{315}b"
-    );
-}
-
-#[test]
-fn test_nfkc() {
-    macro_rules! t {
-        ($input: expr, $expected: expr) => {
-            assert_eq!($input.nfkc().to_string(), $expected);
-        };
-    }
-    t!("abc", "abc");
-    t!("\u{1e0b}\u{1c4}", "\u{1e0b}D\u{17d}");
-    t!("\u{2026}", "...");
-    t!("\u{2126}", "\u{3a9}");
-    t!("\u{1e0b}\u{323}", "\u{1e0d}\u{307}");
-    t!("\u{1e0d}\u{307}", "\u{1e0d}\u{307}");
-    t!("a\u{301}", "\u{e1}");
-    t!("\u{301}a", "\u{301}a");
-    t!("\u{d4db}", "\u{d4db}");
-    t!("\u{ac1c}", "\u{ac1c}");
-    t!(
-        "a\u{300}\u{305}\u{315}\u{5ae}b",
-        "\u{e0}\u{5ae}\u{305}\u{315}b"
-    );
-}
-
-#[test]
-fn test_normalize_char() {
-    assert_eq!('\u{2126}'.nfd().to_string(), "\u{3a9}")
-}
-
-#[test]
-fn test_is_combining_mark_ascii() {
-    for cp in 0..0x7f {
-        assert!(!is_combining_mark(char::from_u32(cp).unwrap()));
-    }
-}
-
-#[test]
-fn test_is_combining_mark_misc() {
-    // https://github.com/unicode-rs/unicode-normalization/issues/16
-    // U+11C3A BHAIKSUKI VOWEL SIGN O
-    // Category: Mark, Nonspacing [Mn]
-    assert!(is_combining_mark('\u{11C3A}'));
-
-    // U+11C3F BHAIKSUKI SIGN VIRAMA
-    // Category: Mark, Nonspacing [Mn]
-    assert!(is_combining_mark('\u{11C3F}'));
-}
diff --git a/vendor/url/Cargo.toml b/vendor/url/Cargo.toml
index 9e648ac5..284179a5 100644
--- a/vendor/url/Cargo.toml
+++ b/vendor/url/Cargo.toml
@@ -57,7 +57,7 @@ harness = false
 version = "1.2.1"
 
 [dependencies.idna]
-version = "0.5.0"
+version = "1.1.0"
 
 [dependencies.percent-encoding]
 version = "2.3.1"
diff --git a/vendor/utf8_iter/.cargo-checksum.json b/vendor/utf8_iter/.cargo-checksum.json
new file mode 100644
index 00000000..096c0205
--- /dev/null
+++ b/vendor/utf8_iter/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"COPYRIGHT":"c30152c94a6d75e021adbc52b3a52470366a46edb917e17deae3259251af244c","Cargo.toml":"df82c17a094e56a7c66d9aba1f68a1c3647518694c25326f09c5634a9012f21e","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"3fa4ca83dcc9237839b1bdeb2e6d16bdfb5ec0c5ce42b24694d8bbf0dcbef72c","README.md":"806ed7e6fad84cb440a763c03369af8a2dd01c60712bb19c635448c2a9d58b7e","src/indices.rs":"b01fbaac3c9a09be130cac57066a980362a1290fac2fe0f27f6238818235f94c","src/lib.rs":"5ac63cc86ea5ff25ac5b2988f172efa9f338ea1214874f16e568c965b210e427","src/report.rs":"4b228198912dbc65733f6a9d42051440148833bfb4ae31a10bfeafe9ed45b7ef"},"package":"b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"}
\ No newline at end of file
diff --git a/vendor/utf8_iter/COPYRIGHT b/vendor/utf8_iter/COPYRIGHT
new file mode 100644
index 00000000..b5e94574
--- /dev/null
+++ b/vendor/utf8_iter/COPYRIGHT
@@ -0,0 +1,42 @@
+Copyright Mozilla Foundation
+
+Licensed under the Apache License (Version 2.0), or the MIT license,
+(the "Licenses") at your option. You may not use this file except in
+compliance with one of the Licenses. You may obtain copies of the
+Licenses at:
+
+   https://www.apache.org/licenses/LICENSE-2.0
+   https://opensource.org/licenses/MIT
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the Licenses is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the Licenses for the specific language governing permissions and
+limitations under the Licenses.
+
+--
+
+Test code is dedicated to the Public Domain when so designated (see
+the individual files for PD/CC0-dedicated sections).
+
+--
+
+The implementation for Utf8CharIndices was adapted from the
+CharIndices implementation of the Rust standard library at revision
+ab32548539ec38a939c1b58599249f3b54130026
+(https://github.com/rust-lang/rust/blob/ab32548539ec38a939c1b58599249f3b54130026/library/core/src/str/iter.rs).
+
+Excerpt from https://github.com/rust-lang/rust/blob/ab32548539ec38a939c1b58599249f3b54130026/COPYRIGHT ,
+which refers to
+https://github.com/rust-lang/rust/blob/ab32548539ec38a939c1b58599249f3b54130026/LICENSE-APACHE
+and
+https://github.com/rust-lang/rust/blob/ab32548539ec38a939c1b58599249f3b54130026/LICENSE-MIT
+:
+
+For full authorship information, see the version control history or
+https://thanks.rust-lang.org
+
+Except as otherwise noted (below and/or in individual files), Rust is
+licensed under the Apache License, Version 2.0 <LICENSE-APACHE> or
+<http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+<LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
diff --git a/vendor/utf8_iter/Cargo.toml b/vendor/utf8_iter/Cargo.toml
new file mode 100644
index 00000000..d1008fdb
--- /dev/null
+++ b/vendor/utf8_iter/Cargo.toml
@@ -0,0 +1,33 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+name = "utf8_iter"
+version = "1.0.4"
+authors = ["Henri Sivonen <hsivonen@hsivonen.fi>"]
+description = "Iterator by char over potentially-invalid UTF-8 in &[u8]"
+homepage = "https://docs.rs/utf8_iter/"
+documentation = "https://docs.rs/utf8_iter/"
+readme = "README.md"
+keywords = [
+    "encoding",
+    "UTF-8",
+    "unicode",
+    "iterator",
+]
+categories = [
+    "text-processing",
+    "encoding",
+    "internationalization",
+]
+license = "Apache-2.0 OR MIT"
+repository = "https://github.com/hsivonen/utf8_iter"
diff --git a/vendor/tinyvec/LICENSE-APACHE.md b/vendor/utf8_iter/LICENSE-APACHE
similarity index 100%
rename from vendor/tinyvec/LICENSE-APACHE.md
rename to vendor/utf8_iter/LICENSE-APACHE
diff --git a/vendor/unicode-normalization/LICENSE-MIT b/vendor/utf8_iter/LICENSE-MIT
similarity index 95%
rename from vendor/unicode-normalization/LICENSE-MIT
rename to vendor/utf8_iter/LICENSE-MIT
index e69282e3..3317c82e 100644
--- a/vendor/unicode-normalization/LICENSE-MIT
+++ b/vendor/utf8_iter/LICENSE-MIT
@@ -1,4 +1,4 @@
-Copyright (c) 2015 The Rust Project Developers
+Copyright Mozilla Foundation
 
 Permission is hereby granted, free of charge, to any
 person obtaining a copy of this software and associated
diff --git a/vendor/utf8_iter/README.md b/vendor/utf8_iter/README.md
new file mode 100644
index 00000000..08334d4d
--- /dev/null
+++ b/vendor/utf8_iter/README.md
@@ -0,0 +1,56 @@
+# utf8_iter
+
+[![crates.io](https://img.shields.io/crates/v/utf8_iter.svg)](https://crates.io/crates/utf8_iter)
+[![docs.rs](https://docs.rs/utf8_iter/badge.svg)](https://docs.rs/utf8_iter/)
+
+utf8_iter provides iteration by `char` over potentially-invalid UTF-8 `&[u8]`
+such that UTF-8 errors are handled according to the WHATWG Encoding Standard.
+
+Iteration by `Result<char,Utf8CharsError>` is provided as an alternative that
+distinguishes UTF-8 errors from U+FFFD appearing in the input.
+
+An implementation of `char_indices()` analogous to the same-name method on
+`str` is also provided.
+
+Key parts of the code are copypaste from the UTF-8 to UTF-16 conversion code
+in `encoding_rs`, which was optimized for speed in the case of valid input.
+The implementation here uses the structure that was found to be fast in the
+`encoding_rs` context but the structure hasn't been benchmarked in this
+context.
+
+This is a `no_std` crate.
+
+## Licensing
+
+TL;DR: `Apache-2.0 OR MIT`
+
+Please see the file named
+[COPYRIGHT](https://github.com/hsivonen/utf8_iter/blob/master/COPYRIGHT).
+
+## Documentation
+
+Generated [API documentation](https://docs.rs/utf8_iter/) is available
+online.
+
+## Release Notes
+
+### 1.0.4
+
+* Add iteration by `Result<char,Utf8CharsError>`.
+
+### 1.0.3
+
+* Fix an error in documentation.
+
+### 1.0.2
+
+* `char_indices()` implementation.
+
+### 1.0.1
+
+* `as_slice()` method.
+* Implement `DoubleEndedIterator`
+
+### 1.0.0
+
+The initial release.
diff --git a/vendor/utf8_iter/src/indices.rs b/vendor/utf8_iter/src/indices.rs
new file mode 100644
index 00000000..1646f8b8
--- /dev/null
+++ b/vendor/utf8_iter/src/indices.rs
@@ -0,0 +1,120 @@
+// The code in this file was adapted from the CharIndices implementation of
+// the Rust standard library at revision ab32548539ec38a939c1b58599249f3b54130026
+// (https://github.com/rust-lang/rust/blob/ab32548539ec38a939c1b58599249f3b54130026/library/core/src/str/iter.rs).
+//
+// Excerpt from https://github.com/rust-lang/rust/blob/ab32548539ec38a939c1b58599249f3b54130026/COPYRIGHT ,
+// which refers to
+// https://github.com/rust-lang/rust/blob/ab32548539ec38a939c1b58599249f3b54130026/LICENSE-APACHE
+// and
+// https://github.com/rust-lang/rust/blob/ab32548539ec38a939c1b58599249f3b54130026/LICENSE-MIT
+// :
+//
+// For full authorship information, see the version control history or
+// https://thanks.rust-lang.org
+//
+// Except as otherwise noted (below and/or in individual files), Rust is
+// licensed under the Apache License, Version 2.0 <LICENSE-APACHE> or
+// <http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT> or <http://opensource.org/licenses/MIT>, at your option.
+
+use super::Utf8Chars;
+use core::iter::FusedIterator;
+
+/// An iterator over the [`char`]s  and their positions.
+#[derive(Clone, Debug)]
+#[must_use = "iterators are lazy and do nothing unless consumed"]
+pub struct Utf8CharIndices<'a> {
+    front_offset: usize,
+    iter: Utf8Chars<'a>,
+}
+
+impl<'a> Iterator for Utf8CharIndices<'a> {
+    type Item = (usize, char);
+
+    #[inline]
+    fn next(&mut self) -> Option<(usize, char)> {
+        let pre_len = self.as_slice().len();
+        match self.iter.next() {
+            None => None,
+            Some(ch) => {
+                let index = self.front_offset;
+                let len = self.as_slice().len();
+                self.front_offset += pre_len - len;
+                Some((index, ch))
+            }
+        }
+    }
+
+    #[inline]
+    fn count(self) -> usize {
+        self.iter.count()
+    }
+
+    #[inline]
+    fn size_hint(&self) -> (usize, Option<usize>) {
+        self.iter.size_hint()
+    }
+
+    #[inline]
+    fn last(mut self) -> Option<(usize, char)> {
+        // No need to go through the entire string.
+        self.next_back()
+    }
+}
+
+impl<'a> DoubleEndedIterator for Utf8CharIndices<'a> {
+    #[inline]
+    fn next_back(&mut self) -> Option<(usize, char)> {
+        self.iter.next_back().map(|ch| {
+            let index = self.front_offset + self.as_slice().len();
+            (index, ch)
+        })
+    }
+}
+
+impl FusedIterator for Utf8CharIndices<'_> {}
+
+impl<'a> Utf8CharIndices<'a> {
+    #[inline(always)]
+    /// Creates the iterator from a byte slice.
+    pub fn new(bytes: &'a [u8]) -> Self {
+        Utf8CharIndices::<'a> {
+            front_offset: 0,
+            iter: Utf8Chars::new(bytes),
+        }
+    }
+
+    /// Views the underlying data as a subslice of the original data.
+    ///
+    /// This has the same lifetime as the original slice, and so the
+    /// iterator can continue to be used while this exists.
+    #[must_use]
+    #[inline]
+    pub fn as_slice(&self) -> &'a [u8] {
+        self.iter.as_slice()
+    }
+
+    /// Returns the byte position of the next character, or the length
+    /// of the underlying string if there are no more characters.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use utf8_iter::Utf8CharsEx;
+    /// let mut chars = "a楽".as_bytes().char_indices();
+    ///
+    /// assert_eq!(chars.offset(), 0);
+    /// assert_eq!(chars.next(), Some((0, 'a')));
+    ///
+    /// assert_eq!(chars.offset(), 1);
+    /// assert_eq!(chars.next(), Some((1, '楽')));
+    ///
+    /// assert_eq!(chars.offset(), 4);
+    /// assert_eq!(chars.next(), None);
+    /// ```
+    #[inline]
+    #[must_use]
+    pub fn offset(&self) -> usize {
+        self.front_offset
+    }
+}
diff --git a/vendor/utf8_iter/src/lib.rs b/vendor/utf8_iter/src/lib.rs
new file mode 100644
index 00000000..8edb094b
--- /dev/null
+++ b/vendor/utf8_iter/src/lib.rs
@@ -0,0 +1,282 @@
+// Copyright Mozilla Foundation
+//
+// Licensed under the Apache License (Version 2.0), or the MIT license,
+// (the "Licenses") at your option. You may not use this file except in
+// compliance with one of the Licenses. You may obtain copies of the
+// Licenses at:
+//
+//    https://www.apache.org/licenses/LICENSE-2.0
+//    https://opensource.org/licenses/MIT
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the Licenses is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the Licenses for the specific language governing permissions and
+// limitations under the Licenses.
+
+#![no_std]
+
+//! Provides iteration by `char` over `&[u8]` containing potentially-invalid
+//! UTF-8 such that errors are handled according to the [WHATWG Encoding
+//! Standard](https://encoding.spec.whatwg.org/#utf-8-decoder) (i.e. the same
+//! way as in `String::from_utf8_lossy`).
+//!
+//! The trait `Utf8CharsEx` provides the convenience method `chars()` on
+//! byte slices themselves instead of having to use the more verbose
+//! `Utf8Chars::new(slice)`.
+//!
+//! ```rust
+//! use utf8_iter::Utf8CharsEx;
+//! let data = b"\xFF\xC2\xE2\xE2\x98\xF0\xF0\x9F\xF0\x9F\x92\xE2\x98\x83";
+//! let from_iter: String = data.chars().collect();
+//! let from_std = String::from_utf8_lossy(data);
+//! assert_eq!(from_iter, from_std);
+//! ```
+
+mod indices;
+mod report;
+
+pub use crate::indices::Utf8CharIndices;
+pub use crate::report::ErrorReportingUtf8Chars;
+pub use crate::report::Utf8CharsError;
+use core::iter::FusedIterator;
+
+#[repr(align(64))] // Align to cache lines
+struct Utf8Data {
+    pub table: [u8; 384],
+}
+
+// This is generated code copied and pasted from utf_8.rs of encoding_rs.
+// Please don't edit by hand but instead regenerate as instructed in that
+// file.
+
+static UTF8_DATA: Utf8Data = Utf8Data {
+    table: [
+        252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 252, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 148, 148, 148,
+        148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 164, 164, 164, 164, 164,
+        164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
+        164, 164, 164, 164, 164, 164, 164, 164, 164, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
+        252, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+        4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+        4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+        8, 8, 8, 8, 8, 8, 8, 16, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 32, 8, 8, 64, 8, 8, 8, 128, 4,
+        4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+    ],
+};
+
+// End manually copypasted generated code.
+
+#[inline(always)]
+fn in_inclusive_range8(i: u8, start: u8, end: u8) -> bool {
+    i.wrapping_sub(start) <= (end - start)
+}
+
+/// Iterator by `char` over `&[u8]` that contains
+/// potentially-invalid UTF-8. See the crate documentation.
+#[derive(Debug, Clone)]
+pub struct Utf8Chars<'a> {
+    remaining: &'a [u8],
+}
+
+impl<'a> Utf8Chars<'a> {
+    #[inline(always)]
+    /// Creates the iterator from a byte slice.
+    pub fn new(bytes: &'a [u8]) -> Self {
+        Utf8Chars::<'a> { remaining: bytes }
+    }
+
+    /// Views the current remaining data in the iterator as a subslice
+    /// of the original slice.
+    #[inline(always)]
+    pub fn as_slice(&self) -> &'a [u8] {
+        self.remaining
+    }
+
+    #[inline(never)]
+    fn next_fallback(&mut self) -> Option<char> {
+        if self.remaining.is_empty() {
+            return None;
+        }
+        let first = self.remaining[0];
+        if first < 0x80 {
+            self.remaining = &self.remaining[1..];
+            return Some(char::from(first));
+        }
+        if !in_inclusive_range8(first, 0xC2, 0xF4) || self.remaining.len() == 1 {
+            self.remaining = &self.remaining[1..];
+            return Some('\u{FFFD}');
+        }
+        let second = self.remaining[1];
+        let (lower_bound, upper_bound) = match first {
+            0xE0 => (0xA0, 0xBF),
+            0xED => (0x80, 0x9F),
+            0xF0 => (0x90, 0xBF),
+            0xF4 => (0x80, 0x8F),
+            _ => (0x80, 0xBF),
+        };
+        if !in_inclusive_range8(second, lower_bound, upper_bound) {
+            self.remaining = &self.remaining[1..];
+            return Some('\u{FFFD}');
+        }
+        if first < 0xE0 {
+            self.remaining = &self.remaining[2..];
+            let point = ((u32::from(first) & 0x1F) << 6) | (u32::from(second) & 0x3F);
+            return Some(unsafe { char::from_u32_unchecked(point) });
+        }
+        if self.remaining.len() == 2 {
+            self.remaining = &self.remaining[2..];
+            return Some('\u{FFFD}');
+        }
+        let third = self.remaining[2];
+        if !in_inclusive_range8(third, 0x80, 0xBF) {
+            self.remaining = &self.remaining[2..];
+            return Some('\u{FFFD}');
+        }
+        if first < 0xF0 {
+            self.remaining = &self.remaining[3..];
+            let point = ((u32::from(first) & 0xF) << 12)
+                | ((u32::from(second) & 0x3F) << 6)
+                | (u32::from(third) & 0x3F);
+            return Some(unsafe { char::from_u32_unchecked(point) });
+        }
+        // At this point, we have a valid 3-byte prefix of a
+        // four-byte sequence that has to be incomplete, because
+        // otherwise `next()` would have succeeded.
+        self.remaining = &self.remaining[3..];
+        Some('\u{FFFD}')
+    }
+}
+
+impl<'a> Iterator for Utf8Chars<'a> {
+    type Item = char;
+
+    #[inline]
+    fn next(&mut self) -> Option<char> {
+        // Not delegating directly to `ErrorReportingUtf8Chars` to avoid
+        // an extra branch in the common case based on a cursory inspection
+        // of generated code in a similar case. Be sure to inspect the
+        // generated code as inlined into an actual usage site carefully
+        // if attempting to consolidate the source code here.
+
+        // This loop is only broken out of as goto forward
+        #[allow(clippy::never_loop)]
+        loop {
+            if self.remaining.len() < 4 {
+                break;
+            }
+            let first = self.remaining[0];
+            if first < 0x80 {
+                self.remaining = &self.remaining[1..];
+                return Some(char::from(first));
+            }
+            let second = self.remaining[1];
+            if in_inclusive_range8(first, 0xC2, 0xDF) {
+                if !in_inclusive_range8(second, 0x80, 0xBF) {
+                    break;
+                }
+                let point = ((u32::from(first) & 0x1F) << 6) | (u32::from(second) & 0x3F);
+                self.remaining = &self.remaining[2..];
+                return Some(unsafe { char::from_u32_unchecked(point) });
+            }
+            // This table-based formulation was benchmark-based in encoding_rs,
+            // but it hasn't been re-benchmarked in this iterator context.
+            let third = self.remaining[2];
+            if first < 0xF0 {
+                if ((UTF8_DATA.table[usize::from(second)]
+                    & UTF8_DATA.table[usize::from(first) + 0x80])
+                    | (third >> 6))
+                    != 2
+                {
+                    break;
+                }
+                let point = ((u32::from(first) & 0xF) << 12)
+                    | ((u32::from(second) & 0x3F) << 6)
+                    | (u32::from(third) & 0x3F);
+                self.remaining = &self.remaining[3..];
+                return Some(unsafe { char::from_u32_unchecked(point) });
+            }
+            let fourth = self.remaining[3];
+            if (u16::from(
+                UTF8_DATA.table[usize::from(second)] & UTF8_DATA.table[usize::from(first) + 0x80],
+            ) | u16::from(third >> 6)
+                | (u16::from(fourth & 0xC0) << 2))
+                != 0x202
+            {
+                break;
+            }
+            let point = ((u32::from(first) & 0x7) << 18)
+                | ((u32::from(second) & 0x3F) << 12)
+                | ((u32::from(third) & 0x3F) << 6)
+                | (u32::from(fourth) & 0x3F);
+            self.remaining = &self.remaining[4..];
+            return Some(unsafe { char::from_u32_unchecked(point) });
+        }
+        self.next_fallback()
+    }
+}
+
+impl<'a> DoubleEndedIterator for Utf8Chars<'a> {
+    #[inline]
+    fn next_back(&mut self) -> Option<char> {
+        if self.remaining.is_empty() {
+            return None;
+        }
+        let mut attempt = 1;
+        for b in self.remaining.iter().rev() {
+            if b & 0xC0 != 0x80 {
+                let (head, tail) = self.remaining.split_at(self.remaining.len() - attempt);
+                let mut inner = Utf8Chars::new(tail);
+                let candidate = inner.next();
+                if inner.as_slice().is_empty() {
+                    self.remaining = head;
+                    return candidate;
+                }
+                break;
+            }
+            if attempt == 4 {
+                break;
+            }
+            attempt += 1;
+        }
+
+        self.remaining = &self.remaining[..self.remaining.len() - 1];
+        Some('\u{FFFD}')
+    }
+}
+
+impl FusedIterator for Utf8Chars<'_> {}
+
+/// Convenience trait that adds `chars()` and `char_indices()` methods
+/// similar to the ones on string slices to byte slices.
+pub trait Utf8CharsEx {
+    fn chars(&self) -> Utf8Chars<'_>;
+    fn char_indices(&self) -> Utf8CharIndices<'_>;
+}
+
+impl Utf8CharsEx for [u8] {
+    /// Convenience method for creating an UTF-8 iterator
+    /// for the slice.
+    #[inline]
+    fn chars(&self) -> Utf8Chars<'_> {
+        Utf8Chars::new(self)
+    }
+    /// Convenience method for creating a byte index and
+    /// UTF-8 iterator for the slice.
+    #[inline]
+    fn char_indices(&self) -> Utf8CharIndices<'_> {
+        Utf8CharIndices::new(self)
+    }
+}
+
+// No manually-written tests for forward-iteration, because the code passed multiple
+// days of fuzzing comparing with known-good behavior.
diff --git a/vendor/utf8_iter/src/report.rs b/vendor/utf8_iter/src/report.rs
new file mode 100644
index 00000000..6f0c44cb
--- /dev/null
+++ b/vendor/utf8_iter/src/report.rs
@@ -0,0 +1,234 @@
+// Copyright Mozilla Foundation
+//
+// Licensed under the Apache License (Version 2.0), or the MIT license,
+// (the "Licenses") at your option. You may not use this file except in
+// compliance with one of the Licenses. You may obtain copies of the
+// Licenses at:
+//
+//    https://www.apache.org/licenses/LICENSE-2.0
+//    https://opensource.org/licenses/MIT
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the Licenses is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the Licenses for the specific language governing permissions and
+// limitations under the Licenses.
+
+use crate::in_inclusive_range8;
+use crate::UTF8_DATA;
+use core::fmt::Formatter;
+use core::iter::FusedIterator;
+
+/// A type for signaling UTF-8 errors.
+///
+/// Note: `core::error::Error` is not implemented due to implementing it
+/// being an [unstable feature][1] at the time of writing.
+///
+/// [1]: https://github.com/rust-lang/rust/issues/103765
+#[derive(Debug, PartialEq)]
+#[non_exhaustive]
+pub struct Utf8CharsError;
+
+impl core::fmt::Display for Utf8CharsError {
+    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), core::fmt::Error> {
+        write!(f, "byte sequence not well-formed UTF-8")
+    }
+}
+
+/// Iterator by `Result<char,Utf8CharsError>` over `&[u8]` that contains
+/// potentially-invalid UTF-8. There is exactly one `Utf8CharsError` per
+/// each error as defined by the WHATWG Encoding Standard.
+///
+/// ```
+/// let s = b"a\xFFb\xFF\x80c\xF0\x9F\xA4\xA6\xF0\x9F\xA4\xF0\x9F\xF0d";
+/// let plain = utf8_iter::Utf8Chars::new(s);
+/// let reporting = utf8_iter::ErrorReportingUtf8Chars::new(s);
+/// assert!(plain.eq(reporting.map(|r| r.unwrap_or('\u{FFFD}'))));
+/// ```
+#[derive(Debug, Clone)]
+pub struct ErrorReportingUtf8Chars<'a> {
+    remaining: &'a [u8],
+}
+
+impl<'a> ErrorReportingUtf8Chars<'a> {
+    #[inline(always)]
+    /// Creates the iterator from a byte slice.
+    pub fn new(bytes: &'a [u8]) -> Self {
+        ErrorReportingUtf8Chars::<'a> { remaining: bytes }
+    }
+
+    /// Views the current remaining data in the iterator as a subslice
+    /// of the original slice.
+    #[inline(always)]
+    pub fn as_slice(&self) -> &'a [u8] {
+        self.remaining
+    }
+
+    #[inline(never)]
+    fn next_fallback(&mut self) -> Option<Result<char, Utf8CharsError>> {
+        if self.remaining.is_empty() {
+            return None;
+        }
+        let first = self.remaining[0];
+        if first < 0x80 {
+            self.remaining = &self.remaining[1..];
+            return Some(Ok(char::from(first)));
+        }
+        if !in_inclusive_range8(first, 0xC2, 0xF4) || self.remaining.len() == 1 {
+            self.remaining = &self.remaining[1..];
+            return Some(Err(Utf8CharsError));
+        }
+        let second = self.remaining[1];
+        let (lower_bound, upper_bound) = match first {
+            0xE0 => (0xA0, 0xBF),
+            0xED => (0x80, 0x9F),
+            0xF0 => (0x90, 0xBF),
+            0xF4 => (0x80, 0x8F),
+            _ => (0x80, 0xBF),
+        };
+        if !in_inclusive_range8(second, lower_bound, upper_bound) {
+            self.remaining = &self.remaining[1..];
+            return Some(Err(Utf8CharsError));
+        }
+        if first < 0xE0 {
+            self.remaining = &self.remaining[2..];
+            let point = ((u32::from(first) & 0x1F) << 6) | (u32::from(second) & 0x3F);
+            return Some(Ok(unsafe { char::from_u32_unchecked(point) }));
+        }
+        if self.remaining.len() == 2 {
+            self.remaining = &self.remaining[2..];
+            return Some(Err(Utf8CharsError));
+        }
+        let third = self.remaining[2];
+        if !in_inclusive_range8(third, 0x80, 0xBF) {
+            self.remaining = &self.remaining[2..];
+            return Some(Err(Utf8CharsError));
+        }
+        if first < 0xF0 {
+            self.remaining = &self.remaining[3..];
+            let point = ((u32::from(first) & 0xF) << 12)
+                | ((u32::from(second) & 0x3F) << 6)
+                | (u32::from(third) & 0x3F);
+            return Some(Ok(unsafe { char::from_u32_unchecked(point) }));
+        }
+        // At this point, we have a valid 3-byte prefix of a
+        // four-byte sequence that has to be incomplete, because
+        // otherwise `next()` would have succeeded.
+        self.remaining = &self.remaining[3..];
+        Some(Err(Utf8CharsError))
+    }
+}
+
+impl<'a> Iterator for ErrorReportingUtf8Chars<'a> {
+    type Item = Result<char, Utf8CharsError>;
+
+    #[inline]
+    fn next(&mut self) -> Option<Result<char, Utf8CharsError>> {
+        // This loop is only broken out of as goto forward
+        #[allow(clippy::never_loop)]
+        loop {
+            if self.remaining.len() < 4 {
+                break;
+            }
+            let first = self.remaining[0];
+            if first < 0x80 {
+                self.remaining = &self.remaining[1..];
+                return Some(Ok(char::from(first)));
+            }
+            let second = self.remaining[1];
+            if in_inclusive_range8(first, 0xC2, 0xDF) {
+                if !in_inclusive_range8(second, 0x80, 0xBF) {
+                    break;
+                }
+                let point = ((u32::from(first) & 0x1F) << 6) | (u32::from(second) & 0x3F);
+                self.remaining = &self.remaining[2..];
+                return Some(Ok(unsafe { char::from_u32_unchecked(point) }));
+            }
+            // This table-based formulation was benchmark-based in encoding_rs,
+            // but it hasn't been re-benchmarked in this iterator context.
+            let third = self.remaining[2];
+            if first < 0xF0 {
+                if ((UTF8_DATA.table[usize::from(second)]
+                    & UTF8_DATA.table[usize::from(first) + 0x80])
+                    | (third >> 6))
+                    != 2
+                {
+                    break;
+                }
+                let point = ((u32::from(first) & 0xF) << 12)
+                    | ((u32::from(second) & 0x3F) << 6)
+                    | (u32::from(third) & 0x3F);
+                self.remaining = &self.remaining[3..];
+                return Some(Ok(unsafe { char::from_u32_unchecked(point) }));
+            }
+            let fourth = self.remaining[3];
+            if (u16::from(
+                UTF8_DATA.table[usize::from(second)] & UTF8_DATA.table[usize::from(first) + 0x80],
+            ) | u16::from(third >> 6)
+                | (u16::from(fourth & 0xC0) << 2))
+                != 0x202
+            {
+                break;
+            }
+            let point = ((u32::from(first) & 0x7) << 18)
+                | ((u32::from(second) & 0x3F) << 12)
+                | ((u32::from(third) & 0x3F) << 6)
+                | (u32::from(fourth) & 0x3F);
+            self.remaining = &self.remaining[4..];
+            return Some(Ok(unsafe { char::from_u32_unchecked(point) }));
+        }
+        self.next_fallback()
+    }
+}
+
+impl<'a> DoubleEndedIterator for ErrorReportingUtf8Chars<'a> {
+    #[inline]
+    fn next_back(&mut self) -> Option<Result<char, Utf8CharsError>> {
+        if self.remaining.is_empty() {
+            return None;
+        }
+        let mut attempt = 1;
+        for b in self.remaining.iter().rev() {
+            if b & 0xC0 != 0x80 {
+                let (head, tail) = self.remaining.split_at(self.remaining.len() - attempt);
+                let mut inner = ErrorReportingUtf8Chars::new(tail);
+                let candidate = inner.next();
+                if inner.as_slice().is_empty() {
+                    self.remaining = head;
+                    return candidate;
+                }
+                break;
+            }
+            if attempt == 4 {
+                break;
+            }
+            attempt += 1;
+        }
+
+        self.remaining = &self.remaining[..self.remaining.len() - 1];
+        Some(Err(Utf8CharsError))
+    }
+}
+
+impl FusedIterator for ErrorReportingUtf8Chars<'_> {}
+
+#[cfg(test)]
+mod tests {
+    use crate::ErrorReportingUtf8Chars;
+
+    // Should be a static assert, but not taking a dependency for this.
+    #[test]
+    fn test_size() {
+        assert_eq!(
+            core::mem::size_of::<Option<<ErrorReportingUtf8Chars<'_> as Iterator>::Item>>(),
+            core::mem::size_of::<Option<char>>()
+        );
+    }
+
+    #[test]
+    fn test_eq() {
+        let a: <ErrorReportingUtf8Chars<'_> as Iterator>::Item = Ok('a');
+        let a_again: <ErrorReportingUtf8Chars<'_> as Iterator>::Item = Ok('a');
+        assert_eq!(a, a_again);
+    }
+}
diff --git a/vendor/writeable/.cargo-checksum.json b/vendor/writeable/.cargo-checksum.json
new file mode 100644
index 00000000..e487cb05
--- /dev/null
+++ b/vendor/writeable/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"ec549491db9f8c3d112b5cd54ca388eacd3cb6790d924173d4d1a8df52c946d7","Cargo.toml":"298a52da95aa60f0c4f1e774f923fa4dfca0f444ac85ed39dbb0040b2d0cc45a","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"e56f15deb02cd8c01c9b10ad794e719032636e0dd8c4436c9b7e6b796756f15a","benches/writeable.rs":"985ca2c94a6617882bbc151e904f4a49af74c71ba23b3c5636a40cdea3d03fc4","examples/writeable_message.rs":"c0749bec1dcd032a36d079d39ca308062ff412d3cf401b8c7b2fc5409c538af9","src/cmp.rs":"a1ffc69c26d110b63eef815e50dbfdbca4a437b62ba3b6057c66ef0bef3deeb7","src/either.rs":"04c53d0f60e9c6cf1a74cf0c8cbe36d364693735c4e76a11c647fb02119c3a9d","src/impls.rs":"0b911dc8cbbc15940c1c236b8e0f72e060e215590f1a06a6c0ada02df7b7003f","src/lib.rs":"4fee11bdeff5401042bb5b1ffba6a7357f4ff3e86ef63ab02ce6e3a16b5c53c3","src/ops.rs":"3d47d9c81652fafc1baf98c747d8be6b2145b26171a37d41307f84763c47f271","src/parts_write_adapter.rs":"0dfe4bb3483e4520f3d6f39205442fa04cdac61efda2db1e5603df8e4f23f396","src/testing.rs":"4193e32baca7d8e960cabf012c99eff2e4beef8567bc3a7b7e91911c48a36824","src/to_string_or_borrow.rs":"f08c6ee64e2691f72c3343ef6d588f2aac44c7bc9ce3fe7e5a83b16231133dab","src/try_writeable.rs":"1186bcf5e791c41b6885dd0deab5d544e77cf26bf6d6e5d8df5b147ce89ccc81","tests/data/data.rs":"fe8b57068016004b53bbcae1e0547c41981a5bb074bf01d976f95787227288aa","tests/writeable.rs":"6dc3db45174180bcbf8980e640525b441c31b0b9db238721888d8cc0bd998ded"},"package":"ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"}
\ No newline at end of file
diff --git a/vendor/writeable/Cargo.lock b/vendor/writeable/Cargo.lock
new file mode 100644
index 00000000..8ba86005
--- /dev/null
+++ b/vendor/writeable/Cargo.lock
@@ -0,0 +1,691 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anes"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+
+[[package]]
+name = "anstyle"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+
+[[package]]
+name = "autocfg"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+
+[[package]]
+name = "bumpalo"
+version = "3.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "ciborium"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
+dependencies = [
+ "ciborium-io",
+ "ciborium-ll",
+ "serde",
+]
+
+[[package]]
+name = "ciborium-io"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
+
+[[package]]
+name = "ciborium-ll"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
+dependencies = [
+ "ciborium-io",
+ "half",
+]
+
+[[package]]
+name = "clap"
+version = "4.5.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "027bb0d98429ae334a8698531da7077bdf906419543a35a55c2cb1b66437d767"
+dependencies = [
+ "clap_builder",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5589e0cba072e0f3d23791efac0fd8627b49c829c196a492e88168e6a669d863"
+dependencies = [
+ "anstyle",
+ "clap_lex",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
+
+[[package]]
+name = "criterion"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
+dependencies = [
+ "anes",
+ "cast",
+ "ciborium",
+ "clap",
+ "criterion-plot",
+ "is-terminal",
+ "itertools",
+ "num-traits",
+ "once_cell",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
+dependencies = [
+ "cast",
+ "itertools",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+
+[[package]]
+name = "crunchy"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
+
+[[package]]
+name = "either"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7914353092ddf589ad78f25c5c1c21b7f80b0ff8621e7c814c3485b5306da9d"
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
+[[package]]
+name = "is-terminal"
+version = "0.4.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
+
+[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.170"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
+
+[[package]]
+name = "log"
+version = "0.4.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"
+
+[[package]]
+name = "oorandom"
+version = "11.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
+
+[[package]]
+name = "plotters"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+
+[[package]]
+name = "rustversion"
+version = "1.0.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4"
+
+[[package]]
+name = "ryu"
+version = "1.0.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.218"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.218"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.139"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.98"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "writeable"
+version = "0.6.1"
+dependencies = [
+ "criterion",
+ "either",
+ "rand",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "byteorder",
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/vendor/writeable/Cargo.toml b/vendor/writeable/Cargo.toml
new file mode 100644
index 00000000..049fe83e
--- /dev/null
+++ b/vendor/writeable/Cargo.toml
@@ -0,0 +1,76 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.81"
+name = "writeable"
+version = "0.6.1"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "A more efficient alternative to fmt::Display"
+readme = "README.md"
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.docs.rs]
+all-features = true
+
+[package.metadata.workspaces]
+independent = true
+
+[features]
+either = ["dep:either"]
+
+[lib]
+name = "writeable"
+path = "src/lib.rs"
+bench = false
+
+[[example]]
+name = "writeable_message"
+path = "examples/writeable_message.rs"
+
+[[test]]
+name = "writeable"
+path = "tests/writeable.rs"
+
+[[bench]]
+name = "writeable"
+path = "benches/writeable.rs"
+harness = false
+
+[dependencies.either]
+version = "1.9.0"
+optional = true
+default-features = false
+
+[dev-dependencies.rand]
+version = "0.8"
+features = ["small_rng"]
+
+[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
+version = "0.5.0"
diff --git a/vendor/writeable/LICENSE b/vendor/writeable/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/writeable/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/writeable/README.md b/vendor/writeable/README.md
new file mode 100644
index 00000000..44138cd7
--- /dev/null
+++ b/vendor/writeable/README.md
@@ -0,0 +1,57 @@
+# writeable [![crates.io](https://img.shields.io/crates/v/writeable)](https://crates.io/crates/writeable)
+
+<!-- cargo-rdme start -->
+
+`writeable` is a utility crate of the [`ICU4X`] project.
+
+It includes [`Writeable`], a core trait representing an object that can be written to a
+sink implementing `std::fmt::Write`. It is an alternative to `std::fmt::Display` with the
+addition of a function indicating the number of bytes to be written.
+
+`Writeable` improves upon `std::fmt::Display` in two ways:
+
+1. More efficient, since the sink can pre-allocate bytes.
+2. Smaller code, since the format machinery can be short-circuited.
+
+## Examples
+
+```rust
+use std::fmt;
+use writeable::assert_writeable_eq;
+use writeable::LengthHint;
+use writeable::Writeable;
+
+struct WelcomeMessage<'s> {
+    pub name: &'s str,
+}
+
+impl<'s> Writeable for WelcomeMessage<'s> {
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        sink.write_str("Hello, ")?;
+        sink.write_str(self.name)?;
+        sink.write_char('!')?;
+        Ok(())
+    }
+
+    fn writeable_length_hint(&self) -> LengthHint {
+        // "Hello, " + '!' + length of name
+        LengthHint::exact(8 + self.name.len())
+    }
+}
+
+let message = WelcomeMessage { name: "Alice" };
+assert_writeable_eq!(&message, "Hello, Alice!");
+
+// Types implementing `Writeable` are recommended to also implement `fmt::Display`.
+// This can be simply done by redirecting to the `Writeable` implementation:
+writeable::impl_display_with_writeable!(WelcomeMessage<'_>);
+assert_eq!(message.to_string(), "Hello, Alice!");
+```
+
+[`ICU4X`]: ../icu/index.html
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/writeable/benches/writeable.rs b/vendor/writeable/benches/writeable.rs
new file mode 100644
index 00000000..09a03f14
--- /dev/null
+++ b/vendor/writeable/benches/writeable.rs
@@ -0,0 +1,239 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use std::fmt;
+use writeable::LengthHint;
+use writeable::Writeable;
+
+/// A sample type implementing Writeable
+struct WriteableMessage<'s> {
+    message: &'s str,
+}
+
+impl Writeable for WriteableMessage<'_> {
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        sink.write_str(self.message)
+    }
+
+    fn writeable_length_hint(&self) -> LengthHint {
+        LengthHint::exact(self.message.len())
+    }
+}
+
+writeable::impl_display_with_writeable!(WriteableMessage<'_>);
+
+/// A sample type implementing Display
+struct DisplayMessage<'s> {
+    message: &'s str,
+}
+
+impl fmt::Display for DisplayMessage<'_> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        f.write_str(self.message)
+    }
+}
+
+/// A sample type that contains multiple fields
+struct ComplexWriteable<'a> {
+    prefix: &'a str,
+    n0: usize,
+    infix: &'a str,
+    n1: usize,
+    suffix: &'a str,
+}
+
+impl Writeable for ComplexWriteable<'_> {
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        self.prefix.write_to(sink)?;
+        self.n0.write_to(sink)?;
+        self.infix.write_to(sink)?;
+        self.n1.write_to(sink)?;
+        self.suffix.write_to(sink)?;
+        Ok(())
+    }
+
+    fn writeable_length_hint(&self) -> LengthHint {
+        self.prefix.writeable_length_hint()
+            + self.n0.writeable_length_hint()
+            + self.infix.writeable_length_hint()
+            + self.n1.writeable_length_hint()
+            + self.suffix.writeable_length_hint()
+    }
+}
+
+writeable::impl_display_with_writeable!(ComplexWriteable<'_>);
+
+const SHORT_STR: &str = "short";
+const MEDIUM_STR: &str = "this is a medium-length string";
+const LONG_STR: &str = "this string is very very very very very very very very very very very very very very very very very very very very very very very very long";
+const LONG_OVERLAP_STR: &str =
+    "this string is very very very very very very very long but different";
+
+fn overview_bench(c: &mut Criterion) {
+    c.bench_function("writeable/overview", |b| {
+        b.iter(|| {
+            // This benchmark runs to_string on short, medium, and long strings in one batch.
+            WriteableMessage {
+                message: black_box(SHORT_STR),
+            }
+            .write_to_string();
+            WriteableMessage {
+                message: black_box(MEDIUM_STR),
+            }
+            .write_to_string();
+            WriteableMessage {
+                message: black_box(LONG_STR),
+            }
+            .write_to_string();
+        });
+    });
+
+    {
+        writeable_benches(c);
+        writeable_dyn_benches(c);
+        display_benches(c);
+        complex_benches(c);
+    }
+}
+
+fn writeable_benches(c: &mut Criterion) {
+    c.bench_function("writeable/to_string/short", |b| {
+        b.iter(|| {
+            WriteableMessage {
+                message: black_box(SHORT_STR),
+            }
+            .write_to_string()
+            .into_owned()
+        });
+    });
+    c.bench_function("writeable/to_string/medium", |b| {
+        b.iter(|| {
+            WriteableMessage {
+                message: black_box(MEDIUM_STR),
+            }
+            .write_to_string()
+            .into_owned()
+        });
+    });
+    c.bench_function("writeable/to_string/long", |b| {
+        b.iter(|| {
+            WriteableMessage {
+                message: black_box(LONG_STR),
+            }
+            .write_to_string()
+            .into_owned()
+        });
+    });
+    c.bench_function("writeable/cmp_str", |b| {
+        b.iter(|| {
+            let short = black_box(SHORT_STR);
+            let medium = black_box(MEDIUM_STR);
+            let long = black_box(LONG_STR);
+            let long_overlap = black_box(LONG_OVERLAP_STR);
+            [short, medium, long, long_overlap].map(|s1| {
+                [short, medium, long, long_overlap].map(|s2| {
+                    let message = WriteableMessage { message: s1 };
+                    writeable::cmp_str(&message, s2)
+                })
+            })
+        });
+    });
+}
+
+fn writeable_dyn_benches(c: &mut Criterion) {
+    // Same as `write_to_string`, but casts to a `dyn fmt::Write`
+    fn writeable_dyn_to_string(w: &impl Writeable) -> String {
+        let mut output = String::with_capacity(w.writeable_length_hint().capacity());
+        w.write_to(&mut output as &mut dyn fmt::Write)
+            .expect("impl Write for String is infallible");
+        output
+    }
+
+    c.bench_function("writeable_dyn/to_string/short", |b| {
+        b.iter(|| {
+            writeable_dyn_to_string(&WriteableMessage {
+                message: black_box(SHORT_STR),
+            })
+        });
+    });
+    c.bench_function("writeable_dyn/to_string/medium", |b| {
+        b.iter(|| {
+            writeable_dyn_to_string(&WriteableMessage {
+                message: black_box(MEDIUM_STR),
+            })
+        });
+    });
+    c.bench_function("writeable_dyn/to_string/long", |b| {
+        b.iter(|| {
+            writeable_dyn_to_string(&WriteableMessage {
+                message: black_box(LONG_STR),
+            })
+        });
+    });
+}
+
+fn display_benches(c: &mut Criterion) {
+    c.bench_function("display/to_string/short", |b| {
+        b.iter(|| {
+            DisplayMessage {
+                message: black_box(SHORT_STR),
+            }
+            .to_string()
+        });
+    });
+    c.bench_function("display/to_string/medium", |b| {
+        b.iter(|| {
+            DisplayMessage {
+                message: black_box(MEDIUM_STR),
+            }
+            .to_string()
+        });
+    });
+    c.bench_function("display/to_string/long", |b| {
+        b.iter(|| {
+            DisplayMessage {
+                message: black_box(LONG_STR),
+            }
+            .to_string()
+        });
+    });
+}
+
+fn complex_benches(c: &mut Criterion) {
+    const COMPLEX_WRITEABLE_MEDIUM: ComplexWriteable = ComplexWriteable {
+        prefix: "There are ",
+        n0: 55,
+        infix: " apples and ",
+        n1: 8124,
+        suffix: " oranges",
+    };
+    c.bench_function("complex/write_to_string/medium", |b| {
+        b.iter(|| {
+            black_box(COMPLEX_WRITEABLE_MEDIUM)
+                .write_to_string()
+                .into_owned()
+        });
+    });
+    c.bench_function("complex/display_to_string/medium", |b| {
+        b.iter(|| black_box(COMPLEX_WRITEABLE_MEDIUM).to_string());
+    });
+    const REFERENCE_STRS: [&str; 6] = [
+        "There are 55 apples and 8124 oranges",
+        "There are 55 apples and 0 oranges",
+        "There are no apples",
+        SHORT_STR,
+        MEDIUM_STR,
+        LONG_STR,
+    ];
+    c.bench_function("complex/cmp_str", |b| {
+        b.iter(|| {
+            black_box(REFERENCE_STRS)
+                .map(|s| writeable::cmp_str(black_box(&COMPLEX_WRITEABLE_MEDIUM), s))
+        });
+    });
+}
+
+criterion_group!(benches, overview_bench,);
+criterion_main!(benches);
diff --git a/vendor/writeable/examples/writeable_message.rs b/vendor/writeable/examples/writeable_message.rs
new file mode 100644
index 00000000..ca7c773d
--- /dev/null
+++ b/vendor/writeable/examples/writeable_message.rs
@@ -0,0 +1,61 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// This example illustrates a very simple type implementing Writeable.
+
+#![no_main] // https://github.com/unicode-org/icu4x/issues/395
+icu_benchmark_macros::instrument!();
+
+use std::fmt;
+use writeable::*;
+
+struct WriteableMessage<W: Writeable>(W);
+
+const GREETING: Part = Part {
+    category: "meaning",
+    value: "greeting",
+};
+
+const EMOJI: Part = Part {
+    category: "meaning",
+    value: "emoji",
+};
+
+impl<V: Writeable> Writeable for WriteableMessage<V> {
+    fn write_to_parts<W: PartsWrite + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        use fmt::Write;
+        sink.with_part(GREETING, |g| {
+            g.write_str("Hello")?;
+            g.write_str(" ")?;
+            self.0.write_to(g)
+        })?;
+        sink.write_char(' ')?;
+        sink.with_part(EMOJI, |e| e.write_char('😅'))
+    }
+
+    fn writeable_length_hint(&self) -> LengthHint {
+        LengthHint::exact(11) + self.0.writeable_length_hint()
+    }
+}
+
+impl<V: Writeable> fmt::Display for WriteableMessage<V> {
+    #[inline]
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        self.write_to(f)
+    }
+}
+
+fn main() {
+    let (string, parts) =
+        writeable::_internal::writeable_to_parts_for_test(&WriteableMessage("world"));
+
+    assert_eq!(string, "Hello world 😅");
+
+    // Print the greeting only
+    let (start, end, _) = parts
+        .into_iter()
+        .find(|(_, _, part)| part == &GREETING)
+        .unwrap();
+    println!("{}", &string[start..end]);
+}
diff --git a/vendor/writeable/src/cmp.rs b/vendor/writeable/src/cmp.rs
new file mode 100644
index 00000000..5f0050e2
--- /dev/null
+++ b/vendor/writeable/src/cmp.rs
@@ -0,0 +1,156 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::Writeable;
+use core::cmp::Ordering;
+use core::fmt;
+
+struct WriteComparator<'a> {
+    code_units: &'a [u8],
+    result: Ordering,
+}
+
+/// This is an infallible impl. Functions always return Ok, not Err.
+impl fmt::Write for WriteComparator<'_> {
+    #[inline]
+    fn write_str(&mut self, other: &str) -> fmt::Result {
+        if self.result != Ordering::Equal {
+            return Ok(());
+        }
+        let (this, remainder) = self
+            .code_units
+            .split_at_checked(other.len())
+            .unwrap_or((self.code_units, &[]));
+        self.code_units = remainder;
+        self.result = this.cmp(other.as_bytes());
+        Ok(())
+    }
+}
+
+impl<'a> WriteComparator<'a> {
+    #[inline]
+    fn new(code_units: &'a [u8]) -> Self {
+        Self {
+            code_units,
+            result: Ordering::Equal,
+        }
+    }
+
+    #[inline]
+    fn finish(self) -> Ordering {
+        if matches!(self.result, Ordering::Equal) && !self.code_units.is_empty() {
+            // Self is longer than Other
+            Ordering::Greater
+        } else {
+            self.result
+        }
+    }
+}
+
+/// Compares the contents of a [`Writeable`] to the given UTF-8 bytes without allocating memory.
+///
+/// For more details, see: [`cmp_str`]
+pub fn cmp_utf8(writeable: &impl Writeable, other: &[u8]) -> Ordering {
+    let mut wc = WriteComparator::new(other);
+    let _ = writeable.write_to(&mut wc);
+    wc.finish().reverse()
+}
+
+/// Compares the contents of a `Writeable` to the given bytes
+/// without allocating a String to hold the `Writeable` contents.
+///
+/// This returns a lexicographical comparison, the same as if the Writeable
+/// were first converted to a String and then compared with `Ord`. For a
+/// string ordering suitable for display to end users, use a localized
+/// collation crate, such as `icu_collator`.
+///
+/// # Examples
+///
+/// ```
+/// use core::cmp::Ordering;
+/// use core::fmt;
+/// use writeable::Writeable;
+///
+/// struct WelcomeMessage<'s> {
+///     pub name: &'s str,
+/// }
+///
+/// impl<'s> Writeable for WelcomeMessage<'s> {
+///     // see impl in Writeable docs
+/// #    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+/// #        sink.write_str("Hello, ")?;
+/// #        sink.write_str(self.name)?;
+/// #        sink.write_char('!')?;
+/// #        Ok(())
+/// #    }
+/// }
+///
+/// let message = WelcomeMessage { name: "Alice" };
+/// let message_str = message.write_to_string();
+///
+/// assert_eq!(Ordering::Equal, writeable::cmp_str(&message, "Hello, Alice!"));
+///
+/// assert_eq!(Ordering::Greater, writeable::cmp_str(&message, "Alice!"));
+/// assert_eq!(Ordering::Greater, (*message_str).cmp("Alice!"));
+///
+/// assert_eq!(Ordering::Less, writeable::cmp_str(&message, "Hello, Bob!"));
+/// assert_eq!(Ordering::Less, (*message_str).cmp("Hello, Bob!"));
+/// ```
+#[inline]
+pub fn cmp_str(writeable: &impl Writeable, other: &str) -> Ordering {
+    cmp_utf8(writeable, other.as_bytes())
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use core::fmt::Write;
+
+    mod data {
+        include!("../tests/data/data.rs");
+    }
+
+    #[test]
+    fn test_write_char() {
+        for a in data::KEBAB_CASE_STRINGS {
+            for b in data::KEBAB_CASE_STRINGS {
+                let mut wc = WriteComparator::new(a.as_bytes());
+                for ch in b.chars() {
+                    wc.write_char(ch).unwrap();
+                }
+                assert_eq!(a.cmp(b), wc.finish(), "{a} <=> {b}");
+            }
+        }
+    }
+
+    #[test]
+    fn test_write_str() {
+        for a in data::KEBAB_CASE_STRINGS {
+            for b in data::KEBAB_CASE_STRINGS {
+                let mut wc = WriteComparator::new(a.as_bytes());
+                wc.write_str(b).unwrap();
+                assert_eq!(a.cmp(b), wc.finish(), "{a} <=> {b}");
+            }
+        }
+    }
+
+    #[test]
+    fn test_mixed() {
+        for a in data::KEBAB_CASE_STRINGS {
+            for b in data::KEBAB_CASE_STRINGS {
+                let mut wc = WriteComparator::new(a.as_bytes());
+                let mut first = true;
+                for substr in b.split('-') {
+                    if first {
+                        first = false;
+                    } else {
+                        wc.write_char('-').unwrap();
+                    }
+                    wc.write_str(substr).unwrap();
+                }
+                assert_eq!(a.cmp(b), wc.finish(), "{a} <=> {b}");
+            }
+        }
+    }
+}
diff --git a/vendor/writeable/src/either.rs b/vendor/writeable/src/either.rs
new file mode 100644
index 00000000..67be94f5
--- /dev/null
+++ b/vendor/writeable/src/either.rs
@@ -0,0 +1,41 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::*;
+use ::either::Either;
+
+/// A [`Writeable`] impl that delegates to one type or another type.
+impl<W0, W1> Writeable for Either<W0, W1>
+where
+    W0: Writeable,
+    W1: Writeable,
+{
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        match self {
+            Either::Left(w) => w.write_to(sink),
+            Either::Right(w) => w.write_to(sink),
+        }
+    }
+
+    fn write_to_parts<S: PartsWrite + ?Sized>(&self, sink: &mut S) -> fmt::Result {
+        match self {
+            Either::Left(w) => w.write_to_parts(sink),
+            Either::Right(w) => w.write_to_parts(sink),
+        }
+    }
+
+    fn writeable_length_hint(&self) -> LengthHint {
+        match self {
+            Either::Left(w) => w.writeable_length_hint(),
+            Either::Right(w) => w.writeable_length_hint(),
+        }
+    }
+
+    fn write_to_string(&self) -> Cow<str> {
+        match self {
+            Either::Left(w) => w.write_to_string(),
+            Either::Right(w) => w.write_to_string(),
+        }
+    }
+}
diff --git a/vendor/writeable/src/impls.rs b/vendor/writeable/src/impls.rs
new file mode 100644
index 00000000..bf935161
--- /dev/null
+++ b/vendor/writeable/src/impls.rs
@@ -0,0 +1,262 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::*;
+use core::fmt;
+
+macro_rules! impl_write_num {
+    ($u:ty, $i:ty, $test:ident) => {
+        impl $crate::Writeable for $u {
+            fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
+                const MAX_LEN: usize = <$u>::MAX.ilog10() as usize + 1;
+                let mut buf = [b'0'; MAX_LEN];
+                let mut n = *self;
+                let mut i = MAX_LEN;
+                #[allow(clippy::indexing_slicing)] // n < 10^i
+                while n != 0 {
+                    i -= 1;
+                    buf[i] = b'0' + (n % 10) as u8;
+                    n /= 10;
+                }
+                if i == MAX_LEN {
+                    debug_assert_eq!(*self, 0);
+                    i -= 1;
+                }
+                #[allow(clippy::indexing_slicing)] // buf is ASCII
+                let s = unsafe { core::str::from_utf8_unchecked(&buf[i..]) };
+                sink.write_str(s)
+            }
+
+            fn writeable_length_hint(&self) -> $crate::LengthHint {
+                LengthHint::exact(self.checked_ilog10().unwrap_or(0) as usize + 1)
+            }
+        }
+
+        impl $crate::Writeable for $i {
+            fn write_to<W: core::fmt::Write + ?Sized>(&self, sink: &mut W) -> core::fmt::Result {
+                if self.is_negative() {
+                    sink.write_str("-")?;
+                }
+                self.unsigned_abs().write_to(sink)
+            }
+
+            fn writeable_length_hint(&self) -> $crate::LengthHint {
+                $crate::LengthHint::exact(if self.is_negative() { 1 } else { 0 })
+                    + self.unsigned_abs().writeable_length_hint()
+            }
+        }
+
+        #[test]
+        fn $test() {
+            use $crate::assert_writeable_eq;
+            assert_writeable_eq!(&(0 as $u), "0");
+            assert_writeable_eq!(&(0 as $i), "0");
+            assert_writeable_eq!(&(-0 as $i), "0");
+            assert_writeable_eq!(&(1 as $u), "1");
+            assert_writeable_eq!(&(1 as $i), "1");
+            assert_writeable_eq!(&(-1 as $i), "-1");
+            assert_writeable_eq!(&(9 as $u), "9");
+            assert_writeable_eq!(&(9 as $i), "9");
+            assert_writeable_eq!(&(-9 as $i), "-9");
+            assert_writeable_eq!(&(10 as $u), "10");
+            assert_writeable_eq!(&(10 as $i), "10");
+            assert_writeable_eq!(&(-10 as $i), "-10");
+            assert_writeable_eq!(&(99 as $u), "99");
+            assert_writeable_eq!(&(99 as $i), "99");
+            assert_writeable_eq!(&(-99 as $i), "-99");
+            assert_writeable_eq!(&(100 as $u), "100");
+            assert_writeable_eq!(&(-100 as $i), "-100");
+            assert_writeable_eq!(&<$u>::MAX, <$u>::MAX.to_string());
+            assert_writeable_eq!(&<$i>::MAX, <$i>::MAX.to_string());
+            assert_writeable_eq!(&<$i>::MIN, <$i>::MIN.to_string());
+
+            use rand::{rngs::SmallRng, Rng, SeedableRng};
+            let mut rng = SmallRng::seed_from_u64(4); // chosen by fair dice roll.
+                                                      // guaranteed to be random.
+            for _ in 0..1000 {
+                let rand = rng.gen::<$u>();
+                assert_writeable_eq!(rand, rand.to_string());
+            }
+        }
+    };
+}
+
+impl_write_num!(u8, i8, test_u8);
+impl_write_num!(u16, i16, test_u16);
+impl_write_num!(u32, i32, test_u32);
+impl_write_num!(u64, i64, test_u64);
+impl_write_num!(u128, i128, test_u128);
+impl_write_num!(usize, isize, test_usize);
+
+impl Writeable for str {
+    #[inline]
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        sink.write_str(self)
+    }
+
+    #[inline]
+    fn writeable_length_hint(&self) -> LengthHint {
+        LengthHint::exact(self.len())
+    }
+
+    /// Returns a borrowed `str`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use std::borrow::Cow;
+    /// use writeable::Writeable;
+    ///
+    /// let cow = "foo".write_to_string();
+    /// assert!(matches!(cow, Cow::Borrowed(_)));
+    /// ```
+    #[inline]
+    fn write_to_string(&self) -> Cow<str> {
+        Cow::Borrowed(self)
+    }
+}
+
+impl Writeable for String {
+    #[inline]
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        sink.write_str(self)
+    }
+
+    #[inline]
+    fn writeable_length_hint(&self) -> LengthHint {
+        LengthHint::exact(self.len())
+    }
+
+    #[inline]
+    fn write_to_string(&self) -> Cow<str> {
+        Cow::Borrowed(self)
+    }
+}
+
+impl Writeable for char {
+    #[inline]
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        sink.write_char(*self)
+    }
+
+    #[inline]
+    fn writeable_length_hint(&self) -> LengthHint {
+        LengthHint::exact(self.len_utf8())
+    }
+
+    #[inline]
+    fn write_to_string(&self) -> Cow<str> {
+        let mut s = String::with_capacity(self.len_utf8());
+        s.push(*self);
+        Cow::Owned(s)
+    }
+}
+
+impl<T: Writeable + ?Sized> Writeable for &T {
+    #[inline]
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        (*self).write_to(sink)
+    }
+
+    #[inline]
+    fn write_to_parts<W: PartsWrite + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        (*self).write_to_parts(sink)
+    }
+
+    #[inline]
+    fn writeable_length_hint(&self) -> LengthHint {
+        (*self).writeable_length_hint()
+    }
+
+    #[inline]
+    fn write_to_string(&self) -> Cow<str> {
+        (*self).write_to_string()
+    }
+}
+
+macro_rules! impl_write_smart_pointer {
+    ($ty:path, T: $extra_bound:path) => {
+        impl<'a, T: ?Sized + Writeable + $extra_bound> Writeable for $ty {
+            #[inline]
+            fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+                core::borrow::Borrow::<T>::borrow(self).write_to(sink)
+            }
+            #[inline]
+            fn write_to_parts<W: PartsWrite + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+                core::borrow::Borrow::<T>::borrow(self).write_to_parts(sink)
+            }
+            #[inline]
+            fn writeable_length_hint(&self) -> LengthHint {
+                core::borrow::Borrow::<T>::borrow(self).writeable_length_hint()
+            }
+            #[inline]
+            fn write_to_string(&self) -> Cow<str> {
+                core::borrow::Borrow::<T>::borrow(self).write_to_string()
+            }
+        }
+    };
+    ($ty:path) => {
+        // Add a harmless duplicate Writeable bound
+        impl_write_smart_pointer!($ty, T: Writeable);
+    };
+}
+
+impl_write_smart_pointer!(Cow<'a, T>, T: alloc::borrow::ToOwned);
+impl_write_smart_pointer!(alloc::boxed::Box<T>);
+impl_write_smart_pointer!(alloc::rc::Rc<T>);
+impl_write_smart_pointer!(alloc::sync::Arc<T>);
+
+#[test]
+fn test_string_impls() {
+    fn check_writeable_slice<W: Writeable + core::fmt::Display>(writeables: &[W]) {
+        assert_writeable_eq!(&writeables[0], "");
+        assert_writeable_eq!(&writeables[1], "abc");
+        assert!(matches!(writeables[0].write_to_string(), Cow::Borrowed(_)));
+        assert!(matches!(writeables[1].write_to_string(), Cow::Borrowed(_)));
+    }
+
+    // test str impl
+    let arr: &[&str] = &["", "abc"];
+    check_writeable_slice(arr);
+
+    // test String impl
+    let arr: &[String] = &[String::new(), "abc".to_owned()];
+    check_writeable_slice(arr);
+
+    // test char impl
+    let chars = ['a', 'β', '你', '😀'];
+    for i in 0..chars.len() {
+        let s = String::from(chars[i]);
+        assert_writeable_eq!(&chars[i], s);
+        for j in 0..chars.len() {
+            assert_eq!(
+                crate::cmp_str(&chars[j], &s),
+                chars[j].cmp(&chars[i]),
+                "{:?} vs {:?}",
+                chars[j],
+                chars[i]
+            );
+        }
+    }
+
+    // test Cow impl
+    let arr: &[Cow<str>] = &[Cow::Borrowed(""), Cow::Owned("abc".to_string())];
+    check_writeable_slice(arr);
+
+    // test Box impl
+    let arr: &[Box<str>] = &["".into(), "abc".into()];
+    check_writeable_slice(arr);
+
+    // test Rc impl
+    let arr: &[alloc::rc::Rc<str>] = &["".into(), "abc".into()];
+    check_writeable_slice(arr);
+
+    // test Arc impl
+    let arr: &[alloc::sync::Arc<str>] = &["".into(), "abc".into()];
+    check_writeable_slice(arr);
+
+    // test &T impl
+    let arr: &[&String] = &[&String::new(), &"abc".to_owned()];
+    check_writeable_slice(arr);
+}
diff --git a/vendor/writeable/src/lib.rs b/vendor/writeable/src/lib.rs
new file mode 100644
index 00000000..329e90a4
--- /dev/null
+++ b/vendor/writeable/src/lib.rs
@@ -0,0 +1,455 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+
+//! `writeable` is a utility crate of the [`ICU4X`] project.
+//!
+//! It includes [`Writeable`], a core trait representing an object that can be written to a
+//! sink implementing `std::fmt::Write`. It is an alternative to `std::fmt::Display` with the
+//! addition of a function indicating the number of bytes to be written.
+//!
+//! `Writeable` improves upon `std::fmt::Display` in two ways:
+//!
+//! 1. More efficient, since the sink can pre-allocate bytes.
+//! 2. Smaller code, since the format machinery can be short-circuited.
+//!
+//! # Examples
+//!
+//! ```
+//! use std::fmt;
+//! use writeable::assert_writeable_eq;
+//! use writeable::LengthHint;
+//! use writeable::Writeable;
+//!
+//! struct WelcomeMessage<'s> {
+//!     pub name: &'s str,
+//! }
+//!
+//! impl<'s> Writeable for WelcomeMessage<'s> {
+//!     fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+//!         sink.write_str("Hello, ")?;
+//!         sink.write_str(self.name)?;
+//!         sink.write_char('!')?;
+//!         Ok(())
+//!     }
+//!
+//!     fn writeable_length_hint(&self) -> LengthHint {
+//!         // "Hello, " + '!' + length of name
+//!         LengthHint::exact(8 + self.name.len())
+//!     }
+//! }
+//!
+//! let message = WelcomeMessage { name: "Alice" };
+//! assert_writeable_eq!(&message, "Hello, Alice!");
+//!
+//! // Types implementing `Writeable` are recommended to also implement `fmt::Display`.
+//! // This can be simply done by redirecting to the `Writeable` implementation:
+//! writeable::impl_display_with_writeable!(WelcomeMessage<'_>);
+//! assert_eq!(message.to_string(), "Hello, Alice!");
+//! ```
+//!
+//! [`ICU4X`]: ../icu/index.html
+
+extern crate alloc;
+
+mod cmp;
+#[cfg(feature = "either")]
+mod either;
+mod impls;
+mod ops;
+mod parts_write_adapter;
+mod testing;
+mod to_string_or_borrow;
+mod try_writeable;
+
+use alloc::borrow::Cow;
+use alloc::string::String;
+use core::fmt;
+
+pub use cmp::{cmp_str, cmp_utf8};
+pub use to_string_or_borrow::to_string_or_borrow;
+pub use try_writeable::TryWriteable;
+
+/// Helper types for trait impls.
+pub mod adapters {
+    use super::*;
+
+    pub use parts_write_adapter::CoreWriteAsPartsWrite;
+    pub use parts_write_adapter::WithPart;
+    pub use try_writeable::TryWriteableInfallibleAsWriteable;
+    pub use try_writeable::WriteableAsTryWriteableInfallible;
+
+    #[derive(Debug)]
+    #[allow(clippy::exhaustive_structs)] // newtype
+    pub struct LossyWrap<T>(pub T);
+
+    impl<T: TryWriteable> Writeable for LossyWrap<T> {
+        fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+            let _ = self.0.try_write_to(sink)?;
+            Ok(())
+        }
+
+        fn writeable_length_hint(&self) -> LengthHint {
+            self.0.writeable_length_hint()
+        }
+    }
+
+    impl<T: TryWriteable> fmt::Display for LossyWrap<T> {
+        fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+            let _ = self.0.try_write_to(f)?;
+            Ok(())
+        }
+    }
+}
+
+#[doc(hidden)] // for testing and macros
+pub mod _internal {
+    pub use super::testing::try_writeable_to_parts_for_test;
+    pub use super::testing::writeable_to_parts_for_test;
+    pub use alloc::string::String;
+}
+
+/// A hint to help consumers of `Writeable` pre-allocate bytes before they call
+/// [`write_to`](Writeable::write_to).
+///
+/// This behaves like `Iterator::size_hint`: it is a tuple where the first element is the
+/// lower bound, and the second element is the upper bound. If the upper bound is `None`
+/// either there is no known upper bound, or the upper bound is larger than `usize`.
+///
+/// `LengthHint` implements std`::ops::{Add, Mul}` and similar traits for easy composition.
+/// During computation, the lower bound will saturate at `usize::MAX`, while the upper
+/// bound will become `None` if `usize::MAX` is exceeded.
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
+#[non_exhaustive]
+pub struct LengthHint(pub usize, pub Option<usize>);
+
+impl LengthHint {
+    pub fn undefined() -> Self {
+        Self(0, None)
+    }
+
+    /// `write_to` will use exactly n bytes.
+    pub fn exact(n: usize) -> Self {
+        Self(n, Some(n))
+    }
+
+    /// `write_to` will use at least n bytes.
+    pub fn at_least(n: usize) -> Self {
+        Self(n, None)
+    }
+
+    /// `write_to` will use at most n bytes.
+    pub fn at_most(n: usize) -> Self {
+        Self(0, Some(n))
+    }
+
+    /// `write_to` will use between `n` and `m` bytes.
+    pub fn between(n: usize, m: usize) -> Self {
+        Self(Ord::min(n, m), Some(Ord::max(n, m)))
+    }
+
+    /// Returns a recommendation for the number of bytes to pre-allocate.
+    /// If an upper bound exists, this is used, otherwise the lower bound
+    /// (which might be 0).
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use writeable::Writeable;
+    ///
+    /// fn pre_allocate_string(w: &impl Writeable) -> String {
+    ///     String::with_capacity(w.writeable_length_hint().capacity())
+    /// }
+    /// ```
+    pub fn capacity(&self) -> usize {
+        self.1.unwrap_or(self.0)
+    }
+
+    /// Returns whether the `LengthHint` indicates that the string is exactly 0 bytes long.
+    pub fn is_zero(&self) -> bool {
+        self.1 == Some(0)
+    }
+}
+
+/// [`Part`]s are used as annotations for formatted strings.
+///
+/// For example, a string like `Alice, Bob` could assign a `NAME` part to the
+/// substrings `Alice` and `Bob`, and a `PUNCTUATION` part to `, `. This allows
+/// for example to apply styling only to names.
+///
+/// `Part` contains two fields, whose usage is left up to the producer of the [`Writeable`].
+/// Conventionally, the `category` field will identify the formatting logic that produces
+/// the string/parts, whereas the `value` field will have semantic meaning. `NAME` and
+/// `PUNCTUATION` could thus be defined as
+/// ```
+/// # use writeable::Part;
+/// const NAME: Part = Part {
+///     category: "userlist",
+///     value: "name",
+/// };
+/// const PUNCTUATION: Part = Part {
+///     category: "userlist",
+///     value: "punctuation",
+/// };
+/// ```
+///
+/// That said, consumers should not usually have to inspect `Part` internals. Instead,
+/// formatters should expose the `Part`s they produces as constants.
+#[derive(Clone, Copy, Debug, PartialEq)]
+#[allow(clippy::exhaustive_structs)] // stable
+pub struct Part {
+    pub category: &'static str,
+    pub value: &'static str,
+}
+
+impl Part {
+    /// A part that should annotate error segments in [`TryWriteable`] output.
+    ///
+    /// For an example, see [`TryWriteable`].
+    pub const ERROR: Part = Part {
+        category: "writeable",
+        value: "error",
+    };
+}
+
+/// A sink that supports annotating parts of the string with [`Part`]s.
+pub trait PartsWrite: fmt::Write {
+    type SubPartsWrite: PartsWrite + ?Sized;
+
+    /// Annotates all strings written by the closure with the given [`Part`].
+    fn with_part(
+        &mut self,
+        part: Part,
+        f: impl FnMut(&mut Self::SubPartsWrite) -> fmt::Result,
+    ) -> fmt::Result;
+}
+
+/// `Writeable` is an alternative to `std::fmt::Display` with the addition of a length function.
+pub trait Writeable {
+    /// Writes a string to the given sink. Errors from the sink are bubbled up.
+    /// The default implementation delegates to `write_to_parts`, and discards any
+    /// `Part` annotations.
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        self.write_to_parts(&mut parts_write_adapter::CoreWriteAsPartsWrite(sink))
+    }
+
+    /// Write bytes and `Part` annotations to the given sink. Errors from the
+    /// sink are bubbled up. The default implementation delegates to `write_to`,
+    /// and doesn't produce any `Part` annotations.
+    fn write_to_parts<S: PartsWrite + ?Sized>(&self, sink: &mut S) -> fmt::Result {
+        self.write_to(sink)
+    }
+
+    /// Returns a hint for the number of UTF-8 bytes that will be written to the sink.
+    ///
+    /// Override this method if it can be computed quickly.
+    fn writeable_length_hint(&self) -> LengthHint {
+        LengthHint::undefined()
+    }
+
+    /// Creates a new `String` with the data from this `Writeable`. Like `ToString`,
+    /// but smaller and faster.
+    ///
+    /// The default impl allocates an owned `String`. However, if it is possible to return a
+    /// borrowed string, overwrite this method to return a `Cow::Borrowed`.
+    ///
+    /// To remove the `Cow` wrapper, call `.into_owned()` or `.as_str()` as appropriate.
+    ///
+    /// # Examples
+    ///
+    /// Inspect a `Writeable` before writing it to the sink:
+    ///
+    /// ```
+    /// use core::fmt::{Result, Write};
+    /// use writeable::Writeable;
+    ///
+    /// fn write_if_ascii<W, S>(w: &W, sink: &mut S) -> Result
+    /// where
+    ///     W: Writeable + ?Sized,
+    ///     S: Write + ?Sized,
+    /// {
+    ///     let s = w.write_to_string();
+    ///     if s.is_ascii() {
+    ///         sink.write_str(&s)
+    ///     } else {
+    ///         Ok(())
+    ///     }
+    /// }
+    /// ```
+    ///
+    /// Convert the `Writeable` into a fully owned `String`:
+    ///
+    /// ```
+    /// use writeable::Writeable;
+    ///
+    /// fn make_string(w: &impl Writeable) -> String {
+    ///     w.write_to_string().into_owned()
+    /// }
+    /// ```
+    fn write_to_string(&self) -> Cow<str> {
+        let hint = self.writeable_length_hint();
+        if hint.is_zero() {
+            return Cow::Borrowed("");
+        }
+        let mut output = String::with_capacity(hint.capacity());
+        let _ = self.write_to(&mut output);
+        Cow::Owned(output)
+    }
+}
+
+/// Implements [`Display`](core::fmt::Display) for types that implement [`Writeable`].
+///
+/// It's recommended to do this for every [`Writeable`] type, as it will add
+/// support for `core::fmt` features like [`fmt!`](std::fmt),
+/// [`print!`](std::print), [`write!`](std::write), etc.
+///
+/// This macro also adds a concrete `to_string` function. This function will shadow the
+/// standard library `ToString`, using the more efficient writeable-based code path.
+/// To add only `Display`, use the `@display` macro variant.
+#[macro_export]
+macro_rules! impl_display_with_writeable {
+    (@display, $type:ty) => {
+        /// This trait is implemented for compatibility with [`fmt!`](alloc::fmt).
+        /// To create a string, [`Writeable::write_to_string`] is usually more efficient.
+        impl core::fmt::Display for $type {
+            #[inline]
+            fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
+                $crate::Writeable::write_to(&self, f)
+            }
+        }
+    };
+    ($type:ty) => {
+        $crate::impl_display_with_writeable!(@display, $type);
+        impl $type {
+            /// Converts the given value to a `String`.
+            ///
+            /// Under the hood, this uses an efficient [`Writeable`] implementation.
+            /// However, in order to avoid allocating a string, it is more efficient
+            /// to use [`Writeable`] directly.
+            pub fn to_string(&self) -> $crate::_internal::String {
+                $crate::Writeable::write_to_string(self).into_owned()
+            }
+        }
+    };
+}
+
+/// Testing macros for types implementing [`Writeable`].
+///
+/// Arguments, in order:
+///
+/// 1. The [`Writeable`] under test
+/// 2. The expected string value
+/// 3. [`*_parts_eq`] only: a list of parts (`[(start, end, Part)]`)
+///
+/// Any remaining arguments get passed to `format!`
+///
+/// The macros tests the following:
+///
+/// - Equality of string content
+/// - Equality of parts ([`*_parts_eq`] only)
+/// - Validity of size hint
+///
+/// # Examples
+///
+/// ```
+/// # use writeable::Writeable;
+/// # use writeable::LengthHint;
+/// # use writeable::Part;
+/// # use writeable::assert_writeable_eq;
+/// # use writeable::assert_writeable_parts_eq;
+/// # use std::fmt::{self, Write};
+///
+/// const WORD: Part = Part {
+///     category: "foo",
+///     value: "word",
+/// };
+///
+/// struct Demo;
+/// impl Writeable for Demo {
+///     fn write_to_parts<S: writeable::PartsWrite + ?Sized>(
+///         &self,
+///         sink: &mut S,
+///     ) -> fmt::Result {
+///         sink.with_part(WORD, |w| w.write_str("foo"))
+///     }
+///     fn writeable_length_hint(&self) -> LengthHint {
+///         LengthHint::exact(3)
+///     }
+/// }
+///
+/// writeable::impl_display_with_writeable!(Demo);
+///
+/// assert_writeable_eq!(&Demo, "foo");
+/// assert_writeable_eq!(&Demo, "foo", "Message: {}", "Hello World");
+///
+/// assert_writeable_parts_eq!(&Demo, "foo", [(0, 3, WORD)]);
+/// assert_writeable_parts_eq!(
+///     &Demo,
+///     "foo",
+///     [(0, 3, WORD)],
+///     "Message: {}",
+///     "Hello World"
+/// );
+/// ```
+///
+/// [`*_parts_eq`]: assert_writeable_parts_eq
+#[macro_export]
+macro_rules! assert_writeable_eq {
+    ($actual_writeable:expr, $expected_str:expr $(,)?) => {
+        $crate::assert_writeable_eq!($actual_writeable, $expected_str, "")
+    };
+    ($actual_writeable:expr, $expected_str:expr, $($arg:tt)+) => {{
+        $crate::assert_writeable_eq!(@internal, $actual_writeable, $expected_str, $($arg)*);
+    }};
+    (@internal, $actual_writeable:expr, $expected_str:expr, $($arg:tt)+) => {{
+        let actual_writeable = &$actual_writeable;
+        let (actual_str, actual_parts) = $crate::_internal::writeable_to_parts_for_test(actual_writeable);
+        let actual_len = actual_str.len();
+        assert_eq!(actual_str, $expected_str, $($arg)*);
+        assert_eq!(actual_str, $crate::Writeable::write_to_string(actual_writeable), $($arg)+);
+        let length_hint = $crate::Writeable::writeable_length_hint(actual_writeable);
+        let lower = length_hint.0;
+        assert!(
+            lower <= actual_len,
+            "hint lower bound {lower} larger than actual length {actual_len}: {}",
+            format!($($arg)*),
+        );
+        if let Some(upper) = length_hint.1 {
+            assert!(
+                actual_len <= upper,
+                "hint upper bound {upper} smaller than actual length {actual_len}: {}",
+                format!($($arg)*),
+            );
+        }
+        assert_eq!(actual_writeable.to_string(), $expected_str);
+        actual_parts // return for assert_writeable_parts_eq
+    }};
+}
+
+/// See [`assert_writeable_eq`].
+#[macro_export]
+macro_rules! assert_writeable_parts_eq {
+    ($actual_writeable:expr, $expected_str:expr, $expected_parts:expr $(,)?) => {
+        $crate::assert_writeable_parts_eq!($actual_writeable, $expected_str, $expected_parts, "")
+    };
+    ($actual_writeable:expr, $expected_str:expr, $expected_parts:expr, $($arg:tt)+) => {{
+        let actual_parts = $crate::assert_writeable_eq!(@internal, $actual_writeable, $expected_str, $($arg)*);
+        assert_eq!(actual_parts, $expected_parts, $($arg)+);
+    }};
+}
diff --git a/vendor/writeable/src/ops.rs b/vendor/writeable/src/ops.rs
new file mode 100644
index 00000000..a4c1ffd7
--- /dev/null
+++ b/vendor/writeable/src/ops.rs
@@ -0,0 +1,294 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::LengthHint;
+
+impl core::ops::Add<LengthHint> for LengthHint {
+    type Output = Self;
+
+    fn add(self, other: LengthHint) -> Self {
+        LengthHint(
+            self.0.saturating_add(other.0),
+            match (self.1, other.1) {
+                (Some(c), Some(d)) => c.checked_add(d),
+                _ => None,
+            },
+        )
+    }
+}
+
+impl core::ops::AddAssign<LengthHint> for LengthHint {
+    fn add_assign(&mut self, other: Self) {
+        *self = *self + other;
+    }
+}
+
+impl core::iter::Sum<LengthHint> for LengthHint {
+    fn sum<I>(iter: I) -> Self
+    where
+        I: Iterator<Item = LengthHint>,
+    {
+        iter.fold(LengthHint::exact(0), core::ops::Add::add)
+    }
+}
+
+impl core::ops::Add<usize> for LengthHint {
+    type Output = Self;
+
+    fn add(self, other: usize) -> Self {
+        Self(
+            self.0.saturating_add(other),
+            self.1.and_then(|upper| upper.checked_add(other)),
+        )
+    }
+}
+
+impl core::ops::AddAssign<usize> for LengthHint {
+    fn add_assign(&mut self, other: usize) {
+        *self = *self + other;
+    }
+}
+
+impl core::ops::Mul<usize> for LengthHint {
+    type Output = Self;
+
+    fn mul(self, other: usize) -> Self {
+        Self(
+            self.0.saturating_mul(other),
+            self.1.and_then(|upper| upper.checked_mul(other)),
+        )
+    }
+}
+
+impl core::ops::MulAssign<usize> for LengthHint {
+    fn mul_assign(&mut self, other: usize) {
+        *self = *self * other;
+    }
+}
+
+impl core::ops::BitOr<LengthHint> for LengthHint {
+    type Output = Self;
+
+    /// Returns a new hint that is correct wherever `self` is correct, and wherever
+    /// `other` is correct.
+    ///
+    /// Example:
+    /// ```
+    /// # use writeable::{LengthHint, Writeable};
+    /// # use core::fmt;
+    /// # fn coin_flip() -> bool { true }
+    ///
+    /// struct NonDeterministicWriteable(String, String);
+    ///
+    /// impl Writeable for NonDeterministicWriteable {
+    ///     fn write_to<W: fmt::Write + ?Sized>(
+    ///         &self,
+    ///         sink: &mut W,
+    ///     ) -> fmt::Result {
+    ///         sink.write_str(if coin_flip() { &self.0 } else { &self.1 })
+    ///     }
+    ///
+    ///     fn writeable_length_hint(&self) -> LengthHint {
+    ///         LengthHint::exact(self.0.len()) | LengthHint::exact(self.1.len())
+    ///     }
+    /// }
+    ///
+    /// writeable::impl_display_with_writeable!(NonDeterministicWriteable);
+    /// ```
+    fn bitor(self, other: LengthHint) -> Self {
+        LengthHint(
+            Ord::min(self.0, other.0),
+            match (self.1, other.1) {
+                (Some(c), Some(d)) => Some(Ord::max(c, d)),
+                _ => None,
+            },
+        )
+    }
+}
+
+impl core::ops::BitOrAssign<LengthHint> for LengthHint {
+    fn bitor_assign(&mut self, other: Self) {
+        *self = *self | other;
+    }
+}
+
+impl core::iter::Sum<usize> for LengthHint {
+    fn sum<I>(iter: I) -> Self
+    where
+        I: Iterator<Item = usize>,
+    {
+        LengthHint::exact(iter.sum::<usize>())
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_add() {
+        assert_eq!(LengthHint::exact(3) + 2, LengthHint::exact(5));
+        assert_eq!(
+            LengthHint::exact(3) + LengthHint::exact(2),
+            LengthHint::exact(5)
+        );
+        assert_eq!(
+            LengthHint::exact(3) + LengthHint::undefined(),
+            LengthHint::at_least(3)
+        );
+
+        assert_eq!(LengthHint::undefined() + 2, LengthHint::at_least(2));
+        assert_eq!(
+            LengthHint::undefined() + LengthHint::exact(2),
+            LengthHint::at_least(2)
+        );
+        assert_eq!(
+            LengthHint::undefined() + LengthHint::undefined(),
+            LengthHint::undefined()
+        );
+
+        assert_eq!(
+            LengthHint::at_least(15) + LengthHint::exact(3),
+            LengthHint::at_least(18)
+        );
+
+        assert_eq!(
+            LengthHint::at_least(15) + LengthHint::at_most(3),
+            LengthHint::at_least(15)
+        );
+
+        assert_eq!(LengthHint::between(48, 92) + 5, LengthHint::between(53, 97));
+
+        let mut len = LengthHint::exact(5);
+        len += LengthHint::exact(3);
+        assert_eq!(len, LengthHint::exact(8));
+        len += 2;
+        assert_eq!(len, LengthHint::exact(10));
+        len += LengthHint::undefined();
+        assert_eq!(len, LengthHint::at_least(10));
+
+        len += LengthHint::exact(3);
+        assert_eq!(len, LengthHint::at_least(13));
+        len += 2;
+        assert_eq!(len, LengthHint::at_least(15));
+        len += LengthHint::undefined();
+        assert_eq!(len, LengthHint::at_least(15));
+
+        assert_eq!(
+            LengthHint::between(usize::MAX - 10, usize::MAX - 5) + LengthHint::exact(20),
+            LengthHint::at_least(usize::MAX)
+        );
+    }
+
+    #[test]
+    fn test_sum() {
+        let lens = [
+            LengthHint::exact(4),
+            LengthHint::exact(1),
+            LengthHint::exact(1),
+        ];
+        assert_eq!(
+            lens.iter().copied().sum::<LengthHint>(),
+            LengthHint::exact(6)
+        );
+
+        let lens = [
+            LengthHint::exact(4),
+            LengthHint::undefined(),
+            LengthHint::at_least(1),
+        ];
+        assert_eq!(
+            lens.iter().copied().sum::<LengthHint>(),
+            LengthHint::at_least(5)
+        );
+
+        let lens = [
+            LengthHint::exact(4),
+            LengthHint::undefined(),
+            LengthHint::at_most(1),
+        ];
+        assert_eq!(
+            lens.iter().copied().sum::<LengthHint>(),
+            LengthHint::at_least(4)
+        );
+
+        let lens = [4, 1, 1];
+        assert_eq!(
+            lens.iter().copied().sum::<LengthHint>(),
+            LengthHint::exact(6)
+        );
+    }
+
+    #[test]
+    fn test_mul() {
+        assert_eq!(LengthHint::exact(3) * 2, LengthHint::exact(6));
+
+        assert_eq!(LengthHint::undefined() * 2, LengthHint::undefined());
+
+        assert_eq!(
+            LengthHint::between(48, 92) * 2,
+            LengthHint::between(96, 184)
+        );
+
+        let mut len = LengthHint::exact(5);
+        len *= 2;
+        assert_eq!(len, LengthHint::exact(10));
+
+        assert_eq!(
+            LengthHint::between(usize::MAX - 10, usize::MAX - 5) * 2,
+            LengthHint::at_least(usize::MAX)
+        );
+    }
+
+    #[test]
+    fn test_bitor() {
+        assert_eq!(
+            LengthHint::exact(3) | LengthHint::exact(2),
+            LengthHint::between(2, 3)
+        );
+        assert_eq!(
+            LengthHint::exact(3) | LengthHint::undefined(),
+            LengthHint::undefined()
+        );
+
+        assert_eq!(
+            LengthHint::undefined() | LengthHint::undefined(),
+            LengthHint::undefined()
+        );
+
+        assert_eq!(
+            LengthHint::exact(10) | LengthHint::exact(10),
+            LengthHint::exact(10)
+        );
+
+        assert_eq!(
+            LengthHint::at_least(15) | LengthHint::exact(3),
+            LengthHint::at_least(3)
+        );
+
+        assert_eq!(
+            LengthHint::at_least(15) | LengthHint::at_most(18),
+            LengthHint::undefined()
+        );
+
+        assert_eq!(
+            LengthHint::at_least(15) | LengthHint::at_least(18),
+            LengthHint::at_least(15)
+        );
+
+        assert_eq!(
+            LengthHint::at_most(15) | LengthHint::at_most(18),
+            LengthHint::at_most(18)
+        );
+
+        assert_eq!(
+            LengthHint::between(5, 10) | LengthHint::at_most(3),
+            LengthHint::at_most(10)
+        );
+
+        let mut len = LengthHint::exact(5);
+        len |= LengthHint::exact(3);
+        assert_eq!(len, LengthHint::between(5, 3));
+    }
+}
diff --git a/vendor/writeable/src/parts_write_adapter.rs b/vendor/writeable/src/parts_write_adapter.rs
new file mode 100644
index 00000000..eacf3a2c
--- /dev/null
+++ b/vendor/writeable/src/parts_write_adapter.rs
@@ -0,0 +1,115 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::*;
+
+/// A wrapper around a type implementing [`fmt::Write`] that implements [`PartsWrite`].
+#[derive(Debug)]
+#[allow(clippy::exhaustive_structs)] // newtype
+pub struct CoreWriteAsPartsWrite<W: fmt::Write + ?Sized>(pub W);
+
+impl<W: fmt::Write + ?Sized> fmt::Write for CoreWriteAsPartsWrite<W> {
+    #[inline]
+    fn write_str(&mut self, s: &str) -> fmt::Result {
+        self.0.write_str(s)
+    }
+
+    #[inline]
+    fn write_char(&mut self, c: char) -> fmt::Result {
+        self.0.write_char(c)
+    }
+}
+
+impl<W: fmt::Write + ?Sized> PartsWrite for CoreWriteAsPartsWrite<W> {
+    type SubPartsWrite = CoreWriteAsPartsWrite<W>;
+
+    #[inline]
+    fn with_part(
+        &mut self,
+        _part: Part,
+        mut f: impl FnMut(&mut Self::SubPartsWrite) -> fmt::Result,
+    ) -> fmt::Result {
+        f(self)
+    }
+}
+
+/// A [`Writeable`] that writes out the given part.
+///
+/// # Examples
+///
+/// ```
+/// use writeable::adapters::WithPart;
+/// use writeable::assert_writeable_parts_eq;
+/// use writeable::Part;
+///
+/// // Simple usage:
+///
+/// const PART: Part = Part {
+///     category: "foo",
+///     value: "bar",
+/// };
+///
+/// assert_writeable_parts_eq!(
+///     WithPart {
+///         writeable: "Hello World",
+///         part: PART
+///     },
+///     "Hello World",
+///     [(0, 11, PART)],
+/// );
+///
+/// // Can be nested:
+///
+/// const PART2: Part = Part {
+///     category: "foo2",
+///     value: "bar2",
+/// };
+///
+/// assert_writeable_parts_eq!(
+///     WithPart {
+///         writeable: WithPart {
+///             writeable: "Hello World",
+///             part: PART
+///         },
+///         part: PART2
+///     },
+///     "Hello World",
+///     [(0, 11, PART), (0, 11, PART2)],
+/// );
+/// ```
+#[derive(Debug)]
+#[allow(clippy::exhaustive_structs)] // public adapter
+pub struct WithPart<T: ?Sized> {
+    pub part: Part,
+    pub writeable: T,
+}
+
+impl<T: Writeable + ?Sized> Writeable for WithPart<T> {
+    #[inline]
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        self.writeable.write_to(sink)
+    }
+
+    #[inline]
+    fn write_to_parts<W: PartsWrite + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        sink.with_part(self.part, |w| self.writeable.write_to_parts(w))
+    }
+
+    #[inline]
+    fn writeable_length_hint(&self) -> LengthHint {
+        self.writeable.writeable_length_hint()
+    }
+
+    #[inline]
+    fn write_to_string(&self) -> Cow<str> {
+        self.writeable.write_to_string()
+    }
+}
+
+impl<T: Writeable + ?Sized> fmt::Display for WithPart<T> {
+    #[inline]
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        Writeable::write_to(&self, f)
+    }
+}
diff --git a/vendor/writeable/src/testing.rs b/vendor/writeable/src/testing.rs
new file mode 100644
index 00000000..078ea9e2
--- /dev/null
+++ b/vendor/writeable/src/testing.rs
@@ -0,0 +1,78 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::*;
+use alloc::string::String;
+use alloc::vec::Vec;
+
+pub(crate) struct TestWriter {
+    pub(crate) string: String,
+    pub(crate) parts: Vec<(usize, usize, Part)>,
+}
+
+impl TestWriter {
+    pub(crate) fn finish(mut self) -> (String, Vec<(usize, usize, Part)>) {
+        // Sort by first open and last closed
+        self.parts
+            .sort_unstable_by_key(|(begin, end, _)| (*begin, end.wrapping_neg()));
+        (self.string, self.parts)
+    }
+}
+
+impl fmt::Write for TestWriter {
+    fn write_str(&mut self, s: &str) -> fmt::Result {
+        self.string.write_str(s)
+    }
+    fn write_char(&mut self, c: char) -> fmt::Result {
+        self.string.write_char(c)
+    }
+}
+
+impl PartsWrite for TestWriter {
+    type SubPartsWrite = Self;
+    fn with_part(
+        &mut self,
+        part: Part,
+        mut f: impl FnMut(&mut Self::SubPartsWrite) -> fmt::Result,
+    ) -> fmt::Result {
+        let start = self.string.len();
+        f(self)?;
+        let end = self.string.len();
+        if start < end {
+            self.parts.push((start, end, part));
+        }
+        Ok(())
+    }
+}
+
+#[allow(clippy::type_complexity)]
+pub fn writeable_to_parts_for_test<W: Writeable>(
+    writeable: &W,
+) -> (String, Vec<(usize, usize, Part)>) {
+    let mut writer = TestWriter {
+        string: alloc::string::String::new(),
+        parts: Vec::new(),
+    };
+    #[allow(clippy::expect_used)] // for test code
+    writeable
+        .write_to_parts(&mut writer)
+        .expect("String writer infallible");
+    writer.finish()
+}
+
+#[allow(clippy::type_complexity)]
+pub fn try_writeable_to_parts_for_test<W: TryWriteable>(
+    writeable: &W,
+) -> (String, Vec<(usize, usize, Part)>, Option<W::Error>) {
+    let mut writer = TestWriter {
+        string: alloc::string::String::new(),
+        parts: Vec::new(),
+    };
+    #[allow(clippy::expect_used)] // for test code
+    let result = writeable
+        .try_write_to_parts(&mut writer)
+        .expect("String writer infallible");
+    let (actual_str, actual_parts) = writer.finish();
+    (actual_str, actual_parts, result.err())
+}
diff --git a/vendor/writeable/src/to_string_or_borrow.rs b/vendor/writeable/src/to_string_or_borrow.rs
new file mode 100644
index 00000000..c1eb4236
--- /dev/null
+++ b/vendor/writeable/src/to_string_or_borrow.rs
@@ -0,0 +1,210 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::Writeable;
+use alloc::borrow::Cow;
+use alloc::string::String;
+use core::fmt;
+
+/// Bytes that have been partially validated as UTF-8 up to an offset.
+struct PartiallyValidatedUtf8<'a> {
+    // Safety Invariants:
+    // 1. The offset is less than or equal to the length of the slice.
+    // 2. The slice is valid UTF-8 up to the offset.
+    slice: &'a [u8],
+    offset: usize,
+}
+
+impl<'a> PartiallyValidatedUtf8<'a> {
+    fn new(slice: &'a [u8]) -> Self {
+        // Safety: Field invariants maintained here trivially:
+        //   1. The offset 0 is ≤ all possible lengths of slice
+        //   2. The slice contains nothing up to the offset zero
+        Self { slice, offset: 0 }
+    }
+
+    /// Check whether the given string is the next chunk of unvalidated bytes.
+    /// If so, increment offset and return true. Otherwise, return false.
+    fn try_push(&mut self, valid_str: &str) -> bool {
+        let new_offset = self.offset + valid_str.len();
+        if self.slice.get(self.offset..new_offset) == Some(valid_str.as_bytes()) {
+            // Safety: Field invariants maintained here:
+            //   1. In the line above, `self.slice.get()` returned `Some()` for `new_offset` at
+            //      the end of a `Range`, so `new_offset` is ≤ the length of `self.slice`.
+            //   2. By invariant, we have already validated the string up to `self.offset`, and
+            //      the portion of the slice between `self.offset` and `new_offset` is equal to
+            //      `valid_str`, which is a `&str`, so the string is valid up to `new_offset`.
+            self.offset = new_offset;
+            true
+        } else {
+            false
+        }
+    }
+
+    /// Return the validated portion as `&str`.
+    fn validated_as_str(&self) -> &'a str {
+        debug_assert!(self.offset <= self.slice.len());
+        // Safety: self.offset is a valid end index in a range (from field invariant)
+        let valid_slice = unsafe { self.slice.get_unchecked(..self.offset) };
+        debug_assert!(core::str::from_utf8(valid_slice).is_ok());
+        // Safety: the UTF-8 of slice has been validated up to offset (from field invariant)
+        unsafe { core::str::from_utf8_unchecked(valid_slice) }
+    }
+}
+
+enum SliceOrString<'a> {
+    Slice(PartiallyValidatedUtf8<'a>),
+    String(String),
+}
+
+/// This is an infallible impl. Functions always return Ok, not Err.
+impl fmt::Write for SliceOrString<'_> {
+    #[inline]
+    fn write_str(&mut self, other: &str) -> fmt::Result {
+        match self {
+            SliceOrString::Slice(slice) => {
+                if !slice.try_push(other) {
+                    // We failed to match. Convert to owned.
+                    let valid_str = slice.validated_as_str();
+                    let mut owned = String::with_capacity(valid_str.len() + other.len());
+                    owned.push_str(valid_str);
+                    owned.push_str(other);
+                    *self = SliceOrString::String(owned);
+                }
+                Ok(())
+            }
+            SliceOrString::String(owned) => owned.write_str(other),
+        }
+    }
+}
+
+impl<'a> SliceOrString<'a> {
+    #[inline]
+    fn new(slice: &'a [u8]) -> Self {
+        Self::Slice(PartiallyValidatedUtf8::new(slice))
+    }
+
+    #[inline]
+    fn finish(self) -> Cow<'a, str> {
+        match self {
+            SliceOrString::Slice(slice) => Cow::Borrowed(slice.validated_as_str()),
+            SliceOrString::String(owned) => Cow::Owned(owned),
+        }
+    }
+}
+
+/// Writes the contents of a `Writeable` to a string, returning a reference
+/// to a slice if it matches the provided reference bytes, and allocating a
+/// String otherwise.
+///
+/// This function is useful if you have borrowed bytes which you expect
+/// to be equal to a writeable a high percentage of the time.
+///
+/// You can also use this function to make a more efficient implementation of
+/// [`Writeable::write_to_string`].
+///
+/// # Examples
+///
+/// Basic usage and behavior:
+///
+/// ```
+/// use std::fmt;
+/// use std::borrow::Cow;
+/// use writeable::Writeable;
+///
+/// struct WelcomeMessage<'s> {
+///     pub name: &'s str,
+/// }
+///
+/// impl<'s> Writeable for WelcomeMessage<'s> {
+///     // see impl in Writeable docs
+/// #    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+/// #        sink.write_str("Hello, ")?;
+/// #        sink.write_str(self.name)?;
+/// #        sink.write_char('!')?;
+/// #        Ok(())
+/// #    }
+/// }
+///
+/// let message = WelcomeMessage { name: "Alice" };
+///
+/// assert!(matches!(
+///     writeable::to_string_or_borrow(&message, b""),
+///     Cow::Owned(s) if s == "Hello, Alice!"
+/// ));
+/// assert!(matches!(
+///     writeable::to_string_or_borrow(&message, b"Hello"),
+///     Cow::Owned(s) if s == "Hello, Alice!"
+/// ));
+/// assert!(matches!(
+///     writeable::to_string_or_borrow(&message, b"Hello, Bob!"),
+///     Cow::Owned(s) if s == "Hello, Alice!"
+/// ));
+/// assert!(matches!(
+///     writeable::to_string_or_borrow(&message, b"Hello, Alice!"),
+///     Cow::Borrowed("Hello, Alice!")
+/// ));
+///
+/// // Borrowing can use a prefix:
+/// assert!(matches!(
+///     writeable::to_string_or_borrow(&message, b"Hello, Alice!..\xFF\x00\xFF"),
+///     Cow::Borrowed("Hello, Alice!")
+/// ));
+/// ```
+///
+/// Example use case: a function that transforms a string to lowercase.
+/// We are also able to write a more efficient implementation of
+/// [`Writeable::write_to_string`] in this situation.
+///
+/// ```
+/// use std::fmt;
+/// use std::borrow::Cow;
+/// use writeable::Writeable;
+///
+/// struct MakeAsciiLower<'a>(&'a str);
+///
+/// impl<'a> Writeable for MakeAsciiLower<'a> {
+///     fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+///         for c in self.0.chars() {
+///             sink.write_char(c.to_ascii_lowercase())?;
+///         }
+///         Ok(())
+///     }
+///     #[inline]
+///     fn write_to_string(&self) -> Cow<str> {
+///         writeable::to_string_or_borrow(self, self.0.as_bytes())
+///     }
+/// }
+///
+/// fn make_lowercase(input: &str) -> Cow<str> {
+///     let writeable = MakeAsciiLower(input);
+///     writeable::to_string_or_borrow(&writeable, input.as_bytes())
+/// }
+///
+/// assert!(matches!(
+///     make_lowercase("this is lowercase"),
+///     Cow::Borrowed("this is lowercase")
+/// ));
+/// assert!(matches!(
+///     make_lowercase("this is UPPERCASE"),
+///     Cow::Owned(s) if s == "this is uppercase"
+/// ));
+///
+/// assert!(matches!(
+///     MakeAsciiLower("this is lowercase").write_to_string(),
+///     Cow::Borrowed("this is lowercase")
+/// ));
+/// assert!(matches!(
+///     MakeAsciiLower("this is UPPERCASE").write_to_string(),
+///     Cow::Owned(s) if s == "this is uppercase"
+/// ));
+/// ```
+pub fn to_string_or_borrow<'a>(
+    writeable: &impl Writeable,
+    reference_bytes: &'a [u8],
+) -> Cow<'a, str> {
+    let mut sink = SliceOrString::new(reference_bytes);
+    let _ = writeable.write_to(&mut sink);
+    sink.finish()
+}
diff --git a/vendor/writeable/src/try_writeable.rs b/vendor/writeable/src/try_writeable.rs
new file mode 100644
index 00000000..aa918bbd
--- /dev/null
+++ b/vendor/writeable/src/try_writeable.rs
@@ -0,0 +1,439 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use crate::parts_write_adapter::CoreWriteAsPartsWrite;
+use core::convert::Infallible;
+
+/// A writeable object that can fail while writing.
+///
+/// The default [`Writeable`] trait returns a [`fmt::Error`], which originates from the sink.
+/// In contrast, this trait allows the _writeable itself_ to trigger an error as well.
+///
+/// Implementations are expected to always make a _best attempt_ at writing to the sink
+/// and should write replacement values in the error state. Therefore, the returned `Result`
+/// can be safely ignored to emulate a "lossy" mode.
+///
+/// Any error substrings should be annotated with [`Part::ERROR`].
+///
+/// # Implementer Notes
+///
+/// This trait requires that implementers make a _best attempt_ at writing to the sink,
+/// _even in the error state_, such as with a placeholder or fallback string.
+///
+/// In [`TryWriteable::try_write_to_parts()`], error substrings should be annotated with
+/// [`Part::ERROR`]. Because of this, writing to parts is not default-implemented like
+/// it is on [`Writeable`].
+///
+/// The trait is implemented on [`Result<T, E>`] where `T` and `E` both implement [`Writeable`];
+/// In the `Ok` case, `T` is written, and in the `Err` case, `E` is written as a fallback value.
+/// This impl, which writes [`Part::ERROR`], can be used as a basis for more advanced impls.
+///
+/// # Examples
+///
+/// Implementing on a custom type:
+///
+/// ```
+/// use core::fmt;
+/// use writeable::LengthHint;
+/// use writeable::PartsWrite;
+/// use writeable::TryWriteable;
+///
+/// #[derive(Debug, PartialEq, Eq)]
+/// enum HelloWorldWriteableError {
+///     MissingName,
+/// }
+///
+/// #[derive(Debug, PartialEq, Eq)]
+/// struct HelloWorldWriteable {
+///     pub name: Option<&'static str>,
+/// }
+///
+/// impl TryWriteable for HelloWorldWriteable {
+///     type Error = HelloWorldWriteableError;
+///
+///     fn try_write_to_parts<S: PartsWrite + ?Sized>(
+///         &self,
+///         sink: &mut S,
+///     ) -> Result<Result<(), Self::Error>, fmt::Error> {
+///         sink.write_str("Hello, ")?;
+///         // Use `impl TryWriteable for Result` to generate the error part:
+///         let err = self.name.ok_or("nobody").try_write_to_parts(sink)?.err();
+///         sink.write_char('!')?;
+///         // Return a doubly-wrapped Result.
+///         // The outer Result is for fmt::Error, handled by the `?`s above.
+///         // The inner Result is for our own Self::Error.
+///         if err.is_none() {
+///             Ok(Ok(()))
+///         } else {
+///             Ok(Err(HelloWorldWriteableError::MissingName))
+///         }
+///     }
+///
+///     fn writeable_length_hint(&self) -> LengthHint {
+///         self.name.ok_or("nobody").writeable_length_hint() + 8
+///     }
+/// }
+///
+/// // Success case:
+/// writeable::assert_try_writeable_eq!(
+///     HelloWorldWriteable {
+///         name: Some("Alice")
+///     },
+///     "Hello, Alice!"
+/// );
+///
+/// // Failure case, including the ERROR part:
+/// writeable::assert_try_writeable_parts_eq!(
+///     HelloWorldWriteable { name: None },
+///     "Hello, nobody!",
+///     Err(HelloWorldWriteableError::MissingName),
+///     [(7, 13, writeable::Part::ERROR)]
+/// );
+/// ```
+pub trait TryWriteable {
+    type Error;
+
+    /// Writes the content of this writeable to a sink.
+    ///
+    /// If the sink hits an error, writing immediately ends,
+    /// `Err(`[`fmt::Error`]`)` is returned, and the sink does not contain valid output.
+    ///
+    /// If the writeable hits an error, writing is continued with a replacement value,
+    /// `Ok(Err(`[`TryWriteable::Error`]`))` is returned, and the caller may continue using the sink.
+    ///
+    /// # Lossy Mode
+    ///
+    /// The [`fmt::Error`] should always be handled, but the [`TryWriteable::Error`] can be
+    /// ignored if a fallback string is desired instead of an error.
+    ///
+    /// To handle the sink error, but not the writeable error, write:
+    ///
+    /// ```
+    /// # use writeable::TryWriteable;
+    /// # let my_writeable: Result<&str, &str> = Ok("");
+    /// # let mut sink = String::new();
+    /// let _ = my_writeable.try_write_to(&mut sink)?;
+    /// # Ok::<(), core::fmt::Error>(())
+    /// ```
+    ///
+    /// # Examples
+    ///
+    /// The following examples use `Result<&str, usize>`, which implements [`TryWriteable`] because both `&str` and `usize` do.
+    ///
+    /// Success case:
+    ///
+    /// ```
+    /// use writeable::TryWriteable;
+    ///
+    /// let w: Result<&str, usize> = Ok("success");
+    /// let mut sink = String::new();
+    /// let result = w.try_write_to(&mut sink);
+    ///
+    /// assert_eq!(result, Ok(Ok(())));
+    /// assert_eq!(sink, "success");
+    /// ```
+    ///
+    /// Failure case:
+    ///
+    /// ```
+    /// use writeable::TryWriteable;
+    ///
+    /// let w: Result<&str, usize> = Err(44);
+    /// let mut sink = String::new();
+    /// let result = w.try_write_to(&mut sink);
+    ///
+    /// assert_eq!(result, Ok(Err(44)));
+    /// assert_eq!(sink, "44");
+    /// ```
+    fn try_write_to<W: fmt::Write + ?Sized>(
+        &self,
+        sink: &mut W,
+    ) -> Result<Result<(), Self::Error>, fmt::Error> {
+        self.try_write_to_parts(&mut CoreWriteAsPartsWrite(sink))
+    }
+
+    /// Writes the content of this writeable to a sink with parts (annotations).
+    ///
+    /// For more information, see:
+    ///
+    /// - [`TryWriteable::try_write_to()`] for the general behavior.
+    /// - [`TryWriteable`] for an example with parts.
+    /// - [`Part`] for more about parts.
+    fn try_write_to_parts<S: PartsWrite + ?Sized>(
+        &self,
+        sink: &mut S,
+    ) -> Result<Result<(), Self::Error>, fmt::Error>;
+
+    /// Returns a hint for the number of UTF-8 bytes that will be written to the sink.
+    ///
+    /// This function returns the length of the "lossy mode" string; for more information,
+    /// see [`TryWriteable::try_write_to()`].
+    fn writeable_length_hint(&self) -> LengthHint {
+        LengthHint::undefined()
+    }
+
+    /// Writes the content of this writeable to a string.
+    ///
+    /// In the failure case, this function returns the error and the best-effort string ("lossy mode").
+    ///
+    /// Examples
+    ///
+    /// ```
+    /// # use std::borrow::Cow;
+    /// # use writeable::TryWriteable;
+    /// // use the best-effort string
+    /// let r1: Cow<str> = Ok::<&str, u8>("ok")
+    ///     .try_write_to_string()
+    ///     .unwrap_or_else(|(_, s)| s);
+    /// // propagate the error
+    /// let r2: Result<Cow<str>, u8> = Ok::<&str, u8>("ok")
+    ///     .try_write_to_string()
+    ///     .map_err(|(e, _)| e);
+    /// ```
+    fn try_write_to_string(&self) -> Result<Cow<str>, (Self::Error, Cow<str>)> {
+        let hint = self.writeable_length_hint();
+        if hint.is_zero() {
+            return Ok(Cow::Borrowed(""));
+        }
+        let mut output = String::with_capacity(hint.capacity());
+        match self
+            .try_write_to(&mut output)
+            .unwrap_or_else(|fmt::Error| Ok(()))
+        {
+            Ok(()) => Ok(Cow::Owned(output)),
+            Err(e) => Err((e, Cow::Owned(output))),
+        }
+    }
+}
+
+impl<T, E> TryWriteable for Result<T, E>
+where
+    T: Writeable,
+    E: Writeable + Clone,
+{
+    type Error = E;
+
+    #[inline]
+    fn try_write_to<W: fmt::Write + ?Sized>(
+        &self,
+        sink: &mut W,
+    ) -> Result<Result<(), Self::Error>, fmt::Error> {
+        match self {
+            Ok(t) => t.write_to(sink).map(Ok),
+            Err(e) => e.write_to(sink).map(|()| Err(e.clone())),
+        }
+    }
+
+    #[inline]
+    fn try_write_to_parts<S: PartsWrite + ?Sized>(
+        &self,
+        sink: &mut S,
+    ) -> Result<Result<(), Self::Error>, fmt::Error> {
+        match self {
+            Ok(t) => t.write_to_parts(sink).map(Ok),
+            Err(e) => sink
+                .with_part(Part::ERROR, |sink| e.write_to_parts(sink))
+                .map(|()| Err(e.clone())),
+        }
+    }
+
+    #[inline]
+    fn writeable_length_hint(&self) -> LengthHint {
+        match self {
+            Ok(t) => t.writeable_length_hint(),
+            Err(e) => e.writeable_length_hint(),
+        }
+    }
+
+    #[inline]
+    fn try_write_to_string(&self) -> Result<Cow<str>, (Self::Error, Cow<str>)> {
+        match self {
+            Ok(t) => Ok(t.write_to_string()),
+            Err(e) => Err((e.clone(), e.write_to_string())),
+        }
+    }
+}
+
+/// A wrapper around [`TryWriteable`] that implements [`Writeable`]
+/// if [`TryWriteable::Error`] is [`Infallible`].
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
+#[repr(transparent)]
+#[allow(clippy::exhaustive_structs)] // transparent newtype
+pub struct TryWriteableInfallibleAsWriteable<T>(pub T);
+
+impl<T> Writeable for TryWriteableInfallibleAsWriteable<T>
+where
+    T: TryWriteable<Error = Infallible>,
+{
+    #[inline]
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        match self.0.try_write_to(sink) {
+            Ok(Ok(())) => Ok(()),
+            Ok(Err(infallible)) => match infallible {},
+            Err(e) => Err(e),
+        }
+    }
+
+    #[inline]
+    fn write_to_parts<S: PartsWrite + ?Sized>(&self, sink: &mut S) -> fmt::Result {
+        match self.0.try_write_to_parts(sink) {
+            Ok(Ok(())) => Ok(()),
+            Ok(Err(infallible)) => match infallible {},
+            Err(e) => Err(e),
+        }
+    }
+
+    #[inline]
+    fn writeable_length_hint(&self) -> LengthHint {
+        self.0.writeable_length_hint()
+    }
+
+    #[inline]
+    fn write_to_string(&self) -> Cow<str> {
+        match self.0.try_write_to_string() {
+            Ok(s) => s,
+            Err((infallible, _)) => match infallible {},
+        }
+    }
+}
+
+impl<T> fmt::Display for TryWriteableInfallibleAsWriteable<T>
+where
+    T: TryWriteable<Error = Infallible>,
+{
+    #[inline]
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        self.write_to(f)
+    }
+}
+
+/// A wrapper around [`Writeable`] that implements [`TryWriteable`]
+/// with [`TryWriteable::Error`] set to [`Infallible`].
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
+#[repr(transparent)]
+#[allow(clippy::exhaustive_structs)] // transparent newtype
+pub struct WriteableAsTryWriteableInfallible<T>(pub T);
+
+impl<T> TryWriteable for WriteableAsTryWriteableInfallible<T>
+where
+    T: Writeable,
+{
+    type Error = Infallible;
+
+    #[inline]
+    fn try_write_to<W: fmt::Write + ?Sized>(
+        &self,
+        sink: &mut W,
+    ) -> Result<Result<(), Infallible>, fmt::Error> {
+        self.0.write_to(sink).map(Ok)
+    }
+
+    #[inline]
+    fn try_write_to_parts<S: PartsWrite + ?Sized>(
+        &self,
+        sink: &mut S,
+    ) -> Result<Result<(), Infallible>, fmt::Error> {
+        self.0.write_to_parts(sink).map(Ok)
+    }
+
+    #[inline]
+    fn writeable_length_hint(&self) -> LengthHint {
+        self.0.writeable_length_hint()
+    }
+
+    #[inline]
+    fn try_write_to_string(&self) -> Result<Cow<str>, (Infallible, Cow<str>)> {
+        Ok(self.0.write_to_string())
+    }
+}
+
+/// Testing macros for types implementing [`TryWriteable`].
+///
+/// Arguments, in order:
+///
+/// 1. The [`TryWriteable`] under test
+/// 2. The expected string value
+/// 3. The expected result value, or `Ok(())` if omitted
+/// 3. [`*_parts_eq`] only: a list of parts (`[(start, end, Part)]`)
+///
+/// Any remaining arguments get passed to `format!`
+///
+/// The macros tests the following:
+///
+/// - Equality of string content
+/// - Equality of parts ([`*_parts_eq`] only)
+/// - Validity of size hint
+///
+/// For a usage example, see [`TryWriteable`].
+///
+/// [`*_parts_eq`]: assert_try_writeable_parts_eq
+#[macro_export]
+macro_rules! assert_try_writeable_eq {
+    ($actual_writeable:expr, $expected_str:expr $(,)?) => {
+        $crate::assert_try_writeable_eq!($actual_writeable, $expected_str, Ok(()))
+    };
+    ($actual_writeable:expr, $expected_str:expr, $expected_result:expr $(,)?) => {
+        $crate::assert_try_writeable_eq!($actual_writeable, $expected_str, $expected_result, "")
+    };
+    ($actual_writeable:expr, $expected_str:expr, $expected_result:expr, $($arg:tt)+) => {{
+        $crate::assert_try_writeable_eq!(@internal, $actual_writeable, $expected_str, $expected_result, $($arg)*);
+    }};
+    (@internal, $actual_writeable:expr, $expected_str:expr, $expected_result:expr, $($arg:tt)+) => {{
+        use $crate::TryWriteable;
+        let actual_writeable = &$actual_writeable;
+        let (actual_str, actual_parts, actual_error) = $crate::_internal::try_writeable_to_parts_for_test(actual_writeable);
+        assert_eq!(actual_str, $expected_str, $($arg)*);
+        assert_eq!(actual_error, Result::<(), _>::from($expected_result).err(), $($arg)*);
+        let actual_result = match actual_writeable.try_write_to_string() {
+            Ok(actual_cow_str) => {
+                assert_eq!(actual_cow_str, $expected_str, $($arg)+);
+                Ok(())
+            }
+            Err((e, actual_cow_str)) => {
+                assert_eq!(actual_cow_str, $expected_str, $($arg)+);
+                Err(e)
+            }
+        };
+        assert_eq!(actual_result, Result::<(), _>::from($expected_result), $($arg)*);
+        let length_hint = actual_writeable.writeable_length_hint();
+        assert!(
+            length_hint.0 <= actual_str.len(),
+            "hint lower bound {} larger than actual length {}: {}",
+            length_hint.0, actual_str.len(), format!($($arg)*),
+        );
+        if let Some(upper) = length_hint.1 {
+            assert!(
+                actual_str.len() <= upper,
+                "hint upper bound {} smaller than actual length {}: {}",
+                length_hint.0, actual_str.len(), format!($($arg)*),
+            );
+        }
+        actual_parts // return for assert_try_writeable_parts_eq
+    }};
+}
+
+/// See [`assert_try_writeable_eq`].
+#[macro_export]
+macro_rules! assert_try_writeable_parts_eq {
+    ($actual_writeable:expr, $expected_str:expr, $expected_parts:expr $(,)?) => {
+        $crate::assert_try_writeable_parts_eq!($actual_writeable, $expected_str, Ok(()), $expected_parts)
+    };
+    ($actual_writeable:expr, $expected_str:expr, $expected_result:expr, $expected_parts:expr $(,)?) => {
+        $crate::assert_try_writeable_parts_eq!($actual_writeable, $expected_str, $expected_result, $expected_parts, "")
+    };
+    ($actual_writeable:expr, $expected_str:expr, $expected_result:expr, $expected_parts:expr, $($arg:tt)+) => {{
+        let actual_parts = $crate::assert_try_writeable_eq!(@internal, $actual_writeable, $expected_str, $expected_result, $($arg)*);
+        assert_eq!(actual_parts, $expected_parts, $($arg)+);
+    }};
+}
+
+#[test]
+fn test_result_try_writeable() {
+    let mut result: Result<&str, usize> = Ok("success");
+    assert_try_writeable_eq!(result, "success");
+    result = Err(44);
+    assert_try_writeable_eq!(result, "44", Err(44));
+    assert_try_writeable_parts_eq!(result, "44", Err(44), [(0, 2, Part::ERROR)])
+}
diff --git a/vendor/writeable/tests/data/data.rs b/vendor/writeable/tests/data/data.rs
new file mode 100644
index 00000000..bc9dab6c
--- /dev/null
+++ b/vendor/writeable/tests/data/data.rs
@@ -0,0 +1,26 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[allow(dead_code)]
+pub const KEBAB_CASE_STRINGS: &[&str] = &[
+    "ca",
+    "ca-ÉS",
+    "ca-ÉS-u-ca-buddhist",
+    "ca-ÉS-valencia",
+    "ca-ÉS-x-gbp",
+    "ca-ÉS-x-gbp-short",
+    "ca-ÉS-x-usd",
+    "ca-ÉS-xyzabc",
+    "ca-x-eur",
+    "cat",
+    "cat-bus",
+    "cat-🚐",
+    "pl-Latn-PL",
+    "und",
+    "und-fonipa",
+    "und-u-ca-hebrew",
+    "und-u-ca-japanese",
+    "und-x-mxn",
+    "zh",
+];
diff --git a/vendor/writeable/tests/writeable.rs b/vendor/writeable/tests/writeable.rs
new file mode 100644
index 00000000..b48310e8
--- /dev/null
+++ b/vendor/writeable/tests/writeable.rs
@@ -0,0 +1,34 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use std::fmt;
+use writeable::assert_writeable_eq;
+use writeable::LengthHint;
+use writeable::Writeable;
+
+/// A sample type implementing Writeable
+struct WriteableMessage<'s> {
+    message: &'s str,
+}
+
+impl Writeable for WriteableMessage<'_> {
+    fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+        sink.write_str(self.message)
+    }
+
+    fn writeable_length_hint(&self) -> LengthHint {
+        LengthHint::exact(self.message.len())
+    }
+}
+
+writeable::impl_display_with_writeable!(WriteableMessage<'_>);
+
+#[test]
+fn test_basic() {
+    let input_string = "hello world";
+    let message = WriteableMessage {
+        message: input_string,
+    };
+    assert_writeable_eq!(&message, input_string);
+}
diff --git a/vendor/yoke-derive/.cargo-checksum.json b/vendor/yoke-derive/.cargo-checksum.json
new file mode 100644
index 00000000..63ddbb3c
--- /dev/null
+++ b/vendor/yoke-derive/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"9a6fc7acaff42e0d3bd586c043f517afa723aafac6e7f1d4f9e84aab265407d4","Cargo.toml":"72441bd7e852f3174204382615ca6d32fb737ff7aafb455f75b1102c5ab9fe3f","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"5004c9b0aa6e1f4d0e5c8919e14e0bad0cc6753cc589d82aa9521e1bc1fd39bf","examples/yoke_derive.rs":"caba668939f96030c2032f10be42904a2f1aa4167421725bba3ce8e3c4fbc147","src/lib.rs":"76c93e8fbae6bfd0fe7d3ef4f974bf5c42c620d77da137a6147bef3aba833235","src/visitor.rs":"825c8daa418f8873fa6e4143c326f70c04c713f5a0a8d8de7f73a4dbc7188811"},"package":"38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"}
\ No newline at end of file
diff --git a/vendor/yoke-derive/Cargo.lock b/vendor/yoke-derive/Cargo.lock
new file mode 100644
index 00000000..18c750d1
--- /dev/null
+++ b/vendor/yoke-derive/Cargo.lock
@@ -0,0 +1,59 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.98"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
diff --git a/vendor/yoke-derive/Cargo.toml b/vendor/yoke-derive/Cargo.toml
new file mode 100644
index 00000000..0e1fef2b
--- /dev/null
+++ b/vendor/yoke-derive/Cargo.toml
@@ -0,0 +1,66 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+name = "yoke-derive"
+version = "0.8.0"
+authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
+build = false
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Custom derive for the yoke crate"
+readme = "README.md"
+keywords = [
+    "zerocopy",
+    "serialization",
+    "lifetime",
+    "borrow",
+    "self-referential",
+]
+categories = [
+    "data-structures",
+    "memory-management",
+    "caching",
+    "no-std",
+]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.workspaces]
+independent = true
+
+[lib]
+name = "yoke_derive"
+path = "src/lib.rs"
+proc-macro = true
+
+[[example]]
+name = "yoke_derive"
+path = "examples/yoke_derive.rs"
+
+[dependencies.proc-macro2]
+version = "1.0.61"
+
+[dependencies.quote]
+version = "1.0.28"
+
+[dependencies.syn]
+version = "2.0.21"
+features = ["fold"]
+
+[dependencies.synstructure]
+version = "0.13.0"
+
+[dev-dependencies]
diff --git a/vendor/yoke-derive/LICENSE b/vendor/yoke-derive/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/yoke-derive/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/yoke-derive/README.md b/vendor/yoke-derive/README.md
new file mode 100644
index 00000000..04ef27e0
--- /dev/null
+++ b/vendor/yoke-derive/README.md
@@ -0,0 +1,11 @@
+# yoke-derive [![crates.io](https://img.shields.io/crates/v/yoke-derive)](https://crates.io/crates/yoke-derive)
+
+<!-- cargo-rdme start -->
+
+Custom derives for `Yokeable` from the `yoke` crate.
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/yoke-derive/examples/yoke_derive.rs b/vendor/yoke-derive/examples/yoke_derive.rs
new file mode 100644
index 00000000..d65ada1b
--- /dev/null
+++ b/vendor/yoke-derive/examples/yoke_derive.rs
@@ -0,0 +1,108 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#![allow(unused)]
+
+use std::{borrow::Cow, marker::PhantomData};
+use yoke::{Yoke, Yokeable};
+use zerovec::{maps::ZeroMapKV, ule::AsULE, VarZeroVec, ZeroMap, ZeroVec};
+
+#[derive(Yokeable)]
+pub struct StringExample {
+    x: String,
+}
+
+#[derive(Yokeable, Copy, Clone)]
+pub struct IntExample {
+    x: u32,
+}
+
+#[derive(Yokeable, Copy, Clone)]
+pub struct GenericsExample<T> {
+    x: u32,
+    y: T,
+}
+
+#[derive(Yokeable, Copy, Clone)]
+pub struct GenericsExampleWithDefault<T, U = usize> {
+    x: T,
+    y: U,
+}
+
+#[derive(Yokeable)]
+pub struct CowExample<'a> {
+    x: u8,
+    y: &'a str,
+    z: Cow<'a, str>,
+    w: Cow<'a, [u8]>,
+}
+
+#[derive(Yokeable)]
+pub struct ZeroVecExample<'a> {
+    var: VarZeroVec<'a, str>,
+    vec: ZeroVec<'a, u16>,
+}
+
+#[derive(Yokeable)]
+pub struct ZeroVecExampleWithGenerics<'a, T: AsULE> {
+    gen: ZeroVec<'a, T>,
+    vec: ZeroVec<'a, u16>,
+    bare: T,
+}
+
+// Since ZeroMap has generic parameters, the Rust compiler cannot
+// prove the covariance of the lifetimes. To use derive(Yokeable)
+// with a type such as ZeroMap, you just add the attribute
+// yoke(prove_covariance_manually)
+#[derive(Yokeable)]
+#[yoke(prove_covariance_manually)]
+pub struct ZeroMapExample<'a> {
+    map: ZeroMap<'a, str, u16>,
+}
+
+#[derive(Yokeable)]
+#[yoke(prove_covariance_manually)]
+pub struct ZeroMapGenericExample<'a, T: for<'b> ZeroMapKV<'b> + ?Sized> {
+    map: ZeroMap<'a, str, T>,
+}
+
+#[derive(Yokeable)]
+pub struct MaybeSizedWrap<T, Q: ?Sized, U: ?Sized> {
+    x: T,
+    y: Option<T>,
+    ignored: PhantomData<U>,
+    q: Q,
+}
+
+// TODO(#4119): Make this example compile
+/*
+#[derive(Yokeable)]
+pub struct MaybeSizedWrapWithLifetime<'a, T, Q: ?Sized, U: ?Sized> {
+    x: T,
+    y: Option<T>,
+    ignored: &'a U,
+    q: Q,
+}
+*/
+
+pub struct AssertYokeable {
+    string: Yoke<StringExample, Box<[u8]>>,
+    int: Yoke<IntExample, Box<[u8]>>,
+    gen1: Yoke<GenericsExample<u32>, Box<[u8]>>,
+    gen2: Yoke<GenericsExample<String>, Box<[u8]>>,
+    gen_default1: Yoke<GenericsExampleWithDefault<String>, Box<[u8]>>,
+    gen_default2: Yoke<GenericsExampleWithDefault<String, u8>, Box<[u8]>>,
+    cow: Yoke<CowExample<'static>, Box<[u8]>>,
+    zv: Yoke<ZeroVecExample<'static>, Box<[u8]>>,
+    zv_gen1: Yoke<ZeroVecExampleWithGenerics<'static, u8>, Box<[u8]>>,
+    zv_gen2: Yoke<ZeroVecExampleWithGenerics<'static, char>, Box<[u8]>>,
+    map: Yoke<ZeroMapExample<'static>, Box<[u8]>>,
+    map_gen1: Yoke<ZeroMapGenericExample<'static, u32>, Box<[u8]>>,
+    map_gen2: Yoke<ZeroMapGenericExample<'static, str>, Box<[u8]>>,
+    maybe_sized_wrap: Yoke<MaybeSizedWrap<usize, usize, str>, Box<[u8]>>,
+    // TODO(#4119): Make this example compile
+    // maybe_sized_wrap_with_lt: Yoke<MaybeSizedWrapWithLifetime<'static, usize, usize, str>, Box<[u8]>>,
+}
+
+fn main() {}
diff --git a/vendor/yoke-derive/src/lib.rs b/vendor/yoke-derive/src/lib.rs
new file mode 100644
index 00000000..4d3d8843
--- /dev/null
+++ b/vendor/yoke-derive/src/lib.rs
@@ -0,0 +1,273 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Custom derives for `Yokeable` from the `yoke` crate.
+
+use proc_macro::TokenStream;
+use proc_macro2::{Span, TokenStream as TokenStream2};
+use quote::quote;
+use syn::spanned::Spanned;
+use syn::{parse_macro_input, parse_quote, DeriveInput, Ident, Lifetime, Type, WherePredicate};
+use synstructure::Structure;
+
+mod visitor;
+
+/// Custom derive for `yoke::Yokeable`,
+///
+/// If your struct contains `zerovec::ZeroMap`, then the compiler will not
+/// be able to guarantee the lifetime covariance due to the generic types on
+/// the `ZeroMap` itself. You must add the following attribute in order for
+/// the custom derive to work with `ZeroMap`.
+///
+/// ```rust,ignore
+/// #[derive(Yokeable)]
+/// #[yoke(prove_covariance_manually)]
+/// ```
+///
+/// Beyond this case, if the derive fails to compile due to lifetime issues, it
+/// means that the lifetime is not covariant and `Yokeable` is not safe to implement.
+#[proc_macro_derive(Yokeable, attributes(yoke))]
+pub fn yokeable_derive(input: TokenStream) -> TokenStream {
+    let input = parse_macro_input!(input as DeriveInput);
+    TokenStream::from(yokeable_derive_impl(&input))
+}
+
+fn yokeable_derive_impl(input: &DeriveInput) -> TokenStream2 {
+    let tybounds = input
+        .generics
+        .type_params()
+        .map(|ty| {
+            // Strip out param defaults, we don't need them in the impl
+            let mut ty = ty.clone();
+            ty.eq_token = None;
+            ty.default = None;
+            ty
+        })
+        .collect::<Vec<_>>();
+    let typarams = tybounds
+        .iter()
+        .map(|ty| ty.ident.clone())
+        .collect::<Vec<_>>();
+    // We require all type parameters be 'static, otherwise
+    // the Yokeable impl becomes really unweildy to generate safely
+    let static_bounds: Vec<WherePredicate> = typarams
+        .iter()
+        .map(|ty| parse_quote!(#ty: 'static))
+        .collect();
+    let lts = input.generics.lifetimes().count();
+    if lts == 0 {
+        let name = &input.ident;
+        quote! {
+            // This is safe because there are no lifetime parameters.
+            unsafe impl<'a, #(#tybounds),*> yoke::Yokeable<'a> for #name<#(#typarams),*> where #(#static_bounds,)* Self: Sized {
+                type Output = Self;
+                #[inline]
+                fn transform(&self) -> &Self::Output {
+                    self
+                }
+                #[inline]
+                fn transform_owned(self) -> Self::Output {
+                    self
+                }
+                #[inline]
+                unsafe fn make(this: Self::Output) -> Self {
+                    this
+                }
+                #[inline]
+                fn transform_mut<F>(&'a mut self, f: F)
+                where
+                    F: 'static + for<'b> FnOnce(&'b mut Self::Output) {
+                    f(self)
+                }
+            }
+        }
+    } else {
+        if lts != 1 {
+            return syn::Error::new(
+                input.generics.span(),
+                "derive(Yokeable) cannot have multiple lifetime parameters",
+            )
+            .to_compile_error();
+        }
+        let name = &input.ident;
+        let manual_covariance = input.attrs.iter().any(|a| {
+            if let Ok(i) = a.parse_args::<Ident>() {
+                if i == "prove_covariance_manually" {
+                    return true;
+                }
+            }
+            false
+        });
+        if manual_covariance {
+            let mut structure = Structure::new(input);
+            let generics_env = typarams.iter().cloned().collect();
+            let static_bounds: Vec<WherePredicate> = typarams
+                .iter()
+                .map(|ty| parse_quote!(#ty: 'static))
+                .collect();
+            let mut yoke_bounds: Vec<WherePredicate> = vec![];
+            structure.bind_with(|_| synstructure::BindStyle::Move);
+            let owned_body = structure.each_variant(|vi| {
+                vi.construct(|f, i| {
+                    let binding = format!("__binding_{i}");
+                    let field = Ident::new(&binding, Span::call_site());
+                    let fty_static = replace_lifetime(&f.ty, static_lt());
+
+                    let (has_ty, has_lt) = visitor::check_type_for_parameters(&f.ty, &generics_env);
+                    if has_ty {
+                        // For types without type parameters, the compiler can figure out that the field implements
+                        // Yokeable on its own. However, if there are type parameters, there may be complex preconditions
+                        // to `FieldTy: Yokeable` that need to be satisfied. We get them to be satisfied by requiring
+                        // `FieldTy<'static>: Yokeable<FieldTy<'a>>`
+                        if has_lt {
+                            let fty_a = replace_lifetime(&f.ty, custom_lt("'a"));
+                            yoke_bounds.push(
+                                parse_quote!(#fty_static: yoke::Yokeable<'a, Output = #fty_a>),
+                            );
+                        } else {
+                            yoke_bounds.push(
+                                parse_quote!(#fty_static: yoke::Yokeable<'a, Output = #fty_static>),
+                            );
+                        }
+                    }
+                    if has_ty || has_lt {
+                        // By calling transform_owned on all fields, we manually prove
+                        // that the lifetimes are covariant, since this requirement
+                        // must already be true for the type that implements transform_owned().
+                        quote! {
+                            <#fty_static as yoke::Yokeable<'a>>::transform_owned(#field)
+                        }
+                    } else {
+                        // No nested lifetimes, so nothing to be done
+                        quote! { #field }
+                    }
+                })
+            });
+            let borrowed_body = structure.each(|binding| {
+                let f = binding.ast();
+                let field = &binding.binding;
+
+                let (has_ty, has_lt) = visitor::check_type_for_parameters(&f.ty, &generics_env);
+
+                if has_ty || has_lt {
+                    let fty_static = replace_lifetime(&f.ty, static_lt());
+                    let fty_a = replace_lifetime(&f.ty, custom_lt("'a"));
+                    // We also must assert that each individual field can `transform()` correctly
+                    //
+                    // Even though transform_owned() does such an assertion already, CoerceUnsized
+                    // can cause type transformations that allow it to succeed where this would fail.
+                    // We need to check both.
+                    //
+                    // https://github.com/unicode-org/icu4x/issues/2928
+                    quote! {
+                        let _: &#fty_a = &<#fty_static as yoke::Yokeable<'a>>::transform(#field);
+                    }
+                } else {
+                    // No nested lifetimes, so nothing to be done
+                    quote! {}
+                }
+            });
+            return quote! {
+                unsafe impl<'a, #(#tybounds),*> yoke::Yokeable<'a> for #name<'static, #(#typarams),*>
+                    where #(#static_bounds,)*
+                    #(#yoke_bounds,)* {
+                    type Output = #name<'a, #(#typarams),*>;
+                    #[inline]
+                    fn transform(&'a self) -> &'a Self::Output {
+                        // These are just type asserts, we don't need them for anything
+                        if false {
+                            match self {
+                                #borrowed_body
+                            }
+                        }
+                        unsafe {
+                            // safety: we have asserted covariance in
+                            // transform_owned
+                            ::core::mem::transmute(self)
+                        }
+                    }
+                    #[inline]
+                    fn transform_owned(self) -> Self::Output {
+                        match self { #owned_body }
+                    }
+                    #[inline]
+                    unsafe fn make(this: Self::Output) -> Self {
+                        use core::{mem, ptr};
+                        // unfortunately Rust doesn't think `mem::transmute` is possible since it's not sure the sizes
+                        // are the same
+                        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+                        let ptr: *const Self = (&this as *const Self::Output).cast();
+                        #[allow(forgetting_copy_types, clippy::forget_copy, clippy::forget_non_drop)] // This is a noop if the struct is copy, which Clippy doesn't like
+                        mem::forget(this);
+                        ptr::read(ptr)
+                    }
+                    #[inline]
+                    fn transform_mut<F>(&'a mut self, f: F)
+                    where
+                        F: 'static + for<'b> FnOnce(&'b mut Self::Output) {
+                        unsafe { f(core::mem::transmute::<&'a mut Self, &'a mut Self::Output>(self)) }
+                    }
+                }
+            };
+        }
+        quote! {
+            // This is safe because as long as `transform()` compiles,
+            // we can be sure that `'a` is a covariant lifetime on `Self`
+            //
+            // This will not work for structs involving ZeroMap since
+            // the compiler does not know that ZeroMap is covariant.
+            //
+            // This custom derive can be improved to handle this case when
+            // necessary
+            unsafe impl<'a, #(#tybounds),*> yoke::Yokeable<'a> for #name<'static, #(#typarams),*> where #(#static_bounds,)* {
+                type Output = #name<'a, #(#typarams),*>;
+                #[inline]
+                fn transform(&'a self) -> &'a Self::Output {
+                    self
+                }
+                #[inline]
+                fn transform_owned(self) -> Self::Output {
+                    self
+                }
+                #[inline]
+                unsafe fn make(this: Self::Output) -> Self {
+                    use core::{mem, ptr};
+                    // unfortunately Rust doesn't think `mem::transmute` is possible since it's not sure the sizes
+                    // are the same
+                    debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+                    let ptr: *const Self = (&this as *const Self::Output).cast();
+                    #[allow(forgetting_copy_types, clippy::forget_copy, clippy::forget_non_drop)] // This is a noop if the struct is copy, which Clippy doesn't like
+                    mem::forget(this);
+                    ptr::read(ptr)
+                }
+                #[inline]
+                fn transform_mut<F>(&'a mut self, f: F)
+                where
+                    F: 'static + for<'b> FnOnce(&'b mut Self::Output) {
+                    unsafe { f(core::mem::transmute::<&'a mut Self, &'a mut Self::Output>(self)) }
+                }
+            }
+        }
+    }
+}
+
+fn static_lt() -> Lifetime {
+    Lifetime::new("'static", Span::call_site())
+}
+
+fn custom_lt(s: &str) -> Lifetime {
+    Lifetime::new(s, Span::call_site())
+}
+
+fn replace_lifetime(x: &Type, lt: Lifetime) -> Type {
+    use syn::fold::Fold;
+    struct ReplaceLifetime(Lifetime);
+
+    impl Fold for ReplaceLifetime {
+        fn fold_lifetime(&mut self, _: Lifetime) -> Lifetime {
+            self.0.clone()
+        }
+    }
+    ReplaceLifetime(lt).fold_type(x.clone())
+}
diff --git a/vendor/yoke-derive/src/visitor.rs b/vendor/yoke-derive/src/visitor.rs
new file mode 100644
index 00000000..109d041f
--- /dev/null
+++ b/vendor/yoke-derive/src/visitor.rs
@@ -0,0 +1,113 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Visitor for determining whether a type has type and non-static lifetime parameters
+
+use std::collections::HashSet;
+use syn::visit::{visit_lifetime, visit_type, visit_type_path, Visit};
+use syn::{Ident, Lifetime, Type, TypePath};
+
+struct TypeVisitor<'a> {
+    /// The type parameters in scope
+    typarams: &'a HashSet<Ident>,
+    /// Whether we found a type parameter
+    found_typarams: bool,
+    /// Whether we found a non-'static lifetime parameter
+    found_lifetimes: bool,
+}
+
+impl<'ast> Visit<'ast> for TypeVisitor<'_> {
+    fn visit_lifetime(&mut self, lt: &'ast Lifetime) {
+        if lt.ident != "static" {
+            self.found_lifetimes = true;
+        }
+        visit_lifetime(self, lt)
+    }
+    fn visit_type_path(&mut self, ty: &'ast TypePath) {
+        // We only need to check ty.path.get_ident() and not ty.qself or any
+        // generics in ty.path because the visitor will eventually visit those
+        // types on its own
+        if let Some(ident) = ty.path.get_ident() {
+            if self.typarams.contains(ident) {
+                self.found_typarams = true;
+            }
+        }
+
+        visit_type_path(self, ty)
+    }
+}
+
+/// Checks if a type has type or lifetime parameters, given the local context of
+/// named type parameters. Returns (has_type_params, has_lifetime_params)
+pub fn check_type_for_parameters(ty: &Type, typarams: &HashSet<Ident>) -> (bool, bool) {
+    let mut visit = TypeVisitor {
+        typarams,
+        found_typarams: false,
+        found_lifetimes: false,
+    };
+    visit_type(&mut visit, ty);
+
+    (visit.found_typarams, visit.found_lifetimes)
+}
+
+#[cfg(test)]
+mod tests {
+    use proc_macro2::Span;
+    use std::collections::HashSet;
+    use syn::{parse_quote, Ident};
+
+    use super::check_type_for_parameters;
+    fn make_typarams(params: &[&str]) -> HashSet<Ident> {
+        params
+            .iter()
+            .map(|x| Ident::new(x, Span::call_site()))
+            .collect()
+    }
+
+    #[test]
+    fn test_simple_type() {
+        let environment = make_typarams(&["T", "U", "V"]);
+
+        let ty = parse_quote!(Foo<'a, T>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, true));
+
+        let ty = parse_quote!(Foo<T>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, false));
+
+        let ty = parse_quote!(Foo<'static, T>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, false));
+
+        let ty = parse_quote!(Foo<'a>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (false, true));
+
+        let ty = parse_quote!(Foo<'a, Bar<U>, Baz<(V, u8)>>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, true));
+
+        let ty = parse_quote!(Foo<'a, W>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (false, true));
+    }
+
+    #[test]
+    fn test_assoc_types() {
+        let environment = make_typarams(&["T"]);
+
+        let ty = parse_quote!(<Foo as SomeTrait<'a, T>>::Output);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, true));
+
+        let ty = parse_quote!(<Foo as SomeTrait<'static, T>>::Output);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, false));
+
+        let ty = parse_quote!(<T as SomeTrait<'static, Foo>>::Output);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, false));
+    }
+}
diff --git a/vendor/yoke/.cargo-checksum.json b/vendor/yoke/.cargo-checksum.json
new file mode 100644
index 00000000..262b4328
--- /dev/null
+++ b/vendor/yoke/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"f9a5a54c78aed49176658f805e96a6a96add1e10e79a7cff0d6ebe7efc36267a","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"7caeea392483abdb034071f43cd056c7a69940b77a0e65ad7f37f4657107d4a3","src/cartable_ptr.rs":"04082c417fe8a4a92e25f975d25155d18723991e01a5fd4afcbd60a0dcf60743","src/either.rs":"1ee107f5767a08255cec3124fe6d98a9a88ecaaf39f8987e5fb077cd8b97106e","src/erased.rs":"ebd156e832b5e67c599c6938cfbe85cd11a6088818a6981f56911cffb49e0a5f","src/kinda_sorta_dangling.rs":"caff4ee5ef690e6f6c4101d7b6c7005ce8a10e6e0c13b07914e937801d5e9ab3","src/lib.rs":"607c415d3fe2703b9b437a9f1ebc68bc2d354d28b518738169d4ac73aeb17d28","src/macro_impls.rs":"e116abc4eed9a6ddfe0c553f5d83de3382de954b21ef1c35020f0a40bc012a31","src/yoke.rs":"9b7a983130ab16751fb0369036e9319c5390e4e70b51a9322150bdb325898ec3","src/yokeable.rs":"9289d4e6d4474ac6699808fc2a0ac278bdc589c166594fd512749ef749d60a55","src/zero_from.rs":"4a63f2d340ee134d10e7ad9f5472f2d21913216a524c7cfc941c31fc9e2e1cae","tests/bincode.rs":"869d4601d829c64d2dcd046134455a72be448de639d0b2e61baa9cfc4e114050","tests/miri.rs":"fd119cfbf1abc39463e3be5145966962853d1f6771826c003449a06b3e8acbea"},"package":"5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"}
\ No newline at end of file
diff --git a/vendor/yoke/Cargo.toml b/vendor/yoke/Cargo.toml
new file mode 100644
index 00000000..0cd3bac3
--- /dev/null
+++ b/vendor/yoke/Cargo.toml
@@ -0,0 +1,118 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.81"
+name = "yoke"
+version = "0.8.0"
+authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Abstraction allowing borrowed data to be carried along with the backing data it borrows from"
+readme = "README.md"
+keywords = [
+    "zerocopy",
+    "serialization",
+    "lifetime",
+    "borrow",
+    "self-referential",
+]
+categories = [
+    "data-structures",
+    "memory-management",
+    "caching",
+    "no-std",
+]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.cargo-all-features]
+max_combination_size = 3
+
+[package.metadata.docs.rs]
+all-features = true
+
+[package.metadata.workspaces]
+independent = true
+
+[features]
+alloc = [
+    "stable_deref_trait/alloc",
+    "serde?/alloc",
+    "zerofrom/alloc",
+]
+default = [
+    "alloc",
+    "zerofrom",
+]
+derive = [
+    "dep:yoke-derive",
+    "zerofrom/derive",
+]
+serde = ["dep:serde"]
+zerofrom = ["dep:zerofrom"]
+
+[lib]
+name = "yoke"
+path = "src/lib.rs"
+
+[[test]]
+name = "bincode"
+path = "tests/bincode.rs"
+
+[[test]]
+name = "miri"
+path = "tests/miri.rs"
+
+[dependencies.serde]
+version = "1.0.110"
+optional = true
+default-features = false
+
+[dependencies.stable_deref_trait]
+version = "1.2.0"
+default-features = false
+
+[dependencies.yoke-derive]
+version = "0.8.0"
+optional = true
+default-features = false
+
+[dependencies.zerofrom]
+version = "0.1.3"
+optional = true
+default-features = false
+
+[dev-dependencies.bincode]
+version = "1.3.1"
+
+[dev-dependencies.postcard]
+version = "1.0.3"
+default-features = false
+
+[dev-dependencies.serde]
+version = "1.0.110"
+default-features = false
diff --git a/vendor/yoke/LICENSE b/vendor/yoke/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/yoke/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/yoke/README.md b/vendor/yoke/README.md
new file mode 100644
index 00000000..23c1ac8c
--- /dev/null
+++ b/vendor/yoke/README.md
@@ -0,0 +1,31 @@
+# yoke [![crates.io](https://img.shields.io/crates/v/yoke)](https://crates.io/crates/yoke)
+
+<!-- cargo-rdme start -->
+
+This crate provides [`Yoke<Y, C>`][Yoke], which allows one to "yoke" (attach) a zero-copy deserialized
+object (say, a [`Cow<'a, str>`](alloc::borrow::Cow)) to the source it was deserialized from, (say, an [`Rc<[u8]>`](alloc::rc::Rc)),
+known in this crate as a "cart", producing a type that looks like `Yoke<Cow<'static, str>, Rc<[u8]>>`
+and can be moved around with impunity.
+
+Succinctly, this allows one to "erase" static lifetimes and turn them into dynamic ones, similarly
+to how `dyn` allows one to "erase" static types and turn them into dynamic ones.
+
+Most of the time the yokeable `Y` type will be some kind of zero-copy deserializable
+abstraction, potentially with an owned variant (like [`Cow`](alloc::borrow::Cow),
+[`ZeroVec`](https://docs.rs/zerovec), or an aggregate containing such types), and the cart `C` will be some smart pointer like
+  [`Box<T>`](alloc::boxed::Box), [`Rc<T>`](alloc::rc::Rc), or [`Arc<T>`](std::sync::Arc), potentially wrapped in an [`Option<T>`](Option).
+
+The key behind this crate is [`Yoke::get()`], where calling [`.get()`][Yoke::get] on a type like
+`Yoke<Cow<'static, str>, _>` will get you a short-lived `&'a Cow<'a, str>`, restricted to the
+lifetime of the borrow used during [`.get()`](Yoke::get). This is entirely safe since the `Cow` borrows from
+the cart type `C`, which cannot be interfered with as long as the `Yoke` is borrowed by [`.get()`](Yoke::get).
+[`.get()`](Yoke::get) protects access by essentially reifying the erased lifetime to a safe local one
+when necessary.
+
+See the documentation of [`Yoke`] for more details.
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/yoke/src/cartable_ptr.rs b/vendor/yoke/src/cartable_ptr.rs
new file mode 100644
index 00000000..24bf6d31
--- /dev/null
+++ b/vendor/yoke/src/cartable_ptr.rs
@@ -0,0 +1,445 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Types for optional pointers with niche optimization.
+//!
+//! The main type is [`CartableOptionPointer`], which is like `Option<Rc>` but
+//! with a niche so that the resulting `Yoke` has a niche. The following four
+//! types can be stored in the `CartableOptionPointer`:
+//!
+//! 1. `&T`
+//! 2. `Box<T>`
+//! 3. `Rc<T>`
+//! 4. `Arc<T>`
+//!
+//! These four types implement the sealed unsafe trait [`CartablePointerLike`].
+//! In addition, all except `Box<T>` impl [`CloneableCartablePointerLike`],
+//! which allows [`CartableOptionPointer`] to implement `Clone`.
+
+use crate::CloneableCart;
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+#[cfg(feature = "alloc")]
+use alloc::rc::Rc;
+#[cfg(feature = "alloc")]
+use alloc::sync::Arc;
+#[cfg(test)]
+use core::cell::Cell;
+use core::marker::PhantomData;
+use core::ptr::NonNull;
+use stable_deref_trait::StableDeref;
+
+// Safety note: this method MUST return the same value for the same T, even if i.e. the method gets
+// instantiated in different crates. This can be untrue in surprising ways! For example, just
+// returning a const-ref-to-const would not guarantee that.
+// The current implementation always returns the same address for any T, see
+// [the reference](https://doc.rust-lang.org/reference/items/static-items.html#statics--generics):
+// there is exactly one `SENTINEL` item for any T.
+#[inline]
+fn sentinel_for<T>() -> NonNull<T> {
+    static SENTINEL: &u8 = &0x1a; // SUB
+
+    // Safety: SENTINEL is indeed not a null pointer, even after the casts.
+    unsafe { NonNull::new_unchecked(SENTINEL as *const u8 as *mut T) }
+}
+
+#[cfg(test)]
+thread_local! {
+    static DROP_INVOCATIONS: Cell<usize> = const { Cell::new(0) };
+}
+
+mod private {
+    pub trait Sealed {}
+}
+
+use private::Sealed;
+
+/// An object fully representable by a non-null pointer.
+///
+/// # Safety
+///
+/// Implementer safety:
+///
+/// 1. `into_raw` transfers ownership of the values referenced by StableDeref to the caller,
+///    if there is ownership to transfer
+/// 2. `drop_raw` returns ownership back to the impl, if there is ownership to transfer
+///
+/// Note: if `into_raw` returns the sentinel pointer, memory leaks may occur, but this will not
+/// lead to undefined behaviour.
+///
+/// Note: the pointer `NonNull<Self::Raw>` may or may not be aligned and it should never
+/// be dereferenced. Rust allows unaligned pointers; see [`std::ptr::read_unaligned`].
+pub unsafe trait CartablePointerLike: StableDeref + Sealed {
+    /// The raw type used for [`Self::into_raw`] and [`Self::drop_raw`].
+    #[doc(hidden)]
+    type Raw;
+
+    /// Converts this pointer-like into a pointer.
+    #[doc(hidden)]
+    fn into_raw(self) -> NonNull<Self::Raw>;
+
+    /// Drops any memory associated with this pointer-like.
+    ///
+    /// # Safety
+    ///
+    /// Caller safety:
+    ///
+    /// 1. The pointer MUST have been returned by this impl's `into_raw`.
+    /// 2. The pointer MUST NOT be dangling.
+    #[doc(hidden)]
+    unsafe fn drop_raw(pointer: NonNull<Self::Raw>);
+}
+
+/// An object that implements [`CartablePointerLike`] that also
+/// supports cloning without changing the address of referenced data.
+///
+/// # Safety
+///
+/// Implementer safety:
+///
+/// 1. `addref_raw` must create a new owner such that an additional call to
+///    `drop_raw` does not create a dangling pointer
+/// 2. `addref_raw` must not change the address of any referenced data.
+pub unsafe trait CloneableCartablePointerLike: CartablePointerLike {
+    /// Clones this pointer-like.
+    ///
+    /// # Safety
+    ///
+    /// Caller safety:
+    ///
+    /// 1. The pointer MUST have been returned by this impl's `into_raw`.
+    /// 2. The pointer MUST NOT be dangling.
+    #[doc(hidden)]
+    unsafe fn addref_raw(pointer: NonNull<Self::Raw>);
+}
+
+impl<'a, T> Sealed for &'a T {}
+
+// Safety:
+// 1. There is no ownership to transfer
+// 2. There is no ownership to transfer
+unsafe impl<'a, T> CartablePointerLike for &'a T {
+    type Raw = T;
+
+    #[inline]
+    fn into_raw(self) -> NonNull<T> {
+        self.into()
+    }
+    #[inline]
+    unsafe fn drop_raw(_pointer: NonNull<T>) {
+        // No-op: references are borrowed from elsewhere
+    }
+}
+
+// Safety:
+// 1. There is no ownership
+// 2. The impl is a no-op so no addresses are changed.
+unsafe impl<'a, T> CloneableCartablePointerLike for &'a T {
+    #[inline]
+    unsafe fn addref_raw(_pointer: NonNull<T>) {
+        // No-op: references are borrowed from elsewhere
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<T> Sealed for Box<T> {}
+
+#[cfg(feature = "alloc")]
+// Safety:
+// 1. `Box::into_raw` says: "After calling this function, the caller is responsible for the
+//    memory previously managed by the Box."
+// 2. `Box::from_raw` says: "After calling this function, the raw pointer is owned by the
+//    resulting Box."
+unsafe impl<T> CartablePointerLike for Box<T> {
+    type Raw = T;
+
+    #[inline]
+    fn into_raw(self) -> NonNull<T> {
+        // Safety: `Box::into_raw` says: "The pointer will be properly aligned and non-null."
+        unsafe { NonNull::new_unchecked(Box::into_raw(self)) }
+    }
+    #[inline]
+    unsafe fn drop_raw(pointer: NonNull<T>) {
+        // Safety: per the method's precondition, `pointer` is dereferenceable and was returned by
+        // `Self::into_raw`, i.e. by `Box::into_raw`. In this circumstances, calling
+        // `Box::from_raw` is safe.
+        let _box = unsafe { Box::from_raw(pointer.as_ptr()) };
+
+        // Boxes are always dropped
+        #[cfg(test)]
+        DROP_INVOCATIONS.with(|x| x.set(x.get() + 1))
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<T> Sealed for Rc<T> {}
+
+#[cfg(feature = "alloc")]
+// Safety:
+// 1. `Rc::into_raw` says: "Consumes the Rc, returning the wrapped pointer. To avoid a memory
+//    leak the pointer must be converted back to an Rc using Rc::from_raw."
+// 2. See 1.
+unsafe impl<T> CartablePointerLike for Rc<T> {
+    type Raw = T;
+
+    #[inline]
+    fn into_raw(self) -> NonNull<T> {
+        // Safety: Rcs must contain data (and not be null)
+        unsafe { NonNull::new_unchecked(Rc::into_raw(self) as *mut T) }
+    }
+
+    #[inline]
+    unsafe fn drop_raw(pointer: NonNull<T>) {
+        // Safety: per the method's precondition, `pointer` is dereferenceable and was returned by
+        // `Self::into_raw`, i.e. by `Rc::into_raw`. In this circumstances, calling
+        // `Rc::from_raw` is safe.
+        let _rc = unsafe { Rc::from_raw(pointer.as_ptr()) };
+
+        // Rc is dropped if refcount is 1
+        #[cfg(test)]
+        if Rc::strong_count(&_rc) == 1 {
+            DROP_INVOCATIONS.with(|x| x.set(x.get() + 1))
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+// Safety:
+// 1. The impl increases the refcount such that `Drop` will decrease it.
+// 2. The impl increases refcount without changing the address of data.
+unsafe impl<T> CloneableCartablePointerLike for Rc<T> {
+    #[inline]
+    unsafe fn addref_raw(pointer: NonNull<T>) {
+        // Safety: The caller safety of this function says that:
+        // 1. The pointer was obtained through Rc::into_raw
+        // 2. The associated Rc instance is valid
+        // Further, this impl is not defined for anything but the global allocator.
+        unsafe {
+            Rc::increment_strong_count(pointer.as_ptr());
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<T> Sealed for Arc<T> {}
+
+#[cfg(feature = "alloc")]
+// Safety:
+// 1. `Rc::into_raw` says: "Consumes the Arc, returning the wrapped pointer. To avoid a memory
+//    leak the pointer must be converted back to an Arc using Arc::from_raw."
+// 2. See 1.
+unsafe impl<T> CartablePointerLike for Arc<T> {
+    type Raw = T;
+
+    #[inline]
+    fn into_raw(self) -> NonNull<T> {
+        // Safety: Arcs must contain data (and not be null)
+        unsafe { NonNull::new_unchecked(Arc::into_raw(self) as *mut T) }
+    }
+    #[inline]
+    unsafe fn drop_raw(pointer: NonNull<T>) {
+        // Safety: per the method's precondition, `pointer` is dereferenceable and was returned by
+        // `Self::into_raw`, i.e. by `Rc::into_raw`. In this circumstances, calling
+        // `Rc::from_raw` is safe.
+        let _arc = unsafe { Arc::from_raw(pointer.as_ptr()) };
+
+        // Arc is dropped if refcount is 1
+        #[cfg(test)]
+        if Arc::strong_count(&_arc) == 1 {
+            DROP_INVOCATIONS.with(|x| x.set(x.get() + 1))
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+// Safety:
+// 1. The impl increases the refcount such that `Drop` will decrease it.
+// 2. The impl increases refcount without changing the address of data.
+unsafe impl<T> CloneableCartablePointerLike for Arc<T> {
+    #[inline]
+    unsafe fn addref_raw(pointer: NonNull<T>) {
+        // Safety: The caller safety of this function says that:
+        // 1. The pointer was obtained through Arc::into_raw
+        // 2. The associated Arc instance is valid
+        // Further, this impl is not defined for anything but the global allocator.
+        unsafe {
+            Arc::increment_strong_count(pointer.as_ptr());
+        }
+    }
+}
+
+/// A type with similar semantics as `Option<C<T>>` but with a niche.
+///
+/// This type cannot be publicly constructed. To use this in a `Yoke`, see
+/// [`Yoke::convert_cart_into_option_pointer`].
+///
+/// [`Yoke::convert_cart_into_option_pointer`]: crate::Yoke::convert_cart_into_option_pointer
+#[derive(Debug)]
+pub struct CartableOptionPointer<C>
+where
+    C: CartablePointerLike,
+{
+    /// The inner pointer.
+    ///
+    /// # Invariants
+    ///
+    /// 1. Must be either `SENTINEL_PTR` or created from `CartablePointerLike::into_raw`
+    /// 2. If non-sentinel, must _always_ be for a valid SelectedRc
+    inner: NonNull<C::Raw>,
+    _cartable: PhantomData<C>,
+}
+
+impl<C> CartableOptionPointer<C>
+where
+    C: CartablePointerLike,
+{
+    /// Creates a new instance corresponding to a `None` value.
+    #[inline]
+    pub(crate) fn none() -> Self {
+        Self {
+            inner: sentinel_for::<C::Raw>(),
+            _cartable: PhantomData,
+        }
+    }
+
+    /// Creates a new instance corresponding to a `Some` value.
+    #[inline]
+    pub(crate) fn from_cartable(cartable: C) -> Self {
+        let inner = cartable.into_raw();
+        debug_assert_ne!(inner, sentinel_for::<C::Raw>());
+        Self {
+            inner,
+            _cartable: PhantomData,
+        }
+    }
+
+    /// Returns whether this instance is `None`. From the return value:
+    ///
+    /// - If `true`, the instance is `None`
+    /// - If `false`, the instance is a valid `SelectedRc`
+    #[inline]
+    pub fn is_none(&self) -> bool {
+        self.inner == sentinel_for::<C::Raw>()
+    }
+}
+
+impl<C> Drop for CartableOptionPointer<C>
+where
+    C: CartablePointerLike,
+{
+    #[inline]
+    fn drop(&mut self) {
+        let ptr = self.inner;
+        if ptr != sentinel_for::<C::Raw>() {
+            // By the invariants, `ptr` is a valid raw value since it's
+            // either that or sentinel, and we just checked for sentinel.
+            // We will replace it with the sentinel and then drop `ptr`.
+            self.inner = sentinel_for::<C::Raw>();
+            // Safety: by the invariants, `ptr` is a valid raw value.
+            unsafe { C::drop_raw(ptr) }
+        }
+    }
+}
+
+impl<C> Clone for CartableOptionPointer<C>
+where
+    C: CloneableCartablePointerLike,
+{
+    #[inline]
+    fn clone(&self) -> Self {
+        let ptr = self.inner;
+        if ptr != sentinel_for::<C::Raw>() {
+            // By the invariants, `ptr` is a valid raw value since it's
+            // either that or sentinel, and we just checked for sentinel.
+            // Safety: by the invariants, `ptr` is a valid raw value.
+            unsafe { C::addref_raw(ptr) }
+        }
+        Self {
+            inner: self.inner,
+            _cartable: PhantomData,
+        }
+    }
+}
+
+// Safety: logically an Option<C>. Has same bounds as Option<C>.
+// The `StableDeref` parts of `C` continue to be `StableDeref`.
+unsafe impl<C> CloneableCart for CartableOptionPointer<C> where
+    C: CloneableCartablePointerLike + CloneableCart
+{
+}
+
+// Safety: logically an Option<C>. Has same bounds as Option<C>
+unsafe impl<C> Send for CartableOptionPointer<C> where C: Sync + CartablePointerLike {}
+
+// Safety: logically an Option<C>. Has same bounds as Option<C>
+unsafe impl<C> Sync for CartableOptionPointer<C> where C: Send + CartablePointerLike {}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::Yoke;
+    use core::mem::size_of;
+
+    const SAMPLE_BYTES: &[u8] = b"abCDEfg";
+    const W: usize = size_of::<usize>();
+
+    #[test]
+    fn test_sizes() {
+        assert_eq!(W * 4, size_of::<Yoke<[usize; 3], &&[u8]>>());
+        assert_eq!(W * 4, size_of::<Yoke<[usize; 3], Option<&&[u8]>>>());
+        assert_eq!(
+            W * 4,
+            size_of::<Yoke<[usize; 3], CartableOptionPointer<&&[u8]>>>()
+        );
+
+        assert_eq!(W * 4, size_of::<Option<Yoke<[usize; 3], &&[u8]>>>());
+        assert_eq!(W * 5, size_of::<Option<Yoke<[usize; 3], Option<&&[u8]>>>>());
+        assert_eq!(
+            W * 4,
+            size_of::<Option<Yoke<[usize; 3], CartableOptionPointer<&&[u8]>>>>()
+        );
+    }
+
+    #[test]
+    fn test_new_sentinel() {
+        let start = DROP_INVOCATIONS.with(Cell::get);
+        {
+            let _ = CartableOptionPointer::<Rc<&[u8]>>::none();
+        }
+        assert_eq!(start, DROP_INVOCATIONS.with(Cell::get));
+        {
+            let _ = CartableOptionPointer::<Rc<&[u8]>>::none();
+        }
+        assert_eq!(start, DROP_INVOCATIONS.with(Cell::get));
+    }
+
+    #[test]
+    fn test_new_rc() {
+        let start = DROP_INVOCATIONS.with(Cell::get);
+        {
+            let _ = CartableOptionPointer::<Rc<&[u8]>>::from_cartable(SAMPLE_BYTES.into());
+        }
+        assert_eq!(start + 1, DROP_INVOCATIONS.with(Cell::get));
+    }
+
+    #[test]
+    fn test_rc_clone() {
+        let start = DROP_INVOCATIONS.with(Cell::get);
+        {
+            let x = CartableOptionPointer::<Rc<&[u8]>>::from_cartable(SAMPLE_BYTES.into());
+            assert_eq!(start, DROP_INVOCATIONS.with(Cell::get));
+            {
+                let _ = x.clone();
+            }
+            assert_eq!(start, DROP_INVOCATIONS.with(Cell::get));
+            {
+                let _ = x.clone();
+                let _ = x.clone();
+                let _ = x.clone();
+            }
+            assert_eq!(start, DROP_INVOCATIONS.with(Cell::get));
+        }
+        assert_eq!(start + 1, DROP_INVOCATIONS.with(Cell::get));
+    }
+}
diff --git a/vendor/yoke/src/either.rs b/vendor/yoke/src/either.rs
new file mode 100644
index 00000000..7de6edf3
--- /dev/null
+++ b/vendor/yoke/src/either.rs
@@ -0,0 +1,88 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Types to enable polymorphic carts.
+
+use crate::CloneableCart;
+
+use core::ops::Deref;
+use stable_deref_trait::StableDeref;
+
+/// A cart that can be one type or the other. Enables ergonomic polymorphic carts.
+///
+/// `EitherCart` enables yokes originating from different data sources and therefore
+/// having different cart types to be merged into the same yoke type, but still being
+/// able to recover the original cart type if necessary.
+///
+/// All relevant Cart traits are implemented for `EitherCart`, and carts can be
+/// safely wrapped in an `EitherCart`.
+///
+/// Also see [`Yoke::erase_box_cart()`](crate::Yoke::erase_box_cart).
+///
+/// # Examples
+///
+/// ```
+/// use std::rc::Rc;
+/// use yoke::either::EitherCart;
+/// use yoke::Yoke;
+///
+/// let y1: Yoke<&'static str, Rc<str>> =
+///     Yoke::attach_to_zero_copy_cart("reference counted hello world".into());
+///
+/// let y2: Yoke<&'static str, &str> = Yoke::attach_to_zero_copy_cart("borrowed hello world");
+///
+/// type CombinedYoke<'a> = Yoke<&'static str, EitherCart<Rc<str>, &'a str>>;
+///
+/// // Both yokes can be combined into a single yoke type despite different carts
+/// let y3: CombinedYoke = y1.wrap_cart_in_either_a();
+/// let y4: CombinedYoke = y2.wrap_cart_in_either_b();
+///
+/// assert_eq!(*y3.get(), "reference counted hello world");
+/// assert_eq!(*y4.get(), "borrowed hello world");
+///
+/// // The resulting yoke is cloneable if both cart types implement CloneableCart
+/// let y5 = y4.clone();
+/// assert_eq!(*y5.get(), "borrowed hello world");
+/// ```
+#[derive(Clone, PartialEq, Eq, Debug)]
+#[allow(clippy::exhaustive_enums)] // stable
+pub enum EitherCart<C0, C1> {
+    A(C0),
+    B(C1),
+}
+
+impl<C0, C1, T> Deref for EitherCart<C0, C1>
+where
+    C0: Deref<Target = T>,
+    C1: Deref<Target = T>,
+    T: ?Sized,
+{
+    type Target = T;
+    fn deref(&self) -> &T {
+        use EitherCart::*;
+        match self {
+            A(a) => a.deref(),
+            B(b) => b.deref(),
+        }
+    }
+}
+
+// Safety: Safe because both sub-types implement the trait.
+unsafe impl<C0, C1, T> StableDeref for EitherCart<C0, C1>
+where
+    C0: StableDeref,
+    C1: StableDeref,
+    C0: Deref<Target = T>,
+    C1: Deref<Target = T>,
+    T: ?Sized,
+{
+}
+
+// Safety: Safe because both sub-types implement the trait.
+unsafe impl<C0, C1> CloneableCart for EitherCart<C0, C1>
+where
+    C0: CloneableCart,
+    C1: CloneableCart,
+{
+}
diff --git a/vendor/yoke/src/erased.rs b/vendor/yoke/src/erased.rs
new file mode 100644
index 00000000..4395404a
--- /dev/null
+++ b/vendor/yoke/src/erased.rs
@@ -0,0 +1,41 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module contains helper types for erasing Cart types.
+//!
+//! See the docs of [`Yoke::erase_rc_cart()`](crate::Yoke::erase_rc_cart)
+//! and [`Yoke::erase_box_cart()`](crate::Yoke::erase_box_cart) for more info.
+//!
+//! ✨ *Enabled with the `alloc` Cargo feature.*
+
+use alloc::boxed::Box;
+use alloc::rc::Rc;
+use alloc::sync::Arc;
+
+/// Dummy trait that lets us `dyn Drop`
+///
+/// `dyn Drop` isn't legal (and doesn't make sense since `Drop` is not
+/// implement on all destructible types). However, all trait objects come with
+/// a destructor, so we can just use an empty trait to get a destructor object.
+pub trait ErasedDestructor: 'static {}
+impl<T: 'static> ErasedDestructor for T {}
+
+/// A type-erased Cart that has `Arc` semantics
+///
+/// See the docs of [`Yoke::erase_arc_cart()`](crate::Yoke::erase_rc_cart) for more info.
+///
+/// ✨ *Enabled with the `alloc` Cargo feature.*
+pub type ErasedArcCart = Arc<dyn ErasedDestructor + Send + Sync>;
+/// A type-erased Cart that has `Rc` semantics
+///
+/// See the docs of [`Yoke::erase_rc_cart()`](crate::Yoke::erase_rc_cart) for more info.
+///
+/// ✨ *Enabled with the `alloc` Cargo feature.*
+pub type ErasedRcCart = Rc<dyn ErasedDestructor>;
+/// A type-erased Cart that has `Box` semantics
+///
+/// See the docs of [`Yoke::erase_box_cart()`](crate::Yoke::erase_box_cart) for more info.
+///
+/// ✨ *Enabled with the `alloc` Cargo feature.*
+pub type ErasedBoxCart = Box<dyn ErasedDestructor>;
diff --git a/vendor/yoke/src/kinda_sorta_dangling.rs b/vendor/yoke/src/kinda_sorta_dangling.rs
new file mode 100644
index 00000000..1f099f7e
--- /dev/null
+++ b/vendor/yoke/src/kinda_sorta_dangling.rs
@@ -0,0 +1,95 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::mem::{ManuallyDrop, MaybeUninit};
+use core::ops::{Deref, DerefMut};
+
+/// This type is intended to be similar to the type `MaybeDangling<T>`
+/// proposed in [RFC 3336].
+///
+/// The effect of this is that in Rust's safety model, types inside here are not
+/// expected to have any memory dependent validity properties (`dereferenceable`, `noalias`).
+///
+/// See [#3696] for a testcase where `Yoke` fails under miri's field-retagging mode if not using
+/// KindaSortaDangling.
+///
+/// This has `T: 'static` since we don't need anything
+/// else and we don't want to have to think (more) about variance over lifetimes or dropck.
+///
+/// After [RFC 3336] lands we can use `MaybeDangling` instead.
+///
+/// Note that a version of this type also exists publicly as the [`maybe_dangling`]
+/// crate; which also exports a patched `ManuallyDrop` with similar semantics and
+/// does not require `T: 'static`. Consider using this if you need something more general
+/// and are okay with adding dependencies.
+///
+/// [RFC 3336]: https://github.com/rust-lang/rfcs/pull/3336
+/// [#3696]: https://github.com/unicode-org/icu4x/issues/3696
+/// [`maybe_dangling`](https://docs.rs/maybe-dangling/0.1.0/maybe_dangling/struct.MaybeDangling.html)
+#[repr(transparent)]
+pub(crate) struct KindaSortaDangling<T: 'static> {
+    /// Safety invariant: This is always an initialized T, never uninit or other
+    /// invalid bit patterns. Its drop glue will execute during Drop::drop rather than
+    /// during the drop glue for KindaSortaDangling, which means that we have to be careful about
+    /// not touching the values as initialized during `drop` after that, but that's a short period of time.
+    dangle: MaybeUninit<T>,
+}
+
+impl<T: 'static> KindaSortaDangling<T> {
+    #[inline]
+    pub(crate) const fn new(dangle: T) -> Self {
+        KindaSortaDangling {
+            dangle: MaybeUninit::new(dangle),
+        }
+    }
+    #[inline]
+    pub(crate) fn into_inner(self) -> T {
+        // Self has a destructor, we want to avoid having it be called
+        let manual = ManuallyDrop::new(self);
+        // Safety:
+        // We can call assume_init_read() due to the library invariant on this type,
+        // however since it is a read() we must be careful about data duplication.
+        // The only code using `self` after this is the drop glue, which we have disabled via
+        // the ManuallyDrop.
+        unsafe { manual.dangle.assume_init_read() }
+    }
+}
+
+impl<T: 'static> Deref for KindaSortaDangling<T> {
+    type Target = T;
+    #[inline]
+    fn deref(&self) -> &T {
+        // Safety: Due to the safety invariant on `dangle`, it is guaranteed to be always
+        // initialized as deref is never called during drop.
+        unsafe { self.dangle.assume_init_ref() }
+    }
+}
+
+impl<T: 'static> DerefMut for KindaSortaDangling<T> {
+    #[inline]
+    fn deref_mut(&mut self) -> &mut T {
+        // Safety: Due to the safety invariant on `dangle`, it is guaranteed to be always
+        // initialized as deref_mut is never called during drop.
+        unsafe { self.dangle.assume_init_mut() }
+    }
+}
+
+impl<T: 'static> Drop for KindaSortaDangling<T> {
+    #[inline]
+    fn drop(&mut self) {
+        // Safety: We are reading and dropping a valid initialized T.
+        //
+        // As `drop_in_place()` is a `read()`-like duplication operation we must be careful that the original value isn't
+        // used afterwards. It won't be because this is drop and the only
+        // code that will run after this is `self`'s drop glue, and that drop glue is empty
+        // because MaybeUninit has no drop.
+        //
+        // We use `drop_in_place()` instead of `let _ = ... .assume_init_read()` to avoid creating a move
+        // of the inner `T` (without `KindaSortaDangling` protection!) type into a local -- we don't want to
+        // assert any of `T`'s memory-related validity properties here.
+        unsafe {
+            self.dangle.as_mut_ptr().drop_in_place();
+        }
+    }
+}
diff --git a/vendor/yoke/src/lib.rs b/vendor/yoke/src/lib.rs
new file mode 100644
index 00000000..f2a7ddba
--- /dev/null
+++ b/vendor/yoke/src/lib.rs
@@ -0,0 +1,67 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This crate provides [`Yoke<Y, C>`][Yoke], which allows one to "yoke" (attach) a zero-copy deserialized
+//! object (say, a [`Cow<'a, str>`](alloc::borrow::Cow)) to the source it was deserialized from, (say, an [`Rc<[u8]>`](alloc::rc::Rc)),
+//! known in this crate as a "cart", producing a type that looks like `Yoke<Cow<'static, str>, Rc<[u8]>>`
+//! and can be moved around with impunity.
+//!
+//! Succinctly, this allows one to "erase" static lifetimes and turn them into dynamic ones, similarly
+//! to how `dyn` allows one to "erase" static types and turn them into dynamic ones.
+//!
+//! Most of the time the yokeable `Y` type will be some kind of zero-copy deserializable
+//! abstraction, potentially with an owned variant (like [`Cow`](alloc::borrow::Cow),
+//! [`ZeroVec`](https://docs.rs/zerovec), or an aggregate containing such types), and the cart `C` will be some smart pointer like
+//!   [`Box<T>`](alloc::boxed::Box), [`Rc<T>`](alloc::rc::Rc), or [`Arc<T>`](std::sync::Arc), potentially wrapped in an [`Option<T>`](Option).
+//!
+//! The key behind this crate is [`Yoke::get()`], where calling [`.get()`][Yoke::get] on a type like
+//! `Yoke<Cow<'static, str>, _>` will get you a short-lived `&'a Cow<'a, str>`, restricted to the
+//! lifetime of the borrow used during [`.get()`](Yoke::get). This is entirely safe since the `Cow` borrows from
+//! the cart type `C`, which cannot be interfered with as long as the `Yoke` is borrowed by [`.get()`](Yoke::get).
+//! [`.get()`](Yoke::get) protects access by essentially reifying the erased lifetime to a safe local one
+//! when necessary.
+//!
+//! See the documentation of [`Yoke`] for more details.
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+// The lifetimes here are important for safety and explicitly writing
+// them out is good even when redundant
+#![allow(clippy::needless_lifetimes)]
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+pub mod cartable_ptr;
+pub mod either;
+#[cfg(feature = "alloc")]
+pub mod erased;
+mod kinda_sorta_dangling;
+mod macro_impls;
+mod yoke;
+mod yokeable;
+#[cfg(feature = "zerofrom")]
+mod zero_from;
+
+#[cfg(feature = "derive")]
+pub use yoke_derive::Yokeable;
+
+pub use crate::yoke::{CloneableCart, Yoke};
+pub use crate::yokeable::Yokeable;
+
+#[cfg(feature = "zerofrom")]
+use zerofrom::ZeroFrom;
diff --git a/vendor/yoke/src/macro_impls.rs b/vendor/yoke/src/macro_impls.rs
new file mode 100644
index 00000000..4e17db91
--- /dev/null
+++ b/vendor/yoke/src/macro_impls.rs
@@ -0,0 +1,128 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// In this case consistency between impls is more important
+// than using pointer casts
+#![allow(clippy::transmute_ptr_to_ptr)]
+
+use crate::Yokeable;
+use core::{
+    mem::{self, ManuallyDrop},
+    ptr,
+};
+
+macro_rules! copy_yoke_impl {
+    () => {
+        #[inline]
+        fn transform(&self) -> &Self::Output {
+            self
+        }
+        #[inline]
+        fn transform_owned(self) -> Self::Output {
+            self
+        }
+        #[inline]
+        unsafe fn make(this: Self::Output) -> Self {
+            this
+        }
+        #[inline]
+        fn transform_mut<F>(&'a mut self, f: F)
+        where
+            F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+        {
+            f(self)
+        }
+    };
+}
+macro_rules! impl_copy_type {
+    ($ty:ty) => {
+        // Safety: all the types that this macro is used to generate impls of Yokeable for do not
+        // borrow any memory.
+        unsafe impl<'a> Yokeable<'a> for $ty {
+            type Output = Self;
+            copy_yoke_impl!();
+        }
+    };
+}
+
+impl_copy_type!(());
+impl_copy_type!(u8);
+impl_copy_type!(u16);
+impl_copy_type!(u32);
+impl_copy_type!(u64);
+impl_copy_type!(u128);
+impl_copy_type!(usize);
+impl_copy_type!(i8);
+impl_copy_type!(i16);
+impl_copy_type!(i32);
+impl_copy_type!(i64);
+impl_copy_type!(i128);
+impl_copy_type!(isize);
+impl_copy_type!(char);
+impl_copy_type!(bool);
+
+// This is for when we're implementing Yoke on a complex type such that it's not
+// obvious to the compiler that the lifetime is covariant
+//
+// Safety: the caller of this macro must ensure that `Self` is indeed covariant in 'a.
+macro_rules! unsafe_complex_yoke_impl {
+    () => {
+        fn transform(&'a self) -> &'a Self::Output {
+            // Safety: equivalent to casting the lifetime. Macro caller ensures covariance.
+            unsafe { mem::transmute(self) }
+        }
+
+        fn transform_owned(self) -> Self::Output {
+            debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+            // Safety: equivalent to casting the lifetime. Macro caller ensures covariance.
+            unsafe {
+                let ptr: *const Self::Output = (&self as *const Self).cast();
+                let _ = ManuallyDrop::new(self);
+                ptr::read(ptr)
+            }
+        }
+
+        unsafe fn make(from: Self::Output) -> Self {
+            debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+            let ptr: *const Self = (&from as *const Self::Output).cast();
+            let _ = ManuallyDrop::new(from);
+            // Safety: `ptr` is certainly valid, aligned and points to a properly initialized value, as
+            // it comes from a value that was moved into a ManuallyDrop.
+            unsafe { ptr::read(ptr) }
+        }
+
+        fn transform_mut<F>(&'a mut self, f: F)
+        where
+            F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+        {
+            // Cast away the lifetime of Self
+            // Safety: this is equivalent to f(transmute(self)), and the documentation of the trait
+            // method explains why doing so is sound.
+            unsafe { f(mem::transmute::<&'a mut Self, &'a mut Self::Output>(self)) }
+        }
+    };
+}
+
+// Safety: since T implements Yokeable<'a>, Option<T<'b>> must be covariant on 'b or the Yokeable
+// implementation on T would be unsound.
+unsafe impl<'a, T: 'static + for<'b> Yokeable<'b>> Yokeable<'a> for Option<T> {
+    type Output = Option<<T as Yokeable<'a>>::Output>;
+    unsafe_complex_yoke_impl!();
+}
+
+// Safety: since T1, T2 implement Yokeable<'a>, (T1<'b>, T2<'b>) must be covariant on 'b or the Yokeable
+// implementation on T would be unsound.
+unsafe impl<'a, T1: 'static + for<'b> Yokeable<'b>, T2: 'static + for<'b> Yokeable<'b>> Yokeable<'a>
+    for (T1, T2)
+{
+    type Output = (<T1 as Yokeable<'a>>::Output, <T2 as Yokeable<'a>>::Output);
+    unsafe_complex_yoke_impl!();
+}
+
+// Safety: since T implements Yokeable<'a>, [T<'b>; N] must be covariant on 'b or the Yokeable
+// implementation on T would be unsound.
+unsafe impl<'a, T: 'static + for<'b> Yokeable<'b>, const N: usize> Yokeable<'a> for [T; N] {
+    type Output = [<T as Yokeable<'a>>::Output; N];
+    unsafe_complex_yoke_impl!();
+}
diff --git a/vendor/yoke/src/yoke.rs b/vendor/yoke/src/yoke.rs
new file mode 100644
index 00000000..db564df1
--- /dev/null
+++ b/vendor/yoke/src/yoke.rs
@@ -0,0 +1,1540 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::cartable_ptr::{CartableOptionPointer, CartablePointerLike};
+use crate::either::EitherCart;
+#[cfg(feature = "alloc")]
+use crate::erased::{ErasedArcCart, ErasedBoxCart, ErasedRcCart};
+use crate::kinda_sorta_dangling::KindaSortaDangling;
+use crate::Yokeable;
+use core::marker::PhantomData;
+use core::ops::Deref;
+use stable_deref_trait::StableDeref;
+
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+#[cfg(feature = "alloc")]
+use alloc::rc::Rc;
+#[cfg(feature = "alloc")]
+use alloc::sync::Arc;
+
+/// A Cow-like borrowed object "yoked" to its backing data.
+///
+/// This allows things like zero copy deserialized data to carry around
+/// shared references to their backing buffer, by "erasing" their static lifetime
+/// and turning it into a dynamically managed one.
+///
+/// `Y` (the [`Yokeable`]) is the object containing the references,
+/// and will typically be of the form `Foo<'static>`. The `'static` is
+/// not the actual lifetime of the data, rather it is a convenient way to mark the
+/// erased lifetime and make it dynamic.
+///
+/// `C` is the "cart", which `Y` may contain references to. After the yoke is constructed,
+/// the cart serves little purpose except to guarantee that `Y`'s references remain valid
+/// for as long as the yoke remains in memory (by calling the destructor at the appropriate moment).
+///
+/// The primary constructor for [`Yoke`] is [`Yoke::attach_to_cart()`]. Several variants of that
+/// constructor are provided to serve numerous types of call sites and `Yoke` signatures.
+///
+/// The key behind this type is [`Yoke::get()`], where calling [`.get()`][Yoke::get] on a type like
+/// `Yoke<Cow<'static, str>, _>` will get you a short-lived `&'a Cow<'a, str>`, restricted to the
+/// lifetime of the borrow used during `.get()`. This is entirely safe since the `Cow` borrows from
+/// the cart type `C`, which cannot be interfered with as long as the `Yoke` is borrowed by `.get
+/// ()`. `.get()` protects access by essentially reifying the erased lifetime to a safe local one
+/// when necessary.
+///
+/// Furthermore, there are various [`.map_project()`][Yoke::map_project] methods that allow turning a `Yoke`
+/// into another `Yoke` containing a different type that may contain elements of the original yoked
+/// value. See the [`Yoke::map_project()`] docs for more details.
+///
+/// In general, `C` is a concrete type, but it is also possible for it to be a trait object.
+///
+/// # Example
+///
+/// For example, we can use this to store zero-copy deserialized data in a cache:
+///
+/// ```rust
+/// # use yoke::Yoke;
+/// # use std::rc::Rc;
+/// # use std::borrow::Cow;
+/// # fn load_from_cache(_filename: &str) -> Rc<[u8]> {
+/// #     // dummy implementation
+/// #     Rc::new([0x5, 0, 0, 0, 0, 0, 0, 0, 0x68, 0x65, 0x6c, 0x6c, 0x6f])
+/// # }
+///
+/// fn load_object(filename: &str) -> Yoke<Cow<'static, str>, Rc<[u8]>> {
+///     let rc: Rc<[u8]> = load_from_cache(filename);
+///     Yoke::<Cow<'static, str>, Rc<[u8]>>::attach_to_cart(rc, |data: &[u8]| {
+///         // essentially forcing a #[serde(borrow)]
+///         Cow::Borrowed(bincode::deserialize(data).unwrap())
+///     })
+/// }
+///
+/// let yoke = load_object("filename.bincode");
+/// assert_eq!(&**yoke.get(), "hello");
+/// assert!(matches!(yoke.get(), &Cow::Borrowed(_)));
+/// ```
+pub struct Yoke<Y: for<'a> Yokeable<'a>, C> {
+    // must be the first field for drop order
+    // this will have a 'static lifetime parameter, that parameter is a lie
+    yokeable: KindaSortaDangling<Y>,
+    // Safety invariant: this type can be anything, but `yokeable` may only contain references to
+    // StableDeref parts of this cart, and the targets of those references must be valid for the
+    // lifetime of this cart (it must own or borrow them). It's ok for this cart to contain stack
+    // data as long as it is not referenced by `yokeable` during construction. `attach_to_cart`,
+    // the typical constructor of this type, upholds this invariant, but other constructors like
+    // `replace_cart` need to uphold it.
+    // The implementation guarantees that there are no live `yokeable`s that reference data
+    // in a `cart` when the `cart` is dropped; this is guaranteed in the drop glue through field
+    // order.
+    cart: C,
+}
+
+// Manual `Debug` implementation, since the derived one would be unsound.
+// See https://github.com/unicode-org/icu4x/issues/3685
+impl<Y: for<'a> Yokeable<'a>, C: core::fmt::Debug> core::fmt::Debug for Yoke<Y, C>
+where
+    for<'a> <Y as Yokeable<'a>>::Output: core::fmt::Debug,
+{
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        f.debug_struct("Yoke")
+            .field("yokeable", self.get())
+            .field("cart", self.backing_cart())
+            .finish()
+    }
+}
+
+#[test]
+fn test_debug() {
+    let local_data = "foo".to_owned();
+    let y1 = Yoke::<alloc::borrow::Cow<'static, str>, Rc<String>>::attach_to_zero_copy_cart(
+        Rc::new(local_data),
+    );
+    assert_eq!(
+        format!("{y1:?}"),
+        r#"Yoke { yokeable: "foo", cart: "foo" }"#,
+    );
+}
+
+impl<Y: for<'a> Yokeable<'a>, C: StableDeref> Yoke<Y, C>
+where
+    <C as Deref>::Target: 'static,
+{
+    /// Construct a [`Yoke`] by yokeing an object to a cart in a closure.
+    ///
+    /// The closure can read and write data outside of its scope, but data it returns
+    /// may borrow only from the argument passed to the closure.
+    ///
+    /// See also [`Yoke::try_attach_to_cart()`] to return a `Result` from the closure.
+    ///
+    /// Call sites for this function may not compile pre-1.61; if this still happens, use
+    /// [`Yoke::attach_to_cart_badly()`] and file a bug.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// # use yoke::Yoke;
+    /// # use std::rc::Rc;
+    /// # use std::borrow::Cow;
+    /// # fn load_from_cache(_filename: &str) -> Rc<[u8]> {
+    /// #     // dummy implementation
+    /// #     Rc::new([0x5, 0, 0, 0, 0, 0, 0, 0, 0x68, 0x65, 0x6c, 0x6c, 0x6f])
+    /// # }
+    ///
+    /// fn load_object(filename: &str) -> Yoke<Cow<'static, str>, Rc<[u8]>> {
+    ///     let rc: Rc<[u8]> = load_from_cache(filename);
+    ///     Yoke::<Cow<'static, str>, Rc<[u8]>>::attach_to_cart(rc, |data: &[u8]| {
+    ///         // essentially forcing a #[serde(borrow)]
+    ///         Cow::Borrowed(bincode::deserialize(data).unwrap())
+    ///     })
+    /// }
+    ///
+    /// let yoke: Yoke<Cow<str>, _> = load_object("filename.bincode");
+    /// assert_eq!(&**yoke.get(), "hello");
+    /// assert!(matches!(yoke.get(), &Cow::Borrowed(_)));
+    /// ```
+    ///
+    /// Write the number of consumed bytes to a local variable:
+    ///
+    /// ```
+    /// # use yoke::Yoke;
+    /// # use std::rc::Rc;
+    /// # use std::borrow::Cow;
+    /// # fn load_from_cache(_filename: &str) -> Rc<[u8]> {
+    /// #     // dummy implementation
+    /// #     Rc::new([0x5, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0, 0, 0])
+    /// # }
+    ///
+    /// fn load_object(
+    ///     filename: &str,
+    /// ) -> (Yoke<Cow<'static, str>, Rc<[u8]>>, usize) {
+    ///     let rc: Rc<[u8]> = load_from_cache(filename);
+    ///     let mut bytes_remaining = 0;
+    ///     let bytes_remaining = &mut bytes_remaining;
+    ///     let yoke = Yoke::<Cow<'static, str>, Rc<[u8]>>::attach_to_cart(
+    ///         rc,
+    ///         |data: &[u8]| {
+    ///             let mut d = postcard::Deserializer::from_bytes(data);
+    ///             let output = serde::Deserialize::deserialize(&mut d);
+    ///             *bytes_remaining = d.finalize().unwrap().len();
+    ///             Cow::Borrowed(output.unwrap())
+    ///         },
+    ///     );
+    ///     (yoke, *bytes_remaining)
+    /// }
+    ///
+    /// let (yoke, bytes_remaining) = load_object("filename.postcard");
+    /// assert_eq!(&**yoke.get(), "hello");
+    /// assert!(matches!(yoke.get(), &Cow::Borrowed(_)));
+    /// assert_eq!(bytes_remaining, 3);
+    /// ```
+    pub fn attach_to_cart<F>(cart: C, f: F) -> Self
+    where
+        // safety note: This works by enforcing that the *only* place the return value of F
+        // can borrow from is the cart, since `F` must be valid for all lifetimes `'de`
+        //
+        // The <C as Deref>::Target: 'static on the impl is crucial for safety as well
+        //
+        // See safety docs at the bottom of this file for more information
+        F: for<'de> FnOnce(&'de <C as Deref>::Target) -> <Y as Yokeable<'de>>::Output,
+        <C as Deref>::Target: 'static,
+    {
+        let deserialized = f(cart.deref());
+        Self {
+            yokeable: KindaSortaDangling::new(
+                // Safety: the resulting `yokeable` is dropped before the `cart` because
+                // of the Yoke invariant. See the safety docs at the bottom of this file
+                // for the justification of why yokeable could only borrow from the Cart.
+                unsafe { Y::make(deserialized) },
+            ),
+            cart,
+        }
+    }
+
+    /// Construct a [`Yoke`] by yokeing an object to a cart. If an error occurs in the
+    /// deserializer function, the error is passed up to the caller.
+    ///
+    /// Call sites for this function may not compile pre-1.61; if this still happens, use
+    /// [`Yoke::try_attach_to_cart_badly()`] and file a bug.
+    pub fn try_attach_to_cart<E, F>(cart: C, f: F) -> Result<Self, E>
+    where
+        F: for<'de> FnOnce(&'de <C as Deref>::Target) -> Result<<Y as Yokeable<'de>>::Output, E>,
+        <C as Deref>::Target: 'static,
+    {
+        let deserialized = f(cart.deref())?;
+        Ok(Self {
+            yokeable: KindaSortaDangling::new(
+                // Safety: the resulting `yokeable` is dropped before the `cart` because
+                // of the Yoke invariant. See the safety docs at the bottom of this file
+                // for the justification of why yokeable could only borrow from the Cart.
+                unsafe { Y::make(deserialized) },
+            ),
+            cart,
+        })
+    }
+
+    /// Use [`Yoke::attach_to_cart()`].
+    ///
+    /// This was needed because the pre-1.61 compiler couldn't always handle the FnOnce trait bound.
+    #[deprecated]
+    pub fn attach_to_cart_badly(
+        cart: C,
+        f: for<'de> fn(&'de <C as Deref>::Target) -> <Y as Yokeable<'de>>::Output,
+    ) -> Self {
+        Self::attach_to_cart(cart, f)
+    }
+
+    /// Use [`Yoke::try_attach_to_cart()`].
+    ///
+    /// This was needed because the pre-1.61 compiler couldn't always handle the FnOnce trait bound.
+    #[deprecated]
+    pub fn try_attach_to_cart_badly<E>(
+        cart: C,
+        f: for<'de> fn(&'de <C as Deref>::Target) -> Result<<Y as Yokeable<'de>>::Output, E>,
+    ) -> Result<Self, E> {
+        Self::try_attach_to_cart(cart, f)
+    }
+}
+
+impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
+    /// Obtain a valid reference to the yokeable data
+    ///
+    /// This essentially transforms the lifetime of the internal yokeable data to
+    /// be valid.
+    /// For example, if you're working with a `Yoke<Cow<'static, T>, C>`, this
+    /// will return an `&'a Cow<'a, T>`
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use yoke::Yoke;
+    /// # use std::rc::Rc;
+    /// # use std::borrow::Cow;
+    /// # fn load_from_cache(_filename: &str) -> Rc<[u8]> {
+    /// #     // dummy implementation
+    /// #     Rc::new([0x5, 0, 0, 0, 0, 0, 0, 0, 0x68, 0x65, 0x6c, 0x6c, 0x6f])
+    /// # }
+    /// #
+    /// # fn load_object(filename: &str) -> Yoke<Cow<'static, str>, Rc<[u8]>> {
+    /// #     let rc: Rc<[u8]> = load_from_cache(filename);
+    /// #     Yoke::<Cow<'static, str>, Rc<[u8]>>::attach_to_cart(rc, |data: &[u8]| {
+    /// #         Cow::Borrowed(bincode::deserialize(data).unwrap())
+    /// #     })
+    /// # }
+    ///
+    /// // load_object() defined in the example at the top of this page
+    /// let yoke: Yoke<Cow<str>, _> = load_object("filename.bincode");
+    /// assert_eq!(yoke.get(), "hello");
+    /// ```
+    #[inline]
+    pub fn get<'a>(&'a self) -> &'a <Y as Yokeable<'a>>::Output {
+        self.yokeable.transform()
+    }
+
+    /// Get a reference to the backing cart.
+    ///
+    /// This can be useful when building caches, etc. However, if you plan to store the cart
+    /// separately from the yoke, read the note of caution below in [`Yoke::into_backing_cart`].
+    pub fn backing_cart(&self) -> &C {
+        &self.cart
+    }
+
+    /// Get the backing cart by value, dropping the yokeable object.
+    ///
+    /// **Caution:** Calling this method could cause information saved in the yokeable object but
+    /// not the cart to be lost. Use this method only if the yokeable object cannot contain its
+    /// own information.
+    ///
+    /// # Example
+    ///
+    /// Good example: the yokeable object is only a reference, so no information can be lost.
+    ///
+    /// ```
+    /// use yoke::Yoke;
+    ///
+    /// let local_data = "foo".to_owned();
+    /// let yoke = Yoke::<&'static str, Box<String>>::attach_to_zero_copy_cart(
+    ///     Box::new(local_data),
+    /// );
+    /// assert_eq!(*yoke.get(), "foo");
+    ///
+    /// // Get back the cart
+    /// let cart = yoke.into_backing_cart();
+    /// assert_eq!(&*cart, "foo");
+    /// ```
+    ///
+    /// Bad example: information specified in `.with_mut()` is lost.
+    ///
+    /// ```
+    /// use std::borrow::Cow;
+    /// use yoke::Yoke;
+    ///
+    /// let local_data = "foo".to_owned();
+    /// let mut yoke =
+    ///     Yoke::<Cow<'static, str>, Box<String>>::attach_to_zero_copy_cart(
+    ///         Box::new(local_data),
+    ///     );
+    /// assert_eq!(yoke.get(), "foo");
+    ///
+    /// // Override data in the cart
+    /// yoke.with_mut(|cow| {
+    ///     let mut_str = cow.to_mut();
+    ///     mut_str.clear();
+    ///     mut_str.push_str("bar");
+    /// });
+    /// assert_eq!(yoke.get(), "bar");
+    ///
+    /// // Get back the cart
+    /// let cart = yoke.into_backing_cart();
+    /// assert_eq!(&*cart, "foo"); // WHOOPS!
+    /// ```
+    pub fn into_backing_cart(self) -> C {
+        self.cart
+    }
+
+    /// Unsafe function for replacing the cart with another
+    ///
+    /// This can be used for type-erasing the cart, for example.
+    ///
+    /// # Safety
+    ///
+    /// - `f()` must not panic
+    /// - References from the yokeable `Y` should still be valid for the lifetime of the
+    ///   returned cart type `C`.
+    ///
+    ///   For the purpose of determining this, `Yoke` guarantees that references from the Yokeable
+    ///   `Y` into the cart `C` will never be references into its stack data, only heap data protected
+    ///   by `StableDeref`. This does not necessarily mean that `C` implements `StableDeref`, rather that
+    ///   any data referenced by `Y` must be accessed through a `StableDeref` impl on something `C` owns.
+    ///
+    ///   Concretely, this means that if `C = Option<Rc<T>>`, `Y` may contain references to the `T` but not
+    ///   anything else.
+    /// - Lifetimes inside C must not be lengthened, even if they are themselves contravariant.
+    ///   I.e., if C contains an `fn(&'a u8)`, it cannot be replaced with `fn(&'static u8),
+    ///   even though that is typically safe.
+    ///
+    /// Typically, this means implementing `f` as something which _wraps_ the inner cart type `C`.
+    /// `Yoke` only really cares about destructors for its carts so it's fine to erase other
+    /// information about the cart, as long as the backing data will still be destroyed at the
+    /// same time.
+    #[inline]
+    pub unsafe fn replace_cart<C2>(self, f: impl FnOnce(C) -> C2) -> Yoke<Y, C2> {
+        Yoke {
+            // Safety note: the safety invariant of this function guarantees that
+            // the data that the yokeable references has its ownership (if any)
+            // transferred to the new cart before self.cart is dropped.
+            yokeable: self.yokeable,
+            cart: f(self.cart),
+        }
+    }
+
+    /// Mutate the stored [`Yokeable`] data.
+    ///
+    /// See [`Yokeable::transform_mut()`] for why this operation is safe.
+    ///
+    /// # Example
+    ///
+    /// This can be used to partially mutate the stored data, provided
+    /// no _new_ borrowed data is introduced.
+    ///
+    /// ```rust
+    /// # use yoke::{Yoke, Yokeable};
+    /// # use std::rc::Rc;
+    /// # use std::borrow::Cow;
+    /// # use std::mem;
+    /// # fn load_from_cache(_filename: &str) -> Rc<[u8]> {
+    /// #     // dummy implementation
+    /// #     Rc::new([0x5, 0, 0, 0, 0, 0, 0, 0, 0x68, 0x65, 0x6c, 0x6c, 0x6f])
+    /// # }
+    /// #
+    /// # fn load_object(filename: &str) -> Yoke<Bar<'static>, Rc<[u8]>> {
+    /// #     let rc: Rc<[u8]> = load_from_cache(filename);
+    /// #     Yoke::<Bar<'static>, Rc<[u8]>>::attach_to_cart(rc, |data: &[u8]| {
+    /// #         // A real implementation would properly deserialize `Bar` as a whole
+    /// #         Bar {
+    /// #             numbers: Cow::Borrowed(bincode::deserialize(data).unwrap()),
+    /// #             string: Cow::Borrowed(bincode::deserialize(data).unwrap()),
+    /// #             owned: Vec::new(),
+    /// #         }
+    /// #     })
+    /// # }
+    ///
+    /// // also implements Yokeable
+    /// struct Bar<'a> {
+    ///     numbers: Cow<'a, [u8]>,
+    ///     string: Cow<'a, str>,
+    ///     owned: Vec<u8>,
+    /// }
+    ///
+    /// // `load_object()` deserializes an object from a file
+    /// let mut bar: Yoke<Bar, _> = load_object("filename.bincode");
+    /// assert_eq!(bar.get().string, "hello");
+    /// assert!(matches!(bar.get().string, Cow::Borrowed(_)));
+    /// assert_eq!(&*bar.get().numbers, &[0x68, 0x65, 0x6c, 0x6c, 0x6f]);
+    /// assert!(matches!(bar.get().numbers, Cow::Borrowed(_)));
+    /// assert_eq!(&*bar.get().owned, &[]);
+    ///
+    /// bar.with_mut(|bar| {
+    ///     bar.string.to_mut().push_str(" world");
+    ///     bar.owned.extend_from_slice(&[1, 4, 1, 5, 9]);
+    /// });
+    ///
+    /// assert_eq!(bar.get().string, "hello world");
+    /// assert!(matches!(bar.get().string, Cow::Owned(_)));
+    /// assert_eq!(&*bar.get().owned, &[1, 4, 1, 5, 9]);
+    /// // Unchanged and still Cow::Borrowed
+    /// assert_eq!(&*bar.get().numbers, &[0x68, 0x65, 0x6c, 0x6c, 0x6f]);
+    /// assert!(matches!(bar.get().numbers, Cow::Borrowed(_)));
+    ///
+    /// # unsafe impl<'a> Yokeable<'a> for Bar<'static> {
+    /// #     type Output = Bar<'a>;
+    /// #     fn transform(&'a self) -> &'a Bar<'a> {
+    /// #         self
+    /// #     }
+    /// #
+    /// #     fn transform_owned(self) -> Bar<'a> {
+    /// #         // covariant lifetime cast, can be done safely
+    /// #         self
+    /// #     }
+    /// #
+    /// #     unsafe fn make(from: Bar<'a>) -> Self {
+    /// #         let ret = mem::transmute_copy(&from);
+    /// #         mem::forget(from);
+    /// #         ret
+    /// #     }
+    /// #
+    /// #     fn transform_mut<F>(&'a mut self, f: F)
+    /// #     where
+    /// #         F: 'static + FnOnce(&'a mut Self::Output),
+    /// #     {
+    /// #         unsafe { f(mem::transmute(self)) }
+    /// #     }
+    /// # }
+    /// ```
+    pub fn with_mut<'a, F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut <Y as Yokeable<'a>>::Output),
+    {
+        self.yokeable.transform_mut(f)
+    }
+
+    /// Helper function allowing one to wrap the cart type `C` in an `Option<T>`.
+    #[inline]
+    pub fn wrap_cart_in_option(self) -> Yoke<Y, Option<C>> {
+        // Safety: the cart is preserved (since it is just wrapped into a Some),
+        // so any data it owns is too.
+        unsafe { self.replace_cart(Some) }
+    }
+}
+
+impl<Y: for<'a> Yokeable<'a>> Yoke<Y, ()> {
+    /// Construct a new [`Yoke`] from static data. There will be no
+    /// references to `cart` here since [`Yokeable`]s are `'static`,
+    /// this is good for e.g. constructing fully owned
+    /// [`Yoke`]s with no internal borrowing.
+    ///
+    /// This is similar to [`Yoke::new_owned()`] but it does not allow you to
+    /// mix the [`Yoke`] with borrowed data. This is primarily useful
+    /// for using [`Yoke`] in generic scenarios.
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use yoke::Yoke;
+    /// # use std::borrow::Cow;
+    ///
+    /// let owned: Cow<str> = "hello".to_owned().into();
+    /// // this yoke can be intermingled with actually-borrowed Yokes
+    /// let yoke: Yoke<Cow<str>, ()> = Yoke::new_always_owned(owned);
+    ///
+    /// assert_eq!(yoke.get(), "hello");
+    /// ```
+    pub fn new_always_owned(yokeable: Y) -> Self {
+        Self {
+            // Safety note: this `yokeable` certainly does not reference data owned by (), so we do
+            // not have to worry about when the `yokeable` is dropped.
+            yokeable: KindaSortaDangling::new(yokeable),
+            cart: (),
+        }
+    }
+
+    /// Obtain the yokeable out of a `Yoke<Y, ()>`
+    ///
+    /// For most `Yoke` types this would be unsafe but it's
+    /// fine for `Yoke<Y, ()>` since there are no actual internal
+    /// references
+    pub fn into_yokeable(self) -> Y {
+        // Safety note: since `yokeable` cannot reference data owned by `()`, this is certainly
+        // safe.
+        self.yokeable.into_inner()
+    }
+}
+
+// C does not need to be StableDeref here, if the yoke was constructed it's valid,
+// and new_owned() doesn't construct a yokeable that uses references,
+impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, Option<C>> {
+    /// Construct a new [`Yoke`] from static data. There will be no
+    /// references to `cart` here since [`Yokeable`]s are `'static`,
+    /// this is good for e.g. constructing fully owned
+    /// [`Yoke`]s with no internal borrowing.
+    ///
+    /// This can be paired with [`Yoke:: wrap_cart_in_option()`] to mix owned
+    /// and borrowed data.
+    ///
+    /// If you do not wish to pair this with borrowed data, [`Yoke::new_always_owned()`] can
+    /// be used to get a [`Yoke`] API on always-owned data.
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use yoke::Yoke;
+    /// # use std::borrow::Cow;
+    /// # use std::rc::Rc;
+    ///
+    /// let owned: Cow<str> = "hello".to_owned().into();
+    /// // this yoke can be intermingled with actually-borrowed Yokes
+    /// let yoke: Yoke<Cow<str>, Option<Rc<[u8]>>> = Yoke::new_owned(owned);
+    ///
+    /// assert_eq!(yoke.get(), "hello");
+    /// ```
+    pub const fn new_owned(yokeable: Y) -> Self {
+        Self {
+            // Safety note: this `yokeable` is known not to borrow from the cart.
+            yokeable: KindaSortaDangling::new(yokeable),
+            cart: None,
+        }
+    }
+
+    /// Obtain the yokeable out of a `Yoke<Y, Option<C>>` if possible.
+    ///
+    /// If the cart is `None`, this returns `Ok`, but if the cart is `Some`,
+    /// this returns `self` as an error.
+    pub fn try_into_yokeable(self) -> Result<Y, Self> {
+        // Safety: if the cart is None there is no way for the yokeable to
+        // have references into it because of the cart invariant.
+        match self.cart {
+            Some(_) => Err(self),
+            None => Ok(self.yokeable.into_inner()),
+        }
+    }
+}
+
+impl<Y: for<'a> Yokeable<'a>, C: CartablePointerLike> Yoke<Y, Option<C>> {
+    /// Converts a `Yoke<Y, Option<C>>` to `Yoke<Y, CartableOptionPointer<C>>`
+    /// for better niche optimization when stored as a field.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use std::borrow::Cow;
+    /// use yoke::Yoke;
+    ///
+    /// let yoke: Yoke<Cow<[u8]>, Box<Vec<u8>>> =
+    ///     Yoke::attach_to_cart(vec![10, 20, 30].into(), |c| c.into());
+    ///
+    /// let yoke_option = yoke.wrap_cart_in_option();
+    /// let yoke_option_pointer = yoke_option.convert_cart_into_option_pointer();
+    /// ```
+    ///
+    /// The niche improves stack sizes:
+    ///
+    /// ```
+    /// use yoke::Yoke;
+    /// use yoke::cartable_ptr::CartableOptionPointer;
+    /// use std::mem::size_of;
+    /// use std::rc::Rc;
+    ///
+    /// // The data struct is 6 words:
+    /// # #[derive(yoke::Yokeable)]
+    /// # struct MyDataStruct<'a> {
+    /// #     _s: (usize, usize, usize, usize),
+    /// #     _p: &'a str,
+    /// # }
+    /// const W: usize = core::mem::size_of::<usize>();
+    /// assert_eq!(W * 6, size_of::<MyDataStruct>());
+    ///
+    /// // An enum containing the data struct with an `Option<Rc>` cart is 8 words:
+    /// enum StaticOrYoke1 {
+    ///     Static(&'static MyDataStruct<'static>),
+    ///     Yoke(Yoke<MyDataStruct<'static>, Option<Rc<String>>>),
+    /// }
+    /// assert_eq!(W * 8, size_of::<StaticOrYoke1>());
+    ///
+    /// // When using `CartableOptionPointer``, we need only 7 words for the same behavior:
+    /// enum StaticOrYoke2 {
+    ///     Static(&'static MyDataStruct<'static>),
+    ///     Yoke(Yoke<MyDataStruct<'static>, CartableOptionPointer<Rc<String>>>),
+    /// }
+    /// assert_eq!(W * 7, size_of::<StaticOrYoke2>());
+    /// ```
+    #[inline]
+    pub fn convert_cart_into_option_pointer(self) -> Yoke<Y, CartableOptionPointer<C>> {
+        match self.cart {
+            Some(cart) => Yoke {
+                // Safety note: CartableOptionPointer::from_cartable only wraps the `cart`,
+                // so the data referenced by the yokeable is still live.
+                yokeable: self.yokeable,
+                cart: CartableOptionPointer::from_cartable(cart),
+            },
+            None => Yoke {
+                // Safety note: this Yokeable cannot refer to any data since self.cart is None.
+                yokeable: self.yokeable,
+                cart: CartableOptionPointer::none(),
+            },
+        }
+    }
+}
+
+impl<Y: for<'a> Yokeable<'a>, C: CartablePointerLike> Yoke<Y, CartableOptionPointer<C>> {
+    /// Obtain the yokeable out of a `Yoke<Y, CartableOptionPointer<C>>` if possible.
+    ///
+    /// If the cart is `None`, this returns `Ok`, but if the cart is `Some`,
+    /// this returns `self` as an error.
+    #[inline]
+    pub fn try_into_yokeable(self) -> Result<Y, Self> {
+        if self.cart.is_none() {
+            Ok(self.yokeable.into_inner())
+        } else {
+            Err(self)
+        }
+    }
+}
+
+/// This trait marks cart types that do not change source on cloning
+///
+/// This is conceptually similar to [`stable_deref_trait::CloneStableDeref`],
+/// however [`stable_deref_trait::CloneStableDeref`] is not (and should not) be
+/// implemented on [`Option`] (since it's not [`Deref`]). [`CloneableCart`] essentially is
+/// "if there _is_ data to borrow from here, cloning the cart gives you an additional
+/// handle to the same data".
+///
+/// # Safety
+/// This trait is safe to implement on `StableDeref` types which, once `Clone`d, point to the same underlying data and retain ownership.
+///
+/// This trait can also be implemented on aggregates of such types like `Option<T: CloneableCart>` and `(T: CloneableCart, U: CloneableCart)`.
+///
+/// Essentially, all data that could be referenced by a Yokeable (i.e. data that is referenced via a StableDeref) must retain the same
+/// pointer and ownership semantics once cloned.
+pub unsafe trait CloneableCart: Clone {}
+
+#[cfg(feature = "alloc")]
+// Safety: Rc<T> implements CloneStableDeref.
+unsafe impl<T: ?Sized> CloneableCart for Rc<T> {}
+#[cfg(feature = "alloc")]
+// Safety: Arc<T> implements CloneStableDeref.
+unsafe impl<T: ?Sized> CloneableCart for Arc<T> {}
+// Safety: Option<T> cannot deref to anything that T doesn't already deref to.
+unsafe impl<T: CloneableCart> CloneableCart for Option<T> {}
+// Safety: &'a T is indeed StableDeref, and cloning it refers to the same data.
+// &'a T does not own in the first place, so ownership is preserved.
+unsafe impl<'a, T: ?Sized> CloneableCart for &'a T {}
+// Safety: () cannot deref to anything.
+unsafe impl CloneableCart for () {}
+
+/// Clone requires that the cart type `C` derefs to the same address after it is cloned. This works for
+/// Rc, Arc, and &'a T.
+///
+/// For other cart types, clone `.backing_cart()` and re-use `.attach_to_cart()`; however, doing
+/// so may lose mutations performed via `.with_mut()`.
+///
+/// Cloning a `Yoke` is often a cheap operation requiring no heap allocations, in much the same
+/// way that cloning an `Rc` is a cheap operation. However, if the `yokeable` contains owned data
+/// (e.g., from `.with_mut()`), that data will need to be cloned.
+impl<Y: for<'a> Yokeable<'a>, C: CloneableCart> Clone for Yoke<Y, C>
+where
+    for<'a> <Y as Yokeable<'a>>::Output: Clone,
+{
+    fn clone(&self) -> Self {
+        // We have an &T not a T, and we can clone T
+        let this = self.get().clone();
+        Yoke {
+            yokeable: KindaSortaDangling::new(
+                // Safety: C being a CloneableCart guarantees that the data referenced by the
+                // `yokeable` is kept alive by the clone of the cart.
+                unsafe { Y::make(this) },
+            ),
+            cart: self.cart.clone(),
+        }
+    }
+}
+
+#[test]
+fn test_clone() {
+    let local_data = "foo".to_owned();
+    let y1 = Yoke::<alloc::borrow::Cow<'static, str>, Rc<String>>::attach_to_zero_copy_cart(
+        Rc::new(local_data),
+    );
+
+    // Test basic clone
+    let y2 = y1.clone();
+    assert_eq!(y1.get(), "foo");
+    assert_eq!(y2.get(), "foo");
+
+    // Test clone with mutation on target
+    let mut y3 = y1.clone();
+    y3.with_mut(|y| {
+        y.to_mut().push_str("bar");
+    });
+    assert_eq!(y1.get(), "foo");
+    assert_eq!(y2.get(), "foo");
+    assert_eq!(y3.get(), "foobar");
+
+    // Test that mutations on source do not affect target
+    let y4 = y3.clone();
+    y3.with_mut(|y| {
+        y.to_mut().push_str("baz");
+    });
+    assert_eq!(y1.get(), "foo");
+    assert_eq!(y2.get(), "foo");
+    assert_eq!(y3.get(), "foobarbaz");
+    assert_eq!(y4.get(), "foobar");
+}
+
+impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
+    /// Allows one to "project" a yoke to perform a transformation on the data, potentially
+    /// looking at a subfield, and producing a new yoke. This will move cart, and the provided
+    /// transformation is only allowed to use data known to be borrowed from the cart.
+    ///
+    /// The callback takes an additional `PhantomData<&()>` parameter to anchor lifetimes
+    /// (see [#86702](https://github.com/rust-lang/rust/issues/86702)) This parameter
+    /// should just be ignored in the callback.
+    ///
+    /// This can be used, for example, to transform data from one format to another:
+    ///
+    /// ```
+    /// # use std::rc::Rc;
+    /// # use yoke::Yoke;
+    /// #
+    /// fn slice(y: Yoke<&'static str, Rc<[u8]>>) -> Yoke<&'static [u8], Rc<[u8]>> {
+    ///     y.map_project(move |yk, _| yk.as_bytes())
+    /// }
+    /// ```
+    ///
+    /// This can also be used to create a yoke for a subfield
+    ///
+    /// ```
+    /// # use yoke::{Yoke, Yokeable};
+    /// # use std::mem;
+    /// # use std::rc::Rc;
+    /// #
+    /// // also safely implements Yokeable<'a>
+    /// struct Bar<'a> {
+    ///     string_1: &'a str,
+    ///     string_2: &'a str,
+    /// }
+    ///
+    /// fn map_project_string_1(
+    ///     bar: Yoke<Bar<'static>, Rc<[u8]>>,
+    /// ) -> Yoke<&'static str, Rc<[u8]>> {
+    ///     bar.map_project(|bar, _| bar.string_1)
+    /// }
+    ///
+    /// #
+    /// # unsafe impl<'a> Yokeable<'a> for Bar<'static> {
+    /// #     type Output = Bar<'a>;
+    /// #     fn transform(&'a self) -> &'a Bar<'a> {
+    /// #         self
+    /// #     }
+    /// #
+    /// #     fn transform_owned(self) -> Bar<'a> {
+    /// #         // covariant lifetime cast, can be done safely
+    /// #         self
+    /// #     }
+    /// #
+    /// #     unsafe fn make(from: Bar<'a>) -> Self {
+    /// #         let ret = mem::transmute_copy(&from);
+    /// #         mem::forget(from);
+    /// #         ret
+    /// #     }
+    /// #
+    /// #     fn transform_mut<F>(&'a mut self, f: F)
+    /// #     where
+    /// #         F: 'static + FnOnce(&'a mut Self::Output),
+    /// #     {
+    /// #         unsafe { f(mem::transmute(self)) }
+    /// #     }
+    /// # }
+    /// ```
+    //
+    // Safety docs can be found at the end of the file.
+    pub fn map_project<P, F>(self, f: F) -> Yoke<P, C>
+    where
+        P: for<'a> Yokeable<'a>,
+        F: for<'a> FnOnce(
+            <Y as Yokeable<'a>>::Output,
+            PhantomData<&'a ()>,
+        ) -> <P as Yokeable<'a>>::Output,
+    {
+        let p = f(self.yokeable.into_inner().transform_owned(), PhantomData);
+        Yoke {
+            yokeable: KindaSortaDangling::new(
+                // Safety: the resulting `yokeable` is dropped before the `cart` because
+                // of the Yoke invariant. See the safety docs below for the justification of why
+                // yokeable could only borrow from the Cart.
+                unsafe { P::make(p) },
+            ),
+            cart: self.cart,
+        }
+    }
+
+    /// This is similar to [`Yoke::map_project`], however it does not move
+    /// [`Self`] and instead clones the cart (only if the cart is a [`CloneableCart`])
+    ///
+    /// This is a bit more efficient than cloning the [`Yoke`] and then calling [`Yoke::map_project`]
+    /// because then it will not clone fields that are going to be discarded.
+    pub fn map_project_cloned<'this, P, F>(&'this self, f: F) -> Yoke<P, C>
+    where
+        P: for<'a> Yokeable<'a>,
+        C: CloneableCart,
+        F: for<'a> FnOnce(
+            &'this <Y as Yokeable<'a>>::Output,
+            PhantomData<&'a ()>,
+        ) -> <P as Yokeable<'a>>::Output,
+    {
+        let p = f(self.get(), PhantomData);
+        Yoke {
+            yokeable: KindaSortaDangling::new(
+                // Safety: the resulting `yokeable` is dropped before the `cart` because
+                // of the Yoke invariant. See the safety docs below for the justification of why
+                // yokeable could only borrow from the Cart.
+                unsafe { P::make(p) },
+            ),
+            cart: self.cart.clone(),
+        }
+    }
+
+    /// This is similar to [`Yoke::map_project`], however it can also bubble up an error
+    /// from the callback.
+    ///
+    /// ```
+    /// # use std::rc::Rc;
+    /// # use yoke::Yoke;
+    /// # use std::str::{self, Utf8Error};
+    /// #
+    /// fn slice(
+    ///     y: Yoke<&'static [u8], Rc<[u8]>>,
+    /// ) -> Result<Yoke<&'static str, Rc<[u8]>>, Utf8Error> {
+    ///     y.try_map_project(move |bytes, _| str::from_utf8(bytes))
+    /// }
+    /// ```
+    ///
+    /// This can also be used to create a yoke for a subfield
+    ///
+    /// ```
+    /// # use yoke::{Yoke, Yokeable};
+    /// # use std::mem;
+    /// # use std::rc::Rc;
+    /// # use std::str::{self, Utf8Error};
+    /// #
+    /// // also safely implements Yokeable<'a>
+    /// struct Bar<'a> {
+    ///     bytes_1: &'a [u8],
+    ///     string_2: &'a str,
+    /// }
+    ///
+    /// fn map_project_string_1(
+    ///     bar: Yoke<Bar<'static>, Rc<[u8]>>,
+    /// ) -> Result<Yoke<&'static str, Rc<[u8]>>, Utf8Error> {
+    ///     bar.try_map_project(|bar, _| str::from_utf8(bar.bytes_1))
+    /// }
+    ///
+    /// #
+    /// # unsafe impl<'a> Yokeable<'a> for Bar<'static> {
+    /// #     type Output = Bar<'a>;
+    /// #     fn transform(&'a self) -> &'a Bar<'a> {
+    /// #         self
+    /// #     }
+    /// #
+    /// #     fn transform_owned(self) -> Bar<'a> {
+    /// #         // covariant lifetime cast, can be done safely
+    /// #         self
+    /// #     }
+    /// #
+    /// #     unsafe fn make(from: Bar<'a>) -> Self {
+    /// #         let ret = mem::transmute_copy(&from);
+    /// #         mem::forget(from);
+    /// #         ret
+    /// #     }
+    /// #
+    /// #     fn transform_mut<F>(&'a mut self, f: F)
+    /// #     where
+    /// #         F: 'static + FnOnce(&'a mut Self::Output),
+    /// #     {
+    /// #         unsafe { f(mem::transmute(self)) }
+    /// #     }
+    /// # }
+    /// ```
+    pub fn try_map_project<P, F, E>(self, f: F) -> Result<Yoke<P, C>, E>
+    where
+        P: for<'a> Yokeable<'a>,
+        F: for<'a> FnOnce(
+            <Y as Yokeable<'a>>::Output,
+            PhantomData<&'a ()>,
+        ) -> Result<<P as Yokeable<'a>>::Output, E>,
+    {
+        let p = f(self.yokeable.into_inner().transform_owned(), PhantomData)?;
+        Ok(Yoke {
+            yokeable: KindaSortaDangling::new(
+                // Safety: the resulting `yokeable` is dropped before the `cart` because
+                // of the Yoke invariant. See the safety docs below for the justification of why
+                // yokeable could only borrow from the Cart.
+                unsafe { P::make(p) },
+            ),
+            cart: self.cart,
+        })
+    }
+
+    /// This is similar to [`Yoke::try_map_project`], however it does not move
+    /// [`Self`] and instead clones the cart (only if the cart is a [`CloneableCart`])
+    ///
+    /// This is a bit more efficient than cloning the [`Yoke`] and then calling [`Yoke::map_project`]
+    /// because then it will not clone fields that are going to be discarded.
+    pub fn try_map_project_cloned<'this, P, F, E>(&'this self, f: F) -> Result<Yoke<P, C>, E>
+    where
+        P: for<'a> Yokeable<'a>,
+        C: CloneableCart,
+        F: for<'a> FnOnce(
+            &'this <Y as Yokeable<'a>>::Output,
+            PhantomData<&'a ()>,
+        ) -> Result<<P as Yokeable<'a>>::Output, E>,
+    {
+        let p = f(self.get(), PhantomData)?;
+        Ok(Yoke {
+            yokeable: KindaSortaDangling::new(
+                // Safety: the resulting `yokeable` is dropped before the `cart` because
+                // of the Yoke invariant. See the safety docs below for the justification of why
+                // yokeable could only borrow from the Cart.
+                unsafe { P::make(p) },
+            ),
+            cart: self.cart.clone(),
+        })
+    }
+    /// This is similar to [`Yoke::map_project`], but it works around older versions
+    /// of Rust not being able to use `FnOnce` by using an explicit capture input.
+    /// See [#1061](https://github.com/unicode-org/icu4x/issues/1061).
+    ///
+    /// See the docs of [`Yoke::map_project`] for how this works.
+    pub fn map_project_with_explicit_capture<P, T>(
+        self,
+        capture: T,
+        f: for<'a> fn(
+            <Y as Yokeable<'a>>::Output,
+            capture: T,
+            PhantomData<&'a ()>,
+        ) -> <P as Yokeable<'a>>::Output,
+    ) -> Yoke<P, C>
+    where
+        P: for<'a> Yokeable<'a>,
+    {
+        let p = f(
+            self.yokeable.into_inner().transform_owned(),
+            capture,
+            PhantomData,
+        );
+        Yoke {
+            yokeable: KindaSortaDangling::new(
+                // Safety: the resulting `yokeable` is dropped before the `cart` because
+                // of the Yoke invariant. See the safety docs below for the justification of why
+                // yokeable could only borrow from the Cart.
+                unsafe { P::make(p) },
+            ),
+            cart: self.cart,
+        }
+    }
+
+    /// This is similar to [`Yoke::map_project_cloned`], but it works around older versions
+    /// of Rust not being able to use `FnOnce` by using an explicit capture input.
+    /// See [#1061](https://github.com/unicode-org/icu4x/issues/1061).
+    ///
+    /// See the docs of [`Yoke::map_project_cloned`] for how this works.
+    pub fn map_project_cloned_with_explicit_capture<'this, P, T>(
+        &'this self,
+        capture: T,
+        f: for<'a> fn(
+            &'this <Y as Yokeable<'a>>::Output,
+            capture: T,
+            PhantomData<&'a ()>,
+        ) -> <P as Yokeable<'a>>::Output,
+    ) -> Yoke<P, C>
+    where
+        P: for<'a> Yokeable<'a>,
+        C: CloneableCart,
+    {
+        let p = f(self.get(), capture, PhantomData);
+        Yoke {
+            yokeable: KindaSortaDangling::new(
+                // Safety: the resulting `yokeable` is dropped before the `cart` because
+                // of the Yoke invariant. See the safety docs below for the justification of why
+                // yokeable could only borrow from the Cart.
+                unsafe { P::make(p) },
+            ),
+            cart: self.cart.clone(),
+        }
+    }
+
+    /// This is similar to [`Yoke::try_map_project`], but it works around older versions
+    /// of Rust not being able to use `FnOnce` by using an explicit capture input.
+    /// See [#1061](https://github.com/unicode-org/icu4x/issues/1061).
+    ///
+    /// See the docs of [`Yoke::try_map_project`] for how this works.
+    #[allow(clippy::type_complexity)]
+    pub fn try_map_project_with_explicit_capture<P, T, E>(
+        self,
+        capture: T,
+        f: for<'a> fn(
+            <Y as Yokeable<'a>>::Output,
+            capture: T,
+            PhantomData<&'a ()>,
+        ) -> Result<<P as Yokeable<'a>>::Output, E>,
+    ) -> Result<Yoke<P, C>, E>
+    where
+        P: for<'a> Yokeable<'a>,
+    {
+        let p = f(
+            self.yokeable.into_inner().transform_owned(),
+            capture,
+            PhantomData,
+        )?;
+        Ok(Yoke {
+            yokeable: KindaSortaDangling::new(
+                // Safety: the resulting `yokeable` is dropped before the `cart` because
+                // of the Yoke invariant. See the safety docs below for the justification of why
+                // yokeable could only borrow from the Cart.
+                unsafe { P::make(p) },
+            ),
+            cart: self.cart,
+        })
+    }
+
+    /// This is similar to [`Yoke::try_map_project_cloned`], but it works around older versions
+    /// of Rust not being able to use `FnOnce` by using an explicit capture input.
+    /// See [#1061](https://github.com/unicode-org/icu4x/issues/1061).
+    ///
+    /// See the docs of [`Yoke::try_map_project_cloned`] for how this works.
+    #[allow(clippy::type_complexity)]
+    pub fn try_map_project_cloned_with_explicit_capture<'this, P, T, E>(
+        &'this self,
+        capture: T,
+        f: for<'a> fn(
+            &'this <Y as Yokeable<'a>>::Output,
+            capture: T,
+            PhantomData<&'a ()>,
+        ) -> Result<<P as Yokeable<'a>>::Output, E>,
+    ) -> Result<Yoke<P, C>, E>
+    where
+        P: for<'a> Yokeable<'a>,
+        C: CloneableCart,
+    {
+        let p = f(self.get(), capture, PhantomData)?;
+        Ok(Yoke {
+            yokeable: KindaSortaDangling::new(
+                // Safety: the resulting `yokeable` is dropped before the `cart` because
+                // of the Yoke invariant. See the safety docs below for the justification of why
+                // yokeable could only borrow from the Cart.
+                unsafe { P::make(p) },
+            ),
+            cart: self.cart.clone(),
+        })
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<Y: for<'a> Yokeable<'a>, C: 'static + Sized> Yoke<Y, Rc<C>> {
+    /// Allows type-erasing the cart in a `Yoke<Y, Rc<C>>`.
+    ///
+    /// The yoke only carries around a cart type `C` for its destructor,
+    /// since it needs to be able to guarantee that its internal references
+    /// are valid for the lifetime of the Yoke. As such, the actual type of the
+    /// Cart is not very useful unless you wish to extract data out of it
+    /// via [`Yoke::backing_cart()`]. Erasing the cart allows for one to mix
+    /// [`Yoke`]s obtained from different sources.
+    ///
+    /// In case the cart type `C` is not already an `Rc<T>`, you can use
+    /// [`Yoke::wrap_cart_in_rc()`] to wrap it.
+    ///
+    /// ✨ *Enabled with the `alloc` Cargo feature.*
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use std::rc::Rc;
+    /// use yoke::erased::ErasedRcCart;
+    /// use yoke::Yoke;
+    ///
+    /// let buffer1: Rc<String> = Rc::new("   foo bar baz  ".into());
+    /// let buffer2: Box<String> = Box::new("  baz quux  ".into());
+    ///
+    /// let yoke1 =
+    ///     Yoke::<&'static str, _>::attach_to_cart(buffer1, |rc| rc.trim());
+    /// let yoke2 = Yoke::<&'static str, _>::attach_to_cart(buffer2, |b| b.trim());
+    ///
+    /// let erased1: Yoke<_, ErasedRcCart> = yoke1.erase_rc_cart();
+    /// // Wrap the Box in an Rc to make it compatible
+    /// let erased2: Yoke<_, ErasedRcCart> =
+    ///     yoke2.wrap_cart_in_rc().erase_rc_cart();
+    ///
+    /// // Now erased1 and erased2 have the same type!
+    /// ```
+    pub fn erase_rc_cart(self) -> Yoke<Y, ErasedRcCart> {
+        // Safety: safe because the cart is preserved, as it is just type-erased
+        unsafe { self.replace_cart(|c| c as ErasedRcCart) }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<Y: for<'a> Yokeable<'a>, C: 'static + Sized + Send + Sync> Yoke<Y, Arc<C>> {
+    /// Allows type-erasing the cart in a `Yoke<Y, Arc<C>>`.
+    ///
+    /// The yoke only carries around a cart type `C` for its destructor,
+    /// since it needs to be able to guarantee that its internal references
+    /// are valid for the lifetime of the Yoke. As such, the actual type of the
+    /// Cart is not very useful unless you wish to extract data out of it
+    /// via [`Yoke::backing_cart()`]. Erasing the cart allows for one to mix
+    /// [`Yoke`]s obtained from different sources.
+    ///
+    /// In case the cart type `C` is not already an `Arc<T>`, you can use
+    /// [`Yoke::wrap_cart_in_arc()`] to wrap it.
+    ///
+    /// ✨ *Enabled with the `alloc` Cargo feature.*
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use std::sync::Arc;
+    /// use yoke::erased::ErasedArcCart;
+    /// use yoke::Yoke;
+    ///
+    /// let buffer1: Arc<String> = Arc::new("   foo bar baz  ".into());
+    /// let buffer2: Box<String> = Box::new("  baz quux  ".into());
+    ///
+    /// let yoke1 =
+    ///     Yoke::<&'static str, _>::attach_to_cart(buffer1, |arc| arc.trim());
+    /// let yoke2 = Yoke::<&'static str, _>::attach_to_cart(buffer2, |b| b.trim());
+    ///
+    /// let erased1: Yoke<_, ErasedArcCart> = yoke1.erase_arc_cart();
+    /// // Wrap the Box in an Rc to make it compatible
+    /// let erased2: Yoke<_, ErasedArcCart> =
+    ///     yoke2.wrap_cart_in_arc().erase_arc_cart();
+    ///
+    /// // Now erased1 and erased2 have the same type!
+    /// ```
+    pub fn erase_arc_cart(self) -> Yoke<Y, ErasedArcCart> {
+        // Safety: safe because the cart is preserved, as it is just type-erased
+        unsafe { self.replace_cart(|c| c as ErasedArcCart) }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<Y: for<'a> Yokeable<'a>, C: 'static + Sized> Yoke<Y, Box<C>> {
+    /// Allows type-erasing the cart in a `Yoke<Y, Box<C>>`.
+    ///
+    /// The yoke only carries around a cart type `C` for its destructor,
+    /// since it needs to be able to guarantee that its internal references
+    /// are valid for the lifetime of the Yoke. As such, the actual type of the
+    /// Cart is not very useful unless you wish to extract data out of it
+    /// via [`Yoke::backing_cart()`]. Erasing the cart allows for one to mix
+    /// [`Yoke`]s obtained from different sources.
+    ///
+    /// In case the cart type `C` is not already `Box<T>`, you can use
+    /// [`Yoke::wrap_cart_in_box()`] to wrap it.
+    ///
+    /// ✨ *Enabled with the `alloc` Cargo feature.*
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// use std::rc::Rc;
+    /// use yoke::erased::ErasedBoxCart;
+    /// use yoke::Yoke;
+    ///
+    /// let buffer1: Rc<String> = Rc::new("   foo bar baz  ".into());
+    /// let buffer2: Box<String> = Box::new("  baz quux  ".into());
+    ///
+    /// let yoke1 =
+    ///     Yoke::<&'static str, _>::attach_to_cart(buffer1, |rc| rc.trim());
+    /// let yoke2 = Yoke::<&'static str, _>::attach_to_cart(buffer2, |b| b.trim());
+    ///
+    /// // Wrap the Rc in an Box to make it compatible
+    /// let erased1: Yoke<_, ErasedBoxCart> =
+    ///     yoke1.wrap_cart_in_box().erase_box_cart();
+    /// let erased2: Yoke<_, ErasedBoxCart> = yoke2.erase_box_cart();
+    ///
+    /// // Now erased1 and erased2 have the same type!
+    /// ```
+    pub fn erase_box_cart(self) -> Yoke<Y, ErasedBoxCart> {
+        // Safety: safe because the cart is preserved, as it is just type-erased
+        unsafe { self.replace_cart(|c| c as ErasedBoxCart) }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
+    /// Helper function allowing one to wrap the cart type `C` in a `Box<T>`.
+    /// Can be paired with [`Yoke::erase_box_cart()`]
+    ///
+    /// ✨ *Enabled with the `alloc` Cargo feature.*
+    #[inline]
+    pub fn wrap_cart_in_box(self) -> Yoke<Y, Box<C>> {
+        // Safety: safe because the cart is preserved, as it is just wrapped.
+        unsafe { self.replace_cart(Box::new) }
+    }
+    /// Helper function allowing one to wrap the cart type `C` in an `Rc<T>`.
+    /// Can be paired with [`Yoke::erase_rc_cart()`], or generally used
+    /// to make the [`Yoke`] cloneable.
+    ///
+    /// ✨ *Enabled with the `alloc` Cargo feature.*
+    #[inline]
+    pub fn wrap_cart_in_rc(self) -> Yoke<Y, Rc<C>> {
+        // Safety: safe because the cart is preserved, as it is just wrapped
+        unsafe { self.replace_cart(Rc::new) }
+    }
+    /// Helper function allowing one to wrap the cart type `C` in an `Rc<T>`.
+    /// Can be paired with [`Yoke::erase_arc_cart()`], or generally used
+    /// to make the [`Yoke`] cloneable.
+    ///
+    /// ✨ *Enabled with the `alloc` Cargo feature.*
+    #[inline]
+    pub fn wrap_cart_in_arc(self) -> Yoke<Y, Arc<C>> {
+        // Safety: safe because the cart is preserved, as it is just wrapped
+        unsafe { self.replace_cart(Arc::new) }
+    }
+}
+
+impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
+    /// Helper function allowing one to wrap the cart type `C` in an [`EitherCart`].
+    ///
+    /// This function wraps the cart into the `A` variant. To wrap it into the
+    /// `B` variant, use [`Self::wrap_cart_in_either_b()`].
+    ///
+    /// For an example, see [`EitherCart`].
+    #[inline]
+    pub fn wrap_cart_in_either_a<B>(self) -> Yoke<Y, EitherCart<C, B>> {
+        // Safety: safe because the cart is preserved, as it is just wrapped.
+        unsafe { self.replace_cart(EitherCart::A) }
+    }
+    /// Helper function allowing one to wrap the cart type `C` in an [`EitherCart`].
+    ///
+    /// This function wraps the cart into the `B` variant. To wrap it into the
+    /// `A` variant, use [`Self::wrap_cart_in_either_a()`].
+    ///
+    /// For an example, see [`EitherCart`].
+    #[inline]
+    pub fn wrap_cart_in_either_b<A>(self) -> Yoke<Y, EitherCart<A, C>> {
+        // Safety: safe because the cart is preserved, as it is just wrapped.
+        unsafe { self.replace_cart(EitherCart::B) }
+    }
+}
+
+/// # Safety docs for project()
+///
+/// (Docs are on a private const to allow the use of compile_fail doctests)
+///
+/// This is safe to perform because of the choice of lifetimes on `f`, that is,
+/// `for<a> fn(<Y as Yokeable<'a>>::Output, &'a ()) -> <P as Yokeable<'a>>::Output`.
+///
+/// Note that correctness arguments are similar if you replace `fn` with `FnOnce`.
+///
+/// What we want this function to do is take a Yokeable (`Y`) that is borrowing from the cart, and
+/// produce another Yokeable (`P`) that also borrows from the same cart. There are a couple potential
+/// hazards here:
+///
+/// - `P` ends up borrowing data from `Y` (or elsewhere) that did _not_ come from the cart,
+///   for example `P` could borrow owned data from a `Cow`. This would make the `Yoke<P>` dependent
+///   on data owned only by the `Yoke<Y>`.
+/// - Borrowed data from `Y` escapes with the wrong lifetime
+///
+/// Let's walk through these and see how they're prevented.
+///
+/// ```rust, compile_fail
+/// # use std::rc::Rc;
+/// # use yoke::Yoke;
+/// # use std::borrow::Cow;
+/// fn borrow_potentially_owned(y: &Yoke<Cow<'static, str>, Rc<[u8]>>) -> Yoke<&'static str, Rc<[u8]>> {
+///    y.map_project_cloned(|cow, _| &*cow)   
+/// }
+/// ```
+///
+/// In this case, the lifetime of `&*cow` is `&'this str`, however the function needs to be able to return
+/// `&'a str` _for all `'a`_, which isn't possible.
+///
+///
+/// ```rust, compile_fail
+/// # use std::rc::Rc;
+/// # use yoke::Yoke;
+/// # use std::borrow::Cow;
+/// fn borrow_potentially_owned(y: Yoke<Cow<'static, str>, Rc<[u8]>>) -> Yoke<&'static str, Rc<[u8]>> {
+///    y.map_project(|cow, _| &*cow)   
+/// }
+/// ```
+///
+/// This has the same issue, `&*cow` is borrowing for a local lifetime.
+///
+/// Similarly, trying to project an owned field of a struct will produce similar errors:
+///
+/// ```rust,compile_fail
+/// # use std::borrow::Cow;
+/// # use yoke::{Yoke, Yokeable};
+/// # use std::mem;
+/// # use std::rc::Rc;
+/// #
+/// // also safely implements Yokeable<'a>
+/// struct Bar<'a> {
+///     owned: String,
+///     string_2: &'a str,
+/// }
+///
+/// fn map_project_owned(bar: &Yoke<Bar<'static>, Rc<[u8]>>) -> Yoke<&'static str, Rc<[u8]>> {
+///     // ERROR (but works if you replace owned with string_2)
+///     bar.map_project_cloned(|bar, _| &*bar.owned)   
+/// }
+///
+/// #
+/// # unsafe impl<'a> Yokeable<'a> for Bar<'static> {
+/// #     type Output = Bar<'a>;
+/// #     fn transform(&'a self) -> &'a Bar<'a> {
+/// #         self
+/// #     }
+/// #
+/// #     fn transform_owned(self) -> Bar<'a> {
+/// #         // covariant lifetime cast, can be done safely
+/// #         self
+/// #     }
+/// #
+/// #     unsafe fn make(from: Bar<'a>) -> Self {
+/// #         let ret = mem::transmute_copy(&from);
+/// #         mem::forget(from);
+/// #         ret
+/// #     }
+/// #
+/// #     fn transform_mut<F>(&'a mut self, f: F)
+/// #     where
+/// #         F: 'static + FnOnce(&'a mut Self::Output),
+/// #     {
+/// #         unsafe { f(mem::transmute(self)) }
+/// #     }
+/// # }
+/// ```
+///
+/// Borrowed data from `Y` similarly cannot escape with the wrong lifetime because of the `for<'a>`, since
+/// it will never be valid for the borrowed data to escape for all lifetimes of 'a. Internally, `.project()`
+/// uses `.get()`, however the signature forces the callers to be able to handle every lifetime.
+///
+///  `'a` is the only lifetime that matters here; `Yokeable`s must be `'static` and since
+/// `Output` is an associated type it can only have one lifetime, `'a` (there's nowhere for it to get another from).
+/// `Yoke`s can get additional lifetimes via the cart, and indeed, `project()` can operate on `Yoke<_, &'b [u8]>`,
+/// however this lifetime is inaccessible to the closure, and even if it were accessible the `for<'a>` would force
+/// it out of the output. All external lifetimes (from other found outside the yoke/closures
+/// are similarly constrained here.
+///
+/// Essentially, safety is achieved by using `for<'a> fn(...)` with `'a` used in both `Yokeable`s to ensure that
+/// the output yokeable can _only_ have borrowed data flow in to it from the input. All paths of unsoundness require the
+/// unification of an existential and universal lifetime, which isn't possible.
+const _: () = ();
+
+/// # Safety docs for attach_to_cart()'s signature
+///
+/// The `attach_to_cart()` family of methods get by by using the following bound:
+///
+/// ```rust,ignore
+/// F: for<'de> FnOnce(&'de <C as Deref>::Target) -> <Y as Yokeable<'de>>::Output,
+/// C::Target: 'static
+/// ```
+///
+/// to enforce that the yoking closure produces a yokeable that is *only* allowed to borrow from the cart.
+/// A way to be sure of this is as follows: imagine if `F` *did* borrow data of lifetime `'a` and stuff it in
+/// its output. Then that lifetime `'a` would have to live at least as long as `'de` *for all `'de`*.
+/// The only lifetime that satisfies that is `'static` (since at least one of the potential `'de`s is `'static`),
+/// and we're fine with that.
+///
+/// ## Implied bounds and variance
+///
+/// The `C::Target: 'static` bound is tricky, however. Let's imagine a situation where we *didn't* have that bound.
+///
+/// One thing to remember is that we are okay with the cart itself borrowing from places,
+/// e.g. `&[u8]` is a valid cart, as is `Box<&[u8]>`. `C` is not `'static`.
+///
+/// (I'm going to use `CT` in prose to refer to `C::Target` here, since almost everything here has to do
+/// with C::Target and not C itself.)
+///
+/// Unfortunately, there's a sneaky additional bound inside `F`. The signature of `F` is *actually*
+///
+/// ```rust,ignore
+/// F: for<'de> where<C::Target: 'de> FnOnce(&'de C::Target) -> <Y as Yokeable<'de>>::Output
+/// ```
+///
+/// using made-up "where clause inside HRTB" syntax to represent a type that can be represented inside the compiler
+/// and type system but not in Rust code. The `CT: 'de` bond comes from the `&'de C::Target`: any time you
+/// write `&'a T`, an implied bound of `T: 'a` materializes and is stored alongside it, since references cannot refer
+/// to data that itself refers to data of shorter lifetimes. If a reference is valid, its referent must be valid for
+/// the duration of the reference's lifetime, so every reference *inside* its referent must also be valid, giving us `T: 'a`.
+/// This kind of constraint is often called a "well formedness" constraint: `&'a T` is not "well formed" without that
+/// bound, and rustc is being helpful by giving it to us for free.
+///
+/// Unfortunately, this messes with our universal quantification. The `for<'de>` is no longer "For all lifetimes `'de`",
+/// it is "for all lifetimes `'de` *where `CT: 'de`*". And if `CT` borrows from somewhere (with lifetime `'ct`), then we get a
+/// `'ct: 'de` bound, and `'de` candidates that live longer than `'ct` won't actually be considered.
+/// The neat little logic at the beginning stops working.
+///
+/// `attach_to_cart()` will instead enforce that the produced yokeable *either* borrows from the cart (fine), or from
+/// data that has a lifetime that is at least `'ct`. Which means that `attach_to_cart()` will allow us to borrow locals
+/// provided they live at least as long as `'ct`.
+///
+/// Is this a problem?
+///
+/// This is totally fine if CT's lifetime is covariant: if C is something like `Box<&'ct [u8]>`, even if our
+/// yoked object borrows from locals outliving `'ct`, our Yoke can't outlive that
+/// lifetime `'ct` anyway (since it's a part of the cart type), so we're fine.
+///
+/// However it's completely broken for contravariant carts (e.g. `Box<fn(&'ct u8)>`). In that case
+/// we still get `'ct: 'de`, and we still end up being able to
+/// borrow from locals that outlive `'ct`. However, our Yoke _can_ outlive
+/// that lifetime, because Yoke shares its variance over `'ct`
+/// with the cart type, and the cart type is contravariant over `'ct`.
+/// So the Yoke can be upcast to having a longer lifetime than `'ct`, and *that* Yoke
+/// can outlive `'ct`.
+///
+/// We fix this by forcing `C::Target: 'static` in `attach_to_cart()`, which would make it work
+/// for fewer types, but would also allow Yoke to continue to be covariant over cart lifetimes if necessary.
+///
+/// An alternate fix would be to not allowing yoke to ever be upcast over lifetimes contained in the cart
+/// by forcing them to be invariant. This is a bit more restrictive and affects *all* `Yoke` users, not just
+/// those using `attach_to_cart()`.
+///
+/// See https://github.com/unicode-org/icu4x/issues/2926
+/// See also https://github.com/rust-lang/rust/issues/106431 for potentially fixing this upstream by
+/// changing how the bound works.
+///
+/// # Tests
+///
+/// Here's a broken `attach_to_cart()` that attempts to borrow from a local:
+///
+/// ```rust,compile_fail
+/// use yoke::Yoke;
+///
+/// let cart = vec![1, 2, 3, 4].into_boxed_slice();
+/// let local = vec![4, 5, 6, 7];
+/// let yoke: Yoke<&[u8], Box<[u8]>> = Yoke::attach_to_cart(cart, |_| &*local);
+/// ```
+///
+/// Fails as expected.
+///
+/// And here's a working one with a local borrowed cart that does not do any sneaky borrows whilst attaching.
+///
+/// ```rust
+/// use yoke::Yoke;
+///
+/// let cart = vec![1, 2, 3, 4].into_boxed_slice();
+/// let local = vec![4, 5, 6, 7];
+/// let yoke: Yoke<&[u8], &[u8]> = Yoke::attach_to_cart(&cart, |c| &*c);
+/// ```
+///
+/// Here's an `attach_to_cart()` that attempts to borrow from a longer-lived local due to
+/// the cart being covariant. It fails, but would not if the alternate fix of forcing Yoke to be invariant
+/// were implemented. It is technically a safe operation:
+///
+/// ```rust,compile_fail
+/// use yoke::Yoke;
+/// // longer lived
+/// let local = vec![4, 5, 6, 7];
+///
+/// let backing = vec![1, 2, 3, 4];
+/// let cart = Box::new(&*backing);
+///
+/// let yoke: Yoke<&[u8], Box<&[u8]>> = Yoke::attach_to_cart(cart, |_| &*local);
+/// println!("{:?}", yoke.get());
+/// ```
+///
+/// Finally, here's an `attach_to_cart()` that attempts to borrow from a longer lived local
+/// in the case of a contravariant lifetime. It does not compile, but in and of itself is not dangerous:
+///
+/// ```rust,compile_fail
+/// use yoke::Yoke;
+///
+/// type Contra<'a> = fn(&'a ());
+///
+/// let local = String::from("Hello World!");
+/// let yoke: Yoke<&'static str, Box<Contra<'_>>> = Yoke::attach_to_cart(Box::new((|_| {}) as _), |_| &local[..]);
+/// println!("{:?}", yoke.get());
+/// ```
+///
+/// It is dangerous if allowed to transform (testcase from #2926)
+///
+/// ```rust,compile_fail
+/// use yoke::Yoke;
+///
+/// type Contra<'a> = fn(&'a ());
+///
+///
+/// let local = String::from("Hello World!");
+/// let yoke: Yoke<&'static str, Box<Contra<'_>>> = Yoke::attach_to_cart(Box::new((|_| {}) as _), |_| &local[..]);
+/// println!("{:?}", yoke.get());
+/// let yoke_longer: Yoke<&'static str, Box<Contra<'static>>> = yoke;
+/// let leaked: &'static Yoke<&'static str, Box<Contra<'static>>> = Box::leak(Box::new(yoke_longer));
+/// let reference: &'static str = leaked.get();
+///
+/// println!("pre-drop: {reference}");
+/// drop(local);
+/// println!("post-drop: {reference}");
+/// ```
+const _: () = ();
diff --git a/vendor/yoke/src/yokeable.rs b/vendor/yoke/src/yokeable.rs
new file mode 100644
index 00000000..36fc203d
--- /dev/null
+++ b/vendor/yoke/src/yokeable.rs
@@ -0,0 +1,369 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use alloc::borrow::{Cow, ToOwned};
+use core::{marker::PhantomData, mem};
+
+/// The `Yokeable<'a>` trait is implemented on the `'static` version of any zero-copy type; for
+/// example, `Cow<'static, T>` implements `Yokeable<'a>` (for all `'a`).
+///
+/// One can use
+/// `Yokeable::Output` on this trait to obtain the "lifetime'd" value of the `Cow<'static, T>`,
+/// e.g. `<Cow<'static, T> as Yokeable<'a>'>::Output` is `Cow<'a, T>`.
+///
+/// A [`Yokeable`] type is essentially one with a covariant lifetime parameter,
+/// matched to the parameter in the trait definition. The trait allows one to cast
+/// the covariant lifetime to and from `'static`.
+///
+/// **Most of the time, if you need to implement [`Yokeable`], you should be able to use the safe
+/// [`#[derive(Yokeable)]`](yoke_derive::Yokeable) custom derive.**
+///
+/// While Rust does not yet have GAT syntax, for the purpose of this documentation
+/// we shall refer to "`Self` with a lifetime `'a`" with the syntax `Self<'a>`.
+/// Self<'static> is a stand-in for the HKT Self<'_>: lifetime -> type.
+///
+/// With this terminology, [`Yokeable`]  exposes ways to cast between `Self<'static>` and `Self<'a>` generically.
+/// This is useful for turning covariant lifetimes to _dynamic_ lifetimes, where `'static` is
+/// used as a way to "erase" the lifetime.
+///
+/// # Safety
+///
+/// This trait is safe to implement on types with a _covariant_ lifetime parameter, i.e. one where
+/// [`Self::transform()`]'s body can simply be `{ self }`. This will occur when the lifetime
+/// parameter is used within references, but not in the arguments of function pointers or in mutable
+/// positions (either in `&mut` or via interior mutability)
+///
+/// This trait must be implemented on the `'static` version of such a type, e.g. one should
+/// implement `Yokeable<'a>` (for all `'a`) on `Cow<'static, T>`.
+///
+/// This trait is also safe to implement on types that do not borrow memory.
+///
+/// There are further constraints on implementation safety on individual methods.
+///
+/// # Implementation example
+///
+/// Implementing this trait manually is unsafe. Where possible, you should use the safe
+/// [`#[derive(Yokeable)]`](yoke_derive::Yokeable) custom derive instead. We include an example
+/// in case you have your own zero-copy abstractions you wish to make yokeable.
+///
+/// ```rust
+/// # use yoke::Yokeable;
+/// # use std::borrow::Cow;
+/// # use std::{mem, ptr};
+/// struct Bar<'a> {
+///     numbers: Cow<'a, [u8]>,
+///     string: Cow<'a, str>,
+///     owned: Vec<u8>,
+/// }
+///
+/// unsafe impl<'a> Yokeable<'a> for Bar<'static> {
+///     type Output = Bar<'a>;
+///     fn transform(&'a self) -> &'a Bar<'a> {
+///         // covariant lifetime cast, can be done safely
+///         self
+///     }
+///
+///     fn transform_owned(self) -> Bar<'a> {
+///         // covariant lifetime cast, can be done safely
+///         self
+///     }
+///
+///     unsafe fn make(from: Bar<'a>) -> Self {
+///         // We're just doing mem::transmute() here, however Rust is
+///         // not smart enough to realize that Bar<'a> and Bar<'static> are of
+///         // the same size, so instead we use transmute_copy
+///
+///         // This assert will be optimized out, but is included for additional
+///         // peace of mind as we are using transmute_copy
+///         debug_assert!(mem::size_of::<Bar<'a>>() == mem::size_of::<Self>());
+///         let ptr: *const Self = (&from as *const Self::Output).cast();
+///         mem::forget(from);
+///         ptr::read(ptr)
+///     }
+///
+///     fn transform_mut<F>(&'a mut self, f: F)
+///     where
+///         F: 'static + FnOnce(&'a mut Self::Output),
+///     {
+///         unsafe { f(mem::transmute::<&mut Self, &mut Self::Output>(self)) }
+///     }
+/// }
+/// ```
+pub unsafe trait Yokeable<'a>: 'static {
+    /// This type MUST be `Self` with the `'static` replaced with `'a`, i.e. `Self<'a>`
+    type Output: 'a;
+
+    /// This method must cast `self` between `&'a Self<'static>` and `&'a Self<'a>`.
+    ///
+    /// # Implementation safety
+    ///
+    /// If the invariants of [`Yokeable`] are being satisfied, the body of this method
+    /// should simply be `{ self }`, though it's acceptable to include additional assertions
+    /// if desired.
+    fn transform(&'a self) -> &'a Self::Output;
+
+    /// This method must cast `self` between `Self<'static>` and `Self<'a>`.
+    ///
+    /// # Implementation safety
+    ///
+    /// If the invariants of [`Yokeable`] are being satisfied, the body of this method
+    /// should simply be `{ self }`, though it's acceptable to include additional assertions
+    /// if desired.
+    fn transform_owned(self) -> Self::Output;
+
+    /// This method can be used to cast away `Self<'a>`'s lifetime.
+    ///
+    /// # Safety
+    ///
+    /// The returned value must be destroyed before the data `from` was borrowing from is.
+    ///
+    /// # Implementation safety
+    ///
+    /// A safe implementation of this method must be equivalent to a transmute between
+    /// `Self<'a>` and `Self<'static>`
+    unsafe fn make(from: Self::Output) -> Self;
+
+    /// This method must cast `self` between `&'a mut Self<'static>` and `&'a mut Self<'a>`,
+    /// and pass it to `f`.
+    ///
+    /// # Implementation safety
+    ///
+    /// A safe implementation of this method must be equivalent to a pointer cast/transmute between
+    /// `&mut Self<'a>` and `&mut Self<'static>` being passed to `f`
+    ///
+    /// # Why is this safe?
+    ///
+    /// Typically covariant lifetimes become invariant when hidden behind an `&mut`,
+    /// which is why the implementation of this method cannot just be `f(self)`.
+    /// The reason behind this is that while _reading_ a covariant lifetime that has been cast to a shorter
+    /// one is always safe (this is roughly the definition of a covariant lifetime), writing
+    /// may not necessarily be safe since you could write a smaller reference to it. For example,
+    /// the following code is unsound because it manages to stuff a `'a` lifetime into a `Cow<'static>`
+    ///
+    /// ```rust,compile_fail
+    /// # use std::borrow::Cow;
+    /// # use yoke::Yokeable;
+    /// struct Foo {
+    ///     str: String,
+    ///     cow: Cow<'static, str>,
+    /// }
+    ///
+    /// fn unsound<'a>(foo: &'a mut Foo) {
+    ///     let a: &str = &foo.str;
+    ///     foo.cow.transform_mut(|cow| *cow = Cow::Borrowed(a));
+    /// }
+    /// ```
+    ///
+    /// However, this code will not compile because [`Yokeable::transform_mut()`] requires `F: 'static`.
+    /// This enforces that while `F` may mutate `Self<'a>`, it can only mutate it in a way that does
+    /// not insert additional references. For example, `F` may call `to_owned()` on a `Cow` and mutate it,
+    /// but it cannot insert a new _borrowed_ reference because it has nowhere to borrow _from_ --
+    /// `f` does not contain any borrowed references, and while we give it `Self<'a>` (which contains borrowed
+    /// data), that borrowed data is known to be valid
+    ///
+    /// Note that the `for<'b>` is also necessary, otherwise the following code would compile:
+    ///
+    /// ```rust,compile_fail
+    /// # use std::borrow::Cow;
+    /// # use yoke::Yokeable;
+    /// # use std::mem;
+    /// #
+    /// // also safely implements Yokeable<'a>
+    /// struct Bar<'a> {
+    ///     num: u8,
+    ///     cow: Cow<'a, u8>,
+    /// }
+    ///
+    /// fn unsound<'a>(bar: &'a mut Bar<'static>) {
+    ///     bar.transform_mut(move |bar| bar.cow = Cow::Borrowed(&bar.num));
+    /// }
+    /// #
+    /// # unsafe impl<'a> Yokeable<'a> for Bar<'static> {
+    /// #     type Output = Bar<'a>;
+    /// #     fn transform(&'a self) -> &'a Bar<'a> {
+    /// #         self
+    /// #     }
+    /// #
+    /// #     fn transform_owned(self) -> Bar<'a> {
+    /// #         // covariant lifetime cast, can be done safely
+    /// #         self
+    /// #     }
+    /// #
+    /// #     unsafe fn make(from: Bar<'a>) -> Self {
+    /// #         let ret = mem::transmute_copy(&from);
+    /// #         mem::forget(from);
+    /// #         ret
+    /// #     }
+    /// #
+    /// #     fn transform_mut<F>(&'a mut self, f: F)
+    /// #     where
+    /// #         F: 'static + FnOnce(&'a mut Self::Output),
+    /// #     {
+    /// #         unsafe { f(mem::transmute(self)) }
+    /// #     }
+    /// # }
+    /// ```
+    ///
+    /// which is unsound because `bar` could be moved later, and we do not want to be able to
+    /// self-insert references to it.
+    ///
+    /// The `for<'b>` enforces this by stopping the author of the closure from matching up the input
+    /// `&'b Self::Output` lifetime with `'a` and borrowing directly from it.
+    ///
+    /// Thus the only types of mutations allowed are ones that move around already-borrowed data, or
+    /// introduce new owned data:
+    ///
+    /// ```rust
+    /// # use std::borrow::Cow;
+    /// # use yoke::Yokeable;
+    /// struct Foo {
+    ///     str: String,
+    ///     cow: Cow<'static, str>,
+    /// }
+    ///
+    /// fn sound<'a>(foo: &'a mut Foo) {
+    ///     foo.cow.transform_mut(move |cow| cow.to_mut().push('a'));
+    /// }
+    /// ```
+    ///
+    /// More formally, a reference to an object that `f` assigns to a reference
+    /// in Self<'a> could be obtained from:
+    ///  - a local variable: the compiler rejects the assignment because 'a certainly
+    ///    outlives local variables in f.
+    ///  - a field in its argument: because of the for<'b> bound, the call to `f`
+    ///    must be valid for a particular 'b that is strictly shorter than 'a. Thus,
+    ///    the compiler rejects the assignment.
+    ///  - a reference field in Self<'a>: this does not extend the set of
+    ///    non-static lifetimes reachable from Self<'a>, so this is fine.
+    ///  - one of f's captures: since F: 'static, the resulting reference must refer
+    ///    to 'static data.
+    ///  - a static or thread_local variable: ditto.
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        // be VERY CAREFUL changing this signature, it is very nuanced (see above)
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output);
+}
+
+#[cfg(feature = "alloc")]
+// Safety: Cow<'a, _> is covariant in 'a.
+unsafe impl<'a, T: 'static + ToOwned + ?Sized> Yokeable<'a> for Cow<'static, T>
+where
+    <T as ToOwned>::Owned: Sized,
+{
+    type Output = Cow<'a, T>;
+    #[inline]
+    fn transform(&'a self) -> &'a Cow<'a, T> {
+        // Doesn't need unsafe: `'a` is covariant so this lifetime cast is always safe
+        self
+    }
+    #[inline]
+    fn transform_owned(self) -> Cow<'a, T> {
+        // Doesn't need unsafe: `'a` is covariant so this lifetime cast is always safe
+        self
+    }
+    #[inline]
+    unsafe fn make(from: Cow<'a, T>) -> Self {
+        // i hate this
+        // unfortunately Rust doesn't think `mem::transmute` is possible since it's not sure the sizes
+        // are the same
+        debug_assert!(mem::size_of::<Cow<'a, T>>() == mem::size_of::<Self>());
+        let ptr: *const Self = (&from as *const Self::Output).cast();
+        let _ = core::mem::ManuallyDrop::new(from);
+        // Safety: `ptr` is certainly valid, aligned and points to a properly initialized value, as
+        // it comes from a value that was moved into a ManuallyDrop.
+        unsafe { core::ptr::read(ptr) }
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        // Cast away the lifetime of Self
+        // Safety: this is equivalent to f(transmute(self)), and the documentation of the trait
+        // method explains why doing so is sound.
+        unsafe { f(mem::transmute::<&'a mut Self, &'a mut Self::Output>(self)) }
+    }
+}
+
+// Safety: &'a T is covariant in 'a.
+unsafe impl<'a, T: 'static + ?Sized> Yokeable<'a> for &'static T {
+    type Output = &'a T;
+    #[inline]
+    fn transform(&'a self) -> &'a &'a T {
+        // Doesn't need unsafe: `'a` is covariant so this lifetime cast is always safe
+        self
+    }
+    #[inline]
+    fn transform_owned(self) -> &'a T {
+        // Doesn't need unsafe: `'a` is covariant so this lifetime cast is always safe
+        self
+    }
+    #[inline]
+    unsafe fn make(from: &'a T) -> Self {
+        // Safety: function safety invariant guarantees that the returned reference
+        // will never be used beyond its original lifetime.
+        unsafe { mem::transmute(from) }
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        // Cast away the lifetime of Self
+        // Safety: this is equivalent to f(transmute(self)), and the documentation of the trait
+        // method explains why doing so is sound.
+        unsafe { f(mem::transmute::<&'a mut Self, &'a mut Self::Output>(self)) }
+    }
+}
+
+#[cfg(feature = "alloc")]
+// Safety: Vec<T: 'static> never borrows.
+unsafe impl<'a, T: 'static> Yokeable<'a> for alloc::vec::Vec<T> {
+    type Output = alloc::vec::Vec<T>;
+    #[inline]
+    fn transform(&'a self) -> &'a alloc::vec::Vec<T> {
+        self
+    }
+    #[inline]
+    fn transform_owned(self) -> alloc::vec::Vec<T> {
+        self
+    }
+    #[inline]
+    unsafe fn make(from: alloc::vec::Vec<T>) -> Self {
+        from
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        f(self)
+    }
+}
+
+// Safety: PhantomData is a ZST.
+unsafe impl<'a, T: ?Sized + 'static> Yokeable<'a> for PhantomData<T> {
+    type Output = PhantomData<T>;
+
+    fn transform(&'a self) -> &'a Self::Output {
+        self
+    }
+
+    fn transform_owned(self) -> Self::Output {
+        self
+    }
+
+    unsafe fn make(from: Self::Output) -> Self {
+        from
+    }
+
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        // be VERY CAREFUL changing this signature, it is very nuanced (see above)
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        f(self)
+    }
+}
diff --git a/vendor/yoke/src/zero_from.rs b/vendor/yoke/src/zero_from.rs
new file mode 100644
index 00000000..53e6d76f
--- /dev/null
+++ b/vendor/yoke/src/zero_from.rs
@@ -0,0 +1,44 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::Yoke;
+use crate::Yokeable;
+
+use core::ops::Deref;
+use stable_deref_trait::StableDeref;
+
+use crate::ZeroFrom;
+
+impl<Y, C> Yoke<Y, C>
+where
+    Y: for<'a> Yokeable<'a>,
+    for<'a> <Y as Yokeable<'a>>::Output: ZeroFrom<'a, <C as Deref>::Target>,
+    C: StableDeref + Deref,
+    <C as Deref>::Target: 'static,
+{
+    /// Construct a [`Yoke`]`<Y, C>` from a cart implementing `StableDeref` by zero-copy cloning
+    /// the cart to `Y` and then yokeing that object to the cart.
+    ///
+    /// The type `Y` must implement [`ZeroFrom`]`<C::Target>`. This trait is auto-implemented
+    /// on many common types and can be custom implemented or derived in order to make it easier
+    /// to construct a `Yoke`.
+    ///
+    /// # Example
+    ///
+    /// Attach to a cart:
+    ///
+    /// ```
+    /// use std::borrow::Cow;
+    /// use yoke::Yoke;
+    ///
+    /// let yoke = Yoke::<Cow<'static, str>, String>::attach_to_zero_copy_cart(
+    ///     "demo".to_owned(),
+    /// );
+    ///
+    /// assert_eq!("demo", yoke.get());
+    /// ```
+    pub fn attach_to_zero_copy_cart(cart: C) -> Self {
+        Yoke::<Y, C>::attach_to_cart(cart, |c| <Y as Yokeable>::Output::zero_from(c))
+    }
+}
diff --git a/vendor/yoke/tests/bincode.rs b/vendor/yoke/tests/bincode.rs
new file mode 100644
index 00000000..653865e7
--- /dev/null
+++ b/vendor/yoke/tests/bincode.rs
@@ -0,0 +1,83 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// This test is a duplicate of one of the doctests, but is written separately
+// since `cargo miri test` doesn't work on doctests yet
+
+use std::borrow::Cow;
+use std::mem;
+use std::rc::Rc;
+use yoke::{Yoke, Yokeable};
+
+fn load_from_cache(_filename: &str) -> Rc<[u8]> {
+    // dummy implementation
+    Rc::new([0x5, 0, 0, 0, 0, 0, 0, 0, 0x68, 0x65, 0x6c, 0x6c, 0x6f])
+}
+
+fn load_object(filename: &str) -> Yoke<Bar<'static>, Rc<[u8]>> {
+    let rc: Rc<[u8]> = load_from_cache(filename);
+    Yoke::<Bar<'static>, Rc<[u8]>>::attach_to_cart(rc, |data: &[u8]| {
+        // A real implementation would properly deserialize `Bar` as a whole
+        Bar {
+            numbers: Cow::Borrowed(bincode::deserialize(data).unwrap()),
+            string: Cow::Borrowed(bincode::deserialize(data).unwrap()),
+            owned: Vec::new(),
+        }
+    })
+}
+
+// also implements Yokeable
+struct Bar<'a> {
+    numbers: Cow<'a, [u8]>,
+    string: Cow<'a, str>,
+    owned: Vec<u8>,
+}
+
+unsafe impl<'a> Yokeable<'a> for Bar<'static> {
+    type Output = Bar<'a>;
+    #[inline]
+    fn transform(&'a self) -> &'a Bar<'a> {
+        self
+    }
+    #[inline]
+    fn transform_owned(self) -> Bar<'a> {
+        self
+    }
+    #[inline]
+    unsafe fn make(from: Bar<'a>) -> Self {
+        let ret = mem::transmute_copy(&from);
+        mem::forget(from);
+        ret
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + FnOnce(&'a mut Self::Output),
+    {
+        unsafe { f(mem::transmute::<&mut Bar<'_>, &mut Bar<'a>>(self)) }
+    }
+}
+
+#[test]
+fn test_load() {
+    // `load_object()` deserializes an object from a file
+    let mut bar = load_object("filename.bincode");
+    assert_eq!(bar.get().string, "hello");
+    assert!(matches!(bar.get().string, Cow::Borrowed(_)));
+    assert_eq!(&*bar.get().numbers, &[0x68, 0x65, 0x6c, 0x6c, 0x6f]);
+    assert!(matches!(bar.get().numbers, Cow::Borrowed(_)));
+    assert_eq!(&*bar.get().owned, &[]);
+
+    bar.with_mut(|bar| {
+        bar.string.to_mut().push_str(" world");
+        bar.owned.extend_from_slice(&[1, 4, 1, 5, 9]);
+    });
+
+    assert_eq!(bar.get().string, "hello world");
+    assert!(matches!(bar.get().string, Cow::Owned(_)));
+    assert_eq!(&*bar.get().owned, &[1, 4, 1, 5, 9]);
+    // Unchanged and still Cow::Borrowed
+    assert_eq!(&*bar.get().numbers, &[0x68, 0x65, 0x6c, 0x6c, 0x6f]);
+    assert!(matches!(bar.get().numbers, Cow::Borrowed(_)));
+}
diff --git a/vendor/yoke/tests/miri.rs b/vendor/yoke/tests/miri.rs
new file mode 100644
index 00000000..0b92af2c
--- /dev/null
+++ b/vendor/yoke/tests/miri.rs
@@ -0,0 +1,15 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use yoke::Yoke;
+
+// Test for strong protection, should pass under miri with -Zmiri-retag-fields
+// See https://github.com/unicode-org/icu4x/issues/3696
+
+fn example(_: Yoke<&'static [u8], Vec<u8>>) {}
+
+#[test]
+fn run_test() {
+    example(Yoke::attach_to_cart(vec![0, 1, 2], |data| data));
+}
diff --git a/vendor/zerofrom-derive/.cargo-checksum.json b/vendor/zerofrom-derive/.cargo-checksum.json
new file mode 100644
index 00000000..1ddfe707
--- /dev/null
+++ b/vendor/zerofrom-derive/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"ffb177649302dc850d931c74f255771966276d302735c7fc09e9e407e715ed13","Cargo.toml":"f40baba6038bc2ebbbe173d602be2679db6ce248590cfd01a136ce42005965d4","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"2ef78913a98fb26c912c47c3c96167b9b57524754dc4857fe18a2122fec4985e","examples/zf_derive.rs":"39342f4658da4c6e475a290028b7cbab161e1fb91ee49c79cda4799a8614bc9b","src/lib.rs":"b06e2bb87ffa35a3eb68c5c3ba71f67279e9a44f4a3ec3168302f01c56f667ee","src/visitor.rs":"6eb54d2e1c4f9211bcaa5d6e768d668063a94411bfbed610b0a0419ac37bf545"},"package":"d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"}
\ No newline at end of file
diff --git a/vendor/zerofrom-derive/Cargo.lock b/vendor/zerofrom-derive/Cargo.lock
new file mode 100644
index 00000000..f36a10c6
--- /dev/null
+++ b/vendor/zerofrom-derive/Cargo.lock
@@ -0,0 +1,59 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.98"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
diff --git a/vendor/zerofrom-derive/Cargo.toml b/vendor/zerofrom-derive/Cargo.toml
new file mode 100644
index 00000000..3bf262af
--- /dev/null
+++ b/vendor/zerofrom-derive/Cargo.toml
@@ -0,0 +1,65 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+name = "zerofrom-derive"
+version = "0.1.6"
+authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
+build = false
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Custom derive for the zerofrom crate"
+readme = "README.md"
+keywords = [
+    "zerocopy",
+    "serialization",
+    "lifetime",
+    "borrow",
+]
+categories = [
+    "data-structures",
+    "memory-management",
+    "caching",
+    "no-std",
+]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.workspaces]
+independent = true
+
+[lib]
+name = "zerofrom_derive"
+path = "src/lib.rs"
+proc-macro = true
+
+[[example]]
+name = "zf_derive"
+path = "examples/zf_derive.rs"
+
+[dependencies.proc-macro2]
+version = "1.0.61"
+
+[dependencies.quote]
+version = "1.0.28"
+
+[dependencies.syn]
+version = "2.0.21"
+features = ["fold"]
+
+[dependencies.synstructure]
+version = "0.13.0"
+
+[dev-dependencies]
diff --git a/vendor/zerofrom-derive/LICENSE b/vendor/zerofrom-derive/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/zerofrom-derive/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/zerofrom-derive/README.md b/vendor/zerofrom-derive/README.md
new file mode 100644
index 00000000..ad803c59
--- /dev/null
+++ b/vendor/zerofrom-derive/README.md
@@ -0,0 +1,11 @@
+# zerofrom-derive [![crates.io](https://img.shields.io/crates/v/zerofrom-derive)](https://crates.io/crates/zerofrom-derive)
+
+<!-- cargo-rdme start -->
+
+Custom derives for `ZeroFrom` from the `zerofrom` crate.
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/zerofrom-derive/examples/zf_derive.rs b/vendor/zerofrom-derive/examples/zf_derive.rs
new file mode 100644
index 00000000..d3eb2a6f
--- /dev/null
+++ b/vendor/zerofrom-derive/examples/zf_derive.rs
@@ -0,0 +1,115 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#![allow(unused)]
+
+use std::{borrow::Cow, marker::PhantomData};
+use zerofrom::ZeroFrom;
+use zerovec::{maps::ZeroMapKV, ule::AsULE, VarZeroVec, ZeroMap, ZeroVec};
+
+#[derive(ZeroFrom, Copy, Clone)]
+pub struct IntExample {
+    x: u32,
+}
+
+#[derive(ZeroFrom, Copy, Clone)]
+pub struct GenericsExample<T> {
+    x: u32,
+    y: T,
+}
+
+#[derive(ZeroFrom, Copy, Clone)]
+pub struct GenericsExampleWithDefault<T, U = usize> {
+    x: T,
+    y: U,
+}
+
+#[derive(ZeroFrom)]
+pub struct CowExample<'a> {
+    x: u8,
+    y: &'a str,
+    z: Cow<'a, str>,
+    w: Cow<'a, [u8]>,
+}
+
+#[derive(ZeroFrom)]
+pub struct ZeroVecExample<'a> {
+    var: VarZeroVec<'a, str>,
+    vec: ZeroVec<'a, u16>,
+}
+
+#[derive(ZeroFrom)]
+pub struct ZeroVecExampleWithGenerics<'a, T: AsULE> {
+    gen: ZeroVec<'a, T>,
+    vec: ZeroVec<'a, u16>,
+    bare: T,
+}
+
+#[derive(ZeroFrom)]
+pub struct HasTuples<'data> {
+    pub bar: (&'data str, &'data str),
+}
+
+pub fn assert_zf_tuples<'b>(x: &'b HasTuples) -> HasTuples<'b> {
+    HasTuples::zero_from(x)
+}
+pub fn assert_zf_generics<'a, 'b>(
+    x: &'b ZeroVecExampleWithGenerics<'a, u8>,
+) -> ZeroVecExampleWithGenerics<'b, u8> {
+    ZeroVecExampleWithGenerics::<'b, u8>::zero_from(x)
+}
+
+#[derive(ZeroFrom)]
+pub struct ZeroMapGenericExample<'a, T: for<'b> ZeroMapKV<'b> + ?Sized> {
+    map: ZeroMap<'a, str, T>,
+}
+
+pub fn assert_zf_map<'b>(x: &'b ZeroMapGenericExample<str>) -> ZeroMapGenericExample<'b, str> {
+    ZeroMapGenericExample::zero_from(x)
+}
+
+#[derive(Clone, ZeroFrom)]
+pub struct CloningZF1 {
+    #[zerofrom(clone)] // Vec is not ZeroFrom, so it needs to be cloned
+    vec: Vec<u8>,
+}
+
+#[derive(Clone, ZeroFrom)]
+pub struct CloningZF2<'data> {
+    #[zerofrom(clone)] // Cow is ZeroFrom, but we force a clone
+    cow: Cow<'data, str>,
+}
+
+#[derive(ZeroFrom)]
+pub enum CloningZF3<'data> {
+    Cow(#[zerofrom(clone)] Cow<'data, str>),
+}
+
+#[derive(ZeroFrom)]
+#[zerofrom(may_borrow(T, Q))] // instead of treating T as a copy type, we want to allow zerofromming T too
+pub struct GenericsThatAreAlsoZf<T, Q: ?Sized, Ignored: ?Sized> {
+    x: T,
+    y: Option<T>,
+    ignored: PhantomData<Ignored>,
+    q: Q,
+}
+
+pub fn assert_zf_generics_may_borrow<'a, 'b>(
+    x: &'b GenericsThatAreAlsoZf<&'a str, usize, str>,
+) -> GenericsThatAreAlsoZf<&'b str, usize, str> {
+    GenericsThatAreAlsoZf::<&'b str, usize, str>::zero_from(x)
+}
+
+#[derive(ZeroFrom)]
+pub struct UsesGenericsThatAreAlsoZf<'a> {
+    x: GenericsThatAreAlsoZf<&'a str, usize, str>,
+}
+
+// Ensure it works with invariant types too
+#[derive(ZeroFrom)]
+pub struct UsesGenericsThatAreAlsoZfWithMap<'a> {
+    x: GenericsThatAreAlsoZf<ZeroMap<'a, str, str>, usize, str>,
+}
+
+fn main() {}
diff --git a/vendor/zerofrom-derive/src/lib.rs b/vendor/zerofrom-derive/src/lib.rs
new file mode 100644
index 00000000..f2c43b34
--- /dev/null
+++ b/vendor/zerofrom-derive/src/lib.rs
@@ -0,0 +1,309 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Custom derives for `ZeroFrom` from the `zerofrom` crate.
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+
+use core::mem;
+use proc_macro::TokenStream;
+use proc_macro2::{Span, TokenStream as TokenStream2};
+use quote::quote;
+use std::collections::{HashMap, HashSet};
+use syn::fold::{self, Fold};
+use syn::punctuated::Punctuated;
+use syn::spanned::Spanned;
+use syn::{
+    parse_macro_input, parse_quote, DeriveInput, Ident, Lifetime, MetaList, Token,
+    TraitBoundModifier, Type, TypeParamBound, TypePath, WherePredicate,
+};
+use synstructure::Structure;
+mod visitor;
+
+/// Custom derive for `zerofrom::ZeroFrom`,
+///
+/// This implements `ZeroFrom<Ty> for Ty` for types
+/// without a lifetime parameter, and `ZeroFrom<Ty<'data>> for Ty<'static>`
+/// for types with a lifetime parameter.
+///
+/// Apply the `#[zerofrom(clone)]` attribute to a field if it doesn't implement
+/// Copy or ZeroFrom; this data will be cloned when the struct is zero_from'ed.
+///
+/// Apply the `#[zerofrom(maybe_borrow(T, U, V))]` attribute to the struct to indicate
+/// that certain type parameters may themselves contain borrows (by default
+/// the derives assume that type parameters perform no borrows and can be copied or cloned).
+///
+/// In rust versions where [this issue](https://github.com/rust-lang/rust/issues/114393) is fixed,
+/// `#[zerofrom(may_borrow)]` can be applied directly to type parameters.
+#[proc_macro_derive(ZeroFrom, attributes(zerofrom))]
+pub fn zf_derive(input: TokenStream) -> TokenStream {
+    let input = parse_macro_input!(input as DeriveInput);
+    TokenStream::from(zf_derive_impl(&input))
+}
+
+fn has_attr(attrs: &[syn::Attribute], name: &str) -> bool {
+    attrs.iter().any(|a| {
+        if let Ok(i) = a.parse_args::<Ident>() {
+            if i == name {
+                return true;
+            }
+        }
+        false
+    })
+}
+
+// Collects all idents from #[zerofrom(may_borrow(A, B, C, D))]
+// needed since #[zerofrom(may_borrow)] doesn't work yet
+// (https://github.com/rust-lang/rust/issues/114393)
+fn get_may_borrow_attr(attrs: &[syn::Attribute]) -> Result<HashSet<Ident>, Span> {
+    let mut params = HashSet::new();
+    for attr in attrs {
+        if let Ok(list) = attr.parse_args::<MetaList>() {
+            if list.path.is_ident("may_borrow") {
+                if let Ok(list) =
+                    list.parse_args_with(Punctuated::<Ident, Token![,]>::parse_terminated)
+                {
+                    params.extend(list)
+                } else {
+                    return Err(attr.span());
+                }
+            }
+        }
+    }
+    Ok(params)
+}
+
+fn zf_derive_impl(input: &DeriveInput) -> TokenStream2 {
+    let mut tybounds = input
+        .generics
+        .type_params()
+        .map(|ty| {
+            // Strip out param defaults, we don't need them in the impl
+            let mut ty = ty.clone();
+            ty.eq_token = None;
+            ty.default = None;
+            ty
+        })
+        .collect::<Vec<_>>();
+    let typarams = tybounds
+        .iter()
+        .map(|ty| ty.ident.clone())
+        .collect::<Vec<_>>();
+    let lts = input.generics.lifetimes().count();
+    let name = &input.ident;
+    let structure = Structure::new(input);
+
+    let may_borrow_attrs = match get_may_borrow_attr(&input.attrs) {
+        Ok(mb) => mb,
+        Err(span) => {
+            return syn::Error::new(
+            span,
+            "#[zerofrom(may_borrow)] on the struct takes in a comma separated list of type parameters, like so: `#[zerofrom(may_borrow(A, B, C, D)]`",
+        ).to_compile_error();
+        }
+    };
+
+    // This contains every generic type introduced in this code.
+    // If the gneeric type is may_borrow, this additionally contains the identifier corresponding to
+    // a newly introduced mirror type parameter that we are borrowing from, similar to C in the original trait.
+    // For convenience, we are calling these "C types"
+    let generics_env: HashMap<Ident, Option<Ident>> = tybounds
+        .iter_mut()
+        .map(|param| {
+            // First one doesn't work yet https://github.com/rust-lang/rust/issues/114393
+            let maybe_new_param = if has_attr(&param.attrs, "may_borrow")
+                || may_borrow_attrs.contains(&param.ident)
+            {
+                // Remove `?Sized`` bound because we need a param to be Sized in order to take a ZeroFrom of it.
+                // This only applies to fields marked as `may_borrow`.
+                let mut bounds = core::mem::take(&mut param.bounds);
+                while let Some(bound_pair) = bounds.pop() {
+                    let bound = bound_pair.into_value();
+                    if let TypeParamBound::Trait(ref trait_bound) = bound {
+                        if trait_bound.path.get_ident().map(|ident| ident == "Sized") == Some(true)
+                            && matches!(trait_bound.modifier, TraitBoundModifier::Maybe(_))
+                        {
+                            continue;
+                        }
+                    }
+                    param.bounds.push(bound);
+                }
+                Some(Ident::new(
+                    &format!("{}ZFParamC", param.ident),
+                    param.ident.span(),
+                ))
+            } else {
+                None
+            };
+            (param.ident.clone(), maybe_new_param)
+        })
+        .collect();
+
+    // Do any of the generics potentially borrow?
+    let generics_may_borrow = generics_env.values().any(|x| x.is_some());
+
+    if lts == 0 && !generics_may_borrow {
+        let has_clone = structure
+            .variants()
+            .iter()
+            .flat_map(|variant| variant.bindings().iter())
+            .any(|binding| has_attr(&binding.ast().attrs, "clone"));
+        let (clone, clone_trait) = if has_clone {
+            (quote!(this.clone()), quote!(Clone))
+        } else {
+            (quote!(*this), quote!(Copy))
+        };
+        let bounds: Vec<WherePredicate> = typarams
+            .iter()
+            .map(|ty| parse_quote!(#ty: #clone_trait + 'static))
+            .collect();
+        quote! {
+            impl<'zf, #(#tybounds),*> zerofrom::ZeroFrom<'zf, #name<#(#typarams),*>> for #name<#(#typarams),*> where #(#bounds),* {
+                fn zero_from(this: &'zf Self) -> Self {
+                    #clone
+                }
+            }
+        }
+    } else {
+        if lts > 1 {
+            return syn::Error::new(
+                input.generics.span(),
+                "derive(ZeroFrom) cannot have multiple lifetime parameters",
+            )
+            .to_compile_error();
+        }
+
+        let mut zf_bounds: Vec<WherePredicate> = vec![];
+        let body = structure.each_variant(|vi| {
+            vi.construct(|f, i| {
+                let binding = format!("__binding_{i}");
+                let field = Ident::new(&binding, Span::call_site());
+
+                if has_attr(&f.attrs, "clone") {
+                    quote! {
+                        #field.clone()
+                    }
+                } else {
+                    // the field type
+                    let fty = replace_lifetime(&f.ty, custom_lt("'zf"));
+                    // the corresponding lifetimey type we are borrowing from (effectively, the C type)
+                    let lifetime_ty =
+                        replace_lifetime_and_type(&f.ty, custom_lt("'zf_inner"), &generics_env);
+
+                    let (has_ty, has_lt) = visitor::check_type_for_parameters(&f.ty, &generics_env);
+                    if has_ty {
+                        // For types without type parameters, the compiler can figure out that the field implements
+                        // ZeroFrom on its own. However, if there are type parameters, there may be complex preconditions
+                        // to `FieldTy: ZeroFrom` that need to be satisfied. We get them to be satisfied by requiring
+                        // `FieldTy<'zf>: ZeroFrom<'zf, FieldTy<'zf_inner>>`
+                        if has_lt {
+                            zf_bounds
+                                .push(parse_quote!(#fty: zerofrom::ZeroFrom<'zf, #lifetime_ty>));
+                        } else {
+                            zf_bounds.push(parse_quote!(#fty: zerofrom::ZeroFrom<'zf, #fty>));
+                        }
+                    }
+                    if has_ty || has_lt {
+                        // By doing this we essentially require ZF to be implemented
+                        // on all fields
+                        quote! {
+                            <#fty as zerofrom::ZeroFrom<'zf, #lifetime_ty>>::zero_from(#field)
+                        }
+                    } else {
+                        // No lifetimes, so we can just copy
+                        quote! { *#field }
+                    }
+                }
+            })
+        });
+        // Due to the possibility of generics_may_borrow, we might reach here with no lifetimes on self,
+        // don't accidentally feed them to self later
+        let (maybe_zf_lifetime, maybe_zf_inner_lifetime) = if lts == 0 {
+            (quote!(), quote!())
+        } else {
+            (quote!('zf,), quote!('zf_inner,))
+        };
+
+        // Array of C types. Only different if generics are allowed to borrow
+        let mut typarams_c = typarams.clone();
+
+        if generics_may_borrow {
+            for typaram_c in &mut typarams_c {
+                if let Some(Some(replacement)) = generics_env.get(typaram_c) {
+                    // we use mem::replace here so we can be really clear about the C vs the T type
+                    let typaram_t = mem::replace(typaram_c, replacement.clone());
+                    zf_bounds
+                        .push(parse_quote!(#typaram_c: zerofrom::ZeroFrom<'zf_inner, #typaram_t>));
+                    tybounds.push(parse_quote!(#typaram_c));
+                }
+            }
+        }
+
+        quote! {
+            impl<'zf, 'zf_inner, #(#tybounds),*> zerofrom::ZeroFrom<'zf, #name<#maybe_zf_inner_lifetime #(#typarams_c),*>> for #name<#maybe_zf_lifetime #(#typarams),*>
+                where
+                #(#zf_bounds,)* {
+                fn zero_from(this: &'zf #name<#maybe_zf_inner_lifetime #(#typarams_c),*>) -> Self {
+                    match *this { #body }
+                }
+            }
+        }
+    }
+}
+
+fn custom_lt(s: &str) -> Lifetime {
+    Lifetime::new(s, Span::call_site())
+}
+
+/// Replace all lifetimes in a type with a specified one
+fn replace_lifetime(x: &Type, lt: Lifetime) -> Type {
+    struct ReplaceLifetime(Lifetime);
+
+    impl Fold for ReplaceLifetime {
+        fn fold_lifetime(&mut self, _: Lifetime) -> Lifetime {
+            self.0.clone()
+        }
+    }
+    ReplaceLifetime(lt).fold_type(x.clone())
+}
+
+/// Replace all lifetimes in a type with a specified one, AND replace all types that have a corresponding C type
+/// with the C type
+fn replace_lifetime_and_type(
+    x: &Type,
+    lt: Lifetime,
+    generics_env: &HashMap<Ident, Option<Ident>>,
+) -> Type {
+    struct ReplaceLifetimeAndTy<'a>(Lifetime, &'a HashMap<Ident, Option<Ident>>);
+
+    impl Fold for ReplaceLifetimeAndTy<'_> {
+        fn fold_lifetime(&mut self, _: Lifetime) -> Lifetime {
+            self.0.clone()
+        }
+        fn fold_type_path(&mut self, i: TypePath) -> TypePath {
+            if i.qself.is_none() {
+                if let Some(ident) = i.path.get_ident() {
+                    if let Some(Some(replacement)) = self.1.get(ident) {
+                        return parse_quote!(#replacement);
+                    }
+                }
+            }
+            fold::fold_type_path(self, i)
+        }
+    }
+    ReplaceLifetimeAndTy(lt, generics_env).fold_type(x.clone())
+}
diff --git a/vendor/zerofrom-derive/src/visitor.rs b/vendor/zerofrom-derive/src/visitor.rs
new file mode 100644
index 00000000..0cc44e9d
--- /dev/null
+++ b/vendor/zerofrom-derive/src/visitor.rs
@@ -0,0 +1,120 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Visitor for determining whether a type has type and non-static lifetime parameters
+//! (duplicated in yoke/derive/src/visitor.rs)
+
+use std::collections::HashMap;
+use syn::visit::{visit_lifetime, visit_type, visit_type_path, Visit};
+use syn::{Ident, Lifetime, Type, TypePath};
+
+struct TypeVisitor<'a> {
+    /// The type parameters in scope
+    typarams: &'a HashMap<Ident, Option<Ident>>,
+    /// Whether we found a type parameter
+    found_typarams: bool,
+    /// Whether we found a non-'static lifetime parameter
+    found_lifetimes: bool,
+}
+
+impl<'ast> Visit<'ast> for TypeVisitor<'_> {
+    fn visit_lifetime(&mut self, lt: &'ast Lifetime) {
+        if lt.ident != "static" {
+            self.found_lifetimes = true;
+        }
+        visit_lifetime(self, lt)
+    }
+    fn visit_type_path(&mut self, ty: &'ast TypePath) {
+        // We only need to check ty.path.get_ident() and not ty.qself or any
+        // generics in ty.path because the visitor will eventually visit those
+        // types on its own
+        if let Some(ident) = ty.path.get_ident() {
+            if let Some(maybe_borrowed) = self.typarams.get(ident) {
+                self.found_typarams = true;
+                if maybe_borrowed.is_some() {
+                    self.found_lifetimes = true;
+                }
+            }
+        }
+
+        visit_type_path(self, ty)
+    }
+}
+
+/// Checks if a type has type or lifetime parameters, given the local context of
+/// named type parameters. Returns (has_type_params, has_lifetime_params)
+pub fn check_type_for_parameters(
+    ty: &Type,
+    typarams: &HashMap<Ident, Option<Ident>>,
+) -> (bool, bool) {
+    let mut visit = TypeVisitor {
+        typarams,
+        found_typarams: false,
+        found_lifetimes: false,
+    };
+    visit_type(&mut visit, ty);
+
+    (visit.found_typarams, visit.found_lifetimes)
+}
+
+#[cfg(test)]
+mod tests {
+    use proc_macro2::Span;
+    use std::collections::HashMap;
+    use syn::{parse_quote, Ident};
+
+    use super::check_type_for_parameters;
+    fn make_typarams(params: &[&str]) -> HashMap<Ident, Option<Ident>> {
+        params
+            .iter()
+            .map(|x| (Ident::new(x, Span::call_site()), None))
+            .collect()
+    }
+
+    #[test]
+    fn test_simple_type() {
+        let environment = make_typarams(&["T", "U", "V"]);
+
+        let ty = parse_quote!(Foo<'a, T>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, true));
+
+        let ty = parse_quote!(Foo<T>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, false));
+
+        let ty = parse_quote!(Foo<'static, T>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, false));
+
+        let ty = parse_quote!(Foo<'a>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (false, true));
+
+        let ty = parse_quote!(Foo<'a, Bar<U>, Baz<(V, u8)>>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, true));
+
+        let ty = parse_quote!(Foo<'a, W>);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (false, true));
+    }
+
+    #[test]
+    fn test_assoc_types() {
+        let environment = make_typarams(&["T"]);
+
+        let ty = parse_quote!(<Foo as SomeTrait<'a, T>>::Output);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, true));
+
+        let ty = parse_quote!(<Foo as SomeTrait<'static, T>>::Output);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, false));
+
+        let ty = parse_quote!(<T as SomeTrait<'static, Foo>>::Output);
+        let check = check_type_for_parameters(&ty, &environment);
+        assert_eq!(check, (true, false));
+    }
+}
diff --git a/vendor/zerofrom/.cargo-checksum.json b/vendor/zerofrom/.cargo-checksum.json
new file mode 100644
index 00000000..88f2da98
--- /dev/null
+++ b/vendor/zerofrom/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"83a794ae5d54368a14328428b87d7dfbacedfce5af37cd8f6ef7486db492916b","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"cd9b9a57dff5012642ee535c46a9f05424eab903f0b9f62de8bf7f815bcd5082","src/lib.rs":"8dea607c122c1f81251643a6dc6614d6065a29781f4425b758228e5c90752b58","src/macro_impls.rs":"6b4b69bdc6b94f2abb64da0c2520d3ff74aff7d14e8b4de9e8022d7ddc951f38","src/zero_from.rs":"a41c82c9b6552880662b2ed67ada52e8c91611a90699a8f1ccb7035f4efcc85f"},"package":"50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"}
\ No newline at end of file
diff --git a/vendor/zerofrom/Cargo.toml b/vendor/zerofrom/Cargo.toml
new file mode 100644
index 00000000..eb66cad5
--- /dev/null
+++ b/vendor/zerofrom/Cargo.toml
@@ -0,0 +1,68 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.81"
+name = "zerofrom"
+version = "0.1.6"
+authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "ZeroFrom trait for constructing"
+readme = "README.md"
+keywords = [
+    "zerocopy",
+    "serialization",
+    "lifetime",
+    "borrow",
+]
+categories = [
+    "data-structures",
+    "caching",
+    "no-std",
+]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.docs.rs]
+all-features = true
+
+[package.metadata.workspaces]
+independent = true
+
+[features]
+alloc = []
+default = ["alloc"]
+derive = ["dep:zerofrom-derive"]
+
+[lib]
+name = "zerofrom"
+path = "src/lib.rs"
+
+[dependencies.zerofrom-derive]
+version = "0.1.3"
+optional = true
+default-features = false
diff --git a/vendor/zerofrom/LICENSE b/vendor/zerofrom/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/zerofrom/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/zerofrom/README.md b/vendor/zerofrom/README.md
new file mode 100644
index 00000000..7f171afa
--- /dev/null
+++ b/vendor/zerofrom/README.md
@@ -0,0 +1,13 @@
+# zerofrom [![crates.io](https://img.shields.io/crates/v/zerofrom)](https://crates.io/crates/zerofrom)
+
+<!-- cargo-rdme start -->
+
+This crate provides [`ZeroFrom`], a trait for converting types in a zero-copy way.
+
+See the documentation of [`ZeroFrom`] for more details.
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/zerofrom/src/lib.rs b/vendor/zerofrom/src/lib.rs
new file mode 100644
index 00000000..911d7e78
--- /dev/null
+++ b/vendor/zerofrom/src/lib.rs
@@ -0,0 +1,37 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This crate provides [`ZeroFrom`], a trait for converting types in a zero-copy way.
+//!
+//! See the documentation of [`ZeroFrom`] for more details.
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+// The lifetimes here are important for safety and explicitly writing
+// them out is good even when redundant
+#![allow(clippy::needless_lifetimes)]
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+mod macro_impls;
+mod zero_from;
+
+#[cfg(feature = "derive")]
+pub use zerofrom_derive::ZeroFrom;
+
+pub use crate::zero_from::ZeroFrom;
diff --git a/vendor/zerofrom/src/macro_impls.rs b/vendor/zerofrom/src/macro_impls.rs
new file mode 100644
index 00000000..3bef457e
--- /dev/null
+++ b/vendor/zerofrom/src/macro_impls.rs
@@ -0,0 +1,145 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// In this case consistency between impls is more important
+// than using pointer casts
+#![allow(clippy::transmute_ptr_to_ptr)]
+
+use crate::ZeroFrom;
+
+macro_rules! impl_copy_type {
+    ($ty:ident) => {
+        impl<'a> ZeroFrom<'a, $ty> for $ty {
+            #[inline]
+            fn zero_from(this: &'a Self) -> Self {
+                // Essentially only works when the struct is fully Copy
+                *this
+            }
+        }
+    };
+}
+
+impl_copy_type!(u8);
+impl_copy_type!(u16);
+impl_copy_type!(u32);
+impl_copy_type!(u64);
+impl_copy_type!(u128);
+impl_copy_type!(usize);
+impl_copy_type!(i8);
+impl_copy_type!(i16);
+impl_copy_type!(i32);
+impl_copy_type!(i64);
+impl_copy_type!(i128);
+impl_copy_type!(isize);
+impl_copy_type!(char);
+impl_copy_type!(bool);
+
+// This can be cleaned up once `[T; N]`::each_ref() is stabilized
+// https://github.com/rust-lang/rust/issues/76118
+macro_rules! array_zf_impl {
+    ($n:expr; $($i:expr),+) => {
+        impl<'a, C, T: ZeroFrom<'a, C>> ZeroFrom<'a, [C; $n]> for [T; $n] {
+            fn zero_from(this: &'a [C; $n]) -> Self {
+                [
+                    $(
+                        <T as ZeroFrom<C>>::zero_from(&this[$i])
+                    ),+
+
+                ]
+            }
+        }
+    }
+}
+
+array_zf_impl!(1; 0);
+array_zf_impl!(2; 0, 1);
+array_zf_impl!(3; 0, 1, 2);
+array_zf_impl!(4; 0, 1, 2, 3);
+array_zf_impl!(5; 0, 1, 2, 3, 4);
+array_zf_impl!(6; 0, 1, 2, 3, 4, 5);
+array_zf_impl!(7; 0, 1, 2, 3, 4, 5, 6);
+array_zf_impl!(8; 0, 1, 2, 3, 4, 5, 6, 7);
+array_zf_impl!(9; 0, 1, 2, 3, 4, 5, 6, 7, 8);
+array_zf_impl!(10; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
+array_zf_impl!(11; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+array_zf_impl!(12; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
+array_zf_impl!(13; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
+array_zf_impl!(14; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
+array_zf_impl!(15; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
+array_zf_impl!(16; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
+
+macro_rules! tuple_zf_impl {
+    ($(($c:ident, $t:ident, $i:tt)),+) => {
+        impl<'zf, $($c, $t: ZeroFrom<'zf, $c>),+> ZeroFrom<'zf, ($($c),+)>
+            for ($($t),+)
+            {
+            fn zero_from(other: &'zf ($($c),+)) -> Self {
+                (
+                    $(<$t as ZeroFrom<$c>>::zero_from(&other.$i)),+
+                )
+            }
+        }
+    };
+}
+
+tuple_zf_impl!((C1, T1, 0), (C2, T2, 1));
+tuple_zf_impl!((C1, T1, 0), (C2, T2, 1), (C3, T3, 2));
+tuple_zf_impl!((C1, T1, 0), (C2, T2, 1), (C3, T3, 2), (C4, T4, 3));
+tuple_zf_impl!(
+    (C1, T1, 0),
+    (C2, T2, 1),
+    (C3, T3, 2),
+    (C4, T4, 3),
+    (C5, T5, 4)
+);
+tuple_zf_impl!(
+    (C1, T1, 0),
+    (C2, T2, 1),
+    (C3, T3, 2),
+    (C4, T4, 3),
+    (C5, T5, 4),
+    (C6, T6, 5)
+);
+tuple_zf_impl!(
+    (C1, T1, 0),
+    (C2, T2, 1),
+    (C3, T3, 2),
+    (C4, T4, 3),
+    (C5, T5, 4),
+    (C6, T6, 5),
+    (C7, T7, 6)
+);
+tuple_zf_impl!(
+    (C1, T1, 0),
+    (C2, T2, 1),
+    (C3, T3, 2),
+    (C4, T4, 3),
+    (C5, T5, 4),
+    (C6, T6, 5),
+    (C7, T7, 6),
+    (C8, T8, 7)
+);
+tuple_zf_impl!(
+    (C1, T1, 0),
+    (C2, T2, 1),
+    (C3, T3, 2),
+    (C4, T4, 3),
+    (C5, T5, 4),
+    (C6, T6, 5),
+    (C7, T7, 6),
+    (C8, T8, 7),
+    (C9, T9, 8)
+);
+tuple_zf_impl!(
+    (C1, T1, 0),
+    (C2, T2, 1),
+    (C3, T3, 2),
+    (C4, T4, 3),
+    (C5, T5, 4),
+    (C6, T6, 5),
+    (C7, T7, 6),
+    (C8, T8, 7),
+    (C9, T9, 8),
+    (C10, T10, 9)
+);
diff --git a/vendor/zerofrom/src/zero_from.rs b/vendor/zerofrom/src/zero_from.rs
new file mode 100644
index 00000000..626cfc9f
--- /dev/null
+++ b/vendor/zerofrom/src/zero_from.rs
@@ -0,0 +1,136 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::marker::PhantomData;
+
+#[cfg(feature = "alloc")]
+use alloc::borrow::{Cow, ToOwned};
+#[cfg(feature = "alloc")]
+use alloc::string::String;
+
+/// Trait for types that can be created from a reference to a different type `C` with no allocations,
+/// i.e. a zero-copy (zero-alloc) version of "From"
+///
+/// A type can be the `ZeroFrom` target of multiple other types.
+///
+/// The intention is for `ZeroFrom` to produce a struct from a other with as little work as
+/// possible. Although it is technically possible to implement `ZeroFrom` without being
+/// zero-copy (using heap allocations), doing so defeats the purpose of `ZeroFrom`.
+///
+/// For example, `impl ZeroFrom<C> for Cow<str>` should return a `Cow::Borrowed` pointing at
+/// data in the other type `C`, even if the other type is itself fully owned.
+///
+/// One can use the [`#[derive(ZeroFrom)]`](zerofrom_derive::ZeroFrom) custom derive to automatically
+/// implement this trait.
+///
+/// # Examples
+///
+/// Implementing `ZeroFrom` on a custom data struct:
+///
+/// ```
+/// use std::borrow::Cow;
+/// use zerofrom::ZeroFrom;
+///
+/// struct MyStruct<'data> {
+///     message: Cow<'data, str>,
+/// }
+///
+/// // Reference from a borrowed version of self
+/// impl<'zf> ZeroFrom<'zf, MyStruct<'_>> for MyStruct<'zf> {
+///     fn zero_from(other: &'zf MyStruct<'_>) -> Self {
+///         MyStruct {
+///             message: Cow::Borrowed(&other.message),
+///         }
+///     }
+/// }
+///
+/// // Reference from a string slice directly
+/// impl<'zf> ZeroFrom<'zf, str> for MyStruct<'zf> {
+///     fn zero_from(other: &'zf str) -> Self {
+///         MyStruct {
+///             message: Cow::Borrowed(other),
+///         }
+///     }
+/// }
+/// ```
+pub trait ZeroFrom<'zf, C: ?Sized>: 'zf {
+    /// Clone the other `C` into a struct that may retain references into `C`.
+    fn zero_from(other: &'zf C) -> Self;
+}
+
+// Note: The following could be blanket implementations, but that would require constraining the
+// blanket `T` on `T: 'static`, which may not be desirable for all downstream users who may wish
+// to customize their `ZeroFrom` impl. The blanket implementation may be safe once Rust has
+// specialization.
+
+#[cfg(feature = "alloc")]
+impl<'zf> ZeroFrom<'zf, str> for Cow<'zf, str> {
+    #[inline]
+    fn zero_from(other: &'zf str) -> Self {
+        Cow::Borrowed(other)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'zf> ZeroFrom<'zf, String> for Cow<'zf, str> {
+    #[inline]
+    fn zero_from(other: &'zf String) -> Self {
+        Cow::Borrowed(other)
+    }
+}
+
+impl<'zf> ZeroFrom<'zf, str> for &'zf str {
+    #[inline]
+    fn zero_from(other: &'zf str) -> Self {
+        other
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'zf> ZeroFrom<'zf, String> for &'zf str {
+    #[inline]
+    fn zero_from(other: &'zf String) -> Self {
+        other
+    }
+}
+
+impl<'zf, C, T: ZeroFrom<'zf, C>> ZeroFrom<'zf, Option<C>> for Option<T> {
+    fn zero_from(other: &'zf Option<C>) -> Self {
+        other.as_ref().map(|c| <T as ZeroFrom<C>>::zero_from(c))
+    }
+}
+
+// These duplicate the functionality from above and aren't quite necessary due
+// to deref coercions, however for the custom derive to work, there always needs
+// to be `impl ZeroFrom<T> for T`, otherwise it may fail to perform the necessary
+// type inference. Deref coercions do not typically work when sufficient generics
+// or inference are involved, and the proc macro does not necessarily have
+// enough type information to figure this out on its own.
+#[cfg(feature = "alloc")]
+impl<'zf, B: ToOwned + ?Sized> ZeroFrom<'zf, Cow<'_, B>> for Cow<'zf, B> {
+    #[inline]
+    fn zero_from(other: &'zf Cow<'_, B>) -> Self {
+        Cow::Borrowed(other)
+    }
+}
+
+impl<'zf, T: ?Sized> ZeroFrom<'zf, &'_ T> for &'zf T {
+    #[inline]
+    fn zero_from(other: &'zf &'_ T) -> &'zf T {
+        other
+    }
+}
+
+impl<'zf, T> ZeroFrom<'zf, [T]> for &'zf [T] {
+    #[inline]
+    fn zero_from(other: &'zf [T]) -> &'zf [T] {
+        other
+    }
+}
+
+impl<'zf, T: ?Sized + 'zf> ZeroFrom<'zf, PhantomData<T>> for PhantomData<T> {
+    fn zero_from(other: &'zf PhantomData<T>) -> Self {
+        *other
+    }
+}
diff --git a/vendor/zerotrie/.cargo-checksum.json b/vendor/zerotrie/.cargo-checksum.json
new file mode 100644
index 00000000..8ec9800c
--- /dev/null
+++ b/vendor/zerotrie/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"4ab073038a47fdfe9881a370284f32f38622a2087c6d15d68871c2bb4add1da8","Cargo.toml":"51b4e43e670ff1a0552f6973efdf26eba7063a2f5e91e3b734501e41b2bcd6cb","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"21c5a3a4999c937473283001d787b27b7f92942a4cc9df99e63466346205e777","benches/overview.rs":"f1207ef0c53c743fbf61e1ba886dda70cdba338fb357e1f61ca9285cc6c5f49e","examples/first_weekday_for_region.rs":"2ee02fb39378be77ea897172c47e7cb2749a5a127a4efae101b30e6bb762ddfb","src/builder/branch_meta.rs":"31b306f321f10655a2efc2e395a2a65e6df6da8b1b71963772ef4407061a7eda","src/builder/bytestr.rs":"c4f40fb9b93a7735ddd181e1807f8573d6a7dbf66e1d84f596e8d318d755c910","src/builder/konst/builder.rs":"073a54b2879dc07c458bfb68ea838279b07bd23cd3c6e4ac7da243d88c760639","src/builder/konst/mod.rs":"160d6d2b0da65101e87371aadcf30aaa96f5851a58a23794b11d596f384b635c","src/builder/konst/store.rs":"88cd8668676dd0d0e4ff0817359d6ae4c57f66924fe43de2216f69d2dfcc054f","src/builder/litemap.rs":"229605a3516919a29d3207195cdacf458767d6f02e434595c5b3b577ada87e1e","src/builder/mod.rs":"5ae439e4511da028fec4b95dfa8ff65337e3c4e83ae594645a46eccc3e8b2446","src/builder/nonconst/builder.rs":"c8b89dcaf01385447d7aeae400a0912c875fe7282e664e700b980615e14293d7","src/builder/nonconst/mod.rs":"9f02f6a7ad30458d056568399b8640ce8332cedd8f88649b9c4e60254ba025a2","src/builder/nonconst/store.rs":"b1fef6e738241817682eb7f10b8b5ea713af7ec527f0da0f3e8443825f54adf5","src/byte_phf/builder.rs":"b0a89d69adf28f8bbd0be2a8fdd92105267fbc8cbc7625943952acf50770f441","src/byte_phf/cached_owned.rs":"2999ced75fba7aa8685fb1b1ee4c1dd47b6e36b55c9d5d6a10ed3aebc5a54b6b","src/byte_phf/mod.rs":"5324d52566afc48d365c4df61f89a5e0a03522d66d99c4e2781489cb5a880bdd","src/cursor.rs":"44eade91f6c39ed8aa670e8cc1be75f876db864b96675b90169c458ba188a830","src/error.rs":"487cb8807ee4fecffa0bc4c87ad94eb9b609590a2af3c98df548e6cad1dd18d8","src/helpers.rs":"9053fccf6b17180418b9f4d813aafd242e302d608e0a6bf0969dc228f161428f","src/lib.rs":"ff64bb55462571c7530e9d45fb3f4f34ea4cf62b74bb32a245ffb19af9595f6b","src/options.rs":"aa980fa7c58a10cf128151d15f1a6186a356ce9aba9c75c02108ca268680fdc4","src/reader.rs":"be554a75a94bd8ed4b6bdd0e7acd0936b4ee4b6936c265fc62e5c36f96dc1768","src/serde.rs":"b06ac3d970c5d80fb662cbf985c25b7516c0c71231cebb3e433a1f778c23a5c5","src/varint.rs":"8712fc408b5bdab4864c82f9c5bad39864dbac3a87d237dbbd2de04157252c93","src/zerotrie.rs":"ab44ea2e96987598c1ad643451008ea5421b9fa37bb5e071cf585fd442747a50","tests/asciitrie_test.rs":"0a4de1314e5ea805bc583262dcd7c3a19f8be9cc2c87c1b475da1392f621fbc3","tests/builder_test.rs":"916143542d4086e97b8a10243671cba50ad2daca7cbe9ecb7db89420dae5f033","tests/data/data.rs":"f8a7afcf64e8bd0f902a1d2eb829deb96c0a0fddd78f0aa80657764a91460515","tests/derive_test.rs":"786037168f4198268634e37b3a8496c805f1c5cdbc469ddf77cc9c326cb8661e","tests/ignorecase_test.rs":"28dce3e892ddf0b2ccf254b60e0d915872d74b9eab0f80522d4e7e7fefbbdc7e","tests/locale_aux_test.rs":"a64d439b08355bf8f98ddd8f3979774b20c2b6c56562e340e8e0e2a09689d2d8"},"package":"36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"}
\ No newline at end of file
diff --git a/vendor/zerotrie/Cargo.lock b/vendor/zerotrie/Cargo.lock
new file mode 100644
index 00000000..0dcaa32b
--- /dev/null
+++ b/vendor/zerotrie/Cargo.lock
@@ -0,0 +1,945 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anes"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+
+[[package]]
+name = "anstyle"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+
+[[package]]
+name = "autocfg"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitflags"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+
+[[package]]
+name = "bumpalo"
+version = "3.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "ciborium"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
+dependencies = [
+ "ciborium-io",
+ "ciborium-ll",
+ "serde",
+]
+
+[[package]]
+name = "ciborium-io"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
+
+[[package]]
+name = "ciborium-ll"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
+dependencies = [
+ "ciborium-io",
+ "half",
+]
+
+[[package]]
+name = "clap"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c"
+dependencies = [
+ "clap_builder",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7"
+dependencies = [
+ "anstyle",
+ "clap_lex",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+
+[[package]]
+name = "cobs"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
+
+[[package]]
+name = "criterion"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
+dependencies = [
+ "anes",
+ "cast",
+ "ciborium",
+ "clap",
+ "criterion-plot",
+ "is-terminal",
+ "itertools",
+ "num-traits",
+ "once_cell",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
+dependencies = [
+ "cast",
+ "itertools",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+
+[[package]]
+name = "crunchy"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
+
+[[package]]
+name = "databake"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff6ee9e2d2afb173bcdeee45934c89ec341ab26f91c9933774fc15c2b58f83ef"
+dependencies = [
+ "databake-derive",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "databake-derive"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6834770958c7b84223607e49758ec0dde273c4df915e734aad50f62968a4c134"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "either"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+
+[[package]]
+name = "embedded-io"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
+
+[[package]]
+name = "embedded-io"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
+
+[[package]]
+name = "getrandom"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi",
+ "wasi",
+]
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08"
+
+[[package]]
+name = "icu_locale_core"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.172"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
+
+[[package]]
+name = "litemap"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "log"
+version = "0.4.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "oorandom"
+version = "11.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "plotters"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "postcard"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8"
+dependencies = [
+ "cobs",
+ "embedded-io 0.4.0",
+ "embedded-io 0.6.1",
+ "serde",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+
+[[package]]
+name = "rand"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
+dependencies = [
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_pcg"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b48ac3f7ffaab7fac4d2376632268aa5f89abdb55f7ebf8f4d11fffccb2320f7"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+
+[[package]]
+name = "rmp"
+version = "0.8.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4"
+dependencies = [
+ "byteorder",
+ "num-traits",
+ "paste",
+]
+
+[[package]]
+name = "rmp-serde"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db"
+dependencies = [
+ "byteorder",
+ "rmp",
+ "serde",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.140"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "syn"
+version = "2.0.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.14.2+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+dependencies = [
+ "wit-bindgen-rt",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "wit-bindgen-rt"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "writeable"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
+
+[[package]]
+name = "yoke"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
+dependencies = [
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.8.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerotrie"
+version = "0.2.2"
+dependencies = [
+ "bincode",
+ "criterion",
+ "databake",
+ "displaydoc",
+ "icu_locale_core",
+ "litemap",
+ "postcard",
+ "rand",
+ "rand_pcg",
+ "rmp-serde",
+ "serde",
+ "serde_json",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428"
+dependencies = [
+ "databake",
+ "serde",
+ "zerofrom",
+]
diff --git a/vendor/zerotrie/Cargo.toml b/vendor/zerotrie/Cargo.toml
new file mode 100644
index 00000000..bb9b940a
--- /dev/null
+++ b/vendor/zerotrie/Cargo.toml
@@ -0,0 +1,183 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "zerotrie"
+version = "0.2.2"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+    "build.rs",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "A data structure that efficiently maps strings to integers"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.docs.rs]
+all-features = true
+
+[features]
+alloc = []
+databake = [
+    "dep:databake",
+    "zerovec?/databake",
+]
+default = []
+litemap = [
+    "dep:litemap",
+    "alloc",
+]
+serde = [
+    "dep:serde",
+    "dep:litemap",
+    "alloc",
+    "litemap/serde",
+    "zerovec?/serde",
+]
+yoke = ["dep:yoke"]
+zerofrom = ["dep:zerofrom"]
+
+[lib]
+name = "zerotrie"
+path = "src/lib.rs"
+bench = false
+
+[[example]]
+name = "first_weekday_for_region"
+path = "examples/first_weekday_for_region.rs"
+
+[[test]]
+name = "asciitrie_test"
+path = "tests/asciitrie_test.rs"
+required-features = [
+    "alloc",
+    "litemap",
+]
+
+[[test]]
+name = "builder_test"
+path = "tests/builder_test.rs"
+required-features = [
+    "alloc",
+    "litemap",
+]
+
+[[test]]
+name = "derive_test"
+path = "tests/derive_test.rs"
+
+[[test]]
+name = "ignorecase_test"
+path = "tests/ignorecase_test.rs"
+
+[[test]]
+name = "locale_aux_test"
+path = "tests/locale_aux_test.rs"
+required-features = [
+    "alloc",
+    "litemap",
+]
+
+[[bench]]
+name = "overview"
+path = "benches/overview.rs"
+harness = false
+required-features = [
+    "alloc",
+    "litemap",
+]
+
+[dependencies.databake]
+version = "0.2.0"
+features = ["derive"]
+optional = true
+default-features = false
+
+[dependencies.displaydoc]
+version = "0.2.3"
+default-features = false
+
+[dependencies.litemap]
+version = "0.8.0"
+features = ["alloc"]
+optional = true
+default-features = false
+
+[dependencies.serde]
+version = "1.0.110"
+optional = true
+default-features = false
+
+[dependencies.yoke]
+version = "0.8.0"
+features = ["derive"]
+optional = true
+default-features = false
+
+[dependencies.zerofrom]
+version = "0.1.3"
+optional = true
+default-features = false
+
+[dependencies.zerovec]
+version = "0.11.1"
+optional = true
+default-features = false
+
+[dev-dependencies.bincode]
+version = "1.3.1"
+
+[dev-dependencies.icu_locale_core]
+version = "2.0.0"
+features = ["alloc"]
+default-features = false
+
+[dev-dependencies.postcard]
+version = "1.0.3"
+features = ["alloc"]
+default-features = false
+
+[dev-dependencies.rand]
+version = "0.9"
+
+[dev-dependencies.rand_pcg]
+version = "0.9"
+
+[dev-dependencies.rmp-serde]
+version = "1.2.0"
+
+[dev-dependencies.serde]
+version = "1.0.110"
+default-features = false
+
+[dev-dependencies.serde_json]
+version = "1.0.45"
+
+[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
+version = "0.5.0"
diff --git a/vendor/zerotrie/LICENSE b/vendor/zerotrie/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/zerotrie/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/zerotrie/README.md b/vendor/zerotrie/README.md
new file mode 100644
index 00000000..1a58da76
--- /dev/null
+++ b/vendor/zerotrie/README.md
@@ -0,0 +1,41 @@
+# zerotrie [![crates.io](https://img.shields.io/crates/v/zerotrie)](https://crates.io/crates/zerotrie)
+
+<!-- cargo-rdme start -->
+
+A data structure offering zero-copy storage and retrieval of byte strings, with a focus
+on the efficient storage of ASCII strings. Strings are mapped to `usize` values.
+
+[`ZeroTrie`] does not support mutation because doing so would require recomputing the entire
+data structure. Instead, it supports conversion to and from [`LiteMap`] and [`BTreeMap`].
+
+There are multiple variants of [`ZeroTrie`] optimized for different use cases.
+
+## Examples
+
+```rust
+use zerotrie::ZeroTrie;
+
+let data: &[(&str, usize)] = &[("abc", 11), ("xyz", 22), ("axyb", 33)];
+
+let trie: ZeroTrie<Vec<u8>> = data.iter().copied().collect();
+
+assert_eq!(trie.get("axyb"), Some(33));
+assert_eq!(trie.byte_len(), 18);
+```
+
+## Internal Structure
+
+To read about the internal structure of [`ZeroTrie`], build the docs with private modules:
+
+```bash
+cargo doc --document-private-items --all-features --no-deps --open
+```
+
+[`LiteMap`]: litemap::LiteMap
+[`BTreeMap`]: alloc::collections::BTreeMap
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/zerotrie/benches/overview.rs b/vendor/zerotrie/benches/overview.rs
new file mode 100644
index 00000000..be17e60f
--- /dev/null
+++ b/vendor/zerotrie/benches/overview.rs
@@ -0,0 +1,198 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use litemap::LiteMap;
+use std::collections::HashMap;
+use zerotrie::ZeroTrieExtendedCapacity;
+use zerotrie::ZeroTriePerfectHash;
+use zerotrie::ZeroTrieSimpleAscii;
+use zerovec::ZeroHashMap;
+use zerovec::ZeroMap;
+
+mod testdata {
+    include!("../tests/data/data.rs");
+}
+
+fn get_basic_bench(c: &mut Criterion) {
+    let mut g = c.benchmark_group("get/basic");
+
+    // NOTE: All the trie data are the same for basic data
+    let trie = testdata::basic::TRIE_ASCII;
+    let data = testdata::basic::DATA_ASCII;
+
+    g.bench_function("SimpleAscii", |b| {
+        let trie = ZeroTrieSimpleAscii::from_bytes(trie);
+        b.iter(|| {
+            for (key, expected) in black_box(data) {
+                let actual = black_box(&trie).get(key);
+                assert_eq!(Some(*expected), actual);
+            }
+        });
+    });
+
+    g.bench_function("PerfectHash", |b| {
+        let trie = ZeroTriePerfectHash::from_bytes(trie);
+        b.iter(|| {
+            for (key, expected) in black_box(data) {
+                let actual = black_box(&trie).get(key);
+                assert_eq!(Some(*expected), actual);
+            }
+        });
+    });
+
+    g.bench_function("ExtendedCapacity", |b| {
+        let trie = ZeroTrieExtendedCapacity::from_bytes(trie);
+        b.iter(|| {
+            for (key, expected) in black_box(data) {
+                let actual = black_box(&trie).get(key);
+                assert_eq!(Some(*expected), actual);
+            }
+        });
+    });
+
+    g.bench_function("ZeroMap/u32", |b| {
+        let zm: ZeroMap<[u8], u32> = data.iter().map(|(a, b)| (*a, *b as u32)).collect();
+        b.iter(|| {
+            for (key, expected) in black_box(data) {
+                let actual = black_box(&zm).get_copied(key);
+                assert_eq!(Some(*expected as u32), actual);
+            }
+        });
+    });
+
+    g.bench_function("ZeroMap/u8", |b| {
+        let zm: ZeroMap<[u8], u8> = data.iter().map(|(k, v)| (*k, *v as u8)).collect();
+        b.iter(|| {
+            for (key, expected) in black_box(data) {
+                let actual = black_box(&zm).get_copied(key);
+                assert_eq!(Some(*expected as u8), actual);
+            }
+        });
+    });
+
+    g.bench_function("HashMap", |b| {
+        let hm: HashMap<&[u8], usize> = data.iter().copied().collect();
+        b.iter(|| {
+            for (key, expected) in black_box(data) {
+                let actual = black_box(&hm).get(key);
+                assert_eq!(Some(expected), actual);
+            }
+        });
+    });
+
+    g.bench_function("ZeroHashMap/u8", |b| {
+        let zhm: ZeroHashMap<[u8], u8> = data.iter().map(|(k, v)| (*k, *v as u8)).collect();
+        b.iter(|| {
+            for (key, expected) in black_box(data) {
+                let actual = black_box(&zhm).get(key).copied();
+                assert_eq!(Some(*expected as u8), actual);
+            }
+        });
+    });
+}
+
+fn get_subtags_bench_medium(c: &mut Criterion) {
+    let g = c.benchmark_group("get/subtags_10pct");
+
+    let strings = testdata::short_subtags_10pct::STRINGS;
+    let litemap = testdata::strings_to_litemap(strings);
+
+    get_subtags_bench_helper(g, strings, litemap);
+}
+
+fn get_subtags_bench_large(c: &mut Criterion) {
+    let g = c.benchmark_group("get/subtags_full");
+
+    let strings = testdata::short_subtags::STRINGS;
+    let litemap = testdata::strings_to_litemap(strings);
+
+    get_subtags_bench_helper(g, strings, litemap);
+}
+
+fn get_subtags_bench_helper<M: criterion::measurement::Measurement>(
+    mut g: criterion::BenchmarkGroup<M>,
+    strings: &[&str],
+    litemap: LiteMap<&[u8], usize>,
+) {
+    g.bench_function("SimpleAscii", |b| {
+        let trie = ZeroTrieSimpleAscii::try_from(&litemap).unwrap();
+        b.iter(|| {
+            for (i, key) in black_box(strings).iter().enumerate() {
+                let actual = black_box(&trie).get(key);
+                assert_eq!(Some(i), actual);
+            }
+        });
+    });
+
+    g.bench_function("PerfectHash", |b| {
+        let trie = ZeroTriePerfectHash::try_from(&litemap).unwrap();
+        b.iter(|| {
+            for (i, key) in black_box(strings).iter().enumerate() {
+                let actual = black_box(&trie).get(key);
+                assert_eq!(Some(i), actual);
+            }
+        });
+    });
+
+    g.bench_function("ExtendedCapacity", |b| {
+        let trie = ZeroTrieExtendedCapacity::try_from(&litemap).unwrap();
+        b.iter(|| {
+            for (i, key) in black_box(strings).iter().enumerate() {
+                let actual = black_box(&trie).get(key);
+                assert_eq!(Some(i), actual);
+            }
+        });
+    });
+
+    g.bench_function("ZeroMap/u32", |b| {
+        let zm: ZeroMap<[u8], u32> = litemap.iter().map(|(a, b)| (*a, *b as u32)).collect();
+        b.iter(|| {
+            for (i, key) in black_box(strings).iter().enumerate() {
+                let actual = black_box(&zm).get_copied(key.as_bytes());
+                assert_eq!(Some(i as u32), actual);
+            }
+        });
+    });
+
+    g.bench_function("ZeroMap/u8", |b| {
+        let zm: ZeroMap<[u8], u8> = litemap.iter().map(|(k, v)| (*k, *v as u8)).collect();
+        b.iter(|| {
+            for (i, key) in black_box(strings).iter().enumerate() {
+                let actual = black_box(&zm).get_copied(key.as_bytes());
+                assert_eq!(Some(i as u8), actual);
+            }
+        });
+    });
+
+    g.bench_function("HashMap", |b| {
+        let hm: HashMap<&[u8], u32> = litemap.iter().map(|(a, b)| (*a, *b as u32)).collect();
+        b.iter(|| {
+            for (i, key) in black_box(strings).iter().enumerate() {
+                let actual = black_box(&hm).get(key.as_bytes());
+                assert_eq!(Some(i as u32), actual.copied());
+            }
+        });
+    });
+
+    g.bench_function("ZeroHashMap/u8", |b| {
+        let zhm: ZeroHashMap<[u8], u8> = litemap.iter().map(|(k, v)| (*k, *v as u8)).collect();
+        b.iter(|| {
+            for (i, key) in black_box(strings).iter().enumerate() {
+                let actual = black_box(&zhm).get(key.as_bytes()).copied();
+                assert_eq!(Some(i as u8), actual);
+            }
+        });
+    });
+
+    g.finish();
+}
+
+criterion_group!(
+    benches,
+    get_basic_bench,
+    get_subtags_bench_medium,
+    get_subtags_bench_large
+);
+criterion_main!(benches);
diff --git a/vendor/zerotrie/examples/first_weekday_for_region.rs b/vendor/zerotrie/examples/first_weekday_for_region.rs
new file mode 100644
index 00000000..25a025b7
--- /dev/null
+++ b/vendor/zerotrie/examples/first_weekday_for_region.rs
@@ -0,0 +1,219 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// This example demonstrates the use of ZeroTrieSimpleAscii to look up data based on a region code.
+
+#![allow(dead_code)]
+#![no_main] // https://github.com/unicode-org/icu4x/issues/395
+icu_benchmark_macros::instrument!();
+
+use zerotrie::ZeroTriePerfectHash;
+use zerotrie::ZeroTrieSimpleAscii;
+
+mod weekday {
+    pub const MON: usize = 1;
+    pub const FRI: usize = 5;
+    pub const SAT: usize = 6;
+    pub const SUN: usize = 7;
+}
+
+// This data originated from CLDR 41.
+static DATA: &[(&str, usize)] = &[
+    ("001", weekday::MON),
+    ("AD", weekday::MON),
+    ("AE", weekday::SAT),
+    ("AF", weekday::SAT),
+    ("AG", weekday::SUN),
+    ("AI", weekday::MON),
+    ("AL", weekday::MON),
+    ("AM", weekday::MON),
+    ("AN", weekday::MON),
+    ("AR", weekday::MON),
+    ("AS", weekday::SUN),
+    ("AT", weekday::MON),
+    ("AU", weekday::MON),
+    ("AX", weekday::MON),
+    ("AZ", weekday::MON),
+    ("BA", weekday::MON),
+    ("BD", weekday::SUN),
+    ("BE", weekday::MON),
+    ("BG", weekday::MON),
+    ("BH", weekday::SAT),
+    ("BM", weekday::MON),
+    ("BN", weekday::MON),
+    ("BR", weekday::SUN),
+    ("BS", weekday::SUN),
+    ("BT", weekday::SUN),
+    ("BW", weekday::SUN),
+    ("BY", weekday::MON),
+    ("BZ", weekday::SUN),
+    ("CA", weekday::SUN),
+    ("CH", weekday::MON),
+    ("CL", weekday::MON),
+    ("CM", weekday::MON),
+    ("CN", weekday::SUN),
+    ("CO", weekday::SUN),
+    ("CR", weekday::MON),
+    ("CY", weekday::MON),
+    ("CZ", weekday::MON),
+    ("DE", weekday::MON),
+    ("DJ", weekday::SAT),
+    ("DK", weekday::MON),
+    ("DM", weekday::SUN),
+    ("DO", weekday::SUN),
+    ("DZ", weekday::SAT),
+    ("EC", weekday::MON),
+    ("EE", weekday::MON),
+    ("EG", weekday::SAT),
+    ("ES", weekday::MON),
+    ("ET", weekday::SUN),
+    ("FI", weekday::MON),
+    ("FJ", weekday::MON),
+    ("FO", weekday::MON),
+    ("FR", weekday::MON),
+    ("GB", weekday::MON),
+    ("GB-alt-variant", weekday::SUN),
+    ("GE", weekday::MON),
+    ("GF", weekday::MON),
+    ("GP", weekday::MON),
+    ("GR", weekday::MON),
+    ("GT", weekday::SUN),
+    ("GU", weekday::SUN),
+    ("HK", weekday::SUN),
+    ("HN", weekday::SUN),
+    ("HR", weekday::MON),
+    ("HU", weekday::MON),
+    ("ID", weekday::SUN),
+    ("IE", weekday::MON),
+    ("IL", weekday::SUN),
+    ("IN", weekday::SUN),
+    ("IQ", weekday::SAT),
+    ("IR", weekday::SAT),
+    ("IS", weekday::MON),
+    ("IT", weekday::MON),
+    ("JM", weekday::SUN),
+    ("JO", weekday::SAT),
+    ("JP", weekday::SUN),
+    ("KE", weekday::SUN),
+    ("KG", weekday::MON),
+    ("KH", weekday::SUN),
+    ("KR", weekday::SUN),
+    ("KW", weekday::SAT),
+    ("KZ", weekday::MON),
+    ("LA", weekday::SUN),
+    ("LB", weekday::MON),
+    ("LI", weekday::MON),
+    ("LK", weekday::MON),
+    ("LT", weekday::MON),
+    ("LU", weekday::MON),
+    ("LV", weekday::MON),
+    ("LY", weekday::SAT),
+    ("MC", weekday::MON),
+    ("MD", weekday::MON),
+    ("ME", weekday::MON),
+    ("MH", weekday::SUN),
+    ("MK", weekday::MON),
+    ("MM", weekday::SUN),
+    ("MN", weekday::MON),
+    ("MO", weekday::SUN),
+    ("MQ", weekday::MON),
+    ("MT", weekday::SUN),
+    ("MV", weekday::FRI),
+    ("MX", weekday::SUN),
+    ("MY", weekday::MON),
+    ("MZ", weekday::SUN),
+    ("NI", weekday::SUN),
+    ("NL", weekday::MON),
+    ("NO", weekday::MON),
+    ("NP", weekday::SUN),
+    ("NZ", weekday::MON),
+    ("OM", weekday::SAT),
+    ("PA", weekday::SUN),
+    ("PE", weekday::SUN),
+    ("PH", weekday::SUN),
+    ("PK", weekday::SUN),
+    ("PL", weekday::MON),
+    ("PR", weekday::SUN),
+    ("PT", weekday::SUN),
+    ("PY", weekday::SUN),
+    ("QA", weekday::SAT),
+    ("RE", weekday::MON),
+    ("RO", weekday::MON),
+    ("RS", weekday::MON),
+    ("RU", weekday::MON),
+    ("SA", weekday::SUN),
+    ("SD", weekday::SAT),
+    ("SE", weekday::MON),
+    ("SG", weekday::SUN),
+    ("SI", weekday::MON),
+    ("SK", weekday::MON),
+    ("SM", weekday::MON),
+    ("SV", weekday::SUN),
+    ("SY", weekday::SAT),
+    ("TH", weekday::SUN),
+    ("TJ", weekday::MON),
+    ("TM", weekday::MON),
+    ("TR", weekday::MON),
+    ("TT", weekday::SUN),
+    ("TW", weekday::SUN),
+    ("UA", weekday::MON),
+    ("UM", weekday::SUN),
+    ("US", weekday::SUN),
+    ("UY", weekday::MON),
+    ("UZ", weekday::MON),
+    ("VA", weekday::MON),
+    ("VE", weekday::SUN),
+    ("VI", weekday::SUN),
+    ("VN", weekday::MON),
+    ("WS", weekday::SUN),
+    ("XK", weekday::MON),
+    ("YE", weekday::SUN),
+    ("ZA", weekday::SUN),
+    ("ZW", weekday::SUN),
+];
+static TRIE: ZeroTrieSimpleAscii<[u8; 539]> = ZeroTrieSimpleAscii::from_sorted_str_tuples(DATA);
+
+static TRIE_PHF: ZeroTriePerfectHash<[u8; 567]> = ZeroTriePerfectHash::from_store([
+    225, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 0, 15, 0,
+    81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 79, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 74, 48, 76,
+    78, 77, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+    14, 41, 59, 74, 86, 88, 90, 92, 98, 100, 142, 181, 208, 226, 241, 253, 31, 43, 67, 85, 94, 97,
+    121, 136, 178, 65, 134, 196, 69, 79, 83, 85, 1, 2, 3, 129, 129, 129, 129, 201, 65, 68, 69, 71,
+    73, 75, 77, 86, 89, 1, 2, 3, 4, 5, 6, 7, 8, 135, 134, 129, 135, 129, 129, 129, 135, 134, 198,
+    72, 74, 77, 82, 84, 87, 1, 2, 3, 4, 5, 135, 129, 129, 129, 135, 135, 197, 65, 77, 83, 89, 90,
+    1, 2, 3, 4, 129, 135, 135, 129, 129, 196, 65, 69, 73, 78, 1, 2, 3, 129, 135, 135, 129, 83, 135,
+    75, 129, 69, 135, 194, 65, 87, 1, 135, 135, 77, 134, 206, 68, 69, 70, 71, 73, 76, 77, 78, 82,
+    83, 84, 85, 88, 90, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 129, 134, 134, 135, 129, 129,
+    129, 129, 129, 135, 129, 129, 129, 129, 205, 65, 68, 69, 71, 72, 77, 78, 82, 83, 84, 87, 89,
+    90, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 129, 135, 129, 129, 134, 129, 129, 135, 135, 135,
+    135, 129, 135, 201, 65, 72, 76, 77, 78, 79, 82, 89, 90, 1, 2, 3, 4, 5, 6, 7, 8, 135, 129, 129,
+    129, 135, 135, 129, 129, 129, 198, 69, 74, 75, 77, 79, 90, 1, 2, 3, 4, 5, 129, 134, 129, 135,
+    135, 134, 197, 67, 69, 71, 83, 84, 1, 2, 3, 4, 129, 129, 134, 129, 135, 196, 73, 74, 79, 82, 1,
+    2, 3, 129, 129, 129, 129, 199, 66, 69, 70, 80, 82, 84, 85, 14, 15, 16, 17, 18, 19, 129, 45, 97,
+    108, 116, 45, 118, 97, 114, 105, 97, 110, 116, 135, 129, 129, 129, 129, 135, 135, 196, 75, 78,
+    82, 85, 1, 2, 3, 135, 135, 129, 129, 200, 68, 69, 76, 78, 81, 82, 83, 84, 1, 2, 3, 4, 5, 6, 7,
+    135, 129, 135, 135, 134, 134, 129, 129, 198, 69, 71, 72, 82, 87, 90, 1, 2, 3, 4, 5, 135, 129,
+    135, 135, 134, 129, 195, 77, 79, 80, 1, 2, 135, 134, 135, 48, 49, 129, 200, 65, 66, 73, 75, 84,
+    85, 86, 89, 1, 2, 3, 4, 5, 6, 7, 135, 129, 129, 129, 129, 129, 129, 134, 197, 73, 76, 79, 80,
+    90, 1, 2, 3, 4, 135, 129, 129, 135, 129, 206, 67, 68, 69, 72, 75, 77, 78, 79, 81, 84, 86, 88,
+    89, 90, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 129, 129, 129, 135, 129, 135, 129, 135, 129,
+    135, 133, 135, 129, 135, 200, 65, 69, 72, 75, 76, 82, 84, 89, 1, 2, 3, 4, 5, 6, 7, 135, 135,
+    135, 135, 129, 135, 135, 135,
+]);
+
+fn black_box<T>(dummy: T) -> T {
+    unsafe {
+        let ret = std::ptr::read_volatile(&dummy);
+        std::mem::forget(dummy);
+        ret
+    }
+}
+
+fn main() {
+    // Un-comment to re-generate the bytes (printed to the terminal)
+    // let trie_phf = DATA.iter().copied().collect::<ZeroTriePerfectHash<Vec<_>>>();
+    // assert_eq!(trie_phf.as_bytes(), TRIE_PHF.as_bytes());
+
+    assert_eq!(black_box(TRIE_PHF).get(b"MV"), Some(weekday::FRI));
+}
diff --git a/vendor/zerotrie/src/builder/branch_meta.rs b/vendor/zerotrie/src/builder/branch_meta.rs
new file mode 100644
index 00000000..20db3f22
--- /dev/null
+++ b/vendor/zerotrie/src/builder/branch_meta.rs
@@ -0,0 +1,29 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+/// Intermediate metadata for a branch node under construction.
+#[derive(Debug, Clone, Copy)]
+pub(crate) struct BranchMeta {
+    /// The lead byte for this branch. Formerly it was required to be an ASCII byte, but now
+    /// it can be any byte.
+    pub ascii: u8,
+    /// The size in bytes of the trie data reachable from this branch.
+    pub local_length: usize,
+    /// The size in bytes of this and all later sibling branches.
+    pub cumulative_length: usize,
+    /// The number of later sibling branches, including this.
+    pub count: usize,
+}
+
+impl BranchMeta {
+    /// Creates a new empty [`BranchMeta`].
+    pub const fn default() -> Self {
+        BranchMeta {
+            ascii: 0,
+            cumulative_length: 0,
+            local_length: 0,
+            count: 0,
+        }
+    }
+}
diff --git a/vendor/zerotrie/src/builder/bytestr.rs b/vendor/zerotrie/src/builder/bytestr.rs
new file mode 100644
index 00000000..9910efd7
--- /dev/null
+++ b/vendor/zerotrie/src/builder/bytestr.rs
@@ -0,0 +1,121 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::borrow::Borrow;
+
+#[cfg(feature = "serde")]
+use alloc::boxed::Box;
+
+/// A struct transparent over `[u8]` with convenient helper functions.
+#[repr(transparent)]
+#[derive(PartialEq, Eq, PartialOrd, Ord)]
+pub(crate) struct ByteStr([u8]);
+
+impl ByteStr {
+    pub const fn from_byte_slice_with_value<'a, 'l>(
+        input: &'l [(&'a [u8], usize)],
+    ) -> &'l [(&'a ByteStr, usize)] {
+        // Safety: [u8] and ByteStr have the same layout and invariants
+        unsafe { core::mem::transmute(input) }
+    }
+
+    pub const fn from_str_slice_with_value<'a, 'l>(
+        input: &'l [(&'a str, usize)],
+    ) -> &'l [(&'a ByteStr, usize)] {
+        // Safety: str and ByteStr have the same layout, and ByteStr is less restrictive
+        unsafe { core::mem::transmute(input) }
+    }
+
+    pub fn from_bytes(input: &[u8]) -> &Self {
+        // Safety: [u8] and ByteStr have the same layout and invariants
+        unsafe { core::mem::transmute(input) }
+    }
+
+    #[cfg(feature = "serde")]
+    pub fn from_boxed_bytes(input: Box<[u8]>) -> Box<Self> {
+        // Safety: [u8] and ByteStr have the same layout and invariants
+        unsafe { core::mem::transmute(input) }
+    }
+
+    #[allow(dead_code)] // may want this in the future
+    pub fn from_str(input: &str) -> &Self {
+        Self::from_bytes(input.as_bytes())
+    }
+
+    #[allow(dead_code)] // may want this in the future
+    pub fn empty() -> &'static Self {
+        Self::from_bytes(&[])
+    }
+
+    #[allow(dead_code)] // not used in all features
+    pub const fn as_bytes(&self) -> &[u8] {
+        &self.0
+    }
+
+    pub const fn len(&self) -> usize {
+        self.0.len()
+    }
+
+    #[allow(dead_code)] // not used in all features
+    pub fn is_all_ascii(&self) -> bool {
+        for byte in self.0.iter() {
+            if !byte.is_ascii() {
+                return false;
+            }
+        }
+        true
+    }
+
+    #[allow(dead_code)] // may want this in the future
+    pub(crate) fn byte_at(&self, index: usize) -> Option<u8> {
+        self.0.get(index).copied()
+    }
+
+    /// Returns the byte at the given index, panicking if out of bounds.
+    pub(crate) const fn byte_at_or_panic(&self, index: usize) -> u8 {
+        self.0[index]
+    }
+
+    /// Const function to evaluate `self < other`.
+    pub(crate) const fn is_less_then(&self, other: &Self) -> bool {
+        let mut i = 0;
+        while i < self.len() && i < other.len() {
+            if self.0[i] < other.0[i] {
+                return true;
+            }
+            if self.0[i] > other.0[i] {
+                return false;
+            }
+            i += 1;
+        }
+        self.len() < other.len()
+    }
+
+    /// Const function to evaluate `self[..prefix_len] == other[..prefix_len]`
+    pub(crate) const fn prefix_eq(&self, other: &ByteStr, prefix_len: usize) -> bool {
+        assert!(prefix_len <= self.len());
+        assert!(prefix_len <= other.len());
+        let mut i = 0;
+        while i < prefix_len {
+            if self.0[i] != other.0[i] {
+                return false;
+            }
+            i += 1;
+        }
+        true
+    }
+}
+
+impl Borrow<[u8]> for ByteStr {
+    fn borrow(&self) -> &[u8] {
+        self.as_bytes()
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl Borrow<[u8]> for alloc::boxed::Box<ByteStr> {
+    fn borrow(&self) -> &[u8] {
+        self.as_bytes()
+    }
+}
diff --git a/vendor/zerotrie/src/builder/konst/builder.rs b/vendor/zerotrie/src/builder/konst/builder.rs
new file mode 100644
index 00000000..ecfd9514
--- /dev/null
+++ b/vendor/zerotrie/src/builder/konst/builder.rs
@@ -0,0 +1,330 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::super::branch_meta::BranchMeta;
+use super::super::bytestr::ByteStr;
+use super::store::const_for_each;
+use super::store::ConstArrayBuilder;
+use super::store::ConstLengthsStack;
+use super::store::ConstSlice;
+use crate::error::ZeroTrieBuildError;
+use crate::varint;
+
+/// A low-level builder for ZeroTrieSimpleAscii. Works in const contexts.
+pub(crate) struct ZeroTrieBuilderConst<const N: usize> {
+    data: ConstArrayBuilder<N, u8>,
+}
+
+impl<const N: usize> ZeroTrieBuilderConst<N> {
+    /// Non-const function that returns the current trie data as a slice.
+    #[cfg(feature = "litemap")]
+    pub fn as_bytes(&self) -> &[u8] {
+        self.data.as_const_slice().as_slice()
+    }
+
+    /// Returns the trie data, panicking if the buffer is the wrong size.
+    pub const fn build_or_panic(self) -> [u8; N] {
+        self.data.const_build_or_panic()
+    }
+
+    /// Creates a new empty builder.
+    pub const fn new() -> Self {
+        Self {
+            data: ConstArrayBuilder::new_empty([0; N], N),
+        }
+    }
+
+    /// Prepends an ASCII node to the front of the builder. Returns the new builder
+    /// and the delta in length, which is always 1.
+    #[must_use]
+    const fn prepend_ascii(self, ascii: u8) -> (Self, usize) {
+        if ascii >= 128 {
+            panic!("Non-ASCII not supported in ZeroTrieSimpleAscii");
+        }
+        let data = self.data.const_push_front_or_panic(ascii);
+        (Self { data }, 1)
+    }
+
+    /// Prepends a value node to the front of the builder. Returns the new builder
+    /// and the delta in length, which depends on the size of the varint.
+    #[must_use]
+    const fn prepend_value(self, value: usize) -> (Self, usize) {
+        let mut data = self.data;
+        let varint_array = varint::write_varint_meta3(value);
+        data = data.const_extend_front_or_panic(varint_array.as_const_slice());
+        data = data.const_bitor_assign(0, 0b10000000);
+        (Self { data }, varint_array.len())
+    }
+
+    /// Prepends a branch node to the front of the builder. Returns the new builder
+    /// and the delta in length, which depends on the size of the varint.
+    #[must_use]
+    const fn prepend_branch(self, value: usize) -> (Self, usize) {
+        let mut data = self.data;
+        let varint_array = varint::write_varint_meta2(value);
+        data = data.const_extend_front_or_panic(varint_array.as_const_slice());
+        data = data.const_bitor_assign(0, 0b11000000);
+        (Self { data }, varint_array.len())
+    }
+
+    /// Prepends multiple arbitrary bytes to the front of the builder. Returns the new builder
+    /// and the delta in length, which is the length of the slice.
+    #[must_use]
+    const fn prepend_slice(self, s: ConstSlice<u8>) -> (Self, usize) {
+        let mut data = self.data;
+        let mut i = s.len();
+        while i > 0 {
+            data = data.const_push_front_or_panic(*s.get_or_panic(i - 1));
+            i -= 1;
+        }
+        (Self { data }, s.len())
+    }
+
+    /// Prepends multiple zeros to the front of the builder. Returns the new builder.
+    #[must_use]
+    const fn prepend_n_zeros(self, n: usize) -> Self {
+        let mut data = self.data;
+        let mut i = 0;
+        while i < n {
+            data = data.const_push_front_or_panic(0);
+            i += 1;
+        }
+        Self { data }
+    }
+
+    /// Performs the operation `self[index] |= bits`
+    const fn bitor_assign_at(self, index: usize, bits: u8) -> Self {
+        let mut data = self.data;
+        data = data.const_bitor_assign(index, bits);
+        Self { data }
+    }
+
+    /// Creates a new builder containing the elements in the given slice of key/value pairs.
+    ///
+    /// `K` is the stack size of the lengths stack. If you get an error such as
+    /// "AsciiTrie Builder: Need more stack", try increasing `K`.
+    ///
+    /// # Panics
+    ///
+    /// Panics if the items are not sorted
+    pub const fn from_tuple_slice<'a, const K: usize>(
+        items: &[(&'a ByteStr, usize)],
+    ) -> Result<Self, ZeroTrieBuildError> {
+        let items = ConstSlice::from_slice(items);
+        let mut prev: Option<&'a ByteStr> = None;
+        const_for_each!(items, (ascii_str, _), {
+            match prev {
+                None => (),
+                Some(prev) => {
+                    if !prev.is_less_then(ascii_str) {
+                        panic!("Strings in ByteStr constructor are not sorted");
+                    }
+                }
+            };
+            prev = Some(ascii_str)
+        });
+        Self::from_sorted_const_tuple_slice::<K>(items)
+    }
+
+    /// Creates a new builder containing the elements in the given slice of key/value pairs.
+    ///
+    /// Assumes that the items are sorted. If they are not, unexpected behavior may occur.
+    ///
+    /// `K` is the stack size of the lengths stack. If you get an error such as
+    /// "AsciiTrie Builder: Need more stack", try increasing `K`.
+    pub const fn from_sorted_const_tuple_slice<const K: usize>(
+        items: ConstSlice<(&ByteStr, usize)>,
+    ) -> Result<Self, ZeroTrieBuildError> {
+        let mut result = Self::new();
+        let total_size;
+        (result, total_size) = result.create_or_panic::<K>(items);
+        debug_assert!(total_size == result.data.len());
+        Ok(result)
+    }
+
+    /// The actual builder algorithm. For an explanation, see [`crate::builder`].
+    #[must_use]
+    const fn create_or_panic<const K: usize>(
+        mut self,
+        all_items: ConstSlice<(&ByteStr, usize)>,
+    ) -> (Self, usize) {
+        let mut prefix_len = match all_items.last() {
+            Some(x) => x.0.len(),
+            // Empty slice:
+            None => return (Self::new(), 0),
+        };
+        // Initialize the main loop to point at the last string.
+        let mut lengths_stack = ConstLengthsStack::<K>::new();
+        let mut i = all_items.len() - 1;
+        let mut j = all_items.len();
+        let mut current_len = 0;
+        // Start the main loop.
+        loop {
+            let item_i = all_items.get_or_panic(i);
+            let item_j = all_items.get_or_panic(j - 1);
+            debug_assert!(item_i.0.prefix_eq(item_j.0, prefix_len));
+            // Check if we need to add a value node here.
+            if item_i.0.len() == prefix_len {
+                let len;
+                (self, len) = self.prepend_value(item_i.1);
+                current_len += len;
+            }
+            if prefix_len == 0 {
+                // All done! Leave the main loop.
+                break;
+            }
+            // Reduce the prefix length by 1 and recalculate i and j.
+            prefix_len -= 1;
+            let mut new_i = i;
+            let mut new_j = j;
+            let mut ascii_i = item_i.0.byte_at_or_panic(prefix_len);
+            let mut ascii_j = item_j.0.byte_at_or_panic(prefix_len);
+            debug_assert!(ascii_i == ascii_j);
+            let key_ascii = ascii_i;
+            loop {
+                if new_i == 0 {
+                    break;
+                }
+                let candidate = all_items.get_or_panic(new_i - 1).0;
+                if candidate.len() < prefix_len {
+                    // Too short
+                    break;
+                }
+                if item_i.0.prefix_eq(candidate, prefix_len) {
+                    new_i -= 1;
+                } else {
+                    break;
+                }
+                if candidate.len() == prefix_len {
+                    // A string that equals the prefix does not take part in the branch node.
+                    break;
+                }
+                let candidate = candidate.byte_at_or_panic(prefix_len);
+                if candidate != ascii_i {
+                    ascii_i = candidate;
+                }
+            }
+            loop {
+                if new_j == all_items.len() {
+                    break;
+                }
+                let candidate = all_items.get_or_panic(new_j).0;
+                if candidate.len() < prefix_len {
+                    // Too short
+                    break;
+                }
+                if item_j.0.prefix_eq(candidate, prefix_len) {
+                    new_j += 1;
+                } else {
+                    break;
+                }
+                if candidate.len() == prefix_len {
+                    panic!("A shorter string should be earlier in the sequence");
+                }
+                let candidate = candidate.byte_at_or_panic(prefix_len);
+                if candidate != ascii_j {
+                    ascii_j = candidate;
+                }
+            }
+            // If there are no different bytes at this prefix level, we can add an ASCII or Span
+            // node and then continue to the next iteration of the main loop.
+            if ascii_i == key_ascii && ascii_j == key_ascii {
+                let len;
+                (self, len) = self.prepend_ascii(ascii_i);
+                current_len += len;
+                debug_assert!(i == new_i || i == new_i + 1);
+                i = new_i;
+                debug_assert!(j == new_j);
+                continue;
+            }
+            // If i and j changed, we are a target of a branch node.
+            if ascii_j == key_ascii {
+                // We are the _last_ target of a branch node.
+                lengths_stack = lengths_stack.push_or_panic(BranchMeta {
+                    ascii: key_ascii,
+                    cumulative_length: current_len,
+                    local_length: current_len,
+                    count: 1,
+                });
+            } else {
+                // We are the _not the last_ target of a branch node.
+                let BranchMeta {
+                    cumulative_length,
+                    count,
+                    ..
+                } = lengths_stack.peek_or_panic();
+                lengths_stack = lengths_stack.push_or_panic(BranchMeta {
+                    ascii: key_ascii,
+                    cumulative_length: cumulative_length + current_len,
+                    local_length: current_len,
+                    count: count + 1,
+                });
+            }
+            if ascii_i != key_ascii {
+                // We are _not the first_ target of a branch node.
+                // Set the cursor to the previous string and continue the loop.
+                j = i;
+                i -= 1;
+                prefix_len = all_items.get_or_panic(i).0.len();
+                current_len = 0;
+                continue;
+            }
+            // Branch (first)
+            let (total_length, total_count) = {
+                let BranchMeta {
+                    cumulative_length,
+                    count,
+                    ..
+                } = lengths_stack.peek_or_panic();
+                (cumulative_length, count)
+            };
+            let branch_metas;
+            (lengths_stack, branch_metas) = lengths_stack.pop_many_or_panic(total_count);
+            let original_keys = branch_metas.map_to_ascii_bytes();
+            // Write out the offset table
+            current_len = total_length;
+            const USIZE_BITS: usize = core::mem::size_of::<usize>() * 8;
+            let w = (USIZE_BITS - (total_length.leading_zeros() as usize) - 1) / 8;
+            if w > 3 {
+                panic!("ZeroTrie capacity exceeded");
+            }
+            let mut k = 0;
+            while k <= w {
+                self = self.prepend_n_zeros(total_count - 1);
+                current_len += total_count - 1;
+                let mut l = 0;
+                let mut length_to_write = 0;
+                while l < total_count {
+                    let BranchMeta { local_length, .. } = *branch_metas
+                        .as_const_slice()
+                        .get_or_panic(total_count - l - 1);
+                    let mut adjusted_length = length_to_write;
+                    let mut m = 0;
+                    while m < k {
+                        adjusted_length >>= 8;
+                        m += 1;
+                    }
+                    if l > 0 {
+                        self = self.bitor_assign_at(l - 1, adjusted_length as u8);
+                    }
+                    l += 1;
+                    length_to_write += local_length;
+                }
+                k += 1;
+            }
+            // Write out the lookup table
+            assert!(0 < total_count && total_count <= 256);
+            let branch_value = (w << 8) + (total_count & 0xff);
+            let slice_len;
+            (self, slice_len) = self.prepend_slice(original_keys.as_const_slice());
+            let branch_len;
+            (self, branch_len) = self.prepend_branch(branch_value);
+            current_len += slice_len + branch_len;
+            i = new_i;
+            j = new_j;
+        }
+        assert!(lengths_stack.is_empty());
+        (self, current_len)
+    }
+}
diff --git a/vendor/zerotrie/src/builder/konst/mod.rs b/vendor/zerotrie/src/builder/konst/mod.rs
new file mode 100644
index 00000000..275af4bf
--- /dev/null
+++ b/vendor/zerotrie/src/builder/konst/mod.rs
@@ -0,0 +1,9 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod builder;
+mod store;
+
+pub(crate) use builder::*;
+pub(crate) use store::ConstArrayBuilder;
diff --git a/vendor/zerotrie/src/builder/konst/store.rs b/vendor/zerotrie/src/builder/konst/store.rs
new file mode 100644
index 00000000..f5885177
--- /dev/null
+++ b/vendor/zerotrie/src/builder/konst/store.rs
@@ -0,0 +1,341 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module contains internal collections for the const builder.
+
+use super::super::branch_meta::BranchMeta;
+
+/// A const-friendly slice type. It is backed by a full slice but is primarily intended
+/// to represent subslices of the full slice. We need this only because we can't take
+/// subslices in const Rust.
+#[derive(Debug, Copy, Clone)]
+pub(crate) struct ConstSlice<'a, T> {
+    /// The full slice.
+    full_slice: &'a [T],
+    /// The start index of the slice represented by this [`ConstSlice`].
+    start: usize,
+    /// The non-inclusive end index of the slice represented by this [`ConstSlice`].
+    limit: usize,
+}
+
+impl<'a, T> ConstSlice<'a, T> {
+    /// Creates a [`ConstSlice`] representing an entire slice.
+    pub const fn from_slice(other: &'a [T]) -> Self {
+        ConstSlice {
+            full_slice: other,
+            start: 0,
+            limit: other.len(),
+        }
+    }
+
+    /// Creates a [`ConstSlice`] with the given start and limit.
+    pub const fn from_manual_slice(full_slice: &'a [T], start: usize, limit: usize) -> Self {
+        ConstSlice {
+            full_slice,
+            start,
+            limit,
+        }
+    }
+
+    /// Returns the length of the [`ConstSlice`].
+    pub const fn len(&self) -> usize {
+        self.limit - self.start
+    }
+
+    /// Gets the element at `index`, panicking if not present.
+    pub const fn get_or_panic(&self, index: usize) -> &T {
+        &self.full_slice[index + self.start]
+    }
+
+    /// Gets the first element or `None` if empty.
+    #[cfg(test)]
+    pub const fn first(&self) -> Option<&T> {
+        if self.len() == 0 {
+            None
+        } else {
+            Some(self.get_or_panic(0))
+        }
+    }
+
+    /// Gets the last element or `None` if empty.
+    pub const fn last(&self) -> Option<&T> {
+        if self.len() == 0 {
+            None
+        } else {
+            Some(self.get_or_panic(self.len() - 1))
+        }
+    }
+
+    /// Gets a subslice of this slice.
+    #[cfg(test)]
+    pub const fn get_subslice_or_panic(
+        &self,
+        new_start: usize,
+        new_limit: usize,
+    ) -> ConstSlice<'a, T> {
+        assert!(new_start <= new_limit);
+        assert!(new_limit <= self.len());
+        ConstSlice {
+            full_slice: self.full_slice,
+            start: self.start + new_start,
+            limit: self.start + new_limit,
+        }
+    }
+
+    /// Non-const function that returns this [`ConstSlice`] as a regular slice.
+    #[cfg(any(test, feature = "alloc"))]
+    pub fn as_slice(&self) -> &'a [T] {
+        &self.full_slice[self.start..self.limit]
+    }
+}
+
+impl<'a, T> From<&'a [T]> for ConstSlice<'a, T> {
+    fn from(other: &'a [T]) -> Self {
+        Self::from_slice(other)
+    }
+}
+
+/// A const-friendly mutable data structure backed by an array.
+#[derive(Debug, Copy, Clone)]
+pub(crate) struct ConstArrayBuilder<const N: usize, T> {
+    full_array: [T; N],
+    start: usize,
+    limit: usize,
+}
+
+impl<const N: usize, T: Default> Default for ConstArrayBuilder<N, T> {
+    fn default() -> Self {
+        Self::new_empty([(); N].map(|_| Default::default()), 0)
+    }
+}
+
+impl<const N: usize, T> ConstArrayBuilder<N, T> {
+    /// Creates a new, empty builder of the given size. `cursor` indicates where in the
+    /// array new elements will be inserted first. Since we use a lot of prepend operations,
+    /// it is common to set `cursor` to `N`.
+    pub const fn new_empty(full_array: [T; N], cursor: usize) -> Self {
+        assert!(cursor <= N);
+        Self {
+            full_array,
+            start: cursor,
+            limit: cursor,
+        }
+    }
+
+    /// Creates a new builder with some initial content in `[start, limit)`.
+    pub const fn from_manual_slice(full_array: [T; N], start: usize, limit: usize) -> Self {
+        assert!(start <= limit);
+        assert!(limit <= N);
+        Self {
+            full_array,
+            start,
+            limit,
+        }
+    }
+
+    /// Returns the number of initialized elements in the builder.
+    pub const fn len(&self) -> usize {
+        self.limit - self.start
+    }
+
+    /// Whether there are no initialized elements in the builder.
+    #[allow(dead_code)]
+    pub const fn is_empty(&self) -> bool {
+        self.len() == 0
+    }
+
+    /// Returns the initialized elements as a [`ConstSlice`].
+    pub const fn as_const_slice(&self) -> ConstSlice<T> {
+        ConstSlice::from_manual_slice(&self.full_array, self.start, self.limit)
+    }
+
+    /// Non-const function that returns a slice of the initialized elements.
+    #[cfg(any(test, feature = "alloc"))]
+    pub fn as_slice(&self) -> &[T] {
+        &self.full_array[self.start..self.limit]
+    }
+}
+
+// Certain functions that involve dropping `T` require that it be `Copy`
+impl<const N: usize, T: Copy> ConstArrayBuilder<N, T> {
+    /// Takes a fully initialized builder as an array. Panics if the builder is not
+    /// fully initialized.
+    pub const fn const_build_or_panic(self) -> [T; N] {
+        if self.start != 0 || self.limit != N {
+            let actual_len = self.limit - self.start;
+            const PREFIX: &[u8; 31] = b"Buffer too large. Size needed: ";
+            let len_bytes: [u8; PREFIX.len() + crate::helpers::MAX_USIZE_LEN_AS_DIGITS] =
+                crate::helpers::const_fmt_int(*PREFIX, actual_len);
+            let Ok(len_str) = core::str::from_utf8(&len_bytes) else {
+                unreachable!()
+            };
+            panic!("{}", len_str);
+        }
+        self.full_array
+    }
+
+    /// Prepends an element to the front of the builder, panicking if there is no room.
+    pub const fn const_push_front_or_panic(mut self, value: T) -> Self {
+        if self.start == 0 {
+            panic!("Buffer too small");
+        }
+        self.start -= 1;
+        self.full_array[self.start] = value;
+        self
+    }
+
+    /// Prepends multiple elements to the front of the builder, panicking if there is no room.
+    pub const fn const_extend_front_or_panic(mut self, other: ConstSlice<T>) -> Self {
+        if self.start < other.len() {
+            panic!("Buffer too small");
+        }
+        self.start -= other.len();
+        let mut i = self.start;
+        const_for_each!(other, byte, {
+            self.full_array[i] = *byte;
+            i += 1;
+        });
+        self
+    }
+}
+
+impl<const N: usize> ConstArrayBuilder<N, u8> {
+    /// Specialized function that performs `self[index] |= bits`
+    pub const fn const_bitor_assign(mut self, index: usize, bits: u8) -> Self {
+        self.full_array[self.start + index] |= bits;
+        self
+    }
+}
+
+impl<const N: usize, T: Copy> ConstArrayBuilder<N, T> {
+    /// Swaps the elements at positions `i` and `j`.
+    #[cfg(feature = "alloc")]
+    pub fn swap_or_panic(mut self, i: usize, j: usize) -> Self {
+        self.full_array.swap(self.start + i, self.start + j);
+        self
+    }
+}
+
+/// Evaluates a block over each element of a const slice. Takes three arguments:
+///
+/// 1. Expression that resolves to the [`ConstSlice`].
+/// 2. Token that will be assigned the value of the element.
+/// 3. Block to evaluate for each element.
+macro_rules! const_for_each {
+    ($safe_const_slice:expr, $item:tt, $inner:expr) => {{
+        let mut i = 0;
+        while i < $safe_const_slice.len() {
+            let $item = $safe_const_slice.get_or_panic(i);
+            $inner;
+            i += 1;
+        }
+    }};
+}
+
+pub(crate) use const_for_each;
+
+/// A data structure that holds up to K [`BranchMeta`] items.
+///
+/// Note: It should be possible to store the required data in the builder buffer itself,
+/// which would eliminate the need for this helper struct and the limit it imposes.
+pub(crate) struct ConstLengthsStack<const K: usize> {
+    data: [Option<BranchMeta>; K],
+    idx: usize,
+}
+
+impl<const K: usize> core::fmt::Debug for ConstLengthsStack<K> {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        self.as_slice().fmt(f)
+    }
+}
+
+impl<const K: usize> ConstLengthsStack<K> {
+    /// Creates a new empty [`ConstLengthsStack`].
+    pub const fn new() -> Self {
+        Self {
+            data: [None; K],
+            idx: 0,
+        }
+    }
+
+    /// Returns whether the stack is empty.
+    pub const fn is_empty(&self) -> bool {
+        self.idx == 0
+    }
+
+    /// Adds a [`BranchMeta`] to the stack, panicking if there is no room.
+    #[must_use]
+    pub const fn push_or_panic(mut self, meta: BranchMeta) -> Self {
+        if self.idx >= K {
+            panic!(concat!(
+                "AsciiTrie Builder: Need more stack (max ",
+                stringify!(K),
+                ")"
+            ));
+        }
+        self.data[self.idx] = Some(meta);
+        self.idx += 1;
+        self
+    }
+
+    /// Returns a copy of the [`BranchMeta`] on the top of the stack, panicking if
+    /// the stack is empty.
+    pub const fn peek_or_panic(&self) -> BranchMeta {
+        if self.idx == 0 {
+            panic!("AsciiTrie Builder: Attempted to peek from an empty stack");
+        }
+        self.get_or_panic(0)
+    }
+
+    /// Returns a copy of the [`BranchMeta`] at the specified index.
+    const fn get_or_panic(&self, index: usize) -> BranchMeta {
+        if self.idx <= index {
+            panic!("AsciiTrie Builder: Attempted to get too deep in a stack");
+        }
+        match self.data[self.idx - index - 1] {
+            Some(x) => x,
+            None => unreachable!(),
+        }
+    }
+
+    /// Removes many [`BranchMeta`]s from the stack, returning them in a [`ConstArrayBuilder`].
+    pub const fn pop_many_or_panic(
+        mut self,
+        len: usize,
+    ) -> (Self, ConstArrayBuilder<256, BranchMeta>) {
+        debug_assert!(len <= 256);
+        let mut result = ConstArrayBuilder::new_empty([BranchMeta::default(); 256], 256);
+        let mut ix = 0;
+        loop {
+            if ix == len {
+                break;
+            }
+            let i = self.idx - ix - 1;
+            result = result.const_push_front_or_panic(match self.data[i] {
+                Some(x) => x,
+                None => panic!("Not enough items in the ConstLengthsStack"),
+            });
+            ix += 1;
+        }
+        self.idx -= len;
+        (self, result)
+    }
+
+    /// Non-const function that returns the initialized elements as a slice.
+    fn as_slice(&self) -> &[Option<BranchMeta>] {
+        &self.data[0..self.idx]
+    }
+}
+
+impl<const K: usize> ConstArrayBuilder<K, BranchMeta> {
+    /// Converts this builder-array of [`BranchMeta`] to one of the `ascii` fields.
+    pub const fn map_to_ascii_bytes(&self) -> ConstArrayBuilder<K, u8> {
+        let mut result = ConstArrayBuilder::new_empty([0; K], K);
+        let self_as_slice = self.as_const_slice();
+        const_for_each!(self_as_slice, value, {
+            result = result.const_push_front_or_panic(value.ascii);
+        });
+        result
+    }
+}
diff --git a/vendor/zerotrie/src/builder/litemap.rs b/vendor/zerotrie/src/builder/litemap.rs
new file mode 100644
index 00000000..530d5999
--- /dev/null
+++ b/vendor/zerotrie/src/builder/litemap.rs
@@ -0,0 +1,54 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Impls for functions gated on the "litemap" feature.
+
+use super::konst::*;
+use crate::builder::bytestr::ByteStr;
+use crate::error::ZeroTrieBuildError;
+use crate::zerotrie::ZeroTrieSimpleAscii;
+use crate::ZeroTrie;
+use alloc::borrow::Borrow;
+use alloc::vec::Vec;
+use litemap::LiteMap;
+
+impl ZeroTrieSimpleAscii<Vec<u8>> {
+    #[doc(hidden)]
+    pub fn try_from_litemap_with_const_builder<'a, S>(
+        items: &LiteMap<&'a [u8], usize, S>,
+    ) -> Result<Self, ZeroTrieBuildError>
+    where
+        S: litemap::store::StoreSlice<&'a [u8], usize, Slice = [(&'a [u8], usize)]>,
+    {
+        let tuples = items.as_slice();
+        let byte_str_slice = ByteStr::from_byte_slice_with_value(tuples);
+        ZeroTrieBuilderConst::<10000>::from_sorted_const_tuple_slice::<100>(byte_str_slice.into())
+            .map(|s| Self {
+                store: s.as_bytes().to_vec(),
+            })
+    }
+}
+
+impl<K, S> TryFrom<&LiteMap<K, usize, S>> for ZeroTrie<Vec<u8>>
+where
+    // Borrow, not AsRef, because we rely on Ord being the same. Unfortunately
+    // this means `LiteMap<&str, usize>` does not work.
+    K: Borrow<[u8]>,
+    S: litemap::store::StoreSlice<K, usize, Slice = [(K, usize)]>,
+{
+    type Error = ZeroTrieBuildError;
+    fn try_from(items: &LiteMap<K, usize, S>) -> Result<Self, ZeroTrieBuildError> {
+        let byte_litemap = items.to_borrowed_keys::<[u8], Vec<_>>();
+        let byte_slice = byte_litemap.as_slice();
+        let byte_str_slice = ByteStr::from_byte_slice_with_value(byte_slice);
+        Self::try_from_tuple_slice(byte_str_slice)
+    }
+}
+
+// TODO(MSRV 1.83): Make this more infallible by calculating the required length,
+// heap-allocating the required capacity, and pointing ConstAsciiTrieBuilderStore
+// to the heap buffer.
+// ```
+// const fn write_to_mut_buffer(buf: &mut [u8]) { buf[0] = 0; }
+// ```
diff --git a/vendor/zerotrie/src/builder/mod.rs b/vendor/zerotrie/src/builder/mod.rs
new file mode 100644
index 00000000..c756c128
--- /dev/null
+++ b/vendor/zerotrie/src/builder/mod.rs
@@ -0,0 +1,298 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! # ZeroTrie Builder
+//!
+//! There are two implementations of the ZeroTrie Builder:
+//!
+//! - [konst::ZeroTrieBuilderConst] allows for human-readable const construction
+//! - [nonconst::ZeroTrieBuilder] has the full feaure set but requires `alloc`
+//!
+//! The two builders follow the same algorithm but have different capabilities.
+//!
+//! ## Builder Algorithm Overview
+//!
+//! The tries are built backwards, from the last node to the first node. The key step of the
+//! algorithm is **determining what is the next node to prepend.**
+//!
+//! In the simple case of [`ZeroTrieSimpleAscii`], all nodes are binary-search, so if the input
+//! strings are provided in lexicographic order, there is a simple, deterministic method for
+//! identifying the next node. This insight is what enables us to make the const builder.
+//!
+//! The builder works with the following intermediate state variables:
+//!
+//! - `prefix_len` indicates the byte index we are currently processing.
+//! - `i` and `j` bracket a window of strings in the input that share the same prefix.
+//! - `current_len` is the length in bytes of the current self-contained trie.
+//! - `lengths_stack` contains metadata for branch nodes.
+//!
+//! What follows is a verbal explanation of the build steps for a trie containing:
+//!
+//! - "" → 11
+//! - "ad" → 22
+//! - "adef" → 33
+//! - "adghk" → 44
+//!
+//! When a node is prepended, it is shown in **boldface**.
+//!
+//! 1. Initialize the builder by setting `i=3`, `j=4`, `prefix_len=5` (the last string),
+//!    `current_len=0`, and `lengths_stack` empty. Start the main loop.
+//! 2. Top of loop. The string at `i` is equal in length to `prefix_len`, so we prepend
+//!    our first node: a **value node 44**, which requires a 2-byte varint. Increase
+//!    `current_len` to 2.
+//! 3. Reduce `prefix_len` to 4, read our `key_ascii="k"`, and recalculate `i` and `j`
+//!    _(this calculation is a long chunk of code in the builder impls)_. Since there is no
+//!    other string with the prefix "adgh", `i` and `j` stay the same, we prepend an
+//!    **ASCII node "k"**, increase `current_len` to 3, and continue the main loop.
+//! 4. Top of loop. The string at `i` is of length 5, but `prefix_len` is 4, so there is
+//!    no value node to prepend.
+//! 5. Reduce `prefix_len` to 3, read our `key_ascii="h"`, and recalculate `i` and `j`.
+//!    There are no other strings sharing the prefix "abg", so we prepend an
+//!    **ASCII node "h"**, increase `current_len` to 4, and continue the main loop.
+//! 6. Top of loop. There is still no value node to prepend.
+//! 7. Reduce `prefix_len` to 2, read our `key_ascii="g"`, and recalculate `i` and `j`.
+//!    We find that `i=1` and `j=4`, the range of strings sharing the prefix "ad". Since
+//!    `i` or `j` changed, proceed to evaluate the branch node.
+//! 8. The last branch byte `ascii_j` for this prefix is "g", which is the same as `key_ascii`,
+//!    so we are the _last_ target of a branch node. Push an entry onto `lengths_stack`:
+//!    `BranchMeta { ascii: "g", cumulative_length: 4, local_length: 4, count: 1 }`.
+//! 9. The first branch byte `ascii_i` for this prefix is "e", which is NOT equal to `key_ascii`,
+//!    so we are _not the first_ target of a branch node. We therefore start evaluating the
+//!    string preceding where we were at the top of the current loop. We set `i=2`, `j=3`,
+//!    `prefix_len=4` (length of the string at `i`), and continue the main loop.
+//! 10. Top of loop. Since the string at `i` is equal in length to `prefix_len`, we prepend a
+//!     **value node 33** (which requires a 2-byte varint) and increase `current_len` to 2.
+//! 11. Reduce `prefix_len` to 3, read our `key_ascii="f"`, and recalculate `i` and `j`.
+//!     They stay the same, so we prepend an **ASCII node "f"**, increase `current_len` to 3,
+//!     and continue the main loop.
+//! 12. Top of loop. No value node this time.
+//! 13. Reduce `prefix_len` to 2, read our `key_ascii="e"`, and recalculate `i` and `j`.
+//!     They go back to `i=1` and `j=4`.
+//! 14. The last branch byte `ascii_j` for this prefix is "g", which is NOT equal to `key_ascii`,
+//!     so we are _not the last_ target of a branch node. We peek at the entry at the front of
+//!     the lengths stack and use it to push another entry onto the stack:
+//!     `BranchMeta { ascii: "e", cumulative_length: 7, local_length: 3, count: 2 }`
+//! 15. The first branch byte `ascii_i` for this prefix is "e", which is the same as `key_ascii`,
+//!     wo we are the _first_ target of a branch node. We can therefore proceed to prepend the
+//!     metadata for the branch node. We peek at the top of the stack and find that there are 2
+//!     tries reachable from this branch and they have a total byte length of 5. We then pull off
+//!     2 entries from the stack into a local variable `branch_metas`. From here, we write out
+//!     the **offset table**, **lookup table**, and **branch head node**, which are determined
+//!     from the metadata entries. We set `current_len` to the length of the two tries plus the
+//!     metadata, which happens to be 11. Then we return to the top of the main loop.
+//! 16. Top of loop. The string at `i` is length 2, which is the same as `prefix_len`, so we
+//!     prepend a **value node 22** (2-byte varint) and increase `current_len` to 13.
+//! 17. Reduce `prefix_len` to 1, read our `key_ascii="d"`, and recalculate `i` and `j`.
+//!     They stay the same, so we prepend an **ASCII node "d"**, increase `current_len` to 14,
+//!     and continue the main loop.
+//! 18. Top of loop. No value node this time.
+//! 19. Reduce `prefix_len` to 0, read our `key_ascii="a"`, and recalculate `i` and `j`.
+//!     They change to `i=0` and `j=4`, since all strings have the empty string as a prefix.
+//!     However, `ascii_i` and `ascii_j` both equal `key_ascii`, so we prepend **ASCII node "a"**,
+//!     increase `current_len` to 15, and continue the main loop.
+//! 16. Top of loop. The string at `i` is length 0, which is the same as `prefix_len`, so we
+//!     prepend a **value node 11** and increase `current_len` to 16.
+//! 17. We can no longer reduce `prefix_len`, so our trie is complete.
+//!
+//! ## Perfect Hash Reordering
+//!
+//! When the PHF is added to the mix, the main change is that the strings are no longer in sorted
+//! order when they are in the trie. To resolve this issue, when adding a branch node, the target
+//! tries are rearranged in-place in the buffer to be in the correct order for the PHF.
+//!
+//! ## Example
+//!
+//! Here is the output of the trie described above.
+//!
+//! ```
+//! use zerotrie::ZeroTrieSimpleAscii;
+//!
+//! const DATA: [(&str, usize); 4] =
+//!     [("", 11), ("ad", 22), ("adef", 33), ("adghk", 44)];
+//!
+//! // As demonstrated above, the required capacity for this trie is 16 bytes
+//! const TRIE: ZeroTrieSimpleAscii<[u8; 16]> =
+//!     ZeroTrieSimpleAscii::from_sorted_str_tuples(&DATA);
+//!
+//! assert_eq!(
+//!     TRIE.as_bytes(),
+//!     &[
+//!         0x8B, // value node 11
+//!         b'a', // ASCII node 'a'
+//!         b'd', // ASCII node 'd'
+//!         0x90, // value node 22 lead byte
+//!         0x06, // value node 22 trail byte
+//!         0xC2, // branch node 2
+//!         b'e', // first target of branch
+//!         b'g', // second target of branch
+//!         3,    // offset
+//!         b'f', // ASCII node 'f'
+//!         0x90, // value node 33 lead byte
+//!         0x11, // value node 33 trail byte
+//!         b'h', // ASCII node 'h'
+//!         b'k', // ASCII node 'k'
+//!         0x90, // value node 44 lead byte
+//!         0x1C, // value node 44 trail byte
+//!     ]
+//! );
+//!
+//! assert_eq!(TRIE.get(b""), Some(11));
+//! assert_eq!(TRIE.get(b"ad"), Some(22));
+//! assert_eq!(TRIE.get(b"adef"), Some(33));
+//! assert_eq!(TRIE.get(b"adghk"), Some(44));
+//! assert_eq!(TRIE.get(b"unknown"), None);
+//! ```
+
+mod branch_meta;
+pub(crate) mod bytestr;
+pub(crate) mod konst;
+#[cfg(feature = "litemap")]
+mod litemap;
+#[cfg(feature = "alloc")]
+pub(crate) mod nonconst;
+
+use bytestr::ByteStr;
+
+use super::ZeroTrieSimpleAscii;
+
+impl<const N: usize> ZeroTrieSimpleAscii<[u8; N]> {
+    /// **Const Constructor:** Creates an [`ZeroTrieSimpleAscii`] from a sorted slice of keys and values.
+    ///
+    /// This function needs to know the exact length of the resulting trie at compile time. To
+    /// figure out `N`, first set `N` to be too large (say 0xFFFF), then look at the resulting
+    /// compile error which will tell you how to set `N`, like this:
+    ///
+    /// > the evaluated program panicked at 'Buffer too large. Size needed: 17'
+    ///
+    /// That error message says you need to set `N` to 17.
+    ///
+    /// Also see [`Self::from_sorted_str_tuples`].
+    ///
+    /// # Panics
+    ///
+    /// Panics if `items` is not sorted or if `N` is not correct.
+    ///
+    /// # Examples
+    ///
+    /// Create a `const` ZeroTrieSimpleAscii at compile time:
+    ///
+    /// ```
+    /// use zerotrie::ZeroTrieSimpleAscii;
+    ///
+    /// // The required capacity for this trie happens to be 17 bytes
+    /// const TRIE: ZeroTrieSimpleAscii<[u8; 17]> =
+    ///     ZeroTrieSimpleAscii::from_sorted_u8_tuples(&[
+    ///         (b"bar", 2),
+    ///         (b"bazzoo", 3),
+    ///         (b"foo", 1),
+    ///     ]);
+    ///
+    /// assert_eq!(TRIE.get(b"foo"), Some(1));
+    /// assert_eq!(TRIE.get(b"bar"), Some(2));
+    /// assert_eq!(TRIE.get(b"bazzoo"), Some(3));
+    /// assert_eq!(TRIE.get(b"unknown"), None);
+    /// ```
+    ///
+    /// Panics if strings are not sorted:
+    ///
+    /// ```compile_fail
+    /// # use zerotrie::ZeroTrieSimpleAscii;
+    /// const TRIE: ZeroTrieSimpleAscii<[u8; 17]> = ZeroTrieSimpleAscii::from_sorted_u8_tuples(&[
+    ///     (b"foo", 1),
+    ///     (b"bar", 2),
+    ///     (b"bazzoo", 3),
+    /// ]);
+    /// ```
+    ///
+    /// Panics if capacity is too small:
+    ///
+    /// ```compile_fail
+    /// # use zerotrie::ZeroTrieSimpleAscii;
+    /// const TRIE: ZeroTrieSimpleAscii<[u8; 15]> = ZeroTrieSimpleAscii::from_sorted_u8_tuples(&[
+    ///     (b"bar", 2),
+    ///     (b"bazzoo", 3),
+    ///     (b"foo", 1),
+    /// ]);
+    /// ```
+    ///
+    /// Panics if capacity is too large:
+    ///
+    /// ```compile_fail
+    /// # use zerotrie::ZeroTrieSimpleAscii;
+    /// const TRIE: ZeroTrieSimpleAscii<[u8; 20]> = ZeroTrieSimpleAscii::from_sorted_u8_tuples(&[
+    ///     (b"bar", 2),
+    ///     (b"bazzoo", 3),
+    ///     (b"foo", 1),
+    /// ]);
+    /// ```
+    pub const fn from_sorted_u8_tuples(tuples: &[(&[u8], usize)]) -> Self {
+        use konst::*;
+        let byte_str_slice = ByteStr::from_byte_slice_with_value(tuples);
+        let result = ZeroTrieBuilderConst::<N>::from_tuple_slice::<100>(byte_str_slice);
+        match result {
+            Ok(s) => Self::from_store(s.build_or_panic()),
+            Err(_) => panic!("Failed to build ZeroTrie"),
+        }
+    }
+
+    /// **Const Constructor:** Creates an [`ZeroTrieSimpleAscii`] from a sorted slice of keys and values.
+    ///
+    /// This function needs to know the exact length of the resulting trie at compile time. To
+    /// figure out `N`, first set `N` to be too large (say 0xFFFF), then look at the resulting
+    /// compile error which will tell you how to set `N`, like this:
+    ///
+    /// > the evaluated program panicked at 'Buffer too large. Size needed: 17'
+    ///
+    /// That error message says you need to set `N` to 17.
+    ///
+    /// Also see [`Self::from_sorted_u8_tuples`].
+    ///
+    /// # Panics
+    ///
+    /// Panics if `items` is not sorted, if `N` is not correct, or if any of the strings contain
+    /// non-ASCII characters.
+    ///
+    /// # Examples
+    ///
+    /// Create a `const` ZeroTrieSimpleAscii at compile time:
+    ///
+    /// ```
+    /// use zerotrie::ZeroTrieSimpleAscii;
+    ///
+    /// // The required capacity for this trie happens to be 17 bytes
+    /// const TRIE: ZeroTrieSimpleAscii<[u8; 17]> =
+    ///     ZeroTrieSimpleAscii::from_sorted_str_tuples(&[
+    ///         ("bar", 2),
+    ///         ("bazzoo", 3),
+    ///         ("foo", 1),
+    ///     ]);
+    ///
+    /// assert_eq!(TRIE.get(b"foo"), Some(1));
+    /// assert_eq!(TRIE.get(b"bar"), Some(2));
+    /// assert_eq!(TRIE.get(b"bazzoo"), Some(3));
+    /// assert_eq!(TRIE.get(b"unknown"), None);
+    /// ```
+    ///
+    /// Panics if the strings are not ASCII:
+    ///
+    /// ```compile_fail
+    /// # use zerotrie::ZeroTrieSimpleAscii;
+    /// const TRIE: ZeroTrieSimpleAscii<[u8; 100]> = ZeroTrieSimpleAscii::from_sorted_str_tuples(&[
+    ///     ("bár", 2),
+    ///     ("båzzöo", 3),
+    ///     ("foo", 1),
+    /// ]);
+    /// ```
+    pub const fn from_sorted_str_tuples(tuples: &[(&str, usize)]) -> Self {
+        use konst::*;
+        let byte_str_slice = ByteStr::from_str_slice_with_value(tuples);
+        // 100 is the value of `K`, the size of the lengths stack. If compile errors are
+        // encountered, this number may need to be increased.
+        let result = ZeroTrieBuilderConst::<N>::from_tuple_slice::<100>(byte_str_slice);
+        match result {
+            Ok(s) => Self::from_store(s.build_or_panic()),
+            Err(_) => panic!("Failed to build ZeroTrie"),
+        }
+    }
+}
diff --git a/vendor/zerotrie/src/builder/nonconst/builder.rs b/vendor/zerotrie/src/builder/nonconst/builder.rs
new file mode 100644
index 00000000..b42ce80e
--- /dev/null
+++ b/vendor/zerotrie/src/builder/nonconst/builder.rs
@@ -0,0 +1,418 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::cmp::Ordering;
+
+use super::super::branch_meta::BranchMeta;
+use super::store::NonConstLengthsStack;
+use super::store::TrieBuilderStore;
+use crate::builder::bytestr::ByteStr;
+use crate::byte_phf::PerfectByteHashMapCacheOwned;
+use crate::error::ZeroTrieBuildError;
+use crate::options::*;
+use crate::varint;
+use alloc::borrow::Cow;
+use alloc::vec::Vec;
+
+/// A low-level builder for ZeroTrie. Supports all options.
+pub(crate) struct ZeroTrieBuilder<S> {
+    data: S,
+    phf_cache: PerfectByteHashMapCacheOwned,
+    options: ZeroTrieBuilderOptions,
+}
+
+impl<S: TrieBuilderStore> ZeroTrieBuilder<S> {
+    /// Returns the trie data as a `Vec<u8>`.
+    pub fn to_bytes(&self) -> Vec<u8> {
+        self.data.atbs_to_bytes()
+    }
+
+    /// Prepends a byte value to the front of the builder. If it is ASCII, an ASCII
+    /// node is prepended. If it is non-ASCII, if there is already a span node at
+    /// the front, we modify the span node to add the new byte; otherwise, we create
+    /// a new span node. Returns the delta in length, which is either 1 or 2.
+    fn prepend_ascii(&mut self, ascii: u8) -> Result<usize, ZeroTrieBuildError> {
+        if ascii <= 127 {
+            self.data.atbs_push_front(ascii);
+            Ok(1)
+        } else if matches!(self.options.ascii_mode, AsciiMode::BinarySpans) {
+            if let Some(old_front) = self.data.atbs_pop_front() {
+                let old_byte_len = self.data.atbs_len() + 1;
+                if old_front & 0b11100000 == 0b10100000 {
+                    // Extend an existing span
+                    // Unwrap OK: there is a varint at this location in the buffer
+                    #[allow(clippy::unwrap_used)]
+                    let old_span_size =
+                        varint::try_read_varint_meta3_from_tstore(old_front, &mut self.data)
+                            .unwrap();
+                    self.data.atbs_push_front(ascii);
+                    let varint_array = varint::write_varint_meta3(old_span_size + 1);
+                    self.data.atbs_extend_front(varint_array.as_slice());
+                    self.data.atbs_bitor_assign(0, 0b10100000);
+                    let new_byte_len = self.data.atbs_len();
+                    return Ok(new_byte_len - old_byte_len);
+                } else {
+                    self.data.atbs_push_front(old_front);
+                }
+            }
+            // Create a new span
+            self.data.atbs_push_front(ascii);
+            self.data.atbs_push_front(0b10100001);
+            Ok(2)
+        } else {
+            Err(ZeroTrieBuildError::NonAsciiError)
+        }
+    }
+
+    /// Prepends a value node to the front of the builder. Returns the
+    /// delta in length, which depends on the size of the varint.
+    #[must_use]
+    fn prepend_value(&mut self, value: usize) -> usize {
+        let varint_array = varint::write_varint_meta3(value);
+        self.data.atbs_extend_front(varint_array.as_slice());
+        self.data.atbs_bitor_assign(0, 0b10000000);
+        varint_array.len()
+    }
+
+    /// Prepends a branch node to the front of the builder. Returns the
+    /// delta in length, which depends on the size of the varint.
+    #[must_use]
+    fn prepend_branch(&mut self, value: usize) -> usize {
+        let varint_array = varint::write_varint_meta2(value);
+        self.data.atbs_extend_front(varint_array.as_slice());
+        self.data.atbs_bitor_assign(0, 0b11000000);
+        varint_array.len()
+    }
+
+    /// Prepends multiple arbitrary bytes to the front of the builder. Returns the
+    /// delta in length, which is the length of the slice.
+    #[must_use]
+    fn prepend_slice(&mut self, s: &[u8]) -> usize {
+        self.data.atbs_extend_front(s);
+        s.len()
+    }
+
+    /// Builds a ZeroTrie from an iterator of bytes. It first collects and sorts the iterator.
+    pub fn from_bytes_iter<K: AsRef<[u8]>, I: IntoIterator<Item = (K, usize)>>(
+        iter: I,
+        options: ZeroTrieBuilderOptions,
+    ) -> Result<Self, ZeroTrieBuildError> {
+        let items = Vec::<(K, usize)>::from_iter(iter);
+        let mut items = items
+            .iter()
+            .map(|(k, v)| (k.as_ref(), *v))
+            .collect::<Vec<(&[u8], usize)>>();
+        items.sort_by(|a, b| cmp_keys_values(options, *a, *b));
+        let ascii_str_slice = items.as_slice();
+        let byte_str_slice = ByteStr::from_byte_slice_with_value(ascii_str_slice);
+        Self::from_sorted_tuple_slice_impl(byte_str_slice, options)
+    }
+
+    /// Builds a ZeroTrie with the given items and options. Assumes that the items are sorted,
+    /// except for a case-insensitive trie where the items are re-sorted.
+    ///
+    /// # Panics
+    ///
+    /// May panic if the items are not sorted.
+    pub fn from_sorted_tuple_slice(
+        items: &[(&ByteStr, usize)],
+        options: ZeroTrieBuilderOptions,
+    ) -> Result<Self, ZeroTrieBuildError> {
+        let mut items = Cow::Borrowed(items);
+        if matches!(options.case_sensitivity, CaseSensitivity::IgnoreCase) {
+            // We need to re-sort the items with our custom comparator.
+            items.to_mut().sort_by(|a, b| {
+                cmp_keys_values(options, (a.0.as_bytes(), a.1), (b.0.as_bytes(), b.1))
+            });
+        }
+        Self::from_sorted_tuple_slice_impl(&items, options)
+    }
+
+    /// Internal constructor that does not re-sort the items.
+    fn from_sorted_tuple_slice_impl(
+        items: &[(&ByteStr, usize)],
+        options: ZeroTrieBuilderOptions,
+    ) -> Result<Self, ZeroTrieBuildError> {
+        for ab in items.windows(2) {
+            debug_assert!(cmp_keys_values(
+                options,
+                (ab[0].0.as_bytes(), ab[0].1),
+                (ab[1].0.as_bytes(), ab[1].1)
+            )
+            .is_lt());
+        }
+        let mut result = Self {
+            data: S::atbs_new_empty(),
+            phf_cache: PerfectByteHashMapCacheOwned::new_empty(),
+            options,
+        };
+        let total_size = result.create(items)?;
+        debug_assert!(total_size == result.data.atbs_len());
+        Ok(result)
+    }
+
+    /// The actual builder algorithm. For an explanation, see [`crate::builder`].
+    #[allow(clippy::unwrap_used)] // lots of indexing, but all indexes should be in range
+    fn create(&mut self, all_items: &[(&ByteStr, usize)]) -> Result<usize, ZeroTrieBuildError> {
+        let mut prefix_len = match all_items.last() {
+            Some(x) => x.0.len(),
+            // Empty slice:
+            None => return Ok(0),
+        };
+        // Initialize the main loop to point at the last string.
+        let mut lengths_stack = NonConstLengthsStack::new();
+        let mut i = all_items.len() - 1;
+        let mut j = all_items.len();
+        let mut current_len = 0;
+        // Start the main loop.
+        loop {
+            let item_i = all_items.get(i).unwrap();
+            let item_j = all_items.get(j - 1).unwrap();
+            debug_assert!(item_i.0.prefix_eq(item_j.0, prefix_len));
+            // Check if we need to add a value node here.
+            if item_i.0.len() == prefix_len {
+                let len = self.prepend_value(item_i.1);
+                current_len += len;
+            }
+            if prefix_len == 0 {
+                // All done! Leave the main loop.
+                break;
+            }
+            // Reduce the prefix length by 1 and recalculate i and j.
+            prefix_len -= 1;
+            let mut new_i = i;
+            let mut new_j = j;
+            let mut ascii_i = item_i.0.byte_at_or_panic(prefix_len);
+            let mut ascii_j = item_j.0.byte_at_or_panic(prefix_len);
+            debug_assert_eq!(ascii_i, ascii_j);
+            let key_ascii = ascii_i;
+            loop {
+                if new_i == 0 {
+                    break;
+                }
+                let candidate = all_items.get(new_i - 1).unwrap().0;
+                if candidate.len() < prefix_len {
+                    // Too short
+                    break;
+                }
+                if item_i.0.prefix_eq(candidate, prefix_len) {
+                    new_i -= 1;
+                } else {
+                    break;
+                }
+                if candidate.len() == prefix_len {
+                    // A string that equals the prefix does not take part in the branch node.
+                    break;
+                }
+                let candidate = candidate.byte_at_or_panic(prefix_len);
+                if candidate != ascii_i {
+                    ascii_i = candidate;
+                }
+            }
+            loop {
+                if new_j == all_items.len() {
+                    break;
+                }
+                let candidate = all_items.get(new_j).unwrap().0;
+                if candidate.len() < prefix_len {
+                    // Too short
+                    break;
+                }
+                if item_j.0.prefix_eq(candidate, prefix_len) {
+                    new_j += 1;
+                } else {
+                    break;
+                }
+                if candidate.len() == prefix_len {
+                    panic!("A shorter string should be earlier in the sequence");
+                }
+                let candidate = candidate.byte_at_or_panic(prefix_len);
+                if candidate != ascii_j {
+                    ascii_j = candidate;
+                }
+            }
+            // If there are no different bytes at this prefix level, we can add an ASCII or Span
+            // node and then continue to the next iteration of the main loop.
+            if ascii_i == key_ascii && ascii_j == key_ascii {
+                let len = self.prepend_ascii(key_ascii)?;
+                current_len += len;
+                if matches!(self.options.case_sensitivity, CaseSensitivity::IgnoreCase)
+                    && i == new_i + 2
+                {
+                    // This can happen if two strings were picked up, each with a different case
+                    return Err(ZeroTrieBuildError::MixedCase);
+                }
+                debug_assert!(
+                    i == new_i || i == new_i + 1,
+                    "only the exact prefix string can be picked up at this level: {}",
+                    key_ascii
+                );
+                i = new_i;
+                debug_assert_eq!(j, new_j);
+                continue;
+            }
+            // If i and j changed, we are a target of a branch node.
+            if ascii_j == key_ascii {
+                // We are the _last_ target of a branch node.
+                lengths_stack.push(BranchMeta {
+                    ascii: key_ascii,
+                    cumulative_length: current_len,
+                    local_length: current_len,
+                    count: 1,
+                });
+            } else {
+                // We are the _not the last_ target of a branch node.
+                let BranchMeta {
+                    cumulative_length,
+                    count,
+                    ..
+                } = lengths_stack.peek_or_panic();
+                lengths_stack.push(BranchMeta {
+                    ascii: key_ascii,
+                    cumulative_length: cumulative_length + current_len,
+                    local_length: current_len,
+                    count: count + 1,
+                });
+            }
+            if ascii_i != key_ascii {
+                // We are _not the first_ target of a branch node.
+                // Set the cursor to the previous string and continue the loop.
+                j = i;
+                i -= 1;
+                prefix_len = all_items.get(i).unwrap().0.len();
+                current_len = 0;
+                continue;
+            }
+            // Branch (first)
+            // std::println!("lengths_stack: {lengths_stack:?}");
+            let (total_length, total_count) = {
+                let BranchMeta {
+                    cumulative_length,
+                    count,
+                    ..
+                } = lengths_stack.peek_or_panic();
+                (cumulative_length, count)
+            };
+            let mut branch_metas = lengths_stack.pop_many_or_panic(total_count);
+            let original_keys = branch_metas.map_to_ascii_bytes();
+            if matches!(self.options.case_sensitivity, CaseSensitivity::IgnoreCase) {
+                // Check to see if we have the same letter in two different cases
+                let mut seen_ascii_alpha = [false; 26];
+                for c in original_keys.as_const_slice().as_slice() {
+                    if c.is_ascii_alphabetic() {
+                        let i = (c.to_ascii_lowercase() - b'a') as usize;
+                        if seen_ascii_alpha[i] {
+                            return Err(ZeroTrieBuildError::MixedCase);
+                        } else {
+                            seen_ascii_alpha[i] = true;
+                        }
+                    }
+                }
+            }
+            let use_phf = matches!(self.options.phf_mode, PhfMode::UsePhf);
+            let opt_phf_vec = if total_count > 15 && use_phf {
+                let phf_vec = self
+                    .phf_cache
+                    .try_get_or_insert(original_keys.as_const_slice().as_slice().to_vec())?;
+                // Put everything in order via bubble sort
+                // Note: branch_metas is stored in reverse order (0 = last element)
+                loop {
+                    let mut l = total_count - 1;
+                    let mut changes = 0;
+                    let mut start = 0;
+                    while l > 0 {
+                        let a = *branch_metas.as_const_slice().get_or_panic(l);
+                        let b = *branch_metas.as_const_slice().get_or_panic(l - 1);
+                        let a_idx = phf_vec.keys().iter().position(|x| x == &a.ascii).unwrap();
+                        let b_idx = phf_vec.keys().iter().position(|x| x == &b.ascii).unwrap();
+                        if a_idx > b_idx {
+                            // std::println!("{a:?} <=> {b:?} ({phf_vec:?})");
+                            self.data.atbs_swap_ranges(
+                                start,
+                                start + a.local_length,
+                                start + a.local_length + b.local_length,
+                            );
+                            branch_metas = branch_metas.swap_or_panic(l - 1, l);
+                            start += b.local_length;
+                            changes += 1;
+                            // FIXME: fix the `length` field
+                        } else {
+                            start += a.local_length;
+                        }
+                        l -= 1;
+                    }
+                    if changes == 0 {
+                        break;
+                    }
+                }
+                Some(phf_vec)
+            } else {
+                None
+            };
+            // Write out the offset table
+            current_len = total_length;
+            const USIZE_BITS: usize = core::mem::size_of::<usize>() * 8;
+            let w = (USIZE_BITS - (total_length.leading_zeros() as usize) - 1) / 8;
+            if w > 3 && matches!(self.options.capacity_mode, CapacityMode::Normal) {
+                return Err(ZeroTrieBuildError::CapacityExceeded);
+            }
+            let mut k = 0;
+            while k <= w {
+                self.data.atbs_prepend_n_zeros(total_count - 1);
+                current_len += total_count - 1;
+                let mut l = 0;
+                let mut length_to_write = 0;
+                while l < total_count {
+                    let BranchMeta { local_length, .. } = *branch_metas
+                        .as_const_slice()
+                        .get_or_panic(total_count - l - 1);
+                    let mut adjusted_length = length_to_write;
+                    let mut m = 0;
+                    while m < k {
+                        adjusted_length >>= 8;
+                        m += 1;
+                    }
+                    if l > 0 {
+                        self.data.atbs_bitor_assign(l - 1, adjusted_length as u8);
+                    }
+                    l += 1;
+                    length_to_write += local_length;
+                }
+                k += 1;
+            }
+            // Write out the lookup table
+            assert!(0 < total_count && total_count <= 256);
+            let branch_value = (w << 8) + (total_count & 0xff);
+            if let Some(phf_vec) = opt_phf_vec {
+                self.data.atbs_extend_front(phf_vec.as_bytes());
+                let phf_len = phf_vec.as_bytes().len();
+                let branch_len = self.prepend_branch(branch_value);
+                current_len += phf_len + branch_len;
+            } else {
+                let search_len = self.prepend_slice(original_keys.as_slice());
+                let branch_len = self.prepend_branch(branch_value);
+                current_len += search_len + branch_len;
+            }
+            i = new_i;
+            j = new_j;
+        }
+        assert!(lengths_stack.is_empty());
+        Ok(current_len)
+    }
+}
+
+fn cmp_keys_values(
+    options: ZeroTrieBuilderOptions,
+    a: (&[u8], usize),
+    b: (&[u8], usize),
+) -> Ordering {
+    if matches!(options.case_sensitivity, CaseSensitivity::Sensitive) {
+        a.0.cmp(b.0)
+    } else {
+        let a_iter = a.0.iter().map(|x| x.to_ascii_lowercase());
+        let b_iter = b.0.iter().map(|x| x.to_ascii_lowercase());
+        Iterator::cmp(a_iter, b_iter)
+    }
+    .then_with(|| a.1.cmp(&b.1))
+}
diff --git a/vendor/zerotrie/src/builder/nonconst/mod.rs b/vendor/zerotrie/src/builder/nonconst/mod.rs
new file mode 100644
index 00000000..6ed78d71
--- /dev/null
+++ b/vendor/zerotrie/src/builder/nonconst/mod.rs
@@ -0,0 +1,9 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod builder;
+mod store;
+
+pub(crate) use builder::*;
+pub(crate) use store::TrieBuilderStore;
diff --git a/vendor/zerotrie/src/builder/nonconst/store.rs b/vendor/zerotrie/src/builder/nonconst/store.rs
new file mode 100644
index 00000000..741d5fef
--- /dev/null
+++ b/vendor/zerotrie/src/builder/nonconst/store.rs
@@ -0,0 +1,185 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! This module contains internal collections for the non-const builder.
+
+use super::super::branch_meta::BranchMeta;
+use super::super::konst::ConstArrayBuilder;
+use alloc::collections::VecDeque;
+use alloc::vec::Vec;
+
+/// A trait applied to a data structure for building a ZeroTrie.
+pub(crate) trait TrieBuilderStore {
+    /// Create a new empty store.
+    fn atbs_new_empty() -> Self;
+
+    /// Return the length in bytes of the store.
+    fn atbs_len(&self) -> usize;
+
+    /// Push a byte to the front of the store.
+    fn atbs_push_front(&mut self, byte: u8);
+
+    /// Push multiple bytes to the front of the store.
+    fn atbs_extend_front(&mut self, other: &[u8]);
+
+    /// Read the store into a `Vec<u8>`.
+    fn atbs_to_bytes(&self) -> Vec<u8>;
+
+    /// Perform the operation `self[index] |= bits`
+    fn atbs_bitor_assign(&mut self, index: usize, bits: u8);
+
+    /// Swap the adjacent ranges `self[start..mid]` and `self[mid..limit]`.
+    fn atbs_swap_ranges(&mut self, start: usize, mid: usize, limit: usize);
+
+    /// Remove and return the first element in the store, or `None` if empty.
+    fn atbs_pop_front(&mut self) -> Option<u8>;
+
+    /// Prepend `n` zeros to the front of the store.
+    fn atbs_prepend_n_zeros(&mut self, n: usize) {
+        let mut i = 0;
+        while i < n {
+            self.atbs_push_front(0);
+            i += 1;
+        }
+    }
+}
+
+impl TrieBuilderStore for VecDeque<u8> {
+    fn atbs_new_empty() -> Self {
+        VecDeque::new()
+    }
+    fn atbs_len(&self) -> usize {
+        self.len()
+    }
+    fn atbs_push_front(&mut self, byte: u8) {
+        self.push_front(byte);
+    }
+    fn atbs_extend_front(&mut self, other: &[u8]) {
+        // TODO: No extend_front on VecDeque?
+        self.reserve(other.len());
+        for b in other.iter().rev() {
+            self.push_front(*b);
+        }
+    }
+    fn atbs_to_bytes(&self) -> Vec<u8> {
+        let mut v = Vec::with_capacity(self.len());
+        let (a, b) = self.as_slices();
+        v.extend(a);
+        v.extend(b);
+        v
+    }
+    fn atbs_bitor_assign(&mut self, index: usize, bits: u8) {
+        self[index] |= bits;
+    }
+    fn atbs_swap_ranges(&mut self, mut start: usize, mut mid: usize, mut limit: usize) {
+        if start > mid || mid > limit {
+            panic!("Invalid args to atbs_swap_ranges(): start > mid || mid > limit");
+        }
+        if limit > self.len() {
+            panic!(
+                "Invalid args to atbs_swap_ranges(): limit out of range: {limit} > {}",
+                self.len()
+            );
+        }
+        // The following algorithm is an in-place swap of two adjacent ranges of potentially
+        // different lengths. Would make a good coding interview question.
+        loop {
+            if start == mid || mid == limit {
+                return;
+            }
+            let len0 = mid - start;
+            let len1 = limit - mid;
+            let mut i = start;
+            let mut j = limit - core::cmp::min(len0, len1);
+            while j < limit {
+                self.swap(i, j);
+                i += 1;
+                j += 1;
+            }
+            if len0 < len1 {
+                mid = start + len0;
+                limit -= len0;
+            } else {
+                start += len1;
+                mid = limit - len1;
+            }
+        }
+    }
+    fn atbs_pop_front(&mut self) -> Option<u8> {
+        self.pop_front()
+    }
+}
+
+/// A data structure that holds any number of [`BranchMeta`] items.
+pub(crate) struct NonConstLengthsStack {
+    data: Vec<BranchMeta>,
+}
+
+impl core::fmt::Debug for NonConstLengthsStack {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        self.as_slice().fmt(f)
+    }
+}
+
+impl NonConstLengthsStack {
+    /// Creates a new empty [`NonConstLengthsStack`].
+    pub const fn new() -> Self {
+        Self { data: Vec::new() }
+    }
+
+    /// Returns whether the stack is empty.
+    pub fn is_empty(&self) -> bool {
+        self.data.is_empty()
+    }
+
+    /// Adds a [`BranchMeta`] to the stack.
+    pub fn push(&mut self, meta: BranchMeta) {
+        self.data.push(meta);
+    }
+
+    /// Returns a copy of the [`BranchMeta`] on the top of the stack, panicking if
+    /// the stack is empty.
+    pub fn peek_or_panic(&self) -> BranchMeta {
+        *self.data.last().unwrap()
+    }
+
+    /// Removes many [`BranchMeta`]s from the stack, returning them in a [`ConstArrayBuilder`].
+    pub fn pop_many_or_panic(&mut self, len: usize) -> ConstArrayBuilder<256, BranchMeta> {
+        debug_assert!(len <= 256);
+        let mut result = ConstArrayBuilder::new_empty([BranchMeta::default(); 256], 256);
+        let mut ix = 0;
+        loop {
+            if ix == len {
+                break;
+            }
+            let i = self.data.len() - ix - 1;
+            // Won't panic because len <= 256
+            result = result.const_push_front_or_panic(match self.data.get(i) {
+                Some(x) => *x,
+                None => panic!("Not enough items in the ConstLengthsStack"),
+            });
+            ix += 1;
+        }
+        self.data.truncate(self.data.len() - len);
+        result
+    }
+
+    /// Non-const function that returns the initialized elements as a slice.
+    fn as_slice(&self) -> &[BranchMeta] {
+        &self.data
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_swap_ranges() {
+        let s = b"..abcdefghijkl=";
+        let mut s = s.iter().copied().collect::<VecDeque<u8>>();
+        s.atbs_swap_ranges(2, 7, 14);
+        assert_eq!(s.atbs_to_bytes(), b"..fghijklabcde=");
+    }
+}
diff --git a/vendor/zerotrie/src/byte_phf/builder.rs b/vendor/zerotrie/src/byte_phf/builder.rs
new file mode 100644
index 00000000..5c9330ee
--- /dev/null
+++ b/vendor/zerotrie/src/byte_phf/builder.rs
@@ -0,0 +1,208 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use crate::error::ZeroTrieBuildError;
+use alloc::vec;
+use alloc::vec::Vec;
+
+/// To speed up the search algorithm, we limit the number of times the level-2 parameter (q)
+/// can hit its max value (initially Q_FAST_MAX) before we try the next level-1 parameter (p).
+/// In practice, this has a small impact on the resulting perfect hash, resulting in about
+/// 1 in 10000 hash maps that fall back to the slow path.
+const MAX_L2_SEARCH_MISSES: usize = 24;
+
+/// Directly compute the perfect hash function.
+///
+/// Returns `(p, [q_0, q_1, ..., q_(N-1)])`, or an error if the PHF could not be computed.
+#[allow(unused_labels)] // for readability
+pub fn find(bytes: &[u8]) -> Result<(u8, Vec<u8>), ZeroTrieBuildError> {
+    let n_usize = bytes.len();
+
+    let mut p = 0u8;
+    let mut qq = vec![0u8; n_usize];
+
+    let mut bqs = vec![0u8; n_usize];
+    let mut seen = vec![false; n_usize];
+    let max_allowable_p = P_FAST_MAX;
+    let mut max_allowable_q = Q_FAST_MAX;
+
+    #[allow(non_snake_case)]
+    let N = if n_usize > 0 && n_usize < 256 {
+        n_usize as u8
+    } else {
+        debug_assert!(n_usize == 0 || n_usize == 256);
+        return Ok((p, qq));
+    };
+
+    'p_loop: loop {
+        let mut buckets: Vec<(usize, Vec<u8>)> = (0..n_usize).map(|i| (i, vec![])).collect();
+        for byte in bytes {
+            let l1 = f1(*byte, p, N) as usize;
+            buckets[l1].1.push(*byte);
+        }
+        buckets.sort_by_key(|(_, v)| -(v.len() as isize));
+        // println!("New P: p={p:?}, buckets={buckets:?}");
+        let mut i = 0;
+        let mut num_max_q = 0;
+        bqs.fill(0);
+        seen.fill(false);
+        'q_loop: loop {
+            if i == buckets.len() {
+                for (local_j, real_j) in buckets.iter().map(|(j, _)| *j).enumerate() {
+                    qq[real_j] = bqs[local_j];
+                }
+                // println!("Success: p={p:?}, num_max_q={num_max_q:?}, bqs={bqs:?}, qq={qq:?}");
+                // if num_max_q > 0 {
+                //     println!("num_max_q={num_max_q:?}");
+                // }
+                return Ok((p, qq));
+            }
+            let mut bucket = buckets[i].1.as_slice();
+            'byte_loop: for (j, byte) in bucket.iter().enumerate() {
+                let l2 = f2(*byte, bqs[i], N) as usize;
+                if seen[l2] {
+                    // println!("Skipping Q: p={p:?}, i={i:?}, byte={byte:}, q={i:?}, l2={:?}", f2(*byte, bqs[i], N));
+                    for k_byte in &bucket[0..j] {
+                        let l2 = f2(*k_byte, bqs[i], N) as usize;
+                        assert!(seen[l2]);
+                        seen[l2] = false;
+                    }
+                    'reset_loop: loop {
+                        if bqs[i] < max_allowable_q {
+                            bqs[i] += 1;
+                            continue 'q_loop;
+                        }
+                        num_max_q += 1;
+                        bqs[i] = 0;
+                        if i == 0 || num_max_q > MAX_L2_SEARCH_MISSES {
+                            if p == max_allowable_p && max_allowable_q != Q_REAL_MAX {
+                                // println!("Could not solve fast function: trying again: {bytes:?}");
+                                max_allowable_q = Q_REAL_MAX;
+                                p = 0;
+                                continue 'p_loop;
+                            } else if p == max_allowable_p {
+                                // If a fallback algorithm for `p` is added, relax this assertion
+                                // and re-run the loop with a higher `max_allowable_p`.
+                                debug_assert_eq!(max_allowable_p, P_REAL_MAX);
+                                // println!("Could not solve PHF function");
+                                return Err(ZeroTrieBuildError::CouldNotSolvePerfectHash);
+                            } else {
+                                p += 1;
+                                continue 'p_loop;
+                            }
+                        }
+                        i -= 1;
+                        bucket = buckets[i].1.as_slice();
+                        for byte in bucket {
+                            let l2 = f2(*byte, bqs[i], N) as usize;
+                            assert!(seen[l2]);
+                            seen[l2] = false;
+                        }
+                    }
+                } else {
+                    // println!("Marking as seen: i={i:?}, byte={byte:}, l2={:?}", f2(*byte, bqs[i], N));
+                    let l2 = f2(*byte, bqs[i], N) as usize;
+                    seen[l2] = true;
+                }
+            }
+            // println!("Found Q: i={i:?}, q={:?}", bqs[i]);
+            i += 1;
+        }
+    }
+}
+
+impl PerfectByteHashMap<Vec<u8>> {
+    /// Computes a new [`PerfectByteHashMap`].
+    ///
+    /// (this is a doc-hidden API)
+    pub fn try_new(keys: &[u8]) -> Result<Self, ZeroTrieBuildError> {
+        let n_usize = keys.len();
+        let n = n_usize as u8;
+        let (p, mut qq) = find(keys)?;
+        let mut keys_permuted = vec![0; n_usize];
+        for key in keys {
+            let l1 = f1(*key, p, n) as usize;
+            let q = qq[l1];
+            let l2 = f2(*key, q, n) as usize;
+            keys_permuted[l2] = *key;
+        }
+        let mut result = Vec::with_capacity(n_usize * 2 + 1);
+        result.push(p);
+        result.append(&mut qq);
+        result.append(&mut keys_permuted);
+        Ok(Self(result))
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    extern crate std;
+    use std::print;
+    use std::println;
+
+    fn print_byte_to_stdout(byte: u8) {
+        let c = char::from(byte);
+        if c.is_ascii_alphanumeric() {
+            print!("'{c}'");
+        } else {
+            print!("0x{byte:X}");
+        }
+    }
+
+    fn random_alphanums(seed: u64, len: usize) -> Vec<u8> {
+        use rand::seq::SliceRandom;
+        use rand::SeedableRng;
+        let mut bytes: Vec<u8> =
+            b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".into();
+        let mut rng = rand_pcg::Lcg64Xsh32::seed_from_u64(seed);
+        bytes.partial_shuffle(&mut rng, len).0.into()
+    }
+
+    #[test]
+    fn test_random_distributions() {
+        let mut p_distr = vec![0; 256];
+        let mut q_distr = vec![0; 256];
+        for len in 0..50 {
+            for seed in 0..50 {
+                let bytes = random_alphanums(seed, len);
+                let (p, qq) = find(bytes.as_slice()).unwrap();
+                p_distr[p as usize] += 1;
+                for q in qq {
+                    q_distr[q as usize] += 1;
+                }
+            }
+        }
+        println!("p_distr: {p_distr:?}");
+        println!("q_distr: {q_distr:?}");
+
+        let fast_p = p_distr[0..=P_FAST_MAX as usize].iter().sum::<usize>();
+        let slow_p = p_distr[(P_FAST_MAX + 1) as usize..].iter().sum::<usize>();
+        let fast_q = q_distr[0..=Q_FAST_MAX as usize].iter().sum::<usize>();
+        let slow_q = q_distr[(Q_FAST_MAX + 1) as usize..].iter().sum::<usize>();
+
+        assert_eq!(2500, fast_p);
+        assert_eq!(0, slow_p);
+        assert_eq!(61243, fast_q);
+        assert_eq!(7, slow_q);
+
+        let bytes = random_alphanums(0, 16);
+
+        #[allow(non_snake_case)]
+        let N = u8::try_from(bytes.len()).unwrap();
+
+        let (p, qq) = find(bytes.as_slice()).unwrap();
+
+        println!("Results:");
+        for byte in bytes.iter() {
+            print_byte_to_stdout(*byte);
+            let l1 = f1(*byte, p, N) as usize;
+            let q = qq[l1];
+            let l2 = f2(*byte, q, N) as usize;
+            println!(" => l1 {l1} => q {q} => l2 {l2}");
+        }
+    }
+}
diff --git a/vendor/zerotrie/src/byte_phf/cached_owned.rs b/vendor/zerotrie/src/byte_phf/cached_owned.rs
new file mode 100644
index 00000000..bcb1b0be
--- /dev/null
+++ b/vendor/zerotrie/src/byte_phf/cached_owned.rs
@@ -0,0 +1,39 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use crate::error::ZeroTrieBuildError;
+use alloc::collections::btree_map::Entry;
+use alloc::collections::BTreeMap;
+use alloc::vec::Vec;
+
+/// Helper class for caching the results of multiple [`PerfectByteHashMap`] calculations.
+pub struct PerfectByteHashMapCacheOwned {
+    // Note: This should probably be a HashMap but that isn't in `alloc`
+    data: BTreeMap<Vec<u8>, PerfectByteHashMap<Vec<u8>>>,
+}
+
+impl PerfectByteHashMapCacheOwned {
+    /// Creates a new empty instance.
+    pub fn new_empty() -> Self {
+        Self {
+            data: BTreeMap::new(),
+        }
+    }
+
+    /// Gets the [`PerfectByteHashMap`] for the given bytes, calculating it if necessary.
+    pub fn try_get_or_insert(
+        &mut self,
+        keys: Vec<u8>,
+    ) -> Result<&PerfectByteHashMap<[u8]>, ZeroTrieBuildError> {
+        let mut_phf = match self.data.entry(keys) {
+            Entry::Vacant(entry) => {
+                let value = PerfectByteHashMap::try_new(entry.key())?;
+                entry.insert(value)
+            }
+            Entry::Occupied(entry) => entry.into_mut(),
+        };
+        Ok(mut_phf.as_borrowed())
+    }
+}
diff --git a/vendor/zerotrie/src/byte_phf/mod.rs b/vendor/zerotrie/src/byte_phf/mod.rs
new file mode 100644
index 00000000..4d82fed7
--- /dev/null
+++ b/vendor/zerotrie/src/byte_phf/mod.rs
@@ -0,0 +1,485 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#![allow(rustdoc::private_intra_doc_links)] // doc(hidden) module
+
+//! # Byte Perfect Hash Function Internals
+//!
+//! This module contains a perfect hash function (PHF) designed for a fast, compact perfect
+//! hash over 1 to 256 nodes (bytes).
+//!
+//! The PHF uses the following variables:
+//!
+//! 1. A single parameter `p`, which is 0 in about 98% of cases.
+//! 2. A list of `N` parameters `q_t`, one per _bucket_
+//! 3. The `N` keys in an arbitrary order determined by the PHF
+//!
+//! Reading a `key` from the PHF uses the following algorithm:
+//!
+//! 1. Let `t`, the bucket index, be `f1(key, p)`.
+//! 2. Let `i`, the key index, be `f2(key, q_t)`.
+//! 3. If `key == k_i`, return `Some(i)`; else return `None`.
+//!
+//! The functions [`f1`] and [`f2`] are internal to the PHF but should remain stable across
+//! serialization versions of `ZeroTrie`. They are very fast, constant-time operations as long
+//! as `p` <= [`P_FAST_MAX`] and `q` <= [`Q_FAST_MAX`]. In practice, nearly 100% of parameter
+//! values are in the fast range.
+//!
+//! ```
+//! use zerotrie::_internal::PerfectByteHashMap;
+//!
+//! let phf_example_bytes = [
+//!     // `p` parameter
+//!     1, // `q` parameters, one for each of the N buckets
+//!     0, 0, 1, 1, // Exact keys to be compared with the input
+//!     b'e', b'a', b'c', b'g',
+//! ];
+//!
+//! let phf = PerfectByteHashMap::from_bytes(&phf_example_bytes);
+//!
+//! // The PHF returns the index of the key or `None` if not found.
+//! assert_eq!(phf.get(b'a'), Some(1));
+//! assert_eq!(phf.get(b'b'), None);
+//! assert_eq!(phf.get(b'c'), Some(2));
+//! assert_eq!(phf.get(b'd'), None);
+//! assert_eq!(phf.get(b'e'), Some(0));
+//! assert_eq!(phf.get(b'f'), None);
+//! assert_eq!(phf.get(b'g'), Some(3));
+//! ```
+
+use crate::helpers::*;
+
+#[cfg(feature = "alloc")]
+mod builder;
+#[cfg(feature = "alloc")]
+mod cached_owned;
+
+#[cfg(feature = "alloc")]
+pub use cached_owned::PerfectByteHashMapCacheOwned;
+
+/// The cutoff for the fast version of [`f1`].
+#[cfg(feature = "alloc")] // used in the builder code
+const P_FAST_MAX: u8 = 95;
+
+/// The cutoff for the fast version of [`f2`].
+const Q_FAST_MAX: u8 = 95;
+
+/// The maximum allowable value of `p`. This could be raised if found to be necessary.
+/// Values exceeding P_FAST_MAX could use a different `p` algorithm by modifying [`f1`].
+#[cfg(feature = "alloc")] // used in the builder code
+const P_REAL_MAX: u8 = P_FAST_MAX;
+
+/// The maximum allowable value of `q`. This could be raised if found to be necessary.
+#[cfg(feature = "alloc")] // used in the builder code
+const Q_REAL_MAX: u8 = 127;
+
+/// Calculates the function `f1` for the PHF. For the exact formula, please read the code.
+///
+/// When `p == 0`, the operation is a simple modulus.
+///
+/// The argument `n` is used only for taking the modulus so that the return value is
+/// in the range `[0, n)`.
+///
+/// # Examples
+///
+/// ```
+/// use zerotrie::_internal::f1;
+/// const N: u8 = 10;
+///
+/// // With p = 0:
+/// assert_eq!(0, f1(0, 0, N));
+/// assert_eq!(1, f1(1, 0, N));
+/// assert_eq!(2, f1(2, 0, N));
+/// assert_eq!(9, f1(9, 0, N));
+/// assert_eq!(0, f1(10, 0, N));
+/// assert_eq!(1, f1(11, 0, N));
+/// assert_eq!(2, f1(12, 0, N));
+/// assert_eq!(9, f1(19, 0, N));
+///
+/// // With p = 1:
+/// assert_eq!(1, f1(0, 1, N));
+/// assert_eq!(0, f1(1, 1, N));
+/// assert_eq!(2, f1(2, 1, N));
+/// assert_eq!(2, f1(9, 1, N));
+/// assert_eq!(4, f1(10, 1, N));
+/// assert_eq!(5, f1(11, 1, N));
+/// assert_eq!(1, f1(12, 1, N));
+/// assert_eq!(7, f1(19, 1, N));
+/// ```
+#[inline]
+pub fn f1(byte: u8, p: u8, n: u8) -> u8 {
+    if n == 0 {
+        byte
+    } else if p == 0 {
+        byte % n
+    } else {
+        // `p` always uses the below constant-time operation. If needed, we
+        // could add some other operation here with `p > P_FAST_MAX` to solve
+        // difficult cases if the need arises.
+        let result = byte ^ p ^ byte.wrapping_shr(p as u32);
+        result % n
+    }
+}
+
+/// Calculates the function `f2` for the PHF. For the exact formula, please read the code.
+///
+/// When `q == 0`, the operation is a simple modulus.
+///
+/// The argument `n` is used only for taking the modulus so that the return value is
+/// in the range `[0, n)`.
+///
+/// # Examples
+///
+/// ```
+/// use zerotrie::_internal::f2;
+/// const N: u8 = 10;
+///
+/// // With q = 0:
+/// assert_eq!(0, f2(0, 0, N));
+/// assert_eq!(1, f2(1, 0, N));
+/// assert_eq!(2, f2(2, 0, N));
+/// assert_eq!(9, f2(9, 0, N));
+/// assert_eq!(0, f2(10, 0, N));
+/// assert_eq!(1, f2(11, 0, N));
+/// assert_eq!(2, f2(12, 0, N));
+/// assert_eq!(9, f2(19, 0, N));
+///
+/// // With q = 1:
+/// assert_eq!(1, f2(0, 1, N));
+/// assert_eq!(0, f2(1, 1, N));
+/// assert_eq!(3, f2(2, 1, N));
+/// assert_eq!(8, f2(9, 1, N));
+/// assert_eq!(1, f2(10, 1, N));
+/// assert_eq!(0, f2(11, 1, N));
+/// assert_eq!(3, f2(12, 1, N));
+/// assert_eq!(8, f2(19, 1, N));
+/// ```
+#[inline]
+pub fn f2(byte: u8, q: u8, n: u8) -> u8 {
+    if n == 0 {
+        return byte;
+    }
+    let mut result = byte ^ q;
+    // In almost all cases, the PHF works with the above constant-time operation.
+    // However, to crack a few difficult cases, we fall back to the linear-time
+    // operation shown below.
+    for _ in Q_FAST_MAX..q {
+        result = result ^ (result << 1) ^ (result >> 1);
+    }
+    result % n
+}
+
+/// A constant-time map from bytes to unique indices.
+///
+/// Uses a perfect hash function (see module-level documentation). Does not support mutation.
+///
+/// Standard layout: P, N bytes of Q, N bytes of expected keys
+#[derive(Debug, PartialEq, Eq)]
+#[repr(transparent)]
+pub struct PerfectByteHashMap<Store: ?Sized>(Store);
+
+impl<Store> PerfectByteHashMap<Store> {
+    /// Creates an instance from a pre-existing store. See [`Self::as_bytes`].
+    #[inline]
+    pub fn from_store(store: Store) -> Self {
+        Self(store)
+    }
+}
+
+impl<Store> PerfectByteHashMap<Store>
+where
+    Store: AsRef<[u8]> + ?Sized,
+{
+    /// Gets the usize for the given byte, or `None` if it is not in the map.
+    pub fn get(&self, key: u8) -> Option<usize> {
+        let (p, buffer) = self.0.as_ref().split_first()?;
+        // Note: there are N buckets followed by N keys
+        let n_usize = buffer.len() / 2;
+        if n_usize == 0 {
+            return None;
+        }
+        let n = n_usize as u8;
+        let (qq, eks) = buffer.debug_split_at(n_usize);
+        debug_assert_eq!(qq.len(), eks.len());
+        let l1 = f1(key, *p, n) as usize;
+        let q = debug_unwrap!(qq.get(l1), return None);
+        let l2 = f2(key, *q, n) as usize;
+        let ek = debug_unwrap!(eks.get(l2), return None);
+        if *ek == key {
+            Some(l2)
+        } else {
+            None
+        }
+    }
+    /// This is called `num_items` because `len` is ambiguous: it could refer
+    /// to the number of items or the number of bytes.
+    pub fn num_items(&self) -> usize {
+        self.0.as_ref().len() / 2
+    }
+    /// Get an iterator over the keys in the order in which they are stored in the map.
+    pub fn keys(&self) -> &[u8] {
+        let n = self.num_items();
+        self.0.as_ref().debug_split_at(1 + n).1
+    }
+    /// Diagnostic function that returns `p` and the maximum value of `q`
+    #[cfg(test)]
+    pub fn p_qmax(&self) -> Option<(u8, u8)> {
+        let (p, buffer) = self.0.as_ref().split_first()?;
+        let n = buffer.len() / 2;
+        if n == 0 {
+            return None;
+        }
+        let (qq, _) = buffer.debug_split_at(n);
+        Some((*p, *qq.iter().max().unwrap()))
+    }
+    /// Returns the map as bytes. The map can be recovered with [`Self::from_store`]
+    /// or [`Self::from_bytes`].
+    pub fn as_bytes(&self) -> &[u8] {
+        self.0.as_ref()
+    }
+
+    #[cfg(all(feature = "alloc", test))]
+    pub(crate) fn check(&self) -> Result<(), (&'static str, u8)> {
+        use alloc::vec;
+        let len = self.num_items();
+        let mut seen = vec![false; len];
+        for b in 0..=255u8 {
+            let get_result = self.get(b);
+            if self.keys().contains(&b) {
+                let i = get_result.ok_or(("expected to find", b))?;
+                if seen[i] {
+                    return Err(("seen", b));
+                }
+                seen[i] = true;
+            } else if get_result.is_some() {
+                return Err(("did not expect to find", b));
+            }
+        }
+        Ok(())
+    }
+}
+
+impl PerfectByteHashMap<[u8]> {
+    /// Creates an instance from pre-existing bytes. See [`Self::as_bytes`].
+    #[inline]
+    pub fn from_bytes(bytes: &[u8]) -> &Self {
+        // Safety: Self is repr(transparent) over [u8]
+        unsafe { core::mem::transmute(bytes) }
+    }
+}
+
+impl<Store> PerfectByteHashMap<Store>
+where
+    Store: AsRef<[u8]> + ?Sized,
+{
+    /// Converts from `PerfectByteHashMap<AsRef<[u8]>>` to `&PerfectByteHashMap<[u8]>`
+    #[inline]
+    pub fn as_borrowed(&self) -> &PerfectByteHashMap<[u8]> {
+        PerfectByteHashMap::from_bytes(self.0.as_ref())
+    }
+}
+
+#[cfg(all(test, feature = "alloc"))]
+mod tests {
+    use super::*;
+    use alloc::vec::Vec;
+    extern crate std;
+
+    fn random_alphanums(seed: u64, len: usize) -> Vec<u8> {
+        use rand::seq::SliceRandom;
+        use rand::SeedableRng;
+
+        let mut bytes: Vec<u8> =
+            b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".into();
+        let mut rng = rand_pcg::Lcg64Xsh32::seed_from_u64(seed);
+        bytes.partial_shuffle(&mut rng, len).0.into()
+    }
+
+    #[test]
+    fn test_smaller() {
+        let mut count_by_p = [0; 256];
+        let mut count_by_qmax = [0; 256];
+        for len in 1..16 {
+            for seed in 0..150 {
+                let keys = random_alphanums(seed, len);
+                let keys_str = core::str::from_utf8(&keys).unwrap();
+                let computed = PerfectByteHashMap::try_new(&keys).expect(keys_str);
+                computed
+                    .check()
+                    .unwrap_or_else(|_| panic!("{}", std::str::from_utf8(&keys).expect(keys_str)));
+                let (p, qmax) = computed.p_qmax().unwrap();
+                count_by_p[p as usize] += 1;
+                count_by_qmax[qmax as usize] += 1;
+            }
+        }
+        std::println!("count_by_p (smaller): {count_by_p:?}");
+        std::println!("count_by_qmax (smaller): {count_by_qmax:?}");
+        let count_fastq = count_by_qmax[0..=Q_FAST_MAX as usize].iter().sum::<usize>();
+        let count_slowq = count_by_qmax[Q_FAST_MAX as usize + 1..]
+            .iter()
+            .sum::<usize>();
+        std::println!("fastq/slowq: {count_fastq}/{count_slowq}");
+        // Assert that 99% of cases resolve to the fast hash
+        assert!(count_fastq >= count_slowq * 100);
+    }
+
+    #[test]
+    fn test_larger() {
+        let mut count_by_p = [0; 256];
+        let mut count_by_qmax = [0; 256];
+        for len in 16..60 {
+            for seed in 0..75 {
+                let keys = random_alphanums(seed, len);
+                let keys_str = core::str::from_utf8(&keys).unwrap();
+                let computed = PerfectByteHashMap::try_new(&keys).expect(keys_str);
+                computed
+                    .check()
+                    .unwrap_or_else(|_| panic!("{}", std::str::from_utf8(&keys).expect(keys_str)));
+                let (p, qmax) = computed.p_qmax().unwrap();
+                count_by_p[p as usize] += 1;
+                count_by_qmax[qmax as usize] += 1;
+            }
+        }
+        std::println!("count_by_p (larger): {count_by_p:?}");
+        std::println!("count_by_qmax (larger): {count_by_qmax:?}");
+        let count_fastq = count_by_qmax[0..=Q_FAST_MAX as usize].iter().sum::<usize>();
+        let count_slowq = count_by_qmax[Q_FAST_MAX as usize + 1..]
+            .iter()
+            .sum::<usize>();
+        std::println!("fastq/slowq: {count_fastq}/{count_slowq}");
+        // Assert that 99% of cases resolve to the fast hash
+        assert!(count_fastq >= count_slowq * 100);
+    }
+
+    #[test]
+    fn test_hard_cases() {
+        let keys = [
+            0u8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+            24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+            46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+            68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+            90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+            109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+            126, 195, 196,
+        ];
+
+        let computed = PerfectByteHashMap::try_new(&keys).unwrap();
+        let (p, qmax) = computed.p_qmax().unwrap();
+        assert_eq!(p, 69);
+        assert_eq!(qmax, 67);
+    }
+
+    #[test]
+    fn test_build_read_small() {
+        #[derive(Debug)]
+        struct TestCase<'a> {
+            keys: &'a str,
+            expected: &'a [u8],
+            reordered_keys: &'a str,
+        }
+        let cases = [
+            TestCase {
+                keys: "ab",
+                expected: &[0, 0, 0, b'b', b'a'],
+                reordered_keys: "ba",
+            },
+            TestCase {
+                keys: "abc",
+                expected: &[0, 0, 0, 0, b'c', b'a', b'b'],
+                reordered_keys: "cab",
+            },
+            TestCase {
+                // Note: splitting "a" and "c" into different buckets requires the heavier hash
+                // function because the difference between "a" and "c" is the period (2).
+                keys: "ac",
+                expected: &[1, 0, 1, b'c', b'a'],
+                reordered_keys: "ca",
+            },
+            TestCase {
+                keys: "aceg",
+                expected: &[1, 0, 0, 1, 1, b'e', b'a', b'c', b'g'],
+                reordered_keys: "eacg",
+            },
+            TestCase {
+                keys: "abd",
+                expected: &[0, 0, 1, 3, b'a', b'b', b'd'],
+                reordered_keys: "abd",
+            },
+            TestCase {
+                keys: "def",
+                expected: &[0, 0, 0, 0, b'f', b'd', b'e'],
+                reordered_keys: "fde",
+            },
+            TestCase {
+                keys: "fi",
+                expected: &[0, 0, 0, b'f', b'i'],
+                reordered_keys: "fi",
+            },
+            TestCase {
+                keys: "gh",
+                expected: &[0, 0, 0, b'h', b'g'],
+                reordered_keys: "hg",
+            },
+            TestCase {
+                keys: "lm",
+                expected: &[0, 0, 0, b'l', b'm'],
+                reordered_keys: "lm",
+            },
+            TestCase {
+                // Note: "a" and "q" (0x61 and 0x71) are very hard to split; only a handful of
+                // hash function crates can get them into separate buckets.
+                keys: "aq",
+                expected: &[4, 0, 1, b'a', b'q'],
+                reordered_keys: "aq",
+            },
+            TestCase {
+                keys: "xy",
+                expected: &[0, 0, 0, b'x', b'y'],
+                reordered_keys: "xy",
+            },
+            TestCase {
+                keys: "xyz",
+                expected: &[0, 0, 0, 0, b'x', b'y', b'z'],
+                reordered_keys: "xyz",
+            },
+            TestCase {
+                keys: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
+                expected: &[
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 10, 12, 16, 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 16,
+                    16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+                    2, 0, 7, 104, 105, 106, 107, 108, 109, 110, 111, 112, 117, 118, 119, 68, 69,
+                    70, 113, 114, 65, 66, 67, 120, 121, 122, 115, 72, 73, 74, 71, 80, 81, 82, 83,
+                    84, 85, 86, 87, 88, 89, 90, 75, 76, 77, 78, 79, 103, 97, 98, 99, 116, 100, 102,
+                    101,
+                ],
+                reordered_keys: "hijklmnopuvwDEFqrABCxyzsHIJGPQRSTUVWXYZKLMNOgabctdfe",
+            },
+            TestCase {
+                keys: "abcdefghij",
+                expected: &[
+                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 101, 102, 103, 104, 105, 106, 97, 98, 99,
+                ],
+                reordered_keys: "defghijabc",
+            },
+            TestCase {
+                // This is a small case that resolves to the slow hasher
+                keys: "Jbej",
+                expected: &[2, 0, 0, 102, 0, b'j', b'e', b'b', b'J'],
+                reordered_keys: "jebJ",
+            },
+            TestCase {
+                // This is another small case that resolves to the slow hasher
+                keys: "JFNv",
+                expected: &[1, 98, 0, 2, 0, b'J', b'F', b'N', b'v'],
+                reordered_keys: "JFNv",
+            },
+        ];
+        for cas in cases {
+            let computed = PerfectByteHashMap::try_new(cas.keys.as_bytes()).expect(cas.keys);
+            assert_eq!(computed.as_bytes(), cas.expected, "{:?}", cas);
+            assert_eq!(computed.keys(), cas.reordered_keys.as_bytes(), "{:?}", cas);
+            computed.check().expect(cas.keys);
+        }
+    }
+}
diff --git a/vendor/zerotrie/src/cursor.rs b/vendor/zerotrie/src/cursor.rs
new file mode 100644
index 00000000..ebcb97b0
--- /dev/null
+++ b/vendor/zerotrie/src/cursor.rs
@@ -0,0 +1,491 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Types for walking stepwise through a trie.
+//!
+//! For examples, see the `.cursor()` functions
+//! and the `Cursor` types in this module.
+
+use crate::reader;
+use crate::ZeroAsciiIgnoreCaseTrie;
+use crate::ZeroTrieSimpleAscii;
+
+use core::fmt;
+
+impl<Store> ZeroTrieSimpleAscii<Store>
+where
+    Store: AsRef<[u8]> + ?Sized,
+{
+    /// Gets a cursor into the current trie.
+    ///
+    /// Useful to query a trie with data that is not a slice.
+    ///
+    /// This is currently supported only on [`ZeroTrieSimpleAscii`]
+    /// and [`ZeroAsciiIgnoreCaseTrie`].
+    ///
+    /// # Examples
+    ///
+    /// Get a value out of a trie by [writing](fmt::Write) it to the cursor:
+    ///
+    /// ```
+    /// use core::fmt::Write;
+    /// use zerotrie::ZeroTrieSimpleAscii;
+    ///
+    /// // A trie with two values: "abc" and "abcdef"
+    /// let trie = ZeroTrieSimpleAscii::from_bytes(b"abc\x80def\x81");
+    ///
+    /// // Get out the value for "abc"
+    /// let mut cursor = trie.cursor();
+    /// write!(&mut cursor, "abc");
+    /// assert_eq!(cursor.take_value(), Some(0));
+    /// ```
+    ///
+    /// Find the longest prefix match:
+    ///
+    /// ```
+    /// use zerotrie::ZeroTrieSimpleAscii;
+    ///
+    /// // A trie with two values: "abc" and "abcdef"
+    /// let trie = ZeroTrieSimpleAscii::from_bytes(b"abc\x80def\x81");
+    ///
+    /// // Find the longest prefix of the string "abcdxy":
+    /// let query = b"abcdxy";
+    /// let mut longest_prefix = 0;
+    /// let mut cursor = trie.cursor();
+    /// for (i, b) in query.iter().enumerate() {
+    ///     // Checking is_empty() is not required, but it is
+    ///     // good for efficiency
+    ///     if cursor.is_empty() {
+    ///         break;
+    ///     }
+    ///     if cursor.take_value().is_some() {
+    ///         longest_prefix = i;
+    ///     }
+    ///     cursor.step(*b);
+    /// }
+    ///
+    /// // The longest prefix is "abc" which is length 3:
+    /// assert_eq!(longest_prefix, 3);
+    /// ```
+    #[inline]
+    pub fn cursor(&self) -> ZeroTrieSimpleAsciiCursor {
+        ZeroTrieSimpleAsciiCursor {
+            trie: self.as_borrowed_slice(),
+        }
+    }
+}
+
+impl<Store> ZeroAsciiIgnoreCaseTrie<Store>
+where
+    Store: AsRef<[u8]> + ?Sized,
+{
+    /// Gets a cursor into the current trie.
+    ///
+    /// Useful to query a trie with data that is not a slice.
+    ///
+    /// This is currently supported only on [`ZeroTrieSimpleAscii`]
+    /// and [`ZeroAsciiIgnoreCaseTrie`].
+    ///
+    /// # Examples
+    ///
+    /// Get a value out of a trie by [writing](fmt::Write) it to the cursor:
+    ///
+    /// ```
+    /// use core::fmt::Write;
+    /// use zerotrie::ZeroAsciiIgnoreCaseTrie;
+    ///
+    /// // A trie with two values: "aBc" and "aBcdEf"
+    /// let trie = ZeroAsciiIgnoreCaseTrie::from_bytes(b"aBc\x80dEf\x81");
+    ///
+    /// // Get out the value for "abc" (case-insensitive!)
+    /// let mut cursor = trie.cursor();
+    /// write!(&mut cursor, "abc");
+    /// assert_eq!(cursor.take_value(), Some(0));
+    /// ```
+    ///
+    /// For more examples, see [`ZeroTrieSimpleAscii::cursor`].
+    #[inline]
+    pub fn cursor(&self) -> ZeroAsciiIgnoreCaseTrieCursor {
+        ZeroAsciiIgnoreCaseTrieCursor {
+            trie: self.as_borrowed_slice(),
+        }
+    }
+}
+
+impl<'a> ZeroTrieSimpleAscii<&'a [u8]> {
+    /// Same as [`ZeroTrieSimpleAscii::cursor()`] but moves self to avoid
+    /// having to doubly anchor the trie to the stack.
+    #[inline]
+    pub fn into_cursor(self) -> ZeroTrieSimpleAsciiCursor<'a> {
+        ZeroTrieSimpleAsciiCursor { trie: self }
+    }
+}
+
+impl<'a> ZeroAsciiIgnoreCaseTrie<&'a [u8]> {
+    /// Same as [`ZeroAsciiIgnoreCaseTrie::cursor()`] but moves self to avoid
+    /// having to doubly anchor the trie to the stack.
+    #[inline]
+    pub fn into_cursor(self) -> ZeroAsciiIgnoreCaseTrieCursor<'a> {
+        ZeroAsciiIgnoreCaseTrieCursor { trie: self }
+    }
+}
+
+/// A cursor into a [`ZeroTrieSimpleAscii`], useful for stepwise lookup.
+///
+/// For examples, see [`ZeroTrieSimpleAscii::cursor()`].
+// Clone but not Copy: <https://stackoverflow.com/q/32324251/1407170>
+#[derive(Debug, Clone)]
+pub struct ZeroTrieSimpleAsciiCursor<'a> {
+    trie: ZeroTrieSimpleAscii<&'a [u8]>,
+}
+
+/// A cursor into a [`ZeroAsciiIgnoreCaseTrie`], useful for stepwise lookup.
+///
+/// For examples, see [`ZeroAsciiIgnoreCaseTrie::cursor()`].
+// Clone but not Copy: <https://stackoverflow.com/q/32324251/1407170>
+#[derive(Debug, Clone)]
+pub struct ZeroAsciiIgnoreCaseTrieCursor<'a> {
+    trie: ZeroAsciiIgnoreCaseTrie<&'a [u8]>,
+}
+
+/// Information about a probed edge.
+#[derive(Debug, Copy, Clone, PartialEq, Eq)]
+#[non_exhaustive] // no need to destructure or construct this in userland
+pub struct AsciiProbeResult {
+    /// The character's byte value between this node and its parent.
+    pub byte: u8,
+    /// The number of siblings of this node, _including itself_.
+    pub total_siblings: u8,
+}
+
+impl ZeroTrieSimpleAsciiCursor<'_> {
+    /// Steps the cursor one character into the trie based on the character's byte value.
+    ///
+    /// # Examples
+    ///
+    /// Unrolled loop checking for string presence at every step:
+    ///
+    /// ```
+    /// use zerotrie::ZeroTrieSimpleAscii;
+    ///
+    /// // A trie with two values: "abc" and "abcdef"
+    /// let trie = ZeroTrieSimpleAscii::from_bytes(b"abc\x80def\x81");
+    ///
+    /// // Search the trie for the string "abcdxy"
+    /// let mut cursor = trie.cursor();
+    /// assert_eq!(cursor.take_value(), None); // ""
+    /// cursor.step(b'a');
+    /// assert_eq!(cursor.take_value(), None); // "a"
+    /// cursor.step(b'b');
+    /// assert_eq!(cursor.take_value(), None); // "ab"
+    /// cursor.step(b'c');
+    /// assert_eq!(cursor.take_value(), Some(0)); // "abc"
+    /// cursor.step(b'd');
+    /// assert_eq!(cursor.take_value(), None); // "abcd"
+    /// assert!(!cursor.is_empty());
+    /// cursor.step(b'x'); // no strings have the prefix "abcdx"
+    /// assert!(cursor.is_empty());
+    /// assert_eq!(cursor.take_value(), None); // "abcdx"
+    /// cursor.step(b'y');
+    /// assert_eq!(cursor.take_value(), None); // "abcdxy"
+    /// ```
+    ///
+    /// If the byte is not ASCII, the cursor will become empty:
+    ///
+    /// ```
+    /// use zerotrie::ZeroTrieSimpleAscii;
+    ///
+    /// // A trie with two values: "abc" and "abcdef"
+    /// let trie = ZeroTrieSimpleAscii::from_bytes(b"abc\x80def\x81");
+    ///
+    /// let mut cursor = trie.cursor();
+    /// assert_eq!(cursor.take_value(), None); // ""
+    /// cursor.step(b'a');
+    /// assert_eq!(cursor.take_value(), None); // "a"
+    /// cursor.step(b'b');
+    /// assert_eq!(cursor.take_value(), None); // "ab"
+    /// cursor.step(b'\xFF');
+    /// assert!(cursor.is_empty());
+    /// assert_eq!(cursor.take_value(), None);
+    /// ```
+    #[inline]
+    pub fn step(&mut self, byte: u8) {
+        reader::step_parameterized::<ZeroTrieSimpleAscii<[u8]>>(&mut self.trie.store, byte);
+    }
+
+    /// Takes the value at the current position.
+    ///
+    /// Calling this function on a new cursor is equivalent to calling `.get()`
+    /// with the empty string (except that it can only be called once).
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerotrie::ZeroTrieSimpleAscii;
+    ///
+    /// // A trie with two values: "" and "abc"
+    /// let trie = ZeroTrieSimpleAscii::from_bytes(b"\x80abc\x81");
+    ///
+    /// assert_eq!(Some(0), trie.get(""));
+    /// let mut cursor = trie.cursor();
+    /// assert_eq!(Some(0), cursor.take_value());
+    /// assert_eq!(None, cursor.take_value());
+    /// ```
+    #[inline]
+    pub fn take_value(&mut self) -> Option<usize> {
+        reader::take_value(&mut self.trie.store)
+    }
+
+    /// Steps the cursor one character into the trie based on an edge index,
+    /// returning the corresponding character as a byte.
+    ///
+    /// This function is similar to [`Self::step()`], but it takes an index instead of a char.
+    /// This enables stepwise iteration over the contents of the trie.
+    ///
+    /// If there are multiple possibilities for the next byte, the `index` argument allows
+    /// visiting them in order. Since this function steps the cursor, the cursor must be
+    /// cloned (a cheap operation) in order to visit multiple children.
+    ///
+    /// # Examples
+    ///
+    /// Continually query index 0 to extract the first item from a trie:
+    ///
+    /// ```
+    /// use zerotrie::ZeroTrieSimpleAscii;
+    ///
+    /// let data: &[(String, usize)] = &[
+    ///     ("ab".to_string(), 111),
+    ///     ("abcxyz".to_string(), 22),
+    ///     ("abde".to_string(), 333),
+    ///     ("afg".to_string(), 44),
+    /// ];
+    ///
+    /// let trie: ZeroTrieSimpleAscii<Vec<u8>> =
+    ///     data.iter().map(|(s, v)| (s.as_str(), *v)).collect();
+    ///
+    /// let mut cursor = trie.cursor();
+    /// let mut key = String::new();
+    /// let value = loop {
+    ///     if let Some(value) = cursor.take_value() {
+    ///         break value;
+    ///     }
+    ///     let probe_result = cursor.probe(0).unwrap();
+    ///     key.push(char::from(probe_result.byte));
+    /// };
+    ///
+    /// assert_eq!(key, "ab");
+    /// assert_eq!(value, 111);
+    /// ```
+    ///
+    /// Stepwise iterate over all entries in the trie:
+    ///
+    /// ```
+    /// # use zerotrie::ZeroTrieSimpleAscii;
+    /// # let data: &[(String, usize)] = &[
+    /// #     ("ab".to_string(), 111),
+    /// #     ("abcxyz".to_string(), 22),
+    /// #     ("abde".to_string(), 333),
+    /// #     ("afg".to_string(), 44)
+    /// # ];
+    /// # let trie: ZeroTrieSimpleAscii<Vec<u8>> = data
+    /// #     .iter()
+    /// #     .map(|(s, v)| (s.as_str(), *v))
+    /// #     .collect();
+    /// // (trie built as in previous example)
+    ///
+    /// // Initialize the iteration at the first child of the trie.
+    /// let mut stack = Vec::from([(trie.cursor(), 0, 0)]);
+    /// let mut key = Vec::new();
+    /// let mut results = Vec::new();
+    /// loop {
+    ///     let Some((mut cursor, index, suffix_len)) = stack.pop() else {
+    ///         // Nothing left in the trie.
+    ///         break;
+    ///     };
+    ///     // Check to see if there is a value at the current node.
+    ///     if let Some(value) = cursor.take_value() {
+    ///         results.push((String::from_utf8(key.clone()).unwrap(), value));
+    ///     }
+    ///     // Now check for children of the current node.
+    ///     let mut sub_cursor = cursor.clone();
+    ///     if let Some(probe_result) = sub_cursor.probe(index) {
+    ///         // Found a child. Add the current byte edge to the key.
+    ///         key.push(probe_result.byte);
+    ///         // Add the child to the stack, and also add back the current
+    ///         // node if there are more siblings to visit.
+    ///         if index + 1 < probe_result.total_siblings as usize {
+    ///             stack.push((cursor, index + 1, suffix_len));
+    ///             stack.push((sub_cursor, 0, 1));
+    ///         } else {
+    ///             stack.push((sub_cursor, 0, suffix_len + 1));
+    ///         }
+    ///     } else {
+    ///         // No more children. Pop this node's bytes from the key.
+    ///         for _ in 0..suffix_len {
+    ///             key.pop();
+    ///         }
+    ///     }
+    /// }
+    ///
+    /// assert_eq!(&results, data);
+    /// ```
+    pub fn probe(&mut self, index: usize) -> Option<AsciiProbeResult> {
+        reader::probe_parameterized::<ZeroTrieSimpleAscii<[u8]>>(&mut self.trie.store, index)
+    }
+
+    /// Checks whether the cursor points to an empty trie.
+    ///
+    /// Use this to determine when to stop iterating.
+    #[inline]
+    pub fn is_empty(&self) -> bool {
+        self.trie.is_empty()
+    }
+}
+
+impl ZeroAsciiIgnoreCaseTrieCursor<'_> {
+    /// Steps the cursor one byte into the trie.
+    ///
+    /// Returns the byte if matched, which may be a different case than the input byte.
+    /// If this function returns `None`, any lookup loops can be terminated.
+    ///
+    /// # Examples
+    ///
+    /// Normalize the case of a value by stepping through an ignore-case trie:
+    ///
+    /// ```
+    /// use std::borrow::Cow;
+    /// use zerotrie::ZeroAsciiIgnoreCaseTrie;
+    ///
+    /// // A trie with two values: "aBc" and "aBcdEf"
+    /// let trie = ZeroAsciiIgnoreCaseTrie::from_bytes(b"aBc\x80dEf\x81");
+    ///
+    /// // Get out the value for "abc" and normalize the key string
+    /// let mut cursor = trie.cursor();
+    /// let mut key_str = Cow::Borrowed("abc".as_bytes());
+    /// let mut i = 0;
+    /// let value = loop {
+    ///     let Some(&input_byte) = key_str.get(i) else {
+    ///         break cursor.take_value();
+    ///     };
+    ///     let Some(matched_byte) = cursor.step(input_byte) else {
+    ///         break None;
+    ///     };
+    ///     if matched_byte != input_byte {
+    ///         key_str.to_mut()[i] = matched_byte;
+    ///     }
+    ///     i += 1;
+    /// };
+    ///
+    /// assert_eq!(value, Some(0));
+    /// assert_eq!(&*key_str, "aBc".as_bytes());
+    /// ```
+    ///
+    /// For more examples, see [`ZeroTrieSimpleAsciiCursor::step`].
+    #[inline]
+    pub fn step(&mut self, byte: u8) -> Option<u8> {
+        reader::step_parameterized::<ZeroAsciiIgnoreCaseTrie<[u8]>>(&mut self.trie.store, byte)
+    }
+
+    /// Takes the value at the current position.
+    ///
+    /// For more details, see [`ZeroTrieSimpleAsciiCursor::take_value`].
+    #[inline]
+    pub fn take_value(&mut self) -> Option<usize> {
+        reader::take_value(&mut self.trie.store)
+    }
+
+    /// Probes the next byte in the cursor.
+    ///
+    /// For more details, see [`ZeroTrieSimpleAsciiCursor::probe`].
+    pub fn probe(&mut self, index: usize) -> Option<AsciiProbeResult> {
+        reader::probe_parameterized::<ZeroAsciiIgnoreCaseTrie<[u8]>>(&mut self.trie.store, index)
+    }
+
+    /// Checks whether the cursor points to an empty trie.
+    ///
+    /// For more details, see [`ZeroTrieSimpleAsciiCursor::is_empty`].
+    #[inline]
+    pub fn is_empty(&self) -> bool {
+        self.trie.is_empty()
+    }
+}
+
+impl fmt::Write for ZeroTrieSimpleAsciiCursor<'_> {
+    /// Steps the cursor through each ASCII byte of the string.
+    ///
+    /// If the string contains non-ASCII chars, an error is returned.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use core::fmt::Write;
+    /// use zerotrie::ZeroTrieSimpleAscii;
+    ///
+    /// // A trie with two values: "abc" and "abcdef"
+    /// let trie = ZeroTrieSimpleAscii::from_bytes(b"abc\x80def\x81");
+    ///
+    /// let mut cursor = trie.cursor();
+    /// cursor.write_str("abcdxy").expect("all ASCII");
+    /// cursor.write_str("🚂").expect_err("non-ASCII");
+    /// ```
+    fn write_str(&mut self, s: &str) -> fmt::Result {
+        for b in s.bytes() {
+            if !b.is_ascii() {
+                return Err(fmt::Error);
+            }
+            self.step(b);
+        }
+        Ok(())
+    }
+
+    /// Equivalent to [`ZeroTrieSimpleAsciiCursor::step()`], except returns
+    /// an error if the char is non-ASCII.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use core::fmt::Write;
+    /// use zerotrie::ZeroTrieSimpleAscii;
+    ///
+    /// // A trie with two values: "abc" and "abcdef"
+    /// let trie = ZeroTrieSimpleAscii::from_bytes(b"abc\x80def\x81");
+    ///
+    /// let mut cursor = trie.cursor();
+    /// cursor.write_char('a').expect("ASCII");
+    /// cursor.write_char('x').expect("ASCII");
+    /// cursor.write_char('🚂').expect_err("non-ASCII");
+    /// ```
+    fn write_char(&mut self, c: char) -> fmt::Result {
+        if !c.is_ascii() {
+            return Err(fmt::Error);
+        }
+        self.step(c as u8);
+        Ok(())
+    }
+}
+
+impl fmt::Write for ZeroAsciiIgnoreCaseTrieCursor<'_> {
+    /// Steps the cursor through each ASCII byte of the string.
+    ///
+    /// If the string contains non-ASCII chars, an error is returned.
+    fn write_str(&mut self, s: &str) -> fmt::Result {
+        for b in s.bytes() {
+            if !b.is_ascii() {
+                return Err(fmt::Error);
+            }
+            self.step(b);
+        }
+        Ok(())
+    }
+
+    /// Equivalent to [`ZeroAsciiIgnoreCaseTrieCursor::step()`], except returns
+    /// an error if the char is non-ASCII.
+    fn write_char(&mut self, c: char) -> fmt::Result {
+        if !c.is_ascii() {
+            return Err(fmt::Error);
+        }
+        self.step(c as u8);
+        Ok(())
+    }
+}
diff --git a/vendor/zerotrie/src/error.rs b/vendor/zerotrie/src/error.rs
new file mode 100644
index 00000000..9ef5b86e
--- /dev/null
+++ b/vendor/zerotrie/src/error.rs
@@ -0,0 +1,25 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use displaydoc::Display;
+
+/// Error types for the `zerotrie` crate.
+#[derive(Debug, Copy, Clone, PartialEq, Eq, Display)]
+#[non_exhaustive]
+pub enum ZeroTrieBuildError {
+    /// Non-ASCII data was added to an ASCII-only trie.
+    #[displaydoc("Non-ASCII cannot be added to an ASCII-only trie")]
+    NonAsciiError,
+    /// The trie reached its maximum supported capacity.
+    #[displaydoc("Reached maximum capacity of trie")]
+    CapacityExceeded,
+    /// The builder could not solve the perfect hash function.
+    #[displaydoc("Failed to solve the perfect hash function. This is rare! Please report your case to the ICU4X team.")]
+    CouldNotSolvePerfectHash,
+    /// Mixed-case data was added to a case-insensitive trie.
+    #[displaydoc("Mixed-case data added to case-insensitive trie")]
+    MixedCase,
+}
+
+impl core::error::Error for ZeroTrieBuildError {}
diff --git a/vendor/zerotrie/src/helpers.rs b/vendor/zerotrie/src/helpers.rs
new file mode 100644
index 00000000..33440b97
--- /dev/null
+++ b/vendor/zerotrie/src/helpers.rs
@@ -0,0 +1,119 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+pub(crate) trait MaybeSplitAt<T> {
+    /// Like slice::split_at but debug-panics and returns an empty second slice
+    /// if the index is out of range.
+    fn debug_split_at(&self, mid: usize) -> (&Self, &Self);
+}
+
+impl<T> MaybeSplitAt<T> for [T] {
+    #[inline]
+    fn debug_split_at(&self, mid: usize) -> (&Self, &Self) {
+        self.split_at_checked(mid).unwrap_or_else(|| {
+            debug_assert!(false, "debug_split_at: {mid} expected to be in range");
+            (self, &[])
+        })
+    }
+}
+
+pub(crate) trait DebugUnwrapOr<T> {
+    /// Unwraps the option or panics in debug mode, returning the `gigo_value`
+    fn debug_unwrap_or(self, gigo_value: T) -> T;
+}
+
+impl<T> DebugUnwrapOr<T> for Option<T> {
+    #[inline]
+    fn debug_unwrap_or(self, gigo_value: T) -> T {
+        match self {
+            Some(x) => x,
+            None => {
+                debug_assert!(false, "debug_unwrap_or called on a None value");
+                gigo_value
+            }
+        }
+    }
+}
+
+macro_rules! debug_unwrap {
+    ($expr:expr, return $retval:expr, $($arg:tt)+) => {
+        match $expr {
+            Some(x) => x,
+            None => {
+                debug_assert!(false, $($arg)*);
+                return $retval;
+            }
+        }
+    };
+    ($expr:expr, return $retval:expr) => {
+        debug_unwrap!($expr, return $retval, "invalid trie")
+    };
+    ($expr:expr, break, $($arg:tt)+) => {
+        match $expr {
+            Some(x) => x,
+            None => {
+                debug_assert!(false, $($arg)*);
+                break;
+            }
+        }
+    };
+    ($expr:expr, break) => {
+        debug_unwrap!($expr, break, "invalid trie")
+    };
+    ($expr:expr, $($arg:tt)+) => {
+        debug_unwrap!($expr, return (), $($arg)*)
+    };
+    ($expr:expr) => {
+        debug_unwrap!($expr, return ())
+    };
+}
+
+pub(crate) use debug_unwrap;
+
+/// The maximum number of base-10 digits required for rendering a usize.
+/// Note: 24/10 is an approximation of 8*log10(2)
+pub(crate) const MAX_USIZE_LEN_AS_DIGITS: usize = core::mem::size_of::<usize>() * 24 / 10 + 1;
+
+/// Formats a usize as a string of length N, padded with spaces,
+/// with the given prefix.
+///
+/// If the string is too short, the function may panic. To prevent
+/// this, N should be MAX_USIZE_LEN_AS_DIGITS larger than M.
+pub(crate) const fn const_fmt_int<const M: usize, const N: usize>(
+    prefix: [u8; M],
+    value: usize,
+) -> [u8; N] {
+    let mut output = [b' '; N];
+    let mut i = 0;
+    while i < M {
+        output[i] = prefix[i];
+        i += 1;
+    }
+    let mut int_only = [b' '; MAX_USIZE_LEN_AS_DIGITS];
+    let mut value = value;
+    let mut i = MAX_USIZE_LEN_AS_DIGITS - 1;
+    loop {
+        let x = (value % 10) as u8;
+        int_only[i] = x + b'0';
+        value /= 10;
+        if value == 0 {
+            break;
+        }
+        i -= 1;
+    }
+    let mut j = M;
+    while i < MAX_USIZE_LEN_AS_DIGITS {
+        output[j] = int_only[i];
+        j += 1;
+        i += 1;
+    }
+    output
+}
+
+#[test]
+fn test_const_fmt_int() {
+    assert_eq!(*b"123", const_fmt_int::<0, 3>(*b"", 123));
+    assert_eq!(*b"123   ", const_fmt_int::<0, 6>(*b"", 123));
+    assert_eq!(*b"abc123", const_fmt_int::<3, 6>(*b"abc", 123));
+}
diff --git a/vendor/zerotrie/src/lib.rs b/vendor/zerotrie/src/lib.rs
new file mode 100644
index 00000000..a5c9e3d5
--- /dev/null
+++ b/vendor/zerotrie/src/lib.rs
@@ -0,0 +1,87 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! A data structure offering zero-copy storage and retrieval of byte strings, with a focus
+//! on the efficient storage of ASCII strings. Strings are mapped to `usize` values.
+//!
+//! [`ZeroTrie`] does not support mutation because doing so would require recomputing the entire
+//! data structure. Instead, it supports conversion to and from [`LiteMap`] and [`BTreeMap`].
+//!
+//! There are multiple variants of [`ZeroTrie`] optimized for different use cases.
+//!
+//! # Examples
+//!
+//! ```
+//! use zerotrie::ZeroTrie;
+//!
+//! let data: &[(&str, usize)] = &[("abc", 11), ("xyz", 22), ("axyb", 33)];
+//!
+//! let trie: ZeroTrie<Vec<u8>> = data.iter().copied().collect();
+//!
+//! assert_eq!(trie.get("axyb"), Some(33));
+//! assert_eq!(trie.byte_len(), 18);
+//! ```
+//!
+//! # Internal Structure
+//!
+//! To read about the internal structure of [`ZeroTrie`], build the docs with private modules:
+//!
+//! ```bash
+//! cargo doc --document-private-items --all-features --no-deps --open
+//! ```
+//!
+//! [`LiteMap`]: litemap::LiteMap
+//! [`BTreeMap`]: alloc::collections::BTreeMap
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        // TODO(#4034): Enable the rest of these lints.
+        // clippy::indexing_slicing,
+        // clippy::unwrap_used,
+        clippy::expect_used,
+        // clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums, clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+#![warn(missing_docs)]
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+mod builder;
+mod byte_phf;
+pub mod cursor;
+mod error;
+#[macro_use]
+mod helpers;
+mod options;
+mod reader;
+#[cfg(feature = "serde")]
+mod serde;
+mod varint;
+mod zerotrie;
+
+pub use crate::zerotrie::ZeroAsciiIgnoreCaseTrie;
+pub use crate::zerotrie::ZeroTrie;
+pub use crate::zerotrie::ZeroTrieExtendedCapacity;
+pub use crate::zerotrie::ZeroTriePerfectHash;
+pub use crate::zerotrie::ZeroTrieSimpleAscii;
+pub use error::ZeroTrieBuildError;
+
+#[cfg(feature = "alloc")]
+pub use crate::zerotrie::ZeroTrieStringIterator;
+#[cfg(feature = "alloc")]
+pub use reader::ZeroTrieIterator;
+
+#[doc(hidden)]
+pub mod _internal {
+    pub use crate::byte_phf::f1;
+    pub use crate::byte_phf::f2;
+    pub use crate::byte_phf::PerfectByteHashMap;
+}
diff --git a/vendor/zerotrie/src/options.rs b/vendor/zerotrie/src/options.rs
new file mode 100644
index 00000000..58a72bbc
--- /dev/null
+++ b/vendor/zerotrie/src/options.rs
@@ -0,0 +1,153 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Options for building and reading from a ZeroTrie.
+//!
+//! These options are internal to the crate. A small selection of options
+//! are exported by way of the different public types on this crate.
+
+/// Whether to use the perfect hash function in the ZeroTrie.
+#[derive(Copy, Clone)]
+pub(crate) enum PhfMode {
+    /// Use binary search for all branch nodes.
+    BinaryOnly,
+    /// Use the perfect hash function for large branch nodes.
+    UsePhf,
+}
+
+impl PhfMode {
+    #[cfg(feature = "serde")]
+    const fn to_u8_flag(self) -> u8 {
+        match self {
+            Self::BinaryOnly => 0,
+            Self::UsePhf => 0x1,
+        }
+    }
+}
+
+/// Whether to support non-ASCII data in the ZeroTrie.
+#[derive(Copy, Clone)]
+pub(crate) enum AsciiMode {
+    /// Support only ASCII, returning an error if non-ASCII is found.
+    AsciiOnly,
+    /// Support all data, creating span nodes for non-ASCII bytes.
+    BinarySpans,
+}
+
+impl AsciiMode {
+    #[cfg(feature = "serde")]
+    const fn to_u8_flag(self) -> u8 {
+        match self {
+            Self::AsciiOnly => 0,
+            Self::BinarySpans => 0x2,
+        }
+    }
+}
+
+/// Whether to enforce a limit to the capacity of the ZeroTrie.
+#[derive(Copy, Clone)]
+pub(crate) enum CapacityMode {
+    /// Return an error if the trie requires a branch of more than 2^32 bytes.
+    Normal,
+    /// Construct the trie without returning an error.
+    Extended,
+}
+
+impl CapacityMode {
+    #[cfg(feature = "serde")]
+    const fn to_u8_flag(self) -> u8 {
+        match self {
+            Self::Normal => 0,
+            Self::Extended => 0x4,
+        }
+    }
+}
+
+/// How to handle strings with mixed ASCII case at a node, such as "abc" and "Abc"
+#[derive(Copy, Clone)]
+pub(crate) enum CaseSensitivity {
+    /// Allow all strings and sort them by byte value.
+    Sensitive,
+    /// Reject strings with different case and sort them as if `to_ascii_lowercase` is called.
+    IgnoreCase,
+}
+
+impl CaseSensitivity {
+    #[cfg(feature = "serde")]
+    const fn to_u8_flag(self) -> u8 {
+        match self {
+            Self::Sensitive => 0,
+            Self::IgnoreCase => 0x8,
+        }
+    }
+}
+
+#[derive(Copy, Clone)]
+pub(crate) struct ZeroTrieBuilderOptions {
+    pub phf_mode: PhfMode,
+    pub ascii_mode: AsciiMode,
+    pub capacity_mode: CapacityMode,
+    pub case_sensitivity: CaseSensitivity,
+}
+
+impl ZeroTrieBuilderOptions {
+    #[cfg(feature = "serde")]
+    pub(crate) const fn to_u8_flags(self) -> u8 {
+        self.phf_mode.to_u8_flag()
+            | self.ascii_mode.to_u8_flag()
+            | self.capacity_mode.to_u8_flag()
+            | self.case_sensitivity.to_u8_flag()
+    }
+}
+
+pub(crate) trait ZeroTrieWithOptions {
+    const OPTIONS: ZeroTrieBuilderOptions;
+}
+
+/// All branch nodes are binary search
+/// and there are no span nodes.
+impl<S: ?Sized> ZeroTrieWithOptions for crate::ZeroTrieSimpleAscii<S> {
+    const OPTIONS: ZeroTrieBuilderOptions = ZeroTrieBuilderOptions {
+        phf_mode: PhfMode::BinaryOnly,
+        ascii_mode: AsciiMode::AsciiOnly,
+        capacity_mode: CapacityMode::Normal,
+        case_sensitivity: CaseSensitivity::Sensitive,
+    };
+}
+
+impl<S: ?Sized> crate::ZeroTrieSimpleAscii<S> {
+    #[cfg(feature = "serde")]
+    pub(crate) const FLAGS: u8 = Self::OPTIONS.to_u8_flags();
+}
+
+/// All branch nodes are binary search
+/// and nodes use case-insensitive matching.
+impl<S: ?Sized> ZeroTrieWithOptions for crate::ZeroAsciiIgnoreCaseTrie<S> {
+    const OPTIONS: ZeroTrieBuilderOptions = ZeroTrieBuilderOptions {
+        phf_mode: PhfMode::BinaryOnly,
+        ascii_mode: AsciiMode::AsciiOnly,
+        capacity_mode: CapacityMode::Normal,
+        case_sensitivity: CaseSensitivity::IgnoreCase,
+    };
+}
+
+/// Branch nodes could be either binary search or PHF.
+impl<S: ?Sized> ZeroTrieWithOptions for crate::ZeroTriePerfectHash<S> {
+    const OPTIONS: ZeroTrieBuilderOptions = ZeroTrieBuilderOptions {
+        phf_mode: PhfMode::UsePhf,
+        ascii_mode: AsciiMode::BinarySpans,
+        capacity_mode: CapacityMode::Normal,
+        case_sensitivity: CaseSensitivity::Sensitive,
+    };
+}
+
+/// No limited capacity assertion.
+impl<S: ?Sized> ZeroTrieWithOptions for crate::ZeroTrieExtendedCapacity<S> {
+    const OPTIONS: ZeroTrieBuilderOptions = ZeroTrieBuilderOptions {
+        phf_mode: PhfMode::UsePhf,
+        ascii_mode: AsciiMode::BinarySpans,
+        capacity_mode: CapacityMode::Extended,
+        case_sensitivity: CaseSensitivity::Sensitive,
+    };
+}
diff --git a/vendor/zerotrie/src/reader.rs b/vendor/zerotrie/src/reader.rs
new file mode 100644
index 00000000..4d3dd005
--- /dev/null
+++ b/vendor/zerotrie/src/reader.rs
@@ -0,0 +1,727 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! # Internal layout of ZeroTrie
+//!
+//! A ZeroTrie is composed of a series of nodes stored in sequence in a byte slice.
+//!
+//! There are 4 types of nodes:
+//!
+//! 1. ASCII (`0xxxxxxx`): matches a literal ASCII byte.
+//! 2. Span (`101xxxxx`): matches a span of non-ASCII bytes.
+//! 3. Value (`100xxxxx`): associates a value with a string
+//! 4. Branch (`11xxxxxx`): matches one of a set of bytes.
+//!
+//! Span, Value, and Branch nodes contain a varint, which has different semantics for each:
+//!
+//! - Span varint: length of the span
+//! - Value varint: value associated with the string
+//! - Branch varint: number of edges in the branch and width of the offset table
+//!
+//! If reading an ASCII, Span, or Branch node, one or more bytes are consumed from the input
+//! string. If the next byte(s) in the input string do not match the node, we return `None`.
+//! If reading a Value node, if the string is empty, return `Some(value)`; otherwise, we skip
+//! the Value node and continue on to the next node.
+//!
+//! When a node is consumed, a shorter, well-formed ZeroTrie remains.
+//!
+//! ### Basic Example
+//!
+//! Here is an example ZeroTrie without branch nodes:
+//!
+//! ```
+//! use zerotrie::ZeroTriePerfectHash;
+//!
+//! let bytes = [
+//!     b'a',       // ASCII literal
+//!     0b10001010, // value 10
+//!     b'b',       // ASCII literal
+//!     0b10100011, // span of 3
+//!     0x81,       // first byte in span
+//!     0x91,       // second byte in span
+//!     0xA1,       // third and final byte in span
+//!     0b10000100, // value 4
+//! ];
+//!
+//! let trie = ZeroTriePerfectHash::from_bytes(&bytes);
+//!
+//! // First value: "a" → 10
+//! assert_eq!(trie.get(b"a"), Some(10));
+//!
+//! // Second value: "ab\x81\x91\xA1" → 4
+//! assert_eq!(trie.get(b"ab\x81\x91\xA1"), Some(4));
+//!
+//! // A few examples of strings that do NOT have values in the trie:
+//! assert_eq!(trie.get(b"ab"), None);
+//! assert_eq!(trie.get(b"b"), None);
+//! assert_eq!(trie.get(b"b\x81\x91\xA1"), None);
+//! ```
+//!
+//! ## Branch Nodes
+//!
+//! There are two types of branch nodes: binary search and perfect hash. `ZeroTrieSimpleAscii`
+//! contains only binary search nodes, whereas `ZeroTriePerfectHash` can contain either.
+//!
+//! The head node of the branch has a varint that encodes two things:
+//!
+//! - Bottom 8 bits: number of edges in the branch (`N`); if N = 0, set N to 256
+//! - Bits 9 and 10: width of the offset table (`W`)
+//!
+//! Note that N is always in the range [1, 256]. There can't be more than 256 edges because
+//! there are only 256 unique u8 values.
+//!
+//! A few examples of the head node of the branch:
+//!
+//! - `0b11000000`: varint bits `0`: N = 0 which means N = 256; W = 0
+//! - `0b11000110`: varint bits `110`: N = 6; W = 0
+//! - `0b11100000 0b00000101`: varint bits `1000101`: N = 69; W = 0
+//! - `0b11100010 0b00000000`: varint bits `101000000`: N = 64; W = 1
+//!
+//! In `ZeroTriePerfectHash`, if N <= 15, the branch is assumed to be a binary search, and if
+//! N > 15, the branch is assumed to be a perfect hash.
+//!
+//! ### Binary Search Branch Nodes
+//!
+//! A binary search branch node is used when:
+//!
+//! 1. The trie is a `ZeroTrieSimpleAscii`, OR
+//! 2. There are 15 or fewer items in the branch.
+//!
+//! The head branch node is followed by N sorted bytes. When evaluating a branch node, one byte
+//! is consumed from the input. If it is one of the N sorted bytes (scanned using binary search),
+//! the index `i` of the byte within the list is used to index into the offset table (described
+//! below). If the byte is not in the list, the string is not in the trie, so return `None`.
+//!
+//! ### Perfect Hash Branch Nodes
+//!
+//! A perfect hash branch node is used when:
+//!
+//! 1. The trie is NOT a `ZeroTrieSimpleAscii`, AND
+//! 2. There are 16 or more items in the branch.
+//!
+//! The head branch node is followed by 1 byte containing parameter `p`, N bytes containing
+//! parameters `q`, and N bytes containing the bytes to match. From these parameters, either an
+//! index within the hash table `i` is resolved and used as input to index into the offset
+//! table (described below), or the value is determined to not be present and `None` is
+//! returned. For more detail on resolving the perfect hash function, see [`crate::byte_phf`].
+//!
+//! ### Offset Tables
+//!
+//! The _offset table_ encodes the range of the remaining buffer containing the trie reachable
+//! from the byte matched in the branch node. Both types of branch nodes include an offset
+//! table followig the key lookup. Given the index `i` from the first step, the range
+//! `[s_i, s_(i+1))` brackets the next step in the trie.
+//!
+//! Offset tables utilize the `W` parameter stored in the branch head node. The special case
+//! when `W == 0`, with `N - 1` bytes, is easiest to understand:
+//!
+//! **Offset table, W = 0:** `[s_1, s_2, ..., s_(N-1)]`
+//!
+//! Note that `s_0` is always 0 and `s_N` is always the length of the remaining slice, so those
+//! values are not explicitly included in the offset table.
+//!
+//! When W > 0, the high and low bits of the offsets are in separate bytes, arranged as follows:
+//!
+//! **Generalized offset table:** `[a_1, a_2, ..., a_(N-1), b_1, b_2, ..., b_(N-1), c_1, ...]`
+//!
+//! where `s_i = (a_i << 8 + b_i) << 8 + c_i ...` (high bits first, low bits last)
+//!
+//! ### Advanced Example
+//!
+//! The following trie encodes the following map. It has multiple varints and branch nodes, which
+//! are all binary search with W = 0. Note that there is a value for the empty string.
+//!
+//! - "" → 0
+//! - "axb" → 100
+//! - "ayc" → 2
+//! - "azd" → 3
+//! - "bxe" → 4
+//! - "bxefg" → 500
+//! - "bxefh" → 6
+//! - "bxei" → 7
+//! - "bxeikl" → 8
+//!
+//! ```
+//! use zerotrie::ZeroTrieSimpleAscii;
+//!
+//! let bytes = [
+//!     0b10000000, // value 0
+//!     0b11000010, // branch of 2
+//!     b'a',       //
+//!     b'b',       //
+//!     13,         //
+//!     0b11000011, // start of 'a' subtree: branch of 3
+//!     b'x',       //
+//!     b'y',       //
+//!     b'z',       //
+//!     3,          //
+//!     5,          //
+//!     b'b',       //
+//!     0b10010000, // value 100 (lead)
+//!     0x54,       // value 100 (trail)
+//!     b'c',       //
+//!     0b10000010, // value 2
+//!     b'd',       //
+//!     0b10000011, // value 3
+//!     b'x',       // start of 'b' subtree
+//!     b'e',       //
+//!     0b10000100, // value 4
+//!     0b11000010, // branch of 2
+//!     b'f',       //
+//!     b'i',       //
+//!     7,          //
+//!     0b11000010, // branch of 2
+//!     b'g',       //
+//!     b'h',       //
+//!     2,          //
+//!     0b10010011, // value 500 (lead)
+//!     0x64,       // value 500 (trail)
+//!     0b10000110, // value 6
+//!     0b10000111, // value 7
+//!     b'k',       //
+//!     b'l',       //
+//!     0b10001000, // value 8
+//! ];
+//!
+//! let trie = ZeroTrieSimpleAscii::from_bytes(&bytes);
+//!
+//! // Assert that the specified items are in the map
+//! assert_eq!(trie.get(b""), Some(0));
+//! assert_eq!(trie.get(b"axb"), Some(100));
+//! assert_eq!(trie.get(b"ayc"), Some(2));
+//! assert_eq!(trie.get(b"azd"), Some(3));
+//! assert_eq!(trie.get(b"bxe"), Some(4));
+//! assert_eq!(trie.get(b"bxefg"), Some(500));
+//! assert_eq!(trie.get(b"bxefh"), Some(6));
+//! assert_eq!(trie.get(b"bxei"), Some(7));
+//! assert_eq!(trie.get(b"bxeikl"), Some(8));
+//!
+//! // Assert that some other items are not in the map
+//! assert_eq!(trie.get(b"a"), None);
+//! assert_eq!(trie.get(b"bx"), None);
+//! assert_eq!(trie.get(b"xba"), None);
+//! ```
+
+use crate::byte_phf::PerfectByteHashMap;
+use crate::cursor::AsciiProbeResult;
+use crate::helpers::*;
+use crate::options::*;
+use crate::varint::read_varint_meta2;
+use crate::varint::read_varint_meta3;
+
+#[cfg(feature = "alloc")]
+use alloc::string::String;
+
+/// Given a slice starting with an offset table, returns the trie for the given index.
+///
+/// Arguments:
+/// - `trie` = a trie pointing at an offset table (after the branch node and search table)
+/// - `i` = the desired index within the offset table
+/// - `n` = the number of items in the offset table
+/// - `w` = the width of the offset table items minus one
+#[inline]
+fn get_branch(mut trie: &[u8], i: usize, n: usize, mut w: usize) -> &[u8] {
+    let mut p = 0usize;
+    let mut q = 0usize;
+    loop {
+        let indices;
+        (indices, trie) = trie.debug_split_at(n - 1);
+        p = (p << 8)
+            + if i == 0 {
+                0
+            } else {
+                *indices.get(i - 1).debug_unwrap_or(&0) as usize
+            };
+        q = match indices.get(i) {
+            Some(x) => (q << 8) + *x as usize,
+            None => trie.len(),
+        };
+        if w == 0 {
+            break;
+        }
+        w -= 1;
+    }
+    trie.get(p..q).debug_unwrap_or(&[])
+}
+
+/// Version of [`get_branch()`] specialized for the case `w == 0` for performance
+#[inline]
+fn get_branch_w0(mut trie: &[u8], i: usize, n: usize) -> &[u8] {
+    let indices;
+    (indices, trie) = trie.debug_split_at(n - 1);
+    let p = if i == 0 {
+        0
+    } else {
+        *indices.get(i - 1).debug_unwrap_or(&0) as usize
+    };
+    let q = match indices.get(i) {
+        Some(x) => *x as usize,
+        None => trie.len(),
+    };
+    trie.get(p..q).debug_unwrap_or(&[])
+}
+
+/// The node type. See the module-level docs for more explanation of the four node types.
+enum NodeType {
+    /// An ASCII node. Contains a single literal ASCII byte and no varint.
+    Ascii,
+    /// A span node. Contains a varint indicating how big the span is.
+    Span,
+    /// A value node. Contains a varint representing the value.
+    Value,
+    /// A branch node. Contains a varint of the number of output nodes, plus W in the high bits.
+    Branch,
+}
+
+impl core::fmt::Debug for NodeType {
+    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
+        use NodeType::*;
+        f.write_str(match *self {
+            Ascii => "a",
+            Span => "s",
+            Value => "v",
+            Branch => "m",
+        })
+    }
+}
+
+#[inline]
+fn byte_type(b: u8) -> NodeType {
+    match b & 0b11100000 {
+        0b10000000 => NodeType::Value,
+        0b10100000 => NodeType::Span,
+        0b11000000 => NodeType::Branch,
+        0b11100000 => NodeType::Branch,
+        _ => NodeType::Ascii,
+    }
+}
+
+#[inline]
+pub(crate) fn get_parameterized<T: ZeroTrieWithOptions + ?Sized>(
+    mut trie: &[u8],
+    mut ascii: &[u8],
+) -> Option<usize> {
+    loop {
+        let (b, x, i, search);
+        (b, trie) = trie.split_first()?;
+        let byte_type = byte_type(*b);
+        (x, trie) = match byte_type {
+            NodeType::Ascii => (0, trie),
+            NodeType::Span => {
+                if matches!(T::OPTIONS.ascii_mode, AsciiMode::BinarySpans) {
+                    read_varint_meta3(*b, trie)
+                } else {
+                    debug_assert!(false, "Span node found in ASCII trie!");
+                    return None;
+                }
+            }
+            NodeType::Value => read_varint_meta3(*b, trie),
+            NodeType::Branch => read_varint_meta2(*b, trie),
+        };
+        if let Some((c, temp)) = ascii.split_first() {
+            if matches!(byte_type, NodeType::Ascii) {
+                let is_match = if matches!(T::OPTIONS.case_sensitivity, CaseSensitivity::IgnoreCase)
+                {
+                    b.eq_ignore_ascii_case(c)
+                } else {
+                    b == c
+                };
+                if is_match {
+                    // Matched a byte
+                    ascii = temp;
+                    continue;
+                } else {
+                    // Byte that doesn't match
+                    return None;
+                }
+            }
+            if matches!(byte_type, NodeType::Value) {
+                // Value node, but not at end of string
+                continue;
+            }
+            if matches!(T::OPTIONS.ascii_mode, AsciiMode::BinarySpans)
+                && matches!(byte_type, NodeType::Span)
+            {
+                let (trie_span, ascii_span);
+                (trie_span, trie) = trie.debug_split_at(x);
+                (ascii_span, ascii) = ascii.split_at_checked(x)?;
+                if trie_span == ascii_span {
+                    // Matched a byte span
+                    continue;
+                } else {
+                    // Byte span that doesn't match
+                    return None;
+                }
+            }
+            // Branch node
+            let (x, w) = if x >= 256 { (x & 0xff, x >> 8) } else { (x, 0) };
+            let w = if matches!(T::OPTIONS.capacity_mode, CapacityMode::Extended) {
+                w
+            } else {
+                // See the table below regarding this assertion
+                debug_assert!(w <= 3, "get: w > 3 but we assume w <= 3");
+                w & 0x3
+            };
+            let x = if x == 0 { 256 } else { x };
+            if matches!(T::OPTIONS.phf_mode, PhfMode::BinaryOnly) || x < 16 {
+                // binary search
+                (search, trie) = trie.debug_split_at(x);
+                let bsearch_result =
+                    if matches!(T::OPTIONS.case_sensitivity, CaseSensitivity::IgnoreCase) {
+                        search.binary_search_by_key(&c.to_ascii_lowercase(), |x| {
+                            x.to_ascii_lowercase()
+                        })
+                    } else {
+                        search.binary_search(c)
+                    };
+                i = bsearch_result.ok()?;
+            } else {
+                // phf
+                (search, trie) = trie.debug_split_at(x * 2 + 1);
+                i = PerfectByteHashMap::from_store(search).get(*c)?;
+            }
+            trie = if w == 0 {
+                get_branch_w0(trie, i, x)
+            } else {
+                get_branch(trie, i, x, w)
+            };
+            ascii = temp;
+            continue;
+        } else {
+            if matches!(byte_type, NodeType::Value) {
+                // Value node at end of string
+                return Some(x);
+            }
+            return None;
+        }
+    }
+}
+
+// DISCUSS: This function is 7% faster *on aarch64* if we assert a max on w.
+//
+// | Bench         | No Assert, x86_64 | No Assert, aarch64 | Assertion, x86_64 | Assertion, aarch64 |
+// |---------------|-------------------|--------------------|-------------------|--------------------|
+// | basic         | ~187.51 ns        | ~97.586 ns         | ~199.11 ns        | ~99.236 ns         |
+// | subtags_10pct | ~9.5557 µs        | ~4.8696 µs         | ~9.5779 µs        | ~4.5649 µs         |
+// | subtags_full  | ~137.75 µs        | ~76.016 µs         | ~142.02 µs        | ~70.254 µs         |
+
+/// Steps one node into the trie assuming all branch nodes are binary search and that
+/// there are no span nodes.
+///
+/// The input-output argument `trie` starts at the original trie and ends pointing to
+/// the sub-trie reachable by `c`.
+#[inline]
+pub(crate) fn step_parameterized<T: ZeroTrieWithOptions + ?Sized>(
+    trie: &mut &[u8],
+    c: u8,
+) -> Option<u8> {
+    // Currently, the only option `step_parameterized` supports is `CaseSensitivity::IgnoreCase`.
+    // `AsciiMode::BinarySpans` is tricky because the state can no longer be simply a trie.
+    // If a span node is encountered, `None` is returned later in this function.
+    debug_assert!(
+        matches!(T::OPTIONS.ascii_mode, AsciiMode::AsciiOnly),
+        "Spans not yet implemented in step function"
+    );
+    // PHF can be easily implemented but the code is not yet reachable
+    debug_assert!(
+        matches!(T::OPTIONS.phf_mode, PhfMode::BinaryOnly),
+        "PHF not yet implemented in step function"
+    );
+    // Extended Capacity can be easily implemented but the code is not yet reachable
+    debug_assert!(
+        matches!(T::OPTIONS.capacity_mode, CapacityMode::Normal),
+        "Extended capacity not yet implemented in step function"
+    );
+    let (mut b, x, search);
+    loop {
+        (b, *trie) = match trie.split_first() {
+            Some(v) => v,
+            None => {
+                // Empty trie or only a value node
+                return None;
+            }
+        };
+        match byte_type(*b) {
+            NodeType::Ascii => {
+                let is_match = if matches!(T::OPTIONS.case_sensitivity, CaseSensitivity::IgnoreCase)
+                {
+                    b.eq_ignore_ascii_case(&c)
+                } else {
+                    *b == c
+                };
+                if is_match {
+                    // Matched a byte
+                    return Some(*b);
+                } else {
+                    // Byte that doesn't match
+                    *trie = &[];
+                    return None;
+                }
+            }
+            NodeType::Branch => {
+                // Proceed to the branch node logic below
+                (x, *trie) = read_varint_meta2(*b, trie);
+                break;
+            }
+            NodeType::Span => {
+                // Question: Should we put the trie back into a valid state?
+                // Currently this code is unreachable so let's not worry about it.
+                debug_assert!(false, "Span node found in ASCII trie!");
+                return None;
+            }
+            NodeType::Value => {
+                // Skip the value node and go to the next node
+                (_, *trie) = read_varint_meta3(*b, trie);
+                continue;
+            }
+        };
+    }
+    // Branch node
+    let (x, w) = if x >= 256 { (x & 0xff, x >> 8) } else { (x, 0) };
+    // See comment above regarding this assertion
+    debug_assert!(w <= 3, "get: w > 3 but we assume w <= 3");
+    let w = w & 0x3;
+    let x = if x == 0 { 256 } else { x };
+    // Always use binary search
+    (search, *trie) = trie.debug_split_at(x);
+    let bsearch_result = if matches!(T::OPTIONS.case_sensitivity, CaseSensitivity::IgnoreCase) {
+        search.binary_search_by_key(&c.to_ascii_lowercase(), |x| x.to_ascii_lowercase())
+    } else {
+        search.binary_search(&c)
+    };
+    match bsearch_result {
+        Ok(i) => {
+            // Matched a byte
+            *trie = if w == 0 {
+                get_branch_w0(trie, i, x)
+            } else {
+                get_branch(trie, i, x, w)
+            };
+            Some(search[i])
+        }
+        Err(_) => {
+            // Byte that doesn't match
+            *trie = &[];
+            None
+        }
+    }
+}
+
+/// Steps one node into the trie, assuming all branch nodes are binary search and that
+/// there are no span nodes, using an index.
+///
+/// The input-output argument `trie` starts at the original trie and ends pointing to
+/// the sub-trie indexed by `index`.
+#[inline]
+pub(crate) fn probe_parameterized<T: ZeroTrieWithOptions + ?Sized>(
+    trie: &mut &[u8],
+    index: usize,
+) -> Option<AsciiProbeResult> {
+    // Currently, the only option `step_parameterized` supports is `CaseSensitivity::IgnoreCase`.
+    // `AsciiMode::BinarySpans` is tricky because the state can no longer be simply a trie.
+    // If a span node is encountered, `None` is returned later in this function.
+    debug_assert!(
+        matches!(T::OPTIONS.ascii_mode, AsciiMode::AsciiOnly),
+        "Spans not yet implemented in step function"
+    );
+    // PHF can be easily implemented but the code is not yet reachable
+    debug_assert!(
+        matches!(T::OPTIONS.phf_mode, PhfMode::BinaryOnly),
+        "PHF not yet implemented in step function"
+    );
+    // Extended Capacity can be easily implemented but the code is not yet reachable
+    debug_assert!(
+        matches!(T::OPTIONS.capacity_mode, CapacityMode::Normal),
+        "Extended capacity not yet implemented in step function"
+    );
+    let (mut b, x, search);
+    loop {
+        (b, *trie) = match trie.split_first() {
+            Some(v) => v,
+            None => {
+                // Empty trie or only a value node
+                return None;
+            }
+        };
+        match byte_type(*b) {
+            NodeType::Ascii => {
+                if index > 0 {
+                    *trie = &[];
+                    return None;
+                }
+                return Some(AsciiProbeResult {
+                    byte: *b,
+                    total_siblings: 1,
+                });
+            }
+            NodeType::Branch => {
+                // Proceed to the branch node logic below
+                (x, *trie) = read_varint_meta2(*b, trie);
+                break;
+            }
+            NodeType::Span => {
+                // Question: Should we put the trie back into a valid state?
+                // Currently this code is unreachable so let's not worry about it.
+                debug_assert!(false, "Span node found in ASCII trie!");
+                return None;
+            }
+            NodeType::Value => {
+                // Skip the value node and go to the next node
+                (_, *trie) = read_varint_meta3(*b, trie);
+                continue;
+            }
+        };
+    }
+    // Branch node
+    let (x, w) = if x >= 256 { (x & 0xff, x >> 8) } else { (x, 0) };
+    debug_assert!(u8::try_from(x).is_ok());
+    let total_siblings = x as u8;
+    // See comment above regarding this assertion
+    debug_assert!(w <= 3, "get: w > 3 but we assume w <= 3");
+    let w = w & 0x3;
+    let x = if x == 0 { 256 } else { x };
+    if index >= x {
+        *trie = &[];
+        return None;
+    }
+    (search, *trie) = trie.debug_split_at(x);
+    *trie = if w == 0 {
+        get_branch_w0(trie, index, x)
+    } else {
+        get_branch(trie, index, x, w)
+    };
+    Some(AsciiProbeResult {
+        byte: search[index],
+        total_siblings,
+    })
+}
+
+/// Steps one node into the trie if the head node is a value node, returning the value.
+/// If the head node is not a value node, no change is made.
+///
+/// The input-output argument `trie` starts at the original trie and ends pointing to
+/// the sub-trie with the value node removed.
+pub(crate) fn take_value(trie: &mut &[u8]) -> Option<usize> {
+    let (b, new_trie) = trie.split_first()?;
+    match byte_type(*b) {
+        NodeType::Ascii | NodeType::Span | NodeType::Branch => None,
+        NodeType::Value => {
+            let x;
+            (x, *trie) = read_varint_meta3(*b, new_trie);
+            Some(x)
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+
+/// Iterator type for walking the byte sequences contained in a ZeroTrie.
+#[cfg(feature = "alloc")]
+#[derive(Debug)]
+pub struct ZeroTrieIterator<'a> {
+    /// Whether the PHF is enabled on this trie.
+    use_phf: bool,
+    /// Intermediate state during iteration:
+    /// 1. A trie (usually a slice of the original, bigger trie)
+    /// 2. The string that leads to the trie
+    /// 3. If the trie's lead node is a branch node, the current index being evaluated
+    state: Vec<(&'a [u8], Vec<u8>, usize)>,
+}
+
+#[cfg(feature = "alloc")]
+impl<'a> ZeroTrieIterator<'a> {
+    pub(crate) fn new<S: AsRef<[u8]> + ?Sized>(store: &'a S, use_phf: bool) -> Self {
+        ZeroTrieIterator {
+            use_phf,
+            state: alloc::vec![(store.as_ref(), alloc::vec![], 0)],
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl Iterator for ZeroTrieIterator<'_> {
+    type Item = (Vec<u8>, usize);
+    fn next(&mut self) -> Option<Self::Item> {
+        let (mut trie, mut string, mut branch_idx);
+        (trie, string, branch_idx) = self.state.pop()?;
+        loop {
+            let (b, x, span, search);
+            let return_trie = trie;
+            (b, trie) = match trie.split_first() {
+                Some(tpl) => tpl,
+                None => {
+                    // At end of current branch; step back to the branch node.
+                    // If there are no more branches, we are finished.
+                    (trie, string, branch_idx) = self.state.pop()?;
+                    continue;
+                }
+            };
+            let byte_type = byte_type(*b);
+            if matches!(byte_type, NodeType::Ascii) {
+                string.push(*b);
+                continue;
+            }
+            (x, trie) = match byte_type {
+                NodeType::Ascii => (0, trie),
+                NodeType::Span | NodeType::Value => read_varint_meta3(*b, trie),
+                NodeType::Branch => read_varint_meta2(*b, trie),
+            };
+            if matches!(byte_type, NodeType::Span) {
+                (span, trie) = trie.debug_split_at(x);
+                string.extend(span);
+                continue;
+            }
+            if matches!(byte_type, NodeType::Value) {
+                let retval = string.clone();
+                // Return to this position on the next step
+                self.state.push((trie, string, 0));
+                return Some((retval, x));
+            }
+            // Match node
+            let (x, w) = if x >= 256 { (x & 0xff, x >> 8) } else { (x, 0) };
+            let x = if x == 0 { 256 } else { x };
+            if branch_idx + 1 < x {
+                // Return to this branch node at the next index
+                self.state
+                    .push((return_trie, string.clone(), branch_idx + 1));
+            }
+            let byte = if x < 16 || !self.use_phf {
+                // binary search
+                (search, trie) = trie.debug_split_at(x);
+                debug_unwrap!(search.get(branch_idx), return None)
+            } else {
+                // phf
+                (search, trie) = trie.debug_split_at(x * 2 + 1);
+                debug_unwrap!(search.get(branch_idx + x + 1), return None)
+            };
+            string.push(*byte);
+            trie = if w == 0 {
+                get_branch_w0(trie, branch_idx, x)
+            } else {
+                get_branch(trie, branch_idx, x, w)
+            };
+            branch_idx = 0;
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+pub(crate) fn get_iter_phf<S: AsRef<[u8]> + ?Sized>(store: &S) -> ZeroTrieIterator<'_> {
+    ZeroTrieIterator::new(store, true)
+}
+
+/// # Panics
+/// Panics if the trie contains non-ASCII items.
+#[cfg(feature = "alloc")]
+#[allow(clippy::type_complexity)]
+pub(crate) fn get_iter_ascii_or_panic<S: AsRef<[u8]> + ?Sized>(
+    store: &S,
+) -> core::iter::Map<ZeroTrieIterator<'_>, fn((Vec<u8>, usize)) -> (String, usize)> {
+    ZeroTrieIterator::new(store, false).map(|(k, v)| {
+        #[allow(clippy::unwrap_used)] // in signature of function
+        let ascii_str = String::from_utf8(k).unwrap();
+        (ascii_str, v)
+    })
+}
diff --git a/vendor/zerotrie/src/serde.rs b/vendor/zerotrie/src/serde.rs
new file mode 100644
index 00000000..78837192
--- /dev/null
+++ b/vendor/zerotrie/src/serde.rs
@@ -0,0 +1,642 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::builder::bytestr::ByteStr;
+use crate::options::ZeroTrieWithOptions;
+use crate::zerotrie::ZeroTrieFlavor;
+use crate::ZeroAsciiIgnoreCaseTrie;
+use crate::ZeroTrie;
+use crate::ZeroTrieExtendedCapacity;
+use crate::ZeroTriePerfectHash;
+use crate::ZeroTrieSimpleAscii;
+use alloc::boxed::Box;
+use alloc::vec::Vec;
+use core::fmt;
+use litemap::LiteMap;
+use serde::de::Error;
+use serde::de::Visitor;
+use serde::Deserialize;
+use serde::Deserializer;
+use serde::Serialize;
+use serde::Serializer;
+
+struct ByteStrVisitor;
+impl<'de> Visitor<'de> for ByteStrVisitor {
+    type Value = Box<[u8]>;
+    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+        write!(formatter, "a slice of borrowed bytes or a string")
+    }
+    fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E> {
+        Ok(Box::from(v))
+    }
+    fn visit_str<E>(self, v: &str) -> Result<Self::Value, E> {
+        Ok(Box::from(v.as_bytes()))
+    }
+    fn visit_seq<A>(self, mut v: A) -> Result<Self::Value, A::Error>
+    where
+        A: serde::de::SeqAccess<'de>,
+    {
+        let mut result = Vec::with_capacity(v.size_hint().unwrap_or(0));
+        while let Some(x) = v.next_element::<u8>()? {
+            result.push(x);
+        }
+        Ok(Box::from(result))
+    }
+}
+
+impl<'data, 'de: 'data> Deserialize<'de> for &'data ByteStr {
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        let s = <&'data [u8]>::deserialize(deserializer)?;
+        Ok(ByteStr::from_bytes(s))
+    }
+}
+
+impl<'de> Deserialize<'de> for Box<ByteStr> {
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let s = deserializer.deserialize_any(ByteStrVisitor)?;
+            Ok(ByteStr::from_boxed_bytes(s))
+        } else {
+            let s = Vec::<u8>::deserialize(deserializer)?;
+            Ok(ByteStr::from_boxed_bytes(s.into_boxed_slice()))
+        }
+    }
+}
+
+impl Serialize for &ByteStr {
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        let bytes = self.as_bytes();
+        if serializer.is_human_readable() {
+            match core::str::from_utf8(bytes) {
+                Ok(s) => serializer.serialize_str(s),
+                Err(_) => serializer.serialize_bytes(bytes),
+            }
+        } else {
+            serializer.serialize_bytes(bytes)
+        }
+    }
+}
+
+impl<'data, 'de: 'data, Store> Deserialize<'de> for ZeroTrieSimpleAscii<Store>
+where
+    // DISCUSS: There are several possibilities for the bounds here that would
+    // get the job done. I could look for Deserialize, but this would require
+    // creating a custom Deserializer for the map case. I also considered
+    // introducing a new trait instead of relying on From.
+    Store: From<&'data [u8]> + From<Vec<u8>> + 'data,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let lm = LiteMap::<Box<ByteStr>, usize>::deserialize(deserializer)?;
+            ZeroTrieSimpleAscii::try_from_serde_litemap(&lm)
+                .map_err(D::Error::custom)
+                .map(|trie| trie.convert_store())
+        } else {
+            // Note: `impl Deserialize for &[u8]` uses visit_borrowed_bytes
+            let (flags, trie_bytes) = <(u8, &[u8])>::deserialize(deserializer)?;
+            if Self::OPTIONS.to_u8_flags() != flags {
+                return Err(D::Error::custom("invalid ZeroTrie tag"));
+            };
+            Ok(ZeroTrieSimpleAscii::from_store(Store::from(trie_bytes)))
+        }
+    }
+}
+
+impl<Store> Serialize for ZeroTrieSimpleAscii<Store>
+where
+    Store: AsRef<[u8]>,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        if serializer.is_human_readable() {
+            let lm = self.to_litemap();
+            lm.serialize(serializer)
+        } else {
+            // Note: `impl Serialize for ByteStr` uses `serialize_bytes`
+            (Self::FLAGS, ByteStr::from_bytes(self.as_bytes())).serialize(serializer)
+        }
+    }
+}
+
+impl<'de, 'data, Store> Deserialize<'de> for ZeroAsciiIgnoreCaseTrie<Store>
+where
+    'de: 'data,
+    // DISCUSS: There are several possibilities for the bounds here that would
+    // get the job done. I could look for Deserialize, but this would require
+    // creating a custom Deserializer for the map case. I also considered
+    // introducing a new trait instead of relying on From.
+    Store: From<&'data [u8]> + From<Vec<u8>> + 'data,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let lm = LiteMap::<Box<ByteStr>, usize>::deserialize(deserializer)?;
+            ZeroAsciiIgnoreCaseTrie::try_from_serde_litemap(&lm)
+                .map_err(D::Error::custom)
+                .map(|trie| trie.convert_store())
+        } else {
+            // Note: `impl Deserialize for &[u8]` uses visit_borrowed_bytes
+            let (flags, trie_bytes) = <(u8, &[u8])>::deserialize(deserializer)?;
+            if Self::OPTIONS.to_u8_flags() != flags {
+                return Err(D::Error::custom("invalid ZeroTrie tag"));
+            }
+            Ok(ZeroAsciiIgnoreCaseTrie::from_store(Store::from(trie_bytes)))
+        }
+    }
+}
+
+impl<Store> Serialize for ZeroAsciiIgnoreCaseTrie<Store>
+where
+    Store: AsRef<[u8]>,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        if serializer.is_human_readable() {
+            let lm = self.to_litemap();
+            lm.serialize(serializer)
+        } else {
+            // Note: `impl Serialize for ByteStr` uses `serialize_bytes`
+            (
+                Self::OPTIONS.to_u8_flags(),
+                ByteStr::from_bytes(self.as_bytes()),
+            )
+                .serialize(serializer)
+        }
+    }
+}
+
+impl<'de, 'data, Store> Deserialize<'de> for ZeroTriePerfectHash<Store>
+where
+    'de: 'data,
+    Store: From<&'data [u8]> + From<Vec<u8>> + 'data,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let lm = LiteMap::<Box<ByteStr>, usize>::deserialize(deserializer)?;
+            ZeroTriePerfectHash::try_from_serde_litemap(&lm)
+                .map_err(D::Error::custom)
+                .map(|trie| trie.convert_store())
+        } else {
+            // Note: `impl Deserialize for &[u8]` uses visit_borrowed_bytes
+            let (flags, trie_bytes) = <(u8, &[u8])>::deserialize(deserializer)?;
+            if Self::OPTIONS.to_u8_flags() != flags {
+                return Err(D::Error::custom("invalid ZeroTrie tag"));
+            }
+            Ok(ZeroTriePerfectHash::from_store(Store::from(trie_bytes)))
+        }
+    }
+}
+
+impl<Store> Serialize for ZeroTriePerfectHash<Store>
+where
+    Store: AsRef<[u8]>,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        if serializer.is_human_readable() {
+            let lm = self.to_litemap();
+            let lm = lm
+                .iter()
+                .map(|(k, v)| (ByteStr::from_bytes(k), v))
+                .collect::<LiteMap<_, _>>();
+            lm.serialize(serializer)
+        } else {
+            // Note: `impl Serialize for ByteStr` uses `serialize_bytes`
+            (
+                Self::OPTIONS.to_u8_flags(),
+                ByteStr::from_bytes(self.as_bytes()),
+            )
+                .serialize(serializer)
+        }
+    }
+}
+
+impl<'de, 'data, Store> Deserialize<'de> for ZeroTrieExtendedCapacity<Store>
+where
+    'de: 'data,
+    Store: From<&'data [u8]> + From<Vec<u8>> + 'data,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let lm = LiteMap::<Box<ByteStr>, usize>::deserialize(deserializer)?;
+            ZeroTrieExtendedCapacity::try_from_serde_litemap(&lm)
+                .map_err(D::Error::custom)
+                .map(|trie| trie.convert_store())
+        } else {
+            // Note: `impl Deserialize for &[u8]` uses visit_borrowed_bytes
+            let (flags, trie_bytes) = <(u8, &[u8])>::deserialize(deserializer)?;
+            if Self::OPTIONS.to_u8_flags() != flags {
+                return Err(D::Error::custom("invalid ZeroTrie tag"));
+            }
+            Ok(ZeroTrieExtendedCapacity::from_store(Store::from(
+                trie_bytes,
+            )))
+        }
+    }
+}
+
+impl<Store> Serialize for ZeroTrieExtendedCapacity<Store>
+where
+    Store: AsRef<[u8]>,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        if serializer.is_human_readable() {
+            let lm = self.to_litemap();
+            let lm = lm
+                .iter()
+                .map(|(k, v)| (ByteStr::from_bytes(k), v))
+                .collect::<LiteMap<_, _>>();
+            lm.serialize(serializer)
+        } else {
+            // Note: `impl Serialize for ByteStr` uses `serialize_bytes`
+            (
+                Self::OPTIONS.to_u8_flags(),
+                ByteStr::from_bytes(self.as_bytes()),
+            )
+                .serialize(serializer)
+        }
+    }
+}
+
+impl<'de, 'data, Store> Deserialize<'de> for ZeroTrie<Store>
+where
+    'de: 'data,
+    Store: From<&'data [u8]> + From<Vec<u8>> + 'data,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let lm = LiteMap::<Box<ByteStr>, usize>::deserialize(deserializer)?;
+            ZeroTrie::<Vec<u8>>::try_from(&lm)
+                .map_err(D::Error::custom)
+                .map(|trie| trie.convert_store())
+        } else {
+            // Note: `impl Deserialize for &[u8]` uses visit_borrowed_bytes
+            let bytes = <&[u8]>::deserialize(deserializer)?;
+            let (tag, trie_bytes) = bytes
+                .split_first()
+                .ok_or(D::Error::custom("expected at least 1 byte for ZeroTrie"))?;
+            let store = Store::from(trie_bytes);
+            let zerotrie = if *tag == ZeroTrieSimpleAscii::<u8>::OPTIONS.to_u8_flags() {
+                ZeroTrieSimpleAscii::from_store(store).into_zerotrie()
+            } else if *tag == ZeroTriePerfectHash::<u8>::OPTIONS.to_u8_flags() {
+                ZeroTriePerfectHash::from_store(store).into_zerotrie()
+            } else if *tag == ZeroTrieExtendedCapacity::<u8>::OPTIONS.to_u8_flags() {
+                ZeroTrieExtendedCapacity::from_store(store).into_zerotrie()
+            } else {
+                return Err(D::Error::custom("invalid ZeroTrie tag"));
+            };
+            Ok(zerotrie)
+        }
+    }
+}
+
+impl<Store> Serialize for ZeroTrie<Store>
+where
+    Store: AsRef<[u8]>,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        if serializer.is_human_readable() {
+            let lm = self.to_litemap();
+            let lm = lm
+                .iter()
+                .map(|(k, v)| (ByteStr::from_bytes(k), v))
+                .collect::<LiteMap<_, _>>();
+            lm.serialize(serializer)
+        } else {
+            let (tag, bytes) = match &self.0 {
+                ZeroTrieFlavor::SimpleAscii(t) => (
+                    ZeroTrieSimpleAscii::<u8>::OPTIONS.to_u8_flags(),
+                    t.as_bytes(),
+                ),
+                ZeroTrieFlavor::PerfectHash(t) => (
+                    ZeroTriePerfectHash::<u8>::OPTIONS.to_u8_flags(),
+                    t.as_bytes(),
+                ),
+                ZeroTrieFlavor::ExtendedCapacity(t) => (
+                    ZeroTrieExtendedCapacity::<u8>::OPTIONS.to_u8_flags(),
+                    t.as_bytes(),
+                ),
+            };
+            let mut all_in_one_vec = Vec::with_capacity(bytes.len() + 1);
+            all_in_one_vec.push(tag);
+            all_in_one_vec.extend(bytes);
+            serializer.serialize_bytes(&all_in_one_vec)
+        }
+    }
+}
+
+#[cfg(test)]
+mod testdata {
+    include!("../tests/data/data.rs");
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use alloc::borrow::Cow;
+
+    #[derive(Serialize, Deserialize)]
+    pub struct ZeroTrieSimpleAsciiCow<'a> {
+        #[serde(borrow)]
+        trie: ZeroTrieSimpleAscii<Cow<'a, [u8]>>,
+    }
+
+    #[test]
+    pub fn test_serde_simpleascii_cow() {
+        let trie = ZeroTrieSimpleAscii::from_store(Cow::from(testdata::basic::TRIE_ASCII));
+        let original = ZeroTrieSimpleAsciiCow { trie };
+        let json_str = serde_json::to_string(&original).unwrap();
+        let bincode_bytes = bincode::serialize(&original).unwrap();
+        let rmp_bytes = rmp_serde::to_vec(&original).unwrap();
+
+        assert_eq!(json_str, testdata::basic::JSON_STR_ASCII);
+        assert_eq!(&bincode_bytes[0..9], &[0, 26, 0, 0, 0, 0, 0, 0, 0]);
+        assert_eq!(&bincode_bytes[9..], testdata::basic::BINCODE_BYTES_ASCII);
+        assert_eq!(&rmp_bytes[0..5], &[145, 146, 0, 196, 26]);
+        assert_eq!(&rmp_bytes[5..], testdata::basic::BINCODE_BYTES_ASCII);
+
+        let json_recovered: ZeroTrieSimpleAsciiCow = serde_json::from_str(&json_str).unwrap();
+        let bincode_recovered: ZeroTrieSimpleAsciiCow =
+            bincode::deserialize(&bincode_bytes).unwrap();
+        let rmp_recovered: ZeroTrieSimpleAsciiCow = rmp_serde::from_slice(&rmp_bytes).unwrap();
+
+        assert_eq!(original.trie, json_recovered.trie);
+        assert_eq!(original.trie, bincode_recovered.trie);
+        assert_eq!(original.trie, rmp_recovered.trie);
+
+        assert!(matches!(json_recovered.trie.into_store(), Cow::Owned(_)));
+        assert!(matches!(
+            bincode_recovered.trie.into_store(),
+            Cow::Borrowed(_)
+        ));
+    }
+
+    #[derive(Serialize, Deserialize)]
+    pub struct ZeroAsciiIgnoreCaseTrieCow<'a> {
+        #[serde(borrow)]
+        trie: ZeroAsciiIgnoreCaseTrie<Cow<'a, [u8]>>,
+    }
+
+    #[test]
+    pub fn test_serde_asciiignorecase_cow() {
+        let trie = ZeroAsciiIgnoreCaseTrie::from_store(Cow::from(testdata::basic::TRIE_ASCII));
+        let original = ZeroAsciiIgnoreCaseTrieCow { trie };
+        let json_str = serde_json::to_string(&original).unwrap();
+        let bincode_bytes = bincode::serialize(&original).unwrap();
+
+        assert_eq!(json_str, testdata::basic::JSON_STR_ASCII);
+        assert_eq!(&bincode_bytes[0..9], &[8, 26, 0, 0, 0, 0, 0, 0, 0]);
+        assert_eq!(&bincode_bytes[9..], testdata::basic::BINCODE_BYTES_ASCII);
+
+        let json_recovered: ZeroAsciiIgnoreCaseTrieCow = serde_json::from_str(&json_str).unwrap();
+        let bincode_recovered: ZeroAsciiIgnoreCaseTrieCow =
+            bincode::deserialize(&bincode_bytes).unwrap();
+
+        assert_eq!(original.trie, json_recovered.trie);
+        assert_eq!(original.trie, bincode_recovered.trie);
+
+        assert!(matches!(json_recovered.trie.into_store(), Cow::Owned(_)));
+        assert!(matches!(
+            bincode_recovered.trie.into_store(),
+            Cow::Borrowed(_)
+        ));
+    }
+
+    #[derive(Serialize, Deserialize)]
+    pub struct ZeroTriePerfectHashCow<'a> {
+        #[serde(borrow)]
+        trie: ZeroTriePerfectHash<Cow<'a, [u8]>>,
+    }
+
+    #[test]
+    pub fn test_serde_perfecthash_cow() {
+        let trie = ZeroTriePerfectHash::from_store(Cow::from(testdata::basic::TRIE_ASCII));
+        let original = ZeroTriePerfectHashCow { trie };
+        let json_str = serde_json::to_string(&original).unwrap();
+        let bincode_bytes = bincode::serialize(&original).unwrap();
+
+        assert_eq!(json_str, testdata::basic::JSON_STR_ASCII);
+        assert_eq!(&bincode_bytes[0..9], &[3, 26, 0, 0, 0, 0, 0, 0, 0]);
+        assert_eq!(&bincode_bytes[9..], testdata::basic::BINCODE_BYTES_ASCII);
+
+        let json_recovered: ZeroTriePerfectHashCow = serde_json::from_str(&json_str).unwrap();
+        let bincode_recovered: ZeroTriePerfectHashCow =
+            bincode::deserialize(&bincode_bytes).unwrap();
+
+        assert_eq!(original.trie, json_recovered.trie);
+        assert_eq!(original.trie, bincode_recovered.trie);
+
+        assert!(matches!(json_recovered.trie.into_store(), Cow::Owned(_)));
+        assert!(matches!(
+            bincode_recovered.trie.into_store(),
+            Cow::Borrowed(_)
+        ));
+    }
+
+    #[test]
+    pub fn test_serde_perfecthash_cow_u() {
+        let trie = ZeroTriePerfectHash::from_store(Cow::from(testdata::basic::TRIE_UNICODE));
+        let original = ZeroTriePerfectHashCow { trie };
+        let json_str = serde_json::to_string(&original).unwrap();
+        let bincode_bytes = bincode::serialize(&original).unwrap();
+
+        assert_eq!(json_str, testdata::basic::JSON_STR_UNICODE);
+        assert_eq!(&bincode_bytes[0..9], &[3, 39, 0, 0, 0, 0, 0, 0, 0]);
+        assert_eq!(&bincode_bytes[9..], testdata::basic::BINCODE_BYTES_UNICODE);
+
+        let json_recovered: ZeroTriePerfectHashCow = serde_json::from_str(&json_str).unwrap();
+        let bincode_recovered: ZeroTriePerfectHashCow =
+            bincode::deserialize(&bincode_bytes).unwrap();
+
+        assert_eq!(original.trie, json_recovered.trie);
+        assert_eq!(original.trie, bincode_recovered.trie);
+
+        assert!(matches!(json_recovered.trie.into_store(), Cow::Owned(_)));
+        assert!(matches!(
+            bincode_recovered.trie.into_store(),
+            Cow::Borrowed(_)
+        ));
+    }
+
+    #[test]
+    pub fn test_serde_perfecthash_cow_bin() {
+        let trie = ZeroTriePerfectHash::from_store(Cow::from(testdata::basic::TRIE_BINARY));
+        let original = ZeroTriePerfectHashCow { trie };
+        let json_str = serde_json::to_string(&original).unwrap();
+        let bincode_bytes = bincode::serialize(&original).unwrap();
+
+        assert_eq!(json_str, testdata::basic::JSON_STR_BINARY);
+        assert_eq!(&bincode_bytes[0..9], &[3, 26, 0, 0, 0, 0, 0, 0, 0]);
+        assert_eq!(&bincode_bytes[9..], testdata::basic::BINCODE_BYTES_BINARY);
+
+        let json_recovered: ZeroTriePerfectHashCow = serde_json::from_str(&json_str).unwrap();
+        let bincode_recovered: ZeroTriePerfectHashCow =
+            bincode::deserialize(&bincode_bytes).unwrap();
+
+        assert_eq!(original.trie, json_recovered.trie);
+        assert_eq!(original.trie, bincode_recovered.trie);
+
+        assert!(matches!(json_recovered.trie.into_store(), Cow::Owned(_)));
+        assert!(matches!(
+            bincode_recovered.trie.into_store(),
+            Cow::Borrowed(_)
+        ));
+    }
+
+    #[derive(Serialize, Deserialize)]
+    pub struct ZeroTrieAnyCow<'a> {
+        #[serde(borrow)]
+        trie: ZeroTrie<Cow<'a, [u8]>>,
+    }
+
+    #[test]
+    pub fn test_serde_any_cow() {
+        let trie =
+            ZeroTrieSimpleAscii::from_store(Cow::from(testdata::basic::TRIE_ASCII)).into_zerotrie();
+        let original = ZeroTrieAnyCow { trie };
+        let json_str = serde_json::to_string(&original).unwrap();
+        let bincode_bytes = bincode::serialize(&original).unwrap();
+
+        assert_eq!(json_str, testdata::basic::JSON_STR_ASCII);
+        assert_eq!(&bincode_bytes[0..9], &[27, 0, 0, 0, 0, 0, 0, 0, 0]);
+        assert_eq!(&bincode_bytes[9..], testdata::basic::BINCODE_BYTES_ASCII);
+
+        let json_recovered: ZeroTrieAnyCow = serde_json::from_str(&json_str).unwrap();
+        let bincode_recovered: ZeroTrieAnyCow = bincode::deserialize(&bincode_bytes).unwrap();
+
+        assert_eq!(original.trie, json_recovered.trie);
+        assert_eq!(original.trie, bincode_recovered.trie);
+
+        assert!(matches!(json_recovered.trie.into_store(), Cow::Owned(_)));
+        assert!(matches!(
+            bincode_recovered.trie.into_store(),
+            Cow::Borrowed(_)
+        ));
+    }
+
+    #[test]
+    pub fn test_serde_any_cow_u() {
+        let trie = ZeroTriePerfectHash::from_store(Cow::from(testdata::basic::TRIE_UNICODE))
+            .into_zerotrie();
+        let original = ZeroTrieAnyCow { trie };
+        let json_str = serde_json::to_string(&original).unwrap();
+        let bincode_bytes = bincode::serialize(&original).unwrap();
+
+        assert_eq!(json_str, testdata::basic::JSON_STR_UNICODE);
+        assert_eq!(&bincode_bytes[0..9], &[40, 0, 0, 0, 0, 0, 0, 0, 3]);
+        assert_eq!(&bincode_bytes[9..], testdata::basic::BINCODE_BYTES_UNICODE);
+
+        let json_recovered: ZeroTrieAnyCow = serde_json::from_str(&json_str).unwrap();
+        let bincode_recovered: ZeroTrieAnyCow = bincode::deserialize(&bincode_bytes).unwrap();
+
+        assert_eq!(original.trie, json_recovered.trie);
+        assert_eq!(original.trie, bincode_recovered.trie);
+
+        assert!(matches!(json_recovered.trie.into_store(), Cow::Owned(_)));
+        assert!(matches!(
+            bincode_recovered.trie.into_store(),
+            Cow::Borrowed(_)
+        ));
+    }
+}
+
+#[cfg(test)]
+#[cfg(feature = "zerovec")]
+mod tests_zerovec {
+    use super::*;
+    use zerovec::ZeroVec;
+
+    #[derive(Serialize, Deserialize)]
+    pub struct ZeroTrieSimpleAsciiZeroVec<'a> {
+        #[serde(borrow)]
+        trie: ZeroTrieSimpleAscii<ZeroVec<'a, u8>>,
+    }
+
+    #[test]
+    pub fn test_serde_simpleascii_zerovec() {
+        let trie =
+            ZeroTrieSimpleAscii::from_store(ZeroVec::new_borrowed(testdata::basic::TRIE_ASCII));
+        let original = ZeroTrieSimpleAsciiZeroVec { trie };
+        let json_str = serde_json::to_string(&original).unwrap();
+        let bincode_bytes = bincode::serialize(&original).unwrap();
+
+        assert_eq!(json_str, testdata::basic::JSON_STR_ASCII);
+        assert_eq!(&bincode_bytes[0..9], &[0, 26, 0, 0, 0, 0, 0, 0, 0]);
+        assert_eq!(&bincode_bytes[9..], testdata::basic::BINCODE_BYTES_ASCII);
+
+        let json_recovered: ZeroTrieSimpleAsciiZeroVec = serde_json::from_str(&json_str).unwrap();
+        let bincode_recovered: ZeroTrieSimpleAsciiZeroVec =
+            bincode::deserialize(&bincode_bytes).unwrap();
+
+        assert_eq!(original.trie, json_recovered.trie);
+        assert_eq!(original.trie, bincode_recovered.trie);
+
+        assert!(json_recovered.trie.into_store().is_owned());
+        assert!(!bincode_recovered.trie.into_store().is_owned());
+    }
+
+    #[derive(Serialize, Deserialize)]
+    pub struct ZeroTriePerfectHashZeroVec<'a> {
+        #[serde(borrow)]
+        trie: ZeroTriePerfectHash<ZeroVec<'a, u8>>,
+    }
+
+    #[test]
+    pub fn test_serde_perfecthash_zerovec() {
+        let trie =
+            ZeroTriePerfectHash::from_store(ZeroVec::new_borrowed(testdata::basic::TRIE_ASCII));
+        let original = ZeroTriePerfectHashZeroVec { trie };
+        let json_str = serde_json::to_string(&original).unwrap();
+        let bincode_bytes = bincode::serialize(&original).unwrap();
+
+        assert_eq!(json_str, testdata::basic::JSON_STR_ASCII);
+        assert_eq!(&bincode_bytes[0..9], &[3, 26, 0, 0, 0, 0, 0, 0, 0]);
+        assert_eq!(&bincode_bytes[9..], testdata::basic::BINCODE_BYTES_ASCII);
+
+        let json_recovered: ZeroTriePerfectHashZeroVec = serde_json::from_str(&json_str).unwrap();
+        let bincode_recovered: ZeroTriePerfectHashZeroVec =
+            bincode::deserialize(&bincode_bytes).unwrap();
+
+        assert_eq!(original.trie, json_recovered.trie);
+        assert_eq!(original.trie, bincode_recovered.trie);
+
+        assert!(json_recovered.trie.into_store().is_owned());
+        assert!(!bincode_recovered.trie.into_store().is_owned());
+    }
+}
diff --git a/vendor/zerotrie/src/varint.rs b/vendor/zerotrie/src/varint.rs
new file mode 100644
index 00000000..5af0ea66
--- /dev/null
+++ b/vendor/zerotrie/src/varint.rs
@@ -0,0 +1,497 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Varint spec for ZeroTrie:
+//!
+//! - Lead byte: top M (2 or 3) bits are metadata; next is varint extender; rest is value
+//! - Trail bytes: top bit is varint extender; rest are low bits of value
+//! - Guaranteed uniqueness of varint by adding "latent value" for each extender byte
+//! - No maximum, but high bits will be dropped if they don't fit in the platform's `usize`
+//!
+//! This is best shown by examples.
+//!
+//! ```txt
+//! xxx0'1010 = 10
+//! xxx0'1111 = 15 (largest single-byte value with M=3)
+//! xxx1'0000 0000'0000 must be 16 (smallest two-byte value with M=3)
+//! xxx1'0000 0000'0001 = 17
+//! xxx1'1111 0111'1111 = 2063 (largest two-byte value with M=3)
+//! xxx1'0000 1000'0000 0000'0000 must be 2064 (smallest three-byte value with M=3)
+//! xxx1'0000 1000'0000 0000'0001 = 2065
+//! ```
+//!
+//! The latent values by number of bytes for M=3 are:
+//!
+//! - 1 byte: 0
+//! - 2 bytes: 16 = 0x10 = 0b10000
+//! - 3 bytes: 2064 = 0x810 = 0b100000010000
+//! - 4 bytes: 264208 = 0x40810 = 0b1000000100000010000
+//! - 5 bytes: 33818640 = 0x2040810 = 0b10000001000000100000010000
+//! - …
+//!
+//! For M=2, the latent values are:
+//!
+//! - 1 byte: 0
+//! - 2 bytes: 32 = 0x20 = 0b100000
+//! - 3 bytes: 4128 = 0x1020 = 0b1000000100000
+//! - 4 bytes: 524320 = 0x81020 = 0b10000001000000100000
+//! - 5 bytes: 67637280 = 0x4081020 = 0b100000010000001000000100000
+//! - …
+
+use crate::builder::konst::ConstArrayBuilder;
+
+#[cfg(feature = "alloc")]
+use crate::builder::nonconst::TrieBuilderStore;
+
+/// Reads a varint with 2 bits of metadata in the lead byte.
+///
+/// Returns the varint value and a subslice of `remainder` with the varint bytes removed.
+///
+/// If the varint spills off the end of the slice, a debug assertion will fail,
+/// and the function will return the value up to that point.
+pub const fn read_varint_meta2(start: u8, remainder: &[u8]) -> (usize, &[u8]) {
+    let mut value = (start & 0b00011111) as usize;
+    let mut remainder = remainder;
+    if (start & 0b00100000) != 0 {
+        loop {
+            let next;
+            (next, remainder) = debug_unwrap!(remainder.split_first(), break, "invalid varint");
+            // Note: value << 7 could drop high bits. The first addition can't overflow.
+            // The second addition could overflow; in such a case we just inform the
+            // developer via the debug assertion.
+            value = (value << 7) + ((*next & 0b01111111) as usize) + 32;
+            if (*next & 0b10000000) == 0 {
+                break;
+            }
+        }
+    }
+    (value, remainder)
+}
+
+/// Reads a varint with 3 bits of metadata in the lead byte.
+///
+/// Returns the varint value and a subslice of `remainder` with the varint bytes removed.
+///
+/// If the varint spills off the end of the slice, a debug assertion will fail,
+/// and the function will return the value up to that point.
+pub const fn read_varint_meta3(start: u8, remainder: &[u8]) -> (usize, &[u8]) {
+    let mut value = (start & 0b00001111) as usize;
+    let mut remainder = remainder;
+    if (start & 0b00010000) != 0 {
+        loop {
+            let next;
+            (next, remainder) = debug_unwrap!(remainder.split_first(), break, "invalid varint");
+            // Note: value << 7 could drop high bits. The first addition can't overflow.
+            // The second addition could overflow; in such a case we just inform the
+            // developer via the debug assertion.
+            value = (value << 7) + ((*next & 0b01111111) as usize) + 16;
+            if (*next & 0b10000000) == 0 {
+                break;
+            }
+        }
+    }
+    (value, remainder)
+}
+
+/// Reads and removes a varint with 3 bits of metadata from a [`TrieBuilderStore`].
+///
+/// Returns the varint value.
+#[cfg(feature = "alloc")]
+pub(crate) fn try_read_varint_meta3_from_tstore<S: TrieBuilderStore>(
+    start: u8,
+    remainder: &mut S,
+) -> Option<usize> {
+    let mut value = (start & 0b00001111) as usize;
+    if (start & 0b00010000) != 0 {
+        loop {
+            let next = remainder.atbs_pop_front()?;
+            // Note: value << 7 could drop high bits. The first addition can't overflow.
+            // The second addition could overflow; in such a case we just inform the
+            // developer via the debug assertion.
+            value = (value << 7) + ((next & 0b01111111) as usize) + 16;
+            if (next & 0b10000000) == 0 {
+                break;
+            }
+        }
+    }
+    Some(value)
+}
+
+#[cfg(test)]
+const MAX_VARINT: usize = usize::MAX;
+
+// *Upper Bound:* Each trail byte stores 7 bits of data, plus the latent value.
+// Add an extra 1 since the lead byte holds only 5 bits of data.
+const MAX_VARINT_LENGTH: usize = 1 + core::mem::size_of::<usize>() * 8 / 7;
+
+/// Returns a new [`ConstArrayBuilder`] containing a varint with 2 bits of metadata.
+pub(crate) const fn write_varint_meta2(value: usize) -> ConstArrayBuilder<MAX_VARINT_LENGTH, u8> {
+    let mut result = [0; MAX_VARINT_LENGTH];
+    let mut i = MAX_VARINT_LENGTH - 1;
+    let mut value = value;
+    let mut last = true;
+    loop {
+        if value < 32 {
+            result[i] = value as u8;
+            if !last {
+                result[i] |= 0b00100000;
+            }
+            break;
+        }
+        value -= 32;
+        result[i] = (value as u8) & 0b01111111;
+        if !last {
+            result[i] |= 0b10000000;
+        } else {
+            last = false;
+        }
+        value >>= 7;
+        i -= 1;
+    }
+    // The bytes are from i to the end.
+    ConstArrayBuilder::from_manual_slice(result, i, MAX_VARINT_LENGTH)
+}
+
+/// Returns a new [`ConstArrayBuilder`] containing a varint with 3 bits of metadata.
+pub(crate) const fn write_varint_meta3(value: usize) -> ConstArrayBuilder<MAX_VARINT_LENGTH, u8> {
+    let mut result = [0; MAX_VARINT_LENGTH];
+    let mut i = MAX_VARINT_LENGTH - 1;
+    let mut value = value;
+    let mut last = true;
+    loop {
+        if value < 16 {
+            result[i] = value as u8;
+            if !last {
+                result[i] |= 0b00010000;
+            }
+            break;
+        }
+        value -= 16;
+        result[i] = (value as u8) & 0b01111111;
+        if !last {
+            result[i] |= 0b10000000;
+        } else {
+            last = false;
+        }
+        value >>= 7;
+        i -= 1;
+    }
+    // The bytes are from i to the end.
+    ConstArrayBuilder::from_manual_slice(result, i, MAX_VARINT_LENGTH)
+}
+
+/// A secondary implementation that separates the latent value while computing the varint.
+#[cfg(test)]
+pub(crate) const fn write_varint_reference(
+    value: usize,
+) -> ConstArrayBuilder<MAX_VARINT_LENGTH, u8> {
+    let mut result = [0; MAX_VARINT_LENGTH];
+    if value < 32 {
+        result[0] = value as u8;
+        return ConstArrayBuilder::from_manual_slice(result, 0, 1);
+    }
+    result[0] = 32;
+    let mut latent = 32;
+    let mut steps = 2;
+    loop {
+        let next_latent = (latent << 7) + 32;
+        if value < next_latent || next_latent == latent {
+            break;
+        }
+        latent = next_latent;
+        steps += 1;
+    }
+    let mut value = value - latent;
+    let mut i = steps;
+    while i > 0 {
+        i -= 1;
+        result[i] |= (value as u8) & 0b01111111;
+        value >>= 7;
+        if i > 0 && i < steps - 1 {
+            result[i] |= 0b10000000;
+        }
+    }
+    // The bytes are from 0 to `steps`.
+    ConstArrayBuilder::from_manual_slice(result, 0, steps)
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[derive(Debug)]
+    struct TestCase<'a> {
+        bytes: &'a [u8],
+        remainder: &'a [u8],
+        value: usize,
+    }
+    static CASES: &[TestCase] = &[
+        TestCase {
+            bytes: &[0b00000000],
+            remainder: &[],
+            value: 0,
+        },
+        TestCase {
+            bytes: &[0b00001010],
+            remainder: &[],
+            value: 10,
+        },
+        TestCase {
+            bytes: &[0b00011111],
+            remainder: &[],
+            value: 31,
+        },
+        TestCase {
+            bytes: &[0b00011111, 0b10101010],
+            remainder: &[0b10101010],
+            value: 31,
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b00000000],
+            remainder: &[],
+            value: 32,
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b00000001],
+            remainder: &[],
+            value: 33,
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b00100000],
+            remainder: &[],
+            value: 64,
+        },
+        TestCase {
+            bytes: &[0x20, 0x44],
+            remainder: &[],
+            value: 100,
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b01111111],
+            remainder: &[],
+            value: 159,
+        },
+        TestCase {
+            bytes: &[0b00100001, 0b00000000],
+            remainder: &[],
+            value: 160,
+        },
+        TestCase {
+            bytes: &[0b00100001, 0b00000001],
+            remainder: &[],
+            value: 161,
+        },
+        TestCase {
+            bytes: &[0x23, 0x54],
+            remainder: &[],
+            value: 500,
+        },
+        TestCase {
+            bytes: &[0b00111111, 0b01111111],
+            remainder: &[],
+            value: 4127, // 32 + (1 << 12) - 1
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b10000000, 0b00000000],
+            remainder: &[],
+            value: 4128, // 32 + (1 << 12)
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b10000000, 0b00000001],
+            remainder: &[],
+            value: 4129, // 32 + (1 << 12) + 1
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b10000000, 0b01111111],
+            remainder: &[],
+            value: 4255, // 32 + (1 << 12) + 127
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b10000001, 0b00000000],
+            remainder: &[],
+            value: 4256, // 32 + (1 << 12) + 128
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b10000001, 0b00000001],
+            remainder: &[],
+            value: 4257, // 32 + (1 << 12) + 129
+        },
+        TestCase {
+            bytes: &[0x20, 0x86, 0x68],
+            remainder: &[],
+            value: 5000,
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b11111111, 0b01111111],
+            remainder: &[],
+            value: 20511, // 32 + (1 << 12) + (1 << 14) - 1
+        },
+        TestCase {
+            bytes: &[0b00100001, 0b10000000, 0b00000000],
+            remainder: &[],
+            value: 20512, // 32 + (1 << 12) + (1 << 14)
+        },
+        TestCase {
+            bytes: &[0b00111111, 0b11111111, 0b01111111],
+            remainder: &[],
+            value: 528415, // 32 + (1 << 12) + (1 << 19) - 1
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b10000000, 0b10000000, 0b00000000],
+            remainder: &[],
+            value: 528416, // 32 + (1 << 12) + (1 << 19)
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b10000000, 0b10000000, 0b00000001],
+            remainder: &[],
+            value: 528417, // 32 + (1 << 12) + (1 << 19) + 1
+        },
+        TestCase {
+            bytes: &[0b00111111, 0b11111111, 0b11111111, 0b01111111],
+            remainder: &[],
+            value: 67637279, // 32 + (1 << 12) + (1 << 19) + (1 << 26) - 1
+        },
+        TestCase {
+            bytes: &[0b00100000, 0b10000000, 0b10000000, 0b10000000, 0b00000000],
+            remainder: &[],
+            value: 67637280, // 32 + (1 << 12) + (1 << 19) + (1 << 26)
+        },
+    ];
+
+    #[test]
+    fn test_read() {
+        for cas in CASES {
+            let recovered = read_varint_meta2(cas.bytes[0], &cas.bytes[1..]);
+            assert_eq!(recovered, (cas.value, cas.remainder), "{:?}", cas);
+        }
+    }
+
+    #[test]
+    fn test_read_write() {
+        for cas in CASES {
+            let reference_bytes = write_varint_reference(cas.value);
+            assert_eq!(
+                reference_bytes.len(),
+                cas.bytes.len() - cas.remainder.len(),
+                "{:?}",
+                cas
+            );
+            assert_eq!(
+                reference_bytes.as_slice(),
+                &cas.bytes[0..reference_bytes.len()],
+                "{:?}",
+                cas
+            );
+            let recovered = read_varint_meta2(cas.bytes[0], &cas.bytes[1..]);
+            assert_eq!(recovered, (cas.value, cas.remainder), "{:?}", cas);
+            let write_bytes = write_varint_meta2(cas.value);
+            assert_eq!(
+                reference_bytes.as_slice(),
+                write_bytes.as_slice(),
+                "{:?}",
+                cas
+            );
+        }
+    }
+
+    #[test]
+    fn test_roundtrip() {
+        let mut i = 0usize;
+        while i < MAX_VARINT {
+            let bytes = write_varint_meta2(i);
+            let recovered = read_varint_meta2(bytes.as_slice()[0], &bytes.as_slice()[1..]);
+            assert_eq!(i, recovered.0, "{:?}", bytes.as_slice());
+            i <<= 1;
+            i += 1;
+        }
+    }
+
+    #[test]
+    fn test_extended_roundtrip() {
+        let mut i = 0usize;
+        while i < MAX_VARINT {
+            let bytes = write_varint_meta3(i);
+            let recovered = read_varint_meta3(bytes.as_slice()[0], &bytes.as_slice()[1..]);
+            assert_eq!(i, recovered.0, "{:?}", bytes.as_slice());
+            i <<= 1;
+            i += 1;
+        }
+    }
+
+    #[test]
+    fn test_max() {
+        let reference_bytes = write_varint_reference(MAX_VARINT);
+        let write_bytes = write_varint_meta2(MAX_VARINT);
+        assert_eq!(reference_bytes.len(), MAX_VARINT_LENGTH);
+        assert_eq!(reference_bytes.as_slice(), write_bytes.as_slice());
+        let subarray = write_bytes
+            .as_const_slice()
+            .get_subslice_or_panic(1, write_bytes.len());
+        let (recovered_value, remainder) = read_varint_meta2(
+            *write_bytes.as_const_slice().first().unwrap(),
+            subarray.as_slice(),
+        );
+        assert!(remainder.is_empty());
+        assert_eq!(recovered_value, MAX_VARINT);
+        assert_eq!(
+            write_bytes.as_slice(),
+            &[
+                0b00100001, //
+                0b11011111, //
+                0b11011111, //
+                0b11011111, //
+                0b11011111, //
+                0b11011111, //
+                0b11011111, //
+                0b11011111, //
+                0b11011111, //
+                0b01011111, //
+            ]
+        );
+    }
+
+    #[test]
+    fn text_extended_max() {
+        let write_bytes = write_varint_meta3(MAX_VARINT);
+        assert_eq!(write_bytes.len(), MAX_VARINT_LENGTH);
+        let (lead, trailing) = write_bytes.as_slice().split_first().unwrap();
+        let (recovered_value, remainder) = read_varint_meta3(*lead, trailing);
+        assert!(remainder.is_empty());
+        assert_eq!(recovered_value, MAX_VARINT);
+        assert_eq!(
+            write_bytes.as_slice(),
+            &[
+                0b00010001, //
+                0b11101111, //
+                0b11101111, //
+                0b11101111, //
+                0b11101111, //
+                0b11101111, //
+                0b11101111, //
+                0b11101111, //
+                0b11101111, //
+                0b01101111, //
+            ]
+        );
+    }
+
+    #[test]
+    fn test_latent_values() {
+        // Same values documented in the module docs: M=2
+        let m2 = read_varint_meta2;
+        assert_eq!(m2(0, &[]).0, 0);
+        assert_eq!(m2(0x20, &[0x00]).0, 32);
+        assert_eq!(m2(0x20, &[0x80, 0x00]).0, 4128);
+        assert_eq!(m2(0x20, &[0x80, 0x80, 0x00]).0, 528416);
+        assert_eq!(m2(0x20, &[0x80, 0x80, 0x80, 0x00]).0, 67637280);
+
+        // Same values documented in the module docs: M=3
+        let m3 = read_varint_meta3;
+        assert_eq!(m3(0, &[]).0, 0);
+        assert_eq!(m3(0x10, &[0x00]).0, 16);
+        assert_eq!(m3(0x10, &[0x80, 0x00]).0, 2064);
+        assert_eq!(m3(0x10, &[0x80, 0x80, 0x00]).0, 264208);
+        assert_eq!(m3(0x10, &[0x80, 0x80, 0x80, 0x00]).0, 33818640);
+    }
+}
diff --git a/vendor/zerotrie/src/zerotrie.rs b/vendor/zerotrie/src/zerotrie.rs
new file mode 100644
index 00000000..a0320f9f
--- /dev/null
+++ b/vendor/zerotrie/src/zerotrie.rs
@@ -0,0 +1,886 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::reader;
+
+use core::borrow::Borrow;
+
+#[cfg(feature = "alloc")]
+use crate::{
+    builder::bytestr::ByteStr, builder::nonconst::ZeroTrieBuilder, error::ZeroTrieBuildError,
+};
+#[cfg(feature = "alloc")]
+use alloc::{boxed::Box, collections::BTreeMap, collections::VecDeque, string::String, vec::Vec};
+#[cfg(feature = "litemap")]
+use litemap::LiteMap;
+
+/// A data structure that compactly maps from byte sequences to integers.
+///
+/// There are several variants of `ZeroTrie` which are very similar but are optimized
+/// for different use cases:
+///
+/// - [`ZeroTrieSimpleAscii`] is the most compact structure. Very fast for small data.
+///   Only stores ASCII-encoded strings. Can be const-constructed!
+/// - [`ZeroTriePerfectHash`] is also compact, but it also supports arbitrary binary
+///   strings. It also scales better to large data. Cannot be const-constructed.
+/// - [`ZeroTrieExtendedCapacity`] can be used if more than 2^32 bytes are required.
+///
+/// You can create a `ZeroTrie` directly, in which case the most appropriate
+/// backing implementation will be chosen.
+///
+/// # Backing Store
+///
+/// The data structure has a flexible backing data store. The only requirement for most
+/// functionality is that it implement `AsRef<[u8]>`. All of the following are valid
+/// ZeroTrie types:
+///
+/// - `ZeroTrie<[u8]>` (dynamically sized type: must be stored in a reference or Box)
+/// - `ZeroTrie<&[u8]>` (borrows its data from a u8 buffer)
+/// - `ZeroTrie<Vec<u8>>` (fully owned data)
+/// - `ZeroTrie<ZeroVec<u8>>` (the recommended borrowed-or-owned signature)
+/// - `Cow<ZeroTrie<[u8]>>` (another borrowed-or-owned signature)
+/// - `ZeroTrie<Cow<[u8]>>` (another borrowed-or-owned signature)
+///
+/// # Examples
+///
+/// ```
+/// use litemap::LiteMap;
+/// use zerotrie::ZeroTrie;
+///
+/// let mut map = LiteMap::<&[u8], usize>::new_vec();
+/// map.insert("foo".as_bytes(), 1);
+/// map.insert("bar".as_bytes(), 2);
+/// map.insert("bazzoo".as_bytes(), 3);
+///
+/// let trie = ZeroTrie::try_from(&map)?;
+///
+/// assert_eq!(trie.get("foo"), Some(1));
+/// assert_eq!(trie.get("bar"), Some(2));
+/// assert_eq!(trie.get("bazzoo"), Some(3));
+/// assert_eq!(trie.get("unknown"), None);
+///
+/// # Ok::<_, zerotrie::ZeroTrieBuildError>(())
+/// ```
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+// Note: The absence of the following derive does not cause any test failures in this crate
+#[cfg_attr(feature = "yoke", derive(yoke::Yokeable))]
+pub struct ZeroTrie<Store>(pub(crate) ZeroTrieFlavor<Store>);
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub(crate) enum ZeroTrieFlavor<Store> {
+    SimpleAscii(ZeroTrieSimpleAscii<Store>),
+    PerfectHash(ZeroTriePerfectHash<Store>),
+    ExtendedCapacity(ZeroTrieExtendedCapacity<Store>),
+}
+
+/// A data structure that compactly maps from ASCII strings to integers.
+///
+/// For more information, see [`ZeroTrie`].
+///
+/// # Examples
+///
+/// ```
+/// use litemap::LiteMap;
+/// use zerotrie::ZeroTrieSimpleAscii;
+///
+/// let mut map = LiteMap::new_vec();
+/// map.insert(&b"foo"[..], 1);
+/// map.insert(b"bar", 2);
+/// map.insert(b"bazzoo", 3);
+///
+/// let trie = ZeroTrieSimpleAscii::try_from(&map)?;
+///
+/// assert_eq!(trie.get(b"foo"), Some(1));
+/// assert_eq!(trie.get(b"bar"), Some(2));
+/// assert_eq!(trie.get(b"bazzoo"), Some(3));
+/// assert_eq!(trie.get(b"unknown"), None);
+///
+/// # Ok::<_, zerotrie::ZeroTrieBuildError>(())
+/// ```
+///
+/// The trie can only store ASCII bytes; a string with non-ASCII always returns None:
+///
+/// ```
+/// use zerotrie::ZeroTrieSimpleAscii;
+///
+/// // A trie with two values: "abc" and "abcdef"
+/// let trie = ZeroTrieSimpleAscii::from_bytes(b"abc\x80def\x81");
+///
+/// assert!(matches!(trie.get(b"ab\xFF"), None));
+/// ```
+#[repr(transparent)]
+#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = zerotrie))]
+#[allow(clippy::exhaustive_structs)] // databake hidden fields
+pub struct ZeroTrieSimpleAscii<Store: ?Sized> {
+    #[doc(hidden)] // for databake, but there are no invariants
+    pub store: Store,
+}
+
+impl<Store: ?Sized> ZeroTrieSimpleAscii<Store> {
+    fn transparent_ref_from_store(s: &Store) -> &Self {
+        unsafe {
+            // Safety: Self is transparent over Store
+            core::mem::transmute(s)
+        }
+    }
+}
+
+impl<Store> ZeroTrieSimpleAscii<Store> {
+    /// Wrap this specific ZeroTrie variant into a ZeroTrie.
+    #[inline]
+    pub const fn into_zerotrie(self) -> ZeroTrie<Store> {
+        ZeroTrie(ZeroTrieFlavor::SimpleAscii(self))
+    }
+}
+
+/// A data structure that compactly maps from ASCII strings to integers
+/// in a case-insensitive way.
+///
+/// # Examples
+///
+/// ```
+/// use litemap::LiteMap;
+/// use zerotrie::ZeroAsciiIgnoreCaseTrie;
+///
+/// let mut map = LiteMap::new_vec();
+/// map.insert(&b"foo"[..], 1);
+/// map.insert(b"Bar", 2);
+/// map.insert(b"Bazzoo", 3);
+///
+/// let trie = ZeroAsciiIgnoreCaseTrie::try_from(&map)?;
+///
+/// assert_eq!(trie.get(b"foo"), Some(1));
+/// assert_eq!(trie.get(b"bar"), Some(2));
+/// assert_eq!(trie.get(b"BAR"), Some(2));
+/// assert_eq!(trie.get(b"bazzoo"), Some(3));
+/// assert_eq!(trie.get(b"unknown"), None);
+///
+/// # Ok::<_, zerotrie::ZeroTrieBuildError>(())
+/// ```
+///
+/// Strings with different cases of the same character at the same offset are not allowed:
+///
+/// ```
+/// use litemap::LiteMap;
+/// use zerotrie::ZeroAsciiIgnoreCaseTrie;
+///
+/// let mut map = LiteMap::new_vec();
+/// map.insert(&b"bar"[..], 1);
+/// // OK: 'r' and 'Z' are different letters
+/// map.insert(b"baZ", 2);
+/// // Bad: we already inserted 'r' so we cannot also insert 'R' at the same position
+/// map.insert(b"baR", 2);
+///
+/// ZeroAsciiIgnoreCaseTrie::try_from(&map).expect_err("mixed-case strings!");
+/// ```
+#[repr(transparent)]
+#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = zerotrie))]
+#[allow(clippy::exhaustive_structs)] // databake hidden fields
+pub struct ZeroAsciiIgnoreCaseTrie<Store: ?Sized> {
+    #[doc(hidden)] // for databake, but there are no invariants
+    pub store: Store,
+}
+
+impl<Store: ?Sized> ZeroAsciiIgnoreCaseTrie<Store> {
+    fn transparent_ref_from_store(s: &Store) -> &Self {
+        unsafe {
+            // Safety: Self is transparent over Store
+            core::mem::transmute(s)
+        }
+    }
+}
+
+// Note: ZeroAsciiIgnoreCaseTrie is not a variant of ZeroTrie so there is no `into_zerotrie`
+
+/// A data structure that compactly maps from byte strings to integers.
+///
+/// For more information, see [`ZeroTrie`].
+///
+/// # Examples
+///
+/// ```
+/// use litemap::LiteMap;
+/// use zerotrie::ZeroTriePerfectHash;
+///
+/// let mut map = LiteMap::<&[u8], usize>::new_vec();
+/// map.insert("foo".as_bytes(), 1);
+/// map.insert("bår".as_bytes(), 2);
+/// map.insert("båzzøø".as_bytes(), 3);
+///
+/// let trie = ZeroTriePerfectHash::try_from(&map)?;
+///
+/// assert_eq!(trie.get("foo".as_bytes()), Some(1));
+/// assert_eq!(trie.get("bår".as_bytes()), Some(2));
+/// assert_eq!(trie.get("båzzøø".as_bytes()), Some(3));
+/// assert_eq!(trie.get("bazzoo".as_bytes()), None);
+///
+/// # Ok::<_, zerotrie::ZeroTrieBuildError>(())
+/// ```
+#[repr(transparent)]
+#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = zerotrie))]
+#[allow(clippy::exhaustive_structs)] // databake hidden fields
+pub struct ZeroTriePerfectHash<Store: ?Sized> {
+    #[doc(hidden)] // for databake, but there are no invariants
+    pub store: Store,
+}
+
+impl<Store: ?Sized> ZeroTriePerfectHash<Store> {
+    fn transparent_ref_from_store(s: &Store) -> &Self {
+        unsafe {
+            // Safety: Self is transparent over Store
+            core::mem::transmute(s)
+        }
+    }
+}
+
+impl<Store> ZeroTriePerfectHash<Store> {
+    /// Wrap this specific ZeroTrie variant into a ZeroTrie.
+    #[inline]
+    pub const fn into_zerotrie(self) -> ZeroTrie<Store> {
+        ZeroTrie(ZeroTrieFlavor::PerfectHash(self))
+    }
+}
+
+/// A data structure that maps from a large number of byte strings to integers.
+///
+/// For more information, see [`ZeroTrie`].
+#[repr(transparent)]
+#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = zerotrie))]
+#[allow(clippy::exhaustive_structs)] // databake hidden fields
+pub struct ZeroTrieExtendedCapacity<Store: ?Sized> {
+    #[doc(hidden)] // for databake, but there are no invariants
+    pub store: Store,
+}
+
+impl<Store: ?Sized> ZeroTrieExtendedCapacity<Store> {
+    fn transparent_ref_from_store(s: &Store) -> &Self {
+        unsafe {
+            // Safety: Self is transparent over Store
+            core::mem::transmute(s)
+        }
+    }
+}
+
+impl<Store> ZeroTrieExtendedCapacity<Store> {
+    /// Wrap this specific ZeroTrie variant into a ZeroTrie.
+    #[inline]
+    pub const fn into_zerotrie(self) -> ZeroTrie<Store> {
+        ZeroTrie(ZeroTrieFlavor::ExtendedCapacity(self))
+    }
+}
+
+macro_rules! impl_zerotrie_subtype {
+    ($name:ident, $iter_element:ty, $iter_fn:path, $iter_ty:ty, $cnv_fn:path) => {
+        impl<Store> $name<Store> {
+            /// Create a trie directly from a store.
+            ///
+            /// If the store does not contain valid bytes, unexpected behavior may occur.
+            #[inline]
+            pub const fn from_store(store: Store) -> Self {
+                Self { store }
+            }
+            /// Takes the byte store from this trie.
+            #[inline]
+            pub fn into_store(self) -> Store {
+                self.store
+            }
+            /// Converts this trie's store to a different store implementing the `From` trait.
+            ///
+            #[doc = concat!("For example, use this to change `", stringify!($name), "<Vec<u8>>` to `", stringify!($name), "<Cow<[u8]>>`.")]
+            ///
+            /// # Examples
+            ///
+            /// ```
+            /// use std::borrow::Cow;
+            #[doc = concat!("use zerotrie::", stringify!($name), ";")]
+            ///
+            #[doc = concat!("let trie: ", stringify!($name), "<Vec<u8>> = ", stringify!($name), "::from_bytes(b\"abc\\x85\").to_owned();")]
+            #[doc = concat!("let cow: ", stringify!($name), "<Cow<[u8]>> = trie.convert_store();")]
+            ///
+            /// assert_eq!(cow.get(b"abc"), Some(5));
+            /// ```
+            pub fn convert_store<X: From<Store>>(self) -> $name<X> {
+                $name::<X>::from_store(X::from(self.store))
+            }
+        }
+        impl<Store> $name<Store>
+        where
+        Store: AsRef<[u8]> + ?Sized,
+        {
+            /// Queries the trie for a string.
+            pub fn get<K>(&self, key: K) -> Option<usize> where K: AsRef<[u8]> {
+                // TODO: Should this be AsRef or Borrow?
+                reader::get_parameterized::<Self>(self.store.as_ref(), key.as_ref())
+            }
+            /// Returns `true` if the trie is empty.
+            #[inline]
+            pub fn is_empty(&self) -> bool {
+                self.store.as_ref().is_empty()
+            }
+            /// Returns the size of the trie in number of bytes.
+            ///
+            /// To get the number of keys in the trie, use `.iter().count()`:
+            ///
+            /// ```
+            #[doc = concat!("use zerotrie::", stringify!($name), ";")]
+            ///
+            /// // A trie with two values: "abc" and "abcdef"
+            #[doc = concat!("let trie: &", stringify!($name), "<[u8]> = ", stringify!($name), "::from_bytes(b\"abc\\x80def\\x81\");")]
+            ///
+            /// assert_eq!(8, trie.byte_len());
+            /// assert_eq!(2, trie.iter().count());
+            /// ```
+            #[inline]
+            pub fn byte_len(&self) -> usize {
+                self.store.as_ref().len()
+            }
+            /// Returns the bytes contained in the underlying store.
+            #[inline]
+            pub fn as_bytes(&self) -> &[u8] {
+                self.store.as_ref()
+            }
+            /// Returns this trie as a reference transparent over a byte slice.
+            #[inline]
+            pub fn as_borrowed(&self) -> &$name<[u8]> {
+                $name::from_bytes(self.store.as_ref())
+            }
+            /// Returns a trie with a store borrowing from this trie.
+            #[inline]
+            pub fn as_borrowed_slice(&self) -> $name<&[u8]> {
+                $name::from_store(self.store.as_ref())
+            }
+        }
+        impl<Store> AsRef<$name<[u8]>> for $name<Store>
+        where
+        Store: AsRef<[u8]> + ?Sized,
+        {
+            #[inline]
+            fn as_ref(&self) -> &$name<[u8]> {
+                self.as_borrowed()
+            }
+        }
+        #[cfg(feature = "alloc")]
+        impl<Store> $name<Store>
+        where
+        Store: AsRef<[u8]> + ?Sized,
+        {
+            /// Converts a possibly-borrowed $name to an owned one.
+            ///
+            /// ✨ *Enabled with the `alloc` Cargo feature.*
+            ///
+            /// # Examples
+            ///
+            /// ```
+            #[doc = concat!("use zerotrie::", stringify!($name), ";")]
+            ///
+            #[doc = concat!("let trie: &", stringify!($name), "<[u8]> = ", stringify!($name), "::from_bytes(b\"abc\\x85\");")]
+            #[doc = concat!("let owned: ", stringify!($name), "<Vec<u8>> = trie.to_owned();")]
+            ///
+            /// assert_eq!(trie.get(b"abc"), Some(5));
+            /// assert_eq!(owned.get(b"abc"), Some(5));
+            /// ```
+            #[inline]
+            pub fn to_owned(&self) -> $name<Vec<u8>> {
+                $name::from_store(
+                    Vec::from(self.store.as_ref()),
+                )
+            }
+            /// Returns an iterator over the key/value pairs in this trie.
+            ///
+            /// ✨ *Enabled with the `alloc` Cargo feature.*
+            ///
+            /// # Examples
+            ///
+            /// ```
+            #[doc = concat!("use zerotrie::", stringify!($name), ";")]
+            ///
+            /// // A trie with two values: "abc" and "abcdef"
+            #[doc = concat!("let trie: &", stringify!($name), "<[u8]> = ", stringify!($name), "::from_bytes(b\"abc\\x80def\\x81\");")]
+            ///
+            /// let mut it = trie.iter();
+            /// assert_eq!(it.next(), Some(("abc".into(), 0)));
+            /// assert_eq!(it.next(), Some(("abcdef".into(), 1)));
+            /// assert_eq!(it.next(), None);
+            /// ```
+            #[inline]
+            #[allow(clippy::type_complexity)]
+            pub fn iter(&self) -> $iter_ty {
+                 $iter_fn(self.as_bytes())
+            }
+        }
+        impl $name<[u8]> {
+            /// Casts from a byte slice to a reference to a trie with the same lifetime.
+            ///
+            /// If the bytes are not a valid trie, unexpected behavior may occur.
+            #[inline]
+            pub fn from_bytes(trie: &[u8]) -> &Self {
+                Self::transparent_ref_from_store(trie)
+            }
+        }
+        #[cfg(feature = "alloc")]
+        impl $name<Vec<u8>> {
+            pub(crate) fn try_from_tuple_slice(items: &[(&ByteStr, usize)]) -> Result<Self, ZeroTrieBuildError> {
+                use crate::options::ZeroTrieWithOptions;
+                ZeroTrieBuilder::<VecDeque<u8>>::from_sorted_tuple_slice(
+                    items,
+                    Self::OPTIONS,
+                )
+                .map(|s| Self {
+                    store: s.to_bytes(),
+                })
+            }
+        }
+        #[cfg(feature = "alloc")]
+        impl<'a, K> FromIterator<(K, usize)> for $name<Vec<u8>>
+        where
+            K: AsRef<[u8]>
+        {
+            fn from_iter<T: IntoIterator<Item = (K, usize)>>(iter: T) -> Self {
+                use crate::options::ZeroTrieWithOptions;
+                use crate::builder::nonconst::ZeroTrieBuilder;
+                ZeroTrieBuilder::<VecDeque<u8>>::from_bytes_iter(
+                    iter,
+                    Self::OPTIONS
+                )
+                .map(|s| Self {
+                    store: s.to_bytes(),
+                })
+                .unwrap()
+            }
+        }
+        #[cfg(feature = "alloc")]
+        impl<'a, K> TryFrom<&'a BTreeMap<K, usize>> for $name<Vec<u8>>
+        where
+            K: Borrow<[u8]>
+        {
+            type Error = crate::error::ZeroTrieBuildError;
+            fn try_from(map: &'a BTreeMap<K, usize>) -> Result<Self, Self::Error> {
+                let tuples: Vec<(&[u8], usize)> = map
+                    .iter()
+                    .map(|(k, v)| (k.borrow(), *v))
+                    .collect();
+                let byte_str_slice = ByteStr::from_byte_slice_with_value(&tuples);
+                Self::try_from_tuple_slice(byte_str_slice)
+            }
+        }
+        #[cfg(feature = "alloc")]
+        impl<Store> $name<Store>
+        where
+            Store: AsRef<[u8]> + ?Sized
+        {
+            /// Exports the data from this ZeroTrie type into a BTreeMap.
+            ///
+            /// ✨ *Enabled with the `alloc` Cargo feature.*
+            ///
+            /// # Examples
+            ///
+            /// ```
+            #[doc = concat!("use zerotrie::", stringify!($name), ";")]
+            /// use std::collections::BTreeMap;
+            ///
+            #[doc = concat!("let trie = ", stringify!($name), "::from_bytes(b\"abc\\x81def\\x82\");")]
+            /// let items = trie.to_btreemap();
+            ///
+            /// assert_eq!(items.len(), 2);
+            ///
+            #[doc = concat!("let recovered_trie: ", stringify!($name), "<Vec<u8>> = items")]
+            ///     .into_iter()
+            ///     .collect();
+            /// assert_eq!(trie.as_bytes(), recovered_trie.as_bytes());
+            /// ```
+            pub fn to_btreemap(&self) -> BTreeMap<$iter_element, usize> {
+                self.iter().collect()
+            }
+            #[allow(dead_code)] // not needed for ZeroAsciiIgnoreCaseTrie
+            pub(crate) fn to_btreemap_bytes(&self) -> BTreeMap<Box<[u8]>, usize> {
+                self.iter().map(|(k, v)| ($cnv_fn(k), v)).collect()
+            }
+        }
+        #[cfg(feature = "alloc")]
+        impl<Store> From<&$name<Store>> for BTreeMap<$iter_element, usize>
+        where
+            Store: AsRef<[u8]> + ?Sized,
+        {
+            #[inline]
+            fn from(other: &$name<Store>) -> Self {
+                other.to_btreemap()
+            }
+        }
+        #[cfg(feature = "litemap")]
+        impl<'a, K, S> TryFrom<&'a LiteMap<K, usize, S>> for $name<Vec<u8>>
+        where
+            K: Borrow<[u8]>,
+            S: litemap::store::StoreIterable<'a, K, usize>,
+        {
+            type Error = crate::error::ZeroTrieBuildError;
+            fn try_from(map: &'a LiteMap<K, usize, S>) -> Result<Self, Self::Error> {
+                let tuples: Vec<(&[u8], usize)> = map
+                    .iter()
+                    .map(|(k, v)| (k.borrow(), *v))
+                    .collect();
+                let byte_str_slice = ByteStr::from_byte_slice_with_value(&tuples);
+                Self::try_from_tuple_slice(byte_str_slice)
+            }
+        }
+        #[cfg(feature = "litemap")]
+        impl<Store> $name<Store>
+        where
+            Store: AsRef<[u8]> + ?Sized,
+        {
+            /// Exports the data from this ZeroTrie type into a LiteMap.
+            ///
+            /// ✨ *Enabled with the `litemap` Cargo feature.*
+            ///
+            /// # Examples
+            ///
+            /// ```
+            #[doc = concat!("use zerotrie::", stringify!($name), ";")]
+            /// use litemap::LiteMap;
+            ///
+            #[doc = concat!("let trie = ", stringify!($name), "::from_bytes(b\"abc\\x81def\\x82\");")]
+            ///
+            /// let items = trie.to_litemap();
+            /// assert_eq!(items.len(), 2);
+            ///
+            #[doc = concat!("let recovered_trie: ", stringify!($name), "<Vec<u8>> = items")]
+            ///     .iter()
+            ///     .map(|(k, v)| (k, *v))
+            ///     .collect();
+            /// assert_eq!(trie.as_bytes(), recovered_trie.as_bytes());
+            /// ```
+            pub fn to_litemap(&self) -> LiteMap<$iter_element, usize> {
+                self.iter().collect()
+            }
+            #[allow(dead_code)] // not needed for ZeroAsciiIgnoreCaseTrie
+            pub(crate) fn to_litemap_bytes(&self) -> LiteMap<Box<[u8]>, usize> {
+                self.iter().map(|(k, v)| ($cnv_fn(k), v)).collect()
+            }
+        }
+        #[cfg(feature = "litemap")]
+        impl<Store> From<&$name<Store>> for LiteMap<$iter_element, usize>
+        where
+            Store: AsRef<[u8]> + ?Sized,
+        {
+            #[inline]
+            fn from(other: &$name<Store>) -> Self {
+                other.to_litemap()
+            }
+        }
+        #[cfg(feature = "litemap")]
+        impl $name<Vec<u8>>
+        {
+            #[cfg(feature = "serde")]
+            pub(crate) fn try_from_serde_litemap(items: &LiteMap<Box<ByteStr>, usize>) -> Result<Self, ZeroTrieBuildError> {
+                let lm_borrowed: LiteMap<&ByteStr, usize> = items.to_borrowed_keys();
+                Self::try_from_tuple_slice(lm_borrowed.as_slice())
+            }
+        }
+        // Note: Can't generalize this impl due to the `core::borrow::Borrow` blanket impl.
+        impl Borrow<$name<[u8]>> for $name<&[u8]> {
+            #[inline]
+            fn borrow(&self) -> &$name<[u8]> {
+                self.as_borrowed()
+            }
+        }
+        // Note: Can't generalize this impl due to the `core::borrow::Borrow` blanket impl.
+        #[cfg(feature = "alloc")]
+        impl Borrow<$name<[u8]>> for $name<Box<[u8]>> {
+            #[inline]
+            fn borrow(&self) -> &$name<[u8]> {
+                self.as_borrowed()
+            }
+        }
+        // Note: Can't generalize this impl due to the `core::borrow::Borrow` blanket impl.
+        #[cfg(feature = "alloc")]
+        impl Borrow<$name<[u8]>> for $name<Vec<u8>> {
+            #[inline]
+            fn borrow(&self) -> &$name<[u8]> {
+                self.as_borrowed()
+            }
+        }
+        #[cfg(feature = "alloc")]
+        impl alloc::borrow::ToOwned for $name<[u8]> {
+            type Owned = $name<Box<[u8]>>;
+            #[doc = concat!("This impl allows [`", stringify!($name), "`] to be used inside of a [`Cow`](alloc::borrow::Cow).")]
+            ///
+            #[doc = concat!("Note that it is also possible to use `", stringify!($name), "<ZeroVec<u8>>` for a similar result.")]
+            ///
+            /// ✨ *Enabled with the `alloc` Cargo feature.*
+            ///
+            /// # Examples
+            ///
+            /// ```
+            /// use std::borrow::Cow;
+            #[doc = concat!("use zerotrie::", stringify!($name), ";")]
+            ///
+            #[doc = concat!("let trie: Cow<", stringify!($name), "<[u8]>> = Cow::Borrowed(", stringify!($name), "::from_bytes(b\"abc\\x85\"));")]
+            /// assert_eq!(trie.get(b"abc"), Some(5));
+            /// ```
+            fn to_owned(&self) -> Self::Owned {
+                let bytes: &[u8] = self.store.as_ref();
+                $name::from_store(
+                    Vec::from(bytes).into_boxed_slice(),
+                )
+            }
+        }
+        // TODO(#2778): Auto-derive these impls based on the repr(transparent).
+        //
+        // Safety (based on the safety checklist on the VarULE trait):
+        //  1. `$name` does not include any uninitialized or padding bytes as it is `repr(transparent)`
+        //     over a `VarULE` type, `Store`, as evidenced by the existence of `transparent_ref_from_store()`
+        //  2. `$name` is aligned to 1 byte for the same reason
+        //  3. The impl of `validate_bytes()` returns an error if any byte is not valid (passed down to `VarULE` impl of `Store`)
+        //  4. The impl of `validate_bytes()` returns an error if the slice cannot be used in its entirety (passed down to `VarULE` impl of `Store`)
+        //  5. The impl of `from_bytes_unchecked()` returns a reference to the same data.
+        //  6. `parse_bytes()` is left to its default impl
+        //  7. byte equality is semantic equality
+        #[cfg(feature = "zerovec")]
+        unsafe impl<Store> zerovec::ule::VarULE for $name<Store>
+        where
+            Store: zerovec::ule::VarULE,
+        {
+            #[inline]
+            fn validate_bytes(bytes: &[u8]) -> Result<(), zerovec::ule::UleError> {
+                Store::validate_bytes(bytes)
+            }
+            #[inline]
+            unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+                // Safety: we can pass down the validity invariant to Store
+                Self::transparent_ref_from_store(Store::from_bytes_unchecked(bytes))
+            }
+        }
+        #[cfg(feature = "zerofrom")]
+        impl<'zf, Store1, Store2> zerofrom::ZeroFrom<'zf, $name<Store1>> for $name<Store2>
+        where
+            Store2: zerofrom::ZeroFrom<'zf, Store1>,
+        {
+            #[inline]
+            fn zero_from(other: &'zf $name<Store1>) -> Self {
+                $name::from_store(zerofrom::ZeroFrom::zero_from(&other.store))
+            }
+        }
+    };
+}
+
+#[cfg(feature = "alloc")]
+fn string_to_box_u8(input: String) -> Box<[u8]> {
+    input.into_boxed_str().into_boxed_bytes()
+}
+
+#[doc(hidden)] // subject to change
+#[cfg(feature = "alloc")]
+pub type ZeroTrieStringIterator<'a> =
+    core::iter::Map<reader::ZeroTrieIterator<'a>, fn((Vec<u8>, usize)) -> (String, usize)>;
+
+impl_zerotrie_subtype!(
+    ZeroTrieSimpleAscii,
+    String,
+    reader::get_iter_ascii_or_panic,
+    ZeroTrieStringIterator,
+    string_to_box_u8
+);
+impl_zerotrie_subtype!(
+    ZeroAsciiIgnoreCaseTrie,
+    String,
+    reader::get_iter_ascii_or_panic,
+    ZeroTrieStringIterator,
+    string_to_box_u8
+);
+impl_zerotrie_subtype!(
+    ZeroTriePerfectHash,
+    Vec<u8>,
+    reader::get_iter_phf,
+    reader::ZeroTrieIterator<'_>,
+    Vec::into_boxed_slice
+);
+impl_zerotrie_subtype!(
+    ZeroTrieExtendedCapacity,
+    Vec<u8>,
+    reader::get_iter_phf,
+    reader::ZeroTrieIterator<'_>,
+    Vec::into_boxed_slice
+);
+
+macro_rules! impl_dispatch {
+    ($self:ident, $inner_fn:ident()) => {
+        match $self.0 {
+            ZeroTrieFlavor::SimpleAscii(subtype) => subtype.$inner_fn(),
+            ZeroTrieFlavor::PerfectHash(subtype) => subtype.$inner_fn(),
+            ZeroTrieFlavor::ExtendedCapacity(subtype) => subtype.$inner_fn(),
+        }
+    };
+    ($self:ident, $inner_fn:ident().into_zerotrie()) => {
+        match $self.0 {
+            ZeroTrieFlavor::SimpleAscii(subtype) => subtype.$inner_fn().into_zerotrie(),
+            ZeroTrieFlavor::PerfectHash(subtype) => subtype.$inner_fn().into_zerotrie(),
+            ZeroTrieFlavor::ExtendedCapacity(subtype) => subtype.$inner_fn().into_zerotrie(),
+        }
+    };
+    (&$self:ident, $inner_fn:ident()) => {
+        match &$self.0 {
+            ZeroTrieFlavor::SimpleAscii(subtype) => subtype.$inner_fn(),
+            ZeroTrieFlavor::PerfectHash(subtype) => subtype.$inner_fn(),
+            ZeroTrieFlavor::ExtendedCapacity(subtype) => subtype.$inner_fn(),
+        }
+    };
+    ($self:ident, $inner_fn:ident($arg:ident)) => {
+        match $self.0 {
+            ZeroTrieFlavor::SimpleAscii(subtype) => subtype.$inner_fn($arg),
+            ZeroTrieFlavor::PerfectHash(subtype) => subtype.$inner_fn($arg),
+            ZeroTrieFlavor::ExtendedCapacity(subtype) => subtype.$inner_fn($arg),
+        }
+    };
+    (&$self:ident, $inner_fn:ident($arg:ident)) => {
+        match &$self.0 {
+            ZeroTrieFlavor::SimpleAscii(subtype) => subtype.$inner_fn($arg),
+            ZeroTrieFlavor::PerfectHash(subtype) => subtype.$inner_fn($arg),
+            ZeroTrieFlavor::ExtendedCapacity(subtype) => subtype.$inner_fn($arg),
+        }
+    };
+    (&$self:ident, $trait:ident::$inner_fn:ident()) => {
+        match &$self.0 {
+            ZeroTrieFlavor::SimpleAscii(subtype) => {
+                ZeroTrie(ZeroTrieFlavor::SimpleAscii($trait::$inner_fn(subtype)))
+            }
+            ZeroTrieFlavor::PerfectHash(subtype) => {
+                ZeroTrie(ZeroTrieFlavor::PerfectHash($trait::$inner_fn(subtype)))
+            }
+            ZeroTrieFlavor::ExtendedCapacity(subtype) => {
+                ZeroTrie(ZeroTrieFlavor::ExtendedCapacity($trait::$inner_fn(subtype)))
+            }
+        }
+    };
+}
+
+impl<Store> ZeroTrie<Store> {
+    /// Takes the byte store from this trie.
+    pub fn into_store(self) -> Store {
+        impl_dispatch!(self, into_store())
+    }
+    /// Converts this trie's store to a different store implementing the `From` trait.
+    ///
+    /// For example, use this to change `ZeroTrie<Vec<u8>>` to `ZeroTrie<Cow<[u8]>>`.
+    pub fn convert_store<NewStore>(self) -> ZeroTrie<NewStore>
+    where
+        NewStore: From<Store>,
+    {
+        impl_dispatch!(self, convert_store().into_zerotrie())
+    }
+}
+
+impl<Store> ZeroTrie<Store>
+where
+    Store: AsRef<[u8]>,
+{
+    /// Queries the trie for a string.
+    pub fn get<K>(&self, key: K) -> Option<usize>
+    where
+        K: AsRef<[u8]>,
+    {
+        impl_dispatch!(&self, get(key))
+    }
+    /// Returns `true` if the trie is empty.
+    pub fn is_empty(&self) -> bool {
+        impl_dispatch!(&self, is_empty())
+    }
+    /// Returns the size of the trie in number of bytes.
+    ///
+    /// To get the number of keys in the trie, use `.iter().count()`.
+    pub fn byte_len(&self) -> usize {
+        impl_dispatch!(&self, byte_len())
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<Store> ZeroTrie<Store>
+where
+    Store: AsRef<[u8]>,
+{
+    /// Exports the data from this ZeroTrie into a BTreeMap.
+    pub fn to_btreemap(&self) -> BTreeMap<Box<[u8]>, usize> {
+        impl_dispatch!(&self, to_btreemap_bytes())
+    }
+}
+
+#[cfg(feature = "litemap")]
+impl<Store> ZeroTrie<Store>
+where
+    Store: AsRef<[u8]>,
+{
+    /// Exports the data from this ZeroTrie into a LiteMap.
+    pub fn to_litemap(&self) -> LiteMap<Box<[u8]>, usize> {
+        impl_dispatch!(&self, to_litemap_bytes())
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl ZeroTrie<Vec<u8>> {
+    pub(crate) fn try_from_tuple_slice(
+        items: &[(&ByteStr, usize)],
+    ) -> Result<Self, ZeroTrieBuildError> {
+        let is_all_ascii = items.iter().all(|(s, _)| s.is_all_ascii());
+        if is_all_ascii && items.len() < 512 {
+            ZeroTrieSimpleAscii::try_from_tuple_slice(items).map(|x| x.into_zerotrie())
+        } else {
+            ZeroTriePerfectHash::try_from_tuple_slice(items).map(|x| x.into_zerotrie())
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<K> FromIterator<(K, usize)> for ZeroTrie<Vec<u8>>
+where
+    K: AsRef<[u8]>,
+{
+    fn from_iter<T: IntoIterator<Item = (K, usize)>>(iter: T) -> Self {
+        // We need two Vecs because the first one anchors the `K`s that the second one borrows.
+        let items = Vec::from_iter(iter);
+        let mut items: Vec<(&[u8], usize)> = items.iter().map(|(k, v)| (k.as_ref(), *v)).collect();
+        items.sort();
+        let byte_str_slice = ByteStr::from_byte_slice_with_value(&items);
+        #[allow(clippy::unwrap_used)] // FromIterator is panicky
+        Self::try_from_tuple_slice(byte_str_slice).unwrap()
+    }
+}
+
+#[cfg(feature = "databake")]
+impl<Store> databake::Bake for ZeroTrie<Store>
+where
+    Store: databake::Bake,
+{
+    fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+        use databake::*;
+        let inner = impl_dispatch!(&self, bake(env));
+        quote! { #inner.into_zerotrie() }
+    }
+}
+
+#[cfg(feature = "databake")]
+impl<Store> databake::BakeSize for ZeroTrie<Store>
+where
+    Store: databake::BakeSize,
+{
+    fn borrows_size(&self) -> usize {
+        impl_dispatch!(&self, borrows_size())
+    }
+}
+
+#[cfg(feature = "zerofrom")]
+impl<'zf, Store1, Store2> zerofrom::ZeroFrom<'zf, ZeroTrie<Store1>> for ZeroTrie<Store2>
+where
+    Store2: zerofrom::ZeroFrom<'zf, Store1>,
+{
+    fn zero_from(other: &'zf ZeroTrie<Store1>) -> Self {
+        use zerofrom::ZeroFrom;
+        impl_dispatch!(&other, ZeroFrom::zero_from())
+    }
+}
diff --git a/vendor/zerotrie/tests/asciitrie_test.rs b/vendor/zerotrie/tests/asciitrie_test.rs
new file mode 100644
index 00000000..cc6d5fbe
--- /dev/null
+++ b/vendor/zerotrie/tests/asciitrie_test.rs
@@ -0,0 +1,73 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use postcard::ser_flavors::{AllocVec, Flavor};
+use serde::Serialize;
+use zerotrie::ZeroTriePerfectHash;
+use zerotrie::ZeroTrieSimpleAscii;
+use zerovec::ZeroMap;
+
+mod testdata {
+    include!("data/data.rs");
+}
+
+#[test]
+fn test_basic() {
+    let bytes_ascii = testdata::basic::TRIE_ASCII;
+    let data_ascii = testdata::basic::DATA_ASCII;
+    let trie_ascii = ZeroTrieSimpleAscii::from_bytes(bytes_ascii);
+    let trie_phf_ascii = ZeroTriePerfectHash::from_bytes(bytes_ascii);
+
+    let bytes_unicode = testdata::basic::TRIE_UNICODE;
+    let data_unicode = testdata::basic::DATA_UNICODE;
+    let trie_phf_unicode = ZeroTriePerfectHash::from_bytes(bytes_unicode);
+
+    let bytes_binary = testdata::basic::TRIE_BINARY;
+    let data_binary = testdata::basic::DATA_BINARY;
+    let trie_phf_binary = ZeroTriePerfectHash::from_bytes(bytes_binary);
+
+    // Check that the getter works
+    for (key, expected) in data_ascii {
+        let actual = match trie_ascii.get(key) {
+            Some(v) => v,
+            None => panic!("value should be in trie: {:?} => {}", key, expected),
+        };
+        assert_eq!(*expected, actual);
+        let actual = match trie_phf_ascii.get(key) {
+            Some(v) => v,
+            None => panic!("value should be in trie6: {:?} => {}", key, expected),
+        };
+        assert_eq!(*expected, actual);
+    }
+
+    for (key, expected) in data_unicode {
+        let actual_unicode = match trie_phf_unicode.get(key) {
+            Some(v) => v,
+            None => panic!("value should be in trie6: {:?} => {}", key, expected),
+        };
+        assert_eq!(*expected, actual_unicode);
+    }
+
+    for (key, expected) in data_binary {
+        let actual_bin6 = match trie_phf_binary.get(key) {
+            Some(v) => v,
+            None => panic!("value should be in trie6: {:?} => {}", key, expected),
+        };
+        assert_eq!(*expected, actual_bin6);
+    }
+
+    // Compare the size to a postcard ZeroMap
+    let zm: ZeroMap<[u8], u32> = data_ascii.iter().map(|(a, b)| (*a, *b as u32)).collect();
+    let mut serializer = postcard::Serializer {
+        output: AllocVec::new(),
+    };
+    Serialize::serialize(&zm, &mut serializer).unwrap();
+    let zeromap_bytes = serializer
+        .output
+        .finalize()
+        .expect("Failed to finalize serializer output");
+
+    assert_eq!(26, bytes_ascii.len());
+    assert_eq!(77, zeromap_bytes.len());
+}
diff --git a/vendor/zerotrie/tests/builder_test.rs b/vendor/zerotrie/tests/builder_test.rs
new file mode 100644
index 00000000..263169e0
--- /dev/null
+++ b/vendor/zerotrie/tests/builder_test.rs
@@ -0,0 +1,855 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use litemap::LiteMap;
+use zerotrie::ZeroTriePerfectHash;
+use zerotrie::ZeroTrieSimpleAscii;
+
+mod testdata {
+    include!("data/data.rs");
+}
+
+use testdata::strings_to_litemap;
+
+const NON_EXISTENT_STRINGS: &[&str] = &[
+    "a9PS", "ahsY", "ahBO", "a8IN", "xk8o", "xv1l", "xI2S", "618y", "d6My", "uszy",
+];
+
+macro_rules! assert_bytes_eq {
+    ($len:literal, $a:expr, $b:expr) => {
+        assert_eq!($len, $a.len());
+        assert_eq!($a, $b);
+    };
+}
+
+fn check_simple_ascii_trie<S>(items: &LiteMap<&[u8], usize>, trie: &ZeroTrieSimpleAscii<S>)
+where
+    S: AsRef<[u8]> + ?Sized,
+{
+    // Check that each item is in the trie
+    for (k, v) in items.iter() {
+        assert_eq!(trie.get(k), Some(*v));
+    }
+    // Check that some items are not in the trie
+    for s in NON_EXISTENT_STRINGS.iter() {
+        assert_eq!(trie.get(s.as_bytes()), None);
+    }
+    // Check that the iterator returns items in the same order as the LiteMap
+    assert!(items
+        .iter()
+        .map(|(s, v)| (String::from_utf8(s.to_vec()).unwrap(), *v))
+        .eq(trie.iter()));
+    // Check that the const builder works
+    let const_trie = ZeroTrieSimpleAscii::try_from_litemap_with_const_builder(items).unwrap();
+    assert_eq!(trie.as_bytes(), const_trie.as_bytes());
+}
+
+fn check_phf_ascii_trie<S>(items: &LiteMap<&[u8], usize>, trie: &ZeroTriePerfectHash<S>)
+where
+    S: AsRef<[u8]> + ?Sized,
+{
+    // Check that each item is in the trie
+    for (k, v) in items.iter() {
+        assert_eq!(trie.get(k), Some(*v));
+    }
+    // Check that some items are not in the trie
+    for s in NON_EXISTENT_STRINGS.iter() {
+        assert_eq!(trie.get(s.as_bytes()), None);
+    }
+    // Check that the iterator returns the contents of the LiteMap
+    // Note: Since the items might not be in order, we collect them into a new LiteMap
+    let recovered_items: LiteMap<_, _> = trie.iter().collect();
+    assert_eq!(
+        items.to_borrowed_keys_values::<[u8], usize, Vec<_>>(),
+        recovered_items.to_borrowed_keys_values()
+    );
+}
+
+fn check_phf_bytes_trie<S>(items: &LiteMap<&[u8], usize>, trie: &ZeroTriePerfectHash<S>)
+where
+    S: AsRef<[u8]> + ?Sized,
+{
+    // Check that each item is in the trie
+    for (k, v) in items.iter() {
+        assert_eq!(trie.get(k), Some(*v), "{k:?}");
+    }
+    // Check that some items are not in the trie
+    for s in NON_EXISTENT_STRINGS.iter() {
+        assert_eq!(trie.get(s.as_bytes()), None, "{s:?}");
+    }
+    // Check that the iterator returns the contents of the LiteMap
+    // Note: Since the items might not be in order, we collect them into a new LiteMap
+    let recovered_items: LiteMap<_, _> = trie.iter().collect();
+    assert_eq!(
+        items.to_borrowed_keys_values::<[u8], usize, Vec<_>>(),
+        recovered_items.to_borrowed_keys_values()
+    );
+}
+
+#[test]
+fn test_basic() {
+    let lm1a: LiteMap<&[u8], usize> = testdata::basic::DATA_ASCII.iter().copied().collect();
+    let lm1b: LiteMap<&[u8], usize> = lm1a.to_borrowed_keys();
+    let lm2: LiteMap<&[u8], usize> = testdata::basic::DATA_UNICODE.iter().copied().collect();
+    let lm3: LiteMap<&[u8], usize> = testdata::basic::DATA_BINARY.iter().copied().collect();
+
+    let expected_bytes = testdata::basic::TRIE_ASCII;
+    let trie = ZeroTrieSimpleAscii::try_from(&lm1a).unwrap();
+    assert_bytes_eq!(26, trie.as_bytes(), expected_bytes);
+    check_simple_ascii_trie(&lm1a, &trie);
+
+    let trie = ZeroTriePerfectHash::try_from(&lm1b).unwrap();
+    assert_bytes_eq!(26, trie.as_bytes(), expected_bytes);
+    check_phf_ascii_trie(&lm1a, &trie);
+
+    let expected_bytes = testdata::basic::TRIE_UNICODE;
+    let trie = ZeroTriePerfectHash::try_from(&lm2).unwrap();
+    assert_bytes_eq!(39, trie.as_bytes(), expected_bytes);
+    check_phf_bytes_trie(&lm2, &trie);
+
+    let expected_bytes = testdata::basic::TRIE_BINARY;
+    let trie = ZeroTriePerfectHash::try_from(&lm3).unwrap();
+    assert_bytes_eq!(26, trie.as_bytes(), expected_bytes);
+    check_phf_bytes_trie(&lm3, &trie);
+}
+
+#[test]
+fn test_empty() {
+    let trie = ZeroTrieSimpleAscii::try_from(&LiteMap::<&[u8], usize>::new_vec()).unwrap();
+    assert_eq!(trie.byte_len(), 0);
+    assert!(trie.is_empty());
+    assert_eq!(trie.get(b""), None);
+    assert_eq!(trie.as_bytes(), &[]);
+}
+
+#[test]
+fn test_single_empty_value() {
+    let litemap: LiteMap<&[u8], usize> = [
+        (&b""[..], 10), //
+    ]
+    .into_iter()
+    .collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), Some(10));
+    assert_eq!(trie.get(b"x"), None);
+    let expected_bytes = &[0b10001010];
+    assert_eq!(trie.as_bytes(), expected_bytes);
+
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_bytes_eq!(1, trie_phf.as_bytes(), expected_bytes);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_single_byte_string() {
+    let litemap: LiteMap<&[u8], usize> = [
+        (&b"x"[..], 10), //
+    ]
+    .into_iter()
+    .collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), None);
+    assert_eq!(trie.get(b"xy"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    let expected_bytes = &[b'x', 0b10001010];
+    assert_bytes_eq!(2, trie.as_bytes(), expected_bytes);
+
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_bytes_eq!(2, trie_phf.as_bytes(), expected_bytes);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_single_string() {
+    let litemap: LiteMap<&[u8], usize> = [
+        (&b"xyz"[..], 10), //
+    ]
+    .into_iter()
+    .collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), None);
+    assert_eq!(trie.get(b"x"), None);
+    assert_eq!(trie.get(b"xy"), None);
+    assert_eq!(trie.get(b"xyzz"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    let expected_bytes = &[b'x', b'y', b'z', 0b10001010];
+    assert_bytes_eq!(4, trie.as_bytes(), expected_bytes);
+
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_bytes_eq!(4, trie_phf.as_bytes(), expected_bytes);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_prefix_strings() {
+    let litemap: LiteMap<&[u8], usize> = [(&b"x"[..], 0), (b"xy", 1)].into_iter().collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), None);
+    assert_eq!(trie.get(b"xyz"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    let expected_bytes = &[b'x', 0b10000000, b'y', 0b10000001];
+    assert_bytes_eq!(4, trie.as_bytes(), expected_bytes);
+
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_bytes_eq!(4, trie_phf.as_bytes(), expected_bytes);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_single_byte_branch() {
+    let litemap: LiteMap<&[u8], usize> = [(&b"x"[..], 0), (b"y", 1)].into_iter().collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), None);
+    assert_eq!(trie.get(b"xy"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    let expected_bytes = &[0b11000010, b'x', b'y', 1, 0b10000000, 0b10000001];
+    assert_bytes_eq!(6, trie.as_bytes(), expected_bytes);
+
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_bytes_eq!(6, trie_phf.as_bytes(), expected_bytes);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_multi_byte_branch() {
+    let litemap: LiteMap<&[u8], usize> = [(&b"axb"[..], 0), (b"ayc", 1)].into_iter().collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), None);
+    assert_eq!(trie.get(b"a"), None);
+    assert_eq!(trie.get(b"ax"), None);
+    assert_eq!(trie.get(b"ay"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    let expected_bytes = &[
+        b'a', 0b11000010, b'x', b'y', 2, b'b', 0b10000000, b'c', 0b10000001,
+    ];
+    assert_bytes_eq!(9, trie.as_bytes(), expected_bytes);
+
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_bytes_eq!(9, trie_phf.as_bytes(), expected_bytes);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_linear_varint_values() {
+    let litemap: LiteMap<&[u8], usize> = [(&b""[..], 100), (b"x", 500), (b"xyz", 5000)]
+        .into_iter()
+        .collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b"xy"), None);
+    assert_eq!(trie.get(b"xz"), None);
+    assert_eq!(trie.get(b"xyzz"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    let expected_bytes = &[0x90, 0x54, b'x', 0x93, 0x64, b'y', b'z', 0x90, 0x96, 0x78];
+    assert_bytes_eq!(10, trie.as_bytes(), expected_bytes);
+
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_bytes_eq!(10, trie_phf.as_bytes(), expected_bytes);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_bug() {
+    let litemap: LiteMap<&[u8], usize> = [(&b"abc"[..], 100), (b"abcd", 500), (b"abcde", 5000)]
+        .into_iter()
+        .collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b"ab"), None);
+    assert_eq!(trie.get(b"abd"), None);
+    assert_eq!(trie.get(b"abCD"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    check_phf_ascii_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_varint_branch() {
+    let chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+    let litemap: LiteMap<&[u8], usize> = (0..chars.len())
+        .map(|i| (chars.get(i..i + 1).unwrap().as_bytes(), i))
+        .collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), None);
+    assert_eq!(trie.get(b"ax"), None);
+    assert_eq!(trie.get(b"ay"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    #[rustfmt::skip]
+    let expected_bytes = &[
+        0b11100000, // branch varint lead
+        0x14,       // branch varint trail
+        // search array:
+        b'A', b'B', b'C', b'D', b'E', b'F', b'G', b'H', b'I', b'J',
+        b'K', b'L', b'M', b'N', b'O', b'P', b'Q', b'R', b'S', b'T',
+        b'U', b'V', b'W', b'X', b'Y', b'Z',
+        b'a', b'b', b'c', b'd', b'e', b'f', b'g', b'h', b'i', b'j',
+        b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't',
+        b'u', b'v', b'w', b'x', b'y', b'z',
+        // offset array:
+        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20,
+        22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52,
+        54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84,
+        86,
+        // single-byte values:
+        0x80, (0x80 | 1), (0x80 | 2), (0x80 | 3), (0x80 | 4),
+        (0x80 | 5), (0x80 | 6), (0x80 | 7), (0x80 | 8), (0x80 | 9),
+        (0x80 | 10), (0x80 | 11), (0x80 | 12), (0x80 | 13), (0x80 | 14),
+        (0x80 | 15),
+        // multi-byte values:
+        0x90, 0, 0x90, 1, 0x90, 2, 0x90, 3, 0x90, 4, 0x90, 5,
+        0x90, 6, 0x90, 7, 0x90, 8, 0x90, 9, 0x90, 10, 0x90, 11,
+        0x90, 12, 0x90, 13, 0x90, 14, 0x90, 15, 0x90, 16, 0x90, 17,
+        0x90, 18, 0x90, 19, 0x90, 20, 0x90, 21, 0x90, 22, 0x90, 23,
+        0x90, 24, 0x90, 25, 0x90, 26, 0x90, 27, 0x90, 28, 0x90, 29,
+        0x90, 30, 0x90, 31, 0x90, 32, 0x90, 33, 0x90, 34, 0x90, 35,
+    ];
+    assert_bytes_eq!(193, trie.as_bytes(), expected_bytes);
+
+    #[rustfmt::skip]
+    let expected_bytes = &[
+        0b11100000, // branch varint lead
+        0x14,       // branch varint trail
+        // PHF metadata:
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 10, 12, 16, 4, 4, 4, 4, 4, 4, 8,
+        4, 4, 4, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 7,
+        // search array:
+        b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o',
+        b'p', b'u', b'v', b'w', b'D', b'E', b'F', b'q',
+        b'r', b'A', b'B', b'C', b'x', b'y', b'z', b's',
+        b'H', b'I', b'J', b'G', b'P', b'Q', b'R', b'S',
+        b'T', b'U', b'V', b'W', b'X', b'Y', b'Z', b'K',
+        b'L', b'M', b'N', b'O', b'g', b'a', b'b', b'c',
+        b't', b'd', b'f', b'e',
+        // offset array:
+        2, 4, 6, 8, 10, 12, 14,
+        16, 18, 20, 22, 24, 25, 26, 27,
+        29, 31, 32, 33, 34, 36, 38, 40,
+        42, 43, 44, 45, 46, 47, 49, 51,
+        53, 55, 57, 59, 61, 63, 65, 67,
+        68, 69, 70, 71, 72, 74, 76, 78,
+        80, 82, 84, 86,
+        // values:
+        0x90, 17, 0x90, 18, 0x90, 19, 0x90, 20, 0x90, 21, 0x90, 22, 0x90, 23,
+        0x90, 24, 0x90, 25, 0x90, 30, 0x90, 31, 0x90, 32, 0x80 | 3, 0x80 | 4,
+        0x80 | 5, 0x90, 26, 0x90, 27, 0x80, 0x80 | 1, 0x80 | 2, 0x90, 33,
+        0x90, 34, 0x90, 35, 0x90, 28, 0x80 | 7, 0x80 | 8, 0x80 | 9, 0x80 | 6,
+        0x80 | 15, 0x90, 0, 0x90, 1, 0x90, 2, 0x90, 3, 0x90, 4, 0x90, 5,
+        0x90, 6, 0x90, 7, 0x90, 8, 0x90, 9, 0x80 | 10, 0x80 | 11, 0x80 | 12,
+        0x80 | 13, 0x80 | 14, 0x90, 16, 0x90, 10, 0x90, 11, 0x90, 12, 0x90, 29,
+        0x90, 13, 0x90, 15, 0x90, 14,
+    ];
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_bytes_eq!(246, trie_phf.as_bytes(), expected_bytes);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_below_wide() {
+    let litemap: LiteMap<&[u8], usize> = [
+        (&b"abcdefghijklmnopqrstuvwxyz"[..], 1),
+        (b"bcdefghijklmnopqrstuvwxyza", 2),
+        (b"cdefghijklmnopqrstuvwxyzab", 3),
+        (b"defghijklmnopqrstuvwxyzabc", 4),
+        (b"efghijklmnopqrstuvwxyzabcd", 5),
+        (b"fghijklmnopqrstuvwxyzabcde", 6),
+        (b"ghijklmnopqrstuvwxyzabcdef", 7),
+        (b"hijklmnopqrstuvwxyzabcdefg", 8),
+        (b"ijklmnopqrstuvwxyzabcdefgh", 9),
+        (b"jklmnopqrstuvwxyzabcd", 10),
+    ]
+    .into_iter()
+    .collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), None);
+    assert_eq!(trie.get(b"abc"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    #[rustfmt::skip]
+    let expected_bytes = &[
+        0b11001010, // branch
+        // search array:
+        b'a', b'b', b'c', b'd', b'e', b'f', b'g', b'h', b'i', b'j',
+        // offset array:
+        26, 52, 78, 104, 130, 156, 182, 208, 234,
+        // offset data:
+        b'b', b'c', b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n',
+        b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z',
+        0x81,
+        b'c', b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o',
+        b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a',
+        0x82,
+        b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p',
+        b'q', b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b',
+        0x83,
+        b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q',
+        b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c',
+        0x84,
+        b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r',
+        b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd',
+        0x85,
+        b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's',
+        b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e',
+        0x86,
+        b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't',
+        b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e', b'f',
+        0x87,
+        b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't', b'u',
+        b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e', b'f', b'g',
+        0x88,
+        b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v',
+        b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e', b'f', b'g', b'h',
+        0x89,
+        b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w',
+        b'x', b'y', b'z', b'a', b'b', b'c', b'd',
+        0x8A,
+    ];
+    assert_bytes_eq!(275, trie.as_bytes(), expected_bytes);
+}
+
+#[test]
+fn test_at_wide() {
+    let litemap: LiteMap<&[u8], usize> = [
+        (&b"abcdefghijklmnopqrstuvwxyz"[..], 1),
+        (b"bcdefghijklmnopqrstuvwxyza", 2),
+        (b"cdefghijklmnopqrstuvwxyzab", 3),
+        (b"defghijklmnopqrstuvwxyzabc", 4),
+        (b"efghijklmnopqrstuvwxyzabcd", 5),
+        (b"fghijklmnopqrstuvwxyzabcde", 6),
+        (b"ghijklmnopqrstuvwxyzabcdef", 7),
+        (b"hijklmnopqrstuvwxyzabcdefg", 8),
+        (b"ijklmnopqrstuvwxyzabcdefgh", 9),
+        (b"jklmnopqrstuvwxyzabcde", 10),
+    ]
+    .into_iter()
+    .collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), None);
+    assert_eq!(trie.get(b"abc"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    #[rustfmt::skip]
+    let expected_bytes = &[
+        0b11100001, // branch lead
+        0x6A, // branch trail
+        // search array:
+        b'a', b'b', b'c', b'd', b'e', b'f', b'g', b'h', b'i', b'j',
+        // offset array (wide):
+        0, 0, 0, 0, 0, 0, 0, 0, 0,
+        26, 52, 78, 104, 130, 156, 182, 208, 234,
+        // offset data:
+        b'b', b'c', b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n',
+        b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z',
+        0x81,
+        b'c', b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o',
+        b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a',
+        0x82,
+        b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p',
+        b'q', b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b',
+        0x83,
+        b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q',
+        b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c',
+        0x84,
+        b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r',
+        b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd',
+        0x85,
+        b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's',
+        b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e',
+        0x86,
+        b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't',
+        b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e', b'f',
+        0x87,
+        b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't', b'u',
+        b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e', b'f', b'g',
+        0x88,
+        b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v',
+        b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e', b'f', b'g', b'h',
+        0x89,
+        b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w',
+        b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e',
+        0x8A,
+    ];
+    assert_bytes_eq!(286, trie.as_bytes(), expected_bytes);
+}
+
+#[test]
+fn test_at_wide_plus() {
+    let litemap: LiteMap<&[u8], usize> = [
+        (&b"abcdefghijklmnopqrstuvwxyz"[..], 1),
+        (b"bcdefghijklmnopqrstuvwxyza", 2),
+        (b"cdefghijklmnopqrstuvwxyzab", 3),
+        (b"defghijklmnopqrstuvwxyzabc", 4),
+        (b"efghijklmnopqrstuvwxyzabcd", 5),
+        (b"fghijklmnopqrstuvwxyzabcde", 6),
+        (b"ghijklmnopqrstuvwxyzabcdef", 7),
+        (b"hijklmnopqrstuvwxyzabcdefg", 8),
+        (b"ijklmnopqrstuvwxyzabcdefgh", 9),
+        (b"jklmnopqrstuvwxyzabcdef", 10),
+    ]
+    .into_iter()
+    .collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), None);
+    assert_eq!(trie.get(b"abc"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    #[rustfmt::skip]
+    let expected_bytes = &[
+        0b11100001, // branch lead
+        0x6A, // branch trail
+        // search array:
+        b'a', b'b', b'c', b'd', b'e', b'f', b'g', b'h', b'i', b'j',
+        // offset array (wide):
+        0, 0, 0, 0, 0, 0, 0, 0, 0,
+        26, 52, 78, 104, 130, 156, 182, 208, 234,
+        // offset data:
+        b'b', b'c', b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n',
+        b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z',
+        0x81,
+        b'c', b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o',
+        b'p', b'q', b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a',
+        0x82,
+        b'd', b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p',
+        b'q', b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b',
+        0x83,
+        b'e', b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q',
+        b'r', b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c',
+        0x84,
+        b'f', b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r',
+        b's', b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd',
+        0x85,
+        b'g', b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's',
+        b't', b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e',
+        0x86,
+        b'h', b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't',
+        b'u', b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e', b'f',
+        0x87,
+        b'i', b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't', b'u',
+        b'v', b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e', b'f', b'g',
+        0x88,
+        b'j', b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v',
+        b'w', b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e', b'f', b'g', b'h',
+        0x89,
+        b'k', b'l', b'm', b'n', b'o', b'p', b'q', b'r', b's', b't', b'u', b'v', b'w',
+        b'x', b'y', b'z', b'a', b'b', b'c', b'd', b'e', b'f',
+        0x8A,
+    ];
+    assert_bytes_eq!(287, trie.as_bytes(), expected_bytes);
+}
+
+#[test]
+fn test_everything() {
+    let litemap: LiteMap<&[u8], usize> = [
+        (&b""[..], 0),
+        (b"axb", 100),
+        (b"ayc", 2),
+        (b"azd", 3),
+        (b"bxe", 4),
+        (b"bxefg", 500),
+        (b"bxefh", 6),
+        (b"bxei", 7),
+        (b"bxeikl", 8),
+    ]
+    .into_iter()
+    .collect();
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap.as_sliced()).unwrap();
+    assert_eq!(trie.get(b""), Some(0));
+    assert_eq!(trie.get(b"a"), None);
+    assert_eq!(trie.get(b"ax"), None);
+    assert_eq!(trie.get(b"ay"), None);
+    check_simple_ascii_trie(&litemap, &trie);
+    let expected_bytes = &[
+        0b10000000, // value 0
+        0b11000010, // branch of 2
+        b'a',       //
+        b'b',       //
+        13,         //
+        0b11000011, // branch of 3
+        b'x',       //
+        b'y',       //
+        b'z',       //
+        3,          //
+        5,          //
+        b'b',       //
+        0b10010000, // value 100 (lead)
+        0x54,       // value 100 (trail)
+        b'c',       //
+        0b10000010, // value 2
+        b'd',       //
+        0b10000011, // value 3
+        b'x',       //
+        b'e',       //
+        0b10000100, // value 4
+        0b11000010, // branch of 2
+        b'f',       //
+        b'i',       //
+        7,          //
+        0b11000010, // branch of 2
+        b'g',       //
+        b'h',       //
+        2,          //
+        0b10010011, // value 500 (lead)
+        0x64,       // value 500 (trail)
+        0b10000110, // value 6
+        0b10000111, // value 7
+        b'k',       //
+        b'l',       //
+        0b10001000, // value 8
+    ];
+    assert_bytes_eq!(36, trie.as_bytes(), expected_bytes);
+
+    #[rustfmt::skip]
+    let expected_bytes = &[
+        0b10000000, // value 0
+        0b11000010, // branch of 2
+        b'a',       //
+        b'b',       //
+        13,         //
+        0b11000011, // start of 'a' subtree: branch of 3
+        b'x',       //
+        b'y',       //
+        b'z',       //
+        3,          //
+        5,          //
+        b'b',       //
+        0b10010000, // value 100 (lead)
+        0x54,       // value 100 (trail)
+        b'c',       //
+        0b10000010, // value 2
+        b'd',       //
+        0b10000011, // value 3
+        b'x',       // start of 'b' subtree
+        b'e',       //
+        0b10000100, // value 4
+        0b11000010, // branch of 2
+        b'f',       //
+        b'i',       //
+        7,          //
+        0b11000010, // branch of 2
+        b'g',       //
+        b'h',       //
+        2,          //
+        0b10010011, // value 500 (lead)
+        0x64,       // value 500 (trail)
+        0b10000110, // value 6
+        0b10000111, // value 7
+        b'k',       //
+        b'l',       //
+        0b10001000, // value 8
+    ];
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_bytes_eq!(36, trie_phf.as_bytes(), expected_bytes);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+
+    let zhm: zerovec::ZeroMap<[u8], u32> = litemap.iter().map(|(a, b)| (*a, *b as u32)).collect();
+    let zhm_buf = postcard::to_allocvec(&zhm).unwrap();
+    assert_eq!(zhm_buf.len(), 88);
+
+    let zhm: zerovec::ZeroMap<[u8], u8> = litemap.iter().map(|(a, b)| (*a, *b as u8)).collect();
+    let zhm_buf = postcard::to_allocvec(&zhm).unwrap();
+    assert_eq!(zhm_buf.len(), 61);
+
+    let zhm: zerovec::ZeroHashMap<[u8], u32> =
+        litemap.iter().map(|(a, b)| (*a, *b as u32)).collect();
+    let zhm_buf = postcard::to_allocvec(&zhm).unwrap();
+    assert_eq!(zhm_buf.len(), 161);
+
+    let zhm: zerovec::ZeroHashMap<[u8], u8> = litemap.iter().map(|(a, b)| (*a, *b as u8)).collect();
+    let zhm_buf = postcard::to_allocvec(&zhm).unwrap();
+    assert_eq!(zhm_buf.len(), 134);
+}
+
+macro_rules! utf8_byte {
+    ($ch:expr, $i:literal) => {{
+        let mut utf8_encoder_buf = [0u8; 4];
+        $ch.encode_utf8(&mut utf8_encoder_buf);
+        utf8_encoder_buf[$i]
+    }};
+}
+
+#[test]
+fn test_non_ascii() {
+    let litemap: LiteMap<&[u8], usize> = [
+        ("".as_bytes(), 0),
+        ("axb".as_bytes(), 100),
+        ("ayc".as_bytes(), 2),
+        ("azd".as_bytes(), 3),
+        ("bxe".as_bytes(), 4),
+        ("bxefg".as_bytes(), 500),
+        ("bxefh".as_bytes(), 6),
+        ("bxei".as_bytes(), 7),
+        ("bxeikl".as_bytes(), 8),
+        ("bxeiklmΚαλημέρααα".as_bytes(), 9),
+        ("bxeiklmαnλo".as_bytes(), 10),
+        ("bxeiklmη".as_bytes(), 11),
+    ]
+    .into_iter()
+    .collect();
+
+    #[rustfmt::skip]
+    let expected_bytes = &[
+        0b10000000, // value 0
+        0b11000010, // branch of 2
+        b'a',       //
+        b'b',       //
+        13,         //
+        0b11000011, // start of 'a' subtree: branch of 3
+        b'x',       //
+        b'y',       //
+        b'z',       //
+        3,          //
+        5,          //
+        b'b',       //
+        0b10010000, // value 100 (lead)
+        0x54,       // value 100 (trail)
+        b'c',       //
+        0b10000010, // value 2
+        b'd',       //
+        0b10000011, // value 3
+        b'x',       // start of 'b' subtree
+        b'e',       //
+        0b10000100, // value 4
+        0b11000010, // branch of 2
+        b'f',       //
+        b'i',       //
+        7,          //
+        0b11000010, // branch of 2
+        b'g',       //
+        b'h',       //
+        2,          //
+        0b10010011, // value 500 (lead)
+        0x64,       // value 500 (trail)
+        0b10000110, // value 6
+        0b10000111, // value 7
+        b'k',       //
+        b'l',       //
+        0b10001000, // value 8
+        b'm',       //
+        0b10100001, // span of length 1
+        utf8_byte!('Κ', 0), // NOTE: all three letters have the same lead byte
+        0b11000011, // branch of 3
+        utf8_byte!('Κ', 1),
+        utf8_byte!('α', 1),
+        utf8_byte!('η', 1),
+        21,
+        27,
+        0b10110000, // span of length 18 (lead)
+        0b00000010, // span of length 18 (trail)
+        utf8_byte!('α', 0),
+        utf8_byte!('α', 1),
+        utf8_byte!('λ', 0),
+        utf8_byte!('λ', 1),
+        utf8_byte!('η', 0),
+        utf8_byte!('η', 1),
+        utf8_byte!('μ', 0),
+        utf8_byte!('μ', 1),
+        utf8_byte!('έ', 0),
+        utf8_byte!('έ', 1),
+        utf8_byte!('ρ', 0),
+        utf8_byte!('ρ', 1),
+        utf8_byte!('α', 0),
+        utf8_byte!('α', 1),
+        utf8_byte!('α', 0),
+        utf8_byte!('α', 1),
+        utf8_byte!('α', 0),
+        utf8_byte!('α', 1),
+        0b10001001, // value 9
+        b'n',
+        0b10100010, // span of length 2
+        utf8_byte!('λ', 0),
+        utf8_byte!('λ', 1),
+        b'o',
+        0b10001010, // value 10
+        0b10001011, // value 11
+    ];
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap).unwrap();
+    assert_bytes_eq!(73, trie_phf.as_bytes(), expected_bytes);
+    check_phf_bytes_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_max_branch() {
+    // Evaluate a branch with all 256 possible children
+    let mut litemap: LiteMap<&[u8], usize> = LiteMap::new_vec();
+    let all_bytes: Vec<u8> = (u8::MIN..=u8::MAX).collect();
+    assert_eq!(all_bytes.len(), 256);
+    let all_bytes_prefixed: Vec<[u8; 2]> = (u8::MIN..=u8::MAX).map(|x| [b'\0', x]).collect();
+    for b in all_bytes.iter() {
+        litemap.insert(core::slice::from_ref(b), *b as usize);
+    }
+    for s in all_bytes_prefixed.iter() {
+        litemap.insert(s, s[1] as usize);
+    }
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap).unwrap();
+    assert_eq!(trie_phf.byte_len(), 3042);
+    check_phf_bytes_trie(&litemap, &trie_phf);
+}
+
+#[test]
+fn test_short_subtags_10pct() {
+    let litemap = strings_to_litemap(testdata::short_subtags_10pct::STRINGS);
+
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap).unwrap();
+    assert_eq!(trie.byte_len(), 1050);
+    check_simple_ascii_trie(&litemap, &trie);
+
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_eq!(trie_phf.byte_len(), 1100);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+
+    let zhm: zerovec::ZeroMap<[u8], u32> = litemap.iter().map(|(a, b)| (*a, *b as u32)).collect();
+    let zhm_buf = postcard::to_allocvec(&zhm).unwrap();
+    assert_eq!(zhm_buf.len(), 1890);
+
+    let zhm: zerovec::ZeroMap<[u8], u8> = litemap.iter().map(|(a, b)| (*a, *b as u8)).collect();
+    let zhm_buf = postcard::to_allocvec(&zhm).unwrap();
+    assert_eq!(zhm_buf.len(), 1326);
+
+    let zhm: zerovec::ZeroHashMap<[u8], u32> =
+        litemap.iter().map(|(a, b)| (*a, *b as u32)).collect();
+    let zhm_buf = postcard::to_allocvec(&zhm).unwrap();
+    assert_eq!(zhm_buf.len(), 3396);
+
+    let zhm: zerovec::ZeroHashMap<[u8], u8> = litemap.iter().map(|(a, b)| (*a, *b as u8)).collect();
+    let zhm_buf = postcard::to_allocvec(&zhm).unwrap();
+    assert_eq!(zhm_buf.len(), 2832);
+}
+
+#[test]
+fn test_short_subtags() {
+    let litemap = strings_to_litemap(testdata::short_subtags::STRINGS);
+
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap).unwrap();
+    assert_eq!(trie.byte_len(), 8793);
+    check_simple_ascii_trie(&litemap, &trie);
+
+    let litemap_bytes = litemap.to_borrowed_keys::<[u8], Vec<_>>();
+    let trie_phf = ZeroTriePerfectHash::try_from(&litemap_bytes).unwrap();
+    assert_eq!(trie_phf.byte_len(), 9400);
+    check_phf_ascii_trie(&litemap, &trie_phf);
+
+    let zm: zerovec::ZeroMap<[u8], u32> = litemap.iter().map(|(a, b)| (*a, *b as u32)).collect();
+    let zhm_buf = postcard::to_allocvec(&zm).unwrap();
+    assert_eq!(zhm_buf.len(), 18931);
+
+    let zm: zerovec::ZeroMap<[u8], u8> = litemap.iter().map(|(a, b)| (*a, *b as u8)).collect();
+    let zhm_buf = postcard::to_allocvec(&zm).unwrap();
+    assert_eq!(zhm_buf.len(), 13300);
+
+    let zhm: zerovec::ZeroHashMap<[u8], u32> =
+        litemap.iter().map(|(a, b)| (*a, *b as u32)).collect();
+    let zhm_buf = postcard::to_allocvec(&zhm).unwrap();
+    assert_eq!(zhm_buf.len(), 33949);
+
+    let zhm: zerovec::ZeroHashMap<[u8], u8> = litemap.iter().map(|(a, b)| (*a, *b as u8)).collect();
+    let zhm_buf = postcard::to_allocvec(&zhm).unwrap();
+    assert_eq!(zhm_buf.len(), 28318);
+}
diff --git a/vendor/zerotrie/tests/data/data.rs b/vendor/zerotrie/tests/data/data.rs
new file mode 100644
index 00000000..6dd483b7
--- /dev/null
+++ b/vendor/zerotrie/tests/data/data.rs
@@ -0,0 +1,2210 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use litemap::LiteMap;
+
+const fn single_byte_intermediate_value(x: u8) -> u8 {
+    debug_assert!(x <= 0b00001111);
+    x | 0b10000000
+}
+
+use single_byte_intermediate_value as single_byte_short_value;
+
+const fn single_byte_branch_equal(x: u8) -> u8 {
+    debug_assert!(x <= 0b00001111);
+    x | 0b11000000
+}
+
+use single_byte_branch_equal as single_byte_short_match;
+
+#[allow(dead_code)]
+pub fn strings_to_litemap<'a>(strings: &[&'a str]) -> LiteMap<&'a [u8], usize> {
+    strings
+        .iter()
+        .copied()
+        .map(|x| x.as_bytes())
+        .enumerate()
+        .map(|(i, s)| (s, i))
+        .collect()
+}
+
+#[allow(dead_code)]
+pub mod basic {
+    use super::*;
+    pub static TRIE_ASCII: &[u8] = &[
+        b'a',
+        b'b',
+        single_byte_short_value(1),
+        b'c',
+        single_byte_short_value(2),
+        // Begin Match Node
+        single_byte_short_match(3),
+        b'd',
+        b'e',
+        b'f',
+        5,
+        8,
+        // End Match Node
+        // subslice @ 0
+        single_byte_short_value(3),
+        b'g',
+        b'h',
+        b'i',
+        single_byte_short_value(4),
+        // subslice @ 5
+        b'j',
+        b'k',
+        single_byte_short_value(5),
+        // subslice @ 8
+        // Begin Match Node
+        single_byte_short_match(2),
+        b'l',
+        b'm',
+        1,
+        // End Match Node
+        // subsubslice @ 0
+        single_byte_short_value(6),
+        // subsubslice @ 1
+        b'n',
+        single_byte_short_value(7),
+    ];
+    pub static DATA_ASCII: &[(&[u8], usize)] = &[
+        (b"ab", 1),
+        (b"abc", 2),
+        (b"abcd", 3),
+        (b"abcdghi", 4),
+        (b"abcejk", 5),
+        (b"abcfl", 6),
+        (b"abcfmn", 7),
+    ];
+
+    pub static TRIE_UNICODE: &[u8] = &[
+        196, 100, 102, 103, 107, 12, 17, 23, 195, 97, 101, 105, 2, 4, 115, 129, 114, 130, 101, 131,
+        162, 195, 188, 114, 132, 114, 111, 162, 195, 159, 133, 162, 195, 182, 110, 110, 101, 110,
+        134,
+    ];
+    pub static DATA_UNICODE: &[(&[u8], usize)] = &[
+        ("das".as_bytes(), 1),
+        ("der".as_bytes(), 2),
+        ("die".as_bytes(), 3),
+        ("für".as_bytes(), 4),
+        ("groß".as_bytes(), 5),
+        ("können".as_bytes(), 6),
+    ];
+
+    pub static TRIE_BINARY: &[u8] = &[
+        196, 0, 129, 144, 240, 3, 9, 12, 161, 144, 131, 194, 130, 131, 1, 129, 130, 161, 144, 132,
+        161, 255, 133, 161, 255, 134,
+    ];
+    pub static DATA_BINARY: &[(&[u8], usize)] = &[
+        (b"\0\x90", 3),
+        (b"\x81\x82", 1),
+        (b"\x81\x83", 2),
+        (b"\x90\x90", 4),
+        (b"\xF0\xFF", 5),
+        (b"\xF0\xFF\xFF", 6),
+    ];
+
+    // Note: Cow and ZeroVec have the same serialized form
+    pub static JSON_STR_ASCII: &str = "{\"trie\":{\"ab\":1,\"abc\":2,\"abcd\":3,\"abcdghi\":4,\"abcejk\":5,\"abcfl\":6,\"abcfmn\":7}}";
+    pub static JSON_STR_UNICODE: &str =
+        "{\"trie\":{\"das\":1,\"der\":2,\"die\":3,\"für\":4,\"groß\":5,\"können\":6}}";
+    pub static JSON_STR_BINARY: &str = "{\"trie\":[[[0,144],3],[[129,130],1],[[129,131],2],[[144,144],4],[[240,255],5],[[240,255,255],6]]}";
+    pub static BINCODE_BYTES_ASCII: &[u8] = &[
+        97, 98, 129, 99, 130, 195, 100, 101, 102, 5, 8, 131, 103, 104,
+        105, 132, 106, 107, 133, 194, 108, 109, 1, 134, 110, 135,
+    ];
+    pub static BINCODE_BYTES_UNICODE: &[u8] = &[
+        196, 100, 102, 103, 107, 12, 17, 23, 195, 97, 101, 105, 2, 4, 115,
+        129, 114, 130, 101, 131, 162, 195, 188, 114, 132, 114, 111, 162, 195, 159, 133, 162, 195,
+        182, 110, 110, 101, 110, 134,
+    ];
+    pub static BINCODE_BYTES_BINARY: &[u8] = &[
+        196, 0, 129, 144, 240, 3, 9, 12, 161, 144, 131, 194, 130, 131, 1,
+        129, 130, 161, 144, 132, 161, 255, 133, 161, 255, 134,
+    ];
+}
+
+#[allow(dead_code)]
+pub mod short_subtags {
+    pub static STRINGS: &[&str] = &[
+        "aa",
+        "aai",
+        "aak",
+        "aau",
+        "ab",
+        "abi",
+        "abq",
+        "abr",
+        "abt",
+        "aby",
+        "acd",
+        "ace",
+        "ach",
+        "ada",
+        "ade",
+        "adj",
+        "adp",
+        "ady",
+        "adz",
+        "ae",
+        "aeb",
+        "aey",
+        "af",
+        "agc",
+        "agd",
+        "agg",
+        "agm",
+        "ago",
+        "agq",
+        "aha",
+        "ahl",
+        "aho",
+        "ajg",
+        "ak",
+        "akk",
+        "ala",
+        "ali",
+        "aln",
+        "alt",
+        "am",
+        "amm",
+        "amn",
+        "amo",
+        "amp",
+        "an",
+        "anc",
+        "ank",
+        "ann",
+        "any",
+        "aoj",
+        "aom",
+        "aoz",
+        "apc",
+        "apd",
+        "ape",
+        "apr",
+        "aps",
+        "apz",
+        "ar",
+        "arc",
+        "arc-Nbat",
+        "arc-Palm",
+        "arh",
+        "arn",
+        "aro",
+        "arq",
+        "ars",
+        "ary",
+        "arz",
+        "as",
+        "asa",
+        "ase",
+        "asg",
+        "aso",
+        "ast",
+        "ata",
+        "atg",
+        "atj",
+        "auy",
+        "av",
+        "avl",
+        "avn",
+        "avt",
+        "avu",
+        "awa",
+        "awb",
+        "awo",
+        "awx",
+        "ay",
+        "ayb",
+        "az",
+        "az-Arab",
+        "az-IQ",
+        "az-IR",
+        "az-RU",
+        "ba",
+        "bal",
+        "ban",
+        "bap",
+        "bar",
+        "bas",
+        "bav",
+        "bax",
+        "bba",
+        "bbb",
+        "bbc",
+        "bbd",
+        "bbj",
+        "bbp",
+        "bbr",
+        "bcf",
+        "bch",
+        "bci",
+        "bcm",
+        "bcn",
+        "bco",
+        "bcq",
+        "bcu",
+        "bdd",
+        "be",
+        "bef",
+        "beh",
+        "bej",
+        "bem",
+        "bet",
+        "bew",
+        "bex",
+        "bez",
+        "bfd",
+        "bfq",
+        "bft",
+        "bfy",
+        "bg",
+        "bgc",
+        "bgn",
+        "bgx",
+        "bhb",
+        "bhg",
+        "bhi",
+        "bhl",
+        "bho",
+        "bhy",
+        "bi",
+        "bib",
+        "big",
+        "bik",
+        "bim",
+        "bin",
+        "bio",
+        "biq",
+        "bjh",
+        "bji",
+        "bjj",
+        "bjn",
+        "bjo",
+        "bjr",
+        "bjt",
+        "bjz",
+        "bkc",
+        "bkm",
+        "bkq",
+        "bku",
+        "bkv",
+        "bla",
+        "blg",
+        "blt",
+        "bm",
+        "bmh",
+        "bmk",
+        "bmq",
+        "bmu",
+        "bn",
+        "bng",
+        "bnm",
+        "bnp",
+        "bo",
+        "boj",
+        "bom",
+        "bon",
+        "bpy",
+        "bqc",
+        "bqi",
+        "bqp",
+        "bqv",
+        "br",
+        "bra",
+        "brh",
+        "brx",
+        "brz",
+        "bs",
+        "bsj",
+        "bsq",
+        "bss",
+        "bst",
+        "bto",
+        "btt",
+        "btv",
+        "bua",
+        "buc",
+        "bud",
+        "bug",
+        "buk",
+        "bum",
+        "buo",
+        "bus",
+        "buu",
+        "bvb",
+        "bwd",
+        "bwr",
+        "bxh",
+        "bye",
+        "byn",
+        "byr",
+        "bys",
+        "byv",
+        "byx",
+        "bza",
+        "bze",
+        "bzf",
+        "bzh",
+        "bzw",
+        "ca",
+        "cad",
+        "can",
+        "cbj",
+        "cch",
+        "ccp",
+        "ce",
+        "ceb",
+        "cfa",
+        "cgg",
+        "ch",
+        "chk",
+        "chm",
+        "cho",
+        "chp",
+        "chr",
+        "cic",
+        "cja",
+        "cjm",
+        "cjv",
+        "ckb",
+        "ckl",
+        "cko",
+        "cky",
+        "cla",
+        "clc",
+        "cme",
+        "cmg",
+        "co",
+        "cop",
+        "cps",
+        "cr",
+        "crg",
+        "crh",
+        "crk",
+        "crl",
+        "crs",
+        "cs",
+        "csb",
+        "csw",
+        "ctd",
+        "cu",
+        "cu-Glag",
+        "cv",
+        "cy",
+        "da",
+        "dad",
+        "daf",
+        "dag",
+        "dah",
+        "dak",
+        "dar",
+        "dav",
+        "dbd",
+        "dbq",
+        "dcc",
+        "ddn",
+        "de",
+        "ded",
+        "den",
+        "dga",
+        "dgh",
+        "dgi",
+        "dgl",
+        "dgr",
+        "dgz",
+        "dia",
+        "dje",
+        "dmf",
+        "dnj",
+        "dob",
+        "doi",
+        "dop",
+        "dow",
+        "drh",
+        "dri",
+        "drs",
+        "dsb",
+        "dtm",
+        "dtp",
+        "dts",
+        "dty",
+        "dua",
+        "duc",
+        "dud",
+        "dug",
+        "dv",
+        "dva",
+        "dww",
+        "dyo",
+        "dyu",
+        "dz",
+        "dzg",
+        "ebu",
+        "ee",
+        "efi",
+        "egl",
+        "egy",
+        "eka",
+        "eky",
+        "el",
+        "ema",
+        "emi",
+        "en",
+        "en-Shaw",
+        "enn",
+        "enq",
+        "eo",
+        "eri",
+        "es",
+        "esg",
+        "esu",
+        "et",
+        "etr",
+        "ett",
+        "etu",
+        "etx",
+        "eu",
+        "ewo",
+        "ext",
+        "eza",
+        "fa",
+        "faa",
+        "fab",
+        "fag",
+        "fai",
+        "fan",
+        "ff",
+        "ff-Adlm",
+        "ffi",
+        "ffm",
+        "fi",
+        "fia",
+        "fil",
+        "fit",
+        "fj",
+        "flr",
+        "fmp",
+        "fo",
+        "fod",
+        "fon",
+        "for",
+        "fpe",
+        "fqs",
+        "fr",
+        "frc",
+        "frp",
+        "frr",
+        "frs",
+        "fub",
+        "fud",
+        "fue",
+        "fuf",
+        "fuh",
+        "fuq",
+        "fur",
+        "fuv",
+        "fuy",
+        "fvr",
+        "fy",
+        "ga",
+        "gaa",
+        "gaf",
+        "gag",
+        "gah",
+        "gaj",
+        "gam",
+        "gan",
+        "gaw",
+        "gay",
+        "gba",
+        "gbf",
+        "gbm",
+        "gby",
+        "gbz",
+        "gcr",
+        "gd",
+        "gde",
+        "gdn",
+        "gdr",
+        "geb",
+        "gej",
+        "gel",
+        "gez",
+        "gfk",
+        "ggn",
+        "ghs",
+        "gil",
+        "gim",
+        "gjk",
+        "gjn",
+        "gju",
+        "gkn",
+        "gkp",
+        "gl",
+        "glk",
+        "gmm",
+        "gmv",
+        "gn",
+        "gnd",
+        "gng",
+        "god",
+        "gof",
+        "goi",
+        "gom",
+        "gon",
+        "gor",
+        "gos",
+        "got",
+        "grb",
+        "grc",
+        "grc-Linb",
+        "grt",
+        "grw",
+        "gsw",
+        "gu",
+        "gub",
+        "guc",
+        "gud",
+        "gur",
+        "guw",
+        "gux",
+        "guz",
+        "gv",
+        "gvf",
+        "gvr",
+        "gvs",
+        "gwc",
+        "gwi",
+        "gwt",
+        "gyi",
+        "ha",
+        "ha-CM",
+        "ha-SD",
+        "hag",
+        "hak",
+        "ham",
+        "haw",
+        "haz",
+        "hbb",
+        "hdy",
+        "he",
+        "hhy",
+        "hi",
+        "hi-Latn",
+        "hia",
+        "hif",
+        "hig",
+        "hih",
+        "hil",
+        "hla",
+        "hlu",
+        "hmd",
+        "hmt",
+        "hnd",
+        "hne",
+        "hnj",
+        "hnn",
+        "hno",
+        "ho",
+        "hoc",
+        "hoj",
+        "hot",
+        "hr",
+        "hsb",
+        "hsn",
+        "ht",
+        "hu",
+        "hui",
+        "hur",
+        "hy",
+        "hz",
+        "ia",
+        "ian",
+        "iar",
+        "iba",
+        "ibb",
+        "iby",
+        "ica",
+        "ich",
+        "id",
+        "idd",
+        "idi",
+        "idu",
+        "ife",
+        "ig",
+        "igb",
+        "ige",
+        "ii",
+        "ijj",
+        "ik",
+        "ikk",
+        "ikw",
+        "ikx",
+        "ilo",
+        "imo",
+        "in",
+        "inh",
+        "io",
+        "iou",
+        "iri",
+        "is",
+        "it",
+        "iu",
+        "iw",
+        "iwm",
+        "iws",
+        "izh",
+        "izi",
+        "ja",
+        "jab",
+        "jam",
+        "jar",
+        "jbo",
+        "jbu",
+        "jen",
+        "jgk",
+        "jgo",
+        "ji",
+        "jib",
+        "jmc",
+        "jml",
+        "jra",
+        "jut",
+        "jv",
+        "jw",
+        "ka",
+        "kaa",
+        "kab",
+        "kac",
+        "kad",
+        "kai",
+        "kaj",
+        "kam",
+        "kao",
+        "kaw",
+        "kbd",
+        "kbm",
+        "kbp",
+        "kbq",
+        "kbx",
+        "kby",
+        "kcg",
+        "kck",
+        "kcl",
+        "kct",
+        "kde",
+        "kdh",
+        "kdl",
+        "kdt",
+        "kea",
+        "ken",
+        "kez",
+        "kfo",
+        "kfr",
+        "kfy",
+        "kg",
+        "kge",
+        "kgf",
+        "kgp",
+        "kha",
+        "khb",
+        "khn",
+        "khq",
+        "khs",
+        "kht",
+        "khw",
+        "khz",
+        "ki",
+        "kij",
+        "kiu",
+        "kiw",
+        "kj",
+        "kjd",
+        "kjg",
+        "kjs",
+        "kjy",
+        "kk",
+        "kk-AF",
+        "kk-Arab",
+        "kk-CN",
+        "kk-IR",
+        "kk-MN",
+        "kkc",
+        "kkj",
+        "kl",
+        "kln",
+        "klq",
+        "klt",
+        "klx",
+        "km",
+        "kmb",
+        "kmh",
+        "kmo",
+        "kms",
+        "kmu",
+        "kmw",
+        "kn",
+        "knf",
+        "knp",
+        "ko",
+        "koi",
+        "kok",
+        "kol",
+        "kos",
+        "koz",
+        "kpe",
+        "kpf",
+        "kpo",
+        "kpr",
+        "kpx",
+        "kqb",
+        "kqf",
+        "kqs",
+        "kqy",
+        "kr",
+        "krc",
+        "kri",
+        "krj",
+        "krl",
+        "krs",
+        "kru",
+        "ks",
+        "ksb",
+        "ksd",
+        "ksf",
+        "ksh",
+        "ksj",
+        "ksr",
+        "ktb",
+        "ktm",
+        "kto",
+        "ktr",
+        "ku",
+        "ku-Arab",
+        "ku-LB",
+        "ku-Yezi",
+        "kub",
+        "kud",
+        "kue",
+        "kuj",
+        "kum",
+        "kun",
+        "kup",
+        "kus",
+        "kv",
+        "kvg",
+        "kvr",
+        "kvx",
+        "kw",
+        "kwj",
+        "kwk",
+        "kwo",
+        "kwq",
+        "kxa",
+        "kxc",
+        "kxe",
+        "kxl",
+        "kxm",
+        "kxp",
+        "kxw",
+        "kxz",
+        "ky",
+        "ky-Arab",
+        "ky-CN",
+        "ky-Latn",
+        "ky-TR",
+        "kye",
+        "kyx",
+        "kzh",
+        "kzj",
+        "kzr",
+        "kzt",
+        "la",
+        "lab",
+        "lad",
+        "lag",
+        "lah",
+        "laj",
+        "las",
+        "lb",
+        "lbe",
+        "lbu",
+        "lbw",
+        "lcm",
+        "lcp",
+        "ldb",
+        "led",
+        "lee",
+        "lem",
+        "lep",
+        "leq",
+        "leu",
+        "lez",
+        "lg",
+        "lgg",
+        "li",
+        "lia",
+        "lid",
+        "lif",
+        "lif-Limb",
+        "lig",
+        "lih",
+        "lij",
+        "lil",
+        "lis",
+        "ljp",
+        "lki",
+        "lkt",
+        "lle",
+        "lln",
+        "lmn",
+        "lmo",
+        "lmp",
+        "ln",
+        "lns",
+        "lnu",
+        "lo",
+        "loj",
+        "lok",
+        "lol",
+        "lor",
+        "los",
+        "loz",
+        "lrc",
+        "lt",
+        "ltg",
+        "lu",
+        "lua",
+        "luo",
+        "luy",
+        "luz",
+        "lv",
+        "lwl",
+        "lzh",
+        "lzz",
+        "mad",
+        "maf",
+        "mag",
+        "mai",
+        "mak",
+        "man",
+        "man-GN",
+        "man-Nkoo",
+        "mas",
+        "maw",
+        "maz",
+        "mbh",
+        "mbo",
+        "mbq",
+        "mbu",
+        "mbw",
+        "mci",
+        "mcp",
+        "mcq",
+        "mcr",
+        "mcu",
+        "mda",
+        "mde",
+        "mdf",
+        "mdh",
+        "mdj",
+        "mdr",
+        "mdx",
+        "med",
+        "mee",
+        "mek",
+        "men",
+        "mer",
+        "met",
+        "meu",
+        "mfa",
+        "mfe",
+        "mfn",
+        "mfo",
+        "mfq",
+        "mg",
+        "mgh",
+        "mgl",
+        "mgo",
+        "mgp",
+        "mgy",
+        "mh",
+        "mhi",
+        "mhl",
+        "mi",
+        "mic",
+        "mif",
+        "min",
+        "miw",
+        "mk",
+        "mki",
+        "mkl",
+        "mkp",
+        "mkw",
+        "ml",
+        "mle",
+        "mlp",
+        "mls",
+        "mmo",
+        "mmu",
+        "mmx",
+        "mn",
+        "mn-CN",
+        "mn-Mong",
+        "mna",
+        "mnf",
+        "mni",
+        "mnw",
+        "mo",
+        "moa",
+        "moe",
+        "moh",
+        "mos",
+        "mox",
+        "mpp",
+        "mps",
+        "mpt",
+        "mpx",
+        "mql",
+        "mr",
+        "mrd",
+        "mrj",
+        "mro",
+        "ms",
+        "ms-CC",
+        "mt",
+        "mtc",
+        "mtf",
+        "mti",
+        "mtr",
+        "mua",
+        "mur",
+        "mus",
+        "mva",
+        "mvn",
+        "mvy",
+        "mwk",
+        "mwr",
+        "mwv",
+        "mww",
+        "mxc",
+        "mxm",
+        "my",
+        "myk",
+        "mym",
+        "myv",
+        "myw",
+        "myx",
+        "myz",
+        "mzk",
+        "mzm",
+        "mzn",
+        "mzp",
+        "mzw",
+        "mzz",
+        "na",
+        "nac",
+        "naf",
+        "nak",
+        "nan",
+        "nap",
+        "naq",
+        "nas",
+        "nb",
+        "nca",
+        "nce",
+        "ncf",
+        "nch",
+        "nco",
+        "ncu",
+        "nd",
+        "ndc",
+        "nds",
+        "ne",
+        "neb",
+        "new",
+        "nex",
+        "nfr",
+        "ng",
+        "nga",
+        "ngb",
+        "ngl",
+        "nhb",
+        "nhe",
+        "nhw",
+        "nif",
+        "nii",
+        "nij",
+        "nin",
+        "niu",
+        "niy",
+        "niz",
+        "njo",
+        "nkg",
+        "nko",
+        "nl",
+        "nmg",
+        "nmz",
+        "nn",
+        "nnf",
+        "nnh",
+        "nnk",
+        "nnm",
+        "nnp",
+        "no",
+        "nod",
+        "noe",
+        "non",
+        "nop",
+        "nou",
+        "nqo",
+        "nr",
+        "nrb",
+        "nsk",
+        "nsn",
+        "nso",
+        "nss",
+        "nst",
+        "ntm",
+        "ntr",
+        "nui",
+        "nup",
+        "nus",
+        "nuv",
+        "nux",
+        "nv",
+        "nwb",
+        "nxq",
+        "nxr",
+        "ny",
+        "nym",
+        "nyn",
+        "nzi",
+        "oc",
+        "ogc",
+        "oj",
+        "ojs",
+        "oka",
+        "okr",
+        "okv",
+        "om",
+        "ong",
+        "onn",
+        "ons",
+        "opm",
+        "or",
+        "oro",
+        "oru",
+        "os",
+        "osa",
+        "ota",
+        "otk",
+        "oui",
+        "ozm",
+        "pa",
+        "pa-Arab",
+        "pa-PK",
+        "pag",
+        "pal",
+        "pal-Phlp",
+        "pam",
+        "pap",
+        "pau",
+        "pbi",
+        "pcd",
+        "pcm",
+        "pdc",
+        "pdt",
+        "ped",
+        "peo",
+        "pex",
+        "pfl",
+        "phl",
+        "phn",
+        "pil",
+        "pip",
+        "pka",
+        "pko",
+        "pl",
+        "pla",
+        "pms",
+        "png",
+        "pnn",
+        "pnt",
+        "pon",
+        "ppa",
+        "ppo",
+        "pqm",
+        "pra",
+        "prd",
+        "prg",
+        "ps",
+        "pss",
+        "pt",
+        "ptp",
+        "puu",
+        "pwa",
+        "qu",
+        "quc",
+        "qug",
+        "rai",
+        "raj",
+        "rao",
+        "rcf",
+        "rej",
+        "rel",
+        "res",
+        "rgn",
+        "rhg",
+        "ria",
+        "rif",
+        "rif-NL",
+        "rjs",
+        "rkt",
+        "rm",
+        "rmf",
+        "rmo",
+        "rmt",
+        "rmu",
+        "rn",
+        "rna",
+        "rng",
+        "ro",
+        "rob",
+        "rof",
+        "roo",
+        "rro",
+        "rtm",
+        "ru",
+        "rue",
+        "rug",
+        "rw",
+        "rwk",
+        "rwo",
+        "ryu",
+        "sa",
+        "saf",
+        "sah",
+        "saq",
+        "sas",
+        "sat",
+        "sav",
+        "saz",
+        "sba",
+        "sbe",
+        "sbp",
+        "sc",
+        "sck",
+        "scl",
+        "scn",
+        "sco",
+        "sd",
+        "sd-Deva",
+        "sd-IN",
+        "sd-Khoj",
+        "sd-Sind",
+        "sdc",
+        "sdh",
+        "se",
+        "sef",
+        "seh",
+        "sei",
+        "ses",
+        "sg",
+        "sga",
+        "sgs",
+        "sgw",
+        "sgz",
+        "shi",
+        "shk",
+        "shn",
+        "shu",
+        "si",
+        "sid",
+        "sig",
+        "sil",
+        "sim",
+        "sjr",
+        "sk",
+        "skc",
+        "skr",
+        "sks",
+        "sl",
+        "sld",
+        "sli",
+        "sll",
+        "sly",
+        "sm",
+        "sma",
+        "smj",
+        "smn",
+        "smp",
+        "smq",
+        "sms",
+        "sn",
+        "snc",
+        "snk",
+        "snp",
+        "snx",
+        "sny",
+        "so",
+        "sog",
+        "sok",
+        "soq",
+        "sou",
+        "soy",
+        "spd",
+        "spl",
+        "sps",
+        "sq",
+        "sr",
+        "sr-ME",
+        "sr-RO",
+        "sr-RU",
+        "sr-TR",
+        "srb",
+        "srn",
+        "srr",
+        "srx",
+        "ss",
+        "ssd",
+        "ssg",
+        "ssy",
+        "st",
+        "stk",
+        "stq",
+        "su",
+        "sua",
+        "sue",
+        "suk",
+        "sur",
+        "sus",
+        "sv",
+        "sw",
+        "swb",
+        "swc",
+        "swg",
+        "swp",
+        "swv",
+        "sxn",
+        "sxw",
+        "syl",
+        "syr",
+        "szl",
+        "ta",
+        "taj",
+        "tal",
+        "tan",
+        "taq",
+        "tbc",
+        "tbd",
+        "tbf",
+        "tbg",
+        "tbo",
+        "tbw",
+        "tbz",
+        "tci",
+        "tcy",
+        "tdd",
+        "tdg",
+        "tdh",
+        "tdu",
+        "te",
+        "ted",
+        "tem",
+        "teo",
+        "tet",
+        "tfi",
+        "tg",
+        "tg-Arab",
+        "tg-PK",
+        "tgc",
+        "tgo",
+        "tgu",
+        "th",
+        "thl",
+        "thq",
+        "thr",
+        "ti",
+        "tif",
+        "tig",
+        "tik",
+        "tim",
+        "tio",
+        "tiv",
+        "tk",
+        "tkl",
+        "tkr",
+        "tkt",
+        "tl",
+        "tlf",
+        "tlx",
+        "tly",
+        "tmh",
+        "tmy",
+        "tn",
+        "tnh",
+        "to",
+        "tof",
+        "tog",
+        "toq",
+        "tpi",
+        "tpm",
+        "tpz",
+        "tqo",
+        "tr",
+        "tru",
+        "trv",
+        "trw",
+        "ts",
+        "tsd",
+        "tsf",
+        "tsg",
+        "tsj",
+        "tsw",
+        "tt",
+        "ttd",
+        "tte",
+        "ttj",
+        "ttr",
+        "tts",
+        "ttt",
+        "tuh",
+        "tul",
+        "tum",
+        "tuq",
+        "tvd",
+        "tvl",
+        "tvu",
+        "twh",
+        "twq",
+        "txg",
+        "txo",
+        "ty",
+        "tya",
+        "tyv",
+        "tzm",
+        "ubu",
+        "udi",
+        "udm",
+        "ug",
+        "ug-Cyrl",
+        "ug-KZ",
+        "ug-MN",
+        "uga",
+        "uk",
+        "uli",
+        "umb",
+        "und",
+        "und-002",
+        "und-003",
+        "und-005",
+        "und-009",
+        "und-011",
+        "und-013",
+        "und-014",
+        "und-015",
+        "und-017",
+        "und-018",
+        "und-019",
+        "und-021",
+        "und-029",
+        "und-030",
+        "und-034",
+        "und-035",
+        "und-039",
+        "und-053",
+        "und-054",
+        "und-057",
+        "und-061",
+        "und-142",
+        "und-143",
+        "und-145",
+        "und-150",
+        "und-151",
+        "und-154",
+        "und-155",
+        "und-202",
+        "und-419",
+        "und-AD",
+        "und-Adlm",
+        "und-AE",
+        "und-AF",
+        "und-Aghb",
+        "und-Ahom",
+        "und-AL",
+        "und-AM",
+        "und-AO",
+        "und-AQ",
+        "und-AR",
+        "und-Arab",
+        "und-Arab-CC",
+        "und-Arab-CN",
+        "und-Arab-GB",
+        "und-Arab-ID",
+        "und-Arab-IN",
+        "und-Arab-KH",
+        "und-Arab-MM",
+        "und-Arab-MN",
+        "und-Arab-MU",
+        "und-Arab-NG",
+        "und-Arab-PK",
+        "und-Arab-TG",
+        "und-Arab-TH",
+        "und-Arab-TJ",
+        "und-Arab-TR",
+        "und-Arab-YT",
+        "und-Armi",
+        "und-Armn",
+        "und-AS",
+        "und-AT",
+        "und-Avst",
+        "und-AW",
+        "und-AX",
+        "und-AZ",
+        "und-BA",
+        "und-Bali",
+        "und-Bamu",
+        "und-Bass",
+        "und-Batk",
+        "und-BD",
+        "und-BE",
+        "und-Beng",
+        "und-BF",
+        "und-BG",
+        "und-BH",
+        "und-Bhks",
+        "und-BI",
+        "und-BJ",
+        "und-BL",
+        "und-BN",
+        "und-BO",
+        "und-Bopo",
+        "und-BQ",
+        "und-BR",
+        "und-Brah",
+        "und-Brai",
+        "und-BT",
+        "und-Bugi",
+        "und-Buhd",
+        "und-BV",
+        "und-BY",
+        "und-Cakm",
+        "und-Cans",
+        "und-Cari",
+        "und-CD",
+        "und-CF",
+        "und-CG",
+        "und-CH",
+        "und-Cham",
+        "und-Cher",
+        "und-Chrs",
+        "und-CI",
+        "und-CL",
+        "und-CM",
+        "und-CN",
+        "und-CO",
+        "und-Copt",
+        "und-CP",
+        "und-Cpmn",
+        "und-Cpmn-CY",
+        "und-Cprt",
+        "und-CR",
+        "und-CU",
+        "und-CV",
+        "und-CW",
+        "und-CY",
+        "und-Cyrl",
+        "und-Cyrl-AL",
+        "und-Cyrl-BA",
+        "und-Cyrl-GE",
+        "und-Cyrl-GR",
+        "und-Cyrl-MD",
+        "und-Cyrl-RO",
+        "und-Cyrl-SK",
+        "und-Cyrl-TR",
+        "und-Cyrl-XK",
+        "und-CZ",
+        "und-DE",
+        "und-Deva",
+        "und-Deva-BT",
+        "und-Deva-FJ",
+        "und-Deva-MU",
+        "und-Deva-PK",
+        "und-Diak",
+        "und-DJ",
+        "und-DK",
+        "und-DO",
+        "und-Dogr",
+        "und-Dupl",
+        "und-DZ",
+        "und-EA",
+        "und-EC",
+        "und-EE",
+        "und-EG",
+        "und-Egyp",
+        "und-EH",
+        "und-Elba",
+        "und-Elym",
+        "und-ER",
+        "und-ES",
+        "und-ET",
+        "und-Ethi",
+        "und-EU",
+        "und-EZ",
+        "und-FI",
+        "und-FO",
+        "und-FR",
+        "und-GA",
+        "und-GE",
+        "und-Geor",
+        "und-GF",
+        "und-GH",
+        "und-GL",
+        "und-Glag",
+        "und-GN",
+        "und-Gong",
+        "und-Gonm",
+        "und-Goth",
+        "und-GP",
+        "und-GQ",
+        "und-GR",
+        "und-Gran",
+        "und-Grek",
+        "und-Grek-TR",
+        "und-GS",
+        "und-GT",
+        "und-Gujr",
+        "und-Guru",
+        "und-GW",
+        "und-Hanb",
+        "und-Hang",
+        "und-Hani",
+        "und-Hano",
+        "und-Hans",
+        "und-Hant",
+        "und-Hant-CA",
+        "und-Hebr",
+        "und-Hebr-SE",
+        "und-Hebr-UA",
+        "und-Hebr-US",
+        "und-Hira",
+        "und-HK",
+        "und-Hluw",
+        "und-HM",
+        "und-Hmng",
+        "und-Hmnp",
+        "und-HN",
+        "und-HR",
+        "und-HT",
+        "und-HU",
+        "und-Hung",
+        "und-IC",
+        "und-ID",
+        "und-IL",
+        "und-IN",
+        "und-IQ",
+        "und-IR",
+        "und-IS",
+        "und-IT",
+        "und-Ital",
+        "und-Jamo",
+        "und-Java",
+        "und-JO",
+        "und-JP",
+        "und-Jpan",
+        "und-Kali",
+        "und-Kana",
+        "und-Kawi",
+        "und-KE",
+        "und-KG",
+        "und-KH",
+        "und-Khar",
+        "und-Khmr",
+        "und-Khoj",
+        "und-Kits",
+        "und-KM",
+        "und-Knda",
+        "und-Kore",
+        "und-KP",
+        "und-KR",
+        "und-Kthi",
+        "und-KW",
+        "und-KZ",
+        "und-LA",
+        "und-Lana",
+        "und-Laoo",
+        "und-Latn-AF",
+        "und-Latn-AM",
+        "und-Latn-CN",
+        "und-Latn-CY",
+        "und-Latn-DZ",
+        "und-Latn-ET",
+        "und-Latn-GE",
+        "und-Latn-IR",
+        "und-Latn-KM",
+        "und-Latn-MA",
+        "und-Latn-MK",
+        "und-Latn-MM",
+        "und-Latn-MO",
+        "und-Latn-MR",
+        "und-Latn-RU",
+        "und-Latn-SY",
+        "und-Latn-TN",
+        "und-Latn-TW",
+        "und-Latn-UA",
+        "und-LB",
+        "und-Lepc",
+        "und-LI",
+        "und-Limb",
+        "und-Lina",
+        "und-Linb",
+        "und-Lisu",
+        "und-LK",
+        "und-LS",
+        "und-LT",
+        "und-LU",
+        "und-LV",
+        "und-LY",
+        "und-Lyci",
+        "und-Lydi",
+        "und-MA",
+        "und-Mahj",
+        "und-Maka",
+        "und-Mand",
+        "und-Mani",
+        "und-Marc",
+        "und-MC",
+        "und-MD",
+        "und-ME",
+        "und-Medf",
+        "und-Mend",
+        "und-Merc",
+        "und-Mero",
+        "und-MF",
+        "und-MG",
+        "und-MK",
+        "und-ML",
+        "und-Mlym",
+        "und-MM",
+        "und-MN",
+        "und-MO",
+        "und-Modi",
+        "und-Mong",
+        "und-MQ",
+        "und-MR",
+        "und-Mroo",
+        "und-MT",
+        "und-Mtei",
+        "und-MU",
+        "und-Mult",
+        "und-MV",
+        "und-MX",
+        "und-MY",
+        "und-Mymr",
+        "und-Mymr-IN",
+        "und-Mymr-TH",
+        "und-MZ",
+        "und-NA",
+        "und-Nagm",
+        "und-Nand",
+        "und-Narb",
+        "und-Nbat",
+        "und-NC",
+        "und-NE",
+        "und-Newa",
+        "und-NI",
+        "und-Nkoo",
+        "und-NL",
+        "und-NO",
+        "und-NP",
+        "und-Nshu",
+        "und-Ogam",
+        "und-Olck",
+        "und-OM",
+        "und-Orkh",
+        "und-Orya",
+        "und-Osge",
+        "und-Osma",
+        "und-Ougr",
+        "und-PA",
+        "und-Palm",
+        "und-Pauc",
+        "und-PE",
+        "und-Perm",
+        "und-PF",
+        "und-PG",
+        "und-PH",
+        "und-Phag",
+        "und-Phli",
+        "und-Phlp",
+        "und-Phnx",
+        "und-PK",
+        "und-PL",
+        "und-Plrd",
+        "und-PM",
+        "und-PR",
+        "und-Prti",
+        "und-PS",
+        "und-PT",
+        "und-PW",
+        "und-PY",
+        "und-QA",
+        "und-QO",
+        "und-RE",
+        "und-Rjng",
+        "und-RO",
+        "und-Rohg",
+        "und-RS",
+        "und-RU",
+        "und-Runr",
+        "und-RW",
+        "und-SA",
+        "und-Samr",
+        "und-Sarb",
+        "und-Saur",
+        "und-SC",
+        "und-SD",
+        "und-SE",
+        "und-Sgnw",
+        "und-Shaw",
+        "und-Shrd",
+        "und-SI",
+        "und-Sidd",
+        "und-Sind",
+        "und-Sinh",
+        "und-SJ",
+        "und-SK",
+        "und-SM",
+        "und-SN",
+        "und-SO",
+        "und-Sogd",
+        "und-Sogo",
+        "und-Sora",
+        "und-Soyo",
+        "und-SR",
+        "und-ST",
+        "und-Sund",
+        "und-SV",
+        "und-SY",
+        "und-Sylo",
+        "und-Syrc",
+        "und-Tagb",
+        "und-Takr",
+        "und-Tale",
+        "und-Talu",
+        "und-Taml",
+        "und-Tang",
+        "und-Tavt",
+        "und-TD",
+        "und-Telu",
+        "und-TF",
+        "und-Tfng",
+        "und-TG",
+        "und-Tglg",
+        "und-TH",
+        "und-Thaa",
+        "und-Thai",
+        "und-Thai-CN",
+        "und-Thai-KH",
+        "und-Thai-LA",
+        "und-Tibt",
+        "und-Tirh",
+        "und-TJ",
+        "und-TK",
+        "und-TL",
+        "und-TM",
+        "und-TN",
+        "und-Tnsa",
+        "und-TO",
+        "und-Toto",
+        "und-TR",
+        "und-TV",
+        "und-TW",
+        "und-TZ",
+        "und-UA",
+        "und-UG",
+        "und-Ugar",
+        "und-UY",
+        "und-UZ",
+        "und-VA",
+        "und-Vaii",
+        "und-VE",
+        "und-Vith",
+        "und-VN",
+        "und-VU",
+        "und-Wara",
+        "und-Wcho",
+        "und-WF",
+        "und-WS",
+        "und-XK",
+        "und-Xpeo",
+        "und-Xsux",
+        "und-YE",
+        "und-Yezi",
+        "und-Yiii",
+        "und-YT",
+        "und-Zanb",
+        "und-ZW",
+        "unr",
+        "unr-Deva",
+        "unr-NP",
+        "unx",
+        "uok",
+        "ur",
+        "uri",
+        "urt",
+        "urw",
+        "usa",
+        "uth",
+        "utr",
+        "uvh",
+        "uvl",
+        "uz",
+        "uz-AF",
+        "uz-Arab",
+        "uz-CN",
+        "vag",
+        "vai",
+        "van",
+        "ve",
+        "vec",
+        "vep",
+        "vi",
+        "vic",
+        "viv",
+        "vls",
+        "vmf",
+        "vmw",
+        "vo",
+        "vot",
+        "vro",
+        "vun",
+        "vut",
+        "wa",
+        "wae",
+        "waj",
+        "wal",
+        "wan",
+        "war",
+        "wbp",
+        "wbq",
+        "wbr",
+        "wci",
+        "wer",
+        "wgi",
+        "whg",
+        "wib",
+        "wiu",
+        "wiv",
+        "wja",
+        "wji",
+        "wls",
+        "wmo",
+        "wnc",
+        "wni",
+        "wnu",
+        "wo",
+        "wob",
+        "wos",
+        "wrs",
+        "wsg",
+        "wsk",
+        "wtm",
+        "wuu",
+        "wuv",
+        "wwa",
+        "xav",
+        "xbi",
+        "xco",
+        "xcr",
+        "xes",
+        "xh",
+        "xla",
+        "xlc",
+        "xld",
+        "xmf",
+        "xmn",
+        "xmr",
+        "xna",
+        "xnr",
+        "xog",
+        "xon",
+        "xpr",
+        "xrb",
+        "xsa",
+        "xsi",
+        "xsm",
+        "xsr",
+        "xwe",
+        "yam",
+        "yao",
+        "yap",
+        "yas",
+        "yat",
+        "yav",
+        "yay",
+        "yaz",
+        "yba",
+        "ybb",
+        "yby",
+        "yer",
+        "ygr",
+        "ygw",
+        "yi",
+        "yko",
+        "yle",
+        "ylg",
+        "yll",
+        "yml",
+        "yo",
+        "yon",
+        "yrb",
+        "yre",
+        "yrl",
+        "yss",
+        "yua",
+        "yue",
+        "yue-CN",
+        "yue-Hans",
+        "yuj",
+        "yut",
+        "yuw",
+        "za",
+        "zag",
+        "zdj",
+        "zea",
+        "zgh",
+        "zh",
+        "zh-AU",
+        "zh-BN",
+        "zh-Bopo",
+        "zh-GB",
+        "zh-GF",
+        "zh-Hanb",
+        "zh-Hant",
+        "zh-HK",
+        "zh-ID",
+        "zh-MO",
+        "zh-PA",
+        "zh-PF",
+        "zh-PH",
+        "zh-SR",
+        "zh-TH",
+        "zh-TW",
+        "zh-US",
+        "zh-VN",
+        "zhx",
+        "zia",
+        "zkt",
+        "zlm",
+        "zmi",
+        "zne",
+        "zu",
+        "zza",
+    ];
+}
+
+#[allow(dead_code)]
+pub mod short_subtags_10pct {
+    pub static STRINGS: &[&str] = &[
+        "aa",
+        "acd",
+        "aeb",
+        "ahl",
+        "amm",
+        "aom",
+        "arc-Nbat",
+        "asa",
+        "avl",
+        "az",
+        "bas",
+        "bcf",
+        "bef",
+        "bft",
+        "bho",
+        "bjh",
+        "bkq",
+        "bmu",
+        "bqc",
+        "bsj",
+        "bug",
+        "bye",
+        "bzw",
+        "cgg",
+        "cjv",
+        "cop",
+        "csw",
+        "dah",
+        "den",
+        "dnj",
+        "dtp",
+        "dyo",
+        "eky",
+        "es",
+        "ext",
+        "ffi",
+        "fod",
+        "fub",
+        "fy",
+        "gay",
+        "gdr",
+        "gjk",
+        "gnd",
+        "grb",
+        "gur",
+        "gwt",
+        "hbb",
+        "hil",
+        "ho",
+        "hur",
+        "ich",
+        "ijj",
+        "iou",
+        "ja",
+        "jib",
+        "kac",
+        "kbq",
+        "kdt",
+        "kgp",
+        "kij",
+        "kk-Arab",
+        "klx",
+        "knp",
+        "kpr",
+        "krl",
+        "ktb",
+        "kue",
+        "kw",
+        "kxp",
+        "kzh",
+        "las",
+        "lem",
+        "lif",
+        "lle",
+        "lok",
+        "luo",
+        "mai",
+        "mbq",
+        "mdf",
+        "met",
+        "mgo",
+        "miw",
+        "mmo",
+        "mo",
+        "mql",
+        "mti",
+        "mwv",
+        "myz",
+        "nak",
+        "nco",
+        "ng",
+        "nin",
+        "nn",
+        "nop",
+        "ntm",
+        "nxr",
+        "okr",
+        "os",
+        "pal",
+        "ped",
+        "pl",
+        "pra",
+        "quc",
+        "rhg",
+        "rmu",
+        "ru",
+        "saq",
+        "scl",
+        "se",
+        "shi",
+        "sk",
+        "sma",
+        "snx",
+        "sps",
+        "srx",
+        "sue",
+        "swv",
+        "taq",
+        "tdd",
+        "tg",
+        "ti",
+        "tkt",
+        "tof",
+        "trw",
+        "ttj",
+        "tvu",
+        "udi",
+        "und",
+        "und-018",
+        "und-057",
+        "und-419",
+        "und-AQ",
+        "und-Arab-MN",
+        "und-Armn",
+        "und-Bass",
+        "und-BJ",
+        "und-Bugi",
+        "und-CH",
+        "und-CP",
+        "und-Cyrl-AL",
+        "und-DE",
+        "und-Dogr",
+        "und-Elym",
+        "und-GA",
+        "und-Goth",
+        "und-Guru",
+        "und-Hebr-SE",
+        "und-HR",
+        "und-IS",
+        "und-Kawi",
+        "und-Kore",
+        "und-Latn-AM",
+        "und-Latn-MM",
+        "und-LI",
+        "und-LY",
+        "und-MD",
+        "und-Mlym",
+        "und-Mtei",
+        "und-NA",
+        "und-NL",
+        "und-Osma",
+        "und-Phag",
+        "und-PS",
+        "und-RS",
+        "und-SE",
+        "und-SM",
+        "und-SV",
+        "und-Tavt",
+        "und-Thai-CN",
+        "und-Tnsa",
+        "und-UY",
+        "und-WF",
+        "und-ZW",
+        "usa",
+        "vai",
+        "vmw",
+        "wan",
+        "wiu",
+        "wob",
+        "xbi",
+        "xmr",
+        "xsr",
+        "yba",
+        "yll",
+        "yue-CN",
+        "zh",
+        "zh-MO",
+        "zia",
+    ];
+}
+
+#[allow(dead_code)]
+pub mod locales_with_aux {
+    pub static NUM_UNIQUE_BLOBS: usize = 411;
+    pub static STRINGS: &[&str] = &["af-x-3", "af-x-3s", "af-x-4", "af-x-4s", "af-x-5", "af-x-5s", "am-x-3", "am-x-3s", "am-x-4", "am-x-4s", "am-x-5", "am-x-5s", "ar-DZ-x-3", "ar-DZ-x-3s", "ar-DZ-x-4", "ar-DZ-x-4s", "ar-DZ-x-5", "ar-DZ-x-5s", "ar-IQ-x-3", "ar-IQ-x-3s", "ar-IQ-x-4", "ar-IQ-x-4s", "ar-IQ-x-5", "ar-IQ-x-5s", "ar-JO-x-3", "ar-JO-x-3s", "ar-JO-x-4", "ar-JO-x-4s", "ar-JO-x-5", "ar-JO-x-5s", "ar-LB-x-3", "ar-LB-x-3s", "ar-LB-x-4", "ar-LB-x-4s", "ar-LB-x-5", "ar-LB-x-5s", "ar-MA-x-3", "ar-MA-x-3s", "ar-MA-x-4", "ar-MA-x-4s", "ar-MA-x-5", "ar-MA-x-5s", "ar-MR-x-3", "ar-MR-x-3s", "ar-MR-x-4", "ar-MR-x-4s", "ar-MR-x-5", "ar-MR-x-5s", "ar-PS-x-3", "ar-PS-x-3s", "ar-PS-x-4", "ar-PS-x-4s", "ar-PS-x-5", "ar-PS-x-5s", "ar-SY-x-3", "ar-SY-x-3s", "ar-SY-x-4", "ar-SY-x-4s", "ar-SY-x-5", "ar-SY-x-5s", "ar-TN-x-3", "ar-TN-x-3s", "ar-TN-x-4", "ar-TN-x-4s", "ar-TN-x-5", "ar-TN-x-5s", "ar-x-3", "ar-x-3s", "ar-x-4", "ar-x-4s", "ar-x-5", "ar-x-5s", "as-x-3", "as-x-3s", "as-x-4", "as-x-4s", "as-x-5", "as-x-5s", "ast-x-3", "ast-x-3s", "ast-x-4", "ast-x-4s", "ast-x-5", "ast-x-5s", "az-x-3", "az-x-3s", "az-x-5", "az-x-5s", "be-x-3", "be-x-3s", "be-x-4", "be-x-4s", "be-x-5", "be-x-5s", "bg-x-3", "bg-x-3s", "bg-x-4", "bg-x-4s", "bg-x-5", "bg-x-5s", "bgc-x-3", "bgc-x-3s", "bgc-x-5", "bgc-x-5s", "bho-x-3", "bho-x-3s", "bho-x-5", "bho-x-5s", "bn-IN-x-3", "bn-IN-x-3s", "bn-IN-x-4", "bn-IN-x-4s", "bn-x-3", "bn-x-3s", "bn-x-4", "bn-x-4s", "bn-x-5", "bn-x-5s", "br-x-3", "br-x-3s", "br-x-4", "br-x-4s", "br-x-5", "br-x-5s", "brx-x-3", "brx-x-3s", "brx-x-4", "brx-x-4s", "brx-x-5", "brx-x-5s", "bs-Cyrl-x-3", "bs-Cyrl-x-3s", "bs-Cyrl-x-4", "bs-Cyrl-x-4s", "bs-Cyrl-x-5", "bs-Cyrl-x-5s", "bs-x-3", "bs-x-3s", "bs-x-4", "bs-x-4s", "bs-x-5", "bs-x-5s", "ca-x-3", "ca-x-3s", "ca-x-4", "ca-x-4s", "ca-x-5", "ca-x-5s", "ceb-x-3", "ceb-x-3s", "ceb-x-4", "ceb-x-4s", "ceb-x-5", "ceb-x-5s", "chr-x-3", "chr-x-3s", "chr-x-4", "chr-x-4s", "chr-x-5", "chr-x-5s", "cs-x-3", "cs-x-3s", "cs-x-5", "cs-x-5s", "cv-x-3", "cv-x-3s", "cv-x-4", "cv-x-4s", "cv-x-5", "cv-x-5s", "cy-x-3", "cy-x-3s", "cy-x-4", "cy-x-4s", "cy-x-5", "cy-x-5s", "da-x-3", "da-x-3s", "da-x-4", "da-x-4s", "da-x-5", "da-x-5s", "de-AT-x-3", "de-AT-x-3s", "de-AT-x-5", "de-AT-x-5s", "de-IT-x-3", "de-IT-x-3s", "de-IT-x-5", "de-IT-x-5s", "de-x-3", "de-x-3s", "de-x-4", "de-x-4s", "de-x-5", "de-x-5s", "doi-x-3", "doi-x-3s", "doi-x-4", "doi-x-4s", "doi-x-5", "doi-x-5s", "dsb-x-3", "dsb-x-3s", "dsb-x-4", "dsb-x-4s", "dsb-x-5", "dsb-x-5s", "el-polyton-x-3", "el-polyton-x-5", "el-polyton-x-5s", "el-x-3", "el-x-3s", "el-x-4", "el-x-4s", "el-x-5", "el-x-5s", "en-001-x-3", "en-001-x-3s", "en-150-x-3", "en-150-x-3s", "en-AG-x-3", "en-AG-x-3s", "en-AI-x-3", "en-AI-x-3s", "en-AT-x-3", "en-AT-x-3s", "en-AU-x-3", "en-AU-x-3s", "en-BB-x-3", "en-BB-x-3s", "en-BE-x-3", "en-BE-x-3s", "en-BM-x-3", "en-BM-x-3s", "en-BS-x-3", "en-BS-x-3s", "en-BW-x-3", "en-BW-x-3s", "en-BZ-x-3", "en-BZ-x-3s", "en-CC-x-3", "en-CC-x-3s", "en-CH-x-3", "en-CH-x-3s", "en-CK-x-3", "en-CK-x-3s", "en-CM-x-3", "en-CM-x-3s", "en-CX-x-3", "en-CX-x-3s", "en-CY-x-3", "en-CY-x-3s", "en-DE-x-3", "en-DE-x-3s", "en-DG-x-3", "en-DG-x-3s", "en-DK-x-3", "en-DK-x-3s", "en-DM-x-3", "en-DM-x-3s", "en-ER-x-3", "en-ER-x-3s", "en-FI-x-3", "en-FI-x-3s", "en-FJ-x-3", "en-FJ-x-3s", "en-FK-x-3", "en-FK-x-3s", "en-FM-x-3", "en-FM-x-3s", "en-GB-x-3", "en-GB-x-3s", "en-GD-x-3", "en-GD-x-3s", "en-GG-x-3", "en-GG-x-3s", "en-GH-x-3", "en-GH-x-3s", "en-GI-x-3", "en-GI-x-3s", "en-GM-x-3", "en-GM-x-3s", "en-GY-x-3", "en-GY-x-3s", "en-HK-x-3", "en-HK-x-3s", "en-IE-x-3", "en-IE-x-3s", "en-IL-x-3", "en-IL-x-3s", "en-IM-x-3", "en-IM-x-3s", "en-IN-x-3", "en-IN-x-3s", "en-IO-x-3", "en-IO-x-3s", "en-JE-x-3", "en-JE-x-3s", "en-JM-x-3", "en-JM-x-3s", "en-KE-x-3", "en-KE-x-3s", "en-KI-x-3", "en-KI-x-3s", "en-KN-x-3", "en-KN-x-3s", "en-KY-x-3", "en-KY-x-3s", "en-LC-x-3", "en-LC-x-3s", "en-LR-x-3", "en-LR-x-3s", "en-LS-x-3", "en-LS-x-3s", "en-MG-x-3", "en-MG-x-3s", "en-MO-x-3", "en-MO-x-3s", "en-MS-x-3", "en-MS-x-3s", "en-MT-x-3", "en-MT-x-3s", "en-MU-x-3", "en-MU-x-3s", "en-MV-x-3", "en-MV-x-3s", "en-MW-x-3", "en-MW-x-3s", "en-MY-x-3", "en-MY-x-3s", "en-NA-x-3", "en-NA-x-3s", "en-NF-x-3", "en-NF-x-3s", "en-NG-x-3", "en-NG-x-3s", "en-NL-x-3", "en-NL-x-3s", "en-NR-x-3", "en-NR-x-3s", "en-NU-x-3", "en-NU-x-3s", "en-NZ-x-3", "en-NZ-x-3s", "en-PG-x-3", "en-PG-x-3s", "en-PK-x-3", "en-PK-x-3s", "en-PN-x-3", "en-PN-x-3s", "en-PW-x-3", "en-PW-x-3s", "en-RW-x-3", "en-RW-x-3s", "en-SB-x-3", "en-SB-x-3s", "en-SC-x-3", "en-SC-x-3s", "en-SD-x-3", "en-SD-x-3s", "en-SE-x-3", "en-SE-x-3s", "en-SG-x-3", "en-SG-x-3s", "en-SH-x-3", "en-SH-x-3s", "en-SI-x-3", "en-SI-x-3s", "en-SL-x-3", "en-SL-x-3s", "en-SS-x-3", "en-SS-x-3s", "en-SX-x-3", "en-SX-x-3s", "en-SZ-x-3", "en-SZ-x-3s", "en-TC-x-3", "en-TC-x-3s", "en-TK-x-3", "en-TK-x-3s", "en-TO-x-3", "en-TO-x-3s", "en-TT-x-3", "en-TT-x-3s", "en-TV-x-3", "en-TV-x-3s", "en-TZ-x-3", "en-TZ-x-3s", "en-UG-x-3", "en-UG-x-3s", "en-VC-x-3", "en-VC-x-3s", "en-VG-x-3", "en-VG-x-3s", "en-VU-x-3", "en-VU-x-3s", "en-WS-x-3", "en-WS-x-3s", "en-ZA-x-3", "en-ZA-x-3s", "en-ZM-x-3", "en-ZM-x-3s", "en-ZW-x-3", "en-ZW-x-3s", "en-x-3", "en-x-3s", "en-x-4", "en-x-4s", "en-x-5", "en-x-5s", "es-CL-x-3s", "es-CO-x-3s", "es-PE-x-3", "es-PE-x-3s", "es-PE-x-5", "es-PE-x-5s", "es-PY-x-3", "es-PY-x-3s", "es-UY-x-3", "es-UY-x-3s", "es-UY-x-5", "es-UY-x-5s", "es-VE-x-3", "es-VE-x-3s", "es-x-3", "es-x-3s", "es-x-4", "es-x-4s", "es-x-5", "es-x-5s", "et-x-3", "et-x-3s", "et-x-4", "et-x-4s", "et-x-5", "et-x-5s", "eu-x-3", "eu-x-3s", "eu-x-4", "eu-x-4s", "eu-x-5", "eu-x-5s", "fa-AF-x-3", "fa-AF-x-3s", "fa-AF-x-4", "fa-AF-x-4s", "fa-AF-x-5", "fa-AF-x-5s", "fa-x-3", "fa-x-3s", "fa-x-4", "fa-x-4s", "fa-x-5", "fa-x-5s", "ff-Adlm-x-3", "ff-Adlm-x-3s", "ff-Adlm-x-4", "ff-Adlm-x-4s", "ff-Adlm-x-5", "ff-Adlm-x-5s", "fi-x-3", "fi-x-3s", "fi-x-4", "fi-x-4s", "fi-x-5", "fi-x-5s", "fil-x-3", "fil-x-3s", "fil-x-4", "fil-x-4s", "fil-x-5", "fil-x-5s", "fo-x-3", "fo-x-3s", "fo-x-4", "fo-x-4s", "fo-x-5", "fo-x-5s", "fr-CA-x-3", "fr-CA-x-3s", "fr-MA-x-3", "fr-MA-x-3s", "fr-x-3", "fr-x-3s", "fr-x-4", "fr-x-4s", "fr-x-5", "fr-x-5s", "ga-x-3", "ga-x-3s", "ga-x-4", "ga-x-4s", "ga-x-5", "ga-x-5s", "gd-x-3", "gd-x-3s", "gd-x-4", "gd-x-4s", "gd-x-5", "gd-x-5s", "gl-x-3", "gl-x-3s", "gl-x-4", "gl-x-4s", "gl-x-5", "gl-x-5s", "gu-x-3", "gu-x-3s", "gu-x-4", "gu-x-4s", "gu-x-5", "gu-x-5s", "ha-x-3", "ha-x-3s", "ha-x-4", "ha-x-4s", "ha-x-5", "ha-x-5s", "he-x-3", "he-x-3s", "he-x-5", "he-x-5s", "hi-Latn-x-3", "hi-Latn-x-3s", "hi-Latn-x-4", "hi-Latn-x-4s", "hi-Latn-x-5", "hi-Latn-x-5s", "hi-x-3", "hi-x-3s", "hi-x-4", "hi-x-4s", "hi-x-5", "hi-x-5s", "hr-x-3", "hr-x-3s", "hr-x-4", "hr-x-4s", "hr-x-5", "hr-x-5s", "hsb-x-3", "hsb-x-3s", "hsb-x-4", "hsb-x-4s", "hsb-x-5", "hsb-x-5s", "hu-x-3", "hu-x-3s", "hu-x-4", "hu-x-4s", "hu-x-5", "hu-x-5s", "hy-x-3", "hy-x-3s", "hy-x-4", "hy-x-4s", "hy-x-5", "hy-x-5s", "ia-x-3", "ia-x-3s", "ia-x-4", "ia-x-5", "ia-x-5s", "id-x-3", "id-x-3s", "id-x-4", "id-x-4s", "id-x-5", "id-x-5s", "ig-x-3", "ig-x-3s", "ig-x-4", "ig-x-4s", "ig-x-5", "ig-x-5s", "is-x-3", "is-x-3s", "is-x-4", "is-x-4s", "is-x-5", "is-x-5s", "it-x-3", "it-x-3s", "it-x-4", "it-x-4s", "it-x-5", "it-x-5s", "ja-x-3", "ja-x-3s", "ja-x-5", "ja-x-5s", "jv-x-3", "jv-x-3s", "jv-x-4", "jv-x-4s", "jv-x-5", "jv-x-5s", "ka-x-3", "ka-x-3s", "ka-x-4", "ka-x-4s", "ka-x-5", "ka-x-5s", "kea-x-3", "kea-x-3s", "kea-x-4", "kea-x-4s", "kea-x-5", "kea-x-5s", "kgp-x-3", "kgp-x-3s", "kgp-x-4", "kgp-x-4s", "kgp-x-5", "kgp-x-5s", "kk-x-3", "kk-x-3s", "kk-x-4", "kk-x-4s", "kk-x-5", "kk-x-5s", "km-x-3", "km-x-3s", "km-x-4", "km-x-4s", "km-x-5", "km-x-5s", "kn-x-3", "kn-x-3s", "kn-x-4", "kn-x-4s", "kn-x-5", "kn-x-5s", "ko-x-3", "ko-x-3s", "ko-x-4", "ko-x-4s", "ko-x-5", "ko-x-5s", "kok-x-3", "kok-x-3s", "kok-x-5", "kok-x-5s", "ks-Deva-x-3", "ks-Deva-x-3s", "ks-Deva-x-4", "ks-Deva-x-4s", "ks-Deva-x-5", "ks-Deva-x-5s", "ks-x-3", "ks-x-3s", "ks-x-4", "ks-x-4s", "ks-x-5", "ks-x-5s", "ky-x-3", "ky-x-3s", "ky-x-4", "ky-x-4s", "ky-x-5", "ky-x-5s", "lo-x-3", "lo-x-3s", "lo-x-5", "lo-x-5s", "lt-x-3", "lt-x-3s", "lt-x-4", "lt-x-4s", "lt-x-5", "lt-x-5s", "lv-x-3", "lv-x-3s", "lv-x-4", "lv-x-4s", "lv-x-5", "lv-x-5s", "mai-x-3", "mai-x-3s", "mai-x-4", "mai-x-4s", "mai-x-5", "mai-x-5s", "mi-x-3", "mi-x-3s", "mi-x-4", "mi-x-4s", "mi-x-5", "mi-x-5s", "mk-x-3", "mk-x-3s", "mk-x-4", "mk-x-4s", "mk-x-5", "mk-x-5s", "ml-x-3", "ml-x-3s", "ml-x-4", "ml-x-4s", "ml-x-5", "ml-x-5s", "mn-x-3", "mn-x-3s", "mn-x-4", "mn-x-4s", "mn-x-5", "mn-x-5s", "mni-x-3", "mni-x-3s", "mni-x-4", "mni-x-4s", "mni-x-5", "mni-x-5s", "mr-x-3", "mr-x-3s", "mr-x-4", "mr-x-4s", "mr-x-5", "mr-x-5s", "ms-x-3", "ms-x-3s", "ms-x-4", "ms-x-4s", "ms-x-5", "ms-x-5s", "my-x-3", "my-x-3s", "my-x-4", "my-x-4s", "my-x-5", "my-x-5s", "nb-x-3", "nb-x-3s", "nb-x-4", "nb-x-4s", "nb-x-5", "nb-x-5s", "ne-x-3", "ne-x-3s", "ne-x-4", "ne-x-4s", "ne-x-5", "ne-x-5s", "nl-x-3", "nl-x-3s", "nl-x-4", "nl-x-4s", "nl-x-5", "nl-x-5s", "nn-x-3", "nn-x-3s", "nn-x-4", "nn-x-4s", "nn-x-5", "nn-x-5s", "no-x-3", "no-x-3s", "no-x-4", "no-x-4s", "no-x-5", "no-x-5s", "or-x-3", "or-x-3s", "or-x-4", "or-x-4s", "or-x-5", "or-x-5s", "pa-x-3", "pa-x-3s", "pa-x-4", "pa-x-4s", "pa-x-5", "pa-x-5s", "pcm-x-3", "pcm-x-3s", "pcm-x-4", "pcm-x-4s", "pcm-x-5", "pcm-x-5s", "pl-x-3", "pl-x-3s", "pl-x-4", "pl-x-4s", "pl-x-5", "pl-x-5s", "ps-x-3", "ps-x-3s", "ps-x-4", "ps-x-5", "ps-x-5s", "pt-x-3", "pt-x-3s", "pt-x-4", "pt-x-4s", "pt-x-5", "pt-x-5s", "qu-x-3", "qu-x-3s", "qu-x-5", "qu-x-5s", "raj-x-3", "raj-x-3s", "raj-x-5", "raj-x-5s", "rm-x-3", "rm-x-3s", "rm-x-4", "rm-x-4s", "rm-x-5", "rm-x-5s", "ro-x-3", "ro-x-3s", "ro-x-4", "ro-x-4s", "ro-x-5", "ro-x-5s", "ru-x-3", "ru-x-3s", "ru-x-4", "ru-x-4s", "ru-x-5", "ru-x-5s", "sa-x-3", "sa-x-3s", "sa-x-4", "sa-x-5", "sa-x-5s", "sat-x-3", "sat-x-3s", "sat-x-4", "sat-x-4s", "sat-x-5", "sat-x-5s", "sc-x-3", "sc-x-3s", "sc-x-4", "sc-x-4s", "sc-x-5", "sc-x-5s", "sd-Deva-x-3", "sd-Deva-x-3s", "sd-Deva-x-4", "sd-Deva-x-4s", "sd-Deva-x-5", "sd-Deva-x-5s", "sd-x-3", "sd-x-3s", "sd-x-4", "sd-x-4s", "sd-x-5", "sd-x-5s", "si-x-3", "si-x-3s", "si-x-4", "si-x-4s", "si-x-5", "si-x-5s", "sk-x-3", "sk-x-3s", "sk-x-4", "sk-x-4s", "sk-x-5", "sk-x-5s", "sl-x-3", "sl-x-3s", "sl-x-4", "sl-x-4s", "sl-x-5", "sl-x-5s", "so-x-3", "so-x-3s", "so-x-4", "so-x-4s", "so-x-5", "so-x-5s", "sq-x-3", "sq-x-3s", "sq-x-4", "sq-x-4s", "sq-x-5", "sq-x-5s", "sr-Latn-XK-x-3", "sr-Latn-XK-x-3s", "sr-Latn-x-3", "sr-Latn-x-3s", "sr-Latn-x-4", "sr-Latn-x-4s", "sr-Latn-x-5", "sr-Latn-x-5s", "sr-ME-x-3", "sr-ME-x-3s", "sr-XK-x-3", "sr-XK-x-3s", "sr-x-3", "sr-x-3s", "sr-x-4", "sr-x-4s", "sr-x-5", "sr-x-5s", "su-x-3", "su-x-3s", "su-x-4", "su-x-4s", "su-x-5", "su-x-5s", "sv-x-3", "sv-x-3s", "sv-x-4", "sv-x-4s", "sv-x-5", "sv-x-5s", "sw-x-3", "sw-x-3s", "sw-x-4", "sw-x-4s", "sw-x-5", "sw-x-5s", "ta-x-3", "ta-x-3s", "ta-x-4", "ta-x-4s", "ta-x-5", "ta-x-5s", "te-x-3", "te-x-3s", "te-x-4", "te-x-4s", "te-x-5", "te-x-5s", "tg-x-3", "tg-x-3s", "tg-x-4", "tg-x-4s", "tg-x-5", "tg-x-5s", "th-x-3", "th-x-3s", "th-x-4", "th-x-4s", "th-x-5", "th-x-5s", "ti-x-3", "ti-x-3s", "ti-x-4", "ti-x-4s", "ti-x-5", "ti-x-5s", "tk-x-3", "tk-x-3s", "tk-x-4", "tk-x-4s", "tk-x-5", "tk-x-5s", "to-x-3", "to-x-3s", "to-x-4", "to-x-4s", "to-x-5", "to-x-5s", "tr-x-3", "tr-x-3s", "tr-x-4", "tr-x-4s", "tr-x-5", "tr-x-5s", "tt-x-3", "tt-x-3s", "tt-x-5", "tt-x-5s", "uk-x-3", "uk-x-3s", "uk-x-4", "uk-x-4s", "uk-x-5", "uk-x-5s", "und-x-3", "und-x-3s", "und-x-4", "und-x-4s", "und-x-5", "und-x-5s", "ur-x-3", "ur-x-3s", "ur-x-4", "ur-x-4s", "ur-x-5", "ur-x-5s", "uz-Cyrl-x-3", "uz-Cyrl-x-3s", "uz-Cyrl-x-4", "uz-Cyrl-x-4s", "uz-Cyrl-x-5", "uz-Cyrl-x-5s", "uz-x-3", "uz-x-3s", "uz-x-4", "uz-x-4s", "uz-x-5", "uz-x-5s", "vi-x-3", "vi-x-3s", "vi-x-5", "vi-x-5s", "wo-x-3", "wo-x-3s", "wo-x-5", "wo-x-5s", "xh-x-3", "xh-x-3s", "xh-x-5", "xh-x-5s", "yo-BJ-x-3", "yo-BJ-x-3s", "yo-BJ-x-4", "yo-BJ-x-4s", "yo-BJ-x-5", "yo-BJ-x-5s", "yo-x-3", "yo-x-3s", "yo-x-4", "yo-x-4s", "yo-x-5", "yo-x-5s", "yrl-x-3", "yrl-x-3s", "yrl-x-4", "yrl-x-4s", "yrl-x-5", "yrl-x-5s", "yue-Hans-x-3", "yue-Hans-x-3s", "yue-Hans-x-5", "yue-Hans-x-5s", "yue-x-3", "yue-x-3s", "yue-x-5", "yue-x-5s", "zh-Hant-x-3", "zh-Hant-x-3s", "zh-Hant-x-5", "zh-Hant-x-5s", "zh-x-3", "zh-x-3s", "zh-x-5", "zh-x-5s", "zu-x-3", "zu-x-3s", "zu-x-4", "zu-x-4s", "zu-x-5", "zu-x-5s"];
+}
diff --git a/vendor/zerotrie/tests/derive_test.rs b/vendor/zerotrie/tests/derive_test.rs
new file mode 100644
index 00000000..26ee36ab
--- /dev/null
+++ b/vendor/zerotrie/tests/derive_test.rs
@@ -0,0 +1,138 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#![allow(non_camel_case_types, non_snake_case)]
+
+use zerotrie::ZeroAsciiIgnoreCaseTrie;
+use zerotrie::ZeroTrie;
+use zerotrie::ZeroTrieExtendedCapacity;
+use zerotrie::ZeroTriePerfectHash;
+use zerotrie::ZeroTrieSimpleAscii;
+use zerovec::ZeroVec;
+
+#[cfg_attr(feature = "yoke", derive(yoke::Yokeable))]
+#[cfg_attr(feature = "zerofrom", derive(zerofrom::ZeroFrom))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = crate))]
+struct DeriveTest_ZeroTrie_ZeroVec<'data> {
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    _data: ZeroTrie<ZeroVec<'data, u8>>,
+}
+
+#[test]
+#[cfg(all(feature = "databake", feature = "alloc"))]
+fn bake_ZeroTrie_ZeroVec() {
+    use databake::*;
+    extern crate std;
+    test_bake!(
+        DeriveTest_ZeroTrie_ZeroVec<'static>,
+        crate::DeriveTest_ZeroTrie_ZeroVec {
+            _data: zerotrie::ZeroTrieSimpleAscii {
+                store: zerovec::ZeroVec::new(),
+            }
+            .into_zerotrie()
+        },
+    );
+}
+
+#[cfg_attr(feature = "yoke", derive(yoke::Yokeable))]
+#[cfg_attr(feature = "zerofrom", derive(zerofrom::ZeroFrom))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = crate))]
+struct DeriveTest_ZeroTrieSimpleAscii_ZeroVec<'data> {
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    _data: ZeroTrieSimpleAscii<ZeroVec<'data, u8>>,
+}
+
+#[test]
+#[cfg(all(feature = "databake", feature = "alloc"))]
+fn bake_ZeroTrieSimpleAscii_ZeroVec() {
+    use databake::*;
+    extern crate std;
+    test_bake!(
+        DeriveTest_ZeroTrieSimpleAscii_ZeroVec<'static>,
+        crate::DeriveTest_ZeroTrieSimpleAscii_ZeroVec {
+            _data: zerotrie::ZeroTrieSimpleAscii {
+                store: zerovec::ZeroVec::new(),
+            }
+        },
+    );
+}
+
+#[cfg_attr(feature = "yoke", derive(yoke::Yokeable))]
+#[cfg_attr(feature = "zerofrom", derive(zerofrom::ZeroFrom))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = crate))]
+struct DeriveTest_ZeroAsciiIgnoreCaseTrie_ZeroVec<'data> {
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    _data: ZeroAsciiIgnoreCaseTrie<ZeroVec<'data, u8>>,
+}
+
+#[test]
+#[cfg(all(feature = "databake", feature = "alloc"))]
+fn bake_ZeroAsciiIgnoreCaseTrie_ZeroVec() {
+    use databake::*;
+    extern crate std;
+    test_bake!(
+        DeriveTest_ZeroAsciiIgnoreCaseTrie_ZeroVec<'static>,
+        crate::DeriveTest_ZeroAsciiIgnoreCaseTrie_ZeroVec {
+            _data: zerotrie::ZeroAsciiIgnoreCaseTrie {
+                store: zerovec::ZeroVec::new(),
+            }
+        },
+    );
+}
+
+#[cfg_attr(feature = "yoke", derive(yoke::Yokeable))]
+#[cfg_attr(feature = "zerofrom", derive(zerofrom::ZeroFrom))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = crate))]
+struct DeriveTest_ZeroTriePerfectHash_ZeroVec<'data> {
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    _data: ZeroTriePerfectHash<ZeroVec<'data, u8>>,
+}
+
+#[test]
+#[cfg(all(feature = "databake", feature = "alloc"))]
+fn bake_ZeroTriePerfectHash_ZeroVec() {
+    use databake::*;
+    extern crate std;
+    test_bake!(
+        DeriveTest_ZeroTriePerfectHash_ZeroVec<'static>,
+        crate::DeriveTest_ZeroTriePerfectHash_ZeroVec {
+            _data: zerotrie::ZeroTriePerfectHash {
+                store: zerovec::ZeroVec::new(),
+            }
+        },
+    );
+}
+
+#[cfg_attr(feature = "yoke", derive(yoke::Yokeable))]
+#[cfg_attr(feature = "zerofrom", derive(zerofrom::ZeroFrom))]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+#[cfg_attr(feature = "databake", derive(databake::Bake))]
+#[cfg_attr(feature = "databake", databake(path = crate))]
+struct DeriveTest_ZeroTrieExtendedCapacity_ZeroVec<'data> {
+    #[cfg_attr(feature = "serde", serde(borrow))]
+    _data: ZeroTrieExtendedCapacity<ZeroVec<'data, u8>>,
+}
+
+#[test]
+#[cfg(all(feature = "databake", feature = "alloc"))]
+fn bake_ZeroTrieExtendedCapacity_ZeroVec() {
+    use databake::*;
+    extern crate std;
+    test_bake!(
+        DeriveTest_ZeroTrieExtendedCapacity_ZeroVec<'static>,
+        crate::DeriveTest_ZeroTrieExtendedCapacity_ZeroVec {
+            _data: zerotrie::ZeroTrieExtendedCapacity {
+                store: zerovec::ZeroVec::new(),
+            }
+        },
+    );
+}
diff --git a/vendor/zerotrie/tests/ignorecase_test.rs b/vendor/zerotrie/tests/ignorecase_test.rs
new file mode 100644
index 00000000..fb73ef7c
--- /dev/null
+++ b/vendor/zerotrie/tests/ignorecase_test.rs
@@ -0,0 +1,46 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use zerotrie::ZeroAsciiIgnoreCaseTrie;
+
+mod testdata {
+    include!("data/data.rs");
+}
+
+use testdata::strings_to_litemap;
+
+#[test]
+fn test_ignore_case_coverage() {
+    let litemap = strings_to_litemap(&["", "aBc", "aBcD", "aBce", "aBcF", "aBcghi"]);
+
+    // Test both construction paths
+    ZeroAsciiIgnoreCaseTrie::try_from(&litemap).unwrap();
+    let trie = litemap
+        .iter()
+        .map(|(k, v)| (*k, *v))
+        .collect::<ZeroAsciiIgnoreCaseTrie<Vec<u8>>>();
+
+    // Test lookup
+    for (k, v) in litemap.iter() {
+        assert_eq!(trie.get(k), Some(*v), "normal: {k:?}");
+        let k_upper = k
+            .iter()
+            .map(|c| c.to_ascii_uppercase())
+            .collect::<Vec<u8>>();
+        assert_eq!(trie.get(k_upper), Some(*v), "upper: {k:?}");
+        let k_lower = k
+            .iter()
+            .map(|c| c.to_ascii_lowercase())
+            .collect::<Vec<u8>>();
+        assert_eq!(trie.get(k_lower), Some(*v), "lower: {k:?}");
+    }
+
+    // Test mixed-case strings
+    let problematic_strs = &["A", "ab", "abc", "aBcd", "aBcgHi"];
+    for problematic_str in problematic_strs {
+        let mut litemap = litemap.clone();
+        litemap.insert(problematic_str.as_bytes(), 100);
+        ZeroAsciiIgnoreCaseTrie::try_from(&litemap).expect_err(problematic_str);
+    }
+}
diff --git a/vendor/zerotrie/tests/locale_aux_test.rs b/vendor/zerotrie/tests/locale_aux_test.rs
new file mode 100644
index 00000000..10b61071
--- /dev/null
+++ b/vendor/zerotrie/tests/locale_aux_test.rs
@@ -0,0 +1,168 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use icu_locale_core::extensions::private::Private;
+use icu_locale_core::Locale;
+use litemap::LiteMap;
+use std::collections::BTreeSet;
+use writeable::Writeable;
+use zerotrie::ZeroTriePerfectHash;
+use zerotrie::ZeroTrieSimpleAscii;
+use zerovec::VarZeroVec;
+
+mod testdata {
+    include!("data/data.rs");
+}
+
+use testdata::locales_with_aux::{NUM_UNIQUE_BLOBS, STRINGS};
+use testdata::strings_to_litemap;
+
+#[test]
+fn test_combined() {
+    let litemap = strings_to_litemap(STRINGS);
+
+    let vzv: VarZeroVec<str> = STRINGS.into();
+
+    // Lookup table size:
+    assert_eq!(vzv.as_bytes().len(), 10219);
+
+    // Size including pointer array:
+    assert_eq!(
+        vzv.as_bytes().len() + STRINGS.len() * core::mem::size_of::<usize>(),
+        18635
+    );
+
+    let trie = ZeroTrieSimpleAscii::try_from(&litemap).unwrap();
+
+    // Lookup table size:
+    assert_eq!(trie.byte_len(), 5104);
+
+    // Size including pointer array:
+    assert_eq!(
+        trie.byte_len() + NUM_UNIQUE_BLOBS * core::mem::size_of::<usize>(),
+        8392
+    );
+
+    let trie = ZeroTriePerfectHash::try_from(&litemap).unwrap();
+
+    // Lookup table size:
+    assert_eq!(trie.byte_len(), 5157);
+
+    // Size including pointer array:
+    assert_eq!(
+        trie.byte_len() + NUM_UNIQUE_BLOBS * core::mem::size_of::<usize>(),
+        8445
+    );
+
+    let total_str_len = litemap.keys().map(|k| k.len()).sum::<usize>();
+    assert_eq!(total_str_len, 8115);
+
+    // Lookup table size:
+    assert_eq!(
+        total_str_len + STRINGS.len() * core::mem::size_of::<usize>(),
+        16531
+    );
+
+    // Size including pointer array: (2x for the lookup array and value array)
+    assert_eq!(
+        total_str_len + 2 * STRINGS.len() * core::mem::size_of::<usize>(),
+        24947
+    );
+
+    // Size including u16 pointer array:
+    assert_eq!(
+        total_str_len
+            + STRINGS.len() * core::mem::size_of::<usize>()
+            + STRINGS.len() * core::mem::size_of::<u16>()
+            + NUM_UNIQUE_BLOBS * core::mem::size_of::<usize>(),
+        21923
+    );
+}
+
+#[test]
+fn test_aux_split() {
+    let locales: Vec<Locale> = STRINGS.iter().map(|s| s.parse().unwrap()).collect();
+
+    let aux_keys: BTreeSet<&Private> = locales.iter().map(|l| &l.extensions.private).collect();
+    assert_eq!(aux_keys.len(), 6);
+
+    let mut cumulative_index = 0;
+    let mut total_simpleascii_len = 0;
+    let mut total_perfecthash_len = 0;
+    let mut total_vzv_len = 0;
+    let mut unique_locales = BTreeSet::new();
+    for private in aux_keys.iter() {
+        let current_locales: Vec<Locale> = locales
+            .iter()
+            .filter(|l| l.extensions.private == **private)
+            .map(|l| {
+                let mut l = l.clone();
+                l.extensions.private = Private::default();
+                l
+            })
+            .collect();
+        let litemap: LiteMap<Vec<u8>, usize> = current_locales
+            .iter()
+            .map(|l| {
+                (l.write_to_string().into_owned().into_bytes(), {
+                    cumulative_index += 1;
+                    cumulative_index - 1
+                })
+            })
+            .collect();
+
+        let trie = ZeroTrieSimpleAscii::try_from(&litemap).unwrap();
+        total_simpleascii_len += trie.byte_len();
+
+        let trie = ZeroTriePerfectHash::try_from(&litemap).unwrap();
+        total_perfecthash_len += trie.byte_len();
+
+        for k in litemap.keys() {
+            unique_locales.insert(k.clone());
+        }
+
+        let strs: Vec<String> = current_locales
+            .iter()
+            .map(|l| l.write_to_string().into_owned())
+            .collect();
+        let vzv: VarZeroVec<str> = strs.as_slice().into();
+        total_vzv_len += vzv.as_bytes().len();
+    }
+    assert_eq!(cumulative_index, locales.len());
+
+    assert_eq!(total_simpleascii_len, 5098);
+    assert_eq!(total_perfecthash_len, 5302);
+    assert_eq!(total_vzv_len, 5486);
+
+    let total_unique_locale_str_len = unique_locales.iter().map(|v| v.len()).sum::<usize>();
+    assert_eq!(total_unique_locale_str_len, 945);
+
+    // Size including pointer array:
+    assert_eq!(
+        total_simpleascii_len + NUM_UNIQUE_BLOBS * core::mem::size_of::<usize>(),
+        8386
+    );
+    assert_eq!(
+        total_perfecthash_len + NUM_UNIQUE_BLOBS * core::mem::size_of::<usize>(),
+        8590
+    );
+    assert_eq!(
+        total_vzv_len + STRINGS.len() * core::mem::size_of::<usize>(),
+        13902
+    );
+    // 2x for the lookup arrays and value arrays
+    assert_eq!(
+        total_unique_locale_str_len + 2 * STRINGS.len() * core::mem::size_of::<usize>(),
+        17777
+    );
+
+    // Size including u16 pointer array:
+    assert_eq!(
+        total_unique_locale_str_len
+            + STRINGS.len() * core::mem::size_of::<usize>()
+            + STRINGS.len() * core::mem::size_of::<u16>()
+            + NUM_UNIQUE_BLOBS * core::mem::size_of::<usize>(),
+        14753
+    );
+}
diff --git a/vendor/zerovec-derive/.cargo-checksum.json b/vendor/zerovec-derive/.cargo-checksum.json
new file mode 100644
index 00000000..d13ca5f2
--- /dev/null
+++ b/vendor/zerovec-derive/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"0e6fb8c469e579f5d9e11c95f8e3c4408ec341c15e3308209964dada33b486a9","Cargo.toml":"d772679a28dfb795f9ff0d398de47a94194e05d69fcef29a6f99cab60a1a464a","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"bacbc17b2cb457c169257f5e22c78a45d1c4a399eadae383f7732af909616ebc","examples/derives.rs":"5b2c2e1d6e3b9bf4848306ba10e1d455786beeb719184d2e2f5fe54caec6645f","examples/make.rs":"22345bc24ef6b5c9effce687a9be910407ff3f517324aa261e65164173fe0aad","examples/make_var.rs":"c511f629e870788d5e998edc272eba027936ed4774c4d7d46ba1706f5cc383c7","src/lib.rs":"029d2b251b8279e7c85d9cc8efb6cad5188da9464b0a27e9de3dd119f4ffef2e","src/make_ule.rs":"e519092206dba8fc00b18d71ac62e89a7f3966074ede365e83d25ab1889abcb4","src/make_varule.rs":"6ebd30c7219ef0c0ec3d56d27ae8e3233003bd3701acb26077f9a62956cba424","src/ule.rs":"2c32e18df14273f758325b6be3c69e4286f9996ecc8f0256e7709ded1148c663","src/utils.rs":"561e8c19fd1ae7fb5bc6a8e8b3dd97d6714c2e1206d107d75d52f28c9fd18276","src/varule.rs":"27c991d81bf1e5d4eead3ded8db462bfa183d18079918326e9cc685237aa3af6"},"package":"5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"}
\ No newline at end of file
diff --git a/vendor/zerovec-derive/Cargo.lock b/vendor/zerovec-derive/Cargo.lock
new file mode 100644
index 00000000..a2ab2805
--- /dev/null
+++ b/vendor/zerovec-derive/Cargo.lock
@@ -0,0 +1,109 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.93"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
+
+[[package]]
+name = "serde"
+version = "1.0.218"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.218"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.139"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.98"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.1"
+dependencies = [
+ "bincode",
+ "proc-macro2",
+ "quote",
+ "serde",
+ "serde_json",
+ "syn",
+]
diff --git a/vendor/zerovec-derive/Cargo.toml b/vendor/zerovec-derive/Cargo.toml
new file mode 100644
index 00000000..08800ed6
--- /dev/null
+++ b/vendor/zerovec-derive/Cargo.toml
@@ -0,0 +1,86 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+name = "zerovec-derive"
+version = "0.11.1"
+authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
+build = false
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Custom derive for the zerovec crate"
+readme = "README.md"
+keywords = [
+    "zerocopy",
+    "serialization",
+    "zero-copy",
+    "serde",
+]
+categories = [
+    "rust-patterns",
+    "memory-management",
+    "caching",
+    "no-std",
+    "data-structures",
+]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.workspaces]
+independent = true
+
+[lib]
+name = "zerovec_derive"
+path = "src/lib.rs"
+proc-macro = true
+
+[[example]]
+name = "derives"
+path = "examples/derives.rs"
+test = true
+harness = false
+
+[[example]]
+name = "make"
+path = "examples/make.rs"
+test = true
+harness = false
+
+[[example]]
+name = "make_var"
+path = "examples/make_var.rs"
+test = true
+harness = false
+
+[dependencies.proc-macro2]
+version = "1.0.61"
+
+[dependencies.quote]
+version = "1.0.28"
+
+[dependencies.syn]
+version = "2.0.21"
+features = ["extra-traits"]
+
+[dev-dependencies.bincode]
+version = "1.3.1"
+
+[dev-dependencies.serde]
+version = "1.0.110"
+features = ["derive"]
+default-features = false
+
+[dev-dependencies.serde_json]
+version = "1.0.45"
diff --git a/vendor/zerovec-derive/LICENSE b/vendor/zerovec-derive/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/zerovec-derive/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/zerovec-derive/README.md b/vendor/zerovec-derive/README.md
new file mode 100644
index 00000000..e80b8abe
--- /dev/null
+++ b/vendor/zerovec-derive/README.md
@@ -0,0 +1,11 @@
+# zerovec-derive [![crates.io](https://img.shields.io/crates/v/zerovec-derive)](https://crates.io/crates/zerovec-derive)
+
+<!-- cargo-rdme start -->
+
+Proc macros for generating `ULE`, `VarULE` impls and types for the `zerovec` crate
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/zerovec-derive/examples/derives.rs b/vendor/zerovec-derive/examples/derives.rs
new file mode 100644
index 00000000..286ad5ff
--- /dev/null
+++ b/vendor/zerovec-derive/examples/derives.rs
@@ -0,0 +1,157 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use zerovec::ule::AsULE;
+use zerovec::ule::EncodeAsVarULE;
+use zerovec::*;
+
+#[repr(C, packed)]
+#[derive(ule::ULE, Copy, Clone)]
+pub struct FooULE {
+    a: u8,
+    b: <u32 as AsULE>::ULE,
+    c: <char as AsULE>::ULE,
+}
+
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+struct Foo {
+    a: u8,
+    b: u32,
+    c: char,
+}
+
+impl AsULE for Foo {
+    type ULE = FooULE;
+    fn to_unaligned(self) -> FooULE {
+        FooULE {
+            a: self.a,
+            b: self.b.to_unaligned(),
+            c: self.c.to_unaligned(),
+        }
+    }
+
+    fn from_unaligned(other: FooULE) -> Self {
+        Self {
+            a: other.a,
+            b: AsULE::from_unaligned(other.b),
+            c: AsULE::from_unaligned(other.c),
+        }
+    }
+}
+
+#[repr(C, packed)]
+#[derive(ule::VarULE)]
+pub struct RelationULE {
+    /// This maps to (AndOr, Polarity, Operand),
+    /// with the first bit mapping to AndOr (1 == And), the second bit
+    /// to Polarity (1 == Positive), and the remaining bits to Operand
+    /// encoded via Operand::encode. It is unsound for the Operand bits to
+    /// not be a valid encoded Operand.
+    andor_polarity_operand: u8,
+    modulo: <u32 as AsULE>::ULE,
+    range_list: ZeroSlice<Foo>,
+}
+
+#[derive(Clone, PartialEq, Debug)]
+pub struct Relation<'a> {
+    andor_polarity_operand: u8,
+    modulo: u32,
+    range_list: ZeroVec<'a, Foo>,
+}
+
+unsafe impl EncodeAsVarULE<RelationULE> for Relation<'_> {
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+        cb(&[
+            &[self.andor_polarity_operand],
+            ule::ULE::slice_as_bytes(&[self.modulo.to_unaligned()]),
+            self.range_list.as_bytes(),
+        ])
+    }
+}
+
+impl RelationULE {
+    pub fn as_relation(&self) -> Relation {
+        Relation {
+            andor_polarity_operand: self.andor_polarity_operand,
+            modulo: u32::from_unaligned(self.modulo),
+            range_list: self.range_list.as_zerovec(),
+        }
+    }
+}
+
+const TEST_SLICE: &[Foo] = &[
+    Foo {
+        a: 101,
+        b: 924,
+        c: '⸘',
+    },
+    Foo {
+        a: 217,
+        b: 4228,
+        c: 'ə',
+    },
+    Foo {
+        a: 117,
+        b: 9090,
+        c: 'ø',
+    },
+];
+
+const TEST_SLICE2: &[Foo] = &[
+    Foo {
+        a: 92,
+        b: 4,
+        c: 'å',
+    },
+    Foo {
+        a: 9,
+        b: 49993,
+        c: '±',
+    },
+];
+fn test_zerovec() {
+    let zerovec: ZeroVec<Foo> = TEST_SLICE.iter().copied().collect();
+
+    assert_eq!(zerovec, TEST_SLICE);
+
+    let bytes = zerovec.as_bytes();
+    let reparsed: ZeroVec<Foo> = ZeroVec::parse_bytes(bytes).expect("Parsing should succeed");
+
+    assert_eq!(reparsed, TEST_SLICE);
+}
+
+fn test_varzerovec() {
+    let relation1 = Relation {
+        andor_polarity_operand: 1,
+        modulo: 5004,
+        range_list: TEST_SLICE.iter().copied().collect(),
+    };
+    let relation2 = Relation {
+        andor_polarity_operand: 5,
+        modulo: 909,
+        range_list: TEST_SLICE2.iter().copied().collect(),
+    };
+
+    let relations = &[relation1, relation2];
+
+    let vzv = VarZeroVec::<_>::from(relations);
+
+    for (ule, stack) in vzv.iter().zip(relations.iter()) {
+        assert_eq!(*stack, ule.as_relation());
+    }
+
+    let bytes = vzv.as_bytes();
+
+    let recovered: VarZeroVec<RelationULE> =
+        VarZeroVec::parse_bytes(bytes).expect("Parsing should succeed");
+
+    for (ule, stack) in recovered.iter().zip(relations.iter()) {
+        assert_eq!(*stack, ule.as_relation());
+    }
+}
+
+fn main() {
+    test_zerovec();
+    test_varzerovec();
+}
diff --git a/vendor/zerovec-derive/examples/make.rs b/vendor/zerovec-derive/examples/make.rs
new file mode 100644
index 00000000..29727603
--- /dev/null
+++ b/vendor/zerovec-derive/examples/make.rs
@@ -0,0 +1,125 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use std::fmt::Debug;
+use ule::ULE;
+use zerovec::*;
+
+#[make_ule(StructULE)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
+struct Struct {
+    a: u8,
+    b: u32,
+    c: Option<char>,
+}
+
+#[make_ule(HashedStructULE)]
+#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
+#[zerovec::derive(Debug, Hash)]
+struct HashedStruct {
+    a: u64,
+    b: i16,
+    c: Option<char>,
+}
+
+#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
+#[make_ule(TupleStructULE)]
+struct TupleStruct(u8, char);
+
+#[make_ule(EnumULE)]
+#[repr(u8)]
+#[derive(Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Debug)]
+#[zerovec::derive(Debug, Hash)]
+enum Enum {
+    A = 0,
+    B = 1,
+    D = 2,
+    E = 3,
+    FooBar = 4,
+    F = 5,
+}
+
+#[make_ule(OutOfOrderMissingZeroEnumULE)]
+#[repr(u8)]
+#[derive(Copy, Clone, PartialEq, Eq, Ord, PartialOrd, Debug)]
+#[allow(unused)]
+enum OutOfOrderMissingZeroEnum {
+    E = 3,
+    B = 1,
+    FooBar = 4,
+    D = 2,
+    F = 5,
+}
+
+#[derive(Clone, Copy, Debug, PartialEq, Eq, Ord, PartialOrd)]
+#[make_ule(NoKVULE)]
+#[zerovec::skip_derive(ZeroMapKV)]
+struct NoKV(u8, char);
+
+#[derive(Clone, Copy, Debug, PartialEq, Eq)]
+#[make_ule(NoOrdULE)]
+#[zerovec::skip_derive(ZeroMapKV, Ord)]
+struct NoOrd(u8, char);
+
+fn test_zerovec<T: ule::AsULE + Debug + PartialEq>(slice: &[T]) {
+    let zerovec: ZeroVec<T> = slice.iter().copied().collect();
+
+    assert_eq!(zerovec, slice);
+
+    let bytes = zerovec.as_bytes();
+    let name = std::any::type_name::<T>();
+    let reparsed: ZeroVec<T> =
+        ZeroVec::parse_bytes(bytes).unwrap_or_else(|_| panic!("Parsing {name} should succeed"));
+
+    assert_eq!(reparsed, slice);
+}
+
+fn main() {
+    test_zerovec(TEST_SLICE_STRUCT);
+    test_zerovec(TEST_SLICE_TUPLESTRUCT);
+    test_zerovec(TEST_SLICE_ENUM);
+
+    assert!(EnumULE::parse_bytes_to_slice(&[0]).is_ok());
+    assert!(EnumULE::parse_bytes_to_slice(&[1]).is_ok());
+    assert!(EnumULE::parse_bytes_to_slice(&[5]).is_ok());
+    assert!(EnumULE::parse_bytes_to_slice(&[6]).is_err());
+    assert!(OutOfOrderMissingZeroEnumULE::parse_bytes_to_slice(&[0]).is_err());
+    assert!(OutOfOrderMissingZeroEnumULE::parse_bytes_to_slice(&[1]).is_ok());
+    assert!(OutOfOrderMissingZeroEnumULE::parse_bytes_to_slice(&[5]).is_ok());
+    assert!(OutOfOrderMissingZeroEnumULE::parse_bytes_to_slice(&[6]).is_err());
+}
+
+const TEST_SLICE_STRUCT: &[Struct] = &[
+    Struct {
+        a: 101,
+        b: 924,
+        c: Some('⸘'),
+    },
+    Struct {
+        a: 217,
+        b: 4228,
+        c: Some('ə'),
+    },
+    Struct {
+        a: 117,
+        b: 9090,
+        c: Some('ø'),
+    },
+];
+
+const TEST_SLICE_TUPLESTRUCT: &[TupleStruct] = &[
+    TupleStruct(101, 'ř'),
+    TupleStruct(76, '°'),
+    TupleStruct(15, 'a'),
+];
+
+const TEST_SLICE_ENUM: &[Enum] = &[
+    Enum::A,
+    Enum::FooBar,
+    Enum::F,
+    Enum::D,
+    Enum::B,
+    Enum::FooBar,
+    Enum::E,
+];
diff --git a/vendor/zerovec-derive/examples/make_var.rs b/vendor/zerovec-derive/examples/make_var.rs
new file mode 100644
index 00000000..fa93de2e
--- /dev/null
+++ b/vendor/zerovec-derive/examples/make_var.rs
@@ -0,0 +1,261 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use std::borrow::Cow;
+use std::fmt::Debug;
+
+use zerofrom::ZeroFrom;
+use zerovec::{ule::AsULE, *};
+
+#[make_varule(VarStructULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+struct VarStruct<'a> {
+    a: u32,
+    b: char,
+    #[serde(borrow)]
+    c: Cow<'a, str>,
+}
+
+#[make_varule(VarStructOutOfOrderULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+struct VarStructOutOfOrder<'a> {
+    a: u32,
+    #[serde(borrow)]
+    b: Cow<'a, str>,
+    c: char,
+    d: u8,
+}
+
+#[make_varule(VarTupleStructULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+struct VarTupleStruct<'a>(u32, char, #[serde(borrow)] VarZeroVec<'a, str>);
+
+#[make_varule(NoKVULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::skip_derive(ZeroMapKV)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+struct NoKV<'a>(u32, char, #[serde(borrow)] VarZeroVec<'a, str>);
+
+#[make_varule(NoOrdULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::skip_derive(ZeroMapKV, Ord)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+struct NoOrd<'a>(u32, char, #[serde(borrow)] VarZeroVec<'a, str>);
+
+#[make_varule(MultiFieldStructULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+struct MultiFieldStruct<'a> {
+    a: u32,
+    b: char,
+    #[serde(borrow)]
+    c: Cow<'a, str>,
+    d: u8,
+    #[serde(borrow)]
+    e: Cow<'a, str>,
+    f: char,
+}
+
+#[make_varule(MultiFieldConsecutiveStructULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+#[zerovec::format(zerovec::vecs::Index8)]
+struct MultiFieldConsecutiveStruct<'a> {
+    #[serde(borrow)]
+    a: Cow<'a, str>,
+    #[serde(borrow)]
+    b: Cow<'a, str>,
+    #[serde(borrow)]
+    c: Cow<'a, str>,
+    #[serde(borrow)]
+    d: Cow<'a, str>,
+}
+
+#[make_varule(CustomVarFieldULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+struct CustomVarField<'a> {
+    #[zerovec::varule(MultiFieldStructULE)]
+    #[serde(borrow)]
+    a: MultiFieldStruct<'a>,
+    b: u32,
+}
+
+#[make_varule(MultiFieldTupleULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+#[zerovec::format(zerovec::vecs::Index32)]
+struct MultiFieldTuple<'a>(
+    u8,
+    char,
+    #[serde(borrow)] VarZeroVec<'a, str>,
+    #[serde(borrow)] VarZeroVec<'a, [u8]>,
+    #[serde(borrow)] Cow<'a, str>,
+);
+
+/// The `assert` function should have the body `|(stack, zero)| assert_eq!(stack, &U::zero_from(&zero))`
+///
+/// We cannot do this internally because we technically need a different `U` with a shorter lifetime here
+/// which would require some gnarly lifetime bounds and perhaps a Yoke dependency. This is just a test, so it's
+/// not important to get this 100% perfect
+fn assert_zerovec<T, U, F>(slice: &[U], assert: F)
+where
+    T: ule::VarULE + ?Sized + serde::Serialize,
+    U: ule::EncodeAsVarULE<T> + serde::Serialize,
+    F: Fn(&U, &T),
+    for<'a> Box<T>: serde::Deserialize<'a>,
+    for<'a> &'a T: serde::Deserialize<'a>,
+    T: PartialEq + Debug,
+{
+    let varzerovec: VarZeroVec<T> = slice.into();
+
+    assert_eq!(varzerovec.len(), slice.len());
+
+    for (stack, zero) in slice.iter().zip(varzerovec.iter()) {
+        assert(stack, zero)
+    }
+
+    let bytes = varzerovec.as_bytes();
+    let name = std::any::type_name::<T>();
+    let reparsed: VarZeroVec<T> = VarZeroVec::parse_bytes(bytes)
+        .unwrap_or_else(|_| panic!("Parsing VarZeroVec<{name}> should succeed"));
+
+    assert_eq!(reparsed.len(), slice.len());
+
+    for (stack, zero) in slice.iter().zip(reparsed.iter()) {
+        assert(stack, zero)
+    }
+
+    let bincode = bincode::serialize(&varzerovec).unwrap();
+    let deserialized: VarZeroVec<T> = bincode::deserialize(&bincode).unwrap();
+
+    for (stack, zero) in slice.iter().zip(deserialized.iter()) {
+        assert(stack, zero)
+    }
+
+    let json_slice = serde_json::to_string(&slice).unwrap();
+    let json_vzv = serde_json::to_string(&varzerovec).unwrap();
+
+    assert_eq!(json_slice, json_vzv);
+
+    let deserialized: VarZeroVec<T> = serde_json::from_str(&json_vzv).unwrap();
+
+    for (stack, zero) in slice.iter().zip(deserialized.iter()) {
+        assert(stack, zero)
+    }
+
+    if let Some(first) = varzerovec.get(0) {
+        let bincode = bincode::serialize(first).unwrap();
+        let deserialized: &T = bincode::deserialize(&bincode).unwrap();
+        let deserialized_box: Box<T> = bincode::deserialize(&bincode).unwrap();
+        assert_eq!(
+            first, deserialized,
+            "Single element roundtrips with bincode"
+        );
+        assert_eq!(
+            first, &*deserialized_box,
+            "Single element roundtrips with bincode"
+        );
+
+        let json = serde_json::to_string(first).unwrap();
+        let deserialized: Box<T> = serde_json::from_str(&json).unwrap();
+        assert_eq!(
+            first, &*deserialized,
+            "Single element roundtrips with serde"
+        );
+    }
+}
+
+fn main() {
+    assert_zerovec::<VarStructULE, VarStruct, _>(TEST_VARSTRUCTS, |stack, zero| {
+        assert_eq!(stack, &VarStruct::zero_from(zero))
+    });
+
+    assert_zerovec::<MultiFieldStructULE, MultiFieldStruct, _>(TEST_MULTIFIELD, |stack, zero| {
+        assert_eq!(stack, &MultiFieldStruct::zero_from(zero))
+    });
+
+    assert_zerovec::<MultiFieldConsecutiveStructULE, MultiFieldConsecutiveStruct, _>(
+        TEST_MULTICONSECUTIVE,
+        |stack, zero| assert_eq!(stack, &MultiFieldConsecutiveStruct::zero_from(zero)),
+    );
+
+    let vartuples = &[
+        VarTupleStruct(101, 'ø', TEST_STRINGS1.into()),
+        VarTupleStruct(9499, '⸘', TEST_STRINGS2.into()),
+        VarTupleStruct(3478, '月', TEST_STRINGS3.into()),
+    ];
+    assert_zerovec::<VarTupleStructULE, VarTupleStruct, _>(vartuples, |stack, zero| {
+        assert_eq!(stack, &VarTupleStruct::zero_from(zero))
+    });
+
+    // Test that all fields are accessible on a type using multifieldule
+    let multi_ule = ule::encode_varule_to_box(&TEST_MULTIFIELD[0]);
+    assert_eq!(multi_ule.a, TEST_MULTIFIELD[0].a.to_unaligned());
+    assert_eq!(multi_ule.b, TEST_MULTIFIELD[0].b.to_unaligned());
+    assert_eq!(multi_ule.c(), TEST_MULTIFIELD[0].c);
+    assert_eq!(multi_ule.d, TEST_MULTIFIELD[0].d);
+    assert_eq!(multi_ule.e(), TEST_MULTIFIELD[0].e);
+    assert_eq!(multi_ule.f, TEST_MULTIFIELD[0].f.to_unaligned());
+}
+
+const TEST_VARSTRUCTS: &[VarStruct<'static>] = &[
+    VarStruct {
+        a: 101,
+        b: 'ø',
+        c: Cow::Borrowed("testīng strīng"),
+    },
+    VarStruct {
+        a: 9499,
+        b: '⸘',
+        c: Cow::Borrowed("a diﬀərənt ştring"),
+    },
+    VarStruct {
+        a: 3478,
+        b: '月',
+        c: Cow::Borrowed("好多嘅 string"),
+    },
+];
+
+const TEST_STRINGS1: &[&str] = &["foo", "bar", "baz"];
+const TEST_STRINGS2: &[&str] = &["hellø", "wørłd"];
+const TEST_STRINGS3: &[&str] = &["łořem", "ɨpsu₥"];
+
+const TEST_MULTIFIELD: &[MultiFieldStruct<'static>] = &[
+    MultiFieldStruct {
+        a: 101,
+        b: 'ø',
+        c: Cow::Borrowed("testīng strīng"),
+        d: 8,
+        e: Cow::Borrowed("another testīng strīng"),
+        f: 'å',
+    },
+    MultiFieldStruct {
+        a: 9499,
+        b: '⸘',
+        c: Cow::Borrowed("a diﬀərənt ştring"),
+        d: 120,
+        e: Cow::Borrowed("a diﬀərənt testing ştring"),
+        f: 'ł',
+    },
+    MultiFieldStruct {
+        a: 3478,
+        b: '月',
+        c: Cow::Borrowed("好多嘅 string"),
+        d: 89,
+        e: Cow::Borrowed("many 好多嘅 string"),
+        f: 'ə',
+    },
+];
+
+const TEST_MULTICONSECUTIVE: &[MultiFieldConsecutiveStruct<'static>] =
+    &[MultiFieldConsecutiveStruct {
+        a: Cow::Borrowed("one"),
+        b: Cow::Borrowed("2"),
+        c: Cow::Borrowed("three"),
+        d: Cow::Borrowed("four"),
+    }];
diff --git a/vendor/zerovec-derive/src/lib.rs b/vendor/zerovec-derive/src/lib.rs
new file mode 100644
index 00000000..9c300714
--- /dev/null
+++ b/vendor/zerovec-derive/src/lib.rs
@@ -0,0 +1,43 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Proc macros for generating `ULE`, `VarULE` impls and types for the `zerovec` crate
+
+use proc_macro::TokenStream;
+use syn::{parse_macro_input, DeriveInput, Ident};
+mod make_ule;
+mod make_varule;
+pub(crate) mod ule;
+mod utils;
+mod varule;
+
+/// Full docs for this proc macro can be found on the [`zerovec`](docs.rs/zerovec) crate.
+#[proc_macro_derive(ULE)]
+pub fn ule_derive(input: TokenStream) -> TokenStream {
+    let input = parse_macro_input!(input as DeriveInput);
+    TokenStream::from(ule::derive_impl(&input))
+}
+
+/// Full docs for this proc macro can be found on the [`zerovec`](docs.rs/zerovec) crate.
+#[proc_macro_derive(VarULE)]
+pub fn varule_derive(input: TokenStream) -> TokenStream {
+    let input = parse_macro_input!(input as DeriveInput);
+    TokenStream::from(varule::derive_impl(&input, None))
+}
+
+/// Full docs for this proc macro can be found on the [`zerovec`](docs.rs/zerovec) crate.
+#[proc_macro_attribute]
+pub fn make_ule(attr: TokenStream, item: TokenStream) -> TokenStream {
+    let input = parse_macro_input!(item as DeriveInput);
+    let attr = parse_macro_input!(attr as Ident);
+    TokenStream::from(make_ule::make_ule_impl(attr, input))
+}
+
+/// Full docs for this proc macro can be found on the [`zerovec`](docs.rs/zerovec) crate.
+#[proc_macro_attribute]
+pub fn make_varule(attr: TokenStream, item: TokenStream) -> TokenStream {
+    let input = parse_macro_input!(item as DeriveInput);
+    let attr = parse_macro_input!(attr as Ident);
+    TokenStream::from(make_varule::make_varule_impl(attr, input))
+}
diff --git a/vendor/zerovec-derive/src/make_ule.rs b/vendor/zerovec-derive/src/make_ule.rs
new file mode 100644
index 00000000..a39bbb20
--- /dev/null
+++ b/vendor/zerovec-derive/src/make_ule.rs
@@ -0,0 +1,373 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use proc_macro2::TokenStream as TokenStream2;
+use quote::quote;
+
+use crate::utils::{self, FieldInfo, ZeroVecAttrs};
+use std::collections::HashSet;
+use syn::spanned::Spanned;
+use syn::{parse_quote, Data, DataEnum, DataStruct, DeriveInput, Error, Expr, Fields, Ident, Lit};
+
+pub fn make_ule_impl(ule_name: Ident, mut input: DeriveInput) -> TokenStream2 {
+    if input.generics.type_params().next().is_some()
+        || input.generics.lifetimes().next().is_some()
+        || input.generics.const_params().next().is_some()
+    {
+        return Error::new(
+            input.generics.span(),
+            "#[make_ule] must be applied to a struct without any generics",
+        )
+        .to_compile_error();
+    }
+    let sp = input.span();
+    let attrs = match utils::extract_attributes_common(&mut input.attrs, sp, false) {
+        Ok(val) => val,
+        Err(e) => return e.to_compile_error(),
+    };
+
+    let name = &input.ident;
+
+    let ule_stuff = match input.data {
+        Data::Struct(ref s) => make_ule_struct_impl(name, &ule_name, &input, s, &attrs),
+        Data::Enum(ref e) => make_ule_enum_impl(name, &ule_name, &input, e, &attrs),
+        _ => {
+            return Error::new(input.span(), "#[make_ule] must be applied to a struct")
+                .to_compile_error();
+        }
+    };
+
+    let zmkv = if attrs.skip_kv {
+        quote!()
+    } else {
+        quote!(
+            impl<'a> zerovec::maps::ZeroMapKV<'a> for #name {
+                type Container = zerovec::ZeroVec<'a, #name>;
+                type Slice = zerovec::ZeroSlice<#name>;
+                type GetType = #ule_name;
+                type OwnedType = #name;
+            }
+        )
+    };
+
+    let maybe_debug = if attrs.debug {
+        quote!(
+            impl core::fmt::Debug for #ule_name {
+                fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
+                    let this = <#name as zerovec::ule::AsULE>::from_unaligned(*self);
+                    <#name as core::fmt::Debug>::fmt(&this, f)
+                }
+            }
+        )
+    } else {
+        quote!()
+    };
+
+    quote!(
+        #input
+
+        #ule_stuff
+
+        #maybe_debug
+
+        #zmkv
+    )
+}
+
+fn make_ule_enum_impl(
+    name: &Ident,
+    ule_name: &Ident,
+    input: &DeriveInput,
+    enu: &DataEnum,
+    attrs: &ZeroVecAttrs,
+) -> TokenStream2 {
+    // We could support more int reprs in the future if needed
+    if !utils::ReprInfo::compute(&input.attrs).u8 {
+        return Error::new(
+            input.span(),
+            "#[make_ule] can only be applied to #[repr(u8)] enums",
+        )
+        .to_compile_error();
+    }
+
+    if enu.variants.is_empty() {
+        return Error::new(input.span(), "#[make_ule] cannot be applied to empty enums")
+            .to_compile_error();
+    }
+
+    // the smallest discriminant seen
+    let mut min = None;
+    // the largest discriminant seen
+    let mut max = None;
+    // Discriminants that have not been found in series (we might find them later)
+    let mut not_found = HashSet::new();
+
+    for (i, variant) in enu.variants.iter().enumerate() {
+        if !matches!(variant.fields, Fields::Unit) {
+            // This can be supported in the future, see zerovec/design_doc.md
+            return Error::new(
+                variant.span(),
+                "#[make_ule] can only be applied to enums with dataless variants",
+            )
+            .to_compile_error();
+        }
+
+        if let Some((_, ref discr)) = variant.discriminant {
+            if let Some(n) = get_expr_int(discr) {
+                let n = match u8::try_from(n) {
+                    Ok(n) => n,
+                    Err(_) => {
+                        return Error::new(
+                            variant.span(),
+                            "#[make_ule] only supports discriminants from 0 to 255",
+                        )
+                        .to_compile_error();
+                    }
+                };
+                match min {
+                    Some(x) if x < n => {}
+                    _ => {
+                        min = Some(n);
+                    }
+                }
+                match max {
+                    Some(x) if x >= n => {}
+                    _ => {
+                        let old_max = max.unwrap_or(0u8);
+                        for missing in (old_max + 1)..n {
+                            not_found.insert(missing);
+                        }
+                        max = Some(n);
+                    }
+                }
+
+                not_found.remove(&n);
+
+                // We require explicit discriminants so that it is clear that reordering
+                // fields would be a breaking change. Furthermore, using explicit discriminants helps ensure that
+                // platform-specific C ABI choices do not matter.
+                // We could potentially add in explicit discriminants on the user's behalf in the future, or support
+                // more complicated sets of explicit discriminant values.
+                if n as usize != i {}
+            } else {
+                return Error::new(
+                    discr.span(),
+                    "#[make_ule] must be applied to enums with explicit integer discriminants",
+                )
+                .to_compile_error();
+            }
+        } else {
+            return Error::new(
+                variant.span(),
+                "#[make_ule] must be applied to enums with explicit discriminants",
+            )
+            .to_compile_error();
+        }
+    }
+
+    let not_found = not_found.iter().collect::<Vec<_>>();
+    let min = min.unwrap();
+    let max = max.unwrap();
+
+    if not_found.len() > min as usize {
+        return Error::new(input.span(), format!("#[make_ule] must be applied to enums with discriminants \
+                                                  filling the range from a minimum to a maximum; could not find {not_found:?}"))
+            .to_compile_error();
+    }
+
+    let maybe_ord_derives = if attrs.skip_ord {
+        quote!()
+    } else {
+        quote!(#[derive(Ord, PartialOrd)])
+    };
+
+    let vis = &input.vis;
+
+    let doc = format!("[`ULE`](zerovec::ule::ULE) type for {name}");
+
+    // Safety (based on the safety checklist on the ULE trait):
+    //  1. ULE type does not include any uninitialized or padding bytes.
+    //     (achieved by `#[repr(transparent)]` on a type that satisfies this invariant
+    //  2. ULE type is aligned to 1 byte.
+    //     (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+    //  3. The impl of validate_bytes() returns an error if any byte is not valid.
+    //     (Guarantees that the byte is in range of the corresponding enum.)
+    //  4. The impl of validate_bytes() returns an error if there are extra bytes.
+    //     (This does not happen since we are backed by 1 byte.)
+    //  5. The other ULE methods use the default impl.
+    //  6. ULE type byte equality is semantic equality
+    quote!(
+        #[repr(transparent)]
+        #[derive(Copy, Clone, PartialEq, Eq)]
+        #maybe_ord_derives
+        #[doc = #doc]
+        #vis struct #ule_name(u8);
+
+        unsafe impl zerovec::ule::ULE for #ule_name {
+            #[inline]
+            fn validate_bytes(bytes: &[u8]) -> Result<(), zerovec::ule::UleError> {
+                for byte in bytes {
+                    if *byte < #min || *byte > #max {
+                        return Err(zerovec::ule::UleError::parse::<Self>())
+                    }
+                }
+                Ok(())
+            }
+        }
+
+        impl zerovec::ule::AsULE for #name {
+            type ULE = #ule_name;
+
+            fn to_unaligned(self) -> Self::ULE {
+                // safety: the enum is repr(u8) and can be cast to a u8
+                unsafe {
+                    ::core::mem::transmute(self)
+                }
+            }
+
+            fn from_unaligned(other: Self::ULE) -> Self {
+                // safety: the enum is repr(u8) and can be cast from a u8,
+                // and `#ule_name` guarantees a valid value for this enum.
+                unsafe {
+                    ::core::mem::transmute(other)
+                }
+            }
+        }
+
+        impl #name {
+            /// Attempt to construct the value from its corresponding integer,
+            /// returning `None` if not possible
+            pub(crate) fn new_from_u8(value: u8) -> Option<Self> {
+                if value <= #max {
+                    unsafe {
+                        Some(::core::mem::transmute(value))
+                    }
+                } else {
+                    None
+                }
+            }
+        }
+    )
+}
+
+fn get_expr_int(e: &Expr) -> Option<u64> {
+    if let Ok(Lit::Int(ref i)) = syn::parse2(quote!(#e)) {
+        return i.base10_parse().ok();
+    }
+
+    None
+}
+
+fn make_ule_struct_impl(
+    name: &Ident,
+    ule_name: &Ident,
+    input: &DeriveInput,
+    struc: &DataStruct,
+    attrs: &ZeroVecAttrs,
+) -> TokenStream2 {
+    if struc.fields.iter().next().is_none() {
+        return Error::new(
+            input.span(),
+            "#[make_ule] must be applied to a non-empty struct",
+        )
+        .to_compile_error();
+    }
+    let sized_fields = FieldInfo::make_list(struc.fields.iter());
+    let field_inits = crate::ule::make_ule_fields(&sized_fields);
+    let field_inits = utils::wrap_field_inits(&field_inits, &struc.fields);
+
+    let semi = utils::semi_for(&struc.fields);
+    let repr_attr = utils::repr_for(&struc.fields);
+    let vis = &input.vis;
+
+    let doc = format!("[`ULE`](zerovec::ule::ULE) type for [`{name}`]");
+
+    let ule_struct: DeriveInput = parse_quote!(
+        #[repr(#repr_attr)]
+        #[derive(Copy, Clone, PartialEq, Eq)]
+        #[doc = #doc]
+        // We suppress the `missing_docs` lint for the fields of the struct.
+        #[allow(missing_docs)]
+        #vis struct #ule_name #field_inits #semi
+    );
+    let derived = crate::ule::derive_impl(&ule_struct);
+
+    let mut as_ule_conversions = vec![];
+    let mut from_ule_conversions = vec![];
+
+    for (i, field) in struc.fields.iter().enumerate() {
+        let ty = &field.ty;
+        let i = syn::Index::from(i);
+        if let Some(ref ident) = field.ident {
+            as_ule_conversions
+                .push(quote!(#ident: <#ty as zerovec::ule::AsULE>::to_unaligned(self.#ident)));
+            from_ule_conversions.push(
+                quote!(#ident: <#ty as zerovec::ule::AsULE>::from_unaligned(unaligned.#ident)),
+            );
+        } else {
+            as_ule_conversions.push(quote!(<#ty as zerovec::ule::AsULE>::to_unaligned(self.#i)));
+            from_ule_conversions
+                .push(quote!(<#ty as zerovec::ule::AsULE>::from_unaligned(unaligned.#i)));
+        };
+    }
+
+    let as_ule_conversions = utils::wrap_field_inits(&as_ule_conversions, &struc.fields);
+    let from_ule_conversions = utils::wrap_field_inits(&from_ule_conversions, &struc.fields);
+    let asule_impl = quote!(
+        impl zerovec::ule::AsULE for #name {
+            type ULE = #ule_name;
+            fn to_unaligned(self) -> Self::ULE {
+                #ule_name #as_ule_conversions
+            }
+            fn from_unaligned(unaligned: Self::ULE) -> Self {
+                Self #from_ule_conversions
+            }
+        }
+    );
+
+    let maybe_ord_impls = if attrs.skip_ord {
+        quote!()
+    } else {
+        quote!(
+            impl core::cmp::PartialOrd for #ule_name {
+                fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
+                    Some(self.cmp(other))
+                }
+            }
+
+            impl core::cmp::Ord for #ule_name {
+                fn cmp(&self, other: &Self) -> core::cmp::Ordering {
+                    let this = <#name as zerovec::ule::AsULE>::from_unaligned(*self);
+                    let other = <#name as zerovec::ule::AsULE>::from_unaligned(*other);
+                    <#name as core::cmp::Ord>::cmp(&this, &other)
+                }
+            }
+        )
+    };
+
+    let maybe_hash = if attrs.hash {
+        quote!(
+            #[allow(clippy::derive_hash_xor_eq)]
+            impl core::hash::Hash for #ule_name {
+                fn hash<H>(&self, state: &mut H) where H: core::hash::Hasher {
+                    state.write(<#ule_name as zerovec::ule::ULE>::slice_as_bytes(&[*self]));
+                }
+            }
+        )
+    } else {
+        quote!()
+    };
+
+    quote!(
+        #asule_impl
+
+        #ule_struct
+
+        #derived
+
+        #maybe_ord_impls
+
+        #maybe_hash
+    )
+}
diff --git a/vendor/zerovec-derive/src/make_varule.rs b/vendor/zerovec-derive/src/make_varule.rs
new file mode 100644
index 00000000..60dd789c
--- /dev/null
+++ b/vendor/zerovec-derive/src/make_varule.rs
@@ -0,0 +1,887 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::utils::{self, FieldInfo};
+use proc_macro2::Span;
+use proc_macro2::TokenStream as TokenStream2;
+use quote::{quote, ToTokens};
+use syn::spanned::Spanned;
+use syn::{
+    parse_quote, Data, DeriveInput, Error, Field, Fields, GenericArgument, Ident, Lifetime,
+    PathArguments, Type, TypePath,
+};
+
+pub fn make_varule_impl(ule_name: Ident, mut input: DeriveInput) -> TokenStream2 {
+    if input.generics.type_params().next().is_some()
+        || input.generics.const_params().next().is_some()
+        || input.generics.lifetimes().count() > 1
+    {
+        return Error::new(
+            input.generics.span(),
+            "#[make_varule] must be applied to a struct without any type or const parameters and at most one lifetime",
+        )
+        .to_compile_error();
+    }
+
+    let sp = input.span();
+    let attrs = match utils::extract_attributes_common(&mut input.attrs, sp, true) {
+        Ok(val) => val,
+        Err(e) => return e.to_compile_error(),
+    };
+
+    let lt = input.generics.lifetimes().next();
+
+    if let Some(lt) = lt {
+        if lt.colon_token.is_some() || !lt.bounds.is_empty() {
+            return Error::new(
+                input.generics.span(),
+                "#[make_varule] must be applied to a struct without lifetime bounds",
+            )
+            .to_compile_error();
+        }
+    }
+
+    let lt = lt.map(|l| &l.lifetime);
+
+    let name = &input.ident;
+    let input_span = input.span();
+
+    let fields = match input.data {
+        Data::Struct(ref mut s) => &mut s.fields,
+        _ => {
+            return Error::new(input.span(), "#[make_varule] must be applied to a struct")
+                .to_compile_error();
+        }
+    };
+
+    if fields.is_empty() {
+        return Error::new(
+            input.span(),
+            "#[make_varule] must be applied to a struct with at least one field",
+        )
+        .to_compile_error();
+    }
+
+    let mut sized_fields = vec![];
+    let mut unsized_fields = vec![];
+
+    let mut custom_varule_idents = vec![];
+
+    for field in fields.iter_mut() {
+        match utils::extract_field_attributes(&mut field.attrs) {
+            Ok(i) => custom_varule_idents.push(i),
+            Err(e) => return e.to_compile_error(),
+        }
+    }
+
+    for (i, field) in fields.iter().enumerate() {
+        match UnsizedField::new(field, i, custom_varule_idents[i].clone()) {
+            Ok(o) => unsized_fields.push(o),
+            Err(_) => sized_fields.push(FieldInfo::new_for_field(field, i)),
+        }
+    }
+
+    if unsized_fields.is_empty() {
+        let last_field_index = fields.len() - 1;
+        let last_field = fields.iter().next_back().unwrap();
+
+        let e = UnsizedField::new(
+            last_field,
+            last_field_index,
+            custom_varule_idents[last_field_index].clone(),
+        )
+        .unwrap_err();
+        return Error::new(last_field.span(), e).to_compile_error();
+    }
+
+    if unsized_fields[0].field.index != fields.len() - unsized_fields.len()
+        && unsized_fields[0].field.field.ident.is_none()
+    {
+        return Error::new(
+            unsized_fields.first().unwrap().field.field.span(),
+            "#[make_varule] requires its unsized fields to be at the end for tuple structs",
+        )
+        .to_compile_error();
+    }
+
+    let unsized_field_info = UnsizedFields::new(unsized_fields, attrs.vzv_format);
+
+    let mut field_inits = crate::ule::make_ule_fields(&sized_fields);
+    let last_field_ule = unsized_field_info.varule_ty();
+
+    let setter = unsized_field_info.varule_setter();
+    let vis = &unsized_field_info.varule_vis();
+    field_inits.push(quote!(#vis #setter #last_field_ule));
+
+    let semi = utils::semi_for(fields);
+    let repr_attr = utils::repr_for(fields);
+    let field_inits = utils::wrap_field_inits(&field_inits, fields);
+    let vis = &input.vis;
+
+    let doc = format!(
+        "[`VarULE`](zerovec::ule::VarULE) type for [`{name}`]. See [`{name}`] for documentation."
+    );
+    let varule_struct: DeriveInput = parse_quote!(
+        #[repr(#repr_attr)]
+        #[doc = #doc]
+        #[allow(missing_docs)]
+        #vis struct #ule_name #field_inits #semi
+    );
+
+    let derived = crate::varule::derive_impl(&varule_struct, unsized_field_info.varule_validator());
+
+    let maybe_lt_bound = lt.as_ref().map(|lt| quote!(<#lt>));
+
+    let encode_impl = make_encode_impl(
+        &sized_fields,
+        &unsized_field_info,
+        name,
+        &ule_name,
+        &maybe_lt_bound,
+    );
+
+    let zf_and_from_impl = make_zf_and_from_impl(
+        &sized_fields,
+        &unsized_field_info,
+        fields,
+        name,
+        &ule_name,
+        lt,
+        input_span,
+        attrs.skip_from,
+    );
+
+    let eq_impl = quote!(
+        impl core::cmp::PartialEq for #ule_name {
+            fn eq(&self, other: &Self) -> bool {
+                // The VarULE invariants allow us to assume that equality is byte equality
+                // in non-safety-critical contexts
+                <Self as zerovec::ule::VarULE>::as_bytes(&self)
+                == <Self as zerovec::ule::VarULE>::as_bytes(&other)
+            }
+        }
+
+        impl core::cmp::Eq for #ule_name {}
+    );
+
+    let zerofrom_fq_path =
+        quote!(<#name as zerovec::__zerovec_internal_reexport::ZeroFrom<#ule_name>>);
+
+    let maybe_ord_impls = if attrs.skip_ord {
+        quote!()
+    } else {
+        quote!(
+            impl core::cmp::PartialOrd for #ule_name {
+                fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
+                    Some(self.cmp(other))
+                }
+            }
+
+            impl core::cmp::Ord for #ule_name {
+                fn cmp(&self, other: &Self) -> core::cmp::Ordering {
+                    let this = #zerofrom_fq_path::zero_from(self);
+                    let other = #zerofrom_fq_path::zero_from(other);
+                    <#name as core::cmp::Ord>::cmp(&this, &other)
+                }
+            }
+        )
+    };
+
+    let maybe_debug = if attrs.debug {
+        quote!(
+            impl core::fmt::Debug for #ule_name {
+                fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
+                    let this = #zerofrom_fq_path::zero_from(self);
+                    <#name as core::fmt::Debug>::fmt(&this, f)
+                }
+            }
+        )
+    } else {
+        quote!()
+    };
+
+    let maybe_toowned = if !attrs.skip_toowned {
+        quote!(
+            impl zerovec::__zerovec_internal_reexport::borrow::ToOwned for #ule_name {
+                type Owned = zerovec::__zerovec_internal_reexport::boxed::Box<Self>;
+                fn to_owned(&self) -> Self::Owned {
+                    zerovec::ule::encode_varule_to_box(self)
+                }
+            }
+        )
+    } else {
+        quote!()
+    };
+
+    let zmkv = if attrs.skip_kv {
+        quote!()
+    } else {
+        quote!(
+            impl<'a> zerovec::maps::ZeroMapKV<'a> for #ule_name {
+                type Container = zerovec::VarZeroVec<'a, #ule_name>;
+                type Slice = zerovec::VarZeroSlice<#ule_name>;
+                type GetType = #ule_name;
+                type OwnedType = zerovec::__zerovec_internal_reexport::boxed::Box<#ule_name>;
+            }
+        )
+    };
+
+    let serde_path = quote!(zerovec::__zerovec_internal_reexport::serde);
+
+    let maybe_ser = if attrs.serialize {
+        quote!(
+            impl #serde_path::Serialize for #ule_name {
+                fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: #serde_path::Serializer {
+                    if serializer.is_human_readable() {
+                        let this = #zerofrom_fq_path::zero_from(self);
+                        <#name as #serde_path::Serialize>::serialize(&this, serializer)
+                    } else {
+                        serializer.serialize_bytes(zerovec::ule::VarULE::as_bytes(self))
+                    }
+                }
+            }
+        )
+    } else {
+        quote!()
+    };
+
+    let deserialize_error = format!("&{ule_name} can only deserialize in zero-copy ways");
+
+    let maybe_de = if attrs.deserialize {
+        quote!(
+            impl<'de> #serde_path::Deserialize<'de> for zerovec::__zerovec_internal_reexport::boxed::Box<#ule_name> {
+                fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: #serde_path::Deserializer<'de> {
+                    if deserializer.is_human_readable() {
+                        let this = <#name as #serde_path::Deserialize>::deserialize(deserializer)?;
+                        Ok(zerovec::ule::encode_varule_to_box(&this))
+                    } else {
+                        // This branch should usually not be hit, since Cow-like use cases will hit the Deserialize impl for &'a ULEType instead.
+                        let deserialized = <& #ule_name>::deserialize(deserializer)?;
+                        Ok(zerovec::ule::VarULE::to_boxed(deserialized))
+                    }
+                }
+            }
+            impl<'a, 'de: 'a> #serde_path::Deserialize<'de> for &'a #ule_name {
+                fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where D: #serde_path::Deserializer<'de> {
+                    if !deserializer.is_human_readable() {
+                        let bytes = <&[u8]>::deserialize(deserializer)?;
+                        <#ule_name as zerovec::ule::VarULE>::parse_bytes(bytes).map_err(#serde_path::de::Error::custom)
+                    } else {
+                        Err(#serde_path::de::Error::custom(#deserialize_error))
+                    }
+                }
+            }
+        )
+    } else {
+        quote!()
+    };
+
+    let maybe_hash = if attrs.hash {
+        quote!(
+            #[allow(clippy::derive_hash_xor_eq)]
+            impl core::hash::Hash for #ule_name {
+                fn hash<H>(&self, state: &mut H) where H: core::hash::Hasher {
+                    state.write(<#ule_name as zerovec::ule::VarULE>::as_bytes(&self));
+                }
+            }
+        )
+    } else {
+        quote!()
+    };
+
+    let maybe_multi_getters = if let Some(getters) = unsized_field_info.maybe_multi_getters() {
+        quote! {
+            impl #ule_name {
+                #getters
+            }
+        }
+    } else {
+        quote!()
+    };
+
+    quote!(
+        #input
+
+        #varule_struct
+
+        #maybe_multi_getters
+
+        #encode_impl
+
+        #zf_and_from_impl
+
+        #derived
+
+        #maybe_ord_impls
+
+        #eq_impl
+
+        #zmkv
+
+        #maybe_ser
+
+        #maybe_de
+
+        #maybe_debug
+
+        #maybe_toowned
+
+        #maybe_hash
+    )
+}
+
+#[allow(clippy::too_many_arguments)] // Internal function. Could refactor later to use some kind of context type.
+fn make_zf_and_from_impl(
+    sized_fields: &[FieldInfo],
+    unsized_field_info: &UnsizedFields,
+    fields: &Fields,
+    name: &Ident,
+    ule_name: &Ident,
+    maybe_lt: Option<&Lifetime>,
+    span: Span,
+    skip_from: bool,
+) -> TokenStream2 {
+    if !unsized_field_info.has_zf() {
+        return quote!();
+    }
+
+    let lt = if let Some(ref lt) = maybe_lt {
+        lt
+    } else {
+        return Error::new(
+            span,
+            "Can only generate ZeroFrom impls for types with lifetimes",
+        )
+        .to_compile_error();
+    };
+
+    let mut field_inits = sized_fields
+        .iter()
+        .map(|f| {
+            let ty = &f.field.ty;
+            let accessor = &f.accessor;
+            let setter = f.setter();
+            quote!(#setter <#ty as zerovec::ule::AsULE>::from_unaligned(other.#accessor))
+        })
+        .collect::<Vec<_>>();
+
+    unsized_field_info.push_zf_setters(lt, &mut field_inits);
+
+    let field_inits = utils::wrap_field_inits(&field_inits, fields);
+    let zerofrom_trait = quote!(zerovec::__zerovec_internal_reexport::ZeroFrom);
+
+    let maybe_from = if skip_from {
+        quote!()
+    } else {
+        quote!(
+            impl<#lt> From<&#lt #ule_name> for #name<#lt> {
+                fn from(other: &#lt #ule_name) -> Self {
+                    <Self as #zerofrom_trait<#lt, #ule_name>>::zero_from(other)
+                }
+            }
+        )
+    };
+    quote!(
+        impl <#lt> #zerofrom_trait <#lt, #ule_name> for #name <#lt> {
+            fn zero_from(other: &#lt #ule_name) -> Self {
+                Self #field_inits
+            }
+        }
+
+        #maybe_from
+    )
+}
+
+fn make_encode_impl(
+    sized_fields: &[FieldInfo],
+    unsized_field_info: &UnsizedFields,
+    name: &Ident,
+    ule_name: &Ident,
+    maybe_lt_bound: &Option<TokenStream2>,
+) -> TokenStream2 {
+    let mut lengths = vec![];
+
+    for field in sized_fields {
+        let ty = &field.field.ty;
+        lengths.push(quote!(::core::mem::size_of::<<#ty as zerovec::ule::AsULE>::ULE>()));
+    }
+
+    let (encoders, remaining_offset) = utils::generate_per_field_offsets(
+        sized_fields,
+        true,
+        |field, prev_offset_ident, size_ident| {
+            let ty = &field.field.ty;
+            let accessor = &field.accessor;
+            quote!(
+                // generate_per_field_offsets produces valid indices,
+                // and we don't care about panics in Encode impls
+                #[allow(clippy::indexing_slicing)]
+                let out = &mut dst[#prev_offset_ident .. #prev_offset_ident + #size_ident];
+                let unaligned = zerovec::ule::AsULE::to_unaligned(self.#accessor);
+                let unaligned_slice = &[unaligned];
+                let src = <<#ty as zerovec::ule::AsULE>::ULE as zerovec::ule::ULE>::slice_as_bytes(unaligned_slice);
+                out.copy_from_slice(src);
+            )
+        },
+    );
+
+    let last_encode_len = unsized_field_info.encode_len();
+    let last_encode_write = unsized_field_info.encode_write(quote!(out));
+    quote!(
+        unsafe impl #maybe_lt_bound zerovec::ule::EncodeAsVarULE<#ule_name> for #name #maybe_lt_bound {
+            // Safety: unimplemented as the other two are implemented
+            fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+                unreachable!("other two methods implemented")
+            }
+
+            // Safety: returns the total length of the ULE form by adding up the lengths of each element's ULE forms
+            fn encode_var_ule_len(&self) -> usize {
+                #(#lengths +)* #last_encode_len
+            }
+
+            // Safety: converts each element to ULE form and writes them in sequence
+            fn encode_var_ule_write(&self, mut dst: &mut [u8]) {
+                debug_assert_eq!(self.encode_var_ule_len(), dst.len());
+                #encoders
+
+
+                // generate_per_field_offsets produces valid remainders,
+                // and we don't care about panics in Encode impls
+                #[allow(clippy::indexing_slicing)]
+                let out = &mut dst[#remaining_offset..];
+                #last_encode_write
+            }
+        }
+
+        // This second impl exists to allow for using EncodeAsVarULE without cloning
+        //
+        // A blanket impl cannot exist without coherence issues
+        unsafe impl #maybe_lt_bound zerovec::ule::EncodeAsVarULE<#ule_name> for &'_ #name #maybe_lt_bound {
+            // Safety: unimplemented as the other two are implemented
+            fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+                unreachable!("other two methods implemented")
+            }
+
+            // Safety: returns the total length of the ULE form by adding up the lengths of each element's ULE forms
+            fn encode_var_ule_len(&self) -> usize {
+                (**self).encode_var_ule_len()
+            }
+
+            // Safety: converts each element to ULE form and writes them in sequence
+            fn encode_var_ule_write(&self, mut dst: &mut [u8]) {
+                (**self).encode_var_ule_write(dst)
+            }
+        }
+    )
+}
+
+/// Represents a VarULE-compatible type that would typically
+/// be found behind a `Cow<'a, _>` in the last field, and is represented
+/// roughly the same in owned and borrowed versions
+#[derive(Copy, Clone, Debug)]
+enum OwnULETy<'a> {
+    /// [T] where T: AsULE<ULE = Self>
+    Slice(&'a Type),
+    /// str
+    Str,
+}
+
+/// Represents the type of the last field of the struct
+#[derive(Clone, Debug)]
+enum UnsizedFieldKind<'a> {
+    Cow(OwnULETy<'a>),
+    VarZeroCow(OwnULETy<'a>),
+    ZeroVec(&'a Type),
+    VarZeroVec(&'a Type),
+    /// Custom VarULE type, and the identifier corresponding to the VarULE type
+    Custom(&'a TypePath, Ident),
+
+    // Generally you should be using the above ones for maximum zero-copy, but these will still work
+    Growable(OwnULETy<'a>),
+    Boxed(OwnULETy<'a>),
+    Ref(OwnULETy<'a>),
+}
+
+#[derive(Clone, Debug)]
+struct UnsizedField<'a> {
+    kind: UnsizedFieldKind<'a>,
+    field: FieldInfo<'a>,
+}
+
+struct UnsizedFields<'a> {
+    fields: Vec<UnsizedField<'a>>,
+    format_param: TokenStream2,
+}
+
+impl<'a> UnsizedFields<'a> {
+    /// The format_param is an optional tokenstream describing a VZVFormat argument needed by MultiFieldsULE
+    fn new(fields: Vec<UnsizedField<'a>>, format_param: Option<TokenStream2>) -> Self {
+        assert!(!fields.is_empty(), "Must have at least one unsized field");
+
+        let format_param = format_param.unwrap_or_else(|| quote!(zerovec::vecs::Index16));
+        Self {
+            fields,
+            format_param,
+        }
+    }
+
+    // Get the corresponding VarULE type that can store all of these
+    fn varule_ty(&self) -> TokenStream2 {
+        let len = self.fields.len();
+        let format_param = &self.format_param;
+        if len == 1 {
+            self.fields[0].kind.varule_ty()
+        } else {
+            quote!(zerovec::ule::MultiFieldsULE::<#len, #format_param>)
+        }
+    }
+
+    // Get the accessor field name in the VarULE type
+    fn varule_accessor(&self) -> TokenStream2 {
+        if self.fields.len() == 1 {
+            self.fields[0].field.accessor.clone()
+        } else if self.fields[0].field.field.ident.is_some() {
+            quote!(unsized_fields)
+        } else {
+            // first unsized field
+            self.fields[0].field.accessor.clone()
+        }
+    }
+
+    // Get the setter for this type for use in struct definition/creation syntax
+    fn varule_setter(&self) -> TokenStream2 {
+        if self.fields.len() == 1 {
+            self.fields[0].field.setter()
+        } else if self.fields[0].field.field.ident.is_some() {
+            quote!(unsized_fields: )
+        } else {
+            quote!()
+        }
+    }
+
+    fn varule_vis(&self) -> TokenStream2 {
+        if self.fields.len() == 1 {
+            self.fields[0].field.field.vis.to_token_stream()
+        } else {
+            // Always private
+            quote!()
+        }
+    }
+
+    // Check if the type has a ZeroFrom impl
+    fn has_zf(&self) -> bool {
+        self.fields.iter().all(|f| f.kind.has_zf())
+    }
+
+    // Takes all unsized fields on self and encodes them into a byte slice `out`
+    fn encode_write(&self, out: TokenStream2) -> TokenStream2 {
+        let len = self.fields.len();
+        let format_param = &self.format_param;
+        if len == 1 {
+            self.fields[0].encode_func(quote!(encode_var_ule_write), quote!(#out))
+        } else {
+            let mut lengths = vec![];
+            let mut writers = vec![];
+            for (i, field) in self.fields.iter().enumerate() {
+                lengths.push(field.encode_func(quote!(encode_var_ule_len), quote!()));
+                let (encodeable_ty, encodeable) = field.encodeable_tokens();
+                let varule_ty = field.kind.varule_ty();
+                writers
+                    .push(quote!(multi.set_field_at::<#varule_ty, #encodeable_ty>(#i, #encodeable)))
+            }
+
+            quote!(
+                let lengths = [#(#lengths),*];
+                // Todo: index type should be settable by attribute
+                let mut multi = zerovec::ule::MultiFieldsULE::<#len, #format_param>::new_from_lengths_partially_initialized(lengths, #out);
+                unsafe {
+                    #(#writers;)*
+                }
+            )
+        }
+    }
+
+    // Takes all unsized fields on self and returns the length needed for encoding into a byte slice
+    fn encode_len(&self) -> TokenStream2 {
+        let len = self.fields.len();
+        let format_param = &self.format_param;
+        if len == 1 {
+            self.fields[0].encode_func(quote!(encode_var_ule_len), quote!())
+        } else {
+            let mut lengths = vec![];
+            for field in self.fields.iter() {
+                lengths.push(field.encode_func(quote!(encode_var_ule_len), quote!()));
+            }
+            // Todo: index type should be settable by attribute
+            quote!(zerovec::ule::MultiFieldsULE::<#len, #format_param>::compute_encoded_len_for([#(#lengths),*]))
+        }
+    }
+
+    /// Constructs ZeroFrom setters for each field of the stack type
+    fn push_zf_setters(&self, lt: &Lifetime, field_inits: &mut Vec<TokenStream2>) {
+        let zerofrom_trait = quote!(zerovec::__zerovec_internal_reexport::ZeroFrom);
+        if self.fields.len() == 1 {
+            let accessor = self.fields[0].field.accessor.clone();
+            let setter = self.fields[0].field.setter();
+            let last_field_ty = &self.fields[0].field.field.ty;
+            let last_field_ule_ty = self.fields[0].kind.varule_ty();
+            field_inits.push(quote!(#setter <#last_field_ty as #zerofrom_trait <#lt, #last_field_ule_ty>>::zero_from(&other.#accessor) ));
+        } else {
+            for field in self.fields.iter() {
+                let setter = field.field.setter();
+                let getter = field.field.getter();
+                let field_ty = &field.field.field.ty;
+                let field_ule_ty = field.kind.varule_ty();
+
+                field_inits.push(quote!(#setter
+                    <#field_ty as #zerofrom_trait <#lt, #field_ule_ty>>::zero_from(&other.#getter())
+                ));
+            }
+        }
+    }
+
+    fn maybe_multi_getters(&self) -> Option<TokenStream2> {
+        if self.fields.len() == 1 {
+            None
+        } else {
+            let multi_accessor = self.varule_accessor();
+            let field_getters = self.fields.iter().enumerate().map(|(i, field)| {
+                let getter = field.field.getter();
+
+                let field_ule_ty = field.kind.varule_ty();
+                let doc_name = field.field.getter_doc_name();
+                let doc = format!("Access the VarULE type behind {doc_name}");
+                quote!(
+                    #[doc = #doc]
+                    pub fn #getter<'a>(&'a self) -> &'a #field_ule_ty {
+                        unsafe {
+                            self.#multi_accessor.get_field::<#field_ule_ty>(#i)
+                        }
+                    }
+                )
+            });
+
+            Some(quote!(#(#field_getters)*))
+        }
+    }
+
+    /// In case this needs custom validation code, return it
+    ///
+    /// The code will validate a variable known as `last_field_bytes`
+    fn varule_validator(&self) -> Option<TokenStream2> {
+        let len = self.fields.len();
+        let format_param = &self.format_param;
+        if len == 1 {
+            None
+        } else {
+            let mut validators = vec![];
+            for (i, field) in self.fields.iter().enumerate() {
+                let varule_ty = field.kind.varule_ty();
+                validators.push(quote!(multi.validate_field::<#varule_ty>(#i)?;));
+            }
+
+            Some(quote!(
+                let multi = zerovec::ule::MultiFieldsULE::<#len, #format_param>::parse_bytes(last_field_bytes)?;
+                unsafe {
+                    #(#validators)*
+                }
+            ))
+        }
+    }
+}
+
+impl<'a> UnsizedField<'a> {
+    fn new(
+        field: &'a Field,
+        index: usize,
+        custom_varule_ident: Option<Ident>,
+    ) -> Result<Self, String> {
+        Ok(UnsizedField {
+            kind: UnsizedFieldKind::new(&field.ty, custom_varule_ident)?,
+            field: FieldInfo::new_for_field(field, index),
+        })
+    }
+
+    /// Call `<Self as EncodeAsVarULE<V>>::#method(self.accessor #additional_args)` after adjusting
+    /// Self and self.accessor to be the right types
+    fn encode_func(&self, method: TokenStream2, additional_args: TokenStream2) -> TokenStream2 {
+        let encodeas_trait = quote!(zerovec::ule::EncodeAsVarULE);
+        let (encodeable_ty, encodeable) = self.encodeable_tokens();
+        let varule_ty = self.kind.varule_ty();
+        quote!(<#encodeable_ty as #encodeas_trait<#varule_ty>>::#method(#encodeable, #additional_args))
+    }
+
+    /// Returns (encodeable_ty, encodeable)
+    fn encodeable_tokens(&self) -> (TokenStream2, TokenStream2) {
+        let accessor = self.field.accessor.clone();
+        let value = quote!(self.#accessor);
+        let encodeable = self.kind.encodeable_value(value);
+        let encodeable_ty = self.kind.encodeable_ty();
+        (encodeable_ty, encodeable)
+    }
+}
+
+impl<'a> UnsizedFieldKind<'a> {
+    /// Construct a UnsizedFieldKind for the type of a UnsizedFieldKind if possible
+    fn new(
+        ty: &'a Type,
+        custom_varule_ident: Option<Ident>,
+    ) -> Result<UnsizedFieldKind<'a>, String> {
+        static PATH_TYPE_IDENTITY_ERROR: &str =
+            "Can only automatically detect corresponding VarULE types for path types \
+            that are Cow, ZeroVec, VarZeroVec, Box, String, or Vec";
+        static PATH_TYPE_GENERICS_ERROR: &str =
+            "Can only automatically detect corresponding VarULE types for path \
+            types with at most one lifetime and at most one generic parameter. VarZeroVecFormat
+            types are not currently supported";
+        match *ty {
+            Type::Reference(ref tyref) => OwnULETy::new(&tyref.elem, "reference").map(UnsizedFieldKind::Ref),
+            Type::Path(ref typath) => {
+                if let Some(custom_varule_ident) = custom_varule_ident {
+                    return Ok(UnsizedFieldKind::Custom(typath, custom_varule_ident));
+                }
+                if typath.path.segments.len() != 1 {
+                    return Err("Can only automatically detect corresponding VarULE types for \
+                                path types with a single path segment".into());
+                }
+                let segment = typath.path.segments.first().unwrap();
+                match segment.arguments {
+                    PathArguments::None => {
+                        if segment.ident == "String" {
+                            Ok(UnsizedFieldKind::Growable(OwnULETy::Str))
+                        } else {
+                            Err(PATH_TYPE_IDENTITY_ERROR.into())
+                        }
+                    }
+                    PathArguments::AngleBracketed(ref params) => {
+                        // At most one lifetime and exactly one generic parameter
+                        let mut lifetime = None;
+                        let mut generic = None;
+                        for param in &params.args {
+                            match param {
+                                GenericArgument::Lifetime(ref lt) if lifetime.is_none() => {
+                                    lifetime = Some(lt)
+                                }
+                                GenericArgument::Type(ref ty) if generic.is_none() => {
+                                    generic = Some(ty)
+                                }
+                                _ => return Err(PATH_TYPE_GENERICS_ERROR.into()),
+                            }
+                        }
+
+                        // Must be exactly one generic parameter
+                        // (we've handled the zero generics case already)
+                        let generic = if let Some(g) = generic {
+                            g
+                        } else {
+                            return Err(PATH_TYPE_GENERICS_ERROR.into());
+                        };
+
+                        let ident = segment.ident.to_string();
+
+                        if lifetime.is_some() {
+                            match &*ident {
+                                "ZeroVec" => Ok(UnsizedFieldKind::ZeroVec(generic)),
+                                "VarZeroVec" => Ok(UnsizedFieldKind::VarZeroVec(generic)),
+                                "Cow" => OwnULETy::new(generic, "Cow").map(UnsizedFieldKind::Cow),
+                                "VarZeroCow" => OwnULETy::new(generic, "VarZeroCow").map(UnsizedFieldKind::VarZeroCow),
+                                _ => Err(PATH_TYPE_IDENTITY_ERROR.into()),
+                            }
+                        } else {
+                            match &*ident {
+                                "Vec" => Ok(UnsizedFieldKind::Growable(OwnULETy::Slice(generic))),
+                                "Box" => OwnULETy::new(generic, "Box").map(UnsizedFieldKind::Boxed),
+                                _ => Err(PATH_TYPE_IDENTITY_ERROR.into()),
+                            }
+                        }
+                    }
+                    _ => Err("Can only automatically detect corresponding VarULE types for path types \
+                              with none or angle bracketed generics".into()),
+                }
+            }
+            _ => Err("Can only automatically detect corresponding VarULE types for path and reference types".into()),
+        }
+    }
+    /// Get the tokens for the corresponding VarULE type
+    fn varule_ty(&self) -> TokenStream2 {
+        match *self {
+            Self::Ref(ref inner)
+            | Self::Cow(ref inner)
+            | Self::VarZeroCow(ref inner)
+            | Self::Boxed(ref inner)
+            | Self::Growable(ref inner) => {
+                let inner_ule = inner.varule_ty();
+                quote!(#inner_ule)
+            }
+            Self::Custom(_, ref name) => quote!(#name),
+            Self::ZeroVec(ref inner) => quote!(zerovec::ZeroSlice<#inner>),
+            Self::VarZeroVec(ref inner) => quote!(zerovec::VarZeroSlice<#inner>),
+        }
+    }
+
+    // Takes expr `value` and returns it as a value that can be encoded via EncodeAsVarULE
+    fn encodeable_value(&self, value: TokenStream2) -> TokenStream2 {
+        match *self {
+            Self::Ref(_)
+            | Self::Cow(_)
+            | Self::VarZeroCow(_)
+            | Self::Growable(_)
+            | Self::Boxed(_) => quote!(&*#value),
+
+            Self::Custom(..) => quote!(&#value),
+            Self::ZeroVec(_) | Self::VarZeroVec(_) => quote!(&*#value),
+        }
+    }
+
+    /// Returns the EncodeAsVarULE type this can be represented as, the same returned by encodeable_value()
+    fn encodeable_ty(&self) -> TokenStream2 {
+        match *self {
+            Self::Ref(ref inner)
+            | Self::Cow(ref inner)
+            | Self::VarZeroCow(ref inner)
+            | Self::Growable(ref inner)
+            | Self::Boxed(ref inner) => inner.varule_ty(),
+
+            Self::Custom(ref path, _) => quote!(#path),
+            Self::ZeroVec(ref ty) => quote!(zerovec::ZeroSlice<#ty>),
+            Self::VarZeroVec(ref ty) => quote!(zerovec::VarZeroSlice<#ty>),
+        }
+    }
+
+    fn has_zf(&self) -> bool {
+        matches!(
+            *self,
+            Self::Ref(_)
+                | Self::Cow(_)
+                | Self::VarZeroCow(_)
+                | Self::ZeroVec(_)
+                | Self::VarZeroVec(_)
+                | Self::Custom(..)
+        )
+    }
+}
+
+impl<'a> OwnULETy<'a> {
+    fn new(ty: &'a Type, context: &str) -> Result<Self, String> {
+        match *ty {
+            Type::Slice(ref slice) => Ok(OwnULETy::Slice(&slice.elem)),
+            Type::Path(ref typath) => {
+                if typath.path.is_ident("str") {
+                    Ok(OwnULETy::Str)
+                } else {
+                    Err(format!("Cannot automatically detect corresponding VarULE type for non-str path type inside a {context}"))
+                }
+            }
+            _ => Err(format!("Cannot automatically detect corresponding VarULE type for non-slice/path type inside a {context}")),
+        }
+    }
+
+    /// Get the tokens for the corresponding VarULE type
+    fn varule_ty(&self) -> TokenStream2 {
+        match *self {
+            OwnULETy::Slice(s) => quote!([#s]),
+            OwnULETy::Str => quote!(str),
+        }
+    }
+}
diff --git a/vendor/zerovec-derive/src/ule.rs b/vendor/zerovec-derive/src/ule.rs
new file mode 100644
index 00000000..abd6106d
--- /dev/null
+++ b/vendor/zerovec-derive/src/ule.rs
@@ -0,0 +1,110 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use proc_macro2::TokenStream as TokenStream2;
+use quote::quote;
+
+use crate::utils::{self, FieldInfo};
+use syn::spanned::Spanned;
+use syn::{Data, DeriveInput, Error};
+
+pub fn derive_impl(input: &DeriveInput) -> TokenStream2 {
+    if !utils::ReprInfo::compute(&input.attrs).cpacked_or_transparent() {
+        return Error::new(
+            input.span(),
+            "derive(ULE) must be applied to a #[repr(C, packed)] or #[repr(transparent)] type",
+        )
+        .to_compile_error();
+    }
+    if input.generics.type_params().next().is_some()
+        || input.generics.lifetimes().next().is_some()
+        || input.generics.const_params().next().is_some()
+    {
+        return Error::new(
+            input.generics.span(),
+            "derive(ULE) must be applied to a struct without any generics",
+        )
+        .to_compile_error();
+    }
+    let struc = if let Data::Struct(ref s) = input.data {
+        if s.fields.iter().next().is_none() {
+            return Error::new(
+                input.span(),
+                "derive(ULE) must be applied to a non-empty struct",
+            )
+            .to_compile_error();
+        }
+        s
+    } else {
+        return Error::new(input.span(), "derive(ULE) must be applied to a struct")
+            .to_compile_error();
+    };
+
+    let fields = FieldInfo::make_list(struc.fields.iter());
+    let (validators, remaining_offset) = generate_ule_validators(&fields);
+
+    let name = &input.ident;
+
+    // Safety (based on the safety checklist on the ULE trait):
+    //  1. #name does not include any uninitialized or padding bytes.
+    //     (achieved by enforcing #[repr(transparent)] or #[repr(C, packed)] on a struct of only ULE types)
+    //  2. #name is aligned to 1 byte.
+    //     (achieved by enforcing #[repr(transparent)] or #[repr(C, packed)] on a struct of only ULE types)
+    //  3. The impl of validate_bytes() returns an error if any byte is not valid.
+    //  4. The impl of validate_bytes() returns an error if there are extra bytes.
+    //  5. The other ULE methods use the default impl.
+    //  6. [This impl does not enforce the non-safety equality constraint, it is up to the user to do so, ideally via a custom derive]
+    quote! {
+        unsafe impl zerovec::ule::ULE for #name {
+            #[inline]
+            fn validate_bytes(bytes: &[u8]) -> Result<(), zerovec::ule::UleError> {
+                const SIZE: usize = ::core::mem::size_of::<#name>();
+                #[allow(clippy::modulo_one)]
+                if bytes.len() % SIZE != 0 {
+                    return Err(zerovec::ule::UleError::length::<Self>(bytes.len()));
+                }
+                // Validate the bytes
+                #[allow(clippy::indexing_slicing)] // We're slicing a chunk of known size
+                for chunk in bytes.chunks_exact(SIZE) {
+                    #validators
+                    debug_assert_eq!(#remaining_offset, SIZE);
+                }
+                Ok(())
+            }
+        }
+    }
+}
+
+/// Given an slice over ULE struct fields, returns code validating that a slice variable `bytes` contains valid instances of those ULE types
+/// in order, plus the byte offset of any remaining unvalidated bytes. ULE types should not have any remaining bytes, but VarULE types will since
+/// the last field is the unsized one.
+pub(crate) fn generate_ule_validators(
+    fields: &[FieldInfo],
+    // (validators, remaining_offset)
+) -> (TokenStream2, syn::Ident) {
+    utils::generate_per_field_offsets(fields, false, |field, prev_offset_ident, size_ident| {
+        let ty = &field.field.ty;
+        quote! {
+            if let Some(bytes) = bytes.get(#prev_offset_ident .. #prev_offset_ident + #size_ident) {
+                <#ty as zerovec::ule::ULE>::validate_bytes(bytes)?;
+            } else {
+                return Err(zerovec::ule::UleError::parse::<Self>());
+            }
+        }
+    })
+}
+
+/// Make corresponding ULE fields for each field
+pub(crate) fn make_ule_fields(fields: &[FieldInfo]) -> Vec<TokenStream2> {
+    fields
+        .iter()
+        .map(|f| {
+            let ty = &f.field.ty;
+            let ty = quote!(<#ty as zerovec::ule::AsULE>::ULE);
+            let setter = f.setter();
+            let vis = &f.field.vis;
+            quote!(#vis #setter #ty)
+        })
+        .collect::<Vec<_>>()
+}
diff --git a/vendor/zerovec-derive/src/utils.rs b/vendor/zerovec-derive/src/utils.rs
new file mode 100644
index 00000000..a1270b58
--- /dev/null
+++ b/vendor/zerovec-derive/src/utils.rs
@@ -0,0 +1,403 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use quote::{quote, ToTokens};
+
+use proc_macro2::Span;
+use proc_macro2::TokenStream as TokenStream2;
+use syn::parse::{Parse, ParseStream};
+use syn::punctuated::Punctuated;
+use syn::spanned::Spanned;
+use syn::{Attribute, Error, Field, Fields, Ident, Index, Result, Token};
+
+#[derive(Default)]
+pub struct ReprInfo {
+    pub c: bool,
+    pub transparent: bool,
+    pub u8: bool,
+    pub packed: bool,
+}
+
+impl ReprInfo {
+    pub fn compute(attrs: &[Attribute]) -> Self {
+        let mut info = ReprInfo::default();
+        for attr in attrs.iter().filter(|a| a.path().is_ident("repr")) {
+            if let Ok(pieces) = attr.parse_args::<IdentListAttribute>() {
+                for piece in pieces.idents.iter() {
+                    if piece == "C" || piece == "c" {
+                        info.c = true;
+                    } else if piece == "transparent" {
+                        info.transparent = true;
+                    } else if piece == "packed" {
+                        info.packed = true;
+                    } else if piece == "u8" {
+                        info.u8 = true;
+                    }
+                }
+            }
+        }
+        info
+    }
+
+    pub fn cpacked_or_transparent(self) -> bool {
+        (self.c && self.packed) || self.transparent
+    }
+}
+
+// An attribute that is a list of idents
+struct IdentListAttribute {
+    idents: Punctuated<Ident, Token![,]>,
+}
+
+impl Parse for IdentListAttribute {
+    fn parse(input: ParseStream) -> Result<Self> {
+        Ok(IdentListAttribute {
+            idents: input.parse_terminated(Ident::parse, Token![,])?,
+        })
+    }
+}
+
+/// Given a set of entries for struct field definitions to go inside a `struct {}` definition,
+/// wrap in a () or {} based on the type of field
+pub fn wrap_field_inits(streams: &[TokenStream2], fields: &Fields) -> TokenStream2 {
+    match *fields {
+        Fields::Named(_) => quote!( { #(#streams),* } ),
+        Fields::Unnamed(_) => quote!( ( #(#streams),* ) ),
+        Fields::Unit => {
+            unreachable!("#[make_(var)ule] should have already checked that there are fields")
+        }
+    }
+}
+
+/// Return a semicolon token if necessary after the struct definition
+pub fn semi_for(f: &Fields) -> TokenStream2 {
+    if let Fields::Unnamed(..) = *f {
+        quote!(;)
+    } else {
+        quote!()
+    }
+}
+
+/// Returns the repr attribute to be applied to the resultant ULE or VarULE type
+pub fn repr_for(f: &Fields) -> TokenStream2 {
+    if f.len() == 1 {
+        quote!(transparent)
+    } else {
+        quote!(C, packed)
+    }
+}
+
+fn suffixed_ident(name: &str, suffix: usize, s: Span) -> Ident {
+    Ident::new(&format!("{name}_{suffix}"), s)
+}
+
+/// Given an iterator over ULE or AsULE struct fields, returns code that calculates field sizes and generates a line
+/// of code per field based on the per_field_code function (whose parameters are the field, the identifier of the const
+/// for the previous offset, the identifier for the const for the next offset, and the field index)
+pub(crate) fn generate_per_field_offsets<'a>(
+    fields: &[FieldInfo<'a>],
+    // Whether the fields are ULE types or AsULE (and need conversion)
+    fields_are_asule: bool,
+    // (field, prev_offset_ident, size_ident)
+    mut per_field_code: impl FnMut(&FieldInfo<'a>, &Ident, &Ident) -> TokenStream2, /* (code, remaining_offset) */
+) -> (TokenStream2, syn::Ident) {
+    let mut prev_offset_ident = Ident::new("ZERO", Span::call_site());
+    let mut code = quote!(
+        const ZERO: usize = 0;
+    );
+
+    for (i, field_info) in fields.iter().enumerate() {
+        let field = &field_info.field;
+        let ty = &field.ty;
+        let ty = if fields_are_asule {
+            quote!(<#ty as zerovec::ule::AsULE>::ULE)
+        } else {
+            quote!(#ty)
+        };
+        let new_offset_ident = suffixed_ident("OFFSET", i, field.span());
+        let size_ident = suffixed_ident("SIZE", i, field.span());
+        let pf_code = per_field_code(field_info, &prev_offset_ident, &size_ident);
+        code = quote! {
+            #code;
+            const #size_ident: usize = ::core::mem::size_of::<#ty>();
+            const #new_offset_ident: usize = #prev_offset_ident + #size_ident;
+            #pf_code;
+        };
+
+        prev_offset_ident = new_offset_ident;
+    }
+
+    (code, prev_offset_ident)
+}
+
+#[derive(Clone, Debug)]
+pub(crate) struct FieldInfo<'a> {
+    pub accessor: TokenStream2,
+    pub field: &'a Field,
+    pub index: usize,
+}
+
+impl<'a> FieldInfo<'a> {
+    pub fn make_list(iter: impl Iterator<Item = &'a Field>) -> Vec<Self> {
+        iter.enumerate()
+            .map(|(i, field)| Self::new_for_field(field, i))
+            .collect()
+    }
+
+    pub fn new_for_field(f: &'a Field, index: usize) -> Self {
+        if let Some(ref i) = f.ident {
+            FieldInfo {
+                accessor: quote!(#i),
+                field: f,
+                index,
+            }
+        } else {
+            let idx = Index::from(index);
+            FieldInfo {
+                accessor: quote!(#idx),
+                field: f,
+                index,
+            }
+        }
+    }
+
+    /// Get the code for setting this field in struct decl/brace syntax
+    ///
+    /// Use self.accessor for dot-notation accesses
+    pub fn setter(&self) -> TokenStream2 {
+        if let Some(ref i) = self.field.ident {
+            quote!(#i: )
+        } else {
+            quote!()
+        }
+    }
+
+    /// Produce a name for a getter for the field
+    pub fn getter(&self) -> TokenStream2 {
+        if let Some(ref i) = self.field.ident {
+            quote!(#i)
+        } else {
+            suffixed_ident("field", self.index, self.field.span()).into_token_stream()
+        }
+    }
+
+    /// Produce a prose name for the field for use in docs
+    pub fn getter_doc_name(&self) -> String {
+        if let Some(ref i) = self.field.ident {
+            format!("the unsized `{i}` field")
+        } else {
+            format!("tuple struct field #{}", self.index)
+        }
+    }
+}
+
+/// Extracts all `zerovec::name(..)` attribute
+pub fn extract_parenthetical_zerovec_attrs(
+    attrs: &mut Vec<Attribute>,
+    name: &str,
+) -> Result<Vec<Ident>> {
+    let mut ret = vec![];
+    let mut error = None;
+    attrs.retain(|a| {
+        // skip the "zerovec" part
+        let second_segment = a.path().segments.iter().nth(1);
+
+        if let Some(second) = second_segment {
+            if second.ident == name {
+                let list = match a.parse_args::<IdentListAttribute>() {
+                    Ok(l) => l,
+                    Err(_) => {
+                        error = Some(Error::new(
+                            a.span(),
+                            format!("#[zerovec::{name}(..)] takes in a comma separated list of identifiers"),
+                        ));
+                        return false;
+                    }
+                };
+                ret.extend(list.idents.iter().cloned());
+                return false;
+            }
+        }
+
+        true
+    });
+
+    if let Some(error) = error {
+        return Err(error);
+    }
+    Ok(ret)
+}
+
+pub fn extract_single_tt_attr(
+    attrs: &mut Vec<Attribute>,
+    name: &str,
+) -> Result<Option<TokenStream2>> {
+    let mut ret = None;
+    let mut error = None;
+    attrs.retain(|a| {
+        // skip the "zerovec" part
+        let second_segment = a.path().segments.iter().nth(1);
+
+        if let Some(second) = second_segment {
+            if second.ident == name {
+                if ret.is_some() {
+                    error = Some(Error::new(
+                        a.span(),
+                        "Can only specify a single VarZeroVecFormat via #[zerovec::format(..)]",
+                    ));
+                    return false
+                }
+                ret = match a.parse_args::<TokenStream2>() {
+                    Ok(l) => Some(l),
+                    Err(_) => {
+                        error = Some(Error::new(
+                            a.span(),
+                            format!("#[zerovec::{name}(..)] takes in a comma separated list of identifiers"),
+                        ));
+                        return false;
+                    }
+                };
+                return false;
+            }
+        }
+
+        true
+    });
+
+    if let Some(error) = error {
+        return Err(error);
+    }
+    Ok(ret)
+}
+
+/// Removes all attributes with `zerovec` in the name and places them in a separate vector
+pub fn extract_zerovec_attributes(attrs: &mut Vec<Attribute>) -> Vec<Attribute> {
+    let mut ret = vec![];
+    attrs.retain(|a| {
+        if a.path().segments.len() == 2 && a.path().segments[0].ident == "zerovec" {
+            ret.push(a.clone());
+            return false;
+        }
+        true
+    });
+    ret
+}
+
+/// Extract attributes from field, and return them
+///
+/// Only current field attribute is `zerovec::varule(VarUleType)`
+pub fn extract_field_attributes(attrs: &mut Vec<Attribute>) -> Result<Option<Ident>> {
+    let mut zerovec_attrs = extract_zerovec_attributes(attrs);
+    let varule = extract_parenthetical_zerovec_attrs(&mut zerovec_attrs, "varule")?;
+
+    if varule.len() > 1 {
+        return Err(Error::new(
+            varule[1].span(),
+            "Found multiple #[zerovec::varule()] on one field",
+        ));
+    }
+
+    if !zerovec_attrs.is_empty() {
+        return Err(Error::new(
+            zerovec_attrs[1].span(),
+            "Found unusable #[zerovec::] attrs on field, only #[zerovec::varule()] supported",
+        ));
+    }
+
+    Ok(varule.first().cloned())
+}
+
+#[derive(Default, Clone)]
+pub struct ZeroVecAttrs {
+    pub skip_kv: bool,
+    pub skip_ord: bool,
+    pub skip_toowned: bool,
+    pub skip_from: bool,
+    pub serialize: bool,
+    pub deserialize: bool,
+    pub debug: bool,
+    pub hash: bool,
+    pub vzv_format: Option<TokenStream2>,
+}
+
+/// Removes all known zerovec:: attributes from struct attrs and validates them
+pub fn extract_attributes_common(
+    attrs: &mut Vec<Attribute>,
+    span: Span,
+    is_var: bool,
+) -> Result<ZeroVecAttrs> {
+    let mut zerovec_attrs = extract_zerovec_attributes(attrs);
+
+    let derive = extract_parenthetical_zerovec_attrs(&mut zerovec_attrs, "derive")?;
+    let skip = extract_parenthetical_zerovec_attrs(&mut zerovec_attrs, "skip_derive")?;
+    let format = extract_single_tt_attr(&mut zerovec_attrs, "format")?;
+
+    let name = if is_var { "make_varule" } else { "make_ule" };
+
+    if let Some(attr) = zerovec_attrs.first() {
+        return Err(Error::new(
+            attr.span(),
+            format!("Found unknown or duplicate attribute for #[{name}]"),
+        ));
+    }
+
+    let mut attrs = ZeroVecAttrs::default();
+
+    for ident in derive {
+        if ident == "Serialize" {
+            attrs.serialize = true;
+        } else if ident == "Deserialize" {
+            attrs.deserialize = true;
+        } else if ident == "Debug" {
+            attrs.debug = true;
+        } else if ident == "Hash" {
+            attrs.hash = true;
+        } else {
+            return Err(Error::new(
+                ident.span(),
+                format!(
+                    "Found unknown derive attribute for #[{name}]: #[zerovec::derive({ident})]"
+                ),
+            ));
+        }
+    }
+
+    for ident in skip {
+        if ident == "ZeroMapKV" {
+            attrs.skip_kv = true;
+        } else if ident == "Ord" {
+            attrs.skip_ord = true;
+        } else if ident == "ToOwned" && is_var {
+            attrs.skip_toowned = true;
+        } else if ident == "From" && is_var {
+            attrs.skip_from = true;
+        } else {
+            return Err(Error::new(
+                ident.span(),
+                format!("Found unknown derive attribute for #[{name}]: #[zerovec::skip_derive({ident})]"),
+            ));
+        }
+    }
+
+    if let Some(ref format) = format {
+        if !is_var {
+            return Err(Error::new(
+                format.span(),
+                format!(
+                    "Found unknown derive attribute for #[{name}]: #[zerovec::format({format})]"
+                ),
+            ));
+        }
+    }
+    attrs.vzv_format = format;
+
+    if (attrs.serialize || attrs.deserialize) && !is_var {
+        return Err(Error::new(
+            span,
+            "#[make_ule] does not support #[zerovec::derive(Serialize, Deserialize)]",
+        ));
+    }
+
+    Ok(attrs)
+}
diff --git a/vendor/zerovec-derive/src/varule.rs b/vendor/zerovec-derive/src/varule.rs
new file mode 100644
index 00000000..855e207d
--- /dev/null
+++ b/vendor/zerovec-derive/src/varule.rs
@@ -0,0 +1,129 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::utils::{self, FieldInfo};
+use proc_macro2::Span;
+use proc_macro2::TokenStream as TokenStream2;
+use quote::quote;
+use syn::spanned::Spanned;
+use syn::{Data, DeriveInput, Error, Ident};
+
+/// Implementation for derive(VarULE). `custom_varule_validator` validates the last field bytes `last_field_bytes`
+/// if specified, if not, the VarULE implementation will be used.
+pub fn derive_impl(
+    input: &DeriveInput,
+    custom_varule_validator: Option<TokenStream2>,
+) -> TokenStream2 {
+    if !utils::ReprInfo::compute(&input.attrs).cpacked_or_transparent() {
+        return Error::new(
+            input.span(),
+            "derive(VarULE) must be applied to a #[repr(C, packed)] or #[repr(transparent)] type",
+        )
+        .to_compile_error();
+    }
+    if input.generics.type_params().next().is_some()
+        || input.generics.lifetimes().next().is_some()
+        || input.generics.const_params().next().is_some()
+    {
+        return Error::new(
+            input.generics.span(),
+            "derive(VarULE) must be applied to a struct without any generics",
+        )
+        .to_compile_error();
+    }
+    let struc = if let Data::Struct(ref s) = input.data {
+        if s.fields.iter().next().is_none() {
+            return Error::new(
+                input.span(),
+                "derive(VarULE) must be applied to a non-empty struct",
+            )
+            .to_compile_error();
+        }
+        s
+    } else {
+        return Error::new(input.span(), "derive(VarULE) must be applied to a struct")
+            .to_compile_error();
+    };
+
+    let n_fields = struc.fields.len();
+
+    let ule_fields = FieldInfo::make_list(struc.fields.iter().take(n_fields - 1));
+
+    let sizes = ule_fields.iter().map(|f| {
+        let ty = &f.field.ty;
+        quote!(::core::mem::size_of::<#ty>())
+    });
+    let (validators, remaining_offset) = if n_fields > 1 {
+        // generate ULE validators
+        crate::ule::generate_ule_validators(&ule_fields)
+    } else {
+        // no ULE subfields
+        (
+            quote!(
+                const ZERO: usize = 0;
+            ),
+            Ident::new("ZERO", Span::call_site()),
+        )
+    };
+
+    let unsized_field = &struc
+        .fields
+        .iter()
+        .next_back()
+        .expect("Already verified that struct is not empty")
+        .ty;
+
+    let name = &input.ident;
+    let ule_size = Ident::new(
+        &format!("__IMPL_VarULE_FOR_{name}_ULE_SIZE"),
+        Span::call_site(),
+    );
+
+    let last_field_validator = if let Some(custom_varule_validator) = custom_varule_validator {
+        custom_varule_validator
+    } else {
+        quote!(<#unsized_field as zerovec::ule::VarULE>::validate_bytes(last_field_bytes)?;)
+    };
+
+    // Safety (based on the safety checklist on the ULE trait):
+    //  1. #name does not include any uninitialized or padding bytes
+    //     (achieved by enforcing #[repr(transparent)] or #[repr(C, packed)] on a struct of only ULE types)
+    //  2. #name is aligned to 1 byte.
+    //     (achieved by enforcing #[repr(transparent)] or #[repr(C, packed)] on a struct of only ULE types)
+    //  3. The impl of `validate_bytes()` returns an error if any byte is not valid.
+    //  4. The impl of `validate_bytes()` returns an error if the slice cannot be used in its entirety
+    //  5. The impl of `from_bytes_unchecked()` returns a reference to the same data.
+    //  6. The other VarULE methods use the default impl
+    //  7. [This impl does not enforce the non-safety equality constraint, it is up to the user to do so, ideally via a custom derive]
+    quote! {
+        // The size of the ULE section of this type
+        const #ule_size: usize = 0 #(+ #sizes)*;
+        unsafe impl zerovec::ule::VarULE for #name {
+            #[inline]
+            fn validate_bytes(bytes: &[u8]) -> Result<(), zerovec::ule::UleError> {
+                debug_assert_eq!(#remaining_offset, #ule_size);
+
+                let Some(last_field_bytes) = bytes.get(#remaining_offset..) else {
+                    return Err(zerovec::ule::UleError::parse::<Self>());
+                };
+                #validators
+                #last_field_validator
+                Ok(())
+            }
+            #[inline]
+            unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+                // just the unsized part
+                // Safety: The invariants of this function allow us to assume bytes is valid, and
+                // having at least #ule_size bytes is a validity constraint for the ULE type.
+                let unsized_bytes = bytes.get_unchecked(#ule_size..);
+                let unsized_ref = <#unsized_field as zerovec::ule::VarULE>::from_bytes_unchecked(unsized_bytes);
+                // We should use the pointer metadata APIs here when they are stable: https://github.com/rust-lang/rust/issues/81513
+                // For now we rely on all DST metadata being a usize to extract it via a fake slice pointer
+                let (_ptr, metadata): (usize, usize) = ::core::mem::transmute(unsized_ref);
+                let entire_struct_as_slice: *const [u8] = ::core::slice::from_raw_parts(bytes.as_ptr(), metadata);
+                &*(entire_struct_as_slice as *const Self)
+            }
+        }
+    }
+}
diff --git a/vendor/zerovec/.cargo-checksum.json b/vendor/zerovec/.cargo-checksum.json
new file mode 100644
index 00000000..78613c3c
--- /dev/null
+++ b/vendor/zerovec/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"63c5442c7d7f53cf8bee1d61b5e14e1c9340fad5790816f751e066f0bd95de7e","Cargo.toml":"5f8a2d1effdf130d7f9dbee2224af5d1f13d7872ecaa117e825d627ce29a07ee","LICENSE":"f367c1b8e1aa262435251e442901da4607b4650e0e63a026f5044473ecfb90f2","README.md":"1fd135cefcbcb8cc2d046496ab41c0e266c17f0830ca1399b853c0b495ece9c0","benches/vzv.rs":"f2864a0cda534900c0f497029c61027a616904c8d8db35d46a0ca7c289e7d984","benches/zeromap.rs":"f8d4271009c9c6ae3fc4997690918035b622e44083a37ab11ebb2771e9a398cc","benches/zerovec.rs":"adf697a1f7c96c73781085353499df79cd94d71d41f767c62fdaf08a69302edc","benches/zerovec_iai.rs":"bc87f1971f2b5068db9beb214ff52f5851915efc4bfad03f2b4b3e774dc527b2","benches/zerovec_serde.rs":"4da0a792b8e29dd9eb581df8dd742d029fbbf1b8f90aa87866763189c00c185c","examples/zv_serde.rs":"68c251a45345b737c0c0fd1d4f9375b99ca21f5db63e194fa6e3014bd0ff82cf","src/cow.rs":"9f7df11870936483de7f086836f3d7328402ff7faab7c3f99f4c3de0f2db2598","src/hashmap/algorithms.rs":"5bee224e11fb446ca960071b7ca49161d9ebf2743431bd714868dfc09c9f7395","src/hashmap/mod.rs":"ff2d903582dd9c8ef9c968e59207e0239016c8e4f035be17b65f9027bc70b7ce","src/hashmap/serde.rs":"853bac4e5e168a8e4b63b360a1025fbcf6919b419a7660f7f93776b97bacb3d2","src/lib.rs":"ca8d742606f362eb2ecbd42060dda6738868d261e8075e3174ab5f56101d5100","src/map/borrowed.rs":"a8d8ea0a06cfdc66c74d8f28a9d1df931a22d624695e82fb6566dc36ee6ef75a","src/map/databake.rs":"887c5c0d9dd01819880d270fabf004ed0318028154c75aa0d60e4272f846db5c","src/map/kv.rs":"f00725b15d2962beb8e2ad0fa95c5b2f12907698089942ea5ef611f06da16431","src/map/map.rs":"2c3fe79a0b61304a14d3b8f4c264c928d7bb6f23209f1192612670847bcb709e","src/map/mod.rs":"15d0127d348238e024f8ffb85e5ef7faa4a4e76124a96f73d3eb776197021df8","src/map/serde.rs":"1d78ea8d4e1f1208610270a464cd56c5fdba53c705f5a41b043be4aa52cdd264","src/map/serde_helpers.rs":"72787005972b93e49b9dc17aa47d30699364e6da9dc95aadb820ce58e4bf5c54","src/map/vecs.rs":"82a6001e1fcc1025a54b933dd1808ae8825a00ccfab4eb052c34bb08082354dc","src/map2d/borrowed.rs":"cd824e78abb3a7276b9b13ca65a94af70fc01352f2dc31a0011a1e7b6dca9107","src/map2d/cursor.rs":"45a08cfcf66c01ba50286b93e7e03baa39b05c82e49b936df9fa27eb616a3ee8","src/map2d/databake.rs":"7ae11846e3232a9cd0e1a9c4a3b2093d315f8be21d490916d033eecdc4375a04","src/map2d/map.rs":"1dd0ee38a988c3c87937c4f5e504c23ff73862209963d53923dfaf302e2faf96","src/map2d/mod.rs":"80beae7a263f1fe39c9a06d287c9150480fe3ed43397c2a7475a50ee2b2fd37f","src/map2d/serde.rs":"77bcd2ef1573992fceef99cfe0bea00f122a443ae9def019d7c3cc3a49d3a857","src/samples.rs":"f2c1ff9d93ce56b8ca87514b13be1c888e739fb7d694929f2aac9a43079db708","src/ule/chars.rs":"02c83f5dd5029976f7153e7ac580b30508f99a245e06b5e645b0d043ad1559c9","src/ule/custom.rs":"3db6a6448f4c1b3643478e666835fb8b46fea8895cd104c13b2c238c5df85c72","src/ule/encode.rs":"fd7dcbaea0a860c01a38db8d4b8c06d9d0d225ef0010054ff1563d178ce83ab1","src/ule/macros.rs":"8bc8600dbc516449464b9eeeca74fb0203beb33b2232aa09957bf1c97d8022c8","src/ule/mod.rs":"6a4c48160f679e4a461bbbe349273b99e2c5bd4d53d43fea6c33789d244b6747","src/ule/multi.rs":"8de684c68e24b74d7515d0b2d620214e69330ff23aa2806483cbbd3c775f53eb","src/ule/niche.rs":"8da7ce4e0a69da53fc5246de9e9ff52c26114e84c1b2b8a3bd9d75d04cc9795c","src/ule/option.rs":"481d1c2c984b8411098d4ce53798a4a02cdf1ab69392247490d09213ebf4d91e","src/ule/plain.rs":"65e98d3086ce5232447db07a7a353a891ec2035a57a0d595ff505343b65f6b2d","src/ule/slices.rs":"cfdbb9ec97eb4eda7290959c8579f6dd04657f086e0f267feabde1c40e6d3e0f","src/ule/test_utils.rs":"a977297e71666a341f644f31b974d7d22075a81efb4bda5c99fd2e08fd924560","src/ule/tuple.rs":"acaf6e926cf8d084812f7c8318572f7ee3c041bfd538a50c364e4f9e31a614c4","src/ule/tuplevar.rs":"2310c92f343a3811cfab4ade11048f2db84b6c6d8c54f7229fe5e727a2a2643d","src/ule/vartuple.rs":"c422c050e0684e8b6378249988b2a9a646696ac22d2ee18f00634e4a39db8865","src/varzerovec/components.rs":"1fae79931fb56ad32bfe038e9a09e086ed2dd9a518584a6b46fa3ac1ec93fb22","src/varzerovec/databake.rs":"a798a25ca60faf85bc570325e84881c9bfb700b3851b0dfbcb9b10707b987788","src/varzerovec/error.rs":"ea199ec03e3e30d0477ea025d44bf2a3c6d3c84bc533f5baddf35055601c6a09","src/varzerovec/lengthless.rs":"15f612a00f255e83188275c2a09cf48978257c3ea06279aab46bb111a748c8c2","src/varzerovec/mod.rs":"f8b4c9c002fc73cacaa770b38b84f849a068afab86cdccf5d134317f6734fedb","src/varzerovec/owned.rs":"6f4737a864154b958dad5508d298ba5299954b6a00ae58e6df04e4f12de98406","src/varzerovec/serde.rs":"cac64580017a9a002bf9092bba1b0133c1be0dca82c202c5586e50a9a909c712","src/varzerovec/slice.rs":"bd8ae111bcf373964a07aa6306fec0a0e0d43657405a3db232a11505fd7a3c79","src/varzerovec/vec.rs":"e44f70215b3e52b9dac5c85c72c8f3a7bf35a6a7e4b388f7387b5a0867b56793","src/yoke_impls.rs":"92a770b8b703b2f2df79df2eb5039fc37994e8658731ab484e188b995b18ca2c","src/zerofrom_impls.rs":"01b085b440cbb2e7920f02619d11ff022a82da0193f7dd9580173e364d1e2c9e","src/zerovec/databake.rs":"0c141ebe4bc8c42ee7a67e61fa757921ddca9a8a18b470a0b24798b972e0e3bb","src/zerovec/mod.rs":"a38275ff8ee3a81e8ff8e6f3802fc46b4765ad6651a444f12ce034e5eb2b80f4","src/zerovec/serde.rs":"3408b7e2c10c67096ad38c5ab3ad21a5017aaed2696c82b956e5227219bef596","src/zerovec/slice.rs":"ee4962d313d828c4b819528a7de4f02f982e281960b0b8f5192cf896d6bbb268"},"package":"e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b"}
\ No newline at end of file
diff --git a/vendor/zerovec/Cargo.lock b/vendor/zerovec/Cargo.lock
new file mode 100644
index 00000000..8bc57cbe
--- /dev/null
+++ b/vendor/zerovec/Cargo.lock
@@ -0,0 +1,929 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anes"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+
+[[package]]
+name = "anstyle"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+
+[[package]]
+name = "autocfg"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitflags"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+
+[[package]]
+name = "bumpalo"
+version = "3.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "ciborium"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
+dependencies = [
+ "ciborium-io",
+ "ciborium-ll",
+ "serde",
+]
+
+[[package]]
+name = "ciborium-io"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
+
+[[package]]
+name = "ciborium-ll"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
+dependencies = [
+ "ciborium-io",
+ "half",
+]
+
+[[package]]
+name = "clap"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c"
+dependencies = [
+ "clap_builder",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7"
+dependencies = [
+ "anstyle",
+ "clap_lex",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+
+[[package]]
+name = "cobs"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
+
+[[package]]
+name = "criterion"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
+dependencies = [
+ "anes",
+ "cast",
+ "ciborium",
+ "clap",
+ "criterion-plot",
+ "is-terminal",
+ "itertools",
+ "num-traits",
+ "once_cell",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
+dependencies = [
+ "cast",
+ "itertools",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+
+[[package]]
+name = "crunchy"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
+
+[[package]]
+name = "databake"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff6ee9e2d2afb173bcdeee45934c89ec341ab26f91c9933774fc15c2b58f83ef"
+dependencies = [
+ "databake-derive",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "databake-derive"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6834770958c7b84223607e49758ec0dde273c4df915e734aad50f62968a4c134"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "either"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+
+[[package]]
+name = "embedded-io"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced"
+
+[[package]]
+name = "embedded-io"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d"
+
+[[package]]
+name = "getrandom"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "libc",
+ "r-efi",
+ "wasi",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08"
+
+[[package]]
+name = "iai"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "71a816c97c42258aa5834d07590b718b4c9a598944cd39a52dc25b351185d678"
+
+[[package]]
+name = "is-terminal"
+version = "0.4.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.172"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
+
+[[package]]
+name = "libm"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de"
+
+[[package]]
+name = "log"
+version = "0.4.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+ "libm",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "oorandom"
+version = "11.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "plotters"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "postcard"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8"
+dependencies = [
+ "cobs",
+ "embedded-io 0.4.0",
+ "embedded-io 0.6.1",
+ "serde",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+
+[[package]]
+name = "rand"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
+dependencies = [
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_distr"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463"
+dependencies = [
+ "num-traits",
+ "rand",
+]
+
+[[package]]
+name = "rand_pcg"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b48ac3f7ffaab7fac4d2376632268aa5f89abdb55f7ebf8f4d11fffccb2320f7"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "regex"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+
+[[package]]
+name = "rmp"
+version = "0.8.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "228ed7c16fa39782c3b3468e974aec2795e9089153cd08ee2e9aefb3613334c4"
+dependencies = [
+ "byteorder",
+ "num-traits",
+ "paste",
+]
+
+[[package]]
+name = "rmp-serde"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db"
+dependencies = [
+ "byteorder",
+ "rmp",
+ "serde",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
+
+[[package]]
+name = "ryu"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.219"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.140"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+dependencies = [
+ "itoa",
+ "memchr",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "syn"
+version = "2.0.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "twox-hash"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7b17f197b3050ba473acf9181f7b1d3b66d1cf7356c6cc57886662276e65908"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.14.2+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3"
+dependencies = [
+ "wit-bindgen-rt",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi-util"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
+dependencies = [
+ "windows-sys",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "wit-bindgen-rt"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "yoke"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
+dependencies = [
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.8.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.4"
+dependencies = [
+ "bincode",
+ "criterion",
+ "databake",
+ "getrandom",
+ "iai",
+ "postcard",
+ "rand",
+ "rand_distr",
+ "rand_pcg",
+ "rmp-serde",
+ "serde",
+ "serde_json",
+ "twox-hash",
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/vendor/zerovec/Cargo.toml b/vendor/zerovec/Cargo.toml
new file mode 100644
index 00000000..4ffb8cc0
--- /dev/null
+++ b/vendor/zerovec/Cargo.toml
@@ -0,0 +1,194 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.82"
+name = "zerovec"
+version = "0.11.4"
+authors = ["The ICU4X Project Developers"]
+build = false
+include = [
+    "data/**/*",
+    "src/**/*",
+    "examples/**/*",
+    "benches/**/*",
+    "tests/**/*",
+    "Cargo.toml",
+    "LICENSE",
+    "README.md",
+    "build.rs",
+]
+autolib = false
+autobins = false
+autoexamples = false
+autotests = false
+autobenches = false
+description = "Zero-copy vector backed by a byte array"
+readme = "README.md"
+keywords = [
+    "zerocopy",
+    "serialization",
+    "zero-copy",
+    "serde",
+]
+categories = [
+    "rust-patterns",
+    "memory-management",
+    "caching",
+    "no-std",
+    "data-structures",
+]
+license = "Unicode-3.0"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.cargo-all-features]
+max_combination_size = 3
+
+[package.metadata.docs.rs]
+all-features = true
+
+[package.metadata.workspaces]
+independent = true
+
+[features]
+alloc = []
+databake = ["dep:databake"]
+derive = ["dep:zerovec-derive"]
+hashmap = [
+    "dep:twox-hash",
+    "alloc",
+]
+serde = [
+    "dep:serde",
+    "alloc",
+]
+std = []
+yoke = ["dep:yoke"]
+
+[lib]
+name = "zerovec"
+path = "src/lib.rs"
+bench = false
+
+[[example]]
+name = "zv_serde"
+path = "examples/zv_serde.rs"
+required-features = ["serde"]
+
+[[bench]]
+name = "vzv"
+path = "benches/vzv.rs"
+harness = false
+
+[[bench]]
+name = "zeromap"
+path = "benches/zeromap.rs"
+harness = false
+required-features = [
+    "serde",
+    "hashmap",
+    "derive",
+]
+
+[[bench]]
+name = "zerovec"
+path = "benches/zerovec.rs"
+harness = false
+
+[[bench]]
+name = "zerovec_iai"
+path = "benches/zerovec_iai.rs"
+harness = false
+
+[[bench]]
+name = "zerovec_serde"
+path = "benches/zerovec_serde.rs"
+harness = false
+required-features = ["serde"]
+
+[dependencies.databake]
+version = "0.2.0"
+features = ["derive"]
+optional = true
+default-features = false
+
+[dependencies.serde]
+version = "1.0.110"
+features = [
+    "alloc",
+    "derive",
+]
+optional = true
+default-features = false
+
+[dependencies.twox-hash]
+version = "2.0.0"
+features = ["xxhash64"]
+optional = true
+default-features = false
+
+[dependencies.yoke]
+version = "0.8.0"
+optional = true
+default-features = false
+
+[dependencies.zerofrom]
+version = "0.1.3"
+default-features = false
+
+[dependencies.zerovec-derive]
+version = "0.11.1"
+optional = true
+default-features = false
+
+[dev-dependencies.bincode]
+version = "1.3.1"
+
+[dev-dependencies.getrandom]
+version = "0.3"
+features = ["wasm_js"]
+
+[dev-dependencies.iai]
+version = "0.1.1"
+
+[dev-dependencies.postcard]
+version = "1.0.3"
+features = ["use-std"]
+default-features = false
+
+[dev-dependencies.rand]
+version = "0.9"
+
+[dev-dependencies.rand_distr]
+version = "0.5"
+
+[dev-dependencies.rand_pcg]
+version = "0.9"
+
+[dev-dependencies.rmp-serde]
+version = "1.2.0"
+
+[dev-dependencies.serde]
+version = "1.0.110"
+features = ["derive"]
+default-features = false
+
+[dev-dependencies.serde_json]
+version = "1.0.45"
+
+[dev-dependencies.yoke]
+version = "0.8.0"
+features = ["derive"]
+default-features = false
+
+[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies.criterion]
+version = "0.5.0"
diff --git a/vendor/zerovec/LICENSE b/vendor/zerovec/LICENSE
new file mode 100644
index 00000000..c9be6012
--- /dev/null
+++ b/vendor/zerovec/LICENSE
@@ -0,0 +1,46 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2024 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+SPDX-License-Identifier: Unicode-3.0
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/zerovec/README.md b/vendor/zerovec/README.md
new file mode 100644
index 00000000..a708b085
--- /dev/null
+++ b/vendor/zerovec/README.md
@@ -0,0 +1,197 @@
+# zerovec [![crates.io](https://img.shields.io/crates/v/zerovec)](https://crates.io/crates/zerovec)
+
+<!-- cargo-rdme start -->
+
+Zero-copy vector abstractions for arbitrary types, backed by byte slices.
+
+`zerovec` enables a far wider range of types — beyond just `&[u8]` and `&str` — to participate in
+zero-copy deserialization from byte slices. It is `serde` compatible and comes equipped with
+proc macros
+
+Clients upgrading to `zerovec` benefit from zero heap allocations when deserializing
+read-only data.
+
+This crate has four main types:
+
+- [`ZeroVec<'a, T>`] (and [`ZeroSlice<T>`](ZeroSlice)) for fixed-width types like `u32`
+- [`VarZeroVec<'a, T>`] (and [`VarZeroSlice<T>`](ZeroSlice)) for variable-width types like `str`
+- [`ZeroMap<'a, K, V>`] to map from `K` to `V`
+- [`ZeroMap2d<'a, K0, K1, V>`] to map from the pair `(K0, K1)` to `V`
+
+The first two are intended as close-to-drop-in replacements for `Vec<T>` in Serde structs. The third and fourth are
+intended as a replacement for `HashMap` or [`LiteMap`](https://docs.rs/litemap). When used with Serde derives, **be sure to apply
+`#[serde(borrow)]` to these types**, same as one would for [`Cow<'a, T>`].
+
+[`ZeroVec<'a, T>`], [`VarZeroVec<'a, T>`], [`ZeroMap<'a, K, V>`], and [`ZeroMap2d<'a, K0, K1, V>`] all behave like
+[`Cow<'a, T>`] in that they abstract over either borrowed or owned data. When performing deserialization
+from human-readable formats (like `json` and `xml`), typically these types will allocate and fully own their data, whereas if deserializing
+from binary formats like `bincode` and `postcard`, these types will borrow data directly from the buffer being deserialized from,
+avoiding allocations and only performing validity checks. As such, this crate can be pretty fast (see [below](#Performance) for more information)
+on deserialization.
+
+See [the design doc](https://github.com/unicode-org/icu4x/blob/main/utils/zerovec/design_doc.md) for details on how this crate
+works under the hood.
+
+## Cargo features
+
+This crate has several optional Cargo features:
+ - `serde`: Allows serializing and deserializing `zerovec`'s abstractions via [`serde`](https://docs.rs/serde)
+ - `yoke`: Enables implementations of `Yokeable` from the [`yoke`](https://docs.rs/yoke/) crate, which is also useful
+   in situations involving a lot of zero-copy deserialization.
+ - `derive`: Makes it easier to use custom types in these collections by providing the `#[make_ule]` and
+   `#[make_varule]` proc macros, which generate appropriate [`ULE`](https://docs.rs/zerovec/latest/zerovec/ule/trait.ULE.html) and
+   [`VarULE`](https://docs.rs/zerovec/latest/zerovec/ule/trait.VarULE.html)-conformant types for a given "normal" type.
+ - `std`: Enabled `std::Error` implementations for error types. This crate is by default `no_std` with a dependency on `alloc`.
+
+[`ZeroVec<'a, T>`]: ZeroVec
+[`VarZeroVec<'a, T>`]: VarZeroVec
+[`ZeroMap<'a, K, V>`]: ZeroMap
+[`ZeroMap2d<'a, K0, K1, V>`]: ZeroMap2d
+[`Cow<'a, T>`]: alloc::borrow::Cow
+
+## Examples
+
+Serialize and deserialize a struct with ZeroVec and VarZeroVec with Bincode:
+
+```rust
+use zerovec::{VarZeroVec, ZeroVec};
+
+// This example requires the "serde" feature
+#[derive(serde::Serialize, serde::Deserialize)]
+pub struct DataStruct<'data> {
+    #[serde(borrow)]
+    nums: ZeroVec<'data, u32>,
+    #[serde(borrow)]
+    chars: ZeroVec<'data, char>,
+    #[serde(borrow)]
+    strs: VarZeroVec<'data, str>,
+}
+
+let data = DataStruct {
+    nums: ZeroVec::from_slice_or_alloc(&[211, 281, 421, 461]),
+    chars: ZeroVec::alloc_from_slice(&['ö', '冇', 'म']),
+    strs: VarZeroVec::from(&["hello", "world"]),
+};
+let bincode_bytes =
+    bincode::serialize(&data).expect("Serialization should be successful");
+assert_eq!(bincode_bytes.len(), 63);
+
+let deserialized: DataStruct = bincode::deserialize(&bincode_bytes)
+    .expect("Deserialization should be successful");
+assert_eq!(deserialized.nums.first(), Some(211));
+assert_eq!(deserialized.chars.get(1), Some('冇'));
+assert_eq!(deserialized.strs.get(1), Some("world"));
+// The deserialization will not have allocated anything
+assert!(!deserialized.nums.is_owned());
+```
+
+Use custom types inside of ZeroVec:
+
+```rust
+use zerovec::{ZeroVec, VarZeroVec, ZeroMap};
+use std::borrow::Cow;
+use zerovec::ule::encode_varule_to_box;
+
+// custom fixed-size ULE type for ZeroVec
+#[zerovec::make_ule(DateULE)]
+#[derive(Copy, Clone, PartialEq, Eq, Ord, PartialOrd, serde::Serialize, serde::Deserialize)]
+struct Date {
+    y: u64,
+    m: u8,
+    d: u8
+}
+
+// custom variable sized VarULE type for VarZeroVec
+#[zerovec::make_varule(PersonULE)]
+#[zerovec::derive(Serialize, Deserialize)] // add Serde impls to PersonULE
+#[derive(Clone, PartialEq, Eq, Ord, PartialOrd, serde::Serialize, serde::Deserialize)]
+struct Person<'a> {
+    birthday: Date,
+    favorite_character: char,
+    #[serde(borrow)]
+    name: Cow<'a, str>,
+}
+
+#[derive(serde::Serialize, serde::Deserialize)]
+struct Data<'a> {
+    #[serde(borrow)]
+    important_dates: ZeroVec<'a, Date>,
+    // note: VarZeroVec always must reference the ULE type directly
+    #[serde(borrow)]
+    important_people: VarZeroVec<'a, PersonULE>,
+    #[serde(borrow)]
+    birthdays_to_people: ZeroMap<'a, Date, PersonULE>
+}
+
+
+let person1 = Person {
+    birthday: Date { y: 1990, m: 9, d: 7},
+    favorite_character: 'π',
+    name: Cow::from("Kate")
+};
+let person2 = Person {
+    birthday: Date { y: 1960, m: 5, d: 25},
+    favorite_character: '冇',
+    name: Cow::from("Jesse")
+};
+
+let important_dates = ZeroVec::alloc_from_slice(&[Date { y: 1943, m: 3, d: 20}, Date { y: 1976, m: 8, d: 2}, Date { y: 1998, m: 2, d: 15}]);
+let important_people = VarZeroVec::from(&[&person1, &person2]);
+let mut birthdays_to_people: ZeroMap<Date, PersonULE> = ZeroMap::new();
+// `.insert_var_v()` is slightly more convenient over `.insert()` for custom ULE types
+birthdays_to_people.insert_var_v(&person1.birthday, &person1);
+birthdays_to_people.insert_var_v(&person2.birthday, &person2);
+
+let data = Data { important_dates, important_people, birthdays_to_people };
+
+let bincode_bytes = bincode::serialize(&data)
+    .expect("Serialization should be successful");
+assert_eq!(bincode_bytes.len(), 160);
+
+let deserialized: Data = bincode::deserialize(&bincode_bytes)
+    .expect("Deserialization should be successful");
+
+assert_eq!(deserialized.important_dates.get(0).unwrap().y, 1943);
+assert_eq!(&deserialized.important_people.get(1).unwrap().name, "Jesse");
+assert_eq!(&deserialized.important_people.get(0).unwrap().name, "Kate");
+assert_eq!(&deserialized.birthdays_to_people.get(&person1.birthday).unwrap().name, "Kate");
+
+} // feature = serde and derive
+```
+
+## Performance
+
+`zerovec` is designed for fast deserialization from byte buffers with zero memory allocations
+while minimizing performance regressions for common vector operations.
+
+Benchmark results on x86_64:
+
+| Operation | `Vec<T>` | `zerovec` |
+|---|---|---|
+| Deserialize vec of 100 `u32` | 233.18 ns | 14.120 ns |
+| Compute sum of vec of 100 `u32` (read every element) | 8.7472 ns | 10.775 ns |
+| Binary search vec of 1000 `u32` 50 times | 442.80 ns | 472.51 ns |
+| Deserialize vec of 100 strings | 7.3740 μs\* | 1.4495 μs |
+| Count chars in vec of 100 strings (read every element) | 747.50 ns | 955.28 ns |
+| Binary search vec of 500 strings 10 times | 466.09 ns | 790.33 ns |
+
+\* *This result is reported for `Vec<String>`. However, Serde also supports deserializing to the partially-zero-copy `Vec<&str>`; this gives 1.8420 μs, much faster than `Vec<String>` but a bit slower than `zerovec`.*
+
+| Operation | `HashMap<K,V>`  | `LiteMap<K,V>` | `ZeroMap<K,V>` |
+|---|---|---|---|
+| Deserialize a small map | 2.72 μs | 1.28 μs | 480 ns |
+| Deserialize a large map | 50.5 ms | 18.3 ms | 3.74 ms |
+| Look up from a small deserialized map | 49 ns | 42 ns | 54 ns |
+| Look up from a large deserialized map | 51 ns | 155 ns | 213 ns |
+
+Small = 16 elements, large = 131,072 elements. Maps contain `<String, String>`.
+
+The benches used to generate the above table can be found in the `benches` directory in the project repository.
+`zeromap` benches are named by convention, e.g. `zeromap/deserialize/small`, `zeromap/lookup/large`. The type
+is appended for baseline comparisons, e.g. `zeromap/lookup/small/hashmap`.
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/zerovec/benches/vzv.rs b/vendor/zerovec/benches/vzv.rs
new file mode 100644
index 00000000..43592e69
--- /dev/null
+++ b/vendor/zerovec/benches/vzv.rs
@@ -0,0 +1,204 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use rand::SeedableRng;
+use rand_distr::{Alphanumeric, Distribution, Uniform};
+use rand_pcg::Lcg64Xsh32;
+use std::ops::RangeInclusive;
+
+use zerovec::VarZeroVec;
+
+/// Generates an array of random alphanumeric strings.
+///
+/// - length = range of lengths for the strings (chosen uniformly at random)
+/// - count = number of strings to generate
+/// - seed = seed for the PRNG
+///
+/// Returns a tuple including the vector and a u64 that can be used to seed the next PRNG.
+fn random_alphanums(lengths: RangeInclusive<usize>, count: usize, seed: u64) -> (Vec<String>, u64) {
+    // Lcg64Xsh32 is a small, fast PRNG for reproducible benchmarks.
+    let mut rng1 = Lcg64Xsh32::seed_from_u64(seed);
+    let mut rng2 = Lcg64Xsh32::seed_from_u64(rand::Rng::random(&mut rng1));
+    let alpha_dist = Alphanumeric;
+    let len_dist = Uniform::try_from(lengths).expect("range out of bounds");
+    let string_vec = len_dist
+        .sample_iter(&mut rng1)
+        .take(count)
+        .map(|len| {
+            (&alpha_dist)
+                .sample_iter(&mut rng2)
+                .take(len)
+                .map(char::from)
+                .collect::<String>()
+        })
+        .collect();
+    (string_vec, rand::Rng::random(&mut rng1))
+}
+
+fn overview_bench(c: &mut Criterion) {
+    // Same as vzv/char_count/vzv but with different inputs
+    let seed = 42;
+    let (string_vec, _) = random_alphanums(2..=10, 100, seed);
+    let bytes: Vec<u8> = VarZeroVec::<str>::from(&string_vec).into_bytes();
+    let vzv = VarZeroVec::<str>::parse_bytes(black_box(bytes.as_slice())).unwrap();
+
+    c.bench_function("vzv/overview", |b| {
+        b.iter(|| {
+            black_box(&vzv)
+                .iter()
+                .fold(0, |sum, string| sum + string.chars().count())
+        });
+    });
+
+    {
+        char_count_benches(c);
+        binary_search_benches(c);
+        vzv_precompute_bench(c);
+    }
+
+    #[cfg(feature = "serde")]
+    {
+        serde_benches(c);
+    }
+}
+
+fn char_count_benches(c: &mut Criterion) {
+    let seed = 2021;
+    let (string_vec, _) = random_alphanums(2..=20, 100, seed);
+    let bytes: Vec<u8> = VarZeroVec::<str>::from(&string_vec).into_bytes();
+    let vzv = VarZeroVec::<str>::parse_bytes(black_box(bytes.as_slice())).unwrap();
+
+    // *** Count chars in vec of 100 strings ***
+    c.bench_function("vzv/char_count/slice", |b| {
+        b.iter(|| {
+            black_box(&string_vec)
+                .iter()
+                .fold(0, |sum, string| sum + string.chars().count())
+        });
+    });
+
+    // *** Count chars in vec of 100 strings ***
+    c.bench_function("vzv/char_count/vzv", |b| {
+        b.iter(|| {
+            black_box(&vzv)
+                .iter()
+                .fold(0, |sum, string| sum + string.chars().count())
+        });
+    });
+}
+
+fn binary_search_benches(c: &mut Criterion) {
+    let seed = 2021;
+    let (string_vec, seed) = random_alphanums(2..=20, 500, seed);
+    let (needles, _) = random_alphanums(2..=20, 10, seed);
+    let bytes: Vec<u8> = VarZeroVec::<str>::from(&string_vec).into_bytes();
+    let vzv = VarZeroVec::<str>::parse_bytes(black_box(bytes.as_slice())).unwrap();
+    let single_needle = "lmnop".to_owned();
+
+    // *** Binary search vec of 500 strings 10 times ***
+    c.bench_function("vzv/binary_search/slice", |b| {
+        b.iter(|| {
+            black_box(&needles)
+                .iter()
+                .map(|needle| black_box(&string_vec).binary_search(needle))
+                .filter(|r| r.is_ok())
+                .count()
+        });
+    });
+
+    // *** Binary search vec of 500 strings 10 times ***
+    c.bench_function("vzv/binary_search/vzv", |b| {
+        b.iter(|| {
+            black_box(&needles)
+                .iter()
+                .map(|needle| black_box(&vzv).binary_search(needle))
+                .filter(|r| r.is_ok())
+                .count()
+        });
+    });
+
+    c.bench_function("vzv/binary_search/single/slice", |b| {
+        b.iter(|| black_box(&string_vec).binary_search(black_box(&single_needle)));
+    });
+
+    c.bench_function("vzv/binary_search/single/vzv", |b| {
+        b.iter(|| black_box(&vzv).binary_search(black_box(&single_needle)));
+    });
+}
+
+#[cfg(feature = "serde")]
+fn serde_benches(c: &mut Criterion) {
+    let seed = 2021;
+    let (string_vec, _) = random_alphanums(2..=20, 100, seed);
+    let bincode_vec = bincode::serialize(&string_vec).unwrap();
+    let vzv: VarZeroVec<str> = VarZeroVec::from(&*string_vec);
+    let bincode_vzv = bincode::serialize(&vzv).unwrap();
+
+    // *** Deserialize vec of 100 strings ***
+    c.bench_function("vzv/deserialize/string/vec_owned", |b| {
+        b.iter(|| bincode::deserialize::<Vec<String>>(black_box(&bincode_vec)));
+    });
+
+    // *** Deserialize vec of 100 strings ***
+    c.bench_function("vzv/deserialize/string/vec_borrowed", |b| {
+        b.iter(|| bincode::deserialize::<Vec<&str>>(black_box(&bincode_vec)));
+    });
+
+    // *** Deserialize vec of 100 strings ***
+    c.bench_function("vzv/deserialize/string/vzv", |b| {
+        b.iter(|| bincode::deserialize::<VarZeroVec<str>>(black_box(&bincode_vzv)));
+    });
+}
+
+// Testing differences between operating on slices with precomputed/non-precomputed indexing info
+fn vzv_precompute_bench(c: &mut Criterion) {
+    let seed = 2021;
+    let (string_vec, seed) = random_alphanums(2..=20, 500, seed);
+    let (needles, _) = random_alphanums(2..=20, 10, seed);
+    let bytes: Vec<u8> = VarZeroVec::<str>::from(&string_vec).into_bytes();
+    let vzv = VarZeroVec::<str>::parse_bytes(black_box(bytes.as_slice())).unwrap();
+    let borrowed = vzv.as_components();
+    let slice = vzv.as_slice();
+    let single_needle = "lmnop";
+
+    c.bench_function("vzv_precompute/get/precomputed", |b| {
+        b.iter(|| black_box(&borrowed).get(100));
+    });
+
+    c.bench_function("vzv_precompute/get/slice", |b| {
+        b.iter(|| black_box(&slice).get(100));
+    });
+
+    c.bench_function("vzv_precompute/search/precomputed", |b| {
+        b.iter(|| black_box(&borrowed).binary_search(single_needle));
+    });
+
+    c.bench_function("vzv_precompute/search/slice", |b| {
+        b.iter(|| black_box(&slice).binary_search(single_needle));
+    });
+
+    c.bench_function("vzv_precompute/search_multi/precomputed", |b| {
+        b.iter(|| {
+            black_box(&needles)
+                .iter()
+                .map(|needle| black_box(&borrowed).binary_search(needle))
+                .filter(|r| r.is_ok())
+                .count()
+        });
+    });
+
+    c.bench_function("vzv_precompute/search_multi/slice", |b| {
+        b.iter(|| {
+            black_box(&needles)
+                .iter()
+                .map(|needle| black_box(&slice).binary_search(needle))
+                .filter(|r| r.is_ok())
+                .count()
+        });
+    });
+}
+
+criterion_group!(benches, overview_bench,);
+criterion_main!(benches);
diff --git a/vendor/zerovec/benches/zeromap.rs b/vendor/zerovec/benches/zeromap.rs
new file mode 100644
index 00000000..a6ef70ad
--- /dev/null
+++ b/vendor/zerovec/benches/zeromap.rs
@@ -0,0 +1,381 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use std::collections::HashMap;
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+use zerovec::maps::ZeroMapKV;
+use zerovec::vecs::{Index32, VarZeroSlice, VarZeroVec};
+use zerovec::{ZeroHashMap, ZeroMap};
+
+const DATA: [(&str, &str); 16] = [
+    ("ar", "Arabic"),
+    ("bn", "Bangla"),
+    ("ccp", "Chakma"),
+    ("chr", "Cherokee"),
+    ("el", "Greek"),
+    ("en", "English"),
+    ("eo", "Esperanto"),
+    ("es", "Spanish"),
+    ("fr", "French"),
+    ("iu", "Inuktitut"),
+    ("ja", "Japanese"),
+    ("ru", "Russian"),
+    ("sr", "Serbian"),
+    ("th", "Thai"),
+    ("tr", "Turkish"),
+    ("zh", "Chinese"),
+];
+
+const POSTCARD: [u8; 274] = [
+    98, 16, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 7, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 16,
+    0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 30, 0,
+    0, 0, 32, 0, 0, 0, 97, 114, 98, 110, 99, 99, 112, 99, 104, 114, 101, 108, 101, 110, 101, 111,
+    101, 115, 102, 114, 105, 117, 106, 97, 114, 117, 115, 114, 116, 104, 116, 114, 122, 104, 173,
+    1, 16, 0, 0, 0, 6, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 26, 0, 0, 0, 31, 0, 0, 0, 38, 0, 0, 0,
+    47, 0, 0, 0, 54, 0, 0, 0, 60, 0, 0, 0, 69, 0, 0, 0, 77, 0, 0, 0, 84, 0, 0, 0, 91, 0, 0, 0, 95,
+    0, 0, 0, 102, 0, 0, 0, 65, 114, 97, 98, 105, 99, 66, 97, 110, 103, 108, 97, 67, 104, 97, 107,
+    109, 97, 67, 104, 101, 114, 111, 107, 101, 101, 71, 114, 101, 101, 107, 69, 110, 103, 108, 105,
+    115, 104, 69, 115, 112, 101, 114, 97, 110, 116, 111, 83, 112, 97, 110, 105, 115, 104, 70, 114,
+    101, 110, 99, 104, 73, 110, 117, 107, 116, 105, 116, 117, 116, 74, 97, 112, 97, 110, 101, 115,
+    101, 82, 117, 115, 115, 105, 97, 110, 83, 101, 114, 98, 105, 97, 110, 84, 104, 97, 105, 84,
+    117, 114, 107, 105, 115, 104, 67, 104, 105, 110, 101, 115, 101,
+];
+
+const POSTCARD_HASHMAP: [u8; 176] = [
+    16, 2, 114, 117, 7, 82, 117, 115, 115, 105, 97, 110, 3, 99, 99, 112, 6, 67, 104, 97, 107, 109,
+    97, 3, 99, 104, 114, 8, 67, 104, 101, 114, 111, 107, 101, 101, 2, 116, 114, 7, 84, 117, 114,
+    107, 105, 115, 104, 2, 116, 104, 4, 84, 104, 97, 105, 2, 106, 97, 8, 74, 97, 112, 97, 110, 101,
+    115, 101, 2, 101, 115, 7, 83, 112, 97, 110, 105, 115, 104, 2, 101, 111, 9, 69, 115, 112, 101,
+    114, 97, 110, 116, 111, 2, 122, 104, 7, 67, 104, 105, 110, 101, 115, 101, 2, 115, 114, 7, 83,
+    101, 114, 98, 105, 97, 110, 2, 101, 110, 7, 69, 110, 103, 108, 105, 115, 104, 2, 105, 117, 9,
+    73, 110, 117, 107, 116, 105, 116, 117, 116, 2, 102, 114, 6, 70, 114, 101, 110, 99, 104, 2, 98,
+    110, 6, 66, 97, 110, 103, 108, 97, 2, 101, 108, 5, 71, 114, 101, 101, 107, 2, 97, 114, 6, 65,
+    114, 97, 98, 105, 99,
+];
+
+const POSTCARD_ZEROHASHMAP: [u8; 404] = [
+    128, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+    0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,
+    0, 0, 0, 98, 16, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 13, 0,
+    0, 0, 15, 0, 0, 0, 17, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0,
+    0, 30, 0, 0, 0, 32, 0, 0, 0, 115, 114, 101, 111, 116, 114, 97, 114, 105, 117, 99, 99, 112, 102,
+    114, 101, 115, 106, 97, 122, 104, 99, 104, 114, 98, 110, 101, 110, 101, 108, 114, 117, 116,
+    104, 173, 1, 16, 0, 0, 0, 7, 0, 0, 0, 16, 0, 0, 0, 23, 0, 0, 0, 29, 0, 0, 0, 38, 0, 0, 0, 44,
+    0, 0, 0, 50, 0, 0, 0, 57, 0, 0, 0, 65, 0, 0, 0, 72, 0, 0, 0, 80, 0, 0, 0, 86, 0, 0, 0, 93, 0,
+    0, 0, 98, 0, 0, 0, 105, 0, 0, 0, 83, 101, 114, 98, 105, 97, 110, 69, 115, 112, 101, 114, 97,
+    110, 116, 111, 84, 117, 114, 107, 105, 115, 104, 65, 114, 97, 98, 105, 99, 73, 110, 117, 107,
+    116, 105, 116, 117, 116, 67, 104, 97, 107, 109, 97, 70, 114, 101, 110, 99, 104, 83, 112, 97,
+    110, 105, 115, 104, 74, 97, 112, 97, 110, 101, 115, 101, 67, 104, 105, 110, 101, 115, 101, 67,
+    104, 101, 114, 111, 107, 101, 101, 66, 97, 110, 103, 108, 97, 69, 110, 103, 108, 105, 115, 104,
+    71, 114, 101, 101, 107, 82, 117, 115, 115, 105, 97, 110, 84, 104, 97, 105,
+];
+
+/// Run this function to print new data to the console.
+/// Requires the optional `serde` Cargo feature.
+#[allow(dead_code)]
+fn generate_zeromap() {
+    let map = build_zeromap(false);
+    let buf = postcard::to_stdvec(&map).unwrap();
+    println!("{buf:?}");
+}
+
+/// Run this function to print new data to the console.
+/// Requires the optional `serde` Cargo feature.
+#[allow(dead_code)]
+fn generate_hashmap() {
+    let map = build_hashmap(false);
+    let buf = postcard::to_stdvec(&map).unwrap();
+    println!("{buf:?}");
+}
+
+/// Run this function to print new data to the console.
+/// Requires the optional `serde` Cargo feature.
+#[allow(dead_code)]
+fn generate_zerohashmap() {
+    let map = build_zerohashmap(false);
+    let buf = postcard::to_stdvec(&map).unwrap();
+    println!("{buf:?}");
+}
+
+fn overview_bench(c: &mut Criterion) {
+    bench_zeromap(c);
+    bench_hashmap(c);
+    bench_zerohashmap(c);
+}
+
+fn bench_zeromap(c: &mut Criterion) {
+    // Uncomment the following line to re-generate the const data.
+    // generate_hashmap();
+
+    bench_deserialize(c);
+    bench_deserialize_large(c);
+    bench_lookup(c);
+    bench_lookup_large(c);
+}
+
+fn build_zeromap(large: bool) -> ZeroMap<'static, Index32Str, Index32Str> {
+    // TODO(#2826): This should use ZeroMap::from_iter, however that currently takes
+    // *minutes*, whereas this code runs in milliseconds
+    let mut keys = Vec::new();
+    let mut values = Vec::new();
+    let mut data = DATA.to_vec();
+    data.sort();
+    for &(key, value) in data.iter() {
+        if large {
+            for n in 0..8192 {
+                keys.push(format!("{key}{n:04}"));
+                values.push(indexify(value));
+            }
+        } else {
+            keys.push(key.to_owned());
+            values.push(indexify(value));
+        }
+    }
+
+    let keys = keys.iter().map(|s| indexify(s)).collect::<Vec<_>>();
+    // keys are sorted by construction
+    unsafe { ZeroMap::from_parts_unchecked(VarZeroVec::from(&keys), VarZeroVec::from(&values)) }
+}
+
+fn bench_deserialize(c: &mut Criterion) {
+    c.bench_function("zeromap/deserialize/small", |b| {
+        b.iter(|| {
+            let map: ZeroMap<Index32Str, Index32Str> =
+                postcard::from_bytes(black_box(&POSTCARD)).unwrap();
+            assert_eq!(map.get(indexify("iu")).map(|x| &x.0), Some("Inuktitut"));
+        })
+    });
+}
+
+fn bench_deserialize_large(c: &mut Criterion) {
+    let buf = large_zeromap_postcard_bytes();
+    c.bench_function("zeromap/deserialize/large", |b| {
+        b.iter(|| {
+            let map: ZeroMap<Index32Str, Index32Str> =
+                postcard::from_bytes(black_box(&buf)).unwrap();
+            assert_eq!(map.get(indexify("iu3333")).map(|x| &x.0), Some("Inuktitut"));
+        })
+    });
+}
+
+fn bench_lookup(c: &mut Criterion) {
+    let map: ZeroMap<Index32Str, Index32Str> = postcard::from_bytes(black_box(&POSTCARD)).unwrap();
+    c.bench_function("zeromap/lookup/small", |b| {
+        b.iter(|| {
+            assert_eq!(
+                map.get(black_box(indexify("iu"))).map(|x| &x.0),
+                Some("Inuktitut")
+            );
+            assert_eq!(map.get(black_box(indexify("zz"))).map(|x| &x.0), None);
+        });
+    });
+}
+
+fn bench_lookup_large(c: &mut Criterion) {
+    let buf = large_zeromap_postcard_bytes();
+    let map: ZeroMap<Index32Str, Index32Str> = postcard::from_bytes(&buf).unwrap();
+    c.bench_function("zeromap/lookup/large", |b| {
+        b.iter(|| {
+            assert_eq!(
+                map.get(black_box(indexify("iu3333"))).map(|x| &x.0),
+                Some("Inuktitut")
+            );
+            assert_eq!(map.get(black_box(indexify("zz"))).map(|x| &x.0), None);
+        });
+    });
+}
+
+fn large_zeromap_postcard_bytes() -> Vec<u8> {
+    postcard::to_stdvec(&build_zeromap(true)).unwrap()
+}
+
+fn bench_hashmap(c: &mut Criterion) {
+    // Uncomment the following line to re-generate the const data.
+    // generate_hashmap();
+
+    bench_deserialize_hashmap(c);
+    bench_deserialize_large_hashmap(c);
+    bench_lookup_hashmap(c);
+    bench_lookup_large_hashmap(c);
+}
+
+fn build_hashmap(large: bool) -> HashMap<String, String> {
+    let mut map: HashMap<String, String> = HashMap::new();
+    for &(key, value) in DATA.iter() {
+        if large {
+            for n in 0..8192 {
+                map.insert(format!("{key}{n}"), value.to_owned());
+            }
+        } else {
+            map.insert(key.to_owned(), value.to_owned());
+        }
+    }
+    map
+}
+
+fn bench_deserialize_hashmap(c: &mut Criterion) {
+    c.bench_function("zeromap/deserialize/small/hashmap", |b| {
+        b.iter(|| {
+            let map: HashMap<String, String> =
+                postcard::from_bytes(black_box(&POSTCARD_HASHMAP)).unwrap();
+            assert_eq!(map.get("iu"), Some(&"Inuktitut".to_owned()));
+        })
+    });
+}
+
+fn bench_deserialize_large_hashmap(c: &mut Criterion) {
+    let buf = large_hashmap_postcard_bytes();
+    c.bench_function("zeromap/deserialize/large/hashmap", |b| {
+        b.iter(|| {
+            let map: HashMap<String, String> = postcard::from_bytes(black_box(&buf)).unwrap();
+            assert_eq!(map.get("iu3333"), Some(&"Inuktitut".to_owned()));
+        })
+    });
+}
+
+fn bench_lookup_hashmap(c: &mut Criterion) {
+    let map: HashMap<String, String> = postcard::from_bytes(black_box(&POSTCARD_HASHMAP)).unwrap();
+    c.bench_function("zeromap/lookup/small/hashmap", |b| {
+        b.iter(|| {
+            assert_eq!(map.get(black_box("iu")), Some(&"Inuktitut".to_owned()));
+            assert_eq!(map.get(black_box("zz")), None);
+        });
+    });
+}
+
+fn bench_lookup_large_hashmap(c: &mut Criterion) {
+    let buf = large_hashmap_postcard_bytes();
+    let map: HashMap<String, String> = postcard::from_bytes(&buf).unwrap();
+    c.bench_function("zeromap/lookup/large/hashmap", |b| {
+        b.iter(|| {
+            assert_eq!(map.get(black_box("iu3333")), Some(&"Inuktitut".to_owned()));
+            assert_eq!(map.get(black_box("zz")), None);
+        });
+    });
+}
+
+fn large_hashmap_postcard_bytes() -> Vec<u8> {
+    postcard::to_stdvec(&build_hashmap(true)).unwrap()
+}
+
+fn bench_zerohashmap(c: &mut Criterion) {
+    // Uncomment the following line to re-generate the const data.
+    // generate_zerohashmap();
+
+    bench_deserialize_zerohashmap(c);
+    bench_deserialize_large_zerohashmap(c);
+    bench_zerohashmap_lookup(c);
+    bench_zerohashmap_lookup_large(c);
+}
+
+fn build_zerohashmap(large: bool) -> ZeroHashMap<'static, Index32Str, Index32Str> {
+    let mut kv = Vec::new();
+
+    for (key, value) in DATA.iter() {
+        if large {
+            for n in 0..512 {
+                kv.push((format!("{key}{n}"), indexify(value)));
+            }
+        } else {
+            kv.push((key.to_string(), indexify(value)));
+        }
+    }
+
+    ZeroHashMap::from_iter(kv.iter().map(|kv| (indexify(&kv.0), kv.1)))
+}
+
+fn bench_deserialize_zerohashmap(c: &mut Criterion) {
+    c.bench_function("zerohashmap/deserialize/small", |b| {
+        b.iter(|| {
+            let map: ZeroHashMap<Index32Str, Index32Str> =
+                postcard::from_bytes(black_box(&POSTCARD_ZEROHASHMAP)).unwrap();
+            assert_eq!(map.get(indexify("iu")).map(|x| &x.0), Some("Inuktitut"));
+        })
+    });
+}
+
+fn bench_deserialize_large_zerohashmap(c: &mut Criterion) {
+    let buf = large_zerohashmap_postcard_bytes();
+    c.bench_function("zerohashmap/deserialize/large", |b| {
+        b.iter(|| {
+            let map: ZeroHashMap<Index32Str, Index32Str> =
+                postcard::from_bytes(black_box(&buf)).unwrap();
+            assert_eq!(map.get(indexify("iu333")).map(|x| &x.0), Some("Inuktitut"));
+        })
+    });
+}
+
+fn bench_zerohashmap_lookup(c: &mut Criterion) {
+    let zero_hashmap: ZeroHashMap<Index32Str, Index32Str> =
+        postcard::from_bytes(black_box(&POSTCARD_ZEROHASHMAP)).unwrap();
+
+    c.bench_function("zerohashmap/lookup/small", |b| {
+        b.iter(|| {
+            assert_eq!(
+                zero_hashmap.get(black_box(indexify("iu"))).map(|x| &x.0),
+                Some("Inuktitut")
+            );
+            assert_eq!(
+                zero_hashmap.get(black_box(indexify("zz"))).map(|x| &x.0),
+                None
+            );
+        });
+    });
+}
+
+fn bench_zerohashmap_lookup_large(c: &mut Criterion) {
+    let buf = large_zerohashmap_postcard_bytes();
+    let zero_hashmap: ZeroHashMap<Index32Str, Index32Str> = postcard::from_bytes(&buf).unwrap();
+
+    c.bench_function("zerohashmap/lookup/large", |b| {
+        b.iter(|| {
+            assert_eq!(
+                zero_hashmap.get(black_box(indexify("iu333"))).map(|x| &x.0),
+                Some("Inuktitut")
+            );
+            assert_eq!(
+                zero_hashmap.get(black_box(indexify("zz"))).map(|x| &x.0),
+                None
+            );
+        });
+    });
+}
+
+fn large_zerohashmap_postcard_bytes() -> Vec<u8> {
+    postcard::to_stdvec(&build_zerohashmap(true)).unwrap()
+}
+
+criterion_group!(benches, overview_bench);
+criterion_main!(benches);
+
+/// This type lets us use a u32-index-format VarZeroVec with the ZeroMap.
+///
+/// Eventually we will have a FormatSelector type that lets us do `ZeroMap<FormatSelector<K, Index32>, V>`
+/// (https://github.com/unicode-org/icu4x/issues/2312)
+///
+/// ,  isn't actually important; it's just more convenient to use make_varule to get the
+/// full suite of traits instead of `#[derive(VarULE)]`. (With `#[derive(VarULE)]` we would have to manually
+/// define a Serialize implementation, and that would be gnarly)
+/// https://github.com/unicode-org/icu4x/issues/2310 tracks being able to do this with derive(ULE)
+#[zerovec::make_varule(Index32Str)]
+#[zerovec::skip_derive(ZeroMapKV)]
+#[derive(Eq, PartialEq, Ord, PartialOrd, serde::Serialize, serde::Deserialize)]
+#[zerovec::derive(Serialize, Deserialize, Hash)]
+pub(crate) struct Index32StrBorrowed<'a>(#[serde(borrow)] pub &'a str);
+
+impl<'a> ZeroMapKV<'a> for Index32Str {
+    type Container = VarZeroVec<'a, Index32Str, Index32>;
+    type Slice = VarZeroSlice<Index32Str, Index32>;
+    type GetType = Index32Str;
+    type OwnedType = Box<Index32Str>;
+}
+
+#[inline]
+fn indexify(s: &str) -> &Index32Str {
+    unsafe { &*(s as *const str as *const Index32Str) }
+}
diff --git a/vendor/zerovec/benches/zerovec.rs b/vendor/zerovec/benches/zerovec.rs
new file mode 100644
index 00000000..78442fa7
--- /dev/null
+++ b/vendor/zerovec/benches/zerovec.rs
@@ -0,0 +1,164 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use rand::SeedableRng;
+use rand_distr::{Distribution, LogNormal};
+use rand_pcg::Lcg64Xsh32;
+use std::fmt;
+
+#[path = "../src/samples.rs"]
+mod samples;
+use samples::*;
+
+use zerovec::ule::*;
+use zerovec::ZeroVec;
+
+#[repr(align(8))]
+#[derive(Default)]
+struct AlignedBuffer(Vec<u8>);
+
+/// Generate a large list of u32s for stress testing.
+#[allow(dead_code)]
+fn get_needles_and_haystack() -> (Vec<u32>, Vec<u32>) {
+    // Lcg64Xsh32 is a small, fast PRNG for reproducible benchmarks.
+    // LogNormal(10, 1) generates numbers with mean 36315 and mode 8103, a distribution that, in
+    // spirit, correlates with Unicode properties (many low values and a long tail of high values)
+    let mut rng = Lcg64Xsh32::seed_from_u64(2021);
+    let dist = LogNormal::new(10.0, 1.0).unwrap();
+    let haystack = {
+        let mut unsorted: Vec<u32> = (&dist)
+            .sample_iter(&mut rng)
+            .take(1000)
+            .map(|f| f as u32)
+            .collect();
+        unsorted.sort_unstable();
+        unsorted
+    };
+    let needles: Vec<u32> = (&dist)
+        .sample_iter(&mut rng)
+        .take(100)
+        .map(|f| f as u32)
+        .collect();
+    (needles, haystack)
+}
+
+#[allow(dead_code, clippy::ptr_arg)]
+fn vec_to_unaligned_uvec<'a, T>(vec: &Vec<T>, buffer: &'a mut AlignedBuffer) -> ZeroVec<'a, T>
+where
+    T: EqULE + Copy + PartialEq + fmt::Debug,
+{
+    // Pad with zero to ensure it is not aligned
+    buffer.0.push(0);
+    buffer
+        .0
+        .extend(ZeroVec::from_slice_or_alloc(vec.as_slice()).as_bytes());
+    ZeroVec::<T>::parse_bytes(&buffer.0[1..]).unwrap()
+}
+
+fn overview_bench(c: &mut Criterion) {
+    c.bench_function("zerovec/overview", |b| {
+        b.iter(|| {
+            ZeroVec::<u32>::parse_bytes(black_box(TEST_BUFFER_LE))
+                .unwrap()
+                .iter()
+                .sum::<u32>()
+        });
+    });
+
+    {
+        sum_benches(c);
+        binary_search_benches(c);
+    }
+}
+
+fn sum_benches(c: &mut Criterion) {
+    let normal_slice = &TEST_SLICE[0..19];
+    let aligned_ule_slice =
+        <u32 as AsULE>::ULE::parse_bytes_to_slice(&TEST_BUFFER_LE[0..76]).unwrap();
+    let unalign_ule_slice =
+        <u32 as AsULE>::ULE::parse_bytes_to_slice(&TEST_BUFFER_LE[1..77]).unwrap();
+
+    assert_eq!(normal_slice.len(), aligned_ule_slice.len());
+    assert_eq!(normal_slice.len(), unalign_ule_slice.len());
+
+    c.bench_function("zerovec/sum/sample/slice", |b| {
+        b.iter(|| {
+            black_box(normal_slice)
+                .iter()
+                .copied()
+                .fold(0u32, |sum, val| sum.wrapping_add(val))
+        })
+    });
+
+    c.bench_function("zerovec/sum/sample/zerovec_aligned", |b| {
+        b.iter(|| {
+            ZeroVec::<u32>::new_borrowed(black_box(aligned_ule_slice))
+                .iter()
+                .fold(0u32, |sum, val| sum.wrapping_add(val))
+        });
+    });
+
+    c.bench_function("zerovec/sum/sample/zerovec_unaligned", |b| {
+        b.iter(|| {
+            ZeroVec::<u32>::new_borrowed(black_box(unalign_ule_slice))
+                .iter()
+                .fold(0u32, |sum, val| sum.wrapping_add(val))
+        });
+    });
+}
+
+fn binary_search_benches(c: &mut Criterion) {
+    c.bench_function("zerovec/binary_search/sample/slice", |b| {
+        b.iter(|| black_box(&TEST_SLICE).binary_search(&0x0c0d0c));
+    });
+
+    c.bench_function("zerovec/binary_search/sample/zerovec", |b| {
+        let zerovec = ZeroVec::<u32>::parse_bytes(black_box(TEST_BUFFER_LE)).unwrap();
+        b.iter(|| zerovec.binary_search(&0x0c0d0c));
+    });
+
+    let (needles_100, haystack) = get_needles_and_haystack();
+    // Only search for 50 needles to put all figures in nanoseconds
+    let needles_50 = &needles_100[0..50];
+
+    // *** Binary search vec of 1000 `u32` 50 times ***
+    c.bench_function("zerovec/binary_search/log_normal/slice", |b| {
+        b.iter(|| {
+            black_box(&needles_50)
+                .iter()
+                .map(|needle| black_box(&haystack).binary_search(needle))
+                .filter(|r| r.is_ok())
+                .count()
+        });
+    });
+
+    let mut buffer = AlignedBuffer::default();
+    let zerovec = vec_to_unaligned_uvec(black_box(&haystack), &mut buffer);
+    assert_eq!(zerovec, haystack.as_slice());
+
+    // *** Binary search vec of 1000 `u32` 50 times ***
+    c.bench_function("zerovec/binary_search/log_normal/zerovec", |b| {
+        b.iter(|| {
+            black_box(&needles_50)
+                .iter()
+                .map(|needle| black_box(&zerovec).binary_search(needle))
+                .filter(|r| r.is_ok())
+                .count()
+        });
+    });
+
+    let single_needle = 36315;
+
+    c.bench_function("zerovec/binary_search/log_normal/single/slice", |b| {
+        b.iter(|| black_box(&haystack).binary_search(&single_needle));
+    });
+
+    c.bench_function("zerovec/binary_search/log_normal/single/zerovec", |b| {
+        b.iter(|| black_box(&zerovec).binary_search(&single_needle));
+    });
+}
+
+criterion_group!(benches, overview_bench,);
+criterion_main!(benches);
diff --git a/vendor/zerovec/benches/zerovec_iai.rs b/vendor/zerovec/benches/zerovec_iai.rs
new file mode 100644
index 00000000..85e2776c
--- /dev/null
+++ b/vendor/zerovec/benches/zerovec_iai.rs
@@ -0,0 +1,64 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use iai::black_box;
+
+#[path = "../src/samples.rs"]
+mod samples;
+use samples::*;
+
+use zerovec::VarZeroSlice;
+use zerovec::ZeroVec;
+
+fn sum_slice() -> u32 {
+    black_box(TEST_SLICE).iter().sum::<u32>()
+}
+
+fn sum_zerovec() -> u32 {
+    ZeroVec::<u32>::parse_bytes(black_box(TEST_BUFFER_LE))
+        .unwrap()
+        .iter()
+        .sum::<u32>()
+}
+
+fn binarysearch_slice() -> Result<usize, usize> {
+    black_box(TEST_SLICE).binary_search(&0x0c0d0c)
+}
+
+fn binarysearch_zerovec() -> Result<usize, usize> {
+    ZeroVec::<u32>::parse_bytes(black_box(TEST_BUFFER_LE))
+        .unwrap()
+        .binary_search(&0x0c0d0c)
+}
+
+fn varzeroslice_parse_get() -> Option<&'static str> {
+    let slice: &'static VarZeroSlice<str> =
+        VarZeroSlice::parse_bytes(black_box(TEST_VARZEROSLICE_BYTES)).unwrap();
+    slice.get(black_box(1))
+}
+
+fn varzeroslice_get() -> Option<&'static str> {
+    // Safety: The bytes are valid.
+    let slice: &'static VarZeroSlice<str> =
+        unsafe { VarZeroSlice::from_bytes_unchecked(black_box(TEST_VARZEROSLICE_BYTES)) };
+    slice.get(black_box(1))
+}
+
+fn varzeroslice_get_unchecked() -> &'static str {
+    // Safety: The bytes are valid.
+    let slice: &'static VarZeroSlice<str> =
+        unsafe { VarZeroSlice::from_bytes_unchecked(black_box(TEST_VARZEROSLICE_BYTES)) };
+    // Safety: The VarZeroVec has length 4.
+    unsafe { slice.get_unchecked(black_box(1)) }
+}
+
+iai::main!(
+    sum_slice,
+    sum_zerovec,
+    binarysearch_slice,
+    binarysearch_zerovec,
+    varzeroslice_parse_get,
+    varzeroslice_get,
+    varzeroslice_get_unchecked,
+);
diff --git a/vendor/zerovec/benches/zerovec_serde.rs b/vendor/zerovec/benches/zerovec_serde.rs
new file mode 100644
index 00000000..578c8b61
--- /dev/null
+++ b/vendor/zerovec/benches/zerovec_serde.rs
@@ -0,0 +1,139 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use rand::SeedableRng;
+use rand_distr::{Distribution, LogNormal};
+use rand_pcg::Lcg64Xsh32;
+
+#[path = "../src/samples.rs"]
+mod samples;
+use samples::*;
+
+use zerovec::ZeroVec;
+
+/// Generate a large list of u32s for stress testing.
+#[allow(dead_code)]
+fn random_numbers(count: usize) -> Vec<u32> {
+    // Lcg64Xsh32 is a small, fast PRNG for reproducible benchmarks.
+    // LogNormal(10, 1) generates numbers with mean 36315 and mode 8103, a distribution that, in
+    // spirit, correlates with Unicode properties (many low values and a long tail of high values)
+    let mut rng = Lcg64Xsh32::seed_from_u64(2021);
+    let dist = LogNormal::new(10.0, 1.0).unwrap();
+    (&dist)
+        .sample_iter(&mut rng)
+        .take(count)
+        .map(|f| f as u32)
+        .collect()
+}
+
+fn overview_bench(c: &mut Criterion) {
+    c.bench_function("zerovec_serde/overview", |b| {
+        // Same as "zerovec_serde/deserialize_sum/u32/zerovec"
+        let buffer =
+            bincode::serialize(&ZeroVec::<u32>::parse_bytes(black_box(TEST_BUFFER_LE)).unwrap())
+                .unwrap();
+        b.iter(|| {
+            bincode::deserialize::<ZeroVec<u32>>(&buffer)
+                .unwrap()
+                .iter()
+                .sum::<u32>()
+        });
+    });
+
+    {
+        u32_benches(c);
+        char_benches(c);
+        stress_benches(c);
+    }
+}
+
+fn u32_benches(c: &mut Criterion) {
+    c.bench_function("zerovec_serde/serialize/u32/slice", |b| {
+        b.iter(|| bincode::serialize(&Vec::from(black_box(TEST_SLICE))));
+    });
+
+    c.bench_function("zerovec_serde/deserialize_sum/u32/slice", |b| {
+        let buffer = bincode::serialize(&Vec::from(black_box(TEST_SLICE))).unwrap();
+        b.iter(|| {
+            bincode::deserialize::<Vec<u32>>(&buffer)
+                .unwrap()
+                .iter()
+                .sum::<u32>()
+        });
+    });
+
+    c.bench_function("zerovec_serde/serialize/u32/zerovec", |b| {
+        b.iter(|| bincode::serialize(&ZeroVec::from_slice_or_alloc(black_box(TEST_SLICE))));
+    });
+
+    c.bench_function("zerovec_serde/deserialize_sum/u32/zerovec", |b| {
+        let buffer =
+            bincode::serialize(&ZeroVec::<u32>::parse_bytes(black_box(TEST_BUFFER_LE)).unwrap())
+                .unwrap();
+        b.iter(|| {
+            bincode::deserialize::<ZeroVec<u32>>(&buffer)
+                .unwrap()
+                .iter()
+                .sum::<u32>()
+        });
+    });
+}
+
+fn char_benches(c: &mut Criterion) {
+    const ORIGINAL_CHARS: &[char] = &[
+        'ⶢ', '⺇', 'Ⱜ', '◁', '◩', '⌂', '⼅', '⏻', '⢜', '◊', 'ⲫ', '⏷', '◢', '⟉', '℞',
+    ];
+
+    let char_zero_vec = &ZeroVec::alloc_from_slice(ORIGINAL_CHARS);
+
+    c.bench_function("zerovec_serde/serialize/char/slice", |b| {
+        b.iter(|| bincode::serialize(black_box(&Vec::from(ORIGINAL_CHARS))));
+    });
+
+    c.bench_function("zerovec_serde/deserialize/char/slice", |b| {
+        let buffer = bincode::serialize(black_box(&Vec::from(ORIGINAL_CHARS))).unwrap();
+        b.iter(|| bincode::deserialize::<Vec<char>>(&buffer));
+    });
+
+    c.bench_function("zerovec_serde/serialize/char/zerovec", |b| {
+        b.iter(|| bincode::serialize(black_box(char_zero_vec)));
+    });
+
+    c.bench_function("zerovec_serde/deserialize/char/zerovec", |b| {
+        let buffer = bincode::serialize(black_box(char_zero_vec)).unwrap();
+        b.iter(|| bincode::deserialize::<ZeroVec<char>>(&buffer));
+    });
+}
+
+fn stress_benches(c: &mut Criterion) {
+    let number_vec = random_numbers(100);
+    let bincode_vec = bincode::serialize(&number_vec).unwrap();
+    let zerovec_aligned = ZeroVec::from_slice_or_alloc(number_vec.as_slice());
+    let bincode_zerovec = bincode::serialize(&zerovec_aligned).unwrap();
+
+    // *** Deserialize vec of 100 `u32` ***
+    c.bench_function("zerovec_serde/deserialize/stress/vec", |b| {
+        b.iter(|| bincode::deserialize::<Vec<u32>>(&bincode_vec));
+    });
+
+    // *** Deserialize vec of 100 `u32` ***
+    c.bench_function("zerovec_serde/deserialize/stress/zerovec", |b| {
+        b.iter(|| bincode::deserialize::<ZeroVec<u32>>(&bincode_zerovec));
+    });
+
+    // *** Compute sum of vec of 100 `u32` ***
+    c.bench_function("zerovec_serde/sum/stress/vec", |b| {
+        b.iter(|| black_box(&number_vec).iter().sum::<u32>());
+    });
+
+    // *** Compute sum of vec of 100 `u32` ***
+    let zerovec = ZeroVec::<u32>::parse_bytes(zerovec_aligned.as_bytes()).unwrap();
+    c.bench_function("zerovec_serde/sum/stress/zerovec", |b| {
+        b.iter(|| black_box(&zerovec).iter().sum::<u32>());
+    });
+}
+
+criterion_group!(benches, overview_bench,);
+criterion_main!(benches);
diff --git a/vendor/zerovec/examples/zv_serde.rs b/vendor/zerovec/examples/zv_serde.rs
new file mode 100644
index 00000000..d94dfa9d
--- /dev/null
+++ b/vendor/zerovec/examples/zv_serde.rs
@@ -0,0 +1,45 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// This example demonstrates zero-copy, zero-allocation deserialization of a u32 vector
+// stored in a Bincode buffer.
+
+#![no_main] // https://github.com/unicode-org/icu4x/issues/395
+icu_benchmark_macros::instrument!();
+
+use zerovec::ZeroVec;
+
+#[derive(serde::Serialize, serde::Deserialize)]
+struct DataStruct<'s> {
+    #[serde(borrow)]
+    pub nums: ZeroVec<'s, u16>,
+}
+
+const U16_SLICE: [u16; 16] = [
+    196, 989, 414, 731, 660, 217, 716, 353, 218, 730, 245, 846, 122, 294, 922, 488,
+];
+
+const POSTCARD_BYTES: [u8; 33] = [
+    0x20, 0xc4, 0x0, 0xdd, 0x3, 0x9e, 0x1, 0xdb, 0x2, 0x94, 0x2, 0xd9, 0x0, 0xcc, 0x2, 0x61, 0x1,
+    0xda, 0x0, 0xda, 0x2, 0xf5, 0x0, 0x4e, 0x3, 0x7a, 0x0, 0x26, 0x1, 0x9a, 0x3, 0xe8, 0x1,
+];
+
+#[allow(dead_code)]
+fn serialize() {
+    let data = DataStruct {
+        nums: ZeroVec::from_slice_or_alloc(&U16_SLICE),
+    };
+    let postcard_bytes = postcard::to_stdvec(&data).expect("Serialization should be successful");
+    println!("Postcard bytes: {postcard_bytes:#x?}");
+    println!("ZeroVec bytes: {:#x?}", data.nums.as_bytes());
+}
+
+fn main() {
+    // Un-comment the following line to generate postcard data:
+    // serialize();
+
+    let data: DataStruct = postcard::from_bytes(&POSTCARD_BYTES).expect("Valid bytes");
+    let result = data.nums.iter().sum::<u16>();
+    assert_eq!(8141, result);
+}
diff --git a/vendor/zerovec/src/cow.rs b/vendor/zerovec/src/cow.rs
new file mode 100644
index 00000000..fea149fc
--- /dev/null
+++ b/vendor/zerovec/src/cow.rs
@@ -0,0 +1,438 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::ule::{EncodeAsVarULE, UleError, VarULE};
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+use core::fmt;
+use core::marker::PhantomData;
+#[cfg(feature = "alloc")]
+use core::mem::ManuallyDrop;
+use core::ops::Deref;
+use core::ptr::NonNull;
+use zerofrom::ZeroFrom;
+
+/// Copy-on-write type that efficiently represents [`VarULE`] types as their bitstream representation.
+///
+/// The primary use case for [`VarULE`] types is the ability to store complex variable-length datastructures
+/// inside variable-length collections like [`crate::VarZeroVec`].
+///
+/// Underlying this ability is the fact that [`VarULE`] types can be efficiently represented as a flat
+/// bytestream.
+///
+/// In zero-copy cases, sometimes one wishes to unconditionally use this bytestream representation, for example
+/// to save stack size. A struct with five `Cow<'a, str>`s is not as stack-efficient as a single `Cow` containing
+/// the bytestream representation of, say, `Tuple5VarULE<str, str, str, str, str>`.
+///
+/// This type helps in this case: It is logically a `Cow<'a, V>`, with some optimizations, that is guaranteed
+/// to serialize as a byte stream in machine-readable scenarios.
+///
+/// During human-readable serialization, it will fall back to the serde impls on `V`, which ought to have
+/// a human-readable variant.
+pub struct VarZeroCow<'a, V: ?Sized> {
+    /// Safety invariant: Contained slice must be a valid V
+    /// It may or may not have a lifetime valid for 'a, it must be valid for as long as this type is around.
+    raw: RawVarZeroCow,
+    marker1: PhantomData<&'a V>,
+    #[cfg(feature = "alloc")]
+    marker2: PhantomData<Box<V>>,
+}
+
+/// VarZeroCow without the `V` to simulate a dropck eyepatch
+/// (i.e., prove to rustc that the dtor is not able to observe V or 'a)
+///
+/// This is effectively `Cow<'a, [u8]>`, with the lifetime managed externally
+struct RawVarZeroCow {
+    /// Pointer to data
+    ///
+    /// # Safety Invariants
+    ///
+    /// 1. This slice must always be valid as a byte slice
+    /// 2. If `owned` is true, this slice can be freed.
+    /// 3. VarZeroCow, the only user of this type, will impose an additional invariant that the buffer is a valid V
+    buf: NonNull<[u8]>,
+    /// The buffer is `Box<[u8]>` if true
+    #[cfg(feature = "alloc")]
+    owned: bool,
+    // Safety: We do not need any PhantomDatas here, since the Drop impl does not observe borrowed data
+    // if there is any.
+}
+
+#[cfg(feature = "alloc")]
+impl Drop for RawVarZeroCow {
+    fn drop(&mut self) {
+        // Note: this drop impl NEVER observes borrowed data (which may have already been cleaned up by the time the impl is called)
+        if self.owned {
+            unsafe {
+                // Safety: (Invariant 2 on buf)
+                // since owned is true, this is a valid Box<[u8]> and can be cleaned up
+                let _ = Box::<[u8]>::from_raw(self.buf.as_ptr());
+            }
+        }
+    }
+}
+
+// This is mostly just a `Cow<[u8]>`, safe to implement Send and Sync on
+unsafe impl Send for RawVarZeroCow {}
+unsafe impl Sync for RawVarZeroCow {}
+
+impl Clone for RawVarZeroCow {
+    fn clone(&self) -> Self {
+        #[cfg(feature = "alloc")]
+        if self.is_owned() {
+            // This clones the box
+            let b: Box<[u8]> = self.as_bytes().into();
+            let b = ManuallyDrop::new(b);
+            let buf: NonNull<[u8]> = (&**b).into();
+            return Self {
+                // Invariants upheld:
+                // 1 & 3: The bytes came from `self` so they're a valid value and byte slice
+                // 2: This is owned (we cloned it), so we set owned to true.
+                buf,
+                owned: true,
+            };
+        }
+        // Unfortunately we can't just use `new_borrowed(self.deref())` since the lifetime is shorter
+        Self {
+            // Invariants upheld:
+            // 1 & 3: The bytes came from `self` so they're a valid value and byte slice
+            // 2: This is borrowed (we're sharing a borrow), so we set owned to false.
+            buf: self.buf,
+            #[cfg(feature = "alloc")]
+            owned: false,
+        }
+    }
+}
+
+impl<'a, V: ?Sized> Clone for VarZeroCow<'a, V> {
+    fn clone(&self) -> Self {
+        let raw = self.raw.clone();
+        // Invariant upheld: raw came from a valid VarZeroCow, so it
+        // is a valid V
+        unsafe { Self::from_raw(raw) }
+    }
+}
+
+impl<'a, V: VarULE + ?Sized> VarZeroCow<'a, V> {
+    /// Construct from a slice. Errors if the slice doesn't represent a valid `V`
+    pub fn parse_bytes(bytes: &'a [u8]) -> Result<Self, UleError> {
+        let val = V::parse_bytes(bytes)?;
+        Ok(Self::new_borrowed(val))
+    }
+
+    /// Construct from an owned slice. Errors if the slice doesn't represent a valid `V`
+    #[cfg(feature = "alloc")]
+    pub fn parse_owned_bytes(bytes: Box<[u8]>) -> Result<Self, UleError> {
+        V::validate_bytes(&bytes)?;
+        let bytes = ManuallyDrop::new(bytes);
+        let buf: NonNull<[u8]> = (&**bytes).into();
+        let raw = RawVarZeroCow {
+            // Invariants upheld:
+            // 1 & 3: The bytes came from `val` so they're a valid value and byte slice
+            // 2: This is owned, so we set owned to true.
+            buf,
+            owned: true,
+        };
+        Ok(Self {
+            raw,
+            marker1: PhantomData,
+            #[cfg(feature = "alloc")]
+            marker2: PhantomData,
+        })
+    }
+
+    /// Construct from a slice that is known to represent a valid `V`
+    ///
+    /// # Safety
+    ///
+    /// `bytes` must be a valid `V`, i.e. it must successfully pass through
+    /// `V::parse_bytes()` or `V::validate_bytes()`.
+    pub const unsafe fn from_bytes_unchecked(bytes: &'a [u8]) -> Self {
+        unsafe {
+            // Safety: bytes is an &T which is always non-null
+            let buf: NonNull<[u8]> = NonNull::new_unchecked(bytes as *const [u8] as *mut [u8]);
+            let raw = RawVarZeroCow {
+                // Invariants upheld:
+                // 1 & 3: Passed upstream to caller
+                // 2: This is borrowed, so we set owned to false.
+                buf,
+                #[cfg(feature = "alloc")]
+                owned: false,
+            };
+            // Invariant passed upstream to caller
+            Self::from_raw(raw)
+        }
+    }
+
+    /// Construct this from an [`EncodeAsVarULE`] version of the contained type
+    ///
+    /// Will always construct an owned version
+    #[cfg(feature = "alloc")]
+    pub fn from_encodeable<E: EncodeAsVarULE<V>>(encodeable: &E) -> Self {
+        let b = crate::ule::encode_varule_to_box(encodeable);
+        Self::new_owned(b)
+    }
+
+    /// Construct a new borrowed version of this
+    pub fn new_borrowed(val: &'a V) -> Self {
+        unsafe {
+            // Safety: val is a valid V, by type
+            Self::from_bytes_unchecked(val.as_bytes())
+        }
+    }
+
+    /// Construct a new borrowed version of this
+    #[cfg(feature = "alloc")]
+    pub fn new_owned(val: Box<V>) -> Self {
+        let val = ManuallyDrop::new(val);
+        let buf: NonNull<[u8]> = val.as_bytes().into();
+        let raw = RawVarZeroCow {
+            // Invariants upheld:
+            // 1 & 3: The bytes came from `val` so they're a valid value and byte slice
+            // 2: This is owned, so we set owned to true.
+            buf,
+            #[cfg(feature = "alloc")]
+            owned: true,
+        };
+        // The bytes came from `val`, so it's a valid value
+        unsafe { Self::from_raw(raw) }
+    }
+}
+
+impl<'a, V: ?Sized> VarZeroCow<'a, V> {
+    /// Whether or not this is owned
+    pub fn is_owned(&self) -> bool {
+        self.raw.is_owned()
+    }
+
+    /// Get the byte representation of this type
+    ///
+    /// Is also always a valid `V` and can be passed to
+    /// `V::from_bytes_unchecked()`
+    pub fn as_bytes(&self) -> &[u8] {
+        // The valid V invariant comes from Invariant 2
+        self.raw.as_bytes()
+    }
+
+    /// Invariant: `raw` must wrap a valid V, either owned or borrowed for 'a
+    const unsafe fn from_raw(raw: RawVarZeroCow) -> Self {
+        Self {
+            // Invariant passed up to caller
+            raw,
+            marker1: PhantomData,
+            #[cfg(feature = "alloc")]
+            marker2: PhantomData,
+        }
+    }
+}
+
+impl RawVarZeroCow {
+    /// Whether or not this is owned
+    #[inline]
+    pub fn is_owned(&self) -> bool {
+        #[cfg(feature = "alloc")]
+        return self.owned;
+        #[cfg(not(feature = "alloc"))]
+        return false;
+    }
+
+    /// Get the byte representation of this type
+    #[inline]
+    pub fn as_bytes(&self) -> &[u8] {
+        // Safety: Invariant 1 on self.buf
+        unsafe { self.buf.as_ref() }
+    }
+}
+
+impl<'a, V: VarULE + ?Sized> Deref for VarZeroCow<'a, V> {
+    type Target = V;
+    fn deref(&self) -> &V {
+        // Safety: From invariant 2 on self.buf
+        unsafe { V::from_bytes_unchecked(self.as_bytes()) }
+    }
+}
+
+impl<'a, V: VarULE + ?Sized> From<&'a V> for VarZeroCow<'a, V> {
+    fn from(other: &'a V) -> Self {
+        Self::new_borrowed(other)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'a, V: VarULE + ?Sized> From<Box<V>> for VarZeroCow<'a, V> {
+    fn from(other: Box<V>) -> Self {
+        Self::new_owned(other)
+    }
+}
+
+impl<'a, V: VarULE + ?Sized + fmt::Debug> fmt::Debug for VarZeroCow<'a, V> {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+        self.deref().fmt(f)
+    }
+}
+
+// We need manual impls since `#[derive()]` is disallowed on packed types
+impl<'a, V: VarULE + ?Sized + PartialEq> PartialEq for VarZeroCow<'a, V> {
+    fn eq(&self, other: &Self) -> bool {
+        self.deref().eq(other.deref())
+    }
+}
+
+impl<'a, V: VarULE + ?Sized + Eq> Eq for VarZeroCow<'a, V> {}
+
+impl<'a, V: VarULE + ?Sized + PartialOrd> PartialOrd for VarZeroCow<'a, V> {
+    fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
+        self.deref().partial_cmp(other.deref())
+    }
+}
+
+impl<'a, V: VarULE + ?Sized + Ord> Ord for VarZeroCow<'a, V> {
+    fn cmp(&self, other: &Self) -> core::cmp::Ordering {
+        self.deref().cmp(other.deref())
+    }
+}
+
+// # Safety
+//
+// encode_var_ule_len: Produces the length of the contained bytes, which are known to be a valid V by invariant
+//
+// encode_var_ule_write: Writes the contained bytes, which are known to be a valid V by invariant
+unsafe impl<'a, V: VarULE + ?Sized> EncodeAsVarULE<V> for VarZeroCow<'a, V> {
+    fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+        // unnecessary if the other two are implemented
+        unreachable!()
+    }
+
+    #[inline]
+    fn encode_var_ule_len(&self) -> usize {
+        self.as_bytes().len()
+    }
+
+    #[inline]
+    fn encode_var_ule_write(&self, dst: &mut [u8]) {
+        dst.copy_from_slice(self.as_bytes())
+    }
+}
+
+#[cfg(feature = "serde")]
+impl<'a, V: VarULE + ?Sized + serde::Serialize> serde::Serialize for VarZeroCow<'a, V> {
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: serde::Serializer,
+    {
+        if serializer.is_human_readable() {
+            <V as serde::Serialize>::serialize(self.deref(), serializer)
+        } else {
+            serializer.serialize_bytes(self.as_bytes())
+        }
+    }
+}
+
+#[cfg(feature = "serde")]
+impl<'a, 'de: 'a, V: VarULE + ?Sized> serde::Deserialize<'de> for VarZeroCow<'a, V>
+where
+    Box<V>: serde::Deserialize<'de>,
+{
+    fn deserialize<Des>(deserializer: Des) -> Result<Self, Des::Error>
+    where
+        Des: serde::Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let b = Box::<V>::deserialize(deserializer)?;
+            Ok(Self::new_owned(b))
+        } else {
+            let bytes = <&[u8]>::deserialize(deserializer)?;
+            Self::parse_bytes(bytes).map_err(serde::de::Error::custom)
+        }
+    }
+}
+
+#[cfg(feature = "databake")]
+impl<'a, V: VarULE + ?Sized> databake::Bake for VarZeroCow<'a, V> {
+    fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+        env.insert("zerovec");
+        let bytes = self.as_bytes().bake(env);
+        databake::quote! {
+            // Safety: Known to come from a valid V since self.as_bytes() is always a valid V
+            unsafe {
+                zerovec::VarZeroCow::from_bytes_unchecked(#bytes)
+            }
+        }
+    }
+}
+
+#[cfg(feature = "databake")]
+impl<'a, V: VarULE + ?Sized> databake::BakeSize for VarZeroCow<'a, V> {
+    fn borrows_size(&self) -> usize {
+        self.as_bytes().len()
+    }
+}
+
+impl<'a, V: VarULE + ?Sized> ZeroFrom<'a, V> for VarZeroCow<'a, V> {
+    #[inline]
+    fn zero_from(other: &'a V) -> Self {
+        Self::new_borrowed(other)
+    }
+}
+
+impl<'a, 'b, V: VarULE + ?Sized> ZeroFrom<'a, VarZeroCow<'b, V>> for VarZeroCow<'a, V> {
+    #[inline]
+    fn zero_from(other: &'a VarZeroCow<'b, V>) -> Self {
+        Self::new_borrowed(other)
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::VarZeroCow;
+    use crate::ule::tuplevar::Tuple3VarULE;
+    use crate::vecs::VarZeroSlice;
+    #[test]
+    fn test_cow_roundtrip() {
+        type Messy = Tuple3VarULE<str, [u8], VarZeroSlice<str>>;
+        let vec = vec!["one", "two", "three"];
+        let messy: VarZeroCow<Messy> =
+            VarZeroCow::from_encodeable(&("hello", &b"g\xFF\xFFdbye"[..], vec));
+
+        assert_eq!(messy.a(), "hello");
+        assert_eq!(messy.b(), b"g\xFF\xFFdbye");
+        assert_eq!(&messy.c()[1], "two");
+
+        #[cfg(feature = "serde")]
+        {
+            let bincode = bincode::serialize(&messy).unwrap();
+            let deserialized: VarZeroCow<Messy> = bincode::deserialize(&bincode).unwrap();
+            assert_eq!(
+                messy, deserialized,
+                "Single element roundtrips with bincode"
+            );
+            assert!(!deserialized.is_owned());
+
+            let json = serde_json::to_string(&messy).unwrap();
+            let deserialized: VarZeroCow<Messy> = serde_json::from_str(&json).unwrap();
+            assert_eq!(messy, deserialized, "Single element roundtrips with serde");
+        }
+    }
+
+    struct TwoCows<'a> {
+        cow1: VarZeroCow<'a, str>,
+        cow2: VarZeroCow<'a, str>,
+    }
+
+    #[test]
+    fn test_eyepatch_works() {
+        // This code should compile
+        let mut two = TwoCows {
+            cow1: VarZeroCow::new_borrowed("hello"),
+            cow2: VarZeroCow::new_owned("world".into()),
+        };
+        let three = VarZeroCow::new_borrowed(&*two.cow2);
+        two.cow1 = three;
+
+        // Without the eyepatch, dropck will be worried that the dtor of two.cow1 can observe the
+        // data it borrowed from two.cow2, which may have already been deleted
+
+        // This test will fail if you add an empty `impl<'a, V: ?Sized> Drop for VarZeroCow<'a, V>`
+    }
+}
diff --git a/vendor/zerovec/src/hashmap/algorithms.rs b/vendor/zerovec/src/hashmap/algorithms.rs
new file mode 100644
index 00000000..2478b3d7
--- /dev/null
+++ b/vendor/zerovec/src/hashmap/algorithms.rs
@@ -0,0 +1,164 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use alloc::vec;
+use alloc::vec::Vec;
+use core::hash::{Hash, Hasher};
+use twox_hash::XxHash64;
+
+// Const seed to be used with [`XxHash64::with_seed`].
+const SEED: u64 = 0xaabbccdd;
+
+/// Split the 64bit `hash` into (g, f0, f1).
+///
+/// g denotes the highest 16bits of the hash modulo `m`, and is referred to as first level hash.
+/// (f0, f1) denotes the middle, and lower 24bits of the hash respectively.
+/// (f0, f1) are used to distribute the keys with same g, into distinct slots.
+///
+/// # Arguments
+///
+/// * `hash` - The hash to split.
+/// * `m` - The modulo used to split the hash.
+pub const fn split_hash64(hash: u64, m: usize) -> (usize, u32, u32) {
+    (
+        ((hash >> 48) as usize % m),
+        ((hash >> 24) as u32 & 0xffffff),
+        ((hash & 0xffffff) as u32),
+    )
+}
+
+/// Compute hash using [`XxHash64`].
+pub fn compute_hash<K: Hash + ?Sized>(key: &K) -> u64 {
+    let mut hasher = XxHash64::with_seed(SEED);
+    key.hash(&mut hasher);
+    hasher.finish()
+}
+
+/// Calculate the index using (f0, f1), (d0, d1) in modulo m.
+/// Returns [`None`] if d is (0, 0) or modulo is 0
+/// else returns the index computed using (f0 + f1 * d0 + d1) mod m.
+pub fn compute_index(f: (u32, u32), d: (u32, u32), m: u32) -> Option<usize> {
+    if d == (0, 0) || m == 0 {
+        None
+    } else {
+        Some((f.1.wrapping_mul(d.0).wrapping_add(f.0).wrapping_add(d.1) % m) as usize)
+    }
+}
+
+/// Compute displacements for the given `key_hashes`, which split the keys into distinct slots by a
+/// two-level hashing schema.
+///
+/// Returns a tuple of where the first item is the displacement array and the second item is the
+/// reverse mapping used to permute keys, values into their slots.
+///
+/// 1. Split the hashes into (g, f0, f1).
+/// 2. Bucket and sort the split hash on g in descending order.
+/// 3. In decreasing order of bucket size, try until a (d0, d1) is found that splits the keys
+///    in the bucket into distinct slots.
+/// 4. Mark the slots for current bucket as occupied and store the reverse mapping.
+/// 5. Repeat untill all the keys have been assigned distinct slots.
+///
+/// # Arguments
+///
+/// * `key_hashes` - [`ExactSizeIterator`] over the hashed key values
+#[expect(clippy::indexing_slicing, clippy::unwrap_used)]
+pub fn compute_displacements(
+    key_hashes: impl ExactSizeIterator<Item = u64>,
+) -> (Vec<(u32, u32)>, Vec<usize>) {
+    let len = key_hashes.len();
+
+    // A vector to track the size of buckets for sorting.
+    let mut bucket_sizes = vec![0; len];
+
+    // A flattened representation of items in the buckets after applying first level hash function
+    let mut bucket_flatten = Vec::with_capacity(len);
+
+    // Compute initial displacement and bucket sizes
+
+    key_hashes.into_iter().enumerate().for_each(|(i, kh)| {
+        let h = split_hash64(kh, len);
+        bucket_sizes[h.0] += 1;
+        bucket_flatten.push((h, i))
+    });
+
+    // Sort by decreasing order of bucket_sizes.
+    bucket_flatten.sort_by(|&(ha, _), &(hb, _)| {
+        // ha.0, hb.0 are always within bounds of `bucket_sizes`
+        (bucket_sizes[hb.0], hb).cmp(&(bucket_sizes[ha.0], ha))
+    });
+
+    // Generation count while iterating buckets.
+    // Each trial of ((d0, d1), bucket chain) is a new generation.
+    // We use this to track which all slots are assigned for the current bucket chain.
+    let mut generation = 0;
+
+    // Whether a slot has been occupied by previous buckets with a different first level hash (different
+    // bucket chain).
+    let mut occupied = vec![false; len];
+
+    // Track generation count for the slots.
+    // A slot is empty if either it is unoccupied by the previous bucket chains and the
+    // assignment is not equal to generation.
+    let mut assignments = vec![0; len];
+
+    // Vec to store the displacements (saves us a recomputation of hash while assigning slots).
+    let mut current_displacements = Vec::with_capacity(16);
+
+    // (d0, d1) which splits the bucket into different slots
+    let mut displacements = vec![(0, 0); len];
+
+    // Vec to store mapping to the original order of keys.
+    // This is a permutation which will be applied to keys, values at the end.
+    let mut reverse_mapping = vec![0; len];
+
+    let mut start = 0;
+    while start < len {
+        // Bucket span with the same first level hash
+        // start is always within bounds of `bucket_flatten`
+        let g = bucket_flatten[start].0 .0;
+        // g is always within bounds of `bucket_sizes`
+        let end = start + bucket_sizes[g];
+        // start, end - 1 are always within bounds of `bucket_sizes`
+        let buckets = &bucket_flatten[start..end];
+
+        'd0: for d0 in 0..len as u32 {
+            'd1: for d1 in 0..len as u32 {
+                if (d0, d1) == (0, 0) {
+                    continue;
+                }
+                current_displacements.clear();
+                generation += 1;
+
+                for ((_, f0, f1), _) in buckets {
+                    let displacement_idx = compute_index((*f0, *f1), (d0, d1), len as u32).unwrap();
+
+                    // displacement_idx is always within bounds
+                    if occupied[displacement_idx] || assignments[displacement_idx] == generation {
+                        continue 'd1;
+                    }
+                    assignments[displacement_idx] = generation;
+                    current_displacements.push(displacement_idx);
+                }
+
+                // Successfully found a (d0, d1), store it as index g.
+                // g < displacements.len() due to modulo operation
+                displacements[g] = (d0, d1);
+
+                for (i, displacement_idx) in current_displacements.iter().enumerate() {
+                    // `current_displacements` has same size as `buckets`
+                    let (_, idx) = &buckets[i];
+
+                    // displacement_idx is always within bounds
+                    occupied[*displacement_idx] = true;
+                    reverse_mapping[*displacement_idx] = *idx;
+                }
+                break 'd0;
+            }
+        }
+
+        start = end;
+    }
+
+    (displacements, reverse_mapping)
+}
diff --git a/vendor/zerovec/src/hashmap/mod.rs b/vendor/zerovec/src/hashmap/mod.rs
new file mode 100644
index 00000000..608e637f
--- /dev/null
+++ b/vendor/zerovec/src/hashmap/mod.rs
@@ -0,0 +1,239 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::map::{MutableZeroVecLike, ZeroMapKV, ZeroVecLike};
+use crate::ZeroVec;
+use alloc::vec::Vec;
+use core::borrow::Borrow;
+use core::hash::Hash;
+
+pub mod algorithms;
+use algorithms::*;
+
+#[cfg(feature = "serde")]
+mod serde;
+
+/// A perfect zerohashmap optimized for lookups over immutable keys.
+///
+/// # Examples
+/// ```
+/// use zerovec::ZeroHashMap;
+///
+/// let hashmap =
+///     ZeroHashMap::<i32, str>::from_iter([(0, "a"), (1, "b"), (2, "c")]);
+/// assert_eq!(hashmap.get(&0), Some("a"));
+/// assert_eq!(hashmap.get(&2), Some("c"));
+/// assert_eq!(hashmap.get(&4), None);
+/// ```
+#[derive(Debug)]
+pub struct ZeroHashMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    /// Array of (d0, d1) which splits the keys with same first level hash into distinct
+    /// slots.
+    /// The ith index of the array splits the keys with first level hash i.
+    /// If no key with first level hash is found in the original keys, (0, 0) is used as an empty
+    /// placeholder.
+    displacements: ZeroVec<'a, (u32, u32)>,
+    keys: K::Container,
+    values: V::Container,
+}
+
+impl<'a, K, V> ZeroHashMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    /// The number of elements in the [`ZeroHashMap`].
+    pub fn len(&self) -> usize {
+        self.values.zvl_len()
+    }
+
+    /// Whether the [`ZeroHashMap`] is empty.
+    pub fn is_empty(&self) -> bool {
+        self.len() == 0
+    }
+}
+
+impl<'a, K, V> ZeroHashMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized + Hash + Eq,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    /// Given a `key` return the index for the key or [`None`] if the key is absent.
+    fn index<A>(&self, key: &A) -> Option<usize>
+    where
+        A: Borrow<K> + ?Sized,
+    {
+        let hash = compute_hash(key.borrow());
+        let (g, f0, f1) = split_hash64(hash, self.len());
+
+        #[expect(clippy::unwrap_used)] // g is in-range
+        let (d0, d1) = self.displacements.get(g).unwrap();
+        let index = compute_index((f0, f1), (d0, d1), self.displacements.len() as u32)?;
+
+        #[expect(clippy::unwrap_used)] // index is in 0..self.keys.len()
+        let found = self.keys.zvl_get(index).unwrap();
+        if K::Container::zvl_get_as_t(found, |found| found == key.borrow()) {
+            Some(index)
+        } else {
+            None
+        }
+    }
+
+    /// Get the value corresponding to `key`.
+    /// If absent [`None`] is returned.
+    ///
+    /// # Example
+    /// ```
+    /// use zerovec::ZeroHashMap;
+    ///
+    /// let hashmap = ZeroHashMap::<str, str>::from_iter([("a", "A"), ("z", "Z")]);
+    ///
+    /// assert_eq!(hashmap.get("a"), Some("A"));
+    /// assert_eq!(hashmap.get("z"), Some("Z"));
+    /// assert_eq!(hashmap.get("0"), None);
+    /// ```
+    pub fn get<'b, A>(&'b self, key: &A) -> Option<&'b V::GetType>
+    where
+        A: Borrow<K> + ?Sized + 'b,
+    {
+        self.index(key).and_then(|i| self.values.zvl_get(i))
+    }
+
+    /// Returns whether `key` is contained in this hashmap
+    ///
+    /// # Example
+    /// ```rust
+    /// use zerovec::ZeroHashMap;
+    ///
+    /// let hashmap = ZeroHashMap::<str, str>::from_iter([("a", "A"), ("z", "Z")]);
+    ///
+    /// assert!(hashmap.contains_key("a"));
+    /// assert!(!hashmap.contains_key("p"));
+    /// ```
+    pub fn contains_key(&self, key: &K) -> bool {
+        self.index(key).is_some()
+    }
+}
+
+impl<'a, K, V> ZeroHashMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    // Produce an iterator over (key, value) pairs.
+    pub fn iter<'b>(
+        &'b self,
+    ) -> impl ExactSizeIterator<
+        Item = (
+            &'b <K as ZeroMapKV<'a>>::GetType,
+            &'b <V as ZeroMapKV<'a>>::GetType,
+        ),
+    > {
+        (0..self.len()).map(|index| {
+            (
+                #[expect(clippy::unwrap_used)] // index is in range
+                self.keys.zvl_get(index).unwrap(),
+                #[expect(clippy::unwrap_used)] // index is in range
+                self.values.zvl_get(index).unwrap(),
+            )
+        })
+    }
+
+    // Produce an iterator over keys.
+    pub fn iter_keys<'b>(
+        &'b self,
+    ) -> impl ExactSizeIterator<Item = &'b <K as ZeroMapKV<'a>>::GetType> {
+        #[expect(clippy::unwrap_used)] // index is in range
+        (0..self.len()).map(|index| self.keys.zvl_get(index).unwrap())
+    }
+
+    // Produce an iterator over values.
+    pub fn iter_values<'b>(
+        &'b self,
+    ) -> impl ExactSizeIterator<Item = &'b <V as ZeroMapKV<'a>>::GetType> {
+        #[expect(clippy::unwrap_used)] // index is in range
+        (0..self.len()).map(|index| self.values.zvl_get(index).unwrap())
+    }
+}
+
+impl<'a, K, V, A, B> FromIterator<(A, B)> for ZeroHashMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized + Hash + Eq,
+    V: ZeroMapKV<'a> + ?Sized,
+    B: Borrow<V>,
+    A: Borrow<K>,
+{
+    /// Build a [`ZeroHashMap`] from an iterator returning (K, V) tuples.
+    ///
+    /// # Example
+    /// ```
+    /// use zerovec::ZeroHashMap;
+    ///
+    /// let hashmap = ZeroHashMap::<i32, str>::from_iter([
+    ///     (1, "a"),
+    ///     (2, "b"),
+    ///     (3, "c"),
+    ///     (4, "d"),
+    /// ]);
+    /// assert_eq!(hashmap.get(&1), Some("a"));
+    /// assert_eq!(hashmap.get(&2), Some("b"));
+    /// assert_eq!(hashmap.get(&3), Some("c"));
+    /// assert_eq!(hashmap.get(&4), Some("d"));
+    /// ```
+    fn from_iter<T: IntoIterator<Item = (A, B)>>(iter: T) -> Self {
+        let iter = iter.into_iter();
+        let size_hint = match iter.size_hint() {
+            (_, Some(upper)) => upper,
+            (lower, None) => lower,
+        };
+
+        let mut key_hashes = Vec::with_capacity(size_hint);
+        let mut keys = K::Container::zvl_with_capacity(size_hint);
+        let mut values = V::Container::zvl_with_capacity(size_hint);
+        for (k, v) in iter {
+            keys.zvl_push(k.borrow());
+            key_hashes.push(compute_hash(k.borrow()));
+            values.zvl_push(v.borrow());
+        }
+
+        let (displacements, mut reverse_mapping) = compute_displacements(key_hashes.into_iter());
+
+        keys.zvl_permute(&mut reverse_mapping.clone());
+        values.zvl_permute(&mut reverse_mapping);
+
+        Self {
+            displacements: ZeroVec::alloc_from_slice(&displacements),
+            values,
+            keys,
+        }
+    }
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::ule::AsULE;
+    use rand::{distr::StandardUniform, Rng, SeedableRng};
+    use rand_pcg::Lcg64Xsh32;
+
+    #[test]
+    fn test_zhms_u64k_u64v() {
+        const N: usize = 65530;
+        let seed = u64::from_le_bytes(*b"testseed");
+        let rng = Lcg64Xsh32::seed_from_u64(seed);
+        let kv: Vec<(u64, u64)> = rng.sample_iter(&StandardUniform).take(N).collect();
+        let hashmap: ZeroHashMap<u64, u64> =
+            ZeroHashMap::from_iter(kv.iter().map(|e| (&e.0, &e.1)));
+        for (k, v) in kv {
+            assert_eq!(
+                hashmap.get(&k).copied().map(<u64 as AsULE>::from_unaligned),
+                Some(v),
+            );
+        }
+    }
+}
diff --git a/vendor/zerovec/src/hashmap/serde.rs b/vendor/zerovec/src/hashmap/serde.rs
new file mode 100644
index 00000000..0ed2b1a4
--- /dev/null
+++ b/vendor/zerovec/src/hashmap/serde.rs
@@ -0,0 +1,151 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::ZeroHashMap;
+use crate::{
+    map::{ZeroMapKV, ZeroVecLike},
+    ZeroVec,
+};
+
+use serde::{de, Deserialize, Serialize};
+
+impl<'a, K, V> Serialize for ZeroHashMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + Serialize + ?Sized,
+    V: ZeroMapKV<'a> + Serialize + ?Sized,
+    K::Container: Serialize,
+    V::Container: Serialize,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: serde::Serializer,
+    {
+        (&self.displacements, &self.keys, &self.values).serialize(serializer)
+    }
+}
+
+impl<'de, 'a, K, V> Deserialize<'de> for ZeroHashMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K::Container: Deserialize<'de>,
+    V::Container: Deserialize<'de>,
+    'de: 'a,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: serde::Deserializer<'de>,
+    {
+        let (displacements, keys, values): (ZeroVec<(u32, u32)>, K::Container, V::Container) =
+            Deserialize::deserialize(deserializer)?;
+        if keys.zvl_len() != values.zvl_len() {
+            return Err(de::Error::custom(
+                "Mismatched key and value sizes in ZeroHashMap",
+            ));
+        }
+        if displacements.zvl_len() != keys.zvl_len() {
+            return Err(de::Error::custom(
+                "Mismatched displacements and key, value sizes in ZeroHashMap",
+            ));
+        }
+        Ok(Self {
+            displacements,
+            keys,
+            values,
+        })
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use crate::{VarZeroVec, ZeroHashMap, ZeroVec};
+    use serde::{Deserialize, Serialize};
+
+    const JSON_STR: &str = "[[[0,0],[0,1],[0,1]],[1,2,0],[\"b\",\"c\",\"a\"]]";
+
+    const BINCODE_BYTES: &[u8] = &[
+        24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,
+        0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+        3, 0, 1, 0, 2, 0, 98, 99, 97,
+    ];
+
+    #[derive(Serialize, Deserialize)]
+    struct DeriveTestZeroHashMap<'data> {
+        #[serde(borrow)]
+        _data: ZeroHashMap<'data, str, [u8]>,
+    }
+
+    fn make_zerohashmap() -> ZeroHashMap<'static, u32, str> {
+        ZeroHashMap::from_iter([(0, "a"), (1, "b"), (2, "c")])
+    }
+
+    fn build_invalid_hashmap_str(
+        displacements: Vec<(u32, u32)>,
+        keys: Vec<u32>,
+        values: Vec<&str>,
+    ) -> String {
+        let invalid_hm: ZeroHashMap<u32, str> = ZeroHashMap {
+            displacements: ZeroVec::alloc_from_slice(&displacements),
+            keys: ZeroVec::alloc_from_slice(&keys),
+            values: VarZeroVec::<str>::from(&values),
+        };
+        serde_json::to_string(&invalid_hm).expect("serialize")
+    }
+
+    #[test]
+    fn test_invalid_deser_zhm() {
+        // Invalid hashmap |keys| != |values|
+        let mut invalid_hm_str =
+            build_invalid_hashmap_str(vec![(0, 1), (0, 0)], vec![1, 2], vec!["a", "b", "c"]);
+
+        assert_eq!(
+            serde_json::from_str::<ZeroHashMap<u32, str>>(&invalid_hm_str)
+                .unwrap_err()
+                .to_string(),
+            "Mismatched key and value sizes in ZeroHashMap"
+        );
+
+        // Invalid hashmap |displacements| != |keys| == |values|
+        // |displacements| = 2, |keys| = 3, |values| = 3
+        invalid_hm_str =
+            build_invalid_hashmap_str(vec![(0, 1), (0, 0)], vec![2, 1, 0], vec!["a", "b", "c"]);
+
+        assert_eq!(
+            serde_json::from_str::<ZeroHashMap<u32, str>>(&invalid_hm_str)
+                .unwrap_err()
+                .to_string(),
+            "Mismatched displacements and key, value sizes in ZeroHashMap"
+        );
+    }
+
+    // TODO(#6588): Fix sensitivity to host endianness.
+    #[cfg(target_endian = "little")]
+    #[test]
+    fn test_serde_valid_deser_zhm() {
+        let hm = make_zerohashmap();
+        let json_str = serde_json::to_string(&hm).expect("serialize");
+        assert_eq!(json_str, JSON_STR);
+        let deserialized_hm: ZeroHashMap<u32, str> =
+            serde_json::from_str(JSON_STR).expect("deserialize");
+        assert_eq!(
+            hm.iter().collect::<Vec<_>>(),
+            deserialized_hm.iter().collect::<Vec<_>>()
+        );
+    }
+
+    // TODO(#6588): Fix sensitivity to host endianness.
+    #[cfg(target_endian = "little")]
+    #[test]
+    fn test_bincode_zhm() {
+        let hm = make_zerohashmap();
+        let bincode_bytes = bincode::serialize(&hm).expect("serialize");
+        assert_eq!(bincode_bytes, BINCODE_BYTES);
+        let deserialized_hm: ZeroHashMap<u32, str> =
+            bincode::deserialize(BINCODE_BYTES).expect("deserialize");
+        assert_eq!(
+            hm.iter().collect::<Vec<_>>(),
+            deserialized_hm.iter().collect::<Vec<_>>()
+        );
+    }
+}
diff --git a/vendor/zerovec/src/lib.rs b/vendor/zerovec/src/lib.rs
new file mode 100644
index 00000000..aac65cde
--- /dev/null
+++ b/vendor/zerovec/src/lib.rs
@@ -0,0 +1,576 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Zero-copy vector abstractions for arbitrary types, backed by byte slices.
+//!
+//! `zerovec` enables a far wider range of types — beyond just `&[u8]` and `&str` — to participate in
+//! zero-copy deserialization from byte slices. It is `serde` compatible and comes equipped with
+//! proc macros
+//!
+//! Clients upgrading to `zerovec` benefit from zero heap allocations when deserializing
+//! read-only data.
+//!
+//! This crate has four main types:
+//!
+//! - [`ZeroVec<'a, T>`] (and [`ZeroSlice<T>`](ZeroSlice)) for fixed-width types like `u32`
+//! - [`VarZeroVec<'a, T>`] (and [`VarZeroSlice<T>`](ZeroSlice)) for variable-width types like `str`
+//! - [`ZeroMap<'a, K, V>`] to map from `K` to `V`
+//! - [`ZeroMap2d<'a, K0, K1, V>`] to map from the pair `(K0, K1)` to `V`
+//!
+//! The first two are intended as close-to-drop-in replacements for `Vec<T>` in Serde structs. The third and fourth are
+//! intended as a replacement for `HashMap` or [`LiteMap`](https://docs.rs/litemap). When used with Serde derives, **be sure to apply
+//! `#[serde(borrow)]` to these types**, same as one would for [`Cow<'a, T>`].
+//!
+//! [`ZeroVec<'a, T>`], [`VarZeroVec<'a, T>`], [`ZeroMap<'a, K, V>`], and [`ZeroMap2d<'a, K0, K1, V>`] all behave like
+//! [`Cow<'a, T>`] in that they abstract over either borrowed or owned data. When performing deserialization
+//! from human-readable formats (like `json` and `xml`), typically these types will allocate and fully own their data, whereas if deserializing
+//! from binary formats like `bincode` and `postcard`, these types will borrow data directly from the buffer being deserialized from,
+//! avoiding allocations and only performing validity checks. As such, this crate can be pretty fast (see [below](#Performance) for more information)
+//! on deserialization.
+//!
+//! See [the design doc](https://github.com/unicode-org/icu4x/blob/main/utils/zerovec/design_doc.md) for details on how this crate
+//! works under the hood.
+//!
+//! # Cargo features
+//!
+//! This crate has several optional Cargo features:
+//!  - `serde`: Allows serializing and deserializing `zerovec`'s abstractions via [`serde`](https://docs.rs/serde)
+//!  - `yoke`: Enables implementations of `Yokeable` from the [`yoke`](https://docs.rs/yoke/) crate, which is also useful
+//!    in situations involving a lot of zero-copy deserialization.
+//!  - `derive`: Makes it easier to use custom types in these collections by providing the [`#[make_ule]`](crate::make_ule) and
+//!    [`#[make_varule]`](crate::make_varule) proc macros, which generate appropriate [`ULE`](crate::ule::ULE) and
+//!    [`VarULE`](crate::ule::VarULE)-conformant types for a given "normal" type.
+//!  - `std`: Enabled `std::Error` implementations for error types. This crate is by default `no_std` with a dependency on `alloc`.
+//!
+//! [`ZeroVec<'a, T>`]: ZeroVec
+//! [`VarZeroVec<'a, T>`]: VarZeroVec
+//! [`ZeroMap<'a, K, V>`]: ZeroMap
+//! [`ZeroMap2d<'a, K0, K1, V>`]: ZeroMap2d
+//! [`Cow<'a, T>`]: alloc::borrow::Cow
+//!
+//! # Examples
+//!
+//! Serialize and deserialize a struct with ZeroVec and VarZeroVec with Bincode:
+//!
+//! ```
+//! # #[cfg(feature = "serde")] {
+//! use zerovec::{VarZeroVec, ZeroVec};
+//!
+//! // This example requires the "serde" feature
+//! #[derive(serde::Serialize, serde::Deserialize)]
+//! pub struct DataStruct<'data> {
+//!     #[serde(borrow)]
+//!     nums: ZeroVec<'data, u32>,
+//!     #[serde(borrow)]
+//!     chars: ZeroVec<'data, char>,
+//!     #[serde(borrow)]
+//!     strs: VarZeroVec<'data, str>,
+//! }
+//!
+//! let data = DataStruct {
+//!     nums: ZeroVec::from_slice_or_alloc(&[211, 281, 421, 461]),
+//!     chars: ZeroVec::alloc_from_slice(&['ö', '冇', 'म']),
+//!     strs: VarZeroVec::from(&["hello", "world"]),
+//! };
+//! let bincode_bytes =
+//!     bincode::serialize(&data).expect("Serialization should be successful");
+//! assert_eq!(bincode_bytes.len(), 63);
+//!
+//! let deserialized: DataStruct = bincode::deserialize(&bincode_bytes)
+//!     .expect("Deserialization should be successful");
+//! assert_eq!(deserialized.nums.first(), Some(211));
+//! assert_eq!(deserialized.chars.get(1), Some('冇'));
+//! assert_eq!(deserialized.strs.get(1), Some("world"));
+//! // The deserialization will not have allocated anything
+//! assert!(!deserialized.nums.is_owned());
+//! # } // feature = "serde"
+//! ```
+//!
+//! Use custom types inside of ZeroVec:
+//!
+//! ```rust
+//! # #[cfg(all(feature = "serde", feature = "derive"))] {
+//! use zerovec::{ZeroVec, VarZeroVec, ZeroMap};
+//! use std::borrow::Cow;
+//! use zerovec::ule::encode_varule_to_box;
+//!
+//! // custom fixed-size ULE type for ZeroVec
+//! #[zerovec::make_ule(DateULE)]
+//! #[derive(Copy, Clone, PartialEq, Eq, Ord, PartialOrd, serde::Serialize, serde::Deserialize)]
+//! struct Date {
+//!     y: u64,
+//!     m: u8,
+//!     d: u8
+//! }
+//!
+//! // custom variable sized VarULE type for VarZeroVec
+//! #[zerovec::make_varule(PersonULE)]
+//! #[zerovec::derive(Serialize, Deserialize)] // add Serde impls to PersonULE
+//! #[derive(Clone, PartialEq, Eq, Ord, PartialOrd, serde::Serialize, serde::Deserialize)]
+//! struct Person<'a> {
+//!     birthday: Date,
+//!     favorite_character: char,
+//!     #[serde(borrow)]
+//!     name: Cow<'a, str>,
+//! }
+//!
+//! #[derive(serde::Serialize, serde::Deserialize)]
+//! struct Data<'a> {
+//!     #[serde(borrow)]
+//!     important_dates: ZeroVec<'a, Date>,
+//!     // note: VarZeroVec always must reference the ULE type directly
+//!     #[serde(borrow)]
+//!     important_people: VarZeroVec<'a, PersonULE>,
+//!     #[serde(borrow)]
+//!     birthdays_to_people: ZeroMap<'a, Date, PersonULE>
+//! }
+//!
+//!
+//! let person1 = Person {
+//!     birthday: Date { y: 1990, m: 9, d: 7},
+//!     favorite_character: 'π',
+//!     name: Cow::from("Kate")
+//! };
+//! let person2 = Person {
+//!     birthday: Date { y: 1960, m: 5, d: 25},
+//!     favorite_character: '冇',
+//!     name: Cow::from("Jesse")
+//! };
+//!
+//! let important_dates = ZeroVec::alloc_from_slice(&[Date { y: 1943, m: 3, d: 20}, Date { y: 1976, m: 8, d: 2}, Date { y: 1998, m: 2, d: 15}]);
+//! let important_people = VarZeroVec::from(&[&person1, &person2]);
+//! let mut birthdays_to_people: ZeroMap<Date, PersonULE> = ZeroMap::new();
+//! // `.insert_var_v()` is slightly more convenient over `.insert()` for custom ULE types
+//! birthdays_to_people.insert_var_v(&person1.birthday, &person1);
+//! birthdays_to_people.insert_var_v(&person2.birthday, &person2);
+//!
+//! let data = Data { important_dates, important_people, birthdays_to_people };
+//!
+//! let bincode_bytes = bincode::serialize(&data)
+//!     .expect("Serialization should be successful");
+//! assert_eq!(bincode_bytes.len(), 160);
+//!
+//! let deserialized: Data = bincode::deserialize(&bincode_bytes)
+//!     .expect("Deserialization should be successful");
+//!
+//! assert_eq!(deserialized.important_dates.get(0).unwrap().y, 1943);
+//! assert_eq!(&deserialized.important_people.get(1).unwrap().name, "Jesse");
+//! assert_eq!(&deserialized.important_people.get(0).unwrap().name, "Kate");
+//! assert_eq!(&deserialized.birthdays_to_people.get(&person1.birthday).unwrap().name, "Kate");
+//!
+//! } // feature = serde and derive
+//! ```
+//!
+//! # Performance
+//!
+//! `zerovec` is designed for fast deserialization from byte buffers with zero memory allocations
+//! while minimizing performance regressions for common vector operations.
+//!
+//! Benchmark results on x86_64:
+//!
+//! | Operation | `Vec<T>` | `zerovec` |
+//! |---|---|---|
+//! | Deserialize vec of 100 `u32` | 233.18 ns | 14.120 ns |
+//! | Compute sum of vec of 100 `u32` (read every element) | 8.7472 ns | 10.775 ns |
+//! | Binary search vec of 1000 `u32` 50 times | 442.80 ns | 472.51 ns |
+//! | Deserialize vec of 100 strings | 7.3740 μs\* | 1.4495 μs |
+//! | Count chars in vec of 100 strings (read every element) | 747.50 ns | 955.28 ns |
+//! | Binary search vec of 500 strings 10 times | 466.09 ns | 790.33 ns |
+//!
+//! \* *This result is reported for `Vec<String>`. However, Serde also supports deserializing to the partially-zero-copy `Vec<&str>`; this gives 1.8420 μs, much faster than `Vec<String>` but a bit slower than `zerovec`.*
+//!
+//! | Operation | `HashMap<K,V>`  | `LiteMap<K,V>` | `ZeroMap<K,V>` |
+//! |---|---|---|---|
+//! | Deserialize a small map | 2.72 μs | 1.28 μs | 480 ns |
+//! | Deserialize a large map | 50.5 ms | 18.3 ms | 3.74 ms |
+//! | Look up from a small deserialized map | 49 ns | 42 ns | 54 ns |
+//! | Look up from a large deserialized map | 51 ns | 155 ns | 213 ns |
+//!
+//! Small = 16 elements, large = 131,072 elements. Maps contain `<String, String>`.
+//!
+//! The benches used to generate the above table can be found in the `benches` directory in the project repository.
+//! `zeromap` benches are named by convention, e.g. `zeromap/deserialize/small`, `zeromap/lookup/large`. The type
+//! is appended for baseline comparisons, e.g. `zeromap/lookup/small/hashmap`.
+
+// https://github.com/unicode-org/icu4x/blob/main/documents/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, doc)), no_std)]
+#![cfg_attr(
+    not(test),
+    deny(
+        clippy::indexing_slicing,
+        clippy::unwrap_used,
+        clippy::expect_used,
+        clippy::panic,
+        clippy::exhaustive_structs,
+        clippy::exhaustive_enums,
+        clippy::trivially_copy_pass_by_ref,
+        missing_debug_implementations,
+    )
+)]
+// this crate does a lot of nuanced lifetime manipulation, being explicit
+// is better here.
+#![allow(clippy::needless_lifetimes)]
+
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+mod cow;
+#[cfg(feature = "hashmap")]
+pub mod hashmap;
+#[cfg(feature = "alloc")]
+mod map;
+#[cfg(feature = "alloc")]
+mod map2d;
+#[cfg(test)]
+pub mod samples;
+mod varzerovec;
+mod zerovec;
+
+// This must be after `mod zerovec` for some impls on `ZeroSlice<RawBytesULE>`
+// to show up in the right spot in the docs
+pub mod ule;
+#[cfg(feature = "yoke")]
+mod yoke_impls;
+mod zerofrom_impls;
+
+pub use crate::cow::VarZeroCow;
+#[cfg(feature = "hashmap")]
+pub use crate::hashmap::ZeroHashMap;
+#[cfg(feature = "alloc")]
+pub use crate::map::map::ZeroMap;
+#[cfg(feature = "alloc")]
+pub use crate::map2d::map::ZeroMap2d;
+pub use crate::varzerovec::{slice::VarZeroSlice, vec::VarZeroVec};
+pub use crate::zerovec::{ZeroSlice, ZeroVec};
+
+#[doc(hidden)] // macro use
+pub mod __zerovec_internal_reexport {
+    pub use zerofrom::ZeroFrom;
+
+    #[cfg(feature = "alloc")]
+    pub use alloc::borrow;
+    #[cfg(feature = "alloc")]
+    pub use alloc::boxed;
+
+    #[cfg(feature = "serde")]
+    pub use serde;
+}
+
+#[cfg(feature = "alloc")]
+pub mod maps {
+    //! This module contains additional utility types and traits for working with
+    //! [`ZeroMap`] and [`ZeroMap2d`]. See their docs for more details on the general purpose
+    //! of these types.
+    //!
+    //! [`ZeroMapBorrowed`] and [`ZeroMap2dBorrowed`] are versions of [`ZeroMap`] and [`ZeroMap2d`]
+    //! that can be used when you wish to guarantee that the map data is always borrowed, leading to
+    //! relaxed lifetime constraints.
+    //!
+    //! The [`ZeroMapKV`] trait is required to be implemented on any type that needs to be used
+    //! within a map type. [`ZeroVecLike`] and [`MutableZeroVecLike`] are traits used in the
+    //! internal workings of the map types, and should typically not be used or implemented by
+    //! users of this crate.
+    #[doc(no_inline)]
+    pub use crate::map::ZeroMap;
+    pub use crate::map::ZeroMapBorrowed;
+
+    #[doc(no_inline)]
+    pub use crate::map2d::ZeroMap2d;
+    pub use crate::map2d::ZeroMap2dBorrowed;
+
+    pub use crate::map::{MutableZeroVecLike, ZeroMapKV, ZeroVecLike};
+
+    pub use crate::map2d::ZeroMap2dCursor;
+}
+
+pub mod vecs {
+    //! This module contains additional utility types for working with
+    //! [`ZeroVec`] and  [`VarZeroVec`]. See their docs for more details on the general purpose
+    //! of these types.
+    //!
+    //! [`ZeroSlice`] and [`VarZeroSlice`] provide slice-like versions of the vector types
+    //! for use behind references and in custom ULE types.
+    //!
+    //! [`VarZeroVecOwned`] is a special owned/mutable version of [`VarZeroVec`], allowing
+    //! direct manipulation of the backing buffer.
+
+    #[doc(no_inline)]
+    pub use crate::zerovec::{ZeroSlice, ZeroVec};
+
+    pub use crate::zerovec::ZeroSliceIter;
+
+    #[doc(no_inline)]
+    pub use crate::varzerovec::{VarZeroSlice, VarZeroVec};
+
+    #[cfg(feature = "alloc")]
+    pub use crate::varzerovec::VarZeroVecOwned;
+    pub use crate::varzerovec::{Index16, Index32, Index8, VarZeroSliceIter, VarZeroVecFormat};
+
+    pub type VarZeroVec16<'a, T> = VarZeroVec<'a, T, Index16>;
+    pub type VarZeroVec32<'a, T> = VarZeroVec<'a, T, Index32>;
+    pub type VarZeroSlice16<T> = VarZeroSlice<T, Index16>;
+    pub type VarZeroSlice32<T> = VarZeroSlice<T, Index32>;
+}
+
+// Proc macro reexports
+//
+// These exist so that our docs can use intra-doc links.
+// Due to quirks of how rustdoc does documentation on reexports, these must be in this module and not reexported from
+// a submodule
+
+/// Generate a corresponding [`ULE`] type and the relevant [`AsULE`] implementations for this type
+///
+/// This can be attached to structs containing only [`AsULE`] types, or C-like enums that have `#[repr(u8)]`
+/// and all explicit discriminants.
+///
+/// The type must be [`Copy`], [`PartialEq`], and [`Eq`].
+///
+/// `#[make_ule]` will automatically derive the following traits on the [`ULE`] type:
+///
+/// - [`Ord`] and [`PartialOrd`]
+/// - [`ZeroMapKV`]
+///
+/// To disable one of the automatic derives, use `#[zerovec::skip_derive(...)]` like so: `#[zerovec::skip_derive(ZeroMapKV)]`.
+/// `Ord` and `PartialOrd` are implemented as a unit and can only be disabled as a group with `#[zerovec::skip_derive(Ord)]`.
+///
+/// The following traits are available to derive, but not automatic:
+///
+/// - [`Debug`]
+///
+/// To enable one of these additional derives, use `#[zerovec::derive(...)]` like so: `#[zerovec::derive(Debug)]`.
+///
+/// In most cases these derives will defer to the impl of the same trait on the current type, so such impls must exist.
+///
+/// For enums, this attribute will generate a crate-public `fn new_from_u8(value: u8) -> Option<Self>`
+/// method on the main type that allows one to construct the value from a u8. If this method is desired
+/// to be more public, it should be wrapped.
+///
+/// [`ULE`]: ule::ULE
+/// [`AsULE`]: ule::AsULE
+/// [`ZeroMapKV`]: maps::ZeroMapKV
+///
+/// # Example
+///
+/// ```rust
+/// use zerovec::ZeroVec;
+///
+/// #[zerovec::make_ule(DateULE)]
+/// #[derive(
+///     Copy,
+///     Clone,
+///     PartialEq,
+///     Eq,
+///     Ord,
+///     PartialOrd,
+///     serde::Serialize,
+///     serde::Deserialize,
+/// )]
+/// struct Date {
+///     y: u64,
+///     m: u8,
+///     d: u8,
+/// }
+///
+/// #[derive(serde::Serialize, serde::Deserialize)]
+/// struct Dates<'a> {
+///     #[serde(borrow)]
+///     dates: ZeroVec<'a, Date>,
+/// }
+///
+/// let dates = Dates {
+///     dates: ZeroVec::alloc_from_slice(&[
+///         Date {
+///             y: 1985,
+///             m: 9,
+///             d: 3,
+///         },
+///         Date {
+///             y: 1970,
+///             m: 2,
+///             d: 20,
+///         },
+///         Date {
+///             y: 1990,
+///             m: 6,
+///             d: 13,
+///         },
+///     ]),
+/// };
+///
+/// let bincode_bytes =
+///     bincode::serialize(&dates).expect("Serialization should be successful");
+///
+/// // Will deserialize without allocations
+/// let deserialized: Dates = bincode::deserialize(&bincode_bytes)
+///     .expect("Deserialization should be successful");
+///
+/// assert_eq!(deserialized.dates.get(1).unwrap().y, 1970);
+/// assert_eq!(deserialized.dates.get(2).unwrap().d, 13);
+/// ```
+#[cfg(feature = "derive")]
+pub use zerovec_derive::make_ule;
+
+/// Generate a corresponding [`VarULE`] type and the relevant [`EncodeAsVarULE`]/[`zerofrom::ZeroFrom`]
+/// implementations for this type
+///
+/// This can be attached to structs containing only [`AsULE`] types with the last fields being
+/// [`Cow<'a, str>`](alloc::borrow::Cow), [`ZeroSlice`], or [`VarZeroSlice`]. If there is more than one such field, it will be represented
+/// using [`MultiFieldsULE`](crate::ule::MultiFieldsULE) and getters will be generated. Other VarULE fields will be detected if they are
+/// tagged with `#[zerovec::varule(NameOfVarULETy)]`.
+///
+/// The type must be [`PartialEq`] and [`Eq`].
+///
+/// [`EncodeAsVarULE`] and [`zerofrom::ZeroFrom`] are useful for avoiding the need to deal with
+/// the [`VarULE`] type directly. In particular, it is recommended to use [`zerofrom::ZeroFrom`]
+/// to convert the [`VarULE`] type back to this type in a cheap, zero-copy way (see the example below
+/// for more details).
+///
+/// `#[make_varule]` will automatically derive the following traits on the [`VarULE`] type:
+///
+/// - [`Ord`] and [`PartialOrd`]
+/// - [`ZeroMapKV`]
+/// - [`alloc::borrow::ToOwned`]
+///
+/// To disable one of the automatic derives, use `#[zerovec::skip_derive(...)]` like so: `#[zerovec::skip_derive(ZeroMapKV)]`.
+/// `Ord` and `PartialOrd` are implemented as a unit and can only be disabled as a group with `#[zerovec::skip_derive(Ord)]`.
+///
+/// The following traits are available to derive, but not automatic:
+///
+/// - [`Debug`]
+/// - [`Serialize`](serde::Serialize)
+/// - [`Deserialize`](serde::Deserialize)
+///
+/// To enable one of these additional derives, use `#[zerovec::derive(...)]` like so: `#[zerovec::derive(Debug)]`.
+///
+/// In most cases these derives will defer to the impl of the same trait on the current type, so such impls must exist.
+///
+/// This implementation will also by default autogenerate [`Ord`] and [`PartialOrd`] on the [`VarULE`] type based on
+/// the implementation on `Self`. You can opt out of this with `#[zerovec::skip_derive(Ord)]`
+///
+/// Note that this implementation will autogenerate [`EncodeAsVarULE`] impls for _both_ `Self` and `&Self`
+/// for convenience. This allows for a little more flexibility encoding slices.
+///
+/// In case there are multiple [`VarULE`] (i.e., variable-sized) fields, this macro will produce private fields that
+/// appropriately pack the data together, with the packing format by default being [`crate::vecs::Index16`], but can be
+/// overridden with `#[zerovec::format(zerovec::vecs::Index8)]`.
+///
+/// [`EncodeAsVarULE`]: ule::EncodeAsVarULE
+/// [`VarULE`]: ule::VarULE
+/// [`ULE`]: ule::ULE
+/// [`AsULE`]: ule::AsULE
+/// [`ZeroMapKV`]: maps::ZeroMapKV
+///
+/// # Example
+///
+/// ```rust
+/// use std::borrow::Cow;
+/// use zerofrom::ZeroFrom;
+/// use zerovec::ule::encode_varule_to_box;
+/// use zerovec::{VarZeroVec, ZeroMap, ZeroVec};
+///
+/// // custom fixed-size ULE type for ZeroVec
+/// #[zerovec::make_ule(DateULE)]
+/// #[derive(Copy, Clone, PartialEq, Eq, Ord, PartialOrd, serde::Serialize, serde::Deserialize)]
+/// struct Date {
+///     y: u64,
+///     m: u8,
+///     d: u8,
+/// }
+///
+/// // custom variable sized VarULE type for VarZeroVec
+/// #[zerovec::make_varule(PersonULE)]
+/// #[zerovec::derive(Serialize, Deserialize)]
+/// #[derive(Clone, PartialEq, Eq, Ord, PartialOrd, serde::Serialize, serde::Deserialize)]
+/// struct Person<'a> {
+///     birthday: Date,
+///     favorite_character: char,
+///     #[serde(borrow)]
+///     name: Cow<'a, str>,
+/// }
+///
+/// #[derive(serde::Serialize, serde::Deserialize)]
+/// struct Data<'a> {
+///     // note: VarZeroVec always must reference the ULE type directly
+///     #[serde(borrow)]
+///     important_people: VarZeroVec<'a, PersonULE>,
+/// }
+///
+/// let person1 = Person {
+///     birthday: Date {
+///         y: 1990,
+///         m: 9,
+///         d: 7,
+///     },
+///     favorite_character: 'π',
+///     name: Cow::from("Kate"),
+/// };
+/// let person2 = Person {
+///     birthday: Date {
+///         y: 1960,
+///         m: 5,
+///         d: 25,
+///     },
+///     favorite_character: '冇',
+///     name: Cow::from("Jesse"),
+/// };
+///
+/// let important_people = VarZeroVec::from(&[person1, person2]);
+/// let data = Data { important_people };
+///
+/// let bincode_bytes = bincode::serialize(&data).expect("Serialization should be successful");
+///
+/// // Will deserialize without allocations
+/// let deserialized: Data =
+///     bincode::deserialize(&bincode_bytes).expect("Deserialization should be successful");
+///
+/// assert_eq!(&deserialized.important_people.get(1).unwrap().name, "Jesse");
+/// assert_eq!(&deserialized.important_people.get(0).unwrap().name, "Kate");
+///
+/// // Since VarZeroVec produces PersonULE types, it's convenient to use ZeroFrom
+/// // to recoup Person values in a zero-copy way
+/// let person_converted: Person =
+///     ZeroFrom::zero_from(deserialized.important_people.get(1).unwrap());
+/// assert_eq!(person_converted.name, "Jesse");
+/// assert_eq!(person_converted.birthday.y, 1960);
+/// ```
+#[cfg(feature = "derive")]
+pub use zerovec_derive::make_varule;
+
+#[cfg(test)]
+// Expected sizes are based on a 64-bit architecture
+#[cfg(target_pointer_width = "64")]
+mod tests {
+    use super::*;
+    use core::mem::size_of;
+
+    /// Checks that the size of the type is one of the given sizes.
+    /// The size might differ across Rust versions or channels.
+    macro_rules! check_size_of {
+        ($sizes:pat, $type:path) => {
+            assert!(
+                matches!(size_of::<$type>(), $sizes),
+                concat!(stringify!($type), " is of size {}"),
+                size_of::<$type>()
+            );
+        };
+    }
+
+    #[test]
+    fn check_sizes() {
+        check_size_of!(24, ZeroVec<u8>);
+        check_size_of!(24, ZeroVec<u32>);
+        check_size_of!(32 | 24, VarZeroVec<[u8]>);
+        check_size_of!(32 | 24, VarZeroVec<str>);
+        check_size_of!(48, ZeroMap<u32, u32>);
+        check_size_of!(56 | 48, ZeroMap<u32, str>);
+        check_size_of!(56 | 48, ZeroMap<str, u32>);
+        check_size_of!(64 | 48, ZeroMap<str, str>);
+        check_size_of!(120 | 96, ZeroMap2d<str, str, str>);
+
+        check_size_of!(24, Option<ZeroVec<u8>>);
+        check_size_of!(32 | 24, Option<VarZeroVec<str>>);
+        check_size_of!(64 | 56 | 48, Option<ZeroMap<str, str>>);
+        check_size_of!(120 | 104 | 96, Option<ZeroMap2d<str, str, str>>);
+    }
+}
diff --git a/vendor/zerovec/src/map/borrowed.rs b/vendor/zerovec/src/map/borrowed.rs
new file mode 100644
index 00000000..9edecd99
--- /dev/null
+++ b/vendor/zerovec/src/map/borrowed.rs
@@ -0,0 +1,317 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::ule::AsULE;
+use crate::ZeroSlice;
+
+use core::cmp::Ordering;
+use core::fmt;
+
+use super::kv::ZeroMapKV;
+use super::vecs::ZeroVecLike;
+
+/// A borrowed-only version of [`ZeroMap`](super::ZeroMap)
+///
+/// This is useful for fully-zero-copy deserialization from non-human-readable
+/// serialization formats. It also has the advantage that it can return references that live for
+/// the lifetime of the backing buffer as opposed to that of the [`ZeroMapBorrowed`] instance.
+///
+/// # Examples
+///
+/// ```
+/// use zerovec::maps::ZeroMapBorrowed;
+///
+/// // Example byte buffer representing the map { 1: "one" }
+/// let BINCODE_BYTES: &[u8; 25] = &[
+///     4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 1, 0, 111,
+///     110, 101,
+/// ];
+///
+/// // Deserializing to ZeroMap requires no heap allocations.
+/// let zero_map: ZeroMapBorrowed<u32, str> =
+///     bincode::deserialize(BINCODE_BYTES)
+///         .expect("Should deserialize successfully");
+/// assert_eq!(zero_map.get(&1), Some("one"));
+/// ```
+///
+/// This can be obtained from a [`ZeroMap`](super::ZeroMap) via [`ZeroMap::as_borrowed`](super::ZeroMap::as_borrowed)
+pub struct ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K: ?Sized,
+    V: ?Sized,
+{
+    pub(crate) keys: &'a <K as ZeroMapKV<'a>>::Slice,
+    pub(crate) values: &'a <V as ZeroMapKV<'a>>::Slice,
+}
+
+impl<'a, K, V> Copy for ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K: ?Sized,
+    V: ?Sized,
+{
+}
+impl<'a, K, V> Clone for ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K: ?Sized,
+    V: ?Sized,
+{
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+
+impl<'a, K, V> Default for ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K::Slice: 'static,
+    V::Slice: 'static,
+    K: ?Sized,
+    V: ?Sized,
+{
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<'a, K, V> ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K::Slice: 'static,
+    V::Slice: 'static,
+    K: ?Sized,
+    V: ?Sized,
+{
+    /// Creates a new, empty `ZeroMapBorrowed<K, V>`.
+    ///
+    /// Note: Since [`ZeroMapBorrowed`] is not mutable, the return value will be a stub unless
+    /// converted into a [`ZeroMap`](super::ZeroMap).
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::maps::ZeroMapBorrowed;
+    ///
+    /// let zm: ZeroMapBorrowed<u16, str> = ZeroMapBorrowed::new();
+    /// assert!(zm.is_empty());
+    /// ```
+    pub fn new() -> Self {
+        Self {
+            keys: K::Container::zvl_new_borrowed(),
+            values: V::Container::zvl_new_borrowed(),
+        }
+    }
+}
+
+impl<'a, K, V> ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K: ?Sized,
+    V: ?Sized,
+{
+    #[doc(hidden)] // databake internal
+    pub const unsafe fn from_parts_unchecked(
+        keys: &'a <K as ZeroMapKV<'a>>::Slice,
+        values: &'a <V as ZeroMapKV<'a>>::Slice,
+    ) -> Self {
+        Self { keys, values }
+    }
+
+    /// The number of elements in the [`ZeroMapBorrowed`]
+    pub fn len(self) -> usize {
+        self.values.zvl_len()
+    }
+
+    /// Whether the [`ZeroMapBorrowed`] is empty
+    pub fn is_empty(self) -> bool {
+        self.values.zvl_len() == 0
+    }
+}
+
+impl<'a, K, V> ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a> + Ord,
+    V: ZeroMapKV<'a>,
+    K: ?Sized,
+    V: ?Sized,
+{
+    /// Get the value associated with `key`, if it exists.
+    ///
+    /// This is able to return values that live longer than the map itself
+    /// since they borrow directly from the backing buffer. This is the
+    /// primary advantage of using [`ZeroMapBorrowed`](super::ZeroMapBorrowed) over [`ZeroMap`](super::ZeroMap).
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// map.insert(&1, "one");
+    /// map.insert(&2, "two");
+    /// let borrowed = map.as_borrowed();
+    /// assert_eq!(borrowed.get(&1), Some("one"));
+    /// assert_eq!(borrowed.get(&3), None);
+    /// ```
+    pub fn get(self, key: &K) -> Option<&'a V::GetType> {
+        let index = self.keys.zvl_binary_search(key).ok()?;
+        self.values.zvl_get(index)
+    }
+
+    /// Binary search the map with `predicate` to find a key, returning the value.
+    ///
+    /// This is able to return values that live longer than the map itself
+    /// since they borrow directly from the backing buffer. This is the
+    /// primary advantage of using [`ZeroMapBorrowed`](super::ZeroMapBorrowed) over [`ZeroMap`](super::ZeroMap).
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// map.insert(&1, "one");
+    /// map.insert(&2, "two");
+    /// let borrowed = map.as_borrowed();
+    /// assert_eq!(borrowed.get_by(|probe| probe.cmp(&1)), Some("one"));
+    /// assert_eq!(borrowed.get_by(|probe| probe.cmp(&3)), None);
+    /// ```
+    pub fn get_by(self, predicate: impl FnMut(&K) -> Ordering) -> Option<&'a V::GetType> {
+        let index = self.keys.zvl_binary_search_by(predicate).ok()?;
+        self.values.zvl_get(index)
+    }
+
+    /// Returns whether `key` is contained in this map
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// map.insert(&1, "one");
+    /// map.insert(&2, "two");
+    /// let borrowed = map.as_borrowed();
+    /// assert!(borrowed.contains_key(&1));
+    /// assert!(!borrowed.contains_key(&3));
+    /// ```
+    pub fn contains_key(self, key: &K) -> bool {
+        self.keys.zvl_binary_search(key).is_ok()
+    }
+}
+
+impl<'a, K, V> ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    /// Produce an ordered iterator over key-value pairs
+    pub fn iter(
+        self,
+    ) -> impl Iterator<
+        Item = (
+            &'a <K as ZeroMapKV<'a>>::GetType,
+            &'a <V as ZeroMapKV<'a>>::GetType,
+        ),
+    > {
+        self.iter_keys().zip(self.iter_values())
+    }
+
+    /// Produce an ordered iterator over keys
+    pub fn iter_keys(self) -> impl Iterator<Item = &'a <K as ZeroMapKV<'a>>::GetType> {
+        #[expect(clippy::unwrap_used)] // idx in 0..keys.zvl_len()
+        (0..self.keys.zvl_len()).map(move |idx| self.keys.zvl_get(idx).unwrap())
+    }
+
+    /// Produce an iterator over values, ordered by keys
+    pub fn iter_values(self) -> impl Iterator<Item = &'a <V as ZeroMapKV<'a>>::GetType> {
+        #[expect(clippy::unwrap_used)] // idx in 0..keys.zvl_len() == values.zvl_len()
+        (0..self.values.zvl_len()).map(move |idx| self.values.zvl_get(idx).unwrap())
+    }
+}
+
+impl<'a, K, V> ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a> + Ord + ?Sized,
+    V: ZeroMapKV<'a, Slice = ZeroSlice<V>> + AsULE + Copy + 'static,
+{
+    /// For cases when `V` is fixed-size, obtain a direct copy of `V` instead of `V::ULE`
+    pub fn get_copied(self, key: &K) -> Option<V> {
+        let index = self.keys.zvl_binary_search(key).ok()?;
+        self.values.get(index)
+    }
+
+    /// For cases when `V` is fixed-size, obtain a direct copy of `V` instead of `V::ULE`
+    pub fn get_copied_by(self, predicate: impl FnMut(&K) -> Ordering) -> Option<V> {
+        let index = self.keys.zvl_binary_search_by(predicate).ok()?;
+        self.values.get(index)
+    }
+
+    /// Similar to [`Self::iter()`] except it returns a direct copy of the values instead of references
+    /// to `V::ULE`, in cases when `V` is fixed-size
+    pub fn iter_copied_values(
+        self,
+    ) -> impl Iterator<Item = (&'a <K as ZeroMapKV<'a>>::GetType, V)> {
+        (0..self.keys.zvl_len()).map(move |idx| {
+            (
+                #[expect(clippy::unwrap_used)] // idx in 0..keys.zvl_len()
+                self.keys.zvl_get(idx).unwrap(),
+                #[expect(clippy::unwrap_used)] // idx in 0..keys.zvl_len() = values.zvl_len()
+                self.values.get(idx).unwrap(),
+            )
+        })
+    }
+}
+
+impl<'a, K, V> ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a, Slice = ZeroSlice<K>> + AsULE + Copy + Ord + 'static,
+    V: ZeroMapKV<'a, Slice = ZeroSlice<V>> + AsULE + Copy + 'static,
+{
+    /// Similar to [`Self::iter()`] except it returns a direct copy of the keys values instead of references
+    /// to `K::ULE` and `V::ULE`, in cases when `K` and `V` are fixed-size
+    pub fn iter_copied(self) -> impl Iterator<Item = (K, V)> + 'a {
+        let len = self.keys.zvl_len();
+        (0..len).map(move |idx| {
+            (
+                #[expect(clippy::unwrap_used)] // idx in 0..keys.zvl_len()
+                ZeroSlice::get(self.keys, idx).unwrap(),
+                #[expect(clippy::unwrap_used)] // idx in 0..keys.zvl_len() = values.zvl_len()
+                ZeroSlice::get(self.values, idx).unwrap(),
+            )
+        })
+    }
+}
+
+// We can't use the default PartialEq because ZeroMap is invariant
+// so otherwise rustc will not automatically allow you to compare ZeroMaps
+// with different lifetimes
+impl<'a, 'b, K, V> PartialEq<ZeroMapBorrowed<'b, K, V>> for ZeroMapBorrowed<'a, K, V>
+where
+    K: for<'c> ZeroMapKV<'c> + ?Sized,
+    V: for<'c> ZeroMapKV<'c> + ?Sized,
+    <K as ZeroMapKV<'a>>::Slice: PartialEq<<K as ZeroMapKV<'b>>::Slice>,
+    <V as ZeroMapKV<'a>>::Slice: PartialEq<<V as ZeroMapKV<'b>>::Slice>,
+{
+    fn eq(&self, other: &ZeroMapBorrowed<'b, K, V>) -> bool {
+        self.keys.eq(other.keys) && self.values.eq(other.values)
+    }
+}
+
+impl<'a, K, V> fmt::Debug for ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K::Slice: fmt::Debug,
+    V::Slice: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+        f.debug_struct("ZeroMapBorrowed")
+            .field("keys", &self.keys)
+            .field("values", &self.values)
+            .finish()
+    }
+}
diff --git a/vendor/zerovec/src/map/databake.rs b/vendor/zerovec/src/map/databake.rs
new file mode 100644
index 00000000..c1e5ffe0
--- /dev/null
+++ b/vendor/zerovec/src/map/databake.rs
@@ -0,0 +1,108 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::{maps::ZeroMapBorrowed, maps::ZeroMapKV, ZeroMap};
+use databake::*;
+
+impl<'a, K, V> Bake for ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K::Container: Bake,
+    V::Container: Bake,
+{
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("zerovec");
+        let keys = self.keys.bake(env);
+        let values = self.values.bake(env);
+        quote! { unsafe { #[allow(unused_unsafe)] zerovec::ZeroMap::from_parts_unchecked(#keys, #values) } }
+    }
+}
+
+impl<'a, K, V> BakeSize for ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K::Container: BakeSize,
+    V::Container: BakeSize,
+{
+    fn borrows_size(&self) -> usize {
+        self.keys.borrows_size() + self.values.borrows_size()
+    }
+}
+
+impl<'a, K, V> Bake for ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    &'a K::Slice: Bake,
+    &'a V::Slice: Bake,
+{
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("zerovec");
+        let keys = self.keys.bake(env);
+        let values = self.values.bake(env);
+        quote! { unsafe { #[allow(unused_unsafe)] zerovec::maps::ZeroMapBorrowed::from_parts_unchecked(#keys, #values) } }
+    }
+}
+
+impl<'a, K, V> BakeSize for ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    &'a K::Slice: BakeSize,
+    &'a V::Slice: BakeSize,
+{
+    fn borrows_size(&self) -> usize {
+        self.keys.borrows_size() + self.values.borrows_size()
+    }
+}
+
+#[test]
+fn test_baked_map() {
+    test_bake!(
+        ZeroMap<str, str>,
+        const,
+        unsafe {
+            #[allow(unused_unsafe)]
+            crate::ZeroMap::from_parts_unchecked(
+                unsafe {
+                    crate::vecs::VarZeroVec16::from_bytes_unchecked(
+                        b"\x02\0\0\0\0\0\0\0\x02\0\0\0adbc"
+                    )
+                },
+                unsafe {
+                    crate::vecs::VarZeroVec16::from_bytes_unchecked(
+                        b"\x02\0\0\0\0\0\0\0\x04\0\0\0ERA1ERA0"
+                    )
+                },
+            )
+        },
+        zerovec
+    );
+}
+
+#[test]
+fn test_baked_borrowed_map() {
+    test_bake!(
+        ZeroMapBorrowed<str, str>,
+        const,
+        unsafe {
+            #[allow(unused_unsafe)]
+            crate::maps::ZeroMapBorrowed::from_parts_unchecked(
+                unsafe {
+                    crate::vecs::VarZeroSlice16::from_bytes_unchecked(
+                        b"\x02\0\0\0\0\0\0\0\x02\0\0\0adbc"
+                    )
+                },
+                unsafe {
+                    crate::vecs::VarZeroSlice16::from_bytes_unchecked(
+                        b"\x02\0\0\0\0\0\0\0\x04\0\0\0ERA1ERA0"
+                    )
+                },
+            )
+        },
+        zerovec
+    );
+}
diff --git a/vendor/zerovec/src/map/kv.rs b/vendor/zerovec/src/map/kv.rs
new file mode 100644
index 00000000..9ca675fd
--- /dev/null
+++ b/vendor/zerovec/src/map/kv.rs
@@ -0,0 +1,137 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::vecs::{MutableZeroVecLike, ZeroVecLike};
+use crate::ule::vartuple::VarTupleULE;
+use crate::ule::*;
+use crate::vecs::{VarZeroSlice, VarZeroVec};
+use crate::zerovec::{ZeroSlice, ZeroVec};
+use alloc::boxed::Box;
+
+/// Trait marking types which are allowed to be keys or values in [`ZeroMap`](super::ZeroMap).
+///
+/// Users should not be calling methods of this trait directly, however if you are
+/// implementing your own [`AsULE`] or [`VarULE`] type you may wish to implement
+/// this trait.
+// this lifetime should be a GAT on Container once that is possible
+pub trait ZeroMapKV<'a> {
+    /// The container that can be used with this type: [`ZeroVec`] or [`VarZeroVec`].
+    type Container: MutableZeroVecLike<
+            'a,
+            Self,
+            SliceVariant = Self::Slice,
+            GetType = Self::GetType,
+            OwnedType = Self::OwnedType,
+        > + Sized;
+    type Slice: ZeroVecLike<Self, GetType = Self::GetType> + ?Sized;
+    /// The type produced by `Container::get()`
+    ///
+    /// This type will be predetermined by the choice of `Self::Container`:
+    /// For sized types this must be `T::ULE`, and for unsized types this must be `T`
+    type GetType: ?Sized + 'static;
+    /// The type produced by `Container::replace()` and `Container::remove()`,
+    /// also used during deserialization. If `Self` is human readable serialized,
+    /// deserializing to `Self::OwnedType` should produce the same value once
+    /// passed through `Self::owned_as_self()`
+    ///
+    /// This type will be predetermined by the choice of `Self::Container`:
+    /// For sized types this must be `T` and for unsized types this must be `Box<T>`
+    type OwnedType: 'static;
+}
+
+macro_rules! impl_sized_kv {
+    ($ty:path) => {
+        impl<'a> ZeroMapKV<'a> for $ty {
+            type Container = ZeroVec<'a, $ty>;
+            type Slice = ZeroSlice<$ty>;
+            type GetType = <$ty as AsULE>::ULE;
+            type OwnedType = $ty;
+        }
+    };
+}
+
+impl_sized_kv!(u8);
+impl_sized_kv!(u16);
+impl_sized_kv!(u32);
+impl_sized_kv!(u64);
+impl_sized_kv!(u128);
+impl_sized_kv!(i8);
+impl_sized_kv!(i16);
+impl_sized_kv!(i32);
+impl_sized_kv!(i64);
+impl_sized_kv!(i128);
+impl_sized_kv!(char);
+impl_sized_kv!(f32);
+impl_sized_kv!(f64);
+
+impl_sized_kv!(core::num::NonZeroU8);
+impl_sized_kv!(core::num::NonZeroI8);
+
+impl<'a, T> ZeroMapKV<'a> for Option<T>
+where
+    Option<T>: AsULE + 'static,
+{
+    type Container = ZeroVec<'a, Option<T>>;
+    type Slice = ZeroSlice<Option<T>>;
+    type GetType = <Option<T> as AsULE>::ULE;
+    type OwnedType = Option<T>;
+}
+
+impl<'a, T> ZeroMapKV<'a> for OptionVarULE<T>
+where
+    T: VarULE + ?Sized,
+{
+    type Container = VarZeroVec<'a, OptionVarULE<T>>;
+    type Slice = VarZeroSlice<OptionVarULE<T>>;
+    type GetType = OptionVarULE<T>;
+    type OwnedType = Box<OptionVarULE<T>>;
+}
+
+impl<'a, A, B> ZeroMapKV<'a> for VarTupleULE<A, B>
+where
+    A: AsULE + 'static,
+    B: VarULE + ?Sized,
+{
+    type Container = VarZeroVec<'a, VarTupleULE<A, B>>;
+    type Slice = VarZeroSlice<VarTupleULE<A, B>>;
+    type GetType = VarTupleULE<A, B>;
+    type OwnedType = Box<VarTupleULE<A, B>>;
+}
+
+impl<'a> ZeroMapKV<'a> for str {
+    type Container = VarZeroVec<'a, str>;
+    type Slice = VarZeroSlice<str>;
+    type GetType = str;
+    type OwnedType = Box<str>;
+}
+
+impl<'a, T> ZeroMapKV<'a> for [T]
+where
+    T: ULE + AsULE<ULE = T>,
+{
+    type Container = VarZeroVec<'a, [T]>;
+    type Slice = VarZeroSlice<[T]>;
+    type GetType = [T];
+    type OwnedType = Box<[T]>;
+}
+
+impl<'a, T, const N: usize> ZeroMapKV<'a> for [T; N]
+where
+    T: AsULE + 'static,
+{
+    type Container = ZeroVec<'a, [T; N]>;
+    type Slice = ZeroSlice<[T; N]>;
+    type GetType = [T::ULE; N];
+    type OwnedType = [T; N];
+}
+
+impl<'a, T> ZeroMapKV<'a> for ZeroSlice<T>
+where
+    T: AsULE + 'static,
+{
+    type Container = VarZeroVec<'a, ZeroSlice<T>>;
+    type Slice = VarZeroSlice<ZeroSlice<T>>;
+    type GetType = ZeroSlice<T>;
+    type OwnedType = Box<ZeroSlice<T>>;
+}
diff --git a/vendor/zerovec/src/map/map.rs b/vendor/zerovec/src/map/map.rs
new file mode 100644
index 00000000..6276cc1b
--- /dev/null
+++ b/vendor/zerovec/src/map/map.rs
@@ -0,0 +1,646 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use crate::ule::{AsULE, EncodeAsVarULE, UleError, VarULE};
+use crate::{VarZeroVec, ZeroSlice, ZeroVec};
+use alloc::borrow::Borrow;
+use alloc::boxed::Box;
+use core::cmp::Ordering;
+use core::fmt;
+use core::iter::FromIterator;
+
+/// A zero-copy map datastructure, built on sorted binary-searchable [`ZeroVec`]
+/// and [`VarZeroVec`].
+///
+/// This type, like [`ZeroVec`] and [`VarZeroVec`], is able to zero-copy
+/// deserialize from appropriately formatted byte buffers. It is internally copy-on-write, so it can be mutated
+/// afterwards as necessary.
+///
+/// Internally, a `ZeroMap` is a zero-copy vector for keys paired with a zero-copy vector for
+/// values, sorted by the keys. Therefore, all types used in `ZeroMap` need to work with either
+/// [`ZeroVec`] or [`VarZeroVec`].
+///
+/// This does mean that for fixed-size data, one must use the regular type (`u32`, `u8`, `char`, etc),
+/// whereas for variable-size data, `ZeroMap` will use the dynamically sized version (`str` not `String`,
+/// `ZeroSlice` not `ZeroVec`, `FooULE` not `Foo` for custom types)
+///
+/// # Examples
+///
+/// ```
+/// use zerovec::ZeroMap;
+///
+/// #[derive(serde::Serialize, serde::Deserialize)]
+/// struct Data<'a> {
+///     #[serde(borrow)]
+///     map: ZeroMap<'a, u32, str>,
+/// }
+///
+/// let mut map = ZeroMap::new();
+/// map.insert(&1, "one");
+/// map.insert(&2, "two");
+/// map.insert(&4, "four");
+///
+/// let data = Data { map };
+///
+/// let bincode_bytes =
+///     bincode::serialize(&data).expect("Serialization should be successful");
+///
+/// // Will deserialize without any allocations
+/// let deserialized: Data = bincode::deserialize(&bincode_bytes)
+///     .expect("Deserialization should be successful");
+///
+/// assert_eq!(data.map.get(&1), Some("one"));
+/// assert_eq!(data.map.get(&2), Some("two"));
+/// ```
+///
+/// [`VarZeroVec`]: crate::VarZeroVec
+// ZeroMap has only one invariant: keys.len() == values.len()
+// It is also expected that the keys are sorted, but this is not an invariant. See #1433
+pub struct ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    pub(crate) keys: K::Container,
+    pub(crate) values: V::Container,
+}
+
+impl<'a, K, V> Default for ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<'a, K, V> ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    /// Creates a new, empty `ZeroMap<K, V>`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::ZeroMap;
+    ///
+    /// let zm: ZeroMap<u16, str> = ZeroMap::new();
+    /// assert!(zm.is_empty());
+    /// ```
+    pub fn new() -> Self {
+        Self {
+            keys: K::Container::zvl_with_capacity(0),
+            values: V::Container::zvl_with_capacity(0),
+        }
+    }
+
+    #[doc(hidden)] // databake internal
+    pub const unsafe fn from_parts_unchecked(keys: K::Container, values: V::Container) -> Self {
+        Self { keys, values }
+    }
+
+    /// Construct a new [`ZeroMap`] with a given capacity
+    pub fn with_capacity(capacity: usize) -> Self {
+        Self {
+            keys: K::Container::zvl_with_capacity(capacity),
+            values: V::Container::zvl_with_capacity(capacity),
+        }
+    }
+
+    /// Obtain a borrowed version of this map
+    pub fn as_borrowed(&'a self) -> ZeroMapBorrowed<'a, K, V> {
+        ZeroMapBorrowed {
+            keys: self.keys.zvl_as_borrowed(),
+            values: self.values.zvl_as_borrowed(),
+        }
+    }
+
+    /// The number of elements in the [`ZeroMap`]
+    pub fn len(&self) -> usize {
+        self.values.zvl_len()
+    }
+
+    /// Whether the [`ZeroMap`] is empty
+    pub fn is_empty(&self) -> bool {
+        self.values.zvl_len() == 0
+    }
+
+    /// Remove all elements from the [`ZeroMap`]
+    pub fn clear(&mut self) {
+        self.keys.zvl_clear();
+        self.values.zvl_clear();
+    }
+
+    /// Reserve capacity for `additional` more elements to be inserted into
+    /// the [`ZeroMap`] to avoid frequent reallocations.
+    ///
+    /// See [`Vec::reserve()`](alloc::vec::Vec::reserve) for more information.
+    pub fn reserve(&mut self, additional: usize) {
+        self.keys.zvl_reserve(additional);
+        self.values.zvl_reserve(additional);
+    }
+}
+impl<'a, K, V> ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized + Ord,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    /// Get the value associated with `key`, if it exists.
+    ///
+    /// For fixed-size ([`AsULE`]) `V` types, this _will_ return
+    /// their corresponding [`AsULE::ULE`] type. If you wish to work with the `V`
+    /// type directly, [`Self::get_copied()`] exists for convenience.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// map.insert(&1, "one");
+    /// map.insert(&2, "two");
+    /// assert_eq!(map.get(&1), Some("one"));
+    /// assert_eq!(map.get(&3), None);
+    /// ```
+    pub fn get(&self, key: &K) -> Option<&V::GetType> {
+        let index = self.keys.zvl_binary_search(key).ok()?;
+        self.values.zvl_get(index)
+    }
+
+    /// Binary search the map with `predicate` to find a key, returning the value.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// map.insert(&1, "one");
+    /// map.insert(&2, "two");
+    /// assert_eq!(map.get_by(|probe| probe.cmp(&1)), Some("one"));
+    /// assert_eq!(map.get_by(|probe| probe.cmp(&3)), None);
+    /// ```
+    pub fn get_by(&self, predicate: impl FnMut(&K) -> Ordering) -> Option<&V::GetType> {
+        let index = self.keys.zvl_binary_search_by(predicate).ok()?;
+        self.values.zvl_get(index)
+    }
+
+    /// Returns whether `key` is contained in this map
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// map.insert(&1, "one");
+    /// map.insert(&2, "two");
+    /// assert!(map.contains_key(&1));
+    /// assert!(!map.contains_key(&3));
+    /// ```
+    pub fn contains_key(&self, key: &K) -> bool {
+        self.keys.zvl_binary_search(key).is_ok()
+    }
+
+    /// Insert `value` with `key`, returning the existing value if it exists.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// map.insert(&1, "one");
+    /// map.insert(&2, "two");
+    /// assert_eq!(map.get(&1), Some("one"));
+    /// assert_eq!(map.get(&3), None);
+    /// ```
+    pub fn insert(&mut self, key: &K, value: &V) -> Option<V::OwnedType> {
+        match self.keys.zvl_binary_search(key) {
+            Ok(index) => Some(self.values.zvl_replace(index, value)),
+            Err(index) => {
+                self.keys.zvl_insert(index, key);
+                self.values.zvl_insert(index, value);
+                None
+            }
+        }
+    }
+
+    /// Remove the value at `key`, returning it if it exists.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// map.insert(&1, "one");
+    /// map.insert(&2, "two");
+    /// assert_eq!(map.remove(&1), Some("one".to_owned().into_boxed_str()));
+    /// assert_eq!(map.get(&1), None);
+    /// ```
+    pub fn remove(&mut self, key: &K) -> Option<V::OwnedType> {
+        let idx = self.keys.zvl_binary_search(key).ok()?;
+        self.keys.zvl_remove(idx);
+        Some(self.values.zvl_remove(idx))
+    }
+
+    /// Appends `value` with `key` to the end of the underlying vector, returning
+    /// `key` and `value` _if it failed_. Useful for extending with an existing
+    /// sorted list.
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// assert!(map.try_append(&1, "uno").is_none());
+    /// assert!(map.try_append(&3, "tres").is_none());
+    ///
+    /// let unsuccessful = map.try_append(&3, "tres-updated");
+    /// assert!(unsuccessful.is_some(), "append duplicate of last key");
+    ///
+    /// let unsuccessful = map.try_append(&2, "dos");
+    /// assert!(unsuccessful.is_some(), "append out of order");
+    ///
+    /// assert_eq!(map.get(&1), Some("uno"));
+    ///
+    /// // contains the original value for the key: 3
+    /// assert_eq!(map.get(&3), Some("tres"));
+    ///
+    /// // not appended since it wasn't in order
+    /// assert_eq!(map.get(&2), None);
+    /// ```
+    #[must_use]
+    pub fn try_append<'b>(&mut self, key: &'b K, value: &'b V) -> Option<(&'b K, &'b V)> {
+        if self.keys.zvl_len() != 0 {
+            if let Some(last) = self.keys.zvl_get(self.keys.zvl_len() - 1) {
+                if K::Container::t_cmp_get(key, last) != Ordering::Greater {
+                    return Some((key, value));
+                }
+            }
+        }
+
+        self.keys.zvl_push(key);
+        self.values.zvl_push(value);
+        None
+    }
+}
+
+impl<'a, K, V> ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    /// Produce an ordered iterator over key-value pairs
+    pub fn iter<'b>(
+        &'b self,
+    ) -> impl ExactSizeIterator<
+        Item = (
+            &'b <K as ZeroMapKV<'a>>::GetType,
+            &'b <V as ZeroMapKV<'a>>::GetType,
+        ),
+    > {
+        (0..self.keys.zvl_len()).map(move |idx| {
+            (
+                #[expect(clippy::unwrap_used)] // idx is in-range
+                self.keys.zvl_get(idx).unwrap(),
+                #[expect(clippy::unwrap_used)] // idx is in-range
+                self.values.zvl_get(idx).unwrap(),
+            )
+        })
+    }
+
+    /// Produce an ordered iterator over keys
+    pub fn iter_keys<'b>(
+        &'b self,
+    ) -> impl ExactSizeIterator<Item = &'b <K as ZeroMapKV<'a>>::GetType> {
+        #[expect(clippy::unwrap_used)] // idx is in-range
+        (0..self.keys.zvl_len()).map(move |idx| self.keys.zvl_get(idx).unwrap())
+    }
+
+    /// Produce an iterator over values, ordered by keys
+    pub fn iter_values<'b>(
+        &'b self,
+    ) -> impl ExactSizeIterator<Item = &'b <V as ZeroMapKV<'a>>::GetType> {
+        #[expect(clippy::unwrap_used)] // idx is in-range
+        (0..self.values.zvl_len()).map(move |idx| self.values.zvl_get(idx).unwrap())
+    }
+}
+
+impl<'a, K, V> ZeroMap<'a, K, V>
+where
+    K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>>,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    /// Cast a `ZeroMap<K, V>` to `ZeroMap<P, V>` where `K` and `P` are [`AsULE`] types
+    /// with the same representation.
+    ///
+    /// # Unchecked Invariants
+    ///
+    /// If `K` and `P` have different ordering semantics, unexpected behavior may occur.
+    pub fn cast_zv_k_unchecked<P>(self) -> ZeroMap<'a, P, V>
+    where
+        P: AsULE<ULE = K::ULE> + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
+    {
+        ZeroMap {
+            keys: self.keys.cast(),
+            values: self.values,
+        }
+    }
+
+    /// Convert a `ZeroMap<K, V>` to `ZeroMap<P, V>` where `K` and `P` are [`AsULE`] types
+    /// with the same size.
+    ///
+    /// # Unchecked Invariants
+    ///
+    /// If `K` and `P` have different ordering semantics, unexpected behavior may occur.
+    ///
+    /// # Panics
+    ///
+    /// Panics if `K::ULE` and `P::ULE` are not the same size.
+    pub fn try_convert_zv_k_unchecked<P>(self) -> Result<ZeroMap<'a, P, V>, UleError>
+    where
+        P: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
+    {
+        Ok(ZeroMap {
+            keys: self.keys.try_into_converted()?,
+            values: self.values,
+        })
+    }
+}
+
+impl<'a, K, V> ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
+{
+    /// Cast a `ZeroMap<K, V>` to `ZeroMap<K, P>` where `V` and `P` are [`AsULE`] types
+    /// with the same representation.
+    ///
+    /// # Unchecked Invariants
+    ///
+    /// If `V` and `P` have different ordering semantics, unexpected behavior may occur.
+    pub fn cast_zv_v_unchecked<P>(self) -> ZeroMap<'a, K, P>
+    where
+        P: AsULE<ULE = V::ULE> + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
+    {
+        ZeroMap {
+            keys: self.keys,
+            values: self.values.cast(),
+        }
+    }
+
+    /// Convert a `ZeroMap<K, V>` to `ZeroMap<K, P>` where `V` and `P` are [`AsULE`] types
+    /// with the same size.
+    ///
+    /// # Unchecked Invariants
+    ///
+    /// If `V` and `P` have different ordering semantics, unexpected behavior may occur.
+    ///
+    /// # Panics
+    ///
+    /// Panics if `V::ULE` and `P::ULE` are not the same size.
+    pub fn try_convert_zv_v_unchecked<P>(self) -> Result<ZeroMap<'a, K, P>, UleError>
+    where
+        P: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, P>>,
+    {
+        Ok(ZeroMap {
+            keys: self.keys,
+            values: self.values.try_into_converted()?,
+        })
+    }
+}
+
+impl<'a, K, V> ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized + Ord,
+    V: ZeroMapKV<'a, Container = VarZeroVec<'a, V>> + ?Sized,
+    V: VarULE,
+{
+    /// Same as `insert()`, but allows using [EncodeAsVarULE](crate::ule::EncodeAsVarULE)
+    /// types with the value to avoid an extra allocation when dealing with custom ULE types.
+    ///
+    /// ```rust
+    /// use std::borrow::Cow;
+    /// use zerovec::ZeroMap;
+    ///
+    /// #[zerovec::make_varule(PersonULE)]
+    /// #[derive(Clone, Eq, PartialEq, Ord, PartialOrd)]
+    /// struct Person<'a> {
+    ///     age: u8,
+    ///     name: Cow<'a, str>,
+    /// }
+    ///
+    /// let mut map: ZeroMap<u32, PersonULE> = ZeroMap::new();
+    /// map.insert_var_v(
+    ///     &1,
+    ///     &Person {
+    ///         age: 20,
+    ///         name: "Joseph".into(),
+    ///     },
+    /// );
+    /// map.insert_var_v(
+    ///     &1,
+    ///     &Person {
+    ///         age: 35,
+    ///         name: "Carla".into(),
+    ///     },
+    /// );
+    /// assert_eq!(&map.get(&1).unwrap().name, "Carla");
+    /// assert!(map.get(&3).is_none());
+    /// ```
+    pub fn insert_var_v<VE: EncodeAsVarULE<V>>(&mut self, key: &K, value: &VE) -> Option<Box<V>> {
+        match self.keys.zvl_binary_search(key) {
+            Ok(index) => {
+                #[expect(clippy::unwrap_used)] // binary search
+                let ret = self.values.get(index).unwrap().to_boxed();
+                self.values.make_mut().replace(index, value);
+                Some(ret)
+            }
+            Err(index) => {
+                self.keys.zvl_insert(index, key);
+                self.values.make_mut().insert(index, value);
+                None
+            }
+        }
+    }
+
+    // insert_var_k, insert_var_kv are not possible since one cannot perform the binary search with EncodeAsVarULE
+    // though we might be able to do it in the future if we add a trait for cross-Ord requirements
+}
+
+impl<'a, K, V> ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized + Ord,
+    V: Copy + ZeroMapKV<'a>,
+{
+    /// For cases when `V` is fixed-size, obtain a direct copy of `V` instead of `V::ULE`.
+    ///
+    /// # Examples
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// map.insert(&1, &'a');
+    /// map.insert(&2, &'b');
+    /// assert_eq!(map.get_copied(&1), Some('a'));
+    /// assert_eq!(map.get_copied(&3), None);
+    #[inline]
+    pub fn get_copied(&self, key: &K) -> Option<V> {
+        let index = self.keys.zvl_binary_search(key).ok()?;
+        self.get_copied_at(index)
+    }
+
+    /// Binary search the map with `predicate` to find a key, returning the value.
+    ///
+    /// For cases when `V` is fixed-size, use this method to obtain a direct copy of `V`
+    /// instead of `V::ULE`.
+    ///
+    /// # Examples
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap;
+    ///
+    /// let mut map = ZeroMap::new();
+    /// map.insert(&1, &'a');
+    /// map.insert(&2, &'b');
+    /// assert_eq!(map.get_copied_by(|probe| probe.cmp(&1)), Some('a'));
+    /// assert_eq!(map.get_copied_by(|probe| probe.cmp(&3)), None);
+    /// ```
+    #[inline]
+    pub fn get_copied_by(&self, predicate: impl FnMut(&K) -> Ordering) -> Option<V> {
+        let index = self.keys.zvl_binary_search_by(predicate).ok()?;
+        self.get_copied_at(index)
+    }
+
+    fn get_copied_at(&self, index: usize) -> Option<V> {
+        let ule = self.values.zvl_get(index)?;
+        let mut result = Option::<V>::None;
+        V::Container::zvl_get_as_t(ule, |v| result.replace(*v));
+        #[expect(clippy::unwrap_used)] // `zvl_get_as_t` guarantees that the callback is invoked
+        Some(result.unwrap())
+    }
+}
+
+impl<'a, K, V> ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
+{
+    /// Similar to [`Self::iter()`] except it returns a direct copy of the values instead of references
+    /// to `V::ULE`, in cases when `V` is fixed-size
+    pub fn iter_copied_values<'b>(
+        &'b self,
+    ) -> impl Iterator<Item = (&'b <K as ZeroMapKV<'a>>::GetType, V)> {
+        (0..self.keys.zvl_len()).map(move |idx| {
+            (
+                #[expect(clippy::unwrap_used)] // idx in 0..keys.zvl_len()
+                self.keys.zvl_get(idx).unwrap(),
+                #[expect(clippy::unwrap_used)] // idx in 0..keys.zvl_len() = values.zvl_len()
+                ZeroSlice::get(&*self.values, idx).unwrap(),
+            )
+        })
+    }
+}
+
+impl<'a, K, V> ZeroMap<'a, K, V>
+where
+    K: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, K>>,
+    V: AsULE + ZeroMapKV<'a, Container = ZeroVec<'a, V>>,
+{
+    /// Similar to [`Self::iter()`] except it returns a direct copy of the keys values instead of references
+    /// to `K::ULE` and `V::ULE`, in cases when `K` and `V` are fixed-size
+    pub fn iter_copied<'b>(&'b self) -> impl Iterator<Item = (K, V)> + 'b {
+        let keys = &self.keys;
+        let values = &self.values;
+        (0..keys.len()).map(move |idx| {
+            (
+                #[expect(clippy::unwrap_used)] // idx in 0..keys.zvl_len()
+                ZeroSlice::get(&**keys, idx).unwrap(),
+                #[expect(clippy::unwrap_used)] // idx in 0..keys.zvl_len() = values.zvl_len()
+                ZeroSlice::get(&**values, idx).unwrap(),
+            )
+        })
+    }
+}
+
+impl<'a, K, V> From<ZeroMapBorrowed<'a, K, V>> for ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K: ?Sized,
+    V: ?Sized,
+{
+    fn from(other: ZeroMapBorrowed<'a, K, V>) -> Self {
+        Self {
+            keys: K::Container::zvl_from_borrowed(other.keys),
+            values: V::Container::zvl_from_borrowed(other.values),
+        }
+    }
+}
+
+// We can't use the default PartialEq because ZeroMap is invariant
+// so otherwise rustc will not automatically allow you to compare ZeroMaps
+// with different lifetimes
+impl<'a, 'b, K, V> PartialEq<ZeroMap<'b, K, V>> for ZeroMap<'a, K, V>
+where
+    K: for<'c> ZeroMapKV<'c> + ?Sized,
+    V: for<'c> ZeroMapKV<'c> + ?Sized,
+    <K as ZeroMapKV<'a>>::Container: PartialEq<<K as ZeroMapKV<'b>>::Container>,
+    <V as ZeroMapKV<'a>>::Container: PartialEq<<V as ZeroMapKV<'b>>::Container>,
+{
+    fn eq(&self, other: &ZeroMap<'b, K, V>) -> bool {
+        self.keys.eq(&other.keys) && self.values.eq(&other.values)
+    }
+}
+
+impl<'a, K, V> fmt::Debug for ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    <K as ZeroMapKV<'a>>::Container: fmt::Debug,
+    <V as ZeroMapKV<'a>>::Container: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+        f.debug_struct("ZeroMap")
+            .field("keys", &self.keys)
+            .field("values", &self.values)
+            .finish()
+    }
+}
+
+impl<'a, K, V> Clone for ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    <K as ZeroMapKV<'a>>::Container: Clone,
+    <V as ZeroMapKV<'a>>::Container: Clone,
+{
+    fn clone(&self) -> Self {
+        Self {
+            keys: self.keys.clone(),
+            values: self.values.clone(),
+        }
+    }
+}
+
+impl<'a, A, B, K, V> FromIterator<(A, B)> for ZeroMap<'a, K, V>
+where
+    A: Borrow<K>,
+    B: Borrow<V>,
+    K: ZeroMapKV<'a> + ?Sized + Ord,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    fn from_iter<T>(iter: T) -> Self
+    where
+        T: IntoIterator<Item = (A, B)>,
+    {
+        let iter = iter.into_iter();
+        let mut map = match iter.size_hint() {
+            (_, Some(upper)) => Self::with_capacity(upper),
+            (lower, None) => Self::with_capacity(lower),
+        };
+
+        for (key, value) in iter {
+            if let Some((key, value)) = map.try_append(key.borrow(), value.borrow()) {
+                map.insert(key, value);
+            }
+        }
+        map
+    }
+}
diff --git a/vendor/zerovec/src/map/mod.rs b/vendor/zerovec/src/map/mod.rs
new file mode 100644
index 00000000..2ac640ec
--- /dev/null
+++ b/vendor/zerovec/src/map/mod.rs
@@ -0,0 +1,23 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! See [`ZeroMap`](crate::ZeroMap) for details.
+
+mod borrowed;
+mod kv;
+#[expect(clippy::module_inception)] // module is purely internal
+pub(crate) mod map;
+mod vecs;
+
+#[cfg(feature = "databake")]
+mod databake;
+#[cfg(feature = "serde")]
+mod serde;
+#[cfg(feature = "serde")]
+mod serde_helpers;
+
+pub use crate::ZeroMap;
+pub use borrowed::ZeroMapBorrowed;
+pub use kv::ZeroMapKV;
+pub use vecs::{MutableZeroVecLike, ZeroVecLike};
diff --git a/vendor/zerovec/src/map/serde.rs b/vendor/zerovec/src/map/serde.rs
new file mode 100644
index 00000000..2cde95c7
--- /dev/null
+++ b/vendor/zerovec/src/map/serde.rs
@@ -0,0 +1,313 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::{MutableZeroVecLike, ZeroMap, ZeroMapBorrowed, ZeroMapKV, ZeroVecLike};
+use core::fmt;
+use core::marker::PhantomData;
+use serde::de::{self, Deserialize, Deserializer, MapAccess, SeqAccess, Visitor};
+#[cfg(feature = "serde")]
+use serde::ser::{Serialize, SerializeMap, SerializeSeq, Serializer};
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+#[cfg(feature = "serde")]
+impl<'a, K, V> Serialize for ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + Serialize + ?Sized + Ord,
+    V: ZeroMapKV<'a> + Serialize + ?Sized,
+    K::Container: Serialize,
+    V::Container: Serialize,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        if serializer.is_human_readable() {
+            // Many human-readable formats don't support values other
+            // than numbers and strings as map keys. For them, we can serialize
+            // as a vec of tuples instead
+            if let Some(k) = self.iter_keys().next() {
+                if !K::Container::zvl_get_as_t(k, super::serde_helpers::is_num_or_string) {
+                    let mut seq = serializer.serialize_seq(Some(self.len()))?;
+                    for (k, v) in self.iter() {
+                        K::Container::zvl_get_as_t(k, |k| {
+                            V::Container::zvl_get_as_t(v, |v| seq.serialize_element(&(k, v)))
+                        })?;
+                    }
+                    return seq.end();
+                }
+            }
+            let mut map = serializer.serialize_map(Some(self.len()))?;
+            for (k, v) in self.iter() {
+                K::Container::zvl_get_as_t(k, |k| map.serialize_key(k))?;
+                V::Container::zvl_get_as_t(v, |v| map.serialize_value(v))?;
+            }
+            map.end()
+        } else {
+            (&self.keys, &self.values).serialize(serializer)
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+#[cfg(feature = "serde")]
+impl<'a, K, V> Serialize for ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a> + Serialize + ?Sized + Ord,
+    V: ZeroMapKV<'a> + Serialize + ?Sized,
+    K::Container: Serialize,
+    V::Container: Serialize,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        ZeroMap::<K, V>::from(*self).serialize(serializer)
+    }
+}
+
+/// Modified example from https://serde.rs/deserialize-map.html
+struct ZeroMapMapVisitor<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized + Ord,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    #[expect(clippy::type_complexity)] // it's a marker type, complexity doesn't matter
+    marker: PhantomData<fn() -> (&'a K::OwnedType, &'a V::OwnedType)>,
+}
+
+impl<'a, K, V> ZeroMapMapVisitor<'a, K, V>
+where
+    K: ZeroMapKV<'a> + ?Sized + Ord,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    fn new() -> Self {
+        ZeroMapMapVisitor {
+            marker: PhantomData,
+        }
+    }
+}
+
+impl<'a, 'de, K, V> Visitor<'de> for ZeroMapMapVisitor<'a, K, V>
+where
+    K: ZeroMapKV<'a> + Ord + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K::OwnedType: Deserialize<'de>,
+    V::OwnedType: Deserialize<'de>,
+{
+    type Value = ZeroMap<'a, K, V>;
+
+    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+        formatter.write_str("a map produced by ZeroMap")
+    }
+
+    fn visit_seq<S>(self, mut access: S) -> Result<Self::Value, S::Error>
+    where
+        S: SeqAccess<'de>,
+    {
+        let mut map = ZeroMap::with_capacity(access.size_hint().unwrap_or(0));
+
+        // While there are entries remaining in the input, add them
+        // into our map.
+        while let Some((key, value)) = access.next_element::<(K::OwnedType, V::OwnedType)>()? {
+            // Try to append it at the end, hoping for a sorted map.
+            // If not sorted, return an error
+            // a serialized map that came from another ZeroMap
+            if map
+                .try_append(
+                    K::Container::owned_as_t(&key),
+                    V::Container::owned_as_t(&value),
+                )
+                .is_some()
+            {
+                return Err(de::Error::custom(
+                    "ZeroMap's keys must be sorted while deserializing",
+                ));
+            }
+        }
+
+        Ok(map)
+    }
+
+    fn visit_map<M>(self, mut access: M) -> Result<Self::Value, M::Error>
+    where
+        M: MapAccess<'de>,
+    {
+        let mut map = ZeroMap::with_capacity(access.size_hint().unwrap_or(0));
+
+        // While there are entries remaining in the input, add them
+        // into our map.
+        while let Some((key, value)) = access.next_entry::<K::OwnedType, V::OwnedType>()? {
+            // Try to append it at the end, hoping for a sorted map.
+            // If not sorted, return an error
+            // a serialized map that came from another ZeroMap
+            if map
+                .try_append(
+                    K::Container::owned_as_t(&key),
+                    V::Container::owned_as_t(&value),
+                )
+                .is_some()
+            {
+                return Err(de::Error::custom(
+                    "ZeroMap's keys must be sorted while deserializing",
+                ));
+            }
+        }
+
+        Ok(map)
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, 'a, K, V> Deserialize<'de> for ZeroMap<'a, K, V>
+where
+    K: ZeroMapKV<'a> + Ord + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K::Container: Deserialize<'de>,
+    V::Container: Deserialize<'de>,
+    K::OwnedType: Deserialize<'de>,
+    V::OwnedType: Deserialize<'de>,
+    'de: 'a,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            deserializer.deserialize_any(ZeroMapMapVisitor::<'a, K, V>::new())
+        } else {
+            let (keys, values): (K::Container, V::Container) =
+                Deserialize::deserialize(deserializer)?;
+            if keys.zvl_len() != values.zvl_len() {
+                return Err(de::Error::custom(
+                    "Mismatched key and value sizes in ZeroMap",
+                ));
+            }
+            // #1433: If keys are out of order, treat it as GIGO.
+            debug_assert!(keys.zvl_is_ascending());
+            Ok(Self { keys, values })
+        }
+    }
+}
+
+// /// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, 'a, K, V> Deserialize<'de> for ZeroMapBorrowed<'a, K, V>
+where
+    K: ZeroMapKV<'a> + Ord + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K::Container: Deserialize<'de>,
+    V::Container: Deserialize<'de>,
+    K::OwnedType: Deserialize<'de>,
+    V::OwnedType: Deserialize<'de>,
+    'de: 'a,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            Err(de::Error::custom(
+                "ZeroMapBorrowed cannot be deserialized from human-readable formats",
+            ))
+        } else {
+            let deserialized: ZeroMap<'a, K, V> = ZeroMap::deserialize(deserializer)?;
+            let keys = if let Some(keys) = deserialized.keys.zvl_as_borrowed_inner() {
+                keys
+            } else {
+                return Err(de::Error::custom(
+                    "ZeroMapBorrowed can only deserialize in zero-copy ways",
+                ));
+            };
+            let values = if let Some(values) = deserialized.values.zvl_as_borrowed_inner() {
+                values
+            } else {
+                return Err(de::Error::custom(
+                    "ZeroMapBorrowed can only deserialize in zero-copy ways",
+                ));
+            };
+            Ok(Self { keys, values })
+        }
+    }
+}
+
+#[cfg(test)]
+#[allow(non_camel_case_types)]
+mod test {
+    use crate::{map::ZeroMapBorrowed, ZeroMap};
+
+    #[derive(serde::Serialize, serde::Deserialize)]
+    struct DeriveTest_ZeroMap<'data> {
+        #[serde(borrow)]
+        _data: ZeroMap<'data, str, [u8]>,
+    }
+
+    #[derive(serde::Serialize, serde::Deserialize)]
+    struct DeriveTest_ZeroMapBorrowed<'data> {
+        #[serde(borrow)]
+        _data: ZeroMapBorrowed<'data, str, [u8]>,
+    }
+
+    const JSON_STR: &str = "{\"1\":\"uno\",\"2\":\"dos\",\"3\":\"tres\"}";
+    const BINCODE_BYTES: &[u8] = &[
+        12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 3, 0,
+        3, 0, 6, 0, 117, 110, 111, 100, 111, 115, 116, 114, 101, 115,
+    ];
+
+    fn make_map() -> ZeroMap<'static, u32, str> {
+        let mut map = ZeroMap::new();
+        map.insert(&1, "uno");
+        map.insert(&2, "dos");
+        map.insert(&3, "tres");
+        map
+    }
+
+    #[test]
+    fn test_serde_json() {
+        let map = make_map();
+        let json_str = serde_json::to_string(&map).expect("serialize");
+        assert_eq!(JSON_STR, json_str);
+        let new_map: ZeroMap<u32, str> = serde_json::from_str(&json_str).expect("deserialize");
+        assert_eq!(
+            new_map.iter().collect::<Vec<_>>(),
+            map.iter().collect::<Vec<_>>()
+        );
+    }
+
+    #[test]
+    fn test_serde_json_complex_key() {
+        let mut map = ZeroMap::new();
+        map.insert(&(1, 1), "uno");
+        map.insert(&(2, 2), "dos");
+        map.insert(&(3, 3), "tres");
+        let json_str = serde_json::to_string(&map).expect("serialize");
+        assert_eq!(
+            json_str,
+            "[[[1,1],\"uno\"],[[2,2],\"dos\"],[[3,3],\"tres\"]]"
+        );
+        let new_map: ZeroMap<(u32, u32), str> =
+            serde_json::from_str(&json_str).expect("deserialize");
+        assert_eq!(
+            new_map.iter().collect::<Vec<_>>(),
+            map.iter().collect::<Vec<_>>()
+        );
+    }
+
+    #[test]
+    fn test_bincode() {
+        let map = make_map();
+        let bincode_bytes = bincode::serialize(&map).expect("serialize");
+        assert_eq!(BINCODE_BYTES, bincode_bytes);
+        let new_map: ZeroMap<u32, str> = bincode::deserialize(&bincode_bytes).expect("deserialize");
+        assert_eq!(
+            new_map.iter().collect::<Vec<_>>(),
+            map.iter().collect::<Vec<_>>()
+        );
+
+        let new_map: ZeroMapBorrowed<u32, str> =
+            bincode::deserialize(&bincode_bytes).expect("deserialize");
+        assert_eq!(
+            new_map.iter().collect::<Vec<_>>(),
+            map.iter().collect::<Vec<_>>()
+        );
+    }
+}
diff --git a/vendor/zerovec/src/map/serde_helpers.rs b/vendor/zerovec/src/map/serde_helpers.rs
new file mode 100644
index 00000000..b1ead938
--- /dev/null
+++ b/vendor/zerovec/src/map/serde_helpers.rs
@@ -0,0 +1,168 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// @@@@@@@@@@@@@@@@
+// THIS FILE IS SHARED BETWEEN LITEMAP AND ZEROVEC. PLEASE KEEP IT IN SYNC FOR ALL EDITS
+// @@@@@@@@@@@@@@@@
+
+use serde::ser::{Impossible, Serialize, Serializer};
+
+pub fn is_num_or_string<T: Serialize + ?Sized>(k: &T) -> bool {
+    // Serializer that errors in the same cases as serde_json::ser::MapKeySerializer
+    struct MapKeySerializerDryRun;
+    impl Serializer for MapKeySerializerDryRun {
+        type Ok = ();
+        // Singleton error type that implements serde::ser::Error
+        type Error = core::fmt::Error;
+
+        type SerializeSeq = Impossible<(), Self::Error>;
+        type SerializeTuple = Impossible<(), Self::Error>;
+        type SerializeTupleStruct = Impossible<(), Self::Error>;
+        type SerializeTupleVariant = Impossible<(), Self::Error>;
+        type SerializeMap = Impossible<(), Self::Error>;
+        type SerializeStruct = Impossible<(), Self::Error>;
+        type SerializeStructVariant = Impossible<(), Self::Error>;
+
+        fn serialize_str(self, _value: &str) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_unit_variant(
+            self,
+            _name: &'static str,
+            _variant_index: u32,
+            _variant: &'static str,
+        ) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_newtype_struct<T: Serialize + ?Sized>(
+            self,
+            _name: &'static str,
+            value: &T,
+        ) -> Result<Self::Ok, Self::Error> {
+            // Recurse
+            value.serialize(self)
+        }
+        fn serialize_bool(self, _value: bool) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_i8(self, _value: i8) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_i16(self, _value: i16) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_i32(self, _value: i32) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_i64(self, _value: i64) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        serde::serde_if_integer128! {
+            fn serialize_i128(self, _value: i128) -> Result<Self::Ok, Self::Error> {
+                Ok(())
+            }
+        }
+        fn serialize_u8(self, _value: u8) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_u16(self, _value: u16) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_u32(self, _value: u32) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_u64(self, _value: u64) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        serde::serde_if_integer128! {
+            fn serialize_u128(self, _value: u128) -> Result<Self::Ok, Self::Error> {
+                Ok(())
+            }
+        }
+        fn serialize_f32(self, _value: f32) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_f64(self, _value: f64) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_char(self, _value: char) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+        fn serialize_bytes(self, _value: &[u8]) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_unit(self) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_unit_struct(self, _name: &'static str) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_newtype_variant<T: Serialize + ?Sized>(
+            self,
+            _name: &'static str,
+            _variant_index: u32,
+            _variant: &'static str,
+            _value: &T,
+        ) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_none(self) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_some<T: Serialize + ?Sized>(
+            self,
+            _value: &T,
+        ) -> Result<Self::Ok, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_seq(self, _len: Option<usize>) -> Result<Self::SerializeSeq, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_tuple(self, _len: usize) -> Result<Self::SerializeTuple, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_tuple_struct(
+            self,
+            _name: &'static str,
+            _len: usize,
+        ) -> Result<Self::SerializeTupleStruct, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_tuple_variant(
+            self,
+            _name: &'static str,
+            _variant_index: u32,
+            _variant: &'static str,
+            _len: usize,
+        ) -> Result<Self::SerializeTupleVariant, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_struct(
+            self,
+            _name: &'static str,
+            _len: usize,
+        ) -> Result<Self::SerializeStruct, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn serialize_struct_variant(
+            self,
+            _name: &'static str,
+            _variant_index: u32,
+            _variant: &'static str,
+            _len: usize,
+        ) -> Result<Self::SerializeStructVariant, Self::Error> {
+            Err(core::fmt::Error)
+        }
+        fn collect_str<T: core::fmt::Display + ?Sized>(
+            self,
+            _value: &T,
+        ) -> Result<Self::Ok, Self::Error> {
+            Ok(())
+        }
+    }
+    k.serialize(MapKeySerializerDryRun).is_ok()
+}
diff --git a/vendor/zerovec/src/map/vecs.rs b/vendor/zerovec/src/map/vecs.rs
new file mode 100644
index 00000000..d88d4949
--- /dev/null
+++ b/vendor/zerovec/src/map/vecs.rs
@@ -0,0 +1,572 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::ule::*;
+use crate::varzerovec::owned::VarZeroVecOwned;
+use crate::varzerovec::vec::VarZeroVecInner;
+use crate::vecs::VarZeroVecFormat;
+use crate::{VarZeroSlice, VarZeroVec};
+use crate::{ZeroSlice, ZeroVec};
+use alloc::boxed::Box;
+use alloc::vec::Vec;
+use core::cmp::Ordering;
+use core::mem;
+use core::ops::Range;
+
+/// Trait abstracting over [`ZeroVec`] and [`VarZeroVec`], for use in [`ZeroMap`](super::ZeroMap). **You
+/// should not be implementing or calling this trait directly.**
+///
+/// The T type is the type received by [`Self::zvl_binary_search()`], as well as the one used
+/// for human-readable serialization.
+///
+/// Methods are prefixed with `zvl_*` to avoid clashes with methods on the types themselves
+pub trait ZeroVecLike<T: ?Sized> {
+    /// The type returned by `Self::get()`
+    type GetType: ?Sized + 'static;
+    /// A fully borrowed version of this
+    type SliceVariant: ZeroVecLike<T, GetType = Self::GetType> + ?Sized;
+
+    /// Create a new, empty borrowed variant
+    fn zvl_new_borrowed() -> &'static Self::SliceVariant;
+
+    /// Search for a key in a sorted vector, returns `Ok(index)` if found,
+    /// returns `Err(insert_index)` if not found, where `insert_index` is the
+    /// index where it should be inserted to maintain sort order.
+    fn zvl_binary_search(&self, k: &T) -> Result<usize, usize>
+    where
+        T: Ord;
+    /// Search for a key within a certain range in a sorted vector.
+    /// Returns `None` if the range is out of bounds, and
+    /// `Ok` or `Err` in the same way as `zvl_binary_search`.
+    /// Indices are returned relative to the start of the range.
+    fn zvl_binary_search_in_range(
+        &self,
+        k: &T,
+        range: Range<usize>,
+    ) -> Option<Result<usize, usize>>
+    where
+        T: Ord;
+
+    /// Search for a key in a sorted vector by a predicate, returns `Ok(index)` if found,
+    /// returns `Err(insert_index)` if not found, where `insert_index` is the
+    /// index where it should be inserted to maintain sort order.
+    fn zvl_binary_search_by(&self, predicate: impl FnMut(&T) -> Ordering) -> Result<usize, usize>;
+    /// Search for a key within a certain range in a sorted vector by a predicate.
+    /// Returns `None` if the range is out of bounds, and
+    /// `Ok` or `Err` in the same way as `zvl_binary_search`.
+    /// Indices are returned relative to the start of the range.
+    fn zvl_binary_search_in_range_by(
+        &self,
+        predicate: impl FnMut(&T) -> Ordering,
+        range: Range<usize>,
+    ) -> Option<Result<usize, usize>>;
+
+    /// Get element at `index`
+    fn zvl_get(&self, index: usize) -> Option<&Self::GetType>;
+    /// The length of this vector
+    fn zvl_len(&self) -> usize;
+    /// Check if this vector is in ascending order according to `T`s `Ord` impl
+    fn zvl_is_ascending(&self) -> bool
+    where
+        T: Ord,
+    {
+        if let Some(first) = self.zvl_get(0) {
+            let mut prev = first;
+            for i in 1..self.zvl_len() {
+                #[expect(clippy::unwrap_used)] // looping over the valid indices
+                let curr = self.zvl_get(i).unwrap();
+                if Self::get_cmp_get(prev, curr) != Ordering::Less {
+                    return false;
+                }
+                prev = curr;
+            }
+        }
+        true
+    }
+    /// Check if this vector is empty
+    fn zvl_is_empty(&self) -> bool {
+        self.zvl_len() == 0
+    }
+
+    /// Construct a borrowed variant by borrowing from `&self`.
+    ///
+    /// This function behaves like `&'b self -> Self::SliceVariant<'b>`,
+    /// where `'b` is the lifetime of the reference to this object.
+    ///
+    /// Note: We rely on the compiler recognizing `'a` and `'b` as covariant and
+    /// casting `&'b Self<'a>` to `&'b Self<'b>` when this gets called, which works
+    /// out for `ZeroVec` and `VarZeroVec` containers just fine.
+    fn zvl_as_borrowed(&self) -> &Self::SliceVariant;
+
+    /// Compare this type with a `Self::GetType`. This must produce the same result as
+    /// if `g` were converted to `Self`
+    #[inline]
+    fn t_cmp_get(t: &T, g: &Self::GetType) -> Ordering
+    where
+        T: Ord,
+    {
+        Self::zvl_get_as_t(g, |g| t.cmp(g))
+    }
+
+    /// Compare two values of `Self::GetType`. This must produce the same result as
+    /// if both `a` and `b` were converted to `Self`
+    #[inline]
+    fn get_cmp_get(a: &Self::GetType, b: &Self::GetType) -> Ordering
+    where
+        T: Ord,
+    {
+        Self::zvl_get_as_t(a, |a| Self::zvl_get_as_t(b, |b| a.cmp(b)))
+    }
+
+    /// Obtain a reference to T, passed to a closure
+    ///
+    /// This uses a callback because it's not possible to return owned-or-borrowed
+    /// types without GATs
+    ///
+    /// Impls should guarantee that the callback function is be called exactly once.
+    fn zvl_get_as_t<R>(g: &Self::GetType, f: impl FnOnce(&T) -> R) -> R;
+}
+
+/// Trait abstracting over [`ZeroVec`] and [`VarZeroVec`], for use in [`ZeroMap`](super::ZeroMap). **You
+/// should not be implementing or calling this trait directly.**
+///
+/// This trait augments [`ZeroVecLike`] with methods allowing for mutation of the underlying
+/// vector for owned vector types.
+///
+/// Methods are prefixed with `zvl_*` to avoid clashes with methods on the types themselves
+pub trait MutableZeroVecLike<'a, T: ?Sized>: ZeroVecLike<T> {
+    /// The type returned by `Self::remove()` and `Self::replace()`
+    type OwnedType;
+
+    /// Insert an element at `index`
+    fn zvl_insert(&mut self, index: usize, value: &T);
+    /// Remove the element at `index` (panicking if nonexistant)
+    fn zvl_remove(&mut self, index: usize) -> Self::OwnedType;
+    /// Replace the element at `index` with another one, returning the old element
+    fn zvl_replace(&mut self, index: usize, value: &T) -> Self::OwnedType;
+    /// Push an element to the end of this vector
+    fn zvl_push(&mut self, value: &T);
+    /// Create a new, empty vector, with given capacity
+    fn zvl_with_capacity(cap: usize) -> Self;
+    /// Remove all elements from the vector
+    fn zvl_clear(&mut self);
+    /// Reserve space for `addl` additional elements
+    fn zvl_reserve(&mut self, addl: usize);
+    /// Applies the permutation such that `before.zvl_get(permutation[i]) == after.zvl_get(i)`.
+    ///
+    /// # Panics
+    /// If `permutation` is not a valid permutation of length `zvl_len()`.
+    fn zvl_permute(&mut self, permutation: &mut [usize]);
+
+    /// Convert an owned value to a borrowed T
+    fn owned_as_t(o: &Self::OwnedType) -> &T;
+
+    /// Construct from the borrowed version of the type
+    ///
+    /// These are useful to ensure serialization parity between borrowed and owned versions
+    fn zvl_from_borrowed(b: &'a Self::SliceVariant) -> Self;
+    /// Extract the inner borrowed variant if possible. Returns `None` if the data is owned.
+    ///
+    /// This function behaves like `&'_ self -> Self::SliceVariant<'a>`,
+    /// where `'a` is the lifetime of this object's borrowed data.
+    ///
+    /// This function is similar to matching the `Borrowed` variant of `ZeroVec`
+    /// or `VarZeroVec`, returning the inner borrowed type.
+    fn zvl_as_borrowed_inner(&self) -> Option<&'a Self::SliceVariant>;
+}
+
+impl<'a, T> ZeroVecLike<T> for ZeroVec<'a, T>
+where
+    T: 'a + AsULE + Copy,
+{
+    type GetType = T::ULE;
+    type SliceVariant = ZeroSlice<T>;
+
+    fn zvl_new_borrowed() -> &'static Self::SliceVariant {
+        ZeroSlice::<T>::new_empty()
+    }
+    fn zvl_binary_search(&self, k: &T) -> Result<usize, usize>
+    where
+        T: Ord,
+    {
+        ZeroSlice::binary_search(self, k)
+    }
+    fn zvl_binary_search_in_range(&self, k: &T, range: Range<usize>) -> Option<Result<usize, usize>>
+    where
+        T: Ord,
+    {
+        let zs: &ZeroSlice<T> = self;
+        zs.zvl_binary_search_in_range(k, range)
+    }
+    fn zvl_binary_search_by(
+        &self,
+        mut predicate: impl FnMut(&T) -> Ordering,
+    ) -> Result<usize, usize> {
+        ZeroSlice::binary_search_by(self, |probe| predicate(&probe))
+    }
+    fn zvl_binary_search_in_range_by(
+        &self,
+        predicate: impl FnMut(&T) -> Ordering,
+        range: Range<usize>,
+    ) -> Option<Result<usize, usize>> {
+        let zs: &ZeroSlice<T> = self;
+        zs.zvl_binary_search_in_range_by(predicate, range)
+    }
+    fn zvl_get(&self, index: usize) -> Option<&T::ULE> {
+        self.get_ule_ref(index)
+    }
+    fn zvl_len(&self) -> usize {
+        ZeroSlice::len(self)
+    }
+    fn zvl_as_borrowed(&self) -> &ZeroSlice<T> {
+        self
+    }
+    #[inline]
+    fn zvl_get_as_t<R>(g: &Self::GetType, f: impl FnOnce(&T) -> R) -> R {
+        f(&T::from_unaligned(*g))
+    }
+}
+
+impl<T> ZeroVecLike<T> for ZeroSlice<T>
+where
+    T: AsULE + Copy,
+{
+    type GetType = T::ULE;
+    type SliceVariant = ZeroSlice<T>;
+
+    fn zvl_new_borrowed() -> &'static Self::SliceVariant {
+        ZeroSlice::<T>::new_empty()
+    }
+    fn zvl_binary_search(&self, k: &T) -> Result<usize, usize>
+    where
+        T: Ord,
+    {
+        ZeroSlice::binary_search(self, k)
+    }
+    fn zvl_binary_search_in_range(&self, k: &T, range: Range<usize>) -> Option<Result<usize, usize>>
+    where
+        T: Ord,
+    {
+        let subslice = self.get_subslice(range)?;
+        Some(ZeroSlice::binary_search(subslice, k))
+    }
+    fn zvl_binary_search_by(
+        &self,
+        mut predicate: impl FnMut(&T) -> Ordering,
+    ) -> Result<usize, usize> {
+        ZeroSlice::binary_search_by(self, |probe| predicate(&probe))
+    }
+    fn zvl_binary_search_in_range_by(
+        &self,
+        mut predicate: impl FnMut(&T) -> Ordering,
+        range: Range<usize>,
+    ) -> Option<Result<usize, usize>> {
+        let subslice = self.get_subslice(range)?;
+        Some(ZeroSlice::binary_search_by(subslice, |probe| {
+            predicate(&probe)
+        }))
+    }
+    fn zvl_get(&self, index: usize) -> Option<&T::ULE> {
+        self.get_ule_ref(index)
+    }
+    fn zvl_len(&self) -> usize {
+        ZeroSlice::len(self)
+    }
+    fn zvl_as_borrowed(&self) -> &ZeroSlice<T> {
+        self
+    }
+
+    #[inline]
+    fn zvl_get_as_t<R>(g: &Self::GetType, f: impl FnOnce(&T) -> R) -> R {
+        f(&T::from_unaligned(*g))
+    }
+}
+
+impl<'a, T> MutableZeroVecLike<'a, T> for ZeroVec<'a, T>
+where
+    T: AsULE + Copy + 'static,
+{
+    type OwnedType = T;
+    fn zvl_insert(&mut self, index: usize, value: &T) {
+        self.with_mut(|v| v.insert(index, value.to_unaligned()))
+    }
+    fn zvl_remove(&mut self, index: usize) -> T {
+        T::from_unaligned(self.with_mut(|v| v.remove(index)))
+    }
+    fn zvl_replace(&mut self, index: usize, value: &T) -> T {
+        #[expect(clippy::indexing_slicing)]
+        let unaligned = self.with_mut(|vec| {
+            debug_assert!(index < vec.len());
+            mem::replace(&mut vec[index], value.to_unaligned())
+        });
+        T::from_unaligned(unaligned)
+    }
+    fn zvl_push(&mut self, value: &T) {
+        self.with_mut(|v| v.push(value.to_unaligned()))
+    }
+    fn zvl_with_capacity(cap: usize) -> Self {
+        if cap == 0 {
+            ZeroVec::new()
+        } else {
+            ZeroVec::new_owned(Vec::with_capacity(cap))
+        }
+    }
+    fn zvl_clear(&mut self) {
+        self.with_mut(|v| v.clear())
+    }
+    fn zvl_reserve(&mut self, addl: usize) {
+        self.with_mut(|v| v.reserve(addl))
+    }
+
+    fn owned_as_t(o: &Self::OwnedType) -> &T {
+        o
+    }
+
+    fn zvl_from_borrowed(b: &'a ZeroSlice<T>) -> Self {
+        b.as_zerovec()
+    }
+    fn zvl_as_borrowed_inner(&self) -> Option<&'a ZeroSlice<T>> {
+        self.as_maybe_borrowed()
+    }
+
+    #[expect(clippy::indexing_slicing)] // documented panic
+    fn zvl_permute(&mut self, permutation: &mut [usize]) {
+        assert_eq!(permutation.len(), self.zvl_len());
+
+        let vec = self.to_mut_slice();
+
+        for cycle_start in 0..permutation.len() {
+            let mut curr = cycle_start;
+            let mut next = permutation[curr];
+
+            while next != cycle_start {
+                vec.swap(curr, next);
+                // Make curr a self-cycle so we don't use it as a cycle_start later
+                permutation[curr] = curr;
+                curr = next;
+                next = permutation[next];
+            }
+            permutation[curr] = curr;
+        }
+    }
+}
+
+impl<'a, T, F> ZeroVecLike<T> for VarZeroVec<'a, T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    F: VarZeroVecFormat,
+{
+    type GetType = T;
+    type SliceVariant = VarZeroSlice<T, F>;
+
+    fn zvl_new_borrowed() -> &'static Self::SliceVariant {
+        VarZeroSlice::<T, F>::new_empty()
+    }
+    fn zvl_binary_search(&self, k: &T) -> Result<usize, usize>
+    where
+        T: Ord,
+    {
+        self.binary_search(k)
+    }
+    fn zvl_binary_search_in_range(&self, k: &T, range: Range<usize>) -> Option<Result<usize, usize>>
+    where
+        T: Ord,
+    {
+        self.binary_search_in_range(k, range)
+    }
+    fn zvl_binary_search_by(&self, predicate: impl FnMut(&T) -> Ordering) -> Result<usize, usize> {
+        self.binary_search_by(predicate)
+    }
+    fn zvl_binary_search_in_range_by(
+        &self,
+        predicate: impl FnMut(&T) -> Ordering,
+        range: Range<usize>,
+    ) -> Option<Result<usize, usize>> {
+        self.binary_search_in_range_by(predicate, range)
+    }
+    fn zvl_get(&self, index: usize) -> Option<&T> {
+        self.get(index)
+    }
+    fn zvl_len(&self) -> usize {
+        self.len()
+    }
+
+    fn zvl_as_borrowed(&self) -> &VarZeroSlice<T, F> {
+        self.as_slice()
+    }
+
+    #[inline]
+    fn zvl_get_as_t<R>(g: &Self::GetType, f: impl FnOnce(&T) -> R) -> R {
+        f(g)
+    }
+}
+
+impl<T, F> ZeroVecLike<T> for VarZeroSlice<T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    F: VarZeroVecFormat,
+{
+    type GetType = T;
+    type SliceVariant = VarZeroSlice<T, F>;
+
+    fn zvl_new_borrowed() -> &'static Self::SliceVariant {
+        VarZeroSlice::<T, F>::new_empty()
+    }
+    fn zvl_binary_search(&self, k: &T) -> Result<usize, usize>
+    where
+        T: Ord,
+    {
+        self.binary_search(k)
+    }
+    fn zvl_binary_search_in_range(&self, k: &T, range: Range<usize>) -> Option<Result<usize, usize>>
+    where
+        T: Ord,
+    {
+        self.binary_search_in_range(k, range)
+    }
+    fn zvl_binary_search_by(&self, predicate: impl FnMut(&T) -> Ordering) -> Result<usize, usize> {
+        self.binary_search_by(predicate)
+    }
+    fn zvl_binary_search_in_range_by(
+        &self,
+        predicate: impl FnMut(&T) -> Ordering,
+        range: Range<usize>,
+    ) -> Option<Result<usize, usize>> {
+        self.binary_search_in_range_by(predicate, range)
+    }
+    fn zvl_get(&self, index: usize) -> Option<&T> {
+        self.get(index)
+    }
+    fn zvl_len(&self) -> usize {
+        self.len()
+    }
+
+    fn zvl_as_borrowed(&self) -> &VarZeroSlice<T, F> {
+        self
+    }
+
+    #[inline]
+    fn zvl_get_as_t<R>(g: &Self::GetType, f: impl FnOnce(&T) -> R) -> R {
+        f(g)
+    }
+}
+
+impl<'a, T, F> MutableZeroVecLike<'a, T> for VarZeroVec<'a, T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    F: VarZeroVecFormat,
+{
+    type OwnedType = Box<T>;
+    fn zvl_insert(&mut self, index: usize, value: &T) {
+        self.make_mut().insert(index, value)
+    }
+    fn zvl_remove(&mut self, index: usize) -> Box<T> {
+        let vec = self.make_mut();
+        debug_assert!(index < vec.len());
+        #[expect(clippy::unwrap_used)]
+        let old = vec.get(index).unwrap().to_boxed();
+        vec.remove(index);
+        old
+    }
+    fn zvl_replace(&mut self, index: usize, value: &T) -> Box<T> {
+        let vec = self.make_mut();
+        debug_assert!(index < vec.len());
+        #[expect(clippy::unwrap_used)]
+        let old = vec.get(index).unwrap().to_boxed();
+        vec.replace(index, value);
+        old
+    }
+    fn zvl_push(&mut self, value: &T) {
+        let len = self.len();
+        self.make_mut().insert(len, value)
+    }
+    fn zvl_with_capacity(cap: usize) -> Self {
+        if cap == 0 {
+            VarZeroVec::new()
+        } else {
+            Self::from(VarZeroVecOwned::with_capacity(cap))
+        }
+    }
+    fn zvl_clear(&mut self) {
+        self.make_mut().clear()
+    }
+    fn zvl_reserve(&mut self, addl: usize) {
+        self.make_mut().reserve(addl)
+    }
+
+    fn owned_as_t(o: &Self::OwnedType) -> &T {
+        o
+    }
+
+    fn zvl_from_borrowed(b: &'a VarZeroSlice<T, F>) -> Self {
+        b.as_varzerovec()
+    }
+    fn zvl_as_borrowed_inner(&self) -> Option<&'a VarZeroSlice<T, F>> {
+        if let Self(VarZeroVecInner::Borrowed(b)) = *self {
+            Some(b)
+        } else {
+            None
+        }
+    }
+
+    #[expect(clippy::unwrap_used)] // documented panic
+    fn zvl_permute(&mut self, permutation: &mut [usize]) {
+        assert_eq!(permutation.len(), self.zvl_len());
+
+        let mut result = VarZeroVecOwned::new();
+        for &i in permutation.iter() {
+            result.push(self.get(i).unwrap());
+        }
+        *self = Self(VarZeroVecInner::Owned(result));
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::*;
+
+    #[test]
+    fn test_zerovec_binary_search_in_range() {
+        let zv: ZeroVec<u16> = ZeroVec::from_slice_or_alloc(&[11, 22, 33, 44, 55, 66, 77]);
+
+        // Full range search
+        assert_eq!(zv.zvl_binary_search_in_range(&11, 0..7), Some(Ok(0)));
+        assert_eq!(zv.zvl_binary_search_in_range(&12, 0..7), Some(Err(1)));
+        assert_eq!(zv.zvl_binary_search_in_range(&44, 0..7), Some(Ok(3)));
+        assert_eq!(zv.zvl_binary_search_in_range(&45, 0..7), Some(Err(4)));
+        assert_eq!(zv.zvl_binary_search_in_range(&77, 0..7), Some(Ok(6)));
+        assert_eq!(zv.zvl_binary_search_in_range(&78, 0..7), Some(Err(7)));
+
+        // Out-of-range search
+        assert_eq!(zv.zvl_binary_search_in_range(&44, 0..2), Some(Err(2)));
+        assert_eq!(zv.zvl_binary_search_in_range(&44, 5..7), Some(Err(0)));
+
+        // Offset search
+        assert_eq!(zv.zvl_binary_search_in_range(&44, 2..5), Some(Ok(1)));
+        assert_eq!(zv.zvl_binary_search_in_range(&45, 2..5), Some(Err(2)));
+
+        // Out-of-bounds
+        assert_eq!(zv.zvl_binary_search_in_range(&44, 0..100), None);
+        assert_eq!(zv.zvl_binary_search_in_range(&44, 100..200), None);
+    }
+
+    #[test]
+    fn test_permute() {
+        let mut zv: ZeroVec<u16> = ZeroVec::from_slice_or_alloc(&[11, 22, 33, 44, 55, 66, 77]);
+        let mut permutation = vec![3, 2, 1, 0, 6, 5, 4];
+        zv.zvl_permute(&mut permutation);
+        assert_eq!(&zv, &[44, 33, 22, 11, 77, 66, 55]);
+
+        let mut vzv: VarZeroVec<str> = VarZeroVec::from(
+            VarZeroVecOwned::try_from_elements(&["11", "22", "33", "44", "55", "66", "77"])
+                .unwrap(),
+        );
+        let mut permutation = vec![3, 2, 1, 0, 6, 5, 4];
+        vzv.zvl_permute(&mut permutation);
+        assert_eq!(&vzv, &["44", "33", "22", "11", "77", "66", "55"]);
+    }
+}
diff --git a/vendor/zerovec/src/map2d/borrowed.rs b/vendor/zerovec/src/map2d/borrowed.rs
new file mode 100644
index 00000000..a222a025
--- /dev/null
+++ b/vendor/zerovec/src/map2d/borrowed.rs
@@ -0,0 +1,335 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::ZeroSlice;
+
+use core::cmp::Ordering;
+use core::fmt;
+
+use crate::map::ZeroMapKV;
+use crate::map::ZeroVecLike;
+use crate::map2d::ZeroMap2dCursor;
+
+/// A borrowed-only version of [`ZeroMap2d`](super::ZeroMap2d)
+///
+/// This is useful for fully-zero-copy deserialization from non-human-readable
+/// serialization formats. It also has the advantage that it can return references that live for
+/// the lifetime of the backing buffer as opposed to that of the [`ZeroMap2dBorrowed`] instance.
+///
+/// # Examples
+///
+/// ```
+/// use zerovec::maps::ZeroMap2dBorrowed;
+///
+/// // Example byte buffer representing the map { 1: {2: "three" } }
+/// let BINCODE_BYTES: &[u8; 47] = &[
+///     2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0,
+///     0, 0, 0, 0, 0, 0, 2, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 116, 104, 114,
+///     101, 101,
+/// ];
+///
+/// // Deserializing to ZeroMap2d requires no heap allocations.
+/// let zero_map: ZeroMap2dBorrowed<u16, u16, str> =
+///     bincode::deserialize(BINCODE_BYTES)
+///         .expect("Should deserialize successfully");
+/// assert_eq!(zero_map.get_2d(&1, &2), Some("three"));
+/// ```
+///
+/// This can be obtained from a [`ZeroMap2d`](super::ZeroMap2d) via [`ZeroMap2d::as_borrowed`](super::ZeroMap2d::as_borrowed)
+pub struct ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    pub(crate) keys0: &'a K0::Slice,
+    pub(crate) joiner: &'a ZeroSlice<u32>,
+    pub(crate) keys1: &'a K1::Slice,
+    pub(crate) values: &'a V::Slice,
+}
+
+impl<'a, K0, K1, V> Copy for ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+}
+
+impl<'a, K0, K1, V> Clone for ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+
+impl<'a, K0, K1, V> Default for ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0::Slice: 'static,
+    K1::Slice: 'static,
+    V::Slice: 'static,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<'a, K0, K1, V> ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0::Slice: 'static,
+    K1::Slice: 'static,
+    V::Slice: 'static,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    /// Creates a new, empty `ZeroMap2dBorrowed<K0, K1, V>`.
+    ///
+    /// Note: Since [`ZeroMap2dBorrowed`] is not mutable, the return value will be a stub unless
+    /// converted into a [`ZeroMap2d`](super::ZeroMap2d).
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::maps::ZeroMap2dBorrowed;
+    ///
+    /// let zm: ZeroMap2dBorrowed<u16, u16, str> = ZeroMap2dBorrowed::new();
+    /// assert!(zm.is_empty());
+    /// ```
+    pub fn new() -> Self {
+        Self {
+            keys0: K0::Container::zvl_new_borrowed(),
+            joiner: Default::default(),
+            keys1: K1::Container::zvl_new_borrowed(),
+            values: V::Container::zvl_new_borrowed(),
+        }
+    }
+}
+
+impl<'a, K0, K1, V> ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    #[doc(hidden)] // databake internal
+    pub const unsafe fn from_parts_unchecked(
+        keys0: &'a K0::Slice,
+        joiner: &'a ZeroSlice<u32>,
+        keys1: &'a K1::Slice,
+        values: &'a V::Slice,
+    ) -> Self {
+        Self {
+            keys0,
+            joiner,
+            keys1,
+            values,
+        }
+    }
+
+    /// The number of elements in the [`ZeroMap2dBorrowed`]
+    pub fn len(&self) -> usize {
+        self.values.zvl_len()
+    }
+
+    /// Whether the [`ZeroMap2dBorrowed`] is empty
+    pub fn is_empty(&self) -> bool {
+        self.values.zvl_len() == 0
+    }
+}
+
+impl<'a, K0, K1, V> ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Ord,
+    K1: ZeroMapKV<'a> + Ord,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    /// Get the value associated with `key0` and `key1`, if it exists.
+    ///
+    /// This is able to return values that live longer than the map itself
+    /// since they borrow directly from the backing buffer. This is the
+    /// primary advantage of using [`ZeroMap2dBorrowed`](super::ZeroMap2dBorrowed) over [`ZeroMap2d`](super::ZeroMap2d).
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert(&1, "one", "foo");
+    /// map.insert(&2, "one", "bar");
+    /// map.insert(&2, "two", "baz");
+    ///
+    /// let borrowed = map.as_borrowed();
+    /// assert_eq!(borrowed.get_2d(&1, "one"), Some("foo"));
+    /// assert_eq!(borrowed.get_2d(&1, "two"), None);
+    /// assert_eq!(borrowed.get_2d(&2, "one"), Some("bar"));
+    /// assert_eq!(borrowed.get_2d(&2, "two"), Some("baz"));
+    /// assert_eq!(borrowed.get_2d(&3, "three"), None);
+    /// ```
+    pub fn get_2d(&self, key0: &K0, key1: &K1) -> Option<&'a V::GetType> {
+        self.get0(key0)?.get1(key1)
+    }
+}
+
+impl<'a, K0, K1, V> ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Ord,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    /// Gets a cursor for `key0`. If `None`, then `key0` is not in the map. If `Some`,
+    /// then `key0` is in the map, and `key1` can be queried.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert(&1, "one", "foo");
+    /// map.insert(&2, "two", "bar");
+    /// let borrowed = map.as_borrowed();
+    /// assert!(matches!(borrowed.get0(&1), Some(_)));
+    /// assert!(matches!(borrowed.get0(&3), None));
+    /// ```
+    #[inline]
+    pub fn get0<'l>(&'l self, key0: &K0) -> Option<ZeroMap2dCursor<'a, 'a, K0, K1, V>> {
+        let key0_index = self.keys0.zvl_binary_search(key0).ok()?;
+        Some(ZeroMap2dCursor::from_borrowed(self, key0_index))
+    }
+
+    /// Binary search the map for `key0`, returning a cursor.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert(&1, "one", "foo");
+    /// map.insert(&2, "two", "bar");
+    /// let borrowed = map.as_borrowed();
+    /// assert!(matches!(borrowed.get0_by(|probe| probe.cmp(&1)), Some(_)));
+    /// assert!(matches!(borrowed.get0_by(|probe| probe.cmp(&3)), None));
+    /// ```
+    pub fn get0_by<'l>(
+        &'l self,
+        predicate: impl FnMut(&K0) -> Ordering,
+    ) -> Option<ZeroMap2dCursor<'a, 'a, K0, K1, V>> {
+        let key0_index = self.keys0.zvl_binary_search_by(predicate).ok()?;
+        Some(ZeroMap2dCursor::from_borrowed(self, key0_index))
+    }
+
+    /// Returns whether `key0` is contained in this map
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert(&1, "one", "foo");
+    /// map.insert(&2, "two", "bar");
+    /// let borrowed = map.as_borrowed();
+    /// assert!(borrowed.contains_key0(&1));
+    /// assert!(!borrowed.contains_key0(&3));
+    /// ```
+    pub fn contains_key0(&self, key0: &K0) -> bool {
+        self.keys0.zvl_binary_search(key0).is_ok()
+    }
+}
+
+impl<'a, K0, K1, V> ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    /// Produce an ordered iterator over keys0
+    pub fn iter0<'l>(&'l self) -> impl Iterator<Item = ZeroMap2dCursor<'a, 'a, K0, K1, V>> + 'l {
+        (0..self.keys0.zvl_len()).map(move |idx| ZeroMap2dCursor::from_borrowed(self, idx))
+    }
+}
+
+impl<'a, K0, K1, V> ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Ord,
+    K1: ZeroMapKV<'a> + Ord,
+    V: ZeroMapKV<'a>,
+    V: Copy,
+    K0: ?Sized,
+    K1: ?Sized,
+{
+    /// For cases when `V` is fixed-size, obtain a direct copy of `V` instead of `V::ULE`
+    pub fn get_copied_2d(&self, key0: &K0, key1: &K1) -> Option<V> {
+        self.get0(key0)?.get1_copied(key1)
+    }
+}
+
+// We can't use the default PartialEq because ZeroMap2d is invariant
+// so otherwise rustc will not automatically allow you to compare ZeroMaps
+// with different lifetimes
+impl<'a, 'b, K0, K1, V> PartialEq<ZeroMap2dBorrowed<'b, K0, K1, V>>
+    for ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: for<'c> ZeroMapKV<'c> + ?Sized,
+    K1: for<'c> ZeroMapKV<'c> + ?Sized,
+    V: for<'c> ZeroMapKV<'c> + ?Sized,
+    <K0 as ZeroMapKV<'a>>::Slice: PartialEq<<K0 as ZeroMapKV<'b>>::Slice>,
+    <K1 as ZeroMapKV<'a>>::Slice: PartialEq<<K1 as ZeroMapKV<'b>>::Slice>,
+    <V as ZeroMapKV<'a>>::Slice: PartialEq<<V as ZeroMapKV<'b>>::Slice>,
+{
+    fn eq(&self, other: &ZeroMap2dBorrowed<'b, K0, K1, V>) -> bool {
+        self.keys0.eq(other.keys0)
+            && self.joiner.eq(other.joiner)
+            && self.keys1.eq(other.keys1)
+            && self.values.eq(other.values)
+    }
+}
+
+impl<'a, K0, K1, V> fmt::Debug for ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized,
+    K1: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K0::Slice: fmt::Debug,
+    K1::Slice: fmt::Debug,
+    V::Slice: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+        f.debug_struct("ZeroMap2dBorrowed")
+            .field("keys0", &self.keys0)
+            .field("joiner", &self.joiner)
+            .field("keys1", &self.keys1)
+            .field("values", &self.values)
+            .finish()
+    }
+}
diff --git a/vendor/zerovec/src/map2d/cursor.rs b/vendor/zerovec/src/map2d/cursor.rs
new file mode 100644
index 00000000..ce1d2dca
--- /dev/null
+++ b/vendor/zerovec/src/map2d/cursor.rs
@@ -0,0 +1,394 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::{ZeroMap2d, ZeroSlice};
+
+use core::cmp::Ordering;
+use core::fmt;
+use core::ops::Range;
+
+use crate::map::ZeroMapKV;
+use crate::map::ZeroVecLike;
+
+use super::ZeroMap2dBorrowed;
+
+/// An intermediate state of queries over [`ZeroMap2d`] and [`ZeroMap2dBorrowed`].
+pub struct ZeroMap2dCursor<'l, 'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    // Invariant: these fields have the same invariants as they do in ZeroMap2d
+    keys0: &'l K0::Slice,
+    joiner: &'l ZeroSlice<u32>,
+    keys1: &'l K1::Slice,
+    values: &'l V::Slice,
+    // Invariant: key0_index is in range
+    key0_index: usize,
+}
+
+impl<'a, K0, K1, V> ZeroMap2dCursor<'a, 'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    /// `key0_index` must be in range
+    pub(crate) fn from_borrowed(
+        borrowed: &ZeroMap2dBorrowed<'a, K0, K1, V>,
+        key0_index: usize,
+    ) -> Self {
+        debug_assert!(key0_index < borrowed.joiner.len());
+        ZeroMap2dCursor {
+            keys0: borrowed.keys0,
+            joiner: borrowed.joiner,
+            keys1: borrowed.keys1,
+            values: borrowed.values,
+            key0_index,
+        }
+    }
+}
+
+impl<'l, 'a, K0, K1, V> ZeroMap2dCursor<'l, 'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    /// `key0_index` must be in range
+    pub(crate) fn from_cow(cow: &'l ZeroMap2d<'a, K0, K1, V>, key0_index: usize) -> Self {
+        debug_assert!(key0_index < cow.joiner.len());
+        Self {
+            keys0: cow.keys0.zvl_as_borrowed(),
+            joiner: &cow.joiner,
+            keys1: cow.keys1.zvl_as_borrowed(),
+            values: cow.values.zvl_as_borrowed(),
+            key0_index,
+        }
+    }
+
+    /// Returns the key0 corresponding to the cursor position.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert("one", &1u32, "foo");
+    /// assert_eq!(map.get0("one").unwrap().key0(), "one");
+    /// ```
+    pub fn key0(&self) -> &'l K0::GetType {
+        #[expect(clippy::unwrap_used)] // safe by invariant on `self.key0_index`
+        self.keys0.zvl_get(self.key0_index).unwrap()
+    }
+
+    /// Borrow an ordered iterator over keys1 and values for a particular key0.
+    ///
+    /// To get the values as copy types, see [`Self::iter1_copied`].
+    ///
+    /// For an example, see [`ZeroMap2d::iter0()`].
+    pub fn iter1(
+        &self,
+    ) -> impl DoubleEndedIterator<
+        Item = (
+            &'l <K1 as ZeroMapKV<'a>>::GetType,
+            &'l <V as ZeroMapKV<'a>>::GetType,
+        ),
+    > + ExactSizeIterator
+           + '_ {
+        let range = self.get_range();
+        #[expect(clippy::unwrap_used)] // `self.get_range()` returns a valid range
+        range.map(move |idx| {
+            (
+                self.keys1.zvl_get(idx).unwrap(),
+                self.values.zvl_get(idx).unwrap(),
+            )
+        })
+    }
+
+    /// Transform this cursor into an ordered iterator over keys1 for a particular key0.
+    pub fn into_iter1(
+        self,
+    ) -> impl DoubleEndedIterator<
+        Item = (
+            &'l <K1 as ZeroMapKV<'a>>::GetType,
+            &'l <V as ZeroMapKV<'a>>::GetType,
+        ),
+    > + ExactSizeIterator {
+        let range = self.get_range();
+        #[expect(clippy::unwrap_used)] // `self.get_range()` returns a valid range
+        range.map(move |idx| {
+            (
+                self.keys1.zvl_get(idx).unwrap(),
+                self.values.zvl_get(idx).unwrap(),
+            )
+        })
+    }
+
+    /// Given key0_index, returns the corresponding range of keys1, which will be valid
+    pub(super) fn get_range(&self) -> Range<usize> {
+        debug_assert!(self.key0_index < self.joiner.len());
+        let start = if self.key0_index == 0 {
+            0
+        } else {
+            #[expect(clippy::unwrap_used)] // protected by the debug_assert above
+            self.joiner.get(self.key0_index - 1).unwrap()
+        };
+        #[expect(clippy::unwrap_used)] // protected by the debug_assert above
+        let limit = self.joiner.get(self.key0_index).unwrap();
+        // These two assertions are true based on the invariants of ZeroMap2d
+        debug_assert!(start < limit);
+        debug_assert!((limit as usize) <= self.values.zvl_len());
+        (start as usize)..(limit as usize)
+    }
+}
+
+impl<'l, 'a, K0, K1, V> ZeroMap2dCursor<'l, 'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: Copy,
+{
+    /// Borrow an ordered iterator over keys1 and values for a particular key0.
+    ///
+    /// The values are returned as copy types.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let zm2d: ZeroMap2d<str, u8, u16> =
+    ///     [("a", 0u8, 1u16), ("b", 1u8, 1000u16), ("b", 2u8, 2000u16)]
+    ///         .into_iter()
+    ///         .collect();
+    ///
+    /// let mut total_value = 0;
+    ///
+    /// for cursor in zm2d.iter0() {
+    ///     for (_, value) in cursor.iter1_copied() {
+    ///         total_value += value;
+    ///     }
+    /// }
+    ///
+    /// assert_eq!(total_value, 3001);
+    /// ```
+    pub fn iter1_copied(
+        &self,
+    ) -> impl DoubleEndedIterator<Item = (&'l <K1 as ZeroMapKV<'a>>::GetType, V)> + ExactSizeIterator + '_
+    {
+        let range = self.get_range();
+        #[expect(clippy::unwrap_used)] // `self.get_range()` returns a valid range
+        range.map(move |idx| {
+            (
+                self.keys1.zvl_get(idx).unwrap(),
+                self.get1_copied_at(idx).unwrap(),
+            )
+        })
+    }
+    /// Transform this cursor into an ordered iterator over keys1 for a particular key0.
+    ///
+    /// The values are returned as copy types.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let zm2d: ZeroMap2d<str, u8, u16> =
+    ///     [("a", 0u8, 1u16), ("b", 1u8, 1000u16), ("b", 2u8, 2000u16)]
+    ///         .into_iter()
+    ///         .collect();
+    ///
+    /// let mut total_value = 0;
+    ///
+    /// for cursor in zm2d.iter0() {
+    ///     for (_, value) in cursor.into_iter1_copied() {
+    ///         total_value += value;
+    ///     }
+    /// }
+    ///
+    /// assert_eq!(total_value, 3001);
+    /// ```
+    pub fn into_iter1_copied(
+        self,
+    ) -> impl DoubleEndedIterator<Item = (&'l <K1 as ZeroMapKV<'a>>::GetType, V)> + ExactSizeIterator
+    {
+        let range = self.get_range();
+        #[expect(clippy::unwrap_used)] // `self.get_range()` returns a valid range
+        range.map(move |idx| {
+            (
+                self.keys1.zvl_get(idx).unwrap(),
+                self.get1_copied_at(idx).unwrap(),
+            )
+        })
+    }
+
+    fn get1_copied_at(&self, index: usize) -> Option<V> {
+        let ule = self.values.zvl_get(index)?;
+        let mut result = Option::<V>::None;
+        V::Container::zvl_get_as_t(ule, |v| result.replace(*v));
+        #[expect(clippy::unwrap_used)] // `zvl_get_as_t` guarantees that the callback is invoked
+        Some(result.unwrap())
+    }
+}
+
+impl<'l, 'a, K0, K1, V> ZeroMap2dCursor<'l, 'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a> + Ord,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    /// Gets the value for a key1 from this cursor, or `None` if key1 is not in the map.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert("one", &1u32, "foo");
+    /// assert_eq!(map.get0("one").unwrap().get1(&1), Some("foo"));
+    /// assert_eq!(map.get0("one").unwrap().get1(&2), None);
+    /// ```
+    pub fn get1(&self, key1: &K1) -> Option<&'l V::GetType> {
+        let key1_index = self.get_key1_index(key1)?;
+        #[expect(clippy::unwrap_used)] // key1_index is valid
+        Some(self.values.zvl_get(key1_index).unwrap())
+    }
+
+    /// Gets the value for a predicate from this cursor, or `None` if key1 is not in the map.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert("one", &1u32, "foo");
+    /// assert_eq!(map.get0("one").unwrap().get1_by(|v| v.cmp(&1)), Some("foo"));
+    /// assert_eq!(map.get0("one").unwrap().get1_by(|v| v.cmp(&2)), None);
+    /// ```
+    pub fn get1_by(&self, predicate: impl FnMut(&K1) -> Ordering) -> Option<&'l V::GetType> {
+        let key1_index = self.get_key1_index_by(predicate)?;
+        #[expect(clippy::unwrap_used)] // key1_index is valid
+        Some(self.values.zvl_get(key1_index).unwrap())
+    }
+
+    /// Given key0_index and predicate, returns the index into the values array
+    fn get_key1_index_by(&self, predicate: impl FnMut(&K1) -> Ordering) -> Option<usize> {
+        let range = self.get_range();
+        debug_assert!(range.start < range.end); // '<' because every key0 should have a key1
+        debug_assert!(range.end <= self.keys1.zvl_len());
+        let start = range.start;
+        #[expect(clippy::expect_used)] // protected by the debug_assert above
+        let binary_search_result = self
+            .keys1
+            .zvl_binary_search_in_range_by(predicate, range)
+            .expect("in-bounds range");
+        binary_search_result.ok().map(move |s| s + start)
+    }
+
+    /// Given key0_index and key1, returns the index into the values array
+    fn get_key1_index(&self, key1: &K1) -> Option<usize> {
+        let range = self.get_range();
+        debug_assert!(range.start < range.end); // '<' because every key0 should have a key1
+        debug_assert!(range.end <= self.keys1.zvl_len());
+        let start = range.start;
+        #[expect(clippy::expect_used)] // protected by the debug_assert above
+        let binary_search_result = self
+            .keys1
+            .zvl_binary_search_in_range(key1, range)
+            .expect("in-bounds range");
+        binary_search_result.ok().map(move |s| s + start)
+    }
+}
+
+impl<'l, 'a, K0, K1, V> ZeroMap2dCursor<'l, 'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a> + Ord,
+    V: ZeroMapKV<'a>,
+    V: Copy,
+    K0: ?Sized,
+    K1: ?Sized,
+{
+    /// For cases when `V` is fixed-size, obtain a direct copy of `V` instead of `V::ULE`
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map: ZeroMap2d<u16, u16, u16> = ZeroMap2d::new();
+    /// map.insert(&1, &2, &3);
+    /// map.insert(&1, &4, &5);
+    /// map.insert(&6, &7, &8);
+    ///
+    /// assert_eq!(map.get0(&6).unwrap().get1_copied(&7), Some(8));
+    /// ```
+    #[inline]
+    pub fn get1_copied(&self, key1: &K1) -> Option<V> {
+        let key1_index = self.get_key1_index(key1)?;
+        self.get1_copied_at(key1_index)
+    }
+
+    /// For cases when `V` is fixed-size, obtain a direct copy of `V` instead of `V::ULE`
+    #[inline]
+    pub fn get1_copied_by(&self, predicate: impl FnMut(&K1) -> Ordering) -> Option<V> {
+        let key1_index = self.get_key1_index_by(predicate)?;
+        self.get1_copied_at(key1_index)
+    }
+}
+
+// We can't use the default PartialEq because ZeroMap2d is invariant
+// so otherwise rustc will not automatically allow you to compare ZeroMaps
+// with different lifetimes
+impl<'m, 'n, 'a, 'b, K0, K1, V> PartialEq<ZeroMap2dCursor<'n, 'b, K0, K1, V>>
+    for ZeroMap2dCursor<'m, 'a, K0, K1, V>
+where
+    K0: for<'c> ZeroMapKV<'c> + ?Sized,
+    K1: for<'c> ZeroMapKV<'c> + ?Sized,
+    V: for<'c> ZeroMapKV<'c> + ?Sized,
+    <K0 as ZeroMapKV<'a>>::Slice: PartialEq<<K0 as ZeroMapKV<'b>>::Slice>,
+    <K1 as ZeroMapKV<'a>>::Slice: PartialEq<<K1 as ZeroMapKV<'b>>::Slice>,
+    <V as ZeroMapKV<'a>>::Slice: PartialEq<<V as ZeroMapKV<'b>>::Slice>,
+{
+    fn eq(&self, other: &ZeroMap2dCursor<'n, 'b, K0, K1, V>) -> bool {
+        self.keys0.eq(other.keys0)
+            && self.joiner.eq(other.joiner)
+            && self.keys1.eq(other.keys1)
+            && self.values.eq(other.values)
+            && self.key0_index.eq(&other.key0_index)
+    }
+}
+
+impl<'l, 'a, K0, K1, V> fmt::Debug for ZeroMap2dCursor<'l, 'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized,
+    K1: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K0::Slice: fmt::Debug,
+    K1::Slice: fmt::Debug,
+    V::Slice: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+        f.debug_struct("ZeroMap2d")
+            .field("keys0", &self.keys0)
+            .field("joiner", &self.joiner)
+            .field("keys1", &self.keys1)
+            .field("values", &self.values)
+            .field("key0_index", &self.key0_index)
+            .finish()
+    }
+}
diff --git a/vendor/zerovec/src/map2d/databake.rs b/vendor/zerovec/src/map2d/databake.rs
new file mode 100644
index 00000000..fc91ca05
--- /dev/null
+++ b/vendor/zerovec/src/map2d/databake.rs
@@ -0,0 +1,146 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::{maps::ZeroMap2dBorrowed, maps::ZeroMapKV, ZeroMap2d};
+use databake::*;
+
+impl<'a, K0, K1, V> Bake for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized,
+    K1: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K0::Container: Bake,
+    K1::Container: Bake,
+    V::Container: Bake,
+{
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("zerovec");
+        let keys0 = self.keys0.bake(env);
+        let joiner = self.joiner.bake(env);
+        let keys1 = self.keys1.bake(env);
+        let values = self.values.bake(env);
+        quote! { unsafe { #[allow(unused_unsafe)] zerovec::ZeroMap2d::from_parts_unchecked(#keys0, #joiner, #keys1, #values) } }
+    }
+}
+
+impl<'a, K0, K1, V> BakeSize for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized,
+    K1: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K0::Container: BakeSize,
+    K1::Container: BakeSize,
+    V::Container: BakeSize,
+{
+    fn borrows_size(&self) -> usize {
+        self.keys0.borrows_size()
+            + self.joiner.borrows_size()
+            + self.keys1.borrows_size()
+            + self.values.borrows_size()
+    }
+}
+
+impl<'a, K0, K1, V> Bake for ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized,
+    K1: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    &'a K0::Slice: Bake,
+    &'a K1::Slice: Bake,
+    &'a V::Slice: Bake,
+{
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("zerovec");
+        let keys0 = self.keys0.bake(env);
+        let joiner = self.joiner.bake(env);
+        let keys1 = self.keys1.bake(env);
+        let values = self.values.bake(env);
+        quote! { unsafe { #[allow(unused_unsafe)] zerovec::maps::ZeroMap2dBorrowed::from_parts_unchecked(#keys0, #joiner, #keys1, #values) } }
+    }
+}
+
+impl<'a, K0, K1, V> BakeSize for ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized,
+    K1: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    &'a K0::Slice: BakeSize,
+    &'a K1::Slice: BakeSize,
+    &'a V::Slice: BakeSize,
+{
+    fn borrows_size(&self) -> usize {
+        self.keys0.borrows_size()
+            + self.joiner.borrows_size()
+            + self.keys1.borrows_size()
+            + self.values.borrows_size()
+    }
+}
+
+#[test]
+fn test_baked_map() {
+    test_bake!(
+        ZeroMap2d<str, str, str>,
+        const,
+        unsafe {
+            #[allow(unused_unsafe)]
+            crate::ZeroMap2d::from_parts_unchecked(
+                unsafe {
+                    crate::vecs::VarZeroVec16::from_bytes_unchecked(
+                        b"\x0E\0\0\0\0\0\x05\0\x07\0\t\0\x0B\0\x10\0\x12\0\x14\0\x1C\0\x1E\0#\0%\0'\0,\0arcazcuenffgrckkkukylifmanmnpapalsdtgugunruzyuezh"
+                    )
+                },
+                unsafe {
+                    crate::ZeroVec::from_bytes_unchecked(
+                        b"\x02\0\0\0\x03\0\0\0\x04\0\0\0\x05\0\0\0\x06\0\0\0\x07\0\0\0\x08\0\0\0\n\0\0\0\x0C\0\0\0\r\0\0\0\x0E\0\0\0\x0F\0\0\0\x10\0\0\0\x11\0\0\0\x14\0\0\0\x15\0\0\0\x16\0\0\0\x17\0\0\0\x18\0\0\0\x19\0\0\0\x1C\0\0\0"
+                    )
+                },
+                unsafe {
+                    crate::vecs::VarZeroVec16::from_bytes_unchecked(
+                        b"\x1C\0\0\0\0\0\x04\0\x08\0\x0C\0\x10\0\x14\0\x18\0\x1C\0 \0$\0(\0,\x000\x004\08\0<\0@\0D\0H\0L\0P\0T\0X\0\\\0`\0d\0h\0l\0NbatPalmArabGlagShawAdlmLinbArabArabYeziArabLatnLimbNkooMongArabPhlpDevaKhojSindArabCyrlDevaArabHansBopoHanbHant"
+                    )
+                },
+                unsafe {
+                    crate::vecs::VarZeroVec16::from_bytes_unchecked(
+                        b"\x1C\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1C\0\x1E\0 \0\"\0$\0&\0(\0*\0,\0.\x000\x002\x004\x006\0JOSYIRBGGBGNGRCNIQGECNTRINGNCNPKCNINININPKKZNPAFCNTWTWTW"
+                    )
+                },
+            )
+        },
+        zerovec
+    );
+}
+
+#[test]
+fn test_baked_borrowed_map() {
+    test_bake!(
+        ZeroMap2dBorrowed<str, str, str>,
+        const,
+        unsafe {
+            #[allow(unused_unsafe)]
+            crate::maps::ZeroMap2dBorrowed::from_parts_unchecked(
+                unsafe {
+                    crate::vecs::VarZeroSlice16::from_bytes_unchecked(
+                        b"\x0E\0\0\0\0\0\x05\0\x07\0\t\0\x0B\0\x10\0\x12\0\x14\0\x1C\0\x1E\0#\0%\0'\0,\0arcazcuenffgrckkkukylifmanmnpapalsdtgugunruzyuezh"
+                    )
+                },
+                unsafe {
+                    crate::ZeroSlice::from_bytes_unchecked(
+                        b"\x02\0\0\0\x03\0\0\0\x04\0\0\0\x05\0\0\0\x06\0\0\0\x07\0\0\0\x08\0\0\0\n\0\0\0\x0C\0\0\0\r\0\0\0\x0E\0\0\0\x0F\0\0\0\x10\0\0\0\x11\0\0\0\x14\0\0\0\x15\0\0\0\x16\0\0\0\x17\0\0\0\x18\0\0\0\x19\0\0\0\x1C\0\0\0"
+                    )
+                },
+                unsafe {
+                    crate::vecs::VarZeroSlice16::from_bytes_unchecked(
+                        b"\x1C\0\0\0\0\0\x04\0\x08\0\x0C\0\x10\0\x14\0\x18\0\x1C\0 \0$\0(\0,\x000\x004\08\0<\0@\0D\0H\0L\0P\0T\0X\0\\\0`\0d\0h\0l\0NbatPalmArabGlagShawAdlmLinbArabArabYeziArabLatnLimbNkooMongArabPhlpDevaKhojSindArabCyrlDevaArabHansBopoHanbHant"
+                    )
+                },
+                unsafe {
+                    crate::vecs::VarZeroSlice16::from_bytes_unchecked(
+                        b"\x1C\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1C\0\x1E\0 \0\"\0$\0&\0(\0*\0,\0.\x000\x002\x004\x006\0JOSYIRBGGBGNGRCNIQGECNTRINGNCNPKCNINININPKKZNPAFCNTWTWTW"
+                    )
+                },
+            )
+        },
+        zerovec
+    );
+}
diff --git a/vendor/zerovec/src/map2d/map.rs b/vendor/zerovec/src/map2d/map.rs
new file mode 100644
index 00000000..1d6bd0ed
--- /dev/null
+++ b/vendor/zerovec/src/map2d/map.rs
@@ -0,0 +1,874 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::ule::AsULE;
+use crate::ZeroVec;
+use alloc::borrow::Borrow;
+use core::cmp::Ordering;
+use core::convert::TryFrom;
+use core::fmt;
+use core::iter::FromIterator;
+use core::ops::Range;
+
+use super::*;
+use crate::map::ZeroMapKV;
+use crate::map::{MutableZeroVecLike, ZeroVecLike};
+
+/// A zero-copy, two-dimensional map datastructure .
+///
+/// This is an extension of [`ZeroMap`] that supports two layers of keys. For example,
+/// to map a pair of an integer and a string to a buffer, you can write:
+///
+/// ```no_run
+/// # use zerovec::ZeroMap2d;
+/// let _: ZeroMap2d<u32, str, [u8]> = unimplemented!();
+/// ```
+///
+/// Internally, `ZeroMap2d` stores four zero-copy vectors, one for each type argument plus
+/// one more to match between the two vectors of keys.
+///
+/// # Examples
+///
+/// ```
+/// use zerovec::ZeroMap2d;
+///
+/// // Example byte buffer representing the map { 1: {2: "three" } }
+/// let BINCODE_BYTES: &[u8; 47] = &[
+///     2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0,
+///     0, 0, 0, 0, 0, 0, 2, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 116, 104, 114,
+///     101, 101,
+/// ];
+///
+/// // Deserializing to ZeroMap requires no heap allocations.
+/// let zero_map: ZeroMap2d<u16, u16, str> =
+///     bincode::deserialize(BINCODE_BYTES)
+///         .expect("Should deserialize successfully");
+/// assert_eq!(zero_map.get_2d(&1, &2), Some("three"));
+/// ```
+///
+/// [`VarZeroVec`]: crate::VarZeroVec
+/// [`ZeroMap`]: crate::ZeroMap
+// ZeroMap2d contains 4 fields:
+//
+// - keys0 = sorted list of all K0 in the map
+// - joiner = helper vec that maps from a K0 to a range of keys1
+// - keys1 = list of all K1 in the map, sorted in ranges for each K0
+// - values = list of all values in the map, sorted by (K0, K1)
+//
+// For a particular K0 at index i, the range of keys1 corresponding to K0 is
+// (joiner[i-1]..joiner[i]), where the first range starts at 0.
+//
+// Required Invariants:
+//
+// 1. len(keys0) == len(joiner)
+// 2. len(keys1) == len(values)
+// 3. joiner is sorted
+// 4. the last element of joiner is the length of keys1
+//
+// Optional Invariants:
+//
+// 5. keys0 is sorted (for binary_search)
+// 6. ranges within keys1 are sorted (for binary_search)
+// 7. every K0 is associated with at least one K1 (no empty ranges)
+//
+// During deserialization, these three invariants are not checked, because they put the
+// ZeroMap2d in a deterministic state, even though it may have unexpected behavior.
+pub struct ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    pub(crate) keys0: K0::Container,
+    pub(crate) joiner: ZeroVec<'a, u32>,
+    pub(crate) keys1: K1::Container,
+    pub(crate) values: V::Container,
+}
+
+impl<'a, K0, K1, V> Default for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<'a, K0, K1, V> ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    /// Creates a new, empty `ZeroMap2d`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let zm: ZeroMap2d<u16, str, str> = ZeroMap2d::new();
+    /// assert!(zm.is_empty());
+    /// ```
+    pub fn new() -> Self {
+        Self {
+            keys0: K0::Container::zvl_with_capacity(0),
+            joiner: ZeroVec::new(),
+            keys1: K1::Container::zvl_with_capacity(0),
+            values: V::Container::zvl_with_capacity(0),
+        }
+    }
+
+    #[doc(hidden)] // databake internal
+    pub const unsafe fn from_parts_unchecked(
+        keys0: K0::Container,
+        joiner: ZeroVec<'a, u32>,
+        keys1: K1::Container,
+        values: V::Container,
+    ) -> Self {
+        Self {
+            keys0,
+            joiner,
+            keys1,
+            values,
+        }
+    }
+
+    /// Construct a new [`ZeroMap2d`] with a given capacity
+    pub fn with_capacity(capacity: usize) -> Self {
+        Self {
+            keys0: K0::Container::zvl_with_capacity(capacity),
+            joiner: ZeroVec::with_capacity(capacity),
+            keys1: K1::Container::zvl_with_capacity(capacity),
+            values: V::Container::zvl_with_capacity(capacity),
+        }
+    }
+
+    /// Obtain a borrowed version of this map
+    pub fn as_borrowed(&'a self) -> ZeroMap2dBorrowed<'a, K0, K1, V> {
+        ZeroMap2dBorrowed {
+            keys0: self.keys0.zvl_as_borrowed(),
+            joiner: &self.joiner,
+            keys1: self.keys1.zvl_as_borrowed(),
+            values: self.values.zvl_as_borrowed(),
+        }
+    }
+
+    /// The number of values in the [`ZeroMap2d`]
+    pub fn len(&self) -> usize {
+        self.values.zvl_len()
+    }
+
+    /// Whether the [`ZeroMap2d`] is empty
+    pub fn is_empty(&self) -> bool {
+        self.values.zvl_len() == 0
+    }
+
+    /// Remove all elements from the [`ZeroMap2d`]
+    pub fn clear(&mut self) {
+        self.keys0.zvl_clear();
+        self.joiner.clear();
+        self.keys1.zvl_clear();
+        self.values.zvl_clear();
+    }
+
+    /// Reserve capacity for `additional` more elements to be inserted into
+    /// the [`ZeroMap2d`] to avoid frequent reallocations.
+    ///
+    /// See [`Vec::reserve()`](alloc::vec::Vec::reserve) for more information.
+    pub fn reserve(&mut self, additional: usize) {
+        self.keys0.zvl_reserve(additional);
+        self.joiner.zvl_reserve(additional);
+        self.keys1.zvl_reserve(additional);
+        self.values.zvl_reserve(additional);
+    }
+
+    /// Produce an ordered iterator over keys0, which can then be used to get an iterator
+    /// over keys1 for a particular key0.
+    ///
+    /// # Example
+    ///
+    /// Loop over all elements of a ZeroMap2d:
+    ///
+    /// ```
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map: ZeroMap2d<u16, u16, str> = ZeroMap2d::new();
+    /// map.insert(&1, &1, "foo");
+    /// map.insert(&2, &3, "bar");
+    /// map.insert(&2, &4, "baz");
+    ///
+    /// let mut total_value = 0;
+    ///
+    /// for cursor in map.iter0() {
+    ///     for (key1, value) in cursor.iter1() {
+    ///         // This code runs for every (key0, key1) pair
+    ///         total_value += cursor.key0().as_unsigned_int() as usize;
+    ///         total_value += key1.as_unsigned_int() as usize;
+    ///         total_value += value.len();
+    ///     }
+    /// }
+    ///
+    /// assert_eq!(total_value, 22);
+    /// ```
+    pub fn iter0<'l>(&'l self) -> impl Iterator<Item = ZeroMap2dCursor<'l, 'a, K0, K1, V>> + 'l {
+        (0..self.keys0.zvl_len()).map(move |idx| ZeroMap2dCursor::from_cow(self, idx))
+    }
+
+    // INTERNAL ROUTINES FOLLOW //
+
+    /// Given an index into the joiner array, returns the corresponding range of keys1
+    fn get_range_for_key0_index(&self, key0_index: usize) -> Range<usize> {
+        ZeroMap2dCursor::from_cow(self, key0_index).get_range()
+    }
+
+    /// Removes key0_index from the keys0 array and the joiner array
+    fn remove_key0_index(&mut self, key0_index: usize) {
+        self.keys0.zvl_remove(key0_index);
+        self.joiner.with_mut(|v| v.remove(key0_index));
+    }
+
+    /// Shifts all joiner ranges from key0_index onward one index up
+    fn joiner_expand(&mut self, key0_index: usize) {
+        #[expect(clippy::expect_used)] // slice overflow
+        self.joiner
+            .to_mut_slice()
+            .iter_mut()
+            .skip(key0_index)
+            .for_each(|ref mut v| {
+                // TODO(#1410): Make this fallible
+                **v = v
+                    .as_unsigned_int()
+                    .checked_add(1)
+                    .expect("Attempted to add more than 2^32 elements to a ZeroMap2d")
+                    .to_unaligned()
+            })
+    }
+
+    /// Shifts all joiner ranges from key0_index onward one index down
+    fn joiner_shrink(&mut self, key0_index: usize) {
+        self.joiner
+            .to_mut_slice()
+            .iter_mut()
+            .skip(key0_index)
+            .for_each(|ref mut v| **v = (v.as_unsigned_int() - 1).to_unaligned())
+    }
+}
+
+impl<'a, K0, K1, V> ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Ord,
+    K1: ZeroMapKV<'a> + Ord,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    /// Get the value associated with `key0` and `key1`, if it exists.
+    ///
+    /// For more fine-grained error handling, use [`ZeroMap2d::get0`].
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert(&1, "one", "foo");
+    /// map.insert(&2, "one", "bar");
+    /// map.insert(&2, "two", "baz");
+    /// assert_eq!(map.get_2d(&1, "one"), Some("foo"));
+    /// assert_eq!(map.get_2d(&1, "two"), None);
+    /// assert_eq!(map.get_2d(&2, "one"), Some("bar"));
+    /// assert_eq!(map.get_2d(&2, "two"), Some("baz"));
+    /// assert_eq!(map.get_2d(&3, "three"), None);
+    /// ```
+    pub fn get_2d(&self, key0: &K0, key1: &K1) -> Option<&V::GetType> {
+        self.get0(key0)?.get1(key1)
+    }
+
+    /// Insert `value` with `key`, returning the existing value if it exists.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// assert_eq!(map.insert(&0, "zero", "foo"), None,);
+    /// assert_eq!(map.insert(&1, "one", "bar"), None,);
+    /// assert_eq!(map.insert(&1, "one", "baz").as_deref(), Some("bar"),);
+    /// assert_eq!(map.get_2d(&1, "one").as_deref(), Some("baz"));
+    /// assert_eq!(map.len(), 2);
+    /// ```
+    pub fn insert(&mut self, key0: &K0, key1: &K1, value: &V) -> Option<V::OwnedType> {
+        let (key0_index, range) = self.get_or_insert_range_for_key0(key0);
+        debug_assert!(range.start <= range.end); // '<=' because we may have inserted a new key0
+        debug_assert!(range.end <= self.keys1.zvl_len());
+        let range_start = range.start;
+        #[expect(clippy::unwrap_used)] // by debug_assert! invariants
+        let index = range_start
+            + match self.keys1.zvl_binary_search_in_range(key1, range).unwrap() {
+                Ok(index) => return Some(self.values.zvl_replace(range_start + index, value)),
+                Err(index) => index,
+            };
+        self.keys1.zvl_insert(index, key1);
+        self.values.zvl_insert(index, value);
+        self.joiner_expand(key0_index);
+        #[cfg(debug_assertions)]
+        self.check_invariants();
+        None
+    }
+
+    /// Remove the value at `key`, returning it if it exists.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert(&1, "one", "foo");
+    /// map.insert(&2, "two", "bar");
+    /// assert_eq!(
+    ///     map.remove(&1, "one"),
+    ///     Some("foo".to_owned().into_boxed_str())
+    /// );
+    /// assert_eq!(map.get_2d(&1, "one"), None);
+    /// assert_eq!(map.remove(&1, "one"), None);
+    /// ```
+    pub fn remove(&mut self, key0: &K0, key1: &K1) -> Option<V::OwnedType> {
+        let key0_index = self.keys0.zvl_binary_search(key0).ok()?;
+        let range = self.get_range_for_key0_index(key0_index);
+        debug_assert!(range.start < range.end); // '<' because every key0 should have a key1
+        debug_assert!(range.end <= self.keys1.zvl_len());
+        let is_singleton_range = range.start + 1 == range.end;
+        #[expect(clippy::unwrap_used)] // by debug_assert invariants
+        let index = range.start
+            + self
+                .keys1
+                .zvl_binary_search_in_range(key1, range)
+                .unwrap()
+                .ok()?;
+        self.keys1.zvl_remove(index);
+        let removed = self.values.zvl_remove(index);
+        self.joiner_shrink(key0_index);
+        if is_singleton_range {
+            self.remove_key0_index(key0_index);
+        }
+        #[cfg(debug_assertions)]
+        self.check_invariants();
+        Some(removed)
+    }
+
+    /// Appends `value` with `key` to the end of the underlying vector, returning
+    /// `key` and `value` _if it failed_. Useful for extending with an existing
+    /// sorted list.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// assert!(map.try_append(&1, "one", "uno").is_none());
+    /// assert!(map.try_append(&3, "three", "tres").is_none());
+    ///
+    /// let unsuccessful = map.try_append(&3, "three", "tres-updated");
+    /// assert!(unsuccessful.is_some(), "append duplicate of last key");
+    ///
+    /// let unsuccessful = map.try_append(&2, "two", "dos");
+    /// assert!(unsuccessful.is_some(), "append out of order");
+    ///
+    /// assert_eq!(map.get_2d(&1, "one"), Some("uno"));
+    ///
+    /// // contains the original value for the key: 3
+    /// assert_eq!(map.get_2d(&3, "three"), Some("tres"));
+    ///
+    /// // not appended since it wasn't in order
+    /// assert_eq!(map.get_2d(&2, "two"), None);
+    /// ```
+    #[must_use]
+    pub fn try_append<'b>(
+        &mut self,
+        key0: &'b K0,
+        key1: &'b K1,
+        value: &'b V,
+    ) -> Option<(&'b K0, &'b K1, &'b V)> {
+        if self.is_empty() {
+            self.keys0.zvl_push(key0);
+            self.joiner.with_mut(|v| v.push(1u32.to_unaligned()));
+            self.keys1.zvl_push(key1);
+            self.values.zvl_push(value);
+            return None;
+        }
+
+        // The unwraps are protected by the fact that we are not empty
+        #[expect(clippy::unwrap_used)]
+        let last_key0 = self.keys0.zvl_get(self.keys0.zvl_len() - 1).unwrap();
+        let key0_cmp = K0::Container::t_cmp_get(key0, last_key0);
+        #[expect(clippy::unwrap_used)]
+        let last_key1 = self.keys1.zvl_get(self.keys1.zvl_len() - 1).unwrap();
+        let key1_cmp = K1::Container::t_cmp_get(key1, last_key1);
+
+        // Check for error case (out of order)
+        match key0_cmp {
+            Ordering::Less => {
+                // Error case
+                return Some((key0, key1, value));
+            }
+            Ordering::Equal => {
+                match key1_cmp {
+                    Ordering::Less | Ordering::Equal => {
+                        // Error case
+                        return Some((key0, key1, value));
+                    }
+                    _ => {}
+                }
+            }
+            _ => {}
+        }
+
+        #[expect(clippy::expect_used)] // slice overflow
+        let joiner_value = u32::try_from(self.keys1.zvl_len() + 1)
+            .expect("Attempted to add more than 2^32 elements to a ZeroMap2d");
+
+        // All OK to append
+        #[expect(clippy::unwrap_used)]
+        if key0_cmp == Ordering::Greater {
+            self.keys0.zvl_push(key0);
+            self.joiner
+                .with_mut(|v| v.push(joiner_value.to_unaligned()));
+        } else {
+            // This unwrap is protected because we are not empty
+            *self.joiner.to_mut_slice().last_mut().unwrap() = joiner_value.to_unaligned();
+        }
+        self.keys1.zvl_push(key1);
+        self.values.zvl_push(value);
+
+        #[cfg(debug_assertions)]
+        self.check_invariants();
+
+        None
+    }
+
+    // INTERNAL ROUTINES FOLLOW //
+
+    #[cfg(debug_assertions)]
+    #[expect(clippy::unwrap_used)] // this is an assertion function
+    pub(crate) fn check_invariants(&self) {
+        debug_assert_eq!(self.keys0.zvl_len(), self.joiner.len());
+        debug_assert_eq!(self.keys1.zvl_len(), self.values.zvl_len());
+        debug_assert!(self.keys0.zvl_is_ascending());
+        debug_assert!(self.joiner.zvl_is_ascending());
+        if let Some(last_joiner) = self.joiner.last() {
+            debug_assert_eq!(last_joiner as usize, self.keys1.zvl_len());
+        }
+        for i in 0..self.joiner.len() {
+            let j0 = if i == 0 {
+                0
+            } else {
+                self.joiner.get(i - 1).unwrap() as usize
+            };
+            let j1 = self.joiner.get(i).unwrap() as usize;
+            debug_assert_ne!(j0, j1);
+            for j in (j0 + 1)..j1 {
+                let m0 = self.keys1.zvl_get(j - 1).unwrap();
+                let m1 = self.keys1.zvl_get(j).unwrap();
+                debug_assert_eq!(Ordering::Less, K1::Container::get_cmp_get(m0, m1));
+            }
+        }
+    }
+}
+
+impl<'a, K0, K1, V> ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Ord,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    /// Gets a cursor for `key0`. If `None`, then `key0` is not in the map. If `Some`,
+    /// then `key0` is in the map, and `key1` can be queried.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert(&1u32, "one", "foo");
+    /// map.insert(&2, "one", "bar");
+    /// map.insert(&2, "two", "baz");
+    /// assert_eq!(map.get0(&1).unwrap().get1("one").unwrap(), "foo");
+    /// assert_eq!(map.get0(&1).unwrap().get1("two"), None);
+    /// assert_eq!(map.get0(&2).unwrap().get1("one").unwrap(), "bar");
+    /// assert_eq!(map.get0(&2).unwrap().get1("two").unwrap(), "baz");
+    /// assert_eq!(map.get0(&3), None);
+    /// ```
+    #[inline]
+    pub fn get0<'l>(&'l self, key0: &K0) -> Option<ZeroMap2dCursor<'l, 'a, K0, K1, V>> {
+        let key0_index = self.keys0.zvl_binary_search(key0).ok()?;
+        Some(ZeroMap2dCursor::from_cow(self, key0_index))
+    }
+
+    /// Binary search the map for `key0`, returning a cursor.
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert(&1, "one", "foo");
+    /// map.insert(&2, "two", "bar");
+    /// assert!(matches!(map.get0_by(|probe| probe.cmp(&1)), Some(_)));
+    /// assert!(matches!(map.get0_by(|probe| probe.cmp(&3)), None));
+    /// ```
+    pub fn get0_by<'l>(
+        &'l self,
+        predicate: impl FnMut(&K0) -> Ordering,
+    ) -> Option<ZeroMap2dCursor<'l, 'a, K0, K1, V>> {
+        let key0_index = self.keys0.zvl_binary_search_by(predicate).ok()?;
+        Some(ZeroMap2dCursor::from_cow(self, key0_index))
+    }
+
+    /// Returns whether `key0` is contained in this map
+    ///
+    /// ```rust
+    /// use zerovec::ZeroMap2d;
+    ///
+    /// let mut map = ZeroMap2d::new();
+    /// map.insert(&1, "one", "foo");
+    /// map.insert(&2, "two", "bar");
+    /// assert!(map.contains_key0(&1));
+    /// assert!(!map.contains_key0(&3));
+    /// ```
+    pub fn contains_key0(&self, key0: &K0) -> bool {
+        self.keys0.zvl_binary_search(key0).is_ok()
+    }
+
+    // INTERNAL ROUTINES FOLLOW //
+
+    /// Same as `get_range_for_key0`, but creates key0 if it doesn't already exist
+    fn get_or_insert_range_for_key0(&mut self, key0: &K0) -> (usize, Range<usize>) {
+        match self.keys0.zvl_binary_search(key0) {
+            Ok(key0_index) => (key0_index, self.get_range_for_key0_index(key0_index)),
+            Err(key0_index) => {
+                // Add an entry to self.keys0 and self.joiner
+                let joiner_value = if key0_index == 0 {
+                    0
+                } else {
+                    debug_assert!(key0_index <= self.joiner.len());
+                    // The unwrap is protected by the debug_assert above and key0_index != 0
+                    #[expect(clippy::unwrap_used)]
+                    self.joiner.get(key0_index - 1).unwrap()
+                };
+                self.keys0.zvl_insert(key0_index, key0);
+                self.joiner
+                    .with_mut(|v| v.insert(key0_index, joiner_value.to_unaligned()));
+                (key0_index, (joiner_value as usize)..(joiner_value as usize))
+            }
+        }
+    }
+}
+
+impl<'a, K0, K1, V> ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Ord,
+    K1: ZeroMapKV<'a> + Ord,
+    V: ZeroMapKV<'a>,
+    V: Copy,
+    K0: ?Sized,
+    K1: ?Sized,
+{
+    /// For cases when `V` is fixed-size, obtain a direct copy of `V` instead of `V::ULE`
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// # use zerovec::ZeroMap2d;
+    /// let mut map: ZeroMap2d<u16, u16, u16> = ZeroMap2d::new();
+    /// map.insert(&1, &2, &3);
+    /// map.insert(&1, &4, &5);
+    /// map.insert(&6, &7, &8);
+    ///
+    /// assert_eq!(map.get_copied_2d(&6, &7), Some(8));
+    /// ```
+    #[inline]
+    pub fn get_copied_2d(&self, key0: &K0, key1: &K1) -> Option<V> {
+        self.get0(key0)?.get1_copied(key1)
+    }
+}
+
+impl<'a, K0, K1, V> From<ZeroMap2dBorrowed<'a, K0, K1, V>> for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a>,
+    K1: ZeroMapKV<'a>,
+    V: ZeroMapKV<'a>,
+    K0: ?Sized,
+    K1: ?Sized,
+    V: ?Sized,
+{
+    fn from(other: ZeroMap2dBorrowed<'a, K0, K1, V>) -> Self {
+        Self {
+            keys0: K0::Container::zvl_from_borrowed(other.keys0),
+            joiner: other.joiner.as_zerovec(),
+            keys1: K1::Container::zvl_from_borrowed(other.keys1),
+            values: V::Container::zvl_from_borrowed(other.values),
+        }
+    }
+}
+
+// We can't use the default PartialEq because ZeroMap2d is invariant
+// so otherwise rustc will not automatically allow you to compare ZeroMaps
+// with different lifetimes
+impl<'a, 'b, K0, K1, V> PartialEq<ZeroMap2d<'b, K0, K1, V>> for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: for<'c> ZeroMapKV<'c> + ?Sized,
+    K1: for<'c> ZeroMapKV<'c> + ?Sized,
+    V: for<'c> ZeroMapKV<'c> + ?Sized,
+    <K0 as ZeroMapKV<'a>>::Container: PartialEq<<K0 as ZeroMapKV<'b>>::Container>,
+    <K1 as ZeroMapKV<'a>>::Container: PartialEq<<K1 as ZeroMapKV<'b>>::Container>,
+    <V as ZeroMapKV<'a>>::Container: PartialEq<<V as ZeroMapKV<'b>>::Container>,
+{
+    fn eq(&self, other: &ZeroMap2d<'b, K0, K1, V>) -> bool {
+        self.keys0.eq(&other.keys0)
+            && self.joiner.eq(&other.joiner)
+            && self.keys1.eq(&other.keys1)
+            && self.values.eq(&other.values)
+    }
+}
+
+impl<'a, K0, K1, V> fmt::Debug for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized,
+    K1: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    <K0 as ZeroMapKV<'a>>::Container: fmt::Debug,
+    <K1 as ZeroMapKV<'a>>::Container: fmt::Debug,
+    <V as ZeroMapKV<'a>>::Container: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+        f.debug_struct("ZeroMap2d")
+            .field("keys0", &self.keys0)
+            .field("joiner", &self.joiner)
+            .field("keys1", &self.keys1)
+            .field("values", &self.values)
+            .finish()
+    }
+}
+
+impl<'a, K0, K1, V> Clone for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized,
+    K1: ZeroMapKV<'a> + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    <K0 as ZeroMapKV<'a>>::Container: Clone,
+    <K1 as ZeroMapKV<'a>>::Container: Clone,
+    <V as ZeroMapKV<'a>>::Container: Clone,
+{
+    fn clone(&self) -> Self {
+        Self {
+            keys0: self.keys0.clone(),
+            joiner: self.joiner.clone(),
+            keys1: self.keys1.clone(),
+            values: self.values.clone(),
+        }
+    }
+}
+
+impl<'a, A, B, C, K0, K1, V> FromIterator<(A, B, C)> for ZeroMap2d<'a, K0, K1, V>
+where
+    A: Borrow<K0>,
+    B: Borrow<K1>,
+    C: Borrow<V>,
+    K0: ZeroMapKV<'a> + ?Sized + Ord,
+    K1: ZeroMapKV<'a> + ?Sized + Ord,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    fn from_iter<T>(iter: T) -> Self
+    where
+        T: IntoIterator<Item = (A, B, C)>,
+    {
+        let iter = iter.into_iter();
+        let mut map = match iter.size_hint() {
+            (_, Some(upper)) => Self::with_capacity(upper),
+            (lower, None) => Self::with_capacity(lower),
+        };
+
+        for (key0, key1, value) in iter {
+            if let Some((key0, key1, value)) =
+                map.try_append(key0.borrow(), key1.borrow(), value.borrow())
+            {
+                map.insert(key0, key1, value);
+            }
+        }
+        #[cfg(debug_assertions)]
+        map.check_invariants();
+        map
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::*;
+    use alloc::collections::BTreeMap;
+
+    #[test]
+    fn stress_test() {
+        let mut zm2d = ZeroMap2d::<u16, str, str>::new();
+
+        assert_eq!(
+            format!("{zm2d:?}"),
+            "ZeroMap2d { keys0: ZeroVec([]), joiner: ZeroVec([]), keys1: [], values: [] }"
+        );
+        assert_eq!(zm2d.get0(&0), None);
+
+        let result = zm2d.try_append(&3, "ccc", "CCC");
+        assert!(result.is_none());
+
+        assert_eq!(format!("{zm2d:?}"), "ZeroMap2d { keys0: ZeroVec([3]), joiner: ZeroVec([1]), keys1: [\"ccc\"], values: [\"CCC\"] }");
+        assert_eq!(zm2d.get0(&0), None);
+        assert_eq!(zm2d.get0(&3).unwrap().get1(""), None);
+        assert_eq!(zm2d.get_2d(&3, "ccc"), Some("CCC"));
+        assert_eq!(zm2d.get0(&99), None);
+
+        let result = zm2d.try_append(&3, "eee", "EEE");
+        assert!(result.is_none());
+
+        assert_eq!(format!("{zm2d:?}"), "ZeroMap2d { keys0: ZeroVec([3]), joiner: ZeroVec([2]), keys1: [\"ccc\", \"eee\"], values: [\"CCC\", \"EEE\"] }");
+        assert_eq!(zm2d.get0(&0), None);
+        assert_eq!(zm2d.get0(&3).unwrap().get1(""), None);
+        assert_eq!(zm2d.get_2d(&3, "ccc"), Some("CCC"));
+        assert_eq!(zm2d.get_2d(&3, "eee"), Some("EEE"));
+        assert_eq!(zm2d.get0(&3).unwrap().get1("five"), None);
+        assert_eq!(zm2d.get0(&99), None);
+
+        // Out of order
+        let result = zm2d.try_append(&3, "ddd", "DD0");
+        assert!(result.is_some());
+
+        // Append a few more elements
+        let result = zm2d.try_append(&5, "ddd", "DD1");
+        assert!(result.is_none());
+        let result = zm2d.try_append(&7, "ddd", "DD2");
+        assert!(result.is_none());
+        let result = zm2d.try_append(&7, "eee", "EEE");
+        assert!(result.is_none());
+        let result = zm2d.try_append(&7, "www", "WWW");
+        assert!(result.is_none());
+        let result = zm2d.try_append(&9, "yyy", "YYY");
+        assert!(result.is_none());
+
+        assert_eq!(format!("{zm2d:?}"), "ZeroMap2d { keys0: ZeroVec([3, 5, 7, 9]), joiner: ZeroVec([2, 3, 6, 7]), keys1: [\"ccc\", \"eee\", \"ddd\", \"ddd\", \"eee\", \"www\", \"yyy\"], values: [\"CCC\", \"EEE\", \"DD1\", \"DD2\", \"EEE\", \"WWW\", \"YYY\"] }");
+        assert_eq!(zm2d.get0(&0), None);
+        assert_eq!(zm2d.get0(&3).unwrap().get1(""), None);
+        assert_eq!(zm2d.get_2d(&3, "ccc"), Some("CCC"));
+        assert_eq!(zm2d.get_2d(&3, "eee"), Some("EEE"));
+        assert_eq!(zm2d.get0(&3).unwrap().get1("zzz"), None);
+        assert_eq!(zm2d.get0(&4), None);
+        assert_eq!(zm2d.get0(&5).unwrap().get1("aaa"), None);
+        assert_eq!(zm2d.get_2d(&5, "ddd"), Some("DD1"));
+        assert_eq!(zm2d.get0(&5).unwrap().get1("zzz"), None);
+        assert_eq!(zm2d.get0(&6), None);
+        assert_eq!(zm2d.get0(&7).unwrap().get1("aaa"), None);
+        assert_eq!(zm2d.get_2d(&7, "ddd"), Some("DD2"));
+        assert_eq!(zm2d.get_2d(&7, "eee"), Some("EEE"));
+        assert_eq!(zm2d.get_2d(&7, "www"), Some("WWW"));
+        assert_eq!(zm2d.get0(&7).unwrap().get1("yyy"), None);
+        assert_eq!(zm2d.get0(&7).unwrap().get1("zzz"), None);
+        assert_eq!(zm2d.get0(&8), None);
+        assert_eq!(zm2d.get0(&9).unwrap().get1("aaa"), None);
+        assert_eq!(zm2d.get0(&9).unwrap().get1("www"), None);
+        assert_eq!(zm2d.get_2d(&9, "yyy"), Some("YYY"));
+        assert_eq!(zm2d.get0(&9).unwrap().get1("zzz"), None);
+        assert_eq!(zm2d.get0(&10), None);
+        assert_eq!(zm2d.get0(&99), None);
+
+        // Insert some elements
+        zm2d.insert(&3, "mmm", "MM0");
+        zm2d.insert(&6, "ddd", "DD3");
+        zm2d.insert(&6, "mmm", "MM1");
+        zm2d.insert(&6, "nnn", "NNN");
+
+        assert_eq!(format!("{zm2d:?}"), "ZeroMap2d { keys0: ZeroVec([3, 5, 6, 7, 9]), joiner: ZeroVec([3, 4, 7, 10, 11]), keys1: [\"ccc\", \"eee\", \"mmm\", \"ddd\", \"ddd\", \"mmm\", \"nnn\", \"ddd\", \"eee\", \"www\", \"yyy\"], values: [\"CCC\", \"EEE\", \"MM0\", \"DD1\", \"DD3\", \"MM1\", \"NNN\", \"DD2\", \"EEE\", \"WWW\", \"YYY\"] }");
+        assert_eq!(zm2d.get0(&0), None);
+        assert_eq!(zm2d.get0(&3).unwrap().get1(""), None);
+        assert_eq!(zm2d.get_2d(&3, "ccc"), Some("CCC"));
+        assert_eq!(zm2d.get_2d(&3, "eee"), Some("EEE"));
+        assert_eq!(zm2d.get_2d(&3, "mmm"), Some("MM0"));
+        assert_eq!(zm2d.get0(&3).unwrap().get1("zzz"), None);
+        assert_eq!(zm2d.get0(&4), None);
+        assert_eq!(zm2d.get0(&5).unwrap().get1("aaa"), None);
+        assert_eq!(zm2d.get_2d(&5, "ddd"), Some("DD1"));
+        assert_eq!(zm2d.get0(&5).unwrap().get1("zzz"), None);
+        assert_eq!(zm2d.get0(&6).unwrap().get1("aaa"), None);
+        assert_eq!(zm2d.get_2d(&6, "ddd"), Some("DD3"));
+        assert_eq!(zm2d.get_2d(&6, "mmm"), Some("MM1"));
+        assert_eq!(zm2d.get_2d(&6, "nnn"), Some("NNN"));
+        assert_eq!(zm2d.get0(&6).unwrap().get1("zzz"), None);
+        assert_eq!(zm2d.get0(&7).unwrap().get1("aaa"), None);
+        assert_eq!(zm2d.get_2d(&7, "ddd"), Some("DD2"));
+        assert_eq!(zm2d.get_2d(&7, "eee"), Some("EEE"));
+        assert_eq!(zm2d.get_2d(&7, "www"), Some("WWW"));
+        assert_eq!(zm2d.get0(&7).unwrap().get1("yyy"), None);
+        assert_eq!(zm2d.get0(&7).unwrap().get1("zzz"), None);
+        assert_eq!(zm2d.get0(&8), None);
+        assert_eq!(zm2d.get0(&9).unwrap().get1("aaa"), None);
+        assert_eq!(zm2d.get0(&9).unwrap().get1("www"), None);
+        assert_eq!(zm2d.get_2d(&9, "yyy"), Some("YYY"));
+        assert_eq!(zm2d.get0(&9).unwrap().get1("zzz"), None);
+        assert_eq!(zm2d.get0(&10), None);
+        assert_eq!(zm2d.get0(&99), None);
+
+        // Remove some elements
+        let result = zm2d.remove(&3, "ccc"); // first element
+        assert_eq!(result.as_deref(), Some("CCC"));
+        let result = zm2d.remove(&3, "mmm"); // middle element
+        assert_eq!(result.as_deref(), Some("MM0"));
+        let result = zm2d.remove(&5, "ddd"); // singleton K0
+        assert_eq!(result.as_deref(), Some("DD1"));
+        let result = zm2d.remove(&9, "yyy"); // last element
+        assert_eq!(result.as_deref(), Some("YYY"));
+
+        assert_eq!(format!("{zm2d:?}"), "ZeroMap2d { keys0: ZeroVec([3, 6, 7]), joiner: ZeroVec([1, 4, 7]), keys1: [\"eee\", \"ddd\", \"mmm\", \"nnn\", \"ddd\", \"eee\", \"www\"], values: [\"EEE\", \"DD3\", \"MM1\", \"NNN\", \"DD2\", \"EEE\", \"WWW\"] }");
+    }
+
+    #[test]
+    fn zeromap2d_metazone() {
+        let source_data = [
+            (*b"aedxb", 0, Some(*b"gulf")),
+            (*b"afkbl", 0, Some(*b"afgh")),
+            (*b"ushnl", 0, None),
+            (*b"ushnl", 7272660, Some(*b"haal")),
+            (*b"ushnl", 0, None),
+            (*b"ushnl", 7272660, Some(*b"haal")),
+        ];
+
+        let btreemap: BTreeMap<([u8; 5], i32), Option<[u8; 4]>> = source_data
+            .iter()
+            .copied()
+            .map(|(a, b, c)| ((a, b), c))
+            .collect();
+
+        let zeromap2d: ZeroMap2d<[u8; 5], i32, Option<[u8; 4]>> =
+            source_data.iter().copied().collect();
+
+        let mut btreemap_iter = btreemap.iter();
+
+        for cursor in zeromap2d.iter0() {
+            for (key1, value) in cursor.iter1() {
+                // This code runs for every (key0, key1) pair in order
+                let expected = btreemap_iter.next().unwrap();
+                assert_eq!(
+                    (expected.0 .0, expected.0 .1, expected.1),
+                    (*cursor.key0(), key1.as_unsigned_int() as i32, &value.get())
+                );
+            }
+        }
+        assert!(btreemap_iter.next().is_none());
+    }
+}
diff --git a/vendor/zerovec/src/map2d/mod.rs b/vendor/zerovec/src/map2d/mod.rs
new file mode 100644
index 00000000..f5465fcf
--- /dev/null
+++ b/vendor/zerovec/src/map2d/mod.rs
@@ -0,0 +1,18 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! See [`ZeroMap2d`](crate::ZeroMap2d) for details.
+
+mod borrowed;
+mod cursor;
+pub(crate) mod map;
+
+#[cfg(feature = "databake")]
+mod databake;
+#[cfg(feature = "serde")]
+mod serde;
+
+pub use crate::ZeroMap2d;
+pub use borrowed::ZeroMap2dBorrowed;
+pub use cursor::ZeroMap2dCursor;
diff --git a/vendor/zerovec/src/map2d/serde.rs b/vendor/zerovec/src/map2d/serde.rs
new file mode 100644
index 00000000..0f3a3fc5
--- /dev/null
+++ b/vendor/zerovec/src/map2d/serde.rs
@@ -0,0 +1,437 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::{ZeroMap2d, ZeroMap2dBorrowed, ZeroMap2dCursor};
+use crate::map::{MutableZeroVecLike, ZeroMapKV, ZeroVecLike};
+use crate::ZeroVec;
+use alloc::vec::Vec;
+use core::fmt;
+use core::marker::PhantomData;
+use serde::de::{self, Deserialize, Deserializer, MapAccess, Visitor};
+#[cfg(feature = "serde")]
+use serde::ser::{Serialize, SerializeMap, Serializer};
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+#[cfg(feature = "serde")]
+impl<'a, K0, K1, V> Serialize for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Serialize + ?Sized + Ord,
+    K1: ZeroMapKV<'a> + Serialize + ?Sized + Ord,
+    V: ZeroMapKV<'a> + Serialize + ?Sized,
+    K0::Container: Serialize,
+    K1::Container: Serialize,
+    V::Container: Serialize,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        if serializer.is_human_readable() {
+            let mut serde_map = serializer.serialize_map(None)?;
+            for cursor in self.iter0() {
+                K0::Container::zvl_get_as_t(cursor.key0(), |k| serde_map.serialize_key(k))?;
+                let inner_map = ZeroMap2dInnerMapSerialize { cursor };
+                serde_map.serialize_value(&inner_map)?;
+            }
+            serde_map.end()
+        } else {
+            (&self.keys0, &self.joiner, &self.keys1, &self.values).serialize(serializer)
+        }
+    }
+}
+
+/// Helper struct for human-serializing the inner map of a ZeroMap2d
+#[cfg(feature = "serde")]
+struct ZeroMap2dInnerMapSerialize<'a, 'l, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized + Ord,
+    K1: ZeroMapKV<'a> + ?Sized + Ord,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    pub cursor: ZeroMap2dCursor<'l, 'a, K0, K1, V>,
+}
+
+#[cfg(feature = "serde")]
+impl<'a, 'l, K0, K1, V> Serialize for ZeroMap2dInnerMapSerialize<'a, 'l, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Serialize + ?Sized + Ord,
+    K1: ZeroMapKV<'a> + Serialize + ?Sized + Ord,
+    V: ZeroMapKV<'a> + Serialize + ?Sized,
+    K0::Container: Serialize,
+    K1::Container: Serialize,
+    V::Container: Serialize,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        let mut serde_map = serializer.serialize_map(None)?;
+        for (key1, v) in self.cursor.iter1() {
+            K1::Container::zvl_get_as_t(key1, |k| serde_map.serialize_key(k))?;
+            V::Container::zvl_get_as_t(v, |v| serde_map.serialize_value(v))?;
+        }
+        serde_map.end()
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+#[cfg(feature = "serde")]
+impl<'a, K0, K1, V> Serialize for ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Serialize + ?Sized + Ord,
+    K1: ZeroMapKV<'a> + Serialize + ?Sized + Ord,
+    V: ZeroMapKV<'a> + Serialize + ?Sized,
+    K0::Container: Serialize,
+    K1::Container: Serialize,
+    V::Container: Serialize,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        ZeroMap2d::<K0, K1, V>::from(*self).serialize(serializer)
+    }
+}
+
+/// Modified example from https://serde.rs/deserialize-map.html
+struct ZeroMap2dMapVisitor<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized + Ord,
+    K1: ZeroMapKV<'a> + ?Sized + Ord,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    #[expect(clippy::type_complexity)] // it's a marker type, complexity doesn't matter
+    marker: PhantomData<fn() -> (&'a K0::OwnedType, &'a K1::OwnedType, &'a V::OwnedType)>,
+}
+
+impl<'a, K0, K1, V> ZeroMap2dMapVisitor<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + ?Sized + Ord,
+    K1: ZeroMapKV<'a> + ?Sized + Ord,
+    V: ZeroMapKV<'a> + ?Sized,
+{
+    fn new() -> Self {
+        ZeroMap2dMapVisitor {
+            marker: PhantomData,
+        }
+    }
+}
+
+impl<'a, 'de, K0, K1, V> Visitor<'de> for ZeroMap2dMapVisitor<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Ord + ?Sized + Ord,
+    K1: ZeroMapKV<'a> + Ord + ?Sized + Ord,
+    V: ZeroMapKV<'a> + ?Sized,
+    K1::Container: Deserialize<'de>,
+    V::Container: Deserialize<'de>,
+    K0::OwnedType: Deserialize<'de>,
+    K1::OwnedType: Deserialize<'de>,
+    V::OwnedType: Deserialize<'de>,
+{
+    type Value = ZeroMap2d<'a, K0, K1, V>;
+
+    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+        formatter.write_str("a map produced by ZeroMap2d")
+    }
+
+    fn visit_map<M>(self, mut access: M) -> Result<Self::Value, M::Error>
+    where
+        M: MapAccess<'de>,
+    {
+        let mut map = ZeroMap2d::with_capacity(access.size_hint().unwrap_or(0));
+
+        // On the first level, pull out the K0s and a TupleVecMap of the
+        // K1s and Vs, and then collect them into a ZeroMap2d
+        while let Some((key0, inner_map)) =
+            access.next_entry::<K0::OwnedType, TupleVecMap<K1::OwnedType, V::OwnedType>>()?
+        {
+            for (key1, value) in inner_map.entries.iter() {
+                if map
+                    .try_append(
+                        K0::Container::owned_as_t(&key0),
+                        K1::Container::owned_as_t(key1),
+                        V::Container::owned_as_t(value),
+                    )
+                    .is_some()
+                {
+                    return Err(de::Error::custom(
+                        "ZeroMap2d's keys must be sorted while deserializing",
+                    ));
+                }
+            }
+        }
+
+        Ok(map)
+    }
+}
+
+/// Helper struct for human-deserializing the inner map of a ZeroMap2d
+struct TupleVecMap<K1, V> {
+    pub entries: Vec<(K1, V)>,
+}
+
+struct TupleVecMapVisitor<K1, V> {
+    marker: PhantomData<fn() -> (K1, V)>,
+}
+
+impl<K1, V> TupleVecMapVisitor<K1, V> {
+    fn new() -> Self {
+        TupleVecMapVisitor {
+            marker: PhantomData,
+        }
+    }
+}
+
+impl<'de, K1, V> Visitor<'de> for TupleVecMapVisitor<K1, V>
+where
+    K1: Deserialize<'de>,
+    V: Deserialize<'de>,
+{
+    type Value = TupleVecMap<K1, V>;
+
+    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+        formatter.write_str("an inner map produced by ZeroMap2d")
+    }
+
+    fn visit_map<M>(self, mut access: M) -> Result<Self::Value, M::Error>
+    where
+        M: MapAccess<'de>,
+    {
+        let mut result = Vec::with_capacity(access.size_hint().unwrap_or(0));
+        while let Some((key1, value)) = access.next_entry::<K1, V>()? {
+            result.push((key1, value));
+        }
+        Ok(TupleVecMap { entries: result })
+    }
+}
+
+impl<'de, K1, V> Deserialize<'de> for TupleVecMap<K1, V>
+where
+    K1: Deserialize<'de>,
+    V: Deserialize<'de>,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        deserializer.deserialize_map(TupleVecMapVisitor::<K1, V>::new())
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, 'a, K0, K1, V> Deserialize<'de> for ZeroMap2d<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Ord + ?Sized,
+    K1: ZeroMapKV<'a> + Ord + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K0::Container: Deserialize<'de>,
+    K1::Container: Deserialize<'de>,
+    V::Container: Deserialize<'de>,
+    K0::OwnedType: Deserialize<'de>,
+    K1::OwnedType: Deserialize<'de>,
+    V::OwnedType: Deserialize<'de>,
+    'de: 'a,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            deserializer.deserialize_map(ZeroMap2dMapVisitor::<'a, K0, K1, V>::new())
+        } else {
+            let (keys0, joiner, keys1, values): (
+                K0::Container,
+                ZeroVec<u32>,
+                K1::Container,
+                V::Container,
+            ) = Deserialize::deserialize(deserializer)?;
+            // Invariant 1: len(keys0) == len(joiner)
+            if keys0.zvl_len() != joiner.len() {
+                return Err(de::Error::custom(
+                    "Mismatched keys0 and joiner sizes in ZeroMap2d",
+                ));
+            }
+            // Invariant 2: len(keys1) == len(values)
+            if keys1.zvl_len() != values.zvl_len() {
+                return Err(de::Error::custom(
+                    "Mismatched keys1 and value sizes in ZeroMap2d",
+                ));
+            }
+            // Invariant 3: joiner is sorted
+            if !joiner.zvl_is_ascending() {
+                return Err(de::Error::custom(
+                    "ZeroMap2d deserializing joiner array out of order",
+                ));
+            }
+            // Invariant 4: the last element of joiner is the length of keys1
+            if let Some(last_joiner0) = joiner.last() {
+                if keys1.zvl_len() != last_joiner0 as usize {
+                    return Err(de::Error::custom(
+                        "ZeroMap2d deserializing joiner array malformed",
+                    ));
+                }
+            }
+            let result = Self {
+                keys0,
+                joiner,
+                keys1,
+                values,
+            };
+            // In debug mode, check the optional invariants, too
+            #[cfg(debug_assertions)]
+            result.check_invariants();
+            Ok(result)
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, 'a, K0, K1, V> Deserialize<'de> for ZeroMap2dBorrowed<'a, K0, K1, V>
+where
+    K0: ZeroMapKV<'a> + Ord + ?Sized,
+    K1: ZeroMapKV<'a> + Ord + ?Sized,
+    V: ZeroMapKV<'a> + ?Sized,
+    K0::Container: Deserialize<'de>,
+    K1::Container: Deserialize<'de>,
+    V::Container: Deserialize<'de>,
+    K0::OwnedType: Deserialize<'de>,
+    K1::OwnedType: Deserialize<'de>,
+    V::OwnedType: Deserialize<'de>,
+    'de: 'a,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            Err(de::Error::custom(
+                "ZeroMap2dBorrowed cannot be deserialized from human-readable formats",
+            ))
+        } else {
+            let deserialized: ZeroMap2d<'a, K0, K1, V> = ZeroMap2d::deserialize(deserializer)?;
+            let keys0 = if let Some(keys0) = deserialized.keys0.zvl_as_borrowed_inner() {
+                keys0
+            } else {
+                return Err(de::Error::custom(
+                    "ZeroMap2dBorrowed can only deserialize in zero-copy ways",
+                ));
+            };
+            let joiner = if let Some(joiner) = deserialized.joiner.zvl_as_borrowed_inner() {
+                joiner
+            } else {
+                return Err(de::Error::custom(
+                    "ZeroMap2dBorrowed can only deserialize in zero-copy ways",
+                ));
+            };
+            let keys1 = if let Some(keys1) = deserialized.keys1.zvl_as_borrowed_inner() {
+                keys1
+            } else {
+                return Err(de::Error::custom(
+                    "ZeroMap2dBorrowed can only deserialize in zero-copy ways",
+                ));
+            };
+            let values = if let Some(values) = deserialized.values.zvl_as_borrowed_inner() {
+                values
+            } else {
+                return Err(de::Error::custom(
+                    "ZeroMap2dBorrowed can only deserialize in zero-copy ways",
+                ));
+            };
+            Ok(Self {
+                keys0,
+                joiner,
+                keys1,
+                values,
+            })
+        }
+    }
+}
+
+#[cfg(test)]
+#[allow(non_camel_case_types)]
+mod test {
+    use crate::map2d::{ZeroMap2d, ZeroMap2dBorrowed};
+
+    #[derive(serde::Serialize, serde::Deserialize)]
+    struct DeriveTest_ZeroMap2d<'data> {
+        #[serde(borrow)]
+        _data: ZeroMap2d<'data, u16, str, [u8]>,
+    }
+
+    #[derive(serde::Serialize, serde::Deserialize)]
+    struct DeriveTest_ZeroMap2dBorrowed<'data> {
+        #[serde(borrow)]
+        _data: ZeroMap2dBorrowed<'data, u16, str, [u8]>,
+    }
+
+    const JSON_STR: &str = "{\"1\":{\"1\":\"uno\"},\"2\":{\"2\":\"dos\",\"3\":\"tres\"}}";
+    const BINCODE_BYTES: &[u8] = &[
+        8, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,
+        0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 3, 0, 16, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 6, 0,
+        117, 110, 111, 100, 111, 115, 116, 114, 101, 115,
+    ];
+
+    fn make_map() -> ZeroMap2d<'static, u32, u16, str> {
+        let mut map = ZeroMap2d::new();
+        map.insert(&1, &1, "uno");
+        map.insert(&2, &2, "dos");
+        map.insert(&2, &3, "tres");
+        map
+    }
+
+    #[test]
+    fn test_serde_json() {
+        let map = make_map();
+        let json_str = serde_json::to_string(&map).expect("serialize");
+        assert_eq!(JSON_STR, json_str);
+        let new_map: ZeroMap2d<u32, u16, str> =
+            serde_json::from_str(&json_str).expect("deserialize");
+        assert_eq!(format!("{new_map:?}"), format!("{map:?}"));
+    }
+
+    #[test]
+    fn test_bincode() {
+        let map = make_map();
+        let bincode_bytes = bincode::serialize(&map).expect("serialize");
+        assert_eq!(BINCODE_BYTES, bincode_bytes);
+        let new_map: ZeroMap2d<u32, u16, str> =
+            bincode::deserialize(&bincode_bytes).expect("deserialize");
+        assert_eq!(
+            format!("{new_map:?}"),
+            format!("{map:?}").replace("Owned", "Borrowed"),
+        );
+
+        let new_map: ZeroMap2dBorrowed<u32, u16, str> =
+            bincode::deserialize(&bincode_bytes).expect("deserialize");
+        assert_eq!(
+            format!("{new_map:?}"),
+            format!("{map:?}")
+                .replace("Owned", "Borrowed")
+                .replace("ZeroMap2d", "ZeroMap2dBorrowed")
+        );
+    }
+
+    #[test]
+    fn test_serde_rmp() {
+        let map = make_map();
+        let rmp_buf = rmp_serde::to_vec(&map).expect("serialize");
+        let new_map: ZeroMap2d<u32, u16, str> = rmp_serde::from_slice(&rmp_buf).unwrap();
+        assert_eq!(map, new_map);
+    }
+
+    #[test]
+    fn test_sample_bincode() {
+        // This is the map from the main docs page for ZeroMap2d
+        let mut map: ZeroMap2d<u16, u16, str> = ZeroMap2d::new();
+        map.insert(&1, &2, "three");
+        let bincode_bytes: Vec<u8> = bincode::serialize(&map).expect("serialize");
+        assert_eq!(
+            bincode_bytes.as_slice(),
+            &[
+                2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+                0, 0, 2, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1, 0, 116, 104, 114, 101, 101
+            ]
+        );
+    }
+}
diff --git a/vendor/zerovec/src/samples.rs b/vendor/zerovec/src/samples.rs
new file mode 100644
index 00000000..7c26c833
--- /dev/null
+++ b/vendor/zerovec/src/samples.rs
@@ -0,0 +1,74 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Example data useful for testing ZeroVec.
+
+// This module is included directly in tests and can trigger the dead_code
+// warning since not all samples are used in each test
+#![allow(dead_code)]
+
+#[repr(align(8))]
+struct Aligned<T>(pub T);
+
+// This is aligned so that we can test unaligned behavior at odd offsets
+const ALIGNED_TEST_BUFFER_LE: Aligned<[u8; 80]> = Aligned([
+    0x00, 0x01, 0x02, 0x00, 0x04, 0x05, 0x06, 0x00, 0x08, 0x09, 0x0a, 0x00, 0x0c, 0x0d, 0x0e, 0x00,
+    0x10, 0x11, 0x12, 0x00, 0x14, 0x15, 0x16, 0x00, 0x18, 0x19, 0x1a, 0x00, 0x1c, 0x1d, 0x1e, 0x00,
+    0x20, 0x21, 0x22, 0x00, 0x24, 0x25, 0x26, 0x00, 0x28, 0x29, 0x2a, 0x00, 0x2c, 0x2d, 0x2e, 0x00,
+    0x30, 0x31, 0x32, 0x00, 0x34, 0x35, 0x36, 0x00, 0x38, 0x39, 0x3a, 0x00, 0x3c, 0x3d, 0x3e, 0x00,
+    0x40, 0x41, 0x42, 0x00, 0x44, 0x45, 0x46, 0x00, 0x48, 0x49, 0x4a, 0x00, 0x4c, 0x4d, 0x4e, 0x00,
+]);
+
+/// An example byte array intended to be used in `ZeroVec<u32>`.
+pub const TEST_BUFFER_LE: &[u8] = &ALIGNED_TEST_BUFFER_LE.0;
+
+/// u32 numbers corresponding to the above byte array.
+pub const TEST_SLICE: &[u32] = &[
+    0x020100, 0x060504, 0x0a0908, 0x0e0d0c, 0x121110, 0x161514, 0x1a1918, 0x1e1d1c, 0x222120,
+    0x262524, 0x2a2928, 0x2e2d2c, 0x323130, 0x363534, 0x3a3938, 0x3e3d3c, 0x424140, 0x464544,
+    0x4a4948, 0x4e4d4c,
+];
+
+/// The sum of the numbers in TEST_SLICE.
+pub const TEST_SUM: u32 = 52629240;
+
+/// Representation of TEST_SLICE in JSON.
+pub const JSON_STR: &str = "[131328,394500,657672,920844,1184016,1447188,1710360,1973532,2236704,2499876,2763048,3026220,3289392,3552564,3815736,4078908,4342080,4605252,4868424,5131596]";
+
+/// Representation of TEST_SLICE in Bincode.
+pub const BINCODE_BUF: &[u8] = &[
+    80, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 4, 5, 6, 0, 8, 9, 10, 0, 12, 13, 14, 0, 16, 17, 18, 0, 20,
+    21, 22, 0, 24, 25, 26, 0, 28, 29, 30, 0, 32, 33, 34, 0, 36, 37, 38, 0, 40, 41, 42, 0, 44, 45,
+    46, 0, 48, 49, 50, 0, 52, 53, 54, 0, 56, 57, 58, 0, 60, 61, 62, 0, 64, 65, 66, 0, 68, 69, 70,
+    0, 72, 73, 74, 0, 76, 77, 78, 0,
+];
+
+/// Representation of a VarZeroVec<str> with contents ["w", "ω", "文", "𑄃"]
+pub const TEST_VARZEROSLICE_BYTES: &[u8] = &[
+    4, 0, 0, 0, 0, 0, 1, 0, 3, 0, 6, 0, 119, 207, 137, 230, 150, 135, 240, 145, 132, 131,
+];
+
+#[test]
+fn validate() {
+    use crate::{VarZeroVec, ZeroVec};
+
+    assert_eq!(
+        ZeroVec::<u32>::parse_bytes(TEST_BUFFER_LE).unwrap(),
+        ZeroVec::alloc_from_slice(TEST_SLICE)
+    );
+
+    assert_eq!(TEST_SLICE.iter().sum::<u32>(), TEST_SUM);
+
+    assert_eq!(
+        serde_json::from_str::<ZeroVec::<u32>>(JSON_STR).unwrap(),
+        ZeroVec::alloc_from_slice(TEST_SLICE)
+    );
+
+    assert_eq!(
+        bincode::deserialize::<ZeroVec::<u32>>(BINCODE_BUF).unwrap(),
+        ZeroVec::alloc_from_slice(TEST_SLICE)
+    );
+
+    VarZeroVec::<str>::parse_bytes(TEST_VARZEROSLICE_BYTES).unwrap();
+}
diff --git a/vendor/zerovec/src/ule/chars.rs b/vendor/zerovec/src/ule/chars.rs
new file mode 100644
index 00000000..cf66ad65
--- /dev/null
+++ b/vendor/zerovec/src/ule/chars.rs
@@ -0,0 +1,193 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#![allow(clippy::upper_case_acronyms)]
+//! ULE implementation for the `char` type.
+
+use super::*;
+use crate::impl_ule_from_array;
+use core::cmp::Ordering;
+use core::convert::TryFrom;
+
+/// A u8 array of little-endian data corresponding to a Unicode scalar value.
+///
+/// The bytes of a `CharULE` are guaranteed to represent a little-endian-encoded u32 that is a
+/// valid `char` and can be converted without validation.
+///
+/// # Examples
+///
+/// Convert a `char` to a `CharULE` and back again:
+///
+/// ```
+/// use zerovec::ule::{AsULE, CharULE, ULE};
+///
+/// let c1 = '𑄃';
+/// let ule = c1.to_unaligned();
+/// assert_eq!(CharULE::slice_as_bytes(&[ule]), &[0x03, 0x11, 0x01]);
+/// let c2 = char::from_unaligned(ule);
+/// assert_eq!(c1, c2);
+/// ```
+///
+/// Attempt to parse invalid bytes to a `CharULE`:
+///
+/// ```
+/// use zerovec::ule::{CharULE, ULE};
+///
+/// let bytes: &[u8] = &[0xFF, 0xFF, 0xFF, 0xFF];
+/// CharULE::parse_bytes_to_slice(bytes).expect_err("Invalid bytes");
+/// ```
+#[repr(transparent)]
+#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
+pub struct CharULE([u8; 3]);
+
+impl CharULE {
+    /// Converts a [`char`] to a [`CharULE`]. This is equivalent to calling
+    /// [`AsULE::to_unaligned()`]
+    ///
+    /// See the type-level documentation for [`CharULE`] for more information.
+    #[inline]
+    pub const fn from_aligned(c: char) -> Self {
+        let [u0, u1, u2, _u3] = (c as u32).to_le_bytes();
+        Self([u0, u1, u2])
+    }
+
+    /// Converts this [`CharULE`] to a [`char`]. This is equivalent to calling
+    /// [`AsULE::from_unaligned`]
+    ///
+    /// See the type-level documentation for [`CharULE`] for more information.
+    #[inline]
+    pub fn to_char(self) -> char {
+        let [b0, b1, b2] = self.0;
+        // Safe because the bytes of CharULE are defined to represent a valid Unicode scalar value.
+        unsafe { char::from_u32_unchecked(u32::from_le_bytes([b0, b1, b2, 0])) }
+    }
+
+    impl_ule_from_array!(char, CharULE, Self([0; 3]));
+}
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. CharULE does not include any uninitialized or padding bytes.
+//     (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+//  2. CharULE is aligned to 1 byte.
+//     (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+//  3. The impl of validate_bytes() returns an error if any byte is not valid.
+//  4. The impl of validate_bytes() returns an error if there are extra bytes.
+//  5. The other ULE methods use the default impl.
+//  6. CharULE byte equality is semantic equality
+unsafe impl ULE for CharULE {
+    #[inline]
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        if bytes.len() % 3 != 0 {
+            return Err(UleError::length::<Self>(bytes.len()));
+        }
+        // Validate the bytes
+        for chunk in bytes.chunks_exact(3) {
+            // TODO: Use slice::as_chunks() when stabilized
+            #[expect(clippy::indexing_slicing)]
+            // Won't panic because the chunks are always 3 bytes long
+            let u = u32::from_le_bytes([chunk[0], chunk[1], chunk[2], 0]);
+            char::try_from(u).map_err(|_| UleError::parse::<Self>())?;
+        }
+        Ok(())
+    }
+}
+
+impl AsULE for char {
+    type ULE = CharULE;
+
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        CharULE::from_aligned(self)
+    }
+
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        unaligned.to_char()
+    }
+}
+
+impl PartialOrd for CharULE {
+    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+        Some(self.cmp(other))
+    }
+}
+
+impl Ord for CharULE {
+    fn cmp(&self, other: &Self) -> Ordering {
+        char::from_unaligned(*self).cmp(&char::from_unaligned(*other))
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::*;
+
+    #[test]
+    fn test_from_array() {
+        const CHARS: [char; 2] = ['a', '🙃'];
+        const CHARS_ULE: [CharULE; 2] = CharULE::from_array(CHARS);
+        assert_eq!(
+            CharULE::slice_as_bytes(&CHARS_ULE),
+            &[0x61, 0x00, 0x00, 0x43, 0xF6, 0x01]
+        );
+    }
+
+    #[test]
+    fn test_from_array_zst() {
+        const CHARS: [char; 0] = [];
+        const CHARS_ULE: [CharULE; 0] = CharULE::from_array(CHARS);
+        let bytes = CharULE::slice_as_bytes(&CHARS_ULE);
+        let empty: &[u8] = &[];
+        assert_eq!(bytes, empty);
+    }
+
+    #[test]
+    fn test_parse() {
+        // 1-byte, 2-byte, 3-byte, and two 4-byte character in UTF-8 (not as relevant in UTF-32)
+        let chars = ['w', 'ω', '文', '𑄃', '🙃'];
+        let char_ules: Vec<CharULE> = chars.iter().copied().map(char::to_unaligned).collect();
+        let char_bytes: &[u8] = CharULE::slice_as_bytes(&char_ules);
+
+        // Check parsing
+        let parsed_ules: &[CharULE] = CharULE::parse_bytes_to_slice(char_bytes).unwrap();
+        assert_eq!(char_ules, parsed_ules);
+        let parsed_chars: Vec<char> = parsed_ules
+            .iter()
+            .copied()
+            .map(char::from_unaligned)
+            .collect();
+        assert_eq!(&chars, parsed_chars.as_slice());
+
+        // Compare to golden expected data
+        assert_eq!(
+            &[119, 0, 0, 201, 3, 0, 135, 101, 0, 3, 17, 1, 67, 246, 1],
+            char_bytes
+        );
+    }
+
+    #[test]
+    fn test_failures() {
+        // 119 and 120 are valid, but not 0xD800 (high surrogate)
+        let u32s = [119, 0xD800, 120];
+        let u32_ules: Vec<RawBytesULE<4>> = u32s
+            .iter()
+            .copied()
+            .map(<u32 as AsULE>::to_unaligned)
+            .collect();
+        let u32_bytes: &[u8] = RawBytesULE::<4>::slice_as_bytes(&u32_ules);
+        let parsed_ules_result = CharULE::parse_bytes_to_slice(u32_bytes);
+        assert!(parsed_ules_result.is_err());
+
+        // 0x20FFFF is out of range for a char
+        let u32s = [0x20FFFF];
+        let u32_ules: Vec<RawBytesULE<4>> = u32s
+            .iter()
+            .copied()
+            .map(<u32 as AsULE>::to_unaligned)
+            .collect();
+        let u32_bytes: &[u8] = RawBytesULE::<4>::slice_as_bytes(&u32_ules);
+        let parsed_ules_result = CharULE::parse_bytes_to_slice(u32_bytes);
+        assert!(parsed_ules_result.is_err());
+    }
+}
diff --git a/vendor/zerovec/src/ule/custom.rs b/vendor/zerovec/src/ule/custom.rs
new file mode 100644
index 00000000..2862d9e0
--- /dev/null
+++ b/vendor/zerovec/src/ule/custom.rs
@@ -0,0 +1,145 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Documentation on implementing custom VarULE types.
+//!
+//! This module contains documentation for defining custom VarULE types,
+//! especially those using complex custom dynamically sized types.
+//!
+//! In *most cases* you should be able to create custom VarULE types using
+//! [`#[make_varule]`](crate::make_ule).
+//!
+//! # Example
+//!
+//! For example, if your regular stack type is:
+//!
+//! ```rust
+//! use zerofrom::ZeroFrom;
+//! use zerovec::ule::*;
+//! use zerovec::ZeroVec;
+//!
+//! #[derive(serde::Serialize, serde::Deserialize)]
+//! struct Foo<'a> {
+//!     field1: char,
+//!     field2: u32,
+//!     #[serde(borrow)]
+//!     field3: ZeroVec<'a, u32>,
+//! }
+//! ```
+//!
+//! then the ULE type will be implemented as follows. Ideally, you should have
+//! `EncodeAsVarULE` and `ZeroFrom` implementations on `Foo` pertaining to `FooULE`,
+//! as well as a `Serialize` impl on `FooULE` and a `Deserialize` impl on `Box<FooULE>`
+//! to enable human-readable serialization and deserialization.
+//!
+//! ```rust
+//! use zerovec::{ZeroVec, VarZeroVec, ZeroSlice};
+//! use zerovec::ule::*;
+//! use zerofrom::ZeroFrom;
+//! use core::mem;
+//!
+//! # #[derive(serde::Serialize, serde::Deserialize)]
+//! # struct Foo<'a> {
+//! #    field1: char,
+//! #    field2: u32,
+//! #    #[serde(borrow)]
+//! #    field3: ZeroVec<'a, u32>   
+//! # }
+//!
+//! // Must be repr(C, packed) for safety of VarULE!
+//! // Must also only contain ULE types
+//! #[repr(C, packed)]
+//! struct FooULE {
+//!     field1: <char as AsULE>::ULE,   
+//!     field2: <u32 as AsULE>::ULE,
+//!     field3: ZeroSlice<u32>,
+//! }
+//!
+//! // Safety (based on the safety checklist on the VarULE trait):
+//! //  1. FooULE does not include any uninitialized or padding bytes. (achieved by `#[repr(C, packed)]` on
+//! //     a struct with only ULE fields)
+//! //  2. FooULE is aligned to 1 byte. (achieved by `#[repr(C, packed)]` on
+//! //     a struct with only ULE fields)
+//! //  3. The impl of `validate_bytes()` returns an error if any byte is not valid.
+//! //  4. The impl of `validate_bytes()` returns an error if the slice cannot be used in its entirety
+//! //  5. The impl of `from_bytes_unchecked()` returns a reference to the same data.
+//! //  6. The other VarULE methods use the default impl.
+//! //  7. FooULE byte equality is semantic equality
+//! unsafe impl VarULE for FooULE {
+//!     fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+//!         // validate each field
+//!         <char as AsULE>::ULE::validate_bytes(&bytes[0..3]).map_err(|_| UleError::parse::<Self>())?;
+//!         <u32 as AsULE>::ULE::validate_bytes(&bytes[3..7]).map_err(|_| UleError::parse::<Self>())?;
+//!         let _ = ZeroVec::<u32>::parse_bytes(&bytes[7..]).map_err(|_| UleError::parse::<Self>())?;
+//!         Ok(())
+//!     }
+//!     unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+//!         let ptr = bytes.as_ptr();
+//!         let len = bytes.len();
+//!         // subtract the length of the char and u32 to get the length of the array
+//!         let len_new = (len - 7) / 4;
+//!         // it's hard constructing custom DSTs, we fake a pointer/length construction
+//!         // eventually we can use the Pointer::Metadata APIs when they stabilize
+//!         let fake_slice = core::ptr::slice_from_raw_parts(ptr as *const <u32 as AsULE>::ULE, len_new);
+//!         &*(fake_slice as *const Self)
+//!     }
+//! }
+//!
+//! unsafe impl EncodeAsVarULE<FooULE> for Foo<'_> {
+//!    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+//!        // take each field, convert to ULE byte slices, and pass them through
+//!        cb(&[<char as AsULE>::ULE::slice_as_bytes(&[self.field1.to_unaligned()]),
+//!             <u32 as AsULE>::ULE::slice_as_bytes(&[self.field2.to_unaligned()]),
+//!             // the ZeroVec is already in the correct slice format
+//!             self.field3.as_bytes()])
+//!    }
+//! }
+//!
+//! impl<'a> ZeroFrom<'a, FooULE> for Foo<'a> {
+//!     fn zero_from(other: &'a FooULE) -> Self {
+//!         Self {
+//!             field1: AsULE::from_unaligned(other.field1),
+//!             field2: AsULE::from_unaligned(other.field2),
+//!             field3: ZeroFrom::zero_from(&other.field3),
+//!         }
+//!     }
+//! }
+//!
+//!
+//! impl serde::Serialize for FooULE
+//! {
+//!     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+//!     where
+//!         S: serde::Serializer,
+//!     {
+//!         Foo::zero_from(self).serialize(serializer)
+//!     }
+//! }
+//!
+//! impl<'de> serde::Deserialize<'de> for Box<FooULE>
+//! {
+//!     fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+//!     where
+//!         D: serde::Deserializer<'de>,
+//!     {
+//!         let mut foo = Foo::deserialize(deserializer)?;
+//!         Ok(encode_varule_to_box(&foo))
+//!     }
+//! }
+//!
+//! fn main() {
+//!     let mut foos = [Foo {field1: 'u', field2: 983, field3: ZeroVec::alloc_from_slice(&[1212,2309,500,7000])},
+//!                     Foo {field1: 'l', field2: 1010, field3: ZeroVec::alloc_from_slice(&[1932, 0, 8888, 91237])}];
+//!
+//!     let vzv = VarZeroVec::<_>::from(&foos);
+//!
+//!     assert_eq!(char::from_unaligned(vzv.get(0).unwrap().field1), 'u');
+//!     assert_eq!(u32::from_unaligned(vzv.get(0).unwrap().field2), 983);
+//!     assert_eq!(&vzv.get(0).unwrap().field3, &[1212,2309,500,7000][..]);
+//!
+//!     assert_eq!(char::from_unaligned(vzv.get(1).unwrap().field1), 'l');
+//!     assert_eq!(u32::from_unaligned(vzv.get(1).unwrap().field2), 1010);
+//!     assert_eq!(&vzv.get(1).unwrap().field3, &[1932, 0, 8888, 91237][..]);
+//! }
+//! ```
diff --git a/vendor/zerovec/src/ule/encode.rs b/vendor/zerovec/src/ule/encode.rs
new file mode 100644
index 00000000..db9bf120
--- /dev/null
+++ b/vendor/zerovec/src/ule/encode.rs
@@ -0,0 +1,438 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::ule::*;
+use crate::varzerovec::VarZeroVecFormat;
+use crate::{VarZeroSlice, VarZeroVec, ZeroSlice, ZeroVec};
+#[cfg(feature = "alloc")]
+use alloc::borrow::{Cow, ToOwned};
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+#[cfg(feature = "alloc")]
+use alloc::string::String;
+#[cfg(feature = "alloc")]
+use alloc::{vec, vec::Vec};
+#[cfg(feature = "alloc")]
+use core::mem;
+
+/// Allows types to be encoded as VarULEs. This is highly useful for implementing VarULE on
+/// custom DSTs where the type cannot be obtained as a reference to some other type.
+///
+/// [`Self::encode_var_ule_as_slices()`] should be implemented by providing an encoded slice for each field
+/// of the VarULE type to the callback, in order. For an implementation to be safe, the slices
+/// to the callback must, when concatenated, be a valid instance of the VarULE type.
+///
+/// See the [custom VarULEdocumentation](crate::ule::custom) for examples.
+///
+/// [`Self::encode_var_ule_as_slices()`] is only used to provide default implementations for [`Self::encode_var_ule_write()`]
+/// and [`Self::encode_var_ule_len()`]. If you override the default implementations it is totally valid to
+/// replace [`Self::encode_var_ule_as_slices()`]'s body with `unreachable!()`. This can be done for cases where
+/// it is not possible to implement [`Self::encode_var_ule_as_slices()`] but the other methods still work.
+///
+/// A typical implementation will take each field in the order found in the [`VarULE`] type,
+/// convert it to ULE, call [`ULE::slice_as_bytes()`] on them, and pass the slices to `cb` in order.
+/// A trailing [`ZeroVec`](crate::ZeroVec) or [`VarZeroVec`](crate::VarZeroVec) can have their underlying
+/// byte representation passed through.
+///
+/// In case the compiler is not optimizing [`Self::encode_var_ule_len()`], it can be overridden. A typical
+/// implementation will add up the sizes of each field on the [`VarULE`] type and then add in the byte length of the
+/// dynamically-sized part.
+///
+/// # Reverse-encoding VarULE
+///
+/// This trait maps a struct to its bytes representation ("serialization"), and
+/// [`ZeroFrom`](zerofrom::ZeroFrom) performs the opposite operation, taking those bytes and
+/// creating a struct from them ("deserialization").
+///
+/// # Safety
+///
+/// The safety invariants of [`Self::encode_var_ule_as_slices()`] are:
+/// - It must call `cb` (only once)
+/// - The slices passed to `cb`, if concatenated, should be a valid instance of the `T` [`VarULE`] type
+///   (i.e. if fed to [`VarULE::validate_bytes()`] they must produce a successful result)
+/// - It must return the return value of `cb` to the caller
+///
+/// One or more of [`Self::encode_var_ule_len()`] and [`Self::encode_var_ule_write()`] may be provided.
+/// If both are, then `zerovec` code is guaranteed to not call [`Self::encode_var_ule_as_slices()`], and it may be replaced
+/// with `unreachable!()`.
+///
+/// The safety invariants of [`Self::encode_var_ule_len()`] are:
+/// - It must return the length of the corresponding VarULE type
+///
+/// The safety invariants of [`Self::encode_var_ule_write()`] are:
+/// - The slice written to `dst` must be a valid instance of the `T` [`VarULE`] type
+pub unsafe trait EncodeAsVarULE<T: VarULE + ?Sized> {
+    /// Calls `cb` with a piecewise list of byte slices that when concatenated
+    /// produce the memory pattern of the corresponding instance of `T`.
+    ///
+    /// Do not call this function directly; instead use the other two. Some implementors
+    /// may define this function to panic.
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R;
+
+    /// Return the length, in bytes, of the corresponding [`VarULE`] type
+    fn encode_var_ule_len(&self) -> usize {
+        self.encode_var_ule_as_slices(|slices| slices.iter().map(|s| s.len()).sum())
+    }
+
+    /// Write the corresponding [`VarULE`] type to the `dst` buffer. `dst` should
+    /// be the size of [`Self::encode_var_ule_len()`]
+    fn encode_var_ule_write(&self, mut dst: &mut [u8]) {
+        debug_assert_eq!(self.encode_var_ule_len(), dst.len());
+        self.encode_var_ule_as_slices(move |slices| {
+            #[expect(clippy::indexing_slicing)] // by debug_assert
+            for slice in slices {
+                dst[..slice.len()].copy_from_slice(slice);
+                dst = &mut dst[slice.len()..];
+            }
+        });
+    }
+}
+
+/// Given an [`EncodeAsVarULE`] type `S`, encode it into a `Box<T>`
+///
+/// This is primarily useful for generating `Deserialize` impls for VarULE types
+#[cfg(feature = "alloc")]
+pub fn encode_varule_to_box<S: EncodeAsVarULE<T> + ?Sized, T: VarULE + ?Sized>(x: &S) -> Box<T> {
+    // zero-fill the vector to avoid uninitialized data UB
+    let mut vec: Vec<u8> = vec![0; x.encode_var_ule_len()];
+    x.encode_var_ule_write(&mut vec);
+    let boxed = mem::ManuallyDrop::new(vec.into_boxed_slice());
+    unsafe {
+        // Safety: `ptr` is a box, and `T` is a VarULE which guarantees it has the same memory layout as `[u8]`
+        // and can be recouped via from_bytes_unchecked()
+        let ptr: *mut T = T::from_bytes_unchecked(&boxed) as *const T as *mut T;
+
+        // Safety: we can construct an owned version since we have mem::forgotten the older owner
+        Box::from_raw(ptr)
+    }
+}
+
+unsafe impl<T: VarULE + ?Sized> EncodeAsVarULE<T> for T {
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+        cb(&[T::as_bytes(self)])
+    }
+}
+
+unsafe impl<T: VarULE + ?Sized> EncodeAsVarULE<T> for &'_ T {
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+        cb(&[T::as_bytes(self)])
+    }
+}
+
+unsafe impl<T: VarULE + ?Sized> EncodeAsVarULE<T> for &'_ &'_ T {
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+        cb(&[T::as_bytes(self)])
+    }
+}
+
+#[cfg(feature = "alloc")]
+unsafe impl<T: VarULE + ?Sized> EncodeAsVarULE<T> for Cow<'_, T>
+where
+    T: ToOwned,
+{
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+        cb(&[T::as_bytes(self.as_ref())])
+    }
+}
+
+#[cfg(feature = "alloc")]
+unsafe impl<T: VarULE + ?Sized> EncodeAsVarULE<T> for Box<T> {
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+        cb(&[T::as_bytes(self)])
+    }
+}
+
+#[cfg(feature = "alloc")]
+unsafe impl<T: VarULE + ?Sized> EncodeAsVarULE<T> for &'_ Box<T> {
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+        cb(&[T::as_bytes(self)])
+    }
+}
+
+#[cfg(feature = "alloc")]
+unsafe impl EncodeAsVarULE<str> for String {
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+        cb(&[self.as_bytes()])
+    }
+}
+
+#[cfg(feature = "alloc")]
+unsafe impl EncodeAsVarULE<str> for &'_ String {
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+        cb(&[self.as_bytes()])
+    }
+}
+
+// Note: This impl could technically use `T: AsULE`, but we want users to prefer `ZeroSlice<T>`
+// for cases where T is not a ULE. Therefore, we can use the more efficient `memcpy` impl here.
+#[cfg(feature = "alloc")]
+unsafe impl<T> EncodeAsVarULE<[T]> for Vec<T>
+where
+    T: ULE,
+{
+    fn encode_var_ule_as_slices<R>(&self, cb: impl FnOnce(&[&[u8]]) -> R) -> R {
+        cb(&[<[T] as VarULE>::as_bytes(self)])
+    }
+}
+
+unsafe impl<T> EncodeAsVarULE<ZeroSlice<T>> for &'_ [T]
+where
+    T: AsULE + 'static,
+{
+    fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+        // unnecessary if the other two are implemented
+        unreachable!()
+    }
+
+    #[inline]
+    fn encode_var_ule_len(&self) -> usize {
+        self.len() * core::mem::size_of::<T::ULE>()
+    }
+
+    fn encode_var_ule_write(&self, dst: &mut [u8]) {
+        #[allow(non_snake_case)]
+        let S = core::mem::size_of::<T::ULE>();
+        debug_assert_eq!(self.len() * S, dst.len());
+        for (item, ref mut chunk) in self.iter().zip(dst.chunks_mut(S)) {
+            let ule = item.to_unaligned();
+            chunk.copy_from_slice(ULE::slice_as_bytes(core::slice::from_ref(&ule)));
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+unsafe impl<T> EncodeAsVarULE<ZeroSlice<T>> for Vec<T>
+where
+    T: AsULE + 'static,
+{
+    fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+        // unnecessary if the other two are implemented
+        unreachable!()
+    }
+
+    #[inline]
+    fn encode_var_ule_len(&self) -> usize {
+        self.as_slice().encode_var_ule_len()
+    }
+
+    #[inline]
+    fn encode_var_ule_write(&self, dst: &mut [u8]) {
+        self.as_slice().encode_var_ule_write(dst)
+    }
+}
+
+unsafe impl<T> EncodeAsVarULE<ZeroSlice<T>> for ZeroVec<'_, T>
+where
+    T: AsULE + 'static,
+{
+    fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+        // unnecessary if the other two are implemented
+        unreachable!()
+    }
+
+    #[inline]
+    fn encode_var_ule_len(&self) -> usize {
+        self.as_bytes().len()
+    }
+
+    fn encode_var_ule_write(&self, dst: &mut [u8]) {
+        debug_assert_eq!(self.as_bytes().len(), dst.len());
+        dst.copy_from_slice(self.as_bytes());
+    }
+}
+
+unsafe impl<T, E, F> EncodeAsVarULE<VarZeroSlice<T, F>> for &'_ [E]
+where
+    T: VarULE + ?Sized,
+    E: EncodeAsVarULE<T>,
+    F: VarZeroVecFormat,
+{
+    fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+        // unnecessary if the other two are implemented
+        unimplemented!()
+    }
+
+    #[expect(clippy::unwrap_used)] // TODO(#1410): Rethink length errors in VZV.
+    fn encode_var_ule_len(&self) -> usize {
+        crate::varzerovec::components::compute_serializable_len::<T, E, F>(self).unwrap() as usize
+    }
+
+    fn encode_var_ule_write(&self, dst: &mut [u8]) {
+        crate::varzerovec::components::write_serializable_bytes::<T, E, F>(self, dst)
+    }
+}
+
+#[cfg(feature = "alloc")]
+unsafe impl<T, E, F> EncodeAsVarULE<VarZeroSlice<T, F>> for Vec<E>
+where
+    T: VarULE + ?Sized,
+    E: EncodeAsVarULE<T>,
+    F: VarZeroVecFormat,
+{
+    fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+        // unnecessary if the other two are implemented
+        unreachable!()
+    }
+
+    #[inline]
+    fn encode_var_ule_len(&self) -> usize {
+        <_ as EncodeAsVarULE<VarZeroSlice<T, F>>>::encode_var_ule_len(&self.as_slice())
+    }
+
+    #[inline]
+    fn encode_var_ule_write(&self, dst: &mut [u8]) {
+        <_ as EncodeAsVarULE<VarZeroSlice<T, F>>>::encode_var_ule_write(&self.as_slice(), dst)
+    }
+}
+
+unsafe impl<T, F> EncodeAsVarULE<VarZeroSlice<T, F>> for VarZeroVec<'_, T, F>
+where
+    T: VarULE + ?Sized,
+    F: VarZeroVecFormat,
+{
+    fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+        // unnecessary if the other two are implemented
+        unreachable!()
+    }
+
+    #[inline]
+    fn encode_var_ule_len(&self) -> usize {
+        self.as_bytes().len()
+    }
+
+    #[inline]
+    fn encode_var_ule_write(&self, dst: &mut [u8]) {
+        debug_assert_eq!(self.as_bytes().len(), dst.len());
+        dst.copy_from_slice(self.as_bytes());
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::*;
+
+    const STRING_ARRAY: [&str; 2] = ["hello", "world"];
+
+    const STRING_SLICE: &[&str] = &STRING_ARRAY;
+
+    const U8_ARRAY: [u8; 8] = [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07];
+
+    const U8_2D_ARRAY: [&[u8]; 2] = [&U8_ARRAY, &U8_ARRAY];
+
+    const U8_2D_SLICE: &[&[u8]] = &[&U8_ARRAY, &U8_ARRAY];
+
+    const U8_3D_ARRAY: [&[&[u8]]; 2] = [U8_2D_SLICE, U8_2D_SLICE];
+
+    const U8_3D_SLICE: &[&[&[u8]]] = &[U8_2D_SLICE, U8_2D_SLICE];
+
+    const U32_ARRAY: [u32; 4] = [0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F];
+
+    const U32_2D_ARRAY: [&[u32]; 2] = [&U32_ARRAY, &U32_ARRAY];
+
+    const U32_2D_SLICE: &[&[u32]] = &[&U32_ARRAY, &U32_ARRAY];
+
+    const U32_3D_ARRAY: [&[&[u32]]; 2] = [U32_2D_SLICE, U32_2D_SLICE];
+
+    const U32_3D_SLICE: &[&[&[u32]]] = &[U32_2D_SLICE, U32_2D_SLICE];
+
+    #[test]
+    fn test_vzv_from() {
+        type VZV<'a, T> = VarZeroVec<'a, T>;
+        type ZS<T> = ZeroSlice<T>;
+        type VZS<T> = VarZeroSlice<T>;
+
+        let u8_zerovec: ZeroVec<u8> = ZeroVec::from_slice_or_alloc(&U8_ARRAY);
+        let u8_2d_zerovec: [ZeroVec<u8>; 2] = [u8_zerovec.clone(), u8_zerovec.clone()];
+        let u8_2d_vec: Vec<Vec<u8>> = vec![U8_ARRAY.into(), U8_ARRAY.into()];
+        let u8_3d_vec: Vec<Vec<Vec<u8>>> = vec![u8_2d_vec.clone(), u8_2d_vec.clone()];
+
+        let u32_zerovec: ZeroVec<u32> = ZeroVec::from_slice_or_alloc(&U32_ARRAY);
+        let u32_2d_zerovec: [ZeroVec<u32>; 2] = [u32_zerovec.clone(), u32_zerovec.clone()];
+        let u32_2d_vec: Vec<Vec<u32>> = vec![U32_ARRAY.into(), U32_ARRAY.into()];
+        let u32_3d_vec: Vec<Vec<Vec<u32>>> = vec![u32_2d_vec.clone(), u32_2d_vec.clone()];
+
+        let a: VZV<str> = VarZeroVec::from(&STRING_ARRAY);
+        let b: VZV<str> = VarZeroVec::from(STRING_SLICE);
+        let c: VZV<str> = VarZeroVec::from(&Vec::from(STRING_SLICE));
+        assert_eq!(a, STRING_SLICE);
+        assert_eq!(a, b);
+        assert_eq!(a, c);
+
+        let a: VZV<[u8]> = VarZeroVec::from(&U8_2D_ARRAY);
+        let b: VZV<[u8]> = VarZeroVec::from(U8_2D_SLICE);
+        let c: VZV<[u8]> = VarZeroVec::from(&u8_2d_vec);
+        assert_eq!(a, U8_2D_SLICE);
+        assert_eq!(a, b);
+        assert_eq!(a, c);
+        let u8_3d_vzv_brackets = &[a.clone(), a.clone()];
+
+        let a: VZV<ZS<u8>> = VarZeroVec::from(&U8_2D_ARRAY);
+        let b: VZV<ZS<u8>> = VarZeroVec::from(U8_2D_SLICE);
+        let c: VZV<ZS<u8>> = VarZeroVec::from(&u8_2d_vec);
+        let d: VZV<ZS<u8>> = VarZeroVec::from(&u8_2d_zerovec);
+        assert_eq!(a, U8_2D_SLICE);
+        assert_eq!(a, b);
+        assert_eq!(a, c);
+        assert_eq!(a, d);
+        let u8_3d_vzv_zeroslice = &[a.clone(), a.clone()];
+
+        let a: VZV<VZS<[u8]>> = VarZeroVec::from(&U8_3D_ARRAY);
+        let b: VZV<VZS<[u8]>> = VarZeroVec::from(U8_3D_SLICE);
+        let c: VZV<VZS<[u8]>> = VarZeroVec::from(&u8_3d_vec);
+        let d: VZV<VZS<[u8]>> = VarZeroVec::from(u8_3d_vzv_brackets);
+        assert_eq!(
+            a.iter()
+                .map(|x| x.iter().map(|y| y.to_vec()).collect::<Vec<Vec<u8>>>())
+                .collect::<Vec<Vec<Vec<u8>>>>(),
+            u8_3d_vec
+        );
+        assert_eq!(a, b);
+        assert_eq!(a, c);
+        assert_eq!(a, d);
+
+        let a: VZV<VZS<ZS<u8>>> = VarZeroVec::from(&U8_3D_ARRAY);
+        let b: VZV<VZS<ZS<u8>>> = VarZeroVec::from(U8_3D_SLICE);
+        let c: VZV<VZS<ZS<u8>>> = VarZeroVec::from(&u8_3d_vec);
+        let d: VZV<VZS<ZS<u8>>> = VarZeroVec::from(u8_3d_vzv_zeroslice);
+        assert_eq!(
+            a.iter()
+                .map(|x| x
+                    .iter()
+                    .map(|y| y.iter().collect::<Vec<u8>>())
+                    .collect::<Vec<Vec<u8>>>())
+                .collect::<Vec<Vec<Vec<u8>>>>(),
+            u8_3d_vec
+        );
+        assert_eq!(a, b);
+        assert_eq!(a, c);
+        assert_eq!(a, d);
+
+        let a: VZV<ZS<u32>> = VarZeroVec::from(&U32_2D_ARRAY);
+        let b: VZV<ZS<u32>> = VarZeroVec::from(U32_2D_SLICE);
+        let c: VZV<ZS<u32>> = VarZeroVec::from(&u32_2d_vec);
+        let d: VZV<ZS<u32>> = VarZeroVec::from(&u32_2d_zerovec);
+        assert_eq!(a, u32_2d_zerovec);
+        assert_eq!(a, b);
+        assert_eq!(a, c);
+        assert_eq!(a, d);
+        let u32_3d_vzv = &[a.clone(), a.clone()];
+
+        let a: VZV<VZS<ZS<u32>>> = VarZeroVec::from(&U32_3D_ARRAY);
+        let b: VZV<VZS<ZS<u32>>> = VarZeroVec::from(U32_3D_SLICE);
+        let c: VZV<VZS<ZS<u32>>> = VarZeroVec::from(&u32_3d_vec);
+        let d: VZV<VZS<ZS<u32>>> = VarZeroVec::from(u32_3d_vzv);
+        assert_eq!(
+            a.iter()
+                .map(|x| x
+                    .iter()
+                    .map(|y| y.iter().collect::<Vec<u32>>())
+                    .collect::<Vec<Vec<u32>>>())
+                .collect::<Vec<Vec<Vec<u32>>>>(),
+            u32_3d_vec
+        );
+        assert_eq!(a, b);
+        assert_eq!(a, c);
+        assert_eq!(a, d);
+    }
+}
diff --git a/vendor/zerovec/src/ule/macros.rs b/vendor/zerovec/src/ule/macros.rs
new file mode 100644
index 00000000..86c82abc
--- /dev/null
+++ b/vendor/zerovec/src/ule/macros.rs
@@ -0,0 +1,29 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+/// Given `Self` (`$aligned`), `Self::ULE` (`$unaligned`), and a conversion function (`$single` or
+/// `Self::from_aligned`), implement `from_array` for arrays of `$aligned` to `$unaligned`.
+///
+/// The `$default` argument is due to current compiler limitations.
+/// Pass any (cheap to construct) value.
+#[macro_export]
+macro_rules! impl_ule_from_array {
+    ($aligned:ty, $unaligned:ty, $default:expr, $single:path) => {
+        #[doc = concat!("Convert an array of `", stringify!($aligned), "` to an array of `", stringify!($unaligned), "`.")]
+        pub const fn from_array<const N: usize>(arr: [$aligned; N]) -> [Self; N] {
+            let mut result = [$default; N];
+            let mut i = 0;
+            // Won't panic because i < N and arr has length N
+            #[expect(clippy::indexing_slicing)]
+            while i < N {
+                result[i] = $single(arr[i]);
+                i += 1;
+            }
+            result
+        }
+    };
+    ($aligned:ty, $unaligned:ty, $default:expr) => {
+        impl_ule_from_array!($aligned, $unaligned, $default, Self::from_aligned);
+    };
+}
diff --git a/vendor/zerovec/src/ule/mod.rs b/vendor/zerovec/src/ule/mod.rs
new file mode 100644
index 00000000..629fe62c
--- /dev/null
+++ b/vendor/zerovec/src/ule/mod.rs
@@ -0,0 +1,450 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#![allow(clippy::upper_case_acronyms)]
+
+//! Traits over unaligned little-endian data (ULE, pronounced "yule").
+//!
+//! The main traits for this module are [`ULE`], [`AsULE`] and, [`VarULE`].
+//!
+//! See [the design doc](https://github.com/unicode-org/icu4x/blob/main/utils/zerovec/design_doc.md) for details on how these traits
+//! works under the hood.
+mod chars;
+#[cfg(doc)]
+pub mod custom;
+mod encode;
+mod macros;
+mod multi;
+mod niche;
+mod option;
+mod plain;
+mod slices;
+#[cfg(test)]
+pub mod test_utils;
+
+pub mod tuple;
+pub mod tuplevar;
+pub mod vartuple;
+pub use chars::CharULE;
+#[cfg(feature = "alloc")]
+pub use encode::encode_varule_to_box;
+pub use encode::EncodeAsVarULE;
+pub use multi::MultiFieldsULE;
+pub use niche::{NicheBytes, NichedOption, NichedOptionULE};
+pub use option::{OptionULE, OptionVarULE};
+pub use plain::RawBytesULE;
+
+use core::{any, fmt, mem, slice};
+
+/// Fixed-width, byte-aligned data that can be cast to and from a little-endian byte slice.
+///
+/// If you need to implement this trait, consider using [`#[make_ule]`](crate::make_ule) or
+///  [`#[derive(ULE)]`](macro@ULE) instead.
+///
+/// Types that are not fixed-width can implement [`VarULE`] instead.
+///
+/// "ULE" stands for "Unaligned little-endian"
+///
+/// # Safety
+///
+/// Safety checklist for `ULE`:
+///
+/// 1. The type *must not* include any uninitialized or padding bytes.
+/// 2. The type must have an alignment of 1 byte, or it is a ZST that is safe to construct.
+/// 3. The impl of [`ULE::validate_bytes()`] *must* return an error if the given byte slice
+///    would not represent a valid slice of this type.
+/// 4. The impl of [`ULE::validate_bytes()`] *must* return an error if the given byte slice
+///    cannot be used in its entirety (if its length is not a multiple of `size_of::<Self>()`).
+/// 5. All other methods *must* be left with their default impl, or else implemented according to
+///    their respective safety guidelines.
+/// 6. Acknowledge the following note about the equality invariant.
+///
+/// If the ULE type is a struct only containing other ULE types (or other types which satisfy invariants 1 and 2,
+/// like `[u8; N]`), invariants 1 and 2 can be achieved via `#[repr(C, packed)]` or `#[repr(transparent)]`.
+///
+/// # Equality invariant
+///
+/// A non-safety invariant is that if `Self` implements `PartialEq`, the it *must* be logically
+/// equivalent to byte equality on [`Self::slice_as_bytes()`].
+///
+/// It may be necessary to introduce a "canonical form" of the ULE if logical equality does not
+/// equal byte equality. In such a case, [`Self::validate_bytes()`] should return an error
+/// for any values that are not in canonical form. For example, the decimal strings "1.23e4" and
+/// "12.3e3" are logically equal, but not byte-for-byte equal, so we could define a canonical form
+/// where only a single digit is allowed before `.`.
+///
+/// Failure to follow this invariant will cause surprising behavior in `PartialEq`, which may
+/// result in unpredictable operations on `ZeroVec`, `VarZeroVec`, and `ZeroMap`.
+pub unsafe trait ULE
+where
+    Self: Sized,
+    Self: Copy + 'static,
+{
+    /// Validates a byte slice, `&[u8]`.
+    ///
+    /// If `Self` is not well-defined for all possible bit values, the bytes should be validated.
+    /// If the bytes can be transmuted, *in their entirety*, to a valid slice of `Self`, then `Ok`
+    /// should be returned; otherwise, `Err` should be returned.
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError>;
+
+    /// Parses a byte slice, `&[u8]`, and return it as `&[Self]` with the same lifetime.
+    ///
+    /// If `Self` is not well-defined for all possible bit values, the bytes should be validated,
+    /// and an error should be returned in the same cases as [`Self::validate_bytes()`].
+    ///
+    /// The default implementation executes [`Self::validate_bytes()`] followed by
+    /// [`Self::slice_from_bytes_unchecked`].
+    ///
+    /// Note: The following equality should hold: `bytes.len() % size_of::<Self>() == 0`. This
+    /// means that the returned slice can span the entire byte slice.
+    fn parse_bytes_to_slice(bytes: &[u8]) -> Result<&[Self], UleError> {
+        Self::validate_bytes(bytes)?;
+        debug_assert_eq!(bytes.len() % mem::size_of::<Self>(), 0);
+        Ok(unsafe { Self::slice_from_bytes_unchecked(bytes) })
+    }
+
+    /// Takes a byte slice, `&[u8]`, and return it as `&[Self]` with the same lifetime, assuming
+    /// that this byte slice has previously been run through [`Self::parse_bytes_to_slice()`] with
+    /// success.
+    ///
+    /// The default implementation performs a pointer cast to the same region of memory.
+    ///
+    /// # Safety
+    ///
+    /// ## Callers
+    ///
+    /// Callers of this method must take care to ensure that `bytes` was previously passed through
+    /// [`Self::validate_bytes()`] with success (and was not changed since then).
+    ///
+    /// ## Implementors
+    ///
+    /// Implementations of this method may call unsafe functions to cast the pointer to the correct
+    /// type, assuming the "Callers" invariant above.
+    ///
+    /// Keep in mind that `&[Self]` and `&[u8]` may have different lengths.
+    ///
+    /// Safety checklist:
+    ///
+    /// 1. This method *must* return the same result as [`Self::parse_bytes_to_slice()`].
+    /// 2. This method *must* return a slice to the same region of memory as the argument.
+    #[inline]
+    unsafe fn slice_from_bytes_unchecked(bytes: &[u8]) -> &[Self] {
+        let data = bytes.as_ptr();
+        let len = bytes.len() / mem::size_of::<Self>();
+        debug_assert_eq!(bytes.len() % mem::size_of::<Self>(), 0);
+        core::slice::from_raw_parts(data as *const Self, len)
+    }
+
+    /// Given `&[Self]`, returns a `&[u8]` with the same lifetime.
+    ///
+    /// The default implementation performs a pointer cast to the same region of memory.
+    ///
+    /// # Safety
+    ///
+    /// Implementations of this method should call potentially unsafe functions to cast the
+    /// pointer to the correct type.
+    ///
+    /// Keep in mind that `&[Self]` and `&[u8]` may have different lengths.
+    #[inline]
+    fn slice_as_bytes(slice: &[Self]) -> &[u8] {
+        unsafe {
+            slice::from_raw_parts(slice as *const [Self] as *const u8, mem::size_of_val(slice))
+        }
+    }
+}
+
+/// A trait for any type that has a 1:1 mapping with an unaligned little-endian (ULE) type.
+///
+/// If you need to implement this trait, consider using [`#[make_ule]`](crate::make_ule) instead.
+pub trait AsULE: Copy {
+    /// The ULE type corresponding to `Self`.
+    ///
+    /// Types having infallible conversions from all bit values (Plain Old Data) can use
+    /// `RawBytesULE` with the desired width; for example, `u32` uses `RawBytesULE<4>`.
+    ///
+    /// Types that are not well-defined for all bit values should implement a custom ULE.
+    type ULE: ULE;
+
+    /// Converts from `Self` to `Self::ULE`.
+    ///
+    /// This function may involve byte order swapping (native-endian to little-endian).
+    ///
+    /// For best performance, mark your implementation of this function `#[inline]`.
+    fn to_unaligned(self) -> Self::ULE;
+
+    /// Converts from `Self::ULE` to `Self`.
+    ///
+    /// This function may involve byte order swapping (little-endian to native-endian).
+    ///
+    /// For best performance, mark your implementation of this function `#[inline]`.
+    ///
+    /// # Safety
+    ///
+    /// This function is infallible because bit validation should have occurred when `Self::ULE`
+    /// was first constructed. An implementation may therefore involve an `unsafe{}` block, like
+    /// `from_bytes_unchecked()`.
+    fn from_unaligned(unaligned: Self::ULE) -> Self;
+}
+
+/// A type whose byte sequence equals the byte sequence of its ULE type on
+/// little-endian platforms.
+///
+/// This enables certain performance optimizations, such as
+/// [`ZeroVec::try_from_slice`](crate::ZeroVec::try_from_slice).
+///
+/// # Implementation safety
+///
+/// This trait is safe to implement if the type's ULE (as defined by `impl `[`AsULE`]` for T`)
+/// has an equal byte sequence as the type itself on little-endian platforms; i.e., one where
+/// `*const T` can be cast to a valid `*const T::ULE`.
+pub unsafe trait EqULE: AsULE {}
+
+/// A trait for a type where aligned slices can be cast to unaligned slices.
+///
+/// Auto-implemented on all types implementing [`EqULE`].
+pub trait SliceAsULE
+where
+    Self: AsULE + Sized,
+{
+    /// Converts from `&[Self]` to `&[Self::ULE]` if possible.
+    ///
+    /// In general, this function returns `Some` on little-endian and `None` on big-endian.
+    fn slice_to_unaligned(slice: &[Self]) -> Option<&[Self::ULE]>;
+}
+
+#[cfg(target_endian = "little")]
+impl<T> SliceAsULE for T
+where
+    T: EqULE,
+{
+    #[inline]
+    fn slice_to_unaligned(slice: &[Self]) -> Option<&[Self::ULE]> {
+        // This is safe because on little-endian platforms, the byte sequence of &[T]
+        // is equivalent to the byte sequence of &[T::ULE] by the contract of EqULE,
+        // and &[T::ULE] has equal or looser alignment than &[T].
+        let ule_slice =
+            unsafe { core::slice::from_raw_parts(slice.as_ptr() as *const Self::ULE, slice.len()) };
+        Some(ule_slice)
+    }
+}
+
+#[cfg(not(target_endian = "little"))]
+impl<T> SliceAsULE for T
+where
+    T: EqULE,
+{
+    #[inline]
+    fn slice_to_unaligned(_: &[Self]) -> Option<&[Self::ULE]> {
+        None
+    }
+}
+
+/// Variable-width, byte-aligned data that can be cast to and from a little-endian byte slice.
+///
+/// If you need to implement this trait, consider using [`#[make_varule]`](crate::make_varule) or
+///  [`#[derive(VarULE)]`](macro@VarULE) instead.
+///
+/// This trait is mostly for unsized types like `str` and `[T]`. It can be implemented on sized types;
+/// however, it is much more preferable to use [`ULE`] for that purpose. The [`custom`] module contains
+/// additional documentation on how this type can be implemented on custom types.
+///
+/// If deserialization with `VarZeroVec` is desired is recommended to implement `Deserialize` for
+/// `Box<T>` (serde does not do this automatically for unsized `T`).
+///
+/// For convenience it is typically desired to implement [`EncodeAsVarULE`] and [`ZeroFrom`](zerofrom::ZeroFrom)
+/// on some stack type to convert to and from the ULE type efficiently when necessary.
+///
+/// # Safety
+///
+/// Safety checklist for `VarULE`:
+///
+/// 1. The type *must not* include any uninitialized or padding bytes.
+/// 2. The type must have an alignment of 1 byte.
+/// 3. The impl of [`VarULE::validate_bytes()`] *must* return an error if the given byte slice
+///    would not represent a valid slice of this type.
+/// 4. The impl of [`VarULE::validate_bytes()`] *must* return an error if the given byte slice
+///    cannot be used in its entirety.
+/// 5. The impl of [`VarULE::from_bytes_unchecked()`] must produce a reference to the same
+///    underlying data assuming that the given bytes previously passed validation.
+/// 6. All other methods *must* be left with their default impl, or else implemented according to
+///    their respective safety guidelines.
+/// 7. Acknowledge the following note about the equality invariant.
+///
+/// If the ULE type is a struct only containing other ULE/VarULE types (or other types which satisfy invariants 1 and 2,
+/// like `[u8; N]`), invariants 1 and 2 can be achieved via `#[repr(C, packed)]` or `#[repr(transparent)]`.
+///
+/// # Equality invariant
+///
+/// A non-safety invariant is that if `Self` implements `PartialEq`, the it *must* be logically
+/// equivalent to byte equality on [`Self::as_bytes()`].
+///
+/// It may be necessary to introduce a "canonical form" of the ULE if logical equality does not
+/// equal byte equality. In such a case, [`Self::validate_bytes()`] should return an error
+/// for any values that are not in canonical form. For example, the decimal strings "1.23e4" and
+/// "12.3e3" are logically equal, but not byte-for-byte equal, so we could define a canonical form
+/// where only a single digit is allowed before `.`.
+///
+/// There may also be cases where a `VarULE` has muiltiple canonical forms, such as a faster
+/// version and a smaller version. The cleanest way to handle this case would be separate types.
+/// However, if this is not feasible, then the application should ensure that the data it is
+/// deserializing is in the expected form. For example, if the data is being loaded from an
+/// external source, then requests could carry information about the expected form of the data.
+///
+/// Failure to follow this invariant will cause surprising behavior in `PartialEq`, which may
+/// result in unpredictable operations on `ZeroVec`, `VarZeroVec`, and `ZeroMap`.
+pub unsafe trait VarULE: 'static {
+    /// Validates a byte slice, `&[u8]`.
+    ///
+    /// If `Self` is not well-defined for all possible bit values, the bytes should be validated.
+    /// If the bytes can be transmuted, *in their entirety*, to a valid `&Self`, then `Ok` should
+    /// be returned; otherwise, `Self::Error` should be returned.
+    fn validate_bytes(_bytes: &[u8]) -> Result<(), UleError>;
+
+    /// Parses a byte slice, `&[u8]`, and return it as `&Self` with the same lifetime.
+    ///
+    /// If `Self` is not well-defined for all possible bit values, the bytes should be validated,
+    /// and an error should be returned in the same cases as [`Self::validate_bytes()`].
+    ///
+    /// The default implementation executes [`Self::validate_bytes()`] followed by
+    /// [`Self::from_bytes_unchecked`].
+    ///
+    /// Note: The following equality should hold: `size_of_val(result) == size_of_val(bytes)`,
+    /// where `result` is the successful return value of the method. This means that the return
+    /// value spans the entire byte slice.
+    fn parse_bytes(bytes: &[u8]) -> Result<&Self, UleError> {
+        Self::validate_bytes(bytes)?;
+        let result = unsafe { Self::from_bytes_unchecked(bytes) };
+        debug_assert_eq!(mem::size_of_val(result), mem::size_of_val(bytes));
+        Ok(result)
+    }
+
+    /// Takes a byte slice, `&[u8]`, and return it as `&Self` with the same lifetime, assuming
+    /// that this byte slice has previously been run through [`Self::parse_bytes()`] with
+    /// success.
+    ///
+    /// # Safety
+    ///
+    /// ## Callers
+    ///
+    /// Callers of this method must take care to ensure that `bytes` was previously passed through
+    /// [`Self::validate_bytes()`] with success (and was not changed since then).
+    ///
+    /// ## Implementors
+    ///
+    /// Implementations of this method may call unsafe functions to cast the pointer to the correct
+    /// type, assuming the "Callers" invariant above.
+    ///
+    /// Safety checklist:
+    ///
+    /// 1. This method *must* return the same result as [`Self::parse_bytes()`].
+    /// 2. This method *must* return a slice to the same region of memory as the argument.
+    unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self;
+
+    /// Given `&Self`, returns a `&[u8]` with the same lifetime.
+    ///
+    /// The default implementation performs a pointer cast to the same region of memory.
+    ///
+    /// # Safety
+    ///
+    /// Implementations of this method should call potentially unsafe functions to cast the
+    /// pointer to the correct type.
+    #[inline]
+    fn as_bytes(&self) -> &[u8] {
+        unsafe { slice::from_raw_parts(self as *const Self as *const u8, mem::size_of_val(self)) }
+    }
+
+    /// Allocate on the heap as a `Box<T>`
+    #[inline]
+    #[cfg(feature = "alloc")]
+    fn to_boxed(&self) -> alloc::boxed::Box<Self> {
+        use alloc::borrow::ToOwned;
+        use alloc::boxed::Box;
+        use core::alloc::Layout;
+        let bytesvec = self.as_bytes().to_owned().into_boxed_slice();
+        let bytesvec = mem::ManuallyDrop::new(bytesvec);
+        unsafe {
+            // Get the pointer representation
+            let ptr: *mut Self = Self::from_bytes_unchecked(&bytesvec) as *const Self as *mut Self;
+            assert_eq!(Layout::for_value(&*ptr), Layout::for_value(&**bytesvec));
+            // Transmute the pointer to an owned pointer
+            Box::from_raw(ptr)
+        }
+    }
+}
+
+// Proc macro reexports
+//
+// These exist so that our docs can use intra-doc links.
+// Due to quirks of how rustdoc does documentation on reexports, these must be in this module and not reexported from
+// a submodule
+
+/// Custom derive for [`ULE`].
+///
+/// This can be attached to [`Copy`] structs containing only [`ULE`] types.
+///
+/// Most of the time, it is recommended one use [`#[make_ule]`](crate::make_ule) instead of defining
+/// a custom ULE type.
+#[cfg(feature = "derive")]
+pub use zerovec_derive::ULE;
+
+/// Custom derive for [`VarULE`]
+///
+/// This can be attached to structs containing only [`ULE`] types with one [`VarULE`] type at the end.
+///
+/// Most of the time, it is recommended one use [`#[make_varule]`](crate::make_varule) instead of defining
+/// a custom [`VarULE`] type.
+#[cfg(feature = "derive")]
+pub use zerovec_derive::VarULE;
+
+/// An error type to be used for decoding slices of ULE types
+#[derive(Copy, Clone, Debug, PartialEq, Eq)]
+#[non_exhaustive]
+pub enum UleError {
+    /// Attempted to parse a buffer into a slice of the given ULE type but its
+    /// length was not compatible.
+    ///
+    /// Typically created by a [`ULE`] impl via [`UleError::length()`].
+    ///
+    /// [`ULE`]: crate::ule::ULE
+    InvalidLength { ty: &'static str, len: usize },
+    /// The byte sequence provided for `ty` failed to parse correctly in the
+    /// given ULE type.
+    ///
+    /// Typically created by a [`ULE`] impl via [`UleError::parse()`].
+    ///
+    /// [`ULE`]: crate::ule::ULE
+    ParseError { ty: &'static str },
+}
+
+impl fmt::Display for UleError {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+        match *self {
+            UleError::InvalidLength { ty, len } => {
+                write!(f, "Invalid length {len} for slice of type {ty}")
+            }
+            UleError::ParseError { ty } => {
+                write!(f, "Could not parse bytes to slice of type {ty}")
+            }
+        }
+    }
+}
+
+impl UleError {
+    /// Construct a parse error for the given type
+    pub fn parse<T: ?Sized + 'static>() -> UleError {
+        UleError::ParseError {
+            ty: any::type_name::<T>(),
+        }
+    }
+
+    /// Construct an "invalid length" error for the given type and length
+    pub fn length<T: ?Sized + 'static>(len: usize) -> UleError {
+        UleError::InvalidLength {
+            ty: any::type_name::<T>(),
+            len,
+        }
+    }
+}
+
+impl core::error::Error for UleError {}
diff --git a/vendor/zerovec/src/ule/multi.rs b/vendor/zerovec/src/ule/multi.rs
new file mode 100644
index 00000000..26e4ca49
--- /dev/null
+++ b/vendor/zerovec/src/ule/multi.rs
@@ -0,0 +1,159 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use crate::varzerovec::lengthless::VarZeroLengthlessSlice;
+use crate::vecs::VarZeroVecFormat;
+use core::{fmt, mem};
+
+/// This type is used by the custom derive to represent multiple [`VarULE`]
+/// fields packed into a single end-of-struct field. It is not recommended
+/// to use this type directly, use [`Tuple2VarULE`](crate::ule::tuplevar::Tuple2VarULE) etc instead.
+///
+/// Logically, consider it to be `(, , , ..)`
+/// where `` etc are potentially different [`VarULE`] types.
+///
+/// Internally, it is represented by a VarZeroSlice without the length part.
+#[derive(PartialEq, Eq)]
+#[repr(transparent)]
+pub struct MultiFieldsULE<const LEN: usize, Format: VarZeroVecFormat>(
+    VarZeroLengthlessSlice<[u8], Format>,
+);
+
+impl<const LEN: usize, Format: VarZeroVecFormat> MultiFieldsULE<LEN, Format> {
+    /// Compute the amount of bytes needed to support elements with lengths `lengths`
+    #[inline]
+    #[expect(clippy::expect_used)] // See #1410
+    pub fn compute_encoded_len_for(lengths: [usize; LEN]) -> usize {
+        let lengths = lengths.map(BlankSliceEncoder);
+        crate::varzerovec::components::compute_serializable_len_without_length::<_, _, Format>(
+            &lengths,
+        )
+        .expect("Too many bytes to encode") as usize
+    }
+
+    /// Construct a partially initialized MultiFieldsULE backed by a mutable byte buffer
+    pub fn new_from_lengths_partially_initialized<'a>(
+        lengths: [usize; LEN],
+        output: &'a mut [u8],
+    ) -> &'a mut Self {
+        let lengths = lengths.map(BlankSliceEncoder);
+        crate::varzerovec::components::write_serializable_bytes_without_length::<_, _, Format>(
+            &lengths, output,
+        );
+        debug_assert!(
+            <VarZeroLengthlessSlice<[u8], Format>>::parse_bytes(LEN as u32, output).is_ok(),
+            "Encoded slice must be valid VarZeroSlice"
+        );
+        unsafe {
+            // Safe since write_serializable_bytes produces a valid VarZeroLengthlessSlice buffer with the right format
+            let slice = <VarZeroLengthlessSlice<[u8], Format>>::from_bytes_unchecked_mut(output);
+            // safe since `Self` is transparent over VarZeroLengthlessSlice<[u8], Format>
+            mem::transmute::<&mut VarZeroLengthlessSlice<[u8], Format>, &mut Self>(slice)
+        }
+    }
+
+    /// Given a buffer of size obtained by [`Self::compute_encoded_len_for()`], write element A to index idx
+    ///
+    /// # Safety
+    /// - `idx` must be in range
+    /// - `T` must be the appropriate type expected by the custom derive in this usage of this type
+    #[inline]
+    pub unsafe fn set_field_at<T: VarULE + ?Sized, A: EncodeAsVarULE<T> + ?Sized>(
+        &mut self,
+        idx: usize,
+        value: &A,
+    ) {
+        value.encode_var_ule_write(self.0.get_bytes_at_mut(LEN as u32, idx))
+    }
+
+    /// Validate field at `index` to see if it is a valid `T` VarULE type
+    ///
+    /// # Safety
+    ///
+    /// - `index` must be in range
+    #[inline]
+    pub unsafe fn validate_field<T: VarULE + ?Sized>(&self, index: usize) -> Result<(), UleError> {
+        T::validate_bytes(self.0.get_unchecked(LEN as u32, index))
+    }
+
+    /// Get field at `index` as a value of type T
+    ///
+    /// # Safety
+    ///
+    /// - `index` must be in range
+    /// - Element at `index` must have been created with the VarULE type T
+    #[inline]
+    pub unsafe fn get_field<T: VarULE + ?Sized>(&self, index: usize) -> &T {
+        T::from_bytes_unchecked(self.0.get_unchecked(LEN as u32, index))
+    }
+
+    /// Construct from a byte slice
+    ///
+    /// # Safety
+    /// - byte slice must be a valid VarZeroLengthlessSlice<[u8], Format> with length LEN
+    #[inline]
+    pub unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        // &Self is transparent over &VZS<..> with the right format
+        mem::transmute(<VarZeroLengthlessSlice<[u8], Format>>::from_bytes_unchecked(bytes))
+    }
+
+    /// Get the bytes behind this value
+    pub fn as_bytes(&self) -> &[u8] {
+        self.0.as_bytes()
+    }
+}
+
+impl<const LEN: usize, Format: VarZeroVecFormat> fmt::Debug for MultiFieldsULE<LEN, Format> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "MultiFieldsULE<{LEN}>({:?})", self.0.as_bytes())
+    }
+}
+/// This lets us conveniently use the EncodeAsVarULE functionality to create
+/// `VarZeroVec<[u8]>`s that have the right amount of space for elements
+/// without having to duplicate any unsafe code
+#[repr(transparent)]
+struct BlankSliceEncoder(usize);
+
+unsafe impl EncodeAsVarULE<[u8]> for BlankSliceEncoder {
+    fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+        // unnecessary if the other two are implemented
+        unreachable!()
+    }
+
+    #[inline]
+    fn encode_var_ule_len(&self) -> usize {
+        self.0
+    }
+
+    #[inline]
+    fn encode_var_ule_write(&self, _dst: &mut [u8]) {
+        // do nothing
+    }
+}
+
+// Safety (based on the safety checklist on the VarULE trait):
+//  1. MultiFieldsULE does not include any uninitialized or padding bytes (achieved by being transparent over a VarULE type)
+//  2. MultiFieldsULE is aligned to 1 byte (achieved by being transparent over a VarULE type)
+//  3. The impl of `validate_bytes()` returns an error if any byte is not valid.
+//  4. The impl of `validate_bytes()` returns an error if the slice cannot be used in its entirety
+//  5. The impl of `from_bytes_unchecked()` returns a reference to the same data.
+//  6. All other methods are defaulted
+//  7. `MultiFieldsULE` byte equality is semantic equality (achieved by being transparent over a VarULE type)
+unsafe impl<const LEN: usize, Format: VarZeroVecFormat> VarULE for MultiFieldsULE<LEN, Format> {
+    /// Note: MultiFieldsULE is usually used in cases where one should be calling .validate_field() directly for
+    /// each field, rather than using the regular VarULE impl.
+    ///
+    /// This impl exists so that EncodeAsVarULE can work.
+    #[inline]
+    fn validate_bytes(slice: &[u8]) -> Result<(), UleError> {
+        <VarZeroLengthlessSlice<[u8], Format>>::parse_bytes(LEN as u32, slice).map(|_| ())
+    }
+
+    #[inline]
+    unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        // &Self is transparent over &VZS<..>
+        mem::transmute(<VarZeroLengthlessSlice<[u8], Format>>::from_bytes_unchecked(bytes))
+    }
+}
diff --git a/vendor/zerovec/src/ule/niche.rs b/vendor/zerovec/src/ule/niche.rs
new file mode 100644
index 00000000..4e81e3d5
--- /dev/null
+++ b/vendor/zerovec/src/ule/niche.rs
@@ -0,0 +1,206 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::{marker::Copy, mem::size_of};
+
+#[cfg(feature = "alloc")]
+use crate::map::ZeroMapKV;
+#[cfg(feature = "alloc")]
+use crate::{ZeroSlice, ZeroVec};
+
+use super::{AsULE, ULE};
+
+/// The [`ULE`] types implementing this trait guarantee that [`NicheBytes::NICHE_BIT_PATTERN`]
+/// can never occur as a valid byte representation of the type.
+///
+/// Guarantees for a valid implementation.
+/// 1. N must be equal to `core::mem::sizeo_of::<Self>()` or else it will
+///    cause panics.
+/// 2. The bit pattern [`NicheBytes::NICHE_BIT_PATTERN`] must not be incorrect as it would lead to
+///    weird behaviour.
+/// 3. The abstractions built on top of this trait must panic on an invalid N.
+/// 4. The abstractions built on this trait that use type punning must ensure that type being
+///    punned is [`ULE`].
+pub trait NicheBytes<const N: usize> {
+    const NICHE_BIT_PATTERN: [u8; N];
+}
+
+/// [`ULE`] type for [`NichedOption<U,N>`] where U implements [`NicheBytes`].
+/// The invalid bit pattern is used as the niche.
+///
+/// This uses 1 byte less than [`crate::ule::OptionULE<U>`] to represent [`NichedOption<U,N>`].
+///
+/// # Example
+///
+/// ```
+/// use core::num::NonZeroI8;
+/// use zerovec::ule::NichedOption;
+/// use zerovec::ZeroVec;
+///
+/// let bytes = &[0x00, 0x01, 0x02, 0x00];
+/// let zv_no: ZeroVec<NichedOption<NonZeroI8, 1>> =
+///     ZeroVec::parse_bytes(bytes).expect("Unable to parse as NichedOption.");
+///
+/// assert_eq!(zv_no.get(0).map(|e| e.0), Some(None));
+/// assert_eq!(zv_no.get(1).map(|e| e.0), Some(NonZeroI8::new(1)));
+/// assert_eq!(zv_no.get(2).map(|e| e.0), Some(NonZeroI8::new(2)));
+/// assert_eq!(zv_no.get(3).map(|e| e.0), Some(None));
+/// ```
+// Invariants:
+// The union stores [`NicheBytes::NICHE_BIT_PATTERN`] when None.
+// Any other bit pattern is a valid.
+#[repr(C)]
+pub union NichedOptionULE<U: NicheBytes<N> + ULE, const N: usize> {
+    /// Invariant: The value is `niche` only if the bytes equal NICHE_BIT_PATTERN.
+    niche: [u8; N],
+    /// Invariant: The value is `valid` if the `niche` field does not match NICHE_BIT_PATTERN.
+    valid: U,
+}
+
+impl<U: NicheBytes<N> + ULE + core::fmt::Debug, const N: usize> core::fmt::Debug
+    for NichedOptionULE<U, N>
+{
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        self.get().fmt(f)
+    }
+}
+
+impl<U: NicheBytes<N> + ULE, const N: usize> NichedOptionULE<U, N> {
+    /// New `NichedOptionULE<U, N>` from `Option<U>`
+    pub fn new(opt: Option<U>) -> Self {
+        assert!(N == core::mem::size_of::<U>());
+        match opt {
+            Some(u) => Self { valid: u },
+            None => Self {
+                niche: <U as NicheBytes<N>>::NICHE_BIT_PATTERN,
+            },
+        }
+    }
+
+    /// Convert to an `Option<U>`
+    pub fn get(self) -> Option<U> {
+        // Safety: The union stores NICHE_BIT_PATTERN when None otherwise a valid U
+        unsafe {
+            if self.niche == <U as NicheBytes<N>>::NICHE_BIT_PATTERN {
+                None
+            } else {
+                Some(self.valid)
+            }
+        }
+    }
+
+    /// Borrows as an `Option<&U>`.
+    pub fn as_ref(&self) -> Option<&U> {
+        // Safety: The union stores NICHE_BIT_PATTERN when None otherwise a valid U
+        unsafe {
+            if self.niche == <U as NicheBytes<N>>::NICHE_BIT_PATTERN {
+                None
+            } else {
+                Some(&self.valid)
+            }
+        }
+    }
+}
+
+impl<U: NicheBytes<N> + ULE, const N: usize> Copy for NichedOptionULE<U, N> {}
+
+impl<U: NicheBytes<N> + ULE, const N: usize> Clone for NichedOptionULE<U, N> {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+
+impl<U: NicheBytes<N> + ULE + PartialEq, const N: usize> PartialEq for NichedOptionULE<U, N> {
+    fn eq(&self, other: &Self) -> bool {
+        self.get().eq(&other.get())
+    }
+}
+
+impl<U: NicheBytes<N> + ULE + Eq, const N: usize> Eq for NichedOptionULE<U, N> {}
+
+/// Safety for ULE trait
+/// 1. NichedOptionULE does not have any padding bytes due to `#[repr(C)]` on a struct
+///    containing only ULE fields.
+///    NichedOptionULE either contains NICHE_BIT_PATTERN or valid U byte sequences.
+///    In both cases the data is initialized.
+/// 2. NichedOptionULE is aligned to 1 byte due to `#[repr(C, packed)]` on a struct containing only
+///    ULE fields.
+/// 3. validate_bytes impl returns an error if invalid bytes are encountered.
+/// 4. validate_bytes impl returns an error there are extra bytes.
+/// 5. The other ULE methods are left to their default impl.
+/// 6. NichedOptionULE equality is based on ULE equality of the subfield, assuming that NicheBytes
+///    has been implemented correctly (this is a correctness but not a safety guarantee).
+unsafe impl<U: NicheBytes<N> + ULE, const N: usize> ULE for NichedOptionULE<U, N> {
+    fn validate_bytes(bytes: &[u8]) -> Result<(), crate::ule::UleError> {
+        let size = size_of::<Self>();
+        // The implemention is only correct if NICHE_BIT_PATTERN has same number of bytes as the
+        // type.
+        debug_assert!(N == core::mem::size_of::<U>());
+
+        // The bytes should fully transmute to a collection of Self
+        if bytes.len() % size != 0 {
+            return Err(crate::ule::UleError::length::<Self>(bytes.len()));
+        }
+        bytes.chunks(size).try_for_each(|chunk| {
+            // Associated const cannot be referenced in a pattern
+            // https://doc.rust-lang.org/error-index.html#E0158
+            if chunk == <U as NicheBytes<N>>::NICHE_BIT_PATTERN {
+                Ok(())
+            } else {
+                U::validate_bytes(chunk)
+            }
+        })
+    }
+}
+
+/// Optional type which uses [`NichedOptionULE<U,N>`] as ULE type.
+///
+/// The implementors guarantee that `N == core::mem::size_of::<Self>()`
+/// [`repr(transparent)`] guarantees that the layout is same as [`Option<U>`]
+#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
+#[repr(transparent)]
+#[allow(clippy::exhaustive_structs)] // newtype
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+pub struct NichedOption<U, const N: usize>(pub Option<U>);
+
+impl<U, const N: usize> Default for NichedOption<U, N> {
+    fn default() -> Self {
+        Self(None)
+    }
+}
+
+impl<U: AsULE, const N: usize> AsULE for NichedOption<U, N>
+where
+    U::ULE: NicheBytes<N>,
+{
+    type ULE = NichedOptionULE<U::ULE, N>;
+
+    fn to_unaligned(self) -> Self::ULE {
+        NichedOptionULE::new(self.0.map(U::to_unaligned))
+    }
+
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        Self(unaligned.get().map(U::from_unaligned))
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'a, T: AsULE + 'static, const N: usize> ZeroMapKV<'a> for NichedOption<T, N>
+where
+    T::ULE: NicheBytes<N>,
+{
+    type Container = ZeroVec<'a, NichedOption<T, N>>;
+    type Slice = ZeroSlice<NichedOption<T, N>>;
+    type GetType = <NichedOption<T, N> as AsULE>::ULE;
+    type OwnedType = Self;
+}
+
+impl<T, const N: usize> IntoIterator for NichedOption<T, N> {
+    type IntoIter = <Option<T> as IntoIterator>::IntoIter;
+    type Item = T;
+
+    fn into_iter(self) -> Self::IntoIter {
+        self.0.into_iter()
+    }
+}
diff --git a/vendor/zerovec/src/ule/option.rs b/vendor/zerovec/src/ule/option.rs
new file mode 100644
index 00000000..353e4418
--- /dev/null
+++ b/vendor/zerovec/src/ule/option.rs
@@ -0,0 +1,264 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use core::cmp::Ordering;
+use core::marker::PhantomData;
+use core::mem::{self, MaybeUninit};
+
+/// This type is the [`ULE`] type for `Option<U>` where `U` is a [`ULE`] type
+///
+/// # Example
+///
+/// ```rust
+/// use zerovec::ZeroVec;
+///
+/// let z = ZeroVec::alloc_from_slice(&[
+///     Some('a'),
+///     Some('á'),
+///     Some('ø'),
+///     None,
+///     Some('ł'),
+/// ]);
+///
+/// assert_eq!(z.get(2), Some(Some('ø')));
+/// assert_eq!(z.get(3), Some(None));
+/// ```
+// Invariants:
+// The MaybeUninit is zeroed when None (bool = false),
+// and is valid when Some (bool = true)
+#[repr(C, packed)]
+pub struct OptionULE<U>(bool, MaybeUninit<U>);
+
+impl<U: Copy> OptionULE<U> {
+    /// Obtain this as an `Option<T>`
+    pub fn get(self) -> Option<U> {
+        if self.0 {
+            unsafe {
+                // safety: self.0 is true so the MaybeUninit is valid
+                Some(self.1.assume_init())
+            }
+        } else {
+            None
+        }
+    }
+
+    /// Construct an `OptionULE<U>` from an equivalent `Option<T>`
+    pub fn new(opt: Option<U>) -> Self {
+        if let Some(inner) = opt {
+            Self(true, MaybeUninit::new(inner))
+        } else {
+            Self(false, MaybeUninit::zeroed())
+        }
+    }
+}
+
+impl<U: Copy + core::fmt::Debug> core::fmt::Debug for OptionULE<U> {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        self.get().fmt(f)
+    }
+}
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. OptionULE does not include any uninitialized or padding bytes.
+//     (achieved by `#[repr(C, packed)]` on a struct containing only ULE fields,
+//     in the context of this impl. The MaybeUninit is valid for all byte sequences, and we only generate
+///    zeroed or valid-T byte sequences to fill it)
+//  2. OptionULE is aligned to 1 byte.
+//     (achieved by `#[repr(C, packed)]` on a struct containing only ULE fields, in the context of this impl)
+//  3. The impl of validate_bytes() returns an error if any byte is not valid.
+//  4. The impl of validate_bytes() returns an error if there are extra bytes.
+//  5. The other ULE methods use the default impl.
+//  6. OptionULE byte equality is semantic equality by relying on the ULE equality
+//     invariant on the subfields
+unsafe impl<U: ULE> ULE for OptionULE<U> {
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        let size = mem::size_of::<Self>();
+        if bytes.len() % size != 0 {
+            return Err(UleError::length::<Self>(bytes.len()));
+        }
+        for chunk in bytes.chunks(size) {
+            #[expect(clippy::indexing_slicing)] // `chunk` will have enough bytes to fit Self
+            match chunk[0] {
+                // https://doc.rust-lang.org/reference/types/boolean.html
+                // Rust booleans are always size 1, align 1 values with valid bit patterns 0x0 or 0x1
+                0 => {
+                    if !chunk[1..].iter().all(|x| *x == 0) {
+                        return Err(UleError::parse::<Self>());
+                    }
+                }
+                1 => U::validate_bytes(&chunk[1..])?,
+                _ => return Err(UleError::parse::<Self>()),
+            }
+        }
+        Ok(())
+    }
+}
+
+impl<T: AsULE> AsULE for Option<T> {
+    type ULE = OptionULE<T::ULE>;
+    fn to_unaligned(self) -> OptionULE<T::ULE> {
+        OptionULE::new(self.map(T::to_unaligned))
+    }
+
+    fn from_unaligned(other: OptionULE<T::ULE>) -> Self {
+        other.get().map(T::from_unaligned)
+    }
+}
+
+impl<U: Copy> Copy for OptionULE<U> {}
+
+impl<U: Copy> Clone for OptionULE<U> {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+
+impl<U: Copy + PartialEq> PartialEq for OptionULE<U> {
+    fn eq(&self, other: &Self) -> bool {
+        self.get().eq(&other.get())
+    }
+}
+
+impl<U: Copy + Eq> Eq for OptionULE<U> {}
+
+/// A type allowing one to represent `Option<U>` for [`VarULE`] `U` types.
+///
+/// ```rust
+/// use zerovec::ule::OptionVarULE;
+/// use zerovec::VarZeroVec;
+///
+/// let mut zv: VarZeroVec<OptionVarULE<str>> = VarZeroVec::new();
+///
+/// zv.make_mut().push(&None::<&str>);
+/// zv.make_mut().push(&Some("hello"));
+/// zv.make_mut().push(&Some("world"));
+/// zv.make_mut().push(&None::<&str>);
+///
+/// assert_eq!(zv.get(0).unwrap().as_ref(), None);
+/// assert_eq!(zv.get(1).unwrap().as_ref(), Some("hello"));
+/// ```
+// The slice field is empty when None (bool = false),
+// and is a valid T when Some (bool = true)
+#[repr(C, packed)]
+pub struct OptionVarULE<U: VarULE + ?Sized>(PhantomData<U>, bool, [u8]);
+
+impl<U: VarULE + ?Sized> OptionVarULE<U> {
+    /// Obtain this as an `Option<&U>`
+    pub fn as_ref(&self) -> Option<&U> {
+        if self.1 {
+            unsafe {
+                // Safety: byte field is a valid T if boolean field is true
+                Some(U::from_bytes_unchecked(&self.2))
+            }
+        } else {
+            None
+        }
+    }
+}
+
+impl<U: VarULE + ?Sized + core::fmt::Debug> core::fmt::Debug for OptionVarULE<U> {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        self.as_ref().fmt(f)
+    }
+}
+
+// Safety (based on the safety checklist on the VarULE trait):
+//  1. OptionVarULE<T> does not include any uninitialized or padding bytes
+//     (achieved by being repr(C, packed) on ULE types)
+//  2. OptionVarULE<T> is aligned to 1 byte (achieved by being repr(C, packed) on ULE types)
+//  3. The impl of `validate_bytes()` returns an error if any byte is not valid.
+//  4. The impl of `validate_bytes()` returns an error if the slice cannot be used in its entirety
+//  5. The impl of `from_bytes_unchecked()` returns a reference to the same data.
+//  6. All other methods are defaulted
+//  7. OptionVarULE<T> byte equality is semantic equality (achieved by being an aggregate)
+unsafe impl<U: VarULE + ?Sized> VarULE for OptionVarULE<U> {
+    #[inline]
+    fn validate_bytes(slice: &[u8]) -> Result<(), UleError> {
+        if slice.is_empty() {
+            return Err(UleError::length::<Self>(slice.len()));
+        }
+        #[expect(clippy::indexing_slicing)] // slice already verified to be nonempty
+        match slice[0] {
+            // https://doc.rust-lang.org/reference/types/boolean.html
+            // Rust booleans are always size 1, align 1 values with valid bit patterns 0x0 or 0x1
+            0 => {
+                if slice.len() != 1 {
+                    Err(UleError::length::<Self>(slice.len()))
+                } else {
+                    Ok(())
+                }
+            }
+            1 => U::validate_bytes(&slice[1..]),
+            _ => Err(UleError::parse::<Self>()),
+        }
+    }
+
+    #[inline]
+    unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        let entire_struct_as_slice: *const [u8] =
+            ::core::ptr::slice_from_raw_parts(bytes.as_ptr(), bytes.len() - 1);
+        &*(entire_struct_as_slice as *const Self)
+    }
+}
+
+unsafe impl<T, U> EncodeAsVarULE<OptionVarULE<U>> for Option<T>
+where
+    T: EncodeAsVarULE<U>,
+    U: VarULE + ?Sized,
+{
+    fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+        // unnecessary if the other two are implemented
+        unreachable!()
+    }
+
+    #[inline]
+    fn encode_var_ule_len(&self) -> usize {
+        if let Some(ref inner) = *self {
+            // slice + boolean
+            1 + inner.encode_var_ule_len()
+        } else {
+            // boolean + empty slice
+            1
+        }
+    }
+
+    #[expect(clippy::indexing_slicing)] // This method is allowed to panic when lengths are invalid
+    fn encode_var_ule_write(&self, dst: &mut [u8]) {
+        if let Some(ref inner) = *self {
+            debug_assert!(
+                !dst.is_empty(),
+                "OptionVarULE must have at least one byte when Some"
+            );
+            dst[0] = 1;
+            inner.encode_var_ule_write(&mut dst[1..]);
+        } else {
+            debug_assert!(
+                dst.len() == 1,
+                "OptionVarULE must have exactly one byte when None"
+            );
+            dst[0] = 0;
+        }
+    }
+}
+
+impl<U: VarULE + ?Sized + PartialEq> PartialEq for OptionVarULE<U> {
+    fn eq(&self, other: &Self) -> bool {
+        self.as_ref().eq(&other.as_ref())
+    }
+}
+
+impl<U: VarULE + ?Sized + Eq> Eq for OptionVarULE<U> {}
+
+impl<U: VarULE + ?Sized + PartialOrd> PartialOrd for OptionVarULE<U> {
+    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+        self.as_ref().partial_cmp(&other.as_ref())
+    }
+}
+
+impl<U: VarULE + ?Sized + Ord> Ord for OptionVarULE<U> {
+    fn cmp(&self, other: &Self) -> Ordering {
+        self.as_ref().cmp(&other.as_ref())
+    }
+}
diff --git a/vendor/zerovec/src/ule/plain.rs b/vendor/zerovec/src/ule/plain.rs
new file mode 100644
index 00000000..233d8c7e
--- /dev/null
+++ b/vendor/zerovec/src/ule/plain.rs
@@ -0,0 +1,399 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#![allow(clippy::upper_case_acronyms)]
+//! ULE implementation for Plain Old Data types, including all sized integers.
+
+use super::*;
+use crate::impl_ule_from_array;
+use crate::ZeroSlice;
+use core::num::{NonZeroI8, NonZeroU8};
+
+/// A u8 array of little-endian data with infallible conversions to and from &[u8].
+#[repr(transparent)]
+#[derive(Debug, PartialEq, Eq, Clone, Copy, PartialOrd, Ord, Hash)]
+#[allow(clippy::exhaustive_structs)] // newtype
+pub struct RawBytesULE<const N: usize>(pub [u8; N]);
+
+impl<const N: usize> RawBytesULE<N> {
+    #[inline]
+    pub fn as_bytes(&self) -> &[u8] {
+        &self.0
+    }
+
+    #[inline]
+    pub fn from_bytes_unchecked_mut(bytes: &mut [u8]) -> &mut [Self] {
+        let data = bytes.as_mut_ptr();
+        let len = bytes.len() / N;
+        // Safe because Self is transparent over [u8; N]
+        unsafe { core::slice::from_raw_parts_mut(data as *mut Self, len) }
+    }
+}
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. RawBytesULE does not include any uninitialized or padding bytes.
+//     (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+//  2. RawBytesULE is aligned to 1 byte.
+//     (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+//  3. The impl of validate_bytes() returns an error if any byte is not valid (never).
+//  4. The impl of validate_bytes() returns an error if there are leftover bytes.
+//  5. The other ULE methods use the default impl.
+//  6. RawBytesULE byte equality is semantic equality
+unsafe impl<const N: usize> ULE for RawBytesULE<N> {
+    #[inline]
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        if bytes.len() % N == 0 {
+            // Safe because Self is transparent over [u8; N]
+            Ok(())
+        } else {
+            Err(UleError::length::<Self>(bytes.len()))
+        }
+    }
+}
+
+impl<const N: usize> From<[u8; N]> for RawBytesULE<N> {
+    #[inline]
+    fn from(le_bytes: [u8; N]) -> Self {
+        Self(le_bytes)
+    }
+}
+
+macro_rules! impl_byte_slice_size {
+    ($unsigned:ty, $size:literal) => {
+        impl RawBytesULE<$size> {
+            #[doc = concat!("Gets this `RawBytesULE` as a `", stringify!($unsigned), "`. This is equivalent to calling [`AsULE::from_unaligned()`] on the appropriately sized type.")]
+            #[inline]
+            pub fn as_unsigned_int(&self) -> $unsigned {
+                <$unsigned as $crate::ule::AsULE>::from_unaligned(*self)
+            }
+
+            #[doc = concat!("Converts a `", stringify!($unsigned), "` to a `RawBytesULE`. This is equivalent to calling [`AsULE::to_unaligned()`] on the appropriately sized type.")]
+            #[inline]
+            pub const fn from_aligned(value: $unsigned) -> Self {
+                Self(value.to_le_bytes())
+            }
+
+            impl_ule_from_array!(
+                $unsigned,
+                RawBytesULE<$size>,
+                RawBytesULE([0; $size])
+            );
+        }
+    };
+}
+
+macro_rules! impl_const_constructors {
+    ($base:ty, $size:literal) => {
+        impl ZeroSlice<$base> {
+            /// This function can be used for constructing ZeroVecs in a const context, avoiding
+            /// parsing checks.
+            ///
+            /// This cannot be generic over T because of current limitations in `const`, but if
+            /// this method is needed in a non-const context, check out [`ZeroSlice::parse_bytes()`]
+            /// instead.
+            ///
+            /// See [`ZeroSlice::cast()`] for an example.
+            pub const fn try_from_bytes(bytes: &[u8]) -> Result<&Self, UleError> {
+                let len = bytes.len();
+                #[allow(clippy::modulo_one)]
+                if len % $size == 0 {
+                    Ok(unsafe { Self::from_bytes_unchecked(bytes) })
+                } else {
+                    Err(UleError::InvalidLength {
+                        ty: concat!("<const construct: ", $size, ">"),
+                        len,
+                    })
+                }
+            }
+        }
+    };
+}
+
+macro_rules! impl_byte_slice_type {
+    ($single_fn:ident, $type:ty, $size:literal) => {
+        impl From<$type> for RawBytesULE<$size> {
+            #[inline]
+            fn from(value: $type) -> Self {
+                Self(value.to_le_bytes())
+            }
+        }
+        impl AsULE for $type {
+            type ULE = RawBytesULE<$size>;
+            #[inline]
+            fn to_unaligned(self) -> Self::ULE {
+                RawBytesULE(self.to_le_bytes())
+            }
+            #[inline]
+            fn from_unaligned(unaligned: Self::ULE) -> Self {
+                <$type>::from_le_bytes(unaligned.0)
+            }
+        }
+        // EqULE is true because $type and RawBytesULE<$size>
+        // have the same byte sequence on little-endian
+        unsafe impl EqULE for $type {}
+
+        impl RawBytesULE<$size> {
+            pub const fn $single_fn(v: $type) -> Self {
+                RawBytesULE(v.to_le_bytes())
+            }
+        }
+    };
+}
+
+macro_rules! impl_byte_slice_unsigned_type {
+    ($type:ty, $size:literal) => {
+        impl_byte_slice_type!(from_unsigned, $type, $size);
+    };
+}
+
+macro_rules! impl_byte_slice_signed_type {
+    ($type:ty, $size:literal) => {
+        impl_byte_slice_type!(from_signed, $type, $size);
+    };
+}
+
+impl_byte_slice_size!(u16, 2);
+impl_byte_slice_size!(u32, 4);
+impl_byte_slice_size!(u64, 8);
+impl_byte_slice_size!(u128, 16);
+
+impl_byte_slice_unsigned_type!(u16, 2);
+impl_byte_slice_unsigned_type!(u32, 4);
+impl_byte_slice_unsigned_type!(u64, 8);
+impl_byte_slice_unsigned_type!(u128, 16);
+
+impl_byte_slice_signed_type!(i16, 2);
+impl_byte_slice_signed_type!(i32, 4);
+impl_byte_slice_signed_type!(i64, 8);
+impl_byte_slice_signed_type!(i128, 16);
+
+impl_const_constructors!(u8, 1);
+impl_const_constructors!(u16, 2);
+impl_const_constructors!(u32, 4);
+impl_const_constructors!(u64, 8);
+impl_const_constructors!(u128, 16);
+
+// Note: The f32 and f64 const constructors currently have limited use because
+// `f32::to_le_bytes` is not yet const.
+
+impl_const_constructors!(bool, 1);
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. u8 does not include any uninitialized or padding bytes.
+//  2. u8 is aligned to 1 byte.
+//  3. The impl of validate_bytes() returns an error if any byte is not valid (never).
+//  4. The impl of validate_bytes() returns an error if there are leftover bytes (never).
+//  5. The other ULE methods use the default impl.
+//  6. u8 byte equality is semantic equality
+unsafe impl ULE for u8 {
+    #[inline]
+    fn validate_bytes(_bytes: &[u8]) -> Result<(), UleError> {
+        Ok(())
+    }
+}
+
+impl AsULE for u8 {
+    type ULE = Self;
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self
+    }
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        unaligned
+    }
+}
+
+// EqULE is true because u8 is its own ULE.
+unsafe impl EqULE for u8 {}
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. NonZeroU8 does not include any uninitialized or padding bytes.
+//  2. NonZeroU8 is aligned to 1 byte.
+//  3. The impl of validate_bytes() returns an error if any byte is not valid (0x00).
+//  4. The impl of validate_bytes() returns an error if there are leftover bytes (never).
+//  5. The other ULE methods use the default impl.
+//  6. NonZeroU8 byte equality is semantic equality
+unsafe impl ULE for NonZeroU8 {
+    #[inline]
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        bytes.iter().try_for_each(|b| {
+            if *b == 0x00 {
+                Err(UleError::parse::<Self>())
+            } else {
+                Ok(())
+            }
+        })
+    }
+}
+
+impl AsULE for NonZeroU8 {
+    type ULE = Self;
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self
+    }
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        unaligned
+    }
+}
+
+unsafe impl EqULE for NonZeroU8 {}
+
+impl NicheBytes<1> for NonZeroU8 {
+    const NICHE_BIT_PATTERN: [u8; 1] = [0x00];
+}
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. i8 does not include any uninitialized or padding bytes.
+//  2. i8 is aligned to 1 byte.
+//  3. The impl of validate_bytes() returns an error if any byte is not valid (never).
+//  4. The impl of validate_bytes() returns an error if there are leftover bytes (never).
+//  5. The other ULE methods use the default impl.
+//  6. i8 byte equality is semantic equality
+unsafe impl ULE for i8 {
+    #[inline]
+    fn validate_bytes(_bytes: &[u8]) -> Result<(), UleError> {
+        Ok(())
+    }
+}
+
+impl AsULE for i8 {
+    type ULE = Self;
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self
+    }
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        unaligned
+    }
+}
+
+// EqULE is true because i8 is its own ULE.
+unsafe impl EqULE for i8 {}
+
+impl AsULE for NonZeroI8 {
+    type ULE = NonZeroU8;
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        // Safety: NonZeroU8 and NonZeroI8 have same size
+        unsafe { core::mem::transmute(self) }
+    }
+
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        // Safety: NonZeroU8 and NonZeroI8 have same size
+        unsafe { core::mem::transmute(unaligned) }
+    }
+}
+
+// These impls are actually safe and portable due to Rust always using IEEE 754, see the documentation
+// on f32::from_bits: https://doc.rust-lang.org/stable/std/primitive.f32.html#method.from_bits
+//
+// The only potential problem is that some older platforms treat signaling NaNs differently. This is
+// still quite portable, signalingness is not typically super important.
+
+impl AsULE for f32 {
+    type ULE = RawBytesULE<4>;
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self.to_bits().to_unaligned()
+    }
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        Self::from_bits(u32::from_unaligned(unaligned))
+    }
+}
+
+impl AsULE for f64 {
+    type ULE = RawBytesULE<8>;
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self.to_bits().to_unaligned()
+    }
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        Self::from_bits(u64::from_unaligned(unaligned))
+    }
+}
+
+// The from_bits documentation mentions that they have identical byte representations to integers
+// and EqULE only cares about LE systems
+unsafe impl EqULE for f32 {}
+unsafe impl EqULE for f64 {}
+
+// The bool impl is not as efficient as it could be
+// We can, in the future, have https://github.com/unicode-org/icu4x/blob/main/utils/zerovec/design_doc.md#bitpacking
+// for better bitpacking
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. bool does not include any uninitialized or padding bytes (the remaining 7 bytes in bool are by definition zero)
+//  2. bool is aligned to 1 byte.
+//  3. The impl of validate_bytes() returns an error if any byte is not valid (bytes that are not 0 or 1).
+//  4. The impl of validate_bytes() returns an error if there are leftover bytes (never).
+//  5. The other ULE methods use the default impl.
+//  6. bool byte equality is semantic equality
+unsafe impl ULE for bool {
+    #[inline]
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        for byte in bytes {
+            // https://doc.rust-lang.org/reference/types/boolean.html
+            // Rust booleans are always size 1, align 1 values with valid bit patterns 0x0 or 0x1
+            if *byte > 1 {
+                return Err(UleError::parse::<Self>());
+            }
+        }
+        Ok(())
+    }
+}
+
+impl AsULE for bool {
+    type ULE = Self;
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self
+    }
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        unaligned
+    }
+}
+
+// EqULE is true because bool is its own ULE.
+unsafe impl EqULE for bool {}
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. () does not include any uninitialized or padding bytes (it has no bytes)
+//  2. () is a ZST that is safe to construct
+//  3. The impl of validate_bytes() returns an error if any byte is not valid (any byte).
+//  4. The impl of validate_bytes() returns an error if there are leftover bytes (always).
+//  5. The other ULE methods use the default impl.
+//  6. () byte equality is semantic equality
+unsafe impl ULE for () {
+    #[inline]
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        if bytes.is_empty() {
+            Ok(())
+        } else {
+            Err(UleError::length::<Self>(bytes.len()))
+        }
+    }
+}
+
+impl AsULE for () {
+    type ULE = Self;
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self
+    }
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        unaligned
+    }
+}
+
+// EqULE is true because () is its own ULE.
+unsafe impl EqULE for () {}
diff --git a/vendor/zerovec/src/ule/slices.rs b/vendor/zerovec/src/ule/slices.rs
new file mode 100644
index 00000000..ace212a4
--- /dev/null
+++ b/vendor/zerovec/src/ule/slices.rs
@@ -0,0 +1,102 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::ule::*;
+
+// Safety (based on the safety checklist on the ULE trait):
+//  1. [T; N] does not include any uninitialized or padding bytes since T is ULE
+//  2. [T; N] is aligned to 1 byte since T is ULE
+//  3. The impl of validate_bytes() returns an error if any byte is not valid.
+//  4. The impl of validate_bytes() returns an error if there are leftover bytes.
+//  5. The other ULE methods use the default impl.
+//  6. [T; N] byte equality is semantic equality since T is ULE
+unsafe impl<T: ULE, const N: usize> ULE for [T; N] {
+    #[inline]
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        // a slice of multiple Selfs is equivalent to just a larger slice of Ts
+        T::validate_bytes(bytes)
+    }
+}
+
+impl<T: AsULE, const N: usize> AsULE for [T; N] {
+    type ULE = [T::ULE; N];
+    #[inline]
+    fn to_unaligned(self) -> Self::ULE {
+        self.map(T::to_unaligned)
+    }
+    #[inline]
+    fn from_unaligned(unaligned: Self::ULE) -> Self {
+        unaligned.map(T::from_unaligned)
+    }
+}
+
+unsafe impl<T: EqULE, const N: usize> EqULE for [T; N] {}
+
+// Safety (based on the safety checklist on the VarULE trait):
+//  1. str does not include any uninitialized or padding bytes.
+//  2. str is aligned to 1 byte.
+//  3. The impl of `validate_bytes()` returns an error if any byte is not valid.
+//  4. The impl of `validate_bytes()` returns an error if the slice cannot be used in its entirety
+//  5. The impl of `from_bytes_unchecked()` returns a reference to the same data.
+//  6. `parse_bytes()` is equivalent to `validate_bytes()` followed by `from_bytes_unchecked()`
+//  7. str byte equality is semantic equality
+unsafe impl VarULE for str {
+    #[inline]
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        core::str::from_utf8(bytes).map_err(|_| UleError::parse::<Self>())?;
+        Ok(())
+    }
+
+    #[inline]
+    fn parse_bytes(bytes: &[u8]) -> Result<&Self, UleError> {
+        core::str::from_utf8(bytes).map_err(|_| UleError::parse::<Self>())
+    }
+    /// Invariant: must be safe to call when called on a slice that previously
+    /// succeeded with `parse_bytes`
+    #[inline]
+    unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        core::str::from_utf8_unchecked(bytes)
+    }
+}
+
+/// Note: VarULE is well-defined for all `[T]` where `T: ULE`, but [`ZeroSlice`] is more ergonomic
+/// when `T` is a low-level ULE type. For example:
+///
+/// ```no_run
+/// # use zerovec::ZeroSlice;
+/// # use zerovec::VarZeroVec;
+/// # use zerovec::ule::AsULE;
+/// // OK: [u8] is a useful type
+/// let _: VarZeroVec<[u8]> = unimplemented!();
+///
+/// // Technically works, but [u32::ULE] is not very useful
+/// let _: VarZeroVec<[<u32 as AsULE>::ULE]> = unimplemented!();
+///
+/// // Better: ZeroSlice<u32>
+/// let _: VarZeroVec<ZeroSlice<u32>> = unimplemented!();
+/// ```
+///
+/// [`ZeroSlice`]: crate::ZeroSlice
+// Safety (based on the safety checklist on the VarULE trait):
+//  1. [T] does not include any uninitialized or padding bytes (achieved by being a slice of a ULE type)
+//  2. [T] is aligned to 1 byte (achieved by being a slice of a ULE type)
+//  3. The impl of `validate_bytes()` returns an error if any byte is not valid.
+//  4. The impl of `validate_bytes()` returns an error if the slice cannot be used in its entirety
+//  5. The impl of `from_bytes_unchecked()` returns a reference to the same data.
+//  6. All other methods are defaulted
+//  7. `[T]` byte equality is semantic equality (achieved by being a slice of a ULE type)
+unsafe impl<T> VarULE for [T]
+where
+    T: ULE,
+{
+    #[inline]
+    fn validate_bytes(slice: &[u8]) -> Result<(), UleError> {
+        T::validate_bytes(slice)
+    }
+
+    #[inline]
+    unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        T::slice_from_bytes_unchecked(bytes)
+    }
+}
diff --git a/vendor/zerovec/src/ule/test_utils.rs b/vendor/zerovec/src/ule/test_utils.rs
new file mode 100644
index 00000000..c9df3b81
--- /dev/null
+++ b/vendor/zerovec/src/ule/test_utils.rs
@@ -0,0 +1,30 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+/// Take a VarULE type and serialize it both in human and machine readable contexts,
+/// and ensure it roundtrips correctly
+///
+/// Note that the concrete type may need to be explicitly specified to prevent issues with
+/// https://github.com/rust-lang/rust/issues/130180
+#[cfg(feature = "serde")]
+pub(crate) fn assert_serde_roundtrips<T>(var: &T)
+where
+    T: crate::ule::VarULE + ?Sized + serde::Serialize,
+    for<'a> Box<T>: serde::Deserialize<'a>,
+    for<'a> &'a T: serde::Deserialize<'a>,
+    T: core::fmt::Debug + PartialEq,
+{
+    let bincode = bincode::serialize(var).unwrap();
+    let deserialized: &T = bincode::deserialize(&bincode).unwrap();
+    let deserialized_box: Box<T> = bincode::deserialize(&bincode).unwrap();
+    assert_eq!(var, deserialized, "Single element roundtrips with bincode");
+    assert_eq!(
+        var, &*deserialized_box,
+        "Single element roundtrips with bincode"
+    );
+
+    let json = serde_json::to_string(var).unwrap();
+    let deserialized: Box<T> = serde_json::from_str(&json).unwrap();
+    assert_eq!(var, &*deserialized, "Single element roundtrips with serde");
+}
diff --git a/vendor/zerovec/src/ule/tuple.rs b/vendor/zerovec/src/ule/tuple.rs
new file mode 100644
index 00000000..b98333ce
--- /dev/null
+++ b/vendor/zerovec/src/ule/tuple.rs
@@ -0,0 +1,180 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! ULE impls for tuples.
+//!
+//! Rust does not guarantee the layout of tuples, so ZeroVec defines its own tuple ULE types.
+//!
+//! Impls are defined for tuples of up to 6 elements. For longer tuples, use a custom struct
+//! with [`#[make_ule]`](crate::make_ule).
+//!
+//! # Examples
+//!
+//! ```
+//! use zerovec::ZeroVec;
+//!
+//! // ZeroVec of tuples!
+//! let zerovec: ZeroVec<(u32, char)> = [(1, 'a'), (1234901, '啊'), (100, 'अ')]
+//!     .iter()
+//!     .copied()
+//!     .collect();
+//!
+//! assert_eq!(zerovec.get(1), Some((1234901, '啊')));
+//! ```
+
+use super::*;
+use core::fmt;
+use core::mem;
+
+macro_rules! tuple_ule {
+    ($name:ident, $len:literal, [ $($t:ident $i:tt),+ ]) => {
+        #[doc = concat!("ULE type for tuples with ", $len, " elements.")]
+        #[repr(C, packed)]
+        #[allow(clippy::exhaustive_structs)] // stable
+        pub struct $name<$($t),+>($(pub $t),+);
+
+        // Safety (based on the safety checklist on the ULE trait):
+        //  1. TupleULE does not include any uninitialized or padding bytes.
+        //     (achieved by `#[repr(C, packed)]` on a struct containing only ULE fields)
+        //  2. TupleULE is aligned to 1 byte.
+        //     (achieved by `#[repr(C, packed)]` on a struct containing only ULE fields)
+        //  3. The impl of validate_bytes() returns an error if any byte is not valid.
+        //  4. The impl of validate_bytes() returns an error if there are extra bytes.
+        //  5. The other ULE methods use the default impl.
+        //  6. TupleULE byte equality is semantic equality by relying on the ULE equality
+        //     invariant on the subfields
+        unsafe impl<$($t: ULE),+> ULE for $name<$($t),+> {
+            fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+                // expands to: 0size + mem::size_of::<A>() + mem::size_of::<B>();
+                let ule_bytes = 0usize $(+ mem::size_of::<$t>())+;
+                if bytes.len() % ule_bytes != 0 {
+                    return Err(UleError::length::<Self>(bytes.len()));
+                }
+                for chunk in bytes.chunks(ule_bytes) {
+                    let mut i = 0;
+                    $(
+                        let j = i;
+                        i += mem::size_of::<$t>();
+                        #[expect(clippy::indexing_slicing)] // length checked
+                        <$t>::validate_bytes(&chunk[j..i])?;
+                    )+
+                }
+                Ok(())
+            }
+        }
+
+        impl<$($t: AsULE),+> AsULE for ($($t),+) {
+            type ULE = $name<$(<$t>::ULE),+>;
+
+            #[inline]
+            fn to_unaligned(self) -> Self::ULE {
+                $name($(
+                    self.$i.to_unaligned()
+                ),+)
+            }
+
+            #[inline]
+            fn from_unaligned(unaligned: Self::ULE) -> Self {
+                ($(
+                    <$t>::from_unaligned(unaligned.$i)
+                ),+)
+            }
+        }
+
+        impl<$($t: fmt::Debug + ULE),+> fmt::Debug for $name<$($t),+> {
+            fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+                ($(self.$i),+).fmt(f)
+            }
+        }
+
+        // We need manual impls since `#[derive()]` is disallowed on packed types
+        impl<$($t: PartialEq + ULE),+> PartialEq for $name<$($t),+> {
+            fn eq(&self, other: &Self) -> bool {
+                ($(self.$i),+).eq(&($(other.$i),+))
+            }
+        }
+
+        impl<$($t: Eq + ULE),+> Eq for $name<$($t),+> {}
+
+        impl<$($t: PartialOrd + ULE),+> PartialOrd for $name<$($t),+> {
+            fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
+                ($(self.$i),+).partial_cmp(&($(other.$i),+))
+            }
+        }
+
+        impl<$($t: Ord + ULE),+> Ord for $name<$($t),+> {
+            fn cmp(&self, other: &Self) -> core::cmp::Ordering {
+                ($(self.$i),+).cmp(&($(other.$i),+))
+            }
+        }
+
+        impl<$($t: ULE),+> Clone for $name<$($t),+> {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+
+        impl<$($t: ULE),+> Copy for $name<$($t),+> {}
+
+        #[cfg(feature = "alloc")]
+        impl<'a, $($t: Ord + AsULE + 'static),+> crate::map::ZeroMapKV<'a> for ($($t),+) {
+            type Container = crate::ZeroVec<'a, ($($t),+)>;
+            type Slice = crate::ZeroSlice<($($t),+)>;
+            type GetType = $name<$(<$t>::ULE),+>;
+            type OwnedType = ($($t),+);
+        }
+    };
+}
+
+tuple_ule!(Tuple2ULE, "2", [ A 0, B 1 ]);
+tuple_ule!(Tuple3ULE, "3", [ A 0, B 1, C 2 ]);
+tuple_ule!(Tuple4ULE, "4", [ A 0, B 1, C 2, D 3 ]);
+tuple_ule!(Tuple5ULE, "5", [ A 0, B 1, C 2, D 3, E 4 ]);
+tuple_ule!(Tuple6ULE, "6", [ A 0, B 1, C 2, D 3, E 4, F 5 ]);
+
+#[test]
+fn test_pairule_validate() {
+    use crate::ZeroVec;
+    let vec: Vec<(u32, char)> = vec![(1, 'a'), (1234901, '啊'), (100, 'अ')];
+    let zerovec: ZeroVec<(u32, char)> = vec.iter().copied().collect();
+    let bytes = zerovec.as_bytes();
+    let zerovec2 = ZeroVec::parse_bytes(bytes).unwrap();
+    assert_eq!(zerovec, zerovec2);
+
+    // Test failed validation with a correctly sized but differently constrained tuple
+    // Note: 1234901 is not a valid char
+    let zerovec3 = ZeroVec::<(char, u32)>::parse_bytes(bytes);
+    assert!(zerovec3.is_err());
+}
+
+#[test]
+fn test_tripleule_validate() {
+    use crate::ZeroVec;
+    let vec: Vec<(u32, char, i8)> = vec![(1, 'a', -5), (1234901, '啊', 3), (100, 'अ', -127)];
+    let zerovec: ZeroVec<(u32, char, i8)> = vec.iter().copied().collect();
+    let bytes = zerovec.as_bytes();
+    let zerovec2 = ZeroVec::parse_bytes(bytes).unwrap();
+    assert_eq!(zerovec, zerovec2);
+
+    // Test failed validation with a correctly sized but differently constrained tuple
+    // Note: 1234901 is not a valid char
+    let zerovec3 = ZeroVec::<(char, i8, u32)>::parse_bytes(bytes);
+    assert!(zerovec3.is_err());
+}
+
+#[test]
+fn test_quadule_validate() {
+    use crate::ZeroVec;
+    let vec: Vec<(u32, char, i8, u16)> =
+        vec![(1, 'a', -5, 3), (1234901, '啊', 3, 11), (100, 'अ', -127, 0)];
+    let zerovec: ZeroVec<(u32, char, i8, u16)> = vec.iter().copied().collect();
+    let bytes = zerovec.as_bytes();
+    let zerovec2 = ZeroVec::parse_bytes(bytes).unwrap();
+    assert_eq!(zerovec, zerovec2);
+
+    // Test failed validation with a correctly sized but differently constrained tuple
+    // Note: 1234901 is not a valid char
+    let zerovec3 = ZeroVec::<(char, i8, u16, u32)>::parse_bytes(bytes);
+    assert!(zerovec3.is_err());
+}
diff --git a/vendor/zerovec/src/ule/tuplevar.rs b/vendor/zerovec/src/ule/tuplevar.rs
new file mode 100644
index 00000000..2f20f75a
--- /dev/null
+++ b/vendor/zerovec/src/ule/tuplevar.rs
@@ -0,0 +1,307 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! [`VarULE`] impls for tuples.
+//!
+//! This module exports [`Tuple2VarULE`], [`Tuple3VarULE`], ..., the corresponding [`VarULE`] types
+//! of tuples containing purely [`VarULE`] types.
+//!
+//! This can be paired with [`VarTupleULE`] to make arbitrary combinations of [`ULE`] and [`VarULE`] types.
+//!
+//! [`VarTupleULE`]: crate::ule::vartuple::VarTupleULE
+
+use super::*;
+use crate::varzerovec::{Index16, VarZeroVecFormat};
+use core::fmt;
+use core::marker::PhantomData;
+use core::mem;
+use zerofrom::ZeroFrom;
+
+macro_rules! tuple_varule {
+    // Invocation: Should be called like `tuple_ule!(Tuple2VarULE, 2, [ A a AX 0, B b BX 1 ])`
+    //
+    // $T is a generic name, $t is a lowercase version of it, $T_alt is an "alternate" name to use when we need two types referring
+    // to the same input field, $i is an index.
+    //
+    // $name is the name of the type, $len MUST be the total number of fields, and then $i must be an integer going from 0 to (n - 1) in sequence
+    // (This macro code can rely on $i < $len)
+    ($name:ident, $len:literal, [ $($T:ident $t:ident $T_alt: ident $i:tt),+ ]) => {
+        #[doc = concat!("VarULE type for tuples with ", $len, " elements. See module docs for more information")]
+        #[repr(transparent)]
+        #[allow(clippy::exhaustive_structs)] // stable
+        pub struct $name<$($T: ?Sized,)+ Format: VarZeroVecFormat = Index16> {
+            $($t: PhantomData<$T>,)+
+            // Safety invariant: Each "field" $i of the MultiFieldsULE is a valid instance of $t
+            //
+            // In other words, calling `.get_field::<$T>($i)` is always safe.
+            //
+            // This invariant is upheld when this type is constructed during VarULE parsing/validation
+            multi: MultiFieldsULE<$len, Format>
+        }
+
+        impl<$($T: VarULE + ?Sized,)+ Format: VarZeroVecFormat> $name<$($T,)+ Format> {
+            $(
+                #[doc = concat!("Get field ", $i, "of this tuple")]
+                pub fn $t(&self) -> &$T {
+                     // Safety: See invariant of `multi`.
+                    unsafe {
+                        self.multi.get_field::<$T>($i)
+                    }
+                }
+
+
+            )+
+        }
+
+        // # Safety
+        //
+        // ## Checklist
+        //
+        // Safety checklist for `VarULE`:
+        //
+        // 1. align(1): repr(transparent) around an align(1) VarULE type: MultiFieldsULE
+        // 2. No padding: see previous point
+        // 3. `validate_bytes` validates that this type is a valid MultiFieldsULE, and that each field is the correct type from the tuple.
+        // 4. `validate_bytes` checks length by deferring to the inner ULEs
+        // 5. `from_bytes_unchecked` returns a fat pointer to the bytes.
+        // 6. All other methods are left at their default impl.
+        // 7. The inner ULEs have byte equality, so this composition has byte equality.
+        unsafe impl<$($T: VarULE + ?Sized,)+ Format: VarZeroVecFormat> VarULE for $name<$($T,)+ Format>
+        {
+            fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+                // Safety: We validate that this type is the same kind of MultiFieldsULE (with $len, Format)
+                // as in the type def
+                let multi = <MultiFieldsULE<$len, Format> as VarULE>::parse_bytes(bytes)?;
+                $(
+                    // Safety invariant: $i < $len, from the macro invocation
+                    unsafe {
+                        multi.validate_field::<$T>($i)?;
+                    }
+                )+
+                Ok(())
+            }
+
+            unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+                 // Safety: We validate that this type is the same kind of MultiFieldsULE (with $len, Format)
+                // as in the type def
+                let multi = <MultiFieldsULE<$len, Format> as VarULE>::from_bytes_unchecked(bytes);
+
+                // This type is repr(transparent) over MultiFieldsULE<$len>, so its slices can be transmuted
+                // Field invariant upheld here: validate_bytes above validates every field for being the right type
+                mem::transmute::<&MultiFieldsULE<$len, Format>, &Self>(multi)
+            }
+        }
+
+        impl<$($T: fmt::Debug + VarULE + ?Sized,)+ Format: VarZeroVecFormat> fmt::Debug for $name<$($T,)+ Format> {
+            fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+                ($(self.$t(),)+).fmt(f)
+            }
+        }
+
+        // We need manual impls since `#[derive()]` is disallowed on packed types
+        impl<$($T: PartialEq + VarULE + ?Sized,)+ Format: VarZeroVecFormat> PartialEq for $name<$($T,)+ Format> {
+            fn eq(&self, other: &Self) -> bool {
+
+                ($(self.$t(),)+).eq(&($(other.$t(),)+))
+            }
+        }
+
+        impl<$($T: Eq + VarULE + ?Sized,)+ Format: VarZeroVecFormat> Eq for $name<$($T,)+ Format> {}
+
+        impl<$($T: PartialOrd + VarULE + ?Sized,)+ Format: VarZeroVecFormat> PartialOrd for $name<$($T,)+ Format> {
+            fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
+                ($(self.$t(),)+).partial_cmp(&($(other.$t(),)+))
+            }
+        }
+
+        impl<$($T: Ord + VarULE + ?Sized,)+ Format: VarZeroVecFormat> Ord for $name<$($T,)+ Format>  {
+            fn cmp(&self, other: &Self) -> core::cmp::Ordering {
+                ($(self.$t(),)+).cmp(&($(other.$t(),)+))
+            }
+        }
+
+        // # Safety
+        //
+        // encode_var_ule_len: returns the length of the individual VarULEs together.
+        //
+        // encode_var_ule_write: writes bytes by deferring to the inner VarULE impls.
+        unsafe impl<$($T,)+ $($T_alt,)+ Format> EncodeAsVarULE<$name<$($T,)+ Format>> for ( $($T_alt),+ )
+        where
+            $($T: VarULE + ?Sized,)+
+            $($T_alt: EncodeAsVarULE<$T>,)+
+            Format: VarZeroVecFormat,
+        {
+            fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+                // unnecessary if the other two are implemented
+                unreachable!()
+            }
+
+            #[inline]
+            fn encode_var_ule_len(&self) -> usize {
+                // Safety: We validate that this type is the same kind of MultiFieldsULE (with $len, Format)
+                // as in the type def
+                MultiFieldsULE::<$len, Format>::compute_encoded_len_for([$(self.$i.encode_var_ule_len()),+])
+            }
+
+            #[inline]
+            fn encode_var_ule_write(&self, dst: &mut [u8]) {
+                let lengths = [$(self.$i.encode_var_ule_len()),+];
+                // Safety: We validate that this type is the same kind of MultiFieldsULE (with $len, Format)
+                // as in the type def
+                let multi = MultiFieldsULE::<$len, Format>::new_from_lengths_partially_initialized(lengths, dst);
+                $(
+                    // Safety: $i < $len, from the macro invocation, and field $i is supposed to be of type $T
+                    unsafe {
+                        multi.set_field_at::<$T, $T_alt>($i, &self.$i);
+                    }
+                )+
+            }
+        }
+
+        #[cfg(feature = "alloc")]
+        impl<$($T: VarULE + ?Sized,)+ Format: VarZeroVecFormat> alloc::borrow::ToOwned for $name<$($T,)+ Format> {
+            type Owned = alloc::boxed::Box<Self>;
+            fn to_owned(&self) -> Self::Owned {
+                encode_varule_to_box(self)
+            }
+        }
+
+        impl<'a, $($T,)+ $($T_alt,)+ Format> ZeroFrom <'a, $name<$($T,)+ Format>> for ($($T_alt),+)
+        where
+                    $($T: VarULE + ?Sized,)+
+                    $($T_alt: ZeroFrom<'a, $T>,)+
+                    Format: VarZeroVecFormat {
+            fn zero_from(other: &'a $name<$($T,)+ Format>) -> Self {
+                (
+                    $($T_alt::zero_from(other.$t()),)+
+                )
+            }
+        }
+
+        #[cfg(feature = "serde")]
+        impl<$($T: serde::Serialize,)+ Format> serde::Serialize for $name<$($T,)+ Format>
+        where
+            $($T: VarULE + ?Sized,)+
+            // This impl should be present on almost all VarULE types. if it isn't, that is a bug
+            $(for<'a> &'a $T: ZeroFrom<'a, $T>,)+
+            Format: VarZeroVecFormat
+        {
+            fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer {
+                if serializer.is_human_readable() {
+                    let this = (
+                        $(self.$t()),+
+                    );
+                    <($(&$T),+) as serde::Serialize>::serialize(&this, serializer)
+                } else {
+                    serializer.serialize_bytes(self.multi.as_bytes())
+                }
+            }
+        }
+
+        #[cfg(feature = "serde")]
+        impl<'de, $($T: VarULE + ?Sized,)+ Format> serde::Deserialize<'de> for alloc::boxed::Box<$name<$($T,)+ Format>>
+            where
+                // This impl should be present on almost all deserializable VarULE types
+                $( alloc::boxed::Box<$T>: serde::Deserialize<'de>,)+
+                Format: VarZeroVecFormat {
+            fn deserialize<Des>(deserializer: Des) -> Result<Self, Des::Error> where Des: serde::Deserializer<'de> {
+                if deserializer.is_human_readable() {
+                    let this = <( $(alloc::boxed::Box<$T>),+) as serde::Deserialize>::deserialize(deserializer)?;
+                    let this_ref = (
+                        $(&*this.$i),+
+                    );
+                    Ok(crate::ule::encode_varule_to_box(&this_ref))
+                } else {
+                    // This branch should usually not be hit, since Cow-like use cases will hit the Deserialize impl for &'a TupleNVarULE instead.
+
+                    let deserialized = <&$name<$($T,)+ Format>>::deserialize(deserializer)?;
+                    Ok(deserialized.to_boxed())
+                }
+            }
+        }
+
+        #[cfg(feature = "serde")]
+        impl<'a, 'de: 'a, $($T: VarULE + ?Sized,)+ Format: VarZeroVecFormat> serde::Deserialize<'de> for &'a $name<$($T,)+ Format> {
+            fn deserialize<Des>(deserializer: Des) -> Result<Self, Des::Error> where Des: serde::Deserializer<'de> {
+                if deserializer.is_human_readable() {
+                    Err(serde::de::Error::custom(
+                        concat!("&", stringify!($name), " can only deserialize in zero-copy ways"),
+                    ))
+                } else {
+                    let bytes = <&[u8]>::deserialize(deserializer)?;
+                    $name::<$($T,)+ Format>::parse_bytes(bytes).map_err(serde::de::Error::custom)
+                }
+            }
+        }
+    };
+}
+
+tuple_varule!(Tuple2VarULE, 2, [ A a AE 0, B b BE 1 ]);
+tuple_varule!(Tuple3VarULE, 3, [ A a AE 0, B b BE 1, C c CE 2 ]);
+tuple_varule!(Tuple4VarULE, 4, [ A a AE 0, B b BE 1, C c CE 2, D d DE 3 ]);
+tuple_varule!(Tuple5VarULE, 5, [ A a AE 0, B b BE 1, C c CE 2, D d DE 3, E e EE 4 ]);
+tuple_varule!(Tuple6VarULE, 6, [ A a AE 0, B b BE 1, C c CE 2, D d DE 3, E e EE 4, F f FE 5 ]);
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::varzerovec::{Index16, Index32, Index8, VarZeroVecFormat};
+    use crate::VarZeroSlice;
+    use crate::VarZeroVec;
+
+    #[test]
+    fn test_pairvarule_validate() {
+        let vec: Vec<(&str, &[u8])> = vec![("a", b"b"), ("foo", b"bar"), ("lorem", b"ipsum\xFF")];
+        let zerovec: VarZeroVec<Tuple2VarULE<str, [u8]>> = (&vec).into();
+        let bytes = zerovec.as_bytes();
+        let zerovec2 = VarZeroVec::parse_bytes(bytes).unwrap();
+        assert_eq!(zerovec, zerovec2);
+
+        // Test failed validation with a correctly sized but differently constrained tuple
+        // Note: ipsum\xFF is not a valid str
+        let zerovec3 = VarZeroVec::<Tuple2VarULE<str, str>>::parse_bytes(bytes);
+        assert!(zerovec3.is_err());
+
+        #[cfg(feature = "serde")]
+        for val in zerovec.iter() {
+            // Can't use inference due to https://github.com/rust-lang/rust/issues/130180
+            crate::ule::test_utils::assert_serde_roundtrips::<Tuple2VarULE<str, [u8]>>(val);
+        }
+    }
+    fn test_tripleule_validate_inner<Format: VarZeroVecFormat>() {
+        let vec: Vec<(&str, &[u8], VarZeroVec<str>)> = vec![
+            ("a", b"b", (&vec!["a", "b", "c"]).into()),
+            ("foo", b"bar", (&vec!["baz", "quux"]).into()),
+            (
+                "lorem",
+                b"ipsum\xFF",
+                (&vec!["dolor", "sit", "amet"]).into(),
+            ),
+        ];
+        let zerovec: VarZeroVec<Tuple3VarULE<str, [u8], VarZeroSlice<str>, Format>> = (&vec).into();
+        let bytes = zerovec.as_bytes();
+        let zerovec2 = VarZeroVec::parse_bytes(bytes).unwrap();
+        assert_eq!(zerovec, zerovec2);
+
+        // Test failed validation with a correctly sized but differently constrained tuple
+        // Note: the str is unlikely to be a valid varzerovec
+        let zerovec3 = VarZeroVec::<Tuple3VarULE<VarZeroSlice<str>, [u8], VarZeroSlice<str>, Format>>::parse_bytes(bytes);
+        assert!(zerovec3.is_err());
+
+        #[cfg(feature = "serde")]
+        for val in zerovec.iter() {
+            // Can't use inference due to https://github.com/rust-lang/rust/issues/130180
+            crate::ule::test_utils::assert_serde_roundtrips::<
+                Tuple3VarULE<str, [u8], VarZeroSlice<str>, Format>,
+            >(val);
+        }
+    }
+
+    #[test]
+    fn test_tripleule_validate() {
+        test_tripleule_validate_inner::<Index8>();
+        test_tripleule_validate_inner::<Index16>();
+        test_tripleule_validate_inner::<Index32>();
+    }
+}
diff --git a/vendor/zerovec/src/ule/vartuple.rs b/vendor/zerovec/src/ule/vartuple.rs
new file mode 100644
index 00000000..7bccd1c8
--- /dev/null
+++ b/vendor/zerovec/src/ule/vartuple.rs
@@ -0,0 +1,312 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Types to help compose fixed-size [`ULE`] and variable-size [`VarULE`] primitives.
+//!
+//! This module exports [`VarTuple`] and [`VarTupleULE`], which allow a single sized type and
+//! a single unsized type to be stored together as a [`VarULE`].
+//!
+//! # Examples
+//!
+//! ```
+//! use zerovec::ule::vartuple::{VarTuple, VarTupleULE};
+//! use zerovec::VarZeroVec;
+//!
+//! struct Employee<'a> {
+//!     id: u32,
+//!     name: &'a str,
+//! };
+//!
+//! let employees = [
+//!     Employee {
+//!         id: 12345,
+//!         name: "Jane Doe",
+//!     },
+//!     Employee {
+//!         id: 67890,
+//!         name: "John Doe",
+//!     },
+//! ];
+//!
+//! let employees_as_var_tuples = employees
+//!     .into_iter()
+//!     .map(|x| VarTuple {
+//!         sized: x.id,
+//!         variable: x.name,
+//!     })
+//!     .collect::<Vec<_>>();
+//!
+//! let employees_vzv: VarZeroVec<VarTupleULE<u32, str>> =
+//!     employees_as_var_tuples.as_slice().into();
+//!
+//! assert_eq!(employees_vzv.len(), 2);
+//!
+//! assert_eq!(employees_vzv.get(0).unwrap().sized.as_unsigned_int(), 12345);
+//! assert_eq!(&employees_vzv.get(0).unwrap().variable, "Jane Doe");
+//!
+//! assert_eq!(employees_vzv.get(1).unwrap().sized.as_unsigned_int(), 67890);
+//! assert_eq!(&employees_vzv.get(1).unwrap().variable, "John Doe");
+//! ```
+
+use core::mem::{size_of, transmute_copy};
+use zerofrom::ZeroFrom;
+
+use super::{AsULE, EncodeAsVarULE, UleError, VarULE, ULE};
+
+/// A sized type that can be converted to a [`VarTupleULE`].
+///
+/// See the module for examples.
+#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)]
+#[allow(clippy::exhaustive_structs)] // well-defined type
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+pub struct VarTuple<A, B> {
+    pub sized: A,
+    pub variable: B,
+}
+
+/// A dynamically-sized type combining a sized and an unsized type.
+///
+/// See the module for examples.
+#[derive(Debug, PartialEq, Eq, PartialOrd, Ord)]
+#[allow(clippy::exhaustive_structs)] // well-defined type
+#[repr(C)]
+pub struct VarTupleULE<A: AsULE, V: VarULE + ?Sized> {
+    pub sized: A::ULE,
+    pub variable: V,
+}
+
+// # Safety
+//
+// ## Representation
+//
+// The type `VarTupleULE` is align(1) because it is repr(C) and its fields
+// are all align(1), since they are themselves ULE and VarULE, which have
+// this same safety constraint. Further, there is no padding, because repr(C)
+// does not add padding when all fields are align(1).
+//
+// <https://doc.rust-lang.org/reference/type-layout.html#the-c-representation>
+//
+// Pointers to `VarTupleULE` are fat pointers with metadata equal to the
+// metadata of the inner DST field V.
+//
+// <https://doc.rust-lang.org/stable/std/ptr/trait.Pointee.html>
+//
+// ## Checklist
+//
+// Safety checklist for `VarULE`:
+//
+// 1. align(1): see "Representation" above.
+// 2. No padding: see "Representation" above.
+// 3. `validate_bytes` checks length and defers to the inner ULEs.
+// 4. `validate_bytes` checks length and defers to the inner ULEs.
+// 5. `from_bytes_unchecked` returns a fat pointer to the bytes.
+// 6. All other methods are left at their default impl.
+// 7. The two ULEs have byte equality, so this composition has byte equality.
+unsafe impl<A, V> VarULE for VarTupleULE<A, V>
+where
+    A: AsULE + 'static,
+    V: VarULE + ?Sized,
+{
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        let (sized_chunk, variable_chunk) = bytes
+            .split_at_checked(size_of::<A::ULE>())
+            .ok_or(UleError::length::<Self>(bytes.len()))?;
+        A::ULE::validate_bytes(sized_chunk)?;
+        V::validate_bytes(variable_chunk)?;
+        Ok(())
+    }
+
+    unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        let (_sized_chunk, variable_chunk) = bytes.split_at_unchecked(size_of::<A::ULE>());
+        // Safety: variable_chunk is a valid V because of this function's precondition: bytes is a valid Self,
+        // and a valid Self contains a valid V after the space needed for A::ULE.
+        let variable_ref = V::from_bytes_unchecked(variable_chunk);
+        let variable_ptr: *const V = variable_ref;
+
+        // Safety: The DST of VarTupleULE is a pointer to the `sized` element and has a metadata
+        // equal to the metadata of the `variable` field (see "Representation" comments on the impl).
+
+        // We should use the pointer metadata APIs here when they are stable: https://github.com/rust-lang/rust/issues/81513
+        // For now we rely on all DST metadata being a usize.
+
+        // Extract metadata from V's DST
+        // Rust doesn't know that `&V` is a fat pointer so we have to use transmute_copy
+        assert_eq!(size_of::<*const V>(), size_of::<(*const u8, usize)>());
+        // Safety: We have asserted that the transmute Src and Dst are the same size. Furthermore,
+        // DST pointers are a pointer and usize length metadata
+        let (_v_ptr, metadata) = transmute_copy::<*const V, (*const u8, usize)>(&variable_ptr);
+
+        // Construct a new DST with the same metadata as V
+        assert_eq!(size_of::<*const Self>(), size_of::<(*const u8, usize)>());
+        // Safety: Same as above but in the other direction.
+        let composed_ptr =
+            transmute_copy::<(*const u8, usize), *const Self>(&(bytes.as_ptr(), metadata));
+        &*(composed_ptr)
+    }
+}
+
+// # Safety
+//
+// encode_var_ule_len: returns the length of the two ULEs together.
+//
+// encode_var_ule_write: writes bytes by deferring to the inner ULE impls.
+unsafe impl<A, B, V> EncodeAsVarULE<VarTupleULE<A, V>> for VarTuple<A, B>
+where
+    A: AsULE + 'static,
+    B: EncodeAsVarULE<V>,
+    V: VarULE + ?Sized,
+{
+    fn encode_var_ule_as_slices<R>(&self, _: impl FnOnce(&[&[u8]]) -> R) -> R {
+        // unnecessary if the other two are implemented
+        unreachable!()
+    }
+
+    #[inline]
+    fn encode_var_ule_len(&self) -> usize {
+        size_of::<A::ULE>() + self.variable.encode_var_ule_len()
+    }
+
+    #[inline]
+    fn encode_var_ule_write(&self, dst: &mut [u8]) {
+        // TODO: use split_first_chunk_mut in 1.77
+        let (sized_chunk, variable_chunk) = dst.split_at_mut(size_of::<A::ULE>());
+        sized_chunk.clone_from_slice([self.sized.to_unaligned()].as_bytes());
+        self.variable.encode_var_ule_write(variable_chunk);
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<A, V> alloc::borrow::ToOwned for VarTupleULE<A, V>
+where
+    A: AsULE + 'static,
+    V: VarULE + ?Sized,
+{
+    type Owned = alloc::boxed::Box<Self>;
+    fn to_owned(&self) -> Self::Owned {
+        crate::ule::encode_varule_to_box(self)
+    }
+}
+
+impl<'a, A, B, V> ZeroFrom<'a, VarTupleULE<A, V>> for VarTuple<A, B>
+where
+    A: AsULE + 'static,
+    V: VarULE + ?Sized,
+    B: ZeroFrom<'a, V>,
+{
+    fn zero_from(other: &'a VarTupleULE<A, V>) -> Self {
+        VarTuple {
+            sized: AsULE::from_unaligned(other.sized),
+            variable: B::zero_from(&other.variable),
+        }
+    }
+}
+
+#[cfg(feature = "serde")]
+impl<A, V> serde::Serialize for VarTupleULE<A, V>
+where
+    A: AsULE + 'static,
+    V: VarULE + ?Sized,
+    A: serde::Serialize,
+    V: serde::Serialize,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: serde::Serializer,
+    {
+        if serializer.is_human_readable() {
+            let this = VarTuple {
+                sized: A::from_unaligned(self.sized),
+                variable: &self.variable,
+            };
+            this.serialize(serializer)
+        } else {
+            serializer.serialize_bytes(self.as_bytes())
+        }
+    }
+}
+
+#[cfg(feature = "serde")]
+impl<'a, 'de: 'a, A, V> serde::Deserialize<'de> for &'a VarTupleULE<A, V>
+where
+    A: AsULE + 'static,
+    V: VarULE + ?Sized,
+    A: serde::Deserialize<'de>,
+{
+    fn deserialize<Des>(deserializer: Des) -> Result<Self, Des::Error>
+    where
+        Des: serde::Deserializer<'de>,
+    {
+        if !deserializer.is_human_readable() {
+            let bytes = <&[u8]>::deserialize(deserializer)?;
+            VarTupleULE::<A, V>::parse_bytes(bytes).map_err(serde::de::Error::custom)
+        } else {
+            Err(serde::de::Error::custom(
+                "&VarTupleULE can only deserialize in zero-copy ways",
+            ))
+        }
+    }
+}
+
+#[cfg(feature = "serde")]
+impl<'de, A, V> serde::Deserialize<'de> for alloc::boxed::Box<VarTupleULE<A, V>>
+where
+    A: AsULE + 'static,
+    V: VarULE + ?Sized,
+    A: serde::Deserialize<'de>,
+    alloc::boxed::Box<V>: serde::Deserialize<'de>,
+{
+    fn deserialize<Des>(deserializer: Des) -> Result<Self, Des::Error>
+    where
+        Des: serde::Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            let this = VarTuple::<A, alloc::boxed::Box<V>>::deserialize(deserializer)?;
+            Ok(crate::ule::encode_varule_to_box(&this))
+        } else {
+            // This branch should usually not be hit, since Cow-like use cases will hit the Deserialize impl for &'a TupleNVarULE instead.
+
+            let deserialized = <&VarTupleULE<A, V>>::deserialize(deserializer)?;
+            Ok(deserialized.to_boxed())
+        }
+    }
+}
+
+#[test]
+fn test_simple() {
+    let var_tuple = VarTuple {
+        sized: 1500u16,
+        variable: "hello",
+    };
+    let var_tuple_ule = super::encode_varule_to_box(&var_tuple);
+    assert_eq!(var_tuple_ule.sized.as_unsigned_int(), 1500);
+    assert_eq!(&var_tuple_ule.variable, "hello");
+
+    // Can't use inference due to https://github.com/rust-lang/rust/issues/130180
+    #[cfg(feature = "serde")]
+    crate::ule::test_utils::assert_serde_roundtrips::<VarTupleULE<u16, str>>(&var_tuple_ule);
+}
+
+#[test]
+fn test_nested() {
+    use crate::{ZeroSlice, ZeroVec};
+    let var_tuple = VarTuple {
+        sized: 2000u16,
+        variable: VarTuple {
+            sized: '🦙',
+            variable: ZeroVec::alloc_from_slice(b"ICU"),
+        },
+    };
+    let var_tuple_ule = super::encode_varule_to_box(&var_tuple);
+    assert_eq!(var_tuple_ule.sized.as_unsigned_int(), 2000u16);
+    assert_eq!(var_tuple_ule.variable.sized.to_char(), '🦙');
+    assert_eq!(
+        &var_tuple_ule.variable.variable,
+        ZeroSlice::from_ule_slice(b"ICU")
+    );
+    // Can't use inference due to https://github.com/rust-lang/rust/issues/130180
+    #[cfg(feature = "serde")]
+    crate::ule::test_utils::assert_serde_roundtrips::<
+        VarTupleULE<u16, VarTupleULE<char, ZeroSlice<_>>>,
+    >(&var_tuple_ule);
+}
diff --git a/vendor/zerovec/src/varzerovec/components.rs b/vendor/zerovec/src/varzerovec/components.rs
new file mode 100644
index 00000000..d1001825
--- /dev/null
+++ b/vendor/zerovec/src/varzerovec/components.rs
@@ -0,0 +1,815 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::VarZeroVecFormatError;
+use crate::ule::*;
+use core::cmp::Ordering;
+use core::convert::TryFrom;
+use core::marker::PhantomData;
+use core::mem;
+use core::ops::Range;
+
+/// This trait allows switching between different possible internal
+/// representations of VarZeroVec.
+///
+/// Currently this crate supports three formats: [`Index8`], [`Index16`] and [`Index32`],
+/// with [`Index16`] being the default for all [`VarZeroVec`](super::VarZeroVec)
+/// types unless explicitly specified otherwise.
+///
+/// Do not implement this trait, its internals may be changed in the future,
+/// and all of its associated items are hidden from the docs.
+pub trait VarZeroVecFormat: 'static + Sized {
+    /// The type to use for the indexing array
+    ///
+    /// Safety: must be a ULE for which all byte sequences are allowed
+    #[doc(hidden)]
+    type Index: IntegerULE;
+    /// The type to use for the length segment
+    ///
+    /// Safety: must be a ULE for which all byte sequences are allowed
+    #[doc(hidden)]
+    type Len: IntegerULE;
+}
+
+/// This trait represents various ULE types that can be used to represent an integer
+///
+/// Do not implement this trait, its internals may be changed in the future,
+/// and all of its associated items are hidden from the docs.
+#[doc(hidden)]
+pub unsafe trait IntegerULE: ULE {
+    /// The error to show when unable to construct a vec
+    #[doc(hidden)]
+    const TOO_LARGE_ERROR: &'static str;
+
+    /// Safety: must be sizeof(self)
+    #[doc(hidden)]
+    const SIZE: usize;
+
+    /// Safety: must be maximum integral value represented here
+    #[doc(hidden)]
+    const MAX_VALUE: u32;
+
+    /// Safety: Must roundtrip with from_usize and represent the correct
+    /// integral value
+    #[doc(hidden)]
+    fn iule_to_usize(self) -> usize;
+
+    #[doc(hidden)]
+    fn iule_from_usize(x: usize) -> Option<Self>;
+
+    /// Safety: Should always convert a buffer into an array of Self with the correct length
+    #[doc(hidden)]
+    #[cfg(feature = "alloc")]
+    fn iule_from_bytes_unchecked_mut(bytes: &mut [u8]) -> &mut [Self];
+}
+
+/// This is a [`VarZeroVecFormat`] that stores u8s in the index array, and a u8 for a length.
+///
+/// Will have a smaller data size, but it's *extremely* likely for larger arrays
+/// to be unrepresentable (and error on construction). Should probably be used
+/// for known-small arrays, where all but the last field are known-small.
+#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
+#[allow(clippy::exhaustive_structs)] // marker
+pub struct Index8;
+
+/// This is a [`VarZeroVecFormat`] that stores u16s in the index array, and a u16 for a length.
+///
+/// Will have a smaller data size, but it's more likely for larger arrays
+/// to be unrepresentable (and error on construction)
+///
+/// This is the default index size used by all [`VarZeroVec`](super::VarZeroVec) types.
+#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
+#[allow(clippy::exhaustive_structs)] // marker
+pub struct Index16;
+
+/// This is a [`VarZeroVecFormat`] that stores u32s in the index array, and a u32 for a length.
+/// Will have a larger data size, but will support large arrays without
+/// problems.
+#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
+#[allow(clippy::exhaustive_structs)] // marker
+pub struct Index32;
+
+impl VarZeroVecFormat for Index8 {
+    type Index = u8;
+    type Len = u8;
+}
+
+impl VarZeroVecFormat for Index16 {
+    type Index = RawBytesULE<2>;
+    type Len = RawBytesULE<2>;
+}
+
+impl VarZeroVecFormat for Index32 {
+    type Index = RawBytesULE<4>;
+    type Len = RawBytesULE<4>;
+}
+
+unsafe impl IntegerULE for u8 {
+    const TOO_LARGE_ERROR: &'static str = "Attempted to build VarZeroVec out of elements that \
+                                     cumulatively are larger than a u8 in size";
+    const SIZE: usize = mem::size_of::<Self>();
+    const MAX_VALUE: u32 = u8::MAX as u32;
+    #[inline]
+    fn iule_to_usize(self) -> usize {
+        self as usize
+    }
+    #[inline]
+    fn iule_from_usize(u: usize) -> Option<Self> {
+        u8::try_from(u).ok()
+    }
+    #[inline]
+    #[cfg(feature = "alloc")]
+    fn iule_from_bytes_unchecked_mut(bytes: &mut [u8]) -> &mut [Self] {
+        bytes
+    }
+}
+
+unsafe impl IntegerULE for RawBytesULE<2> {
+    const TOO_LARGE_ERROR: &'static str = "Attempted to build VarZeroVec out of elements that \
+                                     cumulatively are larger than a u16 in size";
+    const SIZE: usize = mem::size_of::<Self>();
+    const MAX_VALUE: u32 = u16::MAX as u32;
+    #[inline]
+    fn iule_to_usize(self) -> usize {
+        self.as_unsigned_int() as usize
+    }
+    #[inline]
+    fn iule_from_usize(u: usize) -> Option<Self> {
+        u16::try_from(u).ok().map(u16::to_unaligned)
+    }
+    #[inline]
+    #[cfg(feature = "alloc")]
+    fn iule_from_bytes_unchecked_mut(bytes: &mut [u8]) -> &mut [Self] {
+        Self::from_bytes_unchecked_mut(bytes)
+    }
+}
+
+unsafe impl IntegerULE for RawBytesULE<4> {
+    const TOO_LARGE_ERROR: &'static str = "Attempted to build VarZeroVec out of elements that \
+                                     cumulatively are larger than a u32 in size";
+    const SIZE: usize = mem::size_of::<Self>();
+    const MAX_VALUE: u32 = u32::MAX;
+    #[inline]
+    fn iule_to_usize(self) -> usize {
+        self.as_unsigned_int() as usize
+    }
+    #[inline]
+    fn iule_from_usize(u: usize) -> Option<Self> {
+        u32::try_from(u).ok().map(u32::to_unaligned)
+    }
+    #[inline]
+    #[cfg(feature = "alloc")]
+    fn iule_from_bytes_unchecked_mut(bytes: &mut [u8]) -> &mut [Self] {
+        Self::from_bytes_unchecked_mut(bytes)
+    }
+}
+
+/// A more parsed version of `VarZeroSlice`. This type is where most of the VarZeroVec
+/// internal representation code lies.
+///
+/// This is *basically* an `&'a [u8]` to a zero copy buffer, but split out into
+/// the buffer components. Logically this is capable of behaving as
+/// a `&'a [T::VarULE]`, but since `T::VarULE` is unsized that type does not actually
+/// exist.
+///
+/// See [`VarZeroVecComponents::parse_bytes()`] for information on the internal invariants involved
+#[derive(Debug)]
+pub struct VarZeroVecComponents<'a, T: ?Sized, F> {
+    /// The number of elements
+    len: u32,
+    /// The list of indices into the `things` slice
+    /// Since the first element is always at things[0], the first element of the indices array is for the *second* element
+    indices: &'a [u8],
+    /// The contiguous list of `T::VarULE`s
+    things: &'a [u8],
+    marker: PhantomData<(&'a T, F)>,
+}
+
+// #[derive()] won't work here since we do not want it to be
+// bound on T: Copy
+impl<'a, T: ?Sized, F> Copy for VarZeroVecComponents<'a, T, F> {}
+impl<'a, T: ?Sized, F> Clone for VarZeroVecComponents<'a, T, F> {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+
+impl<'a, T: VarULE + ?Sized, F> Default for VarZeroVecComponents<'a, T, F> {
+    #[inline]
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<'a, T: VarULE + ?Sized, F> VarZeroVecComponents<'a, T, F> {
+    #[inline]
+    pub fn new() -> Self {
+        Self {
+            len: 0,
+            indices: &[],
+            things: &[],
+            marker: PhantomData,
+        }
+    }
+}
+impl<'a, T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroVecComponents<'a, T, F> {
+    /// Construct a new VarZeroVecComponents, checking invariants about the overall buffer size:
+    ///
+    /// - There must be either zero or at least four bytes (if four, this is the "length" parsed as a usize)
+    /// - There must be at least `4*(length - 1) + 4` bytes total, to form the array `indices` of indices
+    /// - `0..indices[0]` must index into a valid section of
+    ///   `things` (the data after `indices`), such that it parses to a `T::VarULE`
+    /// - `indices[i - 1]..indices[i]` must index into a valid section of
+    ///   `things` (the data after `indices`), such that it parses to a `T::VarULE`
+    /// - `indices[len - 2]..things.len()` must index into a valid section of
+    ///   `things`, such that it parses to a `T::VarULE`
+    #[inline]
+    pub fn parse_bytes(slice: &'a [u8]) -> Result<Self, VarZeroVecFormatError> {
+        // The empty VZV is special-cased to the empty slice
+        if slice.is_empty() {
+            return Ok(VarZeroVecComponents {
+                len: 0,
+                indices: &[],
+                things: &[],
+                marker: PhantomData,
+            });
+        }
+        let len_bytes = slice
+            .get(0..F::Len::SIZE)
+            .ok_or(VarZeroVecFormatError::Metadata)?;
+        let len_ule =
+            F::Len::parse_bytes_to_slice(len_bytes).map_err(|_| VarZeroVecFormatError::Metadata)?;
+
+        let len = len_ule
+            .first()
+            .ok_or(VarZeroVecFormatError::Metadata)?
+            .iule_to_usize();
+
+        let rest = slice
+            .get(F::Len::SIZE..)
+            .ok_or(VarZeroVecFormatError::Metadata)?;
+        let len_u32 = u32::try_from(len).map_err(|_| VarZeroVecFormatError::Metadata);
+        // We pass down the rest of the invariants
+        Self::parse_bytes_with_length(len_u32?, rest)
+    }
+
+    /// Construct a new VarZeroVecComponents, checking invariants about the overall buffer size:
+    ///
+    /// - There must be at least `4*len` bytes total, to form the array `indices` of indices.
+    /// - `indices[i]..indices[i+1]` must index into a valid section of
+    ///   `things` (the data after `indices`), such that it parses to a `T::VarULE`
+    /// - `indices[len - 1]..things.len()` must index into a valid section of
+    ///   `things`, such that it parses to a `T::VarULE`
+    #[inline]
+    pub fn parse_bytes_with_length(
+        len: u32,
+        slice: &'a [u8],
+    ) -> Result<Self, VarZeroVecFormatError> {
+        let len_minus_one = len.checked_sub(1);
+        // The empty VZV is special-cased to the empty slice
+        let Some(len_minus_one) = len_minus_one else {
+            return Ok(VarZeroVecComponents {
+                len: 0,
+                indices: &[],
+                things: &[],
+                marker: PhantomData,
+            });
+        };
+        // The indices array is one element shorter since the first index is always 0,
+        // so we use len_minus_one
+        let indices_bytes = slice
+            .get(..F::Index::SIZE * (len_minus_one as usize))
+            .ok_or(VarZeroVecFormatError::Metadata)?;
+        let things = slice
+            .get(F::Index::SIZE * (len_minus_one as usize)..)
+            .ok_or(VarZeroVecFormatError::Metadata)?;
+
+        let borrowed = VarZeroVecComponents {
+            len,
+            indices: indices_bytes,
+            things,
+            marker: PhantomData,
+        };
+
+        borrowed.check_indices_and_things()?;
+
+        Ok(borrowed)
+    }
+
+    /// Construct a [`VarZeroVecComponents`] from a byte slice that has previously
+    /// successfully returned a [`VarZeroVecComponents`] when passed to
+    /// [`VarZeroVecComponents::parse_bytes()`]. Will return the same
+    /// object as one would get from calling [`VarZeroVecComponents::parse_bytes()`].
+    ///
+    /// # Safety
+    /// The bytes must have previously successfully run through
+    /// [`VarZeroVecComponents::parse_bytes()`]
+    pub unsafe fn from_bytes_unchecked(slice: &'a [u8]) -> Self {
+        // The empty VZV is special-cased to the empty slice
+        if slice.is_empty() {
+            return VarZeroVecComponents {
+                len: 0,
+                indices: &[],
+                things: &[],
+                marker: PhantomData,
+            };
+        }
+        let (len_bytes, data_bytes) = unsafe { slice.split_at_unchecked(F::Len::SIZE) };
+        // Safety: F::Len allows all byte sequences
+        let len_ule = F::Len::slice_from_bytes_unchecked(len_bytes);
+
+        let len = len_ule.get_unchecked(0).iule_to_usize();
+        let len_u32 = len as u32;
+
+        // Safety: This method requires the bytes to have passed through `parse_bytes()`
+        // whereas we're calling something that asks for `parse_bytes_with_length()`.
+        // The two methods perform similar validation, with parse_bytes() validating an additional
+        // 4-byte `length` header.
+        Self::from_bytes_unchecked_with_length(len_u32, data_bytes)
+    }
+
+    /// Construct a [`VarZeroVecComponents`] from a byte slice that has previously
+    /// successfully returned a [`VarZeroVecComponents`] when passed to
+    /// [`VarZeroVecComponents::parse_bytes()`]. Will return the same
+    /// object as one would get from calling [`VarZeroVecComponents::parse_bytes()`].
+    ///
+    /// # Safety
+    /// The len,bytes must have previously successfully run through
+    /// [`VarZeroVecComponents::parse_bytes_with_length()`]
+    pub unsafe fn from_bytes_unchecked_with_length(len: u32, slice: &'a [u8]) -> Self {
+        let len_minus_one = len.checked_sub(1);
+        // The empty VZV is special-cased to the empty slice
+        let Some(len_minus_one) = len_minus_one else {
+            return VarZeroVecComponents {
+                len: 0,
+                indices: &[],
+                things: &[],
+                marker: PhantomData,
+            };
+        };
+        // The indices array is one element shorter since the first index is always 0,
+        // so we use len_minus_one
+        let indices_bytes = slice.get_unchecked(..F::Index::SIZE * (len_minus_one as usize));
+        let things = slice.get_unchecked(F::Index::SIZE * (len_minus_one as usize)..);
+
+        VarZeroVecComponents {
+            len,
+            indices: indices_bytes,
+            things,
+            marker: PhantomData,
+        }
+    }
+
+    /// Get the number of elements in this vector
+    #[inline]
+    pub fn len(self) -> usize {
+        self.len as usize
+    }
+
+    /// Returns `true` if the vector contains no elements.
+    #[inline]
+    pub fn is_empty(self) -> bool {
+        self.len == 0
+    }
+
+    /// Get the idx'th element out of this slice. Returns `None` if out of bounds.
+    #[inline]
+    pub fn get(self, idx: usize) -> Option<&'a T> {
+        if idx >= self.len() {
+            return None;
+        }
+        Some(unsafe { self.get_unchecked(idx) })
+    }
+
+    /// Get the idx'th element out of this slice. Does not bounds check.
+    ///
+    /// Safety:
+    /// - `idx` must be in bounds (`idx < self.len()`)
+    #[inline]
+    pub(crate) unsafe fn get_unchecked(self, idx: usize) -> &'a T {
+        let range = self.get_things_range(idx);
+        let things_slice = self.things.get_unchecked(range);
+        T::from_bytes_unchecked(things_slice)
+    }
+
+    /// Get the range in `things` for the element at `idx`. Does not bounds check.
+    ///
+    /// Safety:
+    /// - `idx` must be in bounds (`idx < self.len()`)
+    #[inline]
+    pub(crate) unsafe fn get_things_range(self, idx: usize) -> Range<usize> {
+        let start = if let Some(idx_minus_one) = idx.checked_sub(1) {
+            self.indices_slice()
+                .get_unchecked(idx_minus_one)
+                .iule_to_usize()
+        } else {
+            0
+        };
+        let end = if idx + 1 == self.len() {
+            self.things.len()
+        } else {
+            self.indices_slice().get_unchecked(idx).iule_to_usize()
+        };
+        debug_assert!(start <= end);
+        start..end
+    }
+
+    /// Get the size, in bytes, of the indices array
+    pub(crate) unsafe fn get_indices_size(self) -> usize {
+        self.indices.len()
+    }
+
+    /// Check the internal invariants of VarZeroVecComponents:
+    ///
+    /// - `indices[i]..indices[i+1]` must index into a valid section of
+    ///   `things`, such that it parses to a `T::VarULE`
+    /// - `indices[len - 1]..things.len()` must index into a valid section of
+    ///   `things`, such that it parses to a `T::VarULE`
+    /// - `indices` is monotonically increasing
+    ///
+    /// This method is NOT allowed to call any other methods on VarZeroVecComponents since all other methods
+    /// assume that the slice has been passed through check_indices_and_things
+    #[inline]
+    #[expect(clippy::len_zero)] // more explicit to enforce safety invariants
+    fn check_indices_and_things(self) -> Result<(), VarZeroVecFormatError> {
+        if self.len() == 0 {
+            if self.things.len() > 0 {
+                return Err(VarZeroVecFormatError::Metadata);
+            } else {
+                return Ok(());
+            }
+        }
+        let indices_slice = self.indices_slice();
+        assert_eq!(self.len(), indices_slice.len() + 1);
+        // Safety: i is in bounds (assertion above)
+        let mut start = 0;
+        for i in 0..self.len() {
+            // The indices array is offset by 1: indices[0] is the end of the first
+            // element and the start of the next, since the start of the first element
+            // is always things[0]. So to get the end we get element `i`.
+            let end = if let Some(end) = indices_slice.get(i) {
+                end.iule_to_usize()
+            } else {
+                // This only happens at i = self.len() - 1 = indices_slice.len() + 1 - 1
+                // = indices_slice.len(). This is the last `end`, which is always the size of
+                // `things` and thus never stored in the array
+                self.things.len()
+            };
+
+            if start > end {
+                return Err(VarZeroVecFormatError::Metadata);
+            }
+            if end > self.things.len() {
+                return Err(VarZeroVecFormatError::Metadata);
+            }
+            // Safety: start..end is a valid range in self.things
+            let bytes = unsafe { self.things.get_unchecked(start..end) };
+            T::parse_bytes(bytes).map_err(VarZeroVecFormatError::Values)?;
+            start = end;
+        }
+        Ok(())
+    }
+
+    /// Create an iterator over the Ts contained in VarZeroVecComponents
+    #[inline]
+    pub fn iter(self) -> VarZeroSliceIter<'a, T, F> {
+        VarZeroSliceIter::new(self)
+    }
+
+    #[cfg(feature = "alloc")]
+    pub fn to_vec(self) -> alloc::vec::Vec<alloc::boxed::Box<T>> {
+        self.iter().map(T::to_boxed).collect()
+    }
+
+    #[inline]
+    fn indices_slice(&self) -> &'a [F::Index] {
+        unsafe { F::Index::slice_from_bytes_unchecked(self.indices) }
+    }
+
+    // Dump a debuggable representation of this type
+    #[allow(unused)] // useful for debugging
+    #[cfg(feature = "alloc")]
+    pub(crate) fn dump(&self) -> alloc::string::String {
+        let indices = self
+            .indices_slice()
+            .iter()
+            .copied()
+            .map(IntegerULE::iule_to_usize)
+            .collect::<alloc::vec::Vec<_>>();
+        alloc::format!("VarZeroVecComponents {{ indices: {indices:?} }}")
+    }
+}
+
+/// An iterator over VarZeroSlice
+#[derive(Debug)]
+pub struct VarZeroSliceIter<'a, T: ?Sized, F = Index16> {
+    components: VarZeroVecComponents<'a, T, F>,
+    index: usize,
+    // Safety invariant: must be a valid index into the data segment of `components`, or an index at the end
+    // i.e. start_index <= components.things.len()
+    //
+    // It must be a valid index into the `things` array of components, coming from `components.indices_slice()`
+    start_index: usize,
+}
+
+impl<'a, T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroSliceIter<'a, T, F> {
+    fn new(c: VarZeroVecComponents<'a, T, F>) -> Self {
+        Self {
+            components: c,
+            index: 0,
+            // Invariant upheld, 0 is always a valid index-or-end
+            start_index: 0,
+        }
+    }
+}
+impl<'a, T: VarULE + ?Sized, F: VarZeroVecFormat> Iterator for VarZeroSliceIter<'a, T, F> {
+    type Item = &'a T;
+
+    fn next(&mut self) -> Option<Self::Item> {
+        // Note: the indices array doesn't contain 0 or len, we need to specially handle those edges. The 0 is handled
+        // by start_index, and the len is handled by the code for `end`.
+
+        if self.index >= self.components.len() {
+            return None;
+        }
+
+        // Invariant established: self.index is in bounds for self.components.len(),
+        // which means it is in bounds for self.components.indices_slice() since that has the same length
+
+        let end = if self.index + 1 == self.components.len() {
+            // We don't store the end index since it is computable, so the last element should use self.components.things.len()
+            self.components.things.len()
+        } else {
+            // Safety: self.index was known to be in bounds from the bounds check above.
+            unsafe {
+                self.components
+                    .indices_slice()
+                    .get_unchecked(self.index)
+                    .iule_to_usize()
+            }
+        };
+        // Invariant established: end has the same invariant as self.start_index since it comes from indices_slice, which is guaranteed
+        // to only contain valid indexes
+
+        let item = unsafe {
+            // Safety: self.start_index and end both have in-range invariants, plus they are valid indices from indices_slice
+            // which means we can treat this data as a T
+            T::from_bytes_unchecked(self.components.things.get_unchecked(self.start_index..end))
+        };
+        self.index += 1;
+        // Invariant upheld: end has the same invariant as self.start_index
+        self.start_index = end;
+        Some(item)
+    }
+
+    fn size_hint(&self) -> (usize, Option<usize>) {
+        let remainder = self.components.len() - self.index;
+        (remainder, Some(remainder))
+    }
+}
+
+impl<'a, T: VarULE + ?Sized, F: VarZeroVecFormat> ExactSizeIterator for VarZeroSliceIter<'a, T, F> {
+    fn len(&self) -> usize {
+        self.components.len() - self.index
+    }
+}
+
+impl<'a, T, F> VarZeroVecComponents<'a, T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    T: Ord,
+    F: VarZeroVecFormat,
+{
+    /// Binary searches a sorted `VarZeroVecComponents<T>` for the given element. For more information, see
+    /// the primitive function [`binary_search`](slice::binary_search).
+    pub fn binary_search(&self, needle: &T) -> Result<usize, usize> {
+        self.binary_search_by(|probe| probe.cmp(needle))
+    }
+
+    pub fn binary_search_in_range(
+        &self,
+        needle: &T,
+        range: Range<usize>,
+    ) -> Option<Result<usize, usize>> {
+        self.binary_search_in_range_by(|probe| probe.cmp(needle), range)
+    }
+}
+
+impl<'a, T, F> VarZeroVecComponents<'a, T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    F: VarZeroVecFormat,
+{
+    /// Binary searches a sorted `VarZeroVecComponents<T>` for the given predicate. For more information, see
+    /// the primitive function [`binary_search_by`](slice::binary_search_by).
+    pub fn binary_search_by(&self, predicate: impl FnMut(&T) -> Ordering) -> Result<usize, usize> {
+        // Safety: 0 and len are in range
+        unsafe { self.binary_search_in_range_unchecked(predicate, 0..self.len()) }
+    }
+
+    // Binary search within a range.
+    // Values returned are relative to the range start!
+    pub fn binary_search_in_range_by(
+        &self,
+        predicate: impl FnMut(&T) -> Ordering,
+        range: Range<usize>,
+    ) -> Option<Result<usize, usize>> {
+        if range.end > self.len() {
+            return None;
+        }
+        if range.end < range.start {
+            return None;
+        }
+        // Safety: We bounds checked above: end is in-bounds or len, and start is <= end
+        let range_absolute =
+            unsafe { self.binary_search_in_range_unchecked(predicate, range.clone()) };
+        // The values returned are relative to the range start
+        Some(
+            range_absolute
+                .map(|o| o - range.start)
+                .map_err(|e| e - range.start),
+        )
+    }
+
+    /// Safety: range must be in range for the slice (start <= len, end <= len, start <= end)
+    unsafe fn binary_search_in_range_unchecked(
+        &self,
+        mut predicate: impl FnMut(&T) -> Ordering,
+        range: Range<usize>,
+    ) -> Result<usize, usize> {
+        // Function invariant: size is always end - start
+        let mut start = range.start;
+        let mut end = range.end;
+        let mut size;
+
+        // Loop invariant: 0 <= start < end <= len
+        // This invariant is initialized by the function safety invariants and the loop condition
+        while start < end {
+            size = end - start;
+            // This establishes mid < end (which implies mid < len)
+            // size is end - start. start + size is end (which is <= len).
+            // mid = start + size/2 will be less than end
+            let mid = start + size / 2;
+
+            // Safety: mid is < end <= len, so in-range
+            let cmp = predicate(self.get_unchecked(mid));
+
+            match cmp {
+                Ordering::Less => {
+                    // This retains the loop invariant since it
+                    // increments start, and we already have 0 <= start
+                    // start < end is enforced by the loop condition
+                    start = mid + 1;
+                }
+                Ordering::Greater => {
+                    // mid < end, so this decreases end.
+                    // This means end <= len is still true, and
+                    // end > start is enforced by the loop condition
+                    end = mid;
+                }
+                Ordering::Equal => return Ok(mid),
+            }
+        }
+        Err(start)
+    }
+}
+
+/// Collects the bytes for a VarZeroSlice into a Vec.
+#[cfg(feature = "alloc")]
+pub fn get_serializable_bytes_non_empty<T, A, F>(elements: &[A]) -> Option<alloc::vec::Vec<u8>>
+where
+    T: VarULE + ?Sized,
+    A: EncodeAsVarULE<T>,
+    F: VarZeroVecFormat,
+{
+    debug_assert!(!elements.is_empty());
+    let len = compute_serializable_len::<T, A, F>(elements)?;
+    debug_assert!(
+        len >= F::Len::SIZE as u32,
+        "Must have at least F::Len::SIZE bytes to hold the length of the vector"
+    );
+    let mut output = alloc::vec![0u8; len as usize];
+    write_serializable_bytes::<T, A, F>(elements, &mut output);
+    Some(output)
+}
+
+/// Writes the bytes for a VarZeroLengthlessSlice into an output buffer.
+/// Usable for a VarZeroSlice if you first write the length bytes.
+///
+/// Every byte in the buffer will be initialized after calling this function.
+///
+/// # Panics
+///
+/// Panics if the buffer is not exactly the correct length.
+pub fn write_serializable_bytes_without_length<T, A, F>(elements: &[A], output: &mut [u8])
+where
+    T: VarULE + ?Sized,
+    A: EncodeAsVarULE<T>,
+    F: VarZeroVecFormat,
+{
+    assert!(elements.len() <= F::Len::MAX_VALUE as usize);
+    if elements.is_empty() {
+        return;
+    }
+
+    // idx_offset = offset from the start of the buffer for the next index
+    let mut idx_offset: usize = 0;
+    // first_dat_offset = offset from the start of the buffer of the first data block
+    let first_dat_offset: usize = idx_offset + (elements.len() - 1) * F::Index::SIZE;
+    // dat_offset = offset from the start of the buffer of the next data block
+    let mut dat_offset: usize = first_dat_offset;
+
+    for (i, element) in elements.iter().enumerate() {
+        let element_len = element.encode_var_ule_len();
+
+        // The first index is always 0. We don't write it, or update the idx offset.
+        if i != 0 {
+            let idx_limit = idx_offset + F::Index::SIZE;
+            #[expect(clippy::indexing_slicing)] // Function contract allows panicky behavior
+            let idx_slice = &mut output[idx_offset..idx_limit];
+            // VZV expects data offsets to be stored relative to the first data block
+            let idx = dat_offset - first_dat_offset;
+            assert!(idx <= F::Index::MAX_VALUE as usize);
+            #[expect(clippy::expect_used)] // this function is explicitly panicky
+            let bytes_to_write = F::Index::iule_from_usize(idx).expect(F::Index::TOO_LARGE_ERROR);
+            idx_slice.copy_from_slice(ULE::slice_as_bytes(&[bytes_to_write]));
+
+            idx_offset = idx_limit;
+        }
+
+        let dat_limit = dat_offset + element_len;
+        #[expect(clippy::indexing_slicing)] // Function contract allows panicky behavior
+        let dat_slice = &mut output[dat_offset..dat_limit];
+        element.encode_var_ule_write(dat_slice);
+        debug_assert_eq!(T::validate_bytes(dat_slice), Ok(()));
+        dat_offset = dat_limit;
+    }
+
+    debug_assert_eq!(idx_offset, F::Index::SIZE * (elements.len() - 1));
+    assert_eq!(dat_offset, output.len());
+}
+
+/// Writes the bytes for a VarZeroSlice into an output buffer.
+///
+/// Every byte in the buffer will be initialized after calling this function.
+///
+/// # Panics
+///
+/// Panics if the buffer is not exactly the correct length.
+pub fn write_serializable_bytes<T, A, F>(elements: &[A], output: &mut [u8])
+where
+    T: VarULE + ?Sized,
+    A: EncodeAsVarULE<T>,
+    F: VarZeroVecFormat,
+{
+    if elements.is_empty() {
+        return;
+    }
+    assert!(elements.len() <= F::Len::MAX_VALUE as usize);
+    #[expect(clippy::expect_used)] // This function is explicitly panicky
+    let num_elements_ule = F::Len::iule_from_usize(elements.len()).expect(F::Len::TOO_LARGE_ERROR);
+    #[expect(clippy::indexing_slicing)] // Function contract allows panicky behavior
+    output[0..F::Len::SIZE].copy_from_slice(ULE::slice_as_bytes(&[num_elements_ule]));
+
+    #[expect(clippy::indexing_slicing)] // Function contract allows panicky behavior
+    write_serializable_bytes_without_length::<T, A, F>(elements, &mut output[F::Len::SIZE..]);
+}
+
+pub fn compute_serializable_len_without_length<T, A, F>(elements: &[A]) -> Option<u32>
+where
+    T: VarULE + ?Sized,
+    A: EncodeAsVarULE<T>,
+    F: VarZeroVecFormat,
+{
+    let elements_len = elements.len();
+    let Some(elements_len_minus_one) = elements_len.checked_sub(1) else {
+        // Empty vec is optimized to an empty byte representation
+        return Some(0);
+    };
+    let idx_len: u32 = u32::try_from(elements_len_minus_one)
+        .ok()?
+        .checked_mul(F::Index::SIZE as u32)?;
+    let data_len: u32 = elements
+        .iter()
+        .map(|v| u32::try_from(v.encode_var_ule_len()).ok())
+        .try_fold(0u32, |s, v| s.checked_add(v?))?;
+    let ret = idx_len.checked_add(data_len);
+    if let Some(r) = ret {
+        if r >= F::Index::MAX_VALUE {
+            return None;
+        }
+    }
+    ret
+}
+
+pub fn compute_serializable_len<T, A, F>(elements: &[A]) -> Option<u32>
+where
+    T: VarULE + ?Sized,
+    A: EncodeAsVarULE<T>,
+    F: VarZeroVecFormat,
+{
+    compute_serializable_len_without_length::<T, A, F>(elements).map(|x| x + F::Len::SIZE as u32)
+}
diff --git a/vendor/zerovec/src/varzerovec/databake.rs b/vendor/zerovec/src/varzerovec/databake.rs
new file mode 100644
index 00000000..1eec39de
--- /dev/null
+++ b/vendor/zerovec/src/varzerovec/databake.rs
@@ -0,0 +1,132 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::vecs::{Index16, Index32};
+use crate::{ule::VarULE, VarZeroSlice, VarZeroVec};
+use databake::*;
+
+impl<T: VarULE + ?Sized> Bake for VarZeroVec<'_, T, Index16> {
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("zerovec");
+        if self.is_empty() {
+            quote! { zerovec::vecs::VarZeroVec16::new() }
+        } else {
+            let bytes = databake::Bake::bake(&self.as_bytes(), env);
+            // Safety: bytes was obtained from a VarZeroVec via as_bytes() above,
+            // and thus is valid for unchecked construction.
+            quote! { unsafe { zerovec::vecs::VarZeroVec16::from_bytes_unchecked(#bytes) } }
+        }
+    }
+}
+
+impl<T: VarULE + ?Sized> Bake for VarZeroVec<'_, T, Index32> {
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("zerovec");
+        if self.is_empty() {
+            quote! { zerovec::vecs::VarZeroVec32::new() }
+        } else {
+            let bytes = databake::Bake::bake(&self.as_bytes(), env);
+            // Safety: bytes was obtained from a VarZeroVec via as_bytes() above,
+            // and thus is valid for unchecked construction.
+            quote! { unsafe { zerovec::vecs::VarZeroVec32::from_bytes_unchecked(#bytes) } }
+        }
+    }
+}
+
+impl<T: VarULE + ?Sized> BakeSize for VarZeroVec<'_, T, Index16> {
+    fn borrows_size(&self) -> usize {
+        self.as_bytes().len()
+    }
+}
+
+impl<T: VarULE + ?Sized> BakeSize for VarZeroVec<'_, T, Index32> {
+    fn borrows_size(&self) -> usize {
+        self.as_bytes().len()
+    }
+}
+
+impl<T: VarULE + ?Sized> Bake for &VarZeroSlice<T, Index16> {
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("zerovec");
+        if self.is_empty() {
+            quote! { zerovec::vecs::VarZeroSlice16::new_empty() }
+        } else {
+            let bytes = databake::Bake::bake(&self.as_bytes(), env);
+            // Safety: bytes was obtained from a VarZeroSlice via as_bytes() above,
+            // and thus is valid for unchecked construction.
+            quote! { unsafe { zerovec::vecs::VarZeroSlice16::from_bytes_unchecked(#bytes) } }
+        }
+    }
+}
+
+impl<T: VarULE + ?Sized> Bake for &VarZeroSlice<T, Index32> {
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("zerovec");
+        if self.is_empty() {
+            quote! { zerovec::vecs::VarZeroSlice32::new_empty() }
+        } else {
+            let bytes = databake::Bake::bake(&self.as_bytes(), env);
+            // Safety: bytes was obtained from a VarZeroSlice via as_bytes() above,
+            // and thus is valid for unchecked construction.
+            quote! { unsafe { zerovec::vecs::VarZeroSlice32::from_bytes_unchecked(#bytes) } }
+        }
+    }
+}
+
+impl<T: VarULE + ?Sized> BakeSize for &VarZeroSlice<T, Index16> {
+    fn borrows_size(&self) -> usize {
+        if self.is_empty() {
+            0
+        } else {
+            self.as_bytes().len()
+        }
+    }
+}
+
+impl<T: VarULE + ?Sized> BakeSize for &VarZeroSlice<T, Index32> {
+    fn borrows_size(&self) -> usize {
+        if self.is_empty() {
+            0
+        } else {
+            self.as_bytes().len()
+        }
+    }
+}
+
+#[test]
+fn test_baked_vec() {
+    test_bake!(
+        VarZeroVec<str>,
+        const,
+        crate::vecs::VarZeroVec16::new(),
+        zerovec
+    );
+
+    test_bake!(
+        VarZeroVec<str>,
+        const,
+        unsafe {
+            crate::vecs::VarZeroVec16::from_bytes_unchecked(b"\x02\0\0\0\0\0\x05\0helloworld")
+        },
+        zerovec
+    );
+}
+
+#[test]
+fn test_baked_slice() {
+    test_bake!(
+        &VarZeroSlice<str>,
+        const,
+        crate::vecs::VarZeroSlice16::new_empty(),
+        zerovec
+    );
+    test_bake!(
+        &VarZeroSlice<str>,
+        const,
+        unsafe {
+            crate::vecs::VarZeroSlice16::from_bytes_unchecked(b"\x02\0\0\0\0\0\x05\0helloworld")
+        },
+        zerovec
+    );
+}
diff --git a/vendor/zerovec/src/varzerovec/error.rs b/vendor/zerovec/src/varzerovec/error.rs
new file mode 100644
index 00000000..b099285d
--- /dev/null
+++ b/vendor/zerovec/src/varzerovec/error.rs
@@ -0,0 +1,24 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::fmt::Display;
+
+#[derive(Debug)]
+pub enum VarZeroVecFormatError {
+    /// The byte buffer was not in the appropriate format for VarZeroVec.
+    Metadata,
+    /// One of the values could not be decoded.
+    Values(crate::ule::UleError),
+}
+
+impl core::error::Error for VarZeroVecFormatError {}
+
+impl Display for VarZeroVecFormatError {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+        match self {
+            Self::Metadata => write!(f, "VarZeroVecFormatError: metadata"),
+            Self::Values(e) => write!(f, "VarZeroVecFormatError: {e}"),
+        }
+    }
+}
diff --git a/vendor/zerovec/src/varzerovec/lengthless.rs b/vendor/zerovec/src/varzerovec/lengthless.rs
new file mode 100644
index 00000000..9659efba
--- /dev/null
+++ b/vendor/zerovec/src/varzerovec/lengthless.rs
@@ -0,0 +1,116 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::components::VarZeroVecComponents;
+use super::*;
+use crate::ule::*;
+use core::marker::PhantomData;
+use core::mem;
+
+/// A slice representing the index and data tables of a VarZeroVec,
+/// *without* any length fields. The length field is expected to be stored elsewhere.
+///
+/// Without knowing the length this is of course unsafe to use directly.
+#[repr(transparent)]
+#[derive(PartialEq, Eq)]
+pub(crate) struct VarZeroLengthlessSlice<T: ?Sized, F> {
+    marker: PhantomData<(F, T)>,
+    /// The original slice this was constructed from
+    // Safety invariant: This field must have successfully passed through
+    // VarZeroVecComponents::parse_bytes_with_length() with the length
+    // associated with this value.
+    entire_slice: [u8],
+}
+
+impl<T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroLengthlessSlice<T, F> {
+    /// Obtain a [`VarZeroVecComponents`] borrowing from the internal buffer
+    ///
+    /// Safety: `len` must be the length associated with this value
+    #[inline]
+    pub(crate) unsafe fn as_components<'a>(&'a self, len: u32) -> VarZeroVecComponents<'a, T, F> {
+        unsafe {
+            // safety: VarZeroSlice is guaranteed to parse here
+            VarZeroVecComponents::from_bytes_unchecked_with_length(len, &self.entire_slice)
+        }
+    }
+
+    /// Parse a VarZeroLengthlessSlice from a slice of the appropriate format
+    ///
+    /// Slices of the right format can be obtained via [`VarZeroSlice::as_bytes()`]
+    pub fn parse_bytes<'a>(len: u32, slice: &'a [u8]) -> Result<&'a Self, UleError> {
+        let _ = VarZeroVecComponents::<T, F>::parse_bytes_with_length(len, slice)
+            .map_err(|_| UleError::parse::<Self>())?;
+        unsafe {
+            // Safety: We just verified that it is of the correct format.
+            Ok(Self::from_bytes_unchecked(slice))
+        }
+    }
+
+    /// Uses a `&[u8]` buffer as a `VarZeroLengthlessSlice<T>` without any verification.
+    ///
+    /// # Safety
+    ///
+    /// `bytes` need to be an output from [`VarZeroLengthlessSlice::as_bytes()`], or alternatively
+    /// successfully pass through `parse_bytes` (with `len`)
+    ///
+    /// The length associated with this value will be the length associated with the original slice.
+    pub(crate) const unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        // self is really just a wrapper around a byte slice
+        mem::transmute(bytes)
+    }
+
+    /// Uses a `&mut [u8]` buffer as a `VarZeroLengthlessSlice<T>` without any verification.
+    ///
+    /// # Safety
+    ///
+    /// `bytes` need to be an output from [`VarZeroLengthlessSlice::as_bytes()`], or alternatively
+    /// be valid to be passed to `from_bytes_unchecked_with_length`
+    ///
+    /// The length associated with this value will be the length associated with the original slice.
+    pub(crate) unsafe fn from_bytes_unchecked_mut(bytes: &mut [u8]) -> &mut Self {
+        // self is really just a wrapper around a byte slice
+        mem::transmute(bytes)
+    }
+
+    /// Get one of this slice's elements
+    ///
+    /// # Safety
+    ///
+    /// `index` must be in range, and `len` must be the length associated with this
+    /// instance of VarZeroLengthlessSlice.
+    pub(crate) unsafe fn get_unchecked(&self, len: u32, idx: usize) -> &T {
+        self.as_components(len).get_unchecked(idx)
+    }
+
+    /// Get a reference to the entire encoded backing buffer of this slice
+    ///
+    /// The bytes can be passed back to [`Self::parse_bytes()`].
+    ///
+    /// To take the bytes as a vector, see [`VarZeroVec::into_bytes()`].
+    #[inline]
+    pub(crate) const fn as_bytes(&self) -> &[u8] {
+        &self.entire_slice
+    }
+
+    /// Get the bytes behind this as a mutable slice
+    ///
+    /// # Safety
+    ///
+    ///  - `len` is the length associated with this VarZeroLengthlessSlice
+    ///  - The resultant slice is only mutated in a way such that it remains a valid `T`
+    ///
+    /// # Panics
+    ///
+    ///  Panics when idx is not in bounds for this slice
+    pub(crate) unsafe fn get_bytes_at_mut(&mut self, len: u32, idx: usize) -> &mut [u8] {
+        let components = self.as_components(len);
+        let range = components.get_things_range(idx);
+        let offset = components.get_indices_size();
+
+        // get_indices_size() returns the start of the things slice, and get_things_range()
+        // returns a range in-bounds of the things slice
+        #[expect(clippy::indexing_slicing)]
+        &mut self.entire_slice[offset..][range]
+    }
+}
diff --git a/vendor/zerovec/src/varzerovec/mod.rs b/vendor/zerovec/src/varzerovec/mod.rs
new file mode 100644
index 00000000..43ae91df
--- /dev/null
+++ b/vendor/zerovec/src/varzerovec/mod.rs
@@ -0,0 +1,31 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! See [`VarZeroVec`](crate::VarZeroVec) for details
+
+pub(crate) mod components;
+pub(crate) mod error;
+pub(crate) mod lengthless;
+#[cfg(feature = "alloc")]
+pub(crate) mod owned;
+pub(crate) mod slice;
+pub(crate) mod vec;
+
+#[cfg(feature = "databake")]
+mod databake;
+
+#[cfg(feature = "serde")]
+mod serde;
+
+pub use crate::{VarZeroSlice, VarZeroVec};
+
+#[doc(hidden)]
+pub use components::VarZeroVecComponents;
+
+pub use components::{Index16, Index32, Index8, VarZeroSliceIter, VarZeroVecFormat};
+
+#[cfg(feature = "alloc")]
+pub use owned::VarZeroVecOwned;
+
+pub use error::VarZeroVecFormatError;
diff --git a/vendor/zerovec/src/varzerovec/owned.rs b/vendor/zerovec/src/varzerovec/owned.rs
new file mode 100644
index 00000000..7a23b4f4
--- /dev/null
+++ b/vendor/zerovec/src/varzerovec/owned.rs
@@ -0,0 +1,696 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// The mutation operations in this file should panic to prevent undefined behavior
+#![allow(clippy::unwrap_used)]
+#![allow(clippy::expect_used)]
+#![allow(clippy::indexing_slicing)]
+#![allow(clippy::panic)]
+
+use super::*;
+use crate::ule::*;
+use alloc::vec::Vec;
+use core::any;
+use core::convert::TryInto;
+use core::marker::PhantomData;
+use core::ops::Deref;
+use core::ops::Range;
+use core::{fmt, ptr, slice};
+
+use super::components::IntegerULE;
+
+/// A fully-owned [`VarZeroVec`]. This type has no lifetime but has the same
+/// internal buffer representation of [`VarZeroVec`], making it cheaply convertible to
+/// [`VarZeroVec`] and [`VarZeroSlice`].
+///
+/// The `F` type parameter is a [`VarZeroVecFormat`] (see its docs for more details), which can be used to select the
+/// precise format of the backing buffer with various size and performance tradeoffs. It defaults to [`Index16`].
+pub struct VarZeroVecOwned<T: ?Sized, F = Index16> {
+    marker1: PhantomData<T>,
+    marker2: PhantomData<F>,
+    // safety invariant: must parse into a valid VarZeroVecComponents
+    entire_slice: Vec<u8>,
+}
+
+impl<T: ?Sized, F> Clone for VarZeroVecOwned<T, F> {
+    fn clone(&self) -> Self {
+        VarZeroVecOwned {
+            marker1: PhantomData,
+            marker2: PhantomData,
+            entire_slice: self.entire_slice.clone(),
+        }
+    }
+}
+
+// The effect of a shift on the indices in the varzerovec.
+#[derive(PartialEq)]
+enum ShiftType {
+    Insert,
+    Replace,
+    Remove,
+}
+
+impl<T: VarULE + ?Sized, F: VarZeroVecFormat> Deref for VarZeroVecOwned<T, F> {
+    type Target = VarZeroSlice<T, F>;
+    fn deref(&self) -> &VarZeroSlice<T, F> {
+        self.as_slice()
+    }
+}
+
+impl<T: VarULE + ?Sized, F> VarZeroVecOwned<T, F> {
+    /// Construct an empty VarZeroVecOwned
+    pub fn new() -> Self {
+        Self {
+            marker1: PhantomData,
+            marker2: PhantomData,
+            entire_slice: Vec::new(),
+        }
+    }
+}
+
+impl<T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroVecOwned<T, F> {
+    /// Construct a VarZeroVecOwned from a [`VarZeroSlice`] by cloning the internal data
+    pub fn from_slice(slice: &VarZeroSlice<T, F>) -> Self {
+        Self {
+            marker1: PhantomData,
+            marker2: PhantomData,
+            entire_slice: slice.as_bytes().into(),
+        }
+    }
+
+    /// Construct a VarZeroVecOwned from a list of elements
+    pub fn try_from_elements<A>(elements: &[A]) -> Result<Self, &'static str>
+    where
+        A: EncodeAsVarULE<T>,
+    {
+        Ok(if elements.is_empty() {
+            Self::from_slice(VarZeroSlice::new_empty())
+        } else {
+            Self {
+                marker1: PhantomData,
+                marker2: PhantomData,
+                // TODO(#1410): Rethink length errors in VZV.
+                entire_slice: components::get_serializable_bytes_non_empty::<T, A, F>(elements)
+                    .ok_or(F::Index::TOO_LARGE_ERROR)?,
+            }
+        })
+    }
+
+    /// Obtain this `VarZeroVec` as a [`VarZeroSlice`]
+    pub fn as_slice(&self) -> &VarZeroSlice<T, F> {
+        let slice: &[u8] = &self.entire_slice;
+        unsafe {
+            // safety: the slice is known to come from a valid parsed VZV
+            VarZeroSlice::from_bytes_unchecked(slice)
+        }
+    }
+
+    /// Try to allocate a buffer with enough capacity for `capacity`
+    /// elements. Since `T` can take up an arbitrary size this will
+    /// just allocate enough space for 4-byte Ts
+    pub(crate) fn with_capacity(capacity: usize) -> Self {
+        Self {
+            marker1: PhantomData,
+            marker2: PhantomData,
+            entire_slice: Vec::with_capacity(capacity * (F::Index::SIZE + 4)),
+        }
+    }
+
+    /// Try to reserve space for `capacity`
+    /// elements. Since `T` can take up an arbitrary size this will
+    /// just allocate enough space for 4-byte Ts
+    pub(crate) fn reserve(&mut self, capacity: usize) {
+        self.entire_slice.reserve(capacity * (F::Index::SIZE + 4))
+    }
+
+    /// Get the position of a specific element in the data segment.
+    ///
+    /// If `idx == self.len()`, it will return the size of the data segment (where a new element would go).
+    ///
+    /// ## Safety
+    /// `idx <= self.len()` and `self.as_encoded_bytes()` is well-formed.
+    unsafe fn element_position_unchecked(&self, idx: usize) -> usize {
+        let len = self.len();
+        let out = if idx == len {
+            self.entire_slice.len() - F::Len::SIZE - (F::Index::SIZE * (len - 1))
+        } else if let Some(idx) = self.index_data(idx) {
+            idx.iule_to_usize()
+        } else {
+            0
+        };
+        debug_assert!(out + F::Len::SIZE + (len - 1) * F::Index::SIZE <= self.entire_slice.len());
+        out
+    }
+
+    /// Get the range of a specific element in the data segment.
+    ///
+    /// ## Safety
+    /// `idx < self.len()` and `self.as_encoded_bytes()` is well-formed.
+    unsafe fn element_range_unchecked(&self, idx: usize) -> core::ops::Range<usize> {
+        let start = self.element_position_unchecked(idx);
+        let end = self.element_position_unchecked(idx + 1);
+        debug_assert!(start <= end, "{start} > {end}");
+        start..end
+    }
+
+    /// Set the number of elements in the list without any checks.
+    ///
+    /// ## Safety
+    /// No safe functions may be called until `self.as_encoded_bytes()` is well-formed.
+    unsafe fn set_len(&mut self, len: usize) {
+        assert!(len <= F::Len::MAX_VALUE as usize);
+        let len_bytes = len.to_le_bytes();
+        let len_ule = F::Len::iule_from_usize(len).expect(F::Len::TOO_LARGE_ERROR);
+        self.entire_slice[0..F::Len::SIZE].copy_from_slice(ULE::slice_as_bytes(&[len_ule]));
+        // Double-check that the length fits in the length field
+        assert_eq!(len_bytes[F::Len::SIZE..].iter().sum::<u8>(), 0);
+    }
+
+    /// Get the range in the full data for a given index. Returns None for index 0
+    /// since there is no stored index for it.
+    fn index_range(index: usize) -> Option<Range<usize>> {
+        let index_minus_one = index.checked_sub(1)?;
+        let pos = F::Len::SIZE + F::Index::SIZE * index_minus_one;
+        Some(pos..pos + F::Index::SIZE)
+    }
+
+    /// Return the raw bytes representing the given `index`. Returns None when given index 0
+    ///
+    /// ## Safety
+    /// The index must be valid, and self.as_encoded_bytes() must be well-formed
+    unsafe fn index_data(&self, index: usize) -> Option<&F::Index> {
+        let index_range = Self::index_range(index)?;
+        Some(&F::Index::slice_from_bytes_unchecked(&self.entire_slice[index_range])[0])
+    }
+
+    /// Return the mutable slice representing the given `index`. Returns None when given index 0
+    ///
+    /// ## Safety
+    /// The index must be valid. self.as_encoded_bytes() must have allocated space
+    /// for this index, but need not have its length appropriately set.
+    unsafe fn index_data_mut(&mut self, index: usize) -> Option<&mut F::Index> {
+        let ptr = self.entire_slice.as_mut_ptr();
+        let range = Self::index_range(index)?;
+
+        // Doing this instead of just `get_unchecked_mut()` because it's unclear
+        // if `get_unchecked_mut()` can be called out of bounds on a slice even
+        // if we know the buffer is larger.
+        let data = slice::from_raw_parts_mut(ptr.add(range.start), F::Index::SIZE);
+        Some(&mut F::Index::iule_from_bytes_unchecked_mut(data)[0])
+    }
+
+    /// Shift the indices starting with and after `starting_index` by the provided `amount`.
+    ///
+    /// ## Panics
+    /// Should never be called with a starting index of 0, since that index cannot be shifted.
+    ///
+    /// ## Safety
+    /// Adding `amount` to each index after `starting_index` must not result in the slice from becoming malformed.
+    /// The length of the slice must be correctly set.
+    unsafe fn shift_indices(&mut self, starting_index: usize, amount: i32) {
+        let normalized_idx = starting_index
+            .checked_sub(1)
+            .expect("shift_indices called with a 0 starting index");
+        let len = self.len();
+        let indices = F::Index::iule_from_bytes_unchecked_mut(
+            &mut self.entire_slice[F::Len::SIZE..F::Len::SIZE + F::Index::SIZE * (len - 1)],
+        );
+        for idx in &mut indices[normalized_idx..] {
+            let mut new_idx = idx.iule_to_usize();
+            if amount > 0 {
+                new_idx = new_idx.checked_add(amount.try_into().unwrap()).unwrap();
+            } else {
+                new_idx = new_idx.checked_sub((-amount).try_into().unwrap()).unwrap();
+            }
+            *idx = F::Index::iule_from_usize(new_idx).expect(F::Index::TOO_LARGE_ERROR);
+        }
+    }
+
+    /// Get this [`VarZeroVecOwned`] as a borrowed [`VarZeroVec`]
+    ///
+    /// If you wish to repeatedly call methods on this [`VarZeroVecOwned`],
+    /// it is more efficient to perform this conversion first
+    pub fn as_varzerovec<'a>(&'a self) -> VarZeroVec<'a, T, F> {
+        self.as_slice().into()
+    }
+
+    /// Empty the vector
+    pub fn clear(&mut self) {
+        self.entire_slice.clear()
+    }
+
+    /// Consume this vector and return the backing buffer
+    #[inline]
+    pub fn into_bytes(self) -> Vec<u8> {
+        self.entire_slice
+    }
+
+    /// Invalidate and resize the data at an index, optionally inserting or removing the index.
+    /// Also updates affected indices and the length.
+    ///
+    /// `new_size` is the encoded byte size of the element that is going to be inserted
+    ///
+    /// Returns a slice to the new element data - it doesn't contain uninitialized data but its value is indeterminate.
+    ///
+    /// ## Safety
+    /// - `index` must be a valid index, or, if `shift_type == ShiftType::Insert`, `index == self.len()` is allowed.
+    /// - `new_size` musn't result in the data segment growing larger than `F::Index::MAX_VALUE`.
+    unsafe fn shift(&mut self, index: usize, new_size: usize, shift_type: ShiftType) -> &mut [u8] {
+        // The format of the encoded data is:
+        //  - four bytes of "len"
+        //  - len*4 bytes for an array of indices
+        //  - the actual data to which the indices point
+        //
+        // When inserting or removing an element, the size of the indices segment must be changed,
+        // so the data before the target element must be shifted by 4 bytes in addition to the
+        // shifting needed for the new element size.
+        let len = self.len();
+        let slice_len = self.entire_slice.len();
+
+        let prev_element = match shift_type {
+            ShiftType::Insert => {
+                let pos = self.element_position_unchecked(index);
+                // In the case of an insert, there's no previous element,
+                // so it's an empty range at the new position.
+                pos..pos
+            }
+            _ => self.element_range_unchecked(index),
+        };
+
+        // How much shifting must be done in bytes due to removal/insertion of an index.
+        let index_shift: i64 = match shift_type {
+            ShiftType::Insert => F::Index::SIZE as i64,
+            ShiftType::Replace => 0,
+            ShiftType::Remove => -(F::Index::SIZE as i64),
+        };
+        // The total shift in byte size of the owned slice.
+        let shift: i64 =
+            new_size as i64 - (prev_element.end - prev_element.start) as i64 + index_shift;
+        let new_slice_len = slice_len.wrapping_add(shift as usize);
+        if shift > 0 {
+            if new_slice_len > F::Index::MAX_VALUE as usize {
+                panic!(
+                    "Attempted to grow VarZeroVec to an encoded size that does not fit within the length size used by {}",
+                    any::type_name::<F>()
+                );
+            }
+            self.entire_slice.resize(new_slice_len, 0);
+        }
+
+        // Now that we've ensured there's enough space, we can shift the data around.
+        {
+            // Note: There are no references introduced between pointer creation and pointer use, and all
+            //       raw pointers are derived from a single &mut. This preserves pointer provenance.
+            let slice_range = self.entire_slice.as_mut_ptr_range();
+            // The start of the indices buffer
+            let indices_start = slice_range.start.add(F::Len::SIZE);
+            let old_slice_end = slice_range.start.add(slice_len);
+            let data_start = indices_start.add((len - 1) * F::Index::SIZE);
+            let prev_element_p =
+                data_start.add(prev_element.start)..data_start.add(prev_element.end);
+
+            // The memory range of the affected index.
+            // When inserting: where the new index goes.
+            // When removing:  where the index being removed is.
+            // When replacing: unused.
+            // Will be None when the affected index is index 0, which is special
+            let index_range = if let Some(index_minus_one) = index.checked_sub(1) {
+                let index_start = indices_start.add(F::Index::SIZE * index_minus_one);
+                Some(index_start..index_start.add(F::Index::SIZE))
+            } else {
+                None
+            };
+
+            unsafe fn shift_bytes(block: Range<*const u8>, to: *mut u8) {
+                debug_assert!(block.end >= block.start);
+                ptr::copy(block.start, to, block.end.offset_from(block.start) as usize);
+            }
+
+            if shift_type == ShiftType::Remove {
+                if let Some(ref index_range) = index_range {
+                    shift_bytes(index_range.end..prev_element_p.start, index_range.start);
+                } else {
+                    // We are removing the first index, so we skip the second index and copy it over. The second index
+                    // is now zero and unnecessary.
+                    shift_bytes(
+                        indices_start.add(F::Index::SIZE)..prev_element_p.start,
+                        indices_start,
+                    )
+                }
+            }
+
+            // Shift data after the element to its new position.
+            shift_bytes(
+                prev_element_p.end..old_slice_end,
+                prev_element_p
+                    .start
+                    .offset((new_size as i64 + index_shift) as isize),
+            );
+
+            let first_affected_index = match shift_type {
+                ShiftType::Insert => {
+                    if let Some(index_range) = index_range {
+                        // Move data before the element forward by 4 to make space for a new index.
+                        shift_bytes(index_range.start..prev_element_p.start, index_range.end);
+                        let index_data = self
+                            .index_data_mut(index)
+                            .expect("If index_range is some, index is > 0 and should not panic in index_data_mut");
+                        *index_data = F::Index::iule_from_usize(prev_element.start)
+                            .expect(F::Index::TOO_LARGE_ERROR);
+                    } else {
+                        // We are adding a new index 0. There's nothing in the indices array for index 0, but the element
+                        // that is currently at index 0 will become index 1 and need a value
+                        // We first shift bytes to make space
+                        shift_bytes(
+                            indices_start..prev_element_p.start,
+                            indices_start.add(F::Index::SIZE),
+                        );
+                        // And then we write a temporary zero to the zeroeth index, which will get shifted later
+                        let index_data = self
+                            .index_data_mut(1)
+                            .expect("Should be able to write to index 1");
+                        *index_data = F::Index::iule_from_usize(0).expect("0 is always valid!");
+                    }
+
+                    self.set_len(len + 1);
+                    index + 1
+                }
+                ShiftType::Remove => {
+                    self.set_len(len - 1);
+                    if index == 0 {
+                        // We don't need to shift index 0 since index 0 is not stored in the indices buffer
+                        index + 1
+                    } else {
+                        index
+                    }
+                }
+                ShiftType::Replace => index + 1,
+            };
+            // No raw pointer use should occur after this point (because of self.index_data and self.set_len).
+
+            // Set the new slice length. This must be done after shifting data around to avoid uninitialized data.
+            self.entire_slice.set_len(new_slice_len);
+            // Shift the affected indices.
+            self.shift_indices(first_affected_index, (shift - index_shift) as i32);
+        };
+
+        debug_assert!(self.verify_integrity());
+
+        // Return a mut slice to the new element data.
+        let element_pos = F::Len::SIZE
+            + (self.len() - 1) * F::Index::SIZE
+            + self.element_position_unchecked(index);
+        &mut self.entire_slice[element_pos..element_pos + new_size]
+    }
+
+    /// Checks the internal invariants of the vec to ensure safe code will not cause UB.
+    /// Returns whether integrity was verified.
+    ///
+    /// Note: an index is valid if it doesn't point to data past the end of the slice and is
+    /// less than or equal to all future indices. The length of the index segment is not part of each index.
+    fn verify_integrity(&self) -> bool {
+        if self.is_empty() {
+            if self.entire_slice.is_empty() {
+                return true;
+            } else {
+                panic!(
+                    "VarZeroVecOwned integrity: Found empty VarZeroVecOwned with a nonempty slice"
+                );
+            }
+        }
+        let len = unsafe {
+            <F::Len as ULE>::slice_from_bytes_unchecked(&self.entire_slice[..F::Len::SIZE])[0]
+                .iule_to_usize()
+        };
+        if len == 0 {
+            // An empty vec must have an empty slice: there is only a single valid byte representation.
+            panic!("VarZeroVecOwned integrity: Found empty VarZeroVecOwned with a nonempty slice");
+        }
+        if self.entire_slice.len() < F::Len::SIZE + (len - 1) * F::Index::SIZE {
+            panic!("VarZeroVecOwned integrity: Not enough room for the indices");
+        }
+        let data_len = self.entire_slice.len() - F::Len::SIZE - (len - 1) * F::Index::SIZE;
+        if data_len > F::Index::MAX_VALUE as usize {
+            panic!("VarZeroVecOwned integrity: Data segment is too long");
+        }
+
+        // Test index validity.
+        let indices = unsafe {
+            F::Index::slice_from_bytes_unchecked(
+                &self.entire_slice[F::Len::SIZE..F::Len::SIZE + (len - 1) * F::Index::SIZE],
+            )
+        };
+        for idx in indices {
+            if idx.iule_to_usize() > data_len {
+                panic!("VarZeroVecOwned integrity: Indices must not point past the data segment");
+            }
+        }
+        for window in indices.windows(2) {
+            if window[0].iule_to_usize() > window[1].iule_to_usize() {
+                panic!("VarZeroVecOwned integrity: Indices must be in non-decreasing order");
+            }
+        }
+        true
+    }
+
+    /// Insert an element at the end of this vector
+    pub fn push<A: EncodeAsVarULE<T> + ?Sized>(&mut self, element: &A) {
+        self.insert(self.len(), element)
+    }
+
+    /// Insert an element at index `idx`
+    pub fn insert<A: EncodeAsVarULE<T> + ?Sized>(&mut self, index: usize, element: &A) {
+        let len = self.len();
+        if index > len {
+            panic!("Called out-of-bounds insert() on VarZeroVec, index {index} len {len}");
+        }
+
+        let value_len = element.encode_var_ule_len();
+
+        if len == 0 {
+            let header_len = F::Len::SIZE; // Index array is size 0 for len = 1
+            let cap = header_len + value_len;
+            self.entire_slice.resize(cap, 0);
+            self.entire_slice[0] = 1; // set length
+            element.encode_var_ule_write(&mut self.entire_slice[header_len..]);
+            return;
+        }
+
+        assert!(value_len < F::Index::MAX_VALUE as usize);
+        unsafe {
+            let place = self.shift(index, value_len, ShiftType::Insert);
+            element.encode_var_ule_write(place);
+        }
+    }
+
+    /// Remove the element at index `idx`
+    pub fn remove(&mut self, index: usize) {
+        let len = self.len();
+        if index >= len {
+            panic!("Called out-of-bounds remove() on VarZeroVec, index {index} len {len}");
+        }
+        if len == 1 {
+            // This is removing the last element. Set the slice to empty to ensure all empty vecs have empty data slices.
+            self.entire_slice.clear();
+            return;
+        }
+        unsafe {
+            self.shift(index, 0, ShiftType::Remove);
+        }
+    }
+
+    /// Replace the element at index `idx` with another
+    pub fn replace<A: EncodeAsVarULE<T> + ?Sized>(&mut self, index: usize, element: &A) {
+        let len = self.len();
+        if index >= len {
+            panic!("Called out-of-bounds replace() on VarZeroVec, index {index} len {len}");
+        }
+
+        let value_len = element.encode_var_ule_len();
+
+        assert!(value_len < F::Index::MAX_VALUE as usize);
+        unsafe {
+            let place = self.shift(index, value_len, ShiftType::Replace);
+            element.encode_var_ule_write(place);
+        }
+    }
+}
+
+impl<T: VarULE + ?Sized, F: VarZeroVecFormat> fmt::Debug for VarZeroVecOwned<T, F>
+where
+    T: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        VarZeroSlice::fmt(self, f)
+    }
+}
+
+impl<T: VarULE + ?Sized, F> Default for VarZeroVecOwned<T, F> {
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<T, A, F> PartialEq<&'_ [A]> for VarZeroVecOwned<T, F>
+where
+    T: VarULE + ?Sized,
+    T: PartialEq,
+    A: AsRef<T>,
+    F: VarZeroVecFormat,
+{
+    #[inline]
+    fn eq(&self, other: &&[A]) -> bool {
+        self.iter().eq(other.iter().map(|t| t.as_ref()))
+    }
+}
+
+impl<'a, T: ?Sized + VarULE, F: VarZeroVecFormat> From<&'a VarZeroSlice<T, F>>
+    for VarZeroVecOwned<T, F>
+{
+    fn from(other: &'a VarZeroSlice<T, F>) -> Self {
+        Self::from_slice(other)
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::VarZeroVecOwned;
+    #[test]
+    fn test_insert_integrity() {
+        let mut items: Vec<String> = Vec::new();
+        let mut zerovec = VarZeroVecOwned::<str>::new();
+
+        // Insert into an empty vec.
+        items.insert(0, "1234567890".into());
+        zerovec.insert(0, "1234567890");
+        assert_eq!(zerovec, &*items);
+
+        zerovec.insert(1, "foo3");
+        items.insert(1, "foo3".into());
+        assert_eq!(zerovec, &*items);
+
+        // Insert at the end.
+        items.insert(items.len(), "qwertyuiop".into());
+        zerovec.insert(zerovec.len(), "qwertyuiop");
+        assert_eq!(zerovec, &*items);
+
+        items.insert(0, "asdfghjkl;".into());
+        zerovec.insert(0, "asdfghjkl;");
+        assert_eq!(zerovec, &*items);
+
+        items.insert(2, "".into());
+        zerovec.insert(2, "");
+        assert_eq!(zerovec, &*items);
+    }
+
+    #[test]
+    // ensure that inserting empty items works
+    fn test_empty_inserts() {
+        let mut items: Vec<String> = Vec::new();
+        let mut zerovec = VarZeroVecOwned::<str>::new();
+
+        // Insert into an empty vec.
+        items.insert(0, "".into());
+        zerovec.insert(0, "");
+        assert_eq!(zerovec, &*items);
+
+        items.insert(0, "".into());
+        zerovec.insert(0, "");
+        assert_eq!(zerovec, &*items);
+
+        items.insert(0, "1234567890".into());
+        zerovec.insert(0, "1234567890");
+        assert_eq!(zerovec, &*items);
+
+        items.insert(0, "".into());
+        zerovec.insert(0, "");
+        assert_eq!(zerovec, &*items);
+    }
+
+    #[test]
+    fn test_small_insert_integrity() {
+        // Tests that insert() works even when there
+        // is not enough space for the new index in entire_slice.len()
+        let mut items: Vec<String> = Vec::new();
+        let mut zerovec = VarZeroVecOwned::<str>::new();
+
+        // Insert into an empty vec.
+        items.insert(0, "abc".into());
+        zerovec.insert(0, "abc");
+        assert_eq!(zerovec, &*items);
+
+        zerovec.insert(1, "def");
+        items.insert(1, "def".into());
+        assert_eq!(zerovec, &*items);
+    }
+
+    #[test]
+    #[should_panic]
+    fn test_insert_past_end() {
+        VarZeroVecOwned::<str>::new().insert(1, "");
+    }
+
+    #[test]
+    fn test_remove_integrity() {
+        let mut items: Vec<&str> = vec!["apples", "bananas", "eeples", "", "baneenees", "five", ""];
+        let mut zerovec = VarZeroVecOwned::<str>::try_from_elements(&items).unwrap();
+
+        for index in [0, 2, 4, 0, 1, 1, 0] {
+            items.remove(index);
+            zerovec.remove(index);
+            assert_eq!(zerovec, &*items, "index {}, len {}", index, items.len());
+        }
+    }
+
+    #[test]
+    fn test_removing_last_element_clears() {
+        let mut zerovec = VarZeroVecOwned::<str>::try_from_elements(&["buy some apples"]).unwrap();
+        assert!(!zerovec.as_bytes().is_empty());
+        zerovec.remove(0);
+        assert!(zerovec.as_bytes().is_empty());
+    }
+
+    #[test]
+    #[should_panic]
+    fn test_remove_past_end() {
+        VarZeroVecOwned::<str>::new().remove(0);
+    }
+
+    #[test]
+    fn test_replace_integrity() {
+        let mut items: Vec<&str> = vec!["apples", "bananas", "eeples", "", "baneenees", "five", ""];
+        let mut zerovec = VarZeroVecOwned::<str>::try_from_elements(&items).unwrap();
+
+        // Replace with an element of the same size (and the first element)
+        items[0] = "blablah";
+        zerovec.replace(0, "blablah");
+        assert_eq!(zerovec, &*items);
+
+        // Replace with a smaller element
+        items[1] = "twily";
+        zerovec.replace(1, "twily");
+        assert_eq!(zerovec, &*items);
+
+        // Replace an empty element
+        items[3] = "aoeuidhtns";
+        zerovec.replace(3, "aoeuidhtns");
+        assert_eq!(zerovec, &*items);
+
+        // Replace the last element
+        items[6] = "0123456789";
+        zerovec.replace(6, "0123456789");
+        assert_eq!(zerovec, &*items);
+
+        // Replace with an empty element
+        items[2] = "";
+        zerovec.replace(2, "");
+        assert_eq!(zerovec, &*items);
+    }
+
+    #[test]
+    #[should_panic]
+    fn test_replace_past_end() {
+        VarZeroVecOwned::<str>::new().replace(0, "");
+    }
+}
diff --git a/vendor/zerovec/src/varzerovec/serde.rs b/vendor/zerovec/src/varzerovec/serde.rs
new file mode 100644
index 00000000..a7f5004b
--- /dev/null
+++ b/vendor/zerovec/src/varzerovec/serde.rs
@@ -0,0 +1,257 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::{VarZeroSlice, VarZeroVec, VarZeroVecFormat};
+use crate::ule::*;
+use alloc::boxed::Box;
+use alloc::vec::Vec;
+use core::fmt;
+use core::marker::PhantomData;
+use serde::de::{self, Deserialize, Deserializer, SeqAccess, Visitor};
+#[cfg(feature = "serde")]
+use serde::ser::{Serialize, SerializeSeq, Serializer};
+
+struct VarZeroVecVisitor<T: ?Sized, F: VarZeroVecFormat> {
+    #[expect(clippy::type_complexity)] // this is a private marker type, who cares
+    marker: PhantomData<(fn() -> Box<T>, F)>,
+}
+
+impl<T: ?Sized, F: VarZeroVecFormat> Default for VarZeroVecVisitor<T, F> {
+    fn default() -> Self {
+        Self {
+            marker: PhantomData,
+        }
+    }
+}
+
+impl<'de, T, F> Visitor<'de> for VarZeroVecVisitor<T, F>
+where
+    T: VarULE + ?Sized,
+    Box<T>: Deserialize<'de>,
+    F: VarZeroVecFormat,
+{
+    type Value = VarZeroVec<'de, T, F>;
+
+    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+        formatter.write_str("a sequence or borrowed buffer of bytes")
+    }
+
+    fn visit_borrowed_bytes<E>(self, bytes: &'de [u8]) -> Result<Self::Value, E>
+    where
+        E: de::Error,
+    {
+        VarZeroVec::parse_bytes(bytes).map_err(de::Error::custom)
+    }
+
+    fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
+    where
+        A: SeqAccess<'de>,
+    {
+        let mut vec: Vec<Box<T>> = if let Some(capacity) = seq.size_hint() {
+            Vec::with_capacity(capacity)
+        } else {
+            Vec::new()
+        };
+        while let Some(value) = seq.next_element::<Box<T>>()? {
+            vec.push(value);
+        }
+        Ok(VarZeroVec::from(&vec))
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, 'a, T, F> Deserialize<'de> for VarZeroVec<'a, T, F>
+where
+    T: VarULE + ?Sized,
+    Box<T>: Deserialize<'de>,
+    F: VarZeroVecFormat,
+    'de: 'a,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        let visitor = VarZeroVecVisitor::<T, F>::default();
+        if deserializer.is_human_readable() {
+            deserializer.deserialize_seq(visitor)
+        } else {
+            deserializer.deserialize_bytes(visitor)
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, 'a, T, F> Deserialize<'de> for &'a VarZeroSlice<T, F>
+where
+    T: VarULE + ?Sized,
+    F: VarZeroVecFormat,
+    'de: 'a,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            Err(de::Error::custom(
+                "&VarZeroSlice cannot be deserialized from human-readable formats",
+            ))
+        } else {
+            let bytes = <&[u8]>::deserialize(deserializer)?;
+            VarZeroSlice::<T, F>::parse_bytes(bytes).map_err(de::Error::custom)
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, T, F> Deserialize<'de> for Box<VarZeroSlice<T, F>>
+where
+    T: VarULE + ?Sized,
+    Box<T>: Deserialize<'de>,
+    F: VarZeroVecFormat,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        let deserialized = VarZeroVec::<T, F>::deserialize(deserializer)?;
+        Ok(deserialized.to_boxed())
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+#[cfg(feature = "serde")]
+impl<T, F> Serialize for VarZeroVec<'_, T, F>
+where
+    T: Serialize + VarULE + ?Sized,
+    F: VarZeroVecFormat,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        if serializer.is_human_readable() {
+            let mut seq = serializer.serialize_seq(Some(self.len()))?;
+            for value in self.iter() {
+                seq.serialize_element(value)?;
+            }
+            seq.end()
+        } else {
+            serializer.serialize_bytes(self.as_bytes())
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+#[cfg(feature = "serde")]
+impl<T, F> Serialize for VarZeroSlice<T, F>
+where
+    T: Serialize + VarULE + ?Sized,
+    F: VarZeroVecFormat,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        self.as_varzerovec().serialize(serializer)
+    }
+}
+
+#[cfg(test)]
+#[allow(non_camel_case_types)]
+mod test {
+    use crate::{VarZeroSlice, VarZeroVec};
+
+    #[derive(serde::Serialize, serde::Deserialize)]
+    struct DeriveTest_VarZeroVec<'data> {
+        #[serde(borrow)]
+        _data: VarZeroVec<'data, str>,
+    }
+
+    #[derive(serde::Serialize, serde::Deserialize)]
+    struct DeriveTest_VarZeroSlice<'data> {
+        #[serde(borrow)]
+        _data: &'data VarZeroSlice<str>,
+    }
+
+    #[derive(serde::Serialize, serde::Deserialize)]
+    struct DeriveTest_VarZeroVec_of_VarZeroSlice<'data> {
+        #[serde(borrow)]
+        _data: VarZeroVec<'data, VarZeroSlice<str>>,
+    }
+
+    // ["foo", "bar", "baz", "dolor", "quux", "lorem ipsum"];
+    const BYTES: &[u8] = &[
+        6, 0, 3, 0, 6, 0, 9, 0, 14, 0, 18, 0, 102, 111, 111, 98, 97, 114, 98, 97, 122, 100, 111,
+        108, 111, 114, 113, 117, 117, 120, 108, 111, 114, 101, 109, 32, 105, 112, 115, 117, 109,
+    ];
+    const JSON_STR: &str = "[\"foo\",\"bar\",\"baz\",\"dolor\",\"quux\",\"lorem ipsum\"]";
+    const BINCODE_BUF: &[u8] = &[
+        41, 0, 0, 0, 0, 0, 0, 0, 6, 0, 3, 0, 6, 0, 9, 0, 14, 0, 18, 0, 102, 111, 111, 98, 97, 114,
+        98, 97, 122, 100, 111, 108, 111, 114, 113, 117, 117, 120, 108, 111, 114, 101, 109, 32, 105,
+        112, 115, 117, 109,
+    ];
+
+    // ["w", "ω", "文", "𑄃"]
+    const NONASCII_STR: &[&str] = &["w", "ω", "文", "𑄃"];
+    const NONASCII_BYTES: &[u8] = &[
+        4, 0, 1, 0, 3, 0, 6, 0, 119, 207, 137, 230, 150, 135, 240, 145, 132, 131,
+    ];
+    #[test]
+    fn test_serde_json() {
+        let zerovec_orig: VarZeroVec<str> = VarZeroVec::parse_bytes(BYTES).expect("parse");
+        let json_str = serde_json::to_string(&zerovec_orig).expect("serialize");
+        assert_eq!(JSON_STR, json_str);
+        // VarZeroVec should deserialize from JSON to either Vec or VarZeroVec
+        let vec_new: Vec<Box<str>> =
+            serde_json::from_str(&json_str).expect("deserialize from buffer to Vec");
+        assert_eq!(zerovec_orig.to_vec(), vec_new);
+        let zerovec_new: VarZeroVec<str> =
+            serde_json::from_str(&json_str).expect("deserialize from buffer to VarZeroVec");
+        assert_eq!(zerovec_orig.to_vec(), zerovec_new.to_vec());
+        assert!(zerovec_new.is_owned());
+    }
+
+    #[test]
+    fn test_serde_bincode() {
+        let zerovec_orig: VarZeroVec<str> = VarZeroVec::parse_bytes(BYTES).expect("parse");
+        let bincode_buf = bincode::serialize(&zerovec_orig).expect("serialize");
+        assert_eq!(BINCODE_BUF, bincode_buf);
+        let zerovec_new: VarZeroVec<str> =
+            bincode::deserialize(&bincode_buf).expect("deserialize from buffer to VarZeroVec");
+        assert_eq!(zerovec_orig.to_vec(), zerovec_new.to_vec());
+        assert!(!zerovec_new.is_owned());
+    }
+
+    #[test]
+    fn test_vzv_borrowed() {
+        let zerovec_orig: &VarZeroSlice<str> = VarZeroSlice::parse_bytes(BYTES).expect("parse");
+        let bincode_buf = bincode::serialize(&zerovec_orig).expect("serialize");
+        assert_eq!(BINCODE_BUF, bincode_buf);
+        let zerovec_new: &VarZeroSlice<str> =
+            bincode::deserialize(&bincode_buf).expect("deserialize from buffer to VarZeroSlice");
+        assert_eq!(zerovec_orig.to_vec(), zerovec_new.to_vec());
+    }
+
+    #[test]
+    fn test_nonascii_bincode() {
+        let src_vec = NONASCII_STR
+            .iter()
+            .copied()
+            .map(Box::<str>::from)
+            .collect::<Vec<_>>();
+        let mut zerovec: VarZeroVec<str> = VarZeroVec::parse_bytes(NONASCII_BYTES).expect("parse");
+        assert_eq!(zerovec.to_vec(), src_vec);
+        let bincode_buf = bincode::serialize(&zerovec).expect("serialize");
+        let zerovec_result =
+            bincode::deserialize::<VarZeroVec<str>>(&bincode_buf).expect("deserialize");
+        assert_eq!(zerovec_result.to_vec(), src_vec);
+
+        // try again with owned zerovec
+        zerovec.make_mut();
+        let bincode_buf = bincode::serialize(&zerovec).expect("serialize");
+        let zerovec_result =
+            bincode::deserialize::<VarZeroVec<str>>(&bincode_buf).expect("deserialize");
+        assert_eq!(zerovec_result.to_vec(), src_vec);
+    }
+}
diff --git a/vendor/zerovec/src/varzerovec/slice.rs b/vendor/zerovec/src/varzerovec/slice.rs
new file mode 100644
index 00000000..6c347378
--- /dev/null
+++ b/vendor/zerovec/src/varzerovec/slice.rs
@@ -0,0 +1,524 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::components::{VarZeroSliceIter, VarZeroVecComponents};
+use super::vec::VarZeroVecInner;
+use super::*;
+use crate::ule::*;
+use core::cmp::{Ord, Ordering, PartialOrd};
+use core::fmt;
+use core::marker::PhantomData;
+use core::mem;
+
+use core::ops::Index;
+use core::ops::Range;
+
+/// A zero-copy "slice", that works for unsized types, i.e. the zero-copy version of `[T]`
+/// where `T` is not `Sized`.
+///
+/// This behaves similarly to [`VarZeroVec<T>`], however [`VarZeroVec<T>`] is allowed to contain
+/// owned data and as such is ideal for deserialization since most human readable
+/// serialization formats cannot unconditionally deserialize zero-copy.
+///
+/// This type can be used inside [`VarZeroVec<T>`](crate::VarZeroVec) and [`ZeroMap`](crate::ZeroMap):
+/// This essentially allows for the construction of zero-copy types isomorphic to `Vec<Vec<T>>` by instead
+/// using `VarZeroVec<ZeroSlice<T>>`.
+///
+/// The `F` type parameter is a [`VarZeroVecFormat`] (see its docs for more details), which can be used to select the
+/// precise format of the backing buffer with various size and performance tradeoffs. It defaults to [`Index16`].
+///
+/// This type can be nested within itself to allow for multi-level nested `Vec`s.
+///
+/// # Examples
+///
+/// ## Nested Slices
+///
+/// The following code constructs the conceptual zero-copy equivalent of `Vec<Vec<Vec<str>>>`
+///
+/// ```rust
+/// use zerovec::{VarZeroSlice, VarZeroVec};
+/// let strings_1: Vec<&str> = vec!["foo", "bar", "baz"];
+/// let strings_2: Vec<&str> = vec!["twelve", "seventeen", "forty two"];
+/// let strings_3: Vec<&str> = vec!["我", "喜歡", "烏龍茶"];
+/// let strings_4: Vec<&str> = vec!["w", "ω", "文", "𑄃"];
+/// let strings_12 = vec![&*strings_1, &*strings_2];
+/// let strings_34 = vec![&*strings_3, &*strings_4];
+/// let all_strings = vec![strings_12, strings_34];
+///
+/// let vzv_1: VarZeroVec<str> = VarZeroVec::from(&strings_1);
+/// let vzv_2: VarZeroVec<str> = VarZeroVec::from(&strings_2);
+/// let vzv_3: VarZeroVec<str> = VarZeroVec::from(&strings_3);
+/// let vzv_4: VarZeroVec<str> = VarZeroVec::from(&strings_4);
+/// let vzv_12 = VarZeroVec::from(&[vzv_1.as_slice(), vzv_2.as_slice()]);
+/// let vzv_34 = VarZeroVec::from(&[vzv_3.as_slice(), vzv_4.as_slice()]);
+/// let vzv_all = VarZeroVec::from(&[vzv_12.as_slice(), vzv_34.as_slice()]);
+///
+/// let reconstructed: Vec<Vec<Vec<String>>> = vzv_all
+///     .iter()
+///     .map(|v: &VarZeroSlice<VarZeroSlice<str>>| {
+///         v.iter()
+///             .map(|x: &VarZeroSlice<_>| {
+///                 x.as_varzerovec()
+///                     .iter()
+///                     .map(|s| s.to_owned())
+///                     .collect::<Vec<String>>()
+///             })
+///             .collect::<Vec<_>>()
+///     })
+///     .collect::<Vec<_>>();
+/// assert_eq!(reconstructed, all_strings);
+///
+/// let bytes = vzv_all.as_bytes();
+/// let vzv_from_bytes: VarZeroVec<VarZeroSlice<VarZeroSlice<str>>> =
+///     VarZeroVec::parse_bytes(bytes).unwrap();
+/// assert_eq!(vzv_from_bytes, vzv_all);
+/// ```
+///
+/// ## Iterate over Windows
+///
+/// Although [`VarZeroSlice`] does not itself have a `.windows` iterator like
+/// [core::slice::Windows], this behavior can be easily modeled using an iterator:
+///
+/// ```
+/// use zerovec::VarZeroVec;
+///
+/// let vzv = VarZeroVec::<str>::from(&["a", "b", "c", "d"]);
+/// # let mut pairs: Vec<(&str, &str)> = Vec::new();
+///
+/// let mut it = vzv.iter().peekable();
+/// while let (Some(x), Some(y)) = (it.next(), it.peek()) {
+///     // Evaluate (x, y) here.
+/// #   pairs.push((x, y));
+/// }
+/// # assert_eq!(pairs, &[("a", "b"), ("b", "c"), ("c", "d")]);
+/// ```
+//
+// safety invariant: The slice MUST be one which parses to
+// a valid VarZeroVecComponents<T>
+#[repr(transparent)]
+pub struct VarZeroSlice<T: ?Sized, F = Index16> {
+    marker: PhantomData<(F, T)>,
+    /// The original slice this was constructed from
+    entire_slice: [u8],
+}
+
+impl<T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroSlice<T, F> {
+    /// Construct a new empty VarZeroSlice
+    pub const fn new_empty() -> &'static Self {
+        // The empty VZV is special-cased to the empty slice
+        unsafe { mem::transmute(&[] as &[u8]) }
+    }
+
+    /// Obtain a [`VarZeroVecComponents`] borrowing from the internal buffer
+    #[inline]
+    pub(crate) fn as_components<'a>(&'a self) -> VarZeroVecComponents<'a, T, F> {
+        unsafe {
+            // safety: VarZeroSlice is guaranteed to parse here
+            VarZeroVecComponents::from_bytes_unchecked(&self.entire_slice)
+        }
+    }
+
+    /// Uses a `&[u8]` buffer as a `VarZeroSlice<T>` without any verification.
+    ///
+    /// # Safety
+    ///
+    /// `bytes` need to be an output from [`VarZeroSlice::as_bytes()`].
+    pub const unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        // self is really just a wrapper around a byte slice
+        mem::transmute(bytes)
+    }
+
+    /// Get the number of elements in this slice
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use zerovec::VarZeroVec;
+    ///
+    /// let strings = vec!["foo", "bar", "baz", "quux"];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// assert_eq!(vec.len(), 4);
+    /// ```
+    pub fn len(&self) -> usize {
+        self.as_components().len()
+    }
+
+    /// Returns `true` if the slice contains no elements.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// # use zerovec::VarZeroVec;
+    ///
+    /// let strings: Vec<String> = vec![];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// assert!(vec.is_empty());
+    /// ```
+    pub fn is_empty(&self) -> bool {
+        self.as_components().is_empty()
+    }
+
+    /// Obtain an iterator over this slice's elements
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use zerovec::VarZeroVec;
+    ///
+    /// let strings = vec!["foo", "bar", "baz", "quux"];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// let mut iter_results: Vec<&str> = vec.iter().collect();
+    /// assert_eq!(iter_results[0], "foo");
+    /// assert_eq!(iter_results[1], "bar");
+    /// assert_eq!(iter_results[2], "baz");
+    /// assert_eq!(iter_results[3], "quux");
+    /// ```
+    pub fn iter<'b>(&'b self) -> VarZeroSliceIter<'b, T, F> {
+        self.as_components().iter()
+    }
+
+    /// Get one of this slice's elements, returning `None` if the index is out of bounds
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use zerovec::VarZeroVec;
+    ///
+    /// let strings = vec!["foo", "bar", "baz", "quux"];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// let mut iter_results: Vec<&str> = vec.iter().collect();
+    /// assert_eq!(vec.get(0), Some("foo"));
+    /// assert_eq!(vec.get(1), Some("bar"));
+    /// assert_eq!(vec.get(2), Some("baz"));
+    /// assert_eq!(vec.get(3), Some("quux"));
+    /// assert_eq!(vec.get(4), None);
+    /// ```
+    pub fn get(&self, idx: usize) -> Option<&T> {
+        self.as_components().get(idx)
+    }
+
+    /// Get one of this slice's elements
+    ///
+    /// # Safety
+    ///
+    /// `index` must be in range
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use zerovec::VarZeroVec;
+    ///
+    /// let strings = vec!["foo", "bar", "baz", "quux"];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// let mut iter_results: Vec<&str> = vec.iter().collect();
+    /// unsafe {
+    ///     assert_eq!(vec.get_unchecked(0), "foo");
+    ///     assert_eq!(vec.get_unchecked(1), "bar");
+    ///     assert_eq!(vec.get_unchecked(2), "baz");
+    ///     assert_eq!(vec.get_unchecked(3), "quux");
+    /// }
+    /// ```
+    pub unsafe fn get_unchecked(&self, idx: usize) -> &T {
+        self.as_components().get_unchecked(idx)
+    }
+
+    /// Obtain an owned `Vec<Box<T>>` out of this
+    #[cfg(feature = "alloc")]
+    pub fn to_vec(&self) -> alloc::vec::Vec<alloc::boxed::Box<T>> {
+        self.as_components().to_vec()
+    }
+
+    /// Get a reference to the entire encoded backing buffer of this slice
+    ///
+    /// The bytes can be passed back to [`Self::parse_bytes()`].
+    ///
+    /// To take the bytes as a vector, see [`VarZeroVec::into_bytes()`].
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use zerovec::VarZeroVec;
+    ///
+    /// let strings = vec!["foo", "bar", "baz"];
+    /// let vzv = VarZeroVec::<str>::from(&strings);
+    ///
+    /// assert_eq!(vzv, VarZeroVec::parse_bytes(vzv.as_bytes()).unwrap());
+    /// ```
+    #[inline]
+    pub const fn as_bytes(&self) -> &[u8] {
+        &self.entire_slice
+    }
+
+    /// Get this [`VarZeroSlice`] as a borrowed [`VarZeroVec`]
+    ///
+    /// If you wish to repeatedly call methods on this [`VarZeroSlice`],
+    /// it is more efficient to perform this conversion first
+    pub const fn as_varzerovec<'a>(&'a self) -> VarZeroVec<'a, T, F> {
+        VarZeroVec(VarZeroVecInner::Borrowed(self))
+    }
+
+    /// Parse a VarZeroSlice from a slice of the appropriate format
+    ///
+    /// Slices of the right format can be obtained via [`VarZeroSlice::as_bytes()`]
+    pub fn parse_bytes<'a>(slice: &'a [u8]) -> Result<&'a Self, UleError> {
+        <Self as VarULE>::parse_bytes(slice)
+    }
+}
+
+impl<T, F> VarZeroSlice<T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    T: Ord,
+    F: VarZeroVecFormat,
+{
+    /// Binary searches a sorted `VarZeroVec<T>` for the given element. For more information, see
+    /// the standard library function [`binary_search`].
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// # use zerovec::VarZeroVec;
+    ///
+    /// let strings = vec!["a", "b", "f", "g"];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// assert_eq!(vec.binary_search("f"), Ok(2));
+    /// assert_eq!(vec.binary_search("e"), Err(2));
+    /// ```
+    ///
+    /// [`binary_search`]: https://doc.rust-lang.org/std/primitive.slice.html#method.binary_search
+    #[inline]
+    pub fn binary_search(&self, x: &T) -> Result<usize, usize> {
+        self.as_components().binary_search(x)
+    }
+
+    /// Binary searches a `VarZeroVec<T>` for the given element within a certain sorted range.
+    ///
+    /// If the range is out of bounds, returns `None`. Otherwise, returns a `Result` according
+    /// to the behavior of the standard library function [`binary_search`].
+    ///
+    /// The index is returned relative to the start of the range.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// # use zerovec::VarZeroVec;
+    /// let strings = vec!["a", "b", "f", "g", "m", "n", "q"];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// // Same behavior as binary_search when the range covers the whole slice:
+    /// assert_eq!(vec.binary_search_in_range("g", 0..7), Some(Ok(3)));
+    /// assert_eq!(vec.binary_search_in_range("h", 0..7), Some(Err(4)));
+    ///
+    /// // Will not look outside of the range:
+    /// assert_eq!(vec.binary_search_in_range("g", 0..1), Some(Err(1)));
+    /// assert_eq!(vec.binary_search_in_range("g", 6..7), Some(Err(0)));
+    ///
+    /// // Will return indices relative to the start of the range:
+    /// assert_eq!(vec.binary_search_in_range("g", 1..6), Some(Ok(2)));
+    /// assert_eq!(vec.binary_search_in_range("h", 1..6), Some(Err(3)));
+    ///
+    /// // Will return `None` if the range is out of bounds:
+    /// assert_eq!(vec.binary_search_in_range("x", 100..200), None);
+    /// assert_eq!(vec.binary_search_in_range("x", 0..200), None);
+    /// ```
+    ///
+    /// [`binary_search`]: https://doc.rust-lang.org/std/primitive.slice.html#method.binary_search
+    #[inline]
+    pub fn binary_search_in_range(
+        &self,
+        x: &T,
+        range: Range<usize>,
+    ) -> Option<Result<usize, usize>> {
+        self.as_components().binary_search_in_range(x, range)
+    }
+}
+
+impl<T, F> VarZeroSlice<T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    F: VarZeroVecFormat,
+{
+    /// Binary searches a sorted `VarZeroVec<T>` for the given predicate. For more information, see
+    /// the standard library function [`binary_search_by`].
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// # use zerovec::VarZeroVec;
+    /// let strings = vec!["a", "b", "f", "g"];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// assert_eq!(vec.binary_search_by(|probe| probe.cmp("f")), Ok(2));
+    /// assert_eq!(vec.binary_search_by(|probe| probe.cmp("e")), Err(2));
+    /// ```
+    ///
+    /// [`binary_search_by`]: https://doc.rust-lang.org/std/primitive.slice.html#method.binary_search_by
+    #[inline]
+    pub fn binary_search_by(&self, predicate: impl FnMut(&T) -> Ordering) -> Result<usize, usize> {
+        self.as_components().binary_search_by(predicate)
+    }
+
+    /// Binary searches a `VarZeroVec<T>` for the given predicate within a certain sorted range.
+    ///
+    /// If the range is out of bounds, returns `None`. Otherwise, returns a `Result` according
+    /// to the behavior of the standard library function [`binary_search`].
+    ///
+    /// The index is returned relative to the start of the range.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// # use zerovec::VarZeroVec;
+    /// let strings = vec!["a", "b", "f", "g", "m", "n", "q"];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// // Same behavior as binary_search when the range covers the whole slice:
+    /// assert_eq!(
+    ///     vec.binary_search_in_range_by(|v| v.cmp("g"), 0..7),
+    ///     Some(Ok(3))
+    /// );
+    /// assert_eq!(
+    ///     vec.binary_search_in_range_by(|v| v.cmp("h"), 0..7),
+    ///     Some(Err(4))
+    /// );
+    ///
+    /// // Will not look outside of the range:
+    /// assert_eq!(
+    ///     vec.binary_search_in_range_by(|v| v.cmp("g"), 0..1),
+    ///     Some(Err(1))
+    /// );
+    /// assert_eq!(
+    ///     vec.binary_search_in_range_by(|v| v.cmp("g"), 6..7),
+    ///     Some(Err(0))
+    /// );
+    ///
+    /// // Will return indices relative to the start of the range:
+    /// assert_eq!(
+    ///     vec.binary_search_in_range_by(|v| v.cmp("g"), 1..6),
+    ///     Some(Ok(2))
+    /// );
+    /// assert_eq!(
+    ///     vec.binary_search_in_range_by(|v| v.cmp("h"), 1..6),
+    ///     Some(Err(3))
+    /// );
+    ///
+    /// // Will return `None` if the range is out of bounds:
+    /// assert_eq!(
+    ///     vec.binary_search_in_range_by(|v| v.cmp("x"), 100..200),
+    ///     None
+    /// );
+    /// assert_eq!(vec.binary_search_in_range_by(|v| v.cmp("x"), 0..200), None);
+    /// ```
+    ///
+    /// [`binary_search`]: https://doc.rust-lang.org/std/primitive.slice.html#method.binary_search
+    pub fn binary_search_in_range_by(
+        &self,
+        predicate: impl FnMut(&T) -> Ordering,
+        range: Range<usize>,
+    ) -> Option<Result<usize, usize>> {
+        self.as_components()
+            .binary_search_in_range_by(predicate, range)
+    }
+}
+// Safety (based on the safety checklist on the VarULE trait):
+//  1. VarZeroSlice does not include any uninitialized or padding bytes (achieved by `#[repr(transparent)]` on a
+//     `[u8]` slice which satisfies this invariant)
+//  2. VarZeroSlice is aligned to 1 byte (achieved by `#[repr(transparent)]` on a
+//     `[u8]` slice which satisfies this invariant)
+//  3. The impl of `validate_bytes()` returns an error if any byte is not valid.
+//  4. The impl of `validate_bytes()` returns an error if the slice cannot be used in its entirety
+//  5. The impl of `from_bytes_unchecked()` returns a reference to the same data.
+//  6. `as_bytes()` is equivalent to a regular transmute of the underlying data
+//  7. VarZeroSlice byte equality is semantic equality (relying on the guideline of the underlying VarULE type)
+unsafe impl<T: VarULE + ?Sized + 'static, F: VarZeroVecFormat> VarULE for VarZeroSlice<T, F> {
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        let _: VarZeroVecComponents<T, F> =
+            VarZeroVecComponents::parse_bytes(bytes).map_err(|_| UleError::parse::<Self>())?;
+        Ok(())
+    }
+
+    unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        // self is really just a wrapper around a byte slice
+        mem::transmute(bytes)
+    }
+
+    fn as_bytes(&self) -> &[u8] {
+        &self.entire_slice
+    }
+}
+
+impl<T: VarULE + ?Sized, F: VarZeroVecFormat> Index<usize> for VarZeroSlice<T, F> {
+    type Output = T;
+    fn index(&self, index: usize) -> &Self::Output {
+        #[expect(clippy::panic)] // documented
+        match self.get(index) {
+            Some(x) => x,
+            None => panic!(
+                "index out of bounds: the len is {} but the index is {index}",
+                self.len()
+            ),
+        }
+    }
+}
+
+impl<T, F> PartialEq<VarZeroSlice<T, F>> for VarZeroSlice<T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    T: PartialEq,
+    F: VarZeroVecFormat,
+{
+    #[inline]
+    fn eq(&self, other: &VarZeroSlice<T, F>) -> bool {
+        // VarULE has an API guarantee that this is equivalent
+        // to `T::VarULE::eq()`
+        self.entire_slice.eq(&other.entire_slice)
+    }
+}
+
+impl<T, F> Eq for VarZeroSlice<T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    T: Eq,
+    F: VarZeroVecFormat,
+{
+}
+
+impl<T: VarULE + ?Sized + PartialOrd, F: VarZeroVecFormat> PartialOrd for VarZeroSlice<T, F> {
+    #[inline]
+    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+        self.iter().partial_cmp(other.iter())
+    }
+}
+
+impl<T: VarULE + ?Sized + Ord, F: VarZeroVecFormat> Ord for VarZeroSlice<T, F> {
+    #[inline]
+    fn cmp(&self, other: &Self) -> Ordering {
+        self.iter().cmp(other.iter())
+    }
+}
+
+impl<T: VarULE + ?Sized, F: VarZeroVecFormat> fmt::Debug for VarZeroSlice<T, F>
+where
+    T: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_list().entries(self.iter()).finish()
+    }
+}
+
+impl<T: ?Sized, F: VarZeroVecFormat> AsRef<VarZeroSlice<T, F>> for VarZeroSlice<T, F> {
+    fn as_ref(&self) -> &VarZeroSlice<T, F> {
+        self
+    }
+}
diff --git a/vendor/zerovec/src/varzerovec/vec.rs b/vendor/zerovec/src/varzerovec/vec.rs
new file mode 100644
index 00000000..b9be27c8
--- /dev/null
+++ b/vendor/zerovec/src/varzerovec/vec.rs
@@ -0,0 +1,513 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::ule::*;
+
+use core::cmp::{Ord, Ordering, PartialOrd};
+use core::fmt;
+use core::ops::Deref;
+
+use super::*;
+
+/// A zero-copy, byte-aligned vector for variable-width types.
+///
+/// `VarZeroVec<T>` is designed as a drop-in replacement for `Vec<T>` in situations where it is
+/// desirable to borrow data from an unaligned byte slice, such as zero-copy deserialization, and
+/// where `T`'s data is variable-length (e.g. `String`)
+///
+/// `T` must implement [`VarULE`], which is already implemented for [`str`] and `[u8]`. For storing more
+/// complicated series of elements, it is implemented on `ZeroSlice<T>` as well as `VarZeroSlice<T>`
+/// for nesting. [`zerovec::make_varule`](crate::make_varule) may be used to generate
+/// a dynamically-sized [`VarULE`] type and conversions to and from a custom type.
+///
+/// For example, here are some owned types and their zero-copy equivalents:
+///
+/// - `Vec<String>`: `VarZeroVec<'a, str>`
+/// - `Vec<Vec<u8>>>`: `VarZeroVec<'a, [u8]>`
+/// - `Vec<Vec<u32>>`: `VarZeroVec<'a, ZeroSlice<u32>>`
+/// - `Vec<Vec<String>>`: `VarZeroVec<'a, VarZeroSlice<str>>`
+///
+/// Most of the methods on `VarZeroVec<'a, T>` come from its [`Deref`] implementation to [`VarZeroSlice<T>`](VarZeroSlice).
+///
+/// For creating zero-copy vectors of fixed-size types, see [`ZeroVec`](crate::ZeroVec).
+///
+/// `VarZeroVec<T>` behaves much like [`Cow`](alloc::borrow::Cow), where it can be constructed from
+/// owned data (and then mutated!) but can also borrow from some buffer.
+///
+/// The `F` type parameter is a [`VarZeroVecFormat`] (see its docs for more details), which can be used to select the
+/// precise format of the backing buffer with various size and performance tradeoffs. It defaults to [`Index16`].
+///
+/// # Bytes and Equality
+///
+/// Two [`VarZeroVec`]s are equal if and only if their bytes are equal, as described in the trait
+/// [`VarULE`]. However, we do not guarantee stability of byte equality or serialization format
+/// across major SemVer releases.
+///
+/// To compare a [`Vec<T>`] to a [`VarZeroVec<T>`], it is generally recommended to use
+/// [`Iterator::eq`], since it is somewhat expensive at runtime to convert from a [`Vec<T>`] to a
+/// [`VarZeroVec<T>`] or vice-versa.
+///
+/// Prior to zerovec reaching 1.0, the precise byte representation of [`VarZeroVec`] is still
+/// under consideration, with different options along the space-time spectrum. See
+/// [#1410](https://github.com/unicode-org/icu4x/issues/1410).
+///
+/// # Example
+///
+/// ```rust
+/// use zerovec::VarZeroVec;
+///
+/// // The little-endian bytes correspond to the list of strings.
+/// let strings = vec!["w", "ω", "文", "𑄃"];
+///
+/// #[derive(serde::Serialize, serde::Deserialize)]
+/// struct Data<'a> {
+///     #[serde(borrow)]
+///     strings: VarZeroVec<'a, str>,
+/// }
+///
+/// let data = Data {
+///     strings: VarZeroVec::from(&strings),
+/// };
+///
+/// let bincode_bytes =
+///     bincode::serialize(&data).expect("Serialization should be successful");
+///
+/// // Will deserialize without allocations
+/// let deserialized: Data = bincode::deserialize(&bincode_bytes)
+///     .expect("Deserialization should be successful");
+///
+/// assert_eq!(deserialized.strings.get(2), Some("文"));
+/// assert_eq!(deserialized.strings, &*strings);
+/// ```
+///
+/// Here's another example with `ZeroSlice<T>` (similar to `[T]`):
+///
+/// ```rust
+/// use zerovec::VarZeroVec;
+/// use zerovec::ZeroSlice;
+///
+/// // The structured list correspond to the list of integers.
+/// let numbers: &[&[u32]] = &[
+///     &[12, 25, 38],
+///     &[39179, 100],
+///     &[42, 55555],
+///     &[12345, 54321, 9],
+/// ];
+///
+/// #[derive(serde::Serialize, serde::Deserialize)]
+/// struct Data<'a> {
+///     #[serde(borrow)]
+///     vecs: VarZeroVec<'a, ZeroSlice<u32>>,
+/// }
+///
+/// let data = Data {
+///     vecs: VarZeroVec::from(numbers),
+/// };
+///
+/// let bincode_bytes =
+///     bincode::serialize(&data).expect("Serialization should be successful");
+///
+/// let deserialized: Data = bincode::deserialize(&bincode_bytes)
+///     .expect("Deserialization should be successful");
+///
+/// assert_eq!(deserialized.vecs[0].get(1).unwrap(), 25);
+/// assert_eq!(deserialized.vecs[1], *numbers[1]);
+/// ```
+///
+/// [`VarZeroVec`]s can be nested infinitely via a similar mechanism, see the docs of [`VarZeroSlice`]
+/// for more information.
+///
+/// # How it Works
+///
+/// `VarZeroVec<T>`, when used with non-human-readable serializers (like `bincode`), will
+/// serialize to a specially formatted list of bytes. The format is:
+///
+/// -  2 bytes for `length` (interpreted as a little-endian u16)
+/// - `2 * (length - 1)` bytes of `indices` (interpreted as little-endian u16s)
+/// - Remaining bytes for actual `data`
+///
+/// The format is tweakable by setting the `F` parameter, by default it uses u16 indices and lengths but other
+/// `VarZeroVecFormat` types can set other sizes.
+///
+/// Each element in the `indices` array points to the ending index of its corresponding
+/// data part in the `data` list. The starting index can be calculated from the ending index
+/// of the next element (or 0 for the first element). The last ending index, not stored in the array, is
+/// the length of the `data` segment.
+///
+/// See [the design doc](https://github.com/unicode-org/icu4x/blob/main/utils/zerovec/design_doc.md) for more details.
+///
+/// [`ule`]: crate::ule
+pub struct VarZeroVec<'a, T: ?Sized, F = Index16>(pub(crate) VarZeroVecInner<'a, T, F>);
+
+pub(crate) enum VarZeroVecInner<'a, T: ?Sized, F = Index16> {
+    #[cfg(feature = "alloc")]
+    Owned(VarZeroVecOwned<T, F>),
+    Borrowed(&'a VarZeroSlice<T, F>),
+}
+
+impl<'a, T: ?Sized, F> Clone for VarZeroVec<'a, T, F> {
+    fn clone(&self) -> Self {
+        match self.0 {
+            #[cfg(feature = "alloc")]
+            VarZeroVecInner::Owned(ref o) => o.clone().into(),
+            VarZeroVecInner::Borrowed(b) => b.into(),
+        }
+    }
+}
+
+impl<T: VarULE + ?Sized, F: VarZeroVecFormat> fmt::Debug for VarZeroVec<'_, T, F>
+where
+    T: fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        VarZeroSlice::fmt(self, f)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'a, T: ?Sized, F> From<VarZeroVecOwned<T, F>> for VarZeroVec<'a, T, F> {
+    #[inline]
+    fn from(other: VarZeroVecOwned<T, F>) -> Self {
+        Self(VarZeroVecInner::Owned(other))
+    }
+}
+
+impl<'a, T: ?Sized, F> From<&'a VarZeroSlice<T, F>> for VarZeroVec<'a, T, F> {
+    fn from(other: &'a VarZeroSlice<T, F>) -> Self {
+        Self(VarZeroVecInner::Borrowed(other))
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'a, T: ?Sized + VarULE, F: VarZeroVecFormat> From<VarZeroVec<'a, T, F>>
+    for VarZeroVecOwned<T, F>
+{
+    #[inline]
+    fn from(other: VarZeroVec<'a, T, F>) -> Self {
+        match other.0 {
+            VarZeroVecInner::Owned(o) => o,
+            VarZeroVecInner::Borrowed(b) => b.into(),
+        }
+    }
+}
+
+impl<T: VarULE + ?Sized, F: VarZeroVecFormat> Default for VarZeroVec<'_, T, F> {
+    #[inline]
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<T: VarULE + ?Sized, F: VarZeroVecFormat> Deref for VarZeroVec<'_, T, F> {
+    type Target = VarZeroSlice<T, F>;
+    fn deref(&self) -> &VarZeroSlice<T, F> {
+        self.as_slice()
+    }
+}
+
+impl<'a, T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroVec<'a, T, F> {
+    /// Creates a new, empty `VarZeroVec<T>`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::VarZeroVec;
+    ///
+    /// let vzv: VarZeroVec<str> = VarZeroVec::new();
+    /// assert!(vzv.is_empty());
+    /// ```
+    #[inline]
+    pub const fn new() -> Self {
+        Self(VarZeroVecInner::Borrowed(VarZeroSlice::new_empty()))
+    }
+
+    /// Parse a VarZeroVec from a slice of the appropriate format
+    ///
+    /// Slices of the right format can be obtained via [`VarZeroSlice::as_bytes()`].
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use zerovec::VarZeroVec;
+    ///
+    /// let strings = vec!["foo", "bar", "baz", "quux"];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// assert_eq!(&vec[0], "foo");
+    /// assert_eq!(&vec[1], "bar");
+    /// assert_eq!(&vec[2], "baz");
+    /// assert_eq!(&vec[3], "quux");
+    /// ```
+    pub fn parse_bytes(slice: &'a [u8]) -> Result<Self, UleError> {
+        let borrowed = VarZeroSlice::<T, F>::parse_bytes(slice)?;
+
+        Ok(Self(VarZeroVecInner::Borrowed(borrowed)))
+    }
+
+    /// Uses a `&[u8]` buffer as a `VarZeroVec<T>` without any verification.
+    ///
+    /// # Safety
+    ///
+    /// `bytes` need to be an output from [`VarZeroSlice::as_bytes()`].
+    pub const unsafe fn from_bytes_unchecked(bytes: &'a [u8]) -> Self {
+        Self(VarZeroVecInner::Borrowed(core::mem::transmute::<
+            &[u8],
+            &VarZeroSlice<T, F>,
+        >(bytes)))
+    }
+
+    /// Convert this into a mutable vector of the owned `T` type, cloning if necessary.
+    ///
+    ///
+    /// # Example
+    ///
+    /// ```rust,ignore
+    /// # use zerovec::VarZeroVec;
+    /// let strings = vec!["foo", "bar", "baz", "quux"];
+    /// let mut vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// assert_eq!(vec.len(), 4);
+    /// let mutvec = vec.make_mut();
+    /// mutvec.push("lorem ipsum".into());
+    /// mutvec[2] = "dolor sit".into();
+    /// assert_eq!(&vec[0], "foo");
+    /// assert_eq!(&vec[1], "bar");
+    /// assert_eq!(&vec[2], "dolor sit");
+    /// assert_eq!(&vec[3], "quux");
+    /// assert_eq!(&vec[4], "lorem ipsum");
+    /// ```
+    //
+    // This function is crate-public for now since we don't yet want to stabilize
+    // the internal implementation details
+    #[cfg(feature = "alloc")]
+    pub fn make_mut(&mut self) -> &mut VarZeroVecOwned<T, F> {
+        match self.0 {
+            VarZeroVecInner::Owned(ref mut vec) => vec,
+            VarZeroVecInner::Borrowed(slice) => {
+                let new_self = VarZeroVecOwned::from_slice(slice);
+                *self = new_self.into();
+                // recursion is limited since we are guaranteed to hit the Owned branch
+                self.make_mut()
+            }
+        }
+    }
+
+    /// Converts a borrowed ZeroVec to an owned ZeroVec. No-op if already owned.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// # use zerovec::VarZeroVec;
+    ///
+    /// let strings = vec!["foo", "bar", "baz", "quux"];
+    /// let vec = VarZeroVec::<str>::from(&strings);
+    ///
+    /// assert_eq!(vec.len(), 4);
+    /// // has 'static lifetime
+    /// let owned = vec.into_owned();
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn into_owned(mut self) -> VarZeroVec<'static, T, F> {
+        self.make_mut();
+        match self.0 {
+            VarZeroVecInner::Owned(vec) => vec.into(),
+            _ => unreachable!(),
+        }
+    }
+
+    /// Obtain this `VarZeroVec` as a [`VarZeroSlice`]
+    pub fn as_slice(&self) -> &VarZeroSlice<T, F> {
+        match self.0 {
+            #[cfg(feature = "alloc")]
+            VarZeroVecInner::Owned(ref owned) => owned,
+            VarZeroVecInner::Borrowed(b) => b,
+        }
+    }
+
+    /// Takes the byte vector representing the encoded data of this VarZeroVec. If borrowed,
+    /// this function allocates a byte vector and copies the borrowed bytes into it.
+    ///
+    /// The bytes can be passed back to [`Self::parse_bytes()`].
+    ///
+    /// To get a reference to the bytes without moving, see [`VarZeroSlice::as_bytes()`].
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use zerovec::VarZeroVec;
+    ///
+    /// let strings = vec!["foo", "bar", "baz"];
+    /// let bytes = VarZeroVec::<str>::from(&strings).into_bytes();
+    ///
+    /// let mut borrowed: VarZeroVec<str> =
+    ///     VarZeroVec::parse_bytes(&bytes).unwrap();
+    /// assert_eq!(borrowed, &*strings);
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn into_bytes(self) -> alloc::vec::Vec<u8> {
+        match self.0 {
+            #[cfg(feature = "alloc")]
+            VarZeroVecInner::Owned(vec) => vec.into_bytes(),
+            VarZeroVecInner::Borrowed(vec) => vec.as_bytes().to_vec(),
+        }
+    }
+
+    /// Return whether the [`VarZeroVec`] is operating on owned or borrowed
+    /// data. [`VarZeroVec::into_owned()`] and [`VarZeroVec::make_mut()`] can
+    /// be used to force it into an owned type
+    pub fn is_owned(&self) -> bool {
+        match self.0 {
+            #[cfg(feature = "alloc")]
+            VarZeroVecInner::Owned(..) => true,
+            VarZeroVecInner::Borrowed(..) => false,
+        }
+    }
+
+    #[doc(hidden)]
+    pub fn as_components<'b>(&'b self) -> VarZeroVecComponents<'b, T, F> {
+        self.as_slice().as_components()
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<A, T, F> From<&alloc::vec::Vec<A>> for VarZeroVec<'static, T, F>
+where
+    T: VarULE + ?Sized,
+    A: EncodeAsVarULE<T>,
+    F: VarZeroVecFormat,
+{
+    #[inline]
+    fn from(elements: &alloc::vec::Vec<A>) -> Self {
+        Self::from(elements.as_slice())
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<A, T, F> From<&[A]> for VarZeroVec<'static, T, F>
+where
+    T: VarULE + ?Sized,
+    A: EncodeAsVarULE<T>,
+    F: VarZeroVecFormat,
+{
+    #[inline]
+    fn from(elements: &[A]) -> Self {
+        if elements.is_empty() {
+            VarZeroSlice::new_empty().into()
+        } else {
+            #[expect(clippy::unwrap_used)] // TODO(#1410) Better story for fallibility
+            VarZeroVecOwned::try_from_elements(elements).unwrap().into()
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<A, T, F, const N: usize> From<&[A; N]> for VarZeroVec<'static, T, F>
+where
+    T: VarULE + ?Sized,
+    A: EncodeAsVarULE<T>,
+    F: VarZeroVecFormat,
+{
+    #[inline]
+    fn from(elements: &[A; N]) -> Self {
+        Self::from(elements.as_slice())
+    }
+}
+
+impl<'a, 'b, T, F> PartialEq<VarZeroVec<'b, T, F>> for VarZeroVec<'a, T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    T: PartialEq,
+    F: VarZeroVecFormat,
+{
+    #[inline]
+    fn eq(&self, other: &VarZeroVec<'b, T, F>) -> bool {
+        // VZV::from_elements used to produce a non-canonical representation of the
+        // empty VZV, so we cannot use byte equality for empty vecs.
+        if self.is_empty() || other.is_empty() {
+            return self.is_empty() && other.is_empty();
+        }
+        // VarULE has an API guarantee that byte equality is semantic equality.
+        // For non-empty VZVs, there's only a single metadata representation,
+        // so this guarantee extends to the whole VZV representation.
+        self.as_bytes().eq(other.as_bytes())
+    }
+}
+
+impl<'a, T, F> Eq for VarZeroVec<'a, T, F>
+where
+    T: VarULE,
+    T: ?Sized,
+    T: Eq,
+    F: VarZeroVecFormat,
+{
+}
+
+impl<T, A, F> PartialEq<&'_ [A]> for VarZeroVec<'_, T, F>
+where
+    T: VarULE + ?Sized,
+    T: PartialEq,
+    A: AsRef<T>,
+    F: VarZeroVecFormat,
+{
+    #[inline]
+    fn eq(&self, other: &&[A]) -> bool {
+        self.iter().eq(other.iter().map(|t| t.as_ref()))
+    }
+}
+
+impl<T, A, F, const N: usize> PartialEq<[A; N]> for VarZeroVec<'_, T, F>
+where
+    T: VarULE + ?Sized,
+    T: PartialEq,
+    A: AsRef<T>,
+    F: VarZeroVecFormat,
+{
+    #[inline]
+    fn eq(&self, other: &[A; N]) -> bool {
+        self.iter().eq(other.iter().map(|t| t.as_ref()))
+    }
+}
+
+impl<'a, T: VarULE + ?Sized + PartialOrd, F: VarZeroVecFormat> PartialOrd for VarZeroVec<'a, T, F> {
+    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+        self.iter().partial_cmp(other.iter())
+    }
+}
+
+impl<'a, T: VarULE + ?Sized + Ord, F: VarZeroVecFormat> Ord for VarZeroVec<'a, T, F> {
+    fn cmp(&self, other: &Self) -> Ordering {
+        self.iter().cmp(other.iter())
+    }
+}
+
+#[test]
+fn assert_single_empty_representation() {
+    assert_eq!(
+        VarZeroVec::<str>::new().as_bytes(),
+        VarZeroVec::<str>::from(&[] as &[&str]).as_bytes()
+    );
+
+    use crate::map::MutableZeroVecLike;
+    let mut vzv = VarZeroVec::<str>::from(&["hello", "world"][..]);
+    assert_eq!(vzv.len(), 2);
+    assert!(!vzv.as_bytes().is_empty());
+    vzv.zvl_remove(0);
+    assert_eq!(vzv.len(), 1);
+    assert!(!vzv.as_bytes().is_empty());
+    vzv.zvl_remove(0);
+    assert_eq!(vzv.len(), 0);
+    assert!(vzv.as_bytes().is_empty());
+    vzv.zvl_insert(0, "something");
+    assert_eq!(vzv.len(), 1);
+    assert!(!vzv.as_bytes().is_empty());
+}
+
+#[test]
+fn weird_empty_representation_equality() {
+    assert_eq!(
+        VarZeroVec::<str>::parse_bytes(&[0, 0, 0, 0]).unwrap(),
+        VarZeroVec::<str>::parse_bytes(&[]).unwrap()
+    );
+}
diff --git a/vendor/zerovec/src/yoke_impls.rs b/vendor/zerovec/src/yoke_impls.rs
new file mode 100644
index 00000000..edcd081e
--- /dev/null
+++ b/vendor/zerovec/src/yoke_impls.rs
@@ -0,0 +1,525 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// This way we can copy-paste Yokeable impls
+#![allow(unknown_lints)] // forgetting_copy_types
+#![allow(renamed_and_removed_lints)] // forgetting_copy_types
+#![allow(forgetting_copy_types)]
+#![allow(clippy::forget_copy)]
+#![allow(clippy::forget_non_drop)]
+
+#[cfg(feature = "alloc")]
+use crate::map::ZeroMapBorrowed;
+#[cfg(feature = "alloc")]
+use crate::map::ZeroMapKV;
+#[cfg(feature = "alloc")]
+use crate::map2d::ZeroMap2dBorrowed;
+use crate::ule::*;
+use crate::{VarZeroCow, VarZeroVec, ZeroVec};
+#[cfg(feature = "alloc")]
+use crate::{ZeroMap, ZeroMap2d};
+use core::{mem, ptr};
+use yoke::*;
+
+// This impl is similar to the impl on Cow and is safe for the same reasons
+/// This impl requires enabling the optional `yoke` Cargo feature of the `zerovec` crate
+unsafe impl<'a, T: 'static + AsULE> Yokeable<'a> for ZeroVec<'static, T> {
+    type Output = ZeroVec<'a, T>;
+    #[inline]
+    fn transform(&'a self) -> &'a Self::Output {
+        self
+    }
+    #[inline]
+    fn transform_owned(self) -> Self::Output {
+        self
+    }
+    #[inline]
+    unsafe fn make(from: Self::Output) -> Self {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        let from = mem::ManuallyDrop::new(from);
+        let ptr: *const Self = (&*from as *const Self::Output).cast();
+        ptr::read(ptr)
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        unsafe { f(mem::transmute::<&mut Self, &mut Self::Output>(self)) }
+    }
+}
+
+// This impl is similar to the impl on Cow and is safe for the same reasons
+/// This impl requires enabling the optional `yoke` Cargo feature of the `zerovec` crate
+unsafe impl<'a, T: 'static + VarULE + ?Sized> Yokeable<'a> for VarZeroVec<'static, T> {
+    type Output = VarZeroVec<'a, T>;
+    #[inline]
+    fn transform(&'a self) -> &'a Self::Output {
+        self
+    }
+    #[inline]
+    fn transform_owned(self) -> Self::Output {
+        self
+    }
+    #[inline]
+    unsafe fn make(from: Self::Output) -> Self {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        let from = mem::ManuallyDrop::new(from);
+        let ptr: *const Self = (&*from as *const Self::Output).cast();
+        ptr::read(ptr)
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        unsafe { f(mem::transmute::<&mut Self, &mut Self::Output>(self)) }
+    }
+}
+
+// This impl is similar to the impl on Cow and is safe for the same reasons
+/// This impl requires enabling the optional `yoke` Cargo feature of the `zerovec` crate
+unsafe impl<'a, T: 'static + ?Sized> Yokeable<'a> for VarZeroCow<'static, T> {
+    type Output = VarZeroCow<'a, T>;
+    #[inline]
+    fn transform(&'a self) -> &'a Self::Output {
+        self
+    }
+    #[inline]
+    fn transform_owned(self) -> Self::Output {
+        self
+    }
+    #[inline]
+    unsafe fn make(from: Self::Output) -> Self {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        let from = mem::ManuallyDrop::new(from);
+        let ptr: *const Self = (&*from as *const Self::Output).cast();
+        ptr::read(ptr)
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        unsafe { f(mem::transmute::<&mut Self, &mut Self::Output>(self)) }
+    }
+}
+
+/// This impl requires enabling the optional `yoke` Cargo feature of the `zerovec` crate
+#[cfg(feature = "alloc")]
+unsafe impl<'a, K, V> Yokeable<'a> for ZeroMap<'static, K, V>
+where
+    K: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    V: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    <K as ZeroMapKV<'static>>::Container: for<'b> Yokeable<'b>,
+    <V as ZeroMapKV<'static>>::Container: for<'b> Yokeable<'b>,
+{
+    type Output = ZeroMap<'a, K, V>;
+    #[inline]
+    fn transform(&'a self) -> &'a Self::Output {
+        unsafe {
+            // Unfortunately, because K and V are generic, rustc is
+            // unaware that these are covariant types, and cannot perform this cast automatically.
+            // We transmute it instead, and enforce the lack of a lifetime with the `K, V: 'static` bound
+            mem::transmute::<&Self, &Self::Output>(self)
+        }
+    }
+    #[inline]
+    fn transform_owned(self) -> Self::Output {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        unsafe {
+            // Similar problem as transform(), but we need to use ptr::read since
+            // the compiler isn't sure of the sizes
+            let this = mem::ManuallyDrop::new(self);
+            let ptr: *const Self::Output = (&*this as *const Self).cast();
+            ptr::read(ptr)
+        }
+    }
+    #[inline]
+    unsafe fn make(from: Self::Output) -> Self {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        let from = mem::ManuallyDrop::new(from);
+        let ptr: *const Self = (&*from as *const Self::Output).cast();
+        ptr::read(ptr)
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        unsafe { f(mem::transmute::<&mut Self, &mut Self::Output>(self)) }
+    }
+}
+
+/// This impl requires enabling the optional `yoke` Cargo feature of the `zerovec` crate
+#[cfg(feature = "alloc")]
+unsafe impl<'a, K, V> Yokeable<'a> for ZeroMapBorrowed<'static, K, V>
+where
+    K: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    V: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    &'static <K as ZeroMapKV<'static>>::Slice: for<'b> Yokeable<'b>,
+    &'static <V as ZeroMapKV<'static>>::Slice: for<'b> Yokeable<'b>,
+{
+    type Output = ZeroMapBorrowed<'a, K, V>;
+    #[inline]
+    fn transform(&'a self) -> &'a Self::Output {
+        unsafe {
+            // Unfortunately, because K and V are generic, rustc is
+            // unaware that these are covariant types, and cannot perform this cast automatically.
+            // We transmute it instead, and enforce the lack of a lifetime with the `K, V: 'static` bound
+            mem::transmute::<&Self, &Self::Output>(self)
+        }
+    }
+    #[inline]
+    fn transform_owned(self) -> Self::Output {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        unsafe {
+            // Similar problem as transform(), but we need to use ptr::read since
+            // the compiler isn't sure of the sizes
+            let this = mem::ManuallyDrop::new(self);
+            let ptr: *const Self::Output = (&*this as *const Self).cast();
+            ptr::read(ptr)
+        }
+    }
+    #[inline]
+    unsafe fn make(from: Self::Output) -> Self {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        let from = mem::ManuallyDrop::new(from);
+        let ptr: *const Self = (&*from as *const Self::Output).cast();
+        ptr::read(ptr)
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        unsafe { f(mem::transmute::<&mut Self, &mut Self::Output>(self)) }
+    }
+}
+
+/// This impl requires enabling the optional `yoke` Cargo feature of the `zerovec` crate
+#[cfg(feature = "alloc")]
+unsafe impl<'a, K0, K1, V> Yokeable<'a> for ZeroMap2d<'static, K0, K1, V>
+where
+    K0: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    K1: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    V: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    <K0 as ZeroMapKV<'static>>::Container: for<'b> Yokeable<'b>,
+    <K1 as ZeroMapKV<'static>>::Container: for<'b> Yokeable<'b>,
+    <V as ZeroMapKV<'static>>::Container: for<'b> Yokeable<'b>,
+{
+    type Output = ZeroMap2d<'a, K0, K1, V>;
+    #[inline]
+    fn transform(&'a self) -> &'a Self::Output {
+        unsafe {
+            // Unfortunately, because K and V are generic, rustc is
+            // unaware that these are covariant types, and cannot perform this cast automatically.
+            // We transmute it instead, and enforce the lack of a lifetime with the `K0, K1, V: 'static` bound
+            mem::transmute::<&Self, &Self::Output>(self)
+        }
+    }
+    #[inline]
+    fn transform_owned(self) -> Self::Output {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        unsafe {
+            // Similar problem as transform(), but we need to use ptr::read since
+            // the compiler isn't sure of the sizes
+            let this = mem::ManuallyDrop::new(self);
+            let ptr: *const Self::Output = (&*this as *const Self).cast();
+            ptr::read(ptr)
+        }
+    }
+    #[inline]
+    unsafe fn make(from: Self::Output) -> Self {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        let from = mem::ManuallyDrop::new(from);
+        let ptr: *const Self = (&*from as *const Self::Output).cast();
+        ptr::read(ptr)
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        unsafe { f(mem::transmute::<&mut Self, &mut Self::Output>(self)) }
+    }
+}
+
+/// This impl requires enabling the optional `yoke` Cargo feature of the `zerovec` crate
+#[cfg(feature = "alloc")]
+unsafe impl<'a, K0, K1, V> Yokeable<'a> for ZeroMap2dBorrowed<'static, K0, K1, V>
+where
+    K0: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    K1: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    V: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    &'static <K0 as ZeroMapKV<'static>>::Slice: for<'b> Yokeable<'b>,
+    &'static <K1 as ZeroMapKV<'static>>::Slice: for<'b> Yokeable<'b>,
+    &'static <V as ZeroMapKV<'static>>::Slice: for<'b> Yokeable<'b>,
+{
+    type Output = ZeroMap2dBorrowed<'a, K0, K1, V>;
+    #[inline]
+    fn transform(&'a self) -> &'a Self::Output {
+        unsafe {
+            // Unfortunately, because K and V are generic, rustc is
+            // unaware that these are covariant types, and cannot perform this cast automatically.
+            // We transmute it instead, and enforce the lack of a lifetime with the `K0, K1, V: 'static` bound
+            mem::transmute::<&Self, &Self::Output>(self)
+        }
+    }
+    #[inline]
+    fn transform_owned(self) -> Self::Output {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        unsafe {
+            // Similar problem as transform(), but we need to use ptr::read since
+            // the compiler isn't sure of the sizes
+            let this = mem::ManuallyDrop::new(self);
+            let ptr: *const Self::Output = (&*this as *const Self).cast();
+            ptr::read(ptr)
+        }
+    }
+    #[inline]
+    unsafe fn make(from: Self::Output) -> Self {
+        debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
+        let from = mem::ManuallyDrop::new(from);
+        let ptr: *const Self = (&*from as *const Self::Output).cast();
+        ptr::read(ptr)
+    }
+    #[inline]
+    fn transform_mut<F>(&'a mut self, f: F)
+    where
+        F: 'static + for<'b> FnOnce(&'b mut Self::Output),
+    {
+        unsafe { f(mem::transmute::<&mut Self, &mut Self::Output>(self)) }
+    }
+}
+
+#[cfg(test)]
+#[allow(non_camel_case_types, non_snake_case)]
+mod test {
+    use super::*;
+    use crate::{VarZeroSlice, ZeroSlice};
+    use databake::*;
+
+    // Note: The following derives cover Yoke as well as Serde and databake. These may partially
+    // duplicate tests elsewhere in this crate, but they are here for completeness.
+
+    #[derive(yoke::Yokeable, zerofrom::ZeroFrom)]
+    #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+    #[cfg_attr(feature = "databake", derive(databake::Bake))]
+    #[cfg_attr(feature = "databake", databake(path = zerovec::yoke_impls::test))]
+    struct DeriveTest_ZeroVec<'data> {
+        #[cfg_attr(feature = "serde", serde(borrow))]
+        pub _data: ZeroVec<'data, u16>,
+    }
+
+    #[test]
+    fn bake_ZeroVec() {
+        test_bake!(
+            DeriveTest_ZeroVec<'static>,
+            crate::yoke_impls::test::DeriveTest_ZeroVec {
+                _data: crate::ZeroVec::new(),
+            },
+            zerovec,
+        );
+    }
+
+    #[derive(yoke::Yokeable)]
+    #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+    #[cfg_attr(feature = "databake", derive(databake::Bake))]
+    #[cfg_attr(feature = "databake", databake(path = zerovec::yoke_impls::test))]
+    struct DeriveTest_ZeroSlice<'data> {
+        #[cfg_attr(feature = "serde", serde(borrow))]
+        pub _data: &'data ZeroSlice<u16>,
+    }
+
+    #[test]
+    fn bake_ZeroSlice() {
+        test_bake!(
+            DeriveTest_ZeroSlice<'static>,
+            crate::yoke_impls::test::DeriveTest_ZeroSlice {
+                _data: crate::ZeroSlice::new_empty(),
+            },
+            zerovec,
+        );
+    }
+
+    #[derive(yoke::Yokeable, zerofrom::ZeroFrom)]
+    #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+    #[cfg_attr(feature = "databake", derive(databake::Bake))]
+    #[cfg_attr(feature = "databake", databake(path = zerovec::yoke_impls::test))]
+    struct DeriveTest_VarZeroVec<'data> {
+        #[cfg_attr(feature = "serde", serde(borrow))]
+        pub _data: VarZeroVec<'data, str>,
+    }
+
+    #[test]
+    fn bake_VarZeroVec() {
+        test_bake!(
+            DeriveTest_VarZeroVec<'static>,
+            crate::yoke_impls::test::DeriveTest_VarZeroVec {
+                _data: crate::vecs::VarZeroVec16::new(),
+            },
+            zerovec,
+        );
+    }
+
+    #[derive(yoke::Yokeable)]
+    #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+    #[cfg_attr(feature = "databake", derive(databake::Bake))]
+    #[cfg_attr(feature = "databake", databake(path = zerovec::yoke_impls::test))]
+    struct DeriveTest_VarZeroSlice<'data> {
+        #[cfg_attr(feature = "serde", serde(borrow))]
+        pub _data: &'data VarZeroSlice<str>,
+    }
+
+    #[test]
+    fn bake_VarZeroSlice() {
+        test_bake!(
+            DeriveTest_VarZeroSlice<'static>,
+            crate::yoke_impls::test::DeriveTest_VarZeroSlice {
+                _data: crate::vecs::VarZeroSlice16::new_empty()
+            },
+            zerovec,
+        );
+    }
+
+    #[derive(yoke::Yokeable, zerofrom::ZeroFrom)]
+    #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+    #[cfg_attr(feature = "databake", derive(databake::Bake))]
+    #[cfg_attr(feature = "databake", databake(path = zerovec::yoke_impls::test))]
+    #[yoke(prove_covariance_manually)]
+    struct DeriveTest_ZeroMap<'data> {
+        #[cfg_attr(feature = "serde", serde(borrow))]
+        pub _data: ZeroMap<'data, [u8], str>,
+    }
+
+    #[test]
+    fn bake_ZeroMap() {
+        test_bake!(
+            DeriveTest_ZeroMap<'static>,
+            crate::yoke_impls::test::DeriveTest_ZeroMap {
+                _data: unsafe {
+                    #[allow(unused_unsafe)]
+                    crate::ZeroMap::from_parts_unchecked(
+                        crate::vecs::VarZeroVec16::new(),
+                        crate::vecs::VarZeroVec16::new(),
+                    )
+                },
+            },
+            zerovec,
+        );
+    }
+
+    #[derive(yoke::Yokeable)]
+    #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+    #[cfg_attr(feature = "databake", derive(databake::Bake))]
+    #[cfg_attr(feature = "databake", databake(path = zerovec::yoke_impls::test))]
+    #[yoke(prove_covariance_manually)]
+    struct DeriveTest_ZeroMapBorrowed<'data> {
+        #[cfg_attr(feature = "serde", serde(borrow))]
+        pub _data: ZeroMapBorrowed<'data, [u8], str>,
+    }
+
+    #[test]
+    fn bake_ZeroMapBorrowed() {
+        test_bake!(
+            DeriveTest_ZeroMapBorrowed<'static>,
+            crate::yoke_impls::test::DeriveTest_ZeroMapBorrowed {
+                _data: unsafe {
+                    #[allow(unused_unsafe)]
+                    crate::maps::ZeroMapBorrowed::from_parts_unchecked(
+                        crate::vecs::VarZeroSlice16::new_empty(),
+                        crate::vecs::VarZeroSlice16::new_empty(),
+                    )
+                },
+            },
+            zerovec,
+        );
+    }
+
+    #[derive(yoke::Yokeable, zerofrom::ZeroFrom)]
+    #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+    #[cfg_attr(feature = "databake", derive(databake::Bake))]
+    #[cfg_attr(feature = "databake", databake(path = zerovec::yoke_impls::test))]
+    #[yoke(prove_covariance_manually)]
+    struct DeriveTest_ZeroMapWithULE<'data> {
+        #[cfg_attr(feature = "serde", serde(borrow))]
+        pub _data: ZeroMap<'data, ZeroSlice<u32>, str>,
+    }
+
+    #[test]
+    fn bake_ZeroMapWithULE() {
+        test_bake!(
+            DeriveTest_ZeroMapWithULE<'static>,
+            crate::yoke_impls::test::DeriveTest_ZeroMapWithULE {
+                _data: unsafe {
+                    #[allow(unused_unsafe)]
+                    crate::ZeroMap::from_parts_unchecked(
+                        crate::vecs::VarZeroVec16::new(),
+                        crate::vecs::VarZeroVec16::new(),
+                    )
+                },
+            },
+            zerovec,
+        );
+    }
+
+    #[derive(yoke::Yokeable, zerofrom::ZeroFrom)]
+    #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+    #[cfg_attr(feature = "databake", derive(databake::Bake))]
+    #[cfg_attr(feature = "databake", databake(path = zerovec::yoke_impls::test))]
+    #[yoke(prove_covariance_manually)]
+    struct DeriveTest_ZeroMap2d<'data> {
+        #[cfg_attr(feature = "serde", serde(borrow))]
+        pub _data: ZeroMap2d<'data, u16, u16, str>,
+    }
+
+    #[test]
+    fn bake_ZeroMap2d() {
+        test_bake!(
+            DeriveTest_ZeroMap2d<'static>,
+            crate::yoke_impls::test::DeriveTest_ZeroMap2d {
+                _data: unsafe {
+                    #[allow(unused_unsafe)]
+                    crate::ZeroMap2d::from_parts_unchecked(
+                        crate::ZeroVec::new(),
+                        crate::ZeroVec::new(),
+                        crate::ZeroVec::new(),
+                        crate::vecs::VarZeroVec16::new(),
+                    )
+                },
+            },
+            zerovec,
+        );
+    }
+
+    #[derive(yoke::Yokeable)]
+    #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
+    #[cfg_attr(feature = "databake", derive(databake::Bake))]
+    #[cfg_attr(feature = "databake", databake(path = zerovec::yoke_impls::test))]
+    #[yoke(prove_covariance_manually)]
+    struct DeriveTest_ZeroMap2dBorrowed<'data> {
+        #[cfg_attr(feature = "serde", serde(borrow))]
+        pub _data: ZeroMap2dBorrowed<'data, u16, u16, str>,
+    }
+
+    #[test]
+    fn bake_ZeroMap2dBorrowed() {
+        test_bake!(
+            DeriveTest_ZeroMap2dBorrowed<'static>,
+            crate::yoke_impls::test::DeriveTest_ZeroMap2dBorrowed {
+                _data: unsafe {
+                    #[allow(unused_unsafe)]
+                    crate::maps::ZeroMap2dBorrowed::from_parts_unchecked(
+                        crate::ZeroSlice::new_empty(),
+                        crate::ZeroSlice::new_empty(),
+                        crate::ZeroSlice::new_empty(),
+                        crate::vecs::VarZeroSlice16::new_empty(),
+                    )
+                },
+            },
+            zerovec,
+        );
+    }
+}
diff --git a/vendor/zerovec/src/zerofrom_impls.rs b/vendor/zerovec/src/zerofrom_impls.rs
new file mode 100644
index 00000000..6ba88dd5
--- /dev/null
+++ b/vendor/zerovec/src/zerofrom_impls.rs
@@ -0,0 +1,108 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "alloc")]
+use crate::map::ZeroMapKV;
+use crate::ule::*;
+use crate::vecs::VarZeroVecFormat;
+use crate::{VarZeroSlice, VarZeroVec, ZeroSlice, ZeroVec};
+#[cfg(feature = "alloc")]
+use crate::{ZeroMap, ZeroMap2d};
+use zerofrom::ZeroFrom;
+
+impl<'zf, T> ZeroFrom<'zf, ZeroVec<'_, T>> for ZeroVec<'zf, T>
+where
+    T: 'static + AsULE,
+{
+    #[inline]
+    fn zero_from(other: &'zf ZeroVec<'_, T>) -> Self {
+        ZeroVec::new_borrowed(other.as_ule_slice())
+    }
+}
+
+impl<'zf, T> ZeroFrom<'zf, ZeroSlice<T>> for ZeroVec<'zf, T>
+where
+    T: 'static + AsULE,
+{
+    #[inline]
+    fn zero_from(other: &'zf ZeroSlice<T>) -> Self {
+        ZeroVec::new_borrowed(other.as_ule_slice())
+    }
+}
+
+impl<'zf, T> ZeroFrom<'zf, ZeroSlice<T>> for &'zf ZeroSlice<T>
+where
+    T: 'static + AsULE,
+{
+    #[inline]
+    fn zero_from(other: &'zf ZeroSlice<T>) -> Self {
+        other
+    }
+}
+
+impl<'zf, T, F: VarZeroVecFormat> ZeroFrom<'zf, VarZeroSlice<T, F>> for VarZeroVec<'zf, T, F>
+where
+    T: 'static + VarULE + ?Sized,
+{
+    #[inline]
+    fn zero_from(other: &'zf VarZeroSlice<T, F>) -> Self {
+        other.into()
+    }
+}
+
+impl<'zf, T, F: VarZeroVecFormat> ZeroFrom<'zf, VarZeroVec<'_, T, F>> for VarZeroVec<'zf, T, F>
+where
+    T: 'static + VarULE + ?Sized,
+{
+    #[inline]
+    fn zero_from(other: &'zf VarZeroVec<'_, T, F>) -> Self {
+        other.as_slice().into()
+    }
+}
+
+impl<'zf, T> ZeroFrom<'zf, VarZeroSlice<T>> for &'zf VarZeroSlice<T>
+where
+    T: 'static + VarULE + ?Sized,
+{
+    #[inline]
+    fn zero_from(other: &'zf VarZeroSlice<T>) -> Self {
+        other
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'zf, 's, K, V> ZeroFrom<'zf, ZeroMap<'s, K, V>> for ZeroMap<'zf, K, V>
+where
+    K: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    V: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    <K as ZeroMapKV<'zf>>::Container: ZeroFrom<'zf, <K as ZeroMapKV<'s>>::Container>,
+    <V as ZeroMapKV<'zf>>::Container: ZeroFrom<'zf, <V as ZeroMapKV<'s>>::Container>,
+{
+    fn zero_from(other: &'zf ZeroMap<'s, K, V>) -> Self {
+        ZeroMap {
+            keys: K::Container::zero_from(&other.keys),
+            values: V::Container::zero_from(&other.values),
+        }
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'zf, 's, K0, K1, V> ZeroFrom<'zf, ZeroMap2d<'s, K0, K1, V>> for ZeroMap2d<'zf, K0, K1, V>
+where
+    K0: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    K1: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    V: 'static + for<'b> ZeroMapKV<'b> + ?Sized,
+    <K0 as ZeroMapKV<'zf>>::Container: ZeroFrom<'zf, <K0 as ZeroMapKV<'s>>::Container>,
+    <K1 as ZeroMapKV<'zf>>::Container: ZeroFrom<'zf, <K1 as ZeroMapKV<'s>>::Container>,
+    <V as ZeroMapKV<'zf>>::Container: ZeroFrom<'zf, <V as ZeroMapKV<'s>>::Container>,
+{
+    fn zero_from(other: &'zf ZeroMap2d<'s, K0, K1, V>) -> Self {
+        ZeroMap2d {
+            keys0: K0::Container::zero_from(&other.keys0),
+            joiner: ZeroVec::zero_from(&other.joiner),
+            keys1: K1::Container::zero_from(&other.keys1),
+            values: V::Container::zero_from(&other.values),
+        }
+    }
+}
diff --git a/vendor/zerovec/src/zerovec/databake.rs b/vendor/zerovec/src/zerovec/databake.rs
new file mode 100644
index 00000000..6c9402df
--- /dev/null
+++ b/vendor/zerovec/src/zerovec/databake.rs
@@ -0,0 +1,74 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::ZeroVec;
+use crate::{ule::AsULE, ZeroSlice};
+use databake::*;
+
+impl<T: AsULE> Bake for ZeroVec<'_, T> {
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("zerovec");
+        if self.is_empty() {
+            quote! { zerovec::ZeroVec::new() }
+        } else {
+            let bytes = databake::Bake::bake(&self.as_bytes(), env);
+            // Safety: bytes was obtained from a ZeroVec via as_bytes() above,
+            // and thus is valid for unchecked construction.
+            quote! { unsafe { zerovec::ZeroVec::from_bytes_unchecked(#bytes) } }
+        }
+    }
+}
+
+impl<T: AsULE> BakeSize for ZeroVec<'_, T> {
+    fn borrows_size(&self) -> usize {
+        self.as_bytes().len()
+    }
+}
+
+impl<T: AsULE> Bake for &ZeroSlice<T> {
+    fn bake(&self, env: &CrateEnv) -> TokenStream {
+        env.insert("zerovec");
+        if self.is_empty() {
+            quote! { zerovec::ZeroSlice::new_empty() }
+        } else {
+            let bytes = databake::Bake::bake(&self.as_bytes(), env);
+            // Safety: bytes was obtained from a ZeroSlice via as_bytes() above,
+            // and thus is valid for unchecked construction.
+            quote! { unsafe { zerovec::ZeroSlice::from_bytes_unchecked(#bytes) } }
+        }
+    }
+}
+
+impl<T: AsULE> BakeSize for &ZeroSlice<T> {
+    fn borrows_size(&self) -> usize {
+        self.as_bytes().len()
+    }
+}
+
+#[test]
+fn test_baked_vec() {
+    test_bake!(ZeroVec<u32>, const, crate::ZeroVec::new(), zerovec);
+    test_bake!(
+        ZeroVec<u32>,
+        const,
+        unsafe { crate::ZeroVec::from_bytes_unchecked(b"\x02\x01\0\x16\0M\x01\\") },
+        zerovec
+    );
+}
+
+#[test]
+fn test_baked_slice() {
+    test_bake!(
+        &ZeroSlice<u32>,
+        const,
+        crate::ZeroSlice::new_empty(),
+        zerovec
+    );
+    test_bake!(
+        &ZeroSlice<u32>,
+        const,
+        unsafe { crate::ZeroSlice::from_bytes_unchecked(b"\x02\x01\0\x16\0M\x01\\") },
+        zerovec
+    );
+}
diff --git a/vendor/zerovec/src/zerovec/mod.rs b/vendor/zerovec/src/zerovec/mod.rs
new file mode 100644
index 00000000..6a85984d
--- /dev/null
+++ b/vendor/zerovec/src/zerovec/mod.rs
@@ -0,0 +1,1280 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+#[cfg(feature = "databake")]
+mod databake;
+
+#[cfg(feature = "serde")]
+mod serde;
+
+mod slice;
+
+pub use slice::ZeroSlice;
+pub use slice::ZeroSliceIter;
+
+use crate::ule::*;
+#[cfg(feature = "alloc")]
+use alloc::borrow::Cow;
+#[cfg(feature = "alloc")]
+use alloc::vec::Vec;
+use core::cmp::{Ord, Ordering, PartialOrd};
+use core::fmt;
+#[cfg(feature = "alloc")]
+use core::iter::FromIterator;
+use core::marker::PhantomData;
+use core::num::NonZeroUsize;
+use core::ops::Deref;
+use core::ptr::NonNull;
+
+/// A zero-copy, byte-aligned vector for fixed-width types.
+///
+/// `ZeroVec<T>` is designed as a drop-in replacement for `Vec<T>` in situations where it is
+/// desirable to borrow data from an unaligned byte slice, such as zero-copy deserialization.
+///
+/// `T` must implement [`AsULE`], which is auto-implemented for a number of built-in types,
+/// including all fixed-width multibyte integers. For variable-width types like [`str`],
+/// see [`VarZeroVec`](crate::VarZeroVec). [`zerovec::make_ule`](crate::make_ule) may
+/// be used to automatically implement [`AsULE`] for a type and generate the underlying [`ULE`] type.
+///
+/// Typically, the zero-copy equivalent of a `Vec<T>` will simply be `ZeroVec<'a, T>`.
+///
+/// Most of the methods on `ZeroVec<'a, T>` come from its [`Deref`] implementation to [`ZeroSlice<T>`](ZeroSlice).
+///
+/// For creating zero-copy vectors of fixed-size types, see [`VarZeroVec`](crate::VarZeroVec).
+///
+/// `ZeroVec<T>` behaves much like [`Cow`](alloc::borrow::Cow), where it can be constructed from
+/// owned data (and then mutated!) but can also borrow from some buffer.
+///
+/// # Example
+///
+/// ```
+/// use zerovec::ZeroVec;
+///
+/// // The little-endian bytes correspond to the numbers on the following line.
+/// let nums: &[u16] = &[211, 281, 421, 461];
+///
+/// #[derive(serde::Serialize, serde::Deserialize)]
+/// struct Data<'a> {
+///     #[serde(borrow)]
+///     nums: ZeroVec<'a, u16>,
+/// }
+///
+/// // The owned version will allocate
+/// let data = Data {
+///     nums: ZeroVec::alloc_from_slice(nums),
+/// };
+/// let bincode_bytes =
+///     bincode::serialize(&data).expect("Serialization should be successful");
+///
+/// // Will deserialize without allocations
+/// let deserialized: Data = bincode::deserialize(&bincode_bytes)
+///     .expect("Deserialization should be successful");
+///
+/// // This deserializes without allocation!
+/// assert!(!deserialized.nums.is_owned());
+/// assert_eq!(deserialized.nums.get(2), Some(421));
+/// assert_eq!(deserialized.nums, nums);
+/// ```
+///
+/// [`ule`]: crate::ule
+///
+/// # How it Works
+///
+/// `ZeroVec<T>` represents a slice of `T` as a slice of `T::ULE`. The difference between `T` and
+/// `T::ULE` is that `T::ULE` must be encoded in little-endian with 1-byte alignment. When accessing
+/// items from `ZeroVec<T>`, we fetch the `T::ULE`, convert it on the fly to `T`, and return `T` by
+/// value.
+///
+/// Benchmarks can be found in the project repository, with some results found in the [crate-level documentation](crate).
+///
+/// See [the design doc](https://github.com/unicode-org/icu4x/blob/main/utils/zerovec/design_doc.md) for more details.
+pub struct ZeroVec<'a, T>
+where
+    T: AsULE,
+{
+    vector: EyepatchHackVector<T::ULE>,
+
+    /// Marker type, signalling variance and dropck behavior
+    /// by containing all potential types this type represents
+    marker1: PhantomData<T::ULE>,
+    marker2: PhantomData<&'a T::ULE>,
+}
+
+// Send inherits as long as all fields are Send, but also references are Send only
+// when their contents are Sync (this is the core purpose of Sync), so
+// we need a Send+Sync bound since this struct can logically be a vector or a slice.
+unsafe impl<'a, T: AsULE> Send for ZeroVec<'a, T> where T::ULE: Send + Sync {}
+// Sync typically inherits as long as all fields are Sync
+unsafe impl<'a, T: AsULE> Sync for ZeroVec<'a, T> where T::ULE: Sync {}
+
+impl<'a, T: AsULE> Deref for ZeroVec<'a, T> {
+    type Target = ZeroSlice<T>;
+    #[inline]
+    fn deref(&self) -> &Self::Target {
+        self.as_slice()
+    }
+}
+
+// Represents an unsafe potentially-owned vector/slice type, without a lifetime
+// working around dropck limitations.
+//
+// Must either be constructed by deconstructing a Vec<U>, or from &[U] with capacity set to
+// zero. Should not outlive its source &[U] in the borrowed case; this type does not in
+// and of itself uphold this guarantee, but the .as_slice() method assumes it.
+//
+// After https://github.com/rust-lang/rust/issues/34761 stabilizes,
+// we should remove this type and use #[may_dangle]
+struct EyepatchHackVector<U> {
+    /// Pointer to data
+    /// This pointer is *always* valid, the reason it is represented as a raw pointer
+    /// is that it may logically represent an `&[T::ULE]` or the ptr,len of a `Vec<T::ULE>`
+    buf: NonNull<[U]>,
+    #[cfg(feature = "alloc")]
+    /// Borrowed if zero. Capacity of buffer above if not
+    capacity: usize,
+}
+
+impl<U> EyepatchHackVector<U> {
+    // Return a slice to the inner data for an arbitrary caller-specified lifetime
+    #[inline]
+    unsafe fn as_arbitrary_slice<'a>(&self) -> &'a [U] {
+        self.buf.as_ref()
+    }
+    // Return a slice to the inner data
+    #[inline]
+    const fn as_slice<'a>(&'a self) -> &'a [U] {
+        // Note: self.buf.as_ref() is not const until 1.73
+        unsafe { &*(self.buf.as_ptr() as *const [U]) }
+    }
+
+    /// Return this type as a vector
+    ///
+    /// Data MUST be known to be owned beforehand
+    ///
+    /// Because this borrows self, this is effectively creating two owners to the same
+    /// data, make sure that `self` is cleaned up after this
+    ///
+    /// (this does not simply take `self` since then it wouldn't be usable from the Drop impl)
+    #[cfg(feature = "alloc")]
+    unsafe fn get_vec(&self) -> Vec<U> {
+        debug_assert!(self.capacity != 0);
+        let slice: &[U] = self.as_slice();
+        let len = slice.len();
+        // Safety: we are assuming owned, and in owned cases
+        // this always represents a valid vector
+        Vec::from_raw_parts(self.buf.as_ptr() as *mut U, len, self.capacity)
+    }
+
+    fn truncate(&mut self, max: usize) {
+        // SAFETY: The elements in buf are `ULE`, so they don't need to be dropped
+        // even if we own them.
+        self.buf = unsafe {
+            NonNull::new_unchecked(core::ptr::slice_from_raw_parts_mut(
+                self.buf.as_mut().as_mut_ptr(),
+                core::cmp::min(max, self.buf.as_ref().len()),
+            ))
+        };
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<U> Drop for EyepatchHackVector<U> {
+    #[inline]
+    fn drop(&mut self) {
+        if self.capacity != 0 {
+            unsafe {
+                // we don't need to clean up self here since we're already in a Drop impl
+                let _ = self.get_vec();
+            }
+        }
+    }
+}
+
+impl<'a, T: AsULE> Clone for ZeroVec<'a, T> {
+    fn clone(&self) -> Self {
+        #[cfg(feature = "alloc")]
+        if self.is_owned() {
+            return ZeroVec::new_owned(self.as_ule_slice().into());
+        }
+        Self {
+            vector: EyepatchHackVector {
+                buf: self.vector.buf,
+                #[cfg(feature = "alloc")]
+                capacity: 0,
+            },
+            marker1: PhantomData,
+            marker2: PhantomData,
+        }
+    }
+}
+
+impl<'a, T: AsULE> AsRef<ZeroSlice<T>> for ZeroVec<'a, T> {
+    fn as_ref(&self) -> &ZeroSlice<T> {
+        self.as_slice()
+    }
+}
+
+impl<T> fmt::Debug for ZeroVec<'_, T>
+where
+    T: AsULE + fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "ZeroVec([")?;
+        let mut first = true;
+        for el in self.iter() {
+            if !first {
+                write!(f, ", ")?;
+            }
+            write!(f, "{el:?}")?;
+            first = false;
+        }
+        write!(f, "])")
+    }
+}
+
+impl<T> Eq for ZeroVec<'_, T> where T: AsULE + Eq {}
+
+impl<'a, 'b, T> PartialEq<ZeroVec<'b, T>> for ZeroVec<'a, T>
+where
+    T: AsULE + PartialEq,
+{
+    #[inline]
+    fn eq(&self, other: &ZeroVec<'b, T>) -> bool {
+        // Note: T implements PartialEq but not T::ULE
+        self.iter().eq(other.iter())
+    }
+}
+
+impl<T> PartialEq<&[T]> for ZeroVec<'_, T>
+where
+    T: AsULE + PartialEq,
+{
+    #[inline]
+    fn eq(&self, other: &&[T]) -> bool {
+        self.iter().eq(other.iter().copied())
+    }
+}
+
+impl<T, const N: usize> PartialEq<[T; N]> for ZeroVec<'_, T>
+where
+    T: AsULE + PartialEq,
+{
+    #[inline]
+    fn eq(&self, other: &[T; N]) -> bool {
+        self.iter().eq(other.iter().copied())
+    }
+}
+
+impl<'a, T: AsULE> Default for ZeroVec<'a, T> {
+    #[inline]
+    fn default() -> Self {
+        Self::new()
+    }
+}
+
+impl<'a, T: AsULE + PartialOrd> PartialOrd for ZeroVec<'a, T> {
+    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+        self.iter().partial_cmp(other.iter())
+    }
+}
+
+impl<'a, T: AsULE + Ord> Ord for ZeroVec<'a, T> {
+    fn cmp(&self, other: &Self) -> Ordering {
+        self.iter().cmp(other.iter())
+    }
+}
+
+impl<'a, T: AsULE> AsRef<[T::ULE]> for ZeroVec<'a, T> {
+    fn as_ref(&self) -> &[T::ULE] {
+        self.as_ule_slice()
+    }
+}
+
+impl<'a, T: AsULE> From<&'a [T::ULE]> for ZeroVec<'a, T> {
+    fn from(other: &'a [T::ULE]) -> Self {
+        ZeroVec::new_borrowed(other)
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<'a, T: AsULE> From<Vec<T::ULE>> for ZeroVec<'a, T> {
+    fn from(other: Vec<T::ULE>) -> Self {
+        ZeroVec::new_owned(other)
+    }
+}
+
+impl<'a, T: AsULE> ZeroVec<'a, T> {
+    /// Creates a new, borrowed, empty `ZeroVec<T>`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let zv: ZeroVec<u16> = ZeroVec::new();
+    /// assert!(zv.is_empty());
+    /// ```
+    #[inline]
+    pub const fn new() -> Self {
+        Self::new_borrowed(&[])
+    }
+
+    /// Same as `ZeroSlice::len`, which is available through `Deref` and not `const`.
+    pub const fn const_len(&self) -> usize {
+        self.vector.as_slice().len()
+    }
+
+    /// Creates a new owned `ZeroVec` using an existing
+    /// allocated backing buffer
+    ///
+    /// If you have a slice of `&[T]`s, prefer using
+    /// [`Self::alloc_from_slice()`].
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn new_owned(vec: Vec<T::ULE>) -> Self {
+        // Deconstruct the vector into parts
+        // This is the only part of the code that goes from Vec
+        // to ZeroVec, all other such operations should use this function
+        let capacity = vec.capacity();
+        let len = vec.len();
+        let ptr = core::mem::ManuallyDrop::new(vec).as_mut_ptr();
+        // Safety: `ptr` comes from Vec::as_mut_ptr, which says:
+        // "Returns an unsafe mutable pointer to the vector’s buffer,
+        // or a dangling raw pointer valid for zero sized reads"
+        let ptr = unsafe { NonNull::new_unchecked(ptr) };
+        let buf = NonNull::slice_from_raw_parts(ptr, len);
+        Self {
+            vector: EyepatchHackVector { buf, capacity },
+            marker1: PhantomData,
+            marker2: PhantomData,
+        }
+    }
+
+    /// Creates a new borrowed `ZeroVec` using an existing
+    /// backing buffer
+    #[inline]
+    pub const fn new_borrowed(slice: &'a [T::ULE]) -> Self {
+        // Safety: references in Rust cannot be null.
+        // The safe function `impl From<&T> for NonNull<T>` is not const.
+        let slice = unsafe { NonNull::new_unchecked(slice as *const [_] as *mut [_]) };
+        Self {
+            vector: EyepatchHackVector {
+                buf: slice,
+                #[cfg(feature = "alloc")]
+                capacity: 0,
+            },
+            marker1: PhantomData,
+            marker2: PhantomData,
+        }
+    }
+
+    /// Creates a new, owned, empty `ZeroVec<T>`, with a certain capacity pre-allocated.
+    #[cfg(feature = "alloc")]
+    pub fn with_capacity(capacity: usize) -> Self {
+        Self::new_owned(Vec::with_capacity(capacity))
+    }
+
+    /// Parses a `&[u8]` buffer into a `ZeroVec<T>`.
+    ///
+    /// This function is infallible for built-in integer types, but fallible for other types,
+    /// such as `char`. For more information, see [`ULE::parse_bytes_to_slice`].
+    ///
+    /// The bytes within the byte buffer must remain constant for the life of the ZeroVec.
+    ///
+    /// # Endianness
+    ///
+    /// The byte buffer must be encoded in little-endian, even if running in a big-endian
+    /// environment. This ensures a consistent representation of data across platforms.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    ///
+    /// assert!(!zerovec.is_owned());
+    /// assert_eq!(zerovec.get(2), Some(421));
+    /// ```
+    pub fn parse_bytes(bytes: &'a [u8]) -> Result<Self, UleError> {
+        let slice: &'a [T::ULE] = T::ULE::parse_bytes_to_slice(bytes)?;
+        Ok(Self::new_borrowed(slice))
+    }
+
+    /// Uses a `&[u8]` buffer as a `ZeroVec<T>` without any verification.
+    ///
+    /// # Safety
+    ///
+    /// `bytes` need to be an output from [`ZeroSlice::as_bytes()`].
+    pub const unsafe fn from_bytes_unchecked(bytes: &'a [u8]) -> Self {
+        // &[u8] and &[T::ULE] are the same slice with different length metadata.
+        Self::new_borrowed(core::slice::from_raw_parts(
+            bytes.as_ptr() as *const T::ULE,
+            bytes.len() / core::mem::size_of::<T::ULE>(),
+        ))
+    }
+
+    /// Converts a `ZeroVec<T>` into a `ZeroVec<u8>`, retaining the current ownership model.
+    ///
+    /// Note that the length of the ZeroVec may change.
+    ///
+    /// # Examples
+    ///
+    /// Convert a borrowed `ZeroVec`:
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    /// let zv_bytes = zerovec.into_bytes();
+    ///
+    /// assert!(!zv_bytes.is_owned());
+    /// assert_eq!(zv_bytes.get(0), Some(0xD3));
+    /// ```
+    ///
+    /// Convert an owned `ZeroVec`:
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let nums: &[u16] = &[211, 281, 421, 461];
+    /// let zerovec = ZeroVec::alloc_from_slice(nums);
+    /// let zv_bytes = zerovec.into_bytes();
+    ///
+    /// assert!(zv_bytes.is_owned());
+    /// assert_eq!(zv_bytes.get(0), Some(0xD3));
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn into_bytes(self) -> ZeroVec<'a, u8> {
+        use alloc::borrow::Cow;
+        match self.into_cow() {
+            Cow::Borrowed(slice) => {
+                let bytes: &'a [u8] = T::ULE::slice_as_bytes(slice);
+                ZeroVec::new_borrowed(bytes)
+            }
+            Cow::Owned(vec) => {
+                let bytes = Vec::from(T::ULE::slice_as_bytes(&vec));
+                ZeroVec::new_owned(bytes)
+            }
+        }
+    }
+
+    /// Returns this [`ZeroVec`] as a [`ZeroSlice`].
+    ///
+    /// To get a reference with a longer lifetime from a borrowed [`ZeroVec`],
+    /// use [`ZeroVec::as_maybe_borrowed`].
+    #[inline]
+    pub const fn as_slice(&self) -> &ZeroSlice<T> {
+        let slice: &[T::ULE] = self.vector.as_slice();
+        ZeroSlice::from_ule_slice(slice)
+    }
+
+    /// Casts a `ZeroVec<T>` to a compatible `ZeroVec<P>`.
+    ///
+    /// `T` and `P` are compatible if they have the same `ULE` representation.
+    ///
+    /// If the `ULE`s of `T` and `P` are different types but have the same size,
+    /// use [`Self::try_into_converted()`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    ///
+    /// let zerovec_u16: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    /// assert_eq!(zerovec_u16.get(3), Some(32973));
+    ///
+    /// let zerovec_i16: ZeroVec<i16> = zerovec_u16.cast();
+    /// assert_eq!(zerovec_i16.get(3), Some(-32563));
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn cast<P>(self) -> ZeroVec<'a, P>
+    where
+        P: AsULE<ULE = T::ULE>,
+    {
+        match self.into_cow() {
+            Cow::Owned(v) => ZeroVec::new_owned(v),
+            Cow::Borrowed(v) => ZeroVec::new_borrowed(v),
+        }
+    }
+
+    /// Converts a `ZeroVec<T>` into a `ZeroVec<P>`, retaining the current ownership model.
+    ///
+    /// If `T` and `P` have the exact same `ULE`, use [`Self::cast()`].
+    ///
+    /// # Panics
+    ///
+    /// Panics if `T::ULE` and `P::ULE` are not the same size.
+    ///
+    /// # Examples
+    ///
+    /// Convert a borrowed `ZeroVec`:
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0x7F, 0xF3, 0x01, 0x49, 0xF6, 0x01];
+    /// let zv_char: ZeroVec<char> =
+    ///     ZeroVec::parse_bytes(bytes).expect("valid code points");
+    /// let zv_u8_3: ZeroVec<[u8; 3]> =
+    ///     zv_char.try_into_converted().expect("infallible conversion");
+    ///
+    /// assert!(!zv_u8_3.is_owned());
+    /// assert_eq!(zv_u8_3.get(0), Some([0x7F, 0xF3, 0x01]));
+    /// ```
+    ///
+    /// Convert an owned `ZeroVec`:
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let chars: &[char] = &['🍿', '🙉'];
+    /// let zv_char = ZeroVec::alloc_from_slice(chars);
+    /// let zv_u8_3: ZeroVec<[u8; 3]> =
+    ///     zv_char.try_into_converted().expect("length is divisible");
+    ///
+    /// assert!(zv_u8_3.is_owned());
+    /// assert_eq!(zv_u8_3.get(0), Some([0x7F, 0xF3, 0x01]));
+    /// ```
+    ///
+    /// If the types are not the same size, we refuse to convert:
+    ///
+    /// ```should_panic
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0x7F, 0xF3, 0x01, 0x49, 0xF6, 0x01];
+    /// let zv_char: ZeroVec<char> =
+    ///     ZeroVec::parse_bytes(bytes).expect("valid code points");
+    ///
+    /// // Panics! core::mem::size_of::<char::ULE> != core::mem::size_of::<u16::ULE>
+    /// zv_char.try_into_converted::<u16>();
+    /// ```
+    ///
+    /// Instead, convert to bytes and then parse:
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0x7F, 0xF3, 0x01, 0x49, 0xF6, 0x01];
+    /// let zv_char: ZeroVec<char> =
+    ///     ZeroVec::parse_bytes(bytes).expect("valid code points");
+    /// let zv_u16: ZeroVec<u16> =
+    ///     zv_char.into_bytes().try_into_parsed().expect("infallible");
+    ///
+    /// assert!(!zv_u16.is_owned());
+    /// assert_eq!(zv_u16.get(0), Some(0xF37F));
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn try_into_converted<P: AsULE>(self) -> Result<ZeroVec<'a, P>, UleError> {
+        assert_eq!(
+            core::mem::size_of::<<T as AsULE>::ULE>(),
+            core::mem::size_of::<<P as AsULE>::ULE>()
+        );
+        match self.into_cow() {
+            Cow::Borrowed(old_slice) => {
+                let bytes: &'a [u8] = T::ULE::slice_as_bytes(old_slice);
+                let new_slice = P::ULE::parse_bytes_to_slice(bytes)?;
+                Ok(ZeroVec::new_borrowed(new_slice))
+            }
+            Cow::Owned(old_vec) => {
+                let bytes: &[u8] = T::ULE::slice_as_bytes(&old_vec);
+                P::ULE::validate_bytes(bytes)?;
+                // Feature "vec_into_raw_parts" is not yet stable (#65816). Polyfill:
+                let (ptr, len, cap) = {
+                    // Take ownership of the pointer
+                    let mut v = core::mem::ManuallyDrop::new(old_vec);
+                    // Fetch the pointer, length, and capacity
+                    (v.as_mut_ptr(), v.len(), v.capacity())
+                };
+                // Safety checklist for Vec::from_raw_parts:
+                // 1. ptr came from a Vec<T>
+                // 2. P and T are asserted above to be the same size
+                // 3. length is what it was before
+                // 4. capacity is what it was before
+                let new_vec = unsafe {
+                    let ptr = ptr as *mut P::ULE;
+                    Vec::from_raw_parts(ptr, len, cap)
+                };
+                Ok(ZeroVec::new_owned(new_vec))
+            }
+        }
+    }
+
+    /// Check if this type is fully owned
+    #[inline]
+    pub fn is_owned(&self) -> bool {
+        #[cfg(feature = "alloc")]
+        return self.vector.capacity != 0;
+        #[cfg(not(feature = "alloc"))]
+        return false;
+    }
+
+    /// If this is a borrowed [`ZeroVec`], return it as a slice that covers
+    /// its lifetime parameter.
+    ///
+    /// To infallibly get a [`ZeroSlice`] with a shorter lifetime, use
+    /// [`ZeroVec::as_slice`].
+    #[inline]
+    pub fn as_maybe_borrowed(&self) -> Option<&'a ZeroSlice<T>> {
+        if self.is_owned() {
+            None
+        } else {
+            // We can extend the lifetime of the slice to 'a
+            // since we know it is borrowed
+            let ule_slice = unsafe { self.vector.as_arbitrary_slice() };
+            Some(ZeroSlice::from_ule_slice(ule_slice))
+        }
+    }
+
+    /// If the ZeroVec is owned, returns the capacity of the vector.
+    ///
+    /// Otherwise, if the ZeroVec is borrowed, returns `None`.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let mut zv = ZeroVec::<u8>::new_borrowed(&[0, 1, 2, 3]);
+    /// assert!(!zv.is_owned());
+    /// assert_eq!(zv.owned_capacity(), None);
+    ///
+    /// // Convert to owned without appending anything
+    /// zv.with_mut(|v| ());
+    /// assert!(zv.is_owned());
+    /// assert_eq!(zv.owned_capacity(), Some(4.try_into().unwrap()));
+    ///
+    /// // Double the size by appending
+    /// zv.with_mut(|v| v.push(0));
+    /// assert!(zv.is_owned());
+    /// assert_eq!(zv.owned_capacity(), Some(8.try_into().unwrap()));
+    /// ```
+    #[inline]
+    pub fn owned_capacity(&self) -> Option<NonZeroUsize> {
+        #[cfg(feature = "alloc")]
+        return NonZeroUsize::try_from(self.vector.capacity).ok();
+        #[cfg(not(feature = "alloc"))]
+        return None;
+    }
+}
+
+impl<'a> ZeroVec<'a, u8> {
+    /// Converts a `ZeroVec<u8>` into a `ZeroVec<T>`, retaining the current ownership model.
+    ///
+    /// Note that the length of the ZeroVec may change.
+    ///
+    /// # Examples
+    ///
+    /// Convert a borrowed `ZeroVec`:
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let zv_bytes = ZeroVec::new_borrowed(bytes);
+    /// let zerovec: ZeroVec<u16> = zv_bytes.try_into_parsed().expect("infallible");
+    ///
+    /// assert!(!zerovec.is_owned());
+    /// assert_eq!(zerovec.get(0), Some(211));
+    /// ```
+    ///
+    /// Convert an owned `ZeroVec`:
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: Vec<u8> = vec![0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let zv_bytes = ZeroVec::new_owned(bytes);
+    /// let zerovec: ZeroVec<u16> = zv_bytes.try_into_parsed().expect("infallible");
+    ///
+    /// assert!(zerovec.is_owned());
+    /// assert_eq!(zerovec.get(0), Some(211));
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn try_into_parsed<T: AsULE>(self) -> Result<ZeroVec<'a, T>, UleError> {
+        match self.into_cow() {
+            Cow::Borrowed(bytes) => {
+                let slice: &'a [T::ULE] = T::ULE::parse_bytes_to_slice(bytes)?;
+                Ok(ZeroVec::new_borrowed(slice))
+            }
+            Cow::Owned(vec) => {
+                let slice = Vec::from(T::ULE::parse_bytes_to_slice(&vec)?);
+                Ok(ZeroVec::new_owned(slice))
+            }
+        }
+    }
+}
+
+impl<'a, T> ZeroVec<'a, T>
+where
+    T: AsULE,
+{
+    /// Creates a `ZeroVec<T>` from a `&[T]` by allocating memory.
+    ///
+    /// This function results in an `Owned` instance of `ZeroVec<T>`.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// // The little-endian bytes correspond to the numbers on the following line.
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let nums: &[u16] = &[211, 281, 421, 461];
+    ///
+    /// let zerovec = ZeroVec::alloc_from_slice(nums);
+    ///
+    /// assert!(zerovec.is_owned());
+    /// assert_eq!(bytes, zerovec.as_bytes());
+    /// ```
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn alloc_from_slice(other: &[T]) -> Self {
+        Self::new_owned(other.iter().copied().map(T::to_unaligned).collect())
+    }
+
+    /// Creates a `Vec<T>` from a `ZeroVec<T>`.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let nums: &[u16] = &[211, 281, 421, 461];
+    /// let vec: Vec<u16> = ZeroVec::alloc_from_slice(nums).to_vec();
+    ///
+    /// assert_eq!(nums, vec.as_slice());
+    /// ```
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn to_vec(&self) -> Vec<T> {
+        self.iter().collect()
+    }
+}
+
+impl<'a, T> ZeroVec<'a, T>
+where
+    T: EqULE,
+{
+    /// Attempts to create a `ZeroVec<'a, T>` from a `&'a [T]` by borrowing the argument.
+    ///
+    /// If this is not possible, such as on a big-endian platform, `None` is returned.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// // The little-endian bytes correspond to the numbers on the following line.
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let nums: &[u16] = &[211, 281, 421, 461];
+    ///
+    /// if let Some(zerovec) = ZeroVec::try_from_slice(nums) {
+    ///     assert!(!zerovec.is_owned());
+    ///     assert_eq!(bytes, zerovec.as_bytes());
+    /// }
+    /// ```
+    #[inline]
+    pub fn try_from_slice(slice: &'a [T]) -> Option<Self> {
+        T::slice_to_unaligned(slice).map(|ule_slice| Self::new_borrowed(ule_slice))
+    }
+
+    /// Creates a `ZeroVec<'a, T>` from a `&'a [T]`, either by borrowing the argument or by
+    /// allocating a new vector.
+    ///
+    /// This is a cheap operation on little-endian platforms, falling back to a more expensive
+    /// operation on big-endian platforms.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// // The little-endian bytes correspond to the numbers on the following line.
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let nums: &[u16] = &[211, 281, 421, 461];
+    ///
+    /// let zerovec = ZeroVec::from_slice_or_alloc(nums);
+    ///
+    /// // Note: zerovec could be either borrowed or owned.
+    /// assert_eq!(bytes, zerovec.as_bytes());
+    /// ```
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn from_slice_or_alloc(slice: &'a [T]) -> Self {
+        Self::try_from_slice(slice).unwrap_or_else(|| Self::alloc_from_slice(slice))
+    }
+}
+
+impl<'a, T> ZeroVec<'a, T>
+where
+    T: AsULE,
+{
+    /// Mutates each element according to a given function, meant to be
+    /// a more convenient version of calling `.iter_mut()` with
+    /// [`ZeroVec::with_mut()`] which serves fewer use cases.
+    ///
+    /// This will convert the ZeroVec into an owned ZeroVec if not already the case.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let mut zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    ///
+    /// zerovec.for_each_mut(|item| *item += 1);
+    ///
+    /// assert_eq!(zerovec.to_vec(), &[212, 282, 422, 462]);
+    /// assert!(zerovec.is_owned());
+    /// ```
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn for_each_mut(&mut self, mut f: impl FnMut(&mut T)) {
+        self.to_mut_slice().iter_mut().for_each(|item| {
+            let mut aligned = T::from_unaligned(*item);
+            f(&mut aligned);
+            *item = aligned.to_unaligned()
+        })
+    }
+
+    /// Same as [`ZeroVec::for_each_mut()`], but bubbles up errors.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let mut zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    ///
+    /// zerovec.try_for_each_mut(|item| {
+    ///     *item = item.checked_add(1).ok_or(())?;
+    ///     Ok(())
+    /// })?;
+    ///
+    /// assert_eq!(zerovec.to_vec(), &[212, 282, 422, 462]);
+    /// assert!(zerovec.is_owned());
+    /// # Ok::<(), ()>(())
+    /// ```
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn try_for_each_mut<E>(
+        &mut self,
+        mut f: impl FnMut(&mut T) -> Result<(), E>,
+    ) -> Result<(), E> {
+        self.to_mut_slice().iter_mut().try_for_each(|item| {
+            let mut aligned = T::from_unaligned(*item);
+            f(&mut aligned)?;
+            *item = aligned.to_unaligned();
+            Ok(())
+        })
+    }
+
+    /// Converts a borrowed ZeroVec to an owned ZeroVec. No-op if already owned.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    /// assert!(!zerovec.is_owned());
+    ///
+    /// let owned = zerovec.into_owned();
+    /// assert!(owned.is_owned());
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn into_owned(self) -> ZeroVec<'static, T> {
+        use alloc::borrow::Cow;
+        match self.into_cow() {
+            Cow::Owned(vec) => ZeroVec::new_owned(vec),
+            Cow::Borrowed(b) => ZeroVec::new_owned(b.into()),
+        }
+    }
+
+    /// Allows the ZeroVec to be mutated by converting it to an owned variant, and producing
+    /// a mutable vector of ULEs. If you only need a mutable slice, consider using [`Self::to_mut_slice()`]
+    /// instead.
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use crate::zerovec::ule::AsULE;
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let mut zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    /// assert!(!zerovec.is_owned());
+    ///
+    /// zerovec.with_mut(|v| v.push(12_u16.to_unaligned()));
+    /// assert!(zerovec.is_owned());
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn with_mut<R>(&mut self, f: impl FnOnce(&mut alloc::vec::Vec<T::ULE>) -> R) -> R {
+        use alloc::borrow::Cow;
+        // We're in danger if f() panics whilst we've moved a vector out of self;
+        // replace it with an empty dummy vector for now
+        let this = core::mem::take(self);
+        let mut vec = match this.into_cow() {
+            Cow::Owned(v) => v,
+            Cow::Borrowed(s) => s.into(),
+        };
+        let ret = f(&mut vec);
+        *self = Self::new_owned(vec);
+        ret
+    }
+
+    /// Allows the ZeroVec to be mutated by converting it to an owned variant (if necessary)
+    /// and returning a slice to its backing buffer. [`Self::with_mut()`] allows for mutation
+    /// of the vector itself.
+    ///
+    /// # Example
+    ///
+    /// ```rust
+    /// # use crate::zerovec::ule::AsULE;
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let mut zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    /// assert!(!zerovec.is_owned());
+    ///
+    /// zerovec.to_mut_slice()[1] = 5u16.to_unaligned();
+    /// assert!(zerovec.is_owned());
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn to_mut_slice(&mut self) -> &mut [T::ULE] {
+        if !self.is_owned() {
+            // `buf` is either a valid vector or slice of `T::ULE`s, either
+            // way it's always valid
+            let slice = self.vector.as_slice();
+            *self = ZeroVec::new_owned(slice.into());
+        }
+        unsafe { self.vector.buf.as_mut() }
+    }
+    /// Remove all elements from this ZeroVec and reset it to an empty borrowed state.
+    pub fn clear(&mut self) {
+        *self = Self::new_borrowed(&[])
+    }
+
+    /// Removes the first element of the ZeroVec. The ZeroVec remains in the same
+    /// borrowed or owned state.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// # use crate::zerovec::ule::AsULE;
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let mut zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    /// assert!(!zerovec.is_owned());
+    ///
+    /// let first = zerovec.take_first().unwrap();
+    /// assert_eq!(first, 0x00D3);
+    /// assert!(!zerovec.is_owned());
+    ///
+    /// let mut zerovec = zerovec.into_owned();
+    /// assert!(zerovec.is_owned());
+    /// let first = zerovec.take_first().unwrap();
+    /// assert_eq!(first, 0x0119);
+    /// assert!(zerovec.is_owned());
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn take_first(&mut self) -> Option<T> {
+        match core::mem::take(self).into_cow() {
+            Cow::Owned(mut vec) => {
+                if vec.is_empty() {
+                    return None;
+                }
+                let ule = vec.remove(0);
+                let rv = T::from_unaligned(ule);
+                *self = ZeroVec::new_owned(vec);
+                Some(rv)
+            }
+            Cow::Borrowed(b) => {
+                let (ule, remainder) = b.split_first()?;
+                let rv = T::from_unaligned(*ule);
+                *self = ZeroVec::new_borrowed(remainder);
+                Some(rv)
+            }
+        }
+    }
+
+    /// Removes the last element of the ZeroVec. The ZeroVec remains in the same
+    /// borrowed or owned state.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// # use crate::zerovec::ule::AsULE;
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x01];
+    /// let mut zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    /// assert!(!zerovec.is_owned());
+    ///
+    /// let last = zerovec.take_last().unwrap();
+    /// assert_eq!(last, 0x01CD);
+    /// assert!(!zerovec.is_owned());
+    ///
+    /// let mut zerovec = zerovec.into_owned();
+    /// assert!(zerovec.is_owned());
+    /// let last = zerovec.take_last().unwrap();
+    /// assert_eq!(last, 0x01A5);
+    /// assert!(zerovec.is_owned());
+    /// ```
+    #[cfg(feature = "alloc")]
+    pub fn take_last(&mut self) -> Option<T> {
+        match core::mem::take(self).into_cow() {
+            Cow::Owned(mut vec) => {
+                let ule = vec.pop()?;
+                let rv = T::from_unaligned(ule);
+                *self = ZeroVec::new_owned(vec);
+                Some(rv)
+            }
+            Cow::Borrowed(b) => {
+                let (ule, remainder) = b.split_last()?;
+                let rv = T::from_unaligned(*ule);
+                *self = ZeroVec::new_borrowed(remainder);
+                Some(rv)
+            }
+        }
+    }
+
+    /// Converts the type into a `Cow<'a, [T::ULE]>`, which is
+    /// the logical equivalent of this type's internal representation
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn into_cow(self) -> Cow<'a, [T::ULE]> {
+        let this = core::mem::ManuallyDrop::new(self);
+        if this.is_owned() {
+            let vec = unsafe {
+                // safe to call: we know it's owned,
+                // and `self`/`this` are thenceforth no longer used or dropped
+                { this }.vector.get_vec()
+            };
+            Cow::Owned(vec)
+        } else {
+            // We can extend the lifetime of the slice to 'a
+            // since we know it is borrowed
+            let slice = unsafe { { this }.vector.as_arbitrary_slice() };
+            Cow::Borrowed(slice)
+        }
+    }
+
+    /// Truncates this vector to `min(self.len(), max)`.
+    #[inline]
+    pub fn truncated(mut self, max: usize) -> Self {
+        self.vector.truncate(max);
+        self
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<T: AsULE> FromIterator<T> for ZeroVec<'_, T> {
+    /// Creates an owned [`ZeroVec`] from an iterator of values.
+    fn from_iter<I>(iter: I) -> Self
+    where
+        I: IntoIterator<Item = T>,
+    {
+        ZeroVec::new_owned(iter.into_iter().map(|t| t.to_unaligned()).collect())
+    }
+}
+
+/// Convenience wrapper for [`ZeroSlice::from_ule_slice`]. The value will be created at compile-time,
+/// meaning that all arguments must also be constant.
+///
+/// # Arguments
+///
+/// * `$aligned` - The type of an element in its canonical, aligned form, e.g., `char`.
+/// * `$convert` - A const function that converts an `$aligned` into its unaligned equivalent, e.g.,
+///   const fn from_aligned(a: CanonicalType) -> CanonicalType::ULE`.
+/// * `$x` - The elements that the `ZeroSlice` will hold.
+///
+/// # Examples
+///
+/// Using array-conversion functions provided by this crate:
+///
+/// ```
+/// use zerovec::{ZeroSlice, zeroslice, ule::AsULE};
+///
+/// const SIGNATURE: &ZeroSlice<char> = zeroslice!(char; <char as AsULE>::ULE::from_aligned; ['b', 'y', 'e', '✌']);
+/// const EMPTY: &ZeroSlice<u32> = zeroslice![];
+///
+/// let empty: &ZeroSlice<u32> = zeroslice![];
+/// let nums = zeroslice!(u32; <u32 as AsULE>::ULE::from_unsigned; [1, 2, 3, 4, 5]);
+/// assert_eq!(nums.last().unwrap(), 5);
+/// ```
+///
+/// Using a custom array-conversion function:
+///
+/// ```
+/// use zerovec::{ule::AsULE, ule::RawBytesULE, zeroslice, ZeroSlice};
+///
+/// const fn be_convert(num: i16) -> <i16 as AsULE>::ULE {
+///     RawBytesULE(num.to_be_bytes())
+/// }
+///
+/// const NUMBERS_BE: &ZeroSlice<i16> =
+///     zeroslice!(i16; be_convert; [1, -2, 3, -4, 5]);
+/// ```
+#[macro_export]
+macro_rules! zeroslice {
+    () => {
+        $crate::ZeroSlice::new_empty()
+    };
+    ($aligned:ty; $convert:expr; [$($x:expr),+ $(,)?]) => {
+        $crate::ZeroSlice::<$aligned>::from_ule_slice(const { &[$($convert($x)),*] })
+    };
+}
+
+/// Creates a borrowed `ZeroVec`. Convenience wrapper for `zeroslice!(...).as_zerovec()`. The value
+/// will be created at compile-time, meaning that all arguments must also be constant.
+///
+/// See [`zeroslice!`](crate::zeroslice) for more information.
+///
+/// # Examples
+///
+/// ```
+/// use zerovec::{ZeroVec, zerovec, ule::AsULE};
+///
+/// const SIGNATURE: ZeroVec<char> = zerovec!(char; <char as AsULE>::ULE::from_aligned; ['a', 'y', 'e', '✌']);
+/// assert!(!SIGNATURE.is_owned());
+///
+/// const EMPTY: ZeroVec<u32> = zerovec![];
+/// assert!(!EMPTY.is_owned());
+/// ```
+#[macro_export]
+macro_rules! zerovec {
+    () => (
+        $crate::ZeroVec::new()
+    );
+    ($aligned:ty; $convert:expr; [$($x:expr),+ $(,)?]) => (
+        $crate::zeroslice![$aligned; $convert; [$($x),+]].as_zerovec()
+    );
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+    use crate::samples::*;
+
+    #[test]
+    fn test_get() {
+        {
+            let zerovec = ZeroVec::from_slice_or_alloc(TEST_SLICE);
+            assert_eq!(zerovec.get(0), Some(TEST_SLICE[0]));
+            assert_eq!(zerovec.get(1), Some(TEST_SLICE[1]));
+            assert_eq!(zerovec.get(2), Some(TEST_SLICE[2]));
+        }
+        {
+            let zerovec = ZeroVec::<u32>::parse_bytes(TEST_BUFFER_LE).unwrap();
+            assert_eq!(zerovec.get(0), Some(TEST_SLICE[0]));
+            assert_eq!(zerovec.get(1), Some(TEST_SLICE[1]));
+            assert_eq!(zerovec.get(2), Some(TEST_SLICE[2]));
+        }
+    }
+
+    #[test]
+    fn test_binary_search() {
+        {
+            let zerovec = ZeroVec::from_slice_or_alloc(TEST_SLICE);
+            assert_eq!(Ok(3), zerovec.binary_search(&0x0e0d0c));
+            assert_eq!(Err(3), zerovec.binary_search(&0x0c0d0c));
+        }
+        {
+            let zerovec = ZeroVec::<u32>::parse_bytes(TEST_BUFFER_LE).unwrap();
+            assert_eq!(Ok(3), zerovec.binary_search(&0x0e0d0c));
+            assert_eq!(Err(3), zerovec.binary_search(&0x0c0d0c));
+        }
+    }
+
+    #[test]
+    fn test_odd_alignment() {
+        assert_eq!(
+            Some(0x020100),
+            ZeroVec::<u32>::parse_bytes(TEST_BUFFER_LE).unwrap().get(0)
+        );
+        assert_eq!(
+            Some(0x04000201),
+            ZeroVec::<u32>::parse_bytes(&TEST_BUFFER_LE[1..77])
+                .unwrap()
+                .get(0)
+        );
+        assert_eq!(
+            Some(0x05040002),
+            ZeroVec::<u32>::parse_bytes(&TEST_BUFFER_LE[2..78])
+                .unwrap()
+                .get(0)
+        );
+        assert_eq!(
+            Some(0x06050400),
+            ZeroVec::<u32>::parse_bytes(&TEST_BUFFER_LE[3..79])
+                .unwrap()
+                .get(0)
+        );
+        assert_eq!(
+            Some(0x060504),
+            ZeroVec::<u32>::parse_bytes(&TEST_BUFFER_LE[4..])
+                .unwrap()
+                .get(0)
+        );
+        assert_eq!(
+            Some(0x4e4d4c00),
+            ZeroVec::<u32>::parse_bytes(&TEST_BUFFER_LE[75..79])
+                .unwrap()
+                .get(0)
+        );
+        assert_eq!(
+            Some(0x4e4d4c00),
+            ZeroVec::<u32>::parse_bytes(&TEST_BUFFER_LE[3..79])
+                .unwrap()
+                .get(18)
+        );
+        assert_eq!(
+            Some(0x4e4d4c),
+            ZeroVec::<u32>::parse_bytes(&TEST_BUFFER_LE[76..])
+                .unwrap()
+                .get(0)
+        );
+        assert_eq!(
+            Some(0x4e4d4c),
+            ZeroVec::<u32>::parse_bytes(TEST_BUFFER_LE).unwrap().get(19)
+        );
+        // TODO(#1144): Check for correct slice length in RawBytesULE
+        // assert_eq!(
+        //     None,
+        //     ZeroVec::<u32>::parse_bytes(&TEST_BUFFER_LE[77..])
+        //         .unwrap()
+        //         .get(0)
+        // );
+        assert_eq!(
+            None,
+            ZeroVec::<u32>::parse_bytes(TEST_BUFFER_LE).unwrap().get(20)
+        );
+        assert_eq!(
+            None,
+            ZeroVec::<u32>::parse_bytes(&TEST_BUFFER_LE[3..79])
+                .unwrap()
+                .get(19)
+        );
+    }
+}
diff --git a/vendor/zerovec/src/zerovec/serde.rs b/vendor/zerovec/src/zerovec/serde.rs
new file mode 100644
index 00000000..e34bacd9
--- /dev/null
+++ b/vendor/zerovec/src/zerovec/serde.rs
@@ -0,0 +1,234 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::{ZeroSlice, ZeroVec};
+use crate::ule::*;
+use alloc::boxed::Box;
+use alloc::vec::Vec;
+use core::fmt;
+use core::marker::PhantomData;
+use core::mem;
+use serde::de::{self, Deserialize, Deserializer, SeqAccess, Visitor};
+#[cfg(feature = "serde")]
+use serde::ser::{Serialize, SerializeSeq, Serializer};
+
+struct ZeroVecVisitor<T> {
+    marker: PhantomData<fn() -> T>,
+}
+
+impl<T> Default for ZeroVecVisitor<T> {
+    fn default() -> Self {
+        Self {
+            marker: PhantomData,
+        }
+    }
+}
+
+impl<'de, T> Visitor<'de> for ZeroVecVisitor<T>
+where
+    T: 'de + Deserialize<'de> + AsULE,
+{
+    type Value = ZeroVec<'de, T>;
+
+    fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+        formatter.write_str("a sequence or borrowed buffer of fixed-width elements")
+    }
+
+    fn visit_borrowed_bytes<E>(self, bytes: &'de [u8]) -> Result<Self::Value, E>
+    where
+        E: de::Error,
+    {
+        ZeroVec::parse_bytes(bytes).map_err(de::Error::custom)
+    }
+
+    fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
+    where
+        A: SeqAccess<'de>,
+    {
+        let mut vec: Vec<T::ULE> = if let Some(capacity) = seq.size_hint() {
+            Vec::with_capacity(capacity)
+        } else {
+            Vec::new()
+        };
+        while let Some(value) = seq.next_element::<T>()? {
+            vec.push(T::to_unaligned(value));
+        }
+        Ok(ZeroVec::new_owned(vec))
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, 'a, T> Deserialize<'de> for ZeroVec<'a, T>
+where
+    T: 'de + Deserialize<'de> + AsULE,
+    'de: 'a,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        let visitor = ZeroVecVisitor::default();
+        if deserializer.is_human_readable() {
+            deserializer.deserialize_seq(visitor)
+        } else {
+            deserializer.deserialize_bytes(visitor)
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<T> Serialize for ZeroVec<'_, T>
+where
+    T: Serialize + AsULE,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        if serializer.is_human_readable() {
+            let mut seq = serializer.serialize_seq(Some(self.len()))?;
+            for value in self.iter() {
+                seq.serialize_element(&value)?;
+            }
+            seq.end()
+        } else {
+            serializer.serialize_bytes(self.as_bytes())
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, T> Deserialize<'de> for Box<ZeroSlice<T>>
+where
+    T: Deserialize<'de> + AsULE + 'static,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        let mut zv = ZeroVec::<T>::deserialize(deserializer)?;
+        let vec = zv.with_mut(mem::take);
+        Ok(ZeroSlice::from_boxed_slice(vec.into_boxed_slice()))
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, 'a, T> Deserialize<'de> for &'a ZeroSlice<T>
+where
+    T: Deserialize<'de> + AsULE + 'static,
+    'de: 'a,
+{
+    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+    where
+        D: Deserializer<'de>,
+    {
+        if deserializer.is_human_readable() {
+            Err(de::Error::custom(
+                "&ZeroSlice cannot be deserialized from human-readable formats",
+            ))
+        } else {
+            let deserialized: ZeroVec<'a, T> = ZeroVec::deserialize(deserializer)?;
+            let borrowed = if let Some(b) = deserialized.as_maybe_borrowed() {
+                b
+            } else {
+                return Err(de::Error::custom(
+                    "&ZeroSlice can only deserialize in zero-copy ways",
+                ));
+            };
+            Ok(borrowed)
+        }
+    }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<T> Serialize for ZeroSlice<T>
+where
+    T: Serialize + AsULE,
+{
+    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+    where
+        S: Serializer,
+    {
+        self.as_zerovec().serialize(serializer)
+    }
+}
+
+#[cfg(test)]
+#[allow(non_camel_case_types)]
+mod test {
+    use crate::samples::*;
+    use crate::ZeroVec;
+
+    #[derive(serde::Serialize, serde::Deserialize)]
+    struct DeriveTest_ZeroVec<'data> {
+        #[serde(borrow)]
+        _data: ZeroVec<'data, u16>,
+    }
+
+    #[test]
+    fn test_serde_json() {
+        let zerovec_orig = ZeroVec::from_slice_or_alloc(TEST_SLICE);
+        let json_str = serde_json::to_string(&zerovec_orig).expect("serialize");
+        assert_eq!(JSON_STR, json_str);
+        // ZeroVec should deserialize from JSON to either Vec or ZeroVec
+        let vec_new: Vec<u32> =
+            serde_json::from_str(&json_str).expect("deserialize from buffer to Vec");
+        assert_eq!(
+            zerovec_orig,
+            ZeroVec::<u32>::from_slice_or_alloc(vec_new.as_slice())
+        );
+        let zerovec_new: ZeroVec<u32> =
+            serde_json::from_str(&json_str).expect("deserialize from buffer to ZeroVec");
+        assert_eq!(zerovec_orig, zerovec_new);
+        assert!(zerovec_new.is_owned());
+    }
+
+    #[test]
+    fn test_serde_bincode() {
+        let zerovec_orig = ZeroVec::from_slice_or_alloc(TEST_SLICE);
+        let bincode_buf = bincode::serialize(&zerovec_orig).expect("serialize");
+        assert_eq!(BINCODE_BUF, bincode_buf);
+        // ZeroVec should deserialize from Bincode to ZeroVec but not Vec
+        bincode::deserialize::<Vec<u32>>(&bincode_buf).expect_err("deserialize from buffer to Vec");
+        let zerovec_new: ZeroVec<u32> =
+            bincode::deserialize(&bincode_buf).expect("deserialize from buffer to ZeroVec");
+        assert_eq!(zerovec_orig, zerovec_new);
+
+        assert!(!zerovec_new.is_owned());
+    }
+
+    #[test]
+    fn test_serde_rmp() {
+        let zerovec_orig = ZeroVec::from_slice_or_alloc(TEST_SLICE);
+        let rmp_buf = rmp_serde::to_vec(&zerovec_orig).expect("serialize");
+        // ZeroVec should deserialize from Bincode to ZeroVec but not Vec
+        bincode::deserialize::<Vec<u32>>(&rmp_buf).expect_err("deserialize from buffer to Vec");
+        let zerovec_new: ZeroVec<u32> =
+            rmp_serde::from_slice(&rmp_buf).expect("deserialize from buffer to ZeroVec");
+        assert_eq!(zerovec_orig, zerovec_new);
+
+        assert!(!zerovec_new.is_owned());
+    }
+
+    #[test]
+    fn test_chars_valid() {
+        // 1-byte, 2-byte, 3-byte, and 4-byte character in UTF-8 (not as relevant in UTF-32)
+        let zerovec_orig = ZeroVec::alloc_from_slice(&['w', 'ω', '文', '𑄃']);
+        let bincode_buf = bincode::serialize(&zerovec_orig).expect("serialize");
+        let zerovec_new: ZeroVec<char> =
+            bincode::deserialize(&bincode_buf).expect("deserialize from buffer to ZeroVec");
+        assert_eq!(zerovec_orig, zerovec_new);
+
+        assert!(!zerovec_new.is_owned());
+    }
+
+    #[test]
+    fn test_chars_invalid() {
+        // 119 and 120 are valid, but not 0xD800 (high surrogate)
+        let zerovec_orig: ZeroVec<u32> = ZeroVec::from_slice_or_alloc(&[119, 0xD800, 120]);
+        let bincode_buf = bincode::serialize(&zerovec_orig).expect("serialize");
+        let zerovec_result = bincode::deserialize::<ZeroVec<char>>(&bincode_buf);
+        assert!(zerovec_result.is_err());
+    }
+}
diff --git a/vendor/zerovec/src/zerovec/slice.rs b/vendor/zerovec/src/zerovec/slice.rs
new file mode 100644
index 00000000..c8fc5768
--- /dev/null
+++ b/vendor/zerovec/src/zerovec/slice.rs
@@ -0,0 +1,625 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use core::cmp::Ordering;
+use core::ops::Range;
+
+/// A zero-copy "slice", i.e. the zero-copy version of `[T]`.
+///
+/// This behaves
+/// similarly to [`ZeroVec<T>`], however [`ZeroVec<T>`] is allowed to contain
+/// owned data and as such is ideal for deserialization since most human readable
+/// serialization formats cannot unconditionally deserialize zero-copy.
+///
+/// This type can be used inside [`VarZeroVec<T>`](crate::VarZeroVec) and [`ZeroMap`](crate::ZeroMap):
+/// This essentially allows for the construction of zero-copy types isomorphic to `Vec<Vec<T>>` by instead
+/// using `VarZeroVec<ZeroSlice<T>>`. See the [`VarZeroVec`](crate::VarZeroVec) docs for an example.
+///
+/// # Examples
+///
+/// Const-construct a ZeroSlice of u16:
+///
+/// ```
+/// use zerovec::ule::AsULE;
+/// use zerovec::ZeroSlice;
+///
+/// const DATA: &ZeroSlice<u16> =
+///     ZeroSlice::<u16>::from_ule_slice(&<u16 as AsULE>::ULE::from_array([
+///         211, 281, 421, 32973,
+///     ]));
+///
+/// assert_eq!(DATA.get(1), Some(281));
+/// ```
+#[repr(transparent)]
+pub struct ZeroSlice<T: AsULE>([T::ULE]);
+
+impl<T> ZeroSlice<T>
+where
+    T: AsULE,
+{
+    /// Returns an empty slice.
+    pub const fn new_empty() -> &'static Self {
+        Self::from_ule_slice(&[])
+    }
+
+    /// Get this [`ZeroSlice`] as a borrowed [`ZeroVec`]
+    ///
+    /// [`ZeroSlice`] does not have most of the methods that [`ZeroVec`] does,
+    /// so it is recommended to convert it to a [`ZeroVec`] before doing anything.
+    #[inline]
+    pub const fn as_zerovec(&self) -> ZeroVec<'_, T> {
+        ZeroVec::new_borrowed(&self.0)
+    }
+
+    /// Attempt to construct a `&ZeroSlice<T>` from a byte slice, returning an error
+    /// if it's not a valid byte sequence
+    pub fn parse_bytes(bytes: &[u8]) -> Result<&Self, UleError> {
+        T::ULE::parse_bytes_to_slice(bytes).map(Self::from_ule_slice)
+    }
+
+    /// Uses a `&[u8]` buffer as a `ZeroVec<T>` without any verification.
+    ///
+    /// # Safety
+    ///
+    /// `bytes` need to be an output from [`ZeroSlice::as_bytes()`].
+    pub const unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        // &[u8] and &[T::ULE] are the same slice with different length metadata.
+        Self::from_ule_slice(core::slice::from_raw_parts(
+            bytes.as_ptr() as *const T::ULE,
+            bytes.len() / core::mem::size_of::<T::ULE>(),
+        ))
+    }
+
+    /// Construct a `&ZeroSlice<T>` from a slice of ULEs.
+    ///
+    /// This function can be used for constructing ZeroVecs in a const context, avoiding
+    /// parsing checks.
+    ///
+    /// See [`ZeroSlice`] for an example.
+    #[inline]
+    pub const fn from_ule_slice(slice: &[T::ULE]) -> &Self {
+        // This is safe because ZeroSlice is transparent over [T::ULE]
+        // so &ZeroSlice<T> can be safely cast from &[T::ULE]
+        unsafe { &*(slice as *const _ as *const Self) }
+    }
+
+    /// Construct a `Box<ZeroSlice<T>>` from a boxed slice of ULEs
+    #[inline]
+    #[cfg(feature = "alloc")]
+    pub fn from_boxed_slice(slice: alloc::boxed::Box<[T::ULE]>) -> alloc::boxed::Box<Self> {
+        // This is safe because ZeroSlice is transparent over [T::ULE]
+        // so Box<ZeroSlice<T>> can be safely cast from Box<[T::ULE]>
+        unsafe { alloc::boxed::Box::from_raw(alloc::boxed::Box::into_raw(slice) as *mut Self) }
+    }
+
+    /// Returns this slice as its underlying `&[u8]` byte buffer representation.
+    ///
+    /// Useful for serialization.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// // The little-endian bytes correspond to the numbers on the following line.
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let nums: &[u16] = &[211, 281, 421, 32973];
+    ///
+    /// let zerovec = ZeroVec::alloc_from_slice(nums);
+    ///
+    /// assert_eq!(bytes, zerovec.as_bytes());
+    /// ```
+    #[inline]
+    pub fn as_bytes(&self) -> &[u8] {
+        T::ULE::slice_as_bytes(self.as_ule_slice())
+    }
+
+    /// Dereferences this slice as `&[T::ULE]`.
+    #[inline]
+    pub const fn as_ule_slice(&self) -> &[T::ULE] {
+        &self.0
+    }
+
+    /// Returns the number of elements in this slice.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ule::AsULE;
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    ///
+    /// assert_eq!(4, zerovec.len());
+    /// assert_eq!(
+    ///     bytes.len(),
+    ///     zerovec.len() * std::mem::size_of::<<u16 as AsULE>::ULE>()
+    /// );
+    /// ```
+    #[inline]
+    pub const fn len(&self) -> usize {
+        self.as_ule_slice().len()
+    }
+
+    /// Returns whether this slice is empty.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    /// assert!(!zerovec.is_empty());
+    ///
+    /// let emptyvec: ZeroVec<u16> = ZeroVec::parse_bytes(&[]).expect("infallible");
+    /// assert!(emptyvec.is_empty());
+    /// ```
+    #[inline]
+    pub const fn is_empty(&self) -> bool {
+        self.as_ule_slice().is_empty()
+    }
+}
+
+impl<T> ZeroSlice<T>
+where
+    T: AsULE,
+{
+    /// Gets the element at the specified index. Returns `None` if out of range.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    ///
+    /// assert_eq!(zerovec.get(2), Some(421));
+    /// assert_eq!(zerovec.get(4), None);
+    /// ```
+    #[inline]
+    pub fn get(&self, index: usize) -> Option<T> {
+        self.as_ule_slice()
+            .get(index)
+            .copied()
+            .map(T::from_unaligned)
+    }
+
+    /// Gets the entire slice as an array of length `N`. Returns `None` if the slice
+    /// does not have exactly `N` elements.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    /// let array: [u16; 4] =
+    ///     zerovec.get_as_array().expect("should be 4 items in array");
+    ///
+    /// assert_eq!(array[2], 421);
+    /// ```
+    pub fn get_as_array<const N: usize>(&self) -> Option<[T; N]> {
+        let ule_array = <&[T::ULE; N]>::try_from(self.as_ule_slice()).ok()?;
+        Some(ule_array.map(|u| T::from_unaligned(u)))
+    }
+
+    /// Gets a subslice of elements within a certain range. Returns `None` if the range
+    /// is out of bounds of this `ZeroSlice`.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    ///
+    /// assert_eq!(
+    ///     zerovec.get_subslice(1..3),
+    ///     Some(&*ZeroVec::from_slice_or_alloc(&[0x0119, 0x01A5]))
+    /// );
+    /// assert_eq!(zerovec.get_subslice(3..5), None);
+    /// ```
+    #[inline]
+    pub fn get_subslice(&self, range: Range<usize>) -> Option<&ZeroSlice<T>> {
+        self.0.get(range).map(ZeroSlice::from_ule_slice)
+    }
+
+    /// Get a borrowed reference to the underlying ULE type at a specified index.
+    ///
+    /// Prefer [`Self::get()`] over this method where possible since working
+    /// directly with `ULE` types is less ergonomic
+    pub fn get_ule_ref(&self, index: usize) -> Option<&T::ULE> {
+        self.as_ule_slice().get(index)
+    }
+
+    /// Casts a `ZeroSlice<T>` to a compatible `ZeroSlice<P>`.
+    ///
+    /// `T` and `P` are compatible if they have the same `ULE` representation.
+    ///
+    /// If the `ULE`s of `T` and `P` are different, use [`Self::try_as_converted()`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::ZeroSlice;
+    ///
+    /// const BYTES: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// const ZS_U16: &ZeroSlice<u16> = {
+    ///     match ZeroSlice::<u16>::try_from_bytes(BYTES) {
+    ///         Ok(s) => s,
+    ///         Err(_) => unreachable!(),
+    ///     }
+    /// };
+    ///
+    /// let zs_i16: &ZeroSlice<i16> = ZS_U16.cast();
+    ///
+    /// assert_eq!(ZS_U16.get(3), Some(32973));
+    /// assert_eq!(zs_i16.get(3), Some(-32563));
+    /// ```
+    #[inline]
+    pub const fn cast<P>(&self) -> &ZeroSlice<P>
+    where
+        P: AsULE<ULE = T::ULE>,
+    {
+        ZeroSlice::<P>::from_ule_slice(self.as_ule_slice())
+    }
+
+    /// Converts a `&ZeroSlice<T>` into a `&ZeroSlice<P>`.
+    ///
+    /// The resulting slice will have the same length as the original slice
+    /// if and only if `T::ULE` and `P::ULE` are the same size.
+    ///
+    /// If `T` and `P` have the exact same `ULE`, use [`Self::cast()`].
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use zerovec::ZeroSlice;
+    ///
+    /// const BYTES: &[u8] = &[0x7F, 0xF3, 0x01, 0x00, 0x49, 0xF6, 0x01, 0x00];
+    /// const ZS_U32: &ZeroSlice<u32> = {
+    ///     match ZeroSlice::<u32>::try_from_bytes(BYTES) {
+    ///         Ok(s) => s,
+    ///         Err(_) => unreachable!(),
+    ///     }
+    /// };
+    ///
+    /// let zs_u8_4: &ZeroSlice<[u8; 4]> =
+    ///     ZS_U32.try_as_converted().expect("valid code points");
+    ///
+    /// assert_eq!(ZS_U32.get(0), Some(127871));
+    /// assert_eq!(zs_u8_4.get(0), Some([0x7F, 0xF3, 0x01, 0x00]));
+    /// ```
+    #[inline]
+    pub fn try_as_converted<P: AsULE>(&self) -> Result<&ZeroSlice<P>, UleError> {
+        let new_slice = P::ULE::parse_bytes_to_slice(self.as_bytes())?;
+        Ok(ZeroSlice::from_ule_slice(new_slice))
+    }
+
+    /// Gets the first element. Returns `None` if empty.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    ///
+    /// assert_eq!(zerovec.first(), Some(211));
+    /// ```
+    #[inline]
+    pub fn first(&self) -> Option<T> {
+        self.as_ule_slice().first().copied().map(T::from_unaligned)
+    }
+
+    /// Gets the last element. Returns `None` if empty.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    ///
+    /// assert_eq!(zerovec.last(), Some(32973));
+    /// ```
+    #[inline]
+    pub fn last(&self) -> Option<T> {
+        self.as_ule_slice().last().copied().map(T::from_unaligned)
+    }
+
+    /// Gets an iterator over the elements.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    /// let mut it = zerovec.iter();
+    ///
+    /// assert_eq!(it.next(), Some(211));
+    /// assert_eq!(it.next(), Some(281));
+    /// assert_eq!(it.next(), Some(421));
+    /// assert_eq!(it.next(), Some(32973));
+    /// assert_eq!(it.next(), None);
+    /// ```
+    #[inline]
+    pub fn iter<'a>(&'a self) -> ZeroSliceIter<'a, T> {
+        ZeroSliceIter(self.as_ule_slice().iter())
+    }
+
+    /// Returns a tuple with the first element and a subslice of the remaining elements.
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ule::AsULE;
+    /// use zerovec::ZeroSlice;
+    ///
+    /// const DATA: &ZeroSlice<u16> =
+    ///     ZeroSlice::<u16>::from_ule_slice(&<u16 as AsULE>::ULE::from_array([
+    ///         211, 281, 421, 32973,
+    ///     ]));
+    /// const EXPECTED_VALUE: (u16, &ZeroSlice<u16>) = (
+    ///     211,
+    ///     ZeroSlice::<u16>::from_ule_slice(&<u16 as AsULE>::ULE::from_array([
+    ///         281, 421, 32973,
+    ///     ])),
+    /// );
+    /// assert_eq!(EXPECTED_VALUE, DATA.split_first().unwrap());
+    /// ```
+    #[inline]
+    pub fn split_first(&self) -> Option<(T, &ZeroSlice<T>)> {
+        if let Some(first) = self.first() {
+            return Some((
+                first,
+                // `unwrap()` must succeed, because `first()` returned `Some`.
+                #[expect(clippy::unwrap_used)]
+                self.get_subslice(1..self.len()).unwrap(),
+            ));
+        }
+        None
+    }
+}
+
+/// An iterator over elements in a VarZeroVec
+#[derive(Debug)]
+pub struct ZeroSliceIter<'a, T: AsULE>(core::slice::Iter<'a, T::ULE>);
+
+impl<'a, T: AsULE> Iterator for ZeroSliceIter<'a, T> {
+    type Item = T;
+    fn next(&mut self) -> Option<T> {
+        self.0.next().copied().map(T::from_unaligned)
+    }
+
+    fn size_hint(&self) -> (usize, Option<usize>) {
+        self.0.size_hint()
+    }
+}
+
+impl<'a, T: AsULE> ExactSizeIterator for ZeroSliceIter<'a, T> {
+    fn len(&self) -> usize {
+        self.0.len()
+    }
+}
+
+impl<'a, T: AsULE> DoubleEndedIterator for ZeroSliceIter<'a, T> {
+    fn next_back(&mut self) -> Option<T> {
+        self.0.next_back().copied().map(T::from_unaligned)
+    }
+}
+
+impl<T> ZeroSlice<T>
+where
+    T: AsULE + Ord,
+{
+    /// Binary searches a sorted `ZeroVec<T>` for the given element. For more information, see
+    /// the primitive function [`binary_search`].
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    ///
+    /// assert_eq!(zerovec.binary_search(&281), Ok(1));
+    /// assert_eq!(zerovec.binary_search(&282), Err(2));
+    /// ```
+    ///
+    /// [`binary_search`]: https://doc.rust-lang.org/std/primitive.slice.html#method.binary_search
+    #[inline]
+    pub fn binary_search(&self, x: &T) -> Result<usize, usize> {
+        self.as_ule_slice()
+            .binary_search_by(|probe| T::from_unaligned(*probe).cmp(x))
+    }
+}
+
+impl<T> ZeroSlice<T>
+where
+    T: AsULE,
+{
+    /// Binary searches a sorted `ZeroVec<T>` based on a given predicate. For more information, see
+    /// the primitive function [`binary_search_by`].
+    ///
+    /// # Example
+    ///
+    /// ```
+    /// use zerovec::ZeroVec;
+    ///
+    /// let bytes: &[u8] = &[0xD3, 0x00, 0x19, 0x01, 0xA5, 0x01, 0xCD, 0x80];
+    /// let zerovec: ZeroVec<u16> =
+    ///     ZeroVec::parse_bytes(bytes).expect("infallible");
+    ///
+    /// assert_eq!(zerovec.binary_search_by(|x| x.cmp(&281)), Ok(1));
+    /// assert_eq!(zerovec.binary_search_by(|x| x.cmp(&282)), Err(2));
+    /// ```
+    ///
+    /// [`binary_search_by`]: https://doc.rust-lang.org/std/primitive.slice.html#method.binary_search_by
+    #[inline]
+    pub fn binary_search_by(
+        &self,
+        mut predicate: impl FnMut(T) -> Ordering,
+    ) -> Result<usize, usize> {
+        self.as_ule_slice()
+            .binary_search_by(|probe| predicate(T::from_unaligned(*probe)))
+    }
+}
+
+// Safety (based on the safety checklist on the VarULE trait):
+// (`ZeroSlice<T>` is a transparent wrapper around [T::ULE])
+//  1. [T::ULE] does not include any uninitialized or padding bytes (achieved by being a slice of a ULE type)
+//  2. [T::ULE] is aligned to 1 byte (achieved by being a slice of a ULE type)
+//  3. The impl of `validate_bytes()` returns an error if any byte is not valid.
+//  4. The impl of `validate_bytes()` returns an error if the slice cannot be used in its entirety
+//  5. The impl of `from_bytes_unchecked()` returns a reference to the same data.
+//  6. `as_bytes()` and `parse_bytes()` are defaulted
+//  7. `[T::ULE]` byte equality is semantic equality (relying on the guideline of the underlying `ULE` type)
+unsafe impl<T: AsULE + 'static> VarULE for ZeroSlice<T> {
+    #[inline]
+    fn validate_bytes(bytes: &[u8]) -> Result<(), UleError> {
+        T::ULE::validate_bytes(bytes)
+    }
+
+    #[inline]
+    unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
+        Self::from_ule_slice(T::ULE::slice_from_bytes_unchecked(bytes))
+    }
+}
+
+impl<T> Eq for ZeroSlice<T> where T: AsULE + Eq {}
+
+impl<T> PartialEq<ZeroSlice<T>> for ZeroSlice<T>
+where
+    T: AsULE + PartialEq,
+{
+    #[inline]
+    fn eq(&self, other: &ZeroSlice<T>) -> bool {
+        self.as_zerovec().eq(&other.as_zerovec())
+    }
+}
+
+impl<T> PartialEq<[T]> for ZeroSlice<T>
+where
+    T: AsULE + PartialEq,
+{
+    #[inline]
+    fn eq(&self, other: &[T]) -> bool {
+        self.iter().eq(other.iter().copied())
+    }
+}
+
+impl<'a, T> PartialEq<ZeroVec<'a, T>> for ZeroSlice<T>
+where
+    T: AsULE + PartialEq,
+{
+    #[inline]
+    fn eq(&self, other: &ZeroVec<'a, T>) -> bool {
+        self.as_zerovec().eq(other)
+    }
+}
+
+impl<'a, T> PartialEq<ZeroSlice<T>> for ZeroVec<'a, T>
+where
+    T: AsULE + PartialEq,
+{
+    #[inline]
+    fn eq(&self, other: &ZeroSlice<T>) -> bool {
+        self.eq(&other.as_zerovec())
+    }
+}
+
+impl<T> fmt::Debug for ZeroSlice<T>
+where
+    T: AsULE + fmt::Debug,
+{
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        self.as_zerovec().fmt(f)
+    }
+}
+
+impl<T: AsULE + PartialOrd> PartialOrd for ZeroSlice<T> {
+    fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+        self.iter().partial_cmp(other.iter())
+    }
+}
+
+impl<T: AsULE + Ord> Ord for ZeroSlice<T> {
+    fn cmp(&self, other: &Self) -> Ordering {
+        self.iter().cmp(other.iter())
+    }
+}
+
+#[cfg(feature = "alloc")]
+impl<T: AsULE> AsRef<ZeroSlice<T>> for alloc::vec::Vec<T::ULE> {
+    fn as_ref(&self) -> &ZeroSlice<T> {
+        ZeroSlice::<T>::from_ule_slice(self)
+    }
+}
+
+impl<T: AsULE> AsRef<ZeroSlice<T>> for &[T::ULE] {
+    fn as_ref(&self) -> &ZeroSlice<T> {
+        ZeroSlice::<T>::from_ule_slice(self)
+    }
+}
+
+impl<T> Default for &ZeroSlice<T>
+where
+    T: AsULE,
+{
+    fn default() -> Self {
+        ZeroSlice::from_ule_slice(&[])
+    }
+}
+
+#[cfg(test)]
+mod test {
+    use super::*;
+    use crate::zeroslice;
+
+    #[test]
+    fn test_split_first() {
+        {
+            // empty slice.
+            assert_eq!(None, ZeroSlice::<u16>::new_empty().split_first());
+        }
+        {
+            // single element slice
+            const DATA: &ZeroSlice<u16> =
+                zeroslice!(u16; <u16 as AsULE>::ULE::from_unsigned; [211]);
+            assert_eq!((211, zeroslice![]), DATA.split_first().unwrap());
+        }
+        {
+            // slice with many elements.
+            const DATA: &ZeroSlice<u16> =
+                zeroslice!(u16; <u16 as AsULE>::ULE::from_unsigned; [211, 281, 421, 32973]);
+            const EXPECTED_VALUE: (u16, &ZeroSlice<u16>) = (
+                211,
+                zeroslice!(u16; <u16 as AsULE>::ULE::from_unsigned; [281, 421, 32973]),
+            );
+
+            assert_eq!(EXPECTED_VALUE, DATA.split_first().unwrap());
+        }
+    }
+}
-- 
2.50.1

